@ai-zen/cli 0.1.9 → 0.2.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 +25 -0
- package/dist/agent-creator.d.ts +4 -4
- package/dist/agent-creator.d.ts.map +1 -1
- package/dist/agent-creator.js +10 -11
- package/dist/agent-creator.js.map +1 -1
- package/dist/config-wizard.js +2 -2
- package/dist/config-wizard.js.map +1 -1
- package/dist/config.d.ts +6 -6
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -20
- package/dist/config.js.map +1 -1
- package/dist/conversation-commands/new.js +3 -3
- package/dist/conversation-commands/new.js.map +1 -1
- package/dist/conversation-runner.js +8 -8
- package/dist/conversation-runner.js.map +1 -1
- package/dist/hook.d.ts +2 -2
- package/dist/hook.d.ts.map +1 -1
- package/dist/hook.js +18 -11
- package/dist/hook.js.map +1 -1
- package/dist/menus/agents.js +17 -17
- package/dist/menus/agents.js.map +1 -1
- package/dist/menus/config-display.d.ts +1 -1
- package/dist/menus/config-display.d.ts.map +1 -1
- package/dist/menus/config-display.js +16 -12
- package/dist/menus/config-display.js.map +1 -1
- package/dist/menus/config.js +27 -27
- package/dist/menus/config.js.map +1 -1
- package/dist/menus/conversations.d.ts +2 -2
- package/dist/menus/conversations.d.ts.map +1 -1
- package/dist/menus/conversations.js +19 -10
- package/dist/menus/conversations.js.map +1 -1
- package/dist/menus/index.js +1 -1
- package/dist/menus/index.js.map +1 -1
- package/dist/menus/start-conversation.js +10 -10
- package/dist/menus/start-conversation.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.2.1] - 2026-07-27
|
|
4
|
+
|
|
5
|
+
### 🎯 优化
|
|
6
|
+
|
|
7
|
+
- **更新 `@ai-zen/agents-sdk` 到 0.3.3** — 包含默认 Agent/SubAgent 提示词优化(信息明确性要求、矛盾检测)
|
|
8
|
+
|
|
9
|
+
## [0.2.0] - 2026-07-26
|
|
10
|
+
|
|
11
|
+
### 💥 破坏性变更
|
|
12
|
+
|
|
13
|
+
- **同步 SDK 0.3.2 异步 API** — `@ai-zen/agents-sdk` 从 `0.3.1` → `0.3.2`
|
|
14
|
+
- **`readConfig()` / `saveConfig()` 改为 async** — 因 SDK `ConfigManager` 全面异步化
|
|
15
|
+
- **`createAgent()` 恢复为 async** — 因 SDK `createAgent()` 改回异步
|
|
16
|
+
- **`installHook()` / `uninstallHook()` 改为 async** — Shell hook 安装/卸载使用 `fs.promises`
|
|
17
|
+
|
|
18
|
+
### 🎯 优化
|
|
19
|
+
|
|
20
|
+
- **全面消除同步文件 IO** — `config.ts`、`hook.ts`、`conversations.ts`、`config-display.ts` 中所有 `existsSync`、`readFileSync`、`writeFileSync`、`readdirSync`、`statSync`、`renameSync`、`appendFileSync`、`mkdirSync`、`unlinkSync` 替换为 `fs.promises` 异步 API
|
|
21
|
+
- **`getConversationsList()` 改为 async** — 对话列表读取使用异步文件 API
|
|
22
|
+
- **MCP 配置读写异步化** — `readMcpConfig()`、`writeMcpConfig()`、`readProjectMcpConfig()` 均改为 async
|
|
23
|
+
|
|
24
|
+
### ✅ 测试
|
|
25
|
+
|
|
26
|
+
- 同步更新 `config.test.ts` 为 `async`/`await`,全部 43 个测试通过(含 6 个 E2E)
|
|
27
|
+
|
|
3
28
|
## [0.1.7] - 2026-07-21
|
|
4
29
|
|
|
5
30
|
### 🔧 修复
|
package/dist/agent-creator.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent 创建 — CLI 层
|
|
3
3
|
*
|
|
4
|
-
* 委托给 @ai-zen/agents-sdk 的 Provider
|
|
4
|
+
* 委托给 @ai-zen/agents-sdk 的 Provider。
|
|
5
5
|
* CLI 层负责:组装路径、构建 Provider 单例、注册默认插件。
|
|
6
6
|
*/
|
|
7
7
|
import { Provider, SdkAgent } from "@ai-zen/agents-sdk";
|
|
8
8
|
import type { AgentNS } from "@ai-zen/agents-core";
|
|
9
|
-
export declare function getProvider(): Provider
|
|
9
|
+
export declare function getProvider(): Promise<Provider>;
|
|
10
10
|
export declare function resetProvider(): void;
|
|
11
11
|
export interface CreateAgentOptions {
|
|
12
12
|
messages?: AgentNS.Message[];
|
|
13
13
|
agentId?: string;
|
|
14
14
|
}
|
|
15
|
-
export declare function createAgent(options: CreateAgentOptions): SdkAgent
|
|
16
|
-
export declare function createMigrationAgent(modelId: string): SdkAgent
|
|
15
|
+
export declare function createAgent(options: CreateAgentOptions): Promise<SdkAgent>;
|
|
16
|
+
export declare function createMigrationAgent(modelId: string): Promise<SdkAgent>;
|
|
17
17
|
//# sourceMappingURL=agent-creator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-creator.d.ts","sourceRoot":"","sources":["../src/agent-creator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,QAAQ,EAER,QAAQ,EAGT,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAiBnD,
|
|
1
|
+
{"version":3,"file":"agent-creator.d.ts","sourceRoot":"","sources":["../src/agent-creator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,QAAQ,EAER,QAAQ,EAGT,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAiBnD,wBAAsB,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC,CAyCrD;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAahF;AAID,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiB7E"}
|
package/dist/agent-creator.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent 创建 — CLI 层
|
|
3
3
|
*
|
|
4
|
-
* 委托给 @ai-zen/agents-sdk 的 Provider
|
|
4
|
+
* 委托给 @ai-zen/agents-sdk 的 Provider。
|
|
5
5
|
* CLI 层负责:组装路径、构建 Provider 单例、注册默认插件。
|
|
6
6
|
*/
|
|
7
7
|
import { existsSync } from "fs";
|
|
@@ -13,10 +13,10 @@ import { readConfig } from "./config.js";
|
|
|
13
13
|
let _provider = null;
|
|
14
14
|
/** existsSync 的别名,用于数组 .filter() 场景 */
|
|
15
15
|
const exists = existsSync;
|
|
16
|
-
export function getProvider() {
|
|
16
|
+
export async function getProvider() {
|
|
17
17
|
if (_provider)
|
|
18
18
|
return _provider;
|
|
19
|
-
const config = readConfig();
|
|
19
|
+
const config = await readConfig();
|
|
20
20
|
// MCP 配置合并优先级(从高到低):
|
|
21
21
|
// 1. 项目/.mcp.json
|
|
22
22
|
// 2. 项目/.ai-zen/mcp.json
|
|
@@ -41,7 +41,7 @@ export function getProvider() {
|
|
|
41
41
|
SKILLS_DIR,
|
|
42
42
|
USER_AGENTS_SKILLS_DIR,
|
|
43
43
|
].filter(exists);
|
|
44
|
-
_provider =
|
|
44
|
+
_provider = await Provider.create({
|
|
45
45
|
config,
|
|
46
46
|
agentsDir: AGENTS_DIR,
|
|
47
47
|
subAgentsPaths: [PROJECT_SUB_AGENTS_DIR, SUB_AGENTS_DIR].filter(exists),
|
|
@@ -54,11 +54,11 @@ export function getProvider() {
|
|
|
54
54
|
export function resetProvider() {
|
|
55
55
|
_provider = null;
|
|
56
56
|
}
|
|
57
|
-
export function createAgent(options) {
|
|
57
|
+
export async function createAgent(options) {
|
|
58
58
|
const { messages, agentId } = options;
|
|
59
|
-
const provider = getProvider();
|
|
59
|
+
const provider = await getProvider();
|
|
60
60
|
// 始终从磁盘读取 Agent 定义(含 permissions、工具配置等)
|
|
61
|
-
const agent = sdkCreateAgent(provider, agentId || "default");
|
|
61
|
+
const agent = await sdkCreateAgent(provider, agentId || "default");
|
|
62
62
|
// 有历史消息时替换(恢复草稿/已保存对话)
|
|
63
63
|
if (messages && messages.length > 0) {
|
|
64
64
|
agent.messages = messages;
|
|
@@ -66,10 +66,9 @@ export function createAgent(options) {
|
|
|
66
66
|
return agent;
|
|
67
67
|
}
|
|
68
68
|
// ==================== 迁移 Agent ====================
|
|
69
|
-
export function createMigrationAgent(modelId) {
|
|
70
|
-
const provider = getProvider();
|
|
71
|
-
const
|
|
72
|
-
const model = createModel(config, modelId);
|
|
69
|
+
export async function createMigrationAgent(modelId) {
|
|
70
|
+
const provider = await getProvider();
|
|
71
|
+
const model = createModel(provider, modelId);
|
|
73
72
|
const definition = TaskMigrationService.createAgentDefinition({ modelId });
|
|
74
73
|
return new SdkAgent({
|
|
75
74
|
provider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-creator.js","sourceRoot":"","sources":["../src/agent-creator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EACL,QAAQ,EACR,WAAW,IAAI,cAAc,EAC7B,QAAQ,EACR,oBAAoB,EACpB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EACjD,UAAU,EACV,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAC7D,sBAAsB,EAAE,2BAA2B,EACnD,yBAAyB,EAAE,8BAA8B,GAC1D,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,2DAA2D;AAE3D,IAAI,SAAS,GAAoB,IAAI,CAAC;AAEtC,uCAAuC;AACvC,MAAM,MAAM,GAAG,UAAU,CAAC;AAE1B,MAAM,UAAU,WAAW;
|
|
1
|
+
{"version":3,"file":"agent-creator.js","sourceRoot":"","sources":["../src/agent-creator.ts"],"names":[],"mappings":"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"}
|
package/dist/config-wizard.js
CHANGED
|
@@ -5,7 +5,7 @@ import chalk from "chalk";
|
|
|
5
5
|
import inquirer from "inquirer";
|
|
6
6
|
import { readConfig, saveConfig } from "./config.js";
|
|
7
7
|
export async function ensureEndpointConfig(modelId) {
|
|
8
|
-
const config = readConfig();
|
|
8
|
+
const config = await readConfig();
|
|
9
9
|
let model;
|
|
10
10
|
if (modelId) {
|
|
11
11
|
model = config.models.find((m) => m.id === modelId);
|
|
@@ -38,7 +38,7 @@ export async function ensureEndpointConfig(modelId) {
|
|
|
38
38
|
},
|
|
39
39
|
]);
|
|
40
40
|
endpoint.apiKey = apiKey;
|
|
41
|
-
saveConfig(config);
|
|
41
|
+
await saveConfig(config);
|
|
42
42
|
console.log(chalk.green(`\n✅ API Key 已保存\n`));
|
|
43
43
|
}
|
|
44
44
|
return model;
|
|
@@ -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,UAAU,EAAE,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,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAC;QAEpF,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
|
@@ -66,9 +66,9 @@ export declare const SHARED_MCP_CONFIG_FILE: string;
|
|
|
66
66
|
* CLI 自身的运行时目录(conversations/、drafts/)由本函数额外创建。
|
|
67
67
|
* SDK 的出厂默认配置会自动写入 config.json(如果不存在)。
|
|
68
68
|
*/
|
|
69
|
-
export declare function ensureConfigDir(): void
|
|
70
|
-
export declare function readConfig(): AppConfig
|
|
71
|
-
export declare function saveConfig(config: AppConfig): void
|
|
69
|
+
export declare function ensureConfigDir(): Promise<void>;
|
|
70
|
+
export declare function readConfig(): Promise<AppConfig>;
|
|
71
|
+
export declare function saveConfig(config: AppConfig): Promise<void>;
|
|
72
72
|
export interface McpServersMap {
|
|
73
73
|
[name: string]: {
|
|
74
74
|
transport: "stdio" | "http" | "sse";
|
|
@@ -85,10 +85,10 @@ export interface McpConfig {
|
|
|
85
85
|
/**
|
|
86
86
|
* 读取全局 ~/.ai-zen/mcp.json,不存在时返回空结构。
|
|
87
87
|
*/
|
|
88
|
-
export declare function readMcpConfig(): McpConfig
|
|
88
|
+
export declare function readMcpConfig(): Promise<McpConfig>;
|
|
89
89
|
/**
|
|
90
90
|
* 原子写入全局 ~/.ai-zen/mcp.json。
|
|
91
91
|
*/
|
|
92
|
-
export declare function writeMcpConfig(mcpConfig: McpConfig): void
|
|
93
|
-
export declare function readProjectMcpConfig(): McpConfig
|
|
92
|
+
export declare function writeMcpConfig(mcpConfig: McpConfig): Promise<void>;
|
|
93
|
+
export declare function readProjectMcpConfig(): Promise<McpConfig>;
|
|
94
94
|
//# sourceMappingURL=config.d.ts.map
|
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,
|
|
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,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;QACpC,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,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,CAWxD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxE;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,SAAS,CAAC,CAY/D"}
|
package/dist/config.js
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
* 3. ~/.ai-zen/skills/
|
|
39
39
|
* 4. ~/.agents/skills/
|
|
40
40
|
*/
|
|
41
|
-
import {
|
|
41
|
+
import { promises as fs } from "fs";
|
|
42
42
|
import { join } from "path";
|
|
43
43
|
import chalk from "chalk";
|
|
44
44
|
import { ConfigManager as SdkConfigManager } from "@ai-zen/agents-sdk";
|
|
@@ -80,15 +80,18 @@ const sdkConfigMgr = new SdkConfigManager(CONFIG_FILE);
|
|
|
80
80
|
* CLI 自身的运行时目录(conversations/、drafts/)由本函数额外创建。
|
|
81
81
|
* SDK 的出厂默认配置会自动写入 config.json(如果不存在)。
|
|
82
82
|
*/
|
|
83
|
-
export function ensureConfigDir() {
|
|
83
|
+
export async function ensureConfigDir() {
|
|
84
84
|
// SDK bootstrap:目录 + config.json + default Agent + default SubAgent
|
|
85
|
-
sdkConfigMgr.bootstrap();
|
|
85
|
+
await sdkConfigMgr.bootstrap();
|
|
86
86
|
// CLI 运行时目录
|
|
87
87
|
const cliDirs = [CLI_DIR, CONVERSATIONS_DIR, DRAFTS_DIR];
|
|
88
88
|
for (const dir of cliDirs) {
|
|
89
|
-
|
|
89
|
+
try {
|
|
90
|
+
await fs.access(dir);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
90
93
|
try {
|
|
91
|
-
|
|
94
|
+
await fs.mkdir(dir, { recursive: true });
|
|
92
95
|
}
|
|
93
96
|
catch {
|
|
94
97
|
console.warn(chalk.yellow(`⚠️ 无法创建目录: ${dir}`));
|
|
@@ -97,22 +100,26 @@ export function ensureConfigDir() {
|
|
|
97
100
|
}
|
|
98
101
|
}
|
|
99
102
|
// ==================== 配置读写 ====================
|
|
100
|
-
export function readConfig() {
|
|
101
|
-
ensureConfigDir();
|
|
102
|
-
return sdkConfigMgr.read();
|
|
103
|
+
export async function readConfig() {
|
|
104
|
+
await ensureConfigDir();
|
|
105
|
+
return await sdkConfigMgr.read();
|
|
103
106
|
}
|
|
104
|
-
export function saveConfig(config) {
|
|
105
|
-
ensureConfigDir();
|
|
106
|
-
sdkConfigMgr.write(config);
|
|
107
|
+
export async function saveConfig(config) {
|
|
108
|
+
await ensureConfigDir();
|
|
109
|
+
await sdkConfigMgr.write(config);
|
|
107
110
|
}
|
|
108
111
|
/**
|
|
109
112
|
* 读取全局 ~/.ai-zen/mcp.json,不存在时返回空结构。
|
|
110
113
|
*/
|
|
111
|
-
export function readMcpConfig() {
|
|
112
|
-
|
|
114
|
+
export async function readMcpConfig() {
|
|
115
|
+
try {
|
|
116
|
+
await fs.access(MCP_CONFIG_FILE);
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
113
119
|
return { servers: {} };
|
|
120
|
+
}
|
|
114
121
|
try {
|
|
115
|
-
return JSON.parse(
|
|
122
|
+
return JSON.parse(await fs.readFile(MCP_CONFIG_FILE, "utf-8"));
|
|
116
123
|
}
|
|
117
124
|
catch {
|
|
118
125
|
return { servers: {} };
|
|
@@ -121,17 +128,21 @@ export function readMcpConfig() {
|
|
|
121
128
|
/**
|
|
122
129
|
* 原子写入全局 ~/.ai-zen/mcp.json。
|
|
123
130
|
*/
|
|
124
|
-
export function writeMcpConfig(mcpConfig) {
|
|
131
|
+
export async function writeMcpConfig(mcpConfig) {
|
|
125
132
|
const tmp = MCP_CONFIG_FILE + ".tmp";
|
|
126
|
-
|
|
127
|
-
|
|
133
|
+
await fs.writeFile(tmp, JSON.stringify(mcpConfig, null, 2), "utf-8");
|
|
134
|
+
await fs.rename(tmp, MCP_CONFIG_FILE);
|
|
128
135
|
}
|
|
129
|
-
export function readProjectMcpConfig() {
|
|
136
|
+
export async function readProjectMcpConfig() {
|
|
130
137
|
const path = PROJECT_MCP_CONFIG_FILE;
|
|
131
|
-
|
|
138
|
+
try {
|
|
139
|
+
await fs.access(path);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
132
142
|
return { servers: {} };
|
|
143
|
+
}
|
|
133
144
|
try {
|
|
134
|
-
return JSON.parse(
|
|
145
|
+
return JSON.parse(await fs.readFile(path, "utf-8"));
|
|
135
146
|
}
|
|
136
147
|
catch {
|
|
137
148
|
return { servers: {} };
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,11 +21,11 @@ export async function handleNew(ctx) {
|
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
23
|
// 将当前草稿存档(如果有),避免丢失
|
|
24
|
-
const draft = draftRepo.read();
|
|
24
|
+
const draft = await draftRepo.read();
|
|
25
25
|
if (draft && draft.messages.length > 1) {
|
|
26
26
|
const name = `草稿-${formatShortTime(draft.updatedAt)}`;
|
|
27
27
|
const id = name.replace(/[\\/:*?"<>|]/g, "_");
|
|
28
|
-
conversationRepo.write({
|
|
28
|
+
await conversationRepo.write({
|
|
29
29
|
id,
|
|
30
30
|
agentId: draft.agentId || "default",
|
|
31
31
|
modelId: draft.modelId,
|
|
@@ -34,7 +34,7 @@ export async function handleNew(ctx) {
|
|
|
34
34
|
updatedAt: new Date().toISOString(),
|
|
35
35
|
});
|
|
36
36
|
console.log(chalk.gray(`📦 当前对话已存档: ${name}\n`));
|
|
37
|
-
draftRepo.delete();
|
|
37
|
+
await draftRepo.delete();
|
|
38
38
|
}
|
|
39
39
|
// 重置为 Agent 定义的初始消息(system prompt + few-shot 示例等)
|
|
40
40
|
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,sBAAsB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,gBAAgB,GAAG,IAAI,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;AACvE,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;AAElD,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,SAAS,CAAC,IAAI,EAAE,CAAC;
|
|
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,sBAAsB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,gBAAgB,GAAG,IAAI,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;AACvE,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;AAElD,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,SAAS,CAAC,IAAI,EAAE,CAAC;IACrC,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,gBAAgB,CAAC,KAAK,CAAC;YAC3B,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,SAAS,CAAC,MAAM,EAAE,CAAC;IAC3B,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"}
|
|
@@ -17,9 +17,9 @@ import { formatShortTime } from "./format-time.js";
|
|
|
17
17
|
import { dispatchCommand, getCommandNames } from "./conversation-commands/index.js";
|
|
18
18
|
const conversationRepo = new ConversationRepository(CONVERSATIONS_DIR);
|
|
19
19
|
/** 保存当前对话到 conversations 目录 */
|
|
20
|
-
function saveCurrentConversation(name, messages, modelId, existingId, agentId) {
|
|
20
|
+
async function saveCurrentConversation(name, messages, modelId, existingId, agentId) {
|
|
21
21
|
const id = existingId || name.replace(/[\\/:*?"<>|]/g, "_");
|
|
22
|
-
conversationRepo.write({
|
|
22
|
+
await conversationRepo.write({
|
|
23
23
|
id,
|
|
24
24
|
agentId: agentId || "default",
|
|
25
25
|
modelId,
|
|
@@ -39,7 +39,7 @@ async function sendAndStream(ctx) {
|
|
|
39
39
|
if (lastMessage?.status === "error") {
|
|
40
40
|
console.error(chalk.red(`\n❌ 发生错误: ${JSON.stringify(lastMessage)}\n`));
|
|
41
41
|
try {
|
|
42
|
-
saveCurrentConversation(ctx.currentName, ctx.agent.messages, ctx.modelId, ctx.currentId, ctx.agentId);
|
|
42
|
+
await saveCurrentConversation(ctx.currentName, ctx.agent.messages, ctx.modelId, ctx.currentId, ctx.agentId);
|
|
43
43
|
console.log(chalk.yellow(`💾 错误时对话已自动保存: ${ctx.currentName}\n`));
|
|
44
44
|
}
|
|
45
45
|
catch (saveError) {
|
|
@@ -67,7 +67,7 @@ export async function runConversation(options) {
|
|
|
67
67
|
// 确保端点配置完整(如 API Key 已设置)
|
|
68
68
|
await ensureEndpointConfig(modelId);
|
|
69
69
|
// 在 runConversation 内部创建 agent
|
|
70
|
-
const agent = createAgent({ messages, agentId });
|
|
70
|
+
const agent = await createAgent({ messages, agentId });
|
|
71
71
|
// ============ 插件注册 ============
|
|
72
72
|
// 1. cwdTracker — 追踪工作目录变化,动态通知 Agent
|
|
73
73
|
agent.use(new CwdTrackerPlugin());
|
|
@@ -82,8 +82,8 @@ export async function runConversation(options) {
|
|
|
82
82
|
cwd: process.cwd(),
|
|
83
83
|
}));
|
|
84
84
|
// 3. autoMigrate — 检测 token 超限时自动迁移
|
|
85
|
-
const migrationAgent = createMigrationAgent(modelId);
|
|
86
|
-
const config = readConfig();
|
|
85
|
+
const migrationAgent = await createMigrationAgent(modelId);
|
|
86
|
+
const config = await readConfig();
|
|
87
87
|
const modelConfig = config.models.find((m) => m.id === modelId);
|
|
88
88
|
const maxTokens = modelConfig?.maxContextTokens ?? (modelConfig?.maxContextChars ? Math.floor(modelConfig.maxContextChars / 4) : undefined);
|
|
89
89
|
if (maxTokens && maxTokens > 0) {
|
|
@@ -93,8 +93,8 @@ export async function runConversation(options) {
|
|
|
93
93
|
onBeforeMigrate: (promptTokens, maxTokens) => {
|
|
94
94
|
console.log(chalk.yellow.bold(`\n📋 检测到上下文即将超限(${promptTokens}/${maxTokens} tokens),正在自动生成交接文档以延续对话...\n`));
|
|
95
95
|
},
|
|
96
|
-
onHandoff: (handoffDoc, agent) => {
|
|
97
|
-
saveCurrentConversation(ctx.currentName, agent.messages, ctx.modelId, ctx.currentId, ctx.agentId);
|
|
96
|
+
onHandoff: async (handoffDoc, agent) => {
|
|
97
|
+
await saveCurrentConversation(ctx.currentName, agent.messages, ctx.modelId, ctx.currentId, ctx.agentId);
|
|
98
98
|
console.log(chalk.gray(` ✅ 原对话已保存: ${ctx.currentName}`));
|
|
99
99
|
// SDK 的 AutoMigratePlugin 已在内部替换 agent 消息,
|
|
100
100
|
// 此处无需手动创建新 agent
|
|
@@ -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,eAAe,EACf,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEpF,MAAM,gBAAgB,GAAG,IAAI,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;AAEvE,+BAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"conversation-runner.js","sourceRoot":"","sources":["../src/conversation-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/hook.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare function installHook(): void
|
|
2
|
-
export declare function uninstallHook(): void
|
|
1
|
+
export declare function installHook(): Promise<void>;
|
|
2
|
+
export declare function uninstallHook(): Promise<void>;
|
|
3
3
|
//# sourceMappingURL=hook.d.ts.map
|
package/dist/hook.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AA0CA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBjD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAuCnD"}
|
package/dist/hook.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { promises as fs } from "node:fs";
|
|
4
4
|
const MARKER_START = "# === aiz hook (开始) ===";
|
|
5
5
|
const MARKER_END = "# === aiz hook (结束) ===";
|
|
6
6
|
function detectShell() {
|
|
@@ -25,38 +25,45 @@ function hookCode(hookFn) {
|
|
|
25
25
|
"",
|
|
26
26
|
].join("\n");
|
|
27
27
|
}
|
|
28
|
-
function isInstalled(rcFile) {
|
|
29
|
-
|
|
28
|
+
async function isInstalled(rcFile) {
|
|
29
|
+
try {
|
|
30
|
+
await fs.access(rcFile);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
30
33
|
return false;
|
|
31
|
-
|
|
34
|
+
}
|
|
35
|
+
const content = await fs.readFile(rcFile, "utf-8");
|
|
32
36
|
return content.includes(MARKER_START);
|
|
33
37
|
}
|
|
34
|
-
export function installHook() {
|
|
38
|
+
export async function installHook() {
|
|
35
39
|
const shell = detectShell();
|
|
36
40
|
if (!shell) {
|
|
37
41
|
console.error("❌ 不支持的 shell(仅支持 bash / zsh)");
|
|
38
42
|
process.exit(1);
|
|
39
43
|
}
|
|
40
|
-
if (isInstalled(shell.rcFile)) {
|
|
44
|
+
if (await isInstalled(shell.rcFile)) {
|
|
41
45
|
console.log("ℹ️ aiz hook 已安装,无需重复操作");
|
|
42
46
|
return;
|
|
43
47
|
}
|
|
44
|
-
|
|
48
|
+
await fs.appendFile(shell.rcFile, hookCode(shell.hookFn), "utf-8");
|
|
45
49
|
console.log(`✅ aiz hook 已安装到 ${shell.rcFile}`);
|
|
46
50
|
console.log(` 重启终端或执行 source ${shell.rcFile} 即可生效`);
|
|
47
51
|
console.log(` 之后输入不存在的命令会自动转发给 AI 处理`);
|
|
48
52
|
}
|
|
49
|
-
export function uninstallHook() {
|
|
53
|
+
export async function uninstallHook() {
|
|
50
54
|
const shell = detectShell();
|
|
51
55
|
if (!shell) {
|
|
52
56
|
console.error("❌ 不支持的 shell(仅支持 bash / zsh)");
|
|
53
57
|
process.exit(1);
|
|
54
58
|
}
|
|
55
|
-
|
|
59
|
+
try {
|
|
60
|
+
await fs.access(shell.rcFile);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
56
63
|
console.log("ℹ️ aiz hook 未安装(文件不存在)");
|
|
57
64
|
return;
|
|
58
65
|
}
|
|
59
|
-
const content =
|
|
66
|
+
const content = await fs.readFile(shell.rcFile, "utf-8");
|
|
60
67
|
if (!content.includes(MARKER_START)) {
|
|
61
68
|
console.log("ℹ️ aiz hook 未安装");
|
|
62
69
|
return;
|
|
@@ -77,7 +84,7 @@ export function uninstallHook() {
|
|
|
77
84
|
newLines.push(line);
|
|
78
85
|
}
|
|
79
86
|
}
|
|
80
|
-
|
|
87
|
+
await fs.writeFile(shell.rcFile, newLines.join("\n"), "utf-8");
|
|
81
88
|
console.log(`✅ aiz hook 已从 ${shell.rcFile} 卸载`);
|
|
82
89
|
}
|
|
83
90
|
//# sourceMappingURL=hook.js.map
|
package/dist/hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
|