diff --git a/packages/core/src/schema.ts b/packages/core/src/schema.ts index d7f042361..38926c8fe 100644 --- a/packages/core/src/schema.ts +++ b/packages/core/src/schema.ts @@ -150,6 +150,7 @@ export const Provider = z const isOpenAIcompatible = data.npm === "@ai-sdk/openai-compatible"; const isOpenrouter = data.npm === "@openrouter/ai-sdk-provider"; const isAnthropic = data.npm === "@ai-sdk/anthropic"; + const isKiro = data.npm === "kiro-acp-ai-provider"; const hasApi = data.api !== undefined; return ( @@ -161,17 +162,20 @@ export const Provider = z isAnthropic || // openai: api optional (always allowed) isOpenAI || + // kiro: api optional (always allowed) + isKiro || // all others: must NOT have api (!isOpenAI && !isOpenAIcompatible && !isOpenrouter && !isAnthropic && + !isKiro && !hasApi) ); }, { message: - "'api' is required for openai-compatible and openrouter, optional for anthropic and openai, forbidden otherwise", + "'api' is required for openai-compatible and openrouter, optional for anthropic, openai, and kiro, forbidden otherwise", path: ["api"], }, ); diff --git a/providers/kiro/models/auto.toml b/providers/kiro/models/auto.toml new file mode 100644 index 000000000..7c64d7561 --- /dev/null +++ b/providers/kiro/models/auto.toml @@ -0,0 +1,21 @@ +name = "Auto" +family = "claude-sonnet" +release_date = "2026-03-23" +last_updated = "2026-03-23" +attachment = true +reasoning = false +temperature = true +tool_call = true +open_weights = false + +[cost] +input = 0 +output = 0 + +[limit] +context = 1_000_000 +output = 64_000 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/kiro/models/claude-haiku-4.5.toml b/providers/kiro/models/claude-haiku-4.5.toml new file mode 100644 index 000000000..6ce7e23d7 --- /dev/null +++ b/providers/kiro/models/claude-haiku-4.5.toml @@ -0,0 +1,21 @@ +name = "Claude Haiku 4.5" +family = "claude-haiku" +release_date = "2026-03-23" +last_updated = "2026-03-23" +attachment = true +reasoning = false +temperature = true +tool_call = true +open_weights = false + +[cost] +input = 0 +output = 0 + +[limit] +context = 200_000 +output = 64_000 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/kiro/models/claude-opus-4.5.toml b/providers/kiro/models/claude-opus-4.5.toml new file mode 100644 index 000000000..5e5f95486 --- /dev/null +++ b/providers/kiro/models/claude-opus-4.5.toml @@ -0,0 +1,21 @@ +name = "Claude Opus 4.5" +family = "claude-opus" +release_date = "2026-03-23" +last_updated = "2026-03-23" +attachment = true +reasoning = false +temperature = true +tool_call = true +open_weights = false + +[cost] +input = 0 +output = 0 + +[limit] +context = 200_000 +output = 64_000 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/kiro/models/claude-opus-4.6.toml b/providers/kiro/models/claude-opus-4.6.toml new file mode 100644 index 000000000..d49eec361 --- /dev/null +++ b/providers/kiro/models/claude-opus-4.6.toml @@ -0,0 +1,21 @@ +name = "Claude Opus 4.6" +family = "claude-opus" +release_date = "2026-03-23" +last_updated = "2026-03-23" +attachment = true +reasoning = false +temperature = true +tool_call = true +open_weights = false + +[cost] +input = 0 +output = 0 + +[limit] +context = 1_000_000 +output = 64_000 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/kiro/models/claude-opus-4.7.toml b/providers/kiro/models/claude-opus-4.7.toml new file mode 100644 index 000000000..09e147d84 --- /dev/null +++ b/providers/kiro/models/claude-opus-4.7.toml @@ -0,0 +1,21 @@ +name = "Claude Opus 4.7" +family = "claude-opus" +release_date = "2026-04-15" +last_updated = "2026-04-15" +attachment = true +reasoning = false +temperature = false +tool_call = true +open_weights = false + +[cost] +input = 0 +output = 0 + +[limit] +context = 1_000_000 +output = 64_000 + +[modalities] +input = ["text", "image"] +output = ["text"] \ No newline at end of file diff --git a/providers/kiro/models/claude-sonnet-4.5.toml b/providers/kiro/models/claude-sonnet-4.5.toml new file mode 100644 index 000000000..e01c5a4e4 --- /dev/null +++ b/providers/kiro/models/claude-sonnet-4.5.toml @@ -0,0 +1,21 @@ +name = "Claude Sonnet 4.5" +family = "claude-sonnet" +release_date = "2026-03-23" +last_updated = "2026-03-23" +attachment = true +reasoning = false +temperature = true +tool_call = true +open_weights = false + +[cost] +input = 0 +output = 0 + +[limit] +context = 200_000 +output = 64_000 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/kiro/models/claude-sonnet-4.6.toml b/providers/kiro/models/claude-sonnet-4.6.toml new file mode 100644 index 000000000..54126d0de --- /dev/null +++ b/providers/kiro/models/claude-sonnet-4.6.toml @@ -0,0 +1,21 @@ +name = "Claude Sonnet 4.6" +family = "claude-sonnet" +release_date = "2026-03-23" +last_updated = "2026-03-23" +attachment = true +reasoning = false +temperature = true +tool_call = true +open_weights = false + +[cost] +input = 0 +output = 0 + +[limit] +context = 1_000_000 +output = 64_000 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/kiro/models/claude-sonnet-4.toml b/providers/kiro/models/claude-sonnet-4.toml new file mode 100644 index 000000000..f8b11de0c --- /dev/null +++ b/providers/kiro/models/claude-sonnet-4.toml @@ -0,0 +1,21 @@ +name = "Claude Sonnet 4" +family = "claude-sonnet" +release_date = "2026-03-23" +last_updated = "2026-03-23" +attachment = true +reasoning = false +temperature = true +tool_call = true +open_weights = false + +[cost] +input = 0 +output = 0 + +[limit] +context = 200_000 +output = 64_000 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/kiro/models/deepseek-3.2.toml b/providers/kiro/models/deepseek-3.2.toml new file mode 100644 index 000000000..8f9232b09 --- /dev/null +++ b/providers/kiro/models/deepseek-3.2.toml @@ -0,0 +1,21 @@ +name = "Deepseek v3.2" +family = "deepseek" +release_date = "2026-03-23" +last_updated = "2026-03-23" +attachment = true +reasoning = false +temperature = true +tool_call = true +open_weights = true + +[cost] +input = 0 +output = 0 + +[limit] +context = 164_000 +output = 64_000 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/kiro/models/minimax-m2.1.toml b/providers/kiro/models/minimax-m2.1.toml new file mode 100644 index 000000000..2956ad83d --- /dev/null +++ b/providers/kiro/models/minimax-m2.1.toml @@ -0,0 +1,21 @@ +name = "MiniMax M2.1" +family = "minimax" +release_date = "2026-03-23" +last_updated = "2026-03-23" +attachment = true +reasoning = false +temperature = true +tool_call = true +open_weights = true + +[cost] +input = 0 +output = 0 + +[limit] +context = 196_000 +output = 64_000 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/kiro/models/minimax-m2.5.toml b/providers/kiro/models/minimax-m2.5.toml new file mode 100644 index 000000000..bbcffc180 --- /dev/null +++ b/providers/kiro/models/minimax-m2.5.toml @@ -0,0 +1,21 @@ +name = "MiniMax M2.5" +family = "minimax" +release_date = "2026-03-23" +last_updated = "2026-03-23" +attachment = false +reasoning = false +temperature = true +tool_call = true +open_weights = true + +[cost] +input = 0 +output = 0 + +[limit] +context = 196_000 +output = 64_000 + +[modalities] +input = ["text"] +output = ["text"] diff --git a/providers/kiro/models/qwen3-coder-next.toml b/providers/kiro/models/qwen3-coder-next.toml new file mode 100644 index 000000000..597b0ef30 --- /dev/null +++ b/providers/kiro/models/qwen3-coder-next.toml @@ -0,0 +1,21 @@ +name = "Qwen3 Coder Next" +family = "qwen" +release_date = "2026-03-23" +last_updated = "2026-03-23" +attachment = true +reasoning = false +temperature = true +tool_call = true +open_weights = true + +[cost] +input = 0 +output = 0 + +[limit] +context = 256_000 +output = 64_000 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/kiro/provider.toml b/providers/kiro/provider.toml new file mode 100644 index 000000000..9546a6e6e --- /dev/null +++ b/providers/kiro/provider.toml @@ -0,0 +1,5 @@ +name = "Kiro" +env = ["KIRO_API_KEY"] +npm = "kiro-acp-ai-provider" +api = "https://q.us-east-1.amazonaws.com" +doc = "https://kiro.dev"