@revisium/orchestrator 0.1.0-alpha.9 → 0.2.0-alpha.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 (249) hide show
  1. package/README.md +210 -146
  2. package/control-plane/bootstrap.config.json +43 -1
  3. package/control-plane/default-playbook/catalog/pipelines.json +1157 -10
  4. package/control-plane/default-playbook/catalog/roles.json +54 -0
  5. package/control-plane/default-playbook/package.json +1 -1
  6. package/control-plane/default-playbook/prompts/developer.md +1 -0
  7. package/control-plane/default-playbook/prompts/triager.md +3 -0
  8. package/dist/api/graphql-api/graphql-ws/pubsub.module.js +0 -1
  9. package/dist/api/graphql-api/graphql-ws/pubsub.module.js.map +1 -1
  10. package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js +0 -1
  11. package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js.map +1 -1
  12. package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js +0 -1
  13. package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js.map +1 -1
  14. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js +3 -0
  15. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js.map +1 -1
  16. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js +6 -0
  17. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js.map +1 -1
  18. package/dist/api/graphql-api/pr/model/pr-readiness.model.js +26 -0
  19. package/dist/api/graphql-api/pr/model/pr-readiness.model.js.map +1 -1
  20. package/dist/api/graphql-api/runs/inputs/create-run.input.js +6 -0
  21. package/dist/api/graphql-api/runs/inputs/create-run.input.js.map +1 -1
  22. package/dist/api/graphql-api/runs/model/run.model.js +6 -0
  23. package/dist/api/graphql-api/runs/model/run.model.js.map +1 -1
  24. package/dist/api/graphql-api/share/model/issue-ref.model.js +53 -0
  25. package/dist/api/graphql-api/share/model/issue-ref.model.js.map +1 -0
  26. package/dist/cli/commands/doctor-report.js +0 -18
  27. package/dist/cli/commands/doctor-report.js.map +1 -1
  28. package/dist/cli/commands/lifecycle.js +3 -71
  29. package/dist/cli/commands/lifecycle.js.map +1 -1
  30. package/dist/cli/commands/mcp.js +0 -14
  31. package/dist/cli/commands/mcp.js.map +1 -1
  32. package/dist/cli/commands/process-tree.js +4 -26
  33. package/dist/cli/commands/process-tree.js.map +1 -1
  34. package/dist/cli/commands/revisium-helpers.js +0 -6
  35. package/dist/cli/commands/revisium-helpers.js.map +1 -1
  36. package/dist/cli/commands/rogue-reaper.js +0 -34
  37. package/dist/cli/commands/rogue-reaper.js.map +1 -1
  38. package/dist/cli/index.js +0 -4
  39. package/dist/cli/index.js.map +1 -1
  40. package/dist/cli/program.js +0 -5
  41. package/dist/cli/program.js.map +1 -1
  42. package/dist/config.js +0 -25
  43. package/dist/config.js.map +1 -1
  44. package/dist/control-plane/bootstrap.js +12 -27
  45. package/dist/control-plane/bootstrap.js.map +1 -1
  46. package/dist/control-plane/change-notifications.js +0 -1
  47. package/dist/control-plane/change-notifications.js.map +1 -1
  48. package/dist/control-plane/client-transport.js +1 -12
  49. package/dist/control-plane/client-transport.js.map +1 -1
  50. package/dist/control-plane/default-playbook-policy.js +593 -0
  51. package/dist/control-plane/default-playbook-policy.js.map +1 -0
  52. package/dist/control-plane/definitions.js +8 -17
  53. package/dist/control-plane/definitions.js.map +1 -1
  54. package/dist/control-plane/inbox.js +2 -120
  55. package/dist/control-plane/inbox.js.map +1 -1
  56. package/dist/control-plane/resolve-cwd.js +0 -61
  57. package/dist/control-plane/resolve-cwd.js.map +1 -1
  58. package/dist/control-plane/schema-migration.js +0 -9
  59. package/dist/control-plane/schema-migration.js.map +1 -1
  60. package/dist/control-plane/seed-default-playbook.js +50 -46
  61. package/dist/control-plane/seed-default-playbook.js.map +1 -1
  62. package/dist/control-plane/steps.js +0 -15
  63. package/dist/control-plane/steps.js.map +1 -1
  64. package/dist/e2e/kit/agents.js +15 -21
  65. package/dist/e2e/kit/agents.js.map +1 -1
  66. package/dist/e2e/kit/assertions.js +12 -8
  67. package/dist/e2e/kit/assertions.js.map +1 -1
  68. package/dist/e2e/kit/fake-integrator.js +11 -2
  69. package/dist/e2e/kit/fake-integrator.js.map +1 -1
  70. package/dist/e2e/kit/git-target-repo.js +1 -1
  71. package/dist/engine/dbos.service.js +12 -179
  72. package/dist/engine/dbos.service.js.map +1 -1
  73. package/dist/engine/ensure-postgres.js +0 -48
  74. package/dist/engine/ensure-postgres.js.map +1 -1
  75. package/dist/features/pr/queries/impl/get-pr-readiness.query.js.map +1 -1
  76. package/dist/features/runs/commands/impl/create-run.command.js.map +1 -1
  77. package/dist/features/runs/queries/handlers/runs-query.handlers.js +1 -0
  78. package/dist/features/runs/queries/handlers/runs-query.handlers.js.map +1 -1
  79. package/dist/host/daemon.js +2 -21
  80. package/dist/host/daemon.js.map +1 -1
  81. package/dist/host/dbos-identity.js +0 -31
  82. package/dist/host/dbos-identity.js.map +1 -1
  83. package/dist/host/ensure-host.js +1 -37
  84. package/dist/host/ensure-host.js.map +1 -1
  85. package/dist/host/ensure-revisium.js +1 -135
  86. package/dist/host/ensure-revisium.js.map +1 -1
  87. package/dist/host/host-runtime.js +0 -28
  88. package/dist/host/host-runtime.js.map +1 -1
  89. package/dist/host/host.lifecycle.js +0 -27
  90. package/dist/host/host.lifecycle.js.map +1 -1
  91. package/dist/host/queue-ownership.js +0 -42
  92. package/dist/host/queue-ownership.js.map +1 -1
  93. package/dist/host/queue-poller-census.js +1 -28
  94. package/dist/host/queue-poller-census.js.map +1 -1
  95. package/dist/http/graphql-host.module.js +0 -3
  96. package/dist/http/graphql-host.module.js.map +1 -1
  97. package/dist/mcp/mcp-capabilities.js +23 -5
  98. package/dist/mcp/mcp-capabilities.js.map +1 -1
  99. package/dist/mcp/mcp-facade.service.js +335 -22
  100. package/dist/mcp/mcp-facade.service.js.map +1 -1
  101. package/dist/mcp/mcp-http.service.js +0 -18
  102. package/dist/mcp/mcp-http.service.js.map +1 -1
  103. package/dist/mcp/mcp-tools.js +41 -36
  104. package/dist/mcp/mcp-tools.js.map +1 -1
  105. package/dist/observability/activity-signal.js +103 -0
  106. package/dist/observability/activity-signal.js.map +1 -0
  107. package/dist/observability/agent-activity-reporter.js +0 -4
  108. package/dist/observability/agent-activity-reporter.js.map +1 -1
  109. package/dist/observability/index.js +1 -0
  110. package/dist/observability/index.js.map +1 -1
  111. package/dist/pipeline/await-human.js +0 -40
  112. package/dist/pipeline/await-human.js.map +1 -1
  113. package/dist/pipeline/data-driven-task.workflow.js +563 -251
  114. package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
  115. package/dist/pipeline/data-driven-template.js +0 -25
  116. package/dist/pipeline/data-driven-template.js.map +1 -1
  117. package/dist/pipeline/pipeline.module.js +0 -12
  118. package/dist/pipeline/pipeline.module.js.map +1 -1
  119. package/dist/pipeline/pipeline.service.js +194 -189
  120. package/dist/pipeline/pipeline.service.js.map +1 -1
  121. package/dist/pipeline/route-contract.js +4 -3
  122. package/dist/pipeline/route-contract.js.map +1 -1
  123. package/dist/pipeline-core/index.js +1 -13
  124. package/dist/pipeline-core/index.js.map +1 -1
  125. package/dist/pipeline-core/interpret.js +21 -94
  126. package/dist/pipeline-core/interpret.js.map +1 -1
  127. package/dist/pipeline-core/kit/assertions.js +0 -19
  128. package/dist/pipeline-core/kit/assertions.js.map +1 -1
  129. package/dist/pipeline-core/kit/builders.js +1 -21
  130. package/dist/pipeline-core/kit/builders.js.map +1 -1
  131. package/dist/pipeline-core/kit/drive.js +1 -31
  132. package/dist/pipeline-core/kit/drive.js.map +1 -1
  133. package/dist/pipeline-core/kit/fixtures.js +78 -101
  134. package/dist/pipeline-core/kit/fixtures.js.map +1 -1
  135. package/dist/pipeline-core/kit/index.js +0 -8
  136. package/dist/pipeline-core/kit/index.js.map +1 -1
  137. package/dist/pipeline-core/types.js +13 -52
  138. package/dist/pipeline-core/types.js.map +1 -1
  139. package/dist/pipeline-core/validate-capability.js +0 -3
  140. package/dist/pipeline-core/validate-capability.js.map +1 -1
  141. package/dist/pipeline-core/validate-conflicts.js +0 -9
  142. package/dist/pipeline-core/validate-conflicts.js.map +1 -1
  143. package/dist/pipeline-core/validate-dataflow.js +0 -17
  144. package/dist/pipeline-core/validate-dataflow.js.map +1 -1
  145. package/dist/pipeline-core/validate-diff.js +3 -36
  146. package/dist/pipeline-core/validate-diff.js.map +1 -1
  147. package/dist/pipeline-core/validate-edges.js +0 -6
  148. package/dist/pipeline-core/validate-edges.js.map +1 -1
  149. package/dist/pipeline-core/validate-graph.js +0 -11
  150. package/dist/pipeline-core/validate-graph.js.map +1 -1
  151. package/dist/pipeline-core/validate-loops.js +37 -44
  152. package/dist/pipeline-core/validate-loops.js.map +1 -1
  153. package/dist/pipeline-core/validate-parallel.js +9 -15
  154. package/dist/pipeline-core/validate-parallel.js.map +1 -1
  155. package/dist/pipeline-core/validate-sink.js +0 -7
  156. package/dist/pipeline-core/validate-sink.js.map +1 -1
  157. package/dist/pipeline-core/validate-topology.js +1 -20
  158. package/dist/pipeline-core/validate-topology.js.map +1 -1
  159. package/dist/pipeline-core/validate-verdict.js +52 -7
  160. package/dist/pipeline-core/validate-verdict.js.map +1 -1
  161. package/dist/pipeline-core/validate.js +5 -29
  162. package/dist/pipeline-core/validate.js.map +1 -1
  163. package/dist/playbook/catalog-loader.js +8 -3
  164. package/dist/playbook/catalog-loader.js.map +1 -1
  165. package/dist/playbook/import-mapper.js +4 -5
  166. package/dist/playbook/import-mapper.js.map +1 -1
  167. package/dist/poller/pr-readiness-core.js +226 -29
  168. package/dist/poller/pr-readiness-core.js.map +1 -1
  169. package/dist/revisium/inbox.service.js +0 -24
  170. package/dist/revisium/inbox.service.js.map +1 -1
  171. package/dist/revisium/playbooks.service.js +15 -2
  172. package/dist/revisium/playbooks.service.js.map +1 -1
  173. package/dist/revisium/revisium.module.js +0 -12
  174. package/dist/revisium/revisium.module.js.map +1 -1
  175. package/dist/revisium/roles.service.js +0 -6
  176. package/dist/revisium/roles.service.js.map +1 -1
  177. package/dist/revisium/run.service.js +2 -75
  178. package/dist/revisium/run.service.js.map +1 -1
  179. package/dist/revisium/tokens.js +0 -4
  180. package/dist/revisium/tokens.js.map +1 -1
  181. package/dist/run/append-event.js +6 -37
  182. package/dist/run/append-event.js.map +1 -1
  183. package/dist/run/block-run.js.map +1 -1
  184. package/dist/run/cancel-run.js +0 -33
  185. package/dist/run/cancel-run.js.map +1 -1
  186. package/dist/run/complete-run.js.map +1 -1
  187. package/dist/run/create-run.js +5 -8
  188. package/dist/run/create-run.js.map +1 -1
  189. package/dist/run/fail-run.js +0 -3
  190. package/dist/run/fail-run.js.map +1 -1
  191. package/dist/run/inspect-run.js +10 -29
  192. package/dist/run/inspect-run.js.map +1 -1
  193. package/dist/run/issue-ref.js +88 -0
  194. package/dist/run/issue-ref.js.map +1 -0
  195. package/dist/run/run-outputs.js +0 -19
  196. package/dist/run/run-outputs.js.map +1 -1
  197. package/dist/run/terminal-run-status.js +0 -12
  198. package/dist/run/terminal-run-status.js.map +1 -1
  199. package/dist/runners/claude-code.service.js +2 -13
  200. package/dist/runners/claude-code.service.js.map +1 -1
  201. package/dist/runners/codex.service.js +2 -11
  202. package/dist/runners/codex.service.js.map +1 -1
  203. package/dist/runners/gh-identity.js +0 -52
  204. package/dist/runners/gh-identity.js.map +1 -1
  205. package/dist/runners/integrator-branch-naming.js +16 -19
  206. package/dist/runners/integrator-branch-naming.js.map +1 -1
  207. package/dist/runners/integrator-git.js +0 -25
  208. package/dist/runners/integrator-git.js.map +1 -1
  209. package/dist/runners/integrator-remote.js +0 -2
  210. package/dist/runners/integrator-remote.js.map +1 -1
  211. package/dist/runners/integrator-types.js +0 -7
  212. package/dist/runners/integrator-types.js.map +1 -1
  213. package/dist/runners/integrator.js +231 -230
  214. package/dist/runners/integrator.js.map +1 -1
  215. package/dist/runners/runner.module.js +0 -6
  216. package/dist/runners/runner.module.js.map +1 -1
  217. package/dist/runners/tokens.js +0 -4
  218. package/dist/runners/tokens.js.map +1 -1
  219. package/dist/runners/worktree.service.js +3 -19
  220. package/dist/runners/worktree.service.js.map +1 -1
  221. package/dist/task-control-plane/pr-readiness.service.js +15 -13
  222. package/dist/task-control-plane/pr-readiness.service.js.map +1 -1
  223. package/dist/task-control-plane/run-watch.service.js +170 -63
  224. package/dist/task-control-plane/run-watch.service.js.map +1 -1
  225. package/dist/task-control-plane/task-control-plane-api.service.js +285 -40
  226. package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
  227. package/dist/worker/artifact-store.js +21 -3
  228. package/dist/worker/artifact-store.js.map +1 -1
  229. package/dist/worker/build-context.js +10 -10
  230. package/dist/worker/build-context.js.map +1 -1
  231. package/dist/worker/claude-code-runner.js +76 -48
  232. package/dist/worker/claude-code-runner.js.map +1 -1
  233. package/dist/worker/codex-runner.js +128 -35
  234. package/dist/worker/codex-runner.js.map +1 -1
  235. package/dist/worker/git-worktree-manager.js +20 -67
  236. package/dist/worker/git-worktree-manager.js.map +1 -1
  237. package/dist/worker/process-executor.js +144 -27
  238. package/dist/worker/process-executor.js.map +1 -1
  239. package/dist/worker/result-envelope.js +33 -49
  240. package/dist/worker/result-envelope.js.map +1 -1
  241. package/dist/worker/runner-common.js +29 -0
  242. package/dist/worker/runner-common.js.map +1 -1
  243. package/dist/worker/runner-dispatch.js +0 -3
  244. package/dist/worker/runner-dispatch.js.map +1 -1
  245. package/dist/worker/runner.js +16 -1
  246. package/dist/worker/runner.js.map +1 -1
  247. package/dist/worker/stub-runner.js +0 -7
  248. package/dist/worker/stub-runner.js.map +1 -1
  249. package/package.json +2 -2
