@cotal-ai/cli 0.11.6 → 0.12.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.
Files changed (58) hide show
  1. package/dist/commands/backup.d.ts +13 -0
  2. package/dist/commands/backup.d.ts.map +1 -0
  3. package/dist/commands/backup.js +443 -0
  4. package/dist/commands/backup.js.map +1 -0
  5. package/dist/commands/channels.d.ts +10 -0
  6. package/dist/commands/channels.d.ts.map +1 -1
  7. package/dist/commands/channels.js.map +1 -1
  8. package/dist/commands/clean.d.ts +12 -2
  9. package/dist/commands/clean.d.ts.map +1 -1
  10. package/dist/commands/clean.js +161 -28
  11. package/dist/commands/clean.js.map +1 -1
  12. package/dist/commands/down.d.ts +5 -0
  13. package/dist/commands/down.d.ts.map +1 -1
  14. package/dist/commands/down.js +323 -5
  15. package/dist/commands/down.js.map +1 -1
  16. package/dist/commands/spawn.d.ts +4 -0
  17. package/dist/commands/spawn.d.ts.map +1 -1
  18. package/dist/commands/spawn.js +43 -23
  19. package/dist/commands/spawn.js.map +1 -1
  20. package/dist/commands/status.d.ts.map +1 -1
  21. package/dist/commands/status.js +3 -2
  22. package/dist/commands/status.js.map +1 -1
  23. package/dist/commands/up.d.ts +12 -0
  24. package/dist/commands/up.d.ts.map +1 -1
  25. package/dist/commands/up.js +1149 -193
  26. package/dist/commands/up.js.map +1 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +19 -4
  29. package/dist/index.js.map +1 -1
  30. package/dist/lib/backup-artifact.d.ts +50 -0
  31. package/dist/lib/backup-artifact.d.ts.map +1 -0
  32. package/dist/lib/backup-artifact.js +290 -0
  33. package/dist/lib/backup-artifact.js.map +1 -0
  34. package/dist/lib/delivery-proc.d.ts +7 -2
  35. package/dist/lib/delivery-proc.d.ts.map +1 -1
  36. package/dist/lib/delivery-proc.js +29 -19
  37. package/dist/lib/delivery-proc.js.map +1 -1
  38. package/dist/lib/endpoint-cut.d.ts +5 -0
  39. package/dist/lib/endpoint-cut.d.ts.map +1 -0
  40. package/dist/lib/endpoint-cut.js +53 -0
  41. package/dist/lib/endpoint-cut.js.map +1 -0
  42. package/dist/lib/isolated-broker.d.ts +70 -0
  43. package/dist/lib/isolated-broker.d.ts.map +1 -0
  44. package/dist/lib/isolated-broker.js +427 -0
  45. package/dist/lib/isolated-broker.js.map +1 -0
  46. package/dist/lib/maintenance-files.d.ts +10 -0
  47. package/dist/lib/maintenance-files.d.ts.map +1 -0
  48. package/dist/lib/maintenance-files.js +60 -0
  49. package/dist/lib/maintenance-files.js.map +1 -0
  50. package/dist/lib/manager-proc.d.ts +4 -0
  51. package/dist/lib/manager-proc.d.ts.map +1 -1
  52. package/dist/lib/manager-proc.js +2 -0
  53. package/dist/lib/manager-proc.js.map +1 -1
  54. package/dist/lib/restore.d.ts +52 -0
  55. package/dist/lib/restore.d.ts.map +1 -0
  56. package/dist/lib/restore.js +797 -0
  57. package/dist/lib/restore.js.map +1 -0
  58. package/package.json +7 -4
