{"_id":"@cool-ai/beach-channel-a2a","_rev":"2-74d421464608924418b75e2b31fdaf91","name":"@cool-ai/beach-channel-a2a","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.1":{"name":"@cool-ai/beach-channel-a2a","version":"0.1.1","license":"Apache-2.0","_id":"@cool-ai/beach-channel-a2a@0.1.1","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"dist":{"shasum":"9a49955088b86d0b06ea8b982ffbac0721b67516","tarball":"https://registry.npmjs.org/@cool-ai/beach-channel-a2a/-/beach-channel-a2a-0.1.1.tgz","fileCount":31,"integrity":"sha512-HT7QQ87vya4X31zT6Ybrgt81/EZS1Y8Q0Y6K//PyIwTdlz3Uu1arDATtf/0wxzeJlncNGCY4X389RqIVjcQtLw==","signatures":[{"sig":"MEUCIQDnLZxk2EzNH1o5z1FzdTDVL4MwFv7yFFmxWhSdJejb8AIgaTMqB9hpFnp7NMS82nybEux24BI6wdwXoGOYOnxyIGA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":330497},"type":"module","_from":"file:cool-ai-beach-channel-a2a-0.1.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --project tsconfig.json --watch","test":"vitest run","build":"tsc --project tsconfig.json","coverage":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"_resolved":"/tmp/c9337a8bffd233842ab81ee59101867e/cool-ai-beach-channel-a2a-0.1.1.tgz","_integrity":"sha512-HT7QQ87vya4X31zT6Ybrgt81/EZS1Y8Q0Y6K//PyIwTdlz3Uu1arDATtf/0wxzeJlncNGCY4X389RqIVjcQtLw==","repository":{"url":"git+https://gitlab.com/johncandrew/beach.git","type":"git","directory":"packages/beach-channel-a2a"},"_npmVersion":"10.9.8","description":"Beach A2A channel — receive a peer agent's JSON-RPC message, route it, reply parts back. Implements core's ChannelAdaptor.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@cool-ai/beach-core":"^0.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@a2a-js/sdk":"^0.3.0","@types/node":"^22.0.0"},"peerDependencies":{"@a2a-js/sdk":"^0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/beach-channel-a2a_0.1.1_1780677376009_0.2612863614863812","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cool-ai/beach-channel-a2a","version":"0.1.2","description":"Beach A2A channel — receive a peer agent's JSON-RPC message, route it, reply parts back. Implements core's ChannelAdaptor.","license":"Apache-2.0","repository":{"type":"git","url":"git+https://gitlab.com/johncandrew/beach.git","directory":"packages/beach-channel-a2a"},"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"publishConfig":{"access":"public"},"dependencies":{"@cool-ai/beach-core":"^0.13.3"},"devDependencies":{"@a2a-js/sdk":"^0.3.0","@types/node":"^22.0.0","typescript":"^5.5.0","vitest":"^2.0.0"},"peerDependencies":{"@a2a-js/sdk":"^0.3.0"},"scripts":{"build":"tsc --project tsconfig.json","dev":"tsc --project tsconfig.json --watch","test":"vitest run","coverage":"vitest run --coverage","test:watch":"vitest","typecheck":"tsc --noEmit"},"_id":"@cool-ai/beach-channel-a2a@0.1.2","_integrity":"sha512-1jkTxwxTgnC9FPwWkYF0m3nCJYnOpsGjNltd7wGpBWQFKfX4ua+G4YyoJjmOJM28XixWvqJye3Zb769XWKmvYQ==","_resolved":"/tmp/2bc98439e57a2c22f3128d5c38f28a99/cool-ai-beach-channel-a2a-0.1.2.tgz","_from":"file:cool-ai-beach-channel-a2a-0.1.2.tgz","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-1jkTxwxTgnC9FPwWkYF0m3nCJYnOpsGjNltd7wGpBWQFKfX4ua+G4YyoJjmOJM28XixWvqJye3Zb769XWKmvYQ==","shasum":"e8bc440c649cab8bcfe6844735f455f02455192c","tarball":"https://registry.npmjs.org/@cool-ai/beach-channel-a2a/-/beach-channel-a2a-0.1.2.tgz","fileCount":31,"unpackedSize":322716,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHmdFvL/ldWCSiVVDNQLuvEBFFwoy9owOR0sqGxFmnfwAiEA/wGWWf9F4sPLaMqQQORLGU++tuJGAaEUrk7F4TldJuM="}]},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"directories":{},"maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/beach-channel-a2a_0.1.2_1781772154235_0.7198593011617758"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-05T16:36:15.888Z","modified":"2026-06-18T08:42:34.561Z","0.1.1":"2026-06-05T16:36:16.142Z","0.1.2":"2026-06-18T08:42:34.420Z"},"bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"license":"Apache-2.0","homepage":"https://cool-ai.org","repository":{"type":"git","url":"git+https://gitlab.com/johncandrew/beach.git","directory":"packages/beach-channel-a2a"},"description":"Beach A2A channel — receive a peer agent's JSON-RPC message, route it, reply parts back. Implements core's ChannelAdaptor.","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"readme":"# @cool-ai/beach-channel-a2a\n\nThe A2A channel adaptor: another agent sends a JSON-RPC `message/send`, the message is routed, and the reply parts go back to the caller. It implements core's `ChannelAdaptor`, and it is how one Beach instance exposes itself to another — the reached Beach runs this adaptor as a server; the calling side is an ordinary A2A client.\n\n`message/send` is synchronous request/response, so the adaptor is a blocking channel: it holds the caller's HTTP request open — keyed on a correlation id carried on the reply destination — until the routed reply arrives, then writes the JSON-RPC result. A reply that never comes is answered with a JSON-RPC error after `replyTimeoutMs`.\n\nA peer reads the reply parts directly, so the adaptor wires no renderer and applies no part-level filtering — Beach passes the parts through.\n\n## Use\n\n```ts\nimport { A2AChannelAdaptor } from '@cool-ai/beach-channel-a2a';\n\nconst a2a = new A2AChannelAdaptor({\n  inbound: (req) => channelRouter.inbound(req),\n  replyTimeoutMs: 30_000,\n});\n\napp.post('/a2a', a2a.handler());          // peers POST message/send here\n// Register `a2a` as a channel-router adaptor so replies route back to the caller.\n```\n\nThe wire format is the `@a2a-js/sdk` `Message` shape, adopted wholesale. Threading follows the message's `contextId`; replies echo `contextId` and `taskId` so the peer can correlate.\n","readmeFilename":"README.md"}