@cotal-ai/cli 0.14.11 → 0.16.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 (38) hide show
  1. package/dist/commands/clean.d.ts +18 -2
  2. package/dist/commands/clean.d.ts.map +1 -1
  3. package/dist/commands/clean.js +35 -6
  4. package/dist/commands/clean.js.map +1 -1
  5. package/dist/commands/meshes-add.d.ts +83 -0
  6. package/dist/commands/meshes-add.d.ts.map +1 -0
  7. package/dist/commands/meshes-add.js +179 -0
  8. package/dist/commands/meshes-add.js.map +1 -0
  9. package/dist/commands/meshes-wizard.d.ts +76 -0
  10. package/dist/commands/meshes-wizard.d.ts.map +1 -0
  11. package/dist/commands/meshes-wizard.js +277 -0
  12. package/dist/commands/meshes-wizard.js.map +1 -0
  13. package/dist/commands/meshes.d.ts +22 -4
  14. package/dist/commands/meshes.d.ts.map +1 -1
  15. package/dist/commands/meshes.js +205 -9
  16. package/dist/commands/meshes.js.map +1 -1
  17. package/dist/commands/spawn.d.ts.map +1 -1
  18. package/dist/commands/spawn.js +3 -1
  19. package/dist/commands/spawn.js.map +1 -1
  20. package/dist/commands/status.js +6 -2
  21. package/dist/commands/status.js.map +1 -1
  22. package/dist/commands/up.d.ts +29 -0
  23. package/dist/commands/up.d.ts.map +1 -1
  24. package/dist/commands/up.js +28 -13
  25. package/dist/commands/up.js.map +1 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +6 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/lib/control.d.ts.map +1 -1
  30. package/dist/lib/control.js +7 -0
  31. package/dist/lib/control.js.map +1 -1
  32. package/dist/lib/status.d.ts.map +1 -1
  33. package/dist/lib/status.js +25 -20
  34. package/dist/lib/status.js.map +1 -1
  35. package/dist/seed/reconcile.d.ts.map +1 -1
  36. package/dist/seed/reconcile.js +27 -3
  37. package/dist/seed/reconcile.js.map +1 -1
  38. package/package.json +3 -3
