{"_id":"@amykit/agent-kit","_rev":"4-4e58f6bda6554a60f82693061b5b5ee2","name":"@amykit/agent-kit","dist-tags":{"latest":"0.4.0"},"versions":{"0.2.0":{"name":"@amykit/agent-kit","version":"0.2.0","author":{"name":"Nicolas Melo"},"license":"MIT","_id":"@amykit/agent-kit@0.2.0","maintainers":[{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"}],"homepage":"https://github.com/nicolasmelo1/amy#readme","bugs":{"url":"https://github.com/nicolasmelo1/amy/issues"},"dist":{"shasum":"a52a680a4c47088062c5a629d4ad8ffcbe01b5ba","tarball":"https://registry.npmjs.org/@amykit/agent-kit/-/agent-kit-0.2.0.tgz","fileCount":38,"integrity":"sha512-noSTBNt2C94ZoUBNmZfNYlWlIZ1STzfGqUaBDTv2XD2iUii0UYKsdLJDHSY8xsnr11UsCK08h+imSMthoe+uYw==","signatures":[{"sig":"MEUCIDuUaLcMBOe1JJoFvEgUCZE767S9RbcdMG5wGzzKuLpmAiEA3Wzqg894eXR1/sJqSuNEJ6b6UD36kMvYzL1AZTjbzlM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amykit%2fagent-kit@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55685},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b7903f5c95e8154f5db6fd4df6ca2633a628812d","_npmUser":{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"},"repository":{"url":"git+https://github.com/nicolasmelo1/amy.git","type":"git","directory":"packages/agent-kit"},"_npmVersion":"11.19.0","description":"What every agent does the same way: the prompts, the git dance, and the JSON.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@amykit/core":"^0.2.0","@amykit/workflow-ticket-to-qa":"^0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@amykit/test-fixtures":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-kit_0.2.0_1788658154733_0.9248432640056934","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@amykit/agent-kit","version":"0.3.0","author":{"name":"Nicolas Melo"},"license":"MIT","_id":"@amykit/agent-kit@0.3.0","maintainers":[{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"}],"homepage":"https://github.com/nicolasmelo1/amy#readme","bugs":{"url":"https://github.com/nicolasmelo1/amy/issues"},"dist":{"shasum":"8c1912ea403ff0e3d4836968056c6536af931681","tarball":"https://registry.npmjs.org/@amykit/agent-kit/-/agent-kit-0.3.0.tgz","fileCount":38,"integrity":"sha512-gnsNZIPrLpL56Kjk8TiJ/a5pgm9XazNnSPNV/qiDfnYW3FRIh0mQMTDCyu+5S6DuaJ0QYozsQjbi5rvmORkoWg==","signatures":[{"sig":"MEUCIQDP9DVA7xg1+7Rqj0nGviY5wox3bePLAakgX0BaLPNQuQIgWQ6IkOInFUWkGugSAkCeSroB/DDvkK9PkNHOVOdR8Yc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDxryUPDb1QIFaCwrW3Q6NMgidoUgCVAHjOCXMkYswrSAiB/m7tpVqLZK+7FHCzNAyYENzGJjG4HADO5XJCxzFxAhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amykit%2fagent-kit@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":57869},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a9e241e87a00d8267ad9e992c4ab8fd97bd04480","_npmUser":{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"},"repository":{"url":"git+https://github.com/nicolasmelo1/amy.git","type":"git","directory":"packages/agent-kit"},"_npmVersion":"11.19.0","description":"What every agent does the same way: the prompts, the git dance, and the JSON.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@amykit/core":"^0.3.0","@amykit/workflow-ticket-to-qa":"^0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@amykit/test-fixtures":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-kit_0.3.0_1788922192273_0.17757337544287632","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@amykit/agent-kit","version":"0.3.1","author":{"name":"Nicolas Melo"},"license":"MIT","_id":"@amykit/agent-kit@0.3.1","maintainers":[{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"}],"homepage":"https://github.com/nicolasmelo1/amy#readme","bugs":{"url":"https://github.com/nicolasmelo1/amy/issues"},"dist":{"shasum":"5c5d91db13e909029d83058c456e5596eda3bce8","tarball":"https://registry.npmjs.org/@amykit/agent-kit/-/agent-kit-0.3.1.tgz","fileCount":38,"integrity":"sha512-viZoOwrhQarsJSSB2UC7yaxLi/HP6KJItSUM9RgLJHUu6nlPjEapWB1AeEEHvxgrwoEXwt2yy5rVBagpDvNhiw==","signatures":[{"sig":"MEYCIQCa2rqyRCpa9EkG5A/y9KtAkxaEPJBxy/sjDeQ8dBc71wIhAIW7J/AK/MOLWlpIQycJ8eUvkn5x6II/0w5JQNAgpJJ9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIACg0/6i3gZyJvruKNvHnN9s4Sp/u33QDTZ8LdMWfpKeAiB4rjbtqLlxlGCu0W4VfqdM+GQRQrJxVfhM2Jq5yUlfIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amykit%2fagent-kit@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":57869},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"6a4c559ad368c51e232a33c4c2221f02709ceb2f","_npmUser":{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"},"repository":{"url":"git+https://github.com/nicolasmelo1/amy.git","type":"git","directory":"packages/agent-kit"},"_npmVersion":"11.19.0","description":"What every agent does the same way: the prompts, the git dance, and the JSON.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@amykit/core":"^0.3.1","@amykit/workflow-ticket-to-qa":"^0.3.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@amykit/test-fixtures":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-kit_0.3.1_1788973116688_0.7980501775060438","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@amykit/agent-kit@0.4.0","bugs":{"url":"https://github.com/nicolasmelo1/amy/issues"},"dist":{"shasum":"6104907355dbe57c3e5175f74d4dce85e11826e8","tarball":"https://registry.npmjs.org/@amykit/agent-kit/-/agent-kit-0.4.0.tgz","fileCount":38,"integrity":"sha512-BxiZ2AjGCrvjHRYxBec0yDxmTvATTWuOn9zxySfbF+GFGoiNDyR4QRdBsyefSUj23yVJy14htVR4QKzLwFS+hw==","signatures":[{"sig":"MEUCIFcHsOpmiLDCmROmvdHhkXUT3Gv9zp9AB2pQ6V4O6SXDAiEA33BTduy36gxrvkCwU5kGg1RCXDaNpvJ/j0HVoJIJ4ZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDJLnrAMYTB4pxp5vzBBk+CCOaHKfU5dK1mBEGcuFGEQAIhANgUjywmKdYexEk/q8SHW0HDxDWragOVxjXCYYut2rlT"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amykit%2fagent-kit@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":66344},"main":"./dist/index.js","name":"@amykit/agent-kit","type":"module","types":"./dist/index.d.ts","author":{"name":"Nicolas Melo"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ac437aba051bd8e109e1eb8b3c32b0365c6b4e2e","license":"MIT","version":"0.4.0","_npmUser":{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"},"homepage":"https://github.com/nicolasmelo1/amy#readme","repository":{"url":"git+https://github.com/nicolasmelo1/amy.git","type":"git","directory":"packages/agent-kit"},"_npmVersion":"11.19.0","description":"What every agent does the same way: the prompts, the git dance, and the JSON.","directories":{},"maintainers":[{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{"@amykit/core":"^0.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@amykit/test-fixtures":"^0.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-kit_0.4.0_1789739850035_0.31756953738431526"}}},"time":{"created":"2026-09-06T01:29:14.568Z","modified":"2026-09-18T13:57:30.597Z","0.2.0":"2026-09-06T01:29:14.865Z","0.3.0":"2026-09-09T02:49:52.371Z","0.3.1":"2026-09-09T16:58:36.790Z","0.4.0":"2026-09-18T13:57:30.127Z"},"bugs":{"url":"https://github.com/nicolasmelo1/amy/issues"},"author":{"name":"Nicolas Melo"},"license":"MIT","homepage":"https://github.com/nicolasmelo1/amy#readme","repository":{"url":"git+https://github.com/nicolasmelo1/amy.git","type":"git","directory":"packages/agent-kit"},"description":"What every agent does the same way: the prompts, the git dance, and the JSON.","maintainers":[{"name":"amykit","email":"nicolasmelo12+amykit@gmail.com"}],"readme":"# @amykit/agent-kit\n\nThe part of \"being an agent\" that is the same whichever harness answers.\n\nNot a plugin. A library the harness plugins share, so that adding a harness\nmeans teaching amy a **command line**, not re-teaching it the job.\n\n## What is here\n\n**`Harness`** is the whole surface a harness has to implement:\n\n```ts\ninterface Harness {\n  readonly name: string;\n  ask(prompt: string, cwd: string): Promise<HarnessReply>;\n}\n```\n\nOne method. Everything else about being useful to a ticket lives in\n`HarnessAgent`, which turns that one method into the `agent` port: the triage,\nimplement and review-answering prompts, the JSON the replies are read out of,\nand the git dance around each call.\n\n**`contributeTiers`** adds one agent per model tier to the collection the\nrelay reads. The naming lives here rather than in each plugin because it is a\ncontract: `claude:opus` is what an operator writes in a ladder, so three\nplugins inventing three conventions would make the config unlearnable.\n\n## Why a harness contributes instead of mounting\n\nA port has exactly one owner. Three harnesses that each mounted `agent` would\nrefuse to mount together, which is the correct behaviour for a port and the\nwrong outcome here.\n\nSo a harness contributes a `NamedAgent` and `@amykit/plugin-agent-relay` is the\nonly thing that mounts the port. A single-harness install goes through the\nrelay too, with a ladder one rung long and nothing special about that case.\n\n`harness` and `model` are declared on each `NamedAgent` rather than discovered\nfrom a result, because the relay has to decide **where to go next** before it\nruns anything.\n\n## Two decisions inherited by every harness\n\n**A clean exit that changed nothing is a failure.** The ticket asked for work.\nReporting success would send an empty pull request to a reviewer.\n\n**An unanswered review comment becomes a disagreement, not a silence.** A\ncomment the agent did not answer is pushed to the owner rather than dropped.\n","readmeFilename":"README.md"}