@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":"seed-default-playbook.js","sourceRoot":"","sources":["../../src/control-plane/seed-default-playbook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"seed-default-playbook.js","sourceRoot":"","sources":["../../src/control-plane/seed-default-playbook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Step types + deterministic id / format helpers for the control plane.
|
|
3
|
-
*
|
|
4
|
-
* NOTE: the legacy step-lifecycle verbs (`claimNextStep`/`startAttempt`/`writeResult`/`failStep`/
|
|
5
|
-
* `recoverInFlight`/`createSteps`) were the pre-pivot dumb-loop step queue. They are superseded by the
|
|
6
|
-
* DBOS-driven data-driven engine and were removed (audit §2.1). What remains here is the `Step` shape the
|
|
7
|
-
* runner machinery still consumes (synthesized in-memory by the engine — `RunService.loadPipelineContext` —
|
|
8
|
-
* not read from a `steps` row) plus a few pure id / format helpers reused across the run / inbox / pipeline
|
|
9
|
-
* layers.
|
|
10
|
-
*/
|
|
11
|
-
// ─── id / format helpers ─────────────────────────────────────
|
|
12
1
|
export function compactStamp(date) {
|
|
13
2
|
const pad = (v, l = 2) => String(v).padStart(l, '0');
|
|
14
3
|
return [
|
|
@@ -23,10 +12,6 @@ export function compactStamp(date) {
|
|
|
23
12
|
'Z',
|
|
24
13
|
].join('');
|
|
25
14
|
}
|
|
26
|
-
// Non-cryptographic FNV-1a 64-bit hash → 16 hex chars. Used to derive DETERMINISTIC, BOUNDED row ids
|
|
27
|
-
// (same input → same id, so a crash-retry is idempotent) that fit Revisium's 64-char rowId limit:
|
|
28
|
-
// `inbox_`/`event_`/`cost_`/`attempt_`/`out_`/`step_` + 16 hex stays well under the cap. Not crypto, so
|
|
29
|
-
// it does not trip the weak-hash security hotspot.
|
|
30
15
|
export function fnv1a64Hex(input) {
|
|
31
16
|
let hash = 0xcbf29ce484222325n;
|
|
32
17
|
const prime = 0x100000001b3n;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/control-plane/steps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/control-plane/steps.ts"],"names":[],"mappings":"AAmDA,MAAM,UAAU,YAAY,CAAC,IAAU;IACrC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7D,OAAO;QACL,IAAI,CAAC,cAAc,EAAE;QACrB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,GAAG;QACH,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACjC,GAAG;KACJ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,IAAI,GAAG,mBAAmB,CAAC;IAC/B,MAAM,KAAK,GAAG,cAAc,CAAC;IAC7B,MAAM,IAAI,GAAG,mBAAmB,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,IAAI,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAU;IAC9B,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
package/dist/e2e/kit/agents.js
CHANGED
|
@@ -1,27 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { writeFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import { getConfig } from '../../config.js';
|
|
4
|
-
import { worktreePathFor, worktreeMarkerFor, isWorktreeDir } from '../../control-plane/resolve-cwd.js';
|
|
5
3
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* Anti-masking write dir: parse the `Repo:` path from the agent context string, which build-context
|
|
5
|
+
* sets to the run's isolated worktree for live runs (slice 143). Writing to the GIVEN path (not a
|
|
6
|
+
* locally recomputed worktree path) means a regression in build-context's worktree rewrite surfaces
|
|
7
|
+
* immediately — the developer writes to the base checkout, the worktree stays empty, and the integrator
|
|
8
|
+
* blocks with the slice-143 lesson.
|
|
10
9
|
*/
|
|
11
|
-
export function resolveWriteDir(
|
|
10
|
+
export function resolveWriteDir(registered, context) {
|
|
12
11
|
if (!registered)
|
|
13
12
|
return undefined;
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// Mirror resolveRunCwd's fail-loud: a live marker with no worktree means isolation broke — refuse to
|
|
19
|
-
// dirty the shared base checkout (which would mask the failure) rather than silently falling back.
|
|
20
|
-
if (existsSync(worktreeMarkerFor(dataDir, runId))) {
|
|
21
|
-
throw new Error(`fake developer: live run ${runId} expects an isolated worktree at ${wt} but it is missing — ` +
|
|
22
|
-
`refusing to write into the shared base checkout`);
|
|
23
|
-
}
|
|
24
|
-
return registered;
|
|
13
|
+
const match = /^Repo: (.+)$/m.exec(context);
|
|
14
|
+
if (!match)
|
|
15
|
+
return undefined;
|
|
16
|
+
return match[1].trim();
|
|
25
17
|
}
|
|
26
18
|
function pickBehavior(spec, role, callIndex) {
|
|
27
19
|
const entry = spec.byRole?.[role];
|
|
@@ -36,7 +28,7 @@ function runBehavior(behavior, ctx, sink) {
|
|
|
36
28
|
if (behavior.kind === 'throw') {
|
|
37
29
|
throw new Error(behavior.message ?? `scripted failure from ${ctx.logicalRole}`);
|
|
38
30
|
}
|
|
39
|
-
const writeRepo = ctx.logicalRole === 'developer' ? resolveWriteDir(
|
|
31
|
+
const writeRepo = ctx.logicalRole === 'developer' ? resolveWriteDir(sink.developerWrites.get(ctx.runId), ctx.context) : undefined;
|
|
40
32
|
if (writeRepo && behavior.kind !== 'needsHuman') {
|
|
41
33
|
writeFileSync(join(writeRepo, `developer-${ctx.attemptId}.txt`), `change from ${ctx.attemptId}\n`);
|
|
42
34
|
}
|
|
@@ -78,6 +70,7 @@ export function scriptedAgent(spec, sink) {
|
|
|
78
70
|
attemptId,
|
|
79
71
|
runId: step.runId,
|
|
80
72
|
level: profile.level,
|
|
73
|
+
context,
|
|
81
74
|
}, sink);
|
|
82
75
|
};
|
|
83
76
|
}
|
|
@@ -101,6 +94,7 @@ export function routedScriptedAgent(specs, sink) {
|
|
|
101
94
|
attemptId,
|
|
102
95
|
runId: step.runId,
|
|
103
96
|
level: profile.level,
|
|
97
|
+
context,
|
|
104
98
|
}, sink);
|
|
105
99
|
};
|
|
106
100
|
}
|
|
@@ -116,7 +110,7 @@ export function deterministicAgent(agentCalls, developerWrites) {
|
|
|
116
110
|
return async ({ role, profile, attemptId, step, context }) => {
|
|
117
111
|
const logicalRole = role.playbookRoleId ?? role.name;
|
|
118
112
|
agentCalls.push({ role: logicalRole, runner: role.runner, attemptId, runId: step.runId, context });
|
|
119
|
-
const writeRepo = logicalRole === 'developer' ? resolveWriteDir(
|
|
113
|
+
const writeRepo = logicalRole === 'developer' ? resolveWriteDir(developerWrites.get(step.runId), context) : undefined;
|
|
120
114
|
if (writeRepo) {
|
|
121
115
|
writeFileSync(join(writeRepo, `developer-${attemptId}.txt`), `change from ${attemptId}\n`);
|
|
122
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/e2e/kit/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/e2e/kit/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,16 +34,20 @@ export async function assertEventsPresent(api, runId, types) {
|
|
|
34
34
|
await new Promise((resolve) => setTimeout(resolve, 250));
|
|
35
35
|
events = await api.getRunEvents({ runId, limit: 500 });
|
|
36
36
|
}
|
|
37
|
-
// Deterministic fallback for
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
// Deterministic fallback for terminal events: under load the run-row status can become visible before
|
|
38
|
+
// the event query sees the terminal event. The run STATUS is the authoritative signal observed by
|
|
39
|
+
// terminal waiters, so accept matching terminal statuses after the event poll.
|
|
40
|
+
let terminalStatus = '';
|
|
41
|
+
const terminalFallbacks = new Map([
|
|
42
|
+
['run_completed', 'completed'],
|
|
43
|
+
['run_failed', 'failed'],
|
|
44
|
+
]);
|
|
45
|
+
if (types.some((type) => terminalFallbacks.has(type) && !events.some((e) => e.type === type))) {
|
|
46
|
+
terminalStatus = (await api.getRun({ runId })).run.status;
|
|
44
47
|
}
|
|
45
48
|
for (const type of types) {
|
|
46
|
-
|
|
49
|
+
const fallbackStatus = terminalFallbacks.get(type);
|
|
50
|
+
if (fallbackStatus && terminalStatus === fallbackStatus)
|
|
47
51
|
continue;
|
|
48
52
|
assert.ok(events.some((e) => e.type === type), `event "${type}" must be visible`);
|
|
49
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../../src/e2e/kit/assertions.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAGxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAI7E,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAQ,EAAE,KAAa;IAC3D,oGAAoG;IACpG,qGAAqG;IACrG,qFAAqF;IACrF,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC;QACxF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAQ,EAAE,KAAa,EAAE,QAAkB;IACrF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,EAAE,sCAAsC,CAAC,CAAC;IACvH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;2GAI2G;AAC3G,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAQ,EAAE,KAAa,EAAE,KAAe;IAChF,sGAAsG;IACtG,+FAA+F;IAC/F,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;IACnF,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC;QAC3E,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,
|
|
1
|
+
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../../src/e2e/kit/assertions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { integrate, confirmMerge, preflightLive, pollPr, respondThreads, asTriage, stubIntegrate, } from '../../runners/integrator.js';
|
|
1
|
+
import { integrate, confirmMerge, preflightLive, pollPr, respondThreads, captureProducedChange, asTriage, stubIntegrate, } from '../../runners/integrator.js';
|
|
2
2
|
import { execGit } from './git-target-repo.js';
|
|
3
3
|
/**
|
|
4
4
|
* Build an `IntegratorService`-shaped object wired to the real `integrate`/`preflightLive`/
|
|
@@ -21,10 +21,18 @@ export function createFakeIntegrator(runs, execGh) {
|
|
|
21
21
|
runConfirmMerge: (input) => confirmMerge(input, deps),
|
|
22
22
|
runConfirmStub: (input) => ({ merged: true, prNumber: 0, prUrl: `stub://pr/${input.taskId}/merged` }),
|
|
23
23
|
runPreflight: (taskId, base) => preflightLive(taskId, base, deps),
|
|
24
|
+
runCaptureProducedChange: (input) => captureProducedChange(input, deps),
|
|
24
25
|
// plan 0018 — pollPr/respondThreads against the fake gh. pollPr's sleep is a no-op + a small poll cap
|
|
25
26
|
// so the e2e gh emulator converges fast (CI/threads flip deterministically per call).
|
|
26
27
|
runPollPr: (input) => pollPr(input, { ...deps, sleep: () => Promise.resolve(), maxPolls: 30 }),
|
|
27
|
-
runPollStub: (_input) => ({
|
|
28
|
+
runPollStub: (_input) => ({
|
|
29
|
+
prNumber: null,
|
|
30
|
+
headSha: 'stub',
|
|
31
|
+
evidence: ['stub pollPr readiness: clean'],
|
|
32
|
+
verdict: 'clean',
|
|
33
|
+
ciFailures: [],
|
|
34
|
+
reviewThreads: [],
|
|
35
|
+
}),
|
|
28
36
|
runRespondThreads: (input) => respondThreads(asTriage(input.triage), deps),
|
|
29
37
|
runRespondStub: (_input) => ({ replied: 0, resolved: 0 }),
|
|
30
38
|
};
|
|
@@ -48,6 +56,7 @@ export function routedIntegrator(outcomes, base) {
|
|
|
48
56
|
runConfirmMerge: base.runConfirmMerge,
|
|
49
57
|
runConfirmStub: base.runConfirmStub,
|
|
50
58
|
runPreflight: base.runPreflight,
|
|
59
|
+
runCaptureProducedChange: base.runCaptureProducedChange,
|
|
51
60
|
runPollPr: base.runPollPr,
|
|
52
61
|
runPollStub: base.runPollStub,
|
|
53
62
|
runRespondThreads: base.runRespondThreads,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-integrator.js","sourceRoot":"","sources":["../../../src/e2e/kit/fake-integrator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,aAAa,EACb,MAAM,EACN,cAAc,EACd,QAAQ,EACR,aAAa,
|
|
1
|
+
{"version":3,"file":"fake-integrator.js","sourceRoot":"","sources":["../../../src/e2e/kit/fake-integrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -73,7 +73,7 @@ export const execGit = (args, cwd) => {
|
|
|
73
73
|
};
|
|
74
74
|
/**
|
|
75
75
|
* Create a throwaway bare+worktree git repo with one initial commit pushed to `origin/master`.
|
|
76
|
-
* Pass a {@link TargetRepoState} to leave it in a state
|
|
76
|
+
* Pass a {@link TargetRepoState} to leave it in a state required by an e2e scenario.
|
|
77
77
|
*/
|
|
78
78
|
export function createTargetRepo(state = {}) {
|
|
79
79
|
const root = mkdtempSync(join(tmpdir(), 'revo-e2e-target-'));
|
|
@@ -1,38 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DbosService — the engine layer owns all @dbos-inc/dbos-sdk imports.
|
|
3
|
-
*
|
|
4
|
-
* This file (`dbos.service.ts`) is the primary importer; `engine/types.ts` re-exports
|
|
5
|
-
* type-only symbols (`WorkflowHandle`) so pipeline callers can annotate return types
|
|
6
|
-
* without importing from @dbos-inc directly. `src/pipeline/*` must import ZERO @dbos-inc.
|
|
7
|
-
*
|
|
8
|
-
* Owns DBOS lifecycle (setConfig / launch / shutdown) and thin verbs
|
|
9
|
-
* (startPingWorkflow / getWorkflowStatus / waitForWorkflow).
|
|
10
|
-
*
|
|
11
|
-
* Seam pattern: `dev:ping` is a two-step workflow registered as instance methods
|
|
12
|
-
* via DBOS.registerWorkflow / DBOS.registerStep (programmatic, decorator-free).
|
|
13
|
-
* Registration happens in the constructor, BEFORE DBOS.launch() — required by DBOS
|
|
14
|
-
* (workflows not registered before launch() are not eligible for recovery).
|
|
15
|
-
*
|
|
16
|
-
* ── Confirmed SDK symbols (Task 0, @dbos-inc/dbos-sdk@4.19.8) ──────────────
|
|
17
|
-
* DBOSConfig.systemDatabaseUrl ✓ (ТЗ expected systemDatabaseUrl — CONFIRMED)
|
|
18
|
-
* DBOS.setConfig(config) ✓
|
|
19
|
-
* DBOS.launch() ✓
|
|
20
|
-
* DBOS.shutdown() ✓
|
|
21
|
-
* DBOS.registerWorkflow(fn, cfg) ✓ returns wrapped fn with same signature
|
|
22
|
-
* DBOS.registerStep(fn, cfg) ✓ returns wrapped fn with same signature
|
|
23
|
-
* DBOS.startWorkflow(fn, params) ✓ params.workflowID ✓; returns fn(args)=>handle
|
|
24
|
-
* DBOS.getWorkflowStatus(id) ✓ returns WorkflowStatus | null
|
|
25
|
-
* DBOS.retrieveWorkflow(id) ✓ returns WorkflowHandle<T>; handle.getResult() ✓
|
|
26
|
-
* DBOS.sleep(ms) ✓
|
|
27
|
-
* ConfiguredInstance ✓ (fallback path — not used; registerWorkflow used instead)
|
|
28
|
-
*
|
|
29
|
-
* ── Recovery seam ───────────────────────────────────────────────────────────
|
|
30
|
-
* On restart, DBOS.launch() auto-recovers in-flight workflows by name+className.
|
|
31
|
-
* registerWorkflow(boundFn, { name, className }) supplies stable names so DBOS
|
|
32
|
-
* can bind back to the freshly-DI-constructed DbosService singleton.
|
|
33
|
-
* If M3 (kill-mid-step test) shows recovery fails to re-bind, switch to
|
|
34
|
-
* ConfiguredInstance (documented fallback; both paths concrete — OQ-1b).
|
|
35
|
-
*/
|
|
36
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
37
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
38
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -47,42 +12,29 @@ import { Injectable } from '@nestjs/common';
|
|
|
47
12
|
import { DBOS, WorkflowQueue } from '@dbos-inc/dbos-sdk';
|
|
48
13
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
49
14
|
import { dirname } from 'node:path';
|
|
50
|
-
|
|
51
|
-
* Far-future absolute deadline (year 2100 epoch ms). Fixed constant ⇒ deterministic on replay (G5).
|
|
52
|
-
* DBOS recv with no timeout/deadline defaults to 60 s; we pass this so human gates wait indefinitely.
|
|
53
|
-
* Never use Date.now()+X — that differs per replay and breaks DBOS replay-safety.
|
|
54
|
-
*/
|
|
55
|
-
export const GATE_DEADLINE_EPOCH_MS = 4102444800000; // 2100-01-01T00:00:00Z
|
|
56
|
-
/**
|
|
57
|
-
* Bound on how long DBOS.shutdown() may block before the host detaches anyway (0008 #3).
|
|
58
|
-
* DBOS.shutdown() drains "pending workflows" — but a workflow PARKED at a human gate
|
|
59
|
-
* (DBOS.recv) never drains, so app.close() hangs forever after `run start --wait` detaches.
|
|
60
|
-
* The durable state lives in Postgres and is recovered on the next launch(), so abandoning
|
|
61
|
-
* the in-memory drain after this bound loses no durability — it only lets the CLI exit 0.
|
|
62
|
-
*/
|
|
15
|
+
export const GATE_DEADLINE_EPOCH_MS = 4102444800000;
|
|
63
16
|
export const SHUTDOWN_DRAIN_TIMEOUT_MS = 8_000;
|
|
17
|
+
export function resolveShutdownDrainTimeoutMs(env = process.env) {
|
|
18
|
+
const value = env['REVO_SHUTDOWN_DRAIN_TIMEOUT_MS']?.trim();
|
|
19
|
+
if (!value)
|
|
20
|
+
return SHUTDOWN_DRAIN_TIMEOUT_MS;
|
|
21
|
+
const raw = Number(value);
|
|
22
|
+
return Number.isFinite(raw) && raw > 0 ? raw : SHUTDOWN_DRAIN_TIMEOUT_MS;
|
|
23
|
+
}
|
|
64
24
|
let DbosService = class DbosService {
|
|
65
25
|
static { DbosService_1 = this; }
|
|
66
26
|
static launched = false;
|
|
67
27
|
static launchPromise = null;
|
|
68
28
|
static configured = null;
|
|
69
|
-
/** Registered WorkflowQueues — guarded map to ensure idempotent registration. */
|
|
70
29
|
static queues = new Map();
|
|
71
30
|
static queueOptions = new Map();
|
|
72
31
|
static steps = new Map();
|
|
73
32
|
static workflows = new Map();
|
|
74
|
-
// Registered DBOS functions — assigned in constructor before launch().
|
|
75
33
|
pingWorkflow;
|
|
76
34
|
markStep;
|
|
77
35
|
sleepStep;
|
|
78
36
|
constructor() {
|
|
79
|
-
// Register steps first (workflows may call them; all must be registered before launch).
|
|
80
37
|
this.markStep = this.registerStep('DbosService.markStep', async function markStepImpl(workflowID, markerFile) {
|
|
81
|
-
// Idempotent marker (F12): write exactly-once per workflowID by using 'wx' (exclusive
|
|
82
|
-
// create). If the file already exists (step re-executed after a crash-before-checkpoint),
|
|
83
|
-
// writeFileSync throws with EEXIST — we catch that and skip the write, ensuring the
|
|
84
|
-
// marker count is always 1 for a given workflow id regardless of how many times the
|
|
85
|
-
// step body runs.
|
|
86
38
|
mkdirSync(dirname(markerFile), { recursive: true });
|
|
87
39
|
try {
|
|
88
40
|
writeFileSync(markerFile, `${workflowID}\t${new Date().toISOString()}\n`, { flag: 'wx' });
|
|
@@ -90,7 +42,6 @@ let DbosService = class DbosService {
|
|
|
90
42
|
catch (err) {
|
|
91
43
|
if (err.code !== 'EEXIST')
|
|
92
44
|
throw err;
|
|
93
|
-
// EEXIST: marker already written by a prior execution — skip (idempotent).
|
|
94
45
|
}
|
|
95
46
|
const content = existsSync(markerFile) ? readFileSync(markerFile, 'utf8') : '';
|
|
96
47
|
return content.split('\n').filter((l) => l.trim() !== '').length;
|
|
@@ -98,9 +49,6 @@ let DbosService = class DbosService {
|
|
|
98
49
|
this.sleepStep = this.registerStep('DbosService.sleepStep', async function sleepStepImpl(ms) {
|
|
99
50
|
await DBOS.sleep(ms);
|
|
100
51
|
});
|
|
101
|
-
// Register the workflow (uses bound steps).
|
|
102
|
-
// Capture step references via .bind(this) so DBOS sees stable registered functions,
|
|
103
|
-
// not closures that close over `this` directly (avoids S7740 "do not assign this to self").
|
|
104
52
|
const markStepBound = this.markStep.bind(this);
|
|
105
53
|
const sleepStepBound = this.sleepStep.bind(this);
|
|
106
54
|
this.pingWorkflow = this.registerWorkflow('DbosService.pingImpl', async function pingImpl(workflowID, sleepMs, markerFile) {
|
|
@@ -109,21 +57,6 @@ let DbosService = class DbosService {
|
|
|
109
57
|
return { workflowID, markerCount };
|
|
110
58
|
});
|
|
111
59
|
}
|
|
112
|
-
// ── Generic engine verbs (M1 — DBOS seal, TASK 0003) ───────────────────────
|
|
113
|
-
//
|
|
114
|
-
// `src/pipeline/*` imports NO `@dbos-inc/dbos-sdk`. These verbs expose the minimal
|
|
115
|
-
// surface needed for the pipeline module: register a step/workflow (returns the
|
|
116
|
-
// DBOS-wrapped fn with the same signature), register a queue (idempotent), and enqueue
|
|
117
|
-
// a workflow by ID + queue name.
|
|
118
|
-
//
|
|
119
|
-
// `name` format: 'ClassName.methodName' — split on the LAST dot to fill DBOS's
|
|
120
|
-
// { name, className } (matching how dev:ping uses { name:'pingImpl', className:'DbosService' }).
|
|
121
|
-
// Stable across releases — the recovery seam binds on name+className.
|
|
122
|
-
/**
|
|
123
|
-
* Register a plain async function as a DBOS step.
|
|
124
|
-
* Returns the DBOS-wrapped function with the same call signature.
|
|
125
|
-
* Call in the consumer's constructor, BEFORE DBOS.launch().
|
|
126
|
-
*/
|
|
127
60
|
registerStep(name, fn) {
|
|
128
61
|
const cached = DbosService_1.steps.get(name);
|
|
129
62
|
if (cached)
|
|
@@ -135,11 +68,6 @@ let DbosService = class DbosService {
|
|
|
135
68
|
DbosService_1.steps.set(name, registered);
|
|
136
69
|
return registered;
|
|
137
70
|
}
|
|
138
|
-
/**
|
|
139
|
-
* Register a plain async function as a DBOS workflow.
|
|
140
|
-
* Returns the DBOS-wrapped function with the same call signature.
|
|
141
|
-
* Call in the consumer's constructor, BEFORE DBOS.launch().
|
|
142
|
-
*/
|
|
143
71
|
registerWorkflow(name, fn) {
|
|
144
72
|
const cached = DbosService_1.workflows.get(name);
|
|
145
73
|
if (cached)
|
|
@@ -151,11 +79,6 @@ let DbosService = class DbosService {
|
|
|
151
79
|
DbosService_1.workflows.set(name, registered);
|
|
152
80
|
return registered;
|
|
153
81
|
}
|
|
154
|
-
/**
|
|
155
|
-
* Construct and register a WorkflowQueue (idempotent — Map-guarded).
|
|
156
|
-
* The ONLY place `new WorkflowQueue(...)` is called, keeping @dbos-inc inside this file.
|
|
157
|
-
* Call before DBOS.launch().
|
|
158
|
-
*/
|
|
159
82
|
registerQueue(name, opts) {
|
|
160
83
|
const existing = DbosService_1.queueOptions.get(name);
|
|
161
84
|
if (existing) {
|
|
@@ -168,71 +91,33 @@ let DbosService = class DbosService {
|
|
|
168
91
|
DbosService_1.queues.set(name, new WorkflowQueue(name, opts));
|
|
169
92
|
DbosService_1.queueOptions.set(name, { ...opts });
|
|
170
93
|
}
|
|
171
|
-
/**
|
|
172
|
-
* Enqueue a registered workflow with a stable workflowID and queue name.
|
|
173
|
-
* Idempotent by workflowID: if a workflow with the same id already exists, DBOS returns
|
|
174
|
-
* a handle to the existing workflow and does NOT start a second run.
|
|
175
|
-
*
|
|
176
|
-
* Generic over the workflow's arg tuple A so it accepts any registered fn signature.
|
|
177
|
-
*
|
|
178
|
-
* @param fn - The DBOS-wrapped workflow function (returned by registerWorkflow).
|
|
179
|
-
* @param workflowID - Stable dedup key (e.g. the runId).
|
|
180
|
-
* @param queueName - Name of the queue to enqueue on.
|
|
181
|
-
* @param args - Arguments forwarded to the workflow (persisted as durable input).
|
|
182
|
-
*/
|
|
183
94
|
startWorkflowOn(fn, workflowID, queueName, ...args) {
|
|
184
95
|
return DBOS.startWorkflow(fn, { workflowID, queueName })(...args);
|
|
185
96
|
}
|
|
186
|
-
/**
|
|
187
|
-
* Signal a parked workflow's awaitDecision. Wraps DBOS.send; exactly-once via idempotencyKey.
|
|
188
|
-
*
|
|
189
|
-
* CANONICAL wrapper arg order: signal(workflowId, topic, payload, idempotencyKey).
|
|
190
|
-
* The wrapper REORDERS to DBOS's raw order INSIDE:
|
|
191
|
-
* wrapper (workflowId, topic, payload) → DBOS.send(workflowId, payload, topic, idempotencyKey).
|
|
192
|
-
* Every call site MUST use the wrapper order (topic BEFORE payload); the raw DBOS swap lives
|
|
193
|
-
* ONLY here so it cannot be reintroduced at a call site (G9).
|
|
194
|
-
*/
|
|
195
97
|
signal(workflowId, topic, payload, idempotencyKey) {
|
|
196
|
-
// REORDER: wrapper (workflowId, topic, payload) → raw send(destinationID, message, topic, idempotencyKey).
|
|
197
98
|
return DBOS.send(workflowId, payload, topic, idempotencyKey);
|
|
198
99
|
}
|
|
199
|
-
/**
|
|
200
|
-
* Durable human wait — MUST be called from inside a registered workflow body.
|
|
201
|
-
* Default DBOS recv timeout is 60 s; pass a far-future deadline so the gate waits indefinitely.
|
|
202
|
-
* The deadline is a fixed constant (GATE_DEADLINE_EPOCH_MS), never Date.now()+X — that would
|
|
203
|
-
* differ per replay and break DBOS replay-safety (G5).
|
|
204
|
-
*/
|
|
205
100
|
awaitDecision(topic, opts) {
|
|
206
101
|
return DBOS.recv(topic, { deadlineEpochMS: opts?.deadlineEpochMS ?? GATE_DEADLINE_EPOCH_MS });
|
|
207
102
|
}
|
|
208
103
|
setEvent(key, value) {
|
|
209
104
|
return DBOS.setEvent(key, value);
|
|
210
105
|
}
|
|
106
|
+
sleep(ms) {
|
|
107
|
+
return DBOS.sleep(ms);
|
|
108
|
+
}
|
|
211
109
|
getEvent(workflowID, key, opts) {
|
|
212
110
|
return DBOS.getEvent(workflowID, key, opts);
|
|
213
111
|
}
|
|
214
|
-
/**
|
|
215
|
-
* Write a DBOS stream record. Valid from workflow bodies and DBOS steps; unlike setEvent,
|
|
216
|
-
* this is intentionally safe for the step-side agent observability bridge.
|
|
217
|
-
*/
|
|
218
112
|
writeStream(key, value) {
|
|
219
113
|
return DBOS.writeStream(key, value);
|
|
220
114
|
}
|
|
221
|
-
/**
|
|
222
|
-
* Close a DBOS stream. DBOS 4.19 only permits close from a workflow body, so step-side
|
|
223
|
-
* reporters must not call this after an attempt.
|
|
224
|
-
*/
|
|
225
115
|
closeStream(key) {
|
|
226
116
|
return DBOS.closeStream(key);
|
|
227
117
|
}
|
|
228
118
|
readStream(workflowID, key) {
|
|
229
119
|
return DBOS.readStream(workflowID, key);
|
|
230
120
|
}
|
|
231
|
-
// ── end generic engine verbs ────────────────────────────────────────────────
|
|
232
|
-
/**
|
|
233
|
-
* Configure DBOS with the pid-proven system database URL.
|
|
234
|
-
* Must be called before launch().
|
|
235
|
-
*/
|
|
236
121
|
setConfig(systemDatabaseUrl, options = {}) {
|
|
237
122
|
const nextConfig = { systemDatabaseUrl, logLevel: options.logLevel };
|
|
238
123
|
if (DbosService_1.configured) {
|
|
@@ -244,8 +129,6 @@ let DbosService = class DbosService {
|
|
|
244
129
|
throw new Error('Cannot reconfigure DBOS after launch.');
|
|
245
130
|
}
|
|
246
131
|
}
|
|
247
|
-
// Admin server is unused (cancel patches a Revisium row, not the DBOS admin API); disabling it
|
|
248
|
-
// frees port 3001 so multiple profiles/hosts coexist without an admin-bind collision (ADR 0006).
|
|
249
132
|
DBOS.setConfig({
|
|
250
133
|
name: 'agent-orchestrator',
|
|
251
134
|
systemDatabaseUrl,
|
|
@@ -254,10 +137,6 @@ let DbosService = class DbosService {
|
|
|
254
137
|
});
|
|
255
138
|
DbosService_1.configured = nextConfig;
|
|
256
139
|
}
|
|
257
|
-
/**
|
|
258
|
-
* Launch DBOS (idempotent — guarded by `launched` flag).
|
|
259
|
-
* Auto-recovers in-flight workflows.
|
|
260
|
-
*/
|
|
261
140
|
async launch() {
|
|
262
141
|
if (DbosService_1.launched)
|
|
263
142
|
return;
|
|
@@ -274,29 +153,15 @@ let DbosService = class DbosService {
|
|
|
274
153
|
DbosService_1.launchPromise = null;
|
|
275
154
|
}
|
|
276
155
|
}
|
|
277
|
-
|
|
278
|
-
* Shut down DBOS (no-op if never launched — E9).
|
|
279
|
-
*
|
|
280
|
-
* 0008 #3 (shutdown-hang): DBOS.shutdown() awaits in-flight workflows to drain. A workflow
|
|
281
|
-
* PARKED at a human gate (DBOS.recv) never drains, so after `run start --wait` detaches at a
|
|
282
|
-
* gate, app.close() → this → DBOS.shutdown() blocks indefinitely and the CLI never exits.
|
|
283
|
-
* We race the drain against SHUTDOWN_DRAIN_TIMEOUT_MS: on timeout we stop awaiting and let the
|
|
284
|
-
* host detach. Durability is preserved — the parked workflow's state is checkpointed in
|
|
285
|
-
* Postgres and is recovered on the next launch(); abandoning the in-memory drain loses nothing.
|
|
286
|
-
*
|
|
287
|
-
* @param timeoutMs - drain bound (default SHUTDOWN_DRAIN_TIMEOUT_MS); pass 0/Infinity to disable.
|
|
288
|
-
*/
|
|
289
|
-
async shutdown(timeoutMs = SHUTDOWN_DRAIN_TIMEOUT_MS) {
|
|
156
|
+
async shutdown(timeoutMs = resolveShutdownDrainTimeoutMs()) {
|
|
290
157
|
if (!DbosService_1.launched)
|
|
291
158
|
return;
|
|
292
|
-
// Mark not-launched up front so a timed-out drain cannot leave a re-entrant launch confused.
|
|
293
159
|
DbosService_1.launched = false;
|
|
294
160
|
const drain = DBOS.shutdown();
|
|
295
161
|
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
296
162
|
await drain;
|
|
297
163
|
return;
|
|
298
164
|
}
|
|
299
|
-
// Swallow a late drain rejection so a post-detach failure never crashes the exiting host.
|
|
300
165
|
void drain.catch(() => undefined);
|
|
301
166
|
let timer;
|
|
302
167
|
const drained = await Promise.race([
|
|
@@ -312,48 +177,16 @@ let DbosService = class DbosService {
|
|
|
312
177
|
'detaching — durable state is preserved and recovered on next launch.');
|
|
313
178
|
}
|
|
314
179
|
}
|
|
315
|
-
/**
|
|
316
|
-
* Start the dev:ping durable workflow.
|
|
317
|
-
*
|
|
318
|
-
* CR3: The effective workflow ID is decided in ONE place (the CLI layer — dev.ts) and
|
|
319
|
-
* must always be non-empty before calling this method. This keeps StartWorkflowParams
|
|
320
|
-
* and the workflow args consistent: both see the same stable, non-empty id, so
|
|
321
|
-
* PingResult.workflowID and marker identity are never empty.
|
|
322
|
-
*
|
|
323
|
-
* @param workflowID - Stable, non-empty id (sanitized by the caller — CR1/CR3).
|
|
324
|
-
* @param sleepMs - Duration of step2 sleep (default 15 000 ms).
|
|
325
|
-
* @param markerFile - Path to the durable marker file written by step1.
|
|
326
|
-
*/
|
|
327
180
|
async startPingWorkflow(workflowID, sleepMs, markerFile) {
|
|
328
181
|
return DBOS.startWorkflow(this.pingWorkflow, { workflowID })(workflowID, sleepMs, markerFile);
|
|
329
182
|
}
|
|
330
|
-
/**
|
|
331
|
-
* Get the current status of a workflow by id.
|
|
332
|
-
*/
|
|
333
183
|
getWorkflowStatus(id) {
|
|
334
184
|
return DBOS.getWorkflowStatus(id);
|
|
335
185
|
}
|
|
336
|
-
/**
|
|
337
|
-
* Recover-and-wait: retrieve an existing workflow handle and await its result.
|
|
338
|
-
* Used by `dev:status <id>` — the resume-test command (E10, F2).
|
|
339
|
-
* `DBOS.retrieveWorkflow()` always returns a handle even if the workflow does not exist yet.
|
|
340
|
-
*
|
|
341
|
-
* @deprecated Use `waitForWorkflowResult<T>` for typed workflows. Kept for ping backward compat.
|
|
342
|
-
*/
|
|
343
186
|
async waitForWorkflow(id) {
|
|
344
187
|
const handle = DBOS.retrieveWorkflow(id);
|
|
345
188
|
return handle.getResult();
|
|
346
189
|
}
|
|
347
|
-
/**
|
|
348
|
-
* Generic recover-and-wait: retrieve a workflow handle by id and await its typed result.
|
|
349
|
-
* Used by `run start` to await workflow completion (C2 fix — so the CLI process does not
|
|
350
|
-
* close before the workflow finishes). Also used for crash-resume: re-running `run start <id>`
|
|
351
|
-
* re-attaches to the existing handle and waits for it to finish — not a double-enqueue.
|
|
352
|
-
*
|
|
353
|
-
* `DBOS.retrieveWorkflow()` always returns a handle (even for a workflow that does not exist yet),
|
|
354
|
-
* so callers should confirm the workflow exists (via `getWorkflowStatus`) before calling this if
|
|
355
|
-
* they want to distinguish "not found" from "in progress".
|
|
356
|
-
*/
|
|
357
190
|
async waitForWorkflowResult(id) {
|
|
358
191
|
const handle = DBOS.retrieveWorkflow(id);
|
|
359
192
|
return handle.getResult();
|