@blade-hq/agent-react 2610.0.1-alpha.1 → 2612.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +346 -8
  2. package/dist/chunk-G3PMV62Z.js +36 -0
  3. package/dist/components/AgentChat.d.ts +6 -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 +27 -9
  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 +143 -3
  11. package/dist/components/ChatView.d.ts +2 -1
  12. package/dist/components/ConnectionBanner.d.ts +1 -1
  13. package/dist/components/ConnectorPanel.d.ts +41 -0
  14. package/dist/components/ContextCard.d.ts +20 -0
  15. package/dist/components/MarkdownContent.d.ts +20 -6
  16. package/dist/components/McpAppCard.d.ts +14 -0
  17. package/dist/components/MessageImage.d.ts +9 -0
  18. package/dist/components/MessageList.d.ts +47 -6
  19. package/dist/components/PlanUpdateBlock.d.ts +32 -0
  20. package/dist/components/PluginConnectorList.d.ts +47 -0
  21. package/dist/components/PluginTriggerStack.d.ts +22 -0
  22. package/dist/components/PostChatFollowupBlock.d.ts +63 -0
  23. package/dist/components/SessionBranchPicker.d.ts +11 -0
  24. package/dist/components/SessionMemoryToggle.d.ts +19 -0
  25. package/dist/components/SessionPluginConfigDialog.d.ts +10 -0
  26. package/dist/components/SessionPluginConfigForm.d.ts +14 -0
  27. package/dist/components/SessionPluginIcon.d.ts +30 -0
  28. package/dist/components/SessionPluginSelector.d.ts +10 -0
  29. package/dist/components/SessionQueuePanel.d.ts +74 -0
  30. package/dist/components/ToolCallBlock.d.ts +10 -4
  31. package/dist/components/ToolUiCardView.d.ts +9 -0
  32. package/dist/components/TurnNavRail.d.ts +23 -0
  33. package/dist/components/UserMessageBubble.d.ts +7 -3
  34. package/dist/components/WhatIfUserBubble.d.ts +7 -0
  35. package/dist/components/connector-panel-types.d.ts +37 -0
  36. package/dist/components/display-utils.d.ts +0 -12
  37. package/dist/components/markdown/heal-incomplete.d.ts +7 -0
  38. package/dist/components/markdown/incremental.d.ts +73 -0
  39. package/dist/components/markdown/index.d.ts +18 -0
  40. package/dist/components/markdown/parse.d.ts +19 -0
  41. package/dist/components/markdown/render.d.ts +79 -0
  42. package/dist/components/markdown/sanitize.d.ts +50 -0
  43. package/dist/components/markdown/types.d.ts +53 -0
  44. package/dist/components/plugin-config-draft.d.ts +13 -0
  45. package/dist/components/plugin-config-schema.d.ts +6 -0
  46. package/dist/components/plugin-connector.d.ts +40 -0
  47. package/dist/components/queue-panel-adjacency.d.ts +1 -0
  48. package/dist/components/use-session-plugin-activation.d.ts +40 -0
  49. package/dist/context.d.ts +1 -0
  50. package/dist/embed/blade-chat-element.d.ts +4 -3
  51. package/dist/embed/entry.d.ts +54 -0
  52. package/dist/hooks/use-agent-session.d.ts +5 -0
  53. package/dist/hooks/use-message-pin.d.ts +28 -0
  54. package/dist/hooks/use-turn-navigation.d.ts +117 -0
  55. package/dist/hooks/use-typewriter-reveal.d.ts +32 -0
  56. package/dist/index.d.ts +57 -1
  57. package/dist/index.js +63199 -3019
  58. package/dist/index.js.map +1 -1
  59. package/dist/lib/agent-computer-command.d.ts +34 -0
  60. package/dist/lib/random-id.d.ts +10 -0
  61. package/dist/lib/utils.d.ts +17 -2
  62. package/dist/lib/whatif-prompt.d.ts +18 -0
  63. package/dist/style.css +509 -390
  64. package/dist/style.full.css +520 -394
  65. package/dist/webapi-W3IB5DO4.js +2481 -0
  66. package/dist/webapi-W3IB5DO4.js.map +1 -0
  67. package/package.json +5 -3
  68. package/public-api.md +2285 -92
  69. package/dist/chunk-ZXXLY4RM.js +0 -28255
  70. package/dist/chunk-ZXXLY4RM.js.map +0 -1
  71. package/dist/components/FileCard.d.ts +0 -16
  72. package/dist/highlighted-body-B3W2YXNL-YD7FAP6V.js +0 -27
  73. package/dist/highlighted-body-B3W2YXNL-YD7FAP6V.js.map +0 -1
  74. package/dist/lib/media-tags.d.ts +0 -24
  75. package/dist/mermaid-3ZIDBTTL-N7YKJ3SM.js +0 -8
  76. /package/dist/{mermaid-3ZIDBTTL-N7YKJ3SM.js.map → chunk-G3PMV62Z.js.map} +0 -0
package/public-api.md CHANGED
@@ -3,7 +3,41 @@
3
3
  > 本文件由 `scripts/public-api-report.mjs` 生成,请勿手改。
4
4
  > 公共面变更时重新生成本报告,并同步更新 README 对应章节——CI 会校验两者。
5
5
 
6
- 共 159 个公开声明。
6
+ 共 380 个公开声明。
7
+
8
+ ## `acceptedPostChatFollowupCompletesLatestRun` (function)
9
+
10
+ ```ts
11
+ acceptedPostChatFollowupCompletesLatestRun: (events: RawEvent[], updates: ProjectionUpdate[]) => boolean
12
+ ```
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
+ ```
7
41
 
8
42
  ## `ActiveCompactionState` (interface)
9
43
 
@@ -36,15 +70,23 @@ AgentChat: (props: AgentChatProps) => JSX.Element
36
70
  classNames: ChatViewClassNames | undefined
37
71
  commands: Record<string, (data: unknown) => void> | undefined
38
72
  createOptions: CreateSessionRequest | undefined
73
+ onFollowupInteraction: ((event: FollowupInteractionEvent) => void) | undefined
39
74
  onSessionCreated: ((sessionId: string) => void) | undefined
40
75
  onSessionReady: ((session: AgentSession) => void) | undefined
41
76
  placeholder: string | undefined
42
77
  renderers: ChatViewRenderers | undefined
43
78
  sessionId: string | undefined
79
+ sessionPluginControls: ((sessionId: string) => ReactNode) | undefined
44
80
  slots: ChatViewSlots | undefined
45
81
  theme: "light" | "dark" | undefined
46
82
  ```
47
83
 
84
+ ## `AgentComputerLaunchOutcome` (type)
85
+
86
+ ```ts
87
+ export type AgentComputerLaunchOutcome = "pending" | "succeeded" | "failed" | "unknown"
88
+ ```
89
+
48
90
  ## `AgentLoopInfo` (interface)
49
91
 
50
92
  ```ts
@@ -56,26 +98,48 @@ toolCallId: string
56
98
  ## `AgentSession` (class)
57
99
 
58
100
  ```ts
59
- append: (text: string) => void
60
101
  attach: (label: string, data: unknown) => void
61
102
  attachApp: (options: AttachAppOptions) => Promise<AppCliAttachment | null>
