neoctl 0.2.11 → 0.2.12

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 (79) hide show
  1. package/dist/index.d.ts +0 -1
  2. package/dist/index.js +0 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/repl/index.js +3114 -314
  5. package/dist/repl/index.js.map +1 -1
  6. package/dist/tools/builtins/image-note-tool.js +1 -5
  7. package/dist/tools/builtins/image-note-tool.js.map +1 -1
  8. package/dist/web/html.js +8 -14
  9. package/dist/web/html.js.map +1 -1
  10. package/dist/web/index.d.ts +0 -5
  11. package/dist/web/index.js +5 -41
  12. package/dist/web/index.js.map +1 -1
  13. package/package.json +1 -1
  14. package/scripts/install-ripgrep.cjs +196 -196
  15. package/vendor/ripgrep/darwin-arm64/COPYING +3 -3
  16. package/vendor/ripgrep/darwin-arm64/LICENSE-MIT +21 -21
  17. package/vendor/ripgrep/darwin-arm64/UNLICENSE +24 -24
  18. package/vendor/ripgrep/darwin-arm64/manifest.json +7 -7
  19. package/vendor/ripgrep/darwin-x64/COPYING +3 -3
  20. package/vendor/ripgrep/darwin-x64/LICENSE-MIT +21 -21
  21. package/vendor/ripgrep/darwin-x64/UNLICENSE +24 -24
  22. package/vendor/ripgrep/darwin-x64/manifest.json +7 -7
  23. package/vendor/ripgrep/linux-arm64/COPYING +3 -3
  24. package/vendor/ripgrep/linux-arm64/LICENSE-MIT +21 -21
  25. package/vendor/ripgrep/linux-arm64/UNLICENSE +24 -24
  26. package/vendor/ripgrep/linux-arm64/manifest.json +7 -7
  27. package/vendor/ripgrep/linux-x64/COPYING +3 -3
  28. package/vendor/ripgrep/linux-x64/LICENSE-MIT +21 -21
  29. package/vendor/ripgrep/linux-x64/UNLICENSE +24 -24
  30. package/vendor/ripgrep/linux-x64/manifest.json +7 -7
  31. package/vendor/ripgrep/win32-arm64/manifest.json +7 -7
  32. package/dist/repl/browser.d.ts +0 -232
  33. package/dist/repl/browser.js +0 -156
  34. package/dist/repl/browser.js.map +0 -1
  35. package/dist/repl/env-file.d.ts +0 -4
  36. package/dist/repl/env-file.js +0 -97
  37. package/dist/repl/env-file.js.map +0 -1
  38. package/dist/repl/foreground-exec.d.ts +0 -10
  39. package/dist/repl/foreground-exec.js +0 -34
  40. package/dist/repl/foreground-exec.js.map +0 -1
  41. package/dist/repl/login-view.d.ts +0 -75
  42. package/dist/repl/login-view.js +0 -38
  43. package/dist/repl/login-view.js.map +0 -1
  44. package/dist/repl/login.d.ts +0 -14
  45. package/dist/repl/login.js +0 -165
  46. package/dist/repl/login.js.map +0 -1
  47. package/dist/repl/message-rendering.d.ts +0 -99
  48. package/dist/repl/message-rendering.js +0 -476
  49. package/dist/repl/message-rendering.js.map +0 -1
  50. package/dist/repl/prompt-payload.d.ts +0 -9
  51. package/dist/repl/prompt-payload.js +0 -64
  52. package/dist/repl/prompt-payload.js.map +0 -1
  53. package/dist/repl/prompt-view.d.ts +0 -235
  54. package/dist/repl/prompt-view.js +0 -184
  55. package/dist/repl/prompt-view.js.map +0 -1
  56. package/dist/repl/repl-types.d.ts +0 -88
  57. package/dist/repl/repl-types.js +0 -2
  58. package/dist/repl/repl-types.js.map +0 -1
  59. package/dist/repl/runtime.d.ts +0 -33
  60. package/dist/repl/runtime.js +0 -202
  61. package/dist/repl/runtime.js.map +0 -1
  62. package/dist/repl/slash-completion.d.ts +0 -28
  63. package/dist/repl/slash-completion.js +0 -287
  64. package/dist/repl/slash-completion.js.map +0 -1
  65. package/dist/repl/status-panel.d.ts +0 -234
  66. package/dist/repl/status-panel.js +0 -509
  67. package/dist/repl/status-panel.js.map +0 -1
  68. package/dist/repl/terminal.d.ts +0 -19
  69. package/dist/repl/terminal.js +0 -81
  70. package/dist/repl/terminal.js.map +0 -1
  71. package/dist/repl/tool-rendering.d.ts +0 -6
  72. package/dist/repl/tool-rendering.js +0 -502
  73. package/dist/repl/tool-rendering.js.map +0 -1
  74. package/dist/repl/usage.d.ts +0 -17
  75. package/dist/repl/usage.js +0 -57
  76. package/dist/repl/usage.js.map +0 -1
  77. package/dist/tips.d.ts +0 -10
  78. package/dist/tips.js +0 -168
  79. package/dist/tips.js.map +0 -1
