agent-termo 1.0.1 → 1.0.2
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.
- package/README.md +27 -2
- package/dist/agents/index.d.ts +5 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +86 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +97 -168
- package/dist/cli.js.map +4 -4
- package/dist/diff/index.d.ts +9 -0
- package/dist/diff/index.d.ts.map +1 -0
- package/dist/diff/index.js +213 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/llm/client.d.ts +39 -0
- package/dist/llm/client.d.ts.map +1 -0
- package/dist/llm/client.js +188 -0
- package/dist/llm/client.js.map +1 -0
- package/dist/llm/models.d.ts +19 -0
- package/dist/llm/models.d.ts.map +1 -0
- package/dist/llm/models.js +45 -0
- package/dist/llm/models.js.map +1 -0
- package/dist/llm/tools.d.ts +3 -0
- package/dist/llm/tools.d.ts.map +1 -0
- package/dist/llm/tools.js +204 -0
- package/dist/llm/tools.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +91 -140
- package/dist/main.js.map +4 -4
- package/dist/memory/index.d.ts +10 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +117 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +334 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/index.d.ts +119 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/index.d.ts +47 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +321 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/screen.d.ts +59 -0
- package/dist/ui/screen.d.ts.map +1 -0
- package/dist/ui/screen.js +629 -0
- package/dist/ui/screen.js.map +1 -0
- package/dist/utils/ansi.d.ts +62 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +116 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/config.d.ts +9 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +120 -0
- package/dist/utils/config.js.map +1 -0
- package/package.json +1 -1
- package/src/cli.ts +1 -1
- package/src/llm/client.ts +24 -0
- package/src/llm/models.ts +55 -0
- package/src/main.ts +201 -75
- package/src/ui/index.ts +256 -389
- package/src/ui/screen.ts +698 -0
- package/src/utils/config.ts +37 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+BAA+B;AAC/B,gFAAgF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ProposedFileChange } from '../types/index.js';
|
|
2
|
+
import { type CommandInfo } from './screen.js';
|
|
3
|
+
export { createInput, initScreen, pick, setScreenStatus, type InputController, type PickItem, } from './screen.js';
|
|
4
|
+
export declare const COMMANDS: CommandInfo[];
|
|
5
|
+
export declare function printWelcome(projectRoot: string, model: string): void;
|
|
6
|
+
export declare class MarkdownPrinter {
|
|
7
|
+
private readonly beforeFirstOutput?;
|
|
8
|
+
private pending;
|
|
9
|
+
private inCode;
|
|
10
|
+
private first;
|
|
11
|
+
private lastBlank;
|
|
12
|
+
/** `beforeFirstOutput` runs once, just before the first line is printed (stop the spinner there). */
|
|
13
|
+
constructor(beforeFirstOutput?: (() => void) | undefined);
|
|
14
|
+
push(text: string): void;
|
|
15
|
+
end(): void;
|
|
16
|
+
get printed(): boolean;
|
|
17
|
+
private emit;
|
|
18
|
+
private render;
|
|
19
|
+
}
|
|
20
|
+
export declare function printUserMessage(text: string): void;
|
|
21
|
+
export declare function printAssistantMessage(content: string): void;
|
|
22
|
+
export declare function printToolCall(toolName: string, args: Record<string, unknown>): void;
|
|
23
|
+
export declare function printToolResult(toolName: string, result: {
|
|
24
|
+
success: boolean;
|
|
25
|
+
output?: string;
|
|
26
|
+
error?: string;
|
|
27
|
+
}, parsedOutput?: {
|
|
28
|
+
needsApproval?: boolean;
|
|
29
|
+
proposedChange?: ProposedFileChange;
|
|
30
|
+
}): void;
|
|
31
|
+
export declare function printDiffViewer(change: ProposedFileChange): void;
|
|
32
|
+
export declare function promptAcceptReject(message?: string): Promise<'accept' | 'reject'>;
|
|
33
|
+
export declare function printError(message: string, hint?: string): void;
|
|
34
|
+
export declare function printSuccess(message: string): void;
|
|
35
|
+
export declare function printInfo(message: string): void;
|
|
36
|
+
export declare function printMemoryFile(): Promise<void>;
|
|
37
|
+
export declare function printTimelineFile(): Promise<void>;
|
|
38
|
+
export declare function printHelp(): void;
|
|
39
|
+
export declare function printAgentsList(agents: Array<{
|
|
40
|
+
name: string;
|
|
41
|
+
description: string;
|
|
42
|
+
}>): void;
|
|
43
|
+
export declare function startSpinner(message: string): void;
|
|
44
|
+
/** Stops the spinner and clears its line. The argument is kept for older call sites and is ignored. */
|
|
45
|
+
export declare function stopSpinner(_success?: boolean): void;
|
|
46
|
+
export declare function clearScreen(): void;
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAMN,KAAK,WAAW,EAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,WAAW,EACX,UAAU,EACV,IAAI,EACJ,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,QAAQ,GACb,MAAM,aAAa,CAAC;AAKrB,eAAO,MAAM,QAAQ,EAAE,WAAW,EASjC,CAAC;AAYF,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAsBrE;AAiBD,qBAAa,eAAe;IAOf,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAN/C,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,SAAS,CAAS;IAE1B,qGAAqG;gBACxE,iBAAiB,CAAC,GAAE,MAAM,IAAI,aAAA;IAE3D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWxB,GAAG,IAAI,IAAI;IAKX,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,OAAO,CAAC,IAAI;IAeZ,OAAO,CAAC,MAAM;CAuBd;AAMD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI3D;AAMD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CASnF;AAED,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7D,YAAY,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAC7E,IAAI,CAkBN;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAqBhE;AAMD,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,MAA8B,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,CA0BxG;AAMD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAG/D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAMD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAOrD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAcvD;AAMD,wBAAgB,SAAS,IAAI,IAAI,CAehC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAO1F;AASD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAkBlD;AAED,uGAAuG;AACvG,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAKpD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Terminal UI — chalk-based styling, markdown output, diff viewer
|
|
3
|
+
// Layout (pinned input box, scroll region) and keyboard input live in screen.ts
|
|
4
|
+
// =============================================================================
|
|
5
|
+
import Chalk from 'chalk';
|
|
6
|
+
import { loadAgentTermoMemory, loadAgentTermoTimeline } from '../memory/index.js';
|
|
7
|
+
import { clipText, listenKeys, resetScreen, setCommands, terminalWidth, } from './screen.js';
|
|
8
|
+
export { createInput, initScreen, pick, setScreenStatus, } from './screen.js';
|
|
9
|
+
const c = Chalk;
|
|
10
|
+
const out = process.stdout;
|
|
11
|
+
export const COMMANDS = [
|
|
12
|
+
{ name: '/help', description: 'show all commands' },
|
|
13
|
+
{ name: '/clear', description: 'clear conversation & screen' },
|
|
14
|
+
{ name: '/memory', description: 'view Agent-Termo memory' },
|
|
15
|
+
{ name: '/timeline', description: 'view recent activity' },
|
|
16
|
+
{ name: '/model', description: 'switch NVIDIA NIM model (or /model <id>)' },
|
|
17
|
+
{ name: '/agents', description: 'list all agents' },
|
|
18
|
+
{ name: '/history', description: 'show message count' },
|
|
19
|
+
{ name: '/exit', description: 'quit' },
|
|
20
|
+
];
|
|
21
|
+
setCommands(COMMANDS);
|
|
22
|
+
// eslint-disable-next-line no-control-regex
|
|
23
|
+
const ANSI_RE = /\x1b\[[0-9;?]*[A-Za-z]/g;
|
|
24
|
+
const visibleLength = (s) => s.replace(ANSI_RE, '').length;
|
|
25
|
+
const rule = () => c.dim('─'.repeat(Math.max(10, Math.min(terminalWidth() - 2, 100))));
|
|
26
|
+
// =============================================================================
|
|
27
|
+
// WELCOME BANNER
|
|
28
|
+
// =============================================================================
|
|
29
|
+
export function printWelcome(projectRoot, model) {
|
|
30
|
+
const width = Math.max(40, Math.min(terminalWidth() - 2, 64));
|
|
31
|
+
const inner = width - 2;
|
|
32
|
+
const room = inner - 2;
|
|
33
|
+
const row = (content) => ' ' + c.magenta('│') + ' ' + content + ' '.repeat(Math.max(0, room - visibleLength(content))) + ' ' + c.magenta('│');
|
|
34
|
+
const field = (label, value) => c.dim(label.padEnd(7)) + c.cyan(clipText(value, room - 7));
|
|
35
|
+
out.write('\n');
|
|
36
|
+
out.write(' ' + c.magenta('╭' + '─'.repeat(inner) + '╮') + '\n');
|
|
37
|
+
out.write(row(c.magenta.bold('✻ Agent-Termo')) + '\n');
|
|
38
|
+
out.write(row(c.dim(clipText('AI coding agent for your terminal', room))) + '\n');
|
|
39
|
+
out.write(row('') + '\n');
|
|
40
|
+
out.write(row(field('model', model)) + '\n');
|
|
41
|
+
out.write(row(field('cwd', projectRoot)) + '\n');
|
|
42
|
+
out.write(' ' + c.magenta('╰' + '─'.repeat(inner) + '╯') + '\n');
|
|
43
|
+
out.write('\n');
|
|
44
|
+
out.write(c.dim(' ') + c.cyan('/help') + c.dim(' commands · ') + c.cyan('/model') + c.dim(' switch NIM model · ') +
|
|
45
|
+
c.cyan('Tab') + c.dim(' completes') + '\n\n');
|
|
46
|
+
}
|
|
47
|
+
// =============================================================================
|
|
48
|
+
// MARKDOWN OUTPUT — line-buffered so streamed replies render as they arrive
|
|
49
|
+
// =============================================================================
|
|
50
|
+
function inline(text) {
|
|
51
|
+
return text
|
|
52
|
+
.split(/(`[^`]+`)/)
|
|
53
|
+
.map((seg) => seg.length > 1 && seg.startsWith('`') && seg.endsWith('`')
|
|
54
|
+
? c.cyan(seg.slice(1, -1))
|
|
55
|
+
: seg.replace(/\*\*(.+?)\*\*/g, (_m, g) => c.bold(g)))
|
|
56
|
+
.join('');
|
|
57
|
+
}
|
|
58
|
+
export class MarkdownPrinter {
|
|
59
|
+
beforeFirstOutput;
|
|
60
|
+
pending = '';
|
|
61
|
+
inCode = false;
|
|
62
|
+
first = true;
|
|
63
|
+
lastBlank = false;
|
|
64
|
+
/** `beforeFirstOutput` runs once, just before the first line is printed (stop the spinner there). */
|
|
65
|
+
constructor(beforeFirstOutput) {
|
|
66
|
+
this.beforeFirstOutput = beforeFirstOutput;
|
|
67
|
+
}
|
|
68
|
+
push(text) {
|
|
69
|
+
this.pending += text;
|
|
70
|
+
let nl = this.pending.indexOf('\n');
|
|
71
|
+
while (nl !== -1) {
|
|
72
|
+
const line = this.pending.slice(0, nl).replace(/\r$/, '');
|
|
73
|
+
this.pending = this.pending.slice(nl + 1);
|
|
74
|
+
this.emit(line);
|
|
75
|
+
nl = this.pending.indexOf('\n');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
end() {
|
|
79
|
+
if (this.pending)
|
|
80
|
+
this.emit(this.pending.replace(/\r$/, ''));
|
|
81
|
+
this.pending = '';
|
|
82
|
+
}
|
|
83
|
+
get printed() {
|
|
84
|
+
return !this.first;
|
|
85
|
+
}
|
|
86
|
+
emit(line) {
|
|
87
|
+
const blank = line.trim() === '';
|
|
88
|
+
if (!this.inCode && blank && (this.first || this.lastBlank))
|
|
89
|
+
return;
|
|
90
|
+
this.lastBlank = blank && !this.inCode;
|
|
91
|
+
if (this.first) {
|
|
92
|
+
this.beforeFirstOutput?.();
|
|
93
|
+
out.write('\n');
|
|
94
|
+
}
|
|
95
|
+
const prefix = this.first ? c.magenta('● ') : ' ';
|
|
96
|
+
this.first = false;
|
|
97
|
+
// Blank prose lines stay empty (no trailing indent); code keeps its gutter.
|
|
98
|
+
out.write(blank && !this.inCode ? '\n' : prefix + this.render(line) + '\n');
|
|
99
|
+
}
|
|
100
|
+
render(line) {
|
|
101
|
+
const fence = /^\s*```\s*([\w+-]*)/.exec(line);
|
|
102
|
+
if (fence) {
|
|
103
|
+
this.inCode = !this.inCode;
|
|
104
|
+
return this.inCode ? c.dim('┌─ ' + (fence[1] || 'code')) : c.dim('└─');
|
|
105
|
+
}
|
|
106
|
+
if (this.inCode)
|
|
107
|
+
return c.dim('│ ') + c.cyan(line.replace(/\t/g, ' '));
|
|
108
|
+
const heading = /^#{1,6}\s+(.*)$/.exec(line);
|
|
109
|
+
if (heading)
|
|
110
|
+
return c.bold.magenta(inline(heading[1] ?? ''));
|
|
111
|
+
if (/^\s*([-*_])\1{2,}\s*$/.test(line))
|
|
112
|
+
return c.dim('─'.repeat(Math.min(40, terminalWidth() - 4)));
|
|
113
|
+
const bullet = /^(\s*)[-*+]\s+(.*)$/.exec(line);
|
|
114
|
+
if (bullet)
|
|
115
|
+
return (bullet[1] ?? '') + c.magenta('•') + ' ' + inline(bullet[2] ?? '');
|
|
116
|
+
const numbered = /^(\s*)(\d+)[.)]\s+(.*)$/.exec(line);
|
|
117
|
+
if (numbered)
|
|
118
|
+
return (numbered[1] ?? '') + c.magenta(numbered[2] + '.') + ' ' + inline(numbered[3] ?? '');
|
|
119
|
+
const quote = /^>\s?(.*)$/.exec(line);
|
|
120
|
+
if (quote)
|
|
121
|
+
return c.dim('▎ ') + c.italic(inline(quote[1] ?? ''));
|
|
122
|
+
return inline(line);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// =============================================================================
|
|
126
|
+
// MESSAGE DISPLAY
|
|
127
|
+
// =============================================================================
|
|
128
|
+
export function printUserMessage(text) {
|
|
129
|
+
const lines = text.split('\n');
|
|
130
|
+
out.write('\n' + c.green.bold('❯ ') + c.bold(lines[0] ?? '') + '\n');
|
|
131
|
+
for (const l of lines.slice(1))
|
|
132
|
+
out.write(' ' + c.bold(l) + '\n');
|
|
133
|
+
}
|
|
134
|
+
export function printAssistantMessage(content) {
|
|
135
|
+
const md = new MarkdownPrinter();
|
|
136
|
+
md.push(content);
|
|
137
|
+
md.end();
|
|
138
|
+
}
|
|
139
|
+
// =============================================================================
|
|
140
|
+
// TOOL CALL DISPLAY
|
|
141
|
+
// =============================================================================
|
|
142
|
+
export function printToolCall(toolName, args) {
|
|
143
|
+
const summary = Object.entries(args)
|
|
144
|
+
.map(([k, v]) => {
|
|
145
|
+
const raw = typeof v === 'string' ? v : JSON.stringify(v);
|
|
146
|
+
return k + '=' + clipText(String(raw ?? '').replace(/\s+/g, ' '), 40);
|
|
147
|
+
})
|
|
148
|
+
.join(', ');
|
|
149
|
+
const room = terminalWidth() - toolName.length - 6;
|
|
150
|
+
out.write('\n' + c.blue('● ') + c.bold(toolName) + c.dim('(' + clipText(summary, room) + ')') + '\n');
|
|
151
|
+
}
|
|
152
|
+
export function printToolResult(toolName, result, parsedOutput) {
|
|
153
|
+
// A proposed file change is shown as a diff, then the accept/reject prompt.
|
|
154
|
+
if (parsedOutput?.needsApproval && parsedOutput.proposedChange) {
|
|
155
|
+
printDiffViewer(parsedOutput.proposedChange);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const room = terminalWidth() - 8;
|
|
159
|
+
if (result.success) {
|
|
160
|
+
// One line of output is shown as-is; longer output (file contents, command
|
|
161
|
+
// logs) is summarised, since the full text goes to the model.
|
|
162
|
+
const lines = (result.output ?? '').split('\n').filter((l) => l.trim() !== '');
|
|
163
|
+
const summary = lines.length > 1 ? `${lines.length} lines` : clipText((lines[0] ?? '').trim() || 'done', room);
|
|
164
|
+
out.write(c.dim(' ⎿ ') + c.green('✓ ') + summary + '\n');
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
const message = (result.error ?? 'unknown error').split('\n')[0] ?? 'unknown error';
|
|
168
|
+
out.write(c.dim(' ⎿ ') + c.red('✗ ' + clipText(`${toolName}: ${message}`, room)) + '\n');
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// =============================================================================
|
|
172
|
+
// DIFF VIEWER
|
|
173
|
+
// =============================================================================
|
|
174
|
+
export function printDiffViewer(change) {
|
|
175
|
+
const diff = change.diff;
|
|
176
|
+
const room = Math.max(20, terminalWidth() - 14);
|
|
177
|
+
const label = change.isDeletion
|
|
178
|
+
? c.red('DELETE')
|
|
179
|
+
: change.isNewFile
|
|
180
|
+
? c.green('NEW')
|
|
181
|
+
: c.blue('MODIFY');
|
|
182
|
+
out.write('\n ' + c.bold.cyan(diff.file) + ' ' + label + ' ' + c.green('+' + diff.additions) + ' ' + c.red('-' + diff.deletions) + '\n');
|
|
183
|
+
out.write(' ' + c.dim('─'.repeat(Math.max(10, Math.min(terminalWidth() - 4, 100)))) + '\n');
|
|
184
|
+
for (const line of diff.lines) {
|
|
185
|
+
const prefix = line.type === 'add' ? '+' : line.type === 'remove' ? '-' : ' ';
|
|
186
|
+
const color = line.type === 'add' ? c.green : line.type === 'remove' ? c.red : c.dim;
|
|
187
|
+
const num = line.lineNumber > 0 ? String(line.lineNumber).padStart(4) : ' ';
|
|
188
|
+
const text = clipText(line.content.replace(/\t/g, ' '), room);
|
|
189
|
+
out.write(' ' + color(prefix + num + ' │ ' + text) + '\n');
|
|
190
|
+
}
|
|
191
|
+
out.write('\n');
|
|
192
|
+
}
|
|
193
|
+
// =============================================================================
|
|
194
|
+
// ACCEPT / REJECT PROMPT
|
|
195
|
+
// =============================================================================
|
|
196
|
+
export function promptAcceptReject(message = 'Accept this change?') {
|
|
197
|
+
out.write('\n' + c.yellow('? ') + c.bold(message) + c.dim(' [') + c.green('Y') + c.dim('/') + c.red('n') + c.dim('] '));
|
|
198
|
+
return new Promise((resolve) => {
|
|
199
|
+
let done = false;
|
|
200
|
+
let stop = () => undefined;
|
|
201
|
+
const answer = (accepted) => {
|
|
202
|
+
done = true;
|
|
203
|
+
stop();
|
|
204
|
+
out.write(accepted === true ? c.green('yes') + '\n' : accepted === false ? c.red('no') + '\n' : c.red('cancelled') + '\n');
|
|
205
|
+
resolve(accepted === true ? 'accept' : 'reject');
|
|
206
|
+
};
|
|
207
|
+
stop = listenKeys((key) => {
|
|
208
|
+
if (done)
|
|
209
|
+
return;
|
|
210
|
+
const first = key.text?.[0]?.toLowerCase();
|
|
211
|
+
if (key.name === 'enter' || first === 'y')
|
|
212
|
+
answer(true);
|
|
213
|
+
else if (key.name === 'escape' || first === 'n')
|
|
214
|
+
answer(false);
|
|
215
|
+
else if (key.name === 'ctrl+c')
|
|
216
|
+
answer('cancelled');
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
// =============================================================================
|
|
221
|
+
// STATUS MESSAGES
|
|
222
|
+
// =============================================================================
|
|
223
|
+
export function printError(message, hint) {
|
|
224
|
+
out.write('\n' + c.red('✗ ' + message) + '\n');
|
|
225
|
+
if (hint)
|
|
226
|
+
out.write(c.dim(' Hint: ' + hint) + '\n');
|
|
227
|
+
}
|
|
228
|
+
export function printSuccess(message) {
|
|
229
|
+
out.write(c.green('✓ ' + message) + '\n');
|
|
230
|
+
}
|
|
231
|
+
export function printInfo(message) {
|
|
232
|
+
out.write(c.blue('ℹ ') + message + '\n');
|
|
233
|
+
}
|
|
234
|
+
// =============================================================================
|
|
235
|
+
// AGENT-TERMO MEMORY + TIMELINE DISPLAY
|
|
236
|
+
// =============================================================================
|
|
237
|
+
export async function printMemoryFile() {
|
|
238
|
+
const mem = loadAgentTermoMemory();
|
|
239
|
+
if (!mem) {
|
|
240
|
+
printInfo('Agent-Termo memory is empty. (Normal for new sessions.)');
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
out.write('\n' + c.bold('Agent-Termo memory') + '\n' + rule() + '\n' + mem + '\n' + rule() + '\n\n');
|
|
244
|
+
}
|
|
245
|
+
export async function printTimelineFile() {
|
|
246
|
+
const tl = loadAgentTermoTimeline();
|
|
247
|
+
if (!tl || tl.trim().length === 0) {
|
|
248
|
+
printInfo('Timeline is empty.');
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
const lines = tl.split('\n');
|
|
252
|
+
const recentCount = Math.min(40, lines.length);
|
|
253
|
+
out.write('\n' + c.bold('Agent-Termo timeline') + c.dim(' (recent entries)') + '\n' + rule() + '\n');
|
|
254
|
+
out.write(lines.slice(-recentCount).join('\n') + '\n' + rule() + '\n');
|
|
255
|
+
if (lines.length > recentCount) {
|
|
256
|
+
out.write(c.dim('… ' + (lines.length - recentCount) + ' earlier entries hidden') + '\n');
|
|
257
|
+
}
|
|
258
|
+
out.write('\n');
|
|
259
|
+
}
|
|
260
|
+
// =============================================================================
|
|
261
|
+
// HELP + AGENTS DISPLAY
|
|
262
|
+
// =============================================================================
|
|
263
|
+
export function printHelp() {
|
|
264
|
+
out.write('\n' + c.bold('Commands') + '\n' + rule() + '\n');
|
|
265
|
+
for (const cmd of COMMANDS) {
|
|
266
|
+
out.write(' ' + c.cyan(cmd.name.padEnd(11)) + c.dim(cmd.description) + '\n');
|
|
267
|
+
}
|
|
268
|
+
out.write('\n' + c.bold('Keys') + '\n' + rule() + '\n');
|
|
269
|
+
const keys = [
|
|
270
|
+
['↑ / ↓', 'input history'],
|
|
271
|
+
['Tab', 'complete a /command'],
|
|
272
|
+
['Ctrl+A / Ctrl+E', 'start / end of line'],
|
|
273
|
+
['Ctrl+W / Ctrl+U', 'delete word / to line start'],
|
|
274
|
+
['Ctrl+C', 'clear the line, or quit when empty'],
|
|
275
|
+
];
|
|
276
|
+
for (const [k, d] of keys)
|
|
277
|
+
out.write(' ' + c.cyan(k.padEnd(17)) + c.dim(d) + '\n');
|
|
278
|
+
out.write('\n');
|
|
279
|
+
}
|
|
280
|
+
export function printAgentsList(agents) {
|
|
281
|
+
out.write('\n' + c.bold('Available agents') + '\n' + rule() + '\n');
|
|
282
|
+
const room = Math.max(10, terminalWidth() - 34);
|
|
283
|
+
for (const a of agents) {
|
|
284
|
+
out.write(' ' + c.cyan(a.name.padEnd(30)) + c.dim(clipText(a.description.replace(/\s+/g, ' '), room)) + '\n');
|
|
285
|
+
}
|
|
286
|
+
out.write('\n');
|
|
287
|
+
}
|
|
288
|
+
// =============================================================================
|
|
289
|
+
// SPINNER
|
|
290
|
+
// =============================================================================
|
|
291
|
+
const FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
292
|
+
let spinnerTimer = null;
|
|
293
|
+
export function startSpinner(message) {
|
|
294
|
+
stopSpinner();
|
|
295
|
+
if (!out.isTTY) {
|
|
296
|
+
out.write(c.dim(message + '…') + '\n');
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
const startedAt = Date.now();
|
|
300
|
+
let frame = 0;
|
|
301
|
+
const label = clipText(message, Math.max(10, terminalWidth() - 14));
|
|
302
|
+
const render = () => {
|
|
303
|
+
const secs = Math.floor((Date.now() - startedAt) / 1000);
|
|
304
|
+
out.write('\r\x1b[2K' + c.magenta(FRAMES[frame++ % FRAMES.length] ?? '⠋') + ' ' + c.dim(`${label}… ${secs}s`));
|
|
305
|
+
};
|
|
306
|
+
out.write('\x1b[?25l');
|
|
307
|
+
render();
|
|
308
|
+
spinnerTimer = setInterval(render, 80);
|
|
309
|
+
}
|
|
310
|
+
/** Stops the spinner and clears its line. The argument is kept for older call sites and is ignored. */
|
|
311
|
+
export function stopSpinner(_success) {
|
|
312
|
+
if (!spinnerTimer)
|
|
313
|
+
return;
|
|
314
|
+
clearInterval(spinnerTimer);
|
|
315
|
+
spinnerTimer = null;
|
|
316
|
+
out.write('\r\x1b[2K\x1b[?25h');
|
|
317
|
+
}
|
|
318
|
+
export function clearScreen() {
|
|
319
|
+
resetScreen();
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export interface CommandInfo {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function setCommands(commands: CommandInfo[]): void;
|
|
6
|
+
export declare function terminalWidth(): number;
|
|
7
|
+
export declare function clipText(text: string, max: number): string;
|
|
8
|
+
export declare function layoutSupported(): boolean;
|
|
9
|
+
export declare function initScreen(info: {
|
|
10
|
+
model: string;
|
|
11
|
+
project: string;
|
|
12
|
+
}): void;
|
|
13
|
+
export declare function setScreenStatus(info: {
|
|
14
|
+
model?: string;
|
|
15
|
+
project?: string;
|
|
16
|
+
}): void;
|
|
17
|
+
/** Clear everything and start output again from the top (used by /clear). */
|
|
18
|
+
export declare function resetScreen(): void;
|
|
19
|
+
export declare function teardownScreen(): void;
|
|
20
|
+
export interface Key {
|
|
21
|
+
name: string;
|
|
22
|
+
text?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Split a stdin chunk into keys. Consecutive printable characters are merged
|
|
26
|
+
* into one `text` key, and bracketed pastes arrive as a single `paste` key.
|
|
27
|
+
* `state.paste` carries an unfinished paste across chunks.
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseKeys(chunk: string, state: {
|
|
30
|
+
paste: string | null;
|
|
31
|
+
}): Key[];
|
|
32
|
+
/**
|
|
33
|
+
* Put stdin in raw mode and call `handler` for every key until the returned
|
|
34
|
+
* function is called, which restores the terminal.
|
|
35
|
+
*/
|
|
36
|
+
export declare function listenKeys(handler: (key: Key) => void): () => void;
|
|
37
|
+
export interface InputController {
|
|
38
|
+
question: (prompt?: string) => Promise<string>;
|
|
39
|
+
close: () => void;
|
|
40
|
+
showPrompt: () => void;
|
|
41
|
+
}
|
|
42
|
+
export declare function createInput(): InputController;
|
|
43
|
+
export interface PickItem {
|
|
44
|
+
value: string;
|
|
45
|
+
label: string;
|
|
46
|
+
hint?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Let the user choose one item. Resolves with its value, or null when cancelled
|
|
50
|
+
* (or when there is no interactive terminal). With `allowCustom`, a typed value
|
|
51
|
+
* that matches nothing can be chosen as-is.
|
|
52
|
+
*/
|
|
53
|
+
export declare function pick(opts: {
|
|
54
|
+
title: string;
|
|
55
|
+
items: PickItem[];
|
|
56
|
+
current?: string;
|
|
57
|
+
allowCustom?: boolean;
|
|
58
|
+
}): Promise<string | null>;
|
|
59
|
+
//# sourceMappingURL=screen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../src/ui/screen.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACpB;AAgBD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAEzD;AAMD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1D;AAOD,wBAAgB,eAAe,IAAI,OAAO,CAIzC;AAkGD,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAYzE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIhF;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,IAAI,IAAI,CAKlC;AAED,wBAAgB,cAAc,IAAI,IAAI,CAarC;AAMD,MAAM,WAAW,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AA8CD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,GAAG,EAAE,CAsC/E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI,CAmBlE;AAqDD,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,WAAW,IAAI,eAAe,CAsJ7C;AAMD,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsIzB"}
|