@blade-hq/agent-react 2610.0.0-beta.7 → 2610.0.0-beta.71

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.
Files changed (64) hide show
  1. package/README.md +308 -8
  2. package/dist/chunk-G3PMV62Z.js +36 -0
  3. package/dist/{chunk-ZXXLY4RM.js → chunk-IA6J2NTB.js} +9 -32
  4. package/dist/{chunk-ZXXLY4RM.js.map → chunk-IA6J2NTB.js.map} +1 -1
  5. package/dist/components/AgentChat.d.ts +3 -0
  6. package/dist/components/AgentLoopBlock.d.ts +3 -5
  7. package/dist/components/AskUserQuestionBlock.d.ts +12 -1
  8. package/dist/components/AssistantTurnBlock.d.ts +26 -8
  9. package/dist/components/ChatInput.d.ts +21 -1
  10. package/dist/components/ChatSurface.d.ts +133 -2
  11. package/dist/components/ChatView.d.ts +1 -1
  12. package/dist/components/ConnectorPanel.d.ts +41 -0
  13. package/dist/components/ContextCard.d.ts +20 -0
  14. package/dist/components/MarkdownContent.d.ts +2 -0
  15. package/dist/components/McpAppCard.d.ts +14 -0
  16. package/dist/components/MessageList.d.ts +38 -4
  17. package/dist/components/PlanUpdateBlock.d.ts +32 -0
  18. package/dist/components/PluginConnectorList.d.ts +47 -0
  19. package/dist/components/PluginTriggerStack.d.ts +22 -0
  20. package/dist/components/PostChatFollowupBlock.d.ts +5 -1
  21. package/dist/components/SessionMemoryToggle.d.ts +19 -0
  22. package/dist/components/SessionPluginConfigDialog.d.ts +10 -0
  23. package/dist/components/SessionPluginConfigForm.d.ts +14 -0
  24. package/dist/components/SessionPluginIcon.d.ts +30 -0
  25. package/dist/components/SessionPluginSelector.d.ts +10 -0
  26. package/dist/components/SessionQueuePanel.d.ts +74 -0
  27. package/dist/components/ToolCallBlock.d.ts +9 -3
  28. package/dist/components/ToolUiCardView.d.ts +9 -0
  29. package/dist/components/TurnNavRail.d.ts +23 -0
  30. package/dist/components/UserMessageBubble.d.ts +7 -3
  31. package/dist/components/WhatIfUserBubble.d.ts +7 -0
  32. package/dist/components/connector-panel-types.d.ts +37 -0
  33. package/dist/components/display-utils.d.ts +10 -0
  34. package/dist/components/plugin-config-draft.d.ts +13 -0
  35. package/dist/components/plugin-config-schema.d.ts +6 -0
  36. package/dist/components/plugin-connector.d.ts +40 -0
  37. package/dist/components/queue-panel-adjacency.d.ts +1 -0
  38. package/dist/components/use-session-plugin-activation.d.ts +40 -0
  39. package/dist/context.d.ts +1 -0
  40. package/dist/embed/blade-chat-element.d.ts +4 -3
  41. package/dist/embed/entry.d.ts +48 -0
  42. package/dist/{highlighted-body-B3W2YXNL-YD7FAP6V.js → highlighted-body-B3W2YXNL-YF4GVJGP.js} +3 -2
  43. package/dist/{highlighted-body-B3W2YXNL-YD7FAP6V.js.map → highlighted-body-B3W2YXNL-YF4GVJGP.js.map} +1 -1
  44. package/dist/hooks/use-agent-session.d.ts +5 -0
  45. package/dist/hooks/use-message-pin.d.ts +28 -0
  46. package/dist/hooks/use-turn-navigation.d.ts +117 -0
  47. package/dist/hooks/use-typewriter-reveal.d.ts +32 -0
  48. package/dist/index.d.ts +49 -1
  49. package/dist/index.js +45645 -1787
  50. package/dist/index.js.map +1 -1
  51. package/dist/lib/agent-computer-command.d.ts +34 -0
  52. package/dist/lib/random-id.d.ts +10 -0
  53. package/dist/lib/utils.d.ts +17 -2
  54. package/dist/lib/whatif-prompt.d.ts +18 -0
  55. package/dist/mermaid-3ZIDBTTL-QL4YGD6I.js +9 -0
  56. package/dist/mermaid-3ZIDBTTL-QL4YGD6I.js.map +1 -0
  57. package/dist/style.css +488 -402
  58. package/dist/style.full.css +499 -406
  59. package/dist/webapi-W3IB5DO4.js +2481 -0
  60. package/dist/webapi-W3IB5DO4.js.map +1 -0
  61. package/package.json +2 -2
  62. package/public-api.md +1657 -76
  63. package/dist/mermaid-3ZIDBTTL-N7YKJ3SM.js +0 -8
  64. /package/dist/{mermaid-3ZIDBTTL-N7YKJ3SM.js.map → chunk-G3PMV62Z.js.map} +0 -0
package/public-api.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > 本文件由 `scripts/public-api-report.mjs` 生成,请勿手改。
4
4
  > 公共面变更时重新生成本报告,并同步更新 README 对应章节——CI 会校验两者。
5
5
 
6
- 171 个公开声明。
6
+ 359 个公开声明。
7
7
 
8
8
  ## `acceptedPostChatFollowupCompletesLatestRun` (function)
9
9
 
@@ -11,6 +11,34 @@
11
11
  acceptedPostChatFollowupCompletesLatestRun: (events: RawEvent[], updates: ProjectionUpdate[]) => boolean
12
12
  ```
13
13
 
14
+ ## `AccountComputer` (interface)
15
+
16
+ ```ts
17
+ arch: string | null | undefined
18
+ blade_home: string | null | undefined
19
+ created_at: string
20
+ daemon_version: string | null | undefined
21
+ hostname: string | null | undefined
22
+ id: string
23
+ label: string
24
+ last_seen_at: string | null | undefined
25
+ online: boolean
26
+ os: string | null | undefined
27
+ workspace: string | null | undefined
28
+ ```
29
+
30
+ ## `AccountComputerList` (interface)
31
+
32
+ ```ts
33
+ computers: AccountComputer[]
34
+ ```
35
+
36
+ ## `acknowledgeTurnEvents` (function)
37
+
38
+ ```ts
39
+ acknowledgeTurnEvents: (acknowledge?: () => void) => void
40
+ ```
41
+
14
42
  ## `ActiveCompactionState` (interface)
15
43
 
16
44
  ```ts
@@ -48,10 +76,17 @@ onSessionReady: ((session: AgentSession) => void) | undefined
48
76
  placeholder: string | undefined
49
77
  renderers: ChatViewRenderers | undefined
50
78
  sessionId: string | undefined
79
+ sessionPluginControls: ((sessionId: string) => ReactNode) | undefined
51
80
  slots: ChatViewSlots | undefined
52
81
  theme: "light" | "dark" | undefined
53
82
  ```
54
83
 
84
+ ## `AgentComputerLaunchOutcome` (type)
85
+
86
+ ```ts
87
+ export type AgentComputerLaunchOutcome = "pending" | "succeeded" | "failed" | "unknown"
88
+ ```
89
+
55
90
  ## `AgentLoopInfo` (interface)
56
91
 
57
92
  ```ts
@@ -63,26 +98,38 @@ toolCallId: string
63
98
  ## `AgentSession` (class)
64
99
 
65
100
  ```ts
66
- append: (text: string) => void
67
101
  attach: (label: string, data: unknown) => void
68
102
  attachApp: (options: AttachAppOptions) => Promise<AppCliAttachment | null>
103
+ cancelPendingLocate: () => void
104
+ cancelQueuedMessage: (itemId: string, expectedVersion?: number) => Promise<QueueOperationResult>
69
105
  compact: () => Promise<Record<string, unknown>>
70
106
  countFiles: (dirPath?: string) => Promise<number>
107
+ deliverQueuedMessage: (itemId: string, expectedVersion: number) => Promise<QueueOperationResult>
71
108
  dispose: () => void
72
109
  downloadFile: (filePath: string, downloadName?: string) => Promise<void>
73
110
  exitReplay: () => Promise<void>
74
111
  getState: () => SessionState
112
+ hasOlderHistory: boolean
75
113
  insertText: (text: string) => void
76
114
  isDisposed: boolean
115
+ isStatic: boolean
77
116
  listDir: (dirPath?: string) => Promise<FileEntry[]>
117
+ loadOlderHistory: (options?: { beforeCommit?: () => void; }) => Promise<void>
118
+ loadTurnIndex: () => Promise<SessionTurnIndexItem[]>
119
+ locateEntry: (entryId: string) => Promise<boolean>
78
120
  off: <K extends keyof AgentSessionEvents>(name: K, handler: (event: AgentSessionEvents[K]) => void) => void
79
121
  on: <K extends keyof AgentSessionEvents>(name: K, handler: (event: AgentSessionEvents[K]) => void) => () => void
80
122
  onCommand: (action: string, handler: CommandHandler) => () => void
123
+ queueMessage: (content: string) => Promise<QueueOperationResult>
124
+ refreshQueue: () => Promise<QueueOperationResult>
125
+ reorderQueuedMessages: (expectedRevision: number, orderedIds: string[]) => Promise<QueueOperationResult>
126
+ resumeQueue: () => Promise<QueueOperationResult>
81
127
  send: (content: MessageContent, options?: SendOptions) => Promise<boolean>
82
128
  sessionId: string
83
129
  setReplaySpeed: (speed: ReplaySpeed) => Promise<void>
84
130
  stop: () => Promise<Record<string, unknown>>
85
131
  subscribe: (listener: () => void) => () => void
132
+ updateQueuedMessage: (itemId: string, expectedVersion: number, content: string) => Promise<QueueOperationResult>
86
133
  ```
87
134
 
88
135
  ## `AgentSessionEventName` (type)
@@ -110,8 +157,8 @@ sandboxOom: { toolCallId: string; }
110
157
  sessionUpdated: { intent?: string; status?: SessionStatus; model?: string | null; boundSkillId?: string | null; replayState?: Record<string, unknown> | null; }
111
158
  taskListUpdated: { tasks: unknown[]; }
112
159
  toolCall: { toolCall: ToolCallInfo; turn: TurnProjection; }
113
- toolPreview: { toolCallId: string; type: "resource-html" | "resource-uri"; content: string; title: string; }
114
- toolResult: { toolCall: ToolCallInfo; turn: TurnProjection; }
160
+ toolPreview: { toolCallId: string; type: "resource-html" | "resource-uri"; content: string; title: string; mcpApp?: McpAppData; }
161
+ toolResult: { toolCall: ToolCallInfo; turn: TurnProjection; source: "live" | "bootstrap_replay" | "reconnect_replay"; }
115
162
  workspaceChanged: { filePath?: string; }
116
163
  ```
117
164
 
@@ -155,9 +202,28 @@ tool_name: string | null | undefined
155
202
 
156
203
  ```ts
157
204
  custom: Record<number, string>
205
+ note: string | undefined
158
206
  selections: Record<number, number[]>
159
207
  ```
160
208
 
209
+ ## `AskUserQuestionData` (interface)
210
+
211
+ ```ts
212
+ questions: QuestionItem[]
213
+ source_loop: SourceLoopInfo | null | undefined
214
+ ```
215
+
216
+ ## `AskUserQuestionRendererProps` (interface)
217
+
218
+ ```ts
219
+ answerData: AskUserAnswerData | undefined
220
+ answered: boolean
221
+ data: AskUserQuestionData
222
+ onAnswer: ((answer: string, toolCallId: string, answerData: AskUserAnswerData) => void) | undefined
223
+ sessionStatus: string
224
+ toolCallId: string
225
+ ```
226
+
161
227
  ## `AsrAudioPayload` (type)
162
228
 
163
229
  ```ts
@@ -167,6 +233,15 @@ export type AsrAudioPayload =
167
233
  | { pcm: ArrayBuffer | Uint8Array; request_id?: string }
168
234
  ```
169
235
 
236
+ ## `AssistantTextRendererProps` (interface)
237
+
238
+ ```ts
239
+ compact: boolean
240
+ message: ChatMessage
241
+ sessionId: string | undefined
242
+ streaming: boolean
243
+ ```
244
+
170
245
  ## `AttachAppOptions` (interface)
171
246
 
172
247
  ```ts
@@ -174,6 +249,20 @@ cli: AppCliDefinition | undefined
174
249
  getContext: () => Record<string, unknown> | Promise<Record<string, unknown>>
175
250
  ```
176
251
 
252
+ ## `AuthBusyReconnect` (class)
253
+
254
+ ```ts
255
+ cancel: () => void
256
+ pending: boolean
257
+ schedule: (error: unknown, reconnect: () => void) => boolean
258
+ ```
259
+
260
+ ## `authBusyRetryDelayMs` (function)
261
+
262
+ ```ts
263
+ authBusyRetryDelayMs: (error: unknown) => number | null
264
+ ```
265
+
177
266
  ## `AuthResource` (class)
178
267
 
179
268
  ```ts
