@blade-hq/agent-react 2610.0.0-beta.9 → 2610.0.0-beta.90

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 (73) hide show
  1. package/README.md +344 -8
  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 -5
  5. package/dist/components/AgentTaskCard.d.ts +12 -0
  6. package/dist/components/AskUserQuestionBlock.d.ts +12 -1
  7. package/dist/components/AssistantTurnBlock.d.ts +26 -8
  8. package/dist/components/BackgroundWakeNotice.d.ts +2 -0
  9. package/dist/components/ChatInput.d.ts +21 -1
  10. package/dist/components/ChatSurface.d.ts +133 -2
  11. package/dist/components/ChatView.d.ts +1 -1
  12. package/dist/components/ConnectorPanel.d.ts +41 -0
  13. package/dist/components/ContextCard.d.ts +20 -0
  14. package/dist/components/MarkdownContent.d.ts +17 -0
  15. package/dist/components/McpAppCard.d.ts +14 -0
  16. package/dist/components/MessageImage.d.ts +9 -0
  17. package/dist/components/MessageList.d.ts +38 -4
  18. package/dist/components/PlanUpdateBlock.d.ts +32 -0
  19. package/dist/components/PluginConnectorList.d.ts +47 -0
  20. package/dist/components/PluginTriggerStack.d.ts +22 -0
  21. package/dist/components/PostChatFollowupBlock.d.ts +5 -1
  22. package/dist/components/SessionBranchPicker.d.ts +11 -0
  23. package/dist/components/SessionMemoryToggle.d.ts +19 -0
  24. package/dist/components/SessionPluginConfigDialog.d.ts +10 -0
  25. package/dist/components/SessionPluginConfigForm.d.ts +14 -0
  26. package/dist/components/SessionPluginIcon.d.ts +30 -0
  27. package/dist/components/SessionPluginSelector.d.ts +10 -0
  28. package/dist/components/SessionQueuePanel.d.ts +74 -0
  29. package/dist/components/ToolCallBlock.d.ts +9 -3
  30. package/dist/components/ToolUiCardView.d.ts +9 -0
  31. package/dist/components/TurnNavRail.d.ts +23 -0
  32. package/dist/components/UserMessageBubble.d.ts +7 -3
  33. package/dist/components/WhatIfUserBubble.d.ts +7 -0
  34. package/dist/components/connector-panel-types.d.ts +37 -0
  35. package/dist/components/display-utils.d.ts +10 -0
  36. package/dist/components/markdown/heal-incomplete.d.ts +7 -0
  37. package/dist/components/markdown/incremental.d.ts +73 -0
  38. package/dist/components/markdown/index.d.ts +18 -0
  39. package/dist/components/markdown/parse.d.ts +19 -0
  40. package/dist/components/markdown/render.d.ts +79 -0
  41. package/dist/components/markdown/sanitize.d.ts +50 -0
  42. package/dist/components/markdown/types.d.ts +53 -0
  43. package/dist/components/plugin-config-draft.d.ts +13 -0
  44. package/dist/components/plugin-config-schema.d.ts +6 -0
  45. package/dist/components/plugin-connector.d.ts +40 -0
  46. package/dist/components/queue-panel-adjacency.d.ts +1 -0
  47. package/dist/components/use-session-plugin-activation.d.ts +40 -0
  48. package/dist/context.d.ts +1 -0
  49. package/dist/embed/blade-chat-element.d.ts +4 -3
  50. package/dist/embed/entry.d.ts +51 -0
  51. package/dist/hooks/use-agent-session.d.ts +5 -0
  52. package/dist/hooks/use-message-pin.d.ts +28 -0
  53. package/dist/hooks/use-turn-navigation.d.ts +117 -0
  54. package/dist/hooks/use-typewriter-reveal.d.ts +32 -0
  55. package/dist/index.d.ts +57 -1
  56. package/dist/index.js +63369 -3412
  57. package/dist/index.js.map +1 -1
  58. package/dist/lib/agent-computer-command.d.ts +34 -0
  59. package/dist/lib/random-id.d.ts +10 -0
  60. package/dist/lib/utils.d.ts +17 -2
  61. package/dist/lib/whatif-prompt.d.ts +18 -0
  62. package/dist/style.css +506 -401
  63. package/dist/style.full.css +517 -405
  64. package/dist/webapi-W3IB5DO4.js +2481 -0
  65. package/dist/webapi-W3IB5DO4.js.map +1 -0
  66. package/package.json +2 -2
  67. package/public-api.md +2100 -59
  68. package/dist/chunk-ZXXLY4RM.js +0 -28255
  69. package/dist/chunk-ZXXLY4RM.js.map +0 -1
  70. package/dist/highlighted-body-B3W2YXNL-YD7FAP6V.js +0 -27
  71. package/dist/highlighted-body-B3W2YXNL-YD7FAP6V.js.map +0 -1
  72. package/dist/mermaid-3ZIDBTTL-N7YKJ3SM.js +0 -8
  73. /package/dist/{mermaid-3ZIDBTTL-N7YKJ3SM.js.map → chunk-G3PMV62Z.js.map} +0 -0
package/public-api.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > 本文件由 `scripts/public-api-report.mjs` 生成,请勿手改。
4
4
  > 公共面变更时重新生成本报告,并同步更新 README 对应章节——CI 会校验两者。
5
5
 
6
- 共 171 个公开声明。
6
+ 共 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,10 +76,17 @@ onSessionReady: ((session: AgentSession) => void) | undefined
48
76
  placeholder: string | undefined
49
77
  renderers: ChatViewRenderers | undefined
50
78
  sessionId: string | undefined
79
+ sessionPluginControls: ((sessionId: string) => ReactNode) | undefined
51
80
  slots: ChatViewSlots | undefined
52
81
  theme: "light" | "dark" | undefined
53
82
  ```
54
83
 
84
+ ## `AgentComputerLaunchOutcome` (type)
85
+
86
+ ```ts
87
+ export type AgentComputerLaunchOutcome = "pending" | "succeeded" | "failed" | "unknown"
88
+ ```
89
+
55
90
  ## `AgentLoopInfo` (interface)
56
91
 
57
92
  ```ts
@@ -63,26 +98,48 @@ toolCallId: string
63
98
  ## `AgentSession` (class)
64
99
 
65
100
  ```ts
66
- append: (text: string) => void
67
101
  attach: (label: string, data: unknown) => void
68
102
  attachApp: (options: AttachAppOptions) => Promise<AppCliAttachment | null>
103
+ cancelPendingLocate: () => void
104
+ cancelQueuedMessage: (itemId: string, expectedVersion?: number) => Promise<QueueOperationResult>
69
105
  compact: () => Promise<Record<string, unknown>>
70
106
  countFiles: (dirPath?: string) => Promise<number>
107
+ deliverQueuedMessage: (itemId: string, expectedVersion: number) => Promise<QueueOperationResult>
71
108
  dispose: () => void
72
109
  downloadFile: (filePath: string, downloadName?: string) => Promise<void>
73
110
  exitReplay: () => Promise<void>
74
111
  getState: () => SessionState
112
+ hasOlderHistory: boolean
75
113
  insertText: (text: string) => void
76
114
  isDisposed: boolean
115
+ isStatic: boolean
77
116
  listDir: (dirPath?: string) => Promise<FileEntry[]>
117
+ loadOlderHistory: (options?: { beforeCommit?: () => void; }) => Promise<void>
118
+ loadTurnIndex: () => Promise<SessionTurnIndexItem[]>
119
+ locateEntry: (entryId: string) => Promise<boolean>
78
120
  off: <K extends keyof AgentSessionEvents>(name: K, handler: (event: AgentSessionEvents[K]) => void) => void
79
121
  on: <K extends keyof AgentSessionEvents>(name: K, handler: (event: AgentSessionEvents[K]) => void) => () => void
80
122
  onCommand: (action: string, handler: CommandHandler) => () => void
123
+ queueMessage: (content: string) => Promise<QueueOperationResult>
124
+ refreshQueue: () => Promise<QueueOperationResult>
125
+ reorderQueuedMessages: (expectedRevision: number, orderedIds: string[]) => Promise<QueueOperationResult>
126
+ resumeQueue: () => Promise<QueueOperationResult>
81
127
  send: (content: MessageContent, options?: SendOptions) => Promise<boolean>
82
128
  sessionId: string
83
129
  setReplaySpeed: (speed: ReplaySpeed) => Promise<void>
84
130
  stop: () => Promise<Record<string, unknown>>
85
131
  subscribe: (listener: () => void) => () => void
132
+ updateQueuedMessage: (itemId: string, expectedVersion: number, content: string) => Promise<QueueOperationResult>
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
86
143
  ```
