longer-agent 0.1.0

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 (289) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +227 -0
  3. package/README.zh-CN.md +227 -0
  4. package/agent_templates/executor/agent.yaml +22 -0
  5. package/agent_templates/executor/system_prompt.md +17 -0
  6. package/agent_templates/explorer/agent.yaml +13 -0
  7. package/agent_templates/explorer/system_prompt.md +19 -0
  8. package/agent_templates/main/agent.yaml +7 -0
  9. package/agent_templates/main/system_prompt.md +45 -0
  10. package/configExample.yaml +83 -0
  11. package/dist/agents/agent.d.ts +79 -0
  12. package/dist/agents/agent.d.ts.map +1 -0
  13. package/dist/agents/agent.js +156 -0
  14. package/dist/agents/agent.js.map +1 -0
  15. package/dist/agents/tool-loop.d.ts +140 -0
  16. package/dist/agents/tool-loop.d.ts.map +1 -0
  17. package/dist/agents/tool-loop.js +465 -0
  18. package/dist/agents/tool-loop.js.map +1 -0
  19. package/dist/ask.d.ts +81 -0
  20. package/dist/ask.d.ts.map +1 -0
  21. package/dist/ask.js +34 -0
  22. package/dist/ask.js.map +1 -0
  23. package/dist/auth/openai-oauth.d.ts +66 -0
  24. package/dist/auth/openai-oauth.d.ts.map +1 -0
  25. package/dist/auth/openai-oauth.js +640 -0
  26. package/dist/auth/openai-oauth.js.map +1 -0
  27. package/dist/cli.d.ts +14 -0
  28. package/dist/cli.d.ts.map +1 -0
  29. package/dist/cli.js +254 -0
  30. package/dist/cli.js.map +1 -0
  31. package/dist/commands.d.ts +118 -0
  32. package/dist/commands.d.ts.map +1 -0
  33. package/dist/commands.js +862 -0
  34. package/dist/commands.js.map +1 -0
  35. package/dist/config.d.ts +130 -0
  36. package/dist/config.d.ts.map +1 -0
  37. package/dist/config.js +648 -0
  38. package/dist/config.js.map +1 -0
  39. package/dist/context-rendering.d.ts +69 -0
  40. package/dist/context-rendering.d.ts.map +1 -0
  41. package/dist/context-rendering.js +250 -0
  42. package/dist/context-rendering.js.map +1 -0
  43. package/dist/document-projection.d.ts +12 -0
  44. package/dist/document-projection.d.ts.map +1 -0
  45. package/dist/document-projection.js +75 -0
  46. package/dist/document-projection.js.map +1 -0
  47. package/dist/ephemeral-log.d.ts +15 -0
  48. package/dist/ephemeral-log.d.ts.map +1 -0
  49. package/dist/ephemeral-log.js +173 -0
  50. package/dist/ephemeral-log.js.map +1 -0
  51. package/dist/file-attach.d.ts +89 -0
  52. package/dist/file-attach.d.ts.map +1 -0
  53. package/dist/file-attach.js +571 -0
  54. package/dist/file-attach.js.map +1 -0
  55. package/dist/index.d.ts +29 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +43 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/init-wizard.d.ts +13 -0
  60. package/dist/init-wizard.d.ts.map +1 -0
  61. package/dist/init-wizard.js +328 -0
  62. package/dist/init-wizard.js.map +1 -0
  63. package/dist/log-entry.d.ts +104 -0
  64. package/dist/log-entry.d.ts.map +1 -0
  65. package/dist/log-entry.js +292 -0
  66. package/dist/log-entry.js.map +1 -0
  67. package/dist/log-projection.d.ts +73 -0
  68. package/dist/log-projection.d.ts.map +1 -0
  69. package/dist/log-projection.js +651 -0
  70. package/dist/log-projection.js.map +1 -0
  71. package/dist/mcp-client.d.ts +55 -0
  72. package/dist/mcp-client.d.ts.map +1 -0
  73. package/dist/mcp-client.js +402 -0
  74. package/dist/mcp-client.js.map +1 -0
  75. package/dist/model-selection.d.ts +16 -0
  76. package/dist/model-selection.d.ts.map +1 -0
  77. package/dist/model-selection.js +181 -0
  78. package/dist/model-selection.js.map +1 -0
  79. package/dist/network-retry.d.ts +38 -0
  80. package/dist/network-retry.d.ts.map +1 -0
  81. package/dist/network-retry.js +140 -0
  82. package/dist/network-retry.js.map +1 -0
  83. package/dist/persistence.d.ts +104 -0
  84. package/dist/persistence.d.ts.map +1 -0
  85. package/dist/persistence.js +644 -0
  86. package/dist/persistence.js.map +1 -0
  87. package/dist/primitives/context.d.ts +29 -0
  88. package/dist/primitives/context.d.ts.map +1 -0
  89. package/dist/primitives/context.js +85 -0
  90. package/dist/primitives/context.js.map +1 -0
  91. package/dist/progress.d.ts +51 -0
  92. package/dist/progress.d.ts.map +1 -0
  93. package/dist/progress.js +229 -0
  94. package/dist/progress.js.map +1 -0
  95. package/dist/provider-presets.d.ts +34 -0
  96. package/dist/provider-presets.d.ts.map +1 -0
  97. package/dist/provider-presets.js +181 -0
  98. package/dist/provider-presets.js.map +1 -0
  99. package/dist/providers/anthropic.d.ts +32 -0
  100. package/dist/providers/anthropic.d.ts.map +1 -0
  101. package/dist/providers/anthropic.js +450 -0
  102. package/dist/providers/anthropic.js.map +1 -0
  103. package/dist/providers/base.d.ts +135 -0
  104. package/dist/providers/base.d.ts.map +1 -0
  105. package/dist/providers/base.js +104 -0
  106. package/dist/providers/base.js.map +1 -0
  107. package/dist/providers/glm.d.ts +18 -0
  108. package/dist/providers/glm.d.ts.map +1 -0
  109. package/dist/providers/glm.js +59 -0
  110. package/dist/providers/glm.js.map +1 -0
  111. package/dist/providers/kimi.d.ts +23 -0
  112. package/dist/providers/kimi.d.ts.map +1 -0
  113. package/dist/providers/kimi.js +89 -0
  114. package/dist/providers/kimi.js.map +1 -0
  115. package/dist/providers/minimax.d.ts +20 -0
  116. package/dist/providers/minimax.d.ts.map +1 -0
  117. package/dist/providers/minimax.js +192 -0
  118. package/dist/providers/minimax.js.map +1 -0
  119. package/dist/providers/openai-chat.d.ts +33 -0
  120. package/dist/providers/openai-chat.d.ts.map +1 -0
  121. package/dist/providers/openai-chat.js +543 -0
  122. package/dist/providers/openai-chat.js.map +1 -0
  123. package/dist/providers/openai-responses.d.ts +26 -0
  124. package/dist/providers/openai-responses.d.ts.map +1 -0
  125. package/dist/providers/openai-responses.js +443 -0
  126. package/dist/providers/openai-responses.js.map +1 -0
  127. package/dist/providers/openrouter.d.ts +24 -0
  128. package/dist/providers/openrouter.d.ts.map +1 -0
  129. package/dist/providers/openrouter.js +177 -0
  130. package/dist/providers/openrouter.js.map +1 -0
  131. package/dist/providers/registry.d.ts +7 -0
  132. package/dist/providers/registry.d.ts.map +1 -0
  133. package/dist/providers/registry.js +38 -0
  134. package/dist/providers/registry.js.map +1 -0
  135. package/dist/security/path.d.ts +51 -0
  136. package/dist/security/path.d.ts.map +1 -0
  137. package/dist/security/path.js +187 -0
  138. package/dist/security/path.js.map +1 -0
  139. package/dist/security/sensitive-files.d.ts +3 -0
  140. package/dist/security/sensitive-files.d.ts.map +1 -0
  141. package/dist/security/sensitive-files.js +41 -0
  142. package/dist/security/sensitive-files.js.map +1 -0
  143. package/dist/session.d.ts +446 -0
  144. package/dist/session.d.ts.map +1 -0
  145. package/dist/session.js +4595 -0
  146. package/dist/session.js.map +1 -0
  147. package/dist/settings.d.ts +46 -0
  148. package/dist/settings.d.ts.map +1 -0
  149. package/dist/settings.js +134 -0
  150. package/dist/settings.js.map +1 -0
  151. package/dist/show-context.d.ts +35 -0
  152. package/dist/show-context.d.ts.map +1 -0
  153. package/dist/show-context.js +320 -0
  154. package/dist/show-context.js.map +1 -0
  155. package/dist/skills/loader.d.ts +49 -0
  156. package/dist/skills/loader.d.ts.map +1 -0
  157. package/dist/skills/loader.js +166 -0
  158. package/dist/skills/loader.js.map +1 -0
  159. package/dist/summarize-context.d.ts +29 -0
  160. package/dist/summarize-context.d.ts.map +1 -0
  161. package/dist/summarize-context.js +247 -0
  162. package/dist/summarize-context.js.map +1 -0
  163. package/dist/templates/loader.d.ts +104 -0
  164. package/dist/templates/loader.d.ts.map +1 -0
  165. package/dist/templates/loader.js +514 -0
  166. package/dist/templates/loader.js.map +1 -0
  167. package/dist/tools/basic.d.ts +29 -0
  168. package/dist/tools/basic.d.ts.map +1 -0
  169. package/dist/tools/basic.js +2079 -0
  170. package/dist/tools/basic.js.map +1 -0
  171. package/dist/tools/comm.d.ts +17 -0
  172. package/dist/tools/comm.d.ts.map +1 -0
  173. package/dist/tools/comm.js +192 -0
  174. package/dist/tools/comm.js.map +1 -0
  175. package/dist/tools/web-fetch.d.ts +11 -0
  176. package/dist/tools/web-fetch.d.ts.map +1 -0
  177. package/dist/tools/web-fetch.js +237 -0
  178. package/dist/tools/web-fetch.js.map +1 -0
  179. package/dist/tools/web-search.d.ts +24 -0
  180. package/dist/tools/web-search.d.ts.map +1 -0
  181. package/dist/tools/web-search.js +51 -0
  182. package/dist/tools/web-search.js.map +1 -0
  183. package/dist/tui/app.d.ts +35 -0
  184. package/dist/tui/app.d.ts.map +1 -0
  185. package/dist/tui/app.js +1042 -0
  186. package/dist/tui/app.js.map +1 -0
  187. package/dist/tui/checkbox-picker.d.ts +35 -0
  188. package/dist/tui/checkbox-picker.d.ts.map +1 -0
  189. package/dist/tui/checkbox-picker.js +85 -0
  190. package/dist/tui/checkbox-picker.js.map +1 -0
  191. package/dist/tui/command-picker.d.ts +31 -0
  192. package/dist/tui/command-picker.d.ts.map +1 -0
  193. package/dist/tui/command-picker.js +113 -0
  194. package/dist/tui/command-picker.js.map +1 -0
  195. package/dist/tui/components/ask-panel.d.ts +21 -0
  196. package/dist/tui/components/ask-panel.d.ts.map +1 -0
  197. package/dist/tui/components/ask-panel.js +81 -0
  198. package/dist/tui/components/ask-panel.js.map +1 -0
  199. package/dist/tui/components/conversation-panel.d.ts +68 -0
  200. package/dist/tui/components/conversation-panel.d.ts.map +1 -0
  201. package/dist/tui/components/conversation-panel.js +611 -0
  202. package/dist/tui/components/conversation-panel.js.map +1 -0
  203. package/dist/tui/components/input-panel.d.ts +27 -0
  204. package/dist/tui/components/input-panel.d.ts.map +1 -0
  205. package/dist/tui/components/input-panel.js +725 -0
  206. package/dist/tui/components/input-panel.js.map +1 -0
  207. package/dist/tui/components/logo-panel.d.ts +14 -0
  208. package/dist/tui/components/logo-panel.d.ts.map +1 -0
  209. package/dist/tui/components/logo-panel.js +37 -0
  210. package/dist/tui/components/logo-panel.js.map +1 -0
  211. package/dist/tui/components/plan-panel.d.ts +10 -0
  212. package/dist/tui/components/plan-panel.d.ts.map +1 -0
  213. package/dist/tui/components/plan-panel.js +8 -0
  214. package/dist/tui/components/plan-panel.js.map +1 -0
  215. package/dist/tui/components/status-bar.d.ts +24 -0
  216. package/dist/tui/components/status-bar.d.ts.map +1 -0
  217. package/dist/tui/components/status-bar.js +80 -0
  218. package/dist/tui/components/status-bar.js.map +1 -0
  219. package/dist/tui/input/editor-state.d.ts +22 -0
  220. package/dist/tui/input/editor-state.d.ts.map +1 -0
  221. package/dist/tui/input/editor-state.js +157 -0
  222. package/dist/tui/input/editor-state.js.map +1 -0
  223. package/dist/tui/input/keymap.d.ts +3 -0
  224. package/dist/tui/input/keymap.d.ts.map +1 -0
  225. package/dist/tui/input/keymap.js +72 -0
  226. package/dist/tui/input/keymap.js.map +1 -0
  227. package/dist/tui/input/paste-slots.d.ts +17 -0
  228. package/dist/tui/input/paste-slots.d.ts.map +1 -0
  229. package/dist/tui/input/paste-slots.js +46 -0
  230. package/dist/tui/input/paste-slots.js.map +1 -0
  231. package/dist/tui/input/paste.d.ts +15 -0
  232. package/dist/tui/input/paste.d.ts.map +1 -0
  233. package/dist/tui/input/paste.js +35 -0
  234. package/dist/tui/input/paste.js.map +1 -0
  235. package/dist/tui/input/protocol.d.ts +9 -0
  236. package/dist/tui/input/protocol.d.ts.map +1 -0
  237. package/dist/tui/input/protocol.js +387 -0
  238. package/dist/tui/input/protocol.js.map +1 -0
  239. package/dist/tui/input/sanitize.d.ts +6 -0
  240. package/dist/tui/input/sanitize.d.ts.map +1 -0
  241. package/dist/tui/input/sanitize.js +20 -0
  242. package/dist/tui/input/sanitize.js.map +1 -0
  243. package/dist/tui/input/types.d.ts +18 -0
  244. package/dist/tui/input/types.d.ts.map +1 -0
  245. package/dist/tui/input/types.js +2 -0
  246. package/dist/tui/input/types.js.map +1 -0
  247. package/dist/tui/launch.d.ts +23 -0
  248. package/dist/tui/launch.d.ts.map +1 -0
  249. package/dist/tui/launch.js +104 -0
  250. package/dist/tui/launch.js.map +1 -0
  251. package/dist/tui/theme.d.ts +20 -0
  252. package/dist/tui/theme.d.ts.map +1 -0
  253. package/dist/tui/theme.js +29 -0
  254. package/dist/tui/theme.js.map +1 -0
  255. package/dist/tui/types.d.ts +136 -0
  256. package/dist/tui/types.d.ts.map +1 -0
  257. package/dist/tui/types.js +9 -0
  258. package/dist/tui/types.js.map +1 -0
  259. package/package.json +76 -0
  260. package/prompts/sections/agents_md.md +23 -0
  261. package/prompts/sections/important_log.md +16 -0
  262. package/prompts/sections/system_mechanisms.md +18 -0
  263. package/prompts/tools/apply_patch.md +31 -0
  264. package/prompts/tools/ask.md +18 -0
  265. package/prompts/tools/bash.md +13 -0
  266. package/prompts/tools/bash_background.md +9 -0
  267. package/prompts/tools/bash_output.md +9 -0
  268. package/prompts/tools/check_status.md +3 -0
  269. package/prompts/tools/diff.md +5 -0
  270. package/prompts/tools/edit_file.md +11 -0
  271. package/prompts/tools/glob.md +7 -0
  272. package/prompts/tools/grep.md +20 -0
  273. package/prompts/tools/kill_agent.md +3 -0
  274. package/prompts/tools/kill_shell.md +5 -0
  275. package/prompts/tools/list_dir.md +5 -0
  276. package/prompts/tools/plan.md +252 -0
  277. package/prompts/tools/read_file.md +9 -0
  278. package/prompts/tools/show_context.md +12 -0
  279. package/prompts/tools/skill.md +7 -0
  280. package/prompts/tools/spawn_agent.md +195 -0
  281. package/prompts/tools/summarize_context.md +122 -0
  282. package/prompts/tools/test.md +5 -0
  283. package/prompts/tools/wait.md +17 -0
  284. package/prompts/tools/web_fetch.md +9 -0
  285. package/prompts/tools/web_search.md +5 -0
  286. package/prompts/tools/write_file.md +11 -0
  287. package/skills/.staging/.gitkeep +0 -0
  288. package/skills/explain-code/SKILL.md +15 -0
  289. package/skills/skill-manager/SKILL.md +83 -0
