@zhijiewang/openharness 0.10.1 → 0.11.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 (313) hide show
  1. package/README.md +83 -13
  2. package/dist/Tool.d.ts.map +1 -1
  3. package/dist/Tool.js +7 -1
  4. package/dist/Tool.js.map +1 -1
  5. package/dist/Tool.test.js +8 -2
  6. package/dist/Tool.test.js.map +1 -1
  7. package/dist/agents/roles.d.ts +25 -0
  8. package/dist/agents/roles.d.ts.map +1 -0
  9. package/dist/agents/roles.js +116 -0
  10. package/dist/agents/roles.js.map +1 -0
  11. package/dist/agents/roles.test.d.ts +2 -0
  12. package/dist/agents/roles.test.d.ts.map +1 -0
  13. package/dist/agents/roles.test.js +38 -0
  14. package/dist/agents/roles.test.js.map +1 -0
  15. package/dist/commands/commands-new.test.d.ts +5 -0
  16. package/dist/commands/commands-new.test.d.ts.map +1 -0
  17. package/dist/commands/commands-new.test.js +132 -0
  18. package/dist/commands/commands-new.test.js.map +1 -0
  19. package/dist/commands/commands.test.js +31 -0
  20. package/dist/commands/commands.test.js.map +1 -1
  21. package/dist/commands/index.d.ts +2 -0
  22. package/dist/commands/index.d.ts.map +1 -1
  23. package/dist/commands/index.js +199 -6
  24. package/dist/commands/index.js.map +1 -1
  25. package/dist/components/REPL.js +1 -1
  26. package/dist/components/REPL.js.map +1 -1
  27. package/dist/git/git.test.js +33 -1
  28. package/dist/git/git.test.js.map +1 -1
  29. package/dist/git/index.d.ts +12 -0
  30. package/dist/git/index.d.ts.map +1 -1
  31. package/dist/git/index.js +47 -2
  32. package/dist/git/index.js.map +1 -1
  33. package/dist/harness/checkpoints.d.ts +36 -0
  34. package/dist/harness/checkpoints.d.ts.map +1 -0
  35. package/dist/harness/checkpoints.js +156 -0
  36. package/dist/harness/checkpoints.js.map +1 -0
  37. package/dist/harness/config.d.ts +3 -0
  38. package/dist/harness/config.d.ts.map +1 -1
  39. package/dist/harness/config.js +35 -2
  40. package/dist/harness/config.js.map +1 -1
  41. package/dist/harness/config.test.js +21 -1
  42. package/dist/harness/config.test.js.map +1 -1
  43. package/dist/harness/hooks-env.test.d.ts +5 -0
  44. package/dist/harness/hooks-env.test.d.ts.map +1 -0
  45. package/dist/harness/hooks-env.test.js +41 -0
  46. package/dist/harness/hooks-env.test.js.map +1 -0
  47. package/dist/harness/hooks.d.ts +7 -0
  48. package/dist/harness/hooks.d.ts.map +1 -1
  49. package/dist/harness/hooks.js +14 -0
  50. package/dist/harness/hooks.js.map +1 -1
  51. package/dist/harness/keybindings.d.ts.map +1 -1
  52. package/dist/harness/keybindings.js +4 -0
  53. package/dist/harness/keybindings.js.map +1 -1
  54. package/dist/harness/memory.d.ts +19 -0
  55. package/dist/harness/memory.d.ts.map +1 -1
  56. package/dist/harness/memory.js +85 -0
  57. package/dist/harness/memory.js.map +1 -1
  58. package/dist/harness/onboarding.d.ts +1 -1
  59. package/dist/harness/onboarding.d.ts.map +1 -1
  60. package/dist/harness/onboarding.js +59 -4
  61. package/dist/harness/onboarding.js.map +1 -1
  62. package/dist/harness/onboarding.test.d.ts +5 -0
  63. package/dist/harness/onboarding.test.d.ts.map +1 -0
  64. package/dist/harness/onboarding.test.js +93 -0
  65. package/dist/harness/onboarding.test.js.map +1 -0
  66. package/dist/harness/rules.d.ts +6 -1
  67. package/dist/harness/rules.d.ts.map +1 -1
  68. package/dist/harness/rules.js +52 -5
  69. package/dist/harness/rules.js.map +1 -1
  70. package/dist/harness/rules.test.js +30 -1
  71. package/dist/harness/rules.test.js.map +1 -1
  72. package/dist/harness/session.d.ts +8 -1
  73. package/dist/harness/session.d.ts.map +1 -1
  74. package/dist/harness/session.js +13 -5
  75. package/dist/harness/session.js.map +1 -1
  76. package/dist/harness/store.d.ts +46 -0
  77. package/dist/harness/store.d.ts.map +1 -0
  78. package/dist/harness/store.js +56 -0
  79. package/dist/harness/store.js.map +1 -0
  80. package/dist/harness/store.test.d.ts +2 -0
  81. package/dist/harness/store.test.d.ts.map +1 -0
  82. package/dist/harness/store.test.js +71 -0
  83. package/dist/harness/store.test.js.map +1 -0
  84. package/dist/harness/submit-handler.d.ts +2 -0
  85. package/dist/harness/submit-handler.d.ts.map +1 -1
  86. package/dist/harness/submit-handler.js +3 -0
  87. package/dist/harness/submit-handler.js.map +1 -1
  88. package/dist/main.js +153 -26
  89. package/dist/main.js.map +1 -1
  90. package/dist/mcp/client.d.ts +2 -0
  91. package/dist/mcp/client.d.ts.map +1 -1
  92. package/dist/mcp/client.js +10 -2
  93. package/dist/mcp/client.js.map +1 -1
  94. package/dist/mcp/loader.d.ts +2 -0
  95. package/dist/mcp/loader.d.ts.map +1 -1
  96. package/dist/mcp/loader.js +34 -18
  97. package/dist/mcp/loader.js.map +1 -1
  98. package/dist/mcp/loader.test.d.ts +7 -0
  99. package/dist/mcp/loader.test.d.ts.map +1 -0
  100. package/dist/mcp/loader.test.js +25 -0
  101. package/dist/mcp/loader.test.js.map +1 -0
  102. package/dist/providers/anthropic-convert.test.d.ts +5 -0
  103. package/dist/providers/anthropic-convert.test.d.ts.map +1 -0
  104. package/dist/providers/anthropic-convert.test.js +98 -0
  105. package/dist/providers/anthropic-convert.test.js.map +1 -0
  106. package/dist/providers/anthropic.d.ts.map +1 -1
  107. package/dist/providers/anthropic.js +23 -4
  108. package/dist/providers/anthropic.js.map +1 -1
  109. package/dist/providers/stream-parsing.test.d.ts +6 -0
  110. package/dist/providers/stream-parsing.test.d.ts.map +1 -0
  111. package/dist/providers/stream-parsing.test.js +174 -0
  112. package/dist/providers/stream-parsing.test.js.map +1 -0
  113. package/dist/query/compress.d.ts +17 -0
  114. package/dist/query/compress.d.ts.map +1 -0
  115. package/dist/query/compress.js +115 -0
  116. package/dist/query/compress.js.map +1 -0
  117. package/dist/query/errors.d.ts +10 -0
  118. package/dist/query/errors.d.ts.map +1 -0
  119. package/dist/query/errors.js +22 -0
  120. package/dist/query/errors.js.map +1 -0
  121. package/dist/query/index.d.ts +15 -0
  122. package/dist/query/index.d.ts.map +1 -0
  123. package/dist/query/index.js +199 -0
  124. package/dist/query/index.js.map +1 -0
  125. package/dist/query/tools.d.ts +17 -0
  126. package/dist/query/tools.d.ts.map +1 -0
  127. package/dist/query/tools.js +129 -0
  128. package/dist/query/tools.js.map +1 -0
  129. package/dist/query/types.d.ts +31 -0
  130. package/dist/query/types.d.ts.map +1 -0
  131. package/dist/query/types.js +5 -0
  132. package/dist/query/types.js.map +1 -0
  133. package/dist/query.d.ts +8 -38
  134. package/dist/query.d.ts.map +1 -1
  135. package/dist/query.js +7 -444
  136. package/dist/query.js.map +1 -1
  137. package/dist/query.test.js +1 -1
  138. package/dist/query.test.js.map +1 -1
  139. package/dist/renderer/cells.d.ts.map +1 -1
  140. package/dist/renderer/cells.js +15 -2
  141. package/dist/renderer/cells.js.map +1 -1
  142. package/dist/renderer/colors.d.ts +8 -0
  143. package/dist/renderer/colors.d.ts.map +1 -0
  144. package/dist/renderer/colors.js +18 -0
  145. package/dist/renderer/colors.js.map +1 -0
  146. package/dist/renderer/diff.test.d.ts +5 -0
  147. package/dist/renderer/diff.test.d.ts.map +1 -0
  148. package/dist/renderer/diff.test.js +140 -0
  149. package/dist/renderer/diff.test.js.map +1 -0
  150. package/dist/renderer/differ.d.ts.map +1 -1
  151. package/dist/renderer/differ.js +1 -10
  152. package/dist/renderer/differ.js.map +1 -1
  153. package/dist/renderer/e2e.test.js +1 -0
  154. package/dist/renderer/e2e.test.js.map +1 -1
  155. package/dist/renderer/image.test.d.ts +5 -0
  156. package/dist/renderer/image.test.d.ts.map +1 -0
  157. package/dist/renderer/image.test.js +66 -0
  158. package/dist/renderer/image.test.js.map +1 -0
  159. package/dist/renderer/index.d.ts +23 -4
  160. package/dist/renderer/index.d.ts.map +1 -1
  161. package/dist/renderer/index.js +203 -118
  162. package/dist/renderer/index.js.map +1 -1
  163. package/dist/renderer/layout.d.ts +5 -1
  164. package/dist/renderer/layout.d.ts.map +1 -1
  165. package/dist/renderer/layout.js +504 -614
  166. package/dist/renderer/layout.js.map +1 -1
  167. package/dist/renderer/markdown.d.ts.map +1 -1
  168. package/dist/renderer/markdown.js +42 -36
  169. package/dist/renderer/markdown.js.map +1 -1
  170. package/dist/renderer/perf.test.js +1 -0
  171. package/dist/renderer/perf.test.js.map +1 -1
  172. package/dist/renderer/session-browser.test.d.ts +6 -0
  173. package/dist/renderer/session-browser.test.d.ts.map +1 -0
  174. package/dist/renderer/session-browser.test.js +95 -0
  175. package/dist/renderer/session-browser.test.js.map +1 -0
  176. package/dist/renderer/ui-ux.test.d.ts +15 -0
  177. package/dist/renderer/ui-ux.test.d.ts.map +1 -0
  178. package/dist/renderer/ui-ux.test.js +470 -0
  179. package/dist/renderer/ui-ux.test.js.map +1 -0
  180. package/dist/repl.d.ts.map +1 -1
  181. package/dist/repl.js +246 -28
  182. package/dist/repl.js.map +1 -1
  183. package/dist/services/StreamingToolExecutor.d.ts.map +1 -1
  184. package/dist/services/StreamingToolExecutor.js +4 -2
  185. package/dist/services/StreamingToolExecutor.js.map +1 -1
  186. package/dist/services/agent-messaging.d.ts +68 -0
  187. package/dist/services/agent-messaging.d.ts.map +1 -0
  188. package/dist/services/agent-messaging.js +121 -0
  189. package/dist/services/agent-messaging.js.map +1 -0
  190. package/dist/services/agent-messaging.test.d.ts +2 -0
  191. package/dist/services/agent-messaging.test.d.ts.map +1 -0
  192. package/dist/services/agent-messaging.test.js +88 -0
  193. package/dist/services/agent-messaging.test.js.map +1 -0
  194. package/dist/services/cron.d.ts +40 -0
  195. package/dist/services/cron.d.ts.map +1 -0
  196. package/dist/services/cron.js +90 -0
  197. package/dist/services/cron.js.map +1 -0
  198. package/dist/services/cron.test.d.ts +2 -0
  199. package/dist/services/cron.test.d.ts.map +1 -0
  200. package/dist/services/cron.test.js +49 -0
  201. package/dist/services/cron.test.js.map +1 -0
  202. package/dist/tools/AgentTool/index.d.ts +9 -0
  203. package/dist/tools/AgentTool/index.d.ts.map +1 -1
  204. package/dist/tools/AgentTool/index.js +89 -6
  205. package/dist/tools/AgentTool/index.js.map +1 -1
  206. package/dist/tools/BashTool/index.d.ts +6 -0
  207. package/dist/tools/BashTool/index.d.ts.map +1 -1
  208. package/dist/tools/BashTool/index.js +39 -1
  209. package/dist/tools/BashTool/index.js.map +1 -1
  210. package/dist/tools/CronTool/index.d.ts +40 -0
  211. package/dist/tools/CronTool/index.d.ts.map +1 -0
  212. package/dist/tools/CronTool/index.js +59 -0
  213. package/dist/tools/CronTool/index.js.map +1 -0
  214. package/dist/tools/EnterWorktreeTool/index.d.ts +12 -0
  215. package/dist/tools/EnterWorktreeTool/index.d.ts.map +1 -0
  216. package/dist/tools/EnterWorktreeTool/index.js +27 -0
  217. package/dist/tools/EnterWorktreeTool/index.js.map +1 -0
  218. package/dist/tools/ExitWorktreeTool/index.d.ts +15 -0
  219. package/dist/tools/ExitWorktreeTool/index.d.ts.map +1 -0
  220. package/dist/tools/ExitWorktreeTool/index.js +33 -0
  221. package/dist/tools/ExitWorktreeTool/index.js.map +1 -0
  222. package/dist/tools/FileEditTool/index.js +4 -4
  223. package/dist/tools/FileEditTool/index.js.map +1 -1
  224. package/dist/tools/FileReadTool/index.d.ts +3 -0
  225. package/dist/tools/FileReadTool/index.d.ts.map +1 -1
  226. package/dist/tools/FileReadTool/index.js +102 -4
  227. package/dist/tools/FileReadTool/index.js.map +1 -1
  228. package/dist/tools/FileWriteTool/index.d.ts.map +1 -1
  229. package/dist/tools/FileWriteTool/index.js +20 -5
  230. package/dist/tools/FileWriteTool/index.js.map +1 -1
  231. package/dist/tools/GlobTool/index.d.ts.map +1 -1
  232. package/dist/tools/GlobTool/index.js +4 -61
  233. package/dist/tools/GlobTool/index.js.map +1 -1
  234. package/dist/tools/GrepTool/index.d.ts +30 -0
  235. package/dist/tools/GrepTool/index.d.ts.map +1 -1
  236. package/dist/tools/GrepTool/index.js +153 -72
  237. package/dist/tools/GrepTool/index.js.map +1 -1
  238. package/dist/tools/KillProcessTool/index.d.ts +18 -0
  239. package/dist/tools/KillProcessTool/index.d.ts.map +1 -0
  240. package/dist/tools/KillProcessTool/index.js +43 -0
  241. package/dist/tools/KillProcessTool/index.js.map +1 -0
  242. package/dist/tools/LSTool/index.d.ts +3 -0
  243. package/dist/tools/LSTool/index.d.ts.map +1 -1
  244. package/dist/tools/LSTool/index.js +44 -29
  245. package/dist/tools/LSTool/index.js.map +1 -1
  246. package/dist/tools/MemoryTool/index.d.ts +30 -0
  247. package/dist/tools/MemoryTool/index.d.ts.map +1 -0
  248. package/dist/tools/MemoryTool/index.js +56 -0
  249. package/dist/tools/MemoryTool/index.js.map +1 -0
  250. package/dist/tools/MultiEditTool/index.d.ts +32 -0
  251. package/dist/tools/MultiEditTool/index.d.ts.map +1 -0
  252. package/dist/tools/MultiEditTool/index.js +53 -0
  253. package/dist/tools/MultiEditTool/index.js.map +1 -0
  254. package/dist/tools/RemoteTriggerTool/index.d.ts +21 -0
  255. package/dist/tools/RemoteTriggerTool/index.d.ts.map +1 -0
  256. package/dist/tools/RemoteTriggerTool/index.js +43 -0
  257. package/dist/tools/RemoteTriggerTool/index.js.map +1 -0
  258. package/dist/tools/SendMessageTool/index.d.ts +18 -0
  259. package/dist/tools/SendMessageTool/index.d.ts.map +1 -0
  260. package/dist/tools/SendMessageTool/index.js +29 -0
  261. package/dist/tools/SendMessageTool/index.js.map +1 -0
  262. package/dist/tools/TaskCreateTool/index.d.ts +6 -0
  263. package/dist/tools/TaskCreateTool/index.d.ts.map +1 -1
  264. package/dist/tools/TaskCreateTool/index.js +8 -2
  265. package/dist/tools/TaskCreateTool/index.js.map +1 -1
  266. package/dist/tools/TaskGetTool/index.d.ts +12 -0
  267. package/dist/tools/TaskGetTool/index.d.ts.map +1 -0
  268. package/dist/tools/TaskGetTool/index.js +50 -0
  269. package/dist/tools/TaskGetTool/index.js.map +1 -0
  270. package/dist/tools/TaskOutputTool/index.d.ts +15 -0
  271. package/dist/tools/TaskOutputTool/index.d.ts.map +1 -0
  272. package/dist/tools/TaskOutputTool/index.js +45 -0
  273. package/dist/tools/TaskOutputTool/index.js.map +1 -0
  274. package/dist/tools/TaskStopTool/index.d.ts +15 -0
  275. package/dist/tools/TaskStopTool/index.d.ts.map +1 -0
  276. package/dist/tools/TaskStopTool/index.js +51 -0
  277. package/dist/tools/TaskStopTool/index.js.map +1 -0
  278. package/dist/tools/TaskUpdateTool/index.d.ts +21 -3
  279. package/dist/tools/TaskUpdateTool/index.d.ts.map +1 -1
  280. package/dist/tools/TaskUpdateTool/index.js +48 -3
  281. package/dist/tools/TaskUpdateTool/index.js.map +1 -1
  282. package/dist/tools/tools-basic.test.js +191 -2
  283. package/dist/tools/tools-basic.test.js.map +1 -1
  284. package/dist/tools.d.ts.map +1 -1
  285. package/dist/tools.js +38 -0
  286. package/dist/tools.js.map +1 -1
  287. package/dist/types/permissions.d.ts +2 -2
  288. package/dist/types/permissions.d.ts.map +1 -1
  289. package/dist/types/permissions.js +59 -13
  290. package/dist/types/permissions.js.map +1 -1
  291. package/dist/types/permissions.test.js +57 -0
  292. package/dist/types/permissions.test.js.map +1 -1
  293. package/dist/utils/bash-safety.d.ts +18 -0
  294. package/dist/utils/bash-safety.d.ts.map +1 -0
  295. package/dist/utils/bash-safety.js +227 -0
  296. package/dist/utils/bash-safety.js.map +1 -0
  297. package/dist/utils/bash-safety.test.d.ts +2 -0
  298. package/dist/utils/bash-safety.test.d.ts.map +1 -0
  299. package/dist/utils/bash-safety.test.js +112 -0
  300. package/dist/utils/bash-safety.test.js.map +1 -0
  301. package/dist/utils/fs.d.ts +15 -0
  302. package/dist/utils/fs.d.ts.map +1 -0
  303. package/dist/utils/fs.js +64 -0
  304. package/dist/utils/fs.js.map +1 -0
  305. package/dist/utils/fs.test.d.ts +5 -0
  306. package/dist/utils/fs.test.d.ts.map +1 -0
  307. package/dist/utils/fs.test.js +82 -0
  308. package/dist/utils/fs.test.js.map +1 -0
  309. package/dist/utils/safe-env.d.ts +10 -0
  310. package/dist/utils/safe-env.d.ts.map +1 -0
  311. package/dist/utils/safe-env.js +40 -0
  312. package/dist/utils/safe-env.js.map +1 -0
  313. package/package.json +4 -1