87
144
 
88
145
  ## `AgentSessionEventName` (type)
@@ -99,7 +156,7 @@ attachRequested: { label: string; content: string; }
99
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; }
100
157
  chatEnd: { status: string; }
101
158
  command: { action: string; payload: unknown; toolCallId?: string; }
102
- error: { message: string; }
159
+ error: { message: string; code?: string; }
103
160
  insertTextRequested: { text: string; }
104
161
  message: { message: ChatMessage; turn: TurnProjection; }
105
162
  modeChange: { mode: "planning" | "executing"; }
@@ -107,14 +164,43 @@ notification: { type: string; title: string; detail?: string; status: "info" | "
107
164
  replayMismatch: { actualMessage?: string; expectedMessage?: string; respond: (decision: "keep_replay" | "continue_replay") => void; }
108
165
  rewind: { checkpointId: string; }
109
166
  sandboxOom: { toolCallId: string; }
110
- 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; }
111
168
  taskListUpdated: { tasks: unknown[]; }
112
169
  toolCall: { toolCall: ToolCallInfo; turn: TurnProjection; }
113
- toolPreview: { toolCallId: string; type: "resource-html" | "resource-uri"; content: string; title: string; }
114
- toolResult: { toolCall: ToolCallInfo; turn: TurnProjection; }
170
+ toolPreview: { sourcePath?: string; toolCallId: string; type: "resource-html" | "resource-uri" | "resource-file"; content: string; title: string; mcpApp?: McpAppData; }
171
+ toolResult: { toolCall: ToolCallInfo; turn: TurnProjection; source: "live" | "bootstrap_replay" | "reconnect_replay"; }
115
172
  workspaceChanged: { filePath?: string; }
116
173
  ```
117
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
+
118
204
  ## `AppCliAttachment` (interface)
119
205
 
120
206
  ```ts
@@ -155,9 +241,28 @@ tool_name: string | null | undefined
155
241
 
156
242
  ```ts
157
243
  custom: Record<number, string>
244
+ note: string | undefined
158
245
  selections: Record<number, number[]>
159
246
  ```
160
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
+
161
266
  ## `AsrAudioPayload` (type)
162
267
 
163
268
  ```ts
@@ -167,6 +272,15 @@ export type AsrAudioPayload =
167
272
  | { pcm: ArrayBuffer | Uint8Array; request_id?: string }
168
273
  ```
169
274
 
275
+ ## `AssistantTextRendererProps` (interface)
276
+
277
+ ```ts
278
+ compact: boolean
279
+ message: ChatMessage
280
+ sessionId: string | undefined
281
+ streaming: boolean
282
+ ```
283
+
170
284
  ## `AttachAppOptions` (interface)
171
285
 
172
286
  ```ts
@@ -174,6 +288,20 @@ cli: AppCliDefinition | undefined
174
288
  getContext: () => Record<string, unknown> | Promise<Record<string, unknown>>
175
289
  ```
176
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
+
177
305
  ## `AuthResource` (class)
178
306
 
179
307
  ```ts
@@ -212,6 +340,12 @@ reason: string | null | undefined
212
340
  task: BackgroundTask | null | undefined
213
341
  ```
214
342
 
343
+ ## `BackgroundWakeNotice` (function)
344
+
345
+ ```ts
346
+ BackgroundWakeNotice: () => JSX.Element
347
+ ```
348
+
215
349
  ## `BizRole` (interface)
216
350
 
217
351
  ```ts
@@ -239,6 +373,8 @@ statusText: string
239
373
  auth: AuthResource
240
374
  blob: (method: HttpMethod, path: string) => Promise<Blob>
241
375
  buildAuthedUrl: (path: string) => string
376
+ chatGroups: ChatGroupsResource
377
+ computers: ComputersResource
242
378
  fetch: (method: HttpMethod, path: string, init?: BladeFetchInit, isRetry?: boolean) => Promise<Response>
243
379
  formData: (method: HttpMethod, path: string, form: FormData, options?: { expectOk?: boolean; onUploadProgress?: (progress: UploadProgress) => void; }) => Promise<Response>
244
380
  hasToken: () => boolean
@@ -251,10 +387,13 @@ logoutToken: () => void
251
387
  models: ModelsResource
252
388
  onSocketReplaced: (listener: () => void) => () => void
253
389
  options: BladeClientOptions
390
+ plugins: PluginsResource
391
+ requestCommand: (event: string, payload: Record<string, unknown>, timeoutMs: number) => Promise<Record<string, unknown>>
254
392
  responseFromInit: (path: string, init?: RequestInit) => Promise<Response>
255
393
  sessions: SessionsResource
256
394
  setBaseUrl: (baseUrl: string) => void
257
395
  setToken: (token: string | null) => void
396
+ siteVisits: SiteVisitsResource
258
397
  socket: () => TypedSocket
259
398
  text: (method: HttpMethod, path: string) => Promise<string>
260
399
  textFromInit: (path: string, init?: RequestInit) => Promise<string>
@@ -265,10 +404,10 @@ token: string | null
265
404
 
266
405
  ```ts
267
406
  baseUrl: string
407
+ commandTransport: ((event: string, payload: Record<string, unknown>, send: () => Promise<Record<string, unknown>>) => Promise<Record<string, unknown>>) | undefined
268
408
  fetchImpl: { (input: RequestInfo | URL, init?: RequestInit): Promise<Response>; (input: string | URL | Request, init?: RequestInit): Promise<Response>; } | undefined
269
409
  onRefreshSuccess: (() => void | Promise<void>) | undefined
270
410
  socketToken: string | (() => string | null | undefined) | undefined
271
- streamTokens: boolean | undefined
272
411
  token: string | (() => string | null | undefined) | undefined
273
412
  tokenStorage: TokenStorageMode | undefined
274
413
  ```
@@ -292,6 +431,42 @@ client: BladeClient
292
431
  buildMessageContent: (text: string, attachments: Array<{ kind: "file"; name: string; uploadedPath?: string; textContent?: string | null; mimeType?: string; }>) => MessageContent
293
432
  ```
294
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
+
458
+ ## `canToggleComputer` (function)
459
+
460
+ ```ts
461
+ canToggleComputer: (computer: SessionComputer) => boolean
462
+ ```
463
+
464
+ ## `catalogToConnectorItems` (function)
465
+
466
+ ```ts
467
+ catalogToConnectorItems: (catalog: PluginCatalogEntry[]) => PluginConnectorItem[]
468
+ ```
469
+
295
470
  ## `ChatCompletionTool` (interface)
296
471
 
297
472
  ```ts
@@ -299,12 +474,48 @@ function: { name: string; description?: string; parameters?: Record<string, unkn
299
474
  type: "function"
300
475
  ```
301
476
 
477
+ ## `ChatEnd` (interface)
478
+
479
+ ```ts
480
+ duration_ms: number
481
+ status: string
482
+ ```
483
+
484
+ ## `chatErrorForDisplay` (function)
485
+
486
+ ```ts
487
+ chatErrorForDisplay: (message: string, developer?: boolean) => string
488
+ ```
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
+
302
512
  ## `ChatMessage` (interface)
303
513
 
304
514
  ```ts
305
515
  blocks: ContentBlock[] | undefined
306
516
  compaction: CompactionInfo | undefined
307
517
  content: MessageContent
518
+ context: ContextProjectionData | undefined
308
519
  duration_ms: number | undefined
309
520
  entry_id: string | undefined
310
521
  kind: string | undefined
@@ -328,10 +539,34 @@ ChatView: (props: ChatViewProps) => JSX.Element
328
539
  ## `ChatViewClassNames` (interface)
329
540
 
330
541
  ```ts
542
+ agentLoop: string | undefined
543
+ askCard: string | undefined
544
+ askOption: string | undefined
545
+ assistantText: string | undefined
546
+ assistantTurn: string | undefined
331
547
  banner: string | undefined
332
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
333
558
  messageList: string | undefined
559
+ messagesContent: string | undefined
560
+ messagesScroll: string | undefined
561
+ planPanel: string | undefined
562
+ queuePanel: string | undefined
334
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
335
570
  ```
336
571
 
337
572
  ## `ChatViewProps` (interface)
@@ -349,6 +584,7 @@ onSessionReady: ((session: AgentSession) => void) | undefined
349
584
  placeholder: string | undefined
350
585
  renderers: ChatViewRenderers | undefined
351
586
  sessionId: string | undefined
587
+ sessionPluginControls: ((sessionId: string) => ReactNode) | undefined
352
588
  slots: ChatViewSlots | undefined
353
589
  theme: "light" | "dark" | undefined
354
590
  ```