@@ -239,6 +328,8 @@ statusText: string
239
328
  auth: AuthResource
240
329
  blob: (method: HttpMethod, path: string) => Promise<Blob>
241
330
  buildAuthedUrl: (path: string) => string
331
+ chatGroups: ChatGroupsResource
332
+ computers: ComputersResource
242
333
  fetch: (method: HttpMethod, path: string, init?: BladeFetchInit, isRetry?: boolean) => Promise<Response>
243
334
  formData: (method: HttpMethod, path: string, form: FormData, options?: { expectOk?: boolean; onUploadProgress?: (progress: UploadProgress) => void; }) => Promise<Response>
244
335
  hasToken: () => boolean
@@ -251,10 +342,12 @@ logoutToken: () => void
251
342
  models: ModelsResource
252
343
  onSocketReplaced: (listener: () => void) => () => void
253
344
  options: BladeClientOptions
345
+ plugins: PluginsResource
254
346
  responseFromInit: (path: string, init?: RequestInit) => Promise<Response>
255
347
  sessions: SessionsResource
256
348
  setBaseUrl: (baseUrl: string) => void
257
349
  setToken: (token: string | null) => void
350
+ siteVisits: SiteVisitsResource
258
351
  socket: () => TypedSocket
259
352
  text: (method: HttpMethod, path: string) => Promise<string>
260
353
  textFromInit: (path: string, init?: RequestInit) => Promise<string>
@@ -268,7 +361,6 @@ baseUrl: string
268
361
  fetchImpl: { (input: RequestInfo | URL, init?: RequestInit): Promise<Response>; (input: string | URL | Request, init?: RequestInit): Promise<Response>; } | undefined
269
362
  onRefreshSuccess: (() => void | Promise<void>) | undefined
270
363
  socketToken: string | (() => string | null | undefined) | undefined
271
- streamTokens: boolean | undefined
272
364
  token: string | (() => string | null | undefined) | undefined
273
365
  tokenStorage: TokenStorageMode | undefined
274
366
  ```
@@ -292,6 +384,42 @@ client: BladeClient
292
384
  buildMessageContent: (text: string, attachments: Array<{ kind: "file"; name: string; uploadedPath?: string; textContent?: string | null; mimeType?: string; }>) => MessageContent
293
385
  ```
294
386
 
387
+ ## `buildToolUiCardKey` (function)
388
+
389
+ ```ts
390
+ buildToolUiCardKey: (toolCallId: string, type: ToolUiCardContentType, content: string) => string
391
+ ```
392
+
393
+ ## `canCancelQueuedMessage` (function)
394
+
395
+ ```ts
396
+ canCancelQueuedMessage: (item: QueuedMessage) => boolean
397
+ ```
398
+
399
+ ## `canDeliverQueuedMessage` (function)
400
+
401
+ ```ts
402
+ canDeliverQueuedMessage: (item: QueuedMessage) => boolean
403
+ ```
404
+
405
+ ## `canEditQueuedMessage` (function)
406
+
407
+ ```ts
408
+ canEditQueuedMessage: (item: QueuedMessage) => boolean
409
+ ```
410
+
411
+ ## `canToggleComputer` (function)
412
+
413
+ ```ts
414
+ canToggleComputer: (computer: SessionComputer) => boolean
415
+ ```
416
+
417
+ ## `catalogToConnectorItems` (function)
418
+
419
+ ```ts
420
+ catalogToConnectorItems: (catalog: PluginCatalogEntry[]) => PluginConnectorItem[]
421
+ ```
422
+
295
423
  ## `ChatCompletionTool` (interface)
296
424
 
297
425
  ```ts
@@ -299,12 +427,46 @@ function: { name: string; description?: string; parameters?: Record<string, unkn
299
427
  type: "function"
300
428
  ```
301
429
 
430
+ ## `ChatEnd` (interface)
431
+
432
+ ```ts
433
+ duration_ms: number
434
+ status: string
435
+ ```
436
+
437
+ ## `chatErrorForDisplay` (function)
438
+
439
+ ```ts
440
+ chatErrorForDisplay: (message: string, developer?: boolean) => string
441
+ ```
442
+
443
+ ## `ChatGroup` (interface)
444
+
445
+ ```ts
446
+ created_at: string
447
+ id: string
448
+ instructions: string
449
+ name: string
450
+ session_count: number
451
+ updated_at: string
452
+ ```
453
+
454
+ ## `ChatGroupsResource` (class)
455
+
456
+ ```ts
457
+ create: (payload: { name: string; instructions?: string; }) => Promise<ChatGroup>
458
+ delete: (groupId: string) => Promise<{ deleted: boolean; deleted_sessions: number; }>
459
+ list: () => Promise<ChatGroup[]>
460
+ update: (groupId: string, payload: { name?: string; instructions?: string; }) => Promise<ChatGroup>
461
+ ```
462
+
302
463
  ## `ChatMessage` (interface)
303
464
 
304
465
  ```ts
305
466
  blocks: ContentBlock[] | undefined
306
467
  compaction: CompactionInfo | undefined
307
468
  content: MessageContent
469
+ context: ContextProjectionData | undefined
308
470
  duration_ms: number | undefined
309
471
  entry_id: string | undefined
310
472
  kind: string | undefined
@@ -328,10 +490,34 @@ ChatView: (props: ChatViewProps) => JSX.Element
328
490
  ## `ChatViewClassNames` (interface)
329
491
 
330
492
  ```ts
493
+ agentLoop: string | undefined
494
+ askCard: string | undefined
495
+ askOption: string | undefined
496
+ assistantText: string | undefined
497
+ assistantTurn: string | undefined
331
498
  banner: string | undefined
332
499
  chatInput: string | undefined
500
+ empty: string | undefined
501
+ errorBar: string | undefined
502
+ errorMessage: string | undefined
503
+ fileCard: string | undefined
504
+ followup: string | undefined
505
+ followupAction: string | undefined
506
+ inputInner: string | undefined
507
+ inputToolbar: string | undefined
508
+ memoryRefs: string | undefined
333
509
  messageList: string | undefined
510
+ messagesContent: string | undefined
511
+ messagesScroll: string | undefined
512
+ planPanel: string | undefined
513
+ queuePanel: string | undefined
334
514
  root: string | undefined
515
+ scrollToBottom: string | undefined
516
+ textarea: string | undefined
517
+ thinking: string | undefined
518
+ toolRow: string | undefined
519
+ userBubble: string | undefined
520
+ userMessage: string | undefined
335
521
  ```
336
522
 
337
523
  ## `ChatViewProps` (interface)
@@ -349,6 +535,7 @@ onSessionReady: ((session: AgentSession) => void) | undefined
349
535
  placeholder: string | undefined
350
536
  renderers: ChatViewRenderers | undefined
351
537
  sessionId: string | undefined
538
+ sessionPluginControls: ((sessionId: string) => ReactNode) | undefined
352
539
  slots: ChatViewSlots | undefined
353
540
  theme: "light" | "dark" | undefined
354
541
  ```
@@ -356,7 +543,11 @@ theme: "light" | "dark" | undefined
356
543
  ## `ChatViewRenderers` (interface)
357
544
 
358
545
  ```ts
546
+ askUserQuestion: ((props: AskUserQuestionRendererProps) => ReactNode | null) | undefined
547
+ assistantText: ((props: AssistantTextRendererProps) => ReactNode | null) | undefined
548
+ planUpdate: ((props: PlanUpdateRendererProps) => ReactNode | null) | undefined
359
549
  toolCall: ToolCallRenderer | undefined
550
+ userMessage: ((props: UserMessageRendererProps) => ReactNode | null) | undefined
360
551
  ```
361
552
 
362
553
  ## `ChatViewSlots` (interface)
@@ -367,6 +558,12 @@ footer: ReactNode
367
558
  header: ReactNode
368
559
  ```
369
560
 
561
+ ## `classifyAgentComputerLaunchOutcome` (function)
562
+
563
+ ```ts
564
+ classifyAgentComputerLaunchOutcome: (toolCall: { status?: string; result?: unknown; }) => AgentComputerLaunchOutcome
565
+ ```
566
+
370
567
  ## `ClientProjectionBuilder` (class)
371
568
 
372
569
  ```ts
@@ -376,6 +573,24 @@ reset: () => void
376
573
  seedSequence: (maxSeq: number) => void
377
574
  ```
378
575
 
576
+ ## `collectInlineToolUiCards` (function)
577
+
578
+ ```ts
579
+ collectInlineToolUiCards: (messages: ChatMessage[]) => InlineToolUiCardEntry[]
580
+ ```
581
+
582
+ ## `collectMemoryRefs` (function)
583
+
584
+ ```ts
585
+ collectMemoryRefs: (messages: ChatMessage[]) => MemoryRefInfo[]
586
+ ```
587
+
588
+ ## `collectPreviewToolUiCards` (function)
589
+
590
+ ```ts
591
+ collectPreviewToolUiCards: (messages: ChatMessage[]) => PreviewToolUiCardEntry[]
592
+ ```
593
+
379
594
  ## `CommandEnvelope` (interface)
380
595
 
381
596
  ```ts
@@ -408,6 +623,57 @@ tokens_before: number | null | undefined
408
623
  trigger: "auto" | "manual" | "forced_retry" | null | undefined
409
624
  ```
410
625
 
626
+ ## `computerDaemonVersion` (function)
627
+
628
+ ```ts
629
+ computerDaemonVersion: (computer: SessionComputer) => string
630
+ ```
631
+
632
+ ## `computerOS` (function)
633
+
634
+ ```ts
635
+ computerOS: (computer: SessionComputer) => ComputerOS
636
+ ```
637
+
638
+ ## `ComputerOS` (type)
639
+
640
+ ```ts
641
+ export type ComputerOS = "macos" | "windows" | "linux" | "unknown"
642
+ ```
643
+
644
+ ## `computerPlatformLabel` (function)
645
+
646
+ ```ts
647
+ computerPlatformLabel: (computer: SessionComputer) => string
648
+ ```
649
+
650
+ ## `ComputersResource` (class)
651
+
652
+ ```ts
653
+ list: (sessionId: string) => Promise<SessionComputerList>
654
+ listAccount: () => Promise<AccountComputerList>
655
+ setEnabled: (sessionId: string, computer: string, enabled: boolean) => Promise<SessionComputer>
656
+ ```
657
+
658
+ ## `computerState` (function)
659
+
660
+ ```ts
661
+ computerState: (computer: SessionComputer) => ComputerState
662
+ ```
663
+
664
+ ## `ComputerState` (type)
665
+
666
+ ```ts
667
+ export type ComputerState = "primary" | "enabled" | "offline" | "idle"
668
+ ```
669
+
670
+ ## `ConfiguringPlugin` (interface)
671
+
672
+ ```ts
673
+ name: string
674
+ pendingActivation: boolean
675
+ ```
676
+
411
677
  ## `connectEmbedded` (function)
412
678
 
413
679
  ```ts
@@ -420,22 +686,141 @@ connectEmbedded: (options: EmbeddedChatOptions) => EmbeddedChat
420
686
  export type ConnectionStatus = "connecting" | "connected" | "reconnecting" | "disconnected"
421
687
  ```
422
688
 
689
+ ## `ConnectorPanel` (function)
690
+
691
+ ```ts
692
+ ConnectorPanel: ({ client, sessionId, pendingPlugins, onPendingPluginsChange, pendingDisabledReason, onPluginsChanged, onSelectedChange, renderComputerSection, renderExternalAccounts, renderFooterActions, className, }: ConnectorPanelProps) => JSX.Element
693
+ ```
694
+
695
+ ## `ConnectorPanelProps` (interface)
696
+
697
+ ```ts
698
+ className: string | undefined
699
+ client: BladeClient
700
+ onPendingPluginsChange: ((next: PluginConnectorSelection[]) => void) | undefined
701
+ onPluginsChanged: ((plugin: SessionPluginActivation) => void) | undefined
702
+ onSelectedChange: ((items: PluginConnectorItem[]) => void) | undefined
703
+ pendingDisabledReason: string | null | undefined
704
+ pendingPlugins: PluginConnectorSelection[] | undefined
705
+ renderComputerSection: ((query: string) => ReactNode) | undefined
706
+ renderExternalAccounts: ((query: string) => ReactNode) | undefined
707
+ renderFooterActions: (() => ReactNode) | undefined
708
+ sessionId: string | null
709
+ ```
710
+
423
711
  ## `ContentBlock` (interface)
424
712
 
425
713
  ```ts
426
714
  content: unknown
715
+ delivery_id: string | null | undefined
427
716
  display_name: string | null | undefined
428
717
  tool_call_id: string | null | undefined
429
718
  tool_name: string | null | undefined
430
719
  type: "text" | "thinking" | "tool_use" | "tool_result" | "tool_ui" | "tool_bridge" | "system_notification" | "mode_change" | "plan_status" | "ask_user_answer"
