@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
|
@@ -14,30 +14,13 @@ import { Injectable, Inject } from '@nestjs/common';
|
|
|
14
14
|
import { createControlPlaneDataAccessForTransport } from '../control-plane/data-access.js';
|
|
15
15
|
import { pushInbox, listInbox, getInbox, resolveInbox, } from '../control-plane/inbox.js';
|
|
16
16
|
import { REVISIUM_TRANSPORT_DRAFT } from './tokens.js';
|
|
17
|
-
/**
|
|
18
|
-
* InboxService — thin DI wrapper over the pure inbox verbs.
|
|
19
|
-
* Injects the DRAFT transport (inbox is a runtime/draft table).
|
|
20
|
-
*
|
|
21
|
-
* G3: da is initialized in the constructor BODY (not a class-field initializer).
|
|
22
|
-
* Same pattern as RunService — field-init runs before parameter property assignment
|
|
23
|
-
* under ES2023/NodeNext emit.
|
|
24
|
-
*
|
|
25
|
-
* PURE: no DBOS imports or calls. The DBOS signal (DBOS.send) is layered in 0004.
|
|
26
|
-
*/
|
|
27
17
|
let InboxService = class InboxService {
|
|
28
18
|
draftTransport;
|
|
29
19
|
da;
|
|
30
20
|
constructor(draftTransport) {
|
|
31
21
|
this.draftTransport = draftTransport;
|
|
32
|
-
// Must build da in the constructor body — see G3 note above.
|
|
33
22
|
this.da = createControlPlaneDataAccessForTransport(this.draftTransport);
|
|
34
23
|
}
|
|
35
|
-
/**
|
|
36
|
-
* pushInbox — insert an inbox row. Returns the inbox id.
|
|
37
|
-
*
|
|
38
|
-
* G1 (0004): accepts `opts.id` — when present, used verbatim (deterministic gate path).
|
|
39
|
-
* 0002 CLI callers pass no opts → timestamp+suffix path unchanged (backward-compatible).
|
|
40
|
-
*/
|
|
41
24
|
pushInbox(item, opts) {
|
|
42
25
|
return pushInbox(this.da, item, opts);
|
|
43
26
|
}
|
|
@@ -47,13 +30,6 @@ let InboxService = class InboxService {
|
|
|
47
30
|
getInbox(id) {
|
|
48
31
|
return getInbox(this.da, id);
|
|
49
32
|
}
|
|
50
|
-
/**
|
|
51
|
-
* resolveInbox — pure status flip + step unblock.
|
|
52
|
-
*
|
|
53
|
-
* G2 (0004): now returns the STORED decision `{ status, answer }`.
|
|
54
|
-
* Gate CLI callers use `result.answer` to signal WHAT IS RECORDED.
|
|
55
|
-
* 0002 non-gate callers ignore the return — backward-compatible.
|
|
56
|
-
*/
|
|
57
33
|
resolveInbox(itemId, answer, resolvedBy) {
|
|
58
34
|
return resolveInbox(this.da, itemId, answer, resolvedBy);
|
|
59
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.service.js","sourceRoot":"","sources":["../../src/revisium/inbox.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,wCAAwC,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,GAKb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox.service.js","sourceRoot":"","sources":["../../src/revisium/inbox.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,wCAAwC,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,GAKb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAWhD,IAAM,YAAY,GAAlB,MAAM,YAAY;IAI8B;IAHpC,EAAE,CAAyB;IAE5C,YACqD,cAAqC;QAArC,mBAAc,GAAd,cAAc,CAAuB;QAExF,IAAI,CAAC,EAAE,GAAG,wCAAwC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1E,CAAC;IAMD,SAAS,CAAC,IAAkB,EAAE,IAAsB;QAClD,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,MAAoB;QAC5B,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAOD,YAAY,CAAC,MAAc,EAAE,MAAe,EAAE,UAAkB;QAC9D,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;CACF,CAAA;AAjCY,YAAY;IADxB,UAAU,EAAE;IAKR,WAAA,MAAM,CAAC,wBAAwB,CAAC,CAAA;;GAJxB,YAAY,CAiCxB"}
|
|
@@ -16,6 +16,8 @@ import { createVersionedMeaningAccess } from '../control-plane/versioned-meaning
|
|
|
16
16
|
import { PlaybookInstaller } from '../playbook/playbook-installer.js';
|
|
17
17
|
import { normalizeRouteGates } from '../pipeline/route-contract.js';
|
|
18
18
|
import { REVISIUM_TRANSPORT_HEAD } from './tokens.js';
|
|
19
|
+
const DEFAULT_PLAYBOOK_ID = 'revisium-default';
|
|
20
|
+
const DEFAULT_PLAYBOOK_PACKAGE = '@revisium/orchestrator-default-playbook';
|
|
19
21
|
function str(value) {
|
|
20
22
|
return typeof value === 'string' ? value : '';
|
|
21
23
|
}
|
|
@@ -54,6 +56,9 @@ function alternativeRoles(value) {
|
|
|
54
56
|
}];
|
|
55
57
|
});
|
|
56
58
|
}
|
|
59
|
+
function canInvalidate(transport) {
|
|
60
|
+
return typeof transport.invalidate === 'function';
|
|
61
|
+
}
|
|
57
62
|
function pipelineFromRow(row) {
|
|
58
63
|
const data = row.data ?? {};
|
|
59
64
|
return {
|
|
@@ -74,11 +79,14 @@ let PlaybooksService = class PlaybooksService {
|
|
|
74
79
|
constructor(head) {
|
|
75
80
|
this.head = head;
|
|
76
81
|
}
|
|
77
|
-
install(options) {
|
|
82
|
+
async install(options) {
|
|
78
83
|
const installer = new PlaybookInstaller({
|
|
79
84
|
access: createVersionedMeaningAccess({ dryRun: options.dryRun }),
|
|
80
85
|
});
|
|
81
|
-
|
|
86
|
+
const result = await installer.install(options);
|
|
87
|
+
if (result.committed && canInvalidate(this.head))
|
|
88
|
+
this.head.invalidate();
|
|
89
|
+
return result;
|
|
82
90
|
}
|
|
83
91
|
async listPlaybooks() {
|
|
84
92
|
const rows = await this.head.listRows('playbooks', { first: 100 });
|
|
@@ -94,6 +102,7 @@ let PlaybooksService = class PlaybooksService {
|
|
|
94
102
|
version: str(data.version),
|
|
95
103
|
source: str(data.source),
|
|
96
104
|
schemaVersion: num(data.schema_version),
|
|
105
|
+
...(str(data.catalog_hash) ? { catalogHash: str(data.catalog_hash) } : {}),
|
|
97
106
|
}];
|
|
98
107
|
});
|
|
99
108
|
}
|
|
@@ -115,6 +124,7 @@ let PlaybooksService = class PlaybooksService {
|
|
|
115
124
|
version: str(data.version),
|
|
116
125
|
source: str(data.source),
|
|
117
126
|
schemaVersion: num(data.schema_version),
|
|
127
|
+
...(str(data.catalog_hash) ? { catalogHash: str(data.catalog_hash) } : {}),
|
|
118
128
|
};
|
|
119
129
|
}
|
|
120
130
|
async resolvePlaybook(id) {
|
|
@@ -128,6 +138,9 @@ let PlaybooksService = class PlaybooksService {
|
|
|
128
138
|
if (playbooks.length === 0) {
|
|
129
139
|
throw new ControlPlaneError('ROW_NOT_FOUND', 'no installed playbook found');
|
|
130
140
|
}
|
|
141
|
+
const defaultPlaybook = playbooks.find((playbook) => playbook.id === DEFAULT_PLAYBOOK_ID || playbook.packageName === DEFAULT_PLAYBOOK_PACKAGE);
|
|
142
|
+
if (defaultPlaybook)
|
|
143
|
+
return defaultPlaybook;
|
|
131
144
|
playbooks.sort((left, right) => left.id.localeCompare(right.id));
|
|
132
145
|
return playbooks[0];
|
|
133
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playbooks.service.js","sourceRoot":"","sources":["../../src/revisium/playbooks.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAA2D,MAAM,mCAAmC,CAAC;AAC/H,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"playbooks.service.js","sourceRoot":"","sources":["../../src/revisium/playbooks.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,18 +11,6 @@ import { RolesService } from './roles.service.js';
|
|
|
11
11
|
import { RunService } from './run.service.js';
|
|
12
12
|
import { InboxService } from './inbox.service.js';
|
|
13
13
|
import { PlaybooksService } from './playbooks.service.js';
|
|
14
|
-
/**
|
|
15
|
-
* RevisiumModule — provides draft + head transport tokens, RolesService, RunService, InboxService.
|
|
16
|
-
*
|
|
17
|
-
* HOST-FREE: this module MUST NOT import EngineModule, HostLifecycle, or anything that
|
|
18
|
-
* triggers DBOS.launch(). Its providers only need the Revisium transport. It may later be
|
|
19
|
-
* imported by AppModule, but never the reverse.
|
|
20
|
-
*
|
|
21
|
-
* Transport factories are sync/lazy (client-transport.ts:114-119); no network at module
|
|
22
|
-
* construction — RevisiumModule.compile() succeeds without a live daemon.
|
|
23
|
-
*
|
|
24
|
-
* Follows EngineModule (src/engine/dbos.module.ts) as the structural template.
|
|
25
|
-
*/
|
|
26
14
|
let RevisiumModule = class RevisiumModule {
|
|
27
15
|
};
|
|
28
16
|
RevisiumModule = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revisium.module.js","sourceRoot":"","sources":["../../src/revisium/revisium.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"revisium.module.js","sourceRoot":"","sources":["../../src/revisium/revisium.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAoCnD,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,cAAc;IAxB1B,MAAM,CAAC;QACN,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,wBAAwB;gBACjC,UAAU,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC;aACjD;YACD;gBACE,OAAO,EAAE,uBAAuB;gBAChC,UAAU,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;aAChD;YACD,YAAY;YACZ,UAAU;YACV,YAAY;YACZ,gBAAgB;SACjB;QACD,OAAO,EAAE;YACP,wBAAwB;YACxB,uBAAuB;YACvB,YAAY;YACZ,UAAU;YACV,YAAY;YACZ,gBAAgB;SACjB;KACF,CAAC;GACW,cAAc,CAAG"}
|
|
@@ -16,11 +16,6 @@ import { REVISIUM_TRANSPORT_HEAD } from './tokens.js';
|
|
|
16
16
|
function str(value) {
|
|
17
17
|
return typeof value === 'string' ? value : '';
|
|
18
18
|
}
|
|
19
|
-
/**
|
|
20
|
-
* RolesService — thin DI wrapper over loadRole / loadModelProfile.
|
|
21
|
-
* Injects the HEAD transport (versioned tables, read-only).
|
|
22
|
-
* Propagates ControlPlaneError (ROW_NOT_FOUND, VALIDATION_FAILURE) unchanged.
|
|
23
|
-
*/
|
|
24
19
|
let RolesService = class RolesService {
|
|
25
20
|
head;
|
|
26
21
|
constructor(head) {
|
|
@@ -65,7 +60,6 @@ let RolesService = class RolesService {
|
|
|
65
60
|
}];
|
|
66
61
|
});
|
|
67
62
|
}
|
|
68
|
-
/** Load pipeline limits (max iterations/attempts, budget) from routing_policy (0008 #5). */
|
|
69
63
|
loadPipelinePolicy() {
|
|
70
64
|
return loadPipelinePolicy(this.head);
|
|
71
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.service.js","sourceRoot":"","sources":["../../src/revisium/roles.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,EAAqD,MAAM,iCAAiC,CAAC;AACpJ,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAmBtD,SAAS,GAAG,CAAC,KAAc;IACzB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;
|
|
1
|
+
{"version":3,"file":"roles.service.js","sourceRoot":"","sources":["../../src/revisium/roles.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,21 +25,11 @@ import { blockRun } from '../run/block-run.js';
|
|
|
25
25
|
import { appendRunEvent, appendRunCost, appendRunAttempt } from '../run/append-event.js';
|
|
26
26
|
import { appendRunOutput as appendRunOutputRow } from '../run/run-outputs.js';
|
|
27
27
|
import { REVISIUM_TRANSPORT_DRAFT } from './tokens.js';
|
|
28
|
-
/**
|
|
29
|
-
* RunService — thin DI wrapper over the run verbs.
|
|
30
|
-
* Injects the DRAFT transport (runtime/draft table writes).
|
|
31
|
-
*
|
|
32
|
-
* G3: da is initialized in the constructor BODY (not a class-field initializer).
|
|
33
|
-
* A class-field initializer for `da` would run before the constructor assigns the
|
|
34
|
-
* `draftTransport` parameter property under ES2023/NodeNext emit, so it would read
|
|
35
|
-
* this.draftTransport as undefined. The constructor-body form is safe.
|
|
36
|
-
*/
|
|
37
28
|
let RunService = class RunService {
|
|
38
29
|
draftTransport;
|
|
39
30
|
da;
|
|
40
31
|
constructor(draftTransport) {
|
|
41
32
|
this.draftTransport = draftTransport;
|
|
42
|
-
// Must build da in the constructor body — see G3 note above.
|
|
43
33
|
this.da = createControlPlaneDataAccessForTransport(this.draftTransport);
|
|
44
34
|
}
|
|
45
35
|
createRun(input) {
|
|
@@ -54,53 +44,27 @@ let RunService = class RunService {
|
|
|
54
44
|
listRunEvents(id, filter) {
|
|
55
45
|
return listRunEvents(this.da, id, filter);
|
|
56
46
|
}
|
|
57
|
-
/** List per-attempt observability rows for a run (0008 #4 — `revo run log`). */
|
|
58
47
|
listRunAttempts(id, filter) {
|
|
59
48
|
return listRunAttempts(this.da, id, filter);
|
|
60
49
|
}
|
|
61
50
|
cancelRun(id, opts) {
|
|
62
51
|
return cancelRun(this.da, id, opts);
|
|
63
52
|
}
|
|
64
|
-
/**
|
|
65
|
-
* failRun — patch task_runs to `failed` + write a run_failed event (0008 #2).
|
|
66
|
-
* Event-first + idempotent. Called by the pipeline workflow body on a terminal step failure
|
|
67
|
-
* so the Revisium run-row reflects the failure (DBOS=progress, Revisium=meaning).
|
|
68
|
-
*/
|
|
69
53
|
failRun(id, reason, opts) {
|
|
70
54
|
return failRun(this.da, id, reason, opts);
|
|
71
55
|
}
|
|
72
|
-
/**
|
|
73
|
-
* completeRun — patch task_runs to `completed` + write a run_completed event.
|
|
74
|
-
* Called by the pipeline workflow body after the final merge gate resolves.
|
|
75
|
-
*/
|
|
76
56
|
completeRun(id, opts) {
|
|
77
57
|
return completeRun(this.da, id, opts);
|
|
78
58
|
}
|
|
79
|
-
/**
|
|
80
|
-
* blockRun — patch task_runs to `paused` + write a run_blocked event.
|
|
81
|
-
* Called when the workflow intentionally stops with blocked:true while DBOS completes.
|
|
82
|
-
*/
|
|
83
59
|
blockRun(id, opts) {
|
|
84
60
|
return blockRun(this.da, id, opts);
|
|
85
61
|
}
|
|
86
|
-
/** Expose getRun for events pre-check (run not found guard in CLI). */
|
|
87
62
|
getRun(id) {
|
|
88
63
|
return this.da.getRow('task_runs', id);
|
|
89
64
|
}
|
|
90
|
-
/** Read run-row status + the run_failed reason (0008 #2 — surfaced by `run start --wait`). */
|
|
91
65
|
getRunFailure(id) {
|
|
92
66
|
return getRunFailure(this.da, id);
|
|
93
67
|
}
|
|
94
|
-
/**
|
|
95
|
-
* loadPipelineContext — M3 (TASK 0003).
|
|
96
|
-
*
|
|
97
|
-
* Exposes the private draft `da` via a typed verb (never widening the field to public).
|
|
98
|
-
* Synthesizes an in-memory Step with the real taskId from showRun (B6: tasks[0].taskId).
|
|
99
|
-
* `modelProfile` is the caller-supplied role-derived level (B7 — not hardcoded 'standard').
|
|
100
|
-
*
|
|
101
|
-
* B6: `RunDetail = { run, tasks: TaskSummary[] }` — taskId is on TaskSummary, NOT top-level.
|
|
102
|
-
* `createRunWorkflow` writes exactly ONE task per run, so tasks[0] is THE task.
|
|
103
|
-
*/
|
|
104
68
|
async loadPipelineContext(runId, role, stepKey, stepInput, modelProfile) {
|
|
105
69
|
const detail = await showRun(this.da, runId);
|
|
106
70
|
if (!detail) {
|
|
@@ -144,37 +108,15 @@ let RunService = class RunService {
|
|
|
144
108
|
},
|
|
145
109
|
};
|
|
146
110
|
}
|
|
147
|
-
/**
|
|
148
|
-
* makeResolveCwd — STEP-level cwd resolver (M3, worktree-aware as of plan 0017).
|
|
149
|
-
* Returns (step: Step) => Promise<string>; resolves the run's isolated worktree (keyed by step.runId)
|
|
150
|
-
* for live runs, else the shared base checkout (tasks.repo_ref). Used by ClaudeCodeService.
|
|
151
|
-
*/
|
|
152
111
|
makeResolveCwd(base = process.cwd()) {
|
|
153
112
|
return makeResolveCwd(this.da, getConfig().dataDir, base);
|
|
154
113
|
}
|
|
155
|
-
/**
|
|
156
|
-
* makeResolveRunCwd — RUN-level worktree-aware resolver (plan 0017).
|
|
157
|
-
* Returns (runId, taskId) => Promise<string>; resolves the run's isolated worktree, FAILS LOUD for a
|
|
158
|
-
* live run whose worktree is missing, else the base checkout. Used by the integrator (run-keyed).
|
|
159
|
-
*/
|
|
160
114
|
makeResolveRunCwd(base = process.cwd()) {
|
|
161
115
|
return makeResolveRunCwd(this.da, getConfig().dataDir, base);
|
|
162
116
|
}
|
|
163
|
-
/**
|
|
164
|
-
* makeResolveTaskCwd — TASK-level cwd resolver (M3) — the BASE checkout.
|
|
165
|
-
* Returns (taskId: string) => Promise<string>; reads tasks.repo_ref via the draft da.
|
|
166
|
-
* Used by the live preflight (runs against the base repo BEFORE the worktree exists) + worktree setup.
|
|
167
|
-
*/
|
|
168
117
|
makeResolveTaskCwd(base = process.cwd()) {
|
|
169
118
|
return makeResolveTaskCwd(this.da, base);
|
|
170
119
|
}
|
|
171
|
-
/**
|
|
172
|
-
* loadRunTaskContext — B6: resolve { taskId, title, base, repoRef } from run input.
|
|
173
|
-
*
|
|
174
|
-
* Backed by showRun(da, runId). base is always 'master' (no base field in run input —
|
|
175
|
-
* verified: create-run.ts stores only repos/repo_ref). Throws a clear error if the run
|
|
176
|
-
* or its task is missing.
|
|
177
|
-
*/
|
|
178
120
|
async loadRunTaskContext(runId) {
|
|
179
121
|
const detail = await showRun(this.da, runId);
|
|
180
122
|
if (!detail) {
|
|
@@ -187,35 +129,20 @@ let RunService = class RunService {
|
|
|
187
129
|
return {
|
|
188
130
|
taskId: task.taskId,
|
|
189
131
|
title: task.title,
|
|
190
|
-
base: 'master',
|
|
132
|
+
base: 'master',
|
|
191
133
|
repoRef: detail.run.repos[0] ?? '',
|
|
134
|
+
...(detail.run.issueRef ? { issueRef: detail.run.issueRef } : {}),
|
|
192
135
|
};
|
|
193
136
|
}
|
|
194
|
-
/**
|
|
195
|
-
* appendEvent — write an idempotent event to the draft events table.
|
|
196
|
-
* Wraps appendRunEvent over the service's draft da.
|
|
197
|
-
*/
|
|
198
137
|
appendEvent(input) {
|
|
199
138
|
return appendRunEvent(this.da, input);
|
|
200
139
|
}
|
|
201
|
-
/**
|
|
202
|
-
* appendCost — write an idempotent cost row to the draft cost_ledger table.
|
|
203
|
-
* Wraps appendRunCost over the service's draft da.
|
|
204
|
-
*/
|
|
205
140
|
appendCost(input) {
|
|
206
141
|
return appendRunCost(this.da, input);
|
|
207
142
|
}
|
|
208
|
-
/**
|
|
209
|
-
* appendAttempt — write an idempotent per-attempt observability row to the draft attempts table.
|
|
210
|
-
* Wraps appendRunAttempt over the service's draft da (0008 #4).
|
|
211
|
-
*/
|
|
212
143
|
appendAttempt(input) {
|
|
213
144
|
return appendRunAttempt(this.da, input);
|
|
214
145
|
}
|
|
215
|
-
/**
|
|
216
|
-
* appendRunOutput — write an idempotent step-output dataflow row to the draft run_outputs table.
|
|
217
|
-
* Wraps the run-outputs module over the service's draft da (0016 §5).
|
|
218
|
-
*/
|
|
219
146
|
appendRunOutput(input) {
|
|
220
147
|
return appendRunOutputRow(this.da, input);
|
|
221
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.service.js","sourceRoot":"","sources":["../../src/revisium/run.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,wCAAwC,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACxG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAA6C,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAA2E,MAAM,uBAAuB,CAAC;AAClL,OAAO,EAAE,SAAS,EAAwB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAsB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,WAAW,EAA0B,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAuB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAwE,MAAM,wBAAwB,CAAC;AAC/J,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAqB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.service.js","sourceRoot":"","sources":["../../src/revisium/run.service.ts"],"names":[],"mappings":"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"}
|
package/dist/revisium/tokens.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Injection tokens for RevisiumModule transports.
|
|
3
|
-
* Shared between the module and the service constructors.
|
|
4
|
-
*/
|
|
5
1
|
export const REVISIUM_TRANSPORT_DRAFT = 'REVISIUM_TRANSPORT_DRAFT';
|
|
6
2
|
export const REVISIUM_TRANSPORT_HEAD = 'REVISIUM_TRANSPORT_HEAD';
|
|
7
3
|
//# sourceMappingURL=tokens.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/revisium/tokens.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/revisium/tokens.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AACnE,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC"}
|
package/dist/run/append-event.js
CHANGED
|
@@ -2,13 +2,6 @@ import { ControlPlaneError } from '../control-plane/errors.js';
|
|
|
2
2
|
import { fnv1a64Hex } from '../control-plane/steps.js';
|
|
3
3
|
import { redactSecrets } from '../control-plane/inbox.js';
|
|
4
4
|
import { redactTokens } from '../runners/gh-identity.js';
|
|
5
|
-
/**
|
|
6
|
-
* Deep-redact GitHub token shapes from every string leaf of an event payload before it is persisted
|
|
7
|
-
* to the Revisium draft. The attempts row redacts `lesson`/`error` explicitly (appendRunAttempt); an
|
|
8
|
-
* event payload carries the same free text (e.g. an integrator `pipeline_blocked` lesson) and must
|
|
9
|
-
* not leak a raw token. Redacting at this persist boundary covers every payload field, including ones
|
|
10
|
-
* added by future event types.
|
|
11
|
-
*/
|
|
12
5
|
export function redactEventPayload(value) {
|
|
13
6
|
if (typeof value === 'string')
|
|
14
7
|
return redactTokens(value);
|
|
@@ -19,16 +12,11 @@ export function redactEventPayload(value) {
|
|
|
19
12
|
}
|
|
20
13
|
return value;
|
|
21
14
|
}
|
|
22
|
-
/**
|
|
23
|
-
* Write a single event row to the `events` table.
|
|
24
|
-
*
|
|
25
|
-
* eventId = `event_${fnv1a64Hex(`${runId}|${stepKey}|${type}`)}` → 22 chars ≤ 64
|
|
26
|
-
*
|
|
27
|
-
* Idempotent: catches ROW_CONFLICT and returns (no-op on replay).
|
|
28
|
-
*/
|
|
29
15
|
export async function appendRunEvent(da, input) {
|
|
30
|
-
const { runId, taskId, stepId, stepKey, type, payload, actor, createdAt } = input;
|
|
31
|
-
const
|
|
16
|
+
const { runId, taskId, stepId, stepKey, type, payload, idempotencyKey, actor, createdAt } = input;
|
|
17
|
+
const idempotencyScope = idempotencyKey ? `|${idempotencyKey}` : '';
|
|
18
|
+
const eventKey = `${runId}|${stepKey}|${type}${idempotencyScope}`;
|
|
19
|
+
const eventId = `event_${fnv1a64Hex(eventKey)}`;
|
|
32
20
|
const createdAtIso = (createdAt ?? new Date()).toISOString();
|
|
33
21
|
try {
|
|
34
22
|
await da.createRow('events', eventId, {
|
|
@@ -48,20 +36,7 @@ export async function appendRunEvent(da, input) {
|
|
|
48
36
|
throw e;
|
|
49
37
|
}
|
|
50
38
|
}
|
|
51
|
-
/** Cap the serialized output summary so a giant agent payload can't bloat the attempts row. */
|
|
52
39
|
const OUTPUT_SUMMARY_MAX = 4_000;
|
|
53
|
-
/**
|
|
54
|
-
* Write a single per-attempt observability row to the `attempts` table (0008 #4).
|
|
55
|
-
*
|
|
56
|
-
* Populates the previously-unused `attempts` table so `revo run log` can show output summary,
|
|
57
|
-
* verdict, model, tokens, cost, duration, and iteration per attempt — the dogfood's observability
|
|
58
|
-
* gap (agent output was only recoverable indirectly via plan files / commit diffs).
|
|
59
|
-
*
|
|
60
|
-
* SECRET BOUNDARY: the output summary, lesson, and error are secret-redacted (object keys via
|
|
61
|
-
* redactSecrets, token shapes via redactTokens) before persisting — attempts live in Revisium.
|
|
62
|
-
*
|
|
63
|
-
* Idempotent: the row id IS the deterministic attemptId; ROW_CONFLICT is a no-op on replay.
|
|
64
|
-
*/
|
|
65
40
|
export async function appendRunAttempt(da, input) {
|
|
66
41
|
const summaryRaw = JSON.stringify(redactSecrets(input.output) ?? null);
|
|
67
42
|
const outputSummary = redactTokens(summaryRaw).slice(0, OUTPUT_SUMMARY_MAX);
|
|
@@ -101,16 +76,10 @@ export async function appendRunAttempt(da, input) {
|
|
|
101
76
|
throw e;
|
|
102
77
|
}
|
|
103
78
|
}
|
|
104
|
-
/**
|
|
105
|
-
* Write a single cost row to the `cost_ledger` table.
|
|
106
|
-
*
|
|
107
|
-
* costId = `cost_${fnv1a64Hex(`${runId}|${stepKey}|${index}`)}` → 21 chars ≤ 64
|
|
108
|
-
*
|
|
109
|
-
* Idempotent: catches ROW_CONFLICT and returns (no-op on replay).
|
|
110
|
-
*/
|
|
111
79
|
export async function appendRunCost(da, input) {
|
|
112
80
|
const { runId, stepId, stepKey, attemptId, cost, index, recordedAt } = input;
|
|
113
|
-
const
|
|
81
|
+
const costKey = `${runId}|${stepKey}|${attemptId}|${index}`;
|
|
82
|
+
const costId = `cost_${fnv1a64Hex(costKey)}`;
|
|
114
83
|
const recordedAtIso = (recordedAt ?? new Date()).toISOString();
|
|
115
84
|
try {
|
|
116
85
|
await da.createRow('cost_ledger', costId, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"append-event.js","sourceRoot":"","sources":["../../src/run/append-event.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"append-event.js","sourceRoot":"","sources":["../../src/run/append-event.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-run.js","sourceRoot":"","sources":["../../src/run/block-run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"block-run.js","sourceRoot":"","sources":["../../src/run/block-run.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAQnE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,EAA0B,EAC1B,KAAa,EACb,IAAuE;IAEvE,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE;QACtD,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,aAAa;QACxB,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,UAAU;QAChC,OAAO,EAAE;YACP,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,kBAAkB;YAC1C,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE;SAC3B;QACD,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE;KAC7B,CAAC,CAAC;IACH,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC5E,CAAC"}
|
package/dist/run/cancel-run.js
CHANGED
|
@@ -1,38 +1,5 @@
|
|
|
1
1
|
import { recordTerminalRunStatus } from './terminal-run-status.js';
|
|
2
|
-
/**
|
|
3
|
-
* cancelRun — patch task_runs to cancelled + write a run_cancelled event.
|
|
4
|
-
*
|
|
5
|
-
* G3 (0004): the event id is NOW DETERMINISTIC: `event_${fnv1a64Hex(`${runId}|run_cancelled`)}`.
|
|
6
|
-
* This mirrors append-event.ts's pattern (22 chars ≤ 64; no timestamp).
|
|
7
|
-
* createRow is wrapped in a ROW_CONFLICT catch so a workflow-body replay does NOT
|
|
8
|
-
* duplicate or fail the event insert (idempotent under DBOS recovery).
|
|
9
|
-
*
|
|
10
|
-
* CR-A (0004 CR): EVENT-FIRST ordering — the run_cancelled event is written BEFORE the
|
|
11
|
-
* task_runs status patch. This preserves correct `previous_status` on replay:
|
|
12
|
-
* 1. Read run → capture prev = run.status.
|
|
13
|
-
* 2. If prev === 'cancelled': the event already exists (ROW_CONFLICT no-op) with the TRUE
|
|
14
|
-
* prior status written on the first run. Skip the status patch too. Return.
|
|
15
|
-
* 3. createRow the deterministic event with previous_status: prev (FIRST write — immutable
|
|
16
|
-
* because ROW_CONFLICT means the first write always wins on replay).
|
|
17
|
-
* 4. idempotently patch task_runs.status → 'cancelled' (only if not already cancelled).
|
|
18
|
-
* If a replay stops between steps 3 and 4, the next replay re-reads prev, sees the event
|
|
19
|
-
* already exists (ROW_CONFLICT no-op at step 3), and idemptently applies the patch at step 4.
|
|
20
|
-
* The event's `previous_status` is ALWAYS the true prior status captured on the FIRST execution.
|
|
21
|
-
*
|
|
22
|
-
* CR-B (0004 CR): caller-aware actor/source — the pipeline gate reject path passes
|
|
23
|
-
* actor:'pipeline', source:'plan-gate-reject'; the CLI `run cancel` path keeps the
|
|
24
|
-
* default actor:'cli', source:'revo run cancel'. Thread via opts.
|
|
25
|
-
*
|
|
26
|
-
* C1 (0004 review): read-then-guard — if the run is already cancelled, skip both the
|
|
27
|
-
* event write (ROW_CONFLICT no-op) and the task_runs patch (C1: no fresh updated_at on replay).
|
|
28
|
-
*
|
|
29
|
-
* The `opts.idSuffix` parameter is kept for signature back-compat (0002 `run cancel` CLI
|
|
30
|
-
* passes it) but no longer influences the event id — it is intentionally unused here.
|
|
31
|
-
*/
|
|
32
2
|
export async function cancelRun(da, runId, opts) {
|
|
33
|
-
// CR-A/G3/C1: event-first, deterministic id, ROW_CONFLICT-idempotent, no fresh updated_at when
|
|
34
|
-
// already cancelled — all provided by the shared writer (terminal-run-status.ts). `idSuffix` is
|
|
35
|
-
// kept on the signature for back-compat (0002 `run cancel`) but does NOT influence the event id.
|
|
36
3
|
const result = await recordTerminalRunStatus(da, runId, {
|
|
37
4
|
status: 'cancelled',
|
|
38
5
|
eventType: 'run_cancelled',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancel-run.js","sourceRoot":"","sources":["../../src/run/cancel-run.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"cancel-run.js","sourceRoot":"","sources":["../../src/run/cancel-run.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAoCnE,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,EAA0B,EAC1B,KAAa,EACb,IAAyE;IAEzE,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE;QACtD,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK;QAC3B,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,iBAAiB,EAAE;QACtD,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE;KAC7B,CAAC,CAAC;IACH,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC/E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete-run.js","sourceRoot":"","sources":["../../src/run/complete-run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"complete-run.js","sourceRoot":"","sources":["../../src/run/complete-run.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAQnE,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAA0B,EAC1B,KAAa,EACb,IAA6F;IAE7F,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE;QACtD,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,UAAU;QAChC,OAAO,EAAE;YACP,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,mBAAmB;YAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE;YAC5B,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC;SAClC;QACD,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE;KAC7B,CAAC,CAAC;IACH,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC/E,CAAC"}
|
package/dist/run/create-run.js
CHANGED
|
@@ -2,6 +2,7 @@ import { existsSync, statSync } from 'node:fs';
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { randomUUID } from 'node:crypto';
|
|
5
|
+
import { normalizeIssueRefIntoParams } from './issue-ref.js';
|
|
5
6
|
export class CreateRunWorkflowError extends Error {
|
|
6
7
|
createdIds;
|
|
7
8
|
cause;
|
|
@@ -103,17 +104,13 @@ function normalizeInput(input) {
|
|
|
103
104
|
role,
|
|
104
105
|
playbookId: input.playbookId?.trim() ?? '',
|
|
105
106
|
pipelineId: input.pipelineId?.trim() ?? '',
|
|
106
|
-
params: input.params ?? {},
|
|
107
|
+
params: normalizeIssueRefIntoParams(input.params ?? {}, input.issueRef),
|
|
107
108
|
routeDecision: input.routeDecision ?? {},
|
|
108
109
|
executionProfile: input.executionProfile ?? {},
|
|
109
110
|
now: input.now ?? new Date(),
|
|
110
111
|
idSuffix: input.idSuffix ?? randomUUID().replaceAll('-', '').slice(0, 8),
|
|
111
112
|
};
|
|
112
113
|
}
|
|
113
|
-
// A role row id is generic data: any well-formed id (charset + length) is accepted. Roles are data,
|
|
114
|
-
// not a code allow-list — the route binds an installed role row id and the data-driven engine resolves
|
|
115
|
-
// it as an opaque capability handle (it holds ZERO role-ids). A hyphen is NOT required (a bare id like
|
|
116
|
-
// `developer` is valid).
|
|
117
114
|
function isValidRoleRowId(role) {
|
|
118
115
|
if (role.length === 0 || role.length > maxRoleRowIdLength)
|
|
119
116
|
return false;
|
|
@@ -130,6 +127,9 @@ function buildIds(input) {
|
|
|
130
127
|
status: 'ready',
|
|
131
128
|
};
|
|
132
129
|
}
|
|
130
|
+
export function previewCreateRunIds(input) {
|
|
131
|
+
return buildIds(normalizeInput(input));
|
|
132
|
+
}
|
|
133
133
|
export async function createRunWorkflow(dataAccess, input) {
|
|
134
134
|
const normalized = normalizeInput(input);
|
|
135
135
|
await dataAccess.assertReady();
|
|
@@ -170,9 +170,6 @@ export async function createRunWorkflow(dataAccess, input) {
|
|
|
170
170
|
updated_at: nowIso,
|
|
171
171
|
});
|
|
172
172
|
createdIds.taskId = ids.taskId;
|
|
173
|
-
// No `steps` row is written: the data-driven engine owns progress in DBOS and synthesizes the
|
|
174
|
-
// per-step `Step` in-memory (RunService.loadPipelineContext). The pre-pivot phantom `plan_run`
|
|
175
|
-
// step row (stuck at `ready` forever, never advanced) was retired here (audit §3.1).
|
|
176
173
|
await dataAccess.createRow('events', ids.eventId, {
|
|
177
174
|
id: ids.eventId,
|
|
178
175
|
run_id: ids.runId,
|