@ai-zen/cli 1.0.0-alpha.1 → 1.0.0-alpha.11

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.
Files changed (112) hide show
  1. package/CHANGELOG.md +172 -0
  2. package/README.md +24 -25
  3. package/README.zh.md +24 -25
  4. package/dist/agent-creator.d.ts +11 -0
  5. package/dist/agent-creator.d.ts.map +1 -1
  6. package/dist/agent-creator.js +20 -11
  7. package/dist/agent-creator.js.map +1 -1
  8. package/dist/auto-migrate-confirm.d.ts +43 -0
  9. package/dist/auto-migrate-confirm.d.ts.map +1 -0
  10. package/dist/auto-migrate-confirm.js +46 -0
  11. package/dist/auto-migrate-confirm.js.map +1 -0
  12. package/dist/config.d.ts +15 -1
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +15 -1
  15. package/dist/config.js.map +1 -1
  16. package/dist/conversation-commands/registry.d.ts.map +1 -1
  17. package/dist/conversation-commands/registry.js +2 -1
  18. package/dist/conversation-commands/registry.js.map +1 -1
  19. package/dist/conversation-persist-plugin.js +1 -1
  20. package/dist/conversation-persist-plugin.js.map +1 -1
  21. package/dist/conversation-repository.js +1 -1
  22. package/dist/conversation-repository.js.map +1 -1
  23. package/dist/handoff-service.d.ts +19 -0
  24. package/dist/handoff-service.d.ts.map +1 -0
  25. package/dist/handoff-service.js +87 -0
  26. package/dist/handoff-service.js.map +1 -0
  27. package/dist/index.js +21 -3
  28. package/dist/index.js.map +1 -1
  29. package/dist/session-pointer.d.ts +22 -9
  30. package/dist/session-pointer.d.ts.map +1 -1
  31. package/dist/session-pointer.js +55 -23
  32. package/dist/session-pointer.js.map +1 -1
  33. package/dist/tui/chat-session.d.ts +60 -54
  34. package/dist/tui/chat-session.d.ts.map +1 -1
  35. package/dist/tui/chat-session.js +121 -85
  36. package/dist/tui/chat-session.js.map +1 -1
  37. package/dist/tui/components.d.ts +5 -2
  38. package/dist/tui/components.d.ts.map +1 -1
  39. package/dist/tui/components.js +2 -2
  40. package/dist/tui/components.js.map +1 -1
  41. package/dist/tui/config-wizard/types.d.ts +9 -0
  42. package/dist/tui/config-wizard/types.d.ts.map +1 -1
  43. package/dist/tui/config-wizard/wizard.d.ts.map +1 -1
  44. package/dist/tui/config-wizard/wizard.js +4 -3
  45. package/dist/tui/config-wizard/wizard.js.map +1 -1
  46. package/dist/tui/highlight.d.ts +3 -2
  47. package/dist/tui/highlight.d.ts.map +1 -1
  48. package/dist/tui/highlight.js +3 -2
  49. package/dist/tui/highlight.js.map +1 -1
  50. package/dist/tui/index.d.ts +1 -0
  51. package/dist/tui/index.d.ts.map +1 -1
  52. package/dist/tui/index.js +5 -5
  53. package/dist/tui/index.js.map +1 -1
  54. package/dist/tui/screens/chat-commands.d.ts +10 -2
  55. package/dist/tui/screens/chat-commands.d.ts.map +1 -1
  56. package/dist/tui/screens/chat-commands.js +53 -15
  57. package/dist/tui/screens/chat-commands.js.map +1 -1
  58. package/dist/tui/screens/chat.d.ts +0 -4
  59. package/dist/tui/screens/chat.d.ts.map +1 -1
  60. package/dist/tui/screens/chat.js +146 -77
  61. package/dist/tui/screens/chat.js.map +1 -1
  62. package/dist/tui/screens/frame-buffer.d.ts +47 -0
  63. package/dist/tui/screens/frame-buffer.d.ts.map +1 -0
  64. package/dist/tui/screens/frame-buffer.js +78 -0
  65. package/dist/tui/screens/frame-buffer.js.map +1 -0
  66. package/dist/tui/screens/index.d.ts +6 -6
  67. package/dist/tui/screens/index.d.ts.map +1 -1
  68. package/dist/tui/screens/index.js +5 -5
  69. package/dist/tui/screens/index.js.map +1 -1
  70. package/dist/tui/screens/layout.d.ts +5 -3
  71. package/dist/tui/screens/layout.d.ts.map +1 -1
  72. package/dist/tui/screens/layout.js +3 -8
  73. package/dist/tui/screens/layout.js.map +1 -1
  74. package/dist/tui/screens/lines.d.ts +12 -41
  75. package/dist/tui/screens/lines.d.ts.map +1 -1
  76. package/dist/tui/screens/lines.js +87 -95
  77. package/dist/tui/screens/lines.js.map +1 -1
  78. package/dist/tui/screens/messages-view.d.ts +10 -0
  79. package/dist/tui/screens/messages-view.d.ts.map +1 -0
  80. package/dist/tui/screens/messages-view.js +115 -0
  81. package/dist/tui/screens/messages-view.js.map +1 -0
  82. package/dist/tui/screens/notice.d.ts +32 -0
  83. package/dist/tui/screens/notice.d.ts.map +1 -0
  84. package/dist/tui/screens/notice.js +46 -0
  85. package/dist/tui/screens/notice.js.map +1 -0
  86. package/dist/tui/screens/render.d.ts +2 -4
  87. package/dist/tui/screens/render.d.ts.map +1 -1
  88. package/dist/tui/screens/render.js +7 -43
  89. package/dist/tui/screens/render.js.map +1 -1
  90. package/dist/tui/text.d.ts +5 -0
  91. package/dist/tui/text.d.ts.map +1 -1
  92. package/dist/tui/text.js +7 -0
  93. package/dist/tui/text.js.map +1 -1
  94. package/dist/tui/theme.d.ts +7 -1
  95. package/dist/tui/theme.d.ts.map +1 -1
  96. package/dist/tui/theme.js +15 -3
  97. package/dist/tui/theme.js.map +1 -1
  98. package/dist/types.d.ts +6 -3
  99. package/dist/types.d.ts.map +1 -1
  100. package/package.json +3 -3
  101. package/dist/auto-migrate-confirm-plugin.d.ts +0 -58
  102. package/dist/auto-migrate-confirm-plugin.d.ts.map +0 -1
  103. package/dist/auto-migrate-confirm-plugin.js +0 -61
  104. package/dist/auto-migrate-confirm-plugin.js.map +0 -1
  105. package/dist/migration-service.d.ts +0 -15
  106. package/dist/migration-service.d.ts.map +0 -1
  107. package/dist/migration-service.js +0 -59
  108. package/dist/migration-service.js.map +0 -1
  109. package/dist/tui/screens/state.d.ts +0 -13
  110. package/dist/tui/screens/state.d.ts.map +0 -1
  111. package/dist/tui/screens/state.js +0 -75
  112. package/dist/tui/screens/state.js.map +0 -1
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- // 由 src/tui/screens.tsx 拆分而来 —— 对话屏幕 Chat
3
- import { useEffect, useReducer, useRef, useState } from "react";
2
+ // 对话屏幕 —— 以 SDK 的 `agent.messages` 为唯一数据源渲染(无自定义中间模型)
3
+ import { useEffect, useRef, useState } from "react";
4
4
  import { Box, Text, useApp, useCursor, useInput, useWindowSize } from "ink";
