langchain_agentx_stream_ui 0.2.7 → 0.3.2

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.
package/dist/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
3
  import { ReactNode, PointerEventHandler } from 'react';
4
- import { q as Source, L as LangchainAgentEvent, N as NodeRegistry, v as TierOverrides, I as InteractionBus, M as MarkdownRenderer, p as SessionTree, l as SessionStatus, R as ReducerError, r as SourceEventContext, T as Task, t as TaskPhase, E as EventTier } from './multi-session-xvSZstSN.js';
5
- export { C as CommonFields, D as DEFAULT_EVENT_TIERS, a as EventType, b as InteractionBusHandlers, c as MarkdownRendererProps, d as MultiAgentSession, e as MultiAgentSessionProps, f as MultiSessionSourceConfig, g as MultiSessionStore, h as MultiSessionStoreOptions, i as MultiSessionStoreState, j as NodeWidget, k as NodeWidgetProps, P as PermissionResolvePayload, S as SessionSlice, m as SessionStore, n as SessionStoreOptions, o as SessionStoreState, s as SourceHandler, u as TaskStatus, w as createActiveSessionBridge, x as createEmptyTree, y as createInteractionBus, z as createMultiSessionStore, A as createSessionStore, B as getNoopInteractionBus, F as useActiveSession, G as useSessionIds } from './multi-session-xvSZstSN.js';
6
- import { T as ToolDisplayRegistry, P as PermissionUiMode, b as DisplayMode, c as ProjectionContext, R as RenderableEntry, C as CanonicalNodeRef } from './sessionViewOptions-WM00Fpcn.js';
7
- export { a as CollapsedExplorePayload, D as DEFAULT_SESSION_VIEW_OPTIONS, S as SessionViewOptions, d as ToolUseSnapshot, e as buildProjectionContext, f as buildProjectionViewContext, g as createDefaultToolRegistry, h as createProjectionContext, r as resolveEffectiveToolBodyMode, s as shouldApplyGrouping, i as shouldShowExploreDetail } from './sessionViewOptions-WM00Fpcn.js';
4
+ import { q as Source, L as LangchainAgentEvent, N as NodeRegistry, v as TierOverrides, I as InteractionBus, M as MarkdownRenderer, p as SessionTree, R as ReducerError, r as SourceEventContext, T as Task, t as TaskPhase, l as SessionStatus, E as EventTier } from './multi-session-CerO558Y.js';
5
+ export { C as CommonFields, D as DEFAULT_EVENT_TIERS, a as EventType, b as InteractionBusHandlers, c as MarkdownRendererProps, d as MultiAgentSession, e as MultiAgentSessionProps, f as MultiSessionSourceConfig, g as MultiSessionStore, h as MultiSessionStoreOptions, i as MultiSessionStoreState, j as NodeWidget, k as NodeWidgetProps, P as PermissionResolvePayload, S as SessionSlice, m as SessionStore, n as SessionStoreOptions, o as SessionStoreState, s as SourceHandler, u as TaskStatus, w as createActiveSessionBridge, x as createEmptyTree, y as createInteractionBus, z as createMultiSessionStore, A as createSessionStore, B as getNoopInteractionBus, F as useActiveSession, G as useSessionIds } from './multi-session-CerO558Y.js';
6
+ import { T as ToolDisplayRegistry, P as PermissionUiMode, b as DisplayMode, c as ProjectionContext, R as RenderableEntry, C as CanonicalNodeRef } from './sessionViewOptions-DQRzPuN_.js';
7
+ export { a as CollapsedExplorePayload, D as DEFAULT_SESSION_VIEW_OPTIONS, S as SessionViewOptions, d as ToolUseSnapshot, e as buildProjectionContext, f as buildProjectionViewContext, g as createDefaultToolRegistry, h as createProjectionContext, r as resolveEffectiveToolBodyMode, s as shouldApplyGrouping, i as shouldShowExploreDetail } from './sessionViewOptions-DQRzPuN_.js';
8
8
  import { a as ToolBodyMode } from './types-BEXSHQG7.js';
9
9
  export { T as ToolBodyComponent, b as ToolDisplayProps } from './types-BEXSHQG7.js';
10
10
  import { StoreApi } from 'zustand/vanilla';
11
11
  export { DEFAULT_ESTIMATE_SIZE, DEFAULT_VIRTUALIZE_THRESHOLD, SessionTimeline, SessionTimelineProps, VirtualTimeline, VirtualTimelineProps } from './virtual.js';
12
- export { A as AgentToolBody, a as AskUserQuestionToolBody, B as BashToolBody, D as DefaultToolBody, E as EditToolBody, G as GlobToolBody, b as GrepToolBody, R as ReadToolBody, S as SkillToolBody, W as WebFetchToolBody, c as WebSearchToolBody, d as WriteToolBody, f as formatToolTitle, r as resolveToolBody } from './AskUserQuestionToolBody-BG1StdvE.js';
12
+ export { A as AgentToolBody, a as AskUserQuestionToolBody, B as BashToolBody, D as DefaultToolBody, E as EditToolBody, G as GlobToolBody, b as GrepToolBody, R as ReadToolBody, S as SkillToolBody, W as WebFetchToolBody, c as WebSearchToolBody, d as WriteToolBody, f as formatToolTitle, r as resolveToolBody } from './AskUserQuestionToolBody-CUXqUkar.js';
13
13
  import { S as SessionNode, a as SessionNodeKind } from './nodes-BcyPw6Fr.js';
14
14
  export { E as ErrorNode, N as NodeDetail, P as PermissionNode, R as ReasoningNode, b as StepDetail, c as StepNode, d as SubAgentNode, T as TextNode, h as ToolCallNode, U as UnknownNode } from './nodes-BcyPw6Fr.js';