@@ -356,7 +592,11 @@ theme: "light" | "dark" | undefined
356
592
  ## `ChatViewRenderers` (interface)
357
593
 
358
594
  ```ts
595
+ askUserQuestion: ((props: AskUserQuestionRendererProps) => ReactNode | null) | undefined
596
+ assistantText: ((props: AssistantTextRendererProps) => ReactNode | null) | undefined
597
+ planUpdate: ((props: PlanUpdateRendererProps) => ReactNode | null) | undefined
359
598
  toolCall: ToolCallRenderer | undefined
599
+ userMessage: ((props: UserMessageRendererProps) => ReactNode | null) | undefined
360
600
  ```
361
601
 
362
602
  ## `ChatViewSlots` (interface)
@@ -367,6 +607,12 @@ footer: ReactNode
367
607
  header: ReactNode
368
608
  ```
369
609
 
610
+ ## `classifyAgentComputerLaunchOutcome` (function)
611
+
612
+ ```ts
613
+ classifyAgentComputerLaunchOutcome: (toolCall: { status?: string; result?: unknown; }) => AgentComputerLaunchOutcome
614
+ ```
615
+
370
616
  ## `ClientProjectionBuilder` (class)
371
617
 
372
618
  ```ts
@@ -376,6 +622,30 @@ reset: () => void
376
622
  seedSequence: (maxSeq: number) => void
377
623
  ```
378
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
+
637
+ ## `collectMemoryRefs` (function)
638
+
639
+ ```ts
640
+ collectMemoryRefs: (messages: ChatMessage[]) => MemoryRefInfo[]
641
+ ```
642
+
643
+ ## `collectPreviewToolUiCards` (function)
644
+
645
+ ```ts
646
+ collectPreviewToolUiCards: (messages: ChatMessage[]) => PreviewToolUiCardEntry[]
647
+ ```
648
+
379
649
  ## `CommandEnvelope` (interface)
380
650
 
381
651
  ```ts
@@ -408,6 +678,57 @@ tokens_before: number | null | undefined
408
678
  trigger: "auto" | "manual" | "forced_retry" | null | undefined
409
679
  ```
410
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
+
705
+ ## `ComputersResource` (class)
706
+
707
+ ```ts
708
+ list: (sessionId: string) => Promise<SessionComputerList>
709
+ listAccount: () => Promise<AccountComputerList>
710
+ setEnabled: (sessionId: string, computer: string, enabled: boolean) => Promise<SessionComputer>
711
+ ```
712
+
713
+ ## `computerState` (function)
714
+
715
+ ```ts
716
+ computerState: (computer: SessionComputer) => ComputerState
717
+ ```
718
+
719
+ ## `ComputerState` (type)
720
+
721
+ ```ts
722
+ export type ComputerState = "primary" | "enabled" | "offline" | "idle"
723
+ ```
724
+
725
+ ## `ConfiguringPlugin` (interface)
726
+
727
+ ```ts
728
+ name: string
729
+ pendingActivation: boolean
730
+ ```
731
+
411
732
  ## `connectEmbedded` (function)
412
733
 
413
734
  ```ts
@@ -420,22 +741,141 @@ connectEmbedded: (options: EmbeddedChatOptions) => EmbeddedChat
420
741
  export type ConnectionStatus = "connecting" | "connected" | "reconnecting" | "disconnected"
421
742
  ```
422
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
+
423
766
  ## `ContentBlock` (interface)
424
767
 
425
768
  ```ts
426
769
  content: unknown
770
+ delivery_id: string | null | undefined
427
771
  display_name: string | null | undefined
428
772
  tool_call_id: string | null | undefined
429
773
  tool_name: string | null | undefined
430
774
  type: "text" | "thinking" | "tool_use" | "tool_result" | "tool_ui" | "tool_bridge" | "system_notification" | "mode_change" | "plan_status" | "ask_user_answer"
431
775
  ```
432
776
 
777
+ ## `ContentDelta` (interface)
778
+
779
+ ```ts
780
+ content: string
781
+ loop_name: string | undefined
782
+ ```
783
+
433
784
  ## `contentPreview` (function)
434
785
 
435
786
  ```ts
436
787
  contentPreview: (content: MessageContent, maxLen?: number) => string
437
788
  ```
438
789
 
790
+ ## `ContextAction` (type)
791
+
792
+ ```ts
793
+ export type ContextAction = "published" | "retained" | "removed"
794
+ ```
795
+
796
+ ## `ContextCard` (function)
797
+
798
+ ```ts
799
+ ContextCard: ({ context, className }: ContextCardProps) => JSX.Element
800
+ ```
801
+
802
+ ## `ContextCardProps` (interface)
803
+
804
+ ```ts
805
+ className: string | undefined
806
+ context: ContextProjectionData
807
+ ```
808
+
809
+ ## `ContextDisplayState` (interface)
810
+
811
+ ```ts
812
+ detail: string
813
+ isRemoved: boolean
814
+ summary: string
815
+ title: string
816
+ ```
817
+
818
+ ## `ContextGroupCard` (function)
819
+
820
+ ```ts
821
+ ContextGroupCard: ({ contexts, className }: ContextGroupCardProps) => JSX.Element | null
822
+ ```
823
+
824
+ ## `ContextGroupCardProps` (interface)
825
+
826
+ ```ts
827
+ className: string | undefined
828
+ contexts: readonly ContextProjectionData[]
829
+ ```
830
+
831
+ ## `ContextGroupDisplayState` (interface)
832
+
833
+ ```ts
834
+ count: number
835
+ summary: string
836
+ title: string
837
+ ```
838
+
839
+ ## `contextProjectionData` (function)
840
+
841
+ ```ts
842
+ contextProjectionData: (fields: ContextProjectionFields) => ContextProjectionData | null
843
+ ```
844
+
845
+ ## `ContextProjectionData` (interface)
846
+
847
+ ```ts
848
+ context_action: ContextAction
849
+ context_key: string
850
+ context_kind: string
851
+ context_name: string
852
+ context_order: number
853
+ context_revision: string
854
+ display_summary: string | null | undefined
855
+ display_title: string | null | undefined
856
+ sources: ContextSourceInfo[]
857
+ ```
858
+
859
+ ## `ContextProjectionFields` (interface)
860
+
861
+ ```ts
862
+ context_action: ContextAction | null | undefined
863
+ context_key: string | null | undefined
864
+ context_kind: string | null | undefined
865
+ context_name: string | null | undefined
866
+ context_order: number | null | undefined
867
+ context_revision: string | null | undefined
868
+ display_summary: string | null | undefined
869
+ display_title: string | null | undefined
870
+ sources: ContextSourceInfo[] | null | undefined
871
+ ```
872
+
873
+ ## `ContextSourceInfo` (type)
874
+
875
+ ```ts
876
+ export type ContextSourceInfo = Record<string, unknown>
877
+ ```
878
+
439
879
  ## `createInitialSessionState` (function)
440
880
 
441
881
  ```ts
@@ -445,7 +885,9 @@ createInitialSessionState: (sessionId: string) => SessionState
445
885
  ## `CreateSessionRequest` (interface)
446
886
 
447
887
  ```ts
888
+ agent_runtime_id: string | null | undefined
448
889
  biz_role_id: string | null | undefined
890
+ chat_group_id: string | null | undefined
449
891
  compaction_ratio: number | null | undefined
450
892
  daemon_id: string | null | undefined
451
893
  disable_tools: string[] | null | undefined
@@ -455,7 +897,7 @@ intent: string | undefined
455
897
  memory_enabled: boolean | null | undefined
456
898
  model: string | null | undefined
457
899
  primary_skill_id: string | null | undefined
458
- runtime_type: "sandbox" | "daemon" | null | undefined
900
+ runtime_type: "sandbox" | "daemon" | "native" | null | undefined
459
901
  session_solution_asset_id: string | null | undefined
460
902
  solution_id: string | undefined
461
903
  solution_ref: PublishedSolutionRef | undefined
@@ -475,6 +917,19 @@ createSocket: (options: CreateSocketOptions) => TypedSocket
475
917
  baseUrl: string
476
918
  path: string | undefined
477
919
  token: string | (() => string | null | undefined) | undefined
920
+ transports: ("polling" | "websocket")[] | undefined
921
+ ```
922
+
923
+ ## `CurrentPlanPanel` (function)
924
+
925
+ ```ts
926
+ CurrentPlanPanel: ({ messages, running, revealRevision, sessionId, className, }: { messages: ChatMessage[]; running?: boolean; revealRevision?: number; sessionId?: string; className?: string; }) => JSX.Element | null
927
+ ```
928
+
929
+ ## `DEFAULT_ALLOWED_TAGS` (const)
930
+
931
+ ```ts
932
+ DEFAULT_ALLOWED_TAGS: AllowedTags
478
933
  ```
