{"_id":"@acpjs/registry","_rev":"8-f2edae842adb80fb779a93839f61909d","name":"@acpjs/registry","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@acpjs/registry","version":"0.1.0","license":"MIT","_id":"@acpjs/registry@0.1.0","maintainers":[{"name":"zhangyu1995","email":"723156735@qq.com"}],"dist":{"shasum":"0c35afa03f833aa270d244e351f7151baa507e1b","tarball":"https://registry.npmjs.org/@acpjs/registry/-/registry-0.1.0.tgz","fileCount":6,"integrity":"sha512-cxDzIiwBa8jZFD3q7qL4eryRk6lcGdkiskBCgdvF7Of+ya8hc8myxnvBnZojJ+BYUKbnG34ZH2EqSmE5UAEo9Q==","signatures":[{"sig":"MEUCIE8kGzlPK8nRknf++xJ3b84sD+wl1TG1zMtmS4w990dBAiEArEtshURJ1C3UbHTy/lgydUThugYS2CgedV0IILk9b6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76585},"type":"module","_from":"file:acpjs-registry-0.1.0.tgz","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsdown","clean":"rm -rf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"zhangyu1995","email":"723156735@qq.com"},"_resolved":"/private/var/folders/vk/zq50554n5_50fh580y6f7yfw0000gn/T/c75e8612ebce1b61f3fd46bd2e84040f/acpjs-registry-0.1.0.tgz","_integrity":"sha512-cxDzIiwBa8jZFD3q7qL4eryRk6lcGdkiskBCgdvF7Of+ya8hc8myxnvBnZojJ+BYUKbnG34ZH2EqSmE5UAEo9Q==","_npmVersion":"11.8.0","description":"acpjs registry index fetch/cache, AgentDefinition resolution, and ensureInstalled.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"@acpjs/protocol":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.9.2"},"_npmOperationalInternal":{"tmp":"tmp/registry_0.1.0_1781345506878_0.5159429267185587","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@acpjs/registry","version":"0.1.1","license":"MIT","_id":"@acpjs/registry@0.1.1","maintainers":[{"name":"zhangyu1995","email":"723156735@qq.com"}],"homepage":"https://github.com/zhangyu1818/acpjs#readme","bugs":{"url":"https://github.com/zhangyu1818/acpjs/issues"},"dist":{"shasum":"0e6db47cfa43733627b36f65c085b113a0c845db","tarball":"https://registry.npmjs.org/@acpjs/registry/-/registry-0.1.1.tgz","fileCount":6,"integrity":"sha512-UIqHL1ijcEMHOSea2meB+oYu24wWbExMU/wzjXLtHcE9kTPOYhXkE1Ef+OiUcHZ8BklUgpowXkCD5Auaj4xu9A==","signatures":[{"sig":"MEQCIAEIcT6MY1LnbBgBSQxWnNKuoBjOXKprnsnGY7ehfSsxAiAnyhal8lL3fjumJwnP+jQwC9qXXVQ3kkjrjo48TCXDaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acpjs%2fregistry@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76698},"type":"module","_from":"file:acpjs-registry-0.1.1.tgz","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsdown","clean":"rm -rf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e241f416-cfb0-446b-84f3-9bdec6907dca"}},"_resolved":"/tmp/067030ec95c98d22ffc4461ff936f65e/acpjs-registry-0.1.1.tgz","_integrity":"sha512-UIqHL1ijcEMHOSea2meB+oYu24wWbExMU/wzjXLtHcE9kTPOYhXkE1Ef+OiUcHZ8BklUgpowXkCD5Auaj4xu9A==","repository":{"url":"git+https://github.com/zhangyu1818/acpjs.git","type":"git","directory":"packages/registry"},"_npmVersion":"11.17.0","description":"acpjs registry index fetch/cache, AgentDefinition resolution, and ensureInstalled.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@acpjs/protocol":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.9.2"},"_npmOperationalInternal":{"tmp":"tmp/registry_0.1.1_1781625888152_0.11727806009536557","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@acpjs/registry","version":"0.1.2","license":"MIT","_id":"@acpjs/registry@0.1.2","maintainers":[{"name":"zhangyu1995","email":"723156735@qq.com"}],"homepage":"https://github.com/zhangyu1818/acpjs#readme","bugs":{"url":"https://github.com/zhangyu1818/acpjs/issues"},"dist":{"shasum":"a4334ee2accde164af96a8897709a41dd9049c97","tarball":"https://registry.npmjs.org/@acpjs/registry/-/registry-0.1.2.tgz","fileCount":6,"integrity":"sha512-kymDaS7CzoJBjd2dJS9BxeEkcSHh0DaKh7UdaxGnQS8bMFGC4rVaPwgsi/wwW6td0fDRZ96+HSADpRaNjmIV9g==","signatures":[{"sig":"MEYCIQCN4MN7KYsBe00ZjEx5lSLmz7ttV3n6SavJ4MAHE7uA5QIhAOSXdqSwlBubSi06xXMpv1WhdvSCZvNOsfme3NJrjAiB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acpjs%2fregistry@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76698},"type":"module","_from":"file:acpjs-registry-0.1.2.tgz","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsdown","clean":"rm -rf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e241f416-cfb0-446b-84f3-9bdec6907dca"}},"_resolved":"/tmp/686278502c81905c459a60c67c53d5f8/acpjs-registry-0.1.2.tgz","_integrity":"sha512-kymDaS7CzoJBjd2dJS9BxeEkcSHh0DaKh7UdaxGnQS8bMFGC4rVaPwgsi/wwW6td0fDRZ96+HSADpRaNjmIV9g==","repository":{"url":"git+https://github.com/zhangyu1818/acpjs.git","type":"git","directory":"packages/registry"},"_npmVersion":"11.17.0","description":"acpjs registry index fetch/cache, AgentDefinition resolution, and ensureInstalled.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@acpjs/protocol":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.9.2"},"_npmOperationalInternal":{"tmp":"tmp/registry_0.1.2_1781667910699_0.8670923386946774","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@acpjs/registry","version":"0.1.3","license":"MIT","_id":"@acpjs/registry@0.1.3","maintainers":[{"name":"zhangyu1995","email":"723156735@qq.com"}],"homepage":"https://github.com/zhangyu1818/acpjs#readme","bugs":{"url":"https://github.com/zhangyu1818/acpjs/issues"},"dist":{"shasum":"cb2a82ff7f1603765fc492b2e14cc21bd6f938ea","tarball":"https://registry.npmjs.org/@acpjs/registry/-/registry-0.1.3.tgz","fileCount":6,"integrity":"sha512-LebbJgmBoFH1UIE8dDiU7RZ0oGgx6RrDsxzT2FH4Tf7hU5q/U7DzRJsfCauxb9QXll8tBTyk/EiTFgTy2bOy5Q==","signatures":[{"sig":"MEQCICTn2ChZgCc3uBulTE4Z/K7yrYxrouZVo9jv2fWHzlVvAiBow2cAFg35q8uA0KUtHkj6iMaHLeBdBF/G4mKCyCQONA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acpjs%2fregistry@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76698},"type":"module","_from":"file:acpjs-registry-0.1.3.tgz","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsdown","clean":"rm -rf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e241f416-cfb0-446b-84f3-9bdec6907dca"}},"_resolved":"/tmp/635ec129efaa6f72aa00cc87ee5fdef9/acpjs-registry-0.1.3.tgz","_integrity":"sha512-LebbJgmBoFH1UIE8dDiU7RZ0oGgx6RrDsxzT2FH4Tf7hU5q/U7DzRJsfCauxb9QXll8tBTyk/EiTFgTy2bOy5Q==","repository":{"url":"git+https://github.com/zhangyu1818/acpjs.git","type":"git","directory":"packages/registry"},"_npmVersion":"11.17.0","description":"acpjs registry index fetch/cache, AgentDefinition resolution, and ensureInstalled.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@acpjs/protocol":"0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.9.2"},"_npmOperationalInternal":{"tmp":"tmp/registry_0.1.3_1781672297653_0.9760971836541636","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@acpjs/registry","version":"0.1.4","license":"MIT","_id":"@acpjs/registry@0.1.4","maintainers":[{"name":"zhangyu1995","email":"723156735@qq.com"}],"homepage":"https://github.com/zhangyu1818/acpjs#readme","bugs":{"url":"https://github.com/zhangyu1818/acpjs/issues"},"dist":{"shasum":"6418a602b6bbc02827a40cb37857e7cfd453400f","tarball":"https://registry.npmjs.org/@acpjs/registry/-/registry-0.1.4.tgz","fileCount":6,"integrity":"sha512-GamRh714eHMHRFj01D+Klf03/NW2dTQksKko3ZdmwiqOAhLERTsrv757ZRClwl0urfuJPz5WWVxx5uSws4P5oQ==","signatures":[{"sig":"MEQCIDYcD0w7vTpyhfZEIT57+0GFZTTyiI0WeZcstNNKCTeZAiAXikHxaY1vUTSvSjiiRGUk9m9oi5dJw7m3Au40C/NAjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acpjs%2fregistry@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76698},"type":"module","_from":"file:acpjs-registry-0.1.4.tgz","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsdown","clean":"rm -rf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e241f416-cfb0-446b-84f3-9bdec6907dca"}},"_resolved":"/tmp/6de12117e0eb04678b24f8b69cf01fdf/acpjs-registry-0.1.4.tgz","_integrity":"sha512-GamRh714eHMHRFj01D+Klf03/NW2dTQksKko3ZdmwiqOAhLERTsrv757ZRClwl0urfuJPz5WWVxx5uSws4P5oQ==","repository":{"url":"git+https://github.com/zhangyu1818/acpjs.git","type":"git","directory":"packages/registry"},"_npmVersion":"11.17.0","description":"acpjs registry index fetch/cache, AgentDefinition resolution, and ensureInstalled.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@acpjs/protocol":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.9.2"},"_npmOperationalInternal":{"tmp":"tmp/registry_0.1.4_1781835447699_0.6292651099830819","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@acpjs/registry","version":"0.1.5","license":"MIT","_id":"@acpjs/registry@0.1.5","maintainers":[{"name":"zhangyu1995","email":"723156735@qq.com"}],"homepage":"https://github.com/zhangyu1818/acpjs#readme","bugs":{"url":"https://github.com/zhangyu1818/acpjs/issues"},"dist":{"shasum":"ec2a660c0a91c4a748913a5b9effa125e939a66f","tarball":"https://registry.npmjs.org/@acpjs/registry/-/registry-0.1.5.tgz","fileCount":6,"integrity":"sha512-XM3p4d+k9gGFBdYbwU21tNLm/+eNGAPwfiQWgRCTxvRyT5iNJXgoxd1/MT80zeveSz8SFm1YhA4MA57lCyoqIA==","signatures":[{"sig":"MEYCIQD32xphOkGwokutEcqzraiL0ZZjEbpHHRz3WHM/BmFnpQIhAMw4Zi4rZ99YNledF7kKpTEUAC3GAuew6m/x0qmA7jTb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acpjs%2fregistry@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76698},"type":"module","_from":"file:acpjs-registry-0.1.5.tgz","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsdown","clean":"rm -rf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e241f416-cfb0-446b-84f3-9bdec6907dca"}},"_resolved":"/tmp/256d9999853657199cd555e45bd85035/acpjs-registry-0.1.5.tgz","_integrity":"sha512-XM3p4d+k9gGFBdYbwU21tNLm/+eNGAPwfiQWgRCTxvRyT5iNJXgoxd1/MT80zeveSz8SFm1YhA4MA57lCyoqIA==","repository":{"url":"git+https://github.com/zhangyu1818/acpjs.git","type":"git","directory":"packages/registry"},"_npmVersion":"11.17.0","description":"acpjs registry index fetch/cache, AgentDefinition resolution, and ensureInstalled.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@acpjs/protocol":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.9.2"},"_npmOperationalInternal":{"tmp":"tmp/registry_0.1.5_1782054706832_0.007501130697317171","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@acpjs/registry","version":"0.2.0","license":"MIT","_id":"@acpjs/registry@0.2.0","maintainers":[{"name":"zhangyu1995","email":"723156735@qq.com"}],"homepage":"https://github.com/zhangyu1818/acpjs#readme","bugs":{"url":"https://github.com/zhangyu1818/acpjs/issues"},"dist":{"shasum":"222112c717aadff5a7c2c67b9e0caeb748dca287","tarball":"https://registry.npmjs.org/@acpjs/registry/-/registry-0.2.0.tgz","fileCount":6,"integrity":"sha512-KGx3UrXo8sHoDCwoX6mqBQkErL1FKPLgrn6BHTGrtUje5e3Y28Rh6o3E0m6EHUrfULx6gwqRSJF4diDgRL+pWw==","signatures":[{"sig":"MEUCIQDCGDDyEkjFvTA9AJykLF9IqtSRIS2QhaVXgoxc9DJZCQIgPQxt4eXk7jOF4RpyhoRNkVKWl19hrmdjtDVSQz8tD68=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acpjs%2fregistry@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79322},"type":"module","_from":"file:acpjs-registry-0.2.0.tgz","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsdown","clean":"rm -rf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e241f416-cfb0-446b-84f3-9bdec6907dca"}},"_resolved":"/tmp/46cbe95acdca39a1e41b51b0b62526de/acpjs-registry-0.2.0.tgz","_integrity":"sha512-KGx3UrXo8sHoDCwoX6mqBQkErL1FKPLgrn6BHTGrtUje5e3Y28Rh6o3E0m6EHUrfULx6gwqRSJF4diDgRL+pWw==","repository":{"url":"git+https://github.com/zhangyu1818/acpjs.git","type":"git","directory":"packages/registry"},"_npmVersion":"11.17.0","description":"acpjs registry index fetch/cache, AgentDefinition resolution, and ensureInstalled.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"tar":"^7.5.16","@acpjs/protocol":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.9.2"},"_npmOperationalInternal":{"tmp":"tmp/registry_0.2.0_1782356282532_0.9583060554079827","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@acpjs/registry","version":"0.2.1","description":"acpjs registry index fetch/cache, AgentDefinition resolution, and ensureInstalled.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/zhangyu1818/acpjs.git","directory":"packages/registry"},"type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"publishConfig":{"access":"public"},"dependencies":{"tar":"^7.5.16","@acpjs/protocol":"0.7.0"},"devDependencies":{"@types/node":"^25.9.2"},"engines":{"node":">=24"},"scripts":{"build":"tsdown","test":"vitest run","typecheck":"tsc --noEmit","clean":"rm -rf dist .turbo"},"_id":"@acpjs/registry@0.2.1","bugs":{"url":"https://github.com/zhangyu1818/acpjs/issues"},"homepage":"https://github.com/zhangyu1818/acpjs#readme","_integrity":"sha512-H+mHr/zElB6wtZD5mUeped4A+skNDAL0fPTqL5kq0zNaQUH8JaemsJMKwtCvfFqQ+4qj43vtaY+xEIA3CIHtDA==","_resolved":"/tmp/03abf62fc9b5a54b6d4f50e401460778/acpjs-registry-0.2.1.tgz","_from":"file:acpjs-registry-0.2.1.tgz","_nodeVersion":"24.17.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-H+mHr/zElB6wtZD5mUeped4A+skNDAL0fPTqL5kq0zNaQUH8JaemsJMKwtCvfFqQ+4qj43vtaY+xEIA3CIHtDA==","shasum":"fd3e300478ead61a9958522d997813b9d80099c6","tarball":"https://registry.npmjs.org/@acpjs/registry/-/registry-0.2.1.tgz","fileCount":6,"unpackedSize":71918,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acpjs%2fregistry@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDo0eFhn0xbKhlTVcteft6U9rlmM5B+Del9polApQCY4wIhAIcPgXUyr6sciE/vWsPbxYaRuaFC7ayMIII+3SH+A4ef"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e241f416-cfb0-446b-84f3-9bdec6907dca"}},"directories":{},"maintainers":[{"name":"zhangyu1995","email":"723156735@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/registry_0.2.1_1782490776225_0.22384414596357716"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-13T10:11:46.712Z","modified":"2026-06-26T16:19:36.706Z","0.1.0":"2026-06-13T10:11:47.018Z","0.1.1":"2026-06-16T16:04:48.324Z","0.1.2":"2026-06-17T03:45:10.843Z","0.1.3":"2026-06-17T04:58:17.790Z","0.1.4":"2026-06-19T02:17:27.845Z","0.1.5":"2026-06-21T15:11:46.977Z","0.2.0":"2026-06-25T02:58:02.664Z","0.2.1":"2026-06-26T16:19:36.404Z"},"bugs":{"url":"https://github.com/zhangyu1818/acpjs/issues"},"license":"MIT","homepage":"https://github.com/zhangyu1818/acpjs#readme","repository":{"type":"git","url":"git+https://github.com/zhangyu1818/acpjs.git","directory":"packages/registry"},"description":"acpjs registry index fetch/cache, AgentDefinition resolution, and ensureInstalled.","maintainers":[{"name":"zhangyu1995","email":"723156735@qq.com"}],"readme":"# @acpjs/registry\n\nACP registry index fetch/cache, `AgentDefinition` resolution, and `ensureInstalled` install flow. Node-only, ESM-only, `node >= 24`.\n\nDefault data source: `https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json` (`/latest/` is the only published path).\n\n## Install\n\n```sh\npnpm add @acpjs/registry\n```\n\n## Usage\n\n```ts\nimport { createRegistryClient } from '@acpjs/registry'\nimport { createAcpHost } from '@acpjs/core'\n\nconst registry = createRegistryClient()\n\nconst unsubscribe = registry.subscribe((event) => {\n  if (event.type === 'install-progress' && 'downloadedBytes' in event.payload) {\n    console.log(\n      `downloading ${event.payload.downloadedBytes}/${event.payload.totalBytes ?? '?'}`,\n    )\n  }\n})\n\nconst definition = await registry.ensureInstalled('claude-acp')\nunsubscribe()\n\nconst host = createAcpHost()\nawait host.spawnAgent(definition) // AgentDefinition is isomorphic to hand-written config\n```\n\n## Exports\n\n- `createRegistryClient(options?): RegistryClient`\n- `RegistryError` (carries a `code: RegistryErrorCode`)\n- Constants: `DEFAULT_INDEX_URL`, `DEFAULT_INDEX_TTL_MS`\n- Types: `RegistryClient`, `RegistryClientOptions`, `EnsureInstalledOptions`, `RegistryEvent`, `RegistryEventListener`, `FetchLike`, `PathProbe`, `RegistryIndex`, `RegistryEntry`, `RegistryDistribution`, `PackageDistribution`, `BinaryTarget`, `PlatformKey`, `AgentDefinition`, `InstallArtifact`, `RegistryError`, `RegistryErrorCode`.\n\n### `RegistryClient`\n\n- `getIndex(): Promise<RegistryIndex>` — cached `{ version?, entries }`.\n- `getEntry(agentId): Promise<RegistryEntry | undefined>`\n- `ensureInstalled(agentId, options?): Promise<AgentDefinition>` — four-tier resolution + install.\n- `getInstallArtifact(agentId): Promise<InstallArtifact | undefined>`\n- `subscribe(listener): () => void` — `install-progress` + `diagnostic` events (`@acpjs/protocol` host shapes, one monotonic `seq`).\n\n### `RegistryClientOptions` (all injectable)\n\n| Option              | Default                                |\n| ------------------- | -------------------------------------- |\n| `fetch`             | `globalThis.fetch`                     |\n| `cacheDir`          | platform cache dir (`acpjs` namespace) |\n| `indexUrl`          | `DEFAULT_INDEX_URL`                    |\n| `indexTtlMs`        | `DEFAULT_INDEX_TTL_MS` (1 hour)        |\n| `now`               | `Date.now`                             |\n| `platform` / `arch` | `process.platform` / `process.arch`    |\n| `pathProbe`         | PATH executable probe                  |\n\n## `ensureInstalled` resolution order\n\n1. **Explicit command** — `ensureInstalled(id, { command, args?, env? })` → `AgentDefinition` directly (no network/index/meta).\n2. **Executable on PATH** — probe finds candidate; args/env from the matching distribution form.\n3. **Package-manager run** — `npx`/`uvx` distribution → `command: 'npx'|'uvx'`, `args: [package, ...args]` (`npx` preferred when both exist; no injected flags).\n4. **Binary download/install** — map platform/arch to one of six keys (`{darwin|linux|windows}-{aarch64|x86_64}`) → download → extract → `chmod 755` → write `artifact.json`. Target `cmd`/`args`/`env` flow into the `AgentDefinition`.\n\nInstall state machine: `resolving → (cache-hit → installed)` or `resolving → downloading → extracting → installed`; any failure → `failed` (payload carries `reason`); the install dir is removed so no half-written artifacts remain. Idempotent per `(agentId, version, platform)`.\n\n## Index cache\n\n- Cached at `<cacheDir>/registry-index.json`; served within TTL (1h default), shared across processes.\n- Network failure with cache → stale cache + `diagnostic` (`warn`, `registry/index-stale-fallback`); no cache → `RegistryError('registry/index-unavailable')`.\n- Index body must be an object with an `agents` array, else `registry/index-invalid`. Unparseable entries are skipped individually (`registry/entry-invalid`).\n\n## Archive formats\n\n- Extracted: `.tar.gz`, `.tgz` (gzip tar), `.zip` (pure-JS reader; store/deflate only).\n- Raw binary (any other suffix, e.g. `.exe`) → written directly, no `extracting` stage.\n- Rejected before download: `.dmg`, `.pkg`, `.deb`, `.rpm`, `.tar.bz2`, `.tbz2` → `registry/unsupported-archive`.\n- Tar extraction via [node-tar](https://github.com/isaacs/node-tar) in-process (security defaults on: leading `/` stripped, `..` refused, no write through symlinks). Downloads capped at 1 GiB; each zip entry capped at 256 MiB inflated; zip-slip guarded.\n\n## Diagnostics & error codes\n\n| Channel             | Code                            | Meaning                                    |\n| ------------------- | ------------------------------- | ------------------------------------------ |\n| diagnostic (`warn`) | `registry/index-stale-fallback` | network failure, stale cache served        |\n| diagnostic (`warn`) | `registry/entry-invalid`        | skipped unparseable entry                  |\n| `RegistryError`     | `registry/index-unavailable`    | network failure, no cache                  |\n| `RegistryError`     | `registry/index-invalid`        | index not `{ agents: [] }`                 |\n| `RegistryError`     | `registry/agent-not-found`      | no entry for `agentId`                     |\n| `RegistryError`     | `registry/no-distribution`      | entry has no usable distribution           |\n| `RegistryError`     | `registry/platform-unsupported` | no binary target / unmappable platform     |\n| `RegistryError`     | `registry/unsupported-archive`  | unsupported format                         |\n| `RegistryError`     | `registry/download-failed`      | download threw / non-2xx                   |\n| `RegistryError`     | `registry/install-failed`       | post-extraction error (e.g. `cmd` missing) |\n\n## Known constraints\n\n- **No checksum/signature verification** — the index carries no integrity values; integrity relies on TLS + the official CDN. The `verifying` stage is skipped.\n- **PATH probe** candidates (in order): basename of the platform's binary `cmd`, then entry `id`; default walks `PATH` for execute permission (windows tries `.exe`/`.cmd`).\n- **`meta` pass-through** — registry-sourced `AgentDefinition`s carry `meta: { name, version, registryId, icon? }`.\n- Windows binaries are written + `chmod`'d like any platform; execution depends on the published `cmd`.\n","readmeFilename":"README.md"}