@aituber-onair/chat 0.31.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +76 -4
- package/README.md +87 -7
- package/dist/cjs/services/providers/agent/ClaudeAgentSDKChatService.d.ts +39 -0
- package/dist/cjs/services/providers/agent/ClaudeAgentSDKChatService.d.ts.map +1 -0
- package/dist/cjs/services/providers/agent/ClaudeAgentSDKChatService.js +103 -0
- package/dist/cjs/services/providers/agent/ClaudeAgentSDKChatService.js.map +1 -0
- package/dist/cjs/services/providers/agent/ClaudeAgentSDKChatServiceProvider.d.ts +14 -0
- package/dist/cjs/services/providers/agent/ClaudeAgentSDKChatServiceProvider.d.ts.map +1 -0
- package/dist/cjs/services/providers/agent/ClaudeAgentSDKChatServiceProvider.js +31 -0
- package/dist/cjs/services/providers/agent/ClaudeAgentSDKChatServiceProvider.js.map +1 -0
- package/dist/cjs/services/providers/agent/index.d.ts +8 -3
- package/dist/cjs/services/providers/agent/index.d.ts.map +1 -1
- package/dist/cjs/services/providers/agent/index.js +9 -2
- package/dist/cjs/services/providers/agent/index.js.map +1 -1
- package/dist/esm/services/providers/agent/ClaudeAgentSDKChatService.d.ts +39 -0
- package/dist/esm/services/providers/agent/ClaudeAgentSDKChatService.d.ts.map +1 -0
- package/dist/esm/services/providers/agent/ClaudeAgentSDKChatService.js +99 -0
- package/dist/esm/services/providers/agent/ClaudeAgentSDKChatService.js.map +1 -0
- package/dist/esm/services/providers/agent/ClaudeAgentSDKChatServiceProvider.d.ts +14 -0
- package/dist/esm/services/providers/agent/ClaudeAgentSDKChatServiceProvider.d.ts.map +1 -0
- package/dist/esm/services/providers/agent/ClaudeAgentSDKChatServiceProvider.js +27 -0
- package/dist/esm/services/providers/agent/ClaudeAgentSDKChatServiceProvider.js.map +1 -0
- package/dist/esm/services/providers/agent/index.d.ts +8 -3
- package/dist/esm/services/providers/agent/index.d.ts.map +1 -1
- package/dist/esm/services/providers/agent/index.js +5 -1
- package/dist/esm/services/providers/agent/index.js.map +1 -1
- package/package.json +1 -1
package/README.ja.md
CHANGED
|
@@ -91,7 +91,7 @@ async function testChat() {
|
|
|
91
91
|
|
|
92
92
|
## Agent SDKプロバイダー
|
|
93
93
|
|
|
94
|
-
Codex SDK
|
|
94
|
+
Codex SDK、Claude Agent SDK、Copilot SDK のようなエージェントSDKを使う場合は、
|
|
95
95
|
専用の `@aituber-onair/chat/agent` エントリを使用します。
|
|
96
96
|
|
|
97
97
|
```typescript
|
|
@@ -104,6 +104,8 @@ import { createAgentChatService } from '@aituber-onair/chat/agent';
|
|
|
104
104
|
```bash
|
|
105
105
|
npm install @aituber-onair/chat @openai/codex-sdk
|
|
106
106
|
# または
|
|
107
|
+
npm install @aituber-onair/chat @anthropic-ai/claude-agent-sdk
|
|
108
|
+
# または
|
|
107
109
|
npm install @aituber-onair/chat @github/copilot-sdk
|
|
108
110
|
```
|
|
109
111
|
|
|
@@ -136,6 +138,40 @@ const response = await chatService.chatOnce(messages, false);
|
|
|
136
138
|
console.log(response);
|
|
137
139
|
```
|
|
138
140
|
|
|
141
|
+
Claude Agent SDK を使う場合:
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
import { createAgentChatService } from '@aituber-onair/chat/agent';
|
|
145
|
+
|
|
146
|
+
const chatService = createAgentChatService('claude-agent-sdk', {
|
|
147
|
+
workingDirectory: process.cwd(),
|
|
148
|
+
maxTurns: 1,
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
const messages = [
|
|
152
|
+
{
|
|
153
|
+
role: 'system',
|
|
154
|
+
content:
|
|
155
|
+
'あなたはライブ配信中のAIアバターです。親しみやすく短めに返答してください。',
|
|
156
|
+
},
|
|
157
|
+
{ role: 'user', content: '今日はTypeScriptのライブラリを作っています。' },
|
|
158
|
+
{
|
|
159
|
+
role: 'assistant',
|
|
160
|
+
content: 'いいですね。作業の合間に、会話で少し気分転換しましょう。',
|
|
161
|
+
},
|
|
162
|
+
{ role: 'user', content: '夜の作業に合う飲み物をおすすめして。' },
|
|
163
|
+
];
|
|
164
|
+
|
|
165
|
+
const response = await chatService.chatOnce(messages, false);
|
|
166
|
+
|
|
167
|
+
console.log(response);
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
このプロバイダーでは、Claude Agent SDK を通常のチャット応答生成にだけ使います。
|
|
171
|
+
既定では Claude Code のファイル操作やコマンド実行などのツール機能は使いません。
|
|
172
|
+
2026年6月15日以降、対象の有料 Claude プランでは Agent SDK 用の月間クレジットを
|
|
173
|
+
利用できます。APIキーを使う Developer Platform の利用は従来通り従量課金です。
|
|
174
|
+
|
|
139
175
|
Copilot SDK を使う場合:
|
|
140
176
|
|
|
141
177
|
```typescript
|
|
@@ -256,7 +292,7 @@ const localCompatibleService = ChatServiceFactory.createChatService(
|
|
|
256
292
|
|
|
257
293
|
#### Agent SDKプロバイダー
|
|
258
294
|
|
|
259
|
-
`@aituber-onair/chat/agent` は、Codex SDK
|
|
295
|
+
`@aituber-onair/chat/agent` は、Codex SDK、Claude Agent SDK、Copilot SDK のような
|
|
260
296
|
エージェントSDK向けの実験的なプロバイダーを公開します。ブラウザ/GAS向けUMDエントリには
|
|
261
297
|
含まれず、APIキーも使用しません。
|
|
262
298
|
|
|
@@ -265,11 +301,13 @@ const localCompatibleService = ChatServiceFactory.createChatService(
|
|
|
265
301
|
```bash
|
|
266
302
|
npm install @aituber-onair/chat @openai/codex-sdk
|
|
267
303
|
# または
|
|
304
|
+
npm install @aituber-onair/chat @anthropic-ai/claude-agent-sdk
|
|
305
|
+
# または
|
|
268
306
|
npm install @aituber-onair/chat @github/copilot-sdk
|
|
269
307
|
```
|
|
270
308
|
|
|
271
|
-
`@openai/codex-sdk
|
|
272
|
-
|
|
309
|
+
`@openai/codex-sdk`、`@anthropic-ai/claude-agent-sdk`、`@github/copilot-sdk` は
|
|
310
|
+
`@aituber-onair/chat` の依存関係には含めていません。SDK は動的に読み込むため、通常の API
|
|
273
311
|
プロバイダーだけを使うユーザーはこれらのエージェントSDKパッケージをインストールする
|
|
274
312
|
必要がありません。
|
|
275
313
|
|
|
@@ -300,6 +338,39 @@ const result = await codexService.chatOnce(messages, false, (text) =>
|
|
|
300
338
|
);
|
|
301
339
|
```
|
|
302
340
|
|
|
341
|
+
Claude Agent SDK を使う場合は `claude-agent-sdk` を指定します。
|
|
342
|
+
|
|
343
|
+
```typescript
|
|
344
|
+
import { createAgentChatService } from '@aituber-onair/chat/agent';
|
|
345
|
+
|
|
346
|
+
const claudeService = createAgentChatService('claude-agent-sdk', {
|
|
347
|
+
workingDirectory: process.cwd(),
|
|
348
|
+
maxTurns: 1,
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
const messages = [
|
|
352
|
+
{
|
|
353
|
+
role: 'system',
|
|
354
|
+
content:
|
|
355
|
+
'あなたはライブ配信中のAIアバターです。視聴者との自然な会話を続けてください。',
|
|
356
|
+
},
|
|
357
|
+
{ role: 'user', content: '最近、個人開発の進め方で悩んでいます。' },
|
|
358
|
+
{
|
|
359
|
+
role: 'assistant',
|
|
360
|
+
content: '無理なく続けられる形を一緒に考えましょう。',
|
|
361
|
+
},
|
|
362
|
+
{ role: 'user', content: '今日は何から手をつけるのが良さそう?' },
|
|
363
|
+
];
|
|
364
|
+
|
|
365
|
+
const result = await claudeService.chatOnce(messages, false, (text) =>
|
|
366
|
+
process.stdout.write(text),
|
|
367
|
+
);
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
Claude Agent SDK は既定で `tools: []`、`permissionMode: 'dontAsk'`、
|
|
371
|
+
`settingSources: []` を指定し、Claude Code のファイル操作・コマンド実行や
|
|
372
|
+
プロジェクト/ユーザー設定を使わずにチャット応答を生成します。
|
|
373
|
+
|
|
303
374
|
Copilot SDK を使う場合は `copilot-sdk` を指定します。
|
|
304
375
|
|
|
305
376
|
```typescript
|
|
@@ -342,6 +413,7 @@ const copilotService = createAgentChatService('copilot-sdk', {
|
|
|
342
413
|
|
|
343
414
|
利用可能なプロバイダー:
|
|
344
415
|
- `codex-sdk`: `@openai/codex-sdk` と Codex 認証が必要です。
|
|
416
|
+
- `claude-agent-sdk`: `@anthropic-ai/claude-agent-sdk` と Claude Agent SDK 認証が必要です。
|
|
345
417
|
- `copilot-sdk`: `@github/copilot-sdk` と GitHub Copilot 認証が必要です。
|
|
346
418
|
|
|
347
419
|
現時点の制限:
|
package/README.md
CHANGED
|
@@ -91,8 +91,8 @@ Notes:
|
|
|
91
91
|
|
|
92
92
|
## Agent SDK Providers
|
|
93
93
|
|
|
94
|
-
For agent SDKs such as Codex SDK and Copilot SDK, use the
|
|
95
|
-
`@aituber-onair/chat/agent` entry point:
|
|
94
|
+
For agent SDKs such as Codex SDK, Claude Agent SDK, and Copilot SDK, use the
|
|
95
|
+
separate `@aituber-onair/chat/agent` entry point:
|
|
96
96
|
|
|
97
97
|
```typescript
|
|
98
98
|
import { createAgentChatService } from '@aituber-onair/chat/agent';
|
|
@@ -104,6 +104,8 @@ dynamically, so install only the agent SDK package used by your JavaScript runti
|
|
|
104
104
|
```bash
|
|
105
105
|
npm install @aituber-onair/chat @openai/codex-sdk
|
|
106
106
|
# or
|
|
107
|
+
npm install @aituber-onair/chat @anthropic-ai/claude-agent-sdk
|
|
108
|
+
# or
|
|
107
109
|
npm install @aituber-onair/chat @github/copilot-sdk
|
|
108
110
|
```
|
|
109
111
|
|
|
@@ -139,6 +141,43 @@ const response = await chatService.chatOnce(messages, false);
|
|
|
139
141
|
console.log(response);
|
|
140
142
|
```
|
|
141
143
|
|
|
144
|
+
For Claude Agent SDK:
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
import { createAgentChatService } from '@aituber-onair/chat/agent';
|
|
148
|
+
|
|
149
|
+
const chatService = createAgentChatService('claude-agent-sdk', {
|
|
150
|
+
workingDirectory: process.cwd(),
|
|
151
|
+
maxTurns: 1,
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
const messages = [
|
|
155
|
+
{
|
|
156
|
+
role: 'system',
|
|
157
|
+
content:
|
|
158
|
+
'You are a friendly AI avatar for a live chat. Reply warmly and concisely.',
|
|
159
|
+
},
|
|
160
|
+
{ role: 'user', content: 'I am working on a TypeScript library tonight.' },
|
|
161
|
+
{
|
|
162
|
+
role: 'assistant',
|
|
163
|
+
content: 'Nice. I can keep the conversation light while you work.',
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
role: 'user',
|
|
167
|
+
content: 'What drink would you recommend for a late-night coding session?',
|
|
168
|
+
},
|
|
169
|
+
];
|
|
170
|
+
|
|
171
|
+
const response = await chatService.chatOnce(messages, false);
|
|
172
|
+
|
|
173
|
+
console.log(response);
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Claude Agent SDK is run as a text-chat provider with built-in tools disabled by
|
|
177
|
+
default. Eligible Claude subscription plans can use Agent SDK monthly credits
|
|
178
|
+
starting June 15, 2026; API-key based Developer Platform usage remains
|
|
179
|
+
pay-as-you-go.
|
|
180
|
+
|
|
142
181
|
For Copilot SDK:
|
|
143
182
|
|
|
144
183
|
```typescript
|
|
@@ -262,20 +301,23 @@ Notes:
|
|
|
262
301
|
#### Agent SDK Providers
|
|
263
302
|
|
|
264
303
|
`@aituber-onair/chat/agent` exposes experimental providers for agent SDKs such
|
|
265
|
-
as Codex SDK and Copilot SDK. These providers are not
|
|
266
|
-
browser/GAS UMD entry point and do not use API keys.
|
|
304
|
+
as Codex SDK, Claude Agent SDK, and Copilot SDK. These providers are not
|
|
305
|
+
included in the browser/GAS UMD entry point and do not use API keys.
|
|
267
306
|
|
|
268
307
|
Install only the agent SDK package you actually use in your JavaScript runtime application:
|
|
269
308
|
|
|
270
309
|
```bash
|
|
271
310
|
npm install @aituber-onair/chat @openai/codex-sdk
|
|
272
311
|
# or
|
|
312
|
+
npm install @aituber-onair/chat @anthropic-ai/claude-agent-sdk
|
|
313
|
+
# or
|
|
273
314
|
npm install @aituber-onair/chat @github/copilot-sdk
|
|
274
315
|
```
|
|
275
316
|
|
|
276
|
-
`@openai/codex-sdk
|
|
277
|
-
`@aituber-onair/chat`. They are
|
|
278
|
-
normal API providers do not
|
|
317
|
+
`@openai/codex-sdk`, `@anthropic-ai/claude-agent-sdk`, and
|
|
318
|
+
`@github/copilot-sdk` are not dependencies of `@aituber-onair/chat`. They are
|
|
319
|
+
loaded dynamically, so users who only use the normal API providers do not
|
|
320
|
+
install these agent SDK packages.
|
|
279
321
|
|
|
280
322
|
```typescript
|
|
281
323
|
import { createAgentChatService } from '@aituber-onair/chat/agent';
|
|
@@ -307,6 +349,43 @@ const result = await codexService.chatOnce(messages, false, (text) =>
|
|
|
307
349
|
);
|
|
308
350
|
```
|
|
309
351
|
|
|
352
|
+
For Claude Agent SDK, use `claude-agent-sdk`.
|
|
353
|
+
|
|
354
|
+
```typescript
|
|
355
|
+
import { createAgentChatService } from '@aituber-onair/chat/agent';
|
|
356
|
+
|
|
357
|
+
const claudeService = createAgentChatService('claude-agent-sdk', {
|
|
358
|
+
workingDirectory: process.cwd(),
|
|
359
|
+
maxTurns: 1,
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
const messages = [
|
|
363
|
+
{
|
|
364
|
+
role: 'system',
|
|
365
|
+
content:
|
|
366
|
+
'You are a friendly AI avatar for a live chat. Keep a natural conversation going.',
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
role: 'user',
|
|
370
|
+
content: 'I am thinking about how to keep a side project moving.',
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
role: 'assistant',
|
|
374
|
+
content: 'Let us make it feel manageable and easy to restart.',
|
|
375
|
+
},
|
|
376
|
+
{ role: 'user', content: 'What should I work on first today?' },
|
|
377
|
+
];
|
|
378
|
+
|
|
379
|
+
const result = await claudeService.chatOnce(messages, false, (text) =>
|
|
380
|
+
process.stdout.write(text),
|
|
381
|
+
);
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
Claude Agent SDK is configured with `tools: []`, `permissionMode: 'dontAsk'`,
|
|
385
|
+
and `settingSources: []` by default so this provider behaves as text chat and
|
|
386
|
+
does not load Claude Code project/user settings unless the implementation is
|
|
387
|
+
expanded later.
|
|
388
|
+
|
|
310
389
|
For Copilot SDK, use `copilot-sdk`.
|
|
311
390
|
|
|
312
391
|
```typescript
|
|
@@ -352,6 +431,7 @@ const copilotService = createAgentChatService('copilot-sdk', {
|
|
|
352
431
|
|
|
353
432
|
Available providers:
|
|
354
433
|
- `codex-sdk`: requires `@openai/codex-sdk` and Codex authentication.
|
|
434
|
+
- `claude-agent-sdk`: requires `@anthropic-ai/claude-agent-sdk` and Claude Agent SDK authentication.
|
|
355
435
|
- `copilot-sdk`: requires `@github/copilot-sdk` and GitHub Copilot authentication.
|
|
356
436
|
|
|
357
437
|
Current limitations:
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ChatResponseLength } from '../../../constants';
|
|
2
|
+
import { AgentTextChatService } from './shared';
|
|
3
|
+
export declare const DEFAULT_CLAUDE_AGENT_SDK_MODEL = "claude-default";
|
|
4
|
+
type ClaudeAgentSDKModule = {
|
|
5
|
+
query: (params: {
|
|
6
|
+
prompt: string;
|
|
7
|
+
options?: Record<string, unknown>;
|
|
8
|
+
}) => AsyncIterable<ClaudeAgentSDKMessage>;
|
|
9
|
+
};
|
|
10
|
+
type ClaudeAgentSDKMessage = {
|
|
11
|
+
type: 'result';
|
|
12
|
+
is_error?: boolean;
|
|
13
|
+
result?: unknown;
|
|
14
|
+
errors?: unknown;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'stream_event';
|
|
17
|
+
event?: {
|
|
18
|
+
type?: string;
|
|
19
|
+
delta?: {
|
|
20
|
+
type?: string;
|
|
21
|
+
text?: unknown;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
} | Record<string, unknown>;
|
|
25
|
+
export type ClaudeAgentSDKLoader = () => Promise<ClaudeAgentSDKModule>;
|
|
26
|
+
export type ClaudeAgentSDKChatServiceOptions = {
|
|
27
|
+
apiKey?: never;
|
|
28
|
+
model?: string;
|
|
29
|
+
responseLength?: ChatResponseLength;
|
|
30
|
+
workingDirectory?: string;
|
|
31
|
+
maxTurns?: number;
|
|
32
|
+
pathToClaudeCodeExecutable?: string;
|
|
33
|
+
env?: Record<string, string | undefined>;
|
|
34
|
+
};
|
|
35
|
+
export declare class ClaudeAgentSDKChatService extends AgentTextChatService {
|
|
36
|
+
constructor(options?: ClaudeAgentSDKChatServiceOptions, loadSDK?: ClaudeAgentSDKLoader);
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=ClaudeAgentSDKChatService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeAgentSDKChatService.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/ClaudeAgentSDKChatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAA0B,MAAM,UAAU,CAAC;AAExE,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAE/D,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,CAAC,MAAM,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,KAAK,aAAa,CAAC,qBAAqB,CAAC,CAAC;CAC5C,CAAC;AAEF,KAAK,qBAAqB,GACtB;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,OAAO,CAAC;SAChB,CAAC;KACH,CAAC;CACH,GACD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAEvE,MAAM,MAAM,gCAAgC,GAAG;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C,CAAC;AAEF,qBAAa,yBAA0B,SAAQ,oBAAoB;gBAE/D,OAAO,GAAE,gCAAqC,EAC9C,OAAO,GAAE,oBAAyC;CAyBrD"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClaudeAgentSDKChatService = exports.DEFAULT_CLAUDE_AGENT_SDK_MODEL = void 0;
|
|
4
|
+
const shared_1 = require("./shared");
|
|
5
|
+
exports.DEFAULT_CLAUDE_AGENT_SDK_MODEL = 'claude-default';
|
|
6
|
+
class ClaudeAgentSDKChatService extends shared_1.AgentTextChatService {
|
|
7
|
+
constructor(options = {}, loadSDK = loadClaudeAgentSDK) {
|
|
8
|
+
const model = options.model ?? exports.DEFAULT_CLAUDE_AGENT_SDK_MODEL;
|
|
9
|
+
super({
|
|
10
|
+
provider: 'claude-agent-sdk',
|
|
11
|
+
model,
|
|
12
|
+
defaultModel: exports.DEFAULT_CLAUDE_AGENT_SDK_MODEL,
|
|
13
|
+
responseLength: options.responseLength,
|
|
14
|
+
getResponse: async (prompt, stream, onPartialResponse) => {
|
|
15
|
+
try {
|
|
16
|
+
return await runClaudeAgentPrompt(loadSDK, model, options, prompt, stream, onPartialResponse);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
throw (0, shared_1.wrapAgentProviderError)('claude-agent-sdk', error);
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.ClaudeAgentSDKChatService = ClaudeAgentSDKChatService;
|
|
26
|
+
async function runClaudeAgentPrompt(loadSDK, model, options, prompt, stream, onPartialResponse) {
|
|
27
|
+
const { query } = await loadSDK();
|
|
28
|
+
let finalText = '';
|
|
29
|
+
let streamedText = '';
|
|
30
|
+
const queryOptions = {
|
|
31
|
+
tools: [],
|
|
32
|
+
permissionMode: 'dontAsk',
|
|
33
|
+
settingSources: [],
|
|
34
|
+
...(options.model ? { model } : {}),
|
|
35
|
+
...(options.workingDirectory ? { cwd: options.workingDirectory } : {}),
|
|
36
|
+
...(options.maxTurns !== undefined ? { maxTurns: options.maxTurns } : {}),
|
|
37
|
+
...(options.pathToClaudeCodeExecutable
|
|
38
|
+
? { pathToClaudeCodeExecutable: options.pathToClaudeCodeExecutable }
|
|
39
|
+
: {}),
|
|
40
|
+
...(options.env ? { env: options.env } : {}),
|
|
41
|
+
...(stream ? { includePartialMessages: true } : {}),
|
|
42
|
+
};
|
|
43
|
+
for await (const message of query({ prompt, options: queryOptions })) {
|
|
44
|
+
const delta = extractTextDelta(message);
|
|
45
|
+
if (stream && delta) {
|
|
46
|
+
streamedText += delta;
|
|
47
|
+
onPartialResponse(delta);
|
|
48
|
+
}
|
|
49
|
+
if (isResultMessage(message)) {
|
|
50
|
+
if (message.is_error) {
|
|
51
|
+
throw new Error(formatClaudeAgentResultError(message.errors));
|
|
52
|
+
}
|
|
53
|
+
if (typeof message.result === 'string') {
|
|
54
|
+
finalText = message.result;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (!finalText) {
|
|
59
|
+
throw new Error('claude-agent-sdk provider received an empty response.');
|
|
60
|
+
}
|
|
61
|
+
if (stream && streamedText === '') {
|
|
62
|
+
onPartialResponse(finalText);
|
|
63
|
+
}
|
|
64
|
+
return finalText;
|
|
65
|
+
}
|
|
66
|
+
function extractTextDelta(message) {
|
|
67
|
+
if (!isStreamEventMessage(message)) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
const delta = message.event?.delta;
|
|
71
|
+
if (delta?.type === 'text_delta' && typeof delta.text === 'string') {
|
|
72
|
+
return delta.text;
|
|
73
|
+
}
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
function isStreamEventMessage(message) {
|
|
77
|
+
return message.type === 'stream_event';
|
|
78
|
+
}
|
|
79
|
+
function isResultMessage(message) {
|
|
80
|
+
return message.type === 'result';
|
|
81
|
+
}
|
|
82
|
+
function formatClaudeAgentResultError(errors) {
|
|
83
|
+
if (Array.isArray(errors) && errors.length > 0) {
|
|
84
|
+
return errors
|
|
85
|
+
.map((error) => (typeof error === 'string' ? error : String(error)))
|
|
86
|
+
.join('\n');
|
|
87
|
+
}
|
|
88
|
+
return 'claude-agent-sdk provider failed during execution.';
|
|
89
|
+
}
|
|
90
|
+
async function loadClaudeAgentSDK() {
|
|
91
|
+
try {
|
|
92
|
+
return (await dynamicImport('@anthropic-ai/claude-agent-sdk'));
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
const message = 'claude-agent-sdk provider requires @anthropic-ai/claude-agent-sdk. ' +
|
|
96
|
+
'Install it in your JavaScript runtime project and authenticate with Claude Agent SDK.';
|
|
97
|
+
const wrappedError = new Error(message);
|
|
98
|
+
wrappedError.cause = error;
|
|
99
|
+
throw wrappedError;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
103
|
+
//# sourceMappingURL=ClaudeAgentSDKChatService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeAgentSDKChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/ClaudeAgentSDKChatService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ChatService } from '../../ChatService';
|
|
2
|
+
import { ChatServiceProvider, VisionSupportLevel } from '../ChatServiceProvider';
|
|
3
|
+
import { ClaudeAgentSDKChatServiceOptions, ClaudeAgentSDKLoader } from './ClaudeAgentSDKChatService';
|
|
4
|
+
export declare class ClaudeAgentSDKChatServiceProvider implements ChatServiceProvider<ClaudeAgentSDKChatServiceOptions> {
|
|
5
|
+
private loadSDK?;
|
|
6
|
+
constructor(loadSDK?: ClaudeAgentSDKLoader | undefined);
|
|
7
|
+
createChatService(options: ClaudeAgentSDKChatServiceOptions): ChatService;
|
|
8
|
+
getProviderName(): string;
|
|
9
|
+
getSupportedModels(): string[];
|
|
10
|
+
getDefaultModel(): string;
|
|
11
|
+
supportsVision(): boolean;
|
|
12
|
+
getVisionSupportLevel(): VisionSupportLevel;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ClaudeAgentSDKChatServiceProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeAgentSDKChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/ClaudeAgentSDKChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,gCAAgC,EAChC,oBAAoB,EAErB,MAAM,6BAA6B,CAAC;AAGrC,qBAAa,iCACX,YAAW,mBAAmB,CAAC,gCAAgC,CAAC;IAEpD,OAAO,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,oBAAoB,YAAA;IAElD,iBAAiB,CAAC,OAAO,EAAE,gCAAgC,GAAG,WAAW;IAKzE,eAAe,IAAI,MAAM;IAIzB,kBAAkB,IAAI,MAAM,EAAE;IAI9B,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,OAAO;IAIzB,qBAAqB,IAAI,kBAAkB;CAG5C"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClaudeAgentSDKChatServiceProvider = void 0;
|
|
4
|
+
const ClaudeAgentSDKChatService_1 = require("./ClaudeAgentSDKChatService");
|
|
5
|
+
const shared_1 = require("./shared");
|
|
6
|
+
class ClaudeAgentSDKChatServiceProvider {
|
|
7
|
+
constructor(loadSDK) {
|
|
8
|
+
this.loadSDK = loadSDK;
|
|
9
|
+
}
|
|
10
|
+
createChatService(options) {
|
|
11
|
+
(0, shared_1.rejectUnsupportedAgentOptions)(this.getProviderName(), options);
|
|
12
|
+
return new ClaudeAgentSDKChatService_1.ClaudeAgentSDKChatService(options, this.loadSDK);
|
|
13
|
+
}
|
|
14
|
+
getProviderName() {
|
|
15
|
+
return 'claude-agent-sdk';
|
|
16
|
+
}
|
|
17
|
+
getSupportedModels() {
|
|
18
|
+
return [ClaudeAgentSDKChatService_1.DEFAULT_CLAUDE_AGENT_SDK_MODEL];
|
|
19
|
+
}
|
|
20
|
+
getDefaultModel() {
|
|
21
|
+
return ClaudeAgentSDKChatService_1.DEFAULT_CLAUDE_AGENT_SDK_MODEL;
|
|
22
|
+
}
|
|
23
|
+
supportsVision() {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
getVisionSupportLevel() {
|
|
27
|
+
return 'unsupported';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.ClaudeAgentSDKChatServiceProvider = ClaudeAgentSDKChatServiceProvider;
|
|
31
|
+
//# sourceMappingURL=ClaudeAgentSDKChatServiceProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeAgentSDKChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/ClaudeAgentSDKChatServiceProvider.ts"],"names":[],"mappings":";;;AAKA,2EAKqC;AACrC,qCAAyD;AAEzD,MAAa,iCAAiC;IAG5C,YAAoB,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;IAAG,CAAC;IAEtD,iBAAiB,CAAC,OAAyC;QACzD,IAAA,sCAA6B,EAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,IAAI,qDAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,eAAe;QACb,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,kBAAkB;QAChB,OAAO,CAAC,0DAA8B,CAAC,CAAC;IAC1C,CAAC;IAED,eAAe;QACb,OAAO,0DAA8B,CAAC;IACxC,CAAC;IAED,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB;QACnB,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AA7BD,8EA6BC"}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { ChatService } from '../../ChatService';
|
|
2
|
+
import { ClaudeAgentSDKChatServiceOptions, ClaudeAgentSDKLoader } from './ClaudeAgentSDKChatService';
|
|
2
3
|
import { CodexSDKChatServiceOptions, CodexSDKLoader } from './CodexSDKChatService';
|
|
3
4
|
import { CopilotSDKChatServiceOptions, CopilotSDKLoader } from './CopilotSDKChatService';
|
|
5
|
+
export { ClaudeAgentSDKChatService, DEFAULT_CLAUDE_AGENT_SDK_MODEL, type ClaudeAgentSDKChatServiceOptions, type ClaudeAgentSDKLoader, } from './ClaudeAgentSDKChatService';
|
|
6
|
+
export { ClaudeAgentSDKChatServiceProvider } from './ClaudeAgentSDKChatServiceProvider';
|
|
4
7
|
export { CodexSDKChatService, DEFAULT_CODEX_SDK_MODEL, type CodexSDKChatServiceOptions, type CodexSDKLoader, } from './CodexSDKChatService';
|
|
5
8
|
export { CodexSDKChatServiceProvider } from './CodexSDKChatServiceProvider';
|
|
6
9
|
export { CopilotSDKChatService, DEFAULT_COPILOT_SDK_MODEL, type CopilotSDKChatServiceOptions, type CopilotSDKLoader, } from './CopilotSDKChatService';
|
|
7
10
|
export { CopilotSDKChatServiceProvider } from './CopilotSDKChatServiceProvider';
|
|
8
|
-
export type AgentChatProviderName = '
|
|
11
|
+
export type AgentChatProviderName = 'codex-sdk' | 'claude-agent-sdk' | 'copilot-sdk';
|
|
9
12
|
export type AgentChatServiceOptionsByProvider = {
|
|
10
|
-
'copilot-sdk': CopilotSDKChatServiceOptions;
|
|
11
13
|
'codex-sdk': CodexSDKChatServiceOptions;
|
|
14
|
+
'claude-agent-sdk': ClaudeAgentSDKChatServiceOptions;
|
|
15
|
+
'copilot-sdk': CopilotSDKChatServiceOptions;
|
|
12
16
|
};
|
|
13
17
|
export type RegisterAgentChatProvidersOptions = {
|
|
14
|
-
copilotSDKLoader?: CopilotSDKLoader;
|
|
15
18
|
codexSDKLoader?: CodexSDKLoader;
|
|
19
|
+
claudeAgentSDKLoader?: ClaudeAgentSDKLoader;
|
|
20
|
+
copilotSDKLoader?: CopilotSDKLoader;
|
|
16
21
|
};
|
|
17
22
|
export declare function registerAgentChatProviders(options?: RegisterAgentChatProvidersOptions): void;
|
|
18
23
|
export declare function createAgentChatService<TProvider extends AgentChatProviderName>(providerName: TProvider, options: AgentChatServiceOptionsByProvider[TProvider]): ChatService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,OAAO,EACL,gCAAgC,EAChC,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,KAAK,gCAAgC,EACrC,KAAK,oBAAoB,GAC1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,kBAAkB,GAClB,aAAa,CAAC;AAElB,MAAM,MAAM,iCAAiC,GAAG;IAC9C,WAAW,EAAE,0BAA0B,CAAC;IACxC,kBAAkB,EAAE,gCAAgC,CAAC;IACrD,aAAa,EAAE,4BAA4B,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,iCAAsC,GAC9C,IAAI,CAUN;AAED,wBAAgB,sBAAsB,CAAC,SAAS,SAAS,qBAAqB,EAC5E,YAAY,EAAE,SAAS,EACvB,OAAO,EAAE,iCAAiC,CAAC,SAAS,CAAC,GACpD,WAAW,CAKb"}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CopilotSDKChatServiceProvider = exports.DEFAULT_COPILOT_SDK_MODEL = exports.CopilotSDKChatService = exports.CodexSDKChatServiceProvider = exports.DEFAULT_CODEX_SDK_MODEL = exports.CodexSDKChatService = void 0;
|
|
3
|
+
exports.CopilotSDKChatServiceProvider = exports.DEFAULT_COPILOT_SDK_MODEL = exports.CopilotSDKChatService = exports.CodexSDKChatServiceProvider = exports.DEFAULT_CODEX_SDK_MODEL = exports.CodexSDKChatService = exports.ClaudeAgentSDKChatServiceProvider = exports.DEFAULT_CLAUDE_AGENT_SDK_MODEL = exports.ClaudeAgentSDKChatService = void 0;
|
|
4
4
|
exports.registerAgentChatProviders = registerAgentChatProviders;
|
|
5
5
|
exports.createAgentChatService = createAgentChatService;
|
|
6
6
|
const ChatServiceFactory_1 = require("../../ChatServiceFactory");
|
|
7
|
+
const ClaudeAgentSDKChatServiceProvider_1 = require("./ClaudeAgentSDKChatServiceProvider");
|
|
7
8
|
const CodexSDKChatServiceProvider_1 = require("./CodexSDKChatServiceProvider");
|
|
8
9
|
const CopilotSDKChatServiceProvider_1 = require("./CopilotSDKChatServiceProvider");
|
|
10
|
+
var ClaudeAgentSDKChatService_1 = require("./ClaudeAgentSDKChatService");
|
|
11
|
+
Object.defineProperty(exports, "ClaudeAgentSDKChatService", { enumerable: true, get: function () { return ClaudeAgentSDKChatService_1.ClaudeAgentSDKChatService; } });
|
|
12
|
+
Object.defineProperty(exports, "DEFAULT_CLAUDE_AGENT_SDK_MODEL", { enumerable: true, get: function () { return ClaudeAgentSDKChatService_1.DEFAULT_CLAUDE_AGENT_SDK_MODEL; } });
|
|
13
|
+
var ClaudeAgentSDKChatServiceProvider_2 = require("./ClaudeAgentSDKChatServiceProvider");
|
|
14
|
+
Object.defineProperty(exports, "ClaudeAgentSDKChatServiceProvider", { enumerable: true, get: function () { return ClaudeAgentSDKChatServiceProvider_2.ClaudeAgentSDKChatServiceProvider; } });
|
|
9
15
|
var CodexSDKChatService_1 = require("./CodexSDKChatService");
|
|
10
16
|
Object.defineProperty(exports, "CodexSDKChatService", { enumerable: true, get: function () { return CodexSDKChatService_1.CodexSDKChatService; } });
|
|
11
17
|
Object.defineProperty(exports, "DEFAULT_CODEX_SDK_MODEL", { enumerable: true, get: function () { return CodexSDKChatService_1.DEFAULT_CODEX_SDK_MODEL; } });
|
|
@@ -17,8 +23,9 @@ Object.defineProperty(exports, "DEFAULT_COPILOT_SDK_MODEL", { enumerable: true,
|
|
|
17
23
|
var CopilotSDKChatServiceProvider_2 = require("./CopilotSDKChatServiceProvider");
|
|
18
24
|
Object.defineProperty(exports, "CopilotSDKChatServiceProvider", { enumerable: true, get: function () { return CopilotSDKChatServiceProvider_2.CopilotSDKChatServiceProvider; } });
|
|
19
25
|
function registerAgentChatProviders(options = {}) {
|
|
20
|
-
ChatServiceFactory_1.ChatServiceFactory.registerProvider(new CopilotSDKChatServiceProvider_1.CopilotSDKChatServiceProvider(options.copilotSDKLoader));
|
|
21
26
|
ChatServiceFactory_1.ChatServiceFactory.registerProvider(new CodexSDKChatServiceProvider_1.CodexSDKChatServiceProvider(options.codexSDKLoader));
|
|
27
|
+
ChatServiceFactory_1.ChatServiceFactory.registerProvider(new ClaudeAgentSDKChatServiceProvider_1.ClaudeAgentSDKChatServiceProvider(options.claudeAgentSDKLoader));
|
|
28
|
+
ChatServiceFactory_1.ChatServiceFactory.registerProvider(new CopilotSDKChatServiceProvider_1.CopilotSDKChatServiceProvider(options.copilotSDKLoader));
|
|
22
29
|
}
|
|
23
30
|
function createAgentChatService(providerName, options) {
|
|
24
31
|
return ChatServiceFactory_1.ChatServiceFactory.createChatService(providerName, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/index.ts"],"names":[],"mappings":";;;AAyDA,gEAYC;AAED,wDAQC;AA9ED,iEAA8D;AAC9D,2FAAwF;AACxF,+EAA4E;AAC5E,mFAAgF;AAchF,yEAKqC;AAJnC,sIAAA,yBAAyB,OAAA;AACzB,2IAAA,8BAA8B,OAAA;AAIhC,yFAAwF;AAA/E,sJAAA,iCAAiC,OAAA;AAC1C,6DAK+B;AAJ7B,0HAAA,mBAAmB,OAAA;AACnB,8HAAA,uBAAuB,OAAA;AAIzB,6EAA4E;AAAnE,0IAAA,2BAA2B,OAAA;AACpC,iEAKiC;AAJ/B,8HAAA,qBAAqB,OAAA;AACrB,kIAAA,yBAAyB,OAAA;AAI3B,iFAAgF;AAAvE,8IAAA,6BAA6B,OAAA;AAmBtC,SAAgB,0BAA0B,CACxC,UAA6C,EAAE;IAE/C,uCAAkB,CAAC,gBAAgB,CACjC,IAAI,yDAA2B,CAAC,OAAO,CAAC,cAAc,CAAC,CACxD,CAAC;IACF,uCAAkB,CAAC,gBAAgB,CACjC,IAAI,qEAAiC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CACpE,CAAC;IACF,uCAAkB,CAAC,gBAAgB,CACjC,IAAI,6DAA6B,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED,SAAgB,sBAAsB,CACpC,YAAuB,EACvB,OAAqD;IAErD,OAAO,uCAAkB,CAAC,iBAAiB,CACzC,YAAmB,EACnB,OAAyC,CAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ChatResponseLength } from '../../../constants';
|
|
2
|
+
import { AgentTextChatService } from './shared';
|
|
3
|
+
export declare const DEFAULT_CLAUDE_AGENT_SDK_MODEL = "claude-default";
|
|
4
|
+
type ClaudeAgentSDKModule = {
|
|
5
|
+
query: (params: {
|
|
6
|
+
prompt: string;
|
|
7
|
+
options?: Record<string, unknown>;
|
|
8
|
+
}) => AsyncIterable<ClaudeAgentSDKMessage>;
|
|
9
|
+
};
|
|
10
|
+
type ClaudeAgentSDKMessage = {
|
|
11
|
+
type: 'result';
|
|
12
|
+
is_error?: boolean;
|
|
13
|
+
result?: unknown;
|
|
14
|
+
errors?: unknown;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'stream_event';
|
|
17
|
+
event?: {
|
|
18
|
+
type?: string;
|
|
19
|
+
delta?: {
|
|
20
|
+
type?: string;
|
|
21
|
+
text?: unknown;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
} | Record<string, unknown>;
|
|
25
|
+
export type ClaudeAgentSDKLoader = () => Promise<ClaudeAgentSDKModule>;
|
|
26
|
+
export type ClaudeAgentSDKChatServiceOptions = {
|
|
27
|
+
apiKey?: never;
|
|
28
|
+
model?: string;
|
|
29
|
+
responseLength?: ChatResponseLength;
|
|
30
|
+
workingDirectory?: string;
|
|
31
|
+
maxTurns?: number;
|
|
32
|
+
pathToClaudeCodeExecutable?: string;
|
|
33
|
+
env?: Record<string, string | undefined>;
|
|
34
|
+
};
|
|
35
|
+
export declare class ClaudeAgentSDKChatService extends AgentTextChatService {
|
|
36
|
+
constructor(options?: ClaudeAgentSDKChatServiceOptions, loadSDK?: ClaudeAgentSDKLoader);
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=ClaudeAgentSDKChatService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeAgentSDKChatService.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/ClaudeAgentSDKChatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAA0B,MAAM,UAAU,CAAC;AAExE,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAE/D,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,CAAC,MAAM,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,KAAK,aAAa,CAAC,qBAAqB,CAAC,CAAC;CAC5C,CAAC;AAEF,KAAK,qBAAqB,GACtB;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,OAAO,CAAC;SAChB,CAAC;KACH,CAAC;CACH,GACD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAEvE,MAAM,MAAM,gCAAgC,GAAG;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C,CAAC;AAEF,qBAAa,yBAA0B,SAAQ,oBAAoB;gBAE/D,OAAO,GAAE,gCAAqC,EAC9C,OAAO,GAAE,oBAAyC;CAyBrD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { AgentTextChatService, wrapAgentProviderError } from './shared';
|
|
2
|
+
export const DEFAULT_CLAUDE_AGENT_SDK_MODEL = 'claude-default';
|
|
3
|
+
export class ClaudeAgentSDKChatService extends AgentTextChatService {
|
|
4
|
+
constructor(options = {}, loadSDK = loadClaudeAgentSDK) {
|
|
5
|
+
const model = options.model ?? DEFAULT_CLAUDE_AGENT_SDK_MODEL;
|
|
6
|
+
super({
|
|
7
|
+
provider: 'claude-agent-sdk',
|
|
8
|
+
model,
|
|
9
|
+
defaultModel: DEFAULT_CLAUDE_AGENT_SDK_MODEL,
|
|
10
|
+
responseLength: options.responseLength,
|
|
11
|
+
getResponse: async (prompt, stream, onPartialResponse) => {
|
|
12
|
+
try {
|
|
13
|
+
return await runClaudeAgentPrompt(loadSDK, model, options, prompt, stream, onPartialResponse);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
throw wrapAgentProviderError('claude-agent-sdk', error);
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function runClaudeAgentPrompt(loadSDK, model, options, prompt, stream, onPartialResponse) {
|
|
23
|
+
const { query } = await loadSDK();
|
|
24
|
+
let finalText = '';
|
|
25
|
+
let streamedText = '';
|
|
26
|
+
const queryOptions = {
|
|
27
|
+
tools: [],
|
|
28
|
+
permissionMode: 'dontAsk',
|
|
29
|
+
settingSources: [],
|
|
30
|
+
...(options.model ? { model } : {}),
|
|
31
|
+
...(options.workingDirectory ? { cwd: options.workingDirectory } : {}),
|
|
32
|
+
...(options.maxTurns !== undefined ? { maxTurns: options.maxTurns } : {}),
|
|
33
|
+
...(options.pathToClaudeCodeExecutable
|
|
34
|
+
? { pathToClaudeCodeExecutable: options.pathToClaudeCodeExecutable }
|
|
35
|
+
: {}),
|
|
36
|
+
...(options.env ? { env: options.env } : {}),
|
|
37
|
+
...(stream ? { includePartialMessages: true } : {}),
|
|
38
|
+
};
|
|
39
|
+
for await (const message of query({ prompt, options: queryOptions })) {
|
|
40
|
+
const delta = extractTextDelta(message);
|
|
41
|
+
if (stream && delta) {
|
|
42
|
+
streamedText += delta;
|
|
43
|
+
onPartialResponse(delta);
|
|
44
|
+
}
|
|
45
|
+
if (isResultMessage(message)) {
|
|
46
|
+
if (message.is_error) {
|
|
47
|
+
throw new Error(formatClaudeAgentResultError(message.errors));
|
|
48
|
+
}
|
|
49
|
+
if (typeof message.result === 'string') {
|
|
50
|
+
finalText = message.result;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (!finalText) {
|
|
55
|
+
throw new Error('claude-agent-sdk provider received an empty response.');
|
|
56
|
+
}
|
|
57
|
+
if (stream && streamedText === '') {
|
|
58
|
+
onPartialResponse(finalText);
|
|
59
|
+
}
|
|
60
|
+
return finalText;
|
|
61
|
+
}
|
|
62
|
+
function extractTextDelta(message) {
|
|
63
|
+
if (!isStreamEventMessage(message)) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
const delta = message.event?.delta;
|
|
67
|
+
if (delta?.type === 'text_delta' && typeof delta.text === 'string') {
|
|
68
|
+
return delta.text;
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
function isStreamEventMessage(message) {
|
|
73
|
+
return message.type === 'stream_event';
|
|
74
|
+
}
|
|
75
|
+
function isResultMessage(message) {
|
|
76
|
+
return message.type === 'result';
|
|
77
|
+
}
|
|
78
|
+
function formatClaudeAgentResultError(errors) {
|
|
79
|
+
if (Array.isArray(errors) && errors.length > 0) {
|
|
80
|
+
return errors
|
|
81
|
+
.map((error) => (typeof error === 'string' ? error : String(error)))
|
|
82
|
+
.join('\n');
|
|
83
|
+
}
|
|
84
|
+
return 'claude-agent-sdk provider failed during execution.';
|
|
85
|
+
}
|
|
86
|
+
async function loadClaudeAgentSDK() {
|
|
87
|
+
try {
|
|
88
|
+
return (await dynamicImport('@anthropic-ai/claude-agent-sdk'));
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
const message = 'claude-agent-sdk provider requires @anthropic-ai/claude-agent-sdk. ' +
|
|
92
|
+
'Install it in your JavaScript runtime project and authenticate with Claude Agent SDK.';
|
|
93
|
+
const wrappedError = new Error(message);
|
|
94
|
+
wrappedError.cause = error;
|
|
95
|
+
throw wrappedError;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
99
|
+
//# sourceMappingURL=ClaudeAgentSDKChatService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeAgentSDKChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/ClaudeAgentSDKChatService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ChatService } from '../../ChatService';
|
|
2
|
+
import { ChatServiceProvider, VisionSupportLevel } from '../ChatServiceProvider';
|
|
3
|
+
import { ClaudeAgentSDKChatServiceOptions, ClaudeAgentSDKLoader } from './ClaudeAgentSDKChatService';
|
|
4
|
+
export declare class ClaudeAgentSDKChatServiceProvider implements ChatServiceProvider<ClaudeAgentSDKChatServiceOptions> {
|
|
5
|
+
private loadSDK?;
|
|
6
|
+
constructor(loadSDK?: ClaudeAgentSDKLoader | undefined);
|
|
7
|
+
createChatService(options: ClaudeAgentSDKChatServiceOptions): ChatService;
|
|
8
|
+
getProviderName(): string;
|
|
9
|
+
getSupportedModels(): string[];
|
|
10
|
+
getDefaultModel(): string;
|
|
11
|
+
supportsVision(): boolean;
|
|
12
|
+
getVisionSupportLevel(): VisionSupportLevel;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ClaudeAgentSDKChatServiceProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeAgentSDKChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/ClaudeAgentSDKChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,gCAAgC,EAChC,oBAAoB,EAErB,MAAM,6BAA6B,CAAC;AAGrC,qBAAa,iCACX,YAAW,mBAAmB,CAAC,gCAAgC,CAAC;IAEpD,OAAO,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,oBAAoB,YAAA;IAElD,iBAAiB,CAAC,OAAO,EAAE,gCAAgC,GAAG,WAAW;IAKzE,eAAe,IAAI,MAAM;IAIzB,kBAAkB,IAAI,MAAM,EAAE;IAI9B,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,OAAO;IAIzB,qBAAqB,IAAI,kBAAkB;CAG5C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ClaudeAgentSDKChatService, DEFAULT_CLAUDE_AGENT_SDK_MODEL, } from './ClaudeAgentSDKChatService';
|
|
2
|
+
import { rejectUnsupportedAgentOptions } from './shared';
|
|
3
|
+
export class ClaudeAgentSDKChatServiceProvider {
|
|
4
|
+
constructor(loadSDK) {
|
|
5
|
+
this.loadSDK = loadSDK;
|
|
6
|
+
}
|
|
7
|
+
createChatService(options) {
|
|
8
|
+
rejectUnsupportedAgentOptions(this.getProviderName(), options);
|
|
9
|
+
return new ClaudeAgentSDKChatService(options, this.loadSDK);
|
|
10
|
+
}
|
|
11
|
+
getProviderName() {
|
|
12
|
+
return 'claude-agent-sdk';
|
|
13
|
+
}
|
|
14
|
+
getSupportedModels() {
|
|
15
|
+
return [DEFAULT_CLAUDE_AGENT_SDK_MODEL];
|
|
16
|
+
}
|
|
17
|
+
getDefaultModel() {
|
|
18
|
+
return DEFAULT_CLAUDE_AGENT_SDK_MODEL;
|
|
19
|
+
}
|
|
20
|
+
supportsVision() {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
getVisionSupportLevel() {
|
|
24
|
+
return 'unsupported';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ClaudeAgentSDKChatServiceProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeAgentSDKChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/ClaudeAgentSDKChatServiceProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,yBAAyB,EAGzB,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAEzD,MAAM,OAAO,iCAAiC;IAG5C,YAAoB,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;IAAG,CAAC;IAEtD,iBAAiB,CAAC,OAAyC;QACzD,6BAA6B,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,IAAI,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,eAAe;QACb,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,kBAAkB;QAChB,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC1C,CAAC;IAED,eAAe;QACb,OAAO,8BAA8B,CAAC;IACxC,CAAC;IAED,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB;QACnB,OAAO,aAAa,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { ChatService } from '../../ChatService';
|
|
2
|
+
import { ClaudeAgentSDKChatServiceOptions, ClaudeAgentSDKLoader } from './ClaudeAgentSDKChatService';
|
|
2
3
|
import { CodexSDKChatServiceOptions, CodexSDKLoader } from './CodexSDKChatService';
|
|
3
4
|
import { CopilotSDKChatServiceOptions, CopilotSDKLoader } from './CopilotSDKChatService';
|
|
5
|
+
export { ClaudeAgentSDKChatService, DEFAULT_CLAUDE_AGENT_SDK_MODEL, type ClaudeAgentSDKChatServiceOptions, type ClaudeAgentSDKLoader, } from './ClaudeAgentSDKChatService';
|
|
6
|
+
export { ClaudeAgentSDKChatServiceProvider } from './ClaudeAgentSDKChatServiceProvider';
|
|
4
7
|
export { CodexSDKChatService, DEFAULT_CODEX_SDK_MODEL, type CodexSDKChatServiceOptions, type CodexSDKLoader, } from './CodexSDKChatService';
|
|
5
8
|
export { CodexSDKChatServiceProvider } from './CodexSDKChatServiceProvider';
|
|
6
9
|
export { CopilotSDKChatService, DEFAULT_COPILOT_SDK_MODEL, type CopilotSDKChatServiceOptions, type CopilotSDKLoader, } from './CopilotSDKChatService';
|
|
7
10
|
export { CopilotSDKChatServiceProvider } from './CopilotSDKChatServiceProvider';
|
|
8
|
-
export type AgentChatProviderName = '
|
|
11
|
+
export type AgentChatProviderName = 'codex-sdk' | 'claude-agent-sdk' | 'copilot-sdk';
|
|
9
12
|
export type AgentChatServiceOptionsByProvider = {
|
|
10
|
-
'copilot-sdk': CopilotSDKChatServiceOptions;
|
|
11
13
|
'codex-sdk': CodexSDKChatServiceOptions;
|
|
14
|
+
'claude-agent-sdk': ClaudeAgentSDKChatServiceOptions;
|
|
15
|
+
'copilot-sdk': CopilotSDKChatServiceOptions;
|
|
12
16
|
};
|
|
13
17
|
export type RegisterAgentChatProvidersOptions = {
|
|
14
|
-
copilotSDKLoader?: CopilotSDKLoader;
|
|
15
18
|
codexSDKLoader?: CodexSDKLoader;
|
|
19
|
+
claudeAgentSDKLoader?: ClaudeAgentSDKLoader;
|
|
20
|
+
copilotSDKLoader?: CopilotSDKLoader;
|
|
16
21
|
};
|
|
17
22
|
export declare function registerAgentChatProviders(options?: RegisterAgentChatProvidersOptions): void;
|
|
18
23
|
export declare function createAgentChatService<TProvider extends AgentChatProviderName>(providerName: TProvider, options: AgentChatServiceOptionsByProvider[TProvider]): ChatService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,OAAO,EACL,gCAAgC,EAChC,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,KAAK,gCAAgC,EACrC,KAAK,oBAAoB,GAC1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,kBAAkB,GAClB,aAAa,CAAC;AAElB,MAAM,MAAM,iCAAiC,GAAG;IAC9C,WAAW,EAAE,0BAA0B,CAAC;IACxC,kBAAkB,EAAE,gCAAgC,CAAC;IACrD,aAAa,EAAE,4BAA4B,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,iCAAsC,GAC9C,IAAI,CAUN;AAED,wBAAgB,sBAAsB,CAAC,SAAS,SAAS,qBAAqB,EAC5E,YAAY,EAAE,SAAS,EACvB,OAAO,EAAE,iCAAiC,CAAC,SAAS,CAAC,GACpD,WAAW,CAKb"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { ChatServiceFactory } from '../../ChatServiceFactory';
|
|
2
|
+
import { ClaudeAgentSDKChatServiceProvider } from './ClaudeAgentSDKChatServiceProvider';
|
|
2
3
|
import { CodexSDKChatServiceProvider } from './CodexSDKChatServiceProvider';
|
|
3
4
|
import { CopilotSDKChatServiceProvider } from './CopilotSDKChatServiceProvider';
|
|
5
|
+
export { ClaudeAgentSDKChatService, DEFAULT_CLAUDE_AGENT_SDK_MODEL, } from './ClaudeAgentSDKChatService';
|
|
6
|
+
export { ClaudeAgentSDKChatServiceProvider } from './ClaudeAgentSDKChatServiceProvider';
|
|
4
7
|
export { CodexSDKChatService, DEFAULT_CODEX_SDK_MODEL, } from './CodexSDKChatService';
|
|
5
8
|
export { CodexSDKChatServiceProvider } from './CodexSDKChatServiceProvider';
|
|
6
9
|
export { CopilotSDKChatService, DEFAULT_COPILOT_SDK_MODEL, } from './CopilotSDKChatService';
|
|
7
10
|
export { CopilotSDKChatServiceProvider } from './CopilotSDKChatServiceProvider';
|
|
8
11
|
export function registerAgentChatProviders(options = {}) {
|
|
9
|
-
ChatServiceFactory.registerProvider(new CopilotSDKChatServiceProvider(options.copilotSDKLoader));
|
|
10
12
|
ChatServiceFactory.registerProvider(new CodexSDKChatServiceProvider(options.codexSDKLoader));
|
|
13
|
+
ChatServiceFactory.registerProvider(new ClaudeAgentSDKChatServiceProvider(options.claudeAgentSDKLoader));
|
|
14
|
+
ChatServiceFactory.registerProvider(new CopilotSDKChatServiceProvider(options.copilotSDKLoader));
|
|
11
15
|
}
|
|
12
16
|
export function createAgentChatService(providerName, options) {
|
|
13
17
|
return ChatServiceFactory.createChatService(providerName, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAchF,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAG/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAGxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAG1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAmBhF,MAAM,UAAU,0BAA0B,CACxC,UAA6C,EAAE;IAE/C,kBAAkB,CAAC,gBAAgB,CACjC,IAAI,2BAA2B,CAAC,OAAO,CAAC,cAAc,CAAC,CACxD,CAAC;IACF,kBAAkB,CAAC,gBAAgB,CACjC,IAAI,iCAAiC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CACpE,CAAC;IACF,kBAAkB,CAAC,gBAAgB,CACjC,IAAI,6BAA6B,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,YAAuB,EACvB,OAAqD;IAErD,OAAO,kBAAkB,CAAC,iBAAiB,CACzC,YAAmB,EACnB,OAAyC,CAC1C,CAAC;AACJ,CAAC"}
|