package/dist/query.js CHANGED
@@ -1,447 +1,10 @@
1
1
  /**
2
- * Agent loop — the core LLM-to-Tool orchestration cycle.
3
- *
4
- * Core agent loop architecture:
5
- * - while(true) state machine with explicit transitions
6
- * - Error recovery with ordered fallbacks and circuit breaker
7
- * - Context window management with message compression
8
- * - Tool result budgeting (cap large outputs)
9
- * - Permission blocking (awaits user approval before tool execution)
2
+ * Re-export from query/index.ts — the agent loop has been split into sub-modules:
3
+ * - query/index.ts — main orchestration loop
4
+ * - query/compress.ts message compression strategies
5
+ * - query/tools.ts tool execution, permission checking, batching
6
+ * - query/errors.ts error classification and recovery
7
+ * - query/types.ts shared types
10
8
  */
11
- import { findToolByName, toolToAPIFormat } from "./Tool.js";
12
- import { createAssistantMessage, createToolResultMessage, createUserMessage, } from "./types/message.js";
13
- import { checkPermission } from "./types/permissions.js";
14
- import { defaultEstimateTokens } from "./providers/base.js";
15
- import { StreamingToolExecutor } from "./services/StreamingToolExecutor.js";
16
- import { getContextWindow } from "./harness/cost.js";
17
- import { emitHook } from "./harness/hooks.js";
18
- const DEFAULT_MAX_TURNS = 50;
19
- const MAX_CONSECUTIVE_ERRORS = 3;
20
- const MAX_TOOL_RESULT_CHARS = 100_000; // 100KB cap per tool result
21
- const MAX_RATE_LIMIT_RETRIES = 3;
22
- function isRateLimitError(err) {
23
- const msg = err.message.toLowerCase();
24
- return msg.includes("429") || msg.includes("rate limit") || msg.includes("too many requests");
25
- }
26
- // ── Main Entry ──
27
- export async function* query(userMessage, config, existingMessages = []) {
28
- const maxTurns = config.maxTurns ?? DEFAULT_MAX_TURNS;
29
- const toolContext = {
30
- workingDir: process.cwd(),
31
- abortSignal: config.abortSignal,
32
- provider: config.provider,
33
- model: config.model,
34
- tools: config.tools,
35
- systemPrompt: config.systemPrompt,
36
- permissionMode: config.permissionMode,
37
- askUserQuestion: config.askUserQuestion,
38
- };
39
- const estimateTokens = makeTokenEstimator(config.provider);
40
- // Check provider capabilities — skip tools if model doesn't support them
41
- const modelInfo = config.provider.getModelInfo?.(config.model ?? '');
42
- const toolsSupported = !modelInfo || modelInfo.supportsTools;
43
- const apiTools = toolsSupported ? config.tools.map(toolToAPIFormat) : undefined;
44
- const toolPrompts = toolsSupported
45
- ? config.tools.map((t) => t.prompt()).join("\n\n")
46
- : "";
47
- const fullSystemPrompt = toolPrompts
48
- ? config.systemPrompt + "\n\n# Available Tools\n\n" + toolPrompts
49
- : config.systemPrompt;
50
- const state = {
51
- messages: [...existingMessages, createUserMessage(userMessage)],
52
- turn: 0,
53
- totalCost: 0,
54
- totalInputTokens: 0,
55
- totalOutputTokens: 0,
56
- consecutiveErrors: 0,
57
- };
58
- // ── while(true) state machine ──
59
- while (state.turn < maxTurns) {
60
- state.turn++;
61
- // Abort check
62
- if (config.abortSignal?.aborted) {
63
- yield { type: "turn_complete", reason: "aborted" };
64
- return;
65
- }
66
- // Budget check
67
- if (config.maxCost && config.maxCost > 0 && state.totalCost >= config.maxCost) {
68
- yield { type: "error", message: `Budget exceeded: $${state.totalCost.toFixed(4)}` };
69
- yield { type: "turn_complete", reason: "budget_exceeded" };
70
- return;
71
- }
72
- // Context window management — compress if needed
73
- const estimatedTokens = estimateMessagesTokens(state.messages, estimateTokens);
74
- const contextWindow = getContextWindow(config.model);
75
- if (estimatedTokens > contextWindow * 0.8) {
76
- // Phase 1: Basic compression (truncate old tool results, drop oldest messages)
77
- state.messages = compressMessages(state.messages, Math.floor(contextWindow * 0.6));
78
- // Phase 2: If still over 70%, try LLM-assisted summarization
79
- const afterBasic = estimateMessagesTokens(state.messages, estimateTokens);
80
- if (afterBasic > contextWindow * 0.7 && state.messages.length > 4) {
81
- try {
82
- state.messages = await summarizeConversation(config.provider, state.messages, config.model, Math.floor(contextWindow * 0.5));
83
- yield { type: "error", message: "Context compressed with LLM summarization." };
84
- }
85
- catch {
86
- // Summarization failed — continue with basic compression
87
- }
88
- }
89
- }
90
- // ── LLM Call with error recovery ──
91
- let assistantContent = "";
92
- const toolCalls = [];
93
- let streamError = null;
94
- // Streaming tool executor — tools start during LLM streaming
95
- const streamingExecutor = new StreamingToolExecutor(config.tools, toolContext, config.permissionMode, config.askUser, config.abortSignal);
96
- try {
97
- for await (const event of config.provider.stream(state.messages, fullSystemPrompt, apiTools, config.model)) {
98
- if (config.abortSignal?.aborted)
99
- break;
100
- switch (event.type) {
101
- case "text_delta":
102
- assistantContent += event.content;
103
- yield event;
104
- break;
105
- case "tool_call_start":
106
- toolCalls.push({ id: event.callId, toolName: event.toolName, arguments: {} });
107
- yield event;
108
- break;
109
- case "tool_call_complete": {
110
- const tc = toolCalls.find((t) => t.id === event.callId);
111
- if (tc) {
112
- const idx = toolCalls.indexOf(tc);
113
- toolCalls[idx] = { ...tc, arguments: event.arguments };
114
- }
115
- // Start executing tool immediately (streaming execution)
116
- if (streamingExecutor) {
117
- streamingExecutor.addTool({
118
- id: event.callId,
119
- toolName: event.toolName,
120
- arguments: event.arguments,
121
- });
122
- }
123
- break;
124
- }
125
- case "cost_update":
126
- state.totalCost += event.cost;
127
- state.totalInputTokens += event.inputTokens;
128
- state.totalOutputTokens += event.outputTokens;
129
- yield event;
130
- break;
131
- case "error":
132
- yield event;
133
- break;
134
- }
135
- }
136
- // Reset error counter on success
137
- state.consecutiveErrors = 0;
138
- }
139
- catch (err) {
140
- streamError = err instanceof Error ? err : new Error(String(err));
141
- state.consecutiveErrors++;
142
- // Circuit breaker
143
- if (state.consecutiveErrors >= MAX_CONSECUTIVE_ERRORS) {
144
- yield { type: "error", message: `Too many consecutive errors (${state.consecutiveErrors}): ${streamError.message}` };
145
- yield { type: "turn_complete", reason: "error" };
146
- return;
147
- }
148
- // Error recovery cascade
149
- const errorMsg = streamError.message.toLowerCase();
150
- // Rate limit → exponential backoff retry (max 3 attempts)
151
- if (isRateLimitError(streamError)) {
152
- const attempt = state.consecutiveErrors;
153
- if (attempt <= MAX_RATE_LIMIT_RETRIES) {
154
- const retryIn = Math.pow(2, attempt); // 2, 4, 8 seconds
155
- yield { type: "rate_limited", retryIn, attempt };
156
- await new Promise((r) => setTimeout(r, retryIn * 1000));
157
- continue;
158
- }
159
- yield { type: "error", message: `Rate limit exceeded after ${MAX_RATE_LIMIT_RETRIES} retries.` };
160
- yield { type: "turn_complete", reason: "error" };
161
- return;
162
- }
163
- if (errorMsg.includes("prompt") && errorMsg.includes("long")) {
164
- // Prompt too long → compress and retry
165
- state.messages = compressMessages(state.messages, Math.floor(contextWindow * 0.5));
166
- state.transition = "retry_prompt_too_long";
167
- yield { type: "error", message: "Context too long, compressing history..." };
168
- continue;
169
- }
170
- if (errorMsg.includes("network") || errorMsg.includes("fetch") || errorMsg.includes("econnrefused")) {
171
- // Network error → retry with backoff
172
- state.transition = "retry_network";
173
- const delay = 1000 * Math.pow(2, state.consecutiveErrors - 1);
174
- yield { type: "error", message: `Network error, retrying in ${delay / 1000}s...` };
175
- await new Promise((r) => setTimeout(r, delay));
176
- continue;
177
- }
178
- // Other error → surface and stop
179
- yield { type: "error", message: streamError.message };
180
- yield { type: "turn_complete", reason: "error" };
181
- return;
182
- }
183
- // Abort check after stream
184
- if (config.abortSignal?.aborted) {
185
- yield { type: "turn_complete", reason: "aborted" };
186
- return;
187
- }
188
- // Guard against empty turns (e.g. unreadable body yielded an error event)
189
- if (assistantContent === "" && toolCalls.length === 0) {
190
- yield {
191
- type: "error",
192
- message: "No response received. Check that your model server is running and the model name is correct.",
193
- };
194
- return;
195
- }
196
- // Add assistant message to history
197
- state.messages.push(createAssistantMessage(assistantContent, toolCalls.length > 0 ? toolCalls : undefined));
198
- // No tool calls → done
199
- if (toolCalls.length === 0) {
200
- yield { type: "turn_complete", reason: "completed" };
201
- return;
202
- }
203
- // ── Collect streaming tool results ──
204
- await streamingExecutor.waitForAll();
205
- const completedResults = [...streamingExecutor.getCompletedResults()];
206
- const executedIds = new Set(completedResults.map(r => r.toolCall.id));
207
- // Yield streaming output chunks collected during execution
208
- for (const { callId, chunk } of streamingExecutor.outputChunks) {
209
- yield { type: 'tool_output_delta', callId, chunk };
210
- }
211
- for (const { toolCall: tc, result } of completedResults) {
212
- yield { type: "tool_call_end", callId: tc.id, output: result.output, isError: result.isError };
213
- state.messages.push(createToolResultMessage({ callId: tc.id, output: result.output, isError: result.isError }));
214
- }
215
- // Execute any tools that weren't started during streaming
216
- const remaining = toolCalls.filter(tc => !executedIds.has(tc.id));
217
- if (remaining.length > 0) {
218
- yield* executeToolCalls(remaining, config.tools, toolContext, config.permissionMode, config.askUser, state);
219
- }
220
- state.transition = "next_turn";
221
- }
222
- yield { type: "turn_complete", reason: "max_turns" };
223
- }
224
- // ── Tool Execution ──
225
- async function* executeToolCalls(toolCalls, tools, context, permissionMode, askUser, state) {
226
- const batches = partitionToolCalls(toolCalls, tools);
227
- // Collect streaming output chunks to yield as tool_output_delta events
228
- const outputChunks = [];
229
- const onOutputChunk = (callId, chunk) => {
230
- outputChunks.push({ type: 'tool_output_delta', callId, chunk });
231
- };
232
- // tool_call_start already yielded by the provider stream — only yield tool_call_end here
233
- for (const batch of batches) {
234
- if (batch.concurrent) {
235
- const results = await Promise.all(batch.calls.map((tc) => executeSingleTool(tc, tools, { ...context, callId: tc.id, onOutputChunk }, permissionMode, askUser)));
236
- // Yield accumulated output chunks before end events
237
- for (const chunk of outputChunks.splice(0))
238
- yield chunk;
239
- for (let i = 0; i < batch.calls.length; i++) {
240
- const tc = batch.calls[i];
241
- const result = results[i];
242
- yield { type: "tool_call_end", callId: tc.id, output: result.output, isError: result.isError };
243
- state?.messages.push(createToolResultMessage({ callId: tc.id, output: result.output, isError: result.isError }));
244
- }
245
- }
246
- else {
247
- for (const tc of batch.calls) {
248
- const result = await executeSingleTool(tc, tools, { ...context, callId: tc.id, onOutputChunk }, permissionMode, askUser);
249
- for (const chunk of outputChunks.splice(0))
250
- yield chunk;
251
- yield { type: "tool_call_end", callId: tc.id, output: result.output, isError: result.isError };
252
- state?.messages.push(createToolResultMessage({ callId: tc.id, output: result.output, isError: result.isError }));
253
- }
254
- }
255
- }
256
- }
257
- async function executeSingleTool(toolCall, tools, context, permissionMode, askUser) {
258
- const tool = findToolByName(tools, toolCall.toolName);
259
- if (!tool) {
260
- return { output: `Error: Unknown tool '${toolCall.toolName}'`, isError: true };
261
- }
262
- const parsed = tool.inputSchema.safeParse(toolCall.arguments);
263
- if (!parsed.success) {
264
- return { output: `Validation error: ${parsed.error.message}`, isError: true };
265
- }
266
- // Permission check — BLOCKS until user responds
267
- const perm = checkPermission(permissionMode, tool.riskLevel, tool.isReadOnly(parsed.data), tool.name);
268
- if (!perm.allowed) {
269
- if (perm.reason === "needs-approval" && askUser) {
270
- const allowed = await askUser(tool.name, JSON.stringify(toolCall.arguments).slice(0, 200), tool.riskLevel);
271
- if (!allowed) {
272
- return { output: "Permission denied by user.", isError: true };
273
- }
274
- // User approved — fall through to execution
275
- }
276
- else {
277
- return { output: `Permission denied: ${perm.reason}`, isError: true };
278
- }
279
- }
280
- // Hook: preToolUse — can block execution
281
- const hookAllowed = emitHook("preToolUse", {
282
- toolName: tool.name,
283
- toolArgs: JSON.stringify(toolCall.arguments).slice(0, 1000),
284
- });
285
- if (!hookAllowed) {
286
- return { output: "Blocked by preToolUse hook.", isError: true };
287
- }
288
- // Execute with result budgeting
289
- try {
290
- const result = await tool.call(parsed.data, context);
291
- // Hook: postToolUse
292
- emitHook("postToolUse", {
293
- toolName: tool.name,
294
- toolArgs: JSON.stringify(toolCall.arguments).slice(0, 1000),
295
- toolOutput: result.output.slice(0, 1000),
296
- });
297
- // Cap large outputs
298
- if (result.output.length > MAX_TOOL_RESULT_CHARS) {
299
- return {
300
- output: result.output.slice(0, MAX_TOOL_RESULT_CHARS) + `\n\n... (truncated, ${result.output.length.toLocaleString()} chars total)`,
301
- isError: result.isError,
302
- };
303
- }
304
- return result;
305
- }
306
- catch (err) {
307
- return { output: `Tool error: ${err instanceof Error ? err.message : String(err)}`, isError: true };
308
- }
309
- }
310
- function partitionToolCalls(toolCalls, tools) {
311
- const batches = [];
312
- let currentConcurrent = [];
313
- for (const tc of toolCalls) {
314
- const tool = findToolByName(tools, tc.toolName);
315
- const isSafe = tool ? tool.isConcurrencySafe(tc.arguments) : false;
316
- if (isSafe) {
317
- currentConcurrent.push(tc);
318
- }
319
- else {
320
- if (currentConcurrent.length > 0) {
321
- batches.push({ concurrent: true, calls: currentConcurrent });
322
- currentConcurrent = [];
323
- }
324
- batches.push({ concurrent: false, calls: [tc] });
325
- }
326
- }
327
- if (currentConcurrent.length > 0) {
328
- batches.push({ concurrent: true, calls: currentConcurrent });
329
- }
330
- return batches;
331
- }
332
- function makeTokenEstimator(provider) {
333
- if (provider.estimateTokens)
334
- return provider.estimateTokens.bind(provider);
335
- return (text) => defaultEstimateTokens(text, provider.name);
336
- }
337
- function defaultTokenEstimate(text) {
338
- return Math.ceil(text.length / 4);
339
- }
340
- function estimateMessagesTokens(messages, estimateTokens = defaultTokenEstimate) {
341
- return messages.reduce((sum, m) => {
342
- let tokens = estimateTokens(m.content) + 10;
343
- // Include tool call arguments and results in estimate
344
- if (m.toolCalls) {
345
- for (const tc of m.toolCalls) {
346
- tokens += estimateTokens(JSON.stringify(tc.arguments));
347
- }
348
- }
349
- if (m.toolResults) {
350
- for (const tr of m.toolResults) {
351
- tokens += estimateTokens(tr.output);
352
- }
353
- }
354
- return sum + tokens;
355
- }, 0);
356
- }
357
- export function compressMessages(messages, targetTokens) {
358
- if (messages.length <= 2)
359
- return messages;
360
- const result = [...messages];
361
- const keepLast = 10;
362
- // MicroCompact: Aggressively truncate long tool results in-place (>500 chars → first 200 + ... + last 100)
363
- for (let i = 0; i < result.length - keepLast; i++) {
364
- if (result[i].meta?.pinned)
365
- continue;
366
- if (result[i].role === "tool" && result[i].content.length > 500) {
367
- const c = result[i].content;
368
- result[i] = { ...result[i], content: c.slice(0, 200) + "\n...[truncated]...\n" + c.slice(-100) };
369
- }
370
- // Also truncate long assistant messages
371
- if (result[i].role === "assistant" && result[i].content.length > 2000) {
372
- const c = result[i].content;
373
- result[i] = { ...result[i], content: c.slice(0, 500) + "\n...[truncated]...\n" + c.slice(-200) };
374
- }
375
- }
376
- // AutoCompact Phase 1: Replace old tool results with stub (keep last N, skip pinned)
377
- let toolResultCount = 0;
378
- for (let i = result.length - 1; i >= 0; i--) {
379
- if (result[i].meta?.pinned)
380
- continue;
381
- if (result[i].role === "tool")
382
- toolResultCount++;
383
- if (result[i].role === "tool" && toolResultCount > keepLast) {
384
- result[i] = { ...result[i], content: "[previous tool result truncated]" };
385
- }
386
- }
387
- // AutoCompact Phase 2: Drop oldest non-system, non-pinned messages
388
- while (estimateMessagesTokens(result) > targetTokens && result.length > keepLast + 1) {
389
- const firstDroppable = result.findIndex((m) => m.role !== "system" && !m.meta?.pinned);
390
- if (firstDroppable === -1 || firstDroppable >= result.length - keepLast)
391
- break;
392
- result.splice(firstDroppable, 1);
393
- }
394
- // Phase 3: Remove orphaned tool results — tool msgs with no preceding
395
- // assistant message that issued the matching tool call. Sending orphaned
396
- // tool results to Anthropic causes a 400 error.
397
- const validCallIds = new Set();
398
- for (const msg of result) {
399
- if (msg.role === "assistant" && msg.toolCalls) {
400
- for (const tc of msg.toolCalls)
401
- validCallIds.add(tc.id);
402
- }
403
- }
404
- return result.filter((msg) => {
405
- if (msg.role !== "tool")
406
- return true;
407
- return (msg.toolResults?.length ?? 0) > 0 &&
408
- msg.toolResults.every((tr) => validCallIds.has(tr.callId));
409
- });
410
- }
411
- /**
412
- * Use the active LLM to summarize older conversation messages,
413
- * preserving the most recent messages verbatim and replacing older
414
- * ones with a summary.
415
- */
416
- async function summarizeConversation(provider, messages, model, targetTokens) {
417
- const keepRecent = Math.min(6, messages.length - 1);
418
- const older = messages.slice(0, messages.length - keepRecent);
419
- const recent = messages.slice(messages.length - keepRecent);
420
- if (older.length < 2)
421
- return messages;
422
- // Extract pinned messages — these survive summarization
423
- const pinned = older.filter(m => m.meta?.pinned);
424
- const summarizable = older.filter(m => !m.meta?.pinned);
425
- if (summarizable.length < 2)
426
- return messages;
427
- // Build a text representation of older messages for summarization
428
- const olderText = summarizable.map(m => {
429
- const prefix = m.role === 'user' ? 'User' : m.role === 'assistant' ? 'Assistant' : 'System';
430
- let text = `${prefix}: ${m.content.slice(0, 500)}`;
431
- if (m.toolCalls?.length) {
432
- text += `\n [Used tools: ${m.toolCalls.map(tc => tc.toolName).join(', ')}]`;
433
- }
434
- return text;
435
- }).join('\n\n');
436
- const summaryPrompt = `Summarize this conversation history in 2-4 sentences, preserving key decisions, file paths mentioned, and what was accomplished:\n\n${olderText.slice(0, 3000)}`;
437
- const summaryResponse = await provider.complete([createUserMessage(summaryPrompt)], 'You are a conversation summarizer. Be concise and factual. Preserve important details like file paths and decisions.', undefined, model);
438
- const summaryMessage = {
439
- role: 'system',
440
- content: `[Conversation summary: ${summaryResponse.content}]`,
441
- uuid: `summary-${Date.now()}`,
442
- timestamp: Date.now(),
443
- meta: { isInfo: true },
444
- };
445
- return [...pinned, summaryMessage, ...recent];
446
- }
9
+ export { query, compressMessages } from "./query/index.js";
447
10
  //# sourceMappingURL=query.js.map