@@ -1,12 +1,14 @@
1
- import { existsSync, rmSync } from "node:fs";
2
- import { join, resolve } from "node:path";
3
- import { clearSpaceHistory } from "@cotal-ai/core";
4
- import { removeMeshesByRoot, resolveSpace } from "@cotal-ai/workspace";
1
+ import { randomUUID } from "node:crypto";
2
+ import { existsSync, lstatSync, realpathSync, renameSync, rmSync } from "node:fs";
3
+ import { dirname, isAbsolute, join, parse, relative, resolve } from "node:path";
4
+ import { clearSpaceHistory, isReachable, registry, resolveAuthProvider } from "@cotal-ai/core";
5
+ import { DELIVERY_CREDS_KEY, acquireMaintenanceLock, cleanupRestoreFallback, localProcessPath, meshesForRoot, readMaintenanceJournal, releaseMaintenanceLock, removeMeshesByRoot, resolveSpace, rollbackRestore, workspaceSecretStore, } from "@cotal-ai/workspace";
5
6
  import { connectOrExit, userViewAuthOrExit } from "../lib/connect.js";
6
7
  import { c } from "../ui.js";
7
8
  import { cotalRoot } from "../lib/paths.js";
8
9
  import { pidfileState, pidfileTargets } from "./down.js";
9
- const TARGETS = ["history", "store", "all"];
10
+ import { localProcessSurface } from "../ext-loader.js";
11
+ const TARGETS = ["history", "store", "all", "restore-fallback", "restore-attempt"];
10
12
  /** `cotal clean <history|store|all>` - one configurable cleanup verb.
11
13
  * - `history`: purge the retained message backlog on the RUNNING broker (CHAT, plus DMs with
12
14
  * `--dms`) via the least-privilege purger cred. `cotal history clear` is a thin alias.
@@ -30,18 +32,65 @@ export async function clean(args) {
30
32
  }
31
33
  if (target === "history")
32
34
  return purgeHistory(values);
35
+ if (target === "restore-attempt") {
36
+ // The explicit pre-commit recovery action: roll back one exact stale attempt. A live claim
37
+ // (deadline not elapsed, or any recorded owner alive) is always refused.
38
+ if (!values.attempt)
39
+ throw new Error("clean restore-attempt requires --attempt <id>");
40
+ const root = cotalRoot();
41
+ const lock = acquireMaintenanceLock(root);
42
+ try {
43
+ const journal = readMaintenanceJournal(root);
44
+ if (!journal || journal.state !== "restore-ready" || journal.restore.attemptId !== values.attempt)
45
+ throw new Error(`no pre-commit restore attempt ${values.attempt} is recorded${journal ? ` (maintenance state is ${journal.state}${"restore" in journal ? ` for attempt ${journal.restore.attemptId}` : ""})` : ""}`);
46
+ rollbackRestore(lock);
47
+ console.log(c.green(`✓ rolled back stale restore attempt ${values.attempt}`));
48
+ console.log(c.dim(" the preserved source is back at ready; resume with `cotal up` or retry `cotal up --restore`"));
49
+ }
50
+ finally {
51
+ releaseMaintenanceLock(lock);
52
+ }
53
+ return;
54
+ }
55
+ if (target === "restore-fallback") {
56
+ if (!values.attempt)
57
+ throw new Error("clean restore-fallback requires --attempt <id>");
58
+ const root = cotalRoot();
59
+ const lock = acquireMaintenanceLock(root);
60
+ try {
61
+ const record = cleanupRestoreFallback(lock, values.attempt);
62
+ console.log(c.green(`✓ removed retained source for restore ${record.restore.attemptId}`));
63
+ }
64
+ finally {
65
+ releaseMaintenanceLock(lock);
66
+ }
67
+ return;
68
+ }
33
69
  const root = cotalRoot();
34
- const running = liveMeshProcess(root);
35
- if (running) {
36
- console.error(c.red(`✗ the mesh is still running (${running}) - stop it first: \`cotal down\`, then \`cotal clean ${target}\``));
37
- process.exit(1);
70
+ const lock = acquireMaintenanceLock(root);
71
+ let removed;
72
+ try {
73
+ const maintenance = readMaintenanceJournal(root);
74
+ if (maintenance)
75
+ throw new Error(`clean ${target} is refused while maintenance state is ${maintenance.state}; use the recorded restore recovery or fallback-cleanup command`);
76
+ const running = liveMeshProcess(root);
77
+ if (running) {
78
+ console.error(c.red(`✗ the mesh is still running (${running}) - stop it first: \`cotal down\`, then \`cotal clean ${target}\``));
79
+ process.exitCode = 1;
80
+ return;
81
+ }
82
+ for (const mesh of meshesForRoot(root)) {
83
+ if (await isReachable(mesh.server))
84
+ throw new Error(`clean ${target} is refused while the recorded mesh endpoint ${mesh.server} is reachable; stop the broker and verify it is offline first`);
85
+ }
86
+ removed = await removeLocalState(root, { includeAuth: target === "all", storeDir: values["store-dir"] });
87
+ // Keep registry/current-pointer cleanup in the same lock transaction as local identity removal.
88
+ if (target === "all")
89
+ removeMeshesByRoot(root);
90
+ }
91
+ finally {
92
+ releaseMaintenanceLock(lock);
38
93
  }
39
- const removed = removeLocalState(root, { includeAuth: target === "all", storeDir: values["store-dir"] });
40
- // Full reset also drops the mesh from the machine registry (and the `current` pointer),
41
- // keyed by ROOT - see removeMeshesByRoot for why a space-name key would be wrong. A normal
42
- // `down` already did this; after a crash it is exactly the ghost entry to clear.
43
- if (target === "all")
44
- removeMeshesByRoot(root);
45
94
  if (removed.length === 0) {
46
95
  console.log(c.dim("nothing to clean - no local state found"));
47
96
  return;
@@ -74,19 +123,33 @@ export async function purgeHistory(values) {
74
123
  * block: a crashed broker must not wedge its own cleanup. Liveness rides the shared hardened
75
124
  * probe (`pidfileState`): pid > 0 only, EPERM counts as alive. */
