@cotal-ai/cli 0.11.6 → 0.13.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 (91) 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 +174 -28
  11. package/dist/commands/clean.js.map +1 -1
  12. package/dist/commands/down-manifest.d.ts.map +1 -1
  13. package/dist/commands/down-manifest.js +83 -16
  14. package/dist/commands/down-manifest.js.map +1 -1
  15. package/dist/commands/down.d.ts +5 -0
  16. package/dist/commands/down.d.ts.map +1 -1
  17. package/dist/commands/down.js +367 -5
  18. package/dist/commands/down.js.map +1 -1
  19. package/dist/commands/join.d.ts.map +1 -1
  20. package/dist/commands/join.js +46 -1
  21. package/dist/commands/join.js.map +1 -1
  22. package/dist/commands/mint.d.ts.map +1 -1
  23. package/dist/commands/mint.js +19 -5
  24. package/dist/commands/mint.js.map +1 -1
  25. package/dist/commands/spawn.d.ts +4 -0
  26. package/dist/commands/spawn.d.ts.map +1 -1
  27. package/dist/commands/spawn.js +81 -42
  28. package/dist/commands/spawn.js.map +1 -1
  29. package/dist/commands/status.d.ts.map +1 -1
  30. package/dist/commands/status.js +3 -2
  31. package/dist/commands/status.js.map +1 -1
  32. package/dist/commands/up.d.ts +12 -0
  33. package/dist/commands/up.d.ts.map +1 -1
  34. package/dist/commands/up.js +1149 -193
  35. package/dist/commands/up.js.map +1 -1
  36. package/dist/commands/use.d.ts +3 -3
  37. package/dist/commands/use.d.ts.map +1 -1
  38. package/dist/commands/use.js +3 -3
  39. package/dist/commands/use.js.map +1 -1
  40. package/dist/console/app.js +1 -1
  41. package/dist/console/app.js.map +1 -1
  42. package/dist/console/ui/NeedsYou.js +1 -1
  43. package/dist/console/ui/NeedsYou.js.map +1 -1
  44. package/dist/console/ui/Tiles.d.ts +6 -3
  45. package/dist/console/ui/Tiles.d.ts.map +1 -1
  46. package/dist/console/ui/Tiles.js +6 -3
  47. package/dist/console/ui/Tiles.js.map +1 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +21 -5
  50. package/dist/index.js.map +1 -1
  51. package/dist/lib/auth-proc.d.ts +21 -0
  52. package/dist/lib/auth-proc.d.ts.map +1 -1
  53. package/dist/lib/auth-proc.js +89 -15
  54. package/dist/lib/auth-proc.js.map +1 -1
  55. package/dist/lib/backup-artifact.d.ts +50 -0
  56. package/dist/lib/backup-artifact.d.ts.map +1 -0
  57. package/dist/lib/backup-artifact.js +290 -0
  58. package/dist/lib/backup-artifact.js.map +1 -0
  59. package/dist/lib/delivery-proc.d.ts +7 -2
  60. package/dist/lib/delivery-proc.d.ts.map +1 -1
  61. package/dist/lib/delivery-proc.js +29 -19
  62. package/dist/lib/delivery-proc.js.map +1 -1
  63. package/dist/lib/endpoint-cut.d.ts +5 -0
  64. package/dist/lib/endpoint-cut.d.ts.map +1 -0
  65. package/dist/lib/endpoint-cut.js +53 -0
  66. package/dist/lib/endpoint-cut.js.map +1 -0
  67. package/dist/lib/isolated-broker.d.ts +70 -0
  68. package/dist/lib/isolated-broker.d.ts.map +1 -0
  69. package/dist/lib/isolated-broker.js +436 -0
  70. package/dist/lib/isolated-broker.js.map +1 -0
  71. package/dist/lib/maintenance-files.d.ts +10 -0
  72. package/dist/lib/maintenance-files.d.ts.map +1 -0
  73. package/dist/lib/maintenance-files.js +60 -0
  74. package/dist/lib/maintenance-files.js.map +1 -0
  75. package/dist/lib/manager-proc.d.ts +4 -0
  76. package/dist/lib/manager-proc.d.ts.map +1 -1
  77. package/dist/lib/manager-proc.js +2 -0
  78. package/dist/lib/manager-proc.js.map +1 -1
  79. package/dist/lib/manifest/ledger.d.ts +4 -2
  80. package/dist/lib/manifest/ledger.d.ts.map +1 -1
  81. package/dist/lib/manifest/ledger.js +8 -10
  82. package/dist/lib/manifest/ledger.js.map +1 -1
  83. package/dist/lib/restore.d.ts +52 -0
  84. package/dist/lib/restore.d.ts.map +1 -0
  85. package/dist/lib/restore.js +801 -0
  86. package/dist/lib/restore.js.map +1 -0
  87. package/dist/view/mesh-view.d.ts +6 -1
  88. package/dist/view/mesh-view.d.ts.map +1 -1
  89. package/dist/view/mesh-view.js +8 -3
  90. package/dist/view/mesh-view.js.map +1 -1
  91. package/package.json +7 -4
