langchain_agentx_stream_ui 0.7.2 → 0.7.6
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/{AskUserQuestionToolBody-C6J742a2.d.ts → AskUserQuestionToolBody-CrQTL9RY.d.ts} +2 -2
- package/dist/{MarkdownBlock-B_wNhCB4.d.ts → MarkdownBlock-Ag7HSqsu.d.ts} +1 -1
- package/dist/{chunk-TSZ6GVSA.js → chunk-AMUGAG7U.js} +295 -21
- package/dist/chunk-AMUGAG7U.js.map +1 -0
- package/dist/{chunk-N2OSBCFN.js → chunk-RWKNI52H.js} +87 -8
- package/dist/chunk-RWKNI52H.js.map +1 -0
- package/dist/{chunk-OV6UUIA3.js → chunk-VYXHVGJU.js} +9 -1
- package/dist/chunk-VYXHVGJU.js.map +1 -0
- package/dist/default.css +98 -0
- package/dist/index.d.ts +16 -11
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/{multi-session-Dzkwt9KF.d.ts → multi-session-9LtrGlsm.d.ts} +43 -7
- package/dist/multi-session.d.ts +4 -4
- package/dist/multi-session.js +3 -3
- package/dist/{nodes-MpVB9C5d.d.ts → nodes-uahIhQwz.d.ts} +22 -2
- package/dist/{sessionViewOptions-DeTrGjRM.d.ts → sessionViewOptions-DaxstMhx.d.ts} +2 -2
- package/dist/tools-presentation.d.ts +3 -3
- package/dist/tools.d.ts +5 -5
- package/dist/tools.js +1 -1
- package/dist/{types-SVtInovH.d.ts → types-BzeE37Ze.d.ts} +1 -1
- package/dist/virtual.d.ts +1 -1
- package/dist/virtual.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-N2OSBCFN.js.map +0 -1
- package/dist/chunk-OV6UUIA3.js.map +0 -1
- package/dist/chunk-TSZ6GVSA.js.map +0 -1
|
@@ -276,12 +276,20 @@ var noopBus = {
|
|
|
276
276
|
if (import.meta.env?.DEV) {
|
|
277
277
|
console.warn("[langchain_agentx_stream_ui] resolvePermission without InteractionBus");
|
|
278
278
|
}
|
|
279
|
+
},
|
|
280
|
+
resolveUserQuestions() {
|
|
281
|
+
if (import.meta.env?.DEV) {
|
|
282
|
+
console.warn("[langchain_agentx_stream_ui] resolveUserQuestions without InteractionBus");
|
|
283
|
+
}
|
|
279
284
|
}
|
|
280
285
|
};
|
|
281
286
|
function createInteractionBus(handlers = {}) {
|
|
282
287
|
return {
|
|
283
288
|
resolvePermission(payload) {
|
|
284
289
|
return handlers.onPermissionResolve?.(payload);
|
|
290
|
+
},
|
|
291
|
+
resolveUserQuestions(payload) {
|
|
292
|
+
return handlers.onResolveUserQuestions?.(payload);
|
|
285
293
|
}
|
|
286
294
|
};
|
|
287
295
|
}
|
|
@@ -383,4 +391,4 @@ export {
|
|
|
383
391
|
useInteractionBus,
|
|
384
392
|
ToolCallShell
|
|
385
393
|
};
|
|
386
|
-
//# sourceMappingURL=chunk-
|
|
394
|
+
//# sourceMappingURL=chunk-VYXHVGJU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/view/tools/ask_user_question/formatAskUserQuestionTitle.ts","../src/view/tools/glob/formatGlobTitle.ts","../src/view/tools/grep/formatGrepTitle.ts","../src/view/tools/read/formatReadTitle.ts","../src/view/tools/skill/formatSkillTitle.ts","../src/view/tools/webfetch/formatWebFetchTitle.ts","../src/view/tools/websearch/formatWebSearchTitle.ts","../src/view/tools/formatToolTitle.ts","../src/view/tools/DefaultToolBody.tsx","../src/view/tools/resolveToolBody.ts","../src/core/interaction/InteractionBus.ts","../src/core/context/InteractionContext.tsx","../src/view/tools/ToolPermissionWait.tsx","../src/view/tools/ToolCallShell.tsx"],"sourcesContent":["/**\n * formatAskUserQuestionTitle.ts — AskUserQuestion 工具标题\n *\n * 对齐参考:CLI widgets/tools/ask_user_question/widget.py format_title\n */\nimport { asDisplayRecord, asInputRecord, numField } from '../displayRecord';\nimport { formatAskUserQuestionsPreview } from '../presentation/askUserHelpers';\nimport { truncatePreview } from '../presentation/textHelpers';\n\nfunction firstQuestion(\n display: Record<string, unknown> | null,\n input: Record<string, unknown>,\n): { header: string; question: string } {\n const items = display?.questions;\n if (Array.isArray(items) && items.length > 0) {\n const first = items[0];\n if (first != null && typeof first === 'object') {\n const row = first as Record<string, unknown>;\n return {\n header: String(row.header ?? '').trim(),\n question: String(row.question ?? '').trim(),\n };\n }\n }\n\n const questions = input.questions;\n if (Array.isArray(questions) && questions.length > 0) {\n const first = questions[0];\n if (first != null && typeof first === 'object') {\n const row = first as Record<string, unknown>;\n return {\n header: String(row.header ?? '').trim(),\n question: String(row.question ?? '').trim(),\n };\n }\n }\n\n return { header: '', question: '' };\n}\n\nexport function formatAskUserQuestionTitle(\n input: unknown,\n display: unknown,\n _summary?: string | null,\n): string {\n const d = asDisplayRecord(display);\n const inp = asInputRecord(input);\n const { header, question } = firstQuestion(d, inp);\n\n if (question) {\n const label = header ? `[${header}] ${question}` : question;\n return truncatePreview(label, 100);\n }\n\n const answered = numField(d ?? {}, 'answered_count');\n if (answered != null) return `Ask user (${answered} answered)`;\n\n return 'Ask user';\n}\n\nexport { formatAskUserQuestionsPreview };\n","/**\n * formatGlobTitle.ts — glob 工具标题\n *\n * 对齐参考:CLI widgets/tools/glob/widget.py format_title\n */\nimport { formatPatternTitle } from '../presentation/searchHelpers';\nimport { asDisplayRecord, asInputRecord, numField, strField } from '../displayRecord';\n\nexport function formatGlobTitle(\n input: unknown,\n display: unknown,\n _summary?: string | null,\n): string {\n const d = asDisplayRecord(display);\n const inp = asInputRecord(input);\n const pattern = strField(d ?? {}, 'pattern') || strField(inp, 'pattern');\n\n if (!pattern) return 'Search';\n\n const path = strField(inp, 'path') || undefined;\n const suffix = formatPatternTitle(pattern, path);\n const numFiles = numField(d ?? {}, 'num_files');\n const countHint = numFiles != null ? ` · ${numFiles} files` : '';\n\n return `Search(${suffix}${countHint})`;\n}\n","/**\n * formatGrepTitle.ts — grep 工具标题\n *\n * 对齐参考:CLI widgets/tools/grep/widget.py format_title\n */\nimport { formatPatternTitle } from '../presentation/searchHelpers';\nimport { asDisplayRecord, asInputRecord, numField, strField } from '../displayRecord';\n\nexport function formatGrepTitle(\n input: unknown,\n display: unknown,\n _summary?: string | null,\n): string {\n const d = asDisplayRecord(display);\n const inp = asInputRecord(input);\n const pattern = strField(d ?? {}, 'pattern') || strField(inp, 'pattern');\n\n if (!pattern) return 'Search';\n\n const path = strField(inp, 'path') || undefined;\n const suffix = formatPatternTitle(pattern, path);\n const numMatches = numField(d ?? {}, 'num_matches');\n const countHint = numMatches != null ? ` · ${numMatches} matches` : '';\n\n return `Search(${suffix}${countHint})`;\n}\n","/**\n * formatReadTitle.ts — Read 工具标题\n *\n * 对齐参考:CLI widgets/tools/read/widget.py format_title\n */\nimport { displayPath } from '../presentation/paths';\nimport { asDisplayRecord, asInputRecord, numField, strField } from '../displayRecord';\n\nconst LINES_RANGE_RE = /lines (\\d+)-(\\d+) of (\\d+)/;\nconst READ_LINES_RE = /Read (\\d+) lines from/;\n\nfunction titleSuffixFromDisplay(display: unknown): string {\n const d = asDisplayRecord(display);\n if (!d) return '';\n\n if (d.type === 'text') {\n const start = numField(d, 'line_start');\n const end = numField(d, 'line_end');\n if (start != null && end != null) {\n return ` · lines ${start}-${end}`;\n }\n }\n\n if (d.type === 'pdf') {\n const ps = numField(d, 'page_start');\n const pe = numField(d, 'page_end');\n if (ps != null && pe != null) {\n return ` · pages ${ps}-${pe}`;\n }\n }\n\n return '';\n}\n\nfunction titleSuffixFromSummary(summary: string, input: unknown): string {\n const matchRange = summary.match(LINES_RANGE_RE);\n if (matchRange) {\n return ` · lines ${matchRange[1]}-${matchRange[2]}`;\n }\n\n const inp = asInputRecord(input);\n const offset = numField(inp, 'offset');\n const limit = numField(inp, 'limit');\n if (offset != null && limit != null) {\n return ` · lines ${offset}-${offset + limit - 1}`;\n }\n\n const matchLines = summary.match(READ_LINES_RE);\n if (matchLines) {\n return ` · ${matchLines[1]} lines`;\n }\n\n return '';\n}\n\nexport function formatReadTitle(input: unknown, display: unknown, summary?: string | null): string {\n const d = asDisplayRecord(display);\n const inp = asInputRecord(input);\n const path = displayPath(\n strField(d ?? {}, 'file_path') ||\n strField(inp, 'file_path') ||\n strField(inp, 'path'),\n );\n\n const suffix =\n titleSuffixFromDisplay(display) ||\n (summary ? titleSuffixFromSummary(summary, input) : '');\n\n if (!path) {\n return suffix ? `Read(${suffix.trim()})` : 'Read';\n }\n\n return `Read(${path}${suffix})`;\n}\n","/**\n * formatSkillTitle.ts — skill 工具标题\n *\n * 对齐参考:CLI widgets/tools/skill/widget.py format_title\n */\nimport { asDisplayRecord, asInputRecord, strField } from '../displayRecord';\n\nexport function formatSkillTitle(\n input: unknown,\n display: unknown,\n _summary?: string | null,\n): string {\n const d = asDisplayRecord(display);\n const inp = asInputRecord(input);\n const name = strField(d ?? {}, 'skill_name') || strField(inp, 'skill_name');\n if (!name) return 'Skill';\n\n if (d?.source === 'commands_DEPRECATED') {\n return `/${name}`;\n }\n return name;\n}\n","/**\n * formatWebFetchTitle.ts — WebFetch 工具标题\n *\n * 对齐参考:CLI widgets/tools/webfetch/widget.py format_title\n */\nimport { asDisplayRecord, asInputRecord, numField, strField } from '../displayRecord';\nimport { truncatePreview } from '../presentation/textHelpers';\n\nexport function formatWebFetchTitle(\n input: unknown,\n display: unknown,\n _summary?: string | null,\n): string {\n const d = asDisplayRecord(display);\n const inp = asInputRecord(input);\n const url = strField(d ?? {}, 'url') || strField(inp, 'url');\n if (!url) return 'Fetch';\n\n const code = numField(d ?? {}, 'http_code');\n const title =\n code != null ? `${url} · HTTP ${code}` : truncatePreview(url, 100);\n return `Fetch(${title})`;\n}\n","/**\n * formatWebSearchTitle.ts — WebSearch 工具标题\n *\n * 对齐参考:CLI widgets/tools/websearch/widget.py format_title\n */\nimport { asDisplayRecord, asInputRecord, numField, strField } from '../displayRecord';\nimport { truncatePreview } from '../presentation/textHelpers';\n\nexport function formatWebSearchTitle(\n input: unknown,\n display: unknown,\n _summary?: string | null,\n): string {\n const d = asDisplayRecord(display);\n const inp = asInputRecord(input);\n const query = strField(d ?? {}, 'query') || strField(inp, 'query');\n if (!query) return 'Web Search';\n\n let queryPart = `\"${truncatePreview(query, 100)}\"`;\n const hits = numField(d ?? {}, 'total_hits');\n if (hits != null) queryPart = `${queryPart} · ${hits} hits`;\n\n return `Web Search(${queryPart})`;\n}\n","/**\n * formatToolTitle.ts — 工具卡片标题格式化\n */\nimport { formatAgentTitle } from './presentation/agentHelpers';\nimport { formatAskUserQuestionTitle } from './ask_user_question/formatAskUserQuestionTitle';\nimport { formatBashTitle } from './presentation/bashHelpers';\nimport { formatEditTitle } from './edit/formatEditTitle';\nimport { formatGlobTitle } from './glob/formatGlobTitle';\nimport { formatGrepTitle } from './grep/formatGrepTitle';\nimport { formatReadTitle } from './read/formatReadTitle';\nimport { formatSkillTitle } from './skill/formatSkillTitle';\nimport { formatWebFetchTitle } from './webfetch/formatWebFetchTitle';\nimport { formatWebSearchTitle } from './websearch/formatWebSearchTitle';\nimport { formatWriteTitle } from './write/formatWriteTitle';\nimport {\n Agent,\n AskUserQuestion,\n Bash,\n Edit,\n Glob,\n Grep,\n Read,\n Skill,\n WebFetch,\n WebSearch,\n Write,\n} from './toolNames';\n\ntype TitleFormatter = (\n input: unknown,\n display: unknown,\n summary?: string | null,\n meta?: unknown,\n) => string;\n\nconst TITLE_FORMATTERS: Record<string, TitleFormatter> = {\n [Read]: formatReadTitle,\n [Grep]: formatGrepTitle,\n [Glob]: formatGlobTitle,\n [Edit]: formatEditTitle,\n [Write]: formatWriteTitle,\n [Bash]: formatBashTitle,\n [Agent]: formatAgentTitle,\n [Skill]: formatSkillTitle,\n [WebSearch]: formatWebSearchTitle,\n [WebFetch]: formatWebFetchTitle,\n [AskUserQuestion]: formatAskUserQuestionTitle,\n};\n\nexport function formatToolTitle(\n toolName: string,\n input: unknown,\n display: unknown,\n summary?: string | null,\n meta?: unknown,\n): string {\n const formatter = TITLE_FORMATTERS[toolName];\n if (formatter) {\n return formatter(input, display, summary, meta);\n }\n return toolName;\n}\n","/**\n * DefaultToolBody.tsx — 未注册工具回退 Body\n *\n * 职责:\n * summary + display JSON 预览(≥ V2);markdown/text 走 TruncatedContent。\n *\n * 链路位置:\n * resolveToolBody 最终回退。\n *\n * 当前裁剪范围:\n * 不渲染 blocks 主视图(折叠区保留在 ToolCallCard details)。\n *\n * 对齐参考:\n * CLI widgets/tools/base.py BaseToolWidget · V2 ToolCallCard JSON pre\n */\nimport { ToolResultHints } from './presentation/ToolResultHints';\nimport { TruncatedContent } from './presentation/TruncatedContent';\nimport type { ToolDisplayProps } from './types';\n\nfunction formatDisplayJson(display: unknown): string {\n if (display == null) return '';\n if (typeof display === 'string') return display;\n try {\n return JSON.stringify(display, null, 2);\n } catch {\n return String(display);\n }\n}\n\nfunction extractTextContent(display: unknown): string | null {\n if (display == null) return null;\n if (typeof display === 'string') return display;\n if (typeof display === 'object') {\n const record = display as { content?: unknown; text?: unknown };\n if (typeof record.content === 'string') return record.content;\n if (typeof record.text === 'string') return record.text;\n }\n return null;\n}\n\nexport function DefaultToolBody({\n result,\n bodyMode,\n onBodyModeChange,\n}: ToolDisplayProps) {\n const summary = result?.summary;\n const displayBody = result?.display ?? null;\n const textContent = extractTextContent(displayBody);\n const jsonBody = textContent ?? formatDisplayJson(displayBody);\n\n return (\n <div className=\"lax-tool-body lax-tool-body--default\">\n {summary ? (\n <div className=\"lax-tool-card__summary\">{summary}</div>\n ) : null}\n\n {displayBody != null && displayBody !== '' && jsonBody ? (\n <div className=\"lax-tool-card__display\">\n {textContent != null ? (\n <TruncatedContent\n text={textContent}\n mode={bodyMode}\n onExpand={() => onBodyModeChange?.('full')}\n />\n ) : (\n <pre className=\"lax-tool-card__display-body\">{jsonBody}</pre>\n )}\n </div>\n ) : null}\n\n {result?.truncated ? (\n <div className=\"lax-tool-card__truncated\">结果已截断</div>\n ) : null}\n\n {result?.overflow_file ? (\n <div className=\"lax-tool-card__overflow\">\n 完整输出:\n <code>{result.overflow_file}</code>\n </div>\n ) : null}\n\n <ToolResultHints hints={result?.hints} />\n </div>\n );\n}\n","/**\n * resolveToolBody.ts — 工具 Body 路由纯函数\n *\n * 职责:\n * registry → display.type → DefaultToolBody(精确 tool_name 匹配,无 alias)。\n *\n * 链路位置:\n * ToolCallCard render。\n *\n * 当前裁剪范围:\n * T0 display.type 二级路由表为空;T1+ 注册专用 Widget 与 kind router。\n *\n * 对齐参考:\n * CLI widgets/tools/__init__.py resolve_tool_widget\n */\nimport { DefaultToolBody } from './DefaultToolBody';\nimport type { ToolDisplayRegistry } from './registry';\nimport type { ToolBodyComponent } from './types';\n\n/** display.type → Body;T0 空表,T1+ 填充。 */\nconst DISPLAY_KIND_ROUTER = new Map<string, ToolBodyComponent>();\n\nfunction getDisplayType(display: unknown): string | undefined {\n if (display == null || typeof display !== 'object') return undefined;\n const type = (display as { type?: unknown }).type;\n return typeof type === 'string' ? type : undefined;\n}\n\nexport function resolveToolBody(\n toolName: string,\n display: unknown,\n registry: ToolDisplayRegistry,\n): ToolBodyComponent {\n const byName = registry.resolve(toolName);\n if (byName) return byName;\n\n const displayType = getDisplayType(display);\n if (displayType) {\n const byKind = DISPLAY_KIND_ROUTER.get(displayType);\n if (byKind) return byKind;\n }\n\n return DefaultToolBody;\n}\n\n/** 测试 / 扩展用:注册 display.type 路由。 */\nexport function registerDisplayKind(\n displayType: string,\n body: ToolBodyComponent,\n): void {\n DISPLAY_KIND_ROUTER.set(displayType, body);\n}\n\n/** 测试用:清空 display kind 路由。 */\nexport function clearDisplayKindRouter(): void {\n DISPLAY_KIND_ROUTER.clear();\n}\n","/**\n * 职责:人类回写薄层 API;Permission / AskUserQuestion 分轨。\n * 链路位置:AgentSession interactionBus prop → PermissionCard / AskUserQuestionCard。\n * 当前裁剪范围:permission resolve + user questions resolve(D44)。\n */\n\nexport interface PermissionResolvePayload {\n requestId: string;\n allow: boolean;\n message?: string;\n}\n\nexport type UserQuestionsResolvePayload =\n | {\n sessionId: string;\n toolCallId: string;\n answers: Record<string, string>;\n reject?: undefined;\n }\n | {\n sessionId: string;\n toolCallId: string;\n reject: true;\n answers?: undefined;\n };\n\nexport interface InteractionBus {\n resolvePermission: (payload: PermissionResolvePayload) => void | Promise<void>;\n resolveUserQuestions: (payload: UserQuestionsResolvePayload) => void | Promise<void>;\n}\n\nexport interface InteractionBusHandlers {\n onPermissionResolve?: (payload: PermissionResolvePayload) => void | Promise<void>;\n onResolveUserQuestions?: (payload: UserQuestionsResolvePayload) => void | Promise<void>;\n}\n\nconst noopBus: InteractionBus = {\n resolvePermission() {\n if (import.meta.env?.DEV) {\n console.warn('[langchain_agentx_stream_ui] resolvePermission without InteractionBus');\n }\n },\n resolveUserQuestions() {\n if (import.meta.env?.DEV) {\n console.warn('[langchain_agentx_stream_ui] resolveUserQuestions without InteractionBus');\n }\n },\n};\n\nexport function createInteractionBus(handlers: InteractionBusHandlers = {}): InteractionBus {\n return {\n resolvePermission(payload) {\n return handlers.onPermissionResolve?.(payload);\n },\n resolveUserQuestions(payload) {\n return handlers.onResolveUserQuestions?.(payload);\n },\n };\n}\n\nexport function getNoopInteractionBus(): InteractionBus {\n return noopBus;\n}\n","/**\n * 职责:向 PermissionNode 注入 InteractionBus。\n * 链路位置:AgentSession / MultiAgentSession Provider。\n * 当前裁剪范围:单 bus;多会话共用同一 bus(业务按 requestId 路由)。\n */\nimport { createContext, useContext } from 'react';\n\nimport type { InteractionBus } from '../interaction/InteractionBus';\nimport { getNoopInteractionBus } from '../interaction/InteractionBus';\n\nexport const InteractionBusContext = createContext<InteractionBus>(getNoopInteractionBus());\n\nexport function useInteractionBus(): InteractionBus {\n return useContext(InteractionBusContext);\n}\n","/**\n * ToolPermissionWait.tsx — ToolCallShell 内嵌 permission 等待态(T4.6)\n *\n * 对齐参考:CC AssistantToolUseMessage「Waiting for permission…」分支\n */\nimport { useState } from 'react';\n\nimport { useInteractionBus } from '../../core/context/InteractionContext';\nimport type { PermissionNode } from '../../types/nodes';\nimport type { PermissionUiMode } from '../sessionViewOptions';\n\nexport interface ToolPermissionWaitProps {\n permission: PermissionNode;\n mode: PermissionUiMode;\n}\n\nexport function ToolPermissionWait({ permission, mode }: ToolPermissionWaitProps) {\n const bus = useInteractionBus();\n const [resolvedLocally, setResolvedLocally] = useState(false);\n\n if (permission.status !== 'pending' || resolvedLocally) return null;\n\n const showActions = mode === 'inline' || mode === 'both';\n\n const onAllow = () => {\n void bus.resolvePermission({ requestId: permission.requestId, allow: true });\n setResolvedLocally(true);\n };\n\n const onDeny = () => {\n void bus.resolvePermission({ requestId: permission.requestId, allow: false });\n setResolvedLocally(true);\n };\n\n return (\n <div className=\"lax-tool-shell__permission-wait\" role=\"status\">\n <div className=\"lax-tool-shell__permission-wait-text\">\n Waiting for permission…\n </div>\n {permission.message ? (\n <div className=\"lax-tool-shell__permission-wait-detail\">{permission.message}</div>\n ) : null}\n {showActions ? (\n <div className=\"lax-tool-shell__permission-actions\">\n <button type=\"button\" className=\"lax-permission-card__allow\" onClick={onAllow}>\n Allow\n </button>\n <button type=\"button\" className=\"lax-permission-card__deny\" onClick={onDeny}>\n Deny\n </button>\n </div>\n ) : null}\n </div>\n );\n}\n","/**\n * ToolCallShell.tsx — 工具卡片外壳\n *\n * 职责:\n * 状态圆点、标题、progress、error 边框;不含工具语义。\n *\n * 链路位置:\n * ToolCallCard 外层布局。\n *\n * 当前裁剪范围:\n * T4.6 内嵌 permission 等待态;Grouped 紧凑布局 variant。\n *\n * 对齐参考:\n * CLI base.py 状态圆点 · CC AssistantToolUseMessage.tsx 外层 Box\n */\nimport type { ReactNode } from 'react';\n\nimport type { ToolCallNode } from '../../types/nodes';\nimport type { PermissionNode } from '../../types/nodes';\nimport type { PermissionUiMode } from '../sessionViewOptions';\nimport { ToolPermissionWait } from './ToolPermissionWait';\n\nexport interface ToolCallShellProps {\n status: ToolCallNode['status'];\n title: string;\n progress?: ToolCallNode['progress'];\n errorMessage?: string | null;\n layout?: 'default' | 'grouped';\n permissionWait?: PermissionNode;\n permissionUiMode?: PermissionUiMode;\n children?: ReactNode;\n}\n\nexport function ToolCallShell({\n status,\n title,\n progress,\n errorMessage,\n layout = 'default',\n permissionWait,\n permissionUiMode = 'standalone',\n children,\n}: ToolCallShellProps) {\n const bare = !title.trim();\n const waitingForPermission =\n permissionWait &&\n permissionUiMode !== 'standalone' &&\n (status === 'running' || status === 'failed');\n\n return (\n <div\n className={[\n 'lax-tool-card',\n 'lax-tool-shell',\n bare ? 'lax-tool-shell--bare' : '',\n layout === 'grouped' ? 'lax-tool-shell--grouped' : '',\n waitingForPermission ? 'lax-tool-shell--permission-wait' : '',\n ]\n .filter(Boolean)\n .join(' ')}\n data-status={status}\n data-error-kind={\n errorMessage ? 'error' : waitingForPermission ? 'permission' : undefined\n }\n >\n {!bare ? (\n <div className=\"lax-tool-shell__header lax-tool-card__header\">\n <span\n className=\"lax-tool-shell__status-dot lax-tool-card__status-dot\"\n data-status={status}\n aria-hidden\n >\n ●{' '}\n </span>\n <span className=\"lax-tool-shell__title lax-tool-card__name\">{title}</span>\n </div>\n ) : null}\n\n {progress ? (\n <div className=\"lax-tool-shell__progress lax-tool-card__progress\">\n {progress.message ?? `${progress.current}/${progress.total}`}\n </div>\n ) : null}\n\n {waitingForPermission && permissionWait ? (\n <ToolPermissionWait permission={permissionWait} mode={permissionUiMode} />\n ) : null}\n\n {children}\n\n {errorMessage && status === 'failed' ? (\n <div className=\"lax-tool-card__error\" role=\"alert\">\n {errorMessage}\n </div>\n ) : null}\n </div>\n );\n}\n"],"mappings":"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","names":["jsx","jsxs","jsx","jsxs"]}
|
package/dist/default.css
CHANGED
|
@@ -1761,6 +1761,104 @@
|
|
|
1761
1761
|
color: var(--lax-muted);
|
|
1762
1762
|
}
|
|
1763
1763
|
|
|
1764
|
+
/* ============================================================================
|
|
1765
|
+
AskUserQuestion 问卷卡(D44)
|
|
1766
|
+
============================================================================ */
|
|
1767
|
+
|
|
1768
|
+
.lax-user-question-card {
|
|
1769
|
+
margin: 0.5rem 0;
|
|
1770
|
+
padding: 0.75rem 1rem;
|
|
1771
|
+
border: 1px solid var(--lax-border, #d1d5db);
|
|
1772
|
+
border-radius: 6px;
|
|
1773
|
+
background: var(--lax-surface, #fafafa);
|
|
1774
|
+
}
|
|
1775
|
+
|
|
1776
|
+
.lax-user-question-card__header {
|
|
1777
|
+
display: flex;
|
|
1778
|
+
justify-content: space-between;
|
|
1779
|
+
gap: 0.5rem;
|
|
1780
|
+
margin-bottom: 0.5rem;
|
|
1781
|
+
}
|
|
1782
|
+
|
|
1783
|
+
.lax-user-question-card__label {
|
|
1784
|
+
font-weight: 600;
|
|
1785
|
+
font-size: 0.9rem;
|
|
1786
|
+
}
|
|
1787
|
+
|
|
1788
|
+
.lax-user-question-card__progress {
|
|
1789
|
+
font-size: 0.8rem;
|
|
1790
|
+
color: var(--lax-muted, #6b7280);
|
|
1791
|
+
}
|
|
1792
|
+
|
|
1793
|
+
.lax-user-question-card__question {
|
|
1794
|
+
margin-bottom: 0.5rem;
|
|
1795
|
+
font-size: 0.95rem;
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1798
|
+
.lax-user-question-card__options {
|
|
1799
|
+
display: flex;
|
|
1800
|
+
flex-direction: column;
|
|
1801
|
+
gap: 0.35rem;
|
|
1802
|
+
margin-bottom: 0.5rem;
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
.lax-user-question-card__option {
|
|
1806
|
+
display: flex;
|
|
1807
|
+
align-items: flex-start;
|
|
1808
|
+
gap: 0.4rem;
|
|
1809
|
+
font-size: 0.9rem;
|
|
1810
|
+
cursor: pointer;
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
.lax-user-question-card__desc {
|
|
1814
|
+
color: var(--lax-muted, #6b7280);
|
|
1815
|
+
font-weight: 400;
|
|
1816
|
+
}
|
|
1817
|
+
|
|
1818
|
+
.lax-user-question-card__other {
|
|
1819
|
+
margin-left: 1.4rem;
|
|
1820
|
+
padding: 0.25rem 0.4rem;
|
|
1821
|
+
font-size: 0.875rem;
|
|
1822
|
+
border: 1px solid var(--lax-border, #d1d5db);
|
|
1823
|
+
border-radius: 4px;
|
|
1824
|
+
width: calc(100% - 1.4rem);
|
|
1825
|
+
}
|
|
1826
|
+
|
|
1827
|
+
.lax-user-question-card__actions {
|
|
1828
|
+
display: flex;
|
|
1829
|
+
justify-content: flex-end;
|
|
1830
|
+
gap: 0.5rem;
|
|
1831
|
+
margin-top: 0.5rem;
|
|
1832
|
+
}
|
|
1833
|
+
|
|
1834
|
+
.lax-user-question-card__reject,
|
|
1835
|
+
.lax-user-question-card__next,
|
|
1836
|
+
.lax-user-question-card__submit {
|
|
1837
|
+
padding: 0.3rem 0.75rem;
|
|
1838
|
+
font-size: 0.875rem;
|
|
1839
|
+
border-radius: 4px;
|
|
1840
|
+
border: 1px solid var(--lax-border, #d1d5db);
|
|
1841
|
+
cursor: pointer;
|
|
1842
|
+
background: #fff;
|
|
1843
|
+
}
|
|
1844
|
+
|
|
1845
|
+
.lax-user-question-card__submit {
|
|
1846
|
+
background: var(--lax-accent, #1f2937);
|
|
1847
|
+
color: #fff;
|
|
1848
|
+
border-color: var(--lax-accent, #1f2937);
|
|
1849
|
+
}
|
|
1850
|
+
|
|
1851
|
+
.lax-user-question-card__error {
|
|
1852
|
+
color: var(--lax-danger, #b91c1c);
|
|
1853
|
+
font-size: 0.85rem;
|
|
1854
|
+
margin-bottom: 0.35rem;
|
|
1855
|
+
}
|
|
1856
|
+
|
|
1857
|
+
.lax-user-question-card__resolved {
|
|
1858
|
+
font-size: 0.875rem;
|
|
1859
|
+
color: var(--lax-muted, #6b7280);
|
|
1860
|
+
}
|
|
1861
|
+
|
|
1764
1862
|
/* ============================================================================
|
|
1765
1863
|
虚拟时间线
|
|
1766
1864
|
============================================================================ */
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
3
|
import { ReactNode, PointerEventHandler } from 'react';
|
|
4
|
-
import { W as WorkflowAuthoritySnapshot, u as Source, L as LangchainAgentEvent, N as NodeRegistry, z as TierOverrides, I as InteractionBus, M as MarkdownRenderer, a as AskDisplaySnapshot, s as SessionTree, H as WorkflowDisplayProjection, G as WorkflowContainerTreeState, Q as WorkflowSessionState, F as WorkflowContainerRuntimeNode, v as SourceEventContext, J as WorkflowDisplayProjectionStatus, T as Task, x as TaskPhase, o as SessionStatus, R as ReducerError, B as WorkflowAuthorityStatus, r as SessionStoreState, t as SessionTreeSnapshot, E as EventTier } from './multi-session-
|
|
5
|
-
export { A as AskCoalescedBlock, b as AskDisplaySnapshotMetadata, c as AskSnapshotProjectionStatus, C as CommonFields, D as DEFAULT_EVENT_TIERS, d as EventType, e as InteractionBusHandlers, f as MarkdownRendererProps, g as MultiAgentSession, h as MultiAgentSessionProps, i as MultiSessionSourceConfig, j as MultiSessionStore, k as MultiSessionStoreOptions, l as MultiSessionStoreState, m as NodeWidget, n as NodeWidgetProps, P as PermissionResolvePayload, S as SessionSlice, p as SessionStore, q as SessionStoreOptions, w as SourceHandler, y as TaskStatus, K as WorkflowProgressState, O as WorkflowScopeFrame,
|
|
6
|
-
import { T as ToolDisplayRegistry, P as PermissionUiMode, b as DisplayMode, c as ProjectionContext, R as RenderableEntry, C as CanonicalNodeRef } from './sessionViewOptions-
|
|
7
|
-
export { a as CollapsedExplorePayload, D as DEFAULT_SESSION_VIEW_OPTIONS, S as SessionViewOptions, d as ToolUseSnapshot, e as buildProjectionContext, f as buildProjectionViewContext, g as createDefaultToolRegistry, h as createProjectionContext, r as resolveEffectiveToolBodyMode, s as shouldApplyGrouping, i as shouldShowExploreDetail } from './sessionViewOptions-
|
|
8
|
-
import { a as ToolBodyMode } from './types-
|
|
9
|
-
export { T as ToolBodyComponent, b as ToolDisplayProps } from './types-
|
|
4
|
+
import { W as WorkflowAuthoritySnapshot, u as Source, L as LangchainAgentEvent, N as NodeRegistry, z as TierOverrides, I as InteractionBus, M as MarkdownRenderer, a as AskDisplaySnapshot, s as SessionTree, H as WorkflowDisplayProjection, G as WorkflowContainerTreeState, Q as WorkflowSessionState, F as WorkflowContainerRuntimeNode, v as SourceEventContext, J as WorkflowDisplayProjectionStatus, T as Task, x as TaskPhase, o as SessionStatus, R as ReducerError, B as WorkflowAuthorityStatus, r as SessionStoreState, t as SessionTreeSnapshot, E as EventTier } from './multi-session-9LtrGlsm.js';
|
|
5
|
+
export { A as AskCoalescedBlock, b as AskDisplaySnapshotMetadata, c as AskSnapshotProjectionStatus, C as CommonFields, D as DEFAULT_EVENT_TIERS, d as EventType, e as InteractionBusHandlers, f as MarkdownRendererProps, g as MultiAgentSession, h as MultiAgentSessionProps, i as MultiSessionSourceConfig, j as MultiSessionStore, k as MultiSessionStoreOptions, l as MultiSessionStoreState, m as NodeWidget, n as NodeWidgetProps, P as PermissionResolvePayload, S as SessionSlice, p as SessionStore, q as SessionStoreOptions, w as SourceHandler, y as TaskStatus, U as UserQuestionsResolvePayload, K as WorkflowProgressState, O as WorkflowScopeFrame, V as WorkflowStageProgress, X as WorkflowTerminalKind, Y as createActiveSessionBridge, Z as createEmptyTree, _ as createEmptyWorkflowSessionState, $ as createInteractionBus, a0 as createMultiSessionStore, a1 as createSessionStore, a2 as getNoopInteractionBus, a3 as useActiveSession, a4 as useSessionIds } from './multi-session-9LtrGlsm.js';
|
|
6
|
+
import { T as ToolDisplayRegistry, P as PermissionUiMode, b as DisplayMode, c as ProjectionContext, R as RenderableEntry, C as CanonicalNodeRef } from './sessionViewOptions-DaxstMhx.js';
|
|
7
|
+
export { a as CollapsedExplorePayload, D as DEFAULT_SESSION_VIEW_OPTIONS, S as SessionViewOptions, d as ToolUseSnapshot, e as buildProjectionContext, f as buildProjectionViewContext, g as createDefaultToolRegistry, h as createProjectionContext, r as resolveEffectiveToolBodyMode, s as shouldApplyGrouping, i as shouldShowExploreDetail } from './sessionViewOptions-DaxstMhx.js';
|
|
8
|
+
import { a as ToolBodyMode } from './types-BzeE37Ze.js';
|
|
9
|
+
export { T as ToolBodyComponent, b as ToolDisplayProps } from './types-BzeE37Ze.js';
|
|
10
10
|
import { StoreApi } from 'zustand/vanilla';
|
|
11
11
|
export { DEFAULT_ESTIMATE_SIZE, DEFAULT_VIRTUALIZE_THRESHOLD, SessionTimeline, SessionTimelineProps, VirtualTimeline, VirtualTimelineProps } from './virtual.js';
|
|
12
|
-
export { A as AgentToolBody, a as AskUserQuestionToolBody, B as BashToolBody, D as DefaultToolBody, E as EditToolBody, G as GlobToolBody, b as GrepToolBody, R as ReadToolBody, S as SkillToolBody, W as WebFetchToolBody, c as WebSearchToolBody, d as WriteToolBody, f as formatToolTitle, r as resolveToolBody } from './AskUserQuestionToolBody-
|
|
13
|
-
import { S as SessionNode, a as SessionNodeKind } from './nodes-
|
|
14
|
-
export { E as ErrorNode, N as NodeDetail, P as PermissionNode, R as ReasoningNode, b as StepDetail, c as StepNode, d as SubAgentNode, T as TextNode, h as ToolCallNode, U as UnknownNode } from './nodes-
|
|
15
|
-
export { B as BodyBlock, a as BodyBlockList, D as DiffView, M as MAX_PREVIEW_LINES, b as MarkdownBlock, T as TruncatedContent, c as buildBashBodyBlocks, d as displayPath, f as formatDiffFromStrings, e as formatPatternTitle, g as formatSearchResultBody, h as formatTimeoutFooter, p as parseDiffText, t as truncateCommand } from './MarkdownBlock-
|
|
12
|
+
export { A as AgentToolBody, a as AskUserQuestionToolBody, B as BashToolBody, D as DefaultToolBody, E as EditToolBody, G as GlobToolBody, b as GrepToolBody, R as ReadToolBody, S as SkillToolBody, W as WebFetchToolBody, c as WebSearchToolBody, d as WriteToolBody, f as formatToolTitle, r as resolveToolBody } from './AskUserQuestionToolBody-CrQTL9RY.js';
|
|
13
|
+
import { S as SessionNode, a as SessionNodeKind } from './nodes-uahIhQwz.js';
|
|
14
|
+
export { E as ErrorNode, N as NodeDetail, P as PermissionNode, R as ReasoningNode, b as StepDetail, c as StepNode, d as SubAgentNode, T as TextNode, h as ToolCallNode, U as UnknownNode, j as UserQuestionNode } from './nodes-uahIhQwz.js';
|
|
15
|
+
export { B as BodyBlock, a as BodyBlockList, D as DiffView, M as MAX_PREVIEW_LINES, b as MarkdownBlock, T as TruncatedContent, c as buildBashBodyBlocks, d as displayPath, f as formatDiffFromStrings, e as formatPatternTitle, g as formatSearchResultBody, h as formatTimeoutFooter, p as parseDiffText, t as truncateCommand } from './MarkdownBlock-Ag7HSqsu.js';
|
|
16
16
|
|
|
17
17
|
/** Workflow 大规模编排 UI 缩放选项(P1–P4 · D40 O1–O4 · D41 P-UX) */
|
|
18
18
|
type DeferEvictionUntil = 'immediate' | 'run-idle' | 'host-reset';
|
|
@@ -981,6 +981,11 @@ interface PermissionCardProps {
|
|
|
981
981
|
}
|
|
982
982
|
declare function PermissionCard({ nodeId }: PermissionCardProps): react_jsx_runtime.JSX.Element | null;
|
|
983
983
|
|
|
984
|
+
interface AskUserQuestionCardProps {
|
|
985
|
+
nodeId: string;
|
|
986
|
+
}
|
|
987
|
+
declare function AskUserQuestionCard({ nodeId }: AskUserQuestionCardProps): react_jsx_runtime.JSX.Element | null;
|
|
988
|
+
|
|
984
989
|
interface CollapsedExploreNodeProps {
|
|
985
990
|
entry: RenderableEntry;
|
|
986
991
|
registry: NodeRegistry;
|
|
@@ -1396,4 +1401,4 @@ interface ClassifyContext {
|
|
|
1396
1401
|
declare function resolveEventTier(eventType: string, overrides?: TierOverrides): EventTier;
|
|
1397
1402
|
declare function classifyEvent(event: LangchainAgentEvent, ctx: ClassifyContext, overrides?: TierOverrides, eventIndex?: number): ClassifiedEvent;
|
|
1398
1403
|
|
|
1399
|
-
export { Agent, type AgentAuthorityMetadata, type WorkflowAuthoritySource as AgentAuthoritySource, AgentLoopView, type AgentLoopViewProps, AgentSession, AgentSessionBanners, type AgentSessionBannersProps, type AgentSessionProps, type AgentxMetaFrame, type AgentxSseSourceOptions, type ApplicationKind, ApplicationKindMismatchError, AskDisplaySnapshot, AskUserQuestion, AuthorityPollFatalError, BOUNDED_DEFAULTS, Bash, CanonicalNodeRef, type ClassifiedEvent, type ClassifyContext, CollapseKind, CollapsedExploreNode, type CollapsedExploreNodeProps, DEFAULT_WORKFLOW_SCALE_OPTIONS, DEMO_WORKFLOW_SCALE, type DeferEvictionUntil, type DiagramFitLayout, DiagramZoomShell, type DiagramZoomShellProps, DiagramZoomView, type DiagramZoomViewProps, DisplayMode, EXPECTED_PROTOCOL_VERSION, Edit, ErrorCard, EventTier, type EvictionDeferContext, ExploreCollapseAccumulator, GROUPABLE_TOOL_NAMES, Glob, Grep, GroupedToolUseAccumulator, type HydrateAskSnapshotState, type HydrateLoopSessionAsyncOptions, type HydrateWorkflowSnapshotOptions, InteractionBus, LangchainAgentEvent, MIN_HINT_DISPLAY_MS, MarkdownRenderer, MermaidDiagram, type MermaidDiagramProps, type MermaidInitOptions, type MermaidThemeName, MissingApplicationKindError, type MockAuthoritySourceOptions, NodeRegistry, PROFILE_PRESETS, PermissionCard, PermissionUiMode, PlantUMLBlock, type PlantUMLBlockProps, PlantUMLDiagram, type PlantUMLDiagramProps, type PollingAuthoritySourceOptions, type ProjectedTimelineItem, ProjectionContext, DisplayMode as ProjectionDisplayMode, Read, ReasoningBubble, ReconnectBudget, type ReduceOptions, ReducerError, RenderableEntry, RenderableTimelineProjector, type ReplayOptions, type ReplaySourceOptions, RichMarkdown, type RichMarkdownProps, SCALE_WORKFLOW_SCALE, SHELL_PROGRESS_MIN_ELAPSED_SECONDS, SessionNode, SessionNodeKind, SessionStatus, SessionStoreState, SessionTree, SessionTreeSnapshot, Skill, Source, SourceEventContext, Spinner, type SpinnerProps, type SseReconnectMode, type SseReconnectPolicy, type SseReplayMode, type SseTerminalPolicy, type SseTransportFailureKind, type SseTransportPolicy, type SseTransportPolicyOverride, type SseTransportProfile, SseTransportTerminalError, StepCard, SubAgentBlock, SystemSummaryAccumulator, SystemSummaryNode, Task, TaskList, TaskListFooter, TextBubble, TierOverrides, Timeline, TimelineItem, ToolBodyMode, ToolCallCard, ToolDisplayRegistry, ToolProjectionClassifier, UnknownCard, WORKFLOW_STRUCTURE_EVENT_PREFIXES, WORKFLOW_STRUCTURE_EVENT_TYPES, WebFetch, WebSearch, WorkflowAuthoritySnapshot, type WorkflowAuthoritySource, WorkflowAuthorityStatus, type WorkflowBannerDescriptor, WorkflowChrome, type WorkflowChromeProps, type WorkflowCoalescedBlock, WorkflowDisplayProjection, WorkflowDisplayProjectionStatus, type WorkflowDisplaySnapshot, type WorkflowDisplaySnapshotMetadata, WorkflowScaleContext, type WorkflowScaleOptions, WorkflowSession, type WorkflowSessionProps, WorkflowSessionState, type WorkflowSessionStore, type WorkflowSessionStoreOptions, type WorkflowSessionStoreState, type WorkflowSnapshotProjectionStatus, WorkflowTaskListFooter, Write, applyAuthoritySnapshotToState, buildCanonicalFromTree, buildRelevantMemoriesCanonical, buildResumeStreamUrl, buildSystemEventCanonical, buildTimelineEntries, classifyEvent, commandAsHint, computeViewportFitTransform, configureMermaid, configurePlantumlServer, createAgentxSseSource, createControllableAuthoritySource, createDefaultRegistry, createDoneAuthoritySource, createMockAuthoritySource, createMockSource, createPollingAuthoritySource, createReplaySource, createRunningAuthoritySource, createWorkflowSessionStore, deriveLoopSessionIdFromAgentEvent, entryKey, filterAgentLoopReplayEvents, finalizeSessionTreeOnAuthorityCanceled, finalizeWorkflowDisplayOnStreamEnded, fixDiagramSvg, formatAgentTitle, formatExploreSummaryText, formatHookFinishedSummary, formatShellProgressSuffix, formatTaskFooterLabel, getChildIds, getDisplayProjectionStatus, getMainStageIds, hydrateAskFromSnapshot, hydrateWorkflowFromSnapshot, isAgentInputLocked, isAgentLoopReplayEventType, isAtOrBeforeProjectionCursor, isAuthorityTerminal, isAuthorityTerminalStatus, isFatalAuthorityPollStatus, isGitOperationCommand, isGroupableToolName, isMcpToolName, isSseStreamTerminalEvent, isWorkflowStructureEventType, iterMountCandidates, partitionWorkflowStages, projectCanonical, projectTimeline, reduceAgentLoopEvent, reduceEvents, reduceTree, reduceWorkflowEvents, reduceWorkflowSession, replayEvents, replayTree, resolveEventTier, resolveResponseId, resolveShellProgressFromPayload, resolveSseTransportPolicy, resolveWorkflowBanner, resolveWorkflowScale, sessionTreeSnapshotToTree, shouldDeferEviction, shouldShowAgentSpinner, shouldShowGlobalSpinner, shouldShowTaskListFooter, streamChunk, useAgentAuthority, useAgentAuthoritySubscribeFailed, useChildren, useInteractionBus, useInternalErrors, useMinDisplayTime, useNode, useNodeTyped, useProjectedTimeline, useReplayTree, useSessionMeta, useSessionStatus, useTimeline, useWorkflowSessionStatus, useWorkflowSessionStoreApi };
|
|
1404
|
+
export { Agent, type AgentAuthorityMetadata, type WorkflowAuthoritySource as AgentAuthoritySource, AgentLoopView, type AgentLoopViewProps, AgentSession, AgentSessionBanners, type AgentSessionBannersProps, type AgentSessionProps, type AgentxMetaFrame, type AgentxSseSourceOptions, type ApplicationKind, ApplicationKindMismatchError, AskDisplaySnapshot, AskUserQuestion, AskUserQuestionCard, AuthorityPollFatalError, BOUNDED_DEFAULTS, Bash, CanonicalNodeRef, type ClassifiedEvent, type ClassifyContext, CollapseKind, CollapsedExploreNode, type CollapsedExploreNodeProps, DEFAULT_WORKFLOW_SCALE_OPTIONS, DEMO_WORKFLOW_SCALE, type DeferEvictionUntil, type DiagramFitLayout, DiagramZoomShell, type DiagramZoomShellProps, DiagramZoomView, type DiagramZoomViewProps, DisplayMode, EXPECTED_PROTOCOL_VERSION, Edit, ErrorCard, EventTier, type EvictionDeferContext, ExploreCollapseAccumulator, GROUPABLE_TOOL_NAMES, Glob, Grep, GroupedToolUseAccumulator, type HydrateAskSnapshotState, type HydrateLoopSessionAsyncOptions, type HydrateWorkflowSnapshotOptions, InteractionBus, LangchainAgentEvent, MIN_HINT_DISPLAY_MS, MarkdownRenderer, MermaidDiagram, type MermaidDiagramProps, type MermaidInitOptions, type MermaidThemeName, MissingApplicationKindError, type MockAuthoritySourceOptions, NodeRegistry, PROFILE_PRESETS, PermissionCard, PermissionUiMode, PlantUMLBlock, type PlantUMLBlockProps, PlantUMLDiagram, type PlantUMLDiagramProps, type PollingAuthoritySourceOptions, type ProjectedTimelineItem, ProjectionContext, DisplayMode as ProjectionDisplayMode, Read, ReasoningBubble, ReconnectBudget, type ReduceOptions, ReducerError, RenderableEntry, RenderableTimelineProjector, type ReplayOptions, type ReplaySourceOptions, RichMarkdown, type RichMarkdownProps, SCALE_WORKFLOW_SCALE, SHELL_PROGRESS_MIN_ELAPSED_SECONDS, SessionNode, SessionNodeKind, SessionStatus, SessionStoreState, SessionTree, SessionTreeSnapshot, Skill, Source, SourceEventContext, Spinner, type SpinnerProps, type SseReconnectMode, type SseReconnectPolicy, type SseReplayMode, type SseTerminalPolicy, type SseTransportFailureKind, type SseTransportPolicy, type SseTransportPolicyOverride, type SseTransportProfile, SseTransportTerminalError, StepCard, SubAgentBlock, SystemSummaryAccumulator, SystemSummaryNode, Task, TaskList, TaskListFooter, TextBubble, TierOverrides, Timeline, TimelineItem, ToolBodyMode, ToolCallCard, ToolDisplayRegistry, ToolProjectionClassifier, UnknownCard, WORKFLOW_STRUCTURE_EVENT_PREFIXES, WORKFLOW_STRUCTURE_EVENT_TYPES, WebFetch, WebSearch, WorkflowAuthoritySnapshot, type WorkflowAuthoritySource, WorkflowAuthorityStatus, type WorkflowBannerDescriptor, WorkflowChrome, type WorkflowChromeProps, type WorkflowCoalescedBlock, WorkflowDisplayProjection, WorkflowDisplayProjectionStatus, type WorkflowDisplaySnapshot, type WorkflowDisplaySnapshotMetadata, WorkflowScaleContext, type WorkflowScaleOptions, WorkflowSession, type WorkflowSessionProps, WorkflowSessionState, type WorkflowSessionStore, type WorkflowSessionStoreOptions, type WorkflowSessionStoreState, type WorkflowSnapshotProjectionStatus, WorkflowTaskListFooter, Write, applyAuthoritySnapshotToState, buildCanonicalFromTree, buildRelevantMemoriesCanonical, buildResumeStreamUrl, buildSystemEventCanonical, buildTimelineEntries, classifyEvent, commandAsHint, computeViewportFitTransform, configureMermaid, configurePlantumlServer, createAgentxSseSource, createControllableAuthoritySource, createDefaultRegistry, createDoneAuthoritySource, createMockAuthoritySource, createMockSource, createPollingAuthoritySource, createReplaySource, createRunningAuthoritySource, createWorkflowSessionStore, deriveLoopSessionIdFromAgentEvent, entryKey, filterAgentLoopReplayEvents, finalizeSessionTreeOnAuthorityCanceled, finalizeWorkflowDisplayOnStreamEnded, fixDiagramSvg, formatAgentTitle, formatExploreSummaryText, formatHookFinishedSummary, formatShellProgressSuffix, formatTaskFooterLabel, getChildIds, getDisplayProjectionStatus, getMainStageIds, hydrateAskFromSnapshot, hydrateWorkflowFromSnapshot, isAgentInputLocked, isAgentLoopReplayEventType, isAtOrBeforeProjectionCursor, isAuthorityTerminal, isAuthorityTerminalStatus, isFatalAuthorityPollStatus, isGitOperationCommand, isGroupableToolName, isMcpToolName, isSseStreamTerminalEvent, isWorkflowStructureEventType, iterMountCandidates, partitionWorkflowStages, projectCanonical, projectTimeline, reduceAgentLoopEvent, reduceEvents, reduceTree, reduceWorkflowEvents, reduceWorkflowSession, replayEvents, replayTree, resolveEventTier, resolveResponseId, resolveShellProgressFromPayload, resolveSseTransportPolicy, resolveWorkflowBanner, resolveWorkflowScale, sessionTreeSnapshotToTree, shouldDeferEviction, shouldShowAgentSpinner, shouldShowGlobalSpinner, shouldShowTaskListFooter, streamChunk, useAgentAuthority, useAgentAuthoritySubscribeFailed, useChildren, useInteractionBus, useInternalErrors, useMinDisplayTime, useNode, useNodeTyped, useProjectedTimeline, useReplayTree, useSessionMeta, useSessionStatus, useTimeline, useWorkflowSessionStatus, useWorkflowSessionStoreApi };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
AskUserQuestionCard,
|
|
2
3
|
DiagramZoomShell,
|
|
3
4
|
DiagramZoomView,
|
|
4
5
|
ErrorCard,
|
|
@@ -23,7 +24,7 @@ import {
|
|
|
23
24
|
fixDiagramSvg,
|
|
24
25
|
markEventIdSeen,
|
|
25
26
|
shouldSkipDuplicateEvent
|
|
26
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-AMUGAG7U.js";
|
|
27
28
|
import {
|
|
28
29
|
DefaultToolBody,
|
|
29
30
|
InteractionBusContext,
|
|
@@ -32,7 +33,7 @@ import {
|
|
|
32
33
|
getNoopInteractionBus,
|
|
33
34
|
resolveToolBody,
|
|
34
35
|
useInteractionBus
|
|
35
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-VYXHVGJU.js";
|
|
36
37
|
import "./chunk-DP7V33X7.js";
|
|
37
38
|
import {
|
|
38
39
|
CollapseKind,
|
|
@@ -120,7 +121,7 @@ import {
|
|
|
120
121
|
useSessionStatus,
|
|
121
122
|
useSessionViewOptions,
|
|
122
123
|
useTimeline
|
|
123
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-RWKNI52H.js";
|
|
124
125
|
import {
|
|
125
126
|
AGENT_PROGRESS_GUTTER,
|
|
126
127
|
AGENT_PROGRESS_INDENT,
|
|
@@ -6222,6 +6223,7 @@ export {
|
|
|
6222
6223
|
AgentToolBody,
|
|
6223
6224
|
ApplicationKindMismatchError,
|
|
6224
6225
|
AskUserQuestion,
|
|
6226
|
+
AskUserQuestionCard,
|
|
6225
6227
|
AskUserQuestionToolBody,
|
|
6226
6228
|
AuthorityPollFatalError,
|
|
6227
6229
|
BOUNDED_DEFAULTS,
|