@the-librarian/cli 1.0.0-rc.5 → 1.0.0-rc.51
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 +53 -7
- package/dist/archive.d.ts +15 -0
- package/dist/archive.d.ts.map +1 -0
- package/dist/archive.js +58 -0
- package/dist/archive.js.map +1 -0
- package/dist/harnesses/codex.d.ts +13 -0
- package/dist/harnesses/codex.d.ts.map +1 -1
- package/dist/harnesses/codex.js +210 -26
- package/dist/harnesses/codex.js.map +1 -1
- package/dist/harnesses/hermes.d.ts +1 -1
- package/dist/harnesses/hermes.d.ts.map +1 -1
- package/dist/harnesses/hermes.js +42 -23
- package/dist/harnesses/hermes.js.map +1 -1
- package/dist/harnesses/opencode.d.ts +12 -0
- package/dist/harnesses/opencode.d.ts.map +1 -1
- package/dist/harnesses/opencode.js +122 -5
- package/dist/harnesses/opencode.js.map +1 -1
- package/dist/paths.d.ts +16 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +22 -0
- package/dist/paths.js.map +1 -1
- package/dist/runtime.d.ts +14 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +230 -1
- package/dist/runtime.js.map +1 -1
- package/dist/server/admin.d.ts +31 -0
- package/dist/server/admin.d.ts.map +1 -0
- package/dist/server/admin.js +131 -0
- package/dist/server/admin.js.map +1 -0
- package/dist/server/autoupdate.d.ts +184 -0
- package/dist/server/autoupdate.d.ts.map +1 -0
- package/dist/server/autoupdate.js +794 -0
- package/dist/server/autoupdate.js.map +1 -0
- package/dist/server/boot.d.ts +51 -0
- package/dist/server/boot.d.ts.map +1 -0
- package/dist/server/boot.js +233 -0
- package/dist/server/boot.js.map +1 -0
- package/dist/server/deploy-state.d.ts +40 -0
- package/dist/server/deploy-state.d.ts.map +1 -0
- package/dist/server/deploy-state.js +89 -0
- package/dist/server/deploy-state.js.map +1 -0
- package/dist/server/docker.d.ts +53 -0
- package/dist/server/docker.d.ts.map +1 -0
- package/dist/server/docker.js +166 -0
- package/dist/server/docker.js.map +1 -0
- package/dist/server/down.d.ts +19 -0
- package/dist/server/down.d.ts.map +1 -0
- package/dist/server/down.js +62 -0
- package/dist/server/down.js.map +1 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +50 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/logs.d.ts +50 -0
- package/dist/server/logs.d.ts.map +1 -0
- package/dist/server/logs.js +162 -0
- package/dist/server/logs.js.map +1 -0
- package/dist/server/preflight.d.ts +24 -0
- package/dist/server/preflight.d.ts.map +1 -0
- package/dist/server/preflight.js +58 -0
- package/dist/server/preflight.js.map +1 -0
- package/dist/server/redact.d.ts +2 -0
- package/dist/server/redact.d.ts.map +1 -0
- package/dist/server/redact.js +26 -0
- package/dist/server/redact.js.map +1 -0
- package/dist/server/status.d.ts +20 -0
- package/dist/server/status.d.ts.map +1 -0
- package/dist/server/status.js +103 -0
- package/dist/server/status.js.map +1 -0
- package/dist/server/up.d.ts +244 -0
- package/dist/server/up.d.ts.map +1 -0
- package/dist/server/up.js +758 -0
- package/dist/server/up.js.map +1 -0
- package/dist/server/update.d.ts +35 -0
- package/dist/server/update.d.ts.map +1 -0
- package/dist/server/update.js +313 -0
- package/dist/server/update.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoupdate.js","sourceRoot":"","sources":["../../src/server/autoupdate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** The systemd unit file name (single instance per host). */
|
|
2
|
+
export declare const UNIT_NAME = "the-librarian.service";
|
|
3
|
+
/** The absolute path the unit is installed at (the system unit, via sudo). */
|
|
4
|
+
export declare function unitPath(): string;
|
|
5
|
+
export interface BootOptions {
|
|
6
|
+
/** Platform — gates the macOS deferral. Default `process.platform`. */
|
|
7
|
+
platform?: NodeJS.Platform | undefined;
|
|
8
|
+
}
|
|
9
|
+
/** A teaching error from boot ops; the runtime renders `.message` as one stderr line. */
|
|
10
|
+
export declare class BootError extends Error {
|
|
11
|
+
constructor(message: string);
|
|
12
|
+
}
|
|
13
|
+
export interface BootResult {
|
|
14
|
+
/** Human-readable report for stdout. */
|
|
15
|
+
output: string;
|
|
16
|
+
}
|
|
17
|
+
/** Inputs to the pure unit generator (only a docker path — NEVER a secret). */
|
|
18
|
+
export interface UnitInput {
|
|
19
|
+
/** The absolute path to the `docker` binary used in ExecStart/ExecStop. */
|
|
20
|
+
dockerPath: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Generate the systemd unit text. PURE + unit-tested. The headline invariant:
|
|
24
|
+
* it contains NO secret — no agent token, no `LIBRARIAN_AGENT_TOKEN`, no
|
|
25
|
+
* `docker run` / `-e` env injection — only a `docker start --attach` /
|
|
26
|
+
* `docker stop` of the EXISTING named container. The container already carries
|
|
27
|
+
* its env (incl. the token) in Docker's own state, so referencing it by name
|
|
28
|
+
* needs no secret in this file.
|
|
29
|
+
*/
|
|
30
|
+
export declare function generateUnit(input: UnitInput): string;
|
|
31
|
+
/** The one-line macOS-deferred notice (shared by enable/disable + `up`). */
|
|
32
|
+
export declare const MACOS_NOTICE: string;
|
|
33
|
+
/**
|
|
34
|
+
* Enable boot persistence. On Linux: write the unit to `/etc/systemd/system`
|
|
35
|
+
* (root, so temp-file + `sudo cp` + `sudo chmod 644`), `sudo systemctl
|
|
36
|
+
* daemon-reload`, then `sudo systemctl enable --now the-librarian.service`.
|
|
37
|
+
* Idempotent — re-running rewrites the SAME unit path and re-enables, never
|
|
38
|
+
* duplicating. On macOS: print the deferred notice and skip cleanly (NOT an
|
|
39
|
+
* error).
|
|
40
|
+
*/
|
|
41
|
+
export declare function enableBoot(options?: BootOptions): Promise<BootResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Disable boot persistence. On Linux: `sudo systemctl disable --now
|
|
44
|
+
* the-librarian.service`, remove the unit file (`sudo rm -f`), then `sudo
|
|
45
|
+
* systemctl daemon-reload`. Safe if already disabled/absent — a non-zero
|
|
46
|
+
* `disable` (unit not loaded) becomes a friendly teaching message, never a
|
|
47
|
+
* crash; the `rm -f` + reload still run so a stale unit file is cleaned up. On
|
|
48
|
+
* macOS: print the deferred notice and skip cleanly.
|
|
49
|
+
*/
|
|
50
|
+
export declare function disableBoot(options?: BootOptions): Promise<BootResult>;
|
|
51
|
+
//# sourceMappingURL=boot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../src/server/boot.ts"],"names":[],"mappings":"AAoCA,6DAA6D;AAC7D,eAAO,MAAM,SAAS,0BAA0B,CAAC;AAKjD,8EAA8E;AAC9E,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAKD,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;CACxC;AAED,yFAAyF;AACzF,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+EAA+E;AAC/E,MAAM,WAAW,SAAS;IACxB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CA+BrD;AAED,4EAA4E;AAC5E,eAAO,MAAM,YAAY,QAGsC,CAAC;AAkChE;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2B/E;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CA+BhF"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
// `librarian server enable-boot` / `disable-boot` — Linux systemd boot
|
|
2
|
+
// persistence for the all-in-one container. (macOS launchd is deferred — §9.)
|
|
3
|
+
//
|
|
4
|
+
// SECURITY — the whole point of this slice. The systemd unit MUST NOT contain
|
|
5
|
+
// any secret. We do NOT bake a `docker run -e LIBRARIAN_AGENT_TOKEN=…` into
|
|
6
|
+
// `ExecStart`: that would write the agent token into a world-readable
|
|
7
|
+
// `/etc/systemd/system/*.service` file — a leak. Instead the unit references the
|
|
8
|
+
// EXISTING named container (created by `up`/`update`, whose env — including the
|
|
9
|
+
// token — lives in Docker's own container state, not a file we manage):
|
|
10
|
+
//
|
|
11
|
+
// ExecStart=/usr/bin/docker start --attach the-librarian
|
|
12
|
+
// ExecStop=/usr/bin/docker stop the-librarian
|
|
13
|
+
//
|
|
14
|
+
// `docker start --attach` re-uses the container exactly as `up` created it
|
|
15
|
+
// (same name, same env, same volume) and stays in the foreground so systemd's
|
|
16
|
+
// `Type=simple` supervision + `Restart=always` work. This survives a `server
|
|
17
|
+
// update` (which recreates the SAME container name) and reboots, with NO secret
|
|
18
|
+
// anywhere on disk that we write.
|
|
19
|
+
//
|
|
20
|
+
// We default to a SYSTEM unit (`/etc/systemd/system/…`, via `sudo`) because it
|
|
21
|
+
// boots reliably without a login session. (A `--user` unit under
|
|
22
|
+
// `~/.config/systemd/user/` would need `loginctl enable-linger` to survive
|
|
23
|
+
// logout — out of scope for v1; deliberately not built.)
|
|
24
|
+
//
|
|
25
|
+
// Writing to `/etc/systemd/system` needs root, so the unit is written to a
|
|
26
|
+
// temp file first (NON-SECRET content) and then `sudo cp`'d into place — every
|
|
27
|
+
// privileged step (`sudo cp`/`chmod`/`rm`, `sudo systemctl …`) routes through
|
|
28
|
+
// the injectable `docker.ts` runner so tests assert the exact argv and never
|
|
29
|
+
// touch real systemd, sudo, or docker.
|
|
30
|
+
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
31
|
+
import { tmpdir } from "node:os";
|
|
32
|
+
import path from "node:path";
|
|
33
|
+
import { run, which } from "./docker.js";
|
|
34
|
+
import { CONTAINER_NAME } from "./up.js";
|
|
35
|
+
/** The systemd unit file name (single instance per host). */
|
|
36
|
+
export const UNIT_NAME = "the-librarian.service";
|
|
37
|
+
/** The system-unit directory (a system unit boots without a login session). */
|
|
38
|
+
const SYSTEMD_SYSTEM_DIR = "/etc/systemd/system";
|
|
39
|
+
/** The absolute path the unit is installed at (the system unit, via sudo). */
|
|
40
|
+
export function unitPath() {
|
|
41
|
+
return path.join(SYSTEMD_SYSTEM_DIR, UNIT_NAME);
|
|
42
|
+
}
|
|
43
|
+
/** Fallback docker path if `which docker` can't be resolved (well-known location). */
|
|
44
|
+
const DEFAULT_DOCKER_PATH = "/usr/bin/docker";
|
|
45
|
+
/** A teaching error from boot ops; the runtime renders `.message` as one stderr line. */
|
|
46
|
+
export class BootError extends Error {
|
|
47
|
+
constructor(message) {
|
|
48
|
+
super(message);
|
|
49
|
+
this.name = "BootError";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Generate the systemd unit text. PURE + unit-tested. The headline invariant:
|
|
54
|
+
* it contains NO secret — no agent token, no `LIBRARIAN_AGENT_TOKEN`, no
|
|
55
|
+
* `docker run` / `-e` env injection — only a `docker start --attach` /
|
|
56
|
+
* `docker stop` of the EXISTING named container. The container already carries
|
|
57
|
+
* its env (incl. the token) in Docker's own state, so referencing it by name
|
|
58
|
+
* needs no secret in this file.
|
|
59
|
+
*/
|
|
60
|
+
export function generateUnit(input) {
|
|
61
|
+
const { dockerPath } = input;
|
|
62
|
+
return [
|
|
63
|
+
"[Unit]",
|
|
64
|
+
"Description=The Librarian (all-in-one)",
|
|
65
|
+
"After=docker.service",
|
|
66
|
+
"Requires=docker.service",
|
|
67
|
+
"",
|
|
68
|
+
"[Service]",
|
|
69
|
+
"Type=simple",
|
|
70
|
+
// SC5 (ADR 0008) — env-file POINTER, deliberately a comment, not a directive.
|
|
71
|
+
// `docker start --attach` re-uses the container's env exactly as `up`/`update`
|
|
72
|
+
// baked it from <deployDir>/deploy.env (0600); it does NOT read systemd's
|
|
73
|
+
// `Environment*`. A live `EnvironmentFile=` here would be silently ignored —
|
|
74
|
+
// misleading config — so this stays a comment that just tells a reader where
|
|
75
|
+
// the credentials live, with no value of any kind written into this file.
|
|
76
|
+
`# Container env (incl. credentials) is baked into the '${CONTAINER_NAME}' container`,
|
|
77
|
+
"# at `librarian server up`/`update`, sourced from the 0600 deploy.env in the",
|
|
78
|
+
"# deploy dir (default ~/.librarian/server). `docker start` re-uses that frozen",
|
|
79
|
+
"# env, so nothing sensitive is (or should be) written into this unit file.",
|
|
80
|
+
// Reference the EXISTING named container — NO `docker run`, NO `-e <secret>`.
|
|
81
|
+
// `--attach` keeps it in the foreground so Type=simple supervision works.
|
|
82
|
+
`ExecStart=${dockerPath} start --attach ${CONTAINER_NAME}`,
|
|
83
|
+
`ExecStop=${dockerPath} stop ${CONTAINER_NAME}`,
|
|
84
|
+
"Restart=always",
|
|
85
|
+
"RestartSec=5",
|
|
86
|
+
"",
|
|
87
|
+
"[Install]",
|
|
88
|
+
"WantedBy=multi-user.target",
|
|
89
|
+
"",
|
|
90
|
+
].join("\n");
|
|
91
|
+
}
|
|
92
|
+
/** The one-line macOS-deferred notice (shared by enable/disable + `up`). */
|
|
93
|
+
export const MACOS_NOTICE = "Boot persistence is Linux-only for now (launchd support is deferred). " +
|
|
94
|
+
"Skipping — on macOS, start the server manually with `librarian server up`, " +
|
|
95
|
+
"or use Docker Desktop's 'start on login' for the container.";
|
|
96
|
+
/** True iff boot persistence is unsupported on this platform (macOS for now). */
|
|
97
|
+
function isUnsupportedPlatform(platform) {
|
|
98
|
+
return platform === "darwin";
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Boot-specific preflight: `docker` must be on PATH (the unit runs `docker
|
|
102
|
+
* start` at boot). Unlike the container-op preflight this does NOT require git
|
|
103
|
+
* or a reachable daemon — enabling/disabling a unit file needs neither. A
|
|
104
|
+
* missing docker is a teaching `BootError`.
|
|
105
|
+
*/
|
|
106
|
+
async function requireDocker() {
|
|
107
|
+
if ((await which("docker")) === null) {
|
|
108
|
+
throw new BootError("Docker is required but was not found on your PATH. " +
|
|
109
|
+
"The boot unit runs `docker start` — install Docker Engine (Linux) " +
|
|
110
|
+
"— see https://docs.docker.com/get-docker/ — then re-run this command.");
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Resolve the absolute `docker` path for the unit's ExecStart. Goes through the
|
|
115
|
+
* injectable runner (`which docker`); falls back to the well-known
|
|
116
|
+
* `/usr/bin/docker` so a non-standard `which` output never breaks unit
|
|
117
|
+
* generation. The path is non-secret, so a fallback is safe.
|
|
118
|
+
*/
|
|
119
|
+
async function resolveDockerPath() {
|
|
120
|
+
const resolved = await which("docker");
|
|
121
|
+
return resolved && resolved.trim().length > 0 ? resolved.trim() : DEFAULT_DOCKER_PATH;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Enable boot persistence. On Linux: write the unit to `/etc/systemd/system`
|
|
125
|
+
* (root, so temp-file + `sudo cp` + `sudo chmod 644`), `sudo systemctl
|
|
126
|
+
* daemon-reload`, then `sudo systemctl enable --now the-librarian.service`.
|
|
127
|
+
* Idempotent — re-running rewrites the SAME unit path and re-enables, never
|
|
128
|
+
* duplicating. On macOS: print the deferred notice and skip cleanly (NOT an
|
|
129
|
+
* error).
|
|
130
|
+
*/
|
|
131
|
+
export async function enableBoot(options = {}) {
|
|
132
|
+
const platform = options.platform ?? process.platform;
|
|
133
|
+
if (isUnsupportedPlatform(platform)) {
|
|
134
|
+
return { output: MACOS_NOTICE };
|
|
135
|
+
}
|
|
136
|
+
// Boot persistence runs `docker start` at boot, so it needs `docker` on PATH
|
|
137
|
+
// — but NOT git (no clone here) and NOT a reachable daemon right now (the unit
|
|
138
|
+
// fires at boot, not at enable time). A lighter, boot-specific preflight.
|
|
139
|
+
await requireDocker();
|
|
140
|
+
const dockerPath = await resolveDockerPath();
|
|
141
|
+
const unit = generateUnit({ dockerPath });
|
|
142
|
+
await installUnit(unit);
|
|
143
|
+
// daemon-reload BEFORE enable --now so systemd sees the (possibly rewritten)
|
|
144
|
+
// unit. enable --now both enables-on-boot and starts the container now.
|
|
145
|
+
await sudoSystemctl(["daemon-reload"]);
|
|
146
|
+
await sudoSystemctl(["enable", "--now", UNIT_NAME]);
|
|
147
|
+
return {
|
|
148
|
+
output: [
|
|
149
|
+
`Boot persistence enabled — ${UNIT_NAME} will start the container on boot.`,
|
|
150
|
+
` Unit: ${unitPath()} (references the existing '${CONTAINER_NAME}' container; no secret in the file)`,
|
|
151
|
+
"Disable it again with `librarian server disable-boot`.",
|
|
152
|
+
].join("\n"),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Disable boot persistence. On Linux: `sudo systemctl disable --now
|
|
157
|
+
* the-librarian.service`, remove the unit file (`sudo rm -f`), then `sudo
|
|
158
|
+
* systemctl daemon-reload`. Safe if already disabled/absent — a non-zero
|
|
159
|
+
* `disable` (unit not loaded) becomes a friendly teaching message, never a
|
|
160
|
+
* crash; the `rm -f` + reload still run so a stale unit file is cleaned up. On
|
|
161
|
+
* macOS: print the deferred notice and skip cleanly.
|
|
162
|
+
*/
|
|
163
|
+
export async function disableBoot(options = {}) {
|
|
164
|
+
const platform = options.platform ?? process.platform;
|
|
165
|
+
if (isUnsupportedPlatform(platform)) {
|
|
166
|
+
return { output: MACOS_NOTICE };
|
|
167
|
+
}
|
|
168
|
+
await requireDocker();
|
|
169
|
+
// disable --now: tolerate "unit does not exist / not loaded" — already off.
|
|
170
|
+
const disable = await run("sudo", ["systemctl", "disable", "--now", UNIT_NAME]);
|
|
171
|
+
const alreadyAbsent = disable.code !== 0 && isUnitAbsent(disable.stderr);
|
|
172
|
+
if (disable.code !== 0 && !alreadyAbsent) {
|
|
173
|
+
failIfNonZero("sudo", ["systemctl", "disable", "--now", UNIT_NAME], disable);
|
|
174
|
+
}
|
|
175
|
+
// Remove the unit file (idempotent with `-f`), then daemon-reload so systemd
|
|
176
|
+
// forgets it. `rm -f` never errors on an absent file.
|
|
177
|
+
await sudoRun(["rm", "-f", unitPath()]);
|
|
178
|
+
await sudoSystemctl(["daemon-reload"]);
|
|
179
|
+
return {
|
|
180
|
+
output: alreadyAbsent
|
|
181
|
+
? [
|
|
182
|
+
`Boot persistence was not enabled (${UNIT_NAME} was not loaded) — nothing to disable.`,
|
|
183
|
+
`Removed any stale unit file at ${unitPath()} and reloaded systemd.`,
|
|
184
|
+
].join("\n")
|
|
185
|
+
: [
|
|
186
|
+
`Boot persistence disabled — ${UNIT_NAME} removed and systemd reloaded.`,
|
|
187
|
+
"The container itself is untouched; stop it with `librarian server down`.",
|
|
188
|
+
].join("\n"),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
// --- privileged steps (every one through the injectable runner) ----------
|
|
192
|
+
/**
|
|
193
|
+
* Write the unit to the system path. `/etc/systemd/system` needs root, so the
|
|
194
|
+
* NON-SECRET unit text is written to a temp file first, then `sudo cp`'d into
|
|
195
|
+
* place and `sudo chmod 644`'d (world-readable is fine — there is no secret in
|
|
196
|
+
* it, by construction). The temp file is removed afterward. The `cp`/`chmod`
|
|
197
|
+
* argv is asserted by tests; the temp source carries the unit content for the
|
|
198
|
+
* test's no-secret check (the fake runner doesn't really move it).
|
|
199
|
+
*/
|
|
200
|
+
async function installUnit(unit) {
|
|
201
|
+
const dir = mkdtempSync(path.join(tmpdir(), "librarian-unit-"));
|
|
202
|
+
const tmp = path.join(dir, UNIT_NAME);
|
|
203
|
+
writeFileSync(tmp, unit, "utf8");
|
|
204
|
+
try {
|
|
205
|
+
await sudoRun(["cp", tmp, unitPath()]);
|
|
206
|
+
await sudoRun(["chmod", "644", unitPath()]);
|
|
207
|
+
}
|
|
208
|
+
finally {
|
|
209
|
+
rmSync(dir, { recursive: true, force: true });
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/** Run `sudo systemctl <args…>`; a non-zero exit is a teaching error. */
|
|
213
|
+
async function sudoSystemctl(args) {
|
|
214
|
+
await sudoRun(["systemctl", ...args]);
|
|
215
|
+
}
|
|
216
|
+
/** Run `sudo <args…>`; a non-zero exit is a teaching error. */
|
|
217
|
+
async function sudoRun(args) {
|
|
218
|
+
const result = await run("sudo", args);
|
|
219
|
+
failIfNonZero("sudo", args, result);
|
|
220
|
+
}
|
|
221
|
+
/** True when a `systemctl disable` failure means the unit simply isn't loaded. */
|
|
222
|
+
function isUnitAbsent(stderr) {
|
|
223
|
+
return /does not exist|not loaded|no such file|not found/i.test(stderr);
|
|
224
|
+
}
|
|
225
|
+
function failIfNonZero(cmd, args, result) {
|
|
226
|
+
if (result.code === 0)
|
|
227
|
+
return;
|
|
228
|
+
const detail = result.stderr.trim() || result.stdout.trim();
|
|
229
|
+
throw new BootError(`\`${cmd} ${args[0]}\` failed (exit ${result.code ?? "signal"})` +
|
|
230
|
+
(detail ? `:\n${detail}` : ".") +
|
|
231
|
+
"\n\nResolve the error above (you may need sudo privileges), then re-run the command.");
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=boot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../../src/server/boot.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,sEAAsE;AACtE,iFAAiF;AACjF,gFAAgF;AAChF,wEAAwE;AACxE,EAAE;AACF,2DAA2D;AAC3D,gDAAgD;AAChD,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,gFAAgF;AAChF,kCAAkC;AAClC,EAAE;AACF,+EAA+E;AAC/E,iEAAiE;AACjE,2EAA2E;AAC3E,yDAAyD;AACzD,EAAE;AACF,2EAA2E;AAC3E,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,uCAAuC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAEjD,+EAA+E;AAC/E,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEjD,8EAA8E;AAC9E,MAAM,UAAU,QAAQ;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,sFAAsF;AACtF,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAO9C,yFAAyF;AACzF,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAaD;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAgB;IAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC7B,OAAO;QACL,QAAQ;QACR,wCAAwC;QACxC,sBAAsB;QACtB,yBAAyB;QACzB,EAAE;QACF,WAAW;QACX,aAAa;QACb,8EAA8E;QAC9E,+EAA+E;QAC/E,0EAA0E;QAC1E,6EAA6E;QAC7E,6EAA6E;QAC7E,0EAA0E;QAC1E,0DAA0D,cAAc,aAAa;QACrF,8EAA8E;QAC9E,gFAAgF;QAChF,4EAA4E;QAC5E,8EAA8E;QAC9E,0EAA0E;QAC1E,aAAa,UAAU,mBAAmB,cAAc,EAAE;QAC1D,YAAY,UAAU,SAAS,cAAc,EAAE;QAC/C,gBAAgB;QAChB,cAAc;QACd,EAAE;QACF,WAAW;QACX,4BAA4B;QAC5B,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,YAAY,GACvB,wEAAwE;IACxE,6EAA6E;IAC7E,6DAA6D,CAAC;AAEhE,iFAAiF;AACjF,SAAS,qBAAqB,CAAC,QAAyB;IACtD,OAAO,QAAQ,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrC,MAAM,IAAI,SAAS,CACjB,qDAAqD;YACnD,oEAAoE;YACpE,uEAAuE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACxF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAuB,EAAE;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAClC,CAAC;IAED,6EAA6E;IAC7E,+EAA+E;IAC/E,0EAA0E;IAC1E,MAAM,aAAa,EAAE,CAAC;IAEtB,MAAM,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1C,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IAExB,6EAA6E;IAC7E,wEAAwE;IACxE,MAAM,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACvC,MAAM,aAAa,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM,EAAE;YACN,8BAA8B,SAAS,oCAAoC;YAC3E,WAAW,QAAQ,EAAE,8BAA8B,cAAc,qCAAqC;YACtG,wDAAwD;SACzD,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAuB,EAAE;IACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,aAAa,EAAE,CAAC;IAEtB,4EAA4E;IAC5E,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACzC,aAAa,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;IAED,6EAA6E;IAC7E,sDAAsD;IACtD,MAAM,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IAEvC,OAAO;QACL,MAAM,EAAE,aAAa;YACnB,CAAC,CAAC;gBACE,qCAAqC,SAAS,wCAAwC;gBACtF,kCAAkC,QAAQ,EAAE,wBAAwB;aACrE,CAAC,IAAI,CAAC,IAAI,CAAC;YACd,CAAC,CAAC;gBACE,+BAA+B,SAAS,gCAAgC;gBACxE,0EAA0E;aAC3E,CAAC,IAAI,CAAC,IAAI,CAAC;KACjB,CAAC;AACJ,CAAC;AAED,4EAA4E;AAE5E;;;;;;;GAOG;AACH,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACtC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,KAAK,UAAU,aAAa,CAAC,IAAc;IACzC,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,+DAA+D;AAC/D,KAAK,UAAU,OAAO,CAAC,IAAc;IACnC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,kFAAkF;AAClF,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,mDAAmD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,aAAa,CACpB,GAAW,EACX,IAAc,EACd,MAA+D;IAE/D,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,IAAI,SAAS,CACjB,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,IAAI,IAAI,QAAQ,GAAG;QAC9D,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/B,sFAAsF,CACzF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The deploy-state recorded after a successful `up` (and rewritten by `update`).
|
|
3
|
+
* Every field is NON-SECRET — see the module header. Do NOT add a token/key.
|
|
4
|
+
*/
|
|
5
|
+
export interface DeployState {
|
|
6
|
+
/** The container name every `server` command operates on. */
|
|
7
|
+
containerName: string;
|
|
8
|
+
/** The resolved bind host the container publishes on (`127.0.0.1`, a tailnet IP, `0.0.0.0`). */
|
|
9
|
+
host: string;
|
|
10
|
+
/** The named data volume mounted at `/data` (sacred across `down`/`update`). */
|
|
11
|
+
dataVolume: string;
|
|
12
|
+
/**
|
|
13
|
+
* A host directory bind-mounted at `/data` instead of the named volume, when the
|
|
14
|
+
* operator chose one via `--data-dir`. Optional — absent on named-volume deploys
|
|
15
|
+
* and on states written before this field existed. When set, `update` reuses it
|
|
16
|
+
* and runs the container as its owner.
|
|
17
|
+
*/
|
|
18
|
+
dataDir?: string | undefined;
|
|
19
|
+
/** The deployed ref — a `vX.Y.Z` tag or `main` (what was checked out + built). */
|
|
20
|
+
ref: string;
|
|
21
|
+
/** The built image tag (`the-librarian:<ref>`). */
|
|
22
|
+
imageTag: string;
|
|
23
|
+
}
|
|
24
|
+
/** `<dir>/deploy-state.json` — the deploy-state file path within a deploy dir. */
|
|
25
|
+
export declare function deployStatePath(dir: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Write the deploy-state to `<dir>/deploy-state.json`, creating `dir` if absent.
|
|
28
|
+
*
|
|
29
|
+
* Only the five declared fields are persisted — a `pick`, not a spread — so no
|
|
30
|
+
* extra key (e.g. a smuggled token) can ride along into the file. The file is
|
|
31
|
+
* non-secret, so it gets ordinary (not 0600) permissions.
|
|
32
|
+
*/
|
|
33
|
+
export declare function writeDeployState(dir: string, state: DeployState): void;
|
|
34
|
+
/**
|
|
35
|
+
* Read the deploy-state back, or `null` if the file is absent, unparseable, or
|
|
36
|
+
* missing any required field. Never throws — a missing/corrupt state file means
|
|
37
|
+
* the caller falls back (e.g. `status` uses `git describe`), never crashes.
|
|
38
|
+
*/
|
|
39
|
+
export declare function readDeployState(dir: string): DeployState | null;
|
|
40
|
+
//# sourceMappingURL=deploy-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-state.d.ts","sourceRoot":"","sources":["../../src/server/deploy-state.ts"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAetE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA6B/D"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// The NON-SECRET deploy-state file for the `server` command group.
|
|
2
|
+
//
|
|
3
|
+
// `up` runs the container with a chosen bind host, data volume, and ref, but
|
|
4
|
+
// none of that was persisted anywhere — so `update` couldn't recreate the
|
|
5
|
+
// container with the same config and `status` couldn't report the deployed ref
|
|
6
|
+
// reliably (it would have to guess via `git describe`). This file records that
|
|
7
|
+
// config in the deploy dir (default `~/.librarian/server/deploy-state.json`).
|
|
8
|
+
//
|
|
9
|
+
// SECURITY (AGENTS.md / spec §11): this file is NON-SECRET by construction. It
|
|
10
|
+
// carries ONLY non-secret fields — a bind host, a volume name (and an optional
|
|
11
|
+
// host data dir), a ref, an image tag, and the container name. It NEVER carries
|
|
12
|
+
// a bearer token, master
|
|
13
|
+
// key, or admin token. `writeDeployState` whitelists exactly those fields, so a
|
|
14
|
+
// caller that accidentally passes extra keys (a smuggled secret) cannot leak
|
|
15
|
+
// them into the file. The master key / admin token are surfaced to stdout once
|
|
16
|
+
// by `up` and persisted nowhere host-side — that contract is unchanged.
|
|
17
|
+
import fs from "node:fs";
|
|
18
|
+
import path from "node:path";
|
|
19
|
+
/** The keys we ever persist — the whitelist that keeps secrets out of the file. */
|
|
20
|
+
const STATE_KEYS = ["containerName", "host", "dataVolume", "ref", "imageTag"];
|
|
21
|
+
/** `<dir>/deploy-state.json` — the deploy-state file path within a deploy dir. */
|
|
22
|
+
export function deployStatePath(dir) {
|
|
23
|
+
return path.join(dir, "deploy-state.json");
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Write the deploy-state to `<dir>/deploy-state.json`, creating `dir` if absent.
|
|
27
|
+
*
|
|
28
|
+
* Only the five declared fields are persisted — a `pick`, not a spread — so no
|
|
29
|
+
* extra key (e.g. a smuggled token) can ride along into the file. The file is
|
|
30
|
+
* non-secret, so it gets ordinary (not 0600) permissions.
|
|
31
|
+
*/
|
|
32
|
+
export function writeDeployState(dir, state) {
|
|
33
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
34
|
+
// Pick ONLY the whitelisted keys — never spread `state`, which could carry
|
|
35
|
+
// extra (secret-shaped) properties a caller smuggled in.
|
|
36
|
+
const safe = {
|
|
37
|
+
containerName: state.containerName,
|
|
38
|
+
host: state.host,
|
|
39
|
+
dataVolume: state.dataVolume,
|
|
40
|
+
ref: state.ref,
|
|
41
|
+
imageTag: state.imageTag,
|
|
42
|
+
};
|
|
43
|
+
// Only persist the optional host data dir when one was chosen — a named-volume
|
|
44
|
+
// deploy keeps the original field set (and old states stay byte-compatible).
|
|
45
|
+
if (state.dataDir)
|
|
46
|
+
safe.dataDir = state.dataDir;
|
|
47
|
+
fs.writeFileSync(deployStatePath(dir), `${JSON.stringify(safe, null, 2)}\n`, "utf8");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Read the deploy-state back, or `null` if the file is absent, unparseable, or
|
|
51
|
+
* missing any required field. Never throws — a missing/corrupt state file means
|
|
52
|
+
* the caller falls back (e.g. `status` uses `git describe`), never crashes.
|
|
53
|
+
*/
|
|
54
|
+
export function readDeployState(dir) {
|
|
55
|
+
let raw;
|
|
56
|
+
try {
|
|
57
|
+
raw = fs.readFileSync(deployStatePath(dir), "utf8");
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
let parsed;
|
|
63
|
+
try {
|
|
64
|
+
parsed = JSON.parse(raw);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
70
|
+
return null;
|
|
71
|
+
const obj = parsed;
|
|
72
|
+
for (const key of STATE_KEYS) {
|
|
73
|
+
if (typeof obj[key] !== "string")
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
const result = {
|
|
77
|
+
containerName: obj.containerName,
|
|
78
|
+
host: obj.host,
|
|
79
|
+
dataVolume: obj.dataVolume,
|
|
80
|
+
ref: obj.ref,
|
|
81
|
+
imageTag: obj.imageTag,
|
|
82
|
+
};
|
|
83
|
+
// Optional, back-compatible: present only on `--data-dir` deploys written after
|
|
84
|
+
// this field existed; left undefined otherwise (old states still validate).
|
|
85
|
+
if (typeof obj.dataDir === "string")
|
|
86
|
+
result.dataDir = obj.dataDir;
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=deploy-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-state.js","sourceRoot":"","sources":["../../src/server/deploy-state.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,6EAA6E;AAC7E,0EAA0E;AAC1E,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,wEAAwE;AAExE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AA0B7B,mFAAmF;AACnF,MAAM,UAAU,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,CAAU,CAAC;AAEvF,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,KAAkB;IAC9D,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,2EAA2E;IAC3E,yDAAyD;IACzD,MAAM,IAAI,GAAgB;QACxB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC;IACF,+EAA+E;IAC/E,6EAA6E;IAC7E,IAAI,KAAK,CAAC,OAAO;QAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAChD,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACvF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;IAChD,CAAC;IACD,MAAM,MAAM,GAAgB;QAC1B,aAAa,EAAE,GAAG,CAAC,aAAuB;QAC1C,IAAI,EAAE,GAAG,CAAC,IAAc;QACxB,UAAU,EAAE,GAAG,CAAC,UAAoB;QACpC,GAAG,EAAE,GAAG,CAAC,GAAa;QACtB,QAAQ,EAAE,GAAG,CAAC,QAAkB;KACjC,CAAC;IACF,gFAAgF;IAChF,4EAA4E;IAC5E,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { RunOptions, RunResult, Runner } from "../exec.js";
|
|
2
|
+
export type { RunOptions, RunResult, Runner } from "../exec.js";
|
|
3
|
+
/** Per-stream chunk handlers for a streaming spawn. Chunks arrive as they do. */
|
|
4
|
+
export interface StreamHandlers {
|
|
5
|
+
/** Called with each stdout chunk (decoded utf8) as it arrives. */
|
|
6
|
+
onStdout?: (chunk: string) => void;
|
|
7
|
+
/** Called with each stderr chunk (decoded utf8) as it arrives. */
|
|
8
|
+
onStderr?: (chunk: string) => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The streaming counterpart to {@link Runner}. Spawns `cmd args…`, forwards
|
|
12
|
+
* each stdout/stderr chunk to the handlers LIVE (never buffered to the end),
|
|
13
|
+
* and resolves with the exit code when the process exits — `null` if it was
|
|
14
|
+
* signalled (e.g. the user Ctrl-Cs a `-f` follow, or the container stops).
|
|
15
|
+
*/
|
|
16
|
+
export interface Streamer {
|
|
17
|
+
stream(cmd: string, args: readonly string[], handlers: StreamHandlers, opts?: RunOptions): Promise<number | null>;
|
|
18
|
+
}
|
|
19
|
+
/** Run a command (`docker`/`git`) through the current server runner. */
|
|
20
|
+
export declare function run(cmd: string, args: readonly string[], opts?: RunOptions): Promise<RunResult>;
|
|
21
|
+
/** Resolve a command to its PATH location through the current server runner. */
|
|
22
|
+
export declare function which(cmd: string): Promise<string | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Stream a command (e.g. `docker logs -f`) through the current server streamer,
|
|
25
|
+
* forwarding each stdout/stderr chunk to `handlers` LIVE. Resolves with the exit
|
|
26
|
+
* code when the process exits.
|
|
27
|
+
*/
|
|
28
|
+
export declare function stream(cmd: string, args: readonly string[], handlers: StreamHandlers, opts?: RunOptions): Promise<number | null>;
|
|
29
|
+
/** Swap in a fake runner (tests). Returns the previous runner. */
|
|
30
|
+
export declare function setRunner(runner: Runner): Runner;
|
|
31
|
+
/** Restore the real, process-spawning runner (tests). */
|
|
32
|
+
export declare function resetRunner(): void;
|
|
33
|
+
/** Swap in a fake streamer (tests). Returns the previous streamer. */
|
|
34
|
+
export declare function setStreamer(streamer: Streamer): Streamer;
|
|
35
|
+
/** Restore the real, process-spawning streamer (tests). */
|
|
36
|
+
export declare function resetStreamer(): void;
|
|
37
|
+
/**
|
|
38
|
+
* An exec that INHERITS the parent's stdio so the in-container process can prompt
|
|
39
|
+
* the operator's real terminal (e.g. `the-librarian restore` / `auth reset-password`
|
|
40
|
+
* reading a secret no-echo). The capture `run` above uses `stdio:["ignore",…]`, so
|
|
41
|
+
* it can NEVER carry a working `docker exec -t` — pairing them is exactly what
|
|
42
|
+
* produced "the input device is not a TTY". Interactive `server admin` uses this.
|
|
43
|
+
*/
|
|
44
|
+
export interface InteractiveRunner {
|
|
45
|
+
runInteractive(cmd: string, args: readonly string[], opts?: RunOptions): Promise<number | null>;
|
|
46
|
+
}
|
|
47
|
+
/** Run an interactive (inherited-stdio) command through the current seam. */
|
|
48
|
+
export declare function runInteractive(cmd: string, args: readonly string[], opts?: RunOptions): Promise<number | null>;
|
|
49
|
+
/** Swap in a fake interactive runner (tests). Returns the previous one. */
|
|
50
|
+
export declare function setInteractiveRunner(runner: InteractiveRunner): InteractiveRunner;
|
|
51
|
+
/** Restore the real inherited-stdio interactive runner (tests). */
|
|
52
|
+
export declare function resetInteractiveRunner(): void;
|
|
53
|
+
//# sourceMappingURL=docker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/server/docker.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEhE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIhE,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,MAAM,CACJ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,QAAQ,EAAE,cAAc,EACxB,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC3B;AA8ED,wEAAwE;AACxE,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAE/F;AAED,gFAAgF;AAChF,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,QAAQ,EAAE,cAAc,EACxB,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,yDAAyD;AACzD,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAIxD;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAID;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACjG;AAkBD,6EAA6E;AAC7E,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,CAIjF;AAED,mEAAmE;AACnE,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
|