431
720
  ```
432
721
 
722
+ ## `ContentDelta` (interface)
723
+
724
+ ```ts
725
+ content: string
726
+ loop_name: string | undefined
727
+ ```
728
+
433
729
  ## `contentPreview` (function)
434
730
 
435
731
  ```ts
436
732
  contentPreview: (content: MessageContent, maxLen?: number) => string
437
733
  ```
438
734
 
735
+ ## `ContextAction` (type)
736
+
737
+ ```ts
738
+ export type ContextAction = "published" | "retained" | "removed"
739
+ ```
740
+
741
+ ## `ContextCard` (function)
742
+
743
+ ```ts
744
+ ContextCard: ({ context, className }: ContextCardProps) => JSX.Element
745
+ ```
746
+
747
+ ## `ContextCardProps` (interface)
748
+
749
+ ```ts
750
+ className: string | undefined
751
+ context: ContextProjectionData
752
+ ```
753
+
754
+ ## `ContextDisplayState` (interface)
755
+
756
+ ```ts
757
+ detail: string
758
+ isRemoved: boolean
759
+ summary: string
760
+ title: string
761
+ ```
762
+
763
+ ## `ContextGroupCard` (function)
764
+
765
+ ```ts
766
+ ContextGroupCard: ({ contexts, className }: ContextGroupCardProps) => JSX.Element | null
767
+ ```
768
+
769
+ ## `ContextGroupCardProps` (interface)
770
+
771
+ ```ts
772
+ className: string | undefined
773
+ contexts: readonly ContextProjectionData[]
774
+ ```
775
+
776
+ ## `ContextGroupDisplayState` (interface)
777
+
778
+ ```ts
779
+ count: number
780
+ summary: string
781
+ title: string
782
+ ```
783
+
784
+ ## `contextProjectionData` (function)
785
+
786
+ ```ts
787
+ contextProjectionData: (fields: ContextProjectionFields) => ContextProjectionData | null
788
+ ```
789
+
790
+ ## `ContextProjectionData` (interface)
791
+
792
+ ```ts
793
+ context_action: ContextAction
794
+ context_key: string
795
+ context_kind: string
796
+ context_name: string
797
+ context_order: number
798
+ context_revision: string
799
+ display_summary: string | null | undefined
800
+ display_title: string | null | undefined
801
+ sources: ContextSourceInfo[]
802
+ ```
803
+
804
+ ## `ContextProjectionFields` (interface)
805
+
806
+ ```ts
807
+ context_action: ContextAction | null | undefined
808
+ context_key: string | null | undefined
809
+ context_kind: string | null | undefined
810
+ context_name: string | null | undefined
811
+ context_order: number | null | undefined
812
+ context_revision: string | null | undefined
813
+ display_summary: string | null | undefined
814
+ display_title: string | null | undefined
815
+ sources: ContextSourceInfo[] | null | undefined
816
+ ```
817
+
818
+ ## `ContextSourceInfo` (type)
819
+
820
+ ```ts
821
+ export type ContextSourceInfo = Record<string, unknown>
822
+ ```
823
+
439
824
  ## `createInitialSessionState` (function)
440
825
 
441
826
  ```ts
@@ -445,7 +830,9 @@ createInitialSessionState: (sessionId: string) => SessionState
445
830
  ## `CreateSessionRequest` (interface)
446
831
 
447
832
  ```ts
833
+ agent_runtime_id: string | null | undefined
448
834
  biz_role_id: string | null | undefined
835
+ chat_group_id: string | null | undefined
449
836
  compaction_ratio: number | null | undefined
450
837
  daemon_id: string | null | undefined
451
838
  disable_tools: string[] | null | undefined
@@ -455,7 +842,7 @@ intent: string | undefined
455
842
  memory_enabled: boolean | null | undefined
456
843
  model: string | null | undefined
457
844
  primary_skill_id: string | null | undefined
458
- runtime_type: "sandbox" | "daemon" | null | undefined
845
+ runtime_type: "sandbox" | "daemon" | "native" | null | undefined
459
846
  session_solution_asset_id: string | null | undefined
460
847
  solution_id: string | undefined
461
848
  solution_ref: PublishedSolutionRef | undefined
@@ -477,6 +864,12 @@ path: string | undefined
477
864
  token: string | (() => string | null | undefined) | undefined
478
865
  ```
479
866
 
867
+ ## `CurrentPlanPanel` (function)
868
+
869
+ ```ts
870
+ CurrentPlanPanel: ({ messages, running, revealRevision, sessionId, className, }: { messages: ChatMessage[]; running?: boolean; revealRevision?: number; sessionId?: string; className?: string; }) => JSX.Element | null
871
+ ```
872
+
480
873
  ## `DEFAULT_REPLAY_SPEED` (const)
481
874
 
482
875
  ```ts
@@ -500,6 +893,18 @@ allowedOrigins: string[]
500
893
  iframe: HTMLIFrameElement | undefined
501
894
  ```
502
895
 
896
+ ## `EMPTY_PLATFORM_ENDPOINTS` (const)
897
+
898
+ ```ts
899
+ EMPTY_PLATFORM_ENDPOINTS: PlatformEndpoints
900
+ ```
901
+
902
+ ## `EMPTY_SESSION_QUEUE` (const)
903
+
904
+ ```ts
905
+ EMPTY_SESSION_QUEUE: SessionQueueSnapshot
906
+ ```
907
+
503
908
  ## `ExchangeCodeParams` (interface)
504
909
 
505
910
  ```ts
@@ -548,6 +953,12 @@ path: string
548
953
  tags: string[] | undefined
549
954
  ```
550
955
 
956
+ ## `filterConnectorItems` (function)
957
+
958
+ ```ts
959
+ filterConnectorItems: (items: PluginConnectorItem[], query: string) => PluginConnectorItem[]
960
+ ```
961
+
551
962
  ## `FinalArtifact` (interface)
552
963
 
553
964
  ```ts
@@ -601,6 +1012,18 @@ export type FollowupInteractionEvent =
601
1012
  artifactKind: "file"
602
1013
  ```
603
1014
 
1015
+ ## `getContextDisplayState` (function)
1016
+
1017
+ ```ts
1018
+ getContextDisplayState: (context: ContextProjectionData) => ContextDisplayState
1019
+ ```
1020
+
1021
+ ## `getContextGroupDisplayState` (function)
1022
+
1023
+ ```ts
1024
+ getContextGroupDisplayState: (contexts: readonly ContextProjectionData[]) => ContextGroupDisplayState
1025
+ ```
1026
+
604
1027
  ## `getFileParts` (function)
605
1028
 
606
1029
  ```ts
@@ -613,6 +1036,12 @@ getFileParts: (content: MessageContent) => FileContentPart[]
613
1036
  getImageParts: (content: MessageContent) => ImageUrlContentPart[]
614
1037
  ```
615
1038
 
1039
+ ## `getPlanUpdateDisplayState` (function)
1040
+
1041
+ ```ts
1042
+ getPlanUpdateDisplayState: (messages: ChatMessage[]) => PlanUpdateDisplayState
1043
+ ```
1044
+
616
1045
  ## `getTextContent` (function)
617
1046
 
618
1047
  ```ts
@@ -655,12 +1084,24 @@ export type GlobalSearchResultItem =
655
1084
  | GlobalSearchFileResult
656
1085
  ```
657
1086
 
1087
+ ## `groupAdjacentContextRuns` (function)
1088
+
1089
+ ```ts
1090
+ groupAdjacentContextRuns: (kinds: readonly (string | null)[]) => readonly (readonly number[])[]
1091
+ ```
1092
+
658
1093
  ## `groupMessagesByLoop` (function)
659
1094
 
660
1095
  ```ts
661
1096
  groupMessagesByLoop: (messages: ChatMessage[]) => MessageGroup[]
662
1097
  ```
663
1098
 
1099
+ ## `hasChatRunEvent` (function)
1100
+
1101
+ ```ts
1102
+ hasChatRunEvent: (events: RawEvent[]) => boolean
1103
+ ```
1104
+
664
1105
  ## `HeadlessResource` (class)
665
1106
 
666
1107
  ```ts
@@ -669,6 +1110,15 @@ runInSession: { <T = unknown>(sessionId: string, prompt: string, options: Headle
669
1110
  runWithSession: { <T = unknown>(prompt: string, options: HeadlessRunOptions & { schema: JsonSchemaObject; }): Promise<HeadlessRunInSessionResult<T>>; (prompt: string, options?: HeadlessRunOptions): Promise<HeadlessRunInSessionResult<string>>; }
670
1111
  ```
671
1112
 
1113
+ ## `HistoricalCommand` (interface)
1114
+
1115
+ ```ts
1116
+ action: string
1117
+ deliveryId: string
1118
+ payload: unknown
1119
+ toolCallId: string | undefined
1120
+ ```
1121
+
672
1122
  ## `ImageUrlContentPart` (interface)
673
1123
 
674
1124
  ```ts
@@ -697,46 +1147,133 @@ direction: "host-to-agent"
697
1147
  payload: unknown
698
1148
  ```
699
1149
 
700
- ## `isCommandEnvelope` (function)
1150
+ ## `inferToolStatus` (function)
701
1151
 
702
1152
  ```ts
703
- isCommandEnvelope: (value: unknown) => value is CommandEnvelope
1153
+ inferToolStatus: (resultStr: string) => "done" | "error" | "cancelled"
704
1154
  ```
705
1155
 
706
- ## `isHiddenInternalMessage` (function)
1156
+ ## `InlineToolUiCardEntry` (interface)
707
1157
 
708
1158
  ```ts
709
- isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">) => boolean
1159
+ card: ToolUiCard
1160
+ key: string
1161
+ toolCallId: string
710
1162
  ```
711
1163
 
712
- ## `isInboundEnvelope` (function)
1164
+ ## `isAgentComputerCommand` (function)
713
1165
 
714
1166
  ```ts
715
- isInboundEnvelope: (value: unknown) => value is InboundEnvelope
1167
+ isAgentComputerCommand: (command: string) => boolean
716
1168
  ```
717
1169
 
718
- ## `latestPostChatFollowup` (function)
1170
+ ## `isAgentComputerToolCall` (function)
719
1171
 
720
1172
  ```ts
721
- latestPostChatFollowup: (turns: TurnProjection[]) => PostChatFollowup | null
1173
+ isAgentComputerToolCall: (argumentsJson: string | null | undefined) => boolean
722
1174
  ```
723
1175
 
724
- ## `LayoutType` (enum)
1176
+ ## `isAppDevToolUiCard` (function)
725
1177
 
726
1178
  ```ts
727
- export enum LayoutType {
728
- Default = "default",
729
- SkillEditor = "skill-editor",
730
- BladeCoa = "blade-coa",
731
- SolutionEditor = "solution-editor",
732
- SolutionEditor2 = "solution-editor2",
733
- ChatPreview = "chat-preview",
1179
+ isAppDevToolUiCard: (card: ToolUiCard, isAppDev: boolean) => boolean
1180
+ ```
1181
+
1182
+ ## `isCommandEnvelope` (function)
1183
+
1184
+ ```ts
1185
+ isCommandEnvelope: (value: unknown) => value is CommandEnvelope
1186
+ ```
1187
+
1188
+ ## `isEntryGoneError` (function)
1189
+
1190
+ ```ts
1191
+ isEntryGoneError: (error: unknown) => boolean
1192
+ ```
1193
+
1194
+ ## `isHiddenInternalMessage` (function)
1195
+
1196
+ ```ts
1197
+ isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">, options?: { includeLegacyForkContext?: boolean; }) => boolean
1198
+ ```
1199
+
1200
+ ## `isInboundEnvelope` (function)
1201
+
1202
+ ```ts
1203
+ isInboundEnvelope: (value: unknown) => value is InboundEnvelope
1204
+ ```
1205
+
1206
+ ## `isInternalStatusToolUiCard` (function)
1207
+
1208
+ ```ts
1209
+ isInternalStatusToolUiCard: (card: { title?: string | null; } | null) => boolean
1210
+ ```
1211
+
1212
+ ## `isMcpAppData` (function)
1213
+
1214
+ ```ts
1215
+ isMcpAppData: (value: unknown) => value is McpAppData
1216
+ ```
1217
+
1218
+ ## `isPlanUpdateTool` (function)
1219
+
1220
+ ```ts
1221
+ isPlanUpdateTool: (toolCall: Pick<ToolCallInfo, "name">) => boolean
1222
+ ```
1223
+
1224
+ ## `isQueuePanelVisible` (function)
1225
+
1226
+ ```ts
1227
+ isQueuePanelVisible: (snapshot: Pick<SessionQueueSnapshot, "items" | "paused">, notice: string | null | undefined, editing?: boolean) => boolean
1228
+ ```
1229
+
1230
+ ## `isSessionQueueSnapshot` (function)
1231
+
1232
+ ```ts
1233
+ isSessionQueueSnapshot: (value: unknown) => value is SessionQueueSnapshot
1234
+ ```
1235
+
1236
+ ## `isToolUiCard` (function)
1237
+
1238
+ ```ts
1239
+ isToolUiCard: (value: unknown) => value is ToolUiCard
1240
+ ```
1241
+
1242
+ ## `latestPostChatFollowup` (function)
1243
+
1244
+ ```ts
1245
+ latestPostChatFollowup: (turns: TurnProjection[]) => PostChatFollowup | null
1246
+ ```
1247
+
1248
+ ## `latestUserSpeechEntryId` (function)
1249
+
1250
+ ```ts
1251
+ latestUserSpeechEntryId: (turns: TurnProjection[]) => string | null
1252
+ ```
1253
+
1254
+ ## `LayoutType` (enum)
1255
+
1256
+ ```ts
1257
+ export enum LayoutType {
1258
+ Default = "default",
1259
+ SkillEditor = "skill-editor",
1260
+ BladeCoa = "blade-coa",
1261
+ SolutionEditor = "solution-editor",
1262
+ SolutionEditor2 = "solution-editor2",
1263
+ ChatPreview = "chat-preview",
734
1264
  ChatOnly = "chat-only",
735
1265
  SolutionApp = "solution-app",
736
1266
  Custom = "custom",
737
1267
  }
738
1268
  ```
