@blade-hq/agent-react 2610.0.0-beta.8 → 2610.0.0-beta.81

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 (70) hide show
  1. package/README.md +313 -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/ChatInput.d.ts +21 -1
  9. package/dist/components/ChatSurface.d.ts +133 -2
  10. package/dist/components/ChatView.d.ts +1 -1
  11. package/dist/components/ConnectorPanel.d.ts +41 -0
  12. package/dist/components/ContextCard.d.ts +20 -0
  13. package/dist/components/MarkdownContent.d.ts +17 -0
  14. package/dist/components/McpAppCard.d.ts +14 -0
  15. package/dist/components/MessageList.d.ts +38 -4
  16. package/dist/components/PlanUpdateBlock.d.ts +32 -0
  17. package/dist/components/PluginConnectorList.d.ts +47 -0
  18. package/dist/components/PluginTriggerStack.d.ts +22 -0
  19. package/dist/components/PostChatFollowupBlock.d.ts +5 -1
  20. package/dist/components/SessionMemoryToggle.d.ts +19 -0
  21. package/dist/components/SessionPluginConfigDialog.d.ts +10 -0
  22. package/dist/components/SessionPluginConfigForm.d.ts +14 -0
  23. package/dist/components/SessionPluginIcon.d.ts +30 -0
  24. package/dist/components/SessionPluginSelector.d.ts +10 -0
  25. package/dist/components/SessionQueuePanel.d.ts +74 -0
  26. package/dist/components/ToolCallBlock.d.ts +9 -3
  27. package/dist/components/ToolUiCardView.d.ts +9 -0
  28. package/dist/components/TurnNavRail.d.ts +23 -0
  29. package/dist/components/UserMessageBubble.d.ts +7 -3
  30. package/dist/components/WhatIfUserBubble.d.ts +7 -0
  31. package/dist/components/connector-panel-types.d.ts +37 -0
  32. package/dist/components/display-utils.d.ts +10 -0
  33. package/dist/components/markdown/heal-incomplete.d.ts +7 -0
  34. package/dist/components/markdown/incremental.d.ts +73 -0
  35. package/dist/components/markdown/index.d.ts +18 -0
  36. package/dist/components/markdown/parse.d.ts +19 -0
  37. package/dist/components/markdown/render.d.ts +79 -0
  38. package/dist/components/markdown/sanitize.d.ts +50 -0
  39. package/dist/components/markdown/types.d.ts +53 -0
  40. package/dist/components/plugin-config-draft.d.ts +13 -0
  41. package/dist/components/plugin-config-schema.d.ts +6 -0
  42. package/dist/components/plugin-connector.d.ts +40 -0
  43. package/dist/components/queue-panel-adjacency.d.ts +1 -0
  44. package/dist/components/use-session-plugin-activation.d.ts +40 -0
  45. package/dist/context.d.ts +1 -0
  46. package/dist/embed/blade-chat-element.d.ts +4 -3
  47. package/dist/embed/entry.d.ts +50 -0
  48. package/dist/hooks/use-agent-session.d.ts +5 -0
  49. package/dist/hooks/use-message-pin.d.ts +28 -0
  50. package/dist/hooks/use-turn-navigation.d.ts +117 -0
  51. package/dist/hooks/use-typewriter-reveal.d.ts +32 -0
  52. package/dist/index.d.ts +53 -1
  53. package/dist/index.js +58276 -2243
  54. package/dist/index.js.map +1 -1
  55. package/dist/lib/agent-computer-command.d.ts +34 -0
  56. package/dist/lib/random-id.d.ts +10 -0
  57. package/dist/lib/utils.d.ts +17 -2
  58. package/dist/lib/whatif-prompt.d.ts +18 -0
  59. package/dist/style.css +506 -401
  60. package/dist/style.full.css +517 -405
  61. package/dist/webapi-W3IB5DO4.js +2481 -0
  62. package/dist/webapi-W3IB5DO4.js.map +1 -0
  63. package/package.json +2 -2
  64. package/public-api.md +1762 -67
  65. package/dist/chunk-ZXXLY4RM.js +0 -28255
  66. package/dist/chunk-ZXXLY4RM.js.map +0 -1
  67. package/dist/highlighted-body-B3W2YXNL-YD7FAP6V.js +0 -27
  68. package/dist/highlighted-body-B3W2YXNL-YD7FAP6V.js.map +0 -1
  69. package/dist/mermaid-3ZIDBTTL-N7YKJ3SM.js +0 -8
  70. /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
