@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.
- package/README.md +210 -146
- package/control-plane/bootstrap.config.json +43 -1
- package/control-plane/default-playbook/catalog/pipelines.json +1157 -10
- package/control-plane/default-playbook/catalog/roles.json +54 -0
- package/control-plane/default-playbook/package.json +1 -1
- package/control-plane/default-playbook/prompts/developer.md +1 -0
- package/control-plane/default-playbook/prompts/triager.md +3 -0
- package/dist/api/graphql-api/graphql-ws/pubsub.module.js +0 -1
- package/dist/api/graphql-api/graphql-ws/pubsub.module.js.map +1 -1
- package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js +0 -1
- package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js.map +1 -1
- package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js +0 -1
- package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js.map +1 -1
- package/dist/api/graphql-api/graphql-ws/subscription-mappers.js +3 -0
- package/dist/api/graphql-api/graphql-ws/subscription-mappers.js.map +1 -1
- package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js +6 -0
- package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js.map +1 -1
- package/dist/api/graphql-api/pr/model/pr-readiness.model.js +26 -0
- package/dist/api/graphql-api/pr/model/pr-readiness.model.js.map +1 -1
- package/dist/api/graphql-api/runs/inputs/create-run.input.js +6 -0
- package/dist/api/graphql-api/runs/inputs/create-run.input.js.map +1 -1
- package/dist/api/graphql-api/runs/model/run.model.js +6 -0
- package/dist/api/graphql-api/runs/model/run.model.js.map +1 -1
- package/dist/api/graphql-api/share/model/issue-ref.model.js +53 -0
- package/dist/api/graphql-api/share/model/issue-ref.model.js.map +1 -0
- package/dist/cli/commands/doctor-report.js +0 -18
- package/dist/cli/commands/doctor-report.js.map +1 -1
- package/dist/cli/commands/lifecycle.js +3 -71
- package/dist/cli/commands/lifecycle.js.map +1 -1
- package/dist/cli/commands/mcp.js +0 -14
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/process-tree.js +4 -26
- package/dist/cli/commands/process-tree.js.map +1 -1
- package/dist/cli/commands/revisium-helpers.js +0 -6
- package/dist/cli/commands/revisium-helpers.js.map +1 -1
- package/dist/cli/commands/rogue-reaper.js +0 -34
- package/dist/cli/commands/rogue-reaper.js.map +1 -1
- package/dist/cli/index.js +0 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/program.js +0 -5
- package/dist/cli/program.js.map +1 -1
- package/dist/config.js +0 -25
- package/dist/config.js.map +1 -1
- package/dist/control-plane/bootstrap.js +12 -27
- package/dist/control-plane/bootstrap.js.map +1 -1
- package/dist/control-plane/change-notifications.js +0 -1
- package/dist/control-plane/change-notifications.js.map +1 -1
- package/dist/control-plane/client-transport.js +1 -12
- package/dist/control-plane/client-transport.js.map +1 -1
- package/dist/control-plane/default-playbook-policy.js +593 -0
- package/dist/control-plane/default-playbook-policy.js.map +1 -0
- package/dist/control-plane/definitions.js +8 -17
- package/dist/control-plane/definitions.js.map +1 -1
- package/dist/control-plane/inbox.js +2 -120
- package/dist/control-plane/inbox.js.map +1 -1
- package/dist/control-plane/resolve-cwd.js +0 -61
- package/dist/control-plane/resolve-cwd.js.map +1 -1
- package/dist/control-plane/schema-migration.js +0 -9
- package/dist/control-plane/schema-migration.js.map +1 -1
- package/dist/control-plane/seed-default-playbook.js +50 -46
- package/dist/control-plane/seed-default-playbook.js.map +1 -1
- package/dist/control-plane/steps.js +0 -15
- package/dist/control-plane/steps.js.map +1 -1
- package/dist/e2e/kit/agents.js +15 -21
- package/dist/e2e/kit/agents.js.map +1 -1
- package/dist/e2e/kit/assertions.js +12 -8
- package/dist/e2e/kit/assertions.js.map +1 -1
- package/dist/e2e/kit/fake-integrator.js +11 -2
- package/dist/e2e/kit/fake-integrator.js.map +1 -1
- package/dist/e2e/kit/git-target-repo.js +1 -1
- package/dist/engine/dbos.service.js +12 -179
- package/dist/engine/dbos.service.js.map +1 -1
- package/dist/engine/ensure-postgres.js +0 -48
- package/dist/engine/ensure-postgres.js.map +1 -1
- package/dist/features/pr/queries/impl/get-pr-readiness.query.js.map +1 -1
- package/dist/features/runs/commands/impl/create-run.command.js.map +1 -1
- package/dist/features/runs/queries/handlers/runs-query.handlers.js +1 -0
- package/dist/features/runs/queries/handlers/runs-query.handlers.js.map +1 -1
- package/dist/host/daemon.js +2 -21
- package/dist/host/daemon.js.map +1 -1
- package/dist/host/dbos-identity.js +0 -31
- package/dist/host/dbos-identity.js.map +1 -1
- package/dist/host/ensure-host.js +1 -37
- package/dist/host/ensure-host.js.map +1 -1
- package/dist/host/ensure-revisium.js +1 -135
- package/dist/host/ensure-revisium.js.map +1 -1
- package/dist/host/host-runtime.js +0 -28
- package/dist/host/host-runtime.js.map +1 -1
- package/dist/host/host.lifecycle.js +0 -27
- package/dist/host/host.lifecycle.js.map +1 -1
- package/dist/host/queue-ownership.js +0 -42
- package/dist/host/queue-ownership.js.map +1 -1
- package/dist/host/queue-poller-census.js +1 -28
- package/dist/host/queue-poller-census.js.map +1 -1
- package/dist/http/graphql-host.module.js +0 -3
- package/dist/http/graphql-host.module.js.map +1 -1
- package/dist/mcp/mcp-capabilities.js +23 -5
- package/dist/mcp/mcp-capabilities.js.map +1 -1
- package/dist/mcp/mcp-facade.service.js +335 -22
- package/dist/mcp/mcp-facade.service.js.map +1 -1
- package/dist/mcp/mcp-http.service.js +0 -18
- package/dist/mcp/mcp-http.service.js.map +1 -1
- package/dist/mcp/mcp-tools.js +41 -36
- package/dist/mcp/mcp-tools.js.map +1 -1
- package/dist/observability/activity-signal.js +103 -0
- package/dist/observability/activity-signal.js.map +1 -0
- package/dist/observability/agent-activity-reporter.js +0 -4
- package/dist/observability/agent-activity-reporter.js.map +1 -1
- package/dist/observability/index.js +1 -0
- package/dist/observability/index.js.map +1 -1
- package/dist/pipeline/await-human.js +0 -40
- package/dist/pipeline/await-human.js.map +1 -1
- package/dist/pipeline/data-driven-task.workflow.js +563 -251
- package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
- package/dist/pipeline/data-driven-template.js +0 -25
- package/dist/pipeline/data-driven-template.js.map +1 -1
- package/dist/pipeline/pipeline.module.js +0 -12
- package/dist/pipeline/pipeline.module.js.map +1 -1
- package/dist/pipeline/pipeline.service.js +194 -189
- package/dist/pipeline/pipeline.service.js.map +1 -1
- package/dist/pipeline/route-contract.js +4 -3
- package/dist/pipeline/route-contract.js.map +1 -1
- package/dist/pipeline-core/index.js +1 -13
- package/dist/pipeline-core/index.js.map +1 -1
- package/dist/pipeline-core/interpret.js +21 -94
- package/dist/pipeline-core/interpret.js.map +1 -1
- package/dist/pipeline-core/kit/assertions.js +0 -19
- package/dist/pipeline-core/kit/assertions.js.map +1 -1
- package/dist/pipeline-core/kit/builders.js +1 -21
- package/dist/pipeline-core/kit/builders.js.map +1 -1
- package/dist/pipeline-core/kit/drive.js +1 -31
- package/dist/pipeline-core/kit/drive.js.map +1 -1
- package/dist/pipeline-core/kit/fixtures.js +78 -101
- package/dist/pipeline-core/kit/fixtures.js.map +1 -1
- package/dist/pipeline-core/kit/index.js +0 -8
- package/dist/pipeline-core/kit/index.js.map +1 -1
- package/dist/pipeline-core/types.js +13 -52
- package/dist/pipeline-core/types.js.map +1 -1
- package/dist/pipeline-core/validate-capability.js +0 -3
- package/dist/pipeline-core/validate-capability.js.map +1 -1
- package/dist/pipeline-core/validate-conflicts.js +0 -9
- package/dist/pipeline-core/validate-conflicts.js.map +1 -1
- package/dist/pipeline-core/validate-dataflow.js +0 -17
- package/dist/pipeline-core/validate-dataflow.js.map +1 -1
- package/dist/pipeline-core/validate-diff.js +3 -36
- package/dist/pipeline-core/validate-diff.js.map +1 -1
- package/dist/pipeline-core/validate-edges.js +0 -6
- package/dist/pipeline-core/validate-edges.js.map +1 -1
- package/dist/pipeline-core/validate-graph.js +0 -11
- package/dist/pipeline-core/validate-graph.js.map +1 -1
- package/dist/pipeline-core/validate-loops.js +37 -44
- package/dist/pipeline-core/validate-loops.js.map +1 -1
- package/dist/pipeline-core/validate-parallel.js +9 -15
- package/dist/pipeline-core/validate-parallel.js.map +1 -1
- package/dist/pipeline-core/validate-sink.js +0 -7
- package/dist/pipeline-core/validate-sink.js.map +1 -1
- package/dist/pipeline-core/validate-topology.js +1 -20
- package/dist/pipeline-core/validate-topology.js.map +1 -1
- package/dist/pipeline-core/validate-verdict.js +52 -7
- package/dist/pipeline-core/validate-verdict.js.map +1 -1
- package/dist/pipeline-core/validate.js +5 -29
- package/dist/pipeline-core/validate.js.map +1 -1
- package/dist/playbook/catalog-loader.js +8 -3
- package/dist/playbook/catalog-loader.js.map +1 -1
- package/dist/playbook/import-mapper.js +4 -5
- package/dist/playbook/import-mapper.js.map +1 -1
- package/dist/poller/pr-readiness-core.js +226 -29
- package/dist/poller/pr-readiness-core.js.map +1 -1
- package/dist/revisium/inbox.service.js +0 -24
- package/dist/revisium/inbox.service.js.map +1 -1
- package/dist/revisium/playbooks.service.js +15 -2
- package/dist/revisium/playbooks.service.js.map +1 -1
- package/dist/revisium/revisium.module.js +0 -12
- package/dist/revisium/revisium.module.js.map +1 -1
- package/dist/revisium/roles.service.js +0 -6
- package/dist/revisium/roles.service.js.map +1 -1
- package/dist/revisium/run.service.js +2 -75
- package/dist/revisium/run.service.js.map +1 -1
- package/dist/revisium/tokens.js +0 -4
- package/dist/revisium/tokens.js.map +1 -1
- package/dist/run/append-event.js +6 -37
- package/dist/run/append-event.js.map +1 -1
- package/dist/run/block-run.js.map +1 -1
- package/dist/run/cancel-run.js +0 -33
- package/dist/run/cancel-run.js.map +1 -1
- package/dist/run/complete-run.js.map +1 -1
- package/dist/run/create-run.js +5 -8
- package/dist/run/create-run.js.map +1 -1
- package/dist/run/fail-run.js +0 -3
- package/dist/run/fail-run.js.map +1 -1
- package/dist/run/inspect-run.js +10 -29
- package/dist/run/inspect-run.js.map +1 -1
- package/dist/run/issue-ref.js +88 -0
- package/dist/run/issue-ref.js.map +1 -0
- package/dist/run/run-outputs.js +0 -19
- package/dist/run/run-outputs.js.map +1 -1
- package/dist/run/terminal-run-status.js +0 -12
- package/dist/run/terminal-run-status.js.map +1 -1
- package/dist/runners/claude-code.service.js +2 -13
- package/dist/runners/claude-code.service.js.map +1 -1
- package/dist/runners/codex.service.js +2 -11
- package/dist/runners/codex.service.js.map +1 -1
- package/dist/runners/gh-identity.js +0 -52
- package/dist/runners/gh-identity.js.map +1 -1
- package/dist/runners/integrator-branch-naming.js +16 -19
- package/dist/runners/integrator-branch-naming.js.map +1 -1
- package/dist/runners/integrator-git.js +0 -25
- package/dist/runners/integrator-git.js.map +1 -1
- package/dist/runners/integrator-remote.js +0 -2
- package/dist/runners/integrator-remote.js.map +1 -1
- package/dist/runners/integrator-types.js +0 -7
- package/dist/runners/integrator-types.js.map +1 -1
- package/dist/runners/integrator.js +231 -230
- package/dist/runners/integrator.js.map +1 -1
- package/dist/runners/runner.module.js +0 -6
- package/dist/runners/runner.module.js.map +1 -1
- package/dist/runners/tokens.js +0 -4
- package/dist/runners/tokens.js.map +1 -1
- package/dist/runners/worktree.service.js +3 -19
- package/dist/runners/worktree.service.js.map +1 -1
- package/dist/task-control-plane/pr-readiness.service.js +15 -13
- package/dist/task-control-plane/pr-readiness.service.js.map +1 -1
- package/dist/task-control-plane/run-watch.service.js +170 -63
- package/dist/task-control-plane/run-watch.service.js.map +1 -1
- package/dist/task-control-plane/task-control-plane-api.service.js +285 -40
- package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
- package/dist/worker/artifact-store.js +21 -3
- package/dist/worker/artifact-store.js.map +1 -1
- package/dist/worker/build-context.js +10 -10
- package/dist/worker/build-context.js.map +1 -1
- package/dist/worker/claude-code-runner.js +76 -48
- package/dist/worker/claude-code-runner.js.map +1 -1
- package/dist/worker/codex-runner.js +128 -35
- package/dist/worker/codex-runner.js.map +1 -1
- package/dist/worker/git-worktree-manager.js +20 -67
- package/dist/worker/git-worktree-manager.js.map +1 -1
- package/dist/worker/process-executor.js +144 -27
- package/dist/worker/process-executor.js.map +1 -1
- package/dist/worker/result-envelope.js +33 -49
- package/dist/worker/result-envelope.js.map +1 -1
- package/dist/worker/runner-common.js +29 -0
- package/dist/worker/runner-common.js.map +1 -1
- package/dist/worker/runner-dispatch.js +0 -3
- package/dist/worker/runner-dispatch.js.map +1 -1
- package/dist/worker/runner.js +16 -1
- package/dist/worker/runner.js.map +1 -1
- package/dist/worker/stub-runner.js +0 -7
- package/dist/worker/stub-runner.js.map +1 -1
- package/package.json +2 -2
|
@@ -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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"}
|
|
@@ -18,6 +18,7 @@ import { Inject, Injectable } from '@nestjs/common';
|
|
|
18
18
|
import { baseUrl, getConfig, isAlive, isHealthy, readRuntime } from '../cli/config.js';
|
|
19
19
|
import { AgentObservabilityService } from '../observability/agent-observability.service.js';
|
|
20
20
|
import { ControlPlaneError } from '../control-plane/errors.js';
|
|
21
|
+
import { fnv1a64Hex } from '../control-plane/steps.js';
|
|
21
22
|
import { DbosService } from '../engine/dbos.service.js';
|
|
22
23
|
import { PipelineService } from '../pipeline/pipeline.service.js';
|
|
23
24
|
import { RUN_PROGRESS_EVENT_KEY } from '../pipeline/data-driven-task.workflow.js';
|
|
@@ -27,6 +28,7 @@ import { InboxService } from '../revisium/inbox.service.js';
|
|
|
27
28
|
import { PlaybooksService } from '../revisium/playbooks.service.js';
|
|
28
29
|
import { RolesService } from '../revisium/roles.service.js';
|
|
29
30
|
import { RunService } from '../revisium/run.service.js';
|
|
31
|
+
import { CreateRunWorkflowError, previewCreateRunIds, } from '../run/create-run.js';
|
|
30
32
|
import { PrReadinessService } from './pr-readiness.service.js';
|
|
31
33
|
const execFileAsync = promisify(execFile);
|
|
32
34
|
const GATE_TOPICS = new Set(['plan', 'merge', 'question']);
|
|
@@ -120,6 +122,40 @@ function summarizeAttempts(attempts) {
|
|
|
120
122
|
function normalizedRunStatus(status) {
|
|
121
123
|
return status === 'paused' ? 'blocked' : status;
|
|
122
124
|
}
|
|
125
|
+
function hasWorkflowProgress(events) {
|
|
126
|
+
return events.some((event) => (event.type.startsWith('step_')
|
|
127
|
+
|| event.type.startsWith('attempt_')
|
|
128
|
+
|| event.type.startsWith('gate_')
|
|
129
|
+
|| event.type === 'pipeline_blocked'
|
|
130
|
+
|| event.type === 'pr_polled'
|
|
131
|
+
|| event.type === 'integrate_succeeded'));
|
|
132
|
+
}
|
|
133
|
+
function observedRunStatus(rowStatus, workflowStatus, events) {
|
|
134
|
+
if (rowStatus !== 'ready')
|
|
135
|
+
return rowStatus;
|
|
136
|
+
if (workflowStatus === 'SUCCESS')
|
|
137
|
+
return 'completed';
|
|
138
|
+
if (workflowStatus === 'ERROR')
|
|
139
|
+
return 'failed';
|
|
140
|
+
if (workflowStatus && workflowStatus !== 'NOT_STARTED')
|
|
141
|
+
return 'running';
|
|
142
|
+
if (hasWorkflowProgress(events))
|
|
143
|
+
return 'running';
|
|
144
|
+
return rowStatus;
|
|
145
|
+
}
|
|
146
|
+
function observedTaskStatus(rowStatus, runStatus) {
|
|
147
|
+
if (rowStatus !== 'ready')
|
|
148
|
+
return rowStatus;
|
|
149
|
+
if (runStatus === 'running' || runStatus === 'completed' || runStatus === 'failed' || runStatus === 'cancelled') {
|
|
150
|
+
return runStatus;
|
|
151
|
+
}
|
|
152
|
+
return rowStatus;
|
|
153
|
+
}
|
|
154
|
+
function latestEventPulse(events) {
|
|
155
|
+
const latest = [...events]
|
|
156
|
+
.sort((left, right) => dateOrEpoch(right.createdAt).getTime() - dateOrEpoch(left.createdAt).getTime())[0];
|
|
157
|
+
return latest ? { latestEventAt: latest.createdAt, latestEventType: latest.type } : {};
|
|
158
|
+
}
|
|
123
159
|
function payloadRecord(event) {
|
|
124
160
|
return asRecord(event.payload);
|
|
125
161
|
}
|
|
@@ -138,6 +174,72 @@ function eventSummary(event) {
|
|
|
138
174
|
return output.slice(0, 180);
|
|
139
175
|
return event.type;
|
|
140
176
|
}
|
|
177
|
+
function blockedReasonFromEvent(event) {
|
|
178
|
+
const reason = payloadRecord(event)?.reason;
|
|
179
|
+
return typeof reason === 'string' && reason ? reason : undefined;
|
|
180
|
+
}
|
|
181
|
+
function latestPipelineBlockedEvent(events) {
|
|
182
|
+
return [...events].reverse().find((event) => event.type === 'pipeline_blocked');
|
|
183
|
+
}
|
|
184
|
+
function recoveryCreatedForBlockedEvent(events, blockedEventId) {
|
|
185
|
+
return [...events]
|
|
186
|
+
.reverse()
|
|
187
|
+
.find((event) => {
|
|
188
|
+
if (event.type !== 'run_recovery_created')
|
|
189
|
+
return false;
|
|
190
|
+
return payloadRecord(event)?.blockedEventId === blockedEventId;
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
function requiredString(value, field, runId) {
|
|
194
|
+
if (typeof value === 'string' && value.trim())
|
|
195
|
+
return value;
|
|
196
|
+
throw new ControlPlaneError('VALIDATION_FAILURE', `Cannot recover run ${runId}: parent ${field} is missing`);
|
|
197
|
+
}
|
|
198
|
+
function optionalString(value) {
|
|
199
|
+
return typeof value === 'string' ? value : undefined;
|
|
200
|
+
}
|
|
201
|
+
function optionalInteger(value) {
|
|
202
|
+
return typeof value === 'number' && Number.isSafeInteger(value) ? value : undefined;
|
|
203
|
+
}
|
|
204
|
+
function requiredRecord(value, field, runId) {
|
|
205
|
+
const record = asRecord(value);
|
|
206
|
+
if (record)
|
|
207
|
+
return record;
|
|
208
|
+
throw new ControlPlaneError('VALIDATION_FAILURE', `Cannot recover run ${runId}: parent ${field} is not a record`);
|
|
209
|
+
}
|
|
210
|
+
function optionalRecord(value) {
|
|
211
|
+
return asRecord(value) ?? {};
|
|
212
|
+
}
|
|
213
|
+
function firstRepoRef(value, runId) {
|
|
214
|
+
if (Array.isArray(value) && typeof value[0] === 'string' && value[0].trim())
|
|
215
|
+
return value[0];
|
|
216
|
+
throw new ControlPlaneError('VALIDATION_FAILURE', `Cannot recover run ${runId}: parent repo is missing`);
|
|
217
|
+
}
|
|
218
|
+
function makeRecoveryLineage(parentRunId, recoveryRunId, blockedEventId) {
|
|
219
|
+
return { parentRunId, recoveryRunId, blockedEventId, reason: 'preflight' };
|
|
220
|
+
}
|
|
221
|
+
function recoveryLineagePayload(lineage) {
|
|
222
|
+
return { parentRunId: lineage.parentRunId, recoveryRunId: lineage.recoveryRunId, blockedEventId: lineage.blockedEventId, reason: lineage.reason };
|
|
223
|
+
}
|
|
224
|
+
function recoveryLineageEvent(lineage, runId, taskId, type) {
|
|
225
|
+
const payload = recoveryLineagePayload(lineage);
|
|
226
|
+
return { runId, taskId, stepId: '', stepKey: 'recovery', type, idempotencyKey: lineage.blockedEventId, payload, actor: 'orchestrator' };
|
|
227
|
+
}
|
|
228
|
+
function recoverableStartRunResponse(runId, route, recoverable) {
|
|
229
|
+
return {
|
|
230
|
+
runId,
|
|
231
|
+
workflowID: recoverable.workflowID,
|
|
232
|
+
alreadyStarted: true,
|
|
233
|
+
recoverable: true,
|
|
234
|
+
retryStarted: false,
|
|
235
|
+
nextAction: 'resume_run',
|
|
236
|
+
blockedEventId: recoverable.blockedEventId,
|
|
237
|
+
blockedReason: recoverable.reason,
|
|
238
|
+
workflowStatus: recoverable.workflowStatus,
|
|
239
|
+
route,
|
|
240
|
+
engine: 'data-driven',
|
|
241
|
+
};
|
|
242
|
+
}
|
|
141
243
|
function stepKeyBase(stepKey) {
|
|
142
244
|
return stepKey.split('#')[0] ?? stepKey;
|
|
143
245
|
}
|
|
@@ -208,6 +310,7 @@ function mapRunForWorkflow(run) {
|
|
|
208
310
|
scope: run.scope,
|
|
209
311
|
repos: run.repos ?? [],
|
|
210
312
|
createdAt: dateOrEpoch(run.createdAt),
|
|
313
|
+
...(run.issueRef ? { issueRef: run.issueRef } : {}),
|
|
211
314
|
};
|
|
212
315
|
}
|
|
213
316
|
function workflowNodeStatus(input) {
|
|
@@ -407,6 +510,7 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
|
|
|
407
510
|
playbookId: input.playbookId,
|
|
408
511
|
pipelineId: input.pipelineId,
|
|
409
512
|
params: input.params,
|
|
513
|
+
issueRef: input.issueRef,
|
|
410
514
|
executionProfile: input.executionProfile,
|
|
411
515
|
source: input.pipelineId ? 'explicit' : 'deterministic-installed-playbook',
|
|
412
516
|
});
|
|
@@ -420,6 +524,7 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
|
|
|
420
524
|
playbookId: route.playbookId,
|
|
421
525
|
pipelineId: route.pipelineId,
|
|
422
526
|
params: route.params,
|
|
527
|
+
issueRef: route.params.issueRef,
|
|
423
528
|
routeDecision: route,
|
|
424
529
|
executionProfile: route.executionProfile,
|
|
425
530
|
});
|
|
@@ -436,13 +541,11 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
|
|
|
436
541
|
const run = await this.runs.getRun(input.runId);
|
|
437
542
|
if (!run)
|
|
438
543
|
throw new ControlPlaneError('ROW_NOT_FOUND', `run not found: ${input.runId}`);
|
|
439
|
-
const route = input.route ?? await this.routeForRun(run);
|
|
440
544
|
const existingStatus = await this.dbos.getWorkflowStatus(input.runId);
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
// A present-but-malformed/invalid template likewise throws (templateFromExecutionPolicy).
|
|
545
|
+
const route = input.route ?? await this.routeForRun(run);
|
|
546
|
+
const recoverable = await this.detectRecoverablePreflightBlock(input.runId, run.data.status, existingStatus);
|
|
547
|
+
if (recoverable)
|
|
548
|
+
return recoverableStartRunResponse(input.runId, route, recoverable);
|
|
446
549
|
const template = templateFromExecutionPolicy(route.executionPolicy);
|
|
447
550
|
if (!template) {
|
|
448
551
|
throw new ControlPlaneError('VALIDATION_FAILURE', `PIPELINE_NOT_DATA_DRIVEN: pipeline ${route.pipelineId} carries no state-machine template ` +
|
|
@@ -457,8 +560,113 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
|
|
|
457
560
|
engine: 'data-driven',
|
|
458
561
|
};
|
|
459
562
|
}
|
|
460
|
-
resumeRun(input) {
|
|
461
|
-
|
|
563
|
+
async resumeRun(input) {
|
|
564
|
+
const run = await this.runs.getRun(input.runId);
|
|
565
|
+
if (!run)
|
|
566
|
+
throw new ControlPlaneError('ROW_NOT_FOUND', `run not found: ${input.runId}`);
|
|
567
|
+
const workflow = await this.dbos.getWorkflowStatus(input.runId);
|
|
568
|
+
const recoverable = await this.detectRecoverablePreflightBlock(input.runId, run.data.status, workflow);
|
|
569
|
+
if (!recoverable)
|
|
570
|
+
return this.startRun(input);
|
|
571
|
+
const recovery = await this.createOrReusePreflightRecoveryRun(input.runId, run.data, recoverable.blockedEvent);
|
|
572
|
+
const started = await this.startRun({
|
|
573
|
+
runId: recovery.recoveryRunId,
|
|
574
|
+
runnerMode: input.runnerMode,
|
|
575
|
+
});
|
|
576
|
+
return {
|
|
577
|
+
...started,
|
|
578
|
+
recovered: true,
|
|
579
|
+
recovery,
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
async detectRecoverablePreflightBlock(runId, runStatus, workflow) {
|
|
583
|
+
if (runStatus !== 'paused' || workflow?.status !== 'SUCCESS')
|
|
584
|
+
return null;
|
|
585
|
+
const events = await this.runs.listRunEvents(runId, { type: 'pipeline_blocked', limit: 500 });
|
|
586
|
+
const blockedEvent = latestPipelineBlockedEvent(events);
|
|
587
|
+
if (!blockedEvent || blockedReasonFromEvent(blockedEvent) !== 'preflight')
|
|
588
|
+
return null;
|
|
589
|
+
return {
|
|
590
|
+
blockedEvent,
|
|
591
|
+
blockedEventId: blockedEvent.eventId,
|
|
592
|
+
reason: 'preflight',
|
|
593
|
+
workflowID: workflow.workflowID,
|
|
594
|
+
workflowStatus: 'SUCCESS',
|
|
595
|
+
};
|
|
596
|
+
}
|
|
597
|
+
async createOrReusePreflightRecoveryRun(parentRunId, parentData, blockedEvent) {
|
|
598
|
+
const existing = await this.existingPreflightRecoveryRun(parentRunId, blockedEvent);
|
|
599
|
+
if (existing)
|
|
600
|
+
return existing;
|
|
601
|
+
const parentDetail = await this.runs.showRun(parentRunId);
|
|
602
|
+
const parentTask = parentDetail?.tasks[0];
|
|
603
|
+
if (!parentTask) {
|
|
604
|
+
throw new ControlPlaneError('ROW_NOT_FOUND', `Cannot recover run ${parentRunId}: parent task is missing`);
|
|
605
|
+
}
|
|
606
|
+
const createInput = this.buildPreflightRecoveryCreateInput(parentRunId, parentData, parentTask.roleHint, blockedEvent);
|
|
607
|
+
const expected = previewCreateRunIds(createInput);
|
|
608
|
+
const created = await this.createRecoveryRunOrReuseExpected(createInput, expected);
|
|
609
|
+
const lineage = makeRecoveryLineage(parentRunId, created.runId, blockedEvent.eventId);
|
|
610
|
+
await this.recordRecoveryLineage(lineage);
|
|
611
|
+
return lineage;
|
|
612
|
+
}
|
|
613
|
+
async existingPreflightRecoveryRun(parentRunId, blockedEvent) {
|
|
614
|
+
const events = await this.runs.listRunEvents(parentRunId, { limit: 500 });
|
|
615
|
+
const event = recoveryCreatedForBlockedEvent(events, blockedEvent.eventId);
|
|
616
|
+
if (!event)
|
|
617
|
+
return null;
|
|
618
|
+
const recoveryRunId = payloadRecord(event)?.recoveryRunId;
|
|
619
|
+
if (typeof recoveryRunId !== 'string' || !recoveryRunId)
|
|
620
|
+
return null;
|
|
621
|
+
const recovery = await this.runs.showRun(recoveryRunId);
|
|
622
|
+
if (!recovery) {
|
|
623
|
+
throw new ControlPlaneError('ROW_NOT_FOUND', `Cannot recover run ${parentRunId}: recovery run ${recoveryRunId} referenced by lineage event is missing`);
|
|
624
|
+
}
|
|
625
|
+
const lineage = makeRecoveryLineage(parentRunId, recoveryRunId, blockedEvent.eventId);
|
|
626
|
+
await this.recordRecoveryLineage(lineage);
|
|
627
|
+
return lineage;
|
|
628
|
+
}
|
|
629
|
+
buildPreflightRecoveryCreateInput(parentRunId, parentData, role, blockedEvent) {
|
|
630
|
+
const now = dateOrEpoch(blockedEvent.createdAt);
|
|
631
|
+
const title = requiredString(parentData.title, 'title', parentRunId);
|
|
632
|
+
const repo = firstRepoRef(parentData.repos, parentRunId);
|
|
633
|
+
const description = optionalString(parentData.description);
|
|
634
|
+
const scope = optionalString(parentData.scope);
|
|
635
|
+
const priority = optionalInteger(parentData.priority);
|
|
636
|
+
const recoveryRole = requiredString(role, 'task role_hint', parentRunId);
|
|
637
|
+
const playbookId = optionalString(parentData.playbook_id);
|
|
638
|
+
const pipelineId = optionalString(parentData.pipeline_id);
|
|
639
|
+
const params = optionalRecord(parentData.params);
|
|
640
|
+
const routeDecision = parentData.route_decision;
|
|
641
|
+
if (!isRouteDecision(routeDecision)) {
|
|
642
|
+
throw new ControlPlaneError('VALIDATION_FAILURE', `Cannot recover run ${parentRunId}: parent route_decision is invalid`);
|
|
643
|
+
}
|
|
644
|
+
const executionProfile = requiredRecord(parentData.execution_profile, 'execution_profile', parentRunId);
|
|
645
|
+
const idSuffix = fnv1a64Hex(`${parentRunId}|${blockedEvent.eventId}`).slice(0, 8);
|
|
646
|
+
return { title, repo, description, scope, priority, role: recoveryRole, playbookId, pipelineId, params, routeDecision, executionProfile, now, idSuffix };
|
|
647
|
+
}
|
|
648
|
+
async createRecoveryRunOrReuseExpected(input, expected) {
|
|
649
|
+
try {
|
|
650
|
+
return await this.runs.createRun(input);
|
|
651
|
+
}
|
|
652
|
+
catch (error) {
|
|
653
|
+
if (!(error instanceof CreateRunWorkflowError))
|
|
654
|
+
throw error;
|
|
655
|
+
const existing = await this.runs.showRun(expected.runId);
|
|
656
|
+
if (existing?.tasks[0])
|
|
657
|
+
return expected;
|
|
658
|
+
throw error;
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
async recordRecoveryLineage(lineage) {
|
|
662
|
+
const [parentDetail, recoveryDetail] = await Promise.all([
|
|
663
|
+
this.runs.showRun(lineage.parentRunId),
|
|
664
|
+
this.runs.showRun(lineage.recoveryRunId),
|
|
665
|
+
]);
|
|
666
|
+
const parentTaskId = parentDetail?.tasks[0]?.taskId ?? '';
|
|
667
|
+
const recoveryTaskId = recoveryDetail?.tasks[0]?.taskId ?? '';
|
|
668
|
+
await this.runs.appendEvent(recoveryLineageEvent(lineage, lineage.parentRunId, parentTaskId, 'run_recovery_created'));
|
|
669
|
+
await this.runs.appendEvent(recoveryLineageEvent(lineage, lineage.recoveryRunId, recoveryTaskId, 'run_recovery_parent'));
|
|
462
670
|
}
|
|
463
671
|
async cancelRun(runId) {
|
|
464
672
|
const result = await this.runs.cancelRun(runId, { actor: 'mcp', source: 'mcp-cancel' });
|
|
@@ -480,7 +688,7 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
|
|
|
480
688
|
};
|
|
481
689
|
}
|
|
482
690
|
getRunEvents(input) {
|
|
483
|
-
return this.runs.listRunEvents(input.runId, { type: input.type, limit: input.limit });
|
|
691
|
+
return this.runs.listRunEvents(input.runId, { type: input.type, limit: input.limit, expand: input.expand });
|
|
484
692
|
}
|
|
485
693
|
async getRunProgress(runId) {
|
|
486
694
|
const detail = await this.runs.showRun(runId);
|
|
@@ -626,17 +834,22 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
|
|
|
626
834
|
const detail = await this.runs.showRun(runId);
|
|
627
835
|
if (!detail)
|
|
628
836
|
throw new ControlPlaneError('ROW_NOT_FOUND', `run not found: ${runId}`);
|
|
629
|
-
const [events, attempts, inbox] = await Promise.all([
|
|
837
|
+
const [events, attempts, inbox, workflow] = await Promise.all([
|
|
630
838
|
this.runs.listRunEvents(runId, { limit: 20 }),
|
|
631
839
|
this.runs.listRunAttempts(runId, { limit: 100 }),
|
|
632
840
|
this.inbox.listInbox({ runId, status: 'pending', limit: 50 }),
|
|
841
|
+
this.dbos.getWorkflowStatus(runId).catch(() => null),
|
|
633
842
|
]);
|
|
843
|
+
const latestBlockingEvent = latestPipelineBlockedEvent(events);
|
|
844
|
+
const blockedReason = latestBlockingEvent ? blockedReasonFromEvent(latestBlockingEvent) : undefined;
|
|
845
|
+
const runStatus = observedRunStatus(detail.run.status, workflow?.status ?? '', events);
|
|
634
846
|
return {
|
|
635
|
-
run: detail.run,
|
|
636
|
-
tasks: detail.tasks,
|
|
847
|
+
run: { ...detail.run, status: runStatus },
|
|
848
|
+
tasks: detail.tasks.map((task) => ({ ...task, status: observedTaskStatus(task.status, runStatus) })),
|
|
637
849
|
pendingInbox: inbox,
|
|
638
850
|
latestEvents: events.slice(-10),
|
|
639
851
|
usage: summarizeAttempts(attempts),
|
|
852
|
+
...(blockedReason !== undefined ? { blockedReason } : {}),
|
|
640
853
|
};
|
|
641
854
|
}
|
|
642
855
|
async waitForRun(input) {
|
|
@@ -650,29 +863,31 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
|
|
|
650
863
|
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
651
864
|
}
|
|
652
865
|
}
|
|
653
|
-
/**
|
|
654
|
-
* Resolve a single run to its actionable state. Public so `RunWatchService` (slice 141 D2) can
|
|
655
|
-
* fan it out across many runs; it is a point-in-time level read (gate = `inbox.find(approval)`),
|
|
656
|
-
* not an event cursor — the watch primitive layers at-least-once + idempotent delivery on top.
|
|
657
|
-
*/
|
|
658
866
|
async resolveRunState(runId) {
|
|
659
867
|
const detail = await this.runs.showRun(runId);
|
|
660
868
|
if (!detail)
|
|
661
869
|
throw new ControlPlaneError('ROW_NOT_FOUND', `run not found: ${runId}`);
|
|
870
|
+
const issueRef = detail.run.issueRef;
|
|
871
|
+
const issueRefPart = issueRef ? { issueRef } : {};
|
|
662
872
|
const [inbox, events, workflow] = await Promise.all([
|
|
663
873
|
this.inbox.listInbox({ runId, status: 'pending', limit: 20 }),
|
|
664
874
|
this.runs.listRunEvents(runId, { limit: 20 }),
|
|
665
875
|
this.dbos.getWorkflowStatus(runId),
|
|
666
876
|
]);
|
|
877
|
+
const workflowStatus = workflow?.status ?? '';
|
|
878
|
+
const runStatus = observedRunStatus(detail.run.status, workflowStatus, events);
|
|
879
|
+
const eventPulsePart = latestEventPulse(events);
|
|
667
880
|
const gate = inbox.find((item) => item.kind === 'approval');
|
|
668
881
|
if (gate) {
|
|
669
882
|
return {
|
|
670
883
|
runId,
|
|
671
884
|
state: 'pending_gate',
|
|
672
885
|
nextAction: 'resolve approval with approve_gate or reject_gate',
|
|
673
|
-
runStatus
|
|
674
|
-
workflowStatus
|
|
886
|
+
runStatus,
|
|
887
|
+
workflowStatus,
|
|
675
888
|
inbox: gate,
|
|
889
|
+
...issueRefPart,
|
|
890
|
+
...eventPulsePart,
|
|
676
891
|
};
|
|
677
892
|
}
|
|
678
893
|
const question = inbox.find((item) => item.kind === 'question');
|
|
@@ -681,46 +896,66 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
|
|
|
681
896
|
runId,
|
|
682
897
|
state: 'question',
|
|
683
898
|
nextAction: 'answer question with answer_question',
|
|
684
|
-
runStatus
|
|
685
|
-
workflowStatus
|
|
899
|
+
runStatus,
|
|
900
|
+
workflowStatus,
|
|
686
901
|
inbox: question,
|
|
902
|
+
...issueRefPart,
|
|
903
|
+
...eventPulsePart,
|
|
687
904
|
};
|
|
688
905
|
}
|
|
689
906
|
if (detail.run.status === 'completed') {
|
|
690
|
-
return { runId, state: 'completed', nextAction: 'none', runStatus
|
|
907
|
+
return { runId, state: 'completed', nextAction: 'none', runStatus, workflowStatus, ...issueRefPart, ...eventPulsePart };
|
|
691
908
|
}
|
|
692
909
|
if (detail.run.status === 'failed') {
|
|
693
|
-
return { runId, state: 'failed', nextAction: 'inspect get_run_events/get_run_log', runStatus
|
|
910
|
+
return { runId, state: 'failed', nextAction: 'inspect get_run_events/get_run_log', runStatus, workflowStatus, ...issueRefPart, ...eventPulsePart };
|
|
694
911
|
}
|
|
695
912
|
if (detail.run.status === 'cancelled') {
|
|
696
|
-
return { runId, state: 'blocked', nextAction: 'run was cancelled; create or resume a different run', runStatus
|
|
913
|
+
return { runId, state: 'blocked', nextAction: 'run was cancelled; create or resume a different run', runStatus, workflowStatus, ...issueRefPart, ...eventPulsePart };
|
|
697
914
|
}
|
|
915
|
+
const blockingEvent = latestPipelineBlockedEvent(events);
|
|
916
|
+
const blockedReason = blockingEvent ? blockedReasonFromEvent(blockingEvent) : undefined;
|
|
698
917
|
if (detail.run.status === 'paused') {
|
|
699
|
-
return {
|
|
918
|
+
return {
|
|
919
|
+
runId,
|
|
920
|
+
state: 'blocked',
|
|
921
|
+
nextAction: 'inspect blocking event and decide whether to create a follow-up run',
|
|
922
|
+
runStatus,
|
|
923
|
+
workflowStatus,
|
|
924
|
+
...(blockedReason !== undefined ? { blockedReason } : {}),
|
|
925
|
+
...issueRefPart,
|
|
926
|
+
...eventPulsePart,
|
|
927
|
+
};
|
|
700
928
|
}
|
|
701
|
-
|
|
702
|
-
if (blocked) {
|
|
929
|
+
if (blockingEvent) {
|
|
703
930
|
return {
|
|
704
931
|
runId,
|
|
705
932
|
state: 'blocked',
|
|
706
933
|
nextAction: 'inspect blocking event and decide whether to create a follow-up run',
|
|
707
|
-
runStatus
|
|
708
|
-
workflowStatus
|
|
709
|
-
latestBlockingEvent:
|
|
934
|
+
runStatus,
|
|
935
|
+
workflowStatus,
|
|
936
|
+
latestBlockingEvent: blockingEvent,
|
|
937
|
+
...(blockedReason !== undefined ? { blockedReason } : {}),
|
|
938
|
+
...issueRefPart,
|
|
939
|
+
...eventPulsePart,
|
|
710
940
|
};
|
|
711
941
|
}
|
|
712
942
|
if (workflow?.status === 'ERROR') {
|
|
713
|
-
return { runId, state: 'failed', nextAction: 'inspect get_run_events/get_run_log', runStatus
|
|
943
|
+
return { runId, state: 'failed', nextAction: 'inspect get_run_events/get_run_log', runStatus, workflowStatus, ...issueRefPart, ...eventPulsePart };
|
|
714
944
|
}
|
|
715
945
|
if (workflow?.status === 'SUCCESS') {
|
|
716
|
-
return { runId, state: 'completed', nextAction: 'none', runStatus
|
|
946
|
+
return { runId, state: 'completed', nextAction: 'none', runStatus, workflowStatus, ...issueRefPart, ...eventPulsePart };
|
|
947
|
+
}
|
|
948
|
+
if (runStatus === 'ready') {
|
|
949
|
+
return { runId, state: 'ready', nextAction: 'start_run', runStatus, workflowStatus, ...issueRefPart, ...eventPulsePart };
|
|
717
950
|
}
|
|
718
951
|
return {
|
|
719
952
|
runId,
|
|
720
953
|
state: 'running',
|
|
721
|
-
nextAction: '
|
|
722
|
-
runStatus
|
|
723
|
-
workflowStatus
|
|
954
|
+
nextAction: 'wait for run state change or inspect get_run_digest',
|
|
955
|
+
runStatus,
|
|
956
|
+
workflowStatus,
|
|
957
|
+
...issueRefPart,
|
|
958
|
+
...eventPulsePart,
|
|
724
959
|
};
|
|
725
960
|
}
|
|
726
961
|
listInbox(filter) {
|
|
@@ -845,6 +1080,20 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
|
|
|
845
1080
|
source: input.pipeline ? 'explicit' : 'deterministic-installed-playbook',
|
|
846
1081
|
});
|
|
847
1082
|
}
|
|
1083
|
+
async previewPipelineSelection(input) {
|
|
1084
|
+
const playbook = await this.playbooks.resolvePlaybook(input.playbookId);
|
|
1085
|
+
const candidatePipelines = (await this.playbooks.listPipelines())
|
|
1086
|
+
.filter((p) => p.playbookId === playbook.id)
|
|
1087
|
+
.sort((a, b) => a.id.localeCompare(b.id));
|
|
1088
|
+
const text = [input.title, input.description, input.scope].filter(Boolean).join(' ');
|
|
1089
|
+
try {
|
|
1090
|
+
const pick = await this.resolveAutoPipeline(playbook.id, text);
|
|
1091
|
+
return { playbookId: playbook.id, candidatePipelines, wouldAutoRoute: { pipelineId: pick.pipelineId, pipelineRowId: pick.id } };
|
|
1092
|
+
}
|
|
1093
|
+
catch (error) {
|
|
1094
|
+
return { playbookId: playbook.id, candidatePipelines, wouldAutoRoute: null, wouldAutoRouteReason: asErrorMessage(error) };
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
848
1097
|
async routeForRun(run) {
|
|
849
1098
|
if (isRouteDecision(run.data.route_decision))
|
|
850
1099
|
return run.data.route_decision;
|
|
@@ -860,7 +1109,7 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
|
|
|
860
1109
|
});
|
|
861
1110
|
}
|
|
862
1111
|
async resolveRouteDecision(input) {
|
|
863
|
-
const params = normalizeParams(input.params);
|
|
1112
|
+
const params = normalizeParams(input.params, input.issueRef);
|
|
864
1113
|
const executionProfile = normalizeExecutionProfile(input.executionProfile);
|
|
865
1114
|
const playbook = await this.playbooks.resolvePlaybook(input.playbookId);
|
|
866
1115
|
const pipeline = input.pipelineId
|
|
@@ -905,10 +1154,6 @@ let TaskControlPlaneApiService = class TaskControlPlaneApiService {
|
|
|
905
1154
|
async resolveRouteRoles(playbookId, pipeline, executionProfile) {
|
|
906
1155
|
const roles = (await this.roles.listRoles()).filter((role) => role.playbookId === playbookId);
|
|
907
1156
|
const byPlaybookRole = new Map(roles.map((role) => [role.playbookRoleId || role.name, role]));
|
|
908
|
-
// The route selects WHICH roles a pipeline binds (capability handles the data-driven engine
|
|
909
|
-
// resolves). Order is no longer load-bearing — the data-driven template owns node sequencing — so
|
|
910
|
-
// alternative-group selections simply append (the old `insertBeforeFirstDeveloperRole` phase-order
|
|
911
|
-
// hardcode is removed with the rest of the hardcoded engine, plan 0015 slice 3).
|
|
912
1157
|
const selected = [...pipeline.requiredRoles];
|
|
913
1158
|
for (const group of pipeline.alternativeRoles) {
|
|
914
1159
|
const match = group.roles.find((roleId) => byPlaybookRole.has(roleId));
|