739
1269
 
1270
+ ## `LiveRevisionState` (interface)
1271
+
1272
+ ```ts
1273
+ byTurnId: ReadonlyMap<string, number>
1274
+ current: number
1275
+ ```
1276
+
740
1277
  ## `LlmAdvancedSettings` (interface)
741
1278
 
742
1279
  ```ts
@@ -811,6 +1348,16 @@ baseURL: string | undefined
811
1348
  model: string | undefined
812
1349
  ```
813
1350
 
1351
+ ## `LlmResponseDone` (interface)
1352
+
1353
+ ```ts
1354
+ content: string | null | undefined
1355
+ loop_name: string | undefined
1356
+ reasoning: string | null | undefined
1357
+ role: string
1358
+ tool_calls: { id: string; function: { name: string; arguments: string; }; }[] | undefined
1359
+ ```
1360
+
814
1361
  ## `LlmToolCall` (interface)
815
1362
 
816
1363
  ```ts
@@ -819,6 +1366,20 @@ id: string
819
1366
  name: string
820
1367
  ```
821
1368
 
1369
+ ## `loadPlatformEndpoints` (function)
1370
+
1371
+ ```ts
1372
+ loadPlatformEndpoints: (options?: LoadPlatformEndpointsOptions) => Promise<PlatformEndpoints>
1373
+ ```
1374
+
1375
+ ## `LoadPlatformEndpointsOptions` (interface)
1376
+
1377
+ ```ts
1378
+ baseUrl: string | undefined
1379
+ fetchImpl: { (input: RequestInfo | URL, init?: RequestInit): Promise<Response>; (input: string | URL | Request, init?: RequestInit): Promise<Response>; } | undefined
1380
+ timeoutMs: number | undefined
1381
+ ```
1382
+
822
1383
  ## `LoginOptions` (interface)
823
1384
 
824
1385
  ```ts
@@ -849,6 +1410,64 @@ mode: "streaming" | "static" | undefined
849
1410
  sessionId: string | undefined
850
1411
  ```
851
1412
 
1413
+ ## `McpAppArchive` (interface)
1414
+
1415
+ ```ts
1416
+ html: string
1417
+ mimeType: string
1418
+ plugin: string
1419
+ previousToolInput: Record<string, unknown> | undefined
1420
+ previousToolResult: Record<string, unknown> | undefined
1421
+ resourceMeta: Record<string, unknown>
1422
+ resourceUri: string
1423
+ sourceId: string
1424
+ toolInput: Record<string, unknown>
1425
+ toolResult: Record<string, unknown>
1426
+ ```
1427
+
1428
+ ## `McpAppCard` (function)
1429
+
1430
+ ```ts
1431
+ McpAppCard: ({ sessionId, sourceId, client: suppliedClient, onMessage: suppliedOnMessage }: { sessionId: string; sourceId: string; client?: BladeClient; onMessage?: (message: McpAppMessage) => void; }) => JSX.Element
1432
+ ```
1433
+
1434
+ ## `McpAppContextState` (interface)
1435
+
1436
+ ```ts
1437
+ content: string
1438
+ plugin: string | null
1439
+ revision: string
1440
+ server_alias: string | null
1441
+ ```
1442
+
1443
+ ## `McpAppContextUpdate` (interface)
1444
+
1445
+ ```ts
1446
+ content: string
1447
+ expected_revision: string | null
1448
+ request_id: string
1449
+ ```
1450
+
1451
+ ## `McpAppData` (interface)
1452
+
1453
+ ```ts
1454
+ mimeType: string
1455
+ resourceMeta: Record<string, unknown>
1456
+ resourceUri: string
1457
+ sourceId: string
1458
+ toolInput: Record<string, unknown>
1459
+ toolResult: Record<string, unknown>
1460
+ ```
1461
+
1462
+ ## `McpAppMessage` (interface)
1463
+
1464
+ ```ts
1465
+ content: string
1466
+ label: string
1467
+ sessionId: string
1468
+ sourceId: string
1469
+ ```
1470
+
852
1471
  ## `MemoryRef` (interface)
853
1472
 
854
1473
  ```ts
@@ -865,6 +1484,18 @@ id: number
865
1484
  skill_name: string | null | undefined
866
1485
  ```
867
1486
 
1487
+ ## `MemoryRefsHint` (function)
1488
+
1489
+ ```ts
1490
+ MemoryRefsHint: ({ refs, className }: { refs: MemoryRefInfo[]; className?: string; }) => JSX.Element
1491
+ ```
1492
+
1493
+ ## `mergeConnectorItems` (function)
1494
+
1495
+ ```ts
1496
+ mergeConnectorItems: (sessionPlugins: SessionPlugin[], catalog: PluginCatalogEntry[] | null) => PluginConnectorItem[]
1497
+ ```
1498
+
868
1499
  ## `MessageContent` (type)
869
1500
 
870
1501
  ```ts
@@ -890,6 +1521,8 @@ baseUrl: string | undefined
890
1521
  default: string
891
1522
  defaultServiceModel: string | undefined
892
1523
  models: ModelOption[]
1524
+ unavailableModelIds: string[] | undefined
1525
+ unavailableProviderIds: string[] | undefined
893
1526
  ```
894
1527
 
895
1528
  ## `ModelOption` (interface)
@@ -906,6 +1539,12 @@ serviceModelId: string | undefined
906
1539
  list: () => Promise<ModelCatalog>
907
1540
  ```
908
1541
 
1542
+ ## `normalizeAdjacentUrlFormatting` (function)
1543
+
1544
+ ```ts
1545
+ normalizeAdjacentUrlFormatting: (value: string) => string
1546
+ ```
1547
+
909
1548
  ## `normalizeMessageContent` (function)
910
1549
 
911
1550
  ```ts
@@ -936,6 +1575,32 @@ content: string
936
1575
  label: string
937
1576
  ```
938
1577
 
1578
+ ## `ParsedWhatIfPrompt` (interface)
1579
+
1580
+ ```ts
1581
+ fromStep: number | null
1582
+ quotes: WhatIfQuote[]
1583
+ userText: string
1584
+ ```
1585
+
1586
+ ## `parsePlanUpdate` (function)
1587
+
1588
+ ```ts
1589
+ parsePlanUpdate: (argumentsJson: string) => PlanUpdateData | null
1590
+ ```
1591
+
1592
+ ## `parseQueueAck` (function)
1593
+
1594
+ ```ts
1595
+ parseQueueAck: (response: unknown, fallbackSessionId: string) => QueueOperationResult
1596
+ ```
1597
+
1598
+ ## `parseWhatIfPrompt` (function)
1599
+
1600
+ ```ts
1601
+ parseWhatIfPrompt: (text: string) => ParsedWhatIfPrompt | null
1602
+ ```
1603
+
939
1604
  ## `PatchEnvelope` (interface)
940
1605
 
941
1606
  ```ts
@@ -946,6 +1611,162 @@ sequence: number
946
1611
  turn_id: string
947
1612
  ```
948
1613
 
1614
+ ## `PendingQuestionRef` (interface)
1615
+
1616
+ ```ts
1617
+ child_loop_name: string
1618
+ child_tool_call_id: string
1619
+ description: string | null | undefined
1620
+ ```
1621
+
1622
+ ## `pickCurrentPlanStep` (function)
1623
+
1624
+ ```ts
1625
+ pickCurrentPlanStep: (plan: PlanUpdateData["plan"]) => PlanUpdateData["plan"][number] | null
1626
+ ```
1627
+
1628
+ ## `PLAN_AUTO_COLLAPSE_MS` (const)
1629
+
1630
+ ```ts
1631
+ PLAN_AUTO_COLLAPSE_MS: 5000
1632
+ ```
1633
+
1634
+ ## `PlanStepStatus` (type)
1635
+
1636
+ ```ts
1637
+ export type PlanStepStatus = "pending" | "in_progress" | "completed"
1638
+ ```
1639
+
1640
+ ## `PlanUpdateBlock` (function)
1641
+
1642
+ ```ts
1643
+ PlanUpdateBlock: ({ toolCall, running, autoReveal, className, }: { toolCall: ToolCallInfo; running?: boolean; autoReveal?: boolean; className?: string; }) => JSX.Element | null
1644
+ ```
1645
+
1646
+ ## `PlanUpdateData` (interface)
1647
+
1648
+ ```ts
1649
+ plan: { step: string; status: PlanStepStatus; }[]
1650
+ ```
1651
+
1652
+ ## `PlanUpdateDisplayState` (interface)
1653
+
1654
+ ```ts
1655
+ current: ToolCallInfo | null
1656
+ updating: boolean
1657
+ ```
1658
+
1659
+ ## `PlanUpdateRendererProps` (interface)
1660
+
1661
+ ```ts
1662
+ plan: PlanUpdateData
1663
+ running: boolean
1664
+ sessionId: string | undefined
1665
+ ```
1666
+
1667
+ ## `PlatformEndpoints` (interface)
1668
+
1669
+ ```ts
1670
+ services: Partial<Record<"agent" | "os" | "hub" | "oauth" | "llmGateway" | "gitea" | "tile", string>>
1671
+ ```
1672
+
1673
+ ## `PlatformServiceName` (type)
1674
+
1675
+ ```ts
1676
+ export type PlatformServiceName = (typeof PLATFORM_SERVICE_NAMES)[number]
1677
+ ```
1678
+
1679
+ ## `PluginCatalogEntry` (interface)
1680
+
1681
+ ```ts
1682
+ display_name: string | null
1683
+ icon: string | null
1684
+ installed: boolean
1685
+ name: string
1686
+ ```
1687
+
1688
+ ## `PluginConnectorItem` (interface)
1689
+
1690
+ ```ts
1691
+ active: boolean
1692
+ config: SessionPluginConfigSummary | undefined
1693
+ display_name: string | null
1694
+ icon: string | null
1695
+ iconSource: "account" | "session"
1696
+ installed: boolean | null
1697
+ name: string
1698
+ projected: boolean
1699
+ reason: string | null | undefined
1700
+ status: string
1701
+ ```
1702
+
1703
+ ## `PluginConnectorList` (function)
1704
+
1705
+ ```ts
1706
+ PluginConnectorList: ({ client, sessionId, items, inFlight, busy, mutationError, onToggle, onRetry, onEditConfig, configuring, onConfigSaved, onConfigClose, disabledReason, unavailableText, emptyText, draft, }: PluginConnectorListProps) => JSX.Element
1707
+ ```
1708
+
1709
+ ## `PluginConnectorListProps` (interface)
1710
+
1711
+ ```ts
1712
+ busy: boolean
1713
+ client: BladeClient
1714
+ configuring: ConfiguringPlugin | null
1715
+ disabledReason: string | null | undefined
1716
+ draft: boolean | undefined
1717
+ emptyText: string
1718
+ inFlight: Record<string, true>
1719
+ items: PluginConnectorItem[]
1720
+ mutationError: boolean
1721
+ onConfigClose: () => void
1722
+ onConfigSaved: (state: SessionPluginConfigState) => void
1723
+ onEditConfig: (item: PluginConnectorItem) => void
1724
+ onRetry: (item: PluginConnectorItem) => void
1725
+ onToggle: (item: PluginConnectorItem, next: boolean) => void
1726
+ sessionId: string | null
1727
+ unavailableText: string | null | undefined
1728
+ ```
1729
+
1730
+ ## `PluginConnectorSelection` (interface)
1731
+
1732
+ ```ts
1733
+ displayName: string | null
1734
+ icon: string | null
1735
+ iconSource: "account" | "session"
1736
+ name: string
1737
+ ```
1738
+
1739
+ ## `PluginsResource` (class)
1740
+
1741
+ ```ts
1742
+ catalog: (init?: RequestInit) => Promise<{ plugins: PluginCatalogEntry[]; }>
1743
+ fetchIcon: (name: string) => Promise<Blob>
1744
+ iconUrl: (name: string) => string
1745
+ ```
1746
+
1747
+ ## `PluginTriggerStack` (function)
1748
+
1749
+ ```ts
1750
+ PluginTriggerStack: ({ client, sessionId, summary, className }: PluginTriggerStackProps) => JSX.Element | null
1751
+ ```
1752
+
1753
+ ## `PluginTriggerStackProps` (interface)
1754
+
1755
+ ```ts
1756
+ className: string | undefined
1757
+ client: BladeClient
1758
+ sessionId: string | null
1759
+ summary: TriggerSummary
1760
+ ```
1761
+
1762
+ ## `PollingBackoff` (class)
1763
+
1764
+ ```ts
1765
+ failed: (error: unknown) => void
1766
+ reset: () => void
1767
+ waitMs: () => number | false
1768
+ ```
1769
+
949
1770
  ## `PostChatFollowup` (interface)
950
1771
 
951
1772
  ```ts