479
934
 
480
935
  ## `DEFAULT_REPLAY_SPEED` (const)
@@ -500,6 +955,18 @@ allowedOrigins: string[]
500
955
  iframe: HTMLIFrameElement | undefined
501
956
  ```
502
957
 
958
+ ## `EMPTY_PLATFORM_ENDPOINTS` (const)
959
+
960
+ ```ts
961
+ EMPTY_PLATFORM_ENDPOINTS: PlatformEndpoints
962
+ ```
963
+
964
+ ## `EMPTY_SESSION_QUEUE` (const)
965
+
966
+ ```ts
967
+ EMPTY_SESSION_QUEUE: SessionQueueSnapshot
968
+ ```
969
+
503
970
  ## `ExchangeCodeParams` (interface)
504
971
 
505
972
  ```ts
@@ -524,6 +991,12 @@ kind: "existing"
524
991
  solutionId: string
525
992
  ```
526
993
 
994
+ ## `ExternalAnchor` (function)
995
+
996
+ ```ts
997
+ ExternalAnchor: ({ children, href, ...props }: AnchorProps) => JSX.Element
998
+ ```
999
+
527
1000
  ## `extractTextAttachments` (function)
528
1001
 
529
1002
  ```ts
@@ -548,6 +1021,12 @@ path: string
548
1021
  tags: string[] | undefined
549
1022
  ```
550
1023
 
1024
+ ## `filterConnectorItems` (function)
1025
+
1026
+ ```ts
1027
+ filterConnectorItems: (items: PluginConnectorItem[], query: string) => PluginConnectorItem[]
1028
+ ```
1029
+
551
1030
  ## `FinalArtifact` (interface)
552
1031
 
553
1032
  ```ts
@@ -601,6 +1080,18 @@ export type FollowupInteractionEvent =
601
1080
  artifactKind: "file"
602
1081
  ```
603
1082
 
1083
+ ## `getContextDisplayState` (function)
1084
+
1085
+ ```ts
1086
+ getContextDisplayState: (context: ContextProjectionData) => ContextDisplayState
1087
+ ```
1088
+
1089
+ ## `getContextGroupDisplayState` (function)
1090
+
1091
+ ```ts
1092
+ getContextGroupDisplayState: (contexts: readonly ContextProjectionData[]) => ContextGroupDisplayState
1093
+ ```
1094
+
604
1095
  ## `getFileParts` (function)
605
1096
 
606
1097
  ```ts
@@ -613,6 +1104,12 @@ getFileParts: (content: MessageContent) => FileContentPart[]
613
1104
  getImageParts: (content: MessageContent) => ImageUrlContentPart[]
614
1105
  ```
615
1106
 
1107
+ ## `getPlanUpdateDisplayState` (function)
1108
+
1109
+ ```ts
1110
+ getPlanUpdateDisplayState: (messages: ChatMessage[]) => PlanUpdateDisplayState
1111
+ ```
1112
+
616
1113
  ## `getTextContent` (function)
617
1114
 
618
1115
  ```ts
@@ -655,12 +1152,24 @@ export type GlobalSearchResultItem =
655
1152
  | GlobalSearchFileResult
656
1153
  ```
657
1154
 
1155
+ ## `groupAdjacentContextRuns` (function)
1156
+
1157
+ ```ts
1158
+ groupAdjacentContextRuns: (kinds: readonly (string | null)[]) => readonly (readonly number[])[]
1159
+ ```
1160
+
658
1161
  ## `groupMessagesByLoop` (function)
659
1162
 
660
1163
  ```ts
661
1164
  groupMessagesByLoop: (messages: ChatMessage[]) => MessageGroup[]
662
1165
  ```
663
1166
 
1167
+ ## `hasChatRunEvent` (function)
1168
+
1169
+ ```ts
1170
+ hasChatRunEvent: (events: RawEvent[]) => boolean
1171
+ ```
1172
+
664
1173
  ## `HeadlessResource` (class)
665
1174
 
666
1175
  ```ts
