@github/copilot-sdk-linuxmusl-x64 1.0.14-preview.1 → 1.0.14

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,9 +9,9 @@ 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 | 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;
12
+ export type SessionEvent = StartEvent | ResumeEvent | RemoteSteerableChangedEvent | ErrorEvent | IdleEvent | TitleChangedEvent | ScheduleCreatedEvent | ScheduleCancelledEvent | ScheduleRearmedEvent | AutopilotObjectiveChangedEvent | InfoEvent | WarningEvent | ModelChangeEvent | AutoTierRecommendationEvent | AutoTierSwitchFailedEvent | ModeChangedEvent | ModeNoticeDeliveredEvent | SessionLimitsChangedEvent | PermissionsChangedEvent | PlanChangedEvent | TodosChangedEvent | WorkspaceFileChangedEvent | HandoffEvent | TruncationEvent | SnapshotRewindEvent | ShutdownEvent | UsageCheckpointEvent | ContextChangedEvent | UsageInfoEvent | ContextClearedEvent | CompactionStartEvent | CompactionCompleteEvent | TaskCompleteEvent | CompletionReceiptEvent | FusionRouteStartedEvent | FusionRouteFailedEvent | FusionResolvedEvent | FusionCompletedEvent | UserMessageEvent | PendingMessagesModifiedEvent | AssistantTurnStartEvent | AssistantIntentEvent | AssistantFusionPhaseStartedEvent | AssistantFusionPhaseActivityEvent | 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 | PermissionCarriedForwardEvent | PermissionMessageAuthorizationEvent | PermissionMessageAuthorizationReadEvent | PermissionMessageAuthorizationDegradedEvent | 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 | McpServerRemovedEvent | McpServerNeedsReconnectEvent | McpToolsListChangedEvent | McpResourcesListChangedEvent | McpPromptsListChangedEvent | ExtensionsLoadedEvent | CanvasOpenedEvent | CanvasRegistryChangedEvent | CanvasClosedEvent | CanvasUnavailableEvent | CanvasRecordedEvent | CanvasRemovedEvent | ExtensionsAttachmentsPushedEvent | McpAppToolCallCompleteEvent;
13
13
  /**
14
- * Routing preference used when the session model is `auto`.
14
+ * Routing preference used when the session model is `auto`. `fast` is an integrator-only latency preset and is not a first-party GitHub Copilot product preference.
15
15
  */
16
16
  export type AutoTier =
17
17
  /** Optimize for efficiency. */
@@ -19,7 +19,9 @@ export type AutoTier =
19
19
  /** Balance efficiency and intelligence. */
20
20
  | "balance"
21
21
  /** Optimize for intelligence. */
22
- | "intelligence";
22
+ | "intelligence"
23
+ /** Integrator-only preset that optimizes for latency. */
24
+ | "fast";
23
25
  /**
24
26
  * Hosting platform type of the repository (github or ado)
25
27
  */
@@ -56,6 +58,20 @@ export type Verbosity =
56
58
  | "medium"
57
59
  /** A more detailed response was requested. */
58
60
  | "high";
61
+ /**
62
+ * What the user must do to recover from a failure, named as an action rather than as one client's affordance. The runtime cannot know which affordance a client offers — a slash command, a settings pane, a link — so the accompanying message stays host-agnostic and each client renders its own copy from this value. Absent when the runtime knows of no action the user can take.
63
+ */
64
+ export type RemediationAction =
65
+ /** Authenticate again with the Copilot backend. The current credential is absent, expired, or rejected. */
66
+ "sign_in"
67
+ /** Authenticate as a different account. The current account exists but lacks access to the requested resource. */
68
+ | "switch_account"
69
+ /** Inspect which account is currently authenticated before deciding what to change. */
70
+ | "show_account"
71
+ /** Review or widen the sandbox policy. The blocked path or host is named by the accompanying message or by the tool result the action arrived with. */
72
+ | "review_sandbox_policy"
73
+ /** Permit outbound network access in the sandbox policy. */
74
+ | "allow_sandbox_outbound";
59
75
  /**
60
76
  * The session mode the agent is operating in
61
77
  */
@@ -122,6 +138,28 @@ export type ModelChangeSource =
122
138
  | "automatic"
123
139
  /** An SDK or RPC caller selected the model. */
124
140
  | "sdk";
141
+ /**
142
+ * Auto preferences that Copilot API can recommend.
143
+ */
144
+ export type RecommendedAutoTier =
145
+ /** Optimize for efficiency. */
146
+ "efficiency"
147
+ /** Balance efficiency and intelligence. */
148
+ | "balance"
149
+ /** Optimize for intelligence. */
150
+ | "intelligence";
151
+ /**
152
+ * Terminal reason an Auto preference activation failed.
153
+ */
154
+ export type AutoTierSwitchFailureReason =
155
+ /** The candidate model was rejected by model policy. */
156
+ "policy_rejected"
157
+ /** The Auto routing request failed or returned an unusable response. */
158
+ | "request_failed"
159
+ /** The runtime could not prepare the Auto routing request. */
160
+ | "setup_failed"
161
+ /** The provider does not support Auto routing. */
162
+ | "unsupported";
125
163
  /**
126
164
  * Permission mode for the session.
127
165
  */
@@ -191,6 +229,30 @@ export type TaskCompletionOutcome =
191
229
  | "continue"
192
230
  /** Completion cannot proceed without intervention; the active objective is paused when one is identified. */
193
231
  | "blocked";
232
+ /**
233
+ * Structured terminal status from a tool completion event.
234
+ */
235
+ export type CompletionReceiptToolStatus =
236
+ /** The tool completed successfully. */
237
+ "success"
238
+ /** The tool failed without a more specific structured status. */
239
+ | "failure"
240
+ /** The tool exceeded its time budget. */
241
+ | "timeout"
242
+ /** The user rejected the tool call. */
243
+ | "rejected"
244
+ /** The permissions service denied the tool call. */
245
+ | "denied";
246
+ /**
247
+ * Runtime reason the completion decision was accepted.
248
+ */
249
+ export type CompletionReceiptStopReason =
250
+ /** The model reached a natural terminal response. */
251
+ "natural"
252
+ /** A terminal tool ended the interaction. */
253
+ | "terminal_tool"
254
+ /** The configured agentStop continuation limit was reached. */
255
+ | "agent_stop_block_limit";
194
256
  /**
195
257
  * Kind of turn for which HydraFusion routing is running.
196
258
  */
@@ -220,6 +282,34 @@ export type FusionPattern =
220
282
  | "cascade"
221
283
  /** Run a primary draft, a read-only critique, and a revision. */
222
284
  | "critique";
285
+ /**
286
+ * HydraFusion phase kind.
287
+ */
288
+ /** @experimental */
289
+ export type FusionPhaseKind =
290
+ /** Primary solver phase. */
291
+ "primary"
292
+ /** Read-only cascade judge phase. */
293
+ | "judge"
294
+ /** Cascade repair phase. */
295
+ | "repair"
296
+ /** Initial critique-pattern draft phase. */
297
+ | "draft"
298
+ /** Read-only critique phase. */
299
+ | "critic"
300
+ /** Critique-pattern revision phase. */
301
+ | "revision"
302
+ /** Follow-up phase continuing from the resolved model. */
303
+ | "follow_up";
304
+ /**
305
+ * Conversation scope in which a HydraFusion phase executes.
306
+ */
307
+ /** @experimental */
308
+ export type FusionConversationScope =
309
+ /** Canonical root conversation history. */
310
+ "root"
311
+ /** Isolated read-only review history that does not enter the root conversation. */
312
+ | "review";
223
313
  /**
224
314
  * The agent mode that was active when this message was sent
225
315
  */
@@ -265,33 +355,16 @@ export type UserMessageDelivery =
265
355
  /** Enqueued while the agent was busy; processed as its own run afterward. */
266
356
  | "queued";
267
357
  /**
268
- * Conversation scope in which a HydraFusion phase executes.
269
- */
270
- /** @experimental */
271
- export type FusionConversationScope =
272
- /** Canonical root conversation history. */
273
- "root"
274
- /** Isolated read-only review history that does not enter the root conversation. */
275
- | "review";
276
- /**
277
- * HydraFusion phase kind.
358
+ * Content-safe activity observed while a HydraFusion phase is running.
278
359
  */
279
360
  /** @experimental */
280
- export type FusionPhaseKind =
281
- /** Primary solver phase. */
282
- "primary"
283
- /** Read-only cascade judge phase. */
284
- | "judge"
285
- /** Cascade repair phase. */
286
- | "repair"
287
- /** Initial critique-pattern draft phase. */
288
- | "draft"
289
- /** Read-only critique phase. */
290
- | "critic"
291
- /** Critique-pattern revision phase. */
292
- | "revision"
293
- /** Follow-up phase continuing from the resolved model. */
294
- | "follow_up";
361
+ export type FusionPhaseActivityKind =
362
+ /** The provider produced additional private output bytes. */
363
+ "model_output"
364
+ /** A tool began executing inside the phase. */
365
+ | "tool_started"
366
+ /** A tool finished executing inside the phase. */
367
+ | "tool_completed";
295
368
  /**
296
369
  * Durable outcome status of a HydraFusion phase.
297
370
  */
@@ -409,6 +482,18 @@ export type AbortReason =
409
482
  | "user_abort"