@@ -976,6 +1797,21 @@ bizRoleId: string | undefined
976
1797
  kind: "prepared"
977
1798
  ```
978
1799
 
1800
+ ## `prependOlder` (function)
1801
+
1802
+ ```ts
1803
+ prependOlder: (current: TurnProjection[], page: TurnProjection[]) => TurnProjection[]
1804
+ ```
1805
+
1806
+ ## `PreviewToolUiCardEntry` (interface)
1807
+
1808
+ ```ts
1809
+ blocks: ContentBlock[]
1810
+ card: ToolUiCard
1811
+ key: string
1812
+ toolCall: ToolCallInfo
1813
+ ```
1814
+
979
1815
  ## `PrimarySkillParallelMode` (interface)
980
1816
 
981
1817
  ```ts
@@ -996,6 +1832,21 @@ title: string
996
1832
  version: number
997
1833
  ```
998
1834
 
1835
+ ## `PrimarySkillStageSpec` (interface)
1836
+
1837
+ ```ts
1838
+ id: string
1839
+ name: string
1840
+ steps: PrimarySkillStepSpec[]
1841
+ ```
1842
+
1843
+ ## `PrimarySkillStepSpec` (interface)
1844
+
1845
+ ```ts
1846
+ label: string
1847
+ n: number
1848
+ ```
1849
+
999
1850
  ## `ProvidersResponse` (interface)
1000
1851
 
1001
1852
  ```ts
@@ -1011,6 +1862,60 @@ export type PublishedSolutionRef =
1011
1862
  | { source: "hub"; org: string; name: string }
1012
1863
  ```
1013
1864
 
1865
+ ## `QueueAck` (interface)
1866
+
1867
+ ```ts
1868
+ items: QueuedMessage[] | undefined
1869
+ message: string | null | undefined
1870
+ pause_reason: string | null | undefined
1871
+ paused: boolean | undefined
1872
+ revision: number | undefined
1873
+ running: boolean | undefined
1874
+ session_id: string | undefined
1875
+ status: "error" | "ok" | "conflict" | "queued"
1876
+ ```
1877
+
1878
+ ## `QueuedMessage` (interface)
1879
+
1880
+ ```ts
1881
+ content: string
1882
+ created_at: string
1883
+ error: string | undefined
1884
+ id: string
1885
+ position: number
1886
+ status: QueuedMessageStatus
1887
+ target_run_id: string | undefined
1888
+ updated_at: string
1889
+ version: number
1890
+ ```
1891
+
1892
+ ## `QueuedMessageStatus` (type)
1893
+
1894
+ ```ts
1895
+ export type QueuedMessageStatus = "pending" | "delivering" | "claimed" | "consumed" | "cancelled"
1896
+ ```
1897
+
1898
+ ## `queuedMessageStatusLabel` (function)
1899
+
1900
+ ```ts
1901
+ queuedMessageStatusLabel: (status: QueuedMessageStatus) => string
1902
+ ```
1903
+
1904
+ ## `QueueOperationResult` (interface)
1905
+
1906
+ ```ts
1907
+ conflict: boolean
1908
+ message: string | null
1909
+ ok: boolean
1910
+ snapshot: SessionQueueSnapshot | null
1911
+ ```
1912
+
1913
+ ## `queuePauseReasonLabel` (function)
1914
+
1915
+ ```ts
1916
+ queuePauseReasonLabel: (reason: string | null | undefined) => string | null
1917
+ ```
1918
+
1014
1919
  ## `RawEvent` (interface)
1015
1920
 
1016
1921
  ```ts
@@ -1018,12 +1923,24 @@ payload: Record<string, unknown>
1018
1923
  type: string
1019
1924
  ```
1020
1925
 
1926
+ ## `reconcileHistoricalUserTurns` (function)
1927
+
1928
+ ```ts
1929
+ reconcileHistoricalUserTurns: (currentTurns: TurnProjection[], incomingTurns: TurnProjection[]) => TurnProjection[]
1930
+ ```
1931
+
1021
1932
  ## `reconcileOptimisticUserTurns` (function)
1022
1933
 
1023
1934
  ```ts
1024
1935
  reconcileOptimisticUserTurns: (currentTurns: TurnProjection[], incomingTurns: TurnProjection[]) => TurnProjection[]
1025
1936
  ```
1026
1937
 
1938
+ ## `replaceWindow` (function)
1939
+
1940
+ ```ts
1941
+ replaceWindow: (current: TurnProjection[], page: TurnProjection[], liveRevisionAtStart: number, liveRevisions: LiveRevisionState) => TurnProjection[]
1942
+ ```
1943
+
1027
1944
  ## `ReplayBar` (function)
1028
1945
 
1029
1946
  ```ts
@@ -1096,6 +2013,18 @@ speed: ReplaySpeed | undefined
1096
2013
  status: "replay" | "autonomous" | undefined
1097
2014
  ```
1098
2015
 
2016
+ ## `resolveServiceUrl` (function)
2017
+
2018
+ ```ts
2019
+ resolveServiceUrl: (endpoints: PlatformEndpoints, name: PlatformServiceName, path?: string) => string | null
2020
+ ```
2021
+
2022
+ ## `resolveToolUiCardContent` (function)
2023
+
2024
+ ```ts
2025
+ resolveToolUiCardContent: (card: ToolUiCard) => { type: ToolUiCardContentType; content: string; } | null
2026
+ ```
2027
+
1099
2028
  ## `ResultFeedback` (interface)
1100
2029
 
1101
2030
  ```ts
@@ -1142,6 +2071,17 @@ result: unknown
1142
2071
  sessionId: string
1143
2072
  ```
1144
2073
 
2074
+ ## `RunTiming` (interface)
2075
+
2076
+ ```ts
2077
+ duration_ms: number | null | undefined
2078
+ loop_id: string
2079
+ run_id: string
2080
+ scope: "chat" | "subagent"
2081
+ started_at: string | null | undefined
2082
+ status: "completed" | "paused" | "failed" | "cancelled" | "incomplete"
2083
+ ```
2084
+
1145
2085
  ## `RunTrace` (interface)
1146
2086
 
1147
2087
  ```ts
@@ -1163,17 +2103,52 @@ SDK_NAME: "agent-client"
1163
2103
  SDK_VERSION: string
1164
2104
  ```
1165
2105
 
2106
+ ## `selectionFromItem` (function)
2107
+
2108
+ ```ts
2109
+ selectionFromItem: (item: PluginConnectorItem) => PluginConnectorSelection
2110
+ ```
2111
+
1166
2112
  ## `SendOptions` (interface)
1167
2113
 
1168
2114
  ```ts
1169
2115
  askUserAnswer: Record<string, unknown> | undefined
2116
+ kbIds: number[] | undefined
1170
2117
  mode: string | undefined
1171
2118
  model: string | undefined
2119
+ queueWhenRunning: boolean | undefined
1172
2120
  replayDecision: "keep_replay" | "continue_replay" | undefined
1173
2121
  thinkingOverride: boolean | undefined
1174
2122
  whatif: { from_step: number; quotes: Array<Record<string, unknown>>; deprecate_entry_ids: string[]; } | undefined
1175
2123
  ```
1176
2124
 
2125
+ ## `SessionComputer` (interface)
2126
+
2127
+ ```ts
2128
+ agent_runtimes: unknown[] | undefined
2129
+ allowed_paths: string[] | undefined
2130
+ arch: string | null | undefined
2131
+ blade_home: string | null | undefined
2132
+ created_at: string
2133
+ daemon_version: string | null | undefined
2134
+ enabled: boolean
2135
+ home: string | null | undefined
2136
+ hostname: string | null | undefined
2137
+ id: string
2138
+ is_primary: boolean
2139
+ label: string
2140
+ last_seen_at: string | null | undefined
2141
+ online: boolean
2142
+ os: string | null | undefined
2143
+ workspace: string | null | undefined
2144
+ ```
2145
+
2146
+ ## `SessionComputerList` (interface)
2147
+
2148
+ ```ts
2149
+ computers: SessionComputer[]
2150
+ ```
2151
+
1177
2152
  ## `SessionConfig` (interface)
1178
2153
 
1179
2154
  ```ts
@@ -1185,6 +2160,12 @@ memoryEnabled: boolean | undefined
1185
2160
  model: string | undefined
1186
2161
  ```
1187
2162
 
2163
+ ## `SessionConnectOptions` (interface)
2164
+
2165
+ ```ts
2166
+ setup: ((session: AgentSession) => void) | undefined
2167
+ ```
2168
+
1188
2169
  ## `SessionContextStats` (interface)
1189
2170
 
1190
2171
  ```ts
@@ -1205,8 +2186,11 @@ solution: SolutionDefinition | undefined
1205
2186
  ## `SessionDetail` (interface)
1206
2187
 
1207
2188
  ```ts
2189
+ agent_runtime_id: string | null | undefined
2190
+ ba_version: string | null | undefined
1208
2191
  biz_role_id: string | null | undefined
1209
2192
  bound_skill_id: string | null | undefined
2193
+ chat_group_id: string | null | undefined
1210
2194
  created_at: string
1211
2195
  daemon_id: string | null | undefined
1212
2196
  disable_tools: (string[] & string[]) | undefined
@@ -1229,6 +2213,7 @@ primary_skill_id: string | null | undefined
1229
2213
  primary_skill_snapshot: PrimarySkillSnapshot | null | undefined
1230
2214
  replay_state: ReplayState | null | undefined
1231
2215
  runtime_type: string | null | undefined
2216
+ sandbox_version: string | null | undefined
1232
2217
  shared: boolean | undefined
1233
2218
  solution: Solution | null | undefined
1234
2219
  solution_id: string | null | undefined
@@ -1240,66 +2225,245 @@ viewer_role: "owner" | "viewer" | undefined
1240
2225
  workspace_path: string | null | undefined
1241
2226
  ```
1242
2227
 