@@ -0,0 +1,13 @@
1
+ import type { ConsumerInfo } from "@nats-io/jetstream";
2
+ import { type ParsedArgs, type FlagSpec, type CompletionResult } from "@cotal-ai/core";
3
+ export declare const backupFlags: FlagSpec[];
4
+ export declare function backupComplete(argv: string[]): CompletionResult;
5
+ export declare function isStoppedKvWatcher(stream: string, consumer: ConsumerInfo): boolean;
6
+ export declare function chunkQueue(): {
7
+ iterable: AsyncIterable<Uint8Array>;
8
+ push(chunk: Uint8Array): Promise<void>;
9
+ close(error?: Error): void;
10
+ };
11
+ /** Offline backup of one stable preservation cut. No implicit stop or restart. */
12
+ export declare function backup(args: ParsedArgs): Promise<void>;
13
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAOL,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAItB,MAAM,gBAAgB,CAAC;AA4BxB,eAAO,MAAM,WAAW,EAAE,QAAQ,EAGjC,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAK/D;AAuGD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAiClF;AAED,wBAAgB,UAAU,IAAI;IAC5B,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CAC5B,CAyDA;AAqED,kFAAkF;AAClF,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6I5D"}
@@ -0,0 +1,443 @@
1
+ import { hostname } from "node:os";
2
+ import { randomUUID } from "node:crypto";
3
+ import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
4
+ import { realpathSync } from "node:fs";
5
+ import { downloadStreamSnapshot, spaceBackupInventory, validateCanonicalBackupStreamConfig, validateBackupStreamState, validatePersistentConsumerInventory, validateSpaceBackupInventory, } from "@cotal-ai/core";
6
+ import { acquireMaintenanceLock, assertStoreIdentity, authDir, claimMaintenanceReady, loadSpaceAuth, readMaintenanceJournal, recordMaintenanceClaimResources, recoverStaleMaintenanceClaim, readStoreIdentity, releaseMaintenanceClaim, releaseMaintenanceLock, sameStoreIdentity, } from "@cotal-ai/workspace";
7
+ import { createArtifactWriter, snapshotFileName } from "../lib/backup-artifact.js";
8
+ import { authorityFingerprint } from "../lib/maintenance-files.js";
9
+ import { connectIsolatedBroker, createAttemptClone, ensurePrivateAttemptsDir, startIsolatedBroker, sweepAttemptResidue } from "../lib/isolated-broker.js";
10
+ import { cotalRoot } from "../lib/paths.js";
11
+ import { liveMeshProcesses } from "./clean.js";
12
+ import { c } from "../ui.js";
13
+ import { completingFlagValue } from "../lib/completion.js";
14
+ import { assertEndpointUnreachable } from "../lib/endpoint-cut.js";
15
+ const OPERATION_TIMEOUT_MS = 30 * 60 * 1000;
16
+ export const backupFlags = [
17
+ { name: "only", type: "string", value: "<full|registry>", description: "artifact selection (default full; registry is the only partial)" },
18
+ { name: "store-dir", type: "string", value: "<dir>", description: "preserved source store (default .cotal/nats)" },
19
+ ];
20
+ export function backupComplete(argv) {
21
+ const flag = completingFlagValue(argv, backupFlags);
22
+ if (flag?.name === "only")
23
+ return { items: ["full", "registry"].map((value) => ({ value })), directive: "nofiles" };
24
+ if (flag?.name === "store-dir")
25
+ return { items: [], directive: "default" };
26
+ return { items: backupFlags.map((item) => ({ value: `--${item.name}`, description: item.description })), directive: "nofiles" };
27
+ }
28
+ function selection(value) {
29
+ if (value === undefined || value === "full")
30
+ return "full";
31
+ if (value === "registry")
32
+ return "registry";
33
+ throw new Error("--only must be exactly full or registry");
34
+ }
35
+ function localOwner(id) {
36
+ return { pid: process.pid, host: hostname(), startedAt: new Date().toISOString(), id };
37
+ }
38
+ function requireReady(root, storeDir) {
39
+ const record = readMaintenanceJournal(root);
40
+ if (!record)
41
+ throw new Error("backup requires a completed cut; run `cotal down --preserve-state` first");
42
+ if (record.state !== "ready")
43
+ throw new Error(`backup requires stable ready maintenance state; current state is ${record.state}`);
44
+ const actual = readStoreIdentity(storeDir);
45
+ if (!sameStoreIdentity(record.source, actual))
46
+ throw new Error(`--store-dir does not match the preserved source ${record.source.path}`);
47
+ assertStoreIdentity(record.source);
48
+ return record;
49
+ }
50
+ async function inspectionConnection(broker) {
51
+ return connectIsolatedBroker(broker, broker.initialLogin);
52
+ }
53
+ async function collectInventory(nc, space, selected) {
54
+ const requestPage = async (subject, offset) => {
55
+ const msg = await nc.request(subject, JSON.stringify({ offset }), { timeout: 10_000 });
56
+ const response = JSON.parse(msg.string());
57
+ if (response.error)
58
+ throw new Error(response.error.description ?? `JetStream request failed for ${subject}`);
59
+ if (!Number.isSafeInteger(response.total) || !Number.isSafeInteger(response.offset) || !Number.isSafeInteger(response.limit))
60
+ throw new Error(`JetStream returned an invalid page for ${subject}`);
61
+ return response;
62
+ };
63
+ const streamNames = [];
64
+ for (let offset = 0;;) {
65
+ const page = await requestPage("$JS.API.STREAM.NAMES", offset);
66
+ streamNames.push(...(page.streams ?? []));
67
+ const next = page.offset + (page.streams?.length ?? 0);
68
+ if (next >= page.total)
69
+ break;
70
+ if (next <= offset)
71
+ throw new Error("JetStream stream inventory pagination made no progress");
72
+ offset = next;
73
+ }
74
+ validateSpaceBackupInventory(space, streamNames);
75
+ const inventory = spaceBackupInventory(space);
76
+ const expected = inventory[selected];
77
+ const consumersByStream = {};
78
+ const statesByStream = {};
79
+ for (const stream of expected) {
80
+ const infoMessage = await nc.request(`$JS.API.STREAM.INFO.${stream}`, "{}", { timeout: 10_000 });
81
+ const streamInfo = JSON.parse(infoMessage.string());
82
+ if (streamInfo.error)
83
+ throw new Error(streamInfo.error.description ?? `JetStream stream info failed for ${stream}`);
84
+ if (!streamInfo.state)
85
+ throw new Error(`JetStream omitted stream state for ${stream}`);
86
+ statesByStream[stream] = validateBackupStreamState(streamInfo.state);
87
+ const consumers = [];
88
+ try {
89
+ for (let offset = 0;;) {
90
+ const page = await requestPage(`$JS.API.CONSUMER.LIST.${stream}`, offset);
91
+ consumers.push(...(page.consumers ?? []));
92
+ const next = page.offset + (page.consumers?.length ?? 0);
93
+ if (next >= page.total)
94
+ break;
95
+ if (next <= offset)
96
+ throw new Error(`JetStream consumer pagination made no progress for ${stream}`);
97
+ offset = next;
98
+ }
99
+ }
100
+ catch (error) {
101
+ throw new Error(`isolated backup cannot enumerate consumers for ${stream}: ${error.message}`);
102
+ }
103
+ consumersByStream[stream] = consumers;
104
+ }
105
+ if (selected === "registry") {
106
+ const registry = inventory.registry[0];
107
+ const consumers = consumersByStream[registry] ?? [];
108
+ if (consumers.some((consumer) => !isStoppedKvWatcher(registry, consumer)))
109
+ throw new Error(`${registry} has an unsupported consumer`);
110
+ return { checkpoints: [] };
111
+ }
112
+ const backedConsumers = Object.fromEntries(inventory.full.map((stream) => {
113
+ const consumers = consumersByStream[stream] ?? [];
114
+ for (const consumer of consumers)
115
+ if (stream.startsWith("KV_") && consumer.name.startsWith("oc_") && !isStoppedKvWatcher(stream, consumer))
116
+ throw new Error(`${stream}/${consumer.name} has an unsupported stopped KV watcher config: ${JSON.stringify(consumer.config)}`);
117
+ return [stream, consumers.filter((consumer) => !isStoppedKvWatcher(stream, consumer))];
118
+ }));
119
+ return { checkpoints: validatePersistentConsumerInventory(space, backedConsumers, statesByStream) };
120
+ }
121
+ export function isStoppedKvWatcher(stream, consumer) {
122
+ if (!stream.startsWith("KV_"))
123
+ return false;
124
+ const config = consumer.config;
125
+ const metadata = config.metadata ?? {};
126
+ const activeKeys = new Set([
127
+ "name", "deliver_policy", "ack_policy", "max_deliver", "filter_subject", "replay_policy",
128
+ "flow_control", "deliver_subject", "idle_heartbeat", "inactive_threshold", "num_replicas", "metadata",
129
+ "max_ack_pending", "max_waiting", "headers_only",
130
+ ]);
131
+ const inertRemainder = Object.entries(config).every(([key, value]) => activeKeys.has(key) || value === undefined || value === false || value === 0 || value === "" ||
132
+ (Array.isArray(value) && value.length === 0));
133
+ return consumer.push_bound !== true &&
134
+ config.name === consumer.name &&
135
+ !config.durable_name &&
136
+ consumer.name.startsWith("oc_") &&
137
+ config.deliver_policy === "last_per_subject" &&
138
+ config.ack_policy === "none" &&
139
+ (config.max_deliver === undefined || config.max_deliver === -1 || config.max_deliver === 1) &&
140
+ config.filter_subject === `$KV.${stream.slice(3)}.>` &&
141
+ config.replay_policy === "instant" &&
142
+ config.flow_control === true &&
143
+ typeof config.deliver_subject === "string" && config.deliver_subject.startsWith("_INBOX_") &&
144
+ (config.idle_heartbeat === 5_000_000_000 || config.idle_heartbeat === 30_000_000_000) &&
145
+ (config.inactive_threshold === undefined || config.inactive_threshold === 300_000_000_000) &&
146
+ (config.num_replicas === 0 || config.num_replicas === 1) &&
147
+ (config.max_ack_pending === undefined || config.max_ack_pending === 1000) &&
148
+ (config.max_waiting === undefined || config.max_waiting === 512) &&
149
+ !config.deliver_group &&
150
+ (!config.filter_subjects || config.filter_subjects.length === 0) &&
151
+ Object.entries(metadata).every(([key, value]) => key.startsWith("_nats.") && typeof value === "string") &&
152
+ inertRemainder;
153
+ }
154
+ export function chunkQueue() {
155
+ let pending;
156
+ let nextWaiter;
157
+ let delivered;
158
+ let ended = false;
159
+ let failure;
160
+ const deliver = () => {
161
+ if (!pending || !nextWaiter)
162
+ return;
163
+ const item = pending;
164
+ const waiter = nextWaiter;
165
+ pending = undefined;
166
+ nextWaiter = undefined;
167
+ delivered = item;
168
+ waiter.resolve({ done: false, value: item.chunk });
169
+ };
170
+ return {
171
+ iterable: {
172
+ [Symbol.asyncIterator]() {
173
+ return {
174
+ next() {
175
+ // The consumer asks for the next chunk only after it has written the previous one.
176
+ delivered?.resolve();
177
+ delivered = undefined;
178
+ if (failure)
179
+ return Promise.reject(failure);
180
+ if (ended)
181
+ return Promise.resolve({ done: true, value: undefined });
182
+ return new Promise((resolveNext, rejectNext) => {
183
+ nextWaiter = { resolve: resolveNext, reject: rejectNext };
184
+ deliver();
185
+ });
186
+ },
187
+ };
188
+ },
189
+ },
190
+ push(chunk) {
191
+ if (ended || failure)
192
+ return Promise.reject(failure ?? new Error("snapshot sink is closed"));
193
+ if (pending || delivered)
194
+ return Promise.reject(new Error("snapshot sink received a concurrent chunk"));
195
+ return new Promise((resolvePush, rejectPush) => {
196
+ pending = { chunk, resolve: resolvePush, reject: rejectPush };
197
+ deliver();
198
+ });
199
+ },
200
+ close(error) {
201
+ failure = error;
202
+ ended = true;
203
+ if (error) {
204
+ pending?.reject(error);
205
+ delivered?.reject(error);
206
+ nextWaiter?.reject(error);
207
+ }
208
+ else {
209
+ delivered?.resolve();
210
+ nextWaiter?.resolve({ done: true, value: undefined });
211
+ }
212
+ pending = undefined;
213
+ delivered = undefined;
214
+ nextWaiter = undefined;
215
+ },
216
+ };
217
+ }
218
+ function canonicalFuturePath(path) {
219
+ const absolute = resolve(path);
220
+ return join(realpathSync.native(dirname(absolute)), basename(absolute));
221
+ }
222
+ function overlaps(a, b) {
223
+ const fromA = relative(a, b);
224
+ const fromB = relative(b, a);
225
+ const contained = (path) => path === "" || (path !== ".." && !path.startsWith(`..${process.platform === "win32" ? "\\" : "/"}`) && !isAbsolute(path));
226
+ return contained(fromA) || contained(fromB);
227
+ }
228
+ function assertBackupPaths(root, source, destination) {
229
+ const artifact = canonicalFuturePath(destination);
230
+ const attempts = resolve(root, ".cotal", "maintenance", "attempts");
231
+ if (overlaps(source, attempts))
232
+ throw new Error("preserved source must not overlap the maintenance attempt directory");
233
+ if (overlaps(artifact, source))
234
+ throw new Error("backup destination must not overlap the preserved source store");
235
+ if (overlaps(artifact, attempts))
236
+ throw new Error("backup destination must not overlap the maintenance attempt directory");
237
+ }
238
+ async function snapshotStream(writer, broker, space, stream) {
239
+ // The private inbox is part of the exact snapshot authority, so mint the phase only after its
240
+ // connection identity is known.
241
+ const exact = await broker.addLogin((connId) => ({
242
+ profile: "backup",
243
+ scope: {
244
+ operation: "snapshot",
245
+ stream,
246
+ deliverSubject: `_INBOX_${connId}.backup.${randomUUID().replaceAll("-", "")}`,
247
+ },
248
+ }));
249
+ const deliverSubject = exact.scope.scope.deliverSubject;
250
+ const nc = await connectIsolatedBroker(broker, exact);
251
+ const queue = chunkQueue();
252
+ const name = snapshotFileName(stream);
253
+ const write = writer.writeFile(name, "snapshot", queue.iterable, stream);
254
+ void write.catch((error) => queue.close(error instanceof Error ? error : new Error(String(error))));
255
+ let sunkChunks = 0;
256
+ try {
257
+ const metadata = await downloadStreamSnapshot(nc, stream, {
258
+ deliverSubject,
259
+ timeoutMs: OPERATION_TIMEOUT_MS,
260
+ checkMessages: true,
261
+ onChunk: (chunk) => {
262
+ if (process.env.COTAL_SMOKE_FAIL_BACKUP_STAGE === "chunk" && ++sunkChunks === 1)
263
+ throw new Error("smoke-injected failure at the first snapshot chunk");
264
+ return queue.push(chunk);
265
+ },
266
+ });
267
+ validateCanonicalBackupStreamConfig(space, stream, metadata.config);
268
+ queue.close();
269
+ const file = await write;
270
+ return { file, stream: { stream, snapshot: name, config: metadata.config, state: metadata.state } };
271
+ }
272
+ catch (error) {
273
+ queue.close(error instanceof Error ? error : new Error(String(error)));
274
+ await write.catch(() => { });
275
+ throw error;
276
+ }
277
+ finally {
278
+ await nc.drain().catch(() => { });
279
+ }
280
+ }
281
+ /** Offline backup of one stable preservation cut. No implicit stop or restart. */
282
+ export async function backup(args) {
283
+ const [subcommand, destination, ...extra] = args.positionals;
284
+ const values = args.values;
285
+ if (subcommand !== "create" || !destination || extra.length)
286
+ throw new Error("usage: cotal backup create <dir> [--only full|registry] [--store-dir <dir>]");
287
+ const selected = selection(values.only);
288
+ const root = cotalRoot();
289
+ const live = liveMeshProcesses(root);
290
+ if (live.length)
291
+ throw new Error(`backup is offline-only; still running: ${live.join(", ")}. Run \`cotal down --preserve-state\` first`);
292
+ const storeDir = resolve(values["store-dir"] ?? resolve(root, ".cotal", "nats"));
293
+ const attemptId = `backup-${randomUUID()}`;
294
+ const deadline = new Date(Date.now() + OPERATION_TIMEOUT_MS);
295
+ const destinationPath = resolve(destination);
296
+ const clonePath = join(ensurePrivateAttemptsDir(root).path, `${attemptId}-clone`);
297
+ let lock = acquireMaintenanceLock(root);
298
+ let ready;
299
+ let clone;
300
+ let broker;
301
+ let claimed = false;
302
+ let succeeded = false;
303
+ let writer;
304
+ try {
305
+ const current = readMaintenanceJournal(root);
306
+ if (current?.state === "claimed")
307
+ recoverStaleMaintenanceClaim(lock);
308
+ ready = requireReady(root, storeDir);
309
+ assertBackupPaths(root, ready.source.path, destination);
310
+ // The journal is ready with no live claim, and the destination is proven disjoint from the
311
+ // attempts directory: any attempts-dir content is dead-attempt residue.
312
+ sweepAttemptResidue(root);
313
+ const auth = ready.mode === "open" ? undefined : loadSpaceAuth(authDir(root));
314
+ if (ready.mode !== "open" && (!auth || auth.space !== ready.space))
315
+ throw new Error(`backup requires existing trust material for space ${JSON.stringify(ready.space)}`);
316
+ const authority = selected === "full" ? await authorityFingerprint(root, ready.space, ready.mode) : undefined;
317
+ const recordedServer = ready.cut.launch.server;
318
+ if (authority) {
319
+ const authorityAtClone = await authorityFingerprint(root, ready.space, ready.mode);
320
+ if (JSON.stringify(authorityAtClone) !== JSON.stringify(authority))
321
+ throw new Error("current trust state changed before backup cloning");
322
+ }
323
+ // This is intentionally the final await before the claim: pidfiles are only hints, while a
324
+ // listener at the recorded endpoint can still mutate the source or disprove the offline cut.
325
+ await assertEndpointUnreachable(recordedServer);
326
+ // Ownership precedes existence: the claim is journaled with pending slots for every path this
327
+ // attempt may create, so a crash at any later instant leaves a journal owner to recover from.
328
+ claimMaintenanceReady(lock, {
329
+ attemptId,
330
+ deadline: deadline.toISOString(),
331
+ coordinator: localOwner(`${attemptId}-coordinator`),
332
+ owners: [],
333
+ ownedPaths: [
334
+ { label: "clone", path: clonePath },
335
+ { label: "destination", path: destinationPath },
336
+ ],
337
+ });
338
+ claimed = true;
339
+ clone = createAttemptClone(root, ready.source.path, attemptId);
340
+ recordMaintenanceClaimResources(lock, { ownedPaths: [
341
+ { label: "clone", path: clone.path, dev: clone.identity.dev.toString(), ino: clone.identity.ino.toString() },
342
+ ] });
343
+ broker = await startIsolatedBroker({
344
+ root,
345
+ storeDir: clone.path,
346
+ space: ready.space,
347
+ mode: ready.mode,
348
+ auth,
349
+ deadline,
350
+ label: "backup",
351
+ initialScope: { profile: "backup", scope: { operation: "inspect", selection: selected } },
352
+ attemptId,
353
+ });
354
+ recordMaintenanceClaimResources(lock, {
355
+ owners: [broker.brokerOwner, broker.watchdogOwner],
356
+ ownedPaths: broker.runFiles.map((file) => ({ label: "config", ...file })),
357
+ });
358
+ writer = createArtifactWriter(destination);
359
+ recordMaintenanceClaimResources(lock, { ownedPaths: [
360
+ { label: "destination", path: writer.directory, dev: writer.identity.dev.toString(), ino: writer.identity.ino.toString() },
361
+ ] });
362
+ releaseMaintenanceLock(lock);
363
+ lock = undefined;
364
+ const inspect = await inspectionConnection(broker);
365
+ let checkpoints;
366
+ try {
367
+ ({ checkpoints } = await collectInventory(inspect, ready.space, selected));
368
+ }
369
+ finally {
370
+ await inspect.drain().catch(() => { });
371
+ }
372
+ if (process.env.COTAL_SMOKE_FAIL_BACKUP_STAGE === "initiation")
373
+ throw new Error("smoke-injected failure at snapshot initiation");
374
+ const files = [];
375
+ const streams = [];
376
+ for (const stream of spaceBackupInventory(ready.space)[selected]) {
377
+ const snapshot = await snapshotStream(writer, broker, ready.space, stream);
378
+ files.push(snapshot.file);
379
+ streams.push(snapshot.stream);
380
+ if (process.env.COTAL_SMOKE_FAIL_BACKUP_STAGE === "close")
381
+ throw new Error("smoke-injected failure after snapshot close");
382
+ }
383
+ if (process.env.COTAL_SMOKE_FAIL_BACKUP_STAGE === "manifest")
384
+ throw new Error("smoke-injected failure before manifest publication");
385
+ const checkpointName = "checkpoints.json";
386
+ files.push(await writer.writeFile(checkpointName, "checkpoints", `${JSON.stringify(selected === "full" ? checkpoints : [], null, 2)}\n`));
387
+ writer.publish({
388
+ space: ready.space,
389
+ selection: selected,
390
+ mode: ready.mode,
391
+ source: ready.source,
392
+ ...(authority ? { authority } : {}),
393
+ streams,
394
+ checkpoints: checkpointName,
395
+ }, files);
396
+ console.log(c.green(`✓ ${selected} backup created for "${ready.space}"`));
397
+ console.log(c.dim(` ${writer.directory}`));
398
+ succeeded = true;
399
+ }
400
+ finally {
401
+ // Ownership is surrendered ONLY once every owned resource is proven stopped and removed (or
402
+ // published). Any cleanup failure keeps the claim so retry/stale-recovery finishes it — attempt
403
+ // residue must never exist without a journal owner.
404
+ const residue = [];
405
+ if (broker)
406
+ try {
407
+ await broker.stop();
408
+ }
409
+ catch (cause) {
410
+ residue.push(`isolated broker: ${cause instanceof Error ? cause.message : String(cause)}`);
411
+ }
412
+ if (writer)
413
+ try {
414
+ writer.cleanup();
415
+ }
416
+ catch (cause) {
417
+ residue.push(`destination: ${cause instanceof Error ? cause.message : String(cause)}`);
418
+ }
419
+ if (clone)
420
+ try {
421
+ clone.cleanup();
422
+ }
423
+ catch (cause) {
424
+ residue.push(`clone: ${cause instanceof Error ? cause.message : String(cause)}`);
425
+ }
426
+ if (!lock)
427
+ lock = acquireMaintenanceLock(root);
428
+ try {
429
+ if (claimed && !residue.length)
430
+ releaseMaintenanceClaim(lock, attemptId);
431
+ }
432
+ finally {
433
+ releaseMaintenanceLock(lock);
434
+ }
435
+ if (residue.length) {
436
+ const message = `backup attempt ${attemptId} retains its maintenance claim; cleanup incomplete: ${residue.join("; ")} — retry the command or recover the stale claim`;
437
+ if (succeeded)
438
+ throw new Error(message);
439
+ console.error(c.red(`✗ ${message}`));
440
+ }
441
+ }
442
+ }
443
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
@@ -11,4 +11,14 @@ import { type ParsedArgs } from "@cotal-ai/core";
11
11
  * cotal channels default --replay|--no-replay
