@revisium/orchestrator 0.2.0-alpha.3 → 0.2.0-alpha.4

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 (259) hide show
  1. package/README.md +3 -3
  2. package/control-plane/bootstrap.config.json +104 -550
  3. package/control-plane/default-playbook/catalog/pipelines.json +394 -1122
  4. package/control-plane/default-playbook/catalog/run-profiles.json +208 -0
  5. package/control-plane/default-playbook/package.json +1 -1
  6. package/control-plane/default-playbook/playbook.json +2 -1
  7. package/control-plane/default-playbook/prompts/developer.md +6 -6
  8. package/dist/__generated__/client/browser.js +18 -0
  9. package/dist/__generated__/client/browser.js.map +1 -0
  10. package/dist/__generated__/client/client.js +32 -0
  11. package/dist/__generated__/client/client.js.map +1 -0
  12. package/dist/__generated__/client/commonInputTypes.js +11 -0
  13. package/dist/__generated__/client/commonInputTypes.js.map +1 -0
  14. package/dist/__generated__/client/enums.js +19 -0
  15. package/dist/__generated__/client/enums.js.map +1 -0
  16. package/dist/__generated__/client/internal/class.js +53 -0
  17. package/dist/__generated__/client/internal/class.js.map +1 -0
  18. package/dist/__generated__/client/internal/prismaNamespace.js +451 -0
  19. package/dist/__generated__/client/internal/prismaNamespace.js.map +1 -0
  20. package/dist/__generated__/client/internal/prismaNamespaceBrowser.js +422 -0
  21. package/dist/__generated__/client/internal/prismaNamespaceBrowser.js.map +1 -0
  22. package/dist/__generated__/client/models/Branch.js +2 -0
  23. package/dist/__generated__/client/models/Branch.js.map +1 -0
  24. package/dist/__generated__/client/models/CostLedgerEntry.js +2 -0
  25. package/dist/__generated__/client/models/CostLedgerEntry.js.map +1 -0
  26. package/dist/__generated__/client/models/FileBlob.js +2 -0
  27. package/dist/__generated__/client/models/FileBlob.js.map +1 -0
  28. package/dist/__generated__/client/models/InboxItem.js +2 -0
  29. package/dist/__generated__/client/models/InboxItem.js.map +1 -0
  30. package/dist/__generated__/client/models/ProjectFileUsage.js +2 -0
  31. package/dist/__generated__/client/models/ProjectFileUsage.js.map +1 -0
  32. package/dist/__generated__/client/models/Revision.js +2 -0
  33. package/dist/__generated__/client/models/Revision.js.map +1 -0
  34. package/dist/__generated__/client/models/RevoProject.js +2 -0
  35. package/dist/__generated__/client/models/RevoProject.js.map +1 -0
  36. package/dist/__generated__/client/models/Row.js +2 -0
  37. package/dist/__generated__/client/models/Row.js.map +1 -0
  38. package/dist/__generated__/client/models/RunAttempt.js +2 -0
  39. package/dist/__generated__/client/models/RunAttempt.js.map +1 -0
  40. package/dist/__generated__/client/models/RunEvent.js +2 -0
  41. package/dist/__generated__/client/models/RunEvent.js.map +1 -0
  42. package/dist/__generated__/client/models/RunOutput.js +2 -0
  43. package/dist/__generated__/client/models/RunOutput.js.map +1 -0
  44. package/dist/__generated__/client/models/RunTask.js +2 -0
  45. package/dist/__generated__/client/models/RunTask.js.map +1 -0
  46. package/dist/__generated__/client/models/Table.js +2 -0
  47. package/dist/__generated__/client/models/Table.js.map +1 -0
  48. package/dist/__generated__/client/models/TableMigration.js +2 -0
  49. package/dist/__generated__/client/models/TableMigration.js.map +1 -0
  50. package/dist/__generated__/client/models/TaskRun.js +2 -0
  51. package/dist/__generated__/client/models/TaskRun.js.map +1 -0
  52. package/dist/__generated__/client/models.js +2 -0
  53. package/dist/__generated__/client/models.js.map +1 -0
  54. package/dist/api/graphql-api/graphql-ws/pubsub.module.js +2 -1
  55. package/dist/api/graphql-api/graphql-ws/pubsub.module.js.map +1 -1
  56. package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js +110 -28
  57. package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js.map +1 -1
  58. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js +3 -1
  59. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js.map +1 -1
  60. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js +6 -0
  61. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js.map +1 -1
  62. package/dist/api/graphql-api/registerGraphqlEnums.js +2 -0
  63. package/dist/api/graphql-api/registerGraphqlEnums.js.map +1 -1
  64. package/dist/api/graphql-api/runs/inputs/create-run.input.js +17 -0
  65. package/dist/api/graphql-api/runs/inputs/create-run.input.js.map +1 -1
  66. package/dist/api/graphql-api/runs/inputs/execution-profile.input.js +85 -0
  67. package/dist/api/graphql-api/runs/inputs/execution-profile.input.js.map +1 -0
  68. package/dist/api/graphql-api/runs/inputs/simulate-route.input.js +11 -0
  69. package/dist/api/graphql-api/runs/inputs/simulate-route.input.js.map +1 -1
  70. package/dist/api/graphql-api/runs/model/run-workflow.model.js +5 -0
  71. package/dist/api/graphql-api/runs/model/run-workflow.model.js.map +1 -1
  72. package/dist/api/graphql-api/share/model/issue-action.model.js +7 -0
  73. package/dist/api/graphql-api/share/model/issue-action.model.js.map +1 -0
  74. package/dist/cli/commands/doctor-report.js +1 -13
  75. package/dist/cli/commands/doctor-report.js.map +1 -1
  76. package/dist/cli/commands/lifecycle.js +50 -65
  77. package/dist/cli/commands/lifecycle.js.map +1 -1
  78. package/dist/cli/commands/{revisium-helpers.js → process-helpers.js} +1 -24
  79. package/dist/cli/commands/process-helpers.js.map +1 -0
  80. package/dist/config.js +17 -55
  81. package/dist/config.js.map +1 -1
  82. package/dist/control-plane/bootstrap-json-validator.js +65 -0
  83. package/dist/control-plane/bootstrap-json-validator.js.map +1 -0
  84. package/dist/control-plane/bootstrap.js +25 -38
  85. package/dist/control-plane/bootstrap.js.map +1 -1
  86. package/dist/control-plane/change-notifications.js +45 -14
  87. package/dist/control-plane/change-notifications.js.map +1 -1
  88. package/dist/control-plane/data-access.js +1 -106
  89. package/dist/control-plane/data-access.js.map +1 -1
  90. package/dist/control-plane/default-playbook-policy.js +497 -94
  91. package/dist/control-plane/default-playbook-policy.js.map +1 -1
  92. package/dist/control-plane/definitions.js +4 -5
  93. package/dist/control-plane/definitions.js.map +1 -1
  94. package/dist/control-plane/engine-transport.js +381 -0
  95. package/dist/control-plane/engine-transport.js.map +1 -0
  96. package/dist/control-plane/inbox.js +15 -7
  97. package/dist/control-plane/inbox.js.map +1 -1
  98. package/dist/control-plane/index.js +0 -1
  99. package/dist/control-plane/index.js.map +1 -1
  100. package/dist/control-plane/merge-override-audit.js +2 -2
  101. package/dist/control-plane/merge-override-audit.js.map +1 -1
  102. package/dist/control-plane/pipeline-coverage-registry.js +478 -0
  103. package/dist/control-plane/pipeline-coverage-registry.js.map +1 -0
  104. package/dist/control-plane/query-types.js +2 -0
  105. package/dist/control-plane/query-types.js.map +1 -0
  106. package/dist/control-plane/run-profiles.js +89 -0
  107. package/dist/control-plane/run-profiles.js.map +1 -0
  108. package/dist/control-plane/schema-migration.js +0 -35
  109. package/dist/control-plane/schema-migration.js.map +1 -1
  110. package/dist/control-plane/seed-default-playbook.js +2 -31
  111. package/dist/control-plane/seed-default-playbook.js.map +1 -1
  112. package/dist/control-plane/tables.js +8 -0
  113. package/dist/control-plane/tables.js.map +1 -1
  114. package/dist/control-plane/transport.js +16 -0
  115. package/dist/control-plane/transport.js.map +1 -0
  116. package/dist/control-plane/versioned-meaning.js +56 -14
  117. package/dist/control-plane/versioned-meaning.js.map +1 -1
  118. package/dist/e2e/kit/agents.js +60 -6
  119. package/dist/e2e/kit/agents.js.map +1 -1
  120. package/dist/e2e/kit/assertions.js +13 -1
  121. package/dist/e2e/kit/assertions.js.map +1 -1
  122. package/dist/e2e/kit/drive.js +46 -11
  123. package/dist/e2e/kit/drive.js.map +1 -1
  124. package/dist/e2e/kit/env.js +17 -1
  125. package/dist/e2e/kit/env.js.map +1 -1
  126. package/dist/e2e/kit/fake-integrator.js +25 -5
  127. package/dist/e2e/kit/fake-integrator.js.map +1 -1
  128. package/dist/e2e/kit/gh-emulator.js +158 -24
  129. package/dist/e2e/kit/gh-emulator.js.map +1 -1
  130. package/dist/e2e/kit/harness.js +44 -10
  131. package/dist/e2e/kit/harness.js.map +1 -1
  132. package/dist/e2e/kit/index.js +1 -0
  133. package/dist/e2e/kit/index.js.map +1 -1
  134. package/dist/e2e/kit/scenario.js +165 -0
  135. package/dist/e2e/kit/scenario.js.map +1 -0
  136. package/dist/e2e/kit/scenarios.js +12 -18
  137. package/dist/e2e/kit/scenarios.js.map +1 -1
  138. package/dist/engine/dbos.service.js +8 -1
  139. package/dist/engine/dbos.service.js.map +1 -1
  140. package/dist/features/pr/queries/impl/get-pr-readiness.query.js.map +1 -1
  141. package/dist/features/runs/commands/impl/create-run.command.js.map +1 -1
  142. package/dist/host/daemon.js +32 -8
  143. package/dist/host/daemon.js.map +1 -1
  144. package/dist/host/ensure-host.js +3 -3
  145. package/dist/host/ensure-host.js.map +1 -1
  146. package/dist/host/host-runtime.js.map +1 -1
  147. package/dist/host/host.lifecycle.js +3 -16
  148. package/dist/host/host.lifecycle.js.map +1 -1
  149. package/dist/http/graphql-host.js +17 -8
  150. package/dist/http/graphql-host.js.map +1 -1
  151. package/dist/mcp/mcp-capabilities.js +3 -2
  152. package/dist/mcp/mcp-capabilities.js.map +1 -1
  153. package/dist/mcp/mcp-facade.service.js +21 -0
  154. package/dist/mcp/mcp-facade.service.js.map +1 -1
  155. package/dist/mcp/mcp-tools.js +35 -1
  156. package/dist/mcp/mcp-tools.js.map +1 -1
  157. package/dist/pipeline/data-driven-task.workflow.js +276 -57
  158. package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
  159. package/dist/pipeline/pipeline.service.js +27 -5
  160. package/dist/pipeline/pipeline.service.js.map +1 -1
  161. package/dist/pipeline/route-contract.js +123 -3
  162. package/dist/pipeline/route-contract.js.map +1 -1
  163. package/dist/pipeline-core/condition-scopes.js +15 -0
  164. package/dist/pipeline-core/condition-scopes.js.map +1 -0
  165. package/dist/pipeline-core/index.js +2 -0
  166. package/dist/pipeline-core/index.js.map +1 -1
  167. package/dist/pipeline-core/kit/fixtures.js +81 -44
  168. package/dist/pipeline-core/kit/fixtures.js.map +1 -1
  169. package/dist/pipeline-core/materialize.js +221 -0
  170. package/dist/pipeline-core/materialize.js.map +1 -0
  171. package/dist/pipeline-core/types.js +5 -0
  172. package/dist/pipeline-core/types.js.map +1 -1
  173. package/dist/pipeline-core/validate-loops.js +2 -15
  174. package/dist/pipeline-core/validate-loops.js.map +1 -1
  175. package/dist/pipeline-core/validate-resilience.js +257 -0
  176. package/dist/pipeline-core/validate-resilience.js.map +1 -0
  177. package/dist/pipeline-core/validate.js +2 -0
  178. package/dist/pipeline-core/validate.js.map +1 -1
  179. package/dist/playbook/catalog-loader.js +39 -2
  180. package/dist/playbook/catalog-loader.js.map +1 -1
  181. package/dist/playbook/catalog-schema-validator.js +438 -0
  182. package/dist/playbook/catalog-schema-validator.js.map +1 -0
  183. package/dist/playbook/import-mapper.js +41 -0
  184. package/dist/playbook/import-mapper.js.map +1 -1
  185. package/dist/playbook/manifest.js +5 -0
  186. package/dist/playbook/manifest.js.map +1 -1
  187. package/dist/playbook/playbook-installer.js +17 -1
  188. package/dist/playbook/playbook-installer.js.map +1 -1
  189. package/dist/poller/pr-readiness-core.js +257 -93
  190. package/dist/poller/pr-readiness-core.js.map +1 -1
  191. package/dist/poller/pr-readiness.js +2 -2
  192. package/dist/poller/pr-readiness.js.map +1 -1
  193. package/dist/revisium/inbox.service.js +8 -8
  194. package/dist/revisium/inbox.service.js.map +1 -1
  195. package/dist/revisium/playbooks.service.js +116 -21
  196. package/dist/revisium/playbooks.service.js.map +1 -1
  197. package/dist/revisium/revisium.module.js +8 -8
  198. package/dist/revisium/revisium.module.js.map +1 -1
  199. package/dist/revisium/roles.service.js +3 -1
  200. package/dist/revisium/roles.service.js.map +1 -1
  201. package/dist/revisium/run.service.js +9 -8
  202. package/dist/revisium/run.service.js.map +1 -1
  203. package/dist/revisium/tokens.js +0 -1
  204. package/dist/revisium/tokens.js.map +1 -1
  205. package/dist/run/create-run.js +1 -1
  206. package/dist/run/create-run.js.map +1 -1
  207. package/dist/run/inspect-run.js +32 -28
  208. package/dist/run/inspect-run.js.map +1 -1
  209. package/dist/run/issue-ref.js +97 -2
  210. package/dist/run/issue-ref.js.map +1 -1
  211. package/dist/run/prisma-runtime-data-access.js +619 -0
  212. package/dist/run/prisma-runtime-data-access.js.map +1 -0
  213. package/dist/run/run-outputs.js +39 -14
  214. package/dist/run/run-outputs.js.map +1 -1
  215. package/dist/run/terminal-run-status.js.map +1 -1
  216. package/dist/runners/integrator.js +657 -56
  217. package/dist/runners/integrator.js.map +1 -1
  218. package/dist/runners/worktree.service.js +10 -8
  219. package/dist/runners/worktree.service.js.map +1 -1
  220. package/dist/schema/ajv-errors.js +15 -0
  221. package/dist/schema/ajv-errors.js.map +1 -0
  222. package/dist/smoke/isolation.js +7 -16
  223. package/dist/smoke/isolation.js.map +1 -1
  224. package/dist/storage/ensure-storage.js +117 -0
  225. package/dist/storage/ensure-storage.js.map +1 -0
  226. package/dist/storage/revo-database.js +39 -0
  227. package/dist/storage/revo-database.js.map +1 -0
  228. package/dist/storage/revo-prisma.service.js +31 -0
  229. package/dist/storage/revo-prisma.service.js.map +1 -0
  230. package/dist/storage/revo-storage.module.js +18 -0
  231. package/dist/storage/revo-storage.module.js.map +1 -0
  232. package/dist/task-control-plane/pr-readiness.service.js +5 -2
  233. package/dist/task-control-plane/pr-readiness.service.js.map +1 -1
  234. package/dist/task-control-plane/run-watch.service.js +3 -6
  235. package/dist/task-control-plane/run-watch.service.js.map +1 -1
  236. package/dist/task-control-plane/task-control-plane-api.service.js +225 -43
  237. package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
  238. package/dist/testing/runtime-data-access.js +175 -0
  239. package/dist/testing/runtime-data-access.js.map +1 -0
  240. package/dist/worker/build-context.js +178 -2
  241. package/dist/worker/build-context.js.map +1 -1
  242. package/dist/worker/claude-code-runner.js +22 -3
  243. package/dist/worker/claude-code-runner.js.map +1 -1
  244. package/dist/worker/codex-runner.js +6 -1
  245. package/dist/worker/codex-runner.js.map +1 -1
  246. package/package.json +20 -7
  247. package/prisma/migrations/20260707080500_initial_schema/migration.sql +259 -0
  248. package/prisma/migrations/20260707103000_prisma_runtime_tables/migration.sql +235 -0
  249. package/prisma/migrations/migration_lock.toml +3 -0
  250. package/prisma/schema.prisma +339 -0
  251. package/prisma.config.ts +11 -0
  252. package/dist/cli/commands/revisium-helpers.js.map +0 -1
  253. package/dist/control-plane/client-transport.js +0 -168
  254. package/dist/control-plane/client-transport.js.map +0 -1
  255. package/dist/engine/ensure-postgres.js +0 -46
  256. package/dist/engine/ensure-postgres.js.map +0 -1
  257. package/dist/host/ensure-revisium.js +0 -135
  258. package/dist/host/ensure-revisium.js.map +0 -1
  259. package/revisium.config.json +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"run-watch.service.js","sourceRoot":"","sources":["../../src/task-control-plane/run-watch.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-watch.service.js","sourceRoot":"","sources":["../../src/task-control-plane/run-watch.service.ts"],"names":[],"mappings":"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"}