103
+ cancelPendingLocate: () => void
104
+ cancelQueuedMessage: (itemId: string, expectedVersion?: number) => Promise<QueueOperationResult>
62
105
  compact: () => Promise<Record<string, unknown>>
63
106
  countFiles: (dirPath?: string) => Promise<number>
107
+ deliverQueuedMessage: (itemId: string, expectedVersion: number) => Promise<QueueOperationResult>
64
108
  dispose: () => void
65
109
  downloadFile: (filePath: string, downloadName?: string) => Promise<void>
66
110
  exitReplay: () => Promise<void>
67
111
  getState: () => SessionState
112
+ hasOlderHistory: boolean
68
113
  insertText: (text: string) => void
69
114
  isDisposed: boolean
115
+ isStatic: boolean
70
116
  listDir: (dirPath?: string) => Promise<FileEntry[]>
117
+ loadOlderHistory: (options?: { beforeCommit?: () => void; }) => Promise<void>
118
+ loadTurnIndex: () => Promise<SessionTurnIndexItem[]>
119
+ locateEntry: (entryId: string) => Promise<boolean>
71
120
  off: <K extends keyof AgentSessionEvents>(name: K, handler: (event: AgentSessionEvents[K]) => void) => void
72
121
  on: <K extends keyof AgentSessionEvents>(name: K, handler: (event: AgentSessionEvents[K]) => void) => () => void
73
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>
74
127
  send: (content: MessageContent, options?: SendOptions) => Promise<boolean>
75
128
  sessionId: string
76
129
  setReplaySpeed: (speed: ReplaySpeed) => Promise<void>
77
130
  stop: () => Promise<Record<string, unknown>>
78
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
79
143
  ```
80
144
 
81
145
  ## `AgentSessionEventName` (type)
@@ -92,7 +156,7 @@ attachRequested: { label: string; content: string; }
92
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; }
93
157
  chatEnd: { status: string; }
94
158
  command: { action: string; payload: unknown; toolCallId?: string; }
95
- error: { message: string; }
159
+ error: { message: string; code?: string; }
96
160
  insertTextRequested: { text: string; }
97
161
  message: { message: ChatMessage; turn: TurnProjection; }
98
162
  modeChange: { mode: "planning" | "executing"; }
@@ -100,14 +164,43 @@ notification: { type: string; title: string; detail?: string; status: "info" | "
100
164
  replayMismatch: { actualMessage?: string; expectedMessage?: string; respond: (decision: "keep_replay" | "continue_replay") => void; }
101
165
  rewind: { checkpointId: string; }
102
166
  sandboxOom: { toolCallId: string; }
103
- 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; }
104
168
  taskListUpdated: { tasks: unknown[]; }
105
169
  toolCall: { toolCall: ToolCallInfo; turn: TurnProjection; }
106
- toolPreview: { toolCallId: string; type: "resource-html" | "resource-uri"; content: string; title: string; }
107
- 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"; }
108
172
  workspaceChanged: { filePath?: string; }
109
173
  ```
110
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
+
111
204
  ## `AppCliAttachment` (interface)
112
205
 
113
206
  ```ts
@@ -148,9 +241,28 @@ tool_name: string | null | undefined
148
241
 
149
242
  ```ts
150
243
  custom: Record<number, string>
244
+ note: string | undefined
151
245
  selections: Record<number, number[]>
152
246
  ```
153
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
+
154
266
  ## `AsrAudioPayload` (type)
155
267
 
156
268
  ```ts
@@ -160,6 +272,15 @@ export type AsrAudioPayload =
160
272
  | { pcm: ArrayBuffer | Uint8Array; request_id?: string }
161
273
  ```
162
274
 
275
+ ## `AssistantTextRendererProps` (interface)
276
+
277
+ ```ts
278
+ compact: boolean
279
+ message: ChatMessage
280
+ sessionId: string | undefined
281
+ streaming: boolean
282
+ ```
283
+
163
284
  ## `AttachAppOptions` (interface)
164
285
 
165
286
  ```ts
@@ -167,6 +288,20 @@ cli: AppCliDefinition | undefined
167
288
  getContext: () => Record<string, unknown> | Promise<Record<string, unknown>>
168
289
  ```
169
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
+
170
305
  ## `AuthResource` (class)
171
306
 
172
307
  ```ts
@@ -205,6 +340,12 @@ reason: string | null | undefined
205
340
  task: BackgroundTask | null | undefined
206
341
  ```
207
342
 
343
+ ## `BackgroundWakeNotice` (function)
344
+
345
+ ```ts
346
+ BackgroundWakeNotice: () => JSX.Element
347
+ ```
348
+
208
349
  ## `BizRole` (interface)
209
350
 
210
351
  ```ts
@@ -232,6 +373,8 @@ statusText: string
232
373
  auth: AuthResource
233
374
  blob: (method: HttpMethod, path: string) => Promise<Blob>
234
375
  buildAuthedUrl: (path: string) => string
376
+ chatGroups: ChatGroupsResource
377
+ computers: ComputersResource
235
378
  fetch: (method: HttpMethod, path: string, init?: BladeFetchInit, isRetry?: boolean) => Promise<Response>
236
379
  formData: (method: HttpMethod, path: string, form: FormData, options?: { expectOk?: boolean; onUploadProgress?: (progress: UploadProgress) => void; }) => Promise<Response>
237
380
  hasToken: () => boolean
@@ -244,10 +387,13 @@ logoutToken: () => void
244
387
  models: ModelsResource
245
388
  onSocketReplaced: (listener: () => void) => () => void
246
389
  options: BladeClientOptions
390
+ plugins: PluginsResource
391
+ requestCommand: (event: string, payload: Record<string, unknown>, timeoutMs: number) => Promise<Record<string, unknown>>
247
392
  responseFromInit: (path: string, init?: RequestInit) => Promise<Response>
248
393
  sessions: SessionsResource
249
394
  setBaseUrl: (baseUrl: string) => void
250
395
  setToken: (token: string | null) => void
396
+ siteVisits: SiteVisitsResource
251
397
  socket: () => TypedSocket
252
398
  text: (method: HttpMethod, path: string) => Promise<string>
253
399
  textFromInit: (path: string, init?: RequestInit) => Promise<string>
@@ -258,6 +404,7 @@ token: string | null
258
404
 
259
405
  ```ts
260
406
  baseUrl: string
407
+ commandTransport: ((event: string, payload: Record<string, unknown>, send: () => Promise<Record<string, unknown>>) => Promise<Record<string, unknown>>) | undefined
261
408
  fetchImpl: { (input: RequestInfo | URL, init?: RequestInit): Promise<Response>; (input: string | URL | Request, init?: RequestInit): Promise<Response>; } | undefined
262
409
  onRefreshSuccess: (() => void | Promise<void>) | undefined
263
410
  socketToken: string | (() => string | null | undefined) | undefined
@@ -284,6 +431,42 @@ client: BladeClient
284
431
  buildMessageContent: (text: string, attachments: Array<{ kind: "file"; name: string; uploadedPath?: string; textContent?: string | null; mimeType?: string; }>) => MessageContent
285
432
  ```
286
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
+
287
470
  ## `ChatCompletionTool` (interface)
