@@ -6755,6 +6971,65 @@ pub enum FusionPattern {
Unknown,
}
+/// HydraFusion phase kind.
+///
+///
+///
+/// **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 FusionPhaseKind {
+ /// Primary solver phase.
+ #[serde(rename = "primary")]
+ Primary,
+ /// Read-only cascade judge phase.
+ #[serde(rename = "judge")]
+ Judge,
+ /// Cascade repair phase.
+ #[serde(rename = "repair")]
+ Repair,
+ /// Initial critique-pattern draft phase.
+ #[serde(rename = "draft")]
+ Draft,
+ /// Read-only critique phase.
+ #[serde(rename = "critic")]
+ Critic,
+ /// Critique-pattern revision phase.
+ #[serde(rename = "revision")]
+ Revision,
+ /// Follow-up phase continuing from the resolved model.
+ #[serde(rename = "follow_up")]
+ FollowUp,
+ /// Unknown variant for forward compatibility.
+ #[default]
+ #[serde(other)]
+ Unknown,
+}
+
+/// Conversation scope in which a HydraFusion phase executes.
+///
+///
+///
+/// **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 FusionConversationScope {
+ /// Canonical root conversation history.
+ #[serde(rename = "root")]
+ Root,
+ /// Isolated read-only review history that does not enter the root conversation.
+ #[serde(rename = "review")]
+ Review,
+ /// Unknown variant for forward compatibility.
+ #[default]
+ #[serde(other)]
+ Unknown,
+}
+
/// The agent mode that was active when this message was sent
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
pub enum UserMessageAgentMode {
@@ -6845,7 +7120,7 @@ pub enum ModelCallFailureTransport {
Unknown,
}
-/// Conversation scope in which a HydraFusion phase executes.
+/// Content-safe activity observed while a HydraFusion phase is running.
///
///
///
@@ -6854,50 +7129,16 @@ pub enum ModelCallFailureTransport {
///
///
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
-pub enum FusionConversationScope {
- /// Canonical root conversation history.
- #[serde(rename = "root")]
- Root,
- /// Isolated read-only review history that does not enter the root conversation.
- #[serde(rename = "review")]
- Review,
- /// Unknown variant for forward compatibility.
- #[default]
- #[serde(other)]
- Unknown,
-}
-
-/// HydraFusion phase kind.
-///
-///
-///
-/// **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 FusionPhaseKind {
- /// Primary solver phase.
- #[serde(rename = "primary")]
- Primary,
- /// Read-only cascade judge phase.
- #[serde(rename = "judge")]
- Judge,
- /// Cascade repair phase.
- #[serde(rename = "repair")]
- Repair,
- /// Initial critique-pattern draft phase.
- #[serde(rename = "draft")]
- Draft,
- /// Read-only critique phase.
- #[serde(rename = "critic")]
- Critic,
- /// Critique-pattern revision phase.
- #[serde(rename = "revision")]
- Revision,
- /// Follow-up phase continuing from the resolved model.
- #[serde(rename = "follow_up")]
- FollowUp,
+pub enum FusionPhaseActivityKind {
+ /// The provider produced additional private output bytes.
+ #[serde(rename = "model_output")]
+ ModelOutput,
+ /// A tool began executing inside the phase.
+ #[serde(rename = "tool_started")]
+ ToolStarted,
+ /// A tool finished executing inside the phase.
+ #[serde(rename = "tool_completed")]
+ ToolCompleted,
/// Unknown variant for forward compatibility.
#[default]
#[serde(other)]
@@ -8302,6 +8543,21 @@ pub enum SkillSource {
Unknown,
}
+/// Whether configured models are advisory preferences or required constraints
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
+pub enum AgentModelPolicy {
+ /// Treat the authored models as advisory preferences that callers may override.
+ #[serde(rename = "preferred")]
+ Preferred,
+ /// Require subagent execution to use one of the authored models.
+ #[serde(rename = "required")]
+ Required,
+ /// Unknown variant for forward compatibility.
+ #[default]
+ #[serde(other)]
+ Unknown,
+}
+
/// Configuration source: user, workspace, plugin, or builtin
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
pub enum McpServerSource {
diff --git a/rust/tests/e2e/rpc_session_state_extras.rs b/rust/tests/e2e/rpc_session_state_extras.rs
index 85c20debc7..e764c53933 100644
--- a/rust/tests/e2e/rpc_session_state_extras.rs
+++ b/rust/tests/e2e/rpc_session_state_extras.rs
@@ -495,6 +495,7 @@ async fn should_update_and_clear_live_subagent_settings() {
),
effort_level: Some("low".to_string()),
model: Some("gpt-5-mini".to_string()),
+ model_policy: None,
},
)])),
disabled_subagents: Some(vec!["legacy-agent".to_string()]),
diff --git a/scripts/codegen/rust.ts b/scripts/codegen/rust.ts
index 0feec5e98a..b3cc5d5753 100644
--- a/scripts/codegen/rust.ts
+++ b/scripts/codegen/rust.ts
@@ -378,9 +378,7 @@ function tryEmitRustUnion(
const lines: string[] = [];
if (schema.description) {
- for (const line of schema.description.split(/\r?\n/)) {
- lines.push(`/// ${line}`);
- }
+ pushRustDoc(lines, schema.description);
}
pushRustExperimentalDocs(lines, isSchemaExperimental(schema) || ctx.experimentalTypeNames.has(enumName));
lines.push("#[derive(Debug, Clone, Serialize, Deserialize)]");
@@ -468,7 +466,8 @@ function pushRustExperimentalDocs(
function pushRustDoc(lines: string[], text: string | undefined, indent = ""): void {
if (!text) return;
- for (const paragraph of text.trim().split(/\r?\n/)) {
+ const sanitized = text.replace(/\[::\]/g, "`[::]`");
+ for (const paragraph of sanitized.trim().split(/\r?\n/)) {
if (paragraph.trim().length === 0) {
lines.push(`${indent}///`);
} else {
@@ -971,9 +970,7 @@ function emitRustStruct(
for (const { propName, prop, isReq, rustField, rustType } of fields) {
if (prop.description) {
- for (const line of prop.description.split(/\r?\n/)) {
- lines.push(` /// ${line}`);
- }
+ pushRustDoc(lines, prop.description, " ");
}
pushRustExperimentalDocs(lines, isSchemaExperimental(prop), " ");
const propIsInternal = isSchemaInternal(prop);
diff --git a/test/harness/package-lock.json b/test/harness/package-lock.json
index 274e70f675..8cf978665f 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.83-1",
+ "@github/copilot": "^1.0.83-2",
"@modelcontextprotocol/sdk": "^1.26.0",
"@types/node": "^25.3.3",
"@types/node-forge": "^1.3.14",
@@ -472,8 +472,8 @@
}
},
"node_modules/@github/copilot": {
- "version": "1.0.83-1",
- "integrity": "sha512-7rhgbgSx7IgfFYXrTx2/2+qowv6MZjC6BN0mhba37RuGQxsca9Zk2ucAeIX3GbQTp91AhvnN0aHCxabX36xADQ==",
+ "version": "1.0.83-2",
+ "integrity": "sha512-ntRvwGdZbZJjOvdV3LVBQ7z69W19DO4MWe/dh6pP8kYeumbzC4udVj7mCtoSwBOs0hwXirhXY+BZwqSJUp5FLQ==",
"dev": true,
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
@@ -483,19 +483,19 @@
"copilot": "npm-loader.js"
},
"optionalDependencies": {
- "@github/copilot-darwin-arm64": "1.0.83-1",
- "@github/copilot-darwin-x64": "1.0.83-1",
- "@github/copilot-linux-arm64": "1.0.83-1",
- "@github/copilot-linux-x64": "1.0.83-1",
- "@github/copilot-linuxmusl-arm64": "1.0.83-1",
- "@github/copilot-linuxmusl-x64": "1.0.83-1",
- "@github/copilot-win32-arm64": "1.0.83-1",
- "@github/copilot-win32-x64": "1.0.83-1"
+ "@github/copilot-darwin-arm64": "1.0.83-2",
+ "@github/copilot-darwin-x64": "1.0.83-2",
+ "@github/copilot-linux-arm64": "1.0.83-2",
+ "@github/copilot-linux-x64": "1.0.83-2",
+ "@github/copilot-linuxmusl-arm64": "1.0.83-2",
+ "@github/copilot-linuxmusl-x64": "1.0.83-2",
+ "@github/copilot-win32-arm64": "1.0.83-2",
+ "@github/copilot-win32-x64": "1.0.83-2"
}
},
"node_modules/@github/copilot-darwin-arm64": {
- "version": "1.0.83-1",
- "integrity": "sha512-gxYJEd4yoIBIQHRmJw6ZegSkR6VuNm7AJVdAdARcU0SS68VZjtZFT29luThAp75Pxp37S5w+3A/jQNtxGyHizw==",
+ "version": "1.0.83-2",
+ "integrity": "sha512-RBjF/zTJe+gp9PsthYtIHF36+y3A3Zv3w/2FAa9nHF6ople1+lYoQ0OC1z6tWQSpBx3n/fSkNt0ebMmfhWlQyw==",
"cpu": [
"arm64"
],
@@ -510,8 +510,8 @@
}
},
"node_modules/@github/copilot-darwin-x64": {
- "version": "1.0.83-1",
- "integrity": "sha512-PL63+Ib1RH+Bpu2UYJ9E8tmD4NZD/YlhD25F1Q9Rb86AdgLEoRYlxjNxXXF9P9dMmJ/u5zm0rUtWIRxv/FRbPg==",
+ "version": "1.0.83-2",
+ "integrity": "sha512-GzaarluCiHUA4yrYxWIFEklwPLTYjxGvLyYjI0wW5IPseT7GLFjN7AkDGRU4Ny/mxTj1MbUEsJAWVtiNy5EUHg==",
"cpu": [
"x64"
],
@@ -526,8 +526,8 @@
}
},
"node_modules/@github/copilot-linux-arm64": {
- "version": "1.0.83-1",
- "integrity": "sha512-7c4RVEuXQu9zepAWoXwkizpESztUbWUR1hLPl+o+19L+D8fXm+5XQRH5E22Ia7P7/xHW3Ml2o2x5cXFq0k7/7w==",
+ "version": "1.0.83-2",
+ "integrity": "sha512-iGD5Pc7vnzrAjqTK/BrI8MDtMqXyxUe7P6u8TiGt+4DzKe3v2myT6eFQ+z/JJOHNpiu6LUpTDzwS8WttZqqJpA==",
"cpu": [
"arm64"
],
@@ -542,8 +542,8 @@
}
},
"node_modules/@github/copilot-linux-x64": {
- "version": "1.0.83-1",
- "integrity": "sha512-Be0zUVysLYV66pnOPhMxpShQ8Ox5V07qcsSOoNzG7iwpzkfZuf70U9CHk/fnI//mWwmZR+caPUfVM9BpwrdNnA==",
+ "version": "1.0.83-2",
+ "integrity": "sha512-jOQwz075vRWat+RJiMNtD+7vm4DQ83Dvw4iakpNkLfqWMPXlliVr/tqL+SffeSo87LnhOKobZOJOjELS27drdg==",
"cpu": [
"x64"
],
@@ -558,8 +558,8 @@
}
},
"node_modules/@github/copilot-linuxmusl-arm64": {
- "version": "1.0.83-1",
- "integrity": "sha512-PZNP8vZZJU8yIc3dNjGUBUCFPNjqZs8FPZLDxvL6XdHM7Ep4cLBa+QdbRsw+nZONIaG0GtQf26eqk5ymYYpUPA==",
+ "version": "1.0.83-2",
+ "integrity": "sha512-6/+ByEBEV/vDofrCymaKrEZ5/p+TVHQfgWu8ywvWEPALfxj/iHpAF3grM2bj7uED4C19LTSarHNCkCqdrAUzIQ==",
"cpu": [
"arm64"
],
@@ -574,8 +574,8 @@
}
},
"node_modules/@github/copilot-linuxmusl-x64": {
- "version": "1.0.83-1",
- "integrity": "sha512-uKMhGtg5K07nA5/pxDSq8S5F/I+sMgVhUXg90Y4BI9trOidgxpXpCVyh4TeRNj2ENNugPvATdfGc6eFPsjmlgQ==",
+ "version": "1.0.83-2",
+ "integrity": "sha512-8dbiPUHaDemDibLfKXDe5xublJxt6fOht4yYDk/ikmOGAVezBUwRVO27PchXQBwGjP2PVNAASkv2WB4Ubw72lA==",
"cpu": [
"x64"
],
@@ -590,8 +590,8 @@
}
},
"node_modules/@github/copilot-win32-arm64": {
- "version": "1.0.83-1",
- "integrity": "sha512-vMxHTmv3SotBuNI4LKcIFckd+n0OvhTik27qjsqOnVqFpvmHDghSsa8YPxySyxUQIE35z5pJaivVBK3dfEAY7w==",
+ "version": "1.0.83-2",
+ "integrity": "sha512-ZE1iUXlJSnNIH+VoRG96emy2e7jMJm85/pcKCrgLvqhDAcQSqiqLVv3OJp2VX2IcDxToOpiaGccU8Ab9zHQqkQ==",
"cpu": [
"arm64"
],
@@ -606,8 +606,8 @@
}
},
"node_modules/@github/copilot-win32-x64": {
- "version": "1.0.83-1",
- "integrity": "sha512-2l0VVTazW3/+p94ZQ5sAPCj1iH7KWxJAYh4yXWfvpsB/1JEEmyVgpLei1MeaMFVdtp/hi9bGprZ9+zWNlHh5hQ==",
+ "version": "1.0.83-2",
+ "integrity": "sha512-qfturLon+1oaWqSaXCISL6BEf5K+ijJFl0m/OZwstWYSlIlaE2+iOz5LcRukoxm25OG1JZDHQFp1k2PY2A+LbA==",
"cpu": [
"x64"
],
diff --git a/test/harness/package.json b/test/harness/package.json
index e293910938..91aaff849a 100644
--- a/test/harness/package.json
+++ b/test/harness/package.json
@@ -14,7 +14,7 @@
"node": "^20.19.0 || >=22.12.0"
},
"devDependencies": {
- "@github/copilot": "^1.0.83-1",
+ "@github/copilot": "^1.0.83-2",
"@modelcontextprotocol/sdk": "^1.26.0",
"@types/node": "^25.3.3",
"@types/node-forge": "^1.3.14",