@@ -15,17 +15,23 @@ import { existsSync, readFileSync, statSync } from 'node:fs';
15
15
  import { basename, join, resolve } from 'node:path';
16
16
  import { promisify } from 'node:util';
17
17
  import { Inject, Injectable } from '@nestjs/common';
18
- import { baseUrl, getConfig, isAlive, isHealthy, readRuntime } from '../cli/config.js';
18
+ import { baseUrl, getConfig, isAlive } from '../cli/config.js';
19
+ import { isGraphqlHealthy } from '../host/ensure-host.js';
20
+ import { readHostRuntime } from '../host/host-runtime.js';
19
21
  import { AgentObservabilityService } from '../observability/agent-observability.service.js';
20
22
  import { ControlPlaneError } from '../control-plane/errors.js';
23
+ import { VALID_MODEL_LEVELS } from '../control-plane/definitions.js';
21
24
  import { validateManualAdoptionAudit } from '../control-plane/manual-adoption-audit.js';
22
25
  import { validateMergeOverrideAudit } from '../control-plane/merge-override-audit.js';
23
26
  import { fnv1a64Hex } from '../control-plane/steps.js';
27
+ import { POLICY_VERSION } from '../control-plane/default-playbook-policy.js';
28
+ import { executionProfileFromRunProfile, topologyProfileFromRunProfile } from '../control-plane/run-profiles.js';
29
+ import { materializeTemplate, MATERIALIZER_VERSION } from '../pipeline-core/materialize.js';
24
30
  import { DbosService } from '../engine/dbos.service.js';