5
+ import { AgentNS } from "@ai-zen/agents-core";
5
6
  import { theme } from "../theme.js";
6
7
  import { Spinner, StatusBar, SlashMenu } from "../components.js";
7
8
  import { layoutInput, usableFrameRows, isTerminalReply } from "../text.js";
@@ -13,18 +14,18 @@ import { resolveCredential } from "../../config-editor.js";
13
14
  import { ConfigWizard } from "../config-wizard/index.js";
14
15
  import { computeInputCursorPosition, wordLeft, wordRight } from "./input.js";
15
16
  import { computeChatLayout } from "./layout.js";
16
- import { chatReducer } from "./state.js";
17
- import { LineView, messagesToBlocks } from "./render.js";
17
+ import { FrameBuffer } from "./frame-buffer.js";
18
+ import { LineView } from "./render.js";
19
+ import { messageToLines, transcriptLines } from "./messages-view.js";
18
20
  import { PickerOverlay, Confirm } from "./overlays.js";
19
21
  import { runCommand } from "./chat-commands.js";
22
+ import { NoticeChannel, noticeLines } from "./notice.js";
20
23
  /**
21
24
  * 计算回车时应提交的文本。
22
25
  *
23
26
  * 斜杠候选菜单可见时(输入以 `/` 开头且尚未输入参数),回车应**直接执行高亮命令**,
24
27
  * 而不是提交半截输入 —— 否则用户只输入 `/` 或未补全的命令名时,回车会落到
25
28
  * 「未知命令」报错(体验很差)。非命令输入原样返回。
26
- *
27
- * `menuIndex` 越界时回落到最后一项,避免菜单看似有选中却回车落空。
28
29
  */
