@optima-chat/optima-agent 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/.claude/settings.local.json +83 -0
  2. package/.claude/skills/ads/SKILL.md +0 -0
  3. package/.claude/skills/bi/SKILL.md +71 -42
  4. package/.claude/skills/collection/SKILL.md +88 -0
  5. package/.claude/skills/comfy/SKILL.md +138 -122
  6. package/.claude/skills/ffmpeg/SKILL.md +164 -0
  7. package/.claude/skills/homepage/SKILL.md +324 -0
  8. package/.claude/skills/i18n/SKILL.md +0 -0
  9. package/.claude/skills/inventory/SKILL.md +90 -79
  10. package/.claude/skills/markdown-pdf/SKILL.md +72 -0
  11. package/.claude/skills/merchant/SKILL.md +71 -68
  12. package/.claude/skills/order/SKILL.md +193 -21
  13. package/.claude/skills/product/SKILL.md +51 -6
  14. package/.claude/skills/product-page/SKILL.md +200 -0
  15. package/.claude/skills/review/SKILL.md +234 -0
  16. package/.claude/skills/scout/SKILL.md +116 -1
  17. package/.claude/skills/shipping/SKILL.md +193 -0
  18. package/README.md +5 -1
  19. package/dist/bin/bi-cli.d.ts +0 -0
  20. package/dist/bin/bi-cli.d.ts.map +0 -0
  21. package/dist/bin/bi-cli.js.map +0 -0
  22. package/dist/bin/comfy.d.ts +0 -0
  23. package/dist/bin/comfy.d.ts.map +0 -0
  24. package/dist/bin/comfy.js.map +0 -0
  25. package/dist/bin/commerce.d.ts +0 -0
  26. package/dist/bin/commerce.d.ts.map +0 -0
  27. package/dist/bin/commerce.js.map +0 -0
  28. package/dist/bin/google-ads.d.ts +0 -0
  29. package/dist/bin/google-ads.d.ts.map +0 -0
  30. package/dist/bin/google-ads.js.map +0 -0
  31. package/dist/bin/optima.d.ts +0 -0
  32. package/dist/bin/optima.d.ts.map +0 -0
  33. package/dist/bin/optima.js +3 -3
  34. package/dist/bin/optima.js.map +1 -1
  35. package/dist/bin/scout.d.ts +0 -0
  36. package/dist/bin/scout.d.ts.map +0 -0
  37. package/dist/bin/scout.js.map +0 -0
  38. package/dist/bin/serve.d.ts +0 -0
  39. package/dist/bin/serve.d.ts.map +0 -0
  40. package/dist/bin/serve.js +0 -0
  41. package/dist/bin/serve.js.map +0 -0
  42. package/dist/src/agent.d.ts +0 -48
  43. package/dist/src/agent.d.ts.map +1 -1
  44. package/dist/src/agent.js +3 -98
  45. package/dist/src/agent.js.map +1 -1
  46. package/dist/src/auth/device-flow.d.ts +0 -0
  47. package/dist/src/auth/device-flow.d.ts.map +0 -0
  48. package/dist/src/auth/device-flow.js +0 -0
  49. package/dist/src/auth/device-flow.js.map +0 -0
  50. package/dist/src/auth/index.d.ts +0 -0
  51. package/dist/src/auth/index.d.ts.map +0 -0
  52. package/dist/src/auth/index.js +0 -0
  53. package/dist/src/auth/index.js.map +0 -0
  54. package/dist/src/auth/token.d.ts +0 -0
  55. package/dist/src/auth/token.d.ts.map +0 -0
  56. package/dist/src/auth/token.js +0 -0
  57. package/dist/src/auth/token.js.map +0 -0
  58. package/dist/src/auth/types.d.ts +0 -0
  59. package/dist/src/auth/types.d.ts.map +0 -0
  60. package/dist/src/auth/types.js +0 -0
  61. package/dist/src/auth/types.js.map +0 -0
  62. package/dist/src/config.d.ts +0 -0
  63. package/dist/src/config.d.ts.map +0 -0
  64. package/dist/src/config.js +0 -0
  65. package/dist/src/config.js.map +0 -0
  66. package/dist/src/hooks-loader.d.ts +6 -0
  67. package/dist/src/hooks-loader.d.ts.map +1 -0
  68. package/dist/src/hooks-loader.js +215 -0
  69. package/dist/src/hooks-loader.js.map +1 -0
  70. package/dist/src/index.d.ts +3 -3
  71. package/dist/src/index.d.ts.map +1 -1
  72. package/dist/src/index.js +1 -1
  73. package/dist/src/index.js.map +1 -1
  74. package/dist/src/server/index.d.ts +0 -0
  75. package/dist/src/server/index.d.ts.map +0 -0
  76. package/dist/src/server/index.js +1 -1
  77. package/dist/src/server/index.js.map +1 -1
  78. package/dist/src/server/types.d.ts +0 -0
  79. package/dist/src/server/types.d.ts.map +0 -0
  80. package/dist/src/server/types.js +0 -0
  81. package/dist/src/server/types.js.map +0 -0
  82. package/dist/src/system-prompt.d.ts +0 -0
  83. package/dist/src/system-prompt.d.ts.map +1 -1
  84. package/dist/src/system-prompt.js +10 -3
  85. package/dist/src/system-prompt.js.map +1 -1
  86. package/dist/src/tools/memory.d.ts +0 -0
  87. package/dist/src/tools/memory.d.ts.map +0 -0
  88. package/dist/src/tools/memory.js +0 -0
  89. package/dist/src/tools/memory.js.map +0 -0
  90. package/dist/src/types.d.ts +1 -11
  91. package/dist/src/types.d.ts.map +1 -1
  92. package/dist/src/types.js +0 -0
  93. package/dist/src/types.js.map +0 -0
  94. package/dist/src/ui/App.d.ts +6 -0
  95. package/dist/src/ui/App.d.ts.map +1 -0
  96. package/dist/src/ui/App.js +164 -0
  97. package/dist/src/ui/App.js.map +1 -0
  98. package/dist/src/ui/components/Composer.d.ts +10 -0
  99. package/dist/src/ui/components/Composer.d.ts.map +1 -0
  100. package/dist/src/ui/components/Composer.js +13 -0
  101. package/dist/src/ui/components/Composer.js.map +1 -0
  102. package/dist/src/ui/components/Header.d.ts +7 -0
  103. package/dist/src/ui/components/Header.d.ts.map +1 -0
  104. package/dist/src/ui/components/Header.js +7 -0
  105. package/dist/src/ui/components/Header.js.map +1 -0
  106. package/dist/src/ui/components/Message.d.ts +12 -0
  107. package/dist/src/ui/components/Message.d.ts.map +1 -0
  108. package/dist/src/ui/components/Message.js +21 -0
  109. package/dist/src/ui/components/Message.js.map +1 -0
  110. package/dist/src/ui/components/MessageList.d.ts +9 -0
  111. package/dist/src/ui/components/MessageList.d.ts.map +1 -0
  112. package/dist/src/ui/components/MessageList.js +18 -0
  113. package/dist/src/ui/components/MessageList.js.map +1 -0
  114. package/dist/src/ui/components/Spinner.d.ts +6 -0
  115. package/dist/src/ui/components/Spinner.d.ts.map +1 -0
  116. package/dist/src/ui/components/Spinner.js +7 -0
  117. package/dist/src/ui/components/Spinner.js.map +1 -0
  118. package/dist/src/ui/components/StatusBar.d.ts +11 -0
  119. package/dist/src/ui/components/StatusBar.d.ts.map +1 -0
  120. package/dist/src/ui/components/StatusBar.js +7 -0
  121. package/dist/src/ui/components/StatusBar.js.map +1 -0
  122. package/dist/src/ui/components/index.d.ts +7 -0
  123. package/dist/src/ui/components/index.d.ts.map +1 -0
  124. package/dist/src/ui/components/index.js +7 -0
  125. package/dist/src/ui/components/index.js.map +1 -0
  126. package/dist/src/ui/conversation-manager.d.ts +10 -9
  127. package/dist/src/ui/conversation-manager.d.ts.map +1 -1
  128. package/dist/src/ui/conversation-manager.js +35 -2
  129. package/dist/src/ui/conversation-manager.js.map +1 -1
  130. package/dist/src/ui/headless-types.d.ts +85 -4
  131. package/dist/src/ui/headless-types.d.ts.map +1 -1
  132. package/dist/src/ui/headless-types.js +0 -0
  133. package/dist/src/ui/headless-types.js.map +0 -0
  134. package/dist/src/ui/headless.d.ts +14 -4
  135. package/dist/src/ui/headless.d.ts.map +1 -1
  136. package/dist/src/ui/headless.js +311 -139
  137. package/dist/src/ui/headless.js.map +1 -1
  138. package/dist/src/ui/index.d.ts +0 -0
  139. package/dist/src/ui/index.d.ts.map +0 -0
  140. package/dist/src/ui/index.js +0 -0
  141. package/dist/src/ui/index.js.map +0 -0
  142. package/dist/src/ui/stream.d.ts +0 -0
  143. package/dist/src/ui/stream.d.ts.map +1 -1
  144. package/dist/src/ui/stream.js +27 -5
  145. package/dist/src/ui/stream.js.map +1 -1
  146. package/dist/src/validation/error-formatter.d.ts +21 -0
  147. package/dist/src/validation/error-formatter.d.ts.map +1 -0
  148. package/dist/src/validation/error-formatter.js +98 -0
  149. package/dist/src/validation/error-formatter.js.map +1 -0
  150. package/dist/src/validation/index.d.ts +10 -0
  151. package/dist/src/validation/index.d.ts.map +1 -0
  152. package/dist/src/validation/index.js +10 -0
  153. package/dist/src/validation/index.js.map +1 -0
  154. package/dist/src/validation/json-validator.d.ts +25 -0
  155. package/dist/src/validation/json-validator.d.ts.map +1 -0
  156. package/dist/src/validation/json-validator.js +173 -0
  157. package/dist/src/validation/json-validator.js.map +1 -0
  158. package/dist/src/validation/schema.d.ts +353 -0
  159. package/dist/src/validation/schema.d.ts.map +1 -0
  160. package/dist/src/validation/schema.js +57 -0
  161. package/dist/src/validation/schema.js.map +1 -0
  162. package/dist/src/validation/suggestions.d.ts +25 -0
  163. package/dist/src/validation/suggestions.d.ts.map +1 -0
  164. package/dist/src/validation/suggestions.js +144 -0
  165. package/dist/src/validation/suggestions.js.map +1 -0
  166. package/dist/src/validation/types.d.ts +40 -0
  167. package/dist/src/validation/types.d.ts.map +1 -0
  168. package/dist/src/validation/types.js +5 -0
  169. package/dist/src/validation/types.js.map +1 -0
  170. package/dist/src/validation/yaml-validator.d.ts +25 -0
  171. package/dist/src/validation/yaml-validator.d.ts.map +1 -0
  172. package/dist/src/validation/yaml-validator.js +177 -0
  173. package/dist/src/validation/yaml-validator.js.map +1 -0
  174. package/dist/src/version.d.ts +0 -0
  175. package/dist/src/version.d.ts.map +0 -0
  176. package/dist/src/version.js +0 -0
  177. package/dist/src/version.js.map +0 -0
  178. package/package.json +1 -1
  179. package/.claude/skills/storefront/SKILL.md +0 -532
