thatgfsj-code 0.2.2 → 0.3.1
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/CHANGELOG.md +98 -0
- package/dist/core/config.d.ts +17 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +42 -9
- package/dist/core/config.js.map +1 -1
- package/dist/core/types.d.ts +8 -8
- package/dist/core/types.js +8 -8
- package/dist/core/types.js.map +1 -1
- package/dist/repl/loop.d.ts +92 -17
- package/dist/repl/loop.d.ts.map +1 -1
- package/dist/repl/loop.js +458 -96
- package/dist/repl/loop.js.map +1 -1
- package/dist/repl/welcome.d.ts.map +1 -1
- package/dist/repl/welcome.js +33 -28
- package/dist/repl/welcome.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -15,6 +15,104 @@ All notable changes to **Thatgfsj Code** are documented here. The format follows
|
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
+
## [0.3.1] - 2026-07-06
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- **「已保存的模型」作为 `/model` 主视图**:0.2.x 进 `/model` 先列内置模型,
|
|
22
|
+
这版改为先列 `~/.thatgfsj/models.json` 里**已经保存的模型**(显示 id +
|
|
23
|
+
`ctx` + `thinking` + `note/provider`),与 1.0.4 的 `ModelSelector` 行为
|
|
24
|
+
对齐。内置 provider 模型列表作为辅助信息保留在底部。
|
|
25
|
+
- **`+ 添加新模型` 向导**:在 `/model` 选 `a` / `add` / `+` 启动完整向导:
|
|
26
|
+
1. **步骤 1/6: 选择 provider**(10 个:8 个内置 + `custom_openai` + `custom_anthropic`)
|
|
27
|
+
2. **步骤 2/6: 输入 API Key**(custom_* 可选跳过)
|
|
28
|
+
3. **步骤 3/6: 输入 baseUrl**(仅 custom_*;要求 `https://.../v1` 形式)
|
|
29
|
+
4. **步骤 4/6: 输入模型 id**
|
|
30
|
+
5. **步骤 5/6: 上下文长度 (MiB)**(默认 8;常见 8 / 32 / 128 / 200)
|
|
31
|
+
6. **步骤 6/6: 思考强度**(`none` / `low` / `medium` / `high` / `max`,默认 `none`)
|
|
32
|
+
完成后:写入 `~/.thatgfsj/models.json`,同步切换到新模型(更新
|
|
33
|
+
`AIEngine` + `~/.thatgfsj/config.json`),并把 `[system: model ... added]`
|
|
34
|
+
注入 `SessionManager`,让 LLM 下一轮看到。
|
|
35
|
+
- **`/edit` 修改已保存模型**:1.0.4 时代就期望的能力,本次补齐:
|
|
36
|
+
- `/edit` 列出全部已保存模型,输入编号或完整 id 进入
|
|
37
|
+
- `/edit 1` / `/edit Qwen3-32B` 直接跳到对应模型
|
|
38
|
+
- 修改 `ctx` / `thinking` / `note`,空回车保留旧值,`-` 清空字段
|
|
39
|
+
- **`/provider` 支持自定义 provider**:
|
|
40
|
+
- 新增 `custom_openai`(OpenAI 兼容中转站)与 `custom_anthropic`
|
|
41
|
+
(Anthropic 兼容中转站)两项
|
|
42
|
+
- 选中后立刻提示输入 baseUrl,跳过内置的 `envKey` 校验
|
|
43
|
+
- 自动跟进 `/model` 让你顺便挑 / 添加一个模型
|
|
44
|
+
- **`SavedModel` 类型导出**(`src/repl/loop.ts`):
|
|
45
|
+
```ts
|
|
46
|
+
interface SavedModel {
|
|
47
|
+
id: string;
|
|
48
|
+
addedAt?: number;
|
|
49
|
+
ctx?: number; // 上下文长度,单位 MiB
|
|
50
|
+
thinking?: 'none' | 'low' | 'medium' | 'high' | 'max';
|
|
51
|
+
note?: string; // 备注(如 provider id、quant 说明等)
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
- **6 个新单元测试**(`tests/unit-wizard.test.js`):覆盖 v0.2.x → v0.3.x
|
|
55
|
+
history 形状的透明迁移、`appendSavedModel` 大小写不敏感去重 + canonical
|
|
56
|
+
casing 保留、`replaceSavedModel` 单条更新、`SavedModel` 形状 JSON 往返。
|
|
57
|
+
|
|
58
|
+
### Fixed
|
|
59
|
+
- **appendSavedModel casing**:之前大小写不一致的同一模型会被当成两条;
|
|
60
|
+
现在若已经存了 `Qwen3-32B`,再次输入 `qwen3-32b` 仍然只保留 `Qwen3-32B`
|
|
61
|
+
(原始拼写规范)。
|
|
62
|
+
|
|
63
|
+
> ⚠️ 上游 npm 上 `0.3.0` 已经被 1.0.4 时代占用过,因此本次发布使用 `0.3.1`,
|
|
64
|
+
> 仅是 patch 编号变化,feature 内容就是上面这份。
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## [0.2.3] - 2026-07-06
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
- **中文命令别名**:1.0.4 老版本支持的 `/模型`、`/提供商`、`/提供商切换`、
|
|
72
|
+
`/帮助`、`/退出`、`/清除`、`/清屏`、`/历史`、`/工具`、`/上下文`、
|
|
73
|
+
`/模型列表` 现在都被识别。同时支持全角斜杠 `/模型`。详见
|
|
74
|
+
`src/repl/loop.ts::handleCommand`。
|
|
75
|
+
- **`/model`「当前」标记**:即使当前模型不在内置列表里(老配置 / 自定义 id),
|
|
76
|
+
`/model` 现在会在顶部显示一行 `⮕ 当前 (非内置): <id>`,并保留内置 / 历史
|
|
77
|
+
列表中的 `✓` 标记逻辑。
|
|
78
|
+
- **3 个新单元测试**(`tests/unit-config.test.js`):验证 0.2.3 的
|
|
79
|
+
`ConfigManager` 行为契约(不再有 silent fallback 警告、从 `CUSTOM_BASE_URL`
|
|
80
|
+
/ `OPENAI_API_KEY` 派生 baseUrl、识别 8 个 provider name)。
|
|
81
|
+
|
|
82
|
+
### Fixed
|
|
83
|
+
- **legacy provider 名称崩溃**:0.2.2 的 `ConfigManager.resolveProvider` 对
|
|
84
|
+
任何不在白名单的 provider(如 1.0.4 的 `custom_openai`)会强行 overwrite
|
|
85
|
+
成 `siliconflow` 并打印 `Unknown provider: custom_openai, falling back to
|
|
86
|
+
siliconflow` 警告,结果用户的 `MiniMax-M3` 等真实配置被悄悄丢掉,下一个
|
|
87
|
+
AI 请求直接撞上 401。0.2.3 改为:
|
|
88
|
+
- 保留用户的 provider id 不动。
|
|
89
|
+
- 从 `CUSTOM_BASE_URL` / `BASE_URL` 环境变量派生 baseUrl,如果都没有则
|
|
90
|
+
退到 `https://api.openai.com/v1`。
|
|
91
|
+
- API Key 从 `OPENAI_API_KEY` / `CUSTOM_API_KEY` / config 里取。
|
|
92
|
+
- 不再打「Unknown provider」警告。
|
|
93
|
+
- **空 prompt / 引号包裹 prompt**:`REPLInput.prompt()` 收到被意外粘贴成
|
|
94
|
+
`""` 或 `''` 的内容时,0.2.3 会在 loop 里剥离外层引号再判断是否为空。
|
|
95
|
+
这避免了用户从 markdown 复制示例时把空串丢给 LLM(命中 `[API Error: 401]`)。
|
|
96
|
+
- **DEFAULT_CONFIG 太老**:`ConfigManager` 默认从 `Qwen2.5-7B-Instruct`
|
|
97
|
+
升级到 `Qwen3-235B-A22B-Instruct-2507`(或 `Qwen3-32B` 作为
|
|
98
|
+
`PROVIDERS.siliconflow.defaultModel`)。
|
|
99
|
+
|
|
100
|
+
### Changed
|
|
101
|
+
- **刷新内置模型列表**(`src/repl/welcome.ts` + `src/core/types.ts`):
|
|
102
|
+
- SiliconFlow:Qwen3-235B / Qwen3-Coder-480B / Kimi-K2 / DeepSeek-V3.2 /
|
|
103
|
+
ERNIE-4.5 等。
|
|
104
|
+
- MiniMax:M3(推荐)、M2.5、M2.1(默认从 `MiniMax-M2.5` 升到 `MiniMax-M3`)。
|
|
105
|
+
- OpenAI:GPT-4.1 / GPT-4.1-mini / GPT-4o / o4-mini / GPT-5。
|
|
106
|
+
- Anthropic:Claude-Haiku-4.5 / Claude-Sonnet-4.5 / Claude-Opus-4.1。
|
|
107
|
+
- Gemini:Gemini-2.5-Flash / Gemini-2.5-Pro / Gemini-2.0-Flash。
|
|
108
|
+
- Kimi:Moonshot-V1-128K / Kimi-K2。
|
|
109
|
+
- DeepSeek:DeepSeek-V3(带 R1 推理)。
|
|
110
|
+
- ERNIE:ERNIE-4.5-8K(百度最新旗舰)。
|
|
111
|
+
- **`PROVIDERS` 默认模型**全部更新到 2025+ 推荐(Qwen3-32B、MiniMax-M3、
|
|
112
|
+
GPT-4.1-mini、Claude-Haiku-4.5、Llama3、Gemini-2.5-Flash、Kimi-K2 等)。
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
18
116
|
## [0.2.2] - 2026-07-06
|
|
19
117
|
|
|
20
118
|
### Added
|
package/dist/core/config.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Config Manager - Handles configuration loading and saving
|
|
3
3
|
* Supports multiple AI providers: MiniMax, SiliconFlow, OpenAI, Anthropic
|
|
4
|
+
*
|
|
5
|
+
* 0.2.3: Tolerates unknown / legacy provider names (e.g. `custom_openai`
|
|
6
|
+
* from 1.0.4-era configs) — keeps the user's provider and falls back to
|
|
7
|
+
* deriving a sensible baseUrl from `CUSTOM_BASE_URL` / `BASE_URL` env vars
|
|
8
|
+
* or from the provider id itself, instead of silently overwriting the
|
|
9
|
+
* provider field. Also refreshes default model to current SiliconFlow
|
|
10
|
+
* recommendation (Qwen2.5-72B-Instruct instead of 7B).
|
|
4
11
|
*/
|
|
5
12
|
import { Config, AIConfig } from './types.js';
|
|
6
13
|
export declare class ConfigManager {
|
|
@@ -16,6 +23,16 @@ export declare class ConfigManager {
|
|
|
16
23
|
private loadConfig;
|
|
17
24
|
/**
|
|
18
25
|
* Resolve provider and API key from config or environment
|
|
26
|
+
*
|
|
27
|
+
* 0.2.3: tolerate unknown / legacy provider names (e.g. `custom_openai`).
|
|
28
|
+
* - If the provider is in `PROVIDERS`, use its baseUrl + envKeys.
|
|
29
|
+
* - Otherwise keep the user-specified provider id exactly and try to
|
|
30
|
+
* derive a baseUrl from `CUSTOM_BASE_URL` / `BASE_URL` env vars; if
|
|
31
|
+
* neither is set, fall back to the OpenAI-compatible default
|
|
32
|
+
* (https://api.openai.com/v1) so the request still goes through.
|
|
33
|
+
* No silent overwrite of `provider`.
|
|
34
|
+
* - When API key is missing for an unknown provider, we still keep the
|
|
35
|
+
* provider and surface a non-fatal warning.
|
|
19
36
|
*/
|
|
20
37
|
private resolveProvider;
|
|
21
38
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,MAAM,EAAa,QAAQ,EAAE,MAAM,YAAY,CAAC;AAWzD,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;;IAQ3B;;OAEG;WACU,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC;;OAEG;IACH,OAAO,CAAC,UAAU;IAmBlB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,eAAe;IA4DvB;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IAY7C;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,MAAM;CAK/B"}
|
package/dist/core/config.js
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Config Manager - Handles configuration loading and saving
|
|
3
3
|
* Supports multiple AI providers: MiniMax, SiliconFlow, OpenAI, Anthropic
|
|
4
|
+
*
|
|
5
|
+
* 0.2.3: Tolerates unknown / legacy provider names (e.g. `custom_openai`
|
|
6
|
+
* from 1.0.4-era configs) — keeps the user's provider and falls back to
|
|
7
|
+
* deriving a sensible baseUrl from `CUSTOM_BASE_URL` / `BASE_URL` env vars
|
|
8
|
+
* or from the provider id itself, instead of silently overwriting the
|
|
9
|
+
* provider field. Also refreshes default model to current SiliconFlow
|
|
10
|
+
* recommendation (Qwen2.5-72B-Instruct instead of 7B).
|
|
4
11
|
*/
|
|
5
12
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
6
13
|
import { join, dirname } from 'path';
|
|
7
14
|
import { homedir } from 'os';
|
|
8
15
|
import { PROVIDERS } from './types.js';
|
|
9
16
|
const DEFAULT_CONFIG = {
|
|
10
|
-
model: 'Qwen/Qwen2.5-
|
|
17
|
+
model: 'Qwen/Qwen2.5-72B-Instruct',
|
|
11
18
|
apiKey: '',
|
|
12
19
|
temperature: 0.7,
|
|
13
20
|
maxTokens: 4096,
|
|
@@ -49,27 +56,53 @@ export class ConfigManager {
|
|
|
49
56
|
}
|
|
50
57
|
/**
|
|
51
58
|
* Resolve provider and API key from config or environment
|
|
59
|
+
*
|
|
60
|
+
* 0.2.3: tolerate unknown / legacy provider names (e.g. `custom_openai`).
|
|
61
|
+
* - If the provider is in `PROVIDERS`, use its baseUrl + envKeys.
|
|
62
|
+
* - Otherwise keep the user-specified provider id exactly and try to
|
|
63
|
+
* derive a baseUrl from `CUSTOM_BASE_URL` / `BASE_URL` env vars; if
|
|
64
|
+
* neither is set, fall back to the OpenAI-compatible default
|
|
65
|
+
* (https://api.openai.com/v1) so the request still goes through.
|
|
66
|
+
* No silent overwrite of `provider`.
|
|
67
|
+
* - When API key is missing for an unknown provider, we still keep the
|
|
68
|
+
* provider and surface a non-fatal warning.
|
|
52
69
|
*/
|
|
53
70
|
resolveProvider(config) {
|
|
54
71
|
const provider = config.provider || 'siliconflow';
|
|
55
|
-
const providerConfig =
|
|
72
|
+
const providerConfig = PROVIDERS[provider];
|
|
56
73
|
if (!providerConfig) {
|
|
57
|
-
|
|
58
|
-
|
|
74
|
+
// Unknown / legacy / custom provider — keep what the user wrote, but
|
|
75
|
+
// resolve a reasonable baseUrl.
|
|
76
|
+
const envBase = process.env.CUSTOM_BASE_URL || process.env.BASE_URL;
|
|
77
|
+
const baseUrl = config.baseUrl ||
|
|
78
|
+
envBase ||
|
|
79
|
+
// Last-resort: OpenAI-compatible default. The user can override via
|
|
80
|
+
// `gfcode init` or by editing ~/.thatgfsj/config.json.
|
|
81
|
+
'https://api.openai.com/v1';
|
|
82
|
+
const apiKey = config.apiKey ||
|
|
83
|
+
process.env.OPENAI_API_KEY ||
|
|
84
|
+
process.env.CUSTOM_API_KEY ||
|
|
85
|
+
'';
|
|
86
|
+
// Model: keep user choice, otherwise fall back to env MODEL, otherwise
|
|
87
|
+
// a benign default. No warning spam — this is an expected path.
|
|
88
|
+
const model = config.model || process.env.MODEL || 'gpt-4o-mini';
|
|
89
|
+
return {
|
|
90
|
+
...config,
|
|
91
|
+
provider: provider,
|
|
92
|
+
baseUrl,
|
|
93
|
+
model,
|
|
94
|
+
apiKey,
|
|
95
|
+
};
|
|
59
96
|
}
|
|
60
|
-
//
|
|
97
|
+
// Known provider
|
|
61
98
|
let model = process.env.MODEL || config.model || providerConfig.defaultModel;
|
|
62
|
-
// Handle Ollama (local, no API key needed)
|
|
63
99
|
let apiKey = config.apiKey;
|
|
64
100
|
let baseUrl = config.baseUrl || providerConfig.baseUrl;
|
|
65
101
|
if (provider === 'ollama') {
|
|
66
|
-
// Ollama doesn't need an API key
|
|
67
102
|
apiKey = '';
|
|
68
|
-
// Allow custom base URL via environment
|
|
69
103
|
baseUrl = process.env.OLLAMA_BASE_URL || baseUrl;
|
|
70
104
|
}
|
|
71
105
|
else {
|
|
72
|
-
// Try to get API key from environment
|
|
73
106
|
for (const envKey of providerConfig.envKeys) {
|
|
74
107
|
if (process.env[envKey]) {
|
|
75
108
|
apiKey = process.env[envKey];
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -151,43 +151,43 @@ export declare const PROVIDERS: {
|
|
|
151
151
|
readonly minimax: {
|
|
152
152
|
readonly name: "MiniMax";
|
|
153
153
|
readonly baseUrl: "https://api.minimax.io/anthropic/v1";
|
|
154
|
-
readonly defaultModel: "MiniMax-
|
|
154
|
+
readonly defaultModel: "MiniMax-M3";
|
|
155
155
|
readonly envKeys: readonly ["MINIMAX_API_KEY", "OPENAI_API_KEY"];
|
|
156
156
|
};
|
|
157
157
|
readonly siliconflow: {
|
|
158
158
|
readonly name: "SiliconFlow (硅基流动)";
|
|
159
159
|
readonly baseUrl: "https://api.siliconflow.cn/v1";
|
|
160
|
-
readonly defaultModel: "Qwen/
|
|
160
|
+
readonly defaultModel: "Qwen/Qwen3-32B";
|
|
161
161
|
readonly envKeys: readonly ["SILICONFLOW_API_KEY", "OPENAI_API_KEY"];
|
|
162
162
|
};
|
|
163
163
|
readonly openai: {
|
|
164
164
|
readonly name: "OpenAI";
|
|
165
165
|
readonly baseUrl: "https://api.openai.com/v1";
|
|
166
|
-
readonly defaultModel: "gpt-
|
|
166
|
+
readonly defaultModel: "gpt-4.1-mini";
|
|
167
167
|
readonly envKeys: readonly ["OPENAI_API_KEY"];
|
|
168
168
|
};
|
|
169
169
|
readonly anthropic: {
|
|
170
170
|
readonly name: "Anthropic";
|
|
171
171
|
readonly baseUrl: "https://api.anthropic.com/v1";
|
|
172
|
-
readonly defaultModel: "claude-
|
|
172
|
+
readonly defaultModel: "claude-haiku-4-5-20251001";
|
|
173
173
|
readonly envKeys: readonly ["ANTHROPIC_API_KEY"];
|
|
174
174
|
};
|
|
175
175
|
readonly ollama: {
|
|
176
176
|
readonly name: "Ollama (Local)";
|
|
177
177
|
readonly baseUrl: string;
|
|
178
|
-
readonly defaultModel: "
|
|
178
|
+
readonly defaultModel: "llama3";
|
|
179
179
|
readonly envKeys: readonly [];
|
|
180
180
|
};
|
|
181
181
|
readonly gemini: {
|
|
182
182
|
readonly name: "Google Gemini";
|
|
183
183
|
readonly baseUrl: "https://generativelanguage.googleapis.com/v1beta";
|
|
184
|
-
readonly defaultModel: "gemini-
|
|
184
|
+
readonly defaultModel: "gemini-2.5-flash";
|
|
185
185
|
readonly envKeys: readonly ["GEMINI_API_KEY"];
|
|
186
186
|
};
|
|
187
187
|
readonly kimi: {
|
|
188
188
|
readonly name: "Kimi (Moonshot AI)";
|
|
189
189
|
readonly baseUrl: "https://api.moonshot.cn/v1";
|
|
190
|
-
readonly defaultModel: "
|
|
190
|
+
readonly defaultModel: "kimi-k2-instruct";
|
|
191
191
|
readonly envKeys: readonly ["KIMI_API_KEY", "MOONSHOT_API_KEY"];
|
|
192
192
|
};
|
|
193
193
|
readonly deepseek: {
|
|
@@ -199,7 +199,7 @@ export declare const PROVIDERS: {
|
|
|
199
199
|
readonly ernie: {
|
|
200
200
|
readonly name: "Baidu ERNIE (文心一言)";
|
|
201
201
|
readonly baseUrl: "https://aip.baidubce.com/rpc/2.0/ai_custom/v1";
|
|
202
|
-
readonly defaultModel: "ernie-4.
|
|
202
|
+
readonly defaultModel: "ernie-4.5-8k";
|
|
203
203
|
readonly envKeys: readonly ["ERNIE_API_KEY", "BAIDU_API_KEY"];
|
|
204
204
|
};
|
|
205
205
|
};
|
package/dist/core/types.js
CHANGED
|
@@ -72,43 +72,43 @@ export const PROVIDERS = {
|
|
|
72
72
|
minimax: {
|
|
73
73
|
name: 'MiniMax',
|
|
74
74
|
baseUrl: 'https://api.minimax.io/anthropic/v1',
|
|
75
|
-
defaultModel: 'MiniMax-
|
|
75
|
+
defaultModel: 'MiniMax-M3',
|
|
76
76
|
envKeys: ['MINIMAX_API_KEY', 'OPENAI_API_KEY']
|
|
77
77
|
},
|
|
78
78
|
siliconflow: {
|
|
79
79
|
name: 'SiliconFlow (硅基流动)',
|
|
80
80
|
baseUrl: 'https://api.siliconflow.cn/v1',
|
|
81
|
-
defaultModel: 'Qwen/
|
|
81
|
+
defaultModel: 'Qwen/Qwen3-32B',
|
|
82
82
|
envKeys: ['SILICONFLOW_API_KEY', 'OPENAI_API_KEY']
|
|
83
83
|
},
|
|
84
84
|
openai: {
|
|
85
85
|
name: 'OpenAI',
|
|
86
86
|
baseUrl: 'https://api.openai.com/v1',
|
|
87
|
-
defaultModel: 'gpt-
|
|
87
|
+
defaultModel: 'gpt-4.1-mini',
|
|
88
88
|
envKeys: ['OPENAI_API_KEY']
|
|
89
89
|
},
|
|
90
90
|
anthropic: {
|
|
91
91
|
name: 'Anthropic',
|
|
92
92
|
baseUrl: 'https://api.anthropic.com/v1',
|
|
93
|
-
defaultModel: 'claude-
|
|
93
|
+
defaultModel: 'claude-haiku-4-5-20251001',
|
|
94
94
|
envKeys: ['ANTHROPIC_API_KEY']
|
|
95
95
|
},
|
|
96
96
|
ollama: {
|
|
97
97
|
name: 'Ollama (Local)',
|
|
98
98
|
baseUrl: process.env.OLLAMA_BASE_URL || 'http://localhost:11434',
|
|
99
|
-
defaultModel: '
|
|
99
|
+
defaultModel: 'llama3',
|
|
100
100
|
envKeys: []
|
|
101
101
|
},
|
|
102
102
|
gemini: {
|
|
103
103
|
name: 'Google Gemini',
|
|
104
104
|
baseUrl: 'https://generativelanguage.googleapis.com/v1beta',
|
|
105
|
-
defaultModel: 'gemini-
|
|
105
|
+
defaultModel: 'gemini-2.5-flash',
|
|
106
106
|
envKeys: ['GEMINI_API_KEY']
|
|
107
107
|
},
|
|
108
108
|
kimi: {
|
|
109
109
|
name: 'Kimi (Moonshot AI)',
|
|
110
110
|
baseUrl: 'https://api.moonshot.cn/v1',
|
|
111
|
-
defaultModel: '
|
|
111
|
+
defaultModel: 'kimi-k2-instruct',
|
|
112
112
|
envKeys: ['KIMI_API_KEY', 'MOONSHOT_API_KEY']
|
|
113
113
|
},
|
|
114
114
|
deepseek: {
|
|
@@ -120,7 +120,7 @@ export const PROVIDERS = {
|
|
|
120
120
|
ernie: {
|
|
121
121
|
name: 'Baidu ERNIE (文心一言)',
|
|
122
122
|
baseUrl: 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1',
|
|
123
|
-
defaultModel: 'ernie-4.
|
|
123
|
+
defaultModel: 'ernie-4.5-8k',
|
|
124
124
|
envKeys: ['ERNIE_API_KEY', 'BAIDU_API_KEY']
|
|
125
125
|
}
|
|
126
126
|
};
|
package/dist/core/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsHH;;GAEG;AACH,MAAM,OAAO,WAAW;IACd,KAAK,GAAG,EAAE,CAAC;IACX,YAAY,GAAG,EAAE,CAAC;IAClB,WAAW,GAAoB,EAAE,CAAC;IAClC,YAAY,GAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACnE,SAAS,GAAiB,EAAE,CAAC;IAC7B,GAAG,CAA0E;IAErF,IAAI,CAAC,CAAS,IAAU,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACtD,WAAW,CAAC,CAAS,IAAU,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAEpE,KAAK,CAAC,CAAgB;QACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;YACrC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,WAAmB,EAAE,QAAQ,GAAG,IAAI,EAAE,UAAmB;QACjF,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,WAAmB,EAAE,QAAQ,GAAG,IAAI,EAAE,UAAmB;QACjF,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,WAAmB,EAAE,WAAoB,KAAK,EAAE,UAAoB;QAC7F,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,QAAQ,CAAC,GAAG,KAAe;QACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,CAAe;QAClB,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,GAAG,KAAmD;QAChE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,GAAG,CAAW;QACjB,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,EAA0E;QAC/E,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,OAAO,EAAE,IAAI,CAAC,GAAG;SAClB,CAAC;IACJ,CAAC;CACF;AA2BD,0BAA0B;AAC1B,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,qCAAqC;QAC9C,YAAY,EAAE,YAAY;QAC1B,OAAO,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;KAC/C;IACD,WAAW,EAAE;QACX,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,+BAA+B;QACxC,YAAY,EAAE,gBAAgB;QAC9B,OAAO,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;KACnD;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,2BAA2B;QACpC,YAAY,EAAE,cAAc;QAC5B,OAAO,EAAE,CAAC,gBAAgB,CAAC;KAC5B;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,2BAA2B;QACzC,OAAO,EAAE,CAAC,mBAAmB,CAAC;KAC/B;IACD,MAAM,EAAE;QACN,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,wBAAwB;QAChE,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,EAAE;KACZ;IACD,MAAM,EAAE;QACN,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,kDAAkD;QAC3D,YAAY,EAAE,kBAAkB;QAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;KAC5B;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,4BAA4B;QACrC,YAAY,EAAE,kBAAkB;QAChC,OAAO,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC;KAC9C;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,6BAA6B;QACtC,YAAY,EAAE,eAAe;QAC7B,OAAO,EAAE,CAAC,kBAAkB,CAAC;KAC9B;IACD,KAAK,EAAE;QACL,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,+CAA+C;QACxD,YAAY,EAAE,cAAc;QAC5B,OAAO,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;KAC5C;CACO,CAAC"}
|
package/dist/repl/loop.d.ts
CHANGED
|
@@ -7,6 +7,23 @@
|
|
|
7
7
|
* - 流式输出保留完整内容(用户可滚动终端查看历史),不跳顶不刷屏
|
|
8
8
|
* - Ctrl+C 行为:有未提交内容=>清空当前输入;空输入两次=>退出
|
|
9
9
|
*/
|
|
10
|
+
/**
|
|
11
|
+
* One entry in ~/.thatgfsj/models.json (added in 0.3.0).
|
|
12
|
+
*/
|
|
13
|
+
export interface SavedModel {
|
|
14
|
+
/** Model id used in API requests, e.g. `Qwen3-32B` or `claude-sonnet-4-5`. */
|
|
15
|
+
id: string;
|
|
16
|
+
/** Unix ms timestamp when this entry was last written. Defaults to 0
|
|
17
|
+
* on legacy entries; `appendSavedModel` always overwrites it with
|
|
18
|
+
* `Date.now()` at write time. */
|
|
19
|
+
addedAt?: number;
|
|
20
|
+
/** Optional context-window length in MiB (the `ctx` field). */
|
|
21
|
+
ctx?: number;
|
|
22
|
+
/** Optional thinking-effort hint: 'none' | 'low' | 'medium' | 'high' | 'max'. */
|
|
23
|
+
thinking?: 'none' | 'low' | 'medium' | 'high' | 'max';
|
|
24
|
+
/** Optional free-form note (e.g. "Q4 quantized via openrouter"). */
|
|
25
|
+
note?: string;
|
|
26
|
+
}
|
|
10
27
|
export declare class REPLLoop {
|
|
11
28
|
private input;
|
|
12
29
|
private output;
|
|
@@ -26,6 +43,10 @@ export declare class REPLLoop {
|
|
|
26
43
|
start(): Promise<void>;
|
|
27
44
|
/**
|
|
28
45
|
* Handle built-in commands
|
|
46
|
+
*
|
|
47
|
+
* Accepts bare words, slash-prefixed forms (`/model`), AND Chinese aliases
|
|
48
|
+
* (`/模型`, `/提供商`, `/帮助`, `/清除`, `/退出`, `/历史`, `/工具`).
|
|
49
|
+
* The Chinese forms mirror thatgfsj-code@1.0.4 behaviour.
|
|
29
50
|
*/
|
|
30
51
|
private handleCommand;
|
|
31
52
|
/**
|
|
@@ -42,37 +63,86 @@ export declare class REPLLoop {
|
|
|
42
63
|
private showTools;
|
|
43
64
|
private showProviders;
|
|
44
65
|
/**
|
|
45
|
-
* /model —
|
|
46
|
-
* Persists the choice to ~/.thatgfsj/config.json and updates the running
|
|
47
|
-
* AIEngine so subsequent requests use the new model immediately. Also
|
|
48
|
-
* appends the picked model id to ~/.thatgfsj/models.json so it shows up
|
|
49
|
-
* as a recent option across sessions (mirrors the 1.0.4 behaviour).
|
|
66
|
+
* /model — main entry point for model management.
|
|
50
67
|
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
68
|
+
* 0.3.0 UX (per user feedback):
|
|
69
|
+
* - 先看到的是**已经保存的模型** (从 ~/.thatgfsj/models.json 读),
|
|
70
|
+
* 而不是内置 provider 列表。
|
|
71
|
+
* - 列表末尾是 `+ 添加新模型` 选项 → 触发完整向导
|
|
72
|
+
* (provider → api_key → baseUrl(可选,用于中转站) → model_name →
|
|
73
|
+
* context length (M) → thinking effort)。
|
|
74
|
+
* - 顶部有 `edit` 模式,可以重新修改任意已保存模型。
|
|
75
|
+
* - 选某条 saved model 后立即切换并退出;按 Enter 不变。
|
|
76
|
+
* - 兼容 0.2.x / 1.0.4 老 history:
|
|
77
|
+
* - 字符串数组会透明迁移成 {id,...} 形式。
|
|
78
|
+
* - 内置模型 (`Qwen3-32B` 之类) 也可选择,作为「saved + builtin」展示。
|
|
58
79
|
*/
|
|
59
80
|
private handleModelSwitch;
|
|
60
81
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
82
|
+
* Add-model wizard (0.3.0+):
|
|
83
|
+
* Step 1: Provider (内置 / custom_openai / custom_anthropic)
|
|
84
|
+
* Step 2: API Key (内置:给注册链接;custom:无)
|
|
85
|
+
* Step 3: Base URL (仅 custom_*;内置跳过)
|
|
86
|
+
* Step 4: 模型名称 (自由输入)
|
|
87
|
+
* Step 5: 上下文长度 (MiB,数字,默认 8)
|
|
88
|
+
* Step 6: 思考强度 (none / low / medium / high / max,默认 none)
|
|
89
|
+
*
|
|
90
|
+
* 完成后:写入 ~/.thatgfsj/models.json,顺便把新模型切到当前,
|
|
91
|
+
* 更新 AIEngine + 写入 ~/.thatgfsj/config.json model 字段。
|
|
92
|
+
*/
|
|
93
|
+
private runAddModelWizard;
|
|
94
|
+
/**
|
|
95
|
+
* Edit-model wizard (0.3.0+): pick a saved model and update ctx /
|
|
96
|
+
* thinking / note without leaving the REPL.
|
|
97
|
+
*/
|
|
98
|
+
private runEditModelWizard;
|
|
99
|
+
/**
|
|
100
|
+
* Persist a provider choice + custom baseUrl + apiKey into
|
|
101
|
+
* ~/.thatgfsj/config.json and reload AIEngine config. Differs from
|
|
102
|
+
* applyProviderSwitch in that this also writes a custom baseUrl.
|
|
103
|
+
*/
|
|
104
|
+
private applyProviderSwitchInternal;
|
|
105
|
+
/**
|
|
106
|
+
* Read ~/.thatgfsj/models.json — a list of saved models the user has
|
|
107
|
+
* previously switched to or added. Starting from 0.3.0 each entry is
|
|
108
|
+
* `{ id, addedAt, ctx?, thinking?, note? }`. Older releases stored a
|
|
109
|
+
* flat array of strings; we transparently migrate that on read.
|
|
64
110
|
*/
|
|
65
111
|
private loadModelHistory;
|
|
66
112
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
113
|
+
* Read ~/.thatgfsj/models.json as a list of SavedModel entries.
|
|
114
|
+
* Migrates v0.2.x's `["id1","id2"]` shape into 0.3.0's `{id,...}` shape
|
|
115
|
+
* on the fly, leaving the on-disk file untouched until a write happens.
|
|
116
|
+
*/
|
|
117
|
+
private loadSavedModels;
|
|
118
|
+
/**
|
|
119
|
+
* Legacy helper: append a model id to ~/.thatgfsj/models.json.
|
|
120
|
+
* New callers should prefer `appendSavedModel` so we don't lose
|
|
121
|
+
* ctx / thinking metadata.
|
|
69
122
|
*/
|
|
70
123
|
private appendModelHistory;
|
|
124
|
+
/**
|
|
125
|
+
* Persist a SavedModel into ~/.thatgfsj/models.json, replacing any
|
|
126
|
+
* existing entry with the same id (case-insensitive). The original
|
|
127
|
+
* casing of the entry is preserved — i.e. if the user already has
|
|
128
|
+
* `Qwen3-32B` saved and types `qwen3-32b`, the canonical `Qwen3-32B`
|
|
129
|
+
* casing is kept. Newest entries go at the tail of the file.
|
|
130
|
+
*/
|
|
131
|
+
private appendSavedModel;
|
|
132
|
+
/** Replace an existing saved model entry (matched by id). */
|
|
133
|
+
private replaceSavedModel;
|
|
71
134
|
/**
|
|
72
135
|
* /provider — interactive provider picker. After provider selection,
|
|
73
136
|
* delegates to /model so the user can also pick a new model for the new provider.
|
|
74
137
|
*/
|
|
75
138
|
private handleProviderSwitch;
|
|
139
|
+
/**
|
|
140
|
+
* /edit [n] — short-hand for the edit wizard.
|
|
141
|
+
* `/edit` → list saved models, ask which to edit.
|
|
142
|
+
* `/edit 1` → jump to wizard for saved model #1.
|
|
143
|
+
* `/edit Qwen3-32B` → jump to wizard for the model whose id matches.
|
|
144
|
+
*/
|
|
145
|
+
private runEditShortcut;
|
|
76
146
|
/**
|
|
77
147
|
* Persist a model choice and update the running AIEngine.
|
|
78
148
|
*/
|
|
@@ -97,6 +167,11 @@ export declare class REPLLoop {
|
|
|
97
167
|
* `null` if the user pressed Ctrl+C (does not throw).
|
|
98
168
|
*/
|
|
99
169
|
private askOnce;
|
|
170
|
+
/**
|
|
171
|
+
* Validate-and-collect a numeric choice within `[min..max]`. Accepts
|
|
172
|
+
* empty input as `defaultValue`. Returns `null` on Ctrl+C.
|
|
173
|
+
*/
|
|
174
|
+
private askChoice;
|
|
100
175
|
/**
|
|
101
176
|
* Stop the REPL
|
|
102
177
|
*/
|
package/dist/repl/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/repl/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO,CAAC,WAAW,CAAgC;;IAOnD;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/repl/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX;;sCAEkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACtD,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO,CAAC,WAAW,CAAgC;;IAOnD;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C5B;;;;;;OAMG;YACW,aAAa;IA8E3B;;;;;;;OAOG;YACW,YAAY;IAsD1B,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,aAAa;IAarB;;;;;;;;;;;;;;OAcG;YACW,iBAAiB;IA6H/B;;;;;;;;;;;OAWG;YACW,iBAAiB;IA0G/B;;;OAGG;YACW,kBAAkB;IA2ChC;;;;OAIG;YACW,2BAA2B;IAezC;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IA6BvB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAqBxB,6DAA6D;IAC7D,OAAO,CAAC,iBAAiB;IAezB;;;OAGG;YACW,oBAAoB;IAgGlC;;;;;OAKG;YACW,eAAe;IAgC7B;;OAEG;YACW,gBAAgB;IAS9B;;;OAGG;YACW,mBAAmB;IASjC;;;OAGG;YACW,mBAAmB;YA2BnB,aAAa;IAM3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;OAGG;IACH,OAAO,CAAC,OAAO;IAoBf;;;OAGG;YACW,SAAS;IAWvB;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,SAAS,IAAI,IAAI;CAOlB"}
|