@ai-zen/cli 1.0.0-alpha.27 → 1.0.0-alpha.30
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 +158 -0
- package/README.md +9 -6
- package/README.zh.md +9 -6
- package/dist/clipboard.d.ts +68 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/clipboard.js +177 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/config-editor.d.ts +17 -0
- package/dist/config-editor.d.ts.map +1 -1
- package/dist/config-editor.js +31 -0
- package/dist/config-editor.js.map +1 -1
- package/dist/config.d.ts +53 -15
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +90 -26
- package/dist/config.js.map +1 -1
- package/dist/conversation-commands/registry.d.ts.map +1 -1
- package/dist/conversation-persist-plugin.d.ts.map +1 -1
- package/dist/conversation-persist-plugin.js.map +1 -1
- package/dist/conversation-repository.d.ts +23 -20
- package/dist/conversation-repository.d.ts.map +1 -1
- package/dist/conversation-repository.js +46 -37
- package/dist/conversation-repository.js.map +1 -1
- package/dist/cwd-tracker-plugin.d.ts.map +1 -1
- package/dist/cwd-tracker-plugin.js +17 -6
- package/dist/cwd-tracker-plugin.js.map +1 -1
- package/dist/handoff-service.js.map +1 -1
- package/dist/i18n/en-wizard.d.ts.map +1 -1
- package/dist/i18n/en-wizard.js +9 -6
- package/dist/i18n/en-wizard.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +13 -2
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/preferences.d.ts +7 -4
- package/dist/i18n/preferences.d.ts.map +1 -1
- package/dist/i18n/preferences.js +15 -11
- package/dist/i18n/preferences.js.map +1 -1
- package/dist/i18n/zh-wizard.d.ts.map +1 -1
- package/dist/i18n/zh-wizard.js +9 -6
- package/dist/i18n/zh-wizard.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +13 -2
- package/dist/i18n/zh.js.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/sdk-log.d.ts +15 -3
- package/dist/sdk-log.d.ts.map +1 -1
- package/dist/sdk-log.js +29 -9
- package/dist/sdk-log.js.map +1 -1
- package/dist/session-pointer.d.ts.map +1 -1
- package/dist/session-pointer.js +10 -4
- package/dist/session-pointer.js.map +1 -1
- package/dist/sub-agent-guard-plugin.d.ts.map +1 -1
- package/dist/tui/chat-history.d.ts +29 -0
- package/dist/tui/chat-history.d.ts.map +1 -0
- package/dist/tui/chat-history.js +55 -0
- package/dist/tui/chat-history.js.map +1 -0
- package/dist/tui/chat-session.d.ts +31 -2
- package/dist/tui/chat-session.d.ts.map +1 -1
- package/dist/tui/chat-session.js +64 -9
- package/dist/tui/chat-session.js.map +1 -1
- package/dist/tui/components.d.ts +65 -5
- package/dist/tui/components.d.ts.map +1 -1
- package/dist/tui/components.js +85 -13
- package/dist/tui/components.js.map +1 -1
- package/dist/tui/config-wizard/detail.d.ts +6 -4
- package/dist/tui/config-wizard/detail.d.ts.map +1 -1
- package/dist/tui/config-wizard/detail.js +20 -14
- package/dist/tui/config-wizard/detail.js.map +1 -1
- package/dist/tui/config-wizard/engine.d.ts +1 -1
- package/dist/tui/config-wizard/engine.d.ts.map +1 -1
- package/dist/tui/config-wizard/engine.js +18 -6
- package/dist/tui/config-wizard/engine.js.map +1 -1
- package/dist/tui/config-wizard/fields.d.ts.map +1 -1
- package/dist/tui/config-wizard/fields.js +1 -30
- package/dist/tui/config-wizard/fields.js.map +1 -1
- package/dist/tui/config-wizard/frame.js +1 -1
- package/dist/tui/config-wizard/kv-editor.d.ts.map +1 -1
- package/dist/tui/config-wizard/kv-editor.js +4 -0
- package/dist/tui/config-wizard/kv-editor.js.map +1 -1
- package/dist/tui/config-wizard/list.d.ts +3 -1
- package/dist/tui/config-wizard/list.d.ts.map +1 -1
- package/dist/tui/config-wizard/list.js +3 -4
- package/dist/tui/config-wizard/list.js.map +1 -1
- package/dist/tui/config-wizard/prompt-editor.d.ts +8 -1
- package/dist/tui/config-wizard/prompt-editor.d.ts.map +1 -1
- package/dist/tui/config-wizard/prompt-editor.js +7 -4
- package/dist/tui/config-wizard/prompt-editor.js.map +1 -1
- package/dist/tui/config-wizard/step-agents.d.ts.map +1 -1
- package/dist/tui/config-wizard/step-agents.js +25 -13
- package/dist/tui/config-wizard/step-agents.js.map +1 -1
- package/dist/tui/config-wizard/step-endpoints.d.ts.map +1 -1
- package/dist/tui/config-wizard/step-endpoints.js +18 -15
- package/dist/tui/config-wizard/step-endpoints.js.map +1 -1
- package/dist/tui/config-wizard/step-mcp.d.ts.map +1 -1
- package/dist/tui/config-wizard/step-mcp.js +15 -9
- package/dist/tui/config-wizard/step-mcp.js.map +1 -1
- package/dist/tui/config-wizard/step-models.d.ts.map +1 -1
- package/dist/tui/config-wizard/step-models.js +67 -27
- package/dist/tui/config-wizard/step-models.js.map +1 -1
- package/dist/tui/config-wizard/types.d.ts +12 -0
- package/dist/tui/config-wizard/types.d.ts.map +1 -1
- package/dist/tui/file-index.d.ts +38 -0
- package/dist/tui/file-index.d.ts.map +1 -0
- package/dist/tui/file-index.js +117 -0
- package/dist/tui/file-index.js.map +1 -0
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +1 -1
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/key-debug.js.map +1 -1
- package/dist/tui/mention.d.ts +47 -0
- package/dist/tui/mention.d.ts.map +1 -0
- package/dist/tui/mention.js +152 -0
- package/dist/tui/mention.js.map +1 -0
- package/dist/tui/mouse.js.map +1 -1
- package/dist/tui/phase.d.ts.map +1 -1
- package/dist/tui/screens/chat-commands.d.ts +8 -0
- package/dist/tui/screens/chat-commands.d.ts.map +1 -1
- package/dist/tui/screens/chat-commands.js +60 -34
- package/dist/tui/screens/chat-commands.js.map +1 -1
- package/dist/tui/screens/chat.d.ts +37 -0
- package/dist/tui/screens/chat.d.ts.map +1 -1
- package/dist/tui/screens/chat.js +238 -31
- package/dist/tui/screens/chat.js.map +1 -1
- package/dist/tui/screens/common-keys.js.map +1 -1
- package/dist/tui/screens/frame-buffer.d.ts.map +1 -1
- package/dist/tui/screens/frame-buffer.js.map +1 -1
- package/dist/tui/screens/index.d.ts +1 -1
- package/dist/tui/screens/index.d.ts.map +1 -1
- package/dist/tui/screens/index.js +1 -1
- package/dist/tui/screens/index.js.map +1 -1
- package/dist/tui/screens/input.d.ts +30 -1
- package/dist/tui/screens/input.d.ts.map +1 -1
- package/dist/tui/screens/input.js +39 -2
- package/dist/tui/screens/input.js.map +1 -1
- package/dist/tui/screens/layout.d.ts +14 -0
- package/dist/tui/screens/layout.d.ts.map +1 -1
- package/dist/tui/screens/layout.js +22 -11
- package/dist/tui/screens/layout.js.map +1 -1
- package/dist/tui/screens/messages-view.d.ts.map +1 -1
- package/dist/tui/screens/messages-view.js +6 -2
- package/dist/tui/screens/messages-view.js.map +1 -1
- package/dist/tui/screens/notice.d.ts.map +1 -1
- package/dist/tui/screens/notice.js.map +1 -1
- package/dist/tui/screens/overlays.js +1 -1
- package/dist/tui/screens/render.d.ts +1 -1
- package/dist/tui/screens/render.d.ts.map +1 -1
- package/dist/tui/screens/render.js +6 -2
- package/dist/tui/screens/render.js.map +1 -1
- package/dist/tui/screens/use-input-editing.d.ts +29 -4
- package/dist/tui/screens/use-input-editing.d.ts.map +1 -1
- package/dist/tui/screens/use-input-editing.js +42 -14
- package/dist/tui/screens/use-input-editing.js.map +1 -1
- package/dist/tui/screens/use-wizard-host.d.ts +12 -1
- package/dist/tui/screens/use-wizard-host.d.ts.map +1 -1
- package/dist/tui/screens/use-wizard-host.js +26 -7
- package/dist/tui/screens/use-wizard-host.js.map +1 -1
- package/dist/tui/status-segments.js.map +1 -1
- package/dist/tui/text.d.ts +7 -0
- package/dist/tui/text.d.ts.map +1 -1
- package/dist/tui/text.js +5 -1
- package/dist/tui/text.js.map +1 -1
- package/dist/tui/theme.d.ts.map +1 -1
- package/dist/tui/token-rate.d.ts.map +1 -1
- package/dist/tui/token-rate.js.map +1 -1
- package/dist/user-content.d.ts +41 -0
- package/dist/user-content.d.ts.map +1 -0
- package/dist/user-content.js +37 -0
- package/dist/user-content.js.map +1 -0
- package/dist/version.js.map +1 -1
- package/package.json +3 -3
package/dist/i18n/zh-wizard.js
CHANGED
|
@@ -21,7 +21,6 @@ export const zh = {
|
|
|
21
21
|
"field.handoffThreshold": "交接阈值",
|
|
22
22
|
"field.guardThreshold": "阻断阈值",
|
|
23
23
|
"field.vision": "视觉",
|
|
24
|
-
"field.custom": "自定义",
|
|
25
24
|
"field.size": "尺寸",
|
|
26
25
|
"field.quality": "质量",
|
|
27
26
|
// ---------- 通用小词 ----------
|
|
@@ -35,7 +34,6 @@ export const zh = {
|
|
|
35
34
|
"common.sameAsId": "(同 id)",
|
|
36
35
|
"common.notAdjustable": "(不调档)",
|
|
37
36
|
"common.customOnlyNote": "(已标记为自定义,改动才会保留)",
|
|
38
|
-
"common.factoryManaged": "否(出厂托管)",
|
|
39
37
|
// ---------- 校验消息 ----------
|
|
40
38
|
"err.nameRequired": "名称不能为空",
|
|
41
39
|
"err.baseUrlScheme": "Base URL 需以 http:// 或 https:// 开头",
|
|
@@ -51,6 +49,7 @@ export const zh = {
|
|
|
51
49
|
"err.functionNameRequired": "函数名不能为空",
|
|
52
50
|
"err.mcpNameTaken": "已存在名为 {name} 的服务器",
|
|
53
51
|
"err.agentIdTaken": "已存在标识 {name} 的定义",
|
|
52
|
+
"err.noEndpoint": "没有可用的端点,请先在「端点管理」里添加一个",
|
|
54
53
|
// ---------- 更多字段名(MCP / Agent 详情) ----------
|
|
55
54
|
"field.transport": "传输",
|
|
56
55
|
"field.command": "命令",
|
|
@@ -70,13 +69,10 @@ export const zh = {
|
|
|
70
69
|
"common.transportStdio": "stdio(本地子进程)",
|
|
71
70
|
"common.transportMode": "传输方式",
|
|
72
71
|
"common.enabledState": "启用状态",
|
|
73
|
-
"common.customQuoted": "「自定义」",
|
|
74
72
|
// ---------- 落盘反馈(带实体名的整句,必须参数化而非拼接) ----------
|
|
75
73
|
"wiz.endpointUpdated": "端点 {name} 的 {label} 已更新",
|
|
76
74
|
"wiz.modelUpdated": "模型 {name} 的 {label} 已更新{suffix}",
|
|
77
75
|
"wiz.imageModelUpdated": "图片模型 {name} 的 {label} 已更新{suffix}",
|
|
78
|
-
"wiz.modelCustomSet": "模型 {name} 的「自定义」已设为 {value}",
|
|
79
|
-
"wiz.imageModelCustomSet": "图片模型 {name} 的「自定义」已设为 {value}",
|
|
80
76
|
"wiz.mcpFieldUpdated": "MCP {id} 的{label}已更新({scope})",
|
|
81
77
|
"wiz.mcpRenamed": "MCP {id} 已重命名为 {name}({scope})",
|
|
82
78
|
"wiz.agentFieldUpdated": "{kind} {id} 的 {label} 已更新{suffix}",
|
|
@@ -156,17 +152,21 @@ export const zh = {
|
|
|
156
152
|
"wiz.models.detailTitle": "◆ 模型 · {name}",
|
|
157
153
|
"wiz.models.detailLine": "{id} · {kind}",
|
|
158
154
|
"wiz.models.delete": "删除模型",
|
|
155
|
+
"wiz.models.restore": "恢复出厂设置",
|
|
156
|
+
"wiz.models.restored": "已把模型 {name} 恢复为出厂定义",
|
|
159
157
|
"wiz.models.deleted": "已删除模型 {name}",
|
|
160
158
|
"wiz.models.createTitle": "新建模型 · 名称",
|
|
161
159
|
"wiz.models.createDesc": "用于在配置与状态栏中标识该模型,例如 {example}",
|
|
162
160
|
"wiz.models.created": "已新建模型 {name}({id},已标记为自定义)",
|
|
163
|
-
"wiz.models.noEndpoint": "⚠
|
|
161
|
+
"wiz.models.noEndpoint": "⚠ 尚未配置端点,无法创建;请先到「端点管理」添加端点",
|
|
164
162
|
"wiz.models.defaultEndpoint": "将默认绑定端点:{endpoint}",
|
|
165
163
|
"wiz.createAndEdit": "创建并编辑",
|
|
166
164
|
"wiz.imageModels.newItem": "+ 新建图片模型",
|
|
167
165
|
"wiz.imageModels.subtitle": "共 {n} 个 · 选中后可就地编辑 / 删除",
|
|
168
166
|
"wiz.imageModels.detailTitle": "◆ 图片模型 · {name}",
|
|
169
167
|
"wiz.imageModels.delete": "删除图片模型",
|
|
168
|
+
"wiz.imageModels.restore": "恢复出厂设置",
|
|
169
|
+
"wiz.imageModels.restored": "已把图片模型 {name} 恢复为出厂定义",
|
|
170
170
|
"wiz.imageModels.deleted": "已删除图片模型 {name}",
|
|
171
171
|
"wiz.imageModels.createTitle": "新建图片模型 · 名称",
|
|
172
172
|
"wiz.imageModels.created": "已新建图片模型 {name}({id},已标记为自定义)",
|
|
@@ -183,6 +183,8 @@ export const zh = {
|
|
|
183
183
|
"wiz.agent.detailLine": "{id} · {kind}{subSuffix}",
|
|
184
184
|
"wiz.agent.moveHint": "↑ ↓ 移动 · Enter 编辑/切换/进入 · 改动即时写入磁盘",
|
|
185
185
|
"wiz.agent.deleteAction": "删除{kind}",
|
|
186
|
+
"wiz.agent.restore": "恢复出厂设置",
|
|
187
|
+
"wiz.agentRestored": "已把 {kind} {id} 的提示词恢复为出厂定义",
|
|
186
188
|
"wiz.agent.subscreenTitle": "◆ {kind} · {id} · {label}",
|
|
187
189
|
"wiz.agent.permHint": "格式:`allow: a, b` 或 `deny: x`(逗号分隔;留空清除该维)",
|
|
188
190
|
"wiz.agent.permMoveHint": "↑ ↓ 移动 · Enter 编辑 · Esc 返回",
|
|
@@ -217,6 +219,7 @@ export const zh = {
|
|
|
217
219
|
"wiz.mcp.serverCount": "{n} 个服务器",
|
|
218
220
|
"wiz.mcp.newItem": "+ 新建服务器",
|
|
219
221
|
"wiz.mcp.listTitle": "◆ MCP 服务器 · {scope}",
|
|
222
|
+
"wiz.mcp.damaged": "mcp.json 无法解析({error}),本屏按空配置呈现",
|
|
220
223
|
"wiz.mcp.listSubtitle": "{n} 个 · {path}",
|
|
221
224
|
"wiz.mcp.detailTitle": "◆ MCP · {id}",
|
|
222
225
|
"wiz.scopePath": "{scope} · {path}",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-wizard.js","sourceRoot":"","sources":["../../src/i18n/zh-wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,EAAE,GAA2B;IACxC,4CAA4C;IAC5C,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,IAAI;IACnB,WAAW,EAAE,KAAK;IAClB,gBAAgB,EAAE,SAAS;IAC3B,mBAAmB,EAAE,IAAI;IACzB,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,KAAK;IACxB,uBAAuB,EAAE,MAAM;IAC/B,wBAAwB,EAAE,MAAM;IAChC,sBAAsB,EAAE,MAAM;IAC9B,cAAc,EAAE,IAAI;IACpB,
|
|
1
|
+
{"version":3,"file":"zh-wizard.js","sourceRoot":"","sources":["../../src/i18n/zh-wizard.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/zh.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh.d.ts","sourceRoot":"","sources":["../../src/i18n/zh.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"zh.d.ts","sourceRoot":"","sources":["../../src/i18n/zh.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA6PrC,CAAC"}
|
package/dist/i18n/zh.js
CHANGED
|
@@ -8,10 +8,12 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export const zh = {
|
|
10
10
|
// ---------- 输入行 ----------
|
|
11
|
-
"input.placeholder": "输入消息,/
|
|
11
|
+
"input.placeholder": "输入消息,/ 命令,@ 文件…",
|
|
12
12
|
"input.hint.ready": "Enter 发送 · Ctrl+J 换行 · / 命令 · PgUp 看历史",
|
|
13
13
|
"input.hint.scrolling": "↕ 滚动中 · PgUp/PgDn 翻页 · 发送回到底部",
|
|
14
14
|
"input.hint.initializing": "初始化中…",
|
|
15
|
+
"mention.scanning": "正在扫描项目文件…",
|
|
16
|
+
"input.pastedImages": "已附加 {n} 张图片 · Ctrl+V 再加 · Esc 清空",
|
|
15
17
|
// ---------- 状态栏 ----------
|
|
16
18
|
"status.agent": " · agent ",
|
|
17
19
|
"status.effort": " · 思考 ",
|
|
@@ -44,7 +46,13 @@ export const zh = {
|
|
|
44
46
|
"notice.reloaded": "已按新配置重建会话(消息与上下文保留)",
|
|
45
47
|
"notice.draftSaved": "已暂存输入(Ctrl+S 恢复)",
|
|
46
48
|
"notice.draftRestored": "已恢复暂存的输入",
|
|
47
|
-
"notice.
|
|
49
|
+
"notice.imagePasted": "已粘贴图片(共 {n} 张),Enter 发送",
|
|
50
|
+
"notice.imageLimit": "单条消息最多 {n} 张图片",
|
|
51
|
+
"notice.imageTooLarge": "图片太大({size}MB),已超出 20MB 上限",
|
|
52
|
+
"notice.imagesCleared": "已清空附加的图片",
|
|
53
|
+
"notice.textTooLarge": "剪贴板文本 {size}KB,超过 {limit}KB 上限,没有粘贴 —— 大段内容建议存成文件后用 @ 引用",
|
|
54
|
+
"notice.clipboardEmpty": "剪贴板里没有内容",
|
|
55
|
+
"notice.clipboardUnavailable": "没有可用的剪贴板工具(macOS 需 pbpaste,Linux 需 wl-paste 或 xclip)",
|
|
48
56
|
"notice.inputCleared": "已清空输入 · 再按一次 Ctrl+C 退出",
|
|
49
57
|
"notice.pressCtrlDAgain": "再按一次 Ctrl+D 退出",
|
|
50
58
|
"notice.languageChanged": "界面语言已切换为中文",
|
|
@@ -130,6 +138,8 @@ export const zh = {
|
|
|
130
138
|
"cmd.think.failed": "切换思考强度失败:{error}",
|
|
131
139
|
"cmd.save.done": "对话已保存:{id}",
|
|
132
140
|
"cmd.save.failed": "保存失败:{error}",
|
|
141
|
+
"cmd.save.overwrite": "已存在同名对话 {id},覆盖吗?",
|
|
142
|
+
"cmd.save.cancelled": "已取消保存",
|
|
133
143
|
"cmd.load.tooMany": "选择要加载的对话(仅显示最近 {n} 条)",
|
|
134
144
|
"cmd.load.readFailed": "对话不存在或读取失败:{id}",
|
|
135
145
|
"cmd.handoff.unknownMode": "未知的执行者:{who}(可选 self / summary)",
|
|
@@ -164,6 +174,7 @@ export const zh = {
|
|
|
164
174
|
"splash.pressAnyKey": "按任意键开始…",
|
|
165
175
|
"splash.preparing": "正在准备",
|
|
166
176
|
"msg.image": "[图片: {url}]",
|
|
177
|
+
"msg.imageInline": "[图片]",
|
|
167
178
|
"msg.file": "[文件: {name}]",
|
|
168
179
|
"msg.inlineFile": "内联文件",
|
|
169
180
|
"msg.userHeader": "❯ 你",
|
package/dist/i18n/zh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh.js","sourceRoot":"","sources":["../../src/i18n/zh.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,EAAE,GAA2B;IACxC,4BAA4B;IAC5B,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"zh.js","sourceRoot":"","sources":["../../src/i18n/zh.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,6 +17,17 @@ import { t } from "./i18n/index.js";
|
|
|
17
17
|
// 则 React 会在本行之前就被求值成 DEV 版。因此对 TUI 入口改用动态 import(见下方 tui 分支)。
|
|
18
18
|
// 用 `||=` 而非 `??=`:空的 NODE_ENV 同样会被 React 视为非 production,需一并纠正。
|
|
19
19
|
process.env.NODE_ENV ||= "production";
|
|
20
|
+
/**
|
|
21
|
+
* stdout 被提前关闭(`ai --help | head -1`、`ai "…" | head`)时的 EPIPE。
|
|
22
|
+
*
|
|
23
|
+
* 默认行为是未捕获的 `'error'` 事件:Node 把堆栈打到 stderr、退出码 1 —— 管道下游
|
|
24
|
+
* 主动不读了不是错误,按正常结束处理(退出码 0)。不在这里 flush 任何东西:
|
|
25
|
+
* 写不进去就是没人要。
|
|
26
|
+
*/
|
|
27
|
+
process.stdout.on("error", (error) => {
|
|
28
|
+
if (error.code === "EPIPE")
|
|
29
|
+
process.exit(0);
|
|
30
|
+
});
|
|
20
31
|
/**
|
|
21
32
|
* CLI 入口 —— 双模式路由
|
|
22
33
|
*
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AAEpC,iDAAiD;AACjD,EAAE;AACF,qEAAqE;AACrE,gEAAgE;AAChE,uEAAuE;AACvE,+DAA+D;AAC/D,8DAA8D;AAC9D,EAAE;AACF,kEAAkE;AAClE,+DAA+D;AAC/D,gEAAgE;AAChE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;AAEtC;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,SAAS,QAAQ;IACf,OAAO,CACL;QACE,CAAC,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAC7C,CAAC,CAAC,gBAAgB,CAAC;QACnB,CAAC,CAAC,kBAAkB,CAAC;QACrB,CAAC,CAAC,gBAAgB,CAAC;KACpB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CACpB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG;QACV,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACxC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;KAC3C,CAAC;IACF,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEjE,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,MAAM;YACT,yDAAyD;YACzD,MAAM,UAAU,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjC,OAAO;QAET,KAAK,SAAS;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC;YACzC,OAAO;QAET,KAAK,MAAM;YACT,yCAAyC;YACzC,MAAM,UAAU,EAAE,CAAC;YACnB,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,WAAW,EAAE,CAAC;iBACpD,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW;gBAAE,MAAM,aAAa,EAAE,CAAC;iBAC7D,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;gBAClC,uCAAuC;gBACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,iDAAiD;gBACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAClD,CAAC;YACD,OAAO;QAET,KAAK,OAAO;YACV,OAAO,CAAC,QAAQ,GAAG,MAAM,QAAQ,CAAC;gBAChC,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB,CAAC,CAAC;YACH,OAAO;QAET,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk-log.d.ts
CHANGED
|
@@ -27,10 +27,15 @@
|
|
|
27
27
|
* 只留给结果,日志本身是有用的。本模块只服务「界面被占用」的 TUI。
|
|
28
28
|
*/
|
|
29
29
|
import { type Logger } from "@ai-zen/agents-sdk";
|
|
30
|
+
/**
|
|
31
|
+
* 日志落盘路径(测试与用户都可能改写,故每次重新解析)。
|
|
32
|
+
*
|
|
33
|
+
* 不在模块加载时固化成常量:`AI_ZEN_DIR` 是活绑定,测试会在用例之间改它 ——
|
|
34
|
+
* 而**顶层常量**拿到的才是快照。
|
|
35
|
+
*/
|
|
36
|
+
export declare function sdkLogFile(root?: string): string;
|
|
30
37
|
/** 是否把 SDK 日志落盘(默认开启,`AIZ_DEBUG_SDK=0` 关闭) */
|
|
31
|
-
export declare
|
|
32
|
-
/** 日志落盘路径(测试与用户都可能改写,故导出常量) */
|
|
33
|
-
export declare const SDK_LOG_FILE: string;
|
|
38
|
+
export declare function sdkLogEnabled(): boolean;
|
|
34
39
|
/** 单文件上限 2MB;超出后轮转为 `<file>.1`(只保留上一份,总量有界) */
|
|
35
40
|
export declare const MAX_LOG_BYTES: number;
|
|
36
41
|
/** 单行日志格式:`<ISO 时间> [level] message` */
|
|
@@ -44,6 +49,13 @@ export type SdkNoticeSink = (level: "warn" | "error", message: string) => void;
|
|
|
44
49
|
* 封顶后补一句「剩下的看文件」,信息不丢,界面也不废。
|
|
45
50
|
*/
|
|
46
51
|
export declare const MAX_SDK_NOTICES = 20;
|
|
52
|
+
/**
|
|
53
|
+
* 重置全部模块级投递状态(**仅测试使用**)。
|
|
54
|
+
*
|
|
55
|
+
* 去重表与封顶计数器是进程级单例:进程内共享模块跑测试时,前一个用例上过栏的文案
|
|
56
|
+
* 会让后一个用例看不见同一条日志,表现为“日志没出来”的假失败。
|
|
57
|
+
*/
|
|
58
|
+
export declare function resetSdkLogState(): void;
|
|
47
59
|
/**
|
|
48
60
|
* 注册 / 注销通知栏 sink(`null` 表示界面还没起来 / 已卸载)。
|
|
49
61
|
*
|
package/dist/sdk-log.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-log.d.ts","sourceRoot":"","sources":["../src/sdk-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-log.d.ts","sourceRoot":"","sources":["../src/sdk-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAmB,GAAG,MAAM,CAE5D;AAED,8CAA8C;AAC9C,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,+CAA+C;AAC/C,eAAO,MAAM,aAAa,QAAkB,CAAC;AAE7C,wCAAwC;AACxC,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,EAAE,GAAE,IAAiB,GACpB,MAAM,CAER;AAYD,gDAAgD;AAChD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAE/E;;;;;GAKG;AACH,eAAO,MAAM,eAAe,KAAK,CAAC;AAalC;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAMvC;AAsBD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAIjE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBrD;AAED,oCAAoC;AACpC,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,MAAM,CAMR"}
|
package/dist/sdk-log.js
CHANGED
|
@@ -29,13 +29,20 @@
|
|
|
29
29
|
import { appendFileSync, mkdirSync, renameSync, statSync } from "node:fs";
|
|
30
30
|
import { dirname, join } from "node:path";
|
|
31
31
|
import { setLogger } from "@ai-zen/agents-sdk";
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
import { AI_ZEN_DIR } from "./config.js";
|
|
33
|
+
/**
|
|
34
|
+
* 日志落盘路径(测试与用户都可能改写,故每次重新解析)。
|
|
35
|
+
*
|
|
36
|
+
* 不在模块加载时固化成常量:`AI_ZEN_DIR` 是活绑定,测试会在用例之间改它 ——
|
|
37
|
+
* 而**顶层常量**拿到的才是快照。
|
|
38
|
+
*/
|
|
39
|
+
export function sdkLogFile(root = AI_ZEN_DIR) {
|
|
40
|
+
return process.env.AIZ_SDK_LOG_FILE || join(root, "logs", "sdk.log");
|
|
41
|
+
}
|
|
35
42
|
/** 是否把 SDK 日志落盘(默认开启,`AIZ_DEBUG_SDK=0` 关闭) */
|
|
36
|
-
export
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
export function sdkLogEnabled() {
|
|
44
|
+
return process.env.AIZ_DEBUG_SDK !== "0";
|
|
45
|
+
}
|
|
39
46
|
/** 单文件上限 2MB;超出后轮转为 `<file>.1`(只保留上一份,总量有界) */
|
|
40
47
|
export const MAX_LOG_BYTES = 2 * 1024 * 1024;
|
|
41
48
|
/** 单行日志格式:`<ISO 时间> [level] message` */
|
|
@@ -69,6 +76,19 @@ let capReported = false;
|
|
|
69
76
|
const deliveredOnce = new Set();
|
|
70
77
|
/** 界面还没起来时攒下的 warn / error,注册 sink 时补推 */
|
|
71
78
|
const pending = [];
|
|
79
|
+
/**
|
|
80
|
+
* 重置全部模块级投递状态(**仅测试使用**)。
|
|
81
|
+
*
|
|
82
|
+
* 去重表与封顶计数器是进程级单例:进程内共享模块跑测试时,前一个用例上过栏的文案
|
|
83
|
+
* 会让后一个用例看不见同一条日志,表现为“日志没出来”的假失败。
|
|
84
|
+
*/
|
|
85
|
+
export function resetSdkLogState() {
|
|
86
|
+
noticeSink = null;
|
|
87
|
+
delivered = 0;
|
|
88
|
+
capReported = false;
|
|
89
|
+
deliveredOnce.clear();
|
|
90
|
+
pending.length = 0;
|
|
91
|
+
}
|
|
72
92
|
function deliver(level, message) {
|
|
73
93
|
if (!message)
|
|
74
94
|
return;
|
|
@@ -83,7 +103,7 @@ function deliver(level, message) {
|
|
|
83
103
|
if (delivered >= MAX_SDK_NOTICES) {
|
|
84
104
|
if (!capReported) {
|
|
85
105
|
capReported = true;
|
|
86
|
-
noticeSink("warn", `More SDK warnings suppressed — see ${
|
|
106
|
+
noticeSink("warn", `More SDK warnings suppressed — see ${sdkLogFile()}`);
|
|
87
107
|
}
|
|
88
108
|
return;
|
|
89
109
|
}
|
|
@@ -138,8 +158,8 @@ export function createSilentLogger() {
|
|
|
138
158
|
* 返回实际安装的日志器,便于测试断言 / 上层复用。
|
|
139
159
|
*/
|
|
140
160
|
export function installSdkLogger(options = {}) {
|
|
141
|
-
const enabled = options.enabled ??
|
|
142
|
-
const file = options.file ??
|
|
161
|
+
const enabled = options.enabled ?? sdkLogEnabled();
|
|
162
|
+
const file = options.file ?? sdkLogFile();
|
|
143
163
|
const logger = enabled ? createFileLogger(file) : createSilentLogger();
|
|
144
164
|
setLogger(logger);
|
|
145
165
|
return logger;
|
package/dist/sdk-log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-log.js","sourceRoot":"","sources":["../src/sdk-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAe,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-log.js","sourceRoot":"","sources":["../src/sdk-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-pointer.d.ts","sourceRoot":"","sources":["../src/session-pointer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"session-pointer.d.ts","sourceRoot":"","sources":["../src/session-pointer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAeH,kBAAkB;AAClB,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AA2CD,sCAAsC;AACtC,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAGjF;AAED,yCAAyC;AACzC,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7E;AAED,8BAA8B;AAC9B,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjE"}
|
package/dist/session-pointer.js
CHANGED
|
@@ -22,14 +22,20 @@
|
|
|
22
22
|
import { promises as fs } from "node:fs";
|
|
23
23
|
import { join } from "node:path";
|
|
24
24
|
import { CLI_DIR } from "./config.js";
|
|
25
|
-
|
|
25
|
+
/**
|
|
26
|
+
* 指针文件路径。每次调用重新拼接:`CLI_DIR` 是会变的活绑定(测试会在用例之间换
|
|
27
|
+
* `AI_ZEN_DIR`),**在模块顶层固化成常量**才是快照。
|
|
28
|
+
*/
|
|
29
|
+
function pointerFile() {
|
|
30
|
+
return join(CLI_DIR, "last-session.json");
|
|
31
|
+
}
|
|
26
32
|
const FILE_VERSION = 1;
|
|
27
33
|
/** 读取整份指针文件;不存在 / 损坏 / 旧版格式时返回空结构 */
|
|
28
34
|
async function readPointerFile() {
|
|
29
35
|
const empty = { version: FILE_VERSION, sessions: {} };
|
|
30
36
|
let parsed;
|
|
31
37
|
try {
|
|
32
|
-
parsed = JSON.parse(await fs.readFile(
|
|
38
|
+
parsed = JSON.parse(await fs.readFile(pointerFile(), "utf-8"));
|
|
33
39
|
}
|
|
34
40
|
catch {
|
|
35
41
|
return empty;
|
|
@@ -55,9 +61,9 @@ async function writePointerFile(file) {
|
|
|
55
61
|
catch {
|
|
56
62
|
await fs.mkdir(CLI_DIR, { recursive: true });
|
|
57
63
|
}
|
|
58
|
-
const tmp = `${
|
|
64
|
+
const tmp = `${pointerFile()}.tmp`;
|
|
59
65
|
await fs.writeFile(tmp, JSON.stringify(file, null, 2), "utf-8");
|
|
60
|
-
await fs.rename(tmp,
|
|
66
|
+
await fs.rename(tmp, pointerFile());
|
|
61
67
|
}
|
|
62
68
|
/** 读取指定工作目录的「上一轮会话 id」;无记录时返回 null */
|
|
63
69
|
export async function readLastSession(cwd) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-pointer.js","sourceRoot":"","sources":["../src/session-pointer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,
|
|
1
|
+
{"version":3,"file":"session-pointer.js","sourceRoot":"","sources":["../src/session-pointer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-agent-guard-plugin.d.ts","sourceRoot":"","sources":["../src/sub-agent-guard-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,4BAA6B,YAAW,WAAW;IAC9D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;
|
|
1
|
+
{"version":3,"file":"sub-agent-guard-plugin.d.ts","sourceRoot":"","sources":["../src/sub-agent-guard-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,4BAA6B,YAAW,WAAW;IAC9D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,YAAY,OAAO,EAAE,oBAAoB,EAExC;IAED,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,GAAG,IAAI,CAQnD;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `↑` 历史的唯一数据源 —— 直接派生自 `session.messages` 里的用户消息。
|
|
3
|
+
*
|
|
4
|
+
* ## 为什么不另存一份历史
|
|
5
|
+
*
|
|
6
|
+
* 旧实现在 `useInputEditing` 内部维护 `string[]`:只有文本。于是 `↑` 翻回一条**带图片**
|
|
7
|
+
* 的消息时图片静默丢失,用户直接回车就把「图 + 文」重发成了纯文本 —— 看起来什么都没少,
|
|
8
|
+
* 但模型收到的完全不同。而真相本来就在 messages 的内容段里(`Ctrl+V` 粘贴的图会以
|
|
9
|
+
* `image_url` 的 data URL 落进用户消息),派生出来即可,不需要第二份会漂移的副本。
|
|
10
|
+
*
|
|
11
|
+
* ## 还原不了的情况(刻意如此)
|
|
12
|
+
*
|
|
13
|
+
* 走 Files API 上传过的图片在消息里是 `file_id`,本地没有副本 —— 这种只恢复文本,
|
|
14
|
+
* 不塞一个空壳附件(重发时才会真的丢图,而不是假装有)。
|
|
15
|
+
*/
|
|
16
|
+
import { AgentNS } from "@ai-zen/agents-core";
|
|
17
|
+
import type { ClipboardImage } from "../clipboard.js";
|
|
18
|
+
/** 一条可再次编辑的草稿:文本 + 附件 */
|
|
19
|
+
export interface HistoryEntry {
|
|
20
|
+
text: string;
|
|
21
|
+
images: readonly ClipboardImage[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 用户消息 → 草稿列表(按发送顺序,**最后一条最新**)。
|
|
25
|
+
*
|
|
26
|
+
* `↑` 从末尾往回走,与「最近说过的话先翻出来」一致。
|
|
27
|
+
*/
|
|
28
|
+
export declare function userDrafts(messages: readonly AgentNS.Message[]): HistoryEntry[];
|
|
29
|
+
//# sourceMappingURL=chat-history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-history.d.ts","sourceRoot":"","sources":["../../src/tui/chat-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,yBAAyB;AACzB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CACnC;AA6BD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,OAAO,CAAC,OAAO,EAAE,GAAG,YAAY,EAAE,CAE/E"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `↑` 历史的唯一数据源 —— 直接派生自 `session.messages` 里的用户消息。
|
|
3
|
+
*
|
|
4
|
+
* ## 为什么不另存一份历史
|
|
5
|
+
*
|
|
6
|
+
* 旧实现在 `useInputEditing` 内部维护 `string[]`:只有文本。于是 `↑` 翻回一条**带图片**
|
|
7
|
+
* 的消息时图片静默丢失,用户直接回车就把「图 + 文」重发成了纯文本 —— 看起来什么都没少,
|
|
8
|
+
* 但模型收到的完全不同。而真相本来就在 messages 的内容段里(`Ctrl+V` 粘贴的图会以
|
|
9
|
+
* `image_url` 的 data URL 落进用户消息),派生出来即可,不需要第二份会漂移的副本。
|
|
10
|
+
*
|
|
11
|
+
* ## 还原不了的情况(刻意如此)
|
|
12
|
+
*
|
|
13
|
+
* 走 Files API 上传过的图片在消息里是 `file_id`,本地没有副本 —— 这种只恢复文本,
|
|
14
|
+
* 不塞一个空壳附件(重发时才会真的丢图,而不是假装有)。
|
|
15
|
+
*/
|
|
16
|
+
import { AgentNS } from "@ai-zen/agents-core";
|
|
17
|
+
import { stripCwdNote } from "./text.js";
|
|
18
|
+
/** `data:<mime>;base64,<data>` → `{ base64, mime }`;不是内联图片(http URL 等)返回 null */
|
|
19
|
+
function parseDataUrl(url) {
|
|
20
|
+
const match = /^data:([^;,]+);base64,(.*)$/s.exec(url);
|
|
21
|
+
if (!match)
|
|
22
|
+
return null;
|
|
23
|
+
return { mime: match[1], base64: match[2] };
|
|
24
|
+
}
|
|
25
|
+
/** 一条用户消息 → 草稿(文本剥掉 CwdTracker 追加的工作目录注记) */
|
|
26
|
+
function toDraft(message) {
|
|
27
|
+
const content = message.content;
|
|
28
|
+
if (content == null)
|
|
29
|
+
return { text: "", images: [] };
|
|
30
|
+
if (typeof content === "string")
|
|
31
|
+
return { text: stripCwdNote(content), images: [] };
|
|
32
|
+
const texts = [];
|
|
33
|
+
const images = [];
|
|
34
|
+
for (const part of content) {
|
|
35
|
+
if (part.type === "text") {
|
|
36
|
+
texts.push(part.text);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (part.type !== "image_url")
|
|
40
|
+
continue; // `file`(Files API)本地无副本
|
|
41
|
+
const image = parseDataUrl(part.image_url.url);
|
|
42
|
+
if (image)
|
|
43
|
+
images.push(image);
|
|
44
|
+
}
|
|
45
|
+
return { text: stripCwdNote(texts.join("")), images };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 用户消息 → 草稿列表(按发送顺序,**最后一条最新**)。
|
|
49
|
+
*
|
|
50
|
+
* `↑` 从末尾往回走,与「最近说过的话先翻出来」一致。
|
|
51
|
+
*/
|
|
52
|
+
export function userDrafts(messages) {
|
|
53
|
+
return messages.filter((message) => message.role === AgentNS.Role.User).map(toDraft);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=chat-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-history.js","sourceRoot":"","sources":["../../src/tui/chat-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAQzC,iFAAiF;AACjF,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC;AAChD,CAAC;AAED,6CAA6C;AAC7C,SAAS,OAAO,CAAC,OAAwB;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACrD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAEpF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS,CAAC,yBAAyB;QAClE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,QAAoC;IAC7D,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvF,CAAC"}
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
import { AgentNS } from "@ai-zen/agents-core";
|
|
12
12
|
import type { Agent as CoreAgent } from "@ai-zen/agents-core";
|
|
13
13
|
import { type AutoMigrateTriggerInfo, type HandoffMode } from "@ai-zen/agents-sdk";
|
|
14
|
+
import { createAgent, resetScope } from "../agent-creator.js";
|
|
15
|
+
import type { ClipboardImage } from "../clipboard.js";
|
|
14
16
|
import type { TokenThresholds } from "@ai-zen/agents-sdk";
|
|
15
17
|
import { stripCwdNote } from "./text.js";
|
|
16
18
|
import { type RateSample } from "./token-rate.js";
|
|
@@ -62,6 +64,14 @@ export interface ChatSessionOptions {
|
|
|
62
64
|
* 返回 `null` 表示跳过本次迁移;未提供时按默认执行者(原 agent 自交接)直接迁移。
|
|
63
65
|
*/
|
|
64
66
|
requestMode?: (info: AutoMigrateTriggerInfo) => Promise<HandoffMode | null>;
|
|
67
|
+
/**
|
|
68
|
+
* 可注入的 Agent 工厂 / Scope 重置。缺省用真实实现;测试注入假实现即可,
|
|
69
|
+
* **不必** `vi.mock("../agent-creator.js")` —— 进程内共享模块时模块级 mock 会串。
|
|
70
|
+
*/
|
|
71
|
+
deps?: {
|
|
72
|
+
createAgent?: typeof createAgent;
|
|
73
|
+
resetScope?: typeof resetScope;
|
|
74
|
+
};
|
|
65
75
|
}
|
|
66
76
|
/** 去掉 CwdTrackerPlugin 追加在用户消息末尾的工作目录提示(转发自 ./text.js) */
|
|
67
77
|
export { stripCwdNote };
|
|
@@ -120,6 +130,9 @@ export declare class ChatSession {
|
|
|
120
130
|
* 而选中态是按 id 匹配的——残留的选中 id 会突然「接上」新一轮的子 Agent。
|
|
121
131
|
*/
|
|
122
132
|
private subAgentIdSeq;
|
|
133
|
+
/** Agent 工厂 / Scope 重置(构造时可注入,见 `ChatSessionOptions.deps`) */
|
|
134
|
+
private readonly createAgentFn;
|
|
135
|
+
private readonly resetScopeFn;
|
|
123
136
|
private constructor();
|
|
124
137
|
/** 创建会话:装配 Agent、插件与「变更信号」 */
|
|
125
138
|
static create(options: ChatSessionOptions, notifier: ChatSessionNotifier): Promise<ChatSession>;
|
|
@@ -143,8 +156,13 @@ export declare class ChatSession {
|
|
|
143
156
|
get phase(): PhaseInfo | null;
|
|
144
157
|
/** 清空 Agent 栏目(新一轮输入 / 换 Agent / 换会话时调用;序号一并归零) */
|
|
145
158
|
private clearSubAgents;
|
|
146
|
-
/**
|
|
147
|
-
|
|
159
|
+
/**
|
|
160
|
+
* 发送一条消息;内容变化经 `notifier.onChange` 通知,`resolve` 表示本轮结束。
|
|
161
|
+
*
|
|
162
|
+
* `images` 非空时,消息内容由「文本段 + 图片内容块」组成(转换规则与降级全在
|
|
163
|
+
* `user-content.ts`):这是粘贴图片唯一的入口,不另开一条发送路径。
|
|
164
|
+
*/
|
|
165
|
+
send(input: string, images?: readonly ClipboardImage[]): Promise<void>;
|
|
148
166
|
/** 中止当前请求(Ctrl+C 语义:仅取消本轮,不退出) */
|
|
149
167
|
abort(): void;
|
|
150
168
|
/**
|
|
@@ -183,6 +201,17 @@ export declare class ChatSession {
|
|
|
183
201
|
rollbackTo(index: number): string;
|
|
184
202
|
/** 保存当前对话到存档 */
|
|
185
203
|
save(): Promise<string>;
|
|
204
|
+
/**
|
|
205
|
+
* 把当前会话存成指定文件名(`/save <名字>`),成功后 `currentId` 与 last-session
|
|
206
|
+
* 指针一并跟过去,于是后续自动落盘直接写新文件。
|
|
207
|
+
*
|
|
208
|
+
* 实现是「写新文件 → 删旧文件」,而不是 `fs.rename`:
|
|
209
|
+
* · rename 要求旧文件**已存在**,而刚开的新会话还没落过盘(会 ENOENT);
|
|
210
|
+
* · 覆盖已有目标在 Windows 上还得先 unlink,跨平台两边都得写分支;
|
|
211
|
+
* · 写新文件时父目录由仓储 `write()` 的 `mkdir(recursive)` 负责(`/save a/b` 可用)。
|
|
212
|
+
* 中途被杀最多留下两份副本(可读、无损),不会丢内容。
|
|
213
|
+
*/
|
|
214
|
+
saveAs(id: string): Promise<string>;
|
|
186
215
|
/** 释放事件监听(重建 Agent 时调用,避免监听器泄漏) */
|
|
187
216
|
dispose(): void;
|
|
188
217
|
private attach;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/tui/chat-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAY,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAgC,KAAK,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAG5F,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAGjB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/tui/chat-session.ts"],"names":[],"mappings":"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"}
|