{"_id":"@crewhaus/harness-registry","_rev":"11-0528d8140844d754fe25be8254a9349b","name":"@crewhaus/harness-registry","dist-tags":{"latest":"0.7.0"},"versions":{"0.5.0":{"name":"@crewhaus/harness-registry","version":"0.5.0","author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"license":"Apache-2.0","_id":"@crewhaus/harness-registry@0.5.0","maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","bugs":{"url":"https://github.com/crewhaus/factory/issues"},"dist":{"shasum":"45dc9ec23fc351ec7cd4cc68e279741a84de9a15","tarball":"https://registry.npmjs.org/@crewhaus/harness-registry/-/harness-registry-0.5.0.tgz","fileCount":10,"integrity":"sha512-vnT2cSw2pZBA6Kr3NKpWCXV1g7lR0qQLhzkkzuwmVKnrrZVxTls3lPP+cw9VKTe+7SzhgLiONcrx/wU126YziA==","signatures":[{"sig":"MEQCICSSysTmYot4Q2m8Lu78tay6blJ2MJIzjuZCGOI4LZBQAiAQTtW3GPRw1SZl0eI1HopwPXeCRq1JUBiOhm23m8CThg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@crewhaus%2fharness-registry@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55327},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5b43ce7bade45b6369c1b2718526af04d3fd7567","scripts":{"test":"bun test src"},"_npmUser":{"name":"studiomaxops","email":"crew@crewhaus.ai"},"repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"_npmVersion":"11.19.0","description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@crewhaus/watchme-store":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness-registry_0.5.0_1785968236255_0.3477455773519498","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@crewhaus/harness-registry","version":"0.5.1","author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"license":"Apache-2.0","_id":"@crewhaus/harness-registry@0.5.1","maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","bugs":{"url":"https://github.com/crewhaus/factory/issues"},"dist":{"shasum":"470e0161f685b082512fdba0bc24c8e326111309","tarball":"https://registry.npmjs.org/@crewhaus/harness-registry/-/harness-registry-0.5.1.tgz","fileCount":10,"integrity":"sha512-YiAuaJPPTc3fN7wUW0mXgpu5MGtWRxEIG6p5ZlwoygwfhPffCHkKzWJJ+eeLGPaRlrZp9HxMWjHEIIpQfnM3sw==","signatures":[{"sig":"MEQCIHq2wmB3fnn5xMkjreeuKihxajQcLNBjJ/jSkwkTK5IqAiBCQc9uDcrgcblRiiGlvhjOe0lYSZrFIRqXBoTt8XrrwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@crewhaus%2fharness-registry@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55327},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"8a2814d2d219bc755c72fb49049ccb47c8ff5e24","scripts":{"test":"bun test src"},"_npmUser":{"name":"studiomaxops","email":"crew@crewhaus.ai"},"repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"_npmVersion":"11.19.0","description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@crewhaus/watchme-store":"0.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness-registry_0.5.1_1785983632434_0.6870070611178503","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@crewhaus/harness-registry","version":"0.5.2","author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"license":"Apache-2.0","_id":"@crewhaus/harness-registry@0.5.2","maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","bugs":{"url":"https://github.com/crewhaus/factory/issues"},"dist":{"shasum":"b3f35c051934929f759dfac75dba9daf66c1ebe1","tarball":"https://registry.npmjs.org/@crewhaus/harness-registry/-/harness-registry-0.5.2.tgz","fileCount":10,"integrity":"sha512-z+8FYfamhA9PDfkCMNl1zQ8p32oFk71jhS1Qzl+NH9i8xm2ISr27TPJa61padD3OJ+KwrE7c111uOHpuITGZpA==","signatures":[{"sig":"MEUCIQDKsV5zNY69MwKkFCqOb2FG41+uy3UYRRvhDAmbs1MpKwIgCqSTE5eTou9jcfv5wIOywTmp8ZBwyrKL78AjzesqFlw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@crewhaus%2fharness-registry@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55327},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"114368f9309d03472db07358201415ad53852b4a","scripts":{"test":"bun test src"},"_npmUser":{"name":"studiomaxops","email":"crew@crewhaus.ai"},"repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"_npmVersion":"11.19.0","description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@crewhaus/watchme-store":"0.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness-registry_0.5.2_1786425546985_0.6352380276042557","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@crewhaus/harness-registry","version":"0.5.3","author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"license":"Apache-2.0","_id":"@crewhaus/harness-registry@0.5.3","maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","bugs":{"url":"https://github.com/crewhaus/factory/issues"},"dist":{"shasum":"41274d509e2f0224546829a867dc60f3988bd111","tarball":"https://registry.npmjs.org/@crewhaus/harness-registry/-/harness-registry-0.5.3.tgz","fileCount":10,"integrity":"sha512-XdRnIrDyQxrDNYDe4bXADYvhjf6/U/Ii+nZ/oIC5Pueuv1L46d1JX1XUklZxQFvyi7zEOXe83N9E0x1Yzx+wUw==","signatures":[{"sig":"MEQCICI20D6Yt0ar0sfXuLDRGsCeGctBvXpAGuNztCn489C3AiBAVWTM/b/b3LRhhhU+4o1VCc6C50bGMl3LhsyLFHVnUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@crewhaus%2fharness-registry@0.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59009},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2e158a4c2e7c2f3e76152fa3822c49579de762ad","scripts":{"test":"bun test src"},"_npmUser":{"name":"studiomaxops","email":"crew@crewhaus.ai"},"repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"_npmVersion":"11.19.0","description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@crewhaus/watchme-store":"0.5.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness-registry_0.5.3_1786568177292_0.5210810917082997","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@crewhaus/harness-registry","version":"0.5.4","author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"license":"Apache-2.0","_id":"@crewhaus/harness-registry@0.5.4","maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","bugs":{"url":"https://github.com/crewhaus/factory/issues"},"dist":{"shasum":"b8de5aa9aac313c4c7f832e6c119d29fa8ca79b6","tarball":"https://registry.npmjs.org/@crewhaus/harness-registry/-/harness-registry-0.5.4.tgz","fileCount":10,"integrity":"sha512-TdLvBT+tmVZWZq+RSufpHugqduyL9mqiTk2TSWIKVHQqtFUqhaEVmaLy75opvxBlZ7OL0FZmUbF8xaLNnejUkQ==","signatures":[{"sig":"MEUCIHCUAUu22P4Q/aeZsYPGNpj/HY1jFFD1feQPjkn2McChAiEAwKMYZlo946AGIoI9Mm0FZm/wbDb6Djmp5oZaxPV3sZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@crewhaus%2fharness-registry@0.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59009},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1379187495db321c36779c77b47917793f4908a7","scripts":{"test":"bun test src"},"_npmUser":{"name":"studiomaxops","email":"crew@crewhaus.ai"},"repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"_npmVersion":"11.19.0","description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@crewhaus/watchme-store":"0.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness-registry_0.5.4_1786581688898_0.5663509269791136","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@crewhaus/harness-registry","version":"0.5.5","author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"license":"Apache-2.0","_id":"@crewhaus/harness-registry@0.5.5","maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","bugs":{"url":"https://github.com/crewhaus/factory/issues"},"dist":{"shasum":"51f07d8c1cda32ed54090ee580ae87a2dd685eb9","tarball":"https://registry.npmjs.org/@crewhaus/harness-registry/-/harness-registry-0.5.5.tgz","fileCount":10,"integrity":"sha512-OZYQbq1Vd5R11fuiSQcrkX4ckCF4Lhqd0PWXonZMTazEr6246cZW8UZhQn/M+EHFSmGBELQ5XB2M9XQLiXZxig==","signatures":[{"sig":"MEQCIFBgqYB+SsRlOftALbELPa7xYiNas/uvH5pTgnjv33grAiAfCic5mZ3ewxOUB8f7T68/wI2U06vGLAuakPoeXP4LXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@crewhaus%2fharness-registry@0.5.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59009},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4a0733a74ce317be51475644cab91b2b4adebd24","scripts":{"test":"bun test src"},"_npmUser":{"name":"studiomaxops","email":"crew@crewhaus.ai"},"repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"_npmVersion":"11.19.0","description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@crewhaus/watchme-store":"0.5.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness-registry_0.5.5_1786716145759_0.06540480527704773","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@crewhaus/harness-registry","version":"0.5.6","author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"license":"Apache-2.0","_id":"@crewhaus/harness-registry@0.5.6","maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","bugs":{"url":"https://github.com/crewhaus/factory/issues"},"dist":{"shasum":"51fa75fc0d0d98a949159bd760e2d9efbdabfb59","tarball":"https://registry.npmjs.org/@crewhaus/harness-registry/-/harness-registry-0.5.6.tgz","fileCount":10,"integrity":"sha512-Z6raGPyYokJ9XxUiXUWP2HteXAvsPhZX9JfwsRR5HzXBFcWspQb0Cy1v1IO2AJKnOQsdsknYyj2OlQVbas9Tzw==","signatures":[{"sig":"MEYCIQDi8pjytueOGQ5M4jWgYM0jbzfCAn2hItAYEpq0bn6krAIhANNrJuYZEMJmyMb2rtmJkn4WUYlBSxh+YF0551GAUchX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@crewhaus%2fharness-registry@0.5.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59009},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"275105d2703c4c6ec46435f1a71863ee051069bb","scripts":{"test":"bun test src"},"_npmUser":{"name":"studiomaxops","email":"crew@crewhaus.ai"},"repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"_npmVersion":"11.19.0","description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@crewhaus/watchme-store":"0.5.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness-registry_0.5.6_1786720312439_0.05365860053860061","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"@crewhaus/harness-registry","version":"0.5.7","author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"license":"Apache-2.0","_id":"@crewhaus/harness-registry@0.5.7","maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","bugs":{"url":"https://github.com/crewhaus/factory/issues"},"dist":{"shasum":"902dcaff4cafd2f1bba8dafb311c1642072f94ec","tarball":"https://registry.npmjs.org/@crewhaus/harness-registry/-/harness-registry-0.5.7.tgz","fileCount":10,"integrity":"sha512-IL2UvGohK2msxtOiw4cH+n6tPfZnJ/gWOshlDzjuAO+kpzf31rB5HtdgTawj/5pdznoC8H6AUP/qszRd3yrusg==","signatures":[{"sig":"MEQCIDOQf2p2ZeQfyU0kR/vE8g8JHHaIjRHgaSIck1ImAWnhAiBp1XjeYU37iUWK2iTZ39qab/JqOLkVlPyfsRreyk/QxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@crewhaus%2fharness-registry@0.5.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59009},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"aab4fb9e901e10cb199b754bb957bfb9c58fd624","scripts":{"test":"bun test src"},"_npmUser":{"name":"studiomaxops","email":"crew@crewhaus.ai"},"repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"_npmVersion":"11.19.0","description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@crewhaus/watchme-store":"0.5.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness-registry_0.5.7_1787018135445_0.1630576247490283","host":"s3://npm-registry-packages-npm-production"}},"0.5.8":{"name":"@crewhaus/harness-registry","version":"0.5.8","author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"license":"Apache-2.0","_id":"@crewhaus/harness-registry@0.5.8","maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","bugs":{"url":"https://github.com/crewhaus/factory/issues"},"dist":{"shasum":"f0776aae77952c0fc76b66a0255b993edd7295a5","tarball":"https://registry.npmjs.org/@crewhaus/harness-registry/-/harness-registry-0.5.8.tgz","fileCount":10,"integrity":"sha512-4kvfPKUflHPLn0+6EYzPzqXsxzxYA3mKQO7nRHQ9mSgHBmgYAZXHoevlNC19voYgPHFevvHuJ9gh8PWKnAeNEA==","signatures":[{"sig":"MEQCIAjTuXY06XhueTU1JRtUuUmyj9In0pO9hvIz5QdzqONkAiBmp11tW3gRk4mMxjRDt2ZEepzN8P1nGtWkaQ7usV7QPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@crewhaus%2fharness-registry@0.5.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59883},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7d3cc4f65fa8b2ad7adeda258321188e856ef2b4","scripts":{"test":"bun test src"},"_npmUser":{"name":"studiomaxops","email":"crew@crewhaus.ai"},"repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"_npmVersion":"11.19.1","description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@crewhaus/watchme-store":"0.5.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness-registry_0.5.8_1787898344590_0.5549015379468842","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@crewhaus/harness-registry","version":"0.6.0","author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"license":"Apache-2.0","_id":"@crewhaus/harness-registry@0.6.0","maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","bugs":{"url":"https://github.com/crewhaus/factory/issues"},"dist":{"shasum":"98187ee932e42edd44b7fcae4dc633bc31fc0cf8","tarball":"https://registry.npmjs.org/@crewhaus/harness-registry/-/harness-registry-0.6.0.tgz","fileCount":10,"integrity":"sha512-6rqnBhBbJpsWo9hpgD0VchX94b6qkXfemOUEIoxn/HzWhCkCtrdS5C8WNg9LHoh120cTrRlJ1CzFSXbYU//FAQ==","signatures":[{"sig":"MEUCIDCrh5jeGhfoCdlra6RFY+Ld2hloCZctsP8Tv2zYL8hPAiEA8EV+z4m/vzjabG9YsccUyN3pJJBVgFoi/tgguB1e0M8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@crewhaus%2fharness-registry@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59883},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f171b9d0ef7d79ac47b3c93376e8da50e79a07dd","scripts":{"test":"bun test src"},"_npmUser":{"name":"studiomaxops","email":"crew@crewhaus.ai"},"repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"_npmVersion":"11.19.1","description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@crewhaus/watchme-store":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness-registry_0.6.0_1788871715298_0.382594577362368","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"_id":"@crewhaus/harness-registry@0.7.0","bugs":{"url":"https://github.com/crewhaus/factory/issues"},"dist":{"shasum":"b04b4365ded7b2a615ab54276f4c18c8ba55c8bf","tarball":"https://registry.npmjs.org/@crewhaus/harness-registry/-/harness-registry-0.7.0.tgz","fileCount":10,"integrity":"sha512-Jx2GJM2I/7RclGVhT5cAEk21FzR50rvx/SgEiOVCeNSyAdiPBXH2JHV1Hfwn7yMPpwF0rM/hPVvGPxPr16T/JQ==","signatures":[{"sig":"MEUCIHRY4uGJh9q60TL/vzNugLwq7pvPYWMyWFq3VMwIOmhbAiEA4xIqDRxiWN3FZlYVkCTi02fvxUAiWHKTH50s50hjKMM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHSPzsRH3Q4hQdoTh/PC8zr7wSpcfov5Etfgla9h+ZM2AiAGOgaA2gTFewUWol+TqhrfgOwdAK4EGLs2kX/+R7DT/A=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@crewhaus%2fharness-registry@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59883},"main":"dist/index.js","name":"@crewhaus/harness-registry","type":"module","types":"dist/index.d.ts","author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d96a9a2f7c7758985d7c7d5be53e4d16c670d657","license":"Apache-2.0","scripts":{"test":"bun test src"},"version":"0.7.0","_npmUser":{"name":"studiomaxops","email":"crew@crewhaus.ai"},"homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"_npmVersion":"11.19.1","description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","directories":{},"maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"_nodeVersion":"24.20.0","dependencies":{"@crewhaus/watchme-store":"0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/harness-registry_0.7.0_1790098531578_0.48557144739554947"}}},"time":{"created":"2026-08-05T22:17:16.030Z","modified":"2026-09-22T17:35:32.030Z","0.5.0":"2026-08-05T22:17:16.396Z","0.5.1":"2026-08-06T02:33:52.583Z","0.5.2":"2026-08-11T05:19:07.126Z","0.5.3":"2026-08-12T20:56:17.441Z","0.5.4":"2026-08-13T00:41:29.055Z","0.5.5":"2026-08-14T14:02:25.921Z","0.5.6":"2026-08-14T15:11:52.580Z","0.5.7":"2026-08-18T01:55:35.632Z","0.5.8":"2026-08-28T06:25:44.735Z","0.6.0":"2026-09-08T12:48:35.432Z","0.7.0":"2026-09-22T17:35:31.662Z"},"bugs":{"url":"https://github.com/crewhaus/factory/issues"},"author":{"url":"https://crewhaus.ai","name":"Max Meier","email":"max@crewhaus.ai"},"license":"Apache-2.0","homepage":"https://github.com/crewhaus/factory/tree/main/packages/harness-registry#readme","repository":{"url":"git+https://github.com/crewhaus/factory.git","type":"git","directory":"packages/harness-registry"},"description":"Machine-wide harness registry (harnesses.json v2) — stable hrn_ ids, groups/tags/pins, scan roots, missing-dir stamping, and watchme registry interop behind the harness manager","maintainers":[{"name":"studiomaxops","email":"crew@crewhaus.ai"}],"readme":"# @crewhaus/harness-registry\n\nThe machine-wide harness registry — one JSON document\n(`<registryRoot>/harnesses.json`, format `v: 2`) listing every harness\nregistered on this machine, plus user-configured scan roots and group\ndefinitions. This is the registry-file layer behind the harness manager and\nits CLI twins.\n\nPure registry-file layer by design: it never parses specs (callers supply\n`specName`/`target`) and never scans the filesystem for harnesses\n(discovery is the inventory layer's job).\n\n## Roots and switches\n\n- Registry root: the directory containing `harnesses.json` —\n  `CREWHAUS_REGISTRY_ROOT`, default `~/.crewhaus`. An explicit `root`\n  option wins over the env var.\n- `CREWHAUS_NO_REGISTRY=1` — global opt-out: every write becomes a no-op\n  while reads keep working.\n\n## Document shape (v2)\n\n`harnesses[]` entries carry a stable crypto-random id (`hrn_` + 16\nlowercase hex, minted on first registration), the absolute `dir` (THE\nupsert identity key), `specName`/`target`, provenance\n(`origin: scan | manual | run-hook | import` + `originDetail`), ISO\n`registeredAt`/`lastSeen`, user-managed `groups`/`tags`/`pinned`/`notes`,\n`kind: local | remote`, a `watchme: { share }` compat block, opaque\n`remotes[]` deployment pointers, and `missingSince`. Top-level `scanRoots[]`\n(`dir`, `depth`, `auto`, `rescanIntervalMin`, `lastScanAt`) and `groups[]`\n(`name`, `order`, `color`) ride along.\n\nThe format is **additive**: unknown fields anywhere in the document are\ntolerated on read and preserved on rewrite, so older and newer CLIs can\nshare one file. Documents with `v < 2` (or none — the legacy watchme\nregistry format) are lifted best-effort on read and healed on the next\nwrite.\n\n## Write discipline\n\nAtomic tmp+rename with per-writer-unique tmp names, file mode `0600`,\ndirectory mode `0700`, and read-merge-write with a small\nfingerprint-checked retry loop so two same-machine writers do not lose each\nother's rows. Vanished directories are **never silently pruned**: `list()`\nstamps `missingSince` (and clears it when the dir is back); only an\nexplicit `remove()` deletes a row. `list()`'s stamp/lift persists are\nbest-effort — on an unwritable registry root it warns and returns the\ncomputed view un-persisted rather than failing the read.\n\n## API\n\n`openHangarRegistry({ root?, watchmeRoot?, now?, env?, onWarn? })` returns\n`{ path, disabled, list, get, upsert, remove, relocate, setGroups, setTags,\nsetPinned, setNotes, listGroups, addGroup, updateGroup, removeGroup,\nreorderGroups, listScanRoots, addScanRoot, updateScanRoot, removeScanRoot,\nregisterHook, seedFromWatchme }`.\n\n- `upsert` is keyed by absolute dir: new entries mint an id; refreshes keep\n  `id`/`registeredAt`/`origin` and the user-managed fields\n  (groups/tags/pinned/notes are **never clobbered** by a refresh), update\n  `lastSeen` plus any descriptive fields provided, and clear `missingSince`.\n- `relocate(id, newDir)` points an entry at a new directory under the same\n  id (it throws if `newDir` already belongs to another entry).\n- `registerHook({ dir, specName?, target?, originDetail })` — and the\n  module-level `registerHarnessHook(fields, opts?)` — is the best-effort\n  self-registration entry point for CLI hooks: it never throws (any failure\n  collapses into `{ ok: false }`, because a registry write must never fail\n  the command that triggered it) and respects `CREWHAUS_NO_REGISTRY`.\n\n## watchme interop\n\nWatchme membership means **explicitly watched** — only the watchme verbs\n(`watchme start`, `watchme stop --forget`) enroll or un-enroll a harness.\nInterop goes through `@crewhaus/watchme-store`'s own API (never by touching\nits file format):\n\n- `seedFromWatchme()` merges the watchme registry in once (idempotent —\n  safe to call every boot; already-registered dirs are left untouched).\n  Imported entries get `origin: \"import\"` / `originDetail: \"watchme\"`.\n- `upsert`/`relocate` mirror **freshness only** onto a watchme row that\n  already exists (dir/specName/target); they never create a watchme row,\n  never delete one, and never touch `share` or `agentId`. `remove()` does\n  not touch the watchme registry at all. A mirror failure never fails the\n  primary write (it is reported via `onWarn`, silent by default).\n","readmeFilename":"README.md"}