@aituber-onair/chat 0.3.0 → 0.5.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 (59) hide show
  1. package/README.ja.md +70 -3
  2. package/README.md +70 -3
  3. package/dist/cjs/adapters/gasFetch.d.ts +6 -0
  4. package/dist/cjs/adapters/gasFetch.d.ts.map +1 -0
  5. package/dist/cjs/adapters/gasFetch.js +53 -0
  6. package/dist/cjs/adapters/gasFetch.js.map +1 -0
  7. package/dist/cjs/constants/claude.d.ts +2 -0
  8. package/dist/cjs/constants/claude.d.ts.map +1 -1
  9. package/dist/cjs/constants/claude.js +5 -1
  10. package/dist/cjs/constants/claude.js.map +1 -1
  11. package/dist/cjs/index.d.ts +1 -0
  12. package/dist/cjs/index.d.ts.map +1 -1
  13. package/dist/cjs/index.js +4 -1
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  16. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +2 -0
  17. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  18. package/dist/cjs/utils/chatServiceHttpClient.d.ts +8 -0
  19. package/dist/cjs/utils/chatServiceHttpClient.d.ts.map +1 -1
  20. package/dist/cjs/utils/chatServiceHttpClient.js +29 -10
  21. package/dist/cjs/utils/chatServiceHttpClient.js.map +1 -1
  22. package/dist/cjs/utils/index.d.ts +1 -0
  23. package/dist/cjs/utils/index.d.ts.map +1 -1
  24. package/dist/cjs/utils/index.js +1 -0
  25. package/dist/cjs/utils/index.js.map +1 -1
  26. package/dist/cjs/utils/runOnce.d.ts +8 -0
  27. package/dist/cjs/utils/runOnce.d.ts.map +1 -0
  28. package/dist/cjs/utils/runOnce.js +13 -0
  29. package/dist/cjs/utils/runOnce.js.map +1 -0
  30. package/dist/esm/adapters/gasFetch.d.ts +6 -0
  31. package/dist/esm/adapters/gasFetch.d.ts.map +1 -0
  32. package/dist/esm/adapters/gasFetch.js +50 -0
  33. package/dist/esm/adapters/gasFetch.js.map +1 -0
  34. package/dist/esm/constants/claude.d.ts +2 -0
  35. package/dist/esm/constants/claude.d.ts.map +1 -1
  36. package/dist/esm/constants/claude.js +4 -0
  37. package/dist/esm/constants/claude.js.map +1 -1
  38. package/dist/esm/index.d.ts +1 -0
  39. package/dist/esm/index.d.ts.map +1 -1
  40. package/dist/esm/index.js +2 -0
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  43. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +3 -1
  44. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  45. package/dist/esm/utils/chatServiceHttpClient.d.ts +8 -0
  46. package/dist/esm/utils/chatServiceHttpClient.d.ts.map +1 -1
  47. package/dist/esm/utils/chatServiceHttpClient.js +29 -10
  48. package/dist/esm/utils/chatServiceHttpClient.js.map +1 -1
  49. package/dist/esm/utils/index.d.ts +1 -0
  50. package/dist/esm/utils/index.d.ts.map +1 -1
  51. package/dist/esm/utils/index.js +1 -0
  52. package/dist/esm/utils/index.js.map +1 -1
  53. package/dist/esm/utils/runOnce.d.ts +8 -0
  54. package/dist/esm/utils/runOnce.d.ts.map +1 -0
  55. package/dist/esm/utils/runOnce.js +10 -0
  56. package/dist/esm/utils/runOnce.js.map +1 -0
  57. package/dist/umd/aituber-onair-chat.js +3005 -0
  58. package/dist/umd/aituber-onair-chat.min.js +19 -0
  59. package/package.json +12 -6
package/README.ja.md CHANGED
@@ -21,6 +21,73 @@ AITuber OnAirのチャット・LLM API統合ライブラリです。このパッ
21
21
  npm install @aituber-onair/chat