@@ -0,0 +1,611 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Conversation panel -- displays the conversation history.
4
+ *
5
+ * Renders user messages, agent responses (with markdown), progress lines,
6
+ * reasoning blocks, and status messages. Markdown is rendered via
7
+ * marked + marked-terminal with width-aware reflow.
8
+ */
9
+ import React, { useState, useEffect } from "react";
10
+ import { Box, Text } from "ink";
11
+ import { Marked } from "marked";
12
+ import { markedTerminal } from "marked-terminal";
13
+ import { theme } from "../theme.js";
14
+ import { stripAnsiSequences } from "../input/sanitize.js";
15
+ const FALLBACK_MARKDOWN_WIDTH = 100;
16
+ const MIN_MARKDOWN_WIDTH = 40;
17
+ const MAX_CACHED_PARSERS = 6;
18
+ const STRONG_PUNCTUATION_FIX_RE = /([^\s])(\*\*|__)(?=["'“”‘’([{【「《<])/g;
19
+ const markdownParserByWidth = new Map();
20
+ const TABLE_DELIMITER_RE = /^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)*\|?\s*$/;
21
+ // ------------------------------------------------------------------
22
+ // Wide table → card layout helpers
23
+ // ------------------------------------------------------------------
24
+ function isFullWidthCodePoint(cp) {
25
+ return ((cp >= 0x1100 && cp <= 0x115f) || // Hangul Jamo
26
+ (cp >= 0x2e80 && cp <= 0x303e) || // CJK Radicals, Kangxi, Ideographic
27
+ (cp >= 0x3040 && cp <= 0x33bf) || // Hiragana, Katakana, Bopomofo, CJK compat
28
+ (cp >= 0x3400 && cp <= 0x4dbf) || // CJK Extension A
29
+ (cp >= 0x4e00 && cp <= 0xa4cf) || // CJK Unified, Yi
30
+ (cp >= 0xac00 && cp <= 0xd7af) || // Hangul Syllables
31
+ (cp >= 0xf900 && cp <= 0xfaff) || // CJK Compat Ideographs
32
+ (cp >= 0xfe30 && cp <= 0xfe6f) || // CJK Compat Forms
33
+ (cp >= 0xff01 && cp <= 0xff60) || // Fullwidth Forms
34
+ (cp >= 0xffe0 && cp <= 0xffe6) || // Fullwidth Signs
35
+ (cp >= 0x20000 && cp <= 0x2fffd) || // CJK Extension B+
36
+ (cp >= 0x30000 && cp <= 0x3fffd) // CJK Extension G+
37
+ );
38
+ }
39
+ function visualWidth(str) {
40
+ const stripped = stripAnsiSequences(str);
41
+ let w = 0;
42
+ for (const ch of stripped) {
43
+ const cp = ch.codePointAt(0);
44
+ w += isFullWidthCodePoint(cp) ? 2 : 1;
45
+ }
46
+ return w;
47
+ }
48
+ function hasLineOverflow(rendered, maxWidth) {
49
+ return rendered.split("\n").some((line) => visualWidth(line) > maxWidth);
50
+ }
51
+ function parseTableCells(line) {
52
+ return line
53
+ .replace(/^\s*\|/, "")
54
+ .replace(/\|\s*$/, "")
55
+ .split("|")
56
+ .map((c) => c.trim());
57
+ }
58
+ function renderTableAsCards(tableLines, maxWidth) {
59
+ const headers = parseTableCells(tableLines[0]);
60
+ const rows = [];
61
+ for (let i = 2; i < tableLines.length; i++) {
62
+ if (!tableLines[i].trim())
63
+ continue;
64
+ rows.push(parseTableCells(tableLines[i]));
65
+ }
66
+ if (rows.length === 0)
67
+ return tableLines.join("\n");
68
+ const cardParts = [];
69
+ let maxLineLen = 0;
70
+ for (const row of rows) {
71
+ const rowLines = [];
72
+ for (let c = 0; c < headers.length; c++) {
73
+ const line = ` ${headers[c]}: ${row[c] ?? ""}`;
74
+ rowLines.push(line);
75
+ maxLineLen = Math.max(maxLineLen, line.length);
76
+ }
77
+ cardParts.push(rowLines.join("\n"));
78
+ }
79
+ const sepLen = Math.min(maxLineLen, maxWidth - 2);
80
+ const separator = " " + "─".repeat(Math.max(sepLen - 2, 10));
81
+ return cardParts.join("\n" + separator + "\n");
82
+ }
83
+ function segmentMarkdown(md) {
84
+ const lines = md.split("\n");
85
+ const segments = [];
86
+ let currentTextLines = [];
87
+ let inFence = false;
88
+ let fenceKind = null;
89
+ let i = 0;
90
+ function flushText() {
91
+ if (currentTextLines.length > 0) {
92
+ segments.push({ type: "text", raw: currentTextLines.join("\n") });
93
+ currentTextLines = [];
94
+ }
95
+ }
96
+ while (i < lines.length) {
97
+ const fenceMatch = /^\s{0,3}(`{3,}|~{3,})/.exec(lines[i]);
98
+ if (fenceMatch) {
99
+ const kind = fenceMatch[1][0];
100
+ if (!inFence) {
101
+ inFence = true;
102
+ fenceKind = kind;
103
+ }
104
+ else if (fenceKind === kind) {
105
+ inFence = false;
106
+ fenceKind = null;
107
+ }
108
+ currentTextLines.push(lines[i]);
109
+ i++;
110
+ continue;
111
+ }
112
+ if (inFence) {
113
+ currentTextLines.push(lines[i]);
114
+ i++;
115
+ continue;
116
+ }
117
+ // Detect GFM table: header row with | followed by delimiter row
118
+ if (lines[i].includes("|") &&
119
+ i + 1 < lines.length &&
120
+ TABLE_DELIMITER_RE.test(lines[i + 1])) {
121
+ flushText();
122
+ const tableStart = i;
123
+ i += 2; // skip header + delimiter
124
+ while (i < lines.length &&
125
+ lines[i].trim().length > 0 &&
126
+ lines[i].includes("|")) {
127
+ i++;
128
+ }
129
+ segments.push({ type: "table", raw: lines.slice(tableStart, i).join("\n") });
130
+ continue;
131
+ }
132
+ currentTextLines.push(lines[i]);
133
+ i++;
134
+ }
135
+ flushText();
136
+ return segments;
137
+ }
138
+ // ------------------------------------------------------------------
139
+ // Markdown helpers
140
+ // ------------------------------------------------------------------
141
+ function escapeRegExp(text) {
142
+ return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
143
+ }
144
+ function buildIndent(tab) {
145
+ if (typeof tab === "string" && tab.length > 0)
146
+ return tab;
147
+ if (typeof tab === "number" && tab > 0)
148
+ return " ".repeat(tab);
149
+ return " ";
150
+ }
151
+ function isPointedLine(line, indent) {
152
+ const pointRegex = "(?:\\*|\\d+\\.)";
153
+ const pattern = new RegExp(`^(?:${escapeRegExp(indent)})*${pointRegex}`);
154
+ return pattern.test(line);
155
+ }
156
+ function formatUnorderedList(lines, indent) {
157
+ const markerRe = new RegExp(`^((?:${escapeRegExp(indent)})*)\\* `);
158
+ return lines
159
+ .split("\n")
160
+ .filter((line) => line.length > 0)
161
+ .map((line) => {
162
+ if (isPointedLine(line, indent)) {
163
+ return line.replace(markerRe, "$1- ");
164
+ }
165
+ return " " + line;
166
+ })
167
+ .join("\n");
168
+ }
169
+ function formatOrderedList(lines, indent) {
170
+ const markerRe = new RegExp(`^((?:${escapeRegExp(indent)})*)\\* `);
171
+ let num = 0;
172
+ return lines
173
+ .split("\n")
174
+ .filter((line) => line.length > 0)
175
+ .map((line) => {
176
+ if (isPointedLine(line, indent)) {
177
+ num += 1;
178
+ return line.replace(markerRe, `$1${num}. `);
179
+ }
180
+ const align = `${Math.max(1, num)}. `.length;
181
+ return " ".repeat(align) + line;
182
+ })
183
+ .join("\n");
184
+ }
185
+ function formatMarkdownList(body, ordered, tab) {
186
+ const trimmed = body.trim();
187
+ if (!trimmed)
188
+ return trimmed;
189
+ const indent = buildIndent(tab);
190
+ if (ordered)
191
+ return formatOrderedList(trimmed, indent);
192
+ return formatUnorderedList(trimmed, indent);
193
+ }
194
+ function renderPlainCodeBlock(code, tab) {
195
+ const indent = buildIndent(tab);
196
+ const body = code
197
+ .replace(/\n$/, "")
198
+ .split("\n")
199
+ .map((line) => `${indent}${line}`)
200
+ .join("\n");
201
+ return `\n${body}\n\n`;
202
+ }
203
+ function buildUnifiedTextRenderer(extension) {
204
+ const baseText = extension.renderer?.text;
205
+ const baseCode = extension.renderer?.code;
206
+ if (!extension.renderer)
207
+ return;
208
+ extension.renderer.text = function (...args) {
209
+ const token = args[0];
210
+ if (token &&
211
+ typeof token === "object" &&
212
+ Array.isArray(token.tokens) &&
213
+ this.parser) {
214
+ try {
215
+ return this.parser.parseInline(token.tokens);
216
+ }
217
+ catch {
218
+ // Fall through to base renderer when inline parsing fails.
219
+ }
220
+ }
221
+ if (typeof baseText === "function") {
222
+ return baseText.apply(this, args);
223
+ }
224
+ if (typeof token === "string")
225
+ return token;
226
+ if (token && typeof token === "object" && typeof token.text === "string") {
227
+ return token.text;
228
+ }
229
+ return "";
230
+ };
231
+ extension.renderer.code = function (...args) {
232
+ const token = args[0];
233
+ let code = "";
234
+ let lang = "";
235
+ if (token && typeof token === "object") {
236
+ code = typeof token.text === "string" ? token.text : "";
237
+ lang = typeof token.lang === "string" ? token.lang.trim() : "";
238
+ }
239
+ else {
240
+ code = typeof token === "string" ? token : "";
241
+ lang = typeof args[1] === "string" ? args[1].trim() : "";
242
+ }
243
+ if (!lang) {
244
+ return renderPlainCodeBlock(code, 2);
245
+ }
246
+ if (typeof baseCode === "function") {
247
+ return baseCode.apply(this, args);
248
+ }
249
+ return renderPlainCodeBlock(code, 2);
250
+ };
251
+ }
252
+ /** Width available for the activity panel (border + padding + content). */
253
+ const ACTIVITY_PANEL_RESERVE = 34;
254
+ export function markdownWidth(rightPanelVisible = false) {
255
+ const columns = process.stdout.columns;
256
+ if (!columns || Number.isNaN(columns))
257
+ return FALLBACK_MARKDOWN_WIDTH;
258
+ // Account for panel/container padding so markdown reflow aligns with
259
+ // what users actually see inside the conversation area.
260
+ const reserve = rightPanelVisible ? ACTIVITY_PANEL_RESERVE : 0;
261
+ return Math.max(MIN_MARKDOWN_WIDTH, columns - 6 - reserve);
262
+ }
263
+ function createMarkdownParser(width) {
264
+ const parser = new Marked({ gfm: true, breaks: false });
265
+ const extension = markedTerminal({
266
+ reflowText: true,
267
+ width,
268
+ tab: 2,
269
+ showSectionPrefix: true,
270
+ list: (body, ordered, tab) => formatMarkdownList(body, ordered, tab),
271
+ });
272
+ buildUnifiedTextRenderer(extension);
273
+ parser.use(extension);
274
+ return parser;
275
+ }
276
+ function getMarkdownParser(width) {
277
+ let parser = markdownParserByWidth.get(width);
278
+ if (parser)
279
+ return parser;
280
+ parser = createMarkdownParser(width);
281
+ markdownParserByWidth.set(width, parser);
282
+ if (markdownParserByWidth.size > MAX_CACHED_PARSERS) {
283
+ markdownParserByWidth.clear();
284
+ markdownParserByWidth.set(width, parser);
285
+ }
286
+ return parser;
287
+ }
288
+ function hasUnclosedFence(text) {
289
+ let openFence = null;
290
+ for (const line of text.split("\n")) {
291
+ const m = /^\s{0,3}(`{3,}|~{3,})/.exec(line);
292
+ if (!m)
293
+ continue;
294
+ const kind = m[1][0] === "~" ? "~" : "`";
295
+ if (openFence === null) {
296
+ openFence = kind;
297
+ continue;
298
+ }
299
+ if (openFence === kind) {
300
+ openFence = null;
301
+ }
302
+ }
303
+ return openFence !== null;
304
+ }
305
+ function findUnclosedFenceStart(text) {
306
+ let openFence = null;
307
+ let openFenceStart = -1;
308
+ let offset = 0;
309
+ for (const line of text.split("\n")) {
310
+ const m = /^\s{0,3}(`{3,}|~{3,})/.exec(line);
311
+ if (m) {
312
+ const kind = m[1][0] === "~" ? "~" : "`";
313
+ if (openFence === null) {
314
+ openFence = kind;
315
+ openFenceStart = offset;
316
+ }
317
+ else if (openFence === kind) {
318
+ openFence = null;
319
+ openFenceStart = -1;
320
+ }
321
+ }
322
+ offset += line.length + 1;
323
+ }
324
+ return openFence === null ? -1 : openFenceStart;
325
+ }
326
+ function findLastBlankLineBoundary(text, upto) {
327
+ const chunk = text.slice(0, upto);
328
+ const re = /\n[ \t]*\n/g;
329
+ let last = 0;
330
+ let m;
331
+ while ((m = re.exec(chunk)) !== null) {
332
+ last = m.index + m[0].length;
333
+ }
334
+ return last;
335
+ }
336
+ function splitNonEmptyLines(text) {
337
+ return text
338
+ .split("\n")
339
+ .map((line) => line.trimEnd())
340
+ .filter((line) => line.trim().length > 0);
341
+ }
342
+ function looksLikeTableBlock(lines) {
343
+ if (lines.length < 2)
344
+ return false;
345
+ return lines.every((line) => line.includes("|"));
346
+ }
347
+ function isCompleteTableBlock(lines) {
348
+ if (lines.length < 3)
349
+ return false;
350
+ if (!TABLE_DELIMITER_RE.test(lines[1]))
351
+ return false;
352
+ const bodyLines = lines.slice(2).filter((line) => line.trim().length > 0);
353
+ if (bodyLines.length === 0)
354
+ return false;
355
+ return bodyLines.every((line) => line.includes("|"));
356
+ }
357
+ function moveTrailingIncompleteTableBlock(stableText) {
358
+ if (!stableText)
359
+ return { stable: stableText, tail: "" };
360
+ let trimmedEnd = stableText.length;
361
+ while (trimmedEnd > 0 && stableText[trimmedEnd - 1] === "\n") {
362
+ trimmedEnd -= 1;
363
+ }
364
+ if (trimmedEnd === 0)
365
+ return { stable: stableText, tail: "" };
366
+ const blockStart = findLastBlankLineBoundary(stableText, trimmedEnd);
367
+ const block = stableText.slice(blockStart, trimmedEnd);
368
+ const blockLines = splitNonEmptyLines(block);
369
+ if (!looksLikeTableBlock(blockLines))
370
+ return { stable: stableText, tail: "" };
371
+ if (isCompleteTableBlock(blockLines))
372
+ return { stable: stableText, tail: "" };
373
+ return {
374
+ stable: stableText.slice(0, blockStart),
375
+ tail: stableText.slice(blockStart),
376
+ };
377
+ }
378
+ export function splitStreamingMarkdown(text) {
379
+ if (!text)
380
+ return { stable: "", tail: "" };
381
+ const unclosedFenceStart = findUnclosedFenceStart(text);
382
+ if (unclosedFenceStart >= 0) {
383
+ return {
384
+ stable: text.slice(0, unclosedFenceStart),
385
+ tail: text.slice(unclosedFenceStart),
386
+ };
387
+ }
388
+ let stableEnd = text.length;
389
+ if (!text.endsWith("\n")) {
390
+ const lastNewline = text.lastIndexOf("\n");
391
+ if (lastNewline < 0) {
392
+ return { stable: "", tail: text };
393
+ }
394
+ stableEnd = lastNewline + 1;
395
+ }
396
+ let stable = text.slice(0, stableEnd);
397
+ let tail = text.slice(stableEnd);
398
+ const adjusted = moveTrailingIncompleteTableBlock(stable);
399
+ stable = adjusted.stable;
400
+ if (adjusted.tail.length > 0) {
401
+ tail = adjusted.tail + tail;
402
+ }
403
+ return { stable, tail };
404
+ }
405
+ function normalizeMarkdownForRender(md) {
406
+ const lines = md.split("\n");
407
+ let inFence = false;
408
+ let fenceKind = null;
409
+ for (let i = 0; i < lines.length; i++) {
410
+ const line = lines[i];
411
+ const fence = /^\s{0,3}(`{3,}|~{3,})/.exec(line);
412
+ if (fence) {
413
+ const kind = fence[1][0] === "~" ? "~" : "`";
414
+ if (!inFence) {
415
+ inFence = true;
416
+ fenceKind = kind;
417
+ }
418
+ else if (fenceKind === kind) {
419
+ inFence = false;
420
+ fenceKind = null;
421
+ }
422
+ continue;
423
+ }
424
+ if (inFence)
425
+ continue;
426
+ lines[i] = line.replace(STRONG_PUNCTUATION_FIX_RE, "$1 $2");
427
+ }
428
+ return lines.join("\n");
429
+ }
430
+ function renderMarkdown(md, width, trimEndOutput = true) {
431
+ try {
432
+ const normalized = normalizeMarkdownForRender(md);
433
+ const segments = segmentMarkdown(normalized);
434
+ // Fast path: single text segment (most common case — no tables)
435
+ if (segments.length === 1 && segments[0].type === "text") {
436
+ const rendered = getMarkdownParser(width).parse(segments[0].raw);
437
+ return trimEndOutput ? rendered.trimEnd() : rendered;
438
+ }
439
+ const parts = [];
440
+ for (const seg of segments) {
441
+ if (seg.type === "table") {
442
+ // Render through marked first, then check actual visual width
443
+ const rendered = getMarkdownParser(width).parse(seg.raw);
444
+ if (hasLineOverflow(rendered, width)) {
445
+ const tableLines = seg.raw.split("\n").filter((l) => l.trim());
446
+ parts.push(renderTableAsCards(tableLines, width));
447
+ continue;
448
+ }
449
+ parts.push(rendered);
450
+ }
451
+ else if (seg.raw.trim()) {
452
+ parts.push(getMarkdownParser(width).parse(seg.raw));
453
+ }
454
+ }
455
+ const result = parts.join("");
456
+ return trimEndOutput ? result.trimEnd() : result;
457
+ }
458
+ catch {
459
+ return md;
460
+ }
461
+ }
462
+ export function renderMarkdownForDisplay(md, width = FALLBACK_MARKDOWN_WIDTH) {
463
+ return renderMarkdown(md, width);
464
+ }
465
+ // ------------------------------------------------------------------
466
+ // Entry renderers (exported for use by Static rendering in app.tsx)
467
+ // ------------------------------------------------------------------
468
+ export function UserMessageView({ text, queued }) {
469
+ return (_jsxs(Box, { marginTop: 1, marginBottom: 0, children: [_jsx(Text, { color: theme.accent, bold: true, children: "> " }), _jsx(Text, { children: text }), queued && _jsx(Text, { color: "yellow", children: " (Queued)" })] }));
470
+ }
471
+ export function AssistantResponseView({ text, markdownMode, isStreaming, width, }) {
472
+ let output = text;
473
+ if (markdownMode === "rendered") {
474
+ if (isStreaming) {
475
+ const split = splitStreamingMarkdown(text);
476
+ const renderedStable = split.stable.length > 0
477
+ ? renderMarkdown(split.stable, width, false)
478
+ : "";
479
+ if (renderedStable &&
480
+ split.tail &&
481
+ !renderedStable.endsWith("\n") &&
482
+ !split.tail.startsWith("\n")) {
483
+ output = `${renderedStable}\n${split.tail}`;
484
+ }
485
+ else {
486
+ output = renderedStable + split.tail;
487
+ }
488
+ }
489
+ else {
490
+ output = hasUnclosedFence(text) ? text : renderMarkdown(text, width);
491
+ }
492
+ }
493
+ return (_jsx(Box, { paddingLeft: 1, marginTop: 0, children: _jsx(Text, { children: output }) }));
494
+ }
495
+ export function InterruptedMarkerView({ text }) {
496
+ return (_jsx(Box, { paddingLeft: 1, children: _jsx(Text, { color: "yellow", children: text }) }));
497
+ }
498
+ export function ProgressLineView({ text }) {
499
+ return (_jsx(Box, { children: _jsx(Text, { dimColor: true, children: text }) }));
500
+ }
501
+ export function SubAgentRollupView({ text }) {
502
+ const lines = text.split("\n");
503
+ return (_jsx(Box, { flexDirection: "column", children: lines.map((line, idx) => (_jsx(Text, { dimColor: true, wrap: "truncate-end", children: line || " " }, idx))) }));
504
+ }
505
+ export function SubAgentDoneView({ text }) {
506
+ const match = text.match(/^\[(.+)\] \[done\] \((.+)\)$/);
507
+ if (!match) {
508
+ return (_jsx(Box, { children: _jsxs(Text, { dimColor: true, children: ["- ", text] }) }));
509
+ }
510
+ return (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "- " }), _jsxs(Text, { dimColor: true, children: ["[", match[1], "] "] }), _jsx(Text, { color: "green", children: "[done]" }), _jsxs(Text, { dimColor: true, children: [" (", match[2], ")"] })] }));
511
+ }
512
+ function formatElapsed(ms) {
513
+ if (ms < 1000)
514
+ return `${ms}ms`;
515
+ return `${(ms / 1000).toFixed(1)}s`;
516
+ }
517
+ export function ToolCallView({ text, startedAt, elapsedMs, }) {
518
+ const trimmed = text.trim();
519
+ const firstSpace = trimmed.indexOf(" ");
520
+ const toolName = firstSpace === -1 ? trimmed : trimmed.slice(0, firstSpace);
521
+ const rest = firstSpace === -1 ? "" : trimmed.slice(firstSpace + 1);
522
+ // Live timer for in-progress tool calls
523
+ const [liveMs, setLiveMs] = useState(null);
524
+ useEffect(() => {
525
+ if (elapsedMs !== undefined || !startedAt) {
526
+ setLiveMs(null);
527
+ return;
528
+ }
529
+ // Update every 100ms for smooth display
530
+ setLiveMs(Date.now() - startedAt);
531
+ const interval = setInterval(() => {
532
+ setLiveMs(Date.now() - startedAt);
533
+ }, 100);
534
+ return () => clearInterval(interval);
535
+ }, [startedAt, elapsedMs]);
536
+ const timeDisplay = elapsedMs !== undefined
537
+ ? formatElapsed(elapsedMs)
538
+ : liveMs !== null
539
+ ? formatElapsed(liveMs)
540
+ : null;
541
+ return (_jsxs(Box, { children: [_jsxs(Text, { color: "cyan", children: ["- ", toolName] }), timeDisplay ? (_jsxs(Text, { dimColor: true, children: [" (", timeDisplay, elapsedMs !== undefined ? "" : "…", ") "] })) : null, rest ? _jsx(Text, { dimColor: true, children: rest }) : null] }));
542
+ }
543
+ function diffLineColor(line) {
544
+ const payloadIdx = line.indexOf("| ");
545
+ const payload = payloadIdx >= 0 ? line.slice(payloadIdx + 2) : line;
546
+ if (payload.startsWith("@@"))
547
+ return "yellow";
548
+ if (payload.startsWith("+++ ") || payload.startsWith("--- "))
549
+ return "gray";
550
+ if (payload.startsWith("+"))
551
+ return "green";
552
+ if (payload.startsWith("-"))
553
+ return "red";
554
+ if (payload.startsWith("... ["))
555
+ return "gray";
556
+ return undefined;
557
+ }
558
+ export function ToolResultView({ text, dim }) {
559
+ const lines = text.split("\n");
560
+ return (_jsx(Box, { flexDirection: "column", paddingLeft: 2, children: lines.map((line, idx) => (_jsx(Text, { color: dim ? undefined : diffLineColor(line), dimColor: dim, children: line || " " }, idx))) }));
561
+ }
562
+ export function ReasoningView({ text }) {
563
+ return (_jsx(Box, { children: _jsx(Text, { color: "gray", children: text }) }));
564
+ }
565
+ export function StatusView({ text }) {
566
+ return (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "yellow", children: text }) }));
567
+ }
568
+ export function ErrorView({ text }) {
569
+ return (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "red", children: ["[x] Error: ", text] }) }));
570
+ }
571
+ export function ConversationPanel({ entries, markdownMode = "rendered", streamingAssistantEntryId = null, rightPanelVisible = false, }) {
572
+ const width = markdownWidth(rightPanelVisible);
573
+ return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingX: 1, children: [_jsx(Box, { marginBottom: 0, children: _jsx(Text, { color: theme.accent, bold: true, children: "CONVERSATION" }) }), entries.map((entry, i) => {
574
+ const key = entry.id ?? `entry-${i}`;
575
+ // Add visual spacing when a reasoning block follows a progress entry
576
+ // (indicates a new thinking segment after a tool call).
577
+ const prev = i > 0 ? entries[i - 1] : null;
578
+ const needsSpacing = entry.kind === "reasoning" && (prev?.kind === "progress" ||
579
+ prev?.kind === "tool_call" ||
580
+ prev?.kind === "sub_agent_rollup");
581
+ switch (entry.kind) {
582
+ case "user":
583
+ return _jsx(UserMessageView, { text: entry.text, queued: entry.queued }, key);
584
+ case "assistant":
585
+ return (_jsx(AssistantResponseView, { text: entry.text, markdownMode: markdownMode, isStreaming: entry.id === streamingAssistantEntryId, width: width }, key));
586
+ case "interrupted_marker":
587
+ return _jsx(InterruptedMarkerView, { text: entry.text }, key);
588
+ case "progress":
589
+ return _jsx(ProgressLineView, { text: entry.text }, key);
590
+ case "sub_agent_rollup":
591
+ return _jsx(SubAgentRollupView, { text: entry.text }, key);
592
+ case "sub_agent_done":
593
+ return _jsx(SubAgentDoneView, { text: entry.text }, key);
594
+ case "tool_call":
595
+ return _jsx(ToolCallView, { text: entry.text, startedAt: entry.startedAt, elapsedMs: entry.elapsedMs }, key);
596
+ case "tool_result":
597
+ return _jsx(ToolResultView, { text: entry.text, dim: entry.dim }, key);
598
+ case "reasoning":
599
+ return (_jsxs(React.Fragment, { children: [needsSpacing && _jsx(Box, { marginTop: 1 }), _jsx(ReasoningView, { text: entry.text })] }, key));
600
+ case "status":
601
+ return _jsx(StatusView, { text: entry.text }, key);
602
+ case "error":
603
+ return _jsx(ErrorView, { text: entry.text }, key);
604
+ case "compact_mark":
605
+ return _jsx(StatusView, { text: entry.text }, key);
606
+ default:
607
+ return null;
608
+ }
609
+ })] }));
610
+ }
611
+ //# sourceMappingURL=conversation-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-panel.js","sourceRoot":"","sources":["../../../src/tui/components/conversation-panel.tsx"],"names":[],"mappings":"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"}