@dmrlzz/davecode 0.3.0 → 0.4.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/README.md +5 -4
- package/bin/davecode.js +0 -0
- package/dist/{ChatApp-FO5SABXB.js → ChatApp-BO7QMBWD.js} +289 -137
- package/dist/ChatApp-BO7QMBWD.js.map +1 -0
- package/dist/{RunnerView-DLVR7C22.js → RunnerView-A7JSPUW5.js} +5 -5
- package/dist/account-UGNLJPQ4.js +23 -0
- package/dist/accounts-NM7IWP53.js +37 -0
- package/dist/{budget-RBHCEDPP.js → budget-INAW6FXD.js} +6 -6
- package/dist/chat-U4QJQ7M6.js +359 -0
- package/dist/chat-U4QJQ7M6.js.map +1 -0
- package/dist/{chunk-C7FDRA3U.js → chunk-3Q2KCXLN.js} +660 -139
- package/dist/chunk-3Q2KCXLN.js.map +1 -0
- package/dist/{chunk-BOLFK3BH.js → chunk-5LKOJBUL.js} +2 -2
- package/dist/{accounts-MTMGYKEP.js → chunk-CWBVNS3L.js} +24 -17
- package/dist/chunk-CWBVNS3L.js.map +1 -0
- package/dist/{chunk-PIIJ3RSI.js → chunk-DZ2FDABF.js} +1269 -1265
- package/dist/chunk-DZ2FDABF.js.map +1 -0
- package/dist/{chunk-OYEYNDOO.js → chunk-GE22VBCY.js} +3 -3
- package/dist/chunk-GHDOUII5.js +144 -0
- package/dist/chunk-GHDOUII5.js.map +1 -0
- package/dist/{chunk-MSLLH5XP.js → chunk-GZJ6JSO7.js} +4 -4
- package/dist/{chunk-VVCXGQMY.js → chunk-MC7RIPL7.js} +17 -8
- package/dist/chunk-MC7RIPL7.js.map +1 -0
- package/dist/{chunk-23KTE7IK.js → chunk-MOK5D3XJ.js} +2 -2
- package/dist/{chunk-OXRMGR72.js → chunk-PGPXE6LF.js} +2 -2
- package/dist/chunk-QA3O6RA2.js +81 -0
- package/dist/chunk-QA3O6RA2.js.map +1 -0
- package/dist/chunk-ROIUTNQV.js +20 -0
- package/dist/chunk-ROIUTNQV.js.map +1 -0
- package/dist/{chunk-IVZHKUCD.js → chunk-Z6NQDJEN.js} +3 -3
- package/dist/{config-FRMY5OHG.js → config-YEAPBMBX.js} +5 -5
- package/dist/dashboard/assets/Accounts-CeVyX4a3.js +1 -0
- package/dist/dashboard/assets/Badge-CGY6DgGx.js +55 -0
- package/dist/dashboard/assets/{Callout-B9g_wPDi.js → Callout-DauCk_cW.js} +1 -1
- package/dist/dashboard/assets/{Field-BfabPEcY.js → Field-OXMnT9Tb.js} +1 -1
- package/dist/dashboard/assets/{Goals-BsV-6m94.js → Goals-DH-KDh8M.js} +1 -1
- package/dist/dashboard/assets/{Library-CEA9P1m-.js → Library-C15szLjZ.js} +1 -1
- package/dist/dashboard/assets/{Markdown-ClRsddnB.js → Markdown-Xhao3sgL.js} +7 -7
- package/dist/dashboard/assets/Panel-Du40pM7n.js +1 -0
- package/dist/dashboard/assets/{RoutesPage-Dh-BJ3ir.js → RoutesPage-Cj1OelGO.js} +1 -1
- package/dist/dashboard/assets/{Runner-C_e9l5l2.js → Runner-BK1-ZF7h.js} +1 -1
- package/dist/dashboard/assets/{Settings-C6Yc1Gjg.js → Settings-C1nzQQhe.js} +1 -1
- package/dist/dashboard/assets/{Switch-CUpOJjUT.js → Switch-bwtIJ00H.js} +1 -1
- package/dist/dashboard/assets/Tasks-x4s8IiPG.js +2 -0
- package/dist/dashboard/assets/{Traffic-CE6wZSMr.js → Traffic-CV7TaTid.js} +1 -1
- package/dist/dashboard/assets/{Workspace-CxFxvkA6.js → Workspace-DAL-MBc0.js} +1 -1
- package/dist/dashboard/assets/arrow-up-goM9r-I9.js +1 -0
- package/dist/dashboard/assets/{forms-D6UIYgC5.js → forms-DtpfI65-.js} +1 -1
- package/dist/dashboard/assets/index-BCi-Vuvh.js +104 -0
- package/dist/dashboard/assets/{index-1iH716Xy.css → index-CcJFhc98.css} +1 -1
- package/dist/dashboard/assets/{task-errors-CE4oEr8H.js → task-errors-B2pgjUGN.js} +1 -1
- package/dist/dashboard/assets/{trash-CWqeZ7eg.js → trash-BVojETtF.js} +1 -1
- package/dist/dashboard/favicon.svg +1 -7
- package/dist/dashboard/index.html +4 -4
- package/dist/{dist-ZPXEVBEC.js → dist-RRQGUBL3.js} +24 -2
- package/dist/dist-RRQGUBL3.js.map +1 -0
- package/dist/{doctor-7RUD4D3A.js → doctor-MQYK44S2.js} +5 -5
- package/dist/{goal-JFRNPBSD.js → goal-6NUX4AIT.js} +5 -5
- package/dist/index.js +48 -30
- package/dist/index.js.map +1 -1
- package/dist/{init-NFYNO3A3.js → init-AXYIWAB3.js} +6 -6
- package/dist/{prompts-L37J72YW.js → prompts-TZ7UC42M.js} +9 -5
- package/dist/prompts-TZ7UC42M.js.map +1 -0
- package/dist/{run-ARUPXFFB.js → run-QRTLHFB3.js} +10 -10
- package/dist/runtime.js +18 -0
- package/dist/runtime.js.map +1 -0
- package/dist/{start-CFPOVIAR.js → start-O5I5TSO2.js} +5 -5
- package/dist/{status-E4EACVE2.js → status-LEA3RVUX.js} +6 -6
- package/dist/status-LEA3RVUX.js.map +1 -0
- package/dist/{tasks-ZIK6BVEX.js → tasks-XOTVICVZ.js} +6 -6
- package/package.json +21 -15
- package/dist/ChatApp-FO5SABXB.js.map +0 -1
- package/dist/accounts-MTMGYKEP.js.map +0 -1
- package/dist/chat-ZDXX3N6X.js +0 -95
- package/dist/chat-ZDXX3N6X.js.map +0 -1
- package/dist/chunk-C7FDRA3U.js.map +0 -1
- package/dist/chunk-DYQ56FBT.js +0 -47
- package/dist/chunk-DYQ56FBT.js.map +0 -1
- package/dist/chunk-PIIJ3RSI.js.map +0 -1
- package/dist/chunk-VVCXGQMY.js.map +0 -1
- package/dist/dashboard/assets/Accounts-BR3ZfVk4.js +0 -1
- package/dist/dashboard/assets/Badge-B-qzNRrZ.js +0 -55
- package/dist/dashboard/assets/Panel-B9tSgX6l.js +0 -1
- package/dist/dashboard/assets/Tasks-CTku0rR3.js +0 -2
- package/dist/dashboard/assets/arrow-up-DL3CuFOO.js +0 -1
- package/dist/dashboard/assets/index-BMWr9EKo.js +0 -104
- package/dist/prompts-L37J72YW.js.map +0 -1
- /package/dist/{RunnerView-DLVR7C22.js.map → RunnerView-A7JSPUW5.js.map} +0 -0
- /package/dist/{dist-ZPXEVBEC.js.map → account-UGNLJPQ4.js.map} +0 -0
- /package/dist/{status-E4EACVE2.js.map → accounts-NM7IWP53.js.map} +0 -0
- /package/dist/{budget-RBHCEDPP.js.map → budget-INAW6FXD.js.map} +0 -0
- /package/dist/{chunk-BOLFK3BH.js.map → chunk-5LKOJBUL.js.map} +0 -0
- /package/dist/{chunk-OYEYNDOO.js.map → chunk-GE22VBCY.js.map} +0 -0
- /package/dist/{chunk-MSLLH5XP.js.map → chunk-GZJ6JSO7.js.map} +0 -0
- /package/dist/{chunk-23KTE7IK.js.map → chunk-MOK5D3XJ.js.map} +0 -0
- /package/dist/{chunk-OXRMGR72.js.map → chunk-PGPXE6LF.js.map} +0 -0
- /package/dist/{chunk-IVZHKUCD.js.map → chunk-Z6NQDJEN.js.map} +0 -0
- /package/dist/{config-FRMY5OHG.js.map → config-YEAPBMBX.js.map} +0 -0
- /package/dist/{doctor-7RUD4D3A.js.map → doctor-MQYK44S2.js.map} +0 -0
- /package/dist/{goal-JFRNPBSD.js.map → goal-6NUX4AIT.js.map} +0 -0
- /package/dist/{init-NFYNO3A3.js.map → init-AXYIWAB3.js.map} +0 -0
- /package/dist/{run-ARUPXFFB.js.map → run-QRTLHFB3.js.map} +0 -0
- /package/dist/{start-CFPOVIAR.js.map → start-O5I5TSO2.js.map} +0 -0
- /package/dist/{tasks-ZIK6BVEX.js.map → tasks-XOTVICVZ.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createContext
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-VVCXGQMY.js";
|
|
3
|
+
} from "./chunk-QA3O6RA2.js";
|
|
5
4
|
import {
|
|
6
5
|
CliError,
|
|
7
6
|
EXIT
|
|
8
7
|
} from "./chunk-7XVXEO7U.js";
|
|
8
|
+
import "./chunk-MC7RIPL7.js";
|
|
9
9
|
|
|
10
10
|
// src/program.ts
|
|
11
11
|
import { Command, CommanderError, InvalidArgumentError, Option } from "commander";
|
|
@@ -36,12 +36,12 @@ Docs: https://github.com/DMRLZZ/DaveCode#readme`
|
|
|
36
36
|
run(async (ctx) => {
|
|
37
37
|
const globals = program.opts();
|
|
38
38
|
if (globals.version) {
|
|
39
|
-
const { VERSION } = await import("./dist-
|
|
39
|
+
const { VERSION } = await import("./dist-RRQGUBL3.js");
|
|
40
40
|
ctx.out(`davecode ${VERSION}`);
|
|
41
41
|
return EXIT.ok;
|
|
42
42
|
}
|
|
43
43
|
if (ctx.interactive) {
|
|
44
|
-
const { chatCommand } = await import("./chat-
|
|
44
|
+
const { chatCommand } = await import("./chat-U4QJQ7M6.js");
|
|
45
45
|
return chatCommand(ctx, {});
|
|
46
46
|
}
|
|
47
47
|
program.outputHelp();
|
|
@@ -74,39 +74,57 @@ function collect(value, previous = []) {
|
|
|
74
74
|
function registerCommands(program, run) {
|
|
75
75
|
program.command("app").description("start your local workspace in a Chrome or Edge app window").addOption(new Option("-p, --port <port>", "port to listen on").argParser(parsePort)).option("--project <dir>", "repository to open").action(
|
|
76
76
|
run(async (ctx, opts) => {
|
|
77
|
-
const { startCommand } = await import("./start-
|
|
77
|
+
const { startCommand } = await import("./start-O5I5TSO2.js");
|
|
78
78
|
return startCommand(ctx, { ...opts, host: "127.0.0.1", app: true });
|
|
79
79
|
})
|
|
80
80
|
);
|
|
81
81
|
program.command("start").description("start the gateway (OpenAI-compatible /v1, dashboard API and web dashboard)").addOption(new Option("-p, --port <port>", "port to listen on").argParser(parsePort)).option("--host <host>", "interface to bind (default 127.0.0.1)").option("--no-dashboard", "do not serve the web dashboard").option("--project <dir>", "repository whose project brain to serve (default: detected)").option("--verbose", "print gateway request logs").option("-q, --quiet", "do not print the live activity log").action(
|
|
82
82
|
run(async (ctx, opts) => {
|
|
83
|
-
const { startCommand } = await import("./start-
|
|
83
|
+
const { startCommand } = await import("./start-O5I5TSO2.js");
|
|
84
84
|
return startCommand(ctx, opts);
|
|
85
85
|
})
|
|
86
86
|
);
|
|
87
87
|
program.command("status").description("gateway health, accounts and 1m/5h/24h quota usage").action(
|
|
88
88
|
run(async (ctx) => {
|
|
89
|
-
const { statusCommand } = await import("./status-
|
|
89
|
+
const { statusCommand } = await import("./status-LEA3RVUX.js");
|
|
90
90
|
return statusCommand(ctx);
|
|
91
91
|
})
|
|
92
92
|
);
|
|
93
93
|
program.command("chat").description("chat TUI (also what bare `davecode` opens in a terminal)").option("-m, --model <id>", "model or route, e.g. davecode/auto or anthropic/claude-sonnet-5-5").option("--project <dir>", "repository whose brain an in-process gateway serves").action(
|
|
94
94
|
run(async (ctx, opts) => {
|
|
95
|
-
const { chatCommand } = await import("./chat-
|
|
95
|
+
const { chatCommand } = await import("./chat-U4QJQ7M6.js");
|
|
96
96
|
return chatCommand(ctx, opts);
|
|
97
97
|
})
|
|
98
98
|
);
|
|
99
|
+
program.command("login").description("sign in to your DaveCode account in the browser").action(
|
|
100
|
+
run(async (ctx) => {
|
|
101
|
+
const { loginCommand } = await import("./account-UGNLJPQ4.js");
|
|
102
|
+
return loginCommand(ctx);
|
|
103
|
+
})
|
|
104
|
+
);
|
|
105
|
+
program.command("logout").description("sign out of your DaveCode account").action(
|
|
106
|
+
run(async (ctx) => {
|
|
107
|
+
const { logoutCommand } = await import("./account-UGNLJPQ4.js");
|
|
108
|
+
return logoutCommand(ctx);
|
|
109
|
+
})
|
|
110
|
+
);
|
|
111
|
+
program.command("account").description("show the signed-in DaveCode account").action(
|
|
112
|
+
run(async (ctx) => {
|
|
113
|
+
const { accountCommand } = await import("./account-UGNLJPQ4.js");
|
|
114
|
+
return accountCommand(ctx);
|
|
115
|
+
})
|
|
116
|
+
);
|
|
99
117
|
registerAccounts(program, run);
|
|
100
118
|
registerProject(program, run);
|
|
101
119
|
program.command("budget").description("plans, renewals and remaining quota per account (what agents are told)").option("--context", "print only the summary injected into agent prompts").option("--local", "read the local database even if a gateway is running").action(
|
|
102
120
|
run(async (ctx, opts) => {
|
|
103
|
-
const { budgetCommand } = await import("./budget-
|
|
121
|
+
const { budgetCommand } = await import("./budget-INAW6FXD.js");
|
|
104
122
|
return budgetCommand(ctx, opts);
|
|
105
123
|
})
|
|
106
124
|
);
|
|
107
125
|
program.command("doctor").description("check the environment and print fixes").action(
|
|
108
126
|
run(async (ctx) => {
|
|
109
|
-
const { doctorCommand } = await import("./doctor-
|
|
127
|
+
const { doctorCommand } = await import("./doctor-MQYK44S2.js");
|
|
110
128
|
return doctorCommand(ctx);
|
|
111
129
|
})
|
|
112
130
|
);
|
|
@@ -120,7 +138,7 @@ Exit codes with --once: 0 success or nothing to do, 1 failed or error, 130 stopp
|
|
|
120
138
|
Ctrl+C stops safely: partial work stays on the task branch and the task goes back to PENDING.`
|
|
121
139
|
).action(
|
|
122
140
|
run(async (ctx, opts) => {
|
|
123
|
-
const { runCommand } = await import("./run-
|
|
141
|
+
const { runCommand } = await import("./run-QRTLHFB3.js");
|
|
124
142
|
return runCommand(ctx, opts);
|
|
125
143
|
})
|
|
126
144
|
);
|
|
@@ -148,26 +166,26 @@ Examples:
|
|
|
148
166
|
davecode goal "Add a /health endpoint with tests" --max-rounds 2`
|
|
149
167
|
).action(
|
|
150
168
|
run(async (ctx, words, opts) => {
|
|
151
|
-
const { goalCommand } = await import("./goal-
|
|
169
|
+
const { goalCommand } = await import("./goal-6NUX4AIT.js");
|
|
152
170
|
return goalCommand(ctx, words, opts);
|
|
153
171
|
})
|
|
154
172
|
);
|
|
155
173
|
const goals = program.command("goals").description("goals of this repository");
|
|
156
174
|
goals.command("list", { isDefault: true }).alias("ls").description("goals, newest first").option("--project <dir>", "repository (default: detected)").action(
|
|
157
175
|
run(async (ctx, opts) => {
|
|
158
|
-
const { goalsList } = await import("./goal-
|
|
176
|
+
const { goalsList } = await import("./goal-6NUX4AIT.js");
|
|
159
177
|
return goalsList(ctx, opts);
|
|
160
178
|
})
|
|
161
179
|
);
|
|
162
180
|
goals.command("show <id>").description("tasks, artifacts and summary of a goal").option("--project <dir>", "repository (default: detected)").action(
|
|
163
181
|
run(async (ctx, id, opts) => {
|
|
164
|
-
const { goalsShow } = await import("./goal-
|
|
182
|
+
const { goalsShow } = await import("./goal-6NUX4AIT.js");
|
|
165
183
|
return goalsShow(ctx, id, opts);
|
|
166
184
|
})
|
|
167
185
|
);
|
|
168
186
|
goals.command("cancel <id>").description("cancel a running goal").option("--project <dir>", "repository (default: detected)").action(
|
|
169
187
|
run(async (ctx, id, opts) => {
|
|
170
|
-
const { goalsCancel } = await import("./goal-
|
|
188
|
+
const { goalsCancel } = await import("./goal-6NUX4AIT.js");
|
|
171
189
|
return goalsCancel(ctx, id, opts);
|
|
172
190
|
})
|
|
173
191
|
);
|
|
@@ -175,20 +193,20 @@ Examples:
|
|
|
175
193
|
function registerProject(program, run) {
|
|
176
194
|
program.command("init").description("scaffold the project brain (.davecode/) in this repository").option("--name <name>", "project name used in STATE.md and ARCHITECTURE.md").option("--config", "write a starter .davecode/config.json without asking").option("--no-config", "do not write .davecode/config.json").action(
|
|
177
195
|
run(async (ctx, opts) => {
|
|
178
|
-
const { initCommand } = await import("./init-
|
|
196
|
+
const { initCommand } = await import("./init-AXYIWAB3.js");
|
|
179
197
|
return initCommand(ctx, opts);
|
|
180
198
|
})
|
|
181
199
|
);
|
|
182
200
|
const tasks = program.command("tasks").description("show and edit the task graph");
|
|
183
201
|
tasks.command("list", { isDefault: true }).alias("ls").description("task tree with status and blocked reasons").action(
|
|
184
202
|
run(async (ctx) => {
|
|
185
|
-
const { tasksList } = await import("./tasks-
|
|
203
|
+
const { tasksList } = await import("./tasks-XOTVICVZ.js");
|
|
186
204
|
return tasksList(ctx);
|
|
187
205
|
})
|
|
188
206
|
);
|
|
189
207
|
tasks.command("next").description("the task the runner would pick next").action(
|
|
190
208
|
run(async (ctx) => {
|
|
191
|
-
const { tasksNext } = await import("./tasks-
|
|
209
|
+
const { tasksNext } = await import("./tasks-XOTVICVZ.js");
|
|
192
210
|
return tasksNext(ctx);
|
|
193
211
|
})
|
|
194
212
|
);
|
|
@@ -199,33 +217,33 @@ function registerProject(program, run) {
|
|
|
199
217
|
).action(
|
|
200
218
|
run(
|
|
201
219
|
async (ctx, id, title, opts) => {
|
|
202
|
-
const { tasksAdd } = await import("./tasks-
|
|
220
|
+
const { tasksAdd } = await import("./tasks-XOTVICVZ.js");
|
|
203
221
|
return tasksAdd(ctx, id, title, opts);
|
|
204
222
|
}
|
|
205
223
|
)
|
|
206
224
|
);
|
|
207
225
|
tasks.command("status <id> <status>").description("move a task to PENDING | IN_PROGRESS | SUCCESS | FAILED").option("--notes <text>", "note stored on the task").action(
|
|
208
226
|
run(async (ctx, id, status, opts) => {
|
|
209
|
-
const { tasksStatus } = await import("./tasks-
|
|
227
|
+
const { tasksStatus } = await import("./tasks-XOTVICVZ.js");
|
|
210
228
|
return tasksStatus(ctx, id, status, opts);
|
|
211
229
|
})
|
|
212
230
|
);
|
|
213
231
|
const config = program.command("config").description("show the resolved configuration");
|
|
214
232
|
config.command("show", { isDefault: true }).description("resolved config as JSON (secrets redacted)").action(
|
|
215
233
|
run(async (ctx) => {
|
|
216
|
-
const { configShow } = await import("./config-
|
|
234
|
+
const { configShow } = await import("./config-YEAPBMBX.js");
|
|
217
235
|
return configShow(ctx);
|
|
218
236
|
})
|
|
219
237
|
);
|
|
220
238
|
config.command("path").description("where config, state and brains live").action(
|
|
221
239
|
run(async (ctx) => {
|
|
222
|
-
const { configPath } = await import("./config-
|
|
240
|
+
const { configPath } = await import("./config-YEAPBMBX.js");
|
|
223
241
|
return configPath(ctx);
|
|
224
242
|
})
|
|
225
243
|
);
|
|
226
244
|
config.command("get <key>").description("one value by dotted key, e.g. server.port").action(
|
|
227
245
|
run(async (ctx, key) => {
|
|
228
|
-
const { configGet } = await import("./config-
|
|
246
|
+
const { configGet } = await import("./config-YEAPBMBX.js");
|
|
229
247
|
return configGet(ctx, key);
|
|
230
248
|
})
|
|
231
249
|
);
|
|
@@ -249,7 +267,7 @@ Examples:
|
|
|
249
267
|
davecode accounts add --provider claude-cli --label "Claude Pro" --yes`
|
|
250
268
|
).action(
|
|
251
269
|
run(async (ctx, opts) => {
|
|
252
|
-
const { accountsAdd } = await import("./accounts-
|
|
270
|
+
const { accountsAdd } = await import("./accounts-NM7IWP53.js");
|
|
253
271
|
return accountsAdd(ctx, opts);
|
|
254
272
|
})
|
|
255
273
|
);
|
|
@@ -258,7 +276,7 @@ function registerAccounts(program, run) {
|
|
|
258
276
|
const accounts = program.command("accounts").description("manage provider accounts");
|
|
259
277
|
accounts.command("list", { isDefault: true }).alias("ls").description("list accounts").option("--local", "read the local database even if a gateway is running").action(
|
|
260
278
|
run(async (ctx, opts) => {
|
|
261
|
-
const { accountsList } = await import("./accounts-
|
|
279
|
+
const { accountsList } = await import("./accounts-NM7IWP53.js");
|
|
262
280
|
return accountsList(ctx, opts);
|
|
263
281
|
})
|
|
264
282
|
);
|
|
@@ -268,7 +286,7 @@ function registerAccounts(program, run) {
|
|
|
268
286
|
);
|
|
269
287
|
accounts.command("remove <id>").alias("rm").description("remove an account, its secret and its sandbox").option("-y, --yes", "do not ask for confirmation").option("--local", "write to the local database even if a gateway is running").action(
|
|
270
288
|
run(async (ctx, id, opts) => {
|
|
271
|
-
const { accountsRemove } = await import("./accounts-
|
|
289
|
+
const { accountsRemove } = await import("./accounts-NM7IWP53.js");
|
|
272
290
|
return accountsRemove(ctx, id, opts);
|
|
273
291
|
})
|
|
274
292
|
);
|
|
@@ -278,7 +296,7 @@ function registerAccounts(program, run) {
|
|
|
278
296
|
]) {
|
|
279
297
|
accounts.command(`${name} <id>`).description(`${name} an account${enabled ? " (also clears error and cooldown state)" : ""}`).option("--local", "write to the local database even if a gateway is running").action(
|
|
280
298
|
run(async (ctx, id, opts) => {
|
|
281
|
-
const { accountsSetEnabled } = await import("./accounts-
|
|
299
|
+
const { accountsSetEnabled } = await import("./accounts-NM7IWP53.js");
|
|
282
300
|
return accountsSetEnabled(ctx, id, enabled, opts);
|
|
283
301
|
})
|
|
284
302
|
);
|
|
@@ -290,7 +308,7 @@ Entered by hand: DaveCode never reads billing pages. Example:
|
|
|
290
308
|
davecode accounts plan acc_123 --plan "Claude Pro" --price 20 --renews 2026-11-01`
|
|
291
309
|
).action(
|
|
292
310
|
run(async (ctx, id, opts) => {
|
|
293
|
-
const { accountsPlan } = await import("./accounts-
|
|
311
|
+
const { accountsPlan } = await import("./accounts-NM7IWP53.js");
|
|
294
312
|
return accountsPlan(ctx, id, opts);
|
|
295
313
|
})
|
|
296
314
|
);
|
|
@@ -306,7 +324,7 @@ Extra arguments after -- replace the default ones (e.g. -- login --device-auth f
|
|
|
306
324
|
).action(
|
|
307
325
|
run(
|
|
308
326
|
async (ctx, id, args, opts) => {
|
|
309
|
-
const { accountsLogin } = await import("./accounts-
|
|
327
|
+
const { accountsLogin } = await import("./accounts-NM7IWP53.js");
|
|
310
328
|
return accountsLogin(ctx, id, args, opts);
|
|
311
329
|
}
|
|
312
330
|
)
|
|
@@ -320,7 +338,7 @@ connected, start the vendor's own sign-in. Example:
|
|
|
320
338
|
davecode accounts connect acc_123 --check`
|
|
321
339
|
).action(
|
|
322
340
|
run(async (ctx, id, opts) => {
|
|
323
|
-
const { accountsConnect } = await import("./accounts-
|
|
341
|
+
const { accountsConnect } = await import("./accounts-NM7IWP53.js");
|
|
324
342
|
return accountsConnect(ctx, id, opts);
|
|
325
343
|
})
|
|
326
344
|
);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/program.ts","../src/index.ts"],"sourcesContent":["import { Command, CommanderError, InvalidArgumentError, Option } from 'commander';\nimport { type CliContext, type CliIO, createContext, type GlobalOptions } from './context';\nimport { CliError, EXIT } from './errors';\n\n/**\n * Command tree. Keep this module light: it only declares commands and options. Every action\n * lazy-loads its implementation, so `davecode --help` never pays for SQLite, Fastify or Ink.\n */\n\nexport interface RunOptions {\n io: CliIO;\n env: NodeJS.ProcessEnv;\n cwd: string;\n}\n\n/** Result of an action: an exit code, or nothing for success. */\nexport type ActionResult = number | undefined;\n\ninterface ProgramState {\n ctx?: CliContext;\n exitCode: number;\n}\n\nexport function buildProgram(options: RunOptions, state: ProgramState = { exitCode: 0 }): Command {\n const { io } = options;\n const program = new Command('davecode');\n\n const context = (): CliContext => {\n if (!state.ctx) throw new Error('CLI context is not initialised');\n return state.ctx;\n };\n\n /** Wrap a lazily loaded action: `(ctx, ...args) => exit code`. */\n const run =\n <A extends unknown[]>(action: (ctx: CliContext, ...args: A) => Promise<ActionResult>) =>\n async (...args: A) => {\n const code = await action(context(), ...args);\n if (typeof code === 'number') state.exitCode = code;\n };\n\n program\n .description('Local-first AI gateway and autonomous coding engine.')\n .usage('[command] [options]')\n .option('--home <dir>', 'DaveCode home directory (sets DAVECODE_HOME)')\n .option('--json', 'machine-readable JSON output where supported')\n .option('--no-color', 'disable colours (NO_COLOR is honoured too)')\n .option('-V, --version', 'print the version and exit')\n .showSuggestionAfterError(true)\n .configureOutput({\n writeOut: (text) => io.stdout.write(text),\n writeErr: (text) => io.stderr.write(text),\n outputError: (text, write) => write(text),\n })\n .exitOverride()\n .hook('preAction', (_root, action) => {\n state.ctx = createContext(action.optsWithGlobals<GlobalOptions>(), io, options);\n })\n .addHelpText(\n 'after',\n `\nRun \\`davecode\\` with no command in a terminal to open the chat TUI.\nDocs: https://github.com/DMRLZZ/DaveCode#readme`,\n );\n\n program.action(\n run(async (ctx) => {\n const globals = program.opts<GlobalOptions & { version?: boolean }>();\n if (globals.version) {\n const { VERSION } = await import('@davecode/core');\n ctx.out(`davecode ${VERSION}`);\n return EXIT.ok;\n }\n if (ctx.interactive) {\n const { chatCommand } = await import('./commands/chat');\n return chatCommand(ctx, {});\n }\n program.outputHelp();\n return EXIT.ok;\n }),\n );\n\n registerCommands(program, run);\n return program;\n}\n\ntype Runner = <A extends unknown[]>(\n action: (ctx: CliContext, ...args: A) => Promise<ActionResult>,\n) => (...args: A) => Promise<void>;\n\n/** Parse a TCP port (0 = pick a free one). */\nexport function parsePort(value: string): number {\n const n = Number(value);\n if (!/^\\d+$/.test(value.trim()) || !Number.isInteger(n) || n < 0 || n > 65535) {\n throw new InvalidArgumentError('expected a port number between 0 and 65535');\n }\n return n;\n}\n\n/** Parse a non-negative integer (priorities, weights, limits). */\nexport function parseInteger(value: string): number {\n const n = Number(value);\n if (!/^-?\\d+$/.test(value.trim()) || !Number.isSafeInteger(n) || n < 0) {\n throw new InvalidArgumentError('expected a non-negative integer');\n }\n return n;\n}\n\n/** Repeatable option collector (`--model a --model b`, also accepts `a,b`). */\nexport function collect(value: string, previous: string[] = []): string[] {\n return [\n ...previous,\n ...value\n .split(',')\n .map((v) => v.trim())\n .filter(Boolean),\n ];\n}\n\n/** Subcommands. Each action dynamically imports its module. */\nfunction registerCommands(program: Command, run: Runner): void {\n program\n .command('app')\n .description('start your local workspace in a Chrome or Edge app window')\n .addOption(new Option('-p, --port <port>', 'port to listen on').argParser(parsePort))\n .option('--project <dir>', 'repository to open')\n .action(\n run(async (ctx, opts: import('./commands/start').StartOptions) => {\n const { startCommand } = await import('./commands/start');\n return startCommand(ctx, { ...opts, host: '127.0.0.1', app: true });\n }),\n );\n program\n .command('start')\n .description('start the gateway (OpenAI-compatible /v1, dashboard API and web dashboard)')\n .addOption(new Option('-p, --port <port>', 'port to listen on').argParser(parsePort))\n .option('--host <host>', 'interface to bind (default 127.0.0.1)')\n .option('--no-dashboard', 'do not serve the web dashboard')\n .option('--project <dir>', 'repository whose project brain to serve (default: detected)')\n .option('--verbose', 'print gateway request logs')\n .option('-q, --quiet', 'do not print the live activity log')\n .action(\n run(async (ctx, opts: import('./commands/start').StartOptions) => {\n const { startCommand } = await import('./commands/start');\n return startCommand(ctx, opts);\n }),\n );\n\n program\n .command('status')\n .description('gateway health, accounts and 1m/5h/24h quota usage')\n .action(\n run(async (ctx) => {\n const { statusCommand } = await import('./commands/status');\n return statusCommand(ctx);\n }),\n );\n\n program\n .command('chat')\n .description('chat TUI (also what bare `davecode` opens in a terminal)')\n .option('-m, --model <id>', 'model or route, e.g. davecode/auto or anthropic/claude-sonnet-5-5')\n .option('--project <dir>', 'repository whose brain an in-process gateway serves')\n .action(\n run(async (ctx, opts: { model?: string; project?: string }) => {\n const { chatCommand } = await import('./commands/chat');\n return chatCommand(ctx, opts);\n }),\n );\n\n registerAccounts(program, run);\n registerProject(program, run);\n\n program\n .command('budget')\n .description('plans, renewals and remaining quota per account (what agents are told)')\n .option('--context', 'print only the summary injected into agent prompts')\n .option('--local', 'read the local database even if a gateway is running')\n .action(\n run(async (ctx, opts: import('./commands/budget').BudgetFlags) => {\n const { budgetCommand } = await import('./commands/budget');\n return budgetCommand(ctx, opts);\n }),\n );\n\n program\n .command('doctor')\n .description('check the environment and print fixes')\n .action(\n run(async (ctx) => {\n const { doctorCommand } = await import('./commands/doctor');\n return doctorCommand(ctx);\n }),\n );\n\n program\n .command('run')\n .description('run the autonomous engine on the task graph (live view in a terminal)')\n .option('--once', 'implement at most one ready task, print the result and exit')\n .option(\n '--task <id>',\n \"run this task instead of the runner's pick (it must be PENDING and unblocked)\",\n )\n .option('--project <dir>', 'repository to work on (default: detected)')\n .addHelpText(\n 'after',\n `\nExit codes with --once: 0 success or nothing to do, 1 failed or error, 130 stopped.\nCtrl+C stops safely: partial work stays on the task branch and the task goes back to PENDING.`,\n )\n .action(\n run(async (ctx, opts: import('./commands/run').RunOptions) => {\n const { runCommand } = await import('./commands/run');\n return runCommand(ctx, opts);\n }),\n );\n\n registerGoals(program, run);\n}\n\nfunction registerGoals(program: Command, run: Runner): void {\n const limit = (flag: string, description: string) =>\n new Option(flag, description).argParser((value) => {\n const n = parseInteger(value);\n if (n < 1) throw new InvalidArgumentError('expected a positive integer');\n return n;\n });\n\n program\n .command('goal <objective...>')\n .description('pursue an objective with a team of agents (plan, execute, review, re-plan)')\n .addOption(\n limit('--max-rounds <n>', 'plan → execute → review rounds (capped by goal.maxRounds)'),\n )\n .addOption(limit('--max-tasks <n>', 'tasks across all rounds (capped by goal.maxTasks)'))\n .addOption(\n limit('--max-tokens <n>', 'token budget for the whole goal (capped by goal.maxTokens)'),\n )\n .option('--dry-run', 'plan only: print the task graph without executing it')\n .option('--project <dir>', 'repository to work in (default: detected)')\n .addHelpText(\n 'after',\n `\nAgents never send emails, post, pay or sign up for anything: such steps become drafts in\n.davecode/goals/<goal-id>/. Code tasks go through the autonomous runner (branch, checks, merge).\nCtrl+C cancels. Exit codes: 0 succeeded or planned, 1 failed or out of budget, 130 cancelled.\n\nExamples:\n davecode goal \"Write positioning and landing copy for this app\" --dry-run\n davecode goal \"Add a /health endpoint with tests\" --max-rounds 2`,\n )\n .action(\n run(async (ctx, words: string[], opts: import('./commands/goal').GoalOptions) => {\n const { goalCommand } = await import('./commands/goal');\n return goalCommand(ctx, words, opts);\n }),\n );\n\n const goals = program.command('goals').description('goals of this repository');\n goals\n .command('list', { isDefault: true })\n .alias('ls')\n .description('goals, newest first')\n .option('--project <dir>', 'repository (default: detected)')\n .action(\n run(async (ctx, opts: { project?: string }) => {\n const { goalsList } = await import('./commands/goal');\n return goalsList(ctx, opts);\n }),\n );\n goals\n .command('show <id>')\n .description('tasks, artifacts and summary of a goal')\n .option('--project <dir>', 'repository (default: detected)')\n .action(\n run(async (ctx, id: string, opts: { project?: string }) => {\n const { goalsShow } = await import('./commands/goal');\n return goalsShow(ctx, id, opts);\n }),\n );\n goals\n .command('cancel <id>')\n .description('cancel a running goal')\n .option('--project <dir>', 'repository (default: detected)')\n .action(\n run(async (ctx, id: string, opts: { project?: string }) => {\n const { goalsCancel } = await import('./commands/goal');\n return goalsCancel(ctx, id, opts);\n }),\n );\n}\n\nfunction registerProject(program: Command, run: Runner): void {\n program\n .command('init')\n .description('scaffold the project brain (.davecode/) in this repository')\n .option('--name <name>', 'project name used in STATE.md and ARCHITECTURE.md')\n .option('--config', 'write a starter .davecode/config.json without asking')\n .option('--no-config', 'do not write .davecode/config.json')\n .action(\n run(async (ctx, opts: { name?: string; config?: boolean }) => {\n const { initCommand } = await import('./commands/init');\n return initCommand(ctx, opts);\n }),\n );\n\n const tasks = program.command('tasks').description('show and edit the task graph');\n tasks\n .command('list', { isDefault: true })\n .alias('ls')\n .description('task tree with status and blocked reasons')\n .action(\n run(async (ctx) => {\n const { tasksList } = await import('./commands/tasks');\n return tasksList(ctx);\n }),\n );\n tasks\n .command('next')\n .description('the task the runner would pick next')\n .action(\n run(async (ctx) => {\n const { tasksNext } = await import('./commands/tasks');\n return tasksNext(ctx);\n }),\n );\n tasks\n .command('add <id> <title...>')\n .description('add a PENDING task')\n .option('-d, --depends <ids>', 'dependencies (repeatable or comma-separated)', collect)\n .addOption(new Option('-p, --priority <n>', 'higher runs first').argParser(parseInteger))\n .option('--description <text>', 'longer description')\n .option(\n '-a, --acceptance <criterion>',\n 'acceptance criterion (repeatable)',\n (v, prev: string[] = []) => [...prev, v],\n )\n .action(\n run(\n async (\n ctx,\n id: string,\n title: string[],\n opts: import('./commands/tasks').AddTaskOptions,\n ) => {\n const { tasksAdd } = await import('./commands/tasks');\n return tasksAdd(ctx, id, title, opts);\n },\n ),\n );\n tasks\n .command('status <id> <status>')\n .description('move a task to PENDING | IN_PROGRESS | SUCCESS | FAILED')\n .option('--notes <text>', 'note stored on the task')\n .action(\n run(async (ctx, id: string, status: string, opts: { notes?: string }) => {\n const { tasksStatus } = await import('./commands/tasks');\n return tasksStatus(ctx, id, status, opts);\n }),\n );\n\n const config = program.command('config').description('show the resolved configuration');\n config\n .command('show', { isDefault: true })\n .description('resolved config as JSON (secrets redacted)')\n .action(\n run(async (ctx) => {\n const { configShow } = await import('./commands/config');\n return configShow(ctx);\n }),\n );\n config\n .command('path')\n .description('where config, state and brains live')\n .action(\n run(async (ctx) => {\n const { configPath } = await import('./commands/config');\n return configPath(ctx);\n }),\n );\n config\n .command('get <key>')\n .description('one value by dotted key, e.g. server.port')\n .action(\n run(async (ctx, key: string) => {\n const { configGet } = await import('./commands/config');\n return configGet(ctx, key);\n }),\n );\n}\n\ntype AddOpts = import('./commands/accounts').AddCommandFlags;\n\nfunction addAccountOptions(command: Command, run: Runner): Command {\n return command\n .option(\n '--provider <kind>',\n 'anthropic | openai | gemini | openai-compatible | claude-cli | codex-cli | gemini-cli | gemini-web',\n )\n .option('--label <name>', 'human-friendly name')\n .addOption(\n new Option('--priority <n>', 'lower is tried first (default 100)').argParser(parseInteger),\n )\n .addOption(\n new Option('--weight <n>', 'traffic share among equal priorities').argParser(parseInteger),\n )\n .option('--secret-env <var>', 'read the API key from this environment variable')\n .option('--secret-stdin', 'read the API key from stdin')\n .option('--secret <value>', 'API key (discouraged: visible in shell history)')\n .option('--base-url <url>', 'endpoint for openai-compatible accounts')\n .option('--model <id>', 'advertised model (repeatable or comma-separated)', collect)\n .option('--default-model <id>', 'model used for davecode/auto without a route')\n .option('--binary-path <path>', 'CLI binary for claude-cli / codex-cli / gemini-cli')\n .option('--limit <key=value>', 'quota limit, e.g. tokens5h=500000 (repeatable)', collect)\n .option('--disabled', 'add the account disabled')\n .option('-y, --yes', 'never prompt: take everything from flags')\n .option('--no-login', 'do not offer to log in after adding a CLI account')\n .option('--local', 'write to the local database even if a gateway is running')\n .addHelpText(\n 'after',\n `\nExamples:\n davecode accounts add # interactive\n davecode accounts add --provider anthropic --label work --secret-env ANTHROPIC_API_KEY --yes\n echo \"$OPENROUTER_KEY\" | davecode accounts add --provider openai-compatible \\\\\n --base-url https://openrouter.ai/api/v1 --model openai/gpt-5.5 --secret-stdin\n davecode accounts add --provider claude-cli --label \"Claude Pro\" --yes`,\n )\n .action(\n run(async (ctx, opts: AddOpts) => {\n const { accountsAdd } = await import('./commands/accounts');\n return accountsAdd(ctx, opts);\n }),\n );\n}\n\nfunction registerAccounts(program: Command, run: Runner): void {\n const accounts = program.command('accounts').description('manage provider accounts');\n\n accounts\n .command('list', { isDefault: true })\n .alias('ls')\n .description('list accounts')\n .option('--local', 'read the local database even if a gateway is running')\n .action(\n run(async (ctx, opts: { local?: boolean }) => {\n const { accountsList } = await import('./commands/accounts');\n return accountsList(ctx, opts);\n }),\n );\n\n addAccountOptions(\n accounts.command('add').description('add an account (interactive in a terminal)'),\n run,\n );\n\n accounts\n .command('remove <id>')\n .alias('rm')\n .description('remove an account, its secret and its sandbox')\n .option('-y, --yes', 'do not ask for confirmation')\n .option('--local', 'write to the local database even if a gateway is running')\n .action(\n run(async (ctx, id: string, opts: { yes?: boolean; local?: boolean }) => {\n const { accountsRemove } = await import('./commands/accounts');\n return accountsRemove(ctx, id, opts);\n }),\n );\n\n for (const [name, enabled] of [\n ['enable', true],\n ['disable', false],\n ] as const) {\n accounts\n .command(`${name} <id>`)\n .description(`${name} an account${enabled ? ' (also clears error and cooldown state)' : ''}`)\n .option('--local', 'write to the local database even if a gateway is running')\n .action(\n run(async (ctx, id: string, opts: { local?: boolean }) => {\n const { accountsSetEnabled } = await import('./commands/accounts');\n return accountsSetEnabled(ctx, id, enabled, opts);\n }),\n );\n }\n\n accounts\n .command('plan <id>')\n .description('show or set what you pay for an account (plan, price, paid/renewal dates)')\n .option('--plan <name>', 'plan name, e.g. \"Claude Pro\" or \"API pay-as-you-go\"')\n .option('--price <amount>', 'price per period, e.g. 20')\n .option('--currency <code>', '3-letter currency code (default USD)')\n .option('--period <period>', 'month | year (default month)')\n .option('--paid <date>', 'last payment date (YYYY-MM-DD)')\n .option('--renews <date>', 'next renewal date (YYYY-MM-DD)')\n .option('--notes <text>', 'free-form note')\n .option('--clear', 'remove the recorded plan')\n .option('--local', 'write to the local database even if a gateway is running')\n .addHelpText(\n 'after',\n `\nEntered by hand: DaveCode never reads billing pages. Example:\n davecode accounts plan acc_123 --plan \"Claude Pro\" --price 20 --renews 2026-11-01`,\n )\n .action(\n run(async (ctx, id: string, opts: import('./commands/accounts').PlanFlags) => {\n const { accountsPlan } = await import('./commands/accounts');\n return accountsPlan(ctx, id, opts);\n }),\n );\n\n accounts\n .command('login <id> [args...]')\n .description(\n 'log a claude-cli / codex-cli / gemini-cli account in, inside its own isolated config dir',\n )\n .allowUnknownOption()\n .option('--local', 'read the local database even if a gateway is running')\n .option('--hold', 'wait for Enter before exiting (for windows opened by the dashboard)')\n .addHelpText(\n 'after',\n `\nRuns the vendor's official sign-in (claude auth login, codex login, Gemini CLI's\n\"Login with Google\") with CLAUDE_CONFIG_DIR / CODEX_HOME / GEMINI_CLI_HOME pointing at the\naccount's sandbox, so every account keeps a separate login. DaveCode never sees the password.\nExtra arguments after -- replace the default ones (e.g. -- login --device-auth for Codex).`,\n )\n .action(\n run(\n async (ctx, id: string, args: string[], opts: import('./commands/accounts').LoginFlags) => {\n const { accountsLogin } = await import('./commands/accounts');\n return accountsLogin(ctx, id, args, opts);\n },\n ),\n );\n\n accounts\n .command('connect <id>')\n .description('connect a subscription: check its login and run the official sign-in if needed')\n .option('--check', 'only report whether the account is connected')\n .option('--local', 'read the local database even if a gateway is running')\n .addHelpText(\n 'after',\n `\nAPI-key accounts are connected when a key is stored. CLI accounts (claude-cli, codex-cli,\ngemini-cli) ask the vendor CLI for its login status inside the account sandbox and, when not\nconnected, start the vendor's own sign-in. Example:\n davecode accounts connect acc_123 --check`,\n )\n .action(\n run(async (ctx, id: string, opts: import('./commands/accounts').ConnectFlags) => {\n const { accountsConnect } = await import('./commands/accounts');\n return accountsConnect(ctx, id, opts);\n }),\n );\n\n addAccountOptions(program.command('add-account').description('alias of `accounts add`'), run);\n}\n\n/** Render an error for humans: `error: …` plus an optional hint, without a stack trace. */\nexport function describeError(err: unknown): { message: string; hint?: string; exitCode: number } {\n if (err instanceof CliError) {\n return {\n message: err.message,\n exitCode: err.exitCode,\n ...(err.hint ? { hint: err.hint } : {}),\n };\n }\n if (err instanceof Error) {\n if (err.name === 'ConfigError') {\n return {\n message: err.message,\n hint: 'Fix the file above or run `davecode config path` to see where config is read from.',\n exitCode: EXIT.failure,\n };\n }\n return { message: err.message, exitCode: EXIT.failure };\n }\n return { message: String(err), exitCode: EXIT.failure };\n}\n\n/** Parse `argv` (user arguments only) and run the matching command. Resolves to an exit code. */\nexport async function runCli(argv: string[], options: RunOptions): Promise<number> {\n const state: ProgramState = { exitCode: 0 };\n const program = buildProgram(options, state);\n try {\n await program.parseAsync(argv, { from: 'user' });\n return state.exitCode;\n } catch (err) {\n if (err instanceof CommanderError) {\n // Help/version print and exit 0; usage errors were already written by commander.\n return err.exitCode;\n }\n const { message, hint, exitCode } = describeError(err);\n const theme = state.ctx?.errTheme;\n const label = theme ? theme.error('error') : 'error';\n options.io.stderr.write(`${label}: ${message}\\n`);\n if (hint) options.io.stderr.write(`${theme ? theme.dim(hint) : hint}\\n`);\n if (options.env.DAVECODE_DEBUG && err instanceof Error && err.stack) {\n options.io.stderr.write(`${err.stack}\\n`);\n }\n return exitCode;\n }\n}\n","import { runCli } from './program';\n\nconst code = await runCli(process.argv.slice(2), {\n io: { stdout: process.stdout, stderr: process.stderr, stdin: process.stdin },\n env: process.env,\n cwd: process.cwd(),\n});\nprocess.exitCode = code;\n"],"mappings":"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","names":["code"]}
|
|
1
|
+
{"version":3,"sources":["../src/program.ts","../src/index.ts"],"sourcesContent":["import { Command, CommanderError, InvalidArgumentError, Option } from 'commander';\nimport { type CliContext, type CliIO, createContext, type GlobalOptions } from './context';\nimport { CliError, EXIT } from './errors';\n\n/**\n * Command tree. Keep this module light: it only declares commands and options. Every action\n * lazy-loads its implementation, so `davecode --help` never pays for SQLite, Fastify or Ink.\n */\n\nexport interface RunOptions {\n io: CliIO;\n env: NodeJS.ProcessEnv;\n cwd: string;\n}\n\n/** Result of an action: an exit code, or nothing for success. */\nexport type ActionResult = number | undefined;\n\ninterface ProgramState {\n ctx?: CliContext;\n exitCode: number;\n}\n\nexport function buildProgram(options: RunOptions, state: ProgramState = { exitCode: 0 }): Command {\n const { io } = options;\n const program = new Command('davecode');\n\n const context = (): CliContext => {\n if (!state.ctx) throw new Error('CLI context is not initialised');\n return state.ctx;\n };\n\n /** Wrap a lazily loaded action: `(ctx, ...args) => exit code`. */\n const run =\n <A extends unknown[]>(action: (ctx: CliContext, ...args: A) => Promise<ActionResult>) =>\n async (...args: A) => {\n const code = await action(context(), ...args);\n if (typeof code === 'number') state.exitCode = code;\n };\n\n program\n .description('Local-first AI gateway and autonomous coding engine.')\n .usage('[command] [options]')\n .option('--home <dir>', 'DaveCode home directory (sets DAVECODE_HOME)')\n .option('--json', 'machine-readable JSON output where supported')\n .option('--no-color', 'disable colours (NO_COLOR is honoured too)')\n .option('-V, --version', 'print the version and exit')\n .showSuggestionAfterError(true)\n .configureOutput({\n writeOut: (text) => io.stdout.write(text),\n writeErr: (text) => io.stderr.write(text),\n outputError: (text, write) => write(text),\n })\n .exitOverride()\n .hook('preAction', (_root, action) => {\n state.ctx = createContext(action.optsWithGlobals<GlobalOptions>(), io, options);\n })\n .addHelpText(\n 'after',\n `\nRun \\`davecode\\` with no command in a terminal to open the chat TUI.\nDocs: https://github.com/DMRLZZ/DaveCode#readme`,\n );\n\n program.action(\n run(async (ctx) => {\n const globals = program.opts<GlobalOptions & { version?: boolean }>();\n if (globals.version) {\n const { VERSION } = await import('@davecode/core');\n ctx.out(`davecode ${VERSION}`);\n return EXIT.ok;\n }\n if (ctx.interactive) {\n const { chatCommand } = await import('./commands/chat');\n return chatCommand(ctx, {});\n }\n program.outputHelp();\n return EXIT.ok;\n }),\n );\n\n registerCommands(program, run);\n return program;\n}\n\ntype Runner = <A extends unknown[]>(\n action: (ctx: CliContext, ...args: A) => Promise<ActionResult>,\n) => (...args: A) => Promise<void>;\n\n/** Parse a TCP port (0 = pick a free one). */\nexport function parsePort(value: string): number {\n const n = Number(value);\n if (!/^\\d+$/.test(value.trim()) || !Number.isInteger(n) || n < 0 || n > 65535) {\n throw new InvalidArgumentError('expected a port number between 0 and 65535');\n }\n return n;\n}\n\n/** Parse a non-negative integer (priorities, weights, limits). */\nexport function parseInteger(value: string): number {\n const n = Number(value);\n if (!/^-?\\d+$/.test(value.trim()) || !Number.isSafeInteger(n) || n < 0) {\n throw new InvalidArgumentError('expected a non-negative integer');\n }\n return n;\n}\n\n/** Repeatable option collector (`--model a --model b`, also accepts `a,b`). */\nexport function collect(value: string, previous: string[] = []): string[] {\n return [\n ...previous,\n ...value\n .split(',')\n .map((v) => v.trim())\n .filter(Boolean),\n ];\n}\n\n/** Subcommands. Each action dynamically imports its module. */\nfunction registerCommands(program: Command, run: Runner): void {\n program\n .command('app')\n .description('start your local workspace in a Chrome or Edge app window')\n .addOption(new Option('-p, --port <port>', 'port to listen on').argParser(parsePort))\n .option('--project <dir>', 'repository to open')\n .action(\n run(async (ctx, opts: import('./commands/start').StartOptions) => {\n const { startCommand } = await import('./commands/start');\n return startCommand(ctx, { ...opts, host: '127.0.0.1', app: true });\n }),\n );\n program\n .command('start')\n .description('start the gateway (OpenAI-compatible /v1, dashboard API and web dashboard)')\n .addOption(new Option('-p, --port <port>', 'port to listen on').argParser(parsePort))\n .option('--host <host>', 'interface to bind (default 127.0.0.1)')\n .option('--no-dashboard', 'do not serve the web dashboard')\n .option('--project <dir>', 'repository whose project brain to serve (default: detected)')\n .option('--verbose', 'print gateway request logs')\n .option('-q, --quiet', 'do not print the live activity log')\n .action(\n run(async (ctx, opts: import('./commands/start').StartOptions) => {\n const { startCommand } = await import('./commands/start');\n return startCommand(ctx, opts);\n }),\n );\n\n program\n .command('status')\n .description('gateway health, accounts and 1m/5h/24h quota usage')\n .action(\n run(async (ctx) => {\n const { statusCommand } = await import('./commands/status');\n return statusCommand(ctx);\n }),\n );\n\n program\n .command('chat')\n .description('chat TUI (also what bare `davecode` opens in a terminal)')\n .option('-m, --model <id>', 'model or route, e.g. davecode/auto or anthropic/claude-sonnet-5-5')\n .option('--project <dir>', 'repository whose brain an in-process gateway serves')\n .action(\n run(async (ctx, opts: { model?: string; project?: string }) => {\n const { chatCommand } = await import('./commands/chat');\n return chatCommand(ctx, opts);\n }),\n );\n\n program\n .command('login')\n .description('sign in to your DaveCode account in the browser')\n .action(\n run(async (ctx) => {\n const { loginCommand } = await import('./commands/account');\n return loginCommand(ctx);\n }),\n );\n program\n .command('logout')\n .description('sign out of your DaveCode account')\n .action(\n run(async (ctx) => {\n const { logoutCommand } = await import('./commands/account');\n return logoutCommand(ctx);\n }),\n );\n program\n .command('account')\n .description('show the signed-in DaveCode account')\n .action(\n run(async (ctx) => {\n const { accountCommand } = await import('./commands/account');\n return accountCommand(ctx);\n }),\n );\n\n registerAccounts(program, run);\n registerProject(program, run);\n\n program\n .command('budget')\n .description('plans, renewals and remaining quota per account (what agents are told)')\n .option('--context', 'print only the summary injected into agent prompts')\n .option('--local', 'read the local database even if a gateway is running')\n .action(\n run(async (ctx, opts: import('./commands/budget').BudgetFlags) => {\n const { budgetCommand } = await import('./commands/budget');\n return budgetCommand(ctx, opts);\n }),\n );\n\n program\n .command('doctor')\n .description('check the environment and print fixes')\n .action(\n run(async (ctx) => {\n const { doctorCommand } = await import('./commands/doctor');\n return doctorCommand(ctx);\n }),\n );\n\n program\n .command('run')\n .description('run the autonomous engine on the task graph (live view in a terminal)')\n .option('--once', 'implement at most one ready task, print the result and exit')\n .option(\n '--task <id>',\n \"run this task instead of the runner's pick (it must be PENDING and unblocked)\",\n )\n .option('--project <dir>', 'repository to work on (default: detected)')\n .addHelpText(\n 'after',\n `\nExit codes with --once: 0 success or nothing to do, 1 failed or error, 130 stopped.\nCtrl+C stops safely: partial work stays on the task branch and the task goes back to PENDING.`,\n )\n .action(\n run(async (ctx, opts: import('./commands/run').RunOptions) => {\n const { runCommand } = await import('./commands/run');\n return runCommand(ctx, opts);\n }),\n );\n\n registerGoals(program, run);\n}\n\nfunction registerGoals(program: Command, run: Runner): void {\n const limit = (flag: string, description: string) =>\n new Option(flag, description).argParser((value) => {\n const n = parseInteger(value);\n if (n < 1) throw new InvalidArgumentError('expected a positive integer');\n return n;\n });\n\n program\n .command('goal <objective...>')\n .description('pursue an objective with a team of agents (plan, execute, review, re-plan)')\n .addOption(\n limit('--max-rounds <n>', 'plan → execute → review rounds (capped by goal.maxRounds)'),\n )\n .addOption(limit('--max-tasks <n>', 'tasks across all rounds (capped by goal.maxTasks)'))\n .addOption(\n limit('--max-tokens <n>', 'token budget for the whole goal (capped by goal.maxTokens)'),\n )\n .option('--dry-run', 'plan only: print the task graph without executing it')\n .option('--project <dir>', 'repository to work in (default: detected)')\n .addHelpText(\n 'after',\n `\nAgents never send emails, post, pay or sign up for anything: such steps become drafts in\n.davecode/goals/<goal-id>/. Code tasks go through the autonomous runner (branch, checks, merge).\nCtrl+C cancels. Exit codes: 0 succeeded or planned, 1 failed or out of budget, 130 cancelled.\n\nExamples:\n davecode goal \"Write positioning and landing copy for this app\" --dry-run\n davecode goal \"Add a /health endpoint with tests\" --max-rounds 2`,\n )\n .action(\n run(async (ctx, words: string[], opts: import('./commands/goal').GoalOptions) => {\n const { goalCommand } = await import('./commands/goal');\n return goalCommand(ctx, words, opts);\n }),\n );\n\n const goals = program.command('goals').description('goals of this repository');\n goals\n .command('list', { isDefault: true })\n .alias('ls')\n .description('goals, newest first')\n .option('--project <dir>', 'repository (default: detected)')\n .action(\n run(async (ctx, opts: { project?: string }) => {\n const { goalsList } = await import('./commands/goal');\n return goalsList(ctx, opts);\n }),\n );\n goals\n .command('show <id>')\n .description('tasks, artifacts and summary of a goal')\n .option('--project <dir>', 'repository (default: detected)')\n .action(\n run(async (ctx, id: string, opts: { project?: string }) => {\n const { goalsShow } = await import('./commands/goal');\n return goalsShow(ctx, id, opts);\n }),\n );\n goals\n .command('cancel <id>')\n .description('cancel a running goal')\n .option('--project <dir>', 'repository (default: detected)')\n .action(\n run(async (ctx, id: string, opts: { project?: string }) => {\n const { goalsCancel } = await import('./commands/goal');\n return goalsCancel(ctx, id, opts);\n }),\n );\n}\n\nfunction registerProject(program: Command, run: Runner): void {\n program\n .command('init')\n .description('scaffold the project brain (.davecode/) in this repository')\n .option('--name <name>', 'project name used in STATE.md and ARCHITECTURE.md')\n .option('--config', 'write a starter .davecode/config.json without asking')\n .option('--no-config', 'do not write .davecode/config.json')\n .action(\n run(async (ctx, opts: { name?: string; config?: boolean }) => {\n const { initCommand } = await import('./commands/init');\n return initCommand(ctx, opts);\n }),\n );\n\n const tasks = program.command('tasks').description('show and edit the task graph');\n tasks\n .command('list', { isDefault: true })\n .alias('ls')\n .description('task tree with status and blocked reasons')\n .action(\n run(async (ctx) => {\n const { tasksList } = await import('./commands/tasks');\n return tasksList(ctx);\n }),\n );\n tasks\n .command('next')\n .description('the task the runner would pick next')\n .action(\n run(async (ctx) => {\n const { tasksNext } = await import('./commands/tasks');\n return tasksNext(ctx);\n }),\n );\n tasks\n .command('add <id> <title...>')\n .description('add a PENDING task')\n .option('-d, --depends <ids>', 'dependencies (repeatable or comma-separated)', collect)\n .addOption(new Option('-p, --priority <n>', 'higher runs first').argParser(parseInteger))\n .option('--description <text>', 'longer description')\n .option(\n '-a, --acceptance <criterion>',\n 'acceptance criterion (repeatable)',\n (v, prev: string[] = []) => [...prev, v],\n )\n .action(\n run(\n async (\n ctx,\n id: string,\n title: string[],\n opts: import('./commands/tasks').AddTaskOptions,\n ) => {\n const { tasksAdd } = await import('./commands/tasks');\n return tasksAdd(ctx, id, title, opts);\n },\n ),\n );\n tasks\n .command('status <id> <status>')\n .description('move a task to PENDING | IN_PROGRESS | SUCCESS | FAILED')\n .option('--notes <text>', 'note stored on the task')\n .action(\n run(async (ctx, id: string, status: string, opts: { notes?: string }) => {\n const { tasksStatus } = await import('./commands/tasks');\n return tasksStatus(ctx, id, status, opts);\n }),\n );\n\n const config = program.command('config').description('show the resolved configuration');\n config\n .command('show', { isDefault: true })\n .description('resolved config as JSON (secrets redacted)')\n .action(\n run(async (ctx) => {\n const { configShow } = await import('./commands/config');\n return configShow(ctx);\n }),\n );\n config\n .command('path')\n .description('where config, state and brains live')\n .action(\n run(async (ctx) => {\n const { configPath } = await import('./commands/config');\n return configPath(ctx);\n }),\n );\n config\n .command('get <key>')\n .description('one value by dotted key, e.g. server.port')\n .action(\n run(async (ctx, key: string) => {\n const { configGet } = await import('./commands/config');\n return configGet(ctx, key);\n }),\n );\n}\n\ntype AddOpts = import('./commands/accounts').AddCommandFlags;\n\nfunction addAccountOptions(command: Command, run: Runner): Command {\n return command\n .option(\n '--provider <kind>',\n 'anthropic | openai | gemini | openai-compatible | claude-cli | codex-cli | gemini-cli | gemini-web',\n )\n .option('--label <name>', 'human-friendly name')\n .addOption(\n new Option('--priority <n>', 'lower is tried first (default 100)').argParser(parseInteger),\n )\n .addOption(\n new Option('--weight <n>', 'traffic share among equal priorities').argParser(parseInteger),\n )\n .option('--secret-env <var>', 'read the API key from this environment variable')\n .option('--secret-stdin', 'read the API key from stdin')\n .option('--secret <value>', 'API key (discouraged: visible in shell history)')\n .option('--base-url <url>', 'endpoint for openai-compatible accounts')\n .option('--model <id>', 'advertised model (repeatable or comma-separated)', collect)\n .option('--default-model <id>', 'model used for davecode/auto without a route')\n .option('--binary-path <path>', 'CLI binary for claude-cli / codex-cli / gemini-cli')\n .option('--limit <key=value>', 'quota limit, e.g. tokens5h=500000 (repeatable)', collect)\n .option('--disabled', 'add the account disabled')\n .option('-y, --yes', 'never prompt: take everything from flags')\n .option('--no-login', 'do not offer to log in after adding a CLI account')\n .option('--local', 'write to the local database even if a gateway is running')\n .addHelpText(\n 'after',\n `\nExamples:\n davecode accounts add # interactive\n davecode accounts add --provider anthropic --label work --secret-env ANTHROPIC_API_KEY --yes\n echo \"$OPENROUTER_KEY\" | davecode accounts add --provider openai-compatible \\\\\n --base-url https://openrouter.ai/api/v1 --model openai/gpt-5.5 --secret-stdin\n davecode accounts add --provider claude-cli --label \"Claude Pro\" --yes`,\n )\n .action(\n run(async (ctx, opts: AddOpts) => {\n const { accountsAdd } = await import('./commands/accounts');\n return accountsAdd(ctx, opts);\n }),\n );\n}\n\nfunction registerAccounts(program: Command, run: Runner): void {\n const accounts = program.command('accounts').description('manage provider accounts');\n\n accounts\n .command('list', { isDefault: true })\n .alias('ls')\n .description('list accounts')\n .option('--local', 'read the local database even if a gateway is running')\n .action(\n run(async (ctx, opts: { local?: boolean }) => {\n const { accountsList } = await import('./commands/accounts');\n return accountsList(ctx, opts);\n }),\n );\n\n addAccountOptions(\n accounts.command('add').description('add an account (interactive in a terminal)'),\n run,\n );\n\n accounts\n .command('remove <id>')\n .alias('rm')\n .description('remove an account, its secret and its sandbox')\n .option('-y, --yes', 'do not ask for confirmation')\n .option('--local', 'write to the local database even if a gateway is running')\n .action(\n run(async (ctx, id: string, opts: { yes?: boolean; local?: boolean }) => {\n const { accountsRemove } = await import('./commands/accounts');\n return accountsRemove(ctx, id, opts);\n }),\n );\n\n for (const [name, enabled] of [\n ['enable', true],\n ['disable', false],\n ] as const) {\n accounts\n .command(`${name} <id>`)\n .description(`${name} an account${enabled ? ' (also clears error and cooldown state)' : ''}`)\n .option('--local', 'write to the local database even if a gateway is running')\n .action(\n run(async (ctx, id: string, opts: { local?: boolean }) => {\n const { accountsSetEnabled } = await import('./commands/accounts');\n return accountsSetEnabled(ctx, id, enabled, opts);\n }),\n );\n }\n\n accounts\n .command('plan <id>')\n .description('show or set what you pay for an account (plan, price, paid/renewal dates)')\n .option('--plan <name>', 'plan name, e.g. \"Claude Pro\" or \"API pay-as-you-go\"')\n .option('--price <amount>', 'price per period, e.g. 20')\n .option('--currency <code>', '3-letter currency code (default USD)')\n .option('--period <period>', 'month | year (default month)')\n .option('--paid <date>', 'last payment date (YYYY-MM-DD)')\n .option('--renews <date>', 'next renewal date (YYYY-MM-DD)')\n .option('--notes <text>', 'free-form note')\n .option('--clear', 'remove the recorded plan')\n .option('--local', 'write to the local database even if a gateway is running')\n .addHelpText(\n 'after',\n `\nEntered by hand: DaveCode never reads billing pages. Example:\n davecode accounts plan acc_123 --plan \"Claude Pro\" --price 20 --renews 2026-11-01`,\n )\n .action(\n run(async (ctx, id: string, opts: import('./commands/accounts').PlanFlags) => {\n const { accountsPlan } = await import('./commands/accounts');\n return accountsPlan(ctx, id, opts);\n }),\n );\n\n accounts\n .command('login <id> [args...]')\n .description(\n 'log a claude-cli / codex-cli / gemini-cli account in, inside its own isolated config dir',\n )\n .allowUnknownOption()\n .option('--local', 'read the local database even if a gateway is running')\n .option('--hold', 'wait for Enter before exiting (for windows opened by the dashboard)')\n .addHelpText(\n 'after',\n `\nRuns the vendor's official sign-in (claude auth login, codex login, Gemini CLI's\n\"Login with Google\") with CLAUDE_CONFIG_DIR / CODEX_HOME / GEMINI_CLI_HOME pointing at the\naccount's sandbox, so every account keeps a separate login. DaveCode never sees the password.\nExtra arguments after -- replace the default ones (e.g. -- login --device-auth for Codex).`,\n )\n .action(\n run(\n async (ctx, id: string, args: string[], opts: import('./commands/accounts').LoginFlags) => {\n const { accountsLogin } = await import('./commands/accounts');\n return accountsLogin(ctx, id, args, opts);\n },\n ),\n );\n\n accounts\n .command('connect <id>')\n .description('connect a subscription: check its login and run the official sign-in if needed')\n .option('--check', 'only report whether the account is connected')\n .option('--local', 'read the local database even if a gateway is running')\n .addHelpText(\n 'after',\n `\nAPI-key accounts are connected when a key is stored. CLI accounts (claude-cli, codex-cli,\ngemini-cli) ask the vendor CLI for its login status inside the account sandbox and, when not\nconnected, start the vendor's own sign-in. Example:\n davecode accounts connect acc_123 --check`,\n )\n .action(\n run(async (ctx, id: string, opts: import('./commands/accounts').ConnectFlags) => {\n const { accountsConnect } = await import('./commands/accounts');\n return accountsConnect(ctx, id, opts);\n }),\n );\n\n addAccountOptions(program.command('add-account').description('alias of `accounts add`'), run);\n}\n\n/** Render an error for humans: `error: …` plus an optional hint, without a stack trace. */\nexport function describeError(err: unknown): { message: string; hint?: string; exitCode: number } {\n if (err instanceof CliError) {\n return {\n message: err.message,\n exitCode: err.exitCode,\n ...(err.hint ? { hint: err.hint } : {}),\n };\n }\n if (err instanceof Error) {\n if (err.name === 'ConfigError') {\n return {\n message: err.message,\n hint: 'Fix the file above or run `davecode config path` to see where config is read from.',\n exitCode: EXIT.failure,\n };\n }\n return { message: err.message, exitCode: EXIT.failure };\n }\n return { message: String(err), exitCode: EXIT.failure };\n}\n\n/** Parse `argv` (user arguments only) and run the matching command. Resolves to an exit code. */\nexport async function runCli(argv: string[], options: RunOptions): Promise<number> {\n const state: ProgramState = { exitCode: 0 };\n const program = buildProgram(options, state);\n try {\n await program.parseAsync(argv, { from: 'user' });\n return state.exitCode;\n } catch (err) {\n if (err instanceof CommanderError) {\n // Help/version print and exit 0; usage errors were already written by commander.\n return err.exitCode;\n }\n const { message, hint, exitCode } = describeError(err);\n const theme = state.ctx?.errTheme;\n const label = theme ? theme.error('error') : 'error';\n options.io.stderr.write(`${label}: ${message}\\n`);\n if (hint) options.io.stderr.write(`${theme ? theme.dim(hint) : hint}\\n`);\n if (options.env.DAVECODE_DEBUG && err instanceof Error && err.stack) {\n options.io.stderr.write(`${err.stack}\\n`);\n }\n return exitCode;\n }\n}\n","import { runCli } from './program';\n\nconst code = await runCli(process.argv.slice(2), {\n io: { stdout: process.stdout, stderr: process.stderr, stdin: process.stdin },\n env: process.env,\n cwd: process.cwd(),\n});\nprocess.exitCode = code;\n"],"mappings":"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","names":["code"]}
|
|
@@ -3,11 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-IC3TDONV.js";
|
|
4
4
|
import {
|
|
5
5
|
printJson
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-VVCXGQMY.js";
|
|
6
|
+
} from "./chunk-QA3O6RA2.js";
|
|
8
7
|
import {
|
|
9
8
|
detectProjectRoot
|
|
10
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-DZ2FDABF.js";
|
|
11
10
|
import {
|
|
12
11
|
CliError,
|
|
13
12
|
EXIT
|
|
@@ -16,7 +15,8 @@ import {
|
|
|
16
15
|
ProjectBrain,
|
|
17
16
|
configSchema,
|
|
18
17
|
projectPaths
|
|
19
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-3Q2KCXLN.js";
|
|
19
|
+
import "./chunk-MC7RIPL7.js";
|
|
20
20
|
|
|
21
21
|
// src/commands/init.ts
|
|
22
22
|
import { existsSync as existsSync2, readFileSync as readFileSync2, writeFileSync } from "fs";
|
|
@@ -118,7 +118,7 @@ async function initCommand(ctx, opts, deps = {}) {
|
|
|
118
118
|
} else {
|
|
119
119
|
let write = opts.config === true;
|
|
120
120
|
if (!write && ctx.interactive) {
|
|
121
|
-
const prompter = deps.prompter ?? (await import("./prompts-
|
|
121
|
+
const prompter = deps.prompter ?? (await import("./prompts-TZ7UC42M.js")).createInkPrompter({
|
|
122
122
|
stdout: ctx.io.stdout,
|
|
123
123
|
stdin: ctx.io.stdin,
|
|
124
124
|
theme: ctx.theme
|
|
@@ -191,4 +191,4 @@ export {
|
|
|
191
191
|
ensureLockIgnored,
|
|
192
192
|
initCommand
|
|
193
193
|
};
|
|
194
|
-
//# sourceMappingURL=init-
|
|
194
|
+
//# sourceMappingURL=init-AXYIWAB3.js.map
|
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
ThemeProvider,
|
|
6
6
|
useTheme
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-PGPXE6LF.js";
|
|
8
|
+
import "./chunk-MC7RIPL7.js";
|
|
9
9
|
|
|
10
10
|
// src/tui/prompts.tsx
|
|
11
11
|
import { Box, render, Text, useInput } from "ink";
|
|
@@ -50,7 +50,10 @@ function SelectPrompt({
|
|
|
50
50
|
setChosen(choice);
|
|
51
51
|
done(choice.value);
|
|
52
52
|
} else if (/^[1-9]$/.test(input) && Number(input) <= choices.length) {
|
|
53
|
+
const choice = choices[Number(input) - 1];
|
|
53
54
|
setIndex(Number(input) - 1);
|
|
55
|
+
setChosen(choice);
|
|
56
|
+
done(choice.value);
|
|
54
57
|
}
|
|
55
58
|
});
|
|
56
59
|
if (chosen) return /* @__PURE__ */ jsx(Question, { message, answer: chosen.label });
|
|
@@ -59,8 +62,9 @@ function SelectPrompt({
|
|
|
59
62
|
choices.map((choice, i) => {
|
|
60
63
|
const active = i === index;
|
|
61
64
|
return /* @__PURE__ */ jsxs(Text, { children: [
|
|
62
|
-
/* @__PURE__ */ jsxs(Text, {
|
|
65
|
+
/* @__PURE__ */ jsxs(Text, { bold: active, dimColor: !active && theme.ink.dim, children: [
|
|
63
66
|
active ? ` ${theme.glyph.prompt} ` : " ",
|
|
67
|
+
choices.length <= 9 ? `${i + 1}. ` : "",
|
|
64
68
|
choice.label
|
|
65
69
|
] }),
|
|
66
70
|
choice.hint ? /* @__PURE__ */ jsxs(Text, { dimColor: theme.ink.dim, children: [
|
|
@@ -69,7 +73,7 @@ function SelectPrompt({
|
|
|
69
73
|
] }) : null
|
|
70
74
|
] }, choice.value);
|
|
71
75
|
}),
|
|
72
|
-
/* @__PURE__ */ jsx(Text, { dimColor: theme.ink.dim, children: " \u2191/\u2193 to move, Enter to select, Esc to cancel" })
|
|
76
|
+
/* @__PURE__ */ jsx(Text, { dimColor: theme.ink.dim, children: choices.length <= 9 ? " \u2191/\u2193 or a number to choose, Enter to confirm, Esc to cancel" : " \u2191/\u2193 to move, Enter to select, Esc to cancel" })
|
|
73
77
|
] });
|
|
74
78
|
}
|
|
75
79
|
function TextPrompt({
|
|
@@ -212,4 +216,4 @@ export {
|
|
|
212
216
|
createInkPrompter,
|
|
213
217
|
sanitizeLine
|
|
214
218
|
};
|
|
215
|
-
//# sourceMappingURL=prompts-
|
|
219
|
+
//# sourceMappingURL=prompts-TZ7UC42M.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tui/prompts.tsx"],"sourcesContent":["import { Box, render, Text, useInput } from 'ink';\nimport { type ReactElement, useState } from 'react';\nimport type { InStream, OutStream } from '../context';\nimport {\n type Choice,\n PromptCancelledError,\n type Prompter,\n type SecretOptions,\n type TextOptions,\n} from '../lib/prompter';\nimport type { Theme } from '../ui/theme';\nimport { ThemeProvider, useTheme } from './theme-context';\n\n/** Drop line breaks and control characters from typed or pasted single-line input. */\nexport function sanitizeLine(input: string): string {\n // biome-ignore lint/suspicious/noControlCharactersInRegex: stripping control characters\n return input.replace(/[\\u0000-\\u001f\\u007f]/g, '');\n}\n\ninterface Settle<T> {\n done: (value: T) => void;\n cancel: () => void;\n}\n\nfunction Question({ message, answer }: { message: string; answer?: string }) {\n const theme = useTheme();\n return (\n <Text>\n <Text color={answer === undefined ? theme.ink.accent : theme.ink.ok}>\n {answer === undefined ? '?' : theme.glyph.ok}\n </Text>{' '}\n <Text bold>{message}</Text>\n {answer !== undefined ? <Text dimColor={theme.ink.dim}> {answer}</Text> : null}\n </Text>\n );\n}\n\nexport function SelectPrompt<T extends string>({\n message,\n choices,\n initial,\n done,\n cancel,\n}: { message: string; choices: Choice<T>[]; initial?: T } & Settle<T>) {\n const theme = useTheme();\n const start = Math.max(\n 0,\n choices.findIndex((c) => c.value === initial),\n );\n const [index, setIndex] = useState(start);\n const [chosen, setChosen] = useState<Choice<T> | undefined>();\n\n useInput((input, key) => {\n if (chosen) return;\n if (key.escape || (key.ctrl && input === 'c')) return cancel();\n if (key.upArrow || input === 'k') setIndex((i) => (i - 1 + choices.length) % choices.length);\n else if (key.downArrow || input === 'j') setIndex((i) => (i + 1) % choices.length);\n else if (key.return) {\n const choice = choices[index]!;\n setChosen(choice);\n done(choice.value);\n } else if (/^[1-9]$/.test(input) && Number(input) <= choices.length) {\n // A number picks its option straight away, as in Claude Code's menus.\n const choice = choices[Number(input) - 1]!;\n setIndex(Number(input) - 1);\n setChosen(choice);\n done(choice.value);\n }\n });\n\n if (chosen) return <Question message={message} answer={chosen.label} />;\n return (\n <Box flexDirection=\"column\">\n <Question message={message} />\n {choices.map((choice, i) => {\n const active = i === index;\n return (\n <Text key={choice.value}>\n <Text bold={active} dimColor={!active && theme.ink.dim}>\n {active ? ` ${theme.glyph.prompt} ` : ' '}\n {choices.length <= 9 ? `${i + 1}. ` : ''}\n {choice.label}\n </Text>\n {choice.hint ? <Text dimColor={theme.ink.dim}> {choice.hint}</Text> : null}\n </Text>\n );\n })}\n <Text dimColor={theme.ink.dim}>\n {choices.length <= 9\n ? ' ↑/↓ or a number to choose, Enter to confirm, Esc to cancel'\n : ' ↑/↓ to move, Enter to select, Esc to cancel'}\n </Text>\n </Box>\n );\n}\n\nexport function TextPrompt({\n message,\n initial = '',\n placeholder,\n validate,\n mask,\n optional,\n done,\n cancel,\n}: TextOptions & SecretOptions & { message: string; mask?: boolean } & Settle<string>) {\n const theme = useTheme();\n const [value, setValue] = useState(initial);\n const [error, setError] = useState<string | undefined>();\n const [submitted, setSubmitted] = useState(false);\n\n useInput((input, key) => {\n if (submitted) return;\n if (key.escape || (key.ctrl && input === 'c')) return cancel();\n if (key.return) {\n if (mask && !optional && value.trim() === '') {\n setError('a value is required');\n return;\n }\n const problem = validate?.(value);\n if (problem) {\n setError(problem);\n return;\n }\n setSubmitted(true);\n done(value);\n return;\n }\n if (key.backspace || key.delete) {\n setValue((v) => [...v].slice(0, -1).join(''));\n } else if (key.ctrl && input === 'u') {\n setValue('');\n } else if (!key.ctrl && !key.meta) {\n const text = sanitizeLine(input);\n if (text) setValue((v) => v + text);\n }\n setError(undefined);\n });\n\n const shown = mask ? '•'.repeat(Math.min([...value].length, 32)) : value;\n if (submitted) {\n const answer = mask ? (value ? 'set' : 'skipped') : value || '(empty)';\n return <Question message={message} answer={answer} />;\n }\n return (\n <Box flexDirection=\"column\">\n <Text>\n <Text color={theme.ink.accent}>?</Text> <Text bold>{message}</Text>{' '}\n {shown ? <Text>{shown}</Text> : <Text dimColor={theme.ink.dim}>{placeholder ?? ''}</Text>}\n <Text inverse> </Text>\n </Text>\n {error ? (\n <Text color={theme.ink.error}>\n {' '}\n {error}\n </Text>\n ) : null}\n </Box>\n );\n}\n\nexport function ConfirmPrompt({\n message,\n initial,\n done,\n cancel,\n}: { message: string; initial: boolean } & Settle<boolean>) {\n const theme = useTheme();\n const [answer, setAnswer] = useState<boolean | undefined>();\n useInput((input, key) => {\n if (answer !== undefined) return;\n if (key.escape || (key.ctrl && input === 'c')) return cancel();\n let value: boolean | undefined;\n if (key.return) value = initial;\n else if (/^y$/i.test(input)) value = true;\n else if (/^n$/i.test(input)) value = false;\n if (value === undefined) return;\n setAnswer(value);\n done(value);\n });\n if (answer !== undefined) return <Question message={message} answer={answer ? 'yes' : 'no'} />;\n return (\n <Text>\n <Text color={theme.ink.accent}>?</Text> <Text bold>{message}</Text>{' '}\n <Text dimColor={theme.ink.dim}>{initial ? '(Y/n)' : '(y/N)'}</Text>\n </Text>\n );\n}\n\nexport interface InkPrompterOptions {\n stdout: OutStream;\n stdin: InStream;\n theme: Theme;\n}\n\n/** Ink-backed prompter: each question is a short-lived Ink app that leaves its answer behind. */\nexport function createInkPrompter(options: InkPrompterOptions): Prompter {\n const ask = <T,>(element: (settle: Settle<T>) => ReactElement): Promise<T> =>\n new Promise<T>((resolve, reject) => {\n let result: { ok: true; value: T } | { ok: false } | undefined;\n const instance = render(\n <ThemeProvider theme={options.theme}>\n {element({\n done: (value) => {\n result = { ok: true, value };\n setImmediate(() => instance.unmount());\n },\n cancel: () => {\n result = { ok: false };\n setImmediate(() => instance.unmount());\n },\n })}\n </ThemeProvider>,\n {\n stdout: options.stdout as NodeJS.WriteStream,\n stdin: options.stdin as NodeJS.ReadStream,\n exitOnCtrlC: false,\n patchConsole: false,\n },\n );\n instance.waitUntilExit().then(\n () => {\n if (result?.ok) resolve(result.value);\n else reject(new PromptCancelledError());\n },\n (err: unknown) => reject(err),\n );\n });\n\n return {\n select: (message, choices, initial) =>\n ask((s) => (\n <SelectPrompt\n message={message}\n choices={choices}\n {...(initial !== undefined ? { initial } : {})}\n {...s}\n />\n )),\n text: (message, opts = {}) => ask((s) => <TextPrompt message={message} {...opts} {...s} />),\n secret: (message, opts = {}) =>\n ask((s) => <TextPrompt message={message} mask {...opts} {...s} />),\n confirm: (message, initial = false) =>\n ask((s) => <ConfirmPrompt message={message} initial={initial} {...s} />),\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
logText
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GE22VBCY.js";
|
|
4
4
|
import {
|
|
5
5
|
initialRunnerState,
|
|
6
6
|
isTerminal
|
|
7
7
|
} from "./chunk-FRFSJMN4.js";
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-5LKOJBUL.js";
|
|
9
|
+
import "./chunk-PGPXE6LF.js";
|
|
10
10
|
import {
|
|
11
11
|
formatDuration
|
|
12
12
|
} from "./chunk-SF5ZEAP4.js";
|
|
13
13
|
import {
|
|
14
14
|
printJson
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-VVCXGQMY.js";
|
|
15
|
+
} from "./chunk-QA3O6RA2.js";
|
|
17
16
|
import {
|
|
18
17
|
GatewayError,
|
|
19
18
|
detectProjectRoot,
|
|
20
19
|
findGateway,
|
|
21
20
|
wireProject
|
|
22
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-DZ2FDABF.js";
|
|
23
22
|
import {
|
|
24
23
|
CliError,
|
|
25
24
|
EXIT
|
|
@@ -29,7 +28,8 @@ import {
|
|
|
29
28
|
RunnerError,
|
|
30
29
|
createEngine,
|
|
31
30
|
loadConfig
|
|
32
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-3Q2KCXLN.js";
|
|
32
|
+
import "./chunk-MC7RIPL7.js";
|
|
33
33
|
|
|
34
34
|
// src/commands/run.ts
|
|
35
35
|
import { existsSync } from "fs";
|
|
@@ -268,7 +268,7 @@ async function runContinuous(ctx, engine, runner, config, projectName, tasks, de
|
|
|
268
268
|
const [{ render }, { createElement }, { RunnerApp }] = await Promise.all([
|
|
269
269
|
import("ink"),
|
|
270
270
|
import("react"),
|
|
271
|
-
import("./RunnerView-
|
|
271
|
+
import("./RunnerView-A7JSPUW5.js")
|
|
272
272
|
]);
|
|
273
273
|
let initial = initialRunnerState(runner.status(), tasks);
|
|
274
274
|
const { runnerReducer } = await import("./runner-state-QFU3LJVJ.js");
|
|
@@ -334,7 +334,7 @@ async function driveGateway(ctx, client, config, root, taskId) {
|
|
|
334
334
|
const [{ render }, { createElement }, { RunnerApp }, { tasks }] = await Promise.all([
|
|
335
335
|
import("ink"),
|
|
336
336
|
import("react"),
|
|
337
|
-
import("./RunnerView-
|
|
337
|
+
import("./RunnerView-A7JSPUW5.js"),
|
|
338
338
|
client.get("/api/tasks").then((r) => ({ tasks: r.graph.tasks })).catch(() => ({ tasks: [] }))
|
|
339
339
|
]);
|
|
340
340
|
const status = await client.get("/api/runner").then((r) => r.status).catch(() => latest);
|
|
@@ -373,4 +373,4 @@ export {
|
|
|
373
373
|
explainRunnerError,
|
|
374
374
|
runCommand
|
|
375
375
|
};
|
|
376
|
-
//# sourceMappingURL=run-
|
|
376
|
+
//# sourceMappingURL=run-QRTLHFB3.js.map
|