humanish 0.107.0 → 0.109.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/ARCHITECTURE.md +73 -69
- package/CHANGELOG.md +27 -0
- package/CONTEXT.md +51 -44
- package/README.md +148 -175
- package/SECURITY.md +16 -26
- package/TELEMETRY.md +8 -6
- package/dist/actors/affordance.d.ts +4 -4
- package/dist/actors/affordance.js +12 -12
- package/dist/actors/agent-session.d.ts +2 -2
- package/dist/actors/agent-session.js +7 -7
- package/dist/actors/codex/app-server-actor-trace.d.ts +1 -1
- package/dist/actors/codex/app-server-actor-trace.js +1 -1
- package/dist/actors/codex/app-server-trace.js +2 -1
- package/dist/actors/codex/app-server-ui.js +1 -1
- package/dist/actors/codex/codex-admission.d.ts +91 -0
- package/dist/actors/codex/codex-admission.js +150 -0
- package/dist/actors/codex/restricted-executable.d.ts +4 -4
- package/dist/actors/codex/restricted-executable.js +8 -8
- package/dist/actors/codex/restricted-launch.d.ts +2 -1
- package/dist/actors/codex/restricted-launch.js +1 -1
- package/dist/actors/codex/restricted-participant.js +20 -18
- package/dist/actors/codex/restricted-policy.d.ts +2 -2
- package/dist/actors/codex/restricted-policy.js +2 -2
- package/dist/actors/codex/restricted-session.d.ts +3 -3
- package/dist/actors/codex/restricted-session.js +10 -5
- package/dist/actors/computer-use/actor.d.ts +18 -18
- package/dist/actors/computer-use/actor.js +4 -4
- package/dist/actors/computer-use/admission-limit.d.ts +3 -3
- package/dist/actors/computer-use/admission-limit.js +4 -4
- package/dist/actors/computer-use/executor-error.d.ts +2 -2
- package/dist/actors/computer-use/executor-error.js +3 -3
- package/dist/actors/computer-use/loop/actions.d.ts +3 -3
- package/dist/actors/computer-use/loop/actions.js +15 -15
- package/dist/actors/computer-use/loop/backstop.d.ts +3 -3
- package/dist/actors/computer-use/loop/backstop.js +14 -12
- package/dist/actors/computer-use/loop/debrief.js +2 -2
- package/dist/actors/computer-use/loop/ending.d.ts +6 -6
- package/dist/actors/computer-use/loop/ending.js +18 -17
- package/dist/actors/computer-use/loop/observation.d.ts +2 -2
- package/dist/actors/computer-use/loop/observation.js +15 -14
- package/dist/actors/computer-use/loop/provider-call.d.ts +1 -1
- package/dist/actors/computer-use/loop/provider-call.js +12 -12
- package/dist/actors/computer-use/loop/session.d.ts +4 -4
- package/dist/actors/computer-use/loop/session.js +4 -4
- package/dist/actors/computer-use/loop/spend.d.ts +1 -1
- package/dist/actors/computer-use/loop/spend.js +1 -1
- package/dist/actors/computer-use/loop/trace.js +11 -9
- package/dist/actors/computer-use/loop/types.d.ts +47 -45
- package/dist/actors/computer-use/loop/usage.d.ts +2 -2
- package/dist/actors/computer-use/loop/usage.js +2 -2
- package/dist/actors/computer-use/loop.d.ts +6 -1
- package/dist/actors/computer-use/loop.js +26 -4
- package/dist/actors/computer-use/openai-context.d.ts +37 -0
- package/dist/actors/computer-use/openai-context.js +214 -0
- package/dist/actors/computer-use/openai-provider.d.ts +13 -10
- package/dist/actors/computer-use/openai-provider.js +52 -41
- package/dist/actors/computer-use/openai-requests.d.ts +36 -10
- package/dist/actors/computer-use/openai-requests.js +82 -15
- package/dist/actors/computer-use/openai-wire.d.ts +19 -7
- package/dist/actors/computer-use/openai-wire.js +36 -34
- package/dist/actors/computer-use/provider-error.d.ts +4 -4
- package/dist/actors/computer-use/provider-error.js +6 -6
- package/dist/actors/contract.d.ts +82 -47
- package/dist/actors/contract.js +30 -24
- package/dist/actors/local-agent/claude-session.d.ts +1 -1
- package/dist/actors/local-agent/claude-session.js +13 -12
- package/dist/actors/local-agent/cli.d.ts +9 -7
- package/dist/actors/local-agent/cli.js +24 -28
- package/dist/actors/local-agent/readiness.d.ts +2 -2
- package/dist/actors/local-agent/readiness.js +4 -4
- package/dist/actors/reasoning-effort.js +8 -8
- package/dist/actors/registry.d.ts +12 -12
- package/dist/actors/registry.js +21 -20
- package/dist/actors/scripted-browser/actor.d.ts +10 -10
- package/dist/actors/scripted-browser/actor.js +17 -17
- package/dist/actors/scripted-browser/browser-command.js +1 -1
- package/dist/actors/scripted-browser/steps.js +1 -1
- package/dist/actors/scripted-browser/types.d.ts +1 -1
- package/dist/actors/stop-conditions.d.ts +1 -1
- package/dist/analysis/automatic-completion.d.ts +7 -7
- package/dist/analysis/automatic-completion.js +1 -1
- package/dist/analysis/automatic-config.d.ts +6 -6
- package/dist/analysis/automatic-config.js +1 -1
- package/dist/analysis/codex-config.d.ts +6 -2
- package/dist/analysis/codex-config.js +22 -14
- package/dist/analysis/execute.d.ts +1 -1
- package/dist/analysis/execute.js +1 -1
- package/dist/analysis/service.js +5 -5
- package/dist/analysis/types.d.ts +6 -0
- package/dist/browser-control/client.js +16 -16
- package/dist/browser-control/dispatcher.js +4 -4
- package/dist/browser-control/protocol.js +14 -14
- package/dist/browser-control/recording-transfer.js +4 -4
- package/dist/browser-control/transport.js +7 -7
- package/dist/cli/commands/analysis-signals.d.ts +2 -2
- package/dist/cli/commands/analyze.js +19 -16
- package/dist/cli/commands/codex.js +9 -9
- package/dist/cli/commands/comms.js +48 -35
- package/dist/cli/commands/feedback.js +20 -21
- package/dist/cli/commands/migrate.d.ts +4 -0
- package/dist/cli/commands/migrate.js +65 -0
- package/dist/cli/commands/observe.d.ts +0 -1
- package/dist/cli/commands/observe.js +136 -112
- package/dist/cli/commands/run-command.d.ts +10 -0
- package/dist/cli/commands/run-command.js +85 -0
- package/dist/cli/commands/runs.js +136 -139
- package/dist/cli/commands/setup.d.ts +2 -2
- package/dist/cli/commands/setup.js +27 -24
- package/dist/cli/commands/study-format.d.ts +9 -0
- package/dist/cli/commands/{lab-format.js → study-format.js} +39 -27
- package/dist/cli/commands/{lab-route-computer-use.d.ts → study-route-computer-use.d.ts} +6 -6
- package/dist/cli/commands/{lab-route-computer-use.js → study-route-computer-use.js} +17 -18
- package/dist/cli/commands/{lab-route-open.d.ts → study-route-open.d.ts} +4 -4
- package/dist/cli/commands/{lab-route-open.js → study-route-open.js} +2 -2
- package/dist/cli/commands/{lab-route-preview.d.ts → study-route-preview.d.ts} +7 -7
- package/dist/cli/commands/{lab-route-preview.js → study-route-preview.js} +7 -6
- package/dist/cli/commands/study-route-run.d.ts +19 -0
- package/dist/cli/commands/{lab-route-run.js → study-route-run.js} +6 -6
- package/dist/cli/commands/study-route-scripted.d.ts +17 -0
- package/dist/cli/commands/{lab-route-scripted.js → study-route-scripted.js} +4 -4
- package/dist/cli/commands/{lab-route-shared-world.d.ts → study-route-shared-world.d.ts} +5 -5
- package/dist/cli/commands/{lab-route-shared-world.js → study-route-shared-world.js} +10 -10
- package/dist/cli/commands/study-route-terminal.d.ts +17 -0
- package/dist/cli/commands/{lab-route-terminal.js → study-route-terminal.js} +4 -4
- package/dist/cli/commands/study-run.d.ts +9 -0
- package/dist/cli/commands/{lab-run.js → study-run.js} +44 -45
- package/dist/cli/commands/{lab-scorer.d.ts → study-scorer.d.ts} +7 -7
- package/dist/cli/commands/{lab-scorer.js → study-scorer.js} +2 -2
- package/dist/cli/commands/study.d.ts +3 -0
- package/dist/cli/commands/study.js +146 -0
- package/dist/cli/commands/tui.d.ts +4 -4
- package/dist/cli/commands/tui.js +31 -31
- package/dist/cli/commands/watch.js +71 -121
- package/dist/cli/deprecations.d.ts +6 -0
- package/dist/cli/deprecations.js +18 -0
- package/dist/cli/doctor.d.ts +18 -8
- package/dist/cli/doctor.js +114 -59
- package/dist/cli/first-run-path.d.ts +15 -13
- package/dist/cli/first-run-path.js +35 -33
- package/dist/cli/io.d.ts +44 -9
- package/dist/cli/io.js +98 -23
- package/dist/cli/observer-follow.d.ts +3 -3
- package/dist/cli/observer-follow.js +6 -7
- package/dist/cli/orientation.d.ts +10 -7
- package/dist/cli/orientation.js +89 -47
- package/dist/cli/product-sentence.d.ts +6 -0
- package/dist/cli/product-sentence.js +6 -0
- package/dist/cli/program.d.ts +6 -1
- package/dist/cli/program.js +111 -43
- package/dist/cli/telemetry.d.ts +16 -16
- package/dist/cli/telemetry.js +46 -44
- package/dist/cli.js +1 -1
- package/dist/comms/capture-surface.d.ts +13 -12
- package/dist/comms/capture-surface.js +23 -22
- package/dist/comms/catch-host.d.ts +7 -7
- package/dist/comms/catch-host.js +17 -17
- package/dist/comms/connections.d.ts +1 -1
- package/dist/comms/connections.js +2 -2
- package/dist/comms/email-catch.d.ts +3 -3
- package/dist/comms/email-catch.js +8 -8
- package/dist/comms/external-evidence.d.ts +5 -5
- package/dist/comms/external-evidence.js +5 -4
- package/dist/comms/extract.js +2 -2
- package/dist/comms/fake-inbox.d.ts +3 -3
- package/dist/comms/fake-inbox.js +3 -3
- package/dist/comms/receiving-render.d.ts +1 -1
- package/dist/comms/receiving-render.js +2 -2
- package/dist/comms/receiving-runtime.d.ts +4 -4
- package/dist/comms/sandbox-catch-script.d.ts +6 -6
- package/dist/comms/sandbox-catch-script.js +6 -6
- package/dist/comms/sandbox-catch.d.ts +38 -39
- package/dist/comms/sandbox-catch.js +36 -37
- package/dist/comms/setup.d.ts +2 -2
- package/dist/comms/setup.js +56 -25
- package/dist/comms/thread-evidence.d.ts +1 -1
- package/dist/comms/thread-evidence.js +6 -6
- package/dist/comms/types.d.ts +6 -6
- package/dist/comms/types.js +3 -3
- package/dist/evidence/frame-signature.d.ts +1 -1
- package/dist/evidence/frame-signature.js +4 -4
- package/dist/evidence/redaction.d.ts +3 -3
- package/dist/evidence/redaction.js +4 -4
- package/dist/feedback/draft.js +38 -80
- package/dist/feedback/export-bundle.js +1 -1
- package/dist/feedback/export.d.ts +5 -1
- package/dist/feedback/export.js +10 -10
- package/dist/feedback/feedback.d.ts +2 -2
- package/dist/feedback/feedback.js +21 -3
- package/dist/feedback/proof.d.ts +1 -1
- package/dist/feedback/proof.js +2 -2
- package/dist/guest/bootstrap.js +6 -6
- package/dist/guest/browser-tools.js +8 -8
- package/dist/guest/chromium-text.js +19 -19
- package/dist/guest/desktop-executor.d.ts +2 -2
- package/dist/guest/desktop-executor.js +20 -20
- package/dist/guest/desktop-keys.js +4 -4
- package/dist/guest/desktop-media.d.ts +2 -2
- package/dist/guest/desktop-media.js +16 -16
- package/dist/guest/desktop-native.d.ts +1 -1
- package/dist/guest/desktop-native.js +10 -10
- package/dist/guest/runtime-desktop.js +2 -2
- package/dist/guest/runtime-processes.d.ts +2 -2
- package/dist/guest/runtime-processes.js +2 -2
- package/dist/guest/runtime.js +6 -6
- package/dist/index.d.ts +14 -14
- package/dist/index.js +8 -8
- package/dist/keys/key-resolution.d.ts +5 -5
- package/dist/keys/key-resolution.js +23 -23
- package/dist/observer/artifact.d.ts +2 -2
- package/dist/observer/artifact.js +7 -7
- package/dist/observer/data.d.ts +6 -6
- package/dist/observer/data.js +5 -4
- package/dist/observer/exposure.d.ts +1 -1
- package/dist/observer/exposure.js +11 -11
- package/dist/observer/http.js +1 -1
- package/dist/observer/library.d.ts +3 -1
- package/dist/observer/library.js +8 -3
- package/dist/observer/listen.js +5 -4
- package/dist/observer/render.d.ts +1 -1
- package/dist/observer/render.js +17 -6
- package/dist/observer/run-routes.d.ts +4 -3
- package/dist/observer/run-routes.js +38 -13
- package/dist/observer/serve.d.ts +1 -1
- package/dist/observer/serve.js +7 -3
- package/dist/observer/tunnel.js +1 -1
- package/dist/observer-app.html +4 -4
- package/dist/routes/computer-use/bundle-parts.d.ts +9 -9
- package/dist/routes/computer-use/bundle-parts.js +18 -17
- package/dist/routes/computer-use/bundle.d.ts +2 -2
- package/dist/routes/computer-use/bundle.js +10 -9
- package/dist/routes/computer-use/e2b-desktop/comms.d.ts +6 -6
- package/dist/routes/computer-use/e2b-desktop/comms.js +18 -17
- package/dist/routes/computer-use/e2b-desktop/desktop.js +4 -4
- package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +5 -4
- package/dist/routes/computer-use/e2b-desktop/fidelity.js +11 -10
- package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +1 -1
- package/dist/routes/computer-use/e2b-desktop/prepare.js +10 -10
- package/dist/routes/computer-use/e2b-desktop/start.js +7 -7
- package/dist/routes/computer-use/e2b-desktop/state.d.ts +2 -2
- package/dist/routes/computer-use/e2b-desktop/teardown.js +2 -2
- package/dist/routes/computer-use/external-comms.d.ts +4 -4
- package/dist/routes/computer-use/external-comms.js +1 -1
- package/dist/routes/computer-use/fanout-bundle.js +27 -26
- package/dist/routes/computer-use/fanout-records.js +12 -13
- package/dist/routes/computer-use/live-flush.d.ts +4 -4
- package/dist/routes/computer-use/live-flush.js +6 -6
- package/dist/routes/computer-use/live-phase.d.ts +5 -4
- package/dist/routes/computer-use/live-phase.js +8 -8
- package/dist/routes/computer-use/local-tree-pack.d.ts +5 -5
- package/dist/routes/computer-use/local-tree-pack.js +1 -1
- package/dist/routes/computer-use/local-vm.d.ts +8 -8
- package/dist/routes/computer-use/local-vm.js +3 -3
- package/dist/routes/computer-use/participant-desktop.d.ts +7 -7
- package/dist/routes/computer-use/participant-desktop.js +5 -5
- package/dist/routes/computer-use/participant-execution.d.ts +4 -4
- package/dist/routes/computer-use/participant-execution.js +10 -10
- package/dist/routes/computer-use/participant-model.d.ts +6 -0
- package/dist/routes/computer-use/participant-model.js +33 -15
- package/dist/routes/computer-use/participant-prompt.d.ts +15 -15
- package/dist/routes/computer-use/participant-prompt.js +9 -9
- package/dist/routes/computer-use/participant-runs.d.ts +16 -16
- package/dist/routes/computer-use/participant-runs.js +26 -25
- package/dist/routes/computer-use/plan.d.ts +12 -12
- package/dist/routes/computer-use/plan.js +42 -42
- package/dist/routes/computer-use/preflight.d.ts +5 -5
- package/dist/routes/computer-use/preflight.js +25 -25
- package/dist/routes/computer-use/rerun-selection.d.ts +1 -1
- package/dist/routes/computer-use/rerun-selection.js +4 -3
- package/dist/routes/computer-use/result.d.ts +4 -4
- package/dist/routes/computer-use/result.js +22 -21
- package/dist/routes/computer-use/route.d.ts +12 -11
- package/dist/routes/computer-use/route.js +31 -30
- package/dist/routes/computer-use/self-report.d.ts +7 -7
- package/dist/routes/computer-use/self-report.js +32 -32
- package/dist/routes/computer-use/setup.d.ts +23 -23
- package/dist/routes/computer-use/setup.js +28 -29
- package/dist/routes/computer-use/single-bundle.d.ts +11 -11
- package/dist/routes/computer-use/single-bundle.js +40 -41
- package/dist/routes/computer-use/subject-projection.d.ts +4 -4
- package/dist/routes/computer-use/subject-projection.js +6 -6
- package/dist/routes/computer-use/types.d.ts +71 -73
- package/dist/routes/computer-use/types.js +12 -12
- package/dist/routes/preview.d.ts +13 -7
- package/dist/routes/preview.js +11 -7
- package/dist/routes/scripted/bundle.d.ts +7 -7
- package/dist/routes/scripted/bundle.js +20 -18
- package/dist/routes/scripted/plan.d.ts +8 -8
- package/dist/routes/scripted/plan.js +13 -13
- package/dist/routes/scripted/result.d.ts +3 -3
- package/dist/routes/scripted/result.js +13 -13
- package/dist/routes/scripted/route.d.ts +9 -9
- package/dist/routes/scripted/route.js +15 -16
- package/dist/routes/scripted/scenario.d.ts +1 -1
- package/dist/routes/scripted/scenario.js +5 -5
- package/dist/routes/scripted/setup.d.ts +6 -6
- package/dist/routes/scripted/setup.js +8 -8
- package/dist/routes/scripted/subject.d.ts +5 -5
- package/dist/routes/scripted/subject.js +4 -4
- package/dist/routes/scripted/surface-records.d.ts +1 -1
- package/dist/routes/scripted/surface-records.js +4 -4
- package/dist/routes/scripted/surface-sessions.d.ts +3 -3
- package/dist/routes/scripted/types.d.ts +18 -20
- package/dist/routes/scripted/types.js +2 -2
- package/dist/routes/shared-world/bundle-records.js +11 -10
- package/dist/routes/shared-world/bundle.d.ts +5 -5
- package/dist/routes/shared-world/bundle.js +46 -43
- package/dist/routes/shared-world/checkpoints.d.ts +4 -4
- package/dist/routes/shared-world/checkpoints.js +2 -2
- package/dist/routes/shared-world/comms.d.ts +14 -14
- package/dist/routes/shared-world/comms.js +19 -18
- package/dist/routes/shared-world/external-public.d.ts +4 -3
- package/dist/routes/shared-world/external-public.js +16 -12
- package/dist/routes/shared-world/handoff.d.ts +7 -6
- package/dist/routes/shared-world/handoff.js +65 -57
- package/dist/routes/shared-world/lobby-code.d.ts +2 -2
- package/dist/routes/shared-world/lobby-code.js +9 -9
- package/dist/routes/shared-world/participant-specs.d.ts +10 -9
- package/dist/routes/shared-world/participant-specs.js +38 -31
- package/dist/routes/shared-world/plan.d.ts +9 -9
- package/dist/routes/shared-world/plan.js +16 -16
- package/dist/routes/shared-world/provenance.d.ts +2 -2
- package/dist/routes/shared-world/provenance.js +2 -2
- package/dist/routes/shared-world/provisioned.d.ts +8 -8
- package/dist/routes/shared-world/provisioned.js +18 -17
- package/dist/routes/shared-world/result.d.ts +6 -6
- package/dist/routes/shared-world/result.js +29 -29
- package/dist/routes/shared-world/route.d.ts +11 -11
- package/dist/routes/shared-world/route.js +40 -39
- package/dist/routes/shared-world/setup.d.ts +16 -16
- package/dist/routes/shared-world/setup.js +23 -23
- package/dist/routes/shared-world/types.d.ts +55 -53
- package/dist/routes/shared-world/types.js +4 -4
- package/dist/routes/terminal/adapter.d.ts +5 -5
- package/dist/routes/terminal/adapter.js +9 -9
- package/dist/routes/terminal/bundle.d.ts +13 -13
- package/dist/routes/terminal/bundle.js +28 -27
- package/dist/routes/terminal/credentials.d.ts +8 -8
- package/dist/routes/terminal/credentials.js +12 -12
- package/dist/routes/terminal/dry-run.d.ts +4 -4
- package/dist/routes/terminal/dry-run.js +12 -12
- package/dist/routes/terminal/encoding.js +2 -2
- package/dist/routes/terminal/ledger.d.ts +5 -5
- package/dist/routes/terminal/ledger.js +14 -14
- package/dist/routes/terminal/lifetime.d.ts +1 -1
- package/dist/routes/terminal/lifetime.js +1 -1
- package/dist/routes/terminal/live-finish.d.ts +2 -2
- package/dist/routes/terminal/live-finish.js +10 -10
- package/dist/routes/terminal/live-sandbox.d.ts +2 -2
- package/dist/routes/terminal/live-sandbox.js +15 -15
- package/dist/routes/terminal/participant-text.js +2 -1
- package/dist/routes/terminal/persona.d.ts +2 -2
- package/dist/routes/terminal/persona.js +3 -3
- package/dist/routes/terminal/plan.d.ts +7 -7
- package/dist/routes/terminal/plan.js +15 -15
- package/dist/routes/terminal/recorder.js +2 -2
- package/dist/routes/terminal/result.d.ts +5 -5
- package/dist/routes/terminal/result.js +14 -14
- package/dist/routes/terminal/route.d.ts +9 -9
- package/dist/routes/terminal/route.js +19 -20
- package/dist/routes/terminal/sandbox.d.ts +1 -1
- package/dist/routes/terminal/sandbox.js +1 -1
- package/dist/routes/terminal/session.d.ts +5 -5
- package/dist/routes/terminal/session.js +14 -13
- package/dist/routes/terminal/token-usage.d.ts +1 -1
- package/dist/routes/terminal/token-usage.js +7 -8
- package/dist/routes/terminal/trace.d.ts +4 -4
- package/dist/routes/terminal/trace.js +2 -2
- package/dist/routes/terminal/types.d.ts +48 -50
- package/dist/routes/terminal/types.js +5 -5
- package/dist/run/bundle-shape.js +3 -3
- package/dist/run/bundle.d.ts +49 -49
- package/dist/run/bundle.js +3 -2
- package/dist/run/cost-summary.js +3 -3
- package/dist/run/costs.d.ts +23 -0
- package/dist/run/costs.js +79 -44
- package/dist/run/detail.d.ts +6 -6
- package/dist/run/detail.js +4 -4
- package/dist/run/dry-run-inputs.d.ts +1 -1
- package/dist/run/dry-run-inputs.js +2 -2
- package/dist/run/dry-run.js +20 -20
- package/dist/run/judge.d.ts +19 -13
- package/dist/run/judge.js +18 -8
- package/dist/run/outcomes.d.ts +1 -1
- package/dist/run/participant.d.ts +1 -1
- package/dist/run/paths.d.ts +1 -1
- package/dist/run/paths.js +1 -1
- package/dist/run/preflight-receipts.js +1 -1
- package/dist/run/pricing.d.ts +11 -6
- package/dist/run/pricing.js +22 -15
- package/dist/run/projection.d.ts +46 -46
- package/dist/run/projection.js +57 -57
- package/dist/run/reclaim.d.ts +1 -1
- package/dist/run/reclaim.js +3 -3
- package/dist/run/results.d.ts +5 -5
- package/dist/run/run-cost.d.ts +53 -0
- package/dist/run/run-cost.js +105 -0
- package/dist/run/run-index-analysis.d.ts +15 -0
- package/dist/run/run-index-analysis.js +77 -0
- package/dist/run/run-index.d.ts +19 -7
- package/dist/run/run-index.js +77 -64
- package/dist/run/run-not-found.d.ts +5 -0
- package/dist/run/run-not-found.js +15 -0
- package/dist/run/run.d.ts +6 -5
- package/dist/run/run.js +3 -3
- package/dist/run/sandbox-receipts.d.ts +2 -2
- package/dist/run/sandbox-receipts.js +3 -3
- package/dist/run/shared-world-evidence.d.ts +37 -36
- package/dist/run/shared-world-evidence.js +4 -4
- package/dist/run/shared-world-shape.d.ts +1 -1
- package/dist/run/shared-world-shape.js +7 -7
- package/dist/run/stats.d.ts +14 -8
- package/dist/run/stats.js +121 -63
- package/dist/run/status.d.ts +16 -29
- package/dist/run/status.js +10 -29
- package/dist/run/stored-runs.js +2 -1
- package/dist/run/stream-shape.js +1 -1
- package/dist/run/streams.d.ts +7 -7
- package/dist/run/study-provenance.d.ts +49 -0
- package/dist/run/study-provenance.js +66 -0
- package/dist/run/study-result.d.ts +11 -0
- package/dist/run/study-result.js +9 -0
- package/dist/run/text.d.ts +2 -0
- package/dist/run/text.js +4 -0
- package/dist/run-study.d.ts +112 -0
- package/dist/{run-lab.js → run-study.js} +52 -47
- package/dist/{lab → study}/adapter-extension.d.ts +15 -27
- package/dist/{lab → study}/adapter-extension.js +10 -45
- package/dist/{lab → study}/adapter-scorer-loader.d.ts +17 -17
- package/dist/{lab → study}/adapter-scorer-loader.js +34 -34
- package/dist/study/composition-rules.d.ts +7 -0
- package/dist/{lab → study}/composition-rules.js +53 -53
- package/dist/study/config.d.ts +15 -0
- package/dist/{lab → study}/config.js +98 -41
- package/dist/study/convert.d.ts +33 -0
- package/dist/study/convert.js +432 -0
- package/dist/{lab → study}/device-presets.d.ts +10 -10
- package/dist/{lab → study}/device-presets.js +11 -11
- package/dist/study/discover.d.ts +75 -0
- package/dist/{lab → study}/discover.js +134 -95
- package/dist/{lab → study}/doctor.d.ts +19 -12
- package/dist/{lab → study}/doctor.js +58 -20
- package/dist/study/field-paths.d.ts +12 -0
- package/dist/study/field-paths.js +126 -0
- package/dist/study/files.d.ts +26 -0
- package/dist/study/files.js +44 -0
- package/dist/{lab → study}/init-templates.d.ts +2 -2
- package/dist/study/init-templates.js +421 -0
- package/dist/{lab → study}/init.d.ts +2 -2
- package/dist/{lab → study}/init.js +46 -11
- package/dist/study/keys.d.ts +4 -0
- package/dist/{lab → study}/keys.js +46 -12
- package/dist/study/migrate.d.ts +48 -0
- package/dist/study/migrate.js +408 -0
- package/dist/study/owned-files.d.ts +38 -0
- package/dist/study/owned-files.js +182 -0
- package/dist/{lab → study}/parse/actors.d.ts +5 -5
- package/dist/{lab → study}/parse/actors.js +14 -14
- package/dist/study/parse/comms.d.ts +12 -0
- package/dist/{lab → study}/parse/comms.js +5 -5
- package/dist/study/parse/execution.d.ts +19 -0
- package/dist/{lab → study}/parse/execution.js +13 -13
- package/dist/study/parse/study-v3.d.ts +21 -0
- package/dist/study/parse/study-v3.js +259 -0
- package/dist/study/parse/subject-state.d.ts +30 -0
- package/dist/{lab → study}/parse/subject-state.js +19 -19
- package/dist/{lab → study}/parse/subject.d.ts +3 -3
- package/dist/{lab → study}/parse/subject.js +34 -34
- package/dist/{lab → study}/parse/values.d.ts +3 -3
- package/dist/{lab → study}/parse/values.js +3 -3
- package/dist/{lab → study}/persona-resolve.d.ts +8 -8
- package/dist/{lab → study}/persona-resolve.js +6 -6
- package/dist/{lab → study}/plan-base.d.ts +7 -7
- package/dist/{lab → study}/plan-base.js +1 -1
- package/dist/{lab → study}/plan-participants.d.ts +12 -12
- package/dist/{lab → study}/plan-participants.js +4 -4
- package/dist/{lab → study}/plan-types.d.ts +31 -31
- package/dist/{lab → study}/plan-types.js +2 -2
- package/dist/study/plan.d.ts +13 -0
- package/dist/study/plan.js +101 -0
- package/dist/study/preflight-probes.d.ts +3 -0
- package/dist/{lab → study}/preflight-probes.js +20 -19
- package/dist/study/preflight-result.d.ts +8 -0
- package/dist/{lab → study}/preflight-result.js +5 -4
- package/dist/study/preflight.d.ts +94 -0
- package/dist/{lab → study}/preflight.js +12 -12
- package/dist/{lab → study}/requirements.d.ts +3 -3
- package/dist/{lab → study}/requirements.js +1 -1
- package/dist/study/route-inputs.d.ts +28 -0
- package/dist/{lab → study}/route-inputs.js +1 -1
- package/dist/{lab → study}/routing.d.ts +39 -33
- package/dist/{lab → study}/routing.js +60 -29
- package/dist/{lab/run-lab-events.d.ts → study/run-study-events.d.ts} +10 -13
- package/dist/{lab/run-lab-events.js → study/run-study-events.js} +3 -9
- package/dist/{lab/run-lab-homes.d.ts → study/run-study-homes.d.ts} +21 -18
- package/dist/{lab/run-lab-homes.js → study/run-study-homes.js} +1 -1
- package/dist/study/run-study-options.d.ts +28 -0
- package/dist/{lab/run-lab-options.js → study/run-study-options.js} +29 -25
- package/dist/{lab/lab-deps.d.ts → study/study-deps.d.ts} +8 -13
- package/dist/{lab/lab-deps.js → study/study-deps.js} +2 -2
- package/dist/{lab → study}/summary.d.ts +16 -15
- package/dist/{lab → study}/summary.js +21 -21
- package/dist/{lab → study}/tasks.d.ts +18 -18
- package/dist/{lab → study}/tasks.js +14 -14
- package/dist/{lab → study}/types.d.ts +202 -196
- package/dist/{lab → study}/types.js +3 -1
- package/dist/{lab → study}/validation.d.ts +27 -27
- package/dist/{lab → study}/validation.js +53 -51
- package/dist/study/warnings.d.ts +12 -0
- package/dist/{lab → study}/warnings.js +62 -34
- package/dist/subject/clone.d.ts +7 -7
- package/dist/subject/clone.js +2 -2
- package/dist/subject/desktop-cli.d.ts +1 -1
- package/dist/subject/desktop-cli.js +2 -2
- package/dist/subject/local-tree-archive.d.ts +2 -2
- package/dist/subject/local-tree-archive.js +4 -4
- package/dist/subject/local-tree.d.ts +4 -4
- package/dist/subject/node-bootstrap.js +1 -1
- package/dist/subject/runtime.js +9 -10
- package/dist/subject/serve.d.ts +5 -5
- package/dist/subject/serve.js +3 -3
- package/dist/subject/state.d.ts +4 -4
- package/dist/subject/state.js +1 -1
- package/dist/subject/steps.d.ts +6 -6
- package/dist/subject/steps.js +5 -5
- package/dist/substrates/command-failure.d.ts +3 -3
- package/dist/substrates/command-failure.js +3 -3
- package/dist/substrates/desktop-session.js +2 -2
- package/dist/substrates/detached.d.ts +6 -6
- package/dist/substrates/detached.js +7 -7
- package/dist/substrates/e2b/cdp-probe.d.ts +9 -9
- package/dist/substrates/e2b/cdp-probe.js +14 -17
- package/dist/substrates/e2b/desktop-browser.d.ts +6 -6
- package/dist/substrates/e2b/desktop-browser.js +9 -9
- package/dist/substrates/e2b/desktop-cdp.d.ts +10 -10
- package/dist/substrates/e2b/desktop-cdp.js +9 -9
- package/dist/substrates/e2b/desktop-executor.d.ts +2 -2
- package/dist/substrates/e2b/desktop-executor.js +13 -13
- package/dist/substrates/e2b/desktop-geometry.d.ts +4 -4
- package/dist/substrates/e2b/desktop-geometry.js +8 -8
- package/dist/substrates/e2b/desktop-media.d.ts +4 -4
- package/dist/substrates/e2b/desktop-media.js +1 -1
- package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +3 -3
- package/dist/substrates/e2b/desktop-screenshot-cleanup.js +3 -3
- package/dist/substrates/e2b/lifetime.js +1 -1
- package/dist/substrates/e2b/sandbox.d.ts +4 -4
- package/dist/substrates/e2b/sandbox.js +2 -2
- package/dist/substrates/e2b/sdk.d.ts +12 -12
- package/dist/substrates/e2b/sdk.js +7 -7
- package/dist/substrates/local/runtime-config.d.ts +4 -4
- package/dist/substrates/local/runtime-config.js +4 -4
- package/dist/tui/actions.d.ts +1 -1
- package/dist/tui/actions.js +13 -13
- package/dist/tui/contract.d.ts +23 -23
- package/dist/tui/contract.js +11 -11
- package/dist/tui/launch.d.ts +7 -7
- package/dist/tui/launch.js +36 -31
- package/dist/tui/project.js +5 -5
- package/dist/tui-app.js +139 -139
- package/dist/verify/actor.d.ts +8 -8
- package/dist/verify/actor.js +36 -36
- package/dist/verify/artifacts.d.ts +2 -2
- package/dist/verify/artifacts.js +3 -3
- package/dist/verify/context-growth.d.ts +9 -0
- package/dist/verify/context-growth.js +62 -0
- package/dist/verify/costs.d.ts +6 -6
- package/dist/verify/costs.js +8 -8
- package/dist/verify/shared-world-concurrent.d.ts +2 -2
- package/dist/verify/shared-world-concurrent.js +79 -76
- package/dist/verify/shared-world.d.ts +2 -2
- package/dist/verify/shared-world.js +16 -16
- package/dist/verify/subject.d.ts +5 -5
- package/dist/verify/subject.js +19 -19
- package/dist/verify/verify.js +94 -44
- package/docs/README.md +25 -32
- package/docs/architecture/actor-contract.md +60 -91
- package/docs/architecture/browser-control.md +1 -1
- package/docs/architecture/desktop-sessions.md +7 -7
- package/docs/architecture/external-public-shared-world.md +68 -65
- package/docs/architecture/github-feedback-loop.md +2 -5
- package/docs/architecture/guest-desktop.md +2 -2
- package/docs/architecture/observer.md +34 -34
- package/docs/architecture/restricted-codex-analysis.md +34 -28
- package/docs/architecture/serve.md +34 -37
- package/docs/architecture/state-driven-executor.md +55 -58
- package/docs/architecture/task-protocol-support.md +6 -6
- package/docs/architecture/terminal-product-route.md +70 -110
- package/docs/contracts/README.md +24 -0
- package/docs/contracts/adapter-admission.md +3 -3
- package/docs/contracts/adapter-fixtures.md +4 -7
- package/docs/contracts/core.md +1 -3
- package/docs/contracts/errors.md +62 -0
- package/docs/contracts/feedback.md +8 -9
- package/docs/contracts/policy.md +7 -12
- package/docs/contracts/run-bundle.md +42 -44
- package/docs/contracts/schemas.md +446 -368
- package/docs/contracts/study-analysis.md +7 -4
- package/docs/contracts/study-costs.md +28 -9
- package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +1 -1
- package/docs/decisions/0002-observer-is-one-self-contained-file.md +2 -2
- package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +3 -3
- package/docs/principles/actor-fidelity.md +4 -4
- package/docs/principles/engineering.md +3 -3
- package/docs/principles/invariants-and-defaults.md +38 -38
- package/docs/principles/self-driving-harness.md +1 -5
- package/docs/principles/three-roles.md +1 -1
- package/docs/product/automatic-analysis.md +7 -7
- package/examples/README.md +1 -1
- package/examples/participant/README.md +5 -5
- package/examples/participant/run.mjs +11 -10
- package/examples/scorer/README.md +3 -3
- package/examples/scorer/run.mjs +11 -12
- package/examples/scorer/scorer.mjs +3 -3
- package/package.json +16 -17
- package/skills/humanish/SKILL.md +64 -60
- package/skills/humanish/agents/openai.yaml +1 -1
- package/AGENTS.md +0 -99
- package/CONTRIBUTING.md +0 -148
- package/dist/actors/codex/qualified-versions.d.ts +0 -72
- package/dist/actors/codex/qualified-versions.js +0 -132
- package/dist/cli/commands/lab-format.d.ts +0 -8
- package/dist/cli/commands/lab-route-run.d.ts +0 -19
- package/dist/cli/commands/lab-route-scripted.d.ts +0 -17
- package/dist/cli/commands/lab-route-terminal.d.ts +0 -17
- package/dist/cli/commands/lab-run.d.ts +0 -9
- package/dist/cli/commands/lab.d.ts +0 -3
- package/dist/cli/commands/lab.js +0 -199
- package/dist/cli/renamed-options.d.ts +0 -11
- package/dist/cli/renamed-options.js +0 -18
- package/dist/lab/composition-rules.d.ts +0 -7
- package/dist/lab/config.d.ts +0 -7
- package/dist/lab/discover.d.ts +0 -65
- package/dist/lab/init-templates.js +0 -416
- package/dist/lab/keys.d.ts +0 -2
- package/dist/lab/parse/comms.d.ts +0 -12
- package/dist/lab/parse/execution.d.ts +0 -19
- package/dist/lab/parse/subject-state.d.ts +0 -30
- package/dist/lab/plan.d.ts +0 -19
- package/dist/lab/plan.js +0 -132
- package/dist/lab/preflight-probes.d.ts +0 -3
- package/dist/lab/preflight-result.d.ts +0 -7
- package/dist/lab/preflight.d.ts +0 -92
- package/dist/lab/route-inputs.d.ts +0 -28
- package/dist/lab/run-lab-options.d.ts +0 -28
- package/dist/lab/warnings.d.ts +0 -2
- package/dist/observer/static.d.ts +0 -39
- package/dist/observer/static.js +0 -369
- package/dist/run-lab.d.ts +0 -112
- package/docs/architecture/comms-inbox.md +0 -122
- package/docs/architecture/desktop-recording.md +0 -80
- package/docs/architecture/local-browser-runtime.md +0 -178
- package/docs/architecture/observer-review.md +0 -144
- package/docs/architecture/participant-media.md +0 -90
- package/docs/architecture/project-layout.md +0 -62
- package/docs/architecture/real-email-receiving.md +0 -136
- package/docs/assets/humanish-drawdb-hero.png +0 -0
- package/docs/assets/humanish-observer-hero.png +0 -0
- package/docs/goals/current.md +0 -207
- package/docs/product/lobby-trivia-3player-external-public.md +0 -77
- package/docs/product/open-source-install-experience.md +0 -240
- package/docs/ramp/README.md +0 -295
- package/docs/release/open-source-readiness.md +0 -222
- package/docs/release/public-readiness-standard.md +0 -210
- package/docs/roadmap/world-class-open-source-v0.md +0 -311
- /package/dist/{lab → study}/init-paths.d.ts +0 -0
- /package/dist/{lab → study}/init-paths.js +0 -0
- /package/dist/{lab → study}/init-plan.d.ts +0 -0
- /package/dist/{lab → study}/init-plan.js +0 -0
- /package/dist/{lab → study}/participant-assignment.d.ts +0 -0
- /package/dist/{lab → study}/participant-assignment.js +0 -0
- /package/dist/{lab → study}/persona.d.ts +0 -0
- /package/dist/{lab → study}/persona.js +0 -0
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
import type { CuaActorDescriptor } from "../../actors/registry.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { StudyConfig, StudySubjectServe, StudySubjectStateCheckpoint } from "../../study/types.js";
|
|
3
3
|
import type { RunScope } from "../../run/run.js";
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
6
|
-
import type { SharedWorldPlan } from "../../
|
|
7
|
-
/** What validation derived from the
|
|
8
|
-
interface
|
|
4
|
+
import type { ConcurrentSharedWorldStudyErrorCode, ConcurrentSharedWorldStudyResult, ConcurrentSharedWorldPlaneClass, FinishFacts, LiveParticipants, PlaneContext, PlaneResults, PlaneSelection, SharedWorldRunInput } from "./types.js";
|
|
5
|
+
import type { StudyDeps } from "../../study/study-deps.js";
|
|
6
|
+
import type { SharedWorldPlan } from "../../study/plan-types.js";
|
|
7
|
+
/** What validation derived from the study, which setup reads. */
|
|
8
|
+
interface AdmittedStudy {
|
|
9
9
|
plan: SharedWorldPlan;
|
|
10
10
|
input: SharedWorldRunInput;
|
|
11
|
-
/** Read for the subject's serve URL, which each
|
|
12
|
-
* their host and entry come from the plan's participants. */
|
|
13
|
-
config:
|
|
11
|
+
/** Read for the subject's serve URL, which each participant's subject names. Participants, their
|
|
12
|
+
* count and their host and entry come from the plan's participants. */
|
|
13
|
+
config: StudyConfig;
|
|
14
14
|
requestedCwd: string;
|
|
15
|
-
deps:
|
|
15
|
+
deps: StudyDeps;
|
|
16
16
|
env: Record<string, string | undefined>;
|
|
17
17
|
descriptor: CuaActorDescriptor;
|
|
18
18
|
planeClass: ConcurrentSharedWorldPlaneClass;
|
|
19
19
|
runBudget: PlaneContext["runBudget"];
|
|
20
20
|
runSession: PlaneContext["runSession"];
|
|
21
|
-
serve:
|
|
21
|
+
serve: StudySubjectServe | undefined;
|
|
22
22
|
localTreeRoute: boolean;
|
|
23
23
|
subjectRepo: string;
|
|
24
24
|
subjectEnvNames: string[];
|
|
25
|
-
checkpoints:
|
|
25
|
+
checkpoints: StudySubjectStateCheckpoint[];
|
|
26
26
|
openaiApiKey: string;
|
|
27
27
|
e2bApiKey: string;
|
|
28
28
|
knownSecretValues: string[];
|
|
29
29
|
scrubKnownValues: (text: string) => string;
|
|
30
30
|
publicRepo: string;
|
|
31
31
|
hasGithubToken: boolean;
|
|
32
|
-
fail: (code:
|
|
32
|
+
fail: (code: ConcurrentSharedWorldStudyErrorCode, message: string, actorLabel?: string) => ConcurrentSharedWorldStudyResult;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
|
-
* Starts the run and prepares what the planes read: the physical project, the run, the
|
|
35
|
+
* Starts the run and prepares what the planes read: the physical project, the run, the participant
|
|
36
36
|
* specs, comms, the packed tree and email receiving. Returns the refusal when one of them fails.
|
|
37
37
|
*/
|
|
38
|
-
export declare function prepareConcurrentRun(
|
|
38
|
+
export declare function prepareConcurrentRun(study: AdmittedStudy, scope: RunScope): Promise<{
|
|
39
39
|
ok: false;
|
|
40
|
-
result:
|
|
40
|
+
result: ConcurrentSharedWorldStudyResult;
|
|
41
41
|
} | {
|
|
42
42
|
ok: true;
|
|
43
43
|
ctx: PlaneContext;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Starts a concurrent shared-world run and prepares what its plane reads: the physical project,
|
|
2
|
-
// the run, the
|
|
2
|
+
// the run, the participant specs, comms, the packed tree and email receiving.
|
|
3
3
|
import { randomBytes } from "node:crypto";
|
|
4
4
|
import { realpath } from "node:fs/promises";
|
|
5
5
|
import { buildRunSource } from "../../run/bundle.js";
|
|
@@ -19,19 +19,19 @@ function makeRunId() {
|
|
|
19
19
|
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
20
20
|
return `concurrent-shared-world-${stamp}-${randomBytes(4).toString("hex")}`;
|
|
21
21
|
}
|
|
22
|
-
/** The provisioned plane's setup, or undefined when the
|
|
23
|
-
function provisionedSetup(
|
|
24
|
-
if (!
|
|
22
|
+
/** The provisioned plane's setup, or undefined when the study declares no `subject.serve`. */
|
|
23
|
+
function provisionedSetup(study, prepared) {
|
|
24
|
+
if (!study.serve)
|
|
25
25
|
return undefined;
|
|
26
26
|
const { subjectComms, ...rest } = prepared;
|
|
27
27
|
return {
|
|
28
|
-
serve:
|
|
29
|
-
localTreeRoute:
|
|
30
|
-
subjectRepo:
|
|
31
|
-
publicRepo:
|
|
32
|
-
subjectEnvNames:
|
|
33
|
-
hasGithubToken:
|
|
34
|
-
checkpoints:
|
|
28
|
+
serve: study.serve,
|
|
29
|
+
localTreeRoute: study.localTreeRoute,
|
|
30
|
+
subjectRepo: study.subjectRepo,
|
|
31
|
+
publicRepo: study.publicRepo,
|
|
32
|
+
subjectEnvNames: study.subjectEnvNames,
|
|
33
|
+
hasGithubToken: study.hasGithubToken,
|
|
34
|
+
checkpoints: study.checkpoints,
|
|
35
35
|
commsEmail: subjectComms.email,
|
|
36
36
|
commsPort: subjectComms.port,
|
|
37
37
|
commsEnv: subjectComms.env,
|
|
@@ -48,26 +48,26 @@ async function bindPhysicalProject(requestedCwd) {
|
|
|
48
48
|
return (await prepareSelectedOutputDirectory(path.dirname(physicalCwd), physicalCwd))
|
|
49
49
|
.physicalPath;
|
|
50
50
|
}
|
|
51
|
-
function startConcurrentRun(
|
|
52
|
-
const { plan, input, deps } =
|
|
51
|
+
function startConcurrentRun(study, cwd, scope) {
|
|
52
|
+
const { plan, input, deps } = study;
|
|
53
53
|
return scope.startRun({
|
|
54
54
|
cwd,
|
|
55
55
|
runId: input.runId,
|
|
56
56
|
mintRunId: makeRunId,
|
|
57
57
|
mode: plan.dryRun ? "dry-run" : "live",
|
|
58
|
-
|
|
58
|
+
study: plan.study,
|
|
59
59
|
renderReview: renderConcurrentReviewMarkdown,
|
|
60
60
|
observer: { open: input.open === true, render: deps.renderObserver },
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
|
-
* Starts the run and prepares what the planes read: the physical project, the run, the
|
|
64
|
+
* Starts the run and prepares what the planes read: the physical project, the run, the participant
|
|
65
65
|
* specs, comms, the packed tree and email receiving. Returns the refusal when one of them fails.
|
|
66
66
|
*/
|
|
67
|
-
export async function prepareConcurrentRun(
|
|
68
|
-
const { plan, input, config, requestedCwd, deps, env, descriptor, planeClass, fail } =
|
|
69
|
-
const { runBudget, runSession, localTreeRoute, subjectEnvNames, publicRepo } =
|
|
70
|
-
const { openaiApiKey, e2bApiKey, knownSecretValues, scrubKnownValues } =
|
|
67
|
+
export async function prepareConcurrentRun(study, scope) {
|
|
68
|
+
const { plan, input, config, requestedCwd, deps, env, descriptor, planeClass, fail } = study;
|
|
69
|
+
const { runBudget, runSession, localTreeRoute, subjectEnvNames, publicRepo } = study;
|
|
70
|
+
const { openaiApiKey, e2bApiKey, knownSecretValues, scrubKnownValues } = study;
|
|
71
71
|
const { dryRun, concurrency } = plan;
|
|
72
72
|
const cwd = await bindPhysicalProject(requestedCwd);
|
|
73
73
|
const warnings = [];
|
|
@@ -85,12 +85,12 @@ export async function prepareConcurrentRun(lab, scope) {
|
|
|
85
85
|
if (!packed.ok) {
|
|
86
86
|
return {
|
|
87
87
|
ok: false,
|
|
88
|
-
result: fail("
|
|
88
|
+
result: fail("HUMANISH_SHARED_WORLD_FAILED", packed.message, descriptor.id),
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
91
|
const localTreeArchive = packed.archive;
|
|
92
92
|
const localTreeArchiveBuffer = packed.buffer;
|
|
93
|
-
const started = await startConcurrentRun(
|
|
93
|
+
const started = await startConcurrentRun(study, cwd, scope);
|
|
94
94
|
if (!started.ok)
|
|
95
95
|
return { ok: false, result: fail(started.code, started.message, descriptor.id) };
|
|
96
96
|
const { run } = started;
|
|
@@ -131,7 +131,7 @@ export async function prepareConcurrentRun(lab, scope) {
|
|
|
131
131
|
return {
|
|
132
132
|
ok: false,
|
|
133
133
|
result: {
|
|
134
|
-
...fail("
|
|
134
|
+
...fail("HUMANISH_SHARED_WORLD_INVALID", email.message, descriptor.id),
|
|
135
135
|
runId,
|
|
136
136
|
},
|
|
137
137
|
};
|
|
@@ -169,7 +169,7 @@ export async function prepareConcurrentRun(lab, scope) {
|
|
|
169
169
|
receiving,
|
|
170
170
|
warnings,
|
|
171
171
|
};
|
|
172
|
-
const provisioned = provisionedSetup(
|
|
172
|
+
const provisioned = provisionedSetup(study, {
|
|
173
173
|
localTreeArchive,
|
|
174
174
|
localTreeArchiveBuffer,
|
|
175
175
|
subjectComms,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
1
|
+
import type { StudyDeps } from "../../study/study-deps.js";
|
|
2
|
+
import type { StudyEvent } from "../../study/run-study-events.js";
|
|
3
|
+
import type { RunStudyHomes } from "../../study/run-study-homes.js";
|
|
4
4
|
import type { SharedWorldJudgment } from "../../run/judge.js";
|
|
5
|
-
import type { BrowserScorer } from "../../
|
|
5
|
+
import type { BrowserScorer } from "../../study/adapter-extension.js";
|
|
6
6
|
import type { AutomaticAnalysisResult } from "../../analysis/automatic-completion.js";
|
|
7
7
|
import type { CuaActorDescriptor } from "../../actors/registry.js";
|
|
8
8
|
import type { CommsReceivingRun } from "../../comms/receiving.js";
|
|
9
|
-
import type {
|
|
9
|
+
import type { StudyCommsEmail, StudyCommsExternal, StudyConfig } from "../../study/types.js";
|
|
10
10
|
import type { DesktopResourceObservation } from "../../substrates/e2b/desktop-resources.js";
|
|
11
11
|
import type { ObserverResult } from "../../observer/render.js";
|
|
12
12
|
import type { ObserverRuntimeStreamUrl } from "../../observer/run-routes.js";
|
|
@@ -17,18 +17,18 @@ import type { LocalTreeArchive } from "../../subject/local-tree-archive.js";
|
|
|
17
17
|
import type { LiveTraceFlush } from "../computer-use/live-flush.js";
|
|
18
18
|
import type { CuaParticipantDeps, DesktopParticipantRun, CuaRunBudget, ParticipantRunOutcome } from "../computer-use/types.js";
|
|
19
19
|
import type { ProvisionedPlaneSetup } from "./provisioned.js";
|
|
20
|
-
import type { SharedWorldPlan } from "../../
|
|
21
|
-
|
|
20
|
+
import type { SharedWorldPlan } from "../../study/plan-types.js";
|
|
21
|
+
import { type StudyResultIdentity } from "../../run/study-result.js";
|
|
22
22
|
export declare const CONCURRENT_SHARED_WORLD_PROVIDER_METADATA: {
|
|
23
23
|
readonly mode: "concurrent-shared-world-lab";
|
|
24
24
|
readonly tool: "humanish";
|
|
25
25
|
};
|
|
26
26
|
export declare const CONCURRENT_ATTRIBUTION_LIMITS: readonly ["concurrent", "best-effort-causal-attribution", "non-deterministic-shared-state", "window-and-snapshot-granularity", "contention-observed-not-proven-safe", "state-change-not-isolated-to-actors"];
|
|
27
|
-
export interface
|
|
27
|
+
export interface RunConcurrentSharedWorldStudyOptions {
|
|
28
28
|
/** Cancels post-run analysis only. */
|
|
29
29
|
analysisSignal?: AbortSignal;
|
|
30
30
|
cwd: string;
|
|
31
|
-
config:
|
|
31
|
+
config: StudyConfig;
|
|
32
32
|
/** Resolved upstream (scenario.mode + CLI override); defaults safe (dry-run). */
|
|
33
33
|
dryRun: boolean;
|
|
34
34
|
open?: boolean;
|
|
@@ -40,37 +40,38 @@ export interface RunConcurrentSharedWorldLabOptions {
|
|
|
40
40
|
env?: Readonly<Record<string, string | undefined>>;
|
|
41
41
|
/**
|
|
42
42
|
* Runs after a sandbox exists and before anything is provisioned on it: the provisioned plane's
|
|
43
|
-
* subject sandbox, then each
|
|
43
|
+
* subject sandbox, then each participant's desktop. The external-public plane has participants
|
|
44
|
+
* only.
|
|
44
45
|
*/
|
|
45
|
-
prepareDesktop?: NonNullable<
|
|
46
|
+
prepareDesktop?: NonNullable<RunStudyHomes["prepareDesktop"]>;
|
|
46
47
|
/** Awaited after a participant's live stream starts, and again after its sandbox is gone. */
|
|
47
|
-
onStream?: NonNullable<
|
|
48
|
-
/** Reports subject phases to onEvent; built by
|
|
49
|
-
emit?: (event:
|
|
48
|
+
onStream?: NonNullable<RunStudyHomes["onStream"]>;
|
|
49
|
+
/** Reports subject phases to onEvent; built by normalizeRunStudyOptions. */
|
|
50
|
+
emit?: (event: StudyEvent) => void;
|
|
50
51
|
/** Test seams. */
|
|
51
|
-
deps?:
|
|
52
|
-
/** Scores the assembled evidence: `
|
|
52
|
+
deps?: StudyDeps;
|
|
53
|
+
/** Scores the assembled evidence: `RunStudyOptions.scorer`, or the scorer the CLI loads. */
|
|
53
54
|
scorer?: BrowserScorer;
|
|
54
|
-
/** Present only when the scorer was
|
|
55
|
+
/** Present only when the scorer was config-declared and loaded by the CLI;
|
|
55
56
|
* core-stamped onto the bundle as evidence. Absent for library callers. */
|
|
56
57
|
scorerProvenance?: RunScorerProvenance;
|
|
57
58
|
}
|
|
58
|
-
/** What a shared-world run takes besides its plan. The plan carries the config, dry run and
|
|
59
|
-
export type SharedWorldRunInput = Omit<
|
|
60
|
-
export type
|
|
59
|
+
/** What a shared-world run takes besides its plan. The plan carries the config, dry run and study. */
|
|
60
|
+
export type SharedWorldRunInput = Omit<RunConcurrentSharedWorldStudyOptions, "config" | "dryRun">;
|
|
61
|
+
export type ConcurrentSharedWorldStudyErrorCode = "HUMANISH_STUDY_ANALYSIS_INVALID" | "HUMANISH_STUDY_TASKS_UNSUPPORTED" | "HUMANISH_STUDY_OPTION_UNSUPPORTED" | "HUMANISH_STUDY_V2_UNSUPPORTED" | "HUMANISH_SHARED_WORLD_FAILED" | "HUMANISH_SHARED_WORLD_ACTOR_UNSUPPORTED" | "HUMANISH_SHARED_WORLD_INVALID" | "HUMANISH_SHARED_WORLD_KEYS_MISSING"
|
|
61
62
|
/** A local-agent brain's CLI is not on `PATH`. */
|
|
62
|
-
| "
|
|
63
|
+
| "HUMANISH_SHARED_WORLD_AGENT_MISSING"
|
|
63
64
|
/** A local-agent brain's CLI is signed out, or could not report its sign-in status. */
|
|
64
|
-
| "
|
|
65
|
+
| "HUMANISH_SHARED_WORLD_AGENT_SIGNIN_REQUIRED"
|
|
65
66
|
/** A dollar cap that cannot be priced: an unpriced model, or a ChatGPT-account Codex brain. */
|
|
66
|
-
| "
|
|
67
|
-
/** A declared adopter-hosted comms catch
|
|
67
|
+
| "HUMANISH_SHARED_WORLD_UNPRICED_CAP" | "HUMANISH_SHARED_WORLD_SUBJECT_ENV_MISSING" | "HUMANISH_SHARED_WORLD_GETHOST_UNAVAILABLE" | "HUMANISH_SHARED_WORLD_HANDOFF_TIMEOUT" | "HUMANISH_RUN_ID_IN_USE"
|
|
68
|
+
/** A declared adopter-hosted comms catch did not answer as a humanish catch. Fail closed
|
|
68
69
|
* before any actor spend, since the funnel would silently collect nothing. */
|
|
69
|
-
| "
|
|
70
|
+
| "HUMANISH_SHARED_WORLD_COMMS_CATCH_UNREACHABLE"
|
|
70
71
|
/** comms.email.external.authTokenEnv names a token shorter than MIN_CATCH_TOKEN_LENGTH or not
|
|
71
72
|
* well-formed Unicode (src/comms/external-evidence.ts). Refused before the catch is probed. */
|
|
72
|
-
| "
|
|
73
|
-
/** The two plane classes of the concurrent shared-world route
|
|
73
|
+
| "HUMANISH_SHARED_WORLD_COMMS_TOKEN_INVALID";
|
|
74
|
+
/** The two plane classes of the concurrent shared-world route. */
|
|
74
75
|
export type ConcurrentSharedWorldPlaneClass = "provisioned-getHost" | "external-public";
|
|
75
76
|
export declare const EXTERNAL_PUBLIC_ATTRIBUTION_LIMITS: readonly ["concurrent", "best-effort-causal-attribution", "non-deterministic-shared-state", "window-and-snapshot-granularity", "contention-observed-not-proven-safe", "state-change-not-isolated-to-actors", "external-public-plane", "operator-attested-target-not-harness-controlled", "no-synthetic-attestation", "no-authoritative-shared-state-proof", "concurrency-by-temporal-co-occupancy-only"];
|
|
76
77
|
/** One persona's outcome against the contended world (the "M of N" headline). */
|
|
@@ -97,15 +98,13 @@ export interface ConcurrentSharedWorldParticipantResult {
|
|
|
97
98
|
killed: boolean;
|
|
98
99
|
};
|
|
99
100
|
error?: {
|
|
100
|
-
code:
|
|
101
|
+
code: ConcurrentSharedWorldStudyErrorCode;
|
|
101
102
|
message: string;
|
|
102
103
|
};
|
|
103
104
|
}
|
|
104
|
-
export interface
|
|
105
|
-
schema: typeof CONCURRENT_SHARED_WORLD_LAB_SCHEMA;
|
|
105
|
+
export interface ConcurrentSharedWorldStudyResult extends AutomaticAnalysisResult, StudyResultIdentity<"shared-world"> {
|
|
106
106
|
ok: boolean;
|
|
107
107
|
cwd: string;
|
|
108
|
-
labId: string;
|
|
109
108
|
actor: string;
|
|
110
109
|
topology: "shared-world";
|
|
111
110
|
topologyMode: "concurrent";
|
|
@@ -124,16 +123,16 @@ export interface ConcurrentSharedWorldLabResult extends AutomaticAnalysisResult
|
|
|
124
123
|
};
|
|
125
124
|
/** Whether ≥2 actor windows overlapped in time (proven concurrency; live only). */
|
|
126
125
|
overlapProven?: boolean;
|
|
127
|
-
/** Max participants observed live at the same instant (live only)
|
|
128
|
-
* 6-participant run capped at 3 reports 3 here, never 6
|
|
126
|
+
/** Max participants observed live at the same instant (live only): the simultaneity number; a
|
|
127
|
+
* 6-participant run capped at 3 reports 3 here, never 6. */
|
|
129
128
|
maxSimultaneousLanes?: number;
|
|
130
|
-
/** Subject provenance
|
|
129
|
+
/** Subject provenance: the one shared plane. */
|
|
131
130
|
subject?: RunSubjectProvenance;
|
|
132
131
|
roles: ConcurrentSharedWorldParticipantResult[];
|
|
133
132
|
observer?: ObserverResult;
|
|
134
133
|
warnings: string[];
|
|
135
134
|
error?: {
|
|
136
|
-
code:
|
|
135
|
+
code: ConcurrentSharedWorldStudyErrorCode;
|
|
137
136
|
message: string;
|
|
138
137
|
};
|
|
139
138
|
}
|
|
@@ -158,12 +157,12 @@ type StartedRun = Extract<Awaited<ReturnType<RunScope["startRun"]>>, {
|
|
|
158
157
|
export interface PlaneContext {
|
|
159
158
|
plan: SharedWorldPlan;
|
|
160
159
|
input: SharedWorldRunInput;
|
|
161
|
-
/** Read for the subject's serve URL, which each
|
|
162
|
-
* their host and entry come from the plan's participants. */
|
|
163
|
-
config:
|
|
160
|
+
/** Read for the subject's serve URL, which each participant's subject names. Participants, their
|
|
161
|
+
* count and their host and entry come from the plan's participants. */
|
|
162
|
+
config: StudyConfig;
|
|
164
163
|
descriptor: CuaActorDescriptor;
|
|
165
164
|
/** The run's test seams; empty outside tests. */
|
|
166
|
-
deps:
|
|
165
|
+
deps: StudyDeps;
|
|
167
166
|
env: Record<string, string | undefined>;
|
|
168
167
|
concurrency: number;
|
|
169
168
|
runBudget: CuaRunBudget | undefined;
|
|
@@ -171,7 +170,8 @@ export interface PlaneContext {
|
|
|
171
170
|
openaiApiKey: string;
|
|
172
171
|
e2bApiKey: string;
|
|
173
172
|
scrubKnownValues: (text: string) => string;
|
|
174
|
-
/** The values scrubKnownValues removes. Real email receiving adds its secrets before
|
|
173
|
+
/** The values scrubKnownValues removes. Real email receiving adds its secrets before participants
|
|
174
|
+
* start. */
|
|
175
175
|
knownSecretValues: readonly string[];
|
|
176
176
|
cwd: string;
|
|
177
177
|
run: StartedRun;
|
|
@@ -191,8 +191,9 @@ export interface PlaneContext {
|
|
|
191
191
|
warnings: string[];
|
|
192
192
|
}
|
|
193
193
|
/**
|
|
194
|
-
* What the
|
|
195
|
-
* flush; each
|
|
194
|
+
* What the participants feed while they run. A plane sets the attached Observer and starts the
|
|
195
|
+
* trace flush; each participant's onStream appends stream URLs; the orchestrator reads all three at
|
|
196
|
+
* finish.
|
|
196
197
|
*/
|
|
197
198
|
export interface LiveParticipants {
|
|
198
199
|
observer?: ObserverResult & {
|
|
@@ -201,17 +202,17 @@ export interface LiveParticipants {
|
|
|
201
202
|
flush?: LiveTraceFlush;
|
|
202
203
|
readonly streamUrls: ObserverRuntimeStreamUrl[];
|
|
203
204
|
}
|
|
204
|
-
/** An adopter-hosted comms catch
|
|
205
|
+
/** An adopter-hosted comms catch and the inbox its personas open. */
|
|
205
206
|
export interface ExternalCommsWiring {
|
|
206
|
-
external:
|
|
207
|
-
email:
|
|
207
|
+
external: StudyCommsExternal;
|
|
208
|
+
email: StudyCommsEmail;
|
|
208
209
|
inboxUrl: string;
|
|
209
210
|
}
|
|
210
211
|
/** What buildConcurrentSharedWorldBundle projects into a run bundle. */
|
|
211
212
|
export interface ConcurrentBundleArgs {
|
|
212
213
|
/** The run's judgment (judgeSharedWorldRun over the other fields). */
|
|
213
214
|
judgment: SharedWorldJudgment;
|
|
214
|
-
/** The run this bundle belongs to; the bundle head reads its id, mode, start and
|
|
215
|
+
/** The run this bundle belongs to; the bundle head reads its id, mode, start and study. */
|
|
215
216
|
run: BundleRun;
|
|
216
217
|
plan: SharedWorldPlan;
|
|
217
218
|
descriptor: CuaActorDescriptor;
|
|
@@ -225,19 +226,20 @@ export interface ConcurrentBundleArgs {
|
|
|
225
226
|
seedDigest: string;
|
|
226
227
|
subjectCommit?: string;
|
|
227
228
|
hostDigest?: string;
|
|
228
|
-
/** Run-level digest-only comms-thread evidence path (humanish.comms-thread.v1), when a comms
|
|
229
|
+
/** Run-level digest-only comms-thread evidence path (humanish.comms-thread.v1), when a comms study
|
|
229
230
|
* captured mail into the subject sandbox's catch. Registered on the first persona stream (it is a
|
|
230
231
|
* property of the one shared app, and belongs to no single persona). */
|
|
231
232
|
commsArtifactPath?: string;
|
|
232
|
-
/**
|
|
233
|
+
/** The plane-class discriminator (default provisioned-getHost, byte-stable). */
|
|
233
234
|
planeClass?: ConcurrentSharedWorldPlaneClass;
|
|
234
|
-
/** external-public only: sha256-16 of the observed origin the
|
|
235
|
-
* proof
|
|
235
|
+
/** external-public only: sha256-16 of the observed origin the participants converged on (the
|
|
236
|
+
* convergence proof: what the participants actually reached, tolerant of a declared->observed
|
|
237
|
+
* redirect). */
|
|
236
238
|
publicOriginDigest?: string;
|
|
237
|
-
/** external-public only: sha256-16 of the operator-
|
|
239
|
+
/** external-public only: sha256-16 of the operator-declared plane origin (evidence/reference only;
|
|
238
240
|
* never asserted equal to the observed origin, since a cross-origin redirect is normal). */
|
|
239
241
|
declaredOriginDigest?: string;
|
|
240
|
-
/** external-public only: sha256-16 of the
|
|
242
|
+
/** external-public only: sha256-16 of the /lobby/CODE path all participants converged on. */
|
|
241
243
|
lobbyConvergenceDigest?: string;
|
|
242
244
|
runError?: string;
|
|
243
245
|
/** The provisioned plane's own desktop; absent on external-public planes and dry runs. */
|
|
@@ -263,7 +265,7 @@ export interface PlaneResults {
|
|
|
263
265
|
/** Which plane runs, and the setup it needs beyond the plane context. */
|
|
264
266
|
export interface PlaneSelection {
|
|
265
267
|
planeClass: ConcurrentSharedWorldPlaneClass;
|
|
266
|
-
/** Undefined when the
|
|
268
|
+
/** Undefined when the study declares no `subject.serve`. */
|
|
267
269
|
provisioned: ProvisionedPlaneSetup | undefined;
|
|
268
270
|
externalWiring: ExternalCommsWiring | undefined;
|
|
269
271
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// The concurrent shared-world route's schema constants, attribution limits, options and result
|
|
2
|
-
// types, and the per-
|
|
3
|
-
|
|
2
|
+
// types, and the per-participant result the planes collect.
|
|
3
|
+
import {} from "../../run/study-result.js";
|
|
4
4
|
export const CONCURRENT_SHARED_WORLD_PROVIDER_METADATA = {
|
|
5
5
|
mode: "concurrent-shared-world-lab",
|
|
6
6
|
tool: "humanish",
|
|
@@ -15,8 +15,8 @@ export const CONCURRENT_ATTRIBUTION_LIMITS = [
|
|
|
15
15
|
"contention-observed-not-proven-safe",
|
|
16
16
|
"state-change-not-isolated-to-actors",
|
|
17
17
|
];
|
|
18
|
-
//
|
|
19
|
-
//
|
|
18
|
+
// External-public plane class: the downgraded attribution ceiling. The concurrent family
|
|
19
|
+
// plus the mandatory external-public disclosures, mirrored in the required
|
|
20
20
|
// set in verify/shared-world-concurrent.ts (CONCURRENT_ATTRIBUTION_LIMITS +
|
|
21
21
|
// EXTERNAL_PUBLIC_EXTRA_LIMITS). Verify fails closed on a missing one.
|
|
22
22
|
export const EXTERNAL_PUBLIC_ATTRIBUTION_LIMITS = [
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { ActorTrace } from "../../actors/contract.js";
|
|
2
2
|
import { type RunBundle, type RunScorerProvenance } from "../../run/bundle.js";
|
|
3
|
-
import { type ScorerOutcome } from "../../
|
|
3
|
+
import { type ScorerOutcome } from "../../study/adapter-extension.js";
|
|
4
4
|
import type { TerminalLedgers, TerminalScorer } from "./types.js";
|
|
5
5
|
/**
|
|
6
|
-
* Run the
|
|
6
|
+
* Run the product-adapter extension seam over the assembled
|
|
7
7
|
* evidence and attach its results to the bundle in place, without core knowing any product noun.
|
|
8
8
|
* The review is not touched here: the returned failures are folded into it by the caller.
|
|
9
9
|
*
|
|
10
10
|
* - `score`: when present, the returned namespaced `RunAdapterScore` lands on `bundle.adapterScore`.
|
|
11
11
|
* For a library caller (no `scorerProvenance`), the adapter score is additive and never a
|
|
12
|
-
* failure. For a config-declared scorer (
|
|
12
|
+
* failure. For a config-declared scorer (`scorerProvenance` present), a status:"fail" is a
|
|
13
13
|
* failure (the keystone route is the product's own definition of pass/fail), and so is a scorer
|
|
14
14
|
* that throws or returns a malformed value, so a crashed declared gate is never a silent green.
|
|
15
15
|
* - `deriveFeedback`: when present, the returned candidates are appended to
|
|
@@ -27,11 +27,11 @@ export declare function applyAdapterExtensionSeam(args: {
|
|
|
27
27
|
ledgers: TerminalLedgers;
|
|
28
28
|
transcript: string;
|
|
29
29
|
product: string;
|
|
30
|
-
|
|
30
|
+
studyId: string;
|
|
31
31
|
runId: string;
|
|
32
32
|
sanitize: (text: string) => string;
|
|
33
33
|
warnings: string[];
|
|
34
|
-
/** Present only when the scorer was
|
|
34
|
+
/** Present only when the scorer was config-declared. It is the "declared" marker that opts the
|
|
35
35
|
* terminal route into flip-on-fail. Absent for library callers (additive, back-compat). */
|
|
36
36
|
scorerProvenance?: RunScorerProvenance;
|
|
37
37
|
}): Promise<ScorerOutcome>;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {} from "../../run/bundle.js";
|
|
2
2
|
import { isRunAdapterScore } from "../../run/bundle-shape.js";
|
|
3
|
-
import { adapterScoreFailureMessage, declaredScorerThrew, DECLARED_SCORER_MALFORMED, frozenBundleView, isAdapterFeedbackCandidate, } from "../../
|
|
3
|
+
import { adapterScoreFailureMessage, declaredScorerThrew, DECLARED_SCORER_MALFORMED, frozenBundleView, isAdapterFeedbackCandidate, } from "../../study/adapter-extension.js";
|
|
4
4
|
/**
|
|
5
|
-
* Run the
|
|
5
|
+
* Run the product-adapter extension seam over the assembled
|
|
6
6
|
* evidence and attach its results to the bundle in place, without core knowing any product noun.
|
|
7
7
|
* The review is not touched here: the returned failures are folded into it by the caller.
|
|
8
8
|
*
|
|
9
9
|
* - `score`: when present, the returned namespaced `RunAdapterScore` lands on `bundle.adapterScore`.
|
|
10
10
|
* For a library caller (no `scorerProvenance`), the adapter score is additive and never a
|
|
11
|
-
* failure. For a config-declared scorer (
|
|
11
|
+
* failure. For a config-declared scorer (`scorerProvenance` present), a status:"fail" is a
|
|
12
12
|
* failure (the keystone route is the product's own definition of pass/fail), and so is a scorer
|
|
13
13
|
* that throws or returns a malformed value, so a crashed declared gate is never a silent green.
|
|
14
14
|
* - `deriveFeedback`: when present, the returned candidates are appended to
|
|
@@ -20,7 +20,7 @@ import { adapterScoreFailureMessage, declaredScorerThrew, DECLARED_SCORER_MALFOR
|
|
|
20
20
|
* re-checks the surviving shapes downstream, so the seam stays fail-closed end to end.
|
|
21
21
|
*/
|
|
22
22
|
export async function applyAdapterExtensionSeam(args) {
|
|
23
|
-
const { scorer, bundle, trace, ledgers, transcript, product,
|
|
23
|
+
const { scorer, bundle, trace, ledgers, transcript, product, studyId, runId, sanitize, warnings, scorerProvenance, } = args;
|
|
24
24
|
if (!scorer?.score && !scorer?.deriveFeedback)
|
|
25
25
|
return { failures: [] };
|
|
26
26
|
const declared = scorerProvenance !== undefined;
|
|
@@ -28,17 +28,17 @@ export async function applyAdapterExtensionSeam(args) {
|
|
|
28
28
|
// still loaded and attempted).
|
|
29
29
|
if (scorerProvenance)
|
|
30
30
|
bundle.scorerProvenance = scorerProvenance;
|
|
31
|
-
// The scorer sees a
|
|
31
|
+
// The scorer sees a read-only view of the bundle so it cannot mutate noSpend/cost/review in place to
|
|
32
32
|
// launder a verdict (a tamper attempt throws and is caught as a hook failure below). The seam stamps
|
|
33
33
|
// the real bundle. The transcript is the same normalized, source-scrubbed text the run persists as
|
|
34
|
-
// terminal-transcript.txt
|
|
34
|
+
// terminal-transcript.txt, so the scorer sees nothing beyond what disk already holds.
|
|
35
35
|
const ctx = {
|
|
36
36
|
bundle: frozenBundleView(bundle),
|
|
37
37
|
trace,
|
|
38
38
|
ledgers,
|
|
39
39
|
transcript,
|
|
40
40
|
product,
|
|
41
|
-
|
|
41
|
+
studyId,
|
|
42
42
|
runId,
|
|
43
43
|
};
|
|
44
44
|
// Best-effort re-scrub of the adapter payload: round-trip the whole JSON through the run's denylist
|
|
@@ -46,7 +46,7 @@ export async function applyAdapterExtensionSeam(args) {
|
|
|
46
46
|
// local paths, and misses encoded/split/custom secrets, DB passwords, PII, or abs paths outside
|
|
47
47
|
// the denylist. A
|
|
48
48
|
// payload from config-declared code is acceptable only because the trust boundary (the party who
|
|
49
|
-
// declares the scorer runs the
|
|
49
|
+
// declares the scorer runs the study) already permits direct exfiltration; the re-scrub is
|
|
50
50
|
// defense-in-depth, not a wall.
|
|
51
51
|
const scrubValue = (value) => JSON.parse(sanitize(JSON.stringify(value)));
|
|
52
52
|
// Set for a declared scorer that fails to render a pass verdict (status:"fail", malformed, or throw).
|
|
@@ -59,7 +59,7 @@ export async function applyAdapterExtensionSeam(args) {
|
|
|
59
59
|
const cleaned = scrubValue(score);
|
|
60
60
|
if (isRunAdapterScore(cleaned)) {
|
|
61
61
|
bundle.adapterScore = cleaned;
|
|
62
|
-
// A
|
|
62
|
+
// A config-declared terminal scorer owns the product verdict: a status:"fail" fails the
|
|
63
63
|
// review and the run result. A library caller keeps the additive no-fail behavior.
|
|
64
64
|
const message = declared ? adapterScoreFailureMessage(bundle) : undefined;
|
|
65
65
|
if (message !== undefined)
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import type { ActorPersonaRef, ActorTrace } from "../../actors/contract.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { StudyScenarioCaps, StudyRuntimeAuth } from "../../study/types.js";
|
|
3
3
|
import { type RunBundle, type RunCostSummary, type BundleRun } from "../../run/bundle.js";
|
|
4
|
-
import type
|
|
4
|
+
import { type Verdict } from "../../run/judge.js";
|
|
5
5
|
import type { TerminalLedgers } from "./types.js";
|
|
6
6
|
/**
|
|
7
|
-
* Project the terminal-product
|
|
8
|
-
* producer only).
|
|
7
|
+
* Project the terminal-product run into a humanish.run-bundle.v1 (no schema change: a new
|
|
8
|
+
* producer only). Dry run: a contract bundle. The terminal stream is a contract placeholder
|
|
9
9
|
* (stdin disabled, no captured tail, because nothing ran), the subject is declared unpinned, and
|
|
10
10
|
* the caps/policies/runtime-auth declarations are recorded without pretending that live ledgers
|
|
11
11
|
* exist. The shipped live builder fills the same evidence contract. Exported for tests.
|
|
12
12
|
*/
|
|
13
13
|
export declare function buildTerminalProductBundle(args: {
|
|
14
|
-
/** The run this bundle belongs to; the bundle head reads its id, mode, start and
|
|
14
|
+
/** The run this bundle belongs to; the bundle head reads its id, mode, start and study. */
|
|
15
15
|
run: BundleRun;
|
|
16
16
|
actorId: string;
|
|
17
17
|
dryRun: boolean;
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
studyId: string;
|
|
19
|
+
studyTitle?: string;
|
|
20
20
|
mission: string;
|
|
21
21
|
persona: ActorPersonaRef;
|
|
22
22
|
productName: string;
|
|
23
23
|
publicSurfaces: string[];
|
|
24
|
-
caps?:
|
|
24
|
+
caps?: StudyScenarioCaps;
|
|
25
25
|
runtimeAuth?: string;
|
|
26
26
|
stdin: "disabled" | "planned" | "sent";
|
|
27
27
|
policies: {
|
|
@@ -42,18 +42,18 @@ export declare function buildTerminalProductBundle(args: {
|
|
|
42
42
|
* mode==="live") enforces the ledgers + proven cleanup + interventions-present over this bundle.
|
|
43
43
|
*/
|
|
44
44
|
export declare function buildLiveTerminalProductBundle(args: {
|
|
45
|
-
/** The run this bundle belongs to; the bundle head reads its id, mode, start and
|
|
45
|
+
/** The run this bundle belongs to; the bundle head reads its id, mode, start and study. */
|
|
46
46
|
run: BundleRun;
|
|
47
47
|
actorId: string;
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
studyId: string;
|
|
49
|
+
studyTitle?: string;
|
|
50
50
|
mission: string;
|
|
51
51
|
persona: ActorPersonaRef;
|
|
52
52
|
productName: string;
|
|
53
53
|
publicSurfaces: string[];
|
|
54
|
-
caps?:
|
|
54
|
+
caps?: StudyScenarioCaps;
|
|
55
55
|
runtimeAuthKeyName: string;
|
|
56
|
-
runtimeAuth?:
|
|
56
|
+
runtimeAuth?: StudyRuntimeAuth;
|
|
57
57
|
policies: {
|
|
58
58
|
allowPrivateRepoAccess: boolean;
|
|
59
59
|
allowProviderCredentials: boolean;
|