@visorcraft/idlehands 1.4.5 → 2.0.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.
- package/dist/agent/constants.js +12 -0
- package/dist/agent/constants.js.map +1 -0
- package/dist/agent/errors.js +8 -0
- package/dist/agent/errors.js.map +1 -0
- package/dist/agent/exec-helpers.js +105 -0
- package/dist/agent/exec-helpers.js.map +1 -0
- package/dist/agent/model-pick.js +21 -0
- package/dist/agent/model-pick.js.map +1 -0
- package/dist/agent/session-utils.js +63 -0
- package/dist/agent/session-utils.js.map +1 -0
- package/dist/agent/subagent-context.js +78 -0
- package/dist/agent/subagent-context.js.map +1 -0
- package/dist/agent/tool-loop-guard.js.map +1 -1
- package/dist/agent/tool-policy.js +54 -0
- package/dist/agent/tool-policy.js.map +1 -0
- package/dist/agent/tools-schema.js +281 -0
- package/dist/agent/tools-schema.js.map +1 -0
- package/dist/agent.js +136 -630
- package/dist/agent.js.map +1 -1
- package/dist/anton/controller.js +42 -139
- package/dist/anton/controller.js.map +1 -1
- package/dist/anton/lint-baseline.js +64 -0
- package/dist/anton/lint-baseline.js.map +1 -0
- package/dist/anton/preflight.js.map +1 -1
- package/dist/anton/prompt.js +71 -71
- package/dist/anton/reporter.js.map +1 -1
- package/dist/anton/runtime-ready.js +120 -0
- package/dist/anton/runtime-ready.js.map +1 -0
- package/dist/anton/session.js +8 -6
- package/dist/anton/session.js.map +1 -1
- package/dist/anton/verifier-utils.js +148 -0
- package/dist/anton/verifier-utils.js.map +1 -0
- package/dist/anton/verifier.js +26 -227
- package/dist/anton/verifier.js.map +1 -1
- package/dist/bot/anton-auto-pin.js +12 -0
- package/dist/bot/anton-auto-pin.js.map +1 -0
- package/dist/bot/anton-commands.js +137 -0
- package/dist/bot/anton-commands.js.map +1 -0
- package/dist/bot/anton-run.js +144 -0
- package/dist/bot/anton-run.js.map +1 -0
- package/dist/bot/anton-status-format.js +18 -0
- package/dist/bot/anton-status-format.js.map +1 -0
- package/dist/bot/basic-commands.js +114 -0
- package/dist/bot/basic-commands.js.map +1 -0
- package/dist/bot/command-format.js.map +1 -1
- package/dist/bot/command-logic.js +8 -728
- package/dist/bot/command-logic.js.map +1 -1
- package/dist/bot/commands.js +18 -1
- package/dist/bot/commands.js.map +1 -1
- package/dist/bot/discord-anton-autopin.js +29 -0
- package/dist/bot/discord-anton-autopin.js.map +1 -0
- package/dist/bot/discord-anton.js +45 -0
- package/dist/bot/discord-anton.js.map +1 -0
- package/dist/bot/discord-commands.js +20 -52
- package/dist/bot/discord-commands.js.map +1 -1
- package/dist/bot/discord-result.js +9 -0
- package/dist/bot/discord-result.js.map +1 -0
- package/dist/bot/discord-routing.js.map +1 -1
- package/dist/bot/discord.js +42 -12
- package/dist/bot/discord.js.map +1 -1
- package/dist/bot/escalation-commands.js +145 -0
- package/dist/bot/escalation-commands.js.map +1 -0
- package/dist/bot/escalation.js.map +1 -1
- package/dist/bot/git-status-command.js +28 -0
- package/dist/bot/git-status-command.js.map +1 -0
- package/dist/bot/model-endpoint.js +25 -0
- package/dist/bot/model-endpoint.js.map +1 -0
- package/dist/bot/session-history.js +61 -0
- package/dist/bot/session-history.js.map +1 -0
- package/dist/bot/session-settings.js +89 -0
- package/dist/bot/session-settings.js.map +1 -0
- package/dist/bot/telegram-commands.js +15 -7
- package/dist/bot/telegram-commands.js.map +1 -1
- package/dist/bot/telegram.js +13 -28
- package/dist/bot/telegram.js.map +1 -1
- package/dist/cli/agent-turn.js +8 -2
- package/dist/cli/agent-turn.js.map +1 -1
- package/dist/cli/commands/anton.js +8 -3
- package/dist/cli/commands/anton.js.map +1 -1
- package/dist/cli/commands/model.js +1 -3
- package/dist/cli/commands/model.js.map +1 -1
- package/dist/cli/commands/project.js +1 -1
- package/dist/cli/commands/project.js.map +1 -1
- package/dist/cli/commands/secrets.js +1 -1
- package/dist/cli/commands/secrets.js.map +1 -1
- package/dist/cli/commands/session.js +22 -12
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/guided-onboarding.js +20 -0
- package/dist/cli/guided-onboarding.js.map +1 -0
- package/dist/cli/runtime-cmds.js +8 -133
- package/dist/cli/runtime-cmds.js.map +1 -1
- package/dist/cli/runtime-common.js +35 -0
- package/dist/cli/runtime-common.js.map +1 -0
- package/dist/cli/runtime-detect.js +12 -0
- package/dist/cli/runtime-detect.js.map +1 -0
- package/dist/cli/runtime-host-command.js +7 -0
- package/dist/cli/runtime-host-command.js.map +1 -0
- package/dist/cli/runtime-probe-defaults.js +63 -0
- package/dist/cli/runtime-probe-defaults.js.map +1 -0
- package/dist/cli/runtime-scan-ports.js +30 -0
- package/dist/cli/runtime-scan-ports.js.map +1 -0
- package/dist/cli/setup-bot-step.js +51 -0
- package/dist/cli/setup-bot-step.js.map +1 -0
- package/dist/cli/setup-runtime-forms.js +214 -0
- package/dist/cli/setup-runtime-forms.js.map +1 -0
- package/dist/cli/setup-style.js +8 -0
- package/dist/cli/setup-style.js.map +1 -0
- package/dist/cli/setup-ui.js +146 -0
- package/dist/cli/setup-ui.js.map +1 -0
- package/dist/cli/setup.js +11 -449
- package/dist/cli/setup.js.map +1 -1
- package/dist/client/error-utils.js +37 -0
- package/dist/client/error-utils.js.map +1 -0
- package/dist/client/pressure.js +77 -0
- package/dist/client/pressure.js.map +1 -0
- package/dist/client.js +24 -122
- package/dist/client.js.map +1 -1
- package/dist/config.js +34 -17
- package/dist/config.js.map +1 -1
- package/dist/git.js +8 -2
- package/dist/git.js.map +1 -1
- package/dist/hooks/types.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/progress/message-edit-scheduler.js.map +1 -1
- package/dist/progress/turn-progress.js.map +1 -1
- package/dist/runtime/executor.js +4 -1
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/health.js.map +1 -1
- package/dist/runtime/host-runner.js.map +1 -1
- package/dist/safety.js +3 -2
- package/dist/safety.js.map +1 -1
- package/dist/shared/config-utils.js.map +1 -1
- package/dist/tools/exec-core.js +252 -0
- package/dist/tools/exec-core.js.map +1 -0
- package/dist/tools/exec-pty.js +89 -0
- package/dist/tools/exec-pty.js.map +1 -0
- package/dist/tools/exec-utils.js +94 -0
- package/dist/tools/exec-utils.js.map +1 -0
- package/dist/tools/file-discovery.js +144 -0
- package/dist/tools/file-discovery.js.map +1 -0
- package/dist/tools/file-mutations.js +326 -0
- package/dist/tools/file-mutations.js.map +1 -0
- package/dist/tools/file-read.js +133 -0
- package/dist/tools/file-read.js.map +1 -0
- package/dist/tools/patch-apply.js +168 -0
- package/dist/tools/patch-apply.js.map +1 -0
- package/dist/tools/path-safety.js.map +1 -1
- package/dist/tools/replay-utils.js +25 -0
- package/dist/tools/replay-utils.js.map +1 -0
- package/dist/tools/search-utils.js +55 -0
- package/dist/tools/search-utils.js.map +1 -0
- package/dist/tools/sys-notes.js +34 -0
- package/dist/tools/sys-notes.js.map +1 -0
- package/dist/tools/text-utils.js +164 -0
- package/dist/tools/text-utils.js.map +1 -0
- package/dist/tools/undo.js +1 -1
- package/dist/tools/undo.js.map +1 -1
- package/dist/tools/vault-tools.js +36 -0
- package/dist/tools/vault-tools.js.map +1 -0
- package/dist/tools.js +19 -1460
- package/dist/tools.js.map +1 -1
- package/dist/tui/controller.js +5 -2
- package/dist/tui/controller.js.map +1 -1
- package/dist/tui/render.js.map +1 -1
- package/dist/utils.js +2 -2
- package/dist/utils.js.map +1 -1
- package/dist/vault.js +1 -1
- package/dist/vault.js.map +1 -1
- package/dist/watchdog.js +1 -3
- package/dist/watchdog.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { splitTokens } from './command-utils.js';
|
|
2
|
+
import { BOLD, DIM, RESET } from './setup-style.js';
|
|
3
|
+
import { ask, drawHeader, info, selectChoice } from './setup-ui.js';
|
|
4
|
+
export async function addHostTUI(rl, existing) {
|
|
5
|
+
const editing = !!existing;
|
|
6
|
+
drawHeader(editing ? `Runtime — Edit Host: ${existing.id}` : 'Runtime — Add Host');
|
|
7
|
+
info('A host is a machine that runs inference.');
|
|
8
|
+
console.log();
|
|
9
|
+
if (!editing) {
|
|
10
|
+
console.log(` ${BOLD}Location${RESET}`);
|
|
11
|
+
info('Where is this host?');
|
|
12
|
+
}
|
|
13
|
+
const currentTransport = existing?.transport === 'ssh' ? 'remote' : 'local';
|
|
14
|
+
const transportLabel = await selectChoice([
|
|
15
|
+
{ value: 'local', desc: 'This machine' },
|
|
16
|
+
{ value: 'remote', desc: 'A remote server on your network' },
|
|
17
|
+
], currentTransport);
|
|
18
|
+
const transport = (transportLabel === 'remote' ? 'ssh' : 'local');
|
|
19
|
+
console.log();
|
|
20
|
+
console.log(` ${BOLD}Identity${RESET}`);
|
|
21
|
+
info('A short id and display name for this host.');
|
|
22
|
+
const id = await ask(rl, 'Host id (e.g. my-gpu-box)', existing?.id ?? '');
|
|
23
|
+
if (!id)
|
|
24
|
+
return null;
|
|
25
|
+
const displayName = await ask(rl, 'Display name', existing?.display_name ?? id);
|
|
26
|
+
let connection = {};
|
|
27
|
+
if (transport === 'ssh') {
|
|
28
|
+
console.log();
|
|
29
|
+
console.log(` ${BOLD}SSH connection${RESET}`);
|
|
30
|
+
info('How to reach this host over the network.');
|
|
31
|
+
connection.host = await ask(rl, 'Hostname or IP', existing?.connection?.host ?? '');
|
|
32
|
+
const portStr = await ask(rl, 'Port', String(existing?.connection?.port ?? 22));
|
|
33
|
+
connection.port = Number(portStr) || 22;
|
|
34
|
+
const user = await ask(rl, 'User', existing?.connection?.user ?? '');
|
|
35
|
+
if (user)
|
|
36
|
+
connection.user = user;
|
|
37
|
+
const keyPath = await ask(rl, 'Key path', existing?.connection?.key_path ?? '');
|
|
38
|
+
if (keyPath)
|
|
39
|
+
connection.key_path = keyPath;
|
|
40
|
+
}
|
|
41
|
+
console.log();
|
|
42
|
+
console.log(` ${BOLD}Capabilities${RESET}`);
|
|
43
|
+
info('Hardware tags for matching models to hosts.');
|
|
44
|
+
const gpuRaw = await ask(rl, 'GPU tags, comma-separated (e.g. RTX 4090)', existing?.capabilities?.gpu?.join(', ') ?? '');
|
|
45
|
+
const gpu = gpuRaw
|
|
46
|
+
.split(',')
|
|
47
|
+
.map((s) => s.trim())
|
|
48
|
+
.filter(Boolean);
|
|
49
|
+
const backendsRaw = await ask(rl, 'Backends, comma-separated (e.g. cuda,rocm,vulkan)', existing?.capabilities?.backends?.join(', ') ?? '');
|
|
50
|
+
const backends = backendsRaw
|
|
51
|
+
.split(',')
|
|
52
|
+
.map((s) => s.trim())
|
|
53
|
+
.filter(Boolean);
|
|
54
|
+
console.log();
|
|
55
|
+
console.log(` ${BOLD}Commands${RESET}`);
|
|
56
|
+
info('Shell commands for lifecycle management.');
|
|
57
|
+
const stopCmd = await ask(rl, 'Stop model command', existing?.model_control?.stop_cmd ?? 'pkill -f llama-server || true');
|
|
58
|
+
const healthCmd = await ask(rl, 'Health check command', existing?.health?.check_cmd ?? 'true');
|
|
59
|
+
return {
|
|
60
|
+
id,
|
|
61
|
+
display_name: displayName,
|
|
62
|
+
enabled: existing?.enabled ?? true,
|
|
63
|
+
transport,
|
|
64
|
+
connection,
|
|
65
|
+
capabilities: { gpu, backends },
|
|
66
|
+
health: { check_cmd: healthCmd, timeout_sec: existing?.health?.timeout_sec ?? 5 },
|
|
67
|
+
model_control: { stop_cmd: stopCmd, cleanup_cmd: existing?.model_control?.cleanup_cmd ?? null },
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export async function addBackendTUI(rl, hosts, existing) {
|
|
71
|
+
const editing = !!existing;
|
|
72
|
+
drawHeader(editing ? `Runtime — Edit Backend: ${existing.id}` : 'Runtime — Add Backend');
|
|
73
|
+
info('A backend is a GPU compute layer for running inference.');
|
|
74
|
+
console.log();
|
|
75
|
+
console.log(` ${BOLD}Identity${RESET}`);
|
|
76
|
+
info('A short id and display name for this backend.');
|
|
77
|
+
const id = await ask(rl, 'Backend id (e.g. vulkan-radv)', existing?.id ?? '');
|
|
78
|
+
if (!id)
|
|
79
|
+
return null;
|
|
80
|
+
const displayName = await ask(rl, 'Display name', existing?.display_name ?? id);
|
|
81
|
+
console.log();
|
|
82
|
+
console.log(` ${BOLD}Type${RESET}`);
|
|
83
|
+
info('Which GPU compute layer does this backend use?');
|
|
84
|
+
const type = (await selectChoice([
|
|
85
|
+
{ value: 'vulkan', desc: 'Vulkan (RADV, etc.)' },
|
|
86
|
+
{ value: 'rocm', desc: 'AMD ROCm' },
|
|
87
|
+
{ value: 'cuda', desc: 'NVIDIA CUDA' },
|
|
88
|
+
{ value: 'metal', desc: 'Apple Metal' },
|
|
89
|
+
{ value: 'cpu', desc: 'CPU only' },
|
|
90
|
+
{ value: 'custom', desc: 'Custom backend' },
|
|
91
|
+
], existing?.type ?? 'vulkan'));
|
|
92
|
+
let hostFilters = existing?.host_filters ?? 'any';
|
|
93
|
+
if (hosts.length > 1) {
|
|
94
|
+
console.log();
|
|
95
|
+
const currentFilters = Array.isArray(hostFilters) ? hostFilters.join(', ') : 'any';
|
|
96
|
+
const filtersRaw = await ask(rl, `Host filter (any, or: ${hosts.join(', ')})`, currentFilters);
|
|
97
|
+
hostFilters =
|
|
98
|
+
filtersRaw === 'any'
|
|
99
|
+
? 'any'
|
|
100
|
+
: filtersRaw
|
|
101
|
+
.split(',')
|
|
102
|
+
.map((s) => s.trim())
|
|
103
|
+
.filter(Boolean);
|
|
104
|
+
}
|
|
105
|
+
console.log();
|
|
106
|
+
console.log(` ${BOLD}Verify command${RESET}`);
|
|
107
|
+
info('Optional shell command to check the backend is working (exit 0 = OK).');
|
|
108
|
+
const verifyCmd = await ask(rl, 'Command', existing?.verify_cmd ?? '');
|
|
109
|
+
console.log();
|
|
110
|
+
console.log(` ${BOLD}Environment variables${RESET}`);
|
|
111
|
+
info('Passed to all models on this backend.');
|
|
112
|
+
info(`Example: ${DIM}VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json${RESET}`);
|
|
113
|
+
const existingEnvStr = existing?.env
|
|
114
|
+
? Object.entries(existing.env)
|
|
115
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
116
|
+
.join(' ')
|
|
117
|
+
: '';
|
|
118
|
+
const envRaw = await ask(rl, 'KEY=VALUE pairs (space-separated)', existingEnvStr);
|
|
119
|
+
const env = {};
|
|
120
|
+
if (envRaw) {
|
|
121
|
+
for (const pair of splitTokens(envRaw)) {
|
|
122
|
+
const eqIdx = pair.indexOf('=');
|
|
123
|
+
if (eqIdx > 0)
|
|
124
|
+
env[pair.slice(0, eqIdx)] = pair.slice(eqIdx + 1);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
console.log();
|
|
128
|
+
console.log(` ${BOLD}Extra CLI args${RESET}`);
|
|
129
|
+
info('Appended to all model launch commands on this backend.');
|
|
130
|
+
info(`Example: ${DIM}-fa 1 -mmp 0 -ub 2048 -ctk q4_0 -ctv q4_0 -ngl 0${RESET}`);
|
|
131
|
+
const existingArgsStr = existing?.args?.join(' ') ?? '';
|
|
132
|
+
const args = await ask(rl, 'Args (space-separated)', existingArgsStr);
|
|
133
|
+
return {
|
|
134
|
+
id,
|
|
135
|
+
display_name: displayName,
|
|
136
|
+
enabled: existing?.enabled ?? true,
|
|
137
|
+
type,
|
|
138
|
+
host_filters: hostFilters,
|
|
139
|
+
apply_cmd: existing?.apply_cmd ?? null,
|
|
140
|
+
verify_cmd: verifyCmd || null,
|
|
141
|
+
rollback_cmd: existing?.rollback_cmd ?? null,
|
|
142
|
+
...(Object.keys(env).length > 0 ? { env } : {}),
|
|
143
|
+
...(args.trim().length > 0 ? { args: splitTokens(args) } : {}),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
export async function addModelTUI(rl, hosts, backends, existing) {
|
|
147
|
+
const editing = !!existing;
|
|
148
|
+
drawHeader(editing ? `Runtime — Edit Model: ${existing.id}` : 'Runtime — Add Model');
|
|
149
|
+
info('A model is a GGUF (or other format) with launch and probe commands.');
|
|
150
|
+
info(`Template variables: ${DIM}{backend_env}, {source}, {port}, {backend_args}, {host}${RESET}`);
|
|
151
|
+
console.log();
|
|
152
|
+
console.log(` ${BOLD}Identity${RESET}`);
|
|
153
|
+
info('A short id, display name, and source path or URL.');
|
|
154
|
+
const id = await ask(rl, 'Model id (e.g. qwen3-coder-q4)', existing?.id ?? '');
|
|
155
|
+
if (!id)
|
|
156
|
+
return null;
|
|
157
|
+
const displayName = await ask(rl, 'Display name', existing?.display_name ?? id);
|
|
158
|
+
const source = await ask(rl, 'Source (file path or URL)', existing?.source ?? '');
|
|
159
|
+
console.log();
|
|
160
|
+
console.log(` ${BOLD}Launch${RESET}`);
|
|
161
|
+
info('Commands to start and health-check the inference server.');
|
|
162
|
+
const defaultStart = 'nohup {backend_env} llama-server -m {source} --port {port} --ctx-size 131072 {backend_args} --host 0.0.0.0 > /tmp/llama-server.log 2>&1 &';
|
|
163
|
+
const startCmd = await ask(rl, 'Start command', existing?.launch?.start_cmd ?? defaultStart);
|
|
164
|
+
const probeCmd = await ask(rl, 'Probe command', existing?.launch?.probe_cmd ?? 'curl -fsS http://127.0.0.1:{port}/health');
|
|
165
|
+
const probeTimeoutStr = await ask(rl, 'Probe timeout (seconds)', String(existing?.launch?.probe_timeout_sec ?? 60));
|
|
166
|
+
const probeTimeout = Math.max(5, Number(probeTimeoutStr) || 60);
|
|
167
|
+
console.log();
|
|
168
|
+
console.log(` ${BOLD}Network${RESET}`);
|
|
169
|
+
info('Port the inference server listens on.');
|
|
170
|
+
const portStr = await ask(rl, 'Default port', String(existing?.runtime_defaults?.port ?? 8080));
|
|
171
|
+
const port = Number(portStr) || 8080;
|
|
172
|
+
let hostPolicy = existing?.host_policy ?? 'any';
|
|
173
|
+
let backendPolicy = existing?.backend_policy ?? 'any';
|
|
174
|
+
if (hosts.length > 1) {
|
|
175
|
+
console.log();
|
|
176
|
+
const currentHp = Array.isArray(hostPolicy) ? hostPolicy.join(', ') : 'any';
|
|
177
|
+
const hp = await ask(rl, `Host policy (any, or: ${hosts.join(', ')})`, currentHp);
|
|
178
|
+
hostPolicy =
|
|
179
|
+
hp === 'any'
|
|
180
|
+
? 'any'
|
|
181
|
+
: hp
|
|
182
|
+
.split(',')
|
|
183
|
+
.map((s) => s.trim())
|
|
184
|
+
.filter(Boolean);
|
|
185
|
+
}
|
|
186
|
+
if (backends.length > 1) {
|
|
187
|
+
const currentBp = Array.isArray(backendPolicy) ? backendPolicy.join(', ') : 'any';
|
|
188
|
+
const bp = await ask(rl, `Backend policy (any, or: ${backends.join(', ')})`, currentBp);
|
|
189
|
+
backendPolicy =
|
|
190
|
+
bp === 'any'
|
|
191
|
+
? 'any'
|
|
192
|
+
: bp
|
|
193
|
+
.split(',')
|
|
194
|
+
.map((s) => s.trim())
|
|
195
|
+
.filter(Boolean);
|
|
196
|
+
}
|
|
197
|
+
return {
|
|
198
|
+
id,
|
|
199
|
+
display_name: displayName,
|
|
200
|
+
enabled: existing?.enabled ?? true,
|
|
201
|
+
source,
|
|
202
|
+
host_policy: hostPolicy,
|
|
203
|
+
backend_policy: backendPolicy,
|
|
204
|
+
launch: {
|
|
205
|
+
start_cmd: startCmd,
|
|
206
|
+
probe_cmd: probeCmd,
|
|
207
|
+
probe_timeout_sec: probeTimeout,
|
|
208
|
+
probe_interval_ms: existing?.launch?.probe_interval_ms ?? 1000,
|
|
209
|
+
},
|
|
210
|
+
runtime_defaults: { port },
|
|
211
|
+
split_policy: existing?.split_policy ?? null,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=setup-runtime-forms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-runtime-forms.js","sourceRoot":"","sources":["../../src/cli/setup-runtime-forms.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const BOLD = '\x1b[1m';
|
|
2
|
+
export const DIM = '\x1b[2m';
|
|
3
|
+
export const GREEN = '\x1b[32m';
|
|
4
|
+
export const YELLOW = '\x1b[33m';
|
|
5
|
+
export const RED = '\x1b[31m';
|
|
6
|
+
export const CYAN = '\x1b[36m';
|
|
7
|
+
export const RESET = '\x1b[0m';
|
|
8
|
+
//# sourceMappingURL=setup-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-style.js","sourceRoot":"","sources":["../../src/cli/setup-style.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC;AAC9B,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC;AAC7B,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC;AAChC,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;AACjC,MAAM,CAAC,MAAM,GAAG,GAAG,UAAU,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { HIDE_CURSOR, SHOW_CURSOR, ERASE_LINE, enterFullScreen as enterFullScreenBase, leaveFullScreen as leaveFullScreenBase, clearScreen, } from '../tui/screen.js';
|
|
2
|
+
const BOLD = '\x1b[1m';
|
|
3
|
+
const DIM = '\x1b[2m';
|
|
4
|
+
const GREEN = '\x1b[32m';
|
|
5
|
+
const YELLOW = '\x1b[33m';
|
|
6
|
+
const CYAN = '\x1b[36m';
|
|
7
|
+
const RESET = '\x1b[0m';
|
|
8
|
+
const LOGO_WIDE = [
|
|
9
|
+
`${CYAN} ██╗██████╗ ██╗ ███████╗${RESET} ${BOLD}██╗ ██╗ █████╗ ███╗ ██╗██████╗ ███████╗${RESET}`,
|
|
10
|
+
`${CYAN} ██║██╔══██╗██║ ██╔════╝${RESET} ${BOLD}██║ ██║██╔══██╗████╗ ██║██╔══██╗██╔════╝${RESET}`,
|
|
11
|
+
`${CYAN} ██║██║ ██║██║ █████╗${RESET} ${BOLD}███████║███████║██╔██╗ ██║██║ ██║███████╗${RESET}`,
|
|
12
|
+
`${CYAN} ██║██║ ██║██║ ██╔══╝${RESET} ${BOLD}██╔══██║██╔══██║██║╚██╗██║██║ ██║╚════██║${RESET}`,
|
|
13
|
+
`${CYAN} ██║██████╔╝███████╗███████╗${RESET} ${BOLD}██║ ██║██║ ██║██║ ╚████║██████╔╝███████║${RESET}`,
|
|
14
|
+
`${CYAN} ╚═╝╚═════╝ ╚══════╝╚══════╝${RESET} ${BOLD}╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚══════╝${RESET}`,
|
|
15
|
+
];
|
|
16
|
+
const LOGO_NARROW = [` ${CYAN}${BOLD}I D L E${RESET} ${BOLD}H A N D S${RESET}`];
|
|
17
|
+
let inAltScreen = false;
|
|
18
|
+
export function isInAltScreen() {
|
|
19
|
+
return inAltScreen;
|
|
20
|
+
}
|
|
21
|
+
export function enterFullScreen() {
|
|
22
|
+
enterFullScreenBase();
|
|
23
|
+
inAltScreen = true;
|
|
24
|
+
}
|
|
25
|
+
export function leaveFullScreen() {
|
|
26
|
+
leaveFullScreenBase();
|
|
27
|
+
inAltScreen = false;
|
|
28
|
+
}
|
|
29
|
+
export function drawHeader(stepLabel) {
|
|
30
|
+
clearScreen();
|
|
31
|
+
const cols = process.stdout.columns ?? 80;
|
|
32
|
+
const logo = cols >= 78 ? LOGO_WIDE : LOGO_NARROW;
|
|
33
|
+
console.log();
|
|
34
|
+
for (const line of logo) {
|
|
35
|
+
console.log(line);
|
|
36
|
+
}
|
|
37
|
+
console.log(` ${DIM}Local-first coding agent${RESET}`);
|
|
38
|
+
if (stepLabel) {
|
|
39
|
+
console.log();
|
|
40
|
+
const bar = '─'.repeat(Math.min(cols - 4, 60));
|
|
41
|
+
console.log(` ${DIM}${bar}${RESET}`);
|
|
42
|
+
console.log(` ${BOLD}${stepLabel}${RESET}`);
|
|
43
|
+
}
|
|
44
|
+
console.log();
|
|
45
|
+
}
|
|
46
|
+
export function info(text) {
|
|
47
|
+
console.log(` ${DIM}${text}${RESET}`);
|
|
48
|
+
}
|
|
49
|
+
export function success(text) {
|
|
50
|
+
console.log(` ${GREEN}✓${RESET} ${text}`);
|
|
51
|
+
}
|
|
52
|
+
export function warn(text) {
|
|
53
|
+
console.log(` ${YELLOW}⚠${RESET} ${text}`);
|
|
54
|
+
}
|
|
55
|
+
export async function ask(rl, prompt, fallback = '') {
|
|
56
|
+
process.stdout.write(SHOW_CURSOR);
|
|
57
|
+
const hint = fallback ? ` ${DIM}[${fallback}]${RESET}` : '';
|
|
58
|
+
const ans = (await rl.question(` ${prompt}${hint}: `)).trim();
|
|
59
|
+
return ans || fallback;
|
|
60
|
+
}
|
|
61
|
+
export async function pause() {
|
|
62
|
+
return new Promise((resolve) => {
|
|
63
|
+
const wasRaw = process.stdin.isRaw;
|
|
64
|
+
process.stdin.setRawMode(true);
|
|
65
|
+
process.stdin.resume();
|
|
66
|
+
process.stdout.write(` ${DIM}Press any key to continue...${RESET}`);
|
|
67
|
+
const onData = (buf) => {
|
|
68
|
+
const key = buf.toString();
|
|
69
|
+
if (key === '\x03') {
|
|
70
|
+
process.stdin.removeListener('data', onData);
|
|
71
|
+
process.stdin.setRawMode(wasRaw ?? false);
|
|
72
|
+
leaveFullScreen();
|
|
73
|
+
process.exit(0);
|
|
74
|
+
}
|
|
75
|
+
process.stdin.removeListener('data', onData);
|
|
76
|
+
process.stdin.setRawMode(wasRaw ?? false);
|
|
77
|
+
resolve();
|
|
78
|
+
};
|
|
79
|
+
process.stdin.on('data', onData);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
export async function askYN(rl, prompt, defaultYes = true) {
|
|
83
|
+
process.stdout.write(SHOW_CURSOR);
|
|
84
|
+
const hint = defaultYes ? 'Y/n' : 'y/N';
|
|
85
|
+
const ans = (await rl.question(` ${prompt} ${DIM}[${hint}]${RESET}: `)).trim().toLowerCase();
|
|
86
|
+
if (!ans)
|
|
87
|
+
return defaultYes;
|
|
88
|
+
return ans.startsWith('y');
|
|
89
|
+
}
|
|
90
|
+
function moveUp(n) {
|
|
91
|
+
return n > 0 ? `\x1b[${n}A` : '';
|
|
92
|
+
}
|
|
93
|
+
export async function selectChoice(choices, defaultValue) {
|
|
94
|
+
const defaultIdx = Math.max(0, choices.findIndex((c) => c.value === defaultValue));
|
|
95
|
+
let selected = defaultIdx;
|
|
96
|
+
function render(firstDraw) {
|
|
97
|
+
if (!firstDraw) {
|
|
98
|
+
process.stdout.write(moveUp(choices.length + 2));
|
|
99
|
+
}
|
|
100
|
+
const maxLen = Math.max(...choices.map((c) => c.value.length));
|
|
101
|
+
for (let i = 0; i < choices.length; i++) {
|
|
102
|
+
const c = choices[i];
|
|
103
|
+
const arrow = i === selected ? `${GREEN}❯${RESET}` : ' ';
|
|
104
|
+
const padded = c.value.padEnd(maxLen);
|
|
105
|
+
const label = i === selected ? `${BOLD}${padded}${RESET}` : `${DIM}${padded}${RESET}`;
|
|
106
|
+
const desc = c.desc ? ` ${DIM}${c.desc}${RESET}` : '';
|
|
107
|
+
process.stdout.write(`${ERASE_LINE} ${arrow} ${label}${desc}\n`);
|
|
108
|
+
}
|
|
109
|
+
process.stdout.write(`${ERASE_LINE}\n`);
|
|
110
|
+
process.stdout.write(`${ERASE_LINE} ${DIM}↑/↓ to move, Enter to select${RESET}\n`);
|
|
111
|
+
}
|
|
112
|
+
process.stdout.write('\n');
|
|
113
|
+
process.stdout.write(HIDE_CURSOR);
|
|
114
|
+
render(true);
|
|
115
|
+
return new Promise((resolve) => {
|
|
116
|
+
const wasRaw = process.stdin.isRaw;
|
|
117
|
+
process.stdin.setRawMode(true);
|
|
118
|
+
process.stdin.resume();
|
|
119
|
+
const onData = (buf) => {
|
|
120
|
+
const key = buf.toString();
|
|
121
|
+
if (key === '\x1b[A' || key === 'k') {
|
|
122
|
+
selected = (selected - 1 + choices.length) % choices.length;
|
|
123
|
+
render(false);
|
|
124
|
+
}
|
|
125
|
+
else if (key === '\x1b[B' || key === 'j') {
|
|
126
|
+
selected = (selected + 1) % choices.length;
|
|
127
|
+
render(false);
|
|
128
|
+
}
|
|
129
|
+
else if (key === '\r' || key === '\n') {
|
|
130
|
+
process.stdin.removeListener('data', onData);
|
|
131
|
+
process.stdin.setRawMode(wasRaw ?? false);
|
|
132
|
+
process.stdout.write(SHOW_CURSOR);
|
|
133
|
+
resolve(choices[selected].value);
|
|
134
|
+
}
|
|
135
|
+
else if (key === '\x03') {
|
|
136
|
+
process.stdin.removeListener('data', onData);
|
|
137
|
+
process.stdin.setRawMode(wasRaw ?? false);
|
|
138
|
+
process.stdout.write(SHOW_CURSOR);
|
|
139
|
+
leaveFullScreen();
|
|
140
|
+
process.exit(0);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
process.stdin.on('data', onData);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=setup-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-ui.js","sourceRoot":"","sources":["../../src/cli/setup-ui.ts"],"names":[],"mappings":"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"}
|