25
31
  import { PipelineService } from '../pipeline/pipeline.service.js';
26
- import { RUN_PROGRESS_EVENT_KEY } from '../pipeline/data-driven-task.workflow.js';
32
+ import { INTEGRATOR_PROGRESS_EVENT_TYPES, RUN_PROGRESS_EVENT_KEY } from '../pipeline/data-driven-task.workflow.js';
27
33
  import { templateFromExecutionPolicy } from '../pipeline/data-driven-template.js';
28
- import { normalizeExecutionProfile, normalizeParams, normalizeRouteGates, resolveRunnerForProfile, } from '../pipeline/route-contract.js';
34
+ import { normalizeExecutionProfile, normalizeParams, normalizeRouteGates, resolveBindingForRole, resolveRunnerForRole, RUNNER_PERMISSION_MODES, } from '../pipeline/route-contract.js';
29
35
  import { InboxService } from '../revisium/inbox.service.js';
30
36
  import { PlaybooksService } from '../revisium/playbooks.service.js';
31
37
  import { RolesService } from '../revisium/roles.service.js';
@@ -36,6 +42,11 @@ const execFileAsync = promisify(execFile);
36
42
  const GATE_TOPICS = new Set(['plan', 'merge', 'question']);
37
43
  const WORKFLOW_SUCCESS_EVENT_TYPES = new Set(['step_succeeded', 'gate_signaled']);
