ccdeck 3.29.11 → 3.31.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 +4 -3
- package/bin/agent-dag.js +67 -118
- package/bin/cli/help.js +67 -0
- package/bin/cli/login-item.js +182 -0
- package/bin/cli/one-shot.js +254 -0
- package/bin/cli/package.js +39 -0
- package/bin/cli/pulse.js +98 -0
- package/bin/cli/restart.js +179 -0
- package/bin/cli/screen.js +166 -0
- package/bin/cli/second-start.js +120 -0
- package/bin/cli/startup.js +459 -0
- package/bin/cli/uninstall.js +169 -0
- package/bin/deck.js +112 -1559
- package/dist/web/assets/BrowserWatchModal-n63GjLhv.js +1 -0
- package/dist/web/assets/UsageHistoryModal-DEwBX4Fk.js +1 -0
- package/dist/web/assets/index-CZJf1Cpp.js +299 -0
- package/dist/web/assets/index-D4q1ElXU.css +1 -0
- package/dist/web/index.html +2 -2
- package/hook/hook.js +15 -14
- package/package.json +1 -1
- package/release-notes.json +40 -0
- package/src/server/account-projects.mjs +25 -11
- package/src/server/account-routes.mjs +254 -0
- package/src/server/activity.mjs +3 -3
- package/src/server/append-budget.mjs +185 -0
- package/src/server/append-failures.mjs +147 -0
- package/src/server/args.mjs +37 -5
- package/src/server/atomic-write.mjs +300 -0
- package/src/server/block-notify.mjs +0 -5
- package/src/server/boot-lock.mjs +1 -1
- package/src/server/brand.mjs +7 -6
- package/src/server/browser-react.mjs +10 -2
- package/src/server/browser-watch-decks.mjs +146 -0
- package/src/server/browser-watch-feed.mjs +69 -0
- package/src/server/browser-watch-log.mjs +173 -0
- package/src/server/browser-watch-mtime.mjs +18 -0
- package/src/server/browser-watch-relay.mjs +112 -0
- package/src/server/browser-watch-routes.mjs +172 -0
- package/src/server/browser-watch-seen.mjs +127 -0
- package/src/server/browser-watch-store.mjs +14 -143
- package/src/server/browser-watch.mjs +278 -626
- package/src/server/canonical-path.mjs +150 -0
- package/src/server/ccusage-failure.mjs +64 -0
- package/src/server/ccusage-install.mjs +459 -0
- package/src/server/ccusage-runner.mjs +271 -0
- package/src/server/ccusage.mjs +21 -756
- package/src/server/claude-accounts.mjs +220 -464
- package/src/server/claude-collector.mjs +189 -0
- package/src/server/claude-dir.mjs +7 -3
- package/src/server/claude-identity.mjs +5 -4
- package/src/server/claude-reset-credits.mjs +130 -0
- package/src/server/claude-verdicts.mjs +174 -0
- package/src/server/clear-route.mjs +191 -0
- package/src/server/codex-auth.mjs +4 -4
- package/src/server/codex-dir.mjs +52 -8
- package/src/server/codex-enrichment.mjs +310 -0
- package/src/server/codex-quota.mjs +5 -3
- package/src/server/codex-translate.mjs +407 -0
- package/src/server/codex-usage.mjs +8 -5
- package/src/server/codex-watch.mjs +496 -0
- package/src/server/cswap-auto-loop.mjs +342 -0
- package/src/server/cswap-auto-readers.mjs +303 -0
- package/src/server/cswap-auto.mjs +51 -609
- package/src/server/cswap-install.mjs +69 -265
- package/src/server/cswap-layout.mjs +242 -0
- package/src/server/deck-home.mjs +2 -2
- package/src/server/deck-prefs.mjs +58 -184
- package/src/server/deck-scope.mjs +52 -0
- package/src/server/desktop-update-routes.mjs +75 -0
- package/src/server/detach.mjs +78 -0
- package/src/server/discovery.mjs +298 -0
- package/src/server/event-log.mjs +328 -0
- package/src/server/event-pipeline.mjs +235 -0
- package/src/server/event-ring.mjs +214 -0
- package/src/server/event-routes.mjs +352 -0
- package/src/server/event-sink.mjs +26 -0
- package/src/server/exec-children.mjs +128 -0
- package/src/server/exec-not-found.mjs +213 -0
- package/src/server/exec-output.mjs +23 -0
- package/src/server/exec-spec.mjs +341 -0
- package/src/server/exec.mjs +74 -661
- package/src/server/health-route.mjs +42 -0
- package/src/server/hook-challenge.mjs +37 -0
- package/src/server/http-io.mjs +104 -0
- package/src/server/index.mjs +174 -7620
- package/src/server/install-layout.mjs +506 -0
- package/src/server/installer.mjs +79 -608
- package/src/server/jsonl-chunks.mjs +139 -0
- package/src/server/lan-accounts.mjs +27 -0
- package/src/server/lan-beacon.mjs +457 -0
- package/src/server/lan-call.mjs +239 -0
- package/src/server/lan-copies.mjs +270 -0
- package/src/server/lan-deck.mjs +583 -0
- package/src/server/lan-dials.mjs +161 -0
- package/src/server/lan-engine.mjs +475 -1024
- package/src/server/lan-hearing.mjs +49 -0
- package/src/server/lan-inbound.mjs +100 -0
- package/src/server/lan-invite-offer.mjs +77 -0
- package/src/server/lan-invite.mjs +207 -0
- package/src/server/lan-lines.mjs +73 -0
- package/src/server/lan-manifest.mjs +74 -0
- package/src/server/lan-reach.mjs +82 -69
- package/src/server/lan-requests.mjs +249 -0
- package/src/server/lan-round-record.mjs +45 -0
- package/src/server/lan-round-timer.mjs +62 -0
- package/src/server/lan-routes.mjs +143 -0
- package/src/server/lan-serve.mjs +112 -0
- package/src/server/lan-socket.mjs +243 -925
- package/src/server/lan-sync.mjs +58 -1026
- package/src/server/lan-tailnet-poll.mjs +57 -0
- package/src/server/lan-turns.mjs +80 -0
- package/src/server/lan-wire.mjs +620 -0
- package/src/server/lifecycle.mjs +421 -0
- package/src/server/listen.mjs +110 -0
- package/src/server/live-decks.mjs +138 -0
- package/src/server/load-average.mjs +32 -0
- package/src/server/log-election.mjs +235 -0
- package/src/server/log-replay.mjs +374 -0
- package/src/server/log-writer.mjs +72 -557
- package/src/server/login-service.mjs +3 -2
- package/src/server/macmon.mjs +1 -1
- package/src/server/memory-files.mjs +163 -0
- package/src/server/memory-metrics.mjs +178 -0
- package/src/server/metrics-history.mjs +94 -0
- package/src/server/metrics-run.mjs +100 -0
- package/src/server/music-routes.mjs +134 -0
- package/src/server/network-metrics.mjs +5 -3
- package/src/server/network-sampler.mjs +256 -0
- package/src/server/npm-latest.mjs +385 -0
- package/src/server/npm-upgrade.mjs +352 -0
- package/src/server/npx.mjs +41 -7
- package/src/server/output-watch.mjs +5 -4
- package/src/server/pinned-build.mjs +110 -0
- package/src/server/prefs-give-back.mjs +206 -0
- package/src/server/prefs-path.mjs +14 -0
- package/src/server/prefs-refusal.mjs +86 -0
- package/src/server/prefs-routes.mjs +99 -0
- package/src/server/prefs-set-aside.mjs +86 -0
- package/src/server/prefs-state.mjs +70 -0
- package/src/server/process-command.mjs +104 -0
- package/src/server/process-list.mjs +547 -0
- package/src/server/provider-status.mjs +307 -0
- package/src/server/pulse-line.mjs +132 -0
- package/src/server/purge-key.mjs +7 -7
- package/src/server/quota-cli.mjs +174 -0
- package/src/server/quota-oauth.mjs +190 -0
- package/src/server/quota-shape.mjs +229 -0
- package/src/server/quota-store-resets.mjs +206 -0
- package/src/server/quota.mjs +123 -509
- package/src/server/relay-guard.mjs +3 -3
- package/src/server/request-gates.mjs +441 -0
- package/src/server/restart-note.mjs +180 -0
- package/src/server/retire-sound-hook.mjs +3 -3
- package/src/server/ring-bounds.mjs +215 -0
- package/src/server/running-deck.mjs +1 -1
- package/src/server/running-version.mjs +24 -0
- package/src/server/self-update.mjs +39 -1371
- package/src/server/session-enrichment.mjs +622 -0
- package/src/server/session-read-gate.mjs +49 -0
- package/src/server/session-tracking.mjs +242 -0
- package/src/server/sse-clients.mjs +222 -0
- package/src/server/stale-discovery.mjs +30 -0
- package/src/server/static-serve.mjs +81 -0
- package/src/server/supervisor.mjs +73 -12
- package/src/server/system-metrics.mjs +169 -1935
- package/src/server/term.mjs +11 -249
- package/src/server/thermal-metrics.mjs +520 -0
- package/src/server/thermal-sampler.mjs +204 -0
- package/src/server/token-redact.mjs +123 -0
- package/src/server/transcript-gate.mjs +107 -0
- package/src/server/transcript-scan.mjs +563 -0
- package/src/server/usage-routes.mjs +108 -0
- package/src/server/uv-bootstrap.mjs +1 -1
- package/src/server/wordmark.mjs +127 -0
- package/dist/web/assets/BrowserWatchModal-CyAFTvAY.js +0 -1
- package/dist/web/assets/UsageHistoryModal-KJfli0oa.js +0 -1
- package/dist/web/assets/index-Ck2RAla3.css +0 -1
- package/dist/web/assets/index-jmrcEsCj.js +0 -298
|
@@ -143,6 +143,30 @@ export function isCrash({ code, signal, served, stopping } = {}) {
|
|
|
143
143
|
return code !== 0 && code !== null && code !== undefined;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
+
/**
|
|
147
|
+
* The line a crash crashPolicy answers leaves behind: what ended the deck, how
|
|
148
|
+
* long until it is back, and how much of the ceiling that has used.
|
|
149
|
+
*
|
|
150
|
+
* `recent` over CRASH_CEILING is the pair that makes the count mean something:
|
|
151
|
+
* "3/5" says how many more of these the supervisor will answer. The dash is a
|
|
152
|
+
* parameter for the reason upgradeRefusalText takes one (#797) — detached, this
|
|
153
|
+
* is written into deck.log, and the terminal tailing it may be a console that
|
|
154
|
+
* cannot draw an em dash.
|
|
155
|
+
*/
|
|
156
|
+
export function crashRestartNote({ code, signal, delayMs, recent, product = "ccdeck", dash = "—" }) {
|
|
157
|
+
const how = signal ? `killed by ${signal}` : `exit ${code}`;
|
|
158
|
+
return `${product}: the deck stopped on its own (${how}) ${dash} starting it again in ${Math.round(delayMs / 1000)}s (${recent}/${CRASH_CEILING}).`;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* The line the crash past the ceiling leaves before the supervisor ends: how
|
|
163
|
+
* many, in how long, and the command that starts the deck again once somebody
|
|
164
|
+
* has looked — the one the user typed, when that is known.
|
|
165
|
+
*/
|
|
166
|
+
export function crashCeilingNote({ product = "ccdeck", command = "ccdeck", dash = "—" } = {}) {
|
|
167
|
+
return `${product}: the deck has stopped ${CRASH_CEILING} times in ${Math.round(CRASH_WINDOW_MS / 60000)} minutes ${dash} not starting it again. Run \`${command}\` when you have looked at the log above.`;
|
|
168
|
+
}
|
|
169
|
+
|
|
146
170
|
/**
|
|
147
171
|
* How to report a worker that did not exit at all but was killed by a signal.
|
|
148
172
|
*
|
|
@@ -187,6 +211,18 @@ export function signalExitAction(signal, platform = process.platform, numbers =
|
|
|
187
211
|
*
|
|
188
212
|
* `proc` is a parameter so the whole sequence can be driven in a test child.
|
|
189
213
|
*/
|
|
214
|
+
export function dieOfSignal(signal, proc = process) {
|
|
215
|
+
const { reraise, code } = signalExitAction(signal, proc.platform);
|
|
216
|
+
if (reraise) {
|
|
217
|
+
proc.removeAllListeners(reraise);
|
|
218
|
+
try { proc.kill(proc.pid, reraise); } catch { /* fall through to the number */ }
|
|
219
|
+
}
|
|
220
|
+
// Reached on Windows, and on POSIX only when the signal is ignored or
|
|
221
|
+
// blocked — inherited dispositions survive spawn — so the kill above returns
|
|
222
|
+
// instead of ending us.
|
|
223
|
+
proc.exit(code);
|
|
224
|
+
}
|
|
225
|
+
|
|
190
226
|
/**
|
|
191
227
|
* What to say when the upgrade that just succeeded took this install with it,
|
|
192
228
|
* or null when that is not what happened.
|
|
@@ -223,18 +259,6 @@ export function replacedNote({ workerExists, moved, product = "ccdeck", command
|
|
|
223
259
|
].join("\n");
|
|
224
260
|
}
|
|
225
261
|
|
|
226
|
-
export function dieOfSignal(signal, proc = process) {
|
|
227
|
-
const { reraise, code } = signalExitAction(signal, proc.platform);
|
|
228
|
-
if (reraise) {
|
|
229
|
-
proc.removeAllListeners(reraise);
|
|
230
|
-
try { proc.kill(proc.pid, reraise); } catch { /* fall through to the number */ }
|
|
231
|
-
}
|
|
232
|
-
// Reached on Windows, and on POSIX only when the signal is ignored or
|
|
233
|
-
// blocked — inherited dispositions survive spawn — so the kill above returns
|
|
234
|
-
// instead of ending us.
|
|
235
|
-
proc.exit(code);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
262
|
// ── how often an upgrade that failed may be attempted again ──────────────────
|
|
239
263
|
//
|
|
240
264
|
// Reported from a terminal that had been left alone: the same version, the same
|
|
@@ -324,6 +348,43 @@ export function upgradeRefusalText({ reason, waitMs = 0, attempt = 0, dash = "
|
|
|
324
348
|
return `${what} failed to fetch a moment ago ${dash} waiting ${left} before trying again`;
|
|
325
349
|
}
|
|
326
350
|
|
|
351
|
+
/** Drop the two flags launchNpx sets itself. `--port` takes a value, and both
|
|
352
|
+
* spellings npm's parser accepts (`--port 4317`, `--port=4317`) have to go.
|
|
353
|
+
* launchNpx appends its own two after what this leaves of the user's argv. */
|
|
354
|
+
export function withoutPortAndOpen(args) {
|
|
355
|
+
const out = [];
|
|
356
|
+
for (let i = 0; i < args.length; i++) {
|
|
357
|
+
const a = args[i];
|
|
358
|
+
if (a === "--no-open") continue;
|
|
359
|
+
if (a === "--port") { i++; continue; } // and its value
|
|
360
|
+
if (a.startsWith("--port=")) continue;
|
|
361
|
+
out.push(a);
|
|
362
|
+
}
|
|
363
|
+
return out;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/** The worker's command line: the script and the user's own argv, and on a
|
|
367
|
+
* respawn the port the last worker actually bound. Appended last so it wins:
|
|
368
|
+
* the worker's parser keeps the final --port. */
|
|
369
|
+
export function workerArgs(worker, argv, { respawn = false, boundPort = null } = {}) {
|
|
370
|
+
const args = [worker, ...argv];
|
|
371
|
+
if (respawn && boundPort != null) args.push("--port", String(boundPort));
|
|
372
|
+
return args;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/** npx's command line for an upgrade: the spec, then the user's argv with the
|
|
376
|
+
* two flags this sets itself taken out. Ours are appended, so the originals
|
|
377
|
+
* are dropped rather than left to be overridden — `--port 4317 --no-open
|
|
378
|
+
* --port 4317 --no-open` works, but it is what the next person reads in `ps`. */
|
|
379
|
+
export function npxRelaunchArgs(spec, argv, boundPort = null) {
|
|
380
|
+
const args = ["-y", spec, ...withoutPortAndOpen(argv)];
|
|
381
|
+
if (boundPort != null) args.push("--port", String(boundPort));
|
|
382
|
+
// The tab that asked for this is open and reconnecting; a second one would be
|
|
383
|
+
// the deck talking over itself.
|
|
384
|
+
args.push("--no-open");
|
|
385
|
+
return args;
|
|
386
|
+
}
|
|
387
|
+
|
|
327
388
|
/**
|
|
328
389
|
* Die when the process that started this one does — on all three operating
|
|
329
390
|
* systems (#702).
|