@echothink-ui/agent 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/components/AgentApprovalGate.d.ts +10 -0
- package/dist/components/AgentContextViewer.d.ts +7 -0
- package/dist/components/AgentGeneratedArtifactPanel.d.ts +8 -0
- package/dist/components/AgentHandoffPanel.d.ts +22 -0
- package/dist/components/AgentInterruptionPanel.d.ts +13 -0
- package/dist/components/AgentMemoryPanel.d.ts +9 -0
- package/dist/components/AgentMessageList.d.ts +8 -0
- package/dist/components/AgentPlanDiff.d.ts +7 -0
- package/dist/components/AgentPlanPreview.d.ts +6 -0
- package/dist/components/AgentPromptBox.d.ts +15 -0
- package/dist/components/AgentRunControls.d.ts +10 -0
- package/dist/components/AgentSafetyPanel.d.ts +6 -0
- package/dist/components/AgentStateBadge.d.ts +6 -0
- package/dist/components/AgentThinkingChain.d.ts +8 -0
- package/dist/components/AgentThinkingPanel.d.ts +8 -0
- package/dist/components/AgentToolCallLog.d.ts +7 -0
- package/dist/components/AgentTraceViewer.d.ts +6 -0
- package/dist/components/AppDomainAgentPanel.d.ts +17 -0
- package/dist/components/ChatAgentRail.d.ts +24 -0
- package/dist/components/ScopeAttachmentPanel.d.ts +7 -0
- package/dist/components/utils.d.ts +20 -0
- package/dist/index.cjs +2709 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +2433 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.js +2666 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +128 -0
- package/package.json +45 -0
- package/src/components/AgentApprovalGate.tsx +165 -0
- package/src/components/AgentContextViewer.tsx +161 -0
- package/src/components/AgentGeneratedArtifactPanel.tsx +224 -0
- package/src/components/AgentHandoffPanel.tsx +154 -0
- package/src/components/AgentInterruptionPanel.tsx +85 -0
- package/src/components/AgentMemoryPanel.tsx +167 -0
- package/src/components/AgentMessageList.tsx +209 -0
- package/src/components/AgentPlanDiff.tsx +149 -0
- package/src/components/AgentPlanPreview.tsx +106 -0
- package/src/components/AgentPromptBox.tsx +163 -0
- package/src/components/AgentRunControls.tsx +221 -0
- package/src/components/AgentSafetyPanel.tsx +113 -0
- package/src/components/AgentStateBadge.tsx +30 -0
- package/src/components/AgentThinkingChain.tsx +151 -0
- package/src/components/AgentThinkingPanel.tsx +56 -0
- package/src/components/AgentToolCallLog.tsx +262 -0
- package/src/components/AgentTraceViewer.tsx +218 -0
- package/src/components/AppDomainAgentPanel.tsx +66 -0
- package/src/components/ChatAgentRail.tsx +192 -0
- package/src/components/ScopeAttachmentPanel.tsx +130 -0
- package/src/components/utils.ts +186 -0
- package/src/index.test.tsx +212 -0
- package/src/index.tsx +88 -0
- package/src/styles.css +2902 -0
- package/src/types.ts +158 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx","../src/components/ChatAgentRail.tsx","../src/components/AgentMessageList.tsx","../src/components/utils.ts","../src/components/AgentPromptBox.tsx","../src/components/AgentStateBadge.tsx","../src/components/ScopeAttachmentPanel.tsx","../src/components/AgentThinkingPanel.tsx","../src/components/AgentThinkingChain.tsx","../src/components/AgentTraceViewer.tsx","../src/components/AgentToolCallLog.tsx","../src/components/AgentApprovalGate.tsx","../src/components/AgentPlanPreview.tsx","../src/components/AgentPlanDiff.tsx","../src/components/AgentMemoryPanel.tsx","../src/components/AgentContextViewer.tsx","../src/components/AgentRunControls.tsx","../src/components/AgentSafetyPanel.tsx","../src/components/AgentInterruptionPanel.tsx","../src/components/AgentHandoffPanel.tsx","../src/components/AgentGeneratedArtifactPanel.tsx","../src/components/AppDomainAgentPanel.tsx"],"sourcesContent":["import \"./styles.css\";\n\nexport { ChatAgentRail, LeftAgentRail } from \"./components/ChatAgentRail\";\nexport type { ChatAgentRailProps, LeftAgentRailProps } from \"./components/ChatAgentRail\";\nexport { AgentMessageList } from \"./components/AgentMessageList\";\nexport type { AgentMessageListProps } from \"./components/AgentMessageList\";\nexport { AgentPromptBox } from \"./components/AgentPromptBox\";\nexport type { AgentPromptBoxProps } from \"./components/AgentPromptBox\";\nexport { ScopeAttachmentPanel } from \"./components/ScopeAttachmentPanel\";\nexport type { ScopeAttachmentPanelProps } from \"./components/ScopeAttachmentPanel\";\nexport { AgentStateBadge } from \"./components/AgentStateBadge\";\nexport type { AgentStateBadgeProps } from \"./components/AgentStateBadge\";\nexport { AgentThinkingPanel } from \"./components/AgentThinkingPanel\";\nexport type { AgentThinkingPanelProps } from \"./components/AgentThinkingPanel\";\nexport { AgentThinkingChain } from \"./components/AgentThinkingChain\";\nexport type { AgentThinkingChainProps } from \"./components/AgentThinkingChain\";\nexport { AgentTraceViewer } from \"./components/AgentTraceViewer\";\nexport type { AgentTraceViewerProps } from \"./components/AgentTraceViewer\";\nexport { AgentToolCallLog } from \"./components/AgentToolCallLog\";\nexport type { AgentToolCallLogProps } from \"./components/AgentToolCallLog\";\nexport { AgentApprovalGate } from \"./components/AgentApprovalGate\";\nexport type { AgentApprovalGateProps } from \"./components/AgentApprovalGate\";\nexport { AgentPlanPreview } from \"./components/AgentPlanPreview\";\nexport type { AgentPlanPreviewProps } from \"./components/AgentPlanPreview\";\nexport { AgentPlanDiff } from \"./components/AgentPlanDiff\";\nexport type { AgentPlanDiffProps } from \"./components/AgentPlanDiff\";\nexport { AgentMemoryPanel } from \"./components/AgentMemoryPanel\";\nexport type { AgentMemoryPanelProps } from \"./components/AgentMemoryPanel\";\nexport { AgentContextViewer } from \"./components/AgentContextViewer\";\nexport type { AgentContextViewerProps } from \"./components/AgentContextViewer\";\nexport { AgentRunControls } from \"./components/AgentRunControls\";\nexport type { AgentRunControlsProps } from \"./components/AgentRunControls\";\nexport { AgentSafetyPanel } from \"./components/AgentSafetyPanel\";\nexport type { AgentSafetyPanelProps } from \"./components/AgentSafetyPanel\";\nexport { AgentInterruptionPanel } from \"./components/AgentInterruptionPanel\";\nexport type { AgentInterruptionPanelProps } from \"./components/AgentInterruptionPanel\";\nexport { AgentHandoffPanel } from \"./components/AgentHandoffPanel\";\nexport type { AgentHandoffPanelProps } from \"./components/AgentHandoffPanel\";\nexport { AgentGeneratedArtifactPanel } from \"./components/AgentGeneratedArtifactPanel\";\nexport type { AgentGeneratedArtifactPanelProps } from \"./components/AgentGeneratedArtifactPanel\";\nexport { AppDomainAgentPanel } from \"./components/AppDomainAgentPanel\";\nexport type { AppDomainAgentPanelProps } from \"./components/AppDomainAgentPanel\";\n\nexport type {\n AgentApprovalAction,\n AgentCitation,\n AgentComponentSurfaceProps,\n AgentContextSource,\n AgentDiffItem,\n AgentGeneratedArtifact,\n AgentHandoffTarget,\n AgentMemoryEntry,\n AgentMessage,\n AgentPlan,\n AgentPlanStep,\n AgentRunState,\n AgentSafetyCheck,\n AgentScopeAttachment,\n AgentStep,\n AgentToolCall,\n AgentTraceSpan,\n ChatAgentRailAttachment\n} from \"./types\";\n\nexport const AgentComponentNames = [\n \"LeftAgentRail\",\n \"ChatAgentRail\",\n \"AgentMessageList\",\n \"AgentPromptBox\",\n \"ScopeAttachmentPanel\",\n \"AgentStateBadge\",\n \"AgentThinkingPanel\",\n \"AgentThinkingChain\",\n \"AgentTraceViewer\",\n \"AgentToolCallLog\",\n \"AgentApprovalGate\",\n \"AgentPlanPreview\",\n \"AgentPlanDiff\",\n \"AgentMemoryPanel\",\n \"AgentContextViewer\",\n \"AgentRunControls\",\n \"AgentSafetyPanel\",\n \"AgentInterruptionPanel\",\n \"AgentHandoffPanel\",\n \"AgentGeneratedArtifactPanel\",\n \"AppDomainAgentPanel\"\n] as const;\nexport type AgentComponentName = (typeof AgentComponentNames)[number];\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport type { AgentMessage, AgentRunState, ChatAgentRailAttachment } from \"../types\";\nimport { AgentMessageList } from \"./AgentMessageList\";\nimport { AgentPromptBox } from \"./AgentPromptBox\";\nimport { AgentStateBadge } from \"./AgentStateBadge\";\nimport { ScopeAttachmentPanel } from \"./ScopeAttachmentPanel\";\nimport { isActiveAgentState, mergeStyle } from \"./utils\";\n\nexport interface ChatAgentRailProps extends Omit<\n React.HTMLAttributes<HTMLElement>,\n \"children\" | \"onSubmit\"\n> {\n agentRef?: string;\n projectRef?: string;\n messages: AgentMessage[];\n state?: AgentRunState;\n prompt: string;\n onPromptChange: (value: string) => void;\n onSubmit?: (prompt: string, attachments?: ChatAgentRailAttachment[]) => void;\n attachments?: ChatAgentRailAttachment[];\n onAttachmentRemove?: (id: string) => void;\n onAttach?: () => void;\n onSlash?: () => void;\n autoScroll?: boolean;\n runControls?: React.ReactNode;\n header?: React.ReactNode;\n scopeLabel?: React.ReactNode;\n width?: number | string;\n}\n\nexport interface LeftAgentRailProps extends ChatAgentRailProps {}\n\ninterface AgentRailBaseProps extends ChatAgentRailProps {\n componentName: \"ChatAgentRail\" | \"LeftAgentRail\";\n railClassName: string;\n placement: \"left\" | \"right\";\n}\n\nexport function ChatAgentRail(props: ChatAgentRailProps) {\n return (\n <AgentRailBase\n {...props}\n componentName=\"ChatAgentRail\"\n railClassName=\"eth-agent-chat-rail\"\n placement=\"right\"\n />\n );\n}\n\nexport function LeftAgentRail(props: LeftAgentRailProps) {\n return (\n <AgentRailBase\n {...props}\n componentName=\"LeftAgentRail\"\n railClassName=\"eth-left-agent-rail eth-agent-left-rail\"\n placement=\"left\"\n />\n );\n}\n\nfunction AgentRailBase({\n agentRef,\n projectRef,\n messages,\n state = \"idle\",\n prompt,\n onPromptChange,\n onSubmit,\n attachments = [],\n onAttachmentRemove,\n onAttach,\n onSlash,\n autoScroll = true,\n runControls,\n header,\n scopeLabel,\n width = 360,\n className,\n style,\n componentName,\n railClassName,\n placement,\n \"aria-label\": ariaLabel,\n ...props\n}: AgentRailBaseProps) {\n const streaming = messages.some((message) => message.streaming) || isActiveAgentState(state);\n const border = \"1px solid var(--eth-color-border-subtle)\";\n\n return (\n <aside\n {...props}\n aria-label={ariaLabel ?? \"Agent collaboration rail\"}\n className={clsx(\"eth-chat-rail\", railClassName, className)}\n data-eth-component={componentName}\n data-placement={placement}\n style={mergeStyle(\n {\n background: \"var(--eth-color-layer-01)\",\n borderInlineEnd: placement === \"left\" ? border : 0,\n borderInlineStart: placement === \"right\" ? border : 0,\n display: \"grid\",\n flex: `0 0 ${typeof width === \"number\" ? `${width}px` : width}`,\n gridTemplateRows: \"auto minmax(0, 1fr) auto\",\n height: \"100%\",\n maxWidth: \"100%\",\n minHeight: 0,\n width\n },\n style\n )}\n >\n <header\n className=\"eth-chat-rail__header\"\n style={{\n borderBottom: \"1px solid var(--eth-color-border-subtle)\",\n display: \"grid\",\n gap: \"0.75rem\",\n padding: \"1rem\"\n }}\n >\n <div\n className=\"eth-chat-rail__header-main\"\n style={{\n alignItems: \"flex-start\",\n display: \"flex\",\n gap: \"0.75rem\",\n justifyContent: \"space-between\"\n }}\n >\n <div style={{ minWidth: 0 }}>\n {header ?? (\n <>\n <h2 className=\"eth-chat-rail__title\" style={{ fontSize: \"1rem\", margin: 0 }}>\n Agent\n </h2>\n {agentRef || projectRef ? (\n <p\n className=\"eth-chat-rail__meta\"\n style={{\n color: \"var(--eth-color-text-secondary)\",\n fontSize: \"0.8rem\",\n margin: \"0.25rem 0 0\"\n }}\n >\n {[agentRef, projectRef].filter(Boolean).join(\" · \")}\n </p>\n ) : null}\n </>\n )}\n </div>\n <AgentStateBadge state={state} />\n </div>\n {runControls ? <div className=\"eth-chat-rail__run-controls\">{runControls}</div> : null}\n </header>\n\n <AgentMessageList\n className=\"eth-chat-rail__messages\"\n autoScroll={autoScroll}\n messages={messages}\n streaming={streaming}\n style={{ minHeight: 0, padding: \"1rem\" }}\n />\n\n <footer\n className=\"eth-chat-rail__footer\"\n style={{\n borderTop: \"1px solid var(--eth-color-border-subtle)\",\n display: \"grid\",\n gap: \"0.75rem\",\n padding: \"1rem\"\n }}\n >\n <ScopeAttachmentPanel\n attachments={attachments.map((attachment) => ({\n ...attachment,\n kind: attachment.kind === \"file\" ? \"document\" : attachment.kind\n }))}\n onRemove={onAttachmentRemove}\n />\n <AgentPromptBox\n value={prompt}\n onChange={onPromptChange}\n scopeLabel={scopeLabel}\n onAttach={onAttach}\n onSlash={onSlash}\n onSubmit={(value) => onSubmit?.(value, attachments)}\n />\n </footer>\n </aside>\n );\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { StatusDot, Tag, statusLabel } from \"@echothink-ui/core\";\nimport type { AgentMessage } from \"../types\";\nimport { formatDateTime, mergeStyle } from \"./utils\";\n\nexport interface AgentMessageListProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n messages: AgentMessage[];\n streaming?: boolean;\n autoScroll?: boolean;\n}\n\nconst roleLabels: Record<AgentMessage[\"role\"], string> = {\n user: \"You\",\n agent: \"Agent\",\n system: \"System\",\n tool: \"Tool\"\n};\n\nexport function AgentMessageList({\n messages,\n streaming,\n autoScroll = true,\n className,\n style,\n ...props\n}: AgentMessageListProps) {\n const listRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!autoScroll) return;\n const node = listRef.current;\n if (!node) return;\n node.scrollTo({ top: node.scrollHeight, behavior: \"smooth\" });\n }, [autoScroll, messages.length, streaming]);\n\n return (\n <div\n {...props}\n ref={listRef}\n role=\"log\"\n aria-live={streaming ? \"polite\" : \"off\"}\n aria-relevant=\"additions text\"\n className={clsx(\"eth-message-list\", \"eth-agent-message-list\", className)}\n data-eth-component=\"AgentMessageList\"\n style={mergeStyle(\n {\n background: \"var(--eth-color-layer-01)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1rem\",\n maxHeight: \"100%\",\n overflowY: \"auto\",\n padding: \"1rem\"\n },\n style\n )}\n >\n {messages.map((message, index) => {\n const isStreaming = Boolean(message.streaming || (streaming && index === messages.length - 1));\n const isUser = message.role === \"user\";\n const isSystem = message.role === \"system\";\n const isTool = message.role === \"tool\";\n const accentBorder = isTool\n ? \"3px solid var(--eth-color-border-strong)\"\n : \"3px solid var(--eth-color-interactive-primary)\";\n\n return (\n <article\n key={message.id}\n className={clsx(\n \"eth-message-list__item\",\n \"eth-agent-message\",\n `eth-agent-message--${message.role}`,\n isStreaming && \"eth-agent-message--streaming\"\n )}\n aria-busy={isStreaming || undefined}\n style={{\n alignSelf: isSystem ? \"stretch\" : isUser ? \"flex-end\" : \"flex-start\",\n contentVisibility: \"auto\",\n containIntrinsicSize: \"1px 96px\",\n display: \"grid\",\n gap: \"0.375rem\",\n maxWidth: isSystem ? \"100%\" : \"min(100%, 42rem)\",\n minWidth: 0,\n textAlign: isSystem ? \"center\" : \"start\",\n width: isSystem ? \"100%\" : \"fit-content\"\n }}\n >\n <header\n className=\"eth-agent-message__header\"\n style={{\n alignItems: \"center\",\n color: \"var(--eth-color-text-secondary)\",\n display: \"flex\",\n flexWrap: \"wrap\",\n fontSize: \"0.75rem\",\n gap: \"0.5rem\",\n justifyContent: isUser ? \"flex-end\" : isSystem ? \"center\" : \"flex-start\",\n lineHeight: 1.333\n }}\n >\n <span\n className=\"eth-agent-message__avatar\"\n aria-hidden\n style={{\n alignItems: \"center\",\n background: isSystem\n ? \"transparent\"\n : isUser\n ? \"var(--eth-color-interactive-primary)\"\n : \"var(--eth-color-layer-02)\",\n border: isSystem\n ? \"1px dashed var(--eth-color-border-subtle)\"\n : \"1px solid var(--eth-color-border-subtle)\",\n borderRadius: \"var(--eth-radius-none)\",\n color: isUser ? \"#fff\" : \"var(--eth-color-text-primary)\",\n display: \"inline-flex\",\n fontSize: \"0.72rem\",\n fontWeight: 700,\n height: 24,\n justifyContent: \"center\",\n width: 24\n }}\n >\n {roleLabels[message.role].slice(0, 1)}\n </span>\n <strong>{roleLabels[message.role]}</strong>\n <time dateTime={message.createdAt}>{formatDateTime(message.createdAt)}</time>\n {message.status ? (\n <StatusDot status={message.status} label={statusLabel(message.status)} />\n ) : null}\n </header>\n\n <div\n className=\"eth-agent-message__bubble\"\n style={{\n background: isSystem\n ? \"var(--eth-color-layer-02)\"\n : isUser\n ? \"var(--eth-color-navy)\"\n : \"var(--eth-color-layer-02)\",\n border: isSystem\n ? \"1px dashed var(--eth-color-border-subtle)\"\n : \"1px solid var(--eth-color-border-subtle)\",\n borderInlineEnd: isStreaming ? accentBorder : undefined,\n borderInlineStart: isUser || isSystem ? undefined : accentBorder,\n borderRadius: \"var(--eth-radius-panel)\",\n color: isUser ? \"#fff\" : \"var(--eth-color-text-primary)\",\n fontFamily: isTool ? \"ui-monospace, SFMono-Regular, Menlo, monospace\" : undefined,\n fontSize: isTool ? \"0.875rem\" : undefined,\n lineHeight: 1.5,\n overflowWrap: \"anywhere\",\n padding: isSystem ? \"0.5rem 0.75rem\" : \"0.875rem 1rem\",\n whiteSpace: isTool ? \"pre-wrap\" : \"normal\",\n wordBreak: \"normal\"\n }}\n >\n {message.content}\n {isStreaming ? (\n <span\n className=\"eth-agent-message__cursor\"\n aria-hidden\n style={{\n animation: \"eth-pulse 0.8s infinite\",\n color: \"var(--eth-color-interactive-primary)\",\n display: \"inline-block\",\n fontWeight: 600,\n marginInlineStart: 3,\n transform: \"translateY(1px)\"\n }}\n >\n ▌\n </span>\n ) : null}\n </div>\n\n {message.citations?.length ? (\n <div\n className=\"eth-agent-message__citations\"\n aria-label=\"Citations\"\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"0.375rem\",\n justifyContent: isUser ? \"flex-end\" : isSystem ? \"center\" : \"flex-start\"\n }}\n >\n {message.citations.map((citation) =>\n citation.href ? (\n <a\n key={citation.id}\n className=\"eth-agent-message__citation-link eth-tag\"\n href={citation.href}\n >\n {citation.label}\n </a>\n ) : (\n <Tag key={citation.id}>{citation.label}</Tag>\n )\n )}\n </div>\n ) : null}\n </article>\n );\n })}\n </div>\n );\n}\n","import type * as React from \"react\";\nimport type { EthOperationalStatus, EthSeverity } from \"@echothink-ui/core\";\nimport type {\n AgentDiffItem,\n AgentPlanStep,\n AgentRunState,\n AgentSafetyCheck\n} from \"../types\";\n\nexport const EMPTY_MARK = \"—\";\n\nexport function formatDateTime(value: string) {\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return value;\n return new Intl.DateTimeFormat(undefined, {\n dateStyle: \"medium\",\n timeStyle: \"short\"\n }).format(date);\n}\n\nexport function formatTime(value: string) {\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return value;\n return new Intl.DateTimeFormat(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n }).format(date);\n}\n\nexport function formatDuration(durationMs?: number) {\n if (durationMs == null) return EMPTY_MARK;\n if (durationMs < 1000) return `${Math.round(durationMs)} ms`;\n return `${(durationMs / 1000).toFixed(durationMs < 10000 ? 1 : 0)} s`;\n}\n\nexport function jsonPreview(value: unknown, redacted = false, maxLength = 120) {\n if (redacted) return \"[redacted]\";\n if (value == null) return EMPTY_MARK;\n const text = typeof value === \"string\" ? value : JSON.stringify(value);\n if (!text) return EMPTY_MARK;\n return text.length > maxLength ? `${text.slice(0, maxLength - 1)}…` : text;\n}\n\nexport function prettyJson(value: unknown, redacted = false) {\n if (redacted) return \"[redacted]\";\n if (value == null) return EMPTY_MARK;\n if (typeof value === \"string\") return value;\n return JSON.stringify(value, null, 2);\n}\n\nexport function stateLabel(state: AgentRunState) {\n switch (state) {\n case \"idle\":\n return \"Idle\";\n case \"listening\":\n return \"Listening\";\n case \"thinking\":\n return \"Thinking\";\n case \"tool-calling\":\n return \"Calling tools\";\n case \"waiting-for-user\":\n return \"Waiting for user\";\n case \"interrupted\":\n return \"Interrupted\";\n case \"failed\":\n return \"Failed\";\n case \"completed\":\n return \"Completed\";\n }\n}\n\nexport function stateSeverity(state: AgentRunState): EthSeverity {\n switch (state) {\n case \"failed\":\n return \"danger\";\n case \"completed\":\n return \"success\";\n case \"waiting-for-user\":\n case \"interrupted\":\n return \"warning\";\n case \"listening\":\n case \"thinking\":\n case \"tool-calling\":\n return \"info\";\n case \"idle\":\n return \"neutral\";\n }\n}\n\nexport function stateStatus(state: AgentRunState): EthOperationalStatus {\n switch (state) {\n case \"completed\":\n return \"completed\";\n case \"failed\":\n return \"failed\";\n case \"waiting-for-user\":\n return \"pending-approval\";\n case \"interrupted\":\n return \"warning\";\n case \"listening\":\n case \"thinking\":\n case \"tool-calling\":\n return \"running\";\n case \"idle\":\n return \"inactive\";\n }\n}\n\nexport function isActiveAgentState(state: AgentRunState) {\n return state === \"listening\" || state === \"thinking\" || state === \"tool-calling\";\n}\n\nexport function statusSeverity(status: EthOperationalStatus): EthSeverity {\n if (status === \"failed\" || status === \"blocked\" || status === \"approval-required\") {\n return \"danger\";\n }\n if (status === \"warning\" || status === \"pending-approval\") return \"warning\";\n if (status === \"completed\" || status === \"succeeded\" || status === \"synced\") return \"success\";\n if (status === \"running\" || status === \"in-progress\" || status === \"active\") return \"info\";\n return \"neutral\";\n}\n\nexport function riskSeverity(riskLevel: \"low\" | \"medium\" | \"high\" | \"critical\" = \"low\") {\n if (riskLevel === \"critical\" || riskLevel === \"high\") return \"danger\" satisfies EthSeverity;\n if (riskLevel === \"medium\") return \"warning\" satisfies EthSeverity;\n return \"info\" satisfies EthSeverity;\n}\n\nexport function safetyStatus(check: AgentSafetyCheck): EthOperationalStatus {\n if (check.status === \"pass\") return \"completed\";\n if (check.status === \"warn\") return \"warning\";\n return \"failed\";\n}\n\nexport function safetySeverity(check: AgentSafetyCheck): EthSeverity {\n if (check.status === \"pass\") return \"success\";\n if (check.status === \"warn\") return \"warning\";\n return \"danger\";\n}\n\nexport function mergeStyle(\n base: React.CSSProperties,\n incoming?: React.CSSProperties\n): React.CSSProperties {\n return incoming ? { ...base, ...incoming } : base;\n}\n\nexport function diffPlanSteps(before: AgentPlanStep[], after: AgentPlanStep[]): AgentDiffItem[] {\n const beforeById = new Map(before.map((step) => [step.id, step]));\n const afterById = new Map(after.map((step) => [step.id, step]));\n const ids = Array.from(\n new Set([...after.map((step) => step.id), ...before.map((step) => step.id)])\n );\n\n return ids.map((id) => {\n const beforeStep = beforeById.get(id);\n const afterStep = afterById.get(id);\n if (!beforeStep && afterStep) {\n return { id, after: afterStep, status: \"added\", severity: \"success\" };\n }\n if (beforeStep && !afterStep) {\n return { id, before: beforeStep, status: \"removed\", severity: \"danger\" };\n }\n const changed = JSON.stringify(beforeStep) !== JSON.stringify(afterStep);\n return {\n id,\n before: beforeStep,\n after: afterStep,\n status: changed ? \"modified\" : \"unchanged\",\n severity: changed ? \"warning\" : \"neutral\"\n };\n });\n}\n\nexport const visuallyHiddenStyle: React.CSSProperties = {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: 1,\n margin: -1,\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n width: 1\n};\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { IconButton, Tag, Textarea } from \"@echothink-ui/core\";\nimport { ChevronRightIcon, PlusIcon } from \"@echothink-ui/icons\";\nimport type { AgentScopeAttachment } from \"../types\";\n\nexport interface AgentPromptBoxProps\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, \"children\" | \"onChange\" | \"onSubmit\"> {\n value: string;\n onChange: (value: string) => void;\n onSubmit?: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n scopeLabel?: React.ReactNode;\n attachments?: AgentScopeAttachment[];\n onAttach?: () => void;\n onAttachmentRemove?: (id: string) => void;\n onSlash?: () => void;\n}\n\nexport function AgentPromptBox({\n value,\n onChange,\n onSubmit,\n placeholder = \"Message the agent...\",\n disabled,\n scopeLabel,\n attachments = [],\n onAttach,\n onAttachmentRemove,\n onSlash,\n className,\n style,\n ...props\n}: AgentPromptBoxProps) {\n const canSubmit = value.trim().length > 0 && !disabled;\n const hasContext = Boolean(scopeLabel) || attachments.length > 0;\n\n const submit = React.useCallback(() => {\n if (!canSubmit) return;\n onSubmit?.(value);\n }, [canSubmit, onSubmit, value]);\n\n return (\n <form\n {...props}\n className={clsx(\"eth-agent-prompt-box\", className)}\n data-eth-component=\"AgentPromptBox\"\n style={style}\n onSubmit={(event) => {\n event.preventDefault();\n submit();\n }}\n >\n {hasContext ? (\n <div className=\"eth-agent-prompt-box__context\">\n {scopeLabel ? (\n <span className=\"eth-agent-prompt-box__scope\">\n <span>Scope</span>\n <strong>{scopeLabel}</strong>\n </span>\n ) : null}\n {attachments.length ? (\n <div className=\"eth-agent-prompt-box__attachments\" aria-label=\"Attached context\">\n {attachments.map((attachment) => (\n <Tag\n key={attachment.id}\n removable={Boolean(onAttachmentRemove)}\n onRemove={\n onAttachmentRemove ? () => onAttachmentRemove(attachment.id) : undefined\n }\n >\n <span className=\"eth-agent-prompt-box__attachment-kind\">\n {kindLabel(attachment.kind)}\n </span>\n <span className=\"eth-agent-prompt-box__attachment-label\">\n {attachment.label}\n </span>\n {attachment.status ? (\n <span\n className=\"eth-agent-prompt-box__attachment-status\"\n data-status={attachment.status}\n role=\"img\"\n aria-label={`Status: ${statusLabel(attachment.status)}`}\n />\n ) : null}\n </Tag>\n ))}\n </div>\n ) : null}\n </div>\n ) : null}\n\n <Textarea\n aria-label=\"Agent prompt\"\n className=\"eth-agent-prompt-box__input\"\n disabled={disabled}\n placeholder={placeholder}\n rows={3}\n value={value}\n onChange={(event) => onChange(event.currentTarget.value)}\n onKeyDown={(event) => {\n if ((event.metaKey || event.ctrlKey) && event.key === \"Enter\") {\n event.preventDefault();\n submit();\n }\n }}\n />\n\n <div className=\"eth-agent-prompt-box__actions\">\n <div className=\"eth-agent-prompt-box__tools\">\n <IconButton\n label=\"Attach scope or file\"\n intent=\"ghost\"\n density=\"compact\"\n disabled={disabled || !onAttach}\n icon={<PlusIcon size={16} />}\n onClick={onAttach}\n />\n <IconButton\n label=\"Open slash commands\"\n intent=\"ghost\"\n density=\"compact\"\n disabled={disabled}\n icon={<span className=\"eth-agent-prompt-box__command-icon\" aria-hidden>/</span>}\n onClick={() => {\n if (onSlash) {\n onSlash();\n return;\n }\n if (!value) onChange(\"/\");\n }}\n />\n </div>\n <span className=\"eth-agent-prompt-box__spacer\" />\n <IconButton\n className=\"eth-agent-prompt-box__submit\"\n label=\"Submit prompt\"\n intent=\"primary\"\n density=\"compact\"\n disabled={!canSubmit}\n icon={<ChevronRightIcon size={16} />}\n type=\"submit\"\n />\n </div>\n </form>\n );\n}\n\nfunction kindLabel(kind: AgentScopeAttachment[\"kind\"]) {\n switch (kind) {\n case \"app-domain\":\n return \"App\";\n case \"document\":\n return \"Doc\";\n default:\n return kind.charAt(0).toUpperCase() + kind.slice(1);\n }\n}\n\nfunction statusLabel(status: NonNullable<AgentScopeAttachment[\"status\"]>) {\n return status.replace(/-/g, \" \");\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport type { AgentRunState } from \"../types\";\nimport { isActiveAgentState, stateLabel } from \"./utils\";\n\nexport interface AgentStateBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n state?: AgentRunState;\n}\n\nexport function AgentStateBadge({ state = \"idle\", className, ...props }: AgentStateBadgeProps) {\n const active = isActiveAgentState(state);\n const label = stateLabel(state);\n\n return (\n <span\n {...props}\n className={clsx(\n \"eth-agent-state-badge\",\n `eth-agent-state-badge--${state}`,\n active && \"eth-agent-state-badge--active\",\n className\n )}\n data-eth-component=\"AgentStateBadge\"\n data-state={state}\n >\n <span className=\"eth-agent-state-badge__dot\" aria-hidden=\"true\" />\n <span className=\"eth-agent-state-badge__label\">{label}</span>\n </span>\n );\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Badge, Button, StatusDot, Surface, statusLabel } from \"@echothink-ui/core\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport type { AgentScopeAttachment } from \"../types\";\n\nexport interface ScopeAttachmentPanelProps\n extends Omit<SurfaceComponentProps, \"children\" | \"items\" | \"metadata\"> {\n attachments: AgentScopeAttachment[];\n onRemove?: (id: string) => void;\n}\n\nconst attentionStatuses = new Set<AgentScopeAttachment[\"status\"]>([\n \"approval-required\",\n \"blocked\",\n \"failed\",\n \"pending-approval\",\n \"stale\",\n \"warning\"\n]);\n\nexport function ScopeAttachmentPanel({\n attachments,\n onRemove,\n title = \"Attached context\",\n subtitle,\n severity,\n className,\n ...props\n}: ScopeAttachmentPanelProps) {\n if (!attachments.length) return null;\n\n const hasAttention = attachments.some((attachment) =>\n attachment.status ? attentionStatuses.has(attachment.status) : false\n );\n const listLabel = typeof title === \"string\" ? `${title} items` : \"Attached context items\";\n const renderedSubtitle =\n subtitle ??\n `${attachments.length} ${\n attachments.length === 1 ? \"scope is\" : \"scopes are\"\n } available to the agent run`;\n\n return (\n <Surface\n {...props}\n className={clsx(\"eth-agent-scope-attachments\", className)}\n data-eth-component=\"ScopeAttachmentPanel\"\n severity={severity ?? (hasAttention ? \"warning\" : undefined)}\n subtitle={renderedSubtitle}\n title={title}\n >\n <ul className=\"eth-agent-scope-attachments__list\" aria-label={listLabel}>\n {attachments.map((attachment) => (\n <li\n key={attachment.id}\n className=\"eth-agent-scope-attachments__item\"\n data-kind={attachment.kind}\n data-status={attachment.status}\n >\n <span className=\"eth-agent-scope-attachments__icon\" aria-hidden=\"true\">\n {kindInitial(attachment.kind)}\n </span>\n <span className=\"eth-agent-scope-attachments__main\">\n <span className=\"eth-agent-scope-attachments__topline\">\n <strong className=\"eth-agent-scope-attachments__label\">\n {attachment.label}\n </strong>\n <Badge severity=\"neutral\">{kindLabel(attachment.kind)}</Badge>\n </span>\n <span className=\"eth-agent-scope-attachments__meta\">\n {kindDescription(attachment.kind)}\n </span>\n </span>\n <span className=\"eth-agent-scope-attachments__aside\">\n {attachment.status ? (\n <StatusDot status={attachment.status} label={statusLabel(attachment.status)} />\n ) : (\n <span className=\"eth-agent-scope-attachments__untracked\">No status</span>\n )}\n {onRemove ? (\n <Button\n aria-label={`Remove ${attachment.label}`}\n density=\"compact\"\n intent=\"ghost\"\n onClick={() => onRemove(attachment.id)}\n >\n Remove\n </Button>\n ) : null}\n </span>\n </li>\n ))}\n </ul>\n </Surface>\n );\n}\n\nfunction kindLabel(kind: AgentScopeAttachment[\"kind\"]) {\n switch (kind) {\n case \"app-domain\":\n return \"App domain\";\n case \"document\":\n return \"Document\";\n default:\n return kind.charAt(0).toUpperCase() + kind.slice(1);\n }\n}\n\nfunction kindDescription(kind: AgentScopeAttachment[\"kind\"]) {\n switch (kind) {\n case \"app-domain\":\n return \"Runnable application boundary\";\n case \"document\":\n return \"Source document\";\n case \"project\":\n return \"Project scope\";\n case \"resource\":\n return \"External resource\";\n case \"task\":\n return \"Task context\";\n case \"scope\":\n return \"General scope\";\n default:\n return \"Attached context\";\n }\n}\n\nfunction kindInitial(kind: AgentScopeAttachment[\"kind\"]) {\n return kindLabel(kind).charAt(0);\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Surface } from \"@echothink-ui/core\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport { formatDateTime } from \"./utils\";\n\nexport interface AgentThinkingPanelProps extends Omit<SurfaceComponentProps, \"children\"> {\n currentStep?: string;\n summary?: string;\n progress?: number;\n lastUpdatedAt?: string;\n}\n\nexport function AgentThinkingPanel({\n currentStep,\n summary,\n progress,\n lastUpdatedAt,\n title = \"Agent thinking\",\n subtitle,\n metadata = [],\n className,\n ...props\n}: AgentThinkingPanelProps) {\n const normalizedProgress =\n typeof progress === \"number\" && Number.isFinite(progress)\n ? Math.max(0, Math.min(100, Math.round(progress)))\n : undefined;\n const panelMetadata = lastUpdatedAt\n ? [{ label: \"Last updated\", value: formatDateTime(lastUpdatedAt) }, ...metadata]\n : metadata;\n\n return (\n <Surface\n {...props}\n className={clsx(\"eth-agent-thinking-panel\", className)}\n data-eth-component=\"AgentThinkingPanel\"\n title={title}\n subtitle={currentStep ?? subtitle}\n metadata={panelMetadata.length ? panelMetadata : undefined}\n >\n {summary ? <p className=\"eth-agent-thinking-panel__summary\">{summary}</p> : null}\n {normalizedProgress != null ? (\n <div className=\"eth-agent-thinking-panel__progress\">\n <div className=\"eth-agent-thinking-panel__progress-label\">\n <span>Progress</span>\n <strong>{normalizedProgress}%</strong>\n </div>\n <progress max={100} value={normalizedProgress} aria-label=\"Agent progress\">\n {normalizedProgress}%\n </progress>\n </div>\n ) : null}\n </Surface>\n );\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Badge, EmptyState, StatusDot, Surface, statusLabel } from \"@echothink-ui/core\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport type { AgentStep } from \"../types\";\nimport { formatDuration } from \"./utils\";\n\nexport interface AgentThinkingChainProps extends Omit<SurfaceComponentProps, \"children\"> {\n steps: AgentStep[];\n streaming?: boolean;\n redactionPolicy?: string;\n}\n\nexport function AgentThinkingChain({\n steps,\n streaming,\n redactionPolicy,\n title = \"Thinking chain\",\n className,\n ...props\n}: AgentThinkingChainProps) {\n return (\n <Surface\n {...props}\n className={clsx(\"eth-agent-thinking-chain\", className)}\n data-eth-component=\"AgentThinkingChain\"\n title={title}\n subtitle={redactionPolicy ? `Redaction policy: ${redactionPolicy}` : undefined}\n >\n {steps.length ? (\n <ol className=\"eth-agent-thinking-chain__steps\" aria-live={streaming ? \"polite\" : \"off\"}>\n {steps.map((step) => (\n <ThinkingStep key={step.id} step={step} depth={0} />\n ))}\n </ol>\n ) : (\n <EmptyState\n title=\"No thinking steps\"\n description=\"Steps will appear as the agent records observations, actions, or blockers.\"\n />\n )}\n </Surface>\n );\n}\n\nfunction ThinkingStep({ step, depth }: { step: AgentStep; depth: number }) {\n const hasChildren = Boolean(step.children?.length);\n const stepClassName = clsx(\n \"eth-agent-thinking-chain__step\",\n `eth-agent-thinking-chain__step--${step.status}`,\n hasChildren && \"eth-agent-thinking-chain__step--branch\"\n );\n\n return (\n <li\n className={clsx(\n \"eth-agent-thinking-chain__item\",\n `eth-agent-thinking-chain__item--${step.status}`\n )}\n style={\n {\n \"--eth-agent-thinking-chain-depth-offset\": `${depth * 1.5}rem`\n } as React.CSSProperties\n }\n >\n <span className=\"eth-agent-thinking-chain__marker\" aria-hidden=\"true\" />\n <div className=\"eth-agent-thinking-chain__item-body\">\n <article className={stepClassName}>\n <StepHeader step={step} hasChildren={hasChildren} />\n <StepDetails step={step} />\n </article>\n {hasChildren ? (\n <ol className=\"eth-agent-thinking-chain__children\">\n {step.children?.map((child) => (\n <ThinkingStep key={child.id} step={child} depth={depth + 1} />\n ))}\n </ol>\n ) : null}\n </div>\n </li>\n );\n}\n\nfunction StepHeader({ step, hasChildren }: { step: AgentStep; hasChildren?: boolean }) {\n return (\n <header className=\"eth-agent-thinking-chain__step-header\">\n <span className=\"eth-agent-thinking-chain__step-heading\">\n <strong className=\"eth-agent-thinking-chain__step-title\">{step.title}</strong>\n {hasChildren ? (\n <span className=\"eth-agent-thinking-chain__branch-count\">\n {step.children?.length} {step.children?.length === 1 ? \"substep\" : \"substeps\"}\n </span>\n ) : null}\n </span>\n <span className=\"eth-agent-thinking-chain__step-meta\">\n {step.redacted ? <Badge severity=\"warning\">Redacted</Badge> : null}\n <StatusDot status={step.status} label={statusLabel(step.status)} />\n {step.durationMs != null ? (\n <span className=\"eth-agent-thinking-chain__duration\">\n {formatDuration(step.durationMs)}\n </span>\n ) : null}\n </span>\n </header>\n );\n}\n\nfunction StepDetails({ step }: { step: AgentStep }) {\n const hasDetails = Boolean(step.observation || step.action || step.blocker);\n\n if (step.redacted) {\n return <p className=\"eth-agent-thinking-chain__redacted\">Details are hidden by policy.</p>;\n }\n\n if (!hasDetails) {\n return <p className=\"eth-agent-thinking-chain__empty-detail\">No public details recorded.</p>;\n }\n\n return (\n <dl className=\"eth-agent-thinking-chain__fields\">\n {step.observation ? <StepField label=\"Observation\" value={step.observation} /> : null}\n {step.action ? <StepField label=\"Action\" value={step.action} monospaced /> : null}\n {step.blocker ? (\n <StepField\n label=\"Blocker\"\n value={step.blocker}\n className=\"eth-agent-thinking-chain__field--blocker\"\n />\n ) : null}\n </dl>\n );\n}\n\nfunction StepField({\n label,\n value,\n monospaced,\n className\n}: {\n label: string;\n value: string;\n monospaced?: boolean;\n className?: string;\n}) {\n return (\n <div className={clsx(\"eth-agent-thinking-chain__field\", className)}>\n <dt>{label}</dt>\n <dd className={clsx(monospaced && \"eth-agent-thinking-chain__field-value--mono\")}>{value}</dd>\n </div>\n );\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Badge, EmptyState, StatusDot, Surface, statusLabel } from \"@echothink-ui/core\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport type { AgentTraceSpan } from \"../types\";\nimport { formatDuration, formatTime, prettyJson, statusSeverity } from \"./utils\";\n\nexport interface AgentTraceViewerProps extends Omit<SurfaceComponentProps, \"children\"> {\n spans: AgentTraceSpan[];\n}\n\ninterface TimelineSpan {\n span: AgentTraceSpan;\n start: number;\n end: number;\n depth: number;\n}\n\nexport function AgentTraceViewer({\n spans,\n title = \"Trace viewer\",\n className,\n ...props\n}: AgentTraceViewerProps) {\n const [selectedSpanId, setSelectedSpanId] = React.useState<string | undefined>(spans[0]?.id);\n const timeline = React.useMemo(() => buildTimeline(spans), [spans]);\n const selectedSpan = spans.find((span) => span.id === selectedSpanId) ?? spans[0];\n const selectedTimelineItem = timeline.items.find((item) => item.span.id === selectedSpan?.id);\n const activeCount = spans.filter((span) =>\n [\"running\", \"in-progress\", \"pending-approval\", \"approval-required\"].includes(span.status)\n ).length;\n const selectedAttributes = Object.entries(selectedSpan?.attributes ?? {});\n\n return (\n <Surface\n {...props}\n className={clsx(\"eth-trace\", \"eth-agent-trace-viewer\", className)}\n data-eth-component=\"AgentTraceViewer\"\n title={title}\n >\n {!spans.length ? (\n <EmptyState title=\"No trace spans\" />\n ) : (\n <>\n <dl className=\"eth-trace__summary\" aria-label=\"Trace summary\">\n <div>\n <dt>Spans</dt>\n <dd>{spans.length}</dd>\n </div>\n <div>\n <dt>Window</dt>\n <dd>{formatDuration(timeline.total)}</dd>\n </div>\n <div>\n <dt>Active</dt>\n <dd>{activeCount}</dd>\n </div>\n </dl>\n\n <div className=\"eth-trace__layout\">\n <section className=\"eth-trace__timeline-panel\" aria-label=\"Trace timeline\">\n <div className=\"eth-trace__axis\" aria-hidden=\"true\">\n <span>0 ms</span>\n <span>{formatDuration(timeline.total / 2)}</span>\n <span>{formatDuration(timeline.total)}</span>\n </div>\n\n <div className=\"eth-trace__timeline\" role=\"list\">\n {timeline.items.map(({ span, start, end, depth }) => {\n const left = ((start - timeline.min) / timeline.total) * 100;\n const width = Math.max(((end - start) / timeline.total) * 100, 1);\n const selected = selectedSpan?.id === span.id;\n\n return (\n <div\n key={span.id}\n className={clsx(\"eth-trace__row\", selected && \"eth-trace__row--selected\")}\n role=\"listitem\"\n style={\n {\n \"--eth-trace-indent\": `${depth}rem`,\n \"--eth-trace-left\": `${left}%`,\n \"--eth-trace-width\": `${width}%`\n } as React.CSSProperties\n }\n >\n <button\n type=\"button\"\n className={clsx(\n \"eth-trace__span-label\",\n selected && \"eth-trace__span-label--selected\"\n )}\n aria-pressed={selected}\n onClick={() => setSelectedSpanId(span.id)}\n >\n <span className=\"eth-trace__span-title\">\n <StatusDot status={span.status} label={statusLabel(span.status)} />\n <span className=\"eth-trace__span-name\">{span.name}</span>\n </span>\n <span className=\"eth-trace__span-meta\">\n {formatTime(span.startedAt)} · {formatDuration(span.durationMs)}\n </span>\n </button>\n\n <div\n className=\"eth-trace__track\"\n role=\"group\"\n aria-label={`${span.name}, ${statusLabel(span.status)}, ${formatDuration(span.durationMs)}`}\n >\n <button\n type=\"button\"\n className={clsx(\n \"eth-trace__bar\",\n `eth-trace__bar--${span.status}`,\n selected && \"eth-trace__bar--selected\"\n )}\n aria-label={`Select ${span.name}`}\n onClick={() => setSelectedSpanId(span.id)}\n />\n </div>\n </div>\n );\n })}\n </div>\n </section>\n\n <aside className=\"eth-trace__details\" aria-label=\"Selected span details\">\n {selectedSpan ? (\n <>\n <header className=\"eth-trace__details-header\">\n <div>\n <p className=\"eth-trace__details-eyebrow\">Selected span</p>\n <h3>{selectedSpan.name}</h3>\n </div>\n <Badge severity={statusSeverity(selectedSpan.status)}>\n {statusLabel(selectedSpan.status)}\n </Badge>\n </header>\n\n <dl className=\"eth-trace__detail-grid\">\n <div>\n <dt>Started</dt>\n <dd>{formatTime(selectedSpan.startedAt)}</dd>\n </div>\n <div>\n <dt>Duration</dt>\n <dd>{formatDuration(selectedSpan.durationMs)}</dd>\n </div>\n <div>\n <dt>Depth</dt>\n <dd>{selectedTimelineItem?.depth ?? 0}</dd>\n </div>\n <div>\n <dt>Span ID</dt>\n <dd>{selectedSpan.id}</dd>\n </div>\n {selectedSpan.parentId ? (\n <div>\n <dt>Parent</dt>\n <dd>{selectedSpan.parentId}</dd>\n </div>\n ) : null}\n </dl>\n\n <section className=\"eth-trace__attributes\">\n <div className=\"eth-trace__attributes-header\">\n <h4>Attributes</h4>\n <Badge severity=\"neutral\">{selectedAttributes.length}</Badge>\n </div>\n {selectedAttributes.length ? (\n <pre>{prettyJson(selectedSpan.attributes)}</pre>\n ) : (\n <p>No attributes recorded.</p>\n )}\n </section>\n </>\n ) : (\n <EmptyState title=\"Select a span\" />\n )}\n </aside>\n </div>\n </>\n )}\n </Surface>\n );\n}\n\nfunction buildTimeline(spans: AgentTraceSpan[]) {\n if (!spans.length) return { items: [] as TimelineSpan[], min: 0, total: 1 };\n\n const spansById = new Map(spans.map((span) => [span.id, span]));\n const depthById = new Map<string, number>();\n\n const depthFor = (span: AgentTraceSpan, seen = new Set<string>()): number => {\n if (depthById.has(span.id)) return depthById.get(span.id) ?? 0;\n if (!span.parentId || seen.has(span.id)) {\n depthById.set(span.id, 0);\n return 0;\n }\n const parent = spansById.get(span.parentId);\n const depth = parent ? depthFor(parent, new Set(seen).add(span.id)) + 1 : 0;\n depthById.set(span.id, depth);\n return depth;\n };\n\n const items: TimelineSpan[] = spans\n .map((span, index) => {\n const parsed = new Date(span.startedAt).getTime();\n const start = Number.isNaN(parsed) ? index * 10 : parsed;\n const end = start + Math.max(span.durationMs, 1);\n return { span, start, end, depth: depthFor(span) };\n })\n .sort((a, b) => a.start - b.start);\n\n const min = Math.min(...items.map((item) => item.start));\n const max = Math.max(...items.map((item) => item.end));\n return { items, min, total: Math.max(max - min, 1) };\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Button, Drawer, EmptyState, StatusDot, Surface, statusLabel } from \"@echothink-ui/core\";\nimport type { EthOperationalStatus, SurfaceComponentProps } from \"@echothink-ui/core\";\nimport { DataTable, type DataColumn } from \"@echothink-ui/data\";\nimport { SearchIcon } from \"@echothink-ui/icons\";\nimport type { AgentToolCall } from \"../types\";\nimport { EMPTY_MARK, formatDuration, formatTime, jsonPreview, prettyJson } from \"./utils\";\n\nexport interface AgentToolCallLogProps extends Omit<SurfaceComponentProps, \"children\" | \"onSelect\"> {\n calls: AgentToolCall[];\n onSelect?: (call: AgentToolCall) => void;\n}\n\ninterface ToolCallRow extends Record<string, unknown> {\n id: string;\n call: AgentToolCall;\n time: string;\n toolName: string;\n status: EthOperationalStatus;\n duration: string;\n argsPreview: string;\n argsTone: PreviewTone;\n resultPreview: string;\n resultTone: PreviewTone;\n}\n\ntype PreviewTone = \"default\" | \"empty\" | \"error\" | \"redacted\";\n\nexport function AgentToolCallLog({\n calls,\n onSelect,\n title = \"Tool calls\",\n subtitle,\n className,\n ...props\n}: AgentToolCallLogProps) {\n const [selectedCall, setSelectedCall] = React.useState<AgentToolCall | undefined>();\n const rows = React.useMemo<ToolCallRow[]>(\n () =>\n calls.map((call) => {\n const argsPreview = jsonPreview(call.args, call.redacted);\n const resultPreview = call.error ?? jsonPreview(call.result, call.redacted);\n\n return {\n id: call.id,\n call,\n time: formatTime(call.startedAt),\n toolName: call.toolName,\n status: call.status,\n duration: formatDuration(call.durationMs),\n argsPreview,\n argsTone: previewTone(argsPreview, call.redacted),\n resultPreview,\n resultTone: call.error ? \"error\" : previewTone(resultPreview, call.redacted)\n };\n }),\n [calls]\n );\n\n const openCall = React.useCallback(\n (call: AgentToolCall) => {\n setSelectedCall(call);\n onSelect?.(call);\n },\n [onSelect]\n );\n\n const columns = React.useMemo<DataColumn<ToolCallRow>[]>(\n () => [\n {\n key: \"time\",\n header: \"Time\",\n width: \"7rem\",\n render: (row) => (\n <time className=\"eth-agent-tool-call-log__time\" dateTime={row.call.startedAt}>\n {row.time}\n </time>\n )\n },\n {\n key: \"toolName\",\n header: \"Tool\",\n width: \"13rem\",\n render: (row) => <code className=\"eth-agent-tool-call-log__tool\">{row.toolName}</code>\n },\n {\n key: \"status\",\n header: \"Status\",\n width: \"11rem\",\n render: (row) => <StatusDot status={row.status} label={statusLabel(row.status)} />\n },\n {\n key: \"duration\",\n header: \"Duration\",\n width: \"7rem\",\n align: \"end\",\n render: (row) => <PreviewText value={row.duration} tone={previewTone(row.duration)} />\n },\n {\n key: \"argsPreview\",\n header: \"Args\",\n render: (row) => <PreviewText value={row.argsPreview} tone={row.argsTone} />\n },\n {\n key: \"resultPreview\",\n header: \"Result\",\n render: (row) => <PreviewText value={row.resultPreview} tone={row.resultTone} />\n },\n {\n key: \"actions\",\n header: \"Actions\",\n width: \"7.5rem\",\n align: \"end\",\n render: (row) => (\n <Button\n aria-label={`Inspect ${row.toolName} tool call`}\n className=\"eth-agent-tool-call-log__inspect\"\n density=\"compact\"\n icon={<SearchIcon size={16} />}\n intent=\"ghost\"\n onClick={() => openCall(row.call)}\n >\n Inspect\n </Button>\n )\n }\n ],\n [openCall]\n );\n\n const defaultSubtitle = React.useMemo(() => summarizeCalls(calls), [calls]);\n\n return (\n <>\n <Surface\n {...props}\n className={clsx(\"eth-agent-tool-call-log\", className)}\n data-eth-component=\"AgentToolCallLog\"\n subtitle={subtitle ?? defaultSubtitle}\n title={title}\n >\n <DataTable\n rows={rows}\n columns={columns}\n rowKey=\"id\"\n density=\"compact\"\n className=\"eth-agent-tool-call-log__table\"\n emptyState={<EmptyState title=\"No tool calls\" />}\n />\n </Surface>\n <Drawer\n open={Boolean(selectedCall)}\n title={selectedCall?.toolName ?? \"Tool call\"}\n onClose={() => setSelectedCall(undefined)}\n >\n {selectedCall ? (\n <div className=\"eth-agent-tool-call-log__drawer\">\n <div className=\"eth-agent-tool-call-log__drawer-status\">\n <StatusDot status={selectedCall.status} label={statusLabel(selectedCall.status)} />\n {selectedCall.redacted ? (\n <span className=\"eth-agent-tool-call-log__redaction-note\">\n Redaction applied\n </span>\n ) : null}\n </div>\n <dl className=\"eth-agent-tool-call-log__meta\">\n <div>\n <dt>Started</dt>\n <dd>{formatTime(selectedCall.startedAt)}</dd>\n </div>\n <div>\n <dt>Duration</dt>\n <dd>{formatDuration(selectedCall.durationMs)}</dd>\n </div>\n <div>\n <dt>Tool</dt>\n <dd>\n <code>{selectedCall.toolName}</code>\n </dd>\n </div>\n <div>\n <dt>Redaction</dt>\n <dd>{selectedCall.redacted ? \"Applied\" : \"None\"}</dd>\n </div>\n </dl>\n {selectedCall.error ? (\n <section className=\"eth-agent-tool-call-log__error\">\n <h3>Error</h3>\n <pre tabIndex={0}>{selectedCall.error}</pre>\n </section>\n ) : null}\n <JsonBlock\n title=\"Arguments\"\n value={prettyJson(selectedCall.args, selectedCall.redacted)}\n />\n <JsonBlock\n title=\"Result\"\n value={prettyJson(selectedCall.result, selectedCall.redacted)}\n />\n </div>\n ) : null}\n </Drawer>\n </>\n );\n}\n\nfunction summarizeCalls(calls: AgentToolCall[]) {\n if (!calls.length) return undefined;\n const active = calls.filter((call) =>\n [\"queued\", \"running\", \"in-progress\", \"pending-approval\", \"approval-required\"].includes(\n call.status\n )\n ).length;\n const redacted = calls.filter((call) => call.redacted).length;\n return [\n `${calls.length} call${calls.length === 1 ? \"\" : \"s\"}`,\n active ? `${active} active` : null,\n redacted ? `${redacted} redacted` : null\n ]\n .filter(Boolean)\n .join(\" | \");\n}\n\nfunction previewTone(value: string, redacted = false): PreviewTone {\n if (redacted && value === \"[redacted]\") return \"redacted\";\n if (value === EMPTY_MARK) return \"empty\";\n return \"default\";\n}\n\nfunction PreviewText({ value, tone = \"default\" }: { value: string; tone?: PreviewTone }) {\n if (tone === \"redacted\") {\n return (\n <span className=\"eth-agent-tool-call-log__preview eth-agent-tool-call-log__preview--redacted\">\n Redacted\n </span>\n );\n }\n\n return (\n <span\n className={clsx(\n \"eth-agent-tool-call-log__preview\",\n tone !== \"default\" && `eth-agent-tool-call-log__preview--${tone}`\n )}\n title={value === EMPTY_MARK ? undefined : value}\n >\n {value}\n </span>\n );\n}\n\nfunction JsonBlock({ title, value }: { title: string; value: string }) {\n const headingId = React.useId();\n\n return (\n <section className=\"eth-agent-tool-call-log__json\" aria-labelledby={headingId}>\n <h3 id={headingId}>{title}</h3>\n <pre tabIndex={0}>{value}</pre>\n </section>\n );\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Button, InlineNotification, Surface, Textarea } from \"@echothink-ui/core\";\nimport { ExternalLinkIcon } from \"@echothink-ui/icons\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport type { AgentApprovalAction, AgentCitation } from \"../types\";\nimport { riskSeverity } from \"./utils\";\n\nexport interface AgentApprovalGateProps extends Omit<SurfaceComponentProps, \"children\"> {\n action: AgentApprovalAction;\n evidence?: AgentCitation[];\n onApprove?: (reason?: string) => void;\n onReject?: (reason?: string) => void;\n state?: \"idle\" | \"pending\" | \"approved\" | \"rejected\";\n}\n\nexport function AgentApprovalGate({\n action,\n evidence = [],\n onApprove,\n onReject,\n state = \"idle\",\n title = \"Approval required\",\n className,\n ...props\n}: AgentApprovalGateProps) {\n const [reason, setReason] = React.useState(\"\");\n const severity = riskSeverity(action.riskLevel);\n const locked = state === \"pending\" || state === \"approved\" || state === \"rejected\";\n const stateLabel = approvalStateLabel(state);\n\n return (\n <Surface\n {...props}\n className={clsx(\"eth-agent-approval-gate\", `eth-agent-approval-gate--${state}`, className)}\n data-eth-component=\"AgentApprovalGate\"\n severity={severity}\n status={approvalStatus(state)}\n title={title}\n subtitle={action.label}\n >\n <div className=\"eth-agent-approval-gate__layout\">\n <InlineNotification\n severity={severity}\n title={`${riskLabel(action.riskLevel)} risk action`}\n >\n {action.description}\n </InlineNotification>\n\n <dl className=\"eth-agent-approval-gate__summary\" aria-label=\"Approval action details\">\n <div>\n <dt>Action</dt>\n <dd>{action.id}</dd>\n </div>\n <div>\n <dt>Risk</dt>\n <dd>{riskLabel(action.riskLevel)}</dd>\n </div>\n <div>\n <dt>Status</dt>\n <dd>{stateLabel}</dd>\n </div>\n </dl>\n\n {evidence.length ? (\n <section className=\"eth-agent-approval-gate__evidence\">\n <div className=\"eth-agent-approval-gate__section-header\">\n <h3>Evidence</h3>\n <span>\n {evidence.length} reference{evidence.length === 1 ? \"\" : \"s\"}\n </span>\n </div>\n <div className=\"eth-agent-approval-gate__evidence-list\">\n {evidence.map((item) => (\n <EvidenceItem key={item.id} item={item} />\n ))}\n </div>\n </section>\n ) : null}\n\n <Textarea\n className=\"eth-agent-approval-gate__reason\"\n aria-label=\"Approval reason\"\n disabled={locked}\n labelText=\"Approval rationale\"\n placeholder=\"Optional reason\"\n rows={2}\n value={reason}\n onChange={(event) => setReason(event.currentTarget.value)}\n />\n\n <div className=\"eth-agent-approval-gate__actions\">\n <Button\n density=\"default\"\n intent=\"success\"\n loading={state === \"pending\"}\n disabled={locked}\n onClick={() => onApprove?.(reason || undefined)}\n >\n {state === \"approved\" ? \"Approved\" : \"Approve\"}\n </Button>\n <Button\n density=\"default\"\n intent=\"danger\"\n disabled={locked}\n onClick={() => onReject?.(reason || undefined)}\n >\n {state === \"rejected\" ? \"Rejected\" : \"Reject\"}\n </Button>\n </div>\n </div>\n </Surface>\n );\n}\n\nfunction EvidenceItem({ item }: { item: AgentCitation }) {\n const content = (\n <>\n <span className=\"eth-agent-approval-gate__evidence-copy\">\n <span className=\"eth-agent-approval-gate__evidence-label\">{item.label}</span>\n {item.description ? (\n <span className=\"eth-agent-approval-gate__evidence-description\">{item.description}</span>\n ) : null}\n </span>\n {item.meta ? (\n <span className=\"eth-agent-approval-gate__evidence-meta\">{item.meta}</span>\n ) : null}\n {item.href ? (\n <ExternalLinkIcon className=\"eth-agent-approval-gate__evidence-icon\" size={16} />\n ) : null}\n </>\n );\n\n if (item.href) {\n return (\n <a\n className=\"eth-agent-approval-gate__evidence-item eth-agent-approval-gate__evidence-item--link\"\n href={item.href}\n >\n {content}\n </a>\n );\n }\n\n return <div className=\"eth-agent-approval-gate__evidence-item\">{content}</div>;\n}\n\nfunction riskLabel(riskLevel: AgentApprovalAction[\"riskLevel\"]) {\n if (!riskLevel) return \"Low\";\n return riskLevel.charAt(0).toUpperCase() + riskLevel.slice(1);\n}\n\nfunction approvalStateLabel(state: AgentApprovalGateProps[\"state\"]) {\n if (state === \"pending\") return \"Submitting\";\n if (state === \"approved\") return \"Approved\";\n if (state === \"rejected\") return \"Rejected\";\n return \"Awaiting decision\";\n}\n\nfunction approvalStatus(state: AgentApprovalGateProps[\"state\"]) {\n if (state === \"pending\") return \"running\";\n if (state === \"approved\") return \"completed\";\n if (state === \"rejected\") return \"blocked\";\n return \"approval-required\";\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Badge, Surface } from \"@echothink-ui/core\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport type { AgentPlan } from \"../types\";\n\nexport interface AgentPlanPreviewProps extends Omit<SurfaceComponentProps, \"children\"> {\n plan: AgentPlan;\n}\n\nexport function AgentPlanPreview({ plan, title, className, ...props }: AgentPlanPreviewProps) {\n return (\n <Surface\n {...props}\n className={clsx(\"eth-agent-plan-preview\", className)}\n data-eth-component=\"AgentPlanPreview\"\n title={title ?? \"Proposed plan\"}\n subtitle=\"Plan before execution\"\n >\n <div className=\"eth-agent-plan-preview__body\">\n <div className=\"eth-agent-plan-preview__summary\" aria-label=\"Plan summary\">\n <div>\n <p className=\"eth-agent-plan-preview__summary-label\">Execution plan</p>\n <p className=\"eth-agent-plan-preview__summary-title\">{plan.title}</p>\n </div>\n <span className=\"eth-agent-plan-preview__summary-count\">\n {plan.steps.length} {plan.steps.length === 1 ? \"step\" : \"steps\"}\n </span>\n </div>\n\n {plan.steps.length ? (\n <ol className=\"eth-agent-plan-preview__steps\" aria-label=\"Proposed execution steps\">\n {plan.steps.map((step, index) => (\n <li\n key={step.id}\n className={clsx(\n \"eth-agent-plan-preview__step\",\n step.risks?.length && \"eth-agent-plan-preview__step--risk\"\n )}\n >\n <article className=\"eth-agent-plan-preview__step-card\">\n <span className=\"eth-agent-plan-preview__step-index\" aria-hidden=\"true\">\n {String(index + 1).padStart(2, \"0\")}\n </span>\n <div className=\"eth-agent-plan-preview__step-main\">\n <p className=\"eth-agent-plan-preview__step-description\">{step.description}</p>\n {step.durationEstimate || step.risks?.length ? (\n <div className=\"eth-agent-plan-preview__step-meta\" aria-label=\"Step metadata\">\n {step.durationEstimate ? <Badge>{step.durationEstimate}</Badge> : null}\n {step.risks?.map((risk) => (\n <Badge key={risk} severity=\"warning\">\n {risk}\n </Badge>\n ))}\n </div>\n ) : null}\n </div>\n </article>\n </li>\n ))}\n </ol>\n ) : (\n <p className=\"eth-agent-plan-preview__empty\">No execution steps have been proposed.</p>\n )}\n\n {plan.assumptions?.length || plan.risks?.length ? (\n <div className=\"eth-agent-plan-preview__supporting\">\n {plan.assumptions?.length ? (\n <TextList title=\"Assumptions\" items={plan.assumptions} />\n ) : null}\n {plan.risks?.length ? <TextList title=\"Risks\" items={plan.risks} tone=\"risk\" /> : null}\n </div>\n ) : null}\n </div>\n </Surface>\n );\n}\n\nfunction TextList({\n title,\n items,\n tone = \"neutral\"\n}: {\n title: string;\n items: string[];\n tone?: \"neutral\" | \"risk\";\n}) {\n return (\n <section\n className={clsx(\n \"eth-agent-plan-preview__note-section\",\n `eth-agent-plan-preview__note-section--${tone}`\n )}\n >\n <h3 className=\"eth-agent-plan-preview__note-title\">{title}</h3>\n <ul className=\"eth-agent-plan-preview__note-list\">\n {items.map((item) => (\n <li key={item}>\n <span className=\"eth-agent-plan-preview__note-marker\" aria-hidden=\"true\" />\n <span>{item}</span>\n </li>\n ))}\n </ul>\n </section>\n );\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Badge, Surface } from \"@echothink-ui/core\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport type { AgentPlanStep } from \"../types\";\nimport { diffPlanSteps } from \"./utils\";\n\nexport interface AgentPlanDiffProps extends Omit<SurfaceComponentProps, \"children\"> {\n before: AgentPlanStep[];\n after: AgentPlanStep[];\n}\n\nexport function AgentPlanDiff({\n before,\n after,\n title = \"Plan diff\",\n subtitle = \"Compare proposed plan changes before execution\",\n className,\n ...props\n}: AgentPlanDiffProps) {\n const diff = React.useMemo(() => diffPlanSteps(before, after), [before, after]);\n const summary = React.useMemo(\n () => ({\n added: diff.filter((item) => item.status === \"added\").length,\n modified: diff.filter((item) => item.status === \"modified\").length,\n removed: diff.filter((item) => item.status === \"removed\").length,\n unchanged: diff.filter((item) => item.status === \"unchanged\").length\n }),\n [diff]\n );\n\n return (\n <Surface\n {...props}\n className={clsx(\"eth-agent-plan-diff\", className)}\n data-eth-component=\"AgentPlanDiff\"\n subtitle={subtitle}\n title={title}\n >\n <div className=\"eth-agent-plan-diff__body\">\n <dl className=\"eth-agent-plan-diff__summary\" aria-label=\"Plan diff summary\">\n <SummaryItem label=\"Added\" value={summary.added} tone=\"added\" />\n <SummaryItem label=\"Modified\" value={summary.modified} tone=\"modified\" />\n <SummaryItem label=\"Removed\" value={summary.removed} tone=\"removed\" />\n <SummaryItem label=\"Unchanged\" value={summary.unchanged} tone=\"unchanged\" />\n </dl>\n\n {diff.length ? (\n <ol className=\"eth-agent-plan-diff__list\" aria-label=\"Plan step changes\">\n {diff.map((item) => {\n const stepId = item.after?.id ?? item.before?.id ?? item.id;\n return (\n <li key={item.id} className=\"eth-agent-plan-diff__entry\">\n <article\n className={clsx(\n \"eth-agent-plan-diff__item\",\n `eth-agent-plan-diff__item--${item.status}`\n )}\n >\n <header className=\"eth-agent-plan-diff__item-header\">\n <div className=\"eth-agent-plan-diff__item-heading\">\n <span className=\"eth-agent-plan-diff__step-id\">Step {stepId}</span>\n <Badge severity={item.severity}>{statusLabelFor(item.status)}</Badge>\n </div>\n </header>\n {item.status === \"modified\" ? (\n <div className=\"eth-agent-plan-diff__comparison\">\n <StepSnapshot label=\"Before\" step={item.before} />\n <StepSnapshot label=\"After\" step={item.after} />\n </div>\n ) : (\n <StepSnapshot\n label={snapshotLabelFor(item.status)}\n step={item.after ?? item.before}\n />\n )}\n </article>\n </li>\n );\n })}\n </ol>\n ) : (\n <p className=\"eth-agent-plan-diff__empty\">No plan steps to compare.</p>\n )}\n </div>\n </Surface>\n );\n}\n\nfunction StepSnapshot({ label, step }: { label: string; step?: AgentPlanStep }) {\n if (!step) return null;\n return (\n <section className=\"eth-agent-plan-diff__snapshot\">\n <h3 className=\"eth-agent-plan-diff__snapshot-label\">{label}</h3>\n <p className=\"eth-agent-plan-diff__snapshot-description\">{step.description}</p>\n {step.durationEstimate || step.risks?.length ? (\n <div className=\"eth-agent-plan-diff__snapshot-meta\" aria-label={`${label} metadata`}>\n {step.durationEstimate ? <Badge>{step.durationEstimate}</Badge> : null}\n {step.risks?.map((risk) => (\n <Badge key={risk} severity=\"warning\">\n {risk}\n </Badge>\n ))}\n </div>\n ) : null}\n </section>\n );\n}\n\nfunction SummaryItem({\n label,\n value,\n tone\n}: {\n label: string;\n value: number;\n tone: \"added\" | \"removed\" | \"modified\" | \"unchanged\";\n}) {\n return (\n <div\n className={clsx(\n \"eth-agent-plan-diff__summary-item\",\n `eth-agent-plan-diff__summary-item--${tone}`\n )}\n >\n <dt>{label}</dt>\n <dd>{value}</dd>\n </div>\n );\n}\n\nfunction statusLabelFor(status: \"added\" | \"removed\" | \"modified\" | \"unchanged\") {\n switch (status) {\n case \"added\":\n return \"Added\";\n case \"removed\":\n return \"Removed\";\n case \"modified\":\n return \"Modified\";\n case \"unchanged\":\n return \"Unchanged\";\n }\n}\n\nfunction snapshotLabelFor(status: \"added\" | \"removed\" | \"modified\" | \"unchanged\") {\n if (status === \"added\") return \"Added step\";\n if (status === \"removed\") return \"Removed step\";\n return \"Step\";\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Badge, Button, EmptyState, Surface } from \"@echothink-ui/core\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport type { AgentMemoryEntry } from \"../types\";\nimport { formatDateTime } from \"./utils\";\n\nexport interface AgentMemoryPanelProps extends Omit<SurfaceComponentProps, \"children\"> {\n entries: AgentMemoryEntry[];\n onPin?: (id: string) => void;\n onEdit?: (id: string) => void;\n onDelete?: (id: string) => void;\n}\n\nconst kinds: AgentMemoryEntry[\"kind\"][] = [\"user\", \"project\", \"feedback\", \"reference\"];\n\nexport function AgentMemoryPanel({\n entries,\n onPin,\n onEdit,\n onDelete,\n title = \"Agent memory\",\n subtitle = \"Stored instructions and retrieved context available to the agent\",\n className,\n ...props\n}: AgentMemoryPanelProps) {\n const headingPrefix = React.useId();\n const groups = React.useMemo(\n () =>\n kinds\n .map((kind) => ({ kind, entries: entries.filter((entry) => entry.kind === kind) }))\n .filter((group) => group.entries.length),\n [entries]\n );\n const pinnedCount = React.useMemo(\n () => entries.filter((entry) => entry.pinned).length,\n [entries]\n );\n const latestUpdatedAt = React.useMemo(() => {\n const sortedEntries = entries\n .filter((entry): entry is AgentMemoryEntry & { lastUpdatedAt: string } =>\n Boolean(entry.lastUpdatedAt && !Number.isNaN(new Date(entry.lastUpdatedAt).getTime()))\n )\n .sort((a, b) => new Date(b.lastUpdatedAt).getTime() - new Date(a.lastUpdatedAt).getTime());\n\n return sortedEntries[0]?.lastUpdatedAt;\n }, [entries]);\n\n return (\n <Surface\n {...props}\n className={clsx(\"eth-agent-memory-panel\", className)}\n data-eth-component=\"AgentMemoryPanel\"\n subtitle={subtitle}\n title={title}\n >\n {!groups.length ? (\n <EmptyState title=\"No memory entries\" />\n ) : (\n <div className=\"eth-agent-memory-panel__body\">\n <dl className=\"eth-agent-memory-panel__summary\" aria-label=\"Memory summary\">\n <div className=\"eth-agent-memory-panel__summary-item\">\n <dt>Total entries</dt>\n <dd>{entries.length}</dd>\n </div>\n <div className=\"eth-agent-memory-panel__summary-item\">\n <dt>Pinned</dt>\n <dd>{pinnedCount}</dd>\n </div>\n <div className=\"eth-agent-memory-panel__summary-item\">\n <dt>Latest update</dt>\n <dd>\n {latestUpdatedAt ? (\n <time dateTime={latestUpdatedAt}>{formatDateTime(latestUpdatedAt)}</time>\n ) : (\n \"Not recorded\"\n )}\n </dd>\n </div>\n </dl>\n {groups.map((group) => (\n <section\n key={group.kind}\n className=\"eth-agent-memory-panel__group\"\n aria-labelledby={`${headingPrefix}-${group.kind}`}\n >\n <header className=\"eth-agent-memory-panel__group-header\">\n <h3 id={`${headingPrefix}-${group.kind}`}>{kindTitle(group.kind)}</h3>\n <Badge severity=\"neutral\">\n {group.entries.length} {group.entries.length === 1 ? \"entry\" : \"entries\"}\n </Badge>\n </header>\n <div className=\"eth-agent-memory-panel__entries\">\n {group.entries.map((entry) => (\n <article\n key={entry.id}\n className={clsx(\n \"eth-agent-memory-panel__entry\",\n entry.pinned && \"eth-agent-memory-panel__entry--pinned\"\n )}\n >\n <header className=\"eth-agent-memory-panel__entry-header\">\n <span className=\"eth-agent-memory-panel__entry-title\">\n <strong>{entry.key}</strong>\n {entry.pinned ? <Badge severity=\"info\">Pinned</Badge> : null}\n </span>\n {entry.lastUpdatedAt ? (\n <time\n className=\"eth-agent-memory-panel__updated-at\"\n dateTime={entry.lastUpdatedAt}\n >\n {formatDateTime(entry.lastUpdatedAt)}\n </time>\n ) : null}\n </header>\n <div className=\"eth-agent-memory-panel__value\">{entry.value}</div>\n {onPin || onEdit || onDelete ? (\n <div\n className=\"eth-agent-memory-panel__actions\"\n aria-label={`${entry.key} memory actions`}\n >\n {onPin ? (\n <Button\n aria-label={`${entry.pinned ? \"Unpin\" : \"Pin\"} ${entry.key}`}\n density=\"compact\"\n intent=\"secondary\"\n onClick={() => onPin(entry.id)}\n >\n {entry.pinned ? \"Unpin\" : \"Pin\"}\n </Button>\n ) : null}\n {onEdit ? (\n <Button\n aria-label={`Edit ${entry.key}`}\n density=\"compact\"\n intent=\"secondary\"\n onClick={() => onEdit(entry.id)}\n >\n Edit\n </Button>\n ) : null}\n {onDelete ? (\n <Button\n aria-label={`Delete ${entry.key}`}\n density=\"compact\"\n intent=\"danger\"\n onClick={() => onDelete(entry.id)}\n >\n Delete\n </Button>\n ) : null}\n </div>\n ) : null}\n </article>\n ))}\n </div>\n </section>\n ))}\n </div>\n )}\n </Surface>\n );\n}\n\nfunction kindTitle(kind: AgentMemoryEntry[\"kind\"]) {\n return kind.charAt(0).toUpperCase() + kind.slice(1);\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Badge, EmptyState, Surface } from \"@echothink-ui/core\";\nimport {\n AgentRunningIcon,\n ChevronRightIcon,\n DocumentIcon,\n ExternalLinkIcon,\n MessageIcon,\n SearchIcon,\n type EthIconProps\n} from \"@echothink-ui/icons\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport type { AgentContextSource } from \"../types\";\n\nexport interface AgentContextViewerProps extends Omit<\n SurfaceComponentProps,\n \"children\" | \"onSelect\"\n> {\n sources: AgentContextSource[];\n onSelect?: (source: AgentContextSource) => void;\n}\n\nexport function AgentContextViewer({\n sources,\n onSelect,\n title = \"Context sources\",\n className,\n ...props\n}: AgentContextViewerProps) {\n const sourceListLabel = typeof title === \"string\" ? title : \"Context sources\";\n const sortedSources = React.useMemo(\n () => [...sources].sort((a, b) => (b.relevance ?? -1) - (a.relevance ?? -1)),\n [sources]\n );\n\n return (\n <Surface\n {...props}\n className={clsx(\"eth-agent-context-viewer\", className)}\n data-eth-component=\"AgentContextViewer\"\n title={title}\n >\n {!sortedSources.length ? (\n <EmptyState title=\"No context sources\" />\n ) : (\n <ul className=\"eth-agent-context-viewer__sources\" aria-label={sourceListLabel}>\n {sortedSources.map((source) => {\n const SourceIcon = sourceIcon(source.type);\n const relevance = source.relevance == null ? null : formatRelevance(source.relevance);\n const relevanceValue =\n source.relevance == null ? null : normalizedRelevance(source.relevance);\n const isInteractive = Boolean(source.href || onSelect);\n\n const content = (\n <>\n <span className=\"eth-agent-context-viewer__kind-icon\" aria-hidden=\"true\">\n <SourceIcon size={18} />\n </span>\n <span className=\"eth-agent-context-viewer__main\">\n <span className=\"eth-agent-context-viewer__topline\">\n <strong className=\"eth-agent-context-viewer__label\">{source.label}</strong>\n <Badge severity=\"neutral\">{typeLabel(source.type)}</Badge>\n </span>\n {source.excerpt ? (\n <span className=\"eth-agent-context-viewer__excerpt\">{source.excerpt}</span>\n ) : null}\n </span>\n <span className=\"eth-agent-context-viewer__aside\">\n {relevance != null && relevanceValue != null ? (\n <span\n className=\"eth-agent-context-viewer__relevance\"\n aria-label={`Relevance ${relevance}`}\n >\n <span className=\"eth-agent-context-viewer__relevance-value\">\n Relevance {relevance}\n </span>\n <span\n className=\"eth-agent-context-viewer__relevance-meter\"\n aria-hidden=\"true\"\n >\n <span style={{ inlineSize: `${relevanceValue}%` }} />\n </span>\n </span>\n ) : (\n <span className=\"eth-agent-context-viewer__unranked\">Unranked</span>\n )}\n {source.href ? (\n <ExternalLinkIcon className=\"eth-agent-context-viewer__indicator\" size={16} />\n ) : isInteractive ? (\n <ChevronRightIcon className=\"eth-agent-context-viewer__indicator\" size={16} />\n ) : null}\n </span>\n </>\n );\n\n return (\n <li key={source.id}>\n {source.href ? (\n <a\n className={clsx(\n \"eth-agent-context-viewer__source\",\n \"eth-agent-context-viewer__source--interactive\"\n )}\n href={source.href}\n onClick={() => onSelect?.(source)}\n >\n {content}\n </a>\n ) : onSelect ? (\n <button\n type=\"button\"\n className={clsx(\n \"eth-agent-context-viewer__source\",\n \"eth-agent-context-viewer__source--interactive\"\n )}\n onClick={() => onSelect(source)}\n >\n {content}\n </button>\n ) : (\n <article className=\"eth-agent-context-viewer__source\">{content}</article>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </Surface>\n );\n}\n\nfunction sourceIcon(type: AgentContextSource[\"type\"]): React.ComponentType<EthIconProps> {\n switch (type) {\n case \"document\":\n return DocumentIcon;\n case \"query\":\n return SearchIcon;\n case \"tool-result\":\n return AgentRunningIcon;\n case \"message\":\n default:\n return MessageIcon;\n }\n}\n\nfunction typeLabel(type: AgentContextSource[\"type\"]) {\n return type\n .split(\"-\")\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction formatRelevance(relevance: number) {\n return `${normalizedRelevance(relevance)}%`;\n}\n\nfunction normalizedRelevance(relevance: number) {\n const normalized = relevance <= 1 ? relevance * 100 : relevance;\n return Math.min(100, Math.max(0, Math.round(normalized)));\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Badge, Button, InlineNotification, Textarea } from \"@echothink-ui/core\";\nimport type { EthIntent, EthSeverity } from \"@echothink-ui/core\";\nimport { InterruptIcon, PauseIcon, PlayIcon, RetryIcon, StopIcon } from \"@echothink-ui/icons\";\n\nexport interface AgentRunControlsProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"children\" | \"onChange\"> {\n state: \"running\" | \"paused\" | \"stopped\" | \"failed\" | \"completed\";\n onPause?: () => void;\n onResume?: () => void;\n onStop?: () => void;\n onRetry?: () => void;\n onInterrupt?: (reason: string) => void;\n}\n\ntype AgentRunState = AgentRunControlsProps[\"state\"];\n\ninterface AgentRunStateMeta {\n label: string;\n severity: EthSeverity;\n description: string;\n}\n\ninterface AgentRunControlAction {\n id: string;\n label: string;\n intent: EthIntent;\n disabled: boolean;\n icon: React.ReactNode;\n onSelect?: () => void;\n}\n\nconst stateMeta: Record<AgentRunState, AgentRunStateMeta> = {\n running: {\n label: \"Running\",\n severity: \"info\",\n description:\n \"The agent is actively executing; pause for review, interrupt with steering, or stop the run.\"\n },\n paused: {\n label: \"Paused\",\n severity: \"warning\",\n description:\n \"Execution is held. Resume when the run can continue or stop it to cancel remaining work.\"\n },\n stopped: {\n label: \"Stopped\",\n severity: \"neutral\",\n description: \"The run was stopped before completion. Retry to start a fresh attempt.\"\n },\n failed: {\n label: \"Failed\",\n severity: \"danger\",\n description: \"The last run failed. Retry after reviewing the failure context.\"\n },\n completed: {\n label: \"Completed\",\n severity: \"success\",\n description: \"The run completed. Retry only when a new pass is required.\"\n }\n};\n\nexport function AgentRunControls({\n state,\n onPause,\n onResume,\n onStop,\n onRetry,\n onInterrupt,\n className,\n style,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedBy,\n ...props\n}: AgentRunControlsProps) {\n const [interrupting, setInterrupting] = React.useState(false);\n const [reason, setReason] = React.useState(\"\");\n const descriptionId = React.useId();\n const meta = stateMeta[state];\n const canInterrupt = Boolean((state === \"running\" || state === \"paused\") && onInterrupt);\n\n React.useEffect(() => {\n if (!canInterrupt && interrupting) {\n setInterrupting(false);\n setReason(\"\");\n }\n }, [canInterrupt, interrupting]);\n\n const actions = React.useMemo<AgentRunControlAction[]>(() => {\n const next: AgentRunControlAction[] = [];\n if (state === \"running\") {\n next.push({\n id: \"pause\",\n label: \"Pause\",\n intent: \"secondary\",\n disabled: !onPause,\n icon: <PauseIcon size={16} />,\n onSelect: onPause\n });\n }\n if (state === \"paused\") {\n next.push({\n id: \"resume\",\n label: \"Resume\",\n intent: \"primary\",\n disabled: !onResume,\n icon: <PlayIcon size={16} />,\n onSelect: onResume\n });\n }\n if ((state === \"running\" || state === \"paused\") && onInterrupt) {\n next.push({\n id: \"interrupt\",\n label: \"Interrupt\",\n intent: \"tertiary\",\n disabled: false,\n icon: <InterruptIcon size={16} />,\n onSelect: () => setInterrupting(true)\n });\n }\n if (state === \"running\" || state === \"paused\") {\n next.push({\n id: \"stop\",\n label: \"Stop\",\n intent: \"danger\",\n disabled: !onStop,\n icon: <StopIcon size={16} />,\n onSelect: onStop\n });\n }\n if (state === \"failed\" || state === \"stopped\" || state === \"completed\") {\n next.push({\n id: \"retry\",\n label: \"Retry\",\n intent: state === \"completed\" ? \"secondary\" : \"primary\",\n disabled: !onRetry,\n icon: <RetryIcon size={16} />,\n onSelect: onRetry\n });\n }\n return next;\n }, [onInterrupt, onPause, onResume, onRetry, onStop, state]);\n\n const describedBy = ariaDescribedBy ? `${ariaDescribedBy} ${descriptionId}` : descriptionId;\n\n const sendInterrupt = () => {\n const trimmedReason = reason.trim();\n if (!trimmedReason) return;\n onInterrupt?.(trimmedReason);\n setReason(\"\");\n setInterrupting(false);\n };\n\n return (\n <section\n {...props}\n aria-label={ariaLabel ?? `${meta.label} agent run controls`}\n aria-describedby={describedBy}\n className={clsx(\"eth-agent-run-controls\", className)}\n data-eth-component=\"AgentRunControls\"\n data-state={state}\n style={style}\n >\n <div className=\"eth-agent-run-controls__summary\">\n <div className=\"eth-agent-run-controls__heading\">\n <span className=\"eth-agent-run-controls__state-dot\" aria-hidden=\"true\" />\n <span className=\"eth-agent-run-controls__title\">Agent run</span>\n <Badge severity={meta.severity}>{meta.label}</Badge>\n </div>\n <p id={descriptionId} className=\"eth-agent-run-controls__description\">\n {meta.description}\n </p>\n </div>\n <div\n className=\"eth-agent-run-controls__actions\"\n role=\"group\"\n aria-label={`${meta.label} run controls`}\n >\n {actions.map((action) => (\n <Button\n key={action.id}\n density=\"compact\"\n intent={action.intent}\n disabled={action.disabled}\n icon={action.icon}\n onClick={action.onSelect}\n >\n {action.label}\n </Button>\n ))}\n </div>\n {interrupting ? (\n <div className=\"eth-agent-run-controls__interrupt\">\n <InlineNotification severity=\"warning\" title=\"Interrupt run\">\n Send steering instructions before the agent continues.\n </InlineNotification>\n <Textarea\n aria-label=\"Interrupt reason\"\n rows={3}\n value={reason}\n onChange={(event) => setReason(event.currentTarget.value)}\n />\n <div className=\"eth-agent-run-controls__interrupt-actions\">\n <Button\n density=\"compact\"\n intent=\"primary\"\n disabled={!reason.trim()}\n onClick={sendInterrupt}\n >\n Send interrupt\n </Button>\n <Button density=\"compact\" intent=\"ghost\" onClick={() => setInterrupting(false)}>\n Cancel\n </Button>\n </div>\n </div>\n ) : null}\n </section>\n );\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Badge, EmptyState, Surface } from \"@echothink-ui/core\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport type { AgentSafetyCheck } from \"../types\";\nimport { safetySeverity } from \"./utils\";\n\nexport interface AgentSafetyPanelProps extends Omit<SurfaceComponentProps, \"children\"> {\n checks: AgentSafetyCheck[];\n}\n\nexport function AgentSafetyPanel({\n checks,\n title = \"Safety checks\",\n subtitle,\n className,\n ...props\n}: AgentSafetyPanelProps) {\n const summary = summarizeChecks(checks);\n\n return (\n <Surface\n {...props}\n className={clsx(\"eth-agent-safety-panel\", className)}\n data-eth-component=\"AgentSafetyPanel\"\n subtitle={subtitle ?? summaryLabel(summary)}\n title={title}\n >\n {!checks.length ? (\n <EmptyState title=\"No safety checks\" description=\"No policy gates are attached to this run.\" />\n ) : (\n <div className=\"eth-agent-safety-panel__body\">\n <dl className=\"eth-agent-safety-panel__summary\" aria-label=\"Safety check summary\">\n <div className=\"eth-agent-safety-panel__summary-item\">\n <dt>Total</dt>\n <dd>{summary.total}</dd>\n </div>\n <div className=\"eth-agent-safety-panel__summary-item eth-agent-safety-panel__summary-item--pass\">\n <dt>Passed</dt>\n <dd>{summary.pass}</dd>\n </div>\n <div className=\"eth-agent-safety-panel__summary-item eth-agent-safety-panel__summary-item--warn\">\n <dt>Review</dt>\n <dd>{summary.warn}</dd>\n </div>\n <div className=\"eth-agent-safety-panel__summary-item eth-agent-safety-panel__summary-item--fail\">\n <dt>Blocked</dt>\n <dd>{summary.fail}</dd>\n </div>\n </dl>\n\n <div className=\"eth-agent-safety-panel__list\" role=\"list\">\n {checks.map((check) => (\n <article\n key={check.id}\n className={clsx(\n \"eth-agent-safety-panel__check\",\n `eth-agent-safety-panel__check--${check.status}`\n )}\n role=\"listitem\"\n >\n <span className=\"eth-agent-safety-panel__indicator\" aria-hidden=\"true\" />\n <div className=\"eth-agent-safety-panel__check-content\">\n <div className=\"eth-agent-safety-panel__check-main\">\n <h3>{check.label}</h3>\n <Badge severity={safetySeverity(check)}>{statusLabel(check.status)}</Badge>\n </div>\n <p>{check.details ?? statusDescription(check.status)}</p>\n </div>\n </article>\n ))}\n </div>\n </div>\n )}\n </Surface>\n );\n}\n\nfunction summarizeChecks(checks: AgentSafetyCheck[]) {\n return checks.reduce(\n (summary, check) => {\n summary.total += 1;\n summary[check.status] += 1;\n return summary;\n },\n { fail: 0, pass: 0, total: 0, warn: 0 }\n );\n}\n\nfunction summaryLabel(summary: ReturnType<typeof summarizeChecks>) {\n if (summary.total === 0) return \"No policy gates are active.\";\n if (summary.fail > 0) return `${summary.fail} blocking ${plural(\"issue\", summary.fail)} found.`;\n if (summary.warn > 0) {\n return summary.warn === 1 ? \"1 check needs review.\" : `${summary.warn} checks need review.`;\n }\n return \"All policy checks passed.\";\n}\n\nfunction statusLabel(status: AgentSafetyCheck[\"status\"]) {\n if (status === \"pass\") return \"Passed\";\n if (status === \"warn\") return \"Review needed\";\n return \"Blocked\";\n}\n\nfunction statusDescription(status: AgentSafetyCheck[\"status\"]) {\n if (status === \"pass\") return \"No policy issue detected.\";\n if (status === \"warn\") return \"Review recommended before proceeding.\";\n return \"Policy gate blocked this action.\";\n}\n\nfunction plural(label: string, count: number) {\n return count === 1 ? label : `${label}s`;\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Button, InlineNotification, Surface, Textarea } from \"@echothink-ui/core\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport { InterruptIcon } from \"@echothink-ui/icons\";\n\nexport interface AgentInterruptionPanelProps\n extends Omit<SurfaceComponentProps, \"children\" | \"onChange\" | \"onSubmit\"> {\n prompt: string;\n onChange: (prompt: string) => void;\n onSubmit?: (prompt: string) => void;\n disabled?: boolean;\n promptLabel?: React.ReactNode;\n helperText?: React.ReactNode;\n placeholder?: string;\n submitLabel?: React.ReactNode;\n}\n\nconst defaultMetadata: NonNullable<SurfaceComponentProps[\"metadata\"]> = [\n { label: \"Mode\", value: \"Steering interrupt\" },\n { label: \"Delivery\", value: \"Before next agent step\" }\n];\n\nexport function AgentInterruptionPanel({\n prompt,\n onChange,\n onSubmit,\n disabled,\n title = \"Interrupt agent\",\n subtitle = \"Send operator guidance before the agent continues.\",\n metadata = defaultMetadata,\n promptLabel = \"Steering instruction\",\n helperText = \"Delivered before the next agent step.\",\n placeholder = \"Tell the agent what to change, stop, or prioritize.\",\n submitLabel = \"Send interruption\",\n className,\n ...props\n}: AgentInterruptionPanelProps) {\n const hasPrompt = Boolean(prompt.trim());\n const submit = () => {\n if (!disabled && hasPrompt) onSubmit?.(prompt);\n };\n\n return (\n <Surface\n {...props}\n className={clsx(\"eth-agent-interruption-panel\", className)}\n data-eth-component=\"AgentInterruptionPanel\"\n metadata={metadata}\n subtitle={subtitle}\n title={title}\n >\n <div className=\"eth-agent-interruption-panel__body\">\n <InlineNotification severity=\"warning\" title=\"Steering interrupt\">\n The agent will receive this instruction before continuing the current run.\n </InlineNotification>\n <Textarea\n className=\"eth-agent-interruption-panel__prompt\"\n disabled={disabled}\n helperText={helperText}\n labelText={promptLabel}\n placeholder={placeholder}\n rows={4}\n value={prompt}\n onChange={(event) => onChange(event.currentTarget.value)}\n onKeyDown={(event) => {\n if ((event.metaKey || event.ctrlKey) && event.key === \"Enter\") {\n event.preventDefault();\n submit();\n }\n }}\n />\n <div className=\"eth-agent-interruption-panel__actions\">\n <Button\n disabled={disabled || !hasPrompt}\n icon={<InterruptIcon size={16} />}\n onClick={submit}\n >\n {submitLabel}\n </Button>\n </div>\n </div>\n </Surface>\n );\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport {\n Badge,\n Button,\n EmptyState,\n FormField,\n StatusDot,\n Surface,\n Textarea\n} from \"@echothink-ui/core\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport type { AgentHandoffTarget } from \"../types\";\n\nexport interface AgentHandoffPanelProps\n extends Omit<SurfaceComponentProps, \"children\" | \"onChange\" | \"onSubmit\"> {\n itemRef?: string;\n agentRef?: string;\n assigneeOptions?: AgentHandoffTarget[];\n selectedAssigneeId?: string;\n reason?: string;\n reasonSchema?: { label?: string; placeholder?: string; required?: boolean };\n disabled?: boolean;\n onAssigneeChange?: (id: string) => void;\n onReasonChange?: (reason: string) => void;\n onSubmit?: (handoff: { assigneeId?: string; reason: string }) => void;\n}\n\nexport function AgentHandoffPanel({\n itemRef,\n agentRef,\n assigneeOptions = [],\n selectedAssigneeId,\n reason,\n reasonSchema,\n disabled,\n onAssigneeChange,\n onReasonChange,\n onSubmit,\n title = \"Agent handoff\",\n className,\n ...props\n}: AgentHandoffPanelProps) {\n const [internalAssigneeId, setInternalAssigneeId] = React.useState(selectedAssigneeId);\n const [internalReason, setInternalReason] = React.useState(reason ?? \"\");\n const assigneeId = selectedAssigneeId ?? internalAssigneeId;\n const handoffReason = reason ?? internalReason;\n const reasonRequired = reasonSchema?.required ?? true;\n const canSubmit = Boolean(assigneeId) && (!reasonRequired || Boolean(handoffReason.trim()));\n\n const selectAssignee = (id: string) => {\n setInternalAssigneeId(id);\n onAssigneeChange?.(id);\n };\n\n const changeReason = (value: string) => {\n setInternalReason(value);\n onReasonChange?.(value);\n };\n const reasonId = React.useId();\n\n return (\n <Surface\n {...props}\n className={clsx(\"eth-agent-handoff-panel\", className)}\n data-eth-component=\"AgentHandoffPanel\"\n title={title}\n subtitle={[agentRef, itemRef].filter(Boolean).join(\" · \") || undefined}\n >\n <div className=\"eth-agent-handoff-panel__body\">\n {!assigneeOptions.length ? (\n <EmptyState title=\"No handoff targets\" />\n ) : (\n <div\n className=\"eth-agent-handoff-panel__target-list\"\n role=\"listbox\"\n aria-label=\"Handoff targets\"\n >\n {assigneeOptions.map((target) => (\n <button\n key={target.id}\n type=\"button\"\n role=\"option\"\n aria-selected={assigneeId === target.id}\n className={clsx(\n \"eth-agent-handoff-panel__target\",\n assigneeId === target.id && \"eth-agent-handoff-panel__target--selected\"\n )}\n disabled={disabled}\n onClick={() => selectAssignee(target.id)}\n >\n <span className=\"eth-agent-handoff-panel__target-main\">\n <span className=\"eth-agent-handoff-panel__target-copy\">\n <strong className=\"eth-agent-handoff-panel__target-label\">\n {target.label}\n </strong>\n {target.description ? (\n <span className=\"eth-agent-handoff-panel__target-description\">\n {target.description}\n </span>\n ) : null}\n </span>\n <span className=\"eth-agent-handoff-panel__target-meta\">\n <Badge severity=\"neutral\">{target.type}</Badge>\n {target.status ? (\n <StatusDot\n status={target.status}\n label={formatHandoffStatus(target.status)}\n />\n ) : null}\n </span>\n </span>\n </button>\n ))}\n </div>\n )}\n\n <FormField\n id={reasonId}\n label={reasonSchema?.label ?? \"Handoff reason\"}\n required={reasonRequired}\n >\n <Textarea\n className=\"eth-agent-handoff-panel__reason\"\n disabled={disabled}\n placeholder={reasonSchema?.placeholder ?? \"Explain what the next owner should do.\"}\n required={reasonRequired}\n rows={3}\n value={handoffReason}\n onChange={(event) => changeReason(event.currentTarget.value)}\n />\n </FormField>\n\n <div className=\"eth-agent-handoff-panel__actions\">\n <Button\n disabled={disabled || !canSubmit}\n onClick={() => onSubmit?.({ assigneeId, reason: handoffReason })}\n >\n Handoff\n </Button>\n </div>\n </div>\n </Surface>\n );\n}\n\nfunction formatHandoffStatus(status: AgentHandoffTarget[\"status\"]) {\n return status\n ? status\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \")\n : undefined;\n}\n","import * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Drawer, EmptyState, LinkButton, Surface } from \"@echothink-ui/core\";\nimport type { SurfaceComponentProps } from \"@echothink-ui/core\";\nimport type { AgentGeneratedArtifact } from \"../types\";\nimport { formatDateTime } from \"./utils\";\n\nexport interface AgentGeneratedArtifactPanelProps extends Omit<\n SurfaceComponentProps,\n \"children\" | \"onSelect\"\n> {\n artifacts: AgentGeneratedArtifact[];\n onSelect?: (artifact: AgentGeneratedArtifact) => void;\n selectedId?: string;\n}\n\nexport function AgentGeneratedArtifactPanel({\n artifacts,\n onSelect,\n selectedId,\n density,\n title = \"Generated artifacts\",\n className,\n ...props\n}: AgentGeneratedArtifactPanelProps) {\n const [internalSelectedId, setInternalSelectedId] = React.useState<string | undefined>(\n selectedId ?? artifacts[0]?.id\n );\n const [previewOpen, setPreviewOpen] = React.useState(false);\n const selectedArtifact =\n artifacts.find((artifact) => artifact.id === (selectedId ?? internalSelectedId)) ??\n artifacts[0];\n const compact = density === \"compact\";\n\n const selectArtifact = (artifact: AgentGeneratedArtifact) => {\n setInternalSelectedId(artifact.id);\n setPreviewOpen(true);\n onSelect?.(artifact);\n };\n\n return (\n <>\n <Surface\n {...props}\n density={density}\n className={clsx(\"eth-agent-generated-artifact-panel\", className)}\n data-eth-component=\"AgentGeneratedArtifactPanel\"\n title={title}\n >\n {!artifacts.length ? (\n <EmptyState title=\"No artifacts generated\" />\n ) : (\n <div\n className=\"eth-agent-generated-artifact-panel__layout\"\n style={{\n gridTemplateColumns: compact ? \"1fr\" : \"minmax(220px, 320px) minmax(0, 1fr)\"\n }}\n >\n <ArtifactList\n artifacts={artifacts}\n selectedId={selectedArtifact?.id}\n onSelect={selectArtifact}\n />\n {!compact ? <ArtifactPreview artifact={selectedArtifact} /> : null}\n </div>\n )}\n </Surface>\n {compact ? (\n <Drawer\n open={previewOpen && Boolean(selectedArtifact)}\n title={selectedArtifact?.label ?? \"Artifact preview\"}\n onClose={() => setPreviewOpen(false)}\n >\n <ArtifactPreview artifact={selectedArtifact} />\n </Drawer>\n ) : null}\n </>\n );\n}\n\nfunction ArtifactList({\n artifacts,\n selectedId,\n onSelect\n}: {\n artifacts: AgentGeneratedArtifact[];\n selectedId?: string;\n onSelect: (artifact: AgentGeneratedArtifact) => void;\n}) {\n return (\n <div\n className=\"eth-agent-generated-artifact-panel__list\"\n role=\"group\"\n aria-label=\"Generated artifacts\"\n >\n {artifacts.map((artifact) => {\n const selected = selectedId === artifact.id;\n\n return (\n <button\n key={artifact.id}\n type=\"button\"\n aria-pressed={selected}\n className={clsx(\n \"eth-agent-generated-artifact-panel__item\",\n selected && \"eth-agent-generated-artifact-panel__item--selected\"\n )}\n onClick={() => onSelect(artifact)}\n >\n <span className=\"eth-agent-generated-artifact-panel__item-topline\">\n <span className=\"eth-agent-generated-artifact-panel__item-title\">\n {artifact.label}\n </span>\n <span className=\"eth-agent-generated-artifact-panel__kind\">\n {artifactKindLabel(artifact.kind)}\n </span>\n </span>\n <span className=\"eth-agent-generated-artifact-panel__item-meta\">\n {artifactMeta(artifact).join(\" · \")}\n </span>\n <span className=\"eth-agent-generated-artifact-panel__item-status\">\n {artifactPreviewStatus(artifact)}\n </span>\n </button>\n );\n })}\n </div>\n );\n}\n\nfunction ArtifactPreview({ artifact }: { artifact?: AgentGeneratedArtifact }) {\n const headingId = React.useId();\n if (!artifact) return <EmptyState title=\"Select an artifact\" />;\n\n return (\n <section className=\"eth-agent-generated-artifact-panel__preview\" aria-labelledby={headingId}>\n <header className=\"eth-agent-generated-artifact-panel__preview-header\">\n <div className=\"eth-agent-generated-artifact-panel__preview-heading\">\n <h3 id={headingId}>{artifact.label}</h3>\n <div className=\"eth-agent-generated-artifact-panel__preview-meta\">\n {artifactMeta(artifact).map((item) => (\n <span key={item}>{item}</span>\n ))}\n {artifact.mimeType ? <span>{artifact.mimeType}</span> : null}\n </div>\n </div>\n {artifact.href ? (\n <LinkButton href={artifact.href} density=\"compact\" intent=\"secondary\">\n Open\n </LinkButton>\n ) : null}\n </header>\n\n <div className=\"eth-agent-generated-artifact-panel__preview-body\">\n <ArtifactPreviewBody artifact={artifact} />\n </div>\n </section>\n );\n}\n\nfunction ArtifactPreviewBody({ artifact }: { artifact: AgentGeneratedArtifact }) {\n const content = artifact.content?.trim();\n\n if (artifact.kind === \"image\" && artifact.previewUrl) {\n return <img alt={artifact.label} src={artifact.previewUrl} />;\n }\n\n if (artifact.kind === \"code\" && content) {\n return (\n <pre>\n <code>{content}</code>\n </pre>\n );\n }\n\n if (artifact.previewUrl) {\n return <iframe title={artifact.label} src={artifact.previewUrl} />;\n }\n\n if (content) {\n return <div className=\"eth-agent-generated-artifact-panel__text-preview\">{content}</div>;\n }\n\n return (\n <div className=\"eth-agent-generated-artifact-panel__empty-preview\" role=\"status\">\n <p className=\"eth-agent-generated-artifact-panel__empty-title\">Preview unavailable</p>\n <p className=\"eth-agent-generated-artifact-panel__empty-description\">\n {artifact.href\n ? \"Open the artifact to inspect the generated output.\"\n : \"Artifact saved without an inline preview.\"}\n </p>\n </div>\n );\n}\n\nfunction artifactMeta(artifact: AgentGeneratedArtifact) {\n return [artifact.size, formatDateTime(artifact.createdAt)].filter((item): item is string =>\n Boolean(item)\n );\n}\n\nfunction artifactKindLabel(kind: AgentGeneratedArtifact[\"kind\"]) {\n switch (kind) {\n case \"chart\":\n return \"Chart\";\n case \"code\":\n return \"Code\";\n case \"doc\":\n return \"Doc\";\n case \"file\":\n return \"File\";\n case \"image\":\n return \"Image\";\n }\n}\n\nfunction artifactPreviewStatus(artifact: AgentGeneratedArtifact) {\n if (artifact.kind === \"image\" && artifact.previewUrl) return \"Inline image preview\";\n if (artifact.kind === \"code\" && artifact.content?.trim()) return \"Inline code preview\";\n if (artifact.previewUrl) return \"Embedded preview\";\n if (artifact.content?.trim()) return \"Inline text preview\";\n if (artifact.href) return \"Open externally\";\n return \"No inline preview\";\n}\n","import * as React from \"react\";\nimport type { AgentMessage, AgentRunState, ChatAgentRailAttachment } from \"../types\";\nimport { ChatAgentRail } from \"./ChatAgentRail\";\n\nexport interface AppDomainAgentPanelProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"children\" | \"onSubmit\"> {\n appDomainRef: string;\n agentRef?: string;\n projectRef?: string;\n messages?: AgentMessage[];\n state?: AgentRunState;\n prompt?: string;\n onPromptChange?: (value: string) => void;\n onSubmit?: (prompt: string, attachments?: ChatAgentRailAttachment[]) => void;\n attachments?: ChatAgentRailAttachment[];\n onAttachmentRemove?: (id: string) => void;\n runControls?: React.ReactNode;\n children?: React.ReactNode;\n}\n\nexport function AppDomainAgentPanel({\n appDomainRef,\n agentRef,\n projectRef,\n messages = [],\n state,\n prompt = \"\",\n onPromptChange,\n onSubmit,\n attachments,\n onAttachmentRemove,\n runControls,\n children,\n ...props\n}: AppDomainAgentPanelProps) {\n return (\n <ChatAgentRail\n {...props}\n agentRef={agentRef}\n projectRef={projectRef}\n messages={messages}\n state={state}\n prompt={prompt}\n onPromptChange={onPromptChange ?? (() => undefined)}\n onSubmit={onSubmit}\n attachments={attachments}\n onAttachmentRemove={onAttachmentRemove}\n runControls={runControls}\n scopeLabel={appDomainRef}\n header={\n <div className=\"eth-agent-app-domain-panel__header\">\n <p className=\"eth-agent-app-domain-panel__eyebrow\">App domain</p>\n <h2 className=\"eth-agent-app-domain-panel__title\">{appDomainRef}</h2>\n {agentRef || projectRef ? (\n <div className=\"eth-agent-app-domain-panel__meta\" aria-label=\"Agent panel scope\">\n {agentRef ? <span>Agent {agentRef}</span> : null}\n {projectRef ? <span>Project {projectRef}</span> : null}\n </div>\n ) : null}\n {children ? <div className=\"eth-agent-app-domain-panel__slot\">{children}</div> : null}\n </div>\n }\n data-eth-component=\"AppDomainAgentPanel\"\n />\n );\n}\n"],"mappings":"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","names":["import_clsx","clsx","React","import_clsx","import_core","import_jsx_runtime","clsx","statusLabel","import_clsx","import_jsx_runtime","clsx","import_clsx","import_core","import_jsx_runtime","clsx","kindLabel","import_jsx_runtime","clsx","import_clsx","import_core","import_jsx_runtime","clsx","import_clsx","import_core","import_jsx_runtime","clsx","React","import_clsx","import_core","import_jsx_runtime","clsx","React","import_clsx","import_core","import_icons","import_jsx_runtime","clsx","React","import_clsx","import_core","import_icons","import_jsx_runtime","stateLabel","clsx","import_clsx","import_core","import_jsx_runtime","clsx","React","import_clsx","import_core","import_jsx_runtime","clsx","React","import_clsx","import_core","import_jsx_runtime","clsx","React","import_clsx","import_core","import_icons","import_jsx_runtime","clsx","React","import_clsx","import_core","import_icons","import_jsx_runtime","clsx","import_clsx","import_core","import_jsx_runtime","clsx","statusLabel","import_clsx","import_core","import_icons","import_jsx_runtime","clsx","React","import_clsx","import_core","import_jsx_runtime","clsx","React","import_clsx","import_core","import_jsx_runtime","clsx","import_jsx_runtime"]}
|