From b7d1cb5598a943a8368bfaeade9d8e15805589b7 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Wed, 5 Aug 2026 15:20:49 -0400 Subject: [PATCH 01/13] chore(release): set up changesets for lockstep versioning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Configure @changesets/cli so the four Agentry packages (agentry, @agentry/core, @agentry/claude, @agentry/mcp) version and publish together at one shared version — Playwright-style — rather than drifting independently. Adds `changeset`, `version-packages`, and `release` scripts. Constraint: agentry + @agentry/* are one product; must release in lockstep Rejected: semantic-release | single-package oriented, weaker monorepo story Rejected: independent per-package versions | diverges from the Playwright model Confidence: high Scope-risk: narrow Co-Authored-By: Claude Opus 4.8 --- .changeset/README.md | 8 + .changeset/config.json | 11 + package.json | 6 +- pnpm-lock.yaml | 726 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 750 insertions(+), 1 deletion(-) create mode 100644 .changeset/README.md create mode 100644 .changeset/config.json diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 0000000..654c6d4 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets). + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md). diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000..86ab701 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.1.4/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [["agentry", "@agentry/core", "@agentry/claude", "@agentry/mcp"]], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/package.json b/package.json index 5c663a4..6be1229 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,13 @@ "test:watch": "vitest", "typecheck": "tsc --noEmit", "build": "pnpm -r build", - "agentry": "tsx packages/cli/src/bin.ts" + "agentry": "tsx packages/cli/src/bin.ts", + "changeset": "changeset", + "version-packages": "changeset version", + "release": "pnpm -r build && changeset publish" }, "devDependencies": { + "@changesets/cli": "^2.31.1", "@types/node": "^22.10.0", "tsup": "^8.3.5", "tsx": "^4.19.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b1a228d..6a515ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: devDependencies: + '@changesets/cli': + specifier: ^2.31.1 + version: 2.31.1(@types/node@22.20.0) '@types/node': specifier: ^22.10.0 version: 22.20.0 @@ -100,6 +103,65 @@ packages: resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + + '@changesets/apply-release-plan@7.1.1': + resolution: {integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==} + + '@changesets/assemble-release-plan@6.0.10': + resolution: {integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==} + + '@changesets/changelog-git@0.2.1': + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + + '@changesets/cli@2.31.1': + resolution: {integrity: sha512-uO05WTcRBwuVOJVSW8Cmpqw6q0WDL53ajGCMyszutvOe5toOnunbpM4jZzf+qxBOz7i0AzopZ8diBuewjmF40w==} + hasBin: true + + '@changesets/config@3.1.4': + resolution: {integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.1.4': + resolution: {integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==} + + '@changesets/get-release-plan@4.0.16': + resolution: {integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.4': + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + + '@changesets/parse@0.4.3': + resolution: {integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==} + + '@changesets/pre@2.0.2': + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + + '@changesets/read@0.6.7': + resolution: {integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==} + + '@changesets/should-skip-package@0.1.2': + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + + '@changesets/write@0.4.0': + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -550,6 +612,15 @@ packages: cpu: [x64] os: [win32] + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@jest/expect-utils@29.7.0': resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -575,6 +646,24 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + '@rollup/rollup-android-arm-eabi@4.62.2': resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==} cpu: [arm] @@ -728,6 +817,9 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@22.20.0': resolution: {integrity: sha512-QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g==} @@ -774,6 +866,14 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -785,10 +885,24 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -811,6 +925,9 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chardet@2.2.0: + resolution: {integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==} + check-error@2.1.3: resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} @@ -841,6 +958,10 @@ packages: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -854,10 +975,22 @@ packages: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} @@ -880,6 +1013,11 @@ packages: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -891,6 +1029,16 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -904,14 +1052,34 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + fix-dts-default-cjs-exports@1.0.1: resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -919,10 +1087,41 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + human-id@4.2.0: + resolution: {integrity: sha512-K3GbkIWqyvvlpfhBPlbEvD97TtqBpAYA4kt+cn2lD2x2HuohzZCibcA2nOlnJT6exqvJLggoB5nv2dNf192nEA==} + hasBin: true + + iconv-lite@0.7.3: + resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -950,6 +1149,17 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-yaml@3.15.1: + resolution: {integrity: sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag==} + hasBin: true + + js-yaml@4.3.1: + resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -961,12 +1171,23 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -974,6 +1195,10 @@ packages: mlly@1.8.2: resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -989,6 +1214,44 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-manager-detector@0.2.11: + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -1010,6 +1273,10 @@ packages: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} @@ -1039,13 +1306,28 @@ packages: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} @@ -1054,14 +1336,41 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rollup@4.62.2: resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -1074,6 +1383,12 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} + spawndamnit@3.0.1: + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -1084,6 +1399,14 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + sucrase@3.35.1: resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} @@ -1093,6 +1416,10 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -1168,6 +1495,10 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + vite-node@2.1.9: resolution: {integrity: sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -1229,6 +1560,11 @@ packages: jsdom: optional: true + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -1247,6 +1583,151 @@ snapshots: '@babel/helper-validator-identifier@7.29.7': {} + '@babel/runtime@7.29.7': {} + + '@changesets/apply-release-plan@7.1.1': + dependencies: + '@changesets/config': 3.1.4 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.8.5 + + '@changesets/assemble-release-plan@6.0.10': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.8.5 + + '@changesets/changelog-git@0.2.1': + dependencies: + '@changesets/types': 6.1.0 + + '@changesets/cli@2.31.1(@types/node@22.20.0)': + dependencies: + '@changesets/apply-release-plan': 7.1.1 + '@changesets/assemble-release-plan': 6.0.10 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.4 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/get-release-plan': 4.0.16 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.3(@types/node@22.20.0) + '@manypkg/get-packages': 1.1.3 + ansi-colors: 4.1.3 + enquirer: 2.4.1 + fs-extra: 7.0.1 + mri: 1.2.0 + package-manager-detector: 0.2.11 + picocolors: 1.1.1 + resolve-from: 5.0.0 + semver: 7.8.5 + spawndamnit: 3.0.1 + term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' + + '@changesets/config@3.1.4': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/logger': 0.1.1 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.8 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.1.4': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + picocolors: 1.1.1 + semver: 7.8.5 + + '@changesets/get-release-plan@4.0.16': + dependencies: + '@changesets/assemble-release-plan': 6.0.10 + '@changesets/config': 3.1.4 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.4': + dependencies: + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.8 + spawndamnit: 3.0.1 + + '@changesets/logger@0.1.1': + dependencies: + picocolors: 1.1.1 + + '@changesets/parse@0.4.3': + dependencies: + '@changesets/types': 6.1.0 + js-yaml: 4.3.1 + + '@changesets/pre@2.0.2': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.7': + dependencies: + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.3 + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + p-filter: 2.1.0 + picocolors: 1.1.1 + + '@changesets/should-skip-package@0.1.2': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.1.0': {} + + '@changesets/write@0.4.0': + dependencies: + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + human-id: 4.2.0 + prettier: 2.8.8 + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -1472,6 +1953,13 @@ snapshots: '@esbuild/win32-x64@0.28.1': optional: true + '@inquirer/external-editor@1.0.3(@types/node@22.20.0)': + dependencies: + chardet: 2.2.0 + iconv-lite: 0.7.3 + optionalDependencies: + '@types/node': 22.20.0 + '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 @@ -1503,6 +1991,34 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.29.7 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.29.7 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + '@rollup/rollup-android-arm-eabi@4.62.2': optional: true @@ -1592,6 +2108,8 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 + '@types/node@12.20.55': {} + '@types/node@22.20.0': dependencies: undici-types: 6.21.0 @@ -1646,6 +2164,10 @@ snapshots: acorn@8.17.0: {} + ansi-colors@4.1.3: {} + + ansi-regex@5.0.1: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -1654,8 +2176,20 @@ snapshots: any-promise@1.3.0: {} + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-union@2.1.0: {} + assertion-error@2.0.1: {} + better-path-resolve@1.0.0: + dependencies: + is-windows: 1.0.2 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -1680,6 +2214,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chardet@2.2.0: {} + check-error@2.1.3: {} chokidar@4.0.3: @@ -1700,14 +2236,31 @@ snapshots: consola@3.4.2: {} + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + debug@4.4.3: dependencies: ms: 2.1.3 deep-eql@5.0.2: {} + detect-indent@6.1.0: {} + diff-sequences@29.6.3: {} + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + es-module-lexer@1.7.0: {} esbuild@0.21.5: @@ -1796,6 +2349,8 @@ snapshots: escape-string-regexp@2.0.0: {} + esprima@4.0.1: {} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.9 @@ -1810,6 +2365,20 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 + extendable-error@0.1.7: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 @@ -1818,21 +2387,73 @@ snapshots: dependencies: to-regex-range: 5.0.1 + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + fix-dts-default-cjs-exports@1.0.1: dependencies: magic-string: 0.30.21 mlly: 1.8.2 rollup: 4.62.2 + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + fsevents@2.3.3: optional: true + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + graceful-fs@4.2.11: {} has-flag@4.0.0: {} + human-id@4.2.0: {} + + iconv-lite@0.7.3: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + is-number@7.0.0: {} + is-subdir@1.2.0: + dependencies: + better-path-resolve: 1.0.0 + + is-windows@1.0.2: {} + + isexe@2.0.0: {} + jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -1874,18 +2495,39 @@ snapshots: js-tokens@4.0.0: {} + js-yaml@3.15.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.3.1: + dependencies: + argparse: 2.0.1 + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} load-tsconfig@0.2.5: {} + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lodash.startcase@4.4.0: {} + loupe@3.2.1: {} magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + merge2@1.4.1: {} + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -1898,6 +2540,8 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.4 + mri@1.2.0: {} + ms@2.1.3: {} mz@2.7.0: @@ -1910,6 +2554,34 @@ snapshots: object-assign@4.1.1: {} + outdent@0.5.0: {} + + p-filter@2.1.0: + dependencies: + p-map: 2.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-map@2.1.0: {} + + p-try@2.2.0: {} + + package-manager-detector@0.2.11: + dependencies: + quansync: 0.2.11 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-type@4.0.0: {} + pathe@1.1.2: {} pathe@2.0.3: {} @@ -1922,6 +2594,8 @@ snapshots: picomatch@4.0.4: {} + pify@4.0.1: {} + pirates@4.0.7: {} pkg-types@1.3.1: @@ -1943,18 +2617,33 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + prettier@2.8.8: {} + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 + quansync@0.2.11: {} + + queue-microtask@1.2.3: {} + react-is@18.3.1: {} + read-yaml-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.15.1 + pify: 4.0.1 + strip-bom: 3.0.0 + readdirp@4.1.2: {} resolve-from@5.0.0: {} + reusify@1.1.0: {} + rollup@4.62.2: dependencies: '@types/estree': 1.0.9 @@ -1986,14 +2675,37 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.62.2 fsevents: 2.3.3 + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safer-buffer@2.1.2: {} + + semver@7.8.5: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + siginfo@2.0.0: {} + signal-exit@4.1.0: {} + slash@3.0.0: {} source-map-js@1.2.1: {} source-map@0.7.6: {} + spawndamnit@3.0.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + sprintf-js@1.0.3: {} + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -2002,6 +2714,12 @@ snapshots: std-env@3.10.0: {} + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@3.0.0: {} + sucrase@3.35.1: dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -2016,6 +2734,8 @@ snapshots: dependencies: has-flag: 4.0.0 + term-size@2.2.1: {} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -2087,6 +2807,8 @@ snapshots: undici-types@6.21.0: {} + universalify@0.1.2: {} + vite-node@2.1.9(@types/node@22.20.0): dependencies: cac: 6.7.14 @@ -2149,6 +2871,10 @@ snapshots: - supports-color - terser + which@2.0.2: + dependencies: + isexe: 2.0.0 + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 From 260b5600b869e8616e100ed1865005ff3609f257 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Wed, 5 Aug 2026 15:21:59 -0400 Subject: [PATCH 02/13] ci: add release workflow (changesets publish with provenance) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On push to main, changesets/action@v1 opens/updates a "version packages" PR; merging it builds and runs `changeset publish`. Reuses the same typecheck + test gate as CI before any publish. npm auth via the NPM_TOKEN secret (the action writes .npmrc); id-token:write + NPM_CONFIG_PROVENANCE enable npm provenance. Constraint: changesets/action latest release is v1.9.0 — v1 input names Directive: do not add setup-node registry-url — it pre-empts the action's NPM_TOKEN .npmrc and breaks publish auth Confidence: high Scope-risk: moderate Not-tested: live npm publish (requires NPM_TOKEN secret + resolved package name) Co-Authored-By: Claude Opus 4.8 --- .github/workflows/release.yml | 47 +++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..d3bdedc --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,47 @@ +name: Release + +on: + push: + branches: [main] + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +permissions: + contents: write + pull-requests: write + id-token: write + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + + - name: Install + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm typecheck + + - name: Test + run: pnpm test + + - name: Create release PR or publish + id: changesets + uses: changesets/action@v1 + with: + version: pnpm version-packages + publish: pnpm release + commit: "chore(release): version packages" + title: "chore(release): version packages" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + NPM_CONFIG_PROVENANCE: "true" From 1eb90e9445509141751af082b9eb15f2f098cc48 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Wed, 5 Aug 2026 15:23:07 -0400 Subject: [PATCH 03/13] ci: require a changeset for package changes on PRs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a pull-request-only job that runs `changeset status` against the base branch and fails when a publishable package changed without an accompanying changeset — keeps the lockstep changelog honest. Fetches the base ref (fetch-depth: 0) so --since has a merge-base. Rejected: changeset bot comment | needs a GitHub App install; CI check is self-contained Confidence: high Scope-risk: narrow Co-Authored-By: Claude Opus 4.8 --- .github/workflows/ci.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c949511..4ea59bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,3 +28,28 @@ jobs: # Unit + replay tests only — no live agent calls, so CI needs no API key. - name: Test run: pnpm test + + changeset: + if: github.event_name == 'pull_request' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + + - name: Install + run: pnpm install --frozen-lockfile + + - name: Require a changeset for package changes + env: + BASE_REF: ${{ github.base_ref }} + run: | + git fetch origin "$BASE_REF" + pnpm changeset status --since="origin/$BASE_REF" From 74ca7f0dd9d3e0a6eaf3e64b6c7c40e59a44cd18 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Wed, 5 Aug 2026 15:23:41 -0400 Subject: [PATCH 04/13] docs: document the release process Add docs/RELEASING.md covering the changeset -> version PR -> publish flow, the lockstep model, one-time setup (npm name, org, NPM_TOKEN, CLI shebang), and how to cut the first 0.1.0 release. Co-Authored-By: Claude Opus 4.8 --- docs/RELEASING.md | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 docs/RELEASING.md diff --git a/docs/RELEASING.md b/docs/RELEASING.md new file mode 100644 index 0000000..f8d9bd8 --- /dev/null +++ b/docs/RELEASING.md @@ -0,0 +1,67 @@ +# Releasing + +Agentry publishes with [Changesets](https://github.com/changesets/changesets). +All four packages — `agentry`, `@agentry/core`, `@agentry/claude`, `@agentry/mcp` — +version and publish **together at one shared version** (Playwright-style lockstep, +configured via `fixed` in `.changeset/config.json`). Every release bumps and +publishes all four, even if only one changed. + +## Day-to-day flow + +1. **Add a changeset** with each change that affects a published package: + + ```bash + pnpm changeset + ``` + + Pick the bump (`patch` / `minor` / `major`) and write a one-line summary — it + becomes the changelog entry. Because the packages are `fixed`, selecting any one + bumps them all by the same amount; pick the largest bump your change warrants. + Commit the generated `.changeset/*.md` file alongside your code. + + CI enforces this: the `changeset` job on pull requests fails if a package under + `packages/*` changed without a changeset. + +2. **Merge the PR to `main`.** The `Release` workflow opens (or updates) a + **"version packages"** PR that consumes the pending changesets, bumps every + package version, and rewrites `CHANGELOG.md` files. + +3. **Merge the "version packages" PR.** That triggers the workflow again, which runs + `pnpm release` (build + `changeset publish`) and publishes all four packages to + npm with [provenance](https://docs.npmjs.com/generating-provenance-statements), + then pushes the git tags. + +You never run `npm publish` by hand — merging the version PR is the only publish path. + +## One-time setup (before the first publish) + +- [ ] **Resolve the `agentry` npm name.** It is already taken by an unrelated + `agentry@0.1.0`. Options: publish the CLI as scoped `@agentry/cli` (users run + `npx @agentry/cli`), pick a different unscoped name, or acquire `agentry`. Until + this is settled, `changeset publish` will 403 on the `agentry` package. The + package name lives in `packages/cli/package.json`; if it changes, update the + `fixed` array in `.changeset/config.json` to match. +- [ ] **Create the `@agentry` npm org** (or user scope) so `@agentry/*` can publish. +- [ ] **Add the `NPM_TOKEN` repo secret** — an npm **automation** token (bypasses 2FA + on publish) for an account with publish rights to all package names. +- [ ] **Confirm the published CLI is executable** — verify `dist/bin.js` carries a + `#!/usr/bin/env node` shebang after `pnpm --filter agentry build`. + +## First release (0.0.0 → 0.1.0) + +All packages sit at `0.0.0` and have never been published. Once the setup above is +done, cut the initial pre-1.0 release: + +```bash +pnpm changeset # choose "minor" → 0.1.0, describe the initial release +git commit -am "chore(release): initial 0.1.0 changeset" +``` + +Merge to `main`, then merge the "version packages" PR the workflow opens. + +## Files + +- `.changeset/config.json` — lockstep (`fixed`) config, `access: public`. +- `.github/workflows/release.yml` — the publish pipeline. +- `.github/workflows/ci.yml` — the `changeset` PR gate. +- Root `package.json` — `changeset`, `version-packages`, `release` scripts. From add517a4f0fedd33d1ec7db7fbff6fb1582efa74 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Wed, 5 Aug 2026 15:26:59 -0400 Subject: [PATCH 05/13] chore(release): exclude private example packages from versioning Set privatePackages { version:false, tag:false } so example workspaces (examples/*, all private) are never versioned, changelogged, or tagged by a release, and never trip the PR changeset gate. Only the four published packages participate in releases. Confidence: high Scope-risk: narrow Co-Authored-By: Claude Opus 4.8 --- .changeset/config.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.changeset/config.json b/.changeset/config.json index 86ab701..a1b8c05 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -7,5 +7,6 @@ "access": "public", "baseBranch": "main", "updateInternalDependencies": "patch", - "ignore": [] + "ignore": [], + "privatePackages": { "version": false, "tag": false } } From 5b42363053030e72afce1cdcb585e4ae88669833 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Wed, 5 Aug 2026 15:53:40 -0400 Subject: [PATCH 06/13] chore(cli): publish the CLI as agentry-test The bare `agentry` name on npm belongs to an unrelated, active package, so the CLI publishes as `agentry-test` (mirroring @playwright/test). The `bin` stays `agentry`, so the installed command is unchanged; the public import specifier becomes `agentry-test` (like `@playwright/test`). Also updates the example's workspace dep, the `init` scaffolding templates, and the changeset `fixed` group to match. Rejected: scoped @agentry/cli | user asked for an unscoped name Confidence: high Scope-risk: narrow Co-Authored-By: Claude Opus 4.8 --- .changeset/config.json | 2 +- examples/basic/agentry.config.ts | 2 +- examples/basic/package.json | 2 +- examples/basic/tests/todo.agentry.ts | 2 +- packages/cli/package.json | 2 +- packages/cli/src/commands/init.ts | 4 ++-- packages/cli/src/index.ts | 2 +- pnpm-lock.yaml | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index a1b8c05..48b1be1 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -2,7 +2,7 @@ "$schema": "https://unpkg.com/@changesets/config@3.1.4/schema.json", "changelog": "@changesets/cli/changelog", "commit": false, - "fixed": [["agentry", "@agentry/core", "@agentry/claude", "@agentry/mcp"]], + "fixed": [["agentry-test", "@agentry/core", "@agentry/claude", "@agentry/mcp"]], "linked": [], "access": "public", "baseBranch": "main", diff --git a/examples/basic/agentry.config.ts b/examples/basic/agentry.config.ts index f422378..9d8e857 100644 --- a/examples/basic/agentry.config.ts +++ b/examples/basic/agentry.config.ts @@ -1,4 +1,4 @@ -import { defineConfig } from 'agentry'; +import { defineConfig } from 'agentry-test'; export default defineConfig({ testDir: './tests', diff --git a/examples/basic/package.json b/examples/basic/package.json index 6e8a348..5d6690d 100644 --- a/examples/basic/package.json +++ b/examples/basic/package.json @@ -5,6 +5,6 @@ "type": "module", "description": "Agentry MVP example — drive Claude to read a file, assert on behavior, replay deterministically.", "dependencies": { - "agentry": "workspace:*" + "agentry-test": "workspace:*" } } diff --git a/examples/basic/tests/todo.agentry.ts b/examples/basic/tests/todo.agentry.ts index 9f11185..2e1d164 100644 --- a/examples/basic/tests/todo.agentry.ts +++ b/examples/basic/tests/todo.agentry.ts @@ -1,4 +1,4 @@ -import { test } from 'agentry'; +import { test } from 'agentry-test'; test.describe('todo', () => { test('reads the todo file via a tool', async ({ agent, workspace, expect }) => { diff --git a/packages/cli/package.json b/packages/cli/package.json index 9fbb768..b30e947 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,5 +1,5 @@ { - "name": "agentry", + "name": "agentry-test", "version": "0.0.0", "type": "module", "description": "Agentry CLI — Playwright for AI Agents.", diff --git a/packages/cli/src/commands/init.ts b/packages/cli/src/commands/init.ts index f107065..6d37fb9 100644 --- a/packages/cli/src/commands/init.ts +++ b/packages/cli/src/commands/init.ts @@ -2,7 +2,7 @@ import { writeFile, mkdir } from 'node:fs/promises'; import { existsSync } from 'node:fs'; import { join, resolve } from 'node:path'; -const CONFIG = `import { defineConfig } from 'agentry'; +const CONFIG = `import { defineConfig } from 'agentry-test'; export default defineConfig({ testDir: './tests', @@ -12,7 +12,7 @@ export default defineConfig({ }); `; -const EXAMPLE = `import { test, expect } from 'agentry'; +const EXAMPLE = `import { test, expect } from 'agentry-test'; test.describe('demo', () => { test('agent reads a file from the sandbox', async ({ agent, workspace, expect }) => { diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index de12980..36598c6 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -1,3 +1,3 @@ // agentry — user-facing API. Re-exports the core surface so tests can do -// `import { test, expect, defineConfig } from 'agentry'`. +// `import { test, expect, defineConfig } from 'agentry-test'`. export * from '@agentry/core'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a515ab..4a51bd4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,7 +29,7 @@ importers: examples/basic: dependencies: - agentry: + agentry-test: specifier: workspace:* version: link:../../packages/cli From 4211ad58c37905ea1b614afcb3311c5ba4388c94 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Wed, 5 Aug 2026 15:56:06 -0400 Subject: [PATCH 07/13] chore(release): add empty changeset for the pre-release CLI rename MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The CLI rename touches a publishable package, so the changeset gate requires a changeset. Nothing has been published yet, so the rename has no release impact — an empty changeset records "no release needed" and keeps CI green without opening a version PR. Confidence: high Scope-risk: narrow Co-Authored-By: Claude Opus 4.8 --- .changeset/pre-release-cli-rename.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .changeset/pre-release-cli-rename.md diff --git a/.changeset/pre-release-cli-rename.md b/.changeset/pre-release-cli-rename.md new file mode 100644 index 0000000..a845151 --- /dev/null +++ b/.changeset/pre-release-cli-rename.md @@ -0,0 +1,2 @@ +--- +--- From f5124c0e2b2ff3a5afeb8c28200c2757b93283a7 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Wed, 5 Aug 2026 15:56:28 -0400 Subject: [PATCH 08/13] docs: use agentry-test as the published package name Update the import examples and the install command across README, SPEC, ROADMAP, and RELEASING to the agentry-test package name (bin/command stays `agentry`). Co-Authored-By: Claude Opus 4.8 --- README.md | 4 ++-- docs/RELEASING.md | 16 ++++++++-------- docs/ROADMAP.md | 2 +- docs/SPEC.md | 4 ++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index ab75d10..7d4adfa 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ The `examples/basic` directory contains a working example with a committed trans ### 1. Config: `examples/basic/agentry.config.ts` ```ts -import { defineConfig } from 'agentry'; +import { defineConfig } from 'agentry-test'; export default defineConfig({ testDir: './tests', @@ -73,7 +73,7 @@ export default defineConfig({ ### 2. Test: `examples/basic/tests/todo.agentry.ts` ```ts -import { test } from 'agentry'; +import { test } from 'agentry-test'; test.describe('todo', () => { test('reads the todo file via a tool', async ({ agent, workspace, expect }) => { diff --git a/docs/RELEASING.md b/docs/RELEASING.md index f8d9bd8..13b8b39 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -1,7 +1,7 @@ # Releasing Agentry publishes with [Changesets](https://github.com/changesets/changesets). -All four packages — `agentry`, `@agentry/core`, `@agentry/claude`, `@agentry/mcp` — +All four packages — `agentry-test`, `@agentry/core`, `@agentry/claude`, `@agentry/mcp` — version and publish **together at one shared version** (Playwright-style lockstep, configured via `fixed` in `.changeset/config.json`). Every release bumps and publishes all four, even if only one changed. @@ -35,17 +35,17 @@ You never run `npm publish` by hand — merging the version PR is the only publi ## One-time setup (before the first publish) -- [ ] **Resolve the `agentry` npm name.** It is already taken by an unrelated - `agentry@0.1.0`. Options: publish the CLI as scoped `@agentry/cli` (users run - `npx @agentry/cli`), pick a different unscoped name, or acquire `agentry`. Until - this is settled, `changeset publish` will 403 on the `agentry` package. The - package name lives in `packages/cli/package.json`; if it changes, update the - `fixed` array in `.changeset/config.json` to match. +- [x] **Published CLI name.** The bare `agentry` on npm belongs to an unrelated + package, so the CLI publishes as **`agentry-test`** (mirroring `@playwright/test`). + The `bin` stays `agentry`, so the installed command is still `agentry` — users + `npm i -D agentry-test` and run `npx agentry-test …` (or `agentry …` locally). + If it is ever renamed again, update `packages/cli/package.json`, the consuming + `examples/*`, and the `fixed` array in `.changeset/config.json`. - [ ] **Create the `@agentry` npm org** (or user scope) so `@agentry/*` can publish. - [ ] **Add the `NPM_TOKEN` repo secret** — an npm **automation** token (bypasses 2FA on publish) for an account with publish rights to all package names. - [ ] **Confirm the published CLI is executable** — verify `dist/bin.js` carries a - `#!/usr/bin/env node` shebang after `pnpm --filter agentry build`. + `#!/usr/bin/env node` shebang after `pnpm --filter agentry-test build`. ## First release (0.0.0 → 0.1.0) diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 8e7ccf7..96888f9 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -141,7 +141,7 @@ Actions first-class integration. ## 5. MVP success criteria (the 5-minute test) A developer can: -1. `npm i -D agentry` and `npx agentry init` in <5 min. +1. `npm i -D agentry-test` and `npx agentry-test init` in <5 min. 2. Write a test that starts Claude Code, sends a prompt triggering an MCP tool, and asserts on the tool call + a side-effect. 3. Run in **`replay`** in <2s and **`mcp-live`/`live`** in <120s. diff --git a/docs/SPEC.md b/docs/SPEC.md index cfba491..555c26d 100644 --- a/docs/SPEC.md +++ b/docs/SPEC.md @@ -625,7 +625,7 @@ but not its internal routing, so the upstream position is the primary one for ro ## 10. Test Authoring API (code-first TypeScript) ```ts -import { test, expect } from 'agentry'; +import { test, expect } from 'agentry-test'; test.describe('filesystem MCP server', () => { test('reads a file via the MCP tool', async ({ agent, workspace, mcp }) => { @@ -671,7 +671,7 @@ combos. ## 11. Configuration (`agentry.config.ts`) ```ts -import { defineConfig } from 'agentry'; +import { defineConfig } from 'agentry-test'; export default defineConfig({ testDir: './tests', From b17337b2dd07f76ab5febe68eaeaea7055d22bf0 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Wed, 5 Aug 2026 16:26:01 -0400 Subject: [PATCH 09/13] docs: correct the CLI package name in README tables The Packages table and project-layout tree still labelled the CLI package `agentry`; it publishes as `agentry-test` (command stays `agentry`). Import examples were already updated. Co-Authored-By: Claude Opus 4.8 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7d4adfa..c1468a2 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ All TypeScript is executed directly via `tsx` — no build step required for dev | `@agentry/gemini` | Gemini CLI driver (`gemini -p --output-format stream-json`) | | `@agentry/antigravity` | Antigravity driver (`agy -p --output-format stream-json`) | | `@agentry/mcp` | `MockMcpServer` (JSON-RPC + stdio shim) + MCP matchers | -| `agentry` | CLI (`agentry test`, `record`, `init`, `doctor`) | +| `agentry-test` | CLI (`agentry test`, `record`, `init`, `doctor`); installs the `agentry` command | --- @@ -237,7 +237,7 @@ agentry/ │ ├── gemini/ @agentry/gemini — Gemini CLI driver │ ├── antigravity/ @agentry/antigravity — Antigravity (agy) driver │ ├── mcp/ @agentry/mcp — MockMcpServer + MCP matchers -│ └── cli/ agentry — CLI binary (test, record, init, doctor) +│ └── cli/ agentry-test — CLI binary `agentry` (test, record, init, doctor) ├── examples/ │ └── basic/ Working example with committed transcript └── docs/ From 257d7e911ddb2c847d83128f80d75ba53a5da261 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Sat, 8 Aug 2026 18:52:40 -0400 Subject: [PATCH 10/13] chore(release): add codex/gemini/antigravity to the lockstep group MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit main added three publishable driver packages (@agentry/codex, @agentry/gemini, @agentry/antigravity) after this branch was cut. They are part of the Agentry product, so they join the `fixed` group and release in lockstep with the rest; RELEASING.md now lists all seven publishable packages. Constraint: lockstep model — every publishable @agentry/* package releases together Confidence: high Scope-risk: narrow Co-Authored-By: Claude Opus 4.8 --- .changeset/config.json | 2 +- docs/RELEASING.md | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index 48b1be1..00ea692 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -2,7 +2,7 @@ "$schema": "https://unpkg.com/@changesets/config@3.1.4/schema.json", "changelog": "@changesets/cli/changelog", "commit": false, - "fixed": [["agentry-test", "@agentry/core", "@agentry/claude", "@agentry/mcp"]], + "fixed": [["agentry-test", "@agentry/core", "@agentry/claude", "@agentry/codex", "@agentry/gemini", "@agentry/antigravity", "@agentry/mcp"]], "linked": [], "access": "public", "baseBranch": "main", diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 13b8b39..65b3a44 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -1,10 +1,11 @@ # Releasing Agentry publishes with [Changesets](https://github.com/changesets/changesets). -All four packages — `agentry-test`, `@agentry/core`, `@agentry/claude`, `@agentry/mcp` — -version and publish **together at one shared version** (Playwright-style lockstep, -configured via `fixed` in `.changeset/config.json`). Every release bumps and -publishes all four, even if only one changed. +All seven publishable packages — `agentry-test`, `@agentry/core`, `@agentry/claude`, +`@agentry/codex`, `@agentry/gemini`, `@agentry/antigravity`, `@agentry/mcp` — version and +publish **together at one shared version** (Playwright-style lockstep, configured via +`fixed` in `.changeset/config.json`). Every release bumps and publishes all of them, even +if only one changed. ## Day-to-day flow From 521b71695a8376c1dff9170cd22724a3e2ee2a3a Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 7 Sep 2026 16:54:27 -0400 Subject: [PATCH 11/13] fix(ci): validate version PRs without requiring changesets --- .github/workflows/ci.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4ea59bb..195d894 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,9 @@ jobs: - name: Test run: pnpm test + - name: Build + run: pnpm build + changeset: if: github.event_name == 'pull_request' runs-on: ubuntu-latest @@ -48,6 +51,12 @@ jobs: run: pnpm install --frozen-lockfile - name: Require a changeset for package changes + # Version PRs consume the changesets while bumping package versions. + # Match the author and source repository as well as the release branch. + if: >- + !(github.event.pull_request.user.login == 'github-actions[bot]' && + github.event.pull_request.head.repo.full_name == github.repository && + github.head_ref == format('changeset-release/{0}', github.base_ref)) env: BASE_REF: ${{ github.base_ref }} run: | From 1fba74784c3a6e45ea3ec6b45be508c1771e2d69 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 7 Sep 2026 16:54:33 -0400 Subject: [PATCH 12/13] fix(release): add repository metadata for npm provenance --- packages/antigravity/package.json | 5 +++++ packages/claude/package.json | 5 +++++ packages/cli/package.json | 5 +++++ packages/codex/package.json | 5 +++++ packages/core/package.json | 5 +++++ packages/gemini/package.json | 5 +++++ packages/mcp/package.json | 5 +++++ 7 files changed, 35 insertions(+) diff --git a/packages/antigravity/package.json b/packages/antigravity/package.json index a059606..5699ec4 100644 --- a/packages/antigravity/package.json +++ b/packages/antigravity/package.json @@ -4,6 +4,11 @@ "type": "module", "description": "Agentry driver for Antigravity (agy) headless stream-json.", "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git+https://github.com/dortort/agentry.git", + "directory": "packages/antigravity" + }, "exports": { ".": "./src/index.ts" }, "publishConfig": { "exports": { ".": { "types": "./dist/index.d.ts", "default": "./dist/index.js" } } diff --git a/packages/claude/package.json b/packages/claude/package.json index 781f7a6..da74d0b 100644 --- a/packages/claude/package.json +++ b/packages/claude/package.json @@ -4,6 +4,11 @@ "type": "module", "description": "Agentry driver for Claude Code (headless stream-json).", "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git+https://github.com/dortort/agentry.git", + "directory": "packages/claude" + }, "exports": { ".": "./src/index.ts" }, "publishConfig": { "exports": { ".": { "types": "./dist/index.d.ts", "default": "./dist/index.js" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index b30e947..2431124 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -4,6 +4,11 @@ "type": "module", "description": "Agentry CLI — Playwright for AI Agents.", "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git+https://github.com/dortort/agentry.git", + "directory": "packages/cli" + }, "bin": { "agentry": "./src/bin.ts" }, "exports": { ".": "./src/index.ts" }, "publishConfig": { diff --git a/packages/codex/package.json b/packages/codex/package.json index d71c23c..f84dcc2 100644 --- a/packages/codex/package.json +++ b/packages/codex/package.json @@ -4,6 +4,11 @@ "type": "module", "description": "Agentry driver for the Codex CLI (headless exec --json).", "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git+https://github.com/dortort/agentry.git", + "directory": "packages/codex" + }, "exports": { ".": "./src/index.ts" }, "publishConfig": { "exports": { ".": { "types": "./dist/index.d.ts", "default": "./dist/index.js" } } diff --git a/packages/core/package.json b/packages/core/package.json index cafabb1..1a13c81 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -4,6 +4,11 @@ "type": "module", "description": "Agentry core — event model, config, sandbox, interception, cassettes, assertions, runner.", "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git+https://github.com/dortort/agentry.git", + "directory": "packages/core" + }, "exports": { ".": "./src/index.ts" }, "publishConfig": { "exports": { ".": { "types": "./dist/index.d.ts", "default": "./dist/index.js" } } diff --git a/packages/gemini/package.json b/packages/gemini/package.json index ba1b3c0..ddd4cb8 100644 --- a/packages/gemini/package.json +++ b/packages/gemini/package.json @@ -4,6 +4,11 @@ "type": "module", "description": "Agentry driver for Gemini CLI (headless stream-json).", "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git+https://github.com/dortort/agentry.git", + "directory": "packages/gemini" + }, "exports": { ".": "./src/index.ts" }, "publishConfig": { "exports": { ".": { "types": "./dist/index.d.ts", "default": "./dist/index.js" } } diff --git a/packages/mcp/package.json b/packages/mcp/package.json index c5babdd..6e7d82a 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -4,6 +4,11 @@ "type": "module", "description": "Agentry MCP interception — stdio shim, proxy, and MockMcpServer.", "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git+https://github.com/dortort/agentry.git", + "directory": "packages/mcp" + }, "exports": { ".": "./src/index.ts" }, "publishConfig": { "exports": { ".": { "types": "./dist/index.d.ts", "default": "./dist/index.js" } } From 3abc0ba7c1f5c4e262d5a6dbb5c6d8a1c0ae91ae Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 7 Sep 2026 16:54:38 -0400 Subject: [PATCH 13/13] fix(release): require explicit npm publishing setup --- .github/workflows/release.yml | 13 +++- docs/RELEASING.md | 129 ++++++++++++++++++++++------------ 2 files changed, 96 insertions(+), 46 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d3bdedc..476cded 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,12 +33,23 @@ jobs: - name: Test run: pnpm test + - name: Check publishing credentials + if: vars.NPM_PUBLISH_ENABLED == 'true' + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: | + if [ -z "$NPM_TOKEN" ]; then + echo "::error::NPM_PUBLISH_ENABLED requires the NPM_TOKEN repository secret. See docs/RELEASING.md." + exit 1 + fi + - name: Create release PR or publish id: changesets uses: changesets/action@v1 with: version: pnpm version-packages - publish: pnpm release + # Leave publishing off until npm ownership and authentication are set up. + publish: ${{ vars.NPM_PUBLISH_ENABLED == 'true' && 'pnpm release' || '' }} commit: "chore(release): version packages" title: "chore(release): version packages" env: diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 65b3a44..6c21a47 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -1,68 +1,107 @@ # Releasing -Agentry publishes with [Changesets](https://github.com/changesets/changesets). -All seven publishable packages — `agentry-test`, `@agentry/core`, `@agentry/claude`, -`@agentry/codex`, `@agentry/gemini`, `@agentry/antigravity`, `@agentry/mcp` — version and -publish **together at one shared version** (Playwright-style lockstep, configured via -`fixed` in `.changeset/config.json`). Every release bumps and publishes all of them, even -if only one changed. +Agentry uses [Changesets](https://github.com/changesets/changesets). All seven +publishable packages — `agentry-test`, `@agentry/core`, `@agentry/claude`, +`@agentry/codex`, `@agentry/gemini`, `@agentry/antigravity`, and `@agentry/mcp` — +version and publish together at one shared version. The `fixed` group in +`.changeset/config.json` bumps all seven even when only one changed. Private +example workspaces are excluded. ## Day-to-day flow -1. **Add a changeset** with each change that affects a published package: +1. Add a changeset for changes that affect a published package: ```bash pnpm changeset ``` - Pick the bump (`patch` / `minor` / `major`) and write a one-line summary — it - becomes the changelog entry. Because the packages are `fixed`, selecting any one - bumps them all by the same amount; pick the largest bump your change warrants. - Commit the generated `.changeset/*.md` file alongside your code. + Select any affected package and the largest bump the change warrants. The + summary becomes a changelog entry. Commit the generated `.changeset/*.md` file + alongside the code. Use `pnpm changeset --empty` for changes that intentionally + need no release, such as pre-release package metadata. + + CI rejects package changes without a changeset. The version PR opened by + `github-actions[bot]` from this repository's `changeset-release/main` branch is + exempt from this check because versioning consumes its changesets. Typecheck, + tests, installation, and build still run for version PRs. + +2. Merge to `main`. The Release workflow opens or updates a version PR that bumps + package versions and writes changelogs. Empty changesets alone do not open a + version PR or publish packages. + + The workflow uses `GITHUB_TOKEN`. GitHub may require a maintainer to select + **Approve workflows to run** on the generated PR before its CI runs. See + [GitHub's workflow trigger rules](https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/trigger-a-workflow#triggering-a-workflow-from-a-workflow). + Wait for CI to pass before merging the version PR. + +3. Once publishing is enabled, merge the version PR. The next Release run builds + and publishes all seven packages with npm provenance, then pushes tags and + creates GitHub releases. + +When there are no pending changesets, an enabled Release run attempts to publish +any package versions missing from npm. This also lets a later run retry a partial +publish. It is not limited to commits that merge version PRs. + +## Repository setup + +- In **Settings → Actions → General → Workflow permissions**, enable **Allow + GitHub Actions to create and approve pull requests**. The workflow declares its + required token permissions; the repository's default can remain read-only. +- Publishing is **disabled by default**. Until the repository variable + `NPM_PUBLISH_ENABLED` equals `true`, the workflow can manage version PRs but does + not invoke the publish command. This permits merging the release infrastructure + before npm setup is complete. + +## Before enabling npm publishing + +1. Confirm ownership or availability of `agentry-test` and create or obtain access + to the `@agentry` npm scope. The CLI package is `agentry-test`; its installed + command remains `agentry` (`npm i -D agentry-test`, then `npx agentry-test …`). +2. Add the **`NPM_TOKEN` repository secret** with publish rights for all seven + package names. Use an npm [granular access token](https://docs.npmjs.com/creating-and-viewing-access-tokens/) + with package/scope read-write permission and **Bypass two-factor + authentication** enabled. Ensure its permissions allow creating the initial + package names, and rotate it before expiry. Organization-management permission + alone does not grant permission to publish packages. +3. Keep each published package's `repository.url` set to + `git+https://github.com/dortort/agentry.git` and `repository.directory` set to + its package directory. npm [requires matching repository metadata](https://docs.npmjs.com/generating-provenance-statements/#prerequisites) + for provenance. +4. Build and inspect the packed CLI: - CI enforces this: the `changeset` job on pull requests fails if a package under - `packages/*` changed without a changeset. - -2. **Merge the PR to `main`.** The `Release` workflow opens (or updates) a - **"version packages"** PR that consumes the pending changesets, bumps every - package version, and rewrites `CHANGELOG.md` files. - -3. **Merge the "version packages" PR.** That triggers the workflow again, which runs - `pnpm release` (build + `changeset publish`) and publishes all four packages to - npm with [provenance](https://docs.npmjs.com/generating-provenance-statements), - then pushes the git tags. - -You never run `npm publish` by hand — merging the version PR is the only publish path. + ```bash + pnpm build + pnpm --filter agentry-test pack --pack-destination /tmp/agentry-pack + ``` -## One-time setup (before the first publish) + The packed CLI must reference + `dist/bin.js`, which must start with `#!/usr/bin/env node`; exports must point + to the built JavaScript and declarations. +5. Set the **`NPM_PUBLISH_ENABLED` repository variable** to `true` once setup is + complete. If enabled without `NPM_TOKEN`, the workflow fails with an explicit + setup error. Setting the variable alone does not start a workflow; the next + push to `main` uses the new setting. Remove it or set it to `false` to disable + publishing again. -- [x] **Published CLI name.** The bare `agentry` on npm belongs to an unrelated - package, so the CLI publishes as **`agentry-test`** (mirroring `@playwright/test`). - The `bin` stays `agentry`, so the installed command is still `agentry` — users - `npm i -D agentry-test` and run `npx agentry-test …` (or `agentry …` locally). - If it is ever renamed again, update `packages/cli/package.json`, the consuming - `examples/*`, and the `fixed` array in `.changeset/config.json`. -- [ ] **Create the `@agentry` npm org** (or user scope) so `@agentry/*` can publish. -- [ ] **Add the `NPM_TOKEN` repo secret** — an npm **automation** token (bypasses 2FA - on publish) for an account with publish rights to all package names. -- [ ] **Confirm the published CLI is executable** — verify `dist/bin.js` carries a - `#!/usr/bin/env node` shebang after `pnpm --filter agentry-test build`. +No first release is included in this infrastructure PR; packages remain at +`0.0.0`. Configure publishing before merging the first version PR. ## First release (0.0.0 → 0.1.0) -All packages sit at `0.0.0` and have never been published. Once the setup above is -done, cut the initial pre-1.0 release: +After completing npm setup, add the initial minor changeset on a feature branch: ```bash -pnpm changeset # choose "minor" → 0.1.0, describe the initial release -git commit -am "chore(release): initial 0.1.0 changeset" +pnpm changeset # choose "minor" for any publishable package +git add .changeset/*.md +git commit -m "chore(release): initial 0.1.0 changeset" ``` -Merge to `main`, then merge the "version packages" PR the workflow opens. +Merge that changeset PR to `main`, wait for the generated version PR's CI, and +merge the version PR. All seven packages will release at `0.1.0`. ## Files -- `.changeset/config.json` — lockstep (`fixed`) config, `access: public`. -- `.github/workflows/release.yml` — the publish pipeline. -- `.github/workflows/ci.yml` — the `changeset` PR gate. -- Root `package.json` — `changeset`, `version-packages`, `release` scripts. +- `.changeset/config.json` — lockstep configuration and public access. +- `.github/workflows/release.yml` — version PR and publish automation. +- `.github/workflows/ci.yml` — package checks, build, and changeset gate. +- Root `package.json` — `changeset`, `version-packages`, and `release` scripts.