@aituber-onair/chat 0.57.0 → 0.59.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.
Files changed (57) hide show
  1. package/README.ja.md +73 -11
  2. package/README.md +70 -10
  3. package/dist/cjs/backend.d.ts.map +1 -1
  4. package/dist/cjs/backend.js +1 -0
  5. package/dist/cjs/backend.js.map +1 -1
  6. package/dist/cjs/constants/claude.d.ts +1 -0
  7. package/dist/cjs/constants/claude.d.ts.map +1 -1
  8. package/dist/cjs/constants/claude.js +4 -1
  9. package/dist/cjs/constants/claude.js.map +1 -1
  10. package/dist/cjs/services/providers/agent/CursorSDKChatService.d.ts +70 -0
  11. package/dist/cjs/services/providers/agent/CursorSDKChatService.d.ts.map +1 -0
  12. package/dist/cjs/services/providers/agent/CursorSDKChatService.js +141 -0
  13. package/dist/cjs/services/providers/agent/CursorSDKChatService.js.map +1 -0
  14. package/dist/cjs/services/providers/agent/CursorSDKChatServiceProvider.d.ts +15 -0
  15. package/dist/cjs/services/providers/agent/CursorSDKChatServiceProvider.d.ts.map +1 -0
  16. package/dist/cjs/services/providers/agent/CursorSDKChatServiceProvider.js +34 -0
  17. package/dist/cjs/services/providers/agent/CursorSDKChatServiceProvider.js.map +1 -0
  18. package/dist/cjs/services/providers/agent/index.d.ts +6 -1
  19. package/dist/cjs/services/providers/agent/index.d.ts.map +1 -1
  20. package/dist/cjs/services/providers/agent/index.js +8 -1
  21. package/dist/cjs/services/providers/agent/index.js.map +1 -1
  22. package/dist/cjs/services/providers/agent/shared.d.ts +3 -1
  23. package/dist/cjs/services/providers/agent/shared.d.ts.map +1 -1
  24. package/dist/cjs/services/providers/agent/shared.js +7 -2
  25. package/dist/cjs/services/providers/agent/shared.js.map +1 -1
  26. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  27. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +1 -0
  28. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  29. package/dist/esm/backend.d.ts.map +1 -1
  30. package/dist/esm/backend.js +1 -0
  31. package/dist/esm/backend.js.map +1 -1
  32. package/dist/esm/constants/claude.d.ts +1 -0
  33. package/dist/esm/constants/claude.d.ts.map +1 -1
  34. package/dist/esm/constants/claude.js +3 -0
  35. package/dist/esm/constants/claude.js.map +1 -1
  36. package/dist/esm/services/providers/agent/CursorSDKChatService.d.ts +70 -0
  37. package/dist/esm/services/providers/agent/CursorSDKChatService.d.ts.map +1 -0
  38. package/dist/esm/services/providers/agent/CursorSDKChatService.js +137 -0
  39. package/dist/esm/services/providers/agent/CursorSDKChatService.js.map +1 -0
  40. package/dist/esm/services/providers/agent/CursorSDKChatServiceProvider.d.ts +15 -0
  41. package/dist/esm/services/providers/agent/CursorSDKChatServiceProvider.d.ts.map +1 -0
  42. package/dist/esm/services/providers/agent/CursorSDKChatServiceProvider.js +30 -0
  43. package/dist/esm/services/providers/agent/CursorSDKChatServiceProvider.js.map +1 -0
  44. package/dist/esm/services/providers/agent/index.d.ts +6 -1
  45. package/dist/esm/services/providers/agent/index.d.ts.map +1 -1
  46. package/dist/esm/services/providers/agent/index.js +4 -0
  47. package/dist/esm/services/providers/agent/index.js.map +1 -1
  48. package/dist/esm/services/providers/agent/shared.d.ts +3 -1
  49. package/dist/esm/services/providers/agent/shared.d.ts.map +1 -1
  50. package/dist/esm/services/providers/agent/shared.js +7 -2
  51. package/dist/esm/services/providers/agent/shared.js.map +1 -1
  52. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  53. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +2 -1
  54. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  55. package/dist/umd/aituber-onair-chat.js +9 -3
  56. package/dist/umd/aituber-onair-chat.min.js +7 -7
  57. package/package.json +1 -1
