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/lab/preflight.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { AutomaticAnalysisBudget } from "../analysis/automatic-config.js";
|
|
2
2
|
import type { E2BDesktopModule } from "../substrates/e2b/sdk.js";
|
|
3
3
|
import { type LabConfig } from "./types.js";
|
|
4
|
-
import {
|
|
5
|
-
import type { LabBackend } from "./plan.js";
|
|
4
|
+
import { STUDY_CHECK_SCHEMA } from "./preflight-result.js";
|
|
6
5
|
import { type LabRoute } from "./plan.js";
|
|
7
6
|
import { type LabResolveFailure } from "./discover.js";
|
|
8
7
|
export type LabPreflightReachabilityMode = "metadata" | "public-preview" | "sandbox-loopback" | "prepared-host";
|
|
@@ -39,15 +38,15 @@ interface LabPreflightSpend {
|
|
|
39
38
|
export interface LabPreflightResult {
|
|
40
39
|
/** The separate budget for a future live run, never spend by preflight itself. */
|
|
41
40
|
analysis?: AutomaticAnalysisBudget;
|
|
42
|
-
schema: typeof
|
|
41
|
+
schema: typeof STUDY_CHECK_SCHEMA;
|
|
43
42
|
ok: boolean;
|
|
44
43
|
cwd: string;
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
/** The study the caller asked for, as given. */
|
|
45
|
+
study: string;
|
|
46
|
+
/** The resolved study's `id`, once the file parses. */
|
|
47
|
+
studyId?: string;
|
|
47
48
|
origin?: string;
|
|
48
49
|
path?: string;
|
|
49
|
-
/** The route's older name; `route` is the current one. */
|
|
50
|
-
backend?: LabBackend;
|
|
51
50
|
route?: LabRoute;
|
|
52
51
|
reachability: LabPreflightReachabilityMode;
|
|
53
52
|
checks: LabPreflightCheck[];
|
|
@@ -56,7 +55,7 @@ export interface LabPreflightResult {
|
|
|
56
55
|
spend: LabPreflightSpend;
|
|
57
56
|
warnings: string[];
|
|
58
57
|
error?: {
|
|
59
|
-
code: LabResolveFailure["error"]["code"] | "
|
|
58
|
+
code: LabResolveFailure["error"]["code"] | "HUMANISH_STUDY_PREFLIGHT_INVALID_OPTION" | "HUMANISH_STUDY_PREFLIGHT_UNSUPPORTED_ROUTE" | "HUMANISH_STUDY_PREFLIGHT_TARGET_POLICY" | "HUMANISH_STUDY_PREFLIGHT_ENV_MISSING" | "HUMANISH_STUDY_PREFLIGHT_E2B_REQUIRED" | "HUMANISH_STUDY_PREFLIGHT_TARGET_UNREACHABLE" | "HUMANISH_STUDY_PREFLIGHT_PROVISION_FAILED" | "HUMANISH_STUDY_PREFLIGHT_TEARDOWN_FAILED";
|
|
60
59
|
message: string;
|
|
61
60
|
};
|
|
62
61
|
}
|
package/dist/lab/preflight.js
CHANGED
|
@@ -2,7 +2,7 @@ import path from "node:path";
|
|
|
2
2
|
import { isLoopbackUrl } from "./parse/subject.js";
|
|
3
3
|
import {} from "./types.js";
|
|
4
4
|
import { runPublicPreviewPreflight, runSandboxLoopbackPreflight } from "./preflight-probes.js";
|
|
5
|
-
import { digest, fail, finalize,
|
|
5
|
+
import { digest, fail, finalize, STUDY_CHECK_SCHEMA } from "./preflight-result.js";
|
|
6
6
|
import { routeOf } from "./plan.js";
|
|
7
7
|
import { resolveLabManifest } from "./discover.js";
|
|
8
8
|
import { rosterOf } from "./parse/actors.js";
|
|
@@ -14,10 +14,10 @@ export async function runLabPreflight(options) {
|
|
|
14
14
|
const resolved = await resolveLabManifest(cwd, options.lab);
|
|
15
15
|
if (!resolved.ok) {
|
|
16
16
|
return {
|
|
17
|
-
schema:
|
|
17
|
+
schema: STUDY_CHECK_SCHEMA,
|
|
18
18
|
ok: false,
|
|
19
19
|
cwd,
|
|
20
|
-
|
|
20
|
+
study: options.lab,
|
|
21
21
|
reachability,
|
|
22
22
|
checks: [
|
|
23
23
|
{
|
|
@@ -48,7 +48,7 @@ export async function runLabPreflight(options) {
|
|
|
48
48
|
hooks: options.hooks ?? {},
|
|
49
49
|
checks: [
|
|
50
50
|
{ name: "lab manifest", ok: true, message: `resolved ${resolved.origin} lab manifest` },
|
|
51
|
-
{ name: "
|
|
51
|
+
{ name: "route", ok: true, message: `selected the ${route} route` },
|
|
52
52
|
],
|
|
53
53
|
targets: collectTargets(resolved.config),
|
|
54
54
|
sandbox: { created: false },
|
|
@@ -60,7 +60,7 @@ export async function runLabPreflight(options) {
|
|
|
60
60
|
check: {
|
|
61
61
|
name: "reachability",
|
|
62
62
|
ok: true,
|
|
63
|
-
message: "metadata-only; no network, sandbox, or model calls. Credentials, local login, dependencies and target reachability were not checked; use humanish doctor --
|
|
63
|
+
message: "metadata-only; no network, sandbox, or model calls. Credentials, local login, dependencies and target reachability were not checked; use humanish doctor --study <study> for setup checks.",
|
|
64
64
|
},
|
|
65
65
|
});
|
|
66
66
|
case "public-preview":
|
|
@@ -68,7 +68,7 @@ export async function runLabPreflight(options) {
|
|
|
68
68
|
case "sandbox-loopback":
|
|
69
69
|
return await runSandboxLoopbackPreflight(ctx);
|
|
70
70
|
case "prepared-host":
|
|
71
|
-
return fail(ctx, "
|
|
71
|
+
return fail(ctx, "HUMANISH_STUDY_PREFLIGHT_UNSUPPORTED_ROUTE", "prepared-host preflight requires a library adapter hook; the plain CLI can validate metadata only for this mode.", [
|
|
72
72
|
{
|
|
73
73
|
name: "prepared-host",
|
|
74
74
|
ok: false,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { LabPlan, Requirement } from "./plan-types.js";
|
|
2
|
+
/** The `key` requirements whose value `env` lacks, OPENAI_API_KEY before E2B_API_KEY. */
|
|
3
|
+
export declare function missingKeys(requirements: readonly Requirement[], env: Record<string, string | undefined>): string[];
|
|
4
|
+
/** The subject env names the requirements list and `env` lacks, in declaration order. */
|
|
5
|
+
export declare function missingSubjectEnv(requirements: readonly Requirement[], env: Record<string, string | undefined>): string[];
|
|
6
|
+
/**
|
|
7
|
+
* The provider keys the requirements name, in plan order. A `key-one-of` names the first of its
|
|
8
|
+
* keys that `isPresent` reports, else OPENAI_API_KEY.
|
|
9
|
+
*/
|
|
10
|
+
export declare function requiredKeys(requirements: readonly Requirement[], isPresent: (name: string) => boolean): string[];
|
|
11
|
+
/** The subject env names the requirements list, in declaration order. */
|
|
12
|
+
export declare function requiredSubjectEnv(requirements: readonly Requirement[]): string[];
|
|
13
|
+
/**
|
|
14
|
+
* The provider keys a live run of `plan` is known to read: its `key` and `key-one-of` names, its
|
|
15
|
+
* subject env, the external catch's token variable, ANTHROPIC_API_KEY for a Claude Code
|
|
16
|
+
* participant, and OPENAI_API_KEY when automatic analysis runs on OpenAI. `lab run` prints a
|
|
17
|
+
* key-source line for these only. Discovery still fills every key it finds: other readers, such as
|
|
18
|
+
* a declared scorer's host code, are not in the plan.
|
|
19
|
+
*/
|
|
20
|
+
export declare function keyNamesOf(plan: LabPlan): ReadonlySet<string>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** Provider keys in the order the routes name them in a refusal. */
|
|
2
|
+
const KEY_ORDER = ["OPENAI_API_KEY", "E2B_API_KEY"];
|
|
3
|
+
const present = (env, name) => (env[name]?.trim() ?? "") !== "";
|
|
4
|
+
/** The `key` requirements whose value `env` lacks, OPENAI_API_KEY before E2B_API_KEY. */
|
|
5
|
+
export function missingKeys(requirements, env) {
|
|
6
|
+
const required = new Set(requirements.flatMap((requirement) => (requirement.kind === "key" ? [requirement.name] : [])));
|
|
7
|
+
return KEY_ORDER.filter((name) => required.has(name) && !present(env, name));
|
|
8
|
+
}
|
|
9
|
+
/** The subject env names the requirements list and `env` lacks, in declaration order. */
|
|
10
|
+
export function missingSubjectEnv(requirements, env) {
|
|
11
|
+
return requiredSubjectEnv(requirements).filter((name) => !present(env, name));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The provider keys the requirements name, in plan order. A `key-one-of` names the first of its
|
|
15
|
+
* keys that `isPresent` reports, else OPENAI_API_KEY.
|
|
16
|
+
*/
|
|
17
|
+
export function requiredKeys(requirements, isPresent) {
|
|
18
|
+
return requirements.flatMap((requirement) => {
|
|
19
|
+
if (requirement.kind === "key")
|
|
20
|
+
return [requirement.name];
|
|
21
|
+
if (requirement.kind === "key-one-of")
|
|
22
|
+
return [requirement.names.find(isPresent) ?? requirement.names[1]];
|
|
23
|
+
return [];
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/** The subject env names the requirements list, in declaration order. */
|
|
27
|
+
export function requiredSubjectEnv(requirements) {
|
|
28
|
+
return requirements.flatMap((requirement) => requirement.kind === "subject-env" ? requirement.names : []);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The provider keys a live run of `plan` is known to read: its `key` and `key-one-of` names, its
|
|
32
|
+
* subject env, the external catch's token variable, ANTHROPIC_API_KEY for a Claude Code
|
|
33
|
+
* participant, and OPENAI_API_KEY when automatic analysis runs on OpenAI. `lab run` prints a
|
|
34
|
+
* key-source line for these only. Discovery still fills every key it finds: other readers, such as
|
|
35
|
+
* a declared scorer's host code, are not in the plan.
|
|
36
|
+
*/
|
|
37
|
+
export function keyNamesOf(plan) {
|
|
38
|
+
const names = new Set();
|
|
39
|
+
for (const requirement of plan.requirements) {
|
|
40
|
+
if (requirement.kind === "key")
|
|
41
|
+
names.add(requirement.name);
|
|
42
|
+
if (requirement.kind === "key-one-of" || requirement.kind === "subject-env")
|
|
43
|
+
for (const name of requirement.names)
|
|
44
|
+
names.add(name);
|
|
45
|
+
if (requirement.kind === "local-agent" && requirement.agent === "claude")
|
|
46
|
+
names.add("ANTHROPIC_API_KEY");
|
|
47
|
+
}
|
|
48
|
+
const catchToken = plan.residual.comms?.email?.external?.authTokenEnv;
|
|
49
|
+
if (catchToken !== undefined)
|
|
50
|
+
names.add(catchToken);
|
|
51
|
+
if (plan.analysis !== undefined && plan.analysis.config.provider !== "codex")
|
|
52
|
+
names.add("OPENAI_API_KEY");
|
|
53
|
+
return names;
|
|
54
|
+
}
|
|
@@ -1,17 +1,28 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { InternalRunLabOptions } from "../run-lab.js";
|
|
2
|
+
import type { RunScorerProvenance } from "../run/bundle.js";
|
|
3
|
+
import { type AdapterScorerModule } from "./adapter-scorer-loader.js";
|
|
4
|
+
import type { LabDeps } from "./lab-deps.js";
|
|
5
|
+
import type { LabEvent } from "./run-lab-events.js";
|
|
2
6
|
import type { ComputerUseRunInput } from "../routes/computer-use/types.js";
|
|
3
7
|
import type { ScriptedRunInput } from "../routes/scripted/types.js";
|
|
4
8
|
import type { SharedWorldRunInput } from "../routes/shared-world/types.js";
|
|
5
9
|
import type { TerminalRunInput } from "../routes/terminal/types.js";
|
|
6
|
-
export declare function computerUseInput(options:
|
|
7
|
-
export declare function scriptedInput(options:
|
|
8
|
-
export declare function terminalInput(options:
|
|
9
|
-
export declare function sharedWorldInput(options:
|
|
10
|
+
export declare function computerUseInput(options: InternalRunLabOptions, deps: LabDeps, emit: LabEmit | undefined): ComputerUseRunInput;
|
|
11
|
+
export declare function scriptedInput(options: InternalRunLabOptions, deps: LabDeps, emit: LabEmit | undefined): ScriptedRunInput;
|
|
12
|
+
export declare function terminalInput(options: InternalRunLabOptions, deps: LabDeps, emit: LabEmit | undefined): TerminalRunInput;
|
|
13
|
+
export declare function sharedWorldInput(options: InternalRunLabOptions, deps: LabDeps, emit: LabEmit | undefined): SharedWorldRunInput;
|
|
10
14
|
/** A scorer the CLI loads after the route's local checks, and the provenance it stamps on the run. */
|
|
11
|
-
export type LateScorer = Pick<
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
export type LateScorer = Pick<InternalRunLabOptions, "scorer" | "scorerProvenance">;
|
|
16
|
+
/** Narrows RunLabOptions.scorer to the context the route passes (adapter-scorer-loader.ts). */
|
|
17
|
+
type NarrowScorer<S> = (scorer: AdapterScorerModule) => S;
|
|
18
|
+
/**
|
|
19
|
+
* A route's input with a scorer loaded after admission, and the scorer's provenance, as if the
|
|
20
|
+
* caller had passed them up front. The rest of the input is the one the route's checks admitted.
|
|
21
|
+
*/
|
|
22
|
+
export declare function withLateScorer<S, I extends {
|
|
23
|
+
scorer?: S;
|
|
24
|
+
scorerProvenance?: RunScorerProvenance;
|
|
25
|
+
}>(input: I, late: LateScorer | undefined, narrow: NarrowScorer<S>): I;
|
|
26
|
+
/** Reports a LabEvent to onEvent without waiting (normalizeRunLabOptions builds it). */
|
|
27
|
+
type LabEmit = (event: LabEvent) => void;
|
|
28
|
+
export {};
|
package/dist/lab/route-inputs.js
CHANGED
|
@@ -1,95 +1,92 @@
|
|
|
1
|
-
// What each route's run takes from runLab's options: the shared run settings, the
|
|
2
|
-
//
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export function computerUseInput(options) {
|
|
1
|
+
// What each route's run takes from runLab's options: the shared run settings, the typed options
|
|
2
|
+
// the route reads, the event emitter, the test seams and the declared scorer's provenance.
|
|
3
|
+
import { browserRouteScorer, terminalRouteScorer, } from "./adapter-scorer-loader.js";
|
|
4
|
+
export function computerUseInput(options, deps, emit) {
|
|
6
5
|
return {
|
|
7
6
|
...analysisOf(options),
|
|
8
7
|
cwd: options.cwd,
|
|
9
|
-
// CLI --count overrides the homogeneous fan-out
|
|
8
|
+
// CLI --count overrides the homogeneous fan-out participant count (a declared roster's length wins).
|
|
10
9
|
...(options.count === undefined ? {} : { countOverride: options.count }),
|
|
11
10
|
...(options.open === undefined ? {} : { open: options.open }),
|
|
12
11
|
...(options.onObserverReady === undefined ? {} : { onObserverReady: options.onObserverReady }),
|
|
13
12
|
...(options.runId === undefined ? {} : { runId: options.runId }),
|
|
14
13
|
...(options.rerun === undefined ? {} : { rerun: options.rerun }),
|
|
15
|
-
...(options.
|
|
16
|
-
...
|
|
14
|
+
...(options.env === undefined ? {} : { env: options.env }),
|
|
15
|
+
...(options.prepareDesktop === undefined ? {} : { prepareDesktop: options.prepareDesktop }),
|
|
16
|
+
...(options.createProvider === undefined ? {} : { createProvider: options.createProvider }),
|
|
17
|
+
...(options.inProcess === undefined ? {} : { inProcess: options.inProcess }),
|
|
18
|
+
...(options.localVm === undefined ? {} : { localVm: options.localVm }),
|
|
19
|
+
...observersOf(options, emit),
|
|
20
|
+
deps,
|
|
21
|
+
...scorerOf(options, browserRouteScorer),
|
|
17
22
|
};
|
|
18
23
|
}
|
|
19
|
-
export function scriptedInput(options) {
|
|
24
|
+
export function scriptedInput(options, deps, emit) {
|
|
20
25
|
return {
|
|
21
26
|
...analysisOf(options),
|
|
27
|
+
...(emit === undefined ? {} : { emit }),
|
|
22
28
|
cwd: options.cwd,
|
|
23
29
|
...(options.open === undefined ? {} : { open: options.open }),
|
|
24
30
|
...(options.runId === undefined ? {} : { runId: options.runId }),
|
|
25
|
-
...(options.
|
|
31
|
+
...(options.env === undefined ? {} : { env: options.env }),
|
|
32
|
+
...(options.prepareDesktop === undefined ? {} : { prepareDesktop: options.prepareDesktop }),
|
|
33
|
+
deps,
|
|
26
34
|
};
|
|
27
35
|
}
|
|
28
|
-
export function terminalInput(options) {
|
|
36
|
+
export function terminalInput(options, deps, emit) {
|
|
29
37
|
return {
|
|
30
38
|
...analysisOf(options),
|
|
39
|
+
...(emit === undefined ? {} : { emit }),
|
|
31
40
|
cwd: options.cwd,
|
|
32
41
|
...(options.open === undefined ? {} : { open: options.open }),
|
|
33
42
|
...(options.runId === undefined ? {} : { runId: options.runId }),
|
|
34
|
-
...(options.
|
|
35
|
-
|
|
43
|
+
...(options.env === undefined ? {} : { env: options.env }),
|
|
44
|
+
deps,
|
|
45
|
+
...scorerOf(options, terminalRouteScorer),
|
|
36
46
|
};
|
|
37
47
|
}
|
|
38
|
-
export function sharedWorldInput(options) {
|
|
48
|
+
export function sharedWorldInput(options, deps, emit) {
|
|
39
49
|
return {
|
|
40
50
|
...analysisOf(options),
|
|
41
51
|
cwd: options.cwd,
|
|
42
52
|
...(options.open === undefined ? {} : { open: options.open }),
|
|
43
53
|
...(options.onObserverReady === undefined ? {} : { onObserverReady: options.onObserverReady }),
|
|
44
54
|
...(options.runId === undefined ? {} : { runId: options.runId }),
|
|
45
|
-
...(options.
|
|
46
|
-
...
|
|
55
|
+
...(options.env === undefined ? {} : { env: options.env }),
|
|
56
|
+
...(options.prepareDesktop === undefined ? {} : { prepareDesktop: options.prepareDesktop }),
|
|
57
|
+
...observersOf(options, emit),
|
|
58
|
+
deps,
|
|
59
|
+
...scorerOf(options, browserRouteScorer),
|
|
47
60
|
};
|
|
48
61
|
}
|
|
49
|
-
/** The computer-use input with a scorer loaded after admission (see withLateScorer). */
|
|
50
|
-
export function computerUseInputWithScorer(input, late) {
|
|
51
|
-
const hooks = late?.scorer === undefined ? undefined : scorerHooks(late.scorer);
|
|
52
|
-
return withLateScorer(input, HOOK_MEMBERS.cua, hooks, late);
|
|
53
|
-
}
|
|
54
|
-
/** The shared-world input with a scorer loaded after admission (see withLateScorer). */
|
|
55
|
-
export function sharedWorldInputWithScorer(input, late) {
|
|
56
|
-
const hooks = late?.scorer === undefined ? undefined : scorerHooks(late.scorer);
|
|
57
|
-
return withLateScorer(input, HOOK_MEMBERS.sharedWorld, hooks, late);
|
|
58
|
-
}
|
|
59
|
-
/** The terminal input with a scorer loaded after admission. Terminal runs take no deriveArtifacts. */
|
|
60
|
-
export function terminalInputWithScorer(input, late) {
|
|
61
|
-
const scorer = late?.scorer;
|
|
62
|
-
const hooks = scorer === undefined
|
|
63
|
-
? undefined
|
|
64
|
-
: {
|
|
65
|
-
...(scorer.score === undefined ? {} : { score: scorer.score }),
|
|
66
|
-
...(scorer.deriveFeedback === undefined ? {} : { deriveFeedback: scorer.deriveFeedback }),
|
|
67
|
-
};
|
|
68
|
-
return withLateScorer(input, HOOK_MEMBERS.terminal, hooks, late);
|
|
69
|
-
}
|
|
70
62
|
/**
|
|
71
|
-
*
|
|
72
|
-
* caller
|
|
73
|
-
* members the route's checks already read stay the same objects.
|
|
63
|
+
* A route's input with a scorer loaded after admission, and the scorer's provenance, as if the
|
|
64
|
+
* caller had passed them up front. The rest of the input is the one the route's checks admitted.
|
|
74
65
|
*/
|
|
75
|
-
function withLateScorer(input,
|
|
66
|
+
export function withLateScorer(input, late, narrow) {
|
|
76
67
|
if (late === undefined)
|
|
77
68
|
return input;
|
|
78
69
|
return {
|
|
79
70
|
...input,
|
|
80
|
-
...(
|
|
81
|
-
? {}
|
|
82
|
-
: { hooks: withHookOverrides(input.hooks, declared, hooks) }),
|
|
71
|
+
...(late.scorer === undefined ? {} : { scorer: narrow(late.scorer) }),
|
|
83
72
|
...(late.scorerProvenance === undefined ? {} : { scorerProvenance: late.scorerProvenance }),
|
|
84
73
|
};
|
|
85
74
|
}
|
|
75
|
+
/** The caller's stream callback and the run's event emitter, for the routes that report them. */
|
|
76
|
+
function observersOf(options, emit) {
|
|
77
|
+
return {
|
|
78
|
+
...(options.onStream === undefined ? {} : { onStream: options.onStream }),
|
|
79
|
+
...(emit === undefined ? {} : { emit }),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
86
82
|
function analysisOf(options) {
|
|
87
|
-
return options.
|
|
88
|
-
? {}
|
|
89
|
-
: { automaticAnalysis: options.automaticAnalysis };
|
|
83
|
+
return options.analysisSignal === undefined ? {} : { analysisSignal: options.analysisSignal };
|
|
90
84
|
}
|
|
91
|
-
function scorerOf(options) {
|
|
92
|
-
return
|
|
93
|
-
? {}
|
|
94
|
-
|
|
85
|
+
function scorerOf(options, narrow) {
|
|
86
|
+
return {
|
|
87
|
+
...(options.scorer === undefined ? {} : { scorer: narrow(options.scorer) }),
|
|
88
|
+
...(options.scorerProvenance === undefined
|
|
89
|
+
? {}
|
|
90
|
+
: { scorerProvenance: options.scorerProvenance }),
|
|
91
|
+
};
|
|
95
92
|
}
|
package/dist/lab/routing.d.ts
CHANGED
|
@@ -1,81 +1,82 @@
|
|
|
1
1
|
import type { LabConfig } from "./types.js";
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const MAX_COMPUTER_USE_PARTICIPANTS = 16;
|
|
3
3
|
export declare function actorResolvesToComputerUse(type: string | undefined): boolean;
|
|
4
4
|
export declare function registeredComputerUseActors(): string[];
|
|
5
5
|
export declare function actorResolvesToScriptedBrowser(type: string | undefined): boolean;
|
|
6
6
|
export declare function registeredScriptedBrowserActors(): string[];
|
|
7
|
-
/** True when `type` resolves to a registered terminal actor (the "terminal"
|
|
7
|
+
/** True when `type` resolves to a registered terminal actor (the "terminal" run kind). Exported so
|
|
8
8
|
* the engine + tests can resolve the dispatch the same way the parser does. */
|
|
9
9
|
export declare function actorResolvesToTerminal(type: string | undefined): boolean;
|
|
10
10
|
export declare function registeredTerminalActors(): string[];
|
|
11
11
|
/**
|
|
12
|
-
* The declared fan-out
|
|
12
|
+
* The declared fan-out participant count on the computer-use route: a `lanes[]` roster's length, else
|
|
13
13
|
* a homogeneous `count`, else 1. The single source of truth shared by the parser, the engine,
|
|
14
|
-
* and the pre-flight plan so the
|
|
14
|
+
* and the pre-flight plan so the participant count is computed the same way everywhere.
|
|
15
15
|
*/
|
|
16
|
-
export declare function
|
|
16
|
+
export declare function computerUseParticipantCount(config: LabConfig): number;
|
|
17
17
|
/**
|
|
18
|
-
* A participant's id: its declared roster id, else `lane-NN` (independent
|
|
19
|
-
* (shared-world
|
|
20
|
-
* routes that name participants both call this, so a filled recipient names a participant that
|
|
18
|
+
* A participant's id: its declared roster id, else `lane-NN` (independent participants) or `role-NN`
|
|
19
|
+
* (shared-world participants) from its 0-based position. The parser's filled email recipients and
|
|
20
|
+
* the routes that name participants both call this, so a filled recipient names a participant that
|
|
21
21
|
* runs.
|
|
22
22
|
*/
|
|
23
23
|
export declare function participantIdAt(index: number, declared: string | undefined, kind: "lane" | "seat"): string;
|
|
24
24
|
/**
|
|
25
|
-
* True when this config routes to the computer-use backend: an app-url subject whose first
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* with unknown actors still hit its fail-closed ACTOR_UNSUPPORTED.)
|
|
25
|
+
* True when this config routes to the computer-use backend: an app-url subject whose first actor
|
|
26
|
+
* resolves to a registered computer-use actor, or a clone subject on a hosted desktop whose first
|
|
27
|
+
* actor does. Single source of truth: routeOf and the warning logic both use it. (The app-url
|
|
28
|
+
* branch also checks the first actor, so a scripted-browser actor routes elsewhere. routeOf keeps a
|
|
29
|
+
* bare app-url fallback to the computer-use route so library-API configs with unknown actors still
|
|
30
|
+
* hit its fail-closed ACTOR_UNSUPPORTED.)
|
|
32
31
|
*/
|
|
33
32
|
export declare function isComputerUseComposition(config: LabConfig): boolean;
|
|
34
33
|
/**
|
|
35
|
-
* True when this config routes to the
|
|
36
|
-
* on a hosted desktop whose first actor resolves to a computer-use actor
|
|
34
|
+
* True when this config routes to the shared-world route: a clone or local-tree subject
|
|
35
|
+
* on a hosted desktop whose first actor resolves to a computer-use actor and that declares the
|
|
37
36
|
* `shared-world` topology. Mirror of isComputerUseComposition; the single source of truth shared by
|
|
38
|
-
* routeOf (which checks it
|
|
37
|
+
* routeOf (which checks it before the computer-use route) and the warning logic. Every
|
|
39
38
|
* shared-world study runs its participants at once (`execution.concurrency` >= 2). The same
|
|
40
|
-
* clone/local-tree × e2b-desktop × computer-use composition
|
|
41
|
-
* (the
|
|
39
|
+
* clone/local-tree × e2b-desktop × computer-use composition without `topology: shared-world` stays per-lane-worlds
|
|
40
|
+
* (the computer-use route); the topology declaration is the override switch.
|
|
42
41
|
*/
|
|
43
42
|
export declare function isSharedWorldComposition(config: LabConfig): boolean;
|
|
43
|
+
/** The getHost provisioned-subject shared-world shape (clone/local-tree served + exposed in-sandbox). */
|
|
44
|
+
export declare function isProvisionedSharedWorldComposition(config: LabConfig): boolean;
|
|
44
45
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
46
|
+
* The external-public shared-world shape: a real public deployment used directly as
|
|
47
|
+
* the shared plane: `source: app-url` + `topology: shared-world` + a computer-use actor on
|
|
48
|
+
* e2b-desktop + `policies.allowPublicTargets: true`. No getHost, no clone, no subject sandbox, no
|
|
49
|
+
* seed. The operator-ownership attestation `subject.publicTarget` is required (validated in
|
|
50
|
+
* externalPublicSharedWorldValidationReason, not here; this predicate is the router only, so a
|
|
51
|
+
* half-declared external-public config still routes here to get its precise fail-closed reason
|
|
52
|
+
* rather than silently downgrading to the per-participant computer-use route).
|
|
48
53
|
*/
|
|
49
|
-
export declare function
|
|
54
|
+
export declare function isExternalPublicSharedWorldComposition(config: LabConfig): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Resolve a shared-world participant's entry URL from `serve.url` and its roster entry's `entry`
|
|
57
|
+
* (a relative path or a same-origin absolute URL). Returns null when the result is not a
|
|
58
|
+
* same-origin loopback URL, so a participant only ever drives the in-sandbox app.
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveEntryUrl(serveUrl: string, entry: string | undefined): string | null;
|
|
50
61
|
/**
|
|
51
62
|
* True when this config routes to the scripted-browser backend: an app-url subject whose
|
|
52
63
|
* first actor resolves to a registered scripted-browser actor (execution.target local or
|
|
53
|
-
* absent
|
|
64
|
+
* absent; the parse layer enforces that pairing). Mirror of isComputerUseComposition; the single
|
|
54
65
|
* source of truth for routeOf and the warning logic.
|
|
55
66
|
*/
|
|
56
67
|
export declare function isScriptedBrowserComposition(config: LabConfig): boolean;
|
|
57
68
|
export declare function isProvisionedScriptedBrowserComposition(config: LabConfig): boolean;
|
|
58
69
|
/**
|
|
59
70
|
* True when this config routes to the terminal-product backend: a terminal-product subject whose
|
|
60
|
-
* first actor resolves to a registered terminal actor (execution.target e2b-terminal or absent
|
|
71
|
+
* first actor resolves to a registered terminal actor (execution.target e2b-terminal or absent;
|
|
61
72
|
* the parse layer enforces that pairing). Mirror of isComputerUseComposition/isScriptedBrowserComposition;
|
|
62
73
|
* the single source of truth for routeOf and the warning logic.
|
|
63
74
|
*/
|
|
64
75
|
export declare function isTerminalProductComposition(config: LabConfig): boolean;
|
|
65
|
-
/**
|
|
66
|
-
export
|
|
67
|
-
/** @deprecated Use `routeOf`. This goes in the next minor. */
|
|
68
|
-
export declare function routesToSharedWorld(config: LabConfig): boolean;
|
|
69
|
-
/** @deprecated Use `routeOf`. This goes in the next minor. */
|
|
70
|
-
export declare function routesToProvisionedSharedWorld(config: LabConfig): boolean;
|
|
71
|
-
/** @deprecated Use `routeOf`. This goes in the next minor. */
|
|
72
|
-
export declare function routesToExternalPublicSharedWorld(config: LabConfig): boolean;
|
|
76
|
+
/** The five execution paths a lab can take. */
|
|
77
|
+
export type LabRoute = "preview" | "computer-use" | "shared-world" | "terminal" | "scripted";
|
|
73
78
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
79
|
+
* The route a config takes. It never refuses: a config no route can run still gets the route
|
|
80
|
+
* whose own checks refuse it with the most precise reason.
|
|
76
81
|
*/
|
|
77
|
-
export declare function
|
|
78
|
-
/** @deprecated Use `routeOf`. This goes in the next minor. */
|
|
79
|
-
export declare function routesToScriptedBrowser(config: LabConfig): boolean;
|
|
80
|
-
/** @deprecated Use `routeOf`. This goes in the next minor. */
|
|
81
|
-
export declare function routesToTerminalProduct(config: LabConfig): boolean;
|
|
82
|
+
export declare function routeOf(config: LabConfig): LabRoute;
|