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,373 @@
|
|
|
1
|
+
import { lstat, readdir } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { isRedactedFrameShape, screenshotEvidenceError } from "../evidence/image.js";
|
|
4
|
+
import { isStudyAnalysisRecordPath } from "../analysis/sharing.js";
|
|
5
|
+
import { scanEncodedTextCached } from "../evidence/encoded-text.js";
|
|
6
|
+
import { readPlainText } from "../evidence/plain-text.js";
|
|
7
|
+
import { containsSensitive } from "../evidence/redaction.js";
|
|
8
|
+
import { isLocalEvidenceArtifactPath, isRiskyPublicArtifactPath, validatePreparedRunArtifactPaths, } from "../run/paths.js";
|
|
9
|
+
import { openContainedRegularFile } from "../run/contained-output.js";
|
|
10
|
+
import { readSafeRunArtifactBytes, readSafeRunArtifactJson } from "../run/locate.js";
|
|
11
|
+
import { isRecord } from "../run/type-guards.js";
|
|
12
|
+
import { TERMINAL_EVENTS_ARTIFACT } from "../run/terminal-contract.js";
|
|
13
|
+
import { isZeroEventTerminalTrace } from "./actor.js";
|
|
14
|
+
/** Public-safety and evidence-reference findings stop at this many per list. */
|
|
15
|
+
export const MAX_REPORTED_FINDINGS = 50;
|
|
16
|
+
export async function missingLocalEvidenceArtifacts(runPaths, bundle) {
|
|
17
|
+
const recordings = new Map(bundle.streams.flatMap((stream) => stream.recording ? [[stream.recording.path, stream.recording]] : []));
|
|
18
|
+
const requiredPaths = new Map();
|
|
19
|
+
const addRequiredPath = (artifactPath, options = {}) => {
|
|
20
|
+
const existing = requiredPaths.get(artifactPath);
|
|
21
|
+
requiredPaths.set(artifactPath, {
|
|
22
|
+
screenshot: Boolean(existing?.screenshot || options.screenshot),
|
|
23
|
+
// Every consumer must permit emptiness: a terminal log cannot exempt the same path when
|
|
24
|
+
// another stream, screenshot, or adapter also requires it as nonempty evidence.
|
|
25
|
+
allowEmpty: options.allowEmpty === true && (existing?.allowEmpty ?? true),
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
for (const stream of bundle.streams) {
|
|
29
|
+
// A session that failed before output (or a silent terminal process) has a real zero-record
|
|
30
|
+
// NDJSON stream. Both the embedded trace and its retained artifact must declare that fact.
|
|
31
|
+
const emptyTerminalEvents = isZeroEventTerminalTrace(stream.actor) &&
|
|
32
|
+
isZeroEventTerminalTrace(await readSafeRunArtifactJson(runPaths, stream.artifacts.find((artifact) => artifact.kind === "trace")?.path ?? "actor.json"));
|
|
33
|
+
for (const artifact of stream.artifacts) {
|
|
34
|
+
if (isLocalEvidenceArtifactPath(artifact.path)) {
|
|
35
|
+
addRequiredPath(artifact.path, {
|
|
36
|
+
screenshot: artifact.kind === "screenshot",
|
|
37
|
+
allowEmpty: artifact.kind === "log" &&
|
|
38
|
+
artifact.path === TERMINAL_EVENTS_ARTIFACT &&
|
|
39
|
+
emptyTerminalEvents,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const embedPath = normalizeLocalEvidenceReference(stream.embed?.kind === "screenshot" ? stream.embed.url : undefined);
|
|
44
|
+
if (embedPath) {
|
|
45
|
+
addRequiredPath(embedPath, { screenshot: true });
|
|
46
|
+
}
|
|
47
|
+
const uiScreenshotPath = normalizeLocalEvidenceReference(stream.ui?.screenshotUrl);
|
|
48
|
+
if (uiScreenshotPath) {
|
|
49
|
+
addRequiredPath(uiScreenshotPath, { screenshot: true });
|
|
50
|
+
}
|
|
51
|
+
if (stream.ui?.nestedObserverPath &&
|
|
52
|
+
isLocalEvidenceArtifactPath(stream.ui.nestedObserverPath)) {
|
|
53
|
+
addRequiredPath(stream.ui.nestedObserverPath);
|
|
54
|
+
}
|
|
55
|
+
for (const reference of declaredActorScreenshotReferences(stream)) {
|
|
56
|
+
if (isRunRootEvidenceReference(reference.path)) {
|
|
57
|
+
addRequiredPath(reference.path, { screenshot: true });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
for (const artifact of bundle.adapterArtifacts ?? []) {
|
|
62
|
+
if (isLocalEvidenceArtifactPath(artifact.path)) {
|
|
63
|
+
addRequiredPath(artifact.path, { screenshot: artifact.kind === "screenshot" });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
for (const candidate of bundle.feedbackCandidates ?? []) {
|
|
67
|
+
for (const evidence of candidate.evidence) {
|
|
68
|
+
if (isRunRootEvidenceReference(evidence.path)) {
|
|
69
|
+
addRequiredPath(evidence.path, {
|
|
70
|
+
screenshot: evidence.kind === "screenshot",
|
|
71
|
+
// Feedback accepts an existing empty nonimage file. The conjunctive merge above
|
|
72
|
+
// keeps any stricter stream, actor, or adapter requirement in force.
|
|
73
|
+
allowEmpty: evidence.kind !== "screenshot",
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const missing = [];
|
|
79
|
+
for (const [artifactPath, requirements] of requiredPaths) {
|
|
80
|
+
const recording = recordings.get(artifactPath);
|
|
81
|
+
if (recording) {
|
|
82
|
+
const handle = await openContainedRegularFile(runPaths, artifactPath);
|
|
83
|
+
try {
|
|
84
|
+
if (!handle || (await handle.stat()).size !== recording.bytes)
|
|
85
|
+
missing.push(artifactPath);
|
|
86
|
+
else {
|
|
87
|
+
const header = Buffer.alloc(12);
|
|
88
|
+
const read = await handle.read(header, 0, header.length, 0);
|
|
89
|
+
if (read.bytesRead !== header.length || header.toString("ascii", 4, 8) !== "ftyp")
|
|
90
|
+
missing.push(`${artifactPath} (invalid MP4 header)`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
await handle?.close();
|
|
95
|
+
}
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
const bytes = await readSafeRunArtifactBytes(runPaths, artifactPath);
|
|
99
|
+
if (!bytes || (bytes.length === 0 && !requirements.allowEmpty)) {
|
|
100
|
+
missing.push(artifactPath);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (requirements.screenshot) {
|
|
104
|
+
const imageError = screenshotEvidenceError(artifactPath, bytes);
|
|
105
|
+
if (imageError) {
|
|
106
|
+
missing.push(`${artifactPath} (${imageError})`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return missing;
|
|
111
|
+
}
|
|
112
|
+
function declaredActorScreenshotReferences(stream) {
|
|
113
|
+
const references = [];
|
|
114
|
+
for (const field of ["actor", "liveActor"]) {
|
|
115
|
+
const trace = stream[field];
|
|
116
|
+
if (!isRecord(trace) || !Array.isArray(trace.items))
|
|
117
|
+
continue;
|
|
118
|
+
trace.items.forEach((item, index) => {
|
|
119
|
+
if (!isRecord(item) || !Object.hasOwn(item, "screenshotRef"))
|
|
120
|
+
return;
|
|
121
|
+
references.push({
|
|
122
|
+
label: `${stream.id} ${field}.items[${index}].screenshotRef`,
|
|
123
|
+
path: isRecord(item.screenshotRef) ? item.screenshotRef.path : undefined,
|
|
124
|
+
redaction: isRecord(item.screenshotRef) ? item.screenshotRef.redaction : undefined,
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return references;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* The PNG frames that actor traces register as stream screenshots, relative to the run root.
|
|
132
|
+
* RAW_SCREENSHOTS grades these, so the public-safety scan does not report them as unread. Only
|
|
133
|
+
* frames under screenshots/ count: the computer-use lane writer and the scripted-browser steps
|
|
134
|
+
* write every frame there, and nothing else in the harness does. A trace reference elsewhere (an
|
|
135
|
+
* adapter's PNG, say) stays required evidence but goes to UNSCANNED_ARTIFACT.
|
|
136
|
+
*/
|
|
137
|
+
export function streamScreenshotPaths(bundle) {
|
|
138
|
+
const paths = new Set();
|
|
139
|
+
for (const stream of bundle.streams) {
|
|
140
|
+
for (const reference of declaredActorScreenshotReferences(stream)) {
|
|
141
|
+
if (!isRunRootEvidenceReference(reference.path))
|
|
142
|
+
continue;
|
|
143
|
+
const normalized = normalizedFramePath(reference.path);
|
|
144
|
+
if (isHarnessScreenshotPath(normalized))
|
|
145
|
+
paths.add(normalized);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return paths;
|
|
149
|
+
}
|
|
150
|
+
function isHarnessScreenshotPath(normalized) {
|
|
151
|
+
return normalized.startsWith("screenshots/") && normalized.toLowerCase().endsWith(".png");
|
|
152
|
+
}
|
|
153
|
+
function isRunRootEvidenceReference(value) {
|
|
154
|
+
return (typeof value === "string" &&
|
|
155
|
+
isLocalEvidenceArtifactPath(value) &&
|
|
156
|
+
!path.win32.isAbsolute(value) &&
|
|
157
|
+
!value.includes("\0") &&
|
|
158
|
+
!/^[a-z][a-z\d+.-]*:/i.test(value));
|
|
159
|
+
}
|
|
160
|
+
export function invalidRunEvidenceReferences(bundle) {
|
|
161
|
+
const findings = [];
|
|
162
|
+
if (path.isAbsolute(bundle.cwd)) {
|
|
163
|
+
findings.push(`run bundle persists absolute cwd ${bundle.cwd}`);
|
|
164
|
+
}
|
|
165
|
+
const adapterArtifactKeys = new Set();
|
|
166
|
+
for (const artifact of bundle.adapterArtifacts ?? []) {
|
|
167
|
+
const key = `${artifact.namespace}:${artifact.kind}:${artifact.path}`;
|
|
168
|
+
if (adapterArtifactKeys.has(key)) {
|
|
169
|
+
findings.push(`adapter artifact duplicate ${artifact.namespace}:${artifact.kind}:${artifact.path}`);
|
|
170
|
+
}
|
|
171
|
+
adapterArtifactKeys.add(key);
|
|
172
|
+
if (!isLocalEvidenceArtifactPath(artifact.path)) {
|
|
173
|
+
findings.push(`adapter artifact ${artifact.namespace}:${artifact.kind} nonlocal artifact ${artifact.path}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
for (const candidate of bundle.feedbackCandidates ?? []) {
|
|
177
|
+
for (const evidence of candidate.evidence) {
|
|
178
|
+
if (!isRunRootEvidenceReference(evidence.path)) {
|
|
179
|
+
findings.push(`feedback candidate ${candidate.id} nonlocal evidence ${String(evidence.path)}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
for (const stream of bundle.streams) {
|
|
184
|
+
const seen = new Set();
|
|
185
|
+
for (const artifact of stream.artifacts) {
|
|
186
|
+
const key = `${artifact.kind}:${artifact.path}`;
|
|
187
|
+
if (seen.has(key)) {
|
|
188
|
+
findings.push(`${stream.id} duplicate artifact ${artifact.kind}:${artifact.path}`);
|
|
189
|
+
}
|
|
190
|
+
seen.add(key);
|
|
191
|
+
if (!isLocalEvidenceArtifactPath(artifact.path)) {
|
|
192
|
+
findings.push(`${stream.id} nonlocal artifact ${artifact.kind}:${artifact.path}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (stream.ui?.nestedObserverPath &&
|
|
196
|
+
!isLocalEvidenceArtifactPath(stream.ui.nestedObserverPath)) {
|
|
197
|
+
findings.push(`${stream.id} nonlocal nested observer reference ${stream.ui.nestedObserverPath}`);
|
|
198
|
+
}
|
|
199
|
+
if (stream.embed?.kind === "screenshot" &&
|
|
200
|
+
stream.embed.url &&
|
|
201
|
+
!normalizeLocalEvidenceReference(stream.embed.url)) {
|
|
202
|
+
findings.push(`${stream.id} nonlocal screenshot embed ${stream.embed.url}`);
|
|
203
|
+
}
|
|
204
|
+
if (stream.ui?.screenshotUrl && !normalizeLocalEvidenceReference(stream.ui.screenshotUrl)) {
|
|
205
|
+
findings.push(`${stream.id} nonlocal screenshot reference ${stream.ui.screenshotUrl}`);
|
|
206
|
+
}
|
|
207
|
+
for (const reference of declaredActorScreenshotReferences(stream)) {
|
|
208
|
+
if (!isRunRootEvidenceReference(reference.path)) {
|
|
209
|
+
findings.push(`${reference.label} is malformed or nonlocal`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return findings.slice(0, MAX_REPORTED_FINDINGS);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* redaction.screenshots: "raw" is the SUPPORTED local default (full-fidelity frames in
|
|
217
|
+
* gitignored .humanish), not a verify failure — but ok: true must never read as "share-ready",
|
|
218
|
+
* so verify surfaces the posture as a warning in both human and JSON output. Read defensively
|
|
219
|
+
* for the same reason as noEngagementActorFindings.
|
|
220
|
+
*/
|
|
221
|
+
export function rawScreenshotPostureWarnings(bundle, redactedShapeFrames) {
|
|
222
|
+
const rawStreamIds = rawScreenshotStreamIds(bundle, redactedShapeFrames);
|
|
223
|
+
if (rawStreamIds.length === 0) {
|
|
224
|
+
return [];
|
|
225
|
+
}
|
|
226
|
+
return [
|
|
227
|
+
`Screenshots are FULL-FIDELITY (raw) or carry no redaction claim on ${rawStreamIds.join(", ")} — supported for local use, NOT publish-safe as-is. Verify ok does not mean share-ready; set policies.redactScreenshots: true to blur a share-as-is bundle.`,
|
|
228
|
+
];
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* The declared frames, as normalized run-root paths, whose bytes have the redactor's output shape
|
|
232
|
+
* (isRedactedFrameShape). A frame that is missing or cannot be read is not in the set.
|
|
233
|
+
*/
|
|
234
|
+
export async function redactedShapeFramePaths(runPaths, bundle) {
|
|
235
|
+
const shaped = new Set();
|
|
236
|
+
for (const stream of bundle.streams) {
|
|
237
|
+
for (const reference of declaredActorScreenshotReferences(stream)) {
|
|
238
|
+
if (!isRunRootEvidenceReference(reference.path))
|
|
239
|
+
continue;
|
|
240
|
+
const normalized = normalizedFramePath(reference.path);
|
|
241
|
+
if (shaped.has(normalized))
|
|
242
|
+
continue;
|
|
243
|
+
const bytes = await readSafeRunArtifactBytes(runPaths, normalized).catch(() => null);
|
|
244
|
+
if (bytes !== null && isRedactedFrameShape(bytes))
|
|
245
|
+
shaped.add(normalized);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return shaped;
|
|
249
|
+
}
|
|
250
|
+
function normalizedFramePath(value) {
|
|
251
|
+
return path.posix.normalize(value.replace(/\\/g, "/"));
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* The streams whose frames count as full-fidelity. A frame is redacted only when its bytes have
|
|
255
|
+
* the redactor's output shape (`redactedShapeFrames`) and either it claims `blurred`, or it has no
|
|
256
|
+
* claim and the stream's final trace posture is `blurred`: the computer-use loop blurs every frame
|
|
257
|
+
* of such a trace, and bundles from before per-frame claims carry only the posture. Every other
|
|
258
|
+
* frame is raw, including `ocr_scrubbed`, which no writer produces. An aggregate raw posture
|
|
259
|
+
* outranks every frame claim.
|
|
260
|
+
*/
|
|
261
|
+
export function rawScreenshotStreamIds(bundle, redactedShapeFrames) {
|
|
262
|
+
const rawStreamIds = [];
|
|
263
|
+
for (const stream of bundle.streams) {
|
|
264
|
+
const trace = stream.actor;
|
|
265
|
+
const posture = isRecord(trace) && isRecord(trace.redaction) ? trace.redaction.screenshots : undefined;
|
|
266
|
+
const frameRaw = declaredActorScreenshotReferences(stream).some((reference) => {
|
|
267
|
+
const claimed = reference.redaction === "blurred" ||
|
|
268
|
+
(reference.redaction === undefined && posture === "blurred");
|
|
269
|
+
return !(claimed &&
|
|
270
|
+
typeof reference.path === "string" &&
|
|
271
|
+
redactedShapeFrames.has(normalizedFramePath(reference.path)));
|
|
272
|
+
});
|
|
273
|
+
if (posture === "raw" || frameRaw) {
|
|
274
|
+
rawStreamIds.push(stream.id);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return rawStreamIds;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Scans every run file for secret and path patterns and returns the findings. A file that is not
|
|
281
|
+
* registered stream media and that the scan cannot read as text (readPlainText), or cannot read at
|
|
282
|
+
* all, goes to `unscanned`, so the caller can keep the run from grading share_ready.
|
|
283
|
+
*/
|
|
284
|
+
export async function scanRunPublicSafetyArtifacts(runPaths, derivedFindings, media, unscanned) {
|
|
285
|
+
const findings = [];
|
|
286
|
+
await validatePreparedRunArtifactPaths(runPaths);
|
|
287
|
+
await scanRunPublicSafetyDirectory(runPaths, "", findings, derivedFindings, media, unscanned);
|
|
288
|
+
await validatePreparedRunArtifactPaths(runPaths);
|
|
289
|
+
return findings;
|
|
290
|
+
}
|
|
291
|
+
async function scanRunPublicSafetyDirectory(runPaths, relativeDirectory, findings, derivedFindings, media, unscanned) {
|
|
292
|
+
// Each authority has its own finding budget. Derived files must never consume
|
|
293
|
+
// the source scan's budget and make an unscanned recording appear verified.
|
|
294
|
+
if (findings.length >= MAX_REPORTED_FINDINGS && derivedFindings.length >= MAX_REPORTED_FINDINGS) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
const current = relativeDirectory
|
|
298
|
+
? path.join(runPaths.physicalRunRoot, ...relativeDirectory.split("/"))
|
|
299
|
+
: runPaths.physicalRunRoot;
|
|
300
|
+
const entries = await readdir(current).catch(() => []);
|
|
301
|
+
for (const entryName of entries) {
|
|
302
|
+
const relativePath = relativeDirectory ? `${relativeDirectory}/${entryName}` : entryName;
|
|
303
|
+
const stats = await lstat(path.join(current, entryName), { bigint: true }).catch(() => null);
|
|
304
|
+
const selectedFindings = !stats?.isDirectory() &&
|
|
305
|
+
(relativePath === "observer/study-analysis.json" || isStudyAnalysisRecordPath(relativePath))
|
|
306
|
+
? derivedFindings
|
|
307
|
+
: findings;
|
|
308
|
+
if (isRiskyPublicArtifactPath(relativePath) || containsSensitive(relativePath)) {
|
|
309
|
+
if (selectedFindings.length < MAX_REPORTED_FINDINGS)
|
|
310
|
+
selectedFindings.push(`risky artifact path ${relativePath}`);
|
|
311
|
+
}
|
|
312
|
+
// Readers map `\` to `/` and would read some other path, and export refuses the name.
|
|
313
|
+
if (entryName.includes("\\")) {
|
|
314
|
+
if (selectedFindings.length < MAX_REPORTED_FINDINGS)
|
|
315
|
+
selectedFindings.push(`unsafe artifact leaf ${relativePath}`);
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
if (!stats ||
|
|
319
|
+
stats.isSymbolicLink() ||
|
|
320
|
+
(!stats.isDirectory() && !stats.isFile()) ||
|
|
321
|
+
(stats.isFile() && stats.nlink > 1n)) {
|
|
322
|
+
if (selectedFindings.length < MAX_REPORTED_FINDINGS)
|
|
323
|
+
selectedFindings.push(`unsafe artifact leaf ${relativePath}`);
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
if (stats.isDirectory()) {
|
|
327
|
+
// A directory named analysis.json is not an owned record. Its children
|
|
328
|
+
// can contain source evidence even after derived findings are saturated.
|
|
329
|
+
await scanRunPublicSafetyDirectory(runPaths, relativePath, findings, derivedFindings, media, unscanned);
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
if (selectedFindings.length >= MAX_REPORTED_FINDINGS)
|
|
333
|
+
continue;
|
|
334
|
+
if (path.extname(relativePath).toLowerCase() === ".mp4" &&
|
|
335
|
+
!media.recordingPaths.has(relativePath)) {
|
|
336
|
+
selectedFindings.push(`unregistered continuous media ${relativePath}`);
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
// RAW_SCREENSHOTS and CONTINUOUS_MEDIA grade the stream media the bundle registers.
|
|
340
|
+
if (media.recordingPaths.has(relativePath) || media.screenshotPaths.has(relativePath)) {
|
|
341
|
+
continue;
|
|
342
|
+
}
|
|
343
|
+
// The scan reads a file by its bytes, not its name. A file that is not text, or that could
|
|
344
|
+
// not be read at all, holds bytes the scan never saw.
|
|
345
|
+
const bytes = await readSafeRunArtifactBytes(runPaths, relativePath).catch(() => null);
|
|
346
|
+
const decoded = bytes === null ? undefined : readPlainText(bytes);
|
|
347
|
+
if (decoded === undefined || !decoded.ok) {
|
|
348
|
+
unscanned.push(relativePath);
|
|
349
|
+
continue;
|
|
350
|
+
}
|
|
351
|
+
// serve renders observer/index.html from run.json and export regenerates it, so the on-disk
|
|
352
|
+
// copy reaches neither. It embeds the Observer's own base64 fonts and scripts.
|
|
353
|
+
const scan = scanEncodedTextCached(decoded.text, {
|
|
354
|
+
allowOpaqueBase64: relativePath === "observer/index.html",
|
|
355
|
+
});
|
|
356
|
+
if (scan.sensitive) {
|
|
357
|
+
selectedFindings.push(`sensitive text ${relativePath}`);
|
|
358
|
+
}
|
|
359
|
+
else if (scan.opaque) {
|
|
360
|
+
unscanned.push(relativePath);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
function normalizeLocalEvidenceReference(value) {
|
|
365
|
+
if (!value || value.includes("://") || path.isAbsolute(value)) {
|
|
366
|
+
return null;
|
|
367
|
+
}
|
|
368
|
+
const normalized = value.replace(/\\/g, "/");
|
|
369
|
+
if (normalized.startsWith("../")) {
|
|
370
|
+
return isLocalEvidenceArtifactPath(normalized.slice(3)) ? normalized.slice(3) : null;
|
|
371
|
+
}
|
|
372
|
+
return isLocalEvidenceArtifactPath(normalized) ? normalized : null;
|
|
373
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { RunBundle } from "../run/bundle.js";
|
|
2
|
+
/** Account lanes must never acquire a price through an aggregate or ambiguous model line. */
|
|
3
|
+
export declare function contradictsAccountBilling(streams: readonly {
|
|
4
|
+
id?: string;
|
|
5
|
+
laneId?: string;
|
|
6
|
+
actor?: {
|
|
7
|
+
executionProfile?: {
|
|
8
|
+
billing?: unknown;
|
|
9
|
+
} | undefined;
|
|
10
|
+
};
|
|
11
|
+
liveActor?: {
|
|
12
|
+
executionProfile?: {
|
|
13
|
+
billing?: unknown;
|
|
14
|
+
} | undefined;
|
|
15
|
+
};
|
|
16
|
+
}[], cost: {
|
|
17
|
+
fullyEstimated?: unknown;
|
|
18
|
+
breakdown?: unknown;
|
|
19
|
+
} | undefined): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Verify the LABELING/provenance of any cost figure a bundle CLAIMS — never its magnitude. Returns
|
|
22
|
+
* [] (pass) unless a dollar claim lacks its provenance (invariant 6) or a total misreports its
|
|
23
|
+
* known lines. ABSENCE always passes (fail-open on display, discipline #3): a bundle with no cost,
|
|
24
|
+
* a null estimate, or a lane without estimatedCost is fine. A NON-NULL figure must carry its
|
|
25
|
+
* ratesAsOf date + source; a NUMBER total must equal round6(sum of ONLY the non-null lines) and a
|
|
26
|
+
* null line may never be coerced to 0. A null estimate must be declared honestly (a reason + null
|
|
27
|
+
* ratesAsOf), mirroring the terminal no-spend proof's null-discipline. Account-billed participants
|
|
28
|
+
* also have their execution profile and provider request receipts checked here.
|
|
29
|
+
*/
|
|
30
|
+
export declare function costAndReceiptFindings(bundle: RunBundle): string[];
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// Cost and account-billing checks for verify: every claimed dollar figure carries its provenance,
|
|
2
|
+
// totals match their known lines, and account-billed participants never acquire a price.
|
|
3
|
+
import { validActorExecutionProfile, validActorProviderRequests } from "../actors/contract.js";
|
|
4
|
+
import { round6 } from "../run/pricing.js";
|
|
5
|
+
/** Account lanes must never acquire a price through an aggregate or ambiguous model line. */
|
|
6
|
+
export function contradictsAccountBilling(streams, cost) {
|
|
7
|
+
const account = (stream) => (stream.liveActor?.executionProfile ?? stream.actor?.executionProfile)?.billing ===
|
|
8
|
+
"account-unknown";
|
|
9
|
+
if (!cost || !streams.some(account))
|
|
10
|
+
return false;
|
|
11
|
+
if (cost.fullyEstimated === true)
|
|
12
|
+
return true;
|
|
13
|
+
if (!Array.isArray(cost.breakdown))
|
|
14
|
+
return true;
|
|
15
|
+
return cost.breakdown.some((line) => {
|
|
16
|
+
if (line?.kind !== "model-tokens" || typeof line.estimatedCostUsd !== "number")
|
|
17
|
+
return false;
|
|
18
|
+
const owners = typeof line.laneId === "string"
|
|
19
|
+
? streams.filter((s) => s.id === line.laneId || s.laneId === line.laneId)
|
|
20
|
+
: streams;
|
|
21
|
+
return owners.length !== 1 || account(owners[0]);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Verify the LABELING/provenance of any cost figure a bundle CLAIMS — never its magnitude. Returns
|
|
26
|
+
* [] (pass) unless a dollar claim lacks its provenance (invariant 6) or a total misreports its
|
|
27
|
+
* known lines. ABSENCE always passes (fail-open on display, discipline #3): a bundle with no cost,
|
|
28
|
+
* a null estimate, or a lane without estimatedCost is fine. A NON-NULL figure must carry its
|
|
29
|
+
* ratesAsOf date + source; a NUMBER total must equal round6(sum of ONLY the non-null lines) and a
|
|
30
|
+
* null line may never be coerced to 0. A null estimate must be declared honestly (a reason + null
|
|
31
|
+
* ratesAsOf), mirroring the terminal no-spend proof's null-discipline. Account-billed participants
|
|
32
|
+
* also have their execution profile and provider request receipts checked here.
|
|
33
|
+
*/
|
|
34
|
+
export function costAndReceiptFindings(bundle) {
|
|
35
|
+
const findings = [];
|
|
36
|
+
if (contradictsAccountBilling(bundle.streams, bundle.cost))
|
|
37
|
+
findings.push("Run cost lines contradict account billing identity");
|
|
38
|
+
findings.push(...costSummaryFindings(bundle.cost));
|
|
39
|
+
for (const stream of bundle.streams) {
|
|
40
|
+
for (const actor of [stream.actor, stream.liveActor]) {
|
|
41
|
+
findings.push(...executionReceiptFindings(actor));
|
|
42
|
+
}
|
|
43
|
+
findings.push(...participantEstimateFindings(stream));
|
|
44
|
+
}
|
|
45
|
+
return findings;
|
|
46
|
+
}
|
|
47
|
+
function costSummaryFindings(cost) {
|
|
48
|
+
const findings = [];
|
|
49
|
+
if (!cost)
|
|
50
|
+
return findings;
|
|
51
|
+
if (cost.schema !== "humanish.run-cost-summary.v1") {
|
|
52
|
+
findings.push(`run cost summary schema is ${String(cost.schema)}, expected humanish.run-cost-summary.v1`);
|
|
53
|
+
}
|
|
54
|
+
let knownSum = 0;
|
|
55
|
+
let anyKnown = false;
|
|
56
|
+
for (const [index, line] of (cost.breakdown ?? []).entries()) {
|
|
57
|
+
if (line.estimatedCostUsd === null) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
anyKnown = true;
|
|
61
|
+
knownSum += line.estimatedCostUsd;
|
|
62
|
+
if (typeof line.ratesAsOf !== "string" || line.ratesAsOf.length === 0) {
|
|
63
|
+
findings.push(`cost breakdown line ${index} (${line.kind}) claims $${line.estimatedCostUsd} without a ratesAsOf date`);
|
|
64
|
+
}
|
|
65
|
+
if (typeof line.source !== "string" || line.source.length === 0) {
|
|
66
|
+
findings.push(`cost breakdown line ${index} (${line.kind}) claims $${line.estimatedCostUsd} without a pricing source`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (cost.estimatedTotalUsd !== null) {
|
|
70
|
+
// A spend-free run's explicit zero prices nothing, so only a priced line needs a rates date.
|
|
71
|
+
if (anyKnown && (typeof cost.ratesAsOf !== "string" || cost.ratesAsOf.length === 0)) {
|
|
72
|
+
findings.push("run cost summary claims a number estimatedTotalUsd without a ratesAsOf date");
|
|
73
|
+
}
|
|
74
|
+
if (round6(cost.estimatedTotalUsd) !== round6(knownSum)) {
|
|
75
|
+
findings.push(`run cost estimatedTotalUsd ${cost.estimatedTotalUsd} does not equal the sum of its known breakdown lines (${round6(knownSum)})`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else if (anyKnown) {
|
|
79
|
+
// Every-line-null is the only honest null total; a null total beside a known line hides spend.
|
|
80
|
+
findings.push("run cost estimatedTotalUsd is null but a breakdown line carries a known (non-null) cost");
|
|
81
|
+
}
|
|
82
|
+
return findings;
|
|
83
|
+
}
|
|
84
|
+
/** An account-billed participant's execution profile and provider request receipts. */
|
|
85
|
+
function executionReceiptFindings(actor) {
|
|
86
|
+
const findings = [];
|
|
87
|
+
if (actor?.executionProfile === undefined)
|
|
88
|
+
return findings;
|
|
89
|
+
if (!validActorExecutionProfile(actor.executionProfile))
|
|
90
|
+
findings.push("Invalid actor execution profile");
|
|
91
|
+
if (!validActorProviderRequests(actor.providerRequests))
|
|
92
|
+
findings.push("Invalid account participant request receipts");
|
|
93
|
+
if (actor.historyTurnsOmitted !== undefined &&
|
|
94
|
+
(!Number.isSafeInteger(actor.historyTurnsOmitted) || actor.historyTurnsOmitted < 0))
|
|
95
|
+
findings.push("Invalid participant history omission count");
|
|
96
|
+
if (actor.executionProfile?.billing === "account-unknown" &&
|
|
97
|
+
(typeof actor.estimatedCost?.estimatedCostUsd === "number" ||
|
|
98
|
+
actor.tokenUsage?.costUsd !== undefined))
|
|
99
|
+
findings.push("Account participant dollars must remain unknown");
|
|
100
|
+
return findings;
|
|
101
|
+
}
|
|
102
|
+
function participantEstimateFindings(stream) {
|
|
103
|
+
const findings = [];
|
|
104
|
+
const estimate = stream.actor?.estimatedCost;
|
|
105
|
+
if (!estimate)
|
|
106
|
+
return findings;
|
|
107
|
+
const participantLabel = stream.laneId ?? stream.id;
|
|
108
|
+
if (estimate.schema !== "humanish.actor-estimated-cost.v1") {
|
|
109
|
+
findings.push(`participant ${participantLabel} actor estimatedCost schema is ${String(estimate.schema)}, expected humanish.actor-estimated-cost.v1`);
|
|
110
|
+
}
|
|
111
|
+
if (estimate.estimatedCostUsd !== null) {
|
|
112
|
+
if (typeof estimate.ratesAsOf !== "string" || estimate.ratesAsOf.length === 0) {
|
|
113
|
+
findings.push(`participant ${participantLabel} claims a model-token cost $${estimate.estimatedCostUsd} without a ratesAsOf date`);
|
|
114
|
+
}
|
|
115
|
+
if (typeof estimate.source !== "string" || estimate.source.length === 0) {
|
|
116
|
+
findings.push(`participant ${participantLabel} claims a model-token cost $${estimate.estimatedCostUsd} without a pricing source`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
// Declared-absent honesty (invariant 5): a null estimate must say WHY and carry null ratesAsOf.
|
|
121
|
+
if (estimate.reason === undefined) {
|
|
122
|
+
findings.push(`participant ${participantLabel} records a null cost estimate without a reason`);
|
|
123
|
+
}
|
|
124
|
+
if (estimate.ratesAsOf !== null) {
|
|
125
|
+
findings.push(`participant ${participantLabel} records a null cost estimate but carries a non-null ratesAsOf`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return findings;
|
|
129
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RunBundle } from "../run/bundle.js";
|
|
2
|
+
import type { PreparedRunArtifactPaths } from "../run/paths.js";
|
|
3
|
+
/**
|
|
4
|
+
* One warning when the run is not finished, by the run index's rule: its status record when it
|
|
5
|
+
* has a usable one, else a simulation still `running` in its bundle. Empty for a finished run.
|
|
6
|
+
*/
|
|
7
|
+
export declare function runNotFinishedWarnings(runPaths: PreparedRunArtifactPaths, bundle: RunBundle, nowMs?: number): Promise<string[]>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// `humanish verify`'s RUN_NOT_FINISHED warning. Verify checks the integrity of what a run wrote,
|
|
2
|
+
// and a run killed mid-way leaves an in-progress bundle that passes those checks. The warning says
|
|
3
|
+
// what verify saw on disk, so `ok: true` is not read as "the run finished". It never flips `ok`.
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { readRunJsonIfExists, readRunTextIfExists } from "../run/locate.js";
|
|
6
|
+
import { isRecord } from "../run/type-guards.js";
|
|
7
|
+
import { RECLAIM_RECEIPT_ARTIFACT } from "../run/reclaim.js";
|
|
8
|
+
import { runLiveness } from "../run/run-index.js";
|
|
9
|
+
import { parseSandboxReceipts, SANDBOX_RECEIPTS_ARTIFACT } from "../run/sandbox-receipts.js";
|
|
10
|
+
import { RUN_STATUS_FILE } from "../run/status.js";
|
|
11
|
+
/** The stable code every RUN_NOT_FINISHED warning starts with. */
|
|
12
|
+
const RUN_NOT_FINISHED = "RUN_NOT_FINISHED";
|
|
13
|
+
const GONE_STATES = new Set(["killed", "already-gone"]);
|
|
14
|
+
/**
|
|
15
|
+
* One warning when the run is not finished, by the run index's rule: its status record when it
|
|
16
|
+
* has a usable one, else a simulation still `running` in its bundle. Empty for a finished run.
|
|
17
|
+
*/
|
|
18
|
+
export async function runNotFinishedWarnings(runPaths, bundle, nowMs = Date.now()) {
|
|
19
|
+
const runId = path.basename(runPaths.absoluteRunRoot);
|
|
20
|
+
const status = await readRunJsonIfExists(runPaths, RUN_STATUS_FILE);
|
|
21
|
+
const { liveness, record } = runLiveness(runId, status, bundle, nowMs);
|
|
22
|
+
if (liveness === "finished")
|
|
23
|
+
return [];
|
|
24
|
+
const seen = [];
|
|
25
|
+
if (record === undefined) {
|
|
26
|
+
const running = bundle.simulations.filter((simulation) => simulation.status === "running");
|
|
27
|
+
seen.push(`the run has no usable ${RUN_STATUS_FILE} and ${running.length} of ${bundle.simulations.length} simulations are still running`);
|
|
28
|
+
}
|
|
29
|
+
else if (liveness === "running") {
|
|
30
|
+
seen.push(`${RUN_STATUS_FILE} state is ${record.state} and its owner updated it at ${record.updatedAt}, so the run may still be writing`);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
seen.push(`${RUN_STATUS_FILE} state is ${record.state} and its owner stopped updating it at ${record.updatedAt}`);
|
|
34
|
+
}
|
|
35
|
+
const runningStreams = bundle.streams.filter((stream) => stream.status === "running").length;
|
|
36
|
+
seen.push(`${runningStreams} of ${bundle.streams.length} streams are still running`);
|
|
37
|
+
const reclaim = await reclaimState(runPaths, runId);
|
|
38
|
+
return [
|
|
39
|
+
`${RUN_NOT_FINISHED}: ${seen.join("; ")}.${reclaim === "" ? "" : ` ${reclaim}`} Verify ok covers the integrity of what was written; it does not mean the run finished.`,
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
/** What the reclaim receipt says about the sandboxes this run journaled, or what to run. */
|
|
43
|
+
async function reclaimState(runPaths, runId) {
|
|
44
|
+
const journal = await readRunTextIfExists(runPaths, SANDBOX_RECEIPTS_ARTIFACT);
|
|
45
|
+
const journaled = new Set((journal === null ? [] : parseSandboxReceipts(journal)).map((receipt) => receipt.sandboxId));
|
|
46
|
+
const receipt = await readRunJsonIfExists(runPaths, RECLAIM_RECEIPT_ARTIFACT);
|
|
47
|
+
const outcomes = reclaimOutcomes(receipt, runId);
|
|
48
|
+
if (outcomes !== undefined) {
|
|
49
|
+
const gone = outcomes.filter((outcome) => GONE_STATES.has(outcome.state)).length;
|
|
50
|
+
const reclaimed = new Set(outcomes.map((outcome) => outcome.sandboxId));
|
|
51
|
+
const missing = [...journaled].filter((id) => !reclaimed.has(id)).length;
|
|
52
|
+
return `${RECLAIM_RECEIPT_ARTIFACT} records ${gone} of ${outcomes.length} sandboxes gone${missing === 0 ? "" : `, and ${missing} journaled sandboxes are not in it`}.`;
|
|
53
|
+
}
|
|
54
|
+
if (journaled.size === 0)
|
|
55
|
+
return "";
|
|
56
|
+
return `It has no ${RECLAIM_RECEIPT_ARTIFACT}; \`humanish reclaim --run ${runId}\` stops the ${journaled.size} sandboxes it journaled.`;
|
|
57
|
+
}
|
|
58
|
+
/** The outcomes of a reclaim receipt written for this run, or undefined when there is none. */
|
|
59
|
+
function reclaimOutcomes(receipt, runId) {
|
|
60
|
+
if (!isRecord(receipt) || receipt.runId !== runId || !Array.isArray(receipt.outcomes))
|
|
61
|
+
return undefined;
|
|
62
|
+
const outcomes = [];
|
|
63
|
+
for (const outcome of receipt.outcomes) {
|
|
64
|
+
if (!isRecord(outcome))
|
|
65
|
+
return undefined;
|
|
66
|
+
const { sandboxId, state } = outcome;
|
|
67
|
+
if (typeof sandboxId !== "string" || typeof state !== "string")
|
|
68
|
+
return undefined;
|
|
69
|
+
outcomes.push({ sandboxId, state });
|
|
70
|
+
}
|
|
71
|
+
return outcomes;
|
|
72
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** A rerun bundle must link each selected lane to its prior status and a fan-out rerun event. */
|
|
2
|
+
export function rerunLineageFindings(bundle) {
|
|
3
|
+
const rerun = bundle.rerun;
|
|
4
|
+
if (!rerun) {
|
|
5
|
+
return [];
|
|
6
|
+
}
|
|
7
|
+
const findings = [];
|
|
8
|
+
const selectedIds = rerun.selectedLaneIds;
|
|
9
|
+
const selectedSet = new Set(selectedIds);
|
|
10
|
+
const previousIds = rerun.previous.map((entry) => entry.laneId);
|
|
11
|
+
const previousSet = new Set(previousIds);
|
|
12
|
+
const currentIds = bundle.streams.map((stream) => stream.laneId);
|
|
13
|
+
const currentConcreteIds = currentIds.filter((id) => typeof id === "string" && id.trim().length > 0);
|
|
14
|
+
const currentSet = new Set(currentConcreteIds);
|
|
15
|
+
if (selectedSet.size !== selectedIds.length) {
|
|
16
|
+
findings.push("selectedLaneIds contains duplicate participant ids");
|
|
17
|
+
}
|
|
18
|
+
if (previousSet.size !== previousIds.length) {
|
|
19
|
+
findings.push("previous contains duplicate participant ids");
|
|
20
|
+
}
|
|
21
|
+
if (currentConcreteIds.length !== bundle.streams.length) {
|
|
22
|
+
findings.push("every rerun stream must carry a laneId");
|
|
23
|
+
}
|
|
24
|
+
for (const id of selectedIds) {
|
|
25
|
+
if (!previousSet.has(id)) {
|
|
26
|
+
findings.push(`selected participant ${id} is missing prior status`);
|
|
27
|
+
}
|
|
28
|
+
if (!currentSet.has(id)) {
|
|
29
|
+
findings.push(`selected participant ${id} is missing from current streams`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
for (const id of previousIds) {
|
|
33
|
+
if (!selectedSet.has(id)) {
|
|
34
|
+
findings.push(`previous participant ${id} was not selected`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
for (const id of currentConcreteIds) {
|
|
38
|
+
if (!selectedSet.has(id)) {
|
|
39
|
+
findings.push(`current participant ${id} was not selected`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (!bundle.events.some((event) => event.type === "cua-lab.fanout.rerun")) {
|
|
43
|
+
findings.push("missing cua-lab.fanout.rerun event");
|
|
44
|
+
}
|
|
45
|
+
return findings;
|
|
46
|
+
}
|