@intentic/machine 1.331.0 → 1.333.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 +67 -8
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +1 -1
- package/dist/app.js.map +1 -1
- package/dist/autostart/autostart.js +1 -1
- package/dist/autostart/autostart.js.map +1 -1
- package/dist/cli-ui.d.ts +10 -0
- package/dist/cli-ui.d.ts.map +1 -0
- package/dist/cli-ui.js +62 -0
- package/dist/cli-ui.js.map +1 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +61 -26
- package/dist/commands.js.map +1 -1
- package/dist/daemon-base.d.ts +1 -0
- package/dist/daemon-base.d.ts.map +1 -1
- package/dist/daemon-base.js +21 -18
- package/dist/daemon-base.js.map +1 -1
- package/dist/device/audit.d.ts.map +1 -1
- package/dist/device/audit.js.map +1 -1
- package/dist/device/commands.d.ts +8 -6
- package/dist/device/commands.d.ts.map +1 -1
- package/dist/device/commands.js +64 -42
- package/dist/device/commands.js.map +1 -1
- package/dist/device/connection.d.ts.map +1 -1
- package/dist/device/connection.js +2 -3
- package/dist/device/connection.js.map +1 -1
- package/dist/device/grant.d.ts +7 -0
- package/dist/device/grant.d.ts.map +1 -1
- package/dist/device/loopback-catch.d.ts.map +1 -1
- package/dist/device/loopback-catch.js +1 -1
- package/dist/device/loopback-catch.js.map +1 -1
- package/dist/device/mcp.d.ts.map +1 -1
- package/dist/device/mcp.js +19 -0
- package/dist/device/mcp.js.map +1 -1
- package/dist/device/policy.d.ts.map +1 -1
- package/dist/device/policy.js +3 -5
- package/dist/device/policy.js.map +1 -1
- package/dist/device/router.d.ts +7 -0
- package/dist/device/router.d.ts.map +1 -1
- package/dist/device/router.js +17 -5
- package/dist/device/router.js.map +1 -1
- package/dist/device/sandbox-cli.d.ts +12 -1
- package/dist/device/sandbox-cli.d.ts.map +1 -1
- package/dist/device/sandbox-cli.js +90 -18
- package/dist/device/sandbox-cli.js.map +1 -1
- package/dist/device/sandbox-rounds/ic-swaps.d.ts +11 -0
- package/dist/device/sandbox-rounds/ic-swaps.d.ts.map +1 -0
- package/dist/device/sandbox-rounds/ic-swaps.js +40 -0
- package/dist/device/sandbox-rounds/ic-swaps.js.map +1 -0
- package/dist/device/sandbox-rounds/keeper.d.ts +26 -1
- package/dist/device/sandbox-rounds/keeper.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/keeper.js +118 -20
- package/dist/device/sandbox-rounds/keeper.js.map +1 -1
- package/dist/device/sandbox-rounds/probation-watch.d.ts +1 -1
- package/dist/device/sandbox-rounds/probation-watch.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/probation-watch.js +2 -2
- package/dist/device/sandbox-rounds/probation-watch.js.map +1 -1
- package/dist/device/sandbox-rounds/sleep.d.ts +52 -0
- package/dist/device/sandbox-rounds/sleep.d.ts.map +1 -0
- package/dist/device/sandbox-rounds/sleep.js +115 -0
- package/dist/device/sandbox-rounds/sleep.js.map +1 -0
- package/dist/device/sandbox-rounds/swap-records.d.ts +1 -5
- package/dist/device/sandbox-rounds/swap-records.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/swap-records.js +2 -33
- package/dist/device/sandbox-rounds/swap-records.js.map +1 -1
- package/dist/device/sandbox-rounds/swaps-fallback.d.ts +7 -0
- package/dist/device/sandbox-rounds/swaps-fallback.d.ts.map +1 -0
- package/dist/device/sandbox-rounds/swaps-fallback.js +44 -0
- package/dist/device/sandbox-rounds/swaps-fallback.js.map +1 -0
- package/dist/device/tools/agent.js +3 -3
- package/dist/device/tools/agent.js.map +1 -1
- package/dist/device/tools/android.d.ts.map +1 -1
- package/dist/device/tools/android.js +7 -62
- package/dist/device/tools/android.js.map +1 -1
- package/dist/device/tools/apps.d.ts.map +1 -1
- package/dist/device/tools/apps.js +7 -1
- package/dist/device/tools/apps.js.map +1 -1
- package/dist/device/tools/describe.d.ts +6 -0
- package/dist/device/tools/describe.d.ts.map +1 -1
- package/dist/device/tools/describe.js +30 -9
- package/dist/device/tools/describe.js.map +1 -1
- package/dist/device/tools/device.d.ts.map +1 -1
- package/dist/device/tools/device.js +2 -1
- package/dist/device/tools/device.js.map +1 -1
- package/dist/device/tools/ic-binary.d.ts +7 -0
- package/dist/device/tools/ic-binary.d.ts.map +1 -1
- package/dist/device/tools/ic-binary.js +16 -8
- package/dist/device/tools/ic-binary.js.map +1 -1
- package/dist/device/tools/logs/logs.d.ts +30 -0
- package/dist/device/tools/logs/logs.d.ts.map +1 -0
- package/dist/device/tools/logs/logs.js +147 -0
- package/dist/device/tools/logs/logs.js.map +1 -0
- package/dist/device/tools/programs/artifacts.d.ts.map +1 -1
- package/dist/device/tools/programs/artifacts.js +5 -10
- package/dist/device/tools/programs/artifacts.js.map +1 -1
- package/dist/device/tools/programs/{tunnel.d.ts → device-tunnel.d.ts} +1 -1
- package/dist/device/tools/programs/device-tunnel.d.ts.map +1 -0
- package/dist/device/tools/programs/{tunnel.js → device-tunnel.js} +1 -1
- package/dist/device/tools/programs/device-tunnel.js.map +1 -0
- package/dist/device/tools/programs/isolated.d.ts +0 -1
- package/dist/device/tools/programs/isolated.d.ts.map +1 -1
- package/dist/device/tools/programs/isolated.js +8 -10
- package/dist/device/tools/programs/isolated.js.map +1 -1
- package/dist/device/tools/programs/programs.d.ts +1 -1
- package/dist/device/tools/programs/programs.d.ts.map +1 -1
- package/dist/device/tools/programs/programs.js +89 -35
- package/dist/device/tools/programs/programs.js.map +1 -1
- package/dist/device/tools/sandboxes.d.ts.map +1 -1
- package/dist/device/tools/sandboxes.js +11 -10
- package/dist/device/tools/sandboxes.js.map +1 -1
- package/dist/device/tools/shell.d.ts +6 -5
- package/dist/device/tools/shell.d.ts.map +1 -1
- package/dist/device/tools/shell.js +37 -86
- package/dist/device/tools/shell.js.map +1 -1
- package/dist/engine-env.d.ts +15 -0
- package/dist/engine-env.d.ts.map +1 -0
- package/dist/engine-env.js +80 -0
- package/dist/engine-env.js.map +1 -0
- package/dist/environments/auto-upgrade.d.ts +2 -2
- package/dist/environments/auto-upgrade.d.ts.map +1 -1
- package/dist/environments/auto-upgrade.js +3 -5
- package/dist/environments/auto-upgrade.js.map +1 -1
- package/dist/environments/commands.d.ts +7 -1
- package/dist/environments/commands.d.ts.map +1 -1
- package/dist/environments/commands.js +37 -31
- package/dist/environments/commands.js.map +1 -1
- package/dist/environments/machine-upgrade.d.ts +8 -1
- package/dist/environments/machine-upgrade.d.ts.map +1 -1
- package/dist/environments/machine-upgrade.js +35 -26
- package/dist/environments/machine-upgrade.js.map +1 -1
- package/dist/environments/machine.d.ts +5 -4
- package/dist/environments/machine.d.ts.map +1 -1
- package/dist/environments/machine.js +13 -16
- package/dist/environments/machine.js.map +1 -1
- package/dist/environments/wsl.d.ts.map +1 -1
- package/dist/environments/wsl.js +4 -7
- package/dist/environments/wsl.js.map +1 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +28 -30
- package/dist/install.js.map +1 -1
- package/dist/resident/last-exit.d.ts +40 -0
- package/dist/resident/last-exit.d.ts.map +1 -0
- package/dist/resident/last-exit.js +147 -0
- package/dist/resident/last-exit.js.map +1 -0
- package/dist/resident/log-roll.d.ts +8 -0
- package/dist/resident/log-roll.d.ts.map +1 -0
- package/dist/resident/log-roll.js +30 -0
- package/dist/resident/log-roll.js.map +1 -0
- package/dist/{resident.d.ts → resident/resident.d.ts} +1 -1
- package/dist/resident/resident.d.ts.map +1 -0
- package/dist/{resident.js → resident/resident.js} +52 -27
- package/dist/resident/resident.js.map +1 -0
- package/dist/{supervision.d.ts → resident/supervision.d.ts} +7 -3
- package/dist/resident/supervision.d.ts.map +1 -0
- package/dist/{supervision.js → resident/supervision.js} +20 -16
- package/dist/resident/supervision.js.map +1 -0
- package/dist/resident/watchdog.d.ts +24 -0
- package/dist/resident/watchdog.d.ts.map +1 -0
- package/dist/resident/watchdog.js +69 -0
- package/dist/resident/watchdog.js.map +1 -0
- package/dist/status.d.ts +14 -8
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +141 -107
- package/dist/status.js.map +1 -1
- package/dist/sync/attach-commands.d.ts +1 -1
- package/dist/sync/attach-commands.d.ts.map +1 -1
- package/dist/sync/attach-commands.js +19 -12
- package/dist/sync/attach-commands.js.map +1 -1
- package/dist/sync/commands.d.ts +6 -3
- package/dist/sync/commands.d.ts.map +1 -1
- package/dist/sync/commands.js +149 -113
- package/dist/sync/commands.js.map +1 -1
- package/dist/sync/exec.d.ts +9 -0
- package/dist/sync/exec.d.ts.map +1 -1
- package/dist/sync/exec.js +21 -22
- package/dist/sync/exec.js.map +1 -1
- package/dist/sync/folders.d.ts.map +1 -1
- package/dist/sync/folders.js +3 -14
- package/dist/sync/folders.js.map +1 -1
- package/dist/sync/forget-command.d.ts +1 -1
- package/dist/sync/forget-command.d.ts.map +1 -1
- package/dist/sync/forget-command.js +10 -7
- package/dist/sync/forget-command.js.map +1 -1
- package/dist/sync/git-bridge.d.ts.map +1 -1
- package/dist/sync/git-bridge.js +4 -2
- package/dist/sync/git-bridge.js.map +1 -1
- package/dist/sync/local-sandboxes.d.ts.map +1 -1
- package/dist/sync/local-sandboxes.js +2 -4
- package/dist/sync/local-sandboxes.js.map +1 -1
- package/dist/sync/mirror.d.ts.map +1 -1
- package/dist/sync/mirror.js +9 -18
- package/dist/sync/mirror.js.map +1 -1
- package/dist/sync/mutagen.d.ts.map +1 -1
- package/dist/sync/mutagen.js +33 -37
- package/dist/sync/mutagen.js.map +1 -1
- package/dist/sync/project/project-commands.d.ts +7 -2
- package/dist/sync/project/project-commands.d.ts.map +1 -1
- package/dist/sync/project/project-commands.js +110 -46
- package/dist/sync/project/project-commands.js.map +1 -1
- package/dist/sync/project/project-files.d.ts +4 -6
- package/dist/sync/project/project-files.d.ts.map +1 -1
- package/dist/sync/project/project-files.js +4 -6
- package/dist/sync/project/project-files.js.map +1 -1
- package/dist/sync/project/project-local.d.ts.map +1 -1
- package/dist/sync/project/project-local.js +3 -19
- package/dist/sync/project/project-local.js.map +1 -1
- package/dist/sync/project/project-remote.js +4 -4
- package/dist/sync/project/project-transfer.d.ts +13 -30
- package/dist/sync/project/project-transfer.d.ts.map +1 -1
- package/dist/sync/project/project-transfer.js +1 -1
- package/dist/sync/project/project-transfer.js.map +1 -1
- package/dist/sync/retire.d.ts.map +1 -1
- package/dist/sync/retire.js +3 -3
- package/dist/sync/retire.js.map +1 -1
- package/dist/sync/siblings.d.ts.map +1 -1
- package/dist/sync/siblings.js +3 -6
- package/dist/sync/siblings.js.map +1 -1
- package/dist/sync/ssh.d.ts +1 -1
- package/dist/sync/ssh.d.ts.map +1 -1
- package/dist/sync/ssh.js +8 -7
- package/dist/sync/ssh.js.map +1 -1
- package/dist/sync/swap-pause.d.ts.map +1 -1
- package/dist/sync/swap-pause.js +2 -2
- package/dist/sync/swap-pause.js.map +1 -1
- package/dist/upgrade.d.ts +7 -0
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +24 -13
- package/dist/upgrade.js.map +1 -1
- package/dist/upkeep/doctor.d.ts +4 -2
- package/dist/upkeep/doctor.d.ts.map +1 -1
- package/dist/upkeep/doctor.js +40 -26
- package/dist/upkeep/doctor.js.map +1 -1
- package/dist/upkeep/login.js +1 -1
- package/dist/upkeep/login.js.map +1 -1
- package/dist/upkeep/retention.d.ts +6 -0
- package/dist/upkeep/retention.d.ts.map +1 -1
- package/dist/upkeep/retention.js +55 -3
- package/dist/upkeep/retention.js.map +1 -1
- package/dist/upkeep/retired.js +1 -1
- package/dist/upkeep/retired.js.map +1 -1
- package/dist/upkeep/second-ic.d.ts.map +1 -1
- package/dist/upkeep/second-ic.js +4 -6
- package/dist/upkeep/second-ic.js.map +1 -1
- package/dist/upkeep/trash.d.ts.map +1 -1
- package/dist/upkeep/trash.js +5 -6
- package/dist/upkeep/trash.js.map +1 -1
- package/package.json +9 -9
- package/dist/device/tools/programs/tunnel.d.ts.map +0 -1
- package/dist/device/tools/programs/tunnel.js.map +0 -1
- package/dist/resident.d.ts.map +0 -1
- package/dist/resident.js.map +0 -1
- package/dist/supervision.d.ts.map +0 -1
- package/dist/supervision.js.map +0 -1
- package/dist/watchdog.d.ts +0 -13
- package/dist/watchdog.d.ts.map +0 -1
- package/dist/watchdog.js +0 -38
- package/dist/watchdog.js.map +0 -1
package/dist/device/router.js
CHANGED
|
@@ -8,7 +8,7 @@ import { catchLoopback } from "./loopback-catch.js";
|
|
|
8
8
|
import { handleMcpMessage } from "./mcp.js";
|
|
9
9
|
import { ScopeError } from "./policy.js";
|
|
10
10
|
import { stageArtifact } from "./tools/programs/artifacts.js";
|
|
11
|
-
import { dialLoopback } from "./tools/programs/tunnel.js";
|
|
11
|
+
import { dialLoopback } from "./tools/programs/device-tunnel.js";
|
|
12
12
|
import { hostFacts } from "./tools/describe.js";
|
|
13
13
|
import { DeliveryRefused, deliverProject } from "../sync/project/project-delivery.js";
|
|
14
14
|
import { machineReport } from "../sync/report.js";
|
|
@@ -32,7 +32,9 @@ const FLOWS = {
|
|
|
32
32
|
rollback: swapFlowFor("rollback"),
|
|
33
33
|
"set-shape": ({ slug, shape, when }, scopes) => (onLine) => {
|
|
34
34
|
if (shape === undefined || when === undefined) {
|
|
35
|
-
throw new ORPCError("BAD_REQUEST", {
|
|
35
|
+
throw new ORPCError("BAD_REQUEST", {
|
|
36
|
+
message: "A shape is set whole, with when it takes effect: `shape` and `when` are both required.",
|
|
37
|
+
});
|
|
36
38
|
}
|
|
37
39
|
return shapeSandbox(slug, shape, when, scopes, onLine);
|
|
38
40
|
},
|
|
@@ -60,7 +62,11 @@ const deliverOverLink = async (runtime, delivery) => {
|
|
|
60
62
|
return result;
|
|
61
63
|
}
|
|
62
64
|
catch (error) {
|
|
63
|
-
void audit({
|
|
65
|
+
void audit({
|
|
66
|
+
tool: "deliverProject",
|
|
67
|
+
ok: false,
|
|
68
|
+
detail: `${asked}: ${error instanceof DeliveryRefused ? "refused" : "failed"}: ${errorMessage(error)}`,
|
|
69
|
+
});
|
|
64
70
|
runtime.log(`${runtime.sandboxUrl}: did not deliver ${asked}: ${errorMessage(error)}`);
|
|
65
71
|
throw error instanceof DeliveryRefused
|
|
66
72
|
? new ORPCError(error.code, { message: error.message })
|
|
@@ -74,7 +80,9 @@ export const createHostRouter = (runtime) => {
|
|
|
74
80
|
describe: os.describe.handler(async () => await hostFacts(runtime.scopes())),
|
|
75
81
|
report: os.report.handler(async () => {
|
|
76
82
|
if (runtime.scopes().shell !== "on") {
|
|
77
|
-
throw new ORPCError("FORBIDDEN", {
|
|
83
|
+
throw new ORPCError("FORBIDDEN", {
|
|
84
|
+
message: `"Run commands" is switched off for this device, so it does not describe its folders and ports.`,
|
|
85
|
+
});
|
|
78
86
|
}
|
|
79
87
|
return await machineReport();
|
|
80
88
|
}),
|
|
@@ -114,7 +122,11 @@ export const createHostRouter = (runtime) => {
|
|
|
114
122
|
return result;
|
|
115
123
|
}
|
|
116
124
|
catch (error) {
|
|
117
|
-
void audit({
|
|
125
|
+
void audit({
|
|
126
|
+
tool: "stageArtifact",
|
|
127
|
+
ok: false,
|
|
128
|
+
detail: `${input.op}: ${error instanceof ScopeError ? "refused" : "failed"}: ${errorMessage(error)}`,
|
|
129
|
+
});
|
|
118
130
|
throw new ORPCError(error instanceof ScopeError ? "FORBIDDEN" : "BAD_REQUEST", { message: errorMessage(error) });
|
|
119
131
|
}
|
|
120
132
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/device/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/device/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
import { type CommandContext } from "@stricli/core";
|
|
2
|
+
import type { Footnote, Item } from "@intentic/local-agent";
|
|
2
3
|
import { type MachineConfig } from "../environments/machine.js";
|
|
3
4
|
type PassedFlags = Readonly<Record<string, boolean | string | undefined>>;
|
|
4
5
|
export declare const icPassArgs: (verb: string, slug: string | undefined, flags: PassedFlags) => string[];
|
|
5
6
|
export declare const withKeeper: (config: MachineConfig, on: boolean) => MachineConfig;
|
|
6
|
-
export
|
|
7
|
+
export interface SwitchStatus {
|
|
8
|
+
readonly item: Item;
|
|
9
|
+
readonly said: string;
|
|
10
|
+
readonly later: readonly Footnote[];
|
|
11
|
+
}
|
|
12
|
+
export declare const keeperStatus: (on: boolean) => SwitchStatus;
|
|
13
|
+
export declare const sleepStatus: (minutes: number) => SwitchStatus;
|
|
14
|
+
type SleepWord = {
|
|
15
|
+
readonly minutes: number;
|
|
16
|
+
} | "status";
|
|
17
|
+
export declare const sleepWord: (value: string) => SleepWord;
|
|
7
18
|
export declare const sandboxRoutes: import("@stricli/core").RouteMap<CommandContext>;
|
|
8
19
|
export {};
|
|
9
20
|
//# sourceMappingURL=sandbox-cli.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-cli.d.ts","sourceRoot":"","sources":["../../src/device/sandbox-cli.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sandbox-cli.d.ts","sourceRoot":"","sources":["../../src/device/sandbox-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAA8B,MAAM,eAAe,CAAC;AAC/F,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAM,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EAAE,KAAK,aAAa,EAA0C,MAAM,4BAA4B,CAAC;AAUxG,KAAK,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAK1E,eAAO,MAAM,UAAU,SAAU,MAAM,QAAQ,MAAM,GAAG,SAAS,SAAS,WAAW,KAAG,MAAM,EAU7F,CAAC;AAyFF,eAAO,MAAM,UAAU,WAAY,aAAa,MAAM,OAAO,KAAG,aAG/D,CAAC;AAGF,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;CACvC;AAED,eAAO,MAAM,YAAY,OAAQ,OAAO,KAAG,YAiBhC,CAAC;AAkCZ,eAAO,MAAM,WAAW,YAAa,MAAM,KAAG,YAWnC,CAAC;AAKZ,KAAK,SAAS,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,CAAC;AAGzD,eAAO,MAAM,SAAS,UAAW,MAAM,KAAG,SAWzC,CAAC;AAwBF,eAAO,MAAM,aAAa,kDA6CxB,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { buildRouteMap } from "@stricli/core";
|
|
2
|
+
import { buildCommand, machineUi } from "../cli-ui.js";
|
|
2
3
|
import { runLogPath } from "../config.js";
|
|
3
4
|
import { readMachineConfig, updateMachineConfig } from "../environments/machine.js";
|
|
4
|
-
import { ensureResident } from "../resident.js";
|
|
5
|
+
import { ensureResident } from "../resident/resident.js";
|
|
5
6
|
import { runIcAttached } from "./tools/sandboxes.js";
|
|
7
|
+
import { sleepMinutesOf, withSleepMinutes } from "./sandbox-rounds/sleep.js";
|
|
6
8
|
const kebab = (name) => name.replaceAll(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
|
|
7
9
|
export const icPassArgs = (verb, slug, flags) => [
|
|
8
10
|
"sandbox",
|
|
@@ -18,7 +20,7 @@ export const icPassArgs = (verb, slug, flags) => [
|
|
|
18
20
|
const pass = async (verb, slug, flags) => {
|
|
19
21
|
process.exitCode = await runIcAttached(icPassArgs(verb, slug, flags));
|
|
20
22
|
};
|
|
21
|
-
const SLUG = { brief: "The sandbox (omit when this
|
|
23
|
+
const SLUG = { brief: "The sandbox (omit when this device runs exactly one)", parse: String, optional: true, placeholder: "slug" };
|
|
22
24
|
const verbCommand = (verb, brief, flags) => buildCommand({
|
|
23
25
|
docs: { brief },
|
|
24
26
|
parameters: { flags, positional: { kind: "tuple", parameters: [SLUG] } },
|
|
@@ -33,7 +35,7 @@ const skipPreflight = {
|
|
|
33
35
|
brief: "Swap without first running the target image's state conversions against read-only copies of its data",
|
|
34
36
|
};
|
|
35
37
|
const list = buildCommand({
|
|
36
|
-
docs: { brief: "List the sandboxes on this
|
|
38
|
+
docs: { brief: "List the sandboxes on this device" },
|
|
37
39
|
parameters: { flags: { json } },
|
|
38
40
|
async func(given) {
|
|
39
41
|
await pass("list", undefined, given);
|
|
@@ -41,7 +43,7 @@ const list = buildCommand({
|
|
|
41
43
|
});
|
|
42
44
|
const lineCount = (value) => {
|
|
43
45
|
if (!/^\d+$/.test(value) || Number(value) === 0) {
|
|
44
|
-
throw new Error(
|
|
46
|
+
throw new Error(`${value} is not a number of lines.`);
|
|
45
47
|
}
|
|
46
48
|
return value;
|
|
47
49
|
};
|
|
@@ -49,17 +51,36 @@ const keeperWord = (value) => {
|
|
|
49
51
|
if (value === "on" || value === "off" || value === "status") {
|
|
50
52
|
return value;
|
|
51
53
|
}
|
|
52
|
-
throw new Error(
|
|
54
|
+
throw new Error(`${value} is not on, off or status.`);
|
|
53
55
|
};
|
|
54
56
|
export const withKeeper = (config, on) => {
|
|
55
57
|
const { sandboxKeeper: _was, ...rest } = config;
|
|
56
58
|
return on ? rest : { ...rest, sandboxKeeper: false };
|
|
57
59
|
};
|
|
58
60
|
export const keeperStatus = (on) => on
|
|
59
|
-
?
|
|
60
|
-
|
|
61
|
+
? {
|
|
62
|
+
item: { tone: "ok", name: "keeper", meta: "on" },
|
|
63
|
+
said: `When a sandbox on this device stops answering, half a minute after this agent starts, and every five minutes, this agent runs ic's fix in its automatic mode: it starts Docker Desktop, starts a sandbox nobody stopped on purpose, restarts one whose registration gave up and tidies a full disk. A fix that needs your yes is only reported. What it did is in ${runLogPath}.`,
|
|
64
|
+
later: [
|
|
65
|
+
["answer the fixes that ask", "intentic-machine sandbox fix"],
|
|
66
|
+
["turn it off", "intentic-machine sandbox keeper off"],
|
|
67
|
+
],
|
|
68
|
+
}
|
|
69
|
+
: {
|
|
70
|
+
item: { tone: "skip", name: "keeper", meta: "off" },
|
|
71
|
+
said: "Nothing brings this device's sandboxes back by itself.",
|
|
72
|
+
later: [
|
|
73
|
+
["fix them now", "intentic-machine sandbox fix"],
|
|
74
|
+
["turn it back on", "intentic-machine sandbox keeper on"],
|
|
75
|
+
],
|
|
76
|
+
};
|
|
77
|
+
const drawSwitch = (ui, status) => {
|
|
78
|
+
ui.items([status.item]);
|
|
79
|
+
ui.note(status.said);
|
|
80
|
+
ui.later(status.later);
|
|
81
|
+
};
|
|
61
82
|
const keeper = buildCommand({
|
|
62
|
-
docs: { brief: "Whether this agent brings this
|
|
83
|
+
docs: { brief: "Whether this agent brings this device's sandboxes back by itself (`ic sandbox fix --auto`): on, off, or status" },
|
|
63
84
|
parameters: {
|
|
64
85
|
positional: {
|
|
65
86
|
kind: "tuple",
|
|
@@ -67,12 +88,61 @@ const keeper = buildCommand({
|
|
|
67
88
|
},
|
|
68
89
|
},
|
|
69
90
|
async func(_flags, word) {
|
|
70
|
-
const
|
|
91
|
+
const ui = machineUi(this.process);
|
|
71
92
|
if (word === "on" || word === "off") {
|
|
93
|
+
ui.act(word === "on" ? "Turning the keeper on" : "Turning the keeper off");
|
|
72
94
|
await updateMachineConfig((config) => withKeeper(config, word === "on"));
|
|
73
|
-
await ensureResident(
|
|
95
|
+
await ensureResident(ui.note);
|
|
96
|
+
ui.done(word === "on" ? "The keeper is on." : "The keeper is off.");
|
|
97
|
+
ui.later(keeperStatus(word === "on").later.slice(1));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
ui.report("intentic · sandbox keeper");
|
|
101
|
+
drawSwitch(ui, keeperStatus((await readMachineConfig()).sandboxKeeper !== false));
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
export const sleepStatus = (minutes) => minutes === 0
|
|
105
|
+
? {
|
|
106
|
+
item: { tone: "skip", name: "sleep", meta: "off" },
|
|
107
|
+
said: "Every sandbox on this device stays up until somebody stops it.",
|
|
108
|
+
later: [["turn it back on", "intentic-machine sandbox sleep-after 30"]],
|
|
109
|
+
}
|
|
110
|
+
: {
|
|
111
|
+
item: { tone: "ok", name: "sleep", meta: `after ${minutes} min` },
|
|
112
|
+
said: "A sandbox on this device that nobody has needed for that long (no editor open on it, no agent working, no terminal typed in, no app of it open) is stopped by the keeper, and starts again by itself when somebody opens it.",
|
|
113
|
+
later: [["keep them all up", "intentic-machine sandbox sleep-after off"]],
|
|
114
|
+
};
|
|
115
|
+
export const sleepWord = (value) => {
|
|
116
|
+
if (value === "status") {
|
|
117
|
+
return value;
|
|
118
|
+
}
|
|
119
|
+
if (value === "off") {
|
|
120
|
+
return { minutes: 0 };
|
|
121
|
+
}
|
|
122
|
+
if (/^\d+$/.test(value) && Number(value) <= 7 * 24 * 60) {
|
|
123
|
+
return { minutes: Number(value) };
|
|
124
|
+
}
|
|
125
|
+
throw new Error(`${value} is not a number of minutes, off or status.`);
|
|
126
|
+
};
|
|
127
|
+
const sleepAfter = buildCommand({
|
|
128
|
+
docs: { brief: "After how many minutes nobody needs a sandbox the keeper puts it to sleep (it wakes when opened): minutes, off, or status" },
|
|
129
|
+
parameters: {
|
|
130
|
+
positional: {
|
|
131
|
+
kind: "tuple",
|
|
132
|
+
parameters: [{ brief: "minutes, off or status (status unless given)", parse: sleepWord, optional: true, placeholder: "minutes|off|status" }],
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
async func(_flags, word) {
|
|
136
|
+
const ui = machineUi(this.process);
|
|
137
|
+
if (word !== undefined && word !== "status") {
|
|
138
|
+
ui.act(word.minutes === 0 ? "Turning sandbox sleep off" : `Setting sandbox sleep to ${word.minutes} min`);
|
|
139
|
+
await updateMachineConfig((config) => withSleepMinutes(config, word.minutes));
|
|
140
|
+
ui.done(word.minutes === 0 ? "Sandboxes on this device no longer sleep." : `A sandbox nobody needs sleeps after ${word.minutes} min.`);
|
|
141
|
+
ui.later(sleepStatus(word.minutes).later);
|
|
142
|
+
return;
|
|
74
143
|
}
|
|
75
|
-
|
|
144
|
+
ui.report("intentic · sandbox sleep");
|
|
145
|
+
drawSwitch(ui, sleepStatus(sleepMinutesOf(await readMachineConfig())));
|
|
76
146
|
},
|
|
77
147
|
});
|
|
78
148
|
export const sandboxRoutes = buildRouteMap({
|
|
@@ -80,17 +150,18 @@ export const sandboxRoutes = buildRouteMap({
|
|
|
80
150
|
list,
|
|
81
151
|
start: verbCommand("start", "Start a sandbox and its tunnel (a parked one included), applying a shape saved for its next restart", {}),
|
|
82
152
|
stop: verbCommand("stop", "Stop a sandbox and its tunnel", {}),
|
|
153
|
+
sleep: verbCommand("sleep", "Put a sandbox to sleep now: stopped, and started again by itself when somebody opens it", {}),
|
|
83
154
|
restart: verbCommand("restart", "Restart a sandbox and its tunnel, applying a shape saved for its next restart", {}),
|
|
84
155
|
update: verbCommand("update", "Update a sandbox onto the newest image of its release channel, keeping its files and history", {
|
|
85
156
|
channel: { kind: "parsed", parse: String, optional: true, brief: "Move onto a release channel and stay there (e.g. stable)" },
|
|
86
157
|
force: { kind: "boolean", optional: true, brief: "Update a sandbox built from a checkout anyway, leaving its local image behind" },
|
|
87
158
|
skipPreflight,
|
|
88
159
|
}),
|
|
89
|
-
rollback: verbCommand("rollback", "Put a sandbox back on the version it ran before, or on an older one kept on this
|
|
160
|
+
rollback: verbCommand("rollback", "Put a sandbox back on the version it ran before, or on an older one kept on this device", {
|
|
90
161
|
to: { kind: "parsed", parse: String, optional: true, brief: "The version or image to go back to (`versions` lists them)" },
|
|
91
162
|
skipPreflight,
|
|
92
163
|
}),
|
|
93
|
-
versions: verbCommand("versions", "The versions a sandbox can go back to on this
|
|
164
|
+
versions: verbCommand("versions", "The versions a sandbox can go back to on this device", { json }),
|
|
94
165
|
logs: verbCommand("logs", "The tail of a sandbox's own log, both streams", {
|
|
95
166
|
tail: { kind: "parsed", parse: lineCount, optional: true, brief: "How many of the last lines to print (200 unless given)" },
|
|
96
167
|
}),
|
|
@@ -98,12 +169,12 @@ export const sandboxRoutes = buildRouteMap({
|
|
|
98
169
|
watch: verbCommand("watch", "Finish or undo an interrupted swap, and judge a new version on probation (every sandbox unless one is named)", {
|
|
99
170
|
json,
|
|
100
171
|
}),
|
|
101
|
-
backup: verbCommand("backup", "Back a sandbox up now, encrypted, on this
|
|
172
|
+
backup: verbCommand("backup", "Back a sandbox up now, encrypted, on this device", {
|
|
102
173
|
auto: { kind: "boolean", optional: true, brief: "Skip it when one ran recently, the disk is low or a swap is in flight, as the daily backup does" },
|
|
103
174
|
json,
|
|
104
175
|
}),
|
|
105
|
-
backups: verbCommand("backups", "The backups this
|
|
106
|
-
fix: verbCommand("fix", "Check every layer a sandbox needs on this
|
|
176
|
+
backups: verbCommand("backups", "The backups this device holds of a sandbox", { json }),
|
|
177
|
+
fix: verbCommand("fix", "Check every layer a sandbox needs on this device, fix what is safe and ask before anything else (every sandbox unless one is named)", {
|
|
107
178
|
code: { kind: "parsed", parse: String, optional: true, brief: "The fix code from the browser's recovery panel, so that page follows this run" },
|
|
108
179
|
auto: { kind: "boolean", optional: true, brief: "Apply only the fixes that need no yes and report the rest, as the keeper does" },
|
|
109
180
|
yes: { kind: "boolean", optional: true, brief: "Say yes to every fix that asks" },
|
|
@@ -112,7 +183,8 @@ export const sandboxRoutes = buildRouteMap({
|
|
|
112
183
|
source: { kind: "parsed", parse: String, optional: true, brief: "Who the report names as asking: agent, command or app" },
|
|
113
184
|
}),
|
|
114
185
|
keeper,
|
|
186
|
+
"sleep-after": sleepAfter,
|
|
115
187
|
},
|
|
116
|
-
docs: { brief: "Look at and repair the sandboxes on this
|
|
188
|
+
docs: { brief: "Look at and repair the sandboxes on this device without a browser: ic's own verbs, passed through" },
|
|
117
189
|
});
|
|
118
190
|
//# sourceMappingURL=sandbox-cli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-cli.js","sourceRoot":"","sources":["../../src/device/sandbox-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"sandbox-cli.js","sourceRoot":"","sources":["../../src/device/sandbox-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type DeviceSwap } from "@intentic/sandbox-contract";
|
|
2
|
+
export declare const swapsArgs: readonly ["sandbox", "swaps", "--json"];
|
|
3
|
+
export declare const swapsFrom: (stdout: string) => DeviceSwap[] | undefined;
|
|
4
|
+
export interface SwapsSeams {
|
|
5
|
+
readonly ic: () => Promise<string | undefined>;
|
|
6
|
+
readonly files: () => Promise<DeviceSwap[]>;
|
|
7
|
+
}
|
|
8
|
+
export declare const DEFAULT_SWAPS_SEAMS: SwapsSeams;
|
|
9
|
+
export declare const readSwaps: (seams?: SwapsSeams) => Promise<DeviceSwap[]>;
|
|
10
|
+
export declare const swapsUnderway: (swaps: readonly DeviceSwap[]) => string[];
|
|
11
|
+
//# sourceMappingURL=ic-swaps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ic-swaps.d.ts","sourceRoot":"","sources":["../../../src/device/sandbox-rounds/ic-swaps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,4BAA4B,CAAC;AAiBhF,eAAO,MAAM,SAAS,YAAI,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAKjE,eAAO,MAAM,SAAS,WAAY,MAAM,KAAG,UAAU,EAAE,GAAG,SAezD,CAAC;AAGF,MAAM,WAAW,UAAU;IAGvB,QAAQ,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE/C,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CAC/C;AAcD,eAAO,MAAM,mBAAmB,EAAE,UAAqE,CAAC;AAIxG,eAAO,MAAM,SAAS,WAAiB,UAAU,KAAyB,OAAO,CAAC,UAAU,EAAE,CAI7F,CAAC;AAGF,eAAO,MAAM,aAAa,UAAW,SAAS,UAAU,EAAE,KAAG,MAAM,EAA6E,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { execBounded } from "@intentic/base/process";
|
|
2
|
+
import { DeviceSwapsSchema } from "@intentic/sandbox-contract";
|
|
3
|
+
import { homeDir } from "@intentic/local-agent";
|
|
4
|
+
import { icCandidates } from "../tools/ic-binary.js";
|
|
5
|
+
import { swapsFromFiles } from "./swaps-fallback.js";
|
|
6
|
+
const SWAPS_TIMEOUT_MS = 15_000;
|
|
7
|
+
export const swapsArgs = ["sandbox", "swaps", "--json"];
|
|
8
|
+
export const swapsFrom = (stdout) => {
|
|
9
|
+
const line = stdout
|
|
10
|
+
.split(/\r?\n/)
|
|
11
|
+
.map((text) => text.trim())
|
|
12
|
+
.findLast((text) => text.startsWith("["));
|
|
13
|
+
if (line === undefined) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const parsed = DeviceSwapsSchema.safeParse(JSON.parse(line));
|
|
18
|
+
return parsed.success ? parsed.data : undefined;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const askIc = async () => {
|
|
25
|
+
for (const binary of icCandidates(process.platform, homeDir())) {
|
|
26
|
+
const answer = await execBounded(binary, [...swapsArgs], { timeoutMs: SWAPS_TIMEOUT_MS }).catch(() => undefined);
|
|
27
|
+
if (answer !== undefined) {
|
|
28
|
+
return answer.stdout;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return undefined;
|
|
32
|
+
};
|
|
33
|
+
export const DEFAULT_SWAPS_SEAMS = { ic: askIc, files: async () => await swapsFromFiles() };
|
|
34
|
+
export const readSwaps = async (seams = DEFAULT_SWAPS_SEAMS) => {
|
|
35
|
+
const stdout = await seams.ic();
|
|
36
|
+
const answered = stdout === undefined ? undefined : swapsFrom(stdout);
|
|
37
|
+
return answered ?? (await seams.files());
|
|
38
|
+
};
|
|
39
|
+
export const swapsUnderway = (swaps) => swaps.filter((swap) => swap.cutoverInProgress).map((swap) => swap.slug);
|
|
40
|
+
//# sourceMappingURL=ic-swaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ic-swaps.js","sourceRoot":"","sources":["../../../src/device/sandbox-rounds/ic-swaps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAmB,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAYrD,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAKjE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAc,EAA4B,EAAE;IAClE,MAAM,IAAI,GAAG,MAAM;SACd,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QAEL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC,CAAC;AAWF,MAAM,KAAK,GAAG,KAAK,IAAiC,EAAE;IAClD,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAG7D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAe,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,cAAc,EAAE,EAAE,CAAC;AAIxG,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,KAAK,GAAe,mBAAmB,EAAyB,EAAE;IAC9F,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtE,OAAO,QAAQ,IAAI,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAA4B,EAAY,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { Log } from "@intentic/local-agent";
|
|
2
|
+
import type { RestartIntent, RestartSide } from "@intentic/sandbox-contract";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
import type { LinkReading } from "../config.js";
|
|
4
5
|
import { type IcRun, type Rounds } from "./ic-rounds.js";
|
|
6
|
+
import { type Sleepers } from "./sleep.js";
|
|
5
7
|
export declare const UNREACHABLE_AFTER_MS = 60000;
|
|
6
8
|
export declare const FIX_DEADLINE_MS: number;
|
|
7
9
|
export declare const backoffMs: (failures: number) => number;
|
|
@@ -57,7 +59,9 @@ export interface LinkView {
|
|
|
57
59
|
export declare const unreachableHere: (links: readonly LinkView[], known: ReadonlySet<string>, loopback: ReadonlySet<string>, now: number) => string[];
|
|
58
60
|
export interface ListedSandbox {
|
|
59
61
|
readonly slug: string;
|
|
62
|
+
readonly container?: string | undefined;
|
|
60
63
|
readonly keptElsewhere?: string | undefined;
|
|
64
|
+
readonly asleep?: boolean | undefined;
|
|
61
65
|
}
|
|
62
66
|
export interface KeeperScope {
|
|
63
67
|
readonly own: readonly string[];
|
|
@@ -81,6 +85,10 @@ export interface KeeperSeams {
|
|
|
81
85
|
readonly busy: ReadonlySet<string>;
|
|
82
86
|
readonly hold: (slug: string) => () => void;
|
|
83
87
|
readonly now: () => number;
|
|
88
|
+
readonly sleepMinutes?: () => Promise<number>;
|
|
89
|
+
readonly sleep?: (minutes: number) => Promise<IcRun>;
|
|
90
|
+
readonly side?: () => Promise<RestartSide>;
|
|
91
|
+
readonly writeIntent?: (container: string, intent: KeeperRestartIntent) => Promise<void>;
|
|
84
92
|
}
|
|
85
93
|
interface Wait {
|
|
86
94
|
readonly failures: number;
|
|
@@ -98,9 +106,26 @@ export interface KeeperState {
|
|
|
98
106
|
trashed: readonly string[] | undefined;
|
|
99
107
|
fixing: boolean;
|
|
100
108
|
on: boolean | undefined;
|
|
109
|
+
readonly sleepers: Sleepers;
|
|
101
110
|
}
|
|
102
|
-
export declare const newKeeperState: (start: number) => KeeperState;
|
|
111
|
+
export declare const newKeeperState: (start: number, sleepers?: Sleepers) => KeeperState;
|
|
103
112
|
export declare const fixedClears: (wait: Pick<Wait, "failures" | "failedAt" | "fixedOnce"> | undefined, now: number) => boolean;
|
|
113
|
+
export interface KeeperRestartIntent extends RestartIntent {
|
|
114
|
+
readonly by: "keeper";
|
|
115
|
+
readonly host: string;
|
|
116
|
+
readonly side: RestartSide;
|
|
117
|
+
readonly action: "restart";
|
|
118
|
+
readonly checks: string[];
|
|
119
|
+
}
|
|
120
|
+
export type FixTrigger = {
|
|
121
|
+
readonly kind: "sweep";
|
|
122
|
+
} | {
|
|
123
|
+
readonly kind: "link";
|
|
124
|
+
readonly since: number | undefined;
|
|
125
|
+
};
|
|
126
|
+
export declare const restartIntent: (doing: string, trigger: FixTrigger, side: RestartSide, host: string, now: number) => KeeperRestartIntent;
|
|
127
|
+
export declare const INTENT_DEADLINE_MS = 3000;
|
|
128
|
+
export declare const RESTART_INTENT_PATH = "/history/logs/restart-intent.json";
|
|
104
129
|
export declare const runKeeperRound: (state: KeeperState, seams: KeeperSeams, log: Log) => Promise<void>;
|
|
105
130
|
export interface KeeperWiring {
|
|
106
131
|
readonly links: () => readonly LinkView[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keeper.d.ts","sourceRoot":"","sources":["../../../src/device/sandbox-rounds/keeper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keeper.d.ts","sourceRoot":"","sources":["../../../src/device/sandbox-rounds/keeper.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,KAAK,EAAY,KAAK,MAAM,EAAe,MAAM,gBAAgB,CAAC;AAIhF,OAAO,EAKH,KAAK,QAAQ,EAKhB,MAAM,YAAY,CAAC;AAepB,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAG3C,eAAO,MAAM,eAAe,QAAa,CAAC;AAS1C,eAAO,MAAM,SAAS,aAAc,MAAM,KAAG,MAAgG,CAAC;AAY9I,eAAO,MAAM,aAAa,UAAW,MAAM,KAAG,MAAM,EAAwG,CAAC;AAK7J,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD,QAAA,MAAM,cAAc;;;;;;;iBAOlB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAStD,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;iBAA0D,CAAC;AAChF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAc5C,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAaD,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,WAAW,GAAG,SAIxD,CAAC;AAWF,eAAO,MAAM,UAAU,WAAY,MAAM,KAAG,SAAS,EAGJ,CAAC;AAalD,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAYhH,eAAO,MAAM,UAAU,QAAS,KAAK,KAAG,aAOvC,CAAC;AAQF,eAAO,MAAM,OAAO,WAAY,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAG,OACuD,CAAC;AAgBpH,eAAO,MAAM,WAAW,WAAY,SAAS,KAAG,MAO/C,CAAC;AAaF,eAAO,MAAM,WAAW,eAAgB,MAAM,SAAS,WAAW,CAAC,MAAM,CAAC,YAAY,OAAO,KAAG,MAAM,GAAG,SAGxG,CAAC;AAGF,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CACjC;AAGD,eAAO,MAAM,eAAe,UAAW,SAAS,QAAQ,EAAE,SAAS,WAAW,CAAC,MAAM,CAAC,YAAY,WAAW,CAAC,MAAM,CAAC,OAAO,MAAM,KAAG,MAAM,EAKrI,CAAC;AAUP,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC;AAWD,MAAM,WAAW,WAAW;IAGxB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAGpC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAE5C,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC3C;AAID,eAAO,MAAM,WAAW,WACZ,SAAS,aAAa,EAAE,GAAG,SAAS,WACnC,SAAS,MAAM,EAAE,WACjB,SAAS,MAAM,EAAE,GAAG,SAAS,KACvC,WAcF,CAAC;AAKF,eAAO,MAAM,WAAW,YAAmB,MAAM,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,WAAW,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,KAAG,OAAO,CAAC,MAAM,EAAE,CAI/I,CAAC;AAIF,eAAO,MAAM,WAAW,YAAa,MAAM,KAAG,MAAM,EAIS,CAAC;AAW9D,MAAM,WAAW,WAAW;IAExB,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAI3F,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAEnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,SAAS,QAAQ,EAAE,CAAC;IAE1C,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC;IAEjC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC;IAE5C,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAG3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAGrD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5F;AAED,UAAU,IAAI;IACV,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IAEtB,WAAW,EAAE,IAAI,CAAC;IAElB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAGlC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGnC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,CAAC;IAC7C,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAEvC,MAAM,EAAE,OAAO,CAAC;IAEhB,EAAE,EAAE,OAAO,GAAG,SAAS,CAAC;IAExB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC/B;AAED,eAAO,MAAM,cAAc,UAAW,MAAM,aAAY,QAAQ,KAAmB,WAWjF,CAAC;AA2CH,eAAO,MAAM,WAAW,SAAU,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,OAAO,MAAM,KAAG,OAK/D,CAAC;AAsFjD,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACtD,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAC7B;AAmBD,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAWpH,eAAO,MAAM,aAAa,UAAW,MAAM,WAAW,UAAU,QAAQ,WAAW,QAAQ,MAAM,OAAO,MAAM,KAAG,mBAYhH,CAAC;AAGF,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AACxC,eAAO,MAAM,mBAAmB,sCAA6C,CAAC;AA8J9E,eAAO,MAAM,cAAc,UAAiB,WAAW,SAAS,WAAW,OAAO,GAAG,KAAG,OAAO,CAAC,IAAI,CA4BnG,CAAC;AAGF,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,SAAS,QAAQ,EAAE,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC;CACpC;AAGD,eAAO,MAAM,WAAW;aAAK,KAAK;CAAkB,CAAC;AAErD,eAAO,MAAM,QAAQ,QAAa,OAAO,CAAC,OAAO,CAAwD,CAAC;AAE1G,eAAO,MAAM,kBAAkB,kCAAmC,YAAY,KAAG,WAwB/E,CAAC;AAIH,eAAO,MAAM,WAAW,QAAS,GAAG,UAAU,YAAY,KAAG,MAgB5D,CAAC"}
|