@@ -12,10 +12,7 @@ import { resolveDbosDbName } from '../../engine/ensure-postgres.js';
12
12
  import { ensureHost, expectedGraphqlPort, isGraphqlHealthy } from '../../host/ensure-host.js';
13
13
  import { runHostDaemon } from '../../host/daemon.js';
14
14
  import { allTrackedHostPids, hostCodeVersion, isHostRunning, readHostRuntime, removeHostRuntime, } from '../../host/host-runtime.js';
15
- // Resolve lsof to a FIXED absolute path — never via $PATH (S4036: a writable PATH entry could shadow
16
- // the binary). null if lsof isn't installed, in which case port-owner detection/reaping degrade to no-op.
17
15
  const LSOF_PATH = ['/usr/sbin/lsof', '/usr/bin/lsof', '/bin/lsof'].find((p) => existsSync(p)) ?? null;
18
- /** PID listening on a local TCP port (via lsof), or null. Best-effort — null on any failure. */
19
16
  function listenerPid(port) {
20
17
  if (LSOF_PATH === null)
21
18
  return null;
@@ -28,10 +25,9 @@ function listenerPid(port) {
28
25
  return Number.isInteger(pid) && pid > 0 ? pid : null;
29
26
  }
30
27
  catch {
31
- return null; // no listener / lsof error
28
+ return null;
32
29
  }
33
30
  }
