@ai-zen/cli 0.2.3 → 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 +35 -0
- package/README.md +12 -5
- package/README.zh.md +12 -5
- package/dist/config-wizard.js +4 -4
- package/dist/config-wizard.js.map +1 -1
- package/dist/config.d.ts +5 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -6
- package/dist/config.js.map +1 -1
- package/dist/conversation-commands/exit.d.ts.map +1 -1
- package/dist/conversation-commands/exit.js +4 -6
- package/dist/conversation-commands/exit.js.map +1 -1
- package/dist/conversation-commands/new.d.ts.map +1 -1
- package/dist/conversation-commands/new.js +5 -7
- package/dist/conversation-commands/new.js.map +1 -1
- package/dist/conversation-commands/save.d.ts.map +1 -1
- package/dist/conversation-commands/save.js +2 -4
- package/dist/conversation-commands/save.js.map +1 -1
- package/dist/conversation-repository.d.ts +21 -0
- package/dist/conversation-repository.d.ts.map +1 -0
- package/dist/conversation-repository.js +11 -0
- package/dist/conversation-repository.js.map +1 -0
- package/dist/conversation-runner.d.ts.map +1 -1
- package/dist/conversation-runner.js +24 -9
- package/dist/conversation-runner.js.map +1 -1
- package/dist/delta-renderer.d.ts.map +1 -1
- package/dist/delta-renderer.js +3 -1
- package/dist/delta-renderer.js.map +1 -1
- package/dist/draft-plugin.d.ts +19 -0
- package/dist/draft-plugin.d.ts.map +1 -0
- package/dist/draft-plugin.js +30 -0
- package/dist/draft-plugin.js.map +1 -0
- package/dist/draft-repository.d.ts +34 -0
- package/dist/draft-repository.d.ts.map +1 -0
- package/dist/draft-repository.js +64 -0
- package/dist/draft-repository.js.map +1 -0
- package/dist/menus/agents.js +9 -9
- package/dist/menus/agents.js.map +1 -1
- package/dist/menus/config-display.js +4 -4
- package/dist/menus/config-display.js.map +1 -1
- package/dist/menus/config.js +13 -13
- package/dist/menus/config.js.map +1 -1
- package/dist/menus/index.d.ts.map +1 -1
- package/dist/menus/index.js +2 -4
- package/dist/menus/index.js.map +1 -1
- package/dist/menus/start-conversation.d.ts.map +1 -1
- package/dist/menus/start-conversation.js +13 -13
- package/dist/menus/start-conversation.js.map +1 -1
- package/dist/types.d.ts +5 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.1] - 2026-08-05
|
|
4
|
+
|
|
5
|
+
### 🚀 新功能
|
|
6
|
+
|
|
7
|
+
- **升级 `@ai-zen/agents-sdk` 到 0.5.3** — 随 SDK 新能力开箱即用:
|
|
8
|
+
- **初始化默认释放 socket-pty MCP 配置** — SDK `bootstrap()` 新增 `ensureDefaultMcpConfig()`,CLI 首启在 `~/.ai-zen/mcp.json` 自动写入含 `socket-pty` 终端的默认 MCP 配置(`npx -y @ai-zen/socket-pty mcp`),文件已存在则幂等不覆盖
|
|
9
|
+
- **`load_mcp` 透传 server description** — 枚举各 MCP 服务器描述供 LLM 参考(对齐 `load_skill`)
|
|
10
|
+
- **新增 `ContextGuardPlugin` 上下文安全护栏** — 在发请求前检测用量,超过 `maxTokens×1.2`(超阈 20%)时抛出 `ContextOverflowError` 中断对话,防止读入超大文件导致上下文失控;与 `AutoMigratePlugin` 职责分离、区间互补
|
|
11
|
+
|
|
12
|
+
### 🔧 修复
|
|
13
|
+
|
|
14
|
+
- **自动迁移后未立即保存新对话为草稿** — `AutoMigratePlugin` 的迁移发生在 `onAfterSend`(所有内循环已结束、`DraftPlugin` 的 `onInnerLoopEnd` 不再触发),迁移替换 `agent.messages` 后的新开场白未被及时落盘,用户在中途退出会丢失迁移后的开场白。现于 `onMigrated` 回调中迁移完成后立即将新消息写入草稿(`_current.json`),与「原对话先保存为 `conversations/`」形成完整闭环
|
|
15
|
+
|
|
16
|
+
### 🎯 优化
|
|
17
|
+
|
|
18
|
+
- **MCP 配置结构统一为业界标准 `mcpServers`** — 以 SDK(`discoverMcpServers`)为准,CLI 的 `McpConfig` 顶层字段由 `servers` 改为 `mcpServers`、server 传输字段由 `transport` 改为 `type`。消除格式漂移,CLI 管理界面(`zen config`)与 SDK 默认释放的 mcp.json 完全对齐,socket-pty 默认配置可被正确显示与管理
|
|
19
|
+
|
|
20
|
+
### ✅ 测试
|
|
21
|
+
|
|
22
|
+
- 更新 `config.test.ts` 中 MCP 读写相关断言以匹配新的 `mcpServers` 结构与 `type` 字段
|
|
23
|
+
|
|
24
|
+
## [0.3.0] - 2026-08-01
|
|
25
|
+
|
|
26
|
+
### 💥 破坏性变更
|
|
27
|
+
|
|
28
|
+
- **会话/草稿持久化下放 CLI** — SDK 0.5.0 移除了会话/草稿产品层(`ConversationRepository` / `DraftRepository` / `AutoDraftPlugin`)。CLI 自建本地存储:
|
|
29
|
+
- 新增 `src/conversation-repository.ts` — `conversationRepository`(复用 SDK `EntityRepository`)
|
|
30
|
+
- 新增 `src/draft-repository.ts` — `DraftRepository` + `draftRepository` 单例(草稿无 id 字段,单独实现)
|
|
31
|
+
- 新增 `src/draft-plugin.ts` — CLI 草稿插件 `DraftPlugin`(替代被移除的 `AutoDraftPlugin`,`onInnerLoopEnd` 自动保存)
|
|
32
|
+
- **更新 `@ai-zen/agents-sdk` 到 0.5.0** — 内置工具类化(`SdkCallbackTool` + `ToolEnv` 注入)、`Provider` 支持 `cwd`/`env`、`generateImage` 类化为 `GenerateImageTool`
|
|
33
|
+
|
|
34
|
+
### 🎯 优化
|
|
35
|
+
|
|
36
|
+
- **依赖同步线上版本** — `@ai-zen/agents-core` `3.0.1`、`@ai-zen/agents-sdk` `0.5.0`(开发期曾使用本地 `link:` 调试,已还原为 npm 版本号)
|
|
37
|
+
|
|
3
38
|
## [0.2.3] - 2026-07-29
|
|
4
39
|
|
|
5
40
|
### 🎯 优化
|
package/README.md
CHANGED
|
@@ -190,7 +190,7 @@ Same-named servers in higher priority override lower ones.
|
|
|
190
190
|
|
|
191
191
|
## Built-in Tools
|
|
192
192
|
|
|
193
|
-
The CLI provides
|
|
193
|
+
The CLI provides 17 built-in file system tools, implemented by `@ai-zen/agents-sdk`:
|
|
194
194
|
|
|
195
195
|
| Tool | Description |
|
|
196
196
|
|------|-------------|
|
|
@@ -199,17 +199,24 @@ The CLI provides 16 built-in file system tools, implemented by `@ai-zen/agents-s
|
|
|
199
199
|
| `writeFile` | Write content to file |
|
|
200
200
|
| `edit` | Replace text in files (single replacement) |
|
|
201
201
|
| `batchEdit` | Batch replace text in files |
|
|
202
|
+
| `exec` | Execute shell commands |
|
|
203
|
+
| `exec_async` | Execute a shell command asynchronously (returns immediately) |
|
|
202
204
|
| `mkdir` | Create directories |
|
|
203
205
|
| `rm` | Delete files or directories |
|
|
204
206
|
| `glob` | Scan files with glob patterns |
|
|
205
207
|
| `ls` | List directory contents |
|
|
206
208
|
| `exist` | Check if path exists |
|
|
207
|
-
| `exec` | Execute shell commands |
|
|
208
209
|
| `findText` | Search text in files |
|
|
209
210
|
| `downloadFile` | Download file from URL |
|
|
210
|
-
| `generateImage` | Generate images from text |
|
|
211
211
|
| `rename` | Rename or move files |
|
|
212
212
|
| `copy` | Copy files or directories |
|
|
213
|
+
| `sleep` | Wait for a specified number of milliseconds |
|
|
214
|
+
|
|
215
|
+
Conditionally injected (requires `defaultImageModel` in config):
|
|
216
|
+
|
|
217
|
+
| Tool | Description |
|
|
218
|
+
|------|-------------|
|
|
219
|
+
| `generateImage` | Generate images from text |
|
|
213
220
|
|
|
214
221
|
### Dynamic Tools
|
|
215
222
|
|
|
@@ -225,7 +232,7 @@ In addition to built-in tools, the SDK provides 5 dynamic loading tools that are
|
|
|
225
232
|
|
|
226
233
|
## Tool Assembly Pipeline
|
|
227
234
|
|
|
228
|
-
Tools are assembled in three phases by the SDK's `
|
|
235
|
+
Tools are assembled in three phases by the SDK's `Provider` capability pipeline:
|
|
229
236
|
|
|
230
237
|
1. **Discovery** — Scan filesystem for built-in tools, user tools, SubAgents, Skills, and MCP servers
|
|
231
238
|
2. **Filtering** — Apply permissions (`allow`/`deny`) and security exclusions (recursion protection)
|
|
@@ -255,7 +262,7 @@ MCP servers are configured in `mcp.json` files:
|
|
|
255
262
|
|
|
256
263
|
```json
|
|
257
264
|
{
|
|
258
|
-
"
|
|
265
|
+
"mcpServers": {
|
|
259
266
|
"my-server": {
|
|
260
267
|
"transport": "stdio",
|
|
261
268
|
"command": "node",
|
package/README.zh.md
CHANGED
|
@@ -190,7 +190,7 @@ MCP 服务器配置从多个来源合并(优先级从高到低):
|
|
|
190
190
|
|
|
191
191
|
## 内置工具
|
|
192
192
|
|
|
193
|
-
CLI 提供
|
|
193
|
+
CLI 提供 17 个内置文件系统工具,由 `@ai-zen/agents-sdk` 实现:
|
|
194
194
|
|
|
195
195
|
| 工具 | 说明 |
|
|
196
196
|
|------|------|
|
|
@@ -199,17 +199,24 @@ CLI 提供 16 个内置文件系统工具,由 `@ai-zen/agents-sdk` 实现:
|
|
|
199
199
|
| `writeFile` | 写入文件 |
|
|
200
200
|
| `edit` | 替换文件中的文本(单次替换) |
|
|
201
201
|
| `batchEdit` | 批量编辑文本 |
|
|
202
|
+
| `exec` | 执行 shell 命令 |
|
|
203
|
+
| `exec_async` | 异步执行 shell 命令(立即返回,不等待结果) |
|
|
202
204
|
| `mkdir` | 创建目录 |
|
|
203
205
|
| `rm` | 删除文件或目录 |
|
|
204
206
|
| `glob` | 通配符扫描文件 |
|
|
205
207
|
| `ls` | 列出目录 |
|
|
206
208
|
| `exist` | 检查路径是否存在 |
|
|
207
|
-
| `exec` | 执行 shell 命令 |
|
|
208
209
|
| `findText` | 在文件中查找文本 |
|
|
209
210
|
| `downloadFile` | 从 URL 下载文件 |
|
|
210
|
-
| `generateImage` | 根据描述生成图片 |
|
|
211
211
|
| `rename` | 重命名或移动文件 |
|
|
212
212
|
| `copy` | 复制文件或目录 |
|
|
213
|
+
| `sleep` | 等待指定毫秒数 |
|
|
214
|
+
|
|
215
|
+
条件注入(需配置 `defaultImageModel`):
|
|
216
|
+
|
|
217
|
+
| 工具 | 说明 |
|
|
218
|
+
|------|------|
|
|
219
|
+
| `generateImage` | 根据描述生成图片 |
|
|
213
220
|
|
|
214
221
|
### 动态工具
|
|
215
222
|
|
|
@@ -225,7 +232,7 @@ CLI 提供 16 个内置文件系统工具,由 `@ai-zen/agents-sdk` 实现:
|
|
|
225
232
|
|
|
226
233
|
## 工具装配流程
|
|
227
234
|
|
|
228
|
-
工具装配由 SDK 的 `
|
|
235
|
+
工具装配由 SDK 的 `Provider` 能力管线管理,分为三个阶段:
|
|
229
236
|
|
|
230
237
|
1. **发现** — 扫描文件系统获取内置工具、用户工具、SubAgent、Skill 和 MCP 服务器
|
|
231
238
|
2. **过滤** — 应用权限(`allow`/`deny`)和安全排除(递归保护)
|
|
@@ -255,7 +262,7 @@ MCP 服务器配置在 `mcp.json` 文件中:
|
|
|
255
262
|
|
|
256
263
|
```json
|
|
257
264
|
{
|
|
258
|
-
"
|
|
265
|
+
"mcpServers": {
|
|
259
266
|
"my-server": {
|
|
260
267
|
"transport": "stdio",
|
|
261
268
|
"command": "node",
|
package/dist/config-wizard.js
CHANGED
|
@@ -24,10 +24,10 @@ export async function ensureEndpointConfig(modelId) {
|
|
|
24
24
|
throw new Error(`端点 ${model.endpointId} 不存在`);
|
|
25
25
|
if (!endpoint.apiKey) {
|
|
26
26
|
console.log(chalk.yellow.bold(`\n⚠️ 端点 "${endpoint.name}" 的 API Key 未设置\n`));
|
|
27
|
-
console.log(
|
|
28
|
-
console.log(
|
|
29
|
-
console.log(
|
|
30
|
-
console.log(
|
|
27
|
+
console.log(`💡 请前往对应平台获取 API Key:`);
|
|
28
|
+
console.log(` - OpenAI: https://platform.openai.com/api-keys`);
|
|
29
|
+
console.log(` - BigModelCN (智谱AI): https://open.bigmodel.cn/usercenter/apikeys`);
|
|
30
|
+
console.log(` - DeepSeek: https://platform.deepseek.com/api_keys\n`);
|
|
31
31
|
const { apiKey } = await inquirer.prompt([
|
|
32
32
|
{
|
|
33
33
|
type: "password",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-wizard.js","sourceRoot":"","sources":["../src/config-wizard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGrD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAgB;IACzD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,IAAI,KAAwB,CAAC;IAE7B,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,MAAM,CAAC,YAAY;YACzB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,YAAY,CAAC;YACzD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;IACzE,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC;IAE7D,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"config-wizard.js","sourceRoot":"","sources":["../src/config-wizard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGrD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAgB;IACzD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,IAAI,KAAwB,CAAC;IAE7B,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,MAAM,CAAC,YAAY;YACzB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,YAAY,CAAC;YACzD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;IACzE,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC;IAE7D,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QAEvE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACvC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,OAAO,QAAQ,CAAC,IAAI,aAAa;gBAC1C,IAAI,EAAE,GAAG;gBACT,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,cAAc;aACnE;SACF,CAAC,CAAC;QAEH,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -71,7 +71,8 @@ export declare function readConfig(): Promise<AppConfig>;
|
|
|
71
71
|
export declare function saveConfig(config: AppConfig): Promise<void>;
|
|
72
72
|
export interface McpServersMap {
|
|
73
73
|
[name: string]: {
|
|
74
|
-
|
|
74
|
+
/** 传输方式,业界标准字段名 `type`(与 SDK normalizeConfig 一致) */
|
|
75
|
+
type?: "stdio" | "http" | "sse";
|
|
75
76
|
command?: string;
|
|
76
77
|
args?: string[];
|
|
77
78
|
env?: Record<string, string>;
|
|
@@ -80,10 +81,12 @@ export interface McpServersMap {
|
|
|
80
81
|
};
|
|
81
82
|
}
|
|
82
83
|
export interface McpConfig {
|
|
83
|
-
|
|
84
|
+
/** 业界标准 mcpServers 顶层字段(与 SDK @ai-zen/agents-sdk 保持一致) */
|
|
85
|
+
mcpServers: McpServersMap;
|
|
84
86
|
}
|
|
85
87
|
/**
|
|
86
88
|
* 读取全局 ~/.ai-zen/mcp.json,不存在时返回空结构。
|
|
89
|
+
* 采用业界标准 `mcpServers` 顶层字段(与 SDK discoverMcpServers 一致)。
|
|
87
90
|
*/
|
|
88
91
|
export declare function readMcpConfig(): Promise<McpConfig>;
|
|
89
92
|
/**
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIpD,eAAO,MAAM,UAAU,QAGtB,CAAC;AAIF,eAAO,MAAM,OAAO,QAA0B,CAAC;AAC/C,eAAO,MAAM,WAAW,QAAkC,CAAC;AAC3D,eAAO,MAAM,iBAAiB,QAAiC,CAAC;AAChE,eAAO,MAAM,UAAU,QAA0B,CAAC;AAIlD,eAAO,MAAM,UAAU,QAA6B,CAAC;AACrD,eAAO,MAAM,cAAc,QAAiC,CAAC;AAC7D,eAAO,MAAM,UAAU,QAA6B,CAAC;AACrD,eAAO,MAAM,SAAS,QAA4B,CAAC;AAInD,eAAO,MAAM,sBAAsB,QAA+C,CAAC;AACnF,eAAO,MAAM,kBAAkB,QAA2C,CAAC;AAC3E,eAAO,MAAM,iBAAiB,QAA0C,CAAC;AASzE,eAAO,MAAM,sBAAsB,QAAkC,CAAC;AACtE,eAAO,MAAM,2BAA2B,QAAoC,CAAC;AAI7E,eAAO,MAAM,kBAAkB,QAAiC,CAAC;AACjE,eAAO,MAAM,yBAAyB,QAAqC,CAAC;AAC5E,eAAO,MAAM,8BAA8B,QAAuC,CAAC;AAInF,eAAO,MAAM,eAAe,QAA+B,CAAC;AAC5D,eAAO,MAAM,uBAAuB,QAA6C,CAAC;AAClF,eAAO,MAAM,sBAAsB,QAAmC,CAAC;AAQvE;;;;;;GAMG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAcrD;AAID,wBAAsB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,CAGrD;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;AAID,MAAM,WAAW,aAAa;IAC5B,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIpD,eAAO,MAAM,UAAU,QAGtB,CAAC;AAIF,eAAO,MAAM,OAAO,QAA0B,CAAC;AAC/C,eAAO,MAAM,WAAW,QAAkC,CAAC;AAC3D,eAAO,MAAM,iBAAiB,QAAiC,CAAC;AAChE,eAAO,MAAM,UAAU,QAA0B,CAAC;AAIlD,eAAO,MAAM,UAAU,QAA6B,CAAC;AACrD,eAAO,MAAM,cAAc,QAAiC,CAAC;AAC7D,eAAO,MAAM,UAAU,QAA6B,CAAC;AACrD,eAAO,MAAM,SAAS,QAA4B,CAAC;AAInD,eAAO,MAAM,sBAAsB,QAA+C,CAAC;AACnF,eAAO,MAAM,kBAAkB,QAA2C,CAAC;AAC3E,eAAO,MAAM,iBAAiB,QAA0C,CAAC;AASzE,eAAO,MAAM,sBAAsB,QAAkC,CAAC;AACtE,eAAO,MAAM,2BAA2B,QAAoC,CAAC;AAI7E,eAAO,MAAM,kBAAkB,QAAiC,CAAC;AACjE,eAAO,MAAM,yBAAyB,QAAqC,CAAC;AAC5E,eAAO,MAAM,8BAA8B,QAAuC,CAAC;AAInF,eAAO,MAAM,eAAe,QAA+B,CAAC;AAC5D,eAAO,MAAM,uBAAuB,QAA6C,CAAC;AAClF,eAAO,MAAM,sBAAsB,QAAmC,CAAC;AAQvE;;;;;;GAMG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAcrD;AAID,wBAAsB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,CAGrD;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;AAID,MAAM,WAAW,aAAa;IAC5B,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,oDAAoD;QACpD,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;QAChC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,UAAU,EAAE,aAAa,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,CAaxD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxE;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,SAAS,CAAC,CAa/D"}
|
package/dist/config.js
CHANGED
|
@@ -110,19 +110,22 @@ export async function saveConfig(config) {
|
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
112
|
* 读取全局 ~/.ai-zen/mcp.json,不存在时返回空结构。
|
|
113
|
+
* 采用业界标准 `mcpServers` 顶层字段(与 SDK discoverMcpServers 一致)。
|
|
113
114
|
*/
|
|
114
115
|
export async function readMcpConfig() {
|
|
115
116
|
try {
|
|
116
117
|
await fs.access(MCP_CONFIG_FILE);
|
|
117
118
|
}
|
|
118
119
|
catch {
|
|
119
|
-
return {
|
|
120
|
+
return { mcpServers: {} };
|
|
120
121
|
}
|
|
121
122
|
try {
|
|
122
|
-
|
|
123
|
+
const raw = JSON.parse(await fs.readFile(MCP_CONFIG_FILE, "utf-8"));
|
|
124
|
+
// 兼容并归一:以 mcpServers 为准,缺失时回退到空的 mcpServers
|
|
125
|
+
return { mcpServers: raw.mcpServers ?? {} };
|
|
123
126
|
}
|
|
124
127
|
catch {
|
|
125
|
-
return {
|
|
128
|
+
return { mcpServers: {} };
|
|
126
129
|
}
|
|
127
130
|
}
|
|
128
131
|
/**
|
|
@@ -139,13 +142,14 @@ export async function readProjectMcpConfig() {
|
|
|
139
142
|
await fs.access(path);
|
|
140
143
|
}
|
|
141
144
|
catch {
|
|
142
|
-
return {
|
|
145
|
+
return { mcpServers: {} };
|
|
143
146
|
}
|
|
144
147
|
try {
|
|
145
|
-
|
|
148
|
+
const raw = JSON.parse(await fs.readFile(path, "utf-8"));
|
|
149
|
+
return { mcpServers: raw.mcpServers ?? {} };
|
|
146
150
|
}
|
|
147
151
|
catch {
|
|
148
|
-
return {
|
|
152
|
+
return { mcpServers: {} };
|
|
149
153
|
}
|
|
150
154
|
}
|
|
151
155
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exit.d.ts","sourceRoot":"","sources":["../../src/conversation-commands/exit.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"exit.d.ts","sourceRoot":"","sources":["../../src/conversation-commands/exit.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,wBAAsB,UAAU,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BxE"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import inquirer from "inquirer";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
const conversationRepo = new ConversationRepository(CONVERSATIONS_DIR);
|
|
6
|
-
const draftRepo = new DraftRepository(DRAFTS_DIR);
|
|
3
|
+
import { conversationRepository } from "../conversation-repository.js";
|
|
4
|
+
import { draftRepository } from "../draft-repository.js";
|
|
7
5
|
export async function handleExit(ctx) {
|
|
8
6
|
const agent = ctx.agent;
|
|
9
7
|
if (agent.messages.length > 1) {
|
|
@@ -18,7 +16,7 @@ export async function handleExit(ctx) {
|
|
|
18
16
|
if (saveBeforeExit) {
|
|
19
17
|
try {
|
|
20
18
|
const id = ctx.currentId || ctx.currentName.replace(/[\\/:*?"<>|]/g, "_");
|
|
21
|
-
|
|
19
|
+
await conversationRepository.write({
|
|
22
20
|
id,
|
|
23
21
|
agentId: ctx.agentId || "default",
|
|
24
22
|
modelId: ctx.modelId,
|
|
@@ -27,7 +25,7 @@ export async function handleExit(ctx) {
|
|
|
27
25
|
updatedAt: new Date().toISOString(),
|
|
28
26
|
});
|
|
29
27
|
console.log(chalk.green(`\n✅ 对话已保存: ${ctx.currentName} (ID: ${id})\n`));
|
|
30
|
-
|
|
28
|
+
await draftRepository.delete();
|
|
31
29
|
}
|
|
32
30
|
catch (error) {
|
|
33
31
|
console.error(chalk.red(`\n❌ 保存失败: ${error}\n`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exit.js","sourceRoot":"","sources":["../../src/conversation-commands/exit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"exit.js","sourceRoot":"","sources":["../../src/conversation-commands/exit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAwB;IACvD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC/C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;gBAC1E,MAAM,sBAAsB,CAAC,KAAK,CAAC;oBACjC,EAAE;oBACF,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;oBACjC,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,WAAW,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;gBACxE,MAAM,eAAe,CAAC,MAAM,EAAE,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IACD,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/conversation-commands/new.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/conversation-commands/new.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAsB,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CvE"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import inquirer from "inquirer";
|
|
3
3
|
import { Message } from "@ai-zen/agents-core";
|
|
4
|
-
import { ConversationRepository, DraftRepository } from "@ai-zen/agents-sdk";
|
|
5
4
|
import { formatShortTime } from "../format-time.js";
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
const draftRepo = new DraftRepository(DRAFTS_DIR);
|
|
5
|
+
import { conversationRepository } from "../conversation-repository.js";
|
|
6
|
+
import { draftRepository } from "../draft-repository.js";
|
|
9
7
|
export async function handleNew(ctx) {
|
|
10
8
|
const agent = ctx.agent;
|
|
11
9
|
const { confirmNew } = await inquirer.prompt([
|
|
@@ -21,11 +19,11 @@ export async function handleNew(ctx) {
|
|
|
21
19
|
return;
|
|
22
20
|
}
|
|
23
21
|
// 将当前草稿存档(如果有),避免丢失
|
|
24
|
-
const draft = await
|
|
22
|
+
const draft = await draftRepository.read();
|
|
25
23
|
if (draft && draft.messages.length > 1) {
|
|
26
24
|
const name = `草稿-${formatShortTime(draft.updatedAt)}`;
|
|
27
25
|
const id = name.replace(/[\\/:*?"<>|]/g, "_");
|
|
28
|
-
await
|
|
26
|
+
await conversationRepository.write({
|
|
29
27
|
id,
|
|
30
28
|
agentId: draft.agentId || "default",
|
|
31
29
|
modelId: draft.modelId,
|
|
@@ -34,7 +32,7 @@ export async function handleNew(ctx) {
|
|
|
34
32
|
updatedAt: new Date().toISOString(),
|
|
35
33
|
});
|
|
36
34
|
console.log(chalk.gray(`📦 当前对话已存档: ${name}\n`));
|
|
37
|
-
await
|
|
35
|
+
await draftRepository.delete();
|
|
38
36
|
}
|
|
39
37
|
// 重置为 Agent 定义的初始消息(system prompt + few-shot 示例等)
|
|
40
38
|
agent.messages = agent.definition.messages.map((m) => new Message(m));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/conversation-commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAW,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/conversation-commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAW,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAwB;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC3C;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,oBAAoB;IACpB,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,sBAAsB,CAAC,KAAK,CAAC;YACjC,EAAE;YACF,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS;YACnC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC;QACjD,MAAM,eAAe,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,QAAQ,GAAI,KAAK,CAAC,UAAU,CAAC,QAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7F,UAAU;IACV,GAAG,CAAC,WAAW,GAAG,MAAM,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;IACpE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;IAEf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../src/conversation-commands/save.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../src/conversation-commands/save.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,wBAAsB,UAAU,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BxE"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import inquirer from "inquirer";
|
|
3
|
-
import {
|
|
4
|
-
import { CONVERSATIONS_DIR } from "../config.js";
|
|
5
|
-
const conversationRepo = new ConversationRepository(CONVERSATIONS_DIR);
|
|
3
|
+
import { conversationRepository } from "../conversation-repository.js";
|
|
6
4
|
export async function handleSave(ctx) {
|
|
7
5
|
const agent = ctx.agent;
|
|
8
6
|
const { name } = await inquirer.prompt([
|
|
@@ -15,7 +13,7 @@ export async function handleSave(ctx) {
|
|
|
15
13
|
]);
|
|
16
14
|
try {
|
|
17
15
|
const id = ctx.currentId || name.replace(/[\\/:*?"<>|]/g, "_");
|
|
18
|
-
|
|
16
|
+
await conversationRepository.write({
|
|
19
17
|
id,
|
|
20
18
|
agentId: ctx.agentId || "default",
|
|
21
19
|
modelId: ctx.modelId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/conversation-commands/save.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/conversation-commands/save.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAwB;IACvD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACrC;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,GAAG,CAAC,WAAW;SACzB;KACF,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,sBAAsB,CAAC,KAAK,CAAC;YACjC,EAAE;YACF,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;YACjC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;QACvB,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI 会话存储 — Conversation 类型与会话仓储。
|
|
3
|
+
*
|
|
4
|
+
* 会话是 CLI 的产品数据,由 CLI 自己维护(SDK 只负责驱动与能力)。
|
|
5
|
+
* 复用 SDK 的 EntityRepository,按 id 一个 JSON 文件(${conversationsDir}/${id}.json)。
|
|
6
|
+
*/
|
|
7
|
+
import { EntityRepository } from "@ai-zen/agents-sdk";
|
|
8
|
+
import type { AgentNS } from "@ai-zen/agents-core";
|
|
9
|
+
export interface Conversation {
|
|
10
|
+
id: string;
|
|
11
|
+
agentId: string;
|
|
12
|
+
modelId: string;
|
|
13
|
+
messages: AgentNS.Message[];
|
|
14
|
+
lastPromptTokens?: number;
|
|
15
|
+
cwd?: string;
|
|
16
|
+
createdAt: string;
|
|
17
|
+
updatedAt: string;
|
|
18
|
+
}
|
|
19
|
+
/** 会话仓储:每个会话一个 JSON 文件(${conversationsDir}/${id}.json) */
|
|
20
|
+
export declare const conversationRepository: EntityRepository<Conversation>;
|
|
21
|
+
//# sourceMappingURL=conversation-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-repository.d.ts","sourceRoot":"","sources":["../src/conversation-repository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB,gCAAwD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI 会话存储 — Conversation 类型与会话仓储。
|
|
3
|
+
*
|
|
4
|
+
* 会话是 CLI 的产品数据,由 CLI 自己维护(SDK 只负责驱动与能力)。
|
|
5
|
+
* 复用 SDK 的 EntityRepository,按 id 一个 JSON 文件(${conversationsDir}/${id}.json)。
|
|
6
|
+
*/
|
|
7
|
+
import { EntityRepository } from "@ai-zen/agents-sdk";
|
|
8
|
+
import { CONVERSATIONS_DIR } from "./config.js";
|
|
9
|
+
/** 会话仓储:每个会话一个 JSON 文件(${conversationsDir}/${id}.json) */
|
|
10
|
+
export const conversationRepository = new EntityRepository(CONVERSATIONS_DIR);
|
|
11
|
+
//# sourceMappingURL=conversation-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-repository.js","sourceRoot":"","sources":["../src/conversation-repository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAahD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,gBAAgB,CAAe,iBAAiB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-runner.d.ts","sourceRoot":"","sources":["../src/conversation-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation-runner.d.ts","sourceRoot":"","sources":["../src/conversation-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA8E9C,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4KpF"}
|
|
@@ -7,19 +7,21 @@
|
|
|
7
7
|
import chalk from "chalk";
|
|
8
8
|
import inquirer from "inquirer";
|
|
9
9
|
import { AgentNS } from "@ai-zen/agents-core";
|
|
10
|
-
import { AutoMigratePlugin,
|
|
10
|
+
import { AutoMigratePlugin, AutoRefreshToolsPlugin, } from "@ai-zen/agents-sdk";
|
|
11
11
|
import { DeltaRenderer } from "./delta-renderer.js";
|
|
12
12
|
import { createAgent, createMigrationAgent } from "./agent-creator.js";
|
|
13
|
-
import { readConfig
|
|
13
|
+
import { readConfig } from "./config.js";
|
|
14
14
|
import { CwdTrackerPlugin } from "./cwd-tracker-plugin.js";
|
|
15
|
+
import { DraftPlugin } from "./draft-plugin.js";
|
|
16
|
+
import { draftRepository } from "./draft-repository.js";
|
|
17
|
+
import { conversationRepository } from "./conversation-repository.js";
|
|
15
18
|
import { ensureEndpointConfig } from "./config-wizard.js";
|
|
16
19
|
import { formatShortTime } from "./format-time.js";
|
|
17
20
|
import { dispatchCommand, getCommandNames } from "./conversation-commands/index.js";
|
|
18
|
-
const conversationRepo = new ConversationRepository(CONVERSATIONS_DIR);
|
|
19
21
|
/** 保存当前对话到 conversations 目录 */
|
|
20
22
|
async function saveCurrentConversation(name, messages, modelId, existingId, agentId) {
|
|
21
23
|
const id = existingId || name.replace(/[\\/:*?"<>|]/g, "_");
|
|
22
|
-
await
|
|
24
|
+
await conversationRepository.write({
|
|
23
25
|
id,
|
|
24
26
|
agentId: agentId || "default",
|
|
25
27
|
modelId,
|
|
@@ -73,12 +75,10 @@ export async function runConversation(options) {
|
|
|
73
75
|
agent.use(new CwdTrackerPlugin());
|
|
74
76
|
// 2. autoRefreshTools — 每次 send 前刷新文件系统工具
|
|
75
77
|
agent.use(new AutoRefreshToolsPlugin());
|
|
76
|
-
// 2.
|
|
77
|
-
agent.use(new
|
|
78
|
-
draftsDir: DRAFTS_DIR,
|
|
78
|
+
// 2. draftPlugin — 每次 send 后自动保存草稿(CLI 产品特性,不依赖 SDK;始终写入 _current.json,统一草稿检测入口)
|
|
79
|
+
agent.use(new DraftPlugin({
|
|
79
80
|
agentId: agentId || "default",
|
|
80
81
|
modelId,
|
|
81
|
-
conversationId,
|
|
82
82
|
cwd: process.cwd(),
|
|
83
83
|
}));
|
|
84
84
|
// 3. autoMigrate — 检测 token 超限时自动迁移
|
|
@@ -101,6 +101,22 @@ export async function runConversation(options) {
|
|
|
101
101
|
ctx.currentId = undefined;
|
|
102
102
|
console.log(chalk.green.bold(`\n🚀 任务迁移完成!已开启新会话,共 ${agent.messages.length} 条消息。\n`));
|
|
103
103
|
console.log(chalk.gray("💡 你可以继续提问,新助手已通过交接文档了解之前的全部工作。\n"));
|
|
104
|
+
// 迁移后立即把新开场白保存为草稿(_current.json),
|
|
105
|
+
// 避免迁移发生在 onAfterSend(DraftPlugin 的 onInnerLoopEnd 已不再触发)
|
|
106
|
+
// 导致迁移后的新对话未被及时落盘,用户中途退出时丢失迁移后的开场白。
|
|
107
|
+
try {
|
|
108
|
+
await draftRepository.write({
|
|
109
|
+
conversationId: ctx.currentId, // undefined → 写入 _current.json
|
|
110
|
+
agentId: ctx.agentId || "default",
|
|
111
|
+
modelId: ctx.modelId,
|
|
112
|
+
messages: agent.messages,
|
|
113
|
+
cwd: process.cwd(),
|
|
114
|
+
updatedAt: new Date().toISOString(),
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
console.warn(`[draft] 迁移后保存草稿失败: ${err?.message ?? err}`);
|
|
119
|
+
}
|
|
104
120
|
},
|
|
105
121
|
}));
|
|
106
122
|
}
|
|
@@ -122,7 +138,6 @@ export async function runConversation(options) {
|
|
|
122
138
|
reasoningHeader: "\n\n💭 思考中...\n",
|
|
123
139
|
contentHeader: "\n\n💭 回答中...\n",
|
|
124
140
|
reasoningStyle: chalk.blue,
|
|
125
|
-
contentStyle: chalk.white,
|
|
126
141
|
});
|
|
127
142
|
const onRun = () => { renderer.reset(); };
|
|
128
143
|
const onChunk = (chunk) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-runner.js","sourceRoot":"","sources":["../src/conversation-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EACL,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"conversation-runner.js","sourceRoot":"","sources":["../src/conversation-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delta-renderer.d.ts","sourceRoot":"","sources":["../src/delta-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"delta-renderer.d.ts","sourceRoot":"","sources":["../src/delta-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAiB9C,MAAM,WAAW,oBAAoB;IACnC,0BAA0B;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,oBAAoB;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,IAAI,CAAiC;gBAEjC,IAAI,GAAE,oBAAyB;IAU3C;;;;OAIG;IACH,MAAM,CACJ,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,YAAY,GAAE,OAAO,CAAC,YAAY,GAAG,IAAW,GAC/C,IAAI;IAiCP,qBAAqB;IACrB,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,eAAe;CAgExB"}
|
package/dist/delta-renderer.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import { AgentNS } from "@ai-zen/agents-core";
|
|
3
|
+
/** 无颜色样式:普通文本保持终端默认前景色,避免在浅色背景下看不清 */
|
|
4
|
+
const noStyle = (s) => s;
|
|
3
5
|
// ==================== 流式渲染器 ====================
|
|
4
6
|
/**
|
|
5
7
|
* 流式 Delta 渲染器,管理 reasoning/content/tool_calls 的状态和输出
|
|
@@ -14,7 +16,7 @@ export class DeltaRenderer {
|
|
|
14
16
|
reasoningHeader: opts.reasoningHeader ?? "",
|
|
15
17
|
contentHeader: opts.contentHeader ?? "",
|
|
16
18
|
reasoningStyle: opts.reasoningStyle ?? chalk.blue,
|
|
17
|
-
contentStyle: opts.contentStyle ??
|
|
19
|
+
contentStyle: opts.contentStyle ?? noStyle,
|
|
18
20
|
indent: opts.indent ?? "",
|
|
19
21
|
};
|
|
20
22
|
}
|