{"_id":"@absolutejs/agent-exchange-a2a","_rev":"4-07dafd3cf9e97988653974b9567e8abf","name":"@absolutejs/agent-exchange-a2a","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@absolutejs/agent-exchange-a2a","version":"0.1.0","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/agent-exchange-a2a@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/agent-exchange-providers/tree/main/a2a","bugs":{"url":"https://github.com/absolutejs/agent-exchange-providers/issues"},"dist":{"shasum":"e81d1ee22358ecc29adbee4659230ff5e7cb1b9a","tarball":"https://registry.npmjs.org/@absolutejs/agent-exchange-a2a/-/agent-exchange-a2a-0.1.0.tgz","fileCount":6,"integrity":"sha512-QnzRdbXzM3hIEREWkp3BH8JNqxMhN3Em072u9pOpZEaQ982ZTv2nODqdHIPSQ5h1yA+catbKSXJL2l0BUTIFhg==","signatures":[{"sig":"MEQCIFIFq23uRUHx90ZHtiAWW0ETjwg0pe2o3her/HA3m3/iAiBkTCF8p5oMVESUuOCgnj09F0eJ6Fk05ubuTqeSdlaVBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23764},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"2594b9d944fccb5b0bc27ac845216a4ed0868816","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --target=node --external @absolutejs/a2a --external @absolutejs/agent-exchange && tsc --project tsconfig.build.json","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/agent-exchange-providers.git","type":"git","directory":"a2a"},"_npmVersion":"10.9.2","description":"Negotiated, authenticated A2A client and server adapters for model-blind AbsoluteJS Agent Exchange.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@absolutejs/a2a":"0.3.6","@absolutejs/agent-exchange":"0.4.4"},"peerDependencies":{"@absolutejs/a2a":">=0.3.6 <0.4","@absolutejs/agent-exchange":">=0.4.4 <0.5"},"_npmOperationalInternal":{"tmp":"tmp/agent-exchange-a2a_0.1.0_1787755553182_0.6510352531770187","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@absolutejs/agent-exchange-a2a","version":"0.1.1","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/agent-exchange-a2a@0.1.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/agent-exchange-providers/tree/main/a2a","bugs":{"url":"https://github.com/absolutejs/agent-exchange-providers/issues"},"dist":{"shasum":"7bbe062443a96b7dd6eff2bd007006af018001f3","tarball":"https://registry.npmjs.org/@absolutejs/agent-exchange-a2a/-/agent-exchange-a2a-0.1.1.tgz","fileCount":6,"integrity":"sha512-yYurxM4LtLPENjWnfxo3rnPGUh1m+wVg8a0FHuaArOvxulJJDVB53566FOHMokOCWTfMSIy0yr85+Yyd3hedOg==","signatures":[{"sig":"MEYCIQCm3LBPVopq8h1583EtXYpLsGiDbSttqxUKzxbiMAVOGQIhAJa0zoHqP81goJe4EOkyJAtCGIAxyY2dEq5aSxA4JL7n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24162},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"5d68212e65fead3fe49d50db62569b78341314c9","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --target=node --external @absolutejs/a2a --external @absolutejs/agent-exchange && tsc --project tsconfig.build.json","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/agent-exchange-providers.git","type":"git","directory":"a2a"},"_npmVersion":"10.9.2","description":"Negotiated, authenticated A2A client and server adapters for model-blind AbsoluteJS Agent Exchange.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@absolutejs/a2a":"0.3.6","@absolutejs/agent-exchange":"0.4.4"},"peerDependencies":{"@absolutejs/a2a":">=0.3.6 <0.4","@absolutejs/agent-exchange":">=0.4.4 <0.5"},"_npmOperationalInternal":{"tmp":"tmp/agent-exchange-a2a_0.1.1_1787756213310_0.07975182953292825","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@absolutejs/agent-exchange-a2a","version":"0.2.0","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/agent-exchange-a2a@0.2.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/agent-exchange-providers/tree/main/a2a","bugs":{"url":"https://github.com/absolutejs/agent-exchange-providers/issues"},"dist":{"shasum":"ef90b0acd55eb711d23097c681e84ad7d60c90e1","tarball":"https://registry.npmjs.org/@absolutejs/agent-exchange-a2a/-/agent-exchange-a2a-0.2.0.tgz","fileCount":6,"integrity":"sha512-1kFdp6IJyqYt8DVWGi6Ll3luh730oCWIigzLSjU6PnR1JY57Zlw9jr3asGIpzhYQlpRmHhaW6W6sJ8gM89A4fw==","signatures":[{"sig":"MEQCIAKhrIMR/mz+gtKTQmX+0/LQoxJYcLJ5s7lRdivNQ+LoAiAvtZNL5Xv+r7mtZ9GuXimifqVkywcyJCfykim9PjRYKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32048},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"bcbb807add2f6e47652ec4ab670723eae4fc0417","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --target=node --external @absolutejs/a2a --external @absolutejs/agent-exchange && tsc --project tsconfig.build.json","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/agent-exchange-providers.git","type":"git","directory":"a2a"},"_npmVersion":"10.9.2","description":"Negotiated, authenticated A2A client and server adapters for model-blind AbsoluteJS Agent Exchange.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@absolutejs/a2a":"0.3.6","@absolutejs/agent-exchange":"0.4.4"},"peerDependencies":{"@absolutejs/a2a":">=0.3.6 <0.4","@absolutejs/agent-exchange":">=0.4.4 <0.5"},"_npmOperationalInternal":{"tmp":"tmp/agent-exchange-a2a_0.2.0_1787758240533_0.15185410948974964","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@absolutejs/agent-exchange-a2a","version":"0.3.0","description":"Negotiated, authenticated A2A client and server adapters for model-blind AbsoluteJS Agent Exchange.","type":"module","license":"Apache-2.0","author":{"name":"Alex Kahn"},"repository":{"type":"git","url":"git+https://github.com/absolutejs/agent-exchange-providers.git","directory":"a2a"},"homepage":"https://github.com/absolutejs/agent-exchange-providers/tree/main/a2a","bugs":{"url":"https://github.com/absolutejs/agent-exchange-providers/issues"},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"publishConfig":{"access":"public"},"scripts":{"build":"rm -rf dist && bun build src/index.ts --outdir dist --target=node --external @absolutejs/a2a --external @absolutejs/agent-exchange && tsc --project tsconfig.build.json","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build","format:check":"prettier --check \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","test":"bun test tests/","typecheck":"tsc --noEmit"},"peerDependencies":{"@absolutejs/a2a":">=0.3.6 <0.4","@absolutejs/agent-exchange":">=0.5.0 <0.6"},"devDependencies":{"@absolutejs/a2a":"0.3.6","@absolutejs/agent-exchange":"0.5.0"},"_id":"@absolutejs/agent-exchange-a2a@0.3.0","gitHead":"05a6e94907aa2c6fe91023f483bfa51b87847429","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-pNQlYZu5Zfs86cMiQy0OEwXKx459ZLYMWNbVF10k/8DERCk45AkWKdJM70NQ6Mk/4zYriYkfwYy9bKl5p9uOzg==","shasum":"e78558d9977d24fc46e1aafb37e7ded823b99154","tarball":"https://registry.npmjs.org/@absolutejs/agent-exchange-a2a/-/agent-exchange-a2a-0.3.0.tgz","fileCount":6,"unpackedSize":32048,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC5XtRHJg5qyKvdzp7D1xTGkdbt9bGBcO688iCD+yJkdQIgW+S4G49t1ILSNZe/JTh6LBKW3GgpM89nXmCNuWJAzkw="}]},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-exchange-a2a_0.3.0_1787773394480_0.9580828304997928"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-26T14:45:52.980Z","modified":"2026-08-26T19:43:14.794Z","0.1.0":"2026-08-26T14:45:53.311Z","0.1.1":"2026-08-26T14:56:53.459Z","0.2.0":"2026-08-26T15:30:40.675Z","0.3.0":"2026-08-26T19:43:14.629Z"},"bugs":{"url":"https://github.com/absolutejs/agent-exchange-providers/issues"},"author":{"name":"Alex Kahn"},"license":"Apache-2.0","homepage":"https://github.com/absolutejs/agent-exchange-providers/tree/main/a2a","repository":{"type":"git","url":"git+https://github.com/absolutejs/agent-exchange-providers.git","directory":"a2a"},"description":"Negotiated, authenticated A2A client and server adapters for model-blind AbsoluteJS Agent Exchange.","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# `@absolutejs/agent-exchange-a2a`\n\nInteroperable A2A client and server adapters for Agent Exchange. The adapter\ndiscovers an A2A 1.0 Agent Card, requires the Agent Exchange extension to be\nadvertised, activates it through `A2A-Extensions`, and places only the core\npackage's opaque safe reference in task history. Dedicated cards can require the\nextension; shared cards can advertise it as optional.\n\nThe server authenticates the caller through the host-supplied A2A authorization\nfunction, then passes that verified caller and opaque reference to a deterministic\nexecutor. The executor must resolve the full request from trusted server state,\nverify the OAuth delegation and any signed standing mandate, and authorize it\nbefore source access. Results are projected into a bounded redacted receipt.\n\n```ts\nimport {\n  connectAgentExchangeA2a,\n  createAgentExchangeA2aHandler,\n} from \"@absolutejs/agent-exchange-a2a\";\n```\n\n## Prepared exchanges\n\nA recipient that needs the complete request before the opaque A2A signal can\nadvertise a same-origin preparation endpoint in the extension parameters:\n\n```ts\nconst handler = createAgentExchangeA2aHandler({\n  agentCard,\n  authorize,\n  execute,\n  preparationEndpoint: \"https://recipient.example/agent-exchange/requests\",\n  taskStore,\n});\n```\n\n`connectAgentExchangeA2a()` discovers that endpoint. Each `send(request)` posts\nthe complete request there and verifies that the response contains the exact\nderived opaque reference before sending anything on A2A. Preparation and A2A\ncredentials remain separate:\n\n```ts\nconst client = await connectAgentExchangeA2a({\n  headers: () => a2aAuthorizationHeaders(),\n  origin: \"https://recipient.example\",\n  preparationHeaders: () => preparationAuthorizationHeaders(),\n});\n\nconst receipt = await client.send(request);\n```\n\nThe preparation endpoint uses\n`application/vnd.absolutejs.agent-exchange-preparation+json`, accepts\n`{ request }`, and returns `{ reference }`. It must authenticate the delegated\ncaller, validate and durably protect the request, reject replay, and return\n`Cache-Control: no-store`. The adapter rejects cross-origin preparation URLs,\nredirects, response media-type substitution, extra response fields, and any\nreference that differs from the request.\n\nHosts with an existing trusted preparation channel can instead supply a\n`prepare(request, context)` callback. Omitting both an advertised endpoint and a\ncallback retains out-of-band preparation mode.\n\nThe adapter intentionally does not transmit signed mandates, OAuth tokens,\nmailbox credentials, encrypted envelopes, account references, or verification\ncodes through A2A. See the\n[extension specification](https://github.com/absolutejs/agent-exchange/blob/main/extensions/a2a/v1.md).\n\nThis is an experimental 0.x package and has not been independently audited.\n","readmeFilename":"README.md"}