1243
- ## `SessionHistory` (interface)
2228
+ ## `SessionHistory` (interface)
2229
+
2230
+ ```ts
2231
+ active_branch: string | null
2232
+ branches: string[]
2233
+ nodes: HistoryNode[]
2234
+ system_prompt_tokens: number | null | undefined
2235
+ tokenizer_model: string | null | undefined
2236
+ tools_tokens: number | null | undefined
2237
+ ```
2238
+
2239
+ ## `SessionHub` (class)
2240
+
2241
+ ```ts
2242
+ connect: (sessionId: string, options?: SessionConnectOptions) => Promise<AgentSession>
2243
+ disconnect: () => void
2244
+ disposeAll: () => void
2245
+ getConnection: () => ConnectionStatus
2246
+ onConnectionChange: (listener: (status: ConnectionStatus) => void) => () => void
2247
+ peek: (sessionId: string) => AgentSession | undefined
2248
+ reconnect: () => void
2249
+ ```
2250
+
2251
+ ## `SessionInfo` (type)
2252
+
2253
+ ```ts
2254
+ SessionInfo = type({
2255
+ id: "string",
2256
+ intent: "string",
2257
+ status: SessionStatus,
2258
+ created_at: "string",
2259
+ updated_at: "string",
2260
+ "shared?": "boolean",
2261
+ "memory_enabled?": "boolean",
2262
+ "is_persistent?": "boolean",
2263
+ "is_headless?": "boolean",
2264
+ "viewer_role?": "'owner' | 'viewer'",
2265
+ "template_id?": "string | null",
2266
+ "model?": "string | null",
2267
+ "enable_thinking?": "boolean | null",
2268
+ "solution_id?": "string | null",
2269
+ "solution_ref?": "unknown",
2270
+ "biz_role_id?": "string | null",
2271
+ "solution?": "unknown",
2272
+ "plan_summary?": "string | null",
2273
+ "primary_skill_id?": "string | null",
2274
+ // ship-attack v2:后端 engine.set_bound_skill 写入的"绑定 skill id"。
2275
+ // 未绑定 / 非 ship-attack session 为 null。
2276
+ "bound_skill_id?": "string | null",
2277
+ "replay_state?": "unknown",
2278
+ "is_pinned?": "boolean",
2279
+ "pinned_at?": "string | null",
2280
+ "is_example?": "boolean",
2281
+ "ports?": "unknown",
2282
+ "disable_tools?": "string[]",
2283
+ "runtime_type?": "string | null",
2284
+ "daemon_id?": "string | null",
2285
+ "agent_runtime_id?": "string | null",
2286
+ "workspace_path?": "string | null",
2287
+ "ba_version?": "string | null",
2288
+ "sandbox_version?": "string | null",
2289
+ "chat_group_id?": "string | null",
2290
+ "match?": "unknown",
2291
+ })
2292
+ ```
2293
+
2294
+ ## `SessionMemoryToggle` (function)
2295
+
2296
+ ```ts
2297
+ SessionMemoryToggle: ({ sessionId, enabled, client: clientProp, disabled, label, className, labelClassName, inputClassName, onSaved, onError, }: SessionMemoryToggleProps) => JSX.Element
2298
+ ```
2299
+
2300
+ ## `SessionMemoryToggleProps` (interface)
2301
+
2302
+ ```ts
2303
+ className: string | undefined
2304
+ client: BladeClient | undefined
2305
+ disabled: boolean | undefined
2306
+ enabled: boolean
2307
+ inputClassName: string | undefined
2308
+ label: string | undefined
2309
+ labelClassName: string | undefined
2310
+ onError: ((error: unknown) => void) | undefined
2311
+ onSaved: ((sessionId: string, enabled: boolean) => void) | undefined
2312
+ sessionId: string
2313
+ ```
2314
+
2315
+ ## `SessionPlugin` (interface)
2316
+
2317
+ ```ts
2318
+ active: boolean
2319
+ config: SessionPluginConfigSummary | undefined
2320
+ display_name: string | null | undefined
2321
+ icon: string | null | undefined
2322
+ installed: boolean | null
2323
+ name: string
2324
+ projected: boolean
2325
+ projection_source: string | null | undefined
2326
+ reason: string | null | undefined
2327
+ status: string
2328
+ ```
2329
+
2330
+ ## `SessionPluginActivation` (type)
2331
+
2332
+ ```ts
2333
+ export type SessionPluginActivation = Pick<SessionPlugin, "name" | "active" | "status" | "reason">
2334
+ ```
2335
+
2336
+ ## `SessionPluginConfigDialog` (function)
2337
+
2338
+ ```ts
2339
+ SessionPluginConfigDialog: ({ client, sessionId, plugin, ...props }: SessionPluginConfigDialogProps) => JSX.Element
2340
+ ```
2341
+
2342
+ ## `SessionPluginConfigDialogProps` (interface)
2343
+
2344
+ ```ts
2345
+ client: BladeClient
2346
+ onClose: () => void
2347
+ onSaved: ((state: SessionPluginConfigState) => void) | undefined
2348
+ plugin: Pick<SessionPlugin, "name" | "display_name" | "icon">
2349
+ sessionId: string
2350
+ ```
2351
+
2352
+ ## `SessionPluginConfigDraft` (interface)
2353
+
2354
+ ```ts
2355
+ remove: string[]
2356
+ set: SessionPluginConfigSet[]
2357
+ ```
2358
+
2359
+ ## `SessionPluginConfigError` (interface)
2360
+
2361
+ ```ts
2362
+ message: string
2363
+ path: string
2364
+ ```
2365
+
2366
+ ## `SessionPluginConfigForm` (function)
2367
+
2368
+ ```ts
2369
+ SessionPluginConfigForm: ({ config, submitting, errors, failure, onSubmit, onCancel, }: SessionPluginConfigFormProps) => JSX.Element
2370
+ ```
2371
+
2372
+ ## `SessionPluginConfigFormProps` (interface)
2373
+
2374
+ ```ts
2375
+ config: SessionPluginConfigState
2376
+ errors: SessionPluginConfigError[]
2377
+ failure: string | null
2378
+ onCancel: () => void
2379
+ onSubmit: (draft: SessionPluginConfigDraft) => void
2380
+ submitting: boolean
2381
+ ```
2382
+
2383
+ ## `SessionPluginConfigSet` (interface)
2384
+
2385
+ ```ts
2386
+ path: string
2387
+ value: unknown
2388
+ ```
2389
+
2390
+ ## `SessionPluginConfigState` (interface)
2391
+
2392
+ ```ts
2393
+ errors: SessionPluginConfigError[]
2394
+ reason: string | null
2395
+ revision: string | null
2396
+ schema: Record<string, unknown> | null
2397
+ state: SessionPluginConfigStateName
2398
+ values: Record<string, unknown>
2399
+ write_only: string[]
2400
+ ```
2401
+
2402
+ ## `SessionPluginConfigStateName` (type)
2403
+
2404
+ ```ts
2405
+ export type SessionPluginConfigStateName = "not_required" | "required" | "configured" | "error"
2406
+ ```
2407
+
2408
+ ## `SessionPluginConfigSummary` (type)
2409
+
2410
+ ```ts
2411
+ export type SessionPluginConfigSummary =
2412
+ | SessionPluginConfigStateName
2413
+ | "unchecked"
2414
+ ```
2415
+
2416
+ ## `SessionPluginConfigUpdate` (interface)
2417
+
2418
+ ```ts
2419
+ expected_revision: string | null | undefined
2420
+ remove: string[] | undefined
2421
+ set: SessionPluginConfigSet[] | undefined
2422
+ ```
2423
+
2424
+ ## `SessionPluginIcon` (function)
2425
+
2426
+ ```ts
2427
+ SessionPluginIcon: ({ client, sessionId, plugin, size, shape, className }: SessionPluginIconProps) => JSX.Element
2428
+ ```
2429
+
2430
+ ## `SessionPluginIconProps` (interface)
2431
+
2432
+ ```ts
2433
+ className: string | undefined
2434
+ client: BladeClient
2435
+ plugin: Pick<SessionPlugin, "name" | "icon">
2436
+ sessionId: string | null
2437
+ shape: "rounded" | "circle" | undefined
2438
+ size: number | undefined
2439
+ ```
2440
+
2441
+ ## `sessionPluginLabel` (function)
2442
+
2443
+ ```ts
2444
+ sessionPluginLabel: (plugin: Pick<SessionPlugin, "name" | "display_name">) => string
2445
+ ```
2446
+
2447
+ ## `SessionPluginLabelProps` (interface)
1244
2448
 
1245
2449
  ```ts
1246
- active_branch: string | null
1247
- branches: string[]
1248
- nodes: HistoryNode[]
1249
- system_prompt_tokens: number | null | undefined
1250
- tokenizer_model: string | null | undefined
1251
- tools_tokens: number | null | undefined
2450
+ plugin: Pick<SessionPlugin, "name" | "display_name">
1252
2451
  ```
1253
2452
 
1254
- ## `SessionHub` (class)
2453
+ ## `SessionPluginSelector` (function)
1255
2454
 
1256
2455
  ```ts
1257
- connect: (sessionId: string) => Promise<AgentSession>
1258
- disconnect: () => void
1259
- disposeAll: () => void
1260
- getConnection: () => ConnectionStatus
1261
- onConnectionChange: (listener: (status: ConnectionStatus) => void) => () => void
1262
- peek: (sessionId: string) => AgentSession | undefined
1263
- reconnect: () => void
2456
+ SessionPluginSelector: (props: SessionPluginSelectorProps) => JSX.Element
1264
2457
  ```
1265
2458
 
1266
- ## `SessionInfo` (type)
2459
+ ## `SessionPluginSelectorProps` (interface)
1267
2460
 
1268
2461
  ```ts
1269
- SessionInfo = type({
1270
- id: "string",
1271
- intent: "string",
1272
- status: SessionStatus,
1273
- created_at: "string",
1274
- updated_at: "string",
1275
- "shared?": "boolean",
1276
- "memory_enabled?": "boolean",
1277
- "is_persistent?": "boolean",
1278
- "is_headless?": "boolean",
1279
- "viewer_role?": "'owner' | 'viewer'",
1280
- "template_id?": "string | null",
1281
- "model?": "string | null",
1282
- "enable_thinking?": "boolean | null",
1283
- "solution_id?": "string | null",
1284
- "solution_ref?": "unknown",
1285
- "biz_role_id?": "string | null",
1286
- "solution?": "unknown",
1287
- "plan_summary?": "string | null",
1288
- "primary_skill_id?": "string | null",
1289
- // ship-attack v2:后端 engine.set_bound_skill 写入的"绑定 skill id"。
1290
- // 未绑定 / 非 ship-attack session 为 null。
1291
- "bound_skill_id?": "string | null",
1292
- "replay_state?": "unknown",
1293
- "is_pinned?": "boolean",
1294
- "pinned_at?": "string | null",
1295
- "is_example?": "boolean",
1296
- "ports?": "unknown",
1297
- "disable_tools?": "string[]",
1298
- "runtime_type?": "string | null",
1299
- "daemon_id?": "string | null",
1300
- "workspace_path?": "string | null",
1301
- "match?": "unknown",
1302
- })
2462
+ className: string | undefined
2463
+ client: BladeClient
2464
+ onChange: ((plugin: SessionPluginActivation) => void) | undefined
2465
+ sessionId: string
2466
+ side: "top" | "bottom" | undefined
1303
2467
  ```
1304
2468
 
1305
2469
  ## `SessionPortMapping` (interface)
@@ -1321,6 +2485,49 @@ model: string | undefined
1321
2485
  solution: SolutionRef | undefined
1322
2486
  ```
1323
2487
 
2488
+ ## `SessionQueuePanel` (function)
2489
+
2490
+ ```ts
2491
+ SessionQueuePanel: ({ snapshot, canDeliver, pendingItemId, notice, onResume, onCancel, onEdit, onRequeue, onMove, onReorder, onDeliver, contentWidthClassName, rootClassName, onVisibleChange, mergesWithInputBelow: mergesWithInputBelowProp, }: SessionQueuePanelProps) => JSX.Element | null
2492
+ ```
2493
+
2494
+ ## `SessionQueuePanelProps` (interface)
2495
+
2496
+ ```ts
2497
+ canDeliver: boolean
2498
+ contentWidthClassName: string | undefined
2499
+ mergesWithInputBelow: boolean | undefined
2500
+ notice: string | null | undefined
2501
+ onCancel: (item: QueuedMessage) => void
2502
+ onDeliver: (item: QueuedMessage) => void
2503
+ onEdit: (item: QueuedMessage, content: string) => boolean | undefined | Promise<boolean>
2504
+ onMove: (item: QueuedMessage, delta: -1 | 1) => void
2505
+ onReorder: (orderedIds: string[]) => void
2506
+ onRequeue: ((content: string) => Promise<boolean>) | undefined
2507
+ onResume: () => void
2508
+ onVisibleChange: ((visible: boolean) => void) | undefined
2509
+ pendingItemId: string | null | undefined
2510
+ rootClassName: string | undefined
2511
+ snapshot: SessionQueueSnapshot
2512
+ ```
2513
+
2514
+ ## `SessionQueueSnapshot` (interface)
2515
+
2516
+ ```ts
2517
+ items: QueuedMessage[]
2518
+ pause_reason: string | null
2519
+ paused: boolean
2520
+ revision: number
2521
+ session_id: string
2522
+ ```
2523
+
2524
+ ## `SessionSearchMatch` (interface)
2525
+
2526
+ ```ts
2527
+ field: "title" | "content"
2528
+ snippet: { role: string; text: string; } | null
2529
+ ```
2530
+
1324
2531
  ## `SessionSetupError` (class)
1325
2532
 
1326
2533
  ```ts
@@ -1342,6 +2549,7 @@ export type SessionSetupStage = "solution" | "session" | "skill" | "connection"
1342
2549
 
