@quickchatai/quickreview 1.2.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +116 -53
- package/bin/qcr.js +1 -1
- package/config.example.toml +25 -7
- package/deploy/ansible/README.md +20 -12
- package/deploy/ansible/inventory.example.ini +1 -1
- package/deploy/collect-secrets.sh +1 -1
- package/deploy/qcr-update.sh +1 -1
- package/dist/extensions/cli/home.js +14 -0
- package/dist/extensions/cli/home.js.map +1 -0
- package/dist/extensions/cli/selfimprove.js +18 -0
- package/dist/extensions/cli/selfimprove.js.map +1 -0
- package/dist/extensions/home.js +350 -0
- package/dist/extensions/home.js.map +1 -0
- package/dist/extensions/login-route.js +1 -1
- package/dist/extensions/login-route.js.map +1 -1
- package/dist/extensions/onboarding.js +8 -7
- package/dist/extensions/onboarding.js.map +1 -1
- package/dist/extensions/selfimprove.js +49 -0
- package/dist/extensions/selfimprove.js.map +1 -0
- package/dist/extensions/setup-scan.js +23 -592
- package/dist/extensions/setup-scan.js.map +1 -1
- package/dist/extensions/setup.js +2 -47
- package/dist/extensions/setup.js.map +1 -1
- package/dist/extensions/vendor/openviking-pi/index.js +4 -0
- package/dist/extensions/vendor/openviking-pi/index.js.map +1 -1
- package/dist/extensions/vendor/openviking-pi/qcr-hooks.js +3 -1
- package/dist/extensions/vendor/openviking-pi/qcr-hooks.js.map +1 -1
- package/dist/extensions/vendor/openviking-pi/sync.js +81 -0
- package/dist/extensions/vendor/openviking-pi/sync.js.map +1 -1
- package/dist/src/archive/restore.js +18 -15
- package/dist/src/archive/restore.js.map +1 -1
- package/dist/src/botworker.js +13 -2
- package/dist/src/botworker.js.map +1 -1
- package/dist/src/channelfs.js +3 -26
- package/dist/src/channelfs.js.map +1 -1
- package/dist/src/cli.js +14 -50
- package/dist/src/cli.js.map +1 -1
- package/dist/src/config.js +16 -0
- package/dist/src/config.js.map +1 -1
- package/dist/src/daemon.js +33 -4
- package/dist/src/daemon.js.map +1 -1
- package/dist/src/debuground.js +1 -0
- package/dist/src/debuground.js.map +1 -1
- package/dist/src/debugroundpi.js +1 -0
- package/dist/src/debugroundpi.js.map +1 -1
- package/dist/src/engine/caserunner-sdk.js +15 -251
- package/dist/src/engine/caserunner-sdk.js.map +1 -1
- package/dist/src/home/adapters.js +349 -0
- package/dist/src/home/adapters.js.map +1 -0
- package/dist/src/home/advanced.js +318 -0
- package/dist/src/home/advanced.js.map +1 -0
- package/dist/src/home/advancedtools.js +57 -0
- package/dist/src/home/advancedtools.js.map +1 -0
- package/dist/src/home/autoreview.js +325 -0
- package/dist/src/home/autoreview.js.map +1 -0
- package/dist/src/home/daemonstatus.js +32 -0
- package/dist/src/home/daemonstatus.js.map +1 -0
- package/dist/src/home/devicelogin.js +61 -0
- package/dist/src/home/devicelogin.js.map +1 -0
- package/dist/src/home/launch.js +202 -0
- package/dist/src/home/launch.js.map +1 -0
- package/dist/src/home/loginowner.js +205 -0
- package/dist/src/home/loginowner.js.map +1 -0
- package/dist/src/home/memory.js +122 -0
- package/dist/src/home/memory.js.map +1 -0
- package/dist/src/home/model.js +811 -0
- package/dist/src/home/model.js.map +1 -0
- package/dist/src/home/panel.js +520 -0
- package/dist/src/home/panel.js.map +1 -0
- package/dist/src/home/ports.js +19 -0
- package/dist/src/home/ports.js.map +1 -0
- package/dist/src/home/review.js +163 -0
- package/dist/src/home/review.js.map +1 -0
- package/dist/src/home/reviews.js +478 -0
- package/dist/src/home/reviews.js.map +1 -0
- package/dist/src/home/setup.js +507 -0
- package/dist/src/home/setup.js.map +1 -0
- package/dist/src/home/setupadapters.js +214 -0
- package/dist/src/home/setupadapters.js.map +1 -0
- package/dist/src/home/setupcard.js +199 -0
- package/dist/src/home/setupcard.js.map +1 -0
- package/dist/src/home/setuptools.js +45 -0
- package/dist/src/home/setuptools.js.map +1 -0
- package/dist/src/home/spend.js +160 -0
- package/dist/src/home/spend.js.map +1 -0
- package/dist/src/home/switches.js +209 -0
- package/dist/src/home/switches.js.map +1 -0
- package/dist/src/home/switchon.js +439 -0
- package/dist/src/home/switchon.js.map +1 -0
- package/dist/src/home/toolnames.js +41 -0
- package/dist/src/home/toolnames.js.map +1 -0
- package/dist/src/home/tune.js +341 -0
- package/dist/src/home/tune.js.map +1 -0
- package/dist/src/home/words.js +7 -0
- package/dist/src/home/words.js.map +1 -0
- package/dist/src/homes.js +14 -0
- package/dist/src/homes.js.map +1 -1
- package/dist/src/install.js +1 -1
- package/dist/src/install.js.map +1 -1
- package/dist/src/ipc/workerspec.js +8 -0
- package/dist/src/ipc/workerspec.js.map +1 -1
- package/dist/src/ledgercheck.js +39 -10
- package/dist/src/ledgercheck.js.map +1 -1
- package/dist/src/live/publish.js +1 -1
- package/dist/src/live/publish.js.map +1 -1
- package/dist/src/livecli.js +1 -1
- package/dist/src/livecli.js.map +1 -1
- package/dist/src/loginrefresh/handover.js +121 -0
- package/dist/src/loginrefresh/handover.js.map +1 -0
- package/dist/src/loginrefresh/lock.js +54 -3
- package/dist/src/loginrefresh/lock.js.map +1 -1
- package/dist/src/loginrefresh/refresher.js +33 -5
- package/dist/src/loginrefresh/refresher.js.map +1 -1
- package/dist/src/loginrefresh/supervisor.js +18 -1
- package/dist/src/loginrefresh/supervisor.js.map +1 -1
- package/dist/src/npmverbs.js +42 -12
- package/dist/src/npmverbs.js.map +1 -1
- package/dist/src/onboard/choices.js +6 -3
- package/dist/src/onboard/choices.js.map +1 -1
- package/dist/src/onboard/engine.js +33 -292
- package/dist/src/onboard/engine.js.map +1 -1
- package/dist/src/onboard/steps/bringup.js +3 -2
- package/dist/src/onboard/steps/bringup.js.map +1 -1
- package/dist/src/onboard/steps/configfill.js +18 -7
- package/dist/src/onboard/steps/configfill.js.map +1 -1
- package/dist/src/onboard/steps/loginshare.js +213 -0
- package/dist/src/onboard/steps/loginshare.js.map +1 -0
- package/dist/src/onboard/steps/memory.js +14 -2
- package/dist/src/onboard/steps/memory.js.map +1 -1
- package/dist/src/onboard/steps/repoconfig.js +72 -0
- package/dist/src/onboard/steps/repoconfig.js.map +1 -0
- package/dist/src/onboard/toolnames.js +2 -2
- package/dist/src/onboard/toolnames.js.map +1 -1
- package/dist/src/piagentdir.js +13 -0
- package/dist/src/piagentdir.js.map +1 -0
- package/dist/src/pilogin.js +31 -16
- package/dist/src/pilogin.js.map +1 -1
- package/dist/src/qcrbin.js +16 -11
- package/dist/src/qcrbin.js.map +1 -1
- package/dist/src/reviewargs.js +122 -0
- package/dist/src/reviewargs.js.map +1 -0
- package/dist/src/reviewcli.js +7 -161
- package/dist/src/reviewcli.js.map +1 -1
- package/dist/src/reviewdetach.js +76 -11
- package/dist/src/reviewdetach.js.map +1 -1
- package/dist/src/scancli.js +39 -691
- package/dist/src/scancli.js.map +1 -1
- package/dist/src/selfimprove.js +66 -0
- package/dist/src/selfimprove.js.map +1 -0
- package/dist/src/session-command-supervisor.js +38 -9
- package/dist/src/session-command-supervisor.js.map +1 -1
- package/dist/src/setup/adapters.js +5 -223
- package/dist/src/setup/adapters.js.map +1 -1
- package/dist/src/setup/caserunner.js +15 -249
- package/dist/src/setup/caserunner.js.map +1 -1
- package/dist/src/setup/engine.js +32 -341
- package/dist/src/setup/engine.js.map +1 -1
- package/dist/src/setup/facts.js +3 -592
- package/dist/src/setup/facts.js.map +1 -1
- package/dist/src/setup/findings.js +3 -947
- package/dist/src/setup/findings.js.map +1 -1
- package/dist/src/setup/presentation.js +3 -8
- package/dist/src/setup/presentation.js.map +1 -1
- package/dist/src/setup/scan.js +3 -724
- package/dist/src/setup/scan.js.map +1 -1
- package/dist/src/setup/scanbuild.js +9 -92
- package/dist/src/setup/scanbuild.js.map +1 -1
- package/dist/src/setup/scanlease.js +3 -250
- package/dist/src/setup/scanlease.js.map +1 -1
- package/dist/src/setup/scanreport.js +3 -288
- package/dist/src/setup/scanreport.js.map +1 -1
- package/dist/src/setup/scanrun.js +3 -1732
- package/dist/src/setup/scanrun.js.map +1 -1
- package/dist/src/setup/scantree.js +3 -256
- package/dist/src/setup/scantree.js.map +1 -1
- package/dist/src/setup/stage2request.js +3 -258
- package/dist/src/setup/stage2request.js.map +1 -1
- package/dist/src/setup/unitcut.js +3 -436
- package/dist/src/setup/unitcut.js.map +1 -1
- package/dist/src/state.js +75 -9
- package/dist/src/state.js.map +1 -1
- package/dist/src/takeover.js +1 -0
- package/dist/src/takeover.js.map +1 -1
- package/dist/src/takeoverpi.js +2 -1
- package/dist/src/takeoverpi.js.map +1 -1
- package/dist/src/tui/alerts.js +4 -1
- package/dist/src/tui/alerts.js.map +1 -1
- package/dist/src/tui/board.js +2 -2
- package/dist/src/tui/board.js.map +1 -1
- package/dist/src/tui/companion.js +2 -1
- package/dist/src/tui/companion.js.map +1 -1
- package/dist/src/tui/deploytab.js +2 -2
- package/dist/src/tui/deploytab.js.map +1 -1
- package/dist/src/tui/index.js +9 -6
- package/dist/src/tui/index.js.map +1 -1
- package/dist/src/tui/memory.js +3 -16
- package/dist/src/tui/memory.js.map +1 -1
- package/dist/src/tui/memoryurl.js +22 -0
- package/dist/src/tui/memoryurl.js.map +1 -0
- package/dist/src/tui/remote.js +1 -1
- package/dist/src/tui/remote.js.map +1 -1
- package/dist/src/tui/route.js +2 -2
- package/dist/src/tui/route.js.map +1 -1
- package/dist/src/tui/setupstate.js +8 -5
- package/dist/src/tui/setupstate.js.map +1 -1
- package/dist/src/tui/sshtriage.js +1 -1
- package/dist/src/tui/sshtriage.js.map +1 -1
- package/dist/src/verdicts.js +12 -0
- package/dist/src/verdicts.js.map +1 -1
- package/dist/src/wire.js +9 -4
- package/dist/src/wire.js.map +1 -1
- package/dist/src/workerbreaker.js +32 -5
- package/dist/src/workerbreaker.js.map +1 -1
- package/dist/src/workerworld.js +4 -0
- package/dist/src/workerworld.js.map +1 -1
- package/docker/README.md +1 -1
- package/docker/entrypoint.sh +40 -6
- package/docker-compose.yml +16 -1
- package/extensions/cli/home.ts +14 -0
- package/extensions/cli/selfimprove.ts +18 -0
- package/extensions/home.ts +484 -0
- package/extensions/login-route.ts +1 -1
- package/extensions/onboarding.ts +8 -7
- package/extensions/selfimprove.ts +65 -0
- package/extensions/setup-scan.ts +79 -766
- package/extensions/setup.ts +14 -70
- package/extensions/vendor/openviking-pi/NOTICE +5 -0
- package/extensions/vendor/openviking-pi/README.md +39 -5
- package/extensions/vendor/openviking-pi/index.ts +4 -0
- package/extensions/vendor/openviking-pi/patches/0014-one-turn-sync-in-flight.patch +239 -0
- package/extensions/vendor/openviking-pi/qcr-hooks.ts +3 -1
- package/extensions/vendor/openviking-pi/sync.ts +80 -0
- package/extensions/vendor/openviking-pi/upstream.json +2 -1
- package/package.json +6 -4
- package/prompts/onboarding.md +8 -7
- package/schemas/review-result.v1.json +60 -0
- package/scripts/deploy.sh +8 -6
- package/scripts/qcr-host.sh +28 -5
- package/scripts/vm-ghcr-login.sh +7 -4
- package/src/archive/restore.ts +18 -21
- package/src/botworker.ts +13 -2
- package/src/channelfs.ts +3 -26
- package/src/cli.ts +13 -54
- package/src/config.ts +38 -0
- package/src/daemon.ts +34 -4
- package/src/debuground.ts +3 -0
- package/src/debugroundpi.ts +1 -0
- package/src/engine/caserunner-sdk.ts +29 -314
- package/src/home/adapters.ts +418 -0
- package/src/home/advanced.ts +421 -0
- package/src/home/advancedtools.ts +96 -0
- package/src/home/autoreview.ts +385 -0
- package/src/home/daemonstatus.ts +55 -0
- package/src/home/devicelogin.ts +107 -0
- package/src/home/launch.ts +257 -0
- package/src/home/loginowner.ts +248 -0
- package/src/home/memory.ts +176 -0
- package/src/home/model.ts +965 -0
- package/src/home/panel.ts +666 -0
- package/src/home/ports.ts +338 -0
- package/src/home/review.ts +206 -0
- package/src/home/reviews.ts +565 -0
- package/src/home/setup.ts +689 -0
- package/src/home/setupadapters.ts +217 -0
- package/src/home/setupcard.ts +288 -0
- package/src/home/setuptools.ts +57 -0
- package/src/home/spend.ts +194 -0
- package/src/home/switches.ts +293 -0
- package/src/home/switchon.ts +554 -0
- package/src/home/toolnames.ts +46 -0
- package/src/home/tune.ts +405 -0
- package/src/home/words.ts +8 -0
- package/src/homes.ts +17 -0
- package/src/install.ts +1 -1
- package/src/ipc/workerspec.ts +15 -0
- package/src/ledgercheck.ts +45 -9
- package/src/live/publish.ts +4 -1
- package/src/livecli.ts +6 -1
- package/src/loginrefresh/handover.ts +138 -0
- package/src/loginrefresh/lock.ts +72 -3
- package/src/loginrefresh/refresher.ts +34 -5
- package/src/loginrefresh/supervisor.ts +25 -2
- package/src/npmverbs.ts +51 -11
- package/src/onboard/choices.ts +6 -3
- package/src/onboard/engine.ts +64 -434
- package/src/onboard/steps/bringup.ts +3 -2
- package/src/onboard/steps/configfill.ts +23 -7
- package/src/onboard/steps/loginshare.ts +258 -0
- package/src/onboard/steps/memory.ts +18 -2
- package/src/onboard/steps/repoconfig.ts +85 -0
- package/src/onboard/toolnames.ts +2 -2
- package/src/piagentdir.ts +12 -0
- package/src/pilogin.ts +32 -16
- package/src/qcrbin.ts +16 -11
- package/src/reviewargs.ts +119 -0
- package/src/reviewcli.ts +6 -167
- package/src/reviewdetach.ts +107 -13
- package/src/scancli.ts +75 -826
- package/src/selfimprove.ts +90 -0
- package/src/session-command-supervisor.ts +41 -8
- package/src/setup/adapters.ts +13 -221
- package/src/setup/caserunner.ts +34 -273
- package/src/setup/engine.ts +62 -496
- package/src/setup/facts.ts +3 -627
- package/src/setup/findings.ts +3 -1264
- package/src/setup/presentation.ts +3 -18
- package/src/setup/scan.ts +3 -1033
- package/src/setup/scanbuild.ts +20 -114
- package/src/setup/scanlease.ts +3 -297
- package/src/setup/scanreport.ts +3 -373
- package/src/setup/scanrun.ts +3 -2268
- package/src/setup/scantree.ts +3 -259
- package/src/setup/stage2request.ts +3 -347
- package/src/setup/unitcut.ts +3 -523
- package/src/state.ts +126 -11
- package/src/takeover.ts +5 -0
- package/src/takeoverpi.ts +3 -2
- package/src/tui/alerts.ts +9 -2
- package/src/tui/board.ts +2 -2
- package/src/tui/companion.ts +2 -1
- package/src/tui/deploytab.ts +2 -2
- package/src/tui/index.ts +9 -6
- package/src/tui/memory.ts +3 -15
- package/src/tui/memoryurl.ts +22 -0
- package/src/tui/remote.ts +1 -1
- package/src/tui/route.ts +2 -2
- package/src/tui/setupstate.ts +20 -16
- package/src/tui/sshtriage.ts +1 -1
- package/src/verdicts.ts +13 -0
- package/src/wire.ts +9 -4
- package/src/workerbreaker.ts +41 -5
- package/src/workerworld.ts +9 -1
- package/dist/src/live/projection.js +0 -450
- package/dist/src/live/projection.js.map +0 -1
- package/dist/src/live/read.js +0 -60
- package/dist/src/live/read.js.map +0 -1
- package/dist/src/onboard/launch.js +0 -75
- package/dist/src/onboard/launch.js.map +0 -1
- package/dist/src/setup/ledger.js +0 -207
- package/dist/src/setup/ledger.js.map +0 -1
- package/dist/src/setup/stage2.js +0 -617
- package/dist/src/setup/stage2.js.map +0 -1
- package/dist/src/setup/textsniff.js +0 -89
- package/dist/src/setup/textsniff.js.map +0 -1
- package/src/live/projection.ts +0 -491
- package/src/live/read.ts +0 -86
- package/src/onboard/launch.ts +0 -103
- package/src/setup/ledger.ts +0 -324
- package/src/setup/stage2.ts +0 -926
- package/src/setup/textsniff.ts +0 -95
package/dist/src/ledgercheck.js
CHANGED
|
@@ -11,8 +11,14 @@
|
|
|
11
11
|
// its ledger — no review work, no posting, no verdict file. A second stale
|
|
12
12
|
// detection for the same round never nudges again: it logs
|
|
13
13
|
// `ledger_stale_unresolved`, the grade that wakes the overseer (the session
|
|
14
|
-
// ignored its one nudge)
|
|
15
|
-
//
|
|
14
|
+
// ignored its one nudge), once per nudge key; later checks at the same key
|
|
15
|
+
// are a quiet `ledger_stale_repeat` event. The once-mark is persisted BEFORE
|
|
16
|
+
// the inject, so even a crashed inject can never turn into a nudge loop.
|
|
17
|
+
//
|
|
18
|
+
// A recheck uphold (round-less) updates the ledger only "if the delta settled
|
|
19
|
+
// or re-opened a finding" (prompts/round-recheck.md), so on that path a header
|
|
20
|
+
// naming the head the PR was last reviewed at, or a head a recheck upheld
|
|
21
|
+
// since, is fresh too.
|
|
16
22
|
import { readFileSync } from "node:fs";
|
|
17
23
|
import { wakeOrHold } from "./wakes.js";
|
|
18
24
|
/** The mirrored snapshot's header (see packages/pi-plugin/extensions/ledger-pin.ts LEDGER_RE):
|
|
@@ -26,7 +32,7 @@ const MIN_SHA_PREFIX = 7;
|
|
|
26
32
|
* means the file was missing/unreadable. Anything but "fresh" is enforced
|
|
27
33
|
* identically (anomaly + capped nudge) — the distinction is for the record.
|
|
28
34
|
*/
|
|
29
|
-
export function classifyLedger(content, pr, headSha) {
|
|
35
|
+
export function classifyLedger(content, pr, headSha, alsoFresh = []) {
|
|
30
36
|
if (content === null)
|
|
31
37
|
return "missing";
|
|
32
38
|
const match = LEDGER_HEADER_RE.exec(content);
|
|
@@ -35,9 +41,24 @@ export function classifyLedger(content, pr, headSha) {
|
|
|
35
41
|
if (Number(match[1]) !== pr)
|
|
36
42
|
return "wrong_pr";
|
|
37
43
|
const written = match[2].toLowerCase();
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
const names = (sha) => {
|
|
45
|
+
const head = sha.toLowerCase();
|
|
46
|
+
return written === head || (written.length >= MIN_SHA_PREFIX && head.startsWith(written));
|
|
47
|
+
};
|
|
48
|
+
return names(headSha) || alsoFresh.some(names) ? "fresh" : "stale_sha";
|
|
49
|
+
}
|
|
50
|
+
/** The heads a recheck uphold may find in the header besides its own: the head
|
|
51
|
+
* of the PR's last verdicted round and every head a recheck upheld since. */
|
|
52
|
+
export function upheldLedgerHeads(store, pr) {
|
|
53
|
+
const reviewed = store
|
|
54
|
+
.roundsFor(pr)
|
|
55
|
+
.filter((r) => r.verdict !== null)
|
|
56
|
+
.sort((a, b) => b.round_no - a.round_no)[0];
|
|
57
|
+
const since = reviewed ? (reviewed.finished_at ?? reviewed.started_at) : null;
|
|
58
|
+
return [
|
|
59
|
+
...(reviewed?.head_sha ? [reviewed.head_sha] : []),
|
|
60
|
+
...store.recheckUpheldHeads(pr, since),
|
|
61
|
+
];
|
|
41
62
|
}
|
|
42
63
|
/** The re-nudge wake. Explicitly bookkeeping-only: the rewrite arrives
|
|
43
64
|
* OUTSIDE a round, and the session must not mistake it for review work. */
|
|
@@ -69,7 +90,7 @@ export async function enforceLedgerFreshness(deps, target) {
|
|
|
69
90
|
catch {
|
|
70
91
|
content = null;
|
|
71
92
|
}
|
|
72
|
-
const freshness = classifyLedger(content, pr, headSha);
|
|
93
|
+
const freshness = classifyLedger(content, pr, headSha, roundNo === null ? upheldLedgerHeads(store, pr) : []);
|
|
73
94
|
if (freshness === "fresh")
|
|
74
95
|
return "fresh";
|
|
75
96
|
const detail = `ledger ${freshness} at ${path}: expected header "LEDGER PR #${pr} @ ${headSha}"`;
|
|
@@ -107,9 +128,17 @@ export async function enforceLedgerFreshness(deps, target) {
|
|
|
107
128
|
if (store.ledgerNudgeSent(pr, key)) {
|
|
108
129
|
// Still stale AFTER the re-nudge: the session ignored its one nudge —
|
|
109
130
|
// this grade WAKES the overseer (the severity map in src/anomalies.ts), first-detection
|
|
110
|
-
// "ledger_stale" stays quiet (the nudge itself is the response).
|
|
111
|
-
|
|
112
|
-
|
|
131
|
+
// "ledger_stale" stays quiet (the nudge itself is the response). Raised
|
|
132
|
+
// once per key: a later check at the same key has no new nudge to give,
|
|
133
|
+
// so it is the quiet repeat event alone.
|
|
134
|
+
if (!store.ledgerRepeatSeen(pr, key))
|
|
135
|
+
store.logAnomaly("ledger_stale_unresolved", pr, roundNo, detail);
|
|
136
|
+
store.logEvent("ledger_stale_repeat", pr, {
|
|
137
|
+
key,
|
|
138
|
+
round_no: roundNo,
|
|
139
|
+
head_sha: headSha,
|
|
140
|
+
freshness,
|
|
141
|
+
});
|
|
113
142
|
return "already_nudged";
|
|
114
143
|
}
|
|
115
144
|
store.logAnomaly("ledger_stale", pr, roundNo, detail);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledgercheck.js","sourceRoot":"","sources":["../../src/ledgercheck.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,yEAAyE;AACzE,mEAAmE;AACnE,+EAA+E;AAC/E,oDAAoD;AACpD,uCAAuC;AACvC,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,2EAA2E;AAC3E,2DAA2D;AAC3D,4EAA4E;AAC5E,2EAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"ledgercheck.js","sourceRoot":"","sources":["../../src/ledgercheck.ts"],"names":[],"mappings":"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"}
|
package/dist/src/live/publish.js
CHANGED
|
@@ -14,7 +14,7 @@ import { mkdirSync, renameSync, writeFileSync } from "node:fs";
|
|
|
14
14
|
import { dirname, join } from "node:path";
|
|
15
15
|
import { appendProgressLog, progressLogPath, } from "@quickchatai/pi-quickreview/src/round-progress.js";
|
|
16
16
|
import { readLiveEvents } from "@quickchatai/pi-quickreview/src/live/events.js";
|
|
17
|
-
import { RoundProgressProjection } from "
|
|
17
|
+
import { RoundProgressProjection, } from "@quickchatai/pi-quickreview/src/live/projection.js";
|
|
18
18
|
/** `<root>/state/round-progress/pr-<n>.json`, where the supervisor reads it. */
|
|
19
19
|
export function roundProgressPath(root, pr) {
|
|
20
20
|
return join(root, "state", "round-progress", `pr-${pr}.json`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/live/publish.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,iEAAiE;AACjE,2EAA2E;AAC3E,4EAA4E;AAC5E,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,6EAA6E;AAC7E,EAAE;AACF,8EAA8E;AAC9E,8DAA8D;AAC9D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/live/publish.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,iEAAiE;AACjE,2EAA2E;AAC3E,4EAA4E;AAC5E,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,6EAA6E;AAC7E,EAAE;AACF,8EAA8E;AAC9E,8DAA8D;AAC9D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EACL,uBAAuB,GAExB,MAAM,oDAAoD,CAAC;AAE5D,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,EAAU;IACxD,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAWD,MAAM,OAAO,sBAAsB;IAQJ;IAPZ,UAAU,CAA0B;IAC7C,MAAM,GAAG,CAAC,CAAC;IACX,QAAQ,GAAG,CAAC,CAAC;IACb,eAAe,CAAqB;IACpC,kBAAkB,GAAG,CAAC,CAAC;IACd,IAAI,CAA4B;IAEjD,YAA6B,CAAgC;QAAhC,MAAC,GAAD,CAAC,CAA+B;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;0EACsE;IACtE,OAAO;QACL,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,eAAe;YAAE,OAAO;QAChE,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC3E,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACzB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,kBAAkB;YAAE,OAAO;QACrD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACxD,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC9B,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;CACF"}
|
package/dist/src/livecli.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
11
11
|
import { join, resolve } from "node:path";
|
|
12
12
|
import { LIVE_MAIN_FILE, lensLogName, readLiveEvents, } from "@quickchatai/pi-quickreview/src/live/events.js";
|
|
13
|
-
import { latestLiveRound, lensLogIds, listLiveRounds } from "
|
|
13
|
+
import { latestLiveRound, lensLogIds, listLiveRounds, } from "@quickchatai/pi-quickreview/src/live/read.js";
|
|
14
14
|
export const LIVE_USAGE = "usage: qcr live [RUN_ID | DIR] [--lens ID] [--round N] [--follow] [--json]";
|
|
15
15
|
const POLL_MS = 500;
|
|
16
16
|
const clock = (at) => at.slice(11, 19);
|
package/dist/src/livecli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"livecli.js","sourceRoot":"","sources":["../../src/livecli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"livecli.js","sourceRoot":"","sources":["../../src/livecli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// The login handover, in Node: what docker/entrypoint.sh's login mode does
|
|
2
|
+
// around pi's /login (login_handover_begin / login_handover_end), for a login
|
|
3
|
+
// made outside the container, by the home's re-login (src/home/loginowner.ts).
|
|
4
|
+
//
|
|
5
|
+
// On a single box the daemon's refresher owns the host pi home's auth.json
|
|
6
|
+
// while auto-review runs (one login per box). A login that rewrites
|
|
7
|
+
// that file beside it would race its refresh: whichever wrote last wins, and a
|
|
8
|
+
// refresh landing after the login would put the old grant back. So a login
|
|
9
|
+
// first asks the refresher to pause: it writes `auth.json.pause` and waits for
|
|
10
|
+
// `"paused": true` in the refresher's status file. A paused refresher neither
|
|
11
|
+
// refreshes nor writes, and KEEPS its lock, so no second refresher can start
|
|
12
|
+
// during the login. Releasing removes the pause file; the refresher re-reads
|
|
13
|
+
// the new login at once and resumes. A pause file left behind (the home killed
|
|
14
|
+
// mid-login) is lifted by the refresher after 15 minutes; while the hold
|
|
15
|
+
// lasts, the file's time is renewed so a slow device login is never cut off.
|
|
16
|
+
//
|
|
17
|
+
// Where no refresher holds the lock (auto-review off) nothing is paused: the
|
|
18
|
+
// home's own pi owns the login then, and its /login runs under pi's own lock.
|
|
19
|
+
// Nothing here reads or writes auth.json.
|
|
20
|
+
import { readFileSync, unlinkSync, utimesSync, writeFileSync } from "node:fs";
|
|
21
|
+
import { join } from "node:path";
|
|
22
|
+
import { loginLockHeld } from "./lock.js";
|
|
23
|
+
import { LOCK_FILE, PAUSE_FILE, STATUS_FILE } from "./refresher.js";
|
|
24
|
+
/** How long a login waits for the refresher to pause (the entrypoint's 60 s). */
|
|
25
|
+
export const PAUSE_WAIT_MS = 60_000;
|
|
26
|
+
/** How often the status file is read while waiting (the refresher looks at the
|
|
27
|
+
* pause file every 2 s). */
|
|
28
|
+
export const PAUSE_POLL_MS = 500;
|
|
29
|
+
/** How often a held pause file's time is renewed: well inside the
|
|
30
|
+
* refresher's 15 minutes. */
|
|
31
|
+
export const PAUSE_RENEW_MS = 5 * 60_000;
|
|
32
|
+
const realSleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
33
|
+
/** Does a refresher hold the login in `agentDir` now? null: unknown. */
|
|
34
|
+
export async function refresherRuns(agentDir, o = {}) {
|
|
35
|
+
const held = loginLockHeld(join(agentDir, LOCK_FILE), o.flockBin ? { flockBin: o.flockBin } : {});
|
|
36
|
+
if (held !== null)
|
|
37
|
+
return held;
|
|
38
|
+
return o.refresherRuns ? o.refresherRuns() : null;
|
|
39
|
+
}
|
|
40
|
+
/** The refresher's status file says it is paused. */
|
|
41
|
+
function pausedNow(statusPath) {
|
|
42
|
+
try {
|
|
43
|
+
const v = JSON.parse(readFileSync(statusPath, "utf8"));
|
|
44
|
+
return v?.paused === true;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function removeQuietly(path) {
|
|
51
|
+
try {
|
|
52
|
+
unlinkSync(path);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
/* lifted already */
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Pause the refresher of the login in `agentDir` for a login, when one runs.
|
|
60
|
+
* Answers once it is paused (or none runs), with the release; refuses when it
|
|
61
|
+
* does not pause in time (the pause file is then removed again) or when
|
|
62
|
+
* whether one runs cannot be told.
|
|
63
|
+
*/
|
|
64
|
+
export async function holdRefresher(agentDir, o = {}) {
|
|
65
|
+
const runs = await refresherRuns(agentDir, o);
|
|
66
|
+
if (runs === null)
|
|
67
|
+
return {
|
|
68
|
+
ok: false,
|
|
69
|
+
why: "whether auto-review's login refresher runs can't be told on this machine",
|
|
70
|
+
};
|
|
71
|
+
if (!runs)
|
|
72
|
+
return { ok: true, held: false, release: () => { } };
|
|
73
|
+
const pause = join(agentDir, PAUSE_FILE);
|
|
74
|
+
const status = join(agentDir, STATUS_FILE);
|
|
75
|
+
try {
|
|
76
|
+
writeFileSync(pause, "", { mode: 0o660 });
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
return {
|
|
80
|
+
ok: false,
|
|
81
|
+
why: `can't write ${pause}: ${err instanceof Error ? err.message : String(err)}`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const sleep = o.sleep ?? realSleep;
|
|
85
|
+
const now = o.now ?? Date.now;
|
|
86
|
+
const waitMs = o.waitMs ?? PAUSE_WAIT_MS;
|
|
87
|
+
const until = now() + waitMs;
|
|
88
|
+
while (!pausedNow(status)) {
|
|
89
|
+
if (now() >= until) {
|
|
90
|
+
removeQuietly(pause);
|
|
91
|
+
return {
|
|
92
|
+
ok: false,
|
|
93
|
+
why: `auto-review's login refresher did not pause within ${Math.round(waitMs / 1000)} s (${status})`,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
await sleep(o.pollMs ?? PAUSE_POLL_MS);
|
|
97
|
+
}
|
|
98
|
+
const renew = setInterval(() => {
|
|
99
|
+
try {
|
|
100
|
+
const t = new Date();
|
|
101
|
+
utimesSync(pause, t, t);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
/* lifted meanwhile */
|
|
105
|
+
}
|
|
106
|
+
}, o.renewMs ?? PAUSE_RENEW_MS);
|
|
107
|
+
renew.unref?.();
|
|
108
|
+
let released = false;
|
|
109
|
+
return {
|
|
110
|
+
ok: true,
|
|
111
|
+
held: true,
|
|
112
|
+
release: () => {
|
|
113
|
+
if (released)
|
|
114
|
+
return;
|
|
115
|
+
released = true;
|
|
116
|
+
clearInterval(renew);
|
|
117
|
+
removeQuietly(pause);
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=handover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handover.js","sourceRoot":"","sources":["../../../src/loginrefresh/handover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
// The single-instance lock: an exclusive flock on a SEPARATE lock file
|
|
2
|
-
// (`pihome/agent/
|
|
2
|
+
// (`pihome/agent/loginrefresh.lock`), held for the refresher's whole life.
|
|
3
|
+
//
|
|
4
|
+
// Why not `auth.json.lock`: that path is pi's. pi guards auth.json with
|
|
5
|
+
// proper-lockfile, whose lock is a DIRECTORY `<file>.lock` (mkdir; a stale one
|
|
6
|
+
// is rmdir'd). A plain file at that path makes every pi CLI fail at startup
|
|
7
|
+
// (`ENOTDIR: not a directory, rmdir '…/auth.json.lock'`), so this lock is named
|
|
8
|
+
// for this process and never `<anything pi locks>.lock`. Earlier builds did use
|
|
9
|
+
// `auth.json.lock`; `removeLegacyLockFile` clears what they left behind.
|
|
3
10
|
//
|
|
4
11
|
// Why not a lock on auth.json: every refresh replaces auth.json by rename
|
|
5
12
|
// (atomic.ts), so a lock on it stays on the old inode, a second refresher could
|
|
@@ -12,8 +19,8 @@
|
|
|
12
19
|
// lock lasts exactly as long as the pipe's write end does: release() closes it,
|
|
13
20
|
// and a refresher that is killed in any way closes it too (the kernel closes its
|
|
14
21
|
// descriptors), so a crash can never leave the lock held by an orphan.
|
|
15
|
-
import { spawn } from "node:child_process";
|
|
16
|
-
import { chmodSync, chownSync, closeSync, mkdirSync, openSync } from "node:fs";
|
|
22
|
+
import { spawn, spawnSync } from "node:child_process";
|
|
23
|
+
import { chmodSync, chownSync, closeSync, existsSync, lstatSync, mkdirSync, openSync, unlinkSync, } from "node:fs";
|
|
17
24
|
import { dirname } from "node:path";
|
|
18
25
|
/** flock's exit status when the lock is held by someone else (-E). */
|
|
19
26
|
export const LOCK_HELD_EXIT = 75;
|
|
@@ -90,4 +97,48 @@ export function acquireLoginLock(path, o = {}) {
|
|
|
90
97
|
});
|
|
91
98
|
});
|
|
92
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Remove the plain lock FILE an earlier refresher left at `path` (the old
|
|
102
|
+
* `auth.json.lock`, which is pi's proper-lockfile path and breaks every pi CLI
|
|
103
|
+
* while it is a file). Only a regular file is removed: a directory there is
|
|
104
|
+
* pi's own live lock and a symlink is not ours, so both are left alone. Throws
|
|
105
|
+
* `LoginLockHeld` when a refresher of an earlier build still holds a flock on
|
|
106
|
+
* it (the two would otherwise run side by side on different lock files).
|
|
107
|
+
*/
|
|
108
|
+
export function removeLegacyLockFile(path, o = {}) {
|
|
109
|
+
let isFile;
|
|
110
|
+
try {
|
|
111
|
+
isFile = lstatSync(path).isFile();
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return "absent";
|
|
115
|
+
}
|
|
116
|
+
if (!isFile)
|
|
117
|
+
return "not-a-file";
|
|
118
|
+
const probe = spawnSync(o.flockBin ?? "flock", ["-n", "-E", String(LOCK_HELD_EXIT), path, "true"], { stdio: "ignore" });
|
|
119
|
+
if (probe.status === LOCK_HELD_EXIT)
|
|
120
|
+
throw new LoginLockHeld(path);
|
|
121
|
+
try {
|
|
122
|
+
unlinkSync(path);
|
|
123
|
+
return "removed";
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
return err.code === "ENOENT" ? "absent" : "unremovable";
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Does a refresher hold the lock at `path` now? true or false; null when it
|
|
131
|
+
* cannot be told (no flock on this machine, or flock failed). A probe, never a
|
|
132
|
+
* holder: no lock file is created where there is none (none: nobody holds it).
|
|
133
|
+
*/
|
|
134
|
+
export function loginLockHeld(path, o = {}) {
|
|
135
|
+
if (!existsSync(path))
|
|
136
|
+
return false;
|
|
137
|
+
const probe = spawnSync(o.flockBin ?? "flock", ["-n", "-E", String(LOCK_HELD_EXIT), path, "true"], { stdio: "ignore" });
|
|
138
|
+
if (probe.error)
|
|
139
|
+
return null;
|
|
140
|
+
if (probe.status === LOCK_HELD_EXIT)
|
|
141
|
+
return true;
|
|
142
|
+
return probe.status === 0 ? false : null;
|
|
143
|
+
}
|
|
93
144
|
//# sourceMappingURL=lock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/loginrefresh/lock.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wEAAwE;AACxE,EAAE;AACF,0EAA0E;AAC1E,gFAAgF;AAChF,gFAAgF;AAChF,0EAA0E;AAC1E,2DAA2D;AAC3D,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,uEAAuE;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/loginrefresh/lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,18 @@
|
|
|
6
6
|
// (main.ts) the daemon spawns and supervises by path, so the daemon imports
|
|
7
7
|
// neither pi nor src/engine/.
|
|
8
8
|
//
|
|
9
|
-
// Lock an exclusive flock on `
|
|
10
|
-
// a second refresher is refused, before and after any refresh.
|
|
9
|
+
// Lock an exclusive flock on `loginrefresh.lock` for its whole life (lock.ts);
|
|
10
|
+
// a second refresher is refused, before and after any refresh. Never
|
|
11
|
+
// `auth.json.lock`: that is pi's own proper-lockfile path (a
|
|
12
|
+
// directory), and a file there breaks every pi CLI. A plain file an
|
|
13
|
+
// earlier build left there is removed at start.
|
|
14
|
+
// pi lock not taken: the refresher does not hold pi's proper-lockfile lock
|
|
15
|
+
// around its read-refresh-write (proper-lockfile is pi's dependency,
|
|
16
|
+
// not ours). It needs none while it is healthy: it refreshes far
|
|
17
|
+
// ahead of pi's own window, so a pi on this file has nothing to
|
|
18
|
+
// refresh, and a login goes through the entrypoint's pause below. A
|
|
19
|
+
// raw `pi` + `/login` that bypasses the pause can lose its new
|
|
20
|
+
// login to a refresh that lands in the same moment.
|
|
11
21
|
// Refresh every 10 minutes, any OAuth entry that is inside pi's refresh
|
|
12
22
|
// window plus a margin longer than the longest worker cap is
|
|
13
23
|
// refreshed through `deps.refresh` (pi-ai's own, pirefresh.ts) and
|
|
@@ -26,9 +36,12 @@
|
|
|
26
36
|
import { existsSync, readFileSync, statSync, unlinkSync } from "node:fs";
|
|
27
37
|
import { join } from "node:path";
|
|
28
38
|
import { writeFileAtomic } from "./atomic.js";
|
|
29
|
-
import { acquireLoginLock } from "./lock.js";
|
|
39
|
+
import { acquireLoginLock, removeLegacyLockFile } from "./lock.js";
|
|
30
40
|
export const AUTH_FILE = "auth.json";
|
|
31
|
-
|
|
41
|
+
/** The single-instance lock. Not `${AUTH_FILE}.lock`: that is pi's (lock.ts). */
|
|
42
|
+
export const LOCK_FILE = "loginrefresh.lock";
|
|
43
|
+
/** Where earlier builds kept the lock: pi's proper-lockfile path, cleared at start. */
|
|
44
|
+
export const LEGACY_LOCK_FILE = "auth.json.lock";
|
|
32
45
|
export const PAUSE_FILE = "auth.json.pause";
|
|
33
46
|
export const STATUS_FILE = "loginrefresh.status.json";
|
|
34
47
|
/** How often the expiry is checked. */
|
|
@@ -93,10 +106,25 @@ export class LoginRefresher {
|
|
|
93
106
|
* keep looking.
|
|
94
107
|
*/
|
|
95
108
|
static async start(deps, o = {}) {
|
|
109
|
+
const flock = deps.flockBin ? { flockBin: deps.flockBin } : {};
|
|
96
110
|
const lock = await acquireLoginLock(join(deps.agentDir, LOCK_FILE), {
|
|
97
|
-
...
|
|
111
|
+
...flock,
|
|
98
112
|
gid: deps.gid,
|
|
99
113
|
});
|
|
114
|
+
const legacy = join(deps.agentDir, LEGACY_LOCK_FILE);
|
|
115
|
+
let outcome;
|
|
116
|
+
try {
|
|
117
|
+
outcome = removeLegacyLockFile(legacy, flock);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
// a refresher of an earlier build still runs on the old lock
|
|
121
|
+
await lock.release();
|
|
122
|
+
throw err;
|
|
123
|
+
}
|
|
124
|
+
if (outcome === "removed")
|
|
125
|
+
deps.log(`login refresh: removed the old lock file ${legacy} (it is pi's lock path)`);
|
|
126
|
+
if (outcome === "unremovable")
|
|
127
|
+
deps.log(`login refresh: could not remove the old lock file ${legacy}; pi fails until it goes`);
|
|
100
128
|
const r = new LoginRefresher(deps, lock);
|
|
101
129
|
r.publish();
|
|
102
130
|
await r.tick();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresher.js","sourceRoot":"","sources":["../../../src/loginrefresh/refresher.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,EAAE;AACF,gFAAgF;AAChF,gGAAgG;AAChG,+EAA+E;AAC/E,4EAA4E;AAC5E,8BAA8B;AAC9B,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"refresher.js","sourceRoot":"","sources":["../../../src/loginrefresh/refresher.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,9 +21,26 @@
|
|
|
21
21
|
// second refresher would rotate the refresh token under them.
|
|
22
22
|
import { existsSync, readFileSync } from "node:fs";
|
|
23
23
|
import { spawn as nodeSpawn } from "node:child_process";
|
|
24
|
-
import { join } from "node:path";
|
|
24
|
+
import { isAbsolute, join } from "node:path";
|
|
25
25
|
import { foldChildLines, restartDelayMs, terminateChild, } from "../openviking/supervisor.js";
|
|
26
26
|
import { LOCK_HELD_EXIT } from "./lock.js";
|
|
27
|
+
/** Names the login's dir when it is not pi's agent dir. The single box's
|
|
28
|
+
* shared login (one login per box): the home's switch-on mounts the
|
|
29
|
+
* host pi home's agent dir at CONTAINER_LOGIN_DIR (docker-compose.yml,
|
|
30
|
+
* QCR_PI_LOGIN_DIR in the project .env) and the compose file names it here.
|
|
31
|
+
* Only the login moves: the refresher keeps auth.json there and every worker
|
|
32
|
+
* borrows from there, while settings, models.json and the lens agents stay in
|
|
33
|
+
* the container's own agent dir, whose settings the entrypoint provisions and
|
|
34
|
+
* which must never be the person's own. */
|
|
35
|
+
export const LOGIN_DIR_ENV = "QCR_LOGIN_DIR";
|
|
36
|
+
/** Where docker-compose.yml mounts the host's login. */
|
|
37
|
+
export const CONTAINER_LOGIN_DIR = "/opt/qcr/login";
|
|
38
|
+
/** The login's dir: `QCR_LOGIN_DIR` when it is an absolute path, else pi's
|
|
39
|
+
* agent dir (the login volume, as before). */
|
|
40
|
+
export function loginDirOf(env, agentDir) {
|
|
41
|
+
const set = (env[LOGIN_DIR_ENV] ?? "").trim();
|
|
42
|
+
return set !== "" && isAbsolute(set) ? set : agentDir;
|
|
43
|
+
}
|
|
27
44
|
/** The restart ladder, ms: a refresher that cannot start (lock held, config) is
|
|
28
45
|
* retried slowly; one that crashed after a good run is retried at once. */
|
|
29
46
|
export const LOGIN_RESTART_LADDER_MS = [2_000, 10_000, 60_000];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../../src/loginrefresh/supervisor.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,4EAA4E;AAC5E,sEAAsE;AACtE,iEAAiE;AACjE,4EAA4E;AAC5E,4EAA4E;AAC5E,uDAAuD;AACvD,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,+EAA+E;AAC/E,4EAA4E;AAC5E,wCAAwC;AACxC,wEAAwE;AACxE,6EAA6E;AAC7E,oEAAoE;AACpE,EAAE;AACF,gFAAgF;AAChF,2EAA2E;AAC3E,8DAA8D;AAC9D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../../src/loginrefresh/supervisor.ts"],"names":[],"mappings":"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"}
|