288
471
 
289
472
  ```ts
@@ -291,12 +474,48 @@ function: { name: string; description?: string; parameters?: Record<string, unkn
291
474
  type: "function"
292
475
  ```
293
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
+
294
512
  ## `ChatMessage` (interface)
295
513
 
296
514
  ```ts
297
515
  blocks: ContentBlock[] | undefined
298
516
  compaction: CompactionInfo | undefined
299
517
  content: MessageContent
518
+ context: ContextProjectionData | undefined
300
519
  duration_ms: number | undefined
301
520
  entry_id: string | undefined
302
521
  kind: string | undefined
@@ -304,6 +523,7 @@ loop_name: string | undefined
304
523
  memory_refs: MemoryRefInfo[] | undefined
305
524
  parent_id: string | null | undefined
306
525
  reasoning: string | undefined
526
+ render_id: string | undefined
307
527
  role: "error" | "user" | "assistant" | "tool"
308
528
  status: "streaming" | "completed" | "paused" | "failed" | "interrupted" | undefined
309
529
  timestamp: string | undefined
@@ -319,10 +539,34 @@ ChatView: (props: ChatViewProps) => JSX.Element
319
539
  ## `ChatViewClassNames` (interface)
320
540
 
321
541
  ```ts
542
+ agentLoop: string | undefined
543
+ askCard: string | undefined
544
+ askOption: string | undefined
545
+ assistantText: string | undefined
546
+ assistantTurn: string | undefined
322
547
  banner: string | undefined
323
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
324
558
  messageList: string | undefined
559
+ messagesContent: string | undefined
560
+ messagesScroll: string | undefined
561
+ planPanel: string | undefined
562
+ queuePanel: string | undefined
325
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
326
570
  ```
327
571
 
328
572
  ## `ChatViewProps` (interface)
@@ -333,12 +577,14 @@ commands: Record<string, (data: unknown) => void> | undefined
333
577
  createOptions: CreateSessionRequest | undefined
334
578
  llm: (LlmChatOptions & { advanced?: boolean | LlmAdvancedSettings; onOverrideChange?: (override: LlmOverride) => void; }) | undefined
335
579
  mode: "agent" | "llm" | undefined
580
+ onFollowupInteraction: ((event: FollowupInteractionEvent) => void) | undefined
336
581
  onLlmReady: ((handle: LlmChatHandle) => void) | undefined
337
582
  onSessionCreated: ((sessionId: string) => void) | undefined
338
583
  onSessionReady: ((session: AgentSession) => void) | undefined
339
584
  placeholder: string | undefined
340
585
  renderers: ChatViewRenderers | undefined
341
586
  sessionId: string | undefined
587
+ sessionPluginControls: ((sessionId: string) => ReactNode) | undefined
342
588
  slots: ChatViewSlots | undefined
343
589
  theme: "light" | "dark" | undefined
344
590
  ```
@@ -346,7 +592,11 @@ theme: "light" | "dark" | undefined
346
592
  ## `ChatViewRenderers` (interface)
347
593
 
348
594
  ```ts
595
+ askUserQuestion: ((props: AskUserQuestionRendererProps) => ReactNode | null) | undefined
596
+ assistantText: ((props: AssistantTextRendererProps) => ReactNode | null) | undefined
597
+ planUpdate: ((props: PlanUpdateRendererProps) => ReactNode | null) | undefined
349
598
  toolCall: ToolCallRenderer | undefined
599
+ userMessage: ((props: UserMessageRendererProps) => ReactNode | null) | undefined
350
600
  ```
351
601
 
352
602
  ## `ChatViewSlots` (interface)
@@ -357,6 +607,12 @@ footer: ReactNode
357
607
  header: ReactNode
358
608
  ```
359
609
 
610
+ ## `classifyAgentComputerLaunchOutcome` (function)
611
+
612
+ ```ts
613
+ classifyAgentComputerLaunchOutcome: (toolCall: { status?: string; result?: unknown; }) => AgentComputerLaunchOutcome
614
+ ```
615
+
360
616
  ## `ClientProjectionBuilder` (class)
361
617
 
362
618
  ```ts
@@ -366,6 +622,30 @@ reset: () => void
366
622
  seedSequence: (maxSeq: number) => void
367
623
  ```
368
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
+
369
649
  ## `CommandEnvelope` (interface)
370
650
 
371
651
  ```ts
@@ -398,6 +678,57 @@ tokens_before: number | null | undefined
398
678
  trigger: "auto" | "manual" | "forced_retry" | null | undefined
399
679
  ```
400
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
+
401
732
  ## `connectEmbedded` (function)
402
733
 
403
734
  ```ts
@@ -410,22 +741,141 @@ connectEmbedded: (options: EmbeddedChatOptions) => EmbeddedChat
410
741
  export type ConnectionStatus = "connecting" | "connected" | "reconnecting" | "disconnected"
411
742
  ```
412
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
+
413
766
  ## `ContentBlock` (interface)
414
767
 
415
768
  ```ts
416
769
  content: unknown
770
+ delivery_id: string | null | undefined
417
771
  display_name: string | null | undefined
418
772
  tool_call_id: string | null | undefined
419
773
  tool_name: string | null | undefined
420
774
  type: "text" | "thinking" | "tool_use" | "tool_result" | "tool_ui" | "tool_bridge" | "system_notification" | "mode_change" | "plan_status" | "ask_user_answer"
421
775
  ```
422
776
 
777
+ ## `ContentDelta` (interface)
778
+
779
+ ```ts
780
+ content: string
781
+ loop_name: string | undefined
782
+ ```
783
+
423
784
  ## `contentPreview` (function)
424
785
 
425
786
  ```ts
426
787
  contentPreview: (content: MessageContent, maxLen?: number) => string
427
788
  ```
428
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
+
429
879
  ## `createInitialSessionState` (function)
430
880
 
431
881
  ```ts
@@ -435,7 +885,9 @@ createInitialSessionState: (sessionId: string) => SessionState
435
885
  ## `CreateSessionRequest` (interface)
436
886
 
437
887
  ```ts
888
+ agent_runtime_id: string | null | undefined
438
889
  biz_role_id: string | null | undefined
890
+ chat_group_id: string | null | undefined
439
891
  compaction_ratio: number | null | undefined
440
892
  daemon_id: string | null | undefined
441
893
  disable_tools: string[] | null | undefined
@@ -445,7 +897,7 @@ intent: string | undefined
445
897
  memory_enabled: boolean | null | undefined
446
898
  model: string | null | undefined
447
899
  primary_skill_id: string | null | undefined
448
- runtime_type: "sandbox" | "daemon" | null | undefined
900
+ runtime_type: "sandbox" | "daemon" | "native" | null | undefined
449
901
  session_solution_asset_id: string | null | undefined
450
902
  solution_id: string | undefined
451
903
  solution_ref: PublishedSolutionRef | undefined
@@ -465,6 +917,19 @@ createSocket: (options: CreateSocketOptions) => TypedSocket
465
917
  baseUrl: string
466
918
  path: string | undefined
467
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
468
933
  ```
469
934
 
470
935
  ## `DEFAULT_REPLAY_SPEED` (const)
@@ -490,6 +955,18 @@ allowedOrigins: string[]
490
955
  iframe: HTMLIFrameElement | undefined
