humanish 0.105.0 → 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 +563 -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 -50
- package/docs/principles/actor-fidelity.md +37 -40
- 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 -218
- 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 +72 -60
- package/skills/humanish/agents/openai.yaml +2 -2
- package/dist/actor-contract.d.ts +0 -296
- 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 -1751
- 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 -2181
- 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 -3543
- 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 -383
- package/dist/e2b-terminal-lab.js +0 -2000
- 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 -541
- 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 -66
- package/dist/labs.js +0 -401
- 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 -99
- package/dist/persona-resolve.js.map +0 -1
- package/dist/persona.d.ts +0 -39
- package/dist/persona.js +0 -144
- 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 -4030
- 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 -5949
- 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 -1424
- 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.105.0-participant-backgrounds.md +0 -50
- 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,83 @@
|
|
|
1
|
+
import { type DevicePreset } from "../../lab/device-presets.js";
|
|
2
|
+
import { type RunDesktopGeometry } from "../../run/streams.js";
|
|
3
|
+
import { type ChromeCdpPagePreference } from "./cdp-probe.js";
|
|
4
|
+
import { type DesktopBrowserFamily, type DesktopBrowserLaunchIdentity } from "./desktop-browser.js";
|
|
5
|
+
import type { ChromeCdpEndpoint } from "./desktop-cdp.js";
|
|
6
|
+
import type { E2BDesktopSandbox } from "./sdk.js";
|
|
7
|
+
/**
|
|
8
|
+
* The DECLARED preset to record alongside the rendered screen, or undefined when the preset
|
|
9
|
+
* rendered faithfully.
|
|
10
|
+
*
|
|
11
|
+
* `desktopGeometry.screen.verified` compares the FLOORED number with itself, so on its own a
|
|
12
|
+
* floored run is indistinguishable from a faithful one: a reader sees requested 500 / verified 500
|
|
13
|
+
* and concludes a 500-wide screen was asked for. Recording the declared preset is what makes
|
|
14
|
+
* "the preset width did not render" legible in the bundle.
|
|
15
|
+
*/
|
|
16
|
+
export declare function declaredScreenForRender(preset: DevicePreset, presetName: string, rendered: readonly [number, number]): {
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
preset: string;
|
|
20
|
+
} | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Verify the desktop screen geometry IN-SANDBOX (the per-lane device claim is checked, never
|
|
23
|
+
* assumed). A parseable mismatch fails closed. Unavailable/unparseable evidence is returned as
|
|
24
|
+
* an explicit warning: the lane may still run, but its bundle records only the requested screen
|
|
25
|
+
* and never upgrades that request into a verified measurement.
|
|
26
|
+
*/
|
|
27
|
+
export declare function inspectDesktopScreenGeometry(args: {
|
|
28
|
+
desktop: E2BDesktopSandbox;
|
|
29
|
+
participantId: string;
|
|
30
|
+
requestedScreen: readonly [number, number];
|
|
31
|
+
requestTimeoutMs: number;
|
|
32
|
+
}): Promise<{
|
|
33
|
+
verified?: RunDesktopGeometry["screen"]["verified"];
|
|
34
|
+
error?: string;
|
|
35
|
+
warning?: string;
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* Read the running browser's actual outer-window bounds and CSS layout viewport through the
|
|
39
|
+
* already-enabled local Chrome DevTools endpoint. The returned values come from `window.*` in
|
|
40
|
+
* the target page; requested E2B resolution is deliberately not an input to this function.
|
|
41
|
+
* Missing channels report their reason via `onUnavailable`, so the geometry warning can name
|
|
42
|
+
* the cause (a dead CDP endpoint, no python3) instead of only the symptom. Returns `undefined`
|
|
43
|
+
* only when neither channel could be measured.
|
|
44
|
+
* Outer bounds and CSS dimensions are independent channels: a background page can report zero
|
|
45
|
+
* outer dimensions while still reporting a CSS viewport. Final captures follow the active tab;
|
|
46
|
+
* launch captures and emulation attribution keep the pinned target.
|
|
47
|
+
*/
|
|
48
|
+
export declare function makeChromeDesktopGeometryObserver(desktop: E2BDesktopSandbox, requestTimeoutMs: number, endpoint: ChromeCdpEndpoint, options?: {
|
|
49
|
+
/** The page target to measure; absent, the probe attributes one from the endpoint. */
|
|
50
|
+
targetId?: string | undefined;
|
|
51
|
+
/** Called with the reason whenever a channel could not be measured. */
|
|
52
|
+
onUnavailable?: (reason: string) => void;
|
|
53
|
+
/** Launch captures stay pinned; final captures follow the active tab. */
|
|
54
|
+
prefer?: ChromeCdpPagePreference;
|
|
55
|
+
}): () => Promise<(Pick<RunDesktopGeometry, "browserWindow" | "viewport"> & {
|
|
56
|
+
targetId?: string;
|
|
57
|
+
}) | undefined>;
|
|
58
|
+
/** Root-relative physical client bounds from xwininfo's C-locale stats. */
|
|
59
|
+
export declare function parseXwininfoGeometry(output: string): RunDesktopGeometry["browserWindow"] | undefined;
|
|
60
|
+
/** Hosted-browser geometry capture shared by the per-lane and shared-world routes. */
|
|
61
|
+
export declare function captureDesktopBrowserGeometry(args: {
|
|
62
|
+
desktop: E2BDesktopSandbox;
|
|
63
|
+
browserFamily: DesktopBrowserFamily;
|
|
64
|
+
launchIdentity?: DesktopBrowserLaunchIdentity;
|
|
65
|
+
browserTargetId?: string;
|
|
66
|
+
/** Launch captures stay pinned; final captures follow the participant's current page. */
|
|
67
|
+
pagePreference?: ChromeCdpPagePreference;
|
|
68
|
+
browserWindowId?: string;
|
|
69
|
+
participantId: string;
|
|
70
|
+
/** Runtime-only lane target URL (attributes the CDP page); never persisted by this capture. */
|
|
71
|
+
targetUrl: string;
|
|
72
|
+
requestedScreen: readonly [number, number];
|
|
73
|
+
requestTimeoutMs: number;
|
|
74
|
+
resize?: boolean;
|
|
75
|
+
}): Promise<{
|
|
76
|
+
/** Known physical clipping (or unverified repair of it); startup must stop before actions. */
|
|
77
|
+
unusable?: string;
|
|
78
|
+
browserWindowId?: string;
|
|
79
|
+
browserTargetId?: string;
|
|
80
|
+
browserWindow?: RunDesktopGeometry["browserWindow"];
|
|
81
|
+
viewport?: RunDesktopGeometry["viewport"];
|
|
82
|
+
warnings: string[];
|
|
83
|
+
}>;
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
// Screen and browser-window geometry on a hosted E2B desktop, measured in the sandbox rather than
|
|
2
|
+
// taken from the request.
|
|
3
|
+
import {} from "../../lab/device-presets.js";
|
|
4
|
+
import { failureTail, redactText, toErrorMessage } from "../../evidence/redaction.js";
|
|
5
|
+
import {} from "../../run/streams.js";
|
|
6
|
+
import { chromeCdpProbeCommand, parseChromeCdpProbeOutput, } from "./cdp-probe.js";
|
|
7
|
+
import { shellQuote } from "../shell.js";
|
|
8
|
+
import { e2bShell } from "./shell.js";
|
|
9
|
+
import { findVisibleBrowserWindowId, fillDesktopBrowserWindow, } from "./desktop-browser.js";
|
|
10
|
+
/**
|
|
11
|
+
* The DECLARED preset to record alongside the rendered screen, or undefined when the preset
|
|
12
|
+
* rendered faithfully.
|
|
13
|
+
*
|
|
14
|
+
* `desktopGeometry.screen.verified` compares the FLOORED number with itself, so on its own a
|
|
15
|
+
* floored run is indistinguishable from a faithful one: a reader sees requested 500 / verified 500
|
|
16
|
+
* and concludes a 500-wide screen was asked for. Recording the declared preset is what makes
|
|
17
|
+
* "the preset width did not render" legible in the bundle.
|
|
18
|
+
*/
|
|
19
|
+
export function declaredScreenForRender(preset, presetName, rendered) {
|
|
20
|
+
if (preset.width === rendered[0] && preset.height === rendered[1])
|
|
21
|
+
return undefined;
|
|
22
|
+
return { width: preset.width, height: preset.height, preset: presetName };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Verify the desktop screen geometry IN-SANDBOX (the per-lane device claim is checked, never
|
|
26
|
+
* assumed). A parseable mismatch fails closed. Unavailable/unparseable evidence is returned as
|
|
27
|
+
* an explicit warning: the lane may still run, but its bundle records only the requested screen
|
|
28
|
+
* and never upgrades that request into a verified measurement.
|
|
29
|
+
*/
|
|
30
|
+
export async function inspectDesktopScreenGeometry(args) {
|
|
31
|
+
let out = "";
|
|
32
|
+
try {
|
|
33
|
+
const result = await e2bShell(args.desktop).run("xdpyinfo 2>/dev/null | grep -i dimensions || true", { requestTimeoutMs: args.requestTimeoutMs });
|
|
34
|
+
out = result.stdout.trim();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return {
|
|
38
|
+
warning: `Desktop screen geometry could not be measured for participant ${args.participantId}; requested geometry remains unverified.`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const match = out.match(/(\d+)\s*x\s*(\d+)\s*pixels/i);
|
|
42
|
+
if (!match) {
|
|
43
|
+
return {
|
|
44
|
+
warning: `Desktop screen geometry could not be parsed for participant ${args.participantId}; requested geometry remains unverified.`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const width = Number(match[1]);
|
|
48
|
+
const height = Number(match[2]);
|
|
49
|
+
const [expectedWidth, expectedHeight] = args.requestedScreen;
|
|
50
|
+
if (width === expectedWidth && height === expectedHeight) {
|
|
51
|
+
return { verified: { width, height, source: "xdpyinfo" } };
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
verified: { width, height, source: "xdpyinfo" },
|
|
55
|
+
error: `HUMANISH_CUA_LAB_DEVICE_GEOMETRY: participant ${args.participantId} requested a ${expectedWidth}x${expectedHeight} desktop but xdpyinfo reports ${width}x${height} in-sandbox; the participant's device geometry is unverified (fail-closed).`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Read the running browser's actual outer-window bounds and CSS layout viewport through the
|
|
60
|
+
* already-enabled local Chrome DevTools endpoint. The returned values come from `window.*` in
|
|
61
|
+
* the target page; requested E2B resolution is deliberately not an input to this function.
|
|
62
|
+
* Missing channels report their reason via `onUnavailable`, so the geometry warning can name
|
|
63
|
+
* the cause (a dead CDP endpoint, no python3) instead of only the symptom. Returns `undefined`
|
|
64
|
+
* only when neither channel could be measured.
|
|
65
|
+
* Outer bounds and CSS dimensions are independent channels: a background page can report zero
|
|
66
|
+
* outer dimensions while still reporting a CSS viewport. Final captures follow the active tab;
|
|
67
|
+
* launch captures and emulation attribution keep the pinned target.
|
|
68
|
+
*/
|
|
69
|
+
export function makeChromeDesktopGeometryObserver(desktop, requestTimeoutMs, endpoint, options = {}) {
|
|
70
|
+
const { targetId, onUnavailable, prefer = "pinned" } = options;
|
|
71
|
+
const shell = e2bShell(desktop);
|
|
72
|
+
return async () => {
|
|
73
|
+
const result = await shell.run(chromeCdpProbeCommand({
|
|
74
|
+
...endpoint,
|
|
75
|
+
...(targetId === undefined ? {} : { targetId }),
|
|
76
|
+
prefer,
|
|
77
|
+
mode: "geometry",
|
|
78
|
+
}), { requestTimeoutMs, timeoutMs: 5_000 });
|
|
79
|
+
if (result.exitCode !== 0) {
|
|
80
|
+
onUnavailable?.(`probe exited ${result.exitCode}: ${failureTail(result.stderr || result.stdout)}`);
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
const parsed = parseChromeCdpProbeOutput(result.stdout);
|
|
84
|
+
if (parsed.unavailable !== undefined) {
|
|
85
|
+
onUnavailable?.(parsed.unavailable);
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
const browserWindow = isMeasuredRect(parsed.browserWindow)
|
|
89
|
+
? { ...parsed.browserWindow, source: "cdp" }
|
|
90
|
+
: undefined;
|
|
91
|
+
const viewport = isMeasuredViewport(parsed.viewport)
|
|
92
|
+
? { ...parsed.viewport, source: "cdp" }
|
|
93
|
+
: undefined;
|
|
94
|
+
if (browserWindow === undefined && viewport === undefined) {
|
|
95
|
+
onUnavailable?.("the page reported no usable window or viewport dimensions");
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
if (browserWindow === undefined)
|
|
99
|
+
onUnavailable?.("the page reported no usable outer-window dimensions");
|
|
100
|
+
if (viewport === undefined)
|
|
101
|
+
onUnavailable?.("the page reported no usable CSS viewport dimensions");
|
|
102
|
+
return {
|
|
103
|
+
...(browserWindow === undefined ? {} : { browserWindow }),
|
|
104
|
+
...(viewport === undefined ? {} : { viewport }),
|
|
105
|
+
...(parsed.targetId === undefined ? {} : { targetId: parsed.targetId }),
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function isMeasuredRect(value) {
|
|
110
|
+
if (!value || typeof value !== "object")
|
|
111
|
+
return false;
|
|
112
|
+
const record = value;
|
|
113
|
+
return (Number.isFinite(record.x) &&
|
|
114
|
+
Number.isFinite(record.y) &&
|
|
115
|
+
isPositiveMeasurement(record.width) &&
|
|
116
|
+
isPositiveMeasurement(record.height));
|
|
117
|
+
}
|
|
118
|
+
function isMeasuredViewport(value) {
|
|
119
|
+
if (!value || typeof value !== "object")
|
|
120
|
+
return false;
|
|
121
|
+
const record = value;
|
|
122
|
+
return (isPositiveMeasurement(record.width) &&
|
|
123
|
+
isPositiveMeasurement(record.height) &&
|
|
124
|
+
isPositiveMeasurement(record.deviceScaleFactor));
|
|
125
|
+
}
|
|
126
|
+
function isPositiveMeasurement(value) {
|
|
127
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0;
|
|
128
|
+
}
|
|
129
|
+
async function measureBrowserWindowWithXwininfo(desktop, windowId, requestTimeoutMs) {
|
|
130
|
+
const result = await e2bShell(desktop).run([
|
|
131
|
+
"set -euo pipefail",
|
|
132
|
+
`win=${shellQuote(windowId)}`,
|
|
133
|
+
// Older xdotool builds translate parent-relative offsets twice. With window
|
|
134
|
+
// decorations that falsely reports a visible client as clipped, triggering
|
|
135
|
+
// fullscreen and hiding the participant's address bar. Read root-relative
|
|
136
|
+
// client coordinates directly; never substitute emulated CDP outer bounds.
|
|
137
|
+
'LC_ALL=C xwininfo -id "$win" -stats 2>/dev/null',
|
|
138
|
+
].join("\n"), { requestTimeoutMs, timeoutMs: 5_000 });
|
|
139
|
+
if (result.exitCode !== 0)
|
|
140
|
+
return undefined;
|
|
141
|
+
return parseXwininfoGeometry(result.stdout);
|
|
142
|
+
}
|
|
143
|
+
/** Root-relative physical client bounds from xwininfo's C-locale stats. */
|
|
144
|
+
export function parseXwininfoGeometry(output) {
|
|
145
|
+
const read = (label) => {
|
|
146
|
+
const matches = [...output.matchAll(new RegExp(`^\\s*${label}:\\s*(-?\\d+)\\s*$`, "gm"))];
|
|
147
|
+
if (matches.length !== 1)
|
|
148
|
+
return undefined;
|
|
149
|
+
const value = Number(matches[0][1]);
|
|
150
|
+
return Number.isSafeInteger(value) ? value : undefined;
|
|
151
|
+
};
|
|
152
|
+
const x = read("Absolute upper-left X");
|
|
153
|
+
const y = read("Absolute upper-left Y");
|
|
154
|
+
const width = read("Width");
|
|
155
|
+
const height = read("Height");
|
|
156
|
+
const mapStates = [...output.matchAll(/^\s*Map State:\s*(\S+)\s*$/gm)];
|
|
157
|
+
if (mapStates.length !== 1 || mapStates[0][1] !== "IsViewable")
|
|
158
|
+
return undefined;
|
|
159
|
+
if (x === undefined ||
|
|
160
|
+
y === undefined ||
|
|
161
|
+
width === undefined ||
|
|
162
|
+
height === undefined ||
|
|
163
|
+
width <= 0 ||
|
|
164
|
+
height <= 0) {
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
return { x, y, width, height, source: "xwininfo" };
|
|
168
|
+
}
|
|
169
|
+
/** Physical X client bounds, never the page's emulated window.outerWidth/Height. */
|
|
170
|
+
function isBrowserWindowContained(bounds, [width, height]) {
|
|
171
|
+
return (bounds.x >= 0 &&
|
|
172
|
+
bounds.y >= 0 &&
|
|
173
|
+
bounds.x + bounds.width <= width &&
|
|
174
|
+
bounds.y + bounds.height <= height);
|
|
175
|
+
}
|
|
176
|
+
/** Bounded repair. Resizing can clear a window-manager maximize state and move the
|
|
177
|
+
* client origin as decorations return, so remeasure before a second adjustment. */
|
|
178
|
+
async function fitBrowserWindowWithinDesktop(desktop, windowId, resolution, requestTimeoutMs) {
|
|
179
|
+
const run = (command) => e2bShell(desktop)
|
|
180
|
+
.run(["set -euo pipefail", `win=${shellQuote(windowId)}`, command].join("\n"), {
|
|
181
|
+
requestTimeoutMs,
|
|
182
|
+
timeoutMs: 5_000,
|
|
183
|
+
})
|
|
184
|
+
.catch(() => undefined);
|
|
185
|
+
await run('xdotool windowmove "$win" 0 0');
|
|
186
|
+
await desktop.wait(250).catch(() => undefined);
|
|
187
|
+
const moved = await measureBrowserWindowWithXwininfo(desktop, windowId, requestTimeoutMs).catch(() => undefined);
|
|
188
|
+
if (moved === undefined)
|
|
189
|
+
return moved;
|
|
190
|
+
let resized = moved;
|
|
191
|
+
// Resizing alone cannot fix an offscreen client origin. The window manager
|
|
192
|
+
// can also center a minimum-width client at a negative x on a narrow screen.
|
|
193
|
+
for (let attempt = 0; attempt < 2; attempt += 1) {
|
|
194
|
+
if (isBrowserWindowContained(resized, resolution))
|
|
195
|
+
return resized;
|
|
196
|
+
const width = resolution[0] - resized.x;
|
|
197
|
+
const height = resolution[1] - resized.y;
|
|
198
|
+
if (resized.x < 0 || resized.y < 0 || width <= 0 || height <= 0)
|
|
199
|
+
break;
|
|
200
|
+
await run(`xdotool windowsize "$win" ${width} ${height}`);
|
|
201
|
+
await desktop.wait(250).catch(() => undefined);
|
|
202
|
+
const measured = await measureBrowserWindowWithXwininfo(desktop, windowId, requestTimeoutMs).catch(() => undefined);
|
|
203
|
+
if (measured === undefined)
|
|
204
|
+
return measured;
|
|
205
|
+
resized = measured;
|
|
206
|
+
}
|
|
207
|
+
if (resized === undefined || isBrowserWindowContained(resized, resolution))
|
|
208
|
+
return resized;
|
|
209
|
+
// Chrome's minimum client width can equal the whole desktop. Window-manager
|
|
210
|
+
// borders then make a decorated window impossible to contain, even after a
|
|
211
|
+
// successful move/resize. Request fullscreen once and prove the physical result.
|
|
212
|
+
// xprop/xdotool ship with the desktop template; wmctrl is not required.
|
|
213
|
+
// Check state first so the fullscreen shortcut cannot toggle an existing state off.
|
|
214
|
+
await run([
|
|
215
|
+
'state=$(xprop -id "$win" _NET_WM_STATE)',
|
|
216
|
+
'case "$state" in',
|
|
217
|
+
" *_NET_WM_STATE_FULLSCREEN*) ;;",
|
|
218
|
+
' *) xdotool windowactivate --sync "$win"; xdotool key --clearmodifiers F11 ;;',
|
|
219
|
+
"esac",
|
|
220
|
+
].join("\n"));
|
|
221
|
+
// The fullscreen animation may report its new origin before its final width.
|
|
222
|
+
// Give the window manager a bounded settling window, keeping missing reads unverified.
|
|
223
|
+
for (let attempt = 0; attempt < 4; attempt += 1) {
|
|
224
|
+
await desktop.wait(250).catch(() => undefined);
|
|
225
|
+
const measured = await measureBrowserWindowWithXwininfo(desktop, windowId, requestTimeoutMs).catch(() => undefined);
|
|
226
|
+
if (measured === undefined || isBrowserWindowContained(measured, resolution))
|
|
227
|
+
return measured;
|
|
228
|
+
resized = measured;
|
|
229
|
+
}
|
|
230
|
+
return resized;
|
|
231
|
+
}
|
|
232
|
+
/** Hosted-browser geometry capture shared by the per-lane and shared-world routes. */
|
|
233
|
+
export async function captureDesktopBrowserGeometry(args) {
|
|
234
|
+
const warnings = [];
|
|
235
|
+
let browserWindowId = args.browserWindowId;
|
|
236
|
+
if (browserWindowId === undefined && args.browserFamily !== "unknown") {
|
|
237
|
+
browserWindowId = await findVisibleBrowserWindowId(args.desktop, args.requestTimeoutMs, args.browserFamily, args.launchIdentity).catch((error) => {
|
|
238
|
+
warnings.push(`Browser window lookup failed for participant ${args.participantId}: ${redactText(toErrorMessage(error))}`);
|
|
239
|
+
return undefined;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
let physicalWindow;
|
|
243
|
+
if (browserWindowId !== undefined) {
|
|
244
|
+
if (args.resize !== false) {
|
|
245
|
+
await fillDesktopBrowserWindow(args.desktop, browserWindowId, args.requestedScreen, args.requestTimeoutMs);
|
|
246
|
+
// Let the window manager apply the resize before querying both X and page layout geometry.
|
|
247
|
+
await args.desktop.wait(250).catch(() => undefined);
|
|
248
|
+
}
|
|
249
|
+
physicalWindow = await measureBrowserWindowWithXwininfo(args.desktop, browserWindowId, args.requestTimeoutMs).catch(() => undefined);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
warnings.push(`Browser window bounds could not be measured for participant ${args.participantId}; the live stream will use the full desktop.`);
|
|
253
|
+
}
|
|
254
|
+
let unusable;
|
|
255
|
+
if (physicalWindow !== undefined &&
|
|
256
|
+
!isBrowserWindowContained(physicalWindow, args.requestedScreen)) {
|
|
257
|
+
const before = physicalWindow;
|
|
258
|
+
if (args.resize !== false && browserWindowId !== undefined) {
|
|
259
|
+
physicalWindow = await fitBrowserWindowWithinDesktop(args.desktop, browserWindowId, args.requestedScreen, args.requestTimeoutMs);
|
|
260
|
+
if (physicalWindow === undefined) {
|
|
261
|
+
// Keep the last measured bad state; a missing observation cannot prove a successful fix.
|
|
262
|
+
physicalWindow = before;
|
|
263
|
+
unusable = `Physical browser containment could not be verified after correction for participant ${args.participantId}; the last measured window was clipped.`;
|
|
264
|
+
}
|
|
265
|
+
else if (isBrowserWindowContained(physicalWindow, args.requestedScreen)) {
|
|
266
|
+
warnings.push(`Browser window clipping corrected for participant ${args.participantId}; physical bounds are ${physicalWindow.width}x${physicalWindow.height} at (${physicalWindow.x}, ${physicalWindow.y}).`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
if (unusable === undefined && !isBrowserWindowContained(physicalWindow, args.requestedScreen)) {
|
|
270
|
+
unusable = `Browser window is outside the captured ${args.requestedScreen[0]}x${args.requestedScreen[1]} desktop for participant ${args.participantId}: physical bounds ${physicalWindow.width}x${physicalWindow.height} at (${physicalWindow.x}, ${physicalWindow.y}), right=${physicalWindow.x + physicalWindow.width}, bottom=${physicalWindow.y + physicalWindow.height}.`;
|
|
271
|
+
}
|
|
272
|
+
if (unusable !== undefined)
|
|
273
|
+
warnings.push(unusable);
|
|
274
|
+
}
|
|
275
|
+
if (physicalWindow === undefined) {
|
|
276
|
+
warnings.push(`Physical browser containment is unverified for participant ${args.participantId}; X window bounds could not be measured. Page-reported outer dimensions can be emulated and do not prove physical visibility.`);
|
|
277
|
+
}
|
|
278
|
+
let cdpUnavailable;
|
|
279
|
+
const chromeGeometry = args.browserFamily === "chromium"
|
|
280
|
+
? await makeChromeDesktopGeometryObserver(args.desktop, args.requestTimeoutMs, {
|
|
281
|
+
...(args.launchIdentity?.cdpPort === undefined
|
|
282
|
+
? {}
|
|
283
|
+
: { cdpPort: args.launchIdentity.cdpPort }),
|
|
284
|
+
...(args.launchIdentity?.profileDir === undefined
|
|
285
|
+
? {}
|
|
286
|
+
: { profileDir: args.launchIdentity.profileDir }),
|
|
287
|
+
targetUrl: args.targetUrl,
|
|
288
|
+
}, {
|
|
289
|
+
targetId: args.browserTargetId,
|
|
290
|
+
onUnavailable: (reason) => {
|
|
291
|
+
cdpUnavailable = reason;
|
|
292
|
+
},
|
|
293
|
+
prefer: args.pagePreference ?? "pinned",
|
|
294
|
+
})().catch((error) => {
|
|
295
|
+
cdpUnavailable = toErrorMessage(error);
|
|
296
|
+
return undefined;
|
|
297
|
+
})
|
|
298
|
+
: undefined;
|
|
299
|
+
const browserWindow = physicalWindow ?? chromeGeometry?.browserWindow;
|
|
300
|
+
const viewport = chromeGeometry?.viewport;
|
|
301
|
+
// The fill check reads the X window when it was measured: under mobile emulation (#221) the
|
|
302
|
+
// page's window.outerWidth reports the EMULATED screen (414), which is not a fill failure.
|
|
303
|
+
const fillBounds = physicalWindow;
|
|
304
|
+
if (!browserWindow) {
|
|
305
|
+
warnings.push(`Browser outer bounds could not be measured for participant ${args.participantId}.`);
|
|
306
|
+
}
|
|
307
|
+
else if (unusable === undefined &&
|
|
308
|
+
fillBounds !== undefined &&
|
|
309
|
+
(fillBounds.x !== 0 ||
|
|
310
|
+
fillBounds.y !== 0 ||
|
|
311
|
+
fillBounds.width !== args.requestedScreen[0] ||
|
|
312
|
+
fillBounds.height !== args.requestedScreen[1])) {
|
|
313
|
+
warnings.push(`Browser window fill did not reach the requested ${args.requestedScreen[0]}x${args.requestedScreen[1]} screen for participant ${args.participantId}; measured physical bounds are ${fillBounds.width}x${fillBounds.height} at (${fillBounds.x}, ${fillBounds.y}).`);
|
|
314
|
+
}
|
|
315
|
+
if (!viewport) {
|
|
316
|
+
// Name the cause, not only the symptom: the same dead DevTools channel that loses the viewport
|
|
317
|
+
// loses every url/text observation, and a reader of the bundle should learn that here (#514).
|
|
318
|
+
const cause = cdpUnavailable === undefined ? "" : ` DevTools probe: ${redactText(cdpUnavailable)}.`;
|
|
319
|
+
warnings.push(args.browserFamily === "firefox"
|
|
320
|
+
? `Browser CSS viewport measurement is unavailable in Firefox for participant ${args.participantId}; stream.viewport is omitted instead of reading a different browser's CDP endpoint.`
|
|
321
|
+
: `Browser CSS viewport could not be measured for participant ${args.participantId}; stream.viewport is omitted instead of copying the requested screen resolution.${cause}`);
|
|
322
|
+
}
|
|
323
|
+
return {
|
|
324
|
+
...(unusable === undefined ? {} : { unusable }),
|
|
325
|
+
...(browserWindowId === undefined ? {} : { browserWindowId }),
|
|
326
|
+
...(chromeGeometry?.targetId === undefined ? {} : { browserTargetId: chromeGeometry.targetId }),
|
|
327
|
+
...(browserWindow === undefined ? {} : { browserWindow }),
|
|
328
|
+
...(viewport === undefined ? {} : { viewport }),
|
|
329
|
+
warnings,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { startDesktopMedia } from "../../guest/desktop-media.js";
|
|
2
|
+
import type { E2BDesktopSandbox } from "./sdk.js";
|
|
3
|
+
import type { LabDesktopMedia } from "../../lab/types.js";
|
|
4
|
+
/** The same worker and conversation contract, transported by the hosted SDK's stdin/stdout. */
|
|
5
|
+
export declare function startE2BDesktopMedia(options: {
|
|
6
|
+
desktop: E2BDesktopSandbox;
|
|
7
|
+
media: LabDesktopMedia;
|
|
8
|
+
signal: AbortSignal;
|
|
9
|
+
onTerminal(): void;
|
|
10
|
+
requestTimeoutMs: number;
|
|
11
|
+
}): Promise<Awaited<ReturnType<typeof startDesktopMedia>>>;
|
|
12
|
+
export interface DesktopMediaEvidence {
|
|
13
|
+
camera?: {
|
|
14
|
+
source: "synthetic" | "file";
|
|
15
|
+
file: string;
|
|
16
|
+
};
|
|
17
|
+
microphone?: {
|
|
18
|
+
source: "speech";
|
|
19
|
+
};
|
|
20
|
+
permission: "prompt" | "granted";
|
|
21
|
+
flags: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Put the declared camera feed in the sandbox and return the Chromium flags that present it as a
|
|
25
|
+
* capture device (#509). Fails CLOSED: a feed that cannot be produced (no ffmpeg on the image, an
|
|
26
|
+
* unreadable host file) is named before the browser launches, because a participant told it has
|
|
27
|
+
* a camera and finds none reports the instrument's gap as the product's.
|
|
28
|
+
*/
|
|
29
|
+
export declare function prepareDesktopMedia(desktop: E2BDesktopSandbox, media: LabDesktopMedia, permission: "prompt" | "granted", cwd: string, requestTimeoutMs: number, readHostFile?: (absolutePath: string) => Promise<Buffer>): Promise<DesktopMediaEvidence>;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { startDesktopMedia } from "../../guest/desktop-media.js";
|
|
4
|
+
import { failureTail, toErrorMessage } from "../../evidence/redaction.js";
|
|
5
|
+
import { runOrThrow } from "../shell.js";
|
|
6
|
+
import { e2bShell } from "./shell.js";
|
|
7
|
+
/** The same worker and conversation contract, transported by the hosted SDK's stdin/stdout. */
|
|
8
|
+
export async function startE2BDesktopMedia(options) {
|
|
9
|
+
if (options.media.camera !== undefined)
|
|
10
|
+
throw new Error("Hosted speech cannot be combined with a synthetic camera.");
|
|
11
|
+
let handle;
|
|
12
|
+
let closing = false;
|
|
13
|
+
const env = {
|
|
14
|
+
PATH: "/usr/local/bin:/usr/bin:/bin",
|
|
15
|
+
HOME: "/home/user",
|
|
16
|
+
USER: "user",
|
|
17
|
+
LOGNAME: "user",
|
|
18
|
+
LANG: "C.UTF-8",
|
|
19
|
+
XDG_RUNTIME_DIR: "/tmp/humanish-media-runtime",
|
|
20
|
+
};
|
|
21
|
+
return startDesktopMedia({
|
|
22
|
+
media: options.media,
|
|
23
|
+
env,
|
|
24
|
+
signal: options.signal,
|
|
25
|
+
onTerminal: options.onTerminal,
|
|
26
|
+
transport: {
|
|
27
|
+
async start(callbacks) {
|
|
28
|
+
// A background run returns a process handle and never throws on exit, so it bypasses
|
|
29
|
+
// the Shell: the worker's stdin and lifetime need the handle.
|
|
30
|
+
handle = await options.desktop.commands.run("node /opt/humanish/media/guest-media-worker.js", {
|
|
31
|
+
background: true,
|
|
32
|
+
stdin: true,
|
|
33
|
+
envs: { ...callbacks.env },
|
|
34
|
+
timeoutMs: 0,
|
|
35
|
+
requestTimeoutMs: options.requestTimeoutMs,
|
|
36
|
+
onStdout: (data) => callbacks.data(Buffer.from(data)),
|
|
37
|
+
onStderr: () => { },
|
|
38
|
+
});
|
|
39
|
+
if (!handle.sendStdin || !handle.closeStdin || !handle.kill || !handle.wait) {
|
|
40
|
+
await handle.kill?.();
|
|
41
|
+
throw new Error("Hosted speech needs an E2B SDK with streaming command stdin support.");
|
|
42
|
+
}
|
|
43
|
+
void handle.wait().then(() => {
|
|
44
|
+
if (!closing)
|
|
45
|
+
callbacks.exit();
|
|
46
|
+
}, () => {
|
|
47
|
+
if (!closing)
|
|
48
|
+
callbacks.exit();
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
async write(data) {
|
|
52
|
+
if (closing || !handle?.sendStdin)
|
|
53
|
+
throw new Error("The hosted speech worker is closed.");
|
|
54
|
+
await handle.sendStdin(data, { requestTimeoutMs: options.requestTimeoutMs });
|
|
55
|
+
},
|
|
56
|
+
async close() {
|
|
57
|
+
if (closing)
|
|
58
|
+
return;
|
|
59
|
+
closing = true;
|
|
60
|
+
if (!handle)
|
|
61
|
+
return;
|
|
62
|
+
await handle.closeStdin?.({ requestTimeoutMs: options.requestTimeoutMs }).catch(() => { });
|
|
63
|
+
let timer;
|
|
64
|
+
try {
|
|
65
|
+
await Promise.race([
|
|
66
|
+
handle.wait?.().catch(() => { }),
|
|
67
|
+
new Promise((resolve) => {
|
|
68
|
+
timer = setTimeout(() => {
|
|
69
|
+
void handle
|
|
70
|
+
?.kill?.()
|
|
71
|
+
.catch(() => { })
|
|
72
|
+
.finally(resolve);
|
|
73
|
+
}, 2000);
|
|
74
|
+
}),
|
|
75
|
+
]);
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
clearTimeout(timer);
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/** Where a lane's synthetic camera feed lives inside the sandbox: a tmpfs the sandbox user can
|
|
85
|
+
* write, and a path that contains neither /tmp/ nor /home/, which the public-safety scan reads
|
|
86
|
+
* as an operator's local path (this one is the harness's own and belongs in the bundle). */
|
|
87
|
+
const SANDBOX_MEDIA_DIR = "/dev/shm/humanish-media";
|
|
88
|
+
const SANDBOX_CAMERA_PATH = `${SANDBOX_MEDIA_DIR}/camera.y4m`;
|
|
89
|
+
/** The synthetic feed: ffmpeg's test pattern, 640x480 at 10 fps, six seconds (about 28 MB of
|
|
90
|
+
* raw Y4M on the tmpfs), looped by Chrome's fake capture device. */
|
|
91
|
+
const SYNTHETIC_CAMERA_COMMAND = `mkdir -p ${SANDBOX_MEDIA_DIR} && ffmpeg -y -loglevel error -f lavfi -i testsrc=size=640x480:rate=10 -t 6 -pix_fmt yuv420p ${SANDBOX_CAMERA_PATH}`;
|
|
92
|
+
/**
|
|
93
|
+
* Put the declared camera feed in the sandbox and return the Chromium flags that present it as a
|
|
94
|
+
* capture device (#509). Fails CLOSED: a feed that cannot be produced (no ffmpeg on the image, an
|
|
95
|
+
* unreadable host file) is named before the browser launches, because a participant told it has
|
|
96
|
+
* a camera and finds none reports the instrument's gap as the product's.
|
|
97
|
+
*/
|
|
98
|
+
export async function prepareDesktopMedia(desktop, media, permission, cwd, requestTimeoutMs, readHostFile = (absolutePath) => readFile(absolutePath)) {
|
|
99
|
+
if (media.microphone !== undefined) {
|
|
100
|
+
if (media.microphone.source !== "speech")
|
|
101
|
+
throw new Error("Microphone source-file injection is unsupported; use source: speech.");
|
|
102
|
+
if (media.camera !== undefined)
|
|
103
|
+
throw new Error("Hosted synthetic cameras cannot be combined with speech.");
|
|
104
|
+
// The lane starts and admits the speech worker before launching the browser.
|
|
105
|
+
return {
|
|
106
|
+
microphone: { source: "speech" },
|
|
107
|
+
permission,
|
|
108
|
+
flags: permission === "granted" ? ["--use-fake-ui-for-media-stream"] : [],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const flags = [];
|
|
112
|
+
let camera;
|
|
113
|
+
const shell = e2bShell(desktop);
|
|
114
|
+
if (media.camera !== undefined) {
|
|
115
|
+
if (media.camera.source === "synthetic") {
|
|
116
|
+
const made = await shell.run(SYNTHETIC_CAMERA_COMMAND, {
|
|
117
|
+
requestTimeoutMs,
|
|
118
|
+
timeoutMs: 60_000,
|
|
119
|
+
});
|
|
120
|
+
if (made.exitCode !== 0) {
|
|
121
|
+
throw new Error(`the synthetic camera feed could not be generated on this desktop image (ffmpeg exited ${made.exitCode}: ${failureTail(made.stderr || made.stdout)}); give execution.desktop.media.camera.source a .y4m file instead`);
|
|
122
|
+
}
|
|
123
|
+
camera = { source: "synthetic", file: SANDBOX_CAMERA_PATH };
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
const absolutePath = path.resolve(cwd, media.camera.source);
|
|
127
|
+
let bytes;
|
|
128
|
+
try {
|
|
129
|
+
bytes = await readHostFile(absolutePath);
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
throw new Error(`execution.desktop.media.camera.source could not be read (${toErrorMessage(error)})`);
|
|
133
|
+
}
|
|
134
|
+
if (bytes.length > 64 * 1024 * 1024) {
|
|
135
|
+
throw new Error(`execution.desktop.media.camera.source is ${bytes.length} bytes; the camera feed is capped at 64 MiB`);
|
|
136
|
+
}
|
|
137
|
+
await runOrThrow(shell, `mkdir -p ${SANDBOX_MEDIA_DIR}`, {
|
|
138
|
+
requestTimeoutMs,
|
|
139
|
+
timeoutMs: 15_000,
|
|
140
|
+
});
|
|
141
|
+
const payload = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
|
|
142
|
+
// An ArrayBuffer goes to the machine as an octet stream.
|
|
143
|
+
await shell.writeFile(SANDBOX_CAMERA_PATH, payload, { requestTimeoutMs });
|
|
144
|
+
camera = { source: "file", file: SANDBOX_CAMERA_PATH };
|
|
145
|
+
}
|
|
146
|
+
flags.push("--use-fake-device-for-media-stream", `--use-file-for-fake-video-capture=${SANDBOX_CAMERA_PATH}`);
|
|
147
|
+
}
|
|
148
|
+
if (permission === "granted")
|
|
149
|
+
flags.push("--use-fake-ui-for-media-stream");
|
|
150
|
+
return { ...(camera === undefined ? {} : { camera }), permission, flags };
|
|
151
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Writable } from "node:stream";
|
|
2
|
+
import { type DesktopRecordingMetadata } from "../../evidence/desktop-recording-types.js";
|
|
3
|
+
import type { E2BDesktopSandbox } from "./sdk.js";
|
|
4
|
+
interface RecordingOptions {
|
|
5
|
+
desktop: E2BDesktopSandbox;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
audio: boolean;
|
|
9
|
+
pulseEnv?: Readonly<Record<string, string>>;
|
|
10
|
+
requestTimeoutMs: number;
|
|
11
|
+
}
|
|
12
|
+
export interface E2BDesktopRecording {
|
|
13
|
+
readonly env: Readonly<Record<string, string>>;
|
|
14
|
+
finish(destination: Writable): Promise<DesktopRecordingMetadata>;
|
|
15
|
+
}
|
|
16
|
+
/** Starts the shared FFmpeg recipe through E2B's command transport; retrieval remains host-owned. */
|
|
17
|
+
export declare function startE2BDesktopRecording(options: RecordingOptions): Promise<E2BDesktopRecording>;
|
|
18
|
+
export {};
|