@intentic/machine 1.325.0 → 1.327.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 +387 -33
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +2 -0
- package/dist/commands.js.map +1 -1
- package/dist/daemon-base.d.ts.map +1 -1
- package/dist/daemon-base.js +2 -3
- package/dist/daemon-base.js.map +1 -1
- package/dist/device/audit.d.ts +2 -0
- package/dist/device/audit.d.ts.map +1 -1
- package/dist/device/audit.js +23 -3
- package/dist/device/audit.js.map +1 -1
- package/dist/device/commands.d.ts +4 -0
- package/dist/device/commands.d.ts.map +1 -1
- package/dist/device/commands.js +7 -2
- package/dist/device/commands.js.map +1 -1
- package/dist/device/connection.d.ts +12 -1
- package/dist/device/connection.d.ts.map +1 -1
- package/dist/device/connection.js +77 -3
- package/dist/device/connection.js.map +1 -1
- package/dist/device/grant.d.ts +52 -0
- package/dist/device/grant.d.ts.map +1 -1
- package/dist/device/loopback-catch.d.ts +1 -1
- package/dist/device/loopback-catch.d.ts.map +1 -1
- package/dist/device/loopback-catch.js +5 -30
- package/dist/device/loopback-catch.js.map +1 -1
- package/dist/device/mcp.d.ts.map +1 -1
- package/dist/device/mcp.js +190 -30
- package/dist/device/mcp.js.map +1 -1
- package/dist/device/router.d.ts +52 -0
- package/dist/device/router.d.ts.map +1 -1
- package/dist/device/router.js +21 -0
- package/dist/device/router.js.map +1 -1
- package/dist/device/sandbox-rounds/auto-backup.d.ts +3 -1
- package/dist/device/sandbox-rounds/auto-backup.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/auto-backup.js +14 -5
- package/dist/device/sandbox-rounds/auto-backup.js.map +1 -1
- package/dist/device/sandbox-rounds/auto-prepare.d.ts +3 -1
- package/dist/device/sandbox-rounds/auto-prepare.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/auto-prepare.js +3 -3
- package/dist/device/sandbox-rounds/auto-prepare.js.map +1 -1
- package/dist/device/sandbox-rounds/in-flight.d.ts.map +1 -0
- package/dist/device/sandbox-rounds/in-flight.js.map +1 -0
- package/dist/device/sandbox-rounds/keeper.d.ts +26 -4
- package/dist/device/sandbox-rounds/keeper.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/keeper.js +129 -31
- package/dist/device/sandbox-rounds/keeper.js.map +1 -1
- package/dist/device/sandbox-rounds/probation-watch.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/probation-watch.js.map +1 -1
- package/dist/device/tools/android-parse.d.ts +69 -0
- package/dist/device/tools/android-parse.d.ts.map +1 -0
- package/dist/device/tools/android-parse.js +391 -0
- package/dist/device/tools/android-parse.js.map +1 -0
- package/dist/device/tools/android.d.ts +71 -0
- package/dist/device/tools/android.d.ts.map +1 -0
- package/dist/device/tools/android.js +534 -0
- package/dist/device/tools/android.js.map +1 -0
- package/dist/device/tools/apps.d.ts +3 -3
- package/dist/device/tools/apps.d.ts.map +1 -1
- package/dist/device/tools/apps.js +16 -6
- package/dist/device/tools/apps.js.map +1 -1
- package/dist/device/tools/describe.d.ts.map +1 -1
- package/dist/device/tools/describe.js +10 -5
- package/dist/device/tools/describe.js.map +1 -1
- package/dist/device/tools/device.d.ts +9 -15
- package/dist/device/tools/device.d.ts.map +1 -1
- package/dist/device/tools/device.js +34 -58
- package/dist/device/tools/device.js.map +1 -1
- package/dist/device/tools/elements.d.ts +13 -0
- package/dist/device/tools/elements.d.ts.map +1 -0
- package/dist/device/tools/elements.js +84 -0
- package/dist/device/tools/elements.js.map +1 -0
- package/dist/device/tools/ic-binary.d.ts +1 -0
- package/dist/device/tools/ic-binary.d.ts.map +1 -1
- package/dist/device/tools/ic-binary.js +40 -17
- package/dist/device/tools/ic-binary.js.map +1 -1
- package/dist/device/tools/sandboxes.d.ts +1 -1
- package/dist/device/tools/sandboxes.d.ts.map +1 -1
- package/dist/device/tools/sandboxes.js +9 -8
- package/dist/device/tools/sandboxes.js.map +1 -1
- package/dist/device/tools/shell.js +1 -1
- package/dist/device/tools/shell.js.map +1 -1
- package/dist/device/tools/view.d.ts +4 -0
- package/dist/device/tools/view.d.ts.map +1 -0
- package/dist/device/tools/view.js +4 -0
- package/dist/device/tools/view.js.map +1 -0
- package/dist/environments/children.js +1 -1
- package/dist/environments/children.js.map +1 -1
- package/dist/environments/commands.js +1 -1
- package/dist/environments/commands.js.map +1 -1
- package/dist/environments/crossing.d.ts +1 -1
- package/dist/environments/crossing.d.ts.map +1 -1
- package/dist/environments/machine.js +1 -1
- package/dist/environments/machine.js.map +1 -1
- package/dist/environments/wsl.d.ts.map +1 -0
- package/dist/environments/wsl.js.map +1 -0
- package/dist/resident.d.ts.map +1 -1
- package/dist/resident.js +14 -8
- package/dist/resident.js.map +1 -1
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +16 -13
- package/dist/status.js.map +1 -1
- package/dist/sync/attach-commands.d.ts +39 -0
- package/dist/sync/attach-commands.d.ts.map +1 -0
- package/dist/sync/attach-commands.js +152 -0
- package/dist/sync/attach-commands.js.map +1 -0
- package/dist/sync/commands.d.ts +8 -4
- package/dist/sync/commands.d.ts.map +1 -1
- package/dist/sync/commands.js +137 -79
- package/dist/sync/commands.js.map +1 -1
- package/dist/sync/config.d.ts +43 -9
- package/dist/sync/config.d.ts.map +1 -1
- package/dist/sync/config.js +86 -41
- package/dist/sync/config.js.map +1 -1
- package/dist/sync/endpoint.d.ts +8 -1
- package/dist/sync/endpoint.d.ts.map +1 -1
- package/dist/sync/endpoint.js +41 -1
- package/dist/sync/endpoint.js.map +1 -1
- package/dist/sync/environment.d.ts +11 -0
- package/dist/sync/environment.d.ts.map +1 -0
- package/dist/sync/environment.js +48 -0
- package/dist/sync/environment.js.map +1 -0
- package/dist/sync/exec.d.ts +1 -0
- package/dist/sync/exec.d.ts.map +1 -1
- package/dist/sync/exec.js +4 -5
- package/dist/sync/exec.js.map +1 -1
- package/dist/sync/folders.d.ts +3 -2
- package/dist/sync/folders.d.ts.map +1 -1
- package/dist/sync/folders.js +55 -2
- package/dist/sync/folders.js.map +1 -1
- package/dist/sync/forget-command.d.ts +22 -0
- package/dist/sync/forget-command.d.ts.map +1 -0
- package/dist/sync/forget-command.js +95 -0
- package/dist/sync/forget-command.js.map +1 -0
- package/dist/sync/git-bridge.d.ts +6 -0
- package/dist/sync/git-bridge.d.ts.map +1 -1
- package/dist/sync/git-bridge.js +64 -1
- package/dist/sync/git-bridge.js.map +1 -1
- package/dist/sync/gone-watch.d.ts +18 -0
- package/dist/sync/gone-watch.d.ts.map +1 -0
- package/dist/sync/gone-watch.js +142 -0
- package/dist/sync/gone-watch.js.map +1 -0
- package/dist/sync/gone.d.ts +22 -0
- package/dist/sync/gone.d.ts.map +1 -0
- package/dist/sync/gone.js +60 -0
- package/dist/sync/gone.js.map +1 -0
- package/dist/sync/local-sandboxes.d.ts +6 -0
- package/dist/sync/local-sandboxes.d.ts.map +1 -0
- package/dist/sync/local-sandboxes.js +26 -0
- package/dist/sync/local-sandboxes.js.map +1 -0
- package/dist/sync/mirror.d.ts +7 -0
- package/dist/sync/mirror.d.ts.map +1 -1
- package/dist/sync/mirror.js +434 -111
- package/dist/sync/mirror.js.map +1 -1
- package/dist/sync/mutagen.d.ts +50 -18
- package/dist/sync/mutagen.d.ts.map +1 -1
- package/dist/sync/mutagen.js +294 -80
- package/dist/sync/mutagen.js.map +1 -1
- package/dist/sync/project/adopt.d.ts +18 -0
- package/dist/sync/project/adopt.d.ts.map +1 -0
- package/dist/sync/project/adopt.js +86 -0
- package/dist/sync/project/adopt.js.map +1 -0
- package/dist/sync/{project-commands.d.ts → project/project-commands.d.ts} +4 -1
- package/dist/sync/project/project-commands.d.ts.map +1 -0
- package/dist/sync/{project-commands.js → project/project-commands.js} +10 -10
- package/dist/sync/project/project-commands.js.map +1 -0
- package/dist/sync/project/project-delivery.d.ts +23 -0
- package/dist/sync/project/project-delivery.d.ts.map +1 -0
- package/dist/sync/project/project-delivery.js +315 -0
- package/dist/sync/project/project-delivery.js.map +1 -0
- package/dist/sync/{project-files.d.ts → project/project-files.d.ts} +1 -1
- package/dist/sync/project/project-files.d.ts.map +1 -0
- package/dist/sync/{project-files.js → project/project-files.js} +5 -2
- package/dist/sync/project/project-files.js.map +1 -0
- package/dist/sync/{project-local.d.ts → project/project-local.d.ts} +1 -1
- package/dist/sync/project/project-local.d.ts.map +1 -0
- package/dist/sync/{project-local.js → project/project-local.js} +1 -1
- package/dist/sync/project/project-local.js.map +1 -0
- package/dist/sync/{project-remote.d.ts → project/project-remote.d.ts} +1 -1
- package/dist/sync/project/project-remote.d.ts.map +1 -0
- package/dist/sync/{project-remote.js → project/project-remote.js} +1 -1
- package/dist/sync/project/project-remote.js.map +1 -0
- package/dist/sync/{project-transfer.d.ts → project/project-transfer.d.ts} +20 -6
- package/dist/sync/project/project-transfer.d.ts.map +1 -0
- package/dist/sync/{project-transfer.js → project/project-transfer.js} +26 -23
- package/dist/sync/project/project-transfer.js.map +1 -0
- package/dist/sync/report.d.ts.map +1 -1
- package/dist/sync/report.js +13 -7
- package/dist/sync/report.js.map +1 -1
- package/dist/sync/restore-points.d.ts +15 -11
- package/dist/sync/restore-points.d.ts.map +1 -1
- package/dist/sync/restore-points.js +25 -24
- package/dist/sync/restore-points.js.map +1 -1
- package/dist/sync/retire.d.ts +14 -0
- package/dist/sync/retire.d.ts.map +1 -0
- package/dist/sync/retire.js +66 -0
- package/dist/sync/retire.js.map +1 -0
- package/dist/sync/siblings.d.ts +27 -0
- package/dist/sync/siblings.d.ts.map +1 -0
- package/dist/sync/siblings.js +112 -0
- package/dist/sync/siblings.js.map +1 -0
- package/dist/sync/ssh.d.ts +1 -0
- package/dist/sync/ssh.d.ts.map +1 -1
- package/dist/sync/ssh.js +37 -23
- package/dist/sync/ssh.js.map +1 -1
- package/dist/sync/tunnel.d.ts +6 -2
- package/dist/sync/tunnel.d.ts.map +1 -1
- package/dist/sync/tunnel.js +45 -48
- package/dist/sync/tunnel.js.map +1 -1
- package/dist/upkeep/doctor.d.ts +5 -0
- package/dist/upkeep/doctor.d.ts.map +1 -0
- package/dist/upkeep/doctor.js +73 -0
- package/dist/upkeep/doctor.js.map +1 -0
- package/dist/upkeep/entry.d.ts +26 -0
- package/dist/upkeep/entry.d.ts.map +1 -0
- package/dist/upkeep/entry.js +2 -0
- package/dist/upkeep/entry.js.map +1 -0
- package/dist/upkeep/login.d.ts +15 -0
- package/dist/upkeep/login.d.ts.map +1 -0
- package/dist/upkeep/login.js +128 -0
- package/dist/upkeep/login.js.map +1 -0
- package/dist/upkeep/manifest.d.ts +3 -0
- package/dist/upkeep/manifest.d.ts.map +1 -0
- package/dist/upkeep/manifest.js +6 -0
- package/dist/upkeep/manifest.js.map +1 -0
- package/dist/upkeep/reconcile.d.ts +45 -0
- package/dist/upkeep/reconcile.d.ts.map +1 -0
- package/dist/upkeep/reconcile.js +159 -0
- package/dist/upkeep/reconcile.js.map +1 -0
- package/dist/upkeep/retention.d.ts +10 -0
- package/dist/upkeep/retention.d.ts.map +1 -0
- package/dist/upkeep/retention.js +71 -0
- package/dist/upkeep/retention.js.map +1 -0
- package/dist/upkeep/retired.d.ts +12 -0
- package/dist/upkeep/retired.d.ts.map +1 -0
- package/dist/upkeep/retired.js +125 -0
- package/dist/upkeep/retired.js.map +1 -0
- package/dist/upkeep/second-ic.d.ts +4 -0
- package/dist/upkeep/second-ic.d.ts.map +1 -0
- package/dist/upkeep/second-ic.js +36 -0
- package/dist/upkeep/second-ic.js.map +1 -0
- package/dist/upkeep/trash.d.ts +9 -0
- package/dist/upkeep/trash.d.ts.map +1 -0
- package/dist/upkeep/trash.js +77 -0
- package/dist/upkeep/trash.js.map +1 -0
- package/dist/watchdog.d.ts +13 -0
- package/dist/watchdog.d.ts.map +1 -0
- package/dist/watchdog.js +38 -0
- package/dist/watchdog.js.map +1 -0
- package/package.json +9 -9
- package/dist/autostart/legacy-autostart.d.ts +0 -4
- package/dist/autostart/legacy-autostart.d.ts.map +0 -1
- package/dist/autostart/legacy-autostart.js +0 -33
- package/dist/autostart/legacy-autostart.js.map +0 -1
- package/dist/device/tools/in-flight.d.ts.map +0 -1
- package/dist/device/tools/in-flight.js.map +0 -1
- package/dist/sync/project-commands.d.ts.map +0 -1
- package/dist/sync/project-commands.js.map +0 -1
- package/dist/sync/project-files.d.ts.map +0 -1
- package/dist/sync/project-files.js.map +0 -1
- package/dist/sync/project-local.d.ts.map +0 -1
- package/dist/sync/project-local.js.map +0 -1
- package/dist/sync/project-remote.d.ts.map +0 -1
- package/dist/sync/project-remote.js.map +0 -1
- package/dist/sync/project-transfer.d.ts.map +0 -1
- package/dist/sync/project-transfer.js.map +0 -1
- package/dist/wsl.d.ts.map +0 -1
- package/dist/wsl.js.map +0 -1
- /package/dist/device/{tools → sandbox-rounds}/in-flight.d.ts +0 -0
- /package/dist/device/{tools → sandbox-rounds}/in-flight.js +0 -0
- /package/dist/{wsl.d.ts → environments/wsl.d.ts} +0 -0
- /package/dist/{wsl.js → environments/wsl.js} +0 -0
package/dist/sync/tunnel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/sync/tunnel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAA4B,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/sync/tunnel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type CommandContext } from "@stricli/core";
|
|
2
|
+
import { type UpkeepItem } from "./reconcile.js";
|
|
3
|
+
export declare const itemLine: (item: UpkeepItem) => string;
|
|
4
|
+
export declare const doctor: import("@stricli/core").Command<CommandContext>;
|
|
5
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/upkeep/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGlE,OAAO,EAA0B,KAAK,UAAU,EAAsB,MAAM,gBAAgB,CAAC;AA+B7F,eAAO,MAAM,QAAQ,SAAU,UAAU,KAAG,MAO3C,CAAC;AAMF,eAAO,MAAM,MAAM,iDAyCjB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { buildCommand } from "@stricli/core";
|
|
2
|
+
import { readResident } from "../supervision.js";
|
|
3
|
+
import { MANIFEST } from "./manifest.js";
|
|
4
|
+
import { runUpkeep, summaryLine } from "./reconcile.js";
|
|
5
|
+
const VERB = {
|
|
6
|
+
retire: "retire",
|
|
7
|
+
trash: "move to the trash",
|
|
8
|
+
prune: "delete",
|
|
9
|
+
rotate: "set aside",
|
|
10
|
+
repair: "write again",
|
|
11
|
+
report: "report",
|
|
12
|
+
};
|
|
13
|
+
const DONE = {
|
|
14
|
+
retire: "retired",
|
|
15
|
+
trash: "moved to the trash",
|
|
16
|
+
prune: "deleted",
|
|
17
|
+
rotate: "set aside",
|
|
18
|
+
repair: "written again",
|
|
19
|
+
report: "reported",
|
|
20
|
+
};
|
|
21
|
+
export const itemLine = (item) => {
|
|
22
|
+
const said = {
|
|
23
|
+
fixed: `${DONE[item.action]}: ${item.what}`,
|
|
24
|
+
"would-fix": `would ${VERB[item.action]}: ${item.what}`,
|
|
25
|
+
skipped: `left: ${item.what} — ${item.why ?? ""}`,
|
|
26
|
+
};
|
|
27
|
+
return ` ${said[item.outcome]}`;
|
|
28
|
+
};
|
|
29
|
+
const reasonLines = (items) => MANIFEST.filter((entry) => items.some((item) => item.id === entry.id)).map((entry) => ` ${entry.id}: ${entry.reason}`);
|
|
30
|
+
export const doctor = buildCommand({
|
|
31
|
+
docs: { brief: "Check this environment for what older releases left and stores past their bounds; --fix puts it right" },
|
|
32
|
+
parameters: {
|
|
33
|
+
flags: {
|
|
34
|
+
fix: { kind: "boolean", brief: "Do what the check finds, as the agent's own pass every six hours would", default: false },
|
|
35
|
+
json: { kind: "boolean", brief: "Print one JSON object: the counts, and every line found", default: false },
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
async func(flags) {
|
|
39
|
+
const out = (message) => void this.process.stdout.write(`${message}\n`);
|
|
40
|
+
const resident = await readResident();
|
|
41
|
+
const run = await runUpkeep({ fix: flags.fix, resident: false, supervisor: resident?.supervisor, log: flags.json ? () => undefined : out });
|
|
42
|
+
if ("busy" in run) {
|
|
43
|
+
const why = `the agent's own upkeep pass is running (pid ${run.busy}); try again in a minute.`;
|
|
44
|
+
if (flags.json) {
|
|
45
|
+
out(JSON.stringify({ ok: false, error: why }));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
out(why);
|
|
49
|
+
}
|
|
50
|
+
process.exitCode = 1;
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (flags.json) {
|
|
54
|
+
out(JSON.stringify({ ok: true, fix: flags.fix, ...run.report, items: run.items }));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
for (const item of run.items) {
|
|
58
|
+
out(itemLine(item));
|
|
59
|
+
}
|
|
60
|
+
const reasons = reasonLines(run.items);
|
|
61
|
+
if (reasons.length > 0) {
|
|
62
|
+
out("Why:");
|
|
63
|
+
for (const line of reasons) {
|
|
64
|
+
out(line);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
out(summaryLine(run.report, flags.fix));
|
|
68
|
+
if (!flags.fix && run.items.some((item) => item.outcome === "would-fix")) {
|
|
69
|
+
out("Run `intentic-machine doctor --fix` to do it now; the agent does it by itself within six hours.");
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/upkeep/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Log } from "@intentic/local-agent";
|
|
2
|
+
export type UpkeepAction = "retire" | "trash" | "prune" | "rotate" | "repair" | "report";
|
|
3
|
+
export interface UpkeepContext {
|
|
4
|
+
readonly log: Log;
|
|
5
|
+
readonly now: number;
|
|
6
|
+
readonly home: string;
|
|
7
|
+
readonly base: string;
|
|
8
|
+
readonly platform: NodeJS.Platform;
|
|
9
|
+
readonly supervisor: string | undefined;
|
|
10
|
+
readonly resident: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface Finding {
|
|
13
|
+
readonly what: string;
|
|
14
|
+
readonly act?: () => Promise<void>;
|
|
15
|
+
readonly why?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface UpkeepEntry {
|
|
18
|
+
readonly id: string;
|
|
19
|
+
readonly kind: string;
|
|
20
|
+
readonly action: UpkeepAction;
|
|
21
|
+
readonly reason: string;
|
|
22
|
+
readonly once?: boolean;
|
|
23
|
+
readonly formerMarker?: string;
|
|
24
|
+
readonly find: (context: UpkeepContext) => Promise<readonly Finding[]>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=entry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/upkeep/entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAejD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAIzF,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAGnC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAExC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC9B;AAID,MAAM,WAAW,OAAO;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAExB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAE9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAGxB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;CAC1E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/upkeep/entry.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type EntryInspection } from "@intentic/local-agent";
|
|
2
|
+
import type { Finding, UpkeepEntry } from "./entry.js";
|
|
3
|
+
export declare const loginEntryFinding: (inspection: EntryInspection, repair: () => Promise<void>) => Finding | undefined;
|
|
4
|
+
export declare const runValueData: (output: string, name: string) => string | undefined;
|
|
5
|
+
export interface MutagenRunReading {
|
|
6
|
+
readonly pairings: number | Error;
|
|
7
|
+
readonly value: string | undefined;
|
|
8
|
+
readonly own: string;
|
|
9
|
+
readonly ownInUse: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const mutagenRunDecision: (reading: MutagenRunReading) => "retire" | "repair" | {
|
|
12
|
+
readonly why: string;
|
|
13
|
+
} | undefined;
|
|
14
|
+
export declare const LOGIN_ENTRIES: readonly UpkeepEntry[];
|
|
15
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/upkeep/login.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmC,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM9F,OAAO,KAAK,EAAE,OAAO,EAAiB,WAAW,EAAE,MAAM,YAAY,CAAC;AA2BtE,eAAO,MAAM,iBAAiB,eAAgB,eAAe,UAAU,MAAM,OAAO,CAAC,IAAI,CAAC,KAAG,OAAO,GAAG,SAQtG,CAAC;AAmCF,eAAO,MAAM,YAAY,WAAY,MAAM,QAAQ,MAAM,KAAG,MAAM,GAAG,SAQpE,CAAC;AAQF,MAAM,WAAW,iBAAiB;IAE9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IAElC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC9B;AAGD,eAAO,MAAM,kBAAkB,YAAa,iBAAiB,KAAG,QAAQ,GAAG,QAAQ,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAahH,CAAC;AA2DF,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAAkD,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { autostart, clearWindowsRunValue } from "@intentic/local-agent";
|
|
5
|
+
import { MACHINE_AUTOSTART } from "../autostart/autostart.js";
|
|
6
|
+
import { agentPath } from "../release.js";
|
|
7
|
+
import { machineLauncher } from "../supervision.js";
|
|
8
|
+
import { readState } from "../sync/config.js";
|
|
9
|
+
import { MUTAGEN_RUN_VALUE, ownMutagenPath, registerMutagenAutostart } from "../sync/mutagen.js";
|
|
10
|
+
const ENTRY_SUPERVISORS = new Set(["task", "run-key", "systemd", "launchd", "xdg"]);
|
|
11
|
+
const entryName = (inspection) => {
|
|
12
|
+
switch (inspection.kind) {
|
|
13
|
+
case "task":
|
|
14
|
+
return `the "${MACHINE_AUTOSTART.windowsRunValue}" logon task${inspection.drift === undefined ? "" : ` (differs in ${inspection.drift.join(", ")})`}`;
|
|
15
|
+
case "run-key":
|
|
16
|
+
return `the "${MACHINE_AUTOSTART.windowsRunValue}" Run value`;
|
|
17
|
+
case "systemd":
|
|
18
|
+
return `${MACHINE_AUTOSTART.id}.service`;
|
|
19
|
+
case "launchd":
|
|
20
|
+
return `the ${MACHINE_AUTOSTART.launchAgent?.label ?? MACHINE_AUTOSTART.id} LaunchAgent`;
|
|
21
|
+
default:
|
|
22
|
+
return `${MACHINE_AUTOSTART.id}.desktop`;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
export const loginEntryFinding = (inspection, repair) => {
|
|
26
|
+
if (inspection.state === "stale" || inspection.state === "missing") {
|
|
27
|
+
return { what: entryName(inspection), act: repair };
|
|
28
|
+
}
|
|
29
|
+
if (inspection.state === "unknown") {
|
|
30
|
+
return { what: entryName(inspection), why: "it could not be read, so it is left as it is" };
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
};
|
|
34
|
+
const samePath = (a, b, platform) => platform === "win32" ? a.replaceAll("/", "\\").toLowerCase() === b.replaceAll("/", "\\").toLowerCase() : a === b;
|
|
35
|
+
const ownLoginEntry = {
|
|
36
|
+
id: "login-entry",
|
|
37
|
+
kind: "login-entry",
|
|
38
|
+
action: "repair",
|
|
39
|
+
reason: "this agent's own login entry, written again where it differs from what this build writes (a logon task's action and settings included)",
|
|
40
|
+
find: async (context) => {
|
|
41
|
+
if (context.supervisor === undefined || !ENTRY_SUPERVISORS.has(context.supervisor)) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
const launcher = machineLauncher();
|
|
45
|
+
if (!context.resident && !samePath(launcher[0], agentPath, context.platform)) {
|
|
46
|
+
return [{ what: "this agent's login entry", why: `only the installed agent (${agentPath}) checks it, not ${launcher[0]}` }];
|
|
47
|
+
}
|
|
48
|
+
const entry = autostart(MACHINE_AUTOSTART, launcher, context.log);
|
|
49
|
+
const found = loginEntryFinding(await entry.inspect(), async () => void (await entry.register({ repair: true })));
|
|
50
|
+
return found === undefined ? [] : [found];
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
const WINDOWS_RUN_KEY = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run";
|
|
54
|
+
export const runValueData = (output, name) => {
|
|
55
|
+
for (const line of output.split(/\r?\n/)) {
|
|
56
|
+
const match = /^\s*(\S.*?)\s+REG_\w+\s+(.*)$/.exec(line);
|
|
57
|
+
if (match?.[1] === name) {
|
|
58
|
+
return match[2]?.trim();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
62
|
+
};
|
|
63
|
+
const readRunValue = (name) => {
|
|
64
|
+
const reg = join(process.env["SystemRoot"] ?? "C:\\Windows", "System32", "reg.exe");
|
|
65
|
+
const result = spawnSync(reg, ["query", WINDOWS_RUN_KEY, "/v", name], { encoding: "utf8", windowsHide: true, timeout: 30_000 });
|
|
66
|
+
return result.status === 0 ? runValueData(result.stdout, name) : undefined;
|
|
67
|
+
};
|
|
68
|
+
export const mutagenRunDecision = (reading) => {
|
|
69
|
+
if (reading.pairings instanceof Error) {
|
|
70
|
+
return reading.value === undefined
|
|
71
|
+
? undefined
|
|
72
|
+
: { why: `sync.json does not read (${reading.pairings.message}), so whether a pairing needs it is not known` };
|
|
73
|
+
}
|
|
74
|
+
if (reading.pairings === 0) {
|
|
75
|
+
return reading.value === undefined ? undefined : "retire";
|
|
76
|
+
}
|
|
77
|
+
if (!reading.ownInUse) {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
return reading.value?.toLowerCase().includes(reading.own.toLowerCase()) === true ? undefined : "repair";
|
|
81
|
+
};
|
|
82
|
+
const mutagenReading = async () => {
|
|
83
|
+
const own = ownMutagenPath();
|
|
84
|
+
return {
|
|
85
|
+
pairings: await readState().then((state) => state.pairings.length, (error) => (error instanceof Error ? error : new Error(String(error)))),
|
|
86
|
+
value: readRunValue(MUTAGEN_RUN_VALUE),
|
|
87
|
+
own,
|
|
88
|
+
ownInUse: existsSync(own),
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
const mutagenFinding = async (context, wanted) => {
|
|
92
|
+
if (context.platform !== "win32") {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
const reading = await mutagenReading();
|
|
96
|
+
const decision = mutagenRunDecision(reading);
|
|
97
|
+
const what = `the "${MUTAGEN_RUN_VALUE}" Run value`;
|
|
98
|
+
if (decision === undefined || (typeof decision === "string" && decision !== wanted)) {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
if (typeof decision === "object") {
|
|
102
|
+
return wanted === "retire" ? [{ what, why: decision.why }] : [];
|
|
103
|
+
}
|
|
104
|
+
return [
|
|
105
|
+
{
|
|
106
|
+
what,
|
|
107
|
+
act: decision === "retire"
|
|
108
|
+
? async () => await Promise.resolve(clearWindowsRunValue(MUTAGEN_RUN_VALUE))
|
|
109
|
+
: async () => await Promise.resolve(registerMutagenAutostart(reading.own, machineLauncher(), context.log)),
|
|
110
|
+
},
|
|
111
|
+
];
|
|
112
|
+
};
|
|
113
|
+
const mutagenRetire = {
|
|
114
|
+
id: "mutagen-autostart-unused",
|
|
115
|
+
kind: "login-entry",
|
|
116
|
+
action: "retire",
|
|
117
|
+
reason: "the Run value that starts this agent's Mutagen daemon at sign-in, once no pairing here needs Mutagen",
|
|
118
|
+
find: async (context) => await mutagenFinding(context, "retire"),
|
|
119
|
+
};
|
|
120
|
+
const mutagenRepair = {
|
|
121
|
+
id: "mutagen-autostart",
|
|
122
|
+
kind: "login-entry",
|
|
123
|
+
action: "repair",
|
|
124
|
+
reason: "the Run value that starts this agent's Mutagen daemon at sign-in, while a pairing here needs it",
|
|
125
|
+
find: async (context) => await mutagenFinding(context, "repair"),
|
|
126
|
+
};
|
|
127
|
+
export const LOGIN_ENTRIES = [ownLoginEntry, mutagenRetire, mutagenRepair];
|
|
128
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/upkeep/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/upkeep/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAc9C,eAAO,MAAM,QAAQ,EAAE,SAAS,WAAW,EAAuF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LOGIN_ENTRIES } from "./login.js";
|
|
2
|
+
import { RETENTION_ENTRIES } from "./retention.js";
|
|
3
|
+
import { RETIRED_ENTRIES } from "./retired.js";
|
|
4
|
+
import { SECOND_IC_ENTRIES } from "./second-ic.js";
|
|
5
|
+
export const MANIFEST = [...RETIRED_ENTRIES, ...LOGIN_ENTRIES, ...RETENTION_ENTRIES, ...SECOND_IC_ENTRIES];
|
|
6
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/upkeep/manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAUnD,MAAM,CAAC,MAAM,QAAQ,GAA2B,CAAC,GAAG,eAAe,EAAE,GAAG,aAAa,EAAE,GAAG,iBAAiB,EAAE,GAAG,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type Log } from "@intentic/local-agent";
|
|
2
|
+
import { type DeviceUpkeep } from "@intentic/sandbox-contract";
|
|
3
|
+
import { type Rounds } from "../device/sandbox-rounds/ic-rounds.js";
|
|
4
|
+
import type { UpkeepAction, UpkeepContext, UpkeepEntry } from "./entry.js";
|
|
5
|
+
export declare const UPKEEP_FIRST_MS = 60000;
|
|
6
|
+
export declare const UPKEEP_EVERY_MS: number;
|
|
7
|
+
export declare const upkeepPathOf: (base: string) => string;
|
|
8
|
+
export type UpkeepOutcome = "fixed" | "would-fix" | "skipped";
|
|
9
|
+
export interface UpkeepItem {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly kind: string;
|
|
12
|
+
readonly action: UpkeepAction;
|
|
13
|
+
readonly what: string;
|
|
14
|
+
readonly outcome: UpkeepOutcome;
|
|
15
|
+
readonly why?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface UpkeepReport extends DeviceUpkeep {
|
|
18
|
+
readonly version: string;
|
|
19
|
+
}
|
|
20
|
+
export declare const reportOf: (items: readonly UpkeepItem[], at: number, version: string) => UpkeepReport;
|
|
21
|
+
export declare const summaryLine: (report: UpkeepReport, fix: boolean) => string;
|
|
22
|
+
export declare const reconcile: (entries: readonly UpkeepEntry[], context: UpkeepContext, { fix }: {
|
|
23
|
+
readonly fix: boolean;
|
|
24
|
+
}) => Promise<UpkeepItem[]>;
|
|
25
|
+
export interface UpkeepRun {
|
|
26
|
+
readonly report: UpkeepReport;
|
|
27
|
+
readonly items: readonly UpkeepItem[];
|
|
28
|
+
}
|
|
29
|
+
export interface UpkeepOptions {
|
|
30
|
+
readonly fix: boolean;
|
|
31
|
+
readonly resident: boolean;
|
|
32
|
+
readonly supervisor: string | undefined;
|
|
33
|
+
readonly log: Log;
|
|
34
|
+
readonly entries?: readonly UpkeepEntry[];
|
|
35
|
+
readonly home?: string;
|
|
36
|
+
readonly base?: string;
|
|
37
|
+
readonly now?: number;
|
|
38
|
+
readonly platform?: NodeJS.Platform;
|
|
39
|
+
}
|
|
40
|
+
export declare const runUpkeep: (options: UpkeepOptions) => Promise<UpkeepRun | {
|
|
41
|
+
readonly busy: number;
|
|
42
|
+
}>;
|
|
43
|
+
export declare const readUpkeepSummary: (base?: string) => Promise<DeviceUpkeep | undefined>;
|
|
44
|
+
export declare const startUpkeep: (log: Log, supervisor: string | undefined) => Rounds;
|
|
45
|
+
//# sourceMappingURL=reconcile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/upkeep/reconcile.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyB,KAAK,GAAG,EAAkB,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,KAAK,YAAY,EAA4C,MAAM,4BAA4B,CAAC;AAEzG,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,uCAAuC,CAAC;AAEjF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAU3E,eAAO,MAAM,eAAe,QAAS,CAAC;AACtC,eAAO,MAAM,eAAe,QAAkB,CAAC;AAE/C,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,MAAmC,CAAC;AAMhF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACzB;AAKD,MAAM,WAAW,YAAa,SAAQ,YAAY;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAWD,eAAO,MAAM,QAAQ,UAAW,SAAS,UAAU,EAAE,MAAM,MAAM,WAAW,MAAM,KAAG,YAMnF,CAAC;AASH,eAAO,MAAM,WAAW,WAAY,YAAY,OAAO,OAAO,KAAG,MAchE,CAAC;AA8BF,eAAO,MAAM,SAAS,YACT,SAAS,WAAW,EAAE,WACtB,aAAa,WACb;IAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CAAE,KACnC,OAAO,CAAC,UAAU,EAAE,CAyCtB,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CACvC;AAID,eAAO,MAAM,SAAS,YAAmB,aAAa,KAAG,OAAO,CAAC,SAAS,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA6BrG,CAAC;AAIF,eAAO,MAAM,iBAAiB,UAAgB,MAAM,KAAa,OAAO,CAAC,YAAY,GAAG,SAAS,CAehG,CAAC;AAGF,eAAO,MAAM,WAAW,QAAS,GAAG,cAAc,MAAM,GAAG,SAAS,KAAG,MAUlE,CAAC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { errorMessage } from "@intentic/base/errors";
|
|
4
|
+
import { writeFileAtomic } from "@intentic/base/fs";
|
|
5
|
+
import { claimPidFile, homeDir, releasePidFile } from "@intentic/local-agent";
|
|
6
|
+
import { DeviceUpkeepSchema, UPKEEP_SKIPPED_SHOWN } from "@intentic/sandbox-contract";
|
|
7
|
+
import { baseDir } from "../config.js";
|
|
8
|
+
import { startRounds } from "../device/sandbox-rounds/ic-rounds.js";
|
|
9
|
+
import { MACHINE_VERSION } from "../version.js";
|
|
10
|
+
import { MANIFEST } from "./manifest.js";
|
|
11
|
+
export const UPKEEP_FIRST_MS = 60_000;
|
|
12
|
+
export const UPKEEP_EVERY_MS = 6 * 60 * 60_000;
|
|
13
|
+
export const upkeepPathOf = (base) => join(base, "upkeep.json");
|
|
14
|
+
const markerOf = (base, entry) => join(base, "upkeep", entry.id);
|
|
15
|
+
const lockOf = (base) => join(base, "upkeep.pid");
|
|
16
|
+
const count = (items) => {
|
|
17
|
+
const counts = {};
|
|
18
|
+
for (const item of items) {
|
|
19
|
+
counts[item.kind] = (counts[item.kind] ?? 0) + 1;
|
|
20
|
+
}
|
|
21
|
+
return counts;
|
|
22
|
+
};
|
|
23
|
+
export const reportOf = (items, at, version) => ({
|
|
24
|
+
at,
|
|
25
|
+
version,
|
|
26
|
+
found: count(items),
|
|
27
|
+
fixed: count(items.filter((item) => item.outcome === "fixed")),
|
|
28
|
+
skipped: items.filter((item) => item.outcome === "skipped").map(({ kind, what, why }) => ({ kind, what, why: why ?? "" })),
|
|
29
|
+
});
|
|
30
|
+
const total = (counts) => Object.values(counts).reduce((sum, n) => sum + n, 0);
|
|
31
|
+
const byKind = (counts) => Object.entries(counts)
|
|
32
|
+
.map(([kind, n]) => `${kind} ${n}`)
|
|
33
|
+
.join(", ");
|
|
34
|
+
export const summaryLine = (report, fix) => {
|
|
35
|
+
const found = total(report.found);
|
|
36
|
+
if (found === 0) {
|
|
37
|
+
return "upkeep: nothing left over from older releases, and every store within its bounds.";
|
|
38
|
+
}
|
|
39
|
+
const done = fix ? `fixed ${total(report.fixed)}` : `would fix ${found - report.skipped.length}`;
|
|
40
|
+
const skipped = report.skipped.length === 0
|
|
41
|
+
? ""
|
|
42
|
+
: `, skipped ${report.skipped.length}: ${report.skipped
|
|
43
|
+
.slice(0, 3)
|
|
44
|
+
.map((item) => `${item.what} (${item.why})`)
|
|
45
|
+
.join("; ")}${report.skipped.length > 3 ? `; and ${report.skipped.length - 3} more` : ""}`;
|
|
46
|
+
return `upkeep: found ${found} (${byKind(report.found)}), ${done}${skipped}`;
|
|
47
|
+
};
|
|
48
|
+
const done = async (entry, context, fix) => {
|
|
49
|
+
const marker = markerOf(context.base, entry);
|
|
50
|
+
if ((await readFile(marker, "utf8").catch(() => undefined)) !== undefined) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
const former = entry.formerMarker === undefined ? undefined : join(context.base, entry.formerMarker);
|
|
54
|
+
if (former === undefined || (await readFile(former, "utf8").catch(() => undefined)) === undefined) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
if (fix) {
|
|
58
|
+
await markDone(entry, context);
|
|
59
|
+
await rm(former, { force: true });
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
};
|
|
63
|
+
const markDone = async (entry, context) => {
|
|
64
|
+
await mkdir(join(context.base, "upkeep"), { recursive: true, mode: 0o700 });
|
|
65
|
+
await writeFile(markerOf(context.base, entry), `${new Date(context.now).toISOString()} ${MACHINE_VERSION}\n`, { mode: 0o600 });
|
|
66
|
+
};
|
|
67
|
+
export const reconcile = async (entries, context, { fix }) => {
|
|
68
|
+
const items = [];
|
|
69
|
+
for (const entry of entries) {
|
|
70
|
+
const line = { id: entry.id, kind: entry.kind, action: entry.action };
|
|
71
|
+
if (entry.once === true && (await done(entry, context, fix))) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
let found;
|
|
75
|
+
try {
|
|
76
|
+
found = await entry.find(context);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
items.push({ ...line, what: entry.id, outcome: "skipped", why: `could not look: ${errorMessage(error)}` });
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
let left = false;
|
|
83
|
+
for (const finding of found) {
|
|
84
|
+
if (finding.act === undefined) {
|
|
85
|
+
items.push({ ...line, what: finding.what, outcome: "skipped", why: finding.why ?? "left as it is" });
|
|
86
|
+
left = true;
|
|
87
|
+
}
|
|
88
|
+
else if (!fix) {
|
|
89
|
+
items.push({ ...line, what: finding.what, outcome: "would-fix" });
|
|
90
|
+
left = true;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
try {
|
|
94
|
+
await finding.act();
|
|
95
|
+
items.push({ ...line, what: finding.what, outcome: "fixed" });
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
items.push({ ...line, what: finding.what, outcome: "skipped", why: errorMessage(error) });
|
|
99
|
+
left = true;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (fix && entry.once === true && !left) {
|
|
104
|
+
await markDone(entry, context);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return items;
|
|
108
|
+
};
|
|
109
|
+
export const runUpkeep = async (options) => {
|
|
110
|
+
const base = options.base ?? baseDir;
|
|
111
|
+
const context = {
|
|
112
|
+
log: options.log,
|
|
113
|
+
now: options.now ?? Date.now(),
|
|
114
|
+
home: options.home ?? homeDir(),
|
|
115
|
+
base,
|
|
116
|
+
platform: options.platform ?? process.platform,
|
|
117
|
+
supervisor: options.supervisor,
|
|
118
|
+
resident: options.resident,
|
|
119
|
+
};
|
|
120
|
+
if (options.fix) {
|
|
121
|
+
const claim = await claimPidFile(lockOf(base), base, { pid: process.pid, build: MACHINE_VERSION });
|
|
122
|
+
if (!claim.claimed) {
|
|
123
|
+
return { busy: claim.holder.pid };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
const items = await reconcile(options.entries ?? MANIFEST, context, { fix: options.fix });
|
|
128
|
+
const report = reportOf(items, context.now, MACHINE_VERSION);
|
|
129
|
+
if (options.fix) {
|
|
130
|
+
await writeFileAtomic(upkeepPathOf(base), `${JSON.stringify(report, undefined, 2)}\n`, 0o600);
|
|
131
|
+
}
|
|
132
|
+
return { report, items };
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
if (options.fix) {
|
|
136
|
+
await releasePidFile(lockOf(base), process.pid);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
export const readUpkeepSummary = async (base = baseDir) => {
|
|
141
|
+
const text = await readFile(upkeepPathOf(base), "utf8").catch(() => undefined);
|
|
142
|
+
if (text === undefined) {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
let raw;
|
|
146
|
+
try {
|
|
147
|
+
raw = JSON.parse(text);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
const parsed = DeviceUpkeepSchema.safeParse(raw);
|
|
153
|
+
return parsed.success ? { ...parsed.data, skipped: parsed.data.skipped.slice(0, UPKEEP_SKIPPED_SHOWN) } : undefined;
|
|
154
|
+
};
|
|
155
|
+
export const startUpkeep = (log, supervisor) => startRounds("upkeep", log, UPKEEP_FIRST_MS, () => UPKEEP_EVERY_MS, async () => {
|
|
156
|
+
const run = await runUpkeep({ fix: true, resident: true, supervisor, log });
|
|
157
|
+
log("busy" in run ? `upkeep: skipped this pass, a \`doctor --fix\` is running (pid ${run.busy}).` : summaryLine(run.report, true));
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=reconcile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../src/upkeep/reconcile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { UpkeepEntry } from "./entry.js";
|
|
2
|
+
export declare const TRASH_KEEP_MS: number;
|
|
3
|
+
export declare const expiredTrash: (names: readonly string[], now: number) => {
|
|
4
|
+
readonly expired: readonly string[];
|
|
5
|
+
readonly undated: readonly string[];
|
|
6
|
+
};
|
|
7
|
+
export declare const PART_KEEP_MS: number;
|
|
8
|
+
export declare const isShimPart: (name: string) => boolean;
|
|
9
|
+
export declare const RETENTION_ENTRIES: readonly UpkeepEntry[];
|
|
10
|
+
//# sourceMappingURL=retention.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/upkeep/retention.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,YAAY,CAAC;AAQvD,eAAO,MAAM,aAAa,QAAwB,CAAC;AAInD,eAAO,MAAM,YAAY,UAAW,SAAS,MAAM,EAAE,OAAO,MAAM,KAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAS9I,CAAC;AAwCF,eAAO,MAAM,YAAY,QAAmB,CAAC;AAC7C,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,OAA4C,CAAC;AA4BvF,eAAO,MAAM,iBAAiB,EAAE,SAAS,WAAW,EAAyC,CAAC"}
|