491
956
  ```
492
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
+
493
970
  ## `ExchangeCodeParams` (interface)
494
971
 
495
972
  ```ts
@@ -514,6 +991,12 @@ kind: "existing"
514
991
  solutionId: string
515
992
  ```
516
993
 
994
+ ## `ExternalAnchor` (function)
995
+
996
+ ```ts
997
+ ExternalAnchor: ({ children, href, ...props }: AnchorProps) => JSX.Element
998
+ ```
999
+
517
1000
  ## `extractTextAttachments` (function)
518
1001
 
519
1002
  ```ts
@@ -538,6 +1021,77 @@ path: string
538
1021
  tags: string[] | undefined
539
1022
  ```
540
1023
 
1024
+ ## `filterConnectorItems` (function)
1025
+
1026
+ ```ts
1027
+ filterConnectorItems: (items: PluginConnectorItem[], query: string) => PluginConnectorItem[]
1028
+ ```
1029
+
1030
+ ## `FinalArtifact` (interface)
1031
+
1032
+ ```ts
1033
+ kind: "link" | "file"
1034
+ label: string
1035
+ target: string
1036
+ ```
1037
+
1038
+ ## `FollowupInteractionEvent` (type)
1039
+
1040
+ ```ts
1041
+ export type FollowupInteractionEvent =
1042
+ | {
1043
+ type: "suggestions_shown"
1044
+ sessionId?: string
1045
+ assistantEntryId: string
1046
+ count: number
1047
+ }
1048
+ | {
1049
+ type: "suggestion_adopted"
1050
+ sessionId?: string
1051
+ assistantEntryId: string
1052
+ suggestionIndex: number
1053
+ }
1054
+ | {
1055
+ type: "artifact_shown"
1056
+ sessionId?: string
1057
+ assistantEntryId: string
1058
+ artifactIndex: number
1059
+ artifactKind: FinalArtifact["kind"]
1060
+ }
1061
+ | {
1062
+ type: "artifact_opened"
1063
+ sessionId?: string
1064
+ assistantEntryId: string
1065
+ artifactIndex: number
1066
+ artifactKind: FinalArtifact["kind"]
1067
+ }
1068
+ | {
1069
+ type: "artifact_download_started"
1070
+ sessionId?: string
1071
+ assistantEntryId: string
1072
+ artifactIndex: number
1073
+ artifactKind: "file"
1074
+ }
1075
+ | {
1076
+ type: "artifact_download_succeeded"
1077
+ sessionId?: string
1078
+ assistantEntryId: string
1079
+ artifactIndex: number
1080
+ artifactKind: "file"
1081
+ ```
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
+
541
1095
  ## `getFileParts` (function)
542
1096
 
543
1097
  ```ts
@@ -550,18 +1104,72 @@ getFileParts: (content: MessageContent) => FileContentPart[]
550
1104
  getImageParts: (content: MessageContent) => ImageUrlContentPart[]
551
1105
  ```
552
1106
 
1107
+ ## `getPlanUpdateDisplayState` (function)
1108
+
1109
+ ```ts
1110
+ getPlanUpdateDisplayState: (messages: ChatMessage[]) => PlanUpdateDisplayState
1111
+ ```
1112
+
553
1113
  ## `getTextContent` (function)
554
1114
 
555
1115
  ```ts
556
1116
  getTextContent: (content: MessageContent) => string
557
1117
  ```
558
1118
 
1119
+ ## `GlobalSearchConversationResult` (interface)
1120
+
1121
+ ```ts
1122
+ matched: "title" | "content"
1123
+ session: SessionInfo
1124
+ snippet: string
1125
+ type: "conversation"
1126
+ ```
1127
+
1128
+ ## `GlobalSearchFileResult` (interface)
1129
+
1130
+ ```ts
1131
+ matched: "name" | "path"
1132
+ name: string
1133
+ path: string
1134
+ session: SessionInfo
1135
+ snippet: string
1136
+ type: "file"
1137
+ ```
1138
+
1139
+ ## `GlobalSearchResult` (interface)
1140
+
1141
+ ```ts
1142
+ indexing: boolean
1143
+ items: GlobalSearchResultItem[]
1144
+ truncated: boolean
1145
+ ```
1146
+
1147
+ ## `GlobalSearchResultItem` (type)
1148
+
1149
+ ```ts
1150
+ export type GlobalSearchResultItem =
1151
+ | GlobalSearchConversationResult
1152
+ | GlobalSearchFileResult
1153
+ ```
1154
+
1155
+ ## `groupAdjacentContextRuns` (function)
1156
+
1157
+ ```ts
1158
+ groupAdjacentContextRuns: (kinds: readonly (string | null)[]) => readonly (readonly number[])[]
1159
+ ```
1160
+
559
1161
  ## `groupMessagesByLoop` (function)
560
1162
 
561
1163
  ```ts
562
1164
  groupMessagesByLoop: (messages: ChatMessage[]) => MessageGroup[]
563
1165
  ```
564
1166
 
1167
+ ## `hasChatRunEvent` (function)
1168
+
1169
+ ```ts
1170
+ hasChatRunEvent: (events: RawEvent[]) => boolean
1171
+ ```
1172
+
565
1173
  ## `HeadlessResource` (class)
566
1174
 
567
1175
  ```ts
@@ -570,10 +1178,19 @@ runInSession: { <T = unknown>(sessionId: string, prompt: string, options: Headle
570
1178
  runWithSession: { <T = unknown>(prompt: string, options: HeadlessRunOptions & { schema: JsonSchemaObject; }): Promise<HeadlessRunInSessionResult<T>>; (prompt: string, options?: HeadlessRunOptions): Promise<HeadlessRunInSessionResult<string>>; }
571
1179
  ```
572
1180
 
1181
+ ## `HistoricalCommand` (interface)
1182
+
1183
+ ```ts
1184
+ action: string
1185
+ deliveryId: string
1186
+ payload: unknown
1187
+ toolCallId: string | undefined
1188
+ ```
1189
+
573
1190
  ## `ImageUrlContentPart` (interface)
574
1191
 
575
1192
  ```ts
576
- image_url: { url: string; }
1193
+ image_url: { url: string; source_path?: string; width?: number; height?: number; }
577
1194
  type: "image_url"
578
1195
  ```
579
1196
 
@@ -598,16 +1215,60 @@ direction: "host-to-agent"
598
1215
  payload: unknown
599
1216
  ```
600
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
+
601
1256
  ## `isCommandEnvelope` (function)
602
1257
 
603
1258
  ```ts
604
1259
  isCommandEnvelope: (value: unknown) => value is CommandEnvelope
605
1260
  ```
606
1261
 
1262
+ ## `isEntryGoneError` (function)
1263
+
1264
+ ```ts
1265
+ isEntryGoneError: (error: unknown) => boolean
1266
+ ```
1267
+
607
1268
  ## `isHiddenInternalMessage` (function)
608
1269
 
609
1270
  ```ts
610
- isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">) => boolean
1271
+ isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">, options?: { includeLegacyForkContext?: boolean; }) => boolean
611
1272
  ```
612
1273
 
613
1274
  ## `isInboundEnvelope` (function)
@@ -616,6 +1277,54 @@ isHiddenInternalMessage: (message: Pick<ChatMessage, "role" | "content">) => boo
616
1277
  isInboundEnvelope: (value: unknown) => value is InboundEnvelope
617
1278
  ```
618
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
+
1316
+ ## `latestPostChatFollowup` (function)
1317
+
1318
+ ```ts
1319
+ latestPostChatFollowup: (turns: TurnProjection[]) => PostChatFollowup | null
1320
+ ```
1321
+
1322
+ ## `latestUserSpeechEntryId` (function)
1323
+
1324
+ ```ts
1325
+ latestUserSpeechEntryId: (turns: TurnProjection[]) => string | null
1326
+ ```
1327
+
619
1328
  ## `LayoutType` (enum)
620
1329
 
621
1330
  ```ts
@@ -632,6 +1341,21 @@ export enum LayoutType {
632
1341
  }
633
1342
  ```
634
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
+
635
1359
  ## `LlmAdvancedSettings` (interface)
636
1360
 
637
1361
  ```ts
@@ -706,6 +1430,16 @@ baseURL: string | undefined
706
1430
  model: string | undefined
707
1431
  ```
708
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
+
709
1443
  ## `LlmToolCall` (interface)
710
1444
 
711
1445
  ```ts
@@ -714,6 +1448,20 @@ id: string
714
1448
  name: string
715
1449
  ```
716
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
+
717
1465
  ## `LoginOptions` (interface)
718
1466
 
719
1467
  ```ts
@@ -729,6 +1477,16 @@ token: string
729
1477
  user: { id?: string; username?: string; display_name?: string; } | undefined
730
1478
  ```
731
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
+
732
1490
  ## `MarkdownContent` (function)
733
1491
 
734
1492
  ```ts
@@ -744,6 +1502,84 @@ mode: "streaming" | "static" | undefined
744
1502
  sessionId: string | undefined
745
1503
  ```
746
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
+
747
1583
  ## `MemoryRef` (interface)
748
1584
 
749
1585
  ```ts
@@ -760,6 +1596,18 @@ id: number
760
1596
  skill_name: string | null | undefined
761
1597
  ```
762
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
+
763
1611
  ## `MessageContent` (type)
764
1612
 
765
1613
  ```ts
@@ -772,6 +1620,309 @@ export type MessageContent = string | MessageContentPart[]
772
1620
  export type MessageContentPart = TextContentPart | ImageUrlContentPart | FileContentPart
773
1621
  ```
774
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
+
775
1926
  ## `ModeId` (type)
776
1927
 
777
1928
  ```ts
@@ -785,6 +1936,8 @@ baseUrl: string | undefined
785
1936
  default: string
786
1937
  defaultServiceModel: string | undefined
787
1938
  models: ModelOption[]
1939
+ unavailableModelIds: string[] | undefined
1940
+ unavailableProviderIds: string[] | undefined
788
1941
  ```
789
1942
 
790
1943
  ## `ModelOption` (interface)
@@ -801,6 +1954,12 @@ serviceModelId: string | undefined
801
1954
  list: () => Promise<ModelCatalog>
802
1955
  ```
803
1956
 
1957
+ ## `normalizeAdjacentUrlFormatting` (function)
1958
+
1959
+ ```ts
1960
+ normalizeAdjacentUrlFormatting: (value: string) => string
1961
+ ```
1962
+
804
1963
  ## `normalizeMessageContent` (function)
805
1964
 
806
1965
  ```ts
@@ -831,63 +1990,286 @@ content: string
831
1990
  label: string
832
1991
  ```
833
1992
 
834
- ## `PatchEnvelope` (interface)
1993
+ ## `ParsedWhatIfPrompt` (interface)
835
1994
 
836
1995
  ```ts
837
- data: { turn?: TurnProjection; workspace_changed?: { tool_call_id?: string; tool_name?: string; workspace_path?: string; }; }
838
- loop_id: string
839
- patch_type: string
840
- sequence: number
841
- turn_id: string
1996
+ fromStep: number | null
1997
+ quotes: WhatIfQuote[]
1998
+ userText: string
842
1999
  ```
843
2000
 
844
- ## `PreparedSolution` (interface)
2001
+ ## `parsePlanUpdate` (function)
845
2002
 
846
2003
  ```ts
847
- assetId: string
848
- bizRoleId: string | undefined
849
- expiresAt: string
850
- kind: "prepared"
851
- roles: string[]
852
- solutionId: string
2004
+ parsePlanUpdate: (argumentsJson: string) => PlanUpdateData | null
853
2005
  ```
854
2006
 
855
- ## `PreparedSolutionAsset` (interface)
2007
+ ## `parseQueueAck` (function)
856
2008
 
857
2009
  ```ts
858
- assetId: string
859
- bizRoleId: string | undefined
860
- kind: "prepared"
2010
+ parseQueueAck: (response: unknown, fallbackSessionId: string) => QueueOperationResult
861
2011
  ```
862
2012
 
863
- ## `PrimarySkillParallelMode` (interface)
2013
+ ## `parseWhatIfPrompt` (function)
864
2014
 
865
2015
  ```ts
866
- id: string
867
- name: string
868
- prompt_hint: string
2016
+ parseWhatIfPrompt: (text: string) => ParsedWhatIfPrompt | null
869
2017
  ```
870
2018
 
871
- ## `PrimarySkillSnapshot` (interface)
2019
+ ## `PatchEnvelope` (interface)
872
2020
 
873
2021
  ```ts
874
- captured_at: string
875
- description: string
876
- parallel_modes: PrimarySkillParallelMode[]
877
- skill_id: string
878
- stages: PrimarySkillStageSpec[]
879
- title: string
880
- version: number
2022
+ data: { turn?: TurnProjection; workspace_changed?: { tool_call_id?: string; tool_name?: string; workspace_path?: string; }; }
2023
+ loop_id: string
2024
+ patch_type: string
2025
+ sequence: number
2026
+ turn_id: string
881
2027
  ```
882
2028
 
883
- ## `ProvidersResponse` (interface)
2029
+ ## `PendingQuestionRef` (interface)
884
2030
 
885
2031
  ```ts
886
- password_enabled: boolean
887
- providers: { name: string; authorize_url: string; }[]
2032
+ child_loop_name: string
2033
+ child_tool_call_id: string
2034
+ description: string | null | undefined
888
2035
  ```
889
2036
 
890
- ## `PublishedSolutionRef` (type)
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
+
2185
+ ## `PostChatFollowup` (interface)
2186
+
2187
+ ```ts
2188
+ assistant_entry_id: string
2189
+ feedback_eligible: boolean
2190
+ feedback_scope: "latest_result"
2191
+ final_artifacts: FinalArtifact[] | undefined
2192
+ recaption: string | undefined
2193
+ suggestions: string[]
2194
+ ```
2195
+
2196
+ ## `PreparedSolution` (interface)
2197
+
2198
+ ```ts
2199
+ assetId: string
2200
+ bizRoleId: string | undefined
2201
+ expiresAt: string
2202
+ kind: "prepared"
2203
+ roles: string[]
2204
+ solutionId: string
2205
+ ```
2206
+
2207
+ ## `PreparedSolutionAsset` (interface)
2208
+
2209
+ ```ts
2210
+ assetId: string
2211
+ bizRoleId: string | undefined
2212
+ kind: "prepared"
2213
+ ```
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
+
2230
+ ## `PrimarySkillParallelMode` (interface)
2231
+
2232
+ ```ts
2233
+ id: string
2234
+ name: string
2235
+ prompt_hint: string
2236
+ ```
2237
+
2238
+ ## `PrimarySkillSnapshot` (interface)
2239
+
2240
+ ```ts
2241
+ captured_at: string
2242
+ description: string
2243
+ parallel_modes: PrimarySkillParallelMode[]
2244
+ skill_id: string
2245
+ stages: PrimarySkillStageSpec[]
2246
+ title: string
2247
+ version: number
2248
+ ```
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
+
2265
+ ## `ProvidersResponse` (interface)
2266
+
2267
+ ```ts
2268
+ password_enabled: boolean
2269
+ providers: { name: string; authorize_url: string; }[]
2270
+ ```
2271
+
2272
+ ## `PublishedSolutionRef` (type)
891
2273
 
892
2274
  ```ts
893
2275
  export type PublishedSolutionRef =
@@ -895,6 +2277,61 @@ export type PublishedSolutionRef =
895
2277
  | { source: "hub"; org: string; name: string }
896
2278
  ```
897
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
+
898
2335
  ## `RawEvent` (interface)
899
2336
 
900
2337
  ```ts
@@ -902,6 +2339,33 @@ payload: Record<string, unknown>
902
2339
  type: string
903
2340
  ```
904
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
+
2357
+ ## `reconcileOptimisticUserTurns` (function)
2358
+
2359
+ ```ts
2360
+ reconcileOptimisticUserTurns: (currentTurns: TurnProjection[], incomingTurns: TurnProjection[]) => TurnProjection[]
2361
+ ```
2362
+
2363
+ ## `replaceWindow` (function)
2364
+
2365
+ ```ts
2366
+ replaceWindow: (current: TurnProjection[], page: TurnProjection[], liveRevisionAtStart: number, liveRevisions: LiveRevisionState) => TurnProjection[]
2367
+ ```
2368
+
905
2369
  ## `ReplayBar` (function)
906
2370
 
907
2371
  ```ts
@@ -974,6 +2438,43 @@ speed: ReplaySpeed | undefined
974
2438
  status: "replay" | "autonomous" | undefined
975
2439
  ```
976
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
+
2453
+ ## `ResultFeedback` (interface)
2454
+
2455
+ ```ts
2456
+ assistant_entry_id: string
2457
+ created_at: string
2458
+ helpful: boolean
2459
+ project_id: string | null
2460
+ reason: ResultFeedbackReason | null
2461
+ session_id: string
2462
+ surface: "unknown" | "chat" | "software_factory"
2463
+ updated_at: string
2464
+ ```
2465
+
2466
+ ## `ResultFeedbackReason` (type)
2467
+
2468
+ ```ts
2469
+ export type ResultFeedbackReason =
2470
+ | "not_solved"
2471
+ | "inaccurate"
2472
+ | "incomplete"
2473
+ | "needs_major_changes"
2474
+ | "too_slow"
2475
+ | "other"
2476
+ ```
2477
+
977
2478
  ## `RunOptions` (interface)
978
2479
 
979
2480
  ```ts
@@ -995,6 +2496,17 @@ result: unknown
995
2496
  sessionId: string
996
2497
  ```
997
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
+
998
2510
  ## `RunTrace` (interface)
999
2511
 
1000
2512
  ```ts
@@ -1016,17 +2528,66 @@ SDK_NAME: "agent-client"
1016
2528
  SDK_VERSION: string
1017
2529
  ```
1018
2530
 
2531
+ ## `selectionFromItem` (function)
2532
+
2533
+ ```ts
2534
+ selectionFromItem: (item: PluginConnectorItem) => PluginConnectorSelection
2535
+ ```
2536
+
1019
2537
  ## `SendOptions` (interface)
1020
2538
 
1021
2539
  ```ts
1022
2540
  askUserAnswer: Record<string, unknown> | undefined
2541
+ kbIds: number[] | undefined
1023
2542
  mode: string | undefined
1024
2543
  model: string | undefined
2544
+ queueWhenRunning: boolean | undefined
1025
2545
  replayDecision: "keep_replay" | "continue_replay" | undefined
1026
2546
  thinkingOverride: boolean | undefined
1027
2547
  whatif: { from_step: number; quotes: Array<Record<string, unknown>>; deprecate_entry_ids: string[]; } | undefined
1028
2548
  ```
1029
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
+
1030
2591
  ## `SessionConfig` (interface)
1031
2592
 
1032
2593
  ```ts
@@ -1038,6 +2599,12 @@ memoryEnabled: boolean | undefined
1038
2599
  model: string | undefined
1039
2600
  ```
1040
2601
 
2602
+ ## `SessionConnectOptions` (interface)
2603
+
2604
+ ```ts
2605
+ setup: ((session: AgentSession) => void) | undefined
2606
+ ```
2607
+
1041
2608
  ## `SessionContextStats` (interface)
1042
2609
 
1043
2610
  ```ts
@@ -1058,14 +2625,18 @@ solution: SolutionDefinition | undefined
1058
2625
  ## `SessionDetail` (interface)
1059
2626
 
1060
2627
  ```ts
2628
+ agent_runtime_id: string | null | undefined
2629
+ ba_version: string | null | undefined
1061
2630
  biz_role_id: string | null | undefined
1062
2631
  bound_skill_id: string | null | undefined
2632
+ chat_group_id: string | null | undefined
1063
2633
  created_at: string
1064
2634
  daemon_id: string | null | undefined
1065
2635
  disable_tools: (string[] & string[]) | undefined
1066
2636
  enable_thinking: boolean | null | undefined
1067
2637
  env: Record<string, string> | undefined
1068
2638
  id: string
2639
+ initiator: "unknown" | "ui" | "sdk" | null | undefined
1069
2640
  intent: string
1070
2641
  is_example: boolean | undefined
1071
2642
  is_headless: boolean | undefined
@@ -1082,6 +2653,7 @@ primary_skill_id: string | null | undefined
1082
2653
  primary_skill_snapshot: PrimarySkillSnapshot | null | undefined
1083
2654
  replay_state: ReplayState | null | undefined
1084
2655
  runtime_type: string | null | undefined
2656
+ sandbox_version: string | null | undefined
1085
2657
  shared: boolean | undefined
1086
2658
  solution: Solution | null | undefined
1087
2659
  solution_id: string | null | undefined
@@ -1104,55 +2676,235 @@ tokenizer_model: string | null | undefined
1104
2676
  tools_tokens: number | null | undefined
1105
2677
  ```
1106
2678
 
1107
- ## `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)
1108
2895
 
1109
2896
  ```ts
1110
- connect: (sessionId: string) => Promise<AgentSession>
1111
- disconnect: () => void
1112
- disposeAll: () => void
1113
- getConnection: () => ConnectionStatus
1114
- onConnectionChange: (listener: (status: ConnectionStatus) => void) => () => void
1115
- peek: (sessionId: string) => AgentSession | undefined
1116
- reconnect: () => void
2897
+ SessionPluginSelector: (props: SessionPluginSelectorProps) => JSX.Element
1117
2898
  ```
1118
2899
 
1119
- ## `SessionInfo` (type)
2900
+ ## `SessionPluginSelectorProps` (interface)
1120
2901
 
1121
2902
  ```ts
1122
- SessionInfo = type({
1123
- id: "string",
1124
- intent: "string",
1125
- status: SessionStatus,
1126
- created_at: "string",
1127
- updated_at: "string",
1128
- "shared?": "boolean",
1129
- "memory_enabled?": "boolean",
1130
- "is_persistent?": "boolean",
1131
- "is_headless?": "boolean",
1132
- "viewer_role?": "'owner' | 'viewer'",
1133
- "template_id?": "string | null",
1134
- "model?": "string | null",
1135
- "enable_thinking?": "boolean | null",
1136
- "solution_id?": "string | null",
1137
- "solution_ref?": "unknown",
1138
- "biz_role_id?": "string | null",
1139
- "solution?": "unknown",
1140
- "plan_summary?": "string | null",
1141
- "primary_skill_id?": "string | null",
1142
- // ship-attack v2:后端 engine.set_bound_skill 写入的"绑定 skill id"。
1143
- // 未绑定 / 非 ship-attack session 为 null。
1144
- "bound_skill_id?": "string | null",
1145
- "replay_state?": "unknown",
1146
- "is_pinned?": "boolean",
1147
- "pinned_at?": "string | null",
1148
- "is_example?": "boolean",
1149
- "ports?": "unknown",
1150
- "disable_tools?": "string[]",
1151
- "runtime_type?": "string | null",
1152
- "daemon_id?": "string | null",
1153
- "workspace_path?": "string | null",
1154
- "match?": "unknown",
1155
- })
2903
+ className: string | undefined
2904
+ client: BladeClient
2905
+ onChange: ((plugin: SessionPluginActivation) => void) | undefined
2906
+ sessionId: string
2907
+ side: "top" | "bottom" | undefined
1156
2908
  ```
1157
2909
 
1158
2910
  ## `SessionPortMapping` (interface)
@@ -1174,6 +2926,49 @@ model: string | undefined
1174
2926
  solution: SolutionRef | undefined
1175
2927
  ```
1176
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
+
1177
2972
  ## `SessionSetupError` (class)
1178
2973
 
1179
2974
  ```ts
@@ -1195,6 +2990,7 @@ export type SessionSetupStage = "solution" | "session" | "skill" | "connection"
1195
2990
 
1196
2991
  ```ts
1197
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; }>
1198
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; }>
1199
2995
  connect: (sessionId: string) => Promise<AgentSession>
1200
2996
  copyFile: (sessionId: string, filePath: string) => Promise<{ path: string; }>
@@ -1208,40 +3004,59 @@ deleteFile: (sessionId: string, filePath: string) => Promise<void>
1208
3004
  deleteSession: (sessionId: string, options?: { deleteWorkspace?: boolean; }) => Promise<{ deleted: boolean; workspace_deleted?: boolean; }>
1209
3005
  downloadFile: (sessionId: string, filePath: string, downloadName?: string) => Promise<void>
1210
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>
1211
3010
  getBackgroundTask: (sessionId: string, taskId: string, tail?: number, init?: RequestInit) => Promise<BackgroundTask>
1212
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>
1213
3014
  getReplayPreview: (sessionId: string) => Promise<ReplayPreview>
1214
3015
  getSession: (sessionId: string, init?: RequestInit) => Promise<SessionDetail>
1215
3016
  getSessionCheckpoints: (sessionId: string, init?: RequestInit) => Promise<{ nodes: CheckpointNode[]; leaf_id: string | null; }>
1216
3017
  getSessionContextStats: (sessionId: string, init?: RequestInit) => Promise<SessionContextStats>
1217
3018
  getSessionHistory: (sessionId: string, init?: RequestInit) => Promise<SessionHistory>
3019
+ getSessionPluginConfig: (sessionId: string, name: string, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1218
3020
  getSessionTasks: (sessionId: string) => Promise<Task[]>
3021
+ getSessionTurnCommands: (sessionId: string) => Promise<HistoricalCommand[]>
3022
+ getSessionTurnIndex: (sessionId: string) => Promise<SessionTurnIndex>
1219
3023
  getSessionTurns: (sessionId: string) => Promise<TurnProjection[]>
3024
+ getSessionTurnsPage: (sessionId: string, options?: SessionTurnsQuery, init?: RequestInit) => Promise<SessionTurnsPage>
1220
3025
  getSharedSession: (token: string) => Promise<TurnProjection[]>
1221
3026
  importSession: (file: File, name?: string, solutionOverride?: string | null | ImportSessionOptions) => Promise<{ session_id: string; }>
1222
3027
  listBackgroundTasks: (sessionId: string, init?: RequestInit) => Promise<BackgroundTask[]>
1223
- listDir: (sessionId: string, dirPath: string) => Promise<FileEntry[]>
3028
+ listDir: (sessionId: string, dirPath: string, showHidden?: boolean) => Promise<FileEntry[]>
3029
+ listResultFeedback: (sessionId: string) => Promise<ResultFeedback[]>
3030
+ listSessionPlugins: (sessionId: string, init?: RequestInit) => Promise<{ plugins: SessionPlugin[]; sync_version: number; sync_pending: boolean; }>
1224
3031
  listSessions: (template_id_prefix?: string, solution_id?: string) => Promise<SessionInfo[]>
1225
- 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>
1226
3033
  listSessionsWithSkillData: () => Promise<SkillDevSession[]>
3034
+ onMcpAppChanged: (sessionId: string, sourceId: string, listener: () => void) => () => void
1227
3035
  pinSession: (sessionId: string, pinned: boolean) => Promise<SessionInfo>
3036
+ prepareSessionPluginConfig: (sessionId: string, name: string, init?: RequestInit) => Promise<{ plugin: string; config: SessionPluginConfigState; }>
1228
3037
  previewImport: (file: File) => Promise<ImportPreview>
1229
3038
  probeSessionUrl: (sessionId: string, url: string) => Promise<{ reachable: boolean; requires_proxy: boolean; }>
3039
+ putResultFeedback: (sessionId: string, assistantEntryId: string, feedback: { helpful: boolean; reason?: ResultFeedbackReason | null; }) => Promise<ResultFeedback>
1230
3040
  renameFile: (sessionId: string, filePath: string, newName: string) => Promise<{ path: string; }>
1231
3041
  revokeShare: (sessionId: string, token: string) => Promise<{ revoked: boolean; }>
1232
3042
  rewindSession: (sessionId: string, checkpointId: string) => Promise<{ id: string; content: string; }>
3043
+ searchOwnedContent: (params: { q: string; limit?: number; }) => Promise<GlobalSearchResult>
3044
+ sessionPluginIconUrl: (sessionId: string, name: string) => string
1233
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; }>
1234
3047
  shareFile: (sessionId: string, sourcePath: string, linkName?: string, shareFolder?: string) => Promise<{ path: string; target: string; }>
1235
3048
  startReplaySession: (sourceSessionId: string, speed?: ReplaySpeed) => Promise<{ session_id: string; }>
1236
3049
  stopBackgroundTask: (sessionId: string, taskId: string) => Promise<BackgroundTaskStopResult>
1237
3050
  switchBranch: (sessionId: string, checkpointId: string) => Promise<{ id: string; leaf_id: string; }>
1238
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>
1239
3052
  tokenizePrompt: (prompt: string, model?: string) => Promise<TokenizeResult>
3053
+ updateMcpAppContext: (sessionId: string, sourceId: string, body: McpAppContextUpdate, init?: RequestInit) => Promise<{ status: "accepted"; revision: string; }>
1240
3054
  updateReplaySession: (sessionId: string, payload: { speed?: ReplaySpeed; status?: "autonomous"; }) => Promise<{ replay_state: SessionInfo["replay_state"]; }>
1241
- updateSession: (sessionId: string, payload: { intent?: string; }) => Promise<SessionDetail>
3055
+ updateSession: (sessionId: string, payload: { intent?: string; chat_group_id?: string | null; }) => Promise<SessionDetail>
1242
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; }>
1243
3058
  updateSharing: (sessionId: string, shared: boolean) => Promise<{ shared: boolean; }>
1244
- uploadFiles: (sessionId: string, dirPath: string, files: FileList | File[] | UploadFileEntry[], options?: UploadFilesOptions) => Promise<{ uploaded: string[]; failed: string[]; }>
3059
+ uploadFiles: (sessionId: string, dirPath: string, files: FileList | File[] | UploadFileEntry[], options?: UploadFilesOptions) => Promise<{ uploaded: string[]; failed: string[]; results: Array<{ index: number; path?: string; error?: string; }>; }>
1245
3060
  writeFile: (sessionId: string, filePath: string, content: string) => Promise<{ success: boolean; }>
1246
3061
  ```
1247
3062
 
@@ -1254,8 +3069,11 @@ askAnswers: Record<string, AskUserAnswerData>
1254
3069
  connection: ConnectionStatus
1255
3070
  errorMessage: string | null
1256
3071
  isStreaming: boolean
3072
+ loadingOlder: boolean
1257
3073
  messages: ChatMessage[]
1258
3074
  mode: "planning" | "executing" | null
3075
+ nextBefore: string | null
3076
+ queue: SessionQueueSnapshot
1259
3077
  replay: ReplaySnapshot | null
1260
3078
  sessionId: string
1261
3079
  status: "completed" | "failed" | "interrupted" | "running" | "created" | "waiting_for_input" | null
@@ -1271,6 +3089,44 @@ SessionStatus = type(
1271
3089
  )
1272
3090
  ```
1273
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
+
1274
3130
  ## `ShareLinkResult` (interface)
1275
3131
 
1276
3132
  ```ts
@@ -1279,13 +3135,53 @@ token: string
1279
3135
  url: string
1280
3136
  ```
1281
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
+
1282
3162
  ## `SkillDefinition` (interface)
1283
3163
 
1284
3164
  ```ts
1285
- files: TextFile[]
3165
+ files: SkillFile[]
1286
3166
  name: string
1287
3167
  ```
1288
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
+
1289
3185
  ## `SkillMentionAvailability` (interface)
1290
3186
 
1291
3187
  ```ts
@@ -1363,6 +3259,24 @@ export type SolutionDefinition =
1363
3259
  export type SolutionRef = ExistingSolutionRef | PreparedSolutionAsset
1364
3260
  ```
1365
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
+
1366
3280
  ## `Task` (type)
1367
3281
 
1368
3282
  ```ts
@@ -1423,6 +3337,25 @@ action: string
1423
3337
  payload: unknown
1424
3338
  ```
1425
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
+
1426
3359
  ## `ToolCallInfo` (interface)
1427
3360
 
1428
3361
  ```ts
@@ -1436,12 +3369,72 @@ result: unknown
1436
3369
  status: "done" | "error" | "cancelled" | "awaiting_answer" | "pending" | undefined
1437
3370
  ```
1438
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
+
1439
3388
  ## `ToolCallRenderer` (type)
1440
3389
 
1441
3390
  ```ts
1442
3391
  export type ToolCallRenderer = (info: ToolCallInfo) => ReactNode | null
1443
3392
  ```
1444
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
+
1445
3438
  ## `toReplaySnapshot` (function)
1446
3439
 
1447
3440
  ```ts
@@ -1454,6 +3447,93 @@ toReplaySnapshot: (raw: ReplayState | null | undefined) => ReplaySnapshot | null
1454
3447
  transformSlashCommand: (skillName: string, rawInput: string, { local, installed }?: SkillMentionAvailability) => string
1455
3448
  ```
1456
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
+
1457
3537
  ## `TurnProjection` (interface)
1458
3538
 
1459
3539
  ```ts
@@ -1461,22 +3541,39 @@ archived_count: number | null | undefined
1461
3541
  archived_files: ArchivedFileInfo[] | null | undefined
1462
3542
  archived_tool_calls: ArchivedToolCallInfo[] | null | undefined
1463
3543
  blocks: ContentBlock[]
3544
+ client_render_id: string | null | undefined
3545
+ client_request_id: string | null | undefined
1464
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
1465
3554
  context_window: number | undefined
1466
- duration_ms: number | undefined
3555
+ display_summary: string | null | undefined
3556
+ display_title: string | null | undefined
3557
+ duration_ms: number | null | undefined
1467
3558
  failure_reason: string | null | undefined
1468
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
1469
3563
  id: string
1470
- kind: "message" | "compaction" | undefined
3564
+ kind: "message" | "context" | "compaction" | undefined
1471
3565
  loop_id: string
1472
3566
  memory_refs: MemoryRef[] | null | undefined
1473
3567
  model: string | null | undefined
1474
3568
  parent_fork_tool_call_id: string | null | undefined
3569
+ post_chat_followup: PostChatFollowup | null | undefined
1475
3570
  role: "user" | "assistant" | "system"
1476
3571
  saved_ratio: number | null | undefined
1477
3572
  sequence: number
3573
+ sources: ContextSourceInfo[] | null | undefined
1478
3574
  started_at: string | null | undefined
1479
3575
  status: "streaming" | "completed" | "paused" | "failed" | "interrupted"
3576
+ stream_duration_ms: number | null | undefined
1480
3577
  summary_full: string | null | undefined
1481
3578
  summary_preview: string | null | undefined
1482
3579
  tokens_after: number | null | undefined
@@ -1523,6 +3620,7 @@ useAgentSession: (sessionId?: string, options?: UseAgentSessionOptions) => UseAg
1523
3620
 
1524
3621
  ```ts
1525
3622
  createOptions: CreateSessionRequest | undefined
3623
+ onSessionConnected: ((session: AgentSession) => () => void) | undefined
1526
3624
  onSessionCreated: ((sessionId: string) => void) | undefined
1527
3625
  ```
1528
3626
 
@@ -1557,6 +3655,30 @@ send: (text: string) => Promise<boolean>
1557
3655
  stop: () => void
1558
3656
  ```
1559
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
+
1560
3682
  ## `useReplay` (function)
1561
3683
 
1562
3684
  ```ts
@@ -1591,3 +3713,74 @@ token: string
1591
3713
  username: string
1592
3714
  ```
1593
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
+