@openrig/cli 0.1.5 → 0.1.7

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 (151) hide show
  1. package/daemon/dist/adapters/claude-resume.js +1 -1
  2. package/daemon/dist/adapters/cmux-transport.d.ts.map +1 -1
  3. package/daemon/dist/adapters/cmux-transport.js +40 -3
  4. package/daemon/dist/adapters/cmux-transport.js.map +1 -1
  5. package/daemon/dist/adapters/cmux.d.ts +4 -2
  6. package/daemon/dist/adapters/cmux.d.ts.map +1 -1
  7. package/daemon/dist/adapters/cmux.js +90 -11
  8. package/daemon/dist/adapters/cmux.js.map +1 -1
  9. package/daemon/dist/adapters/compose-services-adapter.d.ts +73 -0
  10. package/daemon/dist/adapters/compose-services-adapter.d.ts.map +1 -0
  11. package/daemon/dist/adapters/compose-services-adapter.js +195 -0
  12. package/daemon/dist/adapters/compose-services-adapter.js.map +1 -0
  13. package/daemon/dist/adapters/tmux-exec.d.ts.map +1 -1
  14. package/daemon/dist/adapters/tmux-exec.js +22 -2
  15. package/daemon/dist/adapters/tmux-exec.js.map +1 -1
  16. package/daemon/dist/db/migrations/020_rig_services.d.ts +3 -0
  17. package/daemon/dist/db/migrations/020_rig_services.d.ts.map +1 -0
  18. package/daemon/dist/db/migrations/020_rig_services.js +17 -0
  19. package/daemon/dist/db/migrations/020_rig_services.js.map +1 -0
  20. package/daemon/dist/domain/bootstrap-orchestrator.d.ts +7 -0
  21. package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
  22. package/daemon/dist/domain/bootstrap-orchestrator.js +73 -1
  23. package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  24. package/daemon/dist/domain/compose-project-name.d.ts +3 -0
  25. package/daemon/dist/domain/compose-project-name.d.ts.map +1 -0
  26. package/daemon/dist/domain/compose-project-name.js +16 -0
  27. package/daemon/dist/domain/compose-project-name.js.map +1 -0
  28. package/daemon/dist/domain/native-resume-probe.js +5 -2
  29. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  30. package/daemon/dist/domain/node-cmux-service.d.ts +19 -0
  31. package/daemon/dist/domain/node-cmux-service.d.ts.map +1 -0
  32. package/daemon/dist/domain/node-cmux-service.js +75 -0
  33. package/daemon/dist/domain/node-cmux-service.js.map +1 -0
  34. package/daemon/dist/domain/node-inventory.js +1 -1
  35. package/daemon/dist/domain/node-inventory.js.map +1 -1
  36. package/daemon/dist/domain/restore-orchestrator.d.ts +2 -0
  37. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  38. package/daemon/dist/domain/restore-orchestrator.js +13 -0
  39. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  40. package/daemon/dist/domain/rig-repository.d.ts +6 -1
  41. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  42. package/daemon/dist/domain/rig-repository.js +65 -0
  43. package/daemon/dist/domain/rig-repository.js.map +1 -1
  44. package/daemon/dist/domain/rig-teardown.d.ts +1 -0
  45. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  46. package/daemon/dist/domain/rig-teardown.js +17 -0
  47. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  48. package/daemon/dist/domain/rigspec-instantiator.d.ts +7 -0
  49. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  50. package/daemon/dist/domain/rigspec-instantiator.js +7 -0
  51. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  52. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  53. package/daemon/dist/domain/rigspec-schema.js +200 -0
  54. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  55. package/daemon/dist/domain/service-orchestrator.d.ts +59 -0
  56. package/daemon/dist/domain/service-orchestrator.d.ts.map +1 -0
  57. package/daemon/dist/domain/service-orchestrator.js +172 -0
  58. package/daemon/dist/domain/service-orchestrator.js.map +1 -0
  59. package/daemon/dist/domain/services-readiness.d.ts +23 -0
  60. package/daemon/dist/domain/services-readiness.d.ts.map +1 -0
  61. package/daemon/dist/domain/services-readiness.js +63 -0
  62. package/daemon/dist/domain/services-readiness.js.map +1 -0
  63. package/daemon/dist/domain/snapshot-capture.d.ts.map +1 -1
  64. package/daemon/dist/domain/snapshot-capture.js +10 -0
  65. package/daemon/dist/domain/snapshot-capture.js.map +1 -1
  66. package/daemon/dist/domain/spec-library-service.d.ts +1 -0
  67. package/daemon/dist/domain/spec-library-service.d.ts.map +1 -1
  68. package/daemon/dist/domain/spec-library-service.js +7 -0
  69. package/daemon/dist/domain/spec-library-service.js.map +1 -1
  70. package/daemon/dist/domain/spec-review-service.d.ts +29 -0
  71. package/daemon/dist/domain/spec-review-service.d.ts.map +1 -1
  72. package/daemon/dist/domain/spec-review-service.js +26 -0
  73. package/daemon/dist/domain/spec-review-service.js.map +1 -1
  74. package/daemon/dist/domain/types.d.ts +83 -0
  75. package/daemon/dist/domain/types.d.ts.map +1 -1
  76. package/daemon/dist/openrig-compat.d.ts.map +1 -1
  77. package/daemon/dist/openrig-compat.js +4 -1
  78. package/daemon/dist/openrig-compat.js.map +1 -1
  79. package/daemon/dist/routes/adapters.js +3 -2
  80. package/daemon/dist/routes/adapters.js.map +1 -1
  81. package/daemon/dist/routes/env.d.ts +3 -0
  82. package/daemon/dist/routes/env.d.ts.map +1 -0
  83. package/daemon/dist/routes/env.js +119 -0
  84. package/daemon/dist/routes/env.js.map +1 -0
  85. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  86. package/daemon/dist/routes/sessions.js +14 -0
  87. package/daemon/dist/routes/sessions.js.map +1 -1
  88. package/daemon/dist/routes/spec-library.d.ts.map +1 -1
  89. package/daemon/dist/routes/spec-library.js +21 -0
  90. package/daemon/dist/routes/spec-library.js.map +1 -1
  91. package/daemon/dist/server.d.ts +3 -0
  92. package/daemon/dist/server.d.ts.map +1 -1
  93. package/daemon/dist/server.js +5 -0
  94. package/daemon/dist/server.js.map +1 -1
  95. package/daemon/dist/startup.d.ts.map +1 -1
  96. package/daemon/dist/startup.js +15 -3
  97. package/daemon/dist/startup.js.map +1 -1
  98. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +36 -0
  99. package/daemon/specs/agents/apps/vault-specialist/guidance/role.md +34 -0
  100. package/daemon/specs/agents/apps/vault-specialist/skills/vault-user/SKILL.md +64 -0
  101. package/daemon/specs/agents/apps/vault-specialist/startup/context.md +46 -0
  102. package/daemon/specs/agents/development/implementer/agent.yaml +1 -1
  103. package/daemon/specs/agents/development/implementer/guidance/role.md +1 -0
  104. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -1
  105. package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +1 -0
  106. package/daemon/specs/agents/shared/agent.yaml +2 -0
  107. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +53 -2
  108. package/daemon/specs/agents/shared/skills/mental-model-ha/SKILL.md +953 -0
  109. package/daemon/specs/rigs/launch/secrets-manager/rig.yaml +37 -0
  110. package/daemon/specs/rigs/launch/secrets-manager/secrets-manager.compose.yaml +18 -0
  111. package/dist/commands/destroy.d.ts +9 -0
  112. package/dist/commands/destroy.d.ts.map +1 -0
  113. package/dist/commands/destroy.js +175 -0
  114. package/dist/commands/destroy.js.map +1 -0
  115. package/dist/commands/doctor.d.ts +1 -0
  116. package/dist/commands/doctor.d.ts.map +1 -1
  117. package/dist/commands/doctor.js +82 -7
  118. package/dist/commands/doctor.js.map +1 -1
  119. package/dist/commands/down.d.ts.map +1 -1
  120. package/dist/commands/down.js +2 -1
  121. package/dist/commands/down.js.map +1 -1
  122. package/dist/commands/env.d.ts +4 -0
  123. package/dist/commands/env.d.ts.map +1 -0
  124. package/dist/commands/env.js +139 -0
  125. package/dist/commands/env.js.map +1 -0
  126. package/dist/commands/restore.d.ts.map +1 -1
  127. package/dist/commands/restore.js +2 -1
  128. package/dist/commands/restore.js.map +1 -1
  129. package/dist/commands/specs.d.ts.map +1 -1
  130. package/dist/commands/specs.js +11 -4
  131. package/dist/commands/specs.js.map +1 -1
  132. package/dist/commands/up.d.ts.map +1 -1
  133. package/dist/commands/up.js +9 -2
  134. package/dist/commands/up.js.map +1 -1
  135. package/dist/destroy-helpers.d.ts +63 -0
  136. package/dist/destroy-helpers.d.ts.map +1 -0
  137. package/dist/destroy-helpers.js +224 -0
  138. package/dist/destroy-helpers.js.map +1 -0
  139. package/dist/index.d.ts +3 -0
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +4 -0
  142. package/dist/index.js.map +1 -1
  143. package/dist/openrig-compat.d.ts.map +1 -1
  144. package/dist/openrig-compat.js +4 -1
  145. package/dist/openrig-compat.js.map +1 -1
  146. package/package.json +1 -1
  147. package/ui/dist/assets/index-BsXbqPEl.css +1 -0
  148. package/ui/dist/assets/index-CXZYxZbF.js +225 -0
  149. package/ui/dist/index.html +2 -2
  150. package/ui/dist/assets/index-DGPFTQEV.css +0 -1
  151. package/ui/dist/assets/index-VA_A8dpm.js +0 -224
