humanish 0.104.3 → 0.106.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/AGENTS.md +89 -94
- package/ARCHITECTURE.md +146 -0
- package/CHANGELOG.md +502 -0
- package/CONTEXT.md +51 -0
- package/CONTRIBUTING.md +111 -9
- package/README.md +213 -124
- package/SECURITY.md +1 -1
- package/TELEMETRY.md +112 -0
- package/dist/actors/affordance.d.ts +56 -0
- package/dist/actors/affordance.js +155 -0
- package/dist/actors/agent-session.js +42 -0
- package/dist/actors/codex/app-server-actor-trace.d.ts +11 -0
- package/dist/actors/codex/app-server-actor-trace.js +211 -0
- package/dist/actors/codex/app-server-client.d.ts +39 -0
- package/dist/actors/codex/app-server-client.js +116 -0
- package/dist/actors/codex/app-server-trace.d.ts +154 -0
- package/dist/actors/codex/app-server-trace.js +424 -0
- package/dist/actors/codex/app-server-ui.d.ts +40 -0
- package/dist/actors/codex/app-server-ui.js +328 -0
- package/dist/actors/codex/app-server.d.ts +44 -0
- package/dist/actors/codex/app-server.js +268 -0
- package/dist/actors/codex/qualified-versions.d.ts +45 -0
- package/dist/actors/codex/qualified-versions.js +87 -0
- package/dist/actors/codex/restricted-executable.d.ts +17 -0
- package/dist/actors/codex/restricted-executable.js +147 -0
- package/dist/actors/codex/restricted-launch.d.ts +116 -0
- package/dist/actors/codex/restricted-launch.js +222 -0
- package/dist/actors/codex/restricted-participant-policy.d.ts +46 -0
- package/dist/actors/codex/restricted-participant-policy.js +82 -0
- package/dist/actors/codex/restricted-participant.d.ts +20 -0
- package/dist/actors/codex/restricted-participant.js +432 -0
- package/dist/actors/codex/restricted-policy.d.ts +70 -0
- package/dist/actors/codex/restricted-policy.js +326 -0
- package/dist/actors/codex/restricted-session.d.ts +65 -0
- package/dist/actors/codex/restricted-session.js +432 -0
- package/dist/actors/codex/restricted-transport.d.ts +73 -0
- package/dist/actors/codex/restricted-transport.js +335 -0
- package/dist/actors/codex/restricted-turn.d.ts +62 -0
- package/dist/actors/codex/restricted-turn.js +284 -0
- package/dist/actors/computer-use/actor.d.ts +77 -0
- package/dist/actors/computer-use/actor.js +78 -0
- package/dist/actors/computer-use/admission-limit.d.ts +12 -0
- package/dist/actors/computer-use/admission-limit.js +19 -0
- package/dist/actors/computer-use/executor-error.js +48 -0
- package/dist/actors/computer-use/loop/actions.d.ts +26 -0
- package/dist/actors/computer-use/loop/actions.js +245 -0
- package/dist/actors/computer-use/loop/backstop.d.ts +42 -0
- package/dist/actors/computer-use/loop/backstop.js +202 -0
- package/dist/actors/computer-use/loop/debrief.d.ts +19 -0
- package/dist/actors/computer-use/loop/debrief.js +164 -0
- package/dist/actors/computer-use/loop/ending.d.ts +86 -0
- package/dist/actors/computer-use/loop/ending.js +316 -0
- package/dist/actors/computer-use/loop/observation.d.ts +55 -0
- package/dist/actors/computer-use/loop/observation.js +246 -0
- package/dist/actors/computer-use/loop/output-limit.d.ts +11 -0
- package/dist/actors/computer-use/loop/output-limit.js +21 -0
- package/dist/actors/computer-use/loop/provider-call.d.ts +19 -0
- package/dist/actors/computer-use/loop/provider-call.js +208 -0
- package/dist/actors/computer-use/loop/race.d.ts +34 -0
- package/dist/actors/computer-use/loop/race.js +79 -0
- package/dist/actors/computer-use/loop/session.d.ts +77 -0
- package/dist/actors/computer-use/loop/session.js +135 -0
- package/dist/actors/computer-use/loop/spend.d.ts +30 -0
- package/dist/actors/computer-use/loop/spend.js +85 -0
- package/dist/actors/computer-use/loop/trace.d.ts +35 -0
- package/dist/actors/computer-use/loop/trace.js +140 -0
- package/dist/actors/computer-use/loop/types.d.ts +404 -0
- package/dist/actors/computer-use/loop/types.js +1 -0
- package/dist/actors/computer-use/loop/usage.d.ts +102 -0
- package/dist/actors/computer-use/loop/usage.js +355 -0
- package/dist/actors/computer-use/loop.d.ts +11 -0
- package/dist/actors/computer-use/loop.js +248 -0
- package/dist/actors/computer-use/openai-provider.d.ts +107 -0
- package/dist/actors/computer-use/openai-provider.js +472 -0
- package/dist/actors/computer-use/openai-requests.d.ts +35 -0
- package/dist/actors/computer-use/openai-requests.js +74 -0
- package/dist/actors/computer-use/openai-wire.d.ts +67 -0
- package/dist/actors/computer-use/openai-wire.js +365 -0
- package/dist/actors/computer-use/provider-error.d.ts +27 -0
- package/dist/actors/computer-use/provider-error.js +86 -0
- package/dist/actors/computer-use/speech.js +6 -0
- package/dist/actors/contract.d.ts +315 -0
- package/dist/actors/contract.js +201 -0
- package/dist/actors/goal-source.js +38 -0
- package/dist/actors/local-agent/claude-session.d.ts +43 -0
- package/dist/actors/local-agent/claude-session.js +370 -0
- package/dist/actors/local-agent/cli.d.ts +115 -0
- package/dist/actors/local-agent/cli.js +413 -0
- package/dist/actors/local-agent/readiness.d.ts +31 -0
- package/dist/actors/local-agent/readiness.js +45 -0
- package/dist/actors/openai-endpoint.d.ts +2 -0
- package/dist/actors/openai-endpoint.js +2 -0
- package/dist/actors/output-token-limit.js +4 -0
- package/dist/actors/reasoning-effort.js +33 -0
- package/dist/actors/registry.d.ts +59 -0
- package/dist/actors/registry.js +89 -0
- package/dist/actors/scripted-browser/actor.d.ts +49 -0
- package/dist/actors/scripted-browser/actor.js +428 -0
- package/dist/actors/scripted-browser/browser-command.d.ts +1 -0
- package/dist/actors/scripted-browser/browser-command.js +48 -0
- package/dist/actors/scripted-browser/journey.d.ts +9 -0
- package/dist/actors/scripted-browser/journey.js +171 -0
- package/dist/actors/scripted-browser/steps.d.ts +60 -0
- package/dist/actors/scripted-browser/steps.js +384 -0
- package/dist/actors/scripted-browser/types.d.ts +135 -0
- package/dist/actors/scripted-browser/types.js +26 -0
- package/dist/actors/stop-cause.d.ts +9 -0
- package/dist/actors/stop-cause.js +42 -0
- package/dist/actors/stop-conditions.d.ts +40 -0
- package/dist/actors/stop-conditions.js +65 -0
- package/dist/analysis/automatic-completion.d.ts +38 -0
- package/dist/analysis/automatic-completion.js +90 -0
- package/dist/analysis/automatic-config.d.ts +41 -0
- package/dist/analysis/automatic-config.js +135 -0
- package/dist/analysis/automatic.d.ts +17 -0
- package/dist/analysis/automatic.js +279 -0
- package/dist/analysis/codex-config.d.ts +8 -0
- package/dist/analysis/codex-config.js +69 -0
- package/dist/analysis/evidence-sources.d.ts +23 -0
- package/dist/analysis/evidence-sources.js +251 -0
- package/dist/analysis/evidence.d.ts +18 -0
- package/dist/analysis/evidence.js +482 -0
- package/dist/analysis/execute.d.ts +52 -0
- package/dist/analysis/execute.js +504 -0
- package/dist/analysis/image-tokens.d.ts +1 -0
- package/dist/analysis/image-tokens.js +41 -0
- package/dist/analysis/job.d.ts +97 -0
- package/dist/analysis/job.js +311 -0
- package/dist/analysis/load.d.ts +3 -0
- package/dist/analysis/load.js +11 -0
- package/dist/analysis/provider.d.ts +57 -0
- package/dist/analysis/provider.js +227 -0
- package/dist/analysis/restricted-codex.d.ts +19 -0
- package/dist/analysis/restricted-codex.js +23 -0
- package/dist/analysis/service.d.ts +72 -0
- package/dist/analysis/service.js +399 -0
- package/dist/analysis/sharing.d.ts +11 -0
- package/dist/analysis/sharing.js +44 -0
- package/dist/analysis/store-executions.d.ts +27 -0
- package/dist/analysis/store-executions.js +224 -0
- package/dist/analysis/store.d.ts +31 -0
- package/dist/analysis/store.js +315 -0
- package/dist/analysis/types.d.ts +217 -0
- package/dist/analysis/types.js +12 -0
- package/dist/analysis/validation.d.ts +225 -0
- package/dist/analysis/validation.js +562 -0
- package/dist/browser-control/client.d.ts +18 -0
- package/dist/browser-control/client.js +239 -0
- package/dist/browser-control/dispatcher.d.ts +19 -0
- package/dist/browser-control/dispatcher.js +221 -0
- package/dist/browser-control/protocol.d.ts +492 -0
- package/dist/browser-control/protocol.js +360 -0
- package/dist/browser-control/recording-transfer.d.ts +3 -0
- package/dist/browser-control/recording-transfer.js +48 -0
- package/dist/browser-control/transport.d.ts +27 -0
- package/dist/browser-control/transport.js +189 -0
- package/dist/cli/commands/analysis-signals.d.ts +7 -0
- package/dist/cli/commands/analysis-signals.js +25 -0
- package/dist/cli/commands/analyze.d.ts +3 -0
- package/dist/cli/commands/analyze.js +212 -0
- package/dist/cli/commands/codex.d.ts +3 -0
- package/dist/cli/commands/codex.js +145 -0
- package/dist/cli/commands/comms.d.ts +3 -0
- package/dist/cli/commands/comms.js +225 -0
- package/dist/cli/commands/feedback.d.ts +3 -0
- package/dist/cli/commands/feedback.js +138 -0
- package/dist/cli/commands/lab-format.d.ts +8 -0
- package/dist/cli/commands/lab-format.js +105 -0
- package/dist/cli/commands/lab-route-computer-use.d.ts +20 -0
- package/dist/cli/commands/lab-route-computer-use.js +251 -0
- package/dist/cli/commands/lab-route-open.d.ts +27 -0
- package/dist/cli/commands/lab-route-open.js +37 -0
- package/dist/cli/commands/lab-route-preview.d.ts +20 -0
- package/dist/cli/commands/lab-route-preview.js +74 -0
- package/dist/cli/commands/lab-route-run.d.ts +17 -0
- package/dist/cli/commands/lab-route-run.js +31 -0
- package/dist/cli/commands/lab-route-scripted.d.ts +19 -0
- package/dist/cli/commands/lab-route-scripted.js +50 -0
- package/dist/cli/commands/lab-route-shared-world.d.ts +20 -0
- package/dist/cli/commands/lab-route-shared-world.js +135 -0
- package/dist/cli/commands/lab-route-terminal.d.ts +19 -0
- package/dist/cli/commands/lab-route-terminal.js +49 -0
- package/dist/cli/commands/lab-run.d.ts +9 -0
- package/dist/cli/commands/lab-run.js +166 -0
- package/dist/cli/commands/lab-scorer.d.ts +30 -0
- package/dist/cli/commands/lab-scorer.js +17 -0
- package/dist/cli/commands/lab.d.ts +3 -0
- package/dist/cli/commands/lab.js +193 -0
- package/dist/cli/commands/observe.d.ts +4 -0
- package/dist/cli/commands/observe.js +345 -0
- package/dist/cli/commands/runs.d.ts +11 -0
- package/dist/cli/commands/runs.js +314 -0
- package/dist/cli/commands/setup.d.ts +11 -0
- package/dist/cli/commands/setup.js +325 -0
- package/dist/cli/commands/tui.d.ts +32 -0
- package/dist/cli/commands/tui.js +305 -0
- package/dist/cli/commands/watch.d.ts +3 -0
- package/dist/cli/commands/watch.js +245 -0
- package/dist/cli/doctor.d.ts +39 -0
- package/dist/cli/doctor.js +263 -0
- package/dist/cli/first-run-path.d.ts +67 -0
- package/dist/cli/first-run-path.js +150 -0
- package/dist/cli/io.d.ts +85 -0
- package/dist/cli/io.js +232 -0
- package/dist/cli/observer-follow.d.ts +56 -0
- package/dist/cli/observer-follow.js +160 -0
- package/dist/cli/orientation.d.ts +30 -0
- package/dist/cli/orientation.js +114 -0
- package/dist/cli/program.d.ts +15 -0
- package/dist/cli/program.js +338 -0
- package/dist/cli/secret-prompt.js +39 -0
- package/dist/cli/telemetry.js +351 -0
- package/dist/cli.js +2 -4
- package/dist/comms/agentmail.d.ts +29 -0
- package/dist/comms/agentmail.js +568 -0
- package/dist/comms/capture-surface.d.ts +54 -0
- package/dist/comms/capture-surface.js +468 -0
- package/dist/comms/catch-host.d.ts +52 -0
- package/dist/comms/catch-host.js +192 -0
- package/dist/comms/connections.d.ts +20 -0
- package/dist/comms/connections.js +116 -0
- package/dist/comms/email-catch.d.ts +49 -0
- package/dist/comms/email-catch.js +236 -0
- package/dist/comms/extract.d.ts +7 -0
- package/dist/comms/extract.js +65 -0
- package/dist/comms/fake-inbox.d.ts +39 -0
- package/dist/comms/fake-inbox.js +136 -0
- package/dist/comms/images.d.ts +7 -0
- package/dist/comms/images.js +53 -0
- package/dist/comms/lease-store.d.ts +91 -0
- package/dist/comms/lease-store.js +600 -0
- package/dist/comms/providers.d.ts +30 -0
- package/dist/comms/providers.js +24 -0
- package/dist/comms/receiving-common.d.ts +17 -0
- package/dist/comms/receiving-common.js +82 -0
- package/dist/comms/receiving-evidence.d.ts +4 -0
- package/dist/comms/receiving-evidence.js +59 -0
- package/dist/comms/receiving-recovery.d.ts +22 -0
- package/dist/comms/receiving-recovery.js +100 -0
- package/dist/comms/receiving-render.d.ts +16 -0
- package/dist/comms/receiving-render.js +409 -0
- package/dist/comms/receiving-runtime.d.ts +41 -0
- package/dist/comms/receiving-runtime.js +66 -0
- package/dist/comms/receiving-surface.d.ts +8 -0
- package/dist/comms/receiving-surface.js +156 -0
- package/dist/comms/receiving-types.d.ts +122 -0
- package/dist/comms/receiving-types.js +3 -0
- package/dist/comms/receiving.d.ts +33 -0
- package/dist/comms/receiving.js +508 -0
- package/dist/comms/sandbox-catch-script.d.ts +16 -0
- package/dist/comms/sandbox-catch-script.js +331 -0
- package/dist/comms/sandbox-catch.d.ts +214 -0
- package/dist/comms/sandbox-catch.js +451 -0
- package/dist/comms/setup.d.ts +65 -0
- package/dist/comms/setup.js +259 -0
- package/dist/comms/thread-evidence.d.ts +28 -0
- package/dist/comms/thread-evidence.js +30 -0
- package/dist/comms/types.d.ts +76 -0
- package/dist/comms/types.js +8 -0
- package/dist/deprecated.d.ts +90 -0
- package/dist/deprecated.js +106 -0
- package/dist/evidence/browser-hygiene.js +42 -0
- package/dist/evidence/desktop-recorder.d.ts +39 -0
- package/dist/evidence/desktop-recorder.js +340 -0
- package/dist/evidence/desktop-recording-artifact.d.ts +5 -0
- package/dist/evidence/desktop-recording-artifact.js +53 -0
- package/dist/evidence/desktop-recording-types.d.ts +27 -0
- package/dist/evidence/desktop-recording-types.js +16 -0
- package/dist/evidence/encoded-text.d.ts +27 -0
- package/dist/evidence/encoded-text.js +243 -0
- package/dist/evidence/frame-signature.d.ts +17 -0
- package/dist/evidence/frame-signature.js +111 -0
- package/dist/evidence/image.d.ts +24 -0
- package/dist/evidence/image.js +170 -0
- package/dist/evidence/plain-text.d.ts +8 -0
- package/dist/evidence/plain-text.js +16 -0
- package/dist/evidence/redaction.d.ts +110 -0
- package/dist/evidence/redaction.js +329 -0
- package/dist/feedback/draft.d.ts +58 -0
- package/dist/feedback/draft.js +309 -0
- package/dist/feedback/export-bundle.d.ts +6 -0
- package/dist/feedback/export-bundle.js +585 -0
- package/dist/feedback/export.d.ts +50 -0
- package/dist/feedback/export.js +392 -0
- package/dist/feedback/feedback.d.ts +37 -0
- package/dist/feedback/feedback.js +282 -0
- package/dist/feedback/proof.d.ts +8 -0
- package/dist/feedback/proof.js +56 -0
- package/dist/guest/bootstrap.d.ts +55 -0
- package/dist/guest/bootstrap.js +348 -0
- package/dist/guest/browser-tools.d.ts +8 -0
- package/dist/guest/browser-tools.js +72 -0
- package/dist/guest/chromium-text.d.ts +62 -0
- package/dist/guest/chromium-text.js +386 -0
- package/dist/guest/desktop-executor.d.ts +57 -0
- package/dist/guest/desktop-executor.js +256 -0
- package/dist/guest/desktop-keys.d.ts +8 -0
- package/dist/guest/desktop-keys.js +89 -0
- package/dist/guest/desktop-media.d.ts +70 -0
- package/dist/guest/desktop-media.js +385 -0
- package/dist/guest/desktop-native.d.ts +14 -0
- package/dist/guest/desktop-native.js +156 -0
- package/dist/guest/media-config.d.ts +15 -0
- package/dist/guest/media-config.js +16 -0
- package/dist/guest/runtime-desktop.d.ts +45 -0
- package/dist/guest/runtime-desktop.js +420 -0
- package/dist/guest/runtime-processes.d.ts +28 -0
- package/dist/guest/runtime-processes.js +94 -0
- package/dist/guest/runtime.d.ts +31 -0
- package/dist/guest/runtime.js +124 -0
- package/dist/guest-media-worker.js +184 -48
- package/dist/guest-runtime-main.js +23 -10
- package/dist/guest-runtime-revision.js +1 -1
- package/dist/index.d.ts +32 -83
- package/dist/index.js +21 -42
- package/dist/keys/env-file.d.ts +15 -0
- package/dist/keys/env-file.js +109 -0
- package/dist/keys/key-resolution.d.ts +58 -0
- package/dist/keys/key-resolution.js +389 -0
- package/dist/lab/adapter-extension.d.ts +75 -0
- package/dist/lab/adapter-extension.js +253 -0
- package/dist/lab/adapter-scorer-loader.d.ts +43 -0
- package/dist/lab/adapter-scorer-loader.js +130 -0
- package/dist/lab/bag-overrides.d.ts +18 -0
- package/dist/lab/bag-overrides.js +121 -0
- package/dist/lab/composition-rules.d.ts +5 -0
- package/dist/lab/composition-rules.js +283 -0
- package/dist/lab/config.d.ts +7 -0
- package/dist/lab/config.js +208 -0
- package/dist/lab/device-presets.d.ts +97 -0
- package/dist/lab/device-presets.js +87 -0
- package/dist/lab/discover.d.ts +65 -0
- package/dist/lab/discover.js +422 -0
- package/dist/lab/doctor.d.ts +39 -0
- package/dist/lab/doctor.js +233 -0
- package/dist/lab/init-paths.d.ts +5 -0
- package/dist/lab/init-paths.js +89 -0
- package/dist/lab/init-plan.d.ts +20 -0
- package/dist/lab/init-plan.js +163 -0
- package/dist/lab/init-templates.d.ts +28 -0
- package/dist/lab/init-templates.js +416 -0
- package/dist/lab/init.d.ts +39 -0
- package/dist/lab/init.js +287 -0
- package/dist/lab/keys.d.ts +2 -0
- package/dist/lab/keys.js +264 -0
- package/dist/lab/parse/actors.d.ts +14 -0
- package/dist/lab/parse/actors.js +453 -0
- package/dist/lab/parse/comms.d.ts +12 -0
- package/dist/lab/parse/comms.js +246 -0
- package/dist/lab/parse/execution.d.ts +19 -0
- package/dist/lab/parse/execution.js +356 -0
- package/dist/lab/parse/subject-state.d.ts +30 -0
- package/dist/lab/parse/subject-state.js +179 -0
- package/dist/lab/parse/subject.d.ts +9 -0
- package/dist/lab/parse/subject.js +420 -0
- package/dist/lab/parse/values.d.ts +17 -0
- package/dist/lab/parse/values.js +65 -0
- package/dist/lab/participant-assignment.d.ts +12 -0
- package/dist/lab/participant-assignment.js +19 -0
- package/dist/lab/persona-resolve.d.ts +39 -0
- package/dist/lab/persona-resolve.js +118 -0
- package/dist/lab/persona.d.ts +39 -0
- package/dist/lab/persona.js +192 -0
- package/dist/lab/plan-base.d.ts +24 -0
- package/dist/lab/plan-base.js +113 -0
- package/dist/lab/plan-participants.d.ts +81 -0
- package/dist/lab/plan-participants.js +92 -0
- package/dist/lab/plan-types.d.ts +269 -0
- package/dist/lab/plan-types.js +5 -0
- package/dist/lab/plan.d.ts +27 -0
- package/dist/lab/plan.js +156 -0
- package/dist/lab/preflight-probes.d.ts +3 -0
- package/dist/lab/preflight-probes.js +312 -0
- package/dist/lab/preflight-result.d.ts +7 -0
- package/dist/lab/preflight-result.js +43 -0
- package/dist/lab/preflight.d.ts +95 -0
- package/dist/lab/preflight.js +117 -0
- package/dist/lab/route-inputs.d.ts +17 -0
- package/dist/lab/route-inputs.js +95 -0
- package/dist/lab/routing.d.ts +81 -0
- package/dist/lab/routing.js +214 -0
- package/dist/lab/run-lab-events.d.ts +69 -0
- package/dist/lab/run-lab-events.js +95 -0
- package/dist/lab/run-lab-options.d.ts +82 -0
- package/dist/lab/run-lab-options.js +399 -0
- package/dist/lab/summary.d.ts +60 -0
- package/dist/lab/summary.js +168 -0
- package/dist/lab/tasks.d.ts +91 -0
- package/dist/lab/tasks.js +139 -0
- package/dist/lab/types.d.ts +813 -0
- package/dist/lab/types.js +6 -0
- package/dist/lab/validation.d.ts +67 -0
- package/dist/lab/validation.js +387 -0
- package/dist/lab/warnings.d.ts +2 -0
- package/dist/lab/warnings.js +338 -0
- package/dist/observer/artifact.d.ts +23 -0
- package/dist/observer/artifact.js +235 -0
- package/dist/observer/data.d.ts +115 -0
- package/dist/observer/data.js +258 -0
- package/dist/observer/exposure.d.ts +64 -0
- package/dist/observer/exposure.js +143 -0
- package/dist/observer/http.js +50 -0
- package/dist/observer/library.js +190 -0
- package/dist/observer/listen.js +85 -0
- package/dist/observer/live.d.ts +9 -0
- package/dist/observer/live.js +25 -0
- package/dist/observer/pinned-files.d.ts +30 -0
- package/dist/observer/pinned-files.js +160 -0
- package/dist/observer/render.d.ts +69 -0
- package/dist/observer/render.js +350 -0
- package/dist/observer/run-inventory.d.ts +35 -0
- package/dist/observer/run-inventory.js +95 -0
- package/dist/observer/run-routes.d.ts +37 -0
- package/dist/observer/run-routes.js +373 -0
- package/dist/observer/serve.d.ts +97 -0
- package/dist/observer/serve.js +305 -0
- package/dist/observer/static.js +369 -0
- package/dist/observer/tunnel.js +112 -0
- package/dist/observer-app.html +9 -20
- package/dist/routes/computer-use/bundle-parts.d.ts +50 -0
- package/dist/routes/computer-use/bundle-parts.js +177 -0
- package/dist/routes/computer-use/bundle.d.ts +56 -0
- package/dist/routes/computer-use/bundle.js +184 -0
- package/dist/routes/computer-use/diagnostics.d.ts +38 -0
- package/dist/routes/computer-use/diagnostics.js +94 -0
- package/dist/routes/computer-use/e2b-desktop/comms.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/comms.js +225 -0
- package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +3 -0
- package/dist/routes/computer-use/e2b-desktop/desktop.js +91 -0
- package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/fidelity.js +156 -0
- package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +18 -0
- package/dist/routes/computer-use/e2b-desktop/prepare.js +198 -0
- package/dist/routes/computer-use/e2b-desktop/start.d.ts +14 -0
- package/dist/routes/computer-use/e2b-desktop/start.js +193 -0
- package/dist/routes/computer-use/e2b-desktop/state.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/state.js +69 -0
- package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +6 -0
- package/dist/routes/computer-use/e2b-desktop/teardown.js +152 -0
- package/dist/routes/computer-use/external-comms.d.ts +20 -0
- package/dist/routes/computer-use/external-comms.js +55 -0
- package/dist/routes/computer-use/fanout-bundle.d.ts +11 -0
- package/dist/routes/computer-use/fanout-bundle.js +274 -0
- package/dist/routes/computer-use/fanout-lanes.d.ts +15 -0
- package/dist/routes/computer-use/fanout-lanes.js +302 -0
- package/dist/routes/computer-use/in-process-desktop.d.ts +17 -0
- package/dist/routes/computer-use/in-process-desktop.js +40 -0
- package/dist/routes/computer-use/lanes.d.ts +35 -0
- package/dist/routes/computer-use/lanes.js +321 -0
- package/dist/routes/computer-use/legacy-lane-spec.d.ts +62 -0
- package/dist/routes/computer-use/legacy-lane-spec.js +39 -0
- package/dist/routes/computer-use/live-flush.d.ts +42 -0
- package/dist/routes/computer-use/live-flush.js +154 -0
- package/dist/routes/computer-use/local-tree-pack.d.ts +27 -0
- package/dist/routes/computer-use/local-tree-pack.js +47 -0
- package/dist/routes/computer-use/local-vm.d.ts +20 -0
- package/dist/routes/computer-use/local-vm.js +218 -0
- package/dist/routes/computer-use/participant-desktop.d.ts +63 -0
- package/dist/routes/computer-use/participant-desktop.js +33 -0
- package/dist/routes/computer-use/participant-facts.d.ts +6 -0
- package/dist/routes/computer-use/participant-facts.js +22 -0
- package/dist/routes/computer-use/participant-model.d.ts +30 -0
- package/dist/routes/computer-use/participant-model.js +222 -0
- package/dist/routes/computer-use/participant-prompt.d.ts +53 -0
- package/dist/routes/computer-use/participant-prompt.js +87 -0
- package/dist/routes/computer-use/participant-runs.d.ts +67 -0
- package/dist/routes/computer-use/participant-runs.js +255 -0
- package/dist/routes/computer-use/plan.d.ts +56 -0
- package/dist/routes/computer-use/plan.js +308 -0
- package/dist/routes/computer-use/preflight.d.ts +26 -0
- package/dist/routes/computer-use/preflight.js +85 -0
- package/dist/routes/computer-use/rerun-selection.d.ts +19 -0
- package/dist/routes/computer-use/rerun-selection.js +121 -0
- package/dist/routes/computer-use/result.d.ts +7 -0
- package/dist/routes/computer-use/result.js +292 -0
- package/dist/routes/computer-use/route.d.ts +33 -0
- package/dist/routes/computer-use/route.js +145 -0
- package/dist/routes/computer-use/run-lanes.d.ts +59 -0
- package/dist/routes/computer-use/run-lanes.js +135 -0
- package/dist/routes/computer-use/self-report.d.ts +21 -0
- package/dist/routes/computer-use/self-report.js +231 -0
- package/dist/routes/computer-use/setup.d.ts +136 -0
- package/dist/routes/computer-use/setup.js +371 -0
- package/dist/routes/computer-use/single-bundle.d.ts +97 -0
- package/dist/routes/computer-use/single-bundle.js +393 -0
- package/dist/routes/computer-use/subject-projection.d.ts +51 -0
- package/dist/routes/computer-use/subject-projection.js +159 -0
- package/dist/routes/computer-use/types.d.ts +539 -0
- package/dist/routes/computer-use/types.js +37 -0
- package/dist/routes/preview.d.ts +13 -0
- package/dist/routes/preview.js +36 -0
- package/dist/routes/scripted/bundle.d.ts +47 -0
- package/dist/routes/scripted/bundle.js +195 -0
- package/dist/routes/scripted/plan.d.ts +30 -0
- package/dist/routes/scripted/plan.js +95 -0
- package/dist/routes/scripted/result.d.ts +48 -0
- package/dist/routes/scripted/result.js +176 -0
- package/dist/routes/scripted/route.d.ts +28 -0
- package/dist/routes/scripted/route.js +218 -0
- package/dist/routes/scripted/scenario.d.ts +21 -0
- package/dist/routes/scripted/scenario.js +102 -0
- package/dist/routes/scripted/session-result.d.ts +8 -0
- package/dist/routes/scripted/session-result.js +60 -0
- package/dist/routes/scripted/setup.d.ts +45 -0
- package/dist/routes/scripted/setup.js +126 -0
- package/dist/routes/scripted/subject.d.ts +49 -0
- package/dist/routes/scripted/subject.js +156 -0
- package/dist/routes/scripted/surface-records.d.ts +26 -0
- package/dist/routes/scripted/surface-records.js +88 -0
- package/dist/routes/scripted/surface-sessions.d.ts +13 -0
- package/dist/routes/scripted/surface-sessions.js +40 -0
- package/dist/routes/scripted/types.d.ts +88 -0
- package/dist/routes/scripted/types.js +3 -0
- package/dist/routes/shared-world/bundle.d.ts +20 -0
- package/dist/routes/shared-world/bundle.js +446 -0
- package/dist/routes/shared-world/checkpoints.d.ts +25 -0
- package/dist/routes/shared-world/checkpoints.js +46 -0
- package/dist/routes/shared-world/comms.d.ts +68 -0
- package/dist/routes/shared-world/comms.js +176 -0
- package/dist/routes/shared-world/external-public.d.ts +21 -0
- package/dist/routes/shared-world/external-public.js +130 -0
- package/dist/routes/shared-world/handoff.d.ts +62 -0
- package/dist/routes/shared-world/handoff.js +348 -0
- package/dist/routes/shared-world/lobby-code.d.ts +25 -0
- package/dist/routes/shared-world/lobby-code.js +152 -0
- package/dist/routes/shared-world/plan.d.ts +27 -0
- package/dist/routes/shared-world/plan.js +174 -0
- package/dist/routes/shared-world/provenance.d.ts +27 -0
- package/dist/routes/shared-world/provenance.js +65 -0
- package/dist/routes/shared-world/provisioned.d.ts +57 -0
- package/dist/routes/shared-world/provisioned.js +505 -0
- package/dist/routes/shared-world/result.d.ts +18 -0
- package/dist/routes/shared-world/result.js +327 -0
- package/dist/routes/shared-world/route.d.ts +21 -0
- package/dist/routes/shared-world/route.js +277 -0
- package/dist/routes/shared-world/seat-records.d.ts +20 -0
- package/dist/routes/shared-world/seat-records.js +213 -0
- package/dist/routes/shared-world/seats.d.ts +38 -0
- package/dist/routes/shared-world/seats.js +208 -0
- package/dist/routes/shared-world/setup.d.ts +48 -0
- package/dist/routes/shared-world/setup.js +200 -0
- package/dist/routes/shared-world/types.d.ts +354 -0
- package/dist/routes/shared-world/types.js +29 -0
- package/dist/routes/terminal/adapter.d.ts +37 -0
- package/dist/routes/terminal/adapter.js +201 -0
- package/dist/routes/terminal/bundle.d.ts +79 -0
- package/dist/routes/terminal/bundle.js +305 -0
- package/dist/routes/terminal/credentials.d.ts +34 -0
- package/dist/routes/terminal/credentials.js +102 -0
- package/dist/routes/terminal/dry-run.d.ts +24 -0
- package/dist/routes/terminal/dry-run.js +157 -0
- package/dist/routes/terminal/encoding.js +79 -0
- package/dist/routes/terminal/ledger.d.ts +49 -0
- package/dist/routes/terminal/ledger.js +170 -0
- package/dist/routes/terminal/lifetime.d.ts +10 -0
- package/dist/routes/terminal/lifetime.js +22 -0
- package/dist/routes/terminal/live-finish.d.ts +31 -0
- package/dist/routes/terminal/live-finish.js +215 -0
- package/dist/routes/terminal/live-sandbox.d.ts +69 -0
- package/dist/routes/terminal/live-sandbox.js +452 -0
- package/dist/routes/terminal/persona.d.ts +20 -0
- package/dist/routes/terminal/persona.js +34 -0
- package/dist/routes/terminal/plan.d.ts +21 -0
- package/dist/routes/terminal/plan.js +115 -0
- package/dist/routes/terminal/recorder.d.ts +23 -0
- package/dist/routes/terminal/recorder.js +77 -0
- package/dist/routes/terminal/result.d.ts +47 -0
- package/dist/routes/terminal/result.js +114 -0
- package/dist/routes/terminal/route.d.ts +23 -0
- package/dist/routes/terminal/route.js +170 -0
- package/dist/routes/terminal/runtime-auth.d.ts +12 -0
- package/dist/routes/terminal/runtime-auth.js +23 -0
- package/dist/routes/terminal/runtime.d.ts +14 -0
- package/dist/routes/terminal/runtime.js +47 -0
- package/dist/routes/terminal/sandbox.d.ts +35 -0
- package/dist/routes/terminal/sandbox.js +126 -0
- package/dist/routes/terminal/session.d.ts +25 -0
- package/dist/routes/terminal/session.js +199 -0
- package/dist/routes/terminal/token-usage.d.ts +15 -0
- package/dist/routes/terminal/token-usage.js +93 -0
- package/dist/routes/terminal/trace.d.ts +40 -0
- package/dist/routes/terminal/trace.js +172 -0
- package/dist/routes/terminal/types.d.ts +342 -0
- package/dist/routes/terminal/types.js +31 -0
- package/dist/run/bundle-shape.d.ts +7 -0
- package/dist/run/bundle-shape.js +369 -0
- package/dist/run/bundle.d.ts +547 -0
- package/dist/run/bundle.js +44 -0
- package/dist/run/concurrency.js +24 -0
- package/dist/run/contained-output.d.ts +50 -0
- package/dist/run/contained-output.js +351 -0
- package/dist/run/cost-summary.d.ts +28 -0
- package/dist/run/cost-summary.js +213 -0
- package/dist/run/costs.js +140 -0
- package/dist/run/detail.d.ts +62 -0
- package/dist/run/detail.js +139 -0
- package/dist/run/dry-run-inputs.d.ts +9 -0
- package/dist/run/dry-run-inputs.js +90 -0
- package/dist/run/dry-run.d.ts +6 -0
- package/dist/run/dry-run.js +362 -0
- package/dist/run/feedback-shape.d.ts +7 -0
- package/dist/run/feedback-shape.js +89 -0
- package/dist/run/git-state.d.ts +35 -0
- package/dist/run/git-state.js +316 -0
- package/dist/run/git-workspace.d.ts +32 -0
- package/dist/run/git-workspace.js +450 -0
- package/dist/run/judge.d.ts +210 -0
- package/dist/run/judge.js +240 -0
- package/dist/run/locate.d.ts +22 -0
- package/dist/run/locate.js +122 -0
- package/dist/run/outcomes.d.ts +31 -0
- package/dist/run/outcomes.js +210 -0
- package/dist/run/participant-records.d.ts +28 -0
- package/dist/run/participant-records.js +63 -0
- package/dist/run/participant.d.ts +29 -0
- package/dist/run/participant.js +12 -0
- package/dist/run/paths.d.ts +79 -0
- package/dist/run/paths.js +356 -0
- package/dist/run/preflight-receipts.d.ts +46 -0
- package/dist/run/preflight-receipts.js +173 -0
- package/dist/run/pricing.d.ts +124 -0
- package/dist/run/pricing.js +298 -0
- package/dist/run/project.d.ts +8 -0
- package/dist/run/project.js +103 -0
- package/dist/run/projection.d.ts +184 -0
- package/dist/run/projection.js +356 -0
- package/dist/run/reclaim.d.ts +41 -0
- package/dist/run/reclaim.js +183 -0
- package/dist/run/results.d.ts +88 -0
- package/dist/run/results.js +3 -0
- package/dist/run/run-index.d.ts +107 -0
- package/dist/run/run-index.js +243 -0
- package/dist/run/run.d.ts +103 -0
- package/dist/run/run.js +199 -0
- package/dist/run/sandbox-receipts.d.ts +31 -0
- package/dist/run/sandbox-receipts.js +49 -0
- package/dist/run/shared-world-evidence.d.ts +220 -0
- package/dist/run/shared-world-evidence.js +49 -0
- package/dist/run/shared-world-shape.d.ts +26 -0
- package/dist/run/shared-world-shape.js +181 -0
- package/dist/run/stats.d.ts +82 -0
- package/dist/run/stats.js +258 -0
- package/dist/run/status.d.ts +111 -0
- package/dist/run/status.js +176 -0
- package/dist/run/stored-runs.d.ts +38 -0
- package/dist/run/stored-runs.js +273 -0
- package/dist/run/stream-shape.d.ts +4 -0
- package/dist/run/stream-shape.js +160 -0
- package/dist/run/streams.d.ts +257 -0
- package/dist/run/streams.js +12 -0
- package/dist/run/study-files.d.ts +35 -0
- package/dist/run/study-files.js +164 -0
- package/dist/run/terminal-contract.d.ts +25 -0
- package/dist/run/terminal-contract.js +47 -0
- package/dist/run/text.d.ts +2 -0
- package/dist/run/text.js +4 -0
- package/dist/run/transient-comms-secrets.js +72 -0
- package/dist/run/type-guards.d.ts +6 -0
- package/dist/run/type-guards.js +18 -0
- package/dist/run-lab.d.ts +110 -0
- package/dist/run-lab.js +148 -0
- package/dist/subject/clone.d.ts +37 -0
- package/dist/subject/clone.js +62 -0
- package/dist/subject/desktop-cli.d.ts +17 -0
- package/dist/subject/desktop-cli.js +51 -0
- package/dist/subject/local-tree-archive.d.ts +82 -0
- package/dist/subject/local-tree-archive.js +431 -0
- package/dist/subject/local-tree.d.ts +28 -0
- package/dist/subject/local-tree.js +58 -0
- package/dist/subject/node-bootstrap.d.ts +12 -0
- package/dist/subject/node-bootstrap.js +66 -0
- package/dist/subject/runtime.d.ts +13 -0
- package/dist/subject/runtime.js +50 -0
- package/dist/subject/serve.d.ts +39 -0
- package/dist/subject/serve.js +249 -0
- package/dist/subject/state.d.ts +23 -0
- package/dist/subject/state.js +58 -0
- package/dist/subject/steps.d.ts +37 -0
- package/dist/subject/steps.js +39 -0
- package/dist/substrates/command-failure.d.ts +23 -0
- package/dist/substrates/command-failure.js +45 -0
- package/dist/substrates/desktop-session.d.ts +41 -0
- package/dist/substrates/desktop-session.js +59 -0
- package/dist/substrates/detached.d.ts +55 -0
- package/dist/substrates/detached.js +139 -0
- package/dist/substrates/e2b/cdp-probe.d.ts +99 -0
- package/dist/substrates/e2b/cdp-probe.js +556 -0
- package/dist/substrates/e2b/desktop-browser.d.ts +81 -0
- package/dist/substrates/e2b/desktop-browser.js +410 -0
- package/dist/substrates/e2b/desktop-cdp.d.ts +77 -0
- package/dist/substrates/e2b/desktop-cdp.js +211 -0
- package/dist/substrates/e2b/desktop-executor.d.ts +92 -0
- package/dist/substrates/e2b/desktop-executor.js +302 -0
- package/dist/substrates/e2b/desktop-geometry.d.ts +83 -0
- package/dist/substrates/e2b/desktop-geometry.js +331 -0
- package/dist/substrates/e2b/desktop-media.d.ts +29 -0
- package/dist/substrates/e2b/desktop-media.js +151 -0
- package/dist/substrates/e2b/desktop-recording.d.ts +18 -0
- package/dist/substrates/e2b/desktop-recording.js +238 -0
- package/dist/substrates/e2b/desktop-resources.d.ts +11 -0
- package/dist/substrates/e2b/desktop-resources.js +35 -0
- package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +15 -0
- package/dist/substrates/e2b/desktop-screenshot-cleanup.js +66 -0
- package/dist/substrates/e2b/lifetime.d.ts +12 -0
- package/dist/substrates/e2b/lifetime.js +18 -0
- package/dist/substrates/e2b/sandbox.d.ts +102 -0
- package/dist/substrates/e2b/sandbox.js +202 -0
- package/dist/substrates/e2b/sdk.d.ts +194 -0
- package/dist/substrates/e2b/sdk.js +168 -0
- package/dist/substrates/e2b/shell.d.ts +10 -0
- package/dist/substrates/e2b/shell.js +61 -0
- package/dist/substrates/local/captured-inbox.d.ts +6 -0
- package/dist/substrates/local/captured-inbox.js +87 -0
- package/dist/substrates/local/firecracker-desktop.d.ts +25 -0
- package/dist/substrates/local/firecracker-desktop.js +315 -0
- package/dist/substrates/local/runtime-config.d.ts +6 -0
- package/dist/substrates/local/runtime-config.js +91 -0
- package/dist/substrates/local/runtime-host.d.ts +30 -0
- package/dist/substrates/local/runtime-host.js +143 -0
- package/dist/substrates/local/runtime-release.d.ts +5 -0
- package/dist/substrates/local/runtime-release.js +32 -0
- package/dist/substrates/local/runtime-ssh.d.ts +9 -0
- package/dist/substrates/local/runtime-ssh.js +129 -0
- package/dist/substrates/local/runtime.d.ts +25 -0
- package/dist/substrates/local/runtime.js +190 -0
- package/dist/substrates/shell.d.ts +44 -0
- package/dist/substrates/shell.js +22 -0
- package/dist/tui/actions.d.ts +39 -0
- package/dist/tui/actions.js +203 -0
- package/dist/tui/contract.d.ts +144 -0
- package/dist/tui/contract.js +52 -0
- package/dist/tui/launch.js +172 -0
- package/dist/tui/project.d.ts +10 -0
- package/dist/tui/project.js +17 -0
- package/dist/tui-app.js +125 -125
- package/dist/verify/actor.d.ts +27 -0
- package/dist/verify/actor.js +292 -0
- package/dist/verify/artifacts.d.ts +47 -0
- package/dist/verify/artifacts.js +373 -0
- package/dist/verify/costs.d.ts +30 -0
- package/dist/verify/costs.js +129 -0
- package/dist/verify/liveness.d.ts +7 -0
- package/dist/verify/liveness.js +72 -0
- package/dist/verify/rerun.d.ts +3 -0
- package/dist/verify/rerun.js +46 -0
- package/dist/verify/shared-world-concurrent.d.ts +11 -0
- package/dist/verify/shared-world-concurrent.js +346 -0
- package/dist/verify/shared-world.d.ts +8 -0
- package/dist/verify/shared-world.js +295 -0
- package/dist/verify/subject.d.ts +17 -0
- package/dist/verify/subject.js +123 -0
- package/dist/verify/verify.d.ts +34 -0
- package/dist/verify/verify.js +333 -0
- package/docs/README.md +67 -0
- package/docs/architecture/actor-contract.md +215 -174
- package/docs/architecture/browser-control.md +51 -37
- package/docs/architecture/comms-inbox.md +8 -8
- package/docs/architecture/desktop-recording.md +2 -2
- package/docs/architecture/desktop-sessions.md +33 -21
- package/docs/architecture/external-public-shared-world.md +80 -64
- package/docs/architecture/github-feedback-loop.md +40 -27
- package/docs/architecture/guest-desktop.md +22 -10
- package/docs/architecture/local-browser-runtime.md +30 -21
- package/docs/architecture/observer-review.md +9 -9
- package/docs/architecture/observer.md +53 -57
- package/docs/architecture/participant-media.md +3 -3
- package/docs/architecture/project-layout.md +33 -137
- package/docs/architecture/real-email-receiving.md +7 -6
- package/docs/architecture/restricted-codex-analysis.md +211 -25
- package/docs/architecture/serve.md +89 -87
- package/docs/architecture/state-driven-executor.md +79 -64
- package/docs/architecture/task-protocol-support.md +18 -18
- package/docs/architecture/terminal-product-lane.md +92 -86
- package/docs/contracts/adapter-admission.md +8 -4
- package/docs/contracts/adapter-fixtures.md +6 -6
- package/docs/contracts/core.md +22 -24
- package/docs/contracts/feedback.md +33 -23
- package/docs/contracts/policy.md +28 -31
- package/docs/contracts/run-bundle.md +168 -82
- package/docs/contracts/schemas.md +594 -379
- package/docs/contracts/study-analysis.md +2 -2
- package/docs/contracts/study-costs.md +12 -12
- package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +36 -0
- package/docs/decisions/0002-observer-is-one-self-contained-file.md +30 -0
- package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +35 -0
- package/docs/decisions/0004-participant-desktops-stay-in-the-route.md +31 -0
- package/docs/decisions/README.md +16 -0
- package/docs/goals/current.md +22 -46
- package/docs/principles/actor-fidelity.md +51 -63
- package/docs/principles/engineering.md +81 -0
- package/docs/principles/invariants-and-defaults.md +48 -45
- package/docs/principles/self-driving-harness.md +11 -10
- package/docs/principles/three-roles.md +12 -13
- package/docs/product/automatic-analysis.md +39 -9
- package/docs/product/lobby-trivia-3player-external-public.md +14 -13
- package/docs/product/open-source-install-experience.md +34 -38
- package/docs/ramp/README.md +91 -213
- package/docs/release/open-source-readiness.md +5 -2
- package/docs/release/public-readiness-standard.md +1 -1
- package/examples/README.md +11 -0
- package/examples/participant/README.md +80 -0
- package/examples/participant/app.mjs +55 -0
- package/examples/participant/run.mjs +116 -0
- package/examples/scorer/README.md +29 -0
- package/examples/scorer/run.mjs +63 -0
- package/examples/scorer/scorer.mjs +20 -0
- package/package.json +61 -57
- package/skills/humanish/SKILL.md +112 -83
- package/skills/humanish/agents/openai.yaml +2 -2
- package/dist/actor-contract.d.ts +0 -288
- package/dist/actor-contract.js +0 -340
- package/dist/actor-contract.js.map +0 -1
- package/dist/actor-goal-source.js +0 -32
- package/dist/actor-goal-source.js.map +0 -1
- package/dist/actor-registry.d.ts +0 -77
- package/dist/actor-registry.js +0 -106
- package/dist/actor-registry.js.map +0 -1
- package/dist/actor-stop-cause.d.ts +0 -9
- package/dist/actor-stop-cause.js +0 -42
- package/dist/actor-stop-cause.js.map +0 -1
- package/dist/adapter-extension.d.ts +0 -76
- package/dist/adapter-extension.js +0 -273
- package/dist/adapter-extension.js.map +0 -1
- package/dist/adapter-scorer-loader.d.ts +0 -42
- package/dist/adapter-scorer-loader.js +0 -129
- package/dist/adapter-scorer-loader.js.map +0 -1
- package/dist/affordance.d.ts +0 -53
- package/dist/affordance.js +0 -145
- package/dist/affordance.js.map +0 -1
- package/dist/agent-session.js +0 -43
- package/dist/agent-session.js.map +0 -1
- package/dist/argv.d.ts +0 -1
- package/dist/argv.js +0 -8
- package/dist/argv.js.map +0 -1
- package/dist/artifact-reference.d.ts +0 -22
- package/dist/artifact-reference.js +0 -47
- package/dist/artifact-reference.js.map +0 -1
- package/dist/automatic-analysis-completion.d.ts +0 -25
- package/dist/automatic-analysis-completion.js +0 -56
- package/dist/automatic-analysis-completion.js.map +0 -1
- package/dist/automatic-analysis-config.d.ts +0 -38
- package/dist/automatic-analysis-config.js +0 -68
- package/dist/automatic-analysis-config.js.map +0 -1
- package/dist/automatic-study-analysis.d.ts +0 -17
- package/dist/automatic-study-analysis.js +0 -195
- package/dist/automatic-study-analysis.js.map +0 -1
- package/dist/browser-control-client.d.ts +0 -18
- package/dist/browser-control-client.js +0 -176
- package/dist/browser-control-client.js.map +0 -1
- package/dist/browser-control-dispatcher.d.ts +0 -19
- package/dist/browser-control-dispatcher.js +0 -147
- package/dist/browser-control-dispatcher.js.map +0 -1
- package/dist/browser-control-protocol.d.ts +0 -472
- package/dist/browser-control-protocol.js +0 -185
- package/dist/browser-control-protocol.js.map +0 -1
- package/dist/browser-control-recording-transfer.d.ts +0 -4
- package/dist/browser-control-recording-transfer.js +0 -42
- package/dist/browser-control-recording-transfer.js.map +0 -1
- package/dist/browser-control-transport.d.ts +0 -27
- package/dist/browser-control-transport.js +0 -177
- package/dist/browser-control-transport.js.map +0 -1
- package/dist/browser-evidence-hygiene.js +0 -43
- package/dist/browser-evidence-hygiene.js.map +0 -1
- package/dist/chrome-cdp-probe.d.ts +0 -97
- package/dist/chrome-cdp-probe.js +0 -536
- package/dist/chrome-cdp-probe.js.map +0 -1
- package/dist/claude-agent-sdk.d.ts +0 -94
- package/dist/claude-agent-sdk.js +0 -367
- package/dist/claude-agent-sdk.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/codex-app-server-ui.d.ts +0 -39
- package/dist/codex-app-server-ui.js +0 -357
- package/dist/codex-app-server-ui.js.map +0 -1
- package/dist/codex-app-server.d.ts +0 -144
- package/dist/codex-app-server.js +0 -754
- package/dist/codex-app-server.js.map +0 -1
- package/dist/command-failure.d.ts +0 -43
- package/dist/command-failure.js +0 -73
- package/dist/command-failure.js.map +0 -1
- package/dist/comms-agentmail.d.ts +0 -25
- package/dist/comms-agentmail.js +0 -418
- package/dist/comms-agentmail.js.map +0 -1
- package/dist/comms-catch-host.d.ts +0 -52
- package/dist/comms-catch-host.js +0 -178
- package/dist/comms-catch-host.js.map +0 -1
- package/dist/comms-connections.d.ts +0 -52
- package/dist/comms-connections.js +0 -123
- package/dist/comms-connections.js.map +0 -1
- package/dist/comms-email-catch.d.ts +0 -54
- package/dist/comms-email-catch.js +0 -212
- package/dist/comms-email-catch.js.map +0 -1
- package/dist/comms-evidence.d.ts +0 -27
- package/dist/comms-evidence.js +0 -31
- package/dist/comms-evidence.js.map +0 -1
- package/dist/comms-fake-inbox.d.ts +0 -45
- package/dist/comms-fake-inbox.js +0 -184
- package/dist/comms-fake-inbox.js.map +0 -1
- package/dist/comms-images.d.ts +0 -7
- package/dist/comms-images.js +0 -39
- package/dist/comms-images.js.map +0 -1
- package/dist/comms-inbox.d.ts +0 -66
- package/dist/comms-inbox.js +0 -389
- package/dist/comms-inbox.js.map +0 -1
- package/dist/comms-lease-store.d.ts +0 -91
- package/dist/comms-lease-store.js +0 -495
- package/dist/comms-lease-store.js.map +0 -1
- package/dist/comms-receiving-evidence.d.ts +0 -46
- package/dist/comms-receiving-evidence.js +0 -35
- package/dist/comms-receiving-evidence.js.map +0 -1
- package/dist/comms-receiving-inbox.d.ts +0 -16
- package/dist/comms-receiving-inbox.js +0 -410
- package/dist/comms-receiving-inbox.js.map +0 -1
- package/dist/comms-receiving-runtime.d.ts +0 -25
- package/dist/comms-receiving-runtime.js +0 -45
- package/dist/comms-receiving-runtime.js.map +0 -1
- package/dist/comms-receiving-types.d.ts +0 -98
- package/dist/comms-receiving-types.js +0 -2
- package/dist/comms-receiving-types.js.map +0 -1
- package/dist/comms-receiving.d.ts +0 -58
- package/dist/comms-receiving.js +0 -554
- package/dist/comms-receiving.js.map +0 -1
- package/dist/comms-sandbox-catch.d.ts +0 -229
- package/dist/comms-sandbox-catch.js +0 -737
- package/dist/comms-sandbox-catch.js.map +0 -1
- package/dist/comms-setup.d.ts +0 -40
- package/dist/comms-setup.js +0 -121
- package/dist/comms-setup.js.map +0 -1
- package/dist/comms-types.d.ts +0 -72
- package/dist/comms-types.js +0 -10
- package/dist/comms-types.js.map +0 -1
- package/dist/computer-use-actor.d.ts +0 -76
- package/dist/computer-use-actor.js +0 -68
- package/dist/computer-use-actor.js.map +0 -1
- package/dist/computer-use.d.ts +0 -429
- package/dist/computer-use.js +0 -1749
- package/dist/computer-use.js.map +0 -1
- package/dist/concurrency.js +0 -27
- package/dist/concurrency.js.map +0 -1
- package/dist/concurrent-shared-world-lab.d.ts +0 -186
- package/dist/concurrent-shared-world-lab.js +0 -2179
- package/dist/concurrent-shared-world-lab.js.map +0 -1
- package/dist/core/git-state.d.ts +0 -33
- package/dist/core/git-state.js +0 -277
- package/dist/core/git-state.js.map +0 -1
- package/dist/core/git-workspace.d.ts +0 -31
- package/dist/core/git-workspace.js +0 -447
- package/dist/core/git-workspace.js.map +0 -1
- package/dist/core/index.d.ts +0 -4
- package/dist/core/index.js +0 -3
- package/dist/core/index.js.map +0 -1
- package/dist/core/run-primitives.d.ts +0 -66
- package/dist/core/run-primitives.js +0 -120
- package/dist/core/run-primitives.js.map +0 -1
- package/dist/cua-actor-lab.d.ts +0 -855
- package/dist/cua-actor-lab.js +0 -3545
- package/dist/cua-actor-lab.js.map +0 -1
- package/dist/cua-admission-limit.d.ts +0 -12
- package/dist/cua-admission-limit.js +0 -20
- package/dist/cua-admission-limit.js.map +0 -1
- package/dist/cua-desktop-lane.d.ts +0 -35
- package/dist/cua-desktop-lane.js +0 -13
- package/dist/cua-desktop-lane.js.map +0 -1
- package/dist/cua-diagnostics.d.ts +0 -38
- package/dist/cua-diagnostics.js +0 -68
- package/dist/cua-diagnostics.js.map +0 -1
- package/dist/cua-executor-error.js +0 -48
- package/dist/cua-executor-error.js.map +0 -1
- package/dist/cua-provider-error.d.ts +0 -16
- package/dist/cua-provider-error.js +0 -35
- package/dist/cua-provider-error.js.map +0 -1
- package/dist/cua-speech.js +0 -2
- package/dist/cua-speech.js.map +0 -1
- package/dist/desktop-recorder.d.ts +0 -39
- package/dist/desktop-recorder.js +0 -226
- package/dist/desktop-recorder.js.map +0 -1
- package/dist/desktop-recording-artifact.d.ts +0 -5
- package/dist/desktop-recording-artifact.js +0 -54
- package/dist/desktop-recording-artifact.js.map +0 -1
- package/dist/desktop-recording-types.d.ts +0 -24
- package/dist/desktop-recording-types.js +0 -14
- package/dist/desktop-recording-types.js.map +0 -1
- package/dist/desktop-session.d.ts +0 -41
- package/dist/desktop-session.js +0 -47
- package/dist/desktop-session.js.map +0 -1
- package/dist/device-presets.d.ts +0 -67
- package/dist/device-presets.js +0 -55
- package/dist/device-presets.js.map +0 -1
- package/dist/doctor-lab.d.ts +0 -38
- package/dist/doctor-lab.js +0 -126
- package/dist/doctor-lab.js.map +0 -1
- package/dist/e2b-cua-desktop.d.ts +0 -3
- package/dist/e2b-cua-desktop.js +0 -708
- package/dist/e2b-cua-desktop.js.map +0 -1
- package/dist/e2b-cua-provisioning.d.ts +0 -314
- package/dist/e2b-cua-provisioning.js +0 -1219
- package/dist/e2b-cua-provisioning.js.map +0 -1
- package/dist/e2b-desktop-executor.d.ts +0 -101
- package/dist/e2b-desktop-executor.js +0 -297
- package/dist/e2b-desktop-executor.js.map +0 -1
- package/dist/e2b-desktop-launch.d.ts +0 -243
- package/dist/e2b-desktop-launch.js +0 -234
- package/dist/e2b-desktop-launch.js.map +0 -1
- package/dist/e2b-desktop-media.d.ts +0 -14
- package/dist/e2b-desktop-media.js +0 -58
- package/dist/e2b-desktop-media.js.map +0 -1
- package/dist/e2b-desktop-recording.d.ts +0 -16
- package/dist/e2b-desktop-recording.js +0 -162
- package/dist/e2b-desktop-recording.js.map +0 -1
- package/dist/e2b-desktop-resources.d.ts +0 -11
- package/dist/e2b-desktop-resources.js +0 -33
- package/dist/e2b-desktop-resources.js.map +0 -1
- package/dist/e2b-desktop-screenshot-cleanup.d.ts +0 -15
- package/dist/e2b-desktop-screenshot-cleanup.js +0 -67
- package/dist/e2b-desktop-screenshot-cleanup.js.map +0 -1
- package/dist/e2b-desktop-session.d.ts +0 -7
- package/dist/e2b-desktop-session.js +0 -29
- package/dist/e2b-desktop-session.js.map +0 -1
- package/dist/e2b-detached.d.ts +0 -53
- package/dist/e2b-detached.js +0 -130
- package/dist/e2b-detached.js.map +0 -1
- package/dist/e2b-terminal-lab.d.ts +0 -395
- package/dist/e2b-terminal-lab.js +0 -2041
- package/dist/e2b-terminal-lab.js.map +0 -1
- package/dist/env-file.d.ts +0 -14
- package/dist/env-file.js +0 -108
- package/dist/env-file.js.map +0 -1
- package/dist/export-bundle.d.ts +0 -7
- package/dist/export-bundle.js +0 -441
- package/dist/export-bundle.js.map +0 -1
- package/dist/export.d.ts +0 -49
- package/dist/export.js +0 -308
- package/dist/export.js.map +0 -1
- package/dist/feedback-proof.d.ts +0 -8
- package/dist/feedback-proof.js +0 -44
- package/dist/feedback-proof.js.map +0 -1
- package/dist/feedback.d.ts +0 -76
- package/dist/feedback.js +0 -496
- package/dist/feedback.js.map +0 -1
- package/dist/first-run-path.d.ts +0 -55
- package/dist/first-run-path.js +0 -136
- package/dist/first-run-path.js.map +0 -1
- package/dist/frame-signature.d.ts +0 -24
- package/dist/frame-signature.js +0 -128
- package/dist/frame-signature.js.map +0 -1
- package/dist/guest-bootstrap.d.ts +0 -55
- package/dist/guest-bootstrap.js +0 -285
- package/dist/guest-bootstrap.js.map +0 -1
- package/dist/guest-browser-tools.d.ts +0 -8
- package/dist/guest-browser-tools.js +0 -66
- package/dist/guest-browser-tools.js.map +0 -1
- package/dist/guest-chromium-text.d.ts +0 -27
- package/dist/guest-chromium-text.js +0 -281
- package/dist/guest-chromium-text.js.map +0 -1
- package/dist/guest-desktop-executor.d.ts +0 -22
- package/dist/guest-desktop-executor.js +0 -178
- package/dist/guest-desktop-executor.js.map +0 -1
- package/dist/guest-desktop-media.d.ts +0 -33
- package/dist/guest-desktop-media.js +0 -281
- package/dist/guest-desktop-media.js.map +0 -1
- package/dist/guest-desktop-native.d.ts +0 -14
- package/dist/guest-desktop-native.js +0 -131
- package/dist/guest-desktop-native.js.map +0 -1
- package/dist/guest-media-config.d.ts +0 -15
- package/dist/guest-media-config.js +0 -8
- package/dist/guest-media-config.js.map +0 -1
- package/dist/guest-media-worker.js.map +0 -1
- package/dist/guest-runtime-desktop.d.ts +0 -42
- package/dist/guest-runtime-desktop.js +0 -314
- package/dist/guest-runtime-desktop.js.map +0 -1
- package/dist/guest-runtime-main.js.map +0 -1
- package/dist/guest-runtime-revision.js.map +0 -1
- package/dist/guest-runtime.d.ts +0 -31
- package/dist/guest-runtime.js +0 -99
- package/dist/guest-runtime.js.map +0 -1
- package/dist/image-evidence.d.ts +0 -2
- package/dist/image-evidence.js +0 -47
- package/dist/image-evidence.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init-templates.d.ts +0 -25
- package/dist/init-templates.js +0 -542
- package/dist/init-templates.js.map +0 -1
- package/dist/init.d.ts +0 -38
- package/dist/init.js +0 -532
- package/dist/init.js.map +0 -1
- package/dist/key-resolution.d.ts +0 -67
- package/dist/key-resolution.js +0 -375
- package/dist/key-resolution.js.map +0 -1
- package/dist/lab-app-runner.d.ts +0 -78
- package/dist/lab-app-runner.js +0 -403
- package/dist/lab-app-runner.js.map +0 -1
- package/dist/lab-config.d.ts +0 -968
- package/dist/lab-config.js +0 -2714
- package/dist/lab-config.js.map +0 -1
- package/dist/lab-engine.d.ts +0 -97
- package/dist/lab-engine.js +0 -285
- package/dist/lab-engine.js.map +0 -1
- package/dist/lab-preflight.d.ts +0 -70
- package/dist/lab-preflight.js +0 -388
- package/dist/lab-preflight.js.map +0 -1
- package/dist/lab-summary.d.ts +0 -57
- package/dist/lab-summary.js +0 -126
- package/dist/lab-summary.js.map +0 -1
- package/dist/labs.d.ts +0 -59
- package/dist/labs.js +0 -385
- package/dist/labs.js.map +0 -1
- package/dist/listen.js +0 -84
- package/dist/listen.js.map +0 -1
- package/dist/local-agent-claude-session.d.ts +0 -45
- package/dist/local-agent-claude-session.js +0 -203
- package/dist/local-agent-claude-session.js.map +0 -1
- package/dist/local-agent-cli.d.ts +0 -121
- package/dist/local-agent-cli.js +0 -427
- package/dist/local-agent-cli.js.map +0 -1
- package/dist/local-captured-inbox.d.ts +0 -6
- package/dist/local-captured-inbox.js +0 -65
- package/dist/local-captured-inbox.js.map +0 -1
- package/dist/local-firecracker-desktop.d.ts +0 -23
- package/dist/local-firecracker-desktop.js +0 -191
- package/dist/local-firecracker-desktop.js.map +0 -1
- package/dist/local-firecracker-study.d.ts +0 -9
- package/dist/local-firecracker-study.js +0 -135
- package/dist/local-firecracker-study.js.map +0 -1
- package/dist/local-runtime-config.d.ts +0 -6
- package/dist/local-runtime-config.js +0 -60
- package/dist/local-runtime-config.js.map +0 -1
- package/dist/local-runtime-host.d.ts +0 -31
- package/dist/local-runtime-host.js +0 -128
- package/dist/local-runtime-host.js.map +0 -1
- package/dist/local-runtime-release.d.ts +0 -7
- package/dist/local-runtime-release.js +0 -33
- package/dist/local-runtime-release.js.map +0 -1
- package/dist/local-runtime-ssh.d.ts +0 -27
- package/dist/local-runtime-ssh.js +0 -91
- package/dist/local-runtime-ssh.js.map +0 -1
- package/dist/local-runtime.d.ts +0 -25
- package/dist/local-runtime.js +0 -133
- package/dist/local-runtime.js.map +0 -1
- package/dist/observer-data.d.ts +0 -114
- package/dist/observer-data.js +0 -224
- package/dist/observer-data.js.map +0 -1
- package/dist/observer-library.js +0 -191
- package/dist/observer-library.js.map +0 -1
- package/dist/observer-serve.d.ts +0 -99
- package/dist/observer-serve.js +0 -284
- package/dist/observer-serve.js.map +0 -1
- package/dist/observer-static.js +0 -357
- package/dist/observer-static.js.map +0 -1
- package/dist/observer.d.ts +0 -118
- package/dist/observer.js +0 -947
- package/dist/observer.js.map +0 -1
- package/dist/openai-responses-cu.d.ts +0 -158
- package/dist/openai-responses-cu.js +0 -714
- package/dist/openai-responses-cu.js.map +0 -1
- package/dist/orientation.d.ts +0 -29
- package/dist/orientation.js +0 -95
- package/dist/orientation.js.map +0 -1
- package/dist/oss-lab.d.ts +0 -55
- package/dist/oss-lab.js +0 -344
- package/dist/oss-lab.js.map +0 -1
- package/dist/oss-meta-lab-scoring.d.ts +0 -15
- package/dist/oss-meta-lab-scoring.js +0 -145
- package/dist/oss-meta-lab-scoring.js.map +0 -1
- package/dist/oss-meta-lab.d.ts +0 -287
- package/dist/oss-meta-lab.js +0 -4551
- package/dist/oss-meta-lab.js.map +0 -1
- package/dist/oss-remote-telemetry.d.ts +0 -77
- package/dist/oss-remote-telemetry.js +0 -403
- package/dist/oss-remote-telemetry.js.map +0 -1
- package/dist/output-token-limit.js +0 -5
- package/dist/output-token-limit.js.map +0 -1
- package/dist/participant-assignment.d.ts +0 -12
- package/dist/participant-assignment.js +0 -15
- package/dist/participant-assignment.js.map +0 -1
- package/dist/persona-resolve.d.ts +0 -44
- package/dist/persona-resolve.js +0 -109
- package/dist/persona-resolve.js.map +0 -1
- package/dist/persona.d.ts +0 -35
- package/dist/persona.js +0 -141
- package/dist/persona.js.map +0 -1
- package/dist/pi-agent-core.d.ts +0 -77
- package/dist/pi-agent-core.js +0 -207
- package/dist/pi-agent-core.js.map +0 -1
- package/dist/pricing.d.ts +0 -145
- package/dist/pricing.js +0 -277
- package/dist/pricing.js.map +0 -1
- package/dist/program.d.ts +0 -96
- package/dist/program.js +0 -4029
- package/dist/program.js.map +0 -1
- package/dist/reasoning-effort.js +0 -26
- package/dist/reasoning-effort.js.map +0 -1
- package/dist/reclaim.d.ts +0 -31
- package/dist/reclaim.js +0 -90
- package/dist/reclaim.js.map +0 -1
- package/dist/redaction.d.ts +0 -90
- package/dist/redaction.js +0 -294
- package/dist/redaction.js.map +0 -1
- package/dist/restricted-codex-analysis.d.ts +0 -15
- package/dist/restricted-codex-analysis.js +0 -13
- package/dist/restricted-codex-analysis.js.map +0 -1
- package/dist/restricted-codex-participant-policy.d.ts +0 -44
- package/dist/restricted-codex-participant-policy.js +0 -43
- package/dist/restricted-codex-participant-policy.js.map +0 -1
- package/dist/restricted-codex-participant-run.d.ts +0 -20
- package/dist/restricted-codex-participant-run.js +0 -79
- package/dist/restricted-codex-participant-run.js.map +0 -1
- package/dist/restricted-codex-participant.d.ts +0 -20
- package/dist/restricted-codex-participant.js +0 -250
- package/dist/restricted-codex-participant.js.map +0 -1
- package/dist/restricted-codex-policy.d.ts +0 -64
- package/dist/restricted-codex-policy.js +0 -176
- package/dist/restricted-codex-policy.js.map +0 -1
- package/dist/restricted-codex-session.d.ts +0 -44
- package/dist/restricted-codex-session.js +0 -657
- package/dist/restricted-codex-session.js.map +0 -1
- package/dist/restricted-codex-transport.d.ts +0 -69
- package/dist/restricted-codex-transport.js +0 -296
- package/dist/restricted-codex-transport.js.map +0 -1
- package/dist/run-detail.d.ts +0 -61
- package/dist/run-detail.js +0 -137
- package/dist/run-detail.js.map +0 -1
- package/dist/run-index.d.ts +0 -71
- package/dist/run-index.js +0 -206
- package/dist/run-index.js.map +0 -1
- package/dist/run-narration-secrets.js +0 -68
- package/dist/run-narration-secrets.js.map +0 -1
- package/dist/run-paths.d.ts +0 -56
- package/dist/run-paths.js +0 -355
- package/dist/run-paths.js.map +0 -1
- package/dist/run-projection.d.ts +0 -186
- package/dist/run-projection.js +0 -350
- package/dist/run-projection.js.map +0 -1
- package/dist/run-status.d.ts +0 -139
- package/dist/run-status.js +0 -218
- package/dist/run-status.js.map +0 -1
- package/dist/run.d.ts +0 -1255
- package/dist/run.js +0 -5947
- package/dist/run.js.map +0 -1
- package/dist/sandbox-receipts.d.ts +0 -19
- package/dist/sandbox-receipts.js +0 -51
- package/dist/sandbox-receipts.js.map +0 -1
- package/dist/screenshot-image.d.ts +0 -11
- package/dist/screenshot-image.js +0 -26
- package/dist/screenshot-image.js.map +0 -1
- package/dist/scripted-browser-actor.d.ts +0 -297
- package/dist/scripted-browser-actor.js +0 -1399
- package/dist/scripted-browser-actor.js.map +0 -1
- package/dist/scripted-browser-lab.d.ts +0 -121
- package/dist/scripted-browser-lab.js +0 -852
- package/dist/scripted-browser-lab.js.map +0 -1
- package/dist/secret-prompt.js +0 -36
- package/dist/secret-prompt.js.map +0 -1
- package/dist/selected-output-paths.d.ts +0 -52
- package/dist/selected-output-paths.js +0 -366
- package/dist/selected-output-paths.js.map +0 -1
- package/dist/serve-exposure.d.ts +0 -62
- package/dist/serve-exposure.js +0 -129
- package/dist/serve-exposure.js.map +0 -1
- package/dist/serve-http.js +0 -45
- package/dist/serve-http.js.map +0 -1
- package/dist/serve-tunnel.js +0 -113
- package/dist/serve-tunnel.js.map +0 -1
- package/dist/shared-world-lab.d.ts +0 -269
- package/dist/shared-world-lab.js +0 -1422
- package/dist/shared-world-lab.js.map +0 -1
- package/dist/source-archive.d.ts +0 -82
- package/dist/source-archive.js +0 -408
- package/dist/source-archive.js.map +0 -1
- package/dist/stats.d.ts +0 -82
- package/dist/stats.js +0 -219
- package/dist/stats.js.map +0 -1
- package/dist/stop-conditions.d.ts +0 -39
- package/dist/stop-conditions.js +0 -66
- package/dist/stop-conditions.js.map +0 -1
- package/dist/study-analysis-codex-config.d.ts +0 -11
- package/dist/study-analysis-codex-config.js +0 -34
- package/dist/study-analysis-codex-config.js.map +0 -1
- package/dist/study-analysis-engine.d.ts +0 -47
- package/dist/study-analysis-engine.js +0 -327
- package/dist/study-analysis-engine.js.map +0 -1
- package/dist/study-analysis-evidence.d.ts +0 -27
- package/dist/study-analysis-evidence.js +0 -660
- package/dist/study-analysis-evidence.js.map +0 -1
- package/dist/study-analysis-job.d.ts +0 -97
- package/dist/study-analysis-job.js +0 -214
- package/dist/study-analysis-job.js.map +0 -1
- package/dist/study-analysis-provider.d.ts +0 -40
- package/dist/study-analysis-provider.js +0 -170
- package/dist/study-analysis-provider.js.map +0 -1
- package/dist/study-analysis-service.d.ts +0 -59
- package/dist/study-analysis-service.js +0 -257
- package/dist/study-analysis-service.js.map +0 -1
- package/dist/study-analysis-sharing.d.ts +0 -11
- package/dist/study-analysis-sharing.js +0 -35
- package/dist/study-analysis-sharing.js.map +0 -1
- package/dist/study-analysis-store.d.ts +0 -47
- package/dist/study-analysis-store.js +0 -493
- package/dist/study-analysis-store.js.map +0 -1
- package/dist/study-analysis-validation.d.ts +0 -618
- package/dist/study-analysis-validation.js +0 -384
- package/dist/study-analysis-validation.js.map +0 -1
- package/dist/study-analysis.d.ts +0 -206
- package/dist/study-analysis.js +0 -4
- package/dist/study-analysis.js.map +0 -1
- package/dist/study-costs.js +0 -114
- package/dist/study-costs.js.map +0 -1
- package/dist/subject-runtime.d.ts +0 -23
- package/dist/subject-runtime.js +0 -70
- package/dist/subject-runtime.js.map +0 -1
- package/dist/tasks.d.ts +0 -90
- package/dist/tasks.js +0 -144
- package/dist/tasks.js.map +0 -1
- package/dist/telemetry.js +0 -324
- package/dist/telemetry.js.map +0 -1
- package/dist/terminal-agent-actor.d.ts +0 -41
- package/dist/terminal-agent-actor.js +0 -25
- package/dist/terminal-agent-actor.js.map +0 -1
- package/dist/terminal-encoding.js +0 -80
- package/dist/terminal-encoding.js.map +0 -1
- package/dist/terminal-node-bootstrap.d.ts +0 -4
- package/dist/terminal-node-bootstrap.js +0 -58
- package/dist/terminal-node-bootstrap.js.map +0 -1
- package/dist/terminal-participant-activity.d.ts +0 -6
- package/dist/terminal-participant-activity.js +0 -34
- package/dist/terminal-participant-activity.js.map +0 -1
- package/dist/terminal-runtime-auth.d.ts +0 -13
- package/dist/terminal-runtime-auth.js +0 -24
- package/dist/terminal-runtime-auth.js.map +0 -1
- package/dist/terminal-runtime.d.ts +0 -16
- package/dist/terminal-runtime.js +0 -42
- package/dist/terminal-runtime.js.map +0 -1
- package/dist/terminal-token-usage.d.ts +0 -15
- package/dist/terminal-token-usage.js +0 -94
- package/dist/terminal-token-usage.js.map +0 -1
- package/dist/tui-actions.d.ts +0 -39
- package/dist/tui-actions.js +0 -178
- package/dist/tui-actions.js.map +0 -1
- package/dist/tui-contract.d.ts +0 -141
- package/dist/tui-contract.js +0 -54
- package/dist/tui-contract.js.map +0 -1
- package/dist/tui-launch.js +0 -167
- package/dist/tui-launch.js.map +0 -1
- package/dist/tui-project.d.ts +0 -9
- package/dist/tui-project.js +0 -18
- package/dist/tui-project.js.map +0 -1
- package/docs/architecture/examples/state-driven-local-app/README.md +0 -80
- package/docs/architecture/examples/state-driven-local-app/app.mjs +0 -48
- package/docs/architecture/examples/state-driven-local-app/runner.mjs +0 -105
- package/docs/architecture/local-codex-tui-actor.md +0 -213
- package/docs/architecture/oss-lab-poc.md +0 -250
- package/docs/architecture/runtime-broker-core.md +0 -30
- package/docs/release/0.100.0-local-setup.md +0 -31
- package/docs/release/0.100.1-participant-continuity.md +0 -20
- package/docs/release/0.101.0-codex-ui-tools.md +0 -28
- package/docs/release/0.102.0-participant-media.md +0 -43
- package/docs/release/0.103.0-desktop-recording.md +0 -29
- package/docs/release/0.103.1-analysis-capture-allocation.md +0 -18
- package/docs/release/0.103.2-analysis-ending-context.md +0 -21
- package/docs/release/0.104.0-local-captured-inboxes.md +0 -29
- package/docs/release/0.104.1-recording-startup.md +0 -24
- package/docs/release/0.104.2-recording-timestamps.md +0 -32
- package/docs/release/0.104.3-local-smtp-catch.md +0 -15
- package/docs/release/0.20.0-external-public-shared-world.md +0 -43
- package/docs/release/0.84.0-redacted-evidence.md +0 -42
- package/docs/release/0.84.1-portable-feedback.md +0 -20
- package/docs/release/0.85.0-observer-review.md +0 -56
- package/docs/release/0.85.1-observer-continuity.md +0 -20
- package/docs/release/0.86.0-participant-evidence.md +0 -50
- package/docs/release/0.86.1-task-preflight-saved-recordings.md +0 -40
- package/docs/release/0.87.0-participant-endings-and-phone-review.md +0 -64
- package/docs/release/0.88.0-study-diagnostics.md +0 -43
- package/docs/release/0.88.1-completion-evidence-and-local-app.md +0 -79
- package/docs/release/0.88.2-sequential-study-budgets.md +0 -57
- package/docs/release/0.89.0-study-findings.md +0 -79
- package/docs/release/0.89.1-analysis-finished-notice.md +0 -24
- package/docs/release/0.90.0-automatic-analysis.md +0 -21
- package/docs/release/0.91.0-analysis-quality-and-defaults.md +0 -33
- package/docs/release/0.91.1-study-review-polish.md +0 -28
- package/docs/release/0.92.0-grid-playback.md +0 -22
- package/docs/release/0.93.0-global-playback.md +0 -26
- package/docs/release/0.93.1-observer-review-controls.md +0 -24
- package/docs/release/0.94.0-reliability.md +0 -48
- package/docs/release/0.95.0-connections-setup.md +0 -38
- package/docs/release/0.96.0-real-email-receiving.md +0 -47
- package/docs/release/0.96.1-browser-navigation.md +0 -22
- package/docs/release/0.97.0-codex-account-analysis.md +0 -45
- package/docs/release/0.98.0-local-browser-studies.md +0 -31
- package/docs/release/0.99.0-local-browser-mac.md +0 -34
- package/docs/release/0.99.1-action-recovery.md +0 -19
- /package/dist/{agent-session.d.ts → actors/agent-session.d.ts} +0 -0
- /package/dist/{cua-executor-error.d.ts → actors/computer-use/executor-error.d.ts} +0 -0
- /package/dist/{cua-speech.d.ts → actors/computer-use/speech.d.ts} +0 -0
- /package/dist/{actor-goal-source.d.ts → actors/goal-source.d.ts} +0 -0
- /package/dist/{output-token-limit.d.ts → actors/output-token-limit.d.ts} +0 -0
- /package/dist/{reasoning-effort.d.ts → actors/reasoning-effort.d.ts} +0 -0
- /package/dist/{secret-prompt.d.ts → cli/secret-prompt.d.ts} +0 -0
- /package/dist/{telemetry.d.ts → cli/telemetry.d.ts} +0 -0
- /package/dist/{browser-evidence-hygiene.d.ts → evidence/browser-hygiene.d.ts} +0 -0
- /package/dist/{serve-http.d.ts → observer/http.d.ts} +0 -0
- /package/dist/{observer-library.d.ts → observer/library.d.ts} +0 -0
- /package/dist/{listen.d.ts → observer/listen.d.ts} +0 -0
- /package/dist/{observer-static.d.ts → observer/static.d.ts} +0 -0
- /package/dist/{serve-tunnel.d.ts → observer/tunnel.d.ts} +0 -0
- /package/dist/{terminal-encoding.d.ts → routes/terminal/encoding.d.ts} +0 -0
- /package/dist/{concurrency.d.ts → run/concurrency.d.ts} +0 -0
- /package/dist/{study-costs.d.ts → run/costs.d.ts} +0 -0
- /package/dist/{run-narration-secrets.d.ts → run/transient-comms-secrets.d.ts} +0 -0
- /package/dist/{tui-launch.d.ts → tui/launch.d.ts} +0 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
// The participant runs a computer-use lab drives, built before anything is created: the sandbox
|
|
2
|
+
// and session budgets, the concurrency bound, each participant's prompt, bundle ids and artifact
|
|
3
|
+
// paths, and the public plan printed before any sandbox or provider call. loadCuaParticipants
|
|
4
|
+
// compiles the committed personas first and narrows a rerun to its selected participants.
|
|
5
|
+
import { isLocalBrowserLab, LOCAL_BROWSER_LIFETIME_MS, } from "../../substrates/local/runtime-config.js";
|
|
6
|
+
import { DEFAULT_STATE_STEP_TIMEOUT_MS } from "../../subject/state.js";
|
|
7
|
+
import { computerUseParticipants, } from "../../lab/plan-participants.js";
|
|
8
|
+
import { resolveParticipant } from "../../run/participant.js";
|
|
9
|
+
import {} from "../../lab/types.js";
|
|
10
|
+
import { scrubPersonaBrief } from "../../lab/persona.js";
|
|
11
|
+
import { redactText } from "../../evidence/redaction.js";
|
|
12
|
+
import {} from "../../run/bundle.js";
|
|
13
|
+
import { participantAssignment } from "../../lab/participant-assignment.js";
|
|
14
|
+
import { resolveCommittedPersonas } from "../../lab/persona-resolve.js";
|
|
15
|
+
import { CUA_FANOUT_STRATEGY, CUA_MAX_CONCURRENCY_ENV, DEFAULT_APP_URL_SESSION_TIMEOUT_MS, MIN_DERIVED_SESSION_TIMEOUT_MS, } from "./types.js";
|
|
16
|
+
import { MAX_SANDBOX_MS, SANDBOX_TIMEOUT_BUFFER_MS, SUBJECT_PROVISION_BUDGET_MS, } from "../../substrates/e2b/lifetime.js";
|
|
17
|
+
import { readPositiveInt } from "../../lab/parse/values.js";
|
|
18
|
+
import { digestUrl } from "./bundle-parts.js";
|
|
19
|
+
import { composeParticipantInstructions, DEFAULT_MISSION } from "./participant-prompt.js";
|
|
20
|
+
import { resolveCuaRerunSelection } from "./rerun-selection.js";
|
|
21
|
+
export function defaultSessionTimeoutMs(config) {
|
|
22
|
+
const provisionedRoute = config.subject.source === "clone" || config.subject.source === "local-tree";
|
|
23
|
+
if (!provisionedRoute)
|
|
24
|
+
return DEFAULT_APP_URL_SESSION_TIMEOUT_MS;
|
|
25
|
+
const stateBudgetMs = (config.subject.state?.seed ?? []).reduce((sum, step) => sum + (step.timeoutMs ?? DEFAULT_STATE_STEP_TIMEOUT_MS), 0);
|
|
26
|
+
const room = MAX_SANDBOX_MS - SUBJECT_PROVISION_BUDGET_MS - stateBudgetMs - SANDBOX_TIMEOUT_BUFFER_MS;
|
|
27
|
+
return Math.max(MIN_DERIVED_SESSION_TIMEOUT_MS, Math.min(DEFAULT_APP_URL_SESSION_TIMEOUT_MS, room));
|
|
28
|
+
}
|
|
29
|
+
/** Per-lane sandbox deadline (each lane owns its own desktop). Mirrors the single-lane formula
|
|
30
|
+
* verbatim so N=1 stays byte-stable: explicit sandboxTimeoutMs, else session budget + (clone
|
|
31
|
+
* or local-tree: provision budget + Σ state-step budgets) + the server-side
|
|
32
|
+
* reclamation buffer. Local-tree shares the clone route's provisioning budget: it swaps a
|
|
33
|
+
* git clone for an upload+extract, but the shared install/build/state/start/probe pipeline
|
|
34
|
+
* costs the same wall-clock room either way. */
|
|
35
|
+
export function resolveParticipantSandboxMs(config) {
|
|
36
|
+
if (isLocalBrowserLab(config))
|
|
37
|
+
return LOCAL_BROWSER_LIFETIME_MS;
|
|
38
|
+
const timeoutMs = config.execution?.timeoutMs ?? defaultSessionTimeoutMs(config);
|
|
39
|
+
const provisionedRoute = config.subject.source === "clone" || config.subject.source === "local-tree";
|
|
40
|
+
const stateBudgetMs = provisionedRoute
|
|
41
|
+
? (config.subject.state?.seed ?? []).reduce((sum, step) => sum + (step.timeoutMs ?? DEFAULT_STATE_STEP_TIMEOUT_MS), 0)
|
|
42
|
+
: 0;
|
|
43
|
+
return (config.execution?.desktop?.sandboxTimeoutMs ??
|
|
44
|
+
timeoutMs +
|
|
45
|
+
(provisionedRoute ? SUBJECT_PROVISION_BUDGET_MS + stateBudgetMs : 0) +
|
|
46
|
+
SANDBOX_TIMEOUT_BUFFER_MS);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The in-flight participant bound a lab declares. Defaults to the participant count — every
|
|
50
|
+
* declared participant runs at once, because a throttle nobody asked for silently turns "N actors
|
|
51
|
+
* live" into waves (#350); total session count and spend are the same either way, only wall-clock
|
|
52
|
+
* and simultaneity differ. A declared execution.concurrency is a CAP, clamped to [1, participants].
|
|
53
|
+
* The planner records it; the route may only lower it from the environment.
|
|
54
|
+
*/
|
|
55
|
+
export function boundedConcurrency(declared, participantCount) {
|
|
56
|
+
return Math.max(1, declared === undefined ? participantCount : Math.min(Math.max(1, declared), participantCount));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The planned bound, lowered by the env override. The override may only LOWER it (never raise
|
|
60
|
+
* concurrent paid desktops — invariant 3), and a lowering is reported via envLoweredFrom so the
|
|
61
|
+
* plan never silently disagrees with the manifest.
|
|
62
|
+
*/
|
|
63
|
+
function envLoweredConcurrency(planned, participantCount, env) {
|
|
64
|
+
const envLower = readPositiveInt(env[CUA_MAX_CONCURRENCY_ENV], 0);
|
|
65
|
+
if (envLower > 0 && envLower < planned) {
|
|
66
|
+
return {
|
|
67
|
+
bound: Math.max(1, Math.min(planned, envLower, participantCount)),
|
|
68
|
+
envLoweredFrom: planned,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return { bound: planned };
|
|
72
|
+
}
|
|
73
|
+
/** The same inputs from a config, for callers that have no plan. */
|
|
74
|
+
function plannedParticipantsOf(config, countOverride) {
|
|
75
|
+
const participants = computerUseParticipants(config, countOverride);
|
|
76
|
+
return {
|
|
77
|
+
participants,
|
|
78
|
+
concurrency: boundedConcurrency(config.execution?.concurrency, participants.length),
|
|
79
|
+
sessionBudgetMs: config.execution?.timeoutMs ?? defaultSessionTimeoutMs(config),
|
|
80
|
+
sandboxMs: resolveParticipantSandboxMs(config),
|
|
81
|
+
desktopCli: config.subject.source === "desktop-cli",
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/** Build the participant runs AND the public plan from the planned participants (pure). */
|
|
85
|
+
function participantRunsAndPlan(planned, opts = {}) {
|
|
86
|
+
const env = opts.env ?? {};
|
|
87
|
+
// Who each participant is (id, persona, focus, device, limits) comes from the plan; this adds
|
|
88
|
+
// what the route derives from it: the prompt, bundle ids and artifact paths.
|
|
89
|
+
const { participants } = planned;
|
|
90
|
+
const participantCount = participants.length;
|
|
91
|
+
const runs = participants.map((participant) => {
|
|
92
|
+
const mission = participant.assignment.mission ?? DEFAULT_MISSION;
|
|
93
|
+
const focus = participant.assignment.focus;
|
|
94
|
+
const tasks = participant.tasks;
|
|
95
|
+
const { device, personaId } = participant;
|
|
96
|
+
const resolvedPersona = personaId === undefined ? undefined : opts.personas?.get(personaId);
|
|
97
|
+
const composed = composeParticipantInstructions({
|
|
98
|
+
mission,
|
|
99
|
+
...(tasks === undefined ? {} : { tasks }),
|
|
100
|
+
...(personaId === undefined ? {} : { persona: personaId }),
|
|
101
|
+
...(resolvedPersona === undefined ? {} : { resolvedPersona }),
|
|
102
|
+
...(focus === undefined ? {} : { instruction: focus }),
|
|
103
|
+
device: { name: device.name, preset: device.preset },
|
|
104
|
+
...(planned.desktopCli ? { surface: "desktop-cli" } : {}),
|
|
105
|
+
});
|
|
106
|
+
const run = resolveParticipant(participant, {
|
|
107
|
+
persona: composed.persona,
|
|
108
|
+
instructions: composed.instructions,
|
|
109
|
+
evidenceAssignment: {
|
|
110
|
+
mission,
|
|
111
|
+
...(focus === undefined ? {} : { focus }),
|
|
112
|
+
...(tasks === undefined ? {} : { tasks: tasks.map(({ id, goal }) => ({ id, goal })) }),
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
...run,
|
|
117
|
+
screenshotDir: participantCount === 1 ? "" : participant.id,
|
|
118
|
+
traceArtifactPath: participantCount === 1 ? "actor.json" : `actors/${run.streamId}.json`,
|
|
119
|
+
};
|
|
120
|
+
});
|
|
121
|
+
const resolved = envLoweredConcurrency(planned.concurrency, participantCount, env);
|
|
122
|
+
const concurrency = resolved.bound;
|
|
123
|
+
const { sessionBudgetMs, sandboxMs } = planned;
|
|
124
|
+
const participantPlan = {
|
|
125
|
+
strategy: CUA_FANOUT_STRATEGY,
|
|
126
|
+
laneCount: participantCount,
|
|
127
|
+
concurrency,
|
|
128
|
+
...(resolved.envLoweredFrom === undefined
|
|
129
|
+
? {}
|
|
130
|
+
: { envLoweredConcurrencyFrom: resolved.envLoweredFrom }),
|
|
131
|
+
waves: Math.ceil(participantCount / concurrency),
|
|
132
|
+
perLaneSessionBudgetMs: sessionBudgetMs,
|
|
133
|
+
worstCaseSandboxMinutes: Math.round((participantCount * sandboxMs) / 60_000),
|
|
134
|
+
dryRun: opts.dryRun === true,
|
|
135
|
+
lanes: runs.map((spec) => ({
|
|
136
|
+
id: spec.planned.id,
|
|
137
|
+
...(spec.planned.labels.actorType === undefined
|
|
138
|
+
? {}
|
|
139
|
+
: { actorType: spec.planned.labels.actorType }),
|
|
140
|
+
...(spec.planned.labels.surface === undefined
|
|
141
|
+
? {}
|
|
142
|
+
: { surface: spec.planned.labels.surface }),
|
|
143
|
+
...(spec.planned.labels.caseGroup === undefined
|
|
144
|
+
? {}
|
|
145
|
+
: { caseGroup: spec.planned.labels.caseGroup }),
|
|
146
|
+
index: spec.planned.index + 1,
|
|
147
|
+
persona: spec.persona.id,
|
|
148
|
+
device: spec.planned.device.name,
|
|
149
|
+
resolution: spec.planned.device.resolution,
|
|
150
|
+
instructionDigest: spec.persona.promptDigest,
|
|
151
|
+
...(spec.planned.limits.reasoningEffort === undefined
|
|
152
|
+
? {}
|
|
153
|
+
: { reasoningEffort: spec.planned.limits.reasoningEffort }),
|
|
154
|
+
...(spec.planned.limits.maxOutputTokens === undefined
|
|
155
|
+
? {}
|
|
156
|
+
: { maxOutputTokens: spec.planned.limits.maxOutputTokens }),
|
|
157
|
+
...(spec.planned.targetUrl === undefined
|
|
158
|
+
? {}
|
|
159
|
+
: { targetDigest: digestUrl(spec.planned.targetUrl) }),
|
|
160
|
+
})),
|
|
161
|
+
};
|
|
162
|
+
return { runs, participantPlan };
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Pure pre-flight plan resolver (runs in dry-run AND live). Returns the lane table, the
|
|
166
|
+
* effective concurrency, the wave count, the per-lane session budget, and the worst-case total
|
|
167
|
+
* sandbox-minutes — BEFORE any sandbox or provider call. The same plan appears in dry-run,
|
|
168
|
+
* marked $0 (dryRun: true).
|
|
169
|
+
*/
|
|
170
|
+
export function resolveCuaParticipantPlan(config, opts = {}) {
|
|
171
|
+
const { countOverride, ...rest } = opts;
|
|
172
|
+
return participantRunsAndPlan(plannedParticipantsOf(config, countOverride), rest).participantPlan;
|
|
173
|
+
}
|
|
174
|
+
/** Print the lane plan to stderr BEFORE any sandbox/provider call (public-safe: ids, devices,
|
|
175
|
+
* digests, and budgets only — no prompt text, no secrets). */
|
|
176
|
+
export function emitPreflightPlan(participantPlan, labId) {
|
|
177
|
+
const lines = [];
|
|
178
|
+
lines.push(`humanish cua fan-out plan (${labId}): ${participantPlan.laneCount} participant(s), strategy ${participantPlan.strategy}, concurrency ${participantPlan.concurrency}${participantPlan.envLoweredConcurrencyFrom === undefined ? "" : ` (lowered from ${participantPlan.envLoweredConcurrencyFrom} by ${CUA_MAX_CONCURRENCY_ENV})`}, ${participantPlan.waves} wave(s).`);
|
|
179
|
+
lines.push(` session budget ${Math.round(participantPlan.perLaneSessionBudgetMs / 1000)}s per participant; worst-case ~${participantPlan.worstCaseSandboxMinutes} sandbox-minutes total${participantPlan.dryRun ? " (dry-run: $0)" : ""}.`);
|
|
180
|
+
for (const entry of participantPlan.lanes) {
|
|
181
|
+
lines.push(` - ${formatParticipantPlanEntry(entry)}`);
|
|
182
|
+
}
|
|
183
|
+
process.stderr.write(`${lines.join("\n")}\n`);
|
|
184
|
+
}
|
|
185
|
+
export function formatParticipantPlanEntry(entry) {
|
|
186
|
+
const taxonomy = [
|
|
187
|
+
entry.actorType ? `type=${entry.actorType}` : undefined,
|
|
188
|
+
entry.surface ? `surface=${entry.surface}` : undefined,
|
|
189
|
+
entry.caseGroup ? `case=${entry.caseGroup}` : undefined,
|
|
190
|
+
entry.reasoningEffort ? `effort=${entry.reasoningEffort}` : undefined,
|
|
191
|
+
].filter((part) => part !== undefined);
|
|
192
|
+
return `${entry.id}: persona=${entry.persona}${taxonomy.length > 0 ? ` ${taxonomy.join(" ")}` : ""} device=${entry.device} ${entry.resolution[0]}x${entry.resolution[1]} prompt#${entry.instructionDigest}${entry.targetDigest ? ` target#${entry.targetDigest}` : ""}`;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Compile the committed persona files the participants use, printing a warning for each one that
|
|
196
|
+
* is missing. A refusal that comes after this step reads them first, so a persona-file error still
|
|
197
|
+
* wins over it.
|
|
198
|
+
*/
|
|
199
|
+
export async function compileParticipantPersonas(projectRoot, personaIds) {
|
|
200
|
+
const resolution = await resolveCommittedPersonas(projectRoot, personaIds);
|
|
201
|
+
for (const warning of resolution.warnings) {
|
|
202
|
+
process.stderr.write(`humanish: ${warning}\n`);
|
|
203
|
+
}
|
|
204
|
+
return resolution.personas;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* The participants a computer-use run drives, loaded before anything is created: committed persona
|
|
208
|
+
* files read and compiled, the pure participant table built from the plan's participants, bound
|
|
209
|
+
* and budgets (the same for dry-run and live), and a rerun narrowed to its selected participants
|
|
210
|
+
* by reading the source run.
|
|
211
|
+
*/
|
|
212
|
+
export async function loadCuaParticipants(args) {
|
|
213
|
+
const { plan } = args;
|
|
214
|
+
const { participants } = plan.runner;
|
|
215
|
+
// Compile any committed personas BEFORE planning, so the plan builder stays pure and each lane's
|
|
216
|
+
// prompt carries real behavioral directives rather than a bare `Persona: <id>.` label (#381).
|
|
217
|
+
const personas = await compileParticipantPersonas(args.projectRoot, participants.map((participant) => participant.personaId));
|
|
218
|
+
const { runs: participantRuns, participantPlan } = participantRunsAndPlan({
|
|
219
|
+
participants,
|
|
220
|
+
concurrency: plan.concurrency,
|
|
221
|
+
sessionBudgetMs: plan.sessionBudgetMs,
|
|
222
|
+
sandboxMs: plan.sandboxMs,
|
|
223
|
+
desktopCli: plan.runner.subject.kind === "desktop-cli",
|
|
224
|
+
}, { env: args.env, dryRun: plan.dryRun, personas });
|
|
225
|
+
const rerun = plan.rerun;
|
|
226
|
+
if (!rerun)
|
|
227
|
+
return { ok: true, participantRuns, participantPlan };
|
|
228
|
+
const selected = await resolveCuaRerunSelection({
|
|
229
|
+
cwd: args.cwd,
|
|
230
|
+
labId: plan.labId,
|
|
231
|
+
sandboxMs: plan.sandboxMs,
|
|
232
|
+
sourceRunId: rerun.sourceRunId,
|
|
233
|
+
...(rerun.participantIds === undefined ? {} : { participantIds: [...rerun.participantIds] }),
|
|
234
|
+
participantRuns,
|
|
235
|
+
participantPlan,
|
|
236
|
+
});
|
|
237
|
+
if (!selected.ok) {
|
|
238
|
+
return { ok: false, code: "HUMANISH_CUA_LAB_RERUN_INVALID", message: selected.message };
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
ok: true,
|
|
242
|
+
participantRuns: selected.participantRuns,
|
|
243
|
+
participantPlan: selected.participantPlan,
|
|
244
|
+
rerunLineage: selected.rerun,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/** Scrub known secret values from each lane's declarative snapshot before any bundle uses it. */
|
|
248
|
+
export function sanitizeParticipantRuns(runs, scrub) {
|
|
249
|
+
for (const spec of runs) {
|
|
250
|
+
if (spec.evidenceAssignment)
|
|
251
|
+
spec.evidenceAssignment = participantAssignment(spec.evidenceAssignment, scrub);
|
|
252
|
+
spec.evidenceInstructions = redactText(scrub(spec.instructions));
|
|
253
|
+
spec.persona = scrubPersonaBrief(spec.persona, scrub);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type CuaActorDescriptor } from "../../actors/registry.js";
|
|
2
|
+
import type { ComputerUsePlan, RoutePlanResult, RouteRefusal } from "../../lab/plan-types.js";
|
|
3
|
+
import type { LabConfig, LabSubjectServe, LabSubjectState } from "../../lab/types.js";
|
|
4
|
+
import type { RunLabProvenance } from "../../run/status.js";
|
|
5
|
+
import { type CuaActorLabErrorCode, type CuaActorLabHooks, type RunCuaActorLabOptions } from "./types.js";
|
|
6
|
+
/** The error a computer-use lab returns before a run starts. */
|
|
7
|
+
export interface ComputerUseRefusal extends RouteRefusal<"computer-use", CuaActorLabErrorCode> {
|
|
8
|
+
/**
|
|
9
|
+
* Where the route returns it. "before-scope": analysis and tasks, returned before the run scope
|
|
10
|
+
* with no automatic-analysis record. "in-scope": after the cwd checks. "after-personas": after
|
|
11
|
+
* the route reads committed persona files, so a persona-file error still wins over the lane cap
|
|
12
|
+
* and in-process fan-out.
|
|
13
|
+
*/
|
|
14
|
+
readonly stage: "before-scope" | "in-scope" | "after-personas";
|
|
15
|
+
/** The registered actor id, once the registry check has passed. */
|
|
16
|
+
readonly actor?: string;
|
|
17
|
+
}
|
|
18
|
+
export type ComputerUsePlanResult = RoutePlanResult<ComputerUsePlan, ComputerUseRefusal>;
|
|
19
|
+
/** The registered descriptor for a planned actor id; planComputerUseLab checked the registry. */
|
|
20
|
+
export declare function cuaDescriptorOf(actor: string): CuaActorDescriptor;
|
|
21
|
+
/** Which subject route a computer-use lab takes, derived once from its config and hooks. */
|
|
22
|
+
export interface CuaSubjectRoute {
|
|
23
|
+
cloneRoute: boolean;
|
|
24
|
+
/** A CLI studied at a desktop: nothing cloned, no browser, a terminal instead. */
|
|
25
|
+
desktopCliRoute: boolean;
|
|
26
|
+
localTreeRoute: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Clone and local-tree both provision the subject in-sandbox (clone via git, local-tree via
|
|
29
|
+
* pack+upload) and share the install/build/state/start/probe pipeline, so every seam that gates
|
|
30
|
+
* on "does this route provision a subject" is keyed on this union.
|
|
31
|
+
*/
|
|
32
|
+
provisionedRoute: boolean;
|
|
33
|
+
localAppSubject: boolean;
|
|
34
|
+
/** A caller-supplied executor drives the subject in-process; no desktop is created. */
|
|
35
|
+
inProcessRoute: boolean;
|
|
36
|
+
serve: LabSubjectServe | undefined;
|
|
37
|
+
appUrl: string;
|
|
38
|
+
subjectRepo: string | undefined;
|
|
39
|
+
subjectEnvNames: string[];
|
|
40
|
+
}
|
|
41
|
+
export declare function cuaSubjectRoute(config: LabConfig, hooks: CuaActorLabHooks): CuaSubjectRoute;
|
|
42
|
+
/** The state a planned run's provisioned subject declares. Other subjects declare none. */
|
|
43
|
+
export declare function cuaDeclaredState(plan: ComputerUsePlan): LabSubjectState | undefined;
|
|
44
|
+
/** The route facts a planned run takes: its runner's desktop and subject. */
|
|
45
|
+
export declare function cuaSubjectRouteOf(plan: ComputerUsePlan): CuaSubjectRoute;
|
|
46
|
+
/**
|
|
47
|
+
* Plan a computer-use lab. It is called for any config handed to the computer-use runner, not only
|
|
48
|
+
* one routeOf sends here, so a config for another route gets this route's refusal.
|
|
49
|
+
*/
|
|
50
|
+
export declare function planComputerUseLab(config: LabConfig, input: {
|
|
51
|
+
readonly dryRun: boolean;
|
|
52
|
+
readonly lab?: RunLabProvenance;
|
|
53
|
+
readonly hooks?: CuaActorLabHooks;
|
|
54
|
+
readonly countOverride?: number;
|
|
55
|
+
readonly rerun?: RunCuaActorLabOptions["rerun"];
|
|
56
|
+
}): ComputerUsePlanResult;
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
// The computer-use route's plan: every configuration refusal the route makes before a run starts,
|
|
2
|
+
// in its order and with its codes, then the plan the run uses. What stays in the route reads
|
|
3
|
+
// external state: committed personas, a rerun's source run, keys, the local agent, subject env
|
|
4
|
+
// values, spend-cap prices and the comms catch.
|
|
5
|
+
import { resolveAutomaticAnalysis } from "../../analysis/automatic-config.js";
|
|
6
|
+
import { actorRegistry, isCuaActorDescriptor, } from "../../actors/registry.js";
|
|
7
|
+
import { isHttpUrl, isLoopbackUrl } from "../../lab/parse/subject.js";
|
|
8
|
+
import { subjectStateInvalidReason } from "../../lab/parse/subject-state.js";
|
|
9
|
+
import { brainOf, capsOf, desktopRequirements, planBase, provisionedSubject, } from "../../lab/plan-base.js";
|
|
10
|
+
import { computerUseParticipants, declaredTargets } from "../../lab/plan-participants.js";
|
|
11
|
+
import { MAX_CUA_LANES } from "../../lab/routing.js";
|
|
12
|
+
import { cloneTargetValidationReason, cuaLaneValidationReason, desktopMediaValidationReason, outputTokenLimitValidationReason, receivingEmailValidationReason, scenarioCapsValidationReason, taskProtocolValidationReason, } from "../../lab/validation.js";
|
|
13
|
+
import { isLocalBrowserLab } from "../../substrates/local/runtime-config.js";
|
|
14
|
+
import { boundedConcurrency, defaultSessionTimeoutMs, resolveParticipantSandboxMs, } from "./participant-runs.js";
|
|
15
|
+
import { MAX_SANDBOX_MS } from "../../substrates/e2b/lifetime.js";
|
|
16
|
+
import {} from "./types.js";
|
|
17
|
+
import { participantDesktopOf } from "./participant-desktop.js";
|
|
18
|
+
/** The registered descriptor for a planned actor id; planComputerUseLab checked the registry. */
|
|
19
|
+
export function cuaDescriptorOf(actor) {
|
|
20
|
+
const descriptor = actorRegistry[actor];
|
|
21
|
+
if (!descriptor || !isCuaActorDescriptor(descriptor))
|
|
22
|
+
throw new Error(`planned actor "${actor}" is not a registered computer-use actor`);
|
|
23
|
+
return descriptor;
|
|
24
|
+
}
|
|
25
|
+
export function cuaSubjectRoute(config, hooks) {
|
|
26
|
+
const cloneRoute = config.subject.source === "clone";
|
|
27
|
+
const localTreeRoute = config.subject.source === "local-tree";
|
|
28
|
+
const provisionedRoute = cloneRoute || localTreeRoute;
|
|
29
|
+
const serve = config.subject.serve;
|
|
30
|
+
return {
|
|
31
|
+
cloneRoute,
|
|
32
|
+
desktopCliRoute: config.subject.source === "desktop-cli",
|
|
33
|
+
localTreeRoute,
|
|
34
|
+
provisionedRoute,
|
|
35
|
+
localAppSubject: config.subject.source === "local-app",
|
|
36
|
+
inProcessRoute: hooks.buildExecutor !== undefined,
|
|
37
|
+
serve,
|
|
38
|
+
appUrl: (provisionedRoute ? serve?.url : config.subject.appUrl) ?? "",
|
|
39
|
+
subjectRepo: cloneRoute ? (config.subject.repos?.[0] ?? "") : undefined,
|
|
40
|
+
subjectEnvNames: provisionedRoute ? (config.subject.env ?? []) : [],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/** The state a planned run's provisioned subject declares. Other subjects declare none. */
|
|
44
|
+
export function cuaDeclaredState(plan) {
|
|
45
|
+
const { subject } = plan.runner;
|
|
46
|
+
return subject.kind === "clone" || subject.kind === "local-tree" ? subject.state : undefined;
|
|
47
|
+
}
|
|
48
|
+
/** The route facts a planned run takes: its runner's desktop and subject. */
|
|
49
|
+
export function cuaSubjectRouteOf(plan) {
|
|
50
|
+
const { desktop, subject } = plan.runner;
|
|
51
|
+
const provisioned = subject.kind === "clone" || subject.kind === "local-tree" ? subject : undefined;
|
|
52
|
+
return {
|
|
53
|
+
cloneRoute: subject.kind === "clone",
|
|
54
|
+
desktopCliRoute: subject.kind === "desktop-cli",
|
|
55
|
+
localTreeRoute: subject.kind === "local-tree",
|
|
56
|
+
provisionedRoute: provisioned !== undefined,
|
|
57
|
+
localAppSubject: subject.kind === "local-app",
|
|
58
|
+
inProcessRoute: desktop === "in-process",
|
|
59
|
+
serve: provisioned?.serve,
|
|
60
|
+
appUrl: provisioned?.serve.url ?? ("appUrl" in subject ? subject.appUrl : ""),
|
|
61
|
+
subjectRepo: subject.kind === "clone" ? subject.repo : undefined,
|
|
62
|
+
subjectEnvNames: [...(provisioned?.env ?? [])],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const invalid = (message) => ({
|
|
66
|
+
code: "HUMANISH_CUA_LAB_SUBJECT_INVALID",
|
|
67
|
+
message,
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* The first reason a computer-use lab cannot start, checked before any sandbox, key or provider
|
|
71
|
+
* is touched. The parser enforces most of these too; the engine repeats them for library callers
|
|
72
|
+
* that hand it a config directly. The groups run in this order, and each returns its first reason.
|
|
73
|
+
*/
|
|
74
|
+
function cuaLabRejection(config, hooks, subjectRoute) {
|
|
75
|
+
return (unsupportedDeclarationReason(config, hooks, subjectRoute) ??
|
|
76
|
+
subjectStructureReason(config, subjectRoute) ??
|
|
77
|
+
entryTargetReason(config, subjectRoute) ??
|
|
78
|
+
driverReason(config, hooks, subjectRoute) ??
|
|
79
|
+
rosterShapeReason(config));
|
|
80
|
+
}
|
|
81
|
+
/** A declaration this route cannot honor, for any subject or with the caller's own driver. */
|
|
82
|
+
function unsupportedDeclarationReason(config, hooks, { inProcessRoute }) {
|
|
83
|
+
const reason = desktopMediaValidationReason(config) ||
|
|
84
|
+
outputTokenLimitValidationReason(config) ||
|
|
85
|
+
scenarioCapsValidationReason(config);
|
|
86
|
+
if (reason)
|
|
87
|
+
return invalid(reason);
|
|
88
|
+
if (config.actors[0]?.maxOutputTokens !== undefined &&
|
|
89
|
+
(hooks.runSession || hooks.buildProvider || hooks.buildExecutor))
|
|
90
|
+
return invalid("maxOutputTokens cannot be enforced by a custom runSession/provider/executor route.");
|
|
91
|
+
const receivingReason = receivingEmailValidationReason(config);
|
|
92
|
+
if (receivingReason)
|
|
93
|
+
return invalid(receivingReason);
|
|
94
|
+
if (inProcessRoute && config.comms?.email?.kind === "real")
|
|
95
|
+
return invalid("Real email receiving requires hosted participant desktops.");
|
|
96
|
+
if (inProcessRoute && config.execution?.desktop?.media !== undefined)
|
|
97
|
+
return invalid("execution.desktop.media is not provisioned by a caller-supplied executor. Remove the declaration or use a hosted computer-use browser participant.");
|
|
98
|
+
if (inProcessRoute && config.execution?.desktop?.recording !== undefined)
|
|
99
|
+
return invalid("execution.desktop.recording is not provisioned by a caller-supplied executor.");
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
/** The subject's own shape: the clone target and repo, the local tree, and declared state. */
|
|
103
|
+
function subjectStructureReason(config, subjectRoute) {
|
|
104
|
+
const { cloneRoute, localTreeRoute, provisionedRoute, serve, subjectRepo } = subjectRoute;
|
|
105
|
+
const cloneTargetReason = cloneTargetValidationReason(config);
|
|
106
|
+
if (cloneTargetReason)
|
|
107
|
+
return invalid(cloneTargetReason);
|
|
108
|
+
if (cloneRoute &&
|
|
109
|
+
(!serve || !subjectRepo || !/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(subjectRepo)))
|
|
110
|
+
return invalid(!serve
|
|
111
|
+
? "clone subjects on the computer-use route require `subject.serve` (start + url) — the lab serves the app in-sandbox."
|
|
112
|
+
: `subject.repos[0] must be an owner/repo slug (got "${subjectRepo ?? ""}").`);
|
|
113
|
+
// A library caller that skips parseLabConfig gets the same fail-closed shape the parser
|
|
114
|
+
// enforces, naming which requirement is missing.
|
|
115
|
+
if (localTreeRoute && (!serve || config.execution?.target !== "e2b-desktop"))
|
|
116
|
+
return invalid(!serve
|
|
117
|
+
? "local-tree subjects on the computer-use route require `subject.serve` (start + url): the lab packs and serves the working tree in-sandbox."
|
|
118
|
+
: "local-tree subjects require `execution.target: e2b-desktop`: the packed working tree is provisioned and served inside a hosted desktop sandbox.");
|
|
119
|
+
if (config.subject.state) {
|
|
120
|
+
const stateReason = !provisionedRoute
|
|
121
|
+
? "`subject.state` applies only to clone subjects or local-tree subjects (the lab seeds the state it serves)."
|
|
122
|
+
: subjectStateInvalidReason(config.subject.state, config.subject.env);
|
|
123
|
+
if (stateReason)
|
|
124
|
+
return invalid(stateReason);
|
|
125
|
+
}
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Every URL a participant opens is loopback, unless an app-url subject allows public targets. A
|
|
130
|
+
* desktop-cli study has no entry target at all (the subject is a program on the machine, not an
|
|
131
|
+
* address), so the boundary is vacuous there rather than violated by an empty string.
|
|
132
|
+
*/
|
|
133
|
+
function entryTargetReason(config, subjectRoute) {
|
|
134
|
+
const { desktopCliRoute, provisionedRoute, localAppSubject, appUrl } = subjectRoute;
|
|
135
|
+
if (desktopCliRoute)
|
|
136
|
+
return undefined;
|
|
137
|
+
const allowPublicTargets = config.policies?.allowPublicTargets === true;
|
|
138
|
+
const entryTargets = [appUrl, ...declaredTargets(config)];
|
|
139
|
+
const entryTargetSafe = entryTargets.every((target) => provisionedRoute || localAppSubject
|
|
140
|
+
? isLoopbackUrl(target)
|
|
141
|
+
: allowPublicTargets
|
|
142
|
+
? isHttpUrl(target)
|
|
143
|
+
: isLoopbackUrl(target));
|
|
144
|
+
if (entryTargetSafe)
|
|
145
|
+
return undefined;
|
|
146
|
+
return {
|
|
147
|
+
code: "HUMANISH_CUA_LAB_SUBJECT_UNSAFE",
|
|
148
|
+
message: provisionedRoute || localAppSubject || !allowPublicTargets
|
|
149
|
+
? "subject.appUrl and any actors[0].lanes[].target entries must be loopback (127.0.0.1 or localhost) unless policies.allowPublicTargets is set for an app-url subject."
|
|
150
|
+
: "subject.appUrl and actors[0].lanes[].target entries must be valid http(s) URLs.",
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/** Something to drive the subject: the caller's executor with its provider, or a local desktop. */
|
|
154
|
+
function driverReason(config, hooks, { localAppSubject, inProcessRoute }) {
|
|
155
|
+
// A custom executor needs a custom provider too: the default OpenAI provider is vision-based
|
|
156
|
+
// and would fail closed against an executor that returns no screenshot.
|
|
157
|
+
if (hooks.buildExecutor !== undefined && hooks.buildProvider === undefined)
|
|
158
|
+
return {
|
|
159
|
+
code: "HUMANISH_CUA_LAB_EXECUTOR_NO_PROVIDER",
|
|
160
|
+
message: "cuaHooks.buildExecutor requires cuaHooks.buildProvider — a state-driven executor returns no screenshot, so it must be paired with a NON-vision provider (the default OpenAI computer-use provider is vision-based and would fail closed).",
|
|
161
|
+
};
|
|
162
|
+
// There is no built-in in-process driver for a local app.
|
|
163
|
+
if (localAppSubject && !inProcessRoute)
|
|
164
|
+
return {
|
|
165
|
+
code: "HUMANISH_CUA_LAB_LOCAL_APP_NO_EXECUTOR",
|
|
166
|
+
message: "subject.source: local-app has no built-in driver. Supply one through runLab(config, { inProcess: { executor }, createProvider }); a state-driven executor needs a non-vision provider.",
|
|
167
|
+
};
|
|
168
|
+
// runLab gives a local browser study its desktop lane; a direct route call or an in-process
|
|
169
|
+
// executor on the same lab has none.
|
|
170
|
+
if (config.subject.source === "app-url" &&
|
|
171
|
+
config.execution?.target === "local" &&
|
|
172
|
+
participantDesktopOf(hooks) === undefined)
|
|
173
|
+
return {
|
|
174
|
+
code: "HUMANISH_CUA_LAB_LOCAL_DESKTOP_MISSING",
|
|
175
|
+
message: "An app-url lab with execution.target: local needs a local desktop. runLab starts one; a direct route call or an in-process executor does not.",
|
|
176
|
+
};
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
179
|
+
/** The lane roster, then the sandbox deadline its session budget derives. */
|
|
180
|
+
function rosterShapeReason(config) {
|
|
181
|
+
// Lanes XOR count/laneFocus, device XOR raw resolution, cap, unique ids,
|
|
182
|
+
// allowPublicTargets with more than one lane, clone.fanout.
|
|
183
|
+
const fanoutReason = cuaLaneValidationReason(config);
|
|
184
|
+
if (fanoutReason)
|
|
185
|
+
return { code: "HUMANISH_CUA_LAB_FANOUT_INVALID", message: fanoutReason };
|
|
186
|
+
// The sandbox deadline is derived from the session budget, so a lab can ask for a session that
|
|
187
|
+
// cannot legally be provisioned. Show the arithmetic: the provider's own error names a limit
|
|
188
|
+
// but not which knob produced it.
|
|
189
|
+
const derivedSandboxMs = resolveParticipantSandboxMs(config);
|
|
190
|
+
if (derivedSandboxMs <= MAX_SANDBOX_MS)
|
|
191
|
+
return undefined;
|
|
192
|
+
const provisionedRoute = config.subject.source === "clone" || config.subject.source === "local-tree";
|
|
193
|
+
const sessionMs = config.execution?.timeoutMs ?? defaultSessionTimeoutMs(config);
|
|
194
|
+
const headroomMs = derivedSandboxMs - sessionMs;
|
|
195
|
+
return invalid(`execution.timeoutMs ${Math.round(sessionMs / 60_000)}m derives a ${Math.round(derivedSandboxMs / 60_000)}m sandbox deadline, and a sandbox may not live longer than ${MAX_SANDBOX_MS / 60_000}m. The deadline is the session budget plus ${Math.round(headroomMs / 60_000)}m of provisioning and teardown headroom${provisionedRoute ? " (this route clones, installs, builds and serves the subject before the actor starts)" : ""}. Lower execution.timeoutMs to at most ${Math.round((MAX_SANDBOX_MS - headroomMs) / 60_000)}m, or set execution.desktop.sandboxTimeoutMs explicitly.`);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Plan a computer-use lab. It is called for any config handed to the computer-use runner, not only
|
|
199
|
+
* one routeOf sends here, so a config for another route gets this route's refusal.
|
|
200
|
+
*/
|
|
201
|
+
export function planComputerUseLab(config, input) {
|
|
202
|
+
const hooks = input.hooks ?? {};
|
|
203
|
+
const refuse = (stage, code, message, actor) => ({
|
|
204
|
+
ok: false,
|
|
205
|
+
refusal: {
|
|
206
|
+
route: "computer-use",
|
|
207
|
+
code,
|
|
208
|
+
message,
|
|
209
|
+
stage,
|
|
210
|
+
...(actor === undefined ? {} : { actor }),
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
const analysis = resolveAutomaticAnalysis(config.review?.analysis);
|
|
214
|
+
if (!analysis.ok)
|
|
215
|
+
return refuse("before-scope", "HUMANISH_LAB_ANALYSIS_INVALID", analysis.message);
|
|
216
|
+
const tasksReason = taskProtocolValidationReason(config, true);
|
|
217
|
+
if (tasksReason)
|
|
218
|
+
return refuse("before-scope", "HUMANISH_LAB_TASKS_UNSUPPORTED", tasksReason);
|
|
219
|
+
// The parser checks the actor too; a library caller skips the parser.
|
|
220
|
+
const actorType = config.actors[0]?.type ?? "";
|
|
221
|
+
const descriptor = actorRegistry[actorType];
|
|
222
|
+
if (!descriptor || !isCuaActorDescriptor(descriptor))
|
|
223
|
+
return refuse("in-scope", "HUMANISH_CUA_LAB_ACTOR_UNSUPPORTED", `actors[0].type "${actorType}" is not a registered computer-use actor.`);
|
|
224
|
+
const actor = descriptor.id;
|
|
225
|
+
const rejection = cuaLabRejection(config, hooks, cuaSubjectRoute(config, hooks));
|
|
226
|
+
if (rejection)
|
|
227
|
+
return refuse("in-scope", rejection.code, rejection.message, actor);
|
|
228
|
+
// A shared world runs every seat against one app; this route would run them as separate lanes.
|
|
229
|
+
// It comes after the rules above, so a shared-world config that breaks one of them, which runLab
|
|
230
|
+
// sends here, still gets that rule's message.
|
|
231
|
+
if (config.subject.topology === "shared-world")
|
|
232
|
+
return refuse("in-scope", "HUMANISH_CUA_LAB_SUBJECT_INVALID", "subject.topology: shared-world labs run every participant against one shared app on the shared-world route; runCuaActorLab runs independent participants. Run the lab with runLab or runConcurrentSharedWorld.", actor);
|
|
233
|
+
// The in-process route drives subject.appUrl on this machine and creates no desktop, so it would
|
|
234
|
+
// skip the subject a clone, local-tree or desktop-cli lab declares.
|
|
235
|
+
const source = config.subject.source;
|
|
236
|
+
if (hooks.buildExecutor !== undefined &&
|
|
237
|
+
(source === "clone" || source === "local-tree" || source === "desktop-cli"))
|
|
238
|
+
return refuse("in-scope", "HUMANISH_CUA_LAB_SUBJECT_INVALID", `cuaHooks.buildExecutor drives subject.appUrl in this process, and a ${source} subject needs the hosted desktop the in-process route never creates. Use an app-url or local-app subject with buildExecutor, or remove buildExecutor to run on a hosted desktop.`, actor);
|
|
239
|
+
// The parser refuses this too; without a product the desktop study fails later.
|
|
240
|
+
if (source === "desktop-cli" && config.subject.product?.name === undefined)
|
|
241
|
+
return refuse("in-scope", "HUMANISH_CUA_LAB_SUBJECT_INVALID", "desktop-cli subjects need `subject.product.name` — the CLI the participant is being asked to use.", actor);
|
|
242
|
+
const participants = computerUseParticipants(config, input.countOverride);
|
|
243
|
+
if (participants.length > MAX_CUA_LANES)
|
|
244
|
+
return refuse("after-personas", "HUMANISH_CUA_LAB_FANOUT_INVALID", `Computer-use fan-out is capped at ${MAX_CUA_LANES} participants (resolved ${participants.length}); N concurrent paid desktops is real spend.`, actor);
|
|
245
|
+
const [first, ...rest] = participants;
|
|
246
|
+
if (hooks.buildExecutor !== undefined && rest.length > 0)
|
|
247
|
+
return refuse("after-personas", "HUMANISH_CUA_LAB_FANOUT_INVALID", "Fan-out to more than one participant is not supported on the in-process route (RunLabOptions.inProcess, or the deprecated cuaHooks.buildExecutor): fan-out provisions one independent E2B desktop per participant, which the in-process route deliberately skips. Run a single in-process participant, or fan out on the E2B route.", actor);
|
|
248
|
+
if (first === undefined)
|
|
249
|
+
throw new Error("computerUseParticipants returned no participant");
|
|
250
|
+
const appUrl = config.subject.appUrl ?? "";
|
|
251
|
+
const appUrlSubject = {
|
|
252
|
+
kind: "app-url",
|
|
253
|
+
appUrl,
|
|
254
|
+
publicTargets: config.policies?.allowPublicTargets === true,
|
|
255
|
+
};
|
|
256
|
+
const product = config.subject.product;
|
|
257
|
+
const hosted = source === "desktop-cli" && product !== undefined
|
|
258
|
+
? { kind: "desktop-cli", product }
|
|
259
|
+
: (provisionedSubject(config) ?? appUrlSubject);
|
|
260
|
+
const brain = brainOf(config, hooks.buildProvider !== undefined);
|
|
261
|
+
const runner = hooks.buildExecutor !== undefined
|
|
262
|
+
? {
|
|
263
|
+
desktop: "in-process",
|
|
264
|
+
brain: { kind: "caller" },
|
|
265
|
+
participants: [first],
|
|
266
|
+
subject: source === "local-app" ? { kind: "local-app", appUrl } : appUrlSubject,
|
|
267
|
+
}
|
|
268
|
+
: isLocalBrowserLab(config)
|
|
269
|
+
? { desktop: "local-vm", brain, participants: [first, ...rest], subject: appUrlSubject }
|
|
270
|
+
: { desktop: "e2b-desktop", brain, participants: [first, ...rest], subject: hosted };
|
|
271
|
+
const declared = config.execution?.concurrency;
|
|
272
|
+
const n = participants.length;
|
|
273
|
+
const provisioned = source === "clone" || source === "local-tree";
|
|
274
|
+
const base = planBase(config, {
|
|
275
|
+
dryRun: input.dryRun,
|
|
276
|
+
...(input.lab === undefined ? {} : { lab: input.lab }),
|
|
277
|
+
analysis,
|
|
278
|
+
});
|
|
279
|
+
return {
|
|
280
|
+
ok: true,
|
|
281
|
+
plan: {
|
|
282
|
+
...base,
|
|
283
|
+
route: "computer-use",
|
|
284
|
+
actor,
|
|
285
|
+
runner,
|
|
286
|
+
concurrency: boundedConcurrency(declared, n),
|
|
287
|
+
sessionBudgetMs: config.execution?.timeoutMs ?? defaultSessionTimeoutMs(config),
|
|
288
|
+
sandboxMs: resolveParticipantSandboxMs(config),
|
|
289
|
+
caps: capsOf(config),
|
|
290
|
+
...(input.rerun === undefined
|
|
291
|
+
? {}
|
|
292
|
+
: {
|
|
293
|
+
rerun: {
|
|
294
|
+
sourceRunId: input.rerun.sourceRunId,
|
|
295
|
+
...(input.rerun.laneIds === undefined ? {} : { participantIds: input.rerun.laneIds }),
|
|
296
|
+
},
|
|
297
|
+
}),
|
|
298
|
+
requirements: base.dryRun || runner.desktop === "in-process"
|
|
299
|
+
? []
|
|
300
|
+
: desktopRequirements(config, {
|
|
301
|
+
e2b: runner.desktop === "e2b-desktop" && hooks.createDesktopLane === undefined,
|
|
302
|
+
brain,
|
|
303
|
+
localVm: runner.desktop === "local-vm",
|
|
304
|
+
externalCatch: !provisioned,
|
|
305
|
+
}),
|
|
306
|
+
},
|
|
307
|
+
};
|
|
308
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ComputerUsePlan } from "../../lab/plan-types.js";
|
|
2
|
+
import type { LabCommsExternal } from "../../lab/types.js";
|
|
3
|
+
import { type LocalAgentId } from "../../actors/local-agent/cli.js";
|
|
4
|
+
import type { CuaActorLabErrorCode, CuaActorLabHooks } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* The first reason a live computer-use run cannot start on this machine: missing keys, a missing
|
|
7
|
+
* or signed-out local agent, missing subject env, a spend cap with no price, or an unreachable
|
|
8
|
+
* external comms catch. Checked before any sandbox exists, because each one found later has
|
|
9
|
+
* already paid for a desktop.
|
|
10
|
+
*/
|
|
11
|
+
export declare function liveCuaRejection(args: {
|
|
12
|
+
caps: ComputerUsePlan["caps"];
|
|
13
|
+
/** The declared participant model; a spend cap needs its price. */
|
|
14
|
+
model: string | undefined;
|
|
15
|
+
hooks: CuaActorLabHooks;
|
|
16
|
+
env: Record<string, string | undefined>;
|
|
17
|
+
openaiApiKey: string;
|
|
18
|
+
e2bApiKey: string;
|
|
19
|
+
localAgentRoute: boolean;
|
|
20
|
+
preferredLocalAgent: LocalAgentId;
|
|
21
|
+
subjectEnvNames: string[];
|
|
22
|
+
externalCommsConfig: LabCommsExternal | undefined;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
code: CuaActorLabErrorCode;
|
|
25
|
+
message: string;
|
|
26
|
+
} | undefined>;
|