@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.
- package/dist/index.cjs +3235 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +2301 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +458 -0
- package/dist/index.d.ts +458 -0
- package/dist/index.js +3182 -0
- package/dist/index.js.map +1 -0
- package/package.json +67 -0
|
@@ -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":[]}
|
package/dist/index.d.cts
ADDED
|
@@ -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 };
|