diff --git a/extensions/copilot/package-lock.json b/extensions/copilot/package-lock.json index 394b8dbcd09..e7b122547ef 100644 --- a/extensions/copilot/package-lock.json +++ b/extensions/copilot/package-lock.json @@ -13,7 +13,7 @@ "@anthropic-ai/claude-agent-sdk": "0.2.112", "@anthropic-ai/sdk": "^0.82.0", "@github/blackbird-external-ingest-utils": "^0.3.0", - "@github/copilot": "^1.0.28", + "@github/copilot": "^1.0.34", "@google/genai": "^1.22.0", "@humanwhocodes/gitignore-to-minimatch": "1.0.2", "@microsoft/tiktokenizer": "^1.0.10", @@ -3203,26 +3203,26 @@ "license": "MIT" }, "node_modules/@github/copilot": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.28.tgz", - "integrity": "sha512-S1Y+KnhywjIsK1DzskoCqPVC3uURohvCRyDkGPWXvMw+lXO5ryOJvHFZDDw7MSRjT7ea7T0m8e3yKdK0OxJhnw==", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.34.tgz", + "integrity": "sha512-jFYulj1v00b3j43Er9+WwhZ/XldGq7+gti2s2pRhrdPwYEd1PMvscDZwRa/1iUBz/XQ5HUGac1tD8P7+VUpWjg==", "license": "SEE LICENSE IN LICENSE.md", "bin": { "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.28", - "@github/copilot-darwin-x64": "1.0.28", - "@github/copilot-linux-arm64": "1.0.28", - "@github/copilot-linux-x64": "1.0.28", - "@github/copilot-win32-arm64": "1.0.28", - "@github/copilot-win32-x64": "1.0.28" + "@github/copilot-darwin-arm64": "1.0.34", + "@github/copilot-darwin-x64": "1.0.34", + "@github/copilot-linux-arm64": "1.0.34", + "@github/copilot-linux-x64": "1.0.34", + "@github/copilot-win32-arm64": "1.0.34", + "@github/copilot-win32-x64": "1.0.34" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.28.tgz", - "integrity": "sha512-Bkis5dkOsdgaK95j/8mgIGSxHlRuL211Wa3S4MeeYGrilZweaG20sa0jktzagL6XFxfPRKBC87E+fDFyXz1L3g==", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.34.tgz", + "integrity": "sha512-g94EhSLd3a6fckZ6xb/zP2DZJZEx7kONWdOoDiHXUtSqc4RiZ7OBq1EwT4WrPY1lsmy9sioJIcZSGzJd0C1M7Q==", "cpu": [ "arm64" ], @@ -3236,9 +3236,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.28.tgz", - "integrity": "sha512-0RIabmr05KgPPUcD4kpKNBGg/eRwJF2NrYtibDUCIRFWKZu7q0m9c9EURpW0wOO32cXZtAQ+BmJIGlqfCkt6gA==", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.34.tgz", + "integrity": "sha512-tIgFEZV0ohCF/VgTODJWre3xURsvEd+6IPN/HPKWxG6AXtJOxzjlr5kLYYdPHdNlHNmSxGQw8fWsN2FZ4nyDdw==", "cpu": [ "x64" ], @@ -3252,9 +3252,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.28.tgz", - "integrity": "sha512-A/zQ4ifN+FSSEHdPHajv5UwygS5BOQ8l1AJMYdVBnnuqVX9bCcRAJJ4S/F60AnaDimzDvVuYSe3lYXRYxz3M5A==", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.34.tgz", + "integrity": "sha512-feqjEetrlqBUhYskIsPmwACQOWO99cvRpKwIFl3OlEjWoj+//HA7yXh49UIe0gD8wQUI8hy05uVz3K2/xti2nQ==", "cpu": [ "arm64" ], @@ -3268,9 +3268,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.28.tgz", - "integrity": "sha512-0VqoW9hj7qKj+eH2un9E7zn9AbassTZHkKQPsd8yPvLsmPaNJgsHMYDrCCNZNol2ZSGt/XskTfmWQaQM6BoBfg==", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.34.tgz", + "integrity": "sha512-3l0rZZqmceklHizJaaO+Iy2PsAZpVZS9Mn9VYnVcY/8Yzt4Y2hmXSFcKVfc4l+JlhFsPs7trhMdIkfwkjaKPLg==", "cpu": [ "x64" ], @@ -3284,9 +3284,9 @@ } }, "node_modules/@github/copilot-win32-arm64": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.28.tgz", - "integrity": "sha512-f28NKudBtIXTpIliHGJbRhEfCItsXKWNzXzgqgmP8FZB+JYrqG/ysU2qCUCxhpv3PLjMLWqnsWs+mIvVLTH9zw==", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.34.tgz", + "integrity": "sha512-06kEJO3iyohmAqF4iIbOxOfWLFSIpLDJ1L1oEHRtouMrH2Ll1wrUjsoQT1gXgBOv7rifl25qx/Avx5zKqvuORw==", "cpu": [ "arm64" ], @@ -3300,9 +3300,9 @@ } }, "node_modules/@github/copilot-win32-x64": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.28.tgz", - "integrity": "sha512-b9ZEx2i5P7DZTP66FXTfwf81r5kbAqs2GEJjDdevCwxH7cRexqM9eBxQGj1zGtm4qXF7JGK2eH6Ay7NC28m1Iw==", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.34.tgz", + "integrity": "sha512-QLL8pS4q2TTyQbClEXxqXtQGPr4lk+pwc8hPMUL7iw7HGDOvs1WCLMT1ZSDPPcxSrTnR/dURX5za1NMA8uF/fw==", "cpu": [ "x64" ], diff --git a/extensions/copilot/package.json b/extensions/copilot/package.json index c7e64badcda..8525cd4b5cb 100644 --- a/extensions/copilot/package.json +++ b/extensions/copilot/package.json @@ -6438,7 +6438,7 @@ "@anthropic-ai/claude-agent-sdk": "0.2.112", "@anthropic-ai/sdk": "^0.82.0", "@github/blackbird-external-ingest-utils": "^0.3.0", - "@github/copilot": "^1.0.28", + "@github/copilot": "^1.0.34", "@google/genai": "^1.22.0", "@humanwhocodes/gitignore-to-minimatch": "1.0.2", "@microsoft/tiktokenizer": "^1.0.10", diff --git a/extensions/copilot/src/extension/chatSessions/copilotcli/node/copilotcliSessionService.ts b/extensions/copilot/src/extension/chatSessions/copilotcli/node/copilotcliSessionService.ts index 5b323ae8137..3d670a8797f 100644 --- a/extensions/copilot/src/extension/chatSessions/copilotcli/node/copilotcliSessionService.ts +++ b/extensions/copilot/src/extension/chatSessions/copilotcli/node/copilotcliSessionService.ts @@ -178,7 +178,7 @@ export class CopilotCLISessionService extends Disposable implements ICopilotCLIS this.monitorSessionFiles(); this._sessionManager = new Lazy>(async () => { try { - const { internal, createLocalFeatureFlagService } = await this.getSDKPackage(); + const { internal, createLocalFeatureFlagService, AutoModeSessionManager } = await this.getSDKPackage(); // Always enable SDK OTel so the debug panel receives native spans via the bridge. // When user OTel is disabled, we force file exporter to /dev/null so the SDK // creates OtelSessionTracker (for debug panel) but doesn't export to any collector. @@ -210,6 +210,7 @@ export class CopilotCLISessionService extends Disposable implements ICopilotCLIS return new internal.LocalSessionManager({ featureFlagService: createLocalFeatureFlagService(), telemetryService: new internal.NoopTelemetryService(), + autoModeManager: new AutoModeSessionManager(), }, { flushDebounceMs: undefined, settings: undefined, version: undefined }); } catch (error) { @@ -221,8 +222,8 @@ export class CopilotCLISessionService extends Disposable implements ICopilotCLIS } private async getSDKPackage() { - const { internal, LocalSession, createLocalFeatureFlagService } = await this.copilotCLISDK.getPackage(); - return { internal, LocalSession, createLocalFeatureFlagService }; + const { internal, LocalSession, createLocalFeatureFlagService, AutoModeSessionManager } = await this.copilotCLISDK.getPackage(); + return { internal, LocalSession, createLocalFeatureFlagService, AutoModeSessionManager }; } getSessionWorkingDirectory(sessionId: string): Uri | undefined { diff --git a/extensions/copilot/src/extension/chatSessions/copilotcli/node/test/copilotCliSessionService.spec.ts b/extensions/copilot/src/extension/chatSessions/copilotcli/node/test/copilotCliSessionService.spec.ts index d5018b35e17..f41992be205 100644 --- a/extensions/copilot/src/extension/chatSessions/copilotcli/node/test/copilotCliSessionService.spec.ts +++ b/extensions/copilot/src/extension/chatSessions/copilotcli/node/test/copilotCliSessionService.spec.ts @@ -15,9 +15,11 @@ import { NullChatDebugFileLoggerService } from '../../../../../platform/chat/com import { IConfigurationService } from '../../../../../platform/configuration/common/configurationService'; import { NullNativeEnvService } from '../../../../../platform/env/common/nullEnvService'; import { MockFileSystemService } from '../../../../../platform/filesystem/node/test/mockFileSystemService'; +import { MockGitService } from '../../../../../platform/ignore/node/test/mockGitService'; import { ILogService } from '../../../../../platform/log/common/logService'; import { NullMcpService } from '../../../../../platform/mcp/common/mcpService'; import { NoopOTelService, resolveOTelConfig } from '../../../../../platform/otel/common/index'; +import { MockPromptsService } from '../../../../../platform/promptFiles/test/common/mockPromptsService'; import { NullRequestLogger } from '../../../../../platform/requestLogger/node/nullRequestLogger'; import { NullWorkspaceService } from '../../../../../platform/workspace/common/workspaceService'; import { mock } from '../../../../../util/common/test/simpleMock'; @@ -41,8 +43,6 @@ import { CopilotCLISessionService, CopilotCLISessionWorkspaceTracker, ICopilotCL import { CopilotCLIMCPHandler } from '../mcpHandler'; import { IQuestion, IQuestionAnswer, IUserQuestionHandler } from '../userInputHelpers'; import { MockCliSdkSession, MockCliSdkSessionManager, MockSkillLocations, NullCopilotCLIAgents, NullICopilotCLIImageSupport } from './testHelpers'; -import { MockPromptsService } from '../../../../../platform/promptFiles/test/common/mockPromptsService'; -import { MockGitService } from '../../../../../platform/ignore/node/test/mockGitService'; // Re-export for backward compatibility with other spec files export { MockCliSdkSession, MockCliSdkSessionManager, MockSkillLocations, NullCopilotCLIAgents, NullICopilotCLIImageSupport } from './testHelpers'; @@ -108,7 +108,7 @@ describe('CopilotCLISessionService', () => { beforeEach(async () => { vi.useRealTimers(); const sdk = { - getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), noopTelemetryBinder: {} })), + getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), AutoModeSessionManager: class { }, noopTelemetryBinder: {} })), getRequestId: vi.fn(() => undefined), } as unknown as ICopilotCLISDK; @@ -341,7 +341,7 @@ describe('CopilotCLISessionService', () => { const sessionDir = URI.file(getCopilotCLISessionDir(sessionId)); const fileSystem = new MockFileSystemService(); const sdk = { - getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), noopTelemetryBinder: {} })) + getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), AutoModeSessionManager: class { }, noopTelemetryBinder: {} })) } as unknown as ICopilotCLISDK; const services = createExtensionUnitTestingServices(); disposables.add(services); @@ -380,7 +380,7 @@ describe('CopilotCLISessionService', () => { const sessionDir = URI.file(getCopilotCLISessionDir(sessionId)); const fileSystem = new MockFileSystemService(); const sdk = { - getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), noopTelemetryBinder: {} })) + getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), AutoModeSessionManager: class { }, noopTelemetryBinder: {} })) } as unknown as ICopilotCLISDK; const services = createExtensionUnitTestingServices(); disposables.add(services); @@ -445,7 +445,7 @@ describe('CopilotCLISessionService', () => { const sessionDir = URI.file(getCopilotCLISessionDir(sessionId)); const fileSystem = new MockFileSystemService(); const sdk = { - getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), noopTelemetryBinder: {} })) + getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), AutoModeSessionManager: class { }, noopTelemetryBinder: {} })) } as unknown as ICopilotCLISDK; const services = createExtensionUnitTestingServices(); disposables.add(services); @@ -491,7 +491,7 @@ describe('CopilotCLISessionService', () => { const sessionDir = URI.file(getCopilotCLISessionDir(sessionId)); const fileSystem = new MockFileSystemService(); const sdk = { - getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), noopTelemetryBinder: {} })) + getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), AutoModeSessionManager: class { }, noopTelemetryBinder: {} })) } as unknown as ICopilotCLISDK; const services = createExtensionUnitTestingServices(); disposables.add(services); @@ -755,7 +755,7 @@ describe('CopilotCLISessionService', () => { const storeMetadataSpy = vi.spyOn(metadataStore, 'storeForkedSessionMetadata'); const sdk = { - getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), noopTelemetryBinder: {} })), + getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), AutoModeSessionManager: class { }, noopTelemetryBinder: {} })), getRequestId: vi.fn(() => undefined), } as unknown as ICopilotCLISDK; const services = disposables.add(createExtensionUnitTestingServices()); @@ -796,7 +796,7 @@ describe('CopilotCLISessionService', () => { manager.sessions.set(sourceId, sdkSession); const sdk = { - getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), noopTelemetryBinder: {} })), + getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, LocalSession: MockLocalSession, createLocalFeatureFlagService: () => ({}), AutoModeSessionManager: class { }, noopTelemetryBinder: {} })), getRequestId: vi.fn(() => ({ vscodeRequestId: 'vsc-req-1', copilotRequestId: 'sdk-event-1' })), } as unknown as ICopilotCLISDK; const services = disposables.add(createExtensionUnitTestingServices()); diff --git a/extensions/copilot/src/extension/chatSessions/vscode-node/test/copilotCLIChatSessionParticipant.spec.ts b/extensions/copilot/src/extension/chatSessions/vscode-node/test/copilotCLIChatSessionParticipant.spec.ts index 0279cc044e1..e190394cec3 100644 --- a/extensions/copilot/src/extension/chatSessions/vscode-node/test/copilotCLIChatSessionParticipant.spec.ts +++ b/extensions/copilot/src/extension/chatSessions/vscode-node/test/copilotCLIChatSessionParticipant.spec.ts @@ -327,7 +327,7 @@ describe('CopilotCLIChatSessionParticipant.handleRequest', () => { } }); sdk = { - getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, createLocalFeatureFlagService: () => ({}), noopTelemetryBinder: {} })), + getPackage: vi.fn(async () => ({ internal: { LocalSessionManager: MockCliSdkSessionManager, NoopTelemetryService: class { } }, createLocalFeatureFlagService: () => ({}), AutoModeSessionManager: class { }, noopTelemetryBinder: {} })), getAuthInfo: vi.fn(async () => ({ type: 'token' as const, token: 'valid-token', host: 'https://github.com' })), } as unknown as ICopilotCLISDK; const services = disposables.add(createExtensionUnitTestingServices());