@visorcraft/idlehands 1.4.6 → 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.
Files changed (171) hide show
  1. package/dist/agent/constants.js +12 -0
  2. package/dist/agent/constants.js.map +1 -0
  3. package/dist/agent/errors.js +8 -0
  4. package/dist/agent/errors.js.map +1 -0
  5. package/dist/agent/exec-helpers.js +105 -0
  6. package/dist/agent/exec-helpers.js.map +1 -0
  7. package/dist/agent/model-pick.js +21 -0
  8. package/dist/agent/model-pick.js.map +1 -0
  9. package/dist/agent/session-utils.js +63 -0
  10. package/dist/agent/session-utils.js.map +1 -0
  11. package/dist/agent/subagent-context.js +78 -0
  12. package/dist/agent/subagent-context.js.map +1 -0
  13. package/dist/agent/tool-loop-guard.js.map +1 -1
  14. package/dist/agent/tool-policy.js +54 -0
  15. package/dist/agent/tool-policy.js.map +1 -0
  16. package/dist/agent/tools-schema.js +281 -0
  17. package/dist/agent/tools-schema.js.map +1 -0
  18. package/dist/agent.js +136 -630
  19. package/dist/agent.js.map +1 -1
  20. package/dist/anton/controller.js +21 -136
  21. package/dist/anton/controller.js.map +1 -1
  22. package/dist/anton/lint-baseline.js +64 -0
  23. package/dist/anton/lint-baseline.js.map +1 -0
  24. package/dist/anton/preflight.js.map +1 -1
  25. package/dist/anton/prompt.js +71 -71
  26. package/dist/anton/reporter.js.map +1 -1
  27. package/dist/anton/runtime-ready.js +120 -0
  28. package/dist/anton/runtime-ready.js.map +1 -0
  29. package/dist/anton/session.js +1 -1
  30. package/dist/anton/session.js.map +1 -1
  31. package/dist/anton/verifier-utils.js +148 -0
  32. package/dist/anton/verifier-utils.js.map +1 -0
  33. package/dist/anton/verifier.js +26 -227
  34. package/dist/anton/verifier.js.map +1 -1
  35. package/dist/bot/anton-auto-pin.js +12 -0
  36. package/dist/bot/anton-auto-pin.js.map +1 -0
  37. package/dist/bot/anton-commands.js +137 -0
  38. package/dist/bot/anton-commands.js.map +1 -0
  39. package/dist/bot/anton-run.js +144 -0
  40. package/dist/bot/anton-run.js.map +1 -0
  41. package/dist/bot/anton-status-format.js +18 -0
  42. package/dist/bot/anton-status-format.js.map +1 -0
  43. package/dist/bot/basic-commands.js +114 -0
  44. package/dist/bot/basic-commands.js.map +1 -0
  45. package/dist/bot/command-format.js.map +1 -1
  46. package/dist/bot/command-logic.js +8 -728
  47. package/dist/bot/command-logic.js.map +1 -1
  48. package/dist/bot/commands.js +18 -1
  49. package/dist/bot/commands.js.map +1 -1
  50. package/dist/bot/discord-anton-autopin.js +29 -0
  51. package/dist/bot/discord-anton-autopin.js.map +1 -0
  52. package/dist/bot/discord-anton.js +45 -0
  53. package/dist/bot/discord-anton.js.map +1 -0
  54. package/dist/bot/discord-commands.js +20 -52
  55. package/dist/bot/discord-commands.js.map +1 -1
  56. package/dist/bot/discord-result.js +9 -0
  57. package/dist/bot/discord-result.js.map +1 -0
  58. package/dist/bot/discord-routing.js.map +1 -1
  59. package/dist/bot/discord.js +42 -12
  60. package/dist/bot/discord.js.map +1 -1
  61. package/dist/bot/escalation-commands.js +145 -0
  62. package/dist/bot/escalation-commands.js.map +1 -0
  63. package/dist/bot/escalation.js.map +1 -1
  64. package/dist/bot/git-status-command.js +28 -0
  65. package/dist/bot/git-status-command.js.map +1 -0
  66. package/dist/bot/model-endpoint.js +25 -0
  67. package/dist/bot/model-endpoint.js.map +1 -0
  68. package/dist/bot/session-history.js +61 -0
  69. package/dist/bot/session-history.js.map +1 -0
  70. package/dist/bot/session-settings.js +89 -0
  71. package/dist/bot/session-settings.js.map +1 -0
  72. package/dist/bot/telegram-commands.js +15 -7
  73. package/dist/bot/telegram-commands.js.map +1 -1
  74. package/dist/bot/telegram.js +13 -28
  75. package/dist/bot/telegram.js.map +1 -1
  76. package/dist/cli/agent-turn.js +8 -2
  77. package/dist/cli/agent-turn.js.map +1 -1
  78. package/dist/cli/commands/anton.js +6 -1
  79. package/dist/cli/commands/anton.js.map +1 -1
  80. package/dist/cli/commands/model.js +1 -3
  81. package/dist/cli/commands/model.js.map +1 -1
  82. package/dist/cli/commands/project.js +1 -1
  83. package/dist/cli/commands/project.js.map +1 -1
  84. package/dist/cli/commands/secrets.js +1 -1
  85. package/dist/cli/commands/secrets.js.map +1 -1
  86. package/dist/cli/commands/session.js +22 -12
  87. package/dist/cli/commands/session.js.map +1 -1
  88. package/dist/cli/guided-onboarding.js +20 -0
  89. package/dist/cli/guided-onboarding.js.map +1 -0
  90. package/dist/cli/runtime-cmds.js +8 -133
  91. package/dist/cli/runtime-cmds.js.map +1 -1
  92. package/dist/cli/runtime-common.js +35 -0
  93. package/dist/cli/runtime-common.js.map +1 -0
  94. package/dist/cli/runtime-detect.js +12 -0
  95. package/dist/cli/runtime-detect.js.map +1 -0
  96. package/dist/cli/runtime-host-command.js +7 -0
  97. package/dist/cli/runtime-host-command.js.map +1 -0
  98. package/dist/cli/runtime-probe-defaults.js +63 -0
  99. package/dist/cli/runtime-probe-defaults.js.map +1 -0
  100. package/dist/cli/runtime-scan-ports.js +30 -0
  101. package/dist/cli/runtime-scan-ports.js.map +1 -0
  102. package/dist/cli/setup-bot-step.js +51 -0
  103. package/dist/cli/setup-bot-step.js.map +1 -0
  104. package/dist/cli/setup-runtime-forms.js +214 -0
  105. package/dist/cli/setup-runtime-forms.js.map +1 -0
  106. package/dist/cli/setup-style.js +8 -0
  107. package/dist/cli/setup-style.js.map +1 -0
  108. package/dist/cli/setup-ui.js +146 -0
  109. package/dist/cli/setup-ui.js.map +1 -0
  110. package/dist/cli/setup.js +11 -449
  111. package/dist/cli/setup.js.map +1 -1
  112. package/dist/client/error-utils.js +37 -0
  113. package/dist/client/error-utils.js.map +1 -0
  114. package/dist/client/pressure.js +77 -0
  115. package/dist/client/pressure.js.map +1 -0
  116. package/dist/client.js +24 -122
  117. package/dist/client.js.map +1 -1
  118. package/dist/config.js +31 -14
  119. package/dist/config.js.map +1 -1
  120. package/dist/git.js +8 -2
  121. package/dist/git.js.map +1 -1
  122. package/dist/hooks/types.js.map +1 -1
  123. package/dist/index.js.map +1 -1
  124. package/dist/progress/message-edit-scheduler.js.map +1 -1
  125. package/dist/progress/turn-progress.js.map +1 -1
  126. package/dist/runtime/executor.js +4 -1
  127. package/dist/runtime/executor.js.map +1 -1
  128. package/dist/runtime/health.js.map +1 -1
  129. package/dist/runtime/host-runner.js.map +1 -1
  130. package/dist/safety.js +3 -2
  131. package/dist/safety.js.map +1 -1
  132. package/dist/shared/config-utils.js.map +1 -1
  133. package/dist/tools/exec-core.js +252 -0
  134. package/dist/tools/exec-core.js.map +1 -0
  135. package/dist/tools/exec-pty.js +89 -0
  136. package/dist/tools/exec-pty.js.map +1 -0
  137. package/dist/tools/exec-utils.js +94 -0
  138. package/dist/tools/exec-utils.js.map +1 -0
  139. package/dist/tools/file-discovery.js +144 -0
  140. package/dist/tools/file-discovery.js.map +1 -0
  141. package/dist/tools/file-mutations.js +326 -0
  142. package/dist/tools/file-mutations.js.map +1 -0
  143. package/dist/tools/file-read.js +133 -0
  144. package/dist/tools/file-read.js.map +1 -0
  145. package/dist/tools/patch-apply.js +168 -0
  146. package/dist/tools/patch-apply.js.map +1 -0
  147. package/dist/tools/path-safety.js.map +1 -1
  148. package/dist/tools/replay-utils.js +25 -0
  149. package/dist/tools/replay-utils.js.map +1 -0
  150. package/dist/tools/search-utils.js +55 -0
  151. package/dist/tools/search-utils.js.map +1 -0
  152. package/dist/tools/sys-notes.js +34 -0
  153. package/dist/tools/sys-notes.js.map +1 -0
  154. package/dist/tools/text-utils.js +164 -0
  155. package/dist/tools/text-utils.js.map +1 -0
  156. package/dist/tools/undo.js +1 -1
  157. package/dist/tools/undo.js.map +1 -1
  158. package/dist/tools/vault-tools.js +36 -0
  159. package/dist/tools/vault-tools.js.map +1 -0
  160. package/dist/tools.js +19 -1460
  161. package/dist/tools.js.map +1 -1
  162. package/dist/tui/controller.js +5 -2
  163. package/dist/tui/controller.js.map +1 -1
  164. package/dist/tui/render.js.map +1 -1
  165. package/dist/utils.js +2 -2
  166. package/dist/utils.js.map +1 -1
  167. package/dist/vault.js +1 -1
  168. package/dist/vault.js.map +1 -1
  169. package/dist/watchdog.js +1 -3
  170. package/dist/watchdog.js.map +1 -1
  171. 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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"}