@blade-hq/agent-react 2610.0.0-rc.0 → 2610.0.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.
Files changed (65) hide show
  1. package/README.md +264 -7
  2. package/dist/chunk-G3PMV62Z.js +36 -0
  3. package/dist/components/AgentChat.d.ts +3 -0
  4. package/dist/components/AgentLoopBlock.d.ts +3 -2
  5. package/dist/components/AgentTaskCard.d.ts +12 -0
  6. package/dist/components/AskUserQuestionBlock.d.ts +3 -1
  7. package/dist/components/AssistantTurnBlock.d.ts +8 -4
  8. package/dist/components/BackgroundWakeNotice.d.ts +2 -0
  9. package/dist/components/ChatInput.d.ts +20 -3
  10. package/dist/components/ChatSurface.d.ts +129 -3
  11. package/dist/components/ChatView.d.ts +1 -1
  12. package/dist/components/ConnectorPanel.d.ts +41 -0
  13. package/dist/components/MarkdownContent.d.ts +15 -0
  14. package/dist/components/McpAppCard.d.ts +14 -0
  15. package/dist/components/MessageImage.d.ts +9 -0
  16. package/dist/components/MessageList.d.ts +37 -4
  17. package/dist/components/PlanUpdateBlock.d.ts +2 -1
  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/SessionBranchPicker.d.ts +11 -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 +6 -2
  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 +6 -2
  31. package/dist/components/connector-panel-types.d.ts +37 -0
  32. package/dist/components/markdown/heal-incomplete.d.ts +7 -0
  33. package/dist/components/markdown/incremental.d.ts +73 -0
  34. package/dist/components/markdown/index.d.ts +18 -0
  35. package/dist/components/markdown/parse.d.ts +19 -0
  36. package/dist/components/markdown/render.d.ts +79 -0
  37. package/dist/components/markdown/sanitize.d.ts +50 -0
  38. package/dist/components/markdown/types.d.ts +53 -0
  39. package/dist/components/plugin-config-draft.d.ts +13 -0
  40. package/dist/components/plugin-config-schema.d.ts +6 -0
  41. package/dist/components/plugin-connector.d.ts +40 -0
  42. package/dist/components/queue-panel-adjacency.d.ts +1 -0
  43. package/dist/components/use-session-plugin-activation.d.ts +40 -0
  44. package/dist/embed/blade-chat-element.d.ts +4 -3
  45. package/dist/embed/entry.d.ts +38 -0
  46. package/dist/hooks/use-message-pin.d.ts +7 -1
  47. package/dist/hooks/use-turn-navigation.d.ts +117 -0
  48. package/dist/hooks/use-typewriter-reveal.d.ts +32 -0
  49. package/dist/index.d.ts +42 -2
  50. package/dist/index.js +63266 -4907
  51. package/dist/index.js.map +1 -1
  52. package/dist/lib/random-id.d.ts +10 -0
  53. package/dist/lib/utils.d.ts +17 -2
  54. package/dist/style.css +505 -476
  55. package/dist/style.full.css +516 -480
  56. package/dist/webapi-W3IB5DO4.js +2481 -0
  57. package/dist/webapi-W3IB5DO4.js.map +1 -0
  58. package/package.json +2 -2
  59. package/public-api.md +1645 -20
  60. package/dist/chunk-ZXXLY4RM.js +0 -28255
  61. package/dist/chunk-ZXXLY4RM.js.map +0 -1
  62. package/dist/highlighted-body-B3W2YXNL-YD7FAP6V.js +0 -27
  63. package/dist/highlighted-body-B3W2YXNL-YD7FAP6V.js.map +0 -1
  64. package/dist/mermaid-3ZIDBTTL-N7YKJ3SM.js +0 -8
  65. /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
- 共 226 个公开声明。
6
+ 共 380 个公开声明。
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,6 +76,7 @@ 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
  ```
@@ -69,26 +98,48 @@ toolCallId: string
69
98
  ## `AgentSession` (class)
70
99
 
71
100
  ```ts
72
- append: (text: string) => void
73
101
  attach: (label: string, data: unknown) => void
74
102
  attachApp: (options: AttachAppOptions) => Promise<AppCliAttachment | null>
103
+ cancelPendingLocate: () => void
104
+ cancelQueuedMessage: (itemId: string, expectedVersion?: number) => Promise<QueueOperationResult>
75
105
  compact: () => Promise<Record<string, unknown>>
76
106
  countFiles: (dirPath?: string) => Promise<number>
107
+ deliverQueuedMessage: (itemId: string, expectedVersion: number) => Promise<QueueOperationResult>
77
108
  dispose: () => void
78
109
  downloadFile: (filePath: string, downloadName?: string) => Promise<void>
79
110
  exitReplay: () => Promise<void>
80
111
  getState: () => SessionState
112
+ hasOlderHistory: boolean
81
113
  insertText: (text: string) => void
82
114
  isDisposed: boolean
115
+ isStatic: boolean
83
116
  listDir: (dirPath?: string) => Promise<FileEntry[]>
117
+ loadOlderHistory: (options?: { beforeCommit?: () => void; }) => Promise<void>
118
+ loadTurnIndex: () => Promise<SessionTurnIndexItem[]>
119
+ locateEntry: (entryId: string) => Promise<boolean>
84
120
  off: <K extends keyof AgentSessionEvents>(name: K, handler: (event: AgentSessionEvents[K]) => void) => void
85
121
  on: <K extends keyof AgentSessionEvents>(name: K, handler: (event: AgentSessionEvents[K]) => void) => () => void
86
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>
87
127
  send: (content: MessageContent, options?: SendOptions) => Promise<boolean>
88
128
  sessionId: string
89
129
  setReplaySpeed: (speed: ReplaySpeed) => Promise<void>
90
130
  stop: () => Promise<Record<string, unknown>>
91
131
  subscribe: (listener: () => void) => () => void
132
+ updateQueuedMessage: (itemId: string, expectedVersion: number, content: string) => Promise<QueueOperationResult>
133
+ ```
134
+
135
+ ## `AgentSessionError` (class)
136
+
137
+ ```ts
138
+ cause: unknown
139
+ code: string | undefined
140
+ message: string
141
+ name: "AgentSessionError"
142
+ stack: string | undefined
92
143
  ```
93
144
 
94
145
  ## `AgentSessionEventName` (type)
@@ -105,7 +156,7 @@ attachRequested: { label: string; content: string; }
105
156
  backgroundTask: { id: string; command: string; description?: string; status: "starting" | "running" | "cancelling" | "succeeded" | "failed" | "cancelled" | "lost"; failureReason?: string | null; exitCode?: number | null; elapsedSeconds: number; output?: string; }
106
157
  chatEnd: { status: string; }
107
158
  command: { action: string; payload: unknown; toolCallId?: string; }
108
- error: { message: string; }
159
+ error: { message: string; code?: string; }
109
160
  insertTextRequested: { text: string; }
110
161
  message: { message: ChatMessage; turn: TurnProjection; }
111
162
  modeChange: { mode: "planning" | "executing"; }
@@ -113,14 +164,43 @@ notification: { type: string; title: string; detail?: string; status: "info" | "
113
164
  replayMismatch: { actualMessage?: string; expectedMessage?: string; respond: (decision: "keep_replay" | "continue_replay") => void; }
114
165
  rewind: { checkpointId: string; }
115
166
  sandboxOom: { toolCallId: string; }
116
- sessionUpdated: { intent?: string; status?: SessionStatus; model?: string | null; boundSkillId?: string | null; replayState?: Record<string, unknown> | null; }
167
+ sessionUpdated: { workspacePath?: string; chatGroupId?: string | null; intent?: string; status?: SessionStatus; model?: string | null; boundSkillId?: string | null; replayState?: Record<string, unknown> | null; }
117
168
  taskListUpdated: { tasks: unknown[]; }
118
169
  toolCall: { toolCall: ToolCallInfo; turn: TurnProjection; }
119
- toolPreview: { toolCallId: string; type: "resource-html" | "resource-uri"; content: string; title: string; }
170
+ toolPreview: { sourcePath?: string; toolCallId: string; type: "resource-html" | "resource-uri" | "resource-file"; content: string; title: string; mcpApp?: McpAppData; }
120
171
  toolResult: { toolCall: ToolCallInfo; turn: TurnProjection; source: "live" | "bootstrap_replay" | "reconnect_replay"; }
121
172
  workspaceChanged: { filePath?: string; }
122
173
  ```
123
174
 
175
+ ## `AgentTaskCard` (function)
176
+
177
+ ```ts
178
+ AgentTaskCard: ({ title, status, activity, children, className, recordId }: AgentTaskCardProps) => JSX.Element
179
+ ```
180
+
181
+ ## `AgentTaskCardProps` (interface)
182
+
183
+ ```ts
184
+ activity: string | undefined
185
+ children: ReactNode
186
+ className: string | undefined
187
+ recordId: string | undefined
188
+ status: AgentTaskStatus
189
+ title: string
190
+ ```
191
+
192
+ ## `AgentTaskStatus` (type)
193
+
194
+ ```ts
195
+ export type AgentTaskStatus = "running" | "waiting_input" | "completed" | "failed" | "cancelled"
196
+ ```
197
+
198
+ ## `AllowedTags` (type)
199
+
200
+ ```ts
201
+ export type AllowedTags = Record<string, string[]>
202
+ ```
203
+
124
204
  ## `AppCliAttachment` (interface)
125
205
 
126
206
  ```ts
@@ -165,6 +245,24 @@ note: string | undefined
165
245
  selections: Record<number, number[]>
166
246
  ```
167
247
 
248
+ ## `AskUserQuestionData` (interface)
249
+
250
+ ```ts
251
+ questions: QuestionItem[]
252
+ source_loop: SourceLoopInfo | null | undefined
253
+ ```
254
+
255
+ ## `AskUserQuestionRendererProps` (interface)
256
+
257
+ ```ts
258
+ answerData: AskUserAnswerData | undefined
259
+ answered: boolean
260
+ data: AskUserQuestionData
261
+ onAnswer: ((answer: string, toolCallId: string, answerData: AskUserAnswerData) => void) | undefined
262
+ sessionStatus: string
263
+ toolCallId: string
264
+ ```
265
+
168
266
  ## `AsrAudioPayload` (type)
169
267
 
170
268
  ```ts
@@ -174,6 +272,15 @@ export type AsrAudioPayload =
174
272
  | { pcm: ArrayBuffer | Uint8Array; request_id?: string }
175
273
  ```
176
274
 
275
+ ## `AssistantTextRendererProps` (interface)
276
+
277
+ ```ts
278
+ compact: boolean
279
+ message: ChatMessage
280
+ sessionId: string | undefined
281
+ streaming: boolean
282
+ ```
283
+
177
284
  ## `AttachAppOptions` (interface)
178
285
 
179
286
  ```ts
@@ -181,6 +288,20 @@ cli: AppCliDefinition | undefined
181
288
  getContext: () => Record<string, unknown> | Promise<Record<string, unknown>>
182
289
  ```
183
290
 
291
+ ## `AuthBusyReconnect` (class)
292
+
293
+ ```ts
294
+ cancel: () => void
295
+ pending: boolean
296
+ schedule: (error: unknown, reconnect: () => void) => boolean
297
+ ```
298
+
299
+ ## `authBusyRetryDelayMs` (function)
300
+
301
+ ```ts
302
+ authBusyRetryDelayMs: (error: unknown) => number | null
303
+ ```
304
+
184
305
  ## `AuthResource` (class)
185
306
 
186
307
  ```ts
@@ -219,6 +340,12 @@ reason: string | null | undefined
219
340
  task: BackgroundTask | null | undefined
220
341
  ```
221
342
 
343
+ ## `BackgroundWakeNotice` (function)
344
+
345
+ ```ts
346
+ BackgroundWakeNotice: () => JSX.Element
347
+ ```
348
+
222
349
  ## `BizRole` (interface)
223
350
 
224
351
  ```ts
@@ -246,6 +373,7 @@ statusText: string
246
373
  auth: AuthResource
247
374
  blob: (method: HttpMethod, path: string) => Promise<Blob>
248
375
  buildAuthedUrl: (path: string) => string
376
+ chatGroups: ChatGroupsResource
249
377
  computers: ComputersResource
250
378
  fetch: (method: HttpMethod, path: string, init?: BladeFetchInit, isRetry?: boolean) => Promise<Response>
251
379
  formData: (method: HttpMethod, path: string, form: FormData, options?: { expectOk?: boolean; onUploadProgress?: (progress: UploadProgress) => void; }) => Promise<Response>
@@ -259,10 +387,13 @@ logoutToken: () => void
259
387
  models: ModelsResource
260
388
  onSocketReplaced: (listener: () => void) => () => void
261
389
  options: BladeClientOptions
390
+ plugins: PluginsResource
391
+ requestCommand: (event: string, payload: Record<string, unknown>, timeoutMs: number) => Promise<Record<string, unknown>>
262
392
  responseFromInit: (path: string, init?: RequestInit) => Promise<Response>
263
393
  sessions: SessionsResource
264
394
  setBaseUrl: (baseUrl: string) => void
265
395
  setToken: (token: string | null) => void
396
+ siteVisits: SiteVisitsResource
266
397
  socket: () => TypedSocket
267
398
  text: (method: HttpMethod, path: string) => Promise<string>
268
399
  textFromInit: (path: string, init?: RequestInit) => Promise<string>
@@ -273,6 +404,7 @@ token: string | null
273
404
 
274
405
  ```ts
275
406
  baseUrl: string
407
+ commandTransport: ((event: string, payload: Record<string, unknown>, send: () => Promise<Record<string, unknown>>) => Promise<Record<string, unknown>>) | undefined
276
408
  fetchImpl: { (input: RequestInfo | URL, init?: RequestInit): Promise<Response>; (input: string | URL | Request, init?: RequestInit): Promise<Response>; } | undefined
277
409
  onRefreshSuccess: (() => void | Promise<void>) | undefined
278
410
  socketToken: string | (() => string | null | undefined) | undefined
