@ai-zen/cli 0.9.0 → 1.0.0-alpha.2
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 +59 -1
- package/README.md +94 -40
- package/README.zh.md +94 -40
- package/dist/agent-creator.d.ts +7 -1
- package/dist/agent-creator.d.ts.map +1 -1
- package/dist/agent-creator.js +16 -1
- package/dist/agent-creator.js.map +1 -1
- package/dist/agents-store.d.ts +33 -0
- package/dist/agents-store.d.ts.map +1 -0
- package/dist/agents-store.js +50 -0
- package/dist/agents-store.js.map +1 -0
- package/dist/auto-migrate-confirm-plugin.d.ts +7 -7
- package/dist/auto-migrate-confirm-plugin.d.ts.map +1 -1
- package/dist/auto-migrate-confirm-plugin.js +3 -21
- package/dist/auto-migrate-confirm-plugin.js.map +1 -1
- package/dist/config-editor.d.ts +201 -0
- package/dist/config-editor.d.ts.map +1 -0
- package/dist/config-editor.js +511 -0
- package/dist/config-editor.js.map +1 -0
- package/dist/config.d.ts +41 -16
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +32 -29
- package/dist/config.js.map +1 -1
- package/dist/conversation-commands/registry.d.ts +4 -5
- package/dist/conversation-commands/registry.d.ts.map +1 -1
- package/dist/conversation-commands/registry.js +9 -6
- package/dist/conversation-commands/registry.js.map +1 -1
- package/dist/conversation-persist-plugin.d.ts +25 -0
- package/dist/conversation-persist-plugin.d.ts.map +1 -0
- package/dist/conversation-persist-plugin.js +44 -0
- package/dist/conversation-persist-plugin.js.map +1 -0
- package/dist/conversation-repository.d.ts +19 -2
- package/dist/conversation-repository.d.ts.map +1 -1
- package/dist/conversation-repository.js +48 -5
- package/dist/conversation-repository.js.map +1 -1
- package/dist/format-time.d.ts +2 -2
- package/dist/format-time.js +2 -2
- package/dist/hook.d.ts.map +1 -1
- package/dist/hook.js +58 -46
- package/dist/hook.js.map +1 -1
- package/dist/index.js +65 -36
- package/dist/index.js.map +1 -1
- package/dist/migration-service.d.ts +3 -1
- package/dist/migration-service.d.ts.map +1 -1
- package/dist/migration-service.js +26 -23
- package/dist/migration-service.js.map +1 -1
- package/dist/mode.d.ts +56 -0
- package/dist/mode.d.ts.map +1 -0
- package/dist/mode.js +83 -0
- package/dist/mode.js.map +1 -0
- package/dist/session-pointer.d.ts +22 -0
- package/dist/session-pointer.d.ts.map +1 -0
- package/dist/session-pointer.js +49 -0
- package/dist/session-pointer.js.map +1 -0
- package/dist/stdio-runner.d.ts +34 -0
- package/dist/stdio-runner.d.ts.map +1 -0
- package/dist/stdio-runner.js +161 -0
- package/dist/stdio-runner.js.map +1 -0
- package/dist/tui/chat-session.d.ts +100 -0
- package/dist/tui/chat-session.d.ts.map +1 -0
- package/dist/tui/chat-session.js +263 -0
- package/dist/tui/chat-session.js.map +1 -0
- package/dist/tui/components.d.ts +44 -0
- package/dist/tui/components.d.ts.map +1 -0
- package/dist/tui/components.js +62 -0
- package/dist/tui/components.js.map +1 -0
- package/dist/tui/config-wizard/detail.d.ts +51 -0
- package/dist/tui/config-wizard/detail.d.ts.map +1 -0
- package/dist/tui/config-wizard/detail.js +273 -0
- package/dist/tui/config-wizard/detail.js.map +1 -0
- package/dist/tui/config-wizard/engine.d.ts +36 -0
- package/dist/tui/config-wizard/engine.d.ts.map +1 -0
- package/dist/tui/config-wizard/engine.js +187 -0
- package/dist/tui/config-wizard/engine.js.map +1 -0
- package/dist/tui/config-wizard/fields.d.ts +24 -0
- package/dist/tui/config-wizard/fields.d.ts.map +1 -0
- package/dist/tui/config-wizard/fields.js +411 -0
- package/dist/tui/config-wizard/fields.js.map +1 -0
- package/dist/tui/config-wizard/frame.d.ts +27 -0
- package/dist/tui/config-wizard/frame.d.ts.map +1 -0
- package/dist/tui/config-wizard/frame.js +28 -0
- package/dist/tui/config-wizard/frame.js.map +1 -0
- package/dist/tui/config-wizard/index.d.ts +6 -0
- package/dist/tui/config-wizard/index.d.ts.map +1 -0
- package/dist/tui/config-wizard/index.js +7 -0
- package/dist/tui/config-wizard/index.js.map +1 -0
- package/dist/tui/config-wizard/kv-editor.d.ts +18 -0
- package/dist/tui/config-wizard/kv-editor.d.ts.map +1 -0
- package/dist/tui/config-wizard/kv-editor.js +116 -0
- package/dist/tui/config-wizard/kv-editor.js.map +1 -0
- package/dist/tui/config-wizard/list.d.ts +13 -0
- package/dist/tui/config-wizard/list.d.ts.map +1 -0
- package/dist/tui/config-wizard/list.js +29 -0
- package/dist/tui/config-wizard/list.js.map +1 -0
- package/dist/tui/config-wizard/mcp-helpers.d.ts +9 -0
- package/dist/tui/config-wizard/mcp-helpers.d.ts.map +1 -0
- package/dist/tui/config-wizard/mcp-helpers.js +19 -0
- package/dist/tui/config-wizard/mcp-helpers.js.map +1 -0
- package/dist/tui/config-wizard/menu.d.ts +18 -0
- package/dist/tui/config-wizard/menu.d.ts.map +1 -0
- package/dist/tui/config-wizard/menu.js +70 -0
- package/dist/tui/config-wizard/menu.js.map +1 -0
- package/dist/tui/config-wizard/prompt-editor.d.ts +24 -0
- package/dist/tui/config-wizard/prompt-editor.d.ts.map +1 -0
- package/dist/tui/config-wizard/prompt-editor.js +83 -0
- package/dist/tui/config-wizard/prompt-editor.js.map +1 -0
- package/dist/tui/config-wizard/prompt.d.ts +57 -0
- package/dist/tui/config-wizard/prompt.d.ts.map +1 -0
- package/dist/tui/config-wizard/prompt.js +130 -0
- package/dist/tui/config-wizard/prompt.js.map +1 -0
- package/dist/tui/config-wizard/step-agents.d.ts +4 -0
- package/dist/tui/config-wizard/step-agents.d.ts.map +1 -0
- package/dist/tui/config-wizard/step-agents.js +110 -0
- package/dist/tui/config-wizard/step-agents.js.map +1 -0
- package/dist/tui/config-wizard/step-defaults.d.ts +4 -0
- package/dist/tui/config-wizard/step-defaults.d.ts.map +1 -0
- package/dist/tui/config-wizard/step-defaults.js +76 -0
- package/dist/tui/config-wizard/step-defaults.js.map +1 -0
- package/dist/tui/config-wizard/step-endpoints.d.ts +4 -0
- package/dist/tui/config-wizard/step-endpoints.d.ts.map +1 -0
- package/dist/tui/config-wizard/step-endpoints.js +43 -0
- package/dist/tui/config-wizard/step-endpoints.js.map +1 -0
- package/dist/tui/config-wizard/step-mcp.d.ts +4 -0
- package/dist/tui/config-wizard/step-mcp.d.ts.map +1 -0
- package/dist/tui/config-wizard/step-mcp.js +97 -0
- package/dist/tui/config-wizard/step-mcp.js.map +1 -0
- package/dist/tui/config-wizard/step-menu.d.ts +4 -0
- package/dist/tui/config-wizard/step-menu.d.ts.map +1 -0
- package/dist/tui/config-wizard/step-menu.js +28 -0
- package/dist/tui/config-wizard/step-menu.js.map +1 -0
- package/dist/tui/config-wizard/step-models.d.ts +4 -0
- package/dist/tui/config-wizard/step-models.d.ts.map +1 -0
- package/dist/tui/config-wizard/step-models.js +114 -0
- package/dist/tui/config-wizard/step-models.js.map +1 -0
- package/dist/tui/config-wizard/step-new-endpoint.d.ts +4 -0
- package/dist/tui/config-wizard/step-new-endpoint.d.ts.map +1 -0
- package/dist/tui/config-wizard/step-new-endpoint.js +54 -0
- package/dist/tui/config-wizard/step-new-endpoint.js.map +1 -0
- package/dist/tui/config-wizard/step-simple.d.ts +4 -0
- package/dist/tui/config-wizard/step-simple.d.ts.map +1 -0
- package/dist/tui/config-wizard/step-simple.js +55 -0
- package/dist/tui/config-wizard/step-simple.js.map +1 -0
- package/dist/tui/config-wizard/types.d.ts +138 -0
- package/dist/tui/config-wizard/types.d.ts.map +1 -0
- package/dist/tui/config-wizard/types.js +12 -0
- package/dist/tui/config-wizard/types.js.map +1 -0
- package/dist/tui/config-wizard/wizard.d.ts +9 -0
- package/dist/tui/config-wizard/wizard.d.ts.map +1 -0
- package/dist/tui/config-wizard/wizard.js +33 -0
- package/dist/tui/config-wizard/wizard.js.map +1 -0
- package/dist/tui/highlight.d.ts +34 -0
- package/dist/tui/highlight.d.ts.map +1 -0
- package/dist/tui/highlight.js +116 -0
- package/dist/tui/highlight.js.map +1 -0
- package/dist/tui/index.d.ts +33 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +265 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/screens/chat-commands.d.ts +27 -0
- package/dist/tui/screens/chat-commands.d.ts.map +1 -0
- package/dist/tui/screens/chat-commands.js +176 -0
- package/dist/tui/screens/chat-commands.js.map +1 -0
- package/dist/tui/screens/chat.d.ts +25 -0
- package/dist/tui/screens/chat.d.ts.map +1 -0
- package/dist/tui/screens/chat.js +494 -0
- package/dist/tui/screens/chat.js.map +1 -0
- package/dist/tui/screens/index.d.ts +13 -0
- package/dist/tui/screens/index.d.ts.map +1 -0
- package/dist/tui/screens/index.js +14 -0
- package/dist/tui/screens/index.js.map +1 -0
- package/dist/tui/screens/input.d.ts +29 -0
- package/dist/tui/screens/input.d.ts.map +1 -0
- package/dist/tui/screens/input.js +54 -0
- package/dist/tui/screens/input.js.map +1 -0
- package/dist/tui/screens/layout.d.ts +42 -0
- package/dist/tui/screens/layout.d.ts.map +1 -0
- package/dist/tui/screens/layout.js +45 -0
- package/dist/tui/screens/layout.js.map +1 -0
- package/dist/tui/screens/lines.d.ts +71 -0
- package/dist/tui/screens/lines.d.ts.map +1 -0
- package/dist/tui/screens/lines.js +198 -0
- package/dist/tui/screens/lines.js.map +1 -0
- package/dist/tui/screens/overlays.d.ts +12 -0
- package/dist/tui/screens/overlays.d.ts.map +1 -0
- package/dist/tui/screens/overlays.js +34 -0
- package/dist/tui/screens/overlays.js.map +1 -0
- package/dist/tui/screens/render.d.ts +9 -0
- package/dist/tui/screens/render.d.ts.map +1 -0
- package/dist/tui/screens/render.js +97 -0
- package/dist/tui/screens/render.js.map +1 -0
- package/dist/tui/screens/splash.d.ts +5 -0
- package/dist/tui/screens/splash.d.ts.map +1 -0
- package/dist/tui/screens/splash.js +51 -0
- package/dist/tui/screens/splash.js.map +1 -0
- package/dist/tui/screens/state.d.ts +13 -0
- package/dist/tui/screens/state.d.ts.map +1 -0
- package/dist/tui/screens/state.js +75 -0
- package/dist/tui/screens/state.js.map +1 -0
- package/dist/tui/text.d.ts +71 -0
- package/dist/tui/text.d.ts.map +1 -0
- package/dist/tui/text.js +191 -0
- package/dist/tui/text.js.map +1 -0
- package/dist/tui/theme.d.ts +62 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +120 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/types.d.ts +1 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +11 -6
- package/dist/config-wizard.d.ts +0 -6
- package/dist/config-wizard.d.ts.map +0 -1
- package/dist/config-wizard.js +0 -46
- package/dist/config-wizard.js.map +0 -1
- package/dist/conversation-commands/back.d.ts +0 -3
- package/dist/conversation-commands/back.d.ts.map +0 -1
- package/dist/conversation-commands/back.js +0 -144
- package/dist/conversation-commands/back.js.map +0 -1
- package/dist/conversation-commands/clear.d.ts +0 -3
- package/dist/conversation-commands/clear.d.ts.map +0 -1
- package/dist/conversation-commands/clear.js +0 -8
- package/dist/conversation-commands/clear.js.map +0 -1
- package/dist/conversation-commands/editor.d.ts +0 -3
- package/dist/conversation-commands/editor.d.ts.map +0 -1
- package/dist/conversation-commands/editor.js +0 -15
- package/dist/conversation-commands/editor.js.map +0 -1
- package/dist/conversation-commands/exit.d.ts +0 -3
- package/dist/conversation-commands/exit.d.ts.map +0 -1
- package/dist/conversation-commands/exit.js +0 -37
- package/dist/conversation-commands/exit.js.map +0 -1
- package/dist/conversation-commands/help.d.ts +0 -3
- package/dist/conversation-commands/help.d.ts.map +0 -1
- package/dist/conversation-commands/help.js +0 -10
- package/dist/conversation-commands/help.js.map +0 -1
- package/dist/conversation-commands/index.d.ts +0 -13
- package/dist/conversation-commands/index.d.ts.map +0 -1
- package/dist/conversation-commands/index.js +0 -66
- package/dist/conversation-commands/index.js.map +0 -1
- package/dist/conversation-commands/migrate.d.ts +0 -12
- package/dist/conversation-commands/migrate.d.ts.map +0 -1
- package/dist/conversation-commands/migrate.js +0 -56
- package/dist/conversation-commands/migrate.js.map +0 -1
- package/dist/conversation-commands/new.d.ts +0 -3
- package/dist/conversation-commands/new.d.ts.map +0 -1
- package/dist/conversation-commands/new.js +0 -45
- package/dist/conversation-commands/new.js.map +0 -1
- package/dist/conversation-commands/save.d.ts +0 -3
- package/dist/conversation-commands/save.d.ts.map +0 -1
- package/dist/conversation-commands/save.js +0 -32
- package/dist/conversation-commands/save.js.map +0 -1
- package/dist/conversation-runner.d.ts +0 -17
- package/dist/conversation-runner.d.ts.map +0 -1
- package/dist/conversation-runner.js +0 -176
- package/dist/conversation-runner.js.map +0 -1
- package/dist/delta-renderer.d.ts +0 -33
- package/dist/delta-renderer.d.ts.map +0 -1
- package/dist/delta-renderer.js +0 -120
- package/dist/delta-renderer.js.map +0 -1
- package/dist/draft-plugin.d.ts +0 -19
- package/dist/draft-plugin.d.ts.map +0 -1
- package/dist/draft-plugin.js +0 -30
- package/dist/draft-plugin.js.map +0 -1
- package/dist/draft-repository.d.ts +0 -34
- package/dist/draft-repository.d.ts.map +0 -1
- package/dist/draft-repository.js +0 -64
- package/dist/draft-repository.js.map +0 -1
- package/dist/menus/agents.d.ts +0 -5
- package/dist/menus/agents.d.ts.map +0 -1
- package/dist/menus/agents.js +0 -219
- package/dist/menus/agents.js.map +0 -1
- package/dist/menus/common.d.ts +0 -41
- package/dist/menus/common.d.ts.map +0 -1
- package/dist/menus/common.js +0 -104
- package/dist/menus/common.js.map +0 -1
- package/dist/menus/config-display.d.ts +0 -2
- package/dist/menus/config-display.d.ts.map +0 -1
- package/dist/menus/config-display.js +0 -82
- package/dist/menus/config-display.js.map +0 -1
- package/dist/menus/config.d.ts +0 -8
- package/dist/menus/config.d.ts.map +0 -1
- package/dist/menus/config.js +0 -407
- package/dist/menus/config.js.map +0 -1
- package/dist/menus/conversations.d.ts +0 -20
- package/dist/menus/conversations.d.ts.map +0 -1
- package/dist/menus/conversations.js +0 -83
- package/dist/menus/conversations.js.map +0 -1
- package/dist/menus/index.d.ts +0 -5
- package/dist/menus/index.d.ts.map +0 -1
- package/dist/menus/index.js +0 -59
- package/dist/menus/index.js.map +0 -1
- package/dist/menus/start-conversation.d.ts +0 -16
- package/dist/menus/start-conversation.d.ts.map +0 -1
- package/dist/menus/start-conversation.js +0 -176
- package/dist/menus/start-conversation.js.map +0 -1
- package/dist/slash-hint-prompt.d.ts +0 -41
- package/dist/slash-hint-prompt.d.ts.map +0 -1
- package/dist/slash-hint-prompt.js +0 -92
- package/dist/slash-hint-prompt.js.map +0 -1
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import inquirer from "inquirer";
|
|
3
|
-
import { Message } from "@ai-zen/agents-core";
|
|
4
|
-
import { formatShortTime } from "../format-time.js";
|
|
5
|
-
import { conversationRepository } from "../conversation-repository.js";
|
|
6
|
-
import { draftRepository } from "../draft-repository.js";
|
|
7
|
-
export async function handleNew(ctx) {
|
|
8
|
-
const agent = ctx.agent;
|
|
9
|
-
const { confirmNew } = await inquirer.prompt([
|
|
10
|
-
{
|
|
11
|
-
type: "confirm",
|
|
12
|
-
name: "confirmNew",
|
|
13
|
-
message: "确定要开始新对话吗?当前对话将丢失。",
|
|
14
|
-
default: false,
|
|
15
|
-
},
|
|
16
|
-
]);
|
|
17
|
-
if (!confirmNew) {
|
|
18
|
-
console.log(chalk.gray("已取消\n"));
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
// 将当前草稿存档(如果有),避免丢失
|
|
22
|
-
const draft = await draftRepository.read();
|
|
23
|
-
if (draft && draft.messages.length > 1) {
|
|
24
|
-
const name = `草稿-${formatShortTime(draft.updatedAt)}`;
|
|
25
|
-
const id = name.replace(/[\\/:*?"<>|]/g, "_");
|
|
26
|
-
await conversationRepository.write({
|
|
27
|
-
id,
|
|
28
|
-
agentId: draft.agentId || "default",
|
|
29
|
-
modelId: draft.modelId,
|
|
30
|
-
messages: draft.messages,
|
|
31
|
-
createdAt: new Date().toISOString(),
|
|
32
|
-
updatedAt: new Date().toISOString(),
|
|
33
|
-
});
|
|
34
|
-
console.log(chalk.gray(`📦 当前对话已存档: ${name}\n`));
|
|
35
|
-
await draftRepository.delete();
|
|
36
|
-
}
|
|
37
|
-
// 重置为 Agent 定义的初始消息(system prompt + few-shot 示例等)
|
|
38
|
-
agent.messages = agent.definition.messages.map((m) => new Message(m));
|
|
39
|
-
// 更新上下文状态
|
|
40
|
-
ctx.currentName = `对话_${formatShortTime(new Date().toISOString())}`;
|
|
41
|
-
ctx.currentId = undefined;
|
|
42
|
-
ctx.input = "";
|
|
43
|
-
console.log(chalk.blue.bold("\n🆕 新会话已开始\n"));
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=new.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
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,32 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import inquirer from "inquirer";
|
|
3
|
-
import { conversationRepository } from "../conversation-repository.js";
|
|
4
|
-
export async function handleSave(ctx) {
|
|
5
|
-
const agent = ctx.agent;
|
|
6
|
-
const { name } = await inquirer.prompt([
|
|
7
|
-
{
|
|
8
|
-
type: "input",
|
|
9
|
-
name: "name",
|
|
10
|
-
message: "对话名称:",
|
|
11
|
-
default: ctx.currentName,
|
|
12
|
-
},
|
|
13
|
-
]);
|
|
14
|
-
try {
|
|
15
|
-
const id = ctx.currentId || name.replace(/[\\/:*?"<>|]/g, "_");
|
|
16
|
-
await conversationRepository.write({
|
|
17
|
-
id,
|
|
18
|
-
agentId: ctx.agentId || "default",
|
|
19
|
-
modelId: ctx.modelId,
|
|
20
|
-
messages: agent.messages,
|
|
21
|
-
createdAt: new Date().toISOString(),
|
|
22
|
-
updatedAt: new Date().toISOString(),
|
|
23
|
-
});
|
|
24
|
-
console.log(chalk.green(`\n✅ 对话已保存: ${name} (ID: ${id})\n`));
|
|
25
|
-
ctx.currentName = name;
|
|
26
|
-
ctx.currentId = id;
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
console.error(chalk.red(`\n❌ 保存失败: ${error}\n`));
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=save.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 对话运行器 — CLI 对话主循环
|
|
3
|
-
*
|
|
4
|
-
* 使用 SDK 的 SdkAgent + 插件驱动对话。
|
|
5
|
-
* CLI 层只负责:流式渲染、命令处理、UI 交互。
|
|
6
|
-
*/
|
|
7
|
-
import { AgentNS } from "@ai-zen/agents-core";
|
|
8
|
-
export interface RunConversationOptions {
|
|
9
|
-
modelId: string;
|
|
10
|
-
agentId?: string;
|
|
11
|
-
messages?: AgentNS.Message[];
|
|
12
|
-
conversationId?: string;
|
|
13
|
-
conversationName?: string;
|
|
14
|
-
query?: string;
|
|
15
|
-
}
|
|
16
|
-
export declare function runConversation(options: RunConversationOptions): Promise<void>;
|
|
17
|
-
//# sourceMappingURL=conversation-runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-runner.d.ts","sourceRoot":"","sources":["../src/conversation-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA0D9C,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,CAqJpF"}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 对话运行器 — CLI 对话主循环
|
|
3
|
-
*
|
|
4
|
-
* 使用 SDK 的 SdkAgent + 插件驱动对话。
|
|
5
|
-
* CLI 层只负责:流式渲染、命令处理、UI 交互。
|
|
6
|
-
*/
|
|
7
|
-
import chalk from "chalk";
|
|
8
|
-
import { AgentNS } from "@ai-zen/agents-core";
|
|
9
|
-
import { AutoRefreshToolsPlugin, ContextGuardPlugin } from "@ai-zen/agents-sdk";
|
|
10
|
-
import { AutoMigrateConfirmPlugin } from "./auto-migrate-confirm-plugin.js";
|
|
11
|
-
import { SubAgentGuardInstallerPlugin } from "./sub-agent-guard-plugin.js";
|
|
12
|
-
import { DeltaRenderer } from "./delta-renderer.js";
|
|
13
|
-
import { createAgent } from "./agent-creator.js";
|
|
14
|
-
import { readConfig } from "./config.js";
|
|
15
|
-
import { CwdTrackerPlugin } from "./cwd-tracker-plugin.js";
|
|
16
|
-
import { DraftPlugin } from "./draft-plugin.js";
|
|
17
|
-
import { saveConversation } from "./conversation-repository.js";
|
|
18
|
-
import { createMigrationService } from "./migration-service.js";
|
|
19
|
-
import { ensureEndpointConfig } from "./config-wizard.js";
|
|
20
|
-
import { formatShortTime } from "./format-time.js";
|
|
21
|
-
import { dispatchCommand, getCommandNames } from "./conversation-commands/index.js";
|
|
22
|
-
import { askInput } from "./slash-hint-prompt.js";
|
|
23
|
-
// ==================== 发送消息 ====================
|
|
24
|
-
async function sendAndStream(ctx) {
|
|
25
|
-
console.log(chalk.green.bold("\n🤖 AI:"));
|
|
26
|
-
try {
|
|
27
|
-
const messages = await ctx.agent.send(ctx.input);
|
|
28
|
-
process.stdout.write("\n\n");
|
|
29
|
-
const lastMessage = messages.at(-1);
|
|
30
|
-
if (lastMessage?.status === "error") {
|
|
31
|
-
console.error(chalk.red(`\n❌ 发生错误: ${JSON.stringify(lastMessage)}\n`));
|
|
32
|
-
try {
|
|
33
|
-
await saveConversation(ctx);
|
|
34
|
-
console.log(chalk.yellow(`💾 错误时对话已自动保存: ${ctx.currentName}\n`));
|
|
35
|
-
}
|
|
36
|
-
catch (saveError) {
|
|
37
|
-
console.error(chalk.red(`❌ 自动保存失败: ${saveError}\n`));
|
|
38
|
-
}
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (lastMessage?.role === AgentNS.Role.Assistant && Array.isArray(lastMessage.content)) {
|
|
42
|
-
for (const section of lastMessage.content) {
|
|
43
|
-
if (section.type === "image_url")
|
|
44
|
-
console.log(chalk.yellow(`[图片: ${section.image_url.url}]`));
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
console.log();
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
process.stdout.write(chalk.red(`\n❌ 请求错误: ${error?.message || error}\n`));
|
|
51
|
-
if (error.message?.includes("API Key") || error.message?.includes("401") || error.message?.includes("403")) {
|
|
52
|
-
console.log(chalk.yellow("💡 提示: 请使用 'aiz config set-key' 设置正确的 API Key\n"));
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
export async function runConversation(options) {
|
|
57
|
-
const { modelId, agentId, messages, conversationId, conversationName, query } = options;
|
|
58
|
-
// 确保端点配置完整(如 API Key 已设置)
|
|
59
|
-
await ensureEndpointConfig(modelId);
|
|
60
|
-
// 在 runConversation 内部创建 agent
|
|
61
|
-
const agent = await createAgent({ messages, agentId });
|
|
62
|
-
// 会话上下文:先创建基础字段(迁移服务实例随后装配并回填 migrationService)
|
|
63
|
-
const ctx = {
|
|
64
|
-
agent,
|
|
65
|
-
input: "",
|
|
66
|
-
currentName: conversationName || `对话_${formatShortTime(new Date().toISOString())}`,
|
|
67
|
-
currentId: conversationId,
|
|
68
|
-
modelId,
|
|
69
|
-
agentId,
|
|
70
|
-
running: true,
|
|
71
|
-
};
|
|
72
|
-
// ============ 插件注册 ============
|
|
73
|
-
// 1. cwdTracker — 追踪工作目录变化,动态通知 Agent
|
|
74
|
-
agent.use(new CwdTrackerPlugin());
|
|
75
|
-
// 2. autoRefreshTools — 每次 send 前刷新文件系统工具
|
|
76
|
-
agent.use(new AutoRefreshToolsPlugin());
|
|
77
|
-
// 3. draftPlugin — 每次 send 后自动保存草稿(CLI 产品特性,不依赖 SDK;始终写入 _current.json,统一草稿检测入口)
|
|
78
|
-
agent.use(new DraftPlugin({
|
|
79
|
-
agentId: agentId || "default",
|
|
80
|
-
modelId,
|
|
81
|
-
cwd: process.cwd(),
|
|
82
|
-
}));
|
|
83
|
-
// 4/5. contextGuard 与 autoMigrate 的前置准备(读取模型最大上下文 token)
|
|
84
|
-
const config = await readConfig();
|
|
85
|
-
const modelConfig = config.models.find((m) => m.id === modelId);
|
|
86
|
-
const maxTokens = modelConfig?.maxContextTokens ?? (modelConfig?.maxContextChars ? Math.floor(modelConfig.maxContextChars / 4) : undefined);
|
|
87
|
-
// 迁移服务实例:自动迁移(AutoMigratePlugin)与手动迁移(/migrate 命令)共用同一实例。
|
|
88
|
-
// 迁移前后处理(保存旧对话 / 开启新会话 / 落盘草稿)统一收敛到 src/migration-service.ts。
|
|
89
|
-
const migrationService = createMigrationService(ctx);
|
|
90
|
-
ctx.migrationService = migrationService;
|
|
91
|
-
if (maxTokens && maxTokens > 0) {
|
|
92
|
-
// contextGuard — 请求前检测用量,严重超限(> maxTokens×1.5)时抛 ContextOverflowError 中断对话。
|
|
93
|
-
// 作为安全护栏置于迁移插件之前:防止读入超大文件等突发超限在迁移生效前撑爆上下文。
|
|
94
|
-
agent.use(new ContextGuardPlugin({ maxTokens }));
|
|
95
|
-
// autoMigrate — 检测 token 超限时自动迁移。仅负责触发(何时迁移),实际迁移委托给共享的 migrationService。
|
|
96
|
-
// 触发后先做一次「二次确认」(AutoMigrateConfirmPlugin,CLI 层):非交互环境无确认通道,
|
|
97
|
-
// 保持既有静默自动迁移行为;用户拒绝则跳过本次迁移、不改变当前对话。
|
|
98
|
-
agent.use(new AutoMigrateConfirmPlugin({ service: migrationService, maxTokens }));
|
|
99
|
-
// subAgentGuard — 子 Agent 上下文护栏:委派前给子 Agent 安插主 Agent 同款的
|
|
100
|
-
// ContextGuardPlugin(同一 maxTokens)。子 Agent 由 SDK 新建实例、不继承宿主插件
|
|
101
|
-
// (且走 run() 而非 send()),故必须经 onSubAgentStart 显式安插。
|
|
102
|
-
agent.use(new SubAgentGuardInstallerPlugin({ maxTokens }));
|
|
103
|
-
}
|
|
104
|
-
// 初始化所有插件
|
|
105
|
-
await agent.init();
|
|
106
|
-
const cmdList = getCommandNames().map((c) => `/${c}`).join(", ");
|
|
107
|
-
console.log(chalk.blue.bold(`💬 对话已开始 (输入 ${cmdList} 查看和操作)\n`));
|
|
108
|
-
// ============ 流式渲染器 ============
|
|
109
|
-
const renderer = new DeltaRenderer({
|
|
110
|
-
reasoningHeader: "\n\n💭 思考中...\n",
|
|
111
|
-
contentHeader: "\n\n💭 回答中...\n",
|
|
112
|
-
reasoningStyle: chalk.blue,
|
|
113
|
-
});
|
|
114
|
-
const onRun = () => { renderer.reset(); };
|
|
115
|
-
const onChunk = (chunk) => {
|
|
116
|
-
if (!chunk?.choices?.[0]?.delta)
|
|
117
|
-
return;
|
|
118
|
-
const delta = chunk.choices[0].delta;
|
|
119
|
-
const fr = chunk.choices[0].finish_reason ?? null;
|
|
120
|
-
renderer.render(delta, fr);
|
|
121
|
-
};
|
|
122
|
-
const onError = (error) => {
|
|
123
|
-
process.stdout.write(chalk.red(`\n❌ 错误: ${error?.message || error}\n`));
|
|
124
|
-
};
|
|
125
|
-
// ============ 子 Agent 渲染 ============
|
|
126
|
-
const onSubAgent = ({ subAgent, toolCallContext }) => {
|
|
127
|
-
const toolName = toolCallContext?.tool_call?.function?.name || "子任务";
|
|
128
|
-
process.stdout.write(chalk.yellow.bold(`\n 🧩 ${toolName}:\n`));
|
|
129
|
-
subAgent.events.on("open", onRun);
|
|
130
|
-
subAgent.events.on("chunk", onChunk);
|
|
131
|
-
subAgent.events.on("error", onError);
|
|
132
|
-
};
|
|
133
|
-
const onSubAgentEnd = ({ toolCallContext }) => {
|
|
134
|
-
const toolName = toolCallContext?.tool_call?.function?.name || "子任务";
|
|
135
|
-
process.stdout.write(chalk.gray(`\n ✅ ${toolName} 完成\n`));
|
|
136
|
-
};
|
|
137
|
-
// ============ 注册事件 ============
|
|
138
|
-
ctx.agent.events.on("open", onRun);
|
|
139
|
-
ctx.agent.events.on("chunk", onChunk);
|
|
140
|
-
ctx.agent.events.on("error", onError);
|
|
141
|
-
ctx.agent.events.on("sub-agent-start", onSubAgent);
|
|
142
|
-
ctx.agent.events.on("sub-agent-end", onSubAgentEnd);
|
|
143
|
-
// ============ 初始消息 ============
|
|
144
|
-
if (query) {
|
|
145
|
-
ctx.input = query;
|
|
146
|
-
console.log(chalk.cyan("💬 你: ") + query + "\n");
|
|
147
|
-
await sendAndStream(ctx);
|
|
148
|
-
}
|
|
149
|
-
// ============ 主循环 ============
|
|
150
|
-
while (ctx.running) {
|
|
151
|
-
// 命令提示(输入 / 时列出候选命令)由输入提示自行渲染,此处只取输入内容
|
|
152
|
-
ctx.input = await askInput();
|
|
153
|
-
if (!ctx.input)
|
|
154
|
-
continue;
|
|
155
|
-
const handled = await dispatchCommand(ctx);
|
|
156
|
-
if (handled) {
|
|
157
|
-
if (ctx.shouldSend) {
|
|
158
|
-
ctx.shouldSend = false;
|
|
159
|
-
console.log(chalk.cyan("💬 你: ") + ctx.input + "\n");
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
continue;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
if (!ctx.input)
|
|
166
|
-
continue;
|
|
167
|
-
await sendAndStream(ctx);
|
|
168
|
-
}
|
|
169
|
-
ctx.agent.events.off("open", onRun);
|
|
170
|
-
ctx.agent.events.off("chunk", onChunk);
|
|
171
|
-
ctx.agent.events.off("error", onError);
|
|
172
|
-
ctx.agent.events.off("sub-agent-start", onSubAgent);
|
|
173
|
-
ctx.agent.events.off("sub-agent-end", onSubAgentEnd);
|
|
174
|
-
console.log(chalk.blue.bold("\n👋 再见!\n"));
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=conversation-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-runner.js","sourceRoot":"","sources":["../src/conversation-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/delta-renderer.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { AgentNS } from "@ai-zen/agents-core";
|
|
2
|
-
export interface DeltaRendererOptions {
|
|
3
|
-
/** 首次 reasoning 时打印的头部 */
|
|
4
|
-
reasoningHeader?: string;
|
|
5
|
-
/** 首次 content 时打印的头部 */
|
|
6
|
-
contentHeader?: string;
|
|
7
|
-
/** reasoning 文本的样式 */
|
|
8
|
-
reasoningStyle?: any;
|
|
9
|
-
/** content 文本的样式 */
|
|
10
|
-
contentStyle?: any;
|
|
11
|
-
/** 每行前的缩进 */
|
|
12
|
-
indent?: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* 流式 Delta 渲染器,管理 reasoning/content/tool_calls 的状态和输出
|
|
16
|
-
*/
|
|
17
|
-
export declare class DeltaRenderer {
|
|
18
|
-
private reasoningPrinted;
|
|
19
|
-
private contentPrinted;
|
|
20
|
-
private toolPrints;
|
|
21
|
-
private opts;
|
|
22
|
-
constructor(opts?: DeltaRendererOptions);
|
|
23
|
-
/**
|
|
24
|
-
* 渲染一个 delta,同时处理 content、reasoning_content 和 tool_calls
|
|
25
|
-
* @param delta - 流式 delta
|
|
26
|
-
* @param finishReason - 当前 choice 的 finish_reason(用于 tool_calls 完成标记)
|
|
27
|
-
*/
|
|
28
|
-
render(delta: AgentNS.Delta, finishReason?: AgentNS.FinishReason | null): void;
|
|
29
|
-
/** 重置状态(新一轮对话时调用) */
|
|
30
|
-
reset(): void;
|
|
31
|
-
private renderToolCalls;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=delta-renderer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import { AgentNS } from "@ai-zen/agents-core";
|
|
3
|
-
/** 无颜色样式:普通文本保持终端默认前景色,避免在浅色背景下看不清 */
|
|
4
|
-
const noStyle = (s) => s;
|
|
5
|
-
// ==================== 流式渲染器 ====================
|
|
6
|
-
/**
|
|
7
|
-
* 流式 Delta 渲染器,管理 reasoning/content/tool_calls 的状态和输出
|
|
8
|
-
*/
|
|
9
|
-
export class DeltaRenderer {
|
|
10
|
-
reasoningPrinted = false;
|
|
11
|
-
contentPrinted = false;
|
|
12
|
-
toolPrints = {};
|
|
13
|
-
opts;
|
|
14
|
-
constructor(opts = {}) {
|
|
15
|
-
this.opts = {
|
|
16
|
-
reasoningHeader: opts.reasoningHeader ?? "",
|
|
17
|
-
contentHeader: opts.contentHeader ?? "",
|
|
18
|
-
reasoningStyle: opts.reasoningStyle ?? chalk.blue,
|
|
19
|
-
contentStyle: opts.contentStyle ?? noStyle,
|
|
20
|
-
indent: opts.indent ?? "",
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* 渲染一个 delta,同时处理 content、reasoning_content 和 tool_calls
|
|
25
|
-
* @param delta - 流式 delta
|
|
26
|
-
* @param finishReason - 当前 choice 的 finish_reason(用于 tool_calls 完成标记)
|
|
27
|
-
*/
|
|
28
|
-
render(delta, finishReason = null) {
|
|
29
|
-
// 1. 渲染工具调用
|
|
30
|
-
if (delta.tool_calls) {
|
|
31
|
-
this.renderToolCalls(delta, finishReason);
|
|
32
|
-
}
|
|
33
|
-
// 2. 渲染 reasoning
|
|
34
|
-
if (delta.reasoning_content) {
|
|
35
|
-
if (!this.reasoningPrinted && this.opts.reasoningHeader) {
|
|
36
|
-
process.stdout.write(this.opts.indent + this.opts.reasoningHeader);
|
|
37
|
-
this.reasoningPrinted = true;
|
|
38
|
-
}
|
|
39
|
-
process.stdout.write(this.opts.reasoningStyle(delta.reasoning_content));
|
|
40
|
-
}
|
|
41
|
-
// 3. 渲染 content
|
|
42
|
-
if (delta.content) {
|
|
43
|
-
if (!this.contentPrinted && this.opts.contentHeader) {
|
|
44
|
-
process.stdout.write(this.opts.indent + this.opts.contentHeader);
|
|
45
|
-
this.contentPrinted = true;
|
|
46
|
-
}
|
|
47
|
-
if (typeof delta.content === "string") {
|
|
48
|
-
process.stdout.write(this.opts.contentStyle(delta.content));
|
|
49
|
-
}
|
|
50
|
-
else if (Array.isArray(delta.content)) {
|
|
51
|
-
for (const s of delta.content) {
|
|
52
|
-
if (s.type === "text" && s.text) {
|
|
53
|
-
process.stdout.write(this.opts.contentStyle(s.text));
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/** 重置状态(新一轮对话时调用) */
|
|
60
|
-
reset() {
|
|
61
|
-
this.reasoningPrinted = false;
|
|
62
|
-
this.contentPrinted = false;
|
|
63
|
-
for (const k in this.toolPrints)
|
|
64
|
-
delete this.toolPrints[k];
|
|
65
|
-
}
|
|
66
|
-
// ==================== 工具调用渲染 ====================
|
|
67
|
-
renderToolCalls(delta, finishReason) {
|
|
68
|
-
if (!delta.tool_calls || delta.tool_calls.length === 0)
|
|
69
|
-
return;
|
|
70
|
-
const isFirstToolCall = Object.keys(this.toolPrints).length === 0 &&
|
|
71
|
-
delta.tool_calls.some((tc) => tc.function?.name || tc.function?.arguments);
|
|
72
|
-
if (isFirstToolCall)
|
|
73
|
-
process.stdout.write(chalk.blue.bold("\n\n💭 工具调用中..."));
|
|
74
|
-
for (const tc of delta.tool_calls) {
|
|
75
|
-
const index = tc.index ?? 0;
|
|
76
|
-
const func = tc.function;
|
|
77
|
-
if (!this.toolPrints[index]) {
|
|
78
|
-
this.toolPrints[index] = {
|
|
79
|
-
name: "",
|
|
80
|
-
arguments: "",
|
|
81
|
-
namePrinted: false,
|
|
82
|
-
argsPrinted: false,
|
|
83
|
-
completed: false,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
const p = this.toolPrints[index];
|
|
87
|
-
if (func?.name)
|
|
88
|
-
p.name += func.name;
|
|
89
|
-
if (func?.arguments)
|
|
90
|
-
p.arguments += func.arguments;
|
|
91
|
-
if (p.name && !p.namePrinted) {
|
|
92
|
-
process.stdout.write(chalk.magenta.bold(`\n🔧 ${index} ${p.name}\n`));
|
|
93
|
-
p.namePrinted = true;
|
|
94
|
-
}
|
|
95
|
-
if (p.arguments && !p.argsPrinted && p.namePrinted)
|
|
96
|
-
p.argsPrinted = true;
|
|
97
|
-
if (func?.arguments && p.argsPrinted)
|
|
98
|
-
process.stdout.write(chalk.gray(func.arguments));
|
|
99
|
-
if (finishReason === AgentNS.FinishReason.ToolCalls)
|
|
100
|
-
p.completed = true;
|
|
101
|
-
}
|
|
102
|
-
if (finishReason === AgentNS.FinishReason.ToolCalls) {
|
|
103
|
-
for (const idx of Object.keys(this.toolPrints).map(Number)) {
|
|
104
|
-
const p = this.toolPrints[idx];
|
|
105
|
-
if (p.completed && p.arguments) {
|
|
106
|
-
process.stdout.write("\n");
|
|
107
|
-
try {
|
|
108
|
-
const parsed = JSON.parse(p.arguments);
|
|
109
|
-
process.stdout.write(chalk.gray(` ${JSON.stringify(parsed, null, 4)}\n`));
|
|
110
|
-
}
|
|
111
|
-
catch {
|
|
112
|
-
process.stdout.write(chalk.gray(` ${p.arguments}\n`));
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
process.stdout.write("\n");
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=delta-renderer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delta-renderer.js","sourceRoot":"","sources":["../src/delta-renderer.ts"],"names":[],"mappings":"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"}
|
package/dist/draft-plugin.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DraftPlugin — CLI 草稿自动保存插件。
|
|
3
|
-
*
|
|
4
|
-
* 草稿是 CLI 的产品特性(交互式对话暂存),不依赖 SDK。
|
|
5
|
-
* 每次内循环结束后把当前消息列表写入草稿,供下次启动恢复。
|
|
6
|
-
*/
|
|
7
|
-
import type { AgentPlugin, SendContext } from "@ai-zen/agents-sdk";
|
|
8
|
-
export interface DraftPluginOptions {
|
|
9
|
-
agentId: string;
|
|
10
|
-
modelId: string;
|
|
11
|
-
conversationId?: string;
|
|
12
|
-
cwd?: string;
|
|
13
|
-
}
|
|
14
|
-
export declare class DraftPlugin implements AgentPlugin {
|
|
15
|
-
private options;
|
|
16
|
-
constructor(options: DraftPluginOptions);
|
|
17
|
-
onInnerLoopEnd(ctx: SendContext): Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=draft-plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft-plugin.d.ts","sourceRoot":"","sources":["../src/draft-plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGnE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,WAAY,YAAW,WAAW;IACjC,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,kBAAkB;IAEzC,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBtD"}
|
package/dist/draft-plugin.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DraftPlugin — CLI 草稿自动保存插件。
|
|
3
|
-
*
|
|
4
|
-
* 草稿是 CLI 的产品特性(交互式对话暂存),不依赖 SDK。
|
|
5
|
-
* 每次内循环结束后把当前消息列表写入草稿,供下次启动恢复。
|
|
6
|
-
*/
|
|
7
|
-
import { draftRepository } from "./draft-repository.js";
|
|
8
|
-
export class DraftPlugin {
|
|
9
|
-
options;
|
|
10
|
-
constructor(options) {
|
|
11
|
-
this.options = options;
|
|
12
|
-
}
|
|
13
|
-
async onInnerLoopEnd(ctx) {
|
|
14
|
-
const { agentId, modelId, conversationId, cwd } = this.options;
|
|
15
|
-
try {
|
|
16
|
-
await draftRepository.write({
|
|
17
|
-
conversationId,
|
|
18
|
-
agentId,
|
|
19
|
-
modelId,
|
|
20
|
-
messages: ctx.agent.messages,
|
|
21
|
-
cwd,
|
|
22
|
-
updatedAt: new Date().toISOString(),
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
console.warn(`[draft] 保存失败: ${err?.message ?? err}`);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=draft-plugin.js.map
|
package/dist/draft-plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft-plugin.js","sourceRoot":"","sources":["../src/draft-plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AASxD,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;IAAG,CAAC;IAEnD,KAAK,CAAC,cAAc,CAAC,GAAgB;QACnC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAE/D,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,KAAK,CAAC;gBAC1B,cAAc;gBACd,OAAO;gBACP,OAAO;gBACP,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;gBAC5B,GAAG;gBACH,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,iBAAiB,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI 草稿存储 — Draft 类型与草稿仓储。
|
|
3
|
-
*
|
|
4
|
-
* 草稿是 CLI 的产品特性(交互式对话暂存),Draft 无 id 字段,单独实现。
|
|
5
|
-
* 文件名基于 conversationId:
|
|
6
|
-
* - 有 conversationId → ${conversationId}.json
|
|
7
|
-
* - 无 conversationId → _current.json
|
|
8
|
-
*/
|
|
9
|
-
import type { AgentNS } from "@ai-zen/agents-core";
|
|
10
|
-
export interface Draft {
|
|
11
|
-
conversationId?: string;
|
|
12
|
-
agentId: string;
|
|
13
|
-
modelId: string;
|
|
14
|
-
messages: AgentNS.Message[];
|
|
15
|
-
cwd?: string;
|
|
16
|
-
updatedAt: string;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* 草稿仓储。
|
|
20
|
-
* 文件名基于 conversationId:
|
|
21
|
-
* - 有 conversationId → ${conversationId}.json
|
|
22
|
-
* - 无 conversationId → _current.json
|
|
23
|
-
*/
|
|
24
|
-
export declare class DraftRepository {
|
|
25
|
-
private dir;
|
|
26
|
-
constructor(dir: string);
|
|
27
|
-
private path;
|
|
28
|
-
read(conversationId?: string): Promise<Draft | null>;
|
|
29
|
-
write(draft: Draft): Promise<void>;
|
|
30
|
-
delete(conversationId?: string): Promise<void>;
|
|
31
|
-
}
|
|
32
|
-
/** CLI 草稿存储单例 */
|
|
33
|
-
export declare const draftRepository: DraftRepository;
|
|
34
|
-
//# sourceMappingURL=draft-repository.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft-repository.d.ts","sourceRoot":"","sources":["../src/draft-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,WAAW,KAAK;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAID;;;;;GAKG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,MAAM;IAE/B,OAAO,CAAC,IAAI;IAIN,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAcpD,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAalC,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CASrD;AAED,iBAAiB;AACjB,eAAO,MAAM,eAAe,iBAAkC,CAAC"}
|
package/dist/draft-repository.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI 草稿存储 — Draft 类型与草稿仓储。
|
|
3
|
-
*
|
|
4
|
-
* 草稿是 CLI 的产品特性(交互式对话暂存),Draft 无 id 字段,单独实现。
|
|
5
|
-
* 文件名基于 conversationId:
|
|
6
|
-
* - 有 conversationId → ${conversationId}.json
|
|
7
|
-
* - 无 conversationId → _current.json
|
|
8
|
-
*/
|
|
9
|
-
import { promises as fs } from "node:fs";
|
|
10
|
-
import { join } from "node:path";
|
|
11
|
-
import { DRAFTS_DIR } from "./config.js";
|
|
12
|
-
const CURRENT_DRAFT = "_current.json";
|
|
13
|
-
/**
|
|
14
|
-
* 草稿仓储。
|
|
15
|
-
* 文件名基于 conversationId:
|
|
16
|
-
* - 有 conversationId → ${conversationId}.json
|
|
17
|
-
* - 无 conversationId → _current.json
|
|
18
|
-
*/
|
|
19
|
-
export class DraftRepository {
|
|
20
|
-
dir;
|
|
21
|
-
constructor(dir) {
|
|
22
|
-
this.dir = dir;
|
|
23
|
-
}
|
|
24
|
-
path(conversationId) {
|
|
25
|
-
return join(this.dir, conversationId ? `${conversationId}.json` : CURRENT_DRAFT);
|
|
26
|
-
}
|
|
27
|
-
async read(conversationId) {
|
|
28
|
-
const p = this.path(conversationId);
|
|
29
|
-
try {
|
|
30
|
-
await fs.access(p);
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
try {
|
|
36
|
-
return JSON.parse(await fs.readFile(p, "utf-8"));
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
async write(draft) {
|
|
43
|
-
try {
|
|
44
|
-
await fs.access(this.dir);
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
await fs.mkdir(this.dir, { recursive: true });
|
|
48
|
-
}
|
|
49
|
-
await fs.writeFile(this.path(draft.conversationId), JSON.stringify(draft, null, 2), "utf-8");
|
|
50
|
-
}
|
|
51
|
-
async delete(conversationId) {
|
|
52
|
-
const p = this.path(conversationId);
|
|
53
|
-
try {
|
|
54
|
-
await fs.access(p);
|
|
55
|
-
await fs.unlink(p);
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
// 文件不存在,忽略
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
/** CLI 草稿存储单例 */
|
|
63
|
-
export const draftRepository = new DraftRepository(DRAFTS_DIR);
|
|
64
|
-
//# sourceMappingURL=draft-repository.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft-repository.js","sourceRoot":"","sources":["../src/draft-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAWzC,MAAM,aAAa,GAAG,eAAe,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAE3B,IAAI,CAAC,cAAuB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,cAAuB;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAU,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAY;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAC9B,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,cAAuB;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,WAAW;QACb,CAAC;IACH,CAAC;CACF;AAED,iBAAiB;AACjB,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC"}
|