15
15
  export { B as BodyBlock, a as BodyBlockList, D as DiffView, M as MAX_PREVIEW_LINES, b as MarkdownBlock, T as TruncatedContent, c as buildBashBodyBlocks, d as displayPath, f as formatDiffFromStrings, e as formatPatternTitle, g as formatSearchResultBody, h as formatTimeoutFooter, p as parseDiffText, t as truncateCommand } from './MarkdownBlock-CcXZ5nTm.js';
@@ -48,9 +48,11 @@ interface AgentSessionProps {
48
48
  exploreFullscreenBash?: boolean;
49
49
  memoryDir?: string | null;
50
50
  workspaceRoot?: string | null;
51
+ /** D34 P2 LeakGate synthesize;默认 false */
52
+ subagentLeakGate?: boolean;
51
53
  children?: ReactNode;
52
54
  }
53
- declare function AgentSession({ source, initialEvents, registry, tierOverrides: _tierOverrides, onError, autoReconnect: _autoReconnect, debug, virtualized, virtualizeThreshold, interactionBus, toolDisplayRegistry, defaultBodyMode, groupParallelTools, permissionUiMode, markdownRenderer, displayMode, verbose, exploreFullscreenBash, memoryDir, workspaceRoot, children, }: AgentSessionProps): react_jsx_runtime.JSX.Element;
55
+ declare function AgentSession({ source, initialEvents, registry, tierOverrides: _tierOverrides, onError, autoReconnect: _autoReconnect, debug, virtualized, virtualizeThreshold, interactionBus, toolDisplayRegistry, defaultBodyMode, groupParallelTools, permissionUiMode, markdownRenderer, displayMode, verbose, exploreFullscreenBash, memoryDir, workspaceRoot, subagentLeakGate, children, }: AgentSessionProps): react_jsx_runtime.JSX.Element;
54
56
 
55
57
  interface AgentLoopViewProps {
56
58
  /** 传入时使用隔离 store(workflow scoped);省略则使用上层 SessionStoreContext */
@@ -94,37 +96,6 @@ interface WorkflowScaleOptions {
94
96
  }
95
97
  declare const DEFAULT_WORKFLOW_SCALE_OPTIONS: WorkflowScaleOptions;
96
98
 
97
- interface WorkflowSessionProps {
98
- source: Source;
99
- initialEvents?: LangchainAgentEvent[];
100
- registry?: NodeRegistry;
101
- tierOverrides?: TierOverrides;
102
- onError?: (error: Error) => void;
103
- interactionBus?: InteractionBus;
104
- toolDisplayRegistry?: ToolDisplayRegistry;
105
- defaultBodyMode?: ToolBodyMode;
106
- permissionUiMode?: PermissionUiMode;
107
- markdownRenderer?: MarkdownRenderer;
108
- displayMode?: DisplayMode;
109
- verbose?: boolean;
110
- exploreFullscreenBash?: boolean;
111
- memoryDir?: string | null;
112
- workspaceRoot?: string | null;
113
- virtualized?: boolean;
114
- virtualizeThreshold?: number;
115
- groupParallelTools?: boolean;
116
- /** P1–P4:大规模 workflow 缩放选项 */
117
- workflowScale?: Partial<WorkflowScaleOptions>;
118
- /** P2:展开已淘汰 loop 时由宿主 replay 事件 */
119
- onRequestLoopReplay?: WorkflowLoopReplayHandler;
120
- /** SSE 流正常结束(传输 resolve);与 status=done 互补,供宿主解锁 loading */
121
- onStreamComplete?: () => void;
122
- children?: ReactNode;
123
- }
124
- declare function WorkflowSession({ source, initialEvents, registry, tierOverrides, onError, interactionBus, toolDisplayRegistry, defaultBodyMode, permissionUiMode, markdownRenderer, displayMode, verbose, exploreFullscreenBash, memoryDir, workspaceRoot, virtualized, virtualizeThreshold, groupParallelTools, workflowScale, onRequestLoopReplay, onStreamComplete, children, }: WorkflowSessionProps): react_jsx_runtime.JSX.Element;
125
-
126
- declare const WorkflowScaleContext: react.Context<WorkflowScaleOptions>;
127
-
128
99
  /**
129
100
  * workflowDisplay.ts — SDK WorkflowDisplayPayload 契约(TS)
130
101
  *
@@ -214,22 +185,6 @@ interface WorkflowContainerTreeState {
214
185
  containersById: Record<string, WorkflowContainerRuntimeNode>;
215
186
  }
216
187
 
217
- interface WorkflowStageListPartition {
218
- visible: WorkflowContainerRuntimeNode[];
219
- hiddenCount: number;
220
- total: number;
221
- /** 当前已展示的 done stage 数量 */
222
- visibleDoneCount: number;
223
- /** done stage 总数 */
224
- totalDoneCount: number;
225
- }
226
- /**
227
- * P3:running / failed / pending / blocked 全显;
228
- * done 按 maxVisibleDoneCount 分页展示(默认最近 completedStagePageSize 条)。
229
- * maxVisibleDoneCount 由 WorkflowStageListPanel 的 "Show N more" 逐页递增。
230
- */
231
- declare function partitionWorkflowStages(stages: WorkflowContainerRuntimeNode[], maxVisibleDoneCount: number, containersById?: Record<string, WorkflowContainerRuntimeNode>): WorkflowStageListPartition;
232
-
233
188
  /**
234
189
  * workflowSession.ts — Workflow 会话顶层状态
235
190
  *
@@ -245,6 +200,41 @@ declare function partitionWorkflowStages(stages: WorkflowContainerRuntimeNode[],
245
200
 
246
201
  /** SDK v1.9.0 根 workflow 终态语义 SSOT */