+ 373 个公开声明。
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: { toolCallId: string; type: "resource-html" | "resource-uri"; 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
@@ -239,6 +367,8 @@ statusText: string
239
367
  auth: AuthResource
240
368
  blob: (method: HttpMethod, path: string) => Promise<Blob>
241
369
  buildAuthedUrl: (path: string) => string
370
+ chatGroups: ChatGroupsResource
371
+ computers: ComputersResource
242
372
  fetch: (method: HttpMethod, path: string, init?: BladeFetchInit, isRetry?: boolean) => Promise<Response>
243
373
  formData: (method: HttpMethod, path: string, form: FormData, options?: { expectOk?: boolean; onUploadProgress?: (progress: UploadProgress) => void; }) => Promise<Response>
244
374
  hasToken: () => boolean
@@ -251,10 +381,12 @@ logoutToken: () => void
251
381
  models: ModelsResource
252
382
  onSocketReplaced: (listener: () => void) => () => void
253
383
  options: BladeClientOptions
384
+ plugins: PluginsResource
254
385
  responseFromInit: (path: string, init?: RequestInit) => Promise<Response>
255
386
  sessions: SessionsResource
256
387
  setBaseUrl: (baseUrl: string) => void
257
388
  setToken: (token: string | null) => void
389
+ siteVisits: SiteVisitsResource
258
390
  socket: () => TypedSocket
259
391
  text: (method: HttpMethod, path: string) => Promise<string>
260
392
  textFromInit: (path: string, init?: RequestInit) => Promise<string>
@@ -268,7 +400,6 @@ baseUrl: string
268
400
  fetchImpl: { (input: RequestInfo | URL, init?: RequestInit): Promise<Response>; (input: string | URL | Request, init?: RequestInit): Promise<Response>; } | undefined
269
401
  onRefreshSuccess: (() => void | Promise<void>) | undefined
270
402
  socketToken: string | (() => string | null | undefined) | undefined
271
- streamTokens: boolean | undefined
272
403
  token: string | (() => string | null | undefined) | undefined
273
404
  tokenStorage: TokenStorageMode | undefined
274
405
  ```
@@ -292,6 +423,42 @@ client: BladeClient
292
423
  buildMessageContent: (text: string, attachments: Array<{ kind: "file"; name: string; uploadedPath?: string; textContent?: string | null; mimeType?: string; }>) => MessageContent
293
424
  ```
294
425
 
426
+ ## `buildToolUiCardKey` (function)
427
+
428
+ ```ts
429
+ buildToolUiCardKey: (toolCallId: string, type: ToolUiCardContentType, content: string) => string
430
+ ```
431
+
432
+ ## `canCancelQueuedMessage` (function)
433
+
434
+ ```ts
435
+ canCancelQueuedMessage: (item: QueuedMessage) => boolean
436
+ ```
437
+
438
+ ## `canDeliverQueuedMessage` (function)
439
+
440
+ ```ts
441
+ canDeliverQueuedMessage: (item: QueuedMessage) => boolean
442
+ ```
443
+
444
+ ## `canEditQueuedMessage` (function)
445
+
446
+ ```ts
447
+ canEditQueuedMessage: (item: QueuedMessage) => boolean
448
+ ```
449
+
450
+ ## `canToggleComputer` (function)
451
+
452
+ ```ts
453
+ canToggleComputer: (computer: SessionComputer) => boolean
454
+ ```
455
+
456
+ ## `catalogToConnectorItems` (function)
457
+
458
+ ```ts
459
+ catalogToConnectorItems: (catalog: PluginCatalogEntry[]) => PluginConnectorItem[]
460
+ ```
461
+
295
462
  ## `ChatCompletionTool` (interface)
296
463
 
297
464
  ```ts
@@ -299,12 +466,47 @@ function: { name: string; description?: string; parameters?: Record<string, unkn
299
466
  type: "function"
300
467
  ```
301
468
 
469
+ ## `ChatEnd` (interface)
470
+
471
+ ```ts
472
+ duration_ms: number
473
+ status: string
474
+ ```
475
+
476
+ ## `chatErrorForDisplay` (function)
477
+
478
+ ```ts
479
+ chatErrorForDisplay: (message: string, developer?: boolean) => string
480
+ ```
481
+
482
+ ## `ChatGroup` (interface)
483
+
484
+ ```ts
485
+ created_at: string
486
+ id: string
487
+ instructions: string
488
+ name: string
489
+ session_count: number
490
+ updated_at: string
491
+ workspace_path: string
492
+ ```
493
+
494
+ ## `ChatGroupsResource` (class)
495
+
496
+ ```ts
497
+ create: (payload: { name: string; instructions?: string; }) => Promise<ChatGroup>
498
+ delete: (groupId: string, options?: { deleteWorkspace?: boolean; }) => Promise<{ deleted: boolean; deleted_sessions: number; }>
499
+ list: () => Promise<ChatGroup[]>
500
+ update: (groupId: string, payload: { name?: string; instructions?: string; }) => Promise<ChatGroup>
501
+ ```
502
+
302
503
  ## `ChatMessage` (interface)
303
504
 
304
505
  ```ts
305
506
  blocks: ContentBlock[] | undefined
306
507
  compaction: CompactionInfo | undefined
307
508
  content: MessageContent
509
+ context: ContextProjectionData | undefined
308
510
  duration_ms: number | undefined
309
511
  entry_id: string | undefined
310
512
  kind: string | undefined
@@ -328,10 +530,34 @@ ChatView: (props: ChatViewProps) => JSX.Element
328
530
  ## `ChatViewClassNames` (interface)
329
531
 
330
532
  ```ts
533
+ agentLoop: string | undefined
534
+ askCard: string | undefined
535
+ askOption: string | undefined
536
+ assistantText: string | undefined
537
+ assistantTurn: string | undefined
331
538
  banner: string | undefined
332
539
  chatInput: string | undefined
540
+ empty: string | undefined
541
+ errorBar: string | undefined
542
+ errorMessage: string | undefined
543
+ fileCard: string | undefined
544
+ followup: string | undefined
545
+ followupAction: string | undefined
546
+ inputInner: string | undefined
547
+ inputToolbar: string | undefined
548
+ memoryRefs: string | undefined
333
549
  messageList: string | undefined
550
+ messagesContent: string | undefined
551
+ messagesScroll: string | undefined
552
+ planPanel: string | undefined
553
+ queuePanel: string | undefined
334
554
  root: string | undefined
555
+ scrollToBottom: string | undefined
556
+ textarea: string | undefined
557
+ thinking: string | undefined
558
+ toolRow: string | undefined
559
+ userBubble: string | undefined
560
+ userMessage: string | undefined
335
561
  ```
336
562
 
337
563
  ## `ChatViewProps` (interface)
@@ -349,6 +575,7 @@ onSessionReady: ((session: AgentSession) => void) | undefined
349
575
  placeholder: string | undefined
350
576
  renderers: ChatViewRenderers | undefined
351
577
  sessionId: string | undefined
578
+ sessionPluginControls: ((sessionId: string) => ReactNode) | undefined
352
579
  slots: ChatViewSlots | undefined
353
580
  theme: "light" | "dark" | undefined
354
581
  ```
@@ -356,7 +583,11 @@ theme: "light" | "dark" | undefined
356
583
  ## `ChatViewRenderers` (interface)
357
584
 
358
585
  ```ts
586
+ askUserQuestion: ((props: AskUserQuestionRendererProps) => ReactNode | null) | undefined
587
+ assistantText: ((props: AssistantTextRendererProps) => ReactNode | null) | undefined
588
+ planUpdate: ((props: PlanUpdateRendererProps) => ReactNode | null) | undefined
359
589
  toolCall: ToolCallRenderer | undefined
590
+ userMessage: ((props: UserMessageRendererProps) => ReactNode | null) | undefined
360
591
  ```
361
592
 
362
593
  ## `ChatViewSlots` (interface)
@@ -367,6 +598,12 @@ footer: ReactNode
367
598
  header: ReactNode
368
599
  ```
369
600
 
601
+ ## `classifyAgentComputerLaunchOutcome` (function)
602
+
603
+ ```ts
604
+ classifyAgentComputerLaunchOutcome: (toolCall: { status?: string; result?: unknown; }) => AgentComputerLaunchOutcome
605
+ ```
606
+
370
607
  ## `ClientProjectionBuilder` (class)
371
608
 
372
609
  ```ts
@@ -376,6 +613,30 @@ reset: () => void
376
613
  seedSequence: (maxSeq: number) => void
377
614
  ```
378
615
 
616
+ ## `CodeBlockOverrides` (type)
617
+
618
+ ```ts
619
+ export type CodeBlockOverrides = Record<string, ComponentType<{ code: string }>>
620
+ ```
621
+
622
+ ## `collectInlineToolUiCards` (function)
623
+
624
+ ```ts
625
+ collectInlineToolUiCards: (messages: ChatMessage[]) => InlineToolUiCardEntry[]
626
+ ```
627
+
628
+ ## `collectMemoryRefs` (function)
629
+
630
+ ```ts
631
+ collectMemoryRefs: (messages: ChatMessage[]) => MemoryRefInfo[]
632
+ ```
633
+
634
+ ## `collectPreviewToolUiCards` (function)
635
+
636
+ ```ts
637
+ collectPreviewToolUiCards: (messages: ChatMessage[]) => PreviewToolUiCardEntry[]
638
+ ```
639
+
379
640
  ## `CommandEnvelope` (interface)
380
641
 
381
642
  ```ts
@@ -408,6 +669,57 @@ tokens_before: number | null | undefined
408
669
  trigger: "auto" | "manual" | "forced_retry" | null | undefined
409
670
  ```
410
671
 
672
+ ## `computerDaemonVersion` (function)
673
+
674
+ ```ts
675
+ computerDaemonVersion: (computer: SessionComputer) => string
676
+ ```
677
+
678
+ ## `computerOS` (function)
679
+
680
+ ```ts
681
+ computerOS: (computer: SessionComputer) => ComputerOS
682
+ ```
683
+
684
+ ## `ComputerOS` (type)
685
+
686
+ ```ts
687
+ export type ComputerOS = "macos" | "windows" | "linux" | "unknown"
688
+ ```
689
+
690
+ ## `computerPlatformLabel` (function)
691
+
692
+ ```ts
693
+ computerPlatformLabel: (computer: SessionComputer) => string
694
+ ```
695
+
696
+ ## `ComputersResource` (class)
697
+
698
+ ```ts
699
+ list: (sessionId: string) => Promise<SessionComputerList>
700
+ listAccount: () => Promise<AccountComputerList>
701
+ setEnabled: (sessionId: string, computer: string, enabled: boolean) => Promise<SessionComputer>
702
+ ```
703
+
704
+ ## `computerState` (function)
705
+
706
+ ```ts
707
+ computerState: (computer: SessionComputer) => ComputerState
708
+ ```
709
+
710
+ ## `ComputerState` (type)
711
+
712
+ ```ts
713
+ export type ComputerState = "primary" | "enabled" | "offline" | "idle"
714
+ ```
715
+
716
+ ## `ConfiguringPlugin` (interface)
717
+
718
+ ```ts
719
+ name: string
720
+ pendingActivation: boolean
721
+ ```
722
+
411
723
  ## `connectEmbedded` (function)
412
724
 
413
725
  ```ts
@@ -420,22 +732,141 @@ connectEmbedded: (options: EmbeddedChatOptions) => EmbeddedChat
420
732
  export type ConnectionStatus = "connecting" | "connected" | "reconnecting" | "disconnected"
421
733
  ```
422
734
 
735
+ ## `ConnectorPanel` (function)
736
+
737
+ ```ts
738
+ ConnectorPanel: ({ client, sessionId, pendingPlugins, onPendingPluginsChange, pendingDisabledReason, onPluginsChanged, onSelectedChange, renderComputerSection, renderExternalAccounts, renderFooterActions, className, }: ConnectorPanelProps) => JSX.Element
739
+ ```
740
+
741
+ ## `ConnectorPanelProps` (interface)
742
+
743
+ ```ts
744
+ className: string | undefined
745
+ client: BladeClient
746
+ onPendingPluginsChange: ((next: PluginConnectorSelection[]) => void) | undefined
747
+ onPluginsChanged: ((plugin: SessionPluginActivation) => void) | undefined
748
+ onSelectedChange: ((items: PluginConnectorItem[]) => void) | undefined
749
+ pendingDisabledReason: string | null | undefined
750
+ pendingPlugins: PluginConnectorSelection[] | undefined
751
+ renderComputerSection: ((query: string) => ReactNode) | undefined
752
+ renderExternalAccounts: ((query: string) => ReactNode) | undefined
753
+ renderFooterActions: (() => ReactNode) | undefined
754
+ sessionId: string | null
755
+ ```
756
+
423
757
  ## `ContentBlock` (interface)
424
758
 
425
759
  ```ts
426
760
  content: unknown
761
+ delivery_id: string | null | undefined
427
762
  display_name: string | null | undefined
428
763
  tool_call_id: string | null | undefined
429
764
  tool_name: string | null | undefined
430
765
  type: "text" | "thinking" | "tool_use" | "tool_result" | "tool_ui" | "tool_bridge" | "system_notification" | "mode_change" | "plan_status" | "ask_user_answer"
431
766
  ```
432
767
 
768
+ ## `ContentDelta` (interface)
769
+
770
+ ```ts
771
+ content: string
772
+ loop_name: string | undefined
773
+ ```
774
+
433
775
  ## `contentPreview` (function)
434
776
 
435
777
  ```ts
436
778
  contentPreview: (content: MessageContent, maxLen?: number) => string
437
779
  ```
438
780
 
781
+ ## `ContextAction` (type)
782
+
783
+ ```ts
784
+ export type ContextAction = "published" | "retained" | "removed"
785
+ ```
786
+
787
+ ## `ContextCard` (function)
788
+
789
+ ```ts
790
+ ContextCard: ({ context, className }: ContextCardProps) => JSX.Element
791
+ ```
792
+
793
+ ## `ContextCardProps` (interface)
794
+
795
+ ```ts
796
+ className: string | undefined
797
+ context: ContextProjectionData
798
+ ```
799
+
800
+ ## `ContextDisplayState` (interface)
801
+
802
+ ```ts
803
+ detail: string
804
+ isRemoved: boolean
805
+ summary: string
806
+ title: string
807
+ ```
808
+
809
+ ## `ContextGroupCard` (function)
810
+
811
+ ```ts
812
+ ContextGroupCard: ({ contexts, className }: ContextGroupCardProps) => JSX.Element | null
813
+ ```
814
+
815
+ ## `ContextGroupCardProps` (interface)
816
+
817
+ ```ts
818
+ className: string | undefined
819
+ contexts: readonly ContextProjectionData[]
820
+ ```
821
+
822
+ ## `ContextGroupDisplayState` (interface)
823
+
824
+ ```ts
825
+ count: number
826
+ summary: string
827
+ title: string
828
+ ```
829
+
830
+ ## `contextProjectionData` (function)
831
+
832
+ ```ts
833
+ contextProjectionData: (fields: ContextProjectionFields) => ContextProjectionData | null
834
+ ```
835
+
836
+ ## `ContextProjectionData` (interface)
837
+
838
+ ```ts
839
+ context_action: ContextAction
840
+ context_key: string
841
+ context_kind: string
842
+ context_name: string
843
+ context_order: number
844
+ context_revision: string
845
+ display_summary: string | null | undefined
846
+ display_title: string | null | undefined
847
+ sources: ContextSourceInfo[]
848
+ ```
849
+
850
+ ## `ContextProjectionFields` (interface)
851
+
852
+ ```ts
853
+ context_action: ContextAction | null | undefined
854
+ context_key: string | null | undefined
855
+ context_kind: string | null | undefined
856
+ context_name: string | null | undefined
857
+ context_order: number | null | undefined
858
+ context_revision: string | null | undefined
859
+ display_summary: string | null | undefined
860
+ display_title: string | null | undefined
861
+ sources: ContextSourceInfo[] | null | undefined
862
+ ```
863
+
864
+ ## `ContextSourceInfo` (type)
865
+
866
+ ```ts
867
+ export type ContextSourceInfo = Record<string, unknown>
868
+ ```
869
+
439
870
  ## `createInitialSessionState` (function)
440
871
 
441
872
  ```ts
@@ -445,7 +876,9 @@ createInitialSessionState: (sessionId: string) => SessionState
445
876
  ## `CreateSessionRequest` (interface)
446
877
 
447
878
  ```ts
879
+ agent_runtime_id: string | null | undefined
448
880
  biz_role_id: string | null | undefined
881
+ chat_group_id: string | null | undefined
449
882
  compaction_ratio: number | null | undefined
450
883
  daemon_id: string | null | undefined
451
884
  disable_tools: string[] | null | undefined
@@ -455,7 +888,7 @@ intent: string | undefined
455
888
  memory_enabled: boolean | null | undefined
456
889
  model: string | null | undefined
457
890
  primary_skill_id: string | null | undefined
458
- runtime_type: "sandbox" | "daemon" | null | undefined
891
+ runtime_type: "sandbox" | "daemon" | "native" | null | undefined
459
892
  session_solution_asset_id: string | null | undefined
460
893
  solution_id: string | undefined
461
894
  solution_ref: PublishedSolutionRef | undefined
@@ -477,6 +910,18 @@ path: string | undefined
477
910
  token: string | (() => string | null | undefined) | undefined
478
911
  ```
479
912
 
913
+ ## `CurrentPlanPanel` (function)
914
+
915
+ ```ts
916
+ CurrentPlanPanel: ({ messages, running, revealRevision, sessionId, className, }: { messages: ChatMessage[]; running?: boolean; revealRevision?: number; sessionId?: string; className?: string; }) => JSX.Element | null
917
+ ```
918
+
919
+ ## `DEFAULT_ALLOWED_TAGS` (const)
920
+
921
+ ```ts
922
+ DEFAULT_ALLOWED_TAGS: AllowedTags
923
+ ```
924
+
480
925
  ## `DEFAULT_REPLAY_SPEED` (const)
481
926
 
482
927
  ```ts
@@ -500,6 +945,18 @@ allowedOrigins: string[]
500
945
  iframe: HTMLIFrameElement | undefined
501
946
  ```
502
947
 
948
+ ## `EMPTY_PLATFORM_ENDPOINTS` (const)
949
+
950
+ ```ts
951
+ EMPTY_PLATFORM_ENDPOINTS: PlatformEndpoints
952
+ ```
953
+
954
+ ## `EMPTY_SESSION_QUEUE` (const)
955
+
956
+ ```ts
957
+ EMPTY_SESSION_QUEUE: SessionQueueSnapshot
958
+ ```
959
+
503
960
  ## `ExchangeCodeParams` (interface)
504
961
 
505
962
  ```ts
@@ -524,6 +981,12 @@ kind: "existing"
524
981
  solutionId: string
525
982
  ```
526
983
 
984
+ ## `ExternalAnchor` (function)
985
+
986
+ ```ts
987
+ ExternalAnchor: ({ children, href, ...props }: AnchorProps) => JSX.Element
988
+ ```
989
+
527
990
  ## `extractTextAttachments` (function)
528
991
 
529
992
  ```ts
@@ -548,6 +1011,12 @@ path: string
548
1011
  tags: string[] | undefined
549
1012
  ```
550
1013
 
1014
+ ## `filterConnectorItems` (function)
1015
+
1016
+ ```ts
1017
+ filterConnectorItems: (items: PluginConnectorItem[], query: string) => PluginConnectorItem[]
1018
+ ```
1019
+
551
1020
  ## `FinalArtifact` (interface)
552
1021
 
553
1022
  ```ts
@@ -601,16 +1070,34 @@ export type FollowupInteractionEvent =
601
1070
  artifactKind: "file"
602
1071
  ```
603
1072
 
604
- ## `getFileParts` (function)
1073
+ ## `getContextDisplayState` (function)
605
1074
 
606
1075
  ```ts
607
- getFileParts: (content: MessageContent) => FileContentPart[]
1076
+ getContextDisplayState: (context: ContextProjectionData) => ContextDisplayState
608
1077
  ```
609
1078
 
610
- ## `getImageParts` (function)
1079
+ ## `getContextGroupDisplayState` (function)
611
1080
 
612
1081
  ```ts
613
- getImageParts: (content: MessageContent) => ImageUrlContentPart[]
1082
+ getContextGroupDisplayState: (contexts: readonly ContextProjectionData[]) => ContextGroupDisplayState
1083
+ ```
1084
+
1085
+ ## `getFileParts` (function)
1086
+
1087
+ ```ts
1088
+ getFileParts: (content: MessageContent) => FileContentPart[]
1089
+ ```
1090
+
1091
+ ## `getImageParts` (function)
1092
+
1093
+ ```ts
1094
+ getImageParts: (content: MessageContent) => ImageUrlContentPart[]
1095
+ ```
1096
+
1097
+ ## `getPlanUpdateDisplayState` (function)
1098
+
1099
+ ```ts
1100
+ getPlanUpdateDisplayState: (messages: ChatMessage[]) => PlanUpdateDisplayState
614
1101
  ```
615
1102
 
616
1103
  ## `getTextContent` (function)
@@ -655,12 +1142,24 @@ export type GlobalSearchResultItem =
655
1142
  | GlobalSearchFileResult
656
1143
  ```
657
1144
 
1145
+ ## `groupAdjacentContextRuns` (function)
1146
+
1147
+ ```ts
1148
+ groupAdjacentContextRuns: (kinds: readonly (string | null)[]) => readonly (readonly number[])[]
1149
+ ```
1150
+
658
1151
  ## `groupMessagesByLoop` (function)
659
1152
 
660
1153
  ```ts
661
1154
  groupMessagesByLoop: (messages: ChatMessage[]) => MessageGroup[]
662
1155
  ```
663
1156
 
1157
+ ## `hasChatRunEvent` (function)
1158
+
1159
+ ```ts
1160
+ hasChatRunEvent: (events: RawEvent[]) => boolean
1161
+ ```
1162
+
664
1163
  ## `HeadlessResource` (class)
665
1164
 
666
1165
  ```ts
@@ -669,6 +1168,15 @@ runInSession: { <T = unknown>(sessionId: string, prompt: string, options: Headle
669
1168
  runWithSession: { <T = unknown>(prompt: string, options: HeadlessRunOptions & { schema: JsonSchemaObject; }): Promise<HeadlessRunInSessionResult<T>>; (prompt: string, options?: HeadlessRunOptions): Promise<HeadlessRunInSessionResult<string>>; }
670
1169
  ```
671
1170
 
1171
+ ## `HistoricalCommand` (interface)
1172
+
1173
+ ```ts
1174
+ action: string
1175
+ deliveryId: string
1176
+ payload: unknown
1177
+ toolCallId: string | undefined
1178
+ ```
1179
+
672
1180
  ## `ImageUrlContentPart` (interface)
673
1181
 
674
1182
  ```ts
@@ -697,16 +1205,54 @@ direction: "host-to-agent"
697
1205
  payload: unknown
698
1206
  ```
699
1207
 
1208
+ ## `inferToolStatus` (function)
1209
+
1210
+ ```ts
1211
+ inferToolStatus: (resultStr: string) => "done" | "error" | "cancelled"
1212
+ ```
1213
+
1214
+ ## `InlineToolUiCardEntry` (interface)
1215
+
1216
+ ```ts
1217
+ card: ToolUiCard
1218
+ key: string
1219
+ toolCallId: string
1220
+ ```
1221
+
1222
+ ## `isAgentComputerCommand` (function)
1223
+
1224
+ ```ts
1225
+ isAgentComputerCommand: (command: string) => boolean
1226
+ ```
1227
+
1228
+ ## `isAgentComputerToolCall` (function)
1229
+
1230
+ ```ts
1231
+ isAgentComputerToolCall: (argumentsJson: string | null | undefined) => boolean
1232
+ ```
1233
+
1234
+ ## `isAppDevToolUiCard` (function)
1235
+
1236
+ ```ts
1237
+ isAppDevToolUiCard: (card: ToolUiCard, isAppDev: boolean) => boolean
1238
+ ```
1239
+
700
1240
  ## `isCommandEnvelope` (function)
701
1241
 
702
1242
  ```ts
703
1243
  isCommandEnvelope: (value: unknown) => value is CommandEnvelope
704
1244
  ```
705
1245
 
1246
+ ## `isEntryGoneError` (function)
1247
+
1248
+ ```ts
1249
+ isEntryGoneError: (error: unknown) => boolean
1250
+ ```
1251
+
706
1252
  ## `isHiddenInternalMessage` (function)
707
1253
 
708
1254
  ```ts
709
- isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">) => boolean
1255
+ isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">, options?: { includeLegacyForkContext?: boolean; }) => boolean
710
1256
  ```
711
1257
 
712
1258
  ## `isInboundEnvelope` (function)
@@ -715,12 +1261,54 @@ isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">) => boo
715
1261
  isInboundEnvelope: (value: unknown) => value is InboundEnvelope
716
1262
  ```
717
1263
 
1264
+ ## `isInternalStatusToolUiCard` (function)
1265
+
1266
+ ```ts
1267
+ isInternalStatusToolUiCard: (card: { title?: string | null; } | null) => boolean
1268
+ ```
1269
+
1270
+ ## `isMcpAppData` (function)
1271
+
1272
+ ```ts
1273
+ isMcpAppData: (value: unknown) => value is McpAppData
1274
+ ```
1275
+
1276
+ ## `isPlanUpdateTool` (function)
1277
+
1278
+ ```ts
1279
+ isPlanUpdateTool: (toolCall: Pick<ToolCallInfo, "name">) => boolean
1280
+ ```
1281
+
1282
+ ## `isQueuePanelVisible` (function)
1283
+
1284
+ ```ts
1285
+ isQueuePanelVisible: (snapshot: Pick<SessionQueueSnapshot, "items" | "paused">, notice: string | null | undefined, editing?: boolean) => boolean
1286
+ ```
1287
+
1288
+ ## `isSessionQueueSnapshot` (function)
1289
+
1290
+ ```ts
1291
+ isSessionQueueSnapshot: (value: unknown) => value is SessionQueueSnapshot
1292
+ ```
1293
+
1294
+ ## `isToolUiCard` (function)
1295
+
1296
+ ```ts
1297
+ isToolUiCard: (value: unknown) => value is ToolUiCard
1298
+ ```
1299
+
718
1300
  ## `latestPostChatFollowup` (function)
719
1301
 
720
1302
  ```ts
721
1303
  latestPostChatFollowup: (turns: TurnProjection[]) => PostChatFollowup | null
722
1304
  ```
723
1305
 
1306
+ ## `latestUserSpeechEntryId` (function)
1307
+
1308
+ ```ts
1309
+ latestUserSpeechEntryId: (turns: TurnProjection[]) => string | null
1310
+ ```
1311
+
724
1312
  ## `LayoutType` (enum)
725
1313
 
726
1314
  ```ts
@@ -737,6 +1325,21 @@ export enum LayoutType {
737
1325
  }
738
1326
  ```
739
1327
 
1328
+ ## `LinkSafetyConfig` (interface)
1329
+
1330
+ ```ts
1331
+ enabled: boolean
1332
+ onLinkCheck: ((url: string) => Promise<boolean> | boolean) | undefined
1333
+ renderModal: ((props: { isOpen: boolean; onClose: () => void; onConfirm: () => void; url: string; }) => ReactNode) | undefined
1334
+ ```
1335
+
1336
+ ## `LiveRevisionState` (interface)
1337
+
1338
+ ```ts
1339
+ byTurnId: ReadonlyMap<string, number>
1340
+ current: number
1341
+ ```
1342
+
740
1343
  ## `LlmAdvancedSettings` (interface)
741
1344
 
742
1345
  ```ts
@@ -811,6 +1414,16 @@ baseURL: string | undefined
811
1414
  model: string | undefined
812
1415
  ```
813
1416
 
1417
+ ## `LlmResponseDone` (interface)
1418
+
1419
+ ```ts
1420
+ content: string | null | undefined
1421
+ loop_name: string | undefined
1422
+ reasoning: string | null | undefined
1423
+ role: string
1424
+ tool_calls: { id: string; function: { name: string; arguments: string; }; }[] | undefined
1425
+ ```
1426
+
814
1427
  ## `LlmToolCall` (interface)
815
1428
 
816
1429
  ```ts
@@ -819,6 +1432,20 @@ id: string
819
1432
  name: string
820
1433
  ```
821
1434
 
1435
+ ## `loadPlatformEndpoints` (function)
1436
+
1437
+ ```ts
1438
+ loadPlatformEndpoints: (options?: LoadPlatformEndpointsOptions) => Promise<PlatformEndpoints>
1439
+ ```
1440
+
1441
+ ## `LoadPlatformEndpointsOptions` (interface)
1442
+
1443
+ ```ts
1444
+ baseUrl: string | undefined
1445
+ fetchImpl: { (input: RequestInfo | URL, init?: RequestInit): Promise<Response>; (input: string | URL | Request, init?: RequestInit): Promise<Response>; } | undefined
1446
+ timeoutMs: number | undefined
1447
+ ```
1448
+
822
1449
  ## `LoginOptions` (interface)
823
1450
 
824
1451
  ```ts
@@ -834,6 +1461,16 @@ token: string
834
1461
  user: { id?: string; username?: string; display_name?: string; } | undefined
835
1462
  ```
836
1463
 
1464
+ ## `MarkdownComponents` (type)
1465
+
1466
+ ```ts
1467
+ export type MarkdownComponents = {
1468
+ [Key in keyof JSX.IntrinsicElements]?: ComponentType<JSX.IntrinsicElements[Key]>
1469
+ } & {
1470
+ [tagName: string]: ComponentType<Record<string, unknown>> | undefined
1471
+ }
1472
+ ```
1473
+
837
1474
  ## `MarkdownContent` (function)
838
1475
 
839
1476
  ```ts
@@ -849,6 +1486,84 @@ mode: "streaming" | "static" | undefined
849
1486
  sessionId: string | undefined
850
1487
  ```
851
1488
 
1489
+ ## `MarkdownRenderer` (function)
1490
+
1491
+ ```ts
1492
+ MarkdownRenderer: ({ children, className, mode, allowedTags, components, rawHtmlPlugins, codeBlockOverrides, }: MarkdownRendererProps) => DetailedReactHTMLElement<{ className: string; }, HTMLElement>
1493
+ ```
1494
+
1495
+ ## `MarkdownRendererProps` (interface)
1496
+
1497
+ ```ts
1498
+ allowedTags: AllowedTags | undefined
1499
+ children: string
1500
+ className: string | undefined
1501
+ codeBlockOverrides: CodeBlockOverrides | undefined
1502
+ components: MarkdownComponents | undefined
1503
+ linkSafety: LinkSafetyConfig | undefined
1504
+ mode: "streaming" | "static" | undefined
1505
+ rawHtmlPlugins: RawHtmlPlugin[] | undefined
1506
+ sessionId: string | undefined
1507
+ ```
1508
+
1509
+ ## `McpAppArchive` (interface)
1510
+
1511
+ ```ts
1512
+ html: string
1513
+ mimeType: string
1514
+ plugin: string
1515
+ previousToolInput: Record<string, unknown> | undefined
1516
+ previousToolResult: Record<string, unknown> | undefined
1517
+ resourceMeta: Record<string, unknown>
1518
+ resourceUri: string
1519
+ sourceId: string
1520
+ toolInput: Record<string, unknown>
1521
+ toolResult: Record<string, unknown>
1522
+ ```
1523
+
1524
+ ## `McpAppCard` (function)
1525
+
1526
+ ```ts
1527
+ McpAppCard: ({ sessionId, sourceId, client: suppliedClient, onMessage: suppliedOnMessage }: { sessionId: string; sourceId: string; client?: BladeClient; onMessage?: (message: McpAppMessage) => void; }) => JSX.Element
1528
+ ```
1529
+
1530
+ ## `McpAppContextState` (interface)
1531
+
1532
+ ```ts
1533
+ content: string
1534
+ plugin: string | null
1535
+ revision: string
1536
+ server_alias: string | null
1537
+ ```
1538
+
1539
+ ## `McpAppContextUpdate` (interface)
1540
+
1541
+ ```ts
1542
+ content: string
1543
+ expected_revision: string | null
1544
+ request_id: string
1545
+ ```
1546
+
1547
+ ## `McpAppData` (interface)
1548
+
1549
+ ```ts
1550
+ mimeType: string
1551
+ resourceMeta: Record<string, unknown>
1552
+ resourceUri: string
1553
+ sourceId: string
1554
+ toolInput: Record<string, unknown>
1555
+ toolResult: Record<string, unknown>
1556
+ ```
1557
+
1558
+ ## `McpAppMessage` (interface)
1559
+
1560
+ ```ts
1561
+ content: string
1562
+ label: string
1563
+ sessionId: string
1564
+ sourceId: string
1565
+ ```
1566
+
852
1567
  ## `MemoryRef` (interface)
853
1568
 
854
1569
  ```ts
@@ -865,6 +1580,18 @@ id: number
865
1580
  skill_name: string | null | undefined
866
1581
  ```
867
1582
 
1583
+ ## `MemoryRefsHint` (function)
1584
+
1585
+ ```ts
1586
+ MemoryRefsHint: ({ refs, className }: { refs: MemoryRefInfo[]; className?: string; }) => JSX.Element
1587
+ ```
1588
+
1589
+ ## `mergeConnectorItems` (function)
1590
+
1591
+ ```ts
1592
+ mergeConnectorItems: (sessionPlugins: SessionPlugin[], catalog: PluginCatalogEntry[] | null) => PluginConnectorItem[]
1593
+ ```
1594
+
868
1595
  ## `MessageContent` (type)
869
1596
 
870
1597
  ```ts
@@ -890,6 +1617,8 @@ baseUrl: string | undefined
890
1617
  default: string
891
1618
  defaultServiceModel: string | undefined
892
1619
  models: ModelOption[]
1620
+ unavailableModelIds: string[] | undefined
1621
+ unavailableProviderIds: string[] | undefined
893
1622
  ```
894
1623
 
895
1624
  ## `ModelOption` (interface)
@@ -906,6 +1635,12 @@ serviceModelId: string | undefined
906
1635
  list: () => Promise<ModelCatalog>
907
1636
  ```
908
1637
 
1638
+ ## `normalizeAdjacentUrlFormatting` (function)
1639
+
1640
+ ```ts
1641
+ normalizeAdjacentUrlFormatting: (value: string) => string
1642
+ ```
1643
+
909
1644
  ## `normalizeMessageContent` (function)
910
1645
 
911
1646
  ```ts
@@ -936,6 +1671,32 @@ content: string
936
1671
  label: string
937
1672
  ```
938
1673
 
1674
+ ## `ParsedWhatIfPrompt` (interface)
1675
+
1676
+ ```ts
1677
+ fromStep: number | null
1678
+ quotes: WhatIfQuote[]
1679
+ userText: string
1680
+ ```
1681
+
1682
+ ## `parsePlanUpdate` (function)
1683
+
1684
+ ```ts
1685
+ parsePlanUpdate: (argumentsJson: string) => PlanUpdateData | null
1686
+ ```
1687
+
1688
+ ## `parseQueueAck` (function)
1689
+
1690
+ ```ts
1691
+ parseQueueAck: (response: unknown, fallbackSessionId: string) => QueueOperationResult
1692
+ ```
1693
+
1694
+ ## `parseWhatIfPrompt` (function)
1695
+
1696
+ ```ts
1697
+ parseWhatIfPrompt: (text: string) => ParsedWhatIfPrompt | null
1698
+ ```
1699
+
939
1700
  ## `PatchEnvelope` (interface)
940
1701
 
941
1702
  ```ts
@@ -946,6 +1707,162 @@ sequence: number
946
1707
  turn_id: string
947
1708
  ```
948
1709
 
1710
+ ## `PendingQuestionRef` (interface)
1711
+
1712
+ ```ts
1713
+ child_loop_name: string
1714
+ child_tool_call_id: string
1715
+ description: string | null | undefined
1716
+ ```
1717
+
1718
+ ## `pickCurrentPlanStep` (function)
1719
+
1720
+ ```ts
1721
+ pickCurrentPlanStep: (plan: PlanUpdateData["plan"]) => PlanUpdateData["plan"][number] | null
1722
+ ```
1723
+
1724
+ ## `PLAN_AUTO_COLLAPSE_MS` (const)
1725
+
1726
+ ```ts
1727
+ PLAN_AUTO_COLLAPSE_MS: 5000
1728
+ ```
1729
+
1730
+ ## `PlanStepStatus` (type)
1731
+
1732
+ ```ts
1733
+ export type PlanStepStatus = "pending" | "in_progress" | "completed"
1734
+ ```
1735
+
1736
+ ## `PlanUpdateBlock` (function)
1737
+
1738
+ ```ts
1739
+ PlanUpdateBlock: ({ toolCall, running, autoReveal, className, }: { toolCall: ToolCallInfo; running?: boolean; autoReveal?: boolean; className?: string; }) => JSX.Element | null
1740
+ ```
1741
+
1742
+ ## `PlanUpdateData` (interface)
1743
+
1744
+ ```ts
1745
+ plan: { step: string; status: PlanStepStatus; }[]
1746
+ ```
1747
+
1748
+ ## `PlanUpdateDisplayState` (interface)
1749
+
1750
+ ```ts
1751
+ current: ToolCallInfo | null
1752
+ updating: boolean
1753
+ ```
1754
+
1755
+ ## `PlanUpdateRendererProps` (interface)
1756
+
1757
+ ```ts
1758
+ plan: PlanUpdateData
1759
+ running: boolean
1760
+ sessionId: string | undefined
1761
+ ```
1762
+
1763
+ ## `PlatformEndpoints` (interface)
1764
+
1765
+ ```ts
1766
+ services: Partial<Record<"agent" | "os" | "hub" | "oauth" | "llmGateway" | "gitea" | "tile", string>>
1767
+ ```
1768
+
1769
+ ## `PlatformServiceName` (type)
1770
+
1771
+ ```ts
1772
+ export type PlatformServiceName = (typeof PLATFORM_SERVICE_NAMES)[number]
1773
+ ```
1774
+
1775
+ ## `PluginCatalogEntry` (interface)
1776
+
1777
+ ```ts
1778
+ display_name: string | null
1779
+ icon: string | null
1780
+ installed: boolean
1781
+ name: string
1782
+ ```
1783
+
1784
+ ## `PluginConnectorItem` (interface)
1785
+
1786
+ ```ts
1787
+ active: boolean
1788
+ config: SessionPluginConfigSummary | undefined
1789
+ display_name: string | null
1790
+ icon: string | null
1791
+ iconSource: "account" | "session"
1792
+ installed: boolean | null
1793
+ name: string
1794
+ projected: boolean
1795
+ reason: string | null | undefined
1796
+ status: string
1797
+ ```
1798
+
1799
+ ## `PluginConnectorList` (function)
1800
+
1801
+ ```ts
1802
+ PluginConnectorList: ({ client, sessionId, items, inFlight, busy, mutationError, onToggle, onRetry, onEditConfig, configuring, onConfigSaved, onConfigClose, disabledReason, unavailableText, emptyText, draft, }: PluginConnectorListProps) => JSX.Element
1803
+ ```
1804
+
1805
+ ## `PluginConnectorListProps` (interface)
1806
+
1807
+ ```ts
1808
+ busy: boolean
1809
+ client: BladeClient
1810
+ configuring: ConfiguringPlugin | null
1811
+ disabledReason: string | null | undefined
1812
+ draft: boolean | undefined
1813
+ emptyText: string
1814
+ inFlight: Record<string, true>
1815
+ items: PluginConnectorItem[]
1816
+ mutationError: boolean
1817
+ onConfigClose: () => void
1818
+ onConfigSaved: (state: SessionPluginConfigState) => void
1819
+ onEditConfig: (item: PluginConnectorItem) => void
1820
+ onRetry: (item: PluginConnectorItem) => void
1821
+ onToggle: (item: PluginConnectorItem, next: boolean) => void
1822
+ sessionId: string | null
1823
+ unavailableText: string | null | undefined
1824
+ ```
1825
+
1826
+ ## `PluginConnectorSelection` (interface)
1827
+
1828
+ ```ts
1829
+ displayName: string | null
1830
+ icon: string | null
1831
+ iconSource: "account" | "session"
1832
+ name: string
1833
+ ```
1834
+
1835
+ ## `PluginsResource` (class)
1836
+
1837
+ ```ts
1838
+ catalog: (init?: RequestInit) => Promise<{ plugins: PluginCatalogEntry[]; }>
1839
+ fetchIcon: (name: string) => Promise<Blob>
1840
+ iconUrl: (name: string) => string
1841
+ ```
1842
+
1843
+ ## `PluginTriggerStack` (function)
1844
+
1845
+ ```ts
1846
+ PluginTriggerStack: ({ client, sessionId, summary, className }: PluginTriggerStackProps) => JSX.Element | null
1847
+ ```
1848
+
1849
+ ## `PluginTriggerStackProps` (interface)
1850
+
1851
+ ```ts
1852
+ className: string | undefined
1853
+ client: BladeClient
1854
+ sessionId: string | null
1855
+ summary: TriggerSummary
1856
+ ```
1857
+
1858
+ ## `PollingBackoff` (class)
1859
+
1860
+ ```ts
1861
+ failed: (error: unknown) => void
1862
+ reset: () => void
1863
+ waitMs: () => number | false
1864
+ ```
1865
+
949
1866
  ## `PostChatFollowup` (interface)
950
1867
 
951
1868
  ```ts
@@ -976,6 +1893,21 @@ bizRoleId: string | undefined
976
1893
  kind: "prepared"
977
1894
  ```
978
1895
 
1896
+ ## `prependOlder` (function)
1897
+
1898
+ ```ts
1899
+ prependOlder: (current: TurnProjection[], page: TurnProjection[]) => TurnProjection[]
1900
+ ```
1901
+
1902
+ ## `PreviewToolUiCardEntry` (interface)
1903
+
1904
+ ```ts
1905
+ blocks: ContentBlock[]
1906
+ card: ToolUiCard
1907
+ key: string
1908
+ toolCall: ToolCallInfo
1909
+ ```
1910
+
979
1911
  ## `PrimarySkillParallelMode` (interface)
980
1912
 
981
1913
  ```ts
@@ -996,6 +1928,21 @@ title: string
996
1928
  version: number
997
1929
  ```
998
1930
 
1931
+ ## `PrimarySkillStageSpec` (interface)
1932
+
1933
+ ```ts
1934
+ id: string
1935
+ name: string
1936
+ steps: PrimarySkillStepSpec[]
1937
+ ```
1938
+
1939
+ ## `PrimarySkillStepSpec` (interface)
1940
+
1941
+ ```ts
1942
+ label: string
1943
+ n: number
1944
+ ```
1945
+
999
1946
  ## `ProvidersResponse` (interface)
1000
1947
 
1001
1948
  ```ts
@@ -1011,6 +1958,61 @@ export type PublishedSolutionRef =
1011
1958
  | { source: "hub"; org: string; name: string }
1012
1959
  ```
1013
1960
 
1961
+ ## `QueueAck` (interface)
1962
+
1963
+ ```ts
1964
+ items: QueuedMessage[] | undefined
1965
+ message: string | null | undefined
1966
+ pause_reason: string | null | undefined
1967
+ paused: boolean | undefined
1968
+ revision: number | undefined
1969
+ running: boolean | undefined
1970
+ session_id: string | undefined
1971
+ status: "error" | "ok" | "conflict" | "queued"
1972
+ ```
1973
+
1974
+ ## `QueuedMessage` (interface)
1975
+
1976
+ ```ts
1977
+ content: string
1978
+ created_at: string
1979
+ error: string | undefined
1980
+ id: string
1981
+ position: number
1982
+ status: QueuedMessageStatus
1983
+ target_run_id: string | undefined
1984
+ updated_at: string
1985
+ version: number
1986
+ ```
1987
+
1988
+ ## `QueuedMessageStatus` (type)
1989
+
1990
+ ```ts
1991
+ export type QueuedMessageStatus = "pending" | "delivering" | "claimed" | "consumed" | "cancelled"
1992
+ ```
1993
+
1994
+ ## `queuedMessageStatusLabel` (function)
1995
+
1996
+ ```ts
1997
+ queuedMessageStatusLabel: (status: QueuedMessageStatus) => string
1998
+ ```
1999
+
2000
+ ## `QueueOperationResult` (interface)
2001
+
2002
+ ```ts
2003
+ code: string | undefined
2004
+ conflict: boolean
2005
+ message: string | null
2006
+ ok: boolean
2007
+ snapshot: SessionQueueSnapshot | null
2008
+ ```
2009
+
2010
+ ## `queuePauseReasonLabel` (function)
2011
+
2012
+ ```ts
2013
+ queuePauseReasonLabel: (reason: string | null | undefined) => string | null
2014
+ ```
2015
+
1014
2016
  ## `RawEvent` (interface)
1015
2017
 
1016
2018
  ```ts
@@ -1018,12 +2020,33 @@ payload: Record<string, unknown>
1018
2020
  type: string
1019
2021
  ```
1020
2022
 
2023
+ ## `RawHtmlPlugin` (type)
2024
+
2025
+ ```ts
2026
+ export type RawHtmlPlugin = (
2027
+ tagName: string,
2028
+ attributes: Record<string, string>,
2029
+ ) => Record<string, string>
2030
+ ```
2031
+
2032
+ ## `reconcileHistoricalUserTurns` (function)
2033
+
2034
+ ```ts
2035
+ reconcileHistoricalUserTurns: (currentTurns: TurnProjection[], incomingTurns: TurnProjection[]) => TurnProjection[]
2036
+ ```
2037
+
1021
2038
  ## `reconcileOptimisticUserTurns` (function)
1022
2039
 
1023
2040
  ```ts
1024
2041
  reconcileOptimisticUserTurns: (currentTurns: TurnProjection[], incomingTurns: TurnProjection[]) => TurnProjection[]
1025
2042
  ```
1026
2043
 
2044
+ ## `replaceWindow` (function)
2045
+
2046
+ ```ts
2047
+ replaceWindow: (current: TurnProjection[], page: TurnProjection[], liveRevisionAtStart: number, liveRevisions: LiveRevisionState) => TurnProjection[]
2048
+ ```
2049
+
1027
2050
  ## `ReplayBar` (function)
1028
2051
 
1029
2052
  ```ts
@@ -1096,6 +2119,18 @@ speed: ReplaySpeed | undefined
1096
2119
  status: "replay" | "autonomous" | undefined
1097
2120
  ```
1098
2121
 
2122
+ ## `resolveServiceUrl` (function)
2123
+
2124
+ ```ts
2125
+ resolveServiceUrl: (endpoints: PlatformEndpoints, name: PlatformServiceName, path?: string) => string | null
2126
+ ```
2127
+
2128
+ ## `resolveToolUiCardContent` (function)
2129
+
2130
+ ```ts
2131
+ resolveToolUiCardContent: (card: ToolUiCard) => { type: ToolUiCardContentType; content: string; } | null
2132
+ ```
2133
+
1099
2134
  ## `ResultFeedback` (interface)
1100
2135
 
1101
2136
  ```ts
@@ -1142,6 +2177,17 @@ result: unknown
1142
2177
  sessionId: string
1143
2178
  ```
1144
2179
 
2180
+ ## `RunTiming` (interface)
2181
+
2182
+ ```ts
2183
+ duration_ms: number | null | undefined
2184
+ loop_id: string
2185
+ run_id: string
2186
+ scope: "chat" | "subagent"
2187
+ started_at: string | null | undefined
2188
+ status: "completed" | "paused" | "failed" | "cancelled" | "incomplete"
2189
+ ```
2190
+
1145
2191
  ## `RunTrace` (interface)
1146
2192
 
1147
2193
  ```ts
@@ -1163,17 +2209,52 @@ SDK_NAME: "agent-client"
1163
2209
  SDK_VERSION: string
1164
2210
  ```
1165
2211
 
2212
+ ## `selectionFromItem` (function)
2213
+
2214
+ ```ts
2215
+ selectionFromItem: (item: PluginConnectorItem) => PluginConnectorSelection
2216
+ ```
2217
+
1166
2218
  ## `SendOptions` (interface)
1167
2219
 
1168
2220
  ```ts
1169
2221
  askUserAnswer: Record<string, unknown> | undefined
2222
+ kbIds: number[] | undefined
1170
2223
  mode: string | undefined
1171
2224
  model: string | undefined
2225
+ queueWhenRunning: boolean | undefined
1172
2226
  replayDecision: "keep_replay" | "continue_replay" | undefined
1173
2227
  thinkingOverride: boolean | undefined
1174
2228
  whatif: { from_step: number; quotes: Array<Record<string, unknown>>; deprecate_entry_ids: string[]; } | undefined
1175
2229
  ```
1176
2230
 
2231
+ ## `SessionComputer` (interface)
2232
+
2233
+ ```ts
2234
+ agent_runtimes: unknown[] | undefined
2235
+ allowed_paths: string[] | undefined
2236
+ arch: string | null | undefined
2237
+ blade_home: string | null | undefined
2238
+ created_at: string
2239
+ daemon_version: string | null | undefined
2240
+ enabled: boolean
2241
+ home: string | null | undefined
2242
+ hostname: string | null | undefined
2243
+ id: string
2244
+ is_primary: boolean
2245
+ label: string
2246
+ last_seen_at: string | null | undefined
2247
+ online: boolean
2248
+ os: string | null | undefined
2249
+ workspace: string | null | undefined
2250
+ ```
2251
+
2252
+ ## `SessionComputerList` (interface)
2253
+
2254
+ ```ts
2255
+ computers: SessionComputer[]
2256
+ ```
2257
+
1177
2258
  ## `SessionConfig` (interface)
1178
2259
 
1179
2260
  ```ts
@@ -1185,6 +2266,12 @@ memoryEnabled: boolean | undefined
1185
2266
  model: string | undefined
1186
2267
  ```
1187
2268
 
2269
+ ## `SessionConnectOptions` (interface)
2270
+
2271
+ ```ts
2272
+ setup: ((session: AgentSession) => void) | undefined
2273
+ ```
2274
+
1188
2275
  ## `SessionContextStats` (interface)
1189
2276
 
1190
2277
  ```ts
@@ -1205,14 +2292,18 @@ solution: SolutionDefinition | undefined
1205
2292
  ## `SessionDetail` (interface)
1206
2293
 
1207
2294
  ```ts
2295
+ agent_runtime_id: string | null | undefined
2296
+ ba_version: string | null | undefined
1208
2297
  biz_role_id: string | null | undefined
1209
2298
  bound_skill_id: string | null | undefined
2299
+ chat_group_id: string | null | undefined
1210
2300
  created_at: string
1211
2301
  daemon_id: string | null | undefined
1212
2302
  disable_tools: (string[] & string[]) | undefined
1213
2303
  enable_thinking: boolean | null | undefined
1214
2304
  env: Record<string, string> | undefined
1215
2305
  id: string
2306
+ initiator: "unknown" | "ui" | "sdk" | null | undefined
1216
2307
  intent: string
1217
2308
  is_example: boolean | undefined
1218
2309
  is_headless: boolean | undefined
@@ -1229,6 +2320,7 @@ primary_skill_id: string | null | undefined
1229
2320
  primary_skill_snapshot: PrimarySkillSnapshot | null | undefined
1230
2321
  replay_state: ReplayState | null | undefined
1231
2322
  runtime_type: string | null | undefined
2323
+ sandbox_version: string | null | undefined
1232
2324
  shared: boolean | undefined
1233
2325
  solution: Solution | null | undefined
1234
2326
  solution_id: string | null | undefined
@@ -1243,63 +2335,243 @@ workspace_path: string | null | undefined
1243
2335
  ## `SessionHistory` (interface)
1244
2336
 
1245
2337
  ```ts
1246
- active_branch: string | null
1247
- branches: string[]
1248
- nodes: HistoryNode[]
1249
- system_prompt_tokens: number | null | undefined
1250
- tokenizer_model: string | null | undefined
1251
- tools_tokens: number | null | undefined
2338
+ active_branch: string | null
2339
+ branches: string[]
2340
+ nodes: HistoryNode[]
2341
+ system_prompt_tokens: number | null | undefined
2342
+ tokenizer_model: string | null | undefined
2343
+ tools_tokens: number | null | undefined
2344
+ ```
2345
+
2346
+ ## `SessionHub` (class)
2347
+
2348
+ ```ts
2349
+ connect: (sessionId: string, options?: SessionConnectOptions) => Promise<AgentSession>
2350
+ disconnect: () => void
2351
+ disposeAll: () => void
2352
+ getConnection: () => ConnectionStatus
2353
+ onConnectionChange: (listener: (status: ConnectionStatus) => void) => () => void
2354
+ peek: (sessionId: string) => AgentSession | undefined
2355
+ reconnect: () => void
2356
+ ```
2357
+
2358
+ ## `SessionInfo` (type)
2359
+
2360
+ ```ts
2361
+ SessionInfo = type({
2362
+ id: "string",
2363
+ intent: "string",
2364
+ status: SessionStatus,
2365
+ created_at: "string",
2366
+ updated_at: "string",
2367
+ "shared?": "boolean",
2368
+ "memory_enabled?": "boolean",
2369
+ "is_persistent?": "boolean",
2370
+ "initiator?": "'ui' | 'sdk' | 'unknown' | null",
2371
+ "is_headless?": "boolean",
2372
+ "viewer_role?": "'owner' | 'viewer'",
2373
+ "template_id?": "string | null",
2374
+ "model?": "string | null",
2375
+ "enable_thinking?": "boolean | null",
2376
+ "solution_id?": "string | null",
2377
+ "solution_ref?": "unknown",
2378
+ "biz_role_id?": "string | null",
2379
+ "solution?": "unknown",
2380
+ "plan_summary?": "string | null",
2381
+ "primary_skill_id?": "string | null",
2382
+ // ship-attack v2:后端 engine.set_bound_skill 写入的"绑定 skill id"。
2383
+ // 未绑定 / 非 ship-attack session 为 null。
2384
+ "bound_skill_id?": "string | null",
2385
+ "replay_state?": "unknown",
2386
+ "is_pinned?": "boolean",
2387
+ "pinned_at?": "string | null",
2388
+ "is_example?": "boolean",
2389
+ "ports?": "unknown",
2390
+ "disable_tools?": "string[]",
2391
+ "runtime_type?": "string | null",
2392
+ "daemon_id?": "string | null",
2393
+ "agent_runtime_id?": "string | null",
2394
+ "workspace_path?": "string | null",
2395
+ "ba_version?": "string | null",
2396
+ "sandbox_version?": "string | null",
2397
+ "chat_group_id?": "string | null",
2398
+ "match?": "unknown",
2399
+ })
2400
+ ```
2401
+
2402
+ ## `SessionMemoryToggle` (function)
2403
+
2404
+ ```ts
2405
+ SessionMemoryToggle: ({ sessionId, enabled, client: clientProp, disabled, label, className, labelClassName, inputClassName, onSaved, onError, }: SessionMemoryToggleProps) => JSX.Element
2406
+ ```
2407
+
2408
+ ## `SessionMemoryToggleProps` (interface)
2409
+
2410
+ ```ts
2411
+ className: string | undefined
2412
+ client: BladeClient | undefined
2413
+ disabled: boolean | undefined
2414
+ enabled: boolean
2415
+ inputClassName: string | undefined
2416
+ label: string | undefined
2417
+ labelClassName: string | undefined
2418
+ onError: ((error: unknown) => void) | undefined
2419
+ onSaved: ((sessionId: string, enabled: boolean) => void) | undefined
2420
+ sessionId: string
2421
+ ```
2422
+
2423
+ ## `SessionPlugin` (interface)
2424
+
2425
+ ```ts
2426
+ active: boolean
2427
+ config: SessionPluginConfigSummary | undefined
2428
+ display_name: string | null | undefined
2429
+ icon: string | null | undefined
2430
+ installed: boolean | null
2431
+ name: string
2432
+ projected: boolean
2433
+ projection_source: string | null | undefined
2434
+ reason: string | null | undefined
2435
+ status: string
2436
+ ```
2437
+
2438
+ ## `SessionPluginActivation` (type)
2439
+
2440
+ ```ts
2441
+ export type SessionPluginActivation = Pick<SessionPlugin, "name" | "active" | "status" | "reason">
2442
+ ```
2443
+
2444
+ ## `SessionPluginConfigDialog` (function)
2445
+
2446
+ ```ts
2447
+ SessionPluginConfigDialog: ({ client, sessionId, plugin, ...props }: SessionPluginConfigDialogProps) => JSX.Element
2448
+ ```
2449
+
2450
+ ## `SessionPluginConfigDialogProps` (interface)
2451
+
2452
+ ```ts
2453
+ client: BladeClient
2454
+ onClose: () => void
2455
+ onSaved: ((state: SessionPluginConfigState) => void) | undefined
2456
+ plugin: Pick<SessionPlugin, "name" | "display_name" | "icon">
2457
+ sessionId: string
2458
+ ```
2459
+
2460
+ ## `SessionPluginConfigDraft` (interface)
2461
+
2462
+ ```ts
2463
+ remove: string[]
2464
+ set: SessionPluginConfigSet[]
2465
+ ```
2466
+
2467
+ ## `SessionPluginConfigError` (interface)
2468
+
2469
+ ```ts
2470
+ message: string
2471
+ path: string
2472
+ ```
2473
+
2474
+ ## `SessionPluginConfigForm` (function)
2475
+
2476
+ ```ts
2477
+ SessionPluginConfigForm: ({ config, submitting, errors, failure, onSubmit, onCancel, }: SessionPluginConfigFormProps) => JSX.Element
2478
+ ```
2479
+
2480
+ ## `SessionPluginConfigFormProps` (interface)
2481
+
2482
+ ```ts
2483
+ config: SessionPluginConfigState
2484
+ errors: SessionPluginConfigError[]
2485
+ failure: string | null
2486
+ onCancel: () => void
2487
+ onSubmit: (draft: SessionPluginConfigDraft) => void
2488
+ submitting: boolean
2489
+ ```
2490
+
2491
+ ## `SessionPluginConfigSet` (interface)
2492
+
2493
+ ```ts
2494
+ path: string
2495
+ value: unknown
2496
+ ```
2497
+
2498
+ ## `SessionPluginConfigState` (interface)
2499
+
2500
+ ```ts
2501
+ errors: SessionPluginConfigError[]
2502
+ reason: string | null
2503
+ revision: string | null
2504
+ schema: Record<string, unknown> | null
2505
+ state: SessionPluginConfigStateName
2506
+ values: Record<string, unknown>
2507
+ write_only: string[]
2508
+ ```
2509
+
2510
+ ## `SessionPluginConfigStateName` (type)
2511
+
2512
+ ```ts
2513
+ export type SessionPluginConfigStateName = "not_required" | "required" | "configured" | "error"
2514
+ ```
2515
+
2516
+ ## `SessionPluginConfigSummary` (type)
2517
+
2518
+ ```ts
2519
+ export type SessionPluginConfigSummary =
2520
+ | SessionPluginConfigStateName
2521
+ | "unchecked"
2522
+ ```
2523
+
2524
+ ## `SessionPluginConfigUpdate` (interface)
2525
+
2526
+ ```ts
2527
+ expected_revision: string | null | undefined
2528
+ remove: string[] | undefined
2529
+ set: SessionPluginConfigSet[] | undefined
2530
+ ```
2531
+
2532
+ ## `SessionPluginIcon` (function)
2533
+
2534
+ ```ts
2535
+ SessionPluginIcon: ({ client, sessionId, plugin, size, shape, className }: SessionPluginIconProps) => JSX.Element
2536
+ ```
2537
+
2538
+ ## `SessionPluginIconProps` (interface)
2539
+
2540
+ ```ts
2541
+ className: string | undefined
2542
+ client: BladeClient
2543
+ plugin: Pick<SessionPlugin, "name" | "icon">
2544
+ sessionId: string | null
2545
+ shape: "circle" | "rounded" | undefined
2546
+ size: number | undefined
2547
+ ```
2548
+
2549
+ ## `sessionPluginLabel` (function)
2550
+
2551
+ ```ts
2552
+ sessionPluginLabel: (plugin: Pick<SessionPlugin, "name" | "display_name">) => string
2553
+ ```
2554
+
2555
+ ## `SessionPluginLabelProps` (interface)
2556
+
2557
+ ```ts
2558
+ plugin: Pick<SessionPlugin, "name" | "display_name">
1252
2559
  ```
1253
2560
 
1254
- ## `SessionHub` (class)
2561
+ ## `SessionPluginSelector` (function)
1255
2562
 
1256
2563
  ```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
2564
+ SessionPluginSelector: (props: SessionPluginSelectorProps) => JSX.Element
1264
2565
  ```
1265
2566
 
1266
- ## `SessionInfo` (type)
2567
+ ## `SessionPluginSelectorProps` (interface)
1267
2568
 
1268
2569
  ```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
- })
2570
+ className: string | undefined
2571
+ client: BladeClient
2572
+ onChange: ((plugin: SessionPluginActivation) => void) | undefined
2573
+ sessionId: string
2574
+ side: "top" | "bottom" | undefined
1303
2575
  ```
1304
2576
 
1305
2577
  ## `SessionPortMapping` (interface)
@@ -1321,6 +2593,49 @@ model: string | undefined
1321
2593
  solution: SolutionRef | undefined
1322
2594
  ```
1323
2595
 
2596
+ ## `SessionQueuePanel` (function)
2597
+
2598
+ ```ts
2599
+ SessionQueuePanel: ({ snapshot, canDeliver, pendingItemId, notice, onResume, onCancel, onEdit, onRequeue, onMove, onReorder, onDeliver, contentWidthClassName, rootClassName, onVisibleChange, mergesWithInputBelow: mergesWithInputBelowProp, }: SessionQueuePanelProps) => JSX.Element | null
2600
+ ```
2601
+
2602
+ ## `SessionQueuePanelProps` (interface)
2603
+
2604
+ ```ts
2605
+ canDeliver: boolean
2606
+ contentWidthClassName: string | undefined
2607
+ mergesWithInputBelow: boolean | undefined
2608
+ notice: string | null | undefined
2609
+ onCancel: (item: QueuedMessage) => void
2610
+ onDeliver: (item: QueuedMessage) => void
2611
+ onEdit: (item: QueuedMessage, content: string) => boolean | undefined | Promise<boolean>
2612
+ onMove: (item: QueuedMessage, delta: -1 | 1) => void
2613
+ onReorder: (orderedIds: string[]) => void
2614
+ onRequeue: ((content: string) => Promise<boolean>) | undefined
2615
+ onResume: () => void
2616
+ onVisibleChange: ((visible: boolean) => void) | undefined
2617
+ pendingItemId: string | null | undefined
2618
+ rootClassName: string | undefined
2619
+ snapshot: SessionQueueSnapshot
2620
+ ```
2621
+
2622
+ ## `SessionQueueSnapshot` (interface)
2623
+
2624
+ ```ts
2625
+ items: QueuedMessage[]
2626
+ pause_reason: string | null
2627
+ paused: boolean
2628
+ revision: number
2629
+ session_id: string
2630
+ ```
2631
+
2632
+ ## `SessionSearchMatch` (interface)
2633
+
2634
+ ```ts
2635
+ field: "title" | "content"
2636
+ snippet: { role: string; text: string; } | null
2637
+ ```
2638
+
1324
2639
  ## `SessionSetupError` (class)
1325
2640
 
1326
2641
  ```ts
@@ -1342,6 +2657,7 @@ export type SessionSetupStage = "solution" | "session" | "skill" | "connection"
1342
2657
 
1343
2658
  ```ts
1344
2659
  attachAppCli: (sessionId: string, definition: AppCliDefinition) => Promise<AppCliAttachment>
2660
+ 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
2661
  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
2662
  connect: (sessionId: string) => Promise<AgentSession>
1347
2663
  copyFile: (sessionId: string, filePath: string) => Promise<{ path: string; }>
@@ -1355,24 +2671,34 @@ deleteFile: (sessionId: string, filePath: string) => Promise<void>
1355
2671
  deleteSession: (sessionId: string, options?: { deleteWorkspace?: boolean; }) => Promise<{ deleted: boolean; workspace_deleted?: boolean; }>
1356
2672
  downloadFile: (sessionId: string, filePath: string, downloadName?: string) => Promise<void>
1357
2673
  exportSession: (sessionId: string) => Promise<void>
2674
+ fetchSessionPluginIcon: (sessionId: string, name: string) => Promise<Blob>
1358
2675
  getBackgroundTask: (sessionId: string, taskId: string, tail?: number, init?: RequestInit) => Promise<BackgroundTask>
1359
2676
  getDownloadDirUrl: (sessionId: string, dirPath: string) => string
2677
+ getMcpApp: (sessionId: string, sourceId: string, init?: RequestInit) => Promise<McpAppArchive>
2678
+ getMcpAppContext: (sessionId: string, sourceId: string, init?: RequestInit) => Promise<McpAppContextState>
1360
2679
  getReplayPreview: (sessionId: string) => Promise<ReplayPreview>
1361
2680
  getSession: (sessionId: string, init?: RequestInit) => Promise<SessionDetail>
1362
2681
  getSessionCheckpoints: (sessionId: string, init?: RequestInit) => Promise<{ nodes: CheckpointNode[]; leaf_id: string | null; }>
1363
2682
  getSessionContextStats: (sessionId: string, init?: RequestInit) => Promise<SessionContextStats>
1364
2683
  getSessionHistory: (sessionId: string, init?: RequestInit) => Promise<SessionHistory>
2684
+ getSessionPluginConfig: (sessionId: string, name: string, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1365
2685
  getSessionTasks: (sessionId: string) => Promise<Task[]>
2686
+ getSessionTurnCommands: (sessionId: string) => Promise<HistoricalCommand[]>
2687
+ getSessionTurnIndex: (sessionId: string) => Promise<SessionTurnIndex>
1366
2688
  getSessionTurns: (sessionId: string) => Promise<TurnProjection[]>
2689
+ getSessionTurnsPage: (sessionId: string, options?: SessionTurnsQuery, init?: RequestInit) => Promise<SessionTurnsPage>
1367
2690
  getSharedSession: (token: string) => Promise<TurnProjection[]>
1368
2691
  importSession: (file: File, name?: string, solutionOverride?: string | null | ImportSessionOptions) => Promise<{ session_id: string; }>
1369
2692
  listBackgroundTasks: (sessionId: string, init?: RequestInit) => Promise<BackgroundTask[]>
1370
- listDir: (sessionId: string, dirPath: string) => Promise<FileEntry[]>
2693
+ listDir: (sessionId: string, dirPath: string, showHidden?: boolean) => Promise<FileEntry[]>
1371
2694
  listResultFeedback: (sessionId: string) => Promise<ResultFeedback[]>
2695
+ listSessionPlugins: (sessionId: string, init?: RequestInit) => Promise<{ plugins: SessionPlugin[]; sync_version: number; sync_pending: boolean; }>
1372
2696
  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>
2697
+ 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
2698
  listSessionsWithSkillData: () => Promise<SkillDevSession[]>
2699
+ onMcpAppChanged: (sessionId: string, sourceId: string, listener: () => void) => () => void
1375
2700
  pinSession: (sessionId: string, pinned: boolean) => Promise<SessionInfo>
2701
+ prepareSessionPluginConfig: (sessionId: string, name: string, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1376
2702
  previewImport: (file: File) => Promise<ImportPreview>
1377
2703
  probeSessionUrl: (sessionId: string, url: string) => Promise<{ reachable: boolean; requires_proxy: boolean; }>
1378
2704
  putResultFeedback: (sessionId: string, assistantEntryId: string, feedback: { helpful: boolean; reason?: ResultFeedbackReason | null; }) => Promise<ResultFeedback>
@@ -1380,16 +2706,20 @@ renameFile: (sessionId: string, filePath: string, newName: string) => Promise<{
1380
2706
  revokeShare: (sessionId: string, token: string) => Promise<{ revoked: boolean; }>
1381
2707
  rewindSession: (sessionId: string, checkpointId: string) => Promise<{ id: string; content: string; }>
1382
2708
  searchOwnedContent: (params: { q: string; limit?: number; }) => Promise<GlobalSearchResult>
2709
+ sessionPluginIconUrl: (sessionId: string, name: string) => string
1383
2710
  setSessionEnv: (sessionId: string, env: Record<string, string>) => Promise<SessionDetail>
2711
+ setSessionPluginActivation: (sessionId: string, name: string, active: boolean, init?: RequestInit) => Promise<{ plugin: SessionPluginActivation; sync_version: number; }>
1384
2712
  shareFile: (sessionId: string, sourcePath: string, linkName?: string, shareFolder?: string) => Promise<{ path: string; target: string; }>
1385
2713
  startReplaySession: (sourceSessionId: string, speed?: ReplaySpeed) => Promise<{ session_id: string; }>
1386
2714
  stopBackgroundTask: (sessionId: string, taskId: string) => Promise<BackgroundTaskStopResult>
1387
2715
  switchBranch: (sessionId: string, checkpointId: string) => Promise<{ id: string; leaf_id: string; }>
1388
2716
  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
2717
  tokenizePrompt: (prompt: string, model?: string) => Promise<TokenizeResult>
2718
+ updateMcpAppContext: (sessionId: string, sourceId: string, body: McpAppContextUpdate, init?: RequestInit) => Promise<{ status: "accepted"; revision: string; }>
1390
2719
  updateReplaySession: (sessionId: string, payload: { speed?: ReplaySpeed; status?: "autonomous"; }) => Promise<{ replay_state: SessionInfo["replay_state"]; }>
1391
- updateSession: (sessionId: string, payload: { intent?: string; }) => Promise<SessionDetail>
2720
+ updateSession: (sessionId: string, payload: { intent?: string; chat_group_id?: string | null; }) => Promise<SessionDetail>
1392
2721
  updateSessionMemory: (sessionId: string, memoryEnabled: boolean) => Promise<{ memory_enabled: boolean; }>
2722
+ updateSessionPluginConfig: (sessionId: string, name: string, update: SessionPluginConfigUpdate, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1393
2723
  updateSharing: (sessionId: string, shared: boolean) => Promise<{ shared: boolean; }>
1394
2724
  uploadFiles: (sessionId: string, dirPath: string, files: FileList | File[] | UploadFileEntry[], options?: UploadFilesOptions) => Promise<{ uploaded: string[]; failed: string[]; }>
1395
2725
  writeFile: (sessionId: string, filePath: string, content: string) => Promise<{ success: boolean; }>
@@ -1404,8 +2734,11 @@ askAnswers: Record<string, AskUserAnswerData>
1404
2734
  connection: ConnectionStatus
1405
2735
  errorMessage: string | null
1406
2736
  isStreaming: boolean
2737
+ loadingOlder: boolean
1407
2738
  messages: ChatMessage[]
1408
2739
  mode: "planning" | "executing" | null
2740
+ nextBefore: string | null
2741
+ queue: SessionQueueSnapshot
1409
2742
  replay: ReplaySnapshot | null
1410
2743
  sessionId: string
1411
2744
  status: "completed" | "failed" | "interrupted" | "running" | "created" | "waiting_for_input" | null
@@ -1421,6 +2754,44 @@ SessionStatus = type(
1421
2754
  )
1422
2755
  ```
1423
2756
 
2757
+ ## `SessionStatusEvent` (interface)
2758
+
2759
+ ```ts
2760
+ session_id: string
2761
+ status: string
2762
+ ```
2763
+
2764
+ ## `SessionTurnIndex` (interface)
2765
+
2766
+ ```ts
2767
+ items: SessionTurnIndexItem[]
2768
+ sessionId: string
2769
+ ```
2770
+
2771
+ ## `SessionTurnIndexItem` (interface)
2772
+
2773
+ ```ts
2774
+ createdAt: string | null
2775
+ entryId: string
2776
+ preview: string
2777
+ ```
2778
+
2779
+ ## `SessionTurnsPage` (interface)
2780
+
2781
+ ```ts
2782
+ currentMode: "planning" | "executing"
2783
+ nextBefore: string | null
2784
+ turns: TurnProjection[]
2785
+ ```
2786
+
2787
+ ## `SessionTurnsQuery` (interface)
2788
+
2789
+ ```ts
2790
+ before: string | undefined
2791
+ fromEntryId: string | undefined
2792
+ limit: number | undefined
2793
+ ```
2794
+
1424
2795
  ## `ShareLinkResult` (interface)
1425
2796
 
1426
2797
  ```ts
@@ -1429,6 +2800,30 @@ token: string
1429
2800
  url: string
1430
2801
  ```
1431
2802
 
2803
+ ## `shouldApplySnapshot` (function)
2804
+
2805
+ ```ts
2806
+ shouldApplySnapshot: (current: SessionQueueSnapshot | undefined, next: SessionQueueSnapshot) => boolean
2807
+ ```
2808
+
2809
+ ## `SiteVisitsResource` (class)
2810
+
2811
+ ```ts
2812
+ record: () => Promise<SiteVisitsSummary>
2813
+ summary: () => Promise<SiteVisitsSummary>
2814
+ ```
2815
+
2816
+ ## `SiteVisitsSummary` (interface)
2817
+
2818
+ ```ts
2819
+ as_of: string
2820
+ date: string
2821
+ timezone: string
2822
+ today_pv: number
2823
+ today_uv: number
2824
+ total_pv: number
2825
+ ```
2826
+
1432
2827
  ## `SkillDefinition` (interface)
1433
2828
 
1434
2829
  ```ts
@@ -1436,6 +2831,12 @@ files: TextFile[]
1436
2831
  name: string
1437
2832
  ```
1438
2833
 
2834
+ ## `SkillEditorTemplateId` (type)
2835
+
2836
+ ```ts
2837
+ export type SkillEditorTemplateId = "skill_editor"
2838
+ ```
2839
+
1439
2840
  ## `SkillMentionAvailability` (interface)
1440
2841
 
1441
2842
  ```ts
@@ -1513,6 +2914,24 @@ export type SolutionDefinition =
1513
2914
  export type SolutionRef = ExistingSolutionRef | PreparedSolutionAsset
1514
2915
  ```
1515
2916
 
2917
+ ## `sortComputers` (function)
2918
+
2919
+ ```ts
2920
+ sortComputers: (computers: SessionComputer[]) => SessionComputer[]
2921
+ ```
2922
+
2923
+ ## `stripSystemReminders` (function)
2924
+
2925
+ ```ts
2926
+ stripSystemReminders: (text: string) => string
2927
+ ```
2928
+
2929
+ ## `SystemError` (interface)
2930
+
2931
+ ```ts
2932
+ message: string
2933
+ ```
2934
+
1516
2935
  ## `Task` (type)
1517
2936
 
1518
2937
  ```ts
@@ -1573,6 +2992,25 @@ action: string
1573
2992
  payload: unknown
1574
2993
  ```
1575
2994
 
2995
+ ## `ToolCallArgumentsDelta` (interface)
2996
+
2997
+ ```ts
2998
+ arguments_delta: string
2999
+ function: { name: string; }
3000
+ id: string
3001
+ index: number
3002
+ loop_name: string | undefined
3003
+ ```
3004
+
3005
+ ## `ToolCallCreated` (interface)
3006
+
3007
+ ```ts
3008
+ function: { name: string; arguments: string; }
3009
+ id: string
3010
+ index: number
3011
+ loop_name: string | undefined
3012
+ ```
3013
+
1576
3014
  ## `ToolCallInfo` (interface)
1577
3015
 
1578
3016
  ```ts
@@ -1586,12 +3024,71 @@ result: unknown
1586
3024
  status: "done" | "error" | "cancelled" | "awaiting_answer" | "pending" | undefined
1587
3025
  ```
1588
3026
 
3027
+ ## `ToolCallProjection` (interface)
3028
+
3029
+ ```ts
3030
+ arguments: string
3031
+ display_name: string
3032
+ duration_ms: number | null | undefined
3033
+ id: string
3034
+ pending_question_ref: PendingQuestionRef | null | undefined
3035
+ ran_in_parallel: boolean | undefined
3036
+ result: unknown
3037
+ started_at: string | null | undefined
3038
+ status: string
3039
+ subagent_runs: RunTiming[] | undefined
3040
+ tool_name: string
3041
+ ```
3042
+
1589
3043
  ## `ToolCallRenderer` (type)
1590
3044
 
1591
3045
  ```ts
1592
3046
  export type ToolCallRenderer = (info: ToolCallInfo) => ReactNode | null
1593
3047
  ```
1594
3048
 
3049
+ ## `ToolResultDelta` (interface)
3050
+
3051
+ ```ts
3052
+ content: string
3053
+ loop_name: string | undefined
3054
+ stream: "stdout" | "stderr" | undefined
3055
+ tool_call_id: string
3056
+ ```
3057
+
3058
+ ## `ToolResultDone` (interface)
3059
+
3060
+ ```ts
3061
+ content: string
3062
+ function: { name: string; }
3063
+ loop_name: string | undefined
3064
+ tool_call_id: string
3065
+ ```
3066
+
3067
+ ## `ToolUiCard` (interface)
3068
+
3069
+ ```ts
3070
+ archived: boolean | undefined
3071
+ height: number
3072
+ mcpApp: McpAppData | undefined
3073
+ resourceHTML: string | undefined
3074
+ resourceUri: string | undefined
3075
+ resourceURI: string | undefined
3076
+ target: "inline" | "preview"
3077
+ title: string | undefined
3078
+ ```
3079
+
3080
+ ## `ToolUiCardContentType` (type)
3081
+
3082
+ ```ts
3083
+ export type ToolUiCardContentType = "resource-html" | "resource-uri"
3084
+ ```
3085
+
3086
+ ## `ToolUiCardView` (function)
3087
+
3088
+ ```ts
3089
+ ToolUiCardView: ({ card, sessionId }: { card: ToolUiCard; sessionId?: string; }) => JSX.Element | null
3090
+ ```
3091
+
1595
3092
  ## `toReplaySnapshot` (function)
1596
3093
 
1597
3094
  ```ts
@@ -1604,6 +3101,93 @@ toReplaySnapshot: (raw: ReplayState | null | undefined) => ReplaySnapshot | null
1604
3101
  transformSlashCommand: (skillName: string, rawInput: string, { local, installed }?: SkillMentionAvailability) => string
1605
3102
  ```
1606
3103
 
3104
+ ## `TRIGGER_ICON_LIMIT` (const)
3105
+
3106
+ ```ts
3107
+ TRIGGER_ICON_LIMIT: 3
3108
+ ```
3109
+
3110
+ ## `triggerSummary` (function)
3111
+
3112
+ ```ts
3113
+ triggerSummary: (items: Array<Pick<PluginConnectorSelection, "name" | "displayName" | "icon" | "iconSource">>) => TriggerSummary
3114
+ ```
3115
+
3116
+ ## `TriggerSummary` (interface)
3117
+
3118
+ ```ts
3119
+ overflow: number
3120
+ total: number
3121
+ visible: Pick<PluginConnectorSelection, "name" | "iconSource" | "icon" | "displayName">[]
3122
+ ```
3123
+
3124
+ ## `TURN_NAV_HIGHLIGHT_CLASS` (const)
3125
+
3126
+ ```ts
3127
+ TURN_NAV_HIGHLIGHT_CLASS: "blade-turn-nav-flash"
3128
+ ```
3129
+
3130
+ ## `TurnNavigationOptions` (interface)
3131
+
3132
+ ```ts
3133
+ beforeSeek: ((entryId: string) => void) | undefined
3134
+ cancelPendingLocate: (() => void) | undefined
3135
+ fallbackItems: TurnNavItem[] | undefined
3136
+ getLoadedEntryElement: (entryId: string) => HTMLElement | null
3137
+ isEntryLoaded: ((entryId: string) => boolean) | undefined
3138
+ loadTurnIndex: (() => Promise<SessionTurnIndexItem[]>) | undefined
3139
+ locateEntry: (entryId: string) => Promise<boolean>
3140
+ reloadKey: string | number | null | undefined
3141
+ revealEntry: ((entryId: string) => void) | undefined
3142
+ rewriteKey: string | number | null | undefined
3143
+ sessionId: string | null | undefined
3144
+ ```
3145
+
3146
+ ## `TurnNavigationResult` (interface)
3147
+
3148
+ ```ts
3149
+ activeEntryId: string | null
3150
+ error: string | null
3151
+ failedEntryId: string | null
3152
+ items: TurnNavItem[]
3153
+ loadingEntryId: string | null
3154
+ selectEntry: (entryId: string) => void
3155
+ ```
3156
+
3157
+ ## `TurnNavigationSource` (interface)
3158
+
3159
+ ```ts
3160
+ cancelPendingLocate: (() => void) | undefined
3161
+ fallbackItems: TurnNavItem[] | undefined
3162
+ loadTurnIndex: (() => Promise<SessionTurnIndexItem[]>) | undefined
3163
+ locateEntry: (entryId: string) => Promise<boolean>
3164
+ reloadKey: string | number | null | undefined
3165
+ rewriteKey: string | number | null | undefined
3166
+ ```
3167
+
3168
+ ## `turnNavItemsFromMessages` (function)
3169
+
3170
+ ```ts
3171
+ turnNavItemsFromMessages: (messages: ChatMessage[]) => TurnNavItem[]
3172
+ ```
3173
+
3174
+ ## `TurnNavRail` (function)
3175
+
3176
+ ```ts
3177
+ TurnNavRail: ({ items, activeTurnId, loadingTurnId, error, failedTurnId, onSelectTurn, }: TurnNavRailProps) => JSX.Element | null
3178
+ ```
3179
+
3180
+ ## `TurnNavRailProps` (interface)
3181
+
3182
+ ```ts
3183
+ activeTurnId: string | null
3184
+ error: string | null | undefined
3185
+ failedTurnId: string | null | undefined
3186
+ items: TurnNavItem[]
3187
+ loadingTurnId: string | null | undefined
3188
+ onSelectTurn: (entryId: string) => void
3189
+ ```
3190
+
1607
3191
  ## `TurnProjection` (interface)
1608
3192
 
1609
3193
  ```ts
@@ -1612,13 +3196,26 @@ archived_files: ArchivedFileInfo[] | null | undefined
1612
3196
  archived_tool_calls: ArchivedToolCallInfo[] | null | undefined
1613
3197
  blocks: ContentBlock[]
1614
3198
  client_render_id: string | null | undefined
3199
+ client_request_id: string | null | undefined
1615
3200
  compaction_id: string | null | undefined
3201
+ context_action: ContextAction | null | undefined
3202
+ context_content: unknown
3203
+ context_key: string | null | undefined
3204
+ context_kind: string | null | undefined
3205
+ context_name: string | null | undefined
3206
+ context_order: number | null | undefined
3207
+ context_revision: string | null | undefined
1616
3208
  context_window: number | undefined
1617
- duration_ms: number | undefined
3209
+ display_summary: string | null | undefined
3210
+ display_title: string | null | undefined
3211
+ duration_ms: number | null | undefined
1618
3212
  failure_reason: string | null | undefined
1619
3213
  fallback_applied: boolean | null | undefined
3214
+ first_token_delivery_ms: number | null | undefined
3215
+ first_token_ms: number | null | undefined
3216
+ has_reported_timing: boolean | undefined
1620
3217
  id: string
1621
- kind: "message" | "compaction" | undefined
3218
+ kind: "message" | "context" | "compaction" | undefined
1622
3219
  loop_id: string
1623
3220
  memory_refs: MemoryRef[] | null | undefined
1624
3221
  model: string | null | undefined
@@ -1627,8 +3224,10 @@ post_chat_followup: PostChatFollowup | null | undefined
1627
3224
  role: "user" | "assistant" | "system"
1628
3225
  saved_ratio: number | null | undefined
1629
3226
  sequence: number
3227
+ sources: ContextSourceInfo[] | null | undefined
1630
3228
  started_at: string | null | undefined
1631
3229
  status: "streaming" | "completed" | "paused" | "failed" | "interrupted"
3230
+ stream_duration_ms: number | null | undefined
1632
3231
  summary_full: string | null | undefined
1633
3232
  summary_preview: string | null | undefined
1634
3233
  tokens_after: number | null | undefined
@@ -1675,6 +3274,7 @@ useAgentSession: (sessionId?: string, options?: UseAgentSessionOptions) => UseAg
1675
3274
 
1676
3275
  ```ts
1677
3276
  createOptions: CreateSessionRequest | undefined
3277
+ onSessionConnected: ((session: AgentSession) => () => void) | undefined
1678
3278
  onSessionCreated: ((sessionId: string) => void) | undefined
1679
3279
  ```
1680
3280
 
@@ -1709,6 +3309,30 @@ send: (text: string) => Promise<boolean>
1709
3309
  stop: () => void
1710
3310
  ```
1711
3311
 
3312
+ ## `useMessagePin` (function)
3313
+
3314
+ ```ts
3315
+ useMessagePin: ({ targetKey, pinTarget, isStreaming, layoutKey, getScrollElement, getContentElement, getTargetElement, getTargetScrollTop, getSpacerHeight, setSpacerHeight, stopAutoScroll, scrollToBottom, margin, }: UseMessagePinOptions) => { release: () => void; isActive: () => boolean; }
3316
+ ```
3317
+
3318
+ ## `UseMessagePinOptions` (interface)
3319
+
3320
+ ```ts
3321
+ getContentElement: (() => HTMLElement | null) | undefined
3322
+ getScrollElement: () => HTMLElement | null
3323
+ getSpacerHeight: () => number
3324
+ getTargetElement: () => HTMLElement | null
3325
+ getTargetScrollTop: ((scroll: HTMLElement) => number | null) | undefined
3326
+ isStreaming: boolean | undefined
3327
+ layoutKey: string | undefined
3328
+ margin: number | undefined
3329
+ pinTarget: boolean
3330
+ scrollToBottom: () => void
3331
+ setSpacerHeight: (height: number) => void
3332
+ stopAutoScroll: () => void
3333
+ targetKey: string | null
3334
+ ```
3335
+
1712
3336
  ## `useReplay` (function)
1713
3337
 
1714
3338
  ```ts
@@ -1743,3 +3367,74 @@ token: string
1743
3367
  username: string
1744
3368
  ```
1745
3369
 
3370
+ ## `UserMessageRendererProps` (interface)
3371
+
3372
+ ```ts
3373
+ message: ChatMessage
3374
+ ```
3375
+
3376
+ ## `useSessionPluginActivation` (function)
3377
+
3378
+ ```ts
3379
+ useSessionPluginActivation: ({ client, sessionId, onChange, }: { client: BladeClient; sessionId: string; onChange?: (plugin: SessionPluginActivation) => void; }) => UseSessionPluginActivationResult
3380
+ ```
3381
+
3382
+ ## `UseSessionPluginActivationResult` (interface)
3383
+
3384
+ ```ts
3385
+ busy: boolean
3386
+ configuring: ConfiguringPlugin | null
3387
+ editConfig: (item: PluginConnectorItem) => void
3388
+ inFlight: Record<string, true>
3389
+ items: PluginConnectorItem[]
3390
+ listError: boolean
3391
+ loading: boolean
3392
+ mutationError: boolean
3393
+ onConfigClose: () => void
3394
+ onConfigSaved: (state: SessionPluginConfigState) => void
3395
+ reload: () => void
3396
+ retry: (item: PluginConnectorItem) => void
3397
+ toggle: (item: PluginConnectorItem, next: boolean) => void
3398
+ ```
3399
+
3400
+ ## `useTurnNavigation` (function)
3401
+
3402
+ ```ts
3403
+ useTurnNavigation: ({ sessionId, getLoadedEntryElement, isEntryLoaded, locateEntry, cancelPendingLocate, loadTurnIndex, fallbackItems, revealEntry, beforeSeek, reloadKey, rewriteKey, }: TurnNavigationOptions) => TurnNavigationResult
3404
+ ```
3405
+
3406
+ ## `useTypewriterReveal` (function)
3407
+
3408
+ ```ts
3409
+ useTypewriterReveal: (targetText: string, isLive: boolean, resetKey: string | null) => UseTypewriterRevealResult
3410
+ ```
3411
+
3412
+ ## `UseTypewriterRevealResult` (interface)
3413
+
3414
+ ```ts
3415
+ displayedText: string
3416
+ flushNow: () => void
3417
+ isRevealing: boolean
3418
+ ```
3419
+
3420
+ ## `WhatIfQuote` (interface)
3421
+
3422
+ ```ts
3423
+ label: string
3424
+ snapshot: string
3425
+ stepNumber: number | null
3426
+ ```
3427
+
3428
+ ## `WhatIfUserBubble` (function)
3429
+
3430
+ ```ts
3431
+ WhatIfUserBubble: ({ parsed, onQuoteClick }: WhatIfUserBubbleProps) => JSX.Element
3432
+ ```
3433
+
3434
+ ## `WhatIfUserBubbleProps` (interface)
3435
+
3436
+ ```ts
3437
+ onQuoteClick: ((stepNumber: number) => void) | undefined
3438
+ parsed: ParsedWhatIfPrompt
3439
+ ```
3440
+