@sema-agent/server 7.43.0 → 7.44.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/USAGE.md +18 -0
- package/dist/adoption/plan.js +31 -192
- package/dist/adoption/quiesce.js +3 -86
- package/dist/adoption/runner.js +3 -140
- package/dist/adoption/sql.js +0 -74
- package/dist/adoption/wire.js +0 -80
- package/dist/approval-ask-machine.js +0 -75
- package/dist/approval-card.js +0 -323
- package/dist/approval-deny-reasons.js +0 -42
- package/dist/approval-hmac.js +0 -35
- package/dist/approval-reconciler.js +8 -166
- package/dist/approval.js +4 -67
- package/dist/audit.js +1 -44
- package/dist/auth-bridge.js +4 -47
- package/dist/auth-keys.js +0 -23
- package/dist/bake-runner/main.js +4 -65
- package/dist/bake-runner/protocol.js +3 -58
- package/dist/bake-runner/runner.js +5 -91
- package/dist/bench/l8/artifact.js +2 -61
- package/dist/bench/l8/escape.js +0 -25
- package/dist/bench/l8/index.js +0 -14
- package/dist/bench/l8/probes.js +0 -60
- package/dist/bench/l8/run-probes.js +2 -45
- package/dist/bench/s1/arms.js +14 -189
- package/dist/bench/s1/live-deps.js +11 -253
- package/dist/bench/s1/oracle.js +1 -36
- package/dist/bench/s1/repair-oracle-adapter.js +0 -30
- package/dist/bench/s1/reviewer.js +0 -34
- package/dist/bench/s1/row.js +0 -62
- package/dist/bench/s1/run-firm.js +4 -70
- package/dist/bench/s1/runner-ctx.js +0 -40
- package/dist/bench/s1/tasks.js +0 -115
- package/dist/boot/adoption.js +0 -20
- package/dist/boot/budget-tracing.js +3 -55
- package/dist/boot/config-center.js +43 -551
- package/dist/boot/coordinators.js +1 -69
- package/dist/boot/crash-last.js +0 -18
- package/dist/boot/deferred-sandbox-path-env.js +3 -119
- package/dist/boot/execution-env.js +5 -171
- package/dist/boot/governance-seams.js +0 -92
- package/dist/boot/leader.js +0 -69
- package/dist/boot/limit-sync.js +0 -2
- package/dist/boot/memory-boundary.js +3 -91
- package/dist/boot/org-memory.js +1 -25
- package/dist/boot/parked-revive-gate.js +0 -150
- package/dist/boot/permission-rules-audit.js +1 -56
- package/dist/boot/reapers.js +15 -273
- package/dist/boot/resolve-spec.js +9 -768
- package/dist/boot/retention-lane.js +4 -87
- package/dist/boot/runner-deps.js +3 -297
- package/dist/boot/runtime-caps.js +0 -40
- package/dist/boot/session-faces.js +2 -133
- package/dist/boot/shutdown.js +9 -83
- package/dist/boot/side-query-lane.js +2 -137
- package/dist/boot/stores.js +15 -215
- package/dist/boot/task-list-lane.js +0 -18
- package/dist/boot/webfetch-summarize-lane.js +0 -47
- package/dist/boot/workflow-orchestration.js +3 -99
- package/dist/boot-reclaim.js +0 -20
- package/dist/bounded-session-map.js +0 -19
- package/dist/brain.js +2 -139
- package/dist/budget.js +9 -244
- package/dist/capabilities/builtin-tools.js +0 -3
- package/dist/capabilities/center-plugins.js +6 -51
- package/dist/capabilities/center-prompts.js +6 -71
- package/dist/capabilities/code-review-council.js +7 -40
- package/dist/capabilities/collab-workflows.js +1 -44
- package/dist/capabilities/hands-lane.js +0 -65
- package/dist/capabilities/memory-notice.js +0 -70
- package/dist/capabilities/prompt.js +0 -14
- package/dist/capabilities/prompts/code-review.js +0 -14
- package/dist/capabilities/prompts/identity.js +0 -6
- package/dist/capabilities/prompts/team.js +0 -4
- package/dist/capabilities/repo-tools.js +0 -34
- package/dist/capabilities/sandbox-file-send.js +3 -92
- package/dist/capabilities/scenarios.d.ts +0 -1
- package/dist/capabilities/scenarios.js +18 -279
- package/dist/capabilities/select-environment-tool.js +0 -32
- package/dist/capabilities/send-user-file-tool.js +2 -66
- package/dist/capabilities/skills.d.ts +1 -2
- package/dist/capabilities/skills.js +3 -21
- package/dist/capabilities/team.d.ts +3 -11
- package/dist/capabilities/team.js +3 -51
- package/dist/capabilities/tool-defer.js +0 -3
- package/dist/config-center/apply-effective.js +15 -330
- package/dist/config-center/apply-ledger.js +5 -38
- package/dist/config-center/facade.js +0 -41
- package/dist/config-center/hot-keys-registry.js +0 -20
- package/dist/config-center/http-client.js +2 -125
- package/dist/config-center/mcp-revocation.js +2 -34
- package/dist/config-center/read-face.js +0 -59
- package/dist/config-center/restart-signal.js +1 -85
- package/dist/config-center/skills-mcp.d.ts +1 -1
- package/dist/config-center/skills-mcp.js +9 -76
- package/dist/config-center/stage-limits.js +8 -35
- package/dist/config-invariants.js +0 -16
- package/dist/config-lkg.js +0 -42
- package/dist/config-provider.js +3 -186
- package/dist/config-types.js +0 -5
- package/dist/config.js +107 -1145
- package/dist/degenerate-instrument.js +3 -67
- package/dist/deployment-governance.js +0 -124
- package/dist/digest-form.js +0 -12
- package/dist/elicitation.js +3 -86
- package/dist/env-facts.js +7 -75
- package/dist/fleet/fleet-bus.js +34 -507
- package/dist/fleet/fleet-reconciler.js +9 -149
- package/dist/fleet/fleet-terminal-window.js +10 -178
- package/dist/fleet/subagent-tail-bus.js +3 -72
- package/dist/fleet-client.js +10 -70
- package/dist/fleet-lease.js +5 -79
- package/dist/git-api-kind.js +0 -3
- package/dist/governance-ask-marks.js +2 -78
- package/dist/hooks/branch-transcript.js +0 -74
- package/dist/hooks/cc-agent-hook-prompt.js +0 -29
- package/dist/hooks/cc-stop-prompt.js +1 -46
- package/dist/hooks/hook-llm.js +1 -53
- package/dist/hooks/hook-runner.js +20 -414
- package/dist/http/active-run-conflict.js +4 -129
- package/dist/http/cursor-fingerprint.d.ts +5 -0
- package/dist/http/cursor-fingerprint.js +5 -0
- package/dist/http/idempotency.js +0 -37
- package/dist/http/principal-gate.js +3 -40
- package/dist/http/route-ctx.js +0 -9
- package/dist/http/routes/a2a-serve.js +7 -319
- package/dist/http/routes/admin-config-refresh.js +0 -4
- package/dist/http/routes/admin-drain.js +0 -10
- package/dist/http/routes/adoption.js +1 -29
- package/dist/http/routes/agents-roster.js +1 -47
- package/dist/http/routes/approvals-assistant.js +32 -395
- package/dist/http/routes/attachments.js +4 -22
- package/dist/http/routes/capabilities.js +3 -420
- package/dist/http/routes/diagnostics.js +1 -81
- package/dist/http/routes/fleet.js +9 -185
- package/dist/http/routes/images.js +14 -239
- package/dist/http/routes/leader.js +0 -13
- package/dist/http/routes/memory-bundle.js +1 -61
- package/dist/http/routes/memory-policy.js +9 -99
- package/dist/http/routes/notify-wake.js +3 -37
- package/dist/http/routes/observability.js +2 -19
- package/dist/http/routes/retention-ops.js +2 -34
- package/dist/http/routes/rules.js +1 -93
- package/dist/http/routes/runs.js +64 -873
- package/dist/http/routes/session-sync.js +19 -258
- package/dist/http/routes/sessions-list.js +17 -43
- package/dist/http/routes/sessions.js +34 -226
- package/dist/http/routes/shared-memory.js +5 -36
- package/dist/http/routes/side-query.js +1 -87
- package/dist/http/routes/tasks.js +52 -722
- package/dist/http/routes/trace-usage.js +32 -195
- package/dist/http/routes/workflows.js +19 -195
- package/dist/http/run-meta.js +0 -6
- package/dist/http/send.js +0 -32
- package/dist/http/server.js +92 -1597
- package/dist/http/sse-lifecycle.js +2 -13
- package/dist/http/sse-log.js +3 -48
- package/dist/http/tar.js +5 -21
- package/dist/http/verify-rounds.js +0 -5
- package/dist/http/wire-gate.js +0 -9
- package/dist/http/workspace-content.js +0 -10
- package/dist/images/bake-validate.js +1 -70
- package/dist/images/manifest.js +1 -6
- package/dist/index.js +0 -21
- package/dist/key-resolver.js +2 -17
- package/dist/leader/diffout.js +1 -20
- package/dist/leader/diffup.js +0 -47
- package/dist/leader/endpoint.js +2 -57
- package/dist/leader/fanout.js +3 -45
- package/dist/leader/grader-env-factory.js +3 -72
- package/dist/leader/leader.js +5 -156
- package/dist/leader/merge.js +8 -115
- package/dist/leader/planner.js +3 -54
- package/dist/leader/repair-oracle.js +1 -60
- package/dist/leader/repair-wire.js +2 -79
- package/dist/leader/wire.js +8 -307
- package/dist/lsp/e2b-bridge.js +4 -64
- package/dist/lsp/e2b-manager.js +6 -94
- package/dist/lsp/lsp-frames.js +0 -12
- package/dist/lsp/manager.js +4 -96
- package/dist/lsp/ws-transport.js +5 -55
- package/dist/lsp-evict.js +1 -15
- package/dist/main.js +57 -765
- package/dist/memory-bundle-engine.js +0 -55
- package/dist/memory-export.js +0 -4
- package/dist/memory-posture.js +1 -15
- package/dist/memory-scope.js +11 -148
- package/dist/memory-sync-client.js +2 -44
- package/dist/memory-sync.js +1 -80
- package/dist/model-select.js +3 -80
- package/dist/observability/cost-quota.js +1 -17
- package/dist/observability/cost-taxonomy.js +0 -34
- package/dist/observability/fail-open.js +7 -86
- package/dist/observability/logger.js +0 -6
- package/dist/observability/metrics.js +0 -94
- package/dist/observability/otel-exporter.js +3 -13
- package/dist/observability/principal-context.js +0 -9
- package/dist/observability/prompt-manifest.js +1 -37
- package/dist/observability/rate-limit.js +0 -4
- package/dist/observability/secret-env-scrub.js +2 -56
- package/dist/observability/tool-trace.js +1 -70
- package/dist/orchestration/hardened-vm-runner.js +4 -118
- package/dist/orchestration/hardened-vm-worker-runner.js +1 -26
- package/dist/orchestration/hardened-vm-worker.js +0 -27
- package/dist/orchestration/subagent-steer.js +1 -45
- package/dist/orchestration/workflow-agent-steer.js +1 -80
- package/dist/orchestration/workflow-completion-inbox.js +32 -285
- package/dist/orchestration/workflow-notify-journal.js +16 -259
- package/dist/org-memory-admission.js +3 -47
- package/dist/parent-watch.js +2 -48
- package/dist/parked-decide.js +1 -109
- package/dist/per-task-image.js +0 -57
- package/dist/plan-cache-probe.js +3 -27
- package/dist/plugins/adoption-log-sql.js +2 -119
- package/dist/plugins/approval-ask-store-memory.js +3 -38
- package/dist/plugins/approval-ask-store-sql.js +6 -188
- package/dist/plugins/approval-exemption-store.js +2 -28
- package/dist/plugins/background-agent-store-sql.js +4 -105
- package/dist/plugins/background-shell-support.js +14 -122
- package/dist/plugins/blob-backend.js +6 -169
- package/dist/plugins/breaker-state-sql.js +8 -46
- package/dist/plugins/caching-session-store.js +4 -106
- package/dist/plugins/checkpoint-store-sql.js +18 -505
- package/dist/plugins/e2b-orphan-reclaim.js +0 -45
- package/dist/plugins/file-outcome-sink.js +0 -9
- package/dist/plugins/file-resume-anchor-store.js +4 -43
- package/dist/plugins/file-run-store.js +26 -364
- package/dist/plugins/file-snapshot-store-sql.js +10 -181
- package/dist/plugins/fork-routing-session-store.js +8 -111
- package/dist/plugins/host-platform.js +2 -91
- package/dist/plugins/image-bake-store-sql.js +7 -250
- package/dist/plugins/image-index-sql.js +4 -123
- package/dist/plugins/k8s-bg-scripts.js +4 -88
- package/dist/plugins/k8s-exec-protocol.js +0 -41
- package/dist/plugins/leader-run-store-sql.js +0 -101
- package/dist/plugins/local-checkpoint-store.js +8 -128
- package/dist/plugins/local-session-store.js +34 -296
- package/dist/plugins/local-task-attachment-store.js +2 -16
- package/dist/plugins/mailbox-store-sql.js +8 -65
- package/dist/plugins/memory-embedder-fingerprint.js +5 -166
- package/dist/plugins/memory-embedder.js +4 -70
- package/dist/plugins/memory-engine-pg.js +6 -170
- package/dist/plugins/memory-engine-tidb.js +7 -155
- package/dist/plugins/memory-engine-vector-util.js +0 -10
- package/dist/plugins/memory-key-guards.js +0 -34
- package/dist/plugins/memory-origin-law.js +0 -187
- package/dist/plugins/memory-resume-anchor-store.js +0 -17
- package/dist/plugins/memory-run-store.js +12 -89
- package/dist/plugins/memory-session-policy-store.js +0 -17
- package/dist/plugins/memory-sync-store-pg.js +4 -49
- package/dist/plugins/memory-sync-store-tidb.js +3 -35
- package/dist/plugins/outcome-ledger-sql.js +3 -97
- package/dist/plugins/permission-rule-store-file.js +5 -133
- package/dist/plugins/permission-rule-store-sql.d.ts +3 -0
- package/dist/plugins/permission-rule-store-sql.js +50 -307
- package/dist/plugins/pg-cost-quota.js +0 -7
- package/dist/plugins/pg-pool.js +0 -92
- package/dist/plugins/pg-rate-limiter.js +2 -13
- package/dist/plugins/pg-safe-json.js +4 -40
- package/dist/plugins/pg-session-storage.js +25 -189
- package/dist/plugins/posix-shell-fs.js +1 -31
- package/dist/plugins/remote-env-adb.js +12 -101
- package/dist/plugins/remote-env-e2b.js +40 -371
- package/dist/plugins/remote-env-file-error.js +0 -37
- package/dist/plugins/remote-env-host.js +63 -483
- package/dist/plugins/remote-env-k8s.js +32 -326
- package/dist/plugins/remote-env-local-docker.js +24 -157
- package/dist/plugins/remote-env-ssh.js +20 -128
- package/dist/plugins/remote-scratchpad.js +2 -32
- package/dist/plugins/remote-shell.js +1 -32
- package/dist/plugins/resume-anchor-store-sql.js +0 -11
- package/dist/plugins/retention-lane-store-sql.js +0 -108
- package/dist/plugins/retention-store-sql.js +4 -383
- package/dist/plugins/roster-store-sql.js +0 -55
- package/dist/plugins/run-store-sql.js +14 -251
- package/dist/plugins/s3-presign.js +2 -49
- package/dist/plugins/scheduler-support.js +3 -80
- package/dist/plugins/send-file-ledger.js +4 -53
- package/dist/plugins/send-user-file.js +4 -94
- package/dist/plugins/session-placement.js +1 -89
- package/dist/plugins/session-policy-store-sql.js +3 -81
- package/dist/plugins/session-store.js +0 -57
- package/dist/plugins/shared-memory-store-sql.js +4 -167
- package/dist/plugins/sql-driver.js +0 -17
- package/dist/plugins/sql-errors.js +0 -7
- package/dist/plugins/sql-escape.js +0 -8
- package/dist/plugins/sql-row-helpers.js +0 -25
- package/dist/plugins/store-backend.js +42 -222
- package/dist/plugins/store-contracts.js +2 -46
- package/dist/plugins/task-attachment-store.js +3 -49
- package/dist/plugins/task-list-store-sql.js +0 -79
- package/dist/plugins/tidb-cost-quota.js +1 -4
- package/dist/plugins/tidb-pool.js +1 -207
- package/dist/plugins/tidb-rate-limiter.js +3 -9
- package/dist/plugins/tidb-session-storage.js +4 -70
- package/dist/plugins/tidb-session-store.js +19 -341
- package/dist/plugins/tool-result-store-sql.js +4 -179
- package/dist/plugins/usage-window-store-sql.js +0 -8
- package/dist/plugins/web-search.js +10 -132
- package/dist/plugins/workflow-journal-store-sql.js +2 -58
- package/dist/plugins/workflow-run-store-sql.js +6 -91
- package/dist/plugins/worktree-isolation.js +6 -126
- package/dist/plugins/write-behind-counter.js +16 -75
- package/dist/principal-jwt.js +5 -60
- package/dist/project-memory.js +15 -146
- package/dist/prompts-domain-validate.js +1 -51
- package/dist/question.js +2 -111
- package/dist/resource-suspend.js +0 -18
- package/dist/router/route-orchestration.js +0 -77
- package/dist/rules-consent.d.ts +44 -5
- package/dist/rules-consent.js +75 -215
- package/dist/run-local.js +14 -381
- package/dist/runs.js +29 -617
- package/dist/runtime-caps-resolver.js +6 -132
- package/dist/runtime-governance.js +1 -232
- package/dist/sandbox-pkg-source.js +0 -37
- package/dist/sealed-key.js +3 -68
- package/dist/security.js +6 -291
- package/dist/session-leaf-bus.js +0 -32
- package/dist/session-sync-content.js +1 -69
- package/dist/session-sync-kernel.js +3 -60
- package/dist/session-sync.js +3 -66
- package/dist/session-titler.js +7 -41
- package/dist/session-watch.js +9 -73
- package/dist/shared-memory-scope-authorizer.js +0 -18
- package/dist/sighup-idle.js +1 -12
- package/dist/spec-fields.js +4 -143
- package/dist/store-live-probe.js +3 -49
- package/dist/task-a2a.js +1 -126
- package/dist/task-cwd.js +1 -103
- package/dist/task-mcp.js +1 -89
- package/dist/task-settings.js +10 -300
- package/dist/task-workflow.js +8 -75
- package/dist/tool-approval.d.ts +28 -1
- package/dist/tool-approval.js +70 -1430
- package/dist/trace/artifacts.js +5 -20
- package/dist/trace/engine-notice-wire.js +6 -138
- package/dist/trace/ledger-sink.js +7 -96
- package/dist/trace/project.js +4 -448
- package/dist/trace/redact.js +9 -77
- package/dist/turn-activity.js +1 -27
- package/dist/usage-analytics.js +4 -34
- package/dist/wall-clock-jump-guard.js +1 -68
- package/package.json +3 -3
- package/dist/capabilities/scenario-alias.d.ts +0 -27
- package/dist/capabilities/scenario-alias.js +0 -61
|
@@ -1,70 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The WIRE that wraps core `runRepairLoop` onto the leader's single-agent path
|
|
3
|
-
* (`sema-internal server/docs/LEADER-REPAIRLOOP-INTEGRATION.md` §3.3 + the authoritative §10 layer). It owns the three things the
|
|
4
|
-
* `RepairOracle` closure (`repair-oracle.ts`) and the core engine CANNOT resolve themselves:
|
|
5
|
-
*
|
|
6
|
-
* 1. **The grader handle (R1, §10.1)** — the reused integration sandbox's writeFile/exec + `integBase`, bound by
|
|
7
|
-
* the caller (`attachRepairLoopDeps` is handed the integration env). The closure grades there; the worker env
|
|
8
|
-
* stays distinct so the §5.1 identity check (`graderEnv !== workerEnv`) is LIVE.
|
|
9
|
-
* 2. **The worker diff source** — `pullWorkerDiff`, the same `pullDiff`/self-upload path the merge uses, so the
|
|
10
|
-
* closure materializes the worker's LATEST committed `base..HEAD` diff every grade (§10.1; never a stale diff).
|
|
11
|
-
* 3. **De-correlation model ids (§10.9 mechanics)** — the closure receives NO model ids (roles→models resolve
|
|
12
|
-
* INSIDE `Runner.runTask`, AFTER the closure returns), so the WIRE resolves `generatorModelId` +
|
|
13
|
-
* `verifierModelId` from `cfg.roles`/`cfg.models` and passes them to `mkRepairOracle.l3`. v1 ships L3 OFF
|
|
14
|
-
* (`cfg.l3` unset) → L2 `trusted_hidden` is the sole clearer; `terminalForTier` caps every PASS at
|
|
15
|
-
* `candidate_only`.
|
|
16
|
-
*
|
|
17
|
-
* §10.2 — for v1 SAFE-tier `candidate_only` we OMIT `immutableOraclePaths` (the bare `graderEnv !== workerEnv`
|
|
18
|
-
* identity check suffices; the structural bash write-probe is vacuous across distinct sandboxes and matters only
|
|
19
|
-
* for the mandate-OFF auto-accept path). `workerEnv` IS passed so the identity check runs.
|
|
20
|
-
*
|
|
21
|
-
* §10.7 — the surfaced `candidatePatch.patch` is worker-authored code reaching a human-read HTTP body / durable-
|
|
22
|
-
* approval row, so it is DELIMITED (`delimitUntrusted(...)`); `reason` comes ONLY from the core-sanitized
|
|
23
|
-
* `RepairResult.verification.findings[0]`, never the raw oracle trace.
|
|
24
|
-
*
|
|
25
|
-
* §10.8 — `attachRepairLoopDeps(deps, integEnv, cfg)` is the SINGLE wire-call helper so `wire.ts` gains one line
|
|
26
|
-
* per integration-sandbox path instead of in-place edits to its dense provision spreads. Stage-2 calls it.
|
|
27
|
-
*
|
|
28
|
-
* Everything here is gated by the caller behind `LEADER_REPAIR_LOOP` (default OFF): when the dep is not attached
|
|
29
|
-
* the leader's single-agent paths are byte-identical to today.
|
|
30
|
-
*/
|
|
31
1
|
import { runRepairLoop, delimitUntrusted, } from "@sema-agent/core";
|
|
32
2
|
import { mkRepairOracle } from "./repair-oracle.js";
|
|
33
|
-
/**
|
|
34
|
-
* §10.6 status mapping. A SAFE-tier `candidate_only`/`fixed` maps to status `completed` (back-compat — there is no
|
|
35
|
-
* `candidate_only` status member; the candidate state rides on `repairTerminal`, and the merge push chokepoint
|
|
36
|
-
* holds the push). Every other terminal is a NON-mergeable abstain/failure → `failed` (quarantined), carrying the
|
|
37
|
-
* terminal as the WHY (no-silent-failures). `gave_up`/`oracle.unprotected` → `failed`; `needs_human_oracle`/
|
|
38
|
-
* `conflict` → `failed` too (the HTTP layer re-reads `repairTerminal` to surface `needs_human`, `endpoint.ts:75`).
|
|
39
|
-
*/
|
|
40
3
|
function statusForTerminal(t) {
|
|
41
4
|
return t === "fixed" || t === "candidate_only" ? "completed" : "failed";
|
|
42
5
|
}
|
|
43
|
-
/**
|
|
44
|
-
* §3.3 — run the bounded single-agent self-repair loop over the solo worker and map the result to a `WorkerReport`
|
|
45
|
-
* (with `repairTerminal` set — §10.6). Builds the `RepairOracle` closure (capturing the worker-diff source, the
|
|
46
|
-
* grader handle, `integBase`, the trusted steps, the resolved model ids), then calls `runRepairLoop` with
|
|
47
|
-
* `graderEnv` = the integration sandbox, `workerEnv` = the solo worker's env (so the identity check is LIVE),
|
|
48
|
-
* OMITTING `immutableOraclePaths` (§10.2). Never throws — a thrown engine error maps to a `failed` report so the
|
|
49
|
-
* leader's "never throws" contract holds. The held candidate (`candidate_only` etc.) is surfaced DELIMITED (§10.7).
|
|
50
|
-
*/
|
|
51
6
|
export async function runRepairLoopForLeader(solo, implSpec, cfg) {
|
|
52
7
|
try {
|
|
53
8
|
return await runRepairLoopForLeaderInner(solo, implSpec, cfg);
|
|
54
9
|
}
|
|
55
10
|
finally {
|
|
56
|
-
// Reap the dedicated grader sandbox on EVERY path (success, abstain, or a thrown engine error). The grader is
|
|
57
|
-
// a separate provisioned sandbox the wire minted for this loop; the inner fn never throws (its own try/catch
|
|
58
|
-
// maps an engine error to a failed report), so this `finally` runs once per loop.
|
|
59
11
|
if (cfg.graderDestroy)
|
|
60
12
|
await cfg.graderDestroy().catch(() => { });
|
|
61
13
|
}
|
|
62
14
|
}
|
|
63
15
|
async function runRepairLoopForLeaderInner(solo, implSpec, cfg) {
|
|
64
16
|
const base = { workerId: solo.workerId, sessionId: solo.sessionId, branch: solo.branch, baseSha: solo.baseSha };
|
|
65
|
-
// fork2.2 — capture the EXACT bytes the oracle graded (the last verdict) so the surfaced
|
|
66
|
-
// candidate == the graded artifact: a human reviews the bytes that produced the terminal, never a later re-pull
|
|
67
|
-
// that may have drifted. Updated on every oracle call; the last one is the artifact the terminal is about.
|
|
68
17
|
let graded;
|
|
69
18
|
const oracle = mkRepairOracle({
|
|
70
19
|
pullWorkerDiff: cfg.pullWorkerDiff,
|
|
@@ -73,7 +22,7 @@ async function runRepairLoopForLeaderInner(solo, implSpec, cfg) {
|
|
|
73
22
|
integBase: cfg.grader.integBase,
|
|
74
23
|
oracleSteps: cfg.oracleSteps,
|
|
75
24
|
passTier: cfg.passTier,
|
|
76
|
-
...(cfg.oraclePaths ? { oraclePaths: cfg.oraclePaths } : {}),
|
|
25
|
+
...(cfg.oraclePaths ? { oraclePaths: cfg.oraclePaths } : {}),
|
|
77
26
|
onGraded: (info) => { graded = { diff: info.diff, hash: info.hash }; },
|
|
78
27
|
...(cfg.flakyK !== undefined ? { flakyK: cfg.flakyK } : {}),
|
|
79
28
|
...(cfg.l3 ? { l3: cfg.l3 } : {}),
|
|
@@ -84,11 +33,6 @@ async function runRepairLoopForLeaderInner(solo, implSpec, cfg) {
|
|
|
84
33
|
result = await runRepairLoop(cfg.runner, implSpec, {
|
|
85
34
|
oracle,
|
|
86
35
|
graderEnv: cfg.grader.env,
|
|
87
|
-
// §10.2 — pass workerEnv ONLY when present (the static E2B lane, where the leader owns the worker env) so
|
|
88
|
-
// the LIVE identity check runs; OMIT it on the factory lane where the worker's raw env is not surfaced
|
|
89
|
-
// (runRepairLoop then SKIPS the check + fires onWarn — fine, the grader is a separate sandbox by
|
|
90
|
-
// construction). Either way OMIT immutableOraclePaths (the structural probe is vacuous across distinct
|
|
91
|
-
// sandboxes; the bare graderEnv !== workerEnv check is sufficient SAFE-tier).
|
|
92
36
|
...(cfg.workerEnv ? { workerEnv: cfg.workerEnv } : {}),
|
|
93
37
|
maxAttempts: cfg.maxAttempts,
|
|
94
38
|
...(cfg.resumeBundle ? { resumeBundle: cfg.resumeBundle } : {}),
|
|
@@ -112,15 +56,8 @@ async function runRepairLoopForLeaderInner(solo, implSpec, cfg) {
|
|
|
112
56
|
...(result.stats ? { stats: result.stats } : {}),
|
|
113
57
|
...(result.errorMessage ? { error: result.errorMessage } : {}),
|
|
114
58
|
};
|
|
115
|
-
// §10.7 — surface a held candidate DELIMITED. `reason` is sourced ONLY from the core-sanitized verification
|
|
116
|
-
// findings (never the raw oracle trace tail, which is untrusted worker-adjacent text). Surface on any non-
|
|
117
|
-
// auto-accepting terminal that still carries usable worker output (candidate_only / needs_human_oracle /
|
|
118
|
-
// gave_up / conflict). `oracle.unprotected` is an infra-isolation failure → no candidate to surface.
|
|
119
59
|
let candidatePatch;
|
|
120
60
|
if (terminal !== "oracle.unprotected" && terminal !== "fixed") {
|
|
121
|
-
// fork2.2 — surface the EXACT bytes the oracle graded (the last verdict's diff + its hash), so the human
|
|
122
|
-
// reviews the artifact that produced this terminal — never a later re-pull that may have drifted. Fall back
|
|
123
|
-
// to a fresh pull only if the loop somehow reached here without a graded diff (defensive; hash unknown).
|
|
124
61
|
const g = graded ??
|
|
125
62
|
(await (async () => {
|
|
126
63
|
const d = await cfg.pullWorkerDiff().catch((e) => ({ ok: false, error: e instanceof Error ? e.message : String(e) }));
|
|
@@ -139,25 +76,11 @@ async function runRepairLoopForLeaderInner(solo, implSpec, cfg) {
|
|
|
139
76
|
cfg.log?.("repair_loop_outcome", { terminal, status: report.status, hasCandidate: candidatePatch !== undefined });
|
|
140
77
|
return { report, result, ...(candidatePatch ? { candidatePatch } : {}) };
|
|
141
78
|
}
|
|
142
|
-
/**
|
|
143
|
-
* §10.8 — the SINGLE wire-call helper. Attaches the `LeaderDeps.repairLoop` dep (the opt-in single-agent repair
|
|
144
|
-
* loop) using the integration sandbox as the grader (R1). `wire.ts` calls this ONCE per integration-sandbox path
|
|
145
|
-
* instead of editing its dense provision spreads. When `cfg` is absent (LEADER_REPAIR_LOOP off) it is a NO-OP →
|
|
146
|
-
* `deps.repairLoop` stays unset → the leader's single-agent paths are byte-identical to today.
|
|
147
|
-
*
|
|
148
|
-
* The wire supplies a `resolve(solo, sub)` that, per solo worker, produces the concrete `RepairWireCfg` (the real
|
|
149
|
-
* Runner + the worker env ref + the worker diff source bound to THAT worker). Kept as a callback so the grader
|
|
150
|
-
* handle / steps / model ids the wire already holds are closed over once, and only the per-worker bindings are
|
|
151
|
-
* resolved at call time.
|
|
152
|
-
*/
|
|
153
79
|
export function attachRepairLoopDeps(deps, resolve) {
|
|
154
80
|
if (!resolve)
|
|
155
|
-
return;
|
|
81
|
+
return;
|
|
156
82
|
deps.repairLoop = {
|
|
157
83
|
run: async (solo, sub) => {
|
|
158
|
-
// `resolve` is ASYNC: it provisions a DEDICATED grader sandbox (seed + inject-oracle) for THIS loop, which
|
|
159
|
-
// is async. The grader lifecycle (destroy) rides on the returned `RepairWireCfg.graderDestroy`, reaped in
|
|
160
|
-
// `runRepairLoopForLeader`'s `finally`.
|
|
161
84
|
const cfg = await resolve(solo, sub);
|
|
162
85
|
const implSpec = { ...sub.spec, sessionId: solo.sessionId };
|
|
163
86
|
return runRepairLoopForLeader(solo, implSpec, cfg);
|