22
22
  ```
23
23
 
24
+ ## UMDビルド(ブラウザ/GAS)
25
+
26
+ 本パッケージは既定で ESM/CJS を提供します。バンドラ無し環境(`<script>`読み込みのブラウザ、Google Apps Script)向けに UMD/IIFE バンドルも利用できます。
27
+
28
+ - グローバル名: `AITuberOnAirChat`
29
+ - 出力: `dist/umd/aituber-onair-chat.js`, `dist/umd/aituber-onair-chat.min.js`
30
+
31
+ モノレポ直下でUMDをビルド:
32
+
33
+ ```bash
34
+ # 依存をインストール
35
+ npm ci
36
+
37
+ # chatパッケージをビルド
38
+ npm -w @aituber-onair/chat run build
39
+ ```
40
+
41
+ ### ブラウザ(UMD)
42
+
43
+ ```html
44
+ <!doctype html>
45
+ <html>
46
+ <head>
47
+ <meta charset="utf-8" />
48
+ <script src="/dist/umd/aituber-onair-chat.min.js"></script>
49
+ </head>
50
+ <body>
51
+ <script>
52
+ const chat = AITuberOnAirChat.ChatServiceFactory.createChatService('openai', {
53
+ apiKey: 'your-api-key'
54
+ });
55
+ // ブラウザではストリーミング利用可
56
+ </script>
57
+ </body>
58
+ </html>
59
+ ```
60
+
61
+ ### Google Apps Script(GAS)
62
+
63
+ GASはストリーミング不可・Fetch API非対応です。提供アダプターと非ストリーミングヘルパーを使用してください。
64
+
65
+ 手順:
66
+ - UMDをビルドし、`dist/umd/aituber-onair-chat.min.js` をGASプロジェクトにスクリプトとして追加(例: `lib.gs`)。claspを使う場合はプロジェクト配下に配置してプッシュ。
67
+ - 別ファイル(例: `main.js`)で以下を利用:
68
+
69
+ ```javascript
70
+ async function testChat() {
71
+ // UrlFetchAppを使うfetchを注入
72
+ AITuberOnAirChat.installGASFetch();
73
+
74
+ const chat = AITuberOnAirChat.ChatServiceFactory.createChatService('openai', {
75
+ apiKey: PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY')
76
+ });
77
+
78
+ const text = await AITuberOnAirChat.runOnceText(chat, [
79
+ { role: 'user', content: 'Hello!' }
80
+ ]);
81
+
82
+ Logger.log(text);
83
+ }
84
+ ```
85
+
86
+ 注意:
87
+ - 実行ランタイムはV8。ストリーミング不可のため `chatOnce(..., false)`/`runOnceText` を使用。
88
+ - スクリプトプロパティに `OPENAI_API_KEY` を設定。
89
+ - 実例は `packages/chat/examples/gas-basic` を参照。`appsscript.json` は任意(近年のGASは既定でV8ランタイム)。タイムゾーン等をカスタムしたい場合のみ追加してください。
90
+
24
91
  ## 使用方法
25
92
 
26
93
  ### 基本的なチャット
@@ -72,7 +139,7 @@ const openaiService = ChatServiceFactory.createChatService('openai', {
72
139
  ```typescript
73
140
  const claudeService = ChatServiceFactory.createChatService('claude', {
74
141
  apiKey: process.env.ANTHROPIC_API_KEY,
75
- model: 'claude-3-opus-20240229'
142
+ model: 'claude-sonnet-4-5-20250929'
76
143
  });
77
144
  ```
78
145
 
@@ -325,7 +392,7 @@ type ChatResponseLength = 'veryShort' | 'short' | 'medium' | 'long' | 'veryLong'
325
392
 
326
393
  - **OpenAI**: GPT-4.1(miniとnanoを含む), GPT-4, GPT-4o-mini, O3-mini, o1, o1-miniのモデルをサポート
327
394
  - **Gemini**: Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.5 Flash Lite Preview, Gemini 2.0 Flash, Gemini 2.0 Flash-Lite, Gemini 1.5 Flash, Gemini 1.5 Proのモデルをサポート
328
- - **Claude**: Claude 3 Haiku, Claude 3.5 Haiku, Claude 3.5 Sonnet v2, Claude 3.7 Sonnetのモデルをサポート
395
+ - **Claude**: Claude Sonnet 4.5, Claude Haiku 4.5, Claude 4 Sonnet, Claude 4 Opus, Claude 3.7 Sonnet, Claude 3.5 Haiku/Sonnet, Claude 3 Haikuのモデルをサポート
329
396
  - **OpenRouter**: `openai/gpt-oss-20b:free`(トークン制限の特別処理がある無料利用枠モデル)をサポート
330
397
 
331
398
  ## ライセンス
@@ -334,4 +401,4 @@ MIT
334
401
 
335
402
  ## 貢献
336
403
 
337
- 貢献を歓迎します!プルリクエストをお気軽にご提出ください。
404
+ 貢献を歓迎します!プルリクエストをお気軽にご提出ください。
package/README.md CHANGED
@@ -21,6 +21,73 @@ Chat and LLM API integration library for AITuber OnAir. This package provides a
21
21
  npm install @aituber-onair/chat
22
22
  ```
23
23
 
