diff --git a/package-lock.json b/package-lock.json index af47f54f3629a2..916b20611d05b5 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 80d724d281016d..b3ed12cc63d111 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.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-0" + "copilotRuntimeVersion": "1.0.92-4" } diff --git a/remote/package-lock.json b/remote/package-lock.json index f0b8fce08d9de0..0300e36651d483 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 12797db326185f..9f718de08d7811 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.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-0" + "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 2ef9676cfbcd70..ddd113d2d3065a 100644 --- a/src/vs/platform/agentHost/test/node/copilotAgent.test.ts +++ b/src/vs/platform/agentHost/test/node/copilotAgent.test.ts @@ -1333,7 +1333,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 7dbc98dd925e0c..c29ba635aec559 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 5c70f26075b093..73e91cc2308420 100644 --- a/src/vs/platform/agentHost/test/node/copilotSessionLauncher.test.ts +++ b/src/vs/platform/agentHost/test/node/copilotSessionLauncher.test.ts @@ -835,7 +835,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', @@ -1180,7 +1180,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 = { @@ -1231,7 +1231,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 = { @@ -1295,7 +1295,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), @@ -2200,7 +2200,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 8ae447899c1a1f..ca4f1788838cb6 100644 --- a/src/vs/platform/agentHost/test/node/e2e/KNOWN_ISSUES.md +++ b/src/vs/platform/agentHost/test/node/e2e/KNOWN_ISSUES.md @@ -55,29 +55,6 @@ The session's combined changes sometimes omit edits from one of its two chats, f scripts\test-integration.bat --run src/vs/platform/agentHost/test/node/e2e/providers/codexAgentHostE2E.integrationTest.ts --grep "session changeset aggregates provider edits from default and peer chats" ``` -### 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. -- Expected failure: runs by default and accepts only the second session's known configuration-conflict error, tracked by [github/copilot-agent-runtime#24069](https://github.com/github/copilot-agent-runtime/pull/24069). A successful second turn and export fail the test as an unexpected pass, requiring removal of the marker. Setup, replay, and other failures remain failures. -- After that recognized failure only, teardown permits unused future model responses; all observed requests must still match the recording. -- 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 - ./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 d1ecc0f9db76b2..184dec9ddea9bf 100644 --- a/src/vs/platform/agentHost/test/node/e2e/README.md +++ b/src/vs/platform/agentHost/test/node/e2e/README.md @@ -118,7 +118,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. | @@ -212,6 +212,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. --- @@ -285,7 +287,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 file-export test also sets `OTEL_BSP_SCHEDULE_DELAY=100` in its child environment so native SDK batching does not race the ten-second span-polling budget. It still waits for the actual SDK and host spans in the exported file; neither the polling deadline nor the required spans are relaxed. 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 4e6f69ac7ac1ee..13eb10b4624b13 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/__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 404e3521c26e7f..51b968e02e1d7e 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 76a42ecad71cce..fe0ab29e30585a 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 0fa2c17aeff0bc..035a60333311ce 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 6ebe420b998309..9b9e665afe276e 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 3694fe3a98cb3b..4ee567f27b2523 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 6c5e3bcd56bd84..6c248ea61eaf78 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 78a03e17aacf77..7cbe0ffee2765d 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 52f08a3851d51e..94ef868348559f 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 c0db54245d19fc..b7577fc290b479 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 639eda1c1ba2b4..145da0c7adfb9e 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 458bf717ee4a92..9f6b57d183ee40 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 2592a3e4f8e524..395c89013ca59a 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 93ce8d3c9c5238..e0893455776445 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 15a3f6a5ac8d93..633d147af14e34 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 94eca0759fa409..7692ed33178390 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 697b694f55acb4..0c0190cf34cdbe 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 bc3267784b27c9..40d489e135fd57 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 47387dd0c55f4b..59bde33a7472dc 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 9e56a932f11c0a..d432d581ca2e98 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 ``." }, 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 633a5d635c5e62..64704c9f3809c6 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 @@ -21,12 +21,11 @@ import { AgentHostE2EServerLease, createRealSession, driveTurnToCompletion, remo import { fetchSessionWithChat, TestProtocolClient } from '../../serverIntegrationTestHelpers.js'; import type { CapiReplayProxy } from '../harness/capiReplayProxy.js'; import { normalizeVolatileText } from '../harness/capiWireCodec.js'; -import { assertExpectedFailure } from '../harness/expectedFailure.js'; import { COPILOT_CONFIG } from './copilotTestConfiguration.js'; -const RECORD = process.env['AGENT_HOST_REPLAY_RECORD'] === '1' || process.env['AGENT_HOST_UPDATE_SNAPSHOTS'] === '1'; - -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: '', @@ -48,12 +47,11 @@ suite('Agent Host E2E — Copilot managed telemetry', function () { let workspace: string; let collector: ILocalOtlpHttpReceiver; let initialized: boolean; - let allowUnconsumedResponses: boolean; teardown(async function () { this.timeout(120_000); try { - await lease?.release(createdSessions, this.currentTest?.state === 'failed', { allowUnconsumedResponses }); + await lease?.release(createdSessions, this.currentTest?.state === 'failed'); } finally { try { await lease?.dispose(); @@ -71,7 +69,6 @@ suite('Agent Host E2E — Copilot managed telemetry', function () { spans.length = 0; decodeErrors.length = 0; initialized = false; - allowUnconsumedResponses = false; const directory = await mkdtemp(join(tmpdir(), 'copilot-managed-otel-')); tempDirs.push(directory); workspace = join(directory, 'workspace'); @@ -88,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', @@ -177,14 +174,10 @@ suite('Agent Host E2E — Copilot managed telemetry', function () { await completeCapturedTurn('otel-policy-a', 'otel-capture-second', await setPolicy('otel-policy-a')); }); - (RECORD ? test.skip : test)('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 assertExpectedFailure('github/copilot-agent-runtime#24069', - /^Session error while driving otel-policy-second: sendFailed: Request session\.create failed with message: Standalone managed telemetry preparation failed: Managed telemetry conflicts with the already selected OTel configuration$/, async () => { - await completeCapturedTurn('otel-policy-b', 'otel-policy-second', await setPolicy('otel-policy-b')); - }); - allowUnconsumedResponses = true; + await completeCapturedTurn('otel-policy-b', 'otel-policy-second', await setPolicy('otel-policy-b')); }); test('new sessions honor changed managed telemetry after restarting', async function () { @@ -211,14 +204,12 @@ 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', COPILOT_OTEL_FILE_EXPORTER_PATH: exportFile, OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT: 'true', - // Keep SDK batching comfortably inside the file-export polling budget. - OTEL_BSP_SCHEDULE_DELAY: '100', }, }); }); diff --git a/src/vs/platform/agentHost/test/node/modelRequestProjection.test.ts b/src/vs/platform/agentHost/test/node/modelRequestProjection.test.ts index 16dc525be2f5b9..efbfa64d1c2f8e 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