@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.
Files changed (78) hide show
  1. package/README.md +53 -7
  2. package/dist/archive.d.ts +15 -0
  3. package/dist/archive.d.ts.map +1 -0
  4. package/dist/archive.js +58 -0
  5. package/dist/archive.js.map +1 -0
  6. package/dist/harnesses/codex.d.ts +13 -0
  7. package/dist/harnesses/codex.d.ts.map +1 -1
  8. package/dist/harnesses/codex.js +210 -26
  9. package/dist/harnesses/codex.js.map +1 -1
  10. package/dist/harnesses/hermes.d.ts +1 -1
  11. package/dist/harnesses/hermes.d.ts.map +1 -1
  12. package/dist/harnesses/hermes.js +42 -23
  13. package/dist/harnesses/hermes.js.map +1 -1
  14. package/dist/harnesses/opencode.d.ts +12 -0
  15. package/dist/harnesses/opencode.d.ts.map +1 -1
  16. package/dist/harnesses/opencode.js +122 -5
  17. package/dist/harnesses/opencode.js.map +1 -1
  18. package/dist/paths.d.ts +16 -0
  19. package/dist/paths.d.ts.map +1 -1
  20. package/dist/paths.js +22 -0
  21. package/dist/paths.js.map +1 -1
  22. package/dist/runtime.d.ts +14 -0
  23. package/dist/runtime.d.ts.map +1 -1
  24. package/dist/runtime.js +230 -1
  25. package/dist/runtime.js.map +1 -1
  26. package/dist/server/admin.d.ts +31 -0
  27. package/dist/server/admin.d.ts.map +1 -0
  28. package/dist/server/admin.js +131 -0
  29. package/dist/server/admin.js.map +1 -0
  30. package/dist/server/autoupdate.d.ts +184 -0
  31. package/dist/server/autoupdate.d.ts.map +1 -0
  32. package/dist/server/autoupdate.js +794 -0
  33. package/dist/server/autoupdate.js.map +1 -0
  34. package/dist/server/boot.d.ts +51 -0
  35. package/dist/server/boot.d.ts.map +1 -0
  36. package/dist/server/boot.js +233 -0
  37. package/dist/server/boot.js.map +1 -0
  38. package/dist/server/deploy-state.d.ts +40 -0
  39. package/dist/server/deploy-state.d.ts.map +1 -0
  40. package/dist/server/deploy-state.js +89 -0
  41. package/dist/server/deploy-state.js.map +1 -0
  42. package/dist/server/docker.d.ts +53 -0
  43. package/dist/server/docker.d.ts.map +1 -0
  44. package/dist/server/docker.js +166 -0
  45. package/dist/server/docker.js.map +1 -0
  46. package/dist/server/down.d.ts +19 -0
  47. package/dist/server/down.d.ts.map +1 -0
  48. package/dist/server/down.js +62 -0
  49. package/dist/server/down.js.map +1 -0
  50. package/dist/server/index.d.ts +8 -0
  51. package/dist/server/index.d.ts.map +1 -0
  52. package/dist/server/index.js +50 -0
  53. package/dist/server/index.js.map +1 -0
  54. package/dist/server/logs.d.ts +50 -0
  55. package/dist/server/logs.d.ts.map +1 -0
  56. package/dist/server/logs.js +162 -0
  57. package/dist/server/logs.js.map +1 -0
  58. package/dist/server/preflight.d.ts +24 -0
  59. package/dist/server/preflight.d.ts.map +1 -0
  60. package/dist/server/preflight.js +58 -0
  61. package/dist/server/preflight.js.map +1 -0
  62. package/dist/server/redact.d.ts +2 -0
  63. package/dist/server/redact.d.ts.map +1 -0
  64. package/dist/server/redact.js +26 -0
  65. package/dist/server/redact.js.map +1 -0
  66. package/dist/server/status.d.ts +20 -0
  67. package/dist/server/status.d.ts.map +1 -0
  68. package/dist/server/status.js +103 -0
  69. package/dist/server/status.js.map +1 -0
  70. package/dist/server/up.d.ts +244 -0
  71. package/dist/server/up.d.ts.map +1 -0
  72. package/dist/server/up.js +758 -0
  73. package/dist/server/up.js.map +1 -0
  74. package/dist/server/update.d.ts +35 -0
  75. package/dist/server/update.d.ts.map +1 -0
  76. package/dist/server/update.js +313 -0
  77. package/dist/server/update.js.map +1 -0
  78. 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":"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"}
@@ -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"}