@hef2024/llmasaservice-ui 0.24.5 → 0.25.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.css CHANGED
@@ -1075,6 +1075,13 @@ button[data-pending=true]::after {
1075
1075
  background-color: var(--thinking-block-bg);
1076
1076
  border-color: var(--thinking-block-accent);
1077
1077
  }
1078
+ .thinking-block--planning {
1079
+ --thinking-block-accent: #f59e0b;
1080
+ --thinking-block-bg: #fffbeb;
1081
+ --thinking-block-text: #b45309;
1082
+ background-color: var(--thinking-block-bg);
1083
+ border-color: var(--thinking-block-accent);
1084
+ }
1078
1085
  .dark-theme .thinking-block--thinking {
1079
1086
  --thinking-block-bg: #1e1b2e;
1080
1087
  --thinking-block-accent: #a78bfa;
@@ -1090,6 +1097,11 @@ button[data-pending=true]::after {
1090
1097
  --thinking-block-accent: #4ade80;
1091
1098
  --thinking-block-text: #86efac;
1092
1099
  }
1100
+ .dark-theme .thinking-block--planning {
1101
+ --thinking-block-bg: #2b2111;
1102
+ --thinking-block-accent: #fbbf24;
1103
+ --thinking-block-text: #fcd34d;
1104
+ }
1093
1105
  .thinking-block__header {
1094
1106
  display: flex;
1095
1107
  align-items: center;
@@ -3014,6 +3026,21 @@ button[data-pending=true]::after {
3014
3026
  text-overflow: ellipsis;
3015
3027
  font-weight: 500;
3016
3028
  }
3029
+ .ai-chat-tool-status-row__label--shimmer {
3030
+ background:
3031
+ linear-gradient(
3032
+ 90deg,
3033
+ var(--tool-row-text) 0%,
3034
+ var(--tool-row-text) 40%,
3035
+ var(--tool-row-accent) 50%,
3036
+ var(--tool-row-text) 60%,
3037
+ var(--tool-row-text) 100%);
3038
+ background-size: 200% 100%;
3039
+ -webkit-background-clip: text;
3040
+ background-clip: text;
3041
+ -webkit-text-fill-color: transparent;
3042
+ animation: titleShimmer 2s ease-in-out infinite;
3043
+ }
3017
3044
  .ai-chat-tool-status-row__call-id {
3018
3045
  font-family:
3019
3046
  "SF Mono",
@@ -3337,6 +3364,8 @@ button[data-pending=true]::after {
3337
3364
  }
3338
3365
  }
3339
3366
  .ai-chat-panel__input-container {
3367
+ position: relative;
3368
+ overflow: visible;
3340
3369
  margin: 12px 16px;
3341
3370
  border: 1px solid var(--ai-chat-input-border);
3342
3371
  border-radius: var(--ai-chat-input-radius);
@@ -3365,6 +3394,104 @@ button[data-pending=true]::after {
3365
3394
  border-color: transparent;
3366
3395
  box-shadow: none;
3367
3396
  }
3397
+ .ai-chat-queued-prompts {
3398
+ display: flex;
3399
+ flex-direction: column;
3400
+ gap: 4px;
3401
+ padding: 6px 8px 0 8px;
3402
+ max-height: 92px;
3403
+ overflow-y: auto;
3404
+ }
3405
+ .ai-chat-queued-prompt {
3406
+ display: flex;
3407
+ align-items: center;
3408
+ gap: 6px;
3409
+ min-width: 0;
3410
+ padding: 5px 6px 5px 8px;
3411
+ border-radius: 10px;
3412
+ border: 1px solid rgba(59, 130, 246, 0.18);
3413
+ background: rgba(59, 130, 246, 0.05);
3414
+ }
3415
+ .ai-chat-queued-prompt__content {
3416
+ min-width: 0;
3417
+ flex: 1;
3418
+ display: flex;
3419
+ flex-direction: column;
3420
+ gap: 1px;
3421
+ }
3422
+ .dark-theme .ai-chat-queued-prompt__content {
3423
+ background: none;
3424
+ border-color: transparent;
3425
+ }
3426
+ .ai-chat-queued-prompt__label {
3427
+ font-size: 9px;
3428
+ font-weight: 600;
3429
+ line-height: 1.2;
3430
+ letter-spacing: 0.06em;
3431
+ text-transform: uppercase;
3432
+ color: var(--ai-chat-input-placeholder);
3433
+ }
3434
+ .ai-chat-queued-prompt__text {
3435
+ min-width: 0;
3436
+ font-size: 11px;
3437
+ line-height: 1.3;
3438
+ color: var(--ai-chat-input-text);
3439
+ white-space: nowrap;
3440
+ overflow: hidden;
3441
+ text-overflow: ellipsis;
3442
+ }
3443
+ .ai-chat-queued-prompt__actions {
3444
+ display: flex;
3445
+ align-items: center;
3446
+ gap: 4px;
3447
+ flex-shrink: 0;
3448
+ }
3449
+ .ai-chat-queued-prompt__button,
3450
+ .ai-chat-queued-prompt__icon-button {
3451
+ display: inline-flex;
3452
+ align-items: center;
3453
+ justify-content: center;
3454
+ height: 22px;
3455
+ border: 1px solid rgba(59, 130, 246, 0.14);
3456
+ background: transparent;
3457
+ color: var(--ai-chat-input-placeholder);
3458
+ border-radius: 999px;
3459
+ cursor: pointer;
3460
+ transition:
3461
+ background-color 0.15s,
3462
+ border-color 0.15s,
3463
+ opacity 0.15s;
3464
+ }
3465
+ .ai-chat-queued-prompt__button {
3466
+ padding: 0 8px;
3467
+ font-size: 10px;
3468
+ font-weight: 600;
3469
+ }
3470
+ .ai-chat-queued-prompt__icon-button {
3471
+ width: 22px;
3472
+ padding: 0;
3473
+ }
3474
+ .ai-chat-queued-prompt__button:hover,
3475
+ .ai-chat-queued-prompt__icon-button:hover {
3476
+ background: rgba(59, 130, 246, 0.08);
3477
+ border-color: rgba(59, 130, 246, 0.24);
3478
+ }
3479
+ .ai-chat-queued-prompt__icon-button svg {
3480
+ width: 10px;
3481
+ height: 10px;
3482
+ }
3483
+ .dark-theme .ai-chat-queued-prompt {
3484
+ border-color: rgba(96, 165, 250, 0.22);
3485
+ background: rgba(96, 165, 250, 0.08);
3486
+ }
3487
+ .dark-theme .ai-chat-queued-prompt__button,
3488
+ .dark-theme .ai-chat-queued-prompt__icon-button {
3489
+ border-color: rgba(96, 165, 250, 0.18);
3490
+ background: transparent;
3491
+ }
3492
+ .ai-chat-panel__input-container:focus-within .ai-chat-queued-prompt {
3493
+ border-color: rgba(96, 165, 250, 0.32);
3494
+ }
3368
3495
  .ai-chat-panel__input-footer {
3369
3496
  display: flex;
3370
3497
  align-items: center;
@@ -4779,6 +4906,13 @@ button[data-pending=true]::after {
4779
4906
  background-color: var(--thinking-block-bg);
4780
4907
  border-color: var(--thinking-block-accent);
4781
4908
  }
4909
+ .thinking-block--planning {
4910
+ --thinking-block-accent: #f59e0b;
4911
+ --thinking-block-bg: #fffbeb;
4912
+ --thinking-block-text: #b45309;
4913
+ background-color: var(--thinking-block-bg);
4914
+ border-color: var(--thinking-block-accent);
4915
+ }
4782
4916
  .dark-theme .thinking-block--thinking {
4783
4917
  --thinking-block-bg: #1e1b2e;
4784
4918
  --thinking-block-accent: #a78bfa;
@@ -4794,6 +4928,11 @@ button[data-pending=true]::after {
4794
4928
  --thinking-block-accent: #4ade80;
4795
4929
  --thinking-block-text: #86efac;
4796
4930
  }
4931
+ .dark-theme .thinking-block--planning {
4932
+ --thinking-block-bg: #2b2111;
4933
+ --thinking-block-accent: #fbbf24;
4934
+ --thinking-block-text: #fcd34d;
4935
+ }
4797
4936
  .thinking-block__header {
4798
4937
  display: flex;
4799
4938
  align-items: center;
package/dist/index.d.mts CHANGED
@@ -181,6 +181,37 @@ interface LocalToolExecutorContext {
181
181
  mcpTool: Record<string, unknown> | null;
182
182
  }
183
183
  type LocalToolExecutor = (args: Record<string, unknown>, context: LocalToolExecutorContext) => Promise<unknown> | unknown;
184
+ type ToolCallStatus = 'pending' | 'running' | 'completed' | 'error';
185
+ interface ToolStatusLabelFormatterInput {
186
+ toolName: string;
187
+ callId: string;
188
+ status: ToolCallStatus;
189
+ args?: Record<string, unknown>;
190
+ defaultLabel: string;
191
+ }
192
+ type ToolStatusLabelFormatter = (input: ToolStatusLabelFormatterInput) => string | null | undefined;
193
+ type ArtifactBlockType = 'thinking' | 'reasoning' | 'searching' | 'planning';
194
+ type PlanningStepStatus = 'todo' | 'doing' | 'done';
195
+ interface PlanningStep {
196
+ status: PlanningStepStatus;
197
+ title: string;
198
+ }
199
+ interface ResponseArtifactBlock {
200
+ type: ArtifactBlockType;
201
+ content: string;
202
+ index: number;
203
+ signature: string;
204
+ steps?: PlanningStep[];
205
+ }
206
+ interface HistoryEntry {
207
+ content: string;
208
+ callId: string;
209
+ toolCalls?: any[];
210
+ toolResponses?: any[];
211
+ artifactBlocks?: ResponseArtifactBlock[];
212
+ planningBlocks?: ResponseArtifactBlock[];
213
+ }
214
+ type AIChatHistoryEntry = HistoryEntry;
184
215
  interface AIChatPanelProps {
185
216
  project_id: string;
186
217
  initialPrompt?: string;
@@ -198,10 +229,7 @@ interface AIChatPanelProps {
198
229
  theme?: 'light' | 'dark';
199
230
  url?: string | null;
200
231
  service?: string | null;
201
- historyChangedCallback?: (history: Record<string, {
202
- content: string;
203
- callId: string;
204
- }>) => void;
232
+ historyChangedCallback?: (history: Record<string, AIChatHistoryEntry>) => void;
205
233
  responseCompleteCallback?: (callId: string, prompt: string, response: string) => void;
206
234
  onLoadingChange?: (isLoading: boolean) => void;
207
235
  promptTemplate?: string;
@@ -220,10 +248,7 @@ interface AIChatPanelProps {
220
248
  showPoweredBy?: boolean;
221
249
  agent?: string | null;
222
250
  conversation?: string | null;
223
- initialHistory?: Record<string, {
224
- content: string;
225
- callId: string;
226
- }>;
251
+ initialHistory?: Record<string, AIChatHistoryEntry>;
227
252
  hideRagContextInPrompt?: boolean;
228
253
  createConversationOnFirstChat?: boolean;
229
254
  autoApproveTools?: boolean | string[];
@@ -262,6 +287,7 @@ interface AIChatPanelProps {
262
287
  callToActionEmailSubject?: string;
263
288
  customerEmailCaptureMode?: "HIDE" | "OPTIONAL" | "REQUIRED";
264
289
  customerEmailCapturePlaceholder?: string;
290
+ toolStatusLabelFormatter?: ToolStatusLabelFormatter;
265
291
  }
266
292
  /**
267
293
  * Context section for the context viewer
@@ -363,10 +389,7 @@ interface AIAgentPanelProps {
363
389
  onAgentSwitch?: (fromAgent: string, toAgent: string) => void;
364
390
  onConversationChange?: (conversationId: string) => void;
365
391
  onBeforeSend?: (payload: BeforeSendPayload) => Promise<void> | void;
366
- historyChangedCallback?: (history: Record<string, {
367
- content: string;
368
- callId: string;
369
- }>) => void;
392
+ historyChangedCallback?: (history: Record<string, AIChatHistoryEntry>) => void;
370
393
  responseCompleteCallback?: (callId: string, prompt: string, response: string) => void;
371
394
  thumbsUpClick?: (callId: string) => void;
372
395
  thumbsDownClick?: (callId: string) => void;
@@ -411,6 +434,7 @@ interface AIAgentPanelProps {
411
434
  localToolExecutors?: Record<string, LocalToolExecutor>;
412
435
  traceContextMode?: TraceContextMode;
413
436
  autoApproveTools?: boolean | string[];
437
+ toolStatusLabelFormatter?: ToolStatusLabelFormatter;
414
438
  }
415
439
  declare const AIAgentPanel: React__default.ForwardRefExoticComponent<AIAgentPanelProps & React__default.RefAttributes<AIAgentPanelHandle>>;
416
440
 
@@ -638,7 +662,7 @@ interface WordFadeInProps {
638
662
  */
639
663
  declare const WordFadeIn: React__default.FC<WordFadeInProps>;
640
664
 
641
- type ThinkingBlockType = 'thinking' | 'reasoning' | 'searching';
665
+ type ThinkingBlockType = 'thinking' | 'reasoning' | 'searching' | 'planning';
642
666
  interface ThinkingBlockProps {
643
667
  type: ThinkingBlockType;
644
668
  content: string;
@@ -659,4 +683,4 @@ interface ThinkingBlockProps {
659
683
  */
660
684
  declare const ThinkingBlock: React__default.FC<ThinkingBlockProps>;
661
685
 
662
- export { AIAgentPanel, type AIAgentPanelProps, _default as AIChatPanel, type AIChatPanelProps, type APIConversationSummary, type AgentContext, type AgentMetadata, AgentPanel, type AgentPanelProps, type AgentProfile, Button, type ButtonProps, ChatPanel, type ChatPanelProps, type ContextDataFormat, type ContextSection, type Conversation, type ConversationGroup, Dialog, DialogFooter, type DialogFooterProps, type DialogProps, Input, type InputProps, type MCPAuthHeaderResolver, type MCPAuthHeaderResolverInput, type MCPAuthPhase, type MCPServer, type ObjectContextSection, type RawContextSection, ScrollArea, type ScrollAreaProps, Select, type SelectOption, type SelectProps, ThinkingBlock, type ThinkingBlockProps, type ThinkingBlockType, Tooltip, type TooltipProps, WordFadeIn, type WordFadeInProps, useAgentRegistry, useConversationStore };
686
+ export { AIAgentPanel, type AIAgentPanelProps, type AIChatHistoryEntry, _default as AIChatPanel, type AIChatPanelProps, type APIConversationSummary, type AgentContext, type AgentMetadata, AgentPanel, type AgentPanelProps, type AgentProfile, type ArtifactBlockType, Button, type ButtonProps, ChatPanel, type ChatPanelProps, type ContextDataFormat, type ContextSection, type Conversation, type ConversationGroup, Dialog, DialogFooter, type DialogFooterProps, type DialogProps, Input, type InputProps, type MCPAuthHeaderResolver, type MCPAuthHeaderResolverInput, type MCPAuthPhase, type MCPServer, type ObjectContextSection, type PlanningStep, type PlanningStepStatus, type RawContextSection, type ResponseArtifactBlock, ScrollArea, type ScrollAreaProps, Select, type SelectOption, type SelectProps, ThinkingBlock, type ThinkingBlockProps, type ThinkingBlockType, type ToolCallStatus, type ToolStatusLabelFormatter, type ToolStatusLabelFormatterInput, Tooltip, type TooltipProps, WordFadeIn, type WordFadeInProps, useAgentRegistry, useConversationStore };
package/dist/index.d.ts CHANGED
@@ -181,6 +181,37 @@ interface LocalToolExecutorContext {
181
181
  mcpTool: Record<string, unknown> | null;
182
182
  }
183
183
  type LocalToolExecutor = (args: Record<string, unknown>, context: LocalToolExecutorContext) => Promise<unknown> | unknown;
184
+ type ToolCallStatus = 'pending' | 'running' | 'completed' | 'error';
185
+ interface ToolStatusLabelFormatterInput {
186
+ toolName: string;
187
+ callId: string;
188
+ status: ToolCallStatus;
189
+ args?: Record<string, unknown>;
190
+ defaultLabel: string;
191
+ }
192
+ type ToolStatusLabelFormatter = (input: ToolStatusLabelFormatterInput) => string | null | undefined;
193
+ type ArtifactBlockType = 'thinking' | 'reasoning' | 'searching' | 'planning';
194
+ type PlanningStepStatus = 'todo' | 'doing' | 'done';
195
+ interface PlanningStep {
196
+ status: PlanningStepStatus;
197
+ title: string;
198
+ }
199
+ interface ResponseArtifactBlock {
200
+ type: ArtifactBlockType;
201
+ content: string;
202
+ index: number;
203
+ signature: string;
204
+ steps?: PlanningStep[];
205
+ }
206
+ interface HistoryEntry {
207
+ content: string;
208
+ callId: string;
209
+ toolCalls?: any[];
210
+ toolResponses?: any[];
211
+ artifactBlocks?: ResponseArtifactBlock[];
212
+ planningBlocks?: ResponseArtifactBlock[];
213
+ }
214
+ type AIChatHistoryEntry = HistoryEntry;
184
215
  interface AIChatPanelProps {
185
216
  project_id: string;
186
217
  initialPrompt?: string;
@@ -198,10 +229,7 @@ interface AIChatPanelProps {
198
229
  theme?: 'light' | 'dark';
199
230
  url?: string | null;
200
231
  service?: string | null;
201
- historyChangedCallback?: (history: Record<string, {
202
- content: string;
203
- callId: string;
204
- }>) => void;
232
+ historyChangedCallback?: (history: Record<string, AIChatHistoryEntry>) => void;
205
233
  responseCompleteCallback?: (callId: string, prompt: string, response: string) => void;
206
234
  onLoadingChange?: (isLoading: boolean) => void;
207
235
  promptTemplate?: string;
@@ -220,10 +248,7 @@ interface AIChatPanelProps {
220
248
  showPoweredBy?: boolean;
221
249
  agent?: string | null;
222
250
  conversation?: string | null;
223
- initialHistory?: Record<string, {
224
- content: string;
225
- callId: string;
226
- }>;
251
+ initialHistory?: Record<string, AIChatHistoryEntry>;
227
252
  hideRagContextInPrompt?: boolean;
228
253
  createConversationOnFirstChat?: boolean;
229
254
  autoApproveTools?: boolean | string[];
@@ -262,6 +287,7 @@ interface AIChatPanelProps {
262
287
  callToActionEmailSubject?: string;
263
288
  customerEmailCaptureMode?: "HIDE" | "OPTIONAL" | "REQUIRED";
264
289
  customerEmailCapturePlaceholder?: string;
290
+ toolStatusLabelFormatter?: ToolStatusLabelFormatter;
265
291
  }
266
292
  /**
267
293
  * Context section for the context viewer
@@ -363,10 +389,7 @@ interface AIAgentPanelProps {
363
389
  onAgentSwitch?: (fromAgent: string, toAgent: string) => void;
364
390
  onConversationChange?: (conversationId: string) => void;
365
391
  onBeforeSend?: (payload: BeforeSendPayload) => Promise<void> | void;
366
- historyChangedCallback?: (history: Record<string, {
367
- content: string;
368
- callId: string;
369
- }>) => void;
392
+ historyChangedCallback?: (history: Record<string, AIChatHistoryEntry>) => void;
370
393
  responseCompleteCallback?: (callId: string, prompt: string, response: string) => void;
371
394
  thumbsUpClick?: (callId: string) => void;
372
395
  thumbsDownClick?: (callId: string) => void;
@@ -411,6 +434,7 @@ interface AIAgentPanelProps {
411
434
  localToolExecutors?: Record<string, LocalToolExecutor>;
412
435
  traceContextMode?: TraceContextMode;
413
436
  autoApproveTools?: boolean | string[];
437
+ toolStatusLabelFormatter?: ToolStatusLabelFormatter;
414
438
  }
415
439
  declare const AIAgentPanel: React__default.ForwardRefExoticComponent<AIAgentPanelProps & React__default.RefAttributes<AIAgentPanelHandle>>;
416
440
 
@@ -638,7 +662,7 @@ interface WordFadeInProps {
638
662
  */
639
663
  declare const WordFadeIn: React__default.FC<WordFadeInProps>;
640
664
 
641
- type ThinkingBlockType = 'thinking' | 'reasoning' | 'searching';
665
+ type ThinkingBlockType = 'thinking' | 'reasoning' | 'searching' | 'planning';
642
666
  interface ThinkingBlockProps {
643
667
  type: ThinkingBlockType;
644
668
  content: string;
@@ -659,4 +683,4 @@ interface ThinkingBlockProps {
659
683
  */
660
684
  declare const ThinkingBlock: React__default.FC<ThinkingBlockProps>;
661
685
 
662
- export { AIAgentPanel, type AIAgentPanelProps, _default as AIChatPanel, type AIChatPanelProps, type APIConversationSummary, type AgentContext, type AgentMetadata, AgentPanel, type AgentPanelProps, type AgentProfile, Button, type ButtonProps, ChatPanel, type ChatPanelProps, type ContextDataFormat, type ContextSection, type Conversation, type ConversationGroup, Dialog, DialogFooter, type DialogFooterProps, type DialogProps, Input, type InputProps, type MCPAuthHeaderResolver, type MCPAuthHeaderResolverInput, type MCPAuthPhase, type MCPServer, type ObjectContextSection, type RawContextSection, ScrollArea, type ScrollAreaProps, Select, type SelectOption, type SelectProps, ThinkingBlock, type ThinkingBlockProps, type ThinkingBlockType, Tooltip, type TooltipProps, WordFadeIn, type WordFadeInProps, useAgentRegistry, useConversationStore };
686
+ export { AIAgentPanel, type AIAgentPanelProps, type AIChatHistoryEntry, _default as AIChatPanel, type AIChatPanelProps, type APIConversationSummary, type AgentContext, type AgentMetadata, AgentPanel, type AgentPanelProps, type AgentProfile, type ArtifactBlockType, Button, type ButtonProps, ChatPanel, type ChatPanelProps, type ContextDataFormat, type ContextSection, type Conversation, type ConversationGroup, Dialog, DialogFooter, type DialogFooterProps, type DialogProps, Input, type InputProps, type MCPAuthHeaderResolver, type MCPAuthHeaderResolverInput, type MCPAuthPhase, type MCPServer, type ObjectContextSection, type PlanningStep, type PlanningStepStatus, type RawContextSection, type ResponseArtifactBlock, ScrollArea, type ScrollAreaProps, Select, type SelectOption, type SelectProps, ThinkingBlock, type ThinkingBlockProps, type ThinkingBlockType, type ToolCallStatus, type ToolStatusLabelFormatter, type ToolStatusLabelFormatterInput, Tooltip, type TooltipProps, WordFadeIn, type WordFadeInProps, useAgentRegistry, useConversationStore };