12
12
  */
13
13
  export declare function channels(args: ParsedArgs): Promise<void>;
14
+ export interface ChannelsValues {
15
+ server?: string;
16
+ space?: string;
17
+ creds?: string;
18
+ replay?: boolean;
19
+ "no-replay"?: boolean;
20
+ window?: string;
21
+ desc?: string;
22
+ instructions?: string;
23
+ }
14
24
  //# sourceMappingURL=channels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAIxB;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8D9D"}
1
+ {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAIxB;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8D9D;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"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"}
@@ -27,14 +27,24 @@ export declare function purgeHistory(values: {
27
27
  * block: a crashed broker must not wedge its own cleanup. Liveness rides the shared hardened
28
28
  * probe (`pidfileState`): pid > 0 only, EPERM counts as alive. */
29
29
  export declare function liveMeshProcess(root: string): string | undefined;
30
+ export declare function liveMeshProcesses(root: string): string[];
30
31
  /** Delete the stopped mesh's local state and return what was removed (paths relative to the root).
31
32
  * `store`: the JetStream store directory. `all` adds the space identity (`.cotal/auth`), the
32
33
  * locally persisted creds/markers tied to it - all invalid once the identity regenerates, and
33
34
  * re-minted by the next fresh `cotal up` - plus crash residue a normal `down` would have swept
34
- * (stale pidfiles, `run/`). Callers guard liveness first (`liveMeshProcess`). */
35
+ * (stale pidfiles, `run/`). Callers guard liveness first (`liveMeshProcess`).
36
+ *
37
+ * MIGRATED SECRET KINDS are removed through the SecretStore seam FIRST — `delivery.creds` via
38
+ * its workspace key, the auth kinds via the registered provider's `deprovisionSecrets` — and a
39
+ * failure there THROWS BEFORE any raw removal of the local identity: wiping trust/IdP/ledger
40
+ * after a failed store delete would leave the store's old secrets authoritative over a freshly
41
+ * minted identity (split authority). The store deletes are idempotent, so a failed reset re-runs
42
+ * as-is, with `auth.json` still present to name the space. This surface stays the LOCAL
43
+ * filesystem composition (hosted resets ride the closed composition's own store + the same
44
+ * provider hook, never a KMS mode on this CLI). */
35
45
  export declare function removeLocalState(root: string, opts: {
36
46
  includeAuth: boolean;
37
47
  storeDir?: string;
38
- }): string[];
48
+ }): Promise<string[]>;
39
49
  export declare function cleanComplete(argv: string[]): CompletionResult;
40
50
  //# sourceMappingURL=clean.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAU3F;;;;;;;;;;mEAUmE;AACnE,wBAAsB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B3D;AAED;;;;mEAImE;AACnE,wBAAsB,YAAY,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAY5H;AAED;;;mEAGmE;AACnE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMhE;AAED;;;;kFAIkF;AAClF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAgC1G;AAaD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAG9D"}
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoF,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAyB1J;;;;;;;;;;mEAUmE;AACnE,wBAAsB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwE3D;AAED;;;;mEAImE;AACnE,wBAAsB,YAAY,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAY5H;AAED;;;mEAGmE;AACnE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQxD;AAED;;;;;;;;;;;;;oDAaoD;AACpD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyEzH;AAsDD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAG9D"}