38
44
  const WORKFLOW_FAILURE_EVENT_TYPES = new Set(['step_failed', 'attempt_failed']);
45
+ export const WORKFLOW_PROGRESS_EVENT_TYPES = new Set([
46
+ 'pipeline_blocked',
47
+ 'pr_polled',
48
+ ...INTEGRATOR_PROGRESS_EVENT_TYPES,
49
+ ]);
39
50
  const BUILTIN_RUNNERS = new Set(['claude-code', 'codex', 'script', 'stub-agent', 'revo-integrator', 'revo-merger', 'revo-deterministic']);
40
51
  function asErrorMessage(error) {
41
52
  if (error instanceof Error)
@@ -76,6 +87,31 @@ function gateDeclaredOutcomes(item) {
76
87
  function gateOutcomes(item) {
77
88
  return gateDeclaredOutcomes(item);
78
89
  }
90
+ function gateSummaryNodeId(item) {
91
+ const context = asRecord(item.context);
92
+ const summary = asRecord(context?.summary);
93
+ const nodeId = summary?.nodeId;
94
+ return typeof nodeId === 'string' ? nodeId : undefined;
95
+ }
96
+ function isQuestionGateReasonOutcome(item, outcome) {
97
+ if (outcome !== 'fix' && outcome !== 'wontfix')
98
+ return false;
99
+ if (gateSummaryNodeId(item) === 'questionGate')
100
+ return true;
101
+ const outcomes = gateOutcomes(item);
102
+ return gateTopic(item) === 'question' && outcomes.includes('fix') && outcomes.includes('wontfix');
103
+ }
104
+ function assertRequiredGateNote(item, outcome, note) {
105
+ if (outcome === 'approve_anyway' && !note) {
106
+ throw new ControlPlaneError('VALIDATION_FAILURE', 'approve_anyway requires a non-empty note');
107
+ }
108
+ if (outcome === 'override_merge' && !note) {
109
+ throw new ControlPlaneError('VALIDATION_FAILURE', 'override_merge requires a non-empty note');
110
+ }
111
+ if (isQuestionGateReasonOutcome(item, outcome) && !note) {
112
+ throw new ControlPlaneError('VALIDATION_FAILURE', `questionGate ${outcome} requires a non-empty note`);
113
+ }
114
+ }
79
115
  async function git(cwd, args) {
80
116
  try {
81
117
  const result = await execFileAsync('git', args, {
@@ -136,13 +172,11 @@ function summarizeAttempts(attempts) {
136
172
  function normalizedRunStatus(status) {
137
173
  return status === 'paused' ? 'blocked' : status;
138
174
  }
139
- function hasWorkflowProgress(events) {
175
+ export function hasWorkflowProgress(events) {
140
176
  return events.some((event) => (event.type.startsWith('step_')
141
177
  || event.type.startsWith('attempt_')
142
178
  || event.type.startsWith('gate_')
143
- || event.type === 'pipeline_blocked'
144
- || event.type === 'pr_polled'
145
- || event.type === 'integrate_succeeded'));
179
+ || WORKFLOW_PROGRESS_EVENT_TYPES.has(event.type)));
146
180
  }
147
181
  function observedRunStatus(rowStatus, workflowStatus, events) {
148
182
  if (rowStatus !== 'ready')
@@ -419,17 +453,17 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
419
453
  this.prReadiness = prReadiness;
420
454
  }
421
455
  async getStatus() {
422
- const runtime = readRuntime();
423
- const alive = runtime ? isAlive(runtime.pid) : false;
424
- const healthy = runtime && alive ? await isHealthy(runtime.httpPort) : false;
456
+ const host = readHostRuntime();
457
+ const hostAlive = host ? isAlive(host.pid) : false;
458
+ const hostHealthy = host && hostAlive ? await isGraphqlHealthy(host.graphqlPort) : false;
425
459
  return {
426
460
  daemon: {
427
- running: Boolean(runtime && alive),
428
- healthy,
429
- pid: runtime?.pid ?? null,
430
- baseUrl: runtime ? baseUrl(runtime.httpPort) : null,
431
- httpPort: runtime?.httpPort ?? null,
432
- pgPort: runtime?.pgPort ?? null,
461
+ running: Boolean(host && hostAlive),
462
+ healthy: hostHealthy,
463
+ pid: host?.pid ?? null,
464
+ baseUrl: host ? `${baseUrl(host.graphqlPort)}/graphql` : null,
465
+ graphqlPort: host?.graphqlPort ?? null,
466
+ mcpPort: host?.mcpPort ?? null,
433
467
  },
434
468
  project: this.getProject(),
435
469
  };
@@ -438,9 +472,9 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
438
472
  const status = await this.getStatus();
439
473
  const issues = [];
440
474
  if (!status.daemon.running)
441
- issues.push('Local Revisium daemon is not running.');
475
+ issues.push('Revo host daemon is not running.');
442
476
  if (status.daemon.running && !status.daemon.healthy)
443
- issues.push('Local Revisium daemon is running but unhealthy.');
477
+ issues.push('Revo host daemon is running but unhealthy.');
444
478
  try {
445
479
  await this.roles.loadPipelinePolicy();
446
480
  }
@@ -523,8 +557,10 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
523
557
  scope: input.scope,
524
558
  playbookId: input.playbookId,
525
559
  pipelineId: input.pipelineId,
560
+ profileId: input.profileId,
526
561
  params: input.params,
527
562
  issueRef: input.issueRef,
563
+ issueAction: input.issueAction,
528
564
  executionProfile: input.executionProfile,
529
565
  source: input.pipelineId ? 'explicit' : 'deterministic-installed-playbook',
530
566
  });
@@ -815,6 +851,16 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
815
851
  routeGates: route.routeGates,
816
852
  activeNodeIds: activeIds,
817
853
  status: cursorStatus(progress),
854
+ provenance: Object.fromEntries([
855
+ ['requestedPipelineId', route.requestedPipelineId],
856
+ ['basePipelineId', route.basePipelineId],
857
+ ['profileId', route.profileId],
858
+ ['profileVersion', route.profileVersion],
859
+ ['profileHash', route.profileHash],
860
+ ['materializedTemplateHash', route.materializedTemplateHash],
861
+ ['materializerVersion', route.materializerVersion],
862
+ ['policyVersion', route.policyVersion],
863
+ ].filter(([, v]) => v !== undefined)),
818
864
  },
819
865
  nodes,
820
866
  edges,
@@ -987,7 +1033,7 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
987
1033
  async approveGate(input) {
988
1034
  const item = await this.getInboxItem(input.inboxId);
989
1035
  const outcomes = gateDeclaredOutcomes(item);
990
- this.assertLegacyGateWrapperAllowed(input.inboxId, outcomes);
1036
+ this.assertLegacyGateWrapperAllowed(item, input.inboxId, outcomes);
991
1037
  if (outcomes.length === 0 || (outcomes.length === 1 && outcomes[0] === 'approved')) {
992
1038
  const resolvedBy = input.resolvedBy ?? 'mcp';
993
1039
  return this.resolveLegacyGate(item, { decision: 'approve', resolvedBy }, resolvedBy, input.inboxId);
@@ -1001,7 +1047,7 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
1001
1047
  async rejectGate(input) {
1002
1048
  const item = await this.getInboxItem(input.inboxId);
1003
1049
  const outcomes = gateDeclaredOutcomes(item);
1004
- this.assertLegacyGateWrapperAllowed(input.inboxId, outcomes);
1050
+ this.assertLegacyGateWrapperAllowed(item, input.inboxId, outcomes);
1005
1051
  if (outcomes.length === 0) {
1006
1052
  const resolvedBy = input.resolvedBy ?? 'mcp';
1007
1053
  return this.resolveLegacyGate(item, { decision: 'reject', resolvedBy }, resolvedBy, input.inboxId);
@@ -1028,9 +1074,7 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
1028
1074
  throw new ControlPlaneError('VALIDATION_FAILURE', `invalid gate outcome ${outcome}; expected one of: ${outcomes.join(', ')}`);
1029
1075
  }
1030
1076
  const note = input.note?.trim();
1031
- if (outcome === 'approve_anyway' && !note) {
1032
- throw new ControlPlaneError('VALIDATION_FAILURE', 'approve_anyway requires a non-empty note');
1033
- }
1077
+ assertRequiredGateNote(item, outcome, note);
1034
1078
  const adoptionAudit = outcome === 'adopt_patch_manually'
1035
1079
  ? validateManualAdoptionAudit(input.adoptionAudit, item)
1036
1080
  : undefined;
@@ -1058,8 +1102,10 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
1058
1102
  runId: item.runId,
1059
1103
  };
1060
1104
  }
1061
- assertLegacyGateWrapperAllowed(inboxId, outcomes) {
1062
- if (outcomes.length > 2 || outcomes.includes('approve_anyway')) {
1105
+ assertLegacyGateWrapperAllowed(item, inboxId, outcomes) {
1106
+ if (outcomes.length > 2
1107
+ || outcomes.includes('approve_anyway')
1108
+ || outcomes.some((outcome) => isQuestionGateReasonOutcome(item, outcome))) {
1063
1109
  throw new ControlPlaneError('VALIDATION_FAILURE', `inbox item has named gate outcomes; use resolve_gate with an explicit outcome: ${inboxId}`);
1064
1110
  }
1065
1111
  }
@@ -1116,9 +1162,7 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
1116
1162
  }
1117
1163
  this.assertGateOutcome(item, outcome);
1118
1164
  const note = typeof answer?.note === 'string' ? answer.note.trim() : '';
1119
- if (outcome === 'approve_anyway' && !note) {
1120
- throw new ControlPlaneError('VALIDATION_FAILURE', 'approve_anyway requires a non-empty note');
1121
- }
1165
+ assertRequiredGateNote(item, outcome, note);
1122
1166
  const adoptionAudit = outcome === 'adopt_patch_manually'
1123
1167
  ? validateManualAdoptionAudit(answer.adoptionAudit, item)
1124
1168
  : undefined;
@@ -1188,6 +1232,9 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
1188
1232
  listPipelines() {
1189
1233
  return this.playbooks.listPipelines();
1190
1234
  }
1235
+ listProfiles(input = {}) {
1236
+ return this.playbooks.listRunProfiles(input);
1237
+ }
1191
1238
  async getPipeline(pipelineId) {
1192
1239
  const result = await this.playbooks.getPipeline(pipelineId);
1193
1240
  if (!result)
@@ -1200,7 +1247,9 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
1200
1247
  repo: input.repo ?? '',
1201
1248
  playbookId: input.playbookId,
1202
1249
  pipelineId: input.pipeline,
1250
+ profileId: input.profileId,
1203
1251
  params: input.params,
1252
+ executionProfile: input.executionProfile,
1204
1253
  source: input.pipeline ? 'explicit' : 'deterministic-installed-playbook',
1205
1254
  });
1206
1255
  }
@@ -1233,28 +1282,152 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
1233
1282
  });
1234
1283
  }
1235
1284
  async resolveRouteDecision(input) {
1236
- const params = normalizeParams(input.params, input.issueRef);
1237
- const executionProfile = normalizeExecutionProfile(input.executionProfile);
1285
+ const params = normalizeParams(input.params, input.issueRef, input.issueAction);
1286
+ const callerProfile = normalizeExecutionProfile(input.executionProfile);
1238
1287
  const playbook = await this.playbooks.resolvePlaybook(input.playbookId);
1239
- const pipeline = input.pipelineId
1240
- ? await this.playbooks.resolvePipeline({ playbookId: playbook.id, pipelineId: input.pipelineId })
1241
- : await this.resolveAutoPipeline(playbook.id, [input.title, input.description, input.scope].join(' '));
1242
- const roleBindings = await this.resolveRouteRoles(playbook.id, pipeline, executionProfile);
1288
+ const requestedPipelineId = input.pipelineId
1289
+ ?? (await this.resolveAutoPipeline(playbook.id, [input.title, input.description, input.scope].join(' '))).pipelineId;
1290
+ const pipeline = await this.playbooks.resolvePipeline({ playbookId: playbook.id, pipelineId: requestedPipelineId });
1291
+ let executionPolicy = pipeline.executionPolicy;
1292
+ let executionProfile = callerProfile;
1293
+ const provenanceFields = {};
1294
+ if (input.profileId !== undefined) {
1295
+ const storedProfile = await this.playbooks.resolveRunProfile({
1296
+ playbookId: playbook.id,
1297
+ pipelineId: pipeline.pipelineId,
1298
+ profileId: input.profileId,
1299
+ });
1300
+ const topologyProfile = topologyProfileFromRunProfile(storedProfile.profile);
1301
+ const baseTemplate = pipeline.executionPolicy.template_json;
1302
+ if (!baseTemplate) {
1303
+ throw new ControlPlaneError('VALIDATION_FAILURE', `pipeline "${pipeline.pipelineId}" carries no template_json`);
1304
+ }
1305
+ const { template: materializedTemplate, materializedTemplateHash, diagnostics } = materializeTemplate(baseTemplate, topologyProfile, { allowlist: topologyProfile.toggles.map((toggle) => toggle.target) });
1306
+ if (diagnostics.length > 0) {
1307
+ throw new ControlPlaneError('VALIDATION_FAILURE', `run profile ${storedProfile.profileId} cannot be materialized: ${diagnostics.map((item) => item.message).join('; ')}`, { details: { diagnostics } });
1308
+ }
1309
+ executionPolicy = { template_json: materializedTemplate };
1310
+ executionProfile = executionProfileFromRunProfile(storedProfile.profile, callerProfile);
1311
+ provenanceFields.requestedPipelineId = requestedPipelineId;
1312
+ provenanceFields.basePipelineId = pipeline.pipelineId;
1313
+ provenanceFields.profileId = storedProfile.profileId;
1314
+ provenanceFields.profileVersion = storedProfile.version;
1315
+ provenanceFields.profileHash = storedProfile.profileHash;
1316
+ provenanceFields.profileSnapshot = storedProfile.profile;
1317
+ provenanceFields.materializedTemplateHash = materializedTemplateHash;
1318
+ provenanceFields.materializedTemplate = materializedTemplate;
1319
+ provenanceFields.materializerVersion = MATERIALIZER_VERSION;
1320
+ provenanceFields.policyVersion = POLICY_VERSION;
1321
+ }
1322
+ const allRoles = (await this.roles.listRoles()).filter((role) => role.playbookId === playbook.id);
1323
+ await this.assertExecutionProfileClosed(executionProfile, allRoles);
1324
+ const roleBindings = await this.resolveRouteRoles(playbook.id, pipeline, executionProfile, allRoles);
1243
1325
  return {
1244
1326
  playbookId: playbook.id,
1245
- pipelineId: pipeline.pipelineId,
1327
+ pipelineId: requestedPipelineId,
1246
1328
  pipelineRowId: pipeline.id,
1247
1329
  source: input.source,
1248
1330
  roles: roleBindings.map((binding) => binding.roleId),
1249
1331
  requiredRoles: pipeline.requiredRoles,
1250
1332
  optionalRoles: pipeline.optionalRoles,
1251
1333
  routeGates: normalizeRouteGates(pipeline.routeGates),
1252
- executionPolicy: pipeline.executionPolicy,
1334
+ executionPolicy,
1253
1335
  executionProfile,
1254
1336
  roleBindings,
1255
1337
  params,
1338
+ ...provenanceFields,
1256
1339
  };
1257
1340
  }
1341
+ async assertExecutionProfileClosed(executionProfile, roles) {
1342
+ const overrides = executionProfile.bindingOverrides ?? [];
1343
+ if (overrides.length === 0)
1344
+ return;
1345
+ const available = executionProfile.availableRunners;
1346
+ const byPlaybookRole = new Map(roles.map((r) => [r.playbookRoleId || r.name, r]));
1347
+ const cachedProfiles = new Map();
1348
+ for (const override of overrides) {
1349
+ const matchLabel = JSON.stringify(override.match);
1350
+ const { roleId: mRoleId, nodeId: mNodeId, runnerId: mRunnerId } = override.match;
1351
+ if (!mRoleId && !mNodeId && !mRunnerId) {
1352
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} must specify at least one of roleId, nodeId, runnerId`);
1353
+ }
1354
+ // Validate match.runnerId too, not just override.runnerId — an unregistered/typo'd match
1355
+ // target would otherwise silently match nothing and the override becomes a no-op.
1356
+ if (mRunnerId !== undefined) {
1357
+ if (available && !available.includes(mRunnerId)) {
1358
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} runnerId "${mRunnerId}" not in availableRunners`);
1359
+ }
1360
+ if (!available && !BUILTIN_RUNNERS.has(mRunnerId)) {
1361
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} runnerId "${mRunnerId}" is not a registered runner`);
1362
+ }
1363
+ }
1364
+ if (override.runnerId !== undefined) {
1365
+ const ovRunner = override.runnerId;
1366
+ if (available && !available.includes(ovRunner)) {
1367
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} runnerId "${ovRunner}" not in availableRunners`);
1368
+ }
1369
+ if (!available && !BUILTIN_RUNNERS.has(ovRunner)) {
1370
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} runnerId "${ovRunner}" is not a registered runner`);
1371
+ }
1372
+ }
1373
+ if (override.modelLevel !== undefined) {
1374
+ const lvl = override.modelLevel;
1375
+ if (!VALID_MODEL_LEVELS.includes(lvl)) {
1376
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} modelLevel "${lvl}" is unavailable`);
1377
+ }
1378
+ const cached = cachedProfiles.get(lvl);
1379
+ if (cached === undefined) {
1380
+ try {
1381
+ await this.roles.loadModelProfile(lvl);
1382
+ cachedProfiles.set(lvl, true);
1383
+ }
1384
+ catch (err) {
1385
+ const isNotFound = err instanceof ControlPlaneError && (err.code === 'ROW_NOT_FOUND' || err.code === 'VALIDATION_FAILURE');
1386
+ if (isNotFound) {
1387
+ cachedProfiles.set(lvl, false);
1388
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} modelLevel "${lvl}" is unavailable`);
1389
+ }
1390
+ throw err;
1391
+ }
1392
+ }
1393
+ else if (!cached) {
1394
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} modelLevel "${lvl}" is unavailable`);
1395
+ }
1396
+ }
1397
+ if (override.timeoutMs !== undefined) {
1398
+ const ms = override.timeoutMs;
1399
+ if (!Number.isInteger(ms) || ms <= 0 || ms > 86_400_000) {
1400
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} timeoutMs must be a positive integer <= 86400000, got ${ms}`);
1401
+ }
1402
+ }
1403
+ if (override.permissionMode !== undefined) {
1404
+ let effectiveRunner;
1405
+ if (override.runnerId) {
1406
+ effectiveRunner = override.runnerId;
1407
+ }
1408
+ else if (mRunnerId) {
1409
+ effectiveRunner = executionProfile.runnerOverrides[mRunnerId] ?? mRunnerId;
1410
+ }
1411
+ else if (mRoleId) {
1412
+ const role = byPlaybookRole.get(mRoleId);
1413
+ if (!role) {
1414
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} permissionMode override requires a resolvable runner; pin runnerId`);
1415
+ }
1416
+ effectiveRunner = executionProfile.runnerOverrides[role.runner] ?? role.runner;
1417
+ }
1418
+ else {
1419
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} permissionMode override requires a resolvable runner; pin runnerId`);
1420
+ }
1421
+ const validModes = RUNNER_PERMISSION_MODES[effectiveRunner];
1422
+ if (!validModes) {
1423
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} permissionMode not supported for runner ${effectiveRunner}`);
1424
+ }
1425
+ if (!validModes.includes(override.permissionMode)) {
1426
+ throw new ControlPlaneError('VALIDATION_FAILURE', `PROFILE_SCHEMA_CLOSED: bindingOverride match ${matchLabel} permissionMode "${override.permissionMode}" is not valid for runner ${effectiveRunner}; expected one of ${validModes.join(', ')}`);
1427
+ }
1428
+ }
1429
+ }
1430
+ }
1258
1431
  async resolveAutoPipeline(playbookId, text) {
1259
1432
  const pipelines = (await this.playbooks.listPipelines())
1260
1433
  .filter((pipeline) => pipeline.playbookId === playbookId)
@@ -1275,8 +1448,8 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
1275
1448
  }
