diff --git a/dotnet/src/Generated/SessionEvents.cs b/dotnet/src/Generated/SessionEvents.cs index aabc6afce..efb647740 100644 --- a/dotnet/src/Generated/SessionEvents.cs +++ b/dotnet/src/Generated/SessionEvents.cs @@ -74,6 +74,8 @@ namespace GitHub.Copilot.SDK; [JsonDerivedType(typeof(SessionPlanChangedEvent), "session.plan_changed")] [JsonDerivedType(typeof(SessionRemoteSteerableChangedEvent), "session.remote_steerable_changed")] [JsonDerivedType(typeof(SessionResumeEvent), "session.resume")] +[JsonDerivedType(typeof(SessionScheduleCancelledEvent), "session.schedule_cancelled")] +[JsonDerivedType(typeof(SessionScheduleCreatedEvent), "session.schedule_created")] [JsonDerivedType(typeof(SessionShutdownEvent), "session.shutdown")] [JsonDerivedType(typeof(SessionSkillsLoadedEvent), "session.skills_loaded")] [JsonDerivedType(typeof(SessionSnapshotRewindEvent), "session.snapshot_rewind")] @@ -221,6 +223,32 @@ public partial class SessionTitleChangedEvent : SessionEvent public required SessionTitleChangedData Data { get; set; } } +/// Scheduled prompt registered via /every. +/// Represents the session.schedule_created event. +public partial class SessionScheduleCreatedEvent : SessionEvent +{ + /// + [JsonIgnore] + public override string Type => "session.schedule_created"; + + /// The session.schedule_created event payload. + [JsonPropertyName("data")] + public required SessionScheduleCreatedData Data { get; set; } +} + +/// Scheduled prompt cancelled from the schedule manager dialog. +/// Represents the session.schedule_cancelled event. +public partial class SessionScheduleCancelledEvent : SessionEvent +{ + /// + [JsonIgnore] + public override string Type => "session.schedule_cancelled"; + + /// The session.schedule_cancelled event payload. + [JsonPropertyName("data")] + public required SessionScheduleCancelledData Data { get; set; } +} + /// Informational message for timeline display with categorization. /// Represents the session.info event. public partial class SessionInfoEvent : SessionEvent @@ -1314,6 +1342,30 @@ public partial class SessionTitleChangedData public required string Title { get; set; } } +/// Scheduled prompt registered via /every. +public partial class SessionScheduleCreatedData +{ + /// Sequential id assigned to the scheduled prompt within the session. + [JsonPropertyName("id")] + public required long Id { get; set; } + + /// Interval between ticks in milliseconds. + [JsonPropertyName("intervalMs")] + public required long IntervalMs { get; set; } + + /// Prompt text that gets enqueued on every tick. + [JsonPropertyName("prompt")] + public required string Prompt { get; set; } +} + +/// Scheduled prompt cancelled from the schedule manager dialog. +public partial class SessionScheduleCancelledData +{ + /// Id of the scheduled prompt that was cancelled. + [JsonPropertyName("id")] + public required long Id { get; set; } +} + /// Informational message for timeline display with categorization. public partial class SessionInfoData { @@ -3344,6 +3396,11 @@ public partial class AssistantMessageToolRequest [JsonPropertyName("mcpServerName")] public string? McpServerName { get; set; } + /// Original tool name on the MCP server, when the tool is an MCP tool. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("mcpToolName")] + public string? McpToolName { get; set; } + /// Name of the tool being invoked. [JsonPropertyName("name")] public required string Name { get; set; } @@ -5300,6 +5357,10 @@ public enum ExtensionsLoadedExtensionStatus [JsonSerializable(typeof(SessionRemoteSteerableChangedEvent))] [JsonSerializable(typeof(SessionResumeData))] [JsonSerializable(typeof(SessionResumeEvent))] +[JsonSerializable(typeof(SessionScheduleCancelledData))] +[JsonSerializable(typeof(SessionScheduleCancelledEvent))] +[JsonSerializable(typeof(SessionScheduleCreatedData))] +[JsonSerializable(typeof(SessionScheduleCreatedEvent))] [JsonSerializable(typeof(SessionShutdownData))] [JsonSerializable(typeof(SessionShutdownEvent))] [JsonSerializable(typeof(SessionSkillsLoadedData))] diff --git a/go/generated_session_events.go b/go/generated_session_events.go index ce60561e9..6844b975a 100644 --- a/go/generated_session_events.go +++ b/go/generated_session_events.go @@ -111,6 +111,18 @@ func (e *SessionEvent) UnmarshalJSON(data []byte) error { return err } e.Data = &d + case SessionEventTypeSessionScheduleCreated: + var d SessionScheduleCreatedData + if err := json.Unmarshal(raw.Data, &d); err != nil { + return err + } + e.Data = &d + case SessionEventTypeSessionScheduleCancelled: + var d SessionScheduleCancelledData + if err := json.Unmarshal(raw.Data, &d); err != nil { + return err + } + e.Data = &d case SessionEventTypeSessionInfo: var d SessionInfoData if err := json.Unmarshal(raw.Data, &d); err != nil { @@ -580,6 +592,8 @@ const ( SessionEventTypeSessionError SessionEventType = "session.error" SessionEventTypeSessionIdle SessionEventType = "session.idle" SessionEventTypeSessionTitleChanged SessionEventType = "session.title_changed" + SessionEventTypeSessionScheduleCreated SessionEventType = "session.schedule_created" + SessionEventTypeSessionScheduleCancelled SessionEventType = "session.schedule_cancelled" SessionEventTypeSessionInfo SessionEventType = "session.info" SessionEventTypeSessionWarning SessionEventType = "session.warning" SessionEventTypeSessionModelChange SessionEventType = "session.model_change" @@ -1216,6 +1230,26 @@ type SamplingRequestedData struct { func (*SamplingRequestedData) sessionEventData() {} +// Scheduled prompt cancelled from the schedule manager dialog +type SessionScheduleCancelledData struct { + // Id of the scheduled prompt that was cancelled + ID int64 `json:"id"` +} + +func (*SessionScheduleCancelledData) sessionEventData() {} + +// Scheduled prompt registered via /every +type SessionScheduleCreatedData struct { + // Sequential id assigned to the scheduled prompt within the session + ID int64 `json:"id"` + // Interval between ticks in milliseconds + IntervalMs int64 `json:"intervalMs"` + // Prompt text that gets enqueued on every tick + Prompt string `json:"prompt"` +} + +func (*SessionScheduleCreatedData) sessionEventData() {} + // Session capability change notification type CapabilitiesChangedData struct { // UI capability changes @@ -1796,6 +1830,8 @@ type AssistantMessageToolRequest struct { IntentionSummary *string `json:"intentionSummary,omitempty"` // Name of the MCP server hosting this tool, when the tool is an MCP tool McpServerName *string `json:"mcpServerName,omitempty"` + // Original tool name on the MCP server, when the tool is an MCP tool + McpToolName *string `json:"mcpToolName,omitempty"` // Name of the tool being invoked Name string `json:"name"` // Unique identifier for this tool call diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json index 87b471a6c..75a532e0f 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.41-1", + "@github/copilot": "^1.0.42", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, @@ -663,26 +663,26 @@ } }, "node_modules/@github/copilot": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.41-1.tgz", - "integrity": "sha512-95Qxeds7SAi96b4bK91PAdB13M39ZKpZDfWf69yJg6362RTCFNa24QvflLG+3f4Vojh8GD4h8EvxAYwgq4zdMQ==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.42.tgz", + "integrity": "sha512-ODW5+aJi595Tb2WUaAlshBoUkOBuh9MegXXwXzMoar+k9fZzzDy3oNJLFg7ni4UtkUZvj/WL/y3s5O+FlsF2HA==", "license": "SEE LICENSE IN LICENSE.md", "bin": { "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.41-1", - "@github/copilot-darwin-x64": "1.0.41-1", - "@github/copilot-linux-arm64": "1.0.41-1", - "@github/copilot-linux-x64": "1.0.41-1", - "@github/copilot-win32-arm64": "1.0.41-1", - "@github/copilot-win32-x64": "1.0.41-1" + "@github/copilot-darwin-arm64": "1.0.42", + "@github/copilot-darwin-x64": "1.0.42", + "@github/copilot-linux-arm64": "1.0.42", + "@github/copilot-linux-x64": "1.0.42", + "@github/copilot-win32-arm64": "1.0.42", + "@github/copilot-win32-x64": "1.0.42" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.41-1.tgz", - "integrity": "sha512-9ExZaLv3/yi7Be9GnjhxJgmuklQhqT59014BsqsWt1lpTA1khJs8VyC5B+iP8TEOkFKvD/UXJNSP9PCE6n5inQ==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.42.tgz", + "integrity": "sha512-2w89QLRgMR7hWwV1KG3uXqu98WST6afJCfvtYtqvPdf6ZQC7Fj2HhPNCrMxZk/H8mZwTgYJeg30gZjvV1698EA==", "cpu": [ "arm64" ], @@ -696,9 +696,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.41-1.tgz", - "integrity": "sha512-6ZretUFTcCPajzcZyQZixn2unVlN+sbtC6hULBYT6FLHrqSrjK4QN52eCtTYOz/kPbBUO4lj9YjT/v1gkgMDwQ==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.42.tgz", + "integrity": "sha512-G2//tgGSKXx3ZGMqe774UnewasYMh+j0ZeQ3injtuZpSpzN+OAuNkzwXpvFHprdbgekMb0oAPN+Xm3rHuQY8Xw==", "cpu": [ "x64" ], @@ -712,9 +712,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.41-1.tgz", - "integrity": "sha512-iP/VbjvGMQvo0fudLHBpmp31nAmtGvq1tZWC+YEQ43D58n2miOXkiDR61Tn9PSPGTkNbrnTecE0mgBO2oePYPw==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.42.tgz", + "integrity": "sha512-Ai6J4hUKVuE5ztsLspp/I7ByXtL2V6tF+AOn0q+hHp1MOA5JLq5/G8PE+c0VzG69x4hkt1lROQDjvXJGY7sv+g==", "cpu": [ "arm64" ], @@ -728,9 +728,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.41-1.tgz", - "integrity": "sha512-DAVCL7pMxeRRHcVOcbpllDBn87zVgskHNqfWrdFPEcgfslx0bw7GkErO35jx/SLnehcwpdwHquqfkyDpnfRAqg==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.42.tgz", + "integrity": "sha512-yYfuL6Hk3uLQuIgfxpEMCyoowFq2Bew1EaXmvg4lnDjj95tvEmyMCX77aIZ2AKwBOgp1nMV7L1B1QL9/mw6BTA==", "cpu": [ "x64" ], @@ -744,9 +744,9 @@ } }, "node_modules/@github/copilot-win32-arm64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.41-1.tgz", - "integrity": "sha512-m+un4+m1MQlTbiaA6d+/1Aa0SBI85O+De6P/8RdrVCEaoLE0Uy10wZbiHk6GK+YN74B/9WGwW8YANVVaBXsDDw==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.42.tgz", + "integrity": "sha512-WgnV6AxsvbvZdNW/42JFikK/SqR1JMw6juRpGKXZr70ond/cHK6trtrmt3dXYPymBO14ppJMFdm4+chJzKGKMw==", "cpu": [ "arm64" ], @@ -760,9 +760,9 @@ } }, "node_modules/@github/copilot-win32-x64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.41-1.tgz", - "integrity": "sha512-9Yl56T/4Eo7etQ+98XxsYTIzPdkuN5SAD0mZN2SHjdK5h0mBJFXpEmsminSelFgUbTsMHb+srfSmvx5nFe0m0A==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.42.tgz", + "integrity": "sha512-J5jtrcYuODuD4LPPRHjOCMJGO6+vKZ71n8PTiHPCg9lpfThXDDXxrB7nDDkhxl23zSXlUrpWwkMI+a2Ax/AxGg==", "cpu": [ "x64" ], diff --git a/nodejs/package.json b/nodejs/package.json index 4969ba23c..2d21a55e2 100644 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -56,7 +56,7 @@ "author": "GitHub", "license": "MIT", "dependencies": { - "@github/copilot": "^1.0.41-1", + "@github/copilot": "^1.0.42", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, diff --git a/nodejs/samples/package-lock.json b/nodejs/samples/package-lock.json index 0c86383f6..b7f4bdd8b 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.41-1", + "@github/copilot": "^1.0.42", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, diff --git a/nodejs/src/generated/session-events.ts b/nodejs/src/generated/session-events.ts index df3702843..3668a3ca6 100644 --- a/nodejs/src/generated/session-events.ts +++ b/nodejs/src/generated/session-events.ts @@ -10,6 +10,8 @@ export type SessionEvent = | ErrorEvent | IdleEvent | TitleChangedEvent + | ScheduleCreatedEvent + | ScheduleCancelledEvent | InfoEvent | WarningEvent | ModelChangeEvent @@ -585,6 +587,80 @@ export interface TitleChangedData { */ title: string; } +export interface ScheduleCreatedEvent { + /** + * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events. + */ + agentId?: string; + data: ScheduleCreatedData; + /** + * When true, the event is transient and not persisted to the session event log on disk + */ + ephemeral?: boolean; + /** + * Unique event identifier (UUID v4), generated when the event is emitted + */ + id: string; + /** + * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event. + */ + parentId: string | null; + /** + * ISO 8601 timestamp when the event was created + */ + timestamp: string; + type: "session.schedule_created"; +} +/** + * Scheduled prompt registered via /every + */ +export interface ScheduleCreatedData { + /** + * Sequential id assigned to the scheduled prompt within the session + */ + id: number; + /** + * Interval between ticks in milliseconds + */ + intervalMs: number; + /** + * Prompt text that gets enqueued on every tick + */ + prompt: string; +} +export interface ScheduleCancelledEvent { + /** + * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events. + */ + agentId?: string; + data: ScheduleCancelledData; + /** + * When true, the event is transient and not persisted to the session event log on disk + */ + ephemeral?: boolean; + /** + * Unique event identifier (UUID v4), generated when the event is emitted + */ + id: string; + /** + * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event. + */ + parentId: string | null; + /** + * ISO 8601 timestamp when the event was created + */ + timestamp: string; + type: "session.schedule_cancelled"; +} +/** + * Scheduled prompt cancelled from the schedule manager dialog + */ +export interface ScheduleCancelledData { + /** + * Id of the scheduled prompt that was cancelled + */ + id: number; +} export interface InfoEvent { /** * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events. @@ -1952,6 +2028,10 @@ export interface AssistantMessageToolRequest { * Name of the MCP server hosting this tool, when the tool is an MCP tool */ mcpServerName?: string; + /** + * Original tool name on the MCP server, when the tool is an MCP tool + */ + mcpToolName?: string; /** * Name of the tool being invoked */ diff --git a/nodejs/test/e2e/ui_elicitation.e2e.test.ts b/nodejs/test/e2e/ui_elicitation.e2e.test.ts index 8651c5bd2..e30dbdacd 100644 --- a/nodejs/test/e2e/ui_elicitation.e2e.test.ts +++ b/nodejs/test/e2e/ui_elicitation.e2e.test.ts @@ -27,7 +27,7 @@ describe("UI Elicitation Callback", async () => { it( "session created with onElicitationRequest reports elicitation capability", - { timeout: 20_000 }, + { timeout: 60_000 }, async () => { const session = await client.createSession({ onPermissionRequest: approveAll, @@ -40,7 +40,7 @@ describe("UI Elicitation Callback", async () => { it( "session created without onElicitationRequest reports no elicitation capability", - { timeout: 20_000 }, + { timeout: 60_000 }, async () => { const session = await client.createSession({ onPermissionRequest: approveAll, @@ -73,7 +73,7 @@ describe("UI Elicitation Multi-Client Capabilities", async () => { it( "capabilities.changed fires when second client joins with elicitation handler", - { timeout: 20_000 }, + { timeout: 60_000 }, async () => { // Client1 creates session without elicitation const session1 = await client1.createSession({ @@ -112,7 +112,7 @@ describe("UI Elicitation Multi-Client Capabilities", async () => { it( "capabilities.changed fires when elicitation provider disconnects", - { timeout: 20_000 }, + { timeout: 60_000 }, async () => { // Client1 creates session without elicitation const session1 = await client1.createSession({ diff --git a/python/copilot/generated/session_events.py b/python/copilot/generated/session_events.py index 55646eba8..1fe1af32b 100644 --- a/python/copilot/generated/session_events.py +++ b/python/copilot/generated/session_events.py @@ -110,6 +110,8 @@ class SessionEventType(Enum): SESSION_ERROR = "session.error" SESSION_IDLE = "session.idle" SESSION_TITLE_CHANGED = "session.title_changed" + SESSION_SCHEDULE_CREATED = "session.schedule_created" + SESSION_SCHEDULE_CANCELLED = "session.schedule_cancelled" SESSION_INFO = "session.info" SESSION_WARNING = "session.warning" SESSION_MODEL_CHANGE = "session.model_change" @@ -428,6 +430,7 @@ class AssistantMessageToolRequest: arguments: Any = None intention_summary: str | None = None mcp_server_name: str | None = None + mcp_tool_name: str | None = None tool_title: str | None = None type: AssistantMessageToolRequestType | None = None @@ -439,6 +442,7 @@ def from_dict(obj: Any) -> "AssistantMessageToolRequest": arguments = obj.get("arguments") intention_summary = from_union([from_none, from_str], obj.get("intentionSummary")) mcp_server_name = from_union([from_none, from_str], obj.get("mcpServerName")) + mcp_tool_name = from_union([from_none, from_str], obj.get("mcpToolName")) tool_title = from_union([from_none, from_str], obj.get("toolTitle")) type = from_union([from_none, lambda x: parse_enum(AssistantMessageToolRequestType, x)], obj.get("type")) return AssistantMessageToolRequest( @@ -447,6 +451,7 @@ def from_dict(obj: Any) -> "AssistantMessageToolRequest": arguments=arguments, intention_summary=intention_summary, mcp_server_name=mcp_server_name, + mcp_tool_name=mcp_tool_name, tool_title=tool_title, type=type, ) @@ -461,6 +466,8 @@ def to_dict(self) -> dict: result["intentionSummary"] = from_union([from_none, from_str], self.intention_summary) if self.mcp_server_name is not None: result["mcpServerName"] = from_union([from_none, from_str], self.mcp_server_name) + if self.mcp_tool_name is not None: + result["mcpToolName"] = from_union([from_none, from_str], self.mcp_tool_name) if self.tool_title is not None: result["toolTitle"] = from_union([from_none, from_str], self.tool_title) if self.type is not None: @@ -2825,6 +2832,52 @@ def to_dict(self) -> dict: return result +@dataclass +class SessionScheduleCancelledData: + "Scheduled prompt cancelled from the schedule manager dialog" + id: int + + @staticmethod + def from_dict(obj: Any) -> "SessionScheduleCancelledData": + assert isinstance(obj, dict) + id = from_int(obj.get("id")) + return SessionScheduleCancelledData( + id=id, + ) + + def to_dict(self) -> dict: + result: dict = {} + result["id"] = to_int(self.id) + return result + + +@dataclass +class SessionScheduleCreatedData: + "Scheduled prompt registered via /every" + id: int + interval_ms: int + prompt: str + + @staticmethod + def from_dict(obj: Any) -> "SessionScheduleCreatedData": + assert isinstance(obj, dict) + id = from_int(obj.get("id")) + interval_ms = from_int(obj.get("intervalMs")) + prompt = from_str(obj.get("prompt")) + return SessionScheduleCreatedData( + id=id, + interval_ms=interval_ms, + prompt=prompt, + ) + + def to_dict(self) -> dict: + result: dict = {} + result["id"] = to_int(self.id) + result["intervalMs"] = to_int(self.interval_ms) + result["prompt"] = from_str(self.prompt) + return result + + @dataclass class SessionShutdownData: "Session termination metrics including usage statistics, code changes, and shutdown reason" @@ -4764,7 +4817,7 @@ class WorkspaceFileChangedOperation(Enum): UPDATE = "update" -SessionEventData = SessionStartData | SessionResumeData | SessionRemoteSteerableChangedData | SessionErrorData | SessionIdleData | SessionTitleChangedData | SessionInfoData | SessionWarningData | SessionModelChangeData | SessionModeChangedData | SessionPlanChangedData | SessionWorkspaceFileChangedData | SessionHandoffData | SessionTruncationData | SessionSnapshotRewindData | SessionShutdownData | SessionContextChangedData | SessionUsageInfoData | SessionCompactionStartData | SessionCompactionCompleteData | SessionTaskCompleteData | UserMessageData | PendingMessagesModifiedData | AssistantTurnStartData | AssistantIntentData | AssistantReasoningData | AssistantReasoningDeltaData | AssistantStreamingDeltaData | AssistantMessageData | AssistantMessageStartData | AssistantMessageDeltaData | AssistantTurnEndData | AssistantUsageData | ModelCallFailureData | AbortData | ToolUserRequestedData | ToolExecutionStartData | ToolExecutionPartialResultData | ToolExecutionProgressData | ToolExecutionCompleteData | SkillInvokedData | SubagentStartedData | SubagentCompletedData | SubagentFailedData | SubagentSelectedData | SubagentDeselectedData | HookStartData | HookEndData | SystemMessageData | SystemNotificationData | PermissionRequestedData | PermissionCompletedData | UserInputRequestedData | UserInputCompletedData | ElicitationRequestedData | ElicitationCompletedData | SamplingRequestedData | SamplingCompletedData | McpOauthRequiredData | McpOauthCompletedData | ExternalToolRequestedData | ExternalToolCompletedData | CommandQueuedData | CommandExecuteData | CommandCompletedData | AutoModeSwitchRequestedData | AutoModeSwitchCompletedData | CommandsChangedData | CapabilitiesChangedData | ExitPlanModeRequestedData | ExitPlanModeCompletedData | SessionToolsUpdatedData | SessionBackgroundTasksChangedData | SessionSkillsLoadedData | SessionCustomAgentsUpdatedData | SessionMcpServersLoadedData | SessionMcpServerStatusChangedData | SessionExtensionsLoadedData | RawSessionEventData | Data +SessionEventData = SessionStartData | SessionResumeData | SessionRemoteSteerableChangedData | SessionErrorData | SessionIdleData | SessionTitleChangedData | SessionScheduleCreatedData | SessionScheduleCancelledData | SessionInfoData | SessionWarningData | SessionModelChangeData | SessionModeChangedData | SessionPlanChangedData | SessionWorkspaceFileChangedData | SessionHandoffData | SessionTruncationData | SessionSnapshotRewindData | SessionShutdownData | SessionContextChangedData | SessionUsageInfoData | SessionCompactionStartData | SessionCompactionCompleteData | SessionTaskCompleteData | UserMessageData | PendingMessagesModifiedData | AssistantTurnStartData | AssistantIntentData | AssistantReasoningData | AssistantReasoningDeltaData | AssistantStreamingDeltaData | AssistantMessageData | AssistantMessageStartData | AssistantMessageDeltaData | AssistantTurnEndData | AssistantUsageData | ModelCallFailureData | AbortData | ToolUserRequestedData | ToolExecutionStartData | ToolExecutionPartialResultData | ToolExecutionProgressData | ToolExecutionCompleteData | SkillInvokedData | SubagentStartedData | SubagentCompletedData | SubagentFailedData | SubagentSelectedData | SubagentDeselectedData | HookStartData | HookEndData | SystemMessageData | SystemNotificationData | PermissionRequestedData | PermissionCompletedData | UserInputRequestedData | UserInputCompletedData | ElicitationRequestedData | ElicitationCompletedData | SamplingRequestedData | SamplingCompletedData | McpOauthRequiredData | McpOauthCompletedData | ExternalToolRequestedData | ExternalToolCompletedData | CommandQueuedData | CommandExecuteData | CommandCompletedData | AutoModeSwitchRequestedData | AutoModeSwitchCompletedData | CommandsChangedData | CapabilitiesChangedData | ExitPlanModeRequestedData | ExitPlanModeCompletedData | SessionToolsUpdatedData | SessionBackgroundTasksChangedData | SessionSkillsLoadedData | SessionCustomAgentsUpdatedData | SessionMcpServersLoadedData | SessionMcpServerStatusChangedData | SessionExtensionsLoadedData | RawSessionEventData | Data @dataclass @@ -4796,6 +4849,8 @@ def from_dict(obj: Any) -> "SessionEvent": case SessionEventType.SESSION_ERROR: data = SessionErrorData.from_dict(data_obj) case SessionEventType.SESSION_IDLE: data = SessionIdleData.from_dict(data_obj) case SessionEventType.SESSION_TITLE_CHANGED: data = SessionTitleChangedData.from_dict(data_obj) + case SessionEventType.SESSION_SCHEDULE_CREATED: data = SessionScheduleCreatedData.from_dict(data_obj) + case SessionEventType.SESSION_SCHEDULE_CANCELLED: data = SessionScheduleCancelledData.from_dict(data_obj) case SessionEventType.SESSION_INFO: data = SessionInfoData.from_dict(data_obj) case SessionEventType.SESSION_WARNING: data = SessionWarningData.from_dict(data_obj) case SessionEventType.SESSION_MODEL_CHANGE: data = SessionModelChangeData.from_dict(data_obj) diff --git a/rust/src/generated/session_events.rs b/rust/src/generated/session_events.rs index 85be3731e..cf7c33c68 100644 --- a/rust/src/generated/session_events.rs +++ b/rust/src/generated/session_events.rs @@ -21,6 +21,10 @@ pub enum SessionEventType { SessionIdle, #[serde(rename = "session.title_changed")] SessionTitleChanged, + #[serde(rename = "session.schedule_created")] + SessionScheduleCreated, + #[serde(rename = "session.schedule_cancelled")] + SessionScheduleCancelled, #[serde(rename = "session.info")] SessionInfo, #[serde(rename = "session.warning")] @@ -188,6 +192,10 @@ pub enum SessionEventData { SessionIdle(SessionIdleData), #[serde(rename = "session.title_changed")] SessionTitleChanged(SessionTitleChangedData), + #[serde(rename = "session.schedule_created")] + SessionScheduleCreated(SessionScheduleCreatedData), + #[serde(rename = "session.schedule_cancelled")] + SessionScheduleCancelled(SessionScheduleCancelledData), #[serde(rename = "session.info")] SessionInfo(SessionInfoData), #[serde(rename = "session.warning")] @@ -505,6 +513,26 @@ pub struct SessionTitleChangedData { pub title: String, } +/// Scheduled prompt registered via /every +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SessionScheduleCreatedData { + /// Sequential id assigned to the scheduled prompt within the session + pub id: i64, + /// Interval between ticks in milliseconds + pub interval_ms: i64, + /// Prompt text that gets enqueued on every tick + pub prompt: String, +} + +/// Scheduled prompt cancelled from the schedule manager dialog +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SessionScheduleCancelledData { + /// Id of the scheduled prompt that was cancelled + pub id: i64, +} + /// Informational message for timeline display with categorization #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -1039,6 +1067,9 @@ pub struct AssistantMessageToolRequest { /// Name of the MCP server hosting this tool, when the tool is an MCP tool #[serde(skip_serializing_if = "Option::is_none")] pub mcp_server_name: Option, + /// Original tool name on the MCP server, when the tool is an MCP tool + #[serde(skip_serializing_if = "Option::is_none")] + pub mcp_tool_name: Option, /// Name of the tool being invoked pub name: String, /// Unique identifier for this tool call diff --git a/test/harness/package-lock.json b/test/harness/package-lock.json index 7259fbacc..c5bbaabae 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.41-1", + "@github/copilot": "^1.0.42", "@modelcontextprotocol/sdk": "^1.26.0", "@types/node": "^25.3.3", "@types/node-forge": "^1.3.14", @@ -464,27 +464,27 @@ } }, "node_modules/@github/copilot": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.41-1.tgz", - "integrity": "sha512-95Qxeds7SAi96b4bK91PAdB13M39ZKpZDfWf69yJg6362RTCFNa24QvflLG+3f4Vojh8GD4h8EvxAYwgq4zdMQ==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.42.tgz", + "integrity": "sha512-ODW5+aJi595Tb2WUaAlshBoUkOBuh9MegXXwXzMoar+k9fZzzDy3oNJLFg7ni4UtkUZvj/WL/y3s5O+FlsF2HA==", "dev": true, "license": "SEE LICENSE IN LICENSE.md", "bin": { "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.41-1", - "@github/copilot-darwin-x64": "1.0.41-1", - "@github/copilot-linux-arm64": "1.0.41-1", - "@github/copilot-linux-x64": "1.0.41-1", - "@github/copilot-win32-arm64": "1.0.41-1", - "@github/copilot-win32-x64": "1.0.41-1" + "@github/copilot-darwin-arm64": "1.0.42", + "@github/copilot-darwin-x64": "1.0.42", + "@github/copilot-linux-arm64": "1.0.42", + "@github/copilot-linux-x64": "1.0.42", + "@github/copilot-win32-arm64": "1.0.42", + "@github/copilot-win32-x64": "1.0.42" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.41-1.tgz", - "integrity": "sha512-9ExZaLv3/yi7Be9GnjhxJgmuklQhqT59014BsqsWt1lpTA1khJs8VyC5B+iP8TEOkFKvD/UXJNSP9PCE6n5inQ==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.42.tgz", + "integrity": "sha512-2w89QLRgMR7hWwV1KG3uXqu98WST6afJCfvtYtqvPdf6ZQC7Fj2HhPNCrMxZk/H8mZwTgYJeg30gZjvV1698EA==", "cpu": [ "arm64" ], @@ -499,9 +499,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.41-1.tgz", - "integrity": "sha512-6ZretUFTcCPajzcZyQZixn2unVlN+sbtC6hULBYT6FLHrqSrjK4QN52eCtTYOz/kPbBUO4lj9YjT/v1gkgMDwQ==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.42.tgz", + "integrity": "sha512-G2//tgGSKXx3ZGMqe774UnewasYMh+j0ZeQ3injtuZpSpzN+OAuNkzwXpvFHprdbgekMb0oAPN+Xm3rHuQY8Xw==", "cpu": [ "x64" ], @@ -516,9 +516,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.41-1.tgz", - "integrity": "sha512-iP/VbjvGMQvo0fudLHBpmp31nAmtGvq1tZWC+YEQ43D58n2miOXkiDR61Tn9PSPGTkNbrnTecE0mgBO2oePYPw==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.42.tgz", + "integrity": "sha512-Ai6J4hUKVuE5ztsLspp/I7ByXtL2V6tF+AOn0q+hHp1MOA5JLq5/G8PE+c0VzG69x4hkt1lROQDjvXJGY7sv+g==", "cpu": [ "arm64" ], @@ -533,9 +533,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.41-1.tgz", - "integrity": "sha512-DAVCL7pMxeRRHcVOcbpllDBn87zVgskHNqfWrdFPEcgfslx0bw7GkErO35jx/SLnehcwpdwHquqfkyDpnfRAqg==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.42.tgz", + "integrity": "sha512-yYfuL6Hk3uLQuIgfxpEMCyoowFq2Bew1EaXmvg4lnDjj95tvEmyMCX77aIZ2AKwBOgp1nMV7L1B1QL9/mw6BTA==", "cpu": [ "x64" ], @@ -550,9 +550,9 @@ } }, "node_modules/@github/copilot-win32-arm64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.41-1.tgz", - "integrity": "sha512-m+un4+m1MQlTbiaA6d+/1Aa0SBI85O+De6P/8RdrVCEaoLE0Uy10wZbiHk6GK+YN74B/9WGwW8YANVVaBXsDDw==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.42.tgz", + "integrity": "sha512-WgnV6AxsvbvZdNW/42JFikK/SqR1JMw6juRpGKXZr70ond/cHK6trtrmt3dXYPymBO14ppJMFdm4+chJzKGKMw==", "cpu": [ "arm64" ], @@ -567,9 +567,9 @@ } }, "node_modules/@github/copilot-win32-x64": { - "version": "1.0.41-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.41-1.tgz", - "integrity": "sha512-9Yl56T/4Eo7etQ+98XxsYTIzPdkuN5SAD0mZN2SHjdK5h0mBJFXpEmsminSelFgUbTsMHb+srfSmvx5nFe0m0A==", + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.42.tgz", + "integrity": "sha512-J5jtrcYuODuD4LPPRHjOCMJGO6+vKZ71n8PTiHPCg9lpfThXDDXxrB7nDDkhxl23zSXlUrpWwkMI+a2Ax/AxGg==", "cpu": [ "x64" ], diff --git a/test/harness/package.json b/test/harness/package.json index 2b483cb44..874aeca16 100644 --- a/test/harness/package.json +++ b/test/harness/package.json @@ -11,7 +11,7 @@ "test": "vitest run" }, "devDependencies": { - "@github/copilot": "^1.0.41-1", + "@github/copilot": "^1.0.42", "@modelcontextprotocol/sdk": "^1.26.0", "@types/node": "^25.3.3", "@types/node-forge": "^1.3.14",