@@ -299,12 +431,42 @@ client: BladeClient
299
431
  buildMessageContent: (text: string, attachments: Array<{ kind: "file"; name: string; uploadedPath?: string; textContent?: string | null; mimeType?: string; }>) => MessageContent
300
432
  ```
301
433
 
434
+ ## `buildToolUiCardKey` (function)
435
+
436
+ ```ts
437
+ buildToolUiCardKey: (toolCallId: string, type: ToolUiCardContentType, content: string, sourcePath?: string) => string
438
+ ```
439
+
440
+ ## `canCancelQueuedMessage` (function)
441
+
442
+ ```ts
443
+ canCancelQueuedMessage: (item: QueuedMessage) => boolean
444
+ ```
445
+
446
+ ## `canDeliverQueuedMessage` (function)
447
+
448
+ ```ts
449
+ canDeliverQueuedMessage: (item: QueuedMessage) => boolean
450
+ ```
451
+
452
+ ## `canEditQueuedMessage` (function)
453
+
454
+ ```ts
455
+ canEditQueuedMessage: (item: QueuedMessage) => boolean
456
+ ```
457
+
302
458
  ## `canToggleComputer` (function)
303
459
 
304
460
  ```ts
305
461
  canToggleComputer: (computer: SessionComputer) => boolean
306
462
  ```
307
463
 
464
+ ## `catalogToConnectorItems` (function)
465
+
466
+ ```ts
467
+ catalogToConnectorItems: (catalog: PluginCatalogEntry[]) => PluginConnectorItem[]
468
+ ```
469
+
308
470
  ## `ChatCompletionTool` (interface)
309
471
 
310
472
  ```ts
