{"_id":"@polycore/runner","_rev":"32-a0c589f52ff56fc57e2ee016ef445728","name":"@polycore/runner","dist-tags":{"latest":"2.16.0"},"versions":{"0.1.0":{"name":"@polycore/runner","version":"0.1.0","_id":"@polycore/runner@0.1.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"96569771b5914b648a20720834d5b63e17f6af55","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-0.1.0.tgz","fileCount":11,"integrity":"sha512-co9w60GtcEjdUBkPOKEZO5hjqIPhgQdc4zuyhrU2FVbzlnTY4UDdFMTT3SbiaFMbqFVm8FV2Av+TxH5QPMznvQ==","signatures":[{"sig":"MEQCIBQJI8Az+seMDBioP6b8mdvPwZBXUEHUWuVIEHdCD39gAiBWlvB1yiiBDMe6LbXAeLeAQWes0FGZp0NGaqJUaM+Umg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67401},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-0.1.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/07e5bf83c955333ee0aa29e3e6af6dda/polycore-runner-0.1.0.tgz","_integrity":"sha512-co9w60GtcEjdUBkPOKEZO5hjqIPhgQdc4zuyhrU2FVbzlnTY4UDdFMTT3SbiaFMbqFVm8FV2Av+TxH5QPMznvQ==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained connectors against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","firebase-admin":"^14.0.0","@polycore/protocol":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_0.1.0_1783182997670_0.6806113905646229","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@polycore/runner","version":"0.1.1","_id":"@polycore/runner@0.1.1","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"648af1e50a2d9b9d2d1a682f975ad8b4f3ac36ca","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-0.1.1.tgz","fileCount":11,"integrity":"sha512-I3dIw7ZsLpEdhb+jSGqnXttzKsdLgUJyQoOdEa6YM1T8jhChbVeljNtWsfmTYGHbrhWDNVI9mfbO4AgJI603aA==","signatures":[{"sig":"MEYCIQDoxyQNgigfs1WOBlVWIalJCsm5at6J5QtfA3n6kHLXCgIhAPNR9xUIKdoauQKdvD29FknSCI7aNwx4Fkq+OSeI7bmq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67401},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-0.1.1.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/c039a69299833f55dadaf979e4725b4c/polycore-runner-0.1.1.tgz","_integrity":"sha512-I3dIw7ZsLpEdhb+jSGqnXttzKsdLgUJyQoOdEa6YM1T8jhChbVeljNtWsfmTYGHbrhWDNVI9mfbO4AgJI603aA==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained connectors against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","firebase-admin":"^14.0.0","@polycore/protocol":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_0.1.1_1783209535718_0.9535488424249883","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@polycore/runner","version":"0.2.0","_id":"@polycore/runner@0.2.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"415441fbaf736a8434ac3b5d5264d981cc9e6d4a","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-0.2.0.tgz","fileCount":11,"integrity":"sha512-fR8ZMsHDULuNAH+VAUglgTjBcyDy3fVdcZiqTiF8ZKIBcFqI+gBmKUu24EqiUlo79zs7FCUVi+Sn3WetDg9kow==","signatures":[{"sig":"MEUCIHcx1j2Zx5O/G0USDUa3AZCWmO9B96U5XjYr7robyKXPAiEAqtz54nObymHQJYL9SWvXs8KPlvX6dCMEDyDd3IdbpDQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74145},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-0.2.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/92bd893af3b55d11ed0ed9f05ec68c57/polycore-runner-0.2.0.tgz","_integrity":"sha512-fR8ZMsHDULuNAH+VAUglgTjBcyDy3fVdcZiqTiF8ZKIBcFqI+gBmKUu24EqiUlo79zs7FCUVi+Sn3WetDg9kow==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained connectors against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","firebase-admin":"^14.0.0","@polycore/protocol":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_0.2.0_1783252463971_0.7258465877899658","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@polycore/runner","version":"0.3.0","_id":"@polycore/runner@0.3.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"aa6bcacfc20ae5945beff0ea41adc0727a67afb3","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-0.3.0.tgz","fileCount":16,"integrity":"sha512-HlONcMJw+4V8uKjXzLO3rRQud7/goWzydh78XUvzS+ho7VBRh3r4qfh/g8D/K6ARZHpRarc8tLG8N5IShvAjRg==","signatures":[{"sig":"MEUCIQDVVknL88hp6HtrVIVpcp1psYph9hHUqWmv0x0xfmm1hAIgaIhWuLty1OKDtEUFfBERSqKwEWYjvLp+F/4f7YR0QBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98366},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-0.3.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/4edeb0e1aa18b6023403a525c26ea34d/polycore-runner-0.3.0.tgz","_integrity":"sha512-HlONcMJw+4V8uKjXzLO3rRQud7/goWzydh78XUvzS+ho7VBRh3r4qfh/g8D/K6ARZHpRarc8tLG8N5IShvAjRg==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained connectors against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","firebase-admin":"^14.0.0","@polycore/protocol":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_0.3.0_1783778992367_0.38120933762012976","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@polycore/runner","version":"0.4.0","_id":"@polycore/runner@0.4.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"9192051092f2dd8c0b652f4dfefdeb0a3c678ce7","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-0.4.0.tgz","fileCount":16,"integrity":"sha512-ZaajddTxOT4+G3B2pnpA19Qaqun3MW5iGOYseg6HAFRbnxLy0gane/7rO2ozDZQTYJ++UkM72MOjiPYQYRPijQ==","signatures":[{"sig":"MEYCIQDmUuG27mvgEimAaGQ/uwh3H6YSUhcpOOTEUbZCqtO8oQIhAKyFKOesRa22dSmwhXfiCE07ZgMKvFTEqHcASgGPJjfv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99522},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-0.4.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/af1de407cf26aa86459eb0d38fc38db3/polycore-runner-0.4.0.tgz","_integrity":"sha512-ZaajddTxOT4+G3B2pnpA19Qaqun3MW5iGOYseg6HAFRbnxLy0gane/7rO2ozDZQTYJ++UkM72MOjiPYQYRPijQ==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained connectors against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","firebase-admin":"^14.0.0","@polycore/protocol":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_0.4.0_1783801674586_0.05805100773250049","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@polycore/runner","version":"0.5.0","_id":"@polycore/runner@0.5.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"015f1a2e4e1f675ad40d15756bac46df6ed79826","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-0.5.0.tgz","fileCount":16,"integrity":"sha512-cTUlvJl0Hht1sooX5CUoEzatEdaFrmJCVDQj2vgS7gturQ4Nn4WSTr8/FJKJQdGr4cg964wWu6ainsZouuCLPg==","signatures":[{"sig":"MEQCIE1FesU3M+3sX/zYYaxByYvm37B7NJimCiEEKeS1twdSAiAJR4mmi3Xsr4GzAzSe5L9IlbWV5L+sDu6FB710CGCPrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99764},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-0.5.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/696f0bdbb7ca46ec8268bbebef2315d5/polycore-runner-0.5.0.tgz","_integrity":"sha512-cTUlvJl0Hht1sooX5CUoEzatEdaFrmJCVDQj2vgS7gturQ4Nn4WSTr8/FJKJQdGr4cg964wWu6ainsZouuCLPg==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained connectors against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","firebase-admin":"^14.0.0","@polycore/protocol":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_0.5.0_1783882109602_0.9817285476894642","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@polycore/runner","version":"1.0.0","_id":"@polycore/runner@1.0.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"1ce93bde371a60dfdf249a318e32bd595aa4b1eb","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-1.0.0.tgz","fileCount":16,"integrity":"sha512-cp7v7d0w8xDHOvd0xarv2NUplRNY5Vg5HTLnklPTLpQAGewAOrFJT3YXvhL9Lm3+ViKNV656AEvdWiJMHjAM4g==","signatures":[{"sig":"MEQCIGSof9hm7WyFX9GY+c4DO3PCfpzSrKDwCOwRgM2ZOmuLAiB6foLNb0Lt8JvqDVy2UK5nRHZ8nIzMwaVywixRxhXTBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99624},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-1.0.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/8583979d908589598db7cb80f590ceb3/polycore-runner-1.0.0.tgz","_integrity":"sha512-cp7v7d0w8xDHOvd0xarv2NUplRNY5Vg5HTLnklPTLpQAGewAOrFJT3YXvhL9Lm3+ViKNV656AEvdWiJMHjAM4g==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained connectors against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","firebase-admin":"^14.0.0","@polycore/protocol":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_1.0.0_1783886226099_0.44922150049000464","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@polycore/runner","version":"2.0.0","_id":"@polycore/runner@2.0.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"832a17acc00d04579912f06bb67e1c3ebf1a8f6f","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.0.0.tgz","fileCount":16,"integrity":"sha512-dDKnNPOBE0InilVjL8I3FnvgkJ7RU/rORmNXnHSrQIfM7M9mkB4HO47SUyaG4BzS4jSsAH2moP9jdz/dh1H5SQ==","signatures":[{"sig":"MEYCIQCaghH+umgypTTIfioqYUmzoUJmEZfNxAqa55dP+mEGwQIhAJK/VrIZYx/QLcdcNBhErEuG/aS/cFeJ6akPVUIkngAA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96504},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.0.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/fb215de34548aa4f11f14a929745d60c/polycore-runner-2.0.0.tgz","_integrity":"sha512-dDKnNPOBE0InilVjL8I3FnvgkJ7RU/rORmNXnHSrQIfM7M9mkB4HO47SUyaG4BzS4jSsAH2moP9jdz/dh1H5SQ==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained connectors against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","firebase-admin":"^14.0.0","@polycore/protocol":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.0.0_1784164891146_0.8596377156445416","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@polycore/runner","version":"2.1.0","_id":"@polycore/runner@2.1.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"dcd658241dc5b356a43066a2113d81094d28028b","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.1.0.tgz","fileCount":16,"integrity":"sha512-AYVJ6z8Ep6SiyAMVINhy8Nw2TtZw7wPB7QyAHFXpA7NFDPvDukG2RCHPDKaBbDaZ7Xz3x1aShvm6Zw7wa6tDlw==","signatures":[{"sig":"MEUCIH0qGw5K3sUA+f52EI9uxav7vZxHuQu9D6sqMf7Dj8raAiEAgY3jKA8XYn8OoVxirA7q/qJj9IP70PhfQyLmH7Zz/ns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96289},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.1.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/a083db63941aa0fb77a7aa7f369392b2/polycore-runner-2.1.0.tgz","_integrity":"sha512-AYVJ6z8Ep6SiyAMVINhy8Nw2TtZw7wPB7QyAHFXpA7NFDPvDukG2RCHPDKaBbDaZ7Xz3x1aShvm6Zw7wa6tDlw==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained queries against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","firebase-admin":"^14.0.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.1.0_1784384001834_0.2108299842754362","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@polycore/runner","version":"2.2.0","_id":"@polycore/runner@2.2.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"4cec8b8227bd65b213896b87d121364f8b9dc6bf","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.2.0.tgz","fileCount":16,"integrity":"sha512-ukfem+/AnvwFlatam8CekwjZE0yApGAVB+O93LZjZ4ah7j1ELrtcTQfXDeoEFsM3Xz+dlkMtZp1rdo0euQY7zQ==","signatures":[{"sig":"MEQCIA2VbBBr3//TSFSE5MFm/hZAFNA45zVKi+2+6vp0ku3gAiBEQJ6mat/4ixOL2WDEvzt2hxd+Xu4htzmdHAg0wbumQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81994},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.2.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/b1479a2effd56b6e237c9e909f9af78b/polycore-runner-2.2.0.tgz","_integrity":"sha512-ukfem+/AnvwFlatam8CekwjZE0yApGAVB+O93LZjZ4ah7j1ELrtcTQfXDeoEFsM3Xz+dlkMtZp1rdo0euQY7zQ==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained queries against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","firebase-admin":"^14.0.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.2.0_1784387085374_0.20639537149982679","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@polycore/runner","version":"2.3.0","_id":"@polycore/runner@2.3.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"7d13a876dd079fbb79c36b425778ef3c13943af1","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.3.0.tgz","fileCount":17,"integrity":"sha512-tNHXpRSH+mhAa3fEKqONZmXiOioT7/wrWoEKWi85DqJaW5QaJ96h85SdDA0ubW42Hhgt0RQezeXebp04J8UVhw==","signatures":[{"sig":"MEQCIDg7jfWmeb+6kyOvwVLuivJRy+2B2pV0tOfNs83wwe0gAiAPeFibjHysD3ZDzIABmq9dhvivNXvBMBtFF2/DKzIrrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96093},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.3.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/a606bf3094220742fd538caa9a1ce055/polycore-runner-2.3.0.tgz","_integrity":"sha512-tNHXpRSH+mhAa3fEKqONZmXiOioT7/wrWoEKWi85DqJaW5QaJ96h85SdDA0ubW42Hhgt0RQezeXebp04J8UVhw==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained queries against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.0.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.3.0_1784715958397_0.7417661893862912","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@polycore/runner","version":"2.4.0","_id":"@polycore/runner@2.4.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"a6f796cd60e8fb23ffadc0d17753479f9b3f219b","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.4.0.tgz","fileCount":18,"integrity":"sha512-lIRoMMGsPrFKkcLc+qN95XRgplNt7Gw6Lfon5CwDOFhg1mhnjTvd2sDtMwgu+SfeNb/DZUNGTtGxrUus9aBhXw==","signatures":[{"sig":"MEUCIC0rFxiEdbf8cvCYWue1znxxTWRnLnh4x5X7L8HDF4IPAiEAj5KC4y3lWLFZygnOhD9ZVIL7zDPORdPNVeQjHQt8+oY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107599},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.4.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/9cbd9d9d6cf44f393fb41fb834841046/polycore-runner-2.4.0.tgz","_integrity":"sha512-lIRoMMGsPrFKkcLc+qN95XRgplNt7Gw6Lfon5CwDOFhg1mhnjTvd2sDtMwgu+SfeNb/DZUNGTtGxrUus9aBhXw==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained queries against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.0.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.4.0_1784835726379_0.4369676860653986","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@polycore/runner","version":"2.5.0","_id":"@polycore/runner@2.5.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"3775a9d21195d2e6c2533f8e291898ff7ac3ccc7","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.5.0.tgz","fileCount":20,"integrity":"sha512-FB072JjAJVUz4gAvwaGv4i4psP+ZjZEZLxUK9mY2U21n9c7GFzrmlY5hafxUiiPKpik5Rf53J6t0XMfriNCTOQ==","signatures":[{"sig":"MEYCIQDoeILQz1y0aNEm5+KOsFZaHjyk+zh/sh2pmeZPafsyEAIhAO0uIdt4BLyHXEgWEOytEk7cfVVdBA+zB92CcSrE8ofq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135175},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.5.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/cd095e75ed8a493abe0211926df28c76/polycore-runner-2.5.0.tgz","_integrity":"sha512-FB072JjAJVUz4gAvwaGv4i4psP+ZjZEZLxUK9mY2U21n9c7GFzrmlY5hafxUiiPKpik5Rf53J6t0XMfriNCTOQ==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained queries against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.0.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.5.0_1784886116666_0.19341884884103","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"@polycore/runner","version":"2.5.1","_id":"@polycore/runner@2.5.1","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"aea33ec7205c53d74fdb63c306b8042996d0984e","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.5.1.tgz","fileCount":20,"integrity":"sha512-ZNCT7vUOV9H/GkXhL+6chELEOs1L/IS6lKunplSHZlcZX/ZO7xlnS7b5uTKFBALb+UodOGJanJMBg6LPAXwpDg==","signatures":[{"sig":"MEUCIC7Mi5Ex2Ddle38QVE3iJvYPU5GWawHWRa9awxANoTSJAiEAohbDisu8b3bGTtvws6309AlDjqltNGmzecSPSqWKOdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137867},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.5.1.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/e73e879435a6236e44f7c9b126f3b1d3/polycore-runner-2.5.1.tgz","_integrity":"sha512-ZNCT7vUOV9H/GkXhL+6chELEOs1L/IS6lKunplSHZlcZX/ZO7xlnS7b5uTKFBALb+UodOGJanJMBg6LPAXwpDg==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained queries against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.0.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.5.1_1784900769942_0.906545480956412","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@polycore/runner","version":"2.6.0","_id":"@polycore/runner@2.6.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"d28b28acdeaee2e7a45183f18cb29e5a0ce5f105","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.6.0.tgz","fileCount":21,"integrity":"sha512-+ANsNUrzSmqf44Bt9he5hFwMhQYyjFqj6wenRAbAwADJj/fO9Xef9297QLfi88kqZTTpCaOKFV80RQ+qq+EO/Q==","signatures":[{"sig":"MEYCIQCeAyegFmifoW7zJ7801oEfXOzJaZMBy00aEVsJBo7SKgIhANWkY7LgqCcAVvVNlecC8jwmT8aKk0Iaj8FNQ+WfTu1k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168428},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.6.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/9c6fc8234e668215e309a56b337698c0/polycore-runner-2.6.0.tgz","_integrity":"sha512-+ANsNUrzSmqf44Bt9he5hFwMhQYyjFqj6wenRAbAwADJj/fO9Xef9297QLfi88kqZTTpCaOKFV80RQ+qq+EO/Q==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained queries against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.0.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.6.0_1784987181466_0.5798660354485732","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"name":"@polycore/runner","version":"2.6.1","_id":"@polycore/runner@2.6.1","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"c4edc33f39fe08d2bd079d6275acac82c66d75d1","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.6.1.tgz","fileCount":21,"integrity":"sha512-JWs9+rLZkjJEjsxAFzMpUwoAPItodOel3dUIo+O7KGYEBEjWDl7EmJ8unrdFWV1q1TufkTaTw2YH97lge76RTg==","signatures":[{"sig":"MEUCIHYdxOyYR3fsv7O6zxFZDmuVUxLQ3NFa4UpjdzenRS0SAiEAvy0uSuVZ7pRZr0vWM77pTkEC5IQhp0dagvT1wJAaL0A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169264},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.6.1.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/8c3bfd35b80b0cf4518cc3a85905d605/polycore-runner-2.6.1.tgz","_integrity":"sha512-JWs9+rLZkjJEjsxAFzMpUwoAPItodOel3dUIo+O7KGYEBEjWDl7EmJ8unrdFWV1q1TufkTaTw2YH97lge76RTg==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained queries against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.18.3","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.0.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.6","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.6.1_1785240053754_0.29647279544213956","host":"s3://npm-registry-packages-npm-production"}},"2.6.2":{"name":"@polycore/runner","version":"2.6.2","_id":"@polycore/runner@2.6.2","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"ab0d65d91498a09cdf466c32e514bf7dd18c85dd","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.6.2.tgz","fileCount":21,"integrity":"sha512-P3bWwKBKEwkVRz6J3UcYVjO1T/qkEgSlvtpr/nZcYKTD/aUNwcPVbNelube+v3JDpdLtE6yC4GT9xs8kKXG45Q==","signatures":[{"sig":"MEUCIFj3cSakEM+3V4kWEeJMtAcSQKcK+RfI3pKfF81kvorPAiEAkUCwZblZ0uqIIrGwBb0L7MGdGaNKtyvVuj3PduLGDa4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169265},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.6.2.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/dff396e829ac9d13e4a9d6967659ace9/polycore-runner-2.6.2.tgz","_integrity":"sha512-P3bWwKBKEwkVRz6J3UcYVjO1T/qkEgSlvtpr/nZcYKTD/aUNwcPVbNelube+v3JDpdLtE6yC4GT9xs8kKXG45Q==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained queries against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.6.2_1785280565254_0.028380023455216508","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@polycore/runner","version":"2.7.0","_id":"@polycore/runner@2.7.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"7ef6feca91647ca1df5f188c6d2f5f79e6ceb2aa","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.7.0.tgz","fileCount":24,"integrity":"sha512-OrVaKfIIjanEXuxbWD6U3MwkLSquHWMaMVode6DOgLXVMBfwNJ6dDOy6KWstyao6JdjY3/4/upBiCzA0avk/gA==","signatures":[{"sig":"MEYCIQDLLU/LOwQ09fjI0Y64RSoUc6huvvHxQp1/TC8PMVDrQgIhAP5rNpsxgTSnLDsOScNYyIr/ziw2dBTKcFmyBj0v07Tu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215183},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.7.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/6cdb74f98df932d19145b1b304293f13/polycore-runner-2.7.0.tgz","_integrity":"sha512-OrVaKfIIjanEXuxbWD6U3MwkLSquHWMaMVode6DOgLXVMBfwNJ6dDOy6KWstyao6JdjY3/4/upBiCzA0avk/gA==","_npmVersion":"10.9.8","description":"Polycore runner: executes governed, read-only-constrained queries against a customer's datastores. Runs in the customer's own infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.7.0_1785321579866_0.3115263195943121","host":"s3://npm-registry-packages-npm-production"}},"2.7.1":{"name":"@polycore/runner","version":"2.7.1","_id":"@polycore/runner@2.7.1","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"2a7669a6695c529d704d7e8fa5aa2a0936e5cd6b","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.7.1.tgz","fileCount":24,"integrity":"sha512-GebvSk2qLq0qi10MnaWW5Cj6O+3L5mqMpZWl1c3ATHY4tQYkDcguqVfnWS4UWMd+p4om3SUoKK0BcCXQC3e3qg==","signatures":[{"sig":"MEUCIEWd3c9TZafvdJaVzWNPHuXieeGrrCEjuejBDC+onMCgAiEA89BhPh3BpNhE9sevECdrMxfdNrREiC7r30YYtm3locM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215374},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.7.1.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/fc437f3f566333501f895678e3ae1932/polycore-runner-2.7.1.tgz","_integrity":"sha512-GebvSk2qLq0qi10MnaWW5Cj6O+3L5mqMpZWl1c3ATHY4tQYkDcguqVfnWS4UWMd+p4om3SUoKK0BcCXQC3e3qg==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.7.1_1785339948102_0.6510517898282715","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"@polycore/runner","version":"2.8.0","_id":"@polycore/runner@2.8.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"abc87c356a5d85b194e4bd019842909df20b771e","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.8.0.tgz","fileCount":24,"integrity":"sha512-A53bhEsnfEuhFb6wwHMwT8z63x5Cn5POqlYRSioOClo86+jUZRu+sKNNKkK/te27mWAIqfUr8S7hBVxLA5jHxQ==","signatures":[{"sig":"MEUCIGhGq0Q6KkNhoJlAz5XHOWE7Cnj06cNLsoSPP4IbexnDAiEA6usmLNTB2ewwU/PRBVpBpjt+ohomvO701O1eyX/7I3g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216391},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.8.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/2ce76ee5125c28a10cfd26a0ac52d66d/polycore-runner-2.8.0.tgz","_integrity":"sha512-A53bhEsnfEuhFb6wwHMwT8z63x5Cn5POqlYRSioOClo86+jUZRu+sKNNKkK/te27mWAIqfUr8S7hBVxLA5jHxQ==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.8.0_1785355999661_0.5306392392245689","host":"s3://npm-registry-packages-npm-production"}},"2.8.1":{"name":"@polycore/runner","version":"2.8.1","_id":"@polycore/runner@2.8.1","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"8d7a6a088d6fb8d15dc3e15f0971432b6ca835f3","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.8.1.tgz","fileCount":24,"integrity":"sha512-/YCYHoBblB4SEcuwecHsNzBaHUa/nRDqOOKD2Hu+luZlneQviyx88fk3XkycZSpiI/gnHMmXJ7ujo+Gy7vVB4Q==","signatures":[{"sig":"MEQCIAif8olEyA60zSQqqfSzyGs3m9F+WkpoulMa8zunU4bdAiBUJ45EN40IafPiU+zCsbN2fk7PWya/JMBgF5cPzGYThA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217453},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.8.1.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/8f1e7a1c55ffac1ee61c5a141ab28406/polycore-runner-2.8.1.tgz","_integrity":"sha512-/YCYHoBblB4SEcuwecHsNzBaHUa/nRDqOOKD2Hu+luZlneQviyx88fk3XkycZSpiI/gnHMmXJ7ujo+Gy7vVB4Q==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.8.1_1785452330312_0.20592931082761123","host":"s3://npm-registry-packages-npm-production"}},"2.8.2":{"name":"@polycore/runner","version":"2.8.2","_id":"@polycore/runner@2.8.2","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"0a41776b7ae2956356ec3fcd2e66efd711d37675","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.8.2.tgz","fileCount":24,"integrity":"sha512-QfEcWJtPy3ALmHzUdPkwkBh8JtdLeTwtO5386FOMwdq9OxgGFAHaltFO2o8A4vqGuXKZGfSQGdPeDJw7uGYtbw==","signatures":[{"sig":"MEUCIBK/GYO/F3UM8DJCV3dFzzXQQiR/UJGmf7Jw1vBE2IpwAiEA+h6FhvTvHsvC/rp5TRuY2P8MR/oQUi5hkK1OV+Zgumc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218710},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.8.2.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/bc1715fca08d9c6ee4bf167d0f78a689/polycore-runner-2.8.2.tgz","_integrity":"sha512-QfEcWJtPy3ALmHzUdPkwkBh8JtdLeTwtO5386FOMwdq9OxgGFAHaltFO2o8A4vqGuXKZGfSQGdPeDJw7uGYtbw==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.8.2_1785479793382_0.20691515594273757","host":"s3://npm-registry-packages-npm-production"}},"2.8.3":{"name":"@polycore/runner","version":"2.8.3","_id":"@polycore/runner@2.8.3","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"0984c853b399487369dc9df9bdffa034066559e6","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.8.3.tgz","fileCount":24,"integrity":"sha512-9DmO794axktsvYPPYN134s9/SJHMNs2tVl54RuZ73j5KW7cfLtEtKcXDM/87eb3CQBzp0oYr9ICfjMpvhpYtfA==","signatures":[{"sig":"MEUCIEaglAxkd3EMuiC4WgNS6YKLyib91mAVa+ZXGP1O/c4aAiEAyVhTK1CJsj7pxSJjILC+VlPhvRXVKRQEGyJs2rf+ZL0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218879},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.8.3.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/aeceaef49d2e778c7ab72164cf5aec4d/polycore-runner-2.8.3.tgz","_integrity":"sha512-9DmO794axktsvYPPYN134s9/SJHMNs2tVl54RuZ73j5KW7cfLtEtKcXDM/87eb3CQBzp0oYr9ICfjMpvhpYtfA==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.8.3_1785667263266_0.7156873844575773","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"@polycore/runner","version":"2.9.0","_id":"@polycore/runner@2.9.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"76c90d4951a05a3fd251d70c4b4252c5e7e184b5","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.9.0.tgz","fileCount":27,"integrity":"sha512-F5YpHXOYgU1tUpFLiheVNvyhhFpfZH1CHl087i8MaoJ1EnLrI7Mq6uHJPUKmw8ZmEFRpI8rjDdRuLigci3JS/w==","signatures":[{"sig":"MEQCICMmjcKpbh0ShhXKXrI5SAWIGLV7rLs0Jo9hnFgKws5uAiAn1Q2TOkMDbJzXdIpx7nfP5TyDJQSbxTkF+hBbh7E7Ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":287459},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.9.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","smoke:posthog":"tsx scripts/posthog-smoke.ts"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/fa8b92d4d8d05332a1176256a97ab392/polycore-runner-2.9.0.tgz","_integrity":"sha512-F5YpHXOYgU1tUpFLiheVNvyhhFpfZH1CHl087i8MaoJ1EnLrI7Mq6uHJPUKmw8ZmEFRpI8rjDdRuLigci3JS/w==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.9.0_1785696727898_0.7892808227475876","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"@polycore/runner","version":"2.10.0","_id":"@polycore/runner@2.10.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"fc43dda2980ff675ca1b22c1bd3727b43569a79e","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.10.0.tgz","fileCount":29,"integrity":"sha512-X1NZOuG+fy5HILA3SfhAUd0Wi2fE3XrdFcH8S8MpPqlpSRe3kF5yBxXDZs450Vz495tPRjT0l2jKiNuEcHc2uQ==","signatures":[{"sig":"MEYCIQC9VBeg3eF9hqIszEslD9m4TdXGGxoAw8bg8M93d5HZuwIhAOWGsuhgdTme8F+2X8KPsl5NScP9Bt5GpO60P51Kliu0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318316},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.10.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","smoke:posthog":"tsx scripts/posthog-smoke.ts"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/5122161031e33713cc11b365d6c493ac/polycore-runner-2.10.0.tgz","_integrity":"sha512-X1NZOuG+fy5HILA3SfhAUd0Wi2fE3XrdFcH8S8MpPqlpSRe3kF5yBxXDZs450Vz495tPRjT0l2jKiNuEcHc2uQ==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.10.0_1785698823760_0.754408677269071","host":"s3://npm-registry-packages-npm-production"}},"2.10.1":{"name":"@polycore/runner","version":"2.10.1","_id":"@polycore/runner@2.10.1","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"a44bfc9be1cfa908b54a87496026fc1e193f0ee7","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.10.1.tgz","fileCount":30,"integrity":"sha512-JKJE8eMgXNdtPJ9hnm8Rv9le1P1H90KsFR5LYEEknYP+Mc7Fg6vhs8j5w1PFb7Qt7Qv2oBtX4oJOvulQ26eMNw==","signatures":[{"sig":"MEYCIQDte2zWtTiY8ywvEwffKJCAQFzAB1ucVlW21sCMfbdq/wIhAJusCfhKHr/jLWHVY8TAkaDzFAhXy1OserENyDbD467A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":319674},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.10.1.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","smoke:posthog":"tsx scripts/posthog-smoke.ts"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/fd9f7aacad7dad48c389a1523b05d9b7/polycore-runner-2.10.1.tgz","_integrity":"sha512-JKJE8eMgXNdtPJ9hnm8Rv9le1P1H90KsFR5LYEEknYP+Mc7Fg6vhs8j5w1PFb7Qt7Qv2oBtX4oJOvulQ26eMNw==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.10.1_1785767571079_0.20575422285772804","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"@polycore/runner","version":"2.11.0","_id":"@polycore/runner@2.11.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"ea846a293ede7e8c17587a5aee56442958c9f0f3","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.11.0.tgz","fileCount":36,"integrity":"sha512-EEDfsFW5qbAPxa6qxn/umtrObvrqagREmWg5Nf6ZyMCU6jR1C/MkAKyY7Wo8efeLL83XIk7uR6/5cBmKY389LQ==","signatures":[{"sig":"MEQCIC6cIzX/RhuoCcdg46ADUoTOmt8+dVCkGzjIg2avKinPAiA1KjWFsrxZHl/a6tZGmsN62rK6s1KVyCAxQ9Dl8nw5jA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424438},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.11.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","smoke:posthog":"tsx scripts/posthog-smoke.ts"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/70818b7f7482620bb6179bbcd71feec2/polycore-runner-2.11.0.tgz","_integrity":"sha512-EEDfsFW5qbAPxa6qxn/umtrObvrqagREmWg5Nf6ZyMCU6jR1C/MkAKyY7Wo8efeLL83XIk7uR6/5cBmKY389LQ==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.11.0_1786674822429_0.2620188465861102","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"@polycore/runner","version":"2.12.0","_id":"@polycore/runner@2.12.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"3964654aa7a2fac499ba59fb9b7ed1ea60967b5f","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.12.0.tgz","fileCount":36,"integrity":"sha512-Ey1oX2IpNwD/9VdryCmdY0uZrPveDdXKB4BfIpoZXaxvk1iVNuaqINhjDHGFE29NhZUi7zJPRMdbemgwG7a0WA==","signatures":[{"sig":"MEUCIQCS0dXfBGXRWWYieLNxBhhRRVDkctE8iX9j1rRdOvyyCQIgcMbXqCivWluVNYlRbzSPXI+hZU1lw6XX4M/O8u06ywQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420274},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.12.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","smoke:posthog":"tsx scripts/posthog-smoke.ts"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/4d163743a7bdc5cc54b3c0374580db13/polycore-runner-2.12.0.tgz","_integrity":"sha512-Ey1oX2IpNwD/9VdryCmdY0uZrPveDdXKB4BfIpoZXaxvk1iVNuaqINhjDHGFE29NhZUi7zJPRMdbemgwG7a0WA==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.12.0_1786734847449_0.984059126170385","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"@polycore/runner","version":"2.13.0","_id":"@polycore/runner@2.13.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"959c9edb389001ab394b195cf0a05c06fac6c9a9","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.13.0.tgz","fileCount":40,"integrity":"sha512-XiBoVgcIUHPahCgjSvGmicLSQVqs0r3UbiN2ht4a5FCVHeECXeTzQKKlMEnXtffKE+S09UNUv90Yw7b8pmnpLQ==","signatures":[{"sig":"MEUCIG5Ks43Htlx7x3NT5XWpF7xFZUav7ORDvo/xxBlddOQ0AiEAvVzlagmaOz20N5wCihpEt7Y4jLeXcWbyVoitL1GENm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":452525},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.13.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","smoke:posthog":"tsx scripts/posthog-smoke.ts"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/7ba70426739fcccd80ae1f8d614a797e/polycore-runner-2.13.0.tgz","_integrity":"sha512-XiBoVgcIUHPahCgjSvGmicLSQVqs0r3UbiN2ht4a5FCVHeECXeTzQKKlMEnXtffKE+S09UNUv90Yw7b8pmnpLQ==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^3.0.0","@polycore/pgpreview":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2","@electric-sql/pglite":"0.3.16"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.13.0_1787428121433_0.26599709988180287","host":"s3://npm-registry-packages-npm-production"}},"2.14.0":{"name":"@polycore/runner","version":"2.14.0","_id":"@polycore/runner@2.14.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"63525c124c494f92769a0777d21aa450cbcf9eb5","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.14.0.tgz","fileCount":40,"integrity":"sha512-76NIfSzUZEV05Yb/3nAVMIHHoB8SkBgrGDDoUAqK2Mg01Yhz9qVyT56wCtlOZwiV1eXPrkhtnrL8sfvY49XfSA==","signatures":[{"sig":"MEQCIGCgQ9rTtYy+XsOJzIlumLHDsMCNhaGVQRuRDRSmLkh1AiAnrozKpjPWvv9sxZDMh1FKnL9tx6vi7JTHjKWGe9CoFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":455404},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.14.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","smoke:posthog":"tsx scripts/posthog-smoke.ts"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/c096fc1cc2bf5ffc114aface80de885c/polycore-runner-2.14.0.tgz","_integrity":"sha512-76NIfSzUZEV05Yb/3nAVMIHHoB8SkBgrGDDoUAqK2Mg01Yhz9qVyT56wCtlOZwiV1eXPrkhtnrL8sfvY49XfSA==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","firebase-admin":"^14.2.0","@polycore/protocol":"^3.1.0","@polycore/pgpreview":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2","@electric-sql/pglite":"0.3.16"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.14.0_1788017828110_0.1269609666055156","host":"s3://npm-registry-packages-npm-production"}},"2.15.0":{"name":"@polycore/runner","version":"2.15.0","_id":"@polycore/runner@2.15.0","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"4807ee34d49f0b2b13c7fa3a4c25ecfa7a3bf7a5","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.15.0.tgz","fileCount":40,"integrity":"sha512-j9wJfL+enmsht43tHYyPL+xeHfftQciibvAv4YneePog/vvZ3X1MvwxP9AO3dJvI/A5x7p+LsUj7DVjOSep42g==","signatures":[{"sig":"MEYCIQDATduXJ3YH+XcG87k+a+jyvHjuC0tOsl5Z1uqSH7dzlQIhAO6CwHdsNxMTRNqhcLUVHnmfeze8k90TKqGv/JeqgSH+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":455397},"main":"./src/index.ts","type":"module","_from":"file:polycore-runner-2.15.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","smoke:posthog":"tsx scripts/posthog-smoke.ts"},"_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/3026632de4cece16b0fc5d908bb82b58/polycore-runner-2.15.0.tgz","_integrity":"sha512-j9wJfL+enmsht43tHYyPL+xeHfftQciibvAv4YneePog/vvZ3X1MvwxP9AO3dJvI/A5x7p+LsUj7DVjOSep42g==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","pg-dry-run":"^0.1.1","firebase-admin":"^14.2.0","@polycore/protocol":"^3.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2","@electric-sql/pglite":"0.3.16"},"_npmOperationalInternal":{"tmp":"tmp/runner_2.15.0_1788117069592_0.5779627190222381","host":"s3://npm-registry-packages-npm-production"}},"2.16.0":{"_id":"@polycore/runner@2.16.0","bin":{"polycore-runner":"bin/polycore-runner.mjs"},"dist":{"shasum":"f194cffc66646fafa323a44e7aa6a57e8b850300","tarball":"https://registry.npmjs.org/@polycore/runner/-/runner-2.16.0.tgz","fileCount":40,"integrity":"sha512-57qVa0vIg9hmWBVinqbk9599H9GxJYC7dhCSLxeLWvygTE5e5YTe6m5D6lXhdI6Q+y7/jXcYQX258vehg9Pb3A==","signatures":[{"sig":"MEQCIE1zSM4/rbxq9b9AVLKf7rOW1d2Dn2v2g+1WkDfWqWZTAiA6pilgWck378uEmxnLMb5bWLZKgOPWaf8CRDJH2LFXeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBO0wR1WqLtZpf9zZaG7RizqFrS/l022PCAf/Q2c5ubDAiEAqKht5KzYfv9XArZym7G7R2bj6NGXvgL9hJURjG07qhU="}],"unpackedSize":437515},"main":"./src/index.ts","name":"@polycore/runner","type":"module","_from":"file:polycore-runner-2.16.0.tgz","types":"./src/index.ts","engines":{"node":">=22"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run","runner":"tsx src/cli.ts","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","smoke:posthog":"tsx scripts/posthog-smoke.ts"},"version":"2.16.0","_npmUser":{"name":"anarkafkas","email":"anarkafkas@gmail.com"},"_resolved":"/tmp/3151f56f947b872c60e0ea889ec73c47/polycore-runner-2.16.0.tgz","_integrity":"sha512-57qVa0vIg9hmWBVinqbk9599H9GxJYC7dhCSLxeLWvygTE5e5YTe6m5D6lXhdI6Q+y7/jXcYQX258vehg9Pb3A==","_npmVersion":"10.9.8","description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","directories":{},"maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"ws":"8.21.1","tsx":"4.21.0","zod":"4.4.3","postgres":"3.4.9","pg-dry-run":"^0.1.1","firebase-admin":"^14.2.0","@polycore/protocol":"^3.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","@types/ws":"8.18.1","typescript":"6.0.3","@types/node":"25.6.2","@electric-sql/pglite":"0.3.16"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/runner_2.16.0_1789318479772_0.6478635259235501"}}},"time":{"created":"2026-07-04T16:36:37.447Z","modified":"2026-09-13T16:54:40.023Z","0.1.0":"2026-07-04T16:36:37.857Z","0.1.1":"2026-07-04T23:58:55.843Z","0.2.0":"2026-07-05T11:54:24.111Z","0.3.0":"2026-07-11T14:09:52.511Z","0.4.0":"2026-07-11T20:27:54.733Z","0.5.0":"2026-07-12T18:48:29.743Z","1.0.0":"2026-07-12T19:57:06.230Z","2.0.0":"2026-07-16T01:21:31.287Z","2.1.0":"2026-07-18T14:13:21.981Z","2.2.0":"2026-07-18T15:04:45.506Z","2.3.0":"2026-07-22T10:25:58.521Z","2.4.0":"2026-07-23T19:42:06.522Z","2.5.0":"2026-07-24T09:41:56.802Z","2.5.1":"2026-07-24T13:46:10.098Z","2.6.0":"2026-07-25T13:46:21.628Z","2.6.1":"2026-07-28T12:00:53.891Z","2.6.2":"2026-07-28T23:16:05.398Z","2.7.0":"2026-07-29T10:39:40.013Z","2.7.1":"2026-07-29T15:45:48.260Z","2.8.0":"2026-07-29T20:13:19.891Z","2.8.1":"2026-07-30T22:58:50.479Z","2.8.2":"2026-07-31T06:36:33.515Z","2.8.3":"2026-08-02T10:41:03.420Z","2.9.0":"2026-08-02T18:52:08.067Z","2.10.0":"2026-08-02T19:27:03.906Z","2.10.1":"2026-08-03T14:32:51.218Z","2.11.0":"2026-08-14T02:33:42.586Z","2.12.0":"2026-08-14T19:14:07.604Z","2.13.0":"2026-08-22T19:48:41.577Z","2.14.0":"2026-08-29T15:37:08.309Z","2.15.0":"2026-08-30T19:11:09.785Z","2.16.0":"2026-09-13T16:54:39.862Z"},"description":"Polycore runner SDK: build a customer-hosted runner that executes governed capabilities against your datastores. Runs in your infrastructure; holds scoped credentials and connects outbound to the control plane.","maintainers":[{"name":"anarkafkas","email":"anarkafkas@gmail.com"}],"readme":"# @polycore/runner\n\nThe **runner SDK**: the Node library customers use to build a Polycore\n**runner**. A runner executes governed capabilities against a customer's\ndatastores (read-only-constrained queries with no approval, and mutations only\nafter a human has approved the specific call). It runs in the **customer's own\ninfrastructure**, uses Application Default Credentials for reads, and connects\n**outbound** to the Polycore control plane (a persistent WebSocket it dials out;\nno inbound port).\n\nIn prose, call this package the runner SDK and reserve bare \"runner\" for the\ncustomer-owned process (and its code).\n\n**One runner serves exactly one Polycore project namespace and is enrolled\nagainst exactly one environment.** The project slug is `POLYCORE_PROJECT_SLUG`\nat runtime (never in the config file); the environment is fixed by enrollment\n(`runners.environment_id`). Separate deploy envs (dev/beta/prod) are separate\nrunners (typically separate host GCP projects).\n\nThe SDK ships **Firestore, Firebase Auth, Cloud Storage, Postgres, PostHog, and\nPrometheus queries** plus the opt-in, approval-gated **Firestore, Auth, and\nStorage mutations**, loads customer-authored **actions**, and can be driven\neither by the control plane (`runner connect`) or by hand via the local CLI\nharness. See `internal-docs/system/architecture.md`.\n\n## Queries\n\nA query is a generic, read-only transport: the caller supplies the query/path\nat request time. All queries are `read` (Lane 1).\n\n| Capability                  | Args                                                                                         | Returns                                                 |\n| --------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------- |\n| `firestore.query`           | `{ collection \\| collectionGroup, where?, orderBy?, select?, limit?, offset?, startAfter? }` | `{ docs: [{ id, path, data }], hasMore }`               |\n| `firestore.get`             | `{ path, select? }`                                                                          | `{ id, path, createTime, updateTime, data }` or `null`  |\n| `firestore.getMany`         | `{ paths (≤100), select? }`                                                                  | `{ docs, missing }` (one batched read)                  |\n| `firestore.count`           | `{ collection \\| collectionGroup, where? }`                                                  | `number` (server-side aggregation)                      |\n| `firestore.aggregate`       | `{ collection \\| collectionGroup, where?, aggregations (count/sum/average, ≤5) }`            | `{ [alias]: number \\| null }`                           |\n| `firestore.listCollections` | `{ parent? }`                                                                                | array of collection ids                                 |\n| `firestore.describe`        | `{ collection \\| collectionGroup, where?, sampleSize? }`                                     | sampled field types/presence/examples                   |\n| `auth.getUser`              | `{ uid }`                                                                                    | user record, or `null`                                  |\n| `auth.getUserByEmail`       | `{ email }`                                                                                  | user record, or `null`                                  |\n| `auth.getUserByPhoneNumber` | `{ phoneNumber (E.164) }`                                                                    | user record, or `null`                                  |\n| `auth.getUserByProviderUid` | `{ providerId, uid }`                                                                        | user record, or `null`                                  |\n| `auth.getUsers`             | `{ identifiers (≤100, mixed kinds) }`                                                        | `{ users, notFound }` (one batched call)                |\n| `auth.listUsers`            | `{ maxResults?, pageToken? }`                                                                | `{ users, nextPageToken?, hasMore }`                    |\n| `auth.listProviderConfigs`  | `{ type: oidc \\| saml, maxResults?, pageToken? }`                                            | `{ providerConfigs, nextPageToken? }`                   |\n| `auth.getProviderConfig`    | `{ providerId }`                                                                             | provider config, or `null`                              |\n| `storage.listBuckets`       | `{}`                                                                                         | `{ buckets, scopedByAllowlist }`                        |\n| `storage.getBucketMetadata` | `{ bucket? }`                                                                                | location, class, versioning, lifecycle, access config   |\n| `storage.listFiles`         | `{ bucket?, prefix?, delimiter?, maxResults?, pageToken? }`                                  | `{ objects, prefixes, nextPageToken?, hasMore }`        |\n| `storage.getMetadata`       | `{ bucket?, object }`                                                                        | object metadata, or `null` (doubles as an exists check) |\n| `storage.summarize`         | `{ bucket?, prefix? }`                                                                       | `{ objectCount, totalBytes, byContentType, complete }`  |\n| `storage.download`          | `{ bucket?, object, encoding? }`                                                             | `{ content, bytes, encoding }`, or `null`               |\n| `storage.getSignedUrl`      | `{ bucket?, object, expiresInMinutes? }`                                                     | `{ url, expiresInMinutes }`, or `null`                  |\n| `postgres.listSchemas`      | `{ search?, limit? }`                                                                        | `{ schemas, truncated }`                                |\n| `postgres.listTables`       | `{ schema?, search?, types?, limit? }`                                                       | `{ relations, truncated }`                              |\n| `postgres.describe`         | `{ schema?, table }`                                                                         | rich relation, key, FK, index, and enum metadata        |\n| `postgres.explain`          | `{ sql, params? }`                                                                           | bounded JSON plan and root estimates                    |\n| `postgres.query`            | `{ sql, params?, maxRows?, maxResultBytes? }`                                                | `{ rows, rowCount, truncated, truncationReason? }`      |\n| `posthog.query`             | `{ query, values?, name?, maxRows? }`                                                        | bounded parameterized HogQL rows                        |\n| `posthog.listEvents`        | `{ names?, excludeHidden?, excludeStale?, limit?, offset? }`                                 | bounded event taxonomy                                  |\n| `posthog.listProperties`    | `{ type?, search?, eventNames?, limit?, offset? }`                                           | bounded property taxonomy                               |\n| `posthog.listTables`        | `{ search?, types?, limit?, offset? }`                                                       | bounded PostHog and warehouse table inventory           |\n| `posthog.describeTable`     | `{ table, limit?, offset? }`                                                                 | bounded field/type/HogQL metadata                       |\n| `posthog.segment`           | `{ criteria, match?, personProperties?, lookbackDays, limit? }`                              | ephemeral behavioral population                         |\n| `posthog.enrich`            | `{ distinctIds, metrics, lookbackDays }`                                                     | behavior keyed by explicit external IDs                 |\n| `posthog.activity`          | `{ distinctId, lookbackDays, events?, properties?, limit? }`                                 | compact merged-identity event timeline                  |\n| `prometheus.query`          | `{ query, time?, maxSeries?, timeout? }`                                                     | bounded instant PromQL result                           |\n| `prometheus.query_range`    | `{ query, start, end, step?, maxPoints?, maxSeries? }`                                       | bounded, compact time-series matrix                     |\n| `prometheus.labels`         | `{ match?, start?, end?, limit? }`                                                           | bounded label-name discovery                            |\n| `prometheus.label_values`   | `{ label, match?, start?, end?, limit? }`                                                    | bounded label-value discovery                           |\n| `prometheus.series`         | `{ match, start?, end?, limit? }`                                                            | bounded concrete-series discovery                       |\n| `prometheus.metadata`       | `{ metric?, limit? }`                                                                        | metric type/help/unit metadata                          |\n| `prometheus.targets`        | `{ state?, limit? }`                                                                         | scrape target health                                    |\n| `prometheus.alerts`         | `{ limit? }`                                                                                 | active alert state and annotations                      |\n| `prometheus.rules`          | `{ type?, limit? }`                                                                          | alerting/recording rule health                          |\n\nPostgreSQL first describes caller SQL without executing it. The extended\nprotocol accepts exactly one statement, and the runner requires result columns\nbefore executing that SQL through a cursor inside a read-only transaction. Put\nevery runtime\nvalue in `params` and reference it as `$1`, `$2`, and so on, with explicit casts\nfor ambiguous values. Never concatenate or interpolate user input into `sql`.\nParams cannot represent identifiers or syntax, so dynamic columns, tables,\noperators, and sort directions must come from fixed allowlists. The committed\nPostgres object config bounds statement and connection-acquisition time, rows,\nencoded result bytes, pool concurrency, queue depth, cursor batches, discovery,\nSQL bytes, and parameter count/bytes. Omitting `limits` selects the defaults.\n\n`collection` is a slash path (`users`, `teams/t1/members`); `collectionGroup` is\na bare id that targets every same-named subcollection at any depth (nested\nrecords under unknown parents). Where filters AND their clauses; an entry may\nbe an `{ \"or\": [...] }` group whose alternatives are clauses or `{ \"and\": [...] }`\ngroups, so any boolean filter is expressible as one OR of AND groups (DNF).\nTyped values cross the JSON boundary in tagged form, in both directions (inputs\ndecoded, results encoded): `{\"$timestamp\": \"<ISO>\"}`, `{\"$ref\": \"<document path>\"}`,\n`{\"$geopoint\": {latitude, longitude}}`, `{\"$bytes\": \"<base64>\"}`. A time-window\ncount is `where: [{ field: \"createdAt\", op: \">=\", value: { \"$timestamp\": \"…\" } }]`.\n`firestore.describe` samples live documents to infer field names, types, and\npresence when there is no Typesync schema (or to spot drift from it).\n\nFirestore auto-indexes every field at collection scope only, so a filtered or\nordered collection **group** query needs that field indexed at\ncollection-group scope. When an index is missing, Firestore rejects the read\n(`FAILED_PRECONDITION`) with a ready-made creation link in the message; the\nrunner rethrows that error with the original text embedded verbatim and marks\nit terminal, so the agent relays the link to a human instead of retrying or\nscanning parent documents.\n\nWhen a generated Typesync definition is configured, the runner also advertises:\n\n| Capability                              | Purpose                                    |\n| --------------------------------------- | ------------------------------------------ |\n| `firestore.typesync.listDocumentModels` | Search document names and exact paths      |\n| `firestore.typesync.getDocumentModel`   | Read one document's fields and field types |\n| `firestore.typesync.listAliasModels`    | Search reusable type aliases               |\n| `firestore.typesync.getAliasModel`      | Read one complete alias type definition    |\n\nThese tools read a local JSON artifact on demand and cache its validated\ndefinition. The artifact is not added to agent context. Generate it at build\ntime from the canonical Typesync YAML and bake only the JSON into the production\nrunner image. `typesync-cli` is not a runner dependency.\n\n## Mutations\n\nA mutation is the write-side twin of a query: generic, built-in, and the caller\nsupplies the target at request time. All mutations are `write` (Lane 2), so the\ncontrol plane holds each request until a human approves that exact call.\n\n| Capability                           | Args                                                                                     | Returns                                           |\n| ------------------------------------ | ---------------------------------------------------------------------------------------- | ------------------------------------------------- |\n| `firestore.create`                   | `{ collection, id?, data }`                                                              | `{ path, id, createTime }`                        |\n| `firestore.set`                      | `{ path, data, mode, mergeFields? }`                                                     | `{ path, mode, updateTime }`                      |\n| `firestore.update`                   | `{ path, data, precondition? }`                                                          | `{ path, updateTime }`                            |\n| `firestore.delete`                   | `{ path, recursive?, maxDocuments?, precondition? }`                                     | `{ path, recursive, deleted? }`                   |\n| `firestore.batchWrite`               | `{ operations (≤100 create/set/update/delete) }`                                         | `{ writes: [{ path, op }] }`                      |\n| `auth.createUser`                    | `{ email?, phoneNumber?, password?, displayName?, photoURL?, disabled?, uid? }`          | user record                                       |\n| `auth.updateUser`                    | `{ uid, …properties to change }`                                                         | user record                                       |\n| `auth.deleteUser`                    | `{ uid }`                                                                                | `{ deleted }`                                     |\n| `auth.deleteUsers`                   | `{ uids (≤50) }`                                                                         | `{ successCount, failureCount, errors }`          |\n| `auth.setCustomUserClaims`           | `{ uid, customClaims (complete, or null) }`                                              | `{ uid, customClaims }`                           |\n| `auth.revokeRefreshTokens`           | `{ uid }`                                                                                | `{ uid, tokensValidAfterTime }`                   |\n| `auth.generatePasswordResetLink`     | `{ email, continueUrl? }`                                                                | `{ email, link }`                                 |\n| `auth.generateEmailVerificationLink` | `{ email, continueUrl? }`                                                                | `{ email, link }`                                 |\n| `auth.generateSignInWithEmailLink`   | `{ email, continueUrl }`                                                                 | `{ email, link }`                                 |\n| `storage.delete`                     | `{ bucket?, object }`                                                                    | `{ deleted, bucket }`                             |\n| `storage.deleteMany`                 | `{ bucket?, objects (≤100 exact paths) }`                                                | `{ deleted, successCount, failureCount, errors }` |\n| `storage.copy`                       | `{ bucket?, object, destination, destinationBucket? }`                                   | `{ copied, from, to }`                            |\n| `storage.move`                       | `{ bucket?, object, destination }`                                                       | `{ moved, to, bucket }`                           |\n| `storage.setMetadata`                | `{ bucket?, object, contentType?, cacheControl?, contentDisposition?, customMetadata? }` | object metadata                                   |\n| `storage.makePublic`                 | `{ bucket?, object }`                                                                    | `{ object, bucket, publicUrl }`                   |\n| `storage.makePrivate`                | `{ bucket?, object }`                                                                    | `{ object, bucket, public: false }`               |\n| `storage.upload`                     | `{ bucket?, object, content, encoding?, contentType? }`                                  | object metadata                                   |\n\nEach family is off unless its `write` grant is set\n(`integrations.firebase.<service>.write`). Two shapes:\n\n- `\"ambient\"`: writes use Application Default Credentials (the same identity\n  CIP/SAP actions already write with). Prefer this when the runtime SA already\n  has write access.\n- `{ \"keyEnv\": \"…\" }`: writes use a separate write-capable service-account key\n  from that env var, so the runtime SA can stay a viewer. A missing or malformed\n  value fails at boot instead of advertising a mutation the runner cannot\n  perform.\n\nThree Admin SDK operations are absent at every grant level rather than gated:\n`createCustomToken` and `createSessionCookie` mint a credential that\nauthenticates _as_ a user, and `importUsers` bulk-writes password hashes. The\naction-link capabilities above are gated despite mutating nothing, because the\nlink they return is itself an account-control credential.\n\nPayloads use the read-side tagged values plus Firestore's field transforms:\n`{\"$serverTimestamp\": true}`, `{\"$increment\": <n>}`, `{\"$arrayUnion\": [...]}`,\n`{\"$arrayRemove\": [...]}`, `{\"$deleteField\": true}`. Transforms are rejected in\nread filters. `$deleteField` is rejected where nothing is being merged, and in\nan update it must be a top-level value (reach a nested field with a dotted key,\n`\"meta.legacy\"`, which is what Firestore itself requires).\n\n`firestore.set` takes a **required** `mode`: `merge` keeps unmentioned fields,\n`mergeFields` writes only the listed paths, `replace` overwrites and deletes\nevery field the payload omits. There is no default, because Firestore's own\ndefault is `replace` and a short payload that silently drops the rest of a\ndocument is exactly what an approver cannot see in a summary. Note that dots in\na `create` / `set` payload are literal field names; only `update` treats them as\nfield paths.\n\nTwo deliberate limits:\n\n- **No delete-by-filter.** Every mutation names its documents by path, because a\n  filtered set would only be resolved after approval, so nobody could review\n  what they approved. Bulk work reads paths with `firestore.query` first (free,\n  no approval) and proposes them explicitly in one `firestore.batchWrite`.\n- **`precondition`** is either `exists` or `lastUpdateTime`, never both\n  (Firestore rejects that combo). `lastUpdateTime` takes the `updateTime` from a\n  `firestore.get`, so a write whose document changed while the approval was\n  pending fails rather than clobbering it. Timestamps therefore encode\n  nanoseconds when they carry them, so that round trip is exact.\n\nA plain delete leaves subcollections alone and is the usual call (`{ path }`\nonly; do not pass `recursive` or `maxDocuments`). `recursive: true` deletes the\nsubtree and requires `maxDocuments`. A path tells an approver nothing about how\nmuch hangs off it, so the runner counts the subtree first (ids only,\nshort-circuiting past the bound) and refuses without deleting anything if it is\nlarger. The approved call therefore states its own blast radius.\n\nPostHog configuration fixes one host and project per runner. `posthog.query`\nuses PostHog's `{placeholder}` values instead of string interpolation and wraps\nevery query in an outer row limit. `posthog.segment`, `posthog.enrich`, and\n`posthog.activity` are composition-oriented: they let a bounded set of behavior\njoin to authoritative operational state without syncing that state into\nPostHog. All responses are capped at 64 KiB. Use PostHog itself for dashboard,\nflag, experiment, survey, or other provider administration. The SDK also\nexports `PostHogClient` so a reviewed composite read action can perform a large\ncross-system join entirely inside the runner and return only its bounded domain\nresult.\n\n`prometheus.query_range` is intentionally dashboard-shaped: it computes a\nsafe step from `maxPoints`, caps series, samples oversized responses, and keeps\nthe result below the dispatch payload budget. Prefer an aggregation such as\n`sum by (service) (...)` over returning raw instance or route series. Prometheus\nconfiguration supports no auth, bearer auth, basic auth, and a tenant header;\nonly env-var names are committed, never tokens.\n\n## Read-only safety (two layers)\n\n- **Layer 1: IAM.** The runtime service account carries `roles/datastore.viewer`.\n- **Layer 2: this code.** The queries only ever call read methods.\n\nRead credentials are Application Default Credentials only. Locally, point\n`GOOGLE_APPLICATION_CREDENTIALS` at a key file if you need one; that is a GCP\nconvention, not a Polycore config field.\n\nA `\"write\": \"ambient\"` grant uses the same ADC identity as reads and as customer\nactions. Prefer `{ \"keyEnv\": \"…\" }` only when you want Layer 1 to stay\nviewer-only on the runtime SA. Do not grant the runtime SA write access solely\nto unlock mutations if you intended it to stay read-only.\n\n## Config\n\n`polycore.json` is **capability surface only**:\n\n```json\n{\n  \"integrations\": {\n    \"firebase\": {\n      \"firestore\": { \"typesync\": \"./schema/typesync-definition.json\" },\n      \"auth\": {},\n      \"storage\": { \"buckets\": [\"your-project.firebasestorage.app\"] }\n    },\n    \"posthog\": { \"host\": \"https://us.posthog.com\" },\n    \"prometheus\": {\n      \"baseUrl\": \"https://prometheus.example.internal\",\n      \"auth\": { \"type\": \"bearer\", \"tokenEnv\": \"PROMETHEUS_TOKEN\" },\n      \"tenantHeader\": {\n        \"name\": \"X-Scope-OrgID\",\n        \"valueEnv\": \"PROMETHEUS_TENANT\"\n      }\n    }\n  }\n}\n```\n\nThat is the whole happy path. No `projects` map, no GCP project id, no key\npaths.\n\nFour conventions hold throughout: **presence enables reads** (no `true`\nshorthand), **`write` is the grant and names the identity**, **every\nenvironment binding is a `*Env` field**, and **every ceiling lives under\n`limits`**.\n\n| Field                                      | Meaning                                                |\n| ------------------------------------------ | ------------------------------------------------------ |\n| `integrations.firebase.projectIdEnv`       | Name the project-id variable (else the standard three) |\n| `integrations.firebase.firestore: {}`      | Advertise generic `firestore.*` reads                  |\n| `integrations.firebase.firestore.typesync` | Also advertise Typesync schema lookups                 |\n| `integrations.firebase.auth: {}`           | Advertise `auth.*` directory reads                     |\n| `integrations.firebase.storage: {}`        | Advertise `storage.*` object reads                     |\n| `integrations.firebase.storage.buckets`    | Restrict which buckets are in scope                    |\n| `integrations.firebase.<service>.write`    | `\"ambient\"` or `{ keyEnv }`; advertises writes         |\n| `integrations.firebase.<service>.limits`   | Per-family ceilings                                    |\n| `integrations.postgres: {}`                | Advertise bounded `postgres.*` reads                   |\n| `integrations.postgres.limits`             | Reviewed resource ceilings                             |\n| `integrations.posthog`                     | Advertise bounded `posthog.*` reads                    |\n| `integrations.prometheus`                  | Advertise bounded `prometheus.*` reads                 |\n| `actions.secrets`                          | Optional action secret values (else env)               |\n| `sandbox`                                  | Optional `code.execute`                                |\n\nRuntime (env, never the file):\n\n| Env                                                                        | Required                        | Meaning                                                          |\n| -------------------------------------------------------------------------- | ------------------------------- | ---------------------------------------------------------------- |\n| `POLYCORE_PROJECT_SLUG`                                                    | yes                             | Control-plane project slug this runner serves                    |\n| `FIRESTORE_PROJECT_ID`, else `GOOGLE_CLOUD_PROJECT`, else `GCLOUD_PROJECT` | when any Firebase service is on | GCP project for Admin SDK (or name your own with `projectIdEnv`) |\n| `FIREBASE_STORAGE_BUCKET` (or configured name)                             | when Storage is on              | Default bucket; never guessed                                    |\n| the configured `write.keyEnv` name                                         | only for a keyed write grant    | Write-capable service-account key JSON                           |\n| `POLYCORE_POSTGRES_URL`                                                    | when Postgres is on             | Read-only database URL, kept on runner                           |\n| `POSTHOG_PROJECT_ID` (or configured env name)                              | when PostHog is on              | Numeric PostHog project id                                       |\n| `POSTHOG_PERSONAL_API_KEY` (or configured name)                            | when PostHog is on              | Scoped PostHog read key, kept on runner                          |\n| `PROMETHEUS_TOKEN` (or configured env name)                                | bearer auth                     | Prometheus bearer token, kept on runner                          |\n| `PROMETHEUS_TENANT` (or configured env name)                               | tenant auth                     | Mimir/Cortex tenant id, kept on runner                           |\n| `POLYCORE_CONTROL_PLANE_URL`                                               | for `connect`                   | `wss://…/runner`                                                 |\n| `POLYCORE_RUNNER_ID`                                                       | for `connect`                   | `rnr_…` from enroll                                              |\n| `POLYCORE_JOIN_TOKEN`                                                      | for `connect`                   | from enroll                                                      |\n| `POLYCORE_SIGNING_SECRET`                                                  | for `connect`                   | from enroll                                                      |\n| `PORT`                                                                     | managed hosts                   | Health endpoint port                                             |\n\nActions live in `actions/` beside the config file.\n\n## Run the harness\n\n```sh\nexport POLYCORE_PROJECT_SLUG=alpha\nexport GOOGLE_CLOUD_PROJECT=alpha-prod\n\npnpm --filter @polycore/runner runner list --config ./polycore.json\n\npnpm --filter @polycore/runner runner firestore.count \\\n  --args '{\"collection\":\"users\"}' \\\n  --config ./polycore.json\n\npnpm --filter @polycore/runner runner connect --config ./polycore.json\n```\n\n## Deploy notes\n\nBake `polycore.json` + `actions/` and any configured Typesync JSON\ninto the image. Inject enrollment secrets and set `POLYCORE_PROJECT_SLUG`. On\nGCE / Cloud Run, grant the runtime SA `roles/datastore.viewer` and rely on ADC +\n`GOOGLE_CLOUD_PROJECT`.\n\nWhen `PORT` is set for `connect`, `GET /health` returns `200` only while the\nrunner has an active, enrolled control-plane session; otherwise it returns\n`503`. This lets a managed host gate replacement on a usable runner. Do not\nautoheal solely because a runner is disconnected: the control plane is an\nexternal dependency, and replacing the VM cannot repair its outage.\n\nThere is no `POLYCORE_PROJECTS` JSON blob and no key path in config.\n\n## Tests\n\n```sh\npnpm --filter @polycore/runner test\n```\n\nThe default suite is hermetic: it stops at capability advertisement and argument\nvalidation, so it cannot show that a transform lands, a stale precondition is\nrejected, a `null` really comes back for a missing account, a size ceiling really\nrefuses, or that an `orderBy` on a missing field really returns nothing. Those\nanswers need a real backend, so each Firebase family has an emulator suite gated\non its own host variable and skipped without it.\n\nRun all three together with the Firebase emulator suite:\n\n```sh\nfirebase emulators:start --only auth,storage,firestore --project polycore-emulator\n```\n\n```sh\nFIRESTORE_EMULATOR_HOST=127.0.0.1:8451 \\\nFIREBASE_AUTH_EMULATOR_HOST=127.0.0.1:9099 \\\nSTORAGE_EMULATOR_HOST=http://127.0.0.1:9199 \\\n  pnpm --filter @polycore/runner test\n```\n\n| Suite                                  | Gate                          | Covers                                                               |\n| -------------------------------------- | ----------------------------- | -------------------------------------------------------------------- |\n| `firestore-mutations.emulator.test.ts` | `FIRESTORE_EMULATOR_HOST`     | Mutations, and the empty-read diagnosis end to end                   |\n| `auth.emulator.test.ts`                | `FIREBASE_AUTH_EMULATOR_HOST` | Every Auth capability, including that password material never leaves |\n| `storage.emulator.test.ts`             | `STORAGE_EMULATOR_HOST`       | Every Storage capability, plus Admin-app sharing                     |\n\n**Coverage: 30 of the 34 Firebase capabilities run against a real backend.** The\nfour that do not are blocked by the emulators, not skipped by choice:\n\n| Capability                  | Why                                        |\n| --------------------------- | ------------------------------------------ |\n| `auth.getProviderConfig`    | Emulator answers 501 for provider configs  |\n| `storage.getBucketMetadata` | Emulator 404s the bucket-metadata endpoint |\n\nTheir argument shapes and gating are covered hermetically; their _responses_ are\nunverified against real Firebase. `auth.listProviderConfigs` is exercised only\nto prove it propagates the 501 rather than reporting an empty list — reporting\n\"no SSO configured\" when the backend refused would be a wrong answer, which is\nworse than a failed call.\n\nCI runs the Firestore suite on PRs that touch `packages/runner` (workflow\n`runner-firestore-emulator.yml`). Each run writes under its own\n`polycore-it/<uuid>` namespace, so it is safe against a persistent emulator.\nNever point any of these at a real project: they delete what they create.\n","readmeFilename":"README.md"}