@@ -669,10 +1178,19 @@ runInSession: { <T = unknown>(sessionId: string, prompt: string, options: Headle
669
1178
  runWithSession: { <T = unknown>(prompt: string, options: HeadlessRunOptions & { schema: JsonSchemaObject; }): Promise<HeadlessRunInSessionResult<T>>; (prompt: string, options?: HeadlessRunOptions): Promise<HeadlessRunInSessionResult<string>>; }
670
1179
  ```
671
1180
 
1181
+ ## `HistoricalCommand` (interface)
1182
+
1183
+ ```ts
1184
+ action: string
1185
+ deliveryId: string
1186
+ payload: unknown
1187
+ toolCallId: string | undefined
1188
+ ```
1189
+
672
1190
  ## `ImageUrlContentPart` (interface)
673
1191
 
674
1192
  ```ts
675
- image_url: { url: string; }
1193
+ image_url: { url: string; source_path?: string; width?: number; height?: number; }
676
1194
  type: "image_url"
677
1195
  ```
678
1196
 
@@ -697,16 +1215,60 @@ direction: "host-to-agent"
697
1215
  payload: unknown
698
1216
  ```
699
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
+
1232
+ ## `isAgentComputerCommand` (function)
1233
+
1234
+ ```ts
1235
+ isAgentComputerCommand: (command: string) => boolean
1236
+ ```
1237
+
1238
+ ## `isAgentComputerToolCall` (function)
1239
+
1240
+ ```ts
1241
+ isAgentComputerToolCall: (argumentsJson: string | null | undefined) => boolean
1242
+ ```
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
+
700
1256
  ## `isCommandEnvelope` (function)
701
1257
 
702
1258
  ```ts
703
1259
  isCommandEnvelope: (value: unknown) => value is CommandEnvelope
704
1260
  ```
705
1261
 
1262
+ ## `isEntryGoneError` (function)
1263
+
1264
+ ```ts
1265
+ isEntryGoneError: (error: unknown) => boolean
1266
+ ```
1267
+
706
1268
  ## `isHiddenInternalMessage` (function)
707
1269
 
708
1270
  ```ts
709
- isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">) => boolean
1271
+ isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">, options?: { includeLegacyForkContext?: boolean; }) => boolean
710
1272
  ```
711
1273
 
712
1274
  ## `isInboundEnvelope` (function)
@@ -715,12 +1277,54 @@ isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">) => boo
715
1277
  isInboundEnvelope: (value: unknown) => value is InboundEnvelope
716
1278
  ```
717
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
+
1292
+ ## `isPlanUpdateTool` (function)
1293
+
1294
+ ```ts
1295
+ isPlanUpdateTool: (toolCall: Pick<ToolCallInfo, "name">) => boolean
1296
+ ```
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
+
718
1316
  ## `latestPostChatFollowup` (function)
719
1317
 
720
1318
  ```ts
721
1319
  latestPostChatFollowup: (turns: TurnProjection[]) => PostChatFollowup | null
722
1320
  ```
723
1321
 
1322
+ ## `latestUserSpeechEntryId` (function)
1323
+
1324
+ ```ts
1325
+ latestUserSpeechEntryId: (turns: TurnProjection[]) => string | null
1326
+ ```
1327
+
724
1328
  ## `LayoutType` (enum)
725
1329
 
726
1330
  ```ts
@@ -737,6 +1341,21 @@ export enum LayoutType {
737
1341
  }
738
1342
  ```
739
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
+
740
1359
  ## `LlmAdvancedSettings` (interface)
741
1360
 
742
1361
  ```ts
@@ -811,6 +1430,16 @@ baseURL: string | undefined
811
1430
  model: string | undefined
812
1431
  ```
813
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
+
814
1443
  ## `LlmToolCall` (interface)
815
1444
 
816
1445
  ```ts
@@ -819,6 +1448,20 @@ id: string
819
1448
  name: string
820
1449
  ```
821
1450
 
1451
+ ## `loadPlatformEndpoints` (function)
1452
+
1453
+ ```ts
1454
+ loadPlatformEndpoints: (options?: LoadPlatformEndpointsOptions) => Promise<PlatformEndpoints>
1455
+ ```
1456
+
1457
+ ## `LoadPlatformEndpointsOptions` (interface)
1458
+
1459
+ ```ts
1460
+ baseUrl: string | undefined
1461
+ fetchImpl: { (input: RequestInfo | URL, init?: RequestInit): Promise<Response>; (input: string | URL | Request, init?: RequestInit): Promise<Response>; } | undefined
1462
+ timeoutMs: number | undefined
1463
+ ```
1464
+
822
1465
  ## `LoginOptions` (interface)
823
1466
 
824
1467
  ```ts
@@ -834,6 +1477,16 @@ token: string
834
1477
  user: { id?: string; username?: string; display_name?: string; } | undefined
835
1478
  ```
836
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
+
837
1490
  ## `MarkdownContent` (function)
838
1491
 
839
1492
  ```ts
@@ -849,6 +1502,84 @@ mode: "streaming" | "static" | undefined
849
1502
  sessionId: string | undefined
850
1503
  ```
851
1504
 
1505
+ ## `MarkdownRenderer` (function)
1506
+
1507
+ ```ts
1508
+ MarkdownRenderer: ({ children, className, mode, allowedTags, components, rawHtmlPlugins, codeBlockOverrides, }: MarkdownRendererProps) => DetailedReactHTMLElement<{ className: string; }, HTMLElement>
1509
+ ```
1510
+
1511
+ ## `MarkdownRendererProps` (interface)
1512
+
1513
+ ```ts
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
+
852
1583
  ## `MemoryRef` (interface)
853
1584
 
854
1585
  ```ts
@@ -865,6 +1596,18 @@ id: number
865
1596
  skill_name: string | null | undefined
866
1597
  ```
867
1598
 
1599
+ ## `MemoryRefsHint` (function)
1600
+
1601
+ ```ts
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[]
1609
+ ```
1610
+
868
1611
  ## `MessageContent` (type)
869
1612
 
870
1613
  ```ts
@@ -877,6 +1620,309 @@ export type MessageContent = string | MessageContentPart[]
877
1620
  export type MessageContentPart = TextContentPart | ImageUrlContentPart | FileContentPart
878
1621
  ```
879
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
+
880
1926
  ## `ModeId` (type)
881
1927
 
882
1928
  ```ts
@@ -890,6 +1936,8 @@ baseUrl: string | undefined
890
1936
  default: string
891
1937
  defaultServiceModel: string | undefined
892
1938
  models: ModelOption[]
1939
+ unavailableModelIds: string[] | undefined
1940
+ unavailableProviderIds: string[] | undefined
893
1941
  ```
894
1942
 
895
1943
  ## `ModelOption` (interface)
@@ -906,6 +1954,12 @@ serviceModelId: string | undefined
906
1954
  list: () => Promise<ModelCatalog>
907
1955
  ```
908
1956
 
1957
+ ## `normalizeAdjacentUrlFormatting` (function)
1958
+
1959
+ ```ts
1960
+ normalizeAdjacentUrlFormatting: (value: string) => string
1961
+ ```
1962
+
909
1963
  ## `normalizeMessageContent` (function)
910
1964
 
911
1965
  ```ts
@@ -936,6 +1990,32 @@ content: string
936
1990
  label: string
937
1991
  ```
938
1992
 
1993
+ ## `ParsedWhatIfPrompt` (interface)
1994
+
1995
+ ```ts
1996
+ fromStep: number | null
1997
+ quotes: WhatIfQuote[]
1998
+ userText: string
1999
+ ```
2000
+
2001
+ ## `parsePlanUpdate` (function)
2002
+
2003
+ ```ts
2004
+ parsePlanUpdate: (argumentsJson: string) => PlanUpdateData | null
2005
+ ```
2006
+
2007
+ ## `parseQueueAck` (function)
2008
+
2009
+ ```ts
2010
+ parseQueueAck: (response: unknown, fallbackSessionId: string) => QueueOperationResult
2011
+ ```
2012
+
2013
+ ## `parseWhatIfPrompt` (function)
2014
+
2015
+ ```ts
2016
+ parseWhatIfPrompt: (text: string) => ParsedWhatIfPrompt | null
2017
+ ```
2018
+
939
2019
  ## `PatchEnvelope` (interface)
940
2020
 
941
2021
  ```ts
@@ -946,6 +2026,162 @@ sequence: number
946
2026
  turn_id: string
947
2027
  ```
948
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
+
2037
+ ## `pickCurrentPlanStep` (function)
2038
+
2039
+ ```ts
2040
+ pickCurrentPlanStep: (plan: PlanUpdateData["plan"]) => PlanUpdateData["plan"][number] | null
2041
+ ```
2042
+
2043
+ ## `PLAN_AUTO_COLLAPSE_MS` (const)
2044
+
2045
+ ```ts
2046
+ PLAN_AUTO_COLLAPSE_MS: 5000
2047
+ ```
2048
+
2049
+ ## `PlanStepStatus` (type)
2050
+
2051
+ ```ts
2052
+ export type PlanStepStatus = "pending" | "in_progress" | "completed"
2053
+ ```
2054
+
2055
+ ## `PlanUpdateBlock` (function)
2056
+
2057
+ ```ts
2058
+ PlanUpdateBlock: ({ toolCall, running, autoReveal, className, }: { toolCall: ToolCallInfo; running?: boolean; autoReveal?: boolean; className?: string; }) => JSX.Element | null
2059
+ ```
2060
+
2061
+ ## `PlanUpdateData` (interface)
2062
+
2063
+ ```ts
2064
+ plan: { step: string; status: PlanStepStatus; }[]
2065
+ ```
2066
+
2067
+ ## `PlanUpdateDisplayState` (interface)
2068
+
2069
+ ```ts
2070
+ current: ToolCallInfo | null
2071
+ updating: boolean
2072
+ ```
2073
+
2074
+ ## `PlanUpdateRendererProps` (interface)
2075
+
2076
+ ```ts
2077
+ plan: PlanUpdateData
2078
+ running: boolean
2079
+ sessionId: string | undefined
2080
+ ```
2081
+
2082
+ ## `PlatformEndpoints` (interface)
2083
+
2084
+ ```ts
2085
+ services: Partial<Record<"agent" | "os" | "hub" | "oauth" | "llmGateway" | "gitea" | "tile", string>>
2086
+ ```
2087
+
2088
+ ## `PlatformServiceName` (type)
2089
+
2090
+ ```ts
2091
+ export type PlatformServiceName = (typeof PLATFORM_SERVICE_NAMES)[number]
2092
+ ```
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
+
949
2185
  ## `PostChatFollowup` (interface)
950
2186
 
951
2187
  ```ts
@@ -976,6 +2212,21 @@ bizRoleId: string | undefined
976
2212
  kind: "prepared"
977
2213
  ```
978
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
+
979
2230
  ## `PrimarySkillParallelMode` (interface)
980
2231
 
981
2232
  ```ts
@@ -996,6 +2247,21 @@ title: string
996
2247
  version: number
997
2248
  ```
998
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
+
999
2265
  ## `ProvidersResponse` (interface)
1000
2266
 
1001
2267
  ```ts
@@ -1011,6 +2277,61 @@ export type PublishedSolutionRef =
1011
2277
  | { source: "hub"; org: string; name: string }
1012
2278
  ```
1013
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
+
1014
2335
  ## `RawEvent` (interface)
1015
2336
 
1016
2337
  ```ts
@@ -1018,12 +2339,33 @@ payload: Record<string, unknown>
1018
2339
  type: string
1019
2340
  ```
1020
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
+
1021
2357
  ## `reconcileOptimisticUserTurns` (function)
1022
2358
 
1023
2359
  ```ts
1024
2360
  reconcileOptimisticUserTurns: (currentTurns: TurnProjection[], incomingTurns: TurnProjection[]) => TurnProjection[]
1025
2361
  ```
1026
2362
 
2363
+ ## `replaceWindow` (function)
2364
+
2365
+ ```ts
2366
+ replaceWindow: (current: TurnProjection[], page: TurnProjection[], liveRevisionAtStart: number, liveRevisions: LiveRevisionState) => TurnProjection[]
2367
+ ```
2368
+
1027
2369
  ## `ReplayBar` (function)
1028
2370
 
1029
2371
  ```ts
@@ -1096,6 +2438,18 @@ speed: ReplaySpeed | undefined
1096
2438
  status: "replay" | "autonomous" | undefined
1097
2439
  ```
1098
2440
 
2441
+ ## `resolveServiceUrl` (function)
2442
+
2443
+ ```ts
2444
+ resolveServiceUrl: (endpoints: PlatformEndpoints, name: PlatformServiceName, path?: string) => string | null
2445
+ ```
2446
+
2447
+ ## `resolveToolUiCardContent` (function)
2448
+
2449
+ ```ts
2450
+ resolveToolUiCardContent: (card: ToolUiCard) => { type: ToolUiCardContentType; content: string; } | null
2451
+ ```
2452
+
1099
2453
  ## `ResultFeedback` (interface)
1100
2454
 
1101
2455
  ```ts
@@ -1142,6 +2496,17 @@ result: unknown
1142
2496
  sessionId: string
1143
2497
  ```
1144
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
+
1145
2510
  ## `RunTrace` (interface)
1146
2511
 
1147
2512
  ```ts
@@ -1163,17 +2528,66 @@ SDK_NAME: "agent-client"
1163
2528
  SDK_VERSION: string
1164
2529
  ```
1165
2530
 
2531
+ ## `selectionFromItem` (function)
2532
+
2533
+ ```ts
2534
+ selectionFromItem: (item: PluginConnectorItem) => PluginConnectorSelection
2535
+ ```
2536
+
1166
2537
  ## `SendOptions` (interface)
1167
2538
 
1168
2539
  ```ts
1169
2540
  askUserAnswer: Record<string, unknown> | undefined
2541
+ kbIds: number[] | undefined
1170
2542
  mode: string | undefined
1171
2543
  model: string | undefined
2544
+ queueWhenRunning: boolean | undefined
1172
2545
  replayDecision: "keep_replay" | "continue_replay" | undefined
1173
2546
  thinkingOverride: boolean | undefined
1174
2547
  whatif: { from_step: number; quotes: Array<Record<string, unknown>>; deprecate_entry_ids: string[]; } | undefined
1175
2548
  ```
1176
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
+
2564
+ ## `SessionComputer` (interface)
2565
+
2566
+ ```ts
2567
+ agent_runtimes: unknown[] | undefined
2568
+ allowed_paths: string[] | undefined
2569
+ arch: string | null | undefined
2570
+ blade_home: string | null | undefined
2571
+ created_at: string
2572
+ daemon_version: string | null | undefined
2573
+ enabled: boolean
2574
+ home: string | null | undefined
2575
+ hostname: string | null | undefined
2576
+ id: string
2577
+ is_primary: boolean
2578
+ label: string
2579
+ last_seen_at: string | null | undefined
2580
+ online: boolean
2581
+ os: string | null | undefined
2582
+ workspace: string | null | undefined
2583
+ ```
2584
+
2585
+ ## `SessionComputerList` (interface)
2586
+
2587
+ ```ts
2588
+ computers: SessionComputer[]
2589
+ ```
2590
+
1177
2591
  ## `SessionConfig` (interface)
1178
2592
 
1179
2593
  ```ts
@@ -1185,6 +2599,12 @@ memoryEnabled: boolean | undefined
1185
2599
  model: string | undefined
1186
2600
  ```
1187
2601
 
2602
+ ## `SessionConnectOptions` (interface)
2603
+
2604
+ ```ts
2605
+ setup: ((session: AgentSession) => void) | undefined
2606
+ ```
2607
+
1188
2608
  ## `SessionContextStats` (interface)
1189
2609
 
1190
2610
  ```ts
@@ -1205,14 +2625,18 @@ solution: SolutionDefinition | undefined
1205
2625
  ## `SessionDetail` (interface)
1206
2626
 
1207
2627
  ```ts
2628
+ agent_runtime_id: string | null | undefined
2629
+ ba_version: string | null | undefined
1208
2630
  biz_role_id: string | null | undefined
1209
2631
  bound_skill_id: string | null | undefined
2632
+ chat_group_id: string | null | undefined
1210
2633
  created_at: string
1211
2634
  daemon_id: string | null | undefined
1212
2635
  disable_tools: (string[] & string[]) | undefined
1213
2636
  enable_thinking: boolean | null | undefined
1214
2637
  env: Record<string, string> | undefined
1215
2638
  id: string
2639
+ initiator: "unknown" | "ui" | "sdk" | null | undefined
1216
2640
  intent: string
1217
2641
  is_example: boolean | undefined
1218
2642
  is_headless: boolean | undefined
@@ -1229,6 +2653,7 @@ primary_skill_id: string | null | undefined
1229
2653
  primary_skill_snapshot: PrimarySkillSnapshot | null | undefined
1230
2654
  replay_state: ReplayState | null | undefined
1231
2655
  runtime_type: string | null | undefined
2656
+ sandbox_version: string | null | undefined
1232
2657
  shared: boolean | undefined
1233
2658
  solution: Solution | null | undefined
1234
2659
  solution_id: string | null | undefined
@@ -1251,55 +2676,235 @@ tokenizer_model: string | null | undefined
1251
2676
  tools_tokens: number | null | undefined
1252
2677
  ```
1253
2678
 
1254
- ## `SessionHub` (class)
2679
+ ## `SessionHub` (class)
2680
+
2681
+ ```ts
2682
+ connect: (sessionId: string, options?: SessionConnectOptions) => Promise<AgentSession>
2683
+ disconnect: () => void
2684
+ disposeAll: () => void
2685
+ getConnection: () => ConnectionStatus
2686
+ onConnectionChange: (listener: (status: ConnectionStatus) => void) => () => void
2687
+ peek: (sessionId: string) => AgentSession | undefined
2688
+ reconnect: () => void
2689
+ ```
2690
+
2691
+ ## `SessionInfo` (type)
2692
+
2693
+ ```ts
2694
+ SessionInfo = type({
2695
+ id: "string",
2696
+ intent: "string",
2697
+ status: SessionStatus,
2698
+ created_at: "string",
2699
+ updated_at: "string",
2700
+ "shared?": "boolean",
2701
+ "memory_enabled?": "boolean",
2702
+ "is_persistent?": "boolean",
2703
+ "initiator?": "'ui' | 'sdk' | 'unknown' | null",
2704
+ "is_headless?": "boolean",
2705
+ "viewer_role?": "'owner' | 'viewer'",
2706
+ "template_id?": "string | null",
2707
+ "model?": "string | null",
2708
+ "enable_thinking?": "boolean | null",
2709
+ "solution_id?": "string | null",
2710
+ "solution_ref?": "unknown",
2711
+ "biz_role_id?": "string | null",
2712
+ "solution?": "unknown",
2713
+ "plan_summary?": "string | null",
2714
+ "primary_skill_id?": "string | null",
2715
+ // ship-attack v2:后端 engine.set_bound_skill 写入的"绑定 skill id"。
2716
+ // 未绑定 / 非 ship-attack session 为 null。
2717
+ "bound_skill_id?": "string | null",
2718
+ "replay_state?": "unknown",
2719
+ "is_pinned?": "boolean",
2720
+ "pinned_at?": "string | null",
2721
+ "is_example?": "boolean",
2722
+ "ports?": "unknown",
2723
+ "disable_tools?": "string[]",
2724
+ "runtime_type?": "string | null",
2725
+ "daemon_id?": "string | null",
2726
+ "agent_runtime_id?": "string | null",
2727
+ "workspace_path?": "string | null",
2728
+ "ba_version?": "string | null",
2729
+ "sandbox_version?": "string | null",
2730
+ "chat_group_id?": "string | null",
2731
+ "match?": "unknown",
2732
+ })
2733
+ ```
2734
+
2735
+ ## `SessionMemoryToggle` (function)
2736
+
2737
+ ```ts
2738
+ SessionMemoryToggle: ({ sessionId, enabled, client: clientProp, disabled, label, className, labelClassName, inputClassName, onSaved, onError, }: SessionMemoryToggleProps) => JSX.Element
2739
+ ```
2740
+
2741
+ ## `SessionMemoryToggleProps` (interface)
2742
+
2743
+ ```ts
2744
+ className: string | undefined
2745
+ client: BladeClient | undefined
2746
+ disabled: boolean | undefined
2747
+ enabled: boolean
2748
+ inputClassName: string | undefined
2749
+ label: string | undefined
2750
+ labelClassName: string | undefined
2751
+ onError: ((error: unknown) => void) | undefined
2752
+ onSaved: ((sessionId: string, enabled: boolean) => void) | undefined
2753
+ sessionId: string
2754
+ ```
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)
1255
2895
 
1256
2896
  ```ts
1257
- connect: (sessionId: string) => Promise<AgentSession>
1258
- disconnect: () => void
1259
- disposeAll: () => void
1260
- getConnection: () => ConnectionStatus
1261
- onConnectionChange: (listener: (status: ConnectionStatus) => void) => () => void
1262
- peek: (sessionId: string) => AgentSession | undefined
1263
- reconnect: () => void
2897
+ SessionPluginSelector: (props: SessionPluginSelectorProps) => JSX.Element
1264
2898
  ```
1265
2899
 
1266
- ## `SessionInfo` (type)
2900
+ ## `SessionPluginSelectorProps` (interface)
1267
2901
 
1268
2902
  ```ts
1269
- SessionInfo = type({
1270
- id: "string",
1271
- intent: "string",
1272
- status: SessionStatus,
1273
- created_at: "string",
1274
- updated_at: "string",
1275
- "shared?": "boolean",
1276
- "memory_enabled?": "boolean",
1277
- "is_persistent?": "boolean",
1278
- "is_headless?": "boolean",
1279
- "viewer_role?": "'owner' | 'viewer'",
1280
- "template_id?": "string | null",
1281
- "model?": "string | null",
1282
- "enable_thinking?": "boolean | null",
1283
- "solution_id?": "string | null",
1284
- "solution_ref?": "unknown",
1285
- "biz_role_id?": "string | null",
1286
- "solution?": "unknown",
1287
- "plan_summary?": "string | null",
1288
- "primary_skill_id?": "string | null",
1289
- // ship-attack v2:后端 engine.set_bound_skill 写入的"绑定 skill id"。
1290
- // 未绑定 / 非 ship-attack session 为 null。
1291
- "bound_skill_id?": "string | null",
1292
- "replay_state?": "unknown",
1293
- "is_pinned?": "boolean",
1294
- "pinned_at?": "string | null",
1295
- "is_example?": "boolean",
1296
- "ports?": "unknown",
1297
- "disable_tools?": "string[]",
1298
- "runtime_type?": "string | null",
1299
- "daemon_id?": "string | null",
1300
- "workspace_path?": "string | null",
1301
- "match?": "unknown",
1302
- })
2903
+ className: string | undefined
2904
+ client: BladeClient
2905
+ onChange: ((plugin: SessionPluginActivation) => void) | undefined
2906
+ sessionId: string
2907
+ side: "top" | "bottom" | undefined
1303
2908
  ```
1304
2909
 
1305
2910
  ## `SessionPortMapping` (interface)
@@ -1321,6 +2926,49 @@ model: string | undefined
1321
2926
  solution: SolutionRef | undefined
1322
2927
  ```
1323
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
+
1324
2972
  ## `SessionSetupError` (class)
1325
2973
 
1326
2974
  ```ts
@@ -1342,6 +2990,7 @@ export type SessionSetupStage = "solution" | "session" | "skill" | "connection"
1342
2990
 
1343
2991
  ```ts
1344
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; }>
1345
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; }>
1346
2995
  connect: (sessionId: string) => Promise<AgentSession>
1347
2996
  copyFile: (sessionId: string, filePath: string) => Promise<{ path: string; }>
@@ -1355,24 +3004,36 @@ deleteFile: (sessionId: string, filePath: string) => Promise<void>
1355
3004
  deleteSession: (sessionId: string, options?: { deleteWorkspace?: boolean; }) => Promise<{ deleted: boolean; workspace_deleted?: boolean; }>
1356
3005
  downloadFile: (sessionId: string, filePath: string, downloadName?: string) => Promise<void>
1357
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>
1358
3010
  getBackgroundTask: (sessionId: string, taskId: string, tail?: number, init?: RequestInit) => Promise<BackgroundTask>
1359
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>
1360
3014
  getReplayPreview: (sessionId: string) => Promise<ReplayPreview>
1361
3015
  getSession: (sessionId: string, init?: RequestInit) => Promise<SessionDetail>
1362
3016
  getSessionCheckpoints: (sessionId: string, init?: RequestInit) => Promise<{ nodes: CheckpointNode[]; leaf_id: string | null; }>
1363
3017
  getSessionContextStats: (sessionId: string, init?: RequestInit) => Promise<SessionContextStats>
1364
3018
  getSessionHistory: (sessionId: string, init?: RequestInit) => Promise<SessionHistory>
3019
+ getSessionPluginConfig: (sessionId: string, name: string, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1365
3020
  getSessionTasks: (sessionId: string) => Promise<Task[]>
3021
+ getSessionTurnCommands: (sessionId: string) => Promise<HistoricalCommand[]>
3022
+ getSessionTurnIndex: (sessionId: string) => Promise<SessionTurnIndex>
1366
3023
  getSessionTurns: (sessionId: string) => Promise<TurnProjection[]>
3024
+ getSessionTurnsPage: (sessionId: string, options?: SessionTurnsQuery, init?: RequestInit) => Promise<SessionTurnsPage>
1367
3025
  getSharedSession: (token: string) => Promise<TurnProjection[]>
1368
3026
  importSession: (file: File, name?: string, solutionOverride?: string | null | ImportSessionOptions) => Promise<{ session_id: string; }>
1369
3027
  listBackgroundTasks: (sessionId: string, init?: RequestInit) => Promise<BackgroundTask[]>
1370
- listDir: (sessionId: string, dirPath: string) => Promise<FileEntry[]>
3028
+ listDir: (sessionId: string, dirPath: string, showHidden?: boolean) => Promise<FileEntry[]>
1371
3029
  listResultFeedback: (sessionId: string) => Promise<ResultFeedback[]>
3030
+ listSessionPlugins: (sessionId: string, init?: RequestInit) => Promise<{ plugins: SessionPlugin[]; sync_version: number; sync_pending: boolean; }>
1372
3031
  listSessions: (template_id_prefix?: string, solution_id?: string) => Promise<SessionInfo[]>
1373
- listSessionsPaginated: (params: { limit: number; offset: number; template_id_prefix?: string; solution_id?: string; solution_registry_id?: string; q?: string; }) => Promise<PaginatedSessionsResult>
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>
1374
3033
  listSessionsWithSkillData: () => Promise<SkillDevSession[]>
3034
+ onMcpAppChanged: (sessionId: string, sourceId: string, listener: () => void) => () => void
1375
3035
  pinSession: (sessionId: string, pinned: boolean) => Promise<SessionInfo>
3036
+ prepareSessionPluginConfig: (sessionId: string, name: string, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1376
3037
  previewImport: (file: File) => Promise<ImportPreview>
1377
3038
  probeSessionUrl: (sessionId: string, url: string) => Promise<{ reachable: boolean; requires_proxy: boolean; }>
1378
3039
  putResultFeedback: (sessionId: string, assistantEntryId: string, feedback: { helpful: boolean; reason?: ResultFeedbackReason | null; }) => Promise<ResultFeedback>
@@ -1380,16 +3041,20 @@ renameFile: (sessionId: string, filePath: string, newName: string) => Promise<{
1380
3041
  revokeShare: (sessionId: string, token: string) => Promise<{ revoked: boolean; }>
1381
3042
  rewindSession: (sessionId: string, checkpointId: string) => Promise<{ id: string; content: string; }>
1382
3043
  searchOwnedContent: (params: { q: string; limit?: number; }) => Promise<GlobalSearchResult>
3044
+ sessionPluginIconUrl: (sessionId: string, name: string) => string
1383
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; }>
1384
3047
  shareFile: (sessionId: string, sourcePath: string, linkName?: string, shareFolder?: string) => Promise<{ path: string; target: string; }>
1385
3048
  startReplaySession: (sourceSessionId: string, speed?: ReplaySpeed) => Promise<{ session_id: string; }>
1386
3049
  stopBackgroundTask: (sessionId: string, taskId: string) => Promise<BackgroundTaskStopResult>
1387
3050
  switchBranch: (sessionId: string, checkpointId: string) => Promise<{ id: string; leaf_id: string; }>
1388
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>
1389
3052
  tokenizePrompt: (prompt: string, model?: string) => Promise<TokenizeResult>
3053
+ updateMcpAppContext: (sessionId: string, sourceId: string, body: McpAppContextUpdate, init?: RequestInit) => Promise<{ status: "accepted"; revision: string; }>
1390
3054
  updateReplaySession: (sessionId: string, payload: { speed?: ReplaySpeed; status?: "autonomous"; }) => Promise<{ replay_state: SessionInfo["replay_state"]; }>
1391
- updateSession: (sessionId: string, payload: { intent?: string; }) => Promise<SessionDetail>
3055
+ updateSession: (sessionId: string, payload: { intent?: string; chat_group_id?: string | null; }) => Promise<SessionDetail>
1392
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; }>
1393
3058
  updateSharing: (sessionId: string, shared: boolean) => Promise<{ shared: boolean; }>
1394
3059
  uploadFiles: (sessionId: string, dirPath: string, files: FileList | File[] | UploadFileEntry[], options?: UploadFilesOptions) => Promise<{ uploaded: string[]; failed: string[]; }>
1395
3060
  writeFile: (sessionId: string, filePath: string, content: string) => Promise<{ success: boolean; }>
@@ -1404,8 +3069,11 @@ askAnswers: Record<string, AskUserAnswerData>
1404
3069
  connection: ConnectionStatus
1405
3070
  errorMessage: string | null
1406
3071
  isStreaming: boolean
3072
+ loadingOlder: boolean
1407
3073
  messages: ChatMessage[]
1408
3074
  mode: "planning" | "executing" | null
3075
+ nextBefore: string | null
3076
+ queue: SessionQueueSnapshot
1409
3077
  replay: ReplaySnapshot | null
1410
3078
  sessionId: string
1411
3079
  status: "completed" | "failed" | "interrupted" | "running" | "created" | "waiting_for_input" | null
@@ -1421,6 +3089,44 @@ SessionStatus = type(
1421
3089
  )
1422
3090
  ```
1423
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
+
1424
3130
  ## `ShareLinkResult` (interface)
1425
3131
 
1426
3132
  ```ts
@@ -1429,13 +3135,53 @@ token: string
1429
3135
  url: string
1430
3136
  ```
1431
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
+
1432
3162
  ## `SkillDefinition` (interface)
1433
3163
 
1434
3164
  ```ts
1435
- files: TextFile[]
3165
+ files: SkillFile[]
1436
3166
  name: string
1437
3167
  ```
1438
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
+
1439
3185
  ## `SkillMentionAvailability` (interface)
1440
3186
 
1441
3187
  ```ts
@@ -1513,6 +3259,24 @@ export type SolutionDefinition =
1513
3259
  export type SolutionRef = ExistingSolutionRef | PreparedSolutionAsset
1514
3260
  ```
1515
3261
 
3262
+ ## `sortComputers` (function)
3263
+
3264
+ ```ts
3265
+ sortComputers: (computers: SessionComputer[]) => SessionComputer[]
3266
+ ```
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
+
1516
3280
  ## `Task` (type)
1517
3281
 
1518
3282
  ```ts
@@ -1573,6 +3337,25 @@ action: string
1573
3337
  payload: unknown
1574
3338
  ```
1575
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
+
1576
3359
  ## `ToolCallInfo` (interface)
1577
3360
 
1578
3361
  ```ts
@@ -1586,12 +3369,72 @@ result: unknown
1586
3369
  status: "done" | "error" | "cancelled" | "awaiting_answer" | "pending" | undefined
1587
3370
  ```
1588
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
+
1589
3388
  ## `ToolCallRenderer` (type)
1590
3389
 
1591
3390
  ```ts
1592
3391
  export type ToolCallRenderer = (info: ToolCallInfo) => ReactNode | null
1593
3392
  ```
1594
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
+
1595
3438
  ## `toReplaySnapshot` (function)
1596
3439
 
1597
3440
  ```ts
@@ -1604,6 +3447,93 @@ toReplaySnapshot: (raw: ReplayState | null | undefined) => ReplaySnapshot | null
1604
3447
  transformSlashCommand: (skillName: string, rawInput: string, { local, installed }?: SkillMentionAvailability) => string
1605
3448
  ```
1606
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
+
1607
3537
  ## `TurnProjection` (interface)
1608
3538
 
1609
3539
  ```ts
@@ -1612,13 +3542,26 @@ archived_files: ArchivedFileInfo[] | null | undefined
1612
3542
  archived_tool_calls: ArchivedToolCallInfo[] | null | undefined
1613
3543
  blocks: ContentBlock[]
1614
3544
  client_render_id: string | null | undefined
3545
+ client_request_id: string | null | undefined
1615
3546
  compaction_id: string | null | undefined
3547
+ context_action: ContextAction | null | undefined
3548
+ context_content: unknown
3549
+ context_key: string | null | undefined
3550
+ context_kind: string | null | undefined
3551
+ context_name: string | null | undefined
3552
+ context_order: number | null | undefined
3553
+ context_revision: string | null | undefined
1616
3554
  context_window: number | undefined
1617
- duration_ms: number | undefined
3555
+ display_summary: string | null | undefined
3556
+ display_title: string | null | undefined
3557
+ duration_ms: number | null | undefined
1618
3558
  failure_reason: string | null | undefined
1619
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
1620
3563
  id: string
1621
- kind: "message" | "compaction" | undefined
3564
+ kind: "message" | "context" | "compaction" | undefined
1622
3565
  loop_id: string
1623
3566
  memory_refs: MemoryRef[] | null | undefined
1624
3567
  model: string | null | undefined
@@ -1627,8 +3570,10 @@ post_chat_followup: PostChatFollowup | null | undefined
1627
3570
  role: "user" | "assistant" | "system"
1628
3571
  saved_ratio: number | null | undefined
1629
3572
  sequence: number
3573
+ sources: ContextSourceInfo[] | null | undefined
1630
3574
  started_at: string | null | undefined
1631
3575
  status: "streaming" | "completed" | "paused" | "failed" | "interrupted"
3576
+ stream_duration_ms: number | null | undefined
1632
3577
  summary_full: string | null | undefined
1633
3578
  summary_preview: string | null | undefined
1634
3579
  tokens_after: number | null | undefined
@@ -1675,6 +3620,7 @@ useAgentSession: (sessionId?: string, options?: UseAgentSessionOptions) => UseAg
1675
3620
 
1676
3621
  ```ts
1677
3622
  createOptions: CreateSessionRequest | undefined
3623
+ onSessionConnected: ((session: AgentSession) => () => void) | undefined
1678
3624
  onSessionCreated: ((sessionId: string) => void) | undefined
1679
3625
  ```
1680
3626
 
@@ -1709,6 +3655,30 @@ send: (text: string) => Promise<boolean>
1709
3655
  stop: () => void
1710
3656
  ```
1711
3657
 
3658
+ ## `useMessagePin` (function)
3659
+
3660
+ ```ts
3661
+ useMessagePin: ({ targetKey, pinTarget, isStreaming, layoutKey, getScrollElement, getContentElement, getTargetElement, getTargetScrollTop, getSpacerHeight, setSpacerHeight, stopAutoScroll, scrollToBottom, margin, }: UseMessagePinOptions) => { release: () => void; isActive: () => boolean; }
3662
+ ```
3663
+
3664
+ ## `UseMessagePinOptions` (interface)
3665
+
3666
+ ```ts
3667
+ getContentElement: (() => HTMLElement | null) | undefined
3668
+ getScrollElement: () => HTMLElement | null
3669
+ getSpacerHeight: () => number
3670
+ getTargetElement: () => HTMLElement | null
3671
+ getTargetScrollTop: ((scroll: HTMLElement) => number | null) | undefined
3672
+ isStreaming: boolean | undefined
3673
+ layoutKey: string | undefined
3674
+ margin: number | undefined
3675
+ pinTarget: boolean
3676
+ scrollToBottom: () => void
3677
+ setSpacerHeight: (height: number) => void
3678
+ stopAutoScroll: () => void
3679
+ targetKey: string | null
3680
+ ```
3681
+
1712
3682
  ## `useReplay` (function)
1713
3683
 
1714
3684
  ```ts
@@ -1743,3 +3713,74 @@ token: string
1743
3713
  username: string
1744
3714
  ```
1745
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
+
3766
+ ## `WhatIfQuote` (interface)
3767
+
3768
+ ```ts
3769
+ label: string
3770
+ snapshot: string
3771
+ stepNumber: number | null
3772
+ ```
3773
+
3774
+ ## `WhatIfUserBubble` (function)
3775
+
3776
+ ```ts
3777
+ WhatIfUserBubble: ({ parsed, onQuoteClick }: WhatIfUserBubbleProps) => JSX.Element
3778
+ ```
3779
+
3780
+ ## `WhatIfUserBubbleProps` (interface)
3781
+
3782
+ ```ts
3783
+ onQuoteClick: ((stepNumber: number) => void) | undefined
3784
+ parsed: ParsedWhatIfPrompt
3785
+ ```
3786
+