From 9322261e0e6846d30817146a567be9b3dfe03336 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 28 May 2026 21:51:49 +0000 Subject: [PATCH] Update @github/copilot to 1.0.56-0 - Updated nodejs and test harness dependencies - Re-ran code generators - Formatted generated code --- dotnet/src/Generated/Rpc.cs | 34 +++++- dotnet/src/Generated/SessionEvents.cs | 132 +++++++++++++++++++++ go/rpc/zrpc.go | 33 ++++++ go/rpc/zsession_events.go | 22 ++++ go/zsession_events.go | 6 + nodejs/package-lock.json | 72 +++++------ nodejs/package.json | 2 +- nodejs/samples/package-lock.json | 2 +- nodejs/src/generated/rpc.ts | 24 ++++ nodejs/src/generated/session-events.ts | 16 +++ python/copilot/generated/rpc.py | 41 ++++++- python/copilot/generated/session_events.py | 24 ++++ rust/src/generated/api_types.rs | 18 +++ rust/src/generated/session_events.rs | 34 ++++++ test/harness/package-lock.json | 72 +++++------ test/harness/package.json | 2 +- 16 files changed, 456 insertions(+), 78 deletions(-) diff --git a/dotnet/src/Generated/Rpc.cs b/dotnet/src/Generated/Rpc.cs index 2f8d898bf..b0453c8bb 100644 --- a/dotnet/src/Generated/Rpc.cs +++ b/dotnet/src/Generated/Rpc.cs @@ -4590,6 +4590,14 @@ internal sealed class SessionUpdateOptionsParams [JsonPropertyName("disabledSkills")] public IList? DisabledSkills { get; set; } + /// Whether to enable loading of `.github/hooks/` filesystem hooks. Separate from the SDK callback hook mechanism. + [JsonPropertyName("enableFileHooks")] + public bool? EnableFileHooks { get; set; } + + /// Whether to enable host git operations (context resolution, child repo scanning, git info in system prompt). + [JsonPropertyName("enableHostGitOperations")] + public bool? EnableHostGitOperations { get; set; } + /// Whether to discover custom instructions on demand after successful file views (AGENTS.md / CLAUDE.md / .github/copilot-instructions.md surfacing). Combined with `skipCustomInstructions` and the runtime-side `ON_DEMAND_INSTRUCTIONS` feature flag. [JsonPropertyName("enableOnDemandInstructionDiscovery")] public bool? EnableOnDemandInstructionDiscovery { get; set; } @@ -4602,6 +4610,14 @@ internal sealed class SessionUpdateOptionsParams [JsonPropertyName("enableScriptSafety")] public bool? EnableScriptSafety { get; set; } + /// Whether to enable cross-session store writes and reads. + [JsonPropertyName("enableSessionStore")] + public bool? EnableSessionStore { get; set; } + + /// Whether to enable skill directory scanning and loading. Falls back to enableConfigDiscovery when unset. + [JsonPropertyName("enableSkills")] + public bool? EnableSkills { get; set; } + /// Whether to stream model responses. [JsonPropertyName("enableStreaming")] public bool? EnableStreaming { get; set; } @@ -4650,6 +4666,10 @@ internal sealed class SessionUpdateOptionsParams [JsonPropertyName("model")] public string? Model { get; set; } + /// Organization-level custom instructions to inject into the system prompt. + [JsonPropertyName("organizationCustomInstructions")] + public string? OrganizationCustomInstructions { get; set; } + /// Custom model-provider configuration (BYOK). Opaque shape; see `ProviderConfig` in the runtime. [Experimental(Diagnostics.Experimental)] [JsonPropertyName("provider")] @@ -4688,6 +4708,10 @@ internal sealed class SessionUpdateOptionsParams [JsonPropertyName("skipCustomInstructions")] public bool? SkipCustomInstructions { get; set; } + /// Whether to skip embedding retrieval pipeline initialization and execution. + [JsonPropertyName("skipEmbeddingRetrieval")] + public bool? SkipEmbeddingRetrieval { get; set; } + /// Controls how availableTools (allowlist) and excludedTools (denylist) combine when both are set. [JsonPropertyName("toolFilterPrecedence")] public OptionsUpdateToolFilterPrecedence? ToolFilterPrecedence { get; set; } @@ -14692,13 +14716,19 @@ internal OptionsApi(CopilotSession session) /// Override directory for the session-events log. When unset, the runtime's default events log directory is used. /// Additional content-exclusion policies to merge into the session's policy set. Opaque shape; see `ContentExclusionApiResponse` in the runtime. /// Whether to expose the `manage_schedule` tool to the agent. The runtime always owns the per-session schedule registry; this flag only controls tool exposure (typically gated to staff users). + /// Whether to skip embedding retrieval pipeline initialization and execution. + /// Organization-level custom instructions to inject into the system prompt. + /// Whether to enable loading of `.github/hooks/` filesystem hooks. Separate from the SDK callback hook mechanism. + /// Whether to enable host git operations (context resolution, child repo scanning, git info in system prompt). + /// Whether to enable cross-session store writes and reads. + /// Whether to enable skill directory scanning and loading. Falls back to enableConfigDiscovery when unset. /// The to monitor for cancellation requests. The default is . /// Indicates whether the session options patch was applied successfully. - public async Task UpdateAsync(string? model = null, string? reasoningEffort = null, string? clientName = null, string? lspClientName = null, string? integrationId = null, IDictionary? featureFlags = null, bool? isExperimentalMode = null, object? provider = null, string? workingDirectory = null, IList? availableTools = null, IList? excludedTools = null, OptionsUpdateToolFilterPrecedence? toolFilterPrecedence = null, bool? enableScriptSafety = null, string? shellInitProfile = null, IList? shellProcessFlags = null, object? sandboxConfig = null, bool? logInteractiveShells = null, OptionsUpdateEnvValueMode? envValueMode = null, IList? skillDirectories = null, IList? disabledSkills = null, bool? enableOnDemandInstructionDiscovery = null, IList? installedPlugins = null, bool? customAgentsLocalOnly = null, bool? skipCustomInstructions = null, IList? disabledInstructionSources = null, bool? coauthorEnabled = null, string? trajectoryFile = null, bool? enableStreaming = null, string? copilotUrl = null, bool? askUserDisabled = null, bool? continueOnAutoMode = null, bool? runningInInteractiveMode = null, bool? enableReasoningSummaries = null, string? agentContext = null, string? eventsLogDirectory = null, IList? additionalContentExclusionPolicies = null, bool? manageScheduleEnabled = null, CancellationToken cancellationToken = default) + public async Task UpdateAsync(string? model = null, string? reasoningEffort = null, string? clientName = null, string? lspClientName = null, string? integrationId = null, IDictionary? featureFlags = null, bool? isExperimentalMode = null, object? provider = null, string? workingDirectory = null, IList? availableTools = null, IList? excludedTools = null, OptionsUpdateToolFilterPrecedence? toolFilterPrecedence = null, bool? enableScriptSafety = null, string? shellInitProfile = null, IList? shellProcessFlags = null, object? sandboxConfig = null, bool? logInteractiveShells = null, OptionsUpdateEnvValueMode? envValueMode = null, IList? skillDirectories = null, IList? disabledSkills = null, bool? enableOnDemandInstructionDiscovery = null, IList? installedPlugins = null, bool? customAgentsLocalOnly = null, bool? skipCustomInstructions = null, IList? disabledInstructionSources = null, bool? coauthorEnabled = null, string? trajectoryFile = null, bool? enableStreaming = null, string? copilotUrl = null, bool? askUserDisabled = null, bool? continueOnAutoMode = null, bool? runningInInteractiveMode = null, bool? enableReasoningSummaries = null, string? agentContext = null, string? eventsLogDirectory = null, IList? additionalContentExclusionPolicies = null, bool? manageScheduleEnabled = null, bool? skipEmbeddingRetrieval = null, string? organizationCustomInstructions = null, bool? enableFileHooks = null, bool? enableHostGitOperations = null, bool? enableSessionStore = null, bool? enableSkills = null, CancellationToken cancellationToken = default) { _session.ThrowIfDisposed(); - var request = new SessionUpdateOptionsParams { SessionId = _session.SessionId, Model = model, ReasoningEffort = reasoningEffort, ClientName = clientName, LspClientName = lspClientName, IntegrationId = integrationId, FeatureFlags = featureFlags, IsExperimentalMode = isExperimentalMode, Provider = CopilotClient.ToJsonElementForWire(provider), WorkingDirectory = workingDirectory, AvailableTools = availableTools, ExcludedTools = excludedTools, ToolFilterPrecedence = toolFilterPrecedence, EnableScriptSafety = enableScriptSafety, ShellInitProfile = shellInitProfile, ShellProcessFlags = shellProcessFlags, SandboxConfig = CopilotClient.ToJsonElementForWire(sandboxConfig), LogInteractiveShells = logInteractiveShells, EnvValueMode = envValueMode, SkillDirectories = skillDirectories, DisabledSkills = disabledSkills, EnableOnDemandInstructionDiscovery = enableOnDemandInstructionDiscovery, InstalledPlugins = installedPlugins, CustomAgentsLocalOnly = customAgentsLocalOnly, SkipCustomInstructions = skipCustomInstructions, DisabledInstructionSources = disabledInstructionSources, CoauthorEnabled = coauthorEnabled, TrajectoryFile = trajectoryFile, EnableStreaming = enableStreaming, CopilotUrl = copilotUrl, AskUserDisabled = askUserDisabled, ContinueOnAutoMode = continueOnAutoMode, RunningInInteractiveMode = runningInInteractiveMode, EnableReasoningSummaries = enableReasoningSummaries, AgentContext = agentContext, EventsLogDirectory = eventsLogDirectory, AdditionalContentExclusionPolicies = additionalContentExclusionPolicies?.Select(static v => CopilotClient.ToJsonElementForWire(v)!.Value).ToList(), ManageScheduleEnabled = manageScheduleEnabled }; + var request = new SessionUpdateOptionsParams { SessionId = _session.SessionId, Model = model, ReasoningEffort = reasoningEffort, ClientName = clientName, LspClientName = lspClientName, IntegrationId = integrationId, FeatureFlags = featureFlags, IsExperimentalMode = isExperimentalMode, Provider = CopilotClient.ToJsonElementForWire(provider), WorkingDirectory = workingDirectory, AvailableTools = availableTools, ExcludedTools = excludedTools, ToolFilterPrecedence = toolFilterPrecedence, EnableScriptSafety = enableScriptSafety, ShellInitProfile = shellInitProfile, ShellProcessFlags = shellProcessFlags, SandboxConfig = CopilotClient.ToJsonElementForWire(sandboxConfig), LogInteractiveShells = logInteractiveShells, EnvValueMode = envValueMode, SkillDirectories = skillDirectories, DisabledSkills = disabledSkills, EnableOnDemandInstructionDiscovery = enableOnDemandInstructionDiscovery, InstalledPlugins = installedPlugins, CustomAgentsLocalOnly = customAgentsLocalOnly, SkipCustomInstructions = skipCustomInstructions, DisabledInstructionSources = disabledInstructionSources, CoauthorEnabled = coauthorEnabled, TrajectoryFile = trajectoryFile, EnableStreaming = enableStreaming, CopilotUrl = copilotUrl, AskUserDisabled = askUserDisabled, ContinueOnAutoMode = continueOnAutoMode, RunningInInteractiveMode = runningInInteractiveMode, EnableReasoningSummaries = enableReasoningSummaries, AgentContext = agentContext, EventsLogDirectory = eventsLogDirectory, AdditionalContentExclusionPolicies = additionalContentExclusionPolicies?.Select(static v => CopilotClient.ToJsonElementForWire(v)!.Value).ToList(), ManageScheduleEnabled = manageScheduleEnabled, SkipEmbeddingRetrieval = skipEmbeddingRetrieval, OrganizationCustomInstructions = organizationCustomInstructions, EnableFileHooks = enableFileHooks, EnableHostGitOperations = enableHostGitOperations, EnableSessionStore = enableSessionStore, EnableSkills = enableSkills }; return await CopilotClient.InvokeRpcAsync(_session.Rpc, "session.options.update", [request], cancellationToken); } } diff --git a/dotnet/src/Generated/SessionEvents.cs b/dotnet/src/Generated/SessionEvents.cs index 3faa4f7e2..253e36fd7 100644 --- a/dotnet/src/Generated/SessionEvents.cs +++ b/dotnet/src/Generated/SessionEvents.cs @@ -1297,6 +1297,11 @@ public sealed partial class SessionStartData [JsonPropertyName("context")] public WorkingDirectoryContext? Context { get; set; } + /// Context tier selected at session creation time for models with tiered context pricing; null when no tier is selected (e.g., non-tiered model). + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("contextTier")] + public SessionStartDataContextTier? ContextTier { get; set; } + /// Version string of the Copilot application. [JsonPropertyName("copilotVersion")] public required string CopilotVersion { get; set; } @@ -1356,6 +1361,11 @@ public sealed partial class SessionResumeData [JsonPropertyName("context")] public WorkingDirectoryContext? Context { get; set; } + /// Context tier currently selected at resume time; null when no tier is active. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("contextTier")] + public SessionResumeDataContextTier? ContextTier { get; set; } + /// When true, tool calls and permission requests left in flight by the previous session lifetime remain pending after resume and the agentic loop awaits their results. User sends are queued behind the pending work until all such requests reach a terminal state. When false (the default), any such tool calls and permission requests are immediately marked as interrupted on resume. [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("continuePendingWork")] @@ -5945,6 +5955,67 @@ public override void Write(Utf8JsonWriter writer, WorkingDirectoryContextHostTyp } } +/// Defines the allowed values. +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct SessionStartDataContextTier : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public SessionStartDataContextTier(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Default context tier with standard context window size. + public static SessionStartDataContextTier Default { get; } = new("default"); + + /// Extended context tier with a larger context window. + public static SessionStartDataContextTier LongContext { get; } = new("long_context"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(SessionStartDataContextTier left, SessionStartDataContextTier right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(SessionStartDataContextTier left, SessionStartDataContextTier right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is SessionStartDataContextTier other && Equals(other); + + /// + public bool Equals(SessionStartDataContextTier other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override SessionStartDataContextTier Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, SessionStartDataContextTier value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(SessionStartDataContextTier)); + } + } +} + /// Reasoning summary mode used for model calls, if applicable (e.g. "none", "concise", "detailed"). [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] @@ -6009,6 +6080,67 @@ public override void Write(Utf8JsonWriter writer, ReasoningSummary value, JsonSe } } +/// Defines the allowed values. +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct SessionResumeDataContextTier : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public SessionResumeDataContextTier(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Default context tier with standard context window size. + public static SessionResumeDataContextTier Default { get; } = new("default"); + + /// Extended context tier with a larger context window. + public static SessionResumeDataContextTier LongContext { get; } = new("long_context"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(SessionResumeDataContextTier left, SessionResumeDataContextTier right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(SessionResumeDataContextTier left, SessionResumeDataContextTier right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is SessionResumeDataContextTier other && Equals(other); + + /// + public bool Equals(SessionResumeDataContextTier other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override SessionResumeDataContextTier Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, SessionResumeDataContextTier value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(SessionResumeDataContextTier)); + } + } +} + /// The type of operation performed on the autopilot objective state file. [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] diff --git a/go/rpc/zrpc.go b/go/rpc/zrpc.go index 530e4ef71..3f6e7577b 100644 --- a/go/rpc/zrpc.go +++ b/go/rpc/zrpc.go @@ -5098,6 +5098,12 @@ type SessionUpdateOptionsParams struct { DisabledInstructionSources []string `json:"disabledInstructionSources,omitempty"` // Skill IDs that should be excluded from this session. DisabledSkills []string `json:"disabledSkills,omitempty"` + // Whether to enable loading of `.github/hooks/` filesystem hooks. Separate from the SDK + // callback hook mechanism. + EnableFileHooks *bool `json:"enableFileHooks,omitempty"` + // Whether to enable host git operations (context resolution, child repo scanning, git info + // in system prompt). + EnableHostGitOperations *bool `json:"enableHostGitOperations,omitempty"` // Whether to discover custom instructions on demand after successful file views (AGENTS.md // / CLAUDE.md / .github/copilot-instructions.md surfacing). Combined with // `skipCustomInstructions` and the runtime-side `ON_DEMAND_INSTRUCTIONS` feature flag. @@ -5106,6 +5112,11 @@ type SessionUpdateOptionsParams struct { EnableReasoningSummaries *bool `json:"enableReasoningSummaries,omitempty"` // Whether shell-script safety heuristics are enabled. EnableScriptSafety *bool `json:"enableScriptSafety,omitempty"` + // Whether to enable cross-session store writes and reads. + EnableSessionStore *bool `json:"enableSessionStore,omitempty"` + // Whether to enable skill directory scanning and loading. Falls back to + // enableConfigDiscovery when unset. + EnableSkills *bool `json:"enableSkills,omitempty"` // Whether to stream model responses. EnableStreaming *bool `json:"enableStreaming,omitempty"` // How env values are passed to MCP servers (`direct` inlines literal values; `indirect` @@ -5135,6 +5146,8 @@ type SessionUpdateOptionsParams struct { ManageScheduleEnabled *bool `json:"manageScheduleEnabled,omitempty"` // The model ID to use for assistant turns. Model *string `json:"model,omitempty"` + // Organization-level custom instructions to inject into the system prompt. + OrganizationCustomInstructions *string `json:"organizationCustomInstructions,omitempty"` // Custom model-provider configuration (BYOK). Opaque shape; see `ProviderConfig` in the // runtime. // Experimental: Provider is part of an experimental API and may change or be removed. @@ -5154,6 +5167,8 @@ type SessionUpdateOptionsParams struct { SkillDirectories []string `json:"skillDirectories,omitempty"` // Whether to skip loading custom instruction sources. SkipCustomInstructions *bool `json:"skipCustomInstructions,omitempty"` + // Whether to skip embedding retrieval pipeline initialization and execution. + SkipEmbeddingRetrieval *bool `json:"skipEmbeddingRetrieval,omitempty"` // Controls how availableTools (allowlist) and excludedTools (denylist) combine when both // are set. ToolFilterPrecedence *OptionsUpdateToolFilterPrecedence `json:"toolFilterPrecedence,omitempty"` @@ -10458,6 +10473,12 @@ func (a *OptionsApi) Update(ctx context.Context, params *SessionUpdateOptionsPar if params.DisabledSkills != nil { req["disabledSkills"] = params.DisabledSkills } + if params.EnableFileHooks != nil { + req["enableFileHooks"] = *params.EnableFileHooks + } + if params.EnableHostGitOperations != nil { + req["enableHostGitOperations"] = *params.EnableHostGitOperations + } if params.EnableOnDemandInstructionDiscovery != nil { req["enableOnDemandInstructionDiscovery"] = *params.EnableOnDemandInstructionDiscovery } @@ -10467,6 +10488,12 @@ func (a *OptionsApi) Update(ctx context.Context, params *SessionUpdateOptionsPar if params.EnableScriptSafety != nil { req["enableScriptSafety"] = *params.EnableScriptSafety } + if params.EnableSessionStore != nil { + req["enableSessionStore"] = *params.EnableSessionStore + } + if params.EnableSkills != nil { + req["enableSkills"] = *params.EnableSkills + } if params.EnableStreaming != nil { req["enableStreaming"] = *params.EnableStreaming } @@ -10503,6 +10530,9 @@ func (a *OptionsApi) Update(ctx context.Context, params *SessionUpdateOptionsPar if params.Model != nil { req["model"] = *params.Model } + if params.OrganizationCustomInstructions != nil { + req["organizationCustomInstructions"] = *params.OrganizationCustomInstructions + } if params.Provider != nil { req["provider"] = params.Provider } @@ -10527,6 +10557,9 @@ func (a *OptionsApi) Update(ctx context.Context, params *SessionUpdateOptionsPar if params.SkipCustomInstructions != nil { req["skipCustomInstructions"] = *params.SkipCustomInstructions } + if params.SkipEmbeddingRetrieval != nil { + req["skipEmbeddingRetrieval"] = *params.SkipEmbeddingRetrieval + } if params.ToolFilterPrecedence != nil { req["toolFilterPrecedence"] = *params.ToolFilterPrecedence } diff --git a/go/rpc/zsession_events.go b/go/rpc/zsession_events.go index a3c0de2cc..d991c2429 100644 --- a/go/rpc/zsession_events.go +++ b/go/rpc/zsession_events.go @@ -1087,6 +1087,8 @@ type SessionStartData struct { AlreadyInUse *bool `json:"alreadyInUse,omitempty"` // Working directory and git context at session start Context *WorkingDirectoryContext `json:"context,omitempty"` + // Context tier selected at session creation time for models with tiered context pricing; null when no tier is selected (e.g., non-tiered model) + ContextTier *SessionStartDataContextTier `json:"contextTier,omitempty"` // Version string of the Copilot application CopilotVersion string `json:"copilotVersion"` // When set, identifies a parent session whose context this session continues — e.g., a detached headless rem-agent run launched on the parent's interactive shutdown. Telemetry from this session is reported under the parent's session_id. @@ -1118,6 +1120,8 @@ type SessionResumeData struct { AlreadyInUse *bool `json:"alreadyInUse,omitempty"` // Updated working directory and git context at resume time Context *WorkingDirectoryContext `json:"context,omitempty"` + // Context tier currently selected at resume time; null when no tier is active + ContextTier *SessionResumeDataContextTier `json:"contextTier,omitempty"` // When true, tool calls and permission requests left in flight by the previous session lifetime remain pending after resume and the agentic loop awaits their results. User sends are queued behind the pending work until all such requests reach a terminal state. When false (the default), any such tool calls and permission requests are immediately marked as interrupted on resume. ContinuePendingWork *bool `json:"continuePendingWork,omitempty"` // Total number of persisted events in the session at the time of resume @@ -3274,6 +3278,24 @@ const ( SessionModelChangeDataContextTierLongContext SessionModelChangeDataContextTier = "long_context" ) +type SessionResumeDataContextTier string + +const ( + // Default context tier with standard context window size. + SessionResumeDataContextTierDefault SessionResumeDataContextTier = "default" + // Extended context tier with a larger context window. + SessionResumeDataContextTierLongContext SessionResumeDataContextTier = "long_context" +) + +type SessionStartDataContextTier string + +const ( + // Default context tier with standard context window size. + SessionStartDataContextTierDefault SessionStartDataContextTier = "default" + // Extended context tier with a larger context window. + SessionStartDataContextTierLongContext SessionStartDataContextTier = "long_context" +) + // What triggered the skill invocation: `user-invoked` (explicit user action, such as via a slash command or UI affordance), `agent-invoked` (agent requested the skill), or `context-load` (loaded as part of another context, such as preloading skills configured on a custom agent or subagent) type SkillInvokedTrigger string diff --git a/go/zsession_events.go b/go/zsession_events.go index 9a62d6265..cb7a10b22 100644 --- a/go/zsession_events.go +++ b/go/zsession_events.go @@ -170,12 +170,14 @@ type ( SessionPlanChangedData = rpc.SessionPlanChangedData SessionRemoteSteerableChangedData = rpc.SessionRemoteSteerableChangedData SessionResumeData = rpc.SessionResumeData + SessionResumeDataContextTier = rpc.SessionResumeDataContextTier SessionScheduleCancelledData = rpc.SessionScheduleCancelledData SessionScheduleCreatedData = rpc.SessionScheduleCreatedData SessionShutdownData = rpc.SessionShutdownData SessionSkillsLoadedData = rpc.SessionSkillsLoadedData SessionSnapshotRewindData = rpc.SessionSnapshotRewindData SessionStartData = rpc.SessionStartData + SessionStartDataContextTier = rpc.SessionStartDataContextTier SessionTaskCompleteData = rpc.SessionTaskCompleteData SessionTitleChangedData = rpc.SessionTitleChangedData SessionToolsUpdatedData = rpc.SessionToolsUpdatedData @@ -472,6 +474,10 @@ const ( SessionModelChangeDataContextTierDefault = rpc.SessionModelChangeDataContextTierDefault SessionModelChangeDataContextTierLongContext = rpc.SessionModelChangeDataContextTierLongContext SessionModePlan = rpc.SessionModePlan + SessionResumeDataContextTierDefault = rpc.SessionResumeDataContextTierDefault + SessionResumeDataContextTierLongContext = rpc.SessionResumeDataContextTierLongContext + SessionStartDataContextTierDefault = rpc.SessionStartDataContextTierDefault + SessionStartDataContextTierLongContext = rpc.SessionStartDataContextTierLongContext ShutdownTypeError = rpc.ShutdownTypeError ShutdownTypeRoutine = rpc.ShutdownTypeRoutine SkillInvokedTriggerAgentInvoked = rpc.SkillInvokedTriggerAgentInvoked diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json index 9ddda4949..f15dd7b57 100644 --- a/nodejs/package-lock.json +++ b/nodejs/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.8", "license": "MIT", "dependencies": { - "@github/copilot": "^1.0.55", + "@github/copilot": "^1.0.56-0", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, @@ -663,9 +663,9 @@ } }, "node_modules/@github/copilot": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.55.tgz", - "integrity": "sha512-wqzI0L7krORW6jDAQPx7VnInka5BYN5yVgu+dpUK4w8xP5RgnOBa6kRoXpydj/9O1ufs0k6RKRtQjsVLp52TRw==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.56-0.tgz", + "integrity": "sha512-8xNZtZuiY+TOie4Lonus3Ruv/2oCs/Yx/6uj31NVdRibhh3hR2XjMW6MYRA4Cu0L6PkfDssRk1bSzeZdQ7176g==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "detect-libc": "^2.1.2" @@ -674,20 +674,20 @@ "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.55", - "@github/copilot-darwin-x64": "1.0.55", - "@github/copilot-linux-arm64": "1.0.55", - "@github/copilot-linux-x64": "1.0.55", - "@github/copilot-linuxmusl-arm64": "1.0.55", - "@github/copilot-linuxmusl-x64": "1.0.55", - "@github/copilot-win32-arm64": "1.0.55", - "@github/copilot-win32-x64": "1.0.55" + "@github/copilot-darwin-arm64": "1.0.56-0", + "@github/copilot-darwin-x64": "1.0.56-0", + "@github/copilot-linux-arm64": "1.0.56-0", + "@github/copilot-linux-x64": "1.0.56-0", + "@github/copilot-linuxmusl-arm64": "1.0.56-0", + "@github/copilot-linuxmusl-x64": "1.0.56-0", + "@github/copilot-win32-arm64": "1.0.56-0", + "@github/copilot-win32-x64": "1.0.56-0" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.55.tgz", - "integrity": "sha512-v59pOpA7YO8j/lpDU/1E8l1Ag0hd26hIiEzTNbzqKd7tJpvhN0XTDWDCink50wXL656XIXt8lD8i8sGeD6yPfA==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.56-0.tgz", + "integrity": "sha512-nPzTbUHTaYpItsWW+OXdwtjypJwkMd02ec4QJeJ7lMgLoTPAaHuo/eCcQA6py8kvkd7VYHJqbtKsCwyl7y3WPA==", "cpu": [ "arm64" ], @@ -701,9 +701,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.55.tgz", - "integrity": "sha512-XrJ9ent/9ogLk8yNp3TMsNVW0qTRDlkw/b34VnTgbAkJCaI3UVqaqpFn60Laa6J5mOPW0/JeKIkkva+7IJdqpQ==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.56-0.tgz", + "integrity": "sha512-HSi3aDpFYAOe3F7urJLUfbv3gecJHOVzxpVKvi1PF5Tjz5rh9i5rNtKUki1kah8ZgUubwxORK/ErOEr8TQCO/Q==", "cpu": [ "x64" ], @@ -717,9 +717,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.55.tgz", - "integrity": "sha512-5Q46Q72/l/U8KQRcBwYjzFPNXBCPG177FTmjEVOAH0qk7w58fMUDBEpnf9n1IpxYJDWQJ5BFGtLdfYgVVtkevw==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.56-0.tgz", + "integrity": "sha512-RQw8l36E1zp4tWAx0Ha0eYBz9v3fAHYCuxaiejU4zBIwmgg+29CW33xxSkwLalBDzPvYWRW35geVxHzdZK2bhw==", "cpu": [ "arm64" ], @@ -733,9 +733,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.55.tgz", - "integrity": "sha512-KWmMCDmKJivvOyDAAe5K8r7uSlVq8aZCh20VfrVXsc4bckO6KjXY/TOagrdBNqkk5rh8v63ghBbxFdWIOvEJRA==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.56-0.tgz", + "integrity": "sha512-ZUWvsznYbf1z84gKhEhkJtUa05IqnXjYvirOtjsz/lKojFmUR2iyyZZNDeDquxDDnjm68DGypgXlRnaaqsrnuw==", "cpu": [ "x64" ], @@ -749,9 +749,9 @@ } }, "node_modules/@github/copilot-linuxmusl-arm64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.55.tgz", - "integrity": "sha512-Jb5ug9Ic1pzxB2ZT1xoR8b3Ea1xnvCa4h8cBque51+TevXe6QF98vAfSUIwLe4xu+K6JKhiKEA0SD3w29Z74eA==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.56-0.tgz", + "integrity": "sha512-hoQWHaByW1QpJM1j+PviktkASsNpkPgQyEFPItoye1Bhl6uuSvZtJTDrXK9AAZLSGeeGF68MvU2+KGEMyqNJaw==", "cpu": [ "arm64" ], @@ -765,9 +765,9 @@ } }, "node_modules/@github/copilot-linuxmusl-x64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.55.tgz", - "integrity": "sha512-qMGIjHxKmW9q26EpoaNKWpmEVGyL/IM8ThVkh7yolDzv9lECFudPzT5yLX7f+VIiF6qWQlrQyzmamp7/fNQ2Zg==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.56-0.tgz", + "integrity": "sha512-cDdSQIcyGwDa5LJVTrtphkJ5reUFUuH6p+dCZToFj6VvaIt/4FAX+nj6EBOf5nI11ANda0GNPI92M5cbP3P+Sw==", "cpu": [ "x64" ], @@ -781,9 +781,9 @@ } }, "node_modules/@github/copilot-win32-arm64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.55.tgz", - "integrity": "sha512-TO4EJ8it6Qki7wMKYHqGUEDYmB0EAToy+pE5++OpydB6FijyQ31+/XwjvdnEFkuB4ZgPqu/6Y8hxMKucl2+FYg==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.56-0.tgz", + "integrity": "sha512-f/UM7tw0tVsTkfAkwVwisACa7u2kbrRb5Yp2vf4qw8DyQlvyCMvhno4OXzIk00+/mttUnLDErzQ9tB3xTTD96g==", "cpu": [ "arm64" ], @@ -797,9 +797,9 @@ } }, "node_modules/@github/copilot-win32-x64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.55.tgz", - "integrity": "sha512-TBMiSZMz8Dhx79JeSEM+7ONGxR5NmxfiDUdySo6thVbRmjS9D8msyAP8ucTsbLBJcTFeb7vsaeObD/ujYQgDtA==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.56-0.tgz", + "integrity": "sha512-0N319KlZEta3rYdED5zNyWZB3wvrsZfAs1vOGX7+kJUMeksW9eSNKA/jKp+SLt9qokttOo0YCPNDNVtFzLyO2w==", "cpu": [ "x64" ], diff --git a/nodejs/package.json b/nodejs/package.json index 78a906c39..c6aa96c6a 100644 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -56,7 +56,7 @@ "author": "GitHub", "license": "MIT", "dependencies": { - "@github/copilot": "^1.0.55", + "@github/copilot": "^1.0.56-0", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, diff --git a/nodejs/samples/package-lock.json b/nodejs/samples/package-lock.json index 92b616ddb..9cec4428b 100644 --- a/nodejs/samples/package-lock.json +++ b/nodejs/samples/package-lock.json @@ -18,7 +18,7 @@ "version": "0.1.8", "license": "MIT", "dependencies": { - "@github/copilot": "^1.0.55", + "@github/copilot": "^1.0.56-0", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, diff --git a/nodejs/src/generated/rpc.ts b/nodejs/src/generated/rpc.ts index 9d3431201..6384eb8a7 100644 --- a/nodejs/src/generated/rpc.ts +++ b/nodejs/src/generated/rpc.ts @@ -8330,6 +8330,30 @@ export interface SessionUpdateOptionsParams { * Whether to expose the `manage_schedule` tool to the agent. The runtime always owns the per-session schedule registry; this flag only controls tool exposure (typically gated to staff users). */ manageScheduleEnabled?: boolean; + /** + * Whether to skip embedding retrieval pipeline initialization and execution. + */ + skipEmbeddingRetrieval?: boolean; + /** + * Organization-level custom instructions to inject into the system prompt. + */ + organizationCustomInstructions?: string; + /** + * Whether to enable loading of `.github/hooks/` filesystem hooks. Separate from the SDK callback hook mechanism. + */ + enableFileHooks?: boolean; + /** + * Whether to enable host git operations (context resolution, child repo scanning, git info in system prompt). + */ + enableHostGitOperations?: boolean; + /** + * Whether to enable cross-session store writes and reads. + */ + enableSessionStore?: boolean; + /** + * Whether to enable skill directory scanning and loading. Falls back to enableConfigDiscovery when unset. + */ + enableSkills?: boolean; } /** * Indicates whether the session options patch was applied successfully. diff --git a/nodejs/src/generated/session-events.ts b/nodejs/src/generated/session-events.ts index a9685805f..3fc9ed883 100644 --- a/nodejs/src/generated/session-events.ts +++ b/nodejs/src/generated/session-events.ts @@ -577,6 +577,14 @@ export interface StartData { */ alreadyInUse?: boolean; context?: WorkingDirectoryContext; + /** + * Context tier selected at session creation time for models with tiered context pricing; null when no tier is selected (e.g., non-tiered model) + */ + contextTier?: /** Default context tier with standard context window size. */ + | "default" + /** Extended context tier with a larger context window. */ + | "long_context" + | null; /** * Version string of the Copilot application */ @@ -688,6 +696,14 @@ export interface ResumeData { */ alreadyInUse?: boolean; context?: WorkingDirectoryContext; + /** + * Context tier currently selected at resume time; null when no tier is active + */ + contextTier?: /** Default context tier with standard context window size. */ + | "default" + /** Extended context tier with a larger context window. */ + | "long_context" + | null; /** * When true, tool calls and permission requests left in flight by the previous session lifetime remain pending after resume and the agentic loop awaits their results. User sends are queued behind the pending work until all such requests reach a terminal state. When false (the default), any such tool calls and permission requests are immediately marked as interrupted on resume. */ diff --git a/python/copilot/generated/rpc.py b/python/copilot/generated/rpc.py index ddf62ae18..046d77bcc 100644 --- a/python/copilot/generated/rpc.py +++ b/python/copilot/generated/rpc.py @@ -14649,6 +14649,14 @@ class SessionUpdateOptionsParams: disabled_skills: list[str] | None = None """Skill IDs that should be excluded from this session.""" + enable_file_hooks: bool | None = None + """Whether to enable loading of `.github/hooks/` filesystem hooks. Separate from the SDK + callback hook mechanism. + """ + enable_host_git_operations: bool | None = None + """Whether to enable host git operations (context resolution, child repo scanning, git info + in system prompt). + """ enable_on_demand_instruction_discovery: bool | None = None """Whether to discover custom instructions on demand after successful file views (AGENTS.md / CLAUDE.md / .github/copilot-instructions.md surfacing). Combined with @@ -14660,6 +14668,13 @@ class SessionUpdateOptionsParams: enable_script_safety: bool | None = None """Whether shell-script safety heuristics are enabled.""" + enable_session_store: bool | None = None + """Whether to enable cross-session store writes and reads.""" + + enable_skills: bool | None = None + """Whether to enable skill directory scanning and loading. Falls back to + enableConfigDiscovery when unset. + """ enable_streaming: bool | None = None """Whether to stream model responses.""" @@ -14701,6 +14716,9 @@ class SessionUpdateOptionsParams: model: str | None = None """The model ID to use for assistant turns.""" + organization_custom_instructions: str | None = None + """Organization-level custom instructions to inject into the system prompt.""" + provider: Any = None """Custom model-provider configuration (BYOK). Opaque shape; see `ProviderConfig` in the runtime. @@ -14726,6 +14744,9 @@ class SessionUpdateOptionsParams: skip_custom_instructions: bool | None = None """Whether to skip loading custom instruction sources.""" + skip_embedding_retrieval: bool | None = None + """Whether to skip embedding retrieval pipeline initialization and execution.""" + tool_filter_precedence: OptionsUpdateToolFilterPrecedence | None = None """Controls how availableTools (allowlist) and excludedTools (denylist) combine when both are set. @@ -14750,9 +14771,13 @@ def from_dict(obj: Any) -> 'SessionUpdateOptionsParams': custom_agents_local_only = from_union([from_bool, from_none], obj.get("customAgentsLocalOnly")) disabled_instruction_sources = from_union([lambda x: from_list(from_str, x), from_none], obj.get("disabledInstructionSources")) disabled_skills = from_union([lambda x: from_list(from_str, x), from_none], obj.get("disabledSkills")) + enable_file_hooks = from_union([from_bool, from_none], obj.get("enableFileHooks")) + enable_host_git_operations = from_union([from_bool, from_none], obj.get("enableHostGitOperations")) enable_on_demand_instruction_discovery = from_union([from_bool, from_none], obj.get("enableOnDemandInstructionDiscovery")) enable_reasoning_summaries = from_union([from_bool, from_none], obj.get("enableReasoningSummaries")) enable_script_safety = from_union([from_bool, from_none], obj.get("enableScriptSafety")) + enable_session_store = from_union([from_bool, from_none], obj.get("enableSessionStore")) + enable_skills = from_union([from_bool, from_none], obj.get("enableSkills")) enable_streaming = from_union([from_bool, from_none], obj.get("enableStreaming")) env_value_mode = from_union([MCPSetEnvValueModeDetails, from_none], obj.get("envValueMode")) events_log_directory = from_union([from_str, from_none], obj.get("eventsLogDirectory")) @@ -14765,6 +14790,7 @@ def from_dict(obj: Any) -> 'SessionUpdateOptionsParams': lsp_client_name = from_union([from_str, from_none], obj.get("lspClientName")) manage_schedule_enabled = from_union([from_bool, from_none], obj.get("manageScheduleEnabled")) model = from_union([from_str, from_none], obj.get("model")) + organization_custom_instructions = from_union([from_str, from_none], obj.get("organizationCustomInstructions")) provider = obj.get("provider") reasoning_effort = from_union([from_str, from_none], obj.get("reasoningEffort")) running_in_interactive_mode = from_union([from_bool, from_none], obj.get("runningInInteractiveMode")) @@ -14773,10 +14799,11 @@ def from_dict(obj: Any) -> 'SessionUpdateOptionsParams': shell_process_flags = from_union([lambda x: from_list(from_str, x), from_none], obj.get("shellProcessFlags")) skill_directories = from_union([lambda x: from_list(from_str, x), from_none], obj.get("skillDirectories")) skip_custom_instructions = from_union([from_bool, from_none], obj.get("skipCustomInstructions")) + skip_embedding_retrieval = from_union([from_bool, from_none], obj.get("skipEmbeddingRetrieval")) tool_filter_precedence = from_union([OptionsUpdateToolFilterPrecedence, from_none], obj.get("toolFilterPrecedence")) trajectory_file = from_union([from_str, from_none], obj.get("trajectoryFile")) working_directory = from_union([from_str, from_none], obj.get("workingDirectory")) - return SessionUpdateOptionsParams(additional_content_exclusion_policies, agent_context, ask_user_disabled, available_tools, client_name, coauthor_enabled, continue_on_auto_mode, copilot_url, custom_agents_local_only, disabled_instruction_sources, disabled_skills, enable_on_demand_instruction_discovery, enable_reasoning_summaries, enable_script_safety, enable_streaming, env_value_mode, events_log_directory, excluded_tools, feature_flags, installed_plugins, integration_id, is_experimental_mode, log_interactive_shells, lsp_client_name, manage_schedule_enabled, model, provider, reasoning_effort, running_in_interactive_mode, sandbox_config, shell_init_profile, shell_process_flags, skill_directories, skip_custom_instructions, tool_filter_precedence, trajectory_file, working_directory) + return SessionUpdateOptionsParams(additional_content_exclusion_policies, agent_context, ask_user_disabled, available_tools, client_name, coauthor_enabled, continue_on_auto_mode, copilot_url, custom_agents_local_only, disabled_instruction_sources, disabled_skills, enable_file_hooks, enable_host_git_operations, enable_on_demand_instruction_discovery, enable_reasoning_summaries, enable_script_safety, enable_session_store, enable_skills, enable_streaming, env_value_mode, events_log_directory, excluded_tools, feature_flags, installed_plugins, integration_id, is_experimental_mode, log_interactive_shells, lsp_client_name, manage_schedule_enabled, model, organization_custom_instructions, provider, reasoning_effort, running_in_interactive_mode, sandbox_config, shell_init_profile, shell_process_flags, skill_directories, skip_custom_instructions, skip_embedding_retrieval, tool_filter_precedence, trajectory_file, working_directory) def to_dict(self) -> dict: result: dict = {} @@ -14802,12 +14829,20 @@ def to_dict(self) -> dict: result["disabledInstructionSources"] = from_union([lambda x: from_list(from_str, x), from_none], self.disabled_instruction_sources) if self.disabled_skills is not None: result["disabledSkills"] = from_union([lambda x: from_list(from_str, x), from_none], self.disabled_skills) + if self.enable_file_hooks is not None: + result["enableFileHooks"] = from_union([from_bool, from_none], self.enable_file_hooks) + if self.enable_host_git_operations is not None: + result["enableHostGitOperations"] = from_union([from_bool, from_none], self.enable_host_git_operations) if self.enable_on_demand_instruction_discovery is not None: result["enableOnDemandInstructionDiscovery"] = from_union([from_bool, from_none], self.enable_on_demand_instruction_discovery) if self.enable_reasoning_summaries is not None: result["enableReasoningSummaries"] = from_union([from_bool, from_none], self.enable_reasoning_summaries) if self.enable_script_safety is not None: result["enableScriptSafety"] = from_union([from_bool, from_none], self.enable_script_safety) + if self.enable_session_store is not None: + result["enableSessionStore"] = from_union([from_bool, from_none], self.enable_session_store) + if self.enable_skills is not None: + result["enableSkills"] = from_union([from_bool, from_none], self.enable_skills) if self.enable_streaming is not None: result["enableStreaming"] = from_union([from_bool, from_none], self.enable_streaming) if self.env_value_mode is not None: @@ -14832,6 +14867,8 @@ def to_dict(self) -> dict: result["manageScheduleEnabled"] = from_union([from_bool, from_none], self.manage_schedule_enabled) if self.model is not None: result["model"] = from_union([from_str, from_none], self.model) + if self.organization_custom_instructions is not None: + result["organizationCustomInstructions"] = from_union([from_str, from_none], self.organization_custom_instructions) if self.provider is not None: result["provider"] = self.provider if self.reasoning_effort is not None: @@ -14848,6 +14885,8 @@ def to_dict(self) -> dict: result["skillDirectories"] = from_union([lambda x: from_list(from_str, x), from_none], self.skill_directories) if self.skip_custom_instructions is not None: result["skipCustomInstructions"] = from_union([from_bool, from_none], self.skip_custom_instructions) + if self.skip_embedding_retrieval is not None: + result["skipEmbeddingRetrieval"] = from_union([from_bool, from_none], self.skip_embedding_retrieval) if self.tool_filter_precedence is not None: result["toolFilterPrecedence"] = from_union([lambda x: to_enum(OptionsUpdateToolFilterPrecedence, x), from_none], self.tool_filter_precedence) if self.trajectory_file is not None: diff --git a/python/copilot/generated/session_events.py b/python/copilot/generated/session_events.py index 5d4638a99..1534b718b 100644 --- a/python/copilot/generated/session_events.py +++ b/python/copilot/generated/session_events.py @@ -3979,6 +3979,7 @@ class SessionResumeData: resume_time: datetime already_in_use: bool | None = None context: WorkingDirectoryContext | None = None + context_tier: SessionResumeDataContextTier | None = None continue_pending_work: bool | None = None reasoning_effort: str | None = None reasoning_summary: ReasoningSummary | None = None @@ -3993,6 +3994,7 @@ def from_dict(obj: Any) -> "SessionResumeData": resume_time = from_datetime(obj.get("resumeTime")) already_in_use = from_union([from_none, from_bool], obj.get("alreadyInUse")) context = from_union([from_none, WorkingDirectoryContext.from_dict], obj.get("context")) + context_tier = from_union([from_none, lambda x: parse_enum(SessionResumeDataContextTier, x)], obj.get("contextTier")) continue_pending_work = from_union([from_none, from_bool], obj.get("continuePendingWork")) reasoning_effort = from_union([from_none, from_str], obj.get("reasoningEffort")) reasoning_summary = from_union([from_none, lambda x: parse_enum(ReasoningSummary, x)], obj.get("reasoningSummary")) @@ -4004,6 +4006,7 @@ def from_dict(obj: Any) -> "SessionResumeData": resume_time=resume_time, already_in_use=already_in_use, context=context, + context_tier=context_tier, continue_pending_work=continue_pending_work, reasoning_effort=reasoning_effort, reasoning_summary=reasoning_summary, @@ -4020,6 +4023,8 @@ def to_dict(self) -> dict: result["alreadyInUse"] = from_union([from_none, from_bool], self.already_in_use) if self.context is not None: result["context"] = from_union([from_none, lambda x: to_class(WorkingDirectoryContext, x)], self.context) + if self.context_tier is not None: + result["contextTier"] = from_union([from_none, lambda x: to_enum(SessionResumeDataContextTier, x)], self.context_tier) if self.continue_pending_work is not None: result["continuePendingWork"] = from_union([from_none, from_bool], self.continue_pending_work) if self.reasoning_effort is not None: @@ -4225,6 +4230,7 @@ class SessionStartData: version: int already_in_use: bool | None = None context: WorkingDirectoryContext | None = None + context_tier: SessionStartDataContextTier | None = None detached_from_spawning_parent_session_id: str | None = None reasoning_effort: str | None = None reasoning_summary: ReasoningSummary | None = None @@ -4241,6 +4247,7 @@ def from_dict(obj: Any) -> "SessionStartData": version = from_int(obj.get("version")) already_in_use = from_union([from_none, from_bool], obj.get("alreadyInUse")) context = from_union([from_none, WorkingDirectoryContext.from_dict], obj.get("context")) + context_tier = from_union([from_none, lambda x: parse_enum(SessionStartDataContextTier, x)], obj.get("contextTier")) detached_from_spawning_parent_session_id = from_union([from_none, from_str], obj.get("detachedFromSpawningParentSessionId")) reasoning_effort = from_union([from_none, from_str], obj.get("reasoningEffort")) reasoning_summary = from_union([from_none, lambda x: parse_enum(ReasoningSummary, x)], obj.get("reasoningSummary")) @@ -4254,6 +4261,7 @@ def from_dict(obj: Any) -> "SessionStartData": version=version, already_in_use=already_in_use, context=context, + context_tier=context_tier, detached_from_spawning_parent_session_id=detached_from_spawning_parent_session_id, reasoning_effort=reasoning_effort, reasoning_summary=reasoning_summary, @@ -4272,6 +4280,8 @@ def to_dict(self) -> dict: result["alreadyInUse"] = from_union([from_none, from_bool], self.already_in_use) if self.context is not None: result["context"] = from_union([from_none, lambda x: to_class(WorkingDirectoryContext, x)], self.context) + if self.context_tier is not None: + result["contextTier"] = from_union([from_none, lambda x: to_enum(SessionStartDataContextTier, x)], self.context_tier) if self.detached_from_spawning_parent_session_id is not None: result["detachedFromSpawningParentSessionId"] = from_union([from_none, from_str], self.detached_from_spawning_parent_session_id) if self.reasoning_effort is not None: @@ -6921,6 +6931,20 @@ class SessionModelChangeDataContextTier(Enum): LONG_CONTEXT = "long_context" +class SessionResumeDataContextTier(Enum): + # Default context tier with standard context window size. + DEFAULT = "default" + # Extended context tier with a larger context window. + LONG_CONTEXT = "long_context" + + +class SessionStartDataContextTier(Enum): + # Default context tier with standard context window size. + DEFAULT = "default" + # Extended context tier with a larger context window. + LONG_CONTEXT = "long_context" + + class ShutdownType(Enum): "Whether the session ended normally (\"routine\") or due to a crash/fatal error (\"error\")" # The session ended normally. diff --git a/rust/src/generated/api_types.rs b/rust/src/generated/api_types.rs index aee77847d..736a07bd6 100644 --- a/rust/src/generated/api_types.rs +++ b/rust/src/generated/api_types.rs @@ -7642,6 +7642,12 @@ pub struct SessionUpdateOptionsParams { /// Skill IDs that should be excluded from this session. #[serde(skip_serializing_if = "Option::is_none")] pub disabled_skills: Option>, + /// Whether to enable loading of `.github/hooks/` filesystem hooks. Separate from the SDK callback hook mechanism. + #[serde(skip_serializing_if = "Option::is_none")] + pub enable_file_hooks: Option, + /// Whether to enable host git operations (context resolution, child repo scanning, git info in system prompt). + #[serde(skip_serializing_if = "Option::is_none")] + pub enable_host_git_operations: Option, /// Whether to discover custom instructions on demand after successful file views (AGENTS.md / CLAUDE.md / .github/copilot-instructions.md surfacing). Combined with `skipCustomInstructions` and the runtime-side `ON_DEMAND_INSTRUCTIONS` feature flag. #[serde(skip_serializing_if = "Option::is_none")] pub enable_on_demand_instruction_discovery: Option, @@ -7651,6 +7657,12 @@ pub struct SessionUpdateOptionsParams { /// Whether shell-script safety heuristics are enabled. #[serde(skip_serializing_if = "Option::is_none")] pub enable_script_safety: Option, + /// Whether to enable cross-session store writes and reads. + #[serde(skip_serializing_if = "Option::is_none")] + pub enable_session_store: Option, + /// Whether to enable skill directory scanning and loading. Falls back to enableConfigDiscovery when unset. + #[serde(skip_serializing_if = "Option::is_none")] + pub enable_skills: Option, /// Whether to stream model responses. #[serde(skip_serializing_if = "Option::is_none")] pub enable_streaming: Option, @@ -7687,6 +7699,9 @@ pub struct SessionUpdateOptionsParams { /// The model ID to use for assistant turns. #[serde(skip_serializing_if = "Option::is_none")] pub model: Option, + /// Organization-level custom instructions to inject into the system prompt. + #[serde(skip_serializing_if = "Option::is_none")] + pub organization_custom_instructions: Option, /// Custom model-provider configuration (BYOK). Opaque shape; see `ProviderConfig` in the runtime. /// ///
@@ -7725,6 +7740,9 @@ pub struct SessionUpdateOptionsParams { /// Whether to skip loading custom instruction sources. #[serde(skip_serializing_if = "Option::is_none")] pub skip_custom_instructions: Option, + /// Whether to skip embedding retrieval pipeline initialization and execution. + #[serde(skip_serializing_if = "Option::is_none")] + pub skip_embedding_retrieval: Option, /// Controls how availableTools (allowlist) and excludedTools (denylist) combine when both are set. #[serde(skip_serializing_if = "Option::is_none")] pub tool_filter_precedence: Option, diff --git a/rust/src/generated/session_events.rs b/rust/src/generated/session_events.rs index 3e07483e6..cc88b3d86 100644 --- a/rust/src/generated/session_events.rs +++ b/rust/src/generated/session_events.rs @@ -437,6 +437,9 @@ pub struct SessionStartData { /// Working directory and git context at session start #[serde(skip_serializing_if = "Option::is_none")] pub context: Option, + /// Context tier selected at session creation time for models with tiered context pricing; null when no tier is selected (e.g., non-tiered model) + #[serde(skip_serializing_if = "Option::is_none")] + pub context_tier: Option, /// Version string of the Copilot application pub copilot_version: String, /// When set, identifies a parent session whose context this session continues — e.g., a detached headless rem-agent run launched on the parent's interactive shutdown. Telemetry from this session is reported under the parent's session_id. @@ -474,6 +477,9 @@ pub struct SessionResumeData { /// Updated working directory and git context at resume time #[serde(skip_serializing_if = "Option::is_none")] pub context: Option, + /// Context tier currently selected at resume time; null when no tier is active + #[serde(skip_serializing_if = "Option::is_none")] + pub context_tier: Option, /// When true, tool calls and permission requests left in flight by the previous session lifetime remain pending after resume and the agentic loop awaits their results. User sends are queued behind the pending work until all such requests reach a terminal state. When false (the default), any such tool calls and permission requests are immediately marked as interrupted on resume. #[serde(skip_serializing_if = "Option::is_none")] pub continue_pending_work: Option, @@ -3328,6 +3334,20 @@ pub enum WorkingDirectoryContextHostType { Unknown, } +#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum SessionStartDataContextTier { + /// Default context tier with standard context window size. + #[serde(rename = "default")] + Default, + /// Extended context tier with a larger context window. + #[serde(rename = "long_context")] + LongContext, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + /// Reasoning summary mode used for model calls, if applicable (e.g. "none", "concise", "detailed") #[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] pub enum ReasoningSummary { @@ -3346,6 +3366,20 @@ pub enum ReasoningSummary { Unknown, } +#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum SessionResumeDataContextTier { + /// Default context tier with standard context window size. + #[serde(rename = "default")] + Default, + /// Extended context tier with a larger context window. + #[serde(rename = "long_context")] + LongContext, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + /// The type of operation performed on the autopilot objective state file #[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] pub enum AutopilotObjectiveChangedOperation { diff --git a/test/harness/package-lock.json b/test/harness/package-lock.json index 37f3b1a88..cfc652975 100644 --- a/test/harness/package-lock.json +++ b/test/harness/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "devDependencies": { - "@github/copilot": "^1.0.55", + "@github/copilot": "^1.0.56-0", "@modelcontextprotocol/sdk": "^1.26.0", "@types/node": "^25.3.3", "@types/node-forge": "^1.3.14", @@ -464,9 +464,9 @@ } }, "node_modules/@github/copilot": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.55.tgz", - "integrity": "sha512-wqzI0L7krORW6jDAQPx7VnInka5BYN5yVgu+dpUK4w8xP5RgnOBa6kRoXpydj/9O1ufs0k6RKRtQjsVLp52TRw==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.56-0.tgz", + "integrity": "sha512-8xNZtZuiY+TOie4Lonus3Ruv/2oCs/Yx/6uj31NVdRibhh3hR2XjMW6MYRA4Cu0L6PkfDssRk1bSzeZdQ7176g==", "dev": true, "license": "SEE LICENSE IN LICENSE.md", "dependencies": { @@ -476,20 +476,20 @@ "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.55", - "@github/copilot-darwin-x64": "1.0.55", - "@github/copilot-linux-arm64": "1.0.55", - "@github/copilot-linux-x64": "1.0.55", - "@github/copilot-linuxmusl-arm64": "1.0.55", - "@github/copilot-linuxmusl-x64": "1.0.55", - "@github/copilot-win32-arm64": "1.0.55", - "@github/copilot-win32-x64": "1.0.55" + "@github/copilot-darwin-arm64": "1.0.56-0", + "@github/copilot-darwin-x64": "1.0.56-0", + "@github/copilot-linux-arm64": "1.0.56-0", + "@github/copilot-linux-x64": "1.0.56-0", + "@github/copilot-linuxmusl-arm64": "1.0.56-0", + "@github/copilot-linuxmusl-x64": "1.0.56-0", + "@github/copilot-win32-arm64": "1.0.56-0", + "@github/copilot-win32-x64": "1.0.56-0" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.55.tgz", - "integrity": "sha512-v59pOpA7YO8j/lpDU/1E8l1Ag0hd26hIiEzTNbzqKd7tJpvhN0XTDWDCink50wXL656XIXt8lD8i8sGeD6yPfA==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.56-0.tgz", + "integrity": "sha512-nPzTbUHTaYpItsWW+OXdwtjypJwkMd02ec4QJeJ7lMgLoTPAaHuo/eCcQA6py8kvkd7VYHJqbtKsCwyl7y3WPA==", "cpu": [ "arm64" ], @@ -504,9 +504,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.55.tgz", - "integrity": "sha512-XrJ9ent/9ogLk8yNp3TMsNVW0qTRDlkw/b34VnTgbAkJCaI3UVqaqpFn60Laa6J5mOPW0/JeKIkkva+7IJdqpQ==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.56-0.tgz", + "integrity": "sha512-HSi3aDpFYAOe3F7urJLUfbv3gecJHOVzxpVKvi1PF5Tjz5rh9i5rNtKUki1kah8ZgUubwxORK/ErOEr8TQCO/Q==", "cpu": [ "x64" ], @@ -521,9 +521,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.55.tgz", - "integrity": "sha512-5Q46Q72/l/U8KQRcBwYjzFPNXBCPG177FTmjEVOAH0qk7w58fMUDBEpnf9n1IpxYJDWQJ5BFGtLdfYgVVtkevw==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.56-0.tgz", + "integrity": "sha512-RQw8l36E1zp4tWAx0Ha0eYBz9v3fAHYCuxaiejU4zBIwmgg+29CW33xxSkwLalBDzPvYWRW35geVxHzdZK2bhw==", "cpu": [ "arm64" ], @@ -538,9 +538,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.55.tgz", - "integrity": "sha512-KWmMCDmKJivvOyDAAe5K8r7uSlVq8aZCh20VfrVXsc4bckO6KjXY/TOagrdBNqkk5rh8v63ghBbxFdWIOvEJRA==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.56-0.tgz", + "integrity": "sha512-ZUWvsznYbf1z84gKhEhkJtUa05IqnXjYvirOtjsz/lKojFmUR2iyyZZNDeDquxDDnjm68DGypgXlRnaaqsrnuw==", "cpu": [ "x64" ], @@ -555,9 +555,9 @@ } }, "node_modules/@github/copilot-linuxmusl-arm64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.55.tgz", - "integrity": "sha512-Jb5ug9Ic1pzxB2ZT1xoR8b3Ea1xnvCa4h8cBque51+TevXe6QF98vAfSUIwLe4xu+K6JKhiKEA0SD3w29Z74eA==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.56-0.tgz", + "integrity": "sha512-hoQWHaByW1QpJM1j+PviktkASsNpkPgQyEFPItoye1Bhl6uuSvZtJTDrXK9AAZLSGeeGF68MvU2+KGEMyqNJaw==", "cpu": [ "arm64" ], @@ -572,9 +572,9 @@ } }, "node_modules/@github/copilot-linuxmusl-x64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.55.tgz", - "integrity": "sha512-qMGIjHxKmW9q26EpoaNKWpmEVGyL/IM8ThVkh7yolDzv9lECFudPzT5yLX7f+VIiF6qWQlrQyzmamp7/fNQ2Zg==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.56-0.tgz", + "integrity": "sha512-cDdSQIcyGwDa5LJVTrtphkJ5reUFUuH6p+dCZToFj6VvaIt/4FAX+nj6EBOf5nI11ANda0GNPI92M5cbP3P+Sw==", "cpu": [ "x64" ], @@ -589,9 +589,9 @@ } }, "node_modules/@github/copilot-win32-arm64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.55.tgz", - "integrity": "sha512-TO4EJ8it6Qki7wMKYHqGUEDYmB0EAToy+pE5++OpydB6FijyQ31+/XwjvdnEFkuB4ZgPqu/6Y8hxMKucl2+FYg==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.56-0.tgz", + "integrity": "sha512-f/UM7tw0tVsTkfAkwVwisACa7u2kbrRb5Yp2vf4qw8DyQlvyCMvhno4OXzIk00+/mttUnLDErzQ9tB3xTTD96g==", "cpu": [ "arm64" ], @@ -606,9 +606,9 @@ } }, "node_modules/@github/copilot-win32-x64": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.55.tgz", - "integrity": "sha512-TBMiSZMz8Dhx79JeSEM+7ONGxR5NmxfiDUdySo6thVbRmjS9D8msyAP8ucTsbLBJcTFeb7vsaeObD/ujYQgDtA==", + "version": "1.0.56-0", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.56-0.tgz", + "integrity": "sha512-0N319KlZEta3rYdED5zNyWZB3wvrsZfAs1vOGX7+kJUMeksW9eSNKA/jKp+SLt9qokttOo0YCPNDNVtFzLyO2w==", "cpu": [ "x64" ], diff --git a/test/harness/package.json b/test/harness/package.json index fc2043356..bcea6bbe5 100644 --- a/test/harness/package.json +++ b/test/harness/package.json @@ -11,7 +11,7 @@ "test": "vitest run" }, "devDependencies": { - "@github/copilot": "^1.0.55", + "@github/copilot": "^1.0.56-0", "@modelcontextprotocol/sdk": "^1.26.0", "@types/node": "^25.3.3", "@types/node-forge": "^1.3.14",