Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/chatSessions/claude/node/claudeRuntimeDataService.ts
13405 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import type { AgentInfo, Query } from '@anthropic-ai/claude-agent-sdk';
7
import { ILogService } from '../../../../platform/log/common/logService';
8
import { Emitter } from '../../../../util/vs/base/common/event';
9
import { Disposable } from '../../../../util/vs/base/common/lifecycle';
10
import { IClaudeRuntimeDataService } from '../common/claudeRuntimeDataService';
11
12
export class ClaudeRuntimeDataService extends Disposable implements IClaudeRuntimeDataService {
13
declare readonly _serviceBrand: undefined;
14
15
private readonly _onDidChange = this._register(new Emitter<void>());
16
readonly onDidChange = this._onDidChange.event;
17
18
private _agents: readonly AgentInfo[] = [];
19
20
constructor(
21
@ILogService private readonly logService: ILogService,
22
) {
23
super();
24
}
25
26
getAgents(): readonly AgentInfo[] {
27
return this._agents;
28
}
29
30
async update(query: Query): Promise<void> {
31
try {
32
this._agents = await query.supportedAgents();
33
this.logService.trace(`[ClaudeRuntimeDataService] Cached ${this._agents.length} agents`);
34
} catch (err) {
35
this.logService.error('[ClaudeRuntimeDataService] Failed to query agents from SDK', err);
36
// Keep previous cache (or empty) on error
37
}
38
this._onDidChange.fire();
39
}
40
}
41
42