{"_id":"@agent-ops/omp-nats-channel","_rev":"10-7d8971a552b1df4f47e289146c000fec","name":"@agent-ops/omp-nats-channel","dist-tags":{"latest":"0.8.0"},"versions":{"0.0.1":{"name":"@agent-ops/omp-nats-channel","version":"0.0.1","keywords":["omp-package","oh-my-pi","nats","agent","channel","synadia-agent-protocol"],"author":"Dan Mestas","license":"Apache-2.0","_id":"@agent-ops/omp-nats-channel@0.0.1","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/omp-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"omp":{"extensions":["./extensions/nats-channel.ts"]},"dist":{"shasum":"47d448658d6d77e8c709bb0a376b3bcd55ae87cf","tarball":"https://registry.npmjs.org/@agent-ops/omp-nats-channel/-/omp-nats-channel-0.0.1.tgz","fileCount":7,"integrity":"sha512-83/aWoLZENL8cySG3PWzAf/DPBQLiLVABrr61ggY734vlCJaBxQEhItLT0m40tfMQ+E8E/Lcquh14rndBuBW+Q==","signatures":[{"sig":"MEUCIQCRbvTEwg+tdhoGu4H/JSFHt9HO6fYxnn+HPYr8aqURggIgPlFyv/VbWLWO4NYIhrXMrYx/D+mva/1L8FHupTO4/sM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76212},"type":"module","shasum":"47d448658d6d77e8c709bb0a376b3bcd55ae87cf","scripts":{"build":"true","check":"tsc --noEmit","test:smoke":"bun test/smoke.mjs"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"_integrity":"sha512-83/aWoLZENL8cySG3PWzAf/DPBQLiLVABrr61ggY734vlCJaBxQEhItLT0m40tfMQ+E8E/Lcquh14rndBuBW+Q==","repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"omp-nats-channel"},"_npmVersion":"10.8.3","description":"NATS channel bridge for Oh My Pi (OMP) — makes every OMP session a discoverable, spec-compliant Synadia Agent Protocol agent on NATS.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@nats-io/services":"^3.4.0","@synadia-ai/agents":"^0.5.1","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.1","@synadia-ai/agent-service":"^0.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@oh-my-pi/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/omp-nats-channel_0.0.1_1779583458468_0.39227113444263084","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@agent-ops/omp-nats-channel","version":"0.4.0","keywords":["omp-package","oh-my-pi","nats","agent","channel","synadia-agent-protocol"],"author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/omp-nats-channel@0.4.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/omp-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"omp":{"extensions":["./extensions/nats-channel.ts"]},"dist":{"shasum":"8e27173f2f7664cd1c2919fbd8c1d642091d6206","tarball":"https://registry.npmjs.org/@agent-ops/omp-nats-channel/-/omp-nats-channel-0.4.0.tgz","fileCount":8,"integrity":"sha512-AqgpCNHqCepO4N5DOS0g2Fi6tWWBrJdo+NhlKeYxpPRj9zWsluPfaeAKINI7qUjA54LE4NDNqmYfwmdU45a9og==","signatures":[{"sig":"MEUCIB69WmwsIOfalMc5Dd2KTKlSs2KkDli3v1UZtRM+0p8lAiEAmpoJM1zy+eXIDQ0TMiSumRvZYm+oftEneXq8rAujztw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111465},"type":"module","gitHead":"fb734eac7df086e21e36b3e62faf4a7014d2b5ee","scripts":{"build":"true","check":"tsc --noEmit","test:smoke":"bun test/smoke.mjs"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"omp-nats-channel"},"_npmVersion":"11.12.1","description":"NATS channel bridge for Oh My Pi (OMP) — makes every OMP session a discoverable, spec-compliant Synadia Agent Protocol agent on NATS.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ulid":"^3.0.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.1","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.1","@synadia-ai/agent-service":"^0.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@oh-my-pi/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/omp-nats-channel_0.4.0_1779797906861_0.25519938691385247","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@agent-ops/omp-nats-channel","version":"0.4.1","keywords":["omp-package","oh-my-pi","nats","agent","channel","synadia-agent-protocol"],"author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/omp-nats-channel@0.4.1","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/omp-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"omp":{"extensions":["./extensions/nats-channel.ts"]},"dist":{"shasum":"e02d83acda35c545428df8004b1d548a7fb32e6b","tarball":"https://registry.npmjs.org/@agent-ops/omp-nats-channel/-/omp-nats-channel-0.4.1.tgz","fileCount":8,"integrity":"sha512-3fi1KhY/+fR+LUsumINUgAOxZDOYTDUz2X7JzQlYAusBPxzCDxEj4ogT/qBGFX0JQVQe/9JUprEmYG3s+frZ1Q==","signatures":[{"sig":"MEQCIE9k4b/6E3Zpd4cYwlp4+8WLlIXLTuXegyG0MmwRpxO8AiB9WiC0hoWUMIh4l2frZ82pzfMJcwwxmVXsuGg10VtfMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111480},"type":"module","gitHead":"fb734eac7df086e21e36b3e62faf4a7014d2b5ee","scripts":{"build":"true","check":"tsc --noEmit","test:smoke":"bun test/smoke.mjs"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"omp-nats-channel"},"_npmVersion":"11.12.1","description":"NATS channel bridge for Oh My Pi (OMP) — makes every OMP session a discoverable, spec-compliant Synadia Agent Protocol agent on NATS.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ulid":"^3.0.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.1","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.1","@synadia-ai/agent-service":"^0.5.2","@agent-ops/sesh-channels-sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@oh-my-pi/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/omp-nats-channel_0.4.1_1779798600163_0.1641599247387937","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@agent-ops/omp-nats-channel","version":"0.5.0","keywords":["omp-package","oh-my-pi","nats","agent","channel","synadia-agent-protocol"],"author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/omp-nats-channel@0.5.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/omp-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"omp":{"extensions":["./extensions/nats-channel.ts"]},"dist":{"shasum":"cfcbc0633d9799d33f8e7d5d2c6bfd100c65d0c7","tarball":"https://registry.npmjs.org/@agent-ops/omp-nats-channel/-/omp-nats-channel-0.5.0.tgz","fileCount":8,"integrity":"sha512-OT5kxt1mVwq2AU4bh9o8x+8VfKkHa8ipKFtow7egS3uxuEjdoz6G3l/oMEVj7dfARHoIAvh2Ktvbn8/FKWG9lA==","signatures":[{"sig":"MEYCIQD2VMFEdfW3heEDPQq/cKdGm0ZjXRhXOYMP6EO6ZeadYwIhAMFE3iJnQcgf7isPnMxkFQGjpTK5CJK06XcRfYUVtz9G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117719},"type":"module","gitHead":"ce460a3de118410a68b6827a7328e577b57dda71","scripts":{"build":"true","check":"tsc --noEmit","test:smoke":"bun test/smoke.mjs"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"omp-nats-channel"},"_npmVersion":"11.12.1","description":"NATS channel bridge for Oh My Pi (OMP) — makes every OMP session a discoverable, spec-compliant Synadia Agent Protocol agent on NATS.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ulid":"^3.0.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.1","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.1","@synadia-ai/agent-service":"^0.5.2","@agent-ops/sesh-channels-sdk":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@oh-my-pi/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/omp-nats-channel_0.5.0_1779923054638_0.9585513157682297","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@agent-ops/omp-nats-channel","version":"0.6.0","keywords":["omp-package","oh-my-pi","nats","agent","channel","synadia-agent-protocol"],"author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/omp-nats-channel@0.6.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/omp-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"omp":{"extensions":["./extensions/nats-channel.ts"]},"dist":{"shasum":"b5e2a103a963fd11deb7998ee6e856b4ea49c956","tarball":"https://registry.npmjs.org/@agent-ops/omp-nats-channel/-/omp-nats-channel-0.6.0.tgz","fileCount":8,"integrity":"sha512-Jn09Z8WQfJd0gH84rppDZealn7EQby2oySM/TBd0bfSpHItmopeL/oWDNR/Rafz4bEA99MIuhPMeP4wadkTABA==","signatures":[{"sig":"MEQCID015qtlyEgQ0Ac0uTR98bv+9SsSuGnJAPAY3acTZsSHAiBp9DZmG48vg2TFz+1Lsqb22VTYyKxgW77n7EwVQt0IFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114891},"type":"module","gitHead":"02f0f4573d4a08feac449e583b19d67e4c38dfb6","scripts":{"build":"true","check":"tsc --noEmit","test:smoke":"bun test/smoke.mjs"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"omp-nats-channel"},"_npmVersion":"11.12.1","description":"NATS channel bridge for Oh My Pi (OMP) — makes every OMP session a discoverable, spec-compliant Synadia Agent Protocol agent on NATS.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ulid":"^3.0.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.1","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.1","@synadia-ai/agent-service":"^0.5.2","@agent-ops/sesh-channels-sdk":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@oh-my-pi/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/omp-nats-channel_0.6.0_1780004981340_0.047522378466443804","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@agent-ops/omp-nats-channel","version":"0.6.1","keywords":["omp-package","oh-my-pi","nats","agent","channel","synadia-agent-protocol"],"author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/omp-nats-channel@0.6.1","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/omp-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"omp":{"extensions":["./extensions/nats-channel.ts"]},"dist":{"shasum":"b1a18089eebf72010df744cd2137f2ba3279fd98","tarball":"https://registry.npmjs.org/@agent-ops/omp-nats-channel/-/omp-nats-channel-0.6.1.tgz","fileCount":8,"integrity":"sha512-urUovbWaQvvJ7BcOfequA/kwpp+FQzOWByFl8Ix4YScAkt7Cjsa3tlZvBqD1yfwotjBM6HMmbvyKJEjUHXp9fA==","signatures":[{"sig":"MEUCIG8gIZbc3KPm9liHf+aKuuj/7QFki1H4Hbae27TYa7qdAiEAkZ38zFK+dLP7a252NtBRN/s20OTnhoS2RcKrOxMXSlI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114891},"type":"module","gitHead":"fa429ea99447140d87e7795c1246e80faf47b219","scripts":{"build":"true","check":"tsc --noEmit","test:smoke":"bun test/smoke.mjs"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"omp-nats-channel"},"_npmVersion":"10.9.8","description":"NATS channel bridge for Oh My Pi (OMP) — makes every OMP session a discoverable, spec-compliant Synadia Agent Protocol agent on NATS.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ulid":"^3.0.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.1","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.1","@synadia-ai/agent-service":"^0.5.2","@agent-ops/sesh-channels-sdk":"^0.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@oh-my-pi/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/omp-nats-channel_0.6.1_1780009557934_0.7474339296712997","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@agent-ops/omp-nats-channel","version":"0.6.2","keywords":["omp-package","oh-my-pi","nats","agent","channel","synadia-agent-protocol"],"author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/omp-nats-channel@0.6.2","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/omp-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"omp":{"extensions":["./extensions/nats-channel.ts"]},"dist":{"shasum":"64c189949eff1c43d7ae0f88ecc3b28706d596b2","tarball":"https://registry.npmjs.org/@agent-ops/omp-nats-channel/-/omp-nats-channel-0.6.2.tgz","fileCount":8,"integrity":"sha512-0IOmOu5CXvN5Inoz+bVtRNPsgw/AyQ7sNsCHJR4ZzfPZEjnRDn8gP/iqvOq/aqgRUVWLxXrbxD2N9BWtVJ7HoQ==","signatures":[{"sig":"MEYCIQCwBo67sdrfcB7AxdOCYNTLHDuRy1mClu27muoDMypjEgIhALnpfFKM34fJTKM+bH92bEFpxmiMuSXsKLH/gCo4NYzV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115080},"type":"module","gitHead":"25f05420a1928f3f4e81616872b9ca36df321127","scripts":{"build":"true","check":"tsc --noEmit","test:smoke":"bun test/smoke.mjs"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"omp-nats-channel"},"_npmVersion":"10.9.8","description":"NATS channel bridge for Oh My Pi (OMP) — makes every OMP session a discoverable, spec-compliant Synadia Agent Protocol agent on NATS.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ulid":"^3.0.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.1","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.1","@synadia-ai/agent-service":"^0.5.2","@agent-ops/sesh-channels-sdk":"^0.6.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@oh-my-pi/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/omp-nats-channel_0.6.2_1780056491581_0.07762391625232112","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@agent-ops/omp-nats-channel","version":"0.6.3","keywords":["omp-package","oh-my-pi","nats","agent","channel","synadia-agent-protocol"],"author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/omp-nats-channel@0.6.3","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/omp-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"omp":{"extensions":["./extensions/nats-channel.ts"]},"dist":{"shasum":"a05ee8ffecd70cad6470d7e457ad8c82ee8297f1","tarball":"https://registry.npmjs.org/@agent-ops/omp-nats-channel/-/omp-nats-channel-0.6.3.tgz","fileCount":8,"integrity":"sha512-68IjOw9Hj3hiuovzsGFWtLMiOdr8BG1lzuaHfX2kRwui0XjX/WJB7TXaL/VZVQc6YFcnHVva7r4ICnE2Ffo5AQ==","signatures":[{"sig":"MEYCIQDsJprOCBYT374WLata8flRyA56+JGWHfS7jQsGMgc5BAIhAPHBFOY4m9tzXIB1jGx19g5UXfg/MI07OQI31lT+W6e3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115040},"type":"module","gitHead":"216dab50b303706b1ec28f29d139e6d3f97c965c","scripts":{"build":"true","check":"tsc --noEmit"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"omp-nats-channel"},"_npmVersion":"10.9.8","description":"NATS channel bridge for Oh My Pi (OMP) — makes every OMP session a discoverable, spec-compliant Synadia Agent Protocol agent on NATS.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ulid":"^3.0.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.1","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.1","@synadia-ai/agent-service":"^0.5.2","@agent-ops/sesh-channels-sdk":"^0.6.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@oh-my-pi/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/omp-nats-channel_0.6.3_1780190183455_0.24056971297485608","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@agent-ops/omp-nats-channel","version":"0.7.0","keywords":["omp-package","oh-my-pi","nats","agent","channel","synadia-agent-protocol"],"author":{"name":"Dan Mestas"},"license":"Apache-2.0","_id":"@agent-ops/omp-nats-channel@0.7.0","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"homepage":"https://github.com/danmestas/sesh-channels/tree/main/omp-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"omp":{"extensions":["./extensions/nats-channel.ts"]},"dist":{"shasum":"4e87ab5880a7459c066ebe7c10eae7f9ed47cae6","tarball":"https://registry.npmjs.org/@agent-ops/omp-nats-channel/-/omp-nats-channel-0.7.0.tgz","fileCount":8,"integrity":"sha512-/3QMX3UwmqayTkWCjS5MNhMoU/OLJZoUJ+255ZEsiLmzDtZLJDlWeVJ3RNdslRuLrsMCw9vzYC3YiARpbtfPMg==","signatures":[{"sig":"MEUCIEYN029Ot+VF0Ftm35gRHVXurtwF7VghO4btrEOyN/LbAiEA0gFeEDA5IjPwxHHsGMsaYrZx/4mETsYNPgsULFbhZio=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114990},"type":"module","gitHead":"bede47b7865f186355403cd4a8ed7da239e57172","scripts":{"build":"true","check":"tsc --noEmit"},"_npmUser":{"name":"danmestas","email":"daniel.mestas@craftdesign.group"},"repository":{"url":"git+https://github.com/danmestas/sesh-channels.git","type":"git","directory":"omp-nats-channel"},"_npmVersion":"10.9.8","description":"NATS channel bridge for Oh My Pi (OMP) — makes every OMP session a discoverable, spec-compliant Synadia Agent Protocol agent on NATS.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ulid":"^3.0.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.1","@nats-io/transport-node":"^3.4.0","@agent-ops/sesh-channels":"^0.1.1","@synadia-ai/agent-service":"^0.5.2","@agent-ops/sesh-channels-sdk":"^0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@oh-my-pi/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/omp-nats-channel_0.7.0_1780491849147_0.03966553048693844","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@agent-ops/omp-nats-channel","version":"0.8.0","description":"NATS channel bridge for Oh My Pi (OMP) — makes every OMP session a discoverable, spec-compliant Synadia Agent Protocol agent on NATS.","keywords":["omp-package","oh-my-pi","nats","agent","channel","synadia-agent-protocol"],"license":"Apache-2.0","author":{"name":"Dan Mestas"},"repository":{"type":"git","url":"git+https://github.com/danmestas/sesh-channels.git","directory":"omp-nats-channel"},"homepage":"https://github.com/danmestas/sesh-channels/tree/main/omp-nats-channel","bugs":{"url":"https://github.com/danmestas/sesh-channels/issues"},"publishConfig":{"access":"public"},"type":"module","omp":{"extensions":["./extensions/nats-channel.ts"]},"scripts":{"check":"tsc --noEmit","build":"true"},"dependencies":{"@agent-ops/sesh-channels":"^0.1.1","@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.1","@synadia-ai/agent-service":"^0.5.2","ulid":"^3.0.0"},"peerDependencies":{"@oh-my-pi/pi-coding-agent":"*"},"_id":"@agent-ops/omp-nats-channel@0.8.0","gitHead":"55eb88a73a01dd47cddf2216cfad00bf4c2daf53","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-gXyo+LYV/gb7SojSKAED83uTkpXMlWw9uvk79Zmc2obNYxIAqu669brlsZzmXY5PnBbTzvi0gDsdt3tR9pOm4g==","shasum":"65dd5eb6f1ab6b86b75331a5917356c753680588","tarball":"https://registry.npmjs.org/@agent-ops/omp-nats-channel/-/omp-nats-channel-0.8.0.tgz","fileCount":9,"unpackedSize":121065,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICLRLc3PEjbB7KP+h9t5MqX8llncQyxNa5127OMzw4jHAiAnda4EQTLXjPzekK9RIPLHdKdSvuNLw5YX6B4K4lPEAw=="}]},"_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/omp-nats-channel_0.8.0_1780541847686_0.818983627289797"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-24T00:44:18.378Z","modified":"2026-06-04T02:57:27.992Z","0.0.1":"2026-05-24T00:44:18.626Z","0.4.0":"2026-05-26T12:18:27.011Z","0.4.1":"2026-05-26T12:30:00.297Z","0.5.0":"2026-05-27T23:04:14.784Z","0.6.0":"2026-05-28T21:49:41.503Z","0.6.1":"2026-05-28T23:05:58.073Z","0.6.2":"2026-05-29T12:08:11.737Z","0.6.3":"2026-05-31T01:16:23.586Z","0.7.0":"2026-06-03T13:04:09.292Z","0.8.0":"2026-06-04T02:57:27.854Z"},"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/omp-nats-channel","keywords":["omp-package","oh-my-pi","nats","agent","channel","synadia-agent-protocol"],"repository":{"type":"git","url":"git+https://github.com/danmestas/sesh-channels.git","directory":"omp-nats-channel"},"description":"NATS channel bridge for Oh My Pi (OMP) — makes every OMP session a discoverable, spec-compliant Synadia Agent Protocol agent on NATS.","maintainers":[{"name":"danmestas","email":"daniel.mestas@craftdesign.group"}],"readme":"# @synadia-ai/nats-omp-channel\n\nNATS channel extension for [Oh My Pi (OMP)](https://github.com/oh-my-pi/pi-coding-agent). Every running OMP session becomes discoverable, addressable, and streamable over NATS — anyone with a [Synadia Agent Protocol for NATS](https://github.com/synadia-ai/synadia-agent-sdk-docs) client (e.g. [`@synadia-ai/agents`](https://github.com/synadia-ai/synadia-agent-sdk-docs)) can find your session, prompt it, and stream the reply back.\n\nOMP registers under agent kind `op` to distinguish it from upstream `pi`. If you also run a vanilla `pi`, you'll see both side-by-side on the bus.\n\n### Protocol versions\n\nThis adapter advertises **both** v0.3 and v0.4 of the Synadia Agent Protocol on the same NATS micro service. v0.3 is the default discovery shape (`metadata.protocol_version = \"0.3\"`); v0.4 lives behind the `sesh.*` metadata namespace so legacy callers never see it:\n\n- `metadata[\"sesh.protocol_version\"] = \"0.4\"`\n- `metadata[\"sesh.v04_capabilities\"] = \"messages,artifacts,cards\"`\n\nCallers (the `sesh` shim) publish prompts on `agents.prompt.<machine>.<project>.<session>`, receive streamed `Message` / `statusUpdate` events on `agents.task.stream.<scope-kind>.<scope-id>.<task-id>`, and fetch the OMP `AgentCard` from `agents.card.<machine>.<session>.<name>`. The clean v0.4 machine-rooted scheme is the only scheme; harness identity (`oh-my-pi`) lives in service metadata (the `agent` key), never in the subject.\n\n## Install\n\nOMP doesn't have a plugin-install CLI today; wire the package in via `config.yml`:\n\n```yaml\n# ~/.omp/agent/config.yml\nextensions:\n  - /absolute/path/to/omp-nats-channel\n```\n\nInstall the package's own deps once:\n\n```bash\ncd /absolute/path/to/omp-nats-channel\nbun install\n```\n\nThen start OMP normally:\n\n```bash\nomp\n```\n\nYou should see `Connected to NATS (<server>) as agents.prompt.<machine>.<project>.<session>` on session start, and a footer status line `● nats://<machine>.<project>.<session>` rendered above the editor.\n\n## Configure\n\nOut of the box, no configuration is needed: OMP connects to `demo.nats.io` and derives the machine, project, and session tokens from its environment. Your session is reachable at:\n\n```\nagents.prompt.<machine>.<project>.<session>\n```\n\nFor real deployments, point OMP at your own NATS via a context file. Two common setups:\n\n**Production with a NATS CLI context** (already configured via `nats context add`):\n\n```json\n// ~/.omp/agent/nats-channel.json\n{\n  \"context\": \"prod\"\n}\n```\n\n**Pin a stable session name** (so callers can address the same logical session even if you cd around):\n\n```json\n{\n  \"context\": \"prod\",\n  \"sessionName\": \"my-session\"\n}\n```\n\nRestart OMP to pick up changes — or use the in-OMP commands below.\n\n### Configuration reference\n\nConfig file lives at `~/.omp/agent/nats-channel.json`:\n\n| Field | Required | Default | Description |\n|-------|----------|---------|-------------|\n| `context` | no | — | Name of a NATS CLI context (file under `~/.config/nats/context/<name>.json`). When unset, falls back to `$NATS_URL`, then the sesh hub at `~/.sesh/hub.nats.url` if present, then the built-in `demo.nats.io`. |\n| `sessionName` | no | sanitized basename of CWD | The 5th subject token. Override to give your session a stable, addressable name. |\n\nThe `owner` token (4th) is always derived from `$USER` — there's no override for it. For multi-tenant isolation, use NATS accounts (server-side configuration).\n\n### Environment variables\n\nEnv vars override the config file:\n\n| Variable | Sets | Notes |\n|----------|------|-------|\n| `NATS_CONTEXT` | `context` | Highest precedence. |\n| `NATS_URL` | raw URL (no auth context) | Used only when `NATS_CONTEXT` and `config.context` are both unset. |\n| `SESH_SESSION` | `sessionName` | Canonical sesh contract — set by `sesh up --exec` and `orch-spawn` SESH_* exports. Wins over `NATS_SESSION_NAME`. |\n| `NATS_SESSION_NAME` | `sessionName` | Legacy operator override; kept for back-compat. |\n| `SESH_ROLE` | `metadata.role` on the NATS Micro service registration | 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` and as `role` in sesh's session manifest. Default `worker`. |\n| `SESH_CLASS` | `metadata.class` on the NATS Micro service registration | One of `active` or `observer`. Coordination-subject routing keys on this: `active` agents subscribe to `workers.*`, `observer` agents subscribe to `spies.*`. Default `active`. |\n\n### Resolution order\n\n1. Built-in default — `demo.nats.io`, no auth\n2. Sesh hub URL — `~/.sesh/hub.nats.url` if present\n3. `$NATS_URL` — raw URL fallback (only consulted when no context is set)\n4. `config.context` — wizard-set / hand-edited NATS CLI context\n5. **`$NATS_CONTEXT`** — wins over everything\n\nFor `sessionName` (first non-empty wins): `$SESH_SESSION` (canonical sesh contract — also resolved via `.sesh/sessions/<label>.json` state-walk when unset) → `$NATS_SESSION_NAME` (legacy operator override) → `config.sessionName` → sanitised CWD-basename.\n\n### In-OMP commands\n\nAvailable inside a running OMP session:\n\n| Command | What it does |\n|---------|--------------|\n| `/nats-status` | Show current subject, service, instance id, protocol version, pending/queued counts |\n| `/nats-configure` | Print current config |\n| `/nats-configure <context>` | Switch NATS context |\n| `/nats-configure session <name>` | Override session name |\n| `/nats-configure session clear` | Revert to CWD basename |\n\n`/nats-configure` writes the config file; restart OMP to apply. (Live reconnect on context switch is a deferral — see [Limitations](#limitations).)\n\n## Verify\n\n```bash\n# Find your session (and any other agents on the same NATS)\nnats req '$SRV.INFO.agents' '' --replies=0 --timeout=2s\n\n# Watch heartbeats — your session beats every ~5 s\nnats sub 'agents.hb.*.*.*'\n```\n\nA successful `$SRV.INFO.agents` response for an OMP session looks like:\n\n```json\n{\n  \"type\": \"io.nats.micro.v1.info_response\",\n  \"name\": \"agents\",\n  \"id\": \"JC8O0IGAWI5APOHLAOA96N\",\n  \"version\": \"0.4.0\",\n  \"description\": \"OMP agent (my-session) in /home/me\",\n  \"metadata\": {\n    \"agent\": \"op\",\n    \"owner\": \"me\",\n    \"session\": \"my-session\",\n    \"protocol_version\": \"0.3\",\n    \"cwd\": \"/home/me\"\n  },\n  \"endpoints\": [\n    {\n      \"name\": \"prompt\",\n      \"subject\": \"agents.prompt.m4.my-project.my-session\",\n      \"queue_group\": \"agents\",\n      \"metadata\": { \"max_payload\": \"8MB\", \"attachments_ok\": \"true\" }\n    },\n    {\n      \"name\": \"status\",\n      \"subject\": \"agents.status.m4.my-project.my-session\",\n      \"queue_group\": \"agents\"\n    }\n  ]\n}\n```\n\nThe `cwd` metadata field tells you which working directory each session was started from — useful when you've got several OMP windows open.\n\n## Talk to your session\n\nFrom the CLI:\n\n```bash\n# Plain text prompt\nnats req agents.prompt.<machine>.<project>.<session> \"What files are here?\" \\\n  --wait-for-empty --reply-timeout 30s --timeout 120s\n\n# JSON envelope (caller SDKs use this form)\nnats req agents.prompt.<machine>.<project>.<session> '{\"prompt\":\"What files are here?\"}' \\\n  --wait-for-empty --reply-timeout 30s --timeout 120s\n```\n\n`--wait-for-empty` is required: replies stream as multiple chunks and end with an empty terminator message.\n\n`--reply-timeout` matters too. Its default is **300 ms** — the maximum gap allowed between consecutive replies. The agent publishes an immediate `{type:\"status\",data:\"ack\"}` chunk on request receipt, but the LLM's first response chunk typically lands 1–2 s later, so the default fires before the first response and the CLI exits after just the ack. Setting `--reply-timeout 30s` gives the LLM enough warm-up time. SDK callers (`requestMany` with `strategy:\"sentinel\"`) don't hit this — they wait the full `maxWait` regardless of inter-arrival gaps.\n\nFrom TypeScript using `@synadia-ai/agents`:\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 });\n\nconst [agent] = await agents.discover({ filter: { agent: \"op\" } });\n\nfor await (const msg of await agent!.prompt(\"What files are here?\")) {\n  if (msg.type === \"response\") process.stdout.write(msg.text);\n}\n\nawait agents.close();\nawait nc.close();\n```\n\n## Attachments\n\nWhen a request envelope carries `attachments`, each file is decoded and staged at:\n\n```\n~/.omp/agent/attachments/<session>/<uuid>/<filename>\n```\n\nThe absolute paths are prepended to the prompt text so OMP's model can open them with its file tools. Files staged earlier in a session stay on disk so follow-up turns can reference them; the whole `<session>/` directory is removed on session shutdown.\n\nEncode files with `base64 -w0 <file>` (Linux/macOS) or `Buffer.from(bytes).toString(\"base64\")` in Node before embedding in the JSON envelope. Caller SDKs do this for you.\n\nCaller-side limits (rejected with `400` if violated):\n\n- `content` must be standard-alphabet padded base64 — no URL-safe variant, no whitespace.\n- `filename` must be a plain basename. Path separators, `..`, absolute paths, and NUL bytes are rejected, not silently flattened.\n- The fully-encoded request must fit within the server-negotiated `max_payload` (1 MB on a default `nats-server`, more if the operator raised `--max_payload`).\n\n## Concurrency\n\nEach OMP session processes one NATS request at a time. Additional requests queue until the session is idle. The local TUI input and inbound NATS prompts share the same agent — typing locally during a NATS-driven turn means that local output flows to the NATS reply alongside the remote prompt's response.\n\nMultiple OMP sessions on the same host register as distinct service instances; `nats micro info agents` aggregates across all of them. If two sessions try to register on the same `owner + session`, the later one auto-suffixes `-2`, `-3`, … — pick a stable name with `/nats-configure session <name>` if you want addressability.\n\n## Multi-tenancy\n\nThe agent subject layout has no per-tenant slot. For real isolation between tenants or environments, use **NATS accounts** and subject permissions — that's a server-side configuration, not an extension one. Within a single account, sessions with distinct `owner` values (i.e. different `$USER`s) coexist cleanly.\n\n## Limitations\n\nDeliberate deferrals:\n\n- **No mid-stream queries.** OMP doesn't initiate permission prompts or clarifications over this channel; the protocol's `query` chunk type is supported by callers but never emitted by the OMP side.\n- **No live reconfigure.** `/nats-configure` writes the config file; OMP must be restarted for the new context or session name to apply.\n- **TUI bleed.** Local typing during a NATS-driven turn flows to the NATS reply subject as part of the response.\n- **No custom statusline segment.** OMP's `StatusLineSegmentId` enum is fixed; the NATS indicator renders in the hook status row above the editor, not inline with the model/path/cost segments.\n\n## Troubleshooting\n\n- **`○ nats://disconnected` in footer** — run `/nats-status`, then check the context file at `~/.config/nats/context/<context>.json` and that the NATS server is reachable.\n- **`◐ nats://reconnecting...`** — the connection dropped; the client restores it automatically.\n- **My session got a `-2` suffix** — another OMP session was already registered on the same `owner + session`. Use `/nats-configure session <name>` to pick a different one.\n- **`nats req` returns only the initial ack and exits** — pass `--reply-timeout 30s` (default is 300 ms, shorter than the gap between the ack chunk and the LLM's first response). See the \"Talk to your session\" section above for the full command. `--wait-for-empty` alone isn't enough.\n- **`nats req` hangs or returns nothing** — pass `--wait-for-empty`. The protocol ends streams with an empty-body message, not a single response.\n- **`400 attachment[N] has invalid base64 content`** — the caller emitted URL-safe base64 or unpadded output. `Buffer.from(bytes).toString(\"base64\")` (Node) produces the right form.\n- **`400 attachment[N] has unsafe filename`** — send the basename only (`\"report.pdf\"`), not a path (`\"./reports/report.pdf\"`).\n- **Stale attachments piling up under `~/.omp/agent/attachments/`** — clean session shutdown removes the whole `<session>/` tree, but a force-quit or crash leaves the per-request UUID directories on disk. Safe to `rm -rf ~/.omp/agent/attachments/<session>/` between runs if you don't need to re-reference earlier attachments.\n\n## See also\n\n- Sibling channel packages in this repo:\n  - [`pi-nats-channel`](../pi-nats-channel) — upstream PI Agent\n  - [`claude-nats-channel`](../claude-nats-channel) — Claude Code\n  - [`gemini-nats-channel`](../gemini-nats-channel) — Gemini CLI\n  - [`grok-nats-channel`](../grok-nats-channel) — Grok\n- The wire-level protocol: [`synadia-ai/synadia-agent-sdk-docs`](https://github.com/synadia-ai/synadia-agent-sdk-docs).\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}