@@ -26,8 +26,24 @@ export declare function purgeHistory(values: {
26
26
  * undefined when everything is stopped. A stale pidfile (recorded pid no longer alive) does not
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
- export declare function liveMeshProcess(root: string): string | undefined;
30
- export declare function liveMeshProcesses(root: string): string[];
29
+ export declare function liveMeshProcess(root: string, space?: string): string | undefined;
30
+ /**
31
+ * The live process that makes this root the mesh's HOME, or undefined.
32
+ *
33
+ * Not "any Cotal process here": a manager, a delivery daemon or a web dashboard under this root can
34
+ * perfectly well be pointed at a mesh running on another machine, and their liveness says nothing
35
+ * about who owns the record. The BROKER is the mesh — and `clearsMesh` already marks it, because it
36
+ * is the component whose teardown drops the registry entry (`down`). Asking the same question here
37
+ * keeps "this mesh is running here, use `cotal down`" a true statement: found live against a real
38
+ * registry, where a dashboard watching the remote optiplex mesh made `meshes rm` refuse and point
39
+ * at a `cotal down` that would not have stopped that mesh at all.
40
+ */
41
+ export declare function liveMeshOwner(root: string, space?: string): string | undefined;
42
+ /** `space` names the tenant whose pidfiles to look at. Pass it whenever the caller already knows
43
+ * which mesh it means (a registry entry does): re-deriving it from the root can resolve a
44
+ * DIFFERENT tenant on a multi-space root, and `resolveSpace` throws outright on an unreadable or
45
+ * ambiguous one — a caller asking a yes/no liveness question should not inherit that failure. */
46
+ export declare function liveMeshProcesses(root: string, space?: string): string[];
31
47
  /** Delete the stopped mesh's local state and return what was removed (paths relative to the root).
32
48
  * `store`: the JetStream store directory. `all` adds the space identity (`.cotal/auth`), the
33
49
  * locally persisted creds/markers tied to it - all invalid once the identity regenerates, and
@@ -1 +1 @@
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;AA6B1J;;;;;;;;;;mEAUmE;AACnE,wBAAsB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiF3D;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,CAkGzH;AAsDD,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;AA6B1J;;;;;;;;;;mEAUmE;AACnE,wBAAsB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF3D;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,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ9E;AAED;;;kGAGkG;AAClG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAQxE;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,CAkGzH;AAsDD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAG9D"}
@@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto";
2
2
  import { existsSync, lstatSync, readdirSync, realpathSync, renameSync, rmSync } from "node:fs";
3
3
  import { dirname, isAbsolute, join, parse, relative, resolve } from "node:path";
4
4
  import { clearSpaceHistory, isReachable, registry, resolveAuthProvider } from "@cotal-ai/core";
5
- import { DELIVERY_CREDS_KEY, MEMBERSHIP_RW_CREDS_KEY, acquireMaintenanceLock, agentSecretKeysUnder, assertSingleSpaceBroker, authDir, cleanupRestoreFallback, deleteSpaceAuth, localProcessPath, meshesForRoot, readMaintenanceJournal, releaseMaintenanceLock, removeMeshesByRoot, resolveSpace, rollbackRestore, workspaceSecretStore, } from "@cotal-ai/workspace";
5
+ import { DELIVERY_CREDS_KEY, MEMBERSHIP_RW_CREDS_KEY, acquireMaintenanceLock, agentSecretKeysUnder, assertSingleSpaceBroker, authDir, cleanupRestoreFallback, deleteSpaceAuth, localProcessPath, localMeshesForRoot, readMaintenanceJournal, releaseMaintenanceLock, removeMeshesByRoot, resolveSpace, rollbackRestore, workspaceSecretStore, } from "@cotal-ai/workspace";
6
6
  import { connectOrExit, userViewAuthOrExit } from "../lib/connect.js";
7
7
  import { c } from "../ui.js";
8
8
  import { cotalRoot } from "../lib/paths.js";
@@ -86,7 +86,10 @@ export async function clean(args) {
86
86
  process.exitCode = 1;
87
87
  return;
88
88
  }
89
- for (const mesh of meshesForRoot(root)) {
89
+ // Only this root's OWN meshes gate the wipe. A hand-registered record co-rooted here describes a
90
+ // mesh running on another machine: it is reachable by design and is not the operator's to stop,
91
+ // so counting it would refuse `clean` forever with an instruction nobody here can carry out.
92
+ for (const mesh of localMeshesForRoot(root)) {
90
93
  if (await isReachable(mesh.server))
91
94
  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`);
92
95
  }
@@ -129,11 +132,37 @@ export async function purgeHistory(values) {
129
132
  * undefined when everything is stopped. A stale pidfile (recorded pid no longer alive) does not
130
133
  * block: a crashed broker must not wedge its own cleanup. Liveness rides the shared hardened
131
134
  * probe (`pidfileState`): pid > 0 only, EPERM counts as alive. */
132
- export function liveMeshProcess(root) {
133
- return liveMeshProcesses(root)[0];
135
+ export function liveMeshProcess(root, space) {
136
+ return liveMeshProcesses(root, space)[0];
134
137
  }
135
- export function liveMeshProcesses(root) {
136
- const context = { root, space: resolveSpace(root) };
138
+ /**
139
+ * The live process that makes this root the mesh's HOME, or undefined.
140
+ *
141
+ * Not "any Cotal process here": a manager, a delivery daemon or a web dashboard under this root can
142
+ * perfectly well be pointed at a mesh running on another machine, and their liveness says nothing
143
+ * about who owns the record. The BROKER is the mesh — and `clearsMesh` already marks it, because it
144
+ * is the component whose teardown drops the registry entry (`down`). Asking the same question here
145
+ * keeps "this mesh is running here, use `cotal down`" a true statement: found live against a real
146
+ * registry, where a dashboard watching the remote optiplex mesh made `meshes rm` refuse and point
147
+ * at a `cotal down` that would not have stopped that mesh at all.
148
+ */
149
+ export function liveMeshOwner(root, space) {
150
+ const context = { root, space: space ?? resolveSpace(root) };
151
+ for (const component of localProcessSurface()) {
152
+ if (!component.clearsMesh)
153
+ continue;
154
+ const state = pidfileState(localProcessPath(component.pidFile, context));
155
+ if (state.live)
156
+ return `${component.label}, pid ${state.pid}`;
157
+ }
158
+ return undefined;
159
+ }
160
+ /** `space` names the tenant whose pidfiles to look at. Pass it whenever the caller already knows
161
+ * which mesh it means (a registry entry does): re-deriving it from the root can resolve a
162
+ * DIFFERENT tenant on a multi-space root, and `resolveSpace` throws outright on an unreadable or
163
+ * ambiguous one — a caller asking a yes/no liveness question should not inherit that failure. */
164
+ export function liveMeshProcesses(root, space) {
165
+ const context = { root, space: space ?? resolveSpace(root) };
137
166
  const running = [];
138
167
  for (const component of localProcessSurface()) {
139
168
  const state = pidfileState(localProcessPath(component.pidFile, context));
@@ -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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"}
@@ -0,0 +1,83 @@
1
+ import { type SpaceAuth } from "@cotal-ai/core";
2
+ import { type MeshEntry, type MeshTarget, type PreflightFailure } from "@cotal-ai/workspace";
3
+ /**
4
+ * The rules behind `cotal meshes add`, as decisions rather than side effects.
5
+ *
6
+ * There are two front ends — the flag form (`--server …`, what scripts and agents drive) and the
7
+ * guided form (a bare `cotal meshes add` on a terminal) — and they must agree on every question:
8
+ * what a usable broker URL is, what a usable root is, which mode the broker actually enforces,
9
+ * whether the trust composes. A second copy of any of those inside the wizard is precisely the
10
+ * drift this file exists to prevent, so each rule lives here once, returns a {@link Check}, and the
11
+ * front ends decide only how to *present* a failure: exit with the sentence, or offer a way out.
12
+ */
13
+ /** A rule's verdict: the value it produced, or the operator-facing sentence explaining the refusal. */
14
+ export type Check<T> = {
15
+ ok: true;
16
+ value: T;
17
+ } | {
18
+ ok: false;
19
+ message: string;
20
+ };
21
+ /** Is this path a directory? `existsSync` is not the question: a regular FILE named `.cotal` would
22
+ * pass it and record a root whose `.cotal/auth` and `.cotal/agents` can never exist. `statSync`
23
+ * follows symlinks, so a symlinked project dir keeps working. */
24
+ export declare function isDir(path: string): boolean;
25
+ /**
26
+ * The broker URL, checked before it is probed, printed or persisted.
27
+ *
28
+ * Credentials embedded in the URL are refused for the same reason a manifest refuses them
29
+ * (`validateBroker`): this record is written to disk and echoed back by `add` and `meshes`, so an
30
+ * inline password would be copied into the registry and onto the operator's screen. No message
31
+ * here repeats the input — the commonest malformed broker URL is a half-typed credential one.
32
+ */
33
+ export declare function checkServer(raw: string): Check<string>;
34
+ /** Where this mesh's local trust + personas live. An explicit path must be an existing directory
35
+ * (the record's whole job is to point at `.cotal/auth` and `.cotal/agents` under it). With no
36
+ * flag, the nearest genuine project up-tree — and `findCotalRoot` returns its STARTING directory
37
+ * when it finds none, so the inferred case must prove the `.cotal` is really there. */
38
+ export declare function checkRoot(flag: string | undefined, cwd: string): Check<string>;
39
+ /** The recorded auth mode: what the operator said, or what `--root` proves. A root holding this
40
+ * space's account record means auth; anything else is an open broker. */
41
+ export declare function checkMode(space: string, root: string, accounts: string[], flag: string | undefined): Check<MeshEntry["mode"]>;
42
+ /** For an AUTH registration the root must yield trust that actually COMPOSES. An account record on
43
+ * disk only proves the space was known here: `loadSpaceAuth` still returns undefined when the
44
+ * broker record or the signing material is missing, and recording that as `auth` produces a record
45
+ * whose probe ran credlessly and whose every later use fails at resolution. */
46
+ export declare function checkTrust(mode: MeshEntry["mode"], root: string, space: string): Check<SpaceAuth | undefined>;
47
+ /** What the broker ENFORCES, asked with no credential at all.
48
+ *
49
+ * A NATS broker with no auth configured accepts a CONNECT that carries credentials and ignores
50
+ * them — so "my creds were accepted" says nothing about enforcement, and recording `auth` off that
51
+ * promises JWT/ACL protection that is not there. An auth broker refuses a bare connect; an open
52
+ * one lets us straight in. */
53
+ export declare function probeEnforcement(server: string): Promise<"auth" | "open" | "unreachable">;
54
+ /** The claimed mode must match what the broker actually enforces, in both directions. */
55
+ export declare function checkEnforcement(mode: MeshEntry["mode"], enforces: "auth" | "open" | "unreachable", server: string, space: string, root: string): Check<void>;
56
+ /** The target this registration would resolve to. `flag-server` is the source that can never
57
+ * classify as a prune — nothing is recorded yet, so no entry may be blamed for a failure. */
58
+ export declare function candidateTarget(space: string, server: string, root: string, mode: MeshEntry["mode"], auth: SpaceAuth | undefined): MeshTarget;
59
+ /** The registration-time wording for a failed probe. Deliberately NOT the shared preflight copy:
60
+ * that speaks to a mesh already in the registry ("stale entry", "re-run `cotal up`"), and here
61
+ * nothing is recorded yet — the operator is being told what to fix in the command they just ran. */
62
+ export declare function verifyFailureMessage(kind: PreflightFailure, space: string, server: string, root: string): string;
63
+ /** Probe the candidate for real (liveness + credentials), after {@link checkEnforcement} has
64
+ * settled what the broker is. */
65
+ export declare function verifyTarget(target: MeshTarget): Promise<Check<void>>;
66
+ /** Write the record. Returns whether it became the default — same policy as `cotal up`: adopt only
67
+ * when there is no usable one, and never silently redirect a default that still resolves. */
68
+ export declare function writeRecord(entry: MeshEntry): {
69
+ adoptedCurrent: boolean;
70
+ keptCurrent?: string;
71
+ };
72
+ /**
73
+ * The spaces this root holds account records for — the candidates a guided registration offers,
74
+ * and the evidence the mode is inferred from.
75
+ *
76
+ * An enumeration failure is REPORTED, never flattened to "none". `listSpaceAccounts` throws when
77
+ * the auth dir cannot be read (EACCES, a corrupt record), and treating that as an empty inventory
78
+ * would infer `open` for a root whose trust merely could not be read — recording a credless connect
79
+ * against a mesh whose credentials are sitting right there, unreadable. The pre-refactor call let
80
+ * that throw reach the operator; so does this.
81
+ */
82
+ export declare function spacesAtRoot(root: string): Check<string[]>;
83
+ //# sourceMappingURL=meshes-add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meshes-add.d.ts","sourceRoot":"","sources":["../../src/commands/meshes-add.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAYL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;GASG;AAEH,uGAAuG;AACvG,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAK/E;;kEAEkE;AAClE,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM3C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAgBtD;AAED;;;wFAGwF;AACxF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAW9E;AAED;0EAC0E;AAC1E,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAY7H;AAED;;;gFAGgF;AAChF,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,CAM7G;AAOD;;;;;+BAK+B;AAC/B,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,CAI/F;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAM7J;AAED;8FAC8F;AAC9F,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAU7I;AAED;;qGAEqG;AACrG,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAahH;AAED;kCACkC;AAClC,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAG3E;AAED;8FAC8F;AAC9F,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAS/F;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAM1D"}
@@ -0,0 +1,179 @@
1
+ import { statSync } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ import { probeConnect } from "@cotal-ai/core";
4
+ import { authDir, findCotalRoot, findMesh, getCurrent, homeCotalDir, listSpaceAccounts, loadSpaceAuth, personaDir, preflightTarget, recordMesh, setCurrent, } from "@cotal-ai/workspace";
5
+ const bad = (message) => ({ ok: false, message });
6
+ const good = (value) => ({ ok: true, value });
7
+ /** Is this path a directory? `existsSync` is not the question: a regular FILE named `.cotal` would
8
+ * pass it and record a root whose `.cotal/auth` and `.cotal/agents` can never exist. `statSync`
9
+ * follows symlinks, so a symlinked project dir keeps working. */
10
+ export function isDir(path) {
11
+ try {
12
+ return statSync(path).isDirectory();
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
18
+ /**
19
+ * The broker URL, checked before it is probed, printed or persisted.
20
+ *
21
+ * Credentials embedded in the URL are refused for the same reason a manifest refuses them
22
+ * (`validateBroker`): this record is written to disk and echoed back by `add` and `meshes`, so an
23
+ * inline password would be copied into the registry and onto the operator's screen. No message
24
+ * here repeats the input — the commonest malformed broker URL is a half-typed credential one.
25
+ */
26
+ export function checkServer(raw) {
27
+ let u;
28
+ try {
29
+ u = new URL(raw);
30
+ }
31
+ catch {
32
+ return bad("✗ --server is not a valid URL (expected something like nats://127.0.0.1:4222)");
33
+ }
34
+ if (!["nats:", "tls:", "ws:", "wss:"].includes(u.protocol))
35
+ return bad(`✗ --server scheme "${u.protocol.replace(":", "")}" is not a broker scheme - use nats://, tls://, ws:// or wss://`);
36
+ if (u.username || u.password)
37
+ return bad(`✗ --server must not embed credentials ("${u.username}:***@…") - the registry records this URL and prints it back; pass trust material under --root instead`);
38
+ if (u.search || u.hash)
39
+ return bad(`✗ --server must be a bare broker URL - drop its ${u.search ? "query string" : "fragment"}`);
40
+ if (u.pathname && u.pathname !== "/")
41
+ return bad("✗ --server must be a bare broker URL - drop its path");
42
+ if (!u.hostname)
43
+ return bad("✗ --server names no host - a broker URL needs one (e.g. nats://127.0.0.1:4222)");
44
+ return good(raw);
45
+ }
46
+ /** Where this mesh's local trust + personas live. An explicit path must be an existing directory
47
+ * (the record's whole job is to point at `.cotal/auth` and `.cotal/agents` under it). With no
48
+ * flag, the nearest genuine project up-tree — and `findCotalRoot` returns its STARTING directory
49
+ * when it finds none, so the inferred case must prove the `.cotal` is really there. */
50
+ export function checkRoot(flag, cwd) {
51
+ if (flag) {
52
+ const dir = resolve(flag);
53
+ return isDir(dir)
54
+ ? good(dir)
55
+ : bad(`✗ --root ${dir} is not a directory - it must be the folder holding this mesh's .cotal/auth and .cotal/agents`);
56
+ }
57
+ const root = findCotalRoot(cwd);
58
+ if (!isDir(join(root, ".cotal")) || resolve(root, ".cotal") === resolve(homeCotalDir()))
59
+ return bad("✗ --root <dir> is required outside a mesh project - it is the folder whose .cotal/auth holds this mesh's credentials and whose .cotal/agents holds its personas");
60
+ return good(root);
61
+ }
62
+ /** The recorded auth mode: what the operator said, or what `--root` proves. A root holding this
63
+ * space's account record means auth; anything else is an open broker. */
64
+ export function checkMode(space, root, accounts, flag) {
65
+ if (flag !== undefined && flag !== "auth" && flag !== "open" && flag !== "user")
66
+ return bad(`✗ --mode must be auth or open (got "${flag}")`);
67
+ // A user-auth mesh is registered by the login/exchange trust it was configured with — an issuer,
68
+ // an audience and an IdP URL pinned at `cotal up --user-auth`, not derivable from a broker URL.
69
+ // Guessing them would be inventing trust.
70
+ if (flag === "user")
71
+ return bad(`✗ --mode user cannot be registered by hand - a user-auth space carries pinned IdP trust (issuer, audience, login URL) that only \`cotal up --user-auth\` establishes, in the root where its broker runs`);
72
+ const mode = flag ?? (accounts.includes(space) ? "auth" : "open");
73
+ if (mode === "auth" && !accounts.includes(space))
74
+ return bad(`✗ --mode auth needs "${space}"'s trust material under ${authDir(root)}${accounts.length ? ` (it holds "${accounts.join('", "')}")` : " (it holds none)"} - copy the mesh's account + creds there, point --root at where they already are, or register it --mode open`);
75
+ return good(mode);
76
+ }
77
+ /** For an AUTH registration the root must yield trust that actually COMPOSES. An account record on
78
+ * disk only proves the space was known here: `loadSpaceAuth` still returns undefined when the
79
+ * broker record or the signing material is missing, and recording that as `auth` produces a record
80
+ * whose probe ran credlessly and whose every later use fails at resolution. */
81
+ export function checkTrust(mode, root, space) {
82
+ if (mode !== "auth")
83
+ return good(undefined);
84
+ const auth = loadSpaceAuth(authDir(root), space);
85
+ return auth
86
+ ? good(auth)
87
+ : bad(`✗ "${space}" has an account record under ${authDir(root)} but its trust does not compose (the broker record or signing material is missing) - copy the mesh's full .cotal/auth from where it runs, or register it --mode open`);
88
+ }
89
+ /** Budget for the credless mode probe. Generous on purpose: a slow answer must not be read as "the
90
+ * broker is open" (it is only ever read as `ok` vs a reason), and this runs once, at registration,
91
+ * where a second of patience is cheaper than a wrong record. */
92
+ const MODE_PROBE_TIMEOUT_MS = 5_000;
93
+ /** What the broker ENFORCES, asked with no credential at all.
94
+ *
95
+ * A NATS broker with no auth configured accepts a CONNECT that carries credentials and ignores
96
+ * them — so "my creds were accepted" says nothing about enforcement, and recording `auth` off that
97
+ * promises JWT/ACL protection that is not there. An auth broker refuses a bare connect; an open
98
+ * one lets us straight in. */
99
+ export async function probeEnforcement(server) {
100
+ const bare = await probeConnect(server, { timeoutMs: MODE_PROBE_TIMEOUT_MS });
101
+ if (bare.ok)
102
+ return "open";
103
+ return bare.reason === "auth-required" ? "auth" : "unreachable";
104
+ }
105
+ /** The claimed mode must match what the broker actually enforces, in both directions. */
106
+ export function checkEnforcement(mode, enforces, server, space, root) {
107
+ if (mode === "auth" && enforces === "open")
108
+ return bad(`✗ the broker at ${server} accepts unauthenticated connections, so it cannot be registered as an auth mesh - it enforces no credentials; register it \`--mode open\`, or point --server at the authenticated broker for "${space}"`);
109
+ if (mode === "open" && enforces === "auth")
110
+ return bad(`✗ the broker at ${server} requires auth, so it cannot be registered as an open mesh - copy that mesh's account + creds under ${authDir(root)} and re-run with --mode auth`);
111
+ return good(undefined);
112
+ }
113
+ /** The target this registration would resolve to. `flag-server` is the source that can never
114
+ * classify as a prune — nothing is recorded yet, so no entry may be blamed for a failure. */
115
+ export function candidateTarget(space, server, root, mode, auth) {
116
+ return {
117
+ root,
118
+ server,
119
+ space,
120
+ mode,
121
+ ...(auth ? { auth } : {}),
122
+ personaRoot: personaDir(root),
123
+ source: "flag-server",
124
+ };
125
+ }
126
+ /** The registration-time wording for a failed probe. Deliberately NOT the shared preflight copy:
127
+ * that speaks to a mesh already in the registry ("stale entry", "re-run `cotal up`"), and here
128
+ * nothing is recorded yet — the operator is being told what to fix in the command they just ran. */
129
+ export function verifyFailureMessage(kind, space, server, root) {
130
+ switch (kind) {
131
+ case "unreachable":
132
+ return `✗ no broker answered at ${server} - check the address and that the mesh is up on that machine`;
133
+ case "creds-rejected":
134
+ case "registry-creds-rejected":
135
+ return `✗ the broker at ${server} rejected the credentials for "${space}" under ${authDir(root)} - re-mint them where the mesh runs, or check that --server points at that mesh`;
136
+ case "open-wants-auth":
137
+ case "registry-open-now-auth":
138
+ return `✗ the broker at ${server} requires auth, but nothing under ${authDir(root)} covers "${space}" - copy the mesh's account + creds there and re-run with --mode auth`;
139
+ case "stale-auth":
140
+ return `✗ the credentials for "${space}" under ${authDir(root)} have EXPIRED - re-mint them where the mesh runs (the broker itself is up)`;
141
+ }
142
+ }
143
+ /** Probe the candidate for real (liveness + credentials), after {@link checkEnforcement} has
144
+ * settled what the broker is. */
145
+ export async function verifyTarget(target) {
146
+ const r = await preflightTarget(target);
147
+ return r.ok ? good(undefined) : bad(verifyFailureMessage(r.kind, target.space, target.server, target.root));
148
+ }
149
+ /** Write the record. Returns whether it became the default — same policy as `cotal up`: adopt only
150
+ * when there is no usable one, and never silently redirect a default that still resolves. */
151
+ export function writeRecord(entry) {
152
+ const cur = getCurrent();
153
+ const usableCurrent = cur && findMesh(cur) ? cur : undefined; // compute before recording
154
+ recordMesh(entry);
155
+ if (!usableCurrent) {
156
+ setCurrent(entry.space);
157
+ return { adoptedCurrent: true };
158
+ }
159
+ return { adoptedCurrent: false, ...(usableCurrent !== entry.space ? { keptCurrent: usableCurrent } : {}) };
160
+ }
161
+ /**
162
+ * The spaces this root holds account records for — the candidates a guided registration offers,
163
+ * and the evidence the mode is inferred from.
164
+ *
165
+ * An enumeration failure is REPORTED, never flattened to "none". `listSpaceAccounts` throws when
166
+ * the auth dir cannot be read (EACCES, a corrupt record), and treating that as an empty inventory
167
+ * would infer `open` for a root whose trust merely could not be read — recording a credless connect
168
+ * against a mesh whose credentials are sitting right there, unreadable. The pre-refactor call let
169
+ * that throw reach the operator; so does this.
170
+ */
171
+ export function spacesAtRoot(root) {
172
+ try {
173
+ return good(listSpaceAccounts(authDir(root)));
174
+ }
175
+ catch (e) {
176
+ return bad(`✗ ${authDir(root)} cannot be read (${e.message}) - repair or remove the unreadable account record before registering against this folder`);
177
+ }
178
+ }
179
+ //# sourceMappingURL=meshes-add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meshes-add.js","sourceRoot":"","sources":["../../src/commands/meshes-add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * The guided form of `cotal meshes add` — a bare `cotal meshes add` on a terminal.
3
+ *
4
+ * It exists because the flag form asks the operator to already know four things: the broker
5
+ * address, whether that broker authenticates, which space name to use, and that credentials must
6
+ * be copied locally first. Three of those the machine can find out, so this asks for the ONE that
7
+ * cannot be derived (the address), then probes and reports what it learned. Every question after
8
+ * that is a choice between real options rather than free text: the space names come from the trust
9
+ * actually on disk, and the mode is stated as a fact about the broker, never asked.
10
+ *
11
+ * The rules are not re-implemented here. Every decision goes through `meshes-add.ts`, so the
12
+ * guided and flag forms cannot drift; this module owns presentation and recovery only — which
13
+ * failures offer a way out (a wrong URL is worth retyping; a mesh that is simply down is worth
14
+ * recording anyway) instead of ending the command.
15
+ */
16
+ /**
17
+ * The prompts, as an interface rather than direct clack calls.
18
+ *
19
+ * Not indirection for its own sake: the wizard's VALUE is its control flow — does a name that came
20
+ * from the command line still hit the clash gate, does "point at a different folder" actually ask
21
+ * for one, does a replacement still get verified — and every one of those questions was answered
22
+ * wrong at least once. None of it is reachable by a test that cannot answer a prompt, so the review
23
+ * that caught those bugs was doing work the suite structurally could not. With the prompts injected,
24
+ * a test drives the real function with scripted answers and asserts what it asked and what it wrote.
25
+ */
26
+ export interface WizardIO {
27
+ intro(message: string): void;
28
+ outro(message: string): void;
29
+ note(body: string, title: string): void;
30
+ cancel(message: string): void;
31
+ log: {
32
+ info(m: string): void;
33
+ warn(m: string): void;
34
+ error(m: string): void;
35
+ };
36
+ spinner(): {
37
+ start(m: string): void;
38
+ stop(m: string): void;
39
+ };
40
+ text(opts: {
41
+ message: string;
42
+ placeholder?: string;
43
+ validate?: (v: string | undefined) => string | undefined;
44
+ }): Promise<string>;
45
+ select<T>(opts: {
46
+ message: string;
47
+ options: {
48
+ value: T;
49
+ label: string;
50
+ hint?: string;
51
+ }[];
52
+ }): Promise<T>;
53
+ confirm(opts: {
54
+ message: string;
55
+ }): Promise<boolean>;
56
+ }
57
+ /** The real terminal, via clack. Cancellation (Ctrl-C / Esc) exits here rather than returning a
58
+ * sentinel the wizard body would have to thread through every branch. */
59
+ export declare function clackIO(): WizardIO;
60
+ /** Whether a guided run is possible at all: both ends of the pipe must be a real terminal. Without
61
+ * this a missing flag would hang a script waiting on input nobody is there to give; the flag form
62
+ * keeps failing loud instead. */
63
+ export declare function canPrompt(): boolean;
64
+ /** Pre-filled from whatever the command line already supplied, so a half-typed command completes
65
+ * itself rather than starting over. */
66
+ export interface WizardSeed {
67
+ space?: string;
68
+ server?: string;
69
+ root?: string;
70
+ mode?: string;
71
+ force?: boolean;
72
+ }
73
+ /** Run the guided registration. Returns false if the operator backed out (the caller exits 0 —
74
+ * cancelling is not a failure). */
75
+ export declare function addWizard(seed: WizardSeed, cwd: string, io?: WizardIO): Promise<boolean>;
76
+ //# sourceMappingURL=meshes-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meshes-wizard.d.ts","sourceRoot":"","sources":["../../src/commands/meshes-wizard.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;GASG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,GAAG,EAAE;QAAE,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9E,OAAO,IAAI;QAAE,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC7D,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE;YAAE,KAAK,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxG,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAED;0EAC0E;AAC1E,wBAAgB,OAAO,IAAI,QAAQ,CAgBlC;AAED;;kCAEkC;AAClC,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;wCACwC;AACxC,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;oCACoC;AACpC,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,GAAE,QAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAoOzG"}