24
+ ## UMD Build (Browser/GAS)
25
+
26
+ This package ships ESM/CJS by default. For environments without bundlers (browsers via script tag, Google Apps Script), a UMD/IIFE bundle is available.
27
+
28
+ - Global name: `AITuberOnAirChat`
29
+ - Files: `dist/umd/aituber-onair-chat.js`, `dist/umd/aituber-onair-chat.min.js`
30
+
31
+ Build UMD locally (in the monorepo):
32
+
33
+ ```bash
34
+ # Install deps at repo root
35
+ npm ci
36
+
37
+ # Build for chat only
38
+ npm -w @aituber-onair/chat run build
39
+ ```
40
+
41
+ ### Browser via UMD
42
+
43
+ ```html
44
+ <!doctype html>
45
+ <html>
46
+ <head>
47
+ <meta charset="utf-8" />
48
+ <script src="/dist/umd/aituber-onair-chat.min.js"></script>
49
+ </head>
50
+ <body>
51
+ <script>
52
+ const chat = AITuberOnAirChat.ChatServiceFactory.createChatService('openai', {
53
+ apiKey: 'your-api-key'
54
+ });
55
+ // Streaming is available in browsers
56
+ </script>
57
+ </body>
58
+ </html>
59
+ ```
60
+
61
+ ### Google Apps Script (GAS)
62
+
63
+ GAS does not support streaming or the Fetch API natively. Use the provided adapter and the non‑streaming helper.
64
+
65
+ Steps:
66
+ - Build UMD and copy `dist/umd/aituber-onair-chat.min.js` into your GAS project as a script file (e.g., `lib.gs`). With clasp, place it under the project folder and push.
67
+ - Create another file (e.g., `main.js`) and use the following snippet:
68
+
69
+ ```javascript
70
+ async function testChat() {
71
+ // Install fetch backed by UrlFetchApp
72
+ AITuberOnAirChat.installGASFetch();
73
+
74
+ const chat = AITuberOnAirChat.ChatServiceFactory.createChatService('openai', {
75
+ apiKey: PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY')
76
+ });
77
+
78
+ const text = await AITuberOnAirChat.runOnceText(chat, [
79
+ { role: 'user', content: 'Hello!' }
80
+ ]);
81
+
82
+ Logger.log(text);
83
+ }
84
+ ```
85
+
86
+ Notes:
87
+ - GAS runtime: V8. No streaming; prefer `chatOnce(..., false)` or `runOnceText`.
88
+ - Set your API key in Script Properties: `OPENAI_API_KEY`.
89
+ - See `packages/chat/examples/gas-basic` for a working example. The Apps Script manifest (`appsscript.json`) is optional; modern projects default to V8. Add one only if you need custom settings (e.g., time zone).
90
+
24
91
  ## Usage
25
92
 
26
93
  ### Basic Chat
