Merge pull request #572 from oksusucha/feat/add-kiro-cli-agent
feat: add Kiro CLI as AI agent Co-authored-by: oksusucha <sol4877@gmail.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { ArrowUpRight, CheckCircle as CheckCircle2, CircleNotch as Loader2, Cloud, HardDrive, Robot as Bot, Terminal } from '@phosphor-icons/react'
|
||||
import {
|
||||
AI_AGENT_DEFINITIONS,
|
||||
getAiAgentAvailability,
|
||||
getAiAgentDefinition,
|
||||
hasAnyInstalledAiAgent,
|
||||
isAiAgentsStatusChecking,
|
||||
@@ -81,7 +82,7 @@ function AgentStatusList({ statuses }: { statuses: AiAgentsStatus }) {
|
||||
return (
|
||||
<div className="space-y-3">
|
||||
{AI_AGENT_DEFINITIONS.map((definition) => {
|
||||
const status = statuses[definition.id]
|
||||
const status = getAiAgentAvailability(statuses, definition.id)
|
||||
const ready = status.status === 'installed'
|
||||
return (
|
||||
<div
|
||||
@@ -113,8 +114,8 @@ export function AiAgentsOnboardingPrompt({
|
||||
onContinue,
|
||||
}: AiAgentsOnboardingPromptProps) {
|
||||
const copy = getPromptCopy(statuses)
|
||||
const showLegacyClaudeCompatibility = statuses.claude_code.status !== 'installed'
|
||||
const missingAgents = AI_AGENT_DEFINITIONS.filter((definition) => statuses[definition.id].status === 'missing')
|
||||
const showLegacyClaudeCompatibility = getAiAgentAvailability(statuses, 'claude_code').status !== 'installed'
|
||||
const missingAgents = AI_AGENT_DEFINITIONS.filter((definition) => getAiAgentAvailability(statuses, definition.id).status === 'missing')
|
||||
|
||||
return (
|
||||
<OnboardingShell
|
||||
|
||||
@@ -2,6 +2,7 @@ import { Copy, Cube, Monitor, Moon, Sun, X } from '@phosphor-icons/react'
|
||||
import {
|
||||
AI_AGENT_DEFINITIONS,
|
||||
createMissingAiAgentsStatus,
|
||||
getAiAgentAvailability,
|
||||
getAiAgentDefinition,
|
||||
resolveDefaultAiAgent,
|
||||
type AiAgentId,
|
||||
@@ -939,7 +940,7 @@ function buildDefaultAiTargetOptions(
|
||||
t: Translate,
|
||||
): Array<{ value: string; label: string }> {
|
||||
const agentOptions = AI_AGENT_DEFINITIONS.map((definition) => {
|
||||
const status = aiAgentsStatus[definition.id]
|
||||
const status = getAiAgentAvailability(aiAgentsStatus, definition.id)
|
||||
const suffix = status.status === 'installed'
|
||||
? ` (${t('settings.aiAgents.installed')}${status.version ? ` ${status.version}` : ''})`
|
||||
: ` (${t('settings.aiAgents.missing')})`
|
||||
@@ -1110,7 +1111,7 @@ function AiAgentsInstalledSection({
|
||||
<div className="mt-1 text-xs leading-5 text-muted-foreground">{t('settings.aiAgents.installedDescription')}</div>
|
||||
<div className="mt-3 grid grid-cols-2 gap-2">
|
||||
{AI_AGENT_DEFINITIONS.map((definition) => {
|
||||
const status = aiAgentsStatus[definition.id]
|
||||
const status = getAiAgentAvailability(aiAgentsStatus, definition.id)
|
||||
const installed = status.status === 'installed'
|
||||
return (
|
||||
<div key={definition.id} className="rounded-md border border-border bg-background px-3 py-2">
|
||||
@@ -1133,7 +1134,7 @@ function AiAgentsInstalledSection({
|
||||
|
||||
function renderDefaultAiAgentSummary(defaultAiAgent: AiAgentId, aiAgentsStatus: AiAgentsStatus, t: Translate): string {
|
||||
const definition = getAiAgentDefinition(defaultAiAgent)
|
||||
const status = Reflect.get(aiAgentsStatus, defaultAiAgent) as AiAgentsStatus[AiAgentId]
|
||||
const status = getAiAgentAvailability(aiAgentsStatus, defaultAiAgent)
|
||||
if (status.status === 'installed') {
|
||||
return t('settings.aiAgents.ready', {
|
||||
agent: definition.label,
|
||||
|
||||
@@ -2,6 +2,7 @@ import { CaretUpDown as ChevronsUpDown, Sparkle, Warning as AlertTriangle } from
|
||||
import { Button } from '@/components/ui/button'
|
||||
import {
|
||||
AI_AGENT_DEFINITIONS,
|
||||
getAiAgentAvailability,
|
||||
getAiAgentDefinition,
|
||||
hasAnyInstalledAiAgent,
|
||||
isAiAgentInstalled,
|
||||
@@ -65,7 +66,7 @@ function badgeTooltip(
|
||||
if (!isAiAgentInstalled(statuses, defaultAgent)) {
|
||||
return translate(locale, 'status.ai.selectedMissing', { agent: definition.label })
|
||||
}
|
||||
const version = (Reflect.get(statuses, defaultAgent) as AiAgentsStatus[AiAgentId]).version
|
||||
const version = getAiAgentAvailability(statuses, defaultAgent).version
|
||||
const base = translate(locale, 'status.ai.defaultAgent', { agent: definition.label, version: version ? ` ${version}` : '' })
|
||||
if (!guidanceSummary) return base
|
||||
if (vaultAiGuidanceNeedsRestore(guidanceStatus!)) {
|
||||
@@ -101,7 +102,7 @@ function menuHeading(locale: AppLocale, selectedTarget: AiTarget, selectedAgentR
|
||||
}
|
||||
|
||||
function statusText(statuses: AiAgentsStatus, definition: AiAgentDefinition): string {
|
||||
const version = statuses[definition.id].version
|
||||
const version = getAiAgentAvailability(statuses, definition.id).version
|
||||
return version ? `${definition.label} ${version}` : definition.label
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user