@ai-zen/cli 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (181) hide show
  1. package/CHANGELOG.md +356 -0
  2. package/README.md +99 -28
  3. package/README.zh.md +99 -28
  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/agents-store.d.ts.map +1 -1
  9. package/dist/agents-store.js +40 -3
  10. package/dist/agents-store.js.map +1 -1
  11. package/dist/auto-migrate-confirm.d.ts +43 -0
  12. package/dist/auto-migrate-confirm.d.ts.map +1 -0
  13. package/dist/auto-migrate-confirm.js +46 -0
  14. package/dist/auto-migrate-confirm.js.map +1 -0
  15. package/dist/config-editor.d.ts +4 -4
  16. package/dist/config-editor.d.ts.map +1 -1
  17. package/dist/config-editor.js +6 -8
  18. package/dist/config-editor.js.map +1 -1
  19. package/dist/config.d.ts +23 -2
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +26 -2
  22. package/dist/config.js.map +1 -1
  23. package/dist/conversation-commands/registry.d.ts.map +1 -1
  24. package/dist/conversation-commands/registry.js +4 -1
  25. package/dist/conversation-commands/registry.js.map +1 -1
  26. package/dist/conversation-persist-plugin.d.ts +0 -1
  27. package/dist/conversation-persist-plugin.d.ts.map +1 -1
  28. package/dist/conversation-persist-plugin.js +2 -3
  29. package/dist/conversation-persist-plugin.js.map +1 -1
  30. package/dist/conversation-repository.d.ts +5 -1
  31. package/dist/conversation-repository.d.ts.map +1 -1
  32. package/dist/conversation-repository.js +1 -2
  33. package/dist/conversation-repository.js.map +1 -1
  34. package/dist/handoff-service.d.ts +19 -0
  35. package/dist/handoff-service.d.ts.map +1 -0
  36. package/dist/handoff-service.js +86 -0
  37. package/dist/handoff-service.js.map +1 -0
  38. package/dist/index.js +21 -3
  39. package/dist/index.js.map +1 -1
  40. package/dist/model-switch.d.ts +58 -0
  41. package/dist/model-switch.d.ts.map +1 -0
  42. package/dist/model-switch.js +61 -0
  43. package/dist/model-switch.js.map +1 -0
  44. package/dist/reasoning-effort.d.ts +77 -0
  45. package/dist/reasoning-effort.d.ts.map +1 -0
  46. package/dist/reasoning-effort.js +137 -0
  47. package/dist/reasoning-effort.js.map +1 -0
  48. package/dist/reasoning-presets.d.ts +34 -0
  49. package/dist/reasoning-presets.d.ts.map +1 -0
  50. package/dist/reasoning-presets.js +85 -0
  51. package/dist/reasoning-presets.js.map +1 -0
  52. package/dist/sdk-log.d.ts +48 -0
  53. package/dist/sdk-log.d.ts.map +1 -0
  54. package/dist/sdk-log.js +67 -0
  55. package/dist/sdk-log.js.map +1 -0
  56. package/dist/session-pointer.d.ts +22 -9
  57. package/dist/session-pointer.d.ts.map +1 -1
  58. package/dist/session-pointer.js +55 -23
  59. package/dist/session-pointer.js.map +1 -1
  60. package/dist/stdio-runner.d.ts.map +1 -1
  61. package/dist/stdio-runner.js +15 -13
  62. package/dist/stdio-runner.js.map +1 -1
  63. package/dist/sub-agent-guard-plugin.d.ts +5 -5
  64. package/dist/sub-agent-guard-plugin.d.ts.map +1 -1
  65. package/dist/sub-agent-guard-plugin.js +7 -7
  66. package/dist/sub-agent-guard-plugin.js.map +1 -1
  67. package/dist/tui/chat-session.d.ts +83 -59
  68. package/dist/tui/chat-session.d.ts.map +1 -1
  69. package/dist/tui/chat-session.js +161 -105
  70. package/dist/tui/chat-session.js.map +1 -1
  71. package/dist/tui/components.d.ts +7 -2
  72. package/dist/tui/components.d.ts.map +1 -1
  73. package/dist/tui/components.js +3 -3
  74. package/dist/tui/components.js.map +1 -1
  75. package/dist/tui/config-wizard/engine.js +1 -1
  76. package/dist/tui/config-wizard/engine.js.map +1 -1
  77. package/dist/tui/config-wizard/fields.d.ts +3 -1
  78. package/dist/tui/config-wizard/fields.d.ts.map +1 -1
  79. package/dist/tui/config-wizard/fields.js +58 -6
  80. package/dist/tui/config-wizard/fields.js.map +1 -1
  81. package/dist/tui/config-wizard/menu.d.ts.map +1 -1
  82. package/dist/tui/config-wizard/menu.js +2 -3
  83. package/dist/tui/config-wizard/menu.js.map +1 -1
  84. package/dist/tui/config-wizard/step-defaults.d.ts.map +1 -1
  85. package/dist/tui/config-wizard/step-defaults.js +4 -11
  86. package/dist/tui/config-wizard/step-defaults.js.map +1 -1
  87. package/dist/tui/config-wizard/types.d.ts +18 -3
  88. package/dist/tui/config-wizard/types.d.ts.map +1 -1
  89. package/dist/tui/config-wizard/wizard.d.ts.map +1 -1
  90. package/dist/tui/config-wizard/wizard.js +4 -3
  91. package/dist/tui/config-wizard/wizard.js.map +1 -1
  92. package/dist/tui/highlight.d.ts +3 -2
  93. package/dist/tui/highlight.d.ts.map +1 -1
  94. package/dist/tui/highlight.js +3 -2
  95. package/dist/tui/highlight.js.map +1 -1
  96. package/dist/tui/index.d.ts +1 -0
  97. package/dist/tui/index.d.ts.map +1 -1
  98. package/dist/tui/index.js +87 -40
  99. package/dist/tui/index.js.map +1 -1
  100. package/dist/tui/input-editing.d.ts +49 -0
  101. package/dist/tui/input-editing.d.ts.map +1 -0
  102. package/dist/tui/input-editing.js +87 -0
  103. package/dist/tui/input-editing.js.map +1 -0
  104. package/dist/tui/key-debug.d.ts +62 -0
  105. package/dist/tui/key-debug.d.ts.map +1 -0
  106. package/dist/tui/key-debug.js +92 -0
  107. package/dist/tui/key-debug.js.map +1 -0
  108. package/dist/tui/mouse.d.ts +55 -0
  109. package/dist/tui/mouse.d.ts.map +1 -0
  110. package/dist/tui/mouse.js +74 -0
  111. package/dist/tui/mouse.js.map +1 -0
  112. package/dist/tui/screens/chat-commands.d.ts +12 -2
  113. package/dist/tui/screens/chat-commands.d.ts.map +1 -1
  114. package/dist/tui/screens/chat-commands.js +204 -17
  115. package/dist/tui/screens/chat-commands.js.map +1 -1
  116. package/dist/tui/screens/chat.d.ts +2 -5
  117. package/dist/tui/screens/chat.d.ts.map +1 -1
  118. package/dist/tui/screens/chat.js +460 -98
  119. package/dist/tui/screens/chat.js.map +1 -1
  120. package/dist/tui/screens/frame-buffer.d.ts +47 -0
  121. package/dist/tui/screens/frame-buffer.d.ts.map +1 -0
  122. package/dist/tui/screens/frame-buffer.js +78 -0
  123. package/dist/tui/screens/frame-buffer.js.map +1 -0
  124. package/dist/tui/screens/handoff-choice.d.ts +37 -0
  125. package/dist/tui/screens/handoff-choice.d.ts.map +1 -0
  126. package/dist/tui/screens/handoff-choice.js +41 -0
  127. package/dist/tui/screens/handoff-choice.js.map +1 -0
  128. package/dist/tui/screens/index.d.ts +8 -8
  129. package/dist/tui/screens/index.d.ts.map +1 -1
  130. package/dist/tui/screens/index.js +7 -7
  131. package/dist/tui/screens/index.js.map +1 -1
  132. package/dist/tui/screens/input.d.ts +35 -0
  133. package/dist/tui/screens/input.d.ts.map +1 -1
  134. package/dist/tui/screens/input.js +66 -0
  135. package/dist/tui/screens/input.js.map +1 -1
  136. package/dist/tui/screens/layout.d.ts +13 -3
  137. package/dist/tui/screens/layout.d.ts.map +1 -1
  138. package/dist/tui/screens/layout.js +15 -8
  139. package/dist/tui/screens/layout.js.map +1 -1
  140. package/dist/tui/screens/lines.d.ts +12 -41
  141. package/dist/tui/screens/lines.d.ts.map +1 -1
  142. package/dist/tui/screens/lines.js +87 -95
  143. package/dist/tui/screens/lines.js.map +1 -1
  144. package/dist/tui/screens/messages-view.d.ts +10 -0
  145. package/dist/tui/screens/messages-view.d.ts.map +1 -0
  146. package/dist/tui/screens/messages-view.js +115 -0
  147. package/dist/tui/screens/messages-view.js.map +1 -0
  148. package/dist/tui/screens/notice.d.ts +32 -0
  149. package/dist/tui/screens/notice.d.ts.map +1 -0
  150. package/dist/tui/screens/notice.js +46 -0
  151. package/dist/tui/screens/notice.js.map +1 -0
  152. package/dist/tui/screens/render.d.ts +2 -4
  153. package/dist/tui/screens/render.d.ts.map +1 -1
  154. package/dist/tui/screens/render.js +7 -43
  155. package/dist/tui/screens/render.js.map +1 -1
  156. package/dist/tui/screens/splash.d.ts.map +1 -1
  157. package/dist/tui/screens/splash.js +7 -1
  158. package/dist/tui/screens/splash.js.map +1 -1
  159. package/dist/tui/text.d.ts +12 -2
  160. package/dist/tui/text.d.ts.map +1 -1
  161. package/dist/tui/text.js +17 -3
  162. package/dist/tui/text.js.map +1 -1
  163. package/dist/tui/theme.d.ts +7 -1
  164. package/dist/tui/theme.d.ts.map +1 -1
  165. package/dist/tui/theme.js +15 -3
  166. package/dist/tui/theme.js.map +1 -1
  167. package/dist/types.d.ts +7 -5
  168. package/dist/types.d.ts.map +1 -1
  169. package/package.json +3 -3
  170. package/dist/auto-migrate-confirm-plugin.d.ts +0 -58
  171. package/dist/auto-migrate-confirm-plugin.d.ts.map +0 -1
  172. package/dist/auto-migrate-confirm-plugin.js +0 -61
  173. package/dist/auto-migrate-confirm-plugin.js.map +0 -1
  174. package/dist/migration-service.d.ts +0 -15
  175. package/dist/migration-service.d.ts.map +0 -1
  176. package/dist/migration-service.js +0 -59
  177. package/dist/migration-service.js.map +0 -1
  178. package/dist/tui/screens/state.d.ts +0 -13
  179. package/dist/tui/screens/state.d.ts.map +0 -1
  180. package/dist/tui/screens/state.js +0 -75
  181. package/dist/tui/screens/state.js.map +0 -1
