neoctl 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 (218) hide show
  1. package/README.md +146 -0
  2. package/dist/agents/agent-definition.d.ts +39 -0
  3. package/dist/agents/agent-definition.js +57 -0
  4. package/dist/agents/agent-definition.js.map +1 -0
  5. package/dist/agents/agent-tool.d.ts +38 -0
  6. package/dist/agents/agent-tool.js +336 -0
  7. package/dist/agents/agent-tool.js.map +1 -0
  8. package/dist/agents/local-agent-task.d.ts +52 -0
  9. package/dist/agents/local-agent-task.js +63 -0
  10. package/dist/agents/local-agent-task.js.map +1 -0
  11. package/dist/agents/smoke-agents.d.ts +1 -0
  12. package/dist/agents/smoke-agents.js +142 -0
  13. package/dist/agents/smoke-agents.js.map +1 -0
  14. package/dist/agents/team.d.ts +10 -0
  15. package/dist/agents/team.js +2 -0
  16. package/dist/agents/team.js.map +1 -0
  17. package/dist/app/app-state.d.ts +21 -0
  18. package/dist/app/app-state.js +24 -0
  19. package/dist/app/app-state.js.map +1 -0
  20. package/dist/context/compaction.d.ts +49 -0
  21. package/dist/context/compaction.js +334 -0
  22. package/dist/context/compaction.js.map +1 -0
  23. package/dist/context/context-manager.d.ts +53 -0
  24. package/dist/context/context-manager.js +98 -0
  25. package/dist/context/context-manager.js.map +1 -0
  26. package/dist/context/prompts.d.ts +22 -0
  27. package/dist/context/prompts.js +84 -0
  28. package/dist/context/prompts.js.map +1 -0
  29. package/dist/context/smoke-context.d.ts +1 -0
  30. package/dist/context/smoke-context.js +151 -0
  31. package/dist/context/smoke-context.js.map +1 -0
  32. package/dist/core/assistant-output-filter.d.ts +9 -0
  33. package/dist/core/assistant-output-filter.js +78 -0
  34. package/dist/core/assistant-output-filter.js.map +1 -0
  35. package/dist/core/context-metrics.d.ts +10 -0
  36. package/dist/core/context-metrics.js +77 -0
  37. package/dist/core/context-metrics.js.map +1 -0
  38. package/dist/core/message-pipeline.d.ts +10 -0
  39. package/dist/core/message-pipeline.js +138 -0
  40. package/dist/core/message-pipeline.js.map +1 -0
  41. package/dist/core/query-engine.d.ts +86 -0
  42. package/dist/core/query-engine.js +337 -0
  43. package/dist/core/query-engine.js.map +1 -0
  44. package/dist/core/query.d.ts +47 -0
  45. package/dist/core/query.js +408 -0
  46. package/dist/core/query.js.map +1 -0
  47. package/dist/core/run-agent.d.ts +48 -0
  48. package/dist/core/run-agent.js +150 -0
  49. package/dist/core/run-agent.js.map +1 -0
  50. package/dist/core/smoke-core-loop.d.ts +1 -0
  51. package/dist/core/smoke-core-loop.js +42 -0
  52. package/dist/core/smoke-core-loop.js.map +1 -0
  53. package/dist/core/state.d.ts +37 -0
  54. package/dist/core/state.js +31 -0
  55. package/dist/core/state.js.map +1 -0
  56. package/dist/index.d.ts +42 -0
  57. package/dist/index.js +43 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/model/communication-logger.d.ts +30 -0
  60. package/dist/model/communication-logger.js +218 -0
  61. package/dist/model/communication-logger.js.map +1 -0
  62. package/dist/model/config.d.ts +25 -0
  63. package/dist/model/config.js +65 -0
  64. package/dist/model/config.js.map +1 -0
  65. package/dist/model/context-window.d.ts +32 -0
  66. package/dist/model/context-window.js +76 -0
  67. package/dist/model/context-window.js.map +1 -0
  68. package/dist/model/credentials.d.ts +13 -0
  69. package/dist/model/credentials.js +19 -0
  70. package/dist/model/credentials.js.map +1 -0
  71. package/dist/model/env.d.ts +8 -0
  72. package/dist/model/env.js +36 -0
  73. package/dist/model/env.js.map +1 -0
  74. package/dist/model/errors.d.ts +42 -0
  75. package/dist/model/errors.js +74 -0
  76. package/dist/model/errors.js.map +1 -0
  77. package/dist/model/http-transport.d.ts +26 -0
  78. package/dist/model/http-transport.js +118 -0
  79. package/dist/model/http-transport.js.map +1 -0
  80. package/dist/model/model-gateway.d.ts +103 -0
  81. package/dist/model/model-gateway.js +15 -0
  82. package/dist/model/model-gateway.js.map +1 -0
  83. package/dist/model/model-metadata.json +677 -0
  84. package/dist/model/openai-adapter.d.ts +34 -0
  85. package/dist/model/openai-adapter.js +152 -0
  86. package/dist/model/openai-adapter.js.map +1 -0
  87. package/dist/model/openai-chat-mapper.d.ts +11 -0
  88. package/dist/model/openai-chat-mapper.js +114 -0
  89. package/dist/model/openai-chat-mapper.js.map +1 -0
  90. package/dist/model/openai-mappers.d.ts +21 -0
  91. package/dist/model/openai-mappers.js +261 -0
  92. package/dist/model/openai-mappers.js.map +1 -0
  93. package/dist/model/openai-responses-adapter.d.ts +2 -0
  94. package/dist/model/openai-responses-adapter.js +2 -0
  95. package/dist/model/openai-responses-adapter.js.map +1 -0
  96. package/dist/model/openai-responses-mapper.d.ts +11 -0
  97. package/dist/model/openai-responses-mapper.js +218 -0
  98. package/dist/model/openai-responses-mapper.js.map +1 -0
  99. package/dist/model/provider-adapter.d.ts +17 -0
  100. package/dist/model/provider-adapter.js +2 -0
  101. package/dist/model/provider-adapter.js.map +1 -0
  102. package/dist/model/provider-factory.d.ts +4 -0
  103. package/dist/model/provider-factory.js +29 -0
  104. package/dist/model/provider-factory.js.map +1 -0
  105. package/dist/model/retry-runner.d.ts +8 -0
  106. package/dist/model/retry-runner.js +28 -0
  107. package/dist/model/retry-runner.js.map +1 -0
  108. package/dist/model/smoke-openai.d.ts +1 -0
  109. package/dist/model/smoke-openai.js +44 -0
  110. package/dist/model/smoke-openai.js.map +1 -0
  111. package/dist/model/smoke-responses-mapper.d.ts +1 -0
  112. package/dist/model/smoke-responses-mapper.js +72 -0
  113. package/dist/model/smoke-responses-mapper.js.map +1 -0
  114. package/dist/model/sse-decoder.d.ts +5 -0
  115. package/dist/model/sse-decoder.js +79 -0
  116. package/dist/model/sse-decoder.js.map +1 -0
  117. package/dist/repl/clipboard.d.ts +14 -0
  118. package/dist/repl/clipboard.js +92 -0
  119. package/dist/repl/clipboard.js.map +1 -0
  120. package/dist/repl/commands.d.ts +38 -0
  121. package/dist/repl/commands.js +86 -0
  122. package/dist/repl/commands.js.map +1 -0
  123. package/dist/repl/index.d.ts +2 -0
  124. package/dist/repl/index.js +2836 -0
  125. package/dist/repl/index.js.map +1 -0
  126. package/dist/repl/markdown-renderer.d.ts +81 -0
  127. package/dist/repl/markdown-renderer.js +546 -0
  128. package/dist/repl/markdown-renderer.js.map +1 -0
  129. package/dist/repl/render.d.ts +2 -0
  130. package/dist/repl/render.js +45 -0
  131. package/dist/repl/render.js.map +1 -0
  132. package/dist/repl/status-line.d.ts +19 -0
  133. package/dist/repl/status-line.js +160 -0
  134. package/dist/repl/status-line.js.map +1 -0
  135. package/dist/safety/audit.d.ts +10 -0
  136. package/dist/safety/audit.js +2 -0
  137. package/dist/safety/audit.js.map +1 -0
  138. package/dist/safety/permissions.d.ts +10 -0
  139. package/dist/safety/permissions.js +2 -0
  140. package/dist/safety/permissions.js.map +1 -0
  141. package/dist/safety/sandbox.d.ts +6 -0
  142. package/dist/safety/sandbox.js +2 -0
  143. package/dist/safety/sandbox.js.map +1 -0
  144. package/dist/session/session-store.d.ts +98 -0
  145. package/dist/session/session-store.js +249 -0
  146. package/dist/session/session-store.js.map +1 -0
  147. package/dist/session/smoke-session.d.ts +1 -0
  148. package/dist/session/smoke-session.js +85 -0
  149. package/dist/session/smoke-session.js.map +1 -0
  150. package/dist/session/tool-result-memory.d.ts +64 -0
  151. package/dist/session/tool-result-memory.js +303 -0
  152. package/dist/session/tool-result-memory.js.map +1 -0
  153. package/dist/skills/skill-tool.d.ts +28 -0
  154. package/dist/skills/skill-tool.js +107 -0
  155. package/dist/skills/skill-tool.js.map +1 -0
  156. package/dist/skills/smoke-skills.d.ts +1 -0
  157. package/dist/skills/smoke-skills.js +60 -0
  158. package/dist/skills/smoke-skills.js.map +1 -0
  159. package/dist/tasks/task-store.d.ts +43 -0
  160. package/dist/tasks/task-store.js +150 -0
  161. package/dist/tasks/task-store.js.map +1 -0
  162. package/dist/tasks/task-tools.d.ts +31 -0
  163. package/dist/tasks/task-tools.js +232 -0
  164. package/dist/tasks/task-tools.js.map +1 -0
  165. package/dist/tools/builtins/echo-tool.d.ts +4 -0
  166. package/dist/tools/builtins/echo-tool.js +26 -0
  167. package/dist/tools/builtins/echo-tool.js.map +1 -0
  168. package/dist/tools/builtins/edit-tool.d.ts +30 -0
  169. package/dist/tools/builtins/edit-tool.js +423 -0
  170. package/dist/tools/builtins/edit-tool.js.map +1 -0
  171. package/dist/tools/builtins/exec-tool.d.ts +18 -0
  172. package/dist/tools/builtins/exec-tool.js +290 -0
  173. package/dist/tools/builtins/exec-tool.js.map +1 -0
  174. package/dist/tools/builtins/filesystem-tools.d.ts +16 -0
  175. package/dist/tools/builtins/filesystem-tools.js +306 -0
  176. package/dist/tools/builtins/filesystem-tools.js.map +1 -0
  177. package/dist/tools/builtins/grep-tool.d.ts +56 -0
  178. package/dist/tools/builtins/grep-tool.js +320 -0
  179. package/dist/tools/builtins/grep-tool.js.map +1 -0
  180. package/dist/tools/builtins/ripgrep-binary.d.ts +6 -0
  181. package/dist/tools/builtins/ripgrep-binary.js +51 -0
  182. package/dist/tools/builtins/ripgrep-binary.js.map +1 -0
  183. package/dist/tools/builtins/search-providers.d.ts +49 -0
  184. package/dist/tools/builtins/search-providers.js +240 -0
  185. package/dist/tools/builtins/search-providers.js.map +1 -0
  186. package/dist/tools/builtins/search-tool.d.ts +18 -0
  187. package/dist/tools/builtins/search-tool.js +171 -0
  188. package/dist/tools/builtins/search-tool.js.map +1 -0
  189. package/dist/tools/registry.d.ts +18 -0
  190. package/dist/tools/registry.js +69 -0
  191. package/dist/tools/registry.js.map +1 -0
  192. package/dist/tools/run-tool-use.d.ts +13 -0
  193. package/dist/tools/run-tool-use.js +113 -0
  194. package/dist/tools/run-tool-use.js.map +1 -0
  195. package/dist/tools/schema.d.ts +2 -0
  196. package/dist/tools/schema.js +61 -0
  197. package/dist/tools/schema.js.map +1 -0
  198. package/dist/tools/smoke-tool-system.d.ts +1 -0
  199. package/dist/tools/smoke-tool-system.js +204 -0
  200. package/dist/tools/smoke-tool-system.js.map +1 -0
  201. package/dist/tools/streaming-tool-executor.d.ts +19 -0
  202. package/dist/tools/streaming-tool-executor.js +89 -0
  203. package/dist/tools/streaming-tool-executor.js.map +1 -0
  204. package/dist/tools/tool-orchestration.d.ts +15 -0
  205. package/dist/tools/tool-orchestration.js +89 -0
  206. package/dist/tools/tool-orchestration.js.map +1 -0
  207. package/dist/tools/tool.d.ts +121 -0
  208. package/dist/tools/tool.js +4 -0
  209. package/dist/tools/tool.js.map +1 -0
  210. package/dist/types/events.d.ts +66 -0
  211. package/dist/types/events.js +2 -0
  212. package/dist/types/events.js.map +1 -0
  213. package/dist/types/messages.d.ts +57 -0
  214. package/dist/types/messages.js +42 -0
  215. package/dist/types/messages.js.map +1 -0
  216. package/package.json +49 -0
  217. package/scripts/copy-model-metadata.mjs +4 -0
  218. package/scripts/install-ripgrep.cjs +152 -0