247
202
  type WorkflowTerminalKind = 'healthy' | 'forced_closeout' | 'failed';
203
+ /** 宿主业务权威快照 — 唯一控制面输入(D33) */
204
+ type WorkflowAuthorityStatus = 'pending' | 'running' | 'done' | 'error' | 'canceled' | 'partial_success';
205
+ interface WorkflowAuthoritySnapshot {
206
+ taskId: string;
207
+ status: WorkflowAuthorityStatus;
208
+ updatedAt: number;
209
+ metadata?: {
210
+ failed_items?: string[];
211
+ cleanup_failures?: Array<{
212
+ action: string;
213
+ error: string;
214
+ }>;
215
+ execution_authority?: true;
216
+ orphan_items_reaped?: number;
217
+ partial_success_kind?: string;
218
+ projection_status?: 'complete' | 'degraded' | 'running';
219
+ projection_dropped_count?: number;
220
+ };
221
+ }
222
+ /** 纯投影 / 传输展示态 — 不可驱动宿主 phase(D33) */
223
+ type WorkflowDisplayProjectionStatus = 'connecting' | 'running' | 'done' | 'error' | 'done_with_warning';
224
+ interface WorkflowDisplayProjection {
225
+ /** SSE 字节流是否已结束(transport) */
226
+ streamEnded: boolean;
227
+ /** 投影推断的编排展示态(workflow-end / 容器树;缺帧时不 infer done) */
228
+ projectionStatus: WorkflowDisplayProjectionStatus;
229
+ terminalKind: WorkflowTerminalKind | null;
230
+ openChildIdentities: string[];
231
+ /** streamEnded 且 authority 仍 running 超过阈值时的展示降级 */
232
+ awaitingAuthority?: boolean;
233
+ /** streamEnded + running 超过 120s 仍无 authority terminal */
234
+ authoritySyncFailed?: boolean;
235
+ /** authoritySource.subscribe 抛错时的展示降级 */
236
+ authoritySubscribeFailed?: boolean;
237
+ }
248
238
  /** P2:stage 完成摘要缓存(loop 树淘汰后仍显示 teaser) */
249
239
  interface CachedStageDoneSummary {
250
240
  label: string;
@@ -281,11 +271,10 @@ interface WorkflowScopeFrame {
281
271
  loopSessionId: string | null;
282
272
  }
283
273
  interface WorkflowSessionState {
284
- status: SessionStatus;
285
- /** SDK v1.9.0 根终态语义;stream 推断 done 时为 null */
286
- terminalKind: WorkflowTerminalKind | null;
287
- /** forced_closeout 时 SDK 写入的未关闭 child scope */
288
- openChildIdentities: string[];
274
+ /** 宿主注入;Reducer 禁止写入 */
275
+ authority: WorkflowAuthoritySnapshot | null;
276
+ /** 事件投影 + 传输展示;不可驱动 phase */
277
+ display: WorkflowDisplayProjection;
289
278
  meta: {
290
279
  workflowRunId: string | null;
291
280
  startedAt: number | null;
@@ -301,12 +290,176 @@ interface WorkflowSessionState {
301
290
  /** P2:completed hydrated loop LRU 热缓存(最近使用在数组尾部) */
302
291
  hotCompletedLoopSessionIds: string[];
303
292
  activeLoopSessionId: string | null;
293
+ /** D36 P4:snapshot hydrate 后的 tail 游标 */
294
+ projectionCursor: string | null;
295
+ snapshotVersion: number | null;
296
+ reconnectSuppressedReason: string | null;
297
+ /** D36 T6:snapshot 404/409 时展示降级,禁止 history fallback */
298
+ snapshotHydrateFailed: boolean;
304
299
  /** @deprecated P1 起由 containerTree.activeContainerIds 替代 */
305
300
  openScopeStack: WorkflowScopeFrame[];
306
301
  internalErrors: ReducerError[];
307
302
  }
308
303
  declare function createEmptyWorkflowSessionState(): WorkflowSessionState;
309
304
 
305
+ /**
306
+ * workflowSnapshot.ts — WorkflowDisplaySnapshot DTO(D36 P3)
307
+ *
308
+ * 职责:
309
+ * remount hydrate SSOT;与 AgentEvent 协议独立。
310
+ *
311
+ * 链路位置:
312
+ * GET /projection/snapshot → hydrateWorkflowFromSnapshot(P4)。
313
+ *
314
+ * 当前裁剪范围:
315
+ * 类型定义 + fixture 契约;不含 hydrate 实现。
316
+ */
317
+
318
+ type WorkflowSnapshotProjectionStatus = 'complete' | 'degraded' | 'running';
319
+ interface WorkflowCoalescedBlock {
320
+ scopeKey: string;
321
+ kind: 'reasoning' | 'text' | 'tool';
322
+ tailPreview: string;
323
+ droppedDeltaCount: number;
324
+ }
325
+ interface WorkflowDisplaySnapshotMetadata {
326
+ projection_status?: WorkflowSnapshotProjectionStatus;
327
+ s0_event_count?: number;
328
+ dropped_s2_count?: number;
329
+ }
330
+ /** remount SSOT — 对齐 WorkflowSessionState 投影子集,非 AgentEvent[] */
331
+ interface WorkflowDisplaySnapshot {
332
+ taskId: string;
333
+ /** 单调;SSE tail 只发严格 > cursor 的帧(evt_{n:06d}) */
334
+ cursor: string;
335
+ /** hydrate 时写入 store;tail 事件须 version 一致或更新 */
336
+ snapshotVersion: number;
337
+ capturedAt: number;
338
+ display: WorkflowDisplayProjection;
339
+ /** 与 WorkflowContainerTreeState 同构 */
340
+ containerTree: WorkflowContainerTreeState;
341
+ /** P4 可选;degraded 首屏 tail 预览 */
342
+ coalescedBlocks?: WorkflowCoalescedBlock[];
343
+ metadata?: WorkflowDisplaySnapshotMetadata;
344
+ }
345
+
346
+ /**
347
+ * workflowAuthoritySource.ts — 宿主 workflow 业务权威输入契约(D33 §6.1)
348
+ *
349
+ * 职责:
350
+ * 定义 WorkflowSession 必填的 authority 订阅接口。
351
+ *
352
+ * 链路位置:
353
+ * WorkflowSession → workflowSessionStore.applyAuthoritySnapshot。
354
+ *
355
+ * 当前裁剪范围:
356
+ * createPollingAuthoritySource 于 Phase 3;此处仅基线接口。
357
+ */
358
+
359
+ /** 基线契约:hydrate + 推送订阅 */
360
+ interface WorkflowAuthoritySource {
361
+ getSnapshot(): WorkflowAuthoritySnapshot | null;
362
+ subscribe(cb: (snap: WorkflowAuthoritySnapshot) => void): () => void;
363
+ }
364
+
365
+ interface WorkflowSessionProps {
366
+ source: Source | null;
367
+ /** 宿主业务权威(必填);测试可用 createMockAuthoritySource */
368
+ authoritySource: WorkflowAuthoritySource;
369
+ /** D36 P4:remount 时 GET snapshot 结果(先于 SSE tail hydrate) */
370
+ snapshotBootstrap?: WorkflowDisplaySnapshot | null;
371
+ /** T6:snapshot GET 失败时标记,禁止 history fallback */
372
+ snapshotHydrateFailed?: boolean;
373
+ initialEvents?: LangchainAgentEvent[];
374
+ registry?: NodeRegistry;
375
+ tierOverrides?: TierOverrides;
376
+ onError?: (error: Error) => void;
377
+ interactionBus?: InteractionBus;
378
+ toolDisplayRegistry?: ToolDisplayRegistry;
379
+ defaultBodyMode?: ToolBodyMode;
380
+ permissionUiMode?: PermissionUiMode;
381
+ markdownRenderer?: MarkdownRenderer;
382
+ displayMode?: DisplayMode;
383
+ verbose?: boolean;
384
+ exploreFullscreenBash?: boolean;
385
+ memoryDir?: string | null;
386
+ workspaceRoot?: string | null;
387
+ virtualized?: boolean;
388
+ virtualizeThreshold?: number;
389
+ groupParallelTools?: boolean;
390
+ /** P1–P4:大规模 workflow 缩放选项 */
391
+ workflowScale?: Partial<WorkflowScaleOptions>;
392
+ /** P2:展开已淘汰 loop 时由宿主 replay 事件 */
393
+ onRequestLoopReplay?: WorkflowLoopReplayHandler;
394
+ /** authority 首次进入 terminal 时触发(phase SSOT) */
395
+ onAuthorityTerminal?: (snapshot: WorkflowAuthoritySnapshot) => void;
396
+ /** SSE 传输 resolve;仅 analytics / 非 phase */
397
+ onDisplayStreamEnded?: () => void;
398
+ children?: ReactNode;
399
+ }
400
+ declare function WorkflowSession({ source, authoritySource, snapshotBootstrap, snapshotHydrateFailed, initialEvents, registry, tierOverrides, onError, interactionBus, toolDisplayRegistry, defaultBodyMode, permissionUiMode, markdownRenderer, displayMode, verbose, exploreFullscreenBash, memoryDir, workspaceRoot, virtualized, virtualizeThreshold, groupParallelTools, workflowScale, onRequestLoopReplay, onAuthorityTerminal, onDisplayStreamEnded, children, }: WorkflowSessionProps): react_jsx_runtime.JSX.Element;
401
+
402
+ /**
403
+ * createMockAuthoritySource.ts — 测试 / demo 用 authority 源
404
+ *
405
+ * 职责:
406
+ * 提供 instant terminal 或可控 push 的 mock,避免测试依赖 registry。
407
+ *
408
+ * 链路位置:
409
+ * Vitest · simple workflow 页(Phase 3 前临时 mock)。
410
+ */
411
+
412
+ interface MockAuthoritySourceOptions {
413
+ snapshot?: WorkflowAuthoritySnapshot | null;
414
+ /** subscribe 后依次推送(模拟 SSE / poll) */
415
+ pendingUpdates?: WorkflowAuthoritySnapshot[];
416
+ }
417
+ declare function createMockAuthoritySource(snapshotOrOptions?: WorkflowAuthoritySnapshot | null | MockAuthoritySourceOptions): WorkflowAuthoritySource;
418
+ declare function createDoneAuthoritySource(taskId?: string): WorkflowAuthoritySource;
419
+ declare function createRunningAuthoritySource(taskId?: string): WorkflowAuthoritySource;
420
+ declare function createControllableAuthoritySource(initial: WorkflowAuthoritySnapshot): WorkflowAuthoritySource & {
421
+ push: (snapshot: WorkflowAuthoritySnapshot) => void;
422
+ };
423
+
424
+ /**
425
+ * createPollingAuthoritySource.ts — REST 轮询 authority 源(D33 §6.1 · §6.6)
426
+ *
427
+ * 职责:
428
+ * 宿主兜底轮询 registry;terminal hydrate 短路;AbortSignal 清理 interval。
429
+ *
430
+ * 链路位置:
431
+ * 宿主 workflow 页 · Phase 5 前 simple 可选接入。
432
+ *
433
+ * 当前裁剪范围:
434
+ * 不含 SSE task_complete;优先由宿主 push 订阅。
435
+ */
436
+
437
+ interface PollingAuthoritySourceOptions {
438
+ intervalMs?: number;
439
+ signal?: AbortSignal;
440
+ /** hydrate 已 terminal 时注入,subscribe 不启动 poll */
441
+ initialSnapshot?: WorkflowAuthoritySnapshot | null;
442
+ }
443
+ declare function createPollingAuthoritySource(taskId: string, fetchFn: (id: string) => Promise<WorkflowAuthoritySnapshot>, options?: PollingAuthoritySourceOptions): WorkflowAuthoritySource;
444
+
445
+ declare const WorkflowScaleContext: react.Context<WorkflowScaleOptions>;
446
+
447
+ interface WorkflowStageListPartition {
448
+ visible: WorkflowContainerRuntimeNode[];
449
+ hiddenCount: number;
450
+ total: number;
451
+ /** 当前已展示的 done stage 数量 */
452
+ visibleDoneCount: number;
453
+ /** done stage 总数 */
454
+ totalDoneCount: number;
455
+ }
456
+ /**
457
+ * P3:running / failed / pending / blocked 全显;
458
+ * done 按 maxVisibleDoneCount 分页展示(默认最近 completedStagePageSize 条)。
459
+ * maxVisibleDoneCount 由 WorkflowStageListPanel 的 "Show N more" 逐页递增。
460
+ */
461
+ declare function partitionWorkflowStages(stages: WorkflowContainerRuntimeNode[], maxVisibleDoneCount: number, containersById?: Record<string, WorkflowContainerRuntimeNode>): WorkflowStageListPartition;
462
+
310
463
  /**
311
464
  * workflowSessionStore.ts — Workflow 页 zustand store
312
465
  *
@@ -338,14 +491,25 @@ interface WorkflowSessionStoreState {
338
491
  applyEvents: (events: LangchainAgentEvent[]) => void;
339
492
  reset: () => void;
340
493
  markAsError: (error?: Error) => void;
341
- /** SSE 正常结束:推断 done 并收口 running loop(嵌套 parallel 缺 workflow-end 兜底) */
342
- markStreamComplete: () => void;
494
+ /** SSE 传输结束:仅 display.streamEnded;不 infer 业务 done(D33) */
495
+ markStreamEnded: () => void;
496
+ /** 宿主 authority 快照写入(唯一业务终态入口) */
497
+ applyAuthoritySnapshot: (snapshot: WorkflowAuthoritySnapshot) => void;
498
+ /** §5.4:streamEnded + authority running 超时展示 */
499
+ setAwaitingAuthority: (value: boolean) => void;
500
+ setAuthoritySyncFailed: (value: boolean) => void;
501
+ setAuthoritySubscribeFailed: (value: boolean) => void;
343
502
  /** P2:展开 done stage 时 pin,避免淘汰 */
344
503
  pinLoopSession: (loopSessionId: string) => void;
345
504
  /** P2:宿主 replay 后灌入 loop 树(同步;测试与小批量) */
346
505
  hydrateLoopSession: (loopSessionId: string, events: LangchainAgentEvent[]) => void;
347
506
  /** DES-1:宿主默认 replay 路径 — 分批 + rAF yield */
348
507
  hydrateLoopSessionAsync: (loopSessionId: string, events: LangchainAgentEvent[], options?: HydrateLoopSessionAsyncOptions) => Promise<void>;
508
+ /** D36 P4:remount snapshot hydrate */
509
+ hydrateFromSnapshot: (snapshot: WorkflowDisplaySnapshot, options?: {
510
+ preserveAuthority?: boolean;
511
+ }) => void;
512
+ markSnapshotHydrateFailed: () => void;
349
513
  }
350
514
  interface HydrateLoopSessionAsyncOptions {
351
515
  chunkSize?: number;
@@ -355,7 +519,8 @@ type WorkflowSessionStore = StoreApi<WorkflowSessionStoreState>;
355
519
  declare function createWorkflowSessionStore(initialState?: WorkflowSessionState, storeOptions?: WorkflowSessionStoreOptions): WorkflowSessionStore;
356
520
 
357
521
  declare function useWorkflowSessionStoreApi(): WorkflowSessionStore;
358
- declare function useWorkflowSessionStatus(): SessionStatus;
522
+ /** 投影展示态(非 phase SSOT;phase 用 isAuthorityTerminal)。 */
523
+ declare function useWorkflowSessionStatus(): WorkflowDisplayProjectionStatus;
359
524
 
360
525
  interface WorkflowChromeProps {
361
526
  containerTree: WorkflowContainerTreeState;
@@ -478,6 +643,8 @@ interface ReduceOptions {
478
643
  tierOverrides?: TierOverrides;
479
644
  /** true 时 debug tier 也写入 debugEvents(AgentSession debug prop) */
480
645
  collectDebug?: boolean;
646
+ /** D19 §5.3 / D34 P2:leak main-tier tool-call 合成父 Agent progress;默认 off */
647
+ subagentLeakGate?: boolean;
481
648
  }
482
649
  declare function streamChunk(data: {
483
650
  delta?: string;
@@ -968,9 +1135,12 @@ declare class MissingApplicationKindError extends Error {
968
1135
  * 职责:SSE transport profile / policy 解析与终态、重连预算语义(D31 P1)。
969
1136
  * 链路位置:createAgentxSseSource 入口 → resolveSseTransportPolicy → 连接状态机。
970
1137
  * 当前裁剪范围:三预设 profile + 显式 policy 覆写;不含 backend replayMode。
1138
+ *
1139
+ * D33 分层:本模块 terminal 集合仅表示<strong>传输层</strong>字节流结束(finish / workflow-end 等),
1140
+ * 不等于 workflow 业务终态(authority);phase / spinner 读 WorkflowAuthoritySnapshot(见 D33)。
971
1141
  */
972
1142
 
973
- type SseTransportProfile = 'oneshot' | 'oneshot-workflow' | 'replayable-workflow';
1143
+ type SseTransportProfile = 'oneshot' | 'oneshot-workflow' | 'replayable-workflow' | 'workflow-tail';
974
1144
  type SseReplayMode = 'none' | 'resume' | 'history';
975
1145
  type SseReconnectMode = 'off' | 'bounded' | 'unbounded';
976
1146
  interface SseReconnectPolicy {
@@ -1084,6 +1254,7 @@ declare function createMockSource(events: LangchainAgentEvent[]): Source;
1084
1254
  interface ReplayOptions {
1085
1255
  tierOverrides?: TierOverrides;
1086
1256
  collectDebug?: boolean;
1257
+ subagentLeakGate?: boolean;
1087
1258
  }
1088
1259
  /** 从空树回放完整事件序列。 */
1089
1260
  declare function replayEvents(events: LangchainAgentEvent[], options?: ReplayOptions): SessionTree;
@@ -1155,9 +1326,41 @@ declare function createReplaySource(events: LangchainAgentEvent[], opts?: Replay
1155
1326
 
1156
1327
  /** Pure reducer:Workflow 会话状态 + 单条事件。 */
1157
1328
  declare function reduceWorkflowSession(state: WorkflowSessionState, event: LangchainAgentEvent, eventIndex: number, options?: ReduceOptions): WorkflowSessionState;
1329
+ /**
1330
+ * SSE 传输结束:仅设 display.streamEnded;不 infer projection done(D33)。
1331
+ * authority 已 terminal 时可选 force-settle 容器以对齐展示。
1332
+ */
1333
+ declare function finalizeWorkflowDisplayOnStreamEnded(state: WorkflowSessionState): WorkflowSessionState;
1158
1334
  /** 从空状态回放 workflow 事件序列。 */
1159
1335
  declare function reduceWorkflowEvents(events: LangchainAgentEvent[], options?: ReduceOptions): WorkflowSessionState;
1160
1336
 
1337
+ /**
1338
+ * workflowAuthoritySelectors.ts — Workflow authority/display 读法 SSOT
1339
+ *
1340
+ * 职责:
1341
+ * 宿主 phase、全局 spinner、警告条的唯一判定入口;禁止直接读 display 做 phase。
1342
+ *
1343
+ * 链路位置:
1344
+ * WorkflowSession · WorkflowChrome · workflowTaskListMerge。
1345
+ *
1346
+ * 当前裁剪范围:
1347
+ * Phase 1:核心 selector;resolveWorkflowBanner 组合矩阵 Phase 2 扩展。
1348
+ */
1349
+
1350
+ declare function isAuthorityTerminalStatus(status: WorkflowAuthorityStatus | undefined): boolean;
1351
+ declare function isAuthorityTerminal(state: WorkflowSessionState): boolean;
1352
+ /** 全局 workflow spinner:authority 非 terminal 时保持(含 projection 已 done 的 T2)。 */
1353
+ declare function shouldShowGlobalSpinner(state: WorkflowSessionState): boolean;
1354
+ interface WorkflowBannerDescriptor {
1355
+ kind: 'none' | 'authority_error' | 'partial_success' | 'forced_closeout' | 'projection_degraded' | 'snapshot_unavailable' | 'awaiting_authority' | 'sync_failed';
1356
+ message: string;
1357
+ }
1358
+ /** D36 §00.1 Banner 优先级栈(高→低)— 返回最高优先级一条。 */
1359
+ declare function resolveWorkflowBanner(state: WorkflowSessionState): WorkflowBannerDescriptor;
1360
+ /** UI 读投影态(非 phase SSOT)。 */
1361
+ declare function getDisplayProjectionStatus(state: WorkflowSessionState): WorkflowSessionState['display']['projectionStatus'];
1362
+ declare function applyAuthoritySnapshotToState(state: WorkflowSessionState, snapshot: WorkflowAuthoritySnapshot): WorkflowSessionState;
1363
+
1161
1364
  /** 与 backend/langchain_agentx_stream_ui_backend/task_sync/multi_sse_bridge.py 对齐 */
1162
1365
  declare const WORKFLOW_STRUCTURE_EVENT_PREFIXES: readonly string[];
1163
1366
  /** 显式 SSOT(文档/契约测试);新增结构类型应同时满足前缀规则或补入此集合 */
@@ -1183,6 +1386,24 @@ declare function filterAgentLoopReplayEvents<T extends {
1183
1386
  /** agent 事件缺 session_id 时,从 workflow_id (或 workflow_path 兜底) + scope key 推导。 */
1184
1387
  declare function deriveLoopSessionIdFromAgentEvent(event: LangchainAgentEvent): string | null;
1185
1388
 
1389
+ /**
1390
+ * hydrateWorkflowSnapshot.ts — remount SSOT(D36 P4)
1391
+ *
1392
+ * 职责:
1393
+ * WorkflowDisplaySnapshot → WorkflowSessionState 投影子集替换。
1394
+ *
1395
+ * 链路位置:
1396
+ * GET /projection/snapshot → workflowSessionStore.hydrateFromSnapshot。
1397
+ */
1398
+
1399
+ interface HydrateWorkflowSnapshotOptions {
1400
+ preserveAuthority?: boolean;
1401
+ }
1402
+ /** 判断 SSE event id 是否 ≤ projectionCursor(duplicate tail 丢弃)。 */
1403
+ declare function isAtOrBeforeProjectionCursor(projectionCursor: string | null | undefined, eventId: string | undefined): boolean;
1404
+ /** 冻结算法:替换投影子集,禁止写 authority(除非 preserveAuthority)。 */
1405
+ declare function hydrateWorkflowFromSnapshot(state: WorkflowSessionState, snapshot: WorkflowDisplaySnapshot, options?: HydrateWorkflowSnapshotOptions): WorkflowSessionState;
1406
+
1186
1407
  /**
1187
1408
  * 职责:事件分级类型(V2-A classify 层公共契约)。
1188
1409
  * 链路位置:classify.ts → reducer;AgentSession tierOverrides 传入。
@@ -1211,4 +1432,4 @@ interface ClassifyContext {
1211
1432
  declare function resolveEventTier(eventType: string, overrides?: TierOverrides): EventTier;
1212
1433
  declare function classifyEvent(event: LangchainAgentEvent, ctx: ClassifyContext, overrides?: TierOverrides, eventIndex?: number): ClassifiedEvent;
1213
1434
 
1214
- export { Agent, AgentLoopView, type AgentLoopViewProps, AgentSession, type AgentSessionProps, type AgentxMetaFrame, type AgentxSseSourceOptions, type ApplicationKind, ApplicationKindMismatchError, AskUserQuestion, BOUNDED_DEFAULTS, Bash, CanonicalNodeRef, type ClassifiedEvent, type ClassifyContext, CollapseKind, CollapsedExploreNode, type CollapsedExploreNodeProps, DEFAULT_WORKFLOW_SCALE_OPTIONS, type DiagramFitLayout, DiagramZoomShell, type DiagramZoomShellProps, DiagramZoomView, type DiagramZoomViewProps, DisplayMode, EXPECTED_PROTOCOL_VERSION, Edit, ErrorCard, EventTier, ExploreCollapseAccumulator, GROUPABLE_TOOL_NAMES, Glob, Grep, GroupedToolUseAccumulator, type HydrateLoopSessionAsyncOptions, InteractionBus, LangchainAgentEvent, MIN_HINT_DISPLAY_MS, MarkdownRenderer, MermaidDiagram, type MermaidDiagramProps, type MermaidInitOptions, type MermaidThemeName, MissingApplicationKindError, NodeRegistry, PROFILE_PRESETS, PermissionCard, PermissionUiMode, PlantUMLBlock, type PlantUMLBlockProps, PlantUMLDiagram, type PlantUMLDiagramProps, type ProjectedTimelineItem, ProjectionContext, DisplayMode as ProjectionDisplayMode, Read, ReasoningBubble, ReconnectBudget, type ReduceOptions, ReducerError, RenderableEntry, RenderableTimelineProjector, type ReplayOptions, type ReplaySourceOptions, RichMarkdown, type RichMarkdownProps, SHELL_PROGRESS_MIN_ELAPSED_SECONDS, SessionNode, SessionNodeKind, SessionStatus, SessionTree, Skill, Source, SourceEventContext, Spinner, type SpinnerProps, type SseReconnectMode, type SseReconnectPolicy, type SseReplayMode, type SseTerminalPolicy, type SseTransportFailureKind, type SseTransportPolicy, type SseTransportPolicyOverride, type SseTransportProfile, SseTransportTerminalError, StepCard, SubAgentBlock, SystemSummaryAccumulator, SystemSummaryNode, Task, TaskList, TaskListFooter, TextBubble, TierOverrides, Timeline, TimelineItem, ToolBodyMode, ToolCallCard, ToolDisplayRegistry, ToolProjectionClassifier, UnknownCard, WORKFLOW_STRUCTURE_EVENT_PREFIXES, WORKFLOW_STRUCTURE_EVENT_TYPES, WebFetch, WebSearch, WorkflowChrome, type WorkflowChromeProps, type WorkflowLoopReplayHandler, WorkflowLoopReplayProvider, type WorkflowProgressState, WorkflowScaleContext, type WorkflowScaleOptions, type WorkflowScopeFrame, WorkflowSession, type WorkflowSessionProps, type WorkflowSessionState, type WorkflowSessionStore, type WorkflowSessionStoreOptions, type WorkflowSessionStoreState, type WorkflowStageProgress, WorkflowTaskListFooter, type WorkflowTerminalKind, Write, buildCanonicalFromTree, buildRelevantMemoriesCanonical, buildResumeStreamUrl, buildSystemEventCanonical, buildTimelineEntries, classifyEvent, commandAsHint, computeViewportFitTransform, configureMermaid, configurePlantumlServer, createAgentxSseSource, createDefaultRegistry, createEmptyWorkflowSessionState, createMockSource, createReplaySource, createWorkflowSessionStore, deriveLoopSessionIdFromAgentEvent, entryKey, filterAgentLoopReplayEvents, fixDiagramSvg, formatAgentTitle, formatExploreSummaryText, formatHookFinishedSummary, formatShellProgressSuffix, formatTaskFooterLabel, getChildIds, getMainStageIds, isAgentLoopReplayEventType, isGitOperationCommand, isGroupableToolName, isMcpToolName, isSseStreamTerminalEvent, isWorkflowStructureEventType, iterMountCandidates, partitionWorkflowStages, projectCanonical, projectTimeline, reduceAgentLoopEvent, reduceEvents, reduceTree, reduceWorkflowEvents, reduceWorkflowSession, replayEvents, replayTree, resolveEventTier, resolveResponseId, resolveShellProgressFromPayload, resolveSseTransportPolicy, shouldShowTaskListFooter, streamChunk, useChildren, useInteractionBus, useInternalErrors, useMinDisplayTime, useNode, useNodeTyped, useProjectedTimeline, useReplayTree, useSessionMeta, useSessionStatus, useTimeline, useWorkflowSessionStatus, useWorkflowSessionStoreApi };
1435
+ export { Agent, AgentLoopView, type AgentLoopViewProps, AgentSession, type AgentSessionProps, type AgentxMetaFrame, type AgentxSseSourceOptions, type ApplicationKind, ApplicationKindMismatchError, AskUserQuestion, BOUNDED_DEFAULTS, Bash, CanonicalNodeRef, type ClassifiedEvent, type ClassifyContext, CollapseKind, CollapsedExploreNode, type CollapsedExploreNodeProps, DEFAULT_WORKFLOW_SCALE_OPTIONS, type DiagramFitLayout, DiagramZoomShell, type DiagramZoomShellProps, DiagramZoomView, type DiagramZoomViewProps, DisplayMode, EXPECTED_PROTOCOL_VERSION, Edit, ErrorCard, EventTier, ExploreCollapseAccumulator, GROUPABLE_TOOL_NAMES, Glob, Grep, GroupedToolUseAccumulator, type HydrateLoopSessionAsyncOptions, type HydrateWorkflowSnapshotOptions, InteractionBus, LangchainAgentEvent, MIN_HINT_DISPLAY_MS, MarkdownRenderer, MermaidDiagram, type MermaidDiagramProps, type MermaidInitOptions, type MermaidThemeName, MissingApplicationKindError, type MockAuthoritySourceOptions, NodeRegistry, PROFILE_PRESETS, PermissionCard, PermissionUiMode, PlantUMLBlock, type PlantUMLBlockProps, PlantUMLDiagram, type PlantUMLDiagramProps, type PollingAuthoritySourceOptions, type ProjectedTimelineItem, ProjectionContext, DisplayMode as ProjectionDisplayMode, Read, ReasoningBubble, ReconnectBudget, type ReduceOptions, ReducerError, RenderableEntry, RenderableTimelineProjector, type ReplayOptions, type ReplaySourceOptions, RichMarkdown, type RichMarkdownProps, SHELL_PROGRESS_MIN_ELAPSED_SECONDS, SessionNode, SessionNodeKind, SessionStatus, SessionTree, Skill, Source, SourceEventContext, Spinner, type SpinnerProps, type SseReconnectMode, type SseReconnectPolicy, type SseReplayMode, type SseTerminalPolicy, type SseTransportFailureKind, type SseTransportPolicy, type SseTransportPolicyOverride, type SseTransportProfile, SseTransportTerminalError, StepCard, SubAgentBlock, SystemSummaryAccumulator, SystemSummaryNode, Task, TaskList, TaskListFooter, TextBubble, TierOverrides, Timeline, TimelineItem, ToolBodyMode, ToolCallCard, ToolDisplayRegistry, ToolProjectionClassifier, UnknownCard, WORKFLOW_STRUCTURE_EVENT_PREFIXES, WORKFLOW_STRUCTURE_EVENT_TYPES, WebFetch, WebSearch, type WorkflowAuthoritySnapshot, type WorkflowAuthoritySource, type WorkflowAuthorityStatus, type WorkflowBannerDescriptor, WorkflowChrome, type WorkflowChromeProps, type WorkflowCoalescedBlock, type WorkflowDisplayProjection, type WorkflowDisplayProjectionStatus, type WorkflowDisplaySnapshot, type WorkflowDisplaySnapshotMetadata, type WorkflowLoopReplayHandler, WorkflowLoopReplayProvider, type WorkflowProgressState, WorkflowScaleContext, type WorkflowScaleOptions, type WorkflowScopeFrame, WorkflowSession, type WorkflowSessionProps, type WorkflowSessionState, type WorkflowSessionStore, type WorkflowSessionStoreOptions, type WorkflowSessionStoreState, type WorkflowSnapshotProjectionStatus, type WorkflowStageProgress, WorkflowTaskListFooter, type WorkflowTerminalKind, Write, applyAuthoritySnapshotToState, buildCanonicalFromTree, buildRelevantMemoriesCanonical, buildResumeStreamUrl, buildSystemEventCanonical, buildTimelineEntries, classifyEvent, commandAsHint, computeViewportFitTransform, configureMermaid, configurePlantumlServer, createAgentxSseSource, createControllableAuthoritySource, createDefaultRegistry, createDoneAuthoritySource, createEmptyWorkflowSessionState, createMockAuthoritySource, createMockSource, createPollingAuthoritySource, createReplaySource, createRunningAuthoritySource, createWorkflowSessionStore, deriveLoopSessionIdFromAgentEvent, entryKey, filterAgentLoopReplayEvents, finalizeWorkflowDisplayOnStreamEnded, fixDiagramSvg, formatAgentTitle, formatExploreSummaryText, formatHookFinishedSummary, formatShellProgressSuffix, formatTaskFooterLabel, getChildIds, getDisplayProjectionStatus, getMainStageIds, hydrateWorkflowFromSnapshot, isAgentLoopReplayEventType, isAtOrBeforeProjectionCursor, isAuthorityTerminal, isAuthorityTerminalStatus, isGitOperationCommand, isGroupableToolName, isMcpToolName, isSseStreamTerminalEvent, isWorkflowStructureEventType, iterMountCandidates, partitionWorkflowStages, projectCanonical, projectTimeline, reduceAgentLoopEvent, reduceEvents, reduceTree, reduceWorkflowEvents, reduceWorkflowSession, replayEvents, replayTree, resolveEventTier, resolveResponseId, resolveShellProgressFromPayload, resolveSseTransportPolicy, resolveWorkflowBanner, shouldShowGlobalSpinner, shouldShowTaskListFooter, streamChunk, useChildren, useInteractionBus, useInternalErrors, useMinDisplayTime, useNode, useNodeTyped, useProjectedTimeline, useReplayTree, useSessionMeta, useSessionStatus, useTimeline, useWorkflowSessionStatus, useWorkflowSessionStoreApi };