@@ -1,509 +0,0 @@
1
- import React, { useEffect, useRef, useState } from "react";
2
- import { Box, Text } from "ink";
3
- const e = React.createElement;
4
- export function StatusBar({ status, animationTick, width: terminalWidth }) {
5
- const width = statusBarWidth(terminalWidth);
6
- const inputTokens = useAnimatedNumber(statusInputTokens(status));
7
- const outputTokens = useAnimatedNumber(statusOutputTokens(status));
8
- const displayPhase = useMinimumDisplayValue(status.phase, STATUS_PHASE_MIN_DISPLAY_MS);
9
- const segments = fitStatusSegments(renderCompactStatusSegments(status, animationTick, width, inputTokens, outputTokens, displayPhase), width);
10
- return e(Box, { width, height: 1, overflow: "hidden" }, ...segments.map((segment, index) => e(Text, { key: index, color: segment.color ?? "gray", bold: segment.bold ?? false }, segment.text)));
11
- }
12
- export function backgroundTaskStatusRenderRows(taskCount) {
13
- if (taskCount <= 0)
14
- return 0;
15
- return 1 + Math.min(taskCount, 2);
16
- }
17
- export function ForegroundExecDetachHintLine({ handle, width: terminalWidth }) {
18
- const width = statusBarWidth(terminalWidth);
19
- const label = handle.description?.trim() || handle.command;
20
- const text = `exec still running · Ctrl+B to detach · ${truncateMiddle(label, Math.max(12, width - 38))}`;
21
- return e(Text, { color: "yellow" }, fitToWidth(text, width));
22
- }
23
- export function SubagentLivePanel({ activities, width: terminalWidth, terminalRows, compact, animationTick }) {
24
- const width = statusBarWidth(terminalWidth);
25
- const rows = subagentLivePanelRenderRows(activities, terminalRows, compact);
26
- if (rows <= 0)
27
- return null;
28
- const sorted = sortAgentActivitiesForPanel(activities);
29
- const selected = sorted[0];
30
- if (!selected)
31
- return null;
32
- const activeCount = activities.filter((activity) => activity.status === "running" || activity.status === "pending").length;
33
- const header = `subagents: ${activeCount} active${activities.length > activeCount ? ` · ${activities.length - activeCount} recent` : ""}`;
34
- if (rows <= 1) {
35
- return e(Text, { color: "yellow" }, fitToWidth(`${header} · ${compactAgentSummary(selected, width - header.length - 3)}`, width));
36
- }
37
- const detailLines = buildSubagentDetailLines(selected, sorted, animationTick);
38
- return e(Box, { flexDirection: "column", width, overflow: "hidden" }, e(Text, { color: "yellow" }, fitToWidth(header, width)), ...detailLines.map((line, index) => e(Text, {
39
- key: `agent-detail-${selected.agentId}-${index}`,
40
- color: line.color,
41
- }, fitToWidth(line.text, width))));
42
- }
43
- export function subagentLivePanelRenderRows(activities, terminalRows, compact = false) {
44
- if (activities.length === 0)
45
- return 0;
46
- if (compact || terminalRows < 22 || activities.length > 1)
47
- return 1;
48
- return 1 + SUBAGENT_DETAIL_ROWS;
49
- }
50
- export function BackgroundTaskStatusLine({ tasks, width: terminalWidth }) {
51
- const width = statusBarWidth(terminalWidth);
52
- const summary = `background tools: ${tasks.length} task${tasks.length === 1 ? "" : "s"}`;
53
- const detailTasks = tasks.slice(0, 2);
54
- return e(Box, { flexDirection: "column", width, overflow: "hidden" }, e(Text, { color: "yellow" }, fitToWidth(summary, width)), ...detailTasks.map((task, index) => e(Text, { key: `bg-task-${task.taskId}-${index}`, color: "yellow" }, fitToWidth(` ${task.type}:${truncateMiddle(task.description || task.agentId || task.taskId, Math.max(12, width - 30))} - ${task.status} - ${formatElapsed(Date.now() - new Date(task.createdAt).getTime())}`, width))));
55
- }
56
- export function statusBarWidth(columns) {
57
- return Math.max(1, Math.min(columns - 1, 160));
58
- }
59
- export function reduceStatus(status, event) {
60
- if (event.type === "state") {
61
- return {
62
- ...status,
63
- phase: event.phase,
64
- detail: event.detail,
65
- usage: event.phase === "preparing" ? undefined : status.usage,
66
- streamedOutputTokens: event.phase === "preparing" ? 0 : status.streamedOutputTokens,
67
- inputTokenUpdatedAt: event.phase === "preparing" ? undefined : status.inputTokenUpdatedAt,
68
- outputTokenUpdatedAt: event.phase === "preparing" ? undefined : status.outputTokenUpdatedAt,
69
- retryCooldownUntil: event.phase === "preparing" ? undefined : status.retryCooldownUntil,
70
- activityTick: status.activityTick + 1,
71
- };
72
- }
73
- if (event.type === "context.metrics") {
74
- return {
75
- ...status,
76
- metrics: event.metrics,
77
- inputTokenUpdatedAt: event.metrics.estimatedInputTokens !== status.metrics?.estimatedInputTokens ? Date.now() : status.inputTokenUpdatedAt,
78
- activityTick: status.activityTick + 1,
79
- };
80
- }
81
- if (event.type === "usage") {
82
- return {
83
- ...status,
84
- usage: event.usage,
85
- inputTokenUpdatedAt: event.usage.inputTokens !== undefined ? Date.now() : status.inputTokenUpdatedAt,
86
- outputTokenUpdatedAt: event.usage.outputTokens !== undefined ? Date.now() : status.outputTokenUpdatedAt,
87
- activityTick: status.activityTick + 1,
88
- };
89
- }
90
- if (event.type === "assistant.delta") {
91
- return {
92
- ...status,
93
- phase: "calling_model",
94
- streamedOutputTokens: status.streamedOutputTokens + estimateTokens(event.text),
95
- outputTokenUpdatedAt: Date.now(),
96
- activityTick: status.activityTick + 1,
97
- };
98
- }
99
- if (event.type === "thinking.delta") {
100
- return {
101
- ...status,
102
- phase: "thinking",
103
- streamedOutputTokens: status.streamedOutputTokens + estimateTokens(event.text),
104
- outputTokenUpdatedAt: Date.now(),
105
- activityTick: status.activityTick + 1,
106
- };
107
- }
108
- if (event.type === "tool_call.delta") {
109
- return {
110
- ...status,
111
- phase: "calling_model",
112
- streamedOutputTokens: status.streamedOutputTokens + estimateTokens(event.argumentsDelta),
113
- outputTokenUpdatedAt: Date.now(),
114
- activityTick: status.activityTick + 1,
115
- };
116
- }
117
- if (event.type === "retrying") {
118
- return {
119
- ...status,
120
- phase: "calling_model",
121
- detail: `retrying in ${(event.delayMs / 1000).toFixed(1)}s`,
122
- retryCooldownUntil: Date.now() + event.delayMs,
123
- activityTick: status.activityTick + 1,
124
- };
125
- }
126
- if (event.type === "terminal") {
127
- return {
128
- ...status,
129
- phase: "stopped",
130
- detail: undefined,
131
- retryCooldownUntil: undefined,
132
- activityTick: status.activityTick + 1,
133
- };
134
- }
135
- return status;
136
- }
137
- export function isActivePhase(phase) {
138
- return phase === "running" ||
139
- phase === "preparing" ||
140
- phase === "calling_model" ||
141
- phase === "thinking" ||
142
- phase === "running_tools" ||
143
- phase === "compacting" ||
144
- phase === "injecting_context";
145
- }
146
- function useAnimatedNumber(target) {
147
- const [display, setDisplay] = useState(target);
148
- const displayRef = useRef(target);
149
- useEffect(() => {
150
- if (target === undefined) {
151
- displayRef.current = undefined;
152
- setDisplay(undefined);
153
- return undefined;
154
- }
155
- const current = displayRef.current;
156
- if (current === undefined || current === target) {
157
- displayRef.current = target;
158
- setDisplay(target);
159
- return undefined;
160
- }
161
- const from = current;
162
- const delta = target - from;
163
- const startedAt = Date.now();
164
- const durationMs = animatedNumberDurationMs(Math.abs(delta));
165
- const interval = setInterval(() => {
166
- const progress = Math.min(1, (Date.now() - startedAt) / durationMs);
167
- const eased = easeOutCubic(progress);
168
- const next = from + delta * eased;
169
- displayRef.current = progress >= 1 ? target : next;
170
- setDisplay(displayRef.current);
171
- if (progress >= 1)
172
- clearInterval(interval);
173
- }, ANIMATED_NUMBER_INTERVAL_MS);
174
- return () => clearInterval(interval);
175
- }, [target]);
176
- return display;
177
- }
178
- function useMinimumDisplayValue(target, minDurationMs) {
179
- const [display, setDisplay] = useState(target);
180
- const displayRef = useRef(target);
181
- const displayedAtRef = useRef(Date.now());
182
- const pendingRef = useRef(undefined);
183
- const timerRef = useRef(undefined);
184
- useEffect(() => {
185
- if (timerRef.current) {
186
- clearTimeout(timerRef.current);
187
- timerRef.current = undefined;
188
- }
189
- if (Object.is(target, displayRef.current)) {
190
- pendingRef.current = undefined;
191
- return undefined;
192
- }
193
- const applyPending = () => {
194
- const next = pendingRef.current;
195
- if (next === undefined || Object.is(next, displayRef.current)) {
196
- pendingRef.current = undefined;
197
- return;
198
- }
199
- displayRef.current = next;
200
- displayedAtRef.current = Date.now();
201
- pendingRef.current = undefined;
202
- timerRef.current = undefined;
203
- setDisplay(next);
204
- };
205
- pendingRef.current = target;
206
- const elapsedMs = Date.now() - displayedAtRef.current;
207
- const remainingMs = minDurationMs - elapsedMs;
208
- if (remainingMs <= 0) {
209
- applyPending();
210
- return undefined;
211
- }
212
- timerRef.current = setTimeout(applyPending, remainingMs);
213
- return () => {
214
- if (timerRef.current) {
215
- clearTimeout(timerRef.current);
216
- timerRef.current = undefined;
217
- }
218
- };
219
- }, [target, minDurationMs]);
220
- return display;
221
- }
222
- function animatedNumberDurationMs(delta) {
223
- if (!Number.isFinite(delta) || delta <= 0)
224
- return ANIMATED_NUMBER_MIN_DURATION_MS;
225
- const scaled = ANIMATED_NUMBER_MIN_DURATION_MS + Math.log10(delta + 1) * ANIMATED_NUMBER_DURATION_SCALE_MS;
226
- return Math.min(ANIMATED_NUMBER_MAX_DURATION_MS, Math.max(ANIMATED_NUMBER_MIN_DURATION_MS, scaled));
227
- }
228
- function easeOutCubic(progress) {
229
- const clamped = Math.max(0, Math.min(1, progress));
230
- return 1 - Math.pow(1 - clamped, 3);
231
- }
232
- function sortAgentActivitiesForPanel(activities) {
233
- const rank = (status) => {
234
- if (status === "running")
235
- return 0;
236
- if (status === "pending")
237
- return 1;
238
- if (status === "failed" || status === "killed")
239
- return 2;
240
- return 3;
241
- };
242
- return [...activities].sort((left, right) => rank(left.status) - rank(right.status) || right.updatedAt.localeCompare(left.updatedAt));
243
- }
244
- function buildSubagentDetailLines(selected, sorted, animationTick) {
245
- const spinner = selected.status === "running" ? spinnerFrame(animationTick) : statusGlyph(selected.status);
246
- const elapsed = formatElapsed(Date.now() - new Date(selected.startedAt).getTime());
247
- const headerLine = `${spinner} ${selected.description || selected.agentId} · ${elapsed}`;
248
- const currentLine = selected.currentTool
249
- ? `tool: ${selected.currentTool.name}${selected.currentTool.inputPreview ? ` · ${selected.currentTool.inputPreview}` : ""}`
250
- : selected.error
251
- ? `error: ${selected.error}`
252
- : selected.resultPreview
253
- ? `result: ${selected.resultPreview}`
254
- : selected.lastText
255
- ? `output: ${selected.lastText}`
256
- : `prompt: ${selected.prompt}`;
257
- const recent = selected.timeline.slice(-2).map((entry) => `${timelinePrefix(entry)} ${formatTimelineEntry(entry, 240)}`);
258
- const otherRunning = sorted
259
- .filter((activity) => activity.agentId !== selected.agentId && (activity.status === "running" || activity.status === "pending"))
260
- .slice(0, 2)
261
- .map((activity) => compactAgentSummary(activity, 180));
262
- const tail = [...recent, ...otherRunning.map((summary) => `· ${summary}`)].find((line) => line.trim()) ?? `tools:${selected.totalToolUseCount}`;
263
- return [
264
- { text: headerLine, color: statusColor(selected.status) },
265
- { text: currentLine, color: selected.error ? "red" : selected.currentTool ? "#d4b04c" : "yellow" },
266
- { text: tail, color: "gray" },
267
- ];
268
- }
269
- function compactAgentSummary(activity, maxLength) {
270
- const current = activity.currentTool
271
- ? `${activity.currentTool.name}${activity.currentTool.inputPreview ? ` ${activity.currentTool.inputPreview}` : ""}`
272
- : activity.lastText ?? activity.resultPreview ?? activity.error ?? activity.prompt;
273
- const elapsed = formatElapsed(Date.now() - new Date(activity.startedAt).getTime());
274
- return truncateMiddle(`${activity.description || activity.agentId} · ${elapsed} · tools:${activity.totalToolUseCount} · ${current.replace(/\s+/g, " ")}`, Math.max(8, maxLength));
275
- }
276
- function formatTimelineEntry(entry, maxLength) {
277
- const detail = entry.detail ? ` - ${entry.detail.replace(/\s+/g, " ")}` : "";
278
- return truncateMiddle(`${entry.title}${detail}`, Math.max(8, maxLength));
279
- }
280
- function timelinePrefix(entry) {
281
- if (entry.kind === "tool_start")
282
- return ">";
283
- if (entry.kind === "tool_result")
284
- return entry.status === "failed" ? "\u2717" : "\u2713";
285
- if (entry.kind === "thinking")
286
- return "~";
287
- if (entry.kind === "error")
288
- return "!";
289
- if (entry.kind === "status")
290
- return "-";
291
- return "assistant:";
292
- }
293
- function statusGlyph(status) {
294
- if (status === "completed")
295
- return "\u2713";
296
- if (status === "failed")
297
- return "\u2717";
298
- if (status === "killed")
299
- return "x";
300
- if (status === "pending")
301
- return "?";
302
- return "?";
303
- }
304
- function statusColor(status) {
305
- if (status === "completed")
306
- return "green";
307
- if (status === "failed" || status === "killed")
308
- return "red";
309
- if (status === "pending")
310
- return "gray";
311
- return "yellow";
312
- }
313
- function spinnerFrame(tick) {
314
- return ["|", "/", "-", "\\", "|", "/", "-", "\\", ".", " "][tick % 10] ?? "|";
315
- }
316
- function formatElapsed(ms) {
317
- const seconds = Math.max(0, Math.floor(ms / 1000));
318
- if (seconds < 60)
319
- return `${seconds}s`;
320
- const minutes = Math.floor(seconds / 60);
321
- const remainder = seconds % 60;
322
- if (minutes < 60)
323
- return `${minutes}m${remainder.toString().padStart(2, "0")}s`;
324
- const hours = Math.floor(minutes / 60);
325
- return `${hours}h${(minutes % 60).toString().padStart(2, "0")}m`;
326
- }
327
- function renderCompactStatusSegments(status, animationTick, width, inputTokens, outputTokens, displayPhase = status.phase) {
328
- const phase = displayPhase;
329
- const now = Date.now();
330
- const phaseText = phaseLabelForStatus(phase);
331
- const inputValue = compactNumber(inputTokens);
332
- const outputValue = compactNumber(outputTokens);
333
- const context = renderContextParts(status.metrics);
334
- const fixedText = [
335
- phaseText,
336
- context.percent,
337
- `↑ ${inputValue}`,
338
- `↓ ${outputValue}`,
339
- ].join(STATUS_SEPARATOR);
340
- const modelBudget = Math.max(4, width - fixedText.length - STATUS_SEPARATOR.length);
341
- const model = truncateMiddle(status.metrics?.model ?? "model?", Math.min(width >= 120 ? 26 : width >= 90 ? 20 : 14, modelBudget));
342
- const retryPending = retryCooldownActive(status, now);
343
- const outputPulseColor = tokenArrowColor(status.outputTokenUpdatedAt, now, "cyan");
344
- const outputPending = modelOutputPending(status, now);
345
- const tokenInputColor = retryPending ? "red" : tokenArrowColor(status.inputTokenUpdatedAt, now, "green");
346
- const tokenOutputColor = outputPulseColor;
347
- const outputLabelColor = outputPending && !slowBlinkVisible(animationTick) ? "gray" : tokenOutputColor;
348
- return [
349
- ...renderPhaseStatusSegments(phaseText, phase, animationTick),
350
- statusDividerSegment(),
351
- { text: model },
352
- statusDividerSegment(),
353
- { text: context.percent, color: contextColor(status.metrics) },
354
- statusDividerSegment(),
355
- statusLabelSegment("↑", tokenInputColor),
356
- { text: ` ${inputValue}` },
357
- statusDividerSegment(),
358
- statusLabelSegment("↓", outputLabelColor),
359
- { text: ` ${outputValue}` },
360
- ];
361
- }
362
- function fitStatusSegments(segments, width) {
363
- const fitted = [];
364
- let remaining = width;
365
- for (const segment of segments) {
366
- if (remaining <= 0)
367
- break;
368
- const textWidth = segment.text.length;
369
- if (textWidth <= remaining) {
370
- fitted.push(segment);
371
- remaining -= textWidth;
372
- continue;
373
- }
374
- const text = fitToWidth(segment.text, remaining);
375
- if (text.length > 0)
376
- fitted.push({ ...segment, text });
377
- remaining = 0;
378
- }
379
- return fitted;
380
- }
381
- function renderContextParts(metrics) {
382
- if (!metrics)
383
- return { percent: "?" };
384
- const percent = metrics.contextUsageRatio === undefined ? "?" : `${(metrics.contextUsageRatio * 100).toFixed(1)}%`;
385
- return { percent };
386
- }
387
- function contextColor(metrics) {
388
- const ratio = metrics?.contextUsageRatio;
389
- if (ratio === undefined)
390
- return "gray";
391
- if (ratio >= 0.9)
392
- return "red";
393
- if (ratio >= 0.75)
394
- return "yellow";
395
- return "gray";
396
- }
397
- function statusInputTokens(status) {
398
- return status.usage?.inputTokens ?? status.metrics?.estimatedInputTokens;
399
- }
400
- function statusOutputTokens(status) {
401
- return status.usage?.outputTokens ?? status.streamedOutputTokens;
402
- }
403
- function tokenArrowColor(updatedAt, now, activeColor) {
404
- return updatedAt !== undefined && now - updatedAt <= TOKEN_PULSE_MS ? activeColor : "gray";
405
- }
406
- function retryCooldownActive(status, now) {
407
- return status.retryCooldownUntil !== undefined && now < status.retryCooldownUntil;
408
- }
409
- function modelOutputPending(status, now) {
410
- if (retryCooldownActive(status, now))
411
- return true;
412
- if (status.phase !== "calling_model")
413
- return false;
414
- return tokenArrowColor(status.outputTokenUpdatedAt, now, "cyan") === "gray";
415
- }
416
- function slowBlinkVisible(tick) {
417
- return Math.floor(tick / STATUS_BLINK_TICKS) % 2 === 0;
418
- }
419
- function estimateTokens(text) {
420
- return text ? Math.max(1, Math.ceil(text.length / 4)) : 0;
421
- }
422
- function phaseLabelForStatus(phase) {
423
- if (phase === "calling_model")
424
- return "model";
425
- if (phase === "thinking")
426
- return "think";
427
- if (phase === "running_tools")
428
- return "tools";
429
- if (phase === "injecting_context")
430
- return "context";
431
- return phase;
432
- }
433
- function phaseColor(phase) {
434
- if (phase === "ready")
435
- return "green";
436
- if (phase === "stopped")
437
- return "yellow";
438
- if (phase === "failed")
439
- return "red";
440
- if (phase === "thinking")
441
- return THINKING_COLOR;
442
- if (phase === "running_tools")
443
- return "#d4b04c";
444
- if (phase === "compacting" || phase === "injecting_context")
445
- return "magenta";
446
- return "cyan";
447
- }
448
- function renderPhaseStatusSegments(text, phase, animationTick) {
449
- const color = phaseColor(phase);
450
- if (!isActivePhase(phase) || text.length <= 1)
451
- return [{ text, color, bold: true }];
452
- const shimmerCenter = animationTick % (text.length + STATUS_SHIMMER_GAP_TICKS);
453
- return [...text].map((char, index) => ({
454
- text: char,
455
- color: Math.abs(index - shimmerCenter) <= STATUS_SHIMMER_RADIUS ? STATUS_SHIMMER_COLOR : color,
456
- bold: true,
457
- }));
458
- }
459
- function compactNumber(value) {
460
- if (value === undefined)
461
- return "?";
462
- const rounded = Math.max(0, Math.round(value));
463
- if (rounded >= 1_000_000)
464
- return `${trimFixed(rounded / 1_000_000)}m`;
465
- if (rounded >= 10_000)
466
- return `${Math.round(rounded / 1000)}k`;
467
- if (rounded >= 1000)
468
- return `${trimFixed(rounded / 1000)}k`;
469
- return String(rounded);
470
- }
471
- function statusDividerSegment() {
472
- return { text: STATUS_SEPARATOR, color: "gray" };
473
- }
474
- function statusLabelSegment(text, color = "gray") {
475
- return { text, color, bold: color !== "gray" };
476
- }
477
- function trimFixed(value) {
478
- return value >= 10 ? value.toFixed(0) : value.toFixed(1).replace(/\.0$/, "");
479
- }
480
- function fitToWidth(value, width) {
481
- if (value.length === width)
482
- return value;
483
- if (value.length > width)
484
- return value.slice(0, width);
485
- return value.padEnd(width, " ");
486
- }
487
- function truncateMiddle(value, maxLength) {
488
- if (value.length <= maxLength)
489
- return value;
490
- if (maxLength <= 3)
491
- return value.slice(0, maxLength);
492
- const left = Math.ceil((maxLength - 3) / 2);
493
- const right = Math.floor((maxLength - 3) / 2);
494
- return `${value.slice(0, left)}...${value.slice(value.length - right)}`;
495
- }
496
- const SUBAGENT_DETAIL_ROWS = 3;
497
- const THINKING_COLOR = "#a855f7";
498
- const ANIMATED_NUMBER_INTERVAL_MS = 50;
499
- const ANIMATED_NUMBER_MIN_DURATION_MS = 180;
500
- const ANIMATED_NUMBER_MAX_DURATION_MS = 700;
501
- const ANIMATED_NUMBER_DURATION_SCALE_MS = 130;
502
- const STATUS_BLINK_TICKS = 2;
503
- const STATUS_PHASE_MIN_DISPLAY_MS = 2000;
504
- const STATUS_SHIMMER_GAP_TICKS = 3;
505
- const STATUS_SHIMMER_RADIUS = 1;
506
- const STATUS_SHIMMER_COLOR = "whiteBright";
507
- const STATUS_SEPARATOR = " · ";
508
- const TOKEN_PULSE_MS = 900;
509
- //# sourceMappingURL=status-panel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status-panel.js","sourceRoot":"","sources":["../../src/repl/status-panel.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- export interface TerminalSize {
2
- columns: number;
3
- rows: number;
4
- }
5
- export declare function setTerminalTitle(title: string, prefix?: string): void;
6
- export declare function playReadySound(): void;
7
- export declare function enableTerminalFocusReporting(): void;
8
- export declare function enableTerminalMouseReporting(): void;
9
- export declare function disableTerminalFocusReporting(): void;
10
- export declare function disableTerminalMouseReporting(): void;
11
- export declare function isTerminalFocusInSequence(value: string): boolean;
12
- export declare function isTerminalFocusOutSequence(value: string): boolean;
13
- export declare function isPasteShortcut(value: string, key: {
14
- ctrl?: boolean;
15
- meta?: boolean;
16
- }): boolean;
17
- export declare function isRightClickPasteSequence(value: string): boolean;
18
- export declare function mouseScrollDirection(value: string): "up" | "down" | undefined;
19
- export declare function useTerminalSize(): TerminalSize;
@@ -1,81 +0,0 @@
1
- import { stdin, stdout } from "node:process";
2
- import { useEffect, useState } from "react";
3
- export function setTerminalTitle(title, prefix = "*") {
4
- if (!stdout.isTTY)
5
- return;
6
- const decoratedTitle = `${prefix} ${title}`;
7
- stdout.write(`\u001b]0;${decoratedTitle}\u0007`);
8
- }
9
- export function playReadySound() {
10
- if (!stdout.isTTY)
11
- return;
12
- stdout.write("\u0007");
13
- }
14
- export function enableTerminalFocusReporting() {
15
- if (!stdout.isTTY)
16
- return;
17
- stdout.write("\u001b[?1004h");
18
- }
19
- export function enableTerminalMouseReporting() {
20
- if (!stdout.isTTY || !stdin.isTTY)
21
- return;
22
- stdout.write("\u001b[?1000h");
23
- stdout.write("\u001b[?1002h");
24
- stdout.write("\u001b[?1006h");
25
- }
26
- export function disableTerminalFocusReporting() {
27
- if (!stdout.isTTY)
28
- return;
29
- stdout.write("\u001b[?1004l");
30
- }
31
- export function disableTerminalMouseReporting() {
32
- if (!stdout.isTTY)
33
- return;
34
- stdout.write("\u001b[?1000l\u001b[?1002l\u001b[?1006l");
35
- }
36
- export function isTerminalFocusInSequence(value) {
37
- return value === "\u001b[I";
38
- }
39
- export function isTerminalFocusOutSequence(value) {
40
- return value === "\u001b[O";
41
- }
42
- export function isPasteShortcut(value, key) {
43
- return Boolean(key.ctrl || key.meta) && value.toLowerCase() === "v";
44
- }
45
- export function isRightClickPasteSequence(value) {
46
- return /\u001b\[<\d+;\d+;\d+M/.test(value) || /\u001b\[M/.test(value);
47
- }
48
- export function mouseScrollDirection(value) {
49
- const sgr = /\u001b\[<(\d+);\d+;\d+M/.exec(value);
50
- const code = sgr ? Number(sgr[1]) : undefined;
51
- if (code === 64)
52
- return "up";
53
- if (code === 65)
54
- return "down";
55
- return undefined;
56
- }
57
- export function useTerminalSize() {
58
- const [size, setSize] = useState(() => currentTerminalSize());
59
- useEffect(() => {
60
- const onResize = () => setSize(currentTerminalSize());
61
- stdout.on("resize", onResize);
62
- onResize();
63
- return () => {
64
- stdout.off("resize", onResize);
65
- };
66
- }, []);
67
- return size;
68
- }
69
- function currentTerminalSize() {
70
- return {
71
- columns: terminalColumns(),
72
- rows: terminalRows(),
73
- };
74
- }
75
- function terminalRows() {
76
- return Math.max(8, stdout.rows ?? 30);
77
- }
78
- function terminalColumns() {
79
- return Math.max(1, stdout.columns ?? 100);
80
- }
81
- //# sourceMappingURL=terminal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/repl/terminal.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { ToolUseRequest } from "../types/messages.js";
2
- import type { UiLine } from "./repl-types.js";
3
- export declare function formatToolUse(toolUse: ToolUseRequest): Omit<UiLine, "id">;
4
- export declare function formatToolResultLine(toolName: string, output: unknown, ok: boolean): Omit<UiLine, "id">;
5
- export declare function formatToolFinishedWithoutResult(toolUse: ToolUseRequest, ok: boolean): Omit<UiLine, "id">;
6
- export declare function formatReplData(value: unknown, maxLength: number): string;