Skip to content

Commit 9cacc38

Browse files
authored
feat(shared): add Kiro CLI as a built-in terminal agent (#6765)
* feat(shared): add Kiro CLI as a built-in terminal agent Adds AWS's Kiro CLI (`kiro-cli`) to BUILTIN_TERMINAL_AGENTS, with its preset icon, README row, docs bullet, and marketing demo entry. Rebased by hand from #3571 onto the current manifest shape: the prompt launch now seeds the interactive chat via the `[INPUT]` positional instead of `--no-interactive` (headless mode needs KIRO_API_KEY, which most interactive users do not have), resume uses `--resume-id`, and the headless form lives in nonInteractiveCommand. Kiro runs as a plain terminal agent, same shape as Pi / Cursor Agent, so no agent-setup target is needed. Co-authored-by: Hyunwoo Kim <13450715+Kcrong@users.noreply.github.com> Claude-Session: https://claude.ai/code/session_01DuAhw6Ao5Cru3acdkrzx9f * feat(desktop): expose Kiro in the icon picker, settings search, and preset docs Follow-ups from review on #6765: icon-picker entry so custom agents can pick the Kiro icon, settings-search keywords, and the terminal-presets doc line, matching kimi/grok. Co-authored-by: Ishaan Bansal <35862574+bshaan77@users.noreply.github.com> Claude-Session: https://claude.ai/code/session_01DuAhw6Ao5Cru3acdkrzx9f
1 parent 7277eb9 commit 9cacc38

11 files changed

Lines changed: 71 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ Superset works with any CLI-based coding agent, including:
196196
| <picture><source media="(prefers-color-scheme: dark)" srcset="packages/ui/src/assets/icons/preset-icons/copilot-white.svg" /><img height="16" align="top" alt="GitHub Copilot" src="packages/ui/src/assets/icons/preset-icons/copilot.svg" /></picture> &nbsp;[GitHub Copilot](https://github.com/features/copilot) | Fully supported |
197197
| <picture><source media="(prefers-color-scheme: dark)" srcset="packages/ui/src/assets/icons/preset-icons/grok-white.svg" /><img height="16" align="top" alt="Grok" src="packages/ui/src/assets/icons/preset-icons/grok.svg" /></picture> &nbsp;[Grok](https://x.ai/) | Fully supported |
198198
| <picture><source media="(prefers-color-scheme: dark)" srcset="packages/ui/src/assets/icons/preset-icons/kimi-white.svg" /><img height="16" align="top" alt="Kimi Code" src="packages/ui/src/assets/icons/preset-icons/kimi.svg" /></picture> &nbsp;[Kimi Code](https://www.kimi.com/) | Fully supported |
199+
| <img height="16" align="top" alt="Kiro" src="packages/ui/src/assets/icons/preset-icons/kiro.svg" /> &nbsp;[Kiro](https://kiro.dev/cli/) | Fully supported |
199200
| <picture><source media="(prefers-color-scheme: dark)" srcset="packages/ui/src/assets/icons/preset-icons/mastracode-white.svg" /><img height="16" align="top" alt="Mastra Code" src="packages/ui/src/assets/icons/preset-icons/mastracode.svg" /></picture> &nbsp;[Mastra Code](https://mastra.ai/) | Fully supported |
200201
| <img height="16" align="top" alt="Mistral Vibe" src="packages/ui/src/assets/icons/preset-icons/vibe.svg" /> &nbsp;[Mistral Vibe](https://mistral.ai/) | Fully supported |
201202
| <picture><source media="(prefers-color-scheme: dark)" srcset="packages/ui/src/assets/icons/preset-icons/opencode-white.svg" /><img height="16" align="top" alt="OpenCode" src="packages/ui/src/assets/icons/preset-icons/opencode.svg" /></picture> &nbsp;[OpenCode](https://github.com/opencode-ai/opencode) | Fully supported |

apps/desktop/src/renderer/routes/_authenticated/settings/agents/components/V2AgentsSettings/components/AgentIconPicker/agent-icon-options.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ export const AGENT_ICON_OPTIONS: readonly AgentIconOption[] = [
2222
{ id: "vibe", label: "Mistral Vibe" },
2323
{ id: "kimi", label: "Kimi Code" },
2424
{ id: "grok", label: "Grok" },
25+
{ id: "kiro", label: "Kiro" },
2526
];

apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -867,6 +867,8 @@ export const SETTINGS_ITEMS: SettingsItem[] = [
867867
"moonshot",
868868
"grok",
869869
"xai",
870+
"kiro",
871+
"aws",
870872
],
871873
},
872874
{
@@ -928,6 +930,8 @@ export const SETTINGS_ITEMS: SettingsItem[] = [
928930
"moonshot",
929931
"grok",
930932
"xai",
933+
"kiro",
934+
"aws",
931935
],
932936
},
933937
{

apps/docs/content/docs/agent-integration.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ Run AI coding agents in isolated workspaces. Each agent works independently with
2525
- **Cursor Agent** - Cursor AI agent
2626
- **Droid** - Factory's autonomous coding agent
2727
- **Polygraph** - Meta-harness with cross-repo visibility and persistent memory
28+
- **Kiro** - AWS's spec-driven CLI coding agent
2829

2930
## Chat
3031

apps/docs/content/docs/terminal-presets.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Pre-configured presets for popular AI agents. Defaults mirror the bundled Supers
5555
- **vibe** - `vibe --trust --auto-approve` (Mistral's coding agent; trust grants access to `AGENTS.md` and `.agents/skills/`)
5656
- **kimi** - `kimi` (Kimi Code CLI; prompt launches run with `kimi -p` and resume in the interactive TUI)
5757
- **grok** - `grok --always-approve` (xAI's Grok Build CLI; prompts seed the interactive session directly)
58+
- **kiro** - `kiro-cli chat --trust-all-tools` (AWS's Kiro CLI; prompts seed the interactive session directly)
5859

5960
## Preset Bar
6061

Lines changed: 11 additions & 0 deletions
Loading

apps/marketing/src/app/components/FeaturesSection/components/UniversalCompatibilityDemo/UniversalCompatibilityDemo.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const AGENTS = [
1515
{ name: "Mistral Vibe", icon: "/app-icons/vibe.svg", size: 18 },
1616
{ name: "Kimi Code", icon: "/app-icons/kimi.svg", size: 18 },
1717
{ name: "Grok CLI", icon: "/app-icons/grok.svg", size: 18 },
18+
{ name: "Kiro", icon: "/app-icons/kiro.svg", size: 18 },
1819
];
1920

2021
export function UniversalCompatibilityDemo() {

packages/shared/src/agent-command.test.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,34 @@ describe("kimi agent registration", () => {
9797
});
9898
});
9999

100+
describe("kiro agent registration", () => {
101+
it("is a registered terminal agent with the right label", () => {
102+
expect(AGENT_TYPES).toContain("kiro");
103+
expect(AGENT_LABELS.kiro).toBe("Kiro");
104+
});
105+
106+
it("seeds prompt launches into the interactive chat positionally", () => {
107+
const command = buildAgentPromptCommand({
108+
prompt: "hello",
109+
randomId: "kiro-1234",
110+
agent: "kiro",
111+
});
112+
113+
expect(command).toStartWith(
114+
"kiro-cli chat --trust-all-tools \"$(cat <<'SUPERSET_PROMPT_kiro1234'",
115+
);
116+
expect(command).toEndWith('\n)"');
117+
});
118+
119+
it("derives host preset args and id-based resume from the base command", () => {
120+
const preset = getPresetById("kiro");
121+
expect(preset?.command).toBe("kiro-cli");
122+
expect(preset?.args).toEqual(["chat", "--trust-all-tools"]);
123+
expect(preset?.promptArgs).toEqual([]);
124+
expect(preset?.resumeArgs).toEqual(["--resume-id"]);
125+
});
126+
});
127+
100128
describe("grok agent registration", () => {
101129
it("is a registered terminal agent with the right label", () => {
102130
expect(AGENT_TYPES).toContain("grok");

packages/shared/src/builtin-terminal-agents.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,15 @@ export const BUILTIN_TERMINAL_AGENTS = [
199199
command: "polygraph session start",
200200
promptCommand: "polygraph session start --",
201201
}),
202+
createBuiltinTerminalAgent({
203+
id: "kiro",
204+
label: "Kiro",
205+
description:
206+
"AWS's spec-driven coding agent for agentic workflows in the terminal.",
207+
command: "kiro-cli chat --trust-all-tools",
208+
resumeCommand: "kiro-cli chat --trust-all-tools --resume-id",
209+
nonInteractiveCommand: "kiro-cli chat --no-interactive",
210+
}),
202211
] as const;
203212

204213
export type BuiltinTerminalAgentType =

packages/ui/src/assets/icons/preset-icons/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import grokIcon from "./grok.svg";
1212
import grokWhiteIcon from "./grok-white.svg";
1313
import kimiIcon from "./kimi.svg";
1414
import kimiWhiteIcon from "./kimi-white.svg";
15+
import kiroIcon from "./kiro.svg";
1516
import mastracodeIcon from "./mastracode.svg";
1617
import mastracodeWhiteIcon from "./mastracode-white.svg";
1718
import opencodeIcon from "./opencode.svg";
@@ -36,6 +37,7 @@ export const PRESET_ICONS: Record<string, PresetIconSet> = {
3637
gemini: { light: geminiIcon, dark: geminiIcon },
3738
grok: { light: grokIcon, dark: grokWhiteIcon },
3839
kimi: { light: kimiIcon, dark: kimiWhiteIcon },
40+
kiro: { light: kiroIcon, dark: kiroIcon },
3941
pi: { light: piIcon, dark: piWhiteIcon },
4042
polygraph: { light: polygraphIcon, dark: polygraphWhiteIcon },
4143
superset: { light: supersetIcon, dark: supersetIcon },
@@ -81,6 +83,7 @@ export {
8183
grokWhiteIcon,
8284
kimiIcon,
8385
kimiWhiteIcon,
86+
kiroIcon,
8487
mastracodeIcon,
8588
mastracodeWhiteIcon,
8689
opencodeIcon,

0 commit comments

Comments
 (0)