410
483
  /** Autopilot stopped the run because the active objective reached its user-set --max-ai-credits limit. */
411
484
  | "autopilot_credit_limit";
485
+ /**
486
+ * Transport mechanism: stdio, http, sse (deprecated), or memory (in-process MCP server)
487
+ */
488
+ export type McpServerTransport =
489
+ /** Server communicates over stdio with a local child process. */
490
+ "stdio"
491
+ /** Server communicates over streamable HTTP. */
492
+ | "http"
493
+ /** Server communicates over Server-Sent Events (deprecated). */
494
+ | "sse"
495
+ /** Server is backed by an in-memory runtime implementation. */
496
+ | "memory";
412
497
  /**
413
498
  * Allowed values for the `ToolExecutionStartToolDescriptionMetaUIVisibility` enumeration.
414
499
  */
@@ -480,6 +565,36 @@ export type SkillInvokedTrigger =
480
565
  | "agent-invoked"
481
566
  /** Skill content loaded as part of another context, such as a configured custom agent or subagent. */
482
567
  | "context-load";
568
+ /**
569
+ * Where the model input for a task-tool sub-agent came from.
570
+ */
571
+ export type SubagentTaskModelSource =
572
+ /** The spawning agent supplied the task tool's model argument. */
573
+ "task_argument"
574
+ /** The task omitted a model and the per-sub-agent settings entry supplied a concrete one. */
575
+ | "subagent_configuration"
576
+ /** The task omitted a model and the user-defined custom agent's definition supplied one. */
577
+ | "custom_agent_definition"
578
+ /** Neither the task call, the per-sub-agent settings entry, nor a custom agent definition supplied a model. */
579
+ | "unset";
580
+ /**
581
+ * Authority or runtime mechanism responsible for sub-agent model selection.
582
+ */
583
+ export type SubagentModelSelectionSource =
584
+ /** Explicit model supplied by the parent agent on the task call and selected for dispatch. */
585
+ "explicit_override"
586
+ /** Required model policy configured for the sub-agent. */
587
+ | "configured_required"
588
+ /** Non-required model preference configured for the sub-agent. */
589
+ | "configured_preference"
590
+ /** Complementary-model default selected for the sub-agent. */
591
+ | "complementary_default"
592
+ /** Model inherited from the parent session. */
593
+ | "session_inheritance"
594
+ /** Default model declared by the agent definition. */
595
+ | "agent_definition_default"
596
+ /** Runtime policy, Auto mode, or an experiment selected the model. */
597
+ | "runtime_policy";
483
598
  /**
484
599
  * Binary asset type discriminator. Use "image" for images and "resource" otherwise.
485
600
  */
@@ -508,6 +623,24 @@ export type SystemNotificationAgentCompletedStatus =
508
623
  "completed"
509
624
  /** The agent failed. */
510
625
  | "failed";
626
+ /**
627
+ * Durable metadata describing who initiated a factory pause.
628
+ */
629
+ export type SystemNotificationFactoryPauseInfo = {
630
+ /**
631
+ * Factory pause initiator discriminator.
632
+ */
633
+ type: "user";
634
+ } | {
635
+ /**
636
+ * Stable author-defined checkpoint key that initiated the pause.
637
+ */
638
+ key: string;
639
+ /**
640
+ * Factory pause initiator discriminator.
641
+ */
642
+ type: "checkpoint";
643
+ };
511
644
  /**
512
645
  * Terminal status reached by a factory execution attempt.
513
646
  */
@@ -516,6 +649,8 @@ export type SystemNotificationFactoryCompletedStatus =
516
649
  "completed"
517
650
  /** The factory was halted. */
518
651
  | "halted"
652
+ /** The factory attempt paused intentionally. */
653
+ | "paused"
519
654
  /** The factory was cancelled. */
520
655
  | "cancelled"
521
656
  /** The factory failed. */
@@ -605,6 +740,20 @@ export type PermissionPromptRequestPathAccessKind =
605
740
  | "shell"
606
741
  /** Write access to a filesystem path. */
607
742
  | "write";
743
+ /**
744
+ * Controlled reason or actor responsible for a permission response.
745
+ */
746
+ export type PermissionDecisionSource =
747
+ /** The response followed the assisted-approval judge recommendation. */
748
+ "assisted_approval"
749
+ /** A human supplied the response through an interactive prompt. */
750
+ | "human_response"
751
+ /** The host applied a standing policy or override rather than a judge recommendation or human decision. */
752
+ | "host_policy"
753
+ /** The host denied the request because no interactive user response was available. */
754
+ | "unattended_fallback"
755
+ /** A live authorization record from an earlier human decision in this session contained the proposal, so it ran without another prompt. This is not a new human decision and never mints authority of its own. */
756
+ | "authorization_carry_forward";
608
757
  /**
609
758
  * The result of the permission request
610
759
  */
@@ -613,6 +762,15 @@ export type PermissionResult = PermissionApproved | PermissionApprovedForSession
613
762
  * The approval to add as a session-scoped rule
614
763
  */
615
764
  export type UserToolSessionApproval = UserToolSessionApprovalCommands | UserToolSessionApprovalRead | UserToolSessionApprovalWrite | UserToolSessionApprovalMcp | UserToolSessionApprovalMemory | UserToolSessionApprovalCustomTool | UserToolSessionApprovalExtensionManagement | UserToolSessionApprovalFactory | UserToolSessionApprovalExtensionPermissionAccess | UserToolSessionApprovalExtensionEnvAccess;
765
+ /**
766
+ * Which direction a message-backed authorization claim moves authority in.
767
+ */
768
+ /** @experimental */
769
+ export type PermissionMessageAuthorizationPolarity =
770
+ /** The human's words authorized an effect. */
771
+ "grant"
772
+ /** The human's words refused an effect. */
773
+ | "denial";
616
774
  /**
617
775
  * Elicitation mode; "form" for structured input, "url" for browser-based. Defaults to "form" when absent.
618
776
  */
@@ -736,7 +894,9 @@ export type ManagedSettingsResolvedSource =
736
894
  | "device"
737
895
  /** Only session-local SDK-host injection contributed. */
738
896
  | "client"
739
- /** More than one channel contributed. Ordinary keys resolve device over server per key, while permissions compose restrictively across all present layers. */
897
+ /** A policy helper registered by device or server policy contributed. Device registration takes priority when present. */
898
+ | "policyHelper"
899
+ /** More than one channel contributed. Ordinary keys resolve device over server over policy helper per key, while permissions compose restrictively across all present layers. */
740
900
  | "mixed"
741
901
  /** No managed policy is in force (no channel contributed). */
742
902
  | "none";
@@ -782,12 +942,14 @@ export type FactoryRunSettledStatus =
782
942
  "completed"
783
943
  /** The run was stopped by a limit, an approval refusal or another policy decision. */
784
944
  | "halted"
945
+ /** The attempt paused intentionally while preserving resumable run state. */
946
+ | "paused"
785
947
  /** The run was cancelled by its caller or by session disposal. */
786
948
  | "cancelled"
787
949
  /** The run failed, with `failureType` carrying the class when it has one. */
788
950
  | "error";
789
951
  /**
790
- * Source location type (e.g., project, personal-copilot, plugin, builtin)
952
+ * Source location type (e.g., project, personal-copilot, plugin, builtin, sdk)
791
953
  */
792
954
  export type SkillSource =
793
955
  /** Skill defined in the current project's skill directories. */
@@ -803,7 +965,17 @@ export type SkillSource =
803
965
  /** Skill loaded from a configured custom skill directory. */
804
966
  | "custom"
805
967
  /** Skill bundled with the runtime. */
806
- | "builtin";
968
+ | "builtin"
969
+ /** Pathless skill supplied lazily by an SDK skill provider. */
970
+ | "sdk";
971
+ /**
972
+ * Whether configured models are advisory preferences or required constraints
973
+ */
974
+ export type AgentModelPolicy =
975
+ /** Treat the authored models as advisory preferences that callers may override. */
976
+ "preferred"
977
+ /** Require subagent execution to use one of the authored models. */
978
+ | "required";
807
979
  /**
808
980
  * Configuration source: user, workspace, plugin, or builtin
809
981
  */
@@ -834,18 +1006,6 @@ export type McpServerStatus =
834
1006
  | "stopped"
835
1007
  /** The server is not configured for this session. */
836
1008
  | "not_configured";
837
- /**
838
- * Transport mechanism: stdio, http, sse (deprecated), or memory (in-process MCP server)
839
- */
840
- export type McpServerTransport =
841
- /** Server communicates over stdio with a local child process. */
842
- "stdio"
843
- /** Server communicates over streamable HTTP. */
844
- | "http"
845
- /** Server communicates over Server-Sent Events (deprecated). */
846
- | "sse"
847
- /** Server is backed by an in-memory runtime implementation. */
848
- | "memory";
849
1009
  /**
850
1010
  * Discovery source
851
1011
  */