34
- /** The four ports a profile's stack uses (host GraphQL+MCP, standalone HTTP+Postgres), deduped. */
35
31
  function profilePortList(host, standalone) {
36
32
  const cfg = getConfig();
37
33
  const gql = host?.graphqlPort ?? expectedGraphqlPort();
@@ -45,12 +41,10 @@ function profilePortList(host, standalone) {
45
41
  ];
46
42
  }
47
43
  const DEFAULT_LOG_LINES = 50;
48
- /** A --profile flag sets REVO_PROFILE so the resolved profile flows to the daemon child via env. */
49
44
  function applyProfileEnv(options) {
50
45
  if (options.profile)
51
46
  process.env['REVO_PROFILE'] = options.profile;
52
47
  }
53
- /** `revo start` — bring up the whole stack (host daemon + standalone) and print its endpoints. */
54
48
  async function startStack(options) {
55
49
  applyProfileEnv(options);
56
50
  const { profile, dataDir } = getConfig();
@@ -69,7 +63,6 @@ async function startStack(options) {
69
63
  process.exitCode = 1;
70
64
  }
71
65
  }
72
- /** Stop a pid gracefully: SIGTERM, then SIGKILL if it has not exited within the grace period. */
73
66
  async function stopProcess(pid) {
74
67
  if (!isAlive(pid))
75
68
  return;
@@ -79,19 +72,15 @@ async function stopProcess(pid) {
79
72
  await waitForExit(pid, 5_000);
80
73
  }
81
74
  }
