@@ -8979,6 +9182,120 @@ pub struct SessionAuthSetCredentialsResult {
pub success: bool,
}
+/// Identifies the target session.
+///
+///
+///
+/// **Experimental.** This type is part of an experimental wire-protocol surface
+/// and may change or be removed in future SDK or CLI releases.
+///
+///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct SessionCanvasListParams {
+ /// Target session identifier
+ pub session_id: SessionId,
+}
+
+/// Declared canvases available in this session.
+///
+///
+///
+/// **Experimental.** This type is part of an experimental wire-protocol surface
+/// and may change or be removed in future SDK or CLI releases.
+///
+///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct SessionCanvasListResult {
+ /// Declared canvases available in this session
+ pub canvases: Vec
,
+}
+
+/// Identifies the target session.
+///
+///
+///
+/// **Experimental.** This type is part of an experimental wire-protocol surface
+/// and may change or be removed in future SDK or CLI releases.
+///
+///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct SessionCanvasListOpenParams {
+ /// Target session identifier
+ pub session_id: SessionId,
+}
+
+/// Live open-canvas snapshot.
+///
+///
+///
+/// **Experimental.** This type is part of an experimental wire-protocol surface
+/// and may change or be removed in future SDK or CLI releases.
+///
+///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct SessionCanvasListOpenResult {
+ /// Currently open canvas instances
+ pub open_canvases: Vec,
+}
+
+/// Open canvas instance snapshot.
+///
+///
+///
+/// **Experimental.** This type is part of an experimental wire-protocol surface
+/// and may change or be removed in future SDK or CLI releases.
+///
+///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct SessionCanvasOpenResult {
+ /// Runtime-controlled routing state for an open canvas instance.
+ pub availability: CanvasInstanceAvailability,
+ /// Provider-local canvas identifier
+ pub canvas_id: String,
+ /// Owning provider identifier
+ pub extension_id: String,
+ /// Owning extension display name, when available
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub extension_name: Option,
+ /// Input supplied when the instance was opened
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub input: Option,
+ /// Stable caller-supplied canvas instance identifier
+ pub instance_id: String,
+ /// Whether this snapshot came from an idempotent reopen
+ pub reopen: bool,
+ /// Provider-supplied status text
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub status: Option,
+ /// Rendered title
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub title: Option,
+ /// URL for web-rendered canvases
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub url: Option,
+}
+
+/// Canvas action invocation result.
+///
+///
+///
+/// **Experimental.** This type is part of an experimental wire-protocol surface
+/// and may change or be removed in future SDK or CLI releases.
+///
+///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct SessionCanvasInvokeActionResult {
+ /// Provider-supplied action result
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option,
+}
+
/// Identifies the target session.
///
///
@@ -11516,6 +11833,28 @@ pub enum AuthInfoType {
Unknown,
}
+/// Runtime-controlled routing state for an open canvas instance.
+///
+///
+///
+/// **Experimental.** This type is part of an experimental wire-protocol surface
+/// and may change or be removed in future SDK or CLI releases.
+///
+///
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
+pub enum CanvasInstanceAvailability {
+ /// The owning provider is currently connected and routing calls will be dispatched normally.
+ #[serde(rename = "ready")]
+ Ready,
+ /// The owning provider is not currently connected. Routing calls fail with canvas_provider_unavailable until the agent re-issues open_canvas (which rehydrates via a fresh canvas.open) or the provider reconnects.
+ #[serde(rename = "stale")]
+ Stale,
+ /// Unknown variant for forward compatibility.
+ #[default]
+ #[serde(other)]
+ Unknown,
+}
+
/// Optional completion hint for the input (e.g. 'directory' for filesystem path completion)
///
///
diff --git a/rust/src/generated/rpc.rs b/rust/src/generated/rpc.rs
index 20dc48e80..300cab1bd 100644
--- a/rust/src/generated/rpc.rs
+++ b/rust/src/generated/rpc.rs
@@ -1137,6 +1137,13 @@ impl<'a> SessionRpc<'a> {
}
}
+ /// `session.canvas.*` sub-namespace.
+ pub fn canvas(&self) -> SessionRpcCanvas<'a> {
+ SessionRpcCanvas {
+ session: self.session,
+ }
+ }
+
/// `session.commands.*` sub-namespace.
pub fn commands(&self) -> SessionRpcCommands<'a> {
SessionRpcCommands {
@@ -1664,6 +1671,153 @@ impl<'a> SessionRpcAuth<'a> {
}
}
+/// `session.canvas.*` RPCs.
+#[derive(Clone, Copy)]
+pub struct SessionRpcCanvas<'a> {
+ pub(crate) session: &'a Session,
+}
+
+impl<'a> SessionRpcCanvas<'a> {
+ /// Lists canvases declared for the session.
+ ///
+ /// Wire method: `session.canvas.list`.
+ ///
+ /// # Returns
+ ///
+ /// Declared canvases available in this session.
+ ///
+ ///
+ ///
+ /// **Experimental.** This API is part of an experimental wire-protocol surface
+ /// and may change or be removed in future SDK or CLI releases. Pin both the
+ /// SDK and CLI versions if your code depends on it.
+ ///
+ ///
+ pub async fn list(&self) -> Result
{
+ let wire_params = serde_json::json!({ "sessionId": self.session.id() });
+ let _value = self
+ .session
+ .client()
+ .call(rpc_methods::SESSION_CANVAS_LIST, Some(wire_params))
+ .await?;
+ Ok(serde_json::from_value(_value)?)
+ }
+
+ /// Lists currently open canvas instances for the live session.
+ ///
+ /// Wire method: `session.canvas.listOpen`.
+ ///
+ /// # Returns
+ ///
+ /// Live open-canvas snapshot.
+ ///
+ ///
+ ///
+ /// **Experimental.** This API is part of an experimental wire-protocol surface
+ /// and may change or be removed in future SDK or CLI releases. Pin both the
+ /// SDK and CLI versions if your code depends on it.
+ ///
+ ///
+ pub async fn list_open(&self) -> Result {
+ let wire_params = serde_json::json!({ "sessionId": self.session.id() });
+ let _value = self
+ .session
+ .client()
+ .call(rpc_methods::SESSION_CANVAS_LISTOPEN, Some(wire_params))
+ .await?;
+ Ok(serde_json::from_value(_value)?)
+ }
+
+ /// Opens or focuses a canvas instance.
+ ///
+ /// Wire method: `session.canvas.open`.
+ ///
+ /// # Parameters
+ ///
+ /// * `params` - Canvas open parameters.
+ ///
+ /// # Returns
+ ///
+ /// Open canvas instance snapshot.
+ ///
+ ///
+ ///
+ /// **Experimental.** This API is part of an experimental wire-protocol surface
+ /// and may change or be removed in future SDK or CLI releases. Pin both the
+ /// SDK and CLI versions if your code depends on it.
+ ///
+ ///
+ pub async fn open(&self, params: CanvasOpenRequest) -> Result {
+ let mut wire_params = serde_json::to_value(params)?;
+ wire_params["sessionId"] = serde_json::Value::String(self.session.id().to_string());
+ let _value = self
+ .session
+ .client()
+ .call(rpc_methods::SESSION_CANVAS_OPEN, Some(wire_params))
+ .await?;
+ Ok(serde_json::from_value(_value)?)
+ }
+
+ /// Closes an open canvas instance.
+ ///
+ /// Wire method: `session.canvas.close`.
+ ///
+ /// # Parameters
+ ///
+ /// * `params` - Canvas close parameters.
+ ///
+ ///
+ ///
+ /// **Experimental.** This API is part of an experimental wire-protocol surface
+ /// and may change or be removed in future SDK or CLI releases. Pin both the
+ /// SDK and CLI versions if your code depends on it.
+ ///
+ ///
+ pub async fn close(&self, params: CanvasCloseRequest) -> Result<(), Error> {
+ let mut wire_params = serde_json::to_value(params)?;
+ wire_params["sessionId"] = serde_json::Value::String(self.session.id().to_string());
+ let _value = self
+ .session
+ .client()
+ .call(rpc_methods::SESSION_CANVAS_CLOSE, Some(wire_params))
+ .await?;
+ Ok(())
+ }
+
+ /// Invokes an action on an open canvas instance.
+ ///
+ /// Wire method: `session.canvas.invokeAction`.
+ ///
+ /// # Parameters
+ ///
+ /// * `params` - Canvas action invocation parameters.
+ ///
+ /// # Returns
+ ///
+ /// Canvas action invocation result.
+ ///
+ ///
+ ///
+ /// **Experimental.** This API is part of an experimental wire-protocol surface
+ /// and may change or be removed in future SDK or CLI releases. Pin both the
+ /// SDK and CLI versions if your code depends on it.
+ ///
+ ///
+ pub async fn invoke_action(
+ &self,
+ params: CanvasInvokeActionRequest,
+ ) -> Result {
+ let mut wire_params = serde_json::to_value(params)?;
+ wire_params["sessionId"] = serde_json::Value::String(self.session.id().to_string());
+ let _value = self
+ .session
+ .client()
+ .call(rpc_methods::SESSION_CANVAS_INVOKEACTION, Some(wire_params))
+ .await?;
+ Ok(serde_json::from_value(_value)?)
+ }
+}
+
/// `session.commands.*` RPCs.
#[derive(Clone, Copy)]
pub struct SessionRpcCommands<'a> {
diff --git a/rust/src/generated/session_events.rs b/rust/src/generated/session_events.rs
index 5e78c6932..f67c56d5e 100644
--- a/rust/src/generated/session_events.rs
+++ b/rust/src/generated/session_events.rs
@@ -171,6 +171,10 @@ pub enum SessionEventType {
SessionMcpServerStatusChanged,
#[serde(rename = "session.extensions_loaded")]
SessionExtensionsLoaded,
+ #[serde(rename = "session.canvas.opened")]
+ SessionCanvasOpened,
+ #[serde(rename = "session.canvas.registry_changed")]
+ SessionCanvasRegistryChanged,
#[serde(rename = "mcp_app.tool_call_complete")]
McpAppToolCallComplete,
/// Unknown event type for forward compatibility.
@@ -347,6 +351,10 @@ pub enum SessionEventData {
SessionMcpServerStatusChanged(SessionMcpServerStatusChangedData),
#[serde(rename = "session.extensions_loaded")]
SessionExtensionsLoaded(SessionExtensionsLoadedData),
+ #[serde(rename = "session.canvas.opened")]
+ SessionCanvasOpened(SessionCanvasOpenedData),
+ #[serde(rename = "session.canvas.registry_changed")]
+ SessionCanvasRegistryChanged(SessionCanvasRegistryChangedData),
#[serde(rename = "mcp_app.tool_call_complete")]
McpAppToolCallComplete(McpAppToolCallCompleteData),
}
@@ -2925,6 +2933,9 @@ pub struct CommandsChangedData {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CapabilitiesChangedUI {
+ /// Whether canvas rendering is now supported
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub canvases: Option,
/// Whether elicitation is now supported
#[serde(skip_serializing_if = "Option::is_none")]
pub elicitation: Option,
@@ -3121,6 +3132,82 @@ pub struct SessionExtensionsLoadedData {
pub extensions: Vec,
}
+/// Session event "session.canvas.opened".
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct SessionCanvasOpenedData {
+ /// Runtime-controlled routing state for the instance. "ready" when the provider connection is live; "stale" when the provider has gone away and the instance is awaiting rebinding.
+ pub availability: CanvasOpenedAvailability,
+ /// Provider-local canvas identifier
+ pub canvas_id: String,
+ /// Owning provider identifier
+ pub extension_id: String,
+ /// Owning extension display name, when available
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub extension_name: Option,
+ /// Input supplied when the instance was opened
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub input: Option,
+ /// Stable caller-supplied canvas instance identifier
+ pub instance_id: String,
+ /// Whether this notification represents an idempotent reopen
+ pub reopen: bool,
+ /// Provider-supplied status text
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub status: Option,
+ /// Rendered title
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub title: Option,
+ /// URL for web-rendered canvases
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub url: Option,
+}
+
+/// Schema for the `CanvasRegistryChangedCanvaseAction` type.
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct CanvasRegistryChangedCanvaseAction {
+ /// Action description
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub description: Option,
+ /// JSON Schema for action input
+ #[serde(default)]
+ pub input_schema: HashMap,
+ /// Action name
+ pub name: String,
+}
+
+/// Schema for the `CanvasRegistryChangedCanvase` type.
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct CanvasRegistryChangedCanvase {
+ /// Actions the agent or host may invoke
+ #[serde(default)]
+ pub actions: Vec,
+ /// Provider-local canvas identifier
+ pub canvas_id: String,
+ /// Short, single-sentence description shown to the agent in canvas catalogs.
+ pub description: String,
+ /// Human-readable canvas name
+ pub display_name: String,
+ /// Owning provider identifier
+ pub extension_id: String,
+ /// Owning extension display name, when available
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub extension_name: Option,
+ /// JSON Schema for canvas open input
+ #[serde(default)]
+ pub input_schema: HashMap,
+}
+
+/// Session event "session.canvas.registry_changed".
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct SessionCanvasRegistryChangedData {
+ /// Canvas declarations currently available
+ pub canvases: Vec,
+}
+
/// Set when the underlying tools/call threw an error before returning a CallToolResult
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
@@ -4166,3 +4253,18 @@ pub enum ExtensionsLoadedExtensionStatus {
#[serde(other)]
Unknown,
}
+
+/// Runtime-controlled routing state for the instance. "ready" when the provider connection is live; "stale" when the provider has gone away and the instance is awaiting rebinding.
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
+pub enum CanvasOpenedAvailability {
+ /// Provider connection is live; actions can be invoked.
+ #[serde(rename = "ready")]
+ Ready,
+ /// Provider has gone away; the instance is awaiting rebinding.
+ #[serde(rename = "stale")]
+ Stale,
+ /// Unknown variant for forward compatibility.
+ #[default]
+ #[serde(other)]
+ Unknown,
+}
diff --git a/test/harness/package-lock.json b/test/harness/package-lock.json
index 94d93f7bb..7b7eca3fc 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.52",
+ "@github/copilot": "^1.0.53-1",
"@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.52",
- "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.52.tgz",
- "integrity": "sha512-n6NAIVhosend+3UGYXW3Ltigeum2toUsV24RDgxjkdkLV1DVgp6+2OWCXdk3HTXZ0t/eWMvgBezRFbRr8N4Z6g==",
+ "version": "1.0.53-1",
+ "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.53-1.tgz",
+ "integrity": "sha512-uRvsbelTbmTZpORrz3fZiVkHdhfJGHRrmbFq1D4JSxEtg/oNysZxOwXpye/k+XAi3FYllvRvWilBhPqn6YUYYA==",
"dev": true,
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
@@ -476,20 +476,20 @@
"copilot": "npm-loader.js"
},
"optionalDependencies": {
- "@github/copilot-darwin-arm64": "1.0.52",
- "@github/copilot-darwin-x64": "1.0.52",
- "@github/copilot-linux-arm64": "1.0.52",
- "@github/copilot-linux-x64": "1.0.52",
- "@github/copilot-linuxmusl-arm64": "1.0.52",
- "@github/copilot-linuxmusl-x64": "1.0.52",
- "@github/copilot-win32-arm64": "1.0.52",
- "@github/copilot-win32-x64": "1.0.52"
+ "@github/copilot-darwin-arm64": "1.0.53-1",
+ "@github/copilot-darwin-x64": "1.0.53-1",
+ "@github/copilot-linux-arm64": "1.0.53-1",
+ "@github/copilot-linux-x64": "1.0.53-1",
+ "@github/copilot-linuxmusl-arm64": "1.0.53-1",
+ "@github/copilot-linuxmusl-x64": "1.0.53-1",
+ "@github/copilot-win32-arm64": "1.0.53-1",
+ "@github/copilot-win32-x64": "1.0.53-1"
}
},
"node_modules/@github/copilot-darwin-arm64": {
- "version": "1.0.52",
- "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.52.tgz",
- "integrity": "sha512-Jj0skAY5a9IQEaNHd1KdjkVhRSpmsSU4325BQ6XCgpo22pmg1Rk9Xc7cI29T6lCrn+KjksVvtPJq/lSNF2mHPw==",
+ "version": "1.0.53-1",
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.53-1.tgz",
+ "integrity": "sha512-Nxy6SEq13bam8slyqNJIStUbP31g4o9WBR/a6hFHF5eCvlsvm9DejkQRcvDjeoSJAH/yPExCbi5v+Rh/EJMicg==",
"cpu": [
"arm64"
],
@@ -504,9 +504,9 @@
}
},
"node_modules/@github/copilot-darwin-x64": {
- "version": "1.0.52",
- "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.52.tgz",
- "integrity": "sha512-vWzjLOKmwUTzyd3X8iR+I4c88EOH2r83Q6WN+0NgelqrzbhMHgMLJIbwTeKjN7egvribciYg6xeLFNo+0ClCkg==",
+ "version": "1.0.53-1",
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.53-1.tgz",
+ "integrity": "sha512-4XQQre6CZ+Xkmm6aIkrcL+c14qfznNiwBARmSfchiT4HbDcY52iaSnjBTTp/+N+qjdf0WmMDqucBpO6HZOqLzg==",
"cpu": [
"x64"
],
@@ -521,9 +521,9 @@
}
},
"node_modules/@github/copilot-linux-arm64": {
- "version": "1.0.52",
- "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.52.tgz",
- "integrity": "sha512-x6Pew1dMeKxNZMkaTC7VLxmD/X4zQiWQFTzMRYaqD2o5s0rqYYwy9ROP1+n3X6eaYWUp0FMKibdsiqjmZft+vw==",
+ "version": "1.0.53-1",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.53-1.tgz",
+ "integrity": "sha512-sbDFrbbqNSnUTcL3Bin0fJaqmud4NckLzx7RArIfKkgwUfe6Wv0k8g0cK8GKBxB+p0oEUrmD3diJvPlfjq61JA==",
"cpu": [
"arm64"
],
@@ -538,9 +538,9 @@
}
},
"node_modules/@github/copilot-linux-x64": {
- "version": "1.0.52",
- "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.52.tgz",
- "integrity": "sha512-dwZj/MeXNsLTYIp7A53xYTULvl+xspqZqqeiqhsW7KyGe8VT6QQ3bJj7qmOSEwOkmALuA4sPwBlTT3X0Ozbocw==",
+ "version": "1.0.53-1",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.53-1.tgz",
+ "integrity": "sha512-YiKyMZOjDy0hQep2lw4fPs3lfvBimlfprN3tE30FSbsyNgDMi4O5wiu1OC1DVgs7Z2bixnruD6U5Oo7c/YaxUA==",
"cpu": [
"x64"
],
@@ -555,9 +555,9 @@
}
},
"node_modules/@github/copilot-linuxmusl-arm64": {
- "version": "1.0.52",
- "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.52.tgz",
- "integrity": "sha512-QBhLnWhtH8qjsfeDqE5Bn5KGCH3fLEIRHbHfOd3UPyapBKTA+pBA/6FQGjvOkzwMeKKtTBeRBQ9hCoQm+Vrr2A==",
+ "version": "1.0.53-1",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.53-1.tgz",
+ "integrity": "sha512-jbe/wS/eNkzbCshtkOnNrdHtOfg0jQtzMeU+UnZ3U7SOyIpEoJCtlkm5vqUFaVsSrAnA71d1RrmOe/Q6XD1ulw==",
"cpu": [
"arm64"
],
@@ -572,9 +572,9 @@
}
},
"node_modules/@github/copilot-linuxmusl-x64": {
- "version": "1.0.52",
- "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.52.tgz",
- "integrity": "sha512-mdA5VfgX0XfMU3zwnAg0Wf3lQ/vkRZOmm7h69N/1jgRftMghm5WW3xfrBDkANta9J7YLl8YBPwRZAPzw2TYZEg==",
+ "version": "1.0.53-1",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.53-1.tgz",
+ "integrity": "sha512-ZXIqF9m2JeSCp/jSPJuTwLenuBjbgcd1vtrsBsaIw6Lww31lWI1evyx2MZutR4RLIcy+N4vhckYbrevZZaugyA==",
"cpu": [
"x64"
],
@@ -589,9 +589,9 @@
}
},
"node_modules/@github/copilot-win32-arm64": {
- "version": "1.0.52",
- "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.52.tgz",
- "integrity": "sha512-Anl7/k4uudsE2Kc4nYFh4AJegcudt9I4od4OBwjQF6kR/VGXsgKtW6b15o8R4F3HWqXIcMwwyGq7Oov+NYVLqQ==",
+ "version": "1.0.53-1",
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.53-1.tgz",
+ "integrity": "sha512-SZSx09nXT6ibIqITapnHRs9GHRrZWMhjV9TSZmpCMMJu9R5sP36yFkHYwPXfU/yi62PwVAk4AIjoSHMNDhP0Lg==",
"cpu": [
"arm64"
],
@@ -606,9 +606,9 @@
}
},
"node_modules/@github/copilot-win32-x64": {
- "version": "1.0.52",
- "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.52.tgz",
- "integrity": "sha512-rOTQk57EdhnoVKn5JlQBhurAJIRJ7GLm/jMGxrTktY2Le+bcdAyBzWZtIHiy5E9CXbpISBtUe63Coa5Tyumf6w==",
+ "version": "1.0.53-1",
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.53-1.tgz",
+ "integrity": "sha512-l3rZk9MMxrX/qA38dKryQw9tF9j2QUMhc/FSiy6IRcEGuJ1lX0x5ig/LYV1jRK6jA9pUTILZvrynDpl03KKi3Q==",
"cpu": [
"x64"
],
diff --git a/test/harness/package.json b/test/harness/package.json
index e8bc6376d..6716ec3ac 100644
--- a/test/harness/package.json
+++ b/test/harness/package.json
@@ -11,7 +11,7 @@
"test": "vitest run"
},
"devDependencies": {
- "@github/copilot": "^1.0.52",
+ "@github/copilot": "^1.0.53-1",
"@modelcontextprotocol/sdk": "^1.26.0",
"@types/node": "^25.3.3",
"@types/node-forge": "^1.3.14",