{"_id":"@cocodrino/bridge-harness","_rev":"17-62f3ca4f59bed6e71ad507b45de3ef74","name":"@cocodrino/bridge-harness","dist-tags":{"latest":"0.3.16"},"versions":{"0.1.0":{"name":"@cocodrino/bridge-harness","version":"0.1.0","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.1.0","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js"},"dist":{"shasum":"c818e714758480827bdafa7eaadadd3a3cfe4d37","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.1.0.tgz","fileCount":32,"integrity":"sha512-DBGcASaqLkzoFVmKGxPo0i7+j4/E9cl0ycZCNrIgi+WhzfN2d7vC3XvhP/JZmQa+72NOrU6CGOBXDFx9kHyfag==","signatures":[{"sig":"MEYCIQCRKYsPD8Y28pbSjDzDtbY5Zai0TaenQctUoXDDovisHAIhAOzcK2zdQ22uJ3j2O/pffXRIZNZpzrFU472+hSlbVPAb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48444},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"3d0b073dc3f00904b333c13cf535beff00302f23","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.1.0_1780015839829_0.520405719768811","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cocodrino/bridge-harness","version":"0.1.1","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.1.1","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js"},"dist":{"shasum":"ad31796d4881d5c7d3ae381a35389b3228a83fc1","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.1.1.tgz","fileCount":32,"integrity":"sha512-dkwm24IPCA8NE9iV7xEcFZ6rIEoJnbZFRKM69pxw2jWiAUKEVsNaWdhwOxMWCPz4moQZ9+b60+hA39J/2+fJAg==","signatures":[{"sig":"MEYCIQCR/8J3McjLFrZoIqRKOYaftLS2K0jSn4mEBBPi18wY9gIhAKHWAnPUJ89frpaTWL0GUv5Gh5LU8JwOWl8NWARnflgT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48351},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"5abeaa138b342f067ac34aa765d7065edf56d8f0","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.1.1_1780016723681_0.33281475818955975","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@cocodrino/bridge-harness","version":"0.1.3","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.1.3","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js"},"dist":{"shasum":"6a077de33e97d1111b02ea3bc9ff01d7e9805145","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.1.3.tgz","fileCount":32,"integrity":"sha512-3c2hcZPKAgjwhKjbW+F+07yk/NFh7CMlQdw3prdE4IV2tow/tajOzwehPx7xNY6vHnAIDkqznaEKqNmfp+8P9A==","signatures":[{"sig":"MEYCIQDb37tlB4dPVZP0uhsnT7wFU1JJP8doleW6tLuVwYesiwIhANp9rH4+vF6CMKklU6QUwe2VWdABC3flQxH//K3RcTZC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48351},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"d3d4976a0b572495c1fbae6d454221b35e1c1a34","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.1.3_1780018415629_0.5710667341144606","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@cocodrino/bridge-harness","version":"0.1.5","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.1.5","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js"},"dist":{"shasum":"fda8b0b75c8b02173b4de21594cf6a48696b0362","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.1.5.tgz","fileCount":36,"integrity":"sha512-U3KvhFsUwJvYHPZAyRwSkD44yJjMtlUosFdhOJ2Mi4AbZGA8A0cG5hbwqoBGlbz0Vy7VGLeJs199XQa/OE20eA==","signatures":[{"sig":"MEYCIQDXKQd7VZ+gvM9L6DUSX4kqHHGh9q7aCfkY+xncQKSp+wIhAJR6WUqZO+tXE+PU9HGlsgtWqECqaNtFoLK9jJbaMXvA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62983},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"f5d765443f2a3b2b3676e1bf3739d54af5360f04","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.1.5_1780105425398_0.020486589392544108","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@cocodrino/bridge-harness","version":"0.1.6","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.1.6","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js"},"dist":{"shasum":"e4b15f8afb1dd7187e2f45393d443fa682471861","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.1.6.tgz","fileCount":36,"integrity":"sha512-sQ4fza8Sg3GJjxr5qzOK9LahJRqfXBQJnwmYC1iFItH5Opf5uhSzXMsSwRt1RPxjQmpg7hgr2PMhAkdXV3vMWg==","signatures":[{"sig":"MEUCIBQlcHemwUCBwZ3VaJ5dNkGAeG8JZd9cV02hfZY3/4qvAiEAzrcZOczm3Y9YttufDQDvj0kPuD2ukL2sbcxoTyuQCss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64995},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"1a86fdeceacb9cde27eedc64a99f20b6d5ccdf93","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.1.6_1780110063221_0.13593808787254824","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@cocodrino/bridge-harness","version":"0.1.7","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.1.7","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js"},"dist":{"shasum":"c32369b3697d64c50c503996e28ade4ffe392b4e","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.1.7.tgz","fileCount":36,"integrity":"sha512-iCen4s2z0XBKx/xRpUAHpw4fMggxIEp8LVtyqSCTthJEauI77zzsI+waisQzZQKqiS9jGh4f/LumK75qI5rGcA==","signatures":[{"sig":"MEUCIQDyK8+k7OG4mwov8E9uZnj2xq7CaUYpH5D3/iJ0tPYq+gIgVT4jytt7bST38DgARfwA4O/vrxM9QcVdZ/lGCwkyh8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69564},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"a508575cdca2f82308ee13192c59a686a6768e82","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.1.7_1782142422402_0.16216523381155867","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@cocodrino/bridge-harness","version":"0.1.8","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.1.8","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js"},"dist":{"shasum":"8b147db1354839c199ad5ae8a4df235086bdad60","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.1.8.tgz","fileCount":36,"integrity":"sha512-XJyStWho+BFDEpgoA96oEuP/+hmkY6gvVSq4TuRGT71A3WfSpzSO3vuDVCk3xo/JEHBIKACoRs1l4ITHTDy5aA==","signatures":[{"sig":"MEUCICnbhnjTpW/W1mhjw5rs8jEAndOUl+OfV0ogpcJsliTWAiEA36E/wd/49H63jDwGi1vFUw0q9UMKueZtuLqgSAQNqtE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74441},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"1cf4ae26013bace7e02993d447943d7b1c9c79ee","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.1.8_1782147025480_0.48133019762941687","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@cocodrino/bridge-harness","version":"0.1.11","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.1.11","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js"},"dist":{"shasum":"4405dc2ee106730a36522e88b6b2b5b6aa81b2e5","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.1.11.tgz","fileCount":36,"integrity":"sha512-mEe2yT+aqYd2YJganDGRaUFXbYfiYf2dVm7HjV8d5k+R8CbREjFbcW00PQLgHIH9cuhjp1HN5fL1vWn84HjTEQ==","signatures":[{"sig":"MEYCIQCycPptHBfAP9ki5PwMRZJxxCQxZ8X3HGFjpA6VRvamOAIhAJvGn3aqZH5fxr4ER/r9I59ZJFO4mrVHqHfvu39YDXaS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80897},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"d54debb02e44c8af5edfcd873d9bed3e5c966447","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.1.11_1784837933112_0.7876900278662993","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@cocodrino/bridge-harness","version":"0.2.1","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.2.1","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js"},"dist":{"shasum":"caebea54d10e72401e470d13b2552f334ba34136","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.2.1.tgz","fileCount":36,"integrity":"sha512-oP5efLBrqWf8ZEe8Jzjioum/CFGJ9jFxrOTrgVX4Ukl3MK/KYsiNOx1hN1mQa4yDzb82qAnNHArD89cbKAUr9A==","signatures":[{"sig":"MEYCIQCDXVfv+CZRhLru5zdQrX/22bWYJLBnWNRptwDHSoLdAQIhAN54dGmiE9VmtKFxAa/kIUh0sokPKTYqq8xjr+fT+/P9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85716},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"5509d29e690c713795013317c9952977e5c25777","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.2.1_1785018087707_0.08230397185149374","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@cocodrino/bridge-harness","version":"0.3.1","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.3.1","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js"},"dist":{"shasum":"f8c9c2aac53e5b1e2d381dfb606159904f52fe59","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.3.1.tgz","fileCount":40,"integrity":"sha512-WEkwYIrKXIOx6FvPYkrXlkg2+z1sMbezvDlS0PaL7t2qNiBBzKYY1+ceczemqdRDUC+OncX0lEBSRNQKVFYaog==","signatures":[{"sig":"MEYCIQC9Mte3ZRwhxsdHDbz8LqivNbx6b5psf8Drjq4fEs8wHAIhAP2y8QzMglMt7QFS7pHbEVVLFpKZmhLCpVLsjHUUtKKx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92823},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"9b60ed9e5d4241135ae2ce5113a31fe055053cf5","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.3.1_1785094301715_0.23165036098841885","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@cocodrino/bridge-harness","version":"0.3.2","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.3.2","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js"},"dist":{"shasum":"4604c54fe3ced7f59c34a3b7bd1e3df0d6bde033","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.3.2.tgz","fileCount":40,"integrity":"sha512-/UAcRnLaEDkXBdPwsM+o34KqSK2UQeQUnIr7JK7O6L/7HQQMHJluzfdvoez8UjaLxDe71sEsCH3RDkc1ws1HpA==","signatures":[{"sig":"MEUCIDBS7qxd0Qsb671tHg6ek5fStWBlZU4TddbxMgdXaDtvAiEAkKyRLQ9sKVaPk48wctePHD8yGhdytQ5qm7issn4FP2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93795},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"f082a8b00ee597e9452dcc89adf984b31d80a4bf","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.3.2_1785095515777_0.6633229404438945","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@cocodrino/bridge-harness","version":"0.3.7","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.3.7","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js","bridge-harness-skills":"dist/install-skills/index.js"},"dist":{"shasum":"c3c4c2eb04e4f9e74ca651e65cedae44695d2996","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.3.7.tgz","fileCount":45,"integrity":"sha512-UamGdArm1sp+rpiRjZ6m06RIPXriP6B8FCdqGZC+wmzGChQrzbODQAYbs/rVM5EF1CUBsDo7hYqRPekPa0vaOw==","signatures":[{"sig":"MEUCIQCDHP7UQyDv8QuU819dtW8Q7rHgqFZd+1YLjDDLRDXKqQIgav0wVO+HpLrHh6GBdcwcNKnyCd7SM6am6fSh+yQhiuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114698},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"950e11208beaaa6eb069cb35deb608a4354fa93a","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.3.7_1785367432110_0.32663444852192525","host":"s3://npm-registry-packages-npm-production"}},"0.3.10":{"name":"@cocodrino/bridge-harness","version":"0.3.10","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.3.10","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js","bridge-harness-skills":"dist/install-skills/index.js"},"dist":{"shasum":"d0d98012f1072ffe7c1a8dde75e911012b42f041","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.3.10.tgz","fileCount":45,"integrity":"sha512-29WBiG2A3tELvihIBDkzeCjTEO2lBN7/RWiUqRO9Xh8fcQid8uqwcMGNBARxPUNFm1ITWil8JFt6dwXUuqJPxw==","signatures":[{"sig":"MEQCIGJIqdzJ0xW+V/oNBE6Lyv6IX7pHqjXUZRr6ykBK7ltuAiBZOZqcYHPpsDFUlPw0NFFk4+Gb0DEC8qScb+LCcjpfMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118846},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"ce90015e13181519e8efa3687a66d749ecadaebc","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.3.10_1786331903374_0.3274716065302863","host":"s3://npm-registry-packages-npm-production"}},"0.3.12":{"name":"@cocodrino/bridge-harness","version":"0.3.12","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.3.12","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js","bridge-harness-skills":"dist/install-skills/index.js"},"dist":{"shasum":"2a679be1263869c1ad4d00920347426fd2e981b1","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.3.12.tgz","fileCount":45,"integrity":"sha512-R0Pdn4vN749Y4zTo5ffdxVT3tBiUzQBqrp02Skj/RPwkn3w5riEDgIR3WwBoP/s4dxSbWsvednYtmTn5+ckMuQ==","signatures":[{"sig":"MEUCIQDu7+2Lajhr+BjwMWuFhlZ0AwLSoNpM5tbFfmPZapBYpgIgfNOmqkAK25zhvbzNv/xBFMvxWjMuBDAmeJuVSWrxR1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120453},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"6ccb70bb797555c6b04ef63f6fe01d261e11b7c9","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.3.12_1786333477992_0.5933923538395625","host":"s3://npm-registry-packages-npm-production"}},"0.3.13":{"name":"@cocodrino/bridge-harness","version":"0.3.13","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.3.13","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js","bridge-harness-skills":"dist/install-skills/index.js"},"dist":{"shasum":"69a189b2ae47da7006f12dcb379850c31026ccf9","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.3.13.tgz","fileCount":57,"integrity":"sha512-p4HXCuwcbStVrOkifoLWagUFOqkY/4Dj2+U3IxztaPDolDwoMfsxnaVF4gIAO2pSBKqnaqrPRMuY55jzb+Uxag==","signatures":[{"sig":"MEUCIQCfUr9HTbaf8digWT9sDyVm7cRT7YrItSJSsRBnOb+UYQIgce6vrhBx7KA3aFc630dF+iItUHiAQiga1rOvmCw3rPw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143642},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"450a72a58f11bdc5853dc432de765dbf980b7b35","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.3.13_1786651636911_0.7655355748323505","host":"s3://npm-registry-packages-npm-production"}},"0.3.14":{"name":"@cocodrino/bridge-harness","version":"0.3.14","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"author":{"name":"cocodrino"},"license":"MIT","_id":"@cocodrino/bridge-harness@0.3.14","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"homepage":"https://github.com/cocodrino/bridge-harness#readme","bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js","bridge-harness-skills":"dist/install-skills/index.js"},"dist":{"shasum":"c67f0a1ef77f1150ab7e24a0e9223c494779643c","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.3.14.tgz","fileCount":57,"integrity":"sha512-p5mqFNvr5I5IB8qJxGvzhUuWcWISoU/3BsUal8UgvVUcEjl5qfsjH5CRgMZxTGKVrl4UMhIETfoyaqSgath4KA==","signatures":[{"sig":"MEYCIQDdpHW4fDb13dXW191u0F7KnwF8lp6DwstwlZLaJDhO9gIhAIm5SJ6gfXi1qclo27cQdSws3NPnA0/3+JIfKmvH7BtH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144375},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"61b05e92f294f0b9654294d14b327b13a12b703b","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bridge-harness_0.3.14_1787185334242_0.03808573214403155","host":"s3://npm-registry-packages-npm-production"}},"0.3.16":{"_id":"@cocodrino/bridge-harness@0.3.16","bin":{"bridge-harness":"dist/cli/index.js","bridge-harness-mcp":"dist/mcp-server/index.js","bridge-harness-setup":"dist/setup/index.js","bridge-harness-skills":"dist/install-skills/index.js"},"bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"dist":{"shasum":"1ef885695dbefd0019502eec7239ec0a0e6517c2","tarball":"https://registry.npmjs.org/@cocodrino/bridge-harness/-/bridge-harness-0.3.16.tgz","fileCount":65,"integrity":"sha512-z7qFAZ1hkhhka0l4IUQocfJm/T0JUuq+/aiDXVXeW7xWmnzSXjyiGxXzsu1LKcUMqccPX60M3VjbuGLn8papxQ==","signatures":[{"sig":"MEUCIH0HzoaPQLzvFSOEkefsRO5goNM9bKlcuCpL+v1fq7TmAiEAw1RQo2mKwSqTsVvLcyEMMgIKTzU3KEY97OVLeKgVtOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDIu8+kCqqtdpU5NJaR+zlsLLLl/Lxr6rUqoqzRUs03GAiBEIqKcnT03jRTdeJLOxNSvGBCff9RFVV8XCHX4z9Jllg=="}],"unpackedSize":161200},"name":"@cocodrino/bridge-harness","type":"module","author":{"name":"cocodrino"},"engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./shared":"./dist/shared/index.js","./nats-manager":"./dist/nats-manager/index.js"},"gitHead":"00aa6335e488586949ee926cc1a543802642da9a","license":"MIT","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"version":"0.3.16","_npmUser":{"name":"cocodrino","email":"clagccs@gmail.com"},"homepage":"https://github.com/cocodrino/bridge-harness#readme","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"_npmVersion":"11.7.0","description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","directories":{},"maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"_nodeVersion":"24.0.1","dependencies":{"zod":"^4.4.3","nats":"^2.29.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bridge-harness_0.3.16_1788198828484_0.7614970649106976"}}},"time":{"created":"2026-05-29T00:50:39.681Z","modified":"2026-08-31T17:53:48.753Z","0.1.0":"2026-05-29T00:50:39.974Z","0.1.1":"2026-05-29T01:05:23.842Z","0.1.3":"2026-05-29T01:33:35.781Z","0.1.5":"2026-05-30T01:43:45.547Z","0.1.6":"2026-05-30T03:01:03.417Z","0.1.7":"2026-06-22T15:33:42.539Z","0.1.8":"2026-06-22T16:50:25.619Z","0.1.11":"2026-07-23T20:18:53.244Z","0.2.1":"2026-07-25T22:21:27.860Z","0.3.1":"2026-07-26T19:31:41.858Z","0.3.2":"2026-07-26T19:51:55.936Z","0.3.7":"2026-07-29T23:23:52.246Z","0.3.10":"2026-08-10T03:18:23.524Z","0.3.12":"2026-08-10T03:44:38.124Z","0.3.13":"2026-08-13T20:07:17.044Z","0.3.14":"2026-08-20T00:22:14.383Z","0.3.16":"2026-08-31T17:53:48.559Z"},"bugs":{"url":"https://github.com/cocodrino/bridge-harness/issues"},"author":{"name":"cocodrino"},"license":"MIT","homepage":"https://github.com/cocodrino/bridge-harness#readme","keywords":["ai-agents","claude-code","pi-agent","nats","mcp","multi-agent","bridge"],"repository":{"url":"git+https://github.com/cocodrino/bridge-harness.git","type":"git"},"description":"Real-time NATS bridge for AI agent communication — connects Claude Code and Pi with zero user intervention","maintainers":[{"name":"cocodrino","email":"clagccs@gmail.com"}],"readme":"<div align=\"center\">\n\n# 🌉 bridge-harness\n\n### Real-time messaging between AI coding agents — **no matter the provider.**\n\nGive **Claude Code** and **Pi** one bridge and they talk to each other *live* —\nasking, answering, going back and forth on their own. No files. No copy-paste.\nNo polling. Just a conversation between agents.\n\n[![npm version](https://img.shields.io/npm/v/@cocodrino/bridge-harness?color=7c3aed&label=npm&logo=npm)](https://www.npmjs.com/package/@cocodrino/bridge-harness)\n[![Pi extension](https://img.shields.io/npm/v/@cocodrino/bridge-harness-pi?color=ec4899&label=pi%20extension&logo=npm)](https://www.npmjs.com/package/@cocodrino/bridge-harness-pi)\n[![built on NATS](https://img.shields.io/badge/transport-NATS.io-27aae1?logo=natsdotio&logoColor=white)](https://nats.io)\n[![license MIT](https://img.shields.io/badge/license-MIT-black)](LICENSE)\n\n</div>\n\n---\n\n## 💬 See it in action\n\nThese aren't chat windows — they're **real coding agents** wiring a fix together\nin real time. You start the thread; they carry it:\n\n```text\n  ╭─ 🔵 Claude Code ─────────────────────────────────────────────╮\n  │  Pi, review the auth module while I refactor the payments     │\n  │  flow — ping me with anything you find.                       │\n  ╰───────────────────────────────────────────────────────────────╯\n        │\n        ⚡ delivered over NATS · Pi wakes up on its own\n        ▼\n  ╭──────────────────────────────────────────────── 🟣 Pi Agent ─╮\n  │  On it. … Found 2 issues in middleware.ts (lines 42 & 88).    │\n  │  Missing token expiry check + a timing-unsafe compare. Patch? │\n  ╰───────────────────────────────────────────────────────────────╯\n        │\n        ⚡ asyncRewake fires · Claude answers instantly\n        ▼\n  ╭─ 🔵 Claude Code ─────────────────────────────────────────────╮\n  │  Yes please. Send the patch, I'll wire it in and run tests.   │\n  ╰───────────────────────────────────────────────────────────────╯\n        │\n        ▼\n  ╭──────────────────────────────────────────────── 🟣 Pi Agent ─╮\n  │  Sent. 🎯 Tests green on my side too. Nice teamwork.          │\n  ╰───────────────────────────────────────────────────────────────╯\n\n         no files · no copy-paste · no polling · pure real-time\n```\n\nMost multi-agent setups make **you** the messenger: copy output from one agent,\npaste it into another, repeat. `bridge-harness` deletes that job. The agents\naddress each other directly over a local NATS server and **react automatically**.\n\n---\n\n## ✨ Why it's different\n\n- ⚡ **Real-time.** [NATS](https://nats.io) pub/sub — sub-millisecond, in-process. No polling, no webhooks.\n- 🧠 **Reactive, both ways.** Claude sends → Pi wakes and processes (`triggerTurn`). Pi replies → Claude wakes (asyncRewake). A true loop, not a one-shot.\n- 🔌 **Provider-agnostic.** The transport doesn't care who's behind the agent — different vendors, same conversation.\n- 🗂️ **No intermediate files.** No scratch file, no `/tmp` handoff, no relay script. Agents talk directly.\n- 🎯 **Reach anyone by identity.** DM `agent:<id>` and it lands across any project or git worktree — no shared room or matching config.\n- 👋 **Global discovery.** `list_agents` shows everyone online (and their project); late joiners still see who's already there.\n- 🏠 **Isolated rooms.** Rooms are project-scoped, so each worktree keeps its own lobby without cross-talk.\n- 🌐 **Local or remote.** Same machine, LAN, or cloud NATS — same conversation, anywhere.\n\n---\n\n## 🤔 Why this instead of sub-agents?\n\nSub-agents (Claude's `Task` tool, workflow fan-out) and bridge-harness solve **different\nproblems** — this isn't a replacement, it's a different shape of collaboration. Reach for\nthe bridge when these matter:\n\n- 🧬 **Different brains, same table — the big one.** Sub-agents are all *the same model* as\n  the parent. The bridge sits **Claude + Pi + omp** together, and Pi/omp bring their own\n  models (gemini, kimi, gpt, deepseek, …). You get **genuine cross-vendor deliberation** —\n  a real second opinion from *another* brain, not another copy of yours.\n- 🔄 **Living peers, two-way dialogue.** A sub-agent is **one-shot**: the parent launches it,\n  it returns a single result, and it **dies**. Bridge agents **persist** — they keep a\n  stable name, their own context, and talk **back and forth**, each waking the other. It's a\n  conversation between colleagues, not a fire-and-collect worker.\n- 👁️ **Human in the loop, in the open.** With `spawn_agent` each agent lives in **its own\n  terminal tab** you can watch, interrupt, and steer in real time. Sub-agents are **black\n  boxes** until they return.\n- 🌍 **Across worktrees, machines, and vendors.** Sub-agents live inside the parent process\n  on one machine; bridge agents reach each other over local, LAN, or internet NATS.\n\n**When sub-agents are the better tool (be honest):** massive cheap fan-out (20 workers\nsearching/reviewing in parallel), deterministic orchestration with structured results, and\nzero setup with automatic cleanup. The bridge leaves live processes running; sub-agents are\nborn and reaped for you.\n\n> **Rule of thumb** — Sub-agents = *ephemeral, hierarchical parallelism* under one\n> orchestrator (task → result → gone). Bridge-harness = *persistent collaboration between\n> heterogeneous peers* (an ongoing, multi-vendor conversation a human can watch and direct).\n>\n> *“15 quick opinions and a summary”* → sub-agents. *“Claude and a different model working\n> together for a while, arguing it out, with me able to step in”* → the bridge.\n\n---\n\n## 🔁 The reactive loop\n\n```mermaid\nsequenceDiagram\n    participant C as 🔵 Claude Code\n    participant N as ⚡ NATS bridge\n    participant P as 🟣 Pi Agent\n    C->>N: send \"review the auth module\"\n    N-->>P: deliver — Pi wakes automatically\n    P->>N: send \"found 2 issues, patch?\"\n    N-->>C: deliver — asyncRewake fires\n    C->>N: send \"yes, wiring it in\"\n    N-->>P: deliver\n    Note over C,P: no files · no copy-paste · pure real-time\n```\n\n---\n\n## 🏗️ Architecture\n\n```text\n   🔵 Claude Code                                  🟣 Pi Agent\n   ┌─────────────────┐                          ┌─────────────────┐\n   │  MCP server     │                          │  Pi extension   │\n   │  + rewake hook  │◄────────────────────────►│  (native API)   │\n   └────────┬────────┘        NATS subjects      └────────┬────────┘\n            │             bridge.{project}.*              │\n            └──────────────────────┬──────────────────────┘\n                                   │\n                        ┌──────────▼──────────┐\n                        │     NATS Server     │\n                        │   localhost:4222    │\n                        │    (auto-start)     │\n                        └─────────────────────┘\n```\n\n**Claude Code side** — an MCP server exposing the bridge as tools:\n`send` · `read` · `list_agents` · `join_room` · `whoami` · `who_is_in` · `use_bridge` · `set_name` · `spawn_agent`.\nA background **asyncRewake hook** wakes Claude the instant a message arrives —\nzero user intervention.\n\n**Pi side** — a TypeScript extension on Pi's native `ExtensionAPI` that delivers\nincoming messages via `pi.sendMessage({ triggerTurn: true })`, so Pi **reacts on\nits own**, and exposes the `agent_bridge` tool to send proactively.\n\n---\n\n## 🚀 Quick start\n\n**Prerequisites:** Node 18+, `nats-server` in PATH (`brew install nats-server`), Pi with extension support.\n\n**Claude Code — one command:**\n\n```bash\nnpm install -g @cocodrino/bridge-harness\nbridge-harness-setup   # registers the MCP server + reactive hook + agent-bridge skill\n```\n\nRestart Claude Code. Tools `send`, `read`, `list_agents`, `join_room`, `whoami`,\n`who_is_in`, `use_bridge`, `set_name`, and `spawn_agent` become available.\n\n> **`bridge-harness-setup` is not optional, even if you registered the MCP server by\n> hand.** The MCP server has no way to push: it hands over messages only when the model\n> calls `read`. What wakes an idle session is the `bridge-rewake` Stop hook that setup\n> installs in `~/.claude/settings.json`. Without it the bridge still connects and still\n> receives — messages just pile up unread while every diagnostic reports success. If you\n> are unsure, run `whoami`: it reports `canBeWokenByIncomingMessages`.\n\n**Pi — one command:**\n\n```bash\npi install npm:@cocodrino/bridge-harness-pi\n```\n\n**oh-my-pi (`omp`) — one command:**\n\n```bash\nomp install @cocodrino/bridge-harness-pi\nomp config set tools.xdev false   # see below — without this the model never sees the tool\n```\n\n> **oh-my-pi hides extension tools by default.** Its `tools.xdev` setting keeps\n> \"rarely-used\" tools out of the request to save prompt space, and extension-registered\n> tools get dropped before the model ever sees them. The extension loads, connects, and\n> shows up in `getActiveTools()` — but `agent_bridge` is missing from the tool list in the\n> outgoing request, so the model correctly reports that it does not have it. Turning\n> `tools.xdev` off ships every mounted tool schema on each request, so disable MCP servers\n> you do not use to keep the prompt lean.\n\nBoth `pi` and `omp` also pick up the bundled **`agent-bridge` skill** automatically — it's\ndeclared via the package's `pi.skills` field and loaded through their skills discovery, so\nthere's no extra step. (On Claude Code, `bridge-harness-setup` installs the skill for you;\nsee [The `agent-bridge` skill](#the-agent-bridge-skill) to push it into more agents.)\n\nBoth running? The bridge is live. **Tell one agent to message the other.**\n\n### The `agent-bridge` skill\n\nBoth packages ship a single, unified **`agent-bridge` skill** that teaches the agent\nhow to operate the bridge correctly — routing model, discovery, `use_bridge`, and\nkeeping its room aligned with the git worktree. It documents both call styles (direct\ntools on Claude Code / Codex, and `agent_bridge action=…` on Pi), so one file works\neverywhere. It installs automatically:\n\n- **Claude Code:** `bridge-harness-setup` copies it to `~/.claude/skills/agent-bridge/`.\n- **Pi:** declared via the `pi.skills` field, so `pi install` picks it up.\n\n**Install it into any agents you choose** with the interactive installer:\n\n```bash\nbridge-harness-skills          # pick agents (Claude Code, Pi, Codex, …)\nbridge-harness-skills --all    # install to all detected, non-interactively\nbridge-harness-skills --force  # overwrite an existing copy\n```\n\nIt detects each agent by its skills directory, skips ones that already have it (unless\n`--force`), and won't clobber your customizations — delete a copy and re-run to update.\n\nTrigger the skill by saying *\"activa bridge harness\"* or asking *\"who's connected on the bridge?\"*.\n\n---\n\n## 🎮 Usage\n\n```text\n# Claude Code → Pi\nsend  to: \"agent:pi\"  message: \"Review the auth module and report back.\"\n       → Pi wakes up automatically and starts working.\n\n# Pi → Claude Code\nagent_bridge  action: \"send\"  to: \"agent:claude-code\"\n              message: \"Auth review done. Found 2 issues.\"\n       → Claude wakes up automatically (asyncRewake) and reads it.\n\n# Who's online?\nlist_agents  → [{ \"agentId\": \"pi-88191\", \"displayName\": \"Pi Agent @ pi-harness-fix\" }]\n\n# Hop both agents onto a shared channel, wherever they launched\nuse_bridge  bridge: \"debugging-session\"\n```\n\n**Debug CLI:**\n\n```bash\nnode dist/cli/index.js send --to pi \"hello from terminal\"\nnode dist/cli/index.js read --watch\nnode dist/cli/index.js agents\n```\n\n---\n\n## 🐣 Spawn a new agent (`spawn_agent`)\n\nDon't just message agents that already exist — **create one on the spot**. `spawn_agent`\nopens a fresh terminal tab, launches a new `pi` or `claude`, and hands it a startup prompt\nthat tells it to get on the bridge, claim a name, and **DM you the moment it's live**.\n\n```text\n# Claude Code — direct tool\nspawn_agent  tool: \"pi\"  name: \"test-verifier\"  task: \"verify the login flow and report findings\"\n\n# Pi / oh-my-pi — via agent_bridge\nagent_bridge  action: \"spawn_agent\"  tool: \"claude\"  name: \"reviewer\"  task: \"review the auth module\"\n```\n\nOr just say it in plain language: **\"crea un agente de pi para que verifique el login\"**.\n\n**What happens:**\n\n1. **Host detection.** A capability probe finds your terminal's pane controller —\n   **cmux → tmux → zellij** — checking those *before* the emulator. (cmux runs on top of\n   ghostty, so `TERM_PROGRAM=ghostty` and `CMUX_SOCKET_PATH` coexist; probing the emulator\n   first would wrongly conclude \"can't open a tab\".)\n2. **Launch + auto-register.** It opens the tab and starts the agent with a one-line prompt:\n   activate the bridge, `set_name \"<name>\"`, DM you to confirm, then do `task`.\n3. **Graceful fallback.** On a plain emulator (or if the spawn fails), it **never fails\n   silently** — it returns the exact command for you to paste into a new tab yourself.\n\nAfter spawning, `read` to catch the new agent's `\"<name> online, ready\"` DM, then coordinate\nover the bridge like any other peer.\n\n```text\n   spawn_agent tool:\"pi\" name:\"pi-buddy\" task:\"…\"\n        │\n        ▼  opens a cmux/tmux/zellij tab, launches pi\n   ╭──────────────────────────────────────────── 🟣 pi-buddy ─╮\n   │  (auto) set_name \"pi-buddy\" · DM → \"pi-buddy online, ready\" │\n   ╰────────────────────────────────────────────────────────────╯\n        │  you: read → see the confirmation → start the task\n        ▼\n```\n\n---\n\n## 📡 Subjects & routing model\n\n```text\nbridge.dm.{agent}              # direct messages  — GLOBAL (by identity)\nbridge.registry                # identity + discovery (join / leave / who-there / here) — GLOBAL\nbridge.presence                # heartbeats / online status — GLOBAL\nbridge.{project}.room.{room}   # room messages    — scoped to a project\n```\n\n**The key model:** DMs and discovery are **global by identity** — you can `send` to\n`agent:<id>` and it reaches that agent across **any** project or git worktree, and\n`list_agents` shows everyone (with their `project`). **Rooms are project-scoped**, so\neach worktree keeps an isolated lobby; a room only reaches agents in the same project.\n\nTo reach an agent in another worktree, **DM it by `agentId`** — no room-joining or\n`use_bridge` needed. Use `use_bridge` only to *share a room* with another project.\n\n**DM durability (JetStream).** `bridge.dm.*` is captured by a JetStream stream\n(30-min / 100-per-recipient retention), so the rewake hook wakes Claude for **every**\nDM — including replies that arrive during its restart — through a durable consumer that\ngets redelivered anything it missed, and offline recipients catch up on reconnect within\nthe window. Rooms stay ephemeral core-NATS. The bundled `nats-server` auto-start enables\nJetStream (`-js`); a remote server must run with it too.\n\n`{project}` defaults to `BRIDGE_PROJECT`, or the **git worktree name** (`basename`\nof `git rev-parse --show-toplevel`), or the cwd name outside a repo. Each worktree\nhas its own isolated rooms — override with `BRIDGE_PROJECT` to share them.\n\n---\n\n## 🌐 Remote agents\n\nAgents don't have to share a machine. `nats-server` listens on `0.0.0.0:4222`:\n\n```bash\n# Same LAN — point both at Machine A's NATS\nBRIDGE_NATS_URL=nats://192.168.1.10:4222 bridge-harness-mcp\nBRIDGE_NATS_URL=nats://192.168.1.10:4222 pi\n\n# Over the internet — cloud NATS (fly.io, Railway, any VPS)\nBRIDGE_NATS_URL=nats://your-server.fly.dev:4222 bridge-harness-mcp\n```\n\nFor internet-facing servers, enable [NATS auth + TLS](https://docs.nats.io/running-a-nats-service/configuration/securing_nats).\nSame NATS URL = same bridge: DMs and discovery work across everyone connected; rooms stay grouped by project.\n\n---\n\n## ⚙️ Environment variables\n\n| Variable | Default | Description |\n|---|---|---|\n| `BRIDGE_PROJECT` | git worktree name (falls back to `basename(cwd())`) | Scopes your **rooms** (isolated per worktree). DMs and discovery are global and ignore this. |\n| `BRIDGE_NATS_URL` | `nats://localhost:4222` | NATS server URL — change for remote agents |\n| `BRIDGE_AGENT_ID` | `{base}-{pid}` | Pin a stable agent ID across restarts (how others DM you) |\n| `BRIDGE_DISPLAY_NAME` | agent base name (cmux-aware) | Human-readable name shown in `list_agents` |\n\n---\n\n## 📁 Project structure\n\n```text\nbridge-harness/\n├── src/\n│   ├── shared/          # NATS subjects, config, identity\n│   ├── nats-manager/    # auto-start, health check, cleanup\n│   ├── mcp-server/      # MCP server for Claude Code\n│   ├── spawn/           # spawn_agent: host probe, command builder, tab dispatcher\n│   └── cli/             # debug CLI\n├── packages/\n│   └── bridge-harness-pi/\n│       └── src/index.ts # Pi extension (TypeScript, ships as source)\n├── hooks/\n│   └── bridge-rewake.js # asyncRewake hook for Claude Code reactivity\n└── tests/               # unit tests (vitest, no NATS required)\n```\n\n---\n\n## 🧪 Tests\n\n```bash\nnpm test\n```\n\nUnit tests cover the NATS manager, MCP tools, Pi extension behavior, and the\nrewake hook — all without a live NATS server.\n\n---\n\n<div align=\"center\">\n\n**Give two agents one bridge, and watch them figure it out together.**\n\nMIT © cocodrino\n\n</div>\n","readmeFilename":"README.md"}