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/routing.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { actorRegistry } from "../actors/registry.js";
|
|
2
2
|
import { isLoopbackUrl } from "./parse/subject.js";
|
|
3
|
-
// Hard cap on
|
|
4
|
-
//
|
|
5
|
-
export const
|
|
3
|
+
// Hard cap on computer-use participants. No setting raises it: each participant is a paid desktop,
|
|
4
|
+
// and they all run at once.
|
|
5
|
+
export const MAX_COMPUTER_USE_PARTICIPANTS = 16;
|
|
6
6
|
// Run kinds whose evidence is the participant's screenshots. An actor that declares it produces none
|
|
7
7
|
// cannot run on them: a code-only actor would claim a GUI flow it only reached through a shell.
|
|
8
8
|
const SCREENSHOT_RUN_KINDS = new Set([
|
|
@@ -36,7 +36,7 @@ export function actorResolvesToScriptedBrowser(type) {
|
|
|
36
36
|
export function registeredScriptedBrowserActors() {
|
|
37
37
|
return registeredActorsOn("scripted-browser");
|
|
38
38
|
}
|
|
39
|
-
/** True when `type` resolves to a registered terminal actor (the "terminal"
|
|
39
|
+
/** True when `type` resolves to a registered terminal actor (the "terminal" run kind). Exported so
|
|
40
40
|
* the engine + tests can resolve the dispatch the same way the parser does. */
|
|
41
41
|
export function actorResolvesToTerminal(type) {
|
|
42
42
|
return actorResolvesTo(type, "terminal");
|
|
@@ -45,11 +45,11 @@ export function registeredTerminalActors() {
|
|
|
45
45
|
return registeredActorsOn("terminal");
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
|
-
* The declared fan-out
|
|
48
|
+
* The declared fan-out participant count on the computer-use route: a `lanes[]` roster's length, else
|
|
49
49
|
* a homogeneous `count`, else 1. The single source of truth shared by the parser, the engine,
|
|
50
|
-
* and the pre-flight plan so the
|
|
50
|
+
* and the pre-flight plan so the participant count is computed the same way everywhere.
|
|
51
51
|
*/
|
|
52
|
-
export function
|
|
52
|
+
export function computerUseParticipantCount(config) {
|
|
53
53
|
const actor = config.actors[0];
|
|
54
54
|
if (actor?.lanes !== undefined) {
|
|
55
55
|
return actor.lanes.length;
|
|
@@ -57,31 +57,30 @@ export function cuaLaneCount(config) {
|
|
|
57
57
|
return actor?.count ?? 1;
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
|
-
* A participant's id: its declared roster id, else `lane-NN` (independent
|
|
61
|
-
* (shared-world
|
|
62
|
-
* routes that name participants both call this, so a filled recipient names a participant that
|
|
60
|
+
* A participant's id: its declared roster id, else `lane-NN` (independent participants) or `role-NN`
|
|
61
|
+
* (shared-world participants) from its 0-based position. The parser's filled email recipients and
|
|
62
|
+
* the routes that name participants both call this, so a filled recipient names a participant that
|
|
63
63
|
* runs.
|
|
64
64
|
*/
|
|
65
65
|
export function participantIdAt(index, declared, kind) {
|
|
66
66
|
return declared ?? `${kind === "seat" ? "role" : "lane"}-${String(index + 1).padStart(2, "0")}`;
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
|
-
* True when this config routes to the computer-use backend: an app-url subject whose first
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
* with unknown actors still hit its fail-closed ACTOR_UNSUPPORTED.)
|
|
69
|
+
* True when this config routes to the computer-use backend: an app-url subject whose first actor
|
|
70
|
+
* resolves to a registered computer-use actor, or a clone subject on a hosted desktop whose first
|
|
71
|
+
* actor does. Single source of truth: routeOf and the warning logic both use it. (The app-url
|
|
72
|
+
* branch also checks the first actor, so a scripted-browser actor routes elsewhere. routeOf keeps a
|
|
73
|
+
* bare app-url fallback to the computer-use route so library-API configs with unknown actors still
|
|
74
|
+
* hit its fail-closed ACTOR_UNSUPPORTED.)
|
|
76
75
|
*/
|
|
77
76
|
export function isComputerUseComposition(config) {
|
|
78
77
|
// local-app drives the cua loop in-process (a custom executor + a non-vision provider), so it
|
|
79
|
-
// routes to the
|
|
78
|
+
// routes to the computer-use route exactly like an app-url subject with a computer-use actor.
|
|
80
79
|
if (config.subject.source === "app-url" || config.subject.source === "local-app") {
|
|
81
80
|
return actorResolvesToComputerUse(config.actors[0]?.type);
|
|
82
81
|
}
|
|
83
|
-
// desktop-cli hands the participant a terminal instead of a served page
|
|
84
|
-
// same
|
|
82
|
+
// desktop-cli hands the participant a terminal instead of a served page, but it is the
|
|
83
|
+
// same route: same desktop, same actor, same prompt fields. Leaving it out of this predicate told
|
|
85
84
|
// adopters their mission and persona were inert on the one route whose whole point is that a
|
|
86
85
|
// person reads a screen.
|
|
87
86
|
if (config.subject.source === "desktop-cli") {
|
|
@@ -95,34 +94,34 @@ export function isComputerUseComposition(config) {
|
|
|
95
94
|
actorResolvesToComputerUse(config.actors[0]?.type));
|
|
96
95
|
}
|
|
97
96
|
/**
|
|
98
|
-
* True when this config routes to the
|
|
99
|
-
* on a hosted desktop whose first actor resolves to a computer-use actor
|
|
97
|
+
* True when this config routes to the shared-world route: a clone or local-tree subject
|
|
98
|
+
* on a hosted desktop whose first actor resolves to a computer-use actor and that declares the
|
|
100
99
|
* `shared-world` topology. Mirror of isComputerUseComposition; the single source of truth shared by
|
|
101
|
-
* routeOf (which checks it
|
|
100
|
+
* routeOf (which checks it before the computer-use route) and the warning logic. Every
|
|
102
101
|
* shared-world study runs its participants at once (`execution.concurrency` >= 2). The same
|
|
103
|
-
* clone/local-tree × e2b-desktop × computer-use composition
|
|
104
|
-
* (the
|
|
102
|
+
* clone/local-tree × e2b-desktop × computer-use composition without `topology: shared-world` stays per-lane-worlds
|
|
103
|
+
* (the computer-use route); the topology declaration is the override switch.
|
|
105
104
|
*/
|
|
106
105
|
export function isSharedWorldComposition(config) {
|
|
107
106
|
return (isProvisionedSharedWorldComposition(config) || isExternalPublicSharedWorldComposition(config));
|
|
108
107
|
}
|
|
109
108
|
/** The getHost provisioned-subject shared-world shape (clone/local-tree served + exposed in-sandbox). */
|
|
110
|
-
function isProvisionedSharedWorldComposition(config) {
|
|
109
|
+
export function isProvisionedSharedWorldComposition(config) {
|
|
111
110
|
return ((config.subject.source === "clone" || config.subject.source === "local-tree") &&
|
|
112
111
|
config.subject.topology === "shared-world" &&
|
|
113
112
|
config.execution?.target === "e2b-desktop" &&
|
|
114
113
|
actorResolvesToComputerUse(config.actors[0]?.type));
|
|
115
114
|
}
|
|
116
115
|
/**
|
|
117
|
-
* The
|
|
118
|
-
* the shared plane
|
|
119
|
-
* e2b-desktop + `policies.allowPublicTargets: true`.
|
|
116
|
+
* The external-public shared-world shape: a real public deployment used directly as
|
|
117
|
+
* the shared plane: `source: app-url` + `topology: shared-world` + a computer-use actor on
|
|
118
|
+
* e2b-desktop + `policies.allowPublicTargets: true`. No getHost, no clone, no subject sandbox, no
|
|
120
119
|
* seed. The operator-ownership attestation `subject.publicTarget` is required (validated in
|
|
121
|
-
* externalPublicSharedWorldValidationReason, not here
|
|
120
|
+
* externalPublicSharedWorldValidationReason, not here; this predicate is the router only, so a
|
|
122
121
|
* half-declared external-public config still routes here to get its precise fail-closed reason
|
|
123
|
-
* rather than silently downgrading to the per-
|
|
122
|
+
* rather than silently downgrading to the per-participant computer-use route).
|
|
124
123
|
*/
|
|
125
|
-
function isExternalPublicSharedWorldComposition(config) {
|
|
124
|
+
export function isExternalPublicSharedWorldComposition(config) {
|
|
126
125
|
return (config.subject.source === "app-url" &&
|
|
127
126
|
config.subject.topology === "shared-world" &&
|
|
128
127
|
config.execution?.target === "e2b-desktop" &&
|
|
@@ -130,11 +129,11 @@ function isExternalPublicSharedWorldComposition(config) {
|
|
|
130
129
|
config.policies?.allowPublicTargets === true);
|
|
131
130
|
}
|
|
132
131
|
/**
|
|
133
|
-
* Resolve a shared-world
|
|
134
|
-
* same-origin absolute URL). Returns null when the
|
|
135
|
-
*
|
|
132
|
+
* Resolve a shared-world participant's entry URL from `serve.url` and its roster entry's `entry`
|
|
133
|
+
* (a relative path or a same-origin absolute URL). Returns null when the result is not a
|
|
134
|
+
* same-origin loopback URL, so a participant only ever drives the in-sandbox app.
|
|
136
135
|
*/
|
|
137
|
-
export function
|
|
136
|
+
export function resolveEntryUrl(serveUrl, entry) {
|
|
138
137
|
if (entry === undefined || entry === "") {
|
|
139
138
|
return isLoopbackUrl(serveUrl) ? serveUrl : null;
|
|
140
139
|
}
|
|
@@ -156,7 +155,7 @@ export function resolveSeatUrl(serveUrl, entry) {
|
|
|
156
155
|
/**
|
|
157
156
|
* True when this config routes to the scripted-browser backend: an app-url subject whose
|
|
158
157
|
* first actor resolves to a registered scripted-browser actor (execution.target local or
|
|
159
|
-
* absent
|
|
158
|
+
* absent; the parse layer enforces that pairing). Mirror of isComputerUseComposition; the single
|
|
160
159
|
* source of truth for routeOf and the warning logic.
|
|
161
160
|
*/
|
|
162
161
|
export function isScriptedBrowserComposition(config) {
|
|
@@ -172,43 +171,42 @@ export function isProvisionedScriptedBrowserComposition(config) {
|
|
|
172
171
|
}
|
|
173
172
|
/**
|
|
174
173
|
* True when this config routes to the terminal-product backend: a terminal-product subject whose
|
|
175
|
-
* first actor resolves to a registered terminal actor (execution.target e2b-terminal or absent
|
|
174
|
+
* first actor resolves to a registered terminal actor (execution.target e2b-terminal or absent;
|
|
176
175
|
* the parse layer enforces that pairing). Mirror of isComputerUseComposition/isScriptedBrowserComposition;
|
|
177
176
|
* the single source of truth for routeOf and the warning logic.
|
|
178
177
|
*/
|
|
179
178
|
export function isTerminalProductComposition(config) {
|
|
180
179
|
return (config.subject.source === "terminal-product" && actorResolvesToTerminal(config.actors[0]?.type));
|
|
181
180
|
}
|
|
182
|
-
// The package's older names for these predicates. routeOf is the route decision; each of these
|
|
183
|
-
// says whether a config composes that route with a registered actor of its kind.
|
|
184
|
-
/** @deprecated Use `routeOf`. This goes in the next minor. */
|
|
185
|
-
export function routesToComputerUse(config) {
|
|
186
|
-
return isComputerUseComposition(config);
|
|
187
|
-
}
|
|
188
|
-
/** @deprecated Use `routeOf`. This goes in the next minor. */
|
|
189
|
-
export function routesToSharedWorld(config) {
|
|
190
|
-
return isSharedWorldComposition(config);
|
|
191
|
-
}
|
|
192
|
-
/** @deprecated Use `routeOf`. This goes in the next minor. */
|
|
193
|
-
export function routesToProvisionedSharedWorld(config) {
|
|
194
|
-
return isProvisionedSharedWorldComposition(config);
|
|
195
|
-
}
|
|
196
|
-
/** @deprecated Use `routeOf`. This goes in the next minor. */
|
|
197
|
-
export function routesToExternalPublicSharedWorld(config) {
|
|
198
|
-
return isExternalPublicSharedWorldComposition(config);
|
|
199
|
-
}
|
|
200
181
|
/**
|
|
201
|
-
*
|
|
202
|
-
*
|
|
182
|
+
* The route a config takes. It never refuses: a config no route can run still gets the route
|
|
183
|
+
* whose own checks refuse it with the most precise reason.
|
|
203
184
|
*/
|
|
204
|
-
export function
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
185
|
+
export function routeOf(config) {
|
|
186
|
+
const source = config.subject.source;
|
|
187
|
+
// A scripted-browser actor on a loopback app or a provisioned clone replays committed steps.
|
|
188
|
+
if (isScriptedBrowserComposition(config))
|
|
189
|
+
return "scripted";
|
|
190
|
+
// A terminal-product subject goes to the terminal route even with an unregistered actor, so that
|
|
191
|
+
// route refuses the actor instead of another route running something else.
|
|
192
|
+
if (isTerminalProductComposition(config) || source === "terminal-product")
|
|
193
|
+
return "terminal";
|
|
194
|
+
// Checked before computer use: the same composition without the topology declaration runs
|
|
195
|
+
// independent participants.
|
|
196
|
+
if (isSharedWorldComposition(config))
|
|
197
|
+
return "shared-world";
|
|
198
|
+
// A CLI studied at a desktop is a computer-use study whose subject is a terminal window.
|
|
199
|
+
if (source === "desktop-cli")
|
|
200
|
+
return "computer-use";
|
|
201
|
+
// Every other app-url, clone, local-app or local-tree config goes to computer use, including
|
|
202
|
+
// ones with an unknown actor: that route refuses the actor, where the preview route would run
|
|
203
|
+
// no participant at all.
|
|
204
|
+
if (isComputerUseComposition(config) ||
|
|
205
|
+
source === "app-url" ||
|
|
206
|
+
source === "clone" ||
|
|
207
|
+
source === "local-app" ||
|
|
208
|
+
source === "local-tree")
|
|
209
|
+
return "computer-use";
|
|
210
|
+
// this-repo runs the synthetic preview.
|
|
211
|
+
return "preview";
|
|
214
212
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CuaParticipantPlan } from "../routes/computer-use/types.js";
|
|
2
2
|
import type { SubjectPhaseEvent } from "../subject/steps.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { InternalRunLabOptions } from "../run-lab.js";
|
|
4
4
|
import type { LabRoute } from "./plan.js";
|
|
5
5
|
import type { LabConfig } from "./types.js";
|
|
6
6
|
/** One participant, as the options' callbacks see it. */
|
|
@@ -46,11 +46,11 @@ export type LabEvent = {
|
|
|
46
46
|
};
|
|
47
47
|
/**
|
|
48
48
|
* The literal values to scrub from an onEvent warning: the provider keys and the declared subject
|
|
49
|
-
* env from every env the run could read (the `env` option
|
|
49
|
+
* env from every env the run could read (the `env` option and process.env), and the
|
|
50
50
|
* analysis API key. A callback can hold any of them, and its warning is appended after the route
|
|
51
51
|
* sanitized its own.
|
|
52
52
|
*/
|
|
53
|
-
export declare function knownSecretValues(config: LabConfig, options:
|
|
53
|
+
export declare function knownSecretValues(config: LabConfig, options: InternalRunLabOptions, forwardedEnv: Readonly<Record<string, string | undefined>> | undefined): string[];
|
|
54
54
|
/**
|
|
55
55
|
* The emitter the route hook bags call, or undefined without onEvent. It calls onEvent and never
|
|
56
56
|
* waits for it: a throw or a rejected promise becomes a run warning, scrubbed of `secretValues`.
|
|
@@ -58,12 +58,4 @@ export declare function knownSecretValues(config: LabConfig, options: RunLabOpti
|
|
|
58
58
|
export declare function labEventEmitter(onEvent: ((event: LabEvent) => void | Promise<void>) | undefined, warnings: string[], secretValues: () => string[]): ((event: LabEvent) => void) | undefined;
|
|
59
59
|
/** The computer-use participant plan as a `plan` event: ids, personas, devices and digests. */
|
|
60
60
|
export declare function planEvent(plan: CuaParticipantPlan): LabEvent;
|
|
61
|
-
/** A participant as the route hooks pass it, with the route's own field names. */
|
|
62
|
-
type HookParticipant = {
|
|
63
|
-
laneId: string;
|
|
64
|
-
laneIndex: number;
|
|
65
|
-
laneCount: number;
|
|
66
|
-
};
|
|
67
|
-
export declare const participantOf: (participant: HookParticipant) => ParticipantRef;
|
|
68
61
|
export declare function phaseEvent(event: SubjectPhaseEvent, target: SetupTarget): LabEvent;
|
|
69
|
-
export {};
|
|
@@ -4,20 +4,12 @@
|
|
|
4
4
|
import { redactText, scrubLiterals, toErrorMessage } from "../evidence/redaction.js";
|
|
5
5
|
/**
|
|
6
6
|
* The literal values to scrub from an onEvent warning: the provider keys and the declared subject
|
|
7
|
-
* env from every env the run could read (the `env` option
|
|
7
|
+
* env from every env the run could read (the `env` option and process.env), and the
|
|
8
8
|
* analysis API key. A callback can hold any of them, and its warning is appended after the route
|
|
9
9
|
* sanitized its own.
|
|
10
10
|
*/
|
|
11
11
|
export function knownSecretValues(config, options, forwardedEnv) {
|
|
12
|
-
const sources = [
|
|
13
|
-
forwardedEnv,
|
|
14
|
-
options.env,
|
|
15
|
-
options.cuaHooks?.env,
|
|
16
|
-
options.scriptedHooks?.env,
|
|
17
|
-
options.terminalHooks?.env,
|
|
18
|
-
options.sharedWorldHooks?.env,
|
|
19
|
-
process.env,
|
|
20
|
-
];
|
|
12
|
+
const sources = [forwardedEnv, options.env, process.env];
|
|
21
13
|
const names = ["OPENAI_API_KEY", "E2B_API_KEY", "CODEX_API_KEY", ...(config.subject.env ?? [])];
|
|
22
14
|
const values = new Set();
|
|
23
15
|
const add = (value) => {
|
|
@@ -28,7 +20,6 @@ export function knownSecretValues(config, options, forwardedEnv) {
|
|
|
28
20
|
for (const env of sources)
|
|
29
21
|
for (const name of names)
|
|
30
22
|
add(env?.[name]);
|
|
31
|
-
add(options.automaticAnalysis?.deps?.apiKey);
|
|
32
23
|
return [...values];
|
|
33
24
|
}
|
|
34
25
|
/**
|
|
@@ -77,11 +68,6 @@ export function planEvent(plan) {
|
|
|
77
68
|
})),
|
|
78
69
|
};
|
|
79
70
|
}
|
|
80
|
-
export const participantOf = (participant) => ({
|
|
81
|
-
id: participant.laneId,
|
|
82
|
-
index: participant.laneIndex,
|
|
83
|
-
count: participant.laneCount,
|
|
84
|
-
});
|
|
85
71
|
export function phaseEvent(event, target) {
|
|
86
72
|
return {
|
|
87
73
|
type: "subject-phase",
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { CuaExecutor, CuaProvider } from "../actors/computer-use/loop.js";
|
|
2
|
+
import type { E2BDesktopSandbox } from "../substrates/e2b/sdk.js";
|
|
3
|
+
import type { AdapterScorerModule } from "./adapter-scorer-loader.js";
|
|
4
|
+
import type { LabEvent, ParticipantRef, SetupTarget } from "./run-lab-events.js";
|
|
5
|
+
import type { LabConfig } from "./types.js";
|
|
6
|
+
/** What `createProvider` receives for each participant. */
|
|
7
|
+
export interface ProviderContext {
|
|
8
|
+
readonly config: LabConfig;
|
|
9
|
+
readonly participant: ParticipantRef;
|
|
10
|
+
readonly executor: CuaExecutor;
|
|
11
|
+
}
|
|
12
|
+
export type ProviderFactory = (ctx: ProviderContext) => Promise<CuaProvider>;
|
|
13
|
+
/** The caller's executor for an in-process run, built once for the run's single participant. */
|
|
14
|
+
export interface InProcessDriver {
|
|
15
|
+
executor: (ctx: {
|
|
16
|
+
config: LabConfig;
|
|
17
|
+
appUrl: string;
|
|
18
|
+
}) => Promise<CuaExecutor>;
|
|
19
|
+
}
|
|
20
|
+
interface StreamEventIds {
|
|
21
|
+
participantId: string;
|
|
22
|
+
/**
|
|
23
|
+
* The id of this participant's entry in run.json `simulations[]` (`sim-001`), which
|
|
24
|
+
* `streams[].simId` also holds.
|
|
25
|
+
*/
|
|
26
|
+
recordId: string;
|
|
27
|
+
streamId: string;
|
|
28
|
+
}
|
|
29
|
+
type StreamEventFields = (StreamEventIds & {
|
|
30
|
+
type: "ready";
|
|
31
|
+
sandboxId: string;
|
|
32
|
+
/** Runtime only: carries an auth key and must never be persisted. */
|
|
33
|
+
url: string;
|
|
34
|
+
}) | (StreamEventIds & {
|
|
35
|
+
type: "ended";
|
|
36
|
+
});
|
|
37
|
+
export type StreamEvent = StreamEventFields & {
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated Use `recordId`, which holds the same value. Reading it warns once per process; the
|
|
40
|
+
* next minor removes it.
|
|
41
|
+
*/
|
|
42
|
+
readonly simId: string;
|
|
43
|
+
};
|
|
44
|
+
/** A stream event as the routes report it, with `simId` as a getter over `recordId`. */
|
|
45
|
+
export declare function streamEvent(fields: StreamEventFields): StreamEvent;
|
|
46
|
+
/** The options with a typed home, common to every route. */
|
|
47
|
+
export interface RunLabHomes {
|
|
48
|
+
/** Keys and subject env for the run. Defaults to process.env. */
|
|
49
|
+
env?: Readonly<Record<string, string | undefined>>;
|
|
50
|
+
/**
|
|
51
|
+
* Scores the assembled evidence: computer use, shared world and terminal. A scorer written for
|
|
52
|
+
* one context passes through `browserScorer` or `terminalScorer`; one that narrows `ctx` at
|
|
53
|
+
* runtime passes as it is.
|
|
54
|
+
*/
|
|
55
|
+
scorer?: AdapterScorerModule;
|
|
56
|
+
/** E2B only. Runs after the sandbox exists and before provisioning, once per target. */
|
|
57
|
+
prepareDesktop?: (desktop: E2BDesktopSandbox, target: SetupTarget) => Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Passive. Never awaited; a throw or a rejected promise becomes a run warning. It observes and
|
|
60
|
+
* changes no output: subject phases still go to stderr.
|
|
61
|
+
*/
|
|
62
|
+
onEvent?: (event: LabEvent) => void | Promise<void>;
|
|
63
|
+
/** Awaited after a participant's live stream starts, and again after its sandbox is gone. */
|
|
64
|
+
onStream?: (event: StreamEvent) => Promise<void> | void;
|
|
65
|
+
/** Cancels post-run analysis only. */
|
|
66
|
+
analysisSignal?: AbortSignal;
|
|
67
|
+
}
|
|
68
|
+
/** Brain and in-process driving. An in-process executor needs a provider: it returns no frame. */
|
|
69
|
+
export type RunLabDriving = {
|
|
70
|
+
inProcess?: undefined;
|
|
71
|
+
createProvider?: ProviderFactory;
|
|
72
|
+
} | {
|
|
73
|
+
inProcess: InProcessDriver;
|
|
74
|
+
createProvider: ProviderFactory;
|
|
75
|
+
};
|
|
76
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// The public RunLabOptions homes that every route reads: env, scorer, prepareDesktop, onEvent,
|
|
2
|
+
// onStream and analysisSignal, and the brain and in-process driving computer use takes.
|
|
3
|
+
import { withDeprecatedFields } from "./deprecated-fields.js";
|
|
4
|
+
/** A stream event as the routes report it, with `simId` as a getter over `recordId`. */
|
|
5
|
+
export function streamEvent(fields) {
|
|
6
|
+
return withDeprecatedFields({ ...fields }, { name: "StreamEvent", code: "HUMANISH_STREAM_EVENT_FIELD_DEPRECATED" }, { simId: { replacement: "recordId", read: () => fields.recordId } });
|
|
7
|
+
}
|
|
@@ -1,82 +1,28 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { type CuaActorLabHooks } from "../routes/computer-use/types.js";
|
|
3
|
-
import type { E2BDesktopSandbox } from "../substrates/e2b/sdk.js";
|
|
4
|
-
import type { AdapterScorerModule } from "./adapter-scorer-loader.js";
|
|
5
|
-
import type { LabOutcome, RunLabOptions } from "../run-lab.js";
|
|
1
|
+
import type { InternalRunLabOptions, LabOutcome, RunLabOptions } from "../run-lab.js";
|
|
6
2
|
import { type LabRoute } from "./plan.js";
|
|
7
3
|
import type { LabConfig } from "./types.js";
|
|
8
|
-
import { type LabEvent
|
|
9
|
-
/** What `createProvider` receives for each participant. */
|
|
10
|
-
export interface ProviderContext {
|
|
11
|
-
readonly config: LabConfig;
|
|
12
|
-
readonly participant: ParticipantRef;
|
|
13
|
-
readonly executor: CuaExecutor;
|
|
14
|
-
}
|
|
15
|
-
type ProviderFactory = (ctx: ProviderContext) => Promise<CuaProvider>;
|
|
16
|
-
type StreamEvent =
|
|
17
|
-
/** Runtime only: `url` carries an auth key and must never be persisted. */
|
|
18
|
-
{
|
|
19
|
-
type: "ready";
|
|
20
|
-
participantId: string;
|
|
21
|
-
sandboxId: string;
|
|
22
|
-
simId: string;
|
|
23
|
-
streamId: string;
|
|
24
|
-
url: string;
|
|
25
|
-
} | {
|
|
26
|
-
type: "ended";
|
|
27
|
-
participantId: string;
|
|
28
|
-
simId: string;
|
|
29
|
-
streamId: string;
|
|
30
|
-
};
|
|
31
|
-
/** The options with a typed home, common to every route. */
|
|
32
|
-
export interface RunLabHomes {
|
|
33
|
-
/** Keys and subject env for the run. Defaults to process.env. */
|
|
34
|
-
env?: Readonly<Record<string, string | undefined>>;
|
|
35
|
-
/** Scores the assembled evidence: computer use, shared world and terminal. */
|
|
36
|
-
scorer?: AdapterScorerModule;
|
|
37
|
-
/** E2B only. Runs after the sandbox exists and before provisioning, once per target. */
|
|
38
|
-
prepareDesktop?: (desktop: E2BDesktopSandbox, target: SetupTarget) => Promise<void>;
|
|
39
|
-
/**
|
|
40
|
-
* Passive. Never awaited; a throw or a rejected promise becomes a run warning. It observes and
|
|
41
|
-
* changes no output: subject phases still go to stderr.
|
|
42
|
-
*/
|
|
43
|
-
onEvent?: (event: LabEvent) => void | Promise<void>;
|
|
44
|
-
/** Awaited after a participant's live stream starts, and again after its sandbox is gone. */
|
|
45
|
-
onStream?: (event: StreamEvent) => Promise<void> | void;
|
|
46
|
-
/** Cancels post-run analysis only. */
|
|
47
|
-
analysisSignal?: AbortSignal;
|
|
48
|
-
}
|
|
49
|
-
/** Brain and in-process driving. An in-process executor needs a provider: it returns no frame. */
|
|
50
|
-
export type RunLabDriving = {
|
|
51
|
-
inProcess?: undefined;
|
|
52
|
-
createProvider?: ProviderFactory;
|
|
53
|
-
} | {
|
|
54
|
-
inProcess: {
|
|
55
|
-
executor: (ctx: {
|
|
56
|
-
config: LabConfig;
|
|
57
|
-
appUrl: string;
|
|
58
|
-
}) => Promise<CuaExecutor>;
|
|
59
|
-
};
|
|
60
|
-
createProvider: ProviderFactory;
|
|
61
|
-
};
|
|
4
|
+
import { type LabEvent } from "./run-lab-events.js";
|
|
62
5
|
type Refusal = {
|
|
63
6
|
ok: false;
|
|
64
|
-
code: "
|
|
7
|
+
code: "HUMANISH_STUDY_OPTION_UNSUPPORTED";
|
|
65
8
|
message: string;
|
|
66
9
|
};
|
|
67
10
|
type Normalized = {
|
|
68
11
|
ok: true;
|
|
69
|
-
/** The options
|
|
70
|
-
options:
|
|
12
|
+
/** The options the route reads: onEvent removed, env copied. */
|
|
13
|
+
options: InternalRunLabOptions;
|
|
71
14
|
/** Filled by onEvent failures while the run runs; runLab appends them to the result. */
|
|
72
15
|
warnings: string[];
|
|
16
|
+
/** Calls onEvent and never waits for it, or undefined without onEvent. The routes report through it. */
|
|
17
|
+
emit: ((event: LabEvent) => void) | undefined;
|
|
73
18
|
};
|
|
19
|
+
/** The refusal for a field a JavaScript caller passed that RunLabOptions no longer has. */
|
|
20
|
+
export declare function removedOptionRefusal(options: RunLabOptions): Refusal | undefined;
|
|
74
21
|
/**
|
|
75
|
-
* Refuse what the route cannot honor,
|
|
76
|
-
* touches the filesystem, so a refusal leaves no run directory, receipt or sandbox.
|
|
22
|
+
* Refuse what the route cannot honor, copy env, and build the emitter onEvent receives through.
|
|
23
|
+
* Nothing here touches the filesystem, so a refusal leaves no run directory, receipt or sandbox.
|
|
77
24
|
*/
|
|
78
|
-
export declare function normalizeRunLabOptions(config: LabConfig, route: LabRoute, options:
|
|
79
|
-
export declare function scorerHooks(scorer: AdapterScorerModule): Pick<CuaActorLabHooks, "score" | "deriveFeedback" | "deriveArtifacts">;
|
|
25
|
+
export declare function normalizeRunLabOptions(config: LabConfig, route: LabRoute, options: InternalRunLabOptions): Normalized | Refusal;
|
|
80
26
|
/** A refusal in the route's own result envelope, before any run exists. */
|
|
81
27
|
export declare function optionRefusalOutcome(config: LabConfig, route: LabRoute, options: RunLabOptions, refusal: Refusal): LabOutcome;
|
|
82
28
|
export {};
|