@@ -1199,6 +1359,7 @@ export interface ErrorData {
1199
1359
  * GitHub request tracing ID (x-github-request-id header) for correlating with server-side logs
1200
1360
  */
1201
1361
  providerCallId?: string;
1362
+ remediation?: RemediationAction;
1202
1363
  /**
1203
1364
  * Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation
1204
1365
  */
@@ -1579,6 +1740,7 @@ export interface WarningData {
1579
1740
  * Human-readable warning message for display in the timeline
1580
1741
  */
1581
1742
  message: string;
1743
+ remediation?: RemediationAction;
1582
1744
  /**
1583
1745
  * Optional URL associated with this warning that the user can open in a browser
1584
1746
  */
@@ -1622,6 +1784,10 @@ export interface ModelChangeEvent {
1622
1784
  * Model change details including previous and new model identifiers
1623
1785
  */
1624
1786
  export interface ModelChangeData {
1787
+ /**
1788
+ * Committed Auto preference after the model configuration change, when applicable.
1789
+ */
1790
+ autoTier?: AutoTier | null;
1625
1791
  /**
1626
1792
  * Reason the change happened, when not user-initiated. `"rate_limit_auto_switch"` for changes triggered by the auto-mode-switch rate-limit recovery path, or `"refusal_fallback"` when the active model declined a request (content refusal) and the runtime switched to the configured refusal-fallback model. UI clients can use this to render contextual copy.
1627
1793
  */
@@ -1634,6 +1800,7 @@ export interface ModelChangeData {
1634
1800
  * Newly selected model identifier
1635
1801
  */
1636
1802
  newModel: string;
1803
+ previousAutoTier?: AutoTier;
1637
1804
  /**
1638
1805
  * Model that was previously selected, if any
1639
1806
  */
@@ -1652,6 +1819,85 @@ export interface ModelChangeData {
1652
1819
  source?: ModelChangeSource;
1653
1820
  verbosity?: Verbosity;
1654
1821
  }
1822
+ /**
1823
+ * Session event "session.auto_tier_recommendation". Live-only Auto preference recommendation from Copilot API after a successful Auto model call.
1824
+ */
1825
+ /** @experimental */
1826
+ export interface AutoTierRecommendationEvent {
1827
+ /**
1828
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
1829
+ */
1830
+ agentId?: string;
1831
+ data: AutoTierRecommendationData;
1832
+ /**
1833
+ * Always true for events that are transient and not persisted to the session event log on disk.
1834
+ */
1835
+ ephemeral: true;
1836
+ /**
1837
+ * Unique event identifier (UUID v4), generated when the event is emitted
1838
+ */
1839
+ id: string;
1840
+ /**
1841
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
1842
+ */
1843
+ parentId: string | null;
1844
+ /**
1845
+ * ISO 8601 timestamp when the event was created
1846
+ */
1847
+ timestamp: string;
1848
+ /**
1849
+ * Type discriminator. Always "session.auto_tier_recommendation".
1850
+ */
1851
+ type: "session.auto_tier_recommendation";
1852
+ }
1853
+ /**
1854
+ * Live-only Auto preference recommendation from Copilot API after a successful Auto model call.
1855
+ */
1856
+ /** @experimental */
1857
+ export interface AutoTierRecommendationData {
1858
+ recommendedAutoTier: RecommendedAutoTier;
1859
+ }
1860
+ /**
1861
+ * Session event "session.auto_tier_switch_failed". A transient Auto preference failure emitted when the runtime cannot mint or accept a usable model and token pair. The previously effective preference remains active, so SDK clients can surface a non-blocking failure without changing their committed-tier state. This event is ephemeral and is not persisted or replayed on resume.
1862
+ */
1863
+ export interface AutoTierSwitchFailedEvent {
1864
+ /**
1865
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
1866
+ */
1867
+ agentId?: string;
1868
+ data: AutoTierSwitchFailedData;
1869
+ /**
1870
+ * Always true for events that are transient and not persisted to the session event log on disk.
1871
+ */
1872
+ ephemeral: true;
1873
+ /**
1874
+ * Unique event identifier (UUID v4), generated when the event is emitted
1875
+ */
1876
+ id: string;
1877
+ /**
1878
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
1879
+ */
1880
+ parentId: string | null;
1881
+ /**
1882
+ * ISO 8601 timestamp when the event was created
1883
+ */
1884
+ timestamp: string;
1885
+ /**
1886
+ * Type discriminator. Always "session.auto_tier_switch_failed".
1887
+ */
1888
+ type: "session.auto_tier_switch_failed";
1889
+ }
1890
+ /**
1891
+ * A transient Auto preference failure emitted when the runtime cannot mint or accept a usable model and token pair. The previously effective preference remains active, so SDK clients can surface a non-blocking failure without changing their committed-tier state. This event is ephemeral and is not persisted or replayed on resume.
1892
+ */
1893
+ export interface AutoTierSwitchFailedData {
1894
+ effectiveAutoTier?: AutoTier;
1895
+ reason: AutoTierSwitchFailureReason;
1896
+ /**
1897
+ * Auto preference that failed to activate, or null when returning to provider-default routing failed.
1898
+ */
1899
+ requestedAutoTier: AutoTier | null;
1900
+ }
1655
1901
  /**
1656
1902
  * Session event "session.mode_changed". Agent mode change details including previous and new modes
1657
1903
  */
@@ -1689,6 +1935,46 @@ export interface ModeChangedData {
1689
1935
  newMode: SessionMode;
1690
1936
  previousMode: SessionMode;
1691
1937
  }
1938
+ /**
1939
+ * Session event "session.mode_notice_delivered". Records that a mode transition notice reached the model so cache-stable mode tools can remain offered across resume.
1940
+ */
1941
+ export interface ModeNoticeDeliveredEvent {
1942
+ /**
1943
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
1944
+ */
1945
+ agentId?: string;
1946
+ data: ModeNoticeDeliveredData;
1947
+ /**
1948
+ * When true, the event is transient and not persisted to the session event log on disk
1949
+ */
1950
+ ephemeral?: boolean;
1951
+ /**
1952
+ * Unique event identifier (UUID v4), generated when the event is emitted
1953
+ */
1954
+ id: string;
1955
+ /**
1956
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
1957
+ */
1958
+ parentId: string | null;
1959
+ /**
1960
+ * ISO 8601 timestamp when the event was created
1961
+ */
1962
+ timestamp: string;
1963
+ /**
1964
+ * Type discriminator. Always "session.mode_notice_delivered".
1965
+ */
1966
+ type: "session.mode_notice_delivered";
1967
+ }
1968
+ /**
1969
+ * Records that a mode transition notice reached the model so cache-stable mode tools can remain offered across resume.
1970
+ */
1971
+ export interface ModeNoticeDeliveredData {
1972
+ /**
1973
+ * Model-visible transition notice persisted for a mid-turn delivery
1974
+ */
1975
+ content?: string;
1976
+ mode: SessionMode;
1977
+ }
1692
1978
  /**
1693
1979
  * Session event "session.session_limits_changed". Session limits update details. Null clears the limits.
1694
1980
  */
@@ -1775,13 +2061,13 @@ export interface PermissionsChangedData {
1775
2061
  *
1776
2062
  * @experimental
1777
2063
  */
1778
- mode: PermissionMode;
2064
+ mode?: PermissionMode;
1779
2065
  /**
1780
2066
  * Permission mode before the change
1781
2067
  *
1782
2068
  * @experimental
1783
2069
  */
1784
- previousMode: PermissionMode;
2070
+ previousMode?: PermissionMode;
1785
2071
  }
1786
2072
  /**
1787
2073
  * Session event "session.plan_changed". Plan file operation details indicating what changed
@@ -2687,6 +2973,10 @@ export interface CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail {
2687
2973
  * Cost per batch of tokens
2688
2974
  */
2689
2975
  costPerBatch: number;
2976
+ /**
2977
+ * Model responsible for this billing entry
2978
+ */
2979
+ model?: string;
2690
2980
  /**
2691
2981
  * Total token count for this entry
2692
2982
  */
@@ -2749,19 +3039,19 @@ export interface TaskCompleteData {
2749
3039
  summary?: string;
2750
3040
  }
2751
3041
  /**
2752
- * Session event "session.fusion_route_started". Experimental transient signal that HydraFusion routing has started for an eligible turn.
3042
+ * Session event "session.completion_receipt". Behavior-neutral record of structured runtime facts present when an agent completion decision is accepted.
2753
3043
  */
2754
3044
  /** @experimental */
2755
- export interface FusionRouteStartedEvent {
3045
+ export interface CompletionReceiptEvent {
2756
3046
  /**
2757
3047
  * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
2758
3048
  */
2759
3049
  agentId?: string;
2760
- data: FusionRouteStartedData;
3050
+ data: CompletionReceiptData;
2761
3051
  /**
2762
- * Always true for events that are transient and not persisted to the session event log on disk.
3052
+ * When true, the event is transient and not persisted to the session event log on disk
2763
3053
  */
2764
- ephemeral: true;
3054
+ ephemeral?: boolean;
2765
3055
  /**
2766
3056
  * Unique event identifier (UUID v4), generated when the event is emitted
2767
3057
  */
@@ -2775,59 +3065,150 @@ export interface FusionRouteStartedEvent {
2775
3065
  */
2776
3066
  timestamp: string;
2777
3067
  /**
2778
- * Type discriminator. Always "session.fusion_route_started".
3068
+ * Type discriminator. Always "session.completion_receipt".
2779
3069
  */
2780
- type: "session.fusion_route_started";
3070
+ type: "session.completion_receipt";
2781
3071
  }
2782
3072
  /**
2783
- * Experimental transient signal that HydraFusion routing has started for an eligible turn.
3073
+ * Behavior-neutral record of structured runtime facts present when an agent completion decision is accepted.
2784
3074
  */
2785
3075
  /** @experimental */
2786
- export interface FusionRouteStartedData {
3076
+ export interface CompletionReceiptData {
2787
3077
  /**
2788
- * Identifier for this routing attempt before a durable Fusion turn exists.
3078
+ * One-based accepted completion receipt ordinal in the durable session history.
2789
3079
  */
2790
- attemptId: string;
3080
+ attempt: number;
3081
+ eventRange: CompletionReceiptEventRange;
2791
3082
  /**
2792
- * HydraFusion routing policy requested for the turn.
3083
+ * Number of failed structured tool completions in the covered range.
2793
3084
  */
2794
- policy?: string;
3085
+ failedToolCount: number;
3086
+ finalTool?: CompletionReceiptFinalTool;
2795
3087
  /**
2796
- * Synthetic HydraFusion model selected for the session.
3088
+ * Version of the completion receipt payload.
2797
3089
  */
2798
- syntheticModel?: string;
2799
- turnKind: FusionTurnKind;
3090
+ schemaVersion: number;
3091
+ /**
3092
+ * Identifier of the assistant turn-end event that supplied the accepted completion boundary. This is the receipt's idempotency key, and always equals eventRange.endEventId.
3093
+ */
3094
+ sourceEventId: string;
3095
+ stopReason: CompletionReceiptStopReason;
3096
+ /**
3097
+ * Number of successful structured tool completions in the covered range.
3098
+ */
3099
+ successfulToolCount: number;
2800
3100
  }
2801
3101
  /**
2802
- * Session event "session.fusion_route_failed". Experimental durable HydraFusion routing failure and the deterministic concrete fallback selected for the turn.
3102
+ * Inclusive durable event range summarized by a completion receipt.
2803
3103
  */
2804
- /** @experimental */
2805
- export interface FusionRouteFailedEvent {
2806
- /**
2807
- * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
2808
- */
2809
- agentId?: string;
2810
- data: FusionRouteFailedData;
3104
+ export interface CompletionReceiptEventRange {
2811
3105
  /**
2812
- * When true, the event is transient and not persisted to the session event log on disk
3106
+ * Identifier of the assistant turn-end event that ends the covered exchange. Always equals the receipt's sourceEventId, so either field is a valid join key.
2813
3107
  */
2814
- ephemeral?: boolean;
3108
+ endEventId: string;
2815
3109
  /**
2816
- * Unique event identifier (UUID v4), generated when the event is emitted
3110
+ * Identifier of the user message that starts the covered exchange.
2817
3111
  */
2818
- id: string;
3112
+ startEventId: string;
3113
+ }
3114
+ /**
3115
+ * Final structured tool completion in the covered event range.
3116
+ */
3117
+ export interface CompletionReceiptFinalTool {
2819
3118
  /**
2820
- * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
3119
+ * Process exit code from a structured shell result, when available.
2821
3120
  */
2822
- parentId: string | null;
3121
+ exitCode?: number;
3122
+ status: CompletionReceiptToolStatus;
2823
3123
  /**
2824
- * ISO 8601 timestamp when the event was created
3124
+ * Unique identifier of the completed tool call.
2825
3125
  */
2826
- timestamp: string;
3126
+ toolCallId: string;
2827
3127
  /**
2828
- * Type discriminator. Always "session.fusion_route_failed".
3128
+ * Tool name from the matching tool execution start event, when available.
2829
3129
  */
2830
- type: "session.fusion_route_failed";
3130
+ toolName?: string;
3131
+ }
3132
+ /**
3133
+ * Session event "session.fusion_route_started". Experimental transient signal that HydraFusion routing has started for an eligible turn.
3134
+ */
3135
+ /** @experimental */
3136
+ export interface FusionRouteStartedEvent {
3137
+ /**
3138
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
3139
+ */
3140
+ agentId?: string;
3141
+ data: FusionRouteStartedData;
3142
+ /**
3143
+ * Always true for events that are transient and not persisted to the session event log on disk.
3144
+ */
3145
+ ephemeral: true;
3146
+ /**
3147
+ * Unique event identifier (UUID v4), generated when the event is emitted
3148
+ */
3149
+ id: string;
3150
+ /**
3151
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
3152
+ */
3153
+ parentId: string | null;
3154
+ /**
3155
+ * ISO 8601 timestamp when the event was created
3156
+ */
3157
+ timestamp: string;
3158
+ /**
3159
+ * Type discriminator. Always "session.fusion_route_started".
3160
+ */
3161
+ type: "session.fusion_route_started";
3162
+ }
3163
+ /**
3164
+ * Experimental transient signal that HydraFusion routing has started for an eligible turn.
3165
+ */
3166
+ /** @experimental */
3167
+ export interface FusionRouteStartedData {
3168
+ /**
3169
+ * Identifier for this routing attempt before a durable Fusion turn exists.
3170
+ */
3171
+ attemptId: string;
3172
+ /**
3173
+ * HydraFusion routing policy requested for the turn.
3174
+ */
3175
+ policy?: string;
3176
+ /**
3177
+ * Synthetic HydraFusion model selected for the session.
3178
+ */
3179
+ syntheticModel?: string;
3180
+ turnKind: FusionTurnKind;
3181
+ }
3182
+ /**
3183
+ * Session event "session.fusion_route_failed". Experimental durable HydraFusion routing failure and the deterministic concrete fallback selected for the turn.
3184
+ */
3185
+ /** @experimental */
3186
+ export interface FusionRouteFailedEvent {
3187
+ /**
3188
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
3189
+ */
3190
+ agentId?: string;
3191
+ data: FusionRouteFailedData;
3192
+ /**
3193
+ * When true, the event is transient and not persisted to the session event log on disk
3194
+ */
3195
+ ephemeral?: boolean;
3196
+ /**
3197
+ * Unique event identifier (UUID v4), generated when the event is emitted
3198
+ */
3199
+ id: string;
3200
+ /**
3201
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
3202
+ */
3203
+ parentId: string | null;
3204
+ /**
3205
+ * ISO 8601 timestamp when the event was created
3206
+ */
3207
+ timestamp: string;
3208
+ /**
3209
+ * Type discriminator. Always "session.fusion_route_failed".
3210
+ */
3211
+ type: "session.fusion_route_failed";
2831
3212
  }
2832
3213
  /**
2833
3214
  * Experimental durable HydraFusion routing failure and the deterministic concrete fallback selected for the turn.
@@ -2921,6 +3302,12 @@ export interface FusionResolvedData {
2921
3302
  */
2922
3303
  modelUniverseVersion?: string;
2923
3304
  pattern: FusionPattern;
3305
+ /**
3306
+ * Presentation-neutral phase plan for clients that render workflow progress.
3307
+ *
3308
+ * @experimental
3309
+ */
3310
+ phasePlan?: FusionPhasePlanStep[];
2924
3311
  /**
2925
3312
  * Version of the validated execution-plan format.
2926
3313
  */
@@ -2979,6 +3366,22 @@ export interface FusionFollowUpRecommendation {
2979
3366
  compactionTurn: FusionFollowUpAction;
2980
3367
  userTurn: FusionFollowUpAction;
2981
3368
  }
3369
+ /**
3370
+ * Presentation-neutral phase planned for a HydraFusion turn.
3371
+ */
3372
+ /** @experimental */
3373
+ export interface FusionPhasePlanStep {
3374
+ /**
3375
+ * Whether the phase executes only when an earlier phase requests it.
3376
+ */
3377
+ conditional: boolean;
3378
+ kind: FusionPhaseKind;
3379
+ /**
3380
+ * Semantic role assigned to the phase.
3381
+ */
3382
+ role: string;
3383
+ scope: FusionConversationScope;
3384
+ }
2982
3385
  /**
2983
3386
  * Validated HydraFusion routing capability scores.
2984
3387
  */
@@ -3159,6 +3562,10 @@ export interface UserMessageData {
3159
3562
  * True when this user message was auto-injected by autopilot's continuation loop rather than typed by the user; used to distinguish autopilot-driven turns in telemetry.
3160
3563
  */
3161
3564
  isAutopilotContinuation?: boolean;
3565
+ /**
3566
+ * Stable identity of the logical user message, matching the ID returned by send and retained by pending queue snapshots
3567
+ */
3568
+ messageId?: string;
3162
3569
  /**
3163
3570
  * Path-backed native document attachments that stayed on the tagged_files path flow because native upload could not read them or would exceed the request size limit
3164
3571
  */
@@ -3799,6 +4206,67 @@ export interface FusionPhaseStartedData {
3799
4206
  */
3800
4207
  role: string;
3801
4208
  }
4209
+ /**
4210
+ * Session event "assistant.fusion_phase_activity". Experimental content-safe activity signal for a running HydraFusion phase.
4211
+ */
4212
+ /** @experimental */
4213
+ export interface AssistantFusionPhaseActivityEvent {
4214
+ /**
4215
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
4216
+ */
4217
+ agentId?: string;
4218
+ data: FusionPhaseActivityData;
4219
+ /**
4220
+ * Always true for events that are transient and not persisted to the session event log on disk.
4221
+ */
4222
+ ephemeral: true;
4223
+ /**
4224
+ * Unique event identifier (UUID v4), generated when the event is emitted
4225
+ */
4226
+ id: string;
4227
+ /**
4228
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
4229
+ */
4230
+ parentId: string | null;
4231
+ /**
4232
+ * ISO 8601 timestamp when the event was created
4233
+ */
4234
+ timestamp: string;
4235
+ /**
4236
+ * Type discriminator. Always "assistant.fusion_phase_activity".
4237
+ */
4238
+ type: "assistant.fusion_phase_activity";
4239
+ }
4240
+ /**
4241
+ * Experimental content-safe activity signal for a running HydraFusion phase.
4242
+ */
4243
+ /** @experimental */
4244
+ export interface FusionPhaseActivityData {
4245
+ activity: FusionPhaseActivityKind;
4246
+ conversationScope: FusionConversationScope;
4247
+ /**
4248
+ * Identifier of the HydraFusion turn containing the phase.
4249
+ */
4250
+ fusionId: string;
4251
+ pattern: FusionPattern;
4252
+ /**
4253
+ * Stable identifier for the concrete phase.
4254
+ */
4255
+ phaseId: string;
4256
+ phaseKind: FusionPhaseKind;
4257
+ /**
4258
+ * Semantic role assigned to the phase.
4259
+ */
4260
+ role: string;
4261
+ /**
4262
+ * Opaque hashed correlation token for matching tool-started and tool-completed activity within this Fusion activity stream. It is not the tool call identifier exposed by tool lifecycle events.
4263
+ */
4264
+ toolCallId?: string;
4265
+ /**
4266
+ * Cumulative private response bytes observed for this model call. The event never includes response text.
4267
+ */
4268
+ totalResponseSizeBytes?: number;
4269
+ }
3802
4270
  /**
3803
4271
  * Session event "assistant.fusion_phase_completed". Experimental durable HydraFusion phase output and lossless replay checkpoint.
3804
4272
  */
@@ -4509,7 +4977,7 @@ export interface FusionAttribution {
4509
4977
  /** @experimental */
4510
4978
  export interface AssistantMessageReasoningBlocks {
4511
4979
  /**
4512
- * 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.
4980
+ * Provider-native reasoning items or content blocks preserved verbatim, in order. A single response can carry several, and provider signatures or identifiers may depend on their exact content and ordering.
4513
4981
  */
4514
4982
  blocks?: JsonValue[];
4515
4983
  /**
@@ -4927,6 +5395,10 @@ export interface AssistantUsageData {
4927
5395
  * Per-request cost and usage data from the CAPI copilot_usage response field
4928
5396
  */
4929
5397
  export interface AssistantUsageCopilotUsage {
5398
+ /**
5399
+ * Default billing model for token details that do not identify their own model
5400
+ */
5401
+ model?: string;
4930
5402
  /**
4931
5403
  * Total cost in nano-AI units for this request
4932
5404
  */
@@ -4944,6 +5416,10 @@ export interface AssistantUsageCopilotUsageTokenDetail {
4944
5416
  * Cost per batch of tokens
4945
5417
  */
4946
5418
  costPerBatch: number;
5419
+ /**
5420
+ * Model responsible for this billing entry
5421
+ */
5422
+ model?: string;
4947
5423
  /**
4948
5424
  * Total token count for this entry
4949
5425
  */
@@ -5296,6 +5772,7 @@ export interface ToolExecutionStartData {
5296
5772
  * Original tool name on the MCP server, when the tool is an MCP tool
5297
5773
  */
5298
5774
  mcpToolName?: string;
5775
+ mcpTransport?: McpServerTransport;
5299
5776
  /**
5300
5777
  * Model identifier that generated this tool call
5301
5778
  */
@@ -5567,6 +6044,7 @@ export interface ToolExecutionCompleteError {
5567
6044
  * Human-readable error message
5568
6045
  */
5569
6046
  message: string;
6047
+ remediation?: RemediationAction;
5570
6048
  }
5571
6049
  /**
5572
6050
  * Tool execution result on success
@@ -6129,6 +6607,10 @@ export interface SkillInvokedData {
6129
6607
  * Description of the skill from its SKILL.md frontmatter
6130
6608
  */
6131
6609
  description?: string;
6610
+ /**
6611
+ * Whether model invocation is disabled for this skill
6612
+ */
6613
+ disableModelInvocation?: boolean;
6132
6614
  /**
6133
6615
  * Model identifier active when the skill was invoked, when known
6134
6616
  */
@@ -6138,7 +6620,7 @@ export interface SkillInvokedData {
6138
6620
  */
6139
6621
  name: string;
6140
6622
  /**
6141
- * File path to the SKILL.md definition
6623
+ * File path to the SKILL.md definition, or an empty string for an SDK-provided skill without a filesystem identity
6142
6624
  */
6143
6625
  path: string;
6144
6626
  /**
@@ -6150,7 +6632,7 @@ export interface SkillInvokedData {
6150
6632
  */
6151
6633
  pluginVersion?: string;
6152
6634
  /**
6153
- * Source identifier for where the skill was discovered. Known values include: project (workspace skill), inherited (parent-directory skill), personal-copilot (~/.copilot/skills), personal-agents (~/.agents/skills), custom (configured directory), plugin (installed plugin), builtin (bundled runtime skill), and remote (org/enterprise skill)
6635
+ * Source identifier for where the skill was discovered. Known values include: project (workspace skill), inherited (parent-directory skill), personal-copilot (~/.copilot/skills), personal-agents (~/.agents/skills), custom (configured directory), plugin (installed plugin), builtin (bundled runtime skill), remote (org/enterprise skill), and sdk (SDK-provided skill)
6154
6636
  */
6155
6637
  source?: string;
6156
6638
  trigger?: SkillInvokedTrigger;
@@ -6225,6 +6707,7 @@ export interface SubagentStartedData {
6225
6707
  * Whether this sub-agent can be resumed. Currently always false.
6226
6708
  */
6227
6709
  resumable?: boolean;
6710
+ taskModelSource?: SubagentTaskModelSource;
6228
6711
  /**
6229
6712
  * Tool call ID of the parent tool invocation that spawned this sub-agent
6230
6713
  */
@@ -6355,6 +6838,11 @@ export interface SubagentCompletedData {
6355
6838
  * Model used by the sub-agent
6356
6839
  */
6357
6840
  model?: string;
6841
+ /**
6842
+ * Why an explicit task-call model did not become the effective model
6843
+ */
6844
+ modelOverrideReason?: string;
6845
+ modelSelectionSource?: SubagentModelSelectionSource;
6358
6846
  /**
6359
6847
  * Tool call ID of the parent tool invocation that spawned this sub-agent
6360
6848
  */
@@ -6442,6 +6930,11 @@ export interface SubagentFailedData {
6442
6930
  * Model selected for the sub-agent, when known
6443
6931
  */
6444
6932
  model?: string;
6933
+ /**
6934
+ * Why an explicit task-call model did not become the effective model
6935
+ */
6936
+ modelOverrideReason?: string;
6937
+ modelSelectionSource?: SubagentModelSelectionSource;
6445
6938
  /**
6446
6939
  * Tool call ID of the parent tool invocation that spawned this sub-agent
6447
6940
  */
@@ -7042,6 +7535,7 @@ export interface SystemNotificationFactoryCompleted {
7042
7535
  * Machine-readable terminal failure details, when present.
7043
7536
  */
7044
7537
  failure?: JsonValue;
7538
+ pauseInfo?: SystemNotificationFactoryPauseInfo;
7045
7539
  /**
7046
7540
  * Bounded prompt-safe preview of the completed result.
7047
7541
  */
@@ -7107,6 +7601,7 @@ export interface PermissionRequestedEvent {
7107
7601
  * Permission request notification requiring client approval with request details
7108
7602
  */
7109
7603
  export interface PermissionRequestedData {
7604
+ agentMode?: SessionMode;
7110
7605
  permissionRequest: PermissionRequest;
7111
7606
  promptRequest?: PermissionPromptRequest;
7112
7607
  /**
@@ -7167,13 +7662,31 @@ export interface PermissionRequestShell {
7167
7662
  */
7168
7663
  possibleUrls: PermissionRequestShellPossibleUrl[];
7169
7664
  /**
7170
- * True when the model has requested to run this command outside the sandbox (it set requestSandboxBypass: true and the host opted in via sandbox.allowBypass). This is a request, not a grant: the command runs unsandboxed only if the user approves this permission request. Hosts should highlight the elevated risk in the approval UI.
7665
+ * True when the tool is asking to run this command outside the sandbox, either because the command detaches and cannot be sandboxed at all, or because a sandboxed run looked blocked (host opted in via sandbox.allowBypass). The model cannot ask for this; only the tool raises it. This is a request, not a grant: the command runs unsandboxed only if the user approves this permission request. Hosts should highlight the elevated risk in the approval UI.
7171
7666
  */
7172
7667
  requestSandboxBypass?: boolean;
7173
7668
  /**
7174
- * Model-provided justification for the sandbox-bypass request. Only meaningful when requestSandboxBypass is true.
7669
+ * What the tool tells the user about the bypass on offer: which policy rule blocked the call, or why it cannot be sandboxed. Only meaningful when requestSandboxBypass is true.
7175
7670
  */
7176
7671
  requestSandboxBypassReason?: string;
7672
+ /**
7673
+ * True when the requested escalation is a permissive retry rather than a full bypass: the command re-runs inside the sandbox with its file and process restrictions recording instead of blocking, while the network policy stays enforced. Always accompanied by requestSandboxBypass, so hosts that do not recognize this field still treat the request as the escalation it is. Hosts that do recognize it must not describe the command as running outside the sandbox, which would overstate the privilege being granted.
7674
+ */
7675
+ requestSandboxPermissive?: boolean;
7676
+ /**
7677
+ * Runtime-resolved canonical object each possiblePaths entry names, keyed by the requested spelling, used for authorization identity checks. Internal and experimental; clients should continue to display possiblePaths.
7678
+ *
7679
+ * @experimental
7680
+ */
7681
+ resolvedPaths?: {
7682
+ [k: string]: string | undefined;
7683
+ };
7684
+ /**
7685
+ * Runtime-resolved canonical working directory the command runs in, used for authorization identity checks. Internal and experimental; clients should not display it.
7686
+ *
7687
+ * @experimental
7688
+ */
7689
+ resolvedWorkingDirectory?: string;
7177
7690
  /**
7178
7691
  * Tool call ID that triggered this permission request
7179
7692
  */
@@ -7258,6 +7771,12 @@ export interface PermissionRequestWrite {
7258
7771
  * Justification for the sandbox-bypass request. Only meaningful when requestSandboxBypass is true.
7259
7772
  */
7260
7773
  requestSandboxBypassReason?: string;
7774
+ /**
7775
+ * Runtime-resolved canonical path used for authorization identity checks. Internal and experimental; clients should continue to display fileName.
7776
+ *
7777
+ * @experimental
7778
+ */
7779
+ resolvedPath?: string;
7261
7780
  /**
7262
7781
  * Tool call ID that triggered this permission request
7263
7782
  */
@@ -7284,13 +7803,19 @@ export interface PermissionRequestRead {
7284
7803
  */
7285
7804
  path: string;
7286
7805
  /**
7287
- * True when the model has requested to run this search outside the sandbox (it set requestSandboxBypass: true and the host opted in via sandbox.allowBypass). This is a request, not a grant: the search runs unsandboxed only if the user approves this permission request. Hosts should highlight the elevated risk in the approval UI.
7806
+ * True when the tool is asking to re-run this search outside the sandbox, after a sandboxed run looked blocked (host opted in via sandbox.allowBypass). The model cannot ask for this; only the tool raises it. This is a request, not a grant: the search runs unsandboxed only if the user approves this permission request. Hosts should highlight the elevated risk in the approval UI.
7288
7807
  */
7289
7808
  requestSandboxBypass?: boolean;
7290
7809
  /**
7291
- * Model-provided justification for the sandbox-bypass request. Only meaningful when requestSandboxBypass is true.
7810
+ * What the tool tells the user about the bypass on offer: which policy rule blocked the call, or why it cannot be sandboxed. Only meaningful when requestSandboxBypass is true.
7292
7811
  */
7293
7812
  requestSandboxBypassReason?: string;
7813
+ /**
7814
+ * Runtime-resolved canonical path used for authorization identity checks. Internal and experimental; clients should continue to display path.
7815
+ *
7816
+ * @experimental
7817
+ */
7818
+ resolvedPath?: string;
7294
7819
  /**
7295
7820
  * Tool call ID that triggered this permission request
7296
7821
  */
@@ -7356,11 +7881,11 @@ export interface PermissionRequestUrl {
7356
7881
  */
7357
7882
  redirectedFrom?: string;
7358
7883
  /**
7359
- * True when this URL fetch is requesting to bypass the sandbox network policy: either the model set requestSandboxBypass: true, or the tool re-issued the request as an interactive bypass after the network policy denied the approved URL (host opted in via sandbox.allowBypass). This is a request, not a grant: the fetch runs only if the user approves this permission request. Hosts should highlight the elevated risk in the approval UI.
7884
+ * True when the tool is asking to run this URL fetch outside the sandbox, after the network policy denied the approved URL or the sandbox proxy could not reach it (host opted in via sandbox.allowBypass). The model cannot ask for this; only the tool raises it. This is a request, not a grant: the fetch runs only if the user approves this permission request. Hosts should highlight the elevated risk in the approval UI.
7360
7885
  */
7361
7886
  requestSandboxBypass?: boolean;
7362
7887
  /**
7363
- * Model-provided justification for the sandbox-bypass request. Only meaningful when requestSandboxBypass is true.
7888
+ * What the tool tells the user about the bypass on offer: which policy rule blocked the call, or why it cannot be sandboxed. Only meaningful when requestSandboxBypass is true.
7364
7889
  */
7365
7890
  requestSandboxBypassReason?: string;
7366
7891
  /**
@@ -7662,6 +8187,18 @@ export interface PermissionPromptRequestCommands {
7662
8187
  * Whether managed policy requires a human response and forbids host auto-approval
7663
8188
  */
7664
8189
  managedApprovalRequired?: boolean;
8190
+ /**
8191
+ * True when the shell command is requesting sandbox escalation. This is a request, not a grant.
8192
+ */
8193
+ requestSandboxBypass?: boolean;
8194
+ /**
8195
+ * Reason for the sandbox escalation request.
8196
+ */
8197
+ requestSandboxBypassReason?: string;
8198
+ /**
8199
+ * True when the escalation is a permissive retry that keeps the sandbox and network policy attached while recording file and process accesses instead of blocking them.
8200
+ */
8201
+ requestSandboxPermissive?: boolean;
7665
8202
  /**
7666
8203
  * Tool call ID that triggered this permission request
7667
8204
  */
@@ -7709,6 +8246,12 @@ export interface PermissionPromptRequestWrite {
7709
8246
  * Complete new file contents for newly created files
7710
8247
  */
7711
8248
  newFileContents?: string;
8249
+ /**
8250
+ * Runtime-resolved canonical path used for authorization identity checks. Internal and experimental; clients should continue to display fileName.
8251
+ *
8252
+ * @experimental
8253
+ */
8254
+ resolvedPath?: string;
7712
8255
  /**
7713
8256
  * Tool call ID that triggered this permission request
7714
8257
  */
@@ -7740,6 +8283,12 @@ export interface PermissionPromptRequestRead {
7740
8283
  * Path of the file or directory being read
7741
8284
  */
7742
8285
  path: string;
8286
+ /**
8287
+ * Runtime-resolved canonical path used for authorization identity checks. Internal and experimental; clients should continue to display path.
8288
+ *
8289
+ * @experimental
8290
+ */
8291
+ resolvedPath?: string;
7743
8292
  /**
7744
8293
  * Tool call ID that triggered this permission request
7745
8294
  */
@@ -7817,11 +8366,11 @@ export interface PermissionPromptRequestUrl {
7817
8366
  */
7818
8367
  redirectedFrom?: string;
7819
8368
  /**
7820
- * True when this URL fetch is requesting to bypass the sandbox network policy: either the model set requestSandboxBypass: true, or the tool re-issued the request as an interactive bypass after the network policy denied the approved URL (host opted in via sandbox.allowBypass). This is a request, not a grant: the fetch runs only if the user approves this permission request. Hosts should highlight the elevated risk in the approval UI.
8369
+ * True when the tool is asking to run this URL fetch outside the sandbox, after the network policy denied the approved URL or the sandbox proxy could not reach it (host opted in via sandbox.allowBypass). The model cannot ask for this; only the tool raises it. This is a request, not a grant: the fetch runs only if the user approves this permission request. Hosts should highlight the elevated risk in the approval UI.
7821
8370
  */
7822
8371
  requestSandboxBypass?: boolean;
7823
8372
  /**
7824
- * Model-provided justification for the sandbox-bypass request. Only meaningful when requestSandboxBypass is true.
8373
+ * What the tool tells the user about the bypass on offer: which policy rule blocked the call, or why it cannot be sandboxed. Only meaningful when requestSandboxBypass is true.
7825
8374
  */
7826
8375
  requestSandboxBypassReason?: string;
7827
8376
  /**
@@ -8149,6 +8698,12 @@ export interface PermissionCompletedEvent {
8149
8698
  * Permission request completion notification signaling UI dismissal
8150
8699
  */
8151
8700
  export interface PermissionCompletedData {
8701
+ /**
8702
+ * Who decided this permission request. Absent on completions recorded before this field existed, which consumers must treat as "not a human decision" rather than assuming one. Authorization records are minted only for `human_response`; an assisted-approval verdict, a host policy, an unattended fallback, and a hook resolution all produce the same `result` a person does, so this is the only field that distinguishes them.
8703
+ *
8704
+ * @experimental
8705
+ */
8706
+ decisionSource?: PermissionDecisionSource;
8152
8707
  /**
8153
8708
  * Request ID of the resolved permission request; clients should dismiss any UI for this request
8154
8709
  */
@@ -8431,6 +8986,244 @@ export interface PermissionDeniedByPermissionRequestHook {
8431
8986
  */
8432
8987
  message?: string;
8433
8988
  }
8989
+ /**
8990
+ * Session event "permission.carriedForward". Records that a live authorization record from an earlier human decision in this session contained a permission proposal, so it ran without another prompt. This mints no authority: it accounts for one more effect against the prior grant, which is what lets a replayed session agree with the live one about how much of that grant is left.
8991
+ */
8992
+ /** @experimental */
8993
+ export interface PermissionCarriedForwardEvent {
8994
+ /**
8995
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
8996
+ */
8997
+ agentId?: string;
8998
+ data: PermissionCarriedForwardData;
8999
+ /**
9000
+ * When true, the event is transient and not persisted to the session event log on disk
9001
+ */
9002
+ ephemeral?: boolean;
9003
+ /**
9004
+ * Unique event identifier (UUID v4), generated when the event is emitted
9005
+ */
9006
+ id: string;
9007
+ /**
9008
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
9009
+ */
9010
+ parentId: string | null;
9011
+ /**
9012
+ * ISO 8601 timestamp when the event was created
9013
+ */
9014
+ timestamp: string;
9015
+ /**
9016
+ * Type discriminator. Always "permission.carriedForward".
9017
+ */
9018
+ type: "permission.carriedForward";
9019
+ }
9020
+ /**
9021
+ * Records that a live authorization record from an earlier human decision in this session contained a permission proposal, so it ran without another prompt. This mints no authority: it accounts for one more effect against the prior grant, which is what lets a replayed session agree with the live one about how much of that grant is left.
9022
+ */
9023
+ /** @experimental */
9024
+ export interface PermissionCarriedForwardData {
9025
+ /**
9026
+ * Always `authorization_carry_forward`. Stated explicitly so a consumer reading this event cannot mistake it for a human, host-policy, or assisted-approval decision.
9027
+ *
9028
+ * @experimental
9029
+ */
9030
+ decisionSource: PermissionDecisionSource;
9031
+ /**
9032
+ * Identity of the prior authorization record that contained the proposal.
9033
+ *
9034
+ * @experimental
9035
+ */
9036
+ recordId: string;
9037
+ /**
9038
+ * Authorization edge minted for this admission. Not a prompt id: no prompt was raised, so no client should expect a request with this id.
9039
+ *
9040
+ * @experimental
9041
+ */
9042
+ requestId: string;
9043
+ /**
9044
+ * Tool call this admission authorizes. Its execution receipts the prior grant, which is how a single-effect approval is spent rather than carried forward again.
9045
+ *
9046
+ * @experimental
9047
+ */
9048
+ toolCallId: string;
9049
+ }
9050
+ /**
9051
+ * Session event "permission.messageAuthorization". Freezes one blinded, verbatim-verified authorization claim the runtime minted from a human user message, so a resumed session re-establishes the same grant deterministically instead of re-running the extraction model. This mints no authority on its own: it records what a blinded proposer pointed at and the trusted discriminator the runtime established, and deterministic establishment runs on replay. Persisted so recorded authority survives compaction and process resume.
9052
+ */
9053
+ /** @experimental */
9054
+ export interface PermissionMessageAuthorizationEvent {
9055
+ /**
9056
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
9057
+ */
9058
+ agentId?: string;
9059
+ data: PermissionMessageAuthorizationData;
9060
+ /**
9061
+ * When true, the event is transient and not persisted to the session event log on disk
9062
+ */
9063
+ ephemeral?: boolean;
9064
+ /**
9065
+ * Unique event identifier (UUID v4), generated when the event is emitted
9066
+ */
9067
+ id: string;
9068
+ /**
9069
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
9070
+ */
9071
+ parentId: string | null;
9072
+ /**
9073
+ * ISO 8601 timestamp when the event was created
9074
+ */
9075
+ timestamp: string;
9076
+ /**
9077
+ * Type discriminator. Always "permission.messageAuthorization".
9078
+ */
9079
+ type: "permission.messageAuthorization";
9080
+ }
9081
+ /**
9082
+ * Freezes one blinded, verbatim-verified authorization claim the runtime minted from a human user message, so a resumed session re-establishes the same grant deterministically instead of re-running the extraction model. This mints no authority on its own: it records what a blinded proposer pointed at and the trusted discriminator the runtime established, and deterministic establishment runs on replay. Persisted so recorded authority survives compaction and process resume.
9083
+ */
9084
+ /** @experimental */
9085
+ export interface PermissionMessageAuthorizationData {
9086
+ /**
9087
+ * The kind of effect authorized, as an action-class identifier.
9088
+ *
9089
+ * @experimental
9090
+ */
9091
+ actionClass: string;
9092
+ /**
9093
+ * Whether the claim granted or denied authority.
9094
+ *
9095
+ * @experimental
9096
+ */
9097
+ polarity: PermissionMessageAuthorizationPolarity;
9098
+ /**
9099
+ * Deterministic identity of the record, derived from the turn and span offsets so re-extracting the same span mints nothing new.
9100
+ *
9101
+ * @experimental
9102
+ */
9103
+ recordId: string;
9104
+ /**
9105
+ * End byte offset of the authorizing span within the turn.
9106
+ *
9107
+ * @experimental
9108
+ */
9109
+ spanEnd: number;
9110
+ /**
9111
+ * Start byte offset of the authorizing span within the turn.
9112
+ *
9113
+ * @experimental
9114
+ */
9115
+ spanStart: number;
9116
+ /**
9117
+ * Concrete named targets that appear verbatim inside the span.
9118
+ *
9119
+ * @experimental
9120
+ */
9121
+ targetMembers?: string[];
9122
+ /**
9123
+ * The task the permission is scoped to, when the human named one.
9124
+ *
9125
+ * @experimental
9126
+ */
9127
+ task?: string;
9128
+ /**
9129
+ * The human turn the quoted span was read from.
9130
+ *
9131
+ * @experimental
9132
+ */
9133
+ turnIndex: number;
9134
+ /**
9135
+ * The trusted version discriminator, when one exists. Exact shell-command grants carry the byte-identical commands grounded in the human span; world-derived classes carry a file object, remote tip, or runner only when that state was captured safely. An opaque object mirroring the runtime's adjacently-tagged resolution.
9136
+ *
9137
+ * @experimental
9138
+ */
9139
+ world?: JsonValue;
9140
+ }
9141
+ /**
9142
+ * Session event "permission.messageAuthorizationRead". Records that one human turn has been read by the blinded authorization proposer, whether or not it minted anything, so a resumed session does not re-run the extraction model on a turn the live session already read. Persisted purely to avoid wasted model calls across resume; it is never a correctness mechanism.
9143
+ */
9144
+ /** @experimental */
9145
+ export interface PermissionMessageAuthorizationReadEvent {
9146
+ /**
9147
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
9148
+ */
9149
+ agentId?: string;
9150
+ data: PermissionMessageAuthorizationReadData;
9151
+ /**
9152
+ * When true, the event is transient and not persisted to the session event log on disk
9153
+ */
9154
+ ephemeral?: boolean;
9155
+ /**
9156
+ * Unique event identifier (UUID v4), generated when the event is emitted
9157
+ */
9158
+ id: string;
9159
+ /**
9160
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
9161
+ */
9162
+ parentId: string | null;
9163
+ /**
9164
+ * ISO 8601 timestamp when the event was created
9165
+ */
9166
+ timestamp: string;
9167
+ /**
9168
+ * Type discriminator. Always "permission.messageAuthorizationRead".
9169
+ */
9170
+ type: "permission.messageAuthorizationRead";
9171
+ }
9172
+ /**
9173
+ * Records that one human turn has been read by the blinded authorization proposer, whether or not it minted anything, so a resumed session does not re-run the extraction model on a turn the live session already read. Persisted purely to avoid wasted model calls across resume; it is never a correctness mechanism.
9174
+ */
9175
+ /** @experimental */
9176
+ export interface PermissionMessageAuthorizationReadData {
9177
+ /**
9178
+ * The human turn that was read by the proposer.
9179
+ *
9180
+ * @experimental
9181
+ */
9182
+ turnIndex: number;
9183
+ }
9184
+ /**
9185
+ * Session event "permission.messageAuthorizationDegraded". Records that message-backed authorization could not safely represent one human turn before compaction. The runtime may compact the original message after this marker is durable, but message-derived carry-forward and assisted auto-approval remain disabled for the rest of the session so subsequent commands continue through the ordinary permission prompt.
9186
+ */
9187
+ /** @experimental */
9188
+ export interface PermissionMessageAuthorizationDegradedEvent {
9189
+ /**
9190
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
9191
+ */
9192
+ agentId?: string;
9193
+ data: PermissionMessageAuthorizationDegradedData;
9194
+ /**
9195
+ * When true, the event is transient and not persisted to the session event log on disk
9196
+ */
9197
+ ephemeral?: boolean;
9198
+ /**
9199
+ * Unique event identifier (UUID v4), generated when the event is emitted
9200
+ */
9201
+ id: string;
9202
+ /**
9203
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
9204
+ */
9205
+ parentId: string | null;
9206
+ /**
9207
+ * ISO 8601 timestamp when the event was created
9208
+ */
9209
+ timestamp: string;
9210
+ /**
9211
+ * Type discriminator. Always "permission.messageAuthorizationDegraded".
9212
+ */
9213
+ type: "permission.messageAuthorizationDegraded";
9214
+ }
9215
+ /**
9216
+ * Records that message-backed authorization could not safely represent one human turn before compaction. The runtime may compact the original message after this marker is durable, but message-derived carry-forward and assisted auto-approval remain disabled for the rest of the session so subsequent commands continue through the ordinary permission prompt.
9217
+ */
9218
+ /** @experimental */
9219
+ export interface PermissionMessageAuthorizationDegradedData {
9220
+ /**
9221
+ * The human turn that could not be represented safely.
9222
+ *
9223
+ * @experimental
9224
+ */
9225
+ turnIndex: number;
9226
+ }
8434
9227
  /**
8435
9228
  * Session event "user_input.requested". User input request notification with question and optional predefined choices
8436
9229
  */
@@ -9629,7 +10422,7 @@ export interface AutoModeResolvedData {
9629
10422
  stickyOverride?: boolean;
9630
10423
  }
9631
10424
  /**
9632
- * Session event "session.managed_settings_resolved". Enterprise managed-settings resolution: the effective managed settings the session applied and which channels contributed, so SDK clients can show users what is enterprise-managed. Fires whenever managed policy is (re)applied — at session start, on resume, and on account switch. This is an ephemeral live snapshot (delivered to subscribers but not persisted to the session event log), because at session start it resolves before `session.start` is emitted. Device values take precedence over server values per ordinary key, while permissions compose restrictively across device, server, and SDK-client layers. The account-scoped `getManagedSettings()` API does not include session-local client injection. Marked experimental while the managed-settings surface stabilizes.
10425
+ * Session event "session.managed_settings_resolved". Enterprise managed-settings resolution: the effective managed settings the session applied and which channels contributed, so SDK clients can show users what is enterprise-managed. Fires whenever managed policy is (re)applied — at session start, on resume, and on account switch. This is an ephemeral live snapshot (delivered to subscribers but not persisted to the session event log), because at session start it resolves before `session.start` is emitted. Device values take precedence over server values, then the policy helper, per ordinary key, while permissions compose restrictively across device, server, policy-helper, and SDK-client layers. The account-scoped `getManagedSettings()` API does not include session-local client injection. Marked experimental while the managed-settings surface stabilizes.
9633
10426
  */
9634
10427
  /** @experimental */
9635
10428
  export interface ManagedSettingsResolvedEvent {
@@ -9660,7 +10453,7 @@ export interface ManagedSettingsResolvedEvent {
9660
10453
  type: "session.managed_settings_resolved";
9661
10454
  }
9662
10455
  /**
9663
- * Enterprise managed-settings resolution: the effective managed settings the session applied and which channels contributed, so SDK clients can show users what is enterprise-managed. Fires whenever managed policy is (re)applied — at session start, on resume, and on account switch. This is an ephemeral live snapshot (delivered to subscribers but not persisted to the session event log), because at session start it resolves before `session.start` is emitted. Device values take precedence over server values per ordinary key, while permissions compose restrictively across device, server, and SDK-client layers. The account-scoped `getManagedSettings()` API does not include session-local client injection. Marked experimental while the managed-settings surface stabilizes.
10456
+ * Enterprise managed-settings resolution: the effective managed settings the session applied and which channels contributed, so SDK clients can show users what is enterprise-managed. Fires whenever managed policy is (re)applied — at session start, on resume, and on account switch. This is an ephemeral live snapshot (delivered to subscribers but not persisted to the session event log), because at session start it resolves before `session.start` is emitted. Device values take precedence over server values, then the policy helper, per ordinary key, while permissions compose restrictively across device, server, policy-helper, and SDK-client layers. The account-scoped `getManagedSettings()` API does not include session-local client injection. Marked experimental while the managed-settings surface stabilizes.
9664
10457
  */
9665
10458
  /** @experimental */
9666
10459
  export interface ManagedSettingsResolvedData {
@@ -9688,6 +10481,10 @@ export interface ManagedSettingsResolvedData {
9688
10481
  * Whether at least two managed sources supplied permission allowlists, so enforcement intersects them and the flattened settings payload omits `permissions.allow`.
9689
10482
  */
9690
10483
  permissionsAllowIntersected?: boolean;
10484
+ /**
10485
+ * Whether the policy-helper managed-settings layer was present. The policy helper is the weakest channel: it fills keys no enterprise source set and can never replace one.
10486
+ */
10487
+ policyHelperManaged?: boolean;
9691
10488
  /**
9692
10489
  * 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.
9693
10490
  */
@@ -10313,13 +11110,17 @@ export interface CustomAgentsUpdatedData {
10313
11110
  warnings: string[];
10314
11111
  }
10315
11112
  /**
10316
- * A single loaded custom agent in `session.custom_agents_updated`, with identity, source, tools, invocability, and model override.
11113
+ * A single loaded custom agent in `session.custom_agents_updated`, with identity, source, tools, invocability, and authored model configuration.
10317
11114
  */
10318
11115
  export interface CustomAgentsUpdatedAgent {
10319
11116
  /**
10320
11117
  * Description of what the agent does
10321
11118
  */
10322
11119
  description: string;
11120
+ /**
11121
+ * Whether model-driven invocation is disabled for this agent.
11122
+ */
11123
+ disableModelInvocation?: boolean;
10323
11124
  /**
10324
11125
  * Human-readable display name
10325
11126
  */
@@ -10332,6 +11133,11 @@ export interface CustomAgentsUpdatedAgent {
10332
11133
  * Model override for this agent, if set
10333
11134
  */
10334
11135
  model?: string;
11136
+ modelPolicy?: AgentModelPolicy;
11137
+ /**
11138
+ * Authored model ids in priority order, if configured
11139
+ */
11140
+ models?: string[];
10335
11141
  /**
10336
11142
  * Internal name of the agent
10337
11143
  */
@@ -10408,10 +11214,20 @@ export interface McpServersLoadedServer {
10408
11214
  * Version of the plugin that supplied the effective MCP server config, only when source is plugin
10409
11215
  */
10410
11216
  pluginVersion?: string;
11217
+ serverMetadata?: McpServerMetadata;
10411
11218
  source?: McpServerSource;
10412
11219
  status: McpServerStatus;
10413
11220
  transport?: McpServerTransport;
10414
11221
  }
11222
+ /**
11223
+ * Server-advertised metadata learned through modern discovery or legacy initialization.
11224
+ */
11225
+ export interface McpServerMetadata {
11226
+ /**
11227
+ * Non-empty natural-language guidance for using the server, or null when the server omitted instructions or advertised an empty string.
11228
+ */
11229
+ instructions: string | null;
11230
+ }
10415
11231
  /**
10416
11232
  * Session event "session.mcp_server_status_changed". Payload of `session.mcp_server_status_changed` for one MCP server's status and optional failure error.
10417
11233
  */
@@ -10456,6 +11272,84 @@ export interface McpServerStatusChangedData {
10456
11272
  serverName: string;
10457
11273
  status: McpServerStatus;
10458
11274
  }
11275
+ /**
11276
+ * Session event "session.mcp_server_removed". Payload of `session.mcp_server_removed` identifying an MCP server the graph no longer runs.
11277
+ */
11278
+ export interface McpServerRemovedEvent {
11279
+ /**
11280
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
11281
+ */
11282
+ agentId?: string;
11283
+ data: McpServerRemovedData;
11284
+ /**
11285
+ * Always true for events that are transient and not persisted to the session event log on disk.
11286
+ */
11287
+ ephemeral: true;
11288
+ /**
11289
+ * Unique event identifier (UUID v4), generated when the event is emitted
11290
+ */
11291
+ id: string;
11292
+ /**
11293
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
11294
+ */
11295
+ parentId: string | null;
11296
+ /**
11297
+ * ISO 8601 timestamp when the event was created
11298
+ */
11299
+ timestamp: string;
11300
+ /**
11301
+ * Type discriminator. Always "session.mcp_server_removed".
11302
+ */
11303
+ type: "session.mcp_server_removed";
11304
+ }
11305
+ /**
11306
+ * Payload of `session.mcp_server_removed` identifying an MCP server the graph no longer runs.
11307
+ */
11308
+ export interface McpServerRemovedData {
11309
+ /**
11310
+ * Name of the MCP server that was removed from the graph
11311
+ */
11312
+ serverName: string;
11313
+ }
11314
+ /**
11315
+ * Session event "session.mcp_server_needs_reconnect". Payload of `session.mcp_server_needs_reconnect` identifying an MCP server whose connection must be re-established.
11316
+ */
11317
+ export interface McpServerNeedsReconnectEvent {
11318
+ /**
11319
+ * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events.
11320
+ */
11321
+ agentId?: string;
11322
+ data: McpServerNeedsReconnectData;
11323
+ /**
11324
+ * Always true for events that are transient and not persisted to the session event log on disk.
11325
+ */
11326
+ ephemeral: true;
11327
+ /**
11328
+ * Unique event identifier (UUID v4), generated when the event is emitted
11329
+ */
11330
+ id: string;
11331
+ /**
11332
+ * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event.
11333
+ */
11334
+ parentId: string | null;
11335
+ /**
11336
+ * ISO 8601 timestamp when the event was created
11337
+ */
11338
+ timestamp: string;
11339
+ /**
11340
+ * Type discriminator. Always "session.mcp_server_needs_reconnect".
11341
+ */
11342
+ type: "session.mcp_server_needs_reconnect";
11343
+ }
11344
+ /**
11345
+ * Payload of `session.mcp_server_needs_reconnect` identifying an MCP server whose connection must be re-established.
11346
+ */
11347
+ export interface McpServerNeedsReconnectData {
11348
+ /**
11349
+ * Name of the MCP server that needs to reconnect
11350
+ */
11351
+ serverName: string;
11352
+ }
10459
11353
  /**
10460
11354
  * Session event "mcp.tools.list_changed". Payload identifying the MCP server associated with a list change.
10461
11355
  */