Path: blob/main/extensions/copilot/src/extension/chatSessions/claude/node/claudeRuntimeDataService.ts
13405 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import type { AgentInfo, Query } from '@anthropic-ai/claude-agent-sdk';6import { ILogService } from '../../../../platform/log/common/logService';7import { Emitter } from '../../../../util/vs/base/common/event';8import { Disposable } from '../../../../util/vs/base/common/lifecycle';9import { IClaudeRuntimeDataService } from '../common/claudeRuntimeDataService';1011export class ClaudeRuntimeDataService extends Disposable implements IClaudeRuntimeDataService {12declare readonly _serviceBrand: undefined;1314private readonly _onDidChange = this._register(new Emitter<void>());15readonly onDidChange = this._onDidChange.event;1617private _agents: readonly AgentInfo[] = [];1819constructor(20@ILogService private readonly logService: ILogService,21) {22super();23}2425getAgents(): readonly AgentInfo[] {26return this._agents;27}2829async update(query: Query): Promise<void> {30try {31this._agents = await query.supportedAgents();32this.logService.trace(`[ClaudeRuntimeDataService] Cached ${this._agents.length} agents`);33} catch (err) {34this.logService.error('[ClaudeRuntimeDataService] Failed to query agents from SDK', err);35// Keep previous cache (or empty) on error36}37this._onDidChange.fire();38}39}404142