{"_id":"@alexsun-top/opencode-turbo","_rev":"8-b2bead1020f9df8c03dda1fa0a2fa91b","name":"@alexsun-top/opencode-turbo","dist-tags":{"latest":"0.1.9"},"versions":{"0.0.0":{"name":"@alexsun-top/opencode-turbo","version":"0.0.0","keywords":["opencode","plugin","recovery","stream","retry","auto-continue"],"license":"MIT","_id":"@alexsun-top/opencode-turbo@0.0.0","maintainers":[{"name":"alexsun-top","email":"6a6l6e6x@gmail.com"}],"homepage":"https://github.com/agentsyaml/opencode-turbo#readme","bugs":{"url":"https://github.com/agentsyaml/opencode-turbo/issues"},"dist":{"shasum":"57c4ec469ac10cd19e5e324da32a56c43656301c","tarball":"https://registry.npmjs.org/@alexsun-top/opencode-turbo/-/opencode-turbo-0.0.0.tgz","fileCount":11,"integrity":"sha512-c0zhwF3QVk6aIZpJNScWLVYEpV9RXpVteepThTHN1b55fRKFtJJLt2l3GFNFu1QDj1qUoNQ/bIBdLcLs+oeftA==","signatures":[{"sig":"MEUCIQDNe2iddJ4SeUxZFCMdlhKfMnvfcq45ImzKDieA9Wp6rwIgCjusKrUzFV6mUwLEJYr9EIsr97bMlij+IwUJ0aR34e4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80107},"main":"./src/index.ts","type":"module","exports":{".":"./src/index.ts","./tui":"./dist/tui.js","./server":"./src/index.ts"},"gitHead":"4dfff73904268ade94f969fd649e0e6c120544db","scripts":{"check":"bun run typecheck && bun run src/self-check.ts","prepare":"bun run build:tui","build:tui":"bun build src/tui.tsx --outdir dist --target=bun --external '@opencode-ai/*' --external 'solid-js' --external '@opentui/solid' --external '@opentui/solid/*' --external '@opentui/core' --external '@opentui/core-*'","typecheck":"bunx tsc --noEmit"},"_npmUser":{"name":"alexsun-top","email":"6a6l6e6x@gmail.com"},"repository":{"url":"git+https://github.com/agentsyaml/opencode-turbo.git","type":"git"},"_npmVersion":"11.11.0","description":"Zero-config OpenCode plugin that recovers from provider stream errors, disconnects and rate limits by resuming the response where it was interrupted","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"solid-js":"^1.9.14","typescript":"^5.9.3","@types/node":"^25.5.2","@opentui/solid":"^0.5.1","@opencode-ai/sdk":"^1.18.7","@opencode-ai/plugin":"^1.18.7"},"_npmOperationalInternal":{"tmp":"tmp/opencode-turbo_0.0.0_1786672434144_0.9453348331639493","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@alexsun-top/opencode-turbo","version":"0.1.0","keywords":["opencode","plugin","recovery","stream","retry","auto-continue"],"license":"MIT","_id":"@alexsun-top/opencode-turbo@0.1.0","maintainers":[{"name":"alexsun-top","email":"6a6l6e6x@gmail.com"}],"homepage":"https://github.com/agentsyaml/opencode-turbo#readme","bugs":{"url":"https://github.com/agentsyaml/opencode-turbo/issues"},"dist":{"shasum":"28bd43e8230e5e3605ce66e305183ced0123d8ee","tarball":"https://registry.npmjs.org/@alexsun-top/opencode-turbo/-/opencode-turbo-0.1.0.tgz","fileCount":11,"integrity":"sha512-sySeScaHiph6eRybHnwbXBH/MjuoKp00pD23jNrW2/oM39XUaK4pR3qdqBttkl0hx9op2JkBgwcAnQEBpOx3Eg==","signatures":[{"sig":"MEYCIQCF+trfroj1QcqI46zs6FZxfuIdJ25aD36WQUqN+ZfPgQIhAJT8GblDKOzdn+Eel6opwCn5fvE57w7CA1MZyk2K3+bz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexsun-top%2fopencode-turbo@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":80107},"main":"./src/index.ts","type":"module","exports":{".":"./src/index.ts","./tui":"./dist/tui.js","./server":"./src/index.ts"},"gitHead":"4dfff73904268ade94f969fd649e0e6c120544db","scripts":{"check":"bun run typecheck && bun run src/self-check.ts","prepare":"bun run build:tui","build:tui":"bun build src/tui.tsx --outdir dist --target=bun --external '@opencode-ai/*' --external 'solid-js' --external '@opentui/solid' --external '@opentui/solid/*' --external '@opentui/core' --external '@opentui/core-*'","typecheck":"bunx tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f288fd1f-1147-4ac2-80d5-1ad03fb08610"}},"repository":{"url":"git+https://github.com/agentsyaml/opencode-turbo.git","type":"git"},"_npmVersion":"12.0.2","description":"Zero-config OpenCode plugin that recovers from provider stream errors, disconnects and rate limits by resuming the response where it was interrupted","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"solid-js":"^1.9.14","typescript":"^5.9.3","@types/node":"^25.5.2","@opentui/solid":"^0.5.1","@opencode-ai/sdk":"^1.18.7","@opencode-ai/plugin":"^1.18.7"},"_npmOperationalInternal":{"tmp":"tmp/opencode-turbo_0.1.0_1786672582995_0.9272814352634129","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alexsun-top/opencode-turbo","version":"0.1.1","keywords":["opencode","plugin","recovery","stream","retry","auto-continue"],"license":"MIT","_id":"@alexsun-top/opencode-turbo@0.1.1","maintainers":[{"name":"alexsun-top","email":"6a6l6e6x@gmail.com"}],"homepage":"https://github.com/agentsyaml/opencode-turbo#readme","bugs":{"url":"https://github.com/agentsyaml/opencode-turbo/issues"},"dist":{"shasum":"5b22188148039ef04e3aecbc76439fd9d9931dcd","tarball":"https://registry.npmjs.org/@alexsun-top/opencode-turbo/-/opencode-turbo-0.1.1.tgz","fileCount":11,"integrity":"sha512-EV0QJyNr/NxjBkO1cjaygpfADd+gMisgJr2ma1ZgMuqz7twhlcfYtH1W+iZfsp1NyMmEpi0IUsJYtWxYsJhqmA==","signatures":[{"sig":"MEYCIQCgg8KpgBxJTDrDuuQl/f/oUi16rWvzv0YzW7jxZB3JlAIhALwnHfl7bWV2TCG6S6l5FauyfN/ZX00pgcFA+AZn/TaH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexsun-top%2fopencode-turbo@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":82835},"main":"./src/index.ts","type":"module","exports":{".":"./src/index.ts","./tui":"./dist/tui.js","./server":"./src/index.ts"},"gitHead":"6170ebacb2760eb0497c0e91993ef87e536f392e","scripts":{"check":"bun run typecheck && bun run src/self-check.ts","prepare":"bun run build:tui","build:tui":"bun build src/tui.tsx --outdir dist --target=bun --external '@opencode-ai/*' --external 'solid-js' --external '@opentui/solid' --external '@opentui/solid/*' --external '@opentui/core' --external '@opentui/core-*'","typecheck":"bunx tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f288fd1f-1147-4ac2-80d5-1ad03fb08610"}},"repository":{"url":"git+https://github.com/agentsyaml/opencode-turbo.git","type":"git"},"_npmVersion":"12.0.2","description":"Zero-config OpenCode plugin that recovers from provider stream errors, disconnects and rate limits by resuming the response where it was interrupted","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"solid-js":"^1.9.14","typescript":"^5.9.3","@types/node":"^25.5.2","@opentui/solid":"^0.5.1","@opencode-ai/sdk":"^1.18.7","@opencode-ai/plugin":"^1.18.7"},"_npmOperationalInternal":{"tmp":"tmp/opencode-turbo_0.1.1_1786700596866_0.7003662869300313","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@alexsun-top/opencode-turbo","version":"0.1.4","keywords":["opencode","plugin","recovery","stream","retry","auto-continue"],"license":"MIT","_id":"@alexsun-top/opencode-turbo@0.1.4","maintainers":[{"name":"alexsun-top","email":"6a6l6e6x@gmail.com"}],"homepage":"https://github.com/agentsyaml/opencode-turbo#readme","bugs":{"url":"https://github.com/agentsyaml/opencode-turbo/issues"},"dist":{"shasum":"ef23e253039327a70f055bf9d3dfbe9348c9c0b3","tarball":"https://registry.npmjs.org/@alexsun-top/opencode-turbo/-/opencode-turbo-0.1.4.tgz","fileCount":13,"integrity":"sha512-q8IPQ4jPOlimGTtk6VNyCnW6/fgPt8pA1rPT6Ke6f/KWPuIupwdK9R/TMF67tmPwz6Um3Dy+7ojjCNM5pRieEA==","signatures":[{"sig":"MEYCIQDsqb4Fl+oEx9JNx74u70/NYvOozbWUgaMbHXyeXeiMcAIhANvIndYSMNR0HGa2rgLZ0dwWO3IZuzuV6qbdO2PSAwRk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexsun-top%2fopencode-turbo@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":101643},"main":"./src/index.ts","type":"module","exports":{".":"./src/index.ts","./tui":"./dist/tui.js","./server":"./src/index.ts"},"gitHead":"8fcac7a0e82f034186a816293c19e836b6cdf3a2","scripts":{"check":"bun run typecheck && bun run src/self-check.ts","prepare":"bun run build:tui","build:tui":"bun build src/tui.tsx --outdir dist --target=bun --external '@opencode-ai/*' --external 'solid-js' --external '@opentui/solid' --external '@opentui/solid/*' --external '@opentui/core' --external '@opentui/core-*'","typecheck":"bunx tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f288fd1f-1147-4ac2-80d5-1ad03fb08610"}},"repository":{"url":"git+https://github.com/agentsyaml/opencode-turbo.git","type":"git"},"_npmVersion":"12.0.2","description":"Zero-config OpenCode plugin that recovers from provider stream errors, disconnects and rate limits by resuming the response where it was interrupted","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"solid-js":"^1.9.14","typescript":"^5.9.3","@types/node":"^25.5.2","@opentui/solid":"^0.5.1","@opencode-ai/sdk":"^1.18.7","@opencode-ai/plugin":"^1.18.7"},"_npmOperationalInternal":{"tmp":"tmp/opencode-turbo_0.1.4_1786947865464_0.6796892779393036","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@alexsun-top/opencode-turbo","version":"0.1.5","keywords":["opencode","plugin","recovery","stream","retry","auto-continue"],"license":"MIT","_id":"@alexsun-top/opencode-turbo@0.1.5","maintainers":[{"name":"alexsun-top","email":"6a6l6e6x@gmail.com"}],"homepage":"https://github.com/agentsyaml/opencode-turbo#readme","bugs":{"url":"https://github.com/agentsyaml/opencode-turbo/issues"},"dist":{"shasum":"6ac2968a712605e6535306d9c1a38eebbfb62bcc","tarball":"https://registry.npmjs.org/@alexsun-top/opencode-turbo/-/opencode-turbo-0.1.5.tgz","fileCount":13,"integrity":"sha512-f7gYzADT+7oWeGQ0PQ2dmebpKnwsWm2Eqd0coUIVIo2ZhEWXKfRE15bwEFNfz8MR84TkSb5kpcmxQE0OhWGsCQ==","signatures":[{"sig":"MEQCIFv6CsX/P8MUkwDDLSMpi4GWEA2r7JmuCzBCxt4l0+sQAiB2hu+qBGY29dNFfTfTbP+vqN7jtNO+9LI6EYh+5tqOAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexsun-top%2fopencode-turbo@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":116419},"main":"./src/index.ts","type":"module","exports":{".":"./src/index.ts","./tui":"./dist/tui.js","./server":"./src/index.ts"},"gitHead":"ba70301730f96a995ffdbf04ede5e7290bcce36d","scripts":{"check":"bun run typecheck && bun run src/self-check.ts","prepare":"bun run build:tui","build:tui":"bun build src/tui.tsx --outdir dist --target=bun --external '@opencode-ai/*' --external 'solid-js' --external '@opentui/solid' --external '@opentui/solid/*' --external '@opentui/core' --external '@opentui/core-*'","typecheck":"bunx tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f288fd1f-1147-4ac2-80d5-1ad03fb08610"}},"repository":{"url":"git+https://github.com/agentsyaml/opencode-turbo.git","type":"git"},"_npmVersion":"12.0.2","description":"Zero-config OpenCode plugin that recovers from provider stream errors, disconnects and rate limits by resuming the response where it was interrupted","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"solid-js":"^1.9.14","typescript":"^5.9.3","@types/node":"^25.5.2","@opentui/solid":"^0.5.1","@opencode-ai/sdk":"^1.18.7","@opencode-ai/plugin":"^1.18.7"},"_npmOperationalInternal":{"tmp":"tmp/opencode-turbo_0.1.5_1787041589733_0.88716999378274","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@alexsun-top/opencode-turbo","version":"0.1.6","keywords":["opencode","plugin","recovery","stream","retry","auto-continue"],"license":"MIT","_id":"@alexsun-top/opencode-turbo@0.1.6","maintainers":[{"name":"alexsun-top","email":"6a6l6e6x@gmail.com"}],"homepage":"https://github.com/agentsyaml/opencode-turbo#readme","bugs":{"url":"https://github.com/agentsyaml/opencode-turbo/issues"},"dist":{"shasum":"ed92f1a8ddb81adee3bbc3049b020e1eb4f7dda9","tarball":"https://registry.npmjs.org/@alexsun-top/opencode-turbo/-/opencode-turbo-0.1.6.tgz","fileCount":13,"integrity":"sha512-jSAHuvUVhcgun+HHvwHGUHW0R8ncLb0tF0Oqw7NDHRm1hIdNcx22DaW3/vlNgMbXEh2SItnm6dLKoWw1vf/G8w==","signatures":[{"sig":"MEQCIG1D6NLOXc/P58PP5Dkl9ULAs01pPKOPV/wI90tdJfx5AiAsFDnA5XjqCUhZWjHYl6MwzQYIMAK0uFYux8Nh2yRe8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexsun-top%2fopencode-turbo@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109234},"main":"./src/index.ts","type":"module","exports":{".":"./src/index.ts","./tui":"./dist/tui.js","./server":"./src/index.ts"},"gitHead":"da5b4057b7fb0397c93a32e34395764bd6cef628","scripts":{"check":"bun run typecheck && bun run src/self-check.ts","prepare":"bun run build:tui","build:tui":"bun build src/tui.tsx --outdir dist --target=bun --external '@opencode-ai/*' --external 'solid-js' --external '@opentui/solid' --external '@opentui/solid/*' --external '@opentui/core' --external '@opentui/core-*'","typecheck":"bunx tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f288fd1f-1147-4ac2-80d5-1ad03fb08610"}},"repository":{"url":"git+https://github.com/agentsyaml/opencode-turbo.git","type":"git"},"_npmVersion":"12.0.2","description":"Zero-config OpenCode plugin that recovers from provider stream errors, disconnects and rate limits by resuming the response where it was interrupted","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"solid-js":"^1.9.14","typescript":"^5.9.3","@types/node":"^25.5.2","@opentui/solid":"^0.5.1","@opencode-ai/sdk":"^1.18.7","@opencode-ai/plugin":"^1.18.7"},"_npmOperationalInternal":{"tmp":"tmp/opencode-turbo_0.1.6_1787104367803_0.6755301566425354","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@alexsun-top/opencode-turbo","version":"0.1.7","keywords":["opencode","plugin","recovery","stream","retry","auto-continue"],"license":"MIT","_id":"@alexsun-top/opencode-turbo@0.1.7","maintainers":[{"name":"alexsun-top","email":"6a6l6e6x@gmail.com"}],"homepage":"https://github.com/agentsyaml/opencode-turbo#readme","bugs":{"url":"https://github.com/agentsyaml/opencode-turbo/issues"},"dist":{"shasum":"e83935930895109e4890877bc1ef371674cb7d1d","tarball":"https://registry.npmjs.org/@alexsun-top/opencode-turbo/-/opencode-turbo-0.1.7.tgz","fileCount":13,"integrity":"sha512-IAIBReH4XI/J7iX2WCxSLyyjORkSweZgsX686ZjJ9F+f+V+72I5kKsWvY8oxq8afc0MUcNVmjyjxcDUzsJt5CA==","signatures":[{"sig":"MEQCIAjbRrDs+ClSlDwlnbXbK9K2y49+wXEx3REikb2CTD+CAiAXPBVFljcUvxr/v+E4o+CJDzDH+TaF5COoySYqKgtHUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexsun-top%2fopencode-turbo@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":141855},"main":"./src/index.ts","type":"module","exports":{".":"./src/index.ts","./tui":"./dist/tui.js","./server":"./src/index.ts"},"gitHead":"5455a004fa4b2a9da2d98ed01a26f467457dc611","scripts":{"check":"bun run typecheck && bun run src/self-check.ts","prepare":"bun run build:tui","build:tui":"bun build src/tui.tsx --outdir dist --target=bun --external '@opencode-ai/*' --external 'solid-js' --external '@opentui/solid' --external '@opentui/solid/*' --external '@opentui/core' --external '@opentui/core-*'","typecheck":"bunx tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f288fd1f-1147-4ac2-80d5-1ad03fb08610"}},"repository":{"url":"git+https://github.com/agentsyaml/opencode-turbo.git","type":"git"},"_npmVersion":"12.0.2","description":"Zero-config OpenCode plugin that recovers from provider stream errors, disconnects and rate limits by resuming the response where it was interrupted","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"solid-js":"^1.9.14","typescript":"^5.9.3","@types/node":"^25.5.2","@opentui/solid":"^0.5.1","@opencode-ai/sdk":"^1.18.7","@opencode-ai/plugin":"^1.18.7"},"_npmOperationalInternal":{"tmp":"tmp/opencode-turbo_0.1.7_1787841117929_0.8967769777466787","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"_id":"@alexsun-top/opencode-turbo@0.1.9","bugs":{"url":"https://github.com/agentsyaml/opencode-turbo/issues"},"dist":{"shasum":"75b75005641996f61bcbad0499947d45266a393a","tarball":"https://registry.npmjs.org/@alexsun-top/opencode-turbo/-/opencode-turbo-0.1.9.tgz","fileCount":15,"integrity":"sha512-wS56EOKkkNUzS4472Hy9JDISafimBz6LTQUM9pqFCQb4dtDR6s5IfxBGE00zMA4QAMyr1sxtL1n7XDZYdYFHMg==","signatures":[{"sig":"MEUCIQD2tZrP7vrUPMj0/OrVqXv5rEi7X/Bx595wXrNS1yaWkAIgTSmPtxbNAKMgqO4p8+gE55eLyttuOexNK8aY2F5Me+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD77EQ6POJ9LWt6kz/jIjqtQJndVKPzGeHUEXK+/dD+/wIhAPESWtJ77cxaWVi8DY5k2otlgznMrlDXu2GQS1OIy3xw"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexsun-top%2fopencode-turbo@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":177087},"main":"./src/index.ts","name":"@alexsun-top/opencode-turbo","type":"module","exports":{".":"./src/index.ts","./tui":"./dist/tui.js","./server":"./src/index.ts"},"gitHead":"f073b01d9e418cdfa514857084cbf23c46e01318","license":"MIT","scripts":{"check":"bun run typecheck && bun run src/self-check.ts && bun run src/self-check-stall.ts","prepare":"bun run build:tui","build:tui":"bun build src/tui.tsx --outdir dist --target=bun --external '@opencode-ai/*' --external 'solid-js' --external '@opentui/solid' --external '@opentui/solid/*' --external '@opentui/core' --external '@opentui/core-*'","typecheck":"bunx tsc --noEmit"},"version":"0.1.9","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f288fd1f-1147-4ac2-80d5-1ad03fb08610"}},"homepage":"https://github.com/agentsyaml/opencode-turbo#readme","keywords":["opencode","plugin","recovery","stream","retry","auto-continue"],"repository":{"url":"git+https://github.com/agentsyaml/opencode-turbo.git","type":"git"},"_npmVersion":"12.0.2","description":"Zero-config OpenCode plugin that recovers from provider stream errors, disconnects and rate limits by resuming the response where it was interrupted","directories":{},"maintainers":[{"name":"alexsun-top","email":"6a6l6e6x@gmail.com"}],"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"solid-js":"^1.9.14","typescript":"^5.9.3","@types/node":"^25.5.2","@opentui/solid":"^0.5.1","@opencode-ai/sdk":"^1.18.7","@opencode-ai/plugin":"^1.18.7"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/opencode-turbo_0.1.9_1789470653205_0.1639827143014274"}}},"time":{"created":"2026-08-14T01:53:54.040Z","modified":"2026-09-15T11:10:53.655Z","0.0.0":"2026-08-14T01:53:54.323Z","0.1.0":"2026-08-14T01:56:23.119Z","0.1.1":"2026-08-14T09:43:17.024Z","0.1.4":"2026-08-17T06:24:25.597Z","0.1.5":"2026-08-18T08:26:29.873Z","0.1.6":"2026-08-19T01:52:47.947Z","0.1.7":"2026-08-27T14:31:58.070Z","0.1.9":"2026-09-15T11:10:53.289Z"},"bugs":{"url":"https://github.com/agentsyaml/opencode-turbo/issues"},"license":"MIT","homepage":"https://github.com/agentsyaml/opencode-turbo#readme","keywords":["opencode","plugin","recovery","stream","retry","auto-continue"],"repository":{"url":"git+https://github.com/agentsyaml/opencode-turbo.git","type":"git"},"description":"Zero-config OpenCode plugin that recovers from provider stream errors, disconnects and rate limits by resuming the response where it was interrupted","maintainers":[{"name":"alexsun-top","email":"6a6l6e6x@gmail.com"}],"readme":"# opencode-turbo\n\n让 OpenCode 安心运行。长会话可能遇到 OpenCode 默认不重试的提供方错误，\n而侧边栏实时状态行让会话活动清晰可见。本插件处理明确失败，以及静默卡顿与\n空输出回合——零配置可用，所有参数可选。\n\n## 为什么能降低焦虑\n\n- **明确的瞬态错误自己处理。** 会话遇到匹配的 API、SQL 或连接/传输错误时，\n  插件捕获模型已产出的内容，用同一模型重新发送续写提示，从断点处继续。\n- **看得见它在干活。** 侧边栏一行实时状态，告诉你 OpenCode 此刻在做什么——\n  推理、撰写、跑工具——安静的屏幕不再意味着卡死。放心走开，回来是完成的\n  会话，而不是死掉的会话。\n\n## 功能\n\n### 自动恢复\n\n会话遇到明确的 API、SQL 或连接/传输错误时，从断点处恢复回复：\n\n- 明确 `APIError` 的状态码：400、402、403、405、408、409、422、429\n  （以及 500、502、503、504、524、529）；没有状态码时只接受少数明确的服务端\n  瞬时文案，未分类错误即使文案相同也不会触发恢复\n- 明确的 SQL/SQLite/Database 错误，且消息包含 `Failed to execute statement`\n  或 `database is locked`；无错误名称时，仅当 `Failed query:` 后紧跟\n  `insert`、`select`、`update` 等 SQL 语句关键字才会处理\n- 窄范围的连接/传输错误，例如 connection reset/closed/lost（包括\n  `connection was closed` 等助动词形式）、`ECONN*`、unable to connect、\n  `cannot connect to host` / `connect call failed`、socket hang up、fetch 失败、\n  request/connection/response/read/SSE 超时、`ETIMEDOUT`、broken pipe，\n  以及 stream closed/ended 或 premature close\n- 接受未分类错误中的裸文案 `the operation timed out`（结尾句点可有可无）；\n  带更大超时提示的工具超时变体仍不处理\n- 静默卡顿：会话在 `stallTimeoutMs`（默认 30 分钟）内没有任何流式进展且无正在\n  运行的工具时先做探测；仅在会话空闲时通过同一恢复路径续写，忙碌会话只做预检，\n  绝不中止\n- 空输出回合：回合结束但没有可见文本或工具输出时，发送简短提示要求给出实际答案\n\n恢复流程（按会话）：确认失败的 assistant 消息 → 捕获部分产出 → 保留完整历史并追加续写提示。\n护栏：用户主动停止、鉴权错误、永久性失败、模型/工具输出错误绝不自动恢复。\nTLS/证书错误只有精确的 Bun 错误码并搭配精确的\n`unknown certificate verification error`、`Error: unknown certificate verification error`\n或完整的\n`UNKNOWN_CERTIFICATE_VERIFICATION_ERROR: unknown certificate verification error`\n文案时才可恢复。唯一无需错误码的例外是 OpenCode 精确的 `UnknownError` 封装，且\n`data.message` 必须为精确的裸文案 `unknown certificate verification error`（精确的\n`Error: unknown certificate verification error` 序列化形式也支持）。单独证书文案、单独错误码及其他证书错误均不恢复；每会话最多连续恢复 10 次，指数退避上限 30 分钟\n（仅确认续写成功后计数归零）；模型/工具错误即使带有原本可重试的 API 状态码也会排除。\n状态预检需同时等待失败消息就绪及会话状态探测为空闲，最长重试 10 分钟（指数退避\n上限 30 秒）后可见地放弃；不会扩大错误匹配范围，绝不干涉 OpenCode 自带的重试循环。\n日志：`~/.local/share/opencode/logs/auto-recover.log`。\n\n用户主动中止（Esc）会永久取消该会话的恢复链：插件绝不重试用户中止，也绝不主动\n中止忙碌会话，更不会自行复活已取消的链。只有下一条真实用户消息到来才会清除屏障，\n此后的失败才可再次恢复。\n\n### 实时状态行\n\n侧边栏常驻一行，随流式输出实时刷新：\n\n- `🔧 bash · 12.5s` — 正在运行的工具及耗时；模型显式设置了超时上限时显示\n  预算：`🔧 bash · 12.5s / 30s`；内容类工具额外显示输入 token\n  估算：`🔧 edit · 2.5s · 567 tokens`\n- `🤔 Thinking · 12.0s · 1,234 tokens` — 耗时在前，推理 token 数（估算）\n  在后\n- `⠋ Working · 3.2s · 567 tokens` — 动画转圈图标，该阶段耗时在前，已累计\n  token 在后\n- `⏳ Waiting · 1.5s` — 等待首字节输出阶段\n- `✅ Done · 1m 30s · 14:30:22` — 上一轮完成耗时与本地时间\n- `❌ Failed` — 终态失败的回合明确显示，不伪装成空闲\n\n新状态经 300ms 驻留后替换当前显示（消除快速切换闪烁），而显示中的数字——\n转圈与计时——每心跳持续实时跳动，状态行永不冻结、永不像卡住。token 数为\n估算（中英感知），非计费口径。\n\n### 通知弹窗\n\n重试类事件：OpenCode 自带重试（`⚠️ Retrying · attempt 2`）与本插件自动恢复\n（`🔄 Auto-recovering · 1/10`）。恢复达到终止上限时还会显示\n`⛔ Auto-recovery stopped`。所有展示均为只读，绝不改动会话状态。\n\n## 安装\n\n```json\n{\n  \"plugin\": [\"@alexsun-top/opencode-turbo\"]\n}\n```\n\n本地开发可直接指向源码：\n\n```json\n{\n  \"plugin\": [\"file:///path/to/opencode-turbo\"]\n}\n```\n\n可选配置——以插件二元组的第二项传入：\n\n```json\n{\n  \"plugin\": [\n    [\"@alexsun-top/opencode-turbo\", { \"stallTimeoutMs\": 1800000, \"emptyOutput\": true }]\n  ]\n}\n```\n\n- `stallTimeoutMs`（默认 `1800000`，即 30 分钟）：判定为卡顿前的静默时长；\n  `0` 关闭看门狗。\n- `emptyOutput`（默认 `true`）：恢复没有输出的回合。\n\n修改配置后重启 OpenCode。\n\n> TUI 状态行由 `dist/tui.js` 提供。修改 `src/tui.tsx` 后需执行\n> `bun run build:tui`，否则侧边栏状态行不会加载。\n\n## 开发\n\n```bash\nbun install\nbun run check   # 类型检查 + 自检\n```\n\n## 许可证\n\nMIT\n","readmeFilename":"README.zh-CN.md"}