{"_id":"@agent-ops/grok-nats-channel","_rev":"9-63c7c9fd9ef29811535f2bc68dbbc41f","name":"@agent-ops/grok-nats-channel","dist-tags":{"latest":"0.8.0"},"versions":{"0.4.0":{"name":"@agent-ops/grok-nats-channel","version":"0.4.0","author":{"url":"adapted for xAI Grok","name":"Synadia Communications"},"license":"Apache-2.0","_id":"@agent-ops/grok-nats-channel@0.4.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/dmestas/grok-nats-channel#readme","bugs":{"url":"https://github.com/dmestas/grok-nats-channel/issues"},"bin":{"grok-nats-channel":"server.ts"},"dist":{"shasum":"c66a6f6ebee571d90ae886fe31a477a2917a8614","tarball":"https://registry.npmjs.org/@agent-ops/grok-nats-channel/-/grok-nats-channel-0.4.0.tgz","fileCount":18,"integrity":"sha512-w3uCfGA8HhYpvDrII2gQjilEVAWxp/VurjKkpvpNt0ptoylH43A0FXgYENhZh4btRxVBRqIusJjRElEwhNHYRA==","signatures":[{"sig":"MEQCIHcZ2rk+f0gZ+GZMFCQc3wvM9WVu2AS3YwL+NyRR9mvAAiB6SOco0NH1vliwol/ziDIw1JlsyyCSTaPhk2NTb6vWYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148560},"type":"module","gitHead":"fb734eac7df086e21e36b3e62faf4a7014d2b5ee","scripts":{"test":"echo 'To run roundtrip interop tests: ensure nats-server listening on $NATS_URL (default localhost:4222), then: bun scripts/roundtrip-test.ts'","start":"bun install --no-summary && bun server.ts","test:roundtrip":"bun scripts/roundtrip-test.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/dmestas/grok-nats-channel.git","type":"git"},"_npmVersion":"11.12.1","description":"Synadia Agent Protocol for NATS channel for Grok. Exposes a Grok session as a discoverable, spec-compliant agent on NATS via an MCP server.","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.1","@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/grok-nats-channel_0.4.0_1779797917239_0.2025195586677615","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@agent-ops/grok-nats-channel","version":"0.4.1","author":{"url":"adapted for xAI Grok","name":"Synadia Communications"},"license":"Apache-2.0","_id":"@agent-ops/grok-nats-channel@0.4.1","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/dmestas/grok-nats-channel#readme","bugs":{"url":"https://github.com/dmestas/grok-nats-channel/issues"},"bin":{"grok-nats-channel":"server.ts"},"dist":{"shasum":"242c6e9aba2fea29135b13e1b8133e0e87133273","tarball":"https://registry.npmjs.org/@agent-ops/grok-nats-channel/-/grok-nats-channel-0.4.1.tgz","fileCount":18,"integrity":"sha512-2IGfbnBk5Ezv0NkWzlDqdkEzcDsP6DCuTq0mvFmKsX0AHgivJiRO1OmqoI31Kutqa4m/YyAuspwpFv6mJvu2Fw==","signatures":[{"sig":"MEUCIH6rFWyfUxqPR9+wSEKlMHXC/9zCGAfP+7da0RSCM+5ZAiEAv2lCxX2WqQu58nqdXPhriL+F+4yy7QHP1nMkoNgM+IM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148595},"type":"module","gitHead":"fb734eac7df086e21e36b3e62faf4a7014d2b5ee","scripts":{"test":"echo 'To run roundtrip interop tests: ensure nats-server listening on $NATS_URL (default localhost:4222), then: bun scripts/roundtrip-test.ts'","start":"bun install --no-summary && bun server.ts","test:roundtrip":"bun scripts/roundtrip-test.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/dmestas/grok-nats-channel.git","type":"git"},"_npmVersion":"11.12.1","description":"Synadia Agent Protocol for NATS channel for Grok. Exposes a Grok session as a discoverable, spec-compliant agent on NATS via an MCP server.","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.1","@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/grok-nats-channel_0.4.1_1779798594793_0.9636954443215344","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@agent-ops/grok-nats-channel","version":"0.5.0","author":{"url":"adapted for xAI Grok","name":"Synadia Communications"},"license":"Apache-2.0","_id":"@agent-ops/grok-nats-channel@0.5.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/dmestas/grok-nats-channel#readme","bugs":{"url":"https://github.com/dmestas/grok-nats-channel/issues"},"bin":{"grok-nats-channel":"server.ts"},"dist":{"shasum":"9a6cf0fe379d0b6861fafc35087b09d0dcefa8fb","tarball":"https://registry.npmjs.org/@agent-ops/grok-nats-channel/-/grok-nats-channel-0.5.0.tgz","fileCount":18,"integrity":"sha512-qxwQtqdiXIxgYWock1/LKgXLSWvUZtubSPiyez0wokN+cyPK9hTG7iWP/prPQao/IKUgghs2QiMnSwMnceYWMw==","signatures":[{"sig":"MEUCIQDoktSW3vY/o7NEtFvo71fMLsN/Wy/wI1UOB9FjHjTnqwIgIPlVhKon+M8Y8GF6SCUn8zB70qsMRQvPHk+D3F9+Sk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148550},"type":"module","gitHead":"ce460a3de118410a68b6827a7328e577b57dda71","scripts":{"test":"echo 'To run roundtrip interop tests: ensure nats-server listening on $NATS_URL (default localhost:4222), then: bun scripts/roundtrip-test.ts'","start":"bun install --no-summary && bun server.ts","test:roundtrip":"bun scripts/roundtrip-test.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/dmestas/grok-nats-channel.git","type":"git"},"_npmVersion":"11.12.1","description":"Synadia Agent Protocol for NATS channel for Grok. Exposes a Grok session as a discoverable, spec-compliant agent on NATS via an MCP server.","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.1","@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/grok-nats-channel_0.5.0_1779923049953_0.3416413450263389","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@agent-ops/grok-nats-channel","version":"0.6.0","author":{"url":"adapted for xAI Grok","name":"Synadia Communications"},"license":"Apache-2.0","_id":"@agent-ops/grok-nats-channel@0.6.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/dmestas/grok-nats-channel#readme","bugs":{"url":"https://github.com/dmestas/grok-nats-channel/issues"},"bin":{"grok-nats-channel":"server.ts"},"dist":{"shasum":"aeddf597fed4264c0de55a75da62d572d8abc6b0","tarball":"https://registry.npmjs.org/@agent-ops/grok-nats-channel/-/grok-nats-channel-0.6.0.tgz","fileCount":18,"integrity":"sha512-5yMYg+BQvsHmSjiC7lcFgY/WIs7MBBsoIsdN+4C7iZcu1HtHuOwQrxuoDs1rEWgCIeqW8UYtnBiWTdgKAyMjkA==","signatures":[{"sig":"MEYCIQDj44n8dFgpm5S5/qOxF36D3SqeErl8YXaeERSngglLVgIhALKDicYzP8x/rXJiJBzaHGJXtz4ppKLKHvMKbzQS+cy2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143576},"type":"module","gitHead":"02f0f4573d4a08feac449e583b19d67e4c38dfb6","scripts":{"test":"echo 'To run roundtrip interop tests: ensure nats-server listening on $NATS_URL (default localhost:4222), then: bun scripts/roundtrip-test.ts'","start":"bun install --no-summary && bun server.ts","test:roundtrip":"bun scripts/roundtrip-test.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/dmestas/grok-nats-channel.git","type":"git"},"_npmVersion":"11.12.1","description":"Synadia Agent Protocol for NATS channel for Grok. Exposes a Grok session as a discoverable, spec-compliant agent on NATS via an MCP server.","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.1","@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/grok-nats-channel_0.6.0_1780004976120_0.79717527444358","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@agent-ops/grok-nats-channel","version":"0.6.1","author":{"url":"adapted for xAI Grok","name":"Synadia Communications"},"license":"Apache-2.0","_id":"@agent-ops/grok-nats-channel@0.6.1","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/dmestas/grok-nats-channel#readme","bugs":{"url":"https://github.com/dmestas/grok-nats-channel/issues"},"bin":{"grok-nats-channel":"server.ts"},"dist":{"shasum":"99a58308fa76ebee384e04d5096f89dfc8702f58","tarball":"https://registry.npmjs.org/@agent-ops/grok-nats-channel/-/grok-nats-channel-0.6.1.tgz","fileCount":18,"integrity":"sha512-Db7OzNd2RibZSj7slZf+VsygXKBQfGgqs9WDYPdsGONpTwawj9kyVXTygSe5EwtragarnPRre9sGZKshY68vDw==","signatures":[{"sig":"MEYCIQD+qZtvlfaAiyqLOdvm49vFPLA4JrNYa4rY1i9mP7nGZAIhAK4CDdeqx0/a4+j1+Q5e0ScsFKKcrVmMaH5L83B5c1Y0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143933},"type":"module","gitHead":"fa429ea99447140d87e7795c1246e80faf47b219","scripts":{"test":"echo 'To run roundtrip interop tests: ensure nats-server listening on $NATS_URL (default localhost:4222), then: bun scripts/roundtrip-test.ts'","start":"bun install --no-summary && bun server.ts","test:roundtrip":"bun scripts/roundtrip-test.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/dmestas/grok-nats-channel.git","type":"git"},"_npmVersion":"10.9.8","description":"Synadia Agent Protocol for NATS channel for Grok. Exposes a Grok session as a discoverable, spec-compliant agent on NATS via an MCP server.","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.1","@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/grok-nats-channel_0.6.1_1780009552887_0.4767209624843953","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@agent-ops/grok-nats-channel","version":"0.6.2","author":{"url":"adapted for xAI Grok","name":"Synadia Communications"},"license":"Apache-2.0","_id":"@agent-ops/grok-nats-channel@0.6.2","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/dmestas/grok-nats-channel#readme","bugs":{"url":"https://github.com/dmestas/grok-nats-channel/issues"},"bin":{"grok-nats-channel":"server.ts"},"dist":{"shasum":"9b002d6e73490df01bc148c6f447c4480dbb9c3e","tarball":"https://registry.npmjs.org/@agent-ops/grok-nats-channel/-/grok-nats-channel-0.6.2.tgz","fileCount":18,"integrity":"sha512-koHsVqz9fGAb3VUrxSgAriKW9bpoyLFbK9f3Mm1t4tD2S9cJONwf7CUOC7ZydW2biek5ZOQIkWojEMOUXGXpPQ==","signatures":[{"sig":"MEQCIA2eWek9ah5n73BRhRWJH30hF6VHeIN7CiNYAw0Ho+jtAiBvYKjnywMVbPNNarE0miNKzwvZZfA9V3ZsAhd6gGLg2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143816},"type":"module","gitHead":"25f05420a1928f3f4e81616872b9ca36df321127","scripts":{"test":"echo 'To run roundtrip interop tests: ensure nats-server listening on $NATS_URL (default localhost:4222), then: bun scripts/roundtrip-test.ts'","start":"bun install --no-summary && bun server.ts","test:roundtrip":"bun scripts/roundtrip-test.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/dmestas/grok-nats-channel.git","type":"git"},"_npmVersion":"10.9.8","description":"Synadia Agent Protocol for NATS channel for Grok. Exposes a Grok session as a discoverable, spec-compliant agent on NATS via an MCP server.","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.1","@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/grok-nats-channel_0.6.2_1780056487368_0.26441903199892014","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@agent-ops/grok-nats-channel","version":"0.6.3","author":{"url":"adapted for xAI Grok","name":"Synadia Communications"},"license":"Apache-2.0","_id":"@agent-ops/grok-nats-channel@0.6.3","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/dmestas/grok-nats-channel#readme","bugs":{"url":"https://github.com/dmestas/grok-nats-channel/issues"},"bin":{"grok-nats-channel":"server.ts"},"dist":{"shasum":"9a756c2db306c49948b6844dc133ac8a095d9c76","tarball":"https://registry.npmjs.org/@agent-ops/grok-nats-channel/-/grok-nats-channel-0.6.3.tgz","fileCount":18,"integrity":"sha512-TsQvmlXZnQLB1jml5vQwEJWsTWgOonlxi7Y9BXv/sXJMGXRPxkBZMZ2zUHjW+AZNVxnQYx9Qp/pdV1roXDDUtg==","signatures":[{"sig":"MEQCIAcOrYYWEBXMGCc2woWkSsiYibNpA3gie/akQpS5Y6ZBAiA+26kjsFcciItc0v/wJHpd18P6BXbedGDFH4dXdasIrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143816},"type":"module","gitHead":"216dab50b303706b1ec28f29d139e6d3f97c965c","scripts":{"test":"echo 'To run roundtrip interop tests: ensure nats-server listening on $NATS_URL (default localhost:4222), then: bun scripts/roundtrip-test.ts'","start":"bun install --no-summary && bun server.ts","test:roundtrip":"bun scripts/roundtrip-test.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/dmestas/grok-nats-channel.git","type":"git"},"_npmVersion":"10.9.8","description":"Synadia Agent Protocol for NATS channel for Grok. Exposes a Grok session as a discoverable, spec-compliant agent on NATS via an MCP server.","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.1","@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/grok-nats-channel_0.6.3_1780190179047_0.21094243310302518","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@agent-ops/grok-nats-channel","version":"0.7.0","author":{"url":"adapted for xAI Grok","name":"Synadia Communications"},"license":"Apache-2.0","_id":"@agent-ops/grok-nats-channel@0.7.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/dmestas/grok-nats-channel#readme","bugs":{"url":"https://github.com/dmestas/grok-nats-channel/issues"},"bin":{"grok-nats-channel":"server.ts"},"dist":{"shasum":"c9b40ad62d133df386e16c2ebdac45329d814bde","tarball":"https://registry.npmjs.org/@agent-ops/grok-nats-channel/-/grok-nats-channel-0.7.0.tgz","fileCount":18,"integrity":"sha512-snKUSJ6Ahq9GWx4OE+YBLx3oyKFvLXc87zJZg1KH94gDuYKpYTBSYzJwtu22w3TLdQ6pda5qIdENz1VaPEYZAg==","signatures":[{"sig":"MEUCIQDivtg83f7rEW984UAkL8aZq3z7sdqkw5aP3yt+oab8gQIgZNSHTxDShlMEcB6EQOlWV/+k2LBHPvErSXUQ0ISNIXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143532},"type":"module","gitHead":"bede47b7865f186355403cd4a8ed7da239e57172","scripts":{"test":"echo 'To run roundtrip interop tests: ensure nats-server listening on $NATS_URL (default localhost:4222), then: bun scripts/roundtrip-test.ts'","start":"bun install --no-summary && bun server.ts","test:roundtrip":"bun scripts/roundtrip-test.ts"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/dmestas/grok-nats-channel.git","type":"git"},"_npmVersion":"10.9.8","description":"Synadia Agent Protocol for NATS channel for Grok. Exposes a Grok session as a discoverable, spec-compliant agent on NATS via an MCP server.","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.1","@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/grok-nats-channel_0.7.0_1780491844425_0.7954537819207805","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@agent-ops/grok-nats-channel","version":"0.8.0","description":"Synadia Agent Protocol for NATS channel for Grok. Exposes a Grok session as a discoverable, spec-compliant agent on NATS via an MCP server.","author":{"name":"Synadia Communications","url":"adapted for xAI Grok"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/dmestas/grok-nats-channel.git"},"homepage":"https://github.com/dmestas/grok-nats-channel#readme","bugs":{"url":"https://github.com/dmestas/grok-nats-channel/issues"},"publishConfig":{"access":"public"},"type":"module","bin":{"grok-nats-channel":"server.ts"},"scripts":{"start":"bun install --no-summary && bun server.ts","test":"echo 'To run roundtrip interop tests: ensure nats-server listening on $NATS_URL (default localhost:4222), then: bun scripts/roundtrip-test.ts'","test:roundtrip":"bun scripts/roundtrip-test.ts"},"dependencies":{"@agent-ops/sesh-channels":"^0.1.1","@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/grok-nats-channel@0.8.0","gitHead":"55eb88a73a01dd47cddf2216cfad00bf4c2daf53","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-c5f43ZlUX8y8LGCRRCFIKW9Eop5NmyJkRCu0K9Gw1ErHfK/JamdFbdRyr5xzuxCdAt3AX/YLnvtcc8jfNnSGAg==","shasum":"353ca03d452f06981e1220d3cb2070d951f30965","tarball":"https://registry.npmjs.org/@agent-ops/grok-nats-channel/-/grok-nats-channel-0.8.0.tgz","fileCount":20,"unpackedSize":160845,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDAniSeJUFzOlP1GTH8h7fevybo5aaw3XQ89EIXkjhLFgIhAJJh8aZ75i74rxbb2P4OkYzg7UkiOI9EVibHcKJPZln1"}]},"_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/grok-nats-channel_0.8.0_1780541843386_0.8253176948700431"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-26T12:18:37.073Z","modified":"2026-06-04T02:57:23.639Z","0.4.0":"2026-05-26T12:18:37.396Z","0.4.1":"2026-05-26T12:29:54.969Z","0.5.0":"2026-05-27T23:04:10.094Z","0.6.0":"2026-05-28T21:49:36.284Z","0.6.1":"2026-05-28T23:05:53.059Z","0.6.2":"2026-05-29T12:08:07.579Z","0.6.3":"2026-05-31T01:16:19.178Z","0.7.0":"2026-06-03T13:04:04.602Z","0.8.0":"2026-06-04T02:57:23.522Z"},"bugs":{"url":"https://github.com/dmestas/grok-nats-channel/issues"},"author":{"name":"Synadia Communications","url":"adapted for xAI Grok"},"license":"Apache-2.0","homepage":"https://github.com/dmestas/grok-nats-channel#readme","repository":{"type":"git","url":"git+https://github.com/dmestas/grok-nats-channel.git"},"description":"Synadia Agent Protocol for NATS channel for Grok. Exposes a Grok session as a discoverable, spec-compliant agent on NATS via an MCP server.","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"readme":"# NATS Channel for Grok\n\nConnect Grok 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 Grok session.\nHarness identity (`grok`) 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\nThis is the Grok counterpart to the NATS Channel for Claude Code adapter\nin the Synadia Agents reference implementation.\n\n## Grok + sesh NATS\n\nUse this adapter to make your Grok sessions first-class, discoverable agents (`gr.<owner>.<name>`) on any NATS mesh — including for [sesh](https://github.com/synadia-ai/sesh) and other Synadia orchestration tools.\n\n**Typical flow with sesh:**\n\n1. Place the adapter at `~/projects/grok-nats-channel` (or your path).\n2. In a Grok TUI session: run `/grok-nats-channel:launcher enable`\n3. Then `/grok-nats-channel:configure` (pick NATS context or use demo; optionally set session name and `permissions query` for remote callers).\n4. Restart Grok — the MCP server starts and registers on NATS.\n5. In sesh (or `nats micro ls`): your `gr` agent appears. Route tasks to it; prompts arrive in Grok as:\n   ```xml\n   <channel source=\"nats\" request_id=\"...\" session=\"...\" ts=\"...\">\n   ...\n   </channel>\n   ```\n   Reply with the built-in `reply(request_id, text, done)` tool.\n6. (Future) When published under the `@agent-ops` npm scope as `@agent-ops/grok-nats-channel`, enable via `bunx` or Grok marketplace without a local clone.\n\nSee the [Quick Setup](#quick-setup) below, the launcher + configure skills, and \"Enabling in Grok\" section for details. Heartbeats, discovery, attachments, and query-permission chunks are all supported per the v0.3 protocol.\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. Activate the grok-nats-channel in your Grok session.**\n\nThe adapter is provided as a channel plugin for Grok. Enable it through\nyour Grok environment's marketplace or channel launcher for the Synadia\nNATS Agent Protocol (the server entrypoint is `server.ts` / `bun server.ts`).\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**2. (Optional) Configure the channel.**\n\nThe `/grok-nats-channel:configure` skill manages connection, session naming,\nand permissions. All state lives in `~/.grok/channels/nats/config.json`.\n\n| Command | Description |\n| --- | --- |\n| `/grok-nats-channel:configure` | Show current config, list available contexts, and offer to switch |\n| `/grok-nats-channel:configure list` | List available NATS CLI contexts |\n| `/grok-nats-channel:configure <context-name>` | Select a NATS CLI context to connect to |\n| `/grok-nats-channel:configure session <name>` | Override the session name (the `<session>` token in `agents.prompt.<machine>.<project>.<session>`) |\n| `/grok-nats-channel:configure session clear` | Remove session name override, revert to CWD basename |\n| `/grok-nats-channel:configure permissions terminal` | Prompt for permissions in the terminal (default) |\n| `/grok-nats-channel:configure permissions query` | Relay permission prompts as protocol query chunks |\n| `/grok-nats-channel:configure permissions clear` | Reset permissions to default |\n| `/grok-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/grok-nats-channel:configure <context-name>\n```\n\nThis writes the selected context to `~/.grok/channels/nats/config.json`.\nThe server reads connection details (URL, credentials) from\n`~/.config/nats/context/<name>.json`.\n\n**3. How NATS prompts appear to Grok (the `<channel>` notification)**\n\nWhen a prompt arrives over NATS, Grok receives it wrapped in a host-specific\nchannel notification:\n\n```xml\n<channel source=\"nats\" request_id=\"...\" session=\"...\" ts=\"...\">\n[optional attachments header + file paths]\nThe user's prompt text here...\n</channel>\n```\n\n- `source=\"nats\"` identifies the origin.\n- `request_id` is the opaque ID you must pass to the `reply` tool.\n- `session` is the resolved 5th subject token (`<name>`).\n- Attachments (if any) are staged to absolute paths on disk and listed at the top of the block so the model can `Read` them.\n\n**4. Reply using the `reply` tool**\n\nTo send a response back to the NATS caller, use the built-in `reply` tool:\n\n- Pass the `request_id` from the `<channel>` block.\n- `text`: the content to deliver (as a `{\"type\":\"response\",\"data\":...}` chunk).\n- `done`: set `false` for intermediate/streaming replies; `true` (default) emits the empty-body terminator that signals completion per the protocol.\n\nExample (conceptual):\n\n```\nreply(request_id=\"abc123\", text=\"Working on it...\", done=false)\nreply(request_id=\"abc123\", text=\"Here is the final answer.\", done=true)\n```\n\nThe server handles chunking for large payloads, status acks, and cleanup.\n\n**5. Send a prompt (from a client).**\n\nWith the [`@synadia-ai/agents`](https://github.com/synadia-ai/synadia-agent-sdk-docs) TypeScript 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 Grok\")) {\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 Grok\" \\\n  --replies=0 --reply-timeout=30s --timeout=90s\n```\n\nGrok's response streams back as typed JSON chunks on the reply subject;\nan empty headerless message signals completion.\n\n## Protocol compliance\n\nThis adapter implements the **Synadia Agent Protocol for NATS v0.3** end-to-end,\nand additively advertises the in-development **sesh v0.4** capability via\n`$SRV.INFO` metadata so the sesh shim can route v0.4 traffic (v2 envelopes,\nAgentCard L3 lookup) to this agent without disturbing the v0.3 wire.\n\nv0.4 surface (slice 6 of the v0.4 rollout — see\n[`docs/plans/2026-05-24-v0.4-sdk-and-adapters.md`](../docs/plans/2026-05-24-v0.4-sdk-and-adapters.md)):\n\n- Service metadata adds `sesh.protocol_version: \"0.4\"` and\n  `sesh.v04_capabilities: \"messages,artifacts,cards\"`. The v0.3\n  `protocol_version: \"0.3\"` key stays — third-party SDK probes continue to see\n  a v0.3-conformant agent.\n- Prompt endpoint at `agents.prompt.<machine>.<project>.<session>`\n  (queue group `agents-prompt`). Decodes the Message envelope and bridges\n  into the MCP notification pipeline; replies stream back as\n  `agents.task.stream.*` events on the consumer side.\n- AgentCard L3 registration at `agents.card.<machine>.<session>.<name>` —\n  returns a partial card with one representative skill (`grok.code`). The shim\n  signs and serves the merged L1+L2+L3 card over HTTPS.\n\nStreaming Artifacts / Messages KV writes are deferred to a follow-up — the v2\nhandler currently bridges into the same MCP pipeline as v0.3 and replies on\n`msg.reply` with v0.3-format chunks. The shim re-projects those chunks into v2\n`agents.task.stream.*` events on the consumer side.\n\nThe v0.3 wire below is unchanged.\n\n\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 Grok 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>` every 5 s with the full\n  §8.3 payload including `instance_id` (§8).\n- Relays Grok permission prompts as mid-stream `query` chunks\n  (§7) when `permissions.mode = query`.\n\nThe caller-side SDK at the Synadia Agents repository 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\n- **Default:** sanitized basename of the working directory (e.g., `my-project`)\n- **Canonical override:** set `SESH_SESSION` env var — the sesh contract; populated automatically by `sesh up --exec` and `orch-spawn` SESH_* exports. Also resolved via the `.sesh/sessions/<label>.json` state-walk when unset.\n- **Legacy override:** set `NATS_SESSION_NAME` env var (back-compat), or use `/grok-nats-channel:configure session <name>`\n- **Multiple sessions:** if the default name is already taken by another\n  grok instance owned by the same user, the adapter 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## 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 Grok needs permission to run a tool, the adapter 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 Grok terminal / TUI session. 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 adapter\nforwards the decision back to the harness.\n\n```\n/grok-nats-channel:configure permissions query\n```\n\nTo switch back to terminal mode:\n\n```\n/grok-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 Grok asks for permission while no NATS request is active (for\nexample from direct terminal input), the adapter 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 Grok. No additional pairing or allowlist is needed.\n\n## Grok authentication\n\nGrok sessions and model access are authenticated through the host Grok\napplication and xAI infrastructure. The NATS channel adapter requires no\nseparate API keys or credentials — it communicates with the local Grok\nharness exclusively via the MCP protocol.\n\n## Configuration\n\nState lives in `~/.grok/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| `SESH_SESSION` | Session name (the `<session>` token in `agents.prompt.<machine>.<project>.<session>`); canonical sesh contract — wins over `NATS_SESSION_NAME`. Also resolved via `.sesh/sessions/<label>.json` state-walk when unset. | *(unset)* |\n| `NATS_SESSION_NAME` | Legacy operator override for session name. | sanitized basename of `$GROK_CWD` or CWD |\n| `NATS_STATE_DIR` | State directory location | `~/.grok/channels/nats` |\n| `NATS_CONTEXT` | NATS CLI context name (higher precedence than config file) | *(none)* |\n| `NATS_URL` | Raw NATS URL (fallback when no context) | *(none - falls back to demo.nats.io)* |\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\n## Enabling in Grok (Grok-side Launcher)\n\nThe adapter is distributed as a Grok plugin (skills + .mcp.json + .grok-plugin manifest). This implements the **Grok-side consumption** (Task 6 of the implementation plan).\n\n### Quick Enable (recommended)\n\n1. Ensure you have the adapter repo at `~/projects/grok-nats-channel` (or your preferred location).\n2. In a Grok session, run:\n   ```\n   /grok-nats-channel:launcher enable\n   ```\n   (or `/grok-nats-channel:launcher enable /custom/path/to/grok-nats-channel`)\n3. The launcher skill creates the symlink `~/.grok/plugins/grok-nats-channel` → your path.\n4. Grok will automatically pick up the MCP server definition from `.mcp.json` and the `/grok-nats-channel:configure` + launcher commands from the `skills/` directory.\n5. Run `/grok-nats-channel:configure` to pick your NATS context / session name / permission mode.\n6. **Restart your Grok TUI/session** — the MCP spawns at startup.\n7. Verify: `grok mcp list` shows \"nats\"; `nats micro ls` shows a `gr` service; NATS prompts now arrive as `<channel source=\"nats\" ...>` blocks with a `reply` tool.\n\n### Manual / Advanced\n\n- Symlink the plugin yourself:\n  ```sh\n  mkdir -p ~/.grok/plugins\n  ln -sfn ~/projects/grok-nats-channel ~/.grok/plugins/grok-nats-channel\n  ```\n- Or register explicitly (if not using the plugin loader):\n  ```sh\n  grok mcp add nats --command bun --args server.ts --cwd ~/projects/grok-nats-channel\n  ```\n- Disable:\n  ```sh\n  /grok-nats-channel:launcher disable\n  rm -f ~/.grok/plugins/grok-nats-channel\n  ```\n\n**Packaging note:** We chose local plugin path (Option A) for v1/dev. Once published to npm under the `@agent-ops` scope (as `@agent-ops/grok-nats-channel` or equivalent), the launcher will also support `bunx @agent-ops/grok-nats-channel` and direct Grok marketplace installation (which will manage the plugin cache automatically). The skill names (`/grok-nats-channel:*`) are derived from the installed plugin directory and remain stable.\n\nSee `skills/launcher/SKILL.md` and `skills/configure/SKILL.md` for the full command surfaces.\n\n","readmeFilename":"README.md"}