Skip to content

feat(kiro): add Kiro provider (supersedes #2559, #6266) - #8803

Closed
NachoFLizaur wants to merge 31 commits into
anomalyco:devfrom
NachoFLizaur:kiro-provider
Closed

NachoFLizaur wants to merge 31 commits into
anomalyco:devfrom
NachoFLizaur:kiro-provider

Conversation

@NachoFLizaur

Copy link
Copy Markdown
Contributor

Supersedes #2559 by @jeffpardy (auto-closed as stale on 2026-09-04). This branch continues that work with the review fixes applied and keeps both authors' commits.

What

  • Adds providers/kiro/ with provider.toml and 19 models: auto, Claude Sonnet 4 / 4.5 / 4.6 / 5, Claude Opus 4.5 / 4.6 / 4.7 / 4.8 / 5, Claude Haiku 4.5, GPT-5.6 Sol / Terra / Luna, DeepSeek 3.2, MiniMax M2.1 / M2.5, GLM-5, Qwen3 Coder Next.
  • Every non-Kiro-native model uses base_model and is override-only; only auto is defined inline.
  • reasoning_options are authored per model against Kiro's actual effort control (low-max for Claude reasoners; none-max for GPT-5.6; [] where Kiro exposes no caller control, e.g. GLM-5, MiniMax, DeepSeek).
  • cost is 0/0 throughout: Kiro bills in credits per request, not per token, so there is no USD/MTok price to publish.
  • Context/output overrides come from kiro-cli chat --list-models --format json (context_window_tokens) and Kiro docs.

Sources:

Review findings

  • Logo: intentionally not added; requesting a maintainer waiver (cc @rekram1-node). The official Kiro mark collapses to a solid square under the currentColor single-color renderer, and a modified mark would violate AWS branding requirements. The generic fallback is used deliberately rather than shipping a non-compliant or altered mark.
  • qwen3-coder-next: was a full inline definition. Upstream now has models/alibaba/qwen3-coder-next.toml, so the Kiro entry is now base_model = "alibaba/qwen3-coder-next" with only cost 0/0 and limit.context = 256_000 (Kiro reports 256000 vs the lab's 262_144).
  • GPT-5.6 limit.context = 272_000 with base_model_omit = ["limit.input"]: this is what Kiro serves ("Experimental preview of OpenAI GPT 5.6 ... with 272k context window" in kiro-cli chat --list-models, confirmed by the docs), not the lab's 1_050_000 / 922_000 input split, hence the omit.
  • Output limits: aligned with Kiro's documented max_tokens table (https://kiro.dev/docs/models/effort/): Opus 4.6 / 4.7 and Sonnet 4.6 are capped at 64000 and carry an override; Opus 4.8 / Opus 5 / Sonnet 5 / GPT-5.6 are 128000 and inherit the lab value; GLM-5, MiniMax and Qwen have no published Kiro cap and inherit the lab value.
  • DeepSeek 3.2: base_model is now deepseek/deepseek-v3.2 (Kiro serves "Experimental preview of DeepSeek V3.2"); only limit.context = 164_000 (from kiro-cli) and reasoning_options = [] are kept.

Consumer

kiro-acp-ai-provider and the opencode-kiro plugin (npm) resolve models through this provider entry.

Validation

  • bun install --frozen-lockfile - no changes
  • bun run validate - exit 0, no warnings; kiro resolves 19 models, all base_model targets exist
  • bun test - 307 pass / 4 fail; the same 4 failures (open-weight weights links, DeepInfra modalities, LLM Gateway case variant, Cloudflare AI Gateway reasoning issue) reproduce on pristine anomalyco/dev and do not touch providers/kiro

Co-authored-by: Jeff Brown [email protected]

jeffpardy and others added 27 commits June 14, 2026 10:22
The kiro provider was accidentally removed via merge f4206f4 and never
restored. This brings back provider.toml plus all 12 models from before
the removal, and adds claude-opus-4.8.
refactor(kiro): inherit canonical base_model metadata; fix opus output and dates
…asoning-fix

fix(kiro): set minimax reasoning false to satisfy reasoning_options validation
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Action items

  • [critical] [violation] providers/kiro/logo.svg:1 - Check: New provider must ship compliant logo.svg (AGENTS.md/README.md). Why: This PR adds providers/kiro/ with 19 models but no logo.svg; body explicitly requests waiver. Missing logo is a merge blocker and fallback rendering is not a waiver path. Action: Add providers/kiro/logo.svg using currentColor, no fixed size/color, preferably square viewBox; if branding truly blocks compliance, get explicit maintainer exception before merge.
  • [high] [violation] providers/kiro/models/claude-opus-4.6.toml:8 - Check: cost must be USD/MTok; omit when no per-token price. Why: Every Kiro file publishes [cost] input=0 output=0 while body says Kiro bills credits/request with no USD/MTok price. 0 renders as free in api.json, misleading consumers. Action: Remove all [cost] sections on Kiro models (allowed as request-only/no public price) or publish converted USD/MTok with top-of-file rate/date; do not ship 0/0 throughout.
  • [high] [possible mistake] providers/kiro/models/deepseek-3.2.toml:5 - Check: Relay reasoning_options baseline vs []. Why: Lab deepseek/deepseek-v3.2 is reasoning=true hybrid thinking/non-thinking; peers expose controls (providers/openrouter/models/deepseek/deepseek-v3.2.toml toggle, providers/cortecs/models/deepseek-v3.2.toml effort low/medium/high). Kiro claims reasoning_options=[] with only generic effort-page citation. Action: Verify Kiro exposes no toggle/effort for this ID and cite wire/docs, or adopt lab/peer control (toggle and/or effort) with wire comment.
  • [high] [possible mistake] providers/kiro/models/glm-5.toml:3 - Check: Relay reasoning_options baseline vs []. Why: First-party providers/zhipuai/models/glm-5.toml is toggle and providers/togetherai/models/zai-org/GLM-5.toml documents reasoning.enabled true|false toggle. Kiro claims []. Action: Verify Kiro drops the toggle (host docs/test showing no caller control) or change to toggle with leading wire comment.
  • [high] [possible mistake] providers/kiro/models/claude-opus-4.5.toml:3 - Check: Same-host consistency for Claude effort vs []. Why: Kiro authors graded effort for Opus 4.6/4.7/4.8, Sonnet 4.6/5, Opus 5 and GPT-5.6, but [] for Haiku 4.5, Opus 4.5, Sonnet 4/4.5. Lab/native exposes controls for those older IDs (providers/anthropic/models/claude-opus-4-5.toml effort low/medium/high+budget, claude-haiku-4-5.toml/claude-sonnet-4-5.toml budget_tokens). Selective [] on same relay needs affirmative per-model no-control evidence. Action: Confirm Kiro effort endpoint excludes those four IDs (quote CLI/docs output) or copy the native effort subset Kiro forwards; do not keep [] from uncertainty.
  • [high] [possible mistake] providers/kiro/models/claude-sonnet-5.toml:2 - Check: toggle omission vs native. Why: Native providers/anthropic/models/claude-sonnet-5.toml is toggle+effort low/medium/high/xhigh/max; Kiro keeps only effort with no none and no toggle, leaving no off path. If Kiro forwards effort only this may be valid intersection, but no wire evidence is given. Action: Verify whether Kiro forwards the on/off control; add toggle+leading wire comment if it does, or document why off is unavailable.
  • [medium] [violation] providers/kiro/models/claude-opus-4.6.toml:12 - Check: Override-only base_model files. Why: After base_model, Kiro restates identical [modalities] output=["text"] alongside the real input delta (dropping pdf), and similarly on other Claude/GPT files. Arrays replace; identical output should be inherited. Action: Keep only the differing input=["text","image"] (if PDF-less is verified) and drop identical output lines; same cleanup for other Kiro base_model files.
  • [medium] [possible mistake] providers/kiro/models/gpt-5.6-sol.toml:7 - Check: Provider context delta needs direct evidence. Why: context=272_000+base_model_omit=["limit.input"] cuts lab 1_050_000/922_000/128_000 by ~74%; 272_000 equals OpenAI provider cost.tiers threshold, suggesting confusion with pricing tier. Body cites CLI JSON but includes no excerpt. Action: Provide Kiro CLI/docs excerpt for 272k context and max_tokens/output for GPT-5.6 on Kiro; fix limit.output if Kiro also caps it, and add leading source comment to these three files.
  • [medium] [possible mistake] providers/kiro/models/claude-opus-4.8.toml:1 - Check: Inconsistent limit.output caps. Why: Opus 4.6/4.7 override output=64_000 (lab 128_000) with max_tokens citation, but Opus 4.8/Sonnet 5/Opus 5 inherit 128_000 with no override or comment. Action: Align all Claude caps to Kiro-documented per-model max_tokens or remove unjustified overrides; verify Auto 64_000 assumption similarly.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [critical] [violation] providers/kiro/logo.svg:1 - Check: New provider must ship compliant logo.svg. Why: This PR adds providers/kiro/ with provider.toml and 19 models but no logo.svg; PR body requests a waiver. AGENTS.md makes the logo a merge blocker with no waiver path. Action: Add providers/kiro/logo.svg using currentColor, no fixed size/color, preferably square viewBox, or remove the provider.
  • [high] [violation] providers/kiro/models/claude-opus-4.6.toml:11 - Check: Costs must be USD/MTok; omit cost when there is no per-token price. Why: Every Kiro file publishes [cost] input = 0 output = 0 while PR body states Kiro bills in credits per request, not per token. Zero implies free USD/MTok and corrupts API consumers; schema makes cost optional for request-only/no-public-price hosts. Action: Remove [cost] tables unless Kiro publishes USD/MTok, or cite a first-party source proving $0.
  • [high] [violation] providers/kiro/models/claude-haiku-4.5.toml:4 - Check: Relay reasoning_options must copy lab + same-surface peer baseline; do not use [] from uncertainty. Why: Kiro claims reasoning_options = [] for claude-haiku-4-5/claude-opus-4-5/claude-sonnet-4-5 and zhipuai/glm-5, but base-revision natives expose caller controls for the same models: providers/anthropic/models/claude-haiku-4-5.toml:5 (budget_tokens), claude-opus-4-5.toml:5 (effort low/medium/high + budget_tokens), claude-sonnet-4-5.toml:5 (budget_tokens), providers/zhipuai/models/glm-5.toml:12 (toggle). Absence on Kiro effort page does not prove no budget/toggle forwarding. Action: Author the lab/peer controls Kiro actually forwards (effort/budget/toggle) with wire evidence, or provide affirmative Kiro docs/tests proving no caller control for each [] model.
  • [medium] [violation] providers/kiro/models/claude-opus-4.6.toml:14 - Check: base_model files must be override-only. Why: After base_model, files restate identical output = ["text"] under [modalities] (e.g. claude-haiku-4.5, claude-opus-4.5/4.6/4.7, claude-sonnet-4.5) where lab is already ["text"]; only input dropping pdf is a real delta. Plain objects deep-merge so identical sibling keys must be omitted. Action: Keep only [modalities] input = ["text", "image"] where pdf is dropped and delete redundant output = ["text"]; audit all Kiro base_model files for identical restatements.
  • [medium] [violation] providers/kiro/provider.toml:4 - Check: Provider api must be a real endpoint; for npm = "kiro-acp-ai-provider" it is optional. Why: Final diff sets api = "${KIRO_API_URL}", a bare unexpanded placeholder, not a URL. It provides no routable endpoint and will break consumers expecting a URL string. Action: Omit api until a real Kiro endpoint is known, or set the actual https:// URL.
  • [low] [possible mistake] providers/kiro/models/gpt-5.6-sol.toml:12 - Check: Material limit changes need mapped first-party evidence. Why: limit.context flipped 272_000 to 1_000_000 with base_model_omit = ["limit.input"] vs lab 1_050_000/922_000, and claude-opus-4.6/4.7 cap limit.output = 64_000 vs lab 128_000 while claude-opus-4.8/5/5.5 and claude-sonnet-5/5.5 inherit 128_000 with no per-model rationale in PR body. Action: Verify the 1M GPT context, the selective 64K caps, and the 196_000/200_000/164_000/256_000 CLI-derived contexts, and cite what source supports each value.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [violation] providers/kiro/logo.svg:1 - Check: New providers must ship compliant logo.svg (currentColor, no fixed size/color, preferably square viewBox). Why: Diff adds providers/kiro/ with provider.toml + models but no logo.svg, and PR body requests a waiver for branding reasons. Action: Add compliant providers/kiro/logo.svg or obtain explicit maintainer waiver before merge.
  • [high] [violation] providers/kiro/models/auto.toml:13 - Check: cost must be USD/MTok with rate/date in a leading header, or omitted when there is no public per-token price; subscription/credit hosts zero with an explanatory header. Why: All Kiro files publish [cost] input = 0 output = 0 while PR body says Kiro bills credits per request with no USD/MTok price, with no leading header explaining the convention — implies free token pricing. Action: Add leading header documenting credit billing + pricing source per AGENTS.md/precedent (e.g. kimi-code-plan-cn), or omit [cost] if intentionally request-only.
  • [high] [possible mistake] providers/kiro/models/claude-haiku-4.5.toml:5 - Check: Relay reasoning_options baseline must copy lab + same-surface peers, [] only for affirmative no caller control. Why: Lab anthropic/claude-haiku-4-5 is reasoning = true with native budget_tokens, OpenRouter peer uses toggle, but Kiro claims reasoning_options = []; same pattern for claude-opus-4-5, claude-sonnet-4-5, zhipuai/glm-5 (native toggle) and deepseek/deepseek-v3.2 (hybrid-reasoning lab). URL alone does not prove absence. Action: Verify against Kiro effort docs/CLI whether Kiro truly forwards no control for those IDs; if controlled, author lab/peer-matching effort/toggle/budget_tokens, if uncontrolled keep [] with host-specific evidence.
  • [medium] [possible mistake] providers/kiro/models/claude-opus-4.8.toml:1 - Check: Provider limit overrides must reflect Kiro caps, not selective inheritance. Why: claude-opus-4-6/4-7 explicitly override limit.output = 64_000 as Kiro cap vs lab 128_000, but claude-opus-4-8, claude-opus-5, claude-opus-5-5, claude-sonnet-5, claude-sonnet-5-5 inherit lab 128_000 with no override. Action: Verify Kiro max_tokens per model and add/omit [limit] output consistently.
  • [low] [possible mistake] providers/kiro/models/auto.toml:1 - Check: Leading source comments must cite direct, consistent provider docs. Why: auto.toml/claude-opus-4-6.toml/claude-opus-4-7.toml cite https://kiro.dev/docs/models/effort/ while PR body and other Kiro files cite https://kiro.dev/docs/cli/chat/effort/; GPT context = 1_000_000 and MiniMax/GLM context deltas have no source header. Action: Correct to the documented path and add leading headers for context/output deltas.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [critical] [violation] providers/kiro/logo.svg:1 - Check: New provider has compliant logo.svg. Why: providers/kiro/ adds provider.toml plus ~20 models with no logo.svg, and the PR body states the logo was intentionally omitted for a waiver; AGENTS.md and README.md require logo.svg with currentColor, no fixed size/hardcoded color, preferably square viewBox, and the generic fallback is not a substitute. Action: Add providers/kiro/logo.svg meeting the currentColor/no-fixed-size requirements, or obtain explicit maintainer waiver before merge.

@github-actions

Copy link
Copy Markdown
Contributor

Closing this pull request as stale because it has not been updated in 30 days. Feel free to reopen it or submit a new pull request if the work is resumed.

@github-actions github-actions Bot closed this Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants