cool-workflow 0.1.98 → 0.2.1
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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +18 -7
- package/apps/architecture-review/app.json +2 -2
- package/apps/architecture-review/workflow.js +12 -12
- package/apps/architecture-review-fast/app.json +1 -1
- package/apps/end-to-end-golden-path/app.json +1 -1
- package/apps/pr-review-fix-ci/app.json +1 -1
- package/apps/release-cut/app.json +1 -1
- package/apps/research-synthesis/app.json +1 -1
- package/dist/cli/dispatch.js +236 -0
- package/dist/cli/entry.js +120 -0
- package/dist/cli/io.js +21 -4
- package/dist/cli/parseargv.js +157 -0
- package/dist/cli.js +6 -33
- package/dist/core/capability-table.js +3518 -0
- package/dist/core/format/help.js +314 -0
- package/dist/{state-explosion/format.js → core/format/state-explosion-text.js} +10 -1
- package/dist/core/hash.js +137 -0
- package/dist/core/multi-agent/candidate-scoring.js +219 -0
- package/dist/core/multi-agent/collaboration.js +481 -0
- package/dist/core/multi-agent/coordinator.js +515 -0
- package/dist/core/multi-agent/eval-replay.js +306 -0
- package/dist/core/multi-agent/runtime.js +929 -0
- package/dist/core/multi-agent/topology.js +298 -0
- package/dist/core/multi-agent/trust-policy.js +197 -0
- package/dist/core/pipeline/commit-gate.js +320 -0
- package/dist/{pipeline-contract.js → core/pipeline/contract.js} +24 -37
- package/dist/core/pipeline/dispatch.js +103 -0
- package/dist/core/pipeline/drive-decide.js +227 -0
- package/dist/core/pipeline/error-feedback.js +161 -0
- package/dist/core/pipeline/loop-expansion.js +124 -0
- package/dist/{result-normalize.js → core/pipeline/result-normalize.js} +14 -37
- package/dist/core/pipeline/runner.js +230 -0
- package/dist/{contract-migration.js → core/state/contract-migration.js} +68 -92
- package/dist/{state-migrations.js → core/state/migrations.js} +103 -96
- package/dist/core/state/node-projection.js +95 -0
- package/dist/core/state/node-snapshot.js +230 -0
- package/dist/core/state/run-paths.js +93 -0
- package/dist/{schema-validate.js → core/state/schema-validate.js} +35 -28
- package/dist/core/state/schema.js +50 -0
- package/dist/core/state/state-explosion/digest.js +243 -0
- package/dist/core/state/state-explosion/graph.js +527 -0
- package/dist/{state-explosion → core/state/state-explosion}/helpers.js +34 -3
- package/dist/core/state/state-explosion/report.js +187 -0
- package/dist/{state-explosion → core/state/state-explosion}/size.js +25 -7
- package/dist/{state-node.js → core/state/state-node.js} +90 -113
- package/dist/core/state/types.js +19 -0
- package/dist/{validation.js → core/state/validation.js} +64 -131
- package/dist/core/trust/evidence-grounding.js +134 -0
- package/dist/core/trust/ledger.js +199 -0
- package/dist/{telemetry-attestation.js → core/trust/telemetry-attestation.js} +94 -68
- package/dist/core/trust/telemetry-ledger.js +127 -0
- package/dist/core/types.js +20 -0
- package/dist/core/version.js +16 -0
- package/dist/{workflow-app-framework.js → core/workflow-apps/app-schema.js} +337 -426
- package/dist/mcp/dispatch.js +104 -0
- package/dist/mcp/server.js +144 -0
- package/dist/mcp-server.js +6 -84
- package/dist/{agent-config.js → shell/agent-config.js} +118 -71
- package/dist/shell/app-run-cli.js +88 -0
- package/dist/shell/audit-cli.js +259 -0
- package/dist/shell/audit-provenance.js +83 -0
- package/dist/shell/candidate-scoring-io.js +459 -0
- package/dist/shell/collaboration-io.js +264 -0
- package/dist/shell/commit-summary.js +104 -0
- package/dist/shell/commit.js +290 -0
- package/dist/shell/coordinator-io.js +476 -0
- package/dist/shell/demo-cli.js +19 -0
- package/dist/shell/dispatch.js +162 -0
- package/dist/shell/doctor.js +292 -0
- package/dist/shell/drive.js +885 -0
- package/dist/shell/error-feedback-io.js +305 -0
- package/dist/shell/eval-io.js +473 -0
- package/dist/{multi-agent-eval/format.js → shell/eval-text.js} +78 -49
- package/dist/{evidence-reasoning.js → shell/evidence-reasoning.js} +124 -255
- package/dist/shell/exec-backend-cli.js +88 -0
- package/dist/shell/execution-backend/agent.js +507 -0
- package/dist/shell/execution-backend/ci.js +15 -0
- package/dist/shell/execution-backend/container.js +69 -0
- package/dist/shell/execution-backend/envelopes.js +55 -0
- package/dist/shell/execution-backend/local.js +113 -0
- package/dist/shell/execution-backend/probes.js +175 -0
- package/dist/shell/execution-backend/registry.js +402 -0
- package/dist/shell/execution-backend/remote.js +128 -0
- package/dist/shell/execution-backend/types.js +11 -0
- package/dist/shell/feedback-cli.js +81 -0
- package/dist/shell/feedback-operations.js +48 -0
- package/dist/shell/fs-atomic.js +276 -0
- package/dist/shell/harness.js +98 -0
- package/dist/shell/ledger-cli.js +212 -0
- package/dist/shell/ledger-io.js +169 -0
- package/dist/shell/man-cli.js +89 -0
- package/dist/shell/metrics-cli.js +100 -0
- package/dist/shell/multi-agent-cli.js +1002 -0
- package/dist/shell/multi-agent-host.js +563 -0
- package/dist/shell/multi-agent-io.js +387 -0
- package/dist/{multi-agent-operator-ux.js → shell/multi-agent-operator-ux.js} +234 -191
- package/dist/shell/node-store.js +124 -0
- package/dist/{observability/format.js → shell/observability-format.js} +7 -1
- package/dist/{observability/intake.js → shell/observability-intake.js} +79 -56
- package/dist/{observability.js → shell/observability.js} +159 -332
- package/dist/{onramp.js → shell/onramp.js} +11 -0
- package/dist/{operator-ux/format.js → shell/operator-ux-text.js} +250 -239
- package/dist/shell/operator-ux.js +431 -0
- package/dist/shell/orchestrator.js +231 -0
- package/dist/shell/pipeline-cli.js +667 -0
- package/dist/shell/pipeline.js +217 -0
- package/dist/shell/reclamation-io.js +1366 -0
- package/dist/shell/registry-cli.js +344 -0
- package/dist/{remote-source.js → shell/remote-source.js} +2 -2
- package/dist/shell/report-cli.js +101 -0
- package/dist/shell/report-view-cli.js +117 -0
- package/dist/{orchestrator → shell}/report.js +289 -282
- package/dist/shell/reporter.js +62 -0
- package/dist/shell/run-export-cli.js +106 -0
- package/dist/shell/run-export.js +680 -0
- package/dist/shell/run-registry-io.js +1014 -0
- package/dist/shell/run-store.js +164 -0
- package/dist/{sandbox-profile.js → shell/sandbox-profile.js} +134 -95
- package/dist/{scheduler.js → shell/scheduler-io.js} +257 -48
- package/dist/shell/scheduling-io.js +321 -0
- package/dist/shell/state-cli.js +181 -0
- package/dist/shell/state-explosion-cli.js +197 -0
- package/dist/shell/telemetry-cli.js +85 -0
- package/dist/{telemetry-demo.js → shell/telemetry-demo.js} +149 -119
- package/dist/shell/telemetry-ledger-io.js +132 -0
- package/dist/{term.js → shell/term.js} +36 -46
- package/dist/shell/topology-io.js +361 -0
- package/dist/shell/trust-audit.js +472 -0
- package/dist/{multi-agent-trust.js → shell/trust-policy-io.js} +67 -205
- package/dist/shell/verifier.js +48 -0
- package/dist/shell/workbench-host.js +258 -0
- package/dist/shell/workbench-text.js +18 -0
- package/dist/shell/workbench.js +170 -0
- package/dist/shell/worker-cli.js +124 -0
- package/dist/shell/worker-isolation.js +852 -0
- package/dist/shell/workflow-app-loader.js +650 -0
- package/docs/agent-delegation-drive.7.md +4 -0
- package/docs/cli-mcp-parity.7.md +282 -219
- package/docs/contract-migration-tooling.7.md +4 -0
- package/docs/control-plane-scheduling.7.md +4 -0
- package/docs/durable-state-and-locking.7.md +4 -0
- package/docs/evidence-adoption-reasoning-chain.7.md +4 -0
- package/docs/execution-backends.7.md +4 -0
- package/docs/multi-agent-cli-mcp-surface.7.md +4 -0
- package/docs/multi-agent-eval-replay-harness.7.md +4 -0
- package/docs/multi-agent-operator-ux.7.md +4 -0
- package/docs/node-snapshot-diff-replay.7.md +4 -0
- package/docs/observability-cost-accounting.7.md +6 -1
- package/docs/project-index.md +137 -71
- package/docs/real-execution-backends.7.md +4 -0
- package/docs/release-and-migration.7.md +4 -0
- package/docs/release-tooling.7.md +4 -0
- package/docs/remote-source-review.7.md +4 -4
- package/docs/report-verifiable-bundle.7.md +1 -1
- package/docs/run-registry-control-plane.7.md +4 -0
- package/docs/run-retention-reclamation.7.md +25 -0
- package/docs/security-trust-hardening.7.md +3 -1
- package/docs/state-explosion-management.7.md +4 -0
- package/docs/team-collaboration.7.md +4 -0
- package/docs/web-desktop-workbench.7.md +15 -1
- package/manifest/plugin.manifest.json +1 -1
- package/manifest/source-context-profiles.json +9 -13
- package/package.json +1 -1
- package/scripts/agents/agent-adapter-core.js +22 -2
- package/scripts/agents/claude-p-agent.js +8 -3
- package/scripts/agents/cw-attest-wrap.js +2 -2
- package/scripts/agents/gemini-agent.js +5 -1
- package/scripts/agents/opencode-agent.js +5 -1
- package/scripts/bump-version.js +4 -3
- package/scripts/canonical-apps.js +4 -4
- package/scripts/dogfood-architecture-review.js +2 -3
- package/scripts/dogfood-release.js +3 -3
- package/scripts/gen-parity-doc.js +15 -2
- package/scripts/golden-path.js +4 -4
- package/scripts/onramp-check.js +1 -1
- package/scripts/parity-check.js +38 -21
- package/scripts/release-flow.js +2 -2
- package/scripts/sync-project-index.js +51 -27
- package/scripts/validate-run-state-schema.js +2 -2
- package/scripts/version-sync-check.js +30 -30
- package/dist/candidate-scoring.js +0 -729
- package/dist/capability-core.js +0 -1189
- package/dist/capability-registry.js +0 -885
- package/dist/cli/command-surface.js +0 -494
- package/dist/cli/format.js +0 -56
- package/dist/cli/handlers/audit.js +0 -82
- package/dist/cli/handlers/blackboard.js +0 -81
- package/dist/cli/handlers/candidate.js +0 -40
- package/dist/cli/handlers/clones.js +0 -34
- package/dist/cli/handlers/collaboration.js +0 -61
- package/dist/cli/handlers/eval.js +0 -40
- package/dist/cli/handlers/ledger.js +0 -169
- package/dist/cli/handlers/maintenance.js +0 -107
- package/dist/cli/handlers/multi-agent.js +0 -165
- package/dist/cli/handlers/node.js +0 -41
- package/dist/cli/handlers/operational.js +0 -155
- package/dist/cli/handlers/operator.js +0 -146
- package/dist/cli/handlers/registry.js +0 -68
- package/dist/cli/handlers/run.js +0 -153
- package/dist/cli/handlers/scheduling.js +0 -132
- package/dist/cli/handlers/workbench.js +0 -41
- package/dist/cli/handlers/worker.js +0 -45
- package/dist/cli/run-summary.js +0 -45
- package/dist/clones.js +0 -162
- package/dist/collaboration.js +0 -726
- package/dist/commit.js +0 -592
- package/dist/compare.js +0 -18
- package/dist/coordinator/classify.js +0 -45
- package/dist/coordinator/paths.js +0 -42
- package/dist/coordinator/util.js +0 -126
- package/dist/coordinator.js +0 -990
- package/dist/daemon.js +0 -44
- package/dist/dispatch.js +0 -250
- package/dist/doctor.js +0 -212
- package/dist/drive.js +0 -864
- package/dist/error-feedback.js +0 -419
- package/dist/evidence-grounding.js +0 -184
- package/dist/execution-backend/agent.js +0 -354
- package/dist/execution-backend/probes.js +0 -112
- package/dist/execution-backend/util.js +0 -47
- package/dist/execution-backend.js +0 -961
- package/dist/gates.js +0 -48
- package/dist/harness.js +0 -61
- package/dist/ledger.js +0 -313
- package/dist/loop-expansion.js +0 -60
- package/dist/mcp/tool-call.js +0 -470
- package/dist/mcp/tool-definitions.js +0 -1066
- package/dist/mcp-surface.js +0 -30
- package/dist/multi-agent/graph.js +0 -84
- package/dist/multi-agent/helpers.js +0 -141
- package/dist/multi-agent/ids.js +0 -20
- package/dist/multi-agent/paths.js +0 -22
- package/dist/multi-agent-eval/normalize.js +0 -51
- package/dist/multi-agent-eval.js +0 -678
- package/dist/multi-agent-host.js +0 -777
- package/dist/multi-agent.js +0 -984
- package/dist/node-projection.js +0 -59
- package/dist/node-snapshot.js +0 -260
- package/dist/operator-ux.js +0 -631
- package/dist/orchestrator/app-operations.js +0 -211
- package/dist/orchestrator/audit-operations.js +0 -182
- package/dist/orchestrator/candidate-operations.js +0 -117
- package/dist/orchestrator/cli-options.js +0 -294
- package/dist/orchestrator/collaboration-operations.js +0 -86
- package/dist/orchestrator/feedback-operations.js +0 -81
- package/dist/orchestrator/host-operations.js +0 -78
- package/dist/orchestrator/lifecycle-operations.js +0 -650
- package/dist/orchestrator/migration-operations.js +0 -44
- package/dist/orchestrator/multi-agent-operations.js +0 -362
- package/dist/orchestrator/topology-operations.js +0 -84
- package/dist/orchestrator.js +0 -925
- package/dist/pipeline-runner.js +0 -285
- package/dist/reclamation/hash.js +0 -72
- package/dist/reclamation.js +0 -812
- package/dist/reporter.js +0 -67
- package/dist/run-export.js +0 -815
- package/dist/run-registry/derive.js +0 -175
- package/dist/run-registry/format.js +0 -124
- package/dist/run-registry/gc.js +0 -251
- package/dist/run-registry/policy.js +0 -16
- package/dist/run-registry/queue.js +0 -115
- package/dist/run-registry.js +0 -850
- package/dist/run-state-schema.js +0 -68
- package/dist/scheduling.js +0 -184
- package/dist/state-explosion.js +0 -1014
- package/dist/state.js +0 -367
- package/dist/telemetry-ledger.js +0 -196
- package/dist/topology.js +0 -565
- package/dist/triggers.js +0 -184
- package/dist/trust-audit.js +0 -644
- package/dist/types/blackboard.js +0 -2
- package/dist/types/candidate.js +0 -2
- package/dist/types/collaboration.js +0 -2
- package/dist/types/core.js +0 -2
- package/dist/types/drive.js +0 -10
- package/dist/types/error-feedback.js +0 -2
- package/dist/types/evidence-reasoning.js +0 -2
- package/dist/types/execution-backend.js +0 -2
- package/dist/types/multi-agent.js +0 -2
- package/dist/types/observability.js +0 -2
- package/dist/types/pipeline.js +0 -2
- package/dist/types/reclamation.js +0 -8
- package/dist/types/report-bundle.js +0 -6
- package/dist/types/result.js +0 -2
- package/dist/types/run-registry.js +0 -2
- package/dist/types/run.js +0 -2
- package/dist/types/sandbox.js +0 -2
- package/dist/types/schedule.js +0 -2
- package/dist/types/state-node.js +0 -2
- package/dist/types/topology.js +0 -2
- package/dist/types/trust.js +0 -2
- package/dist/types/workbench.js +0 -2
- package/dist/types/worker.js +0 -2
- package/dist/types/workflow-app.js +0 -2
- package/dist/types.js +0 -44
- package/dist/util/fingerprint.js +0 -19
- package/dist/util/fingerprint.test.js +0 -27
- package/dist/verifier.js +0 -78
- package/dist/version.js +0 -8
- package/dist/workbench-host.js +0 -192
- package/dist/workbench.js +0 -192
- package/dist/worker-accept/acceptance.js +0 -114
- package/dist/worker-accept/blackboard-fanout.js +0 -80
- package/dist/worker-accept/blackboard-linkage.js +0 -19
- package/dist/worker-accept/context.js +0 -2
- package/dist/worker-accept/telemetry-ledger.js +0 -126
- package/dist/worker-accept/validation.js +0 -77
- package/dist/worker-accept/verifier-completion.js +0 -73
- package/dist/worker-isolation/helpers.js +0 -51
- package/dist/worker-isolation/paths.js +0 -46
- package/dist/worker-isolation.js +0 -656
- package/dist/workflow-api.js +0 -131
- /package/dist/{types → core/types}/boundary.js +0 -0
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runWorkerVerify = runWorkerVerify;
|
|
4
|
-
exports.recordWorkerCompletion = recordWorkerCompletion;
|
|
5
|
-
const pipeline_runner_1 = require("../pipeline-runner");
|
|
6
|
-
const telemetry_attestation_1 = require("../telemetry-attestation");
|
|
7
|
-
const execution_backend_1 = require("../execution-backend");
|
|
8
|
-
/** Step 5 — runVerify: drive the verify pipeline stage off the accepted result node
|
|
9
|
-
* and record the verifier node id on the task + accept context. */
|
|
10
|
-
function runWorkerVerify(accept) {
|
|
11
|
-
const { run, workerId, scope, task, parsedResult, destination, resultNode } = accept;
|
|
12
|
-
const verifierResult = (0, pipeline_runner_1.createPipelineRunner)({ persist: false }).runPipelineStage(run, "verify", resultNode.id, {
|
|
13
|
-
outputNodeId: `${run.id}:verifier:${task.id}`,
|
|
14
|
-
outputStatus: "verified",
|
|
15
|
-
loopStage: "adjust",
|
|
16
|
-
outputs: { accepted: true, workerId },
|
|
17
|
-
artifacts: [{ id: "result", kind: "markdown", path: destination }],
|
|
18
|
-
evidence: resultNode.evidence.length
|
|
19
|
-
? resultNode.evidence
|
|
20
|
-
: [{ id: "result:summary", source: "summary", summary: parsedResult.summary }],
|
|
21
|
-
metadata: { taskId: task.id, workerId, resultNodeId: resultNode.id, sandboxProfileId: scope.sandboxProfileId }
|
|
22
|
-
});
|
|
23
|
-
task.verifierNodeId = verifierResult.outputNodeId;
|
|
24
|
-
accept.verifierNodeId = verifierResult.outputNodeId;
|
|
25
|
-
// Carry the verify verdict for the scope-status transition in recordWorkerCompletion.
|
|
26
|
-
accept.verifierStatus = verifierResult.status;
|
|
27
|
-
}
|
|
28
|
-
/** Step 6 — recordStateNode (worker record): assemble the worker output record +
|
|
29
|
-
* host-attested usage record, then persist the worker scope with the verify-derived
|
|
30
|
-
* status, output digest/size, and (when present) usage. */
|
|
31
|
-
function recordWorkerCompletion(accept, delegation, deps) {
|
|
32
|
-
const { run, workerId, scope, task, absoluteResultPath, rawResult, resultNode, verifierNodeId, verifierStatus, pathAuditId, acceptedAuditId } = accept;
|
|
33
|
-
const { agentDelegation, telemetry } = delegation;
|
|
34
|
-
const output = {
|
|
35
|
-
workerId,
|
|
36
|
-
taskId: task.id,
|
|
37
|
-
resultPath: absoluteResultPath,
|
|
38
|
-
recordedAt: new Date().toISOString(),
|
|
39
|
-
stateNodeId: resultNode.id,
|
|
40
|
-
verifierNodeId,
|
|
41
|
-
auditEventIds: [pathAuditId, acceptedAuditId]
|
|
42
|
-
};
|
|
43
|
-
// Host-attested usage rides on the worker record. Recorded when the agent
|
|
44
|
-
// REPORTED a model OR token usage — `unreported`/absent stays ABSENT (never
|
|
45
|
-
// backfilled from the operator-chosen CW_AGENT_MODEL, never synthesized).
|
|
46
|
-
// Track 1: the attestation verdict (`attested`/`unattested`/`absent`) and its
|
|
47
|
-
// reason ride along, and the token buckets come from the (verified-or-not)
|
|
48
|
-
// reported usage — CW still never measures them, it records + labels them.
|
|
49
|
-
const reportedModel = agentDelegation && agentDelegation.model && agentDelegation.model !== "unreported" ? agentDelegation.model : undefined;
|
|
50
|
-
const usageRecord = agentDelegation && (reportedModel || agentDelegation.reportedUsage)
|
|
51
|
-
? {
|
|
52
|
-
schemaVersion: 1,
|
|
53
|
-
source: "host-attested",
|
|
54
|
-
...(reportedModel ? { model: reportedModel } : {}),
|
|
55
|
-
...(0, telemetry_attestation_1.normalizeReportedUsage)(agentDelegation.reportedUsage),
|
|
56
|
-
attestedAt: new Date().toISOString(),
|
|
57
|
-
...(telemetry ? { attestation: telemetry.status, ...(telemetry.reason ? { attestationReason: telemetry.reason } : {}) } : {}),
|
|
58
|
-
note: "agent-delegation host-attested usage"
|
|
59
|
-
}
|
|
60
|
-
: undefined;
|
|
61
|
-
deps.updateWorkerScope(run, {
|
|
62
|
-
...scope,
|
|
63
|
-
updatedAt: new Date().toISOString(),
|
|
64
|
-
status: verifierStatus === "advanced" ? "verified" : "completed",
|
|
65
|
-
resultNodeId: resultNode.id,
|
|
66
|
-
output,
|
|
67
|
-
// Output integrity (v0.1.63): SHA256 digest + file size
|
|
68
|
-
outputDigest: (0, execution_backend_1.sha256)(rawResult),
|
|
69
|
-
outputSizeBytes: Buffer.byteLength(rawResult, "utf8"),
|
|
70
|
-
...(usageRecord ? { usage: usageRecord } : {})
|
|
71
|
-
});
|
|
72
|
-
accept.output = output;
|
|
73
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.structuredError = structuredError;
|
|
4
|
-
exports.isBoundaryViolation = isBoundaryViolation;
|
|
5
|
-
exports.isStateNodeError = isStateNodeError;
|
|
6
|
-
exports.mergeScopes = mergeScopes;
|
|
7
|
-
exports.unique = unique;
|
|
8
|
-
exports.compactMetadata = compactMetadata;
|
|
9
|
-
exports.countBy = countBy;
|
|
10
|
-
function structuredError(code, message, options = {}) {
|
|
11
|
-
return {
|
|
12
|
-
code,
|
|
13
|
-
message,
|
|
14
|
-
at: new Date().toISOString(),
|
|
15
|
-
path: options.path,
|
|
16
|
-
retryable: options.retryable,
|
|
17
|
-
details: options.details
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
function isBoundaryViolation(value) {
|
|
21
|
-
return Boolean(value && typeof value === "object" && "allowedPaths" in value && "message" in value);
|
|
22
|
-
}
|
|
23
|
-
function isStateNodeError(value) {
|
|
24
|
-
return Boolean(value && typeof value === "object" && "code" in value && "message" in value);
|
|
25
|
-
}
|
|
26
|
-
function mergeScopes(left, right) {
|
|
27
|
-
const merged = [...left];
|
|
28
|
-
for (const scope of right) {
|
|
29
|
-
const index = merged.findIndex((candidate) => candidate.id === scope.id);
|
|
30
|
-
if (index >= 0)
|
|
31
|
-
merged[index] = scope;
|
|
32
|
-
else
|
|
33
|
-
merged.push(scope);
|
|
34
|
-
}
|
|
35
|
-
return merged;
|
|
36
|
-
}
|
|
37
|
-
function unique(values) {
|
|
38
|
-
return Array.from(new Set(values.filter(Boolean)));
|
|
39
|
-
}
|
|
40
|
-
function compactMetadata(value) {
|
|
41
|
-
const entries = Object.entries(value).filter(([, entry]) => entry !== undefined);
|
|
42
|
-
return entries.length ? Object.fromEntries(entries) : undefined;
|
|
43
|
-
}
|
|
44
|
-
function countBy(items, key) {
|
|
45
|
-
const counts = {};
|
|
46
|
-
for (const item of items) {
|
|
47
|
-
const value = key(item);
|
|
48
|
-
counts[value] = (counts[value] || 0) + 1;
|
|
49
|
-
}
|
|
50
|
-
return counts;
|
|
51
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.WORKER_MANIFEST_FILE = exports.WORKER_SCOPE_FILE = void 0;
|
|
7
|
-
exports.manifestPath = manifestPath;
|
|
8
|
-
exports.workerScopePath = workerScopePath;
|
|
9
|
-
exports.workerArtifacts = workerArtifacts;
|
|
10
|
-
exports.createWorkerId = createWorkerId;
|
|
11
|
-
// Path, artifact, and id derivation for worker isolation. Pure functions of a
|
|
12
|
-
// WorkerScope (or run + taskId) — no run-state mutation, no disk I/O. Carved out
|
|
13
|
-
// of worker-isolation.ts following the established router pattern
|
|
14
|
-
// (run-registry/{format,policy}.ts, orchestrator/*-operations.ts).
|
|
15
|
-
//
|
|
16
|
-
// BEHAVIOR-PRESERVING — pure code movement, zero logic change. Re-exported from
|
|
17
|
-
// worker-isolation.ts so the public surface is byte-unchanged.
|
|
18
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
19
|
-
const state_1 = require("../state");
|
|
20
|
-
exports.WORKER_SCOPE_FILE = "worker.json";
|
|
21
|
-
exports.WORKER_MANIFEST_FILE = "manifest.json";
|
|
22
|
-
function manifestPath(scope) {
|
|
23
|
-
return node_path_1.default.join(scope.workerDir, exports.WORKER_MANIFEST_FILE);
|
|
24
|
-
}
|
|
25
|
-
function workerScopePath(scope) {
|
|
26
|
-
return node_path_1.default.join(scope.workerDir, exports.WORKER_SCOPE_FILE);
|
|
27
|
-
}
|
|
28
|
-
function workerArtifacts(scope) {
|
|
29
|
-
return [
|
|
30
|
-
{ id: "worker", kind: "json", path: workerScopePath(scope) },
|
|
31
|
-
{ id: "worker-manifest", kind: "json", path: manifestPath(scope) },
|
|
32
|
-
{ id: "worker-input", kind: "markdown", path: scope.inputPath }
|
|
33
|
-
];
|
|
34
|
-
}
|
|
35
|
-
// Deterministic worker id (v0.1.40 self-audit P2): a wall-clock stamp + Math.random()
|
|
36
|
-
// made every dispatch mint a different id, so audit references were not reproducible
|
|
37
|
-
// across re-runs of the same inputs. The id is now derived from the task plus a
|
|
38
|
-
// per-task sequence (count of worker scopes already allocated for that task + 1),
|
|
39
|
-
// so re-running the same workflow yields byte-identical worker ids while retries of
|
|
40
|
-
// the SAME task still get a fresh, unique id. (workerId is excluded from the
|
|
41
|
-
// snapshot source fingerprint, so this does not change replay digests.)
|
|
42
|
-
function createWorkerId(run, taskId) {
|
|
43
|
-
const prefix = `worker-${(0, state_1.safeFileName)(taskId)}-`;
|
|
44
|
-
const seq = (run.workers || []).filter((scope) => scope.id.startsWith(prefix)).length + 1;
|
|
45
|
-
return `${prefix}${String(seq).padStart(4, "0")}`;
|
|
46
|
-
}
|