From ff3236a83d0c0a36915a1a4fe743de941c779730 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Fri, 2 Oct 2026 16:19:09 -0700 Subject: [PATCH 1/4] agentHost: update Copilot SDK to 1.0.17-preview.3 Align the bundled runtime pin with 1.0.92-3 and refresh prompt snapshots for updated write_agent steering guidance and deterministic task model ordering. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- package-lock.json | 72 +++++++++---------- package.json | 4 +- ...Copilot_prompts_claude-haiku-4_5.prompt.md | 34 ++++----- ..._Copilot_prompts_claude-opus-4_5.prompt.md | 34 ++++----- ..._Copilot_prompts_claude-opus-4_6.prompt.md | 34 ++++----- ..._Copilot_prompts_claude-opus-4_7.prompt.md | 34 ++++----- ...___Copilot_prompts_claude-opus-5.prompt.md | 34 ++++----- ..._Copilot_prompts_claude-opus-5_5.prompt.md | 34 ++++----- ...opilot_prompts_claude-sonnet-4_5.prompt.md | 34 ++++----- ...opilot_prompts_claude-sonnet-4_6.prompt.md | 34 ++++----- ..._Copilot_prompts_claude-sonnet-5.prompt.md | 34 ++++----- ...Copilot_prompts_gemini-2_0-flash.prompt.md | 34 ++++----- ...2E___Copilot_prompts_gpt-5-codex.prompt.md | 34 ++++----- ...E2E___Copilot_prompts_gpt-5-mini.prompt.md | 34 ++++----- ...Host_E2E___Copilot_prompts_gpt-5.prompt.md | 34 ++++----- ...pilot_prompts_gpt-5_1-codex-mini.prompt.md | 34 ++++----- ...___Copilot_prompts_gpt-5_1-codex.prompt.md | 34 ++++----- ...st_E2E___Copilot_prompts_gpt-5_1.prompt.md | 34 ++++----- ...E___Copilot_prompts_gpt-5_6-luna.prompt.md | 34 ++++----- ...2E___Copilot_prompts_gpt-5_6-sol.prompt.md | 34 ++++----- ...___Copilot_prompts_gpt-5_6-terra.prompt.md | 34 ++++----- 21 files changed, 361 insertions(+), 361 deletions(-) diff --git a/package-lock.json b/package-lock.json index af47f54f3629a..bb99734a83c56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dependencies": { "@anthropic-ai/sdk": "^0.82.0", "@devcontainers/cli": "0.88.0", - "@github/copilot-sdk": "1.0.17-preview.0", + "@github/copilot-sdk": "1.0.17-preview.3", "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", "@microsoft/dev-tunnels-connections": "^1.3.41", @@ -1170,9 +1170,9 @@ } }, "node_modules/@github/copilot-sdk": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.17-preview.0.tgz", - "integrity": "sha512-XYoM7Jv+KOw28i+SbZ8hddpkSNjFOeBGZX7aGl+dRWzRFGOUlS4wpmaH33I3EvywfXRj48CO/6/0FabX98fk7Q==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.17-preview.3.tgz", + "integrity": "sha512-QHmdCAzSBAozrhkCrQxTwz/n6aiDRoXvBkxdNEi8/TREJjzXh/NTqg1vJPv/fzUi3en1y9Wt2UcQ6p6BMr4t3w==", "license": "MIT", "dependencies": { "koffi": "3.2.1", @@ -1183,20 +1183,20 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@github/copilot-sdk-darwin-arm64": "1.0.17-preview.0", - "@github/copilot-sdk-darwin-x64": "1.0.17-preview.0", - "@github/copilot-sdk-linux-arm64": "1.0.17-preview.0", - "@github/copilot-sdk-linux-x64": "1.0.17-preview.0", - "@github/copilot-sdk-linuxmusl-arm64": "1.0.17-preview.0", - "@github/copilot-sdk-linuxmusl-x64": "1.0.17-preview.0", - "@github/copilot-sdk-win32-arm64": "1.0.17-preview.0", - "@github/copilot-sdk-win32-x64": "1.0.17-preview.0" + "@github/copilot-sdk-darwin-arm64": "1.0.17-preview.3", + "@github/copilot-sdk-darwin-x64": "1.0.17-preview.3", + "@github/copilot-sdk-linux-arm64": "1.0.17-preview.3", + "@github/copilot-sdk-linux-x64": "1.0.17-preview.3", + "@github/copilot-sdk-linuxmusl-arm64": "1.0.17-preview.3", + "@github/copilot-sdk-linuxmusl-x64": "1.0.17-preview.3", + "@github/copilot-sdk-win32-arm64": "1.0.17-preview.3", + "@github/copilot-sdk-win32-x64": "1.0.17-preview.3" } }, "node_modules/@github/copilot-sdk-darwin-arm64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-arm64/-/copilot-sdk-darwin-arm64-1.0.17-preview.0.tgz", - "integrity": "sha512-p7J5iCeq6ntw4GD42AK7Kmck9jyhVjKZFFH2W8G8B76fopYSBnvMX+LxdfLDkvOHb0OMY91rG0KA9EImZLkiiA==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-arm64/-/copilot-sdk-darwin-arm64-1.0.17-preview.3.tgz", + "integrity": "sha512-YP/DzS8TPXlmcco/pcwwVR4ccUmcOLsbgzbzgpOa2fOM7ke+DqTjyhAX0msKdmQu1wLidtGR3fbWGdIiBpiILA==", "cpu": [ "arm64" ], @@ -1207,9 +1207,9 @@ ] }, "node_modules/@github/copilot-sdk-darwin-x64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-x64/-/copilot-sdk-darwin-x64-1.0.17-preview.0.tgz", - "integrity": "sha512-5whrJOGWrfDZz97VH2TavhWPppNbf9E19IcGtF2DhxBCdWklLWhBfSDCMzrWvpiUnukHSJA925sKQCoThJDKZg==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-x64/-/copilot-sdk-darwin-x64-1.0.17-preview.3.tgz", + "integrity": "sha512-9MeIdseRnnhwblJYDSntrOoEGSjklQ3BEoQxpCQ6P22luJ5PxMbFV75Qd6su7MUC0z+/hRQYcT3lzu4DNyJbCQ==", "cpu": [ "x64" ], @@ -1220,9 +1220,9 @@ ] }, "node_modules/@github/copilot-sdk-linux-arm64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-arm64/-/copilot-sdk-linux-arm64-1.0.17-preview.0.tgz", - "integrity": "sha512-Dm1Q+/SIU4V1/+VBI2zUfTHcrKBAhuMY204WjuVxyry9BBdrAe98XuZuaGv8+ztbWOsIQ/Vhdcbj7PkEBHetrQ==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-arm64/-/copilot-sdk-linux-arm64-1.0.17-preview.3.tgz", + "integrity": "sha512-Sog01ghd9YZsXDpN0nhWYs7BUXKdV1Pxd95QrrXFNjzUG+BZbyPR7M3pWgf6xYp4buXmN+goOvofftdBL+H+CQ==", "cpu": [ "arm64" ], @@ -1236,9 +1236,9 @@ ] }, "node_modules/@github/copilot-sdk-linux-x64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-x64/-/copilot-sdk-linux-x64-1.0.17-preview.0.tgz", - "integrity": "sha512-UG37BcakUmUh5C7Av1ab2smsFJiitev9mWH3vohaAaCYujj/Zb4CRkTVezVA8KLkkdnq67R7AOQSvTFArb0NoA==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-x64/-/copilot-sdk-linux-x64-1.0.17-preview.3.tgz", + "integrity": "sha512-FWCnoA4Rvz72k+hEPwwauzA2XHpIjglib940EcqTEEtwn6v6RIV7PgdzAeKxGHDS0HnRFEuxjmt1Qxk+NOjmGg==", "cpu": [ "x64" ], @@ -1252,9 +1252,9 @@ ] }, "node_modules/@github/copilot-sdk-linuxmusl-arm64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-arm64/-/copilot-sdk-linuxmusl-arm64-1.0.17-preview.0.tgz", - "integrity": "sha512-DgwS8F4IAra48ML6jWprk1HeJAANf7FdjCRIViVAuhaVLvdjbPi/7pYTQGLtwTcxN63O4cG+/1mPKf2roz83YA==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-arm64/-/copilot-sdk-linuxmusl-arm64-1.0.17-preview.3.tgz", + "integrity": "sha512-mtQCRKA+vJN1K5YOGoDtTWk+/1q8rpWfo8LaZ0aUOclOljuSwX8pBnZ/zFGOQuAwBNPKjtGnikuXUb0Gzfk4Qw==", "cpu": [ "arm64" ], @@ -1268,9 +1268,9 @@ ] }, "node_modules/@github/copilot-sdk-linuxmusl-x64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-x64/-/copilot-sdk-linuxmusl-x64-1.0.17-preview.0.tgz", - "integrity": "sha512-9T2ik5qK5akLqVhIyvGVicjcumKGOivvuLaAPYU+210MV+t70u9BGQ0a3Vy3tlgDPGHos/js72ZL2RUo6hmFZg==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-x64/-/copilot-sdk-linuxmusl-x64-1.0.17-preview.3.tgz", + "integrity": "sha512-3R2Ae8O0/gVBNbVAGnjT2ugoYMgrH60GH9XZHRTKbxPXw1F6pmolcRC4FY/grvb0+G/xoChuw2gfCbdouFK/DQ==", "cpu": [ "x64" ], @@ -1284,9 +1284,9 @@ ] }, "node_modules/@github/copilot-sdk-win32-arm64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-arm64/-/copilot-sdk-win32-arm64-1.0.17-preview.0.tgz", - "integrity": "sha512-7nSjNxKXQWCEsf+iDQMEW8dr8q4SkQAimemb0U03fqD3jj7JA6Z/XvmAIFb/Cf+RWqTLexHw0O3HjFs9vF5MNQ==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-arm64/-/copilot-sdk-win32-arm64-1.0.17-preview.3.tgz", + "integrity": "sha512-/CRLUVg4H6gna+HUqLaIxOMGrmsrDrFZR2SMNCVLcCVgR+4QGGUhqkKMUIZZw6Yci6YYhBaWGQtHAL2DT2lHoQ==", "cpu": [ "arm64" ], @@ -1297,9 +1297,9 @@ ] }, "node_modules/@github/copilot-sdk-win32-x64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-x64/-/copilot-sdk-win32-x64-1.0.17-preview.0.tgz", - "integrity": "sha512-4pa51WL3KZgouFrODCngtmGw3yavDIIEwiK+cGAA7jH45uFu5EpPnuVHlpFIrAU/fa80ZSbiX5KkiigP+EpLow==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-x64/-/copilot-sdk-win32-x64-1.0.17-preview.3.tgz", + "integrity": "sha512-8IHydMC1Gyl4Z6GwW/pRI2iNakZLC6fLJwWvqmzM50JZpOIijwuiJwRu5NFevg8TKpbcJh9ItEFNAnA7S2FvfQ==", "cpu": [ "x64" ], diff --git a/package.json b/package.json index 80d724d281016..e3d22751b37d9 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "dependencies": { "@anthropic-ai/sdk": "^0.82.0", "@devcontainers/cli": "0.88.0", - "@github/copilot-sdk": "1.0.17-preview.0", + "@github/copilot-sdk": "1.0.17-preview.3", "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", "@microsoft/dev-tunnels-connections": "^1.3.41", @@ -325,5 +325,5 @@ "@vscode/windows-ca-certs@0.3.4": true, "@vscode/windows-process-tree@0.8.0": true }, - "copilotRuntimeVersion": "1.0.92-0" + "copilotRuntimeVersion": "1.0.92-3" } diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-haiku-4_5.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-haiku-4_5.prompt.md index 404e3521c26e7..51b968e02e1d7 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-haiku-4_5.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-haiku-4_5.prompt.md @@ -345,7 +345,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "input_schema": { "type": "object", "properties": { @@ -371,7 +371,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -517,28 +517,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_5.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_5.prompt.md index 76a42ecad71cc..fe0ab29e30585 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_5.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_5.prompt.md @@ -345,7 +345,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "input_schema": { "type": "object", "properties": { @@ -371,7 +371,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -517,28 +517,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_6.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_6.prompt.md index 0fa2c17aeff0b..035a60333311c 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_6.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_6.prompt.md @@ -345,7 +345,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "input_schema": { "type": "object", "properties": { @@ -371,7 +371,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -517,28 +517,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_7.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_7.prompt.md index 6ebe420b99830..9b9e665afe276 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_7.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-4_7.prompt.md @@ -345,7 +345,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "input_schema": { "type": "object", "properties": { @@ -371,7 +371,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -517,28 +517,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-5.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-5.prompt.md index 3694fe3a98cb3..4ee567f27b252 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-5.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-5.prompt.md @@ -345,7 +345,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "input_schema": { "type": "object", "properties": { @@ -371,7 +371,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -517,28 +517,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-5_5.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-5_5.prompt.md index 6c5e3bcd56bd8..6c248ea61eaf7 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-5_5.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-opus-5_5.prompt.md @@ -345,7 +345,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "input_schema": { "type": "object", "properties": { @@ -371,7 +371,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -517,28 +517,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-4_5.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-4_5.prompt.md index 78a03e17aacf7..7cbe0ffee2765 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-4_5.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-4_5.prompt.md @@ -345,7 +345,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "input_schema": { "type": "object", "properties": { @@ -371,7 +371,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -517,28 +517,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-4_6.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-4_6.prompt.md index 52f08a3851d51..94ef868348559 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-4_6.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-4_6.prompt.md @@ -345,7 +345,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "input_schema": { "type": "object", "properties": { @@ -371,7 +371,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -517,28 +517,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-5.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-5.prompt.md index c0db54245d19f..b7577fc290b47 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-5.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_claude-sonnet-5.prompt.md @@ -345,7 +345,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "input_schema": { "type": "object", "properties": { @@ -371,7 +371,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -517,28 +517,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gemini-2_0-flash.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gemini-2_0-flash.prompt.md index 639eda1c1ba2b..145da0c7adfb9 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gemini-2_0-flash.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gemini-2_0-flash.prompt.md @@ -353,7 +353,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "parameters": { "type": "object", "properties": { @@ -379,7 +379,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -531,28 +531,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5-codex.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5-codex.prompt.md index 458bf717ee4a9..9f6b57d183ee4 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5-codex.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5-codex.prompt.md @@ -314,7 +314,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "parameters": { "type": "object", "properties": { @@ -340,7 +340,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -492,28 +492,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5-mini.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5-mini.prompt.md index 2592a3e4f8e52..395c89013ca59 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5-mini.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5-mini.prompt.md @@ -353,7 +353,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "parameters": { "type": "object", "properties": { @@ -379,7 +379,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -531,28 +531,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5.prompt.md index 93ce8d3c9c523..e089345577644 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5.prompt.md @@ -353,7 +353,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "parameters": { "type": "object", "properties": { @@ -379,7 +379,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -531,28 +531,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1-codex-mini.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1-codex-mini.prompt.md index 15a3f6a5ac8d9..633d147af14e3 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1-codex-mini.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1-codex-mini.prompt.md @@ -314,7 +314,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "parameters": { "type": "object", "properties": { @@ -340,7 +340,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -492,28 +492,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1-codex.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1-codex.prompt.md index 94eca0759fa40..7692ed3317839 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1-codex.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1-codex.prompt.md @@ -314,7 +314,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "parameters": { "type": "object", "properties": { @@ -340,7 +340,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -492,28 +492,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1.prompt.md index 697b694f55acb..0c0190cf34cdb 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_1.prompt.md @@ -353,7 +353,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "parameters": { "type": "object", "properties": { @@ -379,7 +379,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -531,28 +531,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-luna.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-luna.prompt.md index bc3267784b27c..40d489e135fd5 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-luna.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-luna.prompt.md @@ -333,7 +333,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "parameters": { "type": "object", "properties": { @@ -359,7 +359,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -511,28 +511,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-sol.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-sol.prompt.md index 47387dd0c55f4..59bde33a7472d 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-sol.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-sol.prompt.md @@ -333,7 +333,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "parameters": { "type": "object", "properties": { @@ -359,7 +359,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -511,28 +511,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-terra.prompt.md b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-terra.prompt.md index 9e56a932f11c0..d432d581ca2e9 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-terra.prompt.md +++ b/src/vs/platform/agentHost/test/node/e2e/providers/__snapshots__/Agent_Host_E2E___Copilot_prompts_gpt-5_6-terra.prompt.md @@ -333,7 +333,7 @@ }, { "name": "write_agent", - "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation as a new user turn.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message will be queued and delivered after the current turn completes.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", + "description": "Sends a message to one or more running or idle background agents, delivered as a new user turn in each agent's conversation.\n* Use write_agent only for same-task follow-ups where retained context is useful. For unrelated work or the next independent batch item, use a fresh task when available rather than repurposing an existing agent.\n* Messages are delivered directly into the agent's conversation.\n* If the agent is idle (finished its last turn), it will wake up and process the message as its next turn.\n* If the agent is running, the message steers its current turn at the next processing opportunity.\n* Use agent_id for one recipient; use agent_ids for a small explicit set of known recipients; use scope only when the same message applies to every currently visible sibling or child agent.\n* For peer-to-peer conversations: send your message with write_agent, then end your turn. The other agent's reply will arrive as your next turn automatically.", "parameters": { "type": "object", "properties": { @@ -359,7 +359,7 @@ }, "message": { "type": "string", - "description": "The message to send to the selected agent or agents. Each recipient will process this as a new conversation turn." + "description": "The message to send to the selected agent or agents. Steers a running turn or starts the idle agent's next turn." } }, "required": [ @@ -511,28 +511,28 @@ "model": { "type": "string", "enum": [ - "claude-sonnet-5", - "claude-opus-5.5", - "claude-opus-5", + "claude-haiku-4.5", + "claude-opus-4.5", + "claude-opus-4.6", "claude-opus-4.7", + "claude-opus-5", + "claude-opus-5.5", + "claude-sonnet-4.5", "claude-sonnet-4.6", - "claude-haiku-4.5", - "gpt-5.6-sol", - "gpt-5.6-terra", - "gpt-5.6-luna", - "gpt-5.3-codex", - "gpt-5-mini", + "claude-sonnet-5", + "gemini-2.0-flash", + "gpt-4o", + "gpt-4o-mini", "gpt-5", "gpt-5-codex", + "gpt-5-mini", "gpt-5.1", "gpt-5.1-codex", "gpt-5.1-codex-mini", - "claude-sonnet-4.5", - "claude-opus-4.5", - "claude-opus-4.6", - "gemini-2.0-flash", - "gpt-4o", - "gpt-4o-mini" + "gpt-5.3-codex", + "gpt-5.6-luna", + "gpt-5.6-sol", + "gpt-5.6-terra" ], "description": "Optional model override. Specify a value only when the user's current request or applicable persistent custom instructions (including global instructions) explicitly require that value for the subagent. Do not reuse values from earlier requests or infer unspecified values from the parent configuration. The runtime resolves `/subagents` preferences when these fields are omitted; do not copy them merely because they appear in ``." }, From d9277521a6d42ab9c87902000b3ae1672e09fa4a Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Fri, 2 Oct 2026 16:47:40 -0700 Subject: [PATCH 2/4] agentHost: align remote Copilot SDK and runtime versions Keep the remote server dependency in sync with the root SDK upgrade as required by the repository hygiene check. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- remote/package-lock.json | 72 ++++++++++++++++++++-------------------- remote/package.json | 4 +-- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/remote/package-lock.json b/remote/package-lock.json index f0b8fce08d9de..6cff5e8182f0b 100644 --- a/remote/package-lock.json +++ b/remote/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "dependencies": { "@devcontainers/cli": "0.88.0", - "@github/copilot-sdk": "1.0.17-preview.0", + "@github/copilot-sdk": "1.0.17-preview.3", "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", "@microsoft/mxc-sdk": "0.9.0", @@ -73,9 +73,9 @@ } }, "node_modules/@github/copilot-sdk": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.17-preview.0.tgz", - "integrity": "sha512-XYoM7Jv+KOw28i+SbZ8hddpkSNjFOeBGZX7aGl+dRWzRFGOUlS4wpmaH33I3EvywfXRj48CO/6/0FabX98fk7Q==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.17-preview.3.tgz", + "integrity": "sha512-QHmdCAzSBAozrhkCrQxTwz/n6aiDRoXvBkxdNEi8/TREJjzXh/NTqg1vJPv/fzUi3en1y9Wt2UcQ6p6BMr4t3w==", "license": "MIT", "dependencies": { "koffi": "3.2.1", @@ -86,20 +86,20 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@github/copilot-sdk-darwin-arm64": "1.0.17-preview.0", - "@github/copilot-sdk-darwin-x64": "1.0.17-preview.0", - "@github/copilot-sdk-linux-arm64": "1.0.17-preview.0", - "@github/copilot-sdk-linux-x64": "1.0.17-preview.0", - "@github/copilot-sdk-linuxmusl-arm64": "1.0.17-preview.0", - "@github/copilot-sdk-linuxmusl-x64": "1.0.17-preview.0", - "@github/copilot-sdk-win32-arm64": "1.0.17-preview.0", - "@github/copilot-sdk-win32-x64": "1.0.17-preview.0" + "@github/copilot-sdk-darwin-arm64": "1.0.17-preview.3", + "@github/copilot-sdk-darwin-x64": "1.0.17-preview.3", + "@github/copilot-sdk-linux-arm64": "1.0.17-preview.3", + "@github/copilot-sdk-linux-x64": "1.0.17-preview.3", + "@github/copilot-sdk-linuxmusl-arm64": "1.0.17-preview.3", + "@github/copilot-sdk-linuxmusl-x64": "1.0.17-preview.3", + "@github/copilot-sdk-win32-arm64": "1.0.17-preview.3", + "@github/copilot-sdk-win32-x64": "1.0.17-preview.3" } }, "node_modules/@github/copilot-sdk-darwin-arm64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-arm64/-/copilot-sdk-darwin-arm64-1.0.17-preview.0.tgz", - "integrity": "sha512-p7J5iCeq6ntw4GD42AK7Kmck9jyhVjKZFFH2W8G8B76fopYSBnvMX+LxdfLDkvOHb0OMY91rG0KA9EImZLkiiA==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-arm64/-/copilot-sdk-darwin-arm64-1.0.17-preview.3.tgz", + "integrity": "sha512-YP/DzS8TPXlmcco/pcwwVR4ccUmcOLsbgzbzgpOa2fOM7ke+DqTjyhAX0msKdmQu1wLidtGR3fbWGdIiBpiILA==", "cpu": [ "arm64" ], @@ -110,9 +110,9 @@ ] }, "node_modules/@github/copilot-sdk-darwin-x64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-x64/-/copilot-sdk-darwin-x64-1.0.17-preview.0.tgz", - "integrity": "sha512-5whrJOGWrfDZz97VH2TavhWPppNbf9E19IcGtF2DhxBCdWklLWhBfSDCMzrWvpiUnukHSJA925sKQCoThJDKZg==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-x64/-/copilot-sdk-darwin-x64-1.0.17-preview.3.tgz", + "integrity": "sha512-9MeIdseRnnhwblJYDSntrOoEGSjklQ3BEoQxpCQ6P22luJ5PxMbFV75Qd6su7MUC0z+/hRQYcT3lzu4DNyJbCQ==", "cpu": [ "x64" ], @@ -123,9 +123,9 @@ ] }, "node_modules/@github/copilot-sdk-linux-arm64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-arm64/-/copilot-sdk-linux-arm64-1.0.17-preview.0.tgz", - "integrity": "sha512-Dm1Q+/SIU4V1/+VBI2zUfTHcrKBAhuMY204WjuVxyry9BBdrAe98XuZuaGv8+ztbWOsIQ/Vhdcbj7PkEBHetrQ==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-arm64/-/copilot-sdk-linux-arm64-1.0.17-preview.3.tgz", + "integrity": "sha512-Sog01ghd9YZsXDpN0nhWYs7BUXKdV1Pxd95QrrXFNjzUG+BZbyPR7M3pWgf6xYp4buXmN+goOvofftdBL+H+CQ==", "cpu": [ "arm64" ], @@ -139,9 +139,9 @@ ] }, "node_modules/@github/copilot-sdk-linux-x64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-x64/-/copilot-sdk-linux-x64-1.0.17-preview.0.tgz", - "integrity": "sha512-UG37BcakUmUh5C7Av1ab2smsFJiitev9mWH3vohaAaCYujj/Zb4CRkTVezVA8KLkkdnq67R7AOQSvTFArb0NoA==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-x64/-/copilot-sdk-linux-x64-1.0.17-preview.3.tgz", + "integrity": "sha512-FWCnoA4Rvz72k+hEPwwauzA2XHpIjglib940EcqTEEtwn6v6RIV7PgdzAeKxGHDS0HnRFEuxjmt1Qxk+NOjmGg==", "cpu": [ "x64" ], @@ -155,9 +155,9 @@ ] }, "node_modules/@github/copilot-sdk-linuxmusl-arm64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-arm64/-/copilot-sdk-linuxmusl-arm64-1.0.17-preview.0.tgz", - "integrity": "sha512-DgwS8F4IAra48ML6jWprk1HeJAANf7FdjCRIViVAuhaVLvdjbPi/7pYTQGLtwTcxN63O4cG+/1mPKf2roz83YA==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-arm64/-/copilot-sdk-linuxmusl-arm64-1.0.17-preview.3.tgz", + "integrity": "sha512-mtQCRKA+vJN1K5YOGoDtTWk+/1q8rpWfo8LaZ0aUOclOljuSwX8pBnZ/zFGOQuAwBNPKjtGnikuXUb0Gzfk4Qw==", "cpu": [ "arm64" ], @@ -171,9 +171,9 @@ ] }, "node_modules/@github/copilot-sdk-linuxmusl-x64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-x64/-/copilot-sdk-linuxmusl-x64-1.0.17-preview.0.tgz", - "integrity": "sha512-9T2ik5qK5akLqVhIyvGVicjcumKGOivvuLaAPYU+210MV+t70u9BGQ0a3Vy3tlgDPGHos/js72ZL2RUo6hmFZg==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-x64/-/copilot-sdk-linuxmusl-x64-1.0.17-preview.3.tgz", + "integrity": "sha512-3R2Ae8O0/gVBNbVAGnjT2ugoYMgrH60GH9XZHRTKbxPXw1F6pmolcRC4FY/grvb0+G/xoChuw2gfCbdouFK/DQ==", "cpu": [ "x64" ], @@ -187,9 +187,9 @@ ] }, "node_modules/@github/copilot-sdk-win32-arm64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-arm64/-/copilot-sdk-win32-arm64-1.0.17-preview.0.tgz", - "integrity": "sha512-7nSjNxKXQWCEsf+iDQMEW8dr8q4SkQAimemb0U03fqD3jj7JA6Z/XvmAIFb/Cf+RWqTLexHw0O3HjFs9vF5MNQ==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-arm64/-/copilot-sdk-win32-arm64-1.0.17-preview.3.tgz", + "integrity": "sha512-/CRLUVg4H6gna+HUqLaIxOMGrmsrDrFZR2SMNCVLcCVgR+4QGGUhqkKMUIZZw6Yci6YYhBaWGQtHAL2DT2lHoQ==", "cpu": [ "arm64" ], @@ -200,9 +200,9 @@ ] }, "node_modules/@github/copilot-sdk-win32-x64": { - "version": "1.0.17-preview.0", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-x64/-/copilot-sdk-win32-x64-1.0.17-preview.0.tgz", - "integrity": "sha512-4pa51WL3KZgouFrODCngtmGw3yavDIIEwiK+cGAA7jH45uFu5EpPnuVHlpFIrAU/fa80ZSbiX5KkiigP+EpLow==", + "version": "1.0.17-preview.3", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-x64/-/copilot-sdk-win32-x64-1.0.17-preview.3.tgz", + "integrity": "sha512-8IHydMC1Gyl4Z6GwW/pRI2iNakZLC6fLJwWvqmzM50JZpOIijwuiJwRu5NFevg8TKpbcJh9ItEFNAnA7S2FvfQ==", "cpu": [ "x64" ], diff --git a/remote/package.json b/remote/package.json index 12797db326185..86cabdc1170bf 100644 --- a/remote/package.json +++ b/remote/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@devcontainers/cli": "0.88.0", - "@github/copilot-sdk": "1.0.17-preview.0", + "@github/copilot-sdk": "1.0.17-preview.3", "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", "@microsoft/mxc-sdk": "0.9.0", @@ -78,5 +78,5 @@ "@vscode/windows-ca-certs@0.3.4": true, "@vscode/windows-process-tree@0.8.0": true }, - "copilotRuntimeVersion": "1.0.92-0" + "copilotRuntimeVersion": "1.0.92-3" } From ddb4c2d8079db120fac175045a347f07f21677fd Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Fri, 2 Oct 2026 19:10:14 -0700 Subject: [PATCH 3/4] test: isolate Copilot OTel batch export scheduling Use a test-owned 100ms native span batch interval so default or inherited scheduling cannot exhaust the bounded export-readiness wait. Preserve the existing span assertions and wait deadline in both telemetry suites. Verified that the previous and upgraded SDK both defer the first default Linux export by about 10 seconds. Reproduced the missing-span failure with a long inherited schedule; the unchanged assertions pass after isolating the child schedule. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/vs/platform/agentHost/test/node/e2e/README.md | 2 +- .../providers/copilotOtelAgentHostE2E.integrationTest.ts | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/vs/platform/agentHost/test/node/e2e/README.md b/src/vs/platform/agentHost/test/node/e2e/README.md index 17e9a69ed4aa4..bb8f44fa9032b 100644 --- a/src/vs/platform/agentHost/test/node/e2e/README.md +++ b/src/vs/platform/agentHost/test/node/e2e/README.md @@ -255,7 +255,7 @@ On Windows, test-server cleanup records descendants before requesting graceful s The complete-suite runner parallelizes above this lease: conformance, Claude, Codex, Copilot, and Copilot OTel each run in an isolated test process with their own server lease. Tests within one entrypoint stay serial and continue sharing servers, preserving the lifecycle and fixture-window invariants while letting the independent entrypoints overlap. Managed-telemetry tests use a fresh lease and loopback collector per test because their policy and exporter configuration are process-scoped. -Copilot OTel leases clear inherited generic and trace-specific OTLP certificate/key variables in the child environment because both managed telemetry and the Agent Host file-export path use plain HTTP loopback collectors. The parent process environment is unchanged. +Copilot OTel leases clear inherited generic and trace-specific OTLP certificate/key variables in the child environment because both managed telemetry and the Agent Host file-export path use plain HTTP loopback collectors. They also set `OTEL_BSP_SCHEDULE_DELAY=100` so native span batching does not consume the bounded export-readiness wait or inherit a developer's longer export schedule. The tests still wait for and assert the actual exported spans; the parent process environment is unchanged. The swap is what makes sharing cheap: the proxy is an `http.Server` running **inside the test process**, so `CapiReplayProxy.resetForReplay(fixturePath)` is a plain in-process method call — no IPC, no re-fork. It reloads the replay buckets and clears the cache-miss log while keeping the **same proxy URL**, so the long-lived agent host (forked against that URL) keeps talking to the same proxy and just receives the next fixture's recorded responses. Per-test state must be reset there rather than read from the proxy's constructor options, which belong to whichever test started the shared server. Teardown calls `assertNoReplayMismatches()` to verify a test's traffic *without* stopping the server (vs `stop()`, which verifies then closes); the suite's `suiteTeardown` closes it via `close()`. diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/copilotOtelAgentHostE2E.integrationTest.ts b/src/vs/platform/agentHost/test/node/e2e/providers/copilotOtelAgentHostE2E.integrationTest.ts index bdc75358fcf9a..dddcdb3618460 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/copilotOtelAgentHostE2E.integrationTest.ts +++ b/src/vs/platform/agentHost/test/node/e2e/providers/copilotOtelAgentHostE2E.integrationTest.ts @@ -23,7 +23,9 @@ import type { CapiReplayProxy } from '../harness/capiReplayProxy.js'; import { normalizeVolatileText } from '../harness/capiWireCodec.js'; import { COPILOT_CONFIG } from './copilotTestConfiguration.js'; -const clearedOtlpTlsEnv = { +const otelTestEnv = { + // Keep native batch export within the bounded wait, independent of inherited or default scheduling. + OTEL_BSP_SCHEDULE_DELAY: '100', OTEL_EXPORTER_OTLP_CERTIFICATE: '', OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE: '', OTEL_EXPORTER_OTLP_CLIENT_KEY: '', @@ -83,7 +85,7 @@ suite('Agent Host E2E — Copilot managed telemetry', function () { endpoint = collector.baseUrl; lease = new AgentHostE2EServerLease(COPILOT_CONFIG, { env: { - ...clearedOtlpTlsEnv, + ...otelTestEnv, COPILOT_CACHE_HOME: cacheHome, COPILOT_MANAGED_SETTINGS_CACHE: 'true', COPILOT_OTEL_ENABLED: 'false', @@ -203,7 +205,7 @@ suite('Agent Host E2E — Copilot OTel file exporter', function () { exportFile = join(directory, 'spans.jsonl'); lease = new AgentHostE2EServerLease(COPILOT_CONFIG, { env: { - ...clearedOtlpTlsEnv, + ...otelTestEnv, COPILOT_OTEL_ENABLED: 'true', COPILOT_OTEL_DB_SPAN_EXPORTER_ENABLED: 'true', COPILOT_OTEL_EXPORTER_TYPE: 'file', From 79e0f7a0748cc4f873cec8f11611d2a9e24df660 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Sun, 4 Oct 2026 14:31:17 -0700 Subject: [PATCH 4/4] agentHost: update Copilot SDK to 1.0.17-preview.4 Align root and remote runtime pins with 1.0.92-4, adapt typed sandbox RPC mocks, normalize standalone runtime change notices, and restore warm managed-telemetry regression coverage. Keep the upgrade in draft: live exit-only plan approval continued into edits twice with preview.4, while a preview.3 live control passed. Deterministic replay does not establish that the live behavior is correct. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- package-lock.json | 72 +++++++++---------- package.json | 4 +- remote/package-lock.json | 72 +++++++++---------- remote/package.json | 4 +- .../agentHost/test/node/copilotAgent.test.ts | 2 +- .../test/node/copilotAgentSession.test.ts | 2 +- .../test/node/copilotSessionLauncher.test.ts | 10 +-- .../agentHost/test/node/e2e/KNOWN_ISSUES.md | 22 ------ .../agentHost/test/node/e2e/README.md | 4 +- .../e2e/harness/modelRequestProjection.ts | 7 +- ...copilotOtelAgentHostE2E.integrationTest.ts | 3 +- .../test/node/modelRequestProjection.test.ts | 30 ++++++++ 12 files changed, 123 insertions(+), 109 deletions(-) diff --git a/package-lock.json b/package-lock.json index bb99734a83c56..916b20611d05b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dependencies": { "@anthropic-ai/sdk": "^0.82.0", "@devcontainers/cli": "0.88.0", - "@github/copilot-sdk": "1.0.17-preview.3", + "@github/copilot-sdk": "1.0.17-preview.4", "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", "@microsoft/dev-tunnels-connections": "^1.3.41", @@ -1170,9 +1170,9 @@ } }, "node_modules/@github/copilot-sdk": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.17-preview.3.tgz", - "integrity": "sha512-QHmdCAzSBAozrhkCrQxTwz/n6aiDRoXvBkxdNEi8/TREJjzXh/NTqg1vJPv/fzUi3en1y9Wt2UcQ6p6BMr4t3w==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.17-preview.4.tgz", + "integrity": "sha512-tt5pyDLUjiaxJSMCU2HRDLRSFOA4mIFpI6+360EC0jqNDmhlaeJy88YwO6zDO77D21l8lGt8INBj+IYMbPb30Q==", "license": "MIT", "dependencies": { "koffi": "3.2.1", @@ -1183,20 +1183,20 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@github/copilot-sdk-darwin-arm64": "1.0.17-preview.3", - "@github/copilot-sdk-darwin-x64": "1.0.17-preview.3", - "@github/copilot-sdk-linux-arm64": "1.0.17-preview.3", - "@github/copilot-sdk-linux-x64": "1.0.17-preview.3", - "@github/copilot-sdk-linuxmusl-arm64": "1.0.17-preview.3", - "@github/copilot-sdk-linuxmusl-x64": "1.0.17-preview.3", - "@github/copilot-sdk-win32-arm64": "1.0.17-preview.3", - "@github/copilot-sdk-win32-x64": "1.0.17-preview.3" + "@github/copilot-sdk-darwin-arm64": "1.0.17-preview.4", + "@github/copilot-sdk-darwin-x64": "1.0.17-preview.4", + "@github/copilot-sdk-linux-arm64": "1.0.17-preview.4", + "@github/copilot-sdk-linux-x64": "1.0.17-preview.4", + "@github/copilot-sdk-linuxmusl-arm64": "1.0.17-preview.4", + "@github/copilot-sdk-linuxmusl-x64": "1.0.17-preview.4", + "@github/copilot-sdk-win32-arm64": "1.0.17-preview.4", + "@github/copilot-sdk-win32-x64": "1.0.17-preview.4" } }, "node_modules/@github/copilot-sdk-darwin-arm64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-arm64/-/copilot-sdk-darwin-arm64-1.0.17-preview.3.tgz", - "integrity": "sha512-YP/DzS8TPXlmcco/pcwwVR4ccUmcOLsbgzbzgpOa2fOM7ke+DqTjyhAX0msKdmQu1wLidtGR3fbWGdIiBpiILA==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-arm64/-/copilot-sdk-darwin-arm64-1.0.17-preview.4.tgz", + "integrity": "sha512-cufab0CWxFH0wwIw1/dlPNx4gFP/PJoL4+tUQ/d6lZ+SWX4/2VQgRJCQ97qe9Nqql3YWDikiJTTHXQ55xkmmRA==", "cpu": [ "arm64" ], @@ -1207,9 +1207,9 @@ ] }, "node_modules/@github/copilot-sdk-darwin-x64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-x64/-/copilot-sdk-darwin-x64-1.0.17-preview.3.tgz", - "integrity": "sha512-9MeIdseRnnhwblJYDSntrOoEGSjklQ3BEoQxpCQ6P22luJ5PxMbFV75Qd6su7MUC0z+/hRQYcT3lzu4DNyJbCQ==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-x64/-/copilot-sdk-darwin-x64-1.0.17-preview.4.tgz", + "integrity": "sha512-4kj7nU3oXCFFm24d6FijBkuiLTCBtfiI8qEHsDcSxfgPdPnwV+9osT/EAZRKPTh3DYGwqTO7i+bIHEHgogd+Wg==", "cpu": [ "x64" ], @@ -1220,9 +1220,9 @@ ] }, "node_modules/@github/copilot-sdk-linux-arm64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-arm64/-/copilot-sdk-linux-arm64-1.0.17-preview.3.tgz", - "integrity": "sha512-Sog01ghd9YZsXDpN0nhWYs7BUXKdV1Pxd95QrrXFNjzUG+BZbyPR7M3pWgf6xYp4buXmN+goOvofftdBL+H+CQ==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-arm64/-/copilot-sdk-linux-arm64-1.0.17-preview.4.tgz", + "integrity": "sha512-aOHcV5YiFGhtxh+H3qhOuMzktyhwuepGl/jWkWu2vTLy2oztpMnxmoRgwJaj9NdNQoiM8PO13YjbFhbb3TGaOA==", "cpu": [ "arm64" ], @@ -1236,9 +1236,9 @@ ] }, "node_modules/@github/copilot-sdk-linux-x64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-x64/-/copilot-sdk-linux-x64-1.0.17-preview.3.tgz", - "integrity": "sha512-FWCnoA4Rvz72k+hEPwwauzA2XHpIjglib940EcqTEEtwn6v6RIV7PgdzAeKxGHDS0HnRFEuxjmt1Qxk+NOjmGg==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-x64/-/copilot-sdk-linux-x64-1.0.17-preview.4.tgz", + "integrity": "sha512-W98/SrLJXVk5xn8GgvUxNs8wHM10nPe5Ff3fU9vKb4Kb0aS2KyxoAhC4eoNn8VRB2XDW2wFTBvUJAutCiWGL+Q==", "cpu": [ "x64" ], @@ -1252,9 +1252,9 @@ ] }, "node_modules/@github/copilot-sdk-linuxmusl-arm64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-arm64/-/copilot-sdk-linuxmusl-arm64-1.0.17-preview.3.tgz", - "integrity": "sha512-mtQCRKA+vJN1K5YOGoDtTWk+/1q8rpWfo8LaZ0aUOclOljuSwX8pBnZ/zFGOQuAwBNPKjtGnikuXUb0Gzfk4Qw==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-arm64/-/copilot-sdk-linuxmusl-arm64-1.0.17-preview.4.tgz", + "integrity": "sha512-hym02Fv/JuqjmmMqs4E+XFEgx8nzIpIdMLSr5CFpMLWVVKQYBhY8x6r+03qXhfutUWlcoL5f8gK/pdOR23k9jw==", "cpu": [ "arm64" ], @@ -1268,9 +1268,9 @@ ] }, "node_modules/@github/copilot-sdk-linuxmusl-x64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-x64/-/copilot-sdk-linuxmusl-x64-1.0.17-preview.3.tgz", - "integrity": "sha512-3R2Ae8O0/gVBNbVAGnjT2ugoYMgrH60GH9XZHRTKbxPXw1F6pmolcRC4FY/grvb0+G/xoChuw2gfCbdouFK/DQ==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-x64/-/copilot-sdk-linuxmusl-x64-1.0.17-preview.4.tgz", + "integrity": "sha512-IhjdLXtUSV8lSZiWsciGHD2iwv3nS2pAwLMywfgB1GozouBDIfWZJlbTUX5Jqv4JeZjE7lpvD5e+Sc11HL6kQQ==", "cpu": [ "x64" ], @@ -1284,9 +1284,9 @@ ] }, "node_modules/@github/copilot-sdk-win32-arm64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-arm64/-/copilot-sdk-win32-arm64-1.0.17-preview.3.tgz", - "integrity": "sha512-/CRLUVg4H6gna+HUqLaIxOMGrmsrDrFZR2SMNCVLcCVgR+4QGGUhqkKMUIZZw6Yci6YYhBaWGQtHAL2DT2lHoQ==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-arm64/-/copilot-sdk-win32-arm64-1.0.17-preview.4.tgz", + "integrity": "sha512-MxJJiT2DoDXi3a6dPY/DwMbJPweK75ywlIIbK6Agnof055euC4st3bKMUXz8Nuq4pWzXU3HEWFUVWnNr/63TNw==", "cpu": [ "arm64" ], @@ -1297,9 +1297,9 @@ ] }, "node_modules/@github/copilot-sdk-win32-x64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-x64/-/copilot-sdk-win32-x64-1.0.17-preview.3.tgz", - "integrity": "sha512-8IHydMC1Gyl4Z6GwW/pRI2iNakZLC6fLJwWvqmzM50JZpOIijwuiJwRu5NFevg8TKpbcJh9ItEFNAnA7S2FvfQ==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-x64/-/copilot-sdk-win32-x64-1.0.17-preview.4.tgz", + "integrity": "sha512-NGC8k/WHw6lP6O6h/nJiw3lBaaaMjb1hu+urr+Wpa9EP9a/PFL4rWXpxixgQT4qym7EAVY+EE1vSTA8jCi7cAA==", "cpu": [ "x64" ], diff --git a/package.json b/package.json index e3d22751b37d9..b3ed12cc63d11 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "dependencies": { "@anthropic-ai/sdk": "^0.82.0", "@devcontainers/cli": "0.88.0", - "@github/copilot-sdk": "1.0.17-preview.3", + "@github/copilot-sdk": "1.0.17-preview.4", "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", "@microsoft/dev-tunnels-connections": "^1.3.41", @@ -325,5 +325,5 @@ "@vscode/windows-ca-certs@0.3.4": true, "@vscode/windows-process-tree@0.8.0": true }, - "copilotRuntimeVersion": "1.0.92-3" + "copilotRuntimeVersion": "1.0.92-4" } diff --git a/remote/package-lock.json b/remote/package-lock.json index 6cff5e8182f0b..0300e36651d48 100644 --- a/remote/package-lock.json +++ b/remote/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "dependencies": { "@devcontainers/cli": "0.88.0", - "@github/copilot-sdk": "1.0.17-preview.3", + "@github/copilot-sdk": "1.0.17-preview.4", "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", "@microsoft/mxc-sdk": "0.9.0", @@ -73,9 +73,9 @@ } }, "node_modules/@github/copilot-sdk": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.17-preview.3.tgz", - "integrity": "sha512-QHmdCAzSBAozrhkCrQxTwz/n6aiDRoXvBkxdNEi8/TREJjzXh/NTqg1vJPv/fzUi3en1y9Wt2UcQ6p6BMr4t3w==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.17-preview.4.tgz", + "integrity": "sha512-tt5pyDLUjiaxJSMCU2HRDLRSFOA4mIFpI6+360EC0jqNDmhlaeJy88YwO6zDO77D21l8lGt8INBj+IYMbPb30Q==", "license": "MIT", "dependencies": { "koffi": "3.2.1", @@ -86,20 +86,20 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@github/copilot-sdk-darwin-arm64": "1.0.17-preview.3", - "@github/copilot-sdk-darwin-x64": "1.0.17-preview.3", - "@github/copilot-sdk-linux-arm64": "1.0.17-preview.3", - "@github/copilot-sdk-linux-x64": "1.0.17-preview.3", - "@github/copilot-sdk-linuxmusl-arm64": "1.0.17-preview.3", - "@github/copilot-sdk-linuxmusl-x64": "1.0.17-preview.3", - "@github/copilot-sdk-win32-arm64": "1.0.17-preview.3", - "@github/copilot-sdk-win32-x64": "1.0.17-preview.3" + "@github/copilot-sdk-darwin-arm64": "1.0.17-preview.4", + "@github/copilot-sdk-darwin-x64": "1.0.17-preview.4", + "@github/copilot-sdk-linux-arm64": "1.0.17-preview.4", + "@github/copilot-sdk-linux-x64": "1.0.17-preview.4", + "@github/copilot-sdk-linuxmusl-arm64": "1.0.17-preview.4", + "@github/copilot-sdk-linuxmusl-x64": "1.0.17-preview.4", + "@github/copilot-sdk-win32-arm64": "1.0.17-preview.4", + "@github/copilot-sdk-win32-x64": "1.0.17-preview.4" } }, "node_modules/@github/copilot-sdk-darwin-arm64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-arm64/-/copilot-sdk-darwin-arm64-1.0.17-preview.3.tgz", - "integrity": "sha512-YP/DzS8TPXlmcco/pcwwVR4ccUmcOLsbgzbzgpOa2fOM7ke+DqTjyhAX0msKdmQu1wLidtGR3fbWGdIiBpiILA==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-arm64/-/copilot-sdk-darwin-arm64-1.0.17-preview.4.tgz", + "integrity": "sha512-cufab0CWxFH0wwIw1/dlPNx4gFP/PJoL4+tUQ/d6lZ+SWX4/2VQgRJCQ97qe9Nqql3YWDikiJTTHXQ55xkmmRA==", "cpu": [ "arm64" ], @@ -110,9 +110,9 @@ ] }, "node_modules/@github/copilot-sdk-darwin-x64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-x64/-/copilot-sdk-darwin-x64-1.0.17-preview.3.tgz", - "integrity": "sha512-9MeIdseRnnhwblJYDSntrOoEGSjklQ3BEoQxpCQ6P22luJ5PxMbFV75Qd6su7MUC0z+/hRQYcT3lzu4DNyJbCQ==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-darwin-x64/-/copilot-sdk-darwin-x64-1.0.17-preview.4.tgz", + "integrity": "sha512-4kj7nU3oXCFFm24d6FijBkuiLTCBtfiI8qEHsDcSxfgPdPnwV+9osT/EAZRKPTh3DYGwqTO7i+bIHEHgogd+Wg==", "cpu": [ "x64" ], @@ -123,9 +123,9 @@ ] }, "node_modules/@github/copilot-sdk-linux-arm64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-arm64/-/copilot-sdk-linux-arm64-1.0.17-preview.3.tgz", - "integrity": "sha512-Sog01ghd9YZsXDpN0nhWYs7BUXKdV1Pxd95QrrXFNjzUG+BZbyPR7M3pWgf6xYp4buXmN+goOvofftdBL+H+CQ==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-arm64/-/copilot-sdk-linux-arm64-1.0.17-preview.4.tgz", + "integrity": "sha512-aOHcV5YiFGhtxh+H3qhOuMzktyhwuepGl/jWkWu2vTLy2oztpMnxmoRgwJaj9NdNQoiM8PO13YjbFhbb3TGaOA==", "cpu": [ "arm64" ], @@ -139,9 +139,9 @@ ] }, "node_modules/@github/copilot-sdk-linux-x64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-x64/-/copilot-sdk-linux-x64-1.0.17-preview.3.tgz", - "integrity": "sha512-FWCnoA4Rvz72k+hEPwwauzA2XHpIjglib940EcqTEEtwn6v6RIV7PgdzAeKxGHDS0HnRFEuxjmt1Qxk+NOjmGg==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linux-x64/-/copilot-sdk-linux-x64-1.0.17-preview.4.tgz", + "integrity": "sha512-W98/SrLJXVk5xn8GgvUxNs8wHM10nPe5Ff3fU9vKb4Kb0aS2KyxoAhC4eoNn8VRB2XDW2wFTBvUJAutCiWGL+Q==", "cpu": [ "x64" ], @@ -155,9 +155,9 @@ ] }, "node_modules/@github/copilot-sdk-linuxmusl-arm64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-arm64/-/copilot-sdk-linuxmusl-arm64-1.0.17-preview.3.tgz", - "integrity": "sha512-mtQCRKA+vJN1K5YOGoDtTWk+/1q8rpWfo8LaZ0aUOclOljuSwX8pBnZ/zFGOQuAwBNPKjtGnikuXUb0Gzfk4Qw==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-arm64/-/copilot-sdk-linuxmusl-arm64-1.0.17-preview.4.tgz", + "integrity": "sha512-hym02Fv/JuqjmmMqs4E+XFEgx8nzIpIdMLSr5CFpMLWVVKQYBhY8x6r+03qXhfutUWlcoL5f8gK/pdOR23k9jw==", "cpu": [ "arm64" ], @@ -171,9 +171,9 @@ ] }, "node_modules/@github/copilot-sdk-linuxmusl-x64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-x64/-/copilot-sdk-linuxmusl-x64-1.0.17-preview.3.tgz", - "integrity": "sha512-3R2Ae8O0/gVBNbVAGnjT2ugoYMgrH60GH9XZHRTKbxPXw1F6pmolcRC4FY/grvb0+G/xoChuw2gfCbdouFK/DQ==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-linuxmusl-x64/-/copilot-sdk-linuxmusl-x64-1.0.17-preview.4.tgz", + "integrity": "sha512-IhjdLXtUSV8lSZiWsciGHD2iwv3nS2pAwLMywfgB1GozouBDIfWZJlbTUX5Jqv4JeZjE7lpvD5e+Sc11HL6kQQ==", "cpu": [ "x64" ], @@ -187,9 +187,9 @@ ] }, "node_modules/@github/copilot-sdk-win32-arm64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-arm64/-/copilot-sdk-win32-arm64-1.0.17-preview.3.tgz", - "integrity": "sha512-/CRLUVg4H6gna+HUqLaIxOMGrmsrDrFZR2SMNCVLcCVgR+4QGGUhqkKMUIZZw6Yci6YYhBaWGQtHAL2DT2lHoQ==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-arm64/-/copilot-sdk-win32-arm64-1.0.17-preview.4.tgz", + "integrity": "sha512-MxJJiT2DoDXi3a6dPY/DwMbJPweK75ywlIIbK6Agnof055euC4st3bKMUXz8Nuq4pWzXU3HEWFUVWnNr/63TNw==", "cpu": [ "arm64" ], @@ -200,9 +200,9 @@ ] }, "node_modules/@github/copilot-sdk-win32-x64": { - "version": "1.0.17-preview.3", - "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-x64/-/copilot-sdk-win32-x64-1.0.17-preview.3.tgz", - "integrity": "sha512-8IHydMC1Gyl4Z6GwW/pRI2iNakZLC6fLJwWvqmzM50JZpOIijwuiJwRu5NFevg8TKpbcJh9ItEFNAnA7S2FvfQ==", + "version": "1.0.17-preview.4", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk-win32-x64/-/copilot-sdk-win32-x64-1.0.17-preview.4.tgz", + "integrity": "sha512-NGC8k/WHw6lP6O6h/nJiw3lBaaaMjb1hu+urr+Wpa9EP9a/PFL4rWXpxixgQT4qym7EAVY+EE1vSTA8jCi7cAA==", "cpu": [ "x64" ], diff --git a/remote/package.json b/remote/package.json index 86cabdc1170bf..9f718de08d781 100644 --- a/remote/package.json +++ b/remote/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@devcontainers/cli": "0.88.0", - "@github/copilot-sdk": "1.0.17-preview.3", + "@github/copilot-sdk": "1.0.17-preview.4", "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", "@microsoft/mxc-sdk": "0.9.0", @@ -78,5 +78,5 @@ "@vscode/windows-ca-certs@0.3.4": true, "@vscode/windows-process-tree@0.8.0": true }, - "copilotRuntimeVersion": "1.0.92-3" + "copilotRuntimeVersion": "1.0.92-4" } diff --git a/src/vs/platform/agentHost/test/node/copilotAgent.test.ts b/src/vs/platform/agentHost/test/node/copilotAgent.test.ts index 74e94c7d9437a..871ad612482c3 100644 --- a/src/vs/platform/agentHost/test/node/copilotAgent.test.ts +++ b/src/vs/platform/agentHost/test/node/copilotAgent.test.ts @@ -1317,7 +1317,7 @@ function createAgentSessionThroughAgent(agent: CopilotAgent, instantiationServic const launchPlan: CopilotSessionLaunchPlan = { kind: 'create', client: { - rpc: { account: new class extends mock() { }, sandbox: { getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, + rpc: { account: new class extends mock() { }, sandbox: { proxyCa: new class extends mock() { }, getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, createSession: async options => { createOptions = options; reportManagedSettings(options); diff --git a/src/vs/platform/agentHost/test/node/copilotAgentSession.test.ts b/src/vs/platform/agentHost/test/node/copilotAgentSession.test.ts index 51a81fee8647e..a51ed0caedc2b 100644 --- a/src/vs/platform/agentHost/test/node/copilotAgentSession.test.ts +++ b/src/vs/platform/agentHost/test/node/copilotAgentSession.test.ts @@ -1141,7 +1141,7 @@ async function createAgentSession(disposables: DisposableStore, options?: { const launchPlanBase = { client: { - rpc: { account: new class extends mock() { }, sandbox: { getHostSupport: options?.getSandboxHostSupport ?? (async () => ({ supported: true, capabilities: [] })) } }, + rpc: { account: new class extends mock() { }, sandbox: { proxyCa: new class extends mock() { }, getHostSupport: options?.getSandboxHostSupport ?? (async () => ({ supported: true, capabilities: [] })) } }, createSession: async () => mockSession as unknown as CopilotSession, resumeSession: async () => mockSession as unknown as CopilotSession, }, diff --git a/src/vs/platform/agentHost/test/node/copilotSessionLauncher.test.ts b/src/vs/platform/agentHost/test/node/copilotSessionLauncher.test.ts index 4c282464f3930..70716aa3e9287 100644 --- a/src/vs/platform/agentHost/test/node/copilotSessionLauncher.test.ts +++ b/src/vs/platform/agentHost/test/node/copilotSessionLauncher.test.ts @@ -797,7 +797,7 @@ suite('CopilotSessionLauncher shared session config', () => { resumeConfigs.push(config); return session; }, - rpc: { account: new class extends mock() { }, sandbox: { getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, + rpc: { account: new class extends mock() { }, sandbox: { proxyCa: new class extends mock() { }, getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, }; const managedSettingsPermissions: IAgentHostManagedSettingsPermissions = { disableBypassPermissionsMode: 'disable', @@ -1142,7 +1142,7 @@ suite('CopilotSessionLauncher canvas config', () => { return session; }, resumeSession: async () => { throw new Error('Unexpected resume'); }, - rpc: { account: new class extends mock() { }, sandbox: { getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, + rpc: { account: new class extends mock() { }, sandbox: { proxyCa: new class extends mock() { }, getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, } as unknown as CopilotClient; const launcher = createTestLauncher(undefined, { [AgentHostCanvasesEnabledConfigKey]: true }); const plan: CopilotSessionLaunchPlan = { @@ -1193,7 +1193,7 @@ suite('CopilotSessionLauncher canvas config', () => { return session; }, resumeSession: async () => { throw new Error('Unexpected resume'); }, - rpc: { account: new class extends mock() { }, sandbox: { getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, + rpc: { account: new class extends mock() { }, sandbox: { proxyCa: new class extends mock() { }, getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, } as unknown as CopilotClient; const launcher = createTestLauncher(); const plan: CopilotSessionLaunchPlan = { @@ -1257,7 +1257,7 @@ suite('CopilotSessionLauncher resume fallback', () => { resumeSession: async () => { throw new TestSdkError(message, code); }, - rpc: { account: new class extends mock() { }, sandbox: { getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, + rpc: { account: new class extends mock() { }, sandbox: { proxyCa: new class extends mock() { }, getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, }; return { launcher: createTestLauncher(undefined, {}, logService, sessionOpenTelemetry), @@ -2162,7 +2162,7 @@ suite('CopilotSessionLauncher auto tier', () => { }, } as unknown as CopilotSession; const client: CopilotSessionLaunchPlan['client'] = { - rpc: { account: new class extends mock() { }, sandbox: { getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, + rpc: { account: new class extends mock() { }, sandbox: { proxyCa: new class extends mock() { }, getHostSupport: async () => ({ supported: true, capabilities: [] }) } }, createSession: async config => { capiCalls.push(config.capi); return session; diff --git a/src/vs/platform/agentHost/test/node/e2e/KNOWN_ISSUES.md b/src/vs/platform/agentHost/test/node/e2e/KNOWN_ISSUES.md index 68900073f5810..db282f14654d8 100644 --- a/src/vs/platform/agentHost/test/node/e2e/KNOWN_ISSUES.md +++ b/src/vs/platform/agentHost/test/node/e2e/KNOWN_ISSUES.md @@ -72,28 +72,6 @@ A user can request diagnostics to see which enterprise-managed settings apply to --grep "managed settings diagnostics expose the provider snapshot" ``` -### Copilot managed telemetry changes require a host restart - -An administrator can change telemetry policy while a user has an Agent Host running. -After the runtime has exported a turn under the original policy, creating another -session with a changed telemetry service name fails instead of starting the chat. -Restarting the host lets the same new policy work, including message-content capture. - -- Test: `new sessions honor changed managed telemetry without restarting` in `providers/copilotOtelAgentHostE2E.integrationTest.ts`. -- Scope: Copilot, record and replay. Reproduced locally on macOS with SDK `1.0.16` / runtime `1.0.90`; other platforms remain unvalidated. -- Expected: the second session completes without a manual restart, and its decoded inference span contains its actual user message under service B, correlated using the provider session ID reported over AHP. -- Observed: the second turn fails with `Managed telemetry conflicts with the already selected OTel configuration`. The runtime deliberately permits only one effective telemetry configuration per process; suppressing the error or retaining policy A is not a fix. -- Controls: unchanged-policy sessions and an explicit host restart both pass with capture enabled. Runtime `1.0.89-3` from SDK `1.0.15-preview.3`, tested through the current host's runtime-path override, completes the first turn but exports no inference spans. It is not a green baseline for the full telemetry contract. -- Gate: `AGENT_HOST_RUN_KNOWN_ISSUES=1`. The desired-behavior assertion remains intact. -- Fixture provenance: the two trivial model responses were generated with an explicit restart between turns, then the restart was removed and the warm failure was confirmed in strict replay. The permanent warm scenario must never restart the host. -- Reproduce: - - ```bash - AGENT_HOST_RUN_KNOWN_ISSUES=1 ./scripts/test-integration.sh --run \ - src/vs/platform/agentHost/test/node/e2e/providers/copilotOtelAgentHostE2E.integrationTest.ts \ - --grep "new sessions honor changed managed telemetry without restarting" - ``` - ### Binary writes to client-hosted files are corrupted An agent host can address files that live on a connected client and send symmetric AHP filesystem operations back to that client. When the host writes binary content this way, bytes that are not valid UTF-8 are replaced before they reach the client, so images and other binary files can be corrupted. diff --git a/src/vs/platform/agentHost/test/node/e2e/README.md b/src/vs/platform/agentHost/test/node/e2e/README.md index bb8f44fa9032b..2b946205e3fb3 100644 --- a/src/vs/platform/agentHost/test/node/e2e/README.md +++ b/src/vs/platform/agentHost/test/node/e2e/README.md @@ -116,7 +116,7 @@ The residual case is `providerHostOnlyTest(...)`: per-provider, but no model tra | `captures/*.yaml` | Committed model fixtures, plus one shared strict empty fixture for tests that declare no model traffic. | | `conformance/__snapshots__/`, `providers/__snapshots__/` | Semantic AHP snapshots (`*.traffic.ahp.yaml`) and assembled-prompt snapshots (`*.prompt.md`), resolved relative to the entry point that registered the test. | | `providers/copilotPromptsE2E.integrationTest.ts` | The provider request-body boundary: the complete model request body the bundled Copilot CLI sends, read off a replayed turn. See [Prompt snapshots](#prompt-snapshots). | -| `providers/copilotOtelAgentHostE2E.integrationTest.ts` | Native Copilot telemetry: Agent Host file export, managed content capture across sessions, and policy changes after a host restart. The warm policy-change gap is tracked in `KNOWN_ISSUES.md`. | +| `providers/copilotOtelAgentHostE2E.integrationTest.ts` | Native Copilot telemetry: Agent Host file export, managed content capture across sessions, and policy changes with and without a host restart. | | `coverage/summary.json` | Checked-in line coverage of the host implementation. | | `coverage/protocol-surface.json` | Checked-in coverage of the AHP contract itself. | | [`KNOWN_ISSUES.md`](./KNOWN_ISSUES.md) | Inventory and reevaluation process for disabled or conditional tests. | @@ -210,6 +210,8 @@ Each elision has a reason, and dropping any of them would make the assertion eit A single text block left after removing reasoning is compared as bare text, matching the replay codec's representation. Multiple text blocks and mixed text/tool content retain their structure. +Runtime-authored change notices are elided from user text. A standalone user message containing only those recognized notices is omitted as well; user questions, empty authored messages, assistant messages, and tool-result wiring remain asserted. + A mismatch fails the test as `[capi-replay] N model request mismatch(es)` and prints both projections. It usually means the capture is stale — the prompt or the host's prompt assembly changed without a re-record — so **re-record it** (see [Updating snapshots and fixtures](#updating-snapshots-and-fixtures)). Never hand-edit the request block to match. If a capture genuinely cannot be refreshed, add its test title to `STALE_RECORDED_REQUEST_EXCEPTIONS` in `agentHostE2ETestHarness.ts` with a `KNOWN_ISSUES.md` entry. --- diff --git a/src/vs/platform/agentHost/test/node/e2e/harness/modelRequestProjection.ts b/src/vs/platform/agentHost/test/node/e2e/harness/modelRequestProjection.ts index 4e6f69ac7ac1e..13eb10b4624b1 100644 --- a/src/vs/platform/agentHost/test/node/e2e/harness/modelRequestProjection.ts +++ b/src/vs/platform/agentHost/test/node/e2e/harness/modelRequestProjection.ts @@ -182,7 +182,12 @@ function projectContent(content: unknown): unknown { export function projectModelRequest(request: IReadableAnthropicRequest): IProjectedModelRequest { return { system: request.system, - messages: request.messages.map(message => ({ role: message.role, content: projectContent(message.content) })), + messages: request.messages + .filter(message => !(message.role === 'user' + && typeof message.content === 'string' + && message.content.length > 0 + && elideChangeNotices(message.content) === '')) + .map(message => ({ role: message.role, content: projectContent(message.content) })), }; } diff --git a/src/vs/platform/agentHost/test/node/e2e/providers/copilotOtelAgentHostE2E.integrationTest.ts b/src/vs/platform/agentHost/test/node/e2e/providers/copilotOtelAgentHostE2E.integrationTest.ts index dddcdb3618460..32147aae0dbbd 100644 --- a/src/vs/platform/agentHost/test/node/e2e/providers/copilotOtelAgentHostE2E.integrationTest.ts +++ b/src/vs/platform/agentHost/test/node/e2e/providers/copilotOtelAgentHostE2E.integrationTest.ts @@ -174,8 +174,7 @@ suite('Agent Host E2E — Copilot managed telemetry', function () { await completeCapturedTurn('otel-policy-a', 'otel-capture-second', await setPolicy('otel-policy-a')); }); - // The runtime currently rejects a changed process-wide OTel configuration (see KNOWN_ISSUES.md). - (process.env['AGENT_HOST_RUN_KNOWN_ISSUES'] === '1' ? test : test.skip)('new sessions honor changed managed telemetry without restarting', async function () { + test('new sessions honor changed managed telemetry without restarting', async function () { this.timeout(180_000); await completeCapturedTurn('otel-policy-a', 'otel-policy-first', await setPolicy('otel-policy-a')); await completeCapturedTurn('otel-policy-b', 'otel-policy-second', await setPolicy('otel-policy-b')); diff --git a/src/vs/platform/agentHost/test/node/modelRequestProjection.test.ts b/src/vs/platform/agentHost/test/node/modelRequestProjection.test.ts index 16dc525be2f5b..efbfa64d1c2f8 100644 --- a/src/vs/platform/agentHost/test/node/modelRequestProjection.test.ts +++ b/src/vs/platform/agentHost/test/node/modelRequestProjection.test.ts @@ -186,6 +186,36 @@ suite('modelRequestProjection', () => { ), false); }); + test('standalone runtime change notices do not change the retained conversation', () => { + const notice = '\nPlan mode is no longer active.\n'; + const messages = [ + { role: 'user', content: 'Write a plan.' }, + { role: 'assistant', content: 'Plan approved.' }, + { role: 'user', content: 'What did the plan say?' }, + ]; + assert.deepStrictEqual(projectModelRequest(request([ + messages[0], + { role: 'user', content: notice }, + messages[1], + messages[2], + ])), projectModelRequest(request(messages))); + }); + + test('notice elision preserves empty user input, assistant messages, and tool results', () => { + const notice = '\nPlan mode is no longer active.\n'; + assert.deepStrictEqual(projectModelRequest(request([ + { role: 'user', content: '' }, + { role: 'assistant', content: notice }, + { role: 'user', content: `${notice}\nKeep this question.` }, + { role: 'user', content: [{ type: 'tool_result', tool_use_id: 'toolcall_0', content: notice }] }, + ])).messages, [ + { role: 'user', content: '' }, + { role: 'assistant', content: '' }, + { role: 'user', content: 'Keep this question.' }, + { role: 'user', content: [{ type: 'tool_result', tool_use_id: 'toolcall_0', content: TOOL_RESULT_PLACEHOLDER }] }, + ]); + }); + test('a tool input matches regardless of key order', () => { // The `input` is JSON the model produced; its key order is not // guaranteed to survive a re-record or a YAML round-trip, and comparing