@@ -72,7 +139,7 @@ const openaiService = ChatServiceFactory.createChatService('openai', {
72
139
  ```typescript
73
140
  const claudeService = ChatServiceFactory.createChatService('claude', {
74
141
  apiKey: process.env.ANTHROPIC_API_KEY,
75
- model: 'claude-3-opus-20240229'
142
+ model: 'claude-sonnet-4-5-20250929'
76
143
  });
77
144
  ```
78
145
 
@@ -325,7 +392,7 @@ Currently, the following AI providers are built-in:
325
392
 
326
393
  - **OpenAI**: Supports models like GPT-4.1(including mini and nano), GPT-4, GPT-4o-mini, O3-mini, o1, o1-mini
327
394
  - **Gemini**: Supports models like Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.5 Flash Lite Preview, Gemini 2.0 Flash, Gemini 2.0 Flash-Lite, Gemini 1.5 Flash, Gemini 1.5 Pro
328
- - **Claude**: Supports models like Claude 3 Haiku, Claude 3.5 Haiku, Claude 3.5 Sonnet v2, Claude 3.7 Sonnet
395
+ - **Claude**: Supports models like Claude Sonnet 4.5, Claude Haiku 4.5, Claude 4 Sonnet, Claude 4 Opus, Claude 3.7 Sonnet, Claude 3.5 Haiku/Sonnet, Claude 3 Haiku
329
396
  - **OpenRouter**: Supports `openai/gpt-oss-20b:free` (free tier model with special handling for token limits)
330
397
 
331
398
  ## License
@@ -334,4 +401,4 @@ MIT
334
401
 
335
402
  ## Contributing
336
403
 
337
- Contributions are welcome! Please feel free to submit a Pull Request.
404
+ Contributions are welcome! Please feel free to submit a Pull Request.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Installs a fetch implementation backed by Google Apps Script UrlFetchApp.
3
+ * Provides a minimal Response-like object for non-streaming requests.
4
+ */
5
+ export declare function installGASFetch(): void;
6
+ //# sourceMappingURL=gasFetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gasFetch.d.ts","sourceRoot":"","sources":["../../../src/adapters/gasFetch.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAiDtC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.installGASFetch = installGASFetch;
4
+ const chatServiceHttpClient_1 = require("../utils/chatServiceHttpClient");
5
+ /**
6
+ * Installs a fetch implementation backed by Google Apps Script UrlFetchApp.
7
+ * Provides a minimal Response-like object for non-streaming requests.
8
+ */
9
+ function installGASFetch() {
10
+ chatServiceHttpClient_1.ChatServiceHttpClient.setFetch(async (url, init = {}) => {
11
+ const method = (init.method || 'GET').toString().toUpperCase();
12
+ // Normalize headers to a Record<string, string>
13
+ const rawHeaders = init.headers;
14
+ const headers = {};
15
+ if (Array.isArray(rawHeaders)) {
16
+ for (const [k, v] of rawHeaders)
17
+ headers[k] = String(v);
18
+ }
19
+ else if (rawHeaders && typeof rawHeaders === 'object') {
20
+ for (const [k, v] of Object.entries(rawHeaders))
21
+ headers[k] = String(v);
22
+ }
23
+ // Convert RequestInit to UrlFetchApp parameters
24
+ const params = {
25
+ method,
26
+ headers,
27
+ muteHttpExceptions: true,
28
+ };
29
+ // Body handling: accept string or object (serialize as JSON)
30
+ const body = init.body;
31
+ if (typeof body === 'string') {
32
+ params.payload = body;
33
+ }
34
+ else if (body != null) {
35
+ if (!headers['Content-Type'])
36
+ headers['Content-Type'] = 'application/json';
37
+ params.payload = JSON.stringify(body);
38
+ }
39
+ const res = UrlFetchApp.fetch(url, params);
40
+ const status = res.getResponseCode();
41
+ const text = res.getContentText();
42
+ // Return a minimal Response-like object used by the library.
43
+ const response = {
44
+ ok: status >= 200 && status < 300,
45
+ status,
46
+ statusText: String(status),
47
+ text: async () => text,
48
+ json: async () => (text ? JSON.parse(text) : null),
49
+ };
50
+ return response;
51
+ });
52
+ }
53
+ //# sourceMappingURL=gasFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gasFetch.js","sourceRoot":"","sources":["../../../src/adapters/gasFetch.ts"],"names":[],"mappings":";;AASA,0CAiDC;AA1DD,0EAAuE;AAKvE;;;GAGG;AACH,SAAgB,eAAe;IAC7B,6CAAqB,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAoB,EAAE,EAAE,EAAE;QACnE,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QAE/D,gDAAgD;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,OAIX,CAAC;QACd,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU;gBAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACxD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,gDAAgD;QAChD,MAAM,MAAM,GAA4B;YACtC,MAAM;YACN,OAAO;YACP,kBAAkB,EAAE,IAAI;SACzB,CAAC;QAEF,6DAA6D;QAC7D,MAAM,IAAI,GAAI,IAAsC,CAAC,IAAI,CAAC;QAC1D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC1B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YAC/C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAW,GAAG,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAW,GAAG,CAAC,cAAc,EAAE,CAAC;QAE1C,6DAA6D;QAC7D,MAAM,QAAQ,GAAsB;YAClC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;YACjC,MAAM;YACN,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SACnD,CAAC;QAEF,OAAO,QAAoB,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -5,5 +5,7 @@ export declare const MODEL_CLAUDE_3_5_SONNET = "claude-3-5-sonnet-20241022";
5
5
  export declare const MODEL_CLAUDE_3_7_SONNET = "claude-3-7-sonnet-20250219";
6
6
  export declare const MODEL_CLAUDE_4_SONNET = "claude-4-sonnet-20250514";
7
7
  export declare const MODEL_CLAUDE_4_OPUS = "claude-4-opus-20250514";
8
+ export declare const MODEL_CLAUDE_4_5_SONNET = "claude-sonnet-4-5-20250929";
9
+ export declare const MODEL_CLAUDE_4_5_HAIKU = "claude-haiku-4-5-20251001";
8
10
  export declare const CLAUDE_VISION_SUPPORTED_MODELS: string[];
9
11
  //# sourceMappingURL=claude.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,0CAA0C,CAAC;AAG3E,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;AAE5D,eAAO,MAAM,8BAA8B,UAO1C,CAAC"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,0CAA0C,CAAC;AAG3E,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;AAElE,eAAO,MAAM,8BAA8B,UAS1C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CLAUDE_VISION_SUPPORTED_MODELS = 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.ENDPOINT_CLAUDE_API = void 0;
3
+ exports.CLAUDE_VISION_SUPPORTED_MODELS = 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.ENDPOINT_CLAUDE_API = void 0;
4
4
  exports.ENDPOINT_CLAUDE_API = 'https://api.anthropic.com/v1/messages';
5
5
  // claude model
6
6
  exports.MODEL_CLAUDE_3_HAIKU = 'claude-3-haiku-20240307';
@@ -9,6 +9,8 @@ exports.MODEL_CLAUDE_3_5_SONNET = 'claude-3-5-sonnet-20241022';
9
9
  exports.MODEL_CLAUDE_3_7_SONNET = 'claude-3-7-sonnet-20250219';
10
10
  exports.MODEL_CLAUDE_4_SONNET = 'claude-4-sonnet-20250514';
11
11
  exports.MODEL_CLAUDE_4_OPUS = 'claude-4-opus-20250514';
12
+ exports.MODEL_CLAUDE_4_5_SONNET = 'claude-sonnet-4-5-20250929';
13
+ exports.MODEL_CLAUDE_4_5_HAIKU = 'claude-haiku-4-5-20251001';
12
14
  exports.CLAUDE_VISION_SUPPORTED_MODELS = [
13
15
  exports.MODEL_CLAUDE_3_HAIKU,
14
16
  exports.MODEL_CLAUDE_3_5_HAIKU,
@@ -16,5 +18,7 @@ exports.CLAUDE_VISION_SUPPORTED_MODELS = [
16
18
  exports.MODEL_CLAUDE_3_7_SONNET,
17
19
  exports.MODEL_CLAUDE_4_SONNET,
18
20
  exports.MODEL_CLAUDE_4_OPUS,
21
+ exports.MODEL_CLAUDE_4_5_SONNET,
22
+ exports.MODEL_CLAUDE_4_5_HAIKU,
19
23
  ];
20
24
  //# sourceMappingURL=claude.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,uCAAuC,CAAC;AAE3E,eAAe;AACF,QAAA,oBAAoB,GAAG,yBAAyB,CAAC;AACjD,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,qBAAqB,GAAG,0BAA0B,CAAC;AACnD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAE/C,QAAA,8BAA8B,GAAG;IAC5C,4BAAoB;IACpB,8BAAsB;IACtB,+BAAuB;IACvB,+BAAuB;IACvB,6BAAqB;IACrB,2BAAmB;CACpB,CAAC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,uCAAuC,CAAC;AAE3E,eAAe;AACF,QAAA,oBAAoB,GAAG,yBAAyB,CAAC;AACjD,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,qBAAqB,GAAG,0BAA0B,CAAC;AACnD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAC/C,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AAErD,QAAA,8BAA8B,GAAG;IAC5C,4BAAoB;IACpB,8BAAsB;IACtB,+BAAuB;IACvB,+BAAuB;IACvB,6BAAqB;IACrB,2BAAmB;IACnB,+BAAuB;IACvB,8BAAsB;CACvB,CAAC"}
@@ -16,4 +16,5 @@ export { OpenRouterChatService } from './services/providers/openrouter/OpenRoute
16
16
  export { OpenRouterChatServiceProvider } from './services/providers/openrouter/OpenRouterChatServiceProvider';
17
17
  export * from './constants';
18
18
  export * from './utils';
19
+ export { installGASFetch } from './adapters/gasFetch';
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,SAAS,CAAC;AAGxB,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,YAAY,EACV,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAG9G,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,SAAS,CAAC;AAGxB,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,YAAY,EACV,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAG9G,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -18,7 +18,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
18
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.OpenRouterChatServiceProvider = exports.OpenRouterChatService = exports.ClaudeChatServiceProvider = exports.ClaudeChatService = exports.GeminiChatServiceProvider = exports.GeminiChatService = exports.OpenAIChatServiceProvider = exports.OpenAIChatService = exports.ChatServiceFactory = void 0;
21
+ exports.installGASFetch = exports.OpenRouterChatServiceProvider = exports.OpenRouterChatService = exports.ClaudeChatServiceProvider = exports.ClaudeChatService = exports.GeminiChatServiceProvider = exports.GeminiChatService = exports.OpenAIChatServiceProvider = exports.OpenAIChatService = exports.ChatServiceFactory = void 0;
22
22
  // Type definitions exports
23
23
  __exportStar(require("./types"), exports);
24
24
  var ChatServiceFactory_1 = require("./services/ChatServiceFactory");
@@ -47,4 +47,7 @@ Object.defineProperty(exports, "OpenRouterChatServiceProvider", { enumerable: tr
47
47
  __exportStar(require("./constants"), exports);
48
48
  // Utility exports
49
49
  __exportStar(require("./utils"), exports);
50
+ // Adapters
51
+ var gasFetch_1 = require("./adapters/gasFetch");
52
+ Object.defineProperty(exports, "installGASFetch", { enumerable: true, get: function () { return gasFetch_1.installGASFetch; } });
50
53
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,2BAA2B;AAC3B,0CAAwB;AAIxB,oEAAmE;AAA1D,wHAAA,kBAAkB,OAAA;AAQ3B,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,8BAA8B;AAC9B,+FAA8F;AAArF,8HAAA,qBAAqB,OAAA;AAC9B,+GAA8G;AAArG,8IAAA,6BAA6B,OAAA;AAEtC,oBAAoB;AACpB,8CAA4B;AAE5B,kBAAkB;AAClB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,2BAA2B;AAC3B,0CAAwB;AAIxB,oEAAmE;AAA1D,wHAAA,kBAAkB,OAAA;AAQ3B,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,8BAA8B;AAC9B,+FAA8F;AAArF,8HAAA,qBAAqB,OAAA;AAC9B,+GAA8G;AAArG,8IAAA,6BAA6B,OAAA;AAEtC,oBAAoB;AACpB,8CAA4B;AAE5B,kBAAkB;AAClB,0CAAwB;AAExB,WAAW;AACX,gDAAsD;AAA7C,2GAAA,eAAe,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/claude/ClaudeChatServiceProvider.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW;IAkB3D;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAW9B;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,cAAc,IAAI,OAAO;IAIzB;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAG/C"}
1
+ {"version":3,"file":"ClaudeChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/claude/ClaudeChatServiceProvider.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW;IAkB3D;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAa9B;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,cAAc,IAAI,OAAO;IAIzB;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAG/C"}
@@ -39,6 +39,8 @@ class ClaudeChatServiceProvider {
39
39
  constants_1.MODEL_CLAUDE_3_7_SONNET,
40
40
  constants_1.MODEL_CLAUDE_4_SONNET,
41
41
  constants_1.MODEL_CLAUDE_4_OPUS,
42
+ constants_1.MODEL_CLAUDE_4_5_SONNET,
43
+ constants_1.MODEL_CLAUDE_4_5_HAIKU,
42
44
  ];
43
45
  }
44
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/claude/ClaudeChatServiceProvider.ts"],"names":[],"mappings":";;;AAAA,kDAQ4B;AAE5B,2DAAwD;AAOxD;;GAEG;AACH,MAAa,yBAAyB;IACpC;;;;OAIG;IACH,iBAAiB,CAAC,OAA2B;QAC3C,gFAAgF;QAChF,MAAM,WAAW,GACf,OAAO,CAAC,WAAW;YACnB,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnE,CAAC,CAAC,OAAO,CAAC,KAAK;gBACf,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAE9B,OAAO,IAAI,qCAAiB,CAC1B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EACvC,WAAW,EACX,OAAO,CAAC,KAAK,IAAI,EAAE,EAClB,OAAe,CAAC,UAAU,IAAI,EAAE,EACjC,OAAO,CAAC,cAAc,CACvB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,kBAAkB;QAChB,OAAO;YACL,gCAAoB;YACpB,kCAAsB;YACtB,mCAAuB;YACvB,mCAAuB;YACvB,iCAAqB;YACrB,+BAAmB;SACpB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,gCAAoB,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CAAC,KAAa;QAClC,OAAO,0CAA8B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;CACF;AAvED,8DAuEC"}
1
+ {"version":3,"file":"ClaudeChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/claude/ClaudeChatServiceProvider.ts"],"names":[],"mappings":";;;AAAA,kDAU4B;AAE5B,2DAAwD;AAOxD;;GAEG;AACH,MAAa,yBAAyB;IACpC;;;;OAIG;IACH,iBAAiB,CAAC,OAA2B;QAC3C,gFAAgF;QAChF,MAAM,WAAW,GACf,OAAO,CAAC,WAAW;YACnB,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnE,CAAC,CAAC,OAAO,CAAC,KAAK;gBACf,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAE9B,OAAO,IAAI,qCAAiB,CAC1B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EACvC,WAAW,EACX,OAAO,CAAC,KAAK,IAAI,EAAE,EAClB,OAAe,CAAC,UAAU,IAAI,EAAE,EACjC,OAAO,CAAC,cAAc,CACvB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,kBAAkB;QAChB,OAAO;YACL,gCAAoB;YACpB,kCAAsB;YACtB,mCAAuB;YACvB,mCAAuB;YACvB,iCAAqB;YACrB,+BAAmB;YACnB,mCAAuB;YACvB,kCAAsB;SACvB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,gCAAoB,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CAAC,KAAa;QAClC,OAAO,0CAA8B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;CACF;AAzED,8DAyEC"}
@@ -20,6 +20,14 @@ export declare class HttpError extends Error {
20
20
  * Unified HTTP client for chat services
21
21
  */
22
22
  export declare class ChatServiceHttpClient {
23
+ /**
24
+ * Injectable fetch implementation (browser/node: native fetch, GAS: UrlFetchApp wrapper)
25
+ */
26
+ private static fetchImpl;
27
+ /**
28
+ * Set custom fetch implementation
29
+ */
30
+ static setFetch(fn: (url: string, init?: RequestInit) => Promise<Response>): void;
23
31
  /**
24
32
  * Make a POST request with common error handling
25
33
  * @param url Request URL
@@ -1 +1 @@
1
- {"version":3,"file":"chatServiceHttpClient.d.ts","sourceRoot":"","sources":["../../../src/utils/chatServiceHttpClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAEzB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,MAAM;IAClB,IAAI,EAAE,MAAM;gBAFZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM;CAKtB;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;;;;;;OAOG;WACU,IAAI,CACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC;IA6DpB;;;;OAIG;WACU,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAK/D;;;;;;OAMG;WACU,GAAG,CACd,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC;CAoDrB"}
1
+ {"version":3,"file":"chatServiceHttpClient.d.ts","sourceRoot":"","sources":["../../../src/utils/chatServiceHttpClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAEzB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,MAAM;IAClB,IAAI,EAAE,MAAM;gBAFZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM;CAKtB;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS,CAGuB;IAE/C;;OAEG;IACH,MAAM,CAAC,QAAQ,CACb,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,GACzD,IAAI;IAIP;;;;;;;OAOG;WACU,IAAI,CACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC;IAiEpB;;;;OAIG;WACU,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAK/D;;;;;;OAMG;WACU,GAAG,CACd,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC;CAuDrB"}
@@ -18,6 +18,12 @@ exports.HttpError = HttpError;
18
18
  * Unified HTTP client for chat services
19
19
  */
20
20
  class ChatServiceHttpClient {
21
+ /**
22
+ * Set custom fetch implementation
23
+ */
24
+ static setFetch(fn) {
25
+ this.fetchImpl = fn;
26
+ }
21
27
  /**
22
28
  * Make a POST request with common error handling
23
29
  * @param url Request URL
@@ -36,15 +42,20 @@ class ChatServiceHttpClient {
36
42
  let lastError = null;
37
43
  for (let attempt = 0; attempt <= retries; attempt++) {
38
44
  try {
39
- const controller = new AbortController();
40
- const timeoutId = setTimeout(() => controller.abort(), timeout);
41
- const response = await fetch(url, {
45
+ const hasAbort = typeof AbortController !== 'undefined';
46
+ const controller = hasAbort ? new AbortController() : undefined;
47
+ const timeoutId = hasAbort
48
+ ? setTimeout(() => controller.abort(), timeout)
49
+ : undefined;
50
+ const response = await ChatServiceHttpClient.fetchImpl(url, {
42
51
  method: 'POST',
43
52
  headers: finalHeaders,
44
53
  body: typeof body === 'string' ? body : JSON.stringify(body),
45
- signal: controller.signal,
54
+ // Attach signal only when controller exists
55
+ ...(controller ? { signal: controller.signal } : {}),
46
56
  });
47
- clearTimeout(timeoutId);
57
+ if (timeoutId)
58
+ clearTimeout(timeoutId);
48
59
  if (!response.ok) {
49
60
  const errorBody = await response.text();
50
61
  throw new HttpError(response.status, response.statusText, errorBody);
@@ -92,14 +103,18 @@ class ChatServiceHttpClient {
92
103
  let lastError = null;
93
104
  for (let attempt = 0; attempt <= retries; attempt++) {
94
105
  try {
95
- const controller = new AbortController();
96
- const timeoutId = setTimeout(() => controller.abort(), timeout);
97
- const response = await fetch(url, {
106
+ const hasAbort = typeof AbortController !== 'undefined';
107
+ const controller = hasAbort ? new AbortController() : undefined;
108
+ const timeoutId = hasAbort
109
+ ? setTimeout(() => controller.abort(), timeout)
110
+ : undefined;
111
+ const response = await ChatServiceHttpClient.fetchImpl(url, {
98
112
  method: 'GET',
99
113
  headers,
100
- signal: controller.signal,
114
+ ...(controller ? { signal: controller.signal } : {}),
101
115
  });
102
- clearTimeout(timeoutId);
116
+ if (timeoutId)
117
+ clearTimeout(timeoutId);
103
118
  if (!response.ok) {
104
119
  const errorBody = await response.text();
105
120
  throw new HttpError(response.status, response.statusText, errorBody);
@@ -128,4 +143,8 @@ class ChatServiceHttpClient {
128
143
  }
129
144
  }
130
145
  exports.ChatServiceHttpClient = ChatServiceHttpClient;
146
+ /**
147
+ * Injectable fetch implementation (browser/node: native fetch, GAS: UrlFetchApp wrapper)
148
+ */
149
+ ChatServiceHttpClient.fetchImpl = (u, i) => fetch(u, i);
131
150
  //# sourceMappingURL=chatServiceHttpClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatServiceHttpClient.js","sourceRoot":"","sources":["../../../src/utils/chatServiceHttpClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatServiceHttpClient.js","sourceRoot":"","sources":["../../../src/utils/chatServiceHttpClient.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,5 @@ export * from './chatServiceHttpClient';
5
5
  export * from './streamTextAccumulator';
6
6
  export * from './screenplay';
7
7
  export * from './emotionParser';
8
+ export * from './runOnce';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
@@ -21,4 +21,5 @@ __exportStar(require("./chatServiceHttpClient"), exports);
21
21
  __exportStar(require("./streamTextAccumulator"), exports);
22
22
  __exportStar(require("./screenplay"), exports);
23
23
  __exportStar(require("./emotionParser"), exports);
24
+ __exportStar(require("./runOnce"), exports);
24
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,0DAAwC;AACxC,0DAAwC;AACxC,+CAA6B;AAC7B,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,0DAAwC;AACxC,0DAAwC;AACxC,+CAA6B;AAC7B,kDAAgC;AAChC,4CAA0B"}
@@ -0,0 +1,8 @@
1
+ import type { ChatService } from '../services/ChatService';
2
+ import type { Message } from '../types';
3
+ /**
4
+ * Run a single non-streaming chat request and return concatenated text.
5
+ * Intended for environments without streaming support (e.g., Google Apps Script).
6
+ */
7
+ export declare function runOnceText(chat: ChatService, messages: Message[]): Promise<string>;
8
+ //# sourceMappingURL=runOnce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runOnce.d.ts","sourceRoot":"","sources":["../../../src/utils/runOnce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,CAGjB"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runOnceText = runOnceText;
4
+ const streamTextAccumulator_1 = require("./streamTextAccumulator");
5
+ /**
6
+ * Run a single non-streaming chat request and return concatenated text.
7
+ * Intended for environments without streaming support (e.g., Google Apps Script).
8
+ */
9
+ async function runOnceText(chat, messages) {
10
+ const { blocks } = await chat.chatOnce(messages, false, () => { });
11
+ return streamTextAccumulator_1.StreamTextAccumulator.getFullText(blocks);
12
+ }
13
+ //# sourceMappingURL=runOnce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runOnce.js","sourceRoot":"","sources":["../../../src/utils/runOnce.ts"],"names":[],"mappings":";;AAQA,kCAMC;AAZD,mEAAgE;AAEhE;;;GAGG;AACI,KAAK,UAAU,WAAW,CAC/B,IAAiB,EACjB,QAAmB;IAEnB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAClE,OAAO,6CAAqB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Installs a fetch implementation backed by Google Apps Script UrlFetchApp.
3
+ * Provides a minimal Response-like object for non-streaming requests.
4
+ */
5
+ export declare function installGASFetch(): void;
6
+ //# sourceMappingURL=gasFetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gasFetch.d.ts","sourceRoot":"","sources":["../../../src/adapters/gasFetch.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAiDtC"}
@@ -0,0 +1,50 @@
1
+ import { ChatServiceHttpClient } from '../utils/chatServiceHttpClient';
2
+ /**
3
+ * Installs a fetch implementation backed by Google Apps Script UrlFetchApp.
4
+ * Provides a minimal Response-like object for non-streaming requests.
5
+ */
6
+ export function installGASFetch() {
7
+ ChatServiceHttpClient.setFetch(async (url, init = {}) => {
8
+ const method = (init.method || 'GET').toString().toUpperCase();
9
+ // Normalize headers to a Record<string, string>
10
+ const rawHeaders = init.headers;
11
+ const headers = {};
12
+ if (Array.isArray(rawHeaders)) {
13
+ for (const [k, v] of rawHeaders)
14
+ headers[k] = String(v);
15
+ }
16
+ else if (rawHeaders && typeof rawHeaders === 'object') {
17
+ for (const [k, v] of Object.entries(rawHeaders))
18
+ headers[k] = String(v);
19
+ }
20
+ // Convert RequestInit to UrlFetchApp parameters
21
+ const params = {
22
+ method,
23
+ headers,
24
+ muteHttpExceptions: true,
25
+ };
26
+ // Body handling: accept string or object (serialize as JSON)
27
+ const body = init.body;
28
+ if (typeof body === 'string') {
29
+ params.payload = body;
30
+ }
31
+ else if (body != null) {
32
+ if (!headers['Content-Type'])
33
+ headers['Content-Type'] = 'application/json';
34
+ params.payload = JSON.stringify(body);
35
+ }
36
+ const res = UrlFetchApp.fetch(url, params);
37
+ const status = res.getResponseCode();
38
+ const text = res.getContentText();
39
+ // Return a minimal Response-like object used by the library.
40
+ const response = {
41
+ ok: status >= 200 && status < 300,
42
+ status,
43
+ statusText: String(status),
44
+ text: async () => text,
45
+ json: async () => (text ? JSON.parse(text) : null),
46
+ };
47
+ return response;
48
+ });
49
+ }
50
+ //# sourceMappingURL=gasFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gasFetch.js","sourceRoot":"","sources":["../../../src/adapters/gasFetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAKvE;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,qBAAqB,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAoB,EAAE,EAAE,EAAE;QACnE,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QAE/D,gDAAgD;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,OAIX,CAAC;QACd,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU;gBAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACxD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,gDAAgD;QAChD,MAAM,MAAM,GAA4B;YACtC,MAAM;YACN,OAAO;YACP,kBAAkB,EAAE,IAAI;SACzB,CAAC;QAEF,6DAA6D;QAC7D,MAAM,IAAI,GAAI,IAAsC,CAAC,IAAI,CAAC;QAC1D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC1B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YAC/C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAW,GAAG,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAW,GAAG,CAAC,cAAc,EAAE,CAAC;QAE1C,6DAA6D;QAC7D,MAAM,QAAQ,GAAsB;YAClC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;YACjC,MAAM;YACN,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SACnD,CAAC;QAEF,OAAO,QAAoB,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -5,5 +5,7 @@ export declare const MODEL_CLAUDE_3_5_SONNET = "claude-3-5-sonnet-20241022";
5
5
  export declare const MODEL_CLAUDE_3_7_SONNET = "claude-3-7-sonnet-20250219";
6
6
  export declare const MODEL_CLAUDE_4_SONNET = "claude-4-sonnet-20250514";
7
7
  export declare const MODEL_CLAUDE_4_OPUS = "claude-4-opus-20250514";
8
+ export declare const MODEL_CLAUDE_4_5_SONNET = "claude-sonnet-4-5-20250929";
9
+ export declare const MODEL_CLAUDE_4_5_HAIKU = "claude-haiku-4-5-20251001";
8
10
  export declare const CLAUDE_VISION_SUPPORTED_MODELS: string[];
9
11
  //# sourceMappingURL=claude.d.ts.map