1343
2550
  ```ts
1344
2551
  attachAppCli: (sessionId: string, definition: AppCliDefinition) => Promise<AppCliAttachment>
2552
+ callMcpApp: (sessionId: string, sourceId: string, request: { request_id: string; name: string; arguments: Record<string, unknown>; }, init?: RequestInit) => Promise<{ response: Record<string, unknown>; replayed: boolean; }>
1345
2553
  checkoutSession: (sessionId: string, checkpointId: string, position: "before" | "turn_end", mode?: "both" | "conversation" | "code", linear?: boolean) => Promise<{ id: string; content: string; position: string; mode?: string; files_restored?: boolean; linear?: boolean; }>
1346
2554
  connect: (sessionId: string) => Promise<AgentSession>
1347
2555
  copyFile: (sessionId: string, filePath: string) => Promise<{ path: string; }>
@@ -1355,24 +2563,34 @@ deleteFile: (sessionId: string, filePath: string) => Promise<void>
1355
2563
  deleteSession: (sessionId: string, options?: { deleteWorkspace?: boolean; }) => Promise<{ deleted: boolean; workspace_deleted?: boolean; }>
1356
2564
  downloadFile: (sessionId: string, filePath: string, downloadName?: string) => Promise<void>
1357
2565
  exportSession: (sessionId: string) => Promise<void>
2566
+ fetchSessionPluginIcon: (sessionId: string, name: string) => Promise<Blob>
1358
2567
  getBackgroundTask: (sessionId: string, taskId: string, tail?: number, init?: RequestInit) => Promise<BackgroundTask>
1359
2568
  getDownloadDirUrl: (sessionId: string, dirPath: string) => string
2569
+ getMcpApp: (sessionId: string, sourceId: string, init?: RequestInit) => Promise<McpAppArchive>
2570
+ getMcpAppContext: (sessionId: string, sourceId: string, init?: RequestInit) => Promise<McpAppContextState>
1360
2571
  getReplayPreview: (sessionId: string) => Promise<ReplayPreview>
1361
2572
  getSession: (sessionId: string, init?: RequestInit) => Promise<SessionDetail>
1362
2573
  getSessionCheckpoints: (sessionId: string, init?: RequestInit) => Promise<{ nodes: CheckpointNode[]; leaf_id: string | null; }>
1363
2574
  getSessionContextStats: (sessionId: string, init?: RequestInit) => Promise<SessionContextStats>
1364
2575
  getSessionHistory: (sessionId: string, init?: RequestInit) => Promise<SessionHistory>
2576
+ getSessionPluginConfig: (sessionId: string, name: string, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1365
2577
  getSessionTasks: (sessionId: string) => Promise<Task[]>
2578
+ getSessionTurnCommands: (sessionId: string) => Promise<HistoricalCommand[]>
2579
+ getSessionTurnIndex: (sessionId: string) => Promise<SessionTurnIndex>
1366
2580
  getSessionTurns: (sessionId: string) => Promise<TurnProjection[]>
2581
+ getSessionTurnsPage: (sessionId: string, options?: SessionTurnsQuery, init?: RequestInit) => Promise<SessionTurnsPage>
1367
2582
  getSharedSession: (token: string) => Promise<TurnProjection[]>
1368
2583
  importSession: (file: File, name?: string, solutionOverride?: string | null | ImportSessionOptions) => Promise<{ session_id: string; }>
1369
2584
  listBackgroundTasks: (sessionId: string, init?: RequestInit) => Promise<BackgroundTask[]>
1370
2585
  listDir: (sessionId: string, dirPath: string) => Promise<FileEntry[]>
1371
2586
  listResultFeedback: (sessionId: string) => Promise<ResultFeedback[]>
2587
+ listSessionPlugins: (sessionId: string, init?: RequestInit) => Promise<{ plugins: SessionPlugin[]; sync_version: number; sync_pending: boolean; }>
1372
2588
  listSessions: (template_id_prefix?: string, solution_id?: string) => Promise<SessionInfo[]>
1373
- listSessionsPaginated: (params: { limit: number; offset: number; template_id_prefix?: string; solution_id?: string; solution_registry_id?: string; q?: string; }) => Promise<PaginatedSessionsResult>
2589
+ listSessionsPaginated: (params: { limit: number; offset: number; template_id_prefix?: string; solution_id?: string; solution_registry_id?: string; q?: string; chat_group_id?: string; }) => Promise<PaginatedSessionsResult>
1374
2590
  listSessionsWithSkillData: () => Promise<SkillDevSession[]>
2591
+ onMcpAppChanged: (sessionId: string, sourceId: string, listener: () => void) => () => void
1375
2592
  pinSession: (sessionId: string, pinned: boolean) => Promise<SessionInfo>
2593
+ prepareSessionPluginConfig: (sessionId: string, name: string, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1376
2594
  previewImport: (file: File) => Promise<ImportPreview>
1377
2595
  probeSessionUrl: (sessionId: string, url: string) => Promise<{ reachable: boolean; requires_proxy: boolean; }>
1378
2596
  putResultFeedback: (sessionId: string, assistantEntryId: string, feedback: { helpful: boolean; reason?: ResultFeedbackReason | null; }) => Promise<ResultFeedback>
@@ -1380,16 +2598,20 @@ renameFile: (sessionId: string, filePath: string, newName: string) => Promise<{
1380
2598
  revokeShare: (sessionId: string, token: string) => Promise<{ revoked: boolean; }>
1381
2599
  rewindSession: (sessionId: string, checkpointId: string) => Promise<{ id: string; content: string; }>
1382
2600
  searchOwnedContent: (params: { q: string; limit?: number; }) => Promise<GlobalSearchResult>
2601
+ sessionPluginIconUrl: (sessionId: string, name: string) => string
1383
2602
  setSessionEnv: (sessionId: string, env: Record<string, string>) => Promise<SessionDetail>
2603
+ setSessionPluginActivation: (sessionId: string, name: string, active: boolean, init?: RequestInit) => Promise<{ plugin: SessionPluginActivation; sync_version: number; }>
1384
2604
  shareFile: (sessionId: string, sourcePath: string, linkName?: string, shareFolder?: string) => Promise<{ path: string; target: string; }>
1385
2605
  startReplaySession: (sourceSessionId: string, speed?: ReplaySpeed) => Promise<{ session_id: string; }>
1386
2606
  stopBackgroundTask: (sessionId: string, taskId: string) => Promise<BackgroundTaskStopResult>
1387
2607
  switchBranch: (sessionId: string, checkpointId: string) => Promise<{ id: string; leaf_id: string; }>
1388
2608
  tokenizeMessages: (messages: Array<Record<string, unknown>>, options?: { model?: string; add_generation_prompt?: boolean; enable_thinking?: boolean | null; tools?: Array<Record<string, unknown>>; }) => Promise<TokenizeResult>
1389
2609
  tokenizePrompt: (prompt: string, model?: string) => Promise<TokenizeResult>
2610
+ updateMcpAppContext: (sessionId: string, sourceId: string, body: McpAppContextUpdate, init?: RequestInit) => Promise<{ status: "accepted"; revision: string; }>
1390
2611
  updateReplaySession: (sessionId: string, payload: { speed?: ReplaySpeed; status?: "autonomous"; }) => Promise<{ replay_state: SessionInfo["replay_state"]; }>
1391
- updateSession: (sessionId: string, payload: { intent?: string; }) => Promise<SessionDetail>
2612
+ updateSession: (sessionId: string, payload: { intent?: string; chat_group_id?: string | null; }) => Promise<SessionDetail>
1392
2613
  updateSessionMemory: (sessionId: string, memoryEnabled: boolean) => Promise<{ memory_enabled: boolean; }>
2614
+ updateSessionPluginConfig: (sessionId: string, name: string, update: SessionPluginConfigUpdate, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1393
2615
  updateSharing: (sessionId: string, shared: boolean) => Promise<{ shared: boolean; }>
1394
2616
  uploadFiles: (sessionId: string, dirPath: string, files: FileList | File[] | UploadFileEntry[], options?: UploadFilesOptions) => Promise<{ uploaded: string[]; failed: string[]; }>
1395
2617
  writeFile: (sessionId: string, filePath: string, content: string) => Promise<{ success: boolean; }>
@@ -1404,8 +2626,11 @@ askAnswers: Record<string, AskUserAnswerData>
1404
2626
  connection: ConnectionStatus
1405
2627
  errorMessage: string | null
1406
2628
  isStreaming: boolean
2629
+ loadingOlder: boolean
1407
2630
  messages: ChatMessage[]
1408
2631
  mode: "planning" | "executing" | null
2632
+ nextBefore: string | null
2633
+ queue: SessionQueueSnapshot
1409
2634
  replay: ReplaySnapshot | null
1410
2635
  sessionId: string
1411
2636
  status: "completed" | "failed" | "interrupted" | "running" | "created" | "waiting_for_input" | null
@@ -1421,6 +2646,44 @@ SessionStatus = type(
1421
2646
  )
1422
2647
  ```
1423
2648
 
2649
+ ## `SessionStatusEvent` (interface)
2650
+
2651
+ ```ts
2652
+ session_id: string
2653
+ status: string
2654
+ ```
2655
+
2656
+ ## `SessionTurnIndex` (interface)
2657
+
2658
+ ```ts
2659
+ items: SessionTurnIndexItem[]
2660
+ sessionId: string
2661
+ ```
2662
+
2663
+ ## `SessionTurnIndexItem` (interface)
2664
+
2665
+ ```ts
2666
+ createdAt: string | null
2667
+ entryId: string
2668
+ preview: string
2669
+ ```
2670
+
2671
+ ## `SessionTurnsPage` (interface)
2672
+
2673
+ ```ts
2674
+ currentMode: "planning" | "executing"
2675
+ nextBefore: string | null
2676
+ turns: TurnProjection[]
2677
+ ```
2678
+
2679
+ ## `SessionTurnsQuery` (interface)
2680
+
2681
+ ```ts
2682
+ before: string | undefined
2683
+ fromEntryId: string | undefined
2684
+ limit: number | undefined
2685
+ ```
2686
+
1424
2687
  ## `ShareLinkResult` (interface)
1425
2688
 
1426
2689
  ```ts
@@ -1429,6 +2692,30 @@ token: string
1429
2692
  url: string
1430
2693
  ```
1431
2694
 
2695
+ ## `shouldApplySnapshot` (function)
2696
+
2697
+ ```ts
2698
+ shouldApplySnapshot: (current: SessionQueueSnapshot | undefined, next: SessionQueueSnapshot) => boolean
2699
+ ```
2700
+
2701
+ ## `SiteVisitsResource` (class)
2702
+
2703
+ ```ts
2704
+ record: () => Promise<SiteVisitsSummary>
2705
+ summary: () => Promise<SiteVisitsSummary>
2706
+ ```
2707
+
2708
+ ## `SiteVisitsSummary` (interface)
2709
+
2710
+ ```ts
2711
+ as_of: string
2712
+ date: string
2713
+ timezone: string
2714
+ today_pv: number
2715
+ today_uv: number
2716
+ total_pv: number
2717
+ ```
2718
+
1432
2719
  ## `SkillDefinition` (interface)
1433
2720
 
1434
2721
  ```ts
@@ -1436,6 +2723,12 @@ files: TextFile[]
1436
2723
  name: string
1437
2724
  ```
1438
2725
 
2726
+ ## `SkillEditorTemplateId` (type)
2727
+
2728
+ ```ts
2729
+ export type SkillEditorTemplateId = "skill_editor"
2730
+ ```
2731
+
1439
2732
  ## `SkillMentionAvailability` (interface)
1440
2733
 
1441
2734
  ```ts
@@ -1513,6 +2806,18 @@ export type SolutionDefinition =
1513
2806
  export type SolutionRef = ExistingSolutionRef | PreparedSolutionAsset
1514
2807
  ```
1515
2808
 
2809
+ ## `sortComputers` (function)
2810
+
2811
+ ```ts
2812
+ sortComputers: (computers: SessionComputer[]) => SessionComputer[]
2813
+ ```
2814
+
2815
+ ## `SystemError` (interface)
2816
+
2817
+ ```ts
2818
+ message: string
2819
+ ```
2820
+
1516
2821
  ## `Task` (type)
1517
2822
 
1518
2823
  ```ts
@@ -1573,6 +2878,25 @@ action: string
1573
2878
  payload: unknown
1574
2879
  ```
1575
2880
 
2881
+ ## `ToolCallArgumentsDelta` (interface)
2882
+
2883
+ ```ts
2884
+ arguments_delta: string
2885
+ function: { name: string; }
2886
+ id: string
2887
+ index: number
2888
+ loop_name: string | undefined
2889
+ ```
2890
+
2891
+ ## `ToolCallCreated` (interface)
2892
+
2893
+ ```ts
2894
+ function: { name: string; arguments: string; }
2895
+ id: string
2896
+ index: number
2897
+ loop_name: string | undefined
2898
+ ```
2899
+
1576
2900
  ## `ToolCallInfo` (interface)
1577
2901
 
1578
2902
  ```ts
@@ -1586,12 +2910,71 @@ result: unknown
1586
2910
  status: "done" | "error" | "cancelled" | "awaiting_answer" | "pending" | undefined
1587
2911
  ```
1588
2912
 
2913
+ ## `ToolCallProjection` (interface)
2914
+
2915
+ ```ts
2916
+ arguments: string
2917
+ display_name: string
2918
+ duration_ms: number | null | undefined
2919
+ id: string
2920
+ pending_question_ref: PendingQuestionRef | null | undefined
2921
+ ran_in_parallel: boolean | undefined
2922
+ result: unknown
2923
+ started_at: string | null | undefined
2924
+ status: string
2925
+ subagent_runs: RunTiming[] | undefined
2926
+ tool_name: string
2927
+ ```
2928
+
1589
2929
  ## `ToolCallRenderer` (type)
1590
2930
 
