humanish 0.106.1 → 0.108.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 +38 -32
- package/CHANGELOG.md +28 -0
- package/CONTEXT.md +51 -41
- package/README.md +152 -174
- 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-client.js +2 -1
- package/dist/actors/codex/app-server-trace.d.ts +0 -1
- package/dist/actors/codex/app-server-trace.js +1 -3
- package/dist/actors/codex/app-server-ui.js +1 -1
- package/dist/actors/codex/app-server.js +2 -1
- package/dist/actors/codex/codex-admission.d.ts +91 -0
- package/dist/actors/codex/codex-admission.js +150 -0
- package/dist/actors/codex/protocol-compat.d.ts +27 -0
- package/dist/actors/codex/protocol-compat.js +357 -0
- package/dist/actors/codex/protocol-contract.d.ts +61 -0
- package/dist/actors/codex/protocol-contract.js +471 -0
- package/dist/actors/codex/restricted-executable.d.ts +28 -4
- package/dist/actors/codex/restricted-executable.js +104 -29
- package/dist/actors/codex/restricted-launch.d.ts +9 -2
- package/dist/actors/codex/restricted-launch.js +43 -4
- package/dist/actors/codex/restricted-notifications.d.ts +101 -0
- package/dist/actors/codex/restricted-notifications.js +277 -0
- package/dist/actors/codex/restricted-participant.d.ts +30 -0
- package/dist/actors/codex/restricted-participant.js +66 -6
- package/dist/actors/codex/restricted-policy.d.ts +11 -3
- package/dist/actors/codex/restricted-policy.js +2 -2
- package/dist/actors/codex/restricted-session.d.ts +16 -3
- package/dist/actors/codex/restricted-session.js +60 -22
- package/dist/actors/codex/restricted-transport.d.ts +29 -0
- package/dist/actors/codex/restricted-transport.js +139 -27
- package/dist/actors/codex/restricted-turn.d.ts +19 -4
- package/dist/actors/codex/restricted-turn.js +43 -30
- package/dist/actors/computer-use/actor.d.ts +17 -17
- package/dist/actors/computer-use/actor.js +6 -6
- package/dist/actors/computer-use/admission-limit.d.ts +1 -1
- package/dist/actors/computer-use/admission-limit.js +1 -1
- package/dist/actors/computer-use/loop/actions.d.ts +3 -3
- package/dist/actors/computer-use/loop/actions.js +10 -10
- package/dist/actors/computer-use/loop/backstop.d.ts +3 -3
- package/dist/actors/computer-use/loop/backstop.js +15 -13
- package/dist/actors/computer-use/loop/ending.d.ts +7 -7
- package/dist/actors/computer-use/loop/ending.js +9 -9
- package/dist/actors/computer-use/loop/observation.d.ts +2 -2
- package/dist/actors/computer-use/loop/observation.js +9 -9
- package/dist/actors/computer-use/loop/provider-call.d.ts +1 -1
- package/dist/actors/computer-use/loop/provider-call.js +1 -1
- package/dist/actors/computer-use/loop/session.js +3 -3
- package/dist/actors/computer-use/loop/spend.d.ts +2 -2
- package/dist/actors/computer-use/loop/spend.js +4 -4
- package/dist/actors/computer-use/loop/trace.js +11 -10
- package/dist/actors/computer-use/loop/types.d.ts +37 -26
- package/dist/actors/computer-use/loop/usage.js +2 -2
- package/dist/actors/computer-use/loop.js +4 -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 +12 -9
- package/dist/actors/computer-use/openai-provider.js +47 -36
- 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/contract.d.ts +86 -49
- package/dist/actors/contract.js +29 -23
- package/dist/actors/local-agent/claude-session.d.ts +1 -1
- package/dist/actors/local-agent/claude-session.js +10 -9
- package/dist/actors/local-agent/cli.d.ts +8 -6
- 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 +6 -6
- package/dist/actors/registry.d.ts +10 -10
- package/dist/actors/registry.js +18 -17
- package/dist/actors/scripted-browser/actor.d.ts +8 -8
- package/dist/actors/scripted-browser/actor.js +16 -16
- package/dist/actors/scripted-browser/browser-command.js +1 -1
- package/dist/actors/scripted-browser/journey.js +15 -4
- package/dist/actors/scripted-browser/steps.js +19 -1
- package/dist/actors/scripted-browser/types.d.ts +12 -2
- package/dist/actors/stop-conditions.d.ts +1 -1
- package/dist/actors/stop-conditions.js +1 -3
- package/dist/analysis/automatic-completion.d.ts +13 -8
- package/dist/analysis/automatic-completion.js +14 -8
- package/dist/analysis/automatic-config.d.ts +1 -1
- package/dist/analysis/automatic-config.js +2 -2
- package/dist/analysis/automatic.d.ts +10 -4
- package/dist/analysis/automatic.js +17 -13
- package/dist/analysis/codex-config.d.ts +6 -2
- package/dist/analysis/codex-config.js +22 -14
- package/dist/analysis/diagnostics.d.ts +23 -0
- package/dist/analysis/diagnostics.js +112 -0
- package/dist/analysis/evidence-sources.js +2 -2
- package/dist/analysis/evidence.js +6 -6
- package/dist/analysis/execute.d.ts +7 -1
- package/dist/analysis/execute.js +39 -12
- package/dist/analysis/job.d.ts +8 -5
- package/dist/analysis/job.js +15 -14
- package/dist/analysis/load.d.ts +1 -1
- package/dist/analysis/load.js +5 -5
- package/dist/analysis/provider.d.ts +9 -1
- package/dist/analysis/restricted-codex.d.ts +2 -0
- package/dist/analysis/restricted-codex.js +10 -1
- package/dist/analysis/service.d.ts +2 -0
- package/dist/analysis/service.js +35 -16
- package/dist/analysis/sharing.d.ts +2 -2
- package/dist/analysis/sharing.js +5 -5
- package/dist/analysis/store-executions.d.ts +5 -5
- package/dist/analysis/store-executions.js +12 -12
- package/dist/analysis/store.d.ts +4 -4
- package/dist/analysis/store.js +13 -13
- package/dist/cli/commands/analysis-signals.d.ts +2 -1
- package/dist/cli/commands/analysis-signals.js +4 -1
- package/dist/cli/commands/analyze.js +23 -18
- package/dist/cli/commands/codex.js +9 -9
- package/dist/cli/commands/comms.js +62 -34
- package/dist/cli/commands/feedback.js +20 -21
- package/dist/cli/commands/lab-format.d.ts +5 -4
- package/dist/cli/commands/lab-format.js +35 -23
- package/dist/cli/commands/lab-route-computer-use.d.ts +0 -2
- package/dist/cli/commands/lab-route-computer-use.js +32 -21
- package/dist/cli/commands/lab-route-preview.d.ts +1 -3
- package/dist/cli/commands/lab-route-preview.js +7 -7
- package/dist/cli/commands/lab-route-run.d.ts +6 -4
- package/dist/cli/commands/lab-route-run.js +6 -2
- package/dist/cli/commands/lab-route-scripted.d.ts +0 -2
- package/dist/cli/commands/lab-route-scripted.js +0 -1
- package/dist/cli/commands/lab-route-shared-world.d.ts +0 -2
- package/dist/cli/commands/lab-route-shared-world.js +3 -4
- package/dist/cli/commands/lab-route-terminal.d.ts +0 -2
- package/dist/cli/commands/lab-route-terminal.js +0 -1
- package/dist/cli/commands/lab-run.js +84 -54
- package/dist/cli/commands/lab-scorer.d.ts +2 -4
- package/dist/cli/commands/lab-scorer.js +1 -1
- package/dist/cli/commands/migrate.d.ts +4 -0
- package/dist/cli/commands/migrate.js +65 -0
- package/dist/cli/commands/observe.js +168 -107
- package/dist/cli/commands/run-command.d.ts +10 -0
- package/dist/cli/commands/run-command.js +85 -0
- package/dist/cli/commands/run-signals.d.ts +30 -0
- package/dist/cli/commands/run-signals.js +146 -0
- package/dist/cli/commands/runs.js +137 -136
- package/dist/cli/commands/setup.d.ts +2 -2
- package/dist/cli/commands/setup.js +26 -21
- package/dist/cli/commands/study.d.ts +3 -0
- package/dist/cli/commands/study.js +182 -0
- package/dist/cli/commands/tui.d.ts +4 -4
- package/dist/cli/commands/tui.js +21 -21
- package/dist/cli/commands/watch.js +64 -77
- package/dist/cli/deprecations.d.ts +18 -0
- package/dist/cli/deprecations.js +48 -0
- package/dist/cli/doctor.d.ts +18 -5
- package/dist/cli/doctor.js +111 -48
- package/dist/cli/first-run-path.d.ts +12 -10
- package/dist/cli/first-run-path.js +30 -28
- package/dist/cli/io.d.ts +46 -10
- package/dist/cli/io.js +109 -30
- package/dist/cli/observer-follow.d.ts +2 -2
- package/dist/cli/observer-follow.js +5 -6
- package/dist/cli/orientation.d.ts +6 -3
- package/dist/cli/orientation.js +43 -39
- 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 +112 -43
- package/dist/cli/telemetry.d.ts +17 -17
- package/dist/cli/telemetry.js +49 -41
- package/dist/cli.js +1 -1
- package/dist/comms/capture-surface.d.ts +14 -13
- package/dist/comms/capture-surface.js +23 -22
- package/dist/comms/catch-host.d.ts +8 -8
- package/dist/comms/catch-host.js +14 -14
- package/dist/comms/connections.js +4 -4
- package/dist/comms/email-catch.d.ts +3 -3
- package/dist/comms/email-catch.js +8 -8
- package/dist/comms/external-evidence.d.ts +27 -0
- package/dist/comms/external-evidence.js +93 -0
- package/dist/comms/extract.js +2 -2
- package/dist/comms/fake-inbox.d.ts +2 -2
- package/dist/comms/fake-inbox.js +2 -2
- package/dist/comms/lease-store.js +7 -7
- package/dist/comms/receiving-render.d.ts +1 -1
- package/dist/comms/receiving-render.js +2 -2
- 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 +36 -37
- package/dist/comms/sandbox-catch.js +34 -35
- package/dist/comms/setup.js +42 -8
- 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 +4 -4
- package/dist/evidence/browser-hygiene.d.ts +1 -1
- package/dist/evidence/browser-hygiene.js +1 -1
- 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 +5 -5
- package/dist/evidence/secret-scrub.d.ts +9 -0
- package/dist/evidence/secret-scrub.js +96 -0
- package/dist/feedback/draft.js +41 -85
- package/dist/feedback/export-bundle.js +5 -5
- package/dist/feedback/export.d.ts +5 -1
- package/dist/feedback/export.js +16 -17
- package/dist/feedback/feedback.d.ts +3 -3
- package/dist/feedback/feedback.js +21 -3
- package/dist/guest/chromium-text.js +2 -2
- package/dist/guest/desktop-native.d.ts +1 -1
- package/dist/guest/runtime.js +1 -1
- package/dist/index.d.ts +14 -15
- package/dist/index.js +10 -11
- package/dist/keys/key-resolution.d.ts +7 -5
- package/dist/keys/key-resolution.js +40 -38
- package/dist/lab/adapter-extension.d.ts +35 -13
- package/dist/lab/adapter-extension.js +50 -134
- package/dist/lab/adapter-scorer-loader.d.ts +32 -12
- package/dist/lab/adapter-scorer-loader.js +56 -32
- package/dist/lab/composition-rules.js +58 -58
- package/dist/lab/config.js +85 -43
- package/dist/lab/deprecated-fields.d.ts +10 -0
- package/dist/lab/deprecated-fields.js +24 -0
- package/dist/lab/device-presets.d.ts +10 -10
- package/dist/lab/device-presets.js +11 -11
- package/dist/lab/discover.d.ts +13 -9
- package/dist/lab/discover.js +118 -60
- package/dist/lab/doctor.d.ts +53 -11
- package/dist/lab/doctor.js +193 -47
- package/dist/lab/init-plan.js +1 -3
- package/dist/lab/init-templates.js +147 -147
- package/dist/lab/init.d.ts +1 -1
- package/dist/lab/init.js +41 -9
- package/dist/lab/keys.d.ts +2 -0
- package/dist/lab/keys.js +43 -9
- package/dist/lab/lab-deps.d.ts +80 -0
- package/dist/lab/lab-deps.js +4 -0
- package/dist/lab/parse/actors.js +17 -16
- package/dist/lab/parse/comms.js +8 -7
- package/dist/lab/parse/execution.js +15 -14
- package/dist/lab/parse/study-v3.d.ts +23 -0
- package/dist/lab/parse/study-v3.js +259 -0
- package/dist/lab/parse/subject-state.d.ts +7 -7
- package/dist/lab/parse/subject-state.js +18 -17
- package/dist/lab/parse/subject.js +30 -29
- package/dist/lab/parse/values.d.ts +1 -2
- package/dist/lab/parse/values.js +3 -6
- package/dist/lab/persona-resolve.d.ts +7 -7
- package/dist/lab/persona-resolve.js +8 -8
- package/dist/lab/persona.js +1 -3
- package/dist/lab/plan-base.d.ts +0 -2
- package/dist/lab/plan-base.js +6 -4
- package/dist/lab/plan-participants.d.ts +7 -7
- package/dist/lab/plan-participants.js +2 -2
- package/dist/lab/plan-types.d.ts +26 -8
- package/dist/lab/plan.d.ts +4 -18
- package/dist/lab/plan.js +24 -79
- package/dist/lab/preflight-probes.js +11 -11
- package/dist/lab/preflight-result.d.ts +2 -1
- package/dist/lab/preflight-result.js +5 -6
- package/dist/lab/preflight.d.ts +7 -8
- package/dist/lab/preflight.js +6 -6
- package/dist/lab/requirements.d.ts +20 -0
- package/dist/lab/requirements.js +54 -0
- package/dist/lab/route-inputs.d.ts +23 -12
- package/dist/lab/route-inputs.js +48 -51
- package/dist/lab/routing.d.ts +42 -41
- package/dist/lab/routing.js +66 -68
- package/dist/lab/run-lab-events.d.ts +3 -11
- package/dist/lab/run-lab-events.js +2 -16
- package/dist/lab/run-lab-homes.d.ts +76 -0
- package/dist/lab/run-lab-homes.js +7 -0
- package/dist/lab/run-lab-options.d.ts +12 -66
- package/dist/lab/run-lab-options.js +58 -285
- package/dist/lab/summary.d.ts +15 -9
- package/dist/lab/summary.js +24 -17
- package/dist/lab/tasks.d.ts +15 -15
- package/dist/lab/tasks.js +14 -14
- package/dist/lab/types.d.ts +201 -195
- package/dist/lab/types.js +2 -0
- package/dist/lab/validation.d.ts +21 -21
- package/dist/lab/validation.js +61 -59
- package/dist/lab/warnings.d.ts +10 -0
- package/dist/lab/warnings.js +70 -41
- package/dist/library-aliases.d.ts +56 -0
- package/dist/library-aliases.js +22 -0
- package/dist/observer/artifact.d.ts +2 -2
- package/dist/observer/artifact.js +9 -9
- package/dist/observer/data.d.ts +6 -6
- package/dist/observer/data.js +7 -6
- 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 +1 -1
- package/dist/observer/library.js +4 -2
- package/dist/observer/listen.js +5 -4
- package/dist/observer/render.d.ts +1 -1
- package/dist/observer/render.js +12 -7
- package/dist/observer/run-routes.d.ts +4 -4
- package/dist/observer/run-routes.js +6 -6
- package/dist/observer/serve.d.ts +17 -0
- package/dist/observer/serve.js +41 -6
- 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 +24 -17
- package/dist/routes/computer-use/bundle.d.ts +4 -11
- package/dist/routes/computer-use/bundle.js +12 -18
- package/dist/routes/computer-use/diagnostics.d.ts +1 -1
- package/dist/routes/computer-use/diagnostics.js +1 -1
- package/dist/routes/computer-use/e2b-desktop/comms.d.ts +11 -11
- package/dist/routes/computer-use/e2b-desktop/comms.js +24 -27
- package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +2 -2
- package/dist/routes/computer-use/e2b-desktop/desktop.js +8 -11
- package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +16 -15
- package/dist/routes/computer-use/e2b-desktop/fidelity.js +20 -19
- package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +3 -3
- package/dist/routes/computer-use/e2b-desktop/prepare.js +40 -43
- package/dist/routes/computer-use/e2b-desktop/start.d.ts +1 -1
- package/dist/routes/computer-use/e2b-desktop/start.js +32 -30
- package/dist/routes/computer-use/e2b-desktop/state.d.ts +5 -4
- package/dist/routes/computer-use/e2b-desktop/state.js +5 -3
- package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +1 -1
- package/dist/routes/computer-use/e2b-desktop/teardown.js +33 -20
- package/dist/routes/computer-use/external-comms.d.ts +4 -4
- package/dist/routes/computer-use/external-comms.js +19 -43
- package/dist/routes/computer-use/fanout-bundle.d.ts +3 -3
- package/dist/routes/computer-use/fanout-bundle.js +38 -42
- package/dist/routes/computer-use/{fanout-lanes.js → fanout-records.js} +33 -28
- package/dist/routes/computer-use/in-process-desktop.d.ts +3 -10
- package/dist/routes/computer-use/in-process-desktop.js +3 -9
- package/dist/routes/computer-use/live-flush.d.ts +7 -5
- package/dist/routes/computer-use/live-flush.js +20 -28
- package/dist/routes/computer-use/{run-lanes.d.ts → live-phase.d.ts} +4 -2
- package/dist/routes/computer-use/{run-lanes.js → live-phase.js} +17 -16
- package/dist/routes/computer-use/local-tree-pack.d.ts +3 -3
- package/dist/routes/computer-use/local-tree-pack.js +4 -5
- package/dist/routes/computer-use/local-vm.d.ts +11 -8
- package/dist/routes/computer-use/local-vm.js +40 -67
- package/dist/routes/computer-use/participant-desktop.d.ts +8 -23
- package/dist/routes/computer-use/participant-desktop.js +5 -25
- package/dist/routes/computer-use/{lanes.d.ts → participant-execution.d.ts} +11 -11
- package/dist/routes/computer-use/{lanes.js → participant-execution.js} +39 -26
- package/dist/routes/computer-use/participant-facts.d.ts +7 -1
- package/dist/routes/computer-use/participant-facts.js +12 -1
- package/dist/routes/computer-use/participant-model.d.ts +25 -11
- package/dist/routes/computer-use/participant-model.js +76 -34
- package/dist/routes/computer-use/participant-prompt.d.ts +13 -13
- package/dist/routes/computer-use/participant-prompt.js +8 -8
- package/dist/routes/computer-use/participant-runs.d.ts +11 -11
- package/dist/routes/computer-use/participant-runs.js +18 -18
- package/dist/routes/computer-use/plan.d.ts +21 -29
- package/dist/routes/computer-use/plan.js +70 -78
- package/dist/routes/computer-use/preflight.d.ts +3 -5
- package/dist/routes/computer-use/preflight.js +40 -36
- package/dist/routes/computer-use/rerun-selection.js +11 -7
- package/dist/routes/computer-use/result.d.ts +1 -1
- package/dist/routes/computer-use/result.js +48 -38
- package/dist/routes/computer-use/route.d.ts +5 -5
- package/dist/routes/computer-use/route.js +36 -33
- package/dist/routes/computer-use/self-report.d.ts +8 -8
- package/dist/routes/computer-use/self-report.js +33 -33
- package/dist/routes/computer-use/setup.d.ts +9 -15
- package/dist/routes/computer-use/setup.js +106 -83
- package/dist/routes/computer-use/single-bundle.d.ts +13 -16
- package/dist/routes/computer-use/single-bundle.js +46 -53
- package/dist/routes/computer-use/subject-projection.d.ts +6 -8
- package/dist/routes/computer-use/subject-projection.js +24 -23
- package/dist/routes/computer-use/types.d.ts +195 -238
- package/dist/routes/computer-use/types.js +21 -13
- package/dist/routes/preview.d.ts +8 -2
- package/dist/routes/preview.js +8 -5
- package/dist/routes/scripted/bundle.d.ts +5 -8
- package/dist/routes/scripted/bundle.js +23 -27
- package/dist/routes/scripted/plan.d.ts +6 -8
- package/dist/routes/scripted/plan.js +15 -13
- package/dist/routes/scripted/result.d.ts +4 -1
- package/dist/routes/scripted/result.js +15 -11
- package/dist/routes/scripted/route.js +15 -17
- package/dist/routes/scripted/scenario.d.ts +1 -1
- package/dist/routes/scripted/scenario.js +3 -3
- package/dist/routes/scripted/setup.d.ts +3 -2
- package/dist/routes/scripted/setup.js +27 -26
- package/dist/routes/scripted/subject.d.ts +8 -3
- package/dist/routes/scripted/subject.js +10 -6
- package/dist/routes/scripted/surface-records.js +4 -4
- package/dist/routes/scripted/surface-sessions.d.ts +2 -2
- package/dist/routes/scripted/surface-sessions.js +4 -4
- package/dist/routes/scripted/types.d.ts +21 -40
- package/dist/routes/scripted/types.js +2 -3
- package/dist/routes/shared-world/{seat-records.js → bundle-records.js} +17 -16
- package/dist/routes/shared-world/bundle.d.ts +7 -7
- package/dist/routes/shared-world/bundle.js +60 -62
- package/dist/routes/shared-world/checkpoints.d.ts +5 -5
- package/dist/routes/shared-world/checkpoints.js +5 -5
- package/dist/routes/shared-world/comms.d.ts +8 -7
- package/dist/routes/shared-world/comms.js +38 -51
- package/dist/routes/shared-world/external-public.d.ts +6 -5
- package/dist/routes/shared-world/external-public.js +28 -25
- package/dist/routes/shared-world/handoff.d.ts +10 -9
- package/dist/routes/shared-world/handoff.js +89 -81
- package/dist/routes/shared-world/lobby-code.d.ts +7 -7
- package/dist/routes/shared-world/lobby-code.js +22 -22
- package/dist/routes/shared-world/{seats.d.ts → participant-specs.d.ts} +15 -12
- package/dist/routes/shared-world/{seats.js → participant-specs.js} +65 -63
- package/dist/routes/shared-world/plan.d.ts +2 -6
- package/dist/routes/shared-world/plan.js +8 -9
- package/dist/routes/shared-world/provenance.d.ts +4 -4
- package/dist/routes/shared-world/provenance.js +4 -4
- package/dist/routes/shared-world/provisioned.d.ts +3 -2
- package/dist/routes/shared-world/provisioned.js +55 -48
- package/dist/routes/shared-world/result.js +47 -36
- package/dist/routes/shared-world/route.js +54 -57
- package/dist/routes/shared-world/setup.d.ts +6 -5
- package/dist/routes/shared-world/setup.js +16 -18
- package/dist/routes/shared-world/types.d.ts +70 -141
- package/dist/routes/shared-world/types.js +5 -5
- package/dist/routes/terminal/adapter.d.ts +10 -10
- package/dist/routes/terminal/adapter.js +32 -129
- package/dist/routes/terminal/bundle.d.ts +10 -15
- package/dist/routes/terminal/bundle.js +43 -52
- package/dist/routes/terminal/credentials.d.ts +4 -4
- package/dist/routes/terminal/credentials.js +20 -20
- package/dist/routes/terminal/dry-run.d.ts +1 -1
- package/dist/routes/terminal/dry-run.js +13 -15
- package/dist/routes/terminal/encoding.d.ts +1 -1
- package/dist/routes/terminal/encoding.js +4 -4
- package/dist/routes/terminal/ledger.d.ts +8 -8
- package/dist/routes/terminal/ledger.js +22 -22
- package/dist/routes/terminal/live-finish.d.ts +1 -2
- package/dist/routes/terminal/live-finish.js +24 -23
- package/dist/routes/terminal/live-sandbox.d.ts +3 -2
- package/dist/routes/terminal/live-sandbox.js +31 -32
- package/dist/routes/terminal/participant-text.d.ts +23 -0
- package/dist/routes/terminal/participant-text.js +165 -0
- package/dist/routes/terminal/persona.js +1 -1
- package/dist/routes/terminal/plan.d.ts +2 -6
- package/dist/routes/terminal/plan.js +23 -19
- package/dist/routes/terminal/recorder.d.ts +6 -1
- package/dist/routes/terminal/recorder.js +12 -4
- package/dist/routes/terminal/result.js +12 -12
- package/dist/routes/terminal/route.js +30 -31
- package/dist/routes/terminal/runtime.d.ts +3 -2
- package/dist/routes/terminal/runtime.js +3 -3
- package/dist/routes/terminal/sandbox.d.ts +4 -4
- package/dist/routes/terminal/sandbox.js +10 -10
- package/dist/routes/terminal/session.js +22 -19
- package/dist/routes/terminal/token-usage.d.ts +1 -1
- package/dist/routes/terminal/token-usage.js +10 -11
- package/dist/routes/terminal/trace.d.ts +7 -10
- package/dist/routes/terminal/trace.js +11 -66
- package/dist/routes/terminal/types.d.ts +104 -114
- package/dist/routes/terminal/types.js +12 -7
- package/dist/run/active-runs.d.ts +13 -0
- package/dist/run/active-runs.js +12 -0
- package/dist/run/bundle-shape.d.ts +2 -1
- package/dist/run/bundle-shape.js +7 -7
- package/dist/run/bundle.d.ts +99 -92
- package/dist/run/bundle.js +10 -8
- package/dist/run/cost-summary.js +6 -5
- package/dist/run/costs.d.ts +6 -6
- package/dist/run/costs.js +17 -11
- package/dist/run/detail.d.ts +9 -9
- package/dist/run/detail.js +10 -10
- package/dist/run/dry-run-inputs.js +1 -1
- package/dist/run/dry-run.js +23 -30
- package/dist/run/{study-files.d.ts → evidence-files.d.ts} +4 -4
- package/dist/run/{study-files.js → evidence-files.js} +5 -5
- package/dist/run/feedback-shape.js +1 -1
- package/dist/run/judge.d.ts +34 -16
- package/dist/run/judge.js +41 -14
- package/dist/run/locate.d.ts +2 -0
- package/dist/run/locate.js +3 -1
- package/dist/run/outcomes.d.ts +3 -3
- package/dist/run/outcomes.js +3 -3
- package/dist/run/participant-records.d.ts +2 -2
- package/dist/run/participant-records.js +2 -2
- package/dist/run/paths.d.ts +1 -1
- package/dist/run/paths.js +2 -2
- package/dist/run/pricing.d.ts +30 -15
- package/dist/run/pricing.js +49 -30
- package/dist/run/projection.d.ts +27 -27
- package/dist/run/projection.js +23 -23
- package/dist/run/reclaim.d.ts +6 -0
- package/dist/run/reclaim.js +15 -5
- package/dist/run/results.d.ts +5 -5
- package/dist/run/run-index.d.ts +9 -7
- package/dist/run/run-index.js +24 -25
- 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 +7 -4
- package/dist/run/run.js +10 -6
- package/dist/run/sandbox-receipts.d.ts +5 -5
- package/dist/run/sandbox-receipts.js +6 -6
- package/dist/run/shared-world-evidence.d.ts +67 -66
- package/dist/run/shared-world-evidence.js +4 -4
- package/dist/run/shared-world-shape.d.ts +3 -3
- package/dist/run/shared-world-shape.js +16 -16
- package/dist/run/stats.d.ts +17 -11
- package/dist/run/stats.js +124 -66
- package/dist/run/status.d.ts +21 -32
- package/dist/run/status.js +34 -33
- package/dist/run/stored-runs.js +2 -1
- package/dist/run/stream-shape.js +1 -1
- package/dist/run/streams.d.ts +29 -22
- package/dist/run/study-provenance.d.ts +47 -0
- package/dist/run/study-provenance.js +63 -0
- package/dist/run/study-result.d.ts +16 -0
- package/dist/run/study-result.js +9 -0
- package/dist/run/terminal-contract.d.ts +5 -5
- package/dist/run/terminal-contract.js +4 -4
- package/dist/run/text.d.ts +2 -0
- package/dist/run/text.js +4 -0
- package/dist/run/transient-comms-secrets.d.ts +5 -0
- package/dist/run/transient-comms-secrets.js +12 -0
- package/dist/run-lab.d.ts +40 -38
- package/dist/run-lab.js +42 -40
- package/dist/study/convert.d.ts +33 -0
- package/dist/study/convert.js +432 -0
- 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 +43 -0
- 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/subject/clone.d.ts +1 -1
- package/dist/subject/desktop-cli.d.ts +2 -2
- package/dist/subject/desktop-cli.js +3 -3
- package/dist/subject/local-tree-archive.d.ts +1 -1
- package/dist/subject/local-tree-archive.js +5 -5
- package/dist/subject/local-tree.d.ts +3 -3
- package/dist/subject/local-tree.js +1 -1
- package/dist/subject/node-bootstrap.d.ts +1 -1
- package/dist/subject/node-bootstrap.js +4 -4
- package/dist/subject/runtime.js +10 -11
- package/dist/subject/serve.d.ts +1 -1
- package/dist/subject/serve.js +4 -4
- package/dist/subject/state.d.ts +1 -1
- package/dist/subject/steps.d.ts +8 -8
- package/dist/subject/steps.js +7 -7
- package/dist/substrates/command-failure.d.ts +3 -3
- package/dist/substrates/command-failure.js +3 -3
- package/dist/substrates/detached.d.ts +6 -6
- package/dist/substrates/detached.js +7 -7
- package/dist/substrates/e2b/cdp-probe.d.ts +11 -11
- package/dist/substrates/e2b/cdp-probe.js +15 -18
- package/dist/substrates/e2b/desktop-browser.d.ts +5 -5
- package/dist/substrates/e2b/desktop-browser.js +12 -12
- package/dist/substrates/e2b/desktop-cdp.d.ts +15 -15
- package/dist/substrates/e2b/desktop-cdp.js +11 -11
- package/dist/substrates/e2b/desktop-executor.d.ts +1 -1
- package/dist/substrates/e2b/desktop-executor.js +1 -1
- package/dist/substrates/e2b/desktop-geometry.d.ts +6 -6
- package/dist/substrates/e2b/desktop-geometry.js +9 -9
- package/dist/substrates/e2b/desktop-media.d.ts +1 -1
- package/dist/substrates/e2b/desktop-media.js +3 -3
- 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/sandbox.d.ts +1 -1
- package/dist/substrates/e2b/sandbox.js +2 -2
- package/dist/substrates/e2b/sdk.d.ts +11 -11
- package/dist/substrates/e2b/sdk.js +8 -8
- package/dist/substrates/local/runtime-host.d.ts +2 -0
- package/dist/substrates/local/runtime-host.js +6 -0
- package/dist/tui/actions.d.ts +8 -6
- package/dist/tui/actions.js +31 -22
- package/dist/tui/contract.d.ts +16 -16
- package/dist/tui/contract.js +10 -10
- package/dist/tui/launch.d.ts +4 -4
- package/dist/tui/launch.js +18 -19
- package/dist/tui/project.js +5 -5
- package/dist/tui-app.js +83 -83
- package/dist/verify/actor.d.ts +14 -14
- package/dist/verify/actor.js +45 -45
- package/dist/verify/artifacts.d.ts +3 -3
- package/dist/verify/artifacts.js +6 -6
- package/dist/verify/context-growth.d.ts +9 -0
- package/dist/verify/context-growth.js +62 -0
- package/dist/verify/costs.d.ts +7 -7
- package/dist/verify/costs.js +9 -9
- package/dist/verify/liveness.d.ts +1 -1
- package/dist/verify/liveness.js +4 -1
- package/dist/verify/rerun.d.ts +1 -1
- package/dist/verify/rerun.js +1 -1
- package/dist/verify/shared-world-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 +18 -18
- package/dist/verify/subject.d.ts +4 -4
- package/dist/verify/subject.js +18 -18
- package/dist/verify/verify.js +98 -49
- package/docs/README.md +26 -33
- package/docs/architecture/actor-contract.md +105 -98
- package/docs/architecture/desktop-sessions.md +14 -14
- package/docs/architecture/external-public-shared-world.md +66 -59
- package/docs/architecture/github-feedback-loop.md +1 -4
- package/docs/architecture/guest-desktop.md +2 -2
- package/docs/architecture/observer.md +37 -37
- package/docs/architecture/restricted-codex-analysis.md +70 -30
- package/docs/architecture/serve.md +34 -37
- package/docs/architecture/state-driven-executor.md +55 -59
- package/docs/architecture/task-protocol-support.md +7 -9
- package/docs/architecture/{terminal-product-lane.md → terminal-product-route.md} +83 -115
- package/docs/contracts/README.md +24 -0
- package/docs/contracts/adapter-admission.md +3 -3
- package/docs/contracts/adapter-fixtures.md +2 -5
- 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 +54 -51
- package/docs/contracts/schemas.md +505 -390
- package/docs/contracts/study-analysis.md +26 -2
- package/docs/contracts/study-costs.md +11 -7
- 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/decisions/0004-participant-desktops-stay-in-the-route.md +2 -1
- 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 +8 -7
- 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/package.json +16 -17
- package/skills/humanish/SKILL.md +63 -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 -45
- package/dist/actors/codex/qualified-versions.js +0 -87
- package/dist/cli/commands/lab.d.ts +0 -3
- package/dist/cli/commands/lab.js +0 -193
- package/dist/deprecated.d.ts +0 -90
- package/dist/deprecated.js +0 -106
- package/dist/lab/bag-overrides.d.ts +0 -18
- package/dist/lab/bag-overrides.js +0 -121
- package/dist/observer/static.d.ts +0 -39
- package/dist/observer/static.js +0 -369
- package/dist/routes/computer-use/legacy-lane-spec.d.ts +0 -62
- package/dist/routes/computer-use/legacy-lane-spec.js +0 -39
- 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 -294
- 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/routes/computer-use/{fanout-lanes.d.ts → fanout-records.d.ts} +0 -0
- /package/dist/routes/shared-world/{seat-records.d.ts → bundle-records.d.ts} +0 -0
package/dist/run/streams.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CodexAppServerTrace } from "../actors/codex/app-server-trace.js";
|
|
2
|
-
import type { ActorTrace, ActorTraceItem } from "../actors/contract.js";
|
|
2
|
+
import type { ActorStatus, ActorTrace, ActorTraceItem } from "../actors/contract.js";
|
|
3
3
|
import type { RunDesktopRecording } from "../evidence/desktop-recording-types.js";
|
|
4
4
|
export type RunStreamKind = "ui" | "browser" | "terminal" | "tui" | "codex-ui" | "artifact" | "summary";
|
|
5
5
|
export type RunSimulationStatus = "queued" | "preparing" | "running" | "passed" | "abandoned" | "incomplete" | "complete" | "blocked" | "timed_out" | "failed" | "contract_proof_only";
|
|
@@ -29,10 +29,10 @@ interface RunStreamCompletion {
|
|
|
29
29
|
meaningfulUse?: RunMeaningfulUseScore;
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
|
-
* The
|
|
32
|
+
* The closed set of core meaningful-use scoring components. Closed by design: these are the generic
|
|
33
33
|
* dimensions core itself meters (setup/filesystem/nested/actor/product/feedback). A
|
|
34
|
-
* product-specific scorecard does
|
|
35
|
-
* ships as a thin in-repo extension that emits a namespaced `RunAdapterScore` via the
|
|
34
|
+
* product-specific scorecard does not extend this enum, so adopters' nouns stay out of core. It
|
|
35
|
+
* ships as a thin in-repo extension that emits a namespaced `RunAdapterScore` via the route's
|
|
36
36
|
* `score` hook, leaving its own component breakdown in that score's `data`. Exported so a thin
|
|
37
37
|
* adapter can type against core's score shape without forking.
|
|
38
38
|
*/
|
|
@@ -64,14 +64,14 @@ export interface RunDesktopGeometry {
|
|
|
64
64
|
source: "xdpyinfo";
|
|
65
65
|
};
|
|
66
66
|
/**
|
|
67
|
-
* The device preset as
|
|
67
|
+
* The device preset as declared by the lab, present only when it differs from `requested`
|
|
68
68
|
* because the rendered width was floored to MIN_DESKTOP_RENDER_WIDTH.
|
|
69
69
|
*
|
|
70
70
|
* Without this, a floored run is indistinguishable from a faithful one: `verified` compares
|
|
71
71
|
* the floored number with itself and reports a match, so a reader of the bundle sees
|
|
72
72
|
* requested 500 / verified 500 and reasonably concludes a 500-wide preset was asked for. A
|
|
73
|
-
* `mobile` (414) and a `small-mobile` (360)
|
|
74
|
-
* When this field is set, the preset width did
|
|
73
|
+
* `mobile` (414) and a `small-mobile` (360) participant both render at 500 and look identical
|
|
74
|
+
* here. When this field is set, the preset width did not render.
|
|
75
75
|
*/
|
|
76
76
|
declared?: {
|
|
77
77
|
width: number;
|
|
@@ -96,7 +96,7 @@ export interface RunDesktopGeometry {
|
|
|
96
96
|
source: "cdp";
|
|
97
97
|
};
|
|
98
98
|
/**
|
|
99
|
-
* Mobile fidelity beyond viewport size
|
|
99
|
+
* Mobile fidelity beyond viewport size, present only when the lab asked for it. `requested`
|
|
100
100
|
* is what was applied through CDP; `resolved` is what the page reported about itself afterwards
|
|
101
101
|
* and is the proof, never copied from the request. A run without this block is a
|
|
102
102
|
* responsive-viewport study, whatever its preset is named.
|
|
@@ -121,10 +121,10 @@ export interface RunDesktopGeometry {
|
|
|
121
121
|
source: "cdp";
|
|
122
122
|
};
|
|
123
123
|
/**
|
|
124
|
-
* Page targets the participant drove
|
|
125
|
-
* whose own read-back reported the requested viewport width
|
|
126
|
-
* participant never left the launch tab; a later tab that did
|
|
127
|
-
* warning instead.
|
|
124
|
+
* Page targets the participant drove after the launch page (a link that opened in a new tab)
|
|
125
|
+
* whose own read-back reported the requested viewport width. Absent when the
|
|
126
|
+
* participant never left the launch tab; a later tab that did not report the width is a
|
|
127
|
+
* participant warning instead.
|
|
128
128
|
*/
|
|
129
129
|
laterTargets?: {
|
|
130
130
|
targetId: string;
|
|
@@ -154,20 +154,27 @@ export interface RunParticipantAssignment {
|
|
|
154
154
|
export interface RunStream {
|
|
155
155
|
id: string;
|
|
156
156
|
simId: string;
|
|
157
|
-
/** Adapter-owned
|
|
157
|
+
/** Adapter-owned participant id for fan-out / target-swarm runs. Safe categorical metadata only. */
|
|
158
158
|
laneId?: string;
|
|
159
|
-
/** Adapter-owned actor class for grouping
|
|
159
|
+
/** Adapter-owned actor class for grouping participants, e.g. viewer/reviewer/admin. */
|
|
160
160
|
actorType?: string;
|
|
161
|
-
/** Adapter-owned product surface label for grouping
|
|
161
|
+
/** Adapter-owned product surface label for grouping participants without parsing URLs. */
|
|
162
162
|
surface?: string;
|
|
163
163
|
/** Adapter-owned scenario/case grouping label. */
|
|
164
164
|
caseGroup?: string;
|
|
165
|
-
/** Authored/default mission and
|
|
165
|
+
/** Authored/default mission and participant focus, redacted before persistence. Missing on older
|
|
166
166
|
* bundles and uninstrumented routes; never reconstructed from study context or narration. */
|
|
167
167
|
assignment?: RunParticipantAssignment;
|
|
168
168
|
kind: RunStreamKind;
|
|
169
169
|
label: string;
|
|
170
170
|
status: RunSimulationStatus;
|
|
171
|
+
/**
|
|
172
|
+
* The judge's status for this participant (`judgedStatus` in src/run/judge.ts). It differs from
|
|
173
|
+
* the trace status when a goal_satisfied session reported a blocker or never engaged. Computer-use
|
|
174
|
+
* fan-out writes it for a finished live participant; rerun selection reads it. Absent elsewhere,
|
|
175
|
+
* and in bundles written before it existed.
|
|
176
|
+
*/
|
|
177
|
+
judgedStatus?: ActorStatus;
|
|
171
178
|
transport: "snapshot" | "polling" | "sse" | "pty" | "app-server";
|
|
172
179
|
updatedAt: string;
|
|
173
180
|
url?: string;
|
|
@@ -176,7 +183,7 @@ export interface RunStream {
|
|
|
176
183
|
url?: string;
|
|
177
184
|
title?: string;
|
|
178
185
|
};
|
|
179
|
-
/** Set by the attached watch server when the
|
|
186
|
+
/** Set by the attached watch server when the participant's sandbox is gone: the injected live URL
|
|
180
187
|
* would render a provider error page, so viewers fall back to recorded evidence. Runtime-only
|
|
181
188
|
* and never persisted into bundles; declared here because the served observer-data carries it
|
|
182
189
|
* and the client is typed against this contract. */
|
|
@@ -192,7 +199,7 @@ export interface RunStream {
|
|
|
192
199
|
deviceScaleFactor?: number;
|
|
193
200
|
isMobile?: boolean;
|
|
194
201
|
};
|
|
195
|
-
/** Truthful screen/window/viewport evidence for hosted desktop browser
|
|
202
|
+
/** Truthful screen/window/viewport evidence for hosted desktop browser participants. */
|
|
196
203
|
desktopGeometry?: RunDesktopGeometry;
|
|
197
204
|
terminal?: {
|
|
198
205
|
title: string;
|
|
@@ -227,10 +234,10 @@ export interface RunStream {
|
|
|
227
234
|
};
|
|
228
235
|
actor?: ActorTrace;
|
|
229
236
|
/**
|
|
230
|
-
* Mid-run partial actor evidence
|
|
231
|
-
* flushed while a live
|
|
232
|
-
* grow.
|
|
233
|
-
* completionReason, or completedAt, and this shape cannot claim them. Present
|
|
237
|
+
* Mid-run partial actor evidence: the redacted trace items recorded so far,
|
|
238
|
+
* flushed while a live participant is still running so the attached Observer's timeline can
|
|
239
|
+
* grow. It is deliberately not an ActorTrace: a running participant has no final status,
|
|
240
|
+
* completionReason, or completedAt, and this shape cannot claim them. Present only on
|
|
234
241
|
* `inProgress` bundles; the final write replaces it with the real `actor` and never
|
|
235
242
|
* carries it.
|
|
236
243
|
*/
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** Which study a run came from, when it came from one. */
|
|
2
|
+
export interface RunStudyProvenance {
|
|
3
|
+
/** The study id its file declares (`config.id`). */
|
|
4
|
+
id: string;
|
|
5
|
+
/** Project-relative path of the study file, when the run came from a file on disk. */
|
|
6
|
+
path?: string;
|
|
7
|
+
/**
|
|
8
|
+
* `committed` = humanish/studies or humanish/labs, `ignored` = a local overlay, `explicit` = a
|
|
9
|
+
* path the operator passed.
|
|
10
|
+
*/
|
|
11
|
+
origin?: "committed" | "ignored" | "explicit";
|
|
12
|
+
}
|
|
13
|
+
/** Whether a saved record's `study` or `lab` field is absent or shaped like a provenance. */
|
|
14
|
+
export declare function isProvenanceField(value: unknown): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* A saved record's study: a valid `study`, else a valid `lab`, else the id its persona or scenario
|
|
17
|
+
* source names by convention.
|
|
18
|
+
*/
|
|
19
|
+
export declare function studyProvenanceOf(record: {
|
|
20
|
+
study?: unknown;
|
|
21
|
+
lab?: unknown;
|
|
22
|
+
persona?: {
|
|
23
|
+
source?: unknown;
|
|
24
|
+
};
|
|
25
|
+
scenario?: {
|
|
26
|
+
source?: unknown;
|
|
27
|
+
};
|
|
28
|
+
}): RunStudyProvenance | undefined;
|
|
29
|
+
/** `study` and `lab` with the same value, as run.json and status.json write them until 0.109. */
|
|
30
|
+
export declare function studyFields(study: RunStudyProvenance | undefined): {
|
|
31
|
+
study?: RunStudyProvenance;
|
|
32
|
+
lab?: RunStudyProvenance;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* The study id a run names by the `study:<id>` or `lab:<id>` convention on its persona or scenario
|
|
36
|
+
* source, the only attribution a run written before `lab` and `study` has. A prefix with an empty
|
|
37
|
+
* remainder is not an id. Ids may contain colons (`lab:oss:meta`), so only the prefix is stripped.
|
|
38
|
+
* Readers keep both prefixes for good: saved runs say `lab:`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function inferLegacyStudyId(bundle: {
|
|
41
|
+
persona?: {
|
|
42
|
+
source?: unknown;
|
|
43
|
+
};
|
|
44
|
+
scenario?: {
|
|
45
|
+
source?: unknown;
|
|
46
|
+
};
|
|
47
|
+
}): string | undefined;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Which study a saved run came from. run.json and status.json write it as `study`, and as `lab`
|
|
2
|
+
// with the same value until 0.109 drops `lab`. Every reader goes through
|
|
3
|
+
// studyProvenanceOf, which also reads a run older than both fields by the `study:<id>` or
|
|
4
|
+
// `lab:<id>` convention on its persona and scenario sources.
|
|
5
|
+
const ORIGINS = ["committed", "ignored", "explicit"];
|
|
6
|
+
/** `value` as a provenance when it has an id, keeping only its fields that are valid. */
|
|
7
|
+
function provenance(value) {
|
|
8
|
+
if (value === null || typeof value !== "object")
|
|
9
|
+
return undefined;
|
|
10
|
+
const record = value;
|
|
11
|
+
if (typeof record.id !== "string" || record.id === "")
|
|
12
|
+
return undefined;
|
|
13
|
+
const origin = record.origin;
|
|
14
|
+
return {
|
|
15
|
+
id: record.id,
|
|
16
|
+
...(typeof record.path === "string" ? { path: record.path } : {}),
|
|
17
|
+
...(typeof origin === "string" && ORIGINS.includes(origin)
|
|
18
|
+
? { origin: origin }
|
|
19
|
+
: {}),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/** Whether a saved record's `study` or `lab` field is absent or shaped like a provenance. */
|
|
23
|
+
export function isProvenanceField(value) {
|
|
24
|
+
if (value === undefined)
|
|
25
|
+
return true;
|
|
26
|
+
if (value === null || typeof value !== "object")
|
|
27
|
+
return false;
|
|
28
|
+
return typeof value.id === "string";
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A saved record's study: a valid `study`, else a valid `lab`, else the id its persona or scenario
|
|
32
|
+
* source names by convention.
|
|
33
|
+
*/
|
|
34
|
+
export function studyProvenanceOf(record) {
|
|
35
|
+
const declared = provenance(record.study) ?? provenance(record.lab);
|
|
36
|
+
if (declared !== undefined)
|
|
37
|
+
return declared;
|
|
38
|
+
const id = inferLegacyStudyId(record);
|
|
39
|
+
return id === undefined ? undefined : { id };
|
|
40
|
+
}
|
|
41
|
+
/** `study` and `lab` with the same value, as run.json and status.json write them until 0.109. */
|
|
42
|
+
export function studyFields(study) {
|
|
43
|
+
return study === undefined ? {} : { study, lab: study };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The study id a run names by the `study:<id>` or `lab:<id>` convention on its persona or scenario
|
|
47
|
+
* source, the only attribution a run written before `lab` and `study` has. A prefix with an empty
|
|
48
|
+
* remainder is not an id. Ids may contain colons (`lab:oss:meta`), so only the prefix is stripped.
|
|
49
|
+
* Readers keep both prefixes for good: saved runs say `lab:`.
|
|
50
|
+
*/
|
|
51
|
+
export function inferLegacyStudyId(bundle) {
|
|
52
|
+
for (const source of [bundle.persona?.source, bundle.scenario?.source]) {
|
|
53
|
+
if (typeof source !== "string")
|
|
54
|
+
continue;
|
|
55
|
+
const prefix = ["study:", "lab:"].find((candidate) => source.startsWith(candidate));
|
|
56
|
+
if (prefix === undefined)
|
|
57
|
+
continue;
|
|
58
|
+
const id = source.slice(prefix.length).trim();
|
|
59
|
+
if (id !== "")
|
|
60
|
+
return id;
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** The schema of a study's result on every route. */
|
|
2
|
+
export declare const STUDY_RESULT_SCHEMA = "humanish.study-result.v1";
|
|
3
|
+
/** The fields every route's result carries to name its route and its study. */
|
|
4
|
+
export interface StudyResultIdentity<R extends string> {
|
|
5
|
+
schema: typeof STUDY_RESULT_SCHEMA;
|
|
6
|
+
route: R;
|
|
7
|
+
/** The study's `id`. */
|
|
8
|
+
studyId: string;
|
|
9
|
+
/**
|
|
10
|
+
* The study's `id`, the same value as `studyId`.
|
|
11
|
+
* @deprecated Read `studyId`. The next minor removes it.
|
|
12
|
+
*/
|
|
13
|
+
labId: string;
|
|
14
|
+
}
|
|
15
|
+
/** The identity fields for a result of route `route` from the study `studyId`. */
|
|
16
|
+
export declare function studyResultIdentity<R extends string>(route: R, studyId: string): StudyResultIdentity<R>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// The schema every route's result carries when a study runs: preview, computer use, scripted,
|
|
2
|
+
// terminal and shared world. `route` says which, and route-specific fields stay on their route's
|
|
3
|
+
// result type.
|
|
4
|
+
/** The schema of a study's result on every route. */
|
|
5
|
+
export const STUDY_RESULT_SCHEMA = "humanish.study-result.v1";
|
|
6
|
+
/** The identity fields for a result of route `route` from the study `studyId`. */
|
|
7
|
+
export function studyResultIdentity(route, studyId) {
|
|
8
|
+
return { schema: STUDY_RESULT_SCHEMA, route, studyId, labId: studyId };
|
|
9
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
export declare const TERMINAL_EVENTS_ARTIFACT = "terminal-events.ndjson";
|
|
2
2
|
export declare const TERMINAL_TRANSCRIPT_ARTIFACT = "terminal-transcript.txt";
|
|
3
3
|
export declare const TERMINAL_LEDGERS_ARTIFACT = "terminal-ledgers.json";
|
|
4
|
-
/** The cost categories the
|
|
4
|
+
/** The cost categories the terminal route meters. product/media/payment are adapter signals; core can
|
|
5
5
|
* populate the provider line from the actor trace's tokenUsage.costUsd when present. */
|
|
6
6
|
export type CostCategory = "product" | "media" | "payment" | "provider";
|
|
7
7
|
/** The four cost categories, in a fixed order so the ledger shape is stable across runs. */
|
|
8
8
|
export declare const COST_CATEGORIES: readonly CostCategory[];
|
|
9
9
|
/**
|
|
10
10
|
* Strip ANSI/control noise from a captured terminal transcript into stable, scannable text. Pure
|
|
11
|
-
* (no IO). Exported so the terminal-product
|
|
12
|
-
* its captured exec stream
|
|
11
|
+
* (no IO). Exported so the terminal-product route (src/routes/terminal/live-sandbox.ts) normalizes
|
|
12
|
+
* its captured exec stream exactly as the local-actor routes do: the verdict-nonce scorer is only
|
|
13
13
|
* sound against the same normalization the marker is matched on, so the logic must not diverge.
|
|
14
14
|
*/
|
|
15
15
|
export declare function normalizeLocalActorTranscript(transcript: string): string;
|
|
@@ -18,8 +18,8 @@ type ActorVerdict = "passed" | "blocked" | "failed";
|
|
|
18
18
|
* Extract the per-run verdict from a normalized transcript: the agent must print exactly
|
|
19
19
|
* `HUMANISH_ACTOR_VERDICT=<status> HUMANISH_ACTOR_NONCE=<nonce>`, and the nonce is mandatory so a
|
|
20
20
|
* bare marker (echoed or replayed from untrusted text) can never forge a verdict. Pure (no IO).
|
|
21
|
-
* Exported so the terminal-product
|
|
22
|
-
* divergent verdict logic would let the two
|
|
21
|
+
* Exported so the terminal-product route scores its in-sandbox `codex exec` run by the same marker;
|
|
22
|
+
* divergent verdict logic would let the two routes disagree about what "passed" means.
|
|
23
23
|
*/
|
|
24
24
|
export declare function extractLocalActorVerdict(transcript: string, verdictNonce: string): ActorVerdict | null;
|
|
25
25
|
export {};
|
|
@@ -14,8 +14,8 @@ export const COST_CATEGORIES = [
|
|
|
14
14
|
];
|
|
15
15
|
/**
|
|
16
16
|
* Strip ANSI/control noise from a captured terminal transcript into stable, scannable text. Pure
|
|
17
|
-
* (no IO). Exported so the terminal-product
|
|
18
|
-
* its captured exec stream
|
|
17
|
+
* (no IO). Exported so the terminal-product route (src/routes/terminal/live-sandbox.ts) normalizes
|
|
18
|
+
* its captured exec stream exactly as the local-actor routes do: the verdict-nonce scorer is only
|
|
19
19
|
* sound against the same normalization the marker is matched on, so the logic must not diverge.
|
|
20
20
|
*/
|
|
21
21
|
export function normalizeLocalActorTranscript(transcript) {
|
|
@@ -31,8 +31,8 @@ export function normalizeLocalActorTranscript(transcript) {
|
|
|
31
31
|
* Extract the per-run verdict from a normalized transcript: the agent must print exactly
|
|
32
32
|
* `HUMANISH_ACTOR_VERDICT=<status> HUMANISH_ACTOR_NONCE=<nonce>`, and the nonce is mandatory so a
|
|
33
33
|
* bare marker (echoed or replayed from untrusted text) can never forge a verdict. Pure (no IO).
|
|
34
|
-
* Exported so the terminal-product
|
|
35
|
-
* divergent verdict logic would let the two
|
|
34
|
+
* Exported so the terminal-product route scores its in-sandbox `codex exec` run by the same marker;
|
|
35
|
+
* divergent verdict logic would let the two routes disagree about what "passed" means.
|
|
36
36
|
*/
|
|
37
37
|
export function extractLocalActorVerdict(transcript, verdictNonce) {
|
|
38
38
|
const compactTranscript = transcript.replace(/\s+/g, "");
|
package/dist/run/text.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
/** Escape a literal string for use inside a RegExp source. */
|
|
2
2
|
export declare function escapeRegExp(value: string): string;
|
|
3
|
+
/** "1 run", "2 runs"; `plural` names the irregular form, as in plural(n, "analysis", "analyses"). */
|
|
4
|
+
export declare function plural(count: number, singular: string, pluralForm?: string): string;
|
package/dist/run/text.js
CHANGED
|
@@ -2,3 +2,7 @@
|
|
|
2
2
|
export function escapeRegExp(value) {
|
|
3
3
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
4
4
|
}
|
|
5
|
+
/** "1 run", "2 runs"; `plural` names the irregular form, as in plural(n, "analysis", "analyses"). */
|
|
6
|
+
export function plural(count, singular, pluralForm = `${singular}s`) {
|
|
7
|
+
return `${count} ${count === 1 ? singular : pluralForm}`;
|
|
8
|
+
}
|
|
@@ -3,3 +3,8 @@ export declare function withTransientCommsSecrets<T>(work: () => Promise<T>): Pr
|
|
|
3
3
|
export declare function registerTransientCommsSecrets(values: string[]): void;
|
|
4
4
|
/** Literal, longest-first replacement in one pass; replacement text is never matched recursively. */
|
|
5
5
|
export declare function scrubTransientCommsText(text: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* The scope's values as a scrubSecretValues scrub, which also finds them percent-encoded, escaped or
|
|
8
|
+
* base64-encoded and returns decoded text. Outside a scope it changes nothing.
|
|
9
|
+
*/
|
|
10
|
+
export declare function transientCommsEncodedScrub(): (text: string) => string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
import { scrubSecretValues } from "../evidence/secret-scrub.js";
|
|
2
3
|
import { escapeRegExp } from "./text.js";
|
|
3
4
|
const scopes = new AsyncLocalStorage();
|
|
4
5
|
const MAX_VALUES = 8192;
|
|
@@ -70,3 +71,14 @@ export function scrubTransientCommsText(text) {
|
|
|
70
71
|
return fail(scope);
|
|
71
72
|
}
|
|
72
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* The scope's values as a scrubSecretValues scrub, which also finds them percent-encoded, escaped or
|
|
76
|
+
* base64-encoded and returns decoded text. Outside a scope it changes nothing.
|
|
77
|
+
*/
|
|
78
|
+
export function transientCommsEncodedScrub() {
|
|
79
|
+
const scope = scopes.getStore();
|
|
80
|
+
if (!scope)
|
|
81
|
+
return (text) => text;
|
|
82
|
+
usable(scope);
|
|
83
|
+
return scrubSecretValues([...scope.values]);
|
|
84
|
+
}
|
package/dist/run-lab.d.ts
CHANGED
|
@@ -1,22 +1,29 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LocalVmInput } from "./routes/computer-use/types.js";
|
|
2
2
|
import { type LateScorer } from "./lab/route-inputs.js";
|
|
3
|
-
import { type
|
|
4
|
-
import
|
|
3
|
+
import { type LabRoute } from "./lab/plan.js";
|
|
4
|
+
import type { LabDeps } from "./lab/lab-deps.js";
|
|
5
|
+
import type { RunLabDriving, RunLabHomes } from "./lab/run-lab-homes.js";
|
|
5
6
|
import { type LabConfig } from "./lab/types.js";
|
|
6
7
|
import type { ObserverResult } from "./observer/render.js";
|
|
7
|
-
import { type
|
|
8
|
-
import { type
|
|
9
|
-
import { type
|
|
10
|
-
import { type
|
|
8
|
+
import { type CuaActorLabResult } from "./routes/computer-use/types.js";
|
|
9
|
+
import { type PreviewStudyResult } from "./routes/preview.js";
|
|
10
|
+
import { type ScriptedBrowserLabResult } from "./routes/scripted/types.js";
|
|
11
|
+
import { type ConcurrentSharedWorldLabResult } from "./routes/shared-world/types.js";
|
|
12
|
+
import { type TerminalProductLabResult } from "./routes/terminal/types.js";
|
|
11
13
|
import { type RunScorerProvenance } from "./run/bundle.js";
|
|
12
|
-
import {
|
|
13
|
-
import { type RunLabProvenance } from "./run/status.js";
|
|
14
|
+
import type { RunStudyProvenance } from "./run/study-provenance.js";
|
|
14
15
|
/**
|
|
15
16
|
* Runs a lab on its route. The options are checked against the route and mapped into the route's
|
|
16
17
|
* hook bags before anything runs. Each route closes the run it started on every exit through its
|
|
17
18
|
* own run scope (`src/run/run.ts`).
|
|
18
19
|
*/
|
|
19
|
-
export declare function runLab(config: LabConfig, options:
|
|
20
|
+
export declare function runLab(config: LabConfig, options: InternalRunLabOptions, deps?: LabDeps): Promise<LabOutcome>;
|
|
21
|
+
/**
|
|
22
|
+
* runLab as the package exports it (`src/index.ts`): the public options only. A JavaScript caller
|
|
23
|
+
* that passes a field RunLabOptions no longer has is refused in the route's own result envelope
|
|
24
|
+
* before anything runs.
|
|
25
|
+
*/
|
|
26
|
+
export declare function runPackageLab(config: LabConfig, options: RunLabOptions): Promise<LabOutcome>;
|
|
20
27
|
/** A lab planned once: the route's refusal, or the run of its plan. */
|
|
21
28
|
export type PreparedLab = {
|
|
22
29
|
readonly ok: false;
|
|
@@ -28,62 +35,57 @@ export type PreparedLab = {
|
|
|
28
35
|
};
|
|
29
36
|
/**
|
|
30
37
|
* Normalizes the options and plans the lab once, so a caller can present a refusal before it loads
|
|
31
|
-
* anything the run needs. A local browser study's
|
|
32
|
-
*
|
|
33
|
-
*
|
|
38
|
+
* anything the run needs. A local browser study's provider is bound first, so the plan is made with
|
|
39
|
+
* it, and its desktop goes to the computer-use run as `localVm`; with inProcess the caller drives
|
|
40
|
+
* the app in process and needs no desktop.
|
|
34
41
|
*/
|
|
35
|
-
export declare function prepareLab(config: LabConfig, options:
|
|
42
|
+
export declare function prepareLab(config: LabConfig, options: InternalRunLabOptions, deps?: LabDeps): Promise<PreparedLab>;
|
|
36
43
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
44
|
+
* What a package caller passes to runLab: the run's settings and the typed homes (`RunLabHomes`,
|
|
45
|
+
* `RunLabDriving`). Each wins over the config when provided.
|
|
39
46
|
*/
|
|
40
47
|
export type RunLabOptions = RunLabBase & RunLabHomes & RunLabDriving;
|
|
41
48
|
interface RunLabBase {
|
|
42
|
-
automaticAnalysis?: AutomaticAnalysisHooks;
|
|
43
49
|
cwd: string;
|
|
44
50
|
runId?: string;
|
|
45
|
-
/** Which manifest this run came from (#455): threaded to the route so the run's own
|
|
46
|
-
* status record and bundle can say which lab produced it. Absent for library callers who
|
|
47
|
-
* hand a LabConfig directly — the run is then honestly lab-less rather than guessed. */
|
|
48
|
-
lab?: RunLabProvenance;
|
|
49
51
|
dryRun?: boolean;
|
|
50
52
|
open?: boolean;
|
|
51
53
|
/** Participant count override: preview participants or computer-use desktops. */
|
|
52
54
|
count?: number;
|
|
53
|
-
/** CUA fan-out only: create a new run for failed/selected
|
|
55
|
+
/** CUA fan-out only: create a new run for failed/selected participants from a prior run. */
|
|
54
56
|
rerun?: {
|
|
55
57
|
sourceRunId: string;
|
|
56
58
|
participantIds?: string[];
|
|
57
|
-
/** @deprecated The older name of `participantIds`. */
|
|
58
|
-
laneIds?: string[];
|
|
59
59
|
};
|
|
60
60
|
onObserverReady?: (observer: ObserverResult & {
|
|
61
61
|
ok: true;
|
|
62
62
|
}) => Promise<void> | void;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
63
|
+
}
|
|
64
|
+
/** runLab's options inside the package: the public ones plus what only the CLI and tests set. */
|
|
65
|
+
export type InternalRunLabOptions = RunLabOptions & RunLabInternals;
|
|
66
|
+
interface RunLabInternals {
|
|
67
|
+
/**
|
|
68
|
+
* Which manifest this run came from. planLab puts it on the plan, and the route reads
|
|
69
|
+
* plan.lab for the run's status record and bundle. Absent for a library caller that passes a
|
|
70
|
+
* LabConfig directly; that run records no lab.
|
|
71
|
+
*/
|
|
72
|
+
lab?: RunStudyProvenance;
|
|
71
73
|
/**
|
|
72
|
-
*
|
|
74
|
+
* Config-declared scorer provenance, forwarded alongside the
|
|
73
75
|
* loaded scorer. Its presence is the "declared" marker the terminal route reads to flip a
|
|
74
76
|
* status:"fail" verdict; the browser routes stamp it as evidence (they already flip). Core-computed
|
|
75
77
|
* (path + digest), never adopter-supplied; absent for library callers.
|
|
76
78
|
*/
|
|
77
79
|
scorerProvenance?: RunScorerProvenance;
|
|
80
|
+
/** The local VM study's desktop, analysis gate and signal, for a local browser lab. */
|
|
81
|
+
localVm?: LocalVmInput;
|
|
78
82
|
}
|
|
79
83
|
/** A run's result and the route it ran on. */
|
|
80
|
-
interface RouteOutcome<R extends LabRoute,
|
|
84
|
+
interface RouteOutcome<R extends LabRoute, T> {
|
|
81
85
|
route: R;
|
|
82
|
-
/** @deprecated The route's older name. Use `route`; this field goes in the next minor. */
|
|
83
|
-
backend: B;
|
|
84
86
|
result: T;
|
|
85
87
|
}
|
|
86
|
-
export type LabOutcome = RouteOutcome<"preview",
|
|
88
|
+
export type LabOutcome = RouteOutcome<"preview", PreviewStudyResult> | RouteOutcome<"computer-use", CuaActorLabResult> | RouteOutcome<"scripted", ScriptedBrowserLabResult> | RouteOutcome<"terminal", TerminalProductLabResult> | RouteOutcome<"shared-world", ConcurrentSharedWorldLabResult>;
|
|
87
89
|
/**
|
|
88
90
|
* A plan past its route's local checks that need no scorer: the refusal they returned, or the
|
|
89
91
|
* route's run, which takes a scorer loaded after them.
|
|
@@ -101,7 +103,7 @@ export type AdmittedPlan<R extends LabRoute = LabRoute> = {
|
|
|
101
103
|
};
|
|
102
104
|
/** The result of a run on route `R`, the `result` of that route's `LabOutcome`. */
|
|
103
105
|
export type LabResult<R extends LabRoute = LabRoute> = {
|
|
104
|
-
preview:
|
|
106
|
+
preview: PreviewStudyResult;
|
|
105
107
|
"computer-use": CuaActorLabResult;
|
|
106
108
|
scripted: ScriptedBrowserLabResult;
|
|
107
109
|
terminal: TerminalProductLabResult;
|