{"_id":"@arvoretech/pi-kiro-provider","_rev":"5-13fe8a623a25b2942019f668efa7bde0","name":"@arvoretech/pi-kiro-provider","dist-tags":{"latest":"0.8.5"},"versions":{"0.8.1":{"name":"@arvoretech/pi-kiro-provider","version":"0.8.1","keywords":["pi-package","pi","kiro","aws","codewhisperer","ai","provider"],"license":"MIT","_id":"@arvoretech/pi-kiro-provider@0.8.1","maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions/tree/main/packages/kiro-provider","bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"8833fd82a66ac91331602ff559e015fa221a8b1c","tarball":"https://registry.npmjs.org/@arvoretech/pi-kiro-provider/-/pi-kiro-provider-0.8.1.tgz","fileCount":74,"integrity":"sha512-RRjBcQ5vQwkpRl+UC/y4ZYBY3C/gXwx80ZrvOe08Nvu6HeiosVTJ0lbPX0AD0Ou/Og1d6pnTaWibRKCTRULa5A==","signatures":[{"sig":"MEUCICuLLoQhh6y7M/Sjh40iBy7ExsW1wTyKUkJlmJlbPII2AiEA/zl69z2qMBykRbXKmP13p380sNgBBUHOlsYAlG94lBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269263},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"9251cffd8f05a24cfa16589235f5fcdf2acd2268","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc","check":"tsc --noEmit","prepare":"pnpm build","test:watch":"vitest","prepublishOnly":"pnpm check && pnpm build"},"_npmUser":{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},"repository":{"url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","type":"git","directory":"packages/kiro-provider"},"_npmVersion":"11.13.0","description":"Pi extension for the Kiro API, maintained by Arvore","directories":{},"_nodeVersion":"26.1.0","dependencies":{"js-tiktoken":"^1.0.21","@smithy/core":"^3.24.5","@smithy/types":"^4.15.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.5.0","@earendil-works/pi-ai":"^0.75.5","@earendil-works/pi-tui":"^0.75.5","@earendil-works/pi-coding-agent":"^0.75.5"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.75.5"},"_npmOperationalInternal":{"tmp":"tmp/pi-kiro-provider_0.8.1_1782995597512_0.5493440111676546","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@arvoretech/pi-kiro-provider","version":"0.8.2","keywords":["pi-package","pi","kiro","aws","codewhisperer","ai","provider"],"license":"MIT","_id":"@arvoretech/pi-kiro-provider@0.8.2","maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions/tree/main/packages/kiro-provider","bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"0debb82a642dbcd5628089680ead7eb1c6050f27","tarball":"https://registry.npmjs.org/@arvoretech/pi-kiro-provider/-/pi-kiro-provider-0.8.2.tgz","fileCount":74,"integrity":"sha512-63d7BUwqzw2xysu4JNzwIdrN9yneayoa8jmgmzdcNk4vKKP98t7fkBTH/5e4zheHbjH7th6odsO6Rd9lEHsLsw==","signatures":[{"sig":"MEQCIC4Q0UWmEQP8J+eW0s/q0ItAoocklqVX2fxvd89XbtU5AiA5lpiQ4UY1B9sSkXALx+gccCgW7W9ksFOsvDMH9I4vkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvoretech%2fpi-kiro-provider@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":271163},"main":"dist/index.js","type":"module","_from":"file:/tmp/arvoretech-pi-kiro-provider-0.8.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc","check":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fe94f1de-5102-4982-aac9-a6f2dfadccdf"}},"_resolved":"/tmp/arvoretech-pi-kiro-provider-0.8.2.tgz","_integrity":"sha512-63d7BUwqzw2xysu4JNzwIdrN9yneayoa8jmgmzdcNk4vKKP98t7fkBTH/5e4zheHbjH7th6odsO6Rd9lEHsLsw==","repository":{"url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","type":"git","directory":"packages/kiro-provider"},"_npmVersion":"11.18.0","description":"Pi extension for the Kiro API, maintained by Arvore","directories":{},"_nodeVersion":"22.23.1","dependencies":{"js-tiktoken":"^1.0.21","@smithy/core":"^3.24.5","@smithy/types":"^4.15.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.5.0","@earendil-works/pi-ai":"^0.75.5","@earendil-works/pi-tui":"^0.75.5","@earendil-works/pi-coding-agent":"^0.75.5"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.75.5"},"_npmOperationalInternal":{"tmp":"tmp/pi-kiro-provider_0.8.2_1784148461690_0.3049041355558302","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@arvoretech/pi-kiro-provider","version":"0.8.3","keywords":["pi-package","pi","kiro","aws","codewhisperer","ai","provider"],"license":"MIT","_id":"@arvoretech/pi-kiro-provider@0.8.3","maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions/tree/main/packages/kiro-provider","bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"dbabb883621ede8d79139531751b0aace60e82cd","tarball":"https://registry.npmjs.org/@arvoretech/pi-kiro-provider/-/pi-kiro-provider-0.8.3.tgz","fileCount":74,"integrity":"sha512-z2Dg4wqckyxj1h7OP/d4ISK/1HIKZshWSavrOMR6TNKPZFll4uf6ub7lkWAd8Pa1bqW8om2i3aTWVkhAmt7Kcw==","signatures":[{"sig":"MEYCIQCRupl1lQv1xHOdutEiMBknBz0a1Pxat+GoO3cENSYHggIhAOMoMaFNqzVmpfrmYJOeZZzjk7u6knWYZadKm5SKq2im","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvoretech%2fpi-kiro-provider@0.8.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":273593},"main":"dist/index.js","type":"module","_from":"file:/tmp/arvoretech-pi-kiro-provider-0.8.3.tgz","types":"dist/index.d.ts","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc","check":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fe94f1de-5102-4982-aac9-a6f2dfadccdf"}},"_resolved":"/tmp/arvoretech-pi-kiro-provider-0.8.3.tgz","_integrity":"sha512-z2Dg4wqckyxj1h7OP/d4ISK/1HIKZshWSavrOMR6TNKPZFll4uf6ub7lkWAd8Pa1bqW8om2i3aTWVkhAmt7Kcw==","repository":{"url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","type":"git","directory":"packages/kiro-provider"},"_npmVersion":"11.18.0","description":"Pi extension for the Kiro API, maintained by Arvore","directories":{},"_nodeVersion":"22.23.1","dependencies":{"js-tiktoken":"^1.0.21","@smithy/core":"^3.24.5","@smithy/types":"^4.15.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.5.0","@earendil-works/pi-ai":"^0.75.5","@earendil-works/pi-tui":"^0.75.5","@earendil-works/pi-coding-agent":"^0.75.5"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.75.5"},"_npmOperationalInternal":{"tmp":"tmp/pi-kiro-provider_0.8.3_1784156317526_0.44120630271782235","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"@arvoretech/pi-kiro-provider","version":"0.8.4","keywords":["pi-package","pi","kiro","aws","codewhisperer","ai","provider"],"license":"MIT","_id":"@arvoretech/pi-kiro-provider@0.8.4","maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions/tree/main/packages/kiro-provider","bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"c91f809dd6bf1e36f0512e9603d1fd1dcf573f69","tarball":"https://registry.npmjs.org/@arvoretech/pi-kiro-provider/-/pi-kiro-provider-0.8.4.tgz","fileCount":74,"integrity":"sha512-OFzX49ktRMosgo629edOvqvgNLIi0n/d4bCNU4L/AgFs1mblhVdd8tvccziAonyG5l7GARYHL80ifgUDCtsEdw==","signatures":[{"sig":"MEUCIQDX+HYhIYLYoaIJfL9saOu6f+Fp744nuQ1LGFOZgYavZgIgHk5r6sRrCa9bAzwn7s25qHF2vYUi5hjtCPwgzRCdr5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvoretech%2fpi-kiro-provider@0.8.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":274862},"main":"dist/index.js","type":"module","_from":"file:/tmp/arvoretech-pi-kiro-provider-0.8.4.tgz","types":"dist/index.d.ts","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc","check":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fe94f1de-5102-4982-aac9-a6f2dfadccdf"}},"_resolved":"/tmp/arvoretech-pi-kiro-provider-0.8.4.tgz","_integrity":"sha512-OFzX49ktRMosgo629edOvqvgNLIi0n/d4bCNU4L/AgFs1mblhVdd8tvccziAonyG5l7GARYHL80ifgUDCtsEdw==","repository":{"url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","type":"git","directory":"packages/kiro-provider"},"_npmVersion":"11.18.0","description":"Pi extension for the Kiro API, maintained by Arvore","directories":{},"_nodeVersion":"22.23.1","dependencies":{"js-tiktoken":"^1.0.21","@smithy/core":"^3.24.5","@smithy/types":"^4.15.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.5.0","@earendil-works/pi-ai":"^0.75.5","@earendil-works/pi-tui":"^0.75.5","@earendil-works/pi-coding-agent":"^0.75.5"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.75.5"},"_npmOperationalInternal":{"tmp":"tmp/pi-kiro-provider_0.8.4_1784250027954_0.7144548892317175","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"@arvoretech/pi-kiro-provider","version":"0.8.5","description":"Pi extension for the Kiro API, maintained by Arvore","main":"dist/index.js","types":"dist/index.d.ts","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","directory":"packages/kiro-provider"},"homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions/tree/main/packages/kiro-provider","bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"keywords":["pi-package","pi","kiro","aws","codewhisperer","ai","provider"],"pi":{"extensions":["./dist/index.js"]},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.75.5"},"dependencies":{"@smithy/core":"^3.24.5","@smithy/types":"^4.15.1","js-tiktoken":"^1.0.21"},"devDependencies":{"@earendil-works/pi-ai":"^0.75.5","@earendil-works/pi-coding-agent":"^0.75.5","@earendil-works/pi-tui":"^0.75.5","@types/node":"^22.5.0","typescript":"^5.7.0","vitest":"^3.0.0"},"scripts":{"build":"tsc","check":"tsc --noEmit","lint":"tsc --noEmit","test":"vitest run","test:watch":"vitest"},"_id":"@arvoretech/pi-kiro-provider@0.8.5","_integrity":"sha512-zVTaZL4GcR7XUinE4wYXYI/gHGSd0ipxrC9vb99HDIScozVYB5Qvs6HfzCVzw8DRzOkfuuKOATbEJjOYHAT48Q==","_resolved":"/tmp/arvoretech-pi-kiro-provider-0.8.5.tgz","_from":"file:/tmp/arvoretech-pi-kiro-provider-0.8.5.tgz","_nodeVersion":"22.23.1","_npmVersion":"11.18.0","dist":{"integrity":"sha512-zVTaZL4GcR7XUinE4wYXYI/gHGSd0ipxrC9vb99HDIScozVYB5Qvs6HfzCVzw8DRzOkfuuKOATbEJjOYHAT48Q==","shasum":"c5a41ad9c0375bebca43be4598cb33a32738f1fe","tarball":"https://registry.npmjs.org/@arvoretech/pi-kiro-provider/-/pi-kiro-provider-0.8.5.tgz","fileCount":74,"unpackedSize":275645,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvoretech%2fpi-kiro-provider@0.8.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAqlyXDh8mLKCag2vX9RpaEdDQV6WuoHs1UG0cNe3HPWAiEA1KlHzGxi0cww055FuSsveHCb8tG1NgFdAHFdGPPv2vk="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fe94f1de-5102-4982-aac9-a6f2dfadccdf"}},"directories":{},"maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-kiro-provider_0.8.5_1784914332045_0.6387233434692554"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-02T12:33:17.294Z","modified":"2026-07-24T17:32:12.521Z","0.8.1":"2026-07-02T12:33:17.653Z","0.8.2":"2026-07-15T20:47:42.000Z","0.8.3":"2026-07-15T22:58:37.671Z","0.8.4":"2026-07-17T01:00:28.098Z","0.8.5":"2026-07-24T17:32:12.179Z"},"bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"license":"MIT","homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions/tree/main/packages/kiro-provider","keywords":["pi-package","pi","kiro","aws","codewhisperer","ai","provider"],"repository":{"type":"git","url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","directory":"packages/kiro-provider"},"description":"Pi extension for the Kiro API, maintained by Arvore","maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"readme":"# @arvoretech/pi-kiro-provider\n\nA [pi](https://github.com/earendil-works/pi-coding-agent) provider extension that connects pi to the **Kiro API** (AWS CodeWhisperer/Q), exposing kiro-cli-verified models through one provider surface.\n\n## Why this exists\n\nKiro gives you a strong free model menu, but pi needs a provider that speaks Kiro's auth, model catalog, and streaming protocol cleanly. `@arvoretech/pi-kiro-provider` handles that bridge, including:\n\n- AWS Builder ID, IAM Identity Center, Google, and GitHub login flows\n- shared credentials from an existing `kiro-cli` session when available\n- reasoning-aware streaming\n- region-aware model filtering so pi only shows models your Kiro region can actually use\n\n## Quick start\n\nAdd to `.pi/settings.json`:\n\n```json\n{\n  \"packages\": [\"npm:@arvoretech/pi-kiro-provider\"]\n}\n```\n\nOr reference the local dist path for project-local development:\n\n```json\n{\n  \"extensions\": [\"./arvore-pi-extensions/packages/kiro-provider/dist/index.js\"]\n}\n```\n\nThen log in from pi:\n\n```text\n/login kiro\n```\n\nThe login flow supports:\n- **AWS Builder ID** — native device-code flow, works well over SSH/remotes\n- **Your organization** — IAM Identity Center start URL\n- **Google** — social login via `kiro-cli`\n- **GitHub** — social login via `kiro-cli`\n\nIf you already use [kiro-cli](https://kiro.dev), the provider can reuse those credentials instead of forcing a second login.\n\n## Models\n\n| Family | Models | Context | Reasoning |\n|--------|--------|---------|-----------|\n| Claude Opus | `claude-opus-4-7`, `claude-opus-4-6` | 1M | ✓ |\n| Claude Sonnet 5 | `claude-sonnet-5` | 1M | ✓ |\n| Claude Sonnet 4.6 | `claude-sonnet-4-6` | 1M | ✓ |\n| Claude Sonnet 4.5 | `claude-sonnet-4-5` | 200K | ✓ |\n| Claude Sonnet 4 | `claude-sonnet-4` | 200K | ✓ |\n| Claude Haiku 4.5 | `claude-haiku-4-5` | 200K | ✗ |\n| Claude Fable 5 | `claude-fable-5` | 1M | ✓ |\n| DeepSeek 3.2 | `deepseek-3-2` | 164K | ✓ |\n| MiniMax | `minimax-m2-1`, `minimax-m2-5` | 196K | ✗ |\n| GLM 5 | `glm-5` | 200K | ✓ |\n| GPT-5.6 | `gpt-5-6-luna`, `gpt-5-6-terra`, `gpt-5-6-sol` | 372K | ✓ |\n| Qwen3 Coder | `qwen3-coder-next` | 256K | ✓ |\n| Auto | `auto` | 1M | ✓ |\n\nAll listed models are free to use through Kiro.\n\n## Usage\n\nOnce logged in, select any Kiro model in pi:\n\n```text\n/model claude-sonnet-4-6\n```\n\nOr let Kiro pick automatically:\n\n```text\n/model auto\n```\n\nReasoning follows pi's selected thinking level. GPT-5.6 supports `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`; `minimal` maps to the model's `low` effort, matching pi's native OpenAI Codex provider. When reasoning is `off`, the provider does not inject Kiro thinking instructions.\n\n## Retry Behavior\n\nGeneric transient retries such as HTTP `429` and `5xx` are handled by `pi-coding-agent` at the session layer.\n\nThis provider only keeps local recovery for Kiro-specific cases:\n- `403` auth races, where it can refresh credentials from `kiro-cli`\n- first-token / stalled-stream recovery\n- empty-stream retries\n- non-retryable Kiro body markers like `MONTHLY_REQUEST_COUNT` and `INSUFFICIENT_MODEL_CAPACITY`\n\n## Development\n\n```bash\npnpm build       # Compile TypeScript\npnpm check       # Type check (no emit)\npnpm test        # Run the Vitest suite\npnpm test:watch  # Watch mode\n```\n\n## Architecture\n\nThe extension is organized as one feature per file:\n\n```\nsrc/\n├── index.ts            # Extension registration\n├── models.ts           # 12 model definitions + ID resolution\n├── oauth.ts            # Multi-provider auth (Builder ID / Google / GitHub)\n├── kiro-cli.ts         # kiro-cli credential sharing\n├── transform.ts        # Message format conversion\n├── history.ts          # Conversation history management\n├── thinking-parser.ts  # Streaming <thinking> tag parser\n├── event-parser.ts     # Kiro stream event parser\n└── stream.ts           # Main streaming orchestrator\n```\n\nSee [src/](src/) — each file owns one feature (extension registration, model catalog, OAuth, kiro-cli credential sharing, message transform, history management, thinking-tag parsing, event parsing, and the streaming orchestrator).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}