humanish 0.106.0 → 0.107.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/AGENTS.md +4 -2
- package/ARCHITECTURE.md +17 -16
- package/CHANGELOG.md +24 -0
- package/CONTEXT.md +42 -39
- package/CONTRIBUTING.md +8 -6
- package/README.md +8 -3
- package/dist/actors/codex/app-server-client.js +2 -1
- package/dist/actors/codex/app-server-trace.d.ts +0 -1
- package/dist/actors/codex/app-server-trace.js +1 -3
- package/dist/actors/codex/app-server.js +2 -1
- package/dist/actors/codex/protocol-compat.d.ts +27 -0
- package/dist/actors/codex/protocol-compat.js +357 -0
- package/dist/actors/codex/protocol-contract.d.ts +61 -0
- package/dist/actors/codex/protocol-contract.js +471 -0
- package/dist/actors/codex/qualified-versions.d.ts +31 -4
- package/dist/actors/codex/qualified-versions.js +51 -6
- package/dist/actors/codex/restricted-executable.d.ts +24 -0
- package/dist/actors/codex/restricted-executable.js +97 -22
- package/dist/actors/codex/restricted-launch.d.ts +7 -1
- package/dist/actors/codex/restricted-launch.js +42 -3
- package/dist/actors/codex/restricted-notifications.d.ts +101 -0
- package/dist/actors/codex/restricted-notifications.js +277 -0
- package/dist/actors/codex/restricted-participant.d.ts +30 -0
- package/dist/actors/codex/restricted-participant.js +60 -2
- package/dist/actors/codex/restricted-policy.d.ts +9 -1
- package/dist/actors/codex/restricted-session.d.ts +14 -1
- package/dist/actors/codex/restricted-session.js +50 -17
- package/dist/actors/codex/restricted-transport.d.ts +29 -0
- package/dist/actors/codex/restricted-transport.js +139 -27
- package/dist/actors/codex/restricted-turn.d.ts +19 -4
- package/dist/actors/codex/restricted-turn.js +43 -30
- package/dist/actors/computer-use/actor.d.ts +1 -1
- package/dist/actors/computer-use/actor.js +4 -4
- package/dist/actors/computer-use/loop/backstop.js +1 -1
- package/dist/actors/computer-use/loop/ending.d.ts +2 -2
- package/dist/actors/computer-use/loop/ending.js +2 -2
- package/dist/actors/computer-use/loop/spend.d.ts +1 -1
- package/dist/actors/computer-use/loop/spend.js +3 -3
- package/dist/actors/computer-use/loop/trace.js +2 -2
- package/dist/actors/computer-use/loop/types.d.ts +14 -5
- package/dist/actors/computer-use/loop.js +4 -4
- package/dist/actors/computer-use/openai-provider.d.ts +1 -1
- package/dist/actors/computer-use/openai-provider.js +2 -2
- package/dist/actors/contract.d.ts +10 -8
- package/dist/actors/contract.js +7 -1
- package/dist/actors/local-agent/cli.js +1 -1
- package/dist/actors/scripted-browser/actor.d.ts +2 -2
- package/dist/actors/scripted-browser/journey.js +15 -4
- package/dist/actors/scripted-browser/steps.js +18 -0
- package/dist/actors/scripted-browser/types.d.ts +11 -1
- package/dist/actors/stop-conditions.js +1 -3
- package/dist/analysis/automatic-completion.d.ts +13 -8
- package/dist/analysis/automatic-completion.js +14 -8
- package/dist/analysis/automatic-config.d.ts +1 -1
- package/dist/analysis/automatic-config.js +2 -2
- package/dist/analysis/automatic.d.ts +10 -4
- package/dist/analysis/automatic.js +17 -13
- package/dist/analysis/diagnostics.d.ts +23 -0
- package/dist/analysis/diagnostics.js +112 -0
- package/dist/analysis/evidence-sources.js +2 -2
- package/dist/analysis/evidence.js +6 -6
- package/dist/analysis/execute.d.ts +7 -1
- package/dist/analysis/execute.js +39 -12
- package/dist/analysis/job.d.ts +8 -5
- package/dist/analysis/job.js +15 -14
- package/dist/analysis/load.d.ts +1 -1
- package/dist/analysis/load.js +5 -5
- package/dist/analysis/provider.d.ts +9 -1
- package/dist/analysis/restricted-codex.d.ts +2 -0
- package/dist/analysis/restricted-codex.js +10 -1
- package/dist/analysis/service.d.ts +2 -0
- package/dist/analysis/service.js +31 -12
- package/dist/analysis/sharing.d.ts +2 -2
- package/dist/analysis/sharing.js +5 -5
- package/dist/analysis/store-executions.d.ts +5 -5
- package/dist/analysis/store-executions.js +12 -12
- package/dist/analysis/store.d.ts +4 -4
- package/dist/analysis/store.js +13 -13
- package/dist/cli/commands/analysis-signals.d.ts +2 -1
- package/dist/cli/commands/analysis-signals.js +4 -1
- package/dist/cli/commands/analyze.js +4 -2
- package/dist/cli/commands/comms.js +8 -1
- package/dist/cli/commands/lab-route-computer-use.d.ts +0 -2
- package/dist/cli/commands/lab-route-computer-use.js +26 -14
- package/dist/cli/commands/lab-route-preview.d.ts +1 -3
- package/dist/cli/commands/lab-route-preview.js +3 -4
- package/dist/cli/commands/lab-route-run.d.ts +6 -4
- package/dist/cli/commands/lab-route-run.js +6 -2
- package/dist/cli/commands/lab-route-scripted.d.ts +0 -2
- package/dist/cli/commands/lab-route-scripted.js +0 -1
- package/dist/cli/commands/lab-route-shared-world.d.ts +0 -2
- package/dist/cli/commands/lab-route-shared-world.js +0 -1
- package/dist/cli/commands/lab-route-terminal.d.ts +0 -2
- package/dist/cli/commands/lab-route-terminal.js +0 -1
- package/dist/cli/commands/lab-run.js +76 -45
- package/dist/cli/commands/lab-scorer.d.ts +0 -2
- package/dist/cli/commands/lab.js +12 -6
- package/dist/cli/commands/observe.js +22 -0
- package/dist/cli/commands/run-signals.d.ts +30 -0
- package/dist/cli/commands/run-signals.js +146 -0
- package/dist/cli/commands/runs.js +10 -8
- package/dist/cli/commands/watch.js +12 -10
- package/dist/cli/doctor.d.ts +3 -0
- package/dist/cli/doctor.js +10 -2
- package/dist/cli/io.d.ts +5 -4
- package/dist/cli/io.js +12 -8
- package/dist/cli/program.js +3 -3
- package/dist/cli/renamed-options.d.ts +11 -0
- package/dist/cli/renamed-options.js +18 -0
- package/dist/cli/telemetry.d.ts +2 -2
- package/dist/cli/telemetry.js +1 -1
- package/dist/comms/capture-surface.d.ts +1 -1
- package/dist/comms/catch-host.d.ts +1 -1
- package/dist/comms/connections.js +4 -4
- package/dist/comms/external-evidence.d.ts +27 -0
- package/dist/comms/external-evidence.js +93 -0
- package/dist/comms/lease-store.js +7 -7
- package/dist/comms/types.js +1 -1
- package/dist/evidence/browser-hygiene.d.ts +1 -1
- package/dist/evidence/browser-hygiene.js +1 -1
- package/dist/evidence/redaction.js +1 -1
- package/dist/evidence/secret-scrub.d.ts +9 -0
- package/dist/evidence/secret-scrub.js +96 -0
- package/dist/feedback/draft.js +7 -9
- package/dist/feedback/export-bundle.js +4 -4
- package/dist/feedback/export.js +9 -9
- package/dist/feedback/feedback.d.ts +1 -1
- package/dist/index.d.ts +3 -6
- package/dist/index.js +3 -6
- package/dist/keys/key-resolution.d.ts +3 -1
- package/dist/keys/key-resolution.js +18 -16
- package/dist/lab/adapter-extension.d.ts +28 -6
- package/dist/lab/adapter-extension.js +65 -126
- package/dist/lab/adapter-scorer-loader.d.ts +25 -5
- package/dist/lab/adapter-scorer-loader.js +24 -0
- package/dist/lab/composition-rules.d.ts +2 -0
- package/dist/lab/composition-rules.js +35 -26
- package/dist/lab/config.js +28 -26
- package/dist/lab/device-presets.d.ts +2 -2
- package/dist/lab/discover.js +1 -3
- package/dist/lab/doctor.d.ts +44 -9
- package/dist/lab/doctor.js +149 -41
- package/dist/lab/init-plan.js +1 -3
- package/dist/lab/keys.js +1 -1
- package/dist/lab/lab-deps.d.ts +85 -0
- package/dist/lab/lab-deps.js +4 -0
- package/dist/lab/parse/actors.js +8 -7
- package/dist/lab/parse/comms.js +3 -2
- package/dist/lab/parse/execution.js +3 -2
- package/dist/lab/parse/subject-state.js +2 -1
- package/dist/lab/parse/subject.js +2 -1
- package/dist/lab/parse/values.d.ts +0 -1
- package/dist/lab/parse/values.js +0 -3
- package/dist/lab/persona-resolve.d.ts +3 -3
- package/dist/lab/persona-resolve.js +4 -4
- package/dist/lab/persona.js +1 -3
- package/dist/lab/plan-base.d.ts +6 -2
- package/dist/lab/plan-base.js +22 -7
- package/dist/lab/plan-participants.d.ts +5 -5
- package/dist/lab/plan-participants.js +2 -2
- package/dist/lab/plan-types.d.ts +33 -7
- package/dist/lab/plan.d.ts +3 -11
- package/dist/lab/plan.js +18 -42
- package/dist/lab/preflight-result.js +0 -2
- package/dist/lab/preflight.d.ts +0 -3
- package/dist/lab/preflight.js +1 -1
- package/dist/lab/requirements.d.ts +20 -0
- package/dist/lab/requirements.js +54 -0
- package/dist/lab/route-inputs.d.ts +23 -12
- package/dist/lab/route-inputs.js +48 -51
- package/dist/lab/routing.d.ts +19 -24
- package/dist/lab/routing.js +14 -47
- package/dist/lab/run-lab-events.d.ts +6 -11
- package/dist/lab/run-lab-events.js +3 -11
- package/dist/lab/run-lab-homes.d.ts +64 -0
- package/dist/lab/run-lab-homes.js +3 -0
- package/dist/lab/run-lab-options.d.ts +12 -66
- package/dist/lab/run-lab-options.js +45 -275
- package/dist/lab/summary.d.ts +9 -4
- package/dist/lab/summary.js +15 -8
- package/dist/lab/types.d.ts +132 -132
- package/dist/lab/validation.d.ts +15 -15
- package/dist/lab/validation.js +28 -28
- package/dist/lab/warnings.js +20 -19
- package/dist/observer/artifact.d.ts +1 -1
- package/dist/observer/artifact.js +3 -3
- package/dist/observer/data.js +2 -2
- package/dist/observer/render.js +2 -2
- package/dist/observer/run-routes.d.ts +1 -1
- package/dist/observer/run-routes.js +5 -5
- package/dist/observer/serve.d.ts +17 -0
- package/dist/observer/serve.js +34 -3
- package/dist/observer-app.html +1 -1
- package/dist/routes/computer-use/bundle-parts.d.ts +1 -1
- package/dist/routes/computer-use/bundle-parts.js +10 -3
- package/dist/routes/computer-use/bundle.d.ts +4 -11
- package/dist/routes/computer-use/bundle.js +9 -15
- package/dist/routes/computer-use/diagnostics.d.ts +1 -1
- package/dist/routes/computer-use/diagnostics.js +1 -1
- package/dist/routes/computer-use/e2b-desktop/comms.d.ts +10 -10
- package/dist/routes/computer-use/e2b-desktop/comms.js +11 -14
- package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +2 -2
- package/dist/routes/computer-use/e2b-desktop/desktop.js +4 -7
- package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +13 -13
- package/dist/routes/computer-use/e2b-desktop/fidelity.js +11 -11
- package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +3 -3
- package/dist/routes/computer-use/e2b-desktop/prepare.js +33 -36
- package/dist/routes/computer-use/e2b-desktop/start.d.ts +1 -1
- package/dist/routes/computer-use/e2b-desktop/start.js +24 -23
- package/dist/routes/computer-use/e2b-desktop/state.d.ts +5 -4
- package/dist/routes/computer-use/e2b-desktop/state.js +5 -3
- package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +1 -1
- package/dist/routes/computer-use/e2b-desktop/teardown.js +29 -17
- package/dist/routes/computer-use/external-comms.d.ts +4 -4
- package/dist/routes/computer-use/external-comms.js +19 -43
- package/dist/routes/computer-use/fanout-bundle.d.ts +3 -3
- package/dist/routes/computer-use/fanout-bundle.js +25 -29
- package/dist/routes/computer-use/{fanout-lanes.js → fanout-records.js} +25 -19
- package/dist/routes/computer-use/in-process-desktop.d.ts +3 -10
- package/dist/routes/computer-use/in-process-desktop.js +3 -9
- package/dist/routes/computer-use/live-flush.d.ts +7 -5
- package/dist/routes/computer-use/live-flush.js +19 -27
- package/dist/routes/computer-use/{run-lanes.js → live-phase.js} +14 -13
- package/dist/routes/computer-use/local-tree-pack.d.ts +3 -3
- package/dist/routes/computer-use/local-tree-pack.js +4 -5
- package/dist/routes/computer-use/local-vm.d.ts +11 -8
- package/dist/routes/computer-use/local-vm.js +39 -66
- package/dist/routes/computer-use/participant-desktop.d.ts +8 -23
- package/dist/routes/computer-use/participant-desktop.js +5 -25
- package/dist/routes/computer-use/{lanes.d.ts → participant-execution.d.ts} +10 -10
- package/dist/routes/computer-use/{lanes.js → participant-execution.js} +35 -22
- package/dist/routes/computer-use/participant-facts.d.ts +7 -1
- package/dist/routes/computer-use/participant-facts.js +12 -1
- package/dist/routes/computer-use/participant-model.d.ts +19 -11
- package/dist/routes/computer-use/participant-model.js +58 -33
- package/dist/routes/computer-use/participant-prompt.d.ts +3 -3
- package/dist/routes/computer-use/participant-prompt.js +4 -4
- package/dist/routes/computer-use/participant-runs.d.ts +6 -6
- package/dist/routes/computer-use/participant-runs.js +8 -8
- package/dist/routes/computer-use/plan.d.ts +21 -29
- package/dist/routes/computer-use/plan.js +59 -65
- package/dist/routes/computer-use/preflight.d.ts +6 -11
- package/dist/routes/computer-use/preflight.js +26 -18
- package/dist/routes/computer-use/rerun-selection.js +10 -6
- package/dist/routes/computer-use/result.d.ts +1 -1
- package/dist/routes/computer-use/result.js +40 -30
- package/dist/routes/computer-use/route.d.ts +3 -4
- package/dist/routes/computer-use/route.js +21 -19
- package/dist/routes/computer-use/self-report.d.ts +2 -2
- package/dist/routes/computer-use/self-report.js +4 -4
- package/dist/routes/computer-use/setup.d.ts +8 -17
- package/dist/routes/computer-use/setup.js +98 -86
- package/dist/routes/computer-use/single-bundle.d.ts +8 -11
- package/dist/routes/computer-use/single-bundle.js +20 -25
- package/dist/routes/computer-use/subject-projection.d.ts +5 -7
- package/dist/routes/computer-use/subject-projection.js +20 -19
- package/dist/routes/computer-use/types.d.ts +169 -211
- package/dist/routes/computer-use/types.js +13 -6
- package/dist/routes/preview.js +0 -1
- package/dist/routes/scripted/bundle.d.ts +3 -6
- package/dist/routes/scripted/bundle.js +11 -16
- package/dist/routes/scripted/plan.d.ts +5 -7
- package/dist/routes/scripted/plan.js +6 -4
- package/dist/routes/scripted/result.d.ts +4 -1
- package/dist/routes/scripted/result.js +10 -6
- package/dist/routes/scripted/route.js +10 -11
- package/dist/routes/scripted/scenario.d.ts +1 -1
- package/dist/routes/scripted/scenario.js +1 -1
- package/dist/routes/scripted/setup.d.ts +3 -2
- package/dist/routes/scripted/setup.js +22 -21
- package/dist/routes/scripted/subject.d.ts +8 -3
- package/dist/routes/scripted/subject.js +11 -6
- package/dist/routes/scripted/surface-records.js +1 -1
- package/dist/routes/scripted/surface-sessions.d.ts +2 -2
- package/dist/routes/scripted/surface-sessions.js +4 -4
- package/dist/routes/scripted/types.d.ts +19 -36
- package/dist/routes/scripted/types.js +1 -2
- package/dist/routes/shared-world/{seat-records.js → bundle-records.js} +8 -8
- package/dist/routes/shared-world/bundle.d.ts +2 -2
- package/dist/routes/shared-world/bundle.js +22 -26
- package/dist/routes/shared-world/checkpoints.d.ts +4 -4
- package/dist/routes/shared-world/checkpoints.js +4 -4
- package/dist/routes/shared-world/comms.d.ts +5 -4
- package/dist/routes/shared-world/comms.js +28 -41
- package/dist/routes/shared-world/external-public.d.ts +5 -5
- package/dist/routes/shared-world/external-public.js +19 -20
- package/dist/routes/shared-world/handoff.d.ts +4 -4
- package/dist/routes/shared-world/handoff.js +50 -50
- package/dist/routes/shared-world/lobby-code.d.ts +5 -5
- package/dist/routes/shared-world/lobby-code.js +13 -13
- package/dist/routes/shared-world/{seats.d.ts → participant-specs.d.ts} +8 -6
- package/dist/routes/shared-world/{seats.js → participant-specs.js} +46 -51
- package/dist/routes/shared-world/plan.d.ts +2 -6
- package/dist/routes/shared-world/plan.js +1 -2
- package/dist/routes/shared-world/provenance.d.ts +4 -4
- package/dist/routes/shared-world/provenance.js +4 -4
- package/dist/routes/shared-world/provisioned.d.ts +3 -2
- package/dist/routes/shared-world/provisioned.js +48 -41
- package/dist/routes/shared-world/result.js +31 -19
- package/dist/routes/shared-world/route.js +37 -41
- package/dist/routes/shared-world/setup.d.ts +5 -4
- package/dist/routes/shared-world/setup.js +12 -14
- package/dist/routes/shared-world/types.d.ts +53 -126
- package/dist/routes/shared-world/types.js +2 -2
- package/dist/routes/terminal/adapter.d.ts +8 -8
- package/dist/routes/terminal/adapter.js +28 -125
- package/dist/routes/terminal/bundle.d.ts +7 -12
- package/dist/routes/terminal/bundle.js +24 -34
- package/dist/routes/terminal/credentials.d.ts +2 -2
- package/dist/routes/terminal/credentials.js +16 -16
- package/dist/routes/terminal/dry-run.d.ts +1 -1
- package/dist/routes/terminal/dry-run.js +9 -11
- package/dist/routes/terminal/encoding.d.ts +1 -1
- package/dist/routes/terminal/encoding.js +2 -2
- package/dist/routes/terminal/ledger.d.ts +6 -6
- package/dist/routes/terminal/ledger.js +9 -9
- package/dist/routes/terminal/live-finish.d.ts +1 -2
- package/dist/routes/terminal/live-finish.js +21 -20
- package/dist/routes/terminal/live-sandbox.d.ts +4 -2
- package/dist/routes/terminal/live-sandbox.js +25 -21
- package/dist/routes/terminal/participant-text.d.ts +23 -0
- package/dist/routes/terminal/participant-text.js +165 -0
- package/dist/routes/terminal/plan.d.ts +2 -6
- package/dist/routes/terminal/plan.js +13 -9
- package/dist/routes/terminal/recorder.d.ts +6 -1
- package/dist/routes/terminal/recorder.js +12 -4
- package/dist/routes/terminal/result.js +4 -4
- package/dist/routes/terminal/route.js +26 -26
- package/dist/routes/terminal/runtime.d.ts +3 -2
- package/dist/routes/terminal/runtime.js +3 -3
- package/dist/routes/terminal/sandbox.d.ts +5 -3
- package/dist/routes/terminal/sandbox.js +13 -16
- package/dist/routes/terminal/session.js +16 -14
- package/dist/routes/terminal/token-usage.js +5 -5
- package/dist/routes/terminal/trace.d.ts +5 -8
- package/dist/routes/terminal/trace.js +9 -64
- package/dist/routes/terminal/types.d.ts +85 -93
- package/dist/routes/terminal/types.js +9 -4
- package/dist/run/active-runs.d.ts +13 -0
- package/dist/run/active-runs.js +12 -0
- package/dist/run/bundle-shape.d.ts +2 -1
- package/dist/run/bundle-shape.js +4 -4
- package/dist/run/bundle.d.ts +63 -56
- package/dist/run/bundle.js +9 -8
- package/dist/run/cost-summary.js +3 -2
- package/dist/run/costs.d.ts +6 -6
- package/dist/run/costs.js +10 -10
- package/dist/run/detail.d.ts +5 -5
- package/dist/run/detail.js +6 -6
- package/dist/run/dry-run.js +5 -12
- package/dist/run/{study-files.d.ts → evidence-files.d.ts} +4 -4
- package/dist/run/{study-files.js → evidence-files.js} +5 -5
- package/dist/run/feedback-shape.js +1 -1
- package/dist/run/judge.d.ts +16 -4
- package/dist/run/judge.js +24 -7
- package/dist/run/locate.d.ts +2 -0
- package/dist/run/locate.js +3 -1
- package/dist/run/outcomes.d.ts +3 -3
- package/dist/run/outcomes.js +3 -3
- package/dist/run/participant-records.d.ts +2 -2
- package/dist/run/participant-records.js +2 -2
- package/dist/run/paths.js +1 -1
- package/dist/run/pricing.d.ts +19 -9
- package/dist/run/pricing.js +30 -18
- package/dist/run/projection.d.ts +13 -13
- package/dist/run/projection.js +8 -8
- package/dist/run/reclaim.d.ts +7 -1
- package/dist/run/reclaim.js +24 -4
- package/dist/run/results.d.ts +1 -1
- package/dist/run/run-index.d.ts +1 -1
- package/dist/run/run-index.js +11 -11
- package/dist/run/run.d.ts +4 -2
- package/dist/run/run.js +9 -5
- package/dist/run/sandbox-receipts.d.ts +4 -4
- package/dist/run/sandbox-receipts.js +4 -4
- package/dist/run/shared-world-evidence.d.ts +47 -47
- package/dist/run/shared-world-shape.d.ts +3 -3
- package/dist/run/shared-world-shape.js +11 -11
- package/dist/run/stats.d.ts +5 -5
- package/dist/run/stats.js +8 -8
- package/dist/run/status.d.ts +16 -6
- package/dist/run/status.js +31 -8
- package/dist/run/streams.d.ts +26 -19
- package/dist/run/terminal-contract.d.ts +5 -5
- package/dist/run/terminal-contract.js +4 -4
- package/dist/run/transient-comms-secrets.d.ts +5 -0
- package/dist/run/transient-comms-secrets.js +12 -0
- package/dist/run-lab.d.ts +36 -34
- package/dist/run-lab.js +41 -37
- package/dist/subject/desktop-cli.d.ts +1 -1
- package/dist/subject/desktop-cli.js +1 -1
- package/dist/subject/local-tree-archive.d.ts +1 -1
- package/dist/subject/local-tree-archive.js +4 -4
- package/dist/subject/local-tree.d.ts +2 -2
- package/dist/subject/local-tree.js +1 -1
- package/dist/subject/node-bootstrap.d.ts +1 -1
- package/dist/subject/node-bootstrap.js +4 -4
- package/dist/subject/runtime.js +5 -5
- package/dist/subject/serve.js +1 -1
- package/dist/subject/steps.d.ts +4 -4
- package/dist/subject/steps.js +5 -5
- package/dist/substrates/desktop-session.d.ts +2 -0
- package/dist/substrates/e2b/cdp-probe.d.ts +2 -2
- package/dist/substrates/e2b/cdp-probe.js +1 -1
- package/dist/substrates/e2b/desktop-browser.d.ts +3 -3
- package/dist/substrates/e2b/desktop-browser.js +4 -4
- package/dist/substrates/e2b/desktop-cdp.d.ts +7 -7
- package/dist/substrates/e2b/desktop-cdp.js +4 -4
- package/dist/substrates/e2b/desktop-geometry.d.ts +4 -4
- package/dist/substrates/e2b/desktop-geometry.js +3 -3
- package/dist/substrates/e2b/desktop-media.js +2 -2
- package/dist/substrates/e2b/sandbox.d.ts +2 -0
- package/dist/substrates/e2b/sandbox.js +22 -8
- package/dist/substrates/e2b/sdk.d.ts +12 -1
- package/dist/substrates/e2b/sdk.js +30 -9
- package/dist/substrates/local/runtime-host.d.ts +2 -0
- package/dist/substrates/local/runtime-host.js +6 -0
- package/dist/tui/actions.d.ts +7 -5
- package/dist/tui/actions.js +18 -9
- package/dist/tui-app.js +42 -42
- package/dist/verify/actor.d.ts +10 -10
- package/dist/verify/actor.js +15 -15
- package/dist/verify/artifacts.d.ts +1 -1
- package/dist/verify/artifacts.js +3 -3
- package/dist/verify/costs.d.ts +2 -2
- package/dist/verify/costs.js +2 -2
- package/dist/verify/liveness.d.ts +1 -1
- package/dist/verify/liveness.js +4 -1
- package/dist/verify/rerun.d.ts +1 -1
- package/dist/verify/rerun.js +1 -1
- package/dist/verify/shared-world.js +2 -2
- package/dist/verify/verify.js +6 -6
- package/docs/README.md +1 -1
- package/docs/architecture/actor-contract.md +60 -22
- package/docs/architecture/desktop-sessions.md +9 -9
- package/docs/architecture/external-public-shared-world.md +5 -0
- package/docs/architecture/observer.md +4 -4
- package/docs/architecture/restricted-codex-analysis.md +40 -4
- package/docs/architecture/state-driven-executor.md +4 -5
- package/docs/architecture/task-protocol-support.md +3 -5
- package/docs/architecture/{terminal-product-lane.md → terminal-product-route.md} +24 -16
- package/docs/contracts/run-bundle.md +10 -8
- package/docs/contracts/schemas.md +109 -53
- package/docs/contracts/study-analysis.md +24 -0
- package/docs/decisions/0004-participant-desktops-stay-in-the-route.md +2 -1
- package/docs/product/automatic-analysis.md +1 -0
- package/docs/ramp/README.md +2 -1
- package/package.json +4 -4
- package/skills/humanish/SKILL.md +3 -2
- package/skills/humanish/agents/openai.yaml +1 -1
- package/dist/deprecated.d.ts +0 -90
- package/dist/deprecated.js +0 -106
- package/dist/lab/bag-overrides.d.ts +0 -18
- package/dist/lab/bag-overrides.js +0 -121
- package/dist/routes/computer-use/legacy-lane-spec.d.ts +0 -62
- package/dist/routes/computer-use/legacy-lane-spec.js +0 -39
- /package/dist/routes/computer-use/{fanout-lanes.d.ts → fanout-records.d.ts} +0 -0
- /package/dist/routes/computer-use/{run-lanes.d.ts → live-phase.d.ts} +0 -0
- /package/dist/routes/shared-world/{seat-records.d.ts → bundle-records.d.ts} +0 -0
|
@@ -3,8 +3,7 @@ import type { SubjectPhaseEvent } from "../../subject/steps.js";
|
|
|
3
3
|
import type { DesktopBrowserEvidence } from "../../substrates/e2b/desktop-browser.js";
|
|
4
4
|
import type { ActorPersonaRef } from "../../actors/contract.js";
|
|
5
5
|
import type { CuaLoopResult } from "../../actors/computer-use/loop.js";
|
|
6
|
-
import { type
|
|
7
|
-
import { type RunBundle, type RunFeedbackCandidate, type RunProviderResource } from "../../run/bundle.js";
|
|
6
|
+
import { type BundleRun, type RunBundle, type RunFeedbackCandidate, type RunProviderResource } from "../../run/bundle.js";
|
|
8
7
|
import { type RunDesktopGeometry, type RunStream } from "../../run/streams.js";
|
|
9
8
|
import { type Verdict } from "../../run/judge.js";
|
|
10
9
|
import { type DesktopUsage } from "../../run/cost-summary.js";
|
|
@@ -17,8 +16,8 @@ export declare function buildSingleParticipantBundle(args: {
|
|
|
17
16
|
/** The run's verdict, from the judge. */
|
|
18
17
|
verdict: Verdict;
|
|
19
18
|
realEmail?: boolean;
|
|
20
|
-
/**
|
|
21
|
-
|
|
19
|
+
/** The run this bundle belongs to; the bundle head reads its id, mode, start and lab. */
|
|
20
|
+
run: BundleRun;
|
|
22
21
|
actorId: string;
|
|
23
22
|
appUrl: string;
|
|
24
23
|
/** The participant's plan id, saved as the stream's laneId ("lane-01" when absent). */
|
|
@@ -26,7 +25,6 @@ export declare function buildSingleParticipantBundle(args: {
|
|
|
26
25
|
actorType?: string;
|
|
27
26
|
surface?: string;
|
|
28
27
|
caseGroup?: string;
|
|
29
|
-
createdAt: string;
|
|
30
28
|
dryRun: boolean;
|
|
31
29
|
labId: string;
|
|
32
30
|
labTitle?: string;
|
|
@@ -44,7 +42,6 @@ export declare function buildSingleParticipantBundle(args: {
|
|
|
44
42
|
/** Device-preset touch metadata echoed on the measured stream viewport (a prompt signal on
|
|
45
43
|
* this route, never a rendered claim); the measured width/height/DPR stay authoritative. */
|
|
46
44
|
isMobile?: boolean;
|
|
47
|
-
runId: string;
|
|
48
45
|
screenshots: string[];
|
|
49
46
|
/** Relative run-dir path of the digest-only comms-thread evidence artifact (humanish.comms-thread.v1),
|
|
50
47
|
* when a comms lab captured mail; registered as a "log" stream artifact. */
|
|
@@ -59,10 +56,10 @@ export declare function buildSingleParticipantBundle(args: {
|
|
|
59
56
|
session?: CuaLoopResult;
|
|
60
57
|
sessionError?: string;
|
|
61
58
|
/**
|
|
62
|
-
* The
|
|
63
|
-
* evidence of what it CLAIMED; whether the harness counts the claim is decided by the
|
|
59
|
+
* The route's own credibility read of a goal_satisfied session (#476). The actor's status is
|
|
60
|
+
* evidence of what it CLAIMED; whether the harness counts the claim is decided by the route
|
|
64
61
|
* (zero engagement, a final message that describes a blocker). The review has to say the same
|
|
65
|
-
* thing the
|
|
62
|
+
* thing the participant's exit code says, or the durable bundle reports a participant reaching the
|
|
66
63
|
* goal on a run the harness refused to count.
|
|
67
64
|
*/
|
|
68
65
|
credibility?: {
|
|
@@ -80,7 +77,7 @@ export declare function buildSingleParticipantBundle(args: {
|
|
|
80
77
|
* declared honestly as caller-provisioned/unpinned with no E2B. Absent: a plain app-url entry.
|
|
81
78
|
*/
|
|
82
79
|
entryKind?: "local-app";
|
|
83
|
-
/** The custom E2B desktop template (image) this
|
|
80
|
+
/** The custom E2B desktop template (image) this participant launched on, when configured (provenance). */
|
|
84
81
|
desktopTemplate?: string;
|
|
85
82
|
/** The configured browser choice and the command that opened, when explicitly configured. */
|
|
86
83
|
desktopBrowser?: DesktopBrowserEvidence;
|
|
@@ -90,7 +87,7 @@ export declare function buildSingleParticipantBundle(args: {
|
|
|
90
87
|
/** Completed subject-phase records (clone/upload/extract/install/build/ready/state groups)
|
|
91
88
|
* to fold into bundle.events, so run.json carries real phase timing after the fact. */
|
|
92
89
|
phaseEvents?: SubjectPhaseEvent[];
|
|
93
|
-
/** Host-side E2B desktop billed span for this
|
|
90
|
+
/** Host-side E2B desktop billed span for this participant, in minutes (from ParticipantRunOutcome
|
|
94
91
|
* desktopDurationMs). Absent when no sandbox ran (in-process/dry-run) → no desktop cost line. */
|
|
95
92
|
desktopMinutes?: number;
|
|
96
93
|
desktopUsage?: DesktopUsage;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { participantAssignment } from "../../lab/participant-assignment.js";
|
|
2
2
|
import { redactText } from "../../evidence/redaction.js";
|
|
3
|
-
import {} from "../../run/status.js";
|
|
4
3
|
import { REVIEW_SCHEMA, bundleArtifacts, bundleHead, } from "../../run/bundle.js";
|
|
5
4
|
import {} from "../../run/streams.js";
|
|
6
5
|
import { aggregateTaskFunnels, tallyParticipantOutcomes, withCuaReviewProvenance, } from "../../run/outcomes.js";
|
|
@@ -94,8 +93,8 @@ function singleSimulation(args, view) {
|
|
|
94
93
|
: args.sessionError !== undefined
|
|
95
94
|
? `Computer-use lab failed before a terminal session verdict: ${args.sessionError}`
|
|
96
95
|
: `Contract participant for the computer-use actor (${args.actorId}) against ${publicAppUrl}.`,
|
|
97
|
-
startedAt: args.createdAt,
|
|
98
|
-
updatedAt: args.createdAt,
|
|
96
|
+
startedAt: args.run.createdAt,
|
|
97
|
+
updatedAt: args.run.createdAt,
|
|
99
98
|
});
|
|
100
99
|
}
|
|
101
100
|
function singleStream(args, view) {
|
|
@@ -111,7 +110,7 @@ function singleStream(args, view) {
|
|
|
111
110
|
label: `CUA browser — ${args.labId}`,
|
|
112
111
|
status,
|
|
113
112
|
transport: "snapshot",
|
|
114
|
-
updatedAt: args.createdAt,
|
|
113
|
+
updatedAt: args.run.createdAt,
|
|
115
114
|
embed: lastScreenshot
|
|
116
115
|
? { kind: "screenshot", url: lastScreenshot, title: `CUA desktop (${screenshotMode})` }
|
|
117
116
|
: { kind: "placeholder", title: "CUA desktop" },
|
|
@@ -162,7 +161,7 @@ function singleEvents(args, view) {
|
|
|
162
161
|
const events = [
|
|
163
162
|
{
|
|
164
163
|
id: "event-000-created",
|
|
165
|
-
at: args.createdAt,
|
|
164
|
+
at: args.run.createdAt,
|
|
166
165
|
level: "info",
|
|
167
166
|
type: "cua-lab.run.created",
|
|
168
167
|
message: `Created computer-use lab run for ${args.labId} (actor ${args.actorId}).`,
|
|
@@ -170,7 +169,7 @@ function singleEvents(args, view) {
|
|
|
170
169
|
args.subjectProvenance
|
|
171
170
|
? participantEvent(SINGLE, {
|
|
172
171
|
id: "event-001-subject",
|
|
173
|
-
at: args.createdAt,
|
|
172
|
+
at: args.run.createdAt,
|
|
174
173
|
level: "info",
|
|
175
174
|
type: "cua-lab.subject.provenance",
|
|
176
175
|
// HONEST WORDING: claim "cloned/packed and served" only when it actually happened.
|
|
@@ -178,7 +177,7 @@ function singleEvents(args, view) {
|
|
|
178
177
|
})
|
|
179
178
|
: participantEvent(SINGLE, {
|
|
180
179
|
id: "event-001-subject",
|
|
181
|
-
at: args.createdAt,
|
|
180
|
+
at: args.run.createdAt,
|
|
182
181
|
level: "info",
|
|
183
182
|
type: "cua-lab.subject.declared",
|
|
184
183
|
// Invariant 5: declare what the subject WAS, including the ABSENCE of a pin. A
|
|
@@ -195,7 +194,7 @@ function singleEvents(args, view) {
|
|
|
195
194
|
args.session
|
|
196
195
|
? participantEvent(SINGLE, {
|
|
197
196
|
id: "event-002-session",
|
|
198
|
-
at: args.createdAt,
|
|
197
|
+
at: args.run.createdAt,
|
|
199
198
|
level: args.session.status === "passed" ? "info" : "warn",
|
|
200
199
|
type: `cua-lab.session.${args.session.completionReason}`,
|
|
201
200
|
message: `${args.session.status}: ${args.session.reason}`,
|
|
@@ -203,7 +202,7 @@ function singleEvents(args, view) {
|
|
|
203
202
|
: args.inProgress === true
|
|
204
203
|
? participantEvent(SINGLE, {
|
|
205
204
|
id: "event-002-running",
|
|
206
|
-
at: args.createdAt,
|
|
205
|
+
at: args.run.createdAt,
|
|
207
206
|
level: "info",
|
|
208
207
|
type: "cua-lab.session.running",
|
|
209
208
|
message: "Live computer-use session is running; terminal evidence has not been written yet.",
|
|
@@ -211,14 +210,14 @@ function singleEvents(args, view) {
|
|
|
211
210
|
: args.sessionError !== undefined
|
|
212
211
|
? participantEvent(SINGLE, {
|
|
213
212
|
id: "event-002-session",
|
|
214
|
-
at: args.createdAt,
|
|
213
|
+
at: args.run.createdAt,
|
|
215
214
|
level: "error",
|
|
216
215
|
type: "cua-lab.session.error",
|
|
217
216
|
message: args.sessionError,
|
|
218
217
|
})
|
|
219
218
|
: participantEvent(SINGLE, {
|
|
220
219
|
id: "event-002-contract",
|
|
221
|
-
at: args.createdAt,
|
|
220
|
+
at: args.run.createdAt,
|
|
222
221
|
level: "info",
|
|
223
222
|
type: "cua-lab.contract.ready",
|
|
224
223
|
message: "Dry-run contract bundle ready; switch scenario.mode to live for a real desktop session.",
|
|
@@ -242,7 +241,7 @@ function singleEvents(args, view) {
|
|
|
242
241
|
for (const warning of desktopGeometry?.warnings ?? []) {
|
|
243
242
|
record({
|
|
244
243
|
id: `event-${String(phaseEventSeq++).padStart(3, "0")}-geometry-warning`,
|
|
245
|
-
at: args.createdAt,
|
|
244
|
+
at: args.run.createdAt,
|
|
246
245
|
level: "warn",
|
|
247
246
|
type: "cua-lab.geometry.warning",
|
|
248
247
|
message: warning,
|
|
@@ -254,12 +253,12 @@ function singleReview(args, view, stream) {
|
|
|
254
253
|
const { reason } = view;
|
|
255
254
|
// A funnel with a denominator of one is still the funnel — and its absence stays honest: no
|
|
256
255
|
// declared protocol (or a dry run) means no `tasks` field, never an empty one.
|
|
257
|
-
const
|
|
256
|
+
const singleRunTasks = args.inProgress !== true && args.session?.trace.taskFunnel !== undefined
|
|
258
257
|
? aggregateTaskFunnels([args.session.trace.taskFunnel])
|
|
259
258
|
: undefined;
|
|
260
|
-
// What happened to the participant, as the
|
|
259
|
+
// What happened to the participant, as the route judged it — the same rule the fan-out roll-up
|
|
261
260
|
// applies (participantStatusForOutcome). Before #476 this read the actor's own status, so a
|
|
262
|
-
// run the
|
|
261
|
+
// run the route refused as "not a credible pass" was written up as verdict pass, 1/1 reached
|
|
263
262
|
// the goal, and every projection of the bundle (Observer tally, `runs`, the status index)
|
|
264
263
|
// repeated it. Found on a real drawDB run whose participant wrote "Blocked after partial
|
|
265
264
|
// completion".
|
|
@@ -274,14 +273,14 @@ function singleReview(args, view, stream) {
|
|
|
274
273
|
const review = withCuaReviewProvenance({
|
|
275
274
|
schema: REVIEW_SCHEMA,
|
|
276
275
|
verdict: args.verdict,
|
|
277
|
-
// One
|
|
278
|
-
// result from being read as though it generalized.
|
|
276
|
+
// One participant is still a study with a denominator of one, and saying so keeps a
|
|
277
|
+
// single-participant result from being read as though it generalized.
|
|
279
278
|
...(participantStatus !== undefined && args.inProgress !== true
|
|
280
279
|
? {
|
|
281
280
|
participants: tallyParticipantOutcomes([participantStatus], [args.credibility?.reportedFriction === true]),
|
|
282
281
|
}
|
|
283
282
|
: {}),
|
|
284
|
-
...(
|
|
283
|
+
...(singleRunTasks === undefined ? {} : { tasks: singleRunTasks }),
|
|
285
284
|
summary: credibilityNote === undefined ? reason : `${credibilityNote} ${reason}`,
|
|
286
285
|
gaps: args.session || args.sessionError !== undefined
|
|
287
286
|
? []
|
|
@@ -305,15 +304,11 @@ export function buildSingleParticipantBundle(args) {
|
|
|
305
304
|
const events = singleEvents(args, view);
|
|
306
305
|
const review = singleReview(args, view, stream);
|
|
307
306
|
return {
|
|
308
|
-
...bundleHead({
|
|
307
|
+
...bundleHead(args.run, {
|
|
309
308
|
...(args.realEmail && !args.dryRun
|
|
310
309
|
? { publication: { restrictions: ["real-communications"] } }
|
|
311
310
|
: {}),
|
|
312
|
-
runId: args.runId,
|
|
313
|
-
mode: args.dryRun ? "dry-run" : "live",
|
|
314
311
|
participants: 1,
|
|
315
|
-
createdAt: args.createdAt,
|
|
316
|
-
...(args.lab === undefined ? {} : { lab: args.lab }),
|
|
317
312
|
source: args.source,
|
|
318
313
|
}),
|
|
319
314
|
persona: {
|
|
@@ -331,7 +326,7 @@ export function buildSingleParticipantBundle(args) {
|
|
|
331
326
|
},
|
|
332
327
|
lifecycle: [
|
|
333
328
|
{
|
|
334
|
-
at: args.createdAt,
|
|
329
|
+
at: args.run.createdAt,
|
|
335
330
|
event: "cua-lab.run.created",
|
|
336
331
|
message: `Created computer-use lab run with one participant in a desktop browser (actor ${args.actorId}).`,
|
|
337
332
|
},
|
|
@@ -356,7 +351,7 @@ export function buildSingleParticipantBundle(args) {
|
|
|
356
351
|
feedbackCandidates: args.dryRun || args.inProgress === true
|
|
357
352
|
? []
|
|
358
353
|
: participantFeedbackCandidates({
|
|
359
|
-
runId: args.runId,
|
|
354
|
+
runId: args.run.runId,
|
|
360
355
|
scenarioId: `cua-${args.labId}`,
|
|
361
356
|
adapterId: args.labId,
|
|
362
357
|
goal: redactText(args.mission),
|
|
@@ -2,16 +2,14 @@ import type { ComputerUsePlan } from "../../lab/plan-types.js";
|
|
|
2
2
|
import type { LabSubjectState } from "../../lab/types.js";
|
|
3
3
|
import { type RunSubjectProvenance, type RunSubjectStateStepRecord } from "../../run/bundle.js";
|
|
4
4
|
import { type LocalTreeArchive } from "../../subject/local-tree-archive.js";
|
|
5
|
-
import { type CuaSubjectRoute } from "./plan.js";
|
|
6
5
|
import { type DesktopParticipantRun, type CuaSubjectProjection, type CuaSubjectProvenanceArg, type ParticipantRunOutcome } from "./types.js";
|
|
7
6
|
/**
|
|
8
|
-
* Each
|
|
7
|
+
* Each participant's subject projection. A participant's outcome adds the subject commit it resolved and the
|
|
9
8
|
* state steps it executed; without outcomes (dry run, or a run still in progress) the declared
|
|
10
9
|
* state is projected as not yet run.
|
|
11
10
|
*/
|
|
12
11
|
export declare function projectParticipantSubjects(args: {
|
|
13
12
|
plan: ComputerUsePlan;
|
|
14
|
-
subjectRoute: CuaSubjectRoute;
|
|
15
13
|
publicRepo?: string;
|
|
16
14
|
localTreeArchive?: LocalTreeArchive;
|
|
17
15
|
runs: readonly DesktopParticipantRun[];
|
|
@@ -35,10 +33,10 @@ export declare function resolveSubjectState(args: {
|
|
|
35
33
|
* default branch that builder already handles). */
|
|
36
34
|
export declare function subjectProvenanceArg(subject: CuaSubjectProjection, publicRepo: string | undefined, subjectEnvNames: string[]): CuaSubjectProvenanceArg | undefined;
|
|
37
35
|
/**
|
|
38
|
-
* The run-level subject for the top level and the bundle. Local-tree
|
|
39
|
-
* once-per-run archive, so every
|
|
40
|
-
* the first
|
|
41
|
-
* aggregate carries it only when every
|
|
36
|
+
* The run-level subject for the top level and the bundle. Local-tree participants all pack from the
|
|
37
|
+
* same once-per-run archive, so every participant already carries the identical archiveSha256/commit/dirty and
|
|
38
|
+
* the first participant's projection is the aggregate. Clone participants each resolve their own
|
|
39
|
+
* commit; the aggregate carries it only when every participant agrees, and warns when they diverge.
|
|
42
40
|
*/
|
|
43
41
|
export declare function aggregateCuaSubject(args: {
|
|
44
42
|
subjects: readonly CuaSubjectProjection[];
|
|
@@ -1,32 +1,33 @@
|
|
|
1
|
-
// Each
|
|
2
|
-
// the
|
|
1
|
+
// Each participant's subject projection and the subject-state marker, from the declared subject
|
|
2
|
+
// and what the participants ran; the run-level subject aggregated from them; and the provenance argument the
|
|
3
3
|
// bundle builders take.
|
|
4
4
|
import { commandDigestOf } from "../../subject/state.js";
|
|
5
5
|
import { cuaDeclaredState } from "./plan.js";
|
|
6
6
|
import {} from "../../run/bundle.js";
|
|
7
7
|
import {} from "../../subject/local-tree-archive.js";
|
|
8
|
-
import {} from "./
|
|
9
|
-
import {} from "./types.js";
|
|
8
|
+
import { participantSubjectEnv, } from "./types.js";
|
|
10
9
|
/**
|
|
11
|
-
* Each
|
|
10
|
+
* Each participant's subject projection. A participant's outcome adds the subject commit it resolved and the
|
|
12
11
|
* state steps it executed; without outcomes (dry run, or a run still in progress) the declared
|
|
13
12
|
* state is projected as not yet run.
|
|
14
13
|
*/
|
|
15
14
|
export function projectParticipantSubjects(args) {
|
|
16
|
-
const {
|
|
15
|
+
const { publicRepo, localTreeArchive } = args;
|
|
16
|
+
const { subject } = args.plan.runner;
|
|
17
|
+
const subjectEnvNames = [...participantSubjectEnv(subject)];
|
|
18
|
+
// Only a provisioned subject declares state; cuaDeclaredState is undefined for the others.
|
|
17
19
|
const declaredState = cuaDeclaredState(args.plan);
|
|
18
20
|
return args.runs.map((_spec, index) => {
|
|
19
21
|
const outcome = args.outcomes?.[index];
|
|
20
22
|
const subjectState = resolveSubjectState({
|
|
21
|
-
declared:
|
|
23
|
+
declared: declaredState,
|
|
22
24
|
dryRun: args.dryRun,
|
|
23
25
|
executed: outcome?.stateStepRecords ?? [],
|
|
24
26
|
});
|
|
25
27
|
return participantSubjectProjection({
|
|
26
|
-
|
|
27
|
-
localTreeRoute: subjectRoute.localTreeRoute,
|
|
28
|
+
kind: subject.kind,
|
|
28
29
|
...(publicRepo === undefined ? {} : { publicRepo }),
|
|
29
|
-
subjectEnvNames
|
|
30
|
+
subjectEnvNames,
|
|
30
31
|
...(outcome?.subjectCommit === undefined ? {} : { subjectCommit: outcome.subjectCommit }),
|
|
31
32
|
...(localTreeArchive === undefined ? {} : { localTreeArchive }),
|
|
32
33
|
subjectState,
|
|
@@ -73,12 +74,12 @@ export function resolveSubjectState(args) {
|
|
|
73
74
|
...(external.length > 0 ? { externalEnvNames: external } : {}),
|
|
74
75
|
};
|
|
75
76
|
}
|
|
76
|
-
/** Build the per-
|
|
77
|
-
* host-packed archive, so every
|
|
78
|
-
* commit/dirty (no
|
|
77
|
+
/** Build the per-participant subject projection (invariant 5). Local-tree participants all share
|
|
78
|
+
* ONE host-packed archive, so every participant's projection carries the identical archiveSha256/
|
|
79
|
+
* commit/dirty (no divergence is possible, unlike the clone route's per-participant
|
|
79
80
|
* in-sandbox commit). */
|
|
80
81
|
function participantSubjectProjection(args) {
|
|
81
|
-
if (args.
|
|
82
|
+
if (args.kind === "clone" && args.publicRepo) {
|
|
82
83
|
return {
|
|
83
84
|
source: "clone",
|
|
84
85
|
repo: args.publicRepo,
|
|
@@ -87,7 +88,7 @@ function participantSubjectProjection(args) {
|
|
|
87
88
|
state: args.subjectState,
|
|
88
89
|
};
|
|
89
90
|
}
|
|
90
|
-
if (args.
|
|
91
|
+
if (args.kind === "local-tree") {
|
|
91
92
|
const archive = args.localTreeArchive;
|
|
92
93
|
return {
|
|
93
94
|
source: "local-tree",
|
|
@@ -127,10 +128,10 @@ export function subjectProvenanceArg(subject, publicRepo, subjectEnvNames) {
|
|
|
127
128
|
return undefined;
|
|
128
129
|
}
|
|
129
130
|
/**
|
|
130
|
-
* The run-level subject for the top level and the bundle. Local-tree
|
|
131
|
-
* once-per-run archive, so every
|
|
132
|
-
* the first
|
|
133
|
-
* aggregate carries it only when every
|
|
131
|
+
* The run-level subject for the top level and the bundle. Local-tree participants all pack from the
|
|
132
|
+
* same once-per-run archive, so every participant already carries the identical archiveSha256/commit/dirty and
|
|
133
|
+
* the first participant's projection is the aggregate. Clone participants each resolve their own
|
|
134
|
+
* commit; the aggregate carries it only when every participant agrees, and warns when they diverge.
|
|
134
135
|
*/
|
|
135
136
|
export function aggregateCuaSubject(args) {
|
|
136
137
|
const { subjects, outcomes, participantCount, dryRun } = args;
|