@@ -1,23 +1,23 @@
1
1
  import { createInterface } from "readline";
2
2
  import { ConversationManager } from "./conversation-manager.js";
3
3
  /**
4
- * Headless 模式 - stdin/stdout JSON 协议
5
- * 兼容 ai-cli 的消息格式
4
+ * Headless 模式 - 参数化版本
6
5
  *
7
- * 此函数会阻塞,持续监听 stdin,直到进程被终止
6
+ * 支持两种运行模式:
7
+ * - Docker 模式:stdin/stdout 通信,永久运行
8
+ * - Lambda 模式:自定义输出和消息源,处理完退出
9
+ *
10
+ * @param options - 配置选项
8
11
  */
9
- export async function startHeadlessMode(options = {}) {
10
- // 待处理的问题(用于 AskUserQuestion 工具)
11
- // request_id -> { resolve, reject, conversationId }
12
- const pendingQuestions = new Map();
12
+ export async function startHeadlessMode(options) {
13
+ const { cwd = process.cwd(), model = "claude-sonnet-4-5-20250929", streamFormat = "content", sendOutput, waitForAnswer, runForever = true, getNextMessage, restoreConversations, } = options;
13
14
  // 生成唯一的 request_id
14
15
  let requestIdCounter = 0;
15
16
  function generateRequestId() {
16
17
  return `ask_question_${Date.now()}_${++requestIdCounter}`;
17
18
  }
18
19
  // canUseTool 回调:处理 AskUserQuestion 工具
19
- const canUseTool = async (toolName, input, options) => {
20
- const { conversationId } = options;
20
+ const canUseTool = async (toolName, input, conversationId) => {
21
21
  if (toolName === "AskUserQuestion") {
22
22
  // 生成唯一 request_id
23
23
  const requestId = generateRequestId();
@@ -28,92 +28,54 @@ export async function startHeadlessMode(options = {}) {
28
28
  request_id: requestId,
29
29
  questions: input.questions,
30
30
  });
31
- // 等待前端回复(无超时限制,支持用户随时回答)
32
- return new Promise((resolve, reject) => {
33
- pendingQuestions.set(requestId, {
34
- resolve: (answers) => {
35
- resolve({
36
- behavior: "allow",
37
- updatedInput: { questions: input.questions, answers },
38
- });
39
- },
40
- reject,
41
- conversationId,
42
- });
43
- }).catch((error) => {
44
- // 连接断开或用户取消,返回 deny
31
+ // 使用外部提供的 waitForAnswer 等待用户回答
32
+ try {
33
+ const answers = await waitForAnswer(requestId, conversationId);
34
+ return {
35
+ behavior: "allow",
36
+ updatedInput: { questions: input.questions, answers },
37
+ };
38
+ }
39
+ catch (error) {
40
+ // 超时或取消,返回 deny
45
41
  return {
46
42
  behavior: "deny",
47
43
  message: error instanceof Error ? error.message : "Question cancelled",
48
44
  };
49
- });
45
+ }
50
46
  }
51
47
  // 其他工具直接放行
52
48
  return { behavior: "allow", updatedInput: input };
53
49
  };
50
+ // 打印启动诊断信息
51
+ console.error(`[Headless] Starting with cwd: ${cwd}`);
52
+ console.error(`[Headless] Model: ${model}`);
53
+ console.error(`[Headless] HOME: ${process.env.HOME}`);
54
+ console.error(`[Headless] USER: ${process.env.USER || process.env.USERNAME || 'unknown'}`);
54
55
  const conversationManager = new ConversationManager({
55
- ...options,
56
+ cwd,
57
+ model,
56
58
  canUseTool,
57
59
  });
58
- // 输出 JSON 消息到 stdout
59
- function sendOutput(event) {
60
- console.log(JSON.stringify(event));
60
+ // 恢复对话(如果有)
61
+ if (restoreConversations && restoreConversations.length > 0) {
62
+ console.error(`[Headless] Restoring ${restoreConversations.length} conversations`);
63
+ conversationManager.restore(restoreConversations);
64
+ sendOutput({
65
+ type: "info",
66
+ info: {
67
+ message: `Restored ${restoreConversations.length} conversations`,
68
+ },
69
+ });
61
70
  }
62
71
  // 发送初始化消息
72
+ console.error(`[Headless] Initialization complete`);
63
73
  sendOutput({
64
74
  type: "info",
65
75
  info: {
66
- message: `Optima Agent ready (model: ${options.model || "claude-sonnet-4-5-20250929"}, workspace: ${options.cwd || process.cwd()})`,
76
+ message: `Optima Agent ready (model: ${model}, workspace: ${cwd})`,
67
77
  },
68
78
  });
69
- // 创建 readline 接口
70
- const rl = createInterface({
71
- input: process.stdin,
72
- output: process.stdout,
73
- terminal: false,
74
- });
75
- // 处理每一行 JSON 输入
76
- rl.on("line", async (line) => {
77
- try {
78
- const input = JSON.parse(line);
79
- await handleInput(input);
80
- }
81
- catch (error) {
82
- sendOutput({
83
- type: "error",
84
- error: {
85
- message: `Invalid input: ${error instanceof Error ? error.message : "Unknown error"}`,
86
- code: "INVALID_INPUT",
87
- },
88
- });
89
- }
90
- });
91
- // 处理 stdin 关闭
92
- rl.on("close", () => {
93
- console.error("[Headless] stdin closed, continuing to run. Send SIGINT/SIGTERM to exit.");
94
- });
95
- // 处理进程终止信号
96
- process.on("SIGINT", () => {
97
- // 清理所有待处理的问题
98
- for (const [requestId, pending] of pendingQuestions) {
99
- pending.reject(new Error("Process terminated"));
100
- }
101
- pendingQuestions.clear();
102
- process.exit(0);
103
- });
104
- process.on("SIGTERM", () => {
105
- // 清理所有待处理的问题
106
- for (const [requestId, pending] of pendingQuestions) {
107
- pending.reject(new Error("Process terminated"));
108
- }
109
- pendingQuestions.clear();
110
- process.exit(0);
111
- });
112
- // 永久等待,保持函数不返回(类似 ai-cli 的 await headless.start())
113
- // 进程只能通过 SIGINT/SIGTERM 退出
114
- await new Promise(() => {
115
- // 永不 resolve,保持函数阻塞
116
- });
117
79
  // 处理输入消息
118
80
  async function handleInput(input) {
119
81
  switch (input.type) {
@@ -122,9 +84,9 @@ export async function startHeadlessMode(options = {}) {
122
84
  sendOutput({
123
85
  type: "init",
124
86
  init: {
125
- model: options.model || "claude-sonnet-4-5-20250929",
87
+ model,
126
88
  maxContextTokens: 200000,
127
- workspaceDir: options.cwd || process.cwd(),
89
+ workspaceDir: cwd,
128
90
  },
129
91
  });
130
92
  break;
@@ -142,7 +104,7 @@ export async function startHeadlessMode(options = {}) {
142
104
  });
143
105
  return;
144
106
  }
145
- await handleMessage(msgInput.conversation_id, msgInput.content);
107
+ await handleMessage(msgInput.conversation_id, msgInput.content, msgInput.streamFormat);
146
108
  break;
147
109
  }
148
110
  case "abort": {
@@ -159,13 +121,6 @@ export async function startHeadlessMode(options = {}) {
159
121
  }
160
122
  case "delete_conversation": {
161
123
  const deleteInput = input;
162
- // 清理该会话的所有待处理问题
163
- for (const [requestId, pending] of pendingQuestions) {
164
- if (pending.conversationId === deleteInput.conversation_id) {
165
- pending.reject(new Error("Conversation deleted"));
166
- pendingQuestions.delete(requestId);
167
- }
168
- }
169
124
  const deleted = conversationManager.delete(deleteInput.conversation_id);
170
125
  if (deleted) {
171
126
  sendOutput({
@@ -188,13 +143,6 @@ export async function startHeadlessMode(options = {}) {
188
143
  }
189
144
  case "reset_conversation": {
190
145
  const resetInput = input;
191
- // 清理该会话的所有待处理问题
192
- for (const [requestId, pending] of pendingQuestions) {
193
- if (pending.conversationId === resetInput.conversation_id) {
194
- pending.reject(new Error("Conversation reset"));
195
- pendingQuestions.delete(requestId);
196
- }
197
- }
198
146
  conversationManager.reset(resetInput.conversation_id);
199
147
  sendOutput({
200
148
  type: "info",
@@ -216,33 +164,44 @@ export async function startHeadlessMode(options = {}) {
216
164
  break;
217
165
  }
218
166
  case "answer_question": {
167
+ // 在参数化模式下,answer_question 应该通过 waitForAnswer 回调处理
168
+ // 这里只是为了兼容性保留,通常不会走到这里
219
169
  const answerInput = input;
220
- const pending = pendingQuestions.get(answerInput.request_id);
221
- if (pending) {
222
- pendingQuestions.delete(answerInput.request_id);
223
- pending.resolve(answerInput.answers);
224
- }
225
- else {
226
- sendOutput({
227
- type: "error",
228
- error: {
229
- message: `Question request ${answerInput.request_id} not found or already answered`,
230
- code: "REQUEST_NOT_FOUND",
231
- },
232
- });
233
- }
170
+ sendOutput({
171
+ type: "error",
172
+ error: {
173
+ message: `Unexpected answer_question message for ${answerInput.request_id}. In parameterized mode, answers should be provided via waitForAnswer callback.`,
174
+ code: "UNEXPECTED_ANSWER",
175
+ },
176
+ });
177
+ break;
178
+ }
179
+ case "ping": {
180
+ sendOutput({
181
+ type: "pong",
182
+ timestamp: Date.now(),
183
+ });
234
184
  break;
235
185
  }
236
186
  }
237
187
  }
238
188
  // 处理用户消息
239
- async function handleMessage(conversationId, content) {
189
+ async function handleMessage(conversationId, content, messageStreamFormat, isRetry = false) {
190
+ // 使用消息级别的 streamFormat,如果没有则使用全局配置
191
+ const effectiveStreamFormat = messageStreamFormat ?? streamFormat;
192
+ console.error(`[Headless] Processing message for conversation ${conversationId}${isRetry ? ' (retry)' : ''}`);
193
+ console.error(`[Headless] Content: ${content.substring(0, 100)}${content.length > 100 ? '...' : ''}`);
194
+ console.error(`[Headless] Stream format: ${effectiveStreamFormat}`);
195
+ // 检查是否有旧的 session ID(用于判断是否需要重试逻辑)
196
+ const hasExistingSessionId = conversationManager.hasSessionId(conversationId);
197
+ console.error(`[Headless] Has existing session ID: ${hasExistingSessionId}`);
240
198
  // 立即发送 thinking 状态,让前端显示加载动画
241
199
  sendOutput({
242
200
  type: "thinking",
243
201
  conversation_id: conversationId,
244
202
  });
245
203
  const { state, agent } = conversationManager.getOrCreate(conversationId);
204
+ console.error(`[Headless] Agent created, starting chat...`);
246
205
  const abortController = new AbortController();
247
206
  conversationManager.setAbortController(conversationId, abortController);
248
207
  let toolCallCounter = 0;
@@ -252,47 +211,89 @@ export async function startHeadlessMode(options = {}) {
252
211
  const totalTokens = { input: 0, output: 0 };
253
212
  const modelTokens = {};
254
213
  try {
255
- for await (const msg of agent.chat(content, { signal: abortController.signal })) {
214
+ for await (const msg of agent.chat(content, { signal: abortController.signal, streamFormat: effectiveStreamFormat })) {
256
215
  // 保存 claude_sdk_session_id
257
216
  if ("session_id" in msg && msg.session_id) {
258
217
  conversationManager.updateClaudeSdkSessionId(conversationId, msg.session_id);
259
218
  }
219
+ // 处理 text_delta 事件(delta 流式模式)
220
+ if (msg.type === "text_delta") {
221
+ const deltaMsg = msg;
222
+ sendOutput({
223
+ type: "text_delta",
224
+ conversation_id: conversationId,
225
+ delta: { text: deltaMsg.delta.text },
226
+ });
227
+ }
260
228
  // 处理 assistant 消息
261
- if (msg.type === "assistant" && msg.message?.content) {
262
- for (const block of msg.message.content) {
263
- if (block.type === "text") {
264
- sendOutput({
265
- type: "content",
266
- conversation_id: conversationId,
267
- content: {
268
- text: block.text,
269
- },
270
- });
271
- }
272
- else if (block.type === "tool_use") {
273
- toolCallCounter++;
274
- // 保存 tool_use_id -> tool_name 映射
275
- toolNameMap.set(block.id, block.name);
276
- sendOutput({
277
- type: "tool_call",
278
- conversation_id: conversationId,
279
- tool_call: {
280
- id: block.id,
281
- name: block.name,
282
- arguments: typeof block.input === "string" ? block.input : JSON.stringify(block.input),
283
- },
284
- });
229
+ if (msg.type === "assistant" && msg.message) {
230
+ // 先处理 usage 并发送进度事件
231
+ if (msg.message.usage) {
232
+ const usage = msg.message.usage;
233
+ // 计算本次 API 调用的 token
234
+ const currentInputTokens = (usage.input_tokens ?? 0) +
235
+ (usage.cache_read_input_tokens ?? 0) +
236
+ (usage.cache_creation_input_tokens ?? 0);
237
+ const currentOutputTokens = usage.output_tokens ?? 0;
238
+ // 累积到会话总计
239
+ totalTokens.input += currentInputTokens;
240
+ totalTokens.output += currentOutputTokens;
241
+ // 发送实时进度事件
242
+ sendOutput({
243
+ type: "progress",
244
+ conversation_id: conversationId,
245
+ progress: {
246
+ total_input_tokens: totalTokens.input,
247
+ total_output_tokens: totalTokens.output,
248
+ current_input_tokens: currentInputTokens,
249
+ current_output_tokens: currentOutputTokens,
250
+ by_model: modelTokens,
251
+ timestamp: Date.now(),
252
+ },
253
+ });
254
+ }
255
+ // 处理消息内容
256
+ if (msg.message.content) {
257
+ for (const block of msg.message.content) {
258
+ if (block.type === "text") {
259
+ // 在 delta 模式下,text 内容已通过 text_delta 事件发送,跳过 content 事件
260
+ if (effectiveStreamFormat !== "delta") {
261
+ sendOutput({
262
+ type: "content",
263
+ conversation_id: conversationId,
264
+ content: {
265
+ text: block.text,
266
+ },
267
+ });
268
+ }
269
+ }
270
+ else if (block.type === "tool_use") {
271
+ toolCallCounter++;
272
+ // 保存 tool_use_id -> tool_name 映射
273
+ toolNameMap.set(block.id, block.name);
274
+ sendOutput({
275
+ type: "tool_call",
276
+ conversation_id: conversationId,
277
+ tool_call: {
278
+ id: block.id,
279
+ name: block.name,
280
+ arguments: typeof block.input === "string" ? block.input : JSON.stringify(block.input),
281
+ },
282
+ });
283
+ }
285
284
  }
286
285
  }
287
286
  }
288
287
  // 处理 tool_result
289
288
  if (msg.type === "user" && msg.message?.content) {
289
+ console.error(`[Headless] Processing user message with ${msg.message.content.length} blocks`);
290
290
  for (const block of msg.message.content) {
291
291
  if (block.type === "tool_result") {
292
292
  const output = typeof block.content === "string" ? block.content : JSON.stringify(block.content);
293
293
  const toolUseId = block.tool_use_id || "";
294
294
  // 从映射中获取工具名称
295
295
  const toolName = toolNameMap.get(toolUseId) || "unknown";
296
+ console.error(`[Headless] Sending tool_result for ${toolName}, tool_call_id: ${toolUseId}`);
296
297
  sendOutput({
297
298
  type: "tool_result",
298
299
  conversation_id: conversationId,
@@ -311,11 +312,10 @@ export async function startHeadlessMode(options = {}) {
311
312
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
312
313
  const modelUsage = msg.modelUsage;
313
314
  if (modelUsage) {
314
- for (const [modelName, model] of Object.entries(modelUsage)) {
315
- const inputTokens = (model.inputTokens ?? 0) + (model.cacheReadInputTokens ?? 0) + (model.cacheCreationInputTokens ?? 0);
316
- const outputTokens = model.outputTokens ?? 0;
317
- totalTokens.input += inputTokens;
318
- totalTokens.output += outputTokens;
315
+ for (const [modelName, modelData] of Object.entries(modelUsage)) {
316
+ const inputTokens = (modelData.inputTokens ?? 0) + (modelData.cacheReadInputTokens ?? 0) + (modelData.cacheCreationInputTokens ?? 0);
317
+ const outputTokens = modelData.outputTokens ?? 0;
318
+ // 注意:totalTokens 已经在 assistant 消息中累加过了,这里只更新 modelTokens
319
319
  if (!modelTokens[modelName]) {
320
320
  modelTokens[modelName] = { input: 0, output: 0 };
321
321
  }
@@ -355,6 +355,57 @@ export async function startHeadlessMode(options = {}) {
355
355
  }
356
356
  catch (error) {
357
357
  const errorMsg = error instanceof Error ? error.message : "Unknown error";
358
+ const errorStack = error instanceof Error ? error.stack : undefined;
359
+ // 打印完整的错误信息到 stderr(调试用)
360
+ console.error(`[Headless] Error in chat: ${errorMsg}`);
361
+ if (errorStack) {
362
+ console.error(`[Headless] Stack trace:\n${errorStack}`);
363
+ }
364
+ // 检测 session 恢复失败的错误(通常是 session ID 过期或损坏)
365
+ // 典型的错误模式:
366
+ // - "Claude Code process exited with code 1" (SDK ProcessTransport 错误)
367
+ // - "Session not found" 或 "Invalid session"
368
+ // - 其他与 session/resume 相关的错误
369
+ const isSessionError = errorMsg.includes("process exited") ||
370
+ errorMsg.includes("session") ||
371
+ errorMsg.includes("Session") ||
372
+ errorMsg.includes("resume");
373
+ // 如果是 session 相关错误,且有旧的 session ID,且不是重试
374
+ // 则重置 session ID 并重试一次
375
+ if (isSessionError && hasExistingSessionId && !isRetry) {
376
+ console.error(`[Headless] Session error detected, resetting session ID and retrying...`);
377
+ // 重置 session ID
378
+ conversationManager.resetSessionId(conversationId);
379
+ // 通知前端会话已被重置
380
+ sendOutput({
381
+ type: "info",
382
+ conversation_id: conversationId,
383
+ info: {
384
+ message: "会话已过期,正在重新开始...",
385
+ code: "SESSION_RESET",
386
+ },
387
+ });
388
+ // 重试一次(isRetry = true 防止无限循环)
389
+ try {
390
+ await handleMessage(conversationId, content, messageStreamFormat, true);
391
+ return; // 重试成功,直接返回
392
+ }
393
+ catch (retryError) {
394
+ // 重试也失败了,继续到下面的错误处理
395
+ const retryErrorMsg = retryError instanceof Error ? retryError.message : "Unknown error";
396
+ console.error(`[Headless] Retry also failed: ${retryErrorMsg}`);
397
+ // 更新 errorMsg 为重试的错误
398
+ sendOutput({
399
+ type: "error",
400
+ conversation_id: conversationId,
401
+ error: {
402
+ message: `重试失败: ${retryErrorMsg}`,
403
+ code: "RETRY_FAILED",
404
+ },
405
+ });
406
+ return;
407
+ }
408
+ }
358
409
  if (errorMsg.includes("aborted")) {
359
410
  // abort 也通知前端,确保每条路径都有终止事件
360
411
  sendOutput({
@@ -381,5 +432,126 @@ export async function startHeadlessMode(options = {}) {
381
432
  conversationManager.setAbortController(conversationId, null);
382
433
  }
383
434
  }
435
+ // 如果提供了 getNextMessage,使用它获取消息
436
+ if (getNextMessage) {
437
+ // Lambda 模式:循环获取消息直到返回 null
438
+ while (true) {
439
+ const input = await getNextMessage();
440
+ if (input === null) {
441
+ // 没有更多消息,退出
442
+ break;
443
+ }
444
+ try {
445
+ await handleInput(input);
446
+ }
447
+ catch (error) {
448
+ sendOutput({
449
+ type: "error",
450
+ error: {
451
+ message: `Error handling input: ${error instanceof Error ? error.message : "Unknown error"}`,
452
+ code: "INPUT_ERROR",
453
+ },
454
+ });
455
+ }
456
+ }
457
+ // 如果不是永久运行模式,直接返回
458
+ if (!runForever) {
459
+ return;
460
+ }
461
+ }
462
+ // Docker 模式:使用 readline 监听 stdin
463
+ // 或者 Lambda 模式但设置了 runForever = true
464
+ const rl = createInterface({
465
+ input: process.stdin,
466
+ output: process.stdout,
467
+ terminal: false,
468
+ });
469
+ // 处理每一行 JSON 输入
470
+ rl.on("line", async (line) => {
471
+ try {
472
+ const input = JSON.parse(line);
473
+ await handleInput(input);
474
+ }
475
+ catch (error) {
476
+ sendOutput({
477
+ type: "error",
478
+ error: {
479
+ message: `Invalid input: ${error instanceof Error ? error.message : "Unknown error"}`,
480
+ code: "INVALID_INPUT",
481
+ },
482
+ });
483
+ }
484
+ });
485
+ // 处理 stdin 关闭
486
+ rl.on("close", () => {
487
+ console.error("[Headless] stdin closed, continuing to run. Send SIGINT/SIGTERM to exit.");
488
+ });
489
+ // 保持事件循环活跃的定时器
490
+ // 这是必要的,因为当 stdin 关闭后,如果没有 active handles,
491
+ // Node.js 会检测到事件循环为空并退出进程(即使有 pending promises)
492
+ const keepAliveTimer = setInterval(() => {
493
+ // 每小时运行一次,仅用于保持事件循环活跃
494
+ }, 1000 * 60 * 60);
495
+ // 处理进程终止信号
496
+ const handleExit = () => {
497
+ clearInterval(keepAliveTimer);
498
+ process.exit(0);
499
+ };
500
+ process.on("SIGINT", handleExit);
501
+ process.on("SIGTERM", handleExit);
502
+ // 永久等待,保持函数不返回
503
+ await new Promise(() => {
504
+ // 永不 resolve,保持函数阻塞
505
+ });
506
+ }
507
+ /**
508
+ * Docker 模式的便捷入口
509
+ *
510
+ * 使用默认的 stdin/stdout 通信,永久运行
511
+ */
512
+ export async function startDockerHeadlessMode(options = {}) {
513
+ // 待处理的问题(用于 AskUserQuestion 工具)
514
+ const pendingQuestions = new Map();
515
+ // 创建 readline 接口用于接收 answer_question 消息
516
+ const answerRl = createInterface({
517
+ input: process.stdin,
518
+ output: process.stdout,
519
+ terminal: false,
520
+ });
521
+ // 监听 answer_question 消息
522
+ answerRl.on("line", (line) => {
523
+ try {
524
+ const input = JSON.parse(line);
525
+ if (input.type === "answer_question") {
526
+ const pending = pendingQuestions.get(input.request_id);
527
+ if (pending) {
528
+ pendingQuestions.delete(input.request_id);
529
+ pending.resolve(input.answers);
530
+ }
531
+ }
532
+ }
533
+ catch {
534
+ // 忽略解析错误,让主循环处理
535
+ }
536
+ });
537
+ // 处理进程终止
538
+ const cleanup = () => {
539
+ for (const pending of pendingQuestions.values()) {
540
+ pending.reject(new Error("Process terminated"));
541
+ }
542
+ pendingQuestions.clear();
543
+ };
544
+ process.on("SIGINT", cleanup);
545
+ process.on("SIGTERM", cleanup);
546
+ await startHeadlessMode({
547
+ ...options,
548
+ sendOutput: (event) => console.log(JSON.stringify(event)),
549
+ waitForAnswer: (requestId) => {
550
+ return new Promise((resolve, reject) => {
551
+ pendingQuestions.set(requestId, { resolve, reject });
552
+ });
553
+ },
554
+ runForever: true,
555
+ });
384
556
  }
385
557
  //# sourceMappingURL=headless.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"headless.js","sourceRoot":"","sources":["../../../src/ui/headless.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"headless.js","sourceRoot":"","sources":["../../../src/ui/headless.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/ui/stream.ts"],"names":[],"mappings":"AA0OA,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,QAwmC3C"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/ui/stream.ts"],"names":[],"mappings":"AA0OA,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,QAooC3C"}