76
125
  export function liveMeshProcess(root) {
77
- for (const [file, label] of pidfileTargets(resolveSpace(root))) {
78
- const s = pidfileState(join(root, ".cotal", file));
79
- if (s.live)
80
- return `${label}, pid ${s.pid}`;
126
+ return liveMeshProcesses(root)[0];
127
+ }
128
+ export function liveMeshProcesses(root) {
129
+ const context = { root, space: resolveSpace(root) };
130
+ const running = [];
131
+ for (const component of localProcessSurface()) {
132
+ const state = pidfileState(localProcessPath(component.pidFile, context));
133
+ if (state.live)
134
+ running.push(`${component.label}, pid ${state.pid}`);
81
135
  }
82
- return undefined;
136
+ return running;
83
137
  }
84
138
  /** Delete the stopped mesh's local state and return what was removed (paths relative to the root).
85
139
  * `store`: the JetStream store directory. `all` adds the space identity (`.cotal/auth`), the
86
140
  * locally persisted creds/markers tied to it - all invalid once the identity regenerates, and
87
141
  * re-minted by the next fresh `cotal up` - plus crash residue a normal `down` would have swept
88
- * (stale pidfiles, `run/`). Callers guard liveness first (`liveMeshProcess`). */
89
- export function removeLocalState(root, opts) {
142
+ * (stale pidfiles, `run/`). Callers guard liveness first (`liveMeshProcess`).
143
+ *
144
+ * MIGRATED SECRET KINDS are removed through the SecretStore seam FIRST — `delivery.creds` via
145
+ * its workspace key, the auth kinds via the registered provider's `deprovisionSecrets` — and a
146
+ * failure there THROWS BEFORE any raw removal of the local identity: wiping trust/IdP/ledger
147
+ * after a failed store delete would leave the store's old secrets authoritative over a freshly
148
+ * minted identity (split authority). The store deletes are idempotent, so a failed reset re-runs
149
+ * as-is, with `auth.json` still present to name the space. This surface stays the LOCAL
150
+ * filesystem composition (hosted resets ride the closed composition's own store + the same
151
+ * provider hook, never a KMS mode on this CLI). */
152
+ export async function removeLocalState(root, opts) {
90
153
  const removed = [];
91
154
  const rm = (path, label) => {
92
155
  if (!existsSync(path))
@@ -94,18 +157,47 @@ export function removeLocalState(root, opts) {
94
157
  rmSync(path, { recursive: true, force: true });
95
158
  removed.push(label);
96
159
  };
97
- // The space must be read before `.cotal/auth` goes - it names the auth service's pidfile.
160
+ // The space must be read before `.cotal/auth` goes - it names the auth service's pidfile
161
+ // and keys the provider's secret deprovision.
98
162
  const space = resolveSpace(root);
99
- const storeDir = opts.storeDir ? resolve(opts.storeDir) : join(root, ".cotal", "nats");
100
- rm(storeDir, opts.storeDir ? storeDir : ".cotal/nats (JetStream store)");
163
+ const store = safeStoreCleanupPath(root, opts.storeDir);
164
+ if (store.identity) {
165
+ removePinnedStoreDirectory(store.path, store.identity);
166
+ removed.push(opts.storeDir ? store.path : ".cotal/nats (JetStream store)");
167
+ }
101
168
  if (opts.includeAuth) {
169
+ // ---- the seam deletes, before ANY raw identity removal (see the doc above) ----
170
+ const secrets = workspaceSecretStore(root);
171
+ const failures = [];
172
+ try {
173
+ if ((await secrets.get(DELIVERY_CREDS_KEY)) !== undefined) {
174
+ await secrets.delete(DELIVERY_CREDS_KEY);
175
+ removed.push(`.cotal/${DELIVERY_CREDS_KEY}`);
176
+ }
177
+ }
178
+ catch (e) {
179
+ failures.push(`${DELIVERY_CREDS_KEY}: ${e instanceof Error ? e.message : String(e)}`);
180
+ }
181
+ // Gate on registration: an open-mode composition may not register an auth provider, and a
182
+ // reset there must not start failing. With one registered, its deprovision must SUCCEED
183
+ // (absent keys are idempotent no-ops) before the identity goes.
184
+ if (registry.all("auth-provider").length) {
185
+ try {
186
+ await resolveAuthProvider().deprovisionSecrets({ store: secrets, space });
187
+ }
188
+ catch (e) {
189
+ failures.push(e instanceof Error ? e.message : String(e));
190
+ }
191
+ }
192
+ if (failures.length)
193
+ throw new Error(`clean all: secret-store deprovision failed (${failures.join("; ")}) - the local identity was NOT removed; the deletes are idempotent, fix the cause and re-run \`cotal clean all --force\``);
102
194
  rm(join(root, ".cotal", "auth"), ".cotal/auth (space identity + creds)");
103
195
  // Creds/records signed by (or tied to) the deleted identity: stale the moment it is gone.
104
196
  // The fresh-`up` path re-mints every one of these (keep in sync with `provisionMembershipCreds`
105
197
  // in up.ts); sweeping them keeps `doctor auth` honest in between and guarantees no
106
- // old-operator material survives the reset.
198
+ // old-operator material survives the reset. (`delivery.creds` is gone already — it is a
199
+ // migrated kind and went through the store above, never a raw rm.)
107
200
  for (const f of [
108
- "delivery.creds",
109
201
  "manager.delivery-aware",
110
202
  "membership-observer.creds",
111
203
  "membership-rw.creds",
@@ -122,7 +214,48 @@ export function removeLocalState(root, opts) {
122
214
  }
123
215
  return removed;
124
216
  }
125
- const USAGE = "cotal clean <history|store|all> --force [--dms] [--space <s>] [--server <url>] [--creds <path>] [--store-dir <dir>]";
217
+ function pathContains(parent, child) {
218
+ const path = relative(parent, child);
219
+ const separator = process.platform === "win32" ? "\\" : "/";
220
+ return path === "" || (path !== ".." && !path.startsWith(`..${separator}`) && !isAbsolute(path));
221
+ }
222
+ function safeStoreCleanupPath(root, override) {
223
+ const requested = resolve(override ?? join(root, ".cotal", "nats"));
224
+ if (!existsSync(requested))
225
+ return { path: requested };
226
+ const stat = lstatSync(requested, { bigint: true });
227
+ if (!stat.isDirectory() || stat.isSymbolicLink())
228
+ throw new Error(`store cleanup target is not a real directory: ${requested}`);
229
+ const target = realpathSync.native(requested);
230
+ const canonicalRoot = realpathSync.native(root);
231
+ const cotal = join(canonicalRoot, ".cotal");
232
+ const defaultStore = join(cotal, "nats");
233
+ const protectedTrees = [join(cotal, "auth"), join(cotal, "agents"), join(cotal, "maintenance"), join(cotal, "run")];
234
+ if (target === parse(target).root || pathContains(target, canonicalRoot) || target === cotal ||
235
+ protectedTrees.some((path) => pathContains(path, target)) || (override && pathContains(cotal, target) && target !== defaultStore))
236
+ throw new Error(`refusing unsafe store cleanup target: ${target}`);
237
+ if (override) {
238
+ const generation = join(target, ".cotal-store-id");
239
+ const jetstream = join(target, "jetstream");
240
+ const hasGeneration = existsSync(generation) && lstatSync(generation).isFile() && !lstatSync(generation).isSymbolicLink();
241
+ const hasJetStream = existsSync(jetstream) && lstatSync(jetstream).isDirectory() && !lstatSync(jetstream).isSymbolicLink();
242
+ if (!hasGeneration && !hasJetStream)
243
+ throw new Error(`refusing custom cleanup target without a Cotal or JetStream store marker: ${target}`);
244
+ }
245
+ return { path: target, identity: { dev: stat.dev, ino: stat.ino } };
246
+ }
247
+ function removePinnedStoreDirectory(path, identity) {
248
+ const tomb = join(dirname(path), `.cotal-clean-${randomUUID()}`);
249
+ renameSync(path, tomb);
250
+ const moved = lstatSync(tomb, { bigint: true });
251
+ if (!moved.isDirectory() || moved.isSymbolicLink() || moved.dev !== identity.dev || moved.ino !== identity.ino) {
252
+ if (!existsSync(path))
253
+ renameSync(tomb, path);
254
+ throw new Error(`store cleanup target changed before deletion: ${path}`);
255
+ }
256
+ rmSync(tomb, { recursive: true });
257
+ }
258
+ const USAGE = "cotal clean <history|store|all> --force [--dms] [--space <s>] [--server <url>] [--creds <path>] [--store-dir <dir>] | cotal clean <restore-attempt|restore-fallback> --attempt <id> --force";
126
259
  function usage() {
127
260
  console.error(c.red(`usage: ${USAGE}`));
128
261
  console.error(c.dim(" history purge the message backlog on the running broker (--dms to include DMs)"));
@@ -1 +1 @@
1
- {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,15 @@
1
1
  import { type CompletionResult, type ParsedArgs } from "@cotal-ai/core";
2
+ import { type LocalProcess, type LocalProcessContext } from "@cotal-ai/workspace";
2
3
  /** Complete selective component names without importing installed packages. */
3
4
  export declare function downComplete(argv: string[]): CompletionResult;
4
5
  /** Stop the whole local stack by default, or only named self-registered process components. The
5
6
  * manifest forms remain ownership-scoped deploy teardown and cannot be mixed with components. */
6
7
  export declare function down(args: ParsedArgs): Promise<void>;
7
8
  export declare const isAlive: (pid: number) => boolean;
9
+ export declare function processRecorded(component: LocalProcess, context: LocalProcessContext): boolean;
10
+ export declare function processAlive(component: LocalProcess, context: LocalProcessContext): boolean;
11
+ /** Stop one recorded process and await its actual exit before the next dependency is stopped. */
12
+ export declare function stopLocalProcess(component: LocalProcess, context: LocalProcessContext): Promise<boolean>;
8
13
  /** Compatibility inventory for `clean`; lifecycle commands use the registered descriptors above. */
9
14
  export declare function pidfileTargets(space: string): Array<[file: string, label: string]>;
10
15
  export type PidfileState = {
@@ -1 +1 @@
1
- {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAaxE,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAS7D;AAED;kGACkG;AAClG,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6E1D;AAOD,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,OAErC,CAAC;AA4FF,oGAAoG;AACpG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAQlF;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAOvD"}
1
+ {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAgBL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAIzB,MAAM,qBAAqB,CAAC;AA4B7B,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAS7D;AAED;kGACkG;AAClG,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF1D;AAOD,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,OAErC,CAAC;AAEF,wBAAgB,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAE9F;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAK3F;AAED,iGAAiG;AACjG,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CA4E9G;AA4TD,oGAAoG;AACpG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAQlF;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAOvD"}