@@ -0,0 +1,546 @@
1
+ import React, { useEffect, useMemo, useState } from "react";
2
+ import { Box, Text } from "ink";
3
+ import { Lexer } from "marked";
4
+ import { bundledLanguages, codeToTokens } from "shiki";
5
+ const e = React.createElement;
6
+ const SHIKI_THEME = "dark-plus";
7
+ const tokenCache = new Map();
8
+ const renderedLinesCache = new Map();
9
+ export function markdownRenderKey(text, kind, width) {
10
+ return `${kind}\0${width}\0${text}`;
11
+ }
12
+ export function MarkdownText({ text, kind, width, maxLines, skipLines = 0, asyncRender = true, onRenderComplete, }) {
13
+ const renderKey = markdownRenderKey(text, kind, width);
14
+ const useCachedRender = asyncRender || maxLines === undefined;
15
+ const cachedLines = useCachedRender ? renderedLinesCache.get(renderKey) : undefined;
16
+ const fallbackLines = useMemo(() => cachedLines ?? renderMarkdownPreviewToLines(text, kind, width), [cachedLines, text, kind, width]);
17
+ const [asyncLines, setAsyncLines] = useState(() => cachedLines ? { key: renderKey, lines: cachedLines } : undefined);
18
+ useEffect(() => {
19
+ const cached = useCachedRender ? renderedLinesCache.get(renderKey) : undefined;
20
+ if (cached) {
21
+ setAsyncLines({ key: renderKey, lines: cached });
22
+ if (asyncRender)
23
+ onRenderComplete?.(renderKey);
24
+ return undefined;
25
+ }
26
+ if (!asyncRender) {
27
+ setAsyncLines(undefined);
28
+ return undefined;
29
+ }
30
+ let cancelled = false;
31
+ setAsyncLines(undefined);
32
+ const timer = setTimeout(() => {
33
+ void renderMarkdownToLines(text, kind, width)
34
+ .catch(() => renderPlainMarkdownPreview(text, kind, width))
35
+ .then((rendered) => {
36
+ rememberRenderedLines(renderKey, rendered);
37
+ if (!cancelled) {
38
+ setAsyncLines({ key: renderKey, lines: rendered });
39
+ onRenderComplete?.(renderKey);
40
+ }
41
+ });
42
+ }, 40);
43
+ return () => {
44
+ cancelled = true;
45
+ clearTimeout(timer);
46
+ };
47
+ }, [text, kind, width, renderKey, asyncRender, useCachedRender, onRenderComplete]);
48
+ const renderedLines = clipRenderedLines(asyncLines?.key === renderKey ? asyncLines.lines : fallbackLines, maxLines, skipLines);
49
+ return e(Box, { flexDirection: "column" }, ...renderedLines.map((line, lineIndex) => e(Text, { key: `md-line-${lineIndex}`, color: line.color ?? (kind === "meta" ? "gray" : undefined) }, ...line.segments.map((segment, segmentIndex) => e(Text, {
50
+ key: `md-seg-${lineIndex}-${segmentIndex}`,
51
+ color: segment.color,
52
+ backgroundColor: segment.backgroundColor,
53
+ bold: segment.bold,
54
+ italic: segment.italic,
55
+ underline: segment.underline,
56
+ dimColor: segment.dimColor,
57
+ }, segment.text)))));
58
+ }
59
+ export function estimateMarkdownLineCount(markdown, width) {
60
+ return renderMarkdownPreviewToLines(markdown, "assistant", width).length;
61
+ }
62
+ function rememberRenderedLines(renderKey, lines) {
63
+ renderedLinesCache.set(renderKey, lines);
64
+ const firstKey = renderedLinesCache.keys().next().value;
65
+ if (renderedLinesCache.size > 200 && firstKey)
66
+ renderedLinesCache.delete(firstKey);
67
+ }
68
+ async function renderMarkdownToLines(markdown, kind, width) {
69
+ const normalized = normalizeIndentedFences(markdown.replace(/\r\n/g, "\n"));
70
+ const tokens = Lexer.lex(normalized, { gfm: true });
71
+ const lines = [];
72
+ const usableWidth = Math.max(10, width);
73
+ for (const token of tokens) {
74
+ await appendToken(lines, token, kind, usableWidth);
75
+ }
76
+ return lines.length ? lines : [{ segments: [{ text: "" }] }];
77
+ }
78
+ async function appendToken(lines, token, kind, width) {
79
+ switch (token.type) {
80
+ case "space":
81
+ if (lines.length > 0)
82
+ lines.push({ segments: [{ text: " " }] });
83
+ return;
84
+ case "heading": {
85
+ const heading = token;
86
+ const segments = [
87
+ ...inlineSegments(heading.tokens, { bold: true, color: heading.depth <= 2 ? "cyan" : "blue" }),
88
+ ];
89
+ lines.push(...wrapSegments(segments, width).map((wrapped) => ({ segments: wrapped })));
90
+ return;
91
+ }
92
+ case "paragraph": {
93
+ const paragraph = token;
94
+ appendWrapped(lines, inlineSegments(paragraph.tokens, {}), width, kind);
95
+ return;
96
+ }
97
+ case "text": {
98
+ const textToken = token;
99
+ appendWrapped(lines, inlineSegments(textToken.tokens ?? [textToken], {}), width, kind);
100
+ return;
101
+ }
102
+ case "code": {
103
+ await appendCode(lines, token, width);
104
+ return;
105
+ }
106
+ case "list": {
107
+ await appendList(lines, token, kind, width);
108
+ return;
109
+ }
110
+ case "blockquote": {
111
+ await appendBlockquote(lines, token, kind, width);
112
+ return;
113
+ }
114
+ case "hr":
115
+ lines.push({ segments: [{ text: "-".repeat(Math.min(width, 80)), color: "gray" }] });
116
+ return;
117
+ case "table": {
118
+ appendTable(lines, token, width);
119
+ return;
120
+ }
121
+ case "html": {
122
+ const html = token;
123
+ appendWrapped(lines, [{ text: html.text || html.raw, color: "gray" }], width, kind);
124
+ return;
125
+ }
126
+ default: {
127
+ const fallback = fallbackText(token);
128
+ if (fallback)
129
+ appendWrapped(lines, [{ text: fallback }], width, kind);
130
+ }
131
+ }
132
+ }
133
+ function renderMarkdownPreviewToLines(markdown, kind, width) {
134
+ try {
135
+ const normalized = normalizeIndentedFences(markdown.replace(/\r\n/g, "\n"));
136
+ const tokens = Lexer.lex(normalized, { gfm: true });
137
+ const lines = [];
138
+ const usableWidth = Math.max(10, width);
139
+ for (const token of tokens)
140
+ appendPreviewToken(lines, token, kind, usableWidth);
141
+ return lines.length ? lines : [{ segments: [{ text: "" }] }];
142
+ }
143
+ catch {
144
+ return renderPlainMarkdownPreview(markdown, kind, width);
145
+ }
146
+ }
147
+ function renderPlainMarkdownPreview(markdown, kind, width) {
148
+ const plainSegments = markdown
149
+ .replace(/\r\n/g, "\n")
150
+ .split("\n")
151
+ .flatMap((line, index, all) => index === all.length - 1 ? [{ text: line }] : [{ text: line }, { text: "\n" }]);
152
+ const rendered = wrapSegments(plainSegments, Math.max(10, width)).map((segments) => ({
153
+ segments: segments.length ? segments : [{ text: "" }],
154
+ color: kind === "error" ? "red" : undefined,
155
+ }));
156
+ return rendered.length ? rendered : [{ segments: [{ text: "" }] }];
157
+ }
158
+ function appendPreviewToken(lines, token, kind, width) {
159
+ switch (token.type) {
160
+ case "space":
161
+ if (lines.length > 0)
162
+ lines.push({ segments: [{ text: " " }] });
163
+ return;
164
+ case "heading": {
165
+ const heading = token;
166
+ const segments = [
167
+ ...inlineSegments(heading.tokens, { bold: true, color: heading.depth <= 2 ? "cyan" : "blue" }),
168
+ ];
169
+ lines.push(...wrapSegments(segments, width).map((wrapped) => ({ segments: wrapped })));
170
+ return;
171
+ }
172
+ case "paragraph": {
173
+ const paragraph = token;
174
+ appendWrapped(lines, inlineSegments(paragraph.tokens, {}), width, kind);
175
+ return;
176
+ }
177
+ case "text": {
178
+ const textToken = token;
179
+ appendWrapped(lines, inlineSegments(textToken.tokens ?? [textToken], {}), width, kind);
180
+ return;
181
+ }
182
+ case "code": {
183
+ appendCodePreview(lines, token, width);
184
+ return;
185
+ }
186
+ case "list": {
187
+ appendListPreview(lines, token, kind, width);
188
+ return;
189
+ }
190
+ case "blockquote": {
191
+ appendBlockquotePreview(lines, token, kind, width);
192
+ return;
193
+ }
194
+ case "hr":
195
+ lines.push({ segments: [{ text: "-".repeat(Math.min(width, 80)), color: "gray" }] });
196
+ return;
197
+ case "table": {
198
+ appendTable(lines, token, width);
199
+ return;
200
+ }
201
+ case "html": {
202
+ const html = token;
203
+ appendWrapped(lines, [{ text: html.text || html.raw, color: "gray" }], width, kind);
204
+ return;
205
+ }
206
+ default: {
207
+ const fallback = fallbackText(token);
208
+ if (fallback)
209
+ appendWrapped(lines, [{ text: fallback }], width, kind);
210
+ }
211
+ }
212
+ }
213
+ function clipRenderedLines(lines, maxLines, skipLines = 0) {
214
+ const start = Math.max(0, skipLines);
215
+ if (maxLines === undefined)
216
+ return lines.slice(start);
217
+ if (maxLines <= 0)
218
+ return [];
219
+ return lines.slice(start, start + maxLines);
220
+ }
221
+ function appendWrapped(lines, segments, width, kind) {
222
+ const wrapped = wrapSegments(segments, width);
223
+ for (const line of wrapped) {
224
+ lines.push({ segments: line, color: kind === "error" ? "red" : undefined });
225
+ }
226
+ }
227
+ async function appendCode(lines, token, width) {
228
+ const language = normalizeLanguage(token.lang ?? "");
229
+ const highlighted = await highlightCode(token.text, language);
230
+ for (const line of highlighted) {
231
+ for (const wrapped of wrapSegments(line.length ? line : [{ text: " " }], width)) {
232
+ lines.push({ segments: wrapped.length ? wrapped : [{ text: " " }] });
233
+ }
234
+ }
235
+ }
236
+ async function appendList(lines, token, kind, width) {
237
+ let number = typeof token.start === "number" ? token.start : 1;
238
+ for (const item of token.items) {
239
+ const marker = token.ordered ? `${number}. ` : "- ";
240
+ number += 1;
241
+ const nested = [];
242
+ for (const child of item.tokens) {
243
+ await appendToken(nested, child, kind, Math.max(10, width - marker.length));
244
+ }
245
+ appendListItemLines(lines, marker, nested, kind);
246
+ }
247
+ }
248
+ async function appendBlockquote(lines, token, kind, width) {
249
+ const nested = [];
250
+ for (const child of token.tokens) {
251
+ await appendToken(nested, child, kind, Math.max(10, width - 2));
252
+ }
253
+ appendBlockquoteLines(lines, nested);
254
+ }
255
+ function appendCodePreview(lines, token, width) {
256
+ const language = normalizeLanguage(token.lang ?? "");
257
+ const codeLines = token.text.split("\n");
258
+ for (const [index, line] of codeLines.entries()) {
259
+ const gutter = index === 0 && language !== "text" ? `${language} ` : "";
260
+ for (const wrapped of wrapSegments([{ text: `${gutter}${line || " "}`, color: "gray" }], width)) {
261
+ lines.push({ segments: wrapped.length ? wrapped : [{ text: " " }] });
262
+ }
263
+ }
264
+ }
265
+ function appendListPreview(lines, token, kind, width) {
266
+ let number = typeof token.start === "number" ? token.start : 1;
267
+ for (const item of token.items) {
268
+ const marker = token.ordered ? `${number}. ` : "- ";
269
+ number += 1;
270
+ const nested = [];
271
+ for (const child of item.tokens) {
272
+ appendPreviewToken(nested, child, kind, Math.max(10, width - marker.length));
273
+ }
274
+ appendListItemLines(lines, marker, nested, kind);
275
+ }
276
+ }
277
+ function appendListItemLines(lines, marker, nested, kind) {
278
+ const itemLines = nested.length ? nested : [{ segments: [{ text: "" }] }];
279
+ for (const [index, line] of itemLines.entries()) {
280
+ lines.push({
281
+ color: line.color ?? (kind === "error" ? "red" : undefined),
282
+ segments: [{ text: index === 0 ? marker : " ".repeat(marker.length), color: "gray" }, ...line.segments],
283
+ });
284
+ }
285
+ }
286
+ function appendBlockquotePreview(lines, token, kind, width) {
287
+ const nested = [];
288
+ for (const child of token.tokens)
289
+ appendPreviewToken(nested, child, kind, Math.max(10, width - 2));
290
+ appendBlockquoteLines(lines, nested);
291
+ }
292
+ function appendBlockquoteLines(lines, nested) {
293
+ for (const line of nested) {
294
+ lines.push({ segments: [{ text: "| ", color: "gray" }, ...line.segments] });
295
+ }
296
+ }
297
+ function appendTable(lines, token, width) {
298
+ const renderRow = (cells) => cells.map((cell) => plainFromInline(cell.tokens)).join(" | ");
299
+ const rows = [renderRow(token.header), ...token.rows.map(renderRow)];
300
+ for (const row of rows) {
301
+ lines.push({ segments: [{ text: truncateDisplayWidth(row, width), color: "gray" }] });
302
+ }
303
+ }
304
+ function inlineSegments(tokens, base) {
305
+ const segments = [];
306
+ for (const token of tokens) {
307
+ switch (token.type) {
308
+ case "text": {
309
+ const textToken = token;
310
+ if (textToken.tokens?.length)
311
+ segments.push(...inlineSegments(textToken.tokens, base));
312
+ else
313
+ segments.push({ ...base, text: textToken.text });
314
+ break;
315
+ }
316
+ case "strong":
317
+ segments.push(...inlineSegments(token.tokens, { ...base, bold: true }));
318
+ break;
319
+ case "em":
320
+ segments.push(...inlineSegments(token.tokens, { ...base, italic: true }));
321
+ break;
322
+ case "codespan":
323
+ segments.push({ ...base, text: token.text, color: "yellow" });
324
+ break;
325
+ case "link":
326
+ segments.push(...inlineSegments(token.tokens, { ...base, color: "cyan", underline: true }));
327
+ break;
328
+ case "del":
329
+ segments.push(...inlineSegments(token.tokens, { ...base, dimColor: true }));
330
+ break;
331
+ case "br":
332
+ segments.push({ ...base, text: "\n" });
333
+ break;
334
+ case "escape":
335
+ segments.push({ ...base, text: token.text });
336
+ break;
337
+ case "image":
338
+ segments.push({ ...base, text: token.text, color: "cyan" });
339
+ break;
340
+ default:
341
+ segments.push({ ...base, text: fallbackText(token) });
342
+ }
343
+ }
344
+ return mergeAdjacent(segments.filter((segment) => segment.text.length > 0));
345
+ }
346
+ function plainFromInline(tokens) {
347
+ return inlineSegments(tokens, {}).map((segment) => segment.text).join("");
348
+ }
349
+ function fallbackText(token) {
350
+ const value = token;
351
+ return value.text ?? value.raw ?? "";
352
+ }
353
+ function wrapSegments(segments, width) {
354
+ const lines = [[]];
355
+ let used = 0;
356
+ const max = Math.max(1, width);
357
+ for (const segment of segments) {
358
+ for (const part of segment.text.split(/(\n)/u)) {
359
+ if (part === "")
360
+ continue;
361
+ if (part === "\n") {
362
+ lines.push([]);
363
+ used = 0;
364
+ continue;
365
+ }
366
+ for (const char of [...part]) {
367
+ const charWidth = displayWidth(char);
368
+ if (used > 0 && used + charWidth > max) {
369
+ lines.push([]);
370
+ used = 0;
371
+ }
372
+ const current = lines[lines.length - 1] ?? [];
373
+ const previous = current[current.length - 1];
374
+ if (previous && sameStyle(previous, segment)) {
375
+ previous.text += char;
376
+ }
377
+ else {
378
+ current.push({ ...segment, text: char });
379
+ }
380
+ used += charWidth;
381
+ }
382
+ }
383
+ }
384
+ return lines.length ? lines : [[{ text: "" }]];
385
+ }
386
+ function mergeAdjacent(segments) {
387
+ const merged = [];
388
+ for (const segment of segments) {
389
+ const previous = merged[merged.length - 1];
390
+ if (previous && sameStyle(previous, segment))
391
+ previous.text += segment.text;
392
+ else
393
+ merged.push({ ...segment });
394
+ }
395
+ return merged;
396
+ }
397
+ function sameStyle(left, right) {
398
+ return (left.color === right.color &&
399
+ left.backgroundColor === right.backgroundColor &&
400
+ left.bold === right.bold &&
401
+ left.italic === right.italic &&
402
+ left.underline === right.underline &&
403
+ left.dimColor === right.dimColor);
404
+ }
405
+ async function highlightCode(code, language) {
406
+ const cacheKey = `${SHIKI_THEME}\0${language}\0${code}`;
407
+ const cached = tokenCache.get(cacheKey);
408
+ if (cached)
409
+ return cached;
410
+ const promise = highlightCodeUncached(code, language);
411
+ tokenCache.set(cacheKey, promise);
412
+ const firstKey = tokenCache.keys().next().value;
413
+ if (tokenCache.size > 200 && firstKey)
414
+ tokenCache.delete(firstKey);
415
+ return promise;
416
+ }
417
+ async function highlightCodeUncached(code, language) {
418
+ if (!code)
419
+ return [[{ text: "" }]];
420
+ if (language === "text")
421
+ return code.split("\n").map((line) => [{ text: line }]);
422
+ try {
423
+ const result = await codeToTokens(code, {
424
+ lang: language,
425
+ theme: SHIKI_THEME,
426
+ tokenizeMaxLineLength: 1000,
427
+ tokenizeTimeLimit: 500,
428
+ });
429
+ return result.tokens.map((line) => line.map(tokenToSegment));
430
+ }
431
+ catch {
432
+ return code.split("\n").map((line) => [{ text: line }]);
433
+ }
434
+ }
435
+ function tokenToSegment(token) {
436
+ const fontStyle = Number(token.fontStyle ?? 0);
437
+ return {
438
+ text: token.content,
439
+ color: token.color,
440
+ backgroundColor: token.bgColor,
441
+ italic: (fontStyle & 1) !== 0,
442
+ bold: (fontStyle & 2) !== 0,
443
+ underline: (fontStyle & 4) !== 0,
444
+ };
445
+ }
446
+ function normalizeLanguage(language) {
447
+ const normalized = language.trim().toLowerCase();
448
+ const aliases = {
449
+ cjs: "javascript",
450
+ js: "javascript",
451
+ jsx: "jsx",
452
+ mjs: "javascript",
453
+ node: "javascript",
454
+ py: "python",
455
+ python3: "python",
456
+ rb: "ruby",
457
+ sh: "bash",
458
+ shell: "bash",
459
+ ts: "typescript",
460
+ tsx: "tsx",
461
+ yml: "yaml",
462
+ };
463
+ const lang = aliases[normalized] ?? normalized;
464
+ if (!lang)
465
+ return "text";
466
+ return Object.prototype.hasOwnProperty.call(bundledLanguages, lang) ? lang : "text";
467
+ }
468
+ function normalizeIndentedFences(markdown) {
469
+ const lines = markdown.split("\n");
470
+ const result = [];
471
+ let fenceIndent;
472
+ for (const line of lines) {
473
+ if (!fenceIndent) {
474
+ const opening = line.match(/^([ \t]{4,})(```+|~~~+)/u);
475
+ if (opening) {
476
+ fenceIndent = opening[1];
477
+ result.push(line.slice(fenceIndent.length));
478
+ continue;
479
+ }
480
+ result.push(line);
481
+ continue;
482
+ }
483
+ const deindented = line.startsWith(fenceIndent) ? line.slice(fenceIndent.length) : line;
484
+ result.push(deindented);
485
+ if (/^(```+|~~~+)\s*$/u.test(deindented))
486
+ fenceIndent = undefined;
487
+ }
488
+ return result.join("\n");
489
+ }
490
+ function truncateDisplayWidth(value, maxWidth) {
491
+ if (stringDisplayWidth(value) <= maxWidth)
492
+ return value;
493
+ const ellipsis = "...";
494
+ const limit = Math.max(0, maxWidth - stringDisplayWidth(ellipsis));
495
+ let used = 0;
496
+ let result = "";
497
+ for (const char of [...value]) {
498
+ const charWidth = displayWidth(char);
499
+ if (used + charWidth > limit)
500
+ break;
501
+ result += char;
502
+ used += charWidth;
503
+ }
504
+ return `${result}${ellipsis}`;
505
+ }
506
+ function stringDisplayWidth(value) {
507
+ let width = 0;
508
+ for (const char of [...value])
509
+ width += displayWidth(char);
510
+ return width;
511
+ }
512
+ function displayWidth(char) {
513
+ const codePoint = char.codePointAt(0);
514
+ if (codePoint === undefined)
515
+ return 0;
516
+ if (codePoint === 0)
517
+ return 0;
518
+ if (codePoint < 32 || (codePoint >= 0x7f && codePoint < 0xa0))
519
+ return 0;
520
+ if (isCombiningMark(codePoint))
521
+ return 0;
522
+ return isFullWidthCodePoint(codePoint) ? 2 : 1;
523
+ }
524
+ function isCombiningMark(codePoint) {
525
+ return ((codePoint >= 0x0300 && codePoint <= 0x036f) ||
526
+ (codePoint >= 0x1ab0 && codePoint <= 0x1aff) ||
527
+ (codePoint >= 0x1dc0 && codePoint <= 0x1dff) ||
528
+ (codePoint >= 0x20d0 && codePoint <= 0x20ff) ||
529
+ (codePoint >= 0xfe20 && codePoint <= 0xfe2f));
530
+ }
531
+ function isFullWidthCodePoint(codePoint) {
532
+ return (codePoint >= 0x1100 && (codePoint <= 0x115f ||
533
+ codePoint === 0x2329 ||
534
+ codePoint === 0x232a ||
535
+ (codePoint >= 0x2e80 && codePoint <= 0xa4cf && codePoint !== 0x303f) ||
536
+ (codePoint >= 0xac00 && codePoint <= 0xd7a3) ||
537
+ (codePoint >= 0xf900 && codePoint <= 0xfaff) ||
538
+ (codePoint >= 0xfe10 && codePoint <= 0xfe19) ||
539
+ (codePoint >= 0xfe30 && codePoint <= 0xfe6f) ||
540
+ (codePoint >= 0xff00 && codePoint <= 0xff60) ||
541
+ (codePoint >= 0xffe0 && codePoint <= 0xffe6) ||
542
+ (codePoint >= 0x1f300 && codePoint <= 0x1f64f) ||
543
+ (codePoint >= 0x1f900 && codePoint <= 0x1f9ff) ||
544
+ (codePoint >= 0x20000 && codePoint <= 0x3fffd)));
545
+ }
546
+ //# sourceMappingURL=markdown-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-renderer.js","sourceRoot":"","sources":["../../src/repl/markdown-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { AgentEvent } from "../types/events.js";
2
+ export declare function renderEvent(event: AgentEvent): string | undefined;
@@ -0,0 +1,45 @@
1
+ export function renderEvent(event) {
2
+ switch (event.type) {
3
+ case "state":
4
+ return `${titleCaseMeta(event.phase)}${event.detail ? ` · ${event.detail}` : ""}`;
5
+ case "context.metrics":
6
+ return undefined;
7
+ case "assistant.delta":
8
+ return event.text;
9
+ case "thinking.delta":
10
+ return `thinking> ${event.text}`;
11
+ case "message":
12
+ return event.message.blocks
13
+ .map((block) => {
14
+ const prefix = event.message.isMeta ? undefined : event.message.role;
15
+ if (block.type === "text")
16
+ return prefix ? `${prefix}> ${block.text}` : block.text;
17
+ if (block.type === "thinking")
18
+ return `thinking> ${block.text}`;
19
+ if (block.type === "tool_result")
20
+ return `tool_result:${block.name}> ${JSON.stringify(block.output)}`;
21
+ return `tool_use:${block.name}> ${JSON.stringify(block.input)}`;
22
+ })
23
+ .join("\n");
24
+ case "tool.started":
25
+ return `tool started: ${event.toolUse.name}`;
26
+ case "tool.finished":
27
+ return `tool finished: ${event.toolUse.name} (${event.ok ? "ok" : "failed"})`;
28
+ case "usage":
29
+ return undefined;
30
+ case "retrying":
31
+ return `retrying model request: attempt ${event.attempt}, delay ${event.delayMs}ms, ${event.error.message}`;
32
+ case "terminal":
33
+ return `Stopped · ${event.reason}${event.detail ? ` · ${event.detail}` : ""}`;
34
+ case "error":
35
+ return `error: ${event.error.message}`;
36
+ }
37
+ }
38
+ function titleCaseMeta(value) {
39
+ return value
40
+ .split(/[_\s-]+/u)
41
+ .filter(Boolean)
42
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
43
+ .join(" ");
44
+ }
45
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/repl/render.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACpF,KAAK,iBAAiB;YACpB,OAAO,SAAS,CAAC;QACnB,KAAK,iBAAiB;YACpB,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,KAAK,gBAAgB;YACnB,OAAO,aAAa,KAAK,CAAC,IAAI,EAAE,CAAC;QACnC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM;iBACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACrE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnF,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;oBAAE,OAAO,aAAa,KAAK,CAAC,IAAI,EAAE,CAAC;gBAChE,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;oBAAE,OAAO,eAAe,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtG,OAAO,YAAY,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,KAAK,cAAc;YACjB,OAAO,iBAAiB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/C,KAAK,eAAe;YAClB,OAAO,kBAAkB,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC;QAChF,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,mCAAmC,KAAK,CAAC,OAAO,WAAW,KAAK,CAAC,OAAO,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9G,KAAK,UAAU;YACb,OAAO,aAAa,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAChF,KAAK,OAAO;YACV,OAAO,UAAU,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK;SACT,KAAK,CAAC,UAAU,CAAC;SACjB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { Writable } from "node:stream";
2
+ import type { AgentEvent } from "../types/events.js";
3
+ export declare class ReplStatusLine {
4
+ private readonly output;
5
+ private phase;
6
+ private lastDetail;
7
+ private metrics?;
8
+ private lastUsage?;
9
+ private outputTokensStreamed;
10
+ private visible;
11
+ private pulseFrame;
12
+ constructor(output: Writable & {
13
+ isTTY?: boolean;
14
+ });
15
+ handle(event: AgentEvent): void;
16
+ clear(): void;
17
+ render(): void;
18
+ renderLine(): string;
19
+ }