{"_id":"@agent-ops/claude-nats-channel","_rev":"10-f6603dbedbe8defb6f27d3e28119411c","name":"@agent-ops/claude-nats-channel","dist-tags":{"latest":"0.8.0"},"versions":{"0.0.1":{"name":"@agent-ops/claude-nats-channel","version":"0.0.1","author":"Dan Mestas","license":"Apache-2.0","_id":"@agent-ops/claude-nats-channel@0.0.1","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/claude-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"bin":{"claude-nats-channel":"server.ts"},"dist":{"shasum":"dfcf41610c91514d538c285ccb9caa52d96c512d","tarball":"https://registry.npmjs.org/@agent-ops/claude-nats-channel/-/claude-nats-channel-0.0.1.tgz","fileCount":10,"integrity":"sha512-/HQf/br2uC1Ljm2OAHqXSwOSkXUI3PpfmO5eXonsFF/2/ERuQoxbRQIPDCcnAk1PXVSd8EHwt7LsJLQnZ/jWJg==","signatures":[{"sig":"MEYCIQC/lClnUM9EH+wJnhqNLAqOoRF4hr9ZYwqRXkC5thwIJgIhAMWFsCkS6cg7KKuDczfvhZu/8faCBKYrfw9WdV9ic1ln","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78910},"type":"module","shasum":"dfcf41610c91514d538c285ccb9caa52d96c512d","scripts":{"build":"true","start":"bun install --no-summary && bun server.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"_integrity":"sha512-/HQf/br2uC1Ljm2OAHqXSwOSkXUI3PpfmO5eXonsFF/2/ERuQoxbRQIPDCcnAk1PXVSd8EHwt7LsJLQnZ/jWJg==","repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"claude-nats-channel"},"_npmVersion":"10.8.3","description":"NATS channel bridge for Claude Code — exposes a Claude Code session as a discoverable, spec-compliant Synadia Agent Protocol agent on agents.prompt.cc.<owner>.<session>.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@nats-io/services":"^3.4.0","@synadia-ai/agents":"^0.5.0","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.0","@modelcontextprotocol/sdk":"^1.0.0","@synadia-ai/agent-service":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-nats-channel_0.0.1_1779583451340_0.4799971953347937","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@agent-ops/claude-nats-channel","version":"0.4.0","author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/claude-nats-channel@0.4.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/claude-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"bin":{"claude-nats-channel":"server.ts"},"dist":{"shasum":"56d1e40aa71f748c5e0cc0e5f2b71b11b13966ca","tarball":"https://registry.npmjs.org/@agent-ops/claude-nats-channel/-/claude-nats-channel-0.4.0.tgz","fileCount":10,"integrity":"sha512-fL2t4HBvugweXAItLEUQVGDSyFe/9/L2FtAsJJ1kXVBRfWOI3DaMNl7YxJzuRWvuQnWJlLeMi2S7DfzN9k5lDg==","signatures":[{"sig":"MEYCIQCsnMt2dwjsVOjuwBeKb5Iq//7HOI0cy+bhfvfnyQ9MLwIhAOcx+lSv3fDhNt+wCBbbTZwX5SCsAq/tDKxN/LeLYqeW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104768},"type":"module","gitHead":"fb734eac7df086e21e36b3e62faf4a7014d2b5ee","scripts":{"build":"true","start":"bun install --no-summary && bun server.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"claude-nats-channel"},"_npmVersion":"11.12.1","description":"NATS channel bridge for Claude Code — exposes a Claude Code session as a discoverable, spec-compliant Synadia Agent Protocol agent on agents.prompt.cc.<owner>.<session>.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.25 || ^4.0","@nats-io/kv":"3.4.0","@nats-io/obj":"3.4.0","@nats-io/services":"^3.4.0","@nats-io/jetstream":"3.4.0","@sesh-channels/sdk":"workspace:*","@synadia-ai/agents":"^0.5.0","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.0","@modelcontextprotocol/sdk":"^1.0.0","@synadia-ai/agent-service":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-nats-channel_0.4.0_1779797904023_0.05787683034870228","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@agent-ops/claude-nats-channel","version":"0.4.1","author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/claude-nats-channel@0.4.1","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/claude-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"bin":{"claude-nats-channel":"server.ts"},"dist":{"shasum":"9461babb102e23dc51d17c6d16525082a170bb52","tarball":"https://registry.npmjs.org/@agent-ops/claude-nats-channel/-/claude-nats-channel-0.4.1.tgz","fileCount":10,"integrity":"sha512-AOH7ifTKJ4Qyy9Aj0+ro/otjDA53vKFvdZEnHxEgWiUvXb8cYuxeBSh0VaSoc9MKIeZOVmncxehhdKQI8YqlFQ==","signatures":[{"sig":"MEUCIQC+bteRfAHr3bYnQftqax5HNq7TUhwG8XWN/FDVjTJ3uAIgdGoVvRyH5I+umM53r5WTxAWkusDcjRpRqZ9NZM2DDXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104803},"type":"module","gitHead":"fb734eac7df086e21e36b3e62faf4a7014d2b5ee","scripts":{"build":"true","start":"bun install --no-summary && bun server.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"claude-nats-channel"},"_npmVersion":"11.12.1","description":"NATS channel bridge for Claude Code — exposes a Claude Code session as a discoverable, spec-compliant Synadia Agent Protocol agent on agents.prompt.cc.<owner>.<session>.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.25 || ^4.0","@nats-io/kv":"3.4.0","@nats-io/obj":"3.4.0","@nats-io/services":"^3.4.0","@nats-io/jetstream":"3.4.0","@synadia-ai/agents":"^0.5.0","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.0","@modelcontextprotocol/sdk":"^1.0.0","@synadia-ai/agent-service":"^0.5.0","@agent-ops/sesh-channels-sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-nats-channel_0.4.1_1779798589436_0.5132719226084237","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@agent-ops/claude-nats-channel","version":"0.5.0","author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/claude-nats-channel@0.5.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/claude-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"bin":{"claude-nats-channel":"server.ts"},"dist":{"shasum":"a9581939413b7d02f065bdfb53637d5539028e1a","tarball":"https://registry.npmjs.org/@agent-ops/claude-nats-channel/-/claude-nats-channel-0.5.0.tgz","fileCount":10,"integrity":"sha512-+6rN3K4KFvRzzAwdPvSJ03uFzbXsqRfKAYMfvrfRlIG+1wXevdtcbcFwDwx8FA1tZL9OTBXOYWxRZAHyrR2+FA==","signatures":[{"sig":"MEYCIQCk9eyOg/Rwl+CLIikR9MyqL9PoLEv/PRPLZV2xnKwpKQIhAOmt++2fXVCl+T+DMiX24NX33bLZ2oF6pyO6NWuVGTfN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107370},"type":"module","gitHead":"ce460a3de118410a68b6827a7328e577b57dda71","scripts":{"build":"true","start":"bun install --no-summary && bun server.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"claude-nats-channel"},"_npmVersion":"11.12.1","description":"NATS channel bridge for Claude Code — exposes a Claude Code session as a discoverable, spec-compliant Synadia Agent Protocol agent on agents.prompt.cc.<owner>.<session>.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.25 || ^4.0","@nats-io/kv":"3.4.0","@nats-io/obj":"3.4.0","@nats-io/services":"^3.4.0","@nats-io/jetstream":"3.4.0","@synadia-ai/agents":"^0.5.0","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.0","@modelcontextprotocol/sdk":"^1.0.0","@synadia-ai/agent-service":"^0.5.0","@agent-ops/sesh-channels-sdk":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-nats-channel_0.5.0_1779923047630_0.8435194967484942","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@agent-ops/claude-nats-channel","version":"0.6.0","author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/claude-nats-channel@0.6.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/claude-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"bin":{"claude-nats-channel":"server.ts"},"dist":{"shasum":"baba38b731b750af438b806329740d85fcb2a150","tarball":"https://registry.npmjs.org/@agent-ops/claude-nats-channel/-/claude-nats-channel-0.6.0.tgz","fileCount":10,"integrity":"sha512-dUL8eI5CSMmQm7A6j46hYQgFOsQkKbL2Cyt0bl/6cQHsLVcL1F07UUk5mEFjUa9HRDK4hTuF7oHAm2mfO1CVCA==","signatures":[{"sig":"MEYCIQDvazlTCV5nGvDQ/AKn7fB0OqRmYjk9+4dP+EFdMprGFwIhAKLuv+oWfU4wdtBmu0Ntzvfht6PTIcaf/zSosSqli6gJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103620},"type":"module","gitHead":"02f0f4573d4a08feac449e583b19d67e4c38dfb6","scripts":{"build":"true","start":"bun install --no-summary && bun server.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"claude-nats-channel"},"_npmVersion":"11.12.1","description":"NATS channel bridge for Claude Code — exposes a Claude Code session as a discoverable, spec-compliant Synadia Agent Protocol agent on agents.prompt.cc.<owner>.<session>.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.25 || ^4.0","@nats-io/kv":"3.4.0","@nats-io/obj":"3.4.0","@nats-io/services":"^3.4.0","@nats-io/jetstream":"3.4.0","@synadia-ai/agents":"^0.5.0","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.0","@modelcontextprotocol/sdk":"^1.0.0","@synadia-ai/agent-service":"^0.5.0","@agent-ops/sesh-channels-sdk":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-nats-channel_0.6.0_1780004973617_0.8998014966709245","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@agent-ops/claude-nats-channel","version":"0.6.1","author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/claude-nats-channel@0.6.1","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/claude-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"bin":{"claude-nats-channel":"server.ts"},"dist":{"shasum":"8ccd6167f2f2d3e13ebb3785b25976eff97d2a16","tarball":"https://registry.npmjs.org/@agent-ops/claude-nats-channel/-/claude-nats-channel-0.6.1.tgz","fileCount":10,"integrity":"sha512-C8Yy42Q2aKppx1FDfjI/4SukYifcff3mRMt0V1veKNedASkFgzxa1OIqJfa3ypM+nJVHQOE6+raPXvTVvFSY+Q==","signatures":[{"sig":"MEUCICvQHtegbXapPzUdFWBRoyYaZHxrP2hFn+Q3n55B6PDKAiEA5ObshJ58jNOjHj6mONMRWPa3NIpgvTb/o5oNK+ykQvE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104067},"type":"module","gitHead":"fa429ea99447140d87e7795c1246e80faf47b219","scripts":{"build":"true","start":"bun install --no-summary && bun server.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"claude-nats-channel"},"_npmVersion":"10.9.8","description":"NATS channel bridge for Claude Code — exposes a Claude Code session as a discoverable, spec-compliant Synadia Agent Protocol agent on agents.prompt.<machine>.<project>.<session>.<role>.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25 || ^4.0","@nats-io/kv":"3.4.0","@nats-io/obj":"3.4.0","@nats-io/services":"^3.4.0","@nats-io/jetstream":"3.4.0","@synadia-ai/agents":"^0.5.0","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.0","@modelcontextprotocol/sdk":"^1.0.0","@synadia-ai/agent-service":"^0.5.0","@agent-ops/sesh-channels-sdk":"^0.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-nats-channel_0.6.1_1780009550332_0.18617086054283294","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@agent-ops/claude-nats-channel","version":"0.6.2","author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/claude-nats-channel@0.6.2","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/claude-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"bin":{"claude-nats-channel":"server.ts"},"dist":{"shasum":"fcc705ea4bc890d88be17e829338c86dc7ccfb28","tarball":"https://registry.npmjs.org/@agent-ops/claude-nats-channel/-/claude-nats-channel-0.6.2.tgz","fileCount":10,"integrity":"sha512-Z+zMIxs54oMQ/NWymR79tqWDFcH3ORh1YZTfEhzOcHU6uakWihsP3Ha2vW2LEB3zbN62Vql5hdo/ZMoimsvIJg==","signatures":[{"sig":"MEUCIEPVSLFt9GryQTzWp+arSMGEPB84p3pHuGUjh0HPRVINAiEAopmz3/gRTDR/D+kT2uReN8gUzuTtGhnS2vKkfd5X9NM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104032},"type":"module","gitHead":"25f05420a1928f3f4e81616872b9ca36df321127","scripts":{"build":"true","start":"bun install --no-summary && bun server.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"claude-nats-channel"},"_npmVersion":"10.9.8","description":"NATS channel bridge for Claude Code — exposes a Claude Code session as a discoverable, spec-compliant Synadia Agent Protocol agent on agents.prompt.<machine>.<project>.<session>.<role>.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25 || ^4.0","@nats-io/kv":"3.4.0","@nats-io/obj":"3.4.0","@nats-io/services":"^3.4.0","@nats-io/jetstream":"3.4.0","@synadia-ai/agents":"^0.5.0","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.0","@modelcontextprotocol/sdk":"^1.0.0","@synadia-ai/agent-service":"^0.5.0","@agent-ops/sesh-channels-sdk":"^0.6.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-nats-channel_0.6.2_1780056485208_0.4905193427351662","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@agent-ops/claude-nats-channel","version":"0.6.3","author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/claude-nats-channel@0.6.3","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/claude-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"bin":{"claude-nats-channel":"server.ts"},"dist":{"shasum":"e4c8e5c4cfdbdf8d6a23b3e7313a19c0d4624db1","tarball":"https://registry.npmjs.org/@agent-ops/claude-nats-channel/-/claude-nats-channel-0.6.3.tgz","fileCount":11,"integrity":"sha512-g1KIssZwDcaRB0KoiwRfDG8nQ0eOCB8JknvkoNAfeYrG4ZPatTJ/rY6tQuGRsF1n9tknB/iSHUX4EhkLc3Mekg==","signatures":[{"sig":"MEUCIQCtVYLvNLJYYVi4K98M41ge9Osu0ELs9zJ27xyrph6vSAIgKO8bykdzrBVusmL9wY+ifpHfjDYbCm9+v6Yg4reJOuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113355},"type":"module","gitHead":"216dab50b303706b1ec28f29d139e6d3f97c965c","scripts":{"build":"true","start":"bun install --no-summary && bun server.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"claude-nats-channel"},"_npmVersion":"10.9.8","description":"NATS channel bridge for Claude Code — exposes a Claude Code session as a discoverable, spec-compliant Synadia Agent Protocol agent on agents.prompt.<machine>.<project>.<session>.<role>.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25 || ^4.0","@nats-io/kv":"3.4.0","@nats-io/obj":"3.4.0","@nats-io/services":"^3.4.0","@nats-io/jetstream":"3.4.0","@synadia-ai/agents":"^0.5.0","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.0","@modelcontextprotocol/sdk":"^1.0.0","@synadia-ai/agent-service":"^0.5.0","@agent-ops/sesh-channels-sdk":"^0.6.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-nats-channel_0.6.3_1780190176851_0.13719194567037385","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@agent-ops/claude-nats-channel","version":"0.7.0","author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/claude-nats-channel@0.7.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/claude-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"bin":{"claude-nats-channel":"server.ts"},"dist":{"shasum":"896ec476827064d3b3b644348d52dba843cd2790","tarball":"https://registry.npmjs.org/@agent-ops/claude-nats-channel/-/claude-nats-channel-0.7.0.tgz","fileCount":11,"integrity":"sha512-IEyfI47ecZ3CfQvloD639lXQRDDd2Z8n0qXycD+yj3gcnd5Ed5mqtvLa0woI3kvcShg5EoIhSUvwmRffxKRoJw==","signatures":[{"sig":"MEYCIQDElGgsc7TYnoWoYH8kdNzy1ZT5+BjbBRcoKMoDo5wsDQIhAOR+9hIH6iyuTtNo9fMQ4CZWdxR6TWkiYc2Nxhc2UMXb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113429},"type":"module","gitHead":"bede47b7865f186355403cd4a8ed7da239e57172","scripts":{"build":"true","start":"bun install --no-summary && bun server.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"claude-nats-channel"},"_npmVersion":"10.9.8","description":"NATS channel bridge for Claude Code — exposes a Claude Code session as a discoverable, spec-compliant Synadia Agent Protocol agent on agents.prompt.<machine>.<project>.<session>.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25 || ^4.0","@nats-io/kv":"3.4.0","@nats-io/obj":"3.4.0","@nats-io/services":"^3.4.0","@nats-io/jetstream":"3.4.0","@synadia-ai/agents":"^0.5.0","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.0","@modelcontextprotocol/sdk":"^1.0.0","@synadia-ai/agent-service":"^0.5.0","@agent-ops/sesh-channels-sdk":"^0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-nats-channel_0.7.0_1780491841843_0.26156560997907685","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@agent-ops/claude-nats-channel","version":"0.8.0","description":"NATS channel bridge for Claude Code — exposes a Claude Code session as a discoverable, spec-compliant Synadia Agent Protocol agent on agents.prompt.<machine>.<project>.<session>.","author":{"name":"Dan Mestas"},"license":"Apache-2.0","type":"module","bin":{"claude-nats-channel":"server.ts"},"scripts":{"start":"bun install --no-summary && bun server.ts","build":"true"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/danmestas/sesh-channels.git","directory":"claude-nats-channel"},"homepage":"https://github.com/danmestas/sesh-channels/tree/main/claude-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"dependencies":{"@agent-ops/sesh-channels":"^0.1.0","@modelcontextprotocol/sdk":"^1.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/obj":"3.4.0","@nats-io/transport-node":"^3.4.0","@nats-io/services":"^3.4.0","@agent-ops/sesh-channels-sdk":"^0.8.0","@synadia-ai/agents":"^0.5.0","@synadia-ai/agent-service":"^0.5.0","zod":"^3.25 || ^4.0"},"devDependencies":{"@types/node":"^25.6.0"},"_id":"@agent-ops/claude-nats-channel@0.8.0","gitHead":"55eb88a73a01dd47cddf2216cfad00bf4c2daf53","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-9S/Ixl1pXumWN7fnNfmlNgYtbWXUItLHTkr6hOG54XoBfkq4wBX49cTeGFwi/Q9EDUn9OL4ebTGTT0CaInzDzg==","shasum":"fa2888cb4115b805df001ef7ffd4e9aec1e4d63d","tarball":"https://registry.npmjs.org/@agent-ops/claude-nats-channel/-/claude-nats-channel-0.8.0.tgz","fileCount":11,"unpackedSize":118182,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEMRfyPM32rrEva2wuuf7X7NLZ0eCtuPv3Ix5NC0iUriAiBdQhfKDy13jUV+PSZxZYeSBqJ2PrJ3FNb1V2m/SHpidA=="}]},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"directories":{},"maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-nats-channel_0.8.0_1780541841347_0.34334182469069674"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-24T00:44:11.245Z","modified":"2026-06-04T02:57:21.651Z","0.0.1":"2026-05-24T00:44:11.487Z","0.4.0":"2026-05-26T12:18:24.213Z","0.4.1":"2026-05-26T12:29:49.675Z","0.5.0":"2026-05-27T23:04:07.877Z","0.6.0":"2026-05-28T21:49:33.769Z","0.6.1":"2026-05-28T23:05:50.462Z","0.6.2":"2026-05-29T12:08:05.356Z","0.6.3":"2026-05-31T01:16:17.038Z","0.7.0":"2026-06-03T13:04:01.985Z","0.8.0":"2026-06-04T02:57:21.508Z"},"bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"author":{"name":"Dan Mestas"},"license":"Apache-2.0","homepage":"https://github.com/danmestas/sesh-channels/tree/main/claude-nats-channel","repository":{"type":"git","url":"git+https://github.com/danmestas/sesh-channels.git","directory":"claude-nats-channel"},"description":"NATS channel bridge for Claude Code — exposes a Claude Code session as a discoverable, spec-compliant Synadia Agent Protocol agent on agents.prompt.<machine>.<project>.<session>.","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"readme":"# NATS Channel for Claude Code\n\nConnect Claude Code to NATS messaging as a spec-compliant\n[Synadia Agent Protocol for NATS](https://github.com/synadia-ai/synadia-agent-sdk-docs) agent.\n\nThe MCP server registers an `agents` micro service, exposes a\n`prompt` endpoint at `agents.prompt.<machine>.<project>.<session>`, a `status`\nendpoint at `agents.status.<machine>.<project>.<session>` (replies with the same\npayload as a heartbeat), publishes heartbeats at\n`agents.hb.<machine>.<project>.<session>` (the verb is the abbreviation `hb`),\nand bridges prompt requests into the Claude Code session.\nHarness identity (`claude-code`) lives in the service metadata (`agent` key),\nnot in the subject.\nReplies stream back as typed JSON chunks\n(`{\"type\":\"response\",\"data\":\"...\"}`) terminated by an empty headerless\nmessage - the protocol's uniform end-of-stream signal.\n\n## Prerequisites\n\n- [Bun](https://bun.sh) - the MCP server runs on Bun. Install with `curl -fsSL https://bun.sh/install | bash`, and make sure `bun` is on your `PATH`.\n- [NATS CLI](https://github.com/nats-io/natscli) - for managing contexts and testing.\n- A NATS server to connect to (local or remote) - the plugin defaults to `demo.nats.io`.\n\n## Quick Setup\n\n**1. Add the marketplace.**\n\nThese are Claude Code commands - run `claude` to start a session first.\n\n```\n/plugin marketplace add synadia-ai/synadia-agents\n```\n\n**2. Install the plugin.**\n\n```\n/plugin install nats-channel@synadia-plugins\n```\n\n**3. Launch with the channel flag.**\n\n```sh\nclaude --dangerously-load-development-channels plugin:nats-channel@synadia-plugins\n```\n\nBy default, the server connects to `demo.nats.io` (no credentials required)\nand registers a micro service on `agents.prompt.<machine>.<project>.<session>`,\nwhere `<session>` defaults to the working directory name.\n\n**4. (Optional) Configure the channel.**\n\nThe `/nats-channel:configure` skill manages connection, session naming,\nand permissions. All state lives in `~/.claude/channels/nats/config.json`.\n\n| Command | Description |\n| --- | --- |\n| `/nats-channel:configure` | Show current config, list available contexts, and offer to switch |\n| `/nats-channel:configure list` | List available NATS CLI contexts |\n| `/nats-channel:configure <context-name>` | Select a NATS CLI context to connect to |\n| `/nats-channel:configure session <name>` | Override the session name (the `<session>` token in `agents.prompt.<machine>.<project>.<session>`) |\n| `/nats-channel:configure session clear` | Remove session name override, revert to CWD basename |\n| `/nats-channel:configure permissions terminal` | Prompt for permissions in the terminal (default) |\n| `/nats-channel:configure permissions query` | Relay permission prompts as protocol query chunks |\n| `/nats-channel:configure permissions clear` | Reset permissions to default |\n| `/nats-channel:configure clear` | Remove all configuration |\n\nTo connect to your own NATS server, use a NATS CLI context. List your contexts\nwith `nats context ls`, then:\n\n```\n/nats-channel:configure <context-name>\n```\n\nThis writes the selected context to `~/.claude/channels/nats/config.json`.\nThe server reads connection details (URL, credentials) from\n`~/.config/nats/context/<name>.json`.\n\n**5. Send a prompt.**\n\nWith the [`@synadia-ai/agents`](../../client-sdk/typescript)\nTypeScript SDK:\n\n```ts\nimport { connect } from \"@nats-io/transport-node\";\nimport { Agents } from \"@synadia-ai/agents\";\n\nconst nc = await connect({ servers: \"nats://localhost:4222\" });\nconst agents = new Agents({ nc });\nconst [agent] = await agents.discover();\nfor await (const msg of await agent!.prompt(\"hello Claude\")) {\n  if (msg.type === \"response\") process.stdout.write(msg.text);\n}\nawait agents.close();\nawait nc.close();\n```\n\nOr directly via the NATS CLI (plain-text shorthand per spec §5.1):\n\n```sh\nnats req agents.prompt.<machine>.<project>.<session> \"Hello Claude\" \\\n  --replies=0 --reply-timeout=30s --timeout=90s\n```\n\nClaude's response streams back as typed JSON chunks on the reply subject;\nan empty headerless message signals completion.\n\n## Launching claude-code with the channel enabled\n\nIf you launch Claude Code via `/plugin install` (Quick Setup steps 1-3), the\nplugin marketplace pre-registers `nats-channel` as an approved channel and\nthe inbound notification path \"just works\".\n\nIf you launch Claude Code directly with `--mcp-config` pointing at this\nserver's config (e.g., in containerized / CI environments), you must\n*also* pass one of:\n\n- `--channels <server-name>` — production mode; requires claude.ai\n  authentication and the channel name to be on your org's\n  `allowedChannelPlugins` allowlist (managed settings).\n- `--dangerously-load-development-channels <server-name>` — local-dev\n  mode; shows a one-time confirmation dialog at startup.\n\n`<server-name>` is the key under `mcpServers` in your `--mcp-config`\nfile (e.g., `nats` for the standard installation).\n\nWithout either flag, the channel's MCP `notifications/claude/channel`\nnotifications are silently dropped by Claude Code's channel gate, and\nthe model never starts a turn in response to an inbound NATS prompt —\nthe channel still emits its §6.4 ack chunks, so callers see acks but no\nresponse, until they time out.\n\nThis requirement is enforced inside the claude-code binary at the\n`tengu_mcp_channel_gate` telemetry boundary; the MCP server's\n`experimental.claude/channel` capability handshake (declared in\n`server.ts:586-589`) is necessary but not sufficient.\n\n## v0.4 (A2A parity) advertisement\n\nThe channel advertises v0.4 capabilities via service metadata\n(`sesh.protocol_version: \"0.4\"`, `sesh.v04_capabilities:\n\"messages,artifacts,cards\"`) and registers these NATS micro endpoints, all\nkeyed on the clean machine-rooted scheme\n(`agents.<verb>.<machine>.<project>.<session>`):\n\n- `agents.prompt.<machine>.<project>.<session>` — accepts an A2A\n  Message envelope, drives Claude via the same MCP pipeline, and (when\n  JetStream KV / Object Store buckets exist) durably appends Messages and\n  publishes per-task stream events on `agents.task.stream.*`.\n- `agents.card.<machine>.<session>.<name>` — public L3 AgentCard\n  partial.\n- `agents.cardx.<machine>.<session>.<name>` — auth-gated L3\n  AgentCard partial (the same payload — claude-nats-channel does not\n  distinguish scope today; the shim re-applies access control upstream).\n\nThe clean v0.4 subject scheme is the only scheme: subjects are machine-rooted\n(`agents.prompt.<machine>.<project>.<session>`) and harness identity\nlives in service metadata (`agent` key), never in the subject.\n\nKV/Object-Store wiring is best-effort: when buckets are not provisioned\n(e.g. running against `demo.nats.io`), the v2 handler still replies on\nthe inbox; only the durable Message/Artifact writes are skipped, with a\nsingle startup log line per missing surface.\n\n## Protocol compliance\n\nThis plugin implements the **Synadia Agent Protocol for NATS v0.3** end-to-end:\n\n- Registers as an `agents` NATS micro service (§3.1 - the bare subject-safe\n  token).\n- Service metadata includes `agent`, `owner`, `session`, and\n  `protocol_version: \"0.3\"` (§3.2).\n- `prompt` endpoint declares the server-negotiated `max_payload` (read\n  from `nc.info.max_payload` at startup and formatted into the §2.1\n  `\\d+(B|KB|MB|GB)` grammar — `1MB` against a default `nats-server`,\n  larger if the operator bumped `--max_payload`), `attachments_ok:\n  \"true\"` (§2.1), and queue group `\"agents\"` (§3.3).\n- Accepts both plain-text shorthand and JSON envelopes with optional\n  base64-encoded attachments (§5.1, §5.2, §5.3). Inbound attachments\n  are staged to a per-request temp directory and exposed to Claude via\n  file paths.\n- Rejects malformed envelopes, empty payloads, oversize requests, and\n  invalid base64 with `Nats-Service-Error-Code: 400` (§9).\n- Emits typed response chunks `{\"type\":\"response\",\"data\":\"...\"}`\n  (§6.3) terminated by an empty headerless message (§6.5). Large\n  responses are split into multiple UTF-8-safe chunks that each fit\n  under `max_payload`.\n- Publishes periodic `{\"type\":\"status\",\"data\":\"ack\"}` keep-alives (§6.4)\n  every 30 s while a request is open, resetting the caller's 60-second\n  inactivity timeout.\n- Publishes heartbeats at `agents.hb.<machine>.<project>.<session>` (§8.1) every 5 s with the full\n  §8.3 payload including `instance_id` (§8).\n- Relays Claude Code permission prompts as mid-stream `query` chunks\n  (§7) when `permissions.mode = query`.\n\nThe caller-side SDK at\n[`client-sdk/typescript/`](../../client-sdk/typescript) is the\ncanonical counterpart.\n\n## Session names\n\nThe micro service prompt subject is `agents.prompt.<machine>.<project>.<session>` (clean v0.4 scheme; identity lives in metadata, not the subject). Heartbeats go to `agents.hb.<machine>.<project>.<session>` and the status endpoint replies on `agents.status.<machine>.<project>.<session>`.\n\nThe `<project>` token is the **40-char lowercase-hex `SESH_PROJECT_ID` pin** when set (the canonical, collision-resistant project key; `sesh up` / sesh ≥ v0.6.0 inject it). When the pin is absent — e.g. launched outside `sesh up` — it falls back to the sanitized `SESH_PROJECT` slug. A pin set to a malformed value fails loudly at startup rather than silently misdelivering. The human-readable slug is display metadata; resolve a peer's subject via `nats__resolve` rather than hand-building it from the slug.\n\nThe `<session>` token resolves as:\n\n- **Default:** sanitized basename of the working directory (e.g., `my-project`)\n- **Override:** set `NATS_SESSION_NAME` env var, or use `/nats-channel:configure session <name>`\n- **Multiple sessions:** if the default name is already taken by another\n  claude-code instance owned by the same user, the plugin auto-appends\n  `-2`, `-3`, etc.\n\nDiscover running sessions via the protocol's discovery subjects:\n\n```sh\nnats req '$SRV.INFO.agents' '' --replies=0 --timeout=2s\nnats req '$SRV.PING.agents' '' --replies=0 --timeout=2s\n```\n\nOr via the NATS Micro CLI:\n\n```sh\nnats micro ls\nnats micro info agents\n```\n\n### Strict mode\n\n`NATS_CHANNEL_STRICT=1` makes the channel refuse to auto-suffix on\n`(agent, owner, name)` collision. By default (env var unset), a second\ninstance trying to register the same triple as a live one auto-renames to\n`<name>-2`, `<name>-3`, etc. — useful for multiple parallel sessions, but\nproblematic when a misconfiguration accidentally spawns a duplicate (the\nphantom is silent rather than loud).\n\nUse strict mode when:\n\n- You're running claude-nats-channel in a containerized or unattended\n  environment where a phantom duplicate registration should be a loud\n  failure (exit code 2).\n- You've co-located claude-code with Oh My Pi, and OMP's\n  `mcp.discoveryMode: true` may autoload claude's `.mcp.json` — strict\n  mode catches the resulting double-spawn before the bus sees a phantom\n  `<name>-2` instance.\n\nTo opt back out (re-enable auto-suffixing), unset the env var or set\n`NATS_CHANNEL_STRICT=0`.\n\n## Tools exposed to the assistant\n\n| Tool | Purpose |\n| --- | --- |\n| `reply` | Send a response over NATS. Takes `request_id` + `text`. The server wraps the text in a `{\"type\":\"response\",\"data\":...}` chunk. Set `done=false` for intermediate replies; `done=true` (default) emits the empty-body terminator. |\n\n## Permissions\n\nWhen Claude Code needs permission to run a tool, the plugin can either\nprompt in the terminal (default) or relay the request as a protocol\nquery chunk on the active NATS stream. This is controlled by the\n`permissions` config.\n\n### Terminal mode (default)\n\nPermission prompts appear directly in the Claude Code terminal. No extra\nconfiguration needed.\n\n### Query mode\n\nPermission requests are emitted as `{\"type\":\"query\",\"data\":{...}}`\nchunks on the active stream's reply subject (spec §7). The caller\nreplies on the query's dynamic `_INBOX` with `yes`/`no`, and the plugin\nforwards the decision back to the harness.\n\n```\n/nats-channel:configure permissions query\n```\n\nTo switch back to terminal mode:\n\n```\n/nats-channel:configure permissions terminal\n```\n\nThe legacy value `\"nats\"` is still accepted as an alias for `\"query\"` so\nold configs keep working. The older `permissions.subject` override field\nhas been removed - query chunks always use a fresh NATS inbox per\nrequest.\n\nIf Claude asks for permission while no NATS request is active (for\nexample from direct terminal input), the plugin denies by default in\n`query` mode; use `permissions terminal` instead if you want interactive\napproval in that case.\n\n### Handling permission queries with the SDK\n\n```ts\nfor await (const msg of await remote.prompt(\"rm -rf /tmp/stale\")) {\n  if (msg.type === \"query\") {\n    await msg.reply(\"yes\");  // or \"no\"\n  }\n  if (msg.type === \"response\") {\n    process.stdout.write(msg.text);\n  }\n}\n```\n\nOr with the NATS CLI, by publishing to the `reply_subject` from the\nquery chunk:\n\n```sh\nnats pub _INBOX.Xj7k9Q2pA \"yes\"\n```\n\nIf no reply is received within 2 minutes, the permission defaults to\n**deny**.\n\n## Access control\n\nNATS server authentication and authorization handle access control. If a\nuser can connect and publish to `agents.prompt.<machine>.<project>.<session>`, they can\ninteract with Claude. No additional pairing or allowlist is needed.\n\n## Anthropic auth\n\nSet `ANTHROPIC_API_KEY` in your environment before launching `claude`.\nClaude Code uses the env var in preference to any `~/.claude/`\ncredentials, so logging out is unnecessary.\n\nBedrock / Vertex / Azure deployments work too — set the standard\nprovider env vars before launching `claude` and Claude Code will use\nthose instead.\n\n## Configuration\n\nState lives in `~/.claude/channels/nats/`:\n\n| File | Purpose |\n| --- | --- |\n| `config.json` | Selected NATS context, session name override, and permission settings |\n| `attachments/<request_id>/` | Per-request staged attachments; auto-cleaned on reply completion |\n\nNATS CLI contexts live in `~/.config/nats/context/<name>.json`.\n\n### config.json\n\n```json\n{\n  \"context\": \"my-context\",\n  \"sessionName\": \"my-session\",\n  \"permissions\": {\n    \"mode\": \"query\"\n  }\n}\n```\n\n| Field | Default | Description |\n| --- | --- | --- |\n| `context` | *(none - uses demo.nats.io)* | NATS CLI context name |\n| `sessionName` | CWD basename | Override the session name |\n| `permissions.mode` | `terminal` | `terminal` or `query` (`nats` accepted as legacy alias for `query`) |\n\n### Environment variables\n\n| Variable | Overrides | Default |\n| --- | --- | --- |\n| `NATS_SESSION_NAME` | Session name (the `<session>` token in `agents.prompt.<machine>.<project>.<session>`) | sanitized basename of `$CLAUDE_CWD` |\n| `NATS_STATE_DIR` | State directory location | `~/.claude/channels/nats` |\n| `NATS_CHANNEL_STRICT` | When `1`, refuse to auto-suffix on `(agent, owner, name)` collision (exit 2). See [Strict mode](#strict-mode). | unset (auto-suffix) |\n| `SESH_ROLE` | Free-form role token (`^[a-z0-9_-]+$`, 1–63 chars). Identifies the function this agent plays in the swarm — e.g. `implementer`, `verifier`, `spy`. Surfaced as `metadata.role` on the NATS Micro service and as `role` in sesh's session manifest. | `worker` |\n| `SESH_CLASS` | One of `active` or `observer`. Coordination-subject routing keys on this: `active` agents subscribe to `workers.*`, `observer` agents subscribe to `spies.*`. | `active` |\n","readmeFilename":"README.md"}