{"_id":"@blackdark/fork-pi-provider-kiro-test","_rev":"4-651f8a9d236c36e82a93c755c68e7ce5","name":"@blackdark/fork-pi-provider-kiro-test","dist-tags":{"latest":"0.11.0-alpha.3"},"versions":{"0.11.0-alpha.0":{"name":"@blackdark/fork-pi-provider-kiro-test","version":"0.11.0-alpha.0","keywords":["pi-package","pi","kiro","aws","codewhisperer","ai","provider"],"license":"MIT","_id":"@blackdark/fork-pi-provider-kiro-test@0.11.0-alpha.0","maintainers":[{"name":"blackdark","email":"mail@eduard-marbach.de"}],"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"91ea309780930a0235bd214cc43ad0ef7a4b0b7e","tarball":"https://registry.npmjs.org/@blackdark/fork-pi-provider-kiro-test/-/fork-pi-provider-kiro-test-0.11.0-alpha.0.tgz","fileCount":3,"integrity":"sha512-mCGviwpVdZf4tqqRhZjHFgpD2QsBgzeIdV/WHKY+zarOVXVWFWV6GzO2qx9drJZtUGwc68XbWeB3/ciruILFvQ==","signatures":[{"sig":"MEUCIQCcp+lk4pkf2WUs2dsVw/sDxoWat4OMCrn7wRLC2PWwNQIgJOYUk6NbCmnQ/zUz2qfPw6UjESnTTrvmMTahBfsuPS4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5778506},"type":"module","scripts":{"lint":"biome check .","test":"vitest run","build":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.js --external:@earendil-works/pi-ai --external:@earendil-works/pi-coding-agent --external:@earendil-works/pi-tui","check":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","format":"biome format --write .","lint:fix":"biome check --write .","test:watch":"vitest"},"_npmUser":{"name":"blackdark","email":"mail@eduard-marbach.de"},"repository":{"url":"git+https://github.com/mikeyobrien/pi-provider-kiro.git","type":"git"},"description":"pi extension for the Kiro API (AWS CodeWhisperer/Q) — 12 kiro-cli-verified models with OAuth authentication","directories":{},"_nodeVersion":"26.7.0","dependencies":{"esbuild":"^0.25.0","js-tiktoken":"^1.0.21","@smithy/core":"^3.24.5"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@smithy/types":"^4.17.2","@biomejs/biome":"2.4.2","@earendil-works/pi-ai":"0.80.10","@earendil-works/pi-tui":"0.80.10","@earendil-works/pi-coding-agent":"0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/fork-pi-provider-kiro-test_0.11.0-alpha.0_1787581341507_0.5750346397478823","host":"s3://npm-registry-packages-npm-production"}},"0.11.0-alpha.1":{"name":"@blackdark/fork-pi-provider-kiro-test","version":"0.11.0-alpha.1","keywords":["pi-package","pi","kiro","aws","codewhisperer","ai","provider"],"license":"MIT","_id":"@blackdark/fork-pi-provider-kiro-test@0.11.0-alpha.1","maintainers":[{"name":"blackdark","email":"mail@eduard-marbach.de"}],"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"67ae682166619c001657989861d5853c915a2df4","tarball":"https://registry.npmjs.org/@blackdark/fork-pi-provider-kiro-test/-/fork-pi-provider-kiro-test-0.11.0-alpha.1.tgz","fileCount":29,"integrity":"sha512-GUWmKYqHXTtAxxWb5RQtHm6Q+cxC2gndyqX7b+U+D0nizOyGYjPIdv2C6P4XcBH+EO8pktpRdB5iOMlCVQQ3zA==","signatures":[{"sig":"MEUCIG9nFXgnMnw3bCpFHmvfnsPbpSHU9rbSlhezkdW4E+dAAiEAmjomyAly7ZWhGtcN6yXbBJ3mFGRcsZSuzZSUEendYvQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5872278},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","scripts":{"lint":"biome check .","test":"vitest run","build":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.js --banner:js=\"import{createRequire as __kiroCreateRequire}from'node:module';const require=__kiroCreateRequire(import.meta.url);\" --external:@earendil-works/pi-ai --external:@earendil-works/pi-coding-agent --external:@earendil-works/pi-tui && tsc --emitDeclarationOnly","check":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","format":"biome format --write .","lint:fix":"biome check --write .","test:watch":"vitest"},"_npmUser":{"name":"blackdark","email":"mail@eduard-marbach.de"},"repository":{"url":"git+https://github.com/mikeyobrien/pi-provider-kiro.git","type":"git"},"description":"pi extension for the Kiro API (AWS CodeWhisperer/Q) — 12 kiro-cli-verified models with OAuth authentication","directories":{},"_nodeVersion":"26.7.0","dependencies":{"esbuild":"^0.25.0","js-tiktoken":"^1.0.21","@smithy/core":"^3.24.5"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@smithy/types":"^4.17.2","@biomejs/biome":"2.4.2","@earendil-works/pi-ai":"0.80.10","@earendil-works/pi-tui":"0.80.10","@earendil-works/pi-coding-agent":"0.80.10"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-tui":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10"},"peerDependenciesMeta":{"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fork-pi-provider-kiro-test_0.11.0-alpha.1_1787584241346_0.514616348390804","host":"s3://npm-registry-packages-npm-production"}},"0.11.0-alpha.2":{"name":"@blackdark/fork-pi-provider-kiro-test","version":"0.11.0-alpha.2","keywords":["pi-package","pi","kiro","aws","codewhisperer","ai","provider"],"license":"MIT","_id":"@blackdark/fork-pi-provider-kiro-test@0.11.0-alpha.2","maintainers":[{"name":"blackdark","email":"mail@eduard-marbach.de"}],"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"92a141ac5ab5e2838fd73da395b1645ed6f7d2eb","tarball":"https://registry.npmjs.org/@blackdark/fork-pi-provider-kiro-test/-/fork-pi-provider-kiro-test-0.11.0-alpha.2.tgz","fileCount":29,"integrity":"sha512-rF7RcMVBPOQ2LfypT2svqWakFNpSmMjRmNiziZ1cHHQjQVl9VGBsVuXZ3EDzjNRxsNjUdeKhTQZpVIeqpAfLbA==","signatures":[{"sig":"MEQCICHpYr19cgerxE2XqW/rokwpVH8GbUsguwVgSckRFLP8AiBdDLCJbySIsjyCDZjGyrR2/yQLvzHTd2RF6t8G+eePDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5873137},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","scripts":{"lint":"biome check .","test":"vitest run","build":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.js --banner:js=\"import{createRequire as __kiroCreateRequire}from'node:module';const require=__kiroCreateRequire(import.meta.url);\" --external:@earendil-works/pi-ai --external:@earendil-works/pi-coding-agent --external:@earendil-works/pi-tui && tsc --emitDeclarationOnly","check":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","format":"biome format --write .","lint:fix":"biome check --write .","test:watch":"vitest"},"_npmUser":{"name":"blackdark","email":"mail@eduard-marbach.de"},"repository":{"url":"git+https://github.com/mikeyobrien/pi-provider-kiro.git","type":"git"},"description":"pi extension for the Kiro API (AWS CodeWhisperer/Q) — 12 kiro-cli-verified models with OAuth authentication","directories":{},"_nodeVersion":"26.7.0","dependencies":{"esbuild":"^0.25.0","js-tiktoken":"^1.0.21","@smithy/core":"^3.24.5"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@smithy/types":"^4.17.2","@biomejs/biome":"2.4.2","@earendil-works/pi-ai":"0.80.10","@earendil-works/pi-tui":"0.80.10","@earendil-works/pi-coding-agent":"0.80.10"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-tui":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10"},"peerDependenciesMeta":{"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fork-pi-provider-kiro-test_0.11.0-alpha.2_1787586340991_0.8475194646540083","host":"s3://npm-registry-packages-npm-production"}},"0.11.0-alpha.3":{"name":"@blackdark/fork-pi-provider-kiro-test","version":"0.11.0-alpha.3","description":"pi extension for the Kiro API (AWS CodeWhisperer/Q) — 12 kiro-cli-verified models with OAuth authentication","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","license":"MIT","repository":{"type":"git","url":"git+https://github.com/mikeyobrien/pi-provider-kiro.git"},"keywords":["pi-package","pi","kiro","aws","codewhisperer","ai","provider"],"pi":{"extensions":["./dist/index.js"]},"dependencies":{"@smithy/core":"^3.24.5","esbuild":"^0.25.0","js-tiktoken":"^1.0.21"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10","@earendil-works/pi-tui":">=0.80.10"},"peerDependenciesMeta":{"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true},"@earendil-works/pi-tui":{"optional":true}},"devDependencies":{"@biomejs/biome":"2.4.2","@earendil-works/pi-ai":"0.80.10","@earendil-works/pi-coding-agent":"0.80.10","@earendil-works/pi-tui":"0.80.10","@smithy/types":"^4.17.2","typescript":"^5.7.0","vitest":"^3.0.0"},"scripts":{"build":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.js --banner:js=\"import{createRequire as __kiroCreateRequire}from'node:module';const require=__kiroCreateRequire(import.meta.url);\" --external:@earendil-works/pi-ai --external:@earendil-works/pi-coding-agent --external:@earendil-works/pi-tui && tsc --emitDeclarationOnly","check":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","lint":"biome check .","lint:fix":"biome check --write .","format":"biome format --write .","test":"vitest run","test:watch":"vitest"},"_nodeVersion":"26.7.0","_id":"@blackdark/fork-pi-provider-kiro-test@0.11.0-alpha.3","dist":{"integrity":"sha512-YaFCCZtiXMxjIHnhyfT+qu54dw4jBwd5nen0i2PJxkxC/GwrCTMQzs91hlZp8noQlf7W2CyI39U76suRACDkEg==","shasum":"96aa5145ebe1a11b52daa3d75854f568f38b8088","tarball":"https://registry.npmjs.org/@blackdark/fork-pi-provider-kiro-test/-/fork-pi-provider-kiro-test-0.11.0-alpha.3.tgz","fileCount":29,"unpackedSize":5873709,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGEq10gaHDjNAQHjRNGQfUcKWrIwVERs2mlQM4k+PAkwAiAM37cliKK/IT7pSK77Ctxb9Go7gTsY2dcnq/SaOn9+0Q=="}]},"_npmUser":{"name":"blackdark","email":"mail@eduard-marbach.de"},"directories":{},"maintainers":[{"name":"blackdark","email":"mail@eduard-marbach.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fork-pi-provider-kiro-test_0.11.0-alpha.3_1787589406261_0.5194866041597508"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-24T14:22:21.319Z","modified":"2026-08-24T16:36:46.679Z","0.11.0-alpha.0":"2026-08-24T14:22:21.824Z","0.11.0-alpha.1":"2026-08-24T15:10:41.629Z","0.11.0-alpha.2":"2026-08-24T15:45:41.231Z","0.11.0-alpha.3":"2026-08-24T16:36:46.502Z"},"license":"MIT","keywords":["pi-package","pi","kiro","aws","codewhisperer","ai","provider"],"repository":{"type":"git","url":"git+https://github.com/mikeyobrien/pi-provider-kiro.git"},"description":"pi extension for the Kiro API (AWS CodeWhisperer/Q) — 12 kiro-cli-verified models with OAuth authentication","maintainers":[{"name":"blackdark","email":"mail@eduard-marbach.de"}],"readme":"# pi-provider-kiro\n\nA [pi](https://shittycodingagent.ai/) provider extension that connects pi to the **Kiro API** (AWS CodeWhisperer/Q), exposing **12 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. `pi-provider-kiro` 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\nInstall the provider:\n\n```bash\npi install npm:pi-provider-kiro\n```\n\nOr install it globally with npm:\n\n```bash\nnpm install -g pi-provider-kiro\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 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| DeepSeek 3.2 | `deepseek-3-2` | 164K | ✓ |\n| MiniMax | `minimax-m2-1`, `minimax-m2-5` | 196K | ✗ |\n| GLM 5 | `glm-5` | 200K | ✓ |\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 is automatically enabled for supported models. Use `/reasoning` to adjust the thinking budget.\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\nThe reason codes this provider classifies on are published from the package\nentry point, so consumers can interpret a code without hardcoding their own copy\nof the literals:\n\n```ts\nimport {\n  KIRO_REASON_CODES,\n  isCapacityError,\n  isNonRetryableBodyError,\n  isTooBigError,\n} from \"pi-provider-kiro\";\n\nisTooBigError(400, body); // size rejection → safe to compact and retry\nisCapacityError(body); // transient capacity → safe to retry as-is\nisNonRetryableBodyError(body); // hard quota → do not retry\n```\n\nThese are Kiro's own codes, not a provider taxonomy: mapping them to your own\nsemantics is the consumer's job.\n\nOne caveat for consumers outside pi: the entry point is the whole provider, so\nimporting it loads modules that import pi's host packages\n(`@earendil-works/pi-ai`, `-pi-coding-agent`, `-pi-tui`). They are declared as\noptional peer dependencies — present already wherever this runs as a pi\nextension, but a standalone project must install them itself or the import fails\nwith `ERR_MODULE_NOT_FOUND`. The types resolve without them under the usual\n`skipLibCheck`.\n\n## Development\n\n```bash\nnpm run build       # Compile TypeScript\nnpm run check       # Type check (no emit)\nnpm test            # Run the Vitest suite\nnpm run 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 [AGENTS.md](AGENTS.md) for detailed development guidance and [.agents/summary/](/.agents/summary/index.md) for full architecture documentation.\n\n## License\n\nMIT\n","readmeFilename":""}