humanish 0.104.3 → 0.106.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +89 -94
- package/ARCHITECTURE.md +146 -0
- package/CHANGELOG.md +502 -0
- package/CONTEXT.md +51 -0
- package/CONTRIBUTING.md +111 -9
- package/README.md +213 -124
- package/SECURITY.md +1 -1
- package/TELEMETRY.md +112 -0
- package/dist/actors/affordance.d.ts +56 -0
- package/dist/actors/affordance.js +155 -0
- package/dist/actors/agent-session.js +42 -0
- package/dist/actors/codex/app-server-actor-trace.d.ts +11 -0
- package/dist/actors/codex/app-server-actor-trace.js +211 -0
- package/dist/actors/codex/app-server-client.d.ts +39 -0
- package/dist/actors/codex/app-server-client.js +116 -0
- package/dist/actors/codex/app-server-trace.d.ts +154 -0
- package/dist/actors/codex/app-server-trace.js +424 -0
- package/dist/actors/codex/app-server-ui.d.ts +40 -0
- package/dist/actors/codex/app-server-ui.js +328 -0
- package/dist/actors/codex/app-server.d.ts +44 -0
- package/dist/actors/codex/app-server.js +268 -0
- package/dist/actors/codex/qualified-versions.d.ts +45 -0
- package/dist/actors/codex/qualified-versions.js +87 -0
- package/dist/actors/codex/restricted-executable.d.ts +17 -0
- package/dist/actors/codex/restricted-executable.js +147 -0
- package/dist/actors/codex/restricted-launch.d.ts +116 -0
- package/dist/actors/codex/restricted-launch.js +222 -0
- package/dist/actors/codex/restricted-participant-policy.d.ts +46 -0
- package/dist/actors/codex/restricted-participant-policy.js +82 -0
- package/dist/actors/codex/restricted-participant.d.ts +20 -0
- package/dist/actors/codex/restricted-participant.js +432 -0
- package/dist/actors/codex/restricted-policy.d.ts +70 -0
- package/dist/actors/codex/restricted-policy.js +326 -0
- package/dist/actors/codex/restricted-session.d.ts +65 -0
- package/dist/actors/codex/restricted-session.js +432 -0
- package/dist/actors/codex/restricted-transport.d.ts +73 -0
- package/dist/actors/codex/restricted-transport.js +335 -0
- package/dist/actors/codex/restricted-turn.d.ts +62 -0
- package/dist/actors/codex/restricted-turn.js +284 -0
- package/dist/actors/computer-use/actor.d.ts +77 -0
- package/dist/actors/computer-use/actor.js +78 -0
- package/dist/actors/computer-use/admission-limit.d.ts +12 -0
- package/dist/actors/computer-use/admission-limit.js +19 -0
- package/dist/actors/computer-use/executor-error.js +48 -0
- package/dist/actors/computer-use/loop/actions.d.ts +26 -0
- package/dist/actors/computer-use/loop/actions.js +245 -0
- package/dist/actors/computer-use/loop/backstop.d.ts +42 -0
- package/dist/actors/computer-use/loop/backstop.js +202 -0
- package/dist/actors/computer-use/loop/debrief.d.ts +19 -0
- package/dist/actors/computer-use/loop/debrief.js +164 -0
- package/dist/actors/computer-use/loop/ending.d.ts +86 -0
- package/dist/actors/computer-use/loop/ending.js +316 -0
- package/dist/actors/computer-use/loop/observation.d.ts +55 -0
- package/dist/actors/computer-use/loop/observation.js +246 -0
- package/dist/actors/computer-use/loop/output-limit.d.ts +11 -0
- package/dist/actors/computer-use/loop/output-limit.js +21 -0
- package/dist/actors/computer-use/loop/provider-call.d.ts +19 -0
- package/dist/actors/computer-use/loop/provider-call.js +208 -0
- package/dist/actors/computer-use/loop/race.d.ts +34 -0
- package/dist/actors/computer-use/loop/race.js +79 -0
- package/dist/actors/computer-use/loop/session.d.ts +77 -0
- package/dist/actors/computer-use/loop/session.js +135 -0
- package/dist/actors/computer-use/loop/spend.d.ts +30 -0
- package/dist/actors/computer-use/loop/spend.js +85 -0
- package/dist/actors/computer-use/loop/trace.d.ts +35 -0
- package/dist/actors/computer-use/loop/trace.js +140 -0
- package/dist/actors/computer-use/loop/types.d.ts +404 -0
- package/dist/actors/computer-use/loop/types.js +1 -0
- package/dist/actors/computer-use/loop/usage.d.ts +102 -0
- package/dist/actors/computer-use/loop/usage.js +355 -0
- package/dist/actors/computer-use/loop.d.ts +11 -0
- package/dist/actors/computer-use/loop.js +248 -0
- package/dist/actors/computer-use/openai-provider.d.ts +107 -0
- package/dist/actors/computer-use/openai-provider.js +472 -0
- package/dist/actors/computer-use/openai-requests.d.ts +35 -0
- package/dist/actors/computer-use/openai-requests.js +74 -0
- package/dist/actors/computer-use/openai-wire.d.ts +67 -0
- package/dist/actors/computer-use/openai-wire.js +365 -0
- package/dist/actors/computer-use/provider-error.d.ts +27 -0
- package/dist/actors/computer-use/provider-error.js +86 -0
- package/dist/actors/computer-use/speech.js +6 -0
- package/dist/actors/contract.d.ts +315 -0
- package/dist/actors/contract.js +201 -0
- package/dist/actors/goal-source.js +38 -0
- package/dist/actors/local-agent/claude-session.d.ts +43 -0
- package/dist/actors/local-agent/claude-session.js +370 -0
- package/dist/actors/local-agent/cli.d.ts +115 -0
- package/dist/actors/local-agent/cli.js +413 -0
- package/dist/actors/local-agent/readiness.d.ts +31 -0
- package/dist/actors/local-agent/readiness.js +45 -0
- package/dist/actors/openai-endpoint.d.ts +2 -0
- package/dist/actors/openai-endpoint.js +2 -0
- package/dist/actors/output-token-limit.js +4 -0
- package/dist/actors/reasoning-effort.js +33 -0
- package/dist/actors/registry.d.ts +59 -0
- package/dist/actors/registry.js +89 -0
- package/dist/actors/scripted-browser/actor.d.ts +49 -0
- package/dist/actors/scripted-browser/actor.js +428 -0
- package/dist/actors/scripted-browser/browser-command.d.ts +1 -0
- package/dist/actors/scripted-browser/browser-command.js +48 -0
- package/dist/actors/scripted-browser/journey.d.ts +9 -0
- package/dist/actors/scripted-browser/journey.js +171 -0
- package/dist/actors/scripted-browser/steps.d.ts +60 -0
- package/dist/actors/scripted-browser/steps.js +384 -0
- package/dist/actors/scripted-browser/types.d.ts +135 -0
- package/dist/actors/scripted-browser/types.js +26 -0
- package/dist/actors/stop-cause.d.ts +9 -0
- package/dist/actors/stop-cause.js +42 -0
- package/dist/actors/stop-conditions.d.ts +40 -0
- package/dist/actors/stop-conditions.js +65 -0
- package/dist/analysis/automatic-completion.d.ts +38 -0
- package/dist/analysis/automatic-completion.js +90 -0
- package/dist/analysis/automatic-config.d.ts +41 -0
- package/dist/analysis/automatic-config.js +135 -0
- package/dist/analysis/automatic.d.ts +17 -0
- package/dist/analysis/automatic.js +279 -0
- package/dist/analysis/codex-config.d.ts +8 -0
- package/dist/analysis/codex-config.js +69 -0
- package/dist/analysis/evidence-sources.d.ts +23 -0
- package/dist/analysis/evidence-sources.js +251 -0
- package/dist/analysis/evidence.d.ts +18 -0
- package/dist/analysis/evidence.js +482 -0
- package/dist/analysis/execute.d.ts +52 -0
- package/dist/analysis/execute.js +504 -0
- package/dist/analysis/image-tokens.d.ts +1 -0
- package/dist/analysis/image-tokens.js +41 -0
- package/dist/analysis/job.d.ts +97 -0
- package/dist/analysis/job.js +311 -0
- package/dist/analysis/load.d.ts +3 -0
- package/dist/analysis/load.js +11 -0
- package/dist/analysis/provider.d.ts +57 -0
- package/dist/analysis/provider.js +227 -0
- package/dist/analysis/restricted-codex.d.ts +19 -0
- package/dist/analysis/restricted-codex.js +23 -0
- package/dist/analysis/service.d.ts +72 -0
- package/dist/analysis/service.js +399 -0
- package/dist/analysis/sharing.d.ts +11 -0
- package/dist/analysis/sharing.js +44 -0
- package/dist/analysis/store-executions.d.ts +27 -0
- package/dist/analysis/store-executions.js +224 -0
- package/dist/analysis/store.d.ts +31 -0
- package/dist/analysis/store.js +315 -0
- package/dist/analysis/types.d.ts +217 -0
- package/dist/analysis/types.js +12 -0
- package/dist/analysis/validation.d.ts +225 -0
- package/dist/analysis/validation.js +562 -0
- package/dist/browser-control/client.d.ts +18 -0
- package/dist/browser-control/client.js +239 -0
- package/dist/browser-control/dispatcher.d.ts +19 -0
- package/dist/browser-control/dispatcher.js +221 -0
- package/dist/browser-control/protocol.d.ts +492 -0
- package/dist/browser-control/protocol.js +360 -0
- package/dist/browser-control/recording-transfer.d.ts +3 -0
- package/dist/browser-control/recording-transfer.js +48 -0
- package/dist/browser-control/transport.d.ts +27 -0
- package/dist/browser-control/transport.js +189 -0
- package/dist/cli/commands/analysis-signals.d.ts +7 -0
- package/dist/cli/commands/analysis-signals.js +25 -0
- package/dist/cli/commands/analyze.d.ts +3 -0
- package/dist/cli/commands/analyze.js +212 -0
- package/dist/cli/commands/codex.d.ts +3 -0
- package/dist/cli/commands/codex.js +145 -0
- package/dist/cli/commands/comms.d.ts +3 -0
- package/dist/cli/commands/comms.js +225 -0
- package/dist/cli/commands/feedback.d.ts +3 -0
- package/dist/cli/commands/feedback.js +138 -0
- package/dist/cli/commands/lab-format.d.ts +8 -0
- package/dist/cli/commands/lab-format.js +105 -0
- package/dist/cli/commands/lab-route-computer-use.d.ts +20 -0
- package/dist/cli/commands/lab-route-computer-use.js +251 -0
- package/dist/cli/commands/lab-route-open.d.ts +27 -0
- package/dist/cli/commands/lab-route-open.js +37 -0
- package/dist/cli/commands/lab-route-preview.d.ts +20 -0
- package/dist/cli/commands/lab-route-preview.js +74 -0
- package/dist/cli/commands/lab-route-run.d.ts +17 -0
- package/dist/cli/commands/lab-route-run.js +31 -0
- package/dist/cli/commands/lab-route-scripted.d.ts +19 -0
- package/dist/cli/commands/lab-route-scripted.js +50 -0
- package/dist/cli/commands/lab-route-shared-world.d.ts +20 -0
- package/dist/cli/commands/lab-route-shared-world.js +135 -0
- package/dist/cli/commands/lab-route-terminal.d.ts +19 -0
- package/dist/cli/commands/lab-route-terminal.js +49 -0
- package/dist/cli/commands/lab-run.d.ts +9 -0
- package/dist/cli/commands/lab-run.js +166 -0
- package/dist/cli/commands/lab-scorer.d.ts +30 -0
- package/dist/cli/commands/lab-scorer.js +17 -0
- package/dist/cli/commands/lab.d.ts +3 -0
- package/dist/cli/commands/lab.js +193 -0
- package/dist/cli/commands/observe.d.ts +4 -0
- package/dist/cli/commands/observe.js +345 -0
- package/dist/cli/commands/runs.d.ts +11 -0
- package/dist/cli/commands/runs.js +314 -0
- package/dist/cli/commands/setup.d.ts +11 -0
- package/dist/cli/commands/setup.js +325 -0
- package/dist/cli/commands/tui.d.ts +32 -0
- package/dist/cli/commands/tui.js +305 -0
- package/dist/cli/commands/watch.d.ts +3 -0
- package/dist/cli/commands/watch.js +245 -0
- package/dist/cli/doctor.d.ts +39 -0
- package/dist/cli/doctor.js +263 -0
- package/dist/cli/first-run-path.d.ts +67 -0
- package/dist/cli/first-run-path.js +150 -0
- package/dist/cli/io.d.ts +85 -0
- package/dist/cli/io.js +232 -0
- package/dist/cli/observer-follow.d.ts +56 -0
- package/dist/cli/observer-follow.js +160 -0
- package/dist/cli/orientation.d.ts +30 -0
- package/dist/cli/orientation.js +114 -0
- package/dist/cli/program.d.ts +15 -0
- package/dist/cli/program.js +338 -0
- package/dist/cli/secret-prompt.js +39 -0
- package/dist/cli/telemetry.js +351 -0
- package/dist/cli.js +2 -4
- package/dist/comms/agentmail.d.ts +29 -0
- package/dist/comms/agentmail.js +568 -0
- package/dist/comms/capture-surface.d.ts +54 -0
- package/dist/comms/capture-surface.js +468 -0
- package/dist/comms/catch-host.d.ts +52 -0
- package/dist/comms/catch-host.js +192 -0
- package/dist/comms/connections.d.ts +20 -0
- package/dist/comms/connections.js +116 -0
- package/dist/comms/email-catch.d.ts +49 -0
- package/dist/comms/email-catch.js +236 -0
- package/dist/comms/extract.d.ts +7 -0
- package/dist/comms/extract.js +65 -0
- package/dist/comms/fake-inbox.d.ts +39 -0
- package/dist/comms/fake-inbox.js +136 -0
- package/dist/comms/images.d.ts +7 -0
- package/dist/comms/images.js +53 -0
- package/dist/comms/lease-store.d.ts +91 -0
- package/dist/comms/lease-store.js +600 -0
- package/dist/comms/providers.d.ts +30 -0
- package/dist/comms/providers.js +24 -0
- package/dist/comms/receiving-common.d.ts +17 -0
- package/dist/comms/receiving-common.js +82 -0
- package/dist/comms/receiving-evidence.d.ts +4 -0
- package/dist/comms/receiving-evidence.js +59 -0
- package/dist/comms/receiving-recovery.d.ts +22 -0
- package/dist/comms/receiving-recovery.js +100 -0
- package/dist/comms/receiving-render.d.ts +16 -0
- package/dist/comms/receiving-render.js +409 -0
- package/dist/comms/receiving-runtime.d.ts +41 -0
- package/dist/comms/receiving-runtime.js +66 -0
- package/dist/comms/receiving-surface.d.ts +8 -0
- package/dist/comms/receiving-surface.js +156 -0
- package/dist/comms/receiving-types.d.ts +122 -0
- package/dist/comms/receiving-types.js +3 -0
- package/dist/comms/receiving.d.ts +33 -0
- package/dist/comms/receiving.js +508 -0
- package/dist/comms/sandbox-catch-script.d.ts +16 -0
- package/dist/comms/sandbox-catch-script.js +331 -0
- package/dist/comms/sandbox-catch.d.ts +214 -0
- package/dist/comms/sandbox-catch.js +451 -0
- package/dist/comms/setup.d.ts +65 -0
- package/dist/comms/setup.js +259 -0
- package/dist/comms/thread-evidence.d.ts +28 -0
- package/dist/comms/thread-evidence.js +30 -0
- package/dist/comms/types.d.ts +76 -0
- package/dist/comms/types.js +8 -0
- package/dist/deprecated.d.ts +90 -0
- package/dist/deprecated.js +106 -0
- package/dist/evidence/browser-hygiene.js +42 -0
- package/dist/evidence/desktop-recorder.d.ts +39 -0
- package/dist/evidence/desktop-recorder.js +340 -0
- package/dist/evidence/desktop-recording-artifact.d.ts +5 -0
- package/dist/evidence/desktop-recording-artifact.js +53 -0
- package/dist/evidence/desktop-recording-types.d.ts +27 -0
- package/dist/evidence/desktop-recording-types.js +16 -0
- package/dist/evidence/encoded-text.d.ts +27 -0
- package/dist/evidence/encoded-text.js +243 -0
- package/dist/evidence/frame-signature.d.ts +17 -0
- package/dist/evidence/frame-signature.js +111 -0
- package/dist/evidence/image.d.ts +24 -0
- package/dist/evidence/image.js +170 -0
- package/dist/evidence/plain-text.d.ts +8 -0
- package/dist/evidence/plain-text.js +16 -0
- package/dist/evidence/redaction.d.ts +110 -0
- package/dist/evidence/redaction.js +329 -0
- package/dist/feedback/draft.d.ts +58 -0
- package/dist/feedback/draft.js +309 -0
- package/dist/feedback/export-bundle.d.ts +6 -0
- package/dist/feedback/export-bundle.js +585 -0
- package/dist/feedback/export.d.ts +50 -0
- package/dist/feedback/export.js +392 -0
- package/dist/feedback/feedback.d.ts +37 -0
- package/dist/feedback/feedback.js +282 -0
- package/dist/feedback/proof.d.ts +8 -0
- package/dist/feedback/proof.js +56 -0
- package/dist/guest/bootstrap.d.ts +55 -0
- package/dist/guest/bootstrap.js +348 -0
- package/dist/guest/browser-tools.d.ts +8 -0
- package/dist/guest/browser-tools.js +72 -0
- package/dist/guest/chromium-text.d.ts +62 -0
- package/dist/guest/chromium-text.js +386 -0
- package/dist/guest/desktop-executor.d.ts +57 -0
- package/dist/guest/desktop-executor.js +256 -0
- package/dist/guest/desktop-keys.d.ts +8 -0
- package/dist/guest/desktop-keys.js +89 -0
- package/dist/guest/desktop-media.d.ts +70 -0
- package/dist/guest/desktop-media.js +385 -0
- package/dist/guest/desktop-native.d.ts +14 -0
- package/dist/guest/desktop-native.js +156 -0
- package/dist/guest/media-config.d.ts +15 -0
- package/dist/guest/media-config.js +16 -0
- package/dist/guest/runtime-desktop.d.ts +45 -0
- package/dist/guest/runtime-desktop.js +420 -0
- package/dist/guest/runtime-processes.d.ts +28 -0
- package/dist/guest/runtime-processes.js +94 -0
- package/dist/guest/runtime.d.ts +31 -0
- package/dist/guest/runtime.js +124 -0
- package/dist/guest-media-worker.js +184 -48
- package/dist/guest-runtime-main.js +23 -10
- package/dist/guest-runtime-revision.js +1 -1
- package/dist/index.d.ts +32 -83
- package/dist/index.js +21 -42
- package/dist/keys/env-file.d.ts +15 -0
- package/dist/keys/env-file.js +109 -0
- package/dist/keys/key-resolution.d.ts +58 -0
- package/dist/keys/key-resolution.js +389 -0
- package/dist/lab/adapter-extension.d.ts +75 -0
- package/dist/lab/adapter-extension.js +253 -0
- package/dist/lab/adapter-scorer-loader.d.ts +43 -0
- package/dist/lab/adapter-scorer-loader.js +130 -0
- package/dist/lab/bag-overrides.d.ts +18 -0
- package/dist/lab/bag-overrides.js +121 -0
- package/dist/lab/composition-rules.d.ts +5 -0
- package/dist/lab/composition-rules.js +283 -0
- package/dist/lab/config.d.ts +7 -0
- package/dist/lab/config.js +208 -0
- package/dist/lab/device-presets.d.ts +97 -0
- package/dist/lab/device-presets.js +87 -0
- package/dist/lab/discover.d.ts +65 -0
- package/dist/lab/discover.js +422 -0
- package/dist/lab/doctor.d.ts +39 -0
- package/dist/lab/doctor.js +233 -0
- package/dist/lab/init-paths.d.ts +5 -0
- package/dist/lab/init-paths.js +89 -0
- package/dist/lab/init-plan.d.ts +20 -0
- package/dist/lab/init-plan.js +163 -0
- package/dist/lab/init-templates.d.ts +28 -0
- package/dist/lab/init-templates.js +416 -0
- package/dist/lab/init.d.ts +39 -0
- package/dist/lab/init.js +287 -0
- package/dist/lab/keys.d.ts +2 -0
- package/dist/lab/keys.js +264 -0
- package/dist/lab/parse/actors.d.ts +14 -0
- package/dist/lab/parse/actors.js +453 -0
- package/dist/lab/parse/comms.d.ts +12 -0
- package/dist/lab/parse/comms.js +246 -0
- package/dist/lab/parse/execution.d.ts +19 -0
- package/dist/lab/parse/execution.js +356 -0
- package/dist/lab/parse/subject-state.d.ts +30 -0
- package/dist/lab/parse/subject-state.js +179 -0
- package/dist/lab/parse/subject.d.ts +9 -0
- package/dist/lab/parse/subject.js +420 -0
- package/dist/lab/parse/values.d.ts +17 -0
- package/dist/lab/parse/values.js +65 -0
- package/dist/lab/participant-assignment.d.ts +12 -0
- package/dist/lab/participant-assignment.js +19 -0
- package/dist/lab/persona-resolve.d.ts +39 -0
- package/dist/lab/persona-resolve.js +118 -0
- package/dist/lab/persona.d.ts +39 -0
- package/dist/lab/persona.js +192 -0
- package/dist/lab/plan-base.d.ts +24 -0
- package/dist/lab/plan-base.js +113 -0
- package/dist/lab/plan-participants.d.ts +81 -0
- package/dist/lab/plan-participants.js +92 -0
- package/dist/lab/plan-types.d.ts +269 -0
- package/dist/lab/plan-types.js +5 -0
- package/dist/lab/plan.d.ts +27 -0
- package/dist/lab/plan.js +156 -0
- package/dist/lab/preflight-probes.d.ts +3 -0
- package/dist/lab/preflight-probes.js +312 -0
- package/dist/lab/preflight-result.d.ts +7 -0
- package/dist/lab/preflight-result.js +43 -0
- package/dist/lab/preflight.d.ts +95 -0
- package/dist/lab/preflight.js +117 -0
- package/dist/lab/route-inputs.d.ts +17 -0
- package/dist/lab/route-inputs.js +95 -0
- package/dist/lab/routing.d.ts +81 -0
- package/dist/lab/routing.js +214 -0
- package/dist/lab/run-lab-events.d.ts +69 -0
- package/dist/lab/run-lab-events.js +95 -0
- package/dist/lab/run-lab-options.d.ts +82 -0
- package/dist/lab/run-lab-options.js +399 -0
- package/dist/lab/summary.d.ts +60 -0
- package/dist/lab/summary.js +168 -0
- package/dist/lab/tasks.d.ts +91 -0
- package/dist/lab/tasks.js +139 -0
- package/dist/lab/types.d.ts +813 -0
- package/dist/lab/types.js +6 -0
- package/dist/lab/validation.d.ts +67 -0
- package/dist/lab/validation.js +387 -0
- package/dist/lab/warnings.d.ts +2 -0
- package/dist/lab/warnings.js +338 -0
- package/dist/observer/artifact.d.ts +23 -0
- package/dist/observer/artifact.js +235 -0
- package/dist/observer/data.d.ts +115 -0
- package/dist/observer/data.js +258 -0
- package/dist/observer/exposure.d.ts +64 -0
- package/dist/observer/exposure.js +143 -0
- package/dist/observer/http.js +50 -0
- package/dist/observer/library.js +190 -0
- package/dist/observer/listen.js +85 -0
- package/dist/observer/live.d.ts +9 -0
- package/dist/observer/live.js +25 -0
- package/dist/observer/pinned-files.d.ts +30 -0
- package/dist/observer/pinned-files.js +160 -0
- package/dist/observer/render.d.ts +69 -0
- package/dist/observer/render.js +350 -0
- package/dist/observer/run-inventory.d.ts +35 -0
- package/dist/observer/run-inventory.js +95 -0
- package/dist/observer/run-routes.d.ts +37 -0
- package/dist/observer/run-routes.js +373 -0
- package/dist/observer/serve.d.ts +97 -0
- package/dist/observer/serve.js +305 -0
- package/dist/observer/static.js +369 -0
- package/dist/observer/tunnel.js +112 -0
- package/dist/observer-app.html +9 -20
- package/dist/routes/computer-use/bundle-parts.d.ts +50 -0
- package/dist/routes/computer-use/bundle-parts.js +177 -0
- package/dist/routes/computer-use/bundle.d.ts +56 -0
- package/dist/routes/computer-use/bundle.js +184 -0
- package/dist/routes/computer-use/diagnostics.d.ts +38 -0
- package/dist/routes/computer-use/diagnostics.js +94 -0
- package/dist/routes/computer-use/e2b-desktop/comms.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/comms.js +225 -0
- package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +3 -0
- package/dist/routes/computer-use/e2b-desktop/desktop.js +91 -0
- package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/fidelity.js +156 -0
- package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +18 -0
- package/dist/routes/computer-use/e2b-desktop/prepare.js +198 -0
- package/dist/routes/computer-use/e2b-desktop/start.d.ts +14 -0
- package/dist/routes/computer-use/e2b-desktop/start.js +193 -0
- package/dist/routes/computer-use/e2b-desktop/state.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/state.js +69 -0
- package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +6 -0
- package/dist/routes/computer-use/e2b-desktop/teardown.js +152 -0
- package/dist/routes/computer-use/external-comms.d.ts +20 -0
- package/dist/routes/computer-use/external-comms.js +55 -0
- package/dist/routes/computer-use/fanout-bundle.d.ts +11 -0
- package/dist/routes/computer-use/fanout-bundle.js +274 -0
- package/dist/routes/computer-use/fanout-lanes.d.ts +15 -0
- package/dist/routes/computer-use/fanout-lanes.js +302 -0
- package/dist/routes/computer-use/in-process-desktop.d.ts +17 -0
- package/dist/routes/computer-use/in-process-desktop.js +40 -0
- package/dist/routes/computer-use/lanes.d.ts +35 -0
- package/dist/routes/computer-use/lanes.js +321 -0
- package/dist/routes/computer-use/legacy-lane-spec.d.ts +62 -0
- package/dist/routes/computer-use/legacy-lane-spec.js +39 -0
- package/dist/routes/computer-use/live-flush.d.ts +42 -0
- package/dist/routes/computer-use/live-flush.js +154 -0
- package/dist/routes/computer-use/local-tree-pack.d.ts +27 -0
- package/dist/routes/computer-use/local-tree-pack.js +47 -0
- package/dist/routes/computer-use/local-vm.d.ts +20 -0
- package/dist/routes/computer-use/local-vm.js +218 -0
- package/dist/routes/computer-use/participant-desktop.d.ts +63 -0
- package/dist/routes/computer-use/participant-desktop.js +33 -0
- package/dist/routes/computer-use/participant-facts.d.ts +6 -0
- package/dist/routes/computer-use/participant-facts.js +22 -0
- package/dist/routes/computer-use/participant-model.d.ts +30 -0
- package/dist/routes/computer-use/participant-model.js +222 -0
- package/dist/routes/computer-use/participant-prompt.d.ts +53 -0
- package/dist/routes/computer-use/participant-prompt.js +87 -0
- package/dist/routes/computer-use/participant-runs.d.ts +67 -0
- package/dist/routes/computer-use/participant-runs.js +255 -0
- package/dist/routes/computer-use/plan.d.ts +56 -0
- package/dist/routes/computer-use/plan.js +308 -0
- package/dist/routes/computer-use/preflight.d.ts +26 -0
- package/dist/routes/computer-use/preflight.js +85 -0
- package/dist/routes/computer-use/rerun-selection.d.ts +19 -0
- package/dist/routes/computer-use/rerun-selection.js +121 -0
- package/dist/routes/computer-use/result.d.ts +7 -0
- package/dist/routes/computer-use/result.js +292 -0
- package/dist/routes/computer-use/route.d.ts +33 -0
- package/dist/routes/computer-use/route.js +145 -0
- package/dist/routes/computer-use/run-lanes.d.ts +59 -0
- package/dist/routes/computer-use/run-lanes.js +135 -0
- package/dist/routes/computer-use/self-report.d.ts +21 -0
- package/dist/routes/computer-use/self-report.js +231 -0
- package/dist/routes/computer-use/setup.d.ts +136 -0
- package/dist/routes/computer-use/setup.js +371 -0
- package/dist/routes/computer-use/single-bundle.d.ts +97 -0
- package/dist/routes/computer-use/single-bundle.js +393 -0
- package/dist/routes/computer-use/subject-projection.d.ts +51 -0
- package/dist/routes/computer-use/subject-projection.js +159 -0
- package/dist/routes/computer-use/types.d.ts +539 -0
- package/dist/routes/computer-use/types.js +37 -0
- package/dist/routes/preview.d.ts +13 -0
- package/dist/routes/preview.js +36 -0
- package/dist/routes/scripted/bundle.d.ts +47 -0
- package/dist/routes/scripted/bundle.js +195 -0
- package/dist/routes/scripted/plan.d.ts +30 -0
- package/dist/routes/scripted/plan.js +95 -0
- package/dist/routes/scripted/result.d.ts +48 -0
- package/dist/routes/scripted/result.js +176 -0
- package/dist/routes/scripted/route.d.ts +28 -0
- package/dist/routes/scripted/route.js +218 -0
- package/dist/routes/scripted/scenario.d.ts +21 -0
- package/dist/routes/scripted/scenario.js +102 -0
- package/dist/routes/scripted/session-result.d.ts +8 -0
- package/dist/routes/scripted/session-result.js +60 -0
- package/dist/routes/scripted/setup.d.ts +45 -0
- package/dist/routes/scripted/setup.js +126 -0
- package/dist/routes/scripted/subject.d.ts +49 -0
- package/dist/routes/scripted/subject.js +156 -0
- package/dist/routes/scripted/surface-records.d.ts +26 -0
- package/dist/routes/scripted/surface-records.js +88 -0
- package/dist/routes/scripted/surface-sessions.d.ts +13 -0
- package/dist/routes/scripted/surface-sessions.js +40 -0
- package/dist/routes/scripted/types.d.ts +88 -0
- package/dist/routes/scripted/types.js +3 -0
- package/dist/routes/shared-world/bundle.d.ts +20 -0
- package/dist/routes/shared-world/bundle.js +446 -0
- package/dist/routes/shared-world/checkpoints.d.ts +25 -0
- package/dist/routes/shared-world/checkpoints.js +46 -0
- package/dist/routes/shared-world/comms.d.ts +68 -0
- package/dist/routes/shared-world/comms.js +176 -0
- package/dist/routes/shared-world/external-public.d.ts +21 -0
- package/dist/routes/shared-world/external-public.js +130 -0
- package/dist/routes/shared-world/handoff.d.ts +62 -0
- package/dist/routes/shared-world/handoff.js +348 -0
- package/dist/routes/shared-world/lobby-code.d.ts +25 -0
- package/dist/routes/shared-world/lobby-code.js +152 -0
- package/dist/routes/shared-world/plan.d.ts +27 -0
- package/dist/routes/shared-world/plan.js +174 -0
- package/dist/routes/shared-world/provenance.d.ts +27 -0
- package/dist/routes/shared-world/provenance.js +65 -0
- package/dist/routes/shared-world/provisioned.d.ts +57 -0
- package/dist/routes/shared-world/provisioned.js +505 -0
- package/dist/routes/shared-world/result.d.ts +18 -0
- package/dist/routes/shared-world/result.js +327 -0
- package/dist/routes/shared-world/route.d.ts +21 -0
- package/dist/routes/shared-world/route.js +277 -0
- package/dist/routes/shared-world/seat-records.d.ts +20 -0
- package/dist/routes/shared-world/seat-records.js +213 -0
- package/dist/routes/shared-world/seats.d.ts +38 -0
- package/dist/routes/shared-world/seats.js +208 -0
- package/dist/routes/shared-world/setup.d.ts +48 -0
- package/dist/routes/shared-world/setup.js +200 -0
- package/dist/routes/shared-world/types.d.ts +354 -0
- package/dist/routes/shared-world/types.js +29 -0
- package/dist/routes/terminal/adapter.d.ts +37 -0
- package/dist/routes/terminal/adapter.js +201 -0
- package/dist/routes/terminal/bundle.d.ts +79 -0
- package/dist/routes/terminal/bundle.js +305 -0
- package/dist/routes/terminal/credentials.d.ts +34 -0
- package/dist/routes/terminal/credentials.js +102 -0
- package/dist/routes/terminal/dry-run.d.ts +24 -0
- package/dist/routes/terminal/dry-run.js +157 -0
- package/dist/routes/terminal/encoding.js +79 -0
- package/dist/routes/terminal/ledger.d.ts +49 -0
- package/dist/routes/terminal/ledger.js +170 -0
- package/dist/routes/terminal/lifetime.d.ts +10 -0
- package/dist/routes/terminal/lifetime.js +22 -0
- package/dist/routes/terminal/live-finish.d.ts +31 -0
- package/dist/routes/terminal/live-finish.js +215 -0
- package/dist/routes/terminal/live-sandbox.d.ts +69 -0
- package/dist/routes/terminal/live-sandbox.js +452 -0
- package/dist/routes/terminal/persona.d.ts +20 -0
- package/dist/routes/terminal/persona.js +34 -0
- package/dist/routes/terminal/plan.d.ts +21 -0
- package/dist/routes/terminal/plan.js +115 -0
- package/dist/routes/terminal/recorder.d.ts +23 -0
- package/dist/routes/terminal/recorder.js +77 -0
- package/dist/routes/terminal/result.d.ts +47 -0
- package/dist/routes/terminal/result.js +114 -0
- package/dist/routes/terminal/route.d.ts +23 -0
- package/dist/routes/terminal/route.js +170 -0
- package/dist/routes/terminal/runtime-auth.d.ts +12 -0
- package/dist/routes/terminal/runtime-auth.js +23 -0
- package/dist/routes/terminal/runtime.d.ts +14 -0
- package/dist/routes/terminal/runtime.js +47 -0
- package/dist/routes/terminal/sandbox.d.ts +35 -0
- package/dist/routes/terminal/sandbox.js +126 -0
- package/dist/routes/terminal/session.d.ts +25 -0
- package/dist/routes/terminal/session.js +199 -0
- package/dist/routes/terminal/token-usage.d.ts +15 -0
- package/dist/routes/terminal/token-usage.js +93 -0
- package/dist/routes/terminal/trace.d.ts +40 -0
- package/dist/routes/terminal/trace.js +172 -0
- package/dist/routes/terminal/types.d.ts +342 -0
- package/dist/routes/terminal/types.js +31 -0
- package/dist/run/bundle-shape.d.ts +7 -0
- package/dist/run/bundle-shape.js +369 -0
- package/dist/run/bundle.d.ts +547 -0
- package/dist/run/bundle.js +44 -0
- package/dist/run/concurrency.js +24 -0
- package/dist/run/contained-output.d.ts +50 -0
- package/dist/run/contained-output.js +351 -0
- package/dist/run/cost-summary.d.ts +28 -0
- package/dist/run/cost-summary.js +213 -0
- package/dist/run/costs.js +140 -0
- package/dist/run/detail.d.ts +62 -0
- package/dist/run/detail.js +139 -0
- package/dist/run/dry-run-inputs.d.ts +9 -0
- package/dist/run/dry-run-inputs.js +90 -0
- package/dist/run/dry-run.d.ts +6 -0
- package/dist/run/dry-run.js +362 -0
- package/dist/run/feedback-shape.d.ts +7 -0
- package/dist/run/feedback-shape.js +89 -0
- package/dist/run/git-state.d.ts +35 -0
- package/dist/run/git-state.js +316 -0
- package/dist/run/git-workspace.d.ts +32 -0
- package/dist/run/git-workspace.js +450 -0
- package/dist/run/judge.d.ts +210 -0
- package/dist/run/judge.js +240 -0
- package/dist/run/locate.d.ts +22 -0
- package/dist/run/locate.js +122 -0
- package/dist/run/outcomes.d.ts +31 -0
- package/dist/run/outcomes.js +210 -0
- package/dist/run/participant-records.d.ts +28 -0
- package/dist/run/participant-records.js +63 -0
- package/dist/run/participant.d.ts +29 -0
- package/dist/run/participant.js +12 -0
- package/dist/run/paths.d.ts +79 -0
- package/dist/run/paths.js +356 -0
- package/dist/run/preflight-receipts.d.ts +46 -0
- package/dist/run/preflight-receipts.js +173 -0
- package/dist/run/pricing.d.ts +124 -0
- package/dist/run/pricing.js +298 -0
- package/dist/run/project.d.ts +8 -0
- package/dist/run/project.js +103 -0
- package/dist/run/projection.d.ts +184 -0
- package/dist/run/projection.js +356 -0
- package/dist/run/reclaim.d.ts +41 -0
- package/dist/run/reclaim.js +183 -0
- package/dist/run/results.d.ts +88 -0
- package/dist/run/results.js +3 -0
- package/dist/run/run-index.d.ts +107 -0
- package/dist/run/run-index.js +243 -0
- package/dist/run/run.d.ts +103 -0
- package/dist/run/run.js +199 -0
- package/dist/run/sandbox-receipts.d.ts +31 -0
- package/dist/run/sandbox-receipts.js +49 -0
- package/dist/run/shared-world-evidence.d.ts +220 -0
- package/dist/run/shared-world-evidence.js +49 -0
- package/dist/run/shared-world-shape.d.ts +26 -0
- package/dist/run/shared-world-shape.js +181 -0
- package/dist/run/stats.d.ts +82 -0
- package/dist/run/stats.js +258 -0
- package/dist/run/status.d.ts +111 -0
- package/dist/run/status.js +176 -0
- package/dist/run/stored-runs.d.ts +38 -0
- package/dist/run/stored-runs.js +273 -0
- package/dist/run/stream-shape.d.ts +4 -0
- package/dist/run/stream-shape.js +160 -0
- package/dist/run/streams.d.ts +257 -0
- package/dist/run/streams.js +12 -0
- package/dist/run/study-files.d.ts +35 -0
- package/dist/run/study-files.js +164 -0
- package/dist/run/terminal-contract.d.ts +25 -0
- package/dist/run/terminal-contract.js +47 -0
- package/dist/run/text.d.ts +2 -0
- package/dist/run/text.js +4 -0
- package/dist/run/transient-comms-secrets.js +72 -0
- package/dist/run/type-guards.d.ts +6 -0
- package/dist/run/type-guards.js +18 -0
- package/dist/run-lab.d.ts +110 -0
- package/dist/run-lab.js +148 -0
- package/dist/subject/clone.d.ts +37 -0
- package/dist/subject/clone.js +62 -0
- package/dist/subject/desktop-cli.d.ts +17 -0
- package/dist/subject/desktop-cli.js +51 -0
- package/dist/subject/local-tree-archive.d.ts +82 -0
- package/dist/subject/local-tree-archive.js +431 -0
- package/dist/subject/local-tree.d.ts +28 -0
- package/dist/subject/local-tree.js +58 -0
- package/dist/subject/node-bootstrap.d.ts +12 -0
- package/dist/subject/node-bootstrap.js +66 -0
- package/dist/subject/runtime.d.ts +13 -0
- package/dist/subject/runtime.js +50 -0
- package/dist/subject/serve.d.ts +39 -0
- package/dist/subject/serve.js +249 -0
- package/dist/subject/state.d.ts +23 -0
- package/dist/subject/state.js +58 -0
- package/dist/subject/steps.d.ts +37 -0
- package/dist/subject/steps.js +39 -0
- package/dist/substrates/command-failure.d.ts +23 -0
- package/dist/substrates/command-failure.js +45 -0
- package/dist/substrates/desktop-session.d.ts +41 -0
- package/dist/substrates/desktop-session.js +59 -0
- package/dist/substrates/detached.d.ts +55 -0
- package/dist/substrates/detached.js +139 -0
- package/dist/substrates/e2b/cdp-probe.d.ts +99 -0
- package/dist/substrates/e2b/cdp-probe.js +556 -0
- package/dist/substrates/e2b/desktop-browser.d.ts +81 -0
- package/dist/substrates/e2b/desktop-browser.js +410 -0
- package/dist/substrates/e2b/desktop-cdp.d.ts +77 -0
- package/dist/substrates/e2b/desktop-cdp.js +211 -0
- package/dist/substrates/e2b/desktop-executor.d.ts +92 -0
- package/dist/substrates/e2b/desktop-executor.js +302 -0
- package/dist/substrates/e2b/desktop-geometry.d.ts +83 -0
- package/dist/substrates/e2b/desktop-geometry.js +331 -0
- package/dist/substrates/e2b/desktop-media.d.ts +29 -0
- package/dist/substrates/e2b/desktop-media.js +151 -0
- package/dist/substrates/e2b/desktop-recording.d.ts +18 -0
- package/dist/substrates/e2b/desktop-recording.js +238 -0
- package/dist/substrates/e2b/desktop-resources.d.ts +11 -0
- package/dist/substrates/e2b/desktop-resources.js +35 -0
- package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +15 -0
- package/dist/substrates/e2b/desktop-screenshot-cleanup.js +66 -0
- package/dist/substrates/e2b/lifetime.d.ts +12 -0
- package/dist/substrates/e2b/lifetime.js +18 -0
- package/dist/substrates/e2b/sandbox.d.ts +102 -0
- package/dist/substrates/e2b/sandbox.js +202 -0
- package/dist/substrates/e2b/sdk.d.ts +194 -0
- package/dist/substrates/e2b/sdk.js +168 -0
- package/dist/substrates/e2b/shell.d.ts +10 -0
- package/dist/substrates/e2b/shell.js +61 -0
- package/dist/substrates/local/captured-inbox.d.ts +6 -0
- package/dist/substrates/local/captured-inbox.js +87 -0
- package/dist/substrates/local/firecracker-desktop.d.ts +25 -0
- package/dist/substrates/local/firecracker-desktop.js +315 -0
- package/dist/substrates/local/runtime-config.d.ts +6 -0
- package/dist/substrates/local/runtime-config.js +91 -0
- package/dist/substrates/local/runtime-host.d.ts +30 -0
- package/dist/substrates/local/runtime-host.js +143 -0
- package/dist/substrates/local/runtime-release.d.ts +5 -0
- package/dist/substrates/local/runtime-release.js +32 -0
- package/dist/substrates/local/runtime-ssh.d.ts +9 -0
- package/dist/substrates/local/runtime-ssh.js +129 -0
- package/dist/substrates/local/runtime.d.ts +25 -0
- package/dist/substrates/local/runtime.js +190 -0
- package/dist/substrates/shell.d.ts +44 -0
- package/dist/substrates/shell.js +22 -0
- package/dist/tui/actions.d.ts +39 -0
- package/dist/tui/actions.js +203 -0
- package/dist/tui/contract.d.ts +144 -0
- package/dist/tui/contract.js +52 -0
- package/dist/tui/launch.js +172 -0
- package/dist/tui/project.d.ts +10 -0
- package/dist/tui/project.js +17 -0
- package/dist/tui-app.js +125 -125
- package/dist/verify/actor.d.ts +27 -0
- package/dist/verify/actor.js +292 -0
- package/dist/verify/artifacts.d.ts +47 -0
- package/dist/verify/artifacts.js +373 -0
- package/dist/verify/costs.d.ts +30 -0
- package/dist/verify/costs.js +129 -0
- package/dist/verify/liveness.d.ts +7 -0
- package/dist/verify/liveness.js +72 -0
- package/dist/verify/rerun.d.ts +3 -0
- package/dist/verify/rerun.js +46 -0
- package/dist/verify/shared-world-concurrent.d.ts +11 -0
- package/dist/verify/shared-world-concurrent.js +346 -0
- package/dist/verify/shared-world.d.ts +8 -0
- package/dist/verify/shared-world.js +295 -0
- package/dist/verify/subject.d.ts +17 -0
- package/dist/verify/subject.js +123 -0
- package/dist/verify/verify.d.ts +34 -0
- package/dist/verify/verify.js +333 -0
- package/docs/README.md +67 -0
- package/docs/architecture/actor-contract.md +215 -174
- package/docs/architecture/browser-control.md +51 -37
- package/docs/architecture/comms-inbox.md +8 -8
- package/docs/architecture/desktop-recording.md +2 -2
- package/docs/architecture/desktop-sessions.md +33 -21
- package/docs/architecture/external-public-shared-world.md +80 -64
- package/docs/architecture/github-feedback-loop.md +40 -27
- package/docs/architecture/guest-desktop.md +22 -10
- package/docs/architecture/local-browser-runtime.md +30 -21
- package/docs/architecture/observer-review.md +9 -9
- package/docs/architecture/observer.md +53 -57
- package/docs/architecture/participant-media.md +3 -3
- package/docs/architecture/project-layout.md +33 -137
- package/docs/architecture/real-email-receiving.md +7 -6
- package/docs/architecture/restricted-codex-analysis.md +211 -25
- package/docs/architecture/serve.md +89 -87
- package/docs/architecture/state-driven-executor.md +79 -64
- package/docs/architecture/task-protocol-support.md +18 -18
- package/docs/architecture/terminal-product-lane.md +92 -86
- package/docs/contracts/adapter-admission.md +8 -4
- package/docs/contracts/adapter-fixtures.md +6 -6
- package/docs/contracts/core.md +22 -24
- package/docs/contracts/feedback.md +33 -23
- package/docs/contracts/policy.md +28 -31
- package/docs/contracts/run-bundle.md +168 -82
- package/docs/contracts/schemas.md +594 -379
- package/docs/contracts/study-analysis.md +2 -2
- package/docs/contracts/study-costs.md +12 -12
- package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +36 -0
- package/docs/decisions/0002-observer-is-one-self-contained-file.md +30 -0
- package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +35 -0
- package/docs/decisions/0004-participant-desktops-stay-in-the-route.md +31 -0
- package/docs/decisions/README.md +16 -0
- package/docs/goals/current.md +22 -46
- package/docs/principles/actor-fidelity.md +51 -63
- package/docs/principles/engineering.md +81 -0
- package/docs/principles/invariants-and-defaults.md +48 -45
- package/docs/principles/self-driving-harness.md +11 -10
- package/docs/principles/three-roles.md +12 -13
- package/docs/product/automatic-analysis.md +39 -9
- package/docs/product/lobby-trivia-3player-external-public.md +14 -13
- package/docs/product/open-source-install-experience.md +34 -38
- package/docs/ramp/README.md +91 -213
- package/docs/release/open-source-readiness.md +5 -2
- package/docs/release/public-readiness-standard.md +1 -1
- package/examples/README.md +11 -0
- package/examples/participant/README.md +80 -0
- package/examples/participant/app.mjs +55 -0
- package/examples/participant/run.mjs +116 -0
- package/examples/scorer/README.md +29 -0
- package/examples/scorer/run.mjs +63 -0
- package/examples/scorer/scorer.mjs +20 -0
- package/package.json +61 -57
- package/skills/humanish/SKILL.md +112 -83
- package/skills/humanish/agents/openai.yaml +2 -2
- package/dist/actor-contract.d.ts +0 -288
- package/dist/actor-contract.js +0 -340
- package/dist/actor-contract.js.map +0 -1
- package/dist/actor-goal-source.js +0 -32
- package/dist/actor-goal-source.js.map +0 -1
- package/dist/actor-registry.d.ts +0 -77
- package/dist/actor-registry.js +0 -106
- package/dist/actor-registry.js.map +0 -1
- package/dist/actor-stop-cause.d.ts +0 -9
- package/dist/actor-stop-cause.js +0 -42
- package/dist/actor-stop-cause.js.map +0 -1
- package/dist/adapter-extension.d.ts +0 -76
- package/dist/adapter-extension.js +0 -273
- package/dist/adapter-extension.js.map +0 -1
- package/dist/adapter-scorer-loader.d.ts +0 -42
- package/dist/adapter-scorer-loader.js +0 -129
- package/dist/adapter-scorer-loader.js.map +0 -1
- package/dist/affordance.d.ts +0 -53
- package/dist/affordance.js +0 -145
- package/dist/affordance.js.map +0 -1
- package/dist/agent-session.js +0 -43
- package/dist/agent-session.js.map +0 -1
- package/dist/argv.d.ts +0 -1
- package/dist/argv.js +0 -8
- package/dist/argv.js.map +0 -1
- package/dist/artifact-reference.d.ts +0 -22
- package/dist/artifact-reference.js +0 -47
- package/dist/artifact-reference.js.map +0 -1
- package/dist/automatic-analysis-completion.d.ts +0 -25
- package/dist/automatic-analysis-completion.js +0 -56
- package/dist/automatic-analysis-completion.js.map +0 -1
- package/dist/automatic-analysis-config.d.ts +0 -38
- package/dist/automatic-analysis-config.js +0 -68
- package/dist/automatic-analysis-config.js.map +0 -1
- package/dist/automatic-study-analysis.d.ts +0 -17
- package/dist/automatic-study-analysis.js +0 -195
- package/dist/automatic-study-analysis.js.map +0 -1
- package/dist/browser-control-client.d.ts +0 -18
- package/dist/browser-control-client.js +0 -176
- package/dist/browser-control-client.js.map +0 -1
- package/dist/browser-control-dispatcher.d.ts +0 -19
- package/dist/browser-control-dispatcher.js +0 -147
- package/dist/browser-control-dispatcher.js.map +0 -1
- package/dist/browser-control-protocol.d.ts +0 -472
- package/dist/browser-control-protocol.js +0 -185
- package/dist/browser-control-protocol.js.map +0 -1
- package/dist/browser-control-recording-transfer.d.ts +0 -4
- package/dist/browser-control-recording-transfer.js +0 -42
- package/dist/browser-control-recording-transfer.js.map +0 -1
- package/dist/browser-control-transport.d.ts +0 -27
- package/dist/browser-control-transport.js +0 -177
- package/dist/browser-control-transport.js.map +0 -1
- package/dist/browser-evidence-hygiene.js +0 -43
- package/dist/browser-evidence-hygiene.js.map +0 -1
- package/dist/chrome-cdp-probe.d.ts +0 -97
- package/dist/chrome-cdp-probe.js +0 -536
- package/dist/chrome-cdp-probe.js.map +0 -1
- package/dist/claude-agent-sdk.d.ts +0 -94
- package/dist/claude-agent-sdk.js +0 -367
- package/dist/claude-agent-sdk.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/codex-app-server-ui.d.ts +0 -39
- package/dist/codex-app-server-ui.js +0 -357
- package/dist/codex-app-server-ui.js.map +0 -1
- package/dist/codex-app-server.d.ts +0 -144
- package/dist/codex-app-server.js +0 -754
- package/dist/codex-app-server.js.map +0 -1
- package/dist/command-failure.d.ts +0 -43
- package/dist/command-failure.js +0 -73
- package/dist/command-failure.js.map +0 -1
- package/dist/comms-agentmail.d.ts +0 -25
- package/dist/comms-agentmail.js +0 -418
- package/dist/comms-agentmail.js.map +0 -1
- package/dist/comms-catch-host.d.ts +0 -52
- package/dist/comms-catch-host.js +0 -178
- package/dist/comms-catch-host.js.map +0 -1
- package/dist/comms-connections.d.ts +0 -52
- package/dist/comms-connections.js +0 -123
- package/dist/comms-connections.js.map +0 -1
- package/dist/comms-email-catch.d.ts +0 -54
- package/dist/comms-email-catch.js +0 -212
- package/dist/comms-email-catch.js.map +0 -1
- package/dist/comms-evidence.d.ts +0 -27
- package/dist/comms-evidence.js +0 -31
- package/dist/comms-evidence.js.map +0 -1
- package/dist/comms-fake-inbox.d.ts +0 -45
- package/dist/comms-fake-inbox.js +0 -184
- package/dist/comms-fake-inbox.js.map +0 -1
- package/dist/comms-images.d.ts +0 -7
- package/dist/comms-images.js +0 -39
- package/dist/comms-images.js.map +0 -1
- package/dist/comms-inbox.d.ts +0 -66
- package/dist/comms-inbox.js +0 -389
- package/dist/comms-inbox.js.map +0 -1
- package/dist/comms-lease-store.d.ts +0 -91
- package/dist/comms-lease-store.js +0 -495
- package/dist/comms-lease-store.js.map +0 -1
- package/dist/comms-receiving-evidence.d.ts +0 -46
- package/dist/comms-receiving-evidence.js +0 -35
- package/dist/comms-receiving-evidence.js.map +0 -1
- package/dist/comms-receiving-inbox.d.ts +0 -16
- package/dist/comms-receiving-inbox.js +0 -410
- package/dist/comms-receiving-inbox.js.map +0 -1
- package/dist/comms-receiving-runtime.d.ts +0 -25
- package/dist/comms-receiving-runtime.js +0 -45
- package/dist/comms-receiving-runtime.js.map +0 -1
- package/dist/comms-receiving-types.d.ts +0 -98
- package/dist/comms-receiving-types.js +0 -2
- package/dist/comms-receiving-types.js.map +0 -1
- package/dist/comms-receiving.d.ts +0 -58
- package/dist/comms-receiving.js +0 -554
- package/dist/comms-receiving.js.map +0 -1
- package/dist/comms-sandbox-catch.d.ts +0 -229
- package/dist/comms-sandbox-catch.js +0 -737
- package/dist/comms-sandbox-catch.js.map +0 -1
- package/dist/comms-setup.d.ts +0 -40
- package/dist/comms-setup.js +0 -121
- package/dist/comms-setup.js.map +0 -1
- package/dist/comms-types.d.ts +0 -72
- package/dist/comms-types.js +0 -10
- package/dist/comms-types.js.map +0 -1
- package/dist/computer-use-actor.d.ts +0 -76
- package/dist/computer-use-actor.js +0 -68
- package/dist/computer-use-actor.js.map +0 -1
- package/dist/computer-use.d.ts +0 -429
- package/dist/computer-use.js +0 -1749
- package/dist/computer-use.js.map +0 -1
- package/dist/concurrency.js +0 -27
- package/dist/concurrency.js.map +0 -1
- package/dist/concurrent-shared-world-lab.d.ts +0 -186
- package/dist/concurrent-shared-world-lab.js +0 -2179
- package/dist/concurrent-shared-world-lab.js.map +0 -1
- package/dist/core/git-state.d.ts +0 -33
- package/dist/core/git-state.js +0 -277
- package/dist/core/git-state.js.map +0 -1
- package/dist/core/git-workspace.d.ts +0 -31
- package/dist/core/git-workspace.js +0 -447
- package/dist/core/git-workspace.js.map +0 -1
- package/dist/core/index.d.ts +0 -4
- package/dist/core/index.js +0 -3
- package/dist/core/index.js.map +0 -1
- package/dist/core/run-primitives.d.ts +0 -66
- package/dist/core/run-primitives.js +0 -120
- package/dist/core/run-primitives.js.map +0 -1
- package/dist/cua-actor-lab.d.ts +0 -855
- package/dist/cua-actor-lab.js +0 -3545
- package/dist/cua-actor-lab.js.map +0 -1
- package/dist/cua-admission-limit.d.ts +0 -12
- package/dist/cua-admission-limit.js +0 -20
- package/dist/cua-admission-limit.js.map +0 -1
- package/dist/cua-desktop-lane.d.ts +0 -35
- package/dist/cua-desktop-lane.js +0 -13
- package/dist/cua-desktop-lane.js.map +0 -1
- package/dist/cua-diagnostics.d.ts +0 -38
- package/dist/cua-diagnostics.js +0 -68
- package/dist/cua-diagnostics.js.map +0 -1
- package/dist/cua-executor-error.js +0 -48
- package/dist/cua-executor-error.js.map +0 -1
- package/dist/cua-provider-error.d.ts +0 -16
- package/dist/cua-provider-error.js +0 -35
- package/dist/cua-provider-error.js.map +0 -1
- package/dist/cua-speech.js +0 -2
- package/dist/cua-speech.js.map +0 -1
- package/dist/desktop-recorder.d.ts +0 -39
- package/dist/desktop-recorder.js +0 -226
- package/dist/desktop-recorder.js.map +0 -1
- package/dist/desktop-recording-artifact.d.ts +0 -5
- package/dist/desktop-recording-artifact.js +0 -54
- package/dist/desktop-recording-artifact.js.map +0 -1
- package/dist/desktop-recording-types.d.ts +0 -24
- package/dist/desktop-recording-types.js +0 -14
- package/dist/desktop-recording-types.js.map +0 -1
- package/dist/desktop-session.d.ts +0 -41
- package/dist/desktop-session.js +0 -47
- package/dist/desktop-session.js.map +0 -1
- package/dist/device-presets.d.ts +0 -67
- package/dist/device-presets.js +0 -55
- package/dist/device-presets.js.map +0 -1
- package/dist/doctor-lab.d.ts +0 -38
- package/dist/doctor-lab.js +0 -126
- package/dist/doctor-lab.js.map +0 -1
- package/dist/e2b-cua-desktop.d.ts +0 -3
- package/dist/e2b-cua-desktop.js +0 -708
- package/dist/e2b-cua-desktop.js.map +0 -1
- package/dist/e2b-cua-provisioning.d.ts +0 -314
- package/dist/e2b-cua-provisioning.js +0 -1219
- package/dist/e2b-cua-provisioning.js.map +0 -1
- package/dist/e2b-desktop-executor.d.ts +0 -101
- package/dist/e2b-desktop-executor.js +0 -297
- package/dist/e2b-desktop-executor.js.map +0 -1
- package/dist/e2b-desktop-launch.d.ts +0 -243
- package/dist/e2b-desktop-launch.js +0 -234
- package/dist/e2b-desktop-launch.js.map +0 -1
- package/dist/e2b-desktop-media.d.ts +0 -14
- package/dist/e2b-desktop-media.js +0 -58
- package/dist/e2b-desktop-media.js.map +0 -1
- package/dist/e2b-desktop-recording.d.ts +0 -16
- package/dist/e2b-desktop-recording.js +0 -162
- package/dist/e2b-desktop-recording.js.map +0 -1
- package/dist/e2b-desktop-resources.d.ts +0 -11
- package/dist/e2b-desktop-resources.js +0 -33
- package/dist/e2b-desktop-resources.js.map +0 -1
- package/dist/e2b-desktop-screenshot-cleanup.d.ts +0 -15
- package/dist/e2b-desktop-screenshot-cleanup.js +0 -67
- package/dist/e2b-desktop-screenshot-cleanup.js.map +0 -1
- package/dist/e2b-desktop-session.d.ts +0 -7
- package/dist/e2b-desktop-session.js +0 -29
- package/dist/e2b-desktop-session.js.map +0 -1
- package/dist/e2b-detached.d.ts +0 -53
- package/dist/e2b-detached.js +0 -130
- package/dist/e2b-detached.js.map +0 -1
- package/dist/e2b-terminal-lab.d.ts +0 -395
- package/dist/e2b-terminal-lab.js +0 -2041
- package/dist/e2b-terminal-lab.js.map +0 -1
- package/dist/env-file.d.ts +0 -14
- package/dist/env-file.js +0 -108
- package/dist/env-file.js.map +0 -1
- package/dist/export-bundle.d.ts +0 -7
- package/dist/export-bundle.js +0 -441
- package/dist/export-bundle.js.map +0 -1
- package/dist/export.d.ts +0 -49
- package/dist/export.js +0 -308
- package/dist/export.js.map +0 -1
- package/dist/feedback-proof.d.ts +0 -8
- package/dist/feedback-proof.js +0 -44
- package/dist/feedback-proof.js.map +0 -1
- package/dist/feedback.d.ts +0 -76
- package/dist/feedback.js +0 -496
- package/dist/feedback.js.map +0 -1
- package/dist/first-run-path.d.ts +0 -55
- package/dist/first-run-path.js +0 -136
- package/dist/first-run-path.js.map +0 -1
- package/dist/frame-signature.d.ts +0 -24
- package/dist/frame-signature.js +0 -128
- package/dist/frame-signature.js.map +0 -1
- package/dist/guest-bootstrap.d.ts +0 -55
- package/dist/guest-bootstrap.js +0 -285
- package/dist/guest-bootstrap.js.map +0 -1
- package/dist/guest-browser-tools.d.ts +0 -8
- package/dist/guest-browser-tools.js +0 -66
- package/dist/guest-browser-tools.js.map +0 -1
- package/dist/guest-chromium-text.d.ts +0 -27
- package/dist/guest-chromium-text.js +0 -281
- package/dist/guest-chromium-text.js.map +0 -1
- package/dist/guest-desktop-executor.d.ts +0 -22
- package/dist/guest-desktop-executor.js +0 -178
- package/dist/guest-desktop-executor.js.map +0 -1
- package/dist/guest-desktop-media.d.ts +0 -33
- package/dist/guest-desktop-media.js +0 -281
- package/dist/guest-desktop-media.js.map +0 -1
- package/dist/guest-desktop-native.d.ts +0 -14
- package/dist/guest-desktop-native.js +0 -131
- package/dist/guest-desktop-native.js.map +0 -1
- package/dist/guest-media-config.d.ts +0 -15
- package/dist/guest-media-config.js +0 -8
- package/dist/guest-media-config.js.map +0 -1
- package/dist/guest-media-worker.js.map +0 -1
- package/dist/guest-runtime-desktop.d.ts +0 -42
- package/dist/guest-runtime-desktop.js +0 -314
- package/dist/guest-runtime-desktop.js.map +0 -1
- package/dist/guest-runtime-main.js.map +0 -1
- package/dist/guest-runtime-revision.js.map +0 -1
- package/dist/guest-runtime.d.ts +0 -31
- package/dist/guest-runtime.js +0 -99
- package/dist/guest-runtime.js.map +0 -1
- package/dist/image-evidence.d.ts +0 -2
- package/dist/image-evidence.js +0 -47
- package/dist/image-evidence.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init-templates.d.ts +0 -25
- package/dist/init-templates.js +0 -542
- package/dist/init-templates.js.map +0 -1
- package/dist/init.d.ts +0 -38
- package/dist/init.js +0 -532
- package/dist/init.js.map +0 -1
- package/dist/key-resolution.d.ts +0 -67
- package/dist/key-resolution.js +0 -375
- package/dist/key-resolution.js.map +0 -1
- package/dist/lab-app-runner.d.ts +0 -78
- package/dist/lab-app-runner.js +0 -403
- package/dist/lab-app-runner.js.map +0 -1
- package/dist/lab-config.d.ts +0 -968
- package/dist/lab-config.js +0 -2714
- package/dist/lab-config.js.map +0 -1
- package/dist/lab-engine.d.ts +0 -97
- package/dist/lab-engine.js +0 -285
- package/dist/lab-engine.js.map +0 -1
- package/dist/lab-preflight.d.ts +0 -70
- package/dist/lab-preflight.js +0 -388
- package/dist/lab-preflight.js.map +0 -1
- package/dist/lab-summary.d.ts +0 -57
- package/dist/lab-summary.js +0 -126
- package/dist/lab-summary.js.map +0 -1
- package/dist/labs.d.ts +0 -59
- package/dist/labs.js +0 -385
- package/dist/labs.js.map +0 -1
- package/dist/listen.js +0 -84
- package/dist/listen.js.map +0 -1
- package/dist/local-agent-claude-session.d.ts +0 -45
- package/dist/local-agent-claude-session.js +0 -203
- package/dist/local-agent-claude-session.js.map +0 -1
- package/dist/local-agent-cli.d.ts +0 -121
- package/dist/local-agent-cli.js +0 -427
- package/dist/local-agent-cli.js.map +0 -1
- package/dist/local-captured-inbox.d.ts +0 -6
- package/dist/local-captured-inbox.js +0 -65
- package/dist/local-captured-inbox.js.map +0 -1
- package/dist/local-firecracker-desktop.d.ts +0 -23
- package/dist/local-firecracker-desktop.js +0 -191
- package/dist/local-firecracker-desktop.js.map +0 -1
- package/dist/local-firecracker-study.d.ts +0 -9
- package/dist/local-firecracker-study.js +0 -135
- package/dist/local-firecracker-study.js.map +0 -1
- package/dist/local-runtime-config.d.ts +0 -6
- package/dist/local-runtime-config.js +0 -60
- package/dist/local-runtime-config.js.map +0 -1
- package/dist/local-runtime-host.d.ts +0 -31
- package/dist/local-runtime-host.js +0 -128
- package/dist/local-runtime-host.js.map +0 -1
- package/dist/local-runtime-release.d.ts +0 -7
- package/dist/local-runtime-release.js +0 -33
- package/dist/local-runtime-release.js.map +0 -1
- package/dist/local-runtime-ssh.d.ts +0 -27
- package/dist/local-runtime-ssh.js +0 -91
- package/dist/local-runtime-ssh.js.map +0 -1
- package/dist/local-runtime.d.ts +0 -25
- package/dist/local-runtime.js +0 -133
- package/dist/local-runtime.js.map +0 -1
- package/dist/observer-data.d.ts +0 -114
- package/dist/observer-data.js +0 -224
- package/dist/observer-data.js.map +0 -1
- package/dist/observer-library.js +0 -191
- package/dist/observer-library.js.map +0 -1
- package/dist/observer-serve.d.ts +0 -99
- package/dist/observer-serve.js +0 -284
- package/dist/observer-serve.js.map +0 -1
- package/dist/observer-static.js +0 -357
- package/dist/observer-static.js.map +0 -1
- package/dist/observer.d.ts +0 -118
- package/dist/observer.js +0 -947
- package/dist/observer.js.map +0 -1
- package/dist/openai-responses-cu.d.ts +0 -158
- package/dist/openai-responses-cu.js +0 -714
- package/dist/openai-responses-cu.js.map +0 -1
- package/dist/orientation.d.ts +0 -29
- package/dist/orientation.js +0 -95
- package/dist/orientation.js.map +0 -1
- package/dist/oss-lab.d.ts +0 -55
- package/dist/oss-lab.js +0 -344
- package/dist/oss-lab.js.map +0 -1
- package/dist/oss-meta-lab-scoring.d.ts +0 -15
- package/dist/oss-meta-lab-scoring.js +0 -145
- package/dist/oss-meta-lab-scoring.js.map +0 -1
- package/dist/oss-meta-lab.d.ts +0 -287
- package/dist/oss-meta-lab.js +0 -4551
- package/dist/oss-meta-lab.js.map +0 -1
- package/dist/oss-remote-telemetry.d.ts +0 -77
- package/dist/oss-remote-telemetry.js +0 -403
- package/dist/oss-remote-telemetry.js.map +0 -1
- package/dist/output-token-limit.js +0 -5
- package/dist/output-token-limit.js.map +0 -1
- package/dist/participant-assignment.d.ts +0 -12
- package/dist/participant-assignment.js +0 -15
- package/dist/participant-assignment.js.map +0 -1
- package/dist/persona-resolve.d.ts +0 -44
- package/dist/persona-resolve.js +0 -109
- package/dist/persona-resolve.js.map +0 -1
- package/dist/persona.d.ts +0 -35
- package/dist/persona.js +0 -141
- package/dist/persona.js.map +0 -1
- package/dist/pi-agent-core.d.ts +0 -77
- package/dist/pi-agent-core.js +0 -207
- package/dist/pi-agent-core.js.map +0 -1
- package/dist/pricing.d.ts +0 -145
- package/dist/pricing.js +0 -277
- package/dist/pricing.js.map +0 -1
- package/dist/program.d.ts +0 -96
- package/dist/program.js +0 -4029
- package/dist/program.js.map +0 -1
- package/dist/reasoning-effort.js +0 -26
- package/dist/reasoning-effort.js.map +0 -1
- package/dist/reclaim.d.ts +0 -31
- package/dist/reclaim.js +0 -90
- package/dist/reclaim.js.map +0 -1
- package/dist/redaction.d.ts +0 -90
- package/dist/redaction.js +0 -294
- package/dist/redaction.js.map +0 -1
- package/dist/restricted-codex-analysis.d.ts +0 -15
- package/dist/restricted-codex-analysis.js +0 -13
- package/dist/restricted-codex-analysis.js.map +0 -1
- package/dist/restricted-codex-participant-policy.d.ts +0 -44
- package/dist/restricted-codex-participant-policy.js +0 -43
- package/dist/restricted-codex-participant-policy.js.map +0 -1
- package/dist/restricted-codex-participant-run.d.ts +0 -20
- package/dist/restricted-codex-participant-run.js +0 -79
- package/dist/restricted-codex-participant-run.js.map +0 -1
- package/dist/restricted-codex-participant.d.ts +0 -20
- package/dist/restricted-codex-participant.js +0 -250
- package/dist/restricted-codex-participant.js.map +0 -1
- package/dist/restricted-codex-policy.d.ts +0 -64
- package/dist/restricted-codex-policy.js +0 -176
- package/dist/restricted-codex-policy.js.map +0 -1
- package/dist/restricted-codex-session.d.ts +0 -44
- package/dist/restricted-codex-session.js +0 -657
- package/dist/restricted-codex-session.js.map +0 -1
- package/dist/restricted-codex-transport.d.ts +0 -69
- package/dist/restricted-codex-transport.js +0 -296
- package/dist/restricted-codex-transport.js.map +0 -1
- package/dist/run-detail.d.ts +0 -61
- package/dist/run-detail.js +0 -137
- package/dist/run-detail.js.map +0 -1
- package/dist/run-index.d.ts +0 -71
- package/dist/run-index.js +0 -206
- package/dist/run-index.js.map +0 -1
- package/dist/run-narration-secrets.js +0 -68
- package/dist/run-narration-secrets.js.map +0 -1
- package/dist/run-paths.d.ts +0 -56
- package/dist/run-paths.js +0 -355
- package/dist/run-paths.js.map +0 -1
- package/dist/run-projection.d.ts +0 -186
- package/dist/run-projection.js +0 -350
- package/dist/run-projection.js.map +0 -1
- package/dist/run-status.d.ts +0 -139
- package/dist/run-status.js +0 -218
- package/dist/run-status.js.map +0 -1
- package/dist/run.d.ts +0 -1255
- package/dist/run.js +0 -5947
- package/dist/run.js.map +0 -1
- package/dist/sandbox-receipts.d.ts +0 -19
- package/dist/sandbox-receipts.js +0 -51
- package/dist/sandbox-receipts.js.map +0 -1
- package/dist/screenshot-image.d.ts +0 -11
- package/dist/screenshot-image.js +0 -26
- package/dist/screenshot-image.js.map +0 -1
- package/dist/scripted-browser-actor.d.ts +0 -297
- package/dist/scripted-browser-actor.js +0 -1399
- package/dist/scripted-browser-actor.js.map +0 -1
- package/dist/scripted-browser-lab.d.ts +0 -121
- package/dist/scripted-browser-lab.js +0 -852
- package/dist/scripted-browser-lab.js.map +0 -1
- package/dist/secret-prompt.js +0 -36
- package/dist/secret-prompt.js.map +0 -1
- package/dist/selected-output-paths.d.ts +0 -52
- package/dist/selected-output-paths.js +0 -366
- package/dist/selected-output-paths.js.map +0 -1
- package/dist/serve-exposure.d.ts +0 -62
- package/dist/serve-exposure.js +0 -129
- package/dist/serve-exposure.js.map +0 -1
- package/dist/serve-http.js +0 -45
- package/dist/serve-http.js.map +0 -1
- package/dist/serve-tunnel.js +0 -113
- package/dist/serve-tunnel.js.map +0 -1
- package/dist/shared-world-lab.d.ts +0 -269
- package/dist/shared-world-lab.js +0 -1422
- package/dist/shared-world-lab.js.map +0 -1
- package/dist/source-archive.d.ts +0 -82
- package/dist/source-archive.js +0 -408
- package/dist/source-archive.js.map +0 -1
- package/dist/stats.d.ts +0 -82
- package/dist/stats.js +0 -219
- package/dist/stats.js.map +0 -1
- package/dist/stop-conditions.d.ts +0 -39
- package/dist/stop-conditions.js +0 -66
- package/dist/stop-conditions.js.map +0 -1
- package/dist/study-analysis-codex-config.d.ts +0 -11
- package/dist/study-analysis-codex-config.js +0 -34
- package/dist/study-analysis-codex-config.js.map +0 -1
- package/dist/study-analysis-engine.d.ts +0 -47
- package/dist/study-analysis-engine.js +0 -327
- package/dist/study-analysis-engine.js.map +0 -1
- package/dist/study-analysis-evidence.d.ts +0 -27
- package/dist/study-analysis-evidence.js +0 -660
- package/dist/study-analysis-evidence.js.map +0 -1
- package/dist/study-analysis-job.d.ts +0 -97
- package/dist/study-analysis-job.js +0 -214
- package/dist/study-analysis-job.js.map +0 -1
- package/dist/study-analysis-provider.d.ts +0 -40
- package/dist/study-analysis-provider.js +0 -170
- package/dist/study-analysis-provider.js.map +0 -1
- package/dist/study-analysis-service.d.ts +0 -59
- package/dist/study-analysis-service.js +0 -257
- package/dist/study-analysis-service.js.map +0 -1
- package/dist/study-analysis-sharing.d.ts +0 -11
- package/dist/study-analysis-sharing.js +0 -35
- package/dist/study-analysis-sharing.js.map +0 -1
- package/dist/study-analysis-store.d.ts +0 -47
- package/dist/study-analysis-store.js +0 -493
- package/dist/study-analysis-store.js.map +0 -1
- package/dist/study-analysis-validation.d.ts +0 -618
- package/dist/study-analysis-validation.js +0 -384
- package/dist/study-analysis-validation.js.map +0 -1
- package/dist/study-analysis.d.ts +0 -206
- package/dist/study-analysis.js +0 -4
- package/dist/study-analysis.js.map +0 -1
- package/dist/study-costs.js +0 -114
- package/dist/study-costs.js.map +0 -1
- package/dist/subject-runtime.d.ts +0 -23
- package/dist/subject-runtime.js +0 -70
- package/dist/subject-runtime.js.map +0 -1
- package/dist/tasks.d.ts +0 -90
- package/dist/tasks.js +0 -144
- package/dist/tasks.js.map +0 -1
- package/dist/telemetry.js +0 -324
- package/dist/telemetry.js.map +0 -1
- package/dist/terminal-agent-actor.d.ts +0 -41
- package/dist/terminal-agent-actor.js +0 -25
- package/dist/terminal-agent-actor.js.map +0 -1
- package/dist/terminal-encoding.js +0 -80
- package/dist/terminal-encoding.js.map +0 -1
- package/dist/terminal-node-bootstrap.d.ts +0 -4
- package/dist/terminal-node-bootstrap.js +0 -58
- package/dist/terminal-node-bootstrap.js.map +0 -1
- package/dist/terminal-participant-activity.d.ts +0 -6
- package/dist/terminal-participant-activity.js +0 -34
- package/dist/terminal-participant-activity.js.map +0 -1
- package/dist/terminal-runtime-auth.d.ts +0 -13
- package/dist/terminal-runtime-auth.js +0 -24
- package/dist/terminal-runtime-auth.js.map +0 -1
- package/dist/terminal-runtime.d.ts +0 -16
- package/dist/terminal-runtime.js +0 -42
- package/dist/terminal-runtime.js.map +0 -1
- package/dist/terminal-token-usage.d.ts +0 -15
- package/dist/terminal-token-usage.js +0 -94
- package/dist/terminal-token-usage.js.map +0 -1
- package/dist/tui-actions.d.ts +0 -39
- package/dist/tui-actions.js +0 -178
- package/dist/tui-actions.js.map +0 -1
- package/dist/tui-contract.d.ts +0 -141
- package/dist/tui-contract.js +0 -54
- package/dist/tui-contract.js.map +0 -1
- package/dist/tui-launch.js +0 -167
- package/dist/tui-launch.js.map +0 -1
- package/dist/tui-project.d.ts +0 -9
- package/dist/tui-project.js +0 -18
- package/dist/tui-project.js.map +0 -1
- package/docs/architecture/examples/state-driven-local-app/README.md +0 -80
- package/docs/architecture/examples/state-driven-local-app/app.mjs +0 -48
- package/docs/architecture/examples/state-driven-local-app/runner.mjs +0 -105
- package/docs/architecture/local-codex-tui-actor.md +0 -213
- package/docs/architecture/oss-lab-poc.md +0 -250
- package/docs/architecture/runtime-broker-core.md +0 -30
- package/docs/release/0.100.0-local-setup.md +0 -31
- package/docs/release/0.100.1-participant-continuity.md +0 -20
- package/docs/release/0.101.0-codex-ui-tools.md +0 -28
- package/docs/release/0.102.0-participant-media.md +0 -43
- package/docs/release/0.103.0-desktop-recording.md +0 -29
- package/docs/release/0.103.1-analysis-capture-allocation.md +0 -18
- package/docs/release/0.103.2-analysis-ending-context.md +0 -21
- package/docs/release/0.104.0-local-captured-inboxes.md +0 -29
- package/docs/release/0.104.1-recording-startup.md +0 -24
- package/docs/release/0.104.2-recording-timestamps.md +0 -32
- package/docs/release/0.104.3-local-smtp-catch.md +0 -15
- package/docs/release/0.20.0-external-public-shared-world.md +0 -43
- package/docs/release/0.84.0-redacted-evidence.md +0 -42
- package/docs/release/0.84.1-portable-feedback.md +0 -20
- package/docs/release/0.85.0-observer-review.md +0 -56
- package/docs/release/0.85.1-observer-continuity.md +0 -20
- package/docs/release/0.86.0-participant-evidence.md +0 -50
- package/docs/release/0.86.1-task-preflight-saved-recordings.md +0 -40
- package/docs/release/0.87.0-participant-endings-and-phone-review.md +0 -64
- package/docs/release/0.88.0-study-diagnostics.md +0 -43
- package/docs/release/0.88.1-completion-evidence-and-local-app.md +0 -79
- package/docs/release/0.88.2-sequential-study-budgets.md +0 -57
- package/docs/release/0.89.0-study-findings.md +0 -79
- package/docs/release/0.89.1-analysis-finished-notice.md +0 -24
- package/docs/release/0.90.0-automatic-analysis.md +0 -21
- package/docs/release/0.91.0-analysis-quality-and-defaults.md +0 -33
- package/docs/release/0.91.1-study-review-polish.md +0 -28
- package/docs/release/0.92.0-grid-playback.md +0 -22
- package/docs/release/0.93.0-global-playback.md +0 -26
- package/docs/release/0.93.1-observer-review-controls.md +0 -24
- package/docs/release/0.94.0-reliability.md +0 -48
- package/docs/release/0.95.0-connections-setup.md +0 -38
- package/docs/release/0.96.0-real-email-receiving.md +0 -47
- package/docs/release/0.96.1-browser-navigation.md +0 -22
- package/docs/release/0.97.0-codex-account-analysis.md +0 -45
- package/docs/release/0.98.0-local-browser-studies.md +0 -31
- package/docs/release/0.99.0-local-browser-mac.md +0 -34
- package/docs/release/0.99.1-action-recovery.md +0 -19
- /package/dist/{agent-session.d.ts → actors/agent-session.d.ts} +0 -0
- /package/dist/{cua-executor-error.d.ts → actors/computer-use/executor-error.d.ts} +0 -0
- /package/dist/{cua-speech.d.ts → actors/computer-use/speech.d.ts} +0 -0
- /package/dist/{actor-goal-source.d.ts → actors/goal-source.d.ts} +0 -0
- /package/dist/{output-token-limit.d.ts → actors/output-token-limit.d.ts} +0 -0
- /package/dist/{reasoning-effort.d.ts → actors/reasoning-effort.d.ts} +0 -0
- /package/dist/{secret-prompt.d.ts → cli/secret-prompt.d.ts} +0 -0
- /package/dist/{telemetry.d.ts → cli/telemetry.d.ts} +0 -0
- /package/dist/{browser-evidence-hygiene.d.ts → evidence/browser-hygiene.d.ts} +0 -0
- /package/dist/{serve-http.d.ts → observer/http.d.ts} +0 -0
- /package/dist/{observer-library.d.ts → observer/library.d.ts} +0 -0
- /package/dist/{listen.d.ts → observer/listen.d.ts} +0 -0
- /package/dist/{observer-static.d.ts → observer/static.d.ts} +0 -0
- /package/dist/{serve-tunnel.d.ts → observer/tunnel.d.ts} +0 -0
- /package/dist/{terminal-encoding.d.ts → routes/terminal/encoding.d.ts} +0 -0
- /package/dist/{concurrency.d.ts → run/concurrency.d.ts} +0 -0
- /package/dist/{study-costs.d.ts → run/costs.d.ts} +0 -0
- /package/dist/{run-narration-secrets.d.ts → run/transient-comms-secrets.d.ts} +0 -0
- /package/dist/{tui-launch.d.ts → tui/launch.d.ts} +0 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
// A pattern scan reads characters, so a file can hide a secret by encoding it. scanEncodedText
|
|
2
|
+
// undoes the encodings a reader undoes for free (JSON and JS escapes, percent-encoding, HTML
|
|
3
|
+
// entities) and looks inside base64 runs. verify and bundle export share decodeEscapes, so they
|
|
4
|
+
// judge the same decoded text.
|
|
5
|
+
import { createHash } from "node:crypto";
|
|
6
|
+
import { readPlainText } from "./plain-text.js";
|
|
7
|
+
import { containsSensitive } from "./redaction.js";
|
|
8
|
+
// HTML5 named references that stand for printable ASCII. Letters and digits have only numeric
|
|
9
|
+
// references, which decodeEscapes handles.
|
|
10
|
+
const ASCII_ENTITIES = {
|
|
11
|
+
amp: "&",
|
|
12
|
+
apos: "'",
|
|
13
|
+
ast: "*",
|
|
14
|
+
bsol: "\\",
|
|
15
|
+
colon: ":",
|
|
16
|
+
comma: ",",
|
|
17
|
+
commat: "@",
|
|
18
|
+
dollar: "$",
|
|
19
|
+
equals: "=",
|
|
20
|
+
excl: "!",
|
|
21
|
+
grave: "`",
|
|
22
|
+
gt: ">",
|
|
23
|
+
hat: "^",
|
|
24
|
+
lcub: "{",
|
|
25
|
+
lowbar: "_",
|
|
26
|
+
lpar: "(",
|
|
27
|
+
lsqb: "[",
|
|
28
|
+
lt: "<",
|
|
29
|
+
num: "#",
|
|
30
|
+
percnt: "%",
|
|
31
|
+
period: ".",
|
|
32
|
+
plus: "+",
|
|
33
|
+
quest: "?",
|
|
34
|
+
quot: '"',
|
|
35
|
+
rcub: "}",
|
|
36
|
+
rpar: ")",
|
|
37
|
+
rsqb: "]",
|
|
38
|
+
semi: ";",
|
|
39
|
+
sol: "/",
|
|
40
|
+
verbar: "|",
|
|
41
|
+
};
|
|
42
|
+
function codePoint(value, original) {
|
|
43
|
+
return Number.isInteger(value) && value >= 0 && value <= 0x10ffff
|
|
44
|
+
? String.fromCodePoint(value)
|
|
45
|
+
: original;
|
|
46
|
+
}
|
|
47
|
+
/** Undoes JSON and JS escapes, percent-encoding and HTML character references, one pass each. */
|
|
48
|
+
export function decodeEscapes(text) {
|
|
49
|
+
return text
|
|
50
|
+
.replace(/\\u([0-9a-f]{4})/gi, (match, hex) => codePoint(Number.parseInt(hex, 16), match))
|
|
51
|
+
.replace(/\\x([0-9a-f]{2})/gi, (match, hex) => codePoint(Number.parseInt(hex, 16), match))
|
|
52
|
+
.replace(/\\\//g, "/")
|
|
53
|
+
.replace(/%([0-9a-f]{2})/gi, (match, hex) => codePoint(Number.parseInt(hex, 16), match))
|
|
54
|
+
.replace(/&#x([0-9a-f]{1,6});?/gi, (match, hex) => codePoint(Number.parseInt(hex, 16), match))
|
|
55
|
+
.replace(/&#(\d{1,7});?/g, (match, digits) => codePoint(Number.parseInt(digits, 10), match))
|
|
56
|
+
.replace(/&([a-z]+);/gi, (match, name) => ASCII_ENTITIES[name.toLowerCase()] ?? match);
|
|
57
|
+
}
|
|
58
|
+
// Sixteen characters hold twelve bytes, enough for the start of a key. Shorter runs are mostly
|
|
59
|
+
// words and identifiers.
|
|
60
|
+
const BASE64_RUN = /[A-Za-z0-9+/]{16,}={0,2}/g;
|
|
61
|
+
// The URL-safe alphabet swaps `+/` for `-_`. Only runs that use `-` or `_` need this pass.
|
|
62
|
+
const BASE64URL_RUN = /[A-Za-z0-9_-]{16,}={0,2}/g;
|
|
63
|
+
// MIME and PEM wrap base64 at 64 or 76 characters a line. The lookbehind starts a match only at the
|
|
64
|
+
// start of a run, and each lookahead-backreference pair takes a line whole, so a long unwrapped run
|
|
65
|
+
// cannot backtrack.
|
|
66
|
+
const WRAPPED_BASE64 = /(?<![A-Za-z0-9+/])(?=([A-Za-z0-9+/]{16,}))\1(?:[ \t]*\r?\n[ \t]*(?=([A-Za-z0-9+/]{4,}))\2)+={0,2}/g;
|
|
67
|
+
// Hex-encoded text, at least sixteen bytes of it.
|
|
68
|
+
const HEX_RUN = /(?:[0-9a-f]{2}){16,}/gi;
|
|
69
|
+
// A base64 run that decodes to bytes that are neither text nor an archive is unreadable only past
|
|
70
|
+
// this length. Across 173 real run folders surveyed on 2026-10-01, the longest such run outside
|
|
71
|
+
// observer/index.html was a 69-character URL path in a terminal log; base64 of a 94-byte payload,
|
|
72
|
+
// such as a UTF-16 key line, is 128 characters.
|
|
73
|
+
const MIN_OPAQUE_BASE64_RUN = 128;
|
|
74
|
+
// Filler such as one letter repeated decodes to repeated bytes. Base64 of compressed, encrypted or
|
|
75
|
+
// image bytes uses most of the 64 characters within 128 of them.
|
|
76
|
+
const MIN_OPAQUE_DISTINCT_CHARACTERS = 16;
|
|
77
|
+
// gzip, zip, 7z, bzip2, xz and zstd.
|
|
78
|
+
const ARCHIVE_MAGIC = [
|
|
79
|
+
[0x1f, 0x8b],
|
|
80
|
+
[0x50, 0x4b, 0x03, 0x04],
|
|
81
|
+
[0x37, 0x7a, 0xbc, 0xaf, 0x27, 0x1c],
|
|
82
|
+
[0x42, 0x5a, 0x68],
|
|
83
|
+
[0xfd, 0x37, 0x7a, 0x58, 0x5a, 0x00],
|
|
84
|
+
[0x28, 0xb5, 0x2f, 0xfd],
|
|
85
|
+
];
|
|
86
|
+
const CONTROL_CHARACTERS = /[\x00-\x08\x0b\x0c\x0e-\x1f]/;
|
|
87
|
+
// Base64 inside base64 is read this many levels deep.
|
|
88
|
+
const MAX_DEPTH = 2;
|
|
89
|
+
function startsWithArchive(bytes) {
|
|
90
|
+
return ARCHIVE_MAGIC.some((magic) => magic.every((byte, index) => bytes[index] === byte));
|
|
91
|
+
}
|
|
92
|
+
/** UTF-16 text, either byte order, that is mostly ASCII as a key would be; random bytes rarely qualify. */
|
|
93
|
+
function utf16Text(bytes) {
|
|
94
|
+
if (bytes.length < 4 || bytes.length % 2 !== 0)
|
|
95
|
+
return undefined;
|
|
96
|
+
// Every ASCII character in UTF-16, in either byte order, has a 0x00 byte. Without one the decoded
|
|
97
|
+
// text has no ASCII, so the 90% rule below would reject it, and none of the sensitive patterns
|
|
98
|
+
// could match it: each needs ASCII characters (sensitivePatterns, pinned in
|
|
99
|
+
// tests/evidence/encoded-text.test.ts). Skipping the decode changes no result.
|
|
100
|
+
if (!bytes.includes(0))
|
|
101
|
+
return undefined;
|
|
102
|
+
for (const encoding of ["utf-16le", "utf-16be"]) {
|
|
103
|
+
let text;
|
|
104
|
+
try {
|
|
105
|
+
text = new TextDecoder(encoding, { fatal: true }).decode(bytes);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (CONTROL_CHARACTERS.test(text))
|
|
111
|
+
continue;
|
|
112
|
+
let ascii = 0;
|
|
113
|
+
for (const character of text)
|
|
114
|
+
if (character.charCodeAt(0) < 0x80)
|
|
115
|
+
ascii += 1;
|
|
116
|
+
if (ascii >= text.length * 0.9)
|
|
117
|
+
return text;
|
|
118
|
+
}
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
/** The printable ASCII stretches of binary bytes, one per line, as `strings` would show them. */
|
|
122
|
+
function printableStretches(bytes) {
|
|
123
|
+
return Buffer.from(bytes)
|
|
124
|
+
.toString("latin1")
|
|
125
|
+
.replace(/[^\x20-\x7e]+/g, "\n");
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Escapes a transfer encoding adds: JSON whitespace escapes, and quoted-printable soft line breaks
|
|
129
|
+
* and `=XX` bytes. Bundle export does not apply these, so they stay out of decodeEscapes.
|
|
130
|
+
*/
|
|
131
|
+
function decodeTransferEscapes(text) {
|
|
132
|
+
return text
|
|
133
|
+
.replace(/\\n/g, "\n")
|
|
134
|
+
.replace(/\\r/g, "\r")
|
|
135
|
+
.replace(/\\t/g, "\t")
|
|
136
|
+
.replace(/=\r?\n/g, "")
|
|
137
|
+
.replace(/=([0-9A-F]{2})/g, (match, hex) => codePoint(Number.parseInt(hex, 16), match));
|
|
138
|
+
}
|
|
139
|
+
const CLEAN = Object.freeze({ sensitive: false, opaque: false });
|
|
140
|
+
const SENSITIVE = Object.freeze({ sensitive: true, opaque: false });
|
|
141
|
+
function inspectDecoded(bytes, run, options, depth) {
|
|
142
|
+
if (startsWithArchive(bytes))
|
|
143
|
+
return { sensitive: false, opaque: options.allowOpaqueBase64 !== true };
|
|
144
|
+
const plain = readPlainText(bytes);
|
|
145
|
+
const inner = plain.ok ? plain.text : utf16Text(bytes);
|
|
146
|
+
if (inner !== undefined) {
|
|
147
|
+
if (depth < MAX_DEPTH)
|
|
148
|
+
return scanEncodedText(inner, options, depth + 1);
|
|
149
|
+
const innerDecoded = decodeEscapes(inner);
|
|
150
|
+
return containsSensitive(inner) || (innerDecoded !== inner && containsSensitive(innerDecoded))
|
|
151
|
+
? SENSITIVE
|
|
152
|
+
: CLEAN;
|
|
153
|
+
}
|
|
154
|
+
// A key next to a few binary bytes is still a printable stretch.
|
|
155
|
+
if (containsSensitive(printableStretches(bytes)))
|
|
156
|
+
return SENSITIVE;
|
|
157
|
+
return {
|
|
158
|
+
sensitive: false,
|
|
159
|
+
opaque: run.length >= MIN_OPAQUE_BASE64_RUN &&
|
|
160
|
+
new Set(run).size >= MIN_OPAQUE_DISTINCT_CHARACTERS &&
|
|
161
|
+
options.allowOpaqueBase64 !== true,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Scans text for secrets as written, after decodeEscapes and transfer escapes, and inside each
|
|
166
|
+
* base64 (standard, URL-safe or line-wrapped) and hex run. A run that decodes to text is scanned in
|
|
167
|
+
* turn. A run that decodes to an archive, or to other binary past MIN_OPAQUE_BASE64_RUN characters,
|
|
168
|
+
* is opaque unless the caller allows opaque runs.
|
|
169
|
+
*/
|
|
170
|
+
export function scanEncodedText(text, options = {}, depth = 0) {
|
|
171
|
+
const decoded = decodeEscapes(text);
|
|
172
|
+
const expanded = decodeTransferEscapes(decoded);
|
|
173
|
+
// A decoding that returns the same string would match the same way, so it is not matched again.
|
|
174
|
+
if (containsSensitive(text) ||
|
|
175
|
+
(decoded !== text && containsSensitive(decoded)) ||
|
|
176
|
+
(expanded !== decoded && containsSensitive(expanded)))
|
|
177
|
+
return SENSITIVE;
|
|
178
|
+
const runs = [];
|
|
179
|
+
for (const [match] of expanded.matchAll(BASE64_RUN)) {
|
|
180
|
+
// Hex digests and ids decode to noise; the hex pass below reads hex as hex.
|
|
181
|
+
if (/^[0-9a-f]+$/i.test(match.replace(/=+$/, "")))
|
|
182
|
+
continue;
|
|
183
|
+
runs.push({ run: match, bytes: Buffer.from(match, "base64") });
|
|
184
|
+
}
|
|
185
|
+
for (const [match] of expanded.matchAll(BASE64URL_RUN)) {
|
|
186
|
+
if (/[-_]/.test(match))
|
|
187
|
+
runs.push({ run: match, bytes: Buffer.from(match, "base64url") });
|
|
188
|
+
}
|
|
189
|
+
for (const [match] of expanded.matchAll(WRAPPED_BASE64)) {
|
|
190
|
+
const run = match.replace(/\s+/g, "");
|
|
191
|
+
runs.push({ run, bytes: Buffer.from(run, "base64") });
|
|
192
|
+
}
|
|
193
|
+
let opaque = false;
|
|
194
|
+
for (const { run, bytes } of runs) {
|
|
195
|
+
const result = inspectDecoded(bytes, run, options, depth);
|
|
196
|
+
if (result.sensitive)
|
|
197
|
+
return result;
|
|
198
|
+
opaque ||= result.opaque;
|
|
199
|
+
}
|
|
200
|
+
for (const [match] of expanded.matchAll(HEX_RUN)) {
|
|
201
|
+
const plain = readPlainText(Buffer.from(match, "hex"));
|
|
202
|
+
if (plain.ok && depth < MAX_DEPTH && scanEncodedText(plain.text, options, depth + 1).sensitive)
|
|
203
|
+
return SENSITIVE;
|
|
204
|
+
}
|
|
205
|
+
return { sensitive: false, opaque };
|
|
206
|
+
}
|
|
207
|
+
// Bump when scanEncodedText, decodeEscapes or the sensitive patterns change what they return. The
|
|
208
|
+
// cache lives in one process, so the version guards results across a hot reload or a test that
|
|
209
|
+
// swaps the scanner.
|
|
210
|
+
const ENCODED_SCAN_VERSION = 1;
|
|
211
|
+
// Distinct files one process verifies in a burst (a run's files, a serve library's runs).
|
|
212
|
+
const SCAN_CACHE_LIMIT = 256;
|
|
213
|
+
const scanCache = new Map();
|
|
214
|
+
/**
|
|
215
|
+
* scanEncodedText, cached in this process. The key is the sha256 of the scanned string's UTF-16
|
|
216
|
+
* code units, the options and ENCODED_SCAN_VERSION. Encoding as UTF-16LE keeps every code unit,
|
|
217
|
+
* lone surrogates included, so distinct strings get distinct keys and a hit is the result a fresh
|
|
218
|
+
* scan of the same string would give. Repeated verifies of an unchanged file, as serve admission
|
|
219
|
+
* and the Observer render do, skip the scan.
|
|
220
|
+
*/
|
|
221
|
+
export function scanEncodedTextCached(text, options = {}) {
|
|
222
|
+
const key = [
|
|
223
|
+
ENCODED_SCAN_VERSION,
|
|
224
|
+
options.allowOpaqueBase64 === true ? "opaque-allowed" : "opaque-unscanned",
|
|
225
|
+
createHash("sha256").update(Buffer.from(text, "utf16le")).digest("hex"),
|
|
226
|
+
].join(":");
|
|
227
|
+
const cached = scanCache.get(key);
|
|
228
|
+
if (cached !== undefined) {
|
|
229
|
+
// Refresh its place so the least recently used entry is evicted first.
|
|
230
|
+
scanCache.delete(key);
|
|
231
|
+
scanCache.set(key, cached);
|
|
232
|
+
return cached;
|
|
233
|
+
}
|
|
234
|
+
// Every caller gets the cached object, so it is frozen.
|
|
235
|
+
const result = Object.freeze({ ...scanEncodedText(text, options) });
|
|
236
|
+
scanCache.set(key, result);
|
|
237
|
+
if (scanCache.size > SCAN_CACHE_LIMIT) {
|
|
238
|
+
const oldest = scanCache.keys().next().value;
|
|
239
|
+
if (oldest !== undefined)
|
|
240
|
+
scanCache.delete(oldest);
|
|
241
|
+
}
|
|
242
|
+
return result;
|
|
243
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A perceptual hash of a PNG frame for no-progress detection. Decodes the PNG, area-averages it to
|
|
3
|
+
* a SIGNATURE_GRID x SIGNATURE_GRID grayscale grid, CONTRAST-NORMALIZES that grid, quantizes each
|
|
4
|
+
* cell to SIGNATURE_LEVELS, and packs the cells into a hex string. Deterministic (no Date, no
|
|
5
|
+
* random). Returns SIGNATURE_FALLBACK on any decode failure so two unreadable frames compare equal.
|
|
6
|
+
* The hash cannot be reversed to the image, so exposing it in a trace is public-safe.
|
|
7
|
+
*
|
|
8
|
+
* Normalization stretches each frame's own min..max across the full range before quantizing, so a
|
|
9
|
+
* mostly-white UI uses all the levels. Without it, a light-themed app pinned 93% of cells to one
|
|
10
|
+
* level and visibly different frames hashed the same. The 32x32 grid makes a cell about 45x30 px on
|
|
11
|
+
* a 1440x950 desktop, so widget-sized changes survive the averaging.
|
|
12
|
+
*
|
|
13
|
+
* It is still a coarse whole-frame hash and only one input to the no-progress backstop. The
|
|
14
|
+
* corroboration rule in src/actors/computer-use/loop/backstop.ts keeps a blind frame from ending a
|
|
15
|
+
* run on its own.
|
|
16
|
+
*/
|
|
17
|
+
export declare function perceptualSignature(pngBytes: Buffer | Uint8Array): string;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { PNG } from "pngjs";
|
|
2
|
+
const SIGNATURE_GRID = 32;
|
|
3
|
+
const SIGNATURE_LEVELS = 16;
|
|
4
|
+
const SIGNATURE_FALLBACK = "unreadable";
|
|
5
|
+
// The brightness anchor is one hex digit over 8-bit channel means.
|
|
6
|
+
const ANCHOR_LEVELS = 16;
|
|
7
|
+
/**
|
|
8
|
+
* A perceptual hash of a PNG frame for no-progress detection. Decodes the PNG, area-averages it to
|
|
9
|
+
* a SIGNATURE_GRID x SIGNATURE_GRID grayscale grid, CONTRAST-NORMALIZES that grid, quantizes each
|
|
10
|
+
* cell to SIGNATURE_LEVELS, and packs the cells into a hex string. Deterministic (no Date, no
|
|
11
|
+
* random). Returns SIGNATURE_FALLBACK on any decode failure so two unreadable frames compare equal.
|
|
12
|
+
* The hash cannot be reversed to the image, so exposing it in a trace is public-safe.
|
|
13
|
+
*
|
|
14
|
+
* Normalization stretches each frame's own min..max across the full range before quantizing, so a
|
|
15
|
+
* mostly-white UI uses all the levels. Without it, a light-themed app pinned 93% of cells to one
|
|
16
|
+
* level and visibly different frames hashed the same. The 32x32 grid makes a cell about 45x30 px on
|
|
17
|
+
* a 1440x950 desktop, so widget-sized changes survive the averaging.
|
|
18
|
+
*
|
|
19
|
+
* It is still a coarse whole-frame hash and only one input to the no-progress backstop. The
|
|
20
|
+
* corroboration rule in src/actors/computer-use/loop/backstop.ts keeps a blind frame from ending a
|
|
21
|
+
* run on its own.
|
|
22
|
+
*/
|
|
23
|
+
export function perceptualSignature(pngBytes) {
|
|
24
|
+
let cells;
|
|
25
|
+
try {
|
|
26
|
+
const source = Buffer.isBuffer(pngBytes) ? pngBytes : Buffer.from(pngBytes);
|
|
27
|
+
if (source.length === 0)
|
|
28
|
+
return SIGNATURE_FALLBACK;
|
|
29
|
+
const decoded = PNG.sync.read(source);
|
|
30
|
+
const srcW = decoded.width;
|
|
31
|
+
const srcH = decoded.height;
|
|
32
|
+
if (!srcW || !srcH)
|
|
33
|
+
return SIGNATURE_FALLBACK;
|
|
34
|
+
cells = quantizedGrid(decoded.data, srcW, srcH);
|
|
35
|
+
return `${brightnessAnchor(decoded.data, srcW, srcH)}${packCells(cells)}`;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return SIGNATURE_FALLBACK;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** Area-average an RGBA buffer to a grid of grayscale cells, contrast-normalized then quantized. */
|
|
42
|
+
function quantizedGrid(data, srcW, srcH) {
|
|
43
|
+
const grays = [];
|
|
44
|
+
const xRatio = srcW / SIGNATURE_GRID;
|
|
45
|
+
const yRatio = srcH / SIGNATURE_GRID;
|
|
46
|
+
for (let gy = 0; gy < SIGNATURE_GRID; gy += 1) {
|
|
47
|
+
const sy0 = Math.floor(gy * yRatio);
|
|
48
|
+
const sy1 = Math.min(srcH, Math.max(sy0 + 1, Math.floor((gy + 1) * yRatio)));
|
|
49
|
+
for (let gx = 0; gx < SIGNATURE_GRID; gx += 1) {
|
|
50
|
+
const sx0 = Math.floor(gx * xRatio);
|
|
51
|
+
const sx1 = Math.min(srcW, Math.max(sx0 + 1, Math.floor((gx + 1) * xRatio)));
|
|
52
|
+
let sum = 0;
|
|
53
|
+
let n = 0;
|
|
54
|
+
for (let sy = sy0; sy < sy1; sy += 1) {
|
|
55
|
+
for (let sx = sx0; sx < sx1; sx += 1) {
|
|
56
|
+
const si = (sy * srcW + sx) * 4;
|
|
57
|
+
const r = data[si] ?? 0;
|
|
58
|
+
const g = data[si + 1] ?? 0;
|
|
59
|
+
const b = data[si + 2] ?? 0;
|
|
60
|
+
sum += Math.round((r + g + b) / 3);
|
|
61
|
+
n += 1;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
grays.push(n ? Math.round(sum / n) : 0);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Stretch this frame's own range across the full scale before quantizing. Without this a light UI
|
|
68
|
+
// occupies a sliver at the top of 0..255 and quantizes to a near-constant (#383).
|
|
69
|
+
//
|
|
70
|
+
// The endpoints are TRIMMED rather than the raw min/max: a handful of extreme cells must not be
|
|
71
|
+
// able to rescale the whole frame, or a blinking text cursor would rewrite every cell and read as
|
|
72
|
+
// progress forever. Trimming K cells from each end clamps that away while still preserving real
|
|
73
|
+
// structure, which occupies far more cells than K (a row of sidebar text covers dozens).
|
|
74
|
+
const sorted = [...grays].sort((a, b) => a - b);
|
|
75
|
+
const trim = Math.max(2, Math.floor(sorted.length / 256));
|
|
76
|
+
const lo = sorted[Math.min(trim, sorted.length - 1)] ?? 0;
|
|
77
|
+
const hi = sorted[Math.max(0, sorted.length - 1 - trim)] ?? 255;
|
|
78
|
+
const span = hi - lo;
|
|
79
|
+
const top = SIGNATURE_LEVELS - 1;
|
|
80
|
+
return grays.map((gray) => span <= 0 ? 0 : Math.min(top, Math.max(0, Math.round(((gray - lo) / span) * top))));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The frame's overall brightness, coarsely quantized. Normalization deliberately discards absolute
|
|
84
|
+
* level, so this is prefixed back on for the two cases where absolute level IS the change: a uniform
|
|
85
|
+
* frame (an all-white blank vs an all-black screen normalize identically), and a whole-page dim such
|
|
86
|
+
* as a modal overlay, which preserves relative structure while changing the whole frame. Quantized
|
|
87
|
+
* coarsely so ordinary antialiasing noise cannot move it.
|
|
88
|
+
*/
|
|
89
|
+
function brightnessAnchor(data, srcW, srcH) {
|
|
90
|
+
let sum = 0;
|
|
91
|
+
let n = 0;
|
|
92
|
+
const stride = Math.max(1, Math.floor((srcW * srcH) / 4096));
|
|
93
|
+
for (let p = 0; p < srcW * srcH; p += stride) {
|
|
94
|
+
const si = p * 4;
|
|
95
|
+
sum += ((data[si] ?? 0) + (data[si + 1] ?? 0) + (data[si + 2] ?? 0)) / 3;
|
|
96
|
+
n += 1;
|
|
97
|
+
}
|
|
98
|
+
const mean = n ? sum / n : 0;
|
|
99
|
+
return Math.min(ANCHOR_LEVELS - 1, Math.floor((mean * ANCHOR_LEVELS) / 256)).toString(16);
|
|
100
|
+
}
|
|
101
|
+
/** Pack 4-bit cells (two per byte) into a compact hex string. */
|
|
102
|
+
function packCells(cells) {
|
|
103
|
+
const bytes = Buffer.alloc(Math.ceil(cells.length / 2));
|
|
104
|
+
for (let i = 0; i < cells.length; i += 1) {
|
|
105
|
+
const byteIndex = i >> 1;
|
|
106
|
+
const shift = (i & 1) * 4;
|
|
107
|
+
const value = (cells[i] ?? 0) & 0xf;
|
|
108
|
+
bytes[byteIndex] = (bytes[byteIndex] ?? 0) | (value << shift);
|
|
109
|
+
}
|
|
110
|
+
return bytes.toString("hex");
|
|
111
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const SCREENSHOT_MAX_WIDTH_CAP = 128;
|
|
2
|
+
/**
|
|
3
|
+
* Drops every chunk outside SCREENSHOT_PNG_CHUNKS, so a frame from any source is written with
|
|
4
|
+
* image data only. Pixels and the kept chunks are copied unchanged. Bytes over the size cap, or
|
|
5
|
+
* that are not a well-formed chunk sequence, are returned as they are, for the evidence check to
|
|
6
|
+
* reject without walking them.
|
|
7
|
+
*/
|
|
8
|
+
export declare function stripPngMetadataChunks(bytes: Buffer): Buffer;
|
|
9
|
+
/**
|
|
10
|
+
* Why a PNG must not reach the decoder, read from its header. pngjs allocates from the IHDR it
|
|
11
|
+
* finds and inflates interlaced data with no bound, so a PNG whose first chunk is not a 13-byte
|
|
12
|
+
* IHDR (its dimensions unchecked) or an interlaced one can cost gigabytes. Null when decoding is
|
|
13
|
+
* bounded by the byte and pixel caps. Every retained frame is non-interlaced with a 13-byte IHDR.
|
|
14
|
+
*/
|
|
15
|
+
export declare function pngDecodeRefusal(bytes: Buffer): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* True when the bytes have exactly the shape redactScreenshot writes: IHDR, IDAT and IEND only,
|
|
18
|
+
* an empty IEND ending the file, and a width within SCREENSHOT_MAX_WIDTH_CAP. A frame claiming
|
|
19
|
+
* `blurred` counts as redacted only in this shape: the claim alone cannot show that the pixels
|
|
20
|
+
* were downscaled, and any other chunk is a place to carry bytes no one reviews.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isRedactedFrameShape(bytes: Buffer): boolean;
|
|
23
|
+
export declare function screenshotEvidenceError(relativePath: string, bytes: Buffer): string | null;
|
|
24
|
+
export declare function assertScreenshotEvidence(relativePath: string, bytes: Buffer): void;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { PNG } from "pngjs";
|
|
2
|
+
const PNG_SIGNATURE = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
|
|
3
|
+
const PNG_IHDR_LENGTH = 13;
|
|
4
|
+
// The pixel cap pngDecodeRefusal applies before any decode, for verify and the redactor alike.
|
|
5
|
+
const SCREENSHOT_MAX_SOURCE_PIXELS = 50_000_000;
|
|
6
|
+
// The widest thumbnail the redactor emits. A redacted frame is at most this wide, which is what
|
|
7
|
+
// makes it too coarse to read text off; see redactScreenshot.
|
|
8
|
+
export const SCREENSHOT_MAX_WIDTH_CAP = 128;
|
|
9
|
+
function hasPngSignature(bytes) {
|
|
10
|
+
return (bytes.length >= PNG_SIGNATURE.length &&
|
|
11
|
+
bytes.subarray(0, PNG_SIGNATURE.length).equals(PNG_SIGNATURE));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Read dimensions from a structurally positioned PNG IHDR without decoding.
|
|
15
|
+
* CRC and complete-file validity remain the decoder's responsibility.
|
|
16
|
+
*/
|
|
17
|
+
function readPngDeclaredDimensions(bytes) {
|
|
18
|
+
if (!hasPngSignature(bytes) ||
|
|
19
|
+
bytes.length < 24 ||
|
|
20
|
+
bytes.readUInt32BE(8) !== PNG_IHDR_LENGTH ||
|
|
21
|
+
bytes.subarray(12, 16).toString("ascii") !== "IHDR") {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
width: bytes.readUInt32BE(16),
|
|
26
|
+
height: bytes.readUInt32BE(20),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
// A noisy 4K RGBA frame is roughly 32 MiB before PNG compression, so this
|
|
30
|
+
// admits realistic screenshot payloads while bounding decoder input.
|
|
31
|
+
const SCREENSHOT_MAX_BYTES = 32 * 1024 * 1024;
|
|
32
|
+
/**
|
|
33
|
+
* The PNG chunks screenshot evidence may carry: image data and fixed-format display hints.
|
|
34
|
+
* Text (tEXt, zTXt, iTXt), ICC profiles, Exif, timestamps and private chunks can hold bytes that
|
|
35
|
+
* neither the text scan nor a look at the pixels would see, so a screenshot must not carry them.
|
|
36
|
+
* Frames from E2B desktops carry IHDR, IDAT, IEND and sBIT; blurred frames are re-encoded.
|
|
37
|
+
*/
|
|
38
|
+
const SCREENSHOT_PNG_CHUNKS = new Set([
|
|
39
|
+
"IHDR",
|
|
40
|
+
"PLTE",
|
|
41
|
+
"IDAT",
|
|
42
|
+
"IEND",
|
|
43
|
+
"tRNS",
|
|
44
|
+
"cHRM",
|
|
45
|
+
"gAMA",
|
|
46
|
+
"sBIT",
|
|
47
|
+
"sRGB",
|
|
48
|
+
"pHYs",
|
|
49
|
+
"bKGD",
|
|
50
|
+
]);
|
|
51
|
+
/** The chunks up to IEND, or null when a chunk runs past the end of the bytes. */
|
|
52
|
+
function readPngChunks(bytes) {
|
|
53
|
+
const chunks = [];
|
|
54
|
+
let offset = PNG_SIGNATURE.length;
|
|
55
|
+
while (offset + 8 <= bytes.length) {
|
|
56
|
+
const end = offset + 12 + bytes.readUInt32BE(offset);
|
|
57
|
+
if (end > bytes.length)
|
|
58
|
+
return null;
|
|
59
|
+
const type = bytes.toString("latin1", offset + 4, offset + 8);
|
|
60
|
+
chunks.push({ type, start: offset, end });
|
|
61
|
+
offset = end;
|
|
62
|
+
if (type === "IEND")
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
return chunks;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Drops every chunk outside SCREENSHOT_PNG_CHUNKS, so a frame from any source is written with
|
|
69
|
+
* image data only. Pixels and the kept chunks are copied unchanged. Bytes over the size cap, or
|
|
70
|
+
* that are not a well-formed chunk sequence, are returned as they are, for the evidence check to
|
|
71
|
+
* reject without walking them.
|
|
72
|
+
*/
|
|
73
|
+
export function stripPngMetadataChunks(bytes) {
|
|
74
|
+
if (!hasPngSignature(bytes) || bytes.length > SCREENSHOT_MAX_BYTES)
|
|
75
|
+
return bytes;
|
|
76
|
+
const chunks = readPngChunks(bytes);
|
|
77
|
+
if (chunks === null)
|
|
78
|
+
return bytes;
|
|
79
|
+
const kept = chunks.filter((chunk) => SCREENSHOT_PNG_CHUNKS.has(chunk.type));
|
|
80
|
+
if (kept.length === chunks.length)
|
|
81
|
+
return bytes;
|
|
82
|
+
return Buffer.concat([
|
|
83
|
+
bytes.subarray(0, PNG_SIGNATURE.length),
|
|
84
|
+
...kept.map((chunk) => bytes.subarray(chunk.start, chunk.end)),
|
|
85
|
+
]);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Why a PNG must not reach the decoder, read from its header. pngjs allocates from the IHDR it
|
|
89
|
+
* finds and inflates interlaced data with no bound, so a PNG whose first chunk is not a 13-byte
|
|
90
|
+
* IHDR (its dimensions unchecked) or an interlaced one can cost gigabytes. Null when decoding is
|
|
91
|
+
* bounded by the byte and pixel caps. Every retained frame is non-interlaced with a 13-byte IHDR.
|
|
92
|
+
*/
|
|
93
|
+
export function pngDecodeRefusal(bytes) {
|
|
94
|
+
if (!hasPngSignature(bytes))
|
|
95
|
+
return "expected PNG signature";
|
|
96
|
+
if (bytes.length > SCREENSHOT_MAX_BYTES) {
|
|
97
|
+
return `PNG byte size exceeds ${SCREENSHOT_MAX_BYTES} byte limit`;
|
|
98
|
+
}
|
|
99
|
+
const dimensions = readPngDeclaredDimensions(bytes);
|
|
100
|
+
if (dimensions === null)
|
|
101
|
+
return "PNG must start with a 13-byte IHDR chunk";
|
|
102
|
+
const dimensionsError = pngDimensionsError(dimensions.width, dimensions.height);
|
|
103
|
+
if (dimensionsError)
|
|
104
|
+
return dimensionsError;
|
|
105
|
+
// IHDR data: width, height, bit depth, color type, compression, filter, interlace (byte 28).
|
|
106
|
+
if (bytes.length > 28 && bytes[28] !== 0)
|
|
107
|
+
return "interlaced PNG evidence is not supported";
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* True when the bytes have exactly the shape redactScreenshot writes: IHDR, IDAT and IEND only,
|
|
112
|
+
* an empty IEND ending the file, and a width within SCREENSHOT_MAX_WIDTH_CAP. A frame claiming
|
|
113
|
+
* `blurred` counts as redacted only in this shape: the claim alone cannot show that the pixels
|
|
114
|
+
* were downscaled, and any other chunk is a place to carry bytes no one reviews.
|
|
115
|
+
*/
|
|
116
|
+
export function isRedactedFrameShape(bytes) {
|
|
117
|
+
if (pngDecodeRefusal(bytes) !== null)
|
|
118
|
+
return false;
|
|
119
|
+
const chunks = readPngChunks(bytes);
|
|
120
|
+
if (chunks === null || chunks.length < 3)
|
|
121
|
+
return false;
|
|
122
|
+
const last = chunks[chunks.length - 1];
|
|
123
|
+
return (chunks[0].type === "IHDR" &&
|
|
124
|
+
chunks.slice(1, -1).every((chunk) => chunk.type === "IDAT") &&
|
|
125
|
+
last.type === "IEND" &&
|
|
126
|
+
last.end - last.start === 12 &&
|
|
127
|
+
last.end === bytes.length &&
|
|
128
|
+
bytes.readUInt32BE(16) <= SCREENSHOT_MAX_WIDTH_CAP);
|
|
129
|
+
}
|
|
130
|
+
export function screenshotEvidenceError(relativePath, bytes) {
|
|
131
|
+
const extension = relativePath.toLowerCase().split(".").pop() ?? "";
|
|
132
|
+
if (extension !== "png") {
|
|
133
|
+
return `unsupported screenshot extension .${extension || "unknown"}; only decoded PNG evidence is supported`;
|
|
134
|
+
}
|
|
135
|
+
const refusal = pngDecodeRefusal(bytes);
|
|
136
|
+
if (refusal)
|
|
137
|
+
return refusal;
|
|
138
|
+
const chunks = readPngChunks(bytes);
|
|
139
|
+
const foreign = chunks?.find((chunk) => !SCREENSHOT_PNG_CHUNKS.has(chunk.type));
|
|
140
|
+
if (foreign !== undefined) {
|
|
141
|
+
const name = /^[A-Za-z]{4}$/.test(foreign.type) ? foreign.type : "malformed";
|
|
142
|
+
return `PNG carries a ${name} chunk; screenshot evidence may hold image data only`;
|
|
143
|
+
}
|
|
144
|
+
// pngjs reads IEND at any length, so its payload would go unchecked.
|
|
145
|
+
if (chunks?.some((chunk) => chunk.type === "IEND" && chunk.end - chunk.start !== 12)) {
|
|
146
|
+
return "PNG IEND chunk must be empty";
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
const decoded = PNG.sync.read(bytes, { checkCRC: true });
|
|
150
|
+
return pngDimensionsError(decoded.width, decoded.height);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return "could not decode PNG evidence";
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
export function assertScreenshotEvidence(relativePath, bytes) {
|
|
157
|
+
const error = screenshotEvidenceError(relativePath, bytes);
|
|
158
|
+
if (error) {
|
|
159
|
+
throw new Error(`Invalid screenshot evidence ${relativePath}: ${error}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function pngDimensionsError(width, height) {
|
|
163
|
+
if (width === 0 || height === 0) {
|
|
164
|
+
return "PNG dimensions must be greater than zero";
|
|
165
|
+
}
|
|
166
|
+
if (width * height > SCREENSHOT_MAX_SOURCE_PIXELS) {
|
|
167
|
+
return `PNG pixel count exceeds ${SCREENSHOT_MAX_SOURCE_PIXELS} pixel limit`;
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// The rule for a run file humanish treats as text: strict UTF-8, with no control bytes other than
|
|
2
|
+
// tab, line feed and carriage return. verify scans only such files for secrets, and bundle export
|
|
3
|
+
// copies only such files as text, so neither calls a file clean that it could not read.
|
|
4
|
+
const CONTROL_BYTES = /[\x00-\x08\x0b\x0c\x0e-\x1f]/;
|
|
5
|
+
export function readPlainText(bytes) {
|
|
6
|
+
let text;
|
|
7
|
+
try {
|
|
8
|
+
text = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return { ok: false, reason: "invalid-utf8" };
|
|
12
|
+
}
|
|
13
|
+
if (CONTROL_BYTES.test(text))
|
|
14
|
+
return { ok: false, reason: "control-bytes" };
|
|
15
|
+
return { ok: true, text };
|
|
16
|
+
}
|