@yumiai/chat-widget 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/PlanCard.css","../src/components/TodoCard.css","../src/components/PinnedArea.css","../src/components/RoundHeader.css","../src/components/SchemaFormRenderer.css","../src/components/ToolCardBuffering.css","../src/components/renderers/renderers.css","../src/components/MessageContent.css","../src/components/ChildAgentCard.css","../src/ChatWidget.css"],"sourcesContent":["/**\n * 任务计划卡片样式\n */\n\n.plan-card {\n background: var(--color-bg-secondary);\n border: 1px solid var(--color-border);\n border-radius: var(--radius);\n overflow: hidden;\n}\n\n.plan-card.completed {\n border-color: var(--color-success);\n opacity: 0.9;\n}\n\n.plan-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n background: var(--color-bg-tertiary);\n border-bottom: 1px solid var(--color-border);\n}\n\n.plan-title {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.plan-icon {\n font-size: 14px;\n}\n\n.plan-progress {\n font-size: 12px;\n color: var(--color-text-secondary);\n}\n\n.plan-items {\n list-style: none;\n margin: 0;\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.plan-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.plan-item-icon {\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.plan-item.completed .plan-item-icon {\n color: var(--color-success);\n}\n\n.plan-item.active .plan-item-icon {\n color: var(--color-primary);\n}\n\n.plan-item.pending .plan-item-icon {\n color: var(--color-text-secondary);\n}\n\n.plan-item.error .plan-item-icon {\n color: var(--color-error);\n}\n\n.plan-item-text {\n flex: 1;\n}\n\n.plan-item.active .plan-item-text {\n color: var(--color-primary);\n font-weight: 500;\n}\n\n.plan-item.completed .plan-item-text {\n color: var(--color-text-secondary);\n text-decoration: line-through;\n}\n\n.plan-item-status {\n font-size: 12px;\n padding: 2px 6px;\n background: var(--color-primary-bg);\n color: var(--color-primary);\n border-radius: 4px;\n animation: highlight-pulse 1.5s ease-in-out infinite;\n}\n\n@keyframes highlight-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n}\n\n/* 紧凑模式 */\n.plan-card-compact {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--color-bg-tertiary);\n border-radius: var(--radius);\n font-size: 12px;\n color: var(--color-text-secondary);\n margin-top: 8px;\n}\n\n.plan-items-inline {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.plan-item-inline {\n white-space: nowrap;\n}\n\n.plan-item-inline.completed {\n color: var(--color-success);\n}\n\n.plan-item-inline.active {\n color: var(--color-primary);\n font-weight: 500;\n}\n\n.plan-item-inline.pending {\n color: var(--color-text-secondary);\n}\n","/* ========== TodoCard — Full mode ========== */\n\n.todo-card {\n background: var(--color-bg-secondary, #fafafa);\n border: 1px solid var(--color-border, #e8e8e8);\n border-radius: 8px;\n overflow: hidden;\n font-size: 13px;\n}\n\n.todo-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s;\n}\n\n.todo-header:hover {\n background: rgba(0, 0, 0, 0.02);\n}\n\n.todo-header-arrow {\n flex-shrink: 0;\n font-size: 10px;\n width: 14px;\n text-align: center;\n transition: transform 0.2s;\n color: var(--color-text-secondary, #8c8c8c);\n}\n\n.todo-header-arrow.expanded {\n transform: rotate(90deg);\n}\n\n.todo-title {\n display: flex;\n align-items: center;\n gap: 5px;\n font-weight: 600;\n font-size: 13px;\n}\n\n.todo-title-icon {\n font-size: 14px;\n opacity: 0.6;\n}\n\n.todo-header-status {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: 4px;\n overflow: hidden;\n}\n\n.todo-header-current-sep {\n flex-shrink: 0;\n color: var(--color-primary, #1677ff);\n font-size: 12px;\n}\n\n.todo-header-current {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 12px;\n color: var(--color-primary, #1677ff);\n font-weight: 400;\n}\n\n.todo-header-done {\n font-size: 12px;\n color: var(--color-success, #52c41a);\n font-weight: 500;\n}\n\n.todo-header-blocked {\n font-size: 12px;\n color: var(--color-error, #ff4d4f);\n font-weight: 500;\n}\n\n.todo-header-count {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--color-text-secondary, #8c8c8c);\n font-variant-numeric: tabular-nums;\n}\n\n/* Progress bar */\n.todo-progress-bar {\n height: 3px;\n background: var(--color-border, #e8e8e8);\n margin: 0 12px 4px;\n border-radius: 2px;\n overflow: hidden;\n}\n\n/* In PinnedArea, leave space for the absolute-positioned timestamp */\n.chat-pinned-area .todo-card {\n margin-bottom: 14px;\n}\n\n.todo-progress-fill {\n height: 100%;\n background: var(--color-success, #52c41a);\n border-radius: 2px;\n transition: width 0.4s ease;\n}\n\n.todo-stat-completed, .todo-stat-inline.todo-stat-completed { color: var(--color-success, #52c41a); }\n.todo-stat-progress, .todo-stat-inline.todo-stat-progress { color: var(--color-primary, #1677ff); }\n.todo-stat-pending, .todo-stat-inline.todo-stat-pending { color: var(--color-text-secondary, #8c8c8c); }\n.todo-stat-blocked, .todo-stat-inline.todo-stat-blocked { color: var(--color-error, #ff4d4f); }\n\n/* Task list */\n.todo-list {\n padding: 4px 0 4px;\n}\n\n.todo-task-row {\n display: flex;\n align-items: flex-start;\n gap: 6px;\n padding: 3px 12px;\n line-height: 1.5;\n transition: background 0.15s;\n}\n\n.todo-task-row[role='button'] {\n cursor: pointer;\n}\n\n.todo-task-row[role='button']:hover {\n background: rgba(0, 0, 0, 0.02);\n}\n\n.todo-status-icon {\n flex-shrink: 0;\n width: 16px;\n text-align: center;\n font-size: 12px;\n line-height: 1.5;\n}\n\n.todo-status-pending .todo-status-icon { color: var(--color-text-secondary, #8c8c8c); }\n.todo-status-in_progress .todo-status-icon { color: var(--color-primary, #1677ff); }\n.todo-status-completed .todo-status-icon { color: var(--color-success, #52c41a); }\n.todo-status-blocked .todo-status-icon { color: var(--color-error, #ff4d4f); }\n\n/* In-progress pulse */\n.todo-status-in_progress .todo-status-icon {\n animation: todo-pulse 1.5s ease-in-out infinite;\n}\n\n@keyframes todo-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.4; }\n}\n\n.todo-expand-arrow {\n flex-shrink: 0;\n font-size: 10px;\n width: 12px;\n text-align: center;\n transition: transform 0.2s;\n color: var(--color-text-secondary, #8c8c8c);\n line-height: 1.5;\n}\n\n.todo-expand-arrow.expanded {\n transform: rotate(90deg);\n}\n\n.todo-task-desc {\n flex: 1;\n min-width: 0;\n word-break: break-word;\n}\n\n.todo-status-completed .todo-task-desc {\n color: var(--color-text-secondary, #8c8c8c);\n text-decoration: line-through;\n}\n\n.todo-status-in_progress .todo-task-desc {\n color: var(--color-primary, #1677ff);\n font-weight: 500;\n}\n\n/* More link */\n.todo-more {\n padding: 4px 12px 8px;\n font-size: 12px;\n color: var(--color-primary, #1677ff);\n cursor: pointer;\n}\n\n.todo-more:hover {\n text-decoration: underline;\n}\n\n/* ========== TodoCard — Compact mode ========== */\n\n.todo-card-compact {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: var(--color-bg-tertiary, #f5f5f5);\n border-radius: 6px;\n font-size: 12px;\n color: var(--color-text-secondary, #595959);\n overflow: hidden;\n}\n\n.todo-compact-icon {\n flex-shrink: 0;\n opacity: 0.5;\n}\n\n.todo-compact-title {\n flex-shrink: 0;\n font-weight: 500;\n color: var(--color-text-primary, #333);\n}\n\n.todo-compact-sep {\n flex-shrink: 0;\n color: var(--color-primary, #1677ff);\n}\n\n.todo-compact-current {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--color-primary, #1677ff);\n}\n\n.todo-compact-progress {\n flex-shrink: 0;\n font-variant-numeric: tabular-nums;\n color: var(--color-text-secondary, #8c8c8c);\n}\n\n/* ========== Multi-todo ========== */\n\n.todo-multi-compact {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.todo-multi-tabs {\n display: flex;\n gap: 2px;\n padding: 4px 8px 0;\n border-bottom: 1px solid var(--color-border, #e8e8e8);\n}\n\n.todo-tab {\n padding: 4px 10px;\n border: none;\n background: transparent;\n font-size: 12px;\n color: var(--color-text-secondary, #8c8c8c);\n cursor: pointer;\n border-bottom: 2px solid transparent;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.todo-tab:hover {\n color: var(--color-text-primary, #333);\n}\n\n.todo-tab.active {\n color: var(--color-primary, #1677ff);\n border-bottom-color: var(--color-primary, #1677ff);\n}\n\n.todo-tab-progress {\n margin-left: 4px;\n font-variant-numeric: tabular-nums;\n opacity: 0.6;\n}\n\n/* ========== Dark mode ========== */\n\n@media (prefers-color-scheme: dark) {\n .todo-card {\n background: var(--color-bg-secondary, #1f1f1f);\n border-color: rgba(255, 255, 255, 0.08);\n }\n .todo-header:hover {\n background: rgba(255, 255, 255, 0.03);\n }\n .todo-progress-bar {\n background: rgba(255, 255, 255, 0.08);\n }\n .todo-task-row[role='button']:hover {\n background: rgba(255, 255, 255, 0.03);\n }\n .todo-card-compact {\n background: var(--color-bg-tertiary, #262626);\n }\n .todo-multi-tabs {\n border-bottom-color: rgba(255, 255, 255, 0.08);\n }\n .todo-tab:hover {\n color: #d9d9d9;\n }\n}\n","/**\n * 置顶区域样式\n */\n\n.chat-pinned-area {\n flex-shrink: 0;\n margin: 12px 16px 0 16px;\n padding: 14px;\n background: rgba(139, 92, 246, 0.04);\n border-radius: var(--radius-lg, 10px);\n border: 1px solid rgba(139, 92, 246, 0.15);\n position: relative;\n}\n\n/* 时间戳 - 外层右下角 */\n.pinned-timestamp {\n position: absolute;\n bottom: 8px;\n right: 12px;\n font-size: 11px;\n color: rgba(139, 92, 246, 0.5);\n}\n\n/* 置顶内容容器 - 淡入淡出 */\n.pinned-content {\n transition: opacity 0.15s ease-out;\n}\n\n.pinned-content.fade-out {\n opacity: 0;\n}\n\n/* 用户消息 */\n.pinned-user-message {\n background: var(--color-bg-primary);\n border-radius: var(--radius);\n padding: 12px 14px;\n margin-bottom: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\n color: var(--color-text-primary);\n line-height: 1.6;\n}\n","/**\n * 轮次标题样式\n */\n\n.round-header {\n background: var(--color-bg-secondary);\n border: 1px solid var(--color-border);\n border-radius: var(--radius);\n padding: 12px 16px;\n margin-bottom: 12px;\n max-height: 200px;\n overflow: hidden;\n transition: \n opacity 0.2s ease,\n max-height 0.3s ease,\n padding 0.3s ease,\n margin 0.3s ease,\n border-width 0.2s ease;\n}\n\n/* 被置顶时折叠隐藏 */\n.round-header.pinned {\n opacity: 0;\n pointer-events: none;\n max-height: 0;\n padding: 0 16px;\n margin: 0;\n border-width: 0;\n}\n\n.round-header-title {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.round-header .user-avatar {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.round-header .avatar-icon {\n font-size: 16px;\n}\n\n.user-message-text {\n font-weight: 500;\n color: var(--color-text-primary);\n}\n\n.round-status {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.round-status.running {\n background: var(--color-primary-bg);\n color: var(--color-primary);\n}\n\n.round-status.completed {\n background: rgba(82, 196, 26, 0.1);\n color: var(--color-success);\n}\n\n.round-status.error {\n background: rgba(255, 77, 79, 0.1);\n color: var(--color-error);\n}\n","/* ===== Schema 表单渲染器样式 ===== */\n\n.schema-form-renderer {\n padding: 16px;\n}\n\n.schema-card {\n /* Card 容器 */\n}\n\n.schema-form {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n/* 表单项 */\n.schema-form-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.schema-form-item.has-error .schema-form-control input,\n.schema-form-item.has-error .schema-form-control textarea,\n.schema-form-item.has-error .schema-form-control select {\n border-color: #ef4444;\n}\n\n.schema-form-label {\n font-size: 14px;\n font-weight: 500;\n color: var(--color-text-primary);\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.required-mark {\n color: #ef4444;\n}\n\n.schema-form-control {\n /* 控件容器 */\n}\n\n.schema-form-error {\n font-size: 12px;\n color: #ef4444;\n margin-top: 4px;\n}\n\n/* Radio Group */\n.schema-radio-group {\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding-top: 4px;\n}\n\n.schema-radio-option {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n cursor: pointer;\n padding: 8px 12px;\n border-radius: 8px;\n transition: background-color 0.15s;\n}\n\n.schema-radio-option:hover {\n background-color: rgba(99, 102, 241, 0.08);\n}\n\n.schema-radio-option input[type=\"radio\"] {\n display: none;\n}\n\n.radio-checkmark {\n width: 18px;\n height: 18px;\n min-width: 18px;\n border: 2px solid #d1d5db;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s;\n margin-top: 2px;\n}\n\n.schema-radio-option input[type=\"radio\"]:checked + .radio-checkmark {\n border-color: #6366f1;\n background-color: #6366f1;\n}\n\n.schema-radio-option input[type=\"radio\"]:checked + .radio-checkmark::after {\n content: '';\n width: 6px;\n height: 6px;\n background-color: white;\n border-radius: 50%;\n}\n\n.radio-label {\n font-size: 14px;\n color: var(--color-text-primary);\n line-height: 1.5;\n}\n\n/* Checkbox Group */\n.schema-checkbox-group {\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding-top: 4px;\n}\n\n.schema-checkbox-option {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n cursor: pointer;\n padding: 8px 12px;\n border-radius: 8px;\n transition: background-color 0.15s;\n}\n\n.schema-checkbox-option:hover {\n background-color: rgba(99, 102, 241, 0.08);\n}\n\n.schema-checkbox-option input[type=\"checkbox\"] {\n display: none;\n}\n\n.checkbox-checkmark {\n width: 18px;\n height: 18px;\n min-width: 18px;\n border: 2px solid #d1d5db;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s;\n margin-top: 2px;\n}\n\n.schema-checkbox-option input[type=\"checkbox\"]:checked + .checkbox-checkmark {\n border-color: #6366f1;\n background-color: #6366f1;\n}\n\n.schema-checkbox-option input[type=\"checkbox\"]:checked + .checkbox-checkmark::after {\n content: '✓';\n color: white;\n font-size: 12px;\n font-weight: bold;\n}\n\n.checkbox-label {\n font-size: 14px;\n color: var(--color-text-primary);\n line-height: 1.5;\n}\n\n/* Input */\n.schema-input {\n width: 100%;\n padding: 10px 12px;\n font-size: 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n outline: none;\n transition: border-color 0.15s, box-shadow 0.15s;\n background-color: white;\n}\n\n.schema-input:focus {\n border-color: #6366f1;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.schema-input::placeholder {\n color: #9ca3af;\n}\n\n/* TextArea */\n.schema-textarea {\n width: 100%;\n padding: 10px 12px;\n font-size: 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n outline: none;\n transition: border-color 0.15s, box-shadow 0.15s;\n resize: vertical;\n min-height: 80px;\n font-family: inherit;\n background-color: white;\n}\n\n.schema-textarea:focus {\n border-color: #6366f1;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.schema-textarea::placeholder {\n color: #9ca3af;\n}\n\n/* Select */\n.schema-select {\n width: 100%;\n padding: 10px 12px;\n font-size: 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n outline: none;\n transition: border-color 0.15s, box-shadow 0.15s;\n background-color: white;\n cursor: pointer;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M2.5 4.5L6 8l3.5-3.5'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 12px center;\n padding-right: 36px;\n}\n\n.schema-select:focus {\n border-color: #6366f1;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n/* 表单操作按钮 */\n.schema-form-actions {\n margin-top: 24px;\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n}\n\n.schema-submit-btn {\n padding: 10px 24px;\n font-size: 14px;\n font-weight: 500;\n color: white;\n background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.schema-submit-btn:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);\n}\n\n.schema-submit-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* 表单元数据 */\n.schema-form-meta {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid rgba(99, 102, 241, 0.15);\n}\n\n.meta-uuid {\n font-size: 11px;\n color: var(--color-text-secondary);\n font-family: monospace;\n}\n","/* =============================================\n ToolCardBuffering — Cursor-style tool cards\n ============================================= */\n\n.tool-card-buffering {\n border-radius: 6px;\n padding: 8px 12px;\n margin: 4px 0;\n font-size: 13px;\n border: 1px solid #e0e0e0;\n background: #fafafa;\n transition: border-color 0.3s, background 0.3s;\n overflow: hidden;\n min-width: 0;\n max-width: 100%;\n box-sizing: border-box;\n}\n\n.tool-card-buffering.phase-generating {\n border-color: #91caff;\n background: #f0f7ff;\n}\n\n.tool-card-buffering.phase-executing {\n border-color: #ffe58f;\n background: #fffbe6;\n}\n\n.tool-card-buffering.phase-complete {\n border-color: #d9d9d9;\n background: #fafafa;\n}\n\n.tool-card-buffering.phase-error {\n border-color: #ffa39e;\n background: #fff2f0;\n}\n\n/* --- Header --- */\n.tool-card-header {\n display: flex;\n align-items: center;\n gap: 6px;\n user-select: none;\n min-height: 22px;\n min-width: 0;\n overflow: hidden;\n}\n\n.tool-phase-icon {\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.tool-card-name {\n font-weight: 600;\n color: #1a1a1a;\n font-size: 13px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n\n.tool-card-fn {\n color: #8c8c8c;\n font-size: 12px;\n}\n\n.tool-card-path-inline {\n color: #595959;\n font-size: 12px;\n font-family: 'SF Mono', 'Menlo', monospace;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 260px;\n}\n\n.tool-phase-label {\n margin-left: auto;\n font-size: 12px;\n color: #8c8c8c;\n flex-shrink: 0;\n}\n\n.tool-card-dots {\n display: inline-flex;\n gap: 3px;\n margin-left: 4px;\n}\n\n.tool-card-dots span {\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background: #1677ff;\n animation: dotPulse 1.4s infinite ease-in-out;\n}\n\n.tool-card-dots span:nth-child(2) { animation-delay: 0.2s; }\n.tool-card-dots span:nth-child(3) { animation-delay: 0.4s; }\n\n@keyframes dotPulse {\n 0%, 80%, 100% { opacity: 0.3; transform: scale(0.8); }\n 40% { opacity: 1; transform: scale(1); }\n}\n\n.tool-card-expand {\n font-size: 10px;\n color: #8c8c8c;\n flex-shrink: 0;\n margin-left: 4px;\n}\n\n/* --- Diff-style preview (Cursor-inspired) --- */\n.content-diff-preview {\n margin-top: 4px;\n padding: 4px 0 0 22px;\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 12px;\n line-height: 1.5;\n overflow: hidden;\n min-width: 0;\n max-width: 100%;\n box-sizing: border-box;\n}\n\n.diff-line {\n display: flex;\n gap: 6px;\n overflow: hidden;\n min-width: 0;\n max-width: 100%;\n}\n\n.diff-sign {\n flex-shrink: 0;\n width: 12px;\n text-align: center;\n font-weight: 600;\n}\n\n.diff-add .diff-sign { color: #389e0d; }\n.diff-remove .diff-sign { color: #cf1322; }\n\n.diff-text {\n color: #595959;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n width: 0;\n flex: 1 1 0%;\n}\n\n.diff-add .diff-text { color: #52c41a; }\n.diff-remove .diff-text { color: #ff7875; text-decoration: line-through; }\n\n.diff-more {\n color: #8c8c8c;\n font-size: 11px;\n padding-left: 18px;\n margin-top: 1px;\n}\n\n/* Generating streaming cursor */\n.content-diff-preview.streaming .diff-text {\n color: #333;\n}\n\n.streaming-block-cursor {\n display: inline-block;\n width: 7px;\n height: 14px;\n background: #1677ff;\n margin-left: 1px;\n vertical-align: text-bottom;\n animation: cursorBlink 1s step-end infinite;\n}\n\n@keyframes cursorBlink {\n 0%, 50% { opacity: 1; }\n 51%, 100% { opacity: 0; }\n}\n\n/* --- Legacy slots (used by other renderers) --- */\n.tool-card-preview-area { margin-top: 8px; }\n\n.tool-card-path {\n padding: 4px 8px;\n font-size: 11px;\n color: #8c8c8c;\n font-family: 'SF Mono', 'Menlo', monospace;\n border-bottom: 1px solid rgba(0, 0, 0, 0.06);\n margin-bottom: 4px;\n}\n\n.tool-card-preview {\n margin: 0;\n padding: 8px;\n background: rgba(0, 0, 0, 0.04);\n border-radius: 4px;\n font-family: 'SF Mono', 'Menlo', monospace;\n font-size: 12px;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-all;\n max-height: 300px;\n overflow-y: auto;\n color: #333;\n}\n\n/* ===================== Dark mode ===================== */\n@media (prefers-color-scheme: dark) {\n .tool-card-buffering {\n border-color: #434343;\n background: #1f1f1f;\n }\n .tool-card-buffering.phase-generating {\n border-color: #177ddc;\n background: #111d2c;\n }\n .tool-card-buffering.phase-executing {\n border-color: #d89614;\n background: #2b2111;\n }\n .tool-card-buffering.phase-complete {\n border-color: #434343;\n background: #1f1f1f;\n }\n .tool-card-buffering.phase-error {\n border-color: #d32029;\n background: #2a1215;\n }\n .tool-card-name { color: #e6e6e6; }\n .tool-card-fn { color: #8c8c8c; }\n .tool-card-path-inline { color: #a6a6a6; }\n .tool-phase-label { color: #a6a6a6; }\n\n .diff-text { color: #a6a6a6; }\n .diff-add .diff-sign { color: #52c41a; }\n .diff-add .diff-text { color: #73d13d; }\n .diff-remove .diff-sign { color: #f5222d; }\n .diff-remove .diff-text { color: #ff7875; }\n .diff-more { color: #6b6b6b; }\n .content-diff-preview.streaming .diff-text { color: #d9d9d9; }\n .streaming-block-cursor { background: #409eff; }\n\n .tool-card-path {\n color: #6b6b6b;\n border-bottom-color: rgba(255, 255, 255, 0.08);\n }\n .tool-card-preview {\n background: rgba(255, 255, 255, 0.06);\n color: #d9d9d9;\n }\n}\n","/* JETP-011: 渲染器专属样式 */\n\n/* 通用紧凑标签 */\n.compact-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 4px;\n}\n\n.compact-tag {\n padding: 1px 6px;\n border-radius: 3px;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.06);\n color: #666;\n font-family: 'SF Mono', 'Menlo', monospace;\n}\n\n/* ContentRenderer */\n.content-renderer-body {\n margin-top: 8px;\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.content-renderer-path {\n padding: 4px 8px;\n font-size: 11px;\n color: #666;\n background: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.06);\n font-family: 'SF Mono', 'Menlo', monospace;\n}\n\n.content-renderer-code {\n margin: 0;\n padding: 8px;\n font-family: 'SF Mono', 'Menlo', monospace;\n font-size: 12px;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-all;\n max-height: 300px;\n overflow-y: auto;\n color: #333;\n}\n\n/* CommandRenderer */\n.command-renderer-terminal {\n margin-top: 6px;\n padding: 8px 12px;\n background: #1e1e1e;\n border-radius: 4px;\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 12px;\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.command-prompt { color: #4ec9b0; flex-shrink: 0; }\n.command-text { color: #d4d4d4; word-break: break-all; white-space: pre-wrap; }\n\n/* BrowserRenderer */\n.browser-primary-value {\n font-size: 12px;\n color: #1677ff;\n font-family: 'SF Mono', 'Menlo', monospace;\n margin-left: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 300px;\n}\n\n/* QueryRenderer — inline style (Cursor-like) */\n.query-inline {\n font-size: 12px;\n color: #d46b08;\n font-style: italic;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 220px;\n}\n\n.query-scope-inline {\n font-size: 11px;\n color: #8c8c8c;\n font-family: 'SF Mono', 'Menlo', monospace;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 180px;\n}\n\n/* PathRenderer — now uses .tool-card-path-inline from ToolCardBuffering.css */\n\n/* TriggerRenderer */\n.trigger-title {\n font-size: 12px;\n color: #333;\n font-weight: 500;\n margin-left: 4px;\n}\n\n.trigger-detail, .params-detail {\n margin-top: 6px;\n padding: 6px 8px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: 4px;\n}\n\n.trigger-row, .params-row {\n display: flex;\n gap: 8px;\n padding: 2px 0;\n font-size: 12px;\n}\n\n.trigger-key, .params-key {\n color: #666;\n font-family: 'SF Mono', 'Menlo', monospace;\n min-width: 100px;\n flex-shrink: 0;\n}\n\n.trigger-value, .params-value {\n color: #333;\n word-break: break-all;\n}\n\n/* ParamsRenderer */\n.params-header {\n font-size: 12px;\n color: #333;\n margin-left: 4px;\n}\n\n/* ThinkingRenderer */\n.thinking-step {\n font-size: 11px;\n color: #8c8c8c;\n margin-left: 4px;\n}\n\n.thinking-bubble {\n margin-top: 6px;\n padding: 8px 12px;\n background: linear-gradient(135deg, #f0f5ff, #e6f7ff);\n border-radius: 8px;\n border-left: 3px solid #1677ff;\n font-size: 13px;\n line-height: 1.6;\n color: #333;\n}\n\n/* ToolResultRenderer */\n.tool-result-section {\n margin-top: 8px;\n border-top: 1px dashed rgba(0, 0, 0, 0.08);\n}\n\n.tool-result-header {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 0 2px;\n cursor: pointer;\n user-select: none;\n font-size: 12px;\n}\n\n.tool-result-header:hover {\n opacity: 0.8;\n}\n\n.tool-result-label {\n font-weight: 500;\n color: #595959;\n flex-shrink: 0;\n}\n\n.tool-result-summary {\n flex: 1;\n color: #8c8c8c;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-family: 'SF Mono', 'Menlo', monospace;\n font-size: 11px;\n}\n\n.tool-result-body {\n padding: 6px 0;\n}\n\n/* Search results */\n.tool-result-search-query {\n font-size: 12px;\n color: #595959;\n margin-bottom: 6px;\n font-weight: 500;\n}\n\n.tool-result-search-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.tool-result-search-item {\n display: block;\n padding: 6px 8px;\n border-radius: 4px;\n background: rgba(0, 0, 0, 0.02);\n border: 1px solid rgba(0, 0, 0, 0.05);\n text-decoration: none;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.tool-result-search-item:hover {\n background: rgba(22, 119, 255, 0.04);\n border-color: rgba(22, 119, 255, 0.2);\n}\n\n.search-item-title {\n font-size: 12px;\n font-weight: 500;\n color: #1677ff;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.search-item-snippet {\n font-size: 11px;\n color: #595959;\n line-height: 1.4;\n margin-top: 2px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.search-item-date {\n font-size: 10px;\n color: #8c8c8c;\n margin-top: 2px;\n display: inline-block;\n}\n\n.search-item-more {\n font-size: 11px;\n color: #8c8c8c;\n text-align: center;\n padding: 4px;\n}\n\n/* Scrape result */\n.tool-result-scrape {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.scrape-result-link {\n display: block;\n padding: 6px 8px;\n border-radius: 4px;\n background: rgba(0, 0, 0, 0.02);\n border: 1px solid rgba(0, 0, 0, 0.05);\n text-decoration: none;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.scrape-result-link:hover {\n background: rgba(22, 119, 255, 0.04);\n border-color: rgba(22, 119, 255, 0.2);\n}\n\n.scrape-result-title {\n font-size: 12px;\n font-weight: 500;\n color: #1677ff;\n margin-bottom: 2px;\n}\n\n.scrape-result-url {\n font-size: 10px;\n color: #8c8c8c;\n word-break: break-all;\n}\n\n.scrape-result-snippet {\n font-size: 11px;\n color: #595959;\n line-height: 1.5;\n padding: 0 8px;\n}\n\n/* JSON viewer */\n.tool-result-json {\n border-radius: 4px;\n overflow: hidden;\n}\n\n.tool-result-json-code {\n margin: 0;\n padding: 8px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: 4px;\n font-family: 'SF Mono', 'Menlo', monospace;\n font-size: 11px;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-all;\n color: #333;\n max-height: 280px;\n overflow-y: auto;\n}\n\n.tool-result-json-more {\n font-size: 11px;\n color: #1677ff;\n text-align: center;\n padding: 4px;\n cursor: pointer;\n}\n\n.tool-result-json-more:hover {\n text-decoration: underline;\n}\n\n/* Plain text result */\n.tool-result-text {\n font-size: 12px;\n color: #333;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* Dark mode */\n@media (prefers-color-scheme: dark) {\n .compact-tag {\n background: rgba(255, 255, 255, 0.1);\n color: #a6a6a6;\n }\n .content-renderer-body {\n border-color: rgba(255, 255, 255, 0.1);\n }\n .content-renderer-path {\n color: #8c8c8c;\n background: rgba(255, 255, 255, 0.04);\n border-bottom-color: rgba(255, 255, 255, 0.08);\n }\n .content-renderer-code {\n color: #d9d9d9;\n }\n .browser-primary-value { color: #409eff; }\n .query-inline { color: #ffc069; }\n .query-scope-inline { color: #8c8c8c; }\n /* path uses .tool-card-path-inline dark mode in ToolCardBuffering.css */\n .trigger-title { color: #d9d9d9; }\n .trigger-detail, .params-detail {\n background: rgba(255, 255, 255, 0.04);\n }\n .trigger-key, .params-key { color: #8c8c8c; }\n .trigger-value, .params-value { color: #d9d9d9; }\n .params-header { color: #d9d9d9; }\n .thinking-bubble {\n background: linear-gradient(135deg, #1a2332, #111d2c);\n color: #d9d9d9;\n border-left-color: #177ddc;\n }\n .tool-result-section { border-top-color: rgba(255, 255, 255, 0.08); }\n .tool-result-label { color: #a6a6a6; }\n .tool-result-summary { color: #6b6b6b; }\n .tool-result-search-query { color: #a6a6a6; }\n .tool-result-search-item {\n background: rgba(255, 255, 255, 0.03);\n border-color: rgba(255, 255, 255, 0.06);\n }\n .tool-result-search-item:hover {\n background: rgba(23, 125, 220, 0.08);\n border-color: rgba(23, 125, 220, 0.25);\n }\n .search-item-title { color: #409eff; }\n .search-item-snippet { color: #a6a6a6; }\n .search-item-date { color: #6b6b6b; }\n .scrape-result-link { color: #409eff; }\n .scrape-result-link:hover { background: rgba(23, 125, 220, 0.08); border-color: rgba(23, 125, 220, 0.25); }\n .scrape-result-title { color: #d9d9d9; }\n .scrape-result-url { color: #6b6b6b; }\n .scrape-result-snippet { color: #a6a6a6; }\n .tool-result-json-code { background: rgba(255, 255, 255, 0.04); color: #d9d9d9; }\n .tool-result-json-more { color: #409eff; }\n .tool-result-text { color: #d9d9d9; }\n}\n","/**\n * 消息内容样式\n * Streamdown 的排版由其内置 Tailwind prose 类处理,\n * 此处只负责容器布局和与 JetForge 设计语言的少量微调。\n */\n\n/* ===== Streamdown 消息容器 ===== */\n.sd-message {\n padding: 12px 16px;\n background: var(--color-bg-secondary, #fff);\n border-radius: var(--radius, 8px);\n color: var(--color-text-primary, #1f1f1f);\n word-break: break-word;\n overflow-wrap: break-word;\n overflow-x: auto;\n min-width: 0;\n max-width: 100%;\n font-size: 14px;\n position: relative;\n line-height: 1.8;\n}\n\n/* 排版间距补偿:Tailwind prose 在 @layer 内优先级较低时的后备 */\n.sd-message h1, .sd-message h2, .sd-message h3,\n.sd-message h4, .sd-message h5, .sd-message h6 {\n margin-top: 1.2em;\n margin-bottom: 0.5em;\n}\n\n.sd-message h1:first-child, .sd-message h2:first-child,\n.sd-message h3:first-child {\n margin-top: 0;\n}\n\n.sd-message p {\n margin-bottom: 0.65em;\n}\n\n.sd-message p:last-child {\n margin-bottom: 0;\n}\n\n.sd-message ul, .sd-message ol {\n margin-top: 0.4em;\n margin-bottom: 0.65em;\n}\n\n.sd-message blockquote {\n margin-top: 0.6em;\n margin-bottom: 0.6em;\n}\n\n/* KaTeX 块公式上下留出呼吸空间 */\n.sd-message .katex-display {\n margin: 0.8em 0;\n}\n\n/* 思考区内的 Streamdown 不加容器样式 */\n.sd-think {\n font-size: 13px;\n line-height: 1.7;\n}\n\n/* ===== 打字机闪烁光标 ===== */\n.streaming-cursor {\n display: inline-block;\n width: 2px;\n height: 1em;\n background: var(--primary-color, #667eea);\n margin-left: 2px;\n vertical-align: text-bottom;\n animation: cursor-blink 1s steps(2) infinite;\n}\n\n@keyframes cursor-blink {\n 0% { opacity: 1; }\n 50% { opacity: 0; }\n}\n\n/* ===== 向后兼容:旧 .text-content ===== */\n.text-content {\n padding: 12px 16px;\n background: var(--color-bg-secondary);\n border-radius: var(--radius);\n line-height: 1.6;\n color: var(--color-text-primary);\n word-break: break-word;\n overflow-wrap: break-word;\n overflow-x: auto;\n min-width: 0;\n max-width: 100%;\n}\n\n/* ===== 思考过程 ===== */\n.think-chunk {\n background: rgba(139, 92, 246, 0.03);\n border: 1px solid rgba(139, 92, 246, 0.12);\n border-radius: var(--radius);\n overflow: hidden;\n}\n\n.think-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n cursor: pointer;\n user-select: none;\n}\n\n.think-header:hover {\n background: rgba(139, 92, 246, 0.05);\n}\n\n.think-title {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n color: rgba(139, 92, 246, 0.7);\n font-size: 13px;\n}\n\n.think-icon {\n font-size: 14px;\n display: inline-block;\n}\n\n.think-icon.thinking-animation {\n animation: think-pulse 1.5s ease-in-out infinite;\n}\n\n@keyframes think-pulse {\n 0%, 100% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.1); opacity: 0.7; }\n}\n\n.think-text { flex: 1; }\n\n.thinking-dots {\n display: inline-flex;\n margin-left: 2px;\n}\n\n.thinking-dots span {\n animation: dot-bounce 1.4s ease-in-out infinite;\n opacity: 0;\n}\n\n.thinking-dots span:nth-child(1) { animation-delay: 0s; }\n.thinking-dots span:nth-child(2) { animation-delay: 0.2s; }\n.thinking-dots span:nth-child(3) { animation-delay: 0.4s; }\n\n@keyframes dot-bounce {\n 0%, 60%, 100% { opacity: 0; }\n 30% { opacity: 1; }\n}\n\n.think-chunk.thinking {\n border-color: rgba(139, 92, 246, 0.18);\n}\n\n.think-chunk.thinking .think-header {\n background: rgba(139, 92, 246, 0.02);\n}\n\n.collapse-arrow {\n color: var(--color-text-secondary);\n transition: transform 0.2s ease;\n font-size: 10px;\n}\n\n.collapse-arrow.expanded {\n transform: rotate(180deg);\n}\n\n.think-preview {\n overflow: hidden;\n color: var(--color-text-secondary);\n font-size: 13px;\n line-height: 1.6;\n background: var(--color-bg-primary);\n transition: max-height 0.4s ease, opacity 0.4s ease, padding 0.4s ease;\n mask-image: linear-gradient(to bottom, transparent 0%, black 20%, black 100%);\n -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 20%, black 100%);\n}\n\n.think-preview.think-preview-open {\n max-height: 100px;\n opacity: 1;\n padding: 8px 12px;\n border-top: 1px solid rgba(139, 92, 246, 0.1);\n}\n\n.think-preview.think-preview-closed {\n max-height: 0;\n opacity: 0;\n padding: 0 12px;\n border-top: 1px solid transparent;\n}\n\n.think-content {\n padding: 12px;\n border-top: 1px solid var(--color-primary);\n color: var(--color-text-secondary);\n font-size: 13px;\n line-height: 1.6;\n background: var(--color-bg-primary);\n}\n\n/* ===== 产出物 ===== */\n.artifact-card {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background: var(--color-bg-secondary);\n border: 1px solid var(--color-border);\n border-radius: var(--radius);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.artifact-card:hover {\n background: var(--color-bg-tertiary);\n box-shadow: var(--shadow);\n}\n\n.artifact-icon { font-size: 24px; }\n.artifact-info { flex: 1; }\n\n.artifact-name {\n font-weight: 500;\n color: var(--color-text-primary);\n margin-bottom: 2px;\n}\n\n.artifact-meta {\n font-size: 12px;\n color: var(--color-text-secondary);\n}\n\n.artifact-size {\n font-size: 12px;\n color: var(--color-text-secondary);\n}\n\n.artifact-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n/* ===== 工具执行 ===== */\n.tool-execution {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--color-bg-tertiary);\n border-radius: var(--radius);\n color: var(--color-text-secondary);\n font-size: 13px;\n min-width: 0;\n overflow: hidden;\n}\n\n.tool-icon { font-size: 14px; }\n.tool-text { font-weight: 500; flex: 1; }\n\n.tool-status {\n font-size: 11px;\n padding: 2px 6px;\n border-radius: 4px;\n background: rgba(0, 0, 0, 0.05);\n}\n\n.tool-execution.tool-running {\n background: rgba(59, 130, 246, 0.08);\n border-left: 3px solid rgba(59, 130, 246, 0.5);\n}\n\n.tool-execution.tool-running .tool-icon {\n animation: tool-spin 1s linear infinite;\n}\n\n@keyframes tool-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n.tool-execution.tool-success {\n background: rgba(34, 197, 94, 0.08);\n border-left: 3px solid rgba(34, 197, 94, 0.5);\n}\n\n.tool-execution.tool-success .tool-status {\n background: rgba(34, 197, 94, 0.15);\n color: rgb(22, 163, 74);\n}\n\n.tool-execution.tool-error {\n background: rgba(239, 68, 68, 0.08);\n border-left: 3px solid rgba(239, 68, 68, 0.5);\n}\n\n.tool-execution.tool-error .tool-status {\n background: rgba(239, 68, 68, 0.15);\n color: rgb(220, 38, 38);\n}\n\n/* ===== HITL 等待卡片 ===== */\n.hitl-wait-card {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n background: linear-gradient(135deg, rgba(251, 191, 36, 0.08) 0%, rgba(245, 158, 11, 0.05) 100%);\n border: 1px solid rgba(251, 191, 36, 0.3);\n border-radius: var(--radius);\n}\n\n.hitl-icon {\n font-size: 20px;\n animation: hitl-pulse 2s ease-in-out infinite;\n}\n\n@keyframes hitl-pulse {\n 0%, 100% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.1); opacity: 0.7; }\n}\n\n.hitl-content { flex: 1; }\n\n.hitl-text {\n font-weight: 500;\n color: var(--color-text-primary);\n font-size: 14px;\n}\n\n.hitl-uuid {\n font-size: 11px;\n color: var(--color-text-secondary);\n margin-top: 4px;\n font-family: monospace;\n}\n\n.hitl-form-card {\n background: linear-gradient(135deg, rgba(99, 102, 241, 0.08) 0%, rgba(139, 92, 246, 0.05) 100%);\n border: 1px solid rgba(99, 102, 241, 0.3);\n border-radius: var(--radius);\n overflow: hidden;\n}\n\n.hitl-form-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: rgba(99, 102, 241, 0.1);\n border-bottom: 1px solid rgba(99, 102, 241, 0.2);\n}\n\n.hitl-form-icon { font-size: 18px; }\n\n.hitl-form-title {\n font-weight: 600;\n font-size: 14px;\n color: var(--color-text-primary);\n}\n\n.hitl-form-body { padding: 0; }\n","/**\n * 子 Agent 卡片样式\n */\n\n.child-agent-card {\n background: var(--color-bg-tertiary);\n border: 1px solid var(--color-border);\n border-left: 3px solid var(--color-primary);\n border-radius: var(--radius);\n overflow: hidden;\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.child-agent-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 12px;\n cursor: pointer;\n user-select: none;\n background: var(--color-bg-secondary);\n border-bottom: 1px solid transparent;\n min-width: 0;\n}\n\n.child-agent-card.expanded .child-agent-header {\n border-bottom-color: var(--color-border);\n}\n\n.child-agent-header:hover {\n background: var(--color-bg-tertiary);\n}\n\n.child-agent-title {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n overflow: hidden;\n}\n\n.agent-icon {\n font-size: 16px;\n}\n\n/* 卡片标题(任务目标) */\n.child-agent-card .card-title {\n font-weight: 500;\n color: var(--color-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.child-agent-status {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.child-agent-status .status-badge {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 6px;\n}\n\n.status-icon {\n display: inline-block;\n}\n\n.status-icon.spinning {\n animation: spin 1.5s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n.child-agent-content {\n overflow-y: auto;\n overflow-x: hidden;\n background: var(--color-bg-primary);\n}\n\n.child-agent-inner {\n padding: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n overflow: hidden;\n word-break: break-word;\n}\n\n/* 内容滚动条样式 */\n.child-agent-content::-webkit-scrollbar {\n width: 6px;\n}\n\n.child-agent-content::-webkit-scrollbar-track {\n background: var(--color-bg-secondary);\n}\n\n.child-agent-content::-webkit-scrollbar-thumb {\n background: var(--color-border);\n border-radius: 3px;\n}\n\n.child-agent-content::-webkit-scrollbar-thumb:hover {\n background: var(--color-text-secondary);\n}\n\n/* Agent 名称(右下角) */\n.child-agent-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 4px;\n padding: 6px 12px;\n background: var(--color-bg-secondary);\n border-top: 1px solid var(--color-border);\n}\n\n.footer-agent-icon {\n font-size: 12px;\n opacity: 0.6;\n}\n\n.footer-agent-name {\n font-size: 11px;\n color: rgba(139, 92, 246, 0.6);\n font-weight: 500;\n}\n","/**\n * ChatWidget 主样式\n */\n\n/* ===== CSS 变量 ===== */\n.chat-widget {\n --color-primary: #8b5cf6;\n --color-primary-bg: #f5f3ff;\n --color-success: #52c41a;\n --color-warning: #faad14;\n --color-error: #ff4d4f;\n --color-text-primary: #1f2937;\n --color-text-secondary: #6b7280;\n --color-border: #e5e7eb;\n --color-bg-primary: #ffffff;\n --color-bg-secondary: #f9fafb;\n --color-bg-tertiary: #f3f4f6;\n --radius: 8px;\n --shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n/* 深色主题 */\n.chat-widget.dark {\n --color-primary: #a78bfa;\n --color-primary-bg: #1e1b4b;\n --color-success: #73d13d;\n --color-warning: #ffc53d;\n --color-error: #ff7875;\n --color-text-primary: #f9fafb;\n --color-text-secondary: #9ca3af;\n --color-border: #374151;\n --color-bg-primary: #111827;\n --color-bg-secondary: #1f2937;\n --color-bg-tertiary: #374151;\n}\n\n/* ===== 主容器 ===== */\n.chat-widget {\n display: flex;\n flex-direction: column;\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border);\n border-radius: var(--radius);\n overflow: hidden;\n min-width: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-size: 14px;\n color: var(--color-text-primary);\n}\n\n/* ===== 头部 ===== */\n.chat-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--color-bg-secondary);\n border-bottom: 1px solid var(--color-border);\n flex-shrink: 0;\n position: relative; /* 支持 session-title 绝对定位 */\n}\n\n.chat-header-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.header-icon {\n font-size: 20px;\n}\n\n/* ===== Session Title ===== */\n.session-title {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n max-width: 60%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 14px;\n color: var(--color-text-secondary);\n font-weight: 500;\n opacity: 0;\n animation: title-fade-in 0.3s ease-out forwards;\n}\n\n.session-title.animating .session-title-text {\n border-right: none;\n}\n\n.session-title-text {\n display: inline;\n}\n\n.title-cursor {\n display: inline-block;\n margin-left: 1px;\n color: var(--color-primary);\n animation: title-cursor-blink 0.8s ease-in-out infinite;\n}\n\n@keyframes title-fade-in {\n from {\n opacity: 0;\n transform: translateX(-50%) translateY(-5px);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n}\n\n@keyframes title-cursor-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0; }\n}\n\n/* ===== 状态徽章 ===== */\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.status-badge.status-running {\n background: var(--color-primary-bg);\n color: var(--color-primary);\n}\n\n.status-badge.status-completed {\n background: rgba(82, 196, 26, 0.1);\n color: var(--color-success);\n}\n\n.status-badge.status-error {\n background: rgba(255, 77, 79, 0.1);\n color: var(--color-error);\n}\n\n.status-icon {\n animation: spin 1s linear infinite;\n}\n\n.status-badge.status-completed .status-icon,\n.status-badge.status-error .status-icon {\n animation: none;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/* ===== 消息区域容器 ===== */\n.message-list-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* ===== 消息列表 ===== */\n.message-list {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n position: relative; /* 确保子元素 offsetTop 相对于此容器 */\n min-width: 0;\n}\n\n/* ===== 动态清屏垫片 ===== */\n/* 放在轮次内容下方,高度 = 容器高度 - 轮次内容高度 */\n/* 实现从顶部向下生长效果:内容在上,垫片填充下方空间 */\n.clear-screen-spacer {\n flex-shrink: 0;\n transition: height 0.15s ease-out;\n}\n\n/* 垫片折叠时隐藏 */\n.clear-screen-spacer.spacer-collapsed {\n display: none;\n}\n\n/* ===== 轮次容器 ===== */\n.round-container {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-width: 0;\n}\n\n/* ===== 轮次分隔线 ===== */\n.round-separator {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 8px 0;\n color: var(--color-text-secondary);\n font-size: 12px;\n}\n\n.round-separator::before,\n.round-separator::after {\n content: '';\n flex: 1;\n height: 1px;\n background: var(--color-border);\n}\n\n/* ===== 空状态 ===== */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n gap: 12px;\n color: var(--color-text-secondary);\n}\n\n.empty-icon {\n font-size: 48px;\n opacity: 0.5;\n}\n\n.empty-text {\n font-size: 14px;\n}\n\n/* ===== 底部 ===== */\n.chat-footer {\n padding: 8px 16px;\n font-size: 12px;\n color: var(--color-text-secondary);\n background: var(--color-bg-secondary);\n border-top: 1px solid var(--color-border);\n flex-shrink: 0;\n}\n\n/* ===== 流式光标 ===== */\n.streaming-cursor {\n display: inline-block;\n width: 2px;\n height: 1.2em;\n background: var(--color-primary);\n animation: cursor-blink 1s ease-in-out infinite;\n margin-left: 2px;\n vertical-align: text-bottom;\n}\n\n@keyframes cursor-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0; }\n}\n\n/* ===== 文件内容查看器 ===== */\n.artifact-viewer-overlay {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 100;\n display: flex;\n align-items: center;\n justify-content: center;\n backdrop-filter: blur(2px);\n}\n\n.artifact-viewer-panel {\n width: 90%;\n max-width: 720px;\n max-height: 85%;\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border);\n border-radius: var(--radius);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.16);\n}\n\n.artifact-viewer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-border);\n flex-shrink: 0;\n}\n\n.artifact-viewer-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n font-size: 14px;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.artifact-viewer-icon {\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.artifact-viewer-close {\n background: none;\n border: none;\n font-size: 16px;\n cursor: pointer;\n color: var(--color-text-secondary);\n padding: 4px 8px;\n border-radius: 4px;\n flex-shrink: 0;\n}\n\n.artifact-viewer-close:hover {\n background: var(--color-bg-tertiary);\n color: var(--color-text-primary);\n}\n\n.artifact-viewer-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 16px;\n font-size: 12px;\n color: var(--color-text-secondary);\n border-bottom: 1px solid var(--color-border);\n flex-shrink: 0;\n}\n\n.artifact-viewer-path {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n opacity: 0.7;\n}\n\n.artifact-viewer-body {\n flex: 1;\n overflow: auto;\n padding: 0;\n min-height: 120px;\n}\n\n.artifact-viewer-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 48px 16px;\n color: var(--color-text-secondary);\n}\n\n.artifact-viewer-error {\n padding: 24px 16px;\n color: var(--color-error);\n text-align: center;\n}\n\n.artifact-viewer-content {\n margin: 0;\n padding: 16px;\n font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;\n font-size: 13px;\n line-height: 1.6;\n white-space: pre-wrap;\n word-break: break-word;\n color: var(--color-text-primary);\n background: transparent;\n}\n\n.artifact-viewer-binary {\n padding: 48px 16px;\n text-align: center;\n color: var(--color-text-secondary);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,458 @@
1
+ import React from 'react';
2
+
3
+ type MessageContentType = 'text' | 'think' | 'plan' | 'artifact' | 'json_schema' | 'html_schema' | 'json_schema_wait';
4
+ type NotificationType = 'user_input' | 'node_notification' | 'start' | 'model_start' | 'model_result' | 'model_end' | 'agent_start' | 'agent_result' | 'agent_end' | 'artifact_start' | 'artifact_result' | 'artifact_end' | 'plan_start' | 'plan_result' | 'plan_end' | 'mcp_generating' | 'mcp_start' | 'mcp_result' | 'mcp_end' | 'finish' | 'canceled' | 'error' | 'human_input_request' | 'human_input_received' | 'human_input_timeout' | 'human_input_completed' | 'session_title' | 'compression_started' | 'compression_completed' | 'node_summary';
5
+ interface UiConfig {
6
+ display_type: 'content' | 'command' | 'browser' | 'query' | 'path' | 'trigger' | 'thinking' | 'params';
7
+ icon?: string;
8
+ primary_field?: string;
9
+ header_field?: string;
10
+ compact_fields?: string[];
11
+ hide_fields?: string[];
12
+ }
13
+ interface SSEMessage {
14
+ interaction_id: string;
15
+ agent_instance_id: number;
16
+ call_batch_id: string;
17
+ parent_call_batch_id?: string;
18
+ level: number;
19
+ agent_name: string;
20
+ task_purpose?: string;
21
+ notification_type?: NotificationType;
22
+ tool_name?: string;
23
+ tool_call_id?: string;
24
+ tool_status?: 'success' | 'error';
25
+ args_preview?: string;
26
+ ui_config?: UiConfig;
27
+ parent_tool_call_id?: string;
28
+ content_type: MessageContentType;
29
+ content: string;
30
+ timestamp?: string;
31
+ }
32
+ interface PlanItem {
33
+ text: string;
34
+ status: 'pending' | 'active' | 'completed' | 'error';
35
+ }
36
+ interface TaskPlan {
37
+ title?: string;
38
+ items: PlanItem[];
39
+ progress: {
40
+ completed: number;
41
+ total: number;
42
+ };
43
+ }
44
+ type TodoTaskStatus = 'pending' | 'in_progress' | 'completed' | 'blocked';
45
+ interface TodoTask {
46
+ id: string | null;
47
+ description: string;
48
+ status: TodoTaskStatus;
49
+ children: TodoTask[];
50
+ }
51
+ interface TodoGroup {
52
+ name: string;
53
+ status: TodoTaskStatus;
54
+ tasks: TodoTask[];
55
+ }
56
+ interface TodoPhase {
57
+ name: string;
58
+ status: TodoTaskStatus;
59
+ groups: TodoGroup[];
60
+ tasks: TodoTask[];
61
+ }
62
+ interface TodoStats {
63
+ total: number;
64
+ completed: number;
65
+ in_progress: number;
66
+ pending: number;
67
+ blocked: number;
68
+ }
69
+ interface TodoData {
70
+ title: string;
71
+ phases: TodoPhase[];
72
+ stats: TodoStats;
73
+ }
74
+ interface TodoNotificationContent {
75
+ operation: 'checklist_edit';
76
+ plan_id: string;
77
+ checklist_path: string;
78
+ checklist_content: string;
79
+ checklist: TodoData;
80
+ source_type: 'checklist_edit';
81
+ }
82
+ declare function isTodoNotificationContent(data: unknown): data is TodoNotificationContent;
83
+ interface Artifact {
84
+ id: string;
85
+ name: string;
86
+ type: string;
87
+ size?: string;
88
+ content?: string;
89
+ preview?: string;
90
+ metadata?: {
91
+ gitPath?: string;
92
+ gitCommitHash?: string;
93
+ createdByAgentId?: string;
94
+ operationType?: string;
95
+ };
96
+ }
97
+ interface HITLRequest {
98
+ await_command_uuid: string;
99
+ schema_type: 'json_schema' | 'html_schema';
100
+ schema: object | string;
101
+ title?: string;
102
+ description?: string;
103
+ }
104
+ interface HITLResponse {
105
+ await_command_uuid: string;
106
+ data: unknown;
107
+ confirmed: boolean;
108
+ }
109
+ interface AggregatedMessage {
110
+ id: string;
111
+ agentInstanceId: number;
112
+ callBatchId: string;
113
+ parentCallBatchId?: string;
114
+ level: number;
115
+ agentName: string;
116
+ taskPurpose?: string;
117
+ notificationType?: NotificationType;
118
+ toolName?: string;
119
+ toolCallId?: string;
120
+ toolStatus?: 'success' | 'error';
121
+ toolPhase?: 'generating' | 'executing' | 'complete' | 'error';
122
+ argsPreview?: string;
123
+ uiConfig?: UiConfig;
124
+ parentToolCallId?: string;
125
+ contentType: MessageContentType;
126
+ contentChunks: string[];
127
+ timestamp: string;
128
+ plan?: TaskPlan;
129
+ artifact?: Artifact;
130
+ artifacts?: Artifact[];
131
+ hitlRequest?: HITLRequest;
132
+ }
133
+ interface Round {
134
+ interactionId: string;
135
+ index: number;
136
+ userMessage: string;
137
+ timestamp: string;
138
+ status: 'running' | 'completed' | 'error';
139
+ plan?: TaskPlan;
140
+ messages: AggregatedMessage[];
141
+ topPosition?: number;
142
+ }
143
+ type ExecutionStatus = 'idle' | 'running' | 'compressing' | 'completed' | 'error';
144
+ interface ChatWidgetConfig {
145
+ showPinnedArea?: boolean;
146
+ showPlan?: boolean;
147
+ enableTypewriter?: boolean;
148
+ typewriterSpeed?: number;
149
+ autoScroll?: boolean;
150
+ childAgentMaxHeight?: number;
151
+ theme?: 'light' | 'dark' | 'auto';
152
+ displayLevels?: number[];
153
+ }
154
+ declare const DEFAULT_CONFIG: Required<ChatWidgetConfig>;
155
+ interface ChatWidgetProps {
156
+ adapter: ChatWidgetAdapter;
157
+ sessionId?: string | number;
158
+ initialMessages?: Round[];
159
+ config?: ChatWidgetConfig;
160
+ renderHeaderExtra?: (sessionId: string | number) => React.ReactNode;
161
+ renderFooter?: (api: ChatWidgetAPI | null) => React.ReactNode;
162
+ renderToolResult?: (displayType: string, data: ToolCallData) => React.ReactNode | null;
163
+ locale?: 'zh-CN' | 'en-US';
164
+ onArtifactClick?: (artifact: Artifact) => void;
165
+ onHITLSubmit?: (response: HITLResponse) => Promise<void>;
166
+ onStatusChange?: (status: ExecutionStatus) => void;
167
+ onError?: (error: Error) => void;
168
+ onReady?: (api: ChatWidgetAPI) => void;
169
+ className?: string;
170
+ style?: React.CSSProperties;
171
+ height?: number | string;
172
+ }
173
+ interface ChatWidgetAPI {
174
+ sendMessage: (message: string, agentId?: string) => void;
175
+ getCurrentRound: () => Round | null;
176
+ getAllRounds: () => Round[];
177
+ scrollToBottom: () => void;
178
+ getStatus: () => ExecutionStatus;
179
+ }
180
+ interface ToolCallData {
181
+ tool_name: string;
182
+ display_type: string;
183
+ args: Record<string, unknown>;
184
+ args_preview?: Record<string, unknown>;
185
+ result?: unknown;
186
+ status: 'pending' | 'running' | 'completed' | 'failed';
187
+ ui_config?: UiConfig;
188
+ }
189
+ interface NotificationTurn {
190
+ type: string;
191
+ contents: Array<{
192
+ type?: string;
193
+ content?: string;
194
+ read?: boolean;
195
+ }>;
196
+ timestamp: number | null;
197
+ session_id: number;
198
+ interaction_id: string;
199
+ agent_id: string | null;
200
+ agent_instance_id: number;
201
+ parent_agent_instance_id: number;
202
+ call_batch_id: number;
203
+ parent_call_batch_id: number | null;
204
+ level: number | null;
205
+ card_title: string | null;
206
+ caller_type: string | null;
207
+ user_id: string | null;
208
+ ext: Record<string, unknown> | null;
209
+ turn_id: number;
210
+ turn_index: number;
211
+ status: string;
212
+ timestamp_start: number | null;
213
+ timestamp_end: number | null;
214
+ }
215
+ interface ResourceContent {
216
+ resource_id: string;
217
+ file_name: string;
218
+ git_path: string;
219
+ mime_type: string | null;
220
+ is_text_readable: boolean | null;
221
+ file_size: number | null;
222
+ is_binary: boolean;
223
+ content: string;
224
+ }
225
+ interface SessionDetail {
226
+ session_id: number;
227
+ session_title?: string;
228
+ status?: string;
229
+ created_at?: string;
230
+ }
231
+ interface ChatWidgetAdapter {
232
+ createSession(agentId: string): Promise<{
233
+ sessionId: number;
234
+ instanceId: number;
235
+ }>;
236
+ getSessionDetail(sessionId: number): Promise<SessionDetail>;
237
+ getSessionHistory(sessionId: number): Promise<NotificationTurn[]>;
238
+ getResourceContent(sessionId: number, resourceId: string): Promise<ResourceContent>;
239
+ submitHITLResponse(response: HITLResponse): Promise<void>;
240
+ getStreamUrl(): string;
241
+ getAuthHeaders(): Record<string, string>;
242
+ getExtraHeaders?(): Record<string, string>;
243
+ onAuthFailure?(): void;
244
+ refreshAuth?(): Promise<boolean>;
245
+ }
246
+ declare function mergeConsecutiveThinkMessages(messages: AggregatedMessage[]): AggregatedMessage[];
247
+ interface TodoCardProps {
248
+ todo: TodoData;
249
+ compact?: boolean;
250
+ }
251
+ interface PinnedAreaProps {
252
+ round: Round | null;
253
+ isTransitioning: boolean;
254
+ config?: ChatWidgetConfig;
255
+ todoMap?: Map<string, TodoData>;
256
+ }
257
+ interface RoundHeaderProps {
258
+ round: Round;
259
+ isPinned: boolean;
260
+ config?: ChatWidgetConfig;
261
+ todoMap?: Map<string, TodoData>;
262
+ }
263
+ interface MessageContentProps {
264
+ message: AggregatedMessage;
265
+ enableTypewriter?: boolean;
266
+ typewriterSpeed?: number;
267
+ onArtifactClick?: (artifact: Artifact) => void;
268
+ }
269
+ interface ChildAgentCardProps {
270
+ message: AggregatedMessage;
271
+ children: AggregatedMessage[];
272
+ maxHeight?: number;
273
+ config?: ChatWidgetConfig;
274
+ defaultExpanded?: boolean;
275
+ parentTaskPurpose?: string;
276
+ }
277
+ interface PlanCardProps {
278
+ plan: TaskPlan;
279
+ status: Round['status'];
280
+ compact?: boolean;
281
+ }
282
+
283
+ /**
284
+ * ChatWidget 主组件
285
+ *
286
+ * 严格按照设计文档实现:
287
+ * - SSE 消息流处理
288
+ * - 动态置顶(滚动切换,带防抖和滞后阈值)
289
+ * - 多轮对话展示
290
+ * - 平滑过渡动画(淡入淡出)
291
+ * - 子 Agent 卡片
292
+ * - Human-in-the-loop 支持
293
+ */
294
+
295
+ declare const ChatWidget: React.FC<ChatWidgetProps>;
296
+
297
+ /**
298
+ * SSE 连接 Hook (SDK version)
299
+ *
300
+ * Auth and headers are fully delegated to ChatWidgetAdapter,
301
+ * eliminating direct localStorage / env-var coupling.
302
+ */
303
+
304
+ type ConnectionStatus = 'idle' | 'connecting' | 'connected' | 'disconnected' | 'error';
305
+ interface UseSSEOptions {
306
+ adapter: ChatWidgetAdapter;
307
+ autoConnect?: boolean;
308
+ reconnectInterval?: number;
309
+ maxReconnectAttempts?: number;
310
+ onMessage?: (message: SSEMessage) => void;
311
+ onStatusChange?: (status: ConnectionStatus) => void;
312
+ onError?: (error: Error) => void;
313
+ }
314
+ interface UseSSEReturn {
315
+ status: ConnectionStatus;
316
+ connect: (url: string, body?: object) => void;
317
+ disconnect: () => void;
318
+ }
319
+ declare function useSSE(options: UseSSEOptions): UseSSEReturn;
320
+
321
+ /**
322
+ * 消息聚合 Hook
323
+ *
324
+ * 实现高性能消息聚合:
325
+ * - Map 索引 O(1) 查找
326
+ * - 字符串数组延迟拼接
327
+ * - requestAnimationFrame 批量更新
328
+ * - 延迟 JSON 解析
329
+ */
330
+
331
+ interface MessageAggregatorState {
332
+ rounds: Map<string, Round>;
333
+ currentInteractionId: string | null;
334
+ }
335
+ interface UseMessageAggregatorReturn {
336
+ state: MessageAggregatorState;
337
+ todoMap: Map<string, TodoData>;
338
+ processMessage: (message: SSEMessage) => void;
339
+ getRoundsList: () => Round[];
340
+ getCurrentRound: () => Round | null;
341
+ startNewRound: (interactionId: string, userMessage: string) => void;
342
+ loadRounds: (rounds: Round[]) => void;
343
+ finalizeRound: (interactionId: string) => void;
344
+ clear: () => void;
345
+ }
346
+ declare function useMessageAggregator(): UseMessageAggregatorReturn;
347
+
348
+ /**
349
+ * 置顶区域组件
350
+ * 显示当前置顶轮次的用户消息、任务计划和 Todo
351
+ */
352
+
353
+ declare const PinnedArea: React.FC<PinnedAreaProps>;
354
+
355
+ /**
356
+ * 轮次标题组件
357
+ * 在消息流中显示非置顶轮次的用户消息和计划
358
+ */
359
+
360
+ declare const RoundHeader: React.FC<RoundHeaderProps>;
361
+
362
+ /**
363
+ * 消息内容组件
364
+ * 根据消息类型渲染不同的内容
365
+ * 文本类型使用 Streamdown 渲染 Markdown(代码高亮、Mermaid、数学公式、CJK)
366
+ * 保留逐字打字机效果:将逐步展开的文本交给 Streamdown 渲染
367
+ */
368
+
369
+ declare const MessageContent: React.FC<MessageContentProps>;
370
+
371
+ /**
372
+ * 子 Agent 卡片组件
373
+ * 可折叠,固定高度,内部滚动
374
+ */
375
+
376
+ declare const ChildAgentCard: React.FC<ChildAgentCardProps & {
377
+ onArtifactClick?: (artifact: Artifact) => void;
378
+ }>;
379
+
380
+ /**
381
+ * 任务计划卡片组件
382
+ */
383
+
384
+ declare const PlanCard: React.FC<PlanCardProps>;
385
+
386
+ declare const TodoCard: React.FC<TodoCardProps>;
387
+
388
+ /**
389
+ * Schema 表单渲染器
390
+ * 根据 JSON schema 动态生成表单 UI
391
+ */
392
+
393
+ interface SchemaNode {
394
+ type: string;
395
+ key?: string;
396
+ name?: string;
397
+ props?: Record<string, unknown>;
398
+ children?: SchemaNode[];
399
+ options?: Array<{
400
+ label: string;
401
+ value: string;
402
+ }>;
403
+ rules?: Array<{
404
+ required?: boolean;
405
+ message?: string;
406
+ }>;
407
+ schema?: SchemaNode;
408
+ }
409
+ interface SchemaFormRendererProps {
410
+ schema: SchemaNode;
411
+ onSubmit?: (values: Record<string, unknown>) => void | Promise<void>;
412
+ awaitCommandUuid?: string;
413
+ }
414
+ declare const SchemaFormRenderer: React.FC<SchemaFormRendererProps>;
415
+
416
+ interface ToolCardBufferingProps {
417
+ message: AggregatedMessage;
418
+ }
419
+ declare const ToolCardBuffering: React.FC<ToolCardBufferingProps>;
420
+
421
+ interface DefaultJetAgentsAdapterOptions {
422
+ baseUrl: string;
423
+ getToken: () => string | null;
424
+ refreshToken?: () => Promise<string | null>;
425
+ getOrgId?: () => string | null;
426
+ onAuthFailure?: () => void;
427
+ }
428
+ declare class DefaultJetAgentsAdapter implements ChatWidgetAdapter {
429
+ private readonly baseUrl;
430
+ private readonly options;
431
+ private refreshPromise;
432
+ constructor(options: DefaultJetAgentsAdapterOptions);
433
+ createSession(agentId: string): Promise<{
434
+ sessionId: number;
435
+ instanceId: number;
436
+ }>;
437
+ getSessionDetail(sessionId: number): Promise<SessionDetail>;
438
+ getSessionHistory(sessionId: number): Promise<NotificationTurn[]>;
439
+ getResourceContent(sessionId: number, resourceId: string): Promise<ResourceContent>;
440
+ submitHITLResponse(response: HITLResponse): Promise<void>;
441
+ getStreamUrl(): string;
442
+ getAuthHeaders(): Record<string, string>;
443
+ onAuthFailure(): void;
444
+ refreshAuth(): Promise<boolean>;
445
+ private fetchJSON;
446
+ }
447
+
448
+ declare class ChatWidgetAuthError extends Error {
449
+ readonly name: "ChatWidgetAuthError";
450
+ constructor(message?: string);
451
+ }
452
+ declare class ChatWidgetNetworkError extends Error {
453
+ readonly statusCode: number;
454
+ readonly name: "ChatWidgetNetworkError";
455
+ constructor(message: string, statusCode: number);
456
+ }
457
+
458
+ export { type AggregatedMessage, type Artifact, ChatWidget, type ChatWidgetAPI, type ChatWidgetAdapter, ChatWidgetAuthError, type ChatWidgetConfig, ChatWidgetNetworkError, type ChatWidgetProps, ChildAgentCard, type ConnectionStatus, DEFAULT_CONFIG, DefaultJetAgentsAdapter, type DefaultJetAgentsAdapterOptions, type ExecutionStatus, type HITLRequest, type HITLResponse, MessageContent, type MessageContentType, type NotificationTurn, type NotificationType, PinnedArea, PlanCard, type PlanItem, type ResourceContent, type Round, RoundHeader, type SSEMessage, SchemaFormRenderer, type SessionDetail, type TaskPlan, TodoCard, type TodoData, type TodoGroup, type TodoPhase, type TodoStats, type TodoTask, type ToolCallData, ToolCardBuffering, type UiConfig, isTodoNotificationContent, mergeConsecutiveThinkMessages, useMessageAggregator, useSSE };