1276
1449
  return best.pipeline;
1277
1450
  }
1278
- async resolveRouteRoles(playbookId, pipeline, executionProfile) {
1279
- const roles = (await this.roles.listRoles()).filter((role) => role.playbookId === playbookId);
1451
+ async resolveRouteRoles(playbookId, pipeline, executionProfile, preloadedRoles) {
1452
+ const roles = preloadedRoles ?? (await this.roles.listRoles()).filter((role) => role.playbookId === playbookId);
1280
1453
  const byPlaybookRole = new Map(roles.map((role) => [role.playbookRoleId || role.name, role]));
1281
1454
  const selected = [...pipeline.requiredRoles];
1282
1455
  for (const group of pipeline.alternativeRoles) {
@@ -1295,16 +1468,25 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
1295
1468
  return selected.map((roleId) => {
1296
1469
  const role = byPlaybookRole.get(roleId);
1297
1470
  assertProductionRunnerBinding(role.runner, 'playbook', roleId);
1298
- const resolved = resolveRunnerForProfile(role.runner, executionProfile);
1299
- assertProductionRunnerBinding(resolved.runnerId, resolved.source, roleId);
1300
- assertRunnerAvailable(resolved.runnerId, executionProfile, roleId);
1471
+ const runnerResolved = resolveRunnerForRole(role.runner, roleId, executionProfile);
1472
+ assertProductionRunnerBinding(runnerResolved.runnerId, runnerResolved.source, roleId);
1473
+ assertRunnerAvailable(runnerResolved.runnerId, executionProfile, roleId);
1474
+ const bindingResolution = resolveBindingForRole(role, roleId, runnerResolved.runnerId, executionProfile);
1301
1475
  return {
1302
1476
  roleId,
1303
1477
  rowId: role.id,
1304
1478
  modelLevel: role.modelLevel,
1305
1479
  runnerId: role.runner,
1306
- resolvedRunnerId: resolved.runnerId,
1307
- runnerSource: resolved.source,
1480
+ resolvedRunnerId: runnerResolved.runnerId,
1481
+ runnerSource: runnerResolved.source,
1482
+ resolvedModelLevel: bindingResolution.resolvedModelLevel,
1483
+ modelSource: bindingResolution.modelSource,
1484
+ timeoutMs: role.timeoutMs,
1485
+ resolvedTimeoutMs: bindingResolution.resolvedTimeoutMs,
1486
+ timeoutSource: bindingResolution.timeoutSource,
1487
+ permissionMode: role.permissionMode,
1488
+ resolvedPermissionMode: bindingResolution.resolvedPermissionMode,
1489
+ permissionSource: bindingResolution.permissionSource,
1308
1490
  };
1309
1491
  });
1310
1492
  }