package/dist/query.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import test from 'node:test';
2
2
  import assert from 'node:assert/strict';
3
- import { query, compressMessages } from './query.js';
3
+ import { query, compressMessages } from './query/index.js';
4
4
  import { createMockProvider, textResponseEvents, toolCallEvents, createErrorProvider, createMockTool } from './test-helpers.js';
5
5
  import { createUserMessage, createAssistantMessage, createMessage } from './types/message.js';
6
6
  // ── Basic flow ──
@@ -1 +1 @@
1
- {"version":3,"file":"query.test.js","sourceRoot":"","sources":["../src/query.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.test.js","sourceRoot":"","sources":["../src/query.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cells.d.ts","sourceRoot":"","sources":["../../src/renderer/cells.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAyE,CAAC;AACpG,eAAO,MAAM,UAAU,EAAE,IAA+C,CAAC;AAEzE,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAOpD;AAED,qBAAa,QAAQ;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;gBAEJ,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAazC,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAKnE;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAsB3F;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAqC9G,KAAK,IAAI,QAAQ;CAUlB"}
1
+ {"version":3,"file":"cells.d.ts","sourceRoot":"","sources":["../../src/renderer/cells.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAyE,CAAC;AACpG,eAAO,MAAM,UAAU,EAAE,IAA+C,CAAC;AAEzE,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAOpD;AAED,qBAAa,QAAQ;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;gBAEJ,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAazC,KAAK,IAAI,IAAI;IAcb,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAYnE;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAsB3F;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAqC9G,KAAK,IAAI,QAAQ;CAUlB"}
@@ -30,14 +30,27 @@ export class CellGrid {
30
30
  clear() {
31
31
  for (let r = 0; r < this.height; r++) {
32
32
  for (let c = 0; c < this.width; c++) {
33
- this.cells[r][c] = { char: ' ', style: { ...EMPTY_STYLE } };
33
+ const cell = this.cells[r][c];
34
+ cell.char = ' ';
35
+ cell.style.fg = null;
36
+ cell.style.bg = null;
37
+ cell.style.bold = false;
38
+ cell.style.dim = false;
39
+ cell.style.underline = false;
34
40
  }
35
41
  }
36
42
  }
37
43
  setCell(row, col, char, style) {
38
44
  if (row < 0 || row >= this.height || col < 0 || col >= this.width)
39
45
  return;
40
- this.cells[row][col] = { char, style };
46
+ const cell = this.cells[row][col];
47
+ cell.char = char;
48
+ const s = style ?? EMPTY_STYLE;
49
+ cell.style.fg = s.fg;
50
+ cell.style.bg = s.bg;
51
+ cell.style.bold = s.bold;
52
+ cell.style.dim = s.dim;
53
+ cell.style.underline = s.underline;
41
54
  }
42
55
  /**
43
56
  * Write a string into the grid at (row, col). Handles \n for line breaks.
@@ -1 +1 @@
1
- {"version":3,"file":"cells.js","sourceRoot":"","sources":["../../src/renderer/cells.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,CAAC,MAAM,WAAW,GAAU,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACpG,MAAM,CAAC,MAAM,UAAU,GAAS,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE,CAAC;AAEzE,MAAM,UAAU,UAAU,CAAC,CAAO,EAAE,CAAO;IACzC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QACtB,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;QACzB,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;QACzB,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI;QAC7B,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG;QAC3B,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED,MAAM,OAAO,QAAQ;IACV,KAAK,CAAS;IACd,MAAM,CAAS;IACxB,KAAK,CAAW;IAEhB,YAAY,KAAa,EAAE,MAAc;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,GAAG,GAAW,EAAE,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,KAAK;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,GAAW,EAAE,IAAY,EAAE,KAAY;QAC1D,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QAC1E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,GAAW,EAAE,GAAW,EAAE,IAAY,EAAE,KAAY,EAAE,SAAkB;QAChF,MAAM,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,CAAC;QACZ,IAAI,CAAC,GAAG,GAAG,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;YACpB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,CAAC,EAAE,CAAC;gBACJ,CAAC,GAAG,GAAG,CAAC;gBACR,SAAS;YACX,CAAC;YACD,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;gBAChB,CAAC,EAAE,CAAC;gBACJ,CAAC,GAAG,GAAG,CAAC;YACV,CAAC;YACD,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;gBAAE,MAAM;YAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC,EAAE,CAAC;QACN,CAAC;QACD,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,GAAW,EAAE,GAAW,EAAE,IAAY,EAAE,KAAY,EAAE,SAAiB,EAAE,MAAe;QACnG,MAAM,KAAK,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,KAAK;gBAAE,MAAM;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,GAAG,CAAC;YACZ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAChC,qEAAqE;gBACrE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,EAAE,CAAC;oBAC/C,CAAC,EAAE,CAAC;oBACJ,CAAC,GAAG,GAAG,CAAC;oBACR,IAAI,CAAC,IAAI,KAAK;wBAAE,MAAM;gBACxB,CAAC;gBACD,kDAAkD;gBAClD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;oBACZ,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC/B,CAAC,EAAE,CAAC;gBACN,CAAC;gBACD,yEAAyE;gBACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;wBACnB,CAAC,EAAE,CAAC;wBACJ,CAAC,GAAG,GAAG,CAAC;wBACR,IAAI,CAAC,IAAI,KAAK;4BAAE,MAAM;oBACxB,CAAC;oBACD,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC;oBACpC,CAAC,EAAE,CAAC;gBACN,CAAC;YACH,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;QACD,OAAO,CAAC,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK;QACH,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC;gBAC/B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;YAC/D,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF"}
1
+ {"version":3,"file":"cells.js","sourceRoot":"","sources":["../../src/renderer/cells.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared ANSI color code mappings for terminal rendering.
3
+ */
4
+ export declare const FG_CODES: Record<string, number>;
5
+ export declare const BG_CODES: Record<string, number>;
6
+ /** Get foreground ANSI code for a color name, defaults to white (37). */
7
+ export declare function FG(color: string): number;
8
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/renderer/colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK3C,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG3C,CAAC;AAEF,yEAAyE;AACzE,wBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Shared ANSI color code mappings for terminal rendering.
3
+ */
4
+ export const FG_CODES = {
5
+ black: 30, red: 31, green: 32, yellow: 33, blue: 34,
6
+ magenta: 35, cyan: 36, white: 37,
7
+ gray: 90, brightRed: 91, brightGreen: 92, brightYellow: 93,
8
+ brightBlue: 94, brightMagenta: 95, brightCyan: 96, brightWhite: 97,
9
+ };
10
+ export const BG_CODES = {
11
+ black: 40, red: 41, green: 42, yellow: 43, blue: 44,
12
+ magenta: 45, cyan: 46, white: 47,
13
+ };
14
+ /** Get foreground ANSI code for a color name, defaults to white (37). */
15
+ export function FG(color) {
16
+ return FG_CODES[color] ?? 37;
17
+ }
18
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/renderer/colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACnD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAChC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE;IAC1D,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE;CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACnD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;CACjC,CAAC;AAEF,yEAAyE;AACzE,MAAM,UAAU,EAAE,CAAC,KAAa;IAC9B,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC"}