@github/copilot-sdk 1.0.13-preview.0 → 1.0.13-preview.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.
@@ -9,7 +9,7 @@ export type JsonValue = null | boolean | number | string | JsonValue[] | {
9
9
  /**
10
10
  * Union of all session event variants emitted by the Copilot CLI runtime.
11
11
  */
12
- export type SessionEvent = StartEvent | ResumeEvent | RemoteSteerableChangedEvent | ErrorEvent | IdleEvent | TitleChangedEvent | ScheduleCreatedEvent | ScheduleCancelledEvent | ScheduleRearmedEvent | AutopilotObjectiveChangedEvent | InfoEvent | WarningEvent | ModelChangeEvent | ModeChangedEvent | SessionLimitsChangedEvent | PermissionsChangedEvent | PlanChangedEvent | TodosChangedEvent | WorkspaceFileChangedEvent | HandoffEvent | TruncationEvent | SnapshotRewindEvent | ShutdownEvent | UsageCheckpointEvent | ContextChangedEvent | UsageInfoEvent | ContextClearedEvent | CompactionStartEvent | CompactionCompleteEvent | TaskCompleteEvent | UserMessageEvent | PendingMessagesModifiedEvent | AssistantTurnStartEvent | AssistantIntentEvent | AssistantServerToolProgressEvent | AssistantReasoningEvent | AssistantReasoningDeltaEvent | AssistantToolCallDeltaEvent | AssistantStreamingDeltaEvent | AssistantMessageEvent | AssistantMessageStartEvent | AssistantMessageDeltaEvent | AssistantTurnEndEvent | AssistantIdleEvent | AssistantUsageEvent | ModelCallFailureEvent | AbortEvent | ToolUserRequestedEvent | ToolExecutionStartEvent | ToolExecutionPartialResultEvent | ToolExecutionProgressEvent | ToolExecutionCompleteEvent | ToolSearchActivatedEvent | SkillInvokedEvent | SubagentStartedEvent | SubagentCompletedEvent | SubagentFailedEvent | SubagentSelectedEvent | SubagentDeselectedEvent | HookStartEvent | HookEndEvent | HookProgressEvent | BinaryAssetEvent | SystemMessageEvent | SystemNotificationEvent | PermissionRequestedEvent | PermissionCompletedEvent | UserInputRequestedEvent | UserInputCompletedEvent | ElicitationRequestedEvent | ElicitationCompletedEvent | SamplingRequestedEvent | SamplingCompletedEvent | McpOauthRequiredEvent | McpOauthCompletedEvent | McpHeadersRefreshRequiredEvent | McpHeadersRefreshCompletedEvent | CustomNotificationEvent | UIEphemeralQueryEvent | ExternalToolRequestedEvent | ExternalToolCompletedEvent | CommandQueuedEvent | CommandExecuteEvent | CommandCompletedEvent | AutoModeSwitchRequestedEvent | AutoModeSwitchCompletedEvent | SessionLimitsExhaustedRequestedEvent | SessionLimitsExhaustedCompletedEvent | AutoModeResolvedEvent | ManagedSettingsResolvedEvent | ManagedSettingsEnforcedEvent | CommandsChangedEvent | CapabilitiesChangedEvent | ExitPlanModeRequestedEvent | ExitPlanModeCompletedEvent | ToolsUpdatedEvent | BackgroundTasksChangedEvent | FactoryRunUpdatedEvent | FactoryRunStartedEvent | FactoryRunSettledEvent | SkillsLoadedEvent | CustomAgentsUpdatedEvent | McpServersLoadedEvent | McpServerStatusChangedEvent | McpToolsListChangedEvent | McpResourcesListChangedEvent | McpPromptsListChangedEvent | ExtensionsLoadedEvent | CanvasOpenedEvent | CanvasRegistryChangedEvent | CanvasClosedEvent | CanvasUnavailableEvent | CanvasRecordedEvent | CanvasRemovedEvent | ExtensionsAttachmentsPushedEvent | McpAppToolCallCompleteEvent;
12
+ export type SessionEvent = StartEvent | ResumeEvent | RemoteSteerableChangedEvent | ErrorEvent | IdleEvent | TitleChangedEvent | ScheduleCreatedEvent | ScheduleCancelledEvent | ScheduleRearmedEvent | AutopilotObjectiveChangedEvent | InfoEvent | WarningEvent | ModelChangeEvent | ModeChangedEvent | SessionLimitsChangedEvent | PermissionsChangedEvent | PlanChangedEvent | TodosChangedEvent | WorkspaceFileChangedEvent | HandoffEvent | TruncationEvent | SnapshotRewindEvent | ShutdownEvent | UsageCheckpointEvent | ContextChangedEvent | UsageInfoEvent | ContextClearedEvent | CompactionStartEvent | CompactionCompleteEvent | TaskCompleteEvent | FusionRouteStartedEvent | FusionRouteFailedEvent | FusionResolvedEvent | FusionCompletedEvent | UserMessageEvent | PendingMessagesModifiedEvent | AssistantTurnStartEvent | AssistantIntentEvent | AssistantFusionPhaseStartedEvent | AssistantFusionPhaseCompletedEvent | AssistantFusionPhaseFailedEvent | AssistantServerToolProgressEvent | AssistantReasoningEvent | AssistantReasoningDeltaEvent | AssistantToolCallDeltaEvent | AssistantStreamingDeltaEvent | AssistantMessageEvent | AssistantMessageStartEvent | AssistantMessageDeltaEvent | AssistantTurnEndEvent | AssistantIdleEvent | AssistantUsageEvent | ModelCallFailureEvent | ModelCallFinishedEvent | AbortEvent | ToolUserRequestedEvent | ToolExecutionStartEvent | ToolExecutionPartialResultEvent | ToolExecutionProgressEvent | ToolExecutionCompleteEvent | ToolSearchActivatedEvent | SkillInvokedEvent | SubagentStartedEvent | SubagentConfiguredEvent | SubagentCompletedEvent | SubagentFailedEvent | SubagentSelectedEvent | SubagentDeselectedEvent | HookStartEvent | HookEndEvent | HookProgressEvent | BinaryAssetEvent | SystemMessageEvent | SystemNotificationEvent | PermissionRequestedEvent | PermissionCompletedEvent | UserInputRequestedEvent | UserInputCompletedEvent | ElicitationRequestedEvent | ElicitationCompletedEvent | SamplingRequestedEvent | SamplingCompletedEvent | McpOauthRequiredEvent | McpOauthCompletedEvent | McpHeadersRefreshRequiredEvent | McpHeadersRefreshCompletedEvent | CustomNotificationEvent | UIEphemeralQueryEvent | ExternalToolRequestedEvent | ExternalToolCompletedEvent | CommandQueuedEvent | CommandExecuteEvent | CommandCompletedEvent | AutoModeSwitchRequestedEvent | AutoModeSwitchCompletedEvent | SessionLimitsExhaustedRequestedEvent | SessionLimitsExhaustedCompletedEvent | AutoModeResolvedEvent | ManagedSettingsResolvedEvent | ManagedSettingsEnforcedEvent | CommandsChangedEvent | CapabilitiesChangedEvent | ExitPlanModeRequestedEvent | ExitPlanModeCompletedEvent | ToolsUpdatedEvent | BackgroundTasksChangedEvent | FactoryRunUpdatedEvent | FactoryRunStartedEvent | FactoryRunSettledEvent | SkillsLoadedEvent | CustomAgentsUpdatedEvent | McpServersLoadedEvent | McpServerStatusChangedEvent | McpToolsListChangedEvent | McpResourcesListChangedEvent | McpPromptsListChangedEvent | ExtensionsLoadedEvent | CanvasOpenedEvent | CanvasRegistryChangedEvent | CanvasClosedEvent | CanvasUnavailableEvent | CanvasRecordedEvent | CanvasRemovedEvent | ExtensionsAttachmentsPushedEvent | McpAppToolCallCompleteEvent;
13
13
  /**
14
14
  * Hosting platform type of the repository (github or ado)
15
15
  */
@@ -46,6 +46,16 @@ export type Verbosity =
46
46
  | "medium"
47
47
  /** A more detailed response was requested. */
48
48
  | "high";
49
+ /**
50
+ * The session mode the agent is operating in
51
+ */
52
+ export type SessionMode =
53
+ /** The agent is responding interactively to the user. */
54
+ "interactive"
55
+ /** The agent is preparing a plan before making changes. */
56
+ | "plan"
57
+ /** The agent is working autonomously toward task completion. */
58
+ | "autopilot";
49
59
  /**
50
60
  * Who created the schedule: `user` (an explicit user action such as `/every` or `/after`) or `model` (the agent via the `manage_schedule` tool). Gates whether a scheduled skill that opted out of model invocation may fire: only user-created schedules may.
51
61
  */
@@ -102,16 +112,6 @@ export type ModelChangeSource =
102
112
  | "automatic"
103
113
  /** An SDK or RPC caller selected the model. */
104
114
  | "sdk";
105
- /**
106
- * The session mode the agent is operating in
107
- */
108
- export type SessionMode =
109
- /** The agent is responding interactively to the user. */
110
- "interactive"
111
- /** The agent is preparing a plan before making changes. */
112
- | "plan"
113
- /** The agent is working autonomously toward task completion. */
114
- | "autopilot";
115
115
  /**
116
116
  * Permission mode for the session.
117
117
  */
@@ -181,6 +181,35 @@ export type TaskCompletionOutcome =
181
181
  | "continue"
182
182
  /** Completion cannot proceed without intervention; the active objective is paused when one is identified. */
183
183
  | "blocked";
184
+ /**
185
+ * Kind of turn for which HydraFusion routing is running.
186
+ */
187
+ /** @experimental */
188
+ export type FusionTurnKind =
189
+ /** A user-message turn. */
190
+ "user"
191
+ /** A conversation-compaction turn. */
192
+ | "compaction";
193
+ /**
194
+ * Server-recommended routing behavior for a later HydraFusion turn.
195
+ */
196
+ /** @experimental */
197
+ export type FusionFollowUpAction =
198
+ /** Reuse the durable primary model without routing. */
199
+ "reuse_primary"
200
+ /** Request a new routing decision. */
201
+ | "reroute";
202
+ /**
203
+ * Validated HydraFusion execution pattern.
204
+ */
205
+ /** @experimental */
206
+ export type FusionPattern =
207
+ /** Run one primary solver phase. */
208
+ "single"
209
+ /** Run a primary phase, a judge, and an optional repair. */
210
+ | "cascade"
211
+ /** Run a primary draft, a read-only critique, and a revision. */
212
+ | "critique";
184
213
  /**
185
214
  * The agent mode that was active when this message was sent
186
215
  */
@@ -225,6 +254,45 @@ export type UserMessageDelivery =
225
254
  | "steering"
226
255
  /** Enqueued while the agent was busy; processed as its own run afterward. */
227
256
  | "queued";
257
+ /**
258
+ * Conversation scope in which a HydraFusion phase executes.
259
+ */
260
+ /** @experimental */
261
+ export type FusionConversationScope =
262
+ /** Canonical root conversation history. */
263
+ "root"
264
+ /** Isolated read-only review history that does not enter the root conversation. */
265
+ | "review";
266
+ /**
267
+ * HydraFusion phase kind.
268
+ */
269
+ /** @experimental */
270
+ export type FusionPhaseKind =
271
+ /** Primary solver phase. */
272
+ "primary"
273
+ /** Read-only cascade judge phase. */
274
+ | "judge"
275
+ /** Cascade repair phase. */
276
+ | "repair"
277
+ /** Initial critique-pattern draft phase. */
278
+ | "draft"
279
+ /** Read-only critique phase. */
280
+ | "critic"
281
+ /** Critique-pattern revision phase. */
282
+ | "revision"
283
+ /** Follow-up phase continuing from the resolved model. */
284
+ | "follow_up";
285
+ /**
286
+ * Durable outcome status of a HydraFusion phase.
287
+ */
288
+ /** @experimental */
289
+ export type FusionPhaseStatus =
290
+ /** The phase completed successfully. */
291
+ "succeeded"
292
+ /** The phase failed. */
293
+ | "failed"
294
+ /** The phase was cancelled. */
295
+ | "cancelled";
228
296
  /**
229
297
  * Tool call type: "function" for standard tool calls, "custom" for grammar-based tool calls. Defaults to "function" when absent.
230
298
  */
@@ -303,6 +371,18 @@ export type ModelCallFailureTransport =
303
371
  "http"
304
372
  /** WebSocket transport. */
305
373
  | "websocket";
374
+ /**
375
+ * Final outcome of one logical model dispatch after response acceptance processing
376
+ */
377
+ export type ModelCallFinishedOutcome =
378
+ /** The provider response was accepted for continued agent processing. */
379
+ "success"
380
+ /** The dispatch ended with a provider or transport error. */
381
+ | "error"
382
+ /** The dispatch was cancelled before an accepted response was produced. */
383
+ | "cancelled"
384
+ /** The provider response was rejected during post-response acceptance processing. */
385
+ | "rejected";
306
386
  /**
307
387
  * Finite reason code describing why the current turn was aborted
308
388
  */
@@ -665,7 +745,9 @@ export type ManagedSettingsEnforcedEscalation =
665
745
  /** Unrestricted filesystem access outside the session's allowed directories. */
666
746
  | "unrestricted_paths"
667
747
  /** Unrestricted URL fetch access. */
668
- | "unrestricted_urls";
748
+ | "unrestricted_urls"
749
+ /** A server-wide MCP "Always Allow" (or `--allow-tool <server>`) blanket that would auto-approve every tool from an MCP server. Capped to per-tool approval; each tool still prompts. */
750
+ | "server_wide_mcp_approval";
669
751
  /**
670
752
  * Exit plan mode action
671
753
  */
@@ -1156,6 +1238,7 @@ export interface IdleData {
1156
1238
  * True when the preceding agentic loop was cancelled via abort signal
1157
1239
  */
1158
1240
  aborted?: boolean;
1241
+ mode?: SessionMode;
1159
1242
  }
1160
1243
  /**
1161
1244
  * Session event "session.title_changed". Session title change payload containing the new display title
@@ -2468,6 +2551,10 @@ export interface CompactionCompleteEvent {
2468
2551
  * Conversation compaction results including success status, metrics, and optional error details
2469
2552
  */
2470
2553
  export interface CompactionCompleteData {
2554
+ /**
2555
+ * Canonical model identifier used for model-specific behavior when replaying compaction
2556
+ */
2557
+ behaviorModelId?: string;
2471
2558
  /**
2472
2559
  * Checkpoint snapshot number created for recovery
2473
2560
  */
@@ -2645,6 +2732,365 @@ export interface TaskCompleteData {
2645
2732
  */
2646
2733
  summary?: string;
2647
2734
  }
2735
+ /**
2736
+ * Session event "session.fusion_route_started". Experimental transient signal that HydraFusion routing has started for an eligible turn.
2737
+ */
2738
+ /** @experimental */
2739
+ export interface FusionRouteStartedEvent {
2740
+ /**
2741
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
2742
+ */
2743
+ agentId?: string;
2744
+ data: FusionRouteStartedData;
2745
+ /**
2746
+ * Always true for events that are transient and not persisted to the session event log on disk.
2747
+ */
2748
+ ephemeral: true;
2749
+ /**
2750
+ * Unique event identifier (UUID v4), generated when the event is emitted
2751
+ */
2752
+ id: string;
2753
+ /**
2754
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
2755
+ */
2756
+ parentId: string | null;
2757
+ /**
2758
+ * ISO 8601 timestamp when the event was created
2759
+ */
2760
+ timestamp: string;
2761
+ /**
2762
+ * Type discriminator. Always "session.fusion_route_started".
2763
+ */
2764
+ type: "session.fusion_route_started";
2765
+ }
2766
+ /**
2767
+ * Experimental transient signal that HydraFusion routing has started for an eligible turn.
2768
+ */
2769
+ /** @experimental */
2770
+ export interface FusionRouteStartedData {
2771
+ /**
2772
+ * Identifier for this routing attempt before a durable Fusion turn exists.
2773
+ */
2774
+ attemptId: string;
2775
+ /**
2776
+ * HydraFusion routing policy requested for the turn.
2777
+ */
2778
+ policy?: string;
2779
+ /**
2780
+ * Synthetic HydraFusion model selected for the session.
2781
+ */
2782
+ syntheticModel?: string;
2783
+ turnKind: FusionTurnKind;
2784
+ }
2785
+ /**
2786
+ * Session event "session.fusion_route_failed". Experimental durable HydraFusion routing failure and the deterministic concrete fallback selected for the turn.
2787
+ */
2788
+ /** @experimental */
2789
+ export interface FusionRouteFailedEvent {
2790
+ /**
2791
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
2792
+ */
2793
+ agentId?: string;
2794
+ data: FusionRouteFailedData;
2795
+ /**
2796
+ * When true, the event is transient and not persisted to the session event log on disk
2797
+ */
2798
+ ephemeral?: boolean;
2799
+ /**
2800
+ * Unique event identifier (UUID v4), generated when the event is emitted
2801
+ */
2802
+ id: string;
2803
+ /**
2804
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
2805
+ */
2806
+ parentId: string | null;
2807
+ /**
2808
+ * ISO 8601 timestamp when the event was created
2809
+ */
2810
+ timestamp: string;
2811
+ /**
2812
+ * Type discriminator. Always "session.fusion_route_failed".
2813
+ */
2814
+ type: "session.fusion_route_failed";
2815
+ }
2816
+ /**
2817
+ * Experimental durable HydraFusion routing failure and the deterministic concrete fallback selected for the turn.
2818
+ */
2819
+ /** @experimental */
2820
+ export interface FusionRouteFailedData {
2821
+ /**
2822
+ * Identifier of the routing attempt that failed.
2823
+ */
2824
+ attemptId: string;
2825
+ /**
2826
+ * Provider or validation error detail, when available.
2827
+ */
2828
+ errorMessage?: string;
2829
+ /**
2830
+ * Concrete model selected as the deterministic fallback.
2831
+ */
2832
+ fallbackModel: string;
2833
+ /**
2834
+ * HydraFusion routing policy requested for the turn.
2835
+ */
2836
+ policy: string;
2837
+ /**
2838
+ * Stable machine-readable reason for the routing failure.
2839
+ */
2840
+ reason: string;
2841
+ /**
2842
+ * Elapsed routing time in milliseconds before the failure.
2843
+ */
2844
+ routingLatencyMs?: number;
2845
+ /**
2846
+ * Synthetic HydraFusion model selected for the session.
2847
+ */
2848
+ syntheticModel: string;
2849
+ }
2850
+ /**
2851
+ * Session event "session.fusion_resolved". Experimental durable validated HydraFusion route and turn policy.
2852
+ */
2853
+ /** @experimental */
2854
+ export interface FusionResolvedEvent {
2855
+ /**
2856
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
2857
+ */
2858
+ agentId?: string;
2859
+ data: FusionResolvedData;
2860
+ /**
2861
+ * When true, the event is transient and not persisted to the session event log on disk
2862
+ */
2863
+ ephemeral?: boolean;
2864
+ /**
2865
+ * Unique event identifier (UUID v4), generated when the event is emitted
2866
+ */
2867
+ id: string;
2868
+ /**
2869
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
2870
+ */
2871
+ parentId: string | null;
2872
+ /**
2873
+ * ISO 8601 timestamp when the event was created
2874
+ */
2875
+ timestamp: string;
2876
+ /**
2877
+ * Type discriminator. Always "session.fusion_resolved".
2878
+ */
2879
+ type: "session.fusion_resolved";
2880
+ }
2881
+ /**
2882
+ * Experimental durable validated HydraFusion route and turn policy.
2883
+ */
2884
+ /** @experimental */
2885
+ export interface FusionResolvedData {
2886
+ /**
2887
+ * Version of the validated HydraFusion event contract.
2888
+ */
2889
+ contractVersion: number;
2890
+ /**
2891
+ * Concrete model used when the planned primary model cannot execute.
2892
+ */
2893
+ fallbackModel: string;
2894
+ followUp?: FusionFollowUpRecommendation;
2895
+ /**
2896
+ * Concrete model recommended for eligible follow-up turns.
2897
+ */
2898
+ followUpModel: string;
2899
+ /**
2900
+ * Stable identifier for the resolved HydraFusion turn.
2901
+ */
2902
+ fusionId: string;
2903
+ /**
2904
+ * Version of the executable model universe used for selection.
2905
+ */
2906
+ modelUniverseVersion?: string;
2907
+ pattern: FusionPattern;
2908
+ /**
2909
+ * Version of the validated execution-plan format.
2910
+ */
2911
+ planVersion?: string;
2912
+ /**
2913
+ * HydraFusion routing policy used to resolve the plan.
2914
+ */
2915
+ policy: string;
2916
+ /**
2917
+ * Version of the local routing policy.
2918
+ */
2919
+ policyVersion?: string;
2920
+ /**
2921
+ * Concrete model selected for the primary solver phase.
2922
+ */
2923
+ primaryModel: string;
2924
+ /**
2925
+ * Router implementation that supplied the plan.
2926
+ */
2927
+ routeSource?: string;
2928
+ /**
2929
+ * Elapsed time in milliseconds required to resolve and validate the route.
2930
+ */
2931
+ routingLatencyMs?: number;
2932
+ /**
2933
+ * Identifier of the local policy rule that matched.
2934
+ */
2935
+ ruleId?: string;
2936
+ /**
2937
+ * Zero-based index of the local policy rule that matched.
2938
+ */
2939
+ ruleIndex?: number;
2940
+ /**
2941
+ * Human-readable name of the local policy rule that matched.
2942
+ */
2943
+ ruleName?: string;
2944
+ scores?: FusionScores;
2945
+ /**
2946
+ * Concrete model selected for the review or judge phase, when required.
2947
+ */
2948
+ secondaryModel: string | null;
2949
+ /**
2950
+ * Synthetic HydraFusion model selected for the session.
2951
+ */
2952
+ syntheticModel: string;
2953
+ /**
2954
+ * Identifier of the session turn associated with the route.
2955
+ */
2956
+ turnId: string;
2957
+ }
2958
+ /**
2959
+ * Durable server recommendation for subsequent HydraFusion turns.
2960
+ */
2961
+ /** @experimental */
2962
+ export interface FusionFollowUpRecommendation {
2963
+ compactionTurn: FusionFollowUpAction;
2964
+ userTurn: FusionFollowUpAction;
2965
+ }
2966
+ /**
2967
+ * Validated HydraFusion routing capability scores.
2968
+ */
2969
+ /** @experimental */
2970
+ export interface FusionScores {
2971
+ /**
2972
+ * Code-generation capability score returned by the authenticated router.
2973
+ */
2974
+ codeGen: number;
2975
+ /**
2976
+ * Debugging capability score returned by the authenticated router.
2977
+ */
2978
+ debugging: number;
2979
+ /**
2980
+ * Reasoning capability score returned by the authenticated router.
2981
+ */
2982
+ reasoning: number;
2983
+ /**
2984
+ * Tool-use capability score returned by the authenticated router.
2985
+ */
2986
+ toolUse: number;
2987
+ }
2988
+ /**
2989
+ * Session event "session.fusion_completed". Experimental durable aggregate outcome of a HydraFusion turn.
2990
+ */
2991
+ /** @experimental */
2992
+ export interface FusionCompletedEvent {
2993
+ /**
2994
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
2995
+ */
2996
+ agentId?: string;
2997
+ data: FusionCompletedData;
2998
+ /**
2999
+ * When true, the event is transient and not persisted to the session event log on disk
3000
+ */
3001
+ ephemeral?: boolean;
3002
+ /**
3003
+ * Unique event identifier (UUID v4), generated when the event is emitted
3004
+ */
3005
+ id: string;
3006
+ /**
3007
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
3008
+ */
3009
+ parentId: string | null;
3010
+ /**
3011
+ * ISO 8601 timestamp when the event was created
3012
+ */
3013
+ timestamp: string;
3014
+ /**
3015
+ * Type discriminator. Always "session.fusion_completed".
3016
+ */
3017
+ type: "session.fusion_completed";
3018
+ }
3019
+ /**
3020
+ * Experimental durable aggregate outcome of a HydraFusion turn.
3021
+ */
3022
+ /** @experimental */
3023
+ export interface FusionCompletedData {
3024
+ /**
3025
+ * Total cached input tokens reported across all phases.
3026
+ */
3027
+ cachedTokens: number;
3028
+ /**
3029
+ * Total tokens written to prompt cache across all phases.
3030
+ */
3031
+ cacheWriteTokens?: number;
3032
+ /**
3033
+ * Idempotency identifier for the authoritative final commit.
3034
+ */
3035
+ commitId: string;
3036
+ /**
3037
+ * Reason the turn used a degraded route, when applicable.
3038
+ */
3039
+ degradedReason: string | null;
3040
+ /**
3041
+ * Total elapsed execution time for the HydraFusion turn in milliseconds.
3042
+ */
3043
+ durationMs: number;
3044
+ /**
3045
+ * Concrete model that supplied the authoritative final content.
3046
+ */
3047
+ finalSourceModel: string | null;
3048
+ /**
3049
+ * Phase whose output supplied the authoritative final content.
3050
+ */
3051
+ finalSourcePhaseId: string | null;
3052
+ /**
3053
+ * Concrete model recommended for eligible follow-up turns.
3054
+ */
3055
+ followUpModel: string;
3056
+ /**
3057
+ * Stable identifier for the completed HydraFusion turn.
3058
+ */
3059
+ fusionId: string;
3060
+ /**
3061
+ * Total input tokens consumed across all phases.
3062
+ */
3063
+ inputTokens: number;
3064
+ /**
3065
+ * Stable aggregate outcome of the HydraFusion turn.
3066
+ */
3067
+ outcome: string;
3068
+ /**
3069
+ * Total output tokens produced across all phases.
3070
+ */
3071
+ outputTokens: number;
3072
+ pattern: FusionPattern;
3073
+ /**
3074
+ * Number of concrete phases attempted by the turn.
3075
+ */
3076
+ phaseCount: number;
3077
+ /**
3078
+ * Total concrete model requests made across all phases.
3079
+ */
3080
+ requestCount: number;
3081
+ /**
3082
+ * Synthetic HydraFusion model selected for the session.
3083
+ */
3084
+ syntheticModel: string;
3085
+ /**
3086
+ * Total normalized AI-unit cost reported across all phases, in nano-AIU.
3087
+ */
3088
+ totalNanoAiu: number;
3089
+ /**
3090
+ * Identifier of the session turn associated with the completion.
3091
+ */
3092
+ turnId: string;
3093
+ }
2648
3094
  /**
2649
3095
  * Session event "user.message". Payload of `user.message` with displayed and model-transformed content, attachments, source/delivery metadata, mode, and telemetry IDs.
2650
3096
  */
@@ -3186,75 +3632,270 @@ export interface PendingMessagesModifiedEvent {
3186
3632
  */
3187
3633
  timestamp: string;
3188
3634
  /**
3189
- * Type discriminator. Always "pending_messages.modified".
3635
+ * Type discriminator. Always "pending_messages.modified".
3636
+ */
3637
+ type: "pending_messages.modified";
3638
+ }
3639
+ /**
3640
+ * Empty payload; the event signals that the pending message queue has changed
3641
+ */
3642
+ export interface PendingMessagesModifiedData {
3643
+ }
3644
+ /**
3645
+ * Session event "assistant.turn_start". Turn initialization metadata including identifier and interaction tracking
3646
+ */
3647
+ export interface AssistantTurnStartEvent {
3648
+ /**
3649
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
3650
+ */
3651
+ agentId?: string;
3652
+ data: AssistantTurnStartData;
3653
+ /**
3654
+ * When true, the event is transient and not persisted to the session event log on disk
3655
+ */
3656
+ ephemeral?: boolean;
3657
+ /**
3658
+ * Unique event identifier (UUID v4), generated when the event is emitted
3659
+ */
3660
+ id: string;
3661
+ /**
3662
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
3663
+ */
3664
+ parentId: string | null;
3665
+ /**
3666
+ * ISO 8601 timestamp when the event was created
3667
+ */
3668
+ timestamp: string;
3669
+ /**
3670
+ * Type discriminator. Always "assistant.turn_start".
3671
+ */
3672
+ type: "assistant.turn_start";
3673
+ }
3674
+ /**
3675
+ * Turn initialization metadata including identifier and interaction tracking
3676
+ */
3677
+ export interface AssistantTurnStartData {
3678
+ /**
3679
+ * CAPI interaction ID for correlating this turn with upstream telemetry
3680
+ */
3681
+ interactionId?: string;
3682
+ /**
3683
+ * Model identifier used for this turn, when known
3684
+ */
3685
+ model?: string;
3686
+ /**
3687
+ * Identifier for this turn within the agentic loop, typically a stringified turn number
3688
+ */
3689
+ turnId: string;
3690
+ }
3691
+ /**
3692
+ * Session event "assistant.intent". Agent intent description for current activity or plan
3693
+ */
3694
+ export interface AssistantIntentEvent {
3695
+ /**
3696
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
3697
+ */
3698
+ agentId?: string;
3699
+ data: AssistantIntentData;
3700
+ /**
3701
+ * Always true for events that are transient and not persisted to the session event log on disk.
3702
+ */
3703
+ ephemeral: true;
3704
+ /**
3705
+ * Unique event identifier (UUID v4), generated when the event is emitted
3706
+ */
3707
+ id: string;
3708
+ /**
3709
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
3710
+ */
3711
+ parentId: string | null;
3712
+ /**
3713
+ * ISO 8601 timestamp when the event was created
3714
+ */
3715
+ timestamp: string;
3716
+ /**
3717
+ * Type discriminator. Always "assistant.intent".
3718
+ */
3719
+ type: "assistant.intent";
3720
+ }
3721
+ /**
3722
+ * Agent intent description for current activity or plan
3723
+ */
3724
+ export interface AssistantIntentData {
3725
+ /**
3726
+ * Short description of what the agent is currently doing or planning to do
3727
+ */
3728
+ intent: string;
3729
+ }
3730
+ /**
3731
+ * Session event "assistant.fusion_phase_started". Experimental transient HydraFusion phase/model/role signal.
3732
+ */
3733
+ /** @experimental */
3734
+ export interface AssistantFusionPhaseStartedEvent {
3735
+ /**
3736
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
3737
+ */
3738
+ agentId?: string;
3739
+ data: FusionPhaseStartedData;
3740
+ /**
3741
+ * Always true for events that are transient and not persisted to the session event log on disk.
3742
+ */
3743
+ ephemeral: true;
3744
+ /**
3745
+ * Unique event identifier (UUID v4), generated when the event is emitted
3746
+ */
3747
+ id: string;
3748
+ /**
3749
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
3750
+ */
3751
+ parentId: string | null;
3752
+ /**
3753
+ * ISO 8601 timestamp when the event was created
3754
+ */
3755
+ timestamp: string;
3756
+ /**
3757
+ * Type discriminator. Always "assistant.fusion_phase_started".
3758
+ */
3759
+ type: "assistant.fusion_phase_started";
3760
+ }
3761
+ /**
3762
+ * Experimental transient HydraFusion phase/model/role signal.
3763
+ */
3764
+ /** @experimental */
3765
+ export interface FusionPhaseStartedData {
3766
+ conversationScope: FusionConversationScope;
3767
+ /**
3768
+ * Identifier of the HydraFusion turn containing the phase.
3769
+ */
3770
+ fusionId: string;
3771
+ /**
3772
+ * Concrete model executing the phase.
3773
+ */
3774
+ model: string;
3775
+ pattern: FusionPattern;
3776
+ /**
3777
+ * Stable identifier for the concrete phase.
3778
+ */
3779
+ phaseId: string;
3780
+ phaseKind: FusionPhaseKind;
3781
+ /**
3782
+ * Semantic role assigned to the phase.
3783
+ */
3784
+ role: string;
3785
+ }
3786
+ /**
3787
+ * Session event "assistant.fusion_phase_completed". Experimental durable HydraFusion phase output and lossless replay checkpoint.
3788
+ */
3789
+ /** @experimental */
3790
+ export interface AssistantFusionPhaseCompletedEvent {
3791
+ /**
3792
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
3793
+ */
3794
+ agentId?: string;
3795
+ data: FusionPhaseCompletedData;
3796
+ /**
3797
+ * When true, the event is transient and not persisted to the session event log on disk
3798
+ */
3799
+ ephemeral?: boolean;
3800
+ /**
3801
+ * Unique event identifier (UUID v4), generated when the event is emitted
3802
+ */
3803
+ id: string;
3804
+ /**
3805
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
3806
+ */
3807
+ parentId: string | null;
3808
+ /**
3809
+ * ISO 8601 timestamp when the event was created
3810
+ */
3811
+ timestamp: string;
3812
+ /**
3813
+ * Type discriminator. Always "assistant.fusion_phase_completed".
3190
3814
  */
3191
- type: "pending_messages.modified";
3192
- }
3193
- /**
3194
- * Empty payload; the event signals that the pending message queue has changed
3195
- */
3196
- export interface PendingMessagesModifiedData {
3815
+ type: "assistant.fusion_phase_completed";
3197
3816
  }
3198
3817
  /**
3199
- * Session event "assistant.turn_start". Turn initialization metadata including identifier and interaction tracking
3818
+ * Experimental durable HydraFusion phase output and lossless replay checkpoint.
3200
3819
  */
3201
- export interface AssistantTurnStartEvent {
3820
+ /** @experimental */
3821
+ export interface FusionPhaseCompletedData {
3202
3822
  /**
3203
- * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
3823
+ * Provider-normalized textual output produced by the phase.
3204
3824
  */
3205
- agentId?: string;
3206
- data: AssistantTurnStartData;
3825
+ content: string;
3826
+ conversationScope: FusionConversationScope;
3207
3827
  /**
3208
- * When true, the event is transient and not persisted to the session event log on disk
3828
+ * Elapsed execution time for the phase in milliseconds.
3209
3829
  */
3210
- ephemeral?: boolean;
3830
+ durationMs: number;
3211
3831
  /**
3212
- * Unique event identifier (UUID v4), generated when the event is emitted
3832
+ * Identifier of the HydraFusion turn containing the phase.
3213
3833
  */
3214
- id: string;
3834
+ fusionId: string;
3215
3835
  /**
3216
- * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
3836
+ * Concrete model that executed the phase.
3217
3837
  */
3218
- parentId: string | null;
3838
+ model: string;
3219
3839
  /**
3220
- * ISO 8601 timestamp when the event was created
3840
+ * Stable identifier for the completed phase.
3221
3841
  */
3222
- timestamp: string;
3842
+ phaseId: string;
3843
+ phaseKind: FusionPhaseKind;
3223
3844
  /**
3224
- * Type discriminator. Always "assistant.turn_start".
3845
+ * Semantic role assigned to the completed phase.
3225
3846
  */
3226
- type: "assistant.turn_start";
3847
+ role: string;
3848
+ status: FusionPhaseStatus;
3849
+ usage: FusionPhaseUsage;
3850
+ /**
3851
+ * Structured judge or critic verdict, when the phase produces one.
3852
+ */
3853
+ verdict: string | null;
3227
3854
  }
3228
3855
  /**
3229
- * Turn initialization metadata including identifier and interaction tracking
3856
+ * Aggregate concrete-model usage for one HydraFusion phase.
3230
3857
  */
3231
- export interface AssistantTurnStartData {
3858
+ /** @experimental */
3859
+ export interface FusionPhaseUsage {
3232
3860
  /**
3233
- * CAPI interaction ID for correlating this turn with upstream telemetry
3861
+ * Total cached input tokens reported for the phase.
3234
3862
  */
3235
- interactionId?: string;
3863
+ cachedTokens: number;
3236
3864
  /**
3237
- * Model identifier used for this turn, when known
3865
+ * Total tokens written to prompt cache during the phase.
3238
3866
  */
3239
- model?: string;
3867
+ cacheWriteTokens?: number;
3240
3868
  /**
3241
- * Identifier for this turn within the agentic loop, typically a stringified turn number
3869
+ * Total input tokens consumed by the phase.
3242
3870
  */
3243
- turnId: string;
3871
+ inputTokens: number;
3872
+ /**
3873
+ * Total output tokens produced by the phase.
3874
+ */
3875
+ outputTokens: number;
3876
+ /**
3877
+ * Number of concrete model requests made by the phase.
3878
+ */
3879
+ requestCount: number;
3880
+ /**
3881
+ * Total normalized AI-unit cost reported for the phase, in nano-AIU.
3882
+ */
3883
+ totalNanoAiu: number;
3244
3884
  }
3245
3885
  /**
3246
- * Session event "assistant.intent". Agent intent description for current activity or plan
3886
+ * Session event "assistant.fusion_phase_failed". Experimental durable typed HydraFusion phase failure and degradation transition.
3247
3887
  */
3248
- export interface AssistantIntentEvent {
3888
+ /** @experimental */
3889
+ export interface AssistantFusionPhaseFailedEvent {
3249
3890
  /**
3250
3891
  * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
3251
3892
  */
3252
3893
  agentId?: string;
3253
- data: AssistantIntentData;
3894
+ data: FusionPhaseFailedData;
3254
3895
  /**
3255
- * Always true for events that are transient and not persisted to the session event log on disk.
3896
+ * When true, the event is transient and not persisted to the session event log on disk
3256
3897
  */
3257
- ephemeral: true;
3898
+ ephemeral?: boolean;
3258
3899
  /**
3259
3900
  * Unique event identifier (UUID v4), generated when the event is emitted
3260
3901
  */
@@ -3268,18 +3909,51 @@ export interface AssistantIntentEvent {
3268
3909
  */
3269
3910
  timestamp: string;
3270
3911
  /**
3271
- * Type discriminator. Always "assistant.intent".
3912
+ * Type discriminator. Always "assistant.fusion_phase_failed".
3272
3913
  */
3273
- type: "assistant.intent";
3914
+ type: "assistant.fusion_phase_failed";
3274
3915
  }
3275
3916
  /**
3276
- * Agent intent description for current activity or plan
3917
+ * Experimental durable typed HydraFusion phase failure and degradation transition.
3277
3918
  */
3278
- export interface AssistantIntentData {
3919
+ /** @experimental */
3920
+ export interface FusionPhaseFailedData {
3921
+ conversationScope: FusionConversationScope;
3279
3922
  /**
3280
- * Short description of what the agent is currently doing or planning to do
3923
+ * Identifier of the fallback phase used to continue the turn after degradation.
3281
3924
  */
3282
- intent: string;
3925
+ degradedToPhaseId?: string;
3926
+ /**
3927
+ * Elapsed execution time before the phase failed, in milliseconds.
3928
+ */
3929
+ durationMs: number;
3930
+ /**
3931
+ * Provider or execution error detail, when available.
3932
+ */
3933
+ errorMessage?: string;
3934
+ /**
3935
+ * Identifier of the HydraFusion turn containing the phase.
3936
+ */
3937
+ fusionId: string;
3938
+ /**
3939
+ * Concrete model that attempted the phase.
3940
+ */
3941
+ model: string;
3942
+ /**
3943
+ * Stable identifier for the failed phase.
3944
+ */
3945
+ phaseId: string;
3946
+ phaseKind: FusionPhaseKind;
3947
+ /**
3948
+ * Stable machine-readable reason for the phase failure.
3949
+ */
3950
+ reason: string;
3951
+ /**
3952
+ * Semantic role assigned to the failed phase.
3953
+ */
3954
+ role: string;
3955
+ status: FusionPhaseStatus;
3956
+ usage: FusionPhaseUsage;
3283
3957
  }
3284
3958
  /**
3285
3959
  * Session event "assistant.server_tool_progress". Live progress signal for a provider-hosted server tool (e.g. hosted web search) while it runs, before the finalized serverTools envelope lands on the terminal assistant.message
@@ -3569,6 +4243,12 @@ export interface AssistantMessageData {
3569
4243
  * Encrypted reasoning content from OpenAI models. Session-bound and stripped on resume.
3570
4244
  */
3571
4245
  encryptedContent?: string;
4246
+ /**
4247
+ * Experimental HydraFusion source attribution for this ordinary authoritative assistant message.
4248
+ *
4249
+ * @experimental
4250
+ */
4251
+ fusion?: FusionAttribution;
3572
4252
  /**
3573
4253
  * CAPI interaction ID for correlating this message with upstream telemetry
3574
4254
  */
@@ -3594,6 +4274,7 @@ export interface AssistantMessageData {
3594
4274
  * Generation phase for phased-output models (e.g., thinking vs. response phases)
3595
4275
  */
3596
4276
  phase?: string;
4277
+ reasoningBlocks?: AssistantMessageReasoningBlocks;
3597
4278
  /**
3598
4279
  * Opaque/encrypted extended thinking data from Anthropic models. Session-bound and stripped on resume.
3599
4280
  */
@@ -3756,6 +4437,70 @@ export interface CitationLocationBlock {
3756
4437
  */
3757
4438
  type: "block";
3758
4439
  }
4440
+ /**
4441
+ * Experimental attribution linking an ordinary event to the HydraFusion turn, phase, and concrete source that produced it.
4442
+ */
4443
+ /** @experimental */
4444
+ export interface FusionAttribution {
4445
+ /**
4446
+ * Idempotency identifier for the authoritative commit, when the event belongs to the selected output.
4447
+ */
4448
+ commitId?: string;
4449
+ /**
4450
+ * Conversation scope in which the concrete phase executed.
4451
+ */
4452
+ conversationScope?: string;
4453
+ /**
4454
+ * Stable identifier for the HydraFusion turn that produced the event.
4455
+ */
4456
+ fusionId: string;
4457
+ /**
4458
+ * HydraFusion orchestration pattern selected for the turn.
4459
+ */
4460
+ pattern: string;
4461
+ /**
4462
+ * Identifier of the concrete phase that produced the event.
4463
+ */
4464
+ phaseId?: string;
4465
+ /**
4466
+ * Kind of concrete phase that produced the event.
4467
+ */
4468
+ phaseKind?: string;
4469
+ /**
4470
+ * HydraFusion routing policy used for the turn.
4471
+ */
4472
+ policy: string;
4473
+ /**
4474
+ * Semantic role assigned to the concrete phase.
4475
+ */
4476
+ role?: string;
4477
+ /**
4478
+ * Concrete model that produced the attributed event.
4479
+ */
4480
+ sourceModel?: string;
4481
+ /**
4482
+ * Phase whose output supplied the authoritative content, when different from the executing phase.
4483
+ */
4484
+ sourcePhaseId?: string;
4485
+ /**
4486
+ * Synthetic HydraFusion model selected for the session.
4487
+ */
4488
+ syntheticModel: string;
4489
+ }
4490
+ /**
4491
+ * Neutral provider-tagged reasoning content blocks preserved verbatim for round-tripping
4492
+ */
4493
+ /** @experimental */
4494
+ export interface AssistantMessageReasoningBlocks {
4495
+ /**
4496
+ * Provider-native reasoning content blocks (e.g. Anthropic `thinking` / `redacted_thinking`) preserved verbatim, in order. A single response can carry several, each signed over the content preceding it, so dropping or reordering any of them invalidates the rest.
4497
+ */
4498
+ blocks?: JsonValue[];
4499
+ /**
4500
+ * Model provider that produced these reasoning blocks.
4501
+ */
4502
+ provider: string;
4503
+ }
3759
4504
  /**
3760
4505
  * Neutral provider-tagged server-side tool-use payload (tool search, advisor) for verbatim round-tripping
3761
4506
  */
@@ -4065,6 +4810,12 @@ export interface AssistantUsageData {
4065
4810
  * Finish reason reported by the model for this API call (e.g. "stop", "length", "tool_calls", "content_filter"). Normalized to OpenAI vocabulary; for Anthropic models a "refusal" stop reason maps to "content_filter".
4066
4811
  */
4067
4812
  finishReason?: string;
4813
+ /**
4814
+ * Experimental HydraFusion attribution for this concrete model call's usage.
4815
+ *
4816
+ * @experimental
4817
+ */
4818
+ fusion?: FusionAttribution;
4068
4819
  /**
4069
4820
  * What initiated this API call (e.g., "sub-agent", "mcp-sampling"); absent for user-initiated calls
4070
4821
  */
@@ -4105,6 +4856,10 @@ export interface AssistantUsageData {
4105
4856
  * Number of output tokens produced
4106
4857
  */
4107
4858
  outputTokens?: number;
4859
+ /**
4860
+ * Time to first observable model output in milliseconds. Includes text, reasoning, and tool-call output; only available for streaming requests that produce observable output.
4861
+ */
4862
+ outputTtftMs?: number;
4108
4863
  /**
4109
4864
  * @deprecated
4110
4865
  * Parent tool call ID when this usage originates from a sub-agent
@@ -4228,6 +4983,12 @@ export interface ModelCallFailureData {
4228
4983
  */
4229
4984
  errorType?: string;
4230
4985
  failureKind?: ModelCallFailureKind;
4986
+ /**
4987
+ * Experimental HydraFusion attribution for this failed concrete model call.
4988
+ *
4989
+ * @experimental
4990
+ */
4991
+ fusion?: FusionAttribution;
4231
4992
  /**
4232
4993
  * What initiated this API call (e.g., "sub-agent", "mcp-sampling"); absent for user-initiated calls
4233
4994
  */
@@ -4313,6 +5074,62 @@ export interface ModelCallFailureRequestFingerprint {
4313
5074
  */
4314
5075
  toolResultMessageCount: number;
4315
5076
  }
5077
+ /**
5078
+ * Session event "model.call_finished". Final lifecycle outcome for one logical model dispatch. A logical dispatch may include internal reconnect or fallback work, so event count is not provider HTTP-request count.
5079
+ */
5080
+ export interface ModelCallFinishedEvent {
5081
+ /**
5082
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
5083
+ */
5084
+ agentId?: string;
5085
+ data: ModelCallFinishedData;
5086
+ /**
5087
+ * Always true for events that are transient and not persisted to the session event log on disk.
5088
+ */
5089
+ ephemeral: true;
5090
+ /**
5091
+ * Unique event identifier (UUID v4), generated when the event is emitted
5092
+ */
5093
+ id: string;
5094
+ /**
5095
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
5096
+ */
5097
+ parentId: string | null;
5098
+ /**
5099
+ * ISO 8601 timestamp when the event was created
5100
+ */
5101
+ timestamp: string;
5102
+ /**
5103
+ * Type discriminator. Always "model.call_finished".
5104
+ */
5105
+ type: "model.call_finished";
5106
+ }
5107
+ /**
5108
+ * Final lifecycle outcome for one logical model dispatch. A logical dispatch may include internal reconnect or fallback work, so event count is not provider HTTP-request count.
5109
+ */
5110
+ export interface ModelCallFinishedData {
5111
+ /**
5112
+ * Whether an accepted successful response requested the exact name and command semantics of a built-in file edit tool, including an external tool explicitly replacing that built-in name. Absent when the logical dispatch did not produce an accepted response.
5113
+ */
5114
+ containsBuiltInFileEditRequest?: boolean;
5115
+ /**
5116
+ * Monotonic elapsed time spent in the logical model dispatch, including any internal transport reconnect or fallback and excluding orchestrator retry backoff, tool execution, confirmations, and post-response processing
5117
+ */
5118
+ dispatchDurationMs: number;
5119
+ /**
5120
+ * Version of the built-in file-edit semantic classifier used for this event
5121
+ */
5122
+ editClassifierVersion: number;
5123
+ /**
5124
+ * Identifier of the user interaction that owns the model dispatch, matching assistant.turn_start.interactionId when available
5125
+ */
5126
+ interactionId?: string;
5127
+ outcome: ModelCallFinishedOutcome;
5128
+ /**
5129
+ * Agent-loop iteration within the interaction that initiated the model dispatch
5130
+ */
5131
+ turnId: string;
5132
+ }
4316
5133
  /**
4317
5134
  * Session event "abort". Turn abort information including the reason for termination
4318
5135
  */
@@ -4438,6 +5255,12 @@ export interface ToolExecutionStartData {
4438
5255
  * When true, the tool output should be displayed expanded (verbatim) in the CLI timeline
4439
5256
  */
4440
5257
  displayVerbatim?: boolean;
5258
+ /**
5259
+ * Experimental HydraFusion attribution for this tool execution.
5260
+ *
5261
+ * @experimental
5262
+ */
5263
+ fusion?: FusionAttribution;
4441
5264
  /**
4442
5265
  * Name of the MCP server hosting this tool, when the tool is an MCP tool
4443
5266
  */
@@ -4647,6 +5470,12 @@ export interface ToolExecutionCompleteEvent {
4647
5470
  */
4648
5471
  export interface ToolExecutionCompleteData {
4649
5472
  error?: ToolExecutionCompleteError;
5473
+ /**
5474
+ * Experimental HydraFusion attribution for this tool completion.
5475
+ *
5476
+ * @experimental
5477
+ */
5478
+ fusion?: FusionAttribution;
4650
5479
  /**
4651
5480
  * CAPI interaction ID for correlating this tool execution with upstream telemetry
4652
5481
  */
@@ -4904,6 +5733,10 @@ export interface ToolExecutionCompleteContentShellExit {
4904
5733
  * Exit code from the completed shell command
4905
5734
  */
4906
5735
  exitCode: number;
5736
+ /**
5737
+ * Path reported in the shell session's filesystem namespace when shell output exceeded the configured large-output threshold.
5738
+ */
5739
+ outputFilePath?: string;
4907
5740
  /**
4908
5741
  * Output associated with this shell command, if available. May be partial, truncated, or a preview; not guaranteed to be full output.
4909
5742
  */
@@ -5341,6 +6174,14 @@ export interface SubagentStartedData {
5341
6174
  * Internal name of the sub-agent
5342
6175
  */
5343
6176
  agentName: string;
6177
+ /**
6178
+ * Type of the sub-agent selected at spawn time.
6179
+ */
6180
+ agentType?: string;
6181
+ /**
6182
+ * Whether the sub-agent runs synchronously or in the background.
6183
+ */
6184
+ executionMode?: string;
5344
6185
  /**
5345
6186
  * Root id of the factory run that spawned this sub-agent, when it was spawned by one.
5346
6187
  */
@@ -5349,11 +6190,70 @@ export interface SubagentStartedData {
5349
6190
  * Model the sub-agent will run with, when known at start.
5350
6191
  */
5351
6192
  model?: string;
6193
+ /**
6194
+ * Task-registry ID of the spawning sub-agent. Absent when the root session spawned this child.
6195
+ */
6196
+ parentId?: string;
6197
+ /**
6198
+ * Whether this sub-agent can be resumed. Currently always false.
6199
+ */
6200
+ resumable?: boolean;
5352
6201
  /**
5353
6202
  * Tool call ID of the parent tool invocation that spawned this sub-agent
5354
6203
  */
5355
6204
  toolCallId: string;
5356
6205
  }
6206
+ /**
6207
+ * Session event "subagent.configured". Resolved runtime configuration for a configured sub-agent
6208
+ */
6209
+ export interface SubagentConfiguredEvent {
6210
+ /**
6211
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
6212
+ */
6213
+ agentId?: string;
6214
+ data: SubagentConfiguredData;
6215
+ /**
6216
+ * When true, the event is transient and not persisted to the session event log on disk
6217
+ */
6218
+ ephemeral?: boolean;
6219
+ /**
6220
+ * Unique event identifier (UUID v4), generated when the event is emitted
6221
+ */
6222
+ id: string;
6223
+ /**
6224
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
6225
+ */
6226
+ parentId: string | null;
6227
+ /**
6228
+ * ISO 8601 timestamp when the event was created
6229
+ */
6230
+ timestamp: string;
6231
+ /**
6232
+ * Type discriminator. Always "subagent.configured".
6233
+ */
6234
+ type: "subagent.configured";
6235
+ }
6236
+ /**
6237
+ * Resolved runtime configuration for a configured sub-agent
6238
+ */
6239
+ export interface SubagentConfiguredData {
6240
+ /**
6241
+ * Resolved context tier, when configured for the model
6242
+ */
6243
+ contextTier?: string;
6244
+ /**
6245
+ * Resolved model the sub-agent will run with
6246
+ */
6247
+ model: string;
6248
+ /**
6249
+ * Whether the sub-agent accepts follow-up turns
6250
+ */
6251
+ multiTurn: boolean;
6252
+ /**
6253
+ * Resolved reasoning effort, when configured for the model
6254
+ */
6255
+ reasoningEffort?: string;
6256
+ }
5357
6257
  /**
5358
6258
  * Session event "subagent.completed". Sub-agent completion details for successful execution
5359
6259
  */
@@ -5400,10 +6300,30 @@ export interface SubagentCompletedData {
5400
6300
  * Whether the sub-agent was torn down by cancellation - its own abort, or an ancestor being killed - instead of finishing its work. Cancellation is not a failure, so the run still reports completion; this distinguishes a torn-down sub-agent from one that ran to the end.
5401
6301
  */
5402
6302
  cancelled?: boolean;
6303
+ /**
6304
+ * Whether the first model actually dispatched matched the user's configured preference
6305
+ */
6306
+ configuredModelMatchesActual?: boolean;
6307
+ /**
6308
+ * Concrete model the user configured for this sub-agent via `/subagents`, when present
6309
+ */
6310
+ configuredModelPreference?: string;
5403
6311
  /**
5404
6312
  * Wall-clock duration of the sub-agent execution in milliseconds
5405
6313
  */
5406
6314
  durationMs?: number;
6315
+ /**
6316
+ * Whether the explicit task-call model matched the user's configured preference
6317
+ */
6318
+ explicitModelMatchesPreference?: boolean;
6319
+ /**
6320
+ * Explicit model supplied by the parent agent on the task call, when present
6321
+ */
6322
+ explicitModelOverride?: string;
6323
+ /**
6324
+ * First model for which the sub-agent started an inference request, when one was dispatched
6325
+ */
6326
+ firstDispatchedModel?: string;
5407
6327
  /**
5408
6328
  * Model used by the sub-agent
5409
6329
  */
@@ -5463,6 +6383,14 @@ export interface SubagentFailedData {
5463
6383
  * Internal name of the sub-agent
5464
6384
  */
5465
6385
  agentName: string;
6386
+ /**
6387
+ * Whether the first model actually dispatched matched the user's configured preference
6388
+ */
6389
+ configuredModelMatchesActual?: boolean;
6390
+ /**
6391
+ * Concrete model the user configured for this sub-agent via `/subagents`, when present
6392
+ */
6393
+ configuredModelPreference?: string;
5466
6394
  /**
5467
6395
  * Wall-clock duration of the sub-agent execution in milliseconds
5468
6396
  */
@@ -5471,6 +6399,18 @@ export interface SubagentFailedData {
5471
6399
  * Error message describing why the sub-agent failed
5472
6400
  */
5473
6401
  error: string;
6402
+ /**
6403
+ * Whether the explicit task-call model matched the user's configured preference
6404
+ */
6405
+ explicitModelMatchesPreference?: boolean;
6406
+ /**
6407
+ * Explicit model supplied by the parent agent on the task call, when present
6408
+ */
6409
+ explicitModelOverride?: string;
6410
+ /**
6411
+ * First model for which the sub-agent started an inference request, when one was dispatched
6412
+ */
6413
+ firstDispatchedModel?: string;
5474
6414
  /**
5475
6415
  * Model selected for the sub-agent, when known
5476
6416
  */
@@ -5616,6 +6556,10 @@ export interface HookStartData {
5616
6556
  * Input data passed to the hook
5617
6557
  */
5618
6558
  input?: JsonValue;
6559
+ /**
6560
+ * Tool call ID of the parent tool invocation when this event originates from a sub-agent
6561
+ */
6562
+ parentToolCallId?: string;
5619
6563
  }
5620
6564
  /**
5621
6565
  * Session event "hook.end". Hook invocation completion details including output, success status, and error information
@@ -5664,6 +6608,10 @@ export interface HookEndData {
5664
6608
  * Output data produced by the hook
5665
6609
  */
5666
6610
  output?: JsonValue;
6611
+ /**
6612
+ * Tool call ID of the parent tool invocation when this event originates from a sub-agent
6613
+ */
6614
+ parentToolCallId?: string;
5667
6615
  /**
5668
6616
  * Whether the hook completed successfully
5669
6617
  */
@@ -6784,6 +7732,10 @@ export interface PermissionPromptRequestMcp {
6784
7732
  * @experimental
6785
7733
  */
6786
7734
  assistedApproval?: PermissionAssistedApproval;
7735
+ /**
7736
+ * Whether the host may offer a server-wide "approve all tools from this server" blanket. Absent is treated as true; the runtime sends false when managed policy disables bypass-permissions mode, which forbids the server-wide escalation while still allowing per-tool approval.
7737
+ */
7738
+ canOfferServerWideApproval?: boolean;
6787
7739
  /**
6788
7740
  * Prompt kind discriminator
6789
7741
  */
@@ -8709,6 +9661,10 @@ export interface ManagedSettingsResolvedData {
8709
9661
  * Whether at least two managed sources supplied permission allowlists, so enforcement intersects them and the flattened settings payload omits `permissions.allow`.
8710
9662
  */
8711
9663
  permissionsAllowIntersected?: boolean;
9664
+ /**
9665
+ * Whether the effective sandbox policy forces the sandbox on *only* because managed policy could not be determined, rather than because the policy requires it. Lets clients tell a user whose `--no-sandbox` was overridden that the sandbox stayed on as a fail-closed fallback, instead of attributing it to an administrator who set no such policy.
9666
+ */
9667
+ sandboxEnabledByUndeterminedPolicy?: boolean;
8712
9668
  /**
8713
9669
  * Whether the server (account/org) managed-settings layer was present
8714
9670
  */