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
|
@@ -16,7 +16,7 @@ export declare function buildSingleParticipantBundle(args: {
|
|
|
16
16
|
/** The run's verdict, from the judge. */
|
|
17
17
|
verdict: Verdict;
|
|
18
18
|
realEmail?: boolean;
|
|
19
|
-
/** The run this bundle belongs to; the bundle head reads its id, mode, start and
|
|
19
|
+
/** The run this bundle belongs to; the bundle head reads its id, mode, start and study. */
|
|
20
20
|
run: BundleRun;
|
|
21
21
|
actorId: string;
|
|
22
22
|
appUrl: string;
|
|
@@ -26,8 +26,8 @@ export declare function buildSingleParticipantBundle(args: {
|
|
|
26
26
|
surface?: string;
|
|
27
27
|
caseGroup?: string;
|
|
28
28
|
dryRun: boolean;
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
studyId: string;
|
|
30
|
+
studyTitle?: string;
|
|
31
31
|
mission: string;
|
|
32
32
|
assignment?: RunStream["assignment"];
|
|
33
33
|
persona: ActorPersonaRef;
|
|
@@ -44,20 +44,20 @@ export declare function buildSingleParticipantBundle(args: {
|
|
|
44
44
|
isMobile?: boolean;
|
|
45
45
|
screenshots: string[];
|
|
46
46
|
/** Relative run-dir path of the digest-only comms-thread evidence artifact (humanish.comms-thread.v1),
|
|
47
|
-
* when a comms
|
|
47
|
+
* when a comms study captured mail; registered as a "log" stream artifact. */
|
|
48
48
|
commsArtifactPath?: string;
|
|
49
49
|
/**
|
|
50
50
|
* Capture-time screenshot policy ("blurred" when policies.redactScreenshots, else "raw").
|
|
51
51
|
* When a session ran, its trace's `redaction.screenshots` is the evidence-of-record and
|
|
52
|
-
* wins; this fallback
|
|
53
|
-
* (no trace exists to testify then). Defaults to "raw"
|
|
52
|
+
* wins; this fallback labels the frames written before a mid-session failure
|
|
53
|
+
* (no trace exists to testify then). Defaults to "raw", the engine default.
|
|
54
54
|
*/
|
|
55
55
|
captureRedaction?: "raw" | "blurred";
|
|
56
56
|
session?: CuaLoopResult;
|
|
57
57
|
sessionError?: string;
|
|
58
58
|
/**
|
|
59
|
-
* The route's own credibility read of a goal_satisfied session
|
|
60
|
-
* evidence of what it
|
|
59
|
+
* The route's own credibility read of a goal_satisfied session. The actor's status is
|
|
60
|
+
* evidence of what it claimed; whether the harness counts the claim is decided by the route
|
|
61
61
|
* (zero engagement, a final message that describes a blocker). The review has to say the same
|
|
62
62
|
* thing the participant's exit code says, or the durable bundle reports a participant reaching the
|
|
63
63
|
* goal on a run the harness refused to count.
|
|
@@ -72,9 +72,9 @@ export declare function buildSingleParticipantBundle(args: {
|
|
|
72
72
|
* + digests only, never values or command text), including the subject's state story. */
|
|
73
73
|
subjectProvenance?: CuaSubjectProvenanceArg;
|
|
74
74
|
/**
|
|
75
|
-
* Entry kind for the non-clone subject.declared event
|
|
76
|
-
*
|
|
77
|
-
* declared
|
|
75
|
+
* Entry kind for the non-clone subject.declared event, which declares what the subject
|
|
76
|
+
* was. "local-app": an already-running local dev server driven in-process, un-pinnable, and
|
|
77
|
+
* declared as caller-provisioned/unpinned with no E2B. Absent: a plain app-url entry.
|
|
78
78
|
*/
|
|
79
79
|
entryKind?: "local-app";
|
|
80
80
|
/** The custom E2B desktop template (image) this participant launched on, when configured (provenance). */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { participantAssignment } from "../../
|
|
1
|
+
import { participantAssignment } from "../../study/participant-assignment.js";
|
|
2
2
|
import { redactText } from "../../evidence/redaction.js";
|
|
3
3
|
import { REVIEW_SCHEMA, bundleArtifacts, bundleHead, } from "../../run/bundle.js";
|
|
4
4
|
import {} from "../../run/streams.js";
|
|
@@ -7,6 +7,7 @@ import { describeSubjectState, participantFeedbackCandidates, phaseEventIdSuffix
|
|
|
7
7
|
import { participantStatus as participantStatusFor } from "../../run/judge.js";
|
|
8
8
|
import { buildRunCostSummary } from "../../run/cost-summary.js";
|
|
9
9
|
import { participantEvent, participantIds, participantRecord, participantStream, } from "../../run/participant-records.js";
|
|
10
|
+
import { plural } from "../../run/text.js";
|
|
10
11
|
/** The one participant's record and stream ids: sim-001 and stream-001. */
|
|
11
12
|
const SINGLE = participantIds(0);
|
|
12
13
|
/** The participant's runner: a hosted E2B desktop, a local VM desktop, or the in-process route. */
|
|
@@ -24,7 +25,7 @@ function browserPlace(args) {
|
|
|
24
25
|
return "in a hosted desktop browser";
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
|
-
/** Run-level cost
|
|
28
|
+
/** Run-level cost estimate (advisory; omitted when nothing was priced and no sandbox ran). */
|
|
28
29
|
function runCost(args) {
|
|
29
30
|
return buildRunCostSummary({
|
|
30
31
|
participants: args.session
|
|
@@ -52,15 +53,15 @@ function participantView(args, publicAppUrl) {
|
|
|
52
53
|
? "Live computer-use session is running; stream auth URL is available only through the attached Observer server."
|
|
53
54
|
: (args.session?.reason ??
|
|
54
55
|
args.sessionError ??
|
|
55
|
-
"
|
|
56
|
+
"Dry run: the evidence shape was written without launching a desktop or spending provider tokens.");
|
|
56
57
|
const lastScreenshot = args.screenshots[args.screenshots.length - 1];
|
|
57
58
|
const desktopGeometry = args.desktopRoute === false
|
|
58
59
|
? undefined
|
|
59
60
|
: (args.desktopGeometry ?? {
|
|
60
61
|
screen: { requested: { width: args.resolution[0], height: args.resolution[1] } },
|
|
61
62
|
});
|
|
62
|
-
//
|
|
63
|
-
// run's
|
|
63
|
+
// Claims match mechanism: every screenshot label names the
|
|
64
|
+
// run's actual mode. The session trace is the evidence-of-record; the capture policy covers
|
|
64
65
|
// frames written before a mid-session failure produced a trace.
|
|
65
66
|
const traceScreenshotMode = args.session?.trace.redaction.screenshots;
|
|
66
67
|
const screenshotMode = traceScreenshotMode === "raw" || traceScreenshotMode === "blurred"
|
|
@@ -80,7 +81,7 @@ function singleSimulation(args, view) {
|
|
|
80
81
|
const { publicAppUrl, status, reason } = view;
|
|
81
82
|
return participantRecord(SINGLE, 1, {
|
|
82
83
|
personaId: args.persona.id,
|
|
83
|
-
scenarioId: `cua-${args.
|
|
84
|
+
scenarioId: `cua-${args.studyId}`,
|
|
84
85
|
status,
|
|
85
86
|
streamKind: "browser",
|
|
86
87
|
mode: "browser-sim",
|
|
@@ -91,8 +92,8 @@ function singleSimulation(args, view) {
|
|
|
91
92
|
: args.inProgress === true
|
|
92
93
|
? `Computer-use actor (${args.actorId}) is driving the subject app ${browserPlace(args)}.`
|
|
93
94
|
: args.sessionError !== undefined
|
|
94
|
-
? `
|
|
95
|
-
: `
|
|
95
|
+
? `The computer-use run failed before a terminal session verdict: ${args.sessionError}`
|
|
96
|
+
: `Computer-use actor (${args.actorId}) against ${publicAppUrl}; no session ran.`,
|
|
96
97
|
startedAt: args.run.createdAt,
|
|
97
98
|
updatedAt: args.run.createdAt,
|
|
98
99
|
});
|
|
@@ -107,13 +108,13 @@ function singleStream(args, view) {
|
|
|
107
108
|
...(args.surface === undefined ? {} : { surface: args.surface }),
|
|
108
109
|
...(args.caseGroup === undefined ? {} : { caseGroup: args.caseGroup }),
|
|
109
110
|
kind: "browser",
|
|
110
|
-
label:
|
|
111
|
+
label: `${args.participantId ?? "lane-01"} · browser`,
|
|
111
112
|
status,
|
|
112
113
|
transport: "snapshot",
|
|
113
114
|
updatedAt: args.run.createdAt,
|
|
114
115
|
embed: lastScreenshot
|
|
115
|
-
? { kind: "screenshot", url: lastScreenshot, title: `
|
|
116
|
-
: { kind: "placeholder", title: "
|
|
116
|
+
? { kind: "screenshot", url: lastScreenshot, title: `Desktop (${screenshotMode})` }
|
|
117
|
+
: { kind: "placeholder", title: "Desktop" },
|
|
117
118
|
...(desktopGeometry?.viewport === undefined
|
|
118
119
|
? {}
|
|
119
120
|
: {
|
|
@@ -133,7 +134,7 @@ function singleStream(args, view) {
|
|
|
133
134
|
...(args.session ? { actorStatus: args.session.status } : {}),
|
|
134
135
|
...(lastScreenshot ? { screenshotUrl: lastScreenshot } : {}),
|
|
135
136
|
},
|
|
136
|
-
// The seam this
|
|
137
|
+
// The seam this route exists to fill: the provider-neutral actor evidence projection.
|
|
137
138
|
...(args.session ? { actor: args.session.trace } : {}),
|
|
138
139
|
artifacts: [
|
|
139
140
|
{ label: "run bundle", path: "run.json", kind: "bundle" },
|
|
@@ -164,7 +165,7 @@ function singleEvents(args, view) {
|
|
|
164
165
|
at: args.run.createdAt,
|
|
165
166
|
level: "info",
|
|
166
167
|
type: "cua-lab.run.created",
|
|
167
|
-
message: `Created computer-use
|
|
168
|
+
message: `Created a computer-use run for ${args.studyId} (actor ${args.actorId}).`,
|
|
168
169
|
},
|
|
169
170
|
args.subjectProvenance
|
|
170
171
|
? participantEvent(SINGLE, {
|
|
@@ -172,7 +173,7 @@ function singleEvents(args, view) {
|
|
|
172
173
|
at: args.run.createdAt,
|
|
173
174
|
level: "info",
|
|
174
175
|
type: "cua-lab.subject.provenance",
|
|
175
|
-
//
|
|
176
|
+
// Claim "cloned/packed and served" only when it actually happened.
|
|
176
177
|
message: `${subjectProvenanceMessage(args.subjectProvenance, publicAppUrl, args.dryRun, args.session !== undefined)} (subject env names: ${args.subjectProvenance.envNames.length > 0 ? args.subjectProvenance.envNames.join(", ") : "none"}; values never persisted); state: ${describeSubjectState(args.subjectProvenance.state, args.dryRun)}.`,
|
|
177
178
|
})
|
|
178
179
|
: participantEvent(SINGLE, {
|
|
@@ -180,13 +181,13 @@ function singleEvents(args, view) {
|
|
|
180
181
|
at: args.run.createdAt,
|
|
181
182
|
level: "info",
|
|
182
183
|
type: "cua-lab.subject.declared",
|
|
183
|
-
//
|
|
184
|
-
// local-app / in-process subject is an already-running
|
|
185
|
-
// provisioned; it cannot be commit-pinned, so its provenance is
|
|
184
|
+
// Declare what the subject was, including the absence of a pin. A
|
|
185
|
+
// local-app / in-process subject is an already-running local dev server the caller
|
|
186
|
+
// provisioned; it cannot be commit-pinned, so its provenance is unpinned and
|
|
186
187
|
// no E2B desktop was created. A plain app-url entry runs inside the desktop sandbox, or,
|
|
187
188
|
// on the local VM, reaches the host's loopback from the VM's browser.
|
|
188
189
|
message: args.entryKind === "local-app"
|
|
189
|
-
? `Subject app declared at ${publicAppUrl}
|
|
190
|
+
? `Subject app declared at ${publicAppUrl}: a running local dev server driven in this process, with no clone and no E2B desktop. Provenance: provided by the caller and unpinned, because a running dev server has no commit to pin.`
|
|
190
191
|
: runnerSubstrate(args) === "local-desktop"
|
|
191
192
|
? `Subject app declared at ${publicAppUrl} (the host's loopback, opened from a browser on a local VM).`
|
|
192
193
|
: `Subject app declared at ${publicAppUrl} (loopback inside the desktop sandbox).`,
|
|
@@ -220,12 +221,12 @@ function singleEvents(args, view) {
|
|
|
220
221
|
at: args.run.createdAt,
|
|
221
222
|
level: "info",
|
|
222
223
|
type: "cua-lab.contract.ready",
|
|
223
|
-
message: "Dry-run
|
|
224
|
+
message: "Dry-run bundle ready; switch scenario.mode to live for a real desktop session.",
|
|
224
225
|
}),
|
|
225
226
|
];
|
|
226
227
|
const record = (event) => events.push(participantEvent(SINGLE, event));
|
|
227
228
|
// Persisted phase trail (real boot timing, not just a coarse provenance sentence): one
|
|
228
|
-
// RunEvent per
|
|
229
|
+
// RunEvent per completed phase boundary (started events never persist here; they carry no
|
|
229
230
|
// durationMs). ok:false phases warn rather than error, since the failing phase's own thrown
|
|
230
231
|
// error already becomes the terminal cua-lab.session.error event above.
|
|
231
232
|
let phaseEventSeq = 3;
|
|
@@ -251,17 +252,15 @@ function singleEvents(args, view) {
|
|
|
251
252
|
}
|
|
252
253
|
function singleReview(args, view, stream) {
|
|
253
254
|
const { reason } = view;
|
|
254
|
-
// A funnel with a denominator of one is still the funnel
|
|
255
|
+
// A funnel with a denominator of one is still the funnel, and its absence stays recorded: no
|
|
255
256
|
// declared protocol (or a dry run) means no `tasks` field, never an empty one.
|
|
256
257
|
const singleRunTasks = args.inProgress !== true && args.session?.trace.taskFunnel !== undefined
|
|
257
258
|
? aggregateTaskFunnels([args.session.trace.taskFunnel])
|
|
258
259
|
: undefined;
|
|
259
|
-
// What happened to the participant, as the route judged it
|
|
260
|
-
// applies (
|
|
261
|
-
// run the route refused as "not a credible pass"
|
|
262
|
-
//
|
|
263
|
-
// repeated it. Found on a real drawDB run whose participant wrote "Blocked after partial
|
|
264
|
-
// completion".
|
|
260
|
+
// What happened to the participant, as the route judged it: the same rule the fan-out roll-up
|
|
261
|
+
// applies (participantStatus in src/run/judge.ts). Reading the actor's own status instead would write up
|
|
262
|
+
// a run the route refused as "not a credible pass" as verdict pass, 1/1 reached the goal, and
|
|
263
|
+
// every projection of the bundle (Observer tally, `runs`, the status index) would repeat it.
|
|
265
264
|
const participantStatus = args.session === undefined
|
|
266
265
|
? undefined
|
|
267
266
|
: participantStatusFor(args.session.status, args.credibility);
|
|
@@ -286,7 +285,7 @@ function singleReview(args, view, stream) {
|
|
|
286
285
|
? []
|
|
287
286
|
: args.inProgress === true
|
|
288
287
|
? ["Live desktop session is still running."]
|
|
289
|
-
: ["Live desktop session not yet run (dry
|
|
288
|
+
: ["Live desktop session not yet run (dry run only)."],
|
|
290
289
|
}, [stream]);
|
|
291
290
|
return review;
|
|
292
291
|
}
|
|
@@ -314,21 +313,21 @@ export function buildSingleParticipantBundle(args) {
|
|
|
314
313
|
persona: {
|
|
315
314
|
id: args.persona.id,
|
|
316
315
|
name: `Computer-use operator (${args.persona.id})`,
|
|
317
|
-
source: `
|
|
316
|
+
source: `study:${args.studyId}`,
|
|
318
317
|
sourceDigest: args.persona.promptDigest,
|
|
319
318
|
},
|
|
320
319
|
scenario: {
|
|
321
|
-
id: `cua-${args.
|
|
322
|
-
title: args.
|
|
320
|
+
id: `cua-${args.studyId}`,
|
|
321
|
+
title: args.studyTitle ?? `Computer-use run: ${args.studyId}`,
|
|
323
322
|
goal: redactText(args.mission),
|
|
324
|
-
source: `
|
|
323
|
+
source: `study:${args.studyId}`,
|
|
325
324
|
sourceDigest: args.persona.promptDigest,
|
|
326
325
|
},
|
|
327
326
|
lifecycle: [
|
|
328
327
|
{
|
|
329
328
|
at: args.run.createdAt,
|
|
330
329
|
event: "cua-lab.run.created",
|
|
331
|
-
message: `Created computer-use
|
|
330
|
+
message: `Created a computer-use run with one participant in a desktop browser (actor ${args.actorId}).`,
|
|
332
331
|
},
|
|
333
332
|
],
|
|
334
333
|
simulations: [simulation],
|
|
@@ -337,23 +336,23 @@ export function buildSingleParticipantBundle(args) {
|
|
|
337
336
|
redaction: {
|
|
338
337
|
status: "passed",
|
|
339
338
|
notes: traceScreenshotMode === "raw"
|
|
340
|
-
? "Typed text recorded as length only and reasoning
|
|
339
|
+
? "Typed text is recorded as its length only, and reasoning and messages pass through text redaction. Screenshots are unblurred and kept for local use; they are not redacted for publishing. Set policies.redactScreenshots: true to blur screenshots in a bundle you plan to share."
|
|
341
340
|
: traceScreenshotMode === "blurred"
|
|
342
341
|
? "Typed text recorded as length only and reasoning/messages pass through text redaction. Screenshots are blurred at capture (policies.redactScreenshots: true) for a share-as-is bundle."
|
|
343
342
|
: args.screenshots.length > 0
|
|
344
|
-
? `Session ended before a trace was recorded; ${args.screenshots.length
|
|
343
|
+
? `Session ended before a trace was recorded; ${plural(args.screenshots.length, "already-written frame")} ${args.screenshots.length === 1 ? "follows" : "follow"} the capture policy (${screenshotMode}). Typed text is recorded as length only and reasoning/messages pass through text redaction.`
|
|
345
344
|
: "No screenshots captured. Typed text is recorded as length only and reasoning/messages pass through text redaction whenever a session runs.",
|
|
346
345
|
},
|
|
347
346
|
artifacts: bundleArtifacts(),
|
|
348
347
|
review,
|
|
349
|
-
// What the participant reported, when it reported anything
|
|
350
|
-
// bundles carry none
|
|
348
|
+
// What the participant reported, when it reported anything. Dry-run and in-progress
|
|
349
|
+
// bundles carry none: there is no participant yet to quote.
|
|
351
350
|
feedbackCandidates: args.dryRun || args.inProgress === true
|
|
352
351
|
? []
|
|
353
352
|
: participantFeedbackCandidates({
|
|
354
353
|
runId: args.run.runId,
|
|
355
|
-
scenarioId: `cua-${args.
|
|
356
|
-
adapterId: args.
|
|
354
|
+
scenarioId: `cua-${args.studyId}`,
|
|
355
|
+
adapterId: args.studyId,
|
|
357
356
|
goal: redactText(args.mission),
|
|
358
357
|
substrate: runnerSubstrate(args),
|
|
359
358
|
participants: [
|
|
@@ -378,8 +377,8 @@ export function buildSingleParticipantBundle(args) {
|
|
|
378
377
|
...(args.providerResources === undefined || args.providerResources.length === 0
|
|
379
378
|
? {}
|
|
380
379
|
: { providerResources: args.providerResources }),
|
|
381
|
-
// Structured subject provenance
|
|
382
|
-
//
|
|
380
|
+
// Structured subject provenance: code pin + state story. Uniform, and
|
|
381
|
+
// stated on app-url bundles too: the caller minted the URL, its state is the caller's.
|
|
383
382
|
// CuaSubjectProvenanceArg's two variants (clone, local-tree) are already RunSubjectProvenance-
|
|
384
383
|
// shaped, so no reconstruction is needed beyond the app-url fallback.
|
|
385
384
|
subject: args.subjectProvenance ?? { source: "app-url", state: { provenance: "undeclared" } },
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ComputerUsePlan } from "../../
|
|
2
|
-
import type {
|
|
1
|
+
import type { ComputerUsePlan } from "../../study/plan-types.js";
|
|
2
|
+
import type { StudySubjectState } from "../../study/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
5
|
import { type DesktopParticipantRun, type CuaSubjectProjection, type CuaSubjectProvenanceArg, type ParticipantRunOutcome } from "./types.js";
|
|
@@ -18,13 +18,13 @@ export declare function projectParticipantSubjects(args: {
|
|
|
18
18
|
}): CuaSubjectProjection[];
|
|
19
19
|
/**
|
|
20
20
|
* Resolve the bundle's state marker from the declaration and what actually ran.
|
|
21
|
-
* Precedence: external declared → "unpinned" (seed records, if any, stay attached
|
|
21
|
+
* Precedence: external declared → "unpinned" (seed records, if any, stay attached; a
|
|
22
22
|
* migrated external DB is still unpinned overall); else seed declared → "seeded" only when
|
|
23
23
|
* every declared step executed ok on a live run, otherwise "declared-not-run" (dry-run
|
|
24
24
|
* contract bundles and failed live provisioning); no declaration → "undeclared".
|
|
25
25
|
*/
|
|
26
26
|
export declare function resolveSubjectState(args: {
|
|
27
|
-
declared:
|
|
27
|
+
declared: StudySubjectState | undefined;
|
|
28
28
|
dryRun: boolean;
|
|
29
29
|
executed: RunSubjectStateStepRecord[];
|
|
30
30
|
}): RunSubjectProvenance["state"];
|
|
@@ -36,7 +36,7 @@ export function projectParticipantSubjects(args) {
|
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* Resolve the bundle's state marker from the declaration and what actually ran.
|
|
39
|
-
* Precedence: external declared → "unpinned" (seed records, if any, stay attached
|
|
39
|
+
* Precedence: external declared → "unpinned" (seed records, if any, stay attached; a
|
|
40
40
|
* migrated external DB is still unpinned overall); else seed declared → "seeded" only when
|
|
41
41
|
* every declared step executed ok on a live run, otherwise "declared-not-run" (dry-run
|
|
42
42
|
* contract bundles and failed live provisioning); no declaration → "undeclared".
|
|
@@ -48,8 +48,8 @@ export function resolveSubjectState(args) {
|
|
|
48
48
|
}
|
|
49
49
|
const declaredSeed = declared.seed ?? [];
|
|
50
50
|
const external = declared.external ?? [];
|
|
51
|
-
// Dry-run: nothing executes (no sandbox)
|
|
52
|
-
// command digest only, with
|
|
51
|
+
// Dry-run: nothing executes (no sandbox), so record the declared recipe: name, phase, and
|
|
52
|
+
// command digest only, with no execution fields.
|
|
53
53
|
const seed = args.dryRun
|
|
54
54
|
? declaredSeed.map((step) => ({
|
|
55
55
|
name: step.name,
|
|
@@ -74,8 +74,8 @@ export function resolveSubjectState(args) {
|
|
|
74
74
|
...(external.length > 0 ? { externalEnvNames: external } : {}),
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
|
-
/** Build the per-participant subject projection
|
|
78
|
-
*
|
|
77
|
+
/** Build the per-participant subject projection. Local-tree participants all share
|
|
78
|
+
* one host-packed archive, so every participant's projection carries the identical archiveSha256/
|
|
79
79
|
* commit/dirty (no divergence is possible, unlike the clone route's per-participant
|
|
80
80
|
* in-sandbox commit). */
|
|
81
81
|
function participantSubjectProjection(args) {
|
|
@@ -144,7 +144,7 @@ export function aggregateCuaSubject(args) {
|
|
|
144
144
|
const unanimous = !dryRun && commits.length === participantCount && new Set(commits).size === 1;
|
|
145
145
|
const warnings = !dryRun && participantCount > 1 && new Set(commits).size > 1
|
|
146
146
|
? [
|
|
147
|
-
"
|
|
147
|
+
"Participants resolved different subject commits, so the top-level subject.commit is omitted; each participant's provenance in result.lanes has its pinned commit.",
|
|
148
148
|
]
|
|
149
149
|
: [];
|
|
150
150
|
return {
|