@@ -312,12 +474,41 @@ function: { name: string; description?: string; parameters?: Record<string, unkn
312
474
  type: "function"
313
475
  ```
314
476
 
477
+ ## `ChatEnd` (interface)
478
+
479
+ ```ts
480
+ duration_ms: number
481
+ status: string
482
+ ```
483
+
315
484
  ## `chatErrorForDisplay` (function)
316
485
 
317
486
  ```ts
318
487
  chatErrorForDisplay: (message: string, developer?: boolean) => string
319
488
  ```
320
489
 
490
+ ## `ChatGroup` (interface)
491
+
492
+ ```ts
493
+ created_at: string
494
+ id: string
495
+ initiator: "ui" | "sdk" | null
496
+ instructions: string
497
+ name: string
498
+ session_count: number
499
+ updated_at: string
500
+ workspace_path: string
501
+ ```
502
+
503
+ ## `ChatGroupsResource` (class)
504
+
505
+ ```ts
506
+ create: (payload: { name: string; instructions?: string; initiator?: "ui" | "sdk"; }) => Promise<ChatGroup>
507
+ delete: (groupId: string, options?: { deleteWorkspace?: boolean; }) => Promise<{ deleted: boolean; deleted_sessions: number; }>
508
+ list: () => Promise<ChatGroup[]>
509
+ update: (groupId: string, payload: { name?: string; instructions?: string; }) => Promise<ChatGroup>
510
+ ```
511
+
321
512
  ## `ChatMessage` (interface)
322
513
 
323
514
  ```ts
@@ -348,10 +539,34 @@ ChatView: (props: ChatViewProps) => JSX.Element
348
539
  ## `ChatViewClassNames` (interface)
349
540
 
350
541
  ```ts
542
+ agentLoop: string | undefined
543
+ askCard: string | undefined
544
+ askOption: string | undefined
545
+ assistantText: string | undefined
546
+ assistantTurn: string | undefined
351
547
  banner: string | undefined
352
548
  chatInput: string | undefined
549
+ empty: string | undefined
550
+ errorBar: string | undefined
551
+ errorMessage: string | undefined
552
+ fileCard: string | undefined
553
+ followup: string | undefined
554
+ followupAction: string | undefined
555
+ inputInner: string | undefined
556
+ inputToolbar: string | undefined
557
+ memoryRefs: string | undefined
353
558
  messageList: string | undefined
559
+ messagesContent: string | undefined
560
+ messagesScroll: string | undefined
561
+ planPanel: string | undefined
562
+ queuePanel: string | undefined
354
563
  root: string | undefined
564
+ scrollToBottom: string | undefined
565
+ textarea: string | undefined
566
+ thinking: string | undefined
567
+ toolRow: string | undefined
568
+ userBubble: string | undefined
569
+ userMessage: string | undefined
355
570
  ```
356
571
 
357
572
  ## `ChatViewProps` (interface)
@@ -369,6 +584,7 @@ onSessionReady: ((session: AgentSession) => void) | undefined
369
584
  placeholder: string | undefined
370
585
  renderers: ChatViewRenderers | undefined
371
586
  sessionId: string | undefined
587
+ sessionPluginControls: ((sessionId: string) => ReactNode) | undefined
372
588
  slots: ChatViewSlots | undefined
373
589
  theme: "light" | "dark" | undefined
374
590
  ```
@@ -376,7 +592,11 @@ theme: "light" | "dark" | undefined
376
592
  ## `ChatViewRenderers` (interface)
377
593
 
378
594
  ```ts
595
+ askUserQuestion: ((props: AskUserQuestionRendererProps) => ReactNode | null) | undefined
596
+ assistantText: ((props: AssistantTextRendererProps) => ReactNode | null) | undefined
597
+ planUpdate: ((props: PlanUpdateRendererProps) => ReactNode | null) | undefined
379
598
  toolCall: ToolCallRenderer | undefined
599
+ userMessage: ((props: UserMessageRendererProps) => ReactNode | null) | undefined
380
600
  ```
381
601
 
382
602
  ## `ChatViewSlots` (interface)
@@ -402,12 +622,30 @@ reset: () => void
402
622
  seedSequence: (maxSeq: number) => void
403
623
  ```
404
624
 
625
+ ## `CodeBlockOverrides` (type)
626
+
627
+ ```ts
628
+ export type CodeBlockOverrides = Record<string, ComponentType<{ code: string }>>
629
+ ```
630
+
631
+ ## `collectInlineToolUiCards` (function)
632
+
633
+ ```ts
634
+ collectInlineToolUiCards: (messages: ChatMessage[]) => InlineToolUiCardEntry[]
635
+ ```
636
+
405
637
  ## `collectMemoryRefs` (function)
406
638
 
407
639
  ```ts
408
640
  collectMemoryRefs: (messages: ChatMessage[]) => MemoryRefInfo[]
409
641
  ```
410
642
 
643
+ ## `collectPreviewToolUiCards` (function)
644
+
645
+ ```ts
646
+ collectPreviewToolUiCards: (messages: ChatMessage[]) => PreviewToolUiCardEntry[]
647
+ ```
648
+
411
649
  ## `CommandEnvelope` (interface)
412
650
 
413
651
  ```ts
@@ -440,10 +678,35 @@ tokens_before: number | null | undefined
440
678
  trigger: "auto" | "manual" | "forced_retry" | null | undefined
441
679
  ```
442
680
 
681
+ ## `computerDaemonVersion` (function)
682
+
683
+ ```ts
684
+ computerDaemonVersion: (computer: SessionComputer) => string
685
+ ```
686
+
687
+ ## `computerOS` (function)
688
+
689
+ ```ts
690
+ computerOS: (computer: SessionComputer) => ComputerOS
691
+ ```
692
+
693
+ ## `ComputerOS` (type)
694
+
695
+ ```ts
696
+ export type ComputerOS = "macos" | "windows" | "linux" | "unknown"
697
+ ```
698
+
699
+ ## `computerPlatformLabel` (function)
700
+
701
+ ```ts
702
+ computerPlatformLabel: (computer: SessionComputer) => string
703
+ ```
704
+
443
705
  ## `ComputersResource` (class)
444
706
 
445
707
  ```ts
446
708
  list: (sessionId: string) => Promise<SessionComputerList>
709
+ listAccount: () => Promise<AccountComputerList>
447
710
  setEnabled: (sessionId: string, computer: string, enabled: boolean) => Promise<SessionComputer>
448
711
  ```
449
712
 
@@ -459,6 +722,13 @@ computerState: (computer: SessionComputer) => ComputerState
459
722
  export type ComputerState = "primary" | "enabled" | "offline" | "idle"
460
723
  ```
461
724
 
725
+ ## `ConfiguringPlugin` (interface)
726
+
727
+ ```ts
728
+ name: string
729
+ pendingActivation: boolean
730
+ ```
731
+
462
732
  ## `connectEmbedded` (function)
463
733
 
464
734
  ```ts
@@ -471,16 +741,46 @@ connectEmbedded: (options: EmbeddedChatOptions) => EmbeddedChat
471
741
  export type ConnectionStatus = "connecting" | "connected" | "reconnecting" | "disconnected"
472
742
  ```
473
743
 
744
+ ## `ConnectorPanel` (function)
745
+
746
+ ```ts
747
+ ConnectorPanel: ({ client, sessionId, pendingPlugins, onPendingPluginsChange, pendingDisabledReason, onPluginsChanged, onSelectedChange, renderComputerSection, renderExternalAccounts, renderFooterActions, className, }: ConnectorPanelProps) => JSX.Element
748
+ ```
749
+
750
+ ## `ConnectorPanelProps` (interface)
751
+
752
+ ```ts
753
+ className: string | undefined
754
+ client: BladeClient
755
+ onPendingPluginsChange: ((next: PluginConnectorSelection[]) => void) | undefined
756
+ onPluginsChanged: ((plugin: SessionPluginActivation) => void) | undefined
757
+ onSelectedChange: ((items: PluginConnectorItem[]) => void) | undefined
758
+ pendingDisabledReason: string | null | undefined
759
+ pendingPlugins: PluginConnectorSelection[] | undefined
760
+ renderComputerSection: ((query: string) => ReactNode) | undefined
761
+ renderExternalAccounts: ((query: string) => ReactNode) | undefined
762
+ renderFooterActions: (() => ReactNode) | undefined
763
+ sessionId: string | null
764
+ ```
765
+
474
766
  ## `ContentBlock` (interface)
475
767
 
476
768
  ```ts
477
769
  content: unknown
770
+ delivery_id: string | null | undefined
478
771
  display_name: string | null | undefined
479
772
  tool_call_id: string | null | undefined
480
773
  tool_name: string | null | undefined
481
774
  type: "text" | "thinking" | "tool_use" | "tool_result" | "tool_ui" | "tool_bridge" | "system_notification" | "mode_change" | "plan_status" | "ask_user_answer"
482
775
  ```
483
776
 
777
+ ## `ContentDelta` (interface)
778
+
779
+ ```ts
780
+ content: string
781
+ loop_name: string | undefined
782
+ ```
783
+
484
784
  ## `contentPreview` (function)
485
785
 
486
786
  ```ts
@@ -587,6 +887,7 @@ createInitialSessionState: (sessionId: string) => SessionState
587
887
  ```ts
588
888
  agent_runtime_id: string | null | undefined
589
889
  biz_role_id: string | null | undefined
890
+ chat_group_id: string | null | undefined
590
891
  compaction_ratio: number | null | undefined
591
892
  daemon_id: string | null | undefined
592
893
  disable_tools: string[] | null | undefined
@@ -616,6 +917,7 @@ createSocket: (options: CreateSocketOptions) => TypedSocket
616
917
  baseUrl: string
617
918
  path: string | undefined
618
919
  token: string | (() => string | null | undefined) | undefined
920
+ transports: ("polling" | "websocket")[] | undefined
619
921
  ```
620
922
 
621
923
  ## `CurrentPlanPanel` (function)
@@ -624,6 +926,12 @@ token: string | (() => string | null | undefined) | undefined
624
926
  CurrentPlanPanel: ({ messages, running, revealRevision, sessionId, className, }: { messages: ChatMessage[]; running?: boolean; revealRevision?: number; sessionId?: string; className?: string; }) => JSX.Element | null
625
927
  ```
626
928
 
929
+ ## `DEFAULT_ALLOWED_TAGS` (const)
930
+
931
+ ```ts
932
+ DEFAULT_ALLOWED_TAGS: AllowedTags
933
+ ```
934
+
627
935
  ## `DEFAULT_REPLAY_SPEED` (const)
628
936
 
629
937
  ```ts
@@ -653,6 +961,12 @@ iframe: HTMLIFrameElement | undefined
653
961
  EMPTY_PLATFORM_ENDPOINTS: PlatformEndpoints
654
962
  ```
655
963
 
964
+ ## `EMPTY_SESSION_QUEUE` (const)
965
+
966
+ ```ts
967
+ EMPTY_SESSION_QUEUE: SessionQueueSnapshot
968
+ ```
969
+
656
970
  ## `ExchangeCodeParams` (interface)
657
971
 
658
972
  ```ts
@@ -677,6 +991,12 @@ kind: "existing"
677
991
  solutionId: string
678
992
  ```
679
993
 
994
+ ## `ExternalAnchor` (function)
995
+
996
+ ```ts
997
+ ExternalAnchor: ({ children, href, ...props }: AnchorProps) => JSX.Element
998
+ ```
999
+
680
1000
  ## `extractTextAttachments` (function)
681
1001
 
682
1002
  ```ts
@@ -701,6 +1021,12 @@ path: string
701
1021
  tags: string[] | undefined
702
1022
  ```
703
1023
 
1024
+ ## `filterConnectorItems` (function)
1025
+
1026
+ ```ts
1027
+ filterConnectorItems: (items: PluginConnectorItem[], query: string) => PluginConnectorItem[]
1028
+ ```
1029
+
704
1030
  ## `FinalArtifact` (interface)
705
1031
 
706
1032
  ```ts
@@ -838,6 +1164,12 @@ groupAdjacentContextRuns: (kinds: readonly (string | null)[]) => readonly (reado
838
1164
  groupMessagesByLoop: (messages: ChatMessage[]) => MessageGroup[]
839
1165
  ```
840
1166
 
1167
+ ## `hasChatRunEvent` (function)
1168
+
1169
+ ```ts
1170
+ hasChatRunEvent: (events: RawEvent[]) => boolean
1171
+ ```
1172
+
841
1173
  ## `HeadlessResource` (class)
842
1174
 
843
1175
  ```ts
@@ -846,10 +1178,19 @@ runInSession: { <T = unknown>(sessionId: string, prompt: string, options: Headle
846
1178
  runWithSession: { <T = unknown>(prompt: string, options: HeadlessRunOptions & { schema: JsonSchemaObject; }): Promise<HeadlessRunInSessionResult<T>>; (prompt: string, options?: HeadlessRunOptions): Promise<HeadlessRunInSessionResult<string>>; }
847
1179
  ```
848
1180
 
1181
+ ## `HistoricalCommand` (interface)
1182
+
1183
+ ```ts
1184
+ action: string
1185
+ deliveryId: string
1186
+ payload: unknown
1187
+ toolCallId: string | undefined
1188
+ ```
1189
+
849
1190
  ## `ImageUrlContentPart` (interface)
850
1191
 
851
1192
  ```ts
852
- image_url: { url: string; }
1193
+ image_url: { url: string; source_path?: string; width?: number; height?: number; }
853
1194
  type: "image_url"
854
1195
  ```
855
1196
 
@@ -874,6 +1215,20 @@ direction: "host-to-agent"
874
1215
  payload: unknown
875
1216
  ```
876
1217
 
1218
+ ## `inferToolStatus` (function)
1219
+
1220
+ ```ts
1221
+ inferToolStatus: (resultStr: string) => "done" | "error" | "cancelled"
1222
+ ```
1223
+
1224
+ ## `InlineToolUiCardEntry` (interface)
1225
+
1226
+ ```ts
1227
+ card: ToolUiCard
1228
+ key: string
1229
+ toolCallId: string
1230
+ ```
1231
+
877
1232
  ## `isAgentComputerCommand` (function)
878
1233
 
879
1234
  ```ts
@@ -886,12 +1241,30 @@ isAgentComputerCommand: (command: string) => boolean
886
1241
  isAgentComputerToolCall: (argumentsJson: string | null | undefined) => boolean
887
1242
  ```
888
1243
 
1244
+ ## `isAppDevToolUiCard` (function)
1245
+
1246
+ ```ts
1247
+ isAppDevToolUiCard: (card: ToolUiCard, isAppDev: boolean) => boolean
1248
+ ```
1249
+
1250
+ ## `isBackgroundWakeMessage` (function)
1251
+
1252
+ ```ts
1253
+ isBackgroundWakeMessage: (message: Pick<ChatMessage, "blocks">) => boolean
1254
+ ```
1255
+
889
1256
  ## `isCommandEnvelope` (function)
890
1257
 
891
1258
  ```ts
892
1259
  isCommandEnvelope: (value: unknown) => value is CommandEnvelope
893
1260
  ```
894
1261
 
1262
+ ## `isEntryGoneError` (function)
1263
+
1264
+ ```ts
1265
+ isEntryGoneError: (error: unknown) => boolean
1266
+ ```
1267
+
895
1268
  ## `isHiddenInternalMessage` (function)
896
1269
 
897
1270
  ```ts
@@ -904,18 +1277,54 @@ isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">, option
904
1277
  isInboundEnvelope: (value: unknown) => value is InboundEnvelope
905
1278
  ```
906
1279
 
1280
+ ## `isInternalStatusToolUiCard` (function)
1281
+
1282
+ ```ts
1283
+ isInternalStatusToolUiCard: (card: { title?: string | null; } | null) => boolean
1284
+ ```
1285
+
1286
+ ## `isMcpAppData` (function)
1287
+
1288
+ ```ts
1289
+ isMcpAppData: (value: unknown) => value is McpAppData
1290
+ ```
1291
+
907
1292
  ## `isPlanUpdateTool` (function)
908
1293
 
909
1294
  ```ts
910
1295
  isPlanUpdateTool: (toolCall: Pick<ToolCallInfo, "name">) => boolean
911
1296
  ```
912
1297
 
1298
+ ## `isQueuePanelVisible` (function)
1299
+
1300
+ ```ts
1301
+ isQueuePanelVisible: (snapshot: Pick<SessionQueueSnapshot, "items" | "paused">, notice: string | null | undefined, editing?: boolean) => boolean
1302
+ ```
1303
+
1304
+ ## `isSessionQueueSnapshot` (function)
1305
+
1306
+ ```ts
1307
+ isSessionQueueSnapshot: (value: unknown) => value is SessionQueueSnapshot
1308
+ ```
1309
+
1310
+ ## `isToolUiCard` (function)
1311
+
1312
+ ```ts
1313
+ isToolUiCard: (value: unknown) => value is ToolUiCard
1314
+ ```
1315
+
913
1316
  ## `latestPostChatFollowup` (function)
914
1317
 
915
1318
  ```ts
916
1319
  latestPostChatFollowup: (turns: TurnProjection[]) => PostChatFollowup | null
917
1320
  ```
918
1321
 
1322
+ ## `latestUserSpeechEntryId` (function)
1323
+
1324
+ ```ts
1325
+ latestUserSpeechEntryId: (turns: TurnProjection[]) => string | null
1326
+ ```
1327
+
919
1328
  ## `LayoutType` (enum)
920
1329
 
921
1330
  ```ts
@@ -932,6 +1341,21 @@ export enum LayoutType {
932
1341
  }
933
1342
  ```
934
1343
 
1344
+ ## `LinkSafetyConfig` (interface)
1345
+
1346
+ ```ts
1347
+ enabled: boolean
1348
+ onLinkCheck: ((url: string) => Promise<boolean> | boolean) | undefined
1349
+ renderModal: ((props: { isOpen: boolean; onClose: () => void; onConfirm: () => void; url: string; }) => ReactNode) | undefined
1350
+ ```
1351
+
1352
+ ## `LiveRevisionState` (interface)
1353
+
1354
+ ```ts
1355
+ byTurnId: ReadonlyMap<string, number>
1356
+ current: number
1357
+ ```
1358
+
935
1359
  ## `LlmAdvancedSettings` (interface)
936
1360
 
937
1361
  ```ts
@@ -1006,6 +1430,16 @@ baseURL: string | undefined
1006
1430
  model: string | undefined
1007
1431
  ```
1008
1432
 
1433
+ ## `LlmResponseDone` (interface)
1434
+
1435
+ ```ts
1436
+ content: string | null | undefined
1437
+ loop_name: string | undefined
1438
+ reasoning: string | null | undefined
1439
+ role: string
1440
+ tool_calls: { id: string; function: { name: string; arguments: string; }; }[] | undefined
1441
+ ```
1442
+
1009
1443
  ## `LlmToolCall` (interface)
1010
1444
 
1011
1445
  ```ts
@@ -1043,6 +1477,16 @@ token: string
1043
1477
  user: { id?: string; username?: string; display_name?: string; } | undefined
1044
1478
  ```
1045
1479
 
1480
+ ## `MarkdownComponents` (type)
1481
+
1482
+ ```ts
1483
+ export type MarkdownComponents = {
1484
+ [Key in keyof JSX.IntrinsicElements]?: ComponentType<JSX.IntrinsicElements[Key]>
1485
+ } & {
1486
+ [tagName: string]: ComponentType<Record<string, unknown>> | undefined
1487
+ }
1488
+ ```
1489
+
1046
1490
  ## `MarkdownContent` (function)
1047
1491
 
1048
1492
  ```ts
@@ -1058,18 +1502,96 @@ mode: "streaming" | "static" | undefined
1058
1502
  sessionId: string | undefined
1059
1503
  ```
1060
1504
 
1061
- ## `MemoryRef` (interface)
1505
+ ## `MarkdownRenderer` (function)
1062
1506
 
1063
1507
  ```ts
1064
- content_preview: string
1065
- id: number
1066
- skill_name: string | null | undefined
1508
+ MarkdownRenderer: ({ children, className, mode, allowedTags, components, rawHtmlPlugins, codeBlockOverrides, }: MarkdownRendererProps) => DetailedReactHTMLElement<{ className: string; }, HTMLElement>
1067
1509
  ```
1068
1510
 
1069
- ## `MemoryRefInfo` (interface)
1511
+ ## `MarkdownRendererProps` (interface)
1070
1512
 
1071
1513
  ```ts
1072
- content_preview: string
1514
+ allowedTags: AllowedTags | undefined
1515
+ children: string
1516
+ className: string | undefined
1517
+ codeBlockOverrides: CodeBlockOverrides | undefined
1518
+ components: MarkdownComponents | undefined
1519
+ linkSafety: LinkSafetyConfig | undefined
1520
+ mode: "streaming" | "static" | undefined
1521
+ rawHtmlPlugins: RawHtmlPlugin[] | undefined
1522
+ sessionId: string | undefined
1523
+ ```
1524
+
1525
+ ## `McpAppArchive` (interface)
1526
+
1527
+ ```ts
1528
+ html: string
1529
+ mimeType: string
1530
+ plugin: string
1531
+ previousToolInput: Record<string, unknown> | undefined
1532
+ previousToolResult: Record<string, unknown> | undefined
1533
+ resourceMeta: Record<string, unknown>
1534
+ resourceUri: string
1535
+ sourceId: string
1536
+ toolInput: Record<string, unknown>
1537
+ toolResult: Record<string, unknown>
1538
+ ```
1539
+
1540
+ ## `McpAppCard` (function)
1541
+
1542
+ ```ts
1543
+ McpAppCard: ({ sessionId, sourceId, client: suppliedClient, onMessage: suppliedOnMessage }: { sessionId: string; sourceId: string; client?: BladeClient; onMessage?: (message: McpAppMessage) => void; }) => JSX.Element
1544
+ ```
1545
+
1546
+ ## `McpAppContextState` (interface)
1547
+
1548
+ ```ts
1549
+ content: string
1550
+ plugin: string | null
1551
+ revision: string
1552
+ server_alias: string | null
1553
+ ```
1554
+
1555
+ ## `McpAppContextUpdate` (interface)
1556
+
1557
+ ```ts
1558
+ content: string
1559
+ expected_revision: string | null
1560
+ request_id: string
1561
+ ```
1562
+
1563
+ ## `McpAppData` (interface)
1564
+
1565
+ ```ts
1566
+ mimeType: string
1567
+ resourceMeta: Record<string, unknown>
1568
+ resourceUri: string
1569
+ sourceId: string
1570
+ toolInput: Record<string, unknown>
1571
+ toolResult: Record<string, unknown>
1572
+ ```
1573
+
1574
+ ## `McpAppMessage` (interface)
1575
+
1576
+ ```ts
1577
+ content: string
1578
+ label: string
1579
+ sessionId: string
1580
+ sourceId: string
1581
+ ```
1582
+
1583
+ ## `MemoryRef` (interface)
1584
+
1585
+ ```ts
1586
+ content_preview: string
1587
+ id: number
1588
+ skill_name: string | null | undefined
1589
+ ```
1590
+
1591
+ ## `MemoryRefInfo` (interface)
1592
+
1593
+ ```ts
1594
+ content_preview: string
1073
1595
  id: number
1074
1596
  skill_name: string | null | undefined
1075
1597
  ```
@@ -1077,7 +1599,13 @@ skill_name: string | null | undefined
1077
1599
  ## `MemoryRefsHint` (function)
1078
1600
 
1079
1601
  ```ts
1080
- MemoryRefsHint: ({ refs }: { refs: MemoryRefInfo[]; }) => JSX.Element
1602
+ MemoryRefsHint: ({ refs, className }: { refs: MemoryRefInfo[]; className?: string; }) => JSX.Element
1603
+ ```
1604
+
1605
+ ## `mergeConnectorItems` (function)
1606
+
1607
+ ```ts
1608
+ mergeConnectorItems: (sessionPlugins: SessionPlugin[], catalog: PluginCatalogEntry[] | null) => PluginConnectorItem[]
1081
1609
  ```
1082
1610
 
1083
1611
  ## `MessageContent` (type)
@@ -1092,6 +1620,309 @@ export type MessageContent = string | MessageContentPart[]
1092
1620
  export type MessageContentPart = TextContentPart | ImageUrlContentPart | FileContentPart
1093
1621
  ```
1094
1622
 
1623
+ ## `MessageImage` (const)
1624
+
1625
+ ```ts
1626
+ MessageImage: ForwardRefExoticComponent<MessageImageProps & RefAttributes<HTMLImageElement>>
1627
+ ```
1628
+
1629
+ ## `MessageImageProps` (interface)
1630
+
1631
+ ```ts
1632
+ about: string | undefined
1633
+ accessKey: string | undefined
1634
+ alt: string | undefined
1635
+ aria-activedescendant: string | undefined
1636
+ aria-atomic: (boolean | "false" | "true") | undefined
1637
+ aria-autocomplete: "none" | "inline" | "list" | "both" | undefined
1638
+ aria-braillelabel: string | undefined
1639
+ aria-brailleroledescription: string | undefined
1640
+ aria-busy: (boolean | "false" | "true") | undefined
1641
+ aria-checked: boolean | "false" | "true" | "mixed" | undefined
1642
+ aria-colcount: number | undefined
1643
+ aria-colindex: number | undefined
1644
+ aria-colindextext: string | undefined
1645
+ aria-colspan: number | undefined
1646
+ aria-controls: string | undefined
1647
+ aria-current: boolean | "false" | "true" | "location" | "time" | "date" | "page" | "step" | undefined
1648
+ aria-describedby: string | undefined
1649
+ aria-description: string | undefined
1650
+ aria-details: string | undefined
1651
+ aria-disabled: (boolean | "false" | "true") | undefined
1652
+ aria-dropeffect: "link" | "none" | "copy" | "execute" | "move" | "popup" | undefined
1653
+ aria-errormessage: string | undefined
1654
+ aria-expanded: (boolean | "false" | "true") | undefined
1655
+ aria-flowto: string | undefined
1656
+ aria-grabbed: (boolean | "false" | "true") | undefined
1657
+ aria-haspopup: boolean | "false" | "true" | "dialog" | "menu" | "listbox" | "tree" | "grid" | undefined
1658
+ aria-hidden: (boolean | "false" | "true") | undefined
1659
+ aria-invalid: boolean | "false" | "true" | "grammar" | "spelling" | undefined
1660
+ aria-keyshortcuts: string | undefined
1661
+ aria-label: string | undefined
1662
+ aria-labelledby: string | undefined
1663
+ aria-level: number | undefined
1664
+ aria-live: "off" | "assertive" | "polite" | undefined
1665
+ aria-modal: (boolean | "false" | "true") | undefined
1666
+ aria-multiline: (boolean | "false" | "true") | undefined
1667
+ aria-multiselectable: (boolean | "false" | "true") | undefined
1668
+ aria-orientation: "horizontal" | "vertical" | undefined
1669
+ aria-owns: string | undefined
1670
+ aria-placeholder: string | undefined
1671
+ aria-posinset: number | undefined
1672
+ aria-pressed: boolean | "false" | "true" | "mixed" | undefined
1673
+ aria-readonly: (boolean | "false" | "true") | undefined
1674
+ aria-relevant: "text" | "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined
1675
+ aria-required: (boolean | "false" | "true") | undefined
1676
+ aria-roledescription: string | undefined
1677
+ aria-rowcount: number | undefined
1678
+ aria-rowindex: number | undefined
1679
+ aria-rowindextext: string | undefined
1680
+ aria-rowspan: number | undefined
1681
+ aria-selected: (boolean | "false" | "true") | undefined
1682
+ aria-setsize: number | undefined
1683
+ aria-sort: "none" | "ascending" | "descending" | "other" | undefined
1684
+ aria-valuemax: number | undefined
1685
+ aria-valuemin: number | undefined
1686
+ aria-valuenow: number | undefined
1687
+ aria-valuetext: string | undefined
1688
+ autoCapitalize: (string & {}) | "none" | "off" | "on" | "sentences" | "words" | "characters" | undefined
1689
+ autoCorrect: string | undefined
1690
+ autoFocus: boolean | undefined
1691
+ autoSave: string | undefined
1692
+ children: ReactNode
1693
+ className: string | undefined
1694
+ client: BladeClient | null | undefined
1695
+ color: string | undefined
1696
+ content: string | undefined
1697
+ contentEditable: (boolean | "false" | "true") | "inherit" | "plaintext-only" | undefined
1698
+ contextMenu: string | undefined
1699
+ crossOrigin: "" | "anonymous" | "use-credentials" | undefined
1700
+ dangerouslySetInnerHTML: { __html: string | TrustedHTML; } | undefined
1701
+ datatype: string | undefined
1702
+ decoding: "auto" | "async" | "sync" | undefined
1703
+ defaultChecked: boolean | undefined
1704
+ defaultValue: string | number | readonly string[] | undefined
1705
+ dir: string | undefined
1706
+ draggable: (boolean | "false" | "true") | undefined
1707
+ enterKeyHint: "done" | "search" | "enter" | "go" | "next" | "previous" | "send" | undefined
1708
+ exportparts: string | undefined
1709
+ fetchPriority: "auto" | "high" | "low" | undefined
1710
+ height: string | number | undefined
1711
+ hidden: boolean | undefined
1712
+ id: string | undefined
1713
+ inert: boolean | undefined
1714
+ inlist: any
1715
+ inputMode: "search" | "text" | "email" | "numeric" | "url" | "none" | "tel" | "decimal" | undefined
1716
+ is: string | undefined
1717
+ itemID: string | undefined
1718
+ itemProp: string | undefined
1719
+ itemRef: string | undefined
1720
+ itemScope: boolean | undefined
1721
+ itemType: string | undefined
1722
+ lang: string | undefined
1723
+ loading: "eager" | "lazy" | undefined
1724
+ nonce: string | undefined
1725
+ onAbort: ReactEventHandler<HTMLImageElement> | undefined
1726
+ onAbortCapture: ReactEventHandler<HTMLImageElement> | undefined
1727
+ onAnimationEnd: AnimationEventHandler<HTMLImageElement> | undefined
1728
+ onAnimationEndCapture: AnimationEventHandler<HTMLImageElement> | undefined
1729
+ onAnimationIteration: AnimationEventHandler<HTMLImageElement> | undefined
1730
+ onAnimationIterationCapture: AnimationEventHandler<HTMLImageElement> | undefined
1731
+ onAnimationStart: AnimationEventHandler<HTMLImageElement> | undefined
1732
+ onAnimationStartCapture: AnimationEventHandler<HTMLImageElement> | undefined
1733
+ onAuxClick: MouseEventHandler<HTMLImageElement> | undefined
1734
+ onAuxClickCapture: MouseEventHandler<HTMLImageElement> | undefined
1735
+ onBeforeInput: InputEventHandler<HTMLImageElement> | undefined
1736
+ onBeforeInputCapture: InputEventHandler<HTMLImageElement> | undefined
1737
+ onBeforeToggle: ToggleEventHandler<HTMLImageElement> | undefined
1738
+ onBlur: FocusEventHandler<HTMLImageElement> | undefined
1739
+ onBlurCapture: FocusEventHandler<HTMLImageElement> | undefined
1740
+ onCanPlay: ReactEventHandler<HTMLImageElement> | undefined
1741
+ onCanPlayCapture: ReactEventHandler<HTMLImageElement> | undefined
1742
+ onCanPlayThrough: ReactEventHandler<HTMLImageElement> | undefined
1743
+ onCanPlayThroughCapture: ReactEventHandler<HTMLImageElement> | undefined
1744
+ onChange: ChangeEventHandler<HTMLImageElement, Element> | undefined
1745
+ onChangeCapture: ChangeEventHandler<HTMLImageElement, Element> | undefined
1746
+ onClick: MouseEventHandler<HTMLImageElement> | undefined
1747
+ onClickCapture: MouseEventHandler<HTMLImageElement> | undefined
1748
+ onCompositionEnd: CompositionEventHandler<HTMLImageElement> | undefined
1749
+ onCompositionEndCapture: CompositionEventHandler<HTMLImageElement> | undefined
1750
+ onCompositionStart: CompositionEventHandler<HTMLImageElement> | undefined
1751
+ onCompositionStartCapture: CompositionEventHandler<HTMLImageElement> | undefined
1752
+ onCompositionUpdate: CompositionEventHandler<HTMLImageElement> | undefined
1753
+ onCompositionUpdateCapture: CompositionEventHandler<HTMLImageElement> | undefined
1754
+ onContextMenu: MouseEventHandler<HTMLImageElement> | undefined
1755
+ onContextMenuCapture: MouseEventHandler<HTMLImageElement> | undefined
1756
+ onCopy: ClipboardEventHandler<HTMLImageElement> | undefined
1757
+ onCopyCapture: ClipboardEventHandler<HTMLImageElement> | undefined
1758
+ onCut: ClipboardEventHandler<HTMLImageElement> | undefined
1759
+ onCutCapture: ClipboardEventHandler<HTMLImageElement> | undefined
1760
+ onDoubleClick: MouseEventHandler<HTMLImageElement> | undefined
1761
+ onDoubleClickCapture: MouseEventHandler<HTMLImageElement> | undefined
1762
+ onDrag: DragEventHandler<HTMLImageElement> | undefined
1763
+ onDragCapture: DragEventHandler<HTMLImageElement> | undefined
1764
+ onDragEnd: DragEventHandler<HTMLImageElement> | undefined
1765
+ onDragEndCapture: DragEventHandler<HTMLImageElement> | undefined
1766
+ onDragEnter: DragEventHandler<HTMLImageElement> | undefined
1767
+ onDragEnterCapture: DragEventHandler<HTMLImageElement> | undefined
1768
+ onDragExit: DragEventHandler<HTMLImageElement> | undefined
1769
+ onDragExitCapture: DragEventHandler<HTMLImageElement> | undefined
1770
+ onDragLeave: DragEventHandler<HTMLImageElement> | undefined
1771
+ onDragLeaveCapture: DragEventHandler<HTMLImageElement> | undefined
1772
+ onDragOver: DragEventHandler<HTMLImageElement> | undefined
1773
+ onDragOverCapture: DragEventHandler<HTMLImageElement> | undefined
1774
+ onDragStart: DragEventHandler<HTMLImageElement> | undefined
1775
+ onDragStartCapture: DragEventHandler<HTMLImageElement> | undefined
1776
+ onDrop: DragEventHandler<HTMLImageElement> | undefined
1777
+ onDropCapture: DragEventHandler<HTMLImageElement> | undefined
1778
+ onDurationChange: ReactEventHandler<HTMLImageElement> | undefined
1779
+ onDurationChangeCapture: ReactEventHandler<HTMLImageElement> | undefined
1780
+ onEmptied: ReactEventHandler<HTMLImageElement> | undefined
1781
+ onEmptiedCapture: ReactEventHandler<HTMLImageElement> | undefined
1782
+ onEncrypted: ReactEventHandler<HTMLImageElement> | undefined
1783
+ onEncryptedCapture: ReactEventHandler<HTMLImageElement> | undefined
1784
+ onEnded: ReactEventHandler<HTMLImageElement> | undefined
1785
+ onEndedCapture: ReactEventHandler<HTMLImageElement> | undefined
1786
+ onError: ReactEventHandler<HTMLImageElement> | undefined
1787
+ onErrorCapture: ReactEventHandler<HTMLImageElement> | undefined
1788
+ onFocus: FocusEventHandler<HTMLImageElement> | undefined
1789
+ onFocusCapture: FocusEventHandler<HTMLImageElement> | undefined
1790
+ onGotPointerCapture: PointerEventHandler<HTMLImageElement> | undefined
1791
+ onGotPointerCaptureCapture: PointerEventHandler<HTMLImageElement> | undefined
1792
+ onInput: InputEventHandler<HTMLImageElement> | undefined
1793
+ onInputCapture: InputEventHandler<HTMLImageElement> | undefined
1794
+ onInvalid: ReactEventHandler<HTMLImageElement> | undefined
1795
+ onInvalidCapture: ReactEventHandler<HTMLImageElement> | undefined
1796
+ onKeyDown: KeyboardEventHandler<HTMLImageElement> | undefined
1797
+ onKeyDownCapture: KeyboardEventHandler<HTMLImageElement> | undefined
1798
+ onKeyPress: KeyboardEventHandler<HTMLImageElement> | undefined
1799
+ onKeyPressCapture: KeyboardEventHandler<HTMLImageElement> | undefined
1800
+ onKeyUp: KeyboardEventHandler<HTMLImageElement> | undefined
1801
+ onKeyUpCapture: KeyboardEventHandler<HTMLImageElement> | undefined
1802
+ onLoad: ReactEventHandler<HTMLImageElement> | undefined
1803
+ onLoadCapture: ReactEventHandler<HTMLImageElement> | undefined
1804
+ onLoadedData: ReactEventHandler<HTMLImageElement> | undefined
1805
+ onLoadedDataCapture: ReactEventHandler<HTMLImageElement> | undefined
1806
+ onLoadedMetadata: ReactEventHandler<HTMLImageElement> | undefined
1807
+ onLoadedMetadataCapture: ReactEventHandler<HTMLImageElement> | undefined
1808
+ onLoadStart: ReactEventHandler<HTMLImageElement> | undefined
1809
+ onLoadStartCapture: ReactEventHandler<HTMLImageElement> | undefined
1810
+ onLostPointerCapture: PointerEventHandler<HTMLImageElement> | undefined
1811
+ onLostPointerCaptureCapture: PointerEventHandler<HTMLImageElement> | undefined
1812
+ onMouseDown: MouseEventHandler<HTMLImageElement> | undefined
1813
+ onMouseDownCapture: MouseEventHandler<HTMLImageElement> | undefined
1814
+ onMouseEnter: MouseEventHandler<HTMLImageElement> | undefined
1815
+ onMouseLeave: MouseEventHandler<HTMLImageElement> | undefined
1816
+ onMouseMove: MouseEventHandler<HTMLImageElement> | undefined
1817
+ onMouseMoveCapture: MouseEventHandler<HTMLImageElement> | undefined
1818
+ onMouseOut: MouseEventHandler<HTMLImageElement> | undefined
1819
+ onMouseOutCapture: MouseEventHandler<HTMLImageElement> | undefined
1820
+ onMouseOver: MouseEventHandler<HTMLImageElement> | undefined
1821
+ onMouseOverCapture: MouseEventHandler<HTMLImageElement> | undefined
1822
+ onMouseUp: MouseEventHandler<HTMLImageElement> | undefined
1823
+ onMouseUpCapture: MouseEventHandler<HTMLImageElement> | undefined
1824
+ onPaste: ClipboardEventHandler<HTMLImageElement> | undefined
1825
+ onPasteCapture: ClipboardEventHandler<HTMLImageElement> | undefined
1826
+ onPause: ReactEventHandler<HTMLImageElement> | undefined
1827
+ onPauseCapture: ReactEventHandler<HTMLImageElement> | undefined
1828
+ onPlay: ReactEventHandler<HTMLImageElement> | undefined
1829
+ onPlayCapture: ReactEventHandler<HTMLImageElement> | undefined
1830
+ onPlaying: ReactEventHandler<HTMLImageElement> | undefined
1831
+ onPlayingCapture: ReactEventHandler<HTMLImageElement> | undefined
1832
+ onPointerCancel: PointerEventHandler<HTMLImageElement> | undefined
1833
+ onPointerCancelCapture: PointerEventHandler<HTMLImageElement> | undefined
1834
+ onPointerDown: PointerEventHandler<HTMLImageElement> | undefined
1835
+ onPointerDownCapture: PointerEventHandler<HTMLImageElement> | undefined
1836
+ onPointerEnter: PointerEventHandler<HTMLImageElement> | undefined
1837
+ onPointerLeave: PointerEventHandler<HTMLImageElement> | undefined
1838
+ onPointerMove: PointerEventHandler<HTMLImageElement> | undefined
1839
+ onPointerMoveCapture: PointerEventHandler<HTMLImageElement> | undefined
1840
+ onPointerOut: PointerEventHandler<HTMLImageElement> | undefined
1841
+ onPointerOutCapture: PointerEventHandler<HTMLImageElement> | undefined
1842
+ onPointerOver: PointerEventHandler<HTMLImageElement> | undefined
1843
+ onPointerOverCapture: PointerEventHandler<HTMLImageElement> | undefined
1844
+ onPointerUp: PointerEventHandler<HTMLImageElement> | undefined
1845
+ onPointerUpCapture: PointerEventHandler<HTMLImageElement> | undefined
1846
+ onProgress: ReactEventHandler<HTMLImageElement> | undefined
1847
+ onProgressCapture: ReactEventHandler<HTMLImageElement> | undefined
1848
+ onRateChange: ReactEventHandler<HTMLImageElement> | undefined
1849
+ onRateChangeCapture: ReactEventHandler<HTMLImageElement> | undefined
1850
+ onReset: ReactEventHandler<HTMLImageElement> | undefined
1851
+ onResetCapture: ReactEventHandler<HTMLImageElement> | undefined
1852
+ onScroll: UIEventHandler<HTMLImageElement> | undefined
1853
+ onScrollCapture: UIEventHandler<HTMLImageElement> | undefined
1854
+ onScrollEnd: UIEventHandler<HTMLImageElement> | undefined
1855
+ onScrollEndCapture: UIEventHandler<HTMLImageElement> | undefined
1856
+ onSeeked: ReactEventHandler<HTMLImageElement> | undefined
1857
+ onSeekedCapture: ReactEventHandler<HTMLImageElement> | undefined
1858
+ onSeeking: ReactEventHandler<HTMLImageElement> | undefined
1859
+ onSeekingCapture: ReactEventHandler<HTMLImageElement> | undefined
1860
+ onSelect: ReactEventHandler<HTMLImageElement> | undefined
1861
+ onSelectCapture: ReactEventHandler<HTMLImageElement> | undefined
1862
+ onStalled: ReactEventHandler<HTMLImageElement> | undefined
1863
+ onStalledCapture: ReactEventHandler<HTMLImageElement> | undefined
1864
+ onSubmit: SubmitEventHandler<HTMLImageElement> | undefined
1865
+ onSubmitCapture: SubmitEventHandler<HTMLImageElement> | undefined
1866
+ onSuspend: ReactEventHandler<HTMLImageElement> | undefined
1867
+ onSuspendCapture: ReactEventHandler<HTMLImageElement> | undefined
1868
+ onTimeUpdate: ReactEventHandler<HTMLImageElement> | undefined
1869
+ onTimeUpdateCapture: ReactEventHandler<HTMLImageElement> | undefined
1870
+ onToggle: ToggleEventHandler<HTMLImageElement> | undefined
1871
+ onTouchCancel: TouchEventHandler<HTMLImageElement> | undefined
1872
+ onTouchCancelCapture: TouchEventHandler<HTMLImageElement> | undefined
1873
+ onTouchEnd: TouchEventHandler<HTMLImageElement> | undefined
1874
+ onTouchEndCapture: TouchEventHandler<HTMLImageElement> | undefined
1875
+ onTouchMove: TouchEventHandler<HTMLImageElement> | undefined
1876
+ onTouchMoveCapture: TouchEventHandler<HTMLImageElement> | undefined
1877
+ onTouchStart: TouchEventHandler<HTMLImageElement> | undefined
1878
+ onTouchStartCapture: TouchEventHandler<HTMLImageElement> | undefined
1879
+ onTransitionCancel: TransitionEventHandler<HTMLImageElement> | undefined
1880
+ onTransitionCancelCapture: TransitionEventHandler<HTMLImageElement> | undefined
1881
+ onTransitionEnd: TransitionEventHandler<HTMLImageElement> | undefined
1882
+ onTransitionEndCapture: TransitionEventHandler<HTMLImageElement> | undefined
1883
+ onTransitionRun: TransitionEventHandler<HTMLImageElement> | undefined
1884
+ onTransitionRunCapture: TransitionEventHandler<HTMLImageElement> | undefined
1885
+ onTransitionStart: TransitionEventHandler<HTMLImageElement> | undefined
1886
+ onTransitionStartCapture: TransitionEventHandler<HTMLImageElement> | undefined
1887
+ onVolumeChange: ReactEventHandler<HTMLImageElement> | undefined
1888
+ onVolumeChangeCapture: ReactEventHandler<HTMLImageElement> | undefined
1889
+ onWaiting: ReactEventHandler<HTMLImageElement> | undefined
1890
+ onWaitingCapture: ReactEventHandler<HTMLImageElement> | undefined
1891
+ onWheel: WheelEventHandler<HTMLImageElement> | undefined
1892
+ onWheelCapture: WheelEventHandler<HTMLImageElement> | undefined
1893
+ original: boolean | undefined
1894
+ part: string | undefined
1895
+ popover: "" | "auto" | "manual" | "hint" | undefined
1896
+ popoverTarget: string | undefined
1897
+ popoverTargetAction: "toggle" | "show" | "hide" | undefined
1898
+ prefix: string | undefined
1899
+ property: string | undefined
1900
+ radioGroup: string | undefined
1901
+ referrerPolicy: HTMLAttributeReferrerPolicy | undefined
1902
+ rel: string | undefined
1903
+ resource: string | undefined
1904
+ results: number | undefined
1905
+ rev: string | undefined
1906
+ role: AriaRole | undefined
1907
+ security: string | undefined
1908
+ sizes: string | undefined
1909
+ slot: string | undefined
1910
+ spellCheck: (boolean | "false" | "true") | undefined
1911
+ src: string | undefined
1912
+ srcSet: string | undefined
1913
+ style: CSSProperties | undefined
1914
+ suppressContentEditableWarning: boolean | undefined
1915
+ suppressHydrationWarning: boolean | undefined
1916
+ tabIndex: number | undefined
1917
+ title: string | undefined
1918
+ translate: "yes" | "no" | undefined
1919
+ typeof: string | undefined
1920
+ unselectable: "off" | "on" | undefined
1921
+ useMap: string | undefined
1922
+ vocab: string | undefined
1923
+ width: string | number | undefined
1924
+ ```
1925
+
1095
1926
  ## `ModeId` (type)
1096
1927
 
1097
1928
  ```ts
@@ -1173,6 +2004,12 @@ userText: string
1173
2004
  parsePlanUpdate: (argumentsJson: string) => PlanUpdateData | null
1174
2005
  ```
1175
2006
 
2007
+ ## `parseQueueAck` (function)
2008
+
2009
+ ```ts
2010
+ parseQueueAck: (response: unknown, fallbackSessionId: string) => QueueOperationResult
2011
+ ```
2012
+
1176
2013
  ## `parseWhatIfPrompt` (function)
1177
2014
 
1178
2015
  ```ts
@@ -1189,6 +2026,14 @@ sequence: number
1189
2026
  turn_id: string
1190
2027
  ```
1191
2028
 
2029
+ ## `PendingQuestionRef` (interface)
2030
+
2031
+ ```ts
2032
+ child_loop_name: string
2033
+ child_tool_call_id: string
2034
+ description: string | null | undefined
2035
+ ```
2036
+
1192
2037
  ## `pickCurrentPlanStep` (function)
1193
2038
 
1194
2039
  ```ts
@@ -1210,7 +2055,7 @@ export type PlanStepStatus = "pending" | "in_progress" | "completed"
1210
2055
  ## `PlanUpdateBlock` (function)
1211
2056
 
1212
2057
  ```ts
1213
- PlanUpdateBlock: ({ toolCall, running, autoReveal, }: { toolCall: ToolCallInfo; running?: boolean; autoReveal?: boolean; }) => JSX.Element | null
2058
+ PlanUpdateBlock: ({ toolCall, running, autoReveal, className, }: { toolCall: ToolCallInfo; running?: boolean; autoReveal?: boolean; className?: string; }) => JSX.Element | null
1214
2059
  ```
1215
2060
 
1216
2061
  ## `PlanUpdateData` (interface)
@@ -1226,6 +2071,14 @@ current: ToolCallInfo | null
1226
2071
  updating: boolean
1227
2072
  ```
1228
2073
 
2074
+ ## `PlanUpdateRendererProps` (interface)
2075
+
2076
+ ```ts
2077
+ plan: PlanUpdateData
2078
+ running: boolean
2079
+ sessionId: string | undefined
2080
+ ```
2081
+
1229
2082
  ## `PlatformEndpoints` (interface)
1230
2083
 
1231
2084
  ```ts
@@ -1238,6 +2091,97 @@ services: Partial<Record<"agent" | "os" | "hub" | "oauth" | "llmGateway" | "gite
1238
2091
  export type PlatformServiceName = (typeof PLATFORM_SERVICE_NAMES)[number]
1239
2092
  ```
1240
2093
 
2094
+ ## `PluginCatalogEntry` (interface)
2095
+
2096
+ ```ts
2097
+ display_name: string | null
2098
+ icon: string | null
2099
+ installed: boolean
2100
+ name: string
2101
+ ```
2102
+
2103
+ ## `PluginConnectorItem` (interface)
2104
+
2105
+ ```ts
2106
+ active: boolean
2107
+ config: SessionPluginConfigSummary | undefined
2108
+ display_name: string | null
2109
+ icon: string | null
2110
+ iconSource: "account" | "session"
2111
+ installed: boolean | null
2112
+ name: string
2113
+ projected: boolean
2114
+ reason: string | null | undefined
2115
+ status: string
2116
+ ```
2117
+
2118
+ ## `PluginConnectorList` (function)
2119
+
2120
+ ```ts
2121
+ PluginConnectorList: ({ client, sessionId, items, inFlight, busy, mutationError, onToggle, onRetry, onEditConfig, configuring, onConfigSaved, onConfigClose, disabledReason, unavailableText, emptyText, draft, }: PluginConnectorListProps) => JSX.Element
2122
+ ```
2123
+
2124
+ ## `PluginConnectorListProps` (interface)
2125
+
2126
+ ```ts
2127
+ busy: boolean
2128
+ client: BladeClient
2129
+ configuring: ConfiguringPlugin | null
2130
+ disabledReason: string | null | undefined
2131
+ draft: boolean | undefined
2132
+ emptyText: string
2133
+ inFlight: Record<string, true>
2134
+ items: PluginConnectorItem[]
2135
+ mutationError: boolean
2136
+ onConfigClose: () => void
2137
+ onConfigSaved: (state: SessionPluginConfigState) => void
2138
+ onEditConfig: (item: PluginConnectorItem) => void
2139
+ onRetry: (item: PluginConnectorItem) => void
2140
+ onToggle: (item: PluginConnectorItem, next: boolean) => void
2141
+ sessionId: string | null
2142
+ unavailableText: string | null | undefined
2143
+ ```
2144
+
2145
+ ## `PluginConnectorSelection` (interface)
2146
+
2147
+ ```ts
2148
+ displayName: string | null
2149
+ icon: string | null
2150
+ iconSource: "account" | "session"
2151
+ name: string
2152
+ ```
2153
+
2154
+ ## `PluginsResource` (class)
2155
+
2156
+ ```ts
2157
+ catalog: (init?: RequestInit) => Promise<{ plugins: PluginCatalogEntry[]; }>
2158
+ fetchIcon: (name: string) => Promise<Blob>
2159
+ iconUrl: (name: string) => string
2160
+ ```
2161
+
2162
+ ## `PluginTriggerStack` (function)
2163
+
2164
+ ```ts
2165
+ PluginTriggerStack: ({ client, sessionId, summary, className }: PluginTriggerStackProps) => JSX.Element | null
2166
+ ```
2167
+
2168
+ ## `PluginTriggerStackProps` (interface)
2169
+
2170
+ ```ts
2171
+ className: string | undefined
2172
+ client: BladeClient
2173
+ sessionId: string | null
2174
+ summary: TriggerSummary
2175
+ ```
2176
+
2177
+ ## `PollingBackoff` (class)
2178
+
2179
+ ```ts
2180
+ failed: (error: unknown) => void
2181
+ reset: () => void
2182
+ waitMs: () => number | false
2183
+ ```
2184
+
1241
2185
  ## `PostChatFollowup` (interface)
1242
2186
 
1243
2187
  ```ts
@@ -1268,6 +2212,21 @@ bizRoleId: string | undefined
1268
2212
  kind: "prepared"
1269
2213
  ```
1270
2214
 
2215
+ ## `prependOlder` (function)
2216
+
2217
+ ```ts
2218
+ prependOlder: (current: TurnProjection[], page: TurnProjection[]) => TurnProjection[]
2219
+ ```
2220
+
2221
+ ## `PreviewToolUiCardEntry` (interface)
2222
+
2223
+ ```ts
2224
+ blocks: ContentBlock[]
2225
+ card: ToolUiCard
2226
+ key: string
2227
+ toolCall: ToolCallInfo
2228
+ ```
2229
+
1271
2230
  ## `PrimarySkillParallelMode` (interface)
1272
2231
 
1273
2232
  ```ts
@@ -1288,6 +2247,21 @@ title: string
1288
2247
  version: number
1289
2248
  ```
1290
2249
 
2250
+ ## `PrimarySkillStageSpec` (interface)
2251
+
2252
+ ```ts
2253
+ id: string
2254
+ name: string
2255
+ steps: PrimarySkillStepSpec[]
2256
+ ```
2257
+
2258
+ ## `PrimarySkillStepSpec` (interface)
2259
+
2260
+ ```ts
2261
+ label: string
2262
+ n: number
2263
+ ```
2264
+
1291
2265
  ## `ProvidersResponse` (interface)
1292
2266
 
1293
2267
  ```ts
@@ -1303,6 +2277,61 @@ export type PublishedSolutionRef =
1303
2277
  | { source: "hub"; org: string; name: string }
1304
2278
  ```
1305
2279
 
2280
+ ## `QueueAck` (interface)
2281
+
2282
+ ```ts
2283
+ items: QueuedMessage[] | undefined
2284
+ message: string | null | undefined
2285
+ pause_reason: string | null | undefined
2286
+ paused: boolean | undefined
2287
+ revision: number | undefined
2288
+ running: boolean | undefined
2289
+ session_id: string | undefined
2290
+ status: "error" | "ok" | "conflict" | "queued"
2291
+ ```
2292
+
2293
+ ## `QueuedMessage` (interface)
2294
+
2295
+ ```ts
2296
+ content: string
2297
+ created_at: string
2298
+ error: string | undefined
2299
+ id: string
2300
+ position: number
2301
+ status: QueuedMessageStatus
2302
+ target_run_id: string | undefined
2303
+ updated_at: string
2304
+ version: number
2305
+ ```
2306
+
2307
+ ## `QueuedMessageStatus` (type)
2308
+
2309
+ ```ts
2310
+ export type QueuedMessageStatus = "pending" | "delivering" | "claimed" | "consumed" | "cancelled"
2311
+ ```
2312
+
2313
+ ## `queuedMessageStatusLabel` (function)
2314
+
2315
+ ```ts
2316
+ queuedMessageStatusLabel: (status: QueuedMessageStatus) => string
2317
+ ```
2318
+
2319
+ ## `QueueOperationResult` (interface)
2320
+
2321
+ ```ts
2322
+ code: string | undefined
2323
+ conflict: boolean
2324
+ message: string | null
2325
+ ok: boolean
2326
+ snapshot: SessionQueueSnapshot | null
2327
+ ```
2328
+
2329
+ ## `queuePauseReasonLabel` (function)
2330
+
2331
+ ```ts
2332
+ queuePauseReasonLabel: (reason: string | null | undefined) => string | null
2333
+ ```
2334
+
1306
2335
  ## `RawEvent` (interface)
1307
2336
 
1308
2337
  ```ts
@@ -1310,12 +2339,33 @@ payload: Record<string, unknown>
1310
2339
  type: string
1311
2340
  ```
1312
2341
 
2342
+ ## `RawHtmlPlugin` (type)
2343
+
2344
+ ```ts
2345
+ export type RawHtmlPlugin = (
2346
+ tagName: string,
2347
+ attributes: Record<string, string>,
2348
+ ) => Record<string, string>
2349
+ ```
2350
+
2351
+ ## `reconcileHistoricalUserTurns` (function)
2352
+
2353
+ ```ts
2354
+ reconcileHistoricalUserTurns: (currentTurns: TurnProjection[], incomingTurns: TurnProjection[]) => TurnProjection[]
2355
+ ```
2356
+
1313
2357
  ## `reconcileOptimisticUserTurns` (function)
1314
2358
 
1315
2359
  ```ts
1316
2360
  reconcileOptimisticUserTurns: (currentTurns: TurnProjection[], incomingTurns: TurnProjection[]) => TurnProjection[]
1317
2361
  ```
1318
2362
 
2363
+ ## `replaceWindow` (function)
2364
+
2365
+ ```ts
2366
+ replaceWindow: (current: TurnProjection[], page: TurnProjection[], liveRevisionAtStart: number, liveRevisions: LiveRevisionState) => TurnProjection[]
2367
+ ```
2368
+
1319
2369
  ## `ReplayBar` (function)
1320
2370
 
1321
2371
  ```ts
@@ -1394,6 +2444,12 @@ status: "replay" | "autonomous" | undefined
1394
2444
  resolveServiceUrl: (endpoints: PlatformEndpoints, name: PlatformServiceName, path?: string) => string | null
1395
2445
  ```
1396
2446
 
2447
+ ## `resolveToolUiCardContent` (function)
2448
+
2449
+ ```ts
2450
+ resolveToolUiCardContent: (card: ToolUiCard) => { type: ToolUiCardContentType; content: string; } | null
2451
+ ```
2452
+
1397
2453
  ## `ResultFeedback` (interface)
1398
2454
 
1399
2455
  ```ts
@@ -1440,6 +2496,17 @@ result: unknown
1440
2496
  sessionId: string
1441
2497
  ```
1442
2498
 
2499
+ ## `RunTiming` (interface)
2500
+
2501
+ ```ts
2502
+ duration_ms: number | null | undefined
2503
+ loop_id: string
2504
+ run_id: string
2505
+ scope: "chat" | "subagent"
2506
+ started_at: string | null | undefined
2507
+ status: "completed" | "paused" | "failed" | "cancelled" | "incomplete"
2508
+ ```
2509
+
1443
2510
  ## `RunTrace` (interface)
1444
2511
 
1445
2512
  ```ts
@@ -1461,6 +2528,12 @@ SDK_NAME: "agent-client"
1461
2528
  SDK_VERSION: string
1462
2529
  ```
1463
2530
 
2531
+ ## `selectionFromItem` (function)
2532
+
2533
+ ```ts
2534
+ selectionFromItem: (item: PluginConnectorItem) => PluginConnectorSelection
2535
+ ```
2536
+
1464
2537
  ## `SendOptions` (interface)
1465
2538
 
1466
2539
  ```ts
@@ -1468,11 +2541,26 @@ askUserAnswer: Record<string, unknown> | undefined
1468
2541
  kbIds: number[] | undefined
1469
2542
  mode: string | undefined
1470
2543
  model: string | undefined
2544
+ queueWhenRunning: boolean | undefined
1471
2545
  replayDecision: "keep_replay" | "continue_replay" | undefined
1472
2546
  thinkingOverride: boolean | undefined
1473
2547
  whatif: { from_step: number; quotes: Array<Record<string, unknown>>; deprecate_entry_ids: string[]; } | undefined
1474
2548
  ```
1475
2549
 
2550
+ ## `SessionBranchPicker` (function)
2551
+
2552
+ ```ts
2553
+ SessionBranchPicker: ({ tree, disabled, onCheckout, }: SessionBranchPickerProps) => JSX.Element | null
2554
+ ```
2555
+
2556
+ ## `SessionBranchPickerProps` (interface)
2557
+
2558
+ ```ts
2559
+ disabled: boolean | undefined
2560
+ onCheckout: (checkpointId: string, position: "before" | "turn_end") => Promise<void>
2561
+ tree: { nodes: CheckpointNode[]; leaf_id: string | null; }
2562
+ ```
2563
+
1476
2564
  ## `SessionComputer` (interface)
1477
2565
 
1478
2566
  ```ts
@@ -1538,14 +2626,17 @@ solution: SolutionDefinition | undefined
1538
2626
 
1539
2627
  ```ts
1540
2628
  agent_runtime_id: string | null | undefined
2629
+ ba_version: string | null | undefined
1541
2630
  biz_role_id: string | null | undefined
1542
2631
  bound_skill_id: string | null | undefined
2632
+ chat_group_id: string | null | undefined
1543
2633
  created_at: string
1544
2634
  daemon_id: string | null | undefined
1545
2635
  disable_tools: (string[] & string[]) | undefined
1546
2636
  enable_thinking: boolean | null | undefined
1547
2637
  env: Record<string, string> | undefined
1548
2638
  id: string
2639
+ initiator: "unknown" | "ui" | "sdk" | null | undefined
1549
2640
  intent: string
1550
2641
  is_example: boolean | undefined
1551
2642
  is_headless: boolean | undefined
@@ -1562,6 +2653,7 @@ primary_skill_id: string | null | undefined
1562
2653
  primary_skill_snapshot: PrimarySkillSnapshot | null | undefined
1563
2654
  replay_state: ReplayState | null | undefined
1564
2655
  runtime_type: string | null | undefined
2656
+ sandbox_version: string | null | undefined
1565
2657
  shared: boolean | undefined
1566
2658
  solution: Solution | null | undefined
1567
2659
  solution_id: string | null | undefined
@@ -1608,6 +2700,7 @@ SessionInfo = type({
1608
2700
  "shared?": "boolean",
1609
2701
  "memory_enabled?": "boolean",
1610
2702
  "is_persistent?": "boolean",
2703
+ "initiator?": "'ui' | 'sdk' | 'unknown' | null",
1611
2704
  "is_headless?": "boolean",
1612
2705
  "viewer_role?": "'owner' | 'viewer'",
1613
2706
  "template_id?": "string | null",
@@ -1632,6 +2725,9 @@ SessionInfo = type({
1632
2725
  "daemon_id?": "string | null",
1633
2726
  "agent_runtime_id?": "string | null",
1634
2727
  "workspace_path?": "string | null",
2728
+ "ba_version?": "string | null",
2729
+ "sandbox_version?": "string | null",
2730
+ "chat_group_id?": "string | null",
1635
2731
  "match?": "unknown",
1636
2732
  })
1637
2733
  ```
@@ -1657,6 +2753,160 @@ onSaved: ((sessionId: string, enabled: boolean) => void) | undefined
1657
2753
  sessionId: string
1658
2754
  ```
1659
2755
 
2756
+ ## `SessionPlugin` (interface)
2757
+
2758
+ ```ts
2759
+ active: boolean
2760
+ config: SessionPluginConfigSummary | undefined
2761
+ display_name: string | null | undefined
2762
+ icon: string | null | undefined
2763
+ installed: boolean | null
2764
+ name: string
2765
+ projected: boolean
2766
+ projection_source: string | null | undefined
2767
+ reason: string | null | undefined
2768
+ status: string
2769
+ ```
2770
+
2771
+ ## `SessionPluginActivation` (type)
2772
+
2773
+ ```ts
2774
+ export type SessionPluginActivation = Pick<SessionPlugin, "name" | "active" | "status" | "reason">
2775
+ ```
2776
+
2777
+ ## `SessionPluginConfigDialog` (function)
2778
+
2779
+ ```ts
2780
+ SessionPluginConfigDialog: ({ client, sessionId, plugin, ...props }: SessionPluginConfigDialogProps) => JSX.Element
2781
+ ```
2782
+
2783
+ ## `SessionPluginConfigDialogProps` (interface)
2784
+
2785
+ ```ts
2786
+ client: BladeClient
2787
+ onClose: () => void
2788
+ onSaved: ((state: SessionPluginConfigState) => void) | undefined
2789
+ plugin: Pick<SessionPlugin, "name" | "display_name" | "icon">
2790
+ sessionId: string
2791
+ ```
2792
+
2793
+ ## `SessionPluginConfigDraft` (interface)
2794
+
2795
+ ```ts
2796
+ remove: string[]
2797
+ set: SessionPluginConfigSet[]
2798
+ ```
2799
+
2800
+ ## `SessionPluginConfigError` (interface)
2801
+
2802
+ ```ts
2803
+ message: string
2804
+ path: string
2805
+ ```
2806
+
2807
+ ## `SessionPluginConfigForm` (function)
2808
+
2809
+ ```ts
2810
+ SessionPluginConfigForm: ({ config, submitting, errors, failure, onSubmit, onCancel, }: SessionPluginConfigFormProps) => JSX.Element
2811
+ ```
2812
+
2813
+ ## `SessionPluginConfigFormProps` (interface)
2814
+
2815
+ ```ts
2816
+ config: SessionPluginConfigState
2817
+ errors: SessionPluginConfigError[]
2818
+ failure: string | null
2819
+ onCancel: () => void
2820
+ onSubmit: (draft: SessionPluginConfigDraft) => void
2821
+ submitting: boolean
2822
+ ```
2823
+
2824
+ ## `SessionPluginConfigSet` (interface)
2825
+
2826
+ ```ts
2827
+ path: string
2828
+ value: unknown
2829
+ ```
2830
+
2831
+ ## `SessionPluginConfigState` (interface)
2832
+
2833
+ ```ts
2834
+ errors: SessionPluginConfigError[]
2835
+ reason: string | null
2836
+ revision: string | null
2837
+ schema: Record<string, unknown> | null
2838
+ state: SessionPluginConfigStateName
2839
+ values: Record<string, unknown>
2840
+ write_only: string[]
2841
+ ```
2842
+
2843
+ ## `SessionPluginConfigStateName` (type)
2844
+
2845
+ ```ts
2846
+ export type SessionPluginConfigStateName = "not_required" | "required" | "configured" | "error"
2847
+ ```
2848
+
2849
+ ## `SessionPluginConfigSummary` (type)
2850
+
2851
+ ```ts
2852
+ export type SessionPluginConfigSummary =
2853
+ | SessionPluginConfigStateName
2854
+ | "unchecked"
2855
+ ```
2856
+
2857
+ ## `SessionPluginConfigUpdate` (interface)
2858
+
2859
+ ```ts
2860
+ expected_revision: string | null | undefined
2861
+ remove: string[] | undefined
2862
+ set: SessionPluginConfigSet[] | undefined
2863
+ ```
2864
+
2865
+ ## `SessionPluginIcon` (function)
2866
+
2867
+ ```ts
2868
+ SessionPluginIcon: ({ client, sessionId, plugin, size, shape, className }: SessionPluginIconProps) => JSX.Element
2869
+ ```
2870
+
2871
+ ## `SessionPluginIconProps` (interface)
2872
+
2873
+ ```ts
2874
+ className: string | undefined
2875
+ client: BladeClient
2876
+ plugin: Pick<SessionPlugin, "name" | "icon">
2877
+ sessionId: string | null
2878
+ shape: "circle" | "rounded" | undefined
2879
+ size: number | undefined
2880
+ ```
2881
+
2882
+ ## `sessionPluginLabel` (function)
2883
+
2884
+ ```ts
2885
+ sessionPluginLabel: (plugin: Pick<SessionPlugin, "name" | "display_name">) => string
2886
+ ```
2887
+
2888
+ ## `SessionPluginLabelProps` (interface)
2889
+
2890
+ ```ts
2891
+ plugin: Pick<SessionPlugin, "name" | "display_name">
2892
+ ```
2893
+
2894
+ ## `SessionPluginSelector` (function)
2895
+
2896
+ ```ts
2897
+ SessionPluginSelector: (props: SessionPluginSelectorProps) => JSX.Element
2898
+ ```
2899
+
2900
+ ## `SessionPluginSelectorProps` (interface)
2901
+
2902
+ ```ts
2903
+ className: string | undefined
2904
+ client: BladeClient
2905
+ onChange: ((plugin: SessionPluginActivation) => void) | undefined
2906
+ sessionId: string
2907
+ side: "top" | "bottom" | undefined
2908
+ ```
2909
+
1660
2910
  ## `SessionPortMapping` (interface)
1661
2911
 
1662
2912
  ```ts
@@ -1676,6 +2926,49 @@ model: string | undefined
1676
2926
  solution: SolutionRef | undefined
1677
2927
  ```
1678
2928
 
2929
+ ## `SessionQueuePanel` (function)
2930
+
2931
+ ```ts
2932
+ SessionQueuePanel: ({ snapshot, canDeliver, pendingItemId, notice, onResume, onCancel, onEdit, onRequeue, onMove, onReorder, onDeliver, contentWidthClassName, rootClassName, onVisibleChange, mergesWithInputBelow: mergesWithInputBelowProp, }: SessionQueuePanelProps) => JSX.Element | null
2933
+ ```
2934
+
2935
+ ## `SessionQueuePanelProps` (interface)
2936
+
2937
+ ```ts
2938
+ canDeliver: boolean
2939
+ contentWidthClassName: string | undefined
2940
+ mergesWithInputBelow: boolean | undefined
2941
+ notice: string | null | undefined
2942
+ onCancel: (item: QueuedMessage) => void
2943
+ onDeliver: (item: QueuedMessage) => void
2944
+ onEdit: (item: QueuedMessage, content: string) => boolean | undefined | Promise<boolean>
2945
+ onMove: (item: QueuedMessage, delta: -1 | 1) => void
2946
+ onReorder: (orderedIds: string[]) => void
2947
+ onRequeue: ((content: string) => Promise<boolean>) | undefined
2948
+ onResume: () => void
2949
+ onVisibleChange: ((visible: boolean) => void) | undefined
2950
+ pendingItemId: string | null | undefined
2951
+ rootClassName: string | undefined
2952
+ snapshot: SessionQueueSnapshot
2953
+ ```
2954
+
2955
+ ## `SessionQueueSnapshot` (interface)
2956
+
2957
+ ```ts
2958
+ items: QueuedMessage[]
2959
+ pause_reason: string | null
2960
+ paused: boolean
2961
+ revision: number
2962
+ session_id: string
2963
+ ```
2964
+
2965
+ ## `SessionSearchMatch` (interface)
2966
+
2967
+ ```ts
2968
+ field: "title" | "content"
2969
+ snippet: { role: string; text: string; } | null
2970
+ ```
2971
+
1679
2972
  ## `SessionSetupError` (class)
1680
2973
 
1681
2974
  ```ts
@@ -1697,6 +2990,7 @@ export type SessionSetupStage = "solution" | "session" | "skill" | "connection"
1697
2990
 
1698
2991
  ```ts
1699
2992
  attachAppCli: (sessionId: string, definition: AppCliDefinition) => Promise<AppCliAttachment>
2993
+ callMcpApp: (sessionId: string, sourceId: string, request: { request_id: string; name: string; arguments: Record<string, unknown>; }, init?: RequestInit) => Promise<{ response: Record<string, unknown>; replayed: boolean; }>
1700
2994
  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; }>
1701
2995
  connect: (sessionId: string) => Promise<AgentSession>
1702
2996
  copyFile: (sessionId: string, filePath: string) => Promise<{ path: string; }>
@@ -1710,24 +3004,36 @@ deleteFile: (sessionId: string, filePath: string) => Promise<void>
1710
3004
  deleteSession: (sessionId: string, options?: { deleteWorkspace?: boolean; }) => Promise<{ deleted: boolean; workspace_deleted?: boolean; }>
1711
3005
  downloadFile: (sessionId: string, filePath: string, downloadName?: string) => Promise<void>
1712
3006
  exportSession: (sessionId: string) => Promise<void>
3007
+ fetchImage: (sessionId: string, assetId: string, preview?: boolean) => Promise<Blob>
3008
+ fetchSessionPluginIcon: (sessionId: string, name: string) => Promise<Blob>
3009
+ fetchSharedImage: (token: string, assetId: string, preview?: boolean) => Promise<Blob>
1713
3010
  getBackgroundTask: (sessionId: string, taskId: string, tail?: number, init?: RequestInit) => Promise<BackgroundTask>
1714
3011
  getDownloadDirUrl: (sessionId: string, dirPath: string) => string
3012
+ getMcpApp: (sessionId: string, sourceId: string, init?: RequestInit) => Promise<McpAppArchive>
3013
+ getMcpAppContext: (sessionId: string, sourceId: string, init?: RequestInit) => Promise<McpAppContextState>
1715
3014
  getReplayPreview: (sessionId: string) => Promise<ReplayPreview>
1716
3015
  getSession: (sessionId: string, init?: RequestInit) => Promise<SessionDetail>
1717
3016
  getSessionCheckpoints: (sessionId: string, init?: RequestInit) => Promise<{ nodes: CheckpointNode[]; leaf_id: string | null; }>
1718
3017
  getSessionContextStats: (sessionId: string, init?: RequestInit) => Promise<SessionContextStats>
1719
3018
  getSessionHistory: (sessionId: string, init?: RequestInit) => Promise<SessionHistory>
3019
+ getSessionPluginConfig: (sessionId: string, name: string, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1720
3020
  getSessionTasks: (sessionId: string) => Promise<Task[]>
3021
+ getSessionTurnCommands: (sessionId: string) => Promise<HistoricalCommand[]>
3022
+ getSessionTurnIndex: (sessionId: string) => Promise<SessionTurnIndex>
1721
3023
  getSessionTurns: (sessionId: string) => Promise<TurnProjection[]>
3024
+ getSessionTurnsPage: (sessionId: string, options?: SessionTurnsQuery, init?: RequestInit) => Promise<SessionTurnsPage>
1722
3025
  getSharedSession: (token: string) => Promise<TurnProjection[]>
1723
3026
  importSession: (file: File, name?: string, solutionOverride?: string | null | ImportSessionOptions) => Promise<{ session_id: string; }>
1724
3027
  listBackgroundTasks: (sessionId: string, init?: RequestInit) => Promise<BackgroundTask[]>
1725
- listDir: (sessionId: string, dirPath: string) => Promise<FileEntry[]>
3028
+ listDir: (sessionId: string, dirPath: string, showHidden?: boolean) => Promise<FileEntry[]>
1726
3029
  listResultFeedback: (sessionId: string) => Promise<ResultFeedback[]>
3030
+ listSessionPlugins: (sessionId: string, init?: RequestInit) => Promise<{ plugins: SessionPlugin[]; sync_version: number; sync_pending: boolean; }>
1727
3031
  listSessions: (template_id_prefix?: string, solution_id?: string) => Promise<SessionInfo[]>
1728
- listSessionsPaginated: (params: { limit: number; offset: number; template_id_prefix?: string; solution_id?: string; solution_registry_id?: string; q?: string; }) => Promise<PaginatedSessionsResult>
3032
+ 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>
1729
3033
  listSessionsWithSkillData: () => Promise<SkillDevSession[]>
3034
+ onMcpAppChanged: (sessionId: string, sourceId: string, listener: () => void) => () => void
1730
3035
  pinSession: (sessionId: string, pinned: boolean) => Promise<SessionInfo>
3036
+ prepareSessionPluginConfig: (sessionId: string, name: string, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1731
3037
  previewImport: (file: File) => Promise<ImportPreview>
1732
3038
  probeSessionUrl: (sessionId: string, url: string) => Promise<{ reachable: boolean; requires_proxy: boolean; }>
1733
3039
  putResultFeedback: (sessionId: string, assistantEntryId: string, feedback: { helpful: boolean; reason?: ResultFeedbackReason | null; }) => Promise<ResultFeedback>
@@ -1735,16 +3041,20 @@ renameFile: (sessionId: string, filePath: string, newName: string) => Promise<{
1735
3041
  revokeShare: (sessionId: string, token: string) => Promise<{ revoked: boolean; }>
1736
3042
  rewindSession: (sessionId: string, checkpointId: string) => Promise<{ id: string; content: string; }>
1737
3043
  searchOwnedContent: (params: { q: string; limit?: number; }) => Promise<GlobalSearchResult>
3044
+ sessionPluginIconUrl: (sessionId: string, name: string) => string
1738
3045
  setSessionEnv: (sessionId: string, env: Record<string, string>) => Promise<SessionDetail>
3046
+ setSessionPluginActivation: (sessionId: string, name: string, active: boolean, init?: RequestInit) => Promise<{ plugin: SessionPluginActivation; sync_version: number; }>
1739
3047
  shareFile: (sessionId: string, sourcePath: string, linkName?: string, shareFolder?: string) => Promise<{ path: string; target: string; }>
1740
3048
  startReplaySession: (sourceSessionId: string, speed?: ReplaySpeed) => Promise<{ session_id: string; }>
1741
3049
  stopBackgroundTask: (sessionId: string, taskId: string) => Promise<BackgroundTaskStopResult>
1742
3050
  switchBranch: (sessionId: string, checkpointId: string) => Promise<{ id: string; leaf_id: string; }>
1743
3051
  tokenizeMessages: (messages: Array<Record<string, unknown>>, options?: { model?: string; add_generation_prompt?: boolean; enable_thinking?: boolean | null; tools?: Array<Record<string, unknown>>; }) => Promise<TokenizeResult>
1744
3052
  tokenizePrompt: (prompt: string, model?: string) => Promise<TokenizeResult>
3053
+ updateMcpAppContext: (sessionId: string, sourceId: string, body: McpAppContextUpdate, init?: RequestInit) => Promise<{ status: "accepted"; revision: string; }>
1745
3054
  updateReplaySession: (sessionId: string, payload: { speed?: ReplaySpeed; status?: "autonomous"; }) => Promise<{ replay_state: SessionInfo["replay_state"]; }>
1746
- updateSession: (sessionId: string, payload: { intent?: string; }) => Promise<SessionDetail>
3055
+ updateSession: (sessionId: string, payload: { intent?: string; chat_group_id?: string | null; }) => Promise<SessionDetail>
1747
3056
  updateSessionMemory: (sessionId: string, memoryEnabled: boolean) => Promise<{ memory_enabled: boolean; }>
3057
+ updateSessionPluginConfig: (sessionId: string, name: string, update: SessionPluginConfigUpdate, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1748
3058
  updateSharing: (sessionId: string, shared: boolean) => Promise<{ shared: boolean; }>
1749
3059
  uploadFiles: (sessionId: string, dirPath: string, files: FileList | File[] | UploadFileEntry[], options?: UploadFilesOptions) => Promise<{ uploaded: string[]; failed: string[]; }>
1750
3060
  writeFile: (sessionId: string, filePath: string, content: string) => Promise<{ success: boolean; }>
@@ -1759,8 +3069,11 @@ askAnswers: Record<string, AskUserAnswerData>
1759
3069
  connection: ConnectionStatus
1760
3070
  errorMessage: string | null
1761
3071
  isStreaming: boolean
3072
+ loadingOlder: boolean
1762
3073
  messages: ChatMessage[]
1763
3074
  mode: "planning" | "executing" | null
3075
+ nextBefore: string | null
3076
+ queue: SessionQueueSnapshot
1764
3077
  replay: ReplaySnapshot | null
1765
3078
  sessionId: string
1766
3079
  status: "completed" | "failed" | "interrupted" | "running" | "created" | "waiting_for_input" | null
@@ -1776,6 +3089,44 @@ SessionStatus = type(
1776
3089
  )
1777
3090
  ```
1778
3091
 
3092
+ ## `SessionStatusEvent` (interface)
3093
+
3094
+ ```ts
3095
+ session_id: string
3096
+ status: string
3097
+ ```
3098
+
3099
+ ## `SessionTurnIndex` (interface)
3100
+
3101
+ ```ts
3102
+ items: SessionTurnIndexItem[]
3103
+ sessionId: string
3104
+ ```
3105
+
3106
+ ## `SessionTurnIndexItem` (interface)
3107
+
3108
+ ```ts
3109
+ createdAt: string | null
3110
+ entryId: string
3111
+ preview: string
3112
+ ```
3113
+
3114
+ ## `SessionTurnsPage` (interface)
3115
+
3116
+ ```ts
3117
+ currentMode: "planning" | "executing"
3118
+ nextBefore: string | null
3119
+ turns: TurnProjection[]
3120
+ ```
3121
+
3122
+ ## `SessionTurnsQuery` (interface)
3123
+
3124
+ ```ts
3125
+ before: string | undefined
3126
+ fromEntryId: string | undefined
3127
+ limit: number | undefined
3128
+ ```
3129
+
1779
3130
  ## `ShareLinkResult` (interface)
1780
3131
 
1781
3132
  ```ts
@@ -1784,13 +3135,53 @@ token: string
1784
3135
  url: string
1785
3136
  ```
1786
3137
 
3138
+ ## `shouldApplySnapshot` (function)
3139
+
3140
+ ```ts
3141
+ shouldApplySnapshot: (current: SessionQueueSnapshot | undefined, next: SessionQueueSnapshot) => boolean
3142
+ ```
3143
+
3144
+ ## `SiteVisitsResource` (class)
3145
+
3146
+ ```ts
3147
+ record: () => Promise<SiteVisitsSummary>
3148
+ summary: () => Promise<SiteVisitsSummary>
3149
+ ```
3150
+
3151
+ ## `SiteVisitsSummary` (interface)
3152
+
3153
+ ```ts
3154
+ as_of: string
3155
+ date: string
3156
+ timezone: string
3157
+ today_pv: number
3158
+ today_uv: number
3159
+ total_pv: number
3160
+ ```
3161
+
1787
3162
  ## `SkillDefinition` (interface)
1788
3163
 
1789
3164
  ```ts
1790
- files: TextFile[]
3165
+ files: SkillFile[]
1791
3166
  name: string
1792
3167
  ```
1793
3168
 
3169
+ ## `SkillEditorTemplateId` (type)
3170
+
3171
+ ```ts
3172
+ export type SkillEditorTemplateId = "skill_editor"
3173
+ ```
3174
+
3175
+ ## `SkillFile` (type)
3176
+
3177
+ ```ts
3178
+ export type SkillFile = TextFile & {
3179
+ /** 二进制内容使用 base64;省略时为 UTF-8 文本。 */
3180
+ encoding?: "utf-8" | "base64"
3181
+ executable?: boolean
3182
+ }
3183
+ ```
3184
+
1794
3185
  ## `SkillMentionAvailability` (interface)
1795
3186
 
1796
3187
  ```ts
@@ -1874,6 +3265,18 @@ export type SolutionRef = ExistingSolutionRef | PreparedSolutionAsset
1874
3265
  sortComputers: (computers: SessionComputer[]) => SessionComputer[]
1875
3266
  ```
1876
3267
 
3268
+ ## `stripSystemReminders` (function)
3269
+
3270
+ ```ts
3271
+ stripSystemReminders: (text: string) => string
3272
+ ```
3273
+
3274
+ ## `SystemError` (interface)
3275
+
3276
+ ```ts
3277
+ message: string
3278
+ ```
3279
+
1877
3280
  ## `Task` (type)
1878
3281
 
1879
3282
  ```ts
@@ -1934,6 +3337,25 @@ action: string
1934
3337
  payload: unknown
1935
3338
  ```
1936
3339
 
3340
+ ## `ToolCallArgumentsDelta` (interface)
3341
+
3342
+ ```ts
3343
+ arguments_delta: string
3344
+ function: { name: string; }
3345
+ id: string
3346
+ index: number
3347
+ loop_name: string | undefined
3348
+ ```
3349
+
3350
+ ## `ToolCallCreated` (interface)
3351
+
3352
+ ```ts
3353
+ function: { name: string; arguments: string; }
3354
+ id: string
3355
+ index: number
3356
+ loop_name: string | undefined
3357
+ ```
3358
+
1937
3359
  ## `ToolCallInfo` (interface)
1938
3360
 
1939
3361
  ```ts
@@ -1947,12 +3369,72 @@ result: unknown
1947
3369
  status: "done" | "error" | "cancelled" | "awaiting_answer" | "pending" | undefined
1948
3370
  ```
1949
3371
 
3372
+ ## `ToolCallProjection` (interface)
3373
+
3374
+ ```ts
3375
+ arguments: string
3376
+ display_name: string
3377
+ duration_ms: number | null | undefined
3378
+ id: string
3379
+ pending_question_ref: PendingQuestionRef | null | undefined
3380
+ ran_in_parallel: boolean | undefined
3381
+ result: unknown
3382
+ started_at: string | null | undefined
3383
+ status: string
3384
+ subagent_runs: RunTiming[] | undefined
3385
+ tool_name: string
3386
+ ```
3387
+
1950
3388
  ## `ToolCallRenderer` (type)
1951
3389
 
1952
3390
  ```ts
1953
3391
  export type ToolCallRenderer = (info: ToolCallInfo) => ReactNode | null
1954
3392
  ```
1955
3393
 
3394
+ ## `ToolResultDelta` (interface)
3395
+
3396
+ ```ts
3397
+ content: string
3398
+ loop_name: string | undefined
3399
+ stream: "stdout" | "stderr" | undefined
3400
+ tool_call_id: string
3401
+ ```
3402
+
3403
+ ## `ToolResultDone` (interface)
3404
+
3405
+ ```ts
3406
+ content: string
3407
+ function: { name: string; }
3408
+ loop_name: string | undefined
3409
+ tool_call_id: string
3410
+ ```
3411
+
3412
+ ## `ToolUiCard` (interface)
3413
+
3414
+ ```ts
3415
+ archived: boolean | undefined
3416
+ height: number
3417
+ mcpApp: McpAppData | undefined
3418
+ resourceHTML: string | undefined
3419
+ resourceUri: string | undefined
3420
+ resourceURI: string | undefined
3421
+ sourcePath: string | undefined
3422
+ target: "inline" | "preview"
3423
+ title: string | undefined
3424
+ ```
3425
+
3426
+ ## `ToolUiCardContentType` (type)
3427
+
3428
+ ```ts
3429
+ export type ToolUiCardContentType = "resource-html" | "resource-uri" | "resource-file"
3430
+ ```
3431
+
3432
+ ## `ToolUiCardView` (function)
3433
+
3434
+ ```ts
3435
+ ToolUiCardView: ({ card, sessionId }: { card: ToolUiCard; sessionId?: string; }) => JSX.Element | null
3436
+ ```
3437
+
1956
3438
  ## `toReplaySnapshot` (function)
1957
3439
 
1958
3440
  ```ts
@@ -1965,6 +3447,93 @@ toReplaySnapshot: (raw: ReplayState | null | undefined) => ReplaySnapshot | null
1965
3447
  transformSlashCommand: (skillName: string, rawInput: string, { local, installed }?: SkillMentionAvailability) => string
1966
3448
  ```
1967
3449
 
3450
+ ## `TRIGGER_ICON_LIMIT` (const)
3451
+
3452
+ ```ts
3453
+ TRIGGER_ICON_LIMIT: 3
3454
+ ```
3455
+
3456
+ ## `triggerSummary` (function)
3457
+
3458
+ ```ts
3459
+ triggerSummary: (items: Array<Pick<PluginConnectorSelection, "name" | "displayName" | "icon" | "iconSource">>) => TriggerSummary
3460
+ ```
3461
+
3462
+ ## `TriggerSummary` (interface)
3463
+
3464
+ ```ts
3465
+ overflow: number
3466
+ total: number
3467
+ visible: Pick<PluginConnectorSelection, "name" | "iconSource" | "icon" | "displayName">[]
3468
+ ```
3469
+
3470
+ ## `TURN_NAV_HIGHLIGHT_CLASS` (const)
3471
+
3472
+ ```ts
3473
+ TURN_NAV_HIGHLIGHT_CLASS: "blade-turn-nav-flash"
3474
+ ```
3475
+
3476
+ ## `TurnNavigationOptions` (interface)
3477
+
3478
+ ```ts
3479
+ beforeSeek: ((entryId: string) => void) | undefined
3480
+ cancelPendingLocate: (() => void) | undefined
3481
+ fallbackItems: TurnNavItem[] | undefined
3482
+ getLoadedEntryElement: (entryId: string) => HTMLElement | null
3483
+ isEntryLoaded: ((entryId: string) => boolean) | undefined
3484
+ loadTurnIndex: (() => Promise<SessionTurnIndexItem[]>) | undefined
3485
+ locateEntry: (entryId: string) => Promise<boolean>
3486
+ reloadKey: string | number | null | undefined
3487
+ revealEntry: ((entryId: string) => void) | undefined
3488
+ rewriteKey: string | number | null | undefined
3489
+ sessionId: string | null | undefined
3490
+ ```
3491
+
3492
+ ## `TurnNavigationResult` (interface)
3493
+
3494
+ ```ts
3495
+ activeEntryId: string | null
3496
+ error: string | null
3497
+ failedEntryId: string | null
3498
+ items: TurnNavItem[]
3499
+ loadingEntryId: string | null
3500
+ selectEntry: (entryId: string) => void
3501
+ ```
3502
+
3503
+ ## `TurnNavigationSource` (interface)
3504
+
3505
+ ```ts
3506
+ cancelPendingLocate: (() => void) | undefined
3507
+ fallbackItems: TurnNavItem[] | undefined
3508
+ loadTurnIndex: (() => Promise<SessionTurnIndexItem[]>) | undefined
3509
+ locateEntry: (entryId: string) => Promise<boolean>
3510
+ reloadKey: string | number | null | undefined
3511
+ rewriteKey: string | number | null | undefined
3512
+ ```
3513
+
3514
+ ## `turnNavItemsFromMessages` (function)
3515
+
3516
+ ```ts
3517
+ turnNavItemsFromMessages: (messages: ChatMessage[]) => TurnNavItem[]
3518
+ ```
3519
+
3520
+ ## `TurnNavRail` (function)
3521
+
3522
+ ```ts
3523
+ TurnNavRail: ({ items, activeTurnId, loadingTurnId, error, failedTurnId, onSelectTurn, }: TurnNavRailProps) => JSX.Element | null
3524
+ ```
3525
+
3526
+ ## `TurnNavRailProps` (interface)
3527
+
3528
+ ```ts
3529
+ activeTurnId: string | null
3530
+ error: string | null | undefined
3531
+ failedTurnId: string | null | undefined
3532
+ items: TurnNavItem[]
3533
+ loadingTurnId: string | null | undefined
3534
+ onSelectTurn: (entryId: string) => void
3535
+ ```
3536
+
1968
3537
  ## `TurnProjection` (interface)
1969
3538
 
1970
3539
  ```ts
@@ -1973,6 +3542,7 @@ archived_files: ArchivedFileInfo[] | null | undefined
1973
3542
  archived_tool_calls: ArchivedToolCallInfo[] | null | undefined
1974
3543
  blocks: ContentBlock[]
1975
3544
  client_render_id: string | null | undefined
3545
+ client_request_id: string | null | undefined
1976
3546
  compaction_id: string | null | undefined
1977
3547
  context_action: ContextAction | null | undefined
1978
3548
  context_content: unknown
@@ -1984,9 +3554,12 @@ context_revision: string | null | undefined
1984
3554
  context_window: number | undefined
1985
3555
  display_summary: string | null | undefined
1986
3556
  display_title: string | null | undefined
1987
- duration_ms: number | undefined
3557
+ duration_ms: number | null | undefined
1988
3558
  failure_reason: string | null | undefined
1989
3559
  fallback_applied: boolean | null | undefined
3560
+ first_token_delivery_ms: number | null | undefined
3561
+ first_token_ms: number | null | undefined
3562
+ has_reported_timing: boolean | undefined
1990
3563
  id: string
1991
3564
  kind: "message" | "context" | "compaction" | undefined
1992
3565
  loop_id: string
@@ -2000,6 +3573,7 @@ sequence: number
2000
3573
  sources: ContextSourceInfo[] | null | undefined
2001
3574
  started_at: string | null | undefined
2002
3575
  status: "streaming" | "completed" | "paused" | "failed" | "interrupted"
3576
+ stream_duration_ms: number | null | undefined
2003
3577
  summary_full: string | null | undefined
2004
3578
  summary_preview: string | null | undefined
2005
3579
  tokens_after: number | null | undefined
@@ -2084,7 +3658,7 @@ stop: () => void
2084
3658
  ## `useMessagePin` (function)
2085
3659
 
2086
3660
  ```ts
2087
- useMessagePin: ({ targetKey, pinTarget, layoutKey, getScrollElement, getContentElement, getTargetElement, getTargetScrollTop, getSpacerHeight, setSpacerHeight, stopAutoScroll, scrollToBottom, margin, }: UseMessagePinOptions) => { release: () => void; isActive: () => boolean; }
3661
+ useMessagePin: ({ targetKey, pinTarget, isStreaming, layoutKey, getScrollElement, getContentElement, getTargetElement, getTargetScrollTop, getSpacerHeight, setSpacerHeight, stopAutoScroll, scrollToBottom, margin, }: UseMessagePinOptions) => { release: () => void; isActive: () => boolean; }
2088
3662
  ```
2089
3663
 
2090
3664
  ## `UseMessagePinOptions` (interface)
@@ -2095,6 +3669,7 @@ getScrollElement: () => HTMLElement | null
2095
3669
  getSpacerHeight: () => number
2096
3670
  getTargetElement: () => HTMLElement | null
2097
3671
  getTargetScrollTop: ((scroll: HTMLElement) => number | null) | undefined
3672
+ isStreaming: boolean | undefined
2098
3673
  layoutKey: string | undefined
2099
3674
  margin: number | undefined
2100
3675
  pinTarget: boolean
@@ -2138,6 +3713,56 @@ token: string
2138
3713
  username: string
2139
3714
  ```
2140
3715
 
3716
+ ## `UserMessageRendererProps` (interface)
3717
+
3718
+ ```ts
3719
+ message: ChatMessage
3720
+ ```
3721
+
3722
+ ## `useSessionPluginActivation` (function)
3723
+
3724
+ ```ts
3725
+ useSessionPluginActivation: ({ client, sessionId, onChange, }: { client: BladeClient; sessionId: string; onChange?: (plugin: SessionPluginActivation) => void; }) => UseSessionPluginActivationResult
3726
+ ```
3727
+
3728
+ ## `UseSessionPluginActivationResult` (interface)
3729
+
3730
+ ```ts
3731
+ busy: boolean
3732
+ configuring: ConfiguringPlugin | null
3733
+ editConfig: (item: PluginConnectorItem) => void
3734
+ inFlight: Record<string, true>
3735
+ items: PluginConnectorItem[]
3736
+ listError: boolean
3737
+ loading: boolean
3738
+ mutationError: boolean
3739
+ onConfigClose: () => void
3740
+ onConfigSaved: (state: SessionPluginConfigState) => void
3741
+ reload: () => void
3742
+ retry: (item: PluginConnectorItem) => void
3743
+ toggle: (item: PluginConnectorItem, next: boolean) => void
3744
+ ```
3745
+
3746
+ ## `useTurnNavigation` (function)
3747
+
3748
+ ```ts
3749
+ useTurnNavigation: ({ sessionId, getLoadedEntryElement, isEntryLoaded, locateEntry, cancelPendingLocate, loadTurnIndex, fallbackItems, revealEntry, beforeSeek, reloadKey, rewriteKey, }: TurnNavigationOptions) => TurnNavigationResult
3750
+ ```
3751
+
3752
+ ## `useTypewriterReveal` (function)
3753
+
3754
+ ```ts
3755
+ useTypewriterReveal: (targetText: string, isLive: boolean, resetKey: string | null) => UseTypewriterRevealResult
3756
+ ```
3757
+
3758
+ ## `UseTypewriterRevealResult` (interface)
3759
+
3760
+ ```ts
3761
+ displayedText: string
3762
+ flushNow: () => void
3763
+ isRevealing: boolean
3764
+ ```
3765
+
2141
3766
  ## `WhatIfQuote` (interface)
2142
3767
 
2143
3768
  ```ts