package/README.ja.md CHANGED
@@ -91,8 +91,9 @@ async function testChat() {
91
91
 
92
92
  ## Agent SDKプロバイダー
93
93
 
94
- Codex SDK、Claude Agent SDK、Copilot SDK のようなエージェントSDKを使う場合は、
95
- 専用の `@aituber-onair/chat/agent` エントリを使用します。
94
+ Codex SDK、Claude Agent SDK、Copilot SDK、Cursor SDK のような
95
+ エージェントSDKを使う場合は、専用の `@aituber-onair/chat/agent` エントリを
96
+ 使用します。
96
97
 
97
98
  ```typescript
98
99
  import { createAgentChatService } from '@aituber-onair/chat/agent';
@@ -107,6 +108,8 @@ npm install @aituber-onair/chat @openai/codex-sdk
107
108
  npm install @aituber-onair/chat @anthropic-ai/claude-agent-sdk
108
109
  # または
109
110
  npm install @aituber-onair/chat @github/copilot-sdk
111
+ # または(Node.js 22.13以上が必要)
112
+ npm install @aituber-onair/chat @cursor/sdk
110
113
  ```
111
114
 
112
115
  Codex SDK を使う最短例:
@@ -212,6 +215,32 @@ const chatService = createAgentChatService('copilot-sdk', {
212
215
  });
213
216
  ```
214
217
 
218
+ Cursor SDK を使う場合は、Node.js 22.13以上が必要です。
219
+
220
+ ```typescript
221
+ import { createAgentChatService } from '@aituber-onair/chat/agent';
222
+
223
+ const chatService = createAgentChatService('cursor-sdk', {
224
+ apiKey: process.env.CURSOR_API_KEY,
225
+ workingDirectory: process.cwd(),
226
+ });
227
+
228
+ const response = await chatService.chatOnce(
229
+ [{ role: 'user', content: '一文で挨拶して。' }],
230
+ false,
231
+ );
232
+
233
+ console.log(response);
234
+ ```
235
+
236
+ 認証には、セットアップ時に `Cursor.auth.login()` を一度実行する方法、
237
+ `CURSOR_API_KEY` を設定する方法、`apiKey` を渡す方法があります。Cursor CLI の
238
+ `agent login` では SDK の認証情報は作成されません。利用分は Cursor プランに
239
+ 請求されます。このプロバイダーは `tools: []` と `settingSources: []` を指定し、
240
+ tools、vision、MCP は使用しません。既定のモデルIDは、
241
+ `Cursor.models.list()` で Cursor の Auto として返される `default` です。
242
+ 別のモデルを使う場合は、`Cursor.models.list()` が返すIDを `model` に指定します。
243
+
215
244
  利用前に、各 SDK のローカル認証を済ませておく必要があります。SDK パッケージが
216
245
  未インストール、または認証が未完了の場合は、実行時に元の SDK エラー詳細を含む
217
246
  エラーを投げます。
@@ -305,9 +334,10 @@ const localCompatibleService = ChatServiceFactory.createChatService(
305
334
 
306
335
  #### Agent SDKプロバイダー
307
336
 
308
- `@aituber-onair/chat/agent` は、Codex SDK、Claude Agent SDK、Copilot SDK のような
309
- エージェントSDK向けの実験的なプロバイダーを公開します。ブラウザ/GAS向けUMDエントリには
310
- 含まれず、APIキーも使用しません。
337
+ `@aituber-onair/chat/agent` は、Codex SDK、Claude Agent SDK、Copilot SDK、
338
+ Cursor SDK のようなエージェントSDK向けの実験的なプロバイダーを公開します。
339
+ ブラウザ/GAS向けUMDエントリには含まれません。Cursor SDK では任意で APIキーを
340
+ 指定でき、ほかの Agent SDK プロバイダーは各 SDK のローカル認証を使用します。
311
341
 
312
342
  利用するエージェントSDKパッケージだけを、利用側の JavaScript ランタイムアプリに追加してください。
313
343
 
@@ -317,12 +347,14 @@ npm install @aituber-onair/chat @openai/codex-sdk
317
347
  npm install @aituber-onair/chat @anthropic-ai/claude-agent-sdk
318
348
  # または
319
349
  npm install @aituber-onair/chat @github/copilot-sdk
350
+ # または(Node.js 22.13以上が必要)
351
+ npm install @aituber-onair/chat @cursor/sdk
320
352
  ```
321
353
 
322
- `@openai/codex-sdk`、`@anthropic-ai/claude-agent-sdk`、`@github/copilot-sdk` は
323
- `@aituber-onair/chat` の依存関係には含めていません。SDK は動的に読み込むため、通常の API
324
- プロバイダーだけを使うユーザーはこれらのエージェントSDKパッケージをインストールする
325
- 必要がありません。
354
+ `@openai/codex-sdk`、`@anthropic-ai/claude-agent-sdk`、
355
+ `@github/copilot-sdk`、`@cursor/sdk` は `@aituber-onair/chat` の依存関係には
356
+ 含めていません。SDK は動的に読み込むため、通常の API プロバイダーだけを使う
357
+ ユーザーはこれらのエージェントSDKパッケージをインストールする必要がありません。
326
358
 
327
359
  ```typescript
328
360
  import { createAgentChatService } from '@aituber-onair/chat/agent';
@@ -424,10 +456,35 @@ const copilotService = createAgentChatService('copilot-sdk', {
424
456
  });
425
457
  ```
426
458
 
459
+ Cursor SDK を使う場合は `cursor-sdk` を指定します。Node.js 22.13以上が必要です。
460
+
461
+ ```typescript
462
+ import { createAgentChatService } from '@aituber-onair/chat/agent';
463
+
464
+ const cursorService = createAgentChatService('cursor-sdk', {
465
+ apiKey: process.env.CURSOR_API_KEY,
466
+ workingDirectory: process.cwd(),
467
+ });
468
+
469
+ const result = await cursorService.chatOnce(messages, false, (text) =>
470
+ process.stdout.write(text),
471
+ );
472
+ ```
473
+
474
+ 認証には、セットアップ時に `Cursor.auth.login()` を一度実行する方法、
475
+ `CURSOR_API_KEY` を設定する方法、`apiKey` を渡す方法があります。Cursor CLI の
476
+ `agent login` では SDK の認証情報は作成されません。利用分は Cursor プランに
477
+ 請求されます。このプロバイダーはローカルエージェントに `tools: []` と
478
+ `settingSources: []` を渡すため、tools、vision、MCP は使用できません。
479
+ `DEFAULT_CURSOR_SDK_MODEL` は `default` です。`Cursor.models.list()` では
480
+ Cursor の Auto として返されます。別のモデルを使う場合は、
481
+ `Cursor.models.list()` が返すIDを `model` に指定します。
482
+
427
483
  利用可能なプロバイダー:
428
484
  - `codex-sdk`: `@openai/codex-sdk` と Codex 認証が必要です。
429
485
  - `claude-agent-sdk`: `@anthropic-ai/claude-agent-sdk` と Claude Agent SDK 認証が必要です。
430
486
  - `copilot-sdk`: `@github/copilot-sdk` と GitHub Copilot 認証が必要です。
487
+ - `cursor-sdk`: `@cursor/sdk`、Node.js 22.13以上、Cursor SDK の認証またはAPIキーが必要です。
431
488
 
432
489
  現時点の制限:
433
490
  - テキストチャットのみ対応します。
@@ -615,10 +672,15 @@ const claudeService = ChatServiceFactory.createChatService('claude', {
615
672
  既定値にはしていません。Claude Opus 5 は adaptive thinking が既定で有効です。
616
673
  Opus 5.5 は画像入力に対応します。今回参照した資料ではモデル固有のeffort値を
617
674
  確認できなかったため、effortは指定せずAPI側の既定動作を使います。
675
+ `claude-sonnet-5-5`(`MODEL_CLAUDE_5_5_SONNET`)は Messages API の明示的な選択肢として、
676
+ 画像入力、streaming、自動ツール選択に対応します。既定で adaptive thinking が有効で、
677
+ effortは5段階すべてに対応します。強制ツール選択はAPIで拒否されますが、このパッケージは
678
+ 送信しません。継続時は返された `assistant_message` を会話履歴に保持してください。
679
+ [Migration guide](https://platform.claude.com/docs/en/models/sonnet-5-5/migration-guide)。
618
680
  対応するClaudeモデルでは `reasoning_effort` を指定でき、Anthropic APIの
619
681
  `output_config.effort` に変換されます。省略時のClaude API既定値は `high` です。
620
682
 
621
- - Claude Fable 5、Opus 5、Sonnet 5、Opus 4.8、Opus 4.7:
683
+ - Claude Fable 5、Opus 5、Sonnet 5.5、Sonnet 5、Opus 4.8、Opus 4.7:
622
684
  `low`、`medium`、`high`、`xhigh`、`max`
623
685
  - Claude Opus 4.6、Sonnet 4.6:
624
686
  `low`、`medium`、`high`、`max`
@@ -1354,7 +1416,7 @@ vision、JSON mode、reasoning 設定を使うべきかを provider 固有ロジ
1354
1416
  - **OpenAI**: GPT-6 Astra (`gpt-6-astra`)、GPT-6 Sol (`gpt-6-sol`)、GPT-6 Luna (`gpt-6-luna`, 既定でResponses API); GPT-5.6(Sol/Terra/Luna)、GPT-5.5、GPT-5.4 Pro、GPT-5.4、GPT-5.4 Mini、GPT-5.4 Nano、GPT-5.1、GPT-5(Nano/Mini/Standard)、GPT-4.1(miniとnanoを含む), GPT-4, GPT-4o-mini, O3-mini, o1, o1-miniのモデルをサポート
1355
1417
  - **OpenAI-Compatible**: OpenAI互換 endpoint 経由で任意のローカル/セルフホスト model ID を利用できます。vision 対応可否は endpoint ごとに差があるため、原則 `unknown` 扱いです
1356
1418
  - **Gemini**: Gemini 3.8 Flash、Gemini 3.7 Flash、Gemini 3.6 Flash、Gemini 3.5 Flash、Gemini 3.5 Flash-Lite、Gemini 3.1 Flash-Lite、Gemini 3.1 Pro Preview、Gemini 3 Flash Preview、Gemini 2.5 Pro、Gemini 2.5 Flash、Gemini 2.5 Flash Lite、Gemma 4 31B IT、Gemma 4 26B A4B IT などの推奨モデルをサポート。Gemini 3 はチャット用途向けに利用可能な最小の thinking を既定値にします。`minimal` 非対応の Gemini 3.8 Flash、Gemini 3.7 Flash、Gemini 3 Pro は `low`、その他の Gemini 3 Flash は `minimal` を使います。Gemini 3.1 Flash-Lite Preview、Gemini 3 Pro Preview、Gemini 2.5 Flash Lite Preview などの lifecycle 上 deprecated なモデルは明示指定用に export を残しています
1357
- - **Claude**: Claude Opus 5.5 (`claude-opus-5-5`) と Claude Fable 5.1 (`claude-fable-5-1`); Claude Fable 5, Claude Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Haiku 4.5 をサポート。調整可能な`reasoning_effort`は対応モデルに限り`output_config.effort`として送信し、refusal metadataは終端completionとして保持します
1419
+ - **Claude**: Claude Opus 5.5 (`claude-opus-5-5`)、Claude Sonnet 5.5 (`claude-sonnet-5-5`)、Claude Fable 5.1 (`claude-fable-5-1`); Claude Fable 5, Claude Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Haiku 4.5 をサポート。調整可能な`reasoning_effort`は対応モデルに限り`output_config.effort`として送信し、refusal metadataは終端completionとして保持します
1358
1420
  - **OpenRouter**: GPT-6 Astra/Pro, Claude Fable 5.1, DeepSeek V4.1 Flash, Gemini 3.8 Flash, Ling 3.0 Flash VL, Mercury 2.5, Nex N2.5 Mini/Pro, Qwen3.8 Max, Muse Spark 1.3; OpenAI/Claude/Gemini/Z.ai/xAI/Kimi/DeepSeek/Qwen/Kwaipilotのキュレーション済み一覧をサポート。GLM-5.3、Qwen3.8 Flash、DeepSeek V4 Flash Vision Exp、Claude Sonnet 5/Opus 4.8、Kimi K2.6も含みます
1359
1421
  - **Z.ai**: GLM-5.3/GLM-5.2/GLM-5.1/GLM-5/GLM-5-TurboとGLM-4.7/4.6のテキストモデル、GLM-5.3-Flash/GLM-5V-Turbo/GLM-4.6V系のビジョンモデルをサポート。GLM-5.3はthinking必須で`low`、GLM-5.2は`none`を既定値にします
1360
1422
  - **xAI**: Grok 4.7、Grok 4.6、Grok 4.5、Grok 4.3、Grok 4.20 Reasoning/Non-Reasoningをvision対応でサポート。Grok 4.7/4.6/4.5のpackage既定は低遅延向けの`reasoning_effort: 'low'`、Grok 4.3は`none`です
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, Claude Agent SDK, and Copilot SDK, use the
95
- separate `@aituber-onair/chat/agent` entry point:
94
+ For agent SDKs such as Codex SDK, Claude Agent SDK, Copilot SDK, and Cursor SDK,
95
+ use the separate `@aituber-onair/chat/agent` entry point:
96
96
 
97
97
  ```typescript
98
98
  import { createAgentChatService } from '@aituber-onair/chat/agent';
@@ -107,6 +107,8 @@ npm install @aituber-onair/chat @openai/codex-sdk
107
107
  npm install @aituber-onair/chat @anthropic-ai/claude-agent-sdk
108
108
  # or
109
109
  npm install @aituber-onair/chat @github/copilot-sdk
110
+ # or (requires Node.js 22.13+)
111
+ npm install @aituber-onair/chat @cursor/sdk
110
112
  ```
111
113
 
112
114
  Minimal Codex SDK example:
@@ -220,6 +222,32 @@ const chatService = createAgentChatService('copilot-sdk', {
220
222
  });
221
223
  ```
222
224
 
225
+ For Cursor SDK (Node.js 22.13+):
226
+
227
+ ```typescript
228
+ import { createAgentChatService } from '@aituber-onair/chat/agent';
229
+
230
+ const chatService = createAgentChatService('cursor-sdk', {
231
+ apiKey: process.env.CURSOR_API_KEY,
232
+ workingDirectory: process.cwd(),
233
+ });
234
+
235
+ const response = await chatService.chatOnce(
236
+ [{ role: 'user', content: 'Say hello in one sentence.' }],
237
+ false,
238
+ );
239
+
240
+ console.log(response);
241
+ ```
242
+
243
+ Authenticate once during setup with `Cursor.auth.login()`, set
244
+ `CURSOR_API_KEY`, or pass `apiKey` as shown above. Cursor CLI `agent login` does
245
+ not populate the SDK authentication store. Cursor SDK usage is billed to the
246
+ Cursor plan. This provider passes `tools: []` and `settingSources: []`, and does
247
+ not support tools, vision, or MCP. The default model id is `default`, which
248
+ `Cursor.models.list()` returns as Cursor's Auto option. To use another model,
249
+ set `model` to an id returned by `Cursor.models.list()`.
250
+
223
251
  Authenticate the corresponding SDK locally before using these providers. If the
224
252
  SDK package is missing or authentication is not ready, the provider throws an
225
253
  error at runtime with the original SDK error details.
@@ -314,8 +342,9 @@ Notes:
314
342
  #### Agent SDK Providers
315
343
 
316
344
  `@aituber-onair/chat/agent` exposes experimental providers for agent SDKs such
317
- as Codex SDK, Claude Agent SDK, and Copilot SDK. These providers are not
318
- included in the browser/GAS UMD entry point and do not use API keys.
345
+ as Codex SDK, Claude Agent SDK, Copilot SDK, and Cursor SDK. These providers are
346
+ not included in the browser/GAS UMD entry point. Cursor SDK accepts an optional
347
+ API key; the other agent providers use their local authentication flows.
319
348
 
320
349
  Install only the agent SDK package you actually use in your JavaScript runtime application:
321
350
 
@@ -325,12 +354,14 @@ npm install @aituber-onair/chat @openai/codex-sdk
325
354
  npm install @aituber-onair/chat @anthropic-ai/claude-agent-sdk
326
355
  # or
327
356
  npm install @aituber-onair/chat @github/copilot-sdk
357
+ # or (requires Node.js 22.13+)
358
+ npm install @aituber-onair/chat @cursor/sdk
328
359
  ```
329
360
 
330
- `@openai/codex-sdk`, `@anthropic-ai/claude-agent-sdk`, and
331
- `@github/copilot-sdk` are not dependencies of `@aituber-onair/chat`. They are
332
- loaded dynamically, so users who only use the normal API providers do not
333
- install these agent SDK packages.
361
+ The packages `@openai/codex-sdk`, `@anthropic-ai/claude-agent-sdk`,
362
+ `@github/copilot-sdk`, and `@cursor/sdk` are not dependencies of
363
+ `@aituber-onair/chat`. They are loaded dynamically, so users who only use the
364
+ normal API providers do not install these agent SDK packages.
334
365
 
335
366
  ```typescript
336
367
  import { createAgentChatService } from '@aituber-onair/chat/agent';
@@ -442,10 +473,34 @@ const copilotService = createAgentChatService('copilot-sdk', {
442
473
  });
443
474
  ```
444
475
 
476
+ For Cursor SDK, use `cursor-sdk` on Node.js 22.13 or later.
477
+
478
+ ```typescript
479
+ import { createAgentChatService } from '@aituber-onair/chat/agent';
480
+
481
+ const cursorService = createAgentChatService('cursor-sdk', {
482
+ apiKey: process.env.CURSOR_API_KEY,
483
+ workingDirectory: process.cwd(),
484
+ });
485
+
486
+ const result = await cursorService.chatOnce(messages, false, (text) =>
487
+ process.stdout.write(text),
488
+ );
489
+ ```
490
+
491
+ Authenticate once during setup with `Cursor.auth.login()`, set
492
+ `CURSOR_API_KEY`, or pass `apiKey`. Cursor CLI `agent login` does not populate
493
+ the SDK authentication store. Usage is billed to the Cursor plan. This provider
494
+ uses a local agent with `tools: []` and `settingSources: []`; tools, vision, and
495
+ MCP are unavailable. `DEFAULT_CURSOR_SDK_MODEL` is `default`, which
496
+ `Cursor.models.list()` returns as Cursor's Auto option. To use another model,
497
+ set `model` to an id returned by `Cursor.models.list()`.
498
+
445
499
  Available providers:
446
500
  - `codex-sdk`: requires `@openai/codex-sdk` and Codex authentication.
447
501
  - `claude-agent-sdk`: requires `@anthropic-ai/claude-agent-sdk` and Claude Agent SDK authentication.
448
502
  - `copilot-sdk`: requires `@github/copilot-sdk` and GitHub Copilot authentication.
503
+ - `cursor-sdk`: requires `@cursor/sdk`, Node.js 22.13+, and Cursor SDK authentication or an API key.
449
504
 
450
505
  Current limitations:
451
506
  - Text chat only.
@@ -634,10 +689,15 @@ options and are not the package default. Opus 5.5 supports image input; the
634
689
  package leaves its reasoning effort unspecified because model-specific effort
635
690
  values are not documented in the sources used for this integration. Claude
636
691
  Opus 5 has adaptive thinking enabled by default.
692
+ `claude-sonnet-5-5` (`MODEL_CLAUDE_5_5_SONNET`) is an explicit Messages API
693
+ option with images, streaming, and automatic tool selection. It runs adaptive
694
+ thinking by default, supports all five effort levels, and rejects forced tool
695
+ selection, which this package does not send. Preserve the returned
696
+ `assistant_message` in continuation history. [Migration guide](https://platform.claude.com/docs/en/models/sonnet-5-5/migration-guide).
637
697
  Supported Claude models accept `reasoning_effort`, which maps to Anthropic's
638
698
  `output_config.effort`. The Claude API defaults to `high` when it is omitted:
639
699
 
640
- - Claude Fable 5, Opus 5, Sonnet 5, Opus 4.8, and Opus 4.7:
700
+ - Claude Fable 5, Opus 5, Sonnet 5.5, Sonnet 5, Opus 4.8, and Opus 4.7:
641
701
  `low`, `medium`, `high`, `xhigh`, or `max`.
642
702
  - Claude Opus 4.6 and Sonnet 4.6:
643
703
  `low`, `medium`, `high`, or `max`.
@@ -1383,7 +1443,7 @@ Currently, the following AI providers are built-in:
1383
1443
  - **OpenAI**: GPT-6 Astra (`gpt-6-astra`), GPT-6 Sol (`gpt-6-sol`), and GPT-6 Luna (`gpt-6-luna`, Responses API by default); Supports models like GPT-5.6 (Sol/Terra/Luna), GPT-5.5, GPT-5.4 Pro, GPT-5.4, GPT-5.4 Mini, GPT-5.4 Nano, GPT-5.1, GPT-5 (Nano/Mini/Standard), GPT-4.1 (including mini and nano), GPT-4, GPT-4o-mini, O3-mini, o1, o1-mini
1384
1444
  - **OpenAI-Compatible**: Supports arbitrary local/self-hosted model IDs via OpenAI-compatible endpoints. Vision capability is treated as `unknown` unless your app knows the endpoint-specific model catalog.
1385
1445
  - **Gemini**: Supports recommended models like Gemini 3.8 Flash, Gemini 3.7 Flash, Gemini 3.6 Flash, Gemini 3.5 Flash, Gemini 3.5 Flash-Lite, Gemini 3.1 Flash-Lite, Gemini 3.1 Pro Preview, Gemini 3 Flash Preview, Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.5 Flash Lite, Gemma 4 31B IT, and Gemma 4 26B A4B IT. Gemini 3 models default to their lowest supported thinking level for chat-style responses. Gemini 3.8 Flash, Gemini 3.7 Flash, and Gemini 3 Pro use low because they do not support minimal; other Gemini 3 Flash models use minimal. Deprecated lifecycle models such as Gemini 3.1 Flash-Lite Preview, Gemini 3 Pro Preview, and Gemini 2.5 Flash Lite Preview remain exported for explicit use.
1386
- - **Claude**: Claude Opus 5.5 (`claude-opus-5-5`) and Claude Fable 5.1 (`claude-fable-5-1`); Supports current Claude API model IDs including Claude Fable 5, Claude Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.6, Claude Sonnet 4.5, and Claude Haiku 4.5. Adjustable `reasoning_effort` is sent as `output_config.effort` only for models that support it; refusal metadata is preserved as a terminal completion.
1446
+ - **Claude**: Claude Opus 5.5 (`claude-opus-5-5`), Claude Sonnet 5.5 (`claude-sonnet-5-5`), and Claude Fable 5.1 (`claude-fable-5-1`); Supports current Claude API model IDs including Claude Fable 5, Claude Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.6, Claude Sonnet 4.5, and Claude Haiku 4.5. Adjustable `reasoning_effort` is sent as `output_config.effort` only for models that support it; refusal metadata is preserved as a terminal completion.
1387
1447
  - **OpenRouter**: GPT-6 Astra/Pro, Claude Fable 5.1, DeepSeek V4.1 Flash, Gemini 3.8 Flash, Ling 3.0 Flash VL, Mercury 2.5, Nex N2.5 Mini/Pro, Qwen3.8 Max, Muse Spark 1.3; Supports a curated OpenRouter model list (OpenAI/Claude/Gemini/Z.ai/xAI/Kimi/DeepSeek/Qwen/Kwaipilot), including GLM-5.3, Qwen3.8 Flash, DeepSeek V4 Flash Vision Exp, Claude Sonnet 5/Opus 4.8, and Kimi K2.6. See the OpenRouter section for model IDs.
1388
1448
  - **Z.ai**: Supports GLM-5.3/GLM-5.2/GLM-5.1/GLM-5/GLM-5-Turbo and GLM-4.7/4.6 text models, plus GLM-5.3-Flash/GLM-5V-Turbo/GLM-4.6V vision models. GLM-5.3 always thinks and defaults to `low`; GLM-5.2 defaults to `none`.
1389
1449
  - **xAI**: Supports Grok 4.7, Grok 4.6, Grok 4.5, Grok 4.3, and Grok 4.20 Reasoning/Non-Reasoning with vision. Grok 4.7/4.6/4.5 use package-default `reasoning_effort: 'low'`; Grok 4.3 defaults to `none`.
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,kBAAkB,EAClB,eAAe,EAEhB,MAAM,SAAS,CAAC;AAsCjB,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,6EAA6E;AAC7E,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,MAAM,GACf,+BAA+B,GAAG,SAAS,CAO7C;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,GAAG,QAAQ,CAAC,CAAC;IAC9E,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CAClD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,kCAAkC,GACxC,OAAO,EAAE,CAkBX"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,kBAAkB,EAClB,eAAe,EAEhB,MAAM,SAAS,CAAC;AAuCjB,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,6EAA6E;AAC7E,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,MAAM,GACf,+BAA+B,GAAG,SAAS,CAO7C;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,GAAG,QAAQ,CAAC,CAAC;IAC9E,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CAClD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,kCAAkC,GACxC,OAAO,EAAE,CAkBX"}
@@ -7,6 +7,7 @@ const KNOWN_CHAT_PROVIDERS = new Set([
7
7
  'claude-agent-sdk',
8
8
  'codex-sdk',
9
9
  'copilot-sdk',
10
+ 'cursor-sdk',
10
11
  'deepseek',
11
12
  'gemini',
12
13
  'gemini-nano',
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/backend.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export declare const MODEL_CLAUDE_5_FABLE = "claude-fable-5";
17
17
  export declare const MODEL_CLAUDE_5_SONNET = "claude-sonnet-5";
18
18
  export declare const MODEL_CLAUDE_5_OPUS = "claude-opus-5";
19
19
  export declare const MODEL_CLAUDE_5_5_OPUS = "claude-opus-5-5";
20
+ export declare const MODEL_CLAUDE_5_5_SONNET = "claude-sonnet-5-5";
20
21
  export declare const CLAUDE_DEPRECATED_MODELS: string[];
21
22
  export type ClaudeReasoningEffort = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
22
23
  export declare const CLAUDE_VISION_SUPPORTED_MODELS: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,0CAA0C,CAAC;AAE3E,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAGzD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAGvD,eAAO,MAAM,wBAAwB,UAOpC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAkChF,eAAO,MAAM,8BAA8B,UAa1C,CAAC;AAEF;;GAEG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,MAAM,GACZ,SAAS,qBAAqB,EAAE,CAElC;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,MAAM,GACZ,qBAAqB,GAAG,SAAS,CAEnC;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,qBAAqB,GAC7B,qBAAqB,GAAG,SAAS,CAenC"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,0CAA0C,CAAC;AAE3E,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAGzD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAG3D,eAAO,MAAM,wBAAwB,UAOpC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAmChF,eAAO,MAAM,8BAA8B,UAc1C,CAAC;AAEF;;GAEG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,MAAM,GACZ,SAAS,qBAAqB,EAAE,CAElC;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,MAAM,GACZ,qBAAqB,GAAG,SAAS,CAEnC;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,qBAAqB,GAC7B,qBAAqB,GAAG,SAAS,CAenC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CLAUDE_VISION_SUPPORTED_MODELS = exports.CLAUDE_DEPRECATED_MODELS = exports.MODEL_CLAUDE_5_5_OPUS = exports.MODEL_CLAUDE_5_OPUS = exports.MODEL_CLAUDE_5_SONNET = exports.MODEL_CLAUDE_5_FABLE = exports.MODEL_CLAUDE_4_8_OPUS = exports.MODEL_CLAUDE_4_7_OPUS = exports.MODEL_CLAUDE_4_6_OPUS = exports.MODEL_CLAUDE_4_6_SONNET = exports.MODEL_CLAUDE_4_5_OPUS = exports.MODEL_CLAUDE_4_5_HAIKU = exports.MODEL_CLAUDE_4_5_SONNET = exports.MODEL_CLAUDE_4_OPUS = exports.MODEL_CLAUDE_4_SONNET = exports.MODEL_CLAUDE_3_7_SONNET = exports.MODEL_CLAUDE_3_5_SONNET = exports.MODEL_CLAUDE_3_5_HAIKU = exports.MODEL_CLAUDE_3_HAIKU = exports.MODEL_CLAUDE_5_1_FABLE = exports.ENDPOINT_CLAUDE_API = void 0;
3
+ exports.CLAUDE_VISION_SUPPORTED_MODELS = exports.CLAUDE_DEPRECATED_MODELS = exports.MODEL_CLAUDE_5_5_SONNET = exports.MODEL_CLAUDE_5_5_OPUS = exports.MODEL_CLAUDE_5_OPUS = exports.MODEL_CLAUDE_5_SONNET = exports.MODEL_CLAUDE_5_FABLE = exports.MODEL_CLAUDE_4_8_OPUS = exports.MODEL_CLAUDE_4_7_OPUS = exports.MODEL_CLAUDE_4_6_OPUS = exports.MODEL_CLAUDE_4_6_SONNET = exports.MODEL_CLAUDE_4_5_OPUS = exports.MODEL_CLAUDE_4_5_HAIKU = exports.MODEL_CLAUDE_4_5_SONNET = exports.MODEL_CLAUDE_4_OPUS = exports.MODEL_CLAUDE_4_SONNET = exports.MODEL_CLAUDE_3_7_SONNET = exports.MODEL_CLAUDE_3_5_SONNET = exports.MODEL_CLAUDE_3_5_HAIKU = exports.MODEL_CLAUDE_3_HAIKU = exports.MODEL_CLAUDE_5_1_FABLE = exports.ENDPOINT_CLAUDE_API = void 0;
4
4
  exports.getClaudeSupportedReasoningEfforts = getClaudeSupportedReasoningEfforts;
5
5
  exports.isClaudeReasoningEffortModel = isClaudeReasoningEffortModel;
6
6
  exports.getDefaultClaudeReasoningEffort = getDefaultClaudeReasoningEffort;
@@ -25,6 +25,7 @@ exports.MODEL_CLAUDE_5_FABLE = 'claude-fable-5';
25
25
  exports.MODEL_CLAUDE_5_SONNET = 'claude-sonnet-5';
26
26
  exports.MODEL_CLAUDE_5_OPUS = 'claude-opus-5';
27
27
  exports.MODEL_CLAUDE_5_5_OPUS = 'claude-opus-5-5';
28
+ exports.MODEL_CLAUDE_5_5_SONNET = 'claude-sonnet-5-5';
28
29
  // Retired model ids remain exported so existing imports continue to compile.
29
30
  exports.CLAUDE_DEPRECATED_MODELS = [
30
31
  exports.MODEL_CLAUDE_3_HAIKU,
@@ -58,6 +59,7 @@ const CLAUDE_REASONING_EFFORTS_BY_MODEL = {
58
59
  [exports.MODEL_CLAUDE_5_FABLE]: CLAUDE_XHIGH_REASONING_EFFORTS,
59
60
  [exports.MODEL_CLAUDE_5_SONNET]: CLAUDE_XHIGH_REASONING_EFFORTS,
60
61
  [exports.MODEL_CLAUDE_5_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS,
62
+ [exports.MODEL_CLAUDE_5_5_SONNET]: CLAUDE_XHIGH_REASONING_EFFORTS,
61
63
  };
62
64
  exports.CLAUDE_VISION_SUPPORTED_MODELS = [
63
65
  exports.MODEL_CLAUDE_5_1_FABLE,
@@ -72,6 +74,7 @@ exports.CLAUDE_VISION_SUPPORTED_MODELS = [
72
74
  exports.MODEL_CLAUDE_5_SONNET,
73
75
  exports.MODEL_CLAUDE_5_OPUS,
74
76
  exports.MODEL_CLAUDE_5_5_OPUS,
77
+ exports.MODEL_CLAUDE_5_5_SONNET,
75
78
  ];
76
79
  /**
77
80
  * Return the effort values supported by a Claude model.
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { ChatResponseLength } from '../../../constants';
2
+ import { AgentTextChatService } from './shared';
3
+ /** Default model identifier passed to the Cursor SDK. */
4
+ export declare const DEFAULT_CURSOR_SDK_MODEL = "default";
5
+ type CursorSDKModule = {
6
+ Agent: {
7
+ create(options: CursorAgentCreateOptions): Promise<CursorAgent>;
8
+ };
9
+ };
10
+ type CursorAgentCreateOptions = {
11
+ apiKey?: string;
12
+ model: {
13
+ id: string;
14
+ };
15
+ tools: [];
16
+ local: {
17
+ cwd: string;
18
+ settingSources: [];
19
+ };
20
+ };
21
+ type CursorAgent = {
22
+ send(prompt: string, options: {
23
+ onDelta(event: CursorDeltaEvent): void;
24
+ }): Promise<CursorRun>;
25
+ close?(): Promise<void> | void;
26
+ [key: symbol]: unknown;
27
+ };
28
+ type CursorDeltaEvent = {
29
+ update: {
30
+ type: 'text-delta';
31
+ text: unknown;
32
+ } | {
33
+ type: string;
34
+ [key: string]: unknown;
35
+ };
36
+ };
37
+ type CursorRun = {
38
+ wait(): Promise<CursorRunResult>;
39
+ };
40
+ type CursorRunResult = {
41
+ status: 'finished';
42
+ result?: unknown;
43
+ } | {
44
+ status: 'error';
45
+ error?: {
46
+ message?: unknown;
47
+ code?: unknown;
48
+ };
49
+ } | {
50
+ status: 'cancelled';
51
+ };
52
+ /** Loads the optional Cursor SDK at runtime. */
53
+ export type CursorSDKLoader = () => Promise<CursorSDKModule>;
54
+ /** Options for the text-only Cursor SDK chat provider. */
55
+ export type CursorSDKChatServiceOptions = {
56
+ /** Optional explicit key. Cursor SDK authentication is used when omitted. */
57
+ apiKey?: string;
58
+ /** Cursor model identifier. Defaults to DEFAULT_CURSOR_SDK_MODEL. */
59
+ model?: string;
60
+ /** Soft response length instruction included in the generated prompt. */
61
+ responseLength?: ChatResponseLength;
62
+ /** Local agent working directory. Defaults to process.cwd(). */
63
+ workingDirectory?: string;
64
+ };
65
+ /** Text-only ChatService backed by a local Cursor SDK agent. */
66
+ export declare class CursorSDKChatService extends AgentTextChatService {
67
+ constructor(options?: CursorSDKChatServiceOptions, loadSDK?: CursorSDKLoader);
68
+ }
69
+ export {};
70
+ //# sourceMappingURL=CursorSDKChatService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CursorSDKChatService.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/CursorSDKChatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAA0B,MAAM,UAAU,CAAC;AAExE,yDAAyD;AACzD,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAElD,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE;QACL,MAAM,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;KACjE,CAAC;CACH,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,KAAK,EAAE,EAAE,CAAC;IACV,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,cAAc,EAAE,EAAE,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,CACF,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;KACxC,GACA,OAAO,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,MAAM,EACF;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GACrC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAC9C,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;CAClC,CAAC;AAEF,KAAK,eAAe,GAChB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACxC;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC/C,GACD;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAM5B,gDAAgD;AAChD,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;AAE7D,0DAA0D;AAC1D,MAAM,MAAM,2BAA2B,GAAG;IACxC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,gEAAgE;AAChE,qBAAa,oBAAqB,SAAQ,oBAAoB;gBAE1D,OAAO,GAAE,2BAAgC,EACzC,OAAO,GAAE,eAA+B;CA6B3C"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CursorSDKChatService = exports.DEFAULT_CURSOR_SDK_MODEL = void 0;
4
+ const shared_1 = require("./shared");
5
+ /** Default model identifier passed to the Cursor SDK. */
6
+ exports.DEFAULT_CURSOR_SDK_MODEL = 'default';
7
+ /** Text-only ChatService backed by a local Cursor SDK agent. */
8
+ class CursorSDKChatService extends shared_1.AgentTextChatService {
9
+ constructor(options = {}, loadSDK = loadCursorSDK) {
10
+ const model = options.model ?? exports.DEFAULT_CURSOR_SDK_MODEL;
11
+ super({
12
+ provider: 'cursor-sdk',
13
+ model,
14
+ defaultModel: exports.DEFAULT_CURSOR_SDK_MODEL,
15
+ responseLength: options.responseLength,
16
+ getResponse: async (prompt, stream, onPartialResponse) => {
17
+ try {
18
+ return await runCursorPrompt(loadSDK, model, options.workingDirectory, options.apiKey, prompt, stream, onPartialResponse);
19
+ }
20
+ catch (error) {
21
+ throw redactSecret((0, shared_1.wrapAgentProviderError)('cursor-sdk', error), options.apiKey);
22
+ }
23
+ },
24
+ });
25
+ }
26
+ }
27
+ exports.CursorSDKChatService = CursorSDKChatService;
28
+ async function runCursorPrompt(loadSDK, model, workingDirectory, apiKey, prompt, stream, onPartialResponse) {
29
+ const { Agent } = await loadCursorSDKModule(loadSDK);
30
+ const agent = await Agent.create({
31
+ ...(apiKey !== undefined ? { apiKey } : {}),
32
+ model: { id: model },
33
+ tools: [],
34
+ local: {
35
+ cwd: workingDirectory ?? process.cwd(),
36
+ settingSources: [],
37
+ },
38
+ });
39
+ let outcome;
40
+ try {
41
+ outcome = {
42
+ ok: true,
43
+ text: await executeCursorRun(agent, prompt, stream, onPartialResponse),
44
+ };
45
+ }
46
+ catch (error) {
47
+ outcome = { ok: false, error };
48
+ }
49
+ try {
50
+ await disposeCursorAgent(agent);
51
+ }
52
+ catch (error) {
53
+ if (outcome.ok) {
54
+ throw error;
55
+ }
56
+ }
57
+ if (!outcome.ok) {
58
+ throw outcome.error;
59
+ }
60
+ return outcome.text;
61
+ }
62
+ async function executeCursorRun(agent, prompt, stream, onPartialResponse) {
63
+ let deltaText = '';
64
+ const run = await agent.send(prompt, {
65
+ onDelta: ({ update }) => {
66
+ if (update.type === 'text-delta' &&
67
+ typeof update.text === 'string' &&
68
+ update.text) {
69
+ deltaText += update.text;
70
+ if (stream) {
71
+ onPartialResponse(update.text);
72
+ }
73
+ }
74
+ },
75
+ });
76
+ const result = await run.wait();
77
+ if (result.status === 'finished') {
78
+ const finalText = typeof result.result === 'string' && result.result
79
+ ? result.result
80
+ : deltaText;
81
+ if (!finalText) {
82
+ throw new Error('cursor-sdk provider received an empty response.');
83
+ }
84
+ if (stream && !deltaText) {
85
+ onPartialResponse(finalText);
86
+ }
87
+ return finalText;
88
+ }
89
+ if (result.status === 'error') {
90
+ throw new Error(formatCursorRunError(result.error));
91
+ }
92
+ throw new Error('cursor-sdk run was cancelled.');
93
+ }
94
+ async function disposeCursorAgent(agent) {
95
+ const asyncDisposeSymbol = Symbol
96
+ .asyncDispose;
97
+ const asyncDispose = asyncDisposeSymbol
98
+ ? agent[asyncDisposeSymbol]
99
+ : undefined;
100
+ if (typeof asyncDispose === 'function') {
101
+ await asyncDispose.call(agent);
102
+ return;
103
+ }
104
+ await agent.close?.();
105
+ }
106
+ function formatCursorRunError(error) {
107
+ const message = typeof error?.message === 'string'
108
+ ? error.message
109
+ : 'Cursor SDK run failed.';
110
+ const code = typeof error?.code === 'string' || typeof error?.code === 'number'
111
+ ? String(error.code)
112
+ : undefined;
113
+ return code ? `${message} (${code})` : message;
114
+ }
115
+ async function loadCursorSDKModule(loadSDK) {
116
+ try {
117
+ return await loadSDK();
118
+ }
119
+ catch (error) {
120
+ const message = 'cursor-sdk provider requires @cursor/sdk. ' +
121
+ 'Install it in your Node.js 22.13+ project and authenticate with Cursor.auth.login() or CURSOR_API_KEY.';
122
+ const wrappedError = new Error(message);
123
+ wrappedError.cause = error;
124
+ throw wrappedError;
125
+ }
126
+ }
127
+ function redactSecret(error, secret) {
128
+ if (!secret) {
129
+ return error;
130
+ }
131
+ error.message = error.message.split(secret).join('[REDACTED]');
132
+ if (error.stack) {
133
+ error.stack = error.stack.split(secret).join('[REDACTED]');
134
+ }
135
+ return error;
136
+ }
137
+ async function loadCursorSDK() {
138
+ return (await dynamicImport('@cursor/sdk'));
139
+ }
140
+ const dynamicImport = new Function('specifier', 'return import(specifier)');
141
+ //# sourceMappingURL=CursorSDKChatService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CursorSDKChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/agent/CursorSDKChatService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ChatService } from '../../ChatService';
2
+ import { ChatServiceProvider, VisionSupportLevel } from '../ChatServiceProvider';
3
+ import { CursorSDKChatServiceOptions, CursorSDKLoader } from './CursorSDKChatService';
4
+ /** Creates text-only Cursor SDK chat services. */
5
+ export declare class CursorSDKChatServiceProvider implements ChatServiceProvider<CursorSDKChatServiceOptions> {
6
+ private loadSDK?;
7
+ constructor(loadSDK?: CursorSDKLoader | undefined);
8
+ createChatService(options: CursorSDKChatServiceOptions): ChatService;
9
+ getProviderName(): string;
10
+ getSupportedModels(): string[];
11
+ getDefaultModel(): string;
12
+ supportsVision(): boolean;
13
+ getVisionSupportLevel(): VisionSupportLevel;
14
+ }
15
+ //# sourceMappingURL=CursorSDKChatServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CursorSDKChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/agent/CursorSDKChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,2BAA2B,EAC3B,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAGhC,kDAAkD;AAClD,qBAAa,4BACX,YAAW,mBAAmB,CAAC,2BAA2B,CAAC;IAE/C,OAAO,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,eAAe,YAAA;IAE7C,iBAAiB,CAAC,OAAO,EAAE,2BAA2B,GAAG,WAAW;IAOpE,eAAe,IAAI,MAAM;IAIzB,kBAAkB,IAAI,MAAM,EAAE;IAI9B,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,OAAO;IAIzB,qBAAqB,IAAI,kBAAkB;CAG5C"}