29
30
  export function resolveSubmitText(input, hints, menuIndex) {
30
31
  const slash = input.startsWith("/") && !input.includes("\n") && !input.includes(" ");
@@ -38,15 +39,10 @@ export function Chat(props) {
38
39
  const { exit, suspendTerminal } = useApp();
39
40
  const { setCursorPosition } = useCursor();
40
41
  const { columns, rows } = useWindowSize();
41
- const [state, dispatch] = useReducer(chatReducer, {
42
- blocks: props.clearTranscript ? [] : messagesToBlocks(props.messages ?? []),
43
- live: null,
44
- });
45
42
  const [input, setInput] = useState(props.initialInput ?? "");
46
43
  /** 光标位置:以 code point 计的字符索引(0..len) */
47
44
  const [cursor, setCursor] = useState(Array.from(props.initialInput ?? "").length);
48
45
  const [menuIndex, setMenuIndex] = useState(0);
49
- // 输入变化后候选集随之改变:高亮重置回首项,避免索引越界(看似选中实为无高亮 / 回车落空)
50
46
  useEffect(() => {
51
47
  setMenuIndex(0);
52
48
  }, [input]);
@@ -55,13 +51,9 @@ export function Chat(props) {
55
51
  /** 配置向导:非 null 时整屏接管(凭据设置 / 配置中心) */
56
52
  const [wizardStep, setWizardStep] = useState(null);
57
53
  const [wizardConfig, setWizardConfig] = useState(null);
58
- /** 可用 Agent 列表(供配置中心「默认 Agent」选择) */
59
54
  const [wizardAgents, setWizardAgents] = useState([]);
60
- /** MCP 配置快照(全局 + 项目),打开向导时刷新 */
61
55
  const [wizardMcp, setWizardMcp] = useState(null);
62
- /** Agent / Sub-agent 定义仓储(快照 + 读写),打开向导时刷新 */
63
56
  const [wizardAgentStore, setWizardAgentStore] = useState(null);
64
- /** 当前会话所用端点 id(打开向导时刷新,用于判断改动是否影响本会话) */
65
57
  const currentEndpointRef = useRef(null);
66
58
  const [history, setHistory] = useState([]);
67
59
  const historyIndex = useRef(-1);
@@ -72,21 +64,59 @@ export function Chat(props) {
72
64
  const [viewTop, setViewTop] = useState(null);
73
65
  /** 最近一次布局,供键盘回调读取总行数 / 视口高度(应用内翻页) */
74
66
  const layoutRef = useRef(null);
75
- const busy = state.live != null;
67
+ /** 本轮是否在生成中(spinner / 输入禁用) */
68
+ const [busy, setBusy] = useState(false);
69
+ /** 乐观回显:提交后、真实 user 消息落进 messages 之前,先显示用户提问 */
70
+ const [pendingUser, setPendingUser] = useState(null);
71
+ /** 转录显示起点(/clear 清屏用:隐藏此索引之前的消息,但不改上下文) */
72
+ const [transcriptFrom, setTranscriptFrom] = useState(0);
73
+ /**
74
+ * 通知通道:notice / error 走独立栏位,绝不进对话转录(messages)。
75
+ */
76
+ const noticeChannelRef = useRef(null);
77
+ if (noticeChannelRef.current == null)
78
+ noticeChannelRef.current = new NoticeChannel();
79
+ const noticeChannel = noticeChannelRef.current;
80
+ const [notice, setNotice] = useState(null);
81
+ useEffect(() => noticeChannel.subscribe(setNotice), [noticeChannel]);
82
+ /**
83
+ * 渲染信号 + 合帧:SDK 内容变更 → FrameBuffer 合帧 → setTick 触发重渲染。
84
+ * 转录内容始终从 `agent.messages` 现取,tick 只负责「告诉 React 该重画了」。
85
+ */
86
+ const [, setTick] = useState(0);
87
+ const frameBufferRef = useRef(null);
88
+ if (frameBufferRef.current == null) {
89
+ frameBufferRef.current = new FrameBuffer(() => setTick((t) => t + 1));
90
+ }
76
91
  // 创建会话
77
92
  useEffect(() => {
78
93
  let disposed = false;
94
+ const notifier = {
95
+ onChange: (immediate) => {
96
+ if (disposed)
97
+ return;
98
+ frameBufferRef.current?.push(null, immediate);
99
+ },
100
+ onNotice: (text, tone) => {
101
+ if (!disposed)
102
+ noticeChannel.push(text, tone);
103
+ },
104
+ };
79
105
  ChatSession.create({
80
106
  modelId: props.modelId,
81
107
  agentId: props.agentId,
82
108
  messages: props.messages,
83
109
  conversationId: props.conversationId,
84
110
  conversationName: props.conversationName,
85
- requestConfirm: (question) => new Promise((resolve) => setConfirmState({ question, resolve })),
86
- }, (event) => {
87
- if (!disposed)
88
- dispatch(event);
89
- })
111
+ requestMode: (info) => new Promise((resolve) => setPickerState({
112
+ title: `上下文即将超限(${info.promptTokens}/${info.maxTokens} tokens),由谁编写交接文档?`,
113
+ items: [
114
+ { label: "原 agent 自交接", value: "self", hint: "保真 · 可核实真实状态" },
115
+ { label: "独立摘要", value: "summary", hint: "便宜 · 保真度低" },
116
+ ],
117
+ resolve: (value) => resolve(value === "self" || value === "summary" ? value : null),
118
+ })),
119
+ }, notifier)
90
120
  .then((session) => {
91
121
  if (disposed) {
92
122
  session.dispose();
@@ -94,10 +124,12 @@ export function Chat(props) {
94
124
  }
95
125
  sessionRef.current = session;
96
126
  setReady(true);
127
+ setTick((t) => t + 1);
97
128
  })
98
129
  .catch((error) => setBootError(error?.message ?? String(error)));
99
130
  return () => {
100
131
  disposed = true;
132
+ frameBufferRef.current?.dispose();
101
133
  sessionRef.current?.dispose();
102
134
  };
103
135
  }, [
@@ -120,7 +152,6 @@ export function Chat(props) {
120
152
  });
121
153
  };
122
154
  // ---- 配置向导(凭据 / 配置中心)----
123
- /** 打开配置向导:先取配置 / MCP / Agent 快照,再切入指定步骤 */
124
155
  const openWizard = async (step) => {
125
156
  try {
126
157
  const config = await readConfig();
@@ -133,7 +164,7 @@ export function Chat(props) {
133
164
  setWizardStep(step);
134
165
  }
135
166
  catch (error) {
136
- dispatch({ type: "error", text: `读取配置失败:${error?.message ?? error}` });
167
+ noticeChannel.push(`读取配置失败:${error?.message ?? error}`, "error");
137
168
  }
138
169
  };
139
170
  /** `/key`:直达「当前模型所用端点」的 API Key 编辑步骤 */
@@ -142,10 +173,7 @@ export function Chat(props) {
142
173
  const config = await readConfig();
143
174
  const credential = resolveCredential(config, props.modelId);
144
175
  if (!credential) {
145
- dispatch({
146
- type: "error",
147
- text: `模型 ${props.modelId} 未绑定可用端点,请用 /config 检查配置`,
148
- });
176
+ noticeChannel.push(`模型 ${props.modelId} 未绑定可用端点,请用 /config 检查配置`, "error");
149
177
  return;
150
178
  }
151
179
  currentEndpointRef.current = credential.endpointId;
@@ -153,7 +181,7 @@ export function Chat(props) {
153
181
  setWizardStep({ kind: "edit", field: "apiKey", endpointId: credential.endpointId });
154
182
  }
155
183
  catch (error) {
156
- dispatch({ type: "error", text: `读取配置失败:${error?.message ?? error}` });
184
+ noticeChannel.push(`读取配置失败:${error?.message ?? error}`, "error");
157
185
  }
158
186
  };
159
187
  /** 向导关闭:渲染变更摘要;若改到当前端点则重建会话(消息保留) */
@@ -163,10 +191,9 @@ export function Chat(props) {
163
191
  setWizardMcp(null);
164
192
  setWizardAgentStore(null);
165
193
  for (const line of result.summary)
166
- dispatch({ type: "notice", text: `配置已更新:${line}` });
194
+ noticeChannel.push(`配置已更新:${line}`);
167
195
  if (!result.dirty)
168
196
  return;
169
- // 会话尚未建立(启动失败进入向导):重挂载对话屏重试
170
197
  if (!sessionRef.current) {
171
198
  exit({ restart: true, messages: props.messages });
172
199
  return;
@@ -175,12 +202,11 @@ export function Chat(props) {
175
202
  if (endpointChanged || result.mcpChanged || result.agentsChanged) {
176
203
  sessionRef.current
177
204
  .reload()
178
- .then(() => dispatch({ type: "notice", text: "已按新配置重建会话(消息与上下文保留)" }))
179
- .catch((error) => dispatch({ type: "error", text: `重建会话失败:${error?.message ?? error}` }));
205
+ .then(() => noticeChannel.push("已按新配置重建会话(消息与上下文保留)"))
206
+ .catch((error) => noticeChannel.push(`重建会话失败:${error?.message ?? error}`, "error"));
180
207
  }
181
208
  };
182
209
  // ---- 滚动视口控制(应用内翻页,回看历史)----
183
- /** 跳到指定顶部行;越界钳制;一旦贴到底部则恢复「自动跟随」 */
184
210
  const scrollTo = (nextTop) => {
185
211
  const L = layoutRef.current;
186
212
  if (!L)
@@ -189,36 +215,35 @@ export function Chat(props) {
189
215
  const clamped = Math.max(0, Math.min(maxTop, nextTop));
190
216
  setViewTop(clamped >= maxTop ? null : clamped);
191
217
  };
192
- /** 翻页滚动(dir:-1 上翻 / +1 下翻) */
193
218
  const scrollByPage = (dir) => {
194
219
  const L = layoutRef.current;
195
220
  if (!L)
196
221
  return;
197
222
  scrollTo(L.viewTop + dir * Math.max(1, L.budget - 1));
198
223
  };
199
- /** 单行滚动(dir:-1 上 / +1 下) */
200
224
  const scrollByLine = (dir) => {
201
225
  const L = layoutRef.current;
202
226
  if (!L)
203
227
  return;
204
228
  scrollTo(L.viewTop + dir);
205
229
  };
206
- /** 回到最新(贴底,恢复自动跟随) */
207
230
  const scrollToBottom = () => setViewTop(null);
231
+ /** 清屏但保留上下文:把显示起点推到当前消息末尾 */
232
+ const clearTranscript = () => {
233
+ setTranscriptFrom(sessionRef.current?.messages.length ?? 0);
234
+ setNotice(null);
235
+ };
208
236
  // ---- 输入编辑(光标感知)----
209
- /** 替换整个输入并把光标移到末尾 */
210
237
  const setInputText = (text) => {
211
238
  setInput(text);
212
239
  setCursor(Array.from(text).length);
213
240
  };
214
- /** 在光标处插入文本 */
215
241
  const insertAtCursor = (text) => {
216
242
  const chars = Array.from(input);
217
243
  const cp = Math.max(0, Math.min(cursor, chars.length));
218
244
  setInput(chars.slice(0, cp).join("") + text + chars.slice(cp).join(""));
219
245
  setCursor(cp + Array.from(text).length);
220
246
  };
221
- /** 删除光标前一个字符(Backspace) */
222
247
  const deleteBeforeCursor = () => {
223
248
  const chars = Array.from(input);
224
249
  const cp = Math.max(0, Math.min(cursor, chars.length));
@@ -227,7 +252,6 @@ export function Chat(props) {
227
252
  setInput(chars.slice(0, cp - 1).join("") + chars.slice(cp).join(""));
228
253
  setCursor(cp - 1);
229
254
  };
230
- /** 删除光标后一个字符(Delete) */
231
255
  const deleteAfterCursor = () => {
232
256
  const chars = Array.from(input);
233
257
  const cp = Math.max(0, Math.min(cursor, chars.length));
@@ -235,12 +259,10 @@ export function Chat(props) {
235
259
  return;
236
260
  setInput(chars.slice(0, cp).join("") + chars.slice(cp + 1).join(""));
237
261
  };
238
- /** 以字符为单位移动光标 */
239
262
  const moveCursor = (delta) => {
240
263
  const len = Array.from(input).length;
241
264
  setCursor((c) => Math.max(0, Math.min(len, c + delta)));
242
265
  };
243
- /** 光标移到当前逻辑行行首(Home) */
244
266
  const moveCursorToLineStart = () => {
245
267
  const chars = Array.from(input);
246
268
  const cp = Math.max(0, Math.min(cursor, chars.length));
@@ -249,7 +271,6 @@ export function Chat(props) {
249
271
  i -= 1;
250
272
  setCursor(i);
251
273
  };
252
- /** 光标移到当前逻辑行行尾(End) */
253
274
  const moveCursorToLineEnd = () => {
254
275
  const chars = Array.from(input);
255
276
  const cp = Math.max(0, Math.min(cursor, chars.length));
@@ -268,33 +289,53 @@ export function Chat(props) {
268
289
  setInputText("");
269
290
  historyIndex.current = -1;
270
291
  scrollToBottom();
292
+ setNotice(null);
271
293
  if (trimmed.startsWith("/")) {
272
- const name = trimmed.slice(1).toLowerCase();
273
- await runCommand(name, trimmed, {
274
- session: sessionRef.current,
275
- dispatch,
276
- rows: rows ?? 24,
277
- exit,
278
- suspendTerminal,
279
- openWizard,
280
- openKeyEditor,
281
- doExit,
282
- setPickerState,
283
- setConfirmState,
284
- setInputText,
285
- });
294
+ // 命令名取首个 token:支持 `/migrate summary`、`/handoff self` 这类带参数的写法
295
+ const name = trimmed.slice(1).split(/\s+/)[0].toLowerCase();
296
+ // 交接/迁移会调用模型写文档(较慢):期间应像自动迁移一样拦住输入框。
297
+ const blocksInput = name === "migrate" || name === "migration" || name === "handoff";
298
+ if (blocksInput)
299
+ setBusy(true);
300
+ try {
301
+ await runCommand(name, trimmed, {
302
+ session: sessionRef.current,
303
+ notice: (text, tone) => noticeChannel.push(text, tone),
304
+ clearTranscript,
305
+ rows: rows ?? 24,
306
+ exit,
307
+ suspendTerminal,
308
+ openWizard,
309
+ openKeyEditor,
310
+ doExit,
311
+ setPickerState,
312
+ setConfirmState,
313
+ setInputText,
314
+ });
315
+ }
316
+ finally {
317
+ if (blocksInput)
318
+ setBusy(false);
319
+ }
286
320
  return;
287
321
  }
288
322
  setHistory((h) => [...h, trimmed]);
289
- await sessionRef.current.send(trimmed);
323
+ const base = sessionRef.current.messages.filter((m) => m.role === AgentNS.Role.User).length;
324
+ setPendingUser({ text: trimmed, base });
325
+ setBusy(true);
326
+ try {
327
+ await sessionRef.current.send(trimmed);
328
+ }
329
+ finally {
330
+ setBusy(false);
331
+ setPendingUser(null);
332
+ }
290
333
  };
291
334
  const doExit = () => {
292
- // 会话已由 ConversationPersistPlugin 实时落盘,退出无需再询问是否保存
293
335
  exit("done");
294
336
  };
295
337
  // 输入处理
296
338
  useInput((char, key) => {
297
- // 启动失败:给出「按 k 打开配置中心」的出路,而不是只能退出
298
339
  if (bootError) {
299
340
  if (char === "k" || char === "K") {
300
341
  void openWizard({ kind: "menu" });
@@ -304,10 +345,8 @@ export function Chat(props) {
304
345
  exit("done");
305
346
  return;
306
347
  }
307
- // 终端应答序列(如 Kitty 查询应答 `[?0u`)不是用户输入,丢弃
308
348
  if (isTerminalReply(char))
309
349
  return;
310
- // 翻页滚动(回看历史)
311
350
  if (key.pageUp) {
312
351
  scrollByPage(-1);
313
352
  return;
@@ -316,9 +355,6 @@ export function Chat(props) {
316
355
  scrollByPage(1);
317
356
  return;
318
357
  }
319
- // 换行:Ctrl+Enter / Alt+Enter / Shift+Enter
320
- // (仅当终端**原生**以 Kitty CSI-u 序列上报这些组合键时才生效 —— 本 CLI 不再
321
- // 主动查询/开启该协议,见 tui/index.tsx 的 RENDER_OPTIONS;换行主推 Ctrl+N)
322
358
  if (key.return && (key.ctrl || key.meta || key.shift)) {
323
359
  insertAtCursor("\n");
324
360
  return;
@@ -335,7 +371,7 @@ export function Chat(props) {
335
371
  return;
336
372
  }
337
373
  if (char === "l" && key.ctrl) {
338
- exit({ restart: true, messages: sessionRef.current?.messages, clearTranscript: true });
374
+ clearTranscript();
339
375
  return;
340
376
  }
341
377
  if (char === "u" && key.ctrl) {
@@ -346,13 +382,11 @@ export function Chat(props) {
346
382
  insertAtCursor("\n");
347
383
  return;
348
384
  }
349
- // 换行:Ctrl+N(不依赖终端协议,兼容性最好)
350
385
  if (char === "n" && key.ctrl) {
351
386
  insertAtCursor("\n");
352
387
  return;
353
388
  }
354
389
  if (key.return) {
355
- // 斜杠候选菜单可见时回车直接执行高亮命令,避免把半截输入(如仅 `/`)当命令提交
356
390
  void runSubmit(resolveSubmitText(input, hints, menuIndex));
357
391
  return;
358
392
  }
@@ -361,7 +395,6 @@ export function Chat(props) {
361
395
  return;
362
396
  }
363
397
  if (key.upArrow || key.downArrow) {
364
- // Shift / Alt + ↑↓:单行滚动(优先于历史召回)
365
398
  if (key.shift || key.meta) {
366
399
  scrollByLine(key.upArrow ? -1 : 1);
367
400
  return;
@@ -370,7 +403,6 @@ export function Chat(props) {
370
403
  setMenuIndex((i) => key.upArrow ? (i - 1 + hints.length) % hints.length : (i + 1) % hints.length);
371
404
  return;
372
405
  }
373
- // 历史召回
374
406
  if (key.upArrow && history.length > 0) {
375
407
  const idx = historyIndex.current < 0 ? history.length - 1 : Math.max(0, historyIndex.current - 1);
376
408
  historyIndex.current = idx;
@@ -389,7 +421,6 @@ export function Chat(props) {
389
421
  }
390
422
  return;
391
423
  }
392
- // 光标移动:← → 单字符,Ctrl/Alt+← → 跨词,Home / End 到行首 / 行尾
393
424
  if (key.leftArrow) {
394
425
  if (key.ctrl || key.meta)
395
426
  setCursor(wordLeft(input, cursor));
@@ -428,7 +459,36 @@ export function Chat(props) {
428
459
  if (char && !key.ctrl && !key.meta) {
429
460
  insertAtCursor(char);
430
461
  }
431
- }, { isActive: !confirmState && !pickerState && !wizardStep });
462
+ },
463
+ // 生成 / 自动迁移期间主输入框整体失活:此时输入框已被 Spinner 顶替,若仍激活,
464
+ // 按键会被静默吞进隐藏的输入缓冲、待本轮结束后才冒出来(即「迁移过程中输入框
465
+ // 没被拦住」)。失活后改由下方「忙碌期」处理器只放行中止 / 退出 / 回看滚动。
466
+ { isActive: !busy && !confirmState && !pickerState && !wizardStep });
467
+ // 忙碌期(生成 / 迁移中)专用:输入框不可编辑,仅保留「中止(Ctrl+C) / 退出(Ctrl+D) / 回看滚动」。
468
+ useInput((char, key) => {
469
+ if (isTerminalReply(char))
470
+ return;
471
+ if (char === "c" && key.ctrl) {
472
+ sessionRef.current?.abort();
473
+ return;
474
+ }
475
+ if (char === "d" && key.ctrl) {
476
+ void doExit();
477
+ return;
478
+ }
479
+ if (key.pageUp) {
480
+ scrollByPage(-1);
481
+ return;
482
+ }
483
+ if (key.pageDown) {
484
+ scrollByPage(1);
485
+ return;
486
+ }
487
+ if ((key.upArrow || key.downArrow) && (key.shift || key.meta)) {
488
+ scrollByLine(key.upArrow ? -1 : 1);
489
+ return;
490
+ }
491
+ }, { isActive: busy && !confirmState && !pickerState && !wizardStep });
432
492
  // 配置向导:整屏接管(凭据设置 / 配置中心),关闭后回到对话屏
433
493
  if (wizardStep && wizardConfig) {
434
494
  return (_jsx(ConfigWizard, { config: wizardConfig, initialStep: wizardStep, closeOnSave: wizardStep.kind !== "menu", agents: wizardAgents, mcp: wizardMcp ?? undefined, agentStore: wizardAgentStore ?? undefined, onSave: saveConfig, onSaveMcp: async (scope, cfg) => {
@@ -440,16 +500,25 @@ export function Chat(props) {
440
500
  return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsxs(Text, { color: theme.error, wrap: "truncate", children: ["\u2716 \u65E0\u6CD5\u542F\u52A8\u5BF9\u8BDD\uFF1A", bootError] }), _jsx(Text, { color: theme.dim, wrap: "truncate", children: "\u6309 k \u6253\u5F00\u914D\u7F6E\u4E2D\u5FC3\uFF08\u53EF\u8BBE\u7F6E API Key / \u7AEF\u70B9\u5730\u5740\uFF09\u00B7 Enter \u8FD4\u56DE" })] }));
441
501
  }
442
502
  const session = sessionRef.current;
443
- const tokens = session?.lastUsage?.total_tokens;
503
+ const lastTokens = session?.lastUsage?.total_tokens;
504
+ const totalTokens = session?.totalUsage.total_tokens;
444
505
  const cols = columns ?? 80;
506
+ const messages = session?.messages ?? [];
507
+ const userCount = messages.filter((m) => m.role === AgentNS.Role.User).length;
508
+ const showPending = pendingUser != null && userCount <= pendingUser.base;
509
+ const transcript = transcriptLines(messages.slice(transcriptFrom), cols);
510
+ if (showPending) {
511
+ transcript.push(...messageToLines({ id: "__pending_user", role: AgentNS.Role.User, content: pendingUser.text }, cols));
512
+ }
513
+ const noticeTextLines = notice ? noticeLines(notice, cols) : [];
445
514
  const layout = computeChatLayout({
446
515
  columns: cols,
447
516
  rows: usableFrameRows(rows ?? 24),
448
- blocks: state.blocks,
449
- live: state.live,
517
+ transcript,
450
518
  input,
451
519
  busy,
452
520
  hintCount: hints.length,
521
+ noticeCount: noticeTextLines.length,
453
522
  overlay: confirmState ? "confirm" : pickerState ? "picker" : "none",
454
523
  pickerItems: pickerState?.items.length ?? 0,
455
524
  viewTop,
@@ -472,7 +541,7 @@ export function Chat(props) {
472
541
  else {
473
542
  setCursorPosition(undefined);
474
543
  }
475
- return (_jsxs(Box, { flexDirection: "column", width: cols, children: [layout.lines.map((line) => (_jsx(LineView, { line: line }, line.key))), confirmState ? (_jsx(Confirm, { question: confirmState.question, onAnswer: resolveConfirm })) : pickerState ? (_jsx(PickerOverlay, { title: pickerState.title, items: pickerState.items, columns: cols, onPick: resolvePicker })) : (_jsxs(Box, { flexDirection: "column", children: [hints.length > 0 ? _jsx(SlashMenu, { hints: hints, selected: menuIndex }) : null, _jsx(Box, { paddingX: 1, children: _jsx(Text, { color: theme.border, wrap: "truncate", children: "─".repeat(Math.max(1, cols - 2)) }) }), _jsx(Box, { flexDirection: "column", paddingX: 1, children: busy ? (_jsx(Spinner, { label: "\u601D\u8003\u4E2D\u2026" })) : (bodyLines.map((line, i) => {
544
+ return (_jsxs(Box, { flexDirection: "column", width: cols, children: [layout.lines.map((line) => (_jsx(LineView, { line: line }, line.key))), confirmState ? (_jsx(Confirm, { question: confirmState.question, onAnswer: resolveConfirm })) : pickerState ? (_jsx(PickerOverlay, { title: pickerState.title, items: pickerState.items, columns: cols, onPick: resolvePicker })) : (_jsxs(Box, { flexDirection: "column", children: [noticeTextLines.length > 0 ? (_jsx(Box, { flexDirection: "column", paddingX: 1, children: noticeTextLines.map((line, i) => (_jsx(Text, { color: notice?.tone === "error" ? theme.error : theme.dim, wrap: "truncate", children: line }, i))) })) : null, hints.length > 0 ? _jsx(SlashMenu, { hints: hints, selected: menuIndex }) : null, _jsx(Box, { paddingX: 1, children: _jsx(Text, { color: theme.border, wrap: "truncate", children: "─".repeat(Math.max(1, cols - 2)) }) }), _jsx(Box, { flexDirection: "column", paddingX: 1, children: busy ? (_jsx(Spinner, { label: "\u601D\u8003\u4E2D\u2026" })) : (bodyLines.map((line, i) => {
476
545
  const prompt = i === 0 ? (_jsx(Text, { color: theme.brand[0], bold: true, children: "❯ " })) : (_jsx(Text, { children: " " }));
477
546
  if (isPlaceholder) {
478
547
  return (_jsxs(Text, { wrap: "truncate", children: [prompt, _jsx(Text, { color: theme.faint, children: line }), i === bodyLines.length - 1 ? (_jsx(Text, { color: theme.brand[1], children: "\u258F" })) : null] }, i));
@@ -485,7 +554,7 @@ export function Chat(props) {
485
554
  return (_jsxs(Text, { wrap: "truncate", children: [prompt, _jsx(Text, { children: before }), _jsx(Text, { inverse: true, color: theme.brand[0], children: at ?? " " }), _jsx(Text, { children: after })] }, i));
486
555
  }
487
556
  return (_jsxs(Text, { wrap: "truncate", children: [prompt, _jsx(Text, { children: line })] }, i));
488
- })) })] })), _jsx(StatusBar, { model: props.modelId, agent: props.agentId ?? "default", tokens: tokens, busy: busy, hint: !ready
557
+ })) })] })), _jsx(StatusBar, { model: props.modelId, agent: props.agentId ?? "default", lastTokens: lastTokens, totalTokens: totalTokens, busy: busy, hint: !ready
489
558
  ? "初始化中…"
490
559
  : layout.scrolled
491
560
  ? "↕ 滚动中 · PgUp/PgDn 翻页 · 发送回到底部"
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/tui/screens/chat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/tui/screens/chat.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * 流式事件合帧缓冲 —— 把高频的流式 delta 合并为低频「帧」再交给 React 上屏。
3
+ *
4
+ * 背景:AI 流式响应每秒可产生数十到上百个 delta。若每个 delta 都触发一次 React
5
+ * 更新,等价于每个 delta 一次「全量布局重算(含语法高亮 / 折行)+ 整屏重绘」。
6
+ * Ink 每帧输出的是**整屏**(先擦除旧帧再写新帧,见 `ink/build/ink.js`),并不做
7
+ * 行级差分;在 SSH 弱网(低带宽 / 高延迟)下,这会迅速填满 pty 缓冲、阻塞
8
+ * stdout(Linux 上 TTY 写是同步阻塞的),表现为界面卡死,甚至把连接拖断。
9
+ *
10
+ * 本模块把 delta 先攒进缓冲,按固定间隔(默认 {@link STREAM_FRAME_MS} 毫秒,
11
+ * 约 16fps)批量吐出;`user` / `done` / `error` 这类需要即时反馈或收尾的事件则
12
+ * 立即上屏(flush),避免「按下回车半天不显示」或「回答完了还在转圈」。
13
+ *
14
+ * 纯逻辑、不依赖 React,可独立单测。
15
+ */
16
+ /**
17
+ * 合帧间隔(毫秒):约 16fps。
18
+ *
19
+ * 刻意**低于** Ink 默认的 30fps 输出节流,让「主动合帧」成为上屏频率的主控,
20
+ * 而不是叠加在 Ink 节流之上。
21
+ */
22
+ export declare const STREAM_FRAME_MS = 60;
23
+ /**
24
+ * 需要立即上屏(不等下一帧)的事件类型:
25
+ * - `user`:回车即回显,交互反馈不能延迟;
26
+ * - `done` / `error`:本轮收尾 / 报错,立刻落定,避免「结束还挂着 spinner」。
27
+ */
28
+ export declare function isImmediateEvent(type: string): boolean;
29
+ /**
30
+ * 通用合帧缓冲:`push` 入队,按 `delayMs` 节流批量交给 `onFlush`。
31
+ *
32
+ * `immediate=true` 时立即吐出(连同已积压项),用于需要即时反馈的事件。
33
+ */
34
+ export declare class FrameBuffer<T> {
35
+ private readonly onFlush;
36
+ private readonly delayMs;
37
+ private pending;
38
+ private timer;
39
+ constructor(onFlush: (items: T[]) => void, delayMs?: number);
40
+ /** 入队一个事件;`immediate` 为真时立刻吐出(连同已积压的) */
41
+ push(item: T, immediate?: boolean): void;
42
+ /** 立即吐出缓冲(清定时器 + 排空队列);空队列时不做任何事 */
43
+ flushNow(): void;
44
+ /** 丢弃缓冲并清定时器(组件卸载 / 会话重建时调用) */
45
+ dispose(): void;
46
+ }
47
+ //# sourceMappingURL=frame-buffer.d.ts.map