@amodalai/react 0.1.10 → 0.1.12

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/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sources":["../src/provider.tsx","../src/hooks/useAmodalChat.ts","../src/components/ConfirmCard.tsx","../src/components/ReviewCard.tsx","../src/chat.tsx","../src/components/AmodalAction.tsx","../src/hooks/useAmodalBrief.ts","../src/hooks/useAmodalInsight.ts","../src/hooks/useAmodalTask.ts","../src/hooks/useAmodalQuery.ts","../src/hooks/useStore.ts","../src/hooks/useStoreList.ts","../src/hooks/useSkillAction.ts","../src/hooks/useNavigate.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { createContext, useContext, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { RuntimeClient } from './client/runtime-client';\n\nexport interface AmodalProviderProps {\n /** Base URL of the Amodal runtime server (e.g., \"http://localhost:3001\"). */\n runtimeUrl: string;\n /** Tenant identifier sent in every request body. */\n tenantId: string;\n /** Optional async token getter for auth headers. */\n getToken?: () => string | Promise<string> | null | undefined;\n children: ReactNode;\n}\n\ninterface AmodalContextValue {\n client: RuntimeClient;\n runtimeUrl: string;\n tenantId: string;\n}\n\nconst AmodalContext = createContext<AmodalContextValue | null>(null);\n\n/**\n * Provides a RuntimeClient to all child hooks and components.\n */\nexport function AmodalProvider({ runtimeUrl, tenantId, getToken, children }: AmodalProviderProps) {\n const client = useMemo(\n () => new RuntimeClient({ runtimeUrl, tenantId, getToken }),\n [runtimeUrl, tenantId, getToken],\n );\n\n const value = useMemo(\n () => ({ client, runtimeUrl, tenantId }),\n [client, runtimeUrl, tenantId],\n );\n\n return <AmodalContext.Provider value={value}>{children}</AmodalContext.Provider>;\n}\n\n/**\n * Access the RuntimeClient and config from the nearest AmodalProvider.\n * Throws if called outside of an AmodalProvider.\n */\nexport function useAmodalContext(): AmodalContextValue {\n const ctx = useContext(AmodalContext);\n if (!ctx) {\n throw new Error('useAmodalContext must be used within an <AmodalProvider>');\n }\n return ctx;\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useReducer, useRef } from 'react';\nimport type {\n ChatState,\n ChatAction,\n ChatMessage,\n AssistantTextMessage,\n ToolCallInfo,\n ContentBlock,\n ConfirmationInfo,\n} from '../types';\nimport { useAmodalContext } from '../provider';\n\nconst initialState: ChatState = {\n messages: [],\n sessionId: null,\n isStreaming: false,\n error: null,\n activeToolCalls: [],\n isHistorical: false,\n usage: {inputTokens: 0, outputTokens: 0},\n};\n\nlet messageCounter = 0;\n\nfunction createMessageId(): string {\n messageCounter++;\n return `msg-${Date.now()}-${String(messageCounter)}`;\n}\n\nexport function chatReducer(state: ChatState, action: ChatAction): ChatState {\n switch (action.type) {\n case 'SEND_MESSAGE': {\n const userMessage: ChatMessage = {\n type: 'user',\n id: createMessageId(),\n text: action.text,\n timestamp: new Date().toISOString(),\n };\n const assistantMessage: AssistantTextMessage = {\n type: 'assistant_text',\n id: createMessageId(),\n text: '',\n toolCalls: [],\n confirmations: [],\n skillActivations: [],\n kbProposals: [],\n widgets: [],\n contentBlocks: [],\n timestamp: new Date().toISOString(),\n };\n return {\n ...state,\n messages: [...state.messages, userMessage, assistantMessage],\n isStreaming: true,\n error: null,\n activeToolCalls: [],\n };\n }\n case 'STREAM_INIT':\n return { ...state, sessionId: action.sessionId };\n case 'STREAM_TEXT_DELTA': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const blocks = [...last.contentBlocks];\n const lastBlock = blocks[blocks.length - 1];\n if (lastBlock && lastBlock.type === 'text') {\n blocks[blocks.length - 1] = { type: 'text', text: lastBlock.text + action.content };\n } else {\n blocks.push({ type: 'text', text: action.content });\n }\n msgs[msgs.length - 1] = { ...last, text: last.text + action.content, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_TOOL_CALL_START': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n const toolCall: ToolCallInfo = {\n toolId: action.toolId,\n toolName: action.toolName,\n parameters: action.parameters,\n status: 'running',\n };\n if (last && last.type === 'assistant_text') {\n const updatedToolCalls = [...last.toolCalls, toolCall];\n const blocks = [...last.contentBlocks];\n const lastBlock = blocks[blocks.length - 1];\n if (lastBlock && lastBlock.type === 'tool_calls') {\n blocks[blocks.length - 1] = { type: 'tool_calls', calls: [...lastBlock.calls, toolCall] };\n } else {\n blocks.push({ type: 'tool_calls', calls: [toolCall] });\n }\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedToolCalls, contentBlocks: blocks };\n }\n return {\n ...state,\n messages: msgs,\n activeToolCalls: [...state.activeToolCalls, toolCall],\n };\n }\n case 'STREAM_TOOL_CALL_RESULT': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const updateCall = (tc: ToolCallInfo): ToolCallInfo =>\n tc.toolId === action.toolId\n ? {\n ...tc,\n status: action.status,\n result: action.result,\n duration_ms: action.duration_ms,\n error: action.error,\n }\n : tc;\n const updatedCalls = last.toolCalls.map(updateCall);\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(updateCall) }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedCalls, contentBlocks: blocks };\n }\n const activeToolCalls = state.activeToolCalls.filter(\n (tc) => tc.toolId !== action.toolId,\n );\n return { ...state, messages: msgs, activeToolCalls };\n }\n case 'STREAM_SUBAGENT_EVENT': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const appendEvent = (tc: ToolCallInfo): ToolCallInfo =>\n tc.toolId === action.parentToolId\n ? { ...tc, subagentEvents: [...(tc.subagentEvents ?? []), action.event] }\n : tc;\n const updatedCalls = last.toolCalls.map(appendEvent);\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(appendEvent) }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedCalls, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_WIDGET': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const block: ContentBlock = {\n type: 'widget',\n widgetType: action.widgetType,\n data: action.data,\n };\n msgs[msgs.length - 1] = {\n ...last,\n contentBlocks: [...last.contentBlocks, block],\n };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_CONFIRMATION_REQUIRED': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const block: ContentBlock = {\n type: 'confirmation',\n confirmation: action.confirmation,\n };\n msgs[msgs.length - 1] = {\n ...last,\n confirmations: [...last.confirmations, action.confirmation],\n contentBlocks: [...last.contentBlocks, block],\n };\n }\n return { ...state, messages: msgs };\n }\n case 'CONFIRMATION_RESPONDED': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const updatedConfirmations = last.confirmations.map((c) =>\n c.correlationId === action.correlationId\n ? { ...c, status: (action.approved ? 'approved' : 'denied') as ConfirmationInfo['status'] }\n : c,\n );\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'confirmation' && block.confirmation.correlationId === action.correlationId\n ? { ...block, confirmation: { ...block.confirmation, status: (action.approved ? 'approved' : 'denied') as ConfirmationInfo['status'] } }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, confirmations: updatedConfirmations, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_ERROR':\n return { ...state, isStreaming: false, error: action.message, activeToolCalls: [] };\n case 'STREAM_DONE': {\n const doneMessages = [...state.messages];\n const lastMsg = doneMessages[doneMessages.length - 1];\n if (lastMsg && lastMsg.type === 'assistant_text') {\n const stopRunning = (tc: ToolCallInfo): ToolCallInfo =>\n tc.status === 'running' ? { ...tc, status: 'error', error: 'Stopped' } : tc;\n const stoppedCalls = lastMsg.toolCalls.map(stopRunning);\n const stoppedBlocks = lastMsg.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(stopRunning) }\n : block,\n );\n doneMessages[doneMessages.length - 1] = { ...lastMsg, toolCalls: stoppedCalls, contentBlocks: stoppedBlocks };\n }\n const newUsage = action.usage\n ? {inputTokens: state.usage.inputTokens + action.usage.inputTokens, outputTokens: state.usage.outputTokens + action.usage.outputTokens}\n : state.usage;\n return { ...state, messages: doneMessages, isStreaming: false, activeToolCalls: [], usage: newUsage };\n }\n case 'RESET':\n return { ...initialState };\n default:\n return state;\n }\n}\n\nexport interface UseAmodalChatOptions {\n /** Pre-seed session ID for resuming a previous session. */\n initialSessionId?: string | null;\n /** Additional context sent with each chat message. */\n context?: Record<string, unknown>;\n /** Called when the SSE stream ends. */\n onStreamEnd?: () => void;\n /** Called when a session ID is received from the server. */\n onSessionCreated?: (sessionId: string) => void;\n /** Called on each tool call result. */\n onToolCall?: (call: ToolCallInfo) => void;\n /** Called when a confirmation is required. */\n onConfirmation?: (confirmation: ConfirmationInfo) => void;\n}\n\nexport interface UseAmodalChatReturn {\n messages: ChatMessage[];\n send: (text: string) => void;\n stop: () => void;\n isStreaming: boolean;\n activeToolCalls: ToolCallInfo[];\n sessionId: string | null;\n error: string | null;\n usage: {inputTokens: number; outputTokens: number};\n reset: () => void;\n respondToConfirmation: (correlationId: string, approved: boolean) => void;\n}\n\nexport function useAmodalChat(options?: UseAmodalChatOptions): UseAmodalChatReturn {\n const { client } = useAmodalContext();\n const [state, dispatch] = useReducer(chatReducer, initialState);\n const sessionIdRef = useRef<string | null>(options?.initialSessionId ?? null);\n const abortControllerRef = useRef<AbortController | null>(null);\n const callbacksRef = useRef(options);\n callbacksRef.current = options;\n\n sessionIdRef.current = state.sessionId ?? sessionIdRef.current;\n\n const send = useCallback(\n (text: string) => {\n if (state.isStreaming) return;\n\n dispatch({ type: 'SEND_MESSAGE', text });\n\n const controller = new AbortController();\n abortControllerRef.current = controller;\n\n const runStream = async () => {\n let receivedDone = false;\n try {\n const stream = client.chatStream(text, {\n sessionId: sessionIdRef.current ?? undefined,\n context: callbacksRef.current?.context,\n signal: controller.signal,\n });\n\n for await (const event of stream) {\n switch (event.type) {\n case 'init':\n dispatch({ type: 'STREAM_INIT', sessionId: event.session_id });\n callbacksRef.current?.onSessionCreated?.(event.session_id);\n break;\n case 'text_delta':\n dispatch({ type: 'STREAM_TEXT_DELTA', content: event.content });\n break;\n case 'tool_call_start':\n dispatch({\n type: 'STREAM_TOOL_CALL_START',\n toolId: event.tool_id,\n toolName: event.tool_name,\n parameters: event.parameters,\n });\n break;\n case 'tool_call_result':\n dispatch({\n type: 'STREAM_TOOL_CALL_RESULT',\n toolId: event.tool_id,\n status: event.status,\n result: event.result,\n duration_ms: event.duration_ms,\n error: event.error,\n });\n callbacksRef.current?.onToolCall?.({\n toolId: event.tool_id,\n toolName: '',\n parameters: {},\n status: event.status,\n result: event.result,\n duration_ms: event.duration_ms,\n error: event.error,\n });\n break;\n case 'subagent_event':\n dispatch({\n type: 'STREAM_SUBAGENT_EVENT',\n parentToolId: event.parent_tool_id,\n event: {\n agentName: event.agent_name,\n eventType: event.event_type,\n toolName: event.tool_name,\n toolArgs: event.tool_args,\n result: event.result,\n text: event.text,\n error: event.error,\n timestamp: event.timestamp,\n },\n });\n break;\n case 'widget':\n dispatch({\n type: 'STREAM_WIDGET',\n widgetType: event.widget_type,\n data: event.data,\n });\n break;\n case 'confirmation_required': {\n const confirmation: ConfirmationInfo = {\n endpoint: event.endpoint,\n method: event.method,\n reason: event.reason,\n escalated: event.escalated,\n params: event.params,\n connectionName: event.connection_name,\n correlationId: event.correlation_id,\n status: 'pending',\n };\n dispatch({ type: 'STREAM_CONFIRMATION_REQUIRED', confirmation });\n callbacksRef.current?.onConfirmation?.(confirmation);\n break;\n }\n case 'error':\n dispatch({ type: 'STREAM_ERROR', message: event.message });\n break;\n case 'done':\n receivedDone = true;\n dispatch({\n type: 'STREAM_DONE',\n usage: event.usage ? {inputTokens: event.usage.input_tokens, outputTokens: event.usage.output_tokens} : undefined,\n });\n callbacksRef.current?.onStreamEnd?.();\n break;\n default:\n break;\n }\n }\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n dispatch({\n type: 'STREAM_ERROR',\n message: err instanceof Error ? err.message : 'Unknown error',\n });\n }\n } finally {\n abortControllerRef.current = null;\n if (!receivedDone && !controller.signal.aborted) {\n dispatch({ type: 'STREAM_DONE' });\n callbacksRef.current?.onStreamEnd?.();\n }\n }\n };\n\n void runStream();\n },\n [client, state.isStreaming],\n );\n\n const stop = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n dispatch({ type: 'STREAM_DONE' });\n }, []);\n\n const reset = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n dispatch({ type: 'RESET' });\n }, []);\n\n const respondToConfirmation = useCallback(\n (correlationId: string, approved: boolean) => {\n dispatch({ type: 'CONFIRMATION_RESPONDED', correlationId, approved });\n\n // Send approval/denial as a follow-up chat message\n const responseText = approved\n ? `I approve the action (correlation: ${correlationId})`\n : `I deny the action (correlation: ${correlationId})`;\n\n // Queue the response after the current stream ends\n if (!state.isStreaming) {\n send(responseText);\n }\n },\n [send, state.isStreaming],\n );\n\n // Abort on unmount\n useEffect(\n () => () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n },\n [],\n );\n\n return {\n messages: state.messages,\n send,\n stop,\n isStreaming: state.isStreaming,\n activeToolCalls: state.activeToolCalls,\n sessionId: state.sessionId,\n error: state.error,\n usage: state.usage,\n reset,\n respondToConfirmation,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport type { ConfirmationInfo } from '../types';\n\nexport interface ConfirmCardProps {\n confirmation: ConfirmationInfo;\n onApprove: () => void;\n onDeny: () => void;\n}\n\n/**\n * Simple confirmation card: shows endpoint + method + reason, approve/deny buttons.\n */\nexport function ConfirmCard({ confirmation, onApprove, onDeny }: ConfirmCardProps) {\n const isPending = confirmation.status === 'pending';\n\n return (\n <div className=\"amodal-confirm-card\" data-testid=\"confirm-card\">\n <div className=\"amodal-confirm-card__header\">\n <span className=\"amodal-confirm-card__method\">{confirmation.method}</span>\n <span className=\"amodal-confirm-card__endpoint\">{confirmation.endpoint}</span>\n </div>\n <p className=\"amodal-confirm-card__reason\">{confirmation.reason}</p>\n {isPending ? (\n <div className=\"amodal-confirm-card__actions\">\n <button\n className=\"amodal-confirm-card__btn amodal-confirm-card__btn--approve\"\n onClick={onApprove}\n data-testid=\"confirm-approve\"\n >\n Approve\n </button>\n <button\n className=\"amodal-confirm-card__btn amodal-confirm-card__btn--deny\"\n onClick={onDeny}\n data-testid=\"confirm-deny\"\n >\n Deny\n </button>\n </div>\n ) : (\n <div className=\"amodal-confirm-card__status\" data-testid=\"confirm-status\">\n {confirmation.status === 'approved' ? 'Approved' : 'Denied'}\n </div>\n )}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport type { ConfirmationInfo } from '../types';\n\nexport interface ReviewCardProps {\n confirmation: ConfirmationInfo;\n onApprove: () => void;\n onDeny: () => void;\n}\n\n/**\n * Structured review card: all params, reason, escalation badge, approve/deny.\n */\nexport function ReviewCard({ confirmation, onApprove, onDeny }: ReviewCardProps) {\n const isPending = confirmation.status === 'pending';\n\n return (\n <div className=\"amodal-review-card\" data-testid=\"review-card\">\n <div className=\"amodal-review-card__header\">\n <span className=\"amodal-review-card__method\">{confirmation.method}</span>\n <span className=\"amodal-review-card__endpoint\">{confirmation.endpoint}</span>\n {confirmation.escalated && (\n <span className=\"amodal-review-card__badge\" data-testid=\"escalation-badge\">\n Escalated\n </span>\n )}\n </div>\n {confirmation.connectionName && (\n <div className=\"amodal-review-card__connection\">\n Connection: {confirmation.connectionName}\n </div>\n )}\n <p className=\"amodal-review-card__reason\">{confirmation.reason}</p>\n {confirmation.params && Object.keys(confirmation.params).length > 0 && (\n <div className=\"amodal-review-card__params\" data-testid=\"review-params\">\n <div className=\"amodal-review-card__params-title\">Parameters</div>\n <pre className=\"amodal-review-card__params-body\">\n {JSON.stringify(confirmation.params, null, 2)}\n </pre>\n </div>\n )}\n {isPending ? (\n <div className=\"amodal-review-card__actions\">\n <button\n className=\"amodal-review-card__btn amodal-review-card__btn--approve\"\n onClick={onApprove}\n data-testid=\"review-approve\"\n >\n Approve\n </button>\n <button\n className=\"amodal-review-card__btn amodal-review-card__btn--deny\"\n onClick={onDeny}\n data-testid=\"review-deny\"\n >\n Deny\n </button>\n </div>\n ) : (\n <div className=\"amodal-review-card__status\" data-testid=\"review-status\">\n {confirmation.status === 'approved' ? 'Approved' : 'Denied'}\n </div>\n )}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useRef, useState } from 'react';\nimport type { FormEvent } from 'react';\nimport type { ConfirmationInfo, ToolCallInfo } from './types';\nimport { useAmodalChat } from './hooks/useAmodalChat';\nimport type { UseAmodalChatOptions } from './hooks/useAmodalChat';\nimport { ConfirmCard } from './components/ConfirmCard';\nimport { ReviewCard } from './components/ReviewCard';\n\nexport interface AmodalChatProps extends UseAmodalChatOptions {\n /** Placeholder text for the input bar. */\n placeholder?: string;\n /** Custom renderer for text content blocks. */\n renderText?: (text: string) => React.ReactNode;\n /** Custom renderer for tool call blocks. */\n renderToolCall?: (call: ToolCallInfo) => React.ReactNode;\n /** Custom renderer for confirmation blocks. */\n renderConfirmation?: (confirmation: ConfirmationInfo, onApprove: () => void, onDeny: () => void) => React.ReactNode;\n /** CSS class name for the root element. */\n className?: string;\n}\n\n/**\n * Full chat component — message list, input bar, renders confirmations inline.\n */\nexport function AmodalChat({\n placeholder = 'Type a message...',\n renderText,\n renderToolCall,\n renderConfirmation,\n className,\n ...hookOptions\n}: AmodalChatProps) {\n const { messages, send, isStreaming, respondToConfirmation } = useAmodalChat(hookOptions);\n const [input, setInput] = useState('');\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n const handleSubmit = useCallback(\n (e: FormEvent) => {\n e.preventDefault();\n const trimmed = input.trim();\n if (trimmed.length === 0 || isStreaming) return;\n setInput('');\n send(trimmed);\n },\n [input, isStreaming, send],\n );\n\n const rootClass = ['amodal-chat', className].filter(Boolean).join(' ');\n\n return (\n <div className={rootClass} data-testid=\"amodal-chat\">\n <div className=\"amodal-chat__messages\" data-testid=\"message-list\">\n {messages.map((msg) => {\n switch (msg.type) {\n case 'user':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--user\" data-testid=\"user-message\">\n {msg.text}\n </div>\n );\n case 'assistant_text':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--assistant\" data-testid=\"assistant-message\">\n {msg.contentBlocks.map((block, i) => {\n switch (block.type) {\n case 'text':\n return (\n <div key={`text-${String(i)}`} className=\"amodal-chat__text\">\n {renderText ? renderText(block.text) : block.text}\n </div>\n );\n case 'tool_calls':\n return (\n <div key={`tools-${String(i)}`} className=\"amodal-chat__tool-calls\">\n {block.calls.map((call) =>\n renderToolCall ? (\n <div key={call.toolId}>{renderToolCall(call)}</div>\n ) : (\n <div key={call.toolId} className=\"amodal-chat__tool-call\" data-testid=\"tool-call\">\n <span className=\"amodal-chat__tool-name\">{call.toolName}</span>\n <span className=\"amodal-chat__tool-status\">{call.status}</span>\n </div>\n ),\n )}\n </div>\n );\n case 'confirmation': {\n const conf = block.confirmation;\n const handleApprove = () => {\n if (conf.correlationId) {\n respondToConfirmation(conf.correlationId, true);\n }\n };\n const handleDeny = () => {\n if (conf.correlationId) {\n respondToConfirmation(conf.correlationId, false);\n }\n };\n if (renderConfirmation) {\n return <div key={`conf-${String(i)}`}>{renderConfirmation(conf, handleApprove, handleDeny)}</div>;\n }\n if (conf.escalated || (conf.params && Object.keys(conf.params).length > 0)) {\n return <ReviewCard key={`conf-${String(i)}`} confirmation={conf} onApprove={handleApprove} onDeny={handleDeny} />;\n }\n return <ConfirmCard key={`conf-${String(i)}`} confirmation={conf} onApprove={handleApprove} onDeny={handleDeny} />;\n }\n case 'widget':\n return (\n <div key={`widget-${String(i)}`} className=\"amodal-chat__widget\" data-testid=\"widget\">\n {block.widgetType}\n </div>\n );\n default:\n return null;\n }\n })}\n </div>\n );\n case 'error':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--error\" data-testid=\"error-message\">\n {msg.message}\n </div>\n );\n default:\n return null;\n }\n })}\n <div ref={messagesEndRef} />\n </div>\n <form className=\"amodal-chat__input-bar\" onSubmit={handleSubmit} data-testid=\"input-bar\">\n <input\n className=\"amodal-chat__input\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n placeholder={placeholder}\n disabled={isStreaming}\n data-testid=\"chat-input\"\n />\n <button\n className=\"amodal-chat__send\"\n type=\"submit\"\n disabled={isStreaming || input.trim().length === 0}\n data-testid=\"send-button\"\n >\n Send\n </button>\n </form>\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useState } from 'react';\nimport type { ConfirmationInfo } from '../types';\nimport { useAmodalChat } from '../hooks/useAmodalChat';\nimport { ConfirmCard } from './ConfirmCard';\nimport { ReviewCard } from './ReviewCard';\n\nexport interface AmodalActionProps {\n /** The prompt to send when the action is triggered. */\n prompt: string;\n /** Label for the trigger button. */\n label?: string;\n /** Additional context sent with the chat message. */\n context?: Record<string, unknown>;\n /** Called when the action completes. */\n onComplete?: (text: string) => void;\n /** Called on error. */\n onError?: (error: string) => void;\n}\n\n/**\n * One-shot action: triggers a chat stream with a prompt, shows confirmation inline.\n */\nexport function AmodalAction({ prompt, label, context, onComplete, onError }: AmodalActionProps) {\n const [triggered, setTriggered] = useState(false);\n\n const { messages, send, isStreaming, respondToConfirmation } = useAmodalChat({\n context,\n onStreamEnd: () => {\n const lastMsg = messages[messages.length - 1];\n if (lastMsg && lastMsg.type === 'assistant_text') {\n onComplete?.(lastMsg.text);\n } else if (lastMsg && lastMsg.type === 'error') {\n onError?.(lastMsg.message);\n }\n },\n });\n\n const trigger = useCallback(() => {\n if (triggered || isStreaming) return;\n setTriggered(true);\n send(prompt);\n }, [triggered, isStreaming, send, prompt]);\n\n const lastAssistant = [...messages].reverse().find((m) => m.type === 'assistant_text');\n const pendingConfirmations: ConfirmationInfo[] =\n lastAssistant && lastAssistant.type === 'assistant_text'\n ? lastAssistant.confirmations.filter((c) => c.status === 'pending')\n : [];\n\n const renderConfirmation = (confirmation: ConfirmationInfo, index: number) => {\n const handleApprove = () => {\n if (confirmation.correlationId) {\n respondToConfirmation(confirmation.correlationId, true);\n }\n };\n const handleDeny = () => {\n if (confirmation.correlationId) {\n respondToConfirmation(confirmation.correlationId, false);\n }\n };\n\n if (confirmation.escalated || (confirmation.params && Object.keys(confirmation.params).length > 0)) {\n return (\n <ReviewCard\n key={confirmation.correlationId ?? String(index)}\n confirmation={confirmation}\n onApprove={handleApprove}\n onDeny={handleDeny}\n />\n );\n }\n\n return (\n <ConfirmCard\n key={confirmation.correlationId ?? String(index)}\n confirmation={confirmation}\n onApprove={handleApprove}\n onDeny={handleDeny}\n />\n );\n };\n\n if (!triggered) {\n return (\n <button\n className=\"amodal-action__trigger\"\n onClick={trigger}\n data-testid=\"action-trigger\"\n >\n {label ?? 'Run'}\n </button>\n );\n }\n\n return (\n <div className=\"amodal-action\" data-testid=\"action-container\">\n {isStreaming && (\n <div className=\"amodal-action__loading\" data-testid=\"action-loading\">\n Processing...\n </div>\n )}\n {lastAssistant && lastAssistant.type === 'assistant_text' && lastAssistant.text && (\n <div className=\"amodal-action__result\" data-testid=\"action-result\">\n {lastAssistant.text}\n </div>\n )}\n {pendingConfirmations.map(renderConfirmation)}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { BriefResult, ToolCallInfo } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalBriefOptions {\n /** The prompt to send for the brief. */\n prompt: string;\n /** Additional context sent with the request. */\n context?: Record<string, unknown>;\n /** If true, the brief is fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport interface UseAmodalBriefReturn {\n brief: BriefResult | null;\n isLoading: boolean;\n error: string | null;\n refresh: () => void;\n}\n\n/**\n * Sends a chat with a brief prompt, collects the full response.\n */\nexport function useAmodalBrief(options: UseAmodalBriefOptions): UseAmodalBriefReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [brief, setBrief] = useState<BriefResult | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchBrief = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setIsLoading(true);\n setError(null);\n\n try {\n let text = '';\n const toolCalls: ToolCallInfo[] = [];\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'tool_call_start':\n toolCalls.push({\n toolId: event.tool_id,\n toolName: event.tool_name,\n parameters: event.parameters,\n status: 'running',\n });\n break;\n case 'tool_call_result': {\n const tc = toolCalls.find((t) => t.toolId === event.tool_id);\n if (tc) {\n tc.status = event.status;\n tc.result = event.result;\n tc.duration_ms = event.duration_ms;\n tc.error = event.error;\n }\n break;\n }\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n\n setBrief({ text, toolCalls });\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refresh = useCallback(() => {\n void fetchBrief();\n }, [fetchBrief]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchBrief();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchBrief]);\n\n return { brief, isLoading, error, refresh };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { InsightResult } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalInsightOptions {\n /** The insight prompt to send. */\n prompt: string;\n /** Additional context for the insight. */\n context?: Record<string, unknown>;\n /** If true, fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport interface UseAmodalInsightReturn {\n status: InsightResult['status'];\n summary: string;\n details: string;\n isLoading: boolean;\n error: string | null;\n refresh: () => void;\n}\n\n/**\n * Sends a chat with an insight prompt, collects a structured response.\n * Splits the response at the first double newline into summary and details.\n */\nexport function useAmodalInsight(options: UseAmodalInsightOptions): UseAmodalInsightReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [status, setStatus] = useState<InsightResult['status']>('idle');\n const [summary, setSummary] = useState('');\n const [details, setDetails] = useState('');\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchInsight = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setStatus('loading');\n setError(null);\n setSummary('');\n setDetails('');\n\n try {\n let text = '';\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n setStatus('error');\n return;\n default:\n break;\n }\n }\n\n // Split at first double newline\n const splitIndex = text.indexOf('\\n\\n');\n if (splitIndex >= 0) {\n setSummary(text.slice(0, splitIndex).trim());\n setDetails(text.slice(splitIndex + 2).trim());\n } else {\n setSummary(text.trim());\n }\n setStatus('done');\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n setStatus('error');\n }\n } finally {\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refresh = useCallback(() => {\n void fetchInsight();\n }, [fetchInsight]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchInsight();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchInsight]);\n\n return { status, summary, details, isLoading: status === 'loading', error, refresh };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { SSEEvent, TaskStatusValue } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalTaskOptions {\n /** The task ID to stream. */\n taskId: string;\n /** If true, starts streaming automatically on mount. Defaults to true. */\n autoStream?: boolean;\n}\n\nexport interface UseAmodalTaskReturn {\n status: TaskStatusValue | 'idle';\n progress: string;\n result: string;\n events: SSEEvent[];\n error: string | null;\n start: () => void;\n stop: () => void;\n}\n\n/**\n * Streams GET /task/:id/stream events.\n */\nexport function useAmodalTask(options: UseAmodalTaskOptions): UseAmodalTaskReturn {\n const { taskId, autoStream = true } = options;\n const { client } = useAmodalContext();\n const [status, setStatus] = useState<TaskStatusValue | 'idle'>('idle');\n const [progress, setProgress] = useState('');\n const [result, setResult] = useState('');\n const [events, setEvents] = useState<SSEEvent[]>([]);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const startedRef = useRef(false);\n\n const start = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setStatus('running');\n setError(null);\n setEvents([]);\n setResult('');\n setProgress('');\n\n try {\n let text = '';\n\n for await (const event of client.streamTask(taskId, controller.signal)) {\n setEvents((prev) => [...prev, event]);\n\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n setResult(text);\n break;\n case 'tool_call_start':\n setProgress(`Running ${event.tool_name}...`);\n break;\n case 'tool_call_result':\n setProgress('');\n break;\n case 'error':\n setError(event.message);\n setStatus('error');\n return;\n case 'done':\n setStatus('completed');\n return;\n default:\n break;\n }\n }\n\n // Stream ended without done event\n if (status === 'running') {\n setStatus('completed');\n }\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n setStatus('error');\n }\n } finally {\n abortRef.current = null;\n }\n }, [client, taskId, status]);\n\n const stop = useCallback(() => {\n if (abortRef.current) {\n abortRef.current.abort();\n abortRef.current = null;\n }\n }, []);\n\n const startRef = useRef(start);\n startRef.current = start;\n\n useEffect(() => {\n if (autoStream && !startedRef.current) {\n startedRef.current = true;\n void startRef.current();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoStream]);\n\n return {\n status,\n progress,\n result,\n events,\n error,\n start: () => void start(),\n stop,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { QueryResult } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalQueryOptions {\n /** The query prompt. */\n prompt: string;\n /** Additional context. */\n context?: Record<string, unknown>;\n /** If true, fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport type UseAmodalQueryReturn = QueryResult<string> & {\n refetch: () => void;\n};\n\n/**\n * Non-streaming query. Collects the full response text.\n */\nexport function useAmodalQuery(options: UseAmodalQueryOptions): UseAmodalQueryReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [data, setData] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchQuery = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setIsLoading(true);\n setError(null);\n\n try {\n let text = '';\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n\n setData(text);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refetch = useCallback(() => {\n void fetchQuery();\n }, [fetchQuery]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchQuery();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchQuery]);\n\n return { data, isLoading, error, refetch };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { StoreDocument, StoreDocumentMeta } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseStoreOptions {\n /** Document key to fetch. */\n key: string;\n /** Auto-refresh interval in milliseconds. Set to 0 to disable. Default: 30000. */\n refreshInterval?: number;\n}\n\nexport interface UseStoreReturn {\n /** Document payload (the entity data). */\n data: Record<string, unknown> | null;\n /** Document metadata (computedAt, ttl, stale, trace, etc.). */\n meta: StoreDocumentMeta | null;\n /** Full document (key, version, payload, meta). */\n document: StoreDocument | null;\n /** Version history (most recent first). */\n history: StoreDocument[];\n /** Whether the initial fetch is in progress. */\n isLoading: boolean;\n /** Error message if the fetch failed. */\n error: string | null;\n /** Manually trigger a refetch. */\n refetch: () => void;\n}\n\n/**\n * Fetch a single document from a store by key.\n *\n * @example\n * ```tsx\n * const { data, meta, isLoading } = useStore('deal-health', { key: `deal:${dealId}` });\n * if (data) {\n * console.log(data.score, data.severity);\n * }\n * ```\n */\nexport function useStore(storeName: string, options: UseStoreOptions): UseStoreReturn {\n const { key, refreshInterval = 30000 } = options;\n const { client } = useAmodalContext();\n const [document, setDocument] = useState<StoreDocument | null>(null);\n const [history, setHistory] = useState<StoreDocument[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n const fetchDocument = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n try {\n const result = await client.getStoreDocument(storeName, key, controller.signal);\n setDocument(result.document);\n setHistory(result.history);\n setError(null);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Failed to fetch document');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, storeName, key]);\n\n const refetch = useCallback(() => {\n void fetchDocument();\n }, [fetchDocument]);\n\n // Initial fetch\n useEffect(() => {\n setIsLoading(true);\n void fetchDocument();\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [fetchDocument]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const timer = setInterval(() => {\n void fetchDocument();\n }, refreshInterval);\n\n return () => clearInterval(timer);\n }, [fetchDocument, refreshInterval]);\n\n return {\n data: document?.payload ?? null,\n meta: document?.meta ?? null,\n document,\n history,\n isLoading,\n error,\n refetch,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { StoreDocument } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseStoreListOptions {\n /** Filter by field values (equality match). */\n filter?: Record<string, unknown>;\n /** Sort field. Prefix with \"-\" for descending (e.g., \"-severity\"). */\n sort?: string;\n /** Max documents to return. Default: 20. */\n limit?: number;\n /** Auto-refresh interval in milliseconds. Set to 0 to disable. Default: 30000. */\n refreshInterval?: number;\n}\n\nexport interface UseStoreListReturn {\n /** Array of document payloads. */\n data: Array<Record<string, unknown>>;\n /** Full documents (with key, version, meta). */\n documents: StoreDocument[];\n /** Total count of matching documents. */\n total: number;\n /** Whether more documents exist beyond the current page. */\n hasMore: boolean;\n /** Whether the initial fetch is in progress. */\n isLoading: boolean;\n /** Error message if the fetch failed. */\n error: string | null;\n /** Manually trigger a refetch. */\n refetch: () => void;\n}\n\n/**\n * Fetch a list of documents from a store with optional filtering and sorting.\n *\n * @example\n * ```tsx\n * const { data, total } = useStoreList('active-alerts', {\n * filter: { severity: 'P1' },\n * sort: '-computedAt',\n * limit: 10,\n * });\n * ```\n */\nexport function useStoreList(storeName: string, options: UseStoreListOptions = {}): UseStoreListReturn {\n const { filter, sort, limit = 20, refreshInterval = 30000 } = options;\n const { client } = useAmodalContext();\n const [documents, setDocuments] = useState<StoreDocument[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n // Stable stringified deps for filter object\n const filterKey = filter ? JSON.stringify(filter) : '';\n\n const fetchList = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n try {\n const result = await client.getStoreDocuments(storeName, {\n filter: filterKey ? JSON.parse(filterKey) : undefined,\n sort,\n limit,\n signal: controller.signal,\n });\n setDocuments(result.documents);\n setTotal(result.total);\n setHasMore(result.hasMore);\n setError(null);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Failed to fetch store list');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, storeName, filterKey, sort, limit]);\n\n const refetch = useCallback(() => {\n void fetchList();\n }, [fetchList]);\n\n // Initial fetch\n useEffect(() => {\n setIsLoading(true);\n void fetchList();\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [fetchList]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const timer = setInterval(() => {\n void fetchList();\n }, refreshInterval);\n\n return () => clearInterval(timer);\n }, [fetchList, refreshInterval]);\n\n return {\n data: documents.map((d) => d.payload),\n documents,\n total,\n hasMore,\n isLoading,\n error,\n refetch,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useRef, useState } from 'react';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseSkillActionOptions {\n /** Store names this skill writes to (for context in the prompt). */\n stores?: string[];\n /** Whether to include a confirmation hint in the prompt. */\n confirm?: boolean;\n}\n\nexport interface UseSkillActionReturn {\n /** Execute the skill with the given parameters. */\n execute: (params?: Record<string, unknown>) => void;\n /** Whether the skill is currently running. */\n loading: boolean;\n /** The text result from the skill execution. */\n result: string | null;\n /** Error message if execution failed. */\n error: string | null;\n}\n\n/**\n * Invoke a skill via the chat agent.\n *\n * Under the hood, this sends a structured chat message asking the agent\n * to run the skill, then collects the text response.\n *\n * @example\n * ```tsx\n * const investigate = useSkillAction('deep-investigator', {\n * stores: ['active-alerts', 'incident-correlations'],\n * });\n *\n * <button onClick={() => investigate.execute({ correlationId: '123' })}>\n * Investigate\n * </button>\n * ```\n */\nexport function useSkillAction(\n skillName: string,\n options: UseSkillActionOptions = {},\n): UseSkillActionReturn {\n const { client } = useAmodalContext();\n const [loading, setLoading] = useState(false);\n const [result, setResult] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n const execute = useCallback(\n (params?: Record<string, unknown>) => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setLoading(true);\n setResult(null);\n setError(null);\n\n // Build a structured prompt for the agent\n let prompt = `Run skill \"${skillName}\"`;\n if (params && Object.keys(params).length > 0) {\n prompt += ` with parameters: ${JSON.stringify(params)}`;\n }\n if (options.stores && options.stores.length > 0) {\n prompt += `. Write results to stores: ${options.stores.join(', ')}`;\n }\n if (options.confirm) {\n prompt += '. Confirm before writing.';\n }\n\n void (async () => {\n try {\n let text = '';\n for await (const event of client.chatStream(prompt, { signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n setResult(text);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Skill execution failed');\n }\n } finally {\n setLoading(false);\n abortRef.current = null;\n }\n })();\n },\n [client, skillName, options.stores, options.confirm],\n );\n\n return { execute, loading, result, error };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { createContext, useContext, useCallback } from 'react';\n\n/**\n * Navigation function type.\n * In the runtime app, this is backed by React Router's navigate.\n * In standalone/embedded usage, the host app provides the implementation.\n */\nexport type NavigateFn = (pageName: string, params?: Record<string, string>) => void;\n\n/**\n * Context for providing a navigate function.\n * The runtime app sets this with React Router's navigate.\n * Standalone users can provide their own via NavigateProvider.\n */\nexport const NavigateContext = createContext<NavigateFn | null>(null);\n\n/**\n * Navigate between pages in the runtime app.\n *\n * In the runtime app, navigates to the page route.\n * In standalone/embedded usage, calls the host-provided navigate function.\n * If no NavigateProvider is present, returns a no-op.\n *\n * @example\n * ```tsx\n * const navigate = useNavigate();\n * navigate('incident-detail', { correlationId: '123' });\n * ```\n */\nexport function useNavigate(): NavigateFn {\n const navigateFn = useContext(NavigateContext);\n\n const noopNavigate = useCallback((_pageName: string, _params?: Record<string, string>) => {\n // No-op when no NavigateProvider is present\n }, []);\n\n return navigateFn ?? noopNavigate;\n}\n"],"names":["AmodalContext","createContext","AmodalProvider","runtimeUrl","tenantId","getToken","children","client","useMemo","RuntimeClient","value","jsx","useAmodalContext","ctx","useContext","initialState","messageCounter","createMessageId","chatReducer","state","action","userMessage","assistantMessage","msgs","last","blocks","lastBlock","toolCall","updatedToolCalls","updateCall","tc","updatedCalls","block","activeToolCalls","appendEvent","updatedConfirmations","doneMessages","lastMsg","stopRunning","stoppedCalls","stoppedBlocks","newUsage","useAmodalChat","options","dispatch","useReducer","sessionIdRef","useRef","abortControllerRef","callbacksRef","send","useCallback","text","controller","receivedDone","stream","_a","event","_c","_b","_e","_d","confirmation","_g","_f","_i","_h","err","_k","_j","stop","reset","respondToConfirmation","correlationId","approved","responseText","useEffect","ConfirmCard","onApprove","onDeny","isPending","jsxs","ReviewCard","AmodalChat","placeholder","renderText","renderToolCall","renderConfirmation","className","hookOptions","messages","isStreaming","input","setInput","useState","messagesEndRef","handleSubmit","e","trimmed","rootClass","msg","i","call","conf","handleApprove","handleDeny","AmodalAction","prompt","label","context","onComplete","onError","triggered","setTriggered","trigger","lastAssistant","m","pendingConfirmations","c","index","useAmodalBrief","autoFetch","brief","setBrief","isLoading","setIsLoading","error","setError","abortRef","mountedRef","fetchBrief","toolCalls","t","refresh","useAmodalInsight","status","setStatus","summary","setSummary","details","setDetails","fetchInsight","splitIndex","useAmodalTask","taskId","autoStream","progress","setProgress","result","setResult","events","setEvents","startedRef","start","prev","startRef","useAmodalQuery","data","setData","fetchQuery","refetch","useStore","storeName","key","refreshInterval","document","setDocument","history","setHistory","fetchDocument","timer","useStoreList","filter","sort","limit","documents","setDocuments","total","setTotal","hasMore","setHasMore","filterKey","fetchList","d","useSkillAction","skillName","loading","setLoading","params","NavigateContext","useNavigate","navigateFn","noopNavigate","_pageName","_params"],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sources":["../src/provider.tsx","../src/hooks/useAmodalChat.ts","../src/components/ConfirmCard.tsx","../src/components/ReviewCard.tsx","../src/chat.tsx","../src/components/AmodalAction.tsx","../src/hooks/useAmodalBrief.ts","../src/hooks/useAmodalInsight.ts","../src/hooks/useAmodalTask.ts","../src/hooks/useAmodalQuery.ts","../src/hooks/useStore.ts","../src/hooks/useStoreList.ts","../src/hooks/useSkillAction.ts","../src/hooks/useNavigate.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { createContext, useContext, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { RuntimeClient } from './client/runtime-client';\n\nexport interface AmodalProviderProps {\n /** Base URL of the Amodal runtime server (e.g., \"http://localhost:3001\"). */\n runtimeUrl: string;\n /** App identifier sent in every request body. */\n appId: string;\n /** Optional async token getter for auth headers. */\n getToken?: () => string | Promise<string> | null | undefined;\n children: ReactNode;\n}\n\ninterface AmodalContextValue {\n client: RuntimeClient;\n runtimeUrl: string;\n appId: string;\n}\n\nconst AmodalContext = createContext<AmodalContextValue | null>(null);\n\n/**\n * Provides a RuntimeClient to all child hooks and components.\n */\nexport function AmodalProvider({ runtimeUrl, appId, getToken, children }: AmodalProviderProps) {\n const client = useMemo(\n () => new RuntimeClient({ runtimeUrl, appId, getToken }),\n [runtimeUrl, appId, getToken],\n );\n\n const value = useMemo(\n () => ({ client, runtimeUrl, appId }),\n [client, runtimeUrl, appId],\n );\n\n return <AmodalContext.Provider value={value}>{children}</AmodalContext.Provider>;\n}\n\n/**\n * Access the RuntimeClient and config from the nearest AmodalProvider.\n * Throws if called outside of an AmodalProvider.\n */\nexport function useAmodalContext(): AmodalContextValue {\n const ctx = useContext(AmodalContext);\n if (!ctx) {\n throw new Error('useAmodalContext must be used within an <AmodalProvider>');\n }\n return ctx;\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useReducer, useRef } from 'react';\nimport type {\n ChatState,\n ChatAction,\n ChatMessage,\n AssistantTextMessage,\n ToolCallInfo,\n ContentBlock,\n ConfirmationInfo,\n} from '../types';\nimport { useAmodalContext } from '../provider';\n\nconst initialState: ChatState = {\n messages: [],\n sessionId: null,\n isStreaming: false,\n error: null,\n activeToolCalls: [],\n isHistorical: false,\n usage: {inputTokens: 0, outputTokens: 0},\n};\n\nlet messageCounter = 0;\n\nfunction createMessageId(): string {\n messageCounter++;\n return `msg-${Date.now()}-${String(messageCounter)}`;\n}\n\nexport function chatReducer(state: ChatState, action: ChatAction): ChatState {\n switch (action.type) {\n case 'SEND_MESSAGE': {\n const userMessage: ChatMessage = {\n type: 'user',\n id: createMessageId(),\n text: action.text,\n timestamp: new Date().toISOString(),\n };\n const assistantMessage: AssistantTextMessage = {\n type: 'assistant_text',\n id: createMessageId(),\n text: '',\n toolCalls: [],\n confirmations: [],\n skillActivations: [],\n kbProposals: [],\n widgets: [],\n contentBlocks: [],\n timestamp: new Date().toISOString(),\n };\n return {\n ...state,\n messages: [...state.messages, userMessage, assistantMessage],\n isStreaming: true,\n error: null,\n activeToolCalls: [],\n };\n }\n case 'STREAM_INIT':\n return { ...state, sessionId: action.sessionId };\n case 'STREAM_TEXT_DELTA': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const blocks = [...last.contentBlocks];\n const lastBlock = blocks[blocks.length - 1];\n if (lastBlock && lastBlock.type === 'text') {\n blocks[blocks.length - 1] = { type: 'text', text: lastBlock.text + action.content };\n } else {\n blocks.push({ type: 'text', text: action.content });\n }\n msgs[msgs.length - 1] = { ...last, text: last.text + action.content, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_TOOL_CALL_START': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n const toolCall: ToolCallInfo = {\n toolId: action.toolId,\n toolName: action.toolName,\n parameters: action.parameters,\n status: 'running',\n };\n if (last && last.type === 'assistant_text') {\n const updatedToolCalls = [...last.toolCalls, toolCall];\n const blocks = [...last.contentBlocks];\n const lastBlock = blocks[blocks.length - 1];\n if (lastBlock && lastBlock.type === 'tool_calls') {\n blocks[blocks.length - 1] = { type: 'tool_calls', calls: [...lastBlock.calls, toolCall] };\n } else {\n blocks.push({ type: 'tool_calls', calls: [toolCall] });\n }\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedToolCalls, contentBlocks: blocks };\n }\n return {\n ...state,\n messages: msgs,\n activeToolCalls: [...state.activeToolCalls, toolCall],\n };\n }\n case 'STREAM_TOOL_CALL_RESULT': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const updateCall = (tc: ToolCallInfo): ToolCallInfo =>\n tc.toolId === action.toolId\n ? {\n ...tc,\n status: action.status,\n result: action.result,\n duration_ms: action.duration_ms,\n error: action.error,\n }\n : tc;\n const updatedCalls = last.toolCalls.map(updateCall);\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(updateCall) }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedCalls, contentBlocks: blocks };\n }\n const activeToolCalls = state.activeToolCalls.filter(\n (tc) => tc.toolId !== action.toolId,\n );\n return { ...state, messages: msgs, activeToolCalls };\n }\n case 'STREAM_SUBAGENT_EVENT': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const appendEvent = (tc: ToolCallInfo): ToolCallInfo =>\n tc.toolId === action.parentToolId\n ? { ...tc, subagentEvents: [...(tc.subagentEvents ?? []), action.event] }\n : tc;\n const updatedCalls = last.toolCalls.map(appendEvent);\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(appendEvent) }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedCalls, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_WIDGET': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const block: ContentBlock = {\n type: 'widget',\n widgetType: action.widgetType,\n data: action.data,\n };\n msgs[msgs.length - 1] = {\n ...last,\n contentBlocks: [...last.contentBlocks, block],\n };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_CONFIRMATION_REQUIRED': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const block: ContentBlock = {\n type: 'confirmation',\n confirmation: action.confirmation,\n };\n msgs[msgs.length - 1] = {\n ...last,\n confirmations: [...last.confirmations, action.confirmation],\n contentBlocks: [...last.contentBlocks, block],\n };\n }\n return { ...state, messages: msgs };\n }\n case 'CONFIRMATION_RESPONDED': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const updatedConfirmations = last.confirmations.map((c) =>\n c.correlationId === action.correlationId\n ? { ...c, status: (action.approved ? 'approved' : 'denied') as ConfirmationInfo['status'] }\n : c,\n );\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'confirmation' && block.confirmation.correlationId === action.correlationId\n ? { ...block, confirmation: { ...block.confirmation, status: (action.approved ? 'approved' : 'denied') as ConfirmationInfo['status'] } }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, confirmations: updatedConfirmations, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_ERROR':\n return { ...state, isStreaming: false, error: action.message, activeToolCalls: [] };\n case 'STREAM_DONE': {\n const doneMessages = [...state.messages];\n const lastMsg = doneMessages[doneMessages.length - 1];\n if (lastMsg && lastMsg.type === 'assistant_text') {\n const stopRunning = (tc: ToolCallInfo): ToolCallInfo =>\n tc.status === 'running' ? { ...tc, status: 'error', error: 'Stopped' } : tc;\n const stoppedCalls = lastMsg.toolCalls.map(stopRunning);\n const stoppedBlocks = lastMsg.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(stopRunning) }\n : block,\n );\n doneMessages[doneMessages.length - 1] = { ...lastMsg, toolCalls: stoppedCalls, contentBlocks: stoppedBlocks };\n }\n const newUsage = action.usage\n ? {inputTokens: state.usage.inputTokens + action.usage.inputTokens, outputTokens: state.usage.outputTokens + action.usage.outputTokens}\n : state.usage;\n return { ...state, messages: doneMessages, isStreaming: false, activeToolCalls: [], usage: newUsage };\n }\n case 'RESET':\n return { ...initialState };\n default:\n return state;\n }\n}\n\nexport interface UseAmodalChatOptions {\n /** Pre-seed session ID for resuming a previous session. */\n initialSessionId?: string | null;\n /** Additional context sent with each chat message. */\n context?: Record<string, unknown>;\n /** Called when the SSE stream ends. */\n onStreamEnd?: () => void;\n /** Called when a session ID is received from the server. */\n onSessionCreated?: (sessionId: string) => void;\n /** Called on each tool call result. */\n onToolCall?: (call: ToolCallInfo) => void;\n /** Called when a confirmation is required. */\n onConfirmation?: (confirmation: ConfirmationInfo) => void;\n}\n\nexport interface UseAmodalChatReturn {\n messages: ChatMessage[];\n send: (text: string) => void;\n stop: () => void;\n isStreaming: boolean;\n activeToolCalls: ToolCallInfo[];\n sessionId: string | null;\n error: string | null;\n usage: {inputTokens: number; outputTokens: number};\n reset: () => void;\n respondToConfirmation: (correlationId: string, approved: boolean) => void;\n}\n\nexport function useAmodalChat(options?: UseAmodalChatOptions): UseAmodalChatReturn {\n const { client } = useAmodalContext();\n const [state, dispatch] = useReducer(chatReducer, initialState);\n const sessionIdRef = useRef<string | null>(options?.initialSessionId ?? null);\n const abortControllerRef = useRef<AbortController | null>(null);\n const callbacksRef = useRef(options);\n callbacksRef.current = options;\n\n sessionIdRef.current = state.sessionId ?? sessionIdRef.current;\n\n const send = useCallback(\n (text: string) => {\n if (state.isStreaming) return;\n\n dispatch({ type: 'SEND_MESSAGE', text });\n\n const controller = new AbortController();\n abortControllerRef.current = controller;\n\n const runStream = async () => {\n let receivedDone = false;\n try {\n const stream = client.chatStream(text, {\n sessionId: sessionIdRef.current ?? undefined,\n context: callbacksRef.current?.context,\n signal: controller.signal,\n });\n\n for await (const event of stream) {\n switch (event.type) {\n case 'init':\n dispatch({ type: 'STREAM_INIT', sessionId: event.session_id });\n callbacksRef.current?.onSessionCreated?.(event.session_id);\n break;\n case 'text_delta':\n dispatch({ type: 'STREAM_TEXT_DELTA', content: event.content });\n break;\n case 'tool_call_start':\n dispatch({\n type: 'STREAM_TOOL_CALL_START',\n toolId: event.tool_id,\n toolName: event.tool_name,\n parameters: event.parameters,\n });\n break;\n case 'tool_call_result':\n dispatch({\n type: 'STREAM_TOOL_CALL_RESULT',\n toolId: event.tool_id,\n status: event.status,\n result: event.result,\n duration_ms: event.duration_ms,\n error: event.error,\n });\n callbacksRef.current?.onToolCall?.({\n toolId: event.tool_id,\n toolName: '',\n parameters: {},\n status: event.status,\n result: event.result,\n duration_ms: event.duration_ms,\n error: event.error,\n });\n break;\n case 'subagent_event':\n dispatch({\n type: 'STREAM_SUBAGENT_EVENT',\n parentToolId: event.parent_tool_id,\n event: {\n agentName: event.agent_name,\n eventType: event.event_type,\n toolName: event.tool_name,\n toolArgs: event.tool_args,\n result: event.result,\n text: event.text,\n error: event.error,\n timestamp: event.timestamp,\n },\n });\n break;\n case 'widget':\n dispatch({\n type: 'STREAM_WIDGET',\n widgetType: event.widget_type,\n data: event.data,\n });\n break;\n case 'confirmation_required': {\n const confirmation: ConfirmationInfo = {\n endpoint: event.endpoint,\n method: event.method,\n reason: event.reason,\n escalated: event.escalated,\n params: event.params,\n connectionName: event.connection_name,\n correlationId: event.correlation_id,\n status: 'pending',\n };\n dispatch({ type: 'STREAM_CONFIRMATION_REQUIRED', confirmation });\n callbacksRef.current?.onConfirmation?.(confirmation);\n break;\n }\n case 'error':\n dispatch({ type: 'STREAM_ERROR', message: event.message });\n break;\n case 'done':\n receivedDone = true;\n dispatch({\n type: 'STREAM_DONE',\n usage: event.usage ? {inputTokens: event.usage.input_tokens, outputTokens: event.usage.output_tokens} : undefined,\n });\n callbacksRef.current?.onStreamEnd?.();\n break;\n default:\n break;\n }\n }\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n dispatch({\n type: 'STREAM_ERROR',\n message: err instanceof Error ? err.message : 'Unknown error',\n });\n }\n } finally {\n abortControllerRef.current = null;\n if (!receivedDone && !controller.signal.aborted) {\n dispatch({ type: 'STREAM_DONE' });\n callbacksRef.current?.onStreamEnd?.();\n }\n }\n };\n\n void runStream();\n },\n [client, state.isStreaming],\n );\n\n const stop = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n dispatch({ type: 'STREAM_DONE' });\n }, []);\n\n const reset = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n dispatch({ type: 'RESET' });\n }, []);\n\n const respondToConfirmation = useCallback(\n (correlationId: string, approved: boolean) => {\n dispatch({ type: 'CONFIRMATION_RESPONDED', correlationId, approved });\n\n // Send approval/denial as a follow-up chat message\n const responseText = approved\n ? `I approve the action (correlation: ${correlationId})`\n : `I deny the action (correlation: ${correlationId})`;\n\n // Queue the response after the current stream ends\n if (!state.isStreaming) {\n send(responseText);\n }\n },\n [send, state.isStreaming],\n );\n\n // Abort on unmount\n useEffect(\n () => () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n },\n [],\n );\n\n return {\n messages: state.messages,\n send,\n stop,\n isStreaming: state.isStreaming,\n activeToolCalls: state.activeToolCalls,\n sessionId: state.sessionId,\n error: state.error,\n usage: state.usage,\n reset,\n respondToConfirmation,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport type { ConfirmationInfo } from '../types';\n\nexport interface ConfirmCardProps {\n confirmation: ConfirmationInfo;\n onApprove: () => void;\n onDeny: () => void;\n}\n\n/**\n * Simple confirmation card: shows endpoint + method + reason, approve/deny buttons.\n */\nexport function ConfirmCard({ confirmation, onApprove, onDeny }: ConfirmCardProps) {\n const isPending = confirmation.status === 'pending';\n\n return (\n <div className=\"amodal-confirm-card\" data-testid=\"confirm-card\">\n <div className=\"amodal-confirm-card__header\">\n <span className=\"amodal-confirm-card__method\">{confirmation.method}</span>\n <span className=\"amodal-confirm-card__endpoint\">{confirmation.endpoint}</span>\n </div>\n <p className=\"amodal-confirm-card__reason\">{confirmation.reason}</p>\n {isPending ? (\n <div className=\"amodal-confirm-card__actions\">\n <button\n className=\"amodal-confirm-card__btn amodal-confirm-card__btn--approve\"\n onClick={onApprove}\n data-testid=\"confirm-approve\"\n >\n Approve\n </button>\n <button\n className=\"amodal-confirm-card__btn amodal-confirm-card__btn--deny\"\n onClick={onDeny}\n data-testid=\"confirm-deny\"\n >\n Deny\n </button>\n </div>\n ) : (\n <div className=\"amodal-confirm-card__status\" data-testid=\"confirm-status\">\n {confirmation.status === 'approved' ? 'Approved' : 'Denied'}\n </div>\n )}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport type { ConfirmationInfo } from '../types';\n\nexport interface ReviewCardProps {\n confirmation: ConfirmationInfo;\n onApprove: () => void;\n onDeny: () => void;\n}\n\n/**\n * Structured review card: all params, reason, escalation badge, approve/deny.\n */\nexport function ReviewCard({ confirmation, onApprove, onDeny }: ReviewCardProps) {\n const isPending = confirmation.status === 'pending';\n\n return (\n <div className=\"amodal-review-card\" data-testid=\"review-card\">\n <div className=\"amodal-review-card__header\">\n <span className=\"amodal-review-card__method\">{confirmation.method}</span>\n <span className=\"amodal-review-card__endpoint\">{confirmation.endpoint}</span>\n {confirmation.escalated && (\n <span className=\"amodal-review-card__badge\" data-testid=\"escalation-badge\">\n Escalated\n </span>\n )}\n </div>\n {confirmation.connectionName && (\n <div className=\"amodal-review-card__connection\">\n Connection: {confirmation.connectionName}\n </div>\n )}\n <p className=\"amodal-review-card__reason\">{confirmation.reason}</p>\n {confirmation.params && Object.keys(confirmation.params).length > 0 && (\n <div className=\"amodal-review-card__params\" data-testid=\"review-params\">\n <div className=\"amodal-review-card__params-title\">Parameters</div>\n <pre className=\"amodal-review-card__params-body\">\n {JSON.stringify(confirmation.params, null, 2)}\n </pre>\n </div>\n )}\n {isPending ? (\n <div className=\"amodal-review-card__actions\">\n <button\n className=\"amodal-review-card__btn amodal-review-card__btn--approve\"\n onClick={onApprove}\n data-testid=\"review-approve\"\n >\n Approve\n </button>\n <button\n className=\"amodal-review-card__btn amodal-review-card__btn--deny\"\n onClick={onDeny}\n data-testid=\"review-deny\"\n >\n Deny\n </button>\n </div>\n ) : (\n <div className=\"amodal-review-card__status\" data-testid=\"review-status\">\n {confirmation.status === 'approved' ? 'Approved' : 'Denied'}\n </div>\n )}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useRef, useState } from 'react';\nimport type { FormEvent } from 'react';\nimport type { ConfirmationInfo, ToolCallInfo } from './types';\nimport { useAmodalChat } from './hooks/useAmodalChat';\nimport type { UseAmodalChatOptions } from './hooks/useAmodalChat';\nimport { ConfirmCard } from './components/ConfirmCard';\nimport { ReviewCard } from './components/ReviewCard';\n\nexport interface AmodalChatProps extends UseAmodalChatOptions {\n /** Placeholder text for the input bar. */\n placeholder?: string;\n /** Custom renderer for text content blocks. */\n renderText?: (text: string) => React.ReactNode;\n /** Custom renderer for tool call blocks. */\n renderToolCall?: (call: ToolCallInfo) => React.ReactNode;\n /** Custom renderer for confirmation blocks. */\n renderConfirmation?: (confirmation: ConfirmationInfo, onApprove: () => void, onDeny: () => void) => React.ReactNode;\n /** CSS class name for the root element. */\n className?: string;\n}\n\n/**\n * Full chat component — message list, input bar, renders confirmations inline.\n */\nexport function AmodalChat({\n placeholder = 'Type a message...',\n renderText,\n renderToolCall,\n renderConfirmation,\n className,\n ...hookOptions\n}: AmodalChatProps) {\n const { messages, send, isStreaming, respondToConfirmation } = useAmodalChat(hookOptions);\n const [input, setInput] = useState('');\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n const handleSubmit = useCallback(\n (e: FormEvent) => {\n e.preventDefault();\n const trimmed = input.trim();\n if (trimmed.length === 0 || isStreaming) return;\n setInput('');\n send(trimmed);\n },\n [input, isStreaming, send],\n );\n\n const rootClass = ['amodal-chat', className].filter(Boolean).join(' ');\n\n return (\n <div className={rootClass} data-testid=\"amodal-chat\">\n <div className=\"amodal-chat__messages\" data-testid=\"message-list\">\n {messages.map((msg) => {\n switch (msg.type) {\n case 'user':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--user\" data-testid=\"user-message\">\n {msg.text}\n </div>\n );\n case 'assistant_text':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--assistant\" data-testid=\"assistant-message\">\n {msg.contentBlocks.map((block, i) => {\n switch (block.type) {\n case 'text':\n return (\n <div key={`text-${String(i)}`} className=\"amodal-chat__text\">\n {renderText ? renderText(block.text) : block.text}\n </div>\n );\n case 'tool_calls':\n return (\n <div key={`tools-${String(i)}`} className=\"amodal-chat__tool-calls\">\n {block.calls.map((call) =>\n renderToolCall ? (\n <div key={call.toolId}>{renderToolCall(call)}</div>\n ) : (\n <div key={call.toolId} className=\"amodal-chat__tool-call\" data-testid=\"tool-call\">\n <span className=\"amodal-chat__tool-name\">{call.toolName}</span>\n <span className=\"amodal-chat__tool-status\">{call.status}</span>\n </div>\n ),\n )}\n </div>\n );\n case 'confirmation': {\n const conf = block.confirmation;\n const handleApprove = () => {\n if (conf.correlationId) {\n respondToConfirmation(conf.correlationId, true);\n }\n };\n const handleDeny = () => {\n if (conf.correlationId) {\n respondToConfirmation(conf.correlationId, false);\n }\n };\n if (renderConfirmation) {\n return <div key={`conf-${String(i)}`}>{renderConfirmation(conf, handleApprove, handleDeny)}</div>;\n }\n if (conf.escalated || (conf.params && Object.keys(conf.params).length > 0)) {\n return <ReviewCard key={`conf-${String(i)}`} confirmation={conf} onApprove={handleApprove} onDeny={handleDeny} />;\n }\n return <ConfirmCard key={`conf-${String(i)}`} confirmation={conf} onApprove={handleApprove} onDeny={handleDeny} />;\n }\n case 'widget':\n return (\n <div key={`widget-${String(i)}`} className=\"amodal-chat__widget\" data-testid=\"widget\">\n {block.widgetType}\n </div>\n );\n default:\n return null;\n }\n })}\n </div>\n );\n case 'error':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--error\" data-testid=\"error-message\">\n {msg.message}\n </div>\n );\n default:\n return null;\n }\n })}\n <div ref={messagesEndRef} />\n </div>\n <form className=\"amodal-chat__input-bar\" onSubmit={handleSubmit} data-testid=\"input-bar\">\n <input\n className=\"amodal-chat__input\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n placeholder={placeholder}\n disabled={isStreaming}\n data-testid=\"chat-input\"\n />\n <button\n className=\"amodal-chat__send\"\n type=\"submit\"\n disabled={isStreaming || input.trim().length === 0}\n data-testid=\"send-button\"\n >\n Send\n </button>\n </form>\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useState } from 'react';\nimport type { ConfirmationInfo } from '../types';\nimport { useAmodalChat } from '../hooks/useAmodalChat';\nimport { ConfirmCard } from './ConfirmCard';\nimport { ReviewCard } from './ReviewCard';\n\nexport interface AmodalActionProps {\n /** The prompt to send when the action is triggered. */\n prompt: string;\n /** Label for the trigger button. */\n label?: string;\n /** Additional context sent with the chat message. */\n context?: Record<string, unknown>;\n /** Called when the action completes. */\n onComplete?: (text: string) => void;\n /** Called on error. */\n onError?: (error: string) => void;\n}\n\n/**\n * One-shot action: triggers a chat stream with a prompt, shows confirmation inline.\n */\nexport function AmodalAction({ prompt, label, context, onComplete, onError }: AmodalActionProps) {\n const [triggered, setTriggered] = useState(false);\n\n const { messages, send, isStreaming, respondToConfirmation } = useAmodalChat({\n context,\n onStreamEnd: () => {\n const lastMsg = messages[messages.length - 1];\n if (lastMsg && lastMsg.type === 'assistant_text') {\n onComplete?.(lastMsg.text);\n } else if (lastMsg && lastMsg.type === 'error') {\n onError?.(lastMsg.message);\n }\n },\n });\n\n const trigger = useCallback(() => {\n if (triggered || isStreaming) return;\n setTriggered(true);\n send(prompt);\n }, [triggered, isStreaming, send, prompt]);\n\n const lastAssistant = [...messages].reverse().find((m) => m.type === 'assistant_text');\n const pendingConfirmations: ConfirmationInfo[] =\n lastAssistant && lastAssistant.type === 'assistant_text'\n ? lastAssistant.confirmations.filter((c) => c.status === 'pending')\n : [];\n\n const renderConfirmation = (confirmation: ConfirmationInfo, index: number) => {\n const handleApprove = () => {\n if (confirmation.correlationId) {\n respondToConfirmation(confirmation.correlationId, true);\n }\n };\n const handleDeny = () => {\n if (confirmation.correlationId) {\n respondToConfirmation(confirmation.correlationId, false);\n }\n };\n\n if (confirmation.escalated || (confirmation.params && Object.keys(confirmation.params).length > 0)) {\n return (\n <ReviewCard\n key={confirmation.correlationId ?? String(index)}\n confirmation={confirmation}\n onApprove={handleApprove}\n onDeny={handleDeny}\n />\n );\n }\n\n return (\n <ConfirmCard\n key={confirmation.correlationId ?? String(index)}\n confirmation={confirmation}\n onApprove={handleApprove}\n onDeny={handleDeny}\n />\n );\n };\n\n if (!triggered) {\n return (\n <button\n className=\"amodal-action__trigger\"\n onClick={trigger}\n data-testid=\"action-trigger\"\n >\n {label ?? 'Run'}\n </button>\n );\n }\n\n return (\n <div className=\"amodal-action\" data-testid=\"action-container\">\n {isStreaming && (\n <div className=\"amodal-action__loading\" data-testid=\"action-loading\">\n Processing...\n </div>\n )}\n {lastAssistant && lastAssistant.type === 'assistant_text' && lastAssistant.text && (\n <div className=\"amodal-action__result\" data-testid=\"action-result\">\n {lastAssistant.text}\n </div>\n )}\n {pendingConfirmations.map(renderConfirmation)}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { BriefResult, ToolCallInfo } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalBriefOptions {\n /** The prompt to send for the brief. */\n prompt: string;\n /** Additional context sent with the request. */\n context?: Record<string, unknown>;\n /** If true, the brief is fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport interface UseAmodalBriefReturn {\n brief: BriefResult | null;\n isLoading: boolean;\n error: string | null;\n refresh: () => void;\n}\n\n/**\n * Sends a chat with a brief prompt, collects the full response.\n */\nexport function useAmodalBrief(options: UseAmodalBriefOptions): UseAmodalBriefReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [brief, setBrief] = useState<BriefResult | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchBrief = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setIsLoading(true);\n setError(null);\n\n try {\n let text = '';\n const toolCalls: ToolCallInfo[] = [];\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'tool_call_start':\n toolCalls.push({\n toolId: event.tool_id,\n toolName: event.tool_name,\n parameters: event.parameters,\n status: 'running',\n });\n break;\n case 'tool_call_result': {\n const tc = toolCalls.find((t) => t.toolId === event.tool_id);\n if (tc) {\n tc.status = event.status;\n tc.result = event.result;\n tc.duration_ms = event.duration_ms;\n tc.error = event.error;\n }\n break;\n }\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n\n setBrief({ text, toolCalls });\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refresh = useCallback(() => {\n void fetchBrief();\n }, [fetchBrief]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchBrief();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchBrief]);\n\n return { brief, isLoading, error, refresh };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { InsightResult } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalInsightOptions {\n /** The insight prompt to send. */\n prompt: string;\n /** Additional context for the insight. */\n context?: Record<string, unknown>;\n /** If true, fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport interface UseAmodalInsightReturn {\n status: InsightResult['status'];\n summary: string;\n details: string;\n isLoading: boolean;\n error: string | null;\n refresh: () => void;\n}\n\n/**\n * Sends a chat with an insight prompt, collects a structured response.\n * Splits the response at the first double newline into summary and details.\n */\nexport function useAmodalInsight(options: UseAmodalInsightOptions): UseAmodalInsightReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [status, setStatus] = useState<InsightResult['status']>('idle');\n const [summary, setSummary] = useState('');\n const [details, setDetails] = useState('');\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchInsight = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setStatus('loading');\n setError(null);\n setSummary('');\n setDetails('');\n\n try {\n let text = '';\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n setStatus('error');\n return;\n default:\n break;\n }\n }\n\n // Split at first double newline\n const splitIndex = text.indexOf('\\n\\n');\n if (splitIndex >= 0) {\n setSummary(text.slice(0, splitIndex).trim());\n setDetails(text.slice(splitIndex + 2).trim());\n } else {\n setSummary(text.trim());\n }\n setStatus('done');\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n setStatus('error');\n }\n } finally {\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refresh = useCallback(() => {\n void fetchInsight();\n }, [fetchInsight]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchInsight();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchInsight]);\n\n return { status, summary, details, isLoading: status === 'loading', error, refresh };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { SSEEvent, TaskStatusValue } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalTaskOptions {\n /** The task ID to stream. */\n taskId: string;\n /** If true, starts streaming automatically on mount. Defaults to true. */\n autoStream?: boolean;\n}\n\nexport interface UseAmodalTaskReturn {\n status: TaskStatusValue | 'idle';\n progress: string;\n result: string;\n events: SSEEvent[];\n error: string | null;\n start: () => void;\n stop: () => void;\n}\n\n/**\n * Streams GET /task/:id/stream events.\n */\nexport function useAmodalTask(options: UseAmodalTaskOptions): UseAmodalTaskReturn {\n const { taskId, autoStream = true } = options;\n const { client } = useAmodalContext();\n const [status, setStatus] = useState<TaskStatusValue | 'idle'>('idle');\n const [progress, setProgress] = useState('');\n const [result, setResult] = useState('');\n const [events, setEvents] = useState<SSEEvent[]>([]);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const startedRef = useRef(false);\n\n const start = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setStatus('running');\n setError(null);\n setEvents([]);\n setResult('');\n setProgress('');\n\n try {\n let text = '';\n\n for await (const event of client.streamTask(taskId, controller.signal)) {\n setEvents((prev) => [...prev, event]);\n\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n setResult(text);\n break;\n case 'tool_call_start':\n setProgress(`Running ${event.tool_name}...`);\n break;\n case 'tool_call_result':\n setProgress('');\n break;\n case 'error':\n setError(event.message);\n setStatus('error');\n return;\n case 'done':\n setStatus('completed');\n return;\n default:\n break;\n }\n }\n\n // Stream ended without done event\n if (status === 'running') {\n setStatus('completed');\n }\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n setStatus('error');\n }\n } finally {\n abortRef.current = null;\n }\n }, [client, taskId, status]);\n\n const stop = useCallback(() => {\n if (abortRef.current) {\n abortRef.current.abort();\n abortRef.current = null;\n }\n }, []);\n\n const startRef = useRef(start);\n startRef.current = start;\n\n useEffect(() => {\n if (autoStream && !startedRef.current) {\n startedRef.current = true;\n void startRef.current();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoStream]);\n\n return {\n status,\n progress,\n result,\n events,\n error,\n start: () => void start(),\n stop,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { QueryResult } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalQueryOptions {\n /** The query prompt. */\n prompt: string;\n /** Additional context. */\n context?: Record<string, unknown>;\n /** If true, fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport type UseAmodalQueryReturn = QueryResult<string> & {\n refetch: () => void;\n};\n\n/**\n * Non-streaming query. Collects the full response text.\n */\nexport function useAmodalQuery(options: UseAmodalQueryOptions): UseAmodalQueryReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [data, setData] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchQuery = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setIsLoading(true);\n setError(null);\n\n try {\n let text = '';\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n\n setData(text);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refetch = useCallback(() => {\n void fetchQuery();\n }, [fetchQuery]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchQuery();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchQuery]);\n\n return { data, isLoading, error, refetch };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { StoreDocument, StoreDocumentMeta } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseStoreOptions {\n /** Document key to fetch. */\n key: string;\n /** Auto-refresh interval in milliseconds. Set to 0 to disable. Default: 30000. */\n refreshInterval?: number;\n}\n\nexport interface UseStoreReturn {\n /** Document payload (the entity data). */\n data: Record<string, unknown> | null;\n /** Document metadata (computedAt, ttl, stale, trace, etc.). */\n meta: StoreDocumentMeta | null;\n /** Full document (key, version, payload, meta). */\n document: StoreDocument | null;\n /** Version history (most recent first). */\n history: StoreDocument[];\n /** Whether the initial fetch is in progress. */\n isLoading: boolean;\n /** Error message if the fetch failed. */\n error: string | null;\n /** Manually trigger a refetch. */\n refetch: () => void;\n}\n\n/**\n * Fetch a single document from a store by key.\n *\n * @example\n * ```tsx\n * const { data, meta, isLoading } = useStore('deal-health', { key: `deal:${dealId}` });\n * if (data) {\n * console.log(data.score, data.severity);\n * }\n * ```\n */\nexport function useStore(storeName: string, options: UseStoreOptions): UseStoreReturn {\n const { key, refreshInterval = 30000 } = options;\n const { client } = useAmodalContext();\n const [document, setDocument] = useState<StoreDocument | null>(null);\n const [history, setHistory] = useState<StoreDocument[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n const fetchDocument = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n try {\n const result = await client.getStoreDocument(storeName, key, controller.signal);\n setDocument(result.document);\n setHistory(result.history);\n setError(null);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Failed to fetch document');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, storeName, key]);\n\n const refetch = useCallback(() => {\n void fetchDocument();\n }, [fetchDocument]);\n\n // Initial fetch\n useEffect(() => {\n setIsLoading(true);\n void fetchDocument();\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [fetchDocument]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const timer = setInterval(() => {\n void fetchDocument();\n }, refreshInterval);\n\n return () => clearInterval(timer);\n }, [fetchDocument, refreshInterval]);\n\n return {\n data: document?.payload ?? null,\n meta: document?.meta ?? null,\n document,\n history,\n isLoading,\n error,\n refetch,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { StoreDocument } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseStoreListOptions {\n /** Filter by field values (equality match). */\n filter?: Record<string, unknown>;\n /** Sort field. Prefix with \"-\" for descending (e.g., \"-severity\"). */\n sort?: string;\n /** Max documents to return. Default: 20. */\n limit?: number;\n /** Auto-refresh interval in milliseconds. Set to 0 to disable. Default: 30000. */\n refreshInterval?: number;\n}\n\nexport interface UseStoreListReturn {\n /** Array of document payloads. */\n data: Array<Record<string, unknown>>;\n /** Full documents (with key, version, meta). */\n documents: StoreDocument[];\n /** Total count of matching documents. */\n total: number;\n /** Whether more documents exist beyond the current page. */\n hasMore: boolean;\n /** Whether the initial fetch is in progress. */\n isLoading: boolean;\n /** Error message if the fetch failed. */\n error: string | null;\n /** Manually trigger a refetch. */\n refetch: () => void;\n}\n\n/**\n * Fetch a list of documents from a store with optional filtering and sorting.\n *\n * @example\n * ```tsx\n * const { data, total } = useStoreList('active-alerts', {\n * filter: { severity: 'P1' },\n * sort: '-computedAt',\n * limit: 10,\n * });\n * ```\n */\nexport function useStoreList(storeName: string, options: UseStoreListOptions = {}): UseStoreListReturn {\n const { filter, sort, limit = 20, refreshInterval = 30000 } = options;\n const { client } = useAmodalContext();\n const [documents, setDocuments] = useState<StoreDocument[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n // Stable stringified deps for filter object\n const filterKey = filter ? JSON.stringify(filter) : '';\n\n const fetchList = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n try {\n const result = await client.getStoreDocuments(storeName, {\n filter: filterKey ? JSON.parse(filterKey) : undefined,\n sort,\n limit,\n signal: controller.signal,\n });\n setDocuments(result.documents);\n setTotal(result.total);\n setHasMore(result.hasMore);\n setError(null);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Failed to fetch store list');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, storeName, filterKey, sort, limit]);\n\n const refetch = useCallback(() => {\n void fetchList();\n }, [fetchList]);\n\n // Initial fetch\n useEffect(() => {\n setIsLoading(true);\n void fetchList();\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [fetchList]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const timer = setInterval(() => {\n void fetchList();\n }, refreshInterval);\n\n return () => clearInterval(timer);\n }, [fetchList, refreshInterval]);\n\n return {\n data: documents.map((d) => d.payload),\n documents,\n total,\n hasMore,\n isLoading,\n error,\n refetch,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useRef, useState } from 'react';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseSkillActionOptions {\n /** Store names this skill writes to (for context in the prompt). */\n stores?: string[];\n /** Whether to include a confirmation hint in the prompt. */\n confirm?: boolean;\n}\n\nexport interface UseSkillActionReturn {\n /** Execute the skill with the given parameters. */\n execute: (params?: Record<string, unknown>) => void;\n /** Whether the skill is currently running. */\n loading: boolean;\n /** The text result from the skill execution. */\n result: string | null;\n /** Error message if execution failed. */\n error: string | null;\n}\n\n/**\n * Invoke a skill via the chat agent.\n *\n * Under the hood, this sends a structured chat message asking the agent\n * to run the skill, then collects the text response.\n *\n * @example\n * ```tsx\n * const investigate = useSkillAction('deep-investigator', {\n * stores: ['active-alerts', 'incident-correlations'],\n * });\n *\n * <button onClick={() => investigate.execute({ correlationId: '123' })}>\n * Investigate\n * </button>\n * ```\n */\nexport function useSkillAction(\n skillName: string,\n options: UseSkillActionOptions = {},\n): UseSkillActionReturn {\n const { client } = useAmodalContext();\n const [loading, setLoading] = useState(false);\n const [result, setResult] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n const execute = useCallback(\n (params?: Record<string, unknown>) => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setLoading(true);\n setResult(null);\n setError(null);\n\n // Build a structured prompt for the agent\n let prompt = `Run skill \"${skillName}\"`;\n if (params && Object.keys(params).length > 0) {\n prompt += ` with parameters: ${JSON.stringify(params)}`;\n }\n if (options.stores && options.stores.length > 0) {\n prompt += `. Write results to stores: ${options.stores.join(', ')}`;\n }\n if (options.confirm) {\n prompt += '. Confirm before writing.';\n }\n\n void (async () => {\n try {\n let text = '';\n for await (const event of client.chatStream(prompt, { signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n setResult(text);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Skill execution failed');\n }\n } finally {\n setLoading(false);\n abortRef.current = null;\n }\n })();\n },\n [client, skillName, options.stores, options.confirm],\n );\n\n return { execute, loading, result, error };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { createContext, useContext, useCallback } from 'react';\n\n/**\n * Navigation function type.\n * In the runtime app, this is backed by React Router's navigate.\n * In standalone/embedded usage, the host app provides the implementation.\n */\nexport type NavigateFn = (pageName: string, params?: Record<string, string>) => void;\n\n/**\n * Context for providing a navigate function.\n * The runtime app sets this with React Router's navigate.\n * Standalone users can provide their own via NavigateProvider.\n */\nexport const NavigateContext = createContext<NavigateFn | null>(null);\n\n/**\n * Navigate between pages in the runtime app.\n *\n * In the runtime app, navigates to the page route.\n * In standalone/embedded usage, calls the host-provided navigate function.\n * If no NavigateProvider is present, returns a no-op.\n *\n * @example\n * ```tsx\n * const navigate = useNavigate();\n * navigate('incident-detail', { correlationId: '123' });\n * ```\n */\nexport function useNavigate(): NavigateFn {\n const navigateFn = useContext(NavigateContext);\n\n const noopNavigate = useCallback((_pageName: string, _params?: Record<string, string>) => {\n // No-op when no NavigateProvider is present\n }, []);\n\n return navigateFn ?? noopNavigate;\n}\n"],"names":["AmodalContext","createContext","AmodalProvider","runtimeUrl","appId","getToken","children","client","useMemo","RuntimeClient","value","jsx","useAmodalContext","ctx","useContext","initialState","messageCounter","createMessageId","chatReducer","state","action","userMessage","assistantMessage","msgs","last","blocks","lastBlock","toolCall","updatedToolCalls","updateCall","tc","updatedCalls","block","activeToolCalls","appendEvent","updatedConfirmations","doneMessages","lastMsg","stopRunning","stoppedCalls","stoppedBlocks","newUsage","useAmodalChat","options","dispatch","useReducer","sessionIdRef","useRef","abortControllerRef","callbacksRef","send","useCallback","text","controller","receivedDone","stream","_a","event","_c","_b","_e","_d","confirmation","_g","_f","_i","_h","err","_k","_j","stop","reset","respondToConfirmation","correlationId","approved","responseText","useEffect","ConfirmCard","onApprove","onDeny","isPending","jsxs","ReviewCard","AmodalChat","placeholder","renderText","renderToolCall","renderConfirmation","className","hookOptions","messages","isStreaming","input","setInput","useState","messagesEndRef","handleSubmit","e","trimmed","rootClass","msg","i","call","conf","handleApprove","handleDeny","AmodalAction","prompt","label","context","onComplete","onError","triggered","setTriggered","trigger","lastAssistant","m","pendingConfirmations","c","index","useAmodalBrief","autoFetch","brief","setBrief","isLoading","setIsLoading","error","setError","abortRef","mountedRef","fetchBrief","toolCalls","t","refresh","useAmodalInsight","status","setStatus","summary","setSummary","details","setDetails","fetchInsight","splitIndex","useAmodalTask","taskId","autoStream","progress","setProgress","result","setResult","events","setEvents","startedRef","start","prev","startRef","useAmodalQuery","data","setData","fetchQuery","refetch","useStore","storeName","key","refreshInterval","document","setDocument","history","setHistory","fetchDocument","timer","useStoreList","filter","sort","limit","documents","setDocuments","total","setTotal","hasMore","setHasMore","filterKey","fetchList","d","useSkillAction","skillName","loading","setLoading","params","NavigateContext","useNavigate","navigateFn","noopNavigate","_pageName","_params"],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -432,7 +432,7 @@ export interface StoreDocumentMeta {
432
432
  }
433
433
  export interface StoreDocument {
434
434
  key: string;
435
- tenantId: string;
435
+ appId: string;
436
436
  store: string;
437
437
  version: number;
438
438
  payload: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/widget.js CHANGED
@@ -861,7 +861,7 @@ function Be({ data: s, sendMessage: c }) {
861
861
  async (h) => {
862
862
  h.preventDefault(), d("submitting"), p("");
863
863
  try {
864
- const m = `${window.location.origin}/api/tenants/${t.tenant_id}/secrets`;
864
+ const m = `${window.location.origin}/api/apps/${t.app_id}/secrets`;
865
865
  for (const g of t.fields) {
866
866
  const v = await fetch(m, {
867
867
  method: "POST",
@@ -880,7 +880,7 @@ function Be({ data: s, sendMessage: c }) {
880
880
  d("error"), p(_ instanceof Error ? _.message : "Failed to save credentials");
881
881
  }
882
882
  },
883
- [t.tenant_id, t.connection_name, t.fields, a, c]
883
+ [t.app_id, t.connection_name, t.fields, a, c]
884
884
  );
885
885
  return l === "success" ? /* @__PURE__ */ e("div", { className: "pcw-widget-card pcw-widget-card--credential-input", children: /* @__PURE__ */ n("div", { className: "pcw-credential-input__status pcw-credential-input__status--success", children: [
886
886
  "Credentials for ",