,
+ /// Whether the message was successfully delivered or steered
+ pub sent: bool,
+}
+
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionSkillsListParams {
@@ -3108,6 +3165,18 @@ pub enum PermissionDecisionApproveForLocationApprovalCustomToolKind {
CustomTool,
}
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub enum PermissionDecisionApproveForLocationApprovalExtensionManagementKind {
+ #[serde(rename = "extension-management")]
+ ExtensionManagement,
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub enum PermissionDecisionApproveForLocationApprovalExtensionPermissionAccessKind {
+ #[serde(rename = "extension-permission-access")]
+ ExtensionPermissionAccess,
+}
+
/// The approval to persist for this location
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
@@ -3119,6 +3188,10 @@ pub enum PermissionDecisionApproveForLocationApproval {
McpSampling(PermissionDecisionApproveForLocationApprovalMcpSampling),
Memory(PermissionDecisionApproveForLocationApprovalMemory),
CustomTool(PermissionDecisionApproveForLocationApprovalCustomTool),
+ ExtensionManagement(PermissionDecisionApproveForLocationApprovalExtensionManagement),
+ ExtensionPermissionAccess(
+ PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess,
+ ),
}
/// Approved and persisted for this project location
@@ -3170,6 +3243,18 @@ pub enum PermissionDecisionApproveForSessionApprovalCustomToolKind {
CustomTool,
}
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub enum PermissionDecisionApproveForSessionApprovalExtensionManagementKind {
+ #[serde(rename = "extension-management")]
+ ExtensionManagement,
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub enum PermissionDecisionApproveForSessionApprovalExtensionPermissionAccessKind {
+ #[serde(rename = "extension-permission-access")]
+ ExtensionPermissionAccess,
+}
+
/// The approval to add as a session-scoped rule
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
@@ -3181,6 +3266,8 @@ pub enum PermissionDecisionApproveForSessionApproval {
McpSampling(PermissionDecisionApproveForSessionApprovalMcpSampling),
Memory(PermissionDecisionApproveForSessionApprovalMemory),
CustomTool(PermissionDecisionApproveForSessionApprovalCustomTool),
+ ExtensionManagement(PermissionDecisionApproveForSessionApprovalExtensionManagement),
+ ExtensionPermissionAccess(PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess),
}
/// Approved and remembered for the rest of the session
@@ -3460,19 +3547,6 @@ pub enum WorkspacesGetWorkspaceResultWorkspaceHostType {
Unknown,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
-pub enum WorkspacesGetWorkspaceResultWorkspaceSessionSyncLevel {
- #[serde(rename = "local")]
- Local,
- #[serde(rename = "user")]
- User,
- #[serde(rename = "repo_and_user")]
- RepoAndUser,
- /// Unknown variant for forward compatibility.
- #[serde(other)]
- Unknown,
-}
-
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SessionWorkspacesGetWorkspaceResultWorkspaceHostType {
#[serde(rename = "github")]
@@ -3483,16 +3557,3 @@ pub enum SessionWorkspacesGetWorkspaceResultWorkspaceHostType {
#[serde(other)]
Unknown,
}
-
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
-pub enum SessionWorkspacesGetWorkspaceResultWorkspaceSessionSyncLevel {
- #[serde(rename = "local")]
- Local,
- #[serde(rename = "user")]
- User,
- #[serde(rename = "repo_and_user")]
- RepoAndUser,
- /// Unknown variant for forward compatibility.
- #[serde(other)]
- Unknown,
-}
diff --git a/rust/src/generated/rpc.rs b/rust/src/generated/rpc.rs
index eed4aea2a..ec958708c 100644
--- a/rust/src/generated/rpc.rs
+++ b/rust/src/generated/rpc.rs
@@ -1476,6 +1476,29 @@ impl<'a> SessionRpcTasks<'a> {
.await?;
Ok(serde_json::from_value(_value)?)
}
+
+ /// Wire method: `session.tasks.sendMessage`.
+ ///
+ ///
+ ///
+ /// **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 send_message(
+ &self,
+ params: TasksSendMessageRequest,
+ ) -> 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_TASKS_SENDMESSAGE, Some(wire_params))
+ .await?;
+ Ok(serde_json::from_value(_value)?)
+ }
}
/// `session.tools.*` RPCs.
diff --git a/rust/src/generated/session_events.rs b/rust/src/generated/session_events.rs
index fdcf7a6b4..d27ac5a62 100644
--- a/rust/src/generated/session_events.rs
+++ b/rust/src/generated/session_events.rs
@@ -410,6 +410,9 @@ pub struct SessionStartData {
pub context: 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.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub detached_from_spawning_parent_session_id: Option,
/// Identifier of the software producing the events (e.g., "copilot-agent")
pub producer: String,
/// Reasoning effort level used for model calls, if applicable (e.g. "low", "medium", "high", "xhigh")
@@ -1786,6 +1789,37 @@ pub struct PermissionRequestHook {
pub tool_name: String,
}
+/// Extension management permission request
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct PermissionRequestExtensionManagement {
+ /// Name of the extension being managed
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub extension_name: Option,
+ /// Permission kind discriminator
+ pub kind: PermissionRequestExtensionManagementKind,
+ /// The extension management operation (scaffold, reload)
+ pub operation: String,
+ /// Tool call ID that triggered this permission request
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub tool_call_id: Option,
+}
+
+/// Extension permission access request
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct PermissionRequestExtensionPermissionAccess {
+ /// Capabilities the extension is requesting
+ pub capabilities: Vec,
+ /// Name of the extension requesting permission access
+ pub extension_name: String,
+ /// Permission kind discriminator
+ pub kind: PermissionRequestExtensionPermissionAccessKind,
+ /// Tool call ID that triggered this permission request
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub tool_call_id: Option,
+}
+
/// Shell command permission prompt
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
@@ -1960,6 +1994,37 @@ pub struct PermissionPromptRequestHook {
pub tool_name: String,
}
+/// Extension management permission prompt
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct PermissionPromptRequestExtensionManagement {
+ /// Name of the extension being managed
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub extension_name: Option,
+ /// Prompt kind discriminator
+ pub kind: PermissionPromptRequestExtensionManagementKind,
+ /// The extension management operation (scaffold, reload)
+ pub operation: String,
+ /// Tool call ID that triggered this permission request
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub tool_call_id: Option,
+}
+
+/// Extension permission access prompt
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct PermissionPromptRequestExtensionPermissionAccess {
+ /// Capabilities the extension is requesting
+ pub capabilities: Vec,
+ /// Name of the extension requesting permission access
+ pub extension_name: String,
+ /// Prompt kind discriminator
+ pub kind: PermissionPromptRequestExtensionPermissionAccessKind,
+ /// Tool call ID that triggered this permission request
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub tool_call_id: Option,
+}
+
/// Permission request notification requiring client approval with request details
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
@@ -2766,6 +2831,20 @@ pub enum PermissionRequestHookKind {
Hook,
}
+/// Permission kind discriminator
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub enum PermissionRequestExtensionManagementKind {
+ #[serde(rename = "extension-management")]
+ ExtensionManagement,
+}
+
+/// Permission kind discriminator
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub enum PermissionRequestExtensionPermissionAccessKind {
+ #[serde(rename = "extension-permission-access")]
+ ExtensionPermissionAccess,
+}
+
/// Details of the permission being requested
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
@@ -2778,6 +2857,8 @@ pub enum PermissionRequest {
Memory(PermissionRequestMemory),
CustomTool(PermissionRequestCustomTool),
Hook(PermissionRequestHook),
+ ExtensionManagement(PermissionRequestExtensionManagement),
+ ExtensionPermissionAccess(PermissionRequestExtensionPermissionAccess),
}
/// Prompt kind discriminator
@@ -2881,6 +2962,20 @@ pub enum PermissionPromptRequestHookKind {
Hook,
}
+/// Prompt kind discriminator
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub enum PermissionPromptRequestExtensionManagementKind {
+ #[serde(rename = "extension-management")]
+ ExtensionManagement,
+}
+
+/// Prompt kind discriminator
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub enum PermissionPromptRequestExtensionPermissionAccessKind {
+ #[serde(rename = "extension-permission-access")]
+ ExtensionPermissionAccess,
+}
+
/// Derived user-facing permission prompt details for UI consumers
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
@@ -2894,6 +2989,8 @@ pub enum PermissionPromptRequest {
CustomTool(PermissionPromptRequestCustomTool),
Path(PermissionPromptRequestPath),
Hook(PermissionPromptRequestHook),
+ ExtensionManagement(PermissionPromptRequestExtensionManagement),
+ ExtensionPermissionAccess(PermissionPromptRequestExtensionPermissionAccess),
}
/// The permission request was approved
diff --git a/test/harness/package-lock.json b/test/harness/package-lock.json
index d5f77fef7..5d29d3c17 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.44-2",
+ "@github/copilot": "^1.0.44",
"@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.44-2",
- "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.44-2.tgz",
- "integrity": "sha512-MUIR4w+oXjbg1jwUS8B86eMd/bV2gVKZ61a/aEUE4gUrFFpGXO0tNk9OkfLSH5cmlhJY6lzMzb+kKQWoeAbbNQ==",
+ "version": "1.0.44",
+ "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.44.tgz",
+ "integrity": "sha512-wr/GmNOUaJK/giJK5abyB1oTpEowgFKLi+NJnlyAymKiK/GKCaRlJqiX23H2RetM8vD2hDYUFUFm9lTCooGy0g==",
"dev": true,
"license": "SEE LICENSE IN LICENSE.md",
"bin": {
"copilot": "npm-loader.js"
},
"optionalDependencies": {
- "@github/copilot-darwin-arm64": "1.0.44-2",
- "@github/copilot-darwin-x64": "1.0.44-2",
- "@github/copilot-linux-arm64": "1.0.44-2",
- "@github/copilot-linux-x64": "1.0.44-2",
- "@github/copilot-win32-arm64": "1.0.44-2",
- "@github/copilot-win32-x64": "1.0.44-2"
+ "@github/copilot-darwin-arm64": "1.0.44",
+ "@github/copilot-darwin-x64": "1.0.44",
+ "@github/copilot-linux-arm64": "1.0.44",
+ "@github/copilot-linux-x64": "1.0.44",
+ "@github/copilot-win32-arm64": "1.0.44",
+ "@github/copilot-win32-x64": "1.0.44"
}
},
"node_modules/@github/copilot-darwin-arm64": {
- "version": "1.0.44-2",
- "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.44-2.tgz",
- "integrity": "sha512-6o/pvew0FZJG+8saG1K/L1pUIvpz4AWkZitiqH36tDfXdXKx/PUQ+zaFg/KPeHNnxtal5OdE/7iyrJwIqm2gPg==",
+ "version": "1.0.44",
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.44.tgz",
+ "integrity": "sha512-9NqA5sT2spmNsehxhs51GhXRZIZga5nq+WcMl4LG2QrUPJRDwvHf1bDKqETJUBbYvBY8jONGuTKMRofkMI68YQ==",
"cpu": [
"arm64"
],
@@ -499,9 +499,9 @@
}
},
"node_modules/@github/copilot-darwin-x64": {
- "version": "1.0.44-2",
- "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.44-2.tgz",
- "integrity": "sha512-OMNoLNFYUynB4wiplSh4gtD5zVlvfWMKc0jKQ0oItJLGO8GRL9X0ZB2ONB+7JpVvPidz0Yy4+jU0zWNXEjMM5g==",
+ "version": "1.0.44",
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.44.tgz",
+ "integrity": "sha512-QPD8KtXx07SIKILGBl4JDhPyL2Qo0FMmaTYVxR6nkyHkHnFPsUZD6VWGR+T/KMLkcUXFM85Xc1ba9Y27s4nRrQ==",
"cpu": [
"x64"
],
@@ -516,9 +516,9 @@
}
},
"node_modules/@github/copilot-linux-arm64": {
- "version": "1.0.44-2",
- "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.44-2.tgz",
- "integrity": "sha512-5WGRADU08hqBTWmQ6JVOYMximzsXGuOdFF4GFRQqfsCR8k4RE8fdPWQJa92BpqMgGWwEVPemq0wB3D4hDM5eWw==",
+ "version": "1.0.44",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.44.tgz",
+ "integrity": "sha512-Z8ScIUP433xS18f68NP9jM9zW320Xzpi2wf7Nig/VyfrwupBy25UTezydQMT0KQHLWTEleHOPcYnASY3HgJXnQ==",
"cpu": [
"arm64"
],
@@ -533,9 +533,9 @@
}
},
"node_modules/@github/copilot-linux-x64": {
- "version": "1.0.44-2",
- "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.44-2.tgz",
- "integrity": "sha512-4ZnA2QxEwgrdCePdS5OjuksEGFpJrXgofuELANCpDSHwR3eTV7PynVyqhG6Et7ktN2KzHk7zf8kvtiWVCOxvFg==",
+ "version": "1.0.44",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.44.tgz",
+ "integrity": "sha512-KUl6lvJt0HNKaXSx0T0bIWJ3rvrGwgZYMlkDfqMbuMnZatEQJbjPwxmL/IDfp/c0DyKd7K+ajl17wHYcN/hJIQ==",
"cpu": [
"x64"
],
@@ -550,9 +550,9 @@
}
},
"node_modules/@github/copilot-win32-arm64": {
- "version": "1.0.44-2",
- "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.44-2.tgz",
- "integrity": "sha512-klgSdBZblz9O8BRnTh9uk9uO/INQwVeTBagXuJO7MrZ7JCfBVJyFUYky2tKIjFxlwefyhrRZuniqYeOI9fQc+A==",
+ "version": "1.0.44",
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.44.tgz",
+ "integrity": "sha512-JVJxZJwAc95ZfapgOXjNFwSqrWlvC3heo128L+CDkdZ6lwpD1dTGMHT/6rMMEeo3xjZmMm8tiynfwsHLDgTtvQ==",
"cpu": [
"arm64"
],
@@ -567,9 +567,9 @@
}
},
"node_modules/@github/copilot-win32-x64": {
- "version": "1.0.44-2",
- "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.44-2.tgz",
- "integrity": "sha512-ziq3abdbMCqtAqdiEWWf6cn0whlWss7rC9VMsO/Vx2gjSEVCeJkmIiRiQO45WikheyXyxEmCTAvOwZLQvs+I9g==",
+ "version": "1.0.44",
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.44.tgz",
+ "integrity": "sha512-Yj3KQ/DqwS50PwRtyQITX2mWIVZeJeX+y0faVSMwUUzG1qxmMcme7wimhKOyc4LSV11DpgVB9MSiBw2xys7iww==",
"cpu": [
"x64"
],
diff --git a/test/harness/package.json b/test/harness/package.json
index f4e117606..94a6f19e6 100644
--- a/test/harness/package.json
+++ b/test/harness/package.json
@@ -11,7 +11,7 @@
"test": "vitest run"
},
"devDependencies": {
- "@github/copilot": "^1.0.44-2",
+ "@github/copilot": "^1.0.44",
"@modelcontextprotocol/sdk": "^1.26.0",
"@types/node": "^25.3.3",
"@types/node-forge": "^1.3.14",