82
- /** `revo stop` — stop the host daemon first (it owns DBOS), then the standalone Revisium daemon. */
83
75
  async function stopStack(options) {
84
76
  applyProfileEnv(options);
85
77
  const host = readHostRuntime();
86
78
  const standalone = readRuntime();
87
79
  const ports = profilePortList(host, standalone);
88
80
  let stopped = false;
89
- // `--all`: evict rogue queue CONNECTIONS while the standalone Postgres is still up (slice 140) —
90
- // must happen BEFORE we stop the standalone below, or there is no DB to evict against.
91
81
  if (options.all && standalone && isAlive(standalone.pid)) {
92
82
  await evictQueuePollers(getConfig().profile, standalone.pgPort);
93
83
  }
94
- // Host first (it owns DBOS); then the standalone daemon underneath it.
95
84
  if (host && isAlive(host.pid)) {
96
85
  await stopProcess(host.pid);
97
86
  stopped = true;
@@ -102,9 +91,6 @@ async function stopStack(options) {
102
91
  stopped = true;
103
92
  }
104
93
  removeRuntime();
105
- // Reap any orphan/duplicate still holding a profile port (slice 139) — a daemon/standalone NOT
106
- // tracked by host.json/runtime.json. Without this, `revo stop` leaves a zoo that can silently serve
107
- // runs off the shared DBOS queue.
108
94
  let reaped = 0;
109
95
  for (const port of ports) {
110
96
  const pid = listenerPid(port);
@@ -113,8 +99,6 @@ async function stopStack(options) {
113
99
  reaped += 1;
114
100
  }
115
101
  }
116
- // `--all`: also reap untracked rogue daemon/mcp PROCESSES machine-wide (durable stop — a killed
117
- // connection alone reconnects), protecting every profile's tracked tree.
118
102
  const reapedProcs = options.all ? await reapRogueProcesses() : 0;
119
103
  const parts = [];
120
104
  if (reaped > 0)
@@ -126,7 +110,6 @@ async function stopStack(options) {
126
110
  else
127
111
  console.log(stopped ? 'stopped' : 'not running');
128
112
  }
129
- /** `revo status` — summarize the stack: profile, data dir, host daemon, and Revisium health. */
130
113
  async function statusStack(options) {
131
114
  applyProfileEnv(options);
132
115
  const { profile, dataDir } = getConfig();
@@ -149,27 +132,16 @@ async function statusStack(options) {
149
132
  console.log('Revisium: stopped');
150
133
  }
151
134
  }
152
- /** `revo restart` — stop then start the whole stack (same profile). The dev code-reload primitive. */
153
135
  async function restartStack(options) {
154
136
  applyProfileEnv(options);
155
137
  console.log('Restarting Revo stack…');
156
138
  await stopStack(options);
157
139
  await startStack(options);
158
140
  }
159
- /**
160
- * Census the profile's `dbos` database for FOREIGN DBOS queue pollers (slice 140) — a legacy/duplicate
161
- * daemon polling `dev-tasks` under an executor id that is not this profile's pinned owner. Connects to
162
- * the maintenance `postgres` db (pg_stat_activity is cluster-wide) and inspects `dbos_transact_%`
163
- * connections on the dbos db. Best-effort: returns `unavailable:true` when the DB is unreachable or the
164
- * role can't see other backends, so `doctor` warns rather than falsely reporting "clean".
165
- */
166
141
  async function censusQueuePollers(profile, pgPort) {
167
142
  const client = new pg.Client(`postgresql://revisium:password@localhost:${pgPort}/postgres`);
168
143
  try {
169
144
  await client.connect();
170
- // Without privilege to see OTHER backends, pg_stat_activity hides their application_name → a silent
171
- // empty roster. Superuser OR pg_read_all_stats membership both suffice; anything less is reported as
172
- // "unavailable", never as "no rogues".
173
145
  const cap = await client.query(`SELECT (current_setting('is_superuser') = 'on'
174
146
  OR pg_has_role(current_user, 'pg_read_all_stats', 'MEMBER')) AS can_see`);
175
147
  if (cap.rows[0]?.['can_see'] !== true)
@@ -186,13 +158,6 @@ async function censusQueuePollers(profile, pgPort) {
186
158
  await client.end().catch(() => undefined);
187
159
  }
188
160
  }
189
- /**
190
- * EVICT rogue queue connections (slice 140 Phase 2): `pg_terminate_backend` every foreign DBOS poller
191
- * on this profile's `dbos` DB, in a TOCTOU loop (a rogue can dequeue a fresh row between census and
192
- * kill). Profile-scoped by `datname` → never touches another profile. Needs BOTH `pg_read_all_stats`
193
- * (to SEE foreign backends) and `pg_signal_backend` (to terminate); lacking either is reported, never
194
- * silently treated as "no rogues".
195
- */
196
161
  async function evictQueuePollers(profile, pgPort) {
197
162
  const idle = { converged: false, rounds: 0, terminated: 0, unavailable: true, cannotEvict: false };
198
163
  const client = new pg.Client(`postgresql://revisium:password@localhost:${pgPort}/postgres`);
@@ -218,29 +183,19 @@ async function evictQueuePollers(profile, pgPort) {
218
183
  return { ...outcome, unavailable: false, cannotEvict: false };
219
184
  }
220
185
  catch {
221
- return idle; // census/terminate threw → not converged, never "clean"
186
+ return idle;
222
187
  }
223
188
  finally {
224
189
  await client.end().catch(() => undefined);
225
190
  }
226
191
  }
227
- /**
228
- * Durable stop: SIGTERM→SIGKILL the rogue revo daemon/mcp PROCESS (its DBOS pool would otherwise
229
- * reconnect after `evictQueuePollers`). Protects the tracked daemon tree of EVERY profile — so a reap
230
- * on one profile can never kill a sibling profile's live daemon. pid+start-time identity: re-check the
231
- * start time before SIGKILL so a recycled pid (the rogue already exited) is never wrongly killed.
232
- */
233
192
  async function reapRogueProcesses() {
234
193
  const protectedPids = new Set(allTrackedHostPids());
235
194
  const candidates = [];
236
195
  for (const { pid, command } of listProcesses()) {
237
196
  if (pid === process.pid)
238
- continue; // never reap the running CLI itself
197
+ continue;
239
198
  const kind = classifyRevoProcess(command);
240
- // Only reap a `__daemon` (always a full DBOS host → an untracked one is a genuine rogue). A modern
241
- // `revo mcp` is a THIN bridge holding no DBOS connection — reaping it is pure collateral (drops a
242
- // live MCP client), so it is left alone; its polling, if any legacy host, is handled by the
243
- // connection eviction. (Reviewer-flagged: don't disrupt healthy bridges.)
244
199
  if (kind === 'daemon')
245
200
  candidates.push({ pid, command, startTime: processStartTime(pid), kind });
246
201
  }
@@ -253,13 +208,11 @@ async function reapRogueProcesses() {
253
208
  await new Promise((resolve) => setTimeout(resolve, 1_000));
254
209
  }
255
210
  for (const t of targets) {
256
- // SIGKILL only if STILL the same process (start-time unchanged) — defeats pid reuse.
257
211
  if (isAlive(t.pid) && processStartTime(t.pid) === t.startTime)
258
212
  killTree(t.pid, 'SIGKILL');
259
213
  }
260
214
  return targets.length;
261
215
  }
262
- /** `revo doctor` — diagnose the stack as a pure client: process/port/profile/stale-file health. */
263
216
  async function doctorStack(options) {
264
217
  applyProfileEnv(options);
265
218
  const { profile, dataDir } = getConfig();
@@ -269,8 +222,6 @@ async function doctorStack(options) {
269
222
  const standalone = readRuntime();
270
223
  const standaloneAlive = standalone !== null && isAlive(standalone.pid);
271
224
  const standaloneHealthy = standalone !== null && standaloneAlive && (await isHealthy(standalone.httpPort));
272
- // Detect untracked/duplicate daemons on the profile ports + a stale-version daemon (slice 139): a
273
- // listener whose pid isn't the tracked host/standalone is an orphan or a second daemon (the zoo).
274
225
  const gql = host?.graphqlPort ?? expectedGraphqlPort();
275
226
  const portChecks = [
276
227
  { label: 'GraphQL', port: gql, expected: host?.pid ?? null },
@@ -283,19 +234,12 @@ async function doctorStack(options) {
283
234
  const pid = listenerPid(check.port);
284
235
  if (pid === null)
285
236
  continue;
286
- // Legitimate = the tracked pid ITSELF or one of its descendants. The standalone tier is a process
287
- // tree (launcher → HTTP-binding worker → embedded Postgres), so the actual port owner is usually a
288
- // child of the tracked launcher pid, not the launcher itself. Exact equality here mis-flagged the
289
- // healthy stack as a rogue daemon (dogfood, alpha.7). Only a listener OUTSIDE the tracked tree —
290
- // or any listener when nothing is tracked (expected === null) — is a real orphan/second daemon.
291
237
  const owned = check.expected !== null && isPidWithin(pid, new Set([check.expected]));
292
238
  if (!owned) {
293
239
  unexpectedPortOwners.push({ label: check.label, port: check.port, pid });
294
240
  }
295
241
  }
296
242
  const versionMismatch = host?.version !== undefined ? { running: host.version, current: hostCodeVersion() } : undefined;
297
- // Rogue queue-poller census — only when the standalone (and thus its Postgres) is alive; a foreign
298
- // executor connected to the dbos DB is a legacy/duplicate daemon the lock can't stop (slice 140).
299
243
  let queuePollerRogues;
300
244
  let rogueCensusUnavailable;
301
245
  if (standalone && standaloneAlive) {
@@ -332,8 +276,6 @@ async function doctorStack(options) {
332
276
  console.log(`✗ ${issue}`);
333
277
  process.exitCode = 1;
334
278
  }
335
- // `--fix`: actively evict the rogues `doctor` reports — terminate their queue connections, then
336
- // reap the untracked process (durable, cross-profile-safe). slice 140 Phase 2.
337
279
  if (options.fix) {
338
280
  console.log('— fix: evicting rogue queue pollers —');
339
281
  if (standalone && standaloneAlive) {
@@ -349,7 +291,6 @@ async function doctorStack(options) {
349
291
  console.log(` reaped ${reaped} untracked revo process${reaped === 1 ? '' : 'es'}`);
350
292
  }
351
293
  }
352
- /** Resolve which logs to read: `host`, `standalone`, or both (default). Profile-scoped paths. */
353
294
  function resolveLogTargets(target) {
354
295
  const { logFile, hostLogFile } = getConfig();
355
296
  const host = { label: 'host', file: hostLogFile };
@@ -360,7 +301,6 @@ function resolveLogTargets(target) {
360
301
  return [standalone];
361
302
  return [host, standalone];
362
303
  }
363
- /** `revo logs [target]` — print the tail of the daemon logs; a pure file read (works when down). */
364
304
  async function logsStack(target, options) {
365
305
  applyProfileEnv(options);
366
306
  if (target !== undefined && target !== 'host' && target !== 'standalone') {
@@ -380,11 +320,6 @@ async function logsStack(target, options) {
380
320
  if (options.follow)
381
321
  await followLogs(targets);
382
322
  }
383
- /**
384
- * Follow mode: poll each log for bytes appended past a tracked offset and stream them, labelled,
385
- * until interrupted (Ctrl-C). The daemons open their logs append-only (no rotation), so a byte
386
- * offset is a stable cursor; a shrink (manual truncate) simply resyncs to the new end.
387
- */
388
323
  async function followLogs(targets) {
389
324
  const offsets = new Map();
390
325
  for (const { file } of targets)
@@ -411,14 +346,12 @@ async function followLogs(targets) {
411
346
  await new Promise((resolve) => setTimeout(resolve, 500));
412
347
  }
413
348
  }
414
- /** Prefix each non-empty line of a streamed chunk with its tier label for interleaved follow output. */
415
349
  function prefixLines(label, chunk) {
416
350
  return chunk
417
351
  .split('\n')
418
352
  .map((line) => (line === '' ? line : `[${label}] ${line}`))
419
353
  .join('\n');
420
354
  }
421
- /** Register the lifecycle commands (start/stop/status/restart/doctor/logs) + the hidden `__daemon` entrypoint. */
422
355
  export function registerLifecycle(program) {
423
356
  program
424
357
  .command('start')
@@ -454,7 +387,6 @@ export function registerLifecycle(program) {
454
387
  .option('-n, --lines <count>', 'Lines to show from the end', String(DEFAULT_LOG_LINES))
455
388
  .option('-f, --follow', 'Stream new log output until interrupted')
456
389
  .action((target, options) => logsStack(target, options));
457
- // Internal: the detached daemon entrypoint spawned by ensureHost (not a user-facing command).
458
390
  program
459
391
  .command('__daemon', { hidden: true })
460
392
  .description('Run the host daemon in the foreground (internal — spawned by `revo start`)')
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/cli/commands/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/cli/commands/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -6,19 +6,7 @@ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprot
6
6
  import { readPackageVersion } from '../../package-info.js';
7
7
  import { ensureHost } from '../../host/ensure-host.js';
8
8
  import { readHostRuntime } from '../../host/host-runtime.js';
9
- /**
10
- * Explicit inner-hop (bridge→daemon) request timeout. Matches the SDK's DEFAULT_REQUEST_TIMEOUT_MSEC
11
- * but pins it intentionally: the daemon's longest tool (wait_for_any_gate / watch_runs) holds a single
12
- * request ≤45s, comfortably under this — so a bounded long-poll resolves over the bridge, while a hung
13
- * daemon call still fails fast instead of waiting forever.
14
- */
15
9
  const INNER_HOP_TIMEOUT_MS = 60_000;
16
- /**
17
- * `revo mcp` — a thin stdio↔daemon MCP bridge (ADR 0006). It ensures the host daemon is up, then
18
- * proxies tool list/call from the stdio client (Claude Code) to the daemon's in-process MCP server
19
- * over StreamableHTTP. It does NOT build AppModule or launch DBOS — the daemon is the single DBOS
20
- * owner, so every tool runs against the one host and read tools never trigger a recovery pass.
21
- */
22
10
  async function runMcpBridge() {
23
11
  await ensureHost();
24
12
  const runtime = readHostRuntime();
@@ -30,7 +18,6 @@ async function runMcpBridge() {
30
18
  const version = readPackageVersion();
31
19
  const upstream = new Client({ name: 'revo-mcp-bridge', version });
32
20
  await upstream.connect(new StreamableHTTPClientTransport(new URL(`http://127.0.0.1:${runtime.mcpPort}/mcp`)));
33
- // Downstream stdio server (faces Claude Code) — forwards tools to the daemon's MCP server.
34
21
  const server = new Server({ name: 'revo', version }, { capabilities: { tools: {} } });
35
22
  server.setRequestHandler(ListToolsRequestSchema, () => upstream.listTools());
36
23
  server.setRequestHandler(CallToolRequestSchema, (request) => upstream.callTool(request.params, undefined, { timeout: INNER_HOP_TIMEOUT_MS }));
@@ -51,7 +38,6 @@ async function runMcpBridge() {
51
38
  await server.close().catch(() => undefined);
52
39
  }
53
40
  }
54
- /** Register `revo mcp` — the thin stdio bridge to the daemon's MCP front door (no AppModule/DBOS). */
55
41
  export function registerMcp(program) {
56
42
  program
57
43
  .command('mcp')
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,6 @@
1
- /**
2
- * Process-tree ancestry — used by `revo doctor` to decide whether a port's listener belongs to the
3
- * tracked stack. A profile's standalone tier is NOT a single pid: the tracked launcher forks a worker
4
- * that binds the HTTP port and spawns embedded Postgres, so the actual port owners are *descendants*
5
- * of the tracked pid. Exact-pid equality therefore mis-flags the legitimate stack as a rogue daemon;
6
- * ancestry-walking is the correct test.
7
- */
8
1
  import { execFileSync } from 'node:child_process';
9
2
  import { existsSync } from 'node:fs';
10
- // Resolve ps to a FIXED absolute path — never via $PATH (S4036: a writable PATH entry could shadow
11
- // the binary). null if ps is unavailable, in which case ancestry checks degrade to "not within".
12
3
  const PS_PATH = ['/bin/ps', '/usr/bin/ps'].find((p) => existsSync(p)) ?? null;
13
- /** All processes as `{pid, command}` via `ps -ax` (full command line). Empty if ps is unavailable. */
14
4
  export function listProcesses() {
15
5
  if (PS_PATH === null)
16
6
  return [];
@@ -32,7 +22,6 @@ export function listProcesses() {
32
22
  return [];
33
23
  }
34
24
  }
35
- /** Parent pid of `pid` via ps, or null (no such process / ps unavailable). Best-effort. */
36
25
  export function parentPid(pid) {
37
26
  if (PS_PATH === null)
38
27
  return null;
@@ -45,15 +34,9 @@ export function parentPid(pid) {
45
34
  return Number.isInteger(ppid) && ppid > 0 ? ppid : null;
46
35
  }
47
36
  catch {
48
- return null; // process gone / ps error
37
+ return null;
49
38
  }
50
39
  }
51
- /**
52
- * Process start time as an opaque stable string (`ps -o lstart=`, portable on macOS + Linux — avoids
53
- * brittle `/proc/<pid>/stat` parsing). Returns null if the process is gone / ps unavailable. Paired
54
- * with the pid it forms a reuse-proof identity: a recycled pid gets a different start time, so the
55
- * rogue reaper re-checks it before SIGKILL and never kills an innocent process that inherited the pid.
56
- */
57
40
  export function processStartTime(pid) {
58
41
  if (PS_PATH === null)
59
42
  return null;
@@ -65,23 +48,18 @@ export function processStartTime(pid) {
65
48
  return out.length > 0 ? out : null;
66
49
  }
67
50
  catch {
68
- return null; // process gone / ps error
51
+ return null;
69
52
  }
70
53
  }
71
- /**
72
- * True if `pid` is one of `ancestors`, or descends from one — walking the parent chain via `getParent`.
73
- * `getParent` is injectable so the traversal is unit-testable without real processes; production passes
74
- * `parentPid`. Bounded by `maxHops` (and stops at init, pid ≤ 1) so a missing/cyclic chain can't loop.
75
- */
76
54
  export function isPidWithin(pid, ancestors, getParent = parentPid, maxHops = 32) {
77
55
  let current = pid;
78
56
  for (let hops = 0; current !== null && hops <= maxHops; hops += 1) {
79
57
  if (ancestors.has(current))
80
58
  return true;
81
59
  if (current <= 1)
82
- return false; // reached init (or invalid) — not within the tracked tree
60
+ return false;
83
61
  current = getParent(current);
84
62
  }
85
- return false; // exhausted hops / chain broke before reaching an ancestor
63
+ return false;
86
64
  }
87
65
  //# sourceMappingURL=process-tree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process-tree.js","sourceRoot":"","sources":["../../../src/cli/commands/process-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-tree.js","sourceRoot":"","sources":["../../../src/cli/commands/process-tree.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,3 @@
1
- /**
2
- * Process + log helpers shared by the lifecycle CLI (`lifecycle.ts`: stop/logs) and the daemon
3
- * bring-up path (`ensure-revisium.ts`). Extracted to avoid duplication (F9).
4
- */
5
1
  import { existsSync, readFileSync } from 'node:fs';
6
2
  import { isAlive } from '../config.js';
7
3
  export function parsePort(value, fallback) {
@@ -22,7 +18,6 @@ export async function waitHealthy(url, timeoutMs = 120_000) {
22
18
  return true;
23
19
  }
24
20
  catch {
25
- // Not ready yet.
26
21
  }
27
22
  await new Promise((resolve) => setTimeout(resolve, 1000));
28
23
  }
@@ -45,7 +40,6 @@ export function killTree(pid, signal) {
45
40
  process.kill(pid, signal);
46
41
  }
47
42
  catch {
48
- // Already gone.
49
43
  }
50
44
  }
51
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"revisium-helpers.js","sourceRoot":"","sources":["../../../src/cli/commands/revisium-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"revisium-helpers.js","sourceRoot":"","sources":["../../../src/cli/commands/revisium-helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,UAAU,SAAS,CAAC,KAAyB,EAAE,QAAgB;IACnE,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,SAAS,GAAG,OAAO;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG;gBAAE,OAAO,IAAI,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;QACT,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAa;IACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAC/D,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,MAAsB;IAC1D,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;QACT,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,SAAiB;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
@@ -1,27 +1,4 @@
1
- /**
2
- * Rogue-reaper (slice 140 Phase 2, pure core). `revo doctor --fix` / `revo stop --all` actively EVICT
3
- * a legacy/duplicate daemon that polls the `dev-tasks` queue but the advisory lock can't coordinate and
4
- * the port-based stop can't see (it's an outbound poller with no inbound listener). Two mechanisms:
5
- *
6
- * 1. Connection eviction — `pg_terminate_backend` the rogue's DBOS connection (the immediate stop),
7
- * looped to defeat the census→kill TOCTOU (a rogue can dequeue a fresh row in that window).
8
- * 2. Process reap — SIGTERM→SIGKILL the rogue PROCESS (the durable stop; its pool would otherwise
9
- * reconnect). This is what the manual `pkill -f "revo mcp"` did, made safe + permanent.
10
- *
11
- * This module holds the PURE, unit-tested decisions; the pg/ps/kill IO lives in lifecycle.ts.
12
- */
13
1
  import { isPidWithin } from './process-tree.js';
14
- /**
15
- * Classify a process command line as a revo daemon / mcp-bridge, or null if unrelated.
16
- *
17
- * Keys on (revo entry token) + (subcommand token). The npm-GLOBAL install runs as
18
- * `node …/bin/revo __daemon` — argv[1] is the bin SYMLINK (`bin/revo`, no `.js`); the package's own
19
- * `bin/revo.js` does `import '../dist/cli/index.js'` (no re-exec); dev runs as
20
- * `node --import tsx …/src/cli/index.ts __daemon`; a compiled run as `…/dist/cli/index.js`. Matching
21
- * only `dist/cli/index.js` (or only `bin/revo.js`) MISSES the real installed daemon and the reap
22
- * no-ops against the very process it must kill. The subcommand must be a whole word so an unrelated
23
- * command merely containing "mcp" (e.g. `node /opt/mcp-server.js`) is not matched.
24
- */
25
2
  export function classifyRevoProcess(command) {
26
3
  const hasEntry = /\/bin\/revo(?:\.js)?(?:\s|$)/.test(command) || /\/cli\/index\.(?:ts|js)(?:\s|$)/.test(command);
27
4
  if (!hasEntry)
@@ -32,20 +9,9 @@ export function classifyRevoProcess(command) {
32
9
  return 'mcp';
33
10
  return null;
34
11
  }
35
- /**
36
- * The reap targets: revo daemon/mcp processes NOT within any PROTECTED tree (every profile's tracked
37
- * daemon pid-tree). A process inside a tracked tree is the live stack — never reaped. `getParent` is
38
- * injected so the ancestry walk is unit-testable without real processes.
39
- */
40
12
  export function selectReapTargets(procs, protectedPids, getParent) {
41
13
  return procs.filter((proc) => !isPidWithin(proc.pid, protectedPids, getParent));
42
14
  }
43
- /**
44
- * Connection-eviction TOCTOU loop. `census()` returns the current rogue backend pids (it THROWS if the
45
- * roster can't be read — privilege/DB error — which must propagate as "not converged", never as empty);
46
- * `terminate(pid)` kills one backend. Re-census after each round because a rogue can transition a fresh
47
- * ENQUEUED row to its own PENDING between the census and the kill. Bounded by `maxRounds`.
48
- */
49
15
  export async function evictByTermination(census, terminate, maxRounds = 5) {
50
16
  let terminated = 0;
51
17
  for (let round = 1; round <= maxRounds; round += 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"rogue-reaper.js","sourceRoot":"","sources":["../../../src/cli/commands/rogue-reaper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,QAAQ,GACZ,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClG,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9D,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,IAAI,CAAC;AACd,CAAC;AAID;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA8B,EAC9B,aAAkC,EAClC,SAAyC;IAEzC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAClF,CAAC;AAID;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA+B,EAC/B,SAAyC,EACzC,SAAS,GAAG,CAAC;IAEb,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC/E,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;YACrB,UAAU,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,MAAM,EAAE,CAAC;IACjC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"rogue-reaper.js","sourceRoot":"","sources":["../../../src/cli/commands/rogue-reaper.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAahD,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,QAAQ,GACZ,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClG,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9D,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAC/B,KAA8B,EAC9B,aAAkC,EAClC,SAAyC;IAEzC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAClF,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA+B,EAC/B,SAAyC,EACzC,SAAS,GAAG,CAAC;IAEb,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC/E,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;YACrB,UAAU,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,MAAM,EAAE,CAAC;IACjC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E,CAAC"}
package/dist/cli/index.js CHANGED
@@ -1,8 +1,4 @@
1
- // reflect-metadata is required by the daemon entrypoint (`revo __daemon` → NestFactory); load it once
2
- // here so it is present whichever command runs.
3
1
  import 'reflect-metadata';
4
2
  import { buildProgram } from './program.js';
5
- // The CLI is a lightweight client/process-manager (ADR 0006): it NEVER builds AppModule or launches
6
- // DBOS. The only long-lived host is the daemon, spawned detached via the hidden `__daemon` command.
7
3
  await buildProgram().parseAsync(process.argv);
8
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,gDAAgD;AAChD,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,oGAAoG;AACpG,oGAAoG;AACpG,MAAM,YAAY,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,YAAY,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -3,11 +3,6 @@ import { readPackageVersion } from '../package-info.js';
3
3
  import { registerLifecycle } from './commands/lifecycle.js';
4
4
  import { registerMcp } from './commands/mcp.js';
5
5
  export { readPackageVersion };
6
- /**
7
- * Build the Revo CLI. The CLI is lifecycle-only (ADR 0006): `revo start/stop/status/...` manage the
8
- * whole stack, and `revo mcp` is a thin stdio bridge to the daemon. Orchestration (runs, inbox,
9
- * method, …) is reached through the daemon's MCP + GraphQL front doors, not the CLI.
10
- */
11
6
  export function buildProgram() {
12
7
  const program = new Command();
13
8
  program
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,MAAM,CAAC;SACZ,WAAW,CAAC,wBAAwB,CAAC;SACrC,OAAO,CAAC,kBAAkB,EAAE,EAAE,eAAe,EAAE,wBAAwB,CAAC,CAAC;IAC5E,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3B,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAK9B,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,MAAM,CAAC;SACZ,WAAW,CAAC,wBAAwB,CAAC;SACrC,OAAO,CAAC,kBAAkB,EAAE,EAAE,eAAe,EAAE,wBAAwB,CAAC,CAAC;IAC5E,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3B,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC"}