@openrig/cli 0.3.2 → 0.3.3-rc.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 (146) hide show
  1. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +8 -8
  2. package/daemon/dist/adapters/cmux-transport.d.ts.map +1 -1
  3. package/daemon/dist/adapters/cmux-transport.js +51 -9
  4. package/daemon/dist/adapters/cmux-transport.js.map +1 -1
  5. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  6. package/daemon/dist/adapters/codex-runtime-adapter.js +32 -4
  7. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  8. package/daemon/dist/adapters/tmux.d.ts +32 -1
  9. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  10. package/daemon/dist/adapters/tmux.js +75 -2
  11. package/daemon/dist/adapters/tmux.js.map +1 -1
  12. package/daemon/dist/db/migrations/042_rig_archive.d.ts +16 -0
  13. package/daemon/dist/db/migrations/042_rig_archive.d.ts.map +1 -0
  14. package/daemon/dist/db/migrations/042_rig_archive.js +21 -0
  15. package/daemon/dist/db/migrations/042_rig_archive.js.map +1 -0
  16. package/daemon/dist/domain/ps-projection.d.ts +6 -1
  17. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  18. package/daemon/dist/domain/ps-projection.js +10 -1
  19. package/daemon/dist/domain/ps-projection.js.map +1 -1
  20. package/daemon/dist/domain/rig-expansion-service.d.ts +1 -1
  21. package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
  22. package/daemon/dist/domain/rig-expansion-service.js +12 -10
  23. package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
  24. package/daemon/dist/domain/rig-repository.d.ts +28 -2
  25. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  26. package/daemon/dist/domain/rig-repository.js +40 -3
  27. package/daemon/dist/domain/rig-repository.js.map +1 -1
  28. package/daemon/dist/domain/rigspec-instantiator.d.ts +176 -0
  29. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  30. package/daemon/dist/domain/rigspec-instantiator.js +305 -37
  31. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  32. package/daemon/dist/domain/rigspec-preflight.d.ts +19 -1
  33. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  34. package/daemon/dist/domain/rigspec-preflight.js +30 -12
  35. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  36. package/daemon/dist/domain/rigspec-schema.d.ts +1 -0
  37. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  38. package/daemon/dist/domain/rigspec-schema.js +4 -1
  39. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  40. package/daemon/dist/domain/session-transport.d.ts +15 -0
  41. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  42. package/daemon/dist/domain/session-transport.js +8 -3
  43. package/daemon/dist/domain/session-transport.js.map +1 -1
  44. package/daemon/dist/domain/topology-converge.d.ts +97 -0
  45. package/daemon/dist/domain/topology-converge.d.ts.map +1 -0
  46. package/daemon/dist/domain/topology-converge.js +70 -0
  47. package/daemon/dist/domain/topology-converge.js.map +1 -0
  48. package/daemon/dist/domain/types.d.ts +6 -0
  49. package/daemon/dist/domain/types.d.ts.map +1 -1
  50. package/daemon/dist/domain/types.js.map +1 -1
  51. package/daemon/dist/domain/whoami-service.d.ts +8 -0
  52. package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
  53. package/daemon/dist/domain/whoami-service.js +1 -0
  54. package/daemon/dist/domain/whoami-service.js.map +1 -1
  55. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  56. package/daemon/dist/domain/workflow-runtime.js +9 -1
  57. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  58. package/daemon/dist/domain/workflow-spec-cache.d.ts +19 -0
  59. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  60. package/daemon/dist/domain/workflow-spec-cache.js +26 -0
  61. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  62. package/daemon/dist/routes/ps.js +4 -1
  63. package/daemon/dist/routes/ps.js.map +1 -1
  64. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  65. package/daemon/dist/routes/rigs.js +124 -2
  66. package/daemon/dist/routes/rigs.js.map +1 -1
  67. package/daemon/dist/startup.d.ts.map +1 -1
  68. package/daemon/dist/startup.js +2 -1
  69. package/daemon/dist/startup.js.map +1 -1
  70. package/daemon/docs/reference/getting-started.md +69 -0
  71. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +78 -9
  72. package/dist/commands/add.d.ts +4 -0
  73. package/dist/commands/add.d.ts.map +1 -0
  74. package/dist/commands/add.js +115 -0
  75. package/dist/commands/add.js.map +1 -0
  76. package/dist/commands/archive.d.ts +10 -0
  77. package/dist/commands/archive.d.ts.map +1 -0
  78. package/dist/commands/archive.js +68 -0
  79. package/dist/commands/archive.js.map +1 -0
  80. package/dist/commands/bootstrap.js +2 -2
  81. package/dist/commands/bootstrap.js.map +1 -1
  82. package/dist/commands/discover.js +2 -2
  83. package/dist/commands/discover.js.map +1 -1
  84. package/dist/commands/down.d.ts +1 -1
  85. package/dist/commands/down.d.ts.map +1 -1
  86. package/dist/commands/down.js +91 -3
  87. package/dist/commands/down.js.map +1 -1
  88. package/dist/commands/ps.d.ts.map +1 -1
  89. package/dist/commands/ps.js +22 -3
  90. package/dist/commands/ps.js.map +1 -1
  91. package/dist/commands/send.d.ts.map +1 -1
  92. package/dist/commands/send.js +11 -0
  93. package/dist/commands/send.js.map +1 -1
  94. package/dist/commands/setup.d.ts +7 -0
  95. package/dist/commands/setup.d.ts.map +1 -1
  96. package/dist/commands/setup.js +28 -1
  97. package/dist/commands/setup.js.map +1 -1
  98. package/dist/commands/status.d.ts.map +1 -1
  99. package/dist/commands/status.js +35 -2
  100. package/dist/commands/status.js.map +1 -1
  101. package/dist/commands/unarchive.d.ts +10 -0
  102. package/dist/commands/unarchive.d.ts.map +1 -0
  103. package/dist/commands/unarchive.js +53 -0
  104. package/dist/commands/unarchive.js.map +1 -0
  105. package/dist/commands/up.d.ts.map +1 -1
  106. package/dist/commands/up.js +50 -0
  107. package/dist/commands/up.js.map +1 -1
  108. package/dist/commands/whoami.d.ts.map +1 -1
  109. package/dist/commands/whoami.js +4 -1
  110. package/dist/commands/whoami.js.map +1 -1
  111. package/dist/commands/workflow.d.ts.map +1 -1
  112. package/dist/commands/workflow.js +2 -3
  113. package/dist/commands/workflow.js.map +1 -1
  114. package/dist/commands/workspace.d.ts.map +1 -1
  115. package/dist/commands/workspace.js +2 -3
  116. package/dist/commands/workspace.js.map +1 -1
  117. package/dist/daemon-lifecycle.d.ts +23 -0
  118. package/dist/daemon-lifecycle.d.ts.map +1 -1
  119. package/dist/daemon-lifecycle.js +24 -0
  120. package/dist/daemon-lifecycle.js.map +1 -1
  121. package/dist/index.d.ts +3 -0
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +7 -0
  124. package/dist/index.js.map +1 -1
  125. package/dist/mcp-server.d.ts.map +1 -1
  126. package/dist/mcp-server.js +29 -0
  127. package/dist/mcp-server.js.map +1 -1
  128. package/dist/release-surface/affected-skills.d.ts +49 -0
  129. package/dist/release-surface/affected-skills.d.ts.map +1 -0
  130. package/dist/release-surface/affected-skills.js +153 -0
  131. package/dist/release-surface/affected-skills.js.map +1 -0
  132. package/dist/release-surface/extract-surface.d.ts +23 -0
  133. package/dist/release-surface/extract-surface.d.ts.map +1 -0
  134. package/dist/release-surface/extract-surface.js +193 -0
  135. package/dist/release-surface/extract-surface.js.map +1 -0
  136. package/dist/release-surface/generate.d.ts +2 -0
  137. package/dist/release-surface/generate.d.ts.map +1 -0
  138. package/dist/release-surface/generate.js +51 -0
  139. package/dist/release-surface/generate.js.map +1 -0
  140. package/dist/release-surface/surface-diff.d.ts +40 -0
  141. package/dist/release-surface/surface-diff.d.ts.map +1 -0
  142. package/dist/release-surface/surface-diff.js +212 -0
  143. package/dist/release-surface/surface-diff.js.map +1 -0
  144. package/package.json +1 -1
  145. package/ui/dist/assets/{index-GjTxfi9S.js → index-CrJgCmkX.js} +146 -141
  146. package/ui/dist/index.html +1 -1
@@ -0,0 +1,115 @@
1
+ import { Command } from "commander";
2
+ import { readFileSync } from "node:fs";
3
+ import { DaemonClient } from "../client.js";
4
+ import { getDaemonStatus, getDaemonUrl } from "../daemon-lifecycle.js";
5
+ import { realDeps } from "./daemon.js";
6
+ export function addMemberCommand(depsOverride) {
7
+ const cmd = new Command("add").description("Add a member to an existing pod in a running rig");
8
+ const getDeps = () => depsOverride ?? { lifecycleDeps: realDeps(), clientFactory: (url) => new DaemonClient(url) };
9
+ cmd
10
+ .argument("<rig-id>", "ID of the target rig")
11
+ .argument("<pod-namespace>", "Namespace of the existing pod to add the member to")
12
+ .argument("<member-fragment-path>", "Path to YAML/JSON member fragment file (spec snake_case fields)")
13
+ .option("--json", "JSON output for agents")
14
+ .option("--rig-root <path>", "Root directory for agent resolution")
15
+ .action(async (rigId, podNamespace, fragmentPath, opts) => {
16
+ const deps = getDeps();
17
+ const status = await getDaemonStatus(deps.lifecycleDeps);
18
+ if (status.state !== "running" || status.healthy === false) {
19
+ console.error("Daemon not running. Start it with: rig daemon start");
20
+ process.exitCode = 1;
21
+ return;
22
+ }
23
+ let fileContent;
24
+ try {
25
+ fileContent = readFileSync(fragmentPath, "utf-8");
26
+ }
27
+ catch {
28
+ console.error(`Cannot read file: ${fragmentPath}`);
29
+ process.exitCode = 1;
30
+ return;
31
+ }
32
+ let member;
33
+ let edges;
34
+ try {
35
+ // Dynamic import to avoid bundling yaml at module load (matches expand).
36
+ const { parse } = await import("yaml");
37
+ const parsed = (parse(fileContent) ?? {});
38
+ if (parsed["member"] && typeof parsed["member"] === "object" && !Array.isArray(parsed["member"])) {
39
+ // Wrapper form: { member: {...}, edges?: [...] }.
40
+ member = parsed["member"];
41
+ edges = parsed["edges"];
42
+ }
43
+ else {
44
+ // Bare member form. Lift any top-level `edges:` out as pod-local edges
45
+ // so they are NOT silently dropped (the schema ignores unknown member
46
+ // fields). The rest is the member.
47
+ const { edges: bareEdges, ...rest } = parsed;
48
+ member = rest;
49
+ edges = bareEdges;
50
+ }
51
+ }
52
+ catch {
53
+ console.error("Invalid YAML/JSON in member fragment file");
54
+ process.exitCode = 1;
55
+ return;
56
+ }
57
+ // A PRESENT-but-non-array edges field is an honest error, never silently
58
+ // omitted (governance FM2 no-silent-drop).
59
+ if (edges !== undefined && edges !== null && !Array.isArray(edges)) {
60
+ console.error("Invalid member fragment: 'edges' must be an array of { from, to, kind }.");
61
+ process.exitCode = 1;
62
+ return;
63
+ }
64
+ const body = { member };
65
+ if (Array.isArray(edges))
66
+ body["edges"] = edges;
67
+ if (opts.rigRoot)
68
+ body["rigRoot"] = opts.rigRoot;
69
+ const client = deps.clientFactory(getDaemonUrl(status));
70
+ const res = await client.post(`/api/rigs/${encodeURIComponent(rigId)}/pods/${encodeURIComponent(podNamespace)}/members`, body);
71
+ const data = res.data;
72
+ if (opts.json) {
73
+ console.log(JSON.stringify(data, null, 2));
74
+ // Non-zero if the HTTP failed OR the new node did not fully launch.
75
+ if (res.status >= 400 || (data.ok && data.result !== undefined && data.result.node.status !== "launched")) {
76
+ process.exitCode = 1;
77
+ }
78
+ return;
79
+ }
80
+ if (res.status >= 400 || !data.ok) {
81
+ // Honest 3-part error: the daemon's message already says what failed /
82
+ // why / what to do (pod_not_found lists pods; member_conflict suggests a
83
+ // new id); validation/preflight surface the specific field errors.
84
+ const msg = data.message
85
+ ?? (data.errors && data.errors.length > 0 ? data.errors.join("; ") : data.error)
86
+ ?? `Add member failed (HTTP ${res.status})`;
87
+ console.error(msg);
88
+ process.exitCode = 1;
89
+ return;
90
+ }
91
+ const node = data.result.node;
92
+ const icon = node.status === "launched" ? "OK" : "FAIL";
93
+ const session = node.sessionName ? ` (${node.sessionName})` : "";
94
+ const error = node.error ? ` - ${node.error}` : "";
95
+ console.log(`Added member to rig ${rigId}`);
96
+ console.log(` Pod: ${data.result.podNamespace}`);
97
+ console.log(` Member: [${icon}] ${node.logicalId}${session}${error}`);
98
+ const persistedEdges = data.result.edges ?? [];
99
+ if (persistedEdges.length > 0) {
100
+ console.log(" Edges:");
101
+ for (const e of persistedEdges)
102
+ console.log(` ${e.from} ${e.kind} ${e.to}`);
103
+ }
104
+ if (data.result.warnings && data.result.warnings.length > 0) {
105
+ console.log("");
106
+ for (const w of data.result.warnings)
107
+ console.log(` Warning: ${w}`);
108
+ }
109
+ if (node.status !== "launched") {
110
+ process.exitCode = 1;
111
+ }
112
+ });
113
+ return cmd;
114
+ }
115
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Command } from "commander";
2
+ import type { StatusDeps } from "./status.js";
3
+ /**
4
+ * `rig archive <rigId>` - OPR.0.3.3.19. Soft, REVERSIBLE archive: hides a rig
5
+ * from the default explorer + `rig ps`, while RETAINING the rigs row, topology,
6
+ * and snapshots. This is NOT `rig down --delete` (which is destructive). Reverse
7
+ * with `rig unarchive <rigId>`. Running/degraded rigs require `--force`.
8
+ */
9
+ export declare function archiveCommand(depsOverride?: StatusDeps): Command;
10
+ //# sourceMappingURL=archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAc9C;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CA+DjE"}
@@ -0,0 +1,68 @@
1
+ import { Command } from "commander";
2
+ import { DaemonClient } from "../client.js";
3
+ import { getDaemonStatus, getDaemonUrl } from "../daemon-lifecycle.js";
4
+ import { realDeps } from "./daemon.js";
5
+ /**
6
+ * `rig archive <rigId>` - OPR.0.3.3.19. Soft, REVERSIBLE archive: hides a rig
7
+ * from the default explorer + `rig ps`, while RETAINING the rigs row, topology,
8
+ * and snapshots. This is NOT `rig down --delete` (which is destructive). Reverse
9
+ * with `rig unarchive <rigId>`. Running/degraded rigs require `--force`.
10
+ */
11
+ export function archiveCommand(depsOverride) {
12
+ const cmd = new Command("archive").description("Archive a rig (soft + reversible: hides it from the default view, retains all data). NOT a delete; reverse with 'rig unarchive'.");
13
+ const getDepsF = () => depsOverride ?? { lifecycleDeps: realDeps(), clientFactory: (url) => new DaemonClient(url) };
14
+ cmd
15
+ .argument("<rigId>", "Rig identifier to archive")
16
+ .option("--force", "Archive even if the rig is running or degraded")
17
+ .option("--json", "JSON output for agents")
18
+ .action(async (rigId, opts) => {
19
+ const deps = getDepsF();
20
+ const status = await getDaemonStatus(deps.lifecycleDeps);
21
+ if (status.state !== "running" || status.healthy === false) {
22
+ console.error("Daemon not running. Start it with: rig daemon start");
23
+ process.exitCode = 1;
24
+ return;
25
+ }
26
+ const client = deps.clientFactory(getDaemonUrl(status));
27
+ const res = await client.post(`/api/rigs/${encodeURIComponent(rigId)}/archive`, { force: opts.force ?? false });
28
+ if (opts.json) {
29
+ console.log(JSON.stringify(res.data));
30
+ if (res.status >= 400)
31
+ process.exitCode = res.status === 409 ? 2 : 1;
32
+ return;
33
+ }
34
+ if (res.status === 404) {
35
+ console.error(`Rig not found: ${rigId}. Check the id with: rig ps`);
36
+ process.exitCode = 1;
37
+ return;
38
+ }
39
+ // AC-6: running/degraded without --force returns a 3-part honest error.
40
+ if (res.status === 409) {
41
+ const err = res.data.error;
42
+ if (err && typeof err === "object") {
43
+ process.stderr.write(`Error: ${err.fact}\n${err.consequence}\n${err.action}\n`);
44
+ }
45
+ else {
46
+ process.stderr.write(`Error: ${String(err)}\n`);
47
+ }
48
+ process.exitCode = 2;
49
+ return;
50
+ }
51
+ if (res.status >= 400) {
52
+ console.error(`Archive failed (HTTP ${res.status}).`);
53
+ process.exitCode = 2;
54
+ return;
55
+ }
56
+ const r = res.data;
57
+ if (r.archived) {
58
+ console.log(`Rig ${rigId} archived (reversible). It is hidden from the default view.`);
59
+ console.log(` See it with: rig ps --include-archived`);
60
+ console.log(` Bring it back: rig unarchive ${rigId}`);
61
+ }
62
+ else {
63
+ console.log(`Rig ${rigId} was already archived.`);
64
+ }
65
+ });
66
+ return cmd;
67
+ }
68
+ //# sourceMappingURL=archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import nodePath from "node:path";
2
2
  import { Command } from "commander";
3
3
  import { DaemonClient } from "../client.js";
4
- import { getDaemonStatus, getDaemonUrl } from "../daemon-lifecycle.js";
4
+ import { getDaemonStatus, getDaemonUrl, printDaemonNotRunning } from "../daemon-lifecycle.js";
5
5
  import { realDeps } from "./daemon.js";
6
6
  const LONG_RUNNING_BOOTSTRAP_TIMEOUT_MS = 120_000;
7
7
  function logStageDetailErrors(data) {
@@ -27,7 +27,7 @@ export function bootstrapCommand(depsOverride) {
27
27
  async function getClient(deps) {
28
28
  const status = await getDaemonStatus(deps.lifecycleDeps);
29
29
  if (status.state !== "running" || status.healthy === false) {
30
- console.error("Daemon not running");
30
+ printDaemonNotRunning();
31
31
  return null;
32
32
  }
33
33
  return deps.clientFactory(getDaemonUrl(status));
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Command } from "commander";
2
2
  import { DaemonClient } from "../client.js";
3
- import { getDaemonStatus, getDaemonUrl } from "../daemon-lifecycle.js";
3
+ import { getDaemonStatus, getDaemonUrl, printDaemonNotRunning } from "../daemon-lifecycle.js";
4
4
  import { realDeps } from "./daemon.js";
5
5
  export function discoverCommand(depsOverride) {
6
6
  const cmd = new Command("discover").description("Scan for unmanaged tmux sessions");
@@ -8,7 +8,7 @@ export function discoverCommand(depsOverride) {
8
8
  async function getClient(deps) {
9
9
  const status = await getDaemonStatus(deps.lifecycleDeps);
10
10
  if (status.state !== "running" || status.healthy === false) {
11
- console.error("Daemon not running");
11
+ printDaemonNotRunning();
12
12
  return null;
13
13
  }
14
14
  return deps.clientFactory(getDaemonUrl(status));
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Command } from "commander";
2
2
  import type { StatusDeps } from "./status.js";
3
3
  /**
4
- * `rig down <rigId>` tear down a rig.
4
+ * `rig down <rig>` - tear down a rig by name or id.
5
5
  * @param depsOverride - injectable deps for testing
6
6
  * @returns Commander command
7
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAc9C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAyF9D"}
1
+ {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAwF9C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAiI9D"}
@@ -4,7 +4,57 @@ import { getDaemonStatus, getDaemonUrl } from "../daemon-lifecycle.js";
4
4
  import { realDeps } from "./daemon.js";
5
5
  const LONG_RUNNING_TIMEOUT_MS = 45_000;
6
6
  /**
7
- * `rig down <rigId>` tear down a rig.
7
+ * Resolve a `rig down` handle (rig name OR id) to a concrete rig id, mirroring
8
+ * the `/api/rigs/summary` path `rig up` uses. Resolution is a PRE-STEP: the
9
+ * existing teardown + guards downstream are unchanged; this only maps the
10
+ * handle to an id.
11
+ *
12
+ * Safety order (destructive-op):
13
+ * 1. id-exact-match FIRST, across ALL rigs incl. archived - an id is unique, so
14
+ * it is never ambiguous, and an archived rig's id must still reach the
15
+ * canonical teardown id path (AC-2 unchanged).
16
+ * 2. else name-filter over ACTIVE (non-archived) rigs only:
17
+ * - exactly 1 active match -> resolve to that id;
18
+ * - >1 active matches -> AMBIGUOUS: halt, never guess (load-bearing AC-3);
19
+ * - 0 active matches -> NOT_FOUND: halt, honest error (AC-4).
20
+ *
21
+ * `/api/rigs/summary` defaults to ACTIVE-only and exposes `archivedAt`; we fetch
22
+ * with `includeArchived=true` so an archived id still id-matches, then filter
23
+ * names to active. So an active+archived same-name pair is NOT ambiguous (only
24
+ * the active candidate counts), and an archived-only name does not resolve by
25
+ * name (use the id, or the archive path).
26
+ */
27
+ async function resolveRigHandle(client, handle) {
28
+ let summaries;
29
+ try {
30
+ // includeArchived=true so an archived rig's id still id-matches below
31
+ // (preserving today's `rig down <id>` path); names are filtered to active.
32
+ const res = await client.get("/api/rigs/summary?includeArchived=true");
33
+ if (res.status !== 200 || !Array.isArray(res.data)) {
34
+ return { kind: "passthrough", handle };
35
+ }
36
+ summaries = res.data;
37
+ }
38
+ catch {
39
+ return { kind: "passthrough", handle };
40
+ }
41
+ // 1. id-exact-match first, across ALL rigs incl. archived (AC-2: down by id,
42
+ // unchanged; ids are never ambiguous; archived ids still reach teardown).
43
+ if (summaries.some((r) => r.id === handle)) {
44
+ return { kind: "resolved", id: handle };
45
+ }
46
+ // 2. name-filter over ACTIVE (non-archived) rigs only, symmetric with `up`.
47
+ const activeNameMatches = summaries.filter((r) => r.name === handle && r.archivedAt == null);
48
+ if (activeNameMatches.length === 1) {
49
+ return { kind: "resolved", id: activeNameMatches[0].id };
50
+ }
51
+ if (activeNameMatches.length > 1) {
52
+ return { kind: "ambiguous", name: handle, ids: activeNameMatches.map((r) => r.id) };
53
+ }
54
+ return { kind: "not_found", handle };
55
+ }
56
+ /**
57
+ * `rig down <rig>` - tear down a rig by name or id.
8
58
  * @param depsOverride - injectable deps for testing
9
59
  * @returns Commander command
10
60
  */
@@ -12,12 +62,12 @@ export function downCommand(depsOverride) {
12
62
  const cmd = new Command("down").description("Tear down a rig");
13
63
  const getDepsF = () => depsOverride ?? { lifecycleDeps: realDeps(), clientFactory: (url) => new DaemonClient(url) };
14
64
  cmd
15
- .argument("<rigId>", "Rig identifier to tear down")
65
+ .argument("<rig>", "Rig name or id to tear down")
16
66
  .option("--delete", "Delete rig record after stopping")
17
67
  .option("--force", "Kill sessions immediately")
18
68
  .option("--snapshot", "Take snapshot before teardown")
19
69
  .option("--json", "JSON output for agents")
20
- .action(async (rigId, opts) => {
70
+ .action(async (rigHandle, opts) => {
21
71
  const deps = getDepsF();
22
72
  const status = await getDaemonStatus(deps.lifecycleDeps);
23
73
  if (status.state !== "running" || status.healthy === false) {
@@ -26,6 +76,44 @@ export function downCommand(depsOverride) {
26
76
  return;
27
77
  }
28
78
  const client = deps.clientFactory(getDaemonUrl(status));
79
+ // Resolve the handle (name OR id) to a concrete id BEFORE the teardown POST.
80
+ // Ambiguous/not-found halt here and never reach `/api/down` - for a
81
+ // destructive op, ambiguity must stop, never guess (AC-3 load-bearing).
82
+ const resolution = await resolveRigHandle(client, rigHandle);
83
+ if (resolution.kind === "ambiguous") {
84
+ const fact = `'${resolution.name}' matches ${resolution.ids.length} rigs.`;
85
+ const consequence = "Refusing to tear down: an ambiguous name could destroy the wrong rig.";
86
+ const action = `Re-run with the specific id, e.g. ${resolution.ids.map((id) => `rig down ${id}`).join(" | ")}`;
87
+ if (opts.json) {
88
+ console.log(JSON.stringify({ error: { fact, consequence, action, candidates: resolution.ids } }));
89
+ }
90
+ else {
91
+ console.error(`Error: ${fact}`);
92
+ console.error(` ${consequence}`);
93
+ console.error(` ${action}`);
94
+ }
95
+ process.exitCode = 2;
96
+ return;
97
+ }
98
+ if (resolution.kind === "not_found") {
99
+ const fact = `No rig found matching '${resolution.handle}'.`;
100
+ const consequence = "Nothing was torn down.";
101
+ const action = "List rigs with: rig ps";
102
+ if (opts.json) {
103
+ console.log(JSON.stringify({ error: { fact, consequence, action } }));
104
+ }
105
+ else {
106
+ console.error(`Error: ${fact}`);
107
+ console.error(` ${consequence}`);
108
+ console.error(` ${action}`);
109
+ }
110
+ process.exitCode = 2;
111
+ return;
112
+ }
113
+ // resolved -> the looked-up id; passthrough -> the raw handle (summary
114
+ // unavailable; daemon resolves by exact id, 404s if absent). Either way
115
+ // the SAME existing teardown path + guards run below - no forked path.
116
+ const rigId = resolution.kind === "resolved" ? resolution.id : resolution.handle;
29
117
  const res = await client.post("/api/down", {
30
118
  rigId,
31
119
  delete: opts.delete ?? false,
@@ -1 +1 @@
1
- {"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ps.d.ts","sourceRoot":"","sources":["../../src/commands/ps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAe,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAqK9F,MAAM,WAAW,MAAO,SAAQ,UAAU;IACxC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAC/D,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAC/C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,CAAC,EAAE,uBAAuB,KAC3B,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;CAC7C;AAyOD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAyOxD"}
1
+ {"version":3,"file":"ps.d.ts","sourceRoot":"","sources":["../../src/commands/ps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAe,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AA6K9F,MAAM,WAAW,MAAO,SAAQ,UAAU;IACxC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAC/D,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAC/C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,CAAC,EAAE,uBAAuB,KAC3B,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;CAC7C;AAgPD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAmPxD"}
@@ -246,6 +246,12 @@ function applyNodeFilter(entries, filter) {
246
246
  return true;
247
247
  });
248
248
  }
249
+ // OPR.0.3.3.19 - build the /api/ps path, opting archived rigs back in when
250
+ // --include-archived is set. Default (no flag) leaves the daemon's
251
+ // archived-excluding default in force.
252
+ function psApiPath(opts) {
253
+ return opts.includeArchived ? "/api/ps?includeArchived=true" : "/api/ps";
254
+ }
249
255
  function selectFields(entries, fields) {
250
256
  return entries.map((e) => {
251
257
  const out = {};
@@ -336,6 +342,7 @@ Examples:
336
342
  rig ps --filter name-prefix=demo Filter by rig-name prefix
337
343
  rig ps --nodes Per-node detail (human; truncated to ${HUMAN_NODE_BUDGET})
338
344
  rig ps --nodes --json --limit 50 Bounded per-node JSON envelope
345
+ rig ps --include-archived Include archived rigs (marked with *); hidden by default
339
346
  rig ps --nodes --active Show only nodes whose agentActivity.state == running (PL-019)
340
347
  rig ps --nodes --filter agentActivity.state=running
341
348
  Same as --active (the explicit form)
@@ -380,6 +387,7 @@ Exit codes:
380
387
  .option("--summary", "Emit aggregate-only output (counts by status/lifecycle)")
381
388
  .option("--filter <key=value>", "Filter entries; supported keys: status, lifecycleState, name-prefix, name, agentActivity.state")
382
389
  .option("--active", "Shortcut for --filter agentActivity.state=running (PL-019)")
390
+ .option("--include-archived", "Include archived rigs (default hides them); parity with 'rig stream list --include-archived'")
383
391
  .option("--host <id>", "Run on a remote host declared in ~/.openrig/hosts.yaml (CLI-side ssh shell-out)")
384
392
  .action(async (opts) => {
385
393
  const deps = getDepsF();
@@ -451,7 +459,7 @@ Exit codes:
451
459
  await handleNodes(client, opts, parsedFilter, limit, fields, useEnvelope);
452
460
  return;
453
461
  }
454
- const res = await client.get("/api/ps");
462
+ const res = await client.get(psApiPath(opts));
455
463
  if (res.status >= 400) {
456
464
  console.error(`Failed to fetch rig list from daemon (HTTP ${res.status}). Check daemon status with: rig status`);
457
465
  process.exitCode = 2;
@@ -510,11 +518,20 @@ Exit codes:
510
518
  const humanTruncated = !opts.full && limit === null && filtered.length > HUMAN_RIG_BUDGET;
511
519
  const header = padRigRow("RIG", "NODES", "RUNNING", "ACTIVE", "WORK", "STATUS", "LIFECYCLE", "UPTIME", "SNAPSHOT");
512
520
  console.log(header);
521
+ let anyArchivedShown = false;
513
522
  for (const e of humanList) {
514
- console.log(padRigRow(e.rigName ?? e.name, String(e.nodeCount), String(e.runningCount),
523
+ // OPR.0.3.3.19 - archived rigs only appear under --include-archived;
524
+ // mark them with a trailing "*" (legend footer below) so the operator
525
+ // can tell archived from active at a glance.
526
+ if (e.isArchived)
527
+ anyArchivedShown = true;
528
+ console.log(padRigRow(e.isArchived ? `${e.rigName ?? e.name} *` : (e.rigName ?? e.name), String(e.nodeCount), String(e.runningCount),
515
529
  // Slice 15 — "—" when daemon predates the field; honest absence.
516
530
  e.activeCount !== undefined ? String(e.activeCount) : "—", e.hasWorkCount !== undefined ? String(e.hasWorkCount) : "—", e.status, abbrevRigLifecycle(e.lifecycleState), e.uptime ?? "—", e.latestSnapshot ?? "—"));
517
531
  }
532
+ if (anyArchivedShown) {
533
+ console.log("* = archived (hidden from the default view; shown via --include-archived). Reverse with: rig unarchive <rig>");
534
+ }
518
535
  if (humanTruncated) {
519
536
  const remaining = filtered.length - HUMAN_RIG_BUDGET;
520
537
  console.log(`... and ${remaining} more rig${remaining === 1 ? "" : "s"} (truncated at ${HUMAN_RIG_BUDGET}).`);
@@ -528,7 +545,7 @@ Exit codes:
528
545
  return cmd;
529
546
  }
530
547
  async function handleNodes(client, opts, parsedFilter, limit, fields, useEnvelope) {
531
- const rigRes = await client.get("/api/ps");
548
+ const rigRes = await client.get(psApiPath(opts));
532
549
  if (rigRes.status >= 400) {
533
550
  console.error(`Failed to fetch rig list from daemon (HTTP ${rigRes.status}). Check daemon status with: rig status`);
534
551
  process.exitCode = 2;
@@ -723,6 +740,8 @@ async function runCrossHostPs(hostId, opts, deps) {
723
740
  argv.push("--summary");
724
741
  if (opts.filter !== undefined)
725
742
  argv.push("--filter", opts.filter);
743
+ if (opts.includeArchived)
744
+ argv.push("--include-archived");
726
745
  if (opts.json)
727
746
  argv.push("--json");
728
747
  const result = await runner(host, argv);