@@ -1,15 +0,0 @@
1
- import { TaskMigrationService } from "@ai-zen/agents-sdk";
2
- import type { ConversationContext } from "./types.js";
3
- /**
4
- * 创建 CLI 迁移服务实例(自动迁移与手动迁移共用同一个实例)。
5
- *
6
- * 迁移前后处理统一收敛于此:保存旧对话 / 开启新会话 / 落盘草稿。
7
- * 自动迁移由 AutoMigratePlugin 触发,手动迁移由 /migrate 命令触发,
8
- * 两者都委托给本服务实例的 migrate(),从而保证行为一致、避免重复实现。
9
- *
10
- * @param ctx 当前会话上下文(先建后回填 migrationService;钩子直接引用该对象)
11
- */
12
- export declare function createMigrationService(ctx: ConversationContext, options?: {
13
- log?: (text: string) => void;
14
- }): TaskMigrationService;
15
- //# sourceMappingURL=migration-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migration-service.d.ts","sourceRoot":"","sources":["../src/migration-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAyB,MAAM,oBAAoB,CAAC;AAOjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,mBAAmB,EACxB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GAC7C,oBAAoB,CAgDtB"}
@@ -1,59 +0,0 @@
1
- import { TaskMigrationService } from "@ai-zen/agents-sdk";
2
- import { saveConversation, conversationRepository, generateConversationId, } from "./conversation-repository.js";
3
- import { writeLastSession } from "./session-pointer.js";
4
- /**
5
- * 创建 CLI 迁移服务实例(自动迁移与手动迁移共用同一个实例)。
6
- *
7
- * 迁移前后处理统一收敛于此:保存旧对话 / 开启新会话 / 落盘草稿。
8
- * 自动迁移由 AutoMigratePlugin 触发,手动迁移由 /migrate 命令触发,
9
- * 两者都委托给本服务实例的 migrate(),从而保证行为一致、避免重复实现。
10
- *
11
- * @param ctx 当前会话上下文(先建后回填 migrationService;钩子直接引用该对象)
12
- */
13
- export function createMigrationService(ctx, options = {}) {
14
- // 进度/结果一律经 `log` 上报(TUI 走 Ink notice 块),不再直接 console.log 污染画面
15
- const log = options.log ?? (() => { });
16
- return new TaskMigrationService({
17
- // CLI 采用物理剔除模式:迁移后不保留历史消息,仅保留系统提示 + 交接断点。
18
- strategy: "prune",
19
- onBeforeMigrate: async (mctx) => {
20
- // 自动迁移由 AutoMigratePlugin 传入 promptTokens/maxTokens;手动迁移为 undefined。
21
- const isAuto = mctx.promptTokens != null && mctx.maxTokens != null;
22
- log(isAuto
23
- ? `📋 检测到上下文即将超限(${mctx.promptTokens}/${mctx.maxTokens} tokens),正在自动生成交接文档以延续对话…`
24
- : "📋 正在生成任务交接文档…");
25
- // 迁移前 agent.messages 仍是完整旧历史,先保存旧对话
26
- await saveConversation(ctx);
27
- log(`✅ 原对话已保存:${ctx.currentName}`);
28
- },
29
- onMigrated: async (mctx) => {
30
- // 迁移开启新会话:分配新的会话 id 与名称
31
- const id = generateConversationId();
32
- ctx.currentId = id;
33
- ctx.currentName = id;
34
- log(`🚀 任务迁移完成,已开启新会话(共 ${mctx.agent.messages.length} 条消息)`);
35
- log("💡 新助手已通过交接文档了解此前的工作,可继续提问。");
36
- // 迁移后立即把新开场白落盘为独立会话文件,并更新「上一轮会话 id」指针,
37
- // 避免迁移发生在 onAfterSend(ConversationPersistPlugin 的 onInnerLoopEnd
38
- // 已不再触发)导致迁移后的新对话未被及时落盘、用户中途退出时丢失。
39
- try {
40
- const existing = await conversationRepository.read(id);
41
- const now = new Date().toISOString();
42
- await conversationRepository.write({
43
- id,
44
- agentId: ctx.agentId || "default",
45
- modelId: ctx.modelId,
46
- messages: mctx.agent.messages,
47
- cwd: process.cwd(),
48
- createdAt: existing?.createdAt ?? now,
49
- updatedAt: now,
50
- });
51
- await writeLastSession(id);
52
- }
53
- catch (err) {
54
- log(`⚠️ 迁移后会话落盘失败:${err?.message ?? err}`);
55
- }
56
- },
57
- });
58
- }
59
- //# sourceMappingURL=migration-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migration-service.js","sourceRoot":"","sources":["../src/migration-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAyB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAAwB,EACxB,UAA4C,EAAE;IAE9C,8DAA8D;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtC,OAAO,IAAI,oBAAoB,CAAC;QAC9B,0CAA0C;QAC1C,QAAQ,EAAE,OAAO;QACjB,eAAe,EAAE,KAAK,EAAE,IAAsB,EAAE,EAAE;YAChD,qEAAqE;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;YACnE,GAAG,CACD,MAAM;gBACJ,CAAC,CAAC,iBAAiB,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,2BAA2B;gBACjF,CAAC,CAAC,gBAAgB,CACrB,CAAC;YACF,oCAAoC;YACpC,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC5B,GAAG,CAAC,YAAY,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,IAAsB,EAAE,EAAE;YAC3C,wBAAwB;YACxB,MAAM,EAAE,GAAG,sBAAsB,EAAE,CAAC;YACpC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC;YACnB,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;YAErB,GAAG,CAAC,sBAAsB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,OAAO,CAAC,CAAC;YAC7D,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAEnC,uCAAuC;YACvC,iEAAiE;YACjE,mCAAmC;YACnC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACrC,MAAM,sBAAsB,CAAC,KAAK,CAAC;oBACjC,EAAE;oBACF,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;oBACjC,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;oBAC7B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;oBAClB,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,GAAG;oBACrC,SAAS,EAAE,GAAG;iBACf,CAAC,CAAC;gBACH,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,GAAG,CAAC,gBAAgB,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,13 +0,0 @@
1
- import { ChatEvent } from "../chat-session.js";
2
- import { Block, LiveAssistant } from "./lines.js";
3
- export interface ChatState {
4
- blocks: Block[];
5
- live: LiveAssistant | null;
6
- }
7
- export type ChatAction = ChatEvent | {
8
- type: "clear";
9
- };
10
- export declare let blockSeq: number;
11
- export declare const nextId: () => number;
12
- export declare function chatReducer(state: ChatState, action: ChatAction): ChatState;
13
- //# sourceMappingURL=state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIlD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvD,eAAO,IAAI,QAAQ,QAAI,CAAC;AACxB,eAAO,MAAM,MAAM,cAAmB,CAAC;AAEvC,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,CAmE3E"}
@@ -1,75 +0,0 @@
1
- export let blockSeq = 0;
2
- export const nextId = () => ++blockSeq;
3
- export function chatReducer(state, action) {
4
- switch (action.type) {
5
- case "clear":
6
- return { blocks: [], live: null };
7
- case "user":
8
- return {
9
- blocks: [...state.blocks, { id: nextId(), kind: "user", text: action.text }],
10
- live: { reasoning: "", content: "", tools: [], sub: null, roundBase: 0 },
11
- };
12
- case "assistant-start":
13
- // 每次 API 请求(含一轮内并行调用后的后续轮次)都会触发:把本轮工具调用的
14
- // 起始下标锚到当前已收集的工具数,使新一轮 index 从 0 起也落到新的一行。
15
- return {
16
- ...state,
17
- live: state.live
18
- ? { ...state.live, roundBase: state.live.tools.length }
19
- : { reasoning: "", content: "", tools: [], sub: null, roundBase: 0 },
20
- };
21
- case "reasoning":
22
- return state.live
23
- ? { ...state, live: { ...state.live, reasoning: state.live.reasoning + action.text } }
24
- : state;
25
- case "content":
26
- return state.live
27
- ? { ...state, live: { ...state.live, content: state.live.content + action.text } }
28
- : state;
29
- case "tool": {
30
- if (!state.live)
31
- return state;
32
- // 落到「本轮起始下标 + 本轮内 index」:同一轮内的分片按 index 归并(并行调用
33
- // 各占一行),跨轮的同 index 因 roundBase 不同而分段,不再相互拼接。
34
- const pos = (state.live.roundBase ?? 0) + Math.max(0, action.index ?? 0);
35
- const tools = [...state.live.tools];
36
- // 保持数组稠密(避免稀疏空位在渲染时被 for...of 迭代为 undefined)
37
- while (tools.length < pos)
38
- tools.push({ name: "", args: "" });
39
- const prev = tools[pos] ?? { name: "", args: "" };
40
- tools[pos] = {
41
- name: prev.name + (action.name ?? ""),
42
- args: prev.args + (action.args ?? ""),
43
- };
44
- return { ...state, live: { ...state.live, tools } };
45
- }
46
- case "subagent-start":
47
- return state.live ? { ...state, live: { ...state.live, sub: action.name } } : state;
48
- case "subagent-end":
49
- return state.live ? { ...state, live: { ...state.live, sub: null } } : state;
50
- case "notice":
51
- return {
52
- ...state,
53
- blocks: [...state.blocks, { id: nextId(), kind: "notice", tone: "info", text: action.text }],
54
- };
55
- case "error":
56
- return {
57
- ...state,
58
- blocks: [...state.blocks, { id: nextId(), kind: "notice", tone: "error", text: action.text }],
59
- };
60
- case "done": {
61
- if (!state.live)
62
- return state;
63
- const { reasoning, content, tools } = state.live;
64
- // 请求失败时 live 可能为空壳(无思考/内容/工具)——不产生空白的 AI 块
65
- const isEmpty = !reasoning.trim() && !content.trim() && !tools.some((t) => t.name);
66
- if (isEmpty)
67
- return { ...state, live: null };
68
- const finished = { id: nextId(), kind: "assistant", reasoning, content, tools };
69
- return { blocks: [...state.blocks, finished], live: null };
70
- }
71
- default:
72
- return state;
73
- }
74
- }
75
- //# sourceMappingURL=state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/tui/screens/state.ts"],"names":[],"mappings":"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"}