1591
2931
  ```ts
1592
2932
  export type ToolCallRenderer = (info: ToolCallInfo) => ReactNode | null
1593
2933
  ```
1594
2934
 
2935
+ ## `ToolResultDelta` (interface)
2936
+
2937
+ ```ts
2938
+ content: string
2939
+ loop_name: string | undefined
2940
+ stream: "stdout" | "stderr" | undefined
2941
+ tool_call_id: string
2942
+ ```
2943
+
2944
+ ## `ToolResultDone` (interface)
2945
+
2946
+ ```ts
2947
+ content: string
2948
+ function: { name: string; }
2949
+ loop_name: string | undefined
2950
+ tool_call_id: string
2951
+ ```
2952
+
2953
+ ## `ToolUiCard` (interface)
2954
+
2955
+ ```ts
2956
+ archived: boolean | undefined
2957
+ height: number
2958
+ mcpApp: McpAppData | undefined
2959
+ resourceHTML: string | undefined
2960
+ resourceUri: string | undefined
2961
+ resourceURI: string | undefined
2962
+ target: "inline" | "preview"
2963
+ title: string | undefined
2964
+ ```
2965
+
2966
+ ## `ToolUiCardContentType` (type)
2967
+
2968
+ ```ts
2969
+ export type ToolUiCardContentType = "resource-html" | "resource-uri"
2970
+ ```
2971
+
2972
+ ## `ToolUiCardView` (function)
2973
+
2974
+ ```ts
2975
+ ToolUiCardView: ({ card, sessionId }: { card: ToolUiCard; sessionId?: string; }) => JSX.Element | null
2976
+ ```
2977
+
1595
2978
  ## `toReplaySnapshot` (function)
1596
2979
 
1597
2980
  ```ts
@@ -1604,6 +2987,93 @@ toReplaySnapshot: (raw: ReplayState | null | undefined) => ReplaySnapshot | null
1604
2987
  transformSlashCommand: (skillName: string, rawInput: string, { local, installed }?: SkillMentionAvailability) => string
1605
2988
  ```
1606
2989
 
2990
+ ## `TRIGGER_ICON_LIMIT` (const)
2991
+
2992
+ ```ts
2993
+ TRIGGER_ICON_LIMIT: 3
2994
+ ```
2995
+
2996
+ ## `triggerSummary` (function)
2997
+
2998
+ ```ts
2999
+ triggerSummary: (items: Array<Pick<PluginConnectorSelection, "name" | "displayName" | "icon" | "iconSource">>) => TriggerSummary
3000
+ ```
3001
+
3002
+ ## `TriggerSummary` (interface)
3003
+
3004
+ ```ts
3005
+ overflow: number
3006
+ total: number
3007
+ visible: Pick<PluginConnectorSelection, "name" | "iconSource" | "icon" | "displayName">[]
3008
+ ```
3009
+
3010
+ ## `TURN_NAV_HIGHLIGHT_CLASS` (const)
3011
+
3012
+ ```ts
3013
+ TURN_NAV_HIGHLIGHT_CLASS: "blade-turn-nav-flash"
3014
+ ```
3015
+
3016
+ ## `TurnNavigationOptions` (interface)
3017
+
3018
+ ```ts
3019
+ beforeSeek: ((entryId: string) => void) | undefined
3020
+ cancelPendingLocate: (() => void) | undefined
3021
+ fallbackItems: TurnNavItem[] | undefined
3022
+ getLoadedEntryElement: (entryId: string) => HTMLElement | null
3023
+ isEntryLoaded: ((entryId: string) => boolean) | undefined
3024
+ loadTurnIndex: (() => Promise<SessionTurnIndexItem[]>) | undefined
3025
+ locateEntry: (entryId: string) => Promise<boolean>
3026
+ reloadKey: string | number | null | undefined
3027
+ revealEntry: ((entryId: string) => void) | undefined
3028
+ rewriteKey: string | number | null | undefined
3029
+ sessionId: string | null | undefined
3030
+ ```
3031
+
3032
+ ## `TurnNavigationResult` (interface)
3033
+
3034
+ ```ts
3035
+ activeEntryId: string | null
3036
+ error: string | null
3037
+ failedEntryId: string | null
3038
+ items: TurnNavItem[]
3039
+ loadingEntryId: string | null
3040
+ selectEntry: (entryId: string) => void
3041
+ ```
3042
+
3043
+ ## `TurnNavigationSource` (interface)
3044
+
3045
+ ```ts
3046
+ cancelPendingLocate: (() => void) | undefined
3047
+ fallbackItems: TurnNavItem[] | undefined
3048
+ loadTurnIndex: (() => Promise<SessionTurnIndexItem[]>) | undefined
3049
+ locateEntry: (entryId: string) => Promise<boolean>
3050
+ reloadKey: string | number | null | undefined
3051
+ rewriteKey: string | number | null | undefined
3052
+ ```
3053
+
3054
+ ## `turnNavItemsFromMessages` (function)
3055
+
3056
+ ```ts
3057
+ turnNavItemsFromMessages: (messages: ChatMessage[]) => TurnNavItem[]
3058
+ ```
3059
+
3060
+ ## `TurnNavRail` (function)
3061
+
3062
+ ```ts
3063
+ TurnNavRail: ({ items, activeTurnId, loadingTurnId, error, failedTurnId, onSelectTurn, }: TurnNavRailProps) => JSX.Element | null
3064
+ ```
3065
+
3066
+ ## `TurnNavRailProps` (interface)
3067
+
3068
+ ```ts
3069
+ activeTurnId: string | null
3070
+ error: string | null | undefined
3071
+ failedTurnId: string | null | undefined
3072
+ items: TurnNavItem[]
3073
+ loadingTurnId: string | null | undefined
3074
+ onSelectTurn: (entryId: string) => void
3075
+ ```
3076
+
1607
3077
  ## `TurnProjection` (interface)
1608
3078
 
1609
3079
  ```ts
@@ -1612,13 +3082,26 @@ archived_files: ArchivedFileInfo[] | null | undefined
1612
3082
  archived_tool_calls: ArchivedToolCallInfo[] | null | undefined
1613
3083
  blocks: ContentBlock[]
1614
3084
  client_render_id: string | null | undefined
3085
+ client_request_id: string | null | undefined
1615
3086
  compaction_id: string | null | undefined
3087
+ context_action: ContextAction | null | undefined
3088
+ context_content: unknown
3089
+ context_key: string | null | undefined
3090
+ context_kind: string | null | undefined
3091
+ context_name: string | null | undefined
3092
+ context_order: number | null | undefined
3093
+ context_revision: string | null | undefined
1616
3094
  context_window: number | undefined
1617
- duration_ms: number | undefined
3095
+ display_summary: string | null | undefined
3096
+ display_title: string | null | undefined
3097
+ duration_ms: number | null | undefined
1618
3098
  failure_reason: string | null | undefined
1619
3099
  fallback_applied: boolean | null | undefined
3100
+ first_token_delivery_ms: number | null | undefined
3101
+ first_token_ms: number | null | undefined
3102
+ has_reported_timing: boolean | undefined
1620
3103
  id: string
1621
- kind: "message" | "compaction" | undefined
3104
+ kind: "message" | "context" | "compaction" | undefined
1622
3105
  loop_id: string
1623
3106
  memory_refs: MemoryRef[] | null | undefined
1624
3107
  model: string | null | undefined
@@ -1627,8 +3110,10 @@ post_chat_followup: PostChatFollowup | null | undefined
1627
3110
  role: "user" | "assistant" | "system"
1628
3111
  saved_ratio: number | null | undefined
1629
3112
  sequence: number
3113
+ sources: ContextSourceInfo[] | null | undefined
1630
3114
  started_at: string | null | undefined
1631
3115
  status: "streaming" | "completed" | "paused" | "failed" | "interrupted"
3116
+ stream_duration_ms: number | null | undefined
1632
3117
  summary_full: string | null | undefined
1633
3118
  summary_preview: string | null | undefined
1634
3119
  tokens_after: number | null | undefined
@@ -1675,6 +3160,7 @@ useAgentSession: (sessionId?: string, options?: UseAgentSessionOptions) => UseAg
1675
3160
 
1676
3161
  ```ts
1677
3162
  createOptions: CreateSessionRequest | undefined
3163
+ onSessionConnected: ((session: AgentSession) => () => void) | undefined
1678
3164
  onSessionCreated: ((sessionId: string) => void) | undefined
1679
3165
  ```
1680
3166
 
@@ -1709,6 +3195,30 @@ send: (text: string) => Promise<boolean>
1709
3195
  stop: () => void
1710
3196
  ```
1711
3197
 
3198
+ ## `useMessagePin` (function)
3199
+
3200
+ ```ts
3201
+ useMessagePin: ({ targetKey, pinTarget, isStreaming, layoutKey, getScrollElement, getContentElement, getTargetElement, getTargetScrollTop, getSpacerHeight, setSpacerHeight, stopAutoScroll, scrollToBottom, margin, }: UseMessagePinOptions) => { release: () => void; isActive: () => boolean; }
3202
+ ```
3203
+
3204
+ ## `UseMessagePinOptions` (interface)
3205
+
3206
+ ```ts
3207
+ getContentElement: (() => HTMLElement | null) | undefined
3208
+ getScrollElement: () => HTMLElement | null
3209
+ getSpacerHeight: () => number
3210
+ getTargetElement: () => HTMLElement | null
3211
+ getTargetScrollTop: ((scroll: HTMLElement) => number | null) | undefined
3212
+ isStreaming: boolean | undefined
3213
+ layoutKey: string | undefined
3214
+ margin: number | undefined
3215
+ pinTarget: boolean
3216
+ scrollToBottom: () => void
3217
+ setSpacerHeight: (height: number) => void
3218
+ stopAutoScroll: () => void
3219
+ targetKey: string | null
3220
+ ```
3221
+
1712
3222
  ## `useReplay` (function)
1713
3223
 
1714
3224
  ```ts
@@ -1743,3 +3253,74 @@ token: string
1743
3253
  username: string
1744
3254
  ```
1745
3255
 
3256
+ ## `UserMessageRendererProps` (interface)
3257
+
3258
+ ```ts
3259
+ message: ChatMessage
3260
+ ```
3261
+
3262
+ ## `useSessionPluginActivation` (function)
3263
+
3264
+ ```ts
3265
+ useSessionPluginActivation: ({ client, sessionId, onChange, }: { client: BladeClient; sessionId: string; onChange?: (plugin: SessionPluginActivation) => void; }) => UseSessionPluginActivationResult
3266
+ ```
3267
+
3268
+ ## `UseSessionPluginActivationResult` (interface)
3269
+
3270
+ ```ts
3271
+ busy: boolean
3272
+ configuring: ConfiguringPlugin | null
3273
+ editConfig: (item: PluginConnectorItem) => void
3274
+ inFlight: Record<string, true>
3275
+ items: PluginConnectorItem[]
3276
+ listError: boolean
3277
+ loading: boolean
3278
+ mutationError: boolean
3279
+ onConfigClose: () => void
3280
+ onConfigSaved: (state: SessionPluginConfigState) => void
3281
+ reload: () => void
3282
+ retry: (item: PluginConnectorItem) => void
3283
+ toggle: (item: PluginConnectorItem, next: boolean) => void
3284
+ ```
3285
+
3286
+ ## `useTurnNavigation` (function)
3287
+
3288
+ ```ts
3289
+ useTurnNavigation: ({ sessionId, getLoadedEntryElement, isEntryLoaded, locateEntry, cancelPendingLocate, loadTurnIndex, fallbackItems, revealEntry, beforeSeek, reloadKey, rewriteKey, }: TurnNavigationOptions) => TurnNavigationResult
3290
+ ```
3291
+
3292
+ ## `useTypewriterReveal` (function)
3293
+
3294
+ ```ts
3295
+ useTypewriterReveal: (targetText: string, isLive: boolean, resetKey: string | null) => UseTypewriterRevealResult
3296
+ ```
3297
+
3298
+ ## `UseTypewriterRevealResult` (interface)
3299
+
3300
+ ```ts
3301
+ displayedText: string
3302
+ flushNow: () => void
3303
+ isRevealing: boolean
3304
+ ```
3305
+
3306
+ ## `WhatIfQuote` (interface)
3307
+
3308
+ ```ts
3309
+ label: string
3310
+ snapshot: string
3311
+ stepNumber: number | null
3312
+ ```
3313
+
3314
+ ## `WhatIfUserBubble` (function)
3315
+
3316
+ ```ts
3317
+ WhatIfUserBubble: ({ parsed, onQuoteClick }: WhatIfUserBubbleProps) => JSX.Element
3318
+ ```
3319
+
3320
+ ## `WhatIfUserBubbleProps` (interface)
3321
+
3322
+ ```ts
3323
+ onQuoteClick: ((stepNumber: number) => void) | undefined
3324
+ parsed: ParsedWhatIfPrompt
3325
+ ```
3326
+