@@ -0,0 +1,37 @@
1
+ version: "0.2"
2
+ name: secrets-manager
3
+ summary: >
4
+ HashiCorp Vault in dev mode with a dedicated Vault specialist agent.
5
+ Vault boots before the specialist launches, health is gated, and the
6
+ env receipt is captured. The specialist can read, write, list, and
7
+ delete secrets via the Vault HTTP API.
8
+
9
+ services:
10
+ kind: compose
11
+ compose_file: secrets-manager.compose.yaml
12
+ project_name: openrig-secrets
13
+ down_policy: down
14
+ wait_for:
15
+ - url: http://127.0.0.1:8200/v1/sys/health
16
+ surfaces:
17
+ urls:
18
+ - name: Vault UI
19
+ url: http://127.0.0.1:8200/ui
20
+ - name: Vault API
21
+ url: http://127.0.0.1:8200/v1
22
+ commands:
23
+ - name: Vault status
24
+ command: "vault status -address=http://127.0.0.1:8200"
25
+
26
+ pods:
27
+ - id: vault
28
+ label: Vault
29
+ members:
30
+ - id: specialist
31
+ agent_ref: "local:../../../agents/apps/vault-specialist"
32
+ runtime: claude-code
33
+ profile: default
34
+ cwd: "."
35
+ edges: []
36
+
37
+ edges: []
@@ -0,0 +1,18 @@
1
+ version: "3.8"
2
+
3
+ services:
4
+ vault:
5
+ image: hashicorp/vault:1.15
6
+ cap_add:
7
+ - IPC_LOCK
8
+ environment:
9
+ VAULT_DEV_ROOT_TOKEN_ID: "openrig-dev-token"
10
+ VAULT_DEV_LISTEN_ADDRESS: "0.0.0.0:8200"
11
+ ports:
12
+ - "8200:8200"
13
+ healthcheck:
14
+ test: ["CMD", "vault", "status", "-address=http://127.0.0.1:8200"]
15
+ interval: 5s
16
+ timeout: 3s
17
+ retries: 5
18
+ start_period: 5s
@@ -0,0 +1,9 @@
1
+ import { Command } from "commander";
2
+ import { ConfigStore } from "../config-store.js";
3
+ import { type DestroyDeps } from "../destroy-helpers.js";
4
+ export interface DestroyCommandDeps {
5
+ configStore: Pick<ConfigStore, "resolve">;
6
+ destroyDeps: DestroyDeps;
7
+ }
8
+ export declare function destroyCommand(depsOverride?: DestroyCommandDeps): Command;
9
+ //# sourceMappingURL=destroy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../src/commands/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAOL,KAAK,WAAW,EAIjB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC1C,WAAW,EAAE,WAAW,CAAC;CAC1B;AA8ID,wBAAgB,cAAc,CAAC,YAAY,CAAC,EAAE,kBAAkB,GAAG,OAAO,CA4CzE"}
@@ -0,0 +1,175 @@
1
+ import { Command } from "commander";
2
+ import { existsSync, mkdirSync, renameSync, rmSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { ConfigStore } from "../config-store.js";
5
+ import { realDeps } from "./daemon.js";
6
+ import { getDefaultOpenRigPath, getPreferredOpenRigHome, readOpenRigEnv } from "../openrig-compat.js";
7
+ import { DESTROY_CONFIRM_TOKEN, buildDestroyPlan, executeDestroy, findListeningPidWithLsof, killTmuxSessionWithCli, listManagedTmuxSessionsFromDb, } from "../destroy-helpers.js";
8
+ import { stopDaemon } from "../daemon-lifecycle.js";
9
+ function resolveRuntimeConfig(configStore) {
10
+ const warnings = [];
11
+ const stateRoot = getPreferredOpenRigHome();
12
+ const defaultDbPath = getDefaultOpenRigPath("openrig.sqlite");
13
+ const defaultTranscriptsPath = getDefaultOpenRigPath("transcripts");
14
+ const effectiveDefaultDbPath = join(stateRoot, "openrig.sqlite");
15
+ const effectiveDefaultTranscriptsPath = join(stateRoot, "transcripts");
16
+ const overrideUrl = readOpenRigEnv("OPENRIG_URL", "RIGGED_URL")?.trim();
17
+ if (overrideUrl) {
18
+ warnings.push(`Ignoring ${overrideUrl} from OPENRIG_URL/RIGGED_URL because rig destroy only operates on local state.`);
19
+ }
20
+ try {
21
+ const config = configStore.resolve();
22
+ return {
23
+ runtimeConfig: {
24
+ stateRoot,
25
+ dbPath: config.db.path === defaultDbPath ? effectiveDefaultDbPath : config.db.path,
26
+ transcriptsPath: config.transcripts.path === defaultTranscriptsPath ? effectiveDefaultTranscriptsPath : config.transcripts.path,
27
+ daemonHost: config.daemon.host,
28
+ daemonPort: config.daemon.port,
29
+ },
30
+ warnings,
31
+ };
32
+ }
33
+ catch (err) {
34
+ warnings.push(`Failed to read config; using compatibility defaults instead: ${err instanceof Error ? err.message : String(err)}`);
35
+ return {
36
+ runtimeConfig: {
37
+ stateRoot,
38
+ dbPath: effectiveDefaultDbPath,
39
+ transcriptsPath: effectiveDefaultTranscriptsPath,
40
+ daemonHost: "127.0.0.1",
41
+ daemonPort: 7433,
42
+ },
43
+ warnings,
44
+ };
45
+ }
46
+ }
47
+ function realDestroyDeps() {
48
+ const lifecycleDeps = realDeps();
49
+ return {
50
+ stopDaemon: async () => stopDaemon(lifecycleDeps),
51
+ inspectListener: async (host, port) => {
52
+ try {
53
+ const res = await fetch(`http://${host}:${port}/healthz`);
54
+ if (!res.ok) {
55
+ return {
56
+ kind: "other_http",
57
+ healthy: false,
58
+ detail: `HTTP ${res.status}`,
59
+ };
60
+ }
61
+ let body = null;
62
+ try {
63
+ body = await res.json();
64
+ }
65
+ catch {
66
+ return {
67
+ kind: "other_http",
68
+ healthy: false,
69
+ detail: "Response body was not valid OpenRig health JSON.",
70
+ };
71
+ }
72
+ if (body && typeof body === "object" && body.status === "ok") {
73
+ return { kind: "openrig", healthy: true };
74
+ }
75
+ return {
76
+ kind: "other_http",
77
+ healthy: false,
78
+ detail: "Response body did not match the OpenRig health contract.",
79
+ };
80
+ }
81
+ catch {
82
+ return { kind: "unreachable" };
83
+ }
84
+ },
85
+ findListeningPid: findListeningPidWithLsof,
86
+ killProcess: (pid) => {
87
+ process.kill(pid, "SIGTERM");
88
+ },
89
+ exists: existsSync,
90
+ renamePath: (from, to) => renameSync(from, to),
91
+ removePath: (targetPath) => rmSync(targetPath, { recursive: true, force: true }),
92
+ mkdirp: (targetPath) => mkdirSync(targetPath, { recursive: true }),
93
+ listManagedTmuxSessions: listManagedTmuxSessionsFromDb,
94
+ killTmuxSession: killTmuxSessionWithCli,
95
+ sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
96
+ now: () => new Date(),
97
+ };
98
+ }
99
+ function printPlan(scope, backup, runtimeConfig, managedTmuxSessions, warnings) {
100
+ console.log("DESTROY PLAN");
101
+ console.log(` scope: ${scope}`);
102
+ console.log(` state root: ${runtimeConfig.stateRoot}`);
103
+ console.log(` daemon: http://${runtimeConfig.daemonHost}:${runtimeConfig.daemonPort}`);
104
+ console.log(` backup: ${backup ? "enabled" : "disabled"}`);
105
+ console.log(` tmux cleanup: ${scope === "all" ? `enabled (${managedTmuxSessions.length} managed session${managedTmuxSessions.length === 1 ? "" : "s"})` : "disabled"}`);
106
+ for (const warning of warnings) {
107
+ console.log(` warning: ${warning}`);
108
+ }
109
+ console.log("");
110
+ }
111
+ function printResult(result) {
112
+ console.log("DESTROY RESULT");
113
+ console.log(` daemon: ${result.daemonStopped ? "stopped" : "still responding"}`);
114
+ console.log(` port: ${result.portCleared ? "cleared" : "still occupied"}`);
115
+ if (result.scope === "all") {
116
+ console.log(` tmux sessions removed: ${result.tmuxKilled}`);
117
+ if (result.tmuxMissing > 0) {
118
+ console.log(` tmux sessions missing/already gone: ${result.tmuxMissing}`);
119
+ }
120
+ }
121
+ if (result.backupPaths.length > 0) {
122
+ for (const backupPath of result.backupPaths) {
123
+ console.log(` backup: ${backupPath}`);
124
+ }
125
+ }
126
+ else if (result.backup) {
127
+ console.log(" backup: nothing to move");
128
+ }
129
+ console.log(result.stateRecreated ? ` fresh state root: ${result.stateRoot}` : " fresh state root: not created (state left untouched)");
130
+ for (const warning of result.warnings) {
131
+ console.log(` warning: ${warning}`);
132
+ }
133
+ }
134
+ export function destroyCommand(depsOverride) {
135
+ const cmd = new Command("destroy").description("Destroy OpenRig local state for recovery");
136
+ cmd
137
+ .option("--state", "Destroy OpenRig state and recreate an empty state root")
138
+ .option("--all", "Destroy OpenRig state and remove managed tmux sessions")
139
+ .option("--backup", "Move state aside instead of deleting it")
140
+ .option("--yes", "Confirm the destructive operation")
141
+ .option("--confirm <token>", `Exact confirmation token: ${DESTROY_CONFIRM_TOKEN}`)
142
+ .action(async (opts) => {
143
+ const selectedScopes = [opts.state ? "state" : null, opts.all ? "all" : null].filter(Boolean);
144
+ if (selectedScopes.length !== 1) {
145
+ console.error("Specify exactly one destroy scope: --state or --all");
146
+ process.exitCode = 1;
147
+ return;
148
+ }
149
+ if (!opts.yes) {
150
+ console.error("Destroy requires --yes");
151
+ process.exitCode = 1;
152
+ return;
153
+ }
154
+ if (opts.confirm !== DESTROY_CONFIRM_TOKEN) {
155
+ console.error(`Destroy requires: --confirm ${DESTROY_CONFIRM_TOKEN}`);
156
+ process.exitCode = 1;
157
+ return;
158
+ }
159
+ const deps = depsOverride ?? {
160
+ configStore: new ConfigStore(),
161
+ destroyDeps: realDestroyDeps(),
162
+ };
163
+ const { runtimeConfig, warnings } = resolveRuntimeConfig(deps.configStore);
164
+ const plan = buildDestroyPlan(selectedScopes[0], Boolean(opts.backup), runtimeConfig, deps.destroyDeps);
165
+ printPlan(plan.scope, plan.backup, runtimeConfig, plan.managedTmuxSessions, [...warnings, ...plan.warnings]);
166
+ plan.warnings = [...warnings, ...plan.warnings];
167
+ const result = await executeDestroy(plan, deps.destroyDeps);
168
+ printResult(result);
169
+ if (!result.portCleared) {
170
+ process.exitCode = 1;
171
+ }
172
+ });
173
+ return cmd;
174
+ }
175
+ //# sourceMappingURL=destroy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../../src/commands/destroy.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export interface DoctorDeps {
13
13
  exec: (cmd: string) => string;
14
14
  checkPort: (port: number) => Promise<boolean>;
15
15
  configStore: Pick<ConfigStore, "resolve">;
16
+ platform?: NodeJS.Platform;
16
17
  mkdirp?: (path: string) => void;
17
18
  checkWritable?: (path: string) => void;
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAgBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;CAAE,CAgG5G;AAED,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAwChE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAgBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;CAAE,CAqJ5G;AAqBD,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAwChE"}
@@ -20,6 +20,7 @@ function defaultCheckPort(port) {
20
20
  }
21
21
  export function runDoctorChecks(deps) {
22
22
  const checks = [];
23
+ const platform = deps.platform ?? process.platform;
23
24
  // 1. Daemon dist
24
25
  const daemonPath = resolveDaemonPath(deps.baseDir, deps.exists);
25
26
  const daemonEntry = path.join(daemonPath, "dist/index.js");
@@ -67,6 +68,25 @@ export function runDoctorChecks(deps) {
67
68
  try {
68
69
  const ver = deps.exec("tmux -V").trim();
69
70
  checks.push({ name: "tmux", status: "pass", message: ver });
71
+ if (platform === "darwin") {
72
+ const mouseMode = readTmuxMouseMode(deps);
73
+ if (mouseMode === "on") {
74
+ checks.push({
75
+ name: "tmux_mouse",
76
+ status: "pass",
77
+ message: "tmux mouse mode enabled.",
78
+ });
79
+ }
80
+ else if (mouseMode === "off") {
81
+ checks.push({
82
+ name: "tmux_mouse",
83
+ status: "warn",
84
+ message: "tmux mouse mode appears disabled.",
85
+ reason: "On macOS, scrolling and text selection inside tmux panes is much smoother with mouse mode enabled.",
86
+ fix: "Run `tmux set -g mouse on` for the current tmux server. To keep it enabled, add `set -g mouse on` to `~/.tmux.conf` and reload with `tmux source-file ~/.tmux.conf`.",
87
+ });
88
+ }
89
+ }
70
90
  }
71
91
  catch {
72
92
  checks.push({
@@ -77,7 +97,42 @@ export function runDoctorChecks(deps) {
77
97
  fix: "Install tmux: brew install tmux (macOS), apt install tmux (Linux).",
78
98
  });
79
99
  }
80
- // 5. Writable state paths (shared with preflight)
100
+ // 5. cmux (optional but recommended for Open CMUX workflows)
101
+ try {
102
+ deps.exec("cmux capabilities --json");
103
+ checks.push({
104
+ name: "cmux",
105
+ status: "pass",
106
+ message: "cmux control available.",
107
+ });
108
+ }
109
+ catch (err) {
110
+ try {
111
+ deps.exec("cmux --help");
112
+ const socketMode = platform === "darwin" ? readCmuxSocketControlMode(deps) : null;
113
+ const modeHint = socketMode && socketMode !== "allowAll"
114
+ ? ` Likely cause on macOS: cmux socketControlMode is '${socketMode}'. Tell the user to allow OpenRig/cmux socket control, then rerun 'rig doctor'.`
115
+ : "";
116
+ checks.push({
117
+ name: "cmux",
118
+ status: "warn",
119
+ message: "cmux installed, but control unavailable right now.",
120
+ reason: "OpenRig can run without cmux, but Open CMUX actions and cmux-aware node control will be unavailable until cmux control works.",
121
+ fix: `Open the cmux app, verify control access/socket sharing is enabled for OpenRig, then rerun 'rig doctor'. If you are running this for someone else, tell the user that cmux is optional but required for Open CMUX. If you do not need cmux features, you can ignore this warning.${modeHint}`,
122
+ });
123
+ }
124
+ catch {
125
+ checks.push({
126
+ name: "cmux",
127
+ status: "warn",
128
+ message: "cmux not found.",
129
+ reason: "OpenRig can run without cmux, but Open CMUX actions and surface control will be unavailable.",
130
+ fix: "Install and launch cmux if you want Open CMUX support. If you are running this for someone else, tell the user that cmux is optional and only needed for Open CMUX workflows.",
131
+ });
132
+ }
133
+ void err;
134
+ }
135
+ // 6. Writable state paths (shared with preflight)
81
136
  const config = deps.configStore.resolve();
82
137
  const writableCheck = buildWritableHomeCheck(config, path.dirname(config.db.path), {
83
138
  mkdirp: deps.mkdirp,
@@ -90,7 +145,7 @@ export function runDoctorChecks(deps) {
90
145
  reason: writableCheck.reason,
91
146
  fix: writableCheck.fix,
92
147
  });
93
- // 6. Port availability (async) — daemon already running on that port counts as OK
148
+ // 7. Port availability (async) — daemon already running on that port counts as OK
94
149
  const portCheck = deps.checkPort(DEFAULT_PORT).then(async (available) => {
95
150
  if (available) {
96
151
  return { name: "port", status: "pass", message: `Port ${DEFAULT_PORT} available.` };
@@ -113,6 +168,26 @@ export function runDoctorChecks(deps) {
113
168
  });
114
169
  return { checks, portCheck };
115
170
  }
171
+ function readCmuxSocketControlMode(deps) {
172
+ try {
173
+ const mode = deps.exec("defaults read com.cmuxterm.app socketControlMode").trim();
174
+ return mode || null;
175
+ }
176
+ catch {
177
+ return null;
178
+ }
179
+ }
180
+ function readTmuxMouseMode(deps) {
181
+ try {
182
+ const mode = deps.exec("tmux show-options -gqv mouse").trim().toLowerCase();
183
+ if (mode === "on" || mode === "off")
184
+ return mode;
185
+ return null;
186
+ }
187
+ catch {
188
+ return null;
189
+ }
190
+ }
116
191
  export function doctorCommand(depsOverride) {
117
192
  const cmd = new Command("doctor").description("Verify OpenRig install health");
118
193
  cmd
@@ -130,10 +205,10 @@ export function doctorCommand(depsOverride) {
130
205
  const { checks, portCheck } = runDoctorChecks(deps);
131
206
  const portResult = await portCheck;
132
207
  const allChecks = [...checks, portResult];
133
- const allPass = allChecks.every((c) => c.status === "pass");
208
+ const healthy = allChecks.every((c) => c.status !== "fail");
134
209
  if (opts.json) {
135
- console.log(JSON.stringify({ healthy: allPass, checks: allChecks }, null, 2));
136
- if (!allPass)
210
+ console.log(JSON.stringify({ healthy, checks: allChecks }, null, 2));
211
+ if (!healthy)
137
212
  process.exitCode = 1;
138
213
  return;
139
214
  }
@@ -146,8 +221,8 @@ export function doctorCommand(depsOverride) {
146
221
  console.log(` Fix: ${check.fix}`);
147
222
  }
148
223
  console.log("");
149
- console.log(allPass ? "All checks passed." : "Some checks failed.");
150
- if (!allPass)
224
+ console.log(healthy ? "System checks look good." : "Some checks failed.");
225
+ if (!healthy)
151
226
  process.exitCode = 1;
152
227
  });
153
228
  return cmd;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAqBhE,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAgB;IAC9C,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IAEnD,iBAAiB;IACjB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,UAAU,EAAE,EAAE,CAAC,CAAC;IACtG,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,wBAAwB;YACjC,MAAM,EAAE,6EAA6E;YACrF,GAAG,EAAE,kGAAkG;SACxG,CAAC,CAAC;IACL,CAAC;IAED,aAAa;IACb,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9E,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,oBAAoB;YAC7B,MAAM,EAAE,mEAAmE;YAC3E,GAAG,EAAE,kGAAkG;SACxG,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,IAAI,KAAK,IAAI,cAAc,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5F,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,QAAQ,OAAO,CAAC,OAAO,uBAAuB,cAAc,IAAI;YACzE,MAAM,EAAE,4EAA4E;YACpF,GAAG,EAAE,yDAAyD;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,UAAU;IACV,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5D,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,0BAA0B;iBACpC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,mCAAmC;oBAC5C,MAAM,EAAE,oGAAoG;oBAC5G,GAAG,EAAE,sKAAsK;iBAC5K,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,iBAAiB;YAC1B,MAAM,EAAE,6CAA6C;YACrD,GAAG,EAAE,oEAAoE;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,yBAAyB;SACnC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzB,MAAM,UAAU,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClF,MAAM,QAAQ,GAAG,UAAU,IAAI,UAAU,KAAK,UAAU;gBACtD,CAAC,CAAC,sDAAsD,UAAU,iFAAiF;gBACnJ,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,oDAAoD;gBAC7D,MAAM,EAAE,+HAA+H;gBACvI,GAAG,EAAE,oRAAoR,QAAQ,EAAE;aACpS,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,iBAAiB;gBAC1B,MAAM,EAAE,8FAA8F;gBACtG,GAAG,EAAE,+KAA+K;aACrL,CAAC,CAAC;QACL,CAAC;QACD,KAAK,GAAG,CAAC;IACX,CAAC;IAED,kDAAkD;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QACjF,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC1C,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,IAAI,+BAA+B;QACrH,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,GAAG,EAAE,aAAa,CAAC,GAAG;KACvB,CAAC,CAAC;IAEH,kFAAkF;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAwB,EAAE;QAC5F,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,YAAY,aAAa,EAAE,CAAC;QACtF,CAAC;QACD,qDAAqD;QACrD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,YAAY,UAAU,CAAC,CAAC;YACpE,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,YAAY,4BAA4B,EAAE,CAAC;YACrG,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAChC,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,QAAQ,YAAY,gCAAgC;YAC7D,MAAM,EAAE,qDAAqD;YAC7D,GAAG,EAAE,+BAA+B,YAAY,gFAAgF;SACjI,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAgB;IACjD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,IAAI,EAAE,CAAC;QAClF,OAAO,IAAI,IAAI,IAAI,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAgB;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5E,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,YAAyB;IACrD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAE/E,GAAG;SACA,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;SAC1C,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;QACzC,MAAM,IAAI,GAAe,YAAY,IAAI;YACvC,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;YAC5B,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YACvD,SAAS,EAAE,gBAAgB;YAC3B,WAAW,EAAE,IAAI,WAAW,EAAE;YAC9B,MAAM,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACpE,aAAa,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC;SACxE,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC;QACnC,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,IAAI,KAAK,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,IAAI,KAAK,CAAC,GAAG;gBAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -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;AAY9C;;;;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;AAc9C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAyF9D"}
@@ -2,6 +2,7 @@ import { Command } from "commander";
2
2
  import { DaemonClient } from "../client.js";
3
3
  import { getDaemonStatus, getDaemonUrl } from "../daemon-lifecycle.js";
4
4
  import { realDeps } from "./daemon.js";
5
+ const LONG_RUNNING_TIMEOUT_MS = 45_000;
5
6
  /**
6
7
  * `rig down <rigId>` — tear down a rig.
7
8
  * @param depsOverride - injectable deps for testing
@@ -30,7 +31,7 @@ export function downCommand(depsOverride) {
30
31
  delete: opts.delete ?? false,
31
32
  force: opts.force ?? false,
32
33
  snapshot: opts.snapshot ?? false,
33
- });
34
+ }, { timeoutMs: LONG_RUNNING_TIMEOUT_MS });
34
35
  if (opts.json) {
35
36
  console.log(JSON.stringify(res.data));
36
37
  if (res.status >= 400) {
@@ -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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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ import type { StatusDeps } from "./status.js";
3
+ export declare function envCommand(depsOverride?: StatusDeps): Command;
4
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,wBAAgB,UAAU,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAqI7D"}
@@ -0,0 +1,139 @@
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
+ const LONG_RUNNING_TIMEOUT_MS = 45_000;
6
+ export function envCommand(depsOverride) {
7
+ const cmd = new Command("env")
8
+ .description("Inspect and control rig environment services for service-backed rigs and managed apps")
9
+ .addHelpText("after", `
10
+ Examples:
11
+ rig env status secrets-manager
12
+ rig env logs secrets-manager vault
13
+ rig env down secrets-manager
14
+ `);
15
+ const getDeps = () => depsOverride ?? { lifecycleDeps: realDeps(), clientFactory: (url) => new DaemonClient(url) };
16
+ async function getClient(deps) {
17
+ const status = await getDaemonStatus(deps.lifecycleDeps);
18
+ if (status.state !== "running" || status.healthy === false) {
19
+ console.error("Daemon not running");
20
+ return null;
21
+ }
22
+ return deps.clientFactory(getDaemonUrl(status));
23
+ }
24
+ async function resolveRigId(client, rigRef) {
25
+ const summaries = await client.get("/api/rigs/summary");
26
+ const match = summaries.data.find((r) => r.name === rigRef || r.id === rigRef);
27
+ if (!match)
28
+ throw new Error(`Rig '${rigRef}' not found`);
29
+ return match.id;
30
+ }
31
+ // rig env status <rig>
32
+ cmd
33
+ .command("status")
34
+ .argument("<rig>", "Rig name or ID")
35
+ .option("--json", "JSON output")
36
+ .action(async (rig, opts) => {
37
+ const deps = getDeps();
38
+ const client = await getClient(deps);
39
+ if (!client) {
40
+ process.exitCode = 1;
41
+ return;
42
+ }
43
+ let rigId;
44
+ try {
45
+ rigId = await resolveRigId(client, rig);
46
+ }
47
+ catch (err) {
48
+ console.error(err.message);
49
+ process.exitCode = 1;
50
+ return;
51
+ }
52
+ const res = await client.get(`/api/rigs/${encodeURIComponent(rigId)}/env`);
53
+ if (opts.json) {
54
+ console.log(JSON.stringify(res.data, null, 2));
55
+ return;
56
+ }
57
+ if (!res.data["hasServices"]) {
58
+ console.log("No services configured for this rig.");
59
+ return;
60
+ }
61
+ const receipt = res.data["receipt"];
62
+ if (!receipt) {
63
+ console.log("Services configured but no receipt available yet.");
64
+ return;
65
+ }
66
+ console.log(`Env: ${res.data["kind"]} (${res.data["projectName"]})`);
67
+ const services = receipt["services"];
68
+ if (services) {
69
+ for (const svc of services) {
70
+ const health = svc.health ? ` (${svc.health})` : "";
71
+ console.log(` ${svc.name}: ${svc.status}${health}`);
72
+ }
73
+ }
74
+ });
75
+ // rig env logs <rig> [service]
76
+ cmd
77
+ .command("logs")
78
+ .argument("<rig>", "Rig name or ID")
79
+ .argument("[service]", "Specific service name")
80
+ .option("--tail <n>", "Number of lines", "100")
81
+ .action(async (rig, service, opts) => {
82
+ const deps = getDeps();
83
+ const client = await getClient(deps);
84
+ if (!client) {
85
+ process.exitCode = 1;
86
+ return;
87
+ }
88
+ let rigId;
89
+ try {
90
+ rigId = await resolveRigId(client, rig);
91
+ }
92
+ catch (err) {
93
+ console.error(err.message);
94
+ process.exitCode = 1;
95
+ return;
96
+ }
97
+ const params = new URLSearchParams({ tail: opts.tail });
98
+ if (service)
99
+ params.set("service", service);
100
+ const res = await client.get(`/api/rigs/${encodeURIComponent(rigId)}/env/logs?${params}`);
101
+ if (res.status >= 400 || !res.data.ok) {
102
+ console.error(res.data.error ?? `Failed to get logs (HTTP ${res.status})`);
103
+ process.exitCode = 1;
104
+ return;
105
+ }
106
+ console.log(res.data.output ?? "");
107
+ });
108
+ // rig env down <rig> [--volumes]
109
+ cmd
110
+ .command("down")
111
+ .argument("<rig>", "Rig name or ID")
112
+ .option("--volumes", "Also remove volumes")
113
+ .action(async (rig, opts) => {
114
+ const deps = getDeps();
115
+ const client = await getClient(deps);
116
+ if (!client) {
117
+ process.exitCode = 1;
118
+ return;
119
+ }
120
+ let rigId;
121
+ try {
122
+ rigId = await resolveRigId(client, rig);
123
+ }
124
+ catch (err) {
125
+ console.error(err.message);
126
+ process.exitCode = 1;
127
+ return;
128
+ }
129
+ const res = await client.post(`/api/rigs/${encodeURIComponent(rigId)}/env/down`, { volumes: opts.volumes ?? false }, { timeoutMs: LONG_RUNNING_TIMEOUT_MS });
130
+ if (res.status >= 400 || !res.data.ok) {
131
+ console.error(res.data.error ?? `Failed to stop services (HTTP ${res.status})`);
132
+ process.exitCode = 1;
133
+ return;
134
+ }
135
+ console.log(`Services stopped for ${rig}.`);
136
+ });
137
+ return cmd;
138
+ }
139
+ //# sourceMappingURL=env.js.map