humanish 0.105.0 → 0.106.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +89 -94
- package/ARCHITECTURE.md +146 -0
- package/CHANGELOG.md +502 -0
- package/CONTEXT.md +51 -0
- package/CONTRIBUTING.md +111 -9
- package/README.md +213 -124
- package/SECURITY.md +1 -1
- package/TELEMETRY.md +112 -0
- package/dist/actors/affordance.d.ts +56 -0
- package/dist/actors/affordance.js +155 -0
- package/dist/actors/agent-session.js +42 -0
- package/dist/actors/codex/app-server-actor-trace.d.ts +11 -0
- package/dist/actors/codex/app-server-actor-trace.js +211 -0
- package/dist/actors/codex/app-server-client.d.ts +39 -0
- package/dist/actors/codex/app-server-client.js +116 -0
- package/dist/actors/codex/app-server-trace.d.ts +154 -0
- package/dist/actors/codex/app-server-trace.js +424 -0
- package/dist/actors/codex/app-server-ui.d.ts +40 -0
- package/dist/actors/codex/app-server-ui.js +328 -0
- package/dist/actors/codex/app-server.d.ts +44 -0
- package/dist/actors/codex/app-server.js +268 -0
- package/dist/actors/codex/qualified-versions.d.ts +45 -0
- package/dist/actors/codex/qualified-versions.js +87 -0
- package/dist/actors/codex/restricted-executable.d.ts +17 -0
- package/dist/actors/codex/restricted-executable.js +147 -0
- package/dist/actors/codex/restricted-launch.d.ts +116 -0
- package/dist/actors/codex/restricted-launch.js +222 -0
- package/dist/actors/codex/restricted-participant-policy.d.ts +46 -0
- package/dist/actors/codex/restricted-participant-policy.js +82 -0
- package/dist/actors/codex/restricted-participant.d.ts +20 -0
- package/dist/actors/codex/restricted-participant.js +432 -0
- package/dist/actors/codex/restricted-policy.d.ts +70 -0
- package/dist/actors/codex/restricted-policy.js +326 -0
- package/dist/actors/codex/restricted-session.d.ts +65 -0
- package/dist/actors/codex/restricted-session.js +432 -0
- package/dist/actors/codex/restricted-transport.d.ts +73 -0
- package/dist/actors/codex/restricted-transport.js +335 -0
- package/dist/actors/codex/restricted-turn.d.ts +62 -0
- package/dist/actors/codex/restricted-turn.js +284 -0
- package/dist/actors/computer-use/actor.d.ts +77 -0
- package/dist/actors/computer-use/actor.js +78 -0
- package/dist/actors/computer-use/admission-limit.d.ts +12 -0
- package/dist/actors/computer-use/admission-limit.js +19 -0
- package/dist/actors/computer-use/executor-error.js +48 -0
- package/dist/actors/computer-use/loop/actions.d.ts +26 -0
- package/dist/actors/computer-use/loop/actions.js +245 -0
- package/dist/actors/computer-use/loop/backstop.d.ts +42 -0
- package/dist/actors/computer-use/loop/backstop.js +202 -0
- package/dist/actors/computer-use/loop/debrief.d.ts +19 -0
- package/dist/actors/computer-use/loop/debrief.js +164 -0
- package/dist/actors/computer-use/loop/ending.d.ts +86 -0
- package/dist/actors/computer-use/loop/ending.js +316 -0
- package/dist/actors/computer-use/loop/observation.d.ts +55 -0
- package/dist/actors/computer-use/loop/observation.js +246 -0
- package/dist/actors/computer-use/loop/output-limit.d.ts +11 -0
- package/dist/actors/computer-use/loop/output-limit.js +21 -0
- package/dist/actors/computer-use/loop/provider-call.d.ts +19 -0
- package/dist/actors/computer-use/loop/provider-call.js +208 -0
- package/dist/actors/computer-use/loop/race.d.ts +34 -0
- package/dist/actors/computer-use/loop/race.js +79 -0
- package/dist/actors/computer-use/loop/session.d.ts +77 -0
- package/dist/actors/computer-use/loop/session.js +135 -0
- package/dist/actors/computer-use/loop/spend.d.ts +30 -0
- package/dist/actors/computer-use/loop/spend.js +85 -0
- package/dist/actors/computer-use/loop/trace.d.ts +35 -0
- package/dist/actors/computer-use/loop/trace.js +140 -0
- package/dist/actors/computer-use/loop/types.d.ts +404 -0
- package/dist/actors/computer-use/loop/types.js +1 -0
- package/dist/actors/computer-use/loop/usage.d.ts +102 -0
- package/dist/actors/computer-use/loop/usage.js +355 -0
- package/dist/actors/computer-use/loop.d.ts +11 -0
- package/dist/actors/computer-use/loop.js +248 -0
- package/dist/actors/computer-use/openai-provider.d.ts +107 -0
- package/dist/actors/computer-use/openai-provider.js +472 -0
- package/dist/actors/computer-use/openai-requests.d.ts +35 -0
- package/dist/actors/computer-use/openai-requests.js +74 -0
- package/dist/actors/computer-use/openai-wire.d.ts +67 -0
- package/dist/actors/computer-use/openai-wire.js +365 -0
- package/dist/actors/computer-use/provider-error.d.ts +27 -0
- package/dist/actors/computer-use/provider-error.js +86 -0
- package/dist/actors/computer-use/speech.js +6 -0
- package/dist/actors/contract.d.ts +315 -0
- package/dist/actors/contract.js +201 -0
- package/dist/actors/goal-source.js +38 -0
- package/dist/actors/local-agent/claude-session.d.ts +43 -0
- package/dist/actors/local-agent/claude-session.js +370 -0
- package/dist/actors/local-agent/cli.d.ts +115 -0
- package/dist/actors/local-agent/cli.js +413 -0
- package/dist/actors/local-agent/readiness.d.ts +31 -0
- package/dist/actors/local-agent/readiness.js +45 -0
- package/dist/actors/openai-endpoint.d.ts +2 -0
- package/dist/actors/openai-endpoint.js +2 -0
- package/dist/actors/output-token-limit.js +4 -0
- package/dist/actors/reasoning-effort.js +33 -0
- package/dist/actors/registry.d.ts +59 -0
- package/dist/actors/registry.js +89 -0
- package/dist/actors/scripted-browser/actor.d.ts +49 -0
- package/dist/actors/scripted-browser/actor.js +428 -0
- package/dist/actors/scripted-browser/browser-command.d.ts +1 -0
- package/dist/actors/scripted-browser/browser-command.js +48 -0
- package/dist/actors/scripted-browser/journey.d.ts +9 -0
- package/dist/actors/scripted-browser/journey.js +171 -0
- package/dist/actors/scripted-browser/steps.d.ts +60 -0
- package/dist/actors/scripted-browser/steps.js +384 -0
- package/dist/actors/scripted-browser/types.d.ts +135 -0
- package/dist/actors/scripted-browser/types.js +26 -0
- package/dist/actors/stop-cause.d.ts +9 -0
- package/dist/actors/stop-cause.js +42 -0
- package/dist/actors/stop-conditions.d.ts +40 -0
- package/dist/actors/stop-conditions.js +65 -0
- package/dist/analysis/automatic-completion.d.ts +38 -0
- package/dist/analysis/automatic-completion.js +90 -0
- package/dist/analysis/automatic-config.d.ts +41 -0
- package/dist/analysis/automatic-config.js +135 -0
- package/dist/analysis/automatic.d.ts +17 -0
- package/dist/analysis/automatic.js +279 -0
- package/dist/analysis/codex-config.d.ts +8 -0
- package/dist/analysis/codex-config.js +69 -0
- package/dist/analysis/evidence-sources.d.ts +23 -0
- package/dist/analysis/evidence-sources.js +251 -0
- package/dist/analysis/evidence.d.ts +18 -0
- package/dist/analysis/evidence.js +482 -0
- package/dist/analysis/execute.d.ts +52 -0
- package/dist/analysis/execute.js +504 -0
- package/dist/analysis/image-tokens.d.ts +1 -0
- package/dist/analysis/image-tokens.js +41 -0
- package/dist/analysis/job.d.ts +97 -0
- package/dist/analysis/job.js +311 -0
- package/dist/analysis/load.d.ts +3 -0
- package/dist/analysis/load.js +11 -0
- package/dist/analysis/provider.d.ts +57 -0
- package/dist/analysis/provider.js +227 -0
- package/dist/analysis/restricted-codex.d.ts +19 -0
- package/dist/analysis/restricted-codex.js +23 -0
- package/dist/analysis/service.d.ts +72 -0
- package/dist/analysis/service.js +399 -0
- package/dist/analysis/sharing.d.ts +11 -0
- package/dist/analysis/sharing.js +44 -0
- package/dist/analysis/store-executions.d.ts +27 -0
- package/dist/analysis/store-executions.js +224 -0
- package/dist/analysis/store.d.ts +31 -0
- package/dist/analysis/store.js +315 -0
- package/dist/analysis/types.d.ts +217 -0
- package/dist/analysis/types.js +12 -0
- package/dist/analysis/validation.d.ts +225 -0
- package/dist/analysis/validation.js +562 -0
- package/dist/browser-control/client.d.ts +18 -0
- package/dist/browser-control/client.js +239 -0
- package/dist/browser-control/dispatcher.d.ts +19 -0
- package/dist/browser-control/dispatcher.js +221 -0
- package/dist/browser-control/protocol.d.ts +492 -0
- package/dist/browser-control/protocol.js +360 -0
- package/dist/browser-control/recording-transfer.d.ts +3 -0
- package/dist/browser-control/recording-transfer.js +48 -0
- package/dist/browser-control/transport.d.ts +27 -0
- package/dist/browser-control/transport.js +189 -0
- package/dist/cli/commands/analysis-signals.d.ts +7 -0
- package/dist/cli/commands/analysis-signals.js +25 -0
- package/dist/cli/commands/analyze.d.ts +3 -0
- package/dist/cli/commands/analyze.js +212 -0
- package/dist/cli/commands/codex.d.ts +3 -0
- package/dist/cli/commands/codex.js +145 -0
- package/dist/cli/commands/comms.d.ts +3 -0
- package/dist/cli/commands/comms.js +225 -0
- package/dist/cli/commands/feedback.d.ts +3 -0
- package/dist/cli/commands/feedback.js +138 -0
- package/dist/cli/commands/lab-format.d.ts +8 -0
- package/dist/cli/commands/lab-format.js +105 -0
- package/dist/cli/commands/lab-route-computer-use.d.ts +20 -0
- package/dist/cli/commands/lab-route-computer-use.js +251 -0
- package/dist/cli/commands/lab-route-open.d.ts +27 -0
- package/dist/cli/commands/lab-route-open.js +37 -0
- package/dist/cli/commands/lab-route-preview.d.ts +20 -0
- package/dist/cli/commands/lab-route-preview.js +74 -0
- package/dist/cli/commands/lab-route-run.d.ts +17 -0
- package/dist/cli/commands/lab-route-run.js +31 -0
- package/dist/cli/commands/lab-route-scripted.d.ts +19 -0
- package/dist/cli/commands/lab-route-scripted.js +50 -0
- package/dist/cli/commands/lab-route-shared-world.d.ts +20 -0
- package/dist/cli/commands/lab-route-shared-world.js +135 -0
- package/dist/cli/commands/lab-route-terminal.d.ts +19 -0
- package/dist/cli/commands/lab-route-terminal.js +49 -0
- package/dist/cli/commands/lab-run.d.ts +9 -0
- package/dist/cli/commands/lab-run.js +166 -0
- package/dist/cli/commands/lab-scorer.d.ts +30 -0
- package/dist/cli/commands/lab-scorer.js +17 -0
- package/dist/cli/commands/lab.d.ts +3 -0
- package/dist/cli/commands/lab.js +193 -0
- package/dist/cli/commands/observe.d.ts +4 -0
- package/dist/cli/commands/observe.js +345 -0
- package/dist/cli/commands/runs.d.ts +11 -0
- package/dist/cli/commands/runs.js +314 -0
- package/dist/cli/commands/setup.d.ts +11 -0
- package/dist/cli/commands/setup.js +325 -0
- package/dist/cli/commands/tui.d.ts +32 -0
- package/dist/cli/commands/tui.js +305 -0
- package/dist/cli/commands/watch.d.ts +3 -0
- package/dist/cli/commands/watch.js +245 -0
- package/dist/cli/doctor.d.ts +39 -0
- package/dist/cli/doctor.js +263 -0
- package/dist/cli/first-run-path.d.ts +67 -0
- package/dist/cli/first-run-path.js +150 -0
- package/dist/cli/io.d.ts +85 -0
- package/dist/cli/io.js +232 -0
- package/dist/cli/observer-follow.d.ts +56 -0
- package/dist/cli/observer-follow.js +160 -0
- package/dist/cli/orientation.d.ts +30 -0
- package/dist/cli/orientation.js +114 -0
- package/dist/cli/program.d.ts +15 -0
- package/dist/cli/program.js +338 -0
- package/dist/cli/secret-prompt.js +39 -0
- package/dist/cli/telemetry.js +351 -0
- package/dist/cli.js +2 -4
- package/dist/comms/agentmail.d.ts +29 -0
- package/dist/comms/agentmail.js +568 -0
- package/dist/comms/capture-surface.d.ts +54 -0
- package/dist/comms/capture-surface.js +468 -0
- package/dist/comms/catch-host.d.ts +52 -0
- package/dist/comms/catch-host.js +192 -0
- package/dist/comms/connections.d.ts +20 -0
- package/dist/comms/connections.js +116 -0
- package/dist/comms/email-catch.d.ts +49 -0
- package/dist/comms/email-catch.js +236 -0
- package/dist/comms/extract.d.ts +7 -0
- package/dist/comms/extract.js +65 -0
- package/dist/comms/fake-inbox.d.ts +39 -0
- package/dist/comms/fake-inbox.js +136 -0
- package/dist/comms/images.d.ts +7 -0
- package/dist/comms/images.js +53 -0
- package/dist/comms/lease-store.d.ts +91 -0
- package/dist/comms/lease-store.js +600 -0
- package/dist/comms/providers.d.ts +30 -0
- package/dist/comms/providers.js +24 -0
- package/dist/comms/receiving-common.d.ts +17 -0
- package/dist/comms/receiving-common.js +82 -0
- package/dist/comms/receiving-evidence.d.ts +4 -0
- package/dist/comms/receiving-evidence.js +59 -0
- package/dist/comms/receiving-recovery.d.ts +22 -0
- package/dist/comms/receiving-recovery.js +100 -0
- package/dist/comms/receiving-render.d.ts +16 -0
- package/dist/comms/receiving-render.js +409 -0
- package/dist/comms/receiving-runtime.d.ts +41 -0
- package/dist/comms/receiving-runtime.js +66 -0
- package/dist/comms/receiving-surface.d.ts +8 -0
- package/dist/comms/receiving-surface.js +156 -0
- package/dist/comms/receiving-types.d.ts +122 -0
- package/dist/comms/receiving-types.js +3 -0
- package/dist/comms/receiving.d.ts +33 -0
- package/dist/comms/receiving.js +508 -0
- package/dist/comms/sandbox-catch-script.d.ts +16 -0
- package/dist/comms/sandbox-catch-script.js +331 -0
- package/dist/comms/sandbox-catch.d.ts +214 -0
- package/dist/comms/sandbox-catch.js +451 -0
- package/dist/comms/setup.d.ts +65 -0
- package/dist/comms/setup.js +259 -0
- package/dist/comms/thread-evidence.d.ts +28 -0
- package/dist/comms/thread-evidence.js +30 -0
- package/dist/comms/types.d.ts +76 -0
- package/dist/comms/types.js +8 -0
- package/dist/deprecated.d.ts +90 -0
- package/dist/deprecated.js +106 -0
- package/dist/evidence/browser-hygiene.js +42 -0
- package/dist/evidence/desktop-recorder.d.ts +39 -0
- package/dist/evidence/desktop-recorder.js +340 -0
- package/dist/evidence/desktop-recording-artifact.d.ts +5 -0
- package/dist/evidence/desktop-recording-artifact.js +53 -0
- package/dist/evidence/desktop-recording-types.d.ts +27 -0
- package/dist/evidence/desktop-recording-types.js +16 -0
- package/dist/evidence/encoded-text.d.ts +27 -0
- package/dist/evidence/encoded-text.js +243 -0
- package/dist/evidence/frame-signature.d.ts +17 -0
- package/dist/evidence/frame-signature.js +111 -0
- package/dist/evidence/image.d.ts +24 -0
- package/dist/evidence/image.js +170 -0
- package/dist/evidence/plain-text.d.ts +8 -0
- package/dist/evidence/plain-text.js +16 -0
- package/dist/evidence/redaction.d.ts +110 -0
- package/dist/evidence/redaction.js +329 -0
- package/dist/feedback/draft.d.ts +58 -0
- package/dist/feedback/draft.js +309 -0
- package/dist/feedback/export-bundle.d.ts +6 -0
- package/dist/feedback/export-bundle.js +585 -0
- package/dist/feedback/export.d.ts +50 -0
- package/dist/feedback/export.js +392 -0
- package/dist/feedback/feedback.d.ts +37 -0
- package/dist/feedback/feedback.js +282 -0
- package/dist/feedback/proof.d.ts +8 -0
- package/dist/feedback/proof.js +56 -0
- package/dist/guest/bootstrap.d.ts +55 -0
- package/dist/guest/bootstrap.js +348 -0
- package/dist/guest/browser-tools.d.ts +8 -0
- package/dist/guest/browser-tools.js +72 -0
- package/dist/guest/chromium-text.d.ts +62 -0
- package/dist/guest/chromium-text.js +386 -0
- package/dist/guest/desktop-executor.d.ts +57 -0
- package/dist/guest/desktop-executor.js +256 -0
- package/dist/guest/desktop-keys.d.ts +8 -0
- package/dist/guest/desktop-keys.js +89 -0
- package/dist/guest/desktop-media.d.ts +70 -0
- package/dist/guest/desktop-media.js +385 -0
- package/dist/guest/desktop-native.d.ts +14 -0
- package/dist/guest/desktop-native.js +156 -0
- package/dist/guest/media-config.d.ts +15 -0
- package/dist/guest/media-config.js +16 -0
- package/dist/guest/runtime-desktop.d.ts +45 -0
- package/dist/guest/runtime-desktop.js +420 -0
- package/dist/guest/runtime-processes.d.ts +28 -0
- package/dist/guest/runtime-processes.js +94 -0
- package/dist/guest/runtime.d.ts +31 -0
- package/dist/guest/runtime.js +124 -0
- package/dist/guest-media-worker.js +184 -48
- package/dist/guest-runtime-main.js +23 -10
- package/dist/guest-runtime-revision.js +1 -1
- package/dist/index.d.ts +32 -83
- package/dist/index.js +21 -42
- package/dist/keys/env-file.d.ts +15 -0
- package/dist/keys/env-file.js +109 -0
- package/dist/keys/key-resolution.d.ts +58 -0
- package/dist/keys/key-resolution.js +389 -0
- package/dist/lab/adapter-extension.d.ts +75 -0
- package/dist/lab/adapter-extension.js +253 -0
- package/dist/lab/adapter-scorer-loader.d.ts +43 -0
- package/dist/lab/adapter-scorer-loader.js +130 -0
- package/dist/lab/bag-overrides.d.ts +18 -0
- package/dist/lab/bag-overrides.js +121 -0
- package/dist/lab/composition-rules.d.ts +5 -0
- package/dist/lab/composition-rules.js +283 -0
- package/dist/lab/config.d.ts +7 -0
- package/dist/lab/config.js +208 -0
- package/dist/lab/device-presets.d.ts +97 -0
- package/dist/lab/device-presets.js +87 -0
- package/dist/lab/discover.d.ts +65 -0
- package/dist/lab/discover.js +422 -0
- package/dist/lab/doctor.d.ts +39 -0
- package/dist/lab/doctor.js +233 -0
- package/dist/lab/init-paths.d.ts +5 -0
- package/dist/lab/init-paths.js +89 -0
- package/dist/lab/init-plan.d.ts +20 -0
- package/dist/lab/init-plan.js +163 -0
- package/dist/lab/init-templates.d.ts +28 -0
- package/dist/lab/init-templates.js +416 -0
- package/dist/lab/init.d.ts +39 -0
- package/dist/lab/init.js +287 -0
- package/dist/lab/keys.d.ts +2 -0
- package/dist/lab/keys.js +264 -0
- package/dist/lab/parse/actors.d.ts +14 -0
- package/dist/lab/parse/actors.js +453 -0
- package/dist/lab/parse/comms.d.ts +12 -0
- package/dist/lab/parse/comms.js +246 -0
- package/dist/lab/parse/execution.d.ts +19 -0
- package/dist/lab/parse/execution.js +356 -0
- package/dist/lab/parse/subject-state.d.ts +30 -0
- package/dist/lab/parse/subject-state.js +179 -0
- package/dist/lab/parse/subject.d.ts +9 -0
- package/dist/lab/parse/subject.js +420 -0
- package/dist/lab/parse/values.d.ts +17 -0
- package/dist/lab/parse/values.js +65 -0
- package/dist/lab/participant-assignment.d.ts +12 -0
- package/dist/lab/participant-assignment.js +19 -0
- package/dist/lab/persona-resolve.d.ts +39 -0
- package/dist/lab/persona-resolve.js +118 -0
- package/dist/lab/persona.d.ts +39 -0
- package/dist/lab/persona.js +192 -0
- package/dist/lab/plan-base.d.ts +24 -0
- package/dist/lab/plan-base.js +113 -0
- package/dist/lab/plan-participants.d.ts +81 -0
- package/dist/lab/plan-participants.js +92 -0
- package/dist/lab/plan-types.d.ts +269 -0
- package/dist/lab/plan-types.js +5 -0
- package/dist/lab/plan.d.ts +27 -0
- package/dist/lab/plan.js +156 -0
- package/dist/lab/preflight-probes.d.ts +3 -0
- package/dist/lab/preflight-probes.js +312 -0
- package/dist/lab/preflight-result.d.ts +7 -0
- package/dist/lab/preflight-result.js +43 -0
- package/dist/lab/preflight.d.ts +95 -0
- package/dist/lab/preflight.js +117 -0
- package/dist/lab/route-inputs.d.ts +17 -0
- package/dist/lab/route-inputs.js +95 -0
- package/dist/lab/routing.d.ts +81 -0
- package/dist/lab/routing.js +214 -0
- package/dist/lab/run-lab-events.d.ts +69 -0
- package/dist/lab/run-lab-events.js +95 -0
- package/dist/lab/run-lab-options.d.ts +82 -0
- package/dist/lab/run-lab-options.js +399 -0
- package/dist/lab/summary.d.ts +60 -0
- package/dist/lab/summary.js +168 -0
- package/dist/lab/tasks.d.ts +91 -0
- package/dist/lab/tasks.js +139 -0
- package/dist/lab/types.d.ts +813 -0
- package/dist/lab/types.js +6 -0
- package/dist/lab/validation.d.ts +67 -0
- package/dist/lab/validation.js +387 -0
- package/dist/lab/warnings.d.ts +2 -0
- package/dist/lab/warnings.js +338 -0
- package/dist/observer/artifact.d.ts +23 -0
- package/dist/observer/artifact.js +235 -0
- package/dist/observer/data.d.ts +115 -0
- package/dist/observer/data.js +258 -0
- package/dist/observer/exposure.d.ts +64 -0
- package/dist/observer/exposure.js +143 -0
- package/dist/observer/http.js +50 -0
- package/dist/observer/library.js +190 -0
- package/dist/observer/listen.js +85 -0
- package/dist/observer/live.d.ts +9 -0
- package/dist/observer/live.js +25 -0
- package/dist/observer/pinned-files.d.ts +30 -0
- package/dist/observer/pinned-files.js +160 -0
- package/dist/observer/render.d.ts +69 -0
- package/dist/observer/render.js +350 -0
- package/dist/observer/run-inventory.d.ts +35 -0
- package/dist/observer/run-inventory.js +95 -0
- package/dist/observer/run-routes.d.ts +37 -0
- package/dist/observer/run-routes.js +373 -0
- package/dist/observer/serve.d.ts +97 -0
- package/dist/observer/serve.js +305 -0
- package/dist/observer/static.js +369 -0
- package/dist/observer/tunnel.js +112 -0
- package/dist/observer-app.html +9 -20
- package/dist/routes/computer-use/bundle-parts.d.ts +50 -0
- package/dist/routes/computer-use/bundle-parts.js +177 -0
- package/dist/routes/computer-use/bundle.d.ts +56 -0
- package/dist/routes/computer-use/bundle.js +184 -0
- package/dist/routes/computer-use/diagnostics.d.ts +38 -0
- package/dist/routes/computer-use/diagnostics.js +94 -0
- package/dist/routes/computer-use/e2b-desktop/comms.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/comms.js +225 -0
- package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +3 -0
- package/dist/routes/computer-use/e2b-desktop/desktop.js +91 -0
- package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/fidelity.js +156 -0
- package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +18 -0
- package/dist/routes/computer-use/e2b-desktop/prepare.js +198 -0
- package/dist/routes/computer-use/e2b-desktop/start.d.ts +14 -0
- package/dist/routes/computer-use/e2b-desktop/start.js +193 -0
- package/dist/routes/computer-use/e2b-desktop/state.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/state.js +69 -0
- package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +6 -0
- package/dist/routes/computer-use/e2b-desktop/teardown.js +152 -0
- package/dist/routes/computer-use/external-comms.d.ts +20 -0
- package/dist/routes/computer-use/external-comms.js +55 -0
- package/dist/routes/computer-use/fanout-bundle.d.ts +11 -0
- package/dist/routes/computer-use/fanout-bundle.js +274 -0
- package/dist/routes/computer-use/fanout-lanes.d.ts +15 -0
- package/dist/routes/computer-use/fanout-lanes.js +302 -0
- package/dist/routes/computer-use/in-process-desktop.d.ts +17 -0
- package/dist/routes/computer-use/in-process-desktop.js +40 -0
- package/dist/routes/computer-use/lanes.d.ts +35 -0
- package/dist/routes/computer-use/lanes.js +321 -0
- package/dist/routes/computer-use/legacy-lane-spec.d.ts +62 -0
- package/dist/routes/computer-use/legacy-lane-spec.js +39 -0
- package/dist/routes/computer-use/live-flush.d.ts +42 -0
- package/dist/routes/computer-use/live-flush.js +154 -0
- package/dist/routes/computer-use/local-tree-pack.d.ts +27 -0
- package/dist/routes/computer-use/local-tree-pack.js +47 -0
- package/dist/routes/computer-use/local-vm.d.ts +20 -0
- package/dist/routes/computer-use/local-vm.js +218 -0
- package/dist/routes/computer-use/participant-desktop.d.ts +63 -0
- package/dist/routes/computer-use/participant-desktop.js +33 -0
- package/dist/routes/computer-use/participant-facts.d.ts +6 -0
- package/dist/routes/computer-use/participant-facts.js +22 -0
- package/dist/routes/computer-use/participant-model.d.ts +30 -0
- package/dist/routes/computer-use/participant-model.js +222 -0
- package/dist/routes/computer-use/participant-prompt.d.ts +53 -0
- package/dist/routes/computer-use/participant-prompt.js +87 -0
- package/dist/routes/computer-use/participant-runs.d.ts +67 -0
- package/dist/routes/computer-use/participant-runs.js +255 -0
- package/dist/routes/computer-use/plan.d.ts +56 -0
- package/dist/routes/computer-use/plan.js +308 -0
- package/dist/routes/computer-use/preflight.d.ts +26 -0
- package/dist/routes/computer-use/preflight.js +85 -0
- package/dist/routes/computer-use/rerun-selection.d.ts +19 -0
- package/dist/routes/computer-use/rerun-selection.js +121 -0
- package/dist/routes/computer-use/result.d.ts +7 -0
- package/dist/routes/computer-use/result.js +292 -0
- package/dist/routes/computer-use/route.d.ts +33 -0
- package/dist/routes/computer-use/route.js +145 -0
- package/dist/routes/computer-use/run-lanes.d.ts +59 -0
- package/dist/routes/computer-use/run-lanes.js +135 -0
- package/dist/routes/computer-use/self-report.d.ts +21 -0
- package/dist/routes/computer-use/self-report.js +231 -0
- package/dist/routes/computer-use/setup.d.ts +136 -0
- package/dist/routes/computer-use/setup.js +371 -0
- package/dist/routes/computer-use/single-bundle.d.ts +97 -0
- package/dist/routes/computer-use/single-bundle.js +393 -0
- package/dist/routes/computer-use/subject-projection.d.ts +51 -0
- package/dist/routes/computer-use/subject-projection.js +159 -0
- package/dist/routes/computer-use/types.d.ts +539 -0
- package/dist/routes/computer-use/types.js +37 -0
- package/dist/routes/preview.d.ts +13 -0
- package/dist/routes/preview.js +36 -0
- package/dist/routes/scripted/bundle.d.ts +47 -0
- package/dist/routes/scripted/bundle.js +195 -0
- package/dist/routes/scripted/plan.d.ts +30 -0
- package/dist/routes/scripted/plan.js +95 -0
- package/dist/routes/scripted/result.d.ts +48 -0
- package/dist/routes/scripted/result.js +176 -0
- package/dist/routes/scripted/route.d.ts +28 -0
- package/dist/routes/scripted/route.js +218 -0
- package/dist/routes/scripted/scenario.d.ts +21 -0
- package/dist/routes/scripted/scenario.js +102 -0
- package/dist/routes/scripted/session-result.d.ts +8 -0
- package/dist/routes/scripted/session-result.js +60 -0
- package/dist/routes/scripted/setup.d.ts +45 -0
- package/dist/routes/scripted/setup.js +126 -0
- package/dist/routes/scripted/subject.d.ts +49 -0
- package/dist/routes/scripted/subject.js +156 -0
- package/dist/routes/scripted/surface-records.d.ts +26 -0
- package/dist/routes/scripted/surface-records.js +88 -0
- package/dist/routes/scripted/surface-sessions.d.ts +13 -0
- package/dist/routes/scripted/surface-sessions.js +40 -0
- package/dist/routes/scripted/types.d.ts +88 -0
- package/dist/routes/scripted/types.js +3 -0
- package/dist/routes/shared-world/bundle.d.ts +20 -0
- package/dist/routes/shared-world/bundle.js +446 -0
- package/dist/routes/shared-world/checkpoints.d.ts +25 -0
- package/dist/routes/shared-world/checkpoints.js +46 -0
- package/dist/routes/shared-world/comms.d.ts +68 -0
- package/dist/routes/shared-world/comms.js +176 -0
- package/dist/routes/shared-world/external-public.d.ts +21 -0
- package/dist/routes/shared-world/external-public.js +130 -0
- package/dist/routes/shared-world/handoff.d.ts +62 -0
- package/dist/routes/shared-world/handoff.js +348 -0
- package/dist/routes/shared-world/lobby-code.d.ts +25 -0
- package/dist/routes/shared-world/lobby-code.js +152 -0
- package/dist/routes/shared-world/plan.d.ts +27 -0
- package/dist/routes/shared-world/plan.js +174 -0
- package/dist/routes/shared-world/provenance.d.ts +27 -0
- package/dist/routes/shared-world/provenance.js +65 -0
- package/dist/routes/shared-world/provisioned.d.ts +57 -0
- package/dist/routes/shared-world/provisioned.js +505 -0
- package/dist/routes/shared-world/result.d.ts +18 -0
- package/dist/routes/shared-world/result.js +327 -0
- package/dist/routes/shared-world/route.d.ts +21 -0
- package/dist/routes/shared-world/route.js +277 -0
- package/dist/routes/shared-world/seat-records.d.ts +20 -0
- package/dist/routes/shared-world/seat-records.js +213 -0
- package/dist/routes/shared-world/seats.d.ts +38 -0
- package/dist/routes/shared-world/seats.js +208 -0
- package/dist/routes/shared-world/setup.d.ts +48 -0
- package/dist/routes/shared-world/setup.js +200 -0
- package/dist/routes/shared-world/types.d.ts +354 -0
- package/dist/routes/shared-world/types.js +29 -0
- package/dist/routes/terminal/adapter.d.ts +37 -0
- package/dist/routes/terminal/adapter.js +201 -0
- package/dist/routes/terminal/bundle.d.ts +79 -0
- package/dist/routes/terminal/bundle.js +305 -0
- package/dist/routes/terminal/credentials.d.ts +34 -0
- package/dist/routes/terminal/credentials.js +102 -0
- package/dist/routes/terminal/dry-run.d.ts +24 -0
- package/dist/routes/terminal/dry-run.js +157 -0
- package/dist/routes/terminal/encoding.js +79 -0
- package/dist/routes/terminal/ledger.d.ts +49 -0
- package/dist/routes/terminal/ledger.js +170 -0
- package/dist/routes/terminal/lifetime.d.ts +10 -0
- package/dist/routes/terminal/lifetime.js +22 -0
- package/dist/routes/terminal/live-finish.d.ts +31 -0
- package/dist/routes/terminal/live-finish.js +215 -0
- package/dist/routes/terminal/live-sandbox.d.ts +69 -0
- package/dist/routes/terminal/live-sandbox.js +452 -0
- package/dist/routes/terminal/persona.d.ts +20 -0
- package/dist/routes/terminal/persona.js +34 -0
- package/dist/routes/terminal/plan.d.ts +21 -0
- package/dist/routes/terminal/plan.js +115 -0
- package/dist/routes/terminal/recorder.d.ts +23 -0
- package/dist/routes/terminal/recorder.js +77 -0
- package/dist/routes/terminal/result.d.ts +47 -0
- package/dist/routes/terminal/result.js +114 -0
- package/dist/routes/terminal/route.d.ts +23 -0
- package/dist/routes/terminal/route.js +170 -0
- package/dist/routes/terminal/runtime-auth.d.ts +12 -0
- package/dist/routes/terminal/runtime-auth.js +23 -0
- package/dist/routes/terminal/runtime.d.ts +14 -0
- package/dist/routes/terminal/runtime.js +47 -0
- package/dist/routes/terminal/sandbox.d.ts +35 -0
- package/dist/routes/terminal/sandbox.js +126 -0
- package/dist/routes/terminal/session.d.ts +25 -0
- package/dist/routes/terminal/session.js +199 -0
- package/dist/routes/terminal/token-usage.d.ts +15 -0
- package/dist/routes/terminal/token-usage.js +93 -0
- package/dist/routes/terminal/trace.d.ts +40 -0
- package/dist/routes/terminal/trace.js +172 -0
- package/dist/routes/terminal/types.d.ts +342 -0
- package/dist/routes/terminal/types.js +31 -0
- package/dist/run/bundle-shape.d.ts +7 -0
- package/dist/run/bundle-shape.js +369 -0
- package/dist/run/bundle.d.ts +547 -0
- package/dist/run/bundle.js +44 -0
- package/dist/run/concurrency.js +24 -0
- package/dist/run/contained-output.d.ts +50 -0
- package/dist/run/contained-output.js +351 -0
- package/dist/run/cost-summary.d.ts +28 -0
- package/dist/run/cost-summary.js +213 -0
- package/dist/run/costs.js +140 -0
- package/dist/run/detail.d.ts +62 -0
- package/dist/run/detail.js +139 -0
- package/dist/run/dry-run-inputs.d.ts +9 -0
- package/dist/run/dry-run-inputs.js +90 -0
- package/dist/run/dry-run.d.ts +6 -0
- package/dist/run/dry-run.js +362 -0
- package/dist/run/feedback-shape.d.ts +7 -0
- package/dist/run/feedback-shape.js +89 -0
- package/dist/run/git-state.d.ts +35 -0
- package/dist/run/git-state.js +316 -0
- package/dist/run/git-workspace.d.ts +32 -0
- package/dist/run/git-workspace.js +450 -0
- package/dist/run/judge.d.ts +210 -0
- package/dist/run/judge.js +240 -0
- package/dist/run/locate.d.ts +22 -0
- package/dist/run/locate.js +122 -0
- package/dist/run/outcomes.d.ts +31 -0
- package/dist/run/outcomes.js +210 -0
- package/dist/run/participant-records.d.ts +28 -0
- package/dist/run/participant-records.js +63 -0
- package/dist/run/participant.d.ts +29 -0
- package/dist/run/participant.js +12 -0
- package/dist/run/paths.d.ts +79 -0
- package/dist/run/paths.js +356 -0
- package/dist/run/preflight-receipts.d.ts +46 -0
- package/dist/run/preflight-receipts.js +173 -0
- package/dist/run/pricing.d.ts +124 -0
- package/dist/run/pricing.js +298 -0
- package/dist/run/project.d.ts +8 -0
- package/dist/run/project.js +103 -0
- package/dist/run/projection.d.ts +184 -0
- package/dist/run/projection.js +356 -0
- package/dist/run/reclaim.d.ts +41 -0
- package/dist/run/reclaim.js +183 -0
- package/dist/run/results.d.ts +88 -0
- package/dist/run/results.js +3 -0
- package/dist/run/run-index.d.ts +107 -0
- package/dist/run/run-index.js +243 -0
- package/dist/run/run.d.ts +103 -0
- package/dist/run/run.js +199 -0
- package/dist/run/sandbox-receipts.d.ts +31 -0
- package/dist/run/sandbox-receipts.js +49 -0
- package/dist/run/shared-world-evidence.d.ts +220 -0
- package/dist/run/shared-world-evidence.js +49 -0
- package/dist/run/shared-world-shape.d.ts +26 -0
- package/dist/run/shared-world-shape.js +181 -0
- package/dist/run/stats.d.ts +82 -0
- package/dist/run/stats.js +258 -0
- package/dist/run/status.d.ts +111 -0
- package/dist/run/status.js +176 -0
- package/dist/run/stored-runs.d.ts +38 -0
- package/dist/run/stored-runs.js +273 -0
- package/dist/run/stream-shape.d.ts +4 -0
- package/dist/run/stream-shape.js +160 -0
- package/dist/run/streams.d.ts +257 -0
- package/dist/run/streams.js +12 -0
- package/dist/run/study-files.d.ts +35 -0
- package/dist/run/study-files.js +164 -0
- package/dist/run/terminal-contract.d.ts +25 -0
- package/dist/run/terminal-contract.js +47 -0
- package/dist/run/text.d.ts +2 -0
- package/dist/run/text.js +4 -0
- package/dist/run/transient-comms-secrets.js +72 -0
- package/dist/run/type-guards.d.ts +6 -0
- package/dist/run/type-guards.js +18 -0
- package/dist/run-lab.d.ts +110 -0
- package/dist/run-lab.js +148 -0
- package/dist/subject/clone.d.ts +37 -0
- package/dist/subject/clone.js +62 -0
- package/dist/subject/desktop-cli.d.ts +17 -0
- package/dist/subject/desktop-cli.js +51 -0
- package/dist/subject/local-tree-archive.d.ts +82 -0
- package/dist/subject/local-tree-archive.js +431 -0
- package/dist/subject/local-tree.d.ts +28 -0
- package/dist/subject/local-tree.js +58 -0
- package/dist/subject/node-bootstrap.d.ts +12 -0
- package/dist/subject/node-bootstrap.js +66 -0
- package/dist/subject/runtime.d.ts +13 -0
- package/dist/subject/runtime.js +50 -0
- package/dist/subject/serve.d.ts +39 -0
- package/dist/subject/serve.js +249 -0
- package/dist/subject/state.d.ts +23 -0
- package/dist/subject/state.js +58 -0
- package/dist/subject/steps.d.ts +37 -0
- package/dist/subject/steps.js +39 -0
- package/dist/substrates/command-failure.d.ts +23 -0
- package/dist/substrates/command-failure.js +45 -0
- package/dist/substrates/desktop-session.d.ts +41 -0
- package/dist/substrates/desktop-session.js +59 -0
- package/dist/substrates/detached.d.ts +55 -0
- package/dist/substrates/detached.js +139 -0
- package/dist/substrates/e2b/cdp-probe.d.ts +99 -0
- package/dist/substrates/e2b/cdp-probe.js +556 -0
- package/dist/substrates/e2b/desktop-browser.d.ts +81 -0
- package/dist/substrates/e2b/desktop-browser.js +410 -0
- package/dist/substrates/e2b/desktop-cdp.d.ts +77 -0
- package/dist/substrates/e2b/desktop-cdp.js +211 -0
- package/dist/substrates/e2b/desktop-executor.d.ts +92 -0
- package/dist/substrates/e2b/desktop-executor.js +302 -0
- package/dist/substrates/e2b/desktop-geometry.d.ts +83 -0
- package/dist/substrates/e2b/desktop-geometry.js +331 -0
- package/dist/substrates/e2b/desktop-media.d.ts +29 -0
- package/dist/substrates/e2b/desktop-media.js +151 -0
- package/dist/substrates/e2b/desktop-recording.d.ts +18 -0
- package/dist/substrates/e2b/desktop-recording.js +238 -0
- package/dist/substrates/e2b/desktop-resources.d.ts +11 -0
- package/dist/substrates/e2b/desktop-resources.js +35 -0
- package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +15 -0
- package/dist/substrates/e2b/desktop-screenshot-cleanup.js +66 -0
- package/dist/substrates/e2b/lifetime.d.ts +12 -0
- package/dist/substrates/e2b/lifetime.js +18 -0
- package/dist/substrates/e2b/sandbox.d.ts +102 -0
- package/dist/substrates/e2b/sandbox.js +202 -0
- package/dist/substrates/e2b/sdk.d.ts +194 -0
- package/dist/substrates/e2b/sdk.js +168 -0
- package/dist/substrates/e2b/shell.d.ts +10 -0
- package/dist/substrates/e2b/shell.js +61 -0
- package/dist/substrates/local/captured-inbox.d.ts +6 -0
- package/dist/substrates/local/captured-inbox.js +87 -0
- package/dist/substrates/local/firecracker-desktop.d.ts +25 -0
- package/dist/substrates/local/firecracker-desktop.js +315 -0
- package/dist/substrates/local/runtime-config.d.ts +6 -0
- package/dist/substrates/local/runtime-config.js +91 -0
- package/dist/substrates/local/runtime-host.d.ts +30 -0
- package/dist/substrates/local/runtime-host.js +143 -0
- package/dist/substrates/local/runtime-release.d.ts +5 -0
- package/dist/substrates/local/runtime-release.js +32 -0
- package/dist/substrates/local/runtime-ssh.d.ts +9 -0
- package/dist/substrates/local/runtime-ssh.js +129 -0
- package/dist/substrates/local/runtime.d.ts +25 -0
- package/dist/substrates/local/runtime.js +190 -0
- package/dist/substrates/shell.d.ts +44 -0
- package/dist/substrates/shell.js +22 -0
- package/dist/tui/actions.d.ts +39 -0
- package/dist/tui/actions.js +203 -0
- package/dist/tui/contract.d.ts +144 -0
- package/dist/tui/contract.js +52 -0
- package/dist/tui/launch.js +172 -0
- package/dist/tui/project.d.ts +10 -0
- package/dist/tui/project.js +17 -0
- package/dist/tui-app.js +125 -125
- package/dist/verify/actor.d.ts +27 -0
- package/dist/verify/actor.js +292 -0
- package/dist/verify/artifacts.d.ts +47 -0
- package/dist/verify/artifacts.js +373 -0
- package/dist/verify/costs.d.ts +30 -0
- package/dist/verify/costs.js +129 -0
- package/dist/verify/liveness.d.ts +7 -0
- package/dist/verify/liveness.js +72 -0
- package/dist/verify/rerun.d.ts +3 -0
- package/dist/verify/rerun.js +46 -0
- package/dist/verify/shared-world-concurrent.d.ts +11 -0
- package/dist/verify/shared-world-concurrent.js +346 -0
- package/dist/verify/shared-world.d.ts +8 -0
- package/dist/verify/shared-world.js +295 -0
- package/dist/verify/subject.d.ts +17 -0
- package/dist/verify/subject.js +123 -0
- package/dist/verify/verify.d.ts +34 -0
- package/dist/verify/verify.js +333 -0
- package/docs/README.md +67 -0
- package/docs/architecture/actor-contract.md +215 -174
- package/docs/architecture/browser-control.md +51 -37
- package/docs/architecture/comms-inbox.md +8 -8
- package/docs/architecture/desktop-recording.md +2 -2
- package/docs/architecture/desktop-sessions.md +33 -21
- package/docs/architecture/external-public-shared-world.md +80 -64
- package/docs/architecture/github-feedback-loop.md +40 -27
- package/docs/architecture/guest-desktop.md +22 -10
- package/docs/architecture/local-browser-runtime.md +30 -21
- package/docs/architecture/observer-review.md +9 -9
- package/docs/architecture/observer.md +53 -57
- package/docs/architecture/participant-media.md +3 -3
- package/docs/architecture/project-layout.md +33 -137
- package/docs/architecture/real-email-receiving.md +7 -6
- package/docs/architecture/restricted-codex-analysis.md +211 -25
- package/docs/architecture/serve.md +89 -87
- package/docs/architecture/state-driven-executor.md +79 -64
- package/docs/architecture/task-protocol-support.md +18 -18
- package/docs/architecture/terminal-product-lane.md +92 -86
- package/docs/contracts/adapter-admission.md +8 -4
- package/docs/contracts/adapter-fixtures.md +6 -6
- package/docs/contracts/core.md +22 -24
- package/docs/contracts/feedback.md +33 -23
- package/docs/contracts/policy.md +28 -31
- package/docs/contracts/run-bundle.md +168 -82
- package/docs/contracts/schemas.md +563 -379
- package/docs/contracts/study-analysis.md +2 -2
- package/docs/contracts/study-costs.md +12 -12
- package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +36 -0
- package/docs/decisions/0002-observer-is-one-self-contained-file.md +30 -0
- package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +35 -0
- package/docs/decisions/0004-participant-desktops-stay-in-the-route.md +31 -0
- package/docs/decisions/README.md +16 -0
- package/docs/goals/current.md +22 -50
- package/docs/principles/actor-fidelity.md +37 -40
- package/docs/principles/engineering.md +81 -0
- package/docs/principles/invariants-and-defaults.md +48 -45
- package/docs/principles/self-driving-harness.md +11 -10
- package/docs/principles/three-roles.md +12 -13
- package/docs/product/automatic-analysis.md +39 -9
- package/docs/product/lobby-trivia-3player-external-public.md +14 -13
- package/docs/product/open-source-install-experience.md +34 -38
- package/docs/ramp/README.md +91 -218
- package/docs/release/open-source-readiness.md +5 -2
- package/docs/release/public-readiness-standard.md +1 -1
- package/examples/README.md +11 -0
- package/examples/participant/README.md +80 -0
- package/examples/participant/app.mjs +55 -0
- package/examples/participant/run.mjs +116 -0
- package/examples/scorer/README.md +29 -0
- package/examples/scorer/run.mjs +63 -0
- package/examples/scorer/scorer.mjs +20 -0
- package/package.json +61 -57
- package/skills/humanish/SKILL.md +72 -60
- package/skills/humanish/agents/openai.yaml +2 -2
- package/dist/actor-contract.d.ts +0 -296
- package/dist/actor-contract.js +0 -340
- package/dist/actor-contract.js.map +0 -1
- package/dist/actor-goal-source.js +0 -32
- package/dist/actor-goal-source.js.map +0 -1
- package/dist/actor-registry.d.ts +0 -77
- package/dist/actor-registry.js +0 -106
- package/dist/actor-registry.js.map +0 -1
- package/dist/actor-stop-cause.d.ts +0 -9
- package/dist/actor-stop-cause.js +0 -42
- package/dist/actor-stop-cause.js.map +0 -1
- package/dist/adapter-extension.d.ts +0 -76
- package/dist/adapter-extension.js +0 -273
- package/dist/adapter-extension.js.map +0 -1
- package/dist/adapter-scorer-loader.d.ts +0 -42
- package/dist/adapter-scorer-loader.js +0 -129
- package/dist/adapter-scorer-loader.js.map +0 -1
- package/dist/affordance.d.ts +0 -53
- package/dist/affordance.js +0 -145
- package/dist/affordance.js.map +0 -1
- package/dist/agent-session.js +0 -43
- package/dist/agent-session.js.map +0 -1
- package/dist/argv.d.ts +0 -1
- package/dist/argv.js +0 -8
- package/dist/argv.js.map +0 -1
- package/dist/artifact-reference.d.ts +0 -22
- package/dist/artifact-reference.js +0 -47
- package/dist/artifact-reference.js.map +0 -1
- package/dist/automatic-analysis-completion.d.ts +0 -25
- package/dist/automatic-analysis-completion.js +0 -56
- package/dist/automatic-analysis-completion.js.map +0 -1
- package/dist/automatic-analysis-config.d.ts +0 -38
- package/dist/automatic-analysis-config.js +0 -68
- package/dist/automatic-analysis-config.js.map +0 -1
- package/dist/automatic-study-analysis.d.ts +0 -17
- package/dist/automatic-study-analysis.js +0 -195
- package/dist/automatic-study-analysis.js.map +0 -1
- package/dist/browser-control-client.d.ts +0 -18
- package/dist/browser-control-client.js +0 -176
- package/dist/browser-control-client.js.map +0 -1
- package/dist/browser-control-dispatcher.d.ts +0 -19
- package/dist/browser-control-dispatcher.js +0 -147
- package/dist/browser-control-dispatcher.js.map +0 -1
- package/dist/browser-control-protocol.d.ts +0 -472
- package/dist/browser-control-protocol.js +0 -185
- package/dist/browser-control-protocol.js.map +0 -1
- package/dist/browser-control-recording-transfer.d.ts +0 -4
- package/dist/browser-control-recording-transfer.js +0 -42
- package/dist/browser-control-recording-transfer.js.map +0 -1
- package/dist/browser-control-transport.d.ts +0 -27
- package/dist/browser-control-transport.js +0 -177
- package/dist/browser-control-transport.js.map +0 -1
- package/dist/browser-evidence-hygiene.js +0 -43
- package/dist/browser-evidence-hygiene.js.map +0 -1
- package/dist/chrome-cdp-probe.d.ts +0 -97
- package/dist/chrome-cdp-probe.js +0 -536
- package/dist/chrome-cdp-probe.js.map +0 -1
- package/dist/claude-agent-sdk.d.ts +0 -94
- package/dist/claude-agent-sdk.js +0 -367
- package/dist/claude-agent-sdk.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/codex-app-server-ui.d.ts +0 -39
- package/dist/codex-app-server-ui.js +0 -357
- package/dist/codex-app-server-ui.js.map +0 -1
- package/dist/codex-app-server.d.ts +0 -144
- package/dist/codex-app-server.js +0 -754
- package/dist/codex-app-server.js.map +0 -1
- package/dist/command-failure.d.ts +0 -43
- package/dist/command-failure.js +0 -73
- package/dist/command-failure.js.map +0 -1
- package/dist/comms-agentmail.d.ts +0 -25
- package/dist/comms-agentmail.js +0 -418
- package/dist/comms-agentmail.js.map +0 -1
- package/dist/comms-catch-host.d.ts +0 -52
- package/dist/comms-catch-host.js +0 -178
- package/dist/comms-catch-host.js.map +0 -1
- package/dist/comms-connections.d.ts +0 -52
- package/dist/comms-connections.js +0 -123
- package/dist/comms-connections.js.map +0 -1
- package/dist/comms-email-catch.d.ts +0 -54
- package/dist/comms-email-catch.js +0 -212
- package/dist/comms-email-catch.js.map +0 -1
- package/dist/comms-evidence.d.ts +0 -27
- package/dist/comms-evidence.js +0 -31
- package/dist/comms-evidence.js.map +0 -1
- package/dist/comms-fake-inbox.d.ts +0 -45
- package/dist/comms-fake-inbox.js +0 -184
- package/dist/comms-fake-inbox.js.map +0 -1
- package/dist/comms-images.d.ts +0 -7
- package/dist/comms-images.js +0 -39
- package/dist/comms-images.js.map +0 -1
- package/dist/comms-inbox.d.ts +0 -66
- package/dist/comms-inbox.js +0 -389
- package/dist/comms-inbox.js.map +0 -1
- package/dist/comms-lease-store.d.ts +0 -91
- package/dist/comms-lease-store.js +0 -495
- package/dist/comms-lease-store.js.map +0 -1
- package/dist/comms-receiving-evidence.d.ts +0 -46
- package/dist/comms-receiving-evidence.js +0 -35
- package/dist/comms-receiving-evidence.js.map +0 -1
- package/dist/comms-receiving-inbox.d.ts +0 -16
- package/dist/comms-receiving-inbox.js +0 -410
- package/dist/comms-receiving-inbox.js.map +0 -1
- package/dist/comms-receiving-runtime.d.ts +0 -25
- package/dist/comms-receiving-runtime.js +0 -45
- package/dist/comms-receiving-runtime.js.map +0 -1
- package/dist/comms-receiving-types.d.ts +0 -98
- package/dist/comms-receiving-types.js +0 -2
- package/dist/comms-receiving-types.js.map +0 -1
- package/dist/comms-receiving.d.ts +0 -58
- package/dist/comms-receiving.js +0 -554
- package/dist/comms-receiving.js.map +0 -1
- package/dist/comms-sandbox-catch.d.ts +0 -229
- package/dist/comms-sandbox-catch.js +0 -737
- package/dist/comms-sandbox-catch.js.map +0 -1
- package/dist/comms-setup.d.ts +0 -40
- package/dist/comms-setup.js +0 -121
- package/dist/comms-setup.js.map +0 -1
- package/dist/comms-types.d.ts +0 -72
- package/dist/comms-types.js +0 -10
- package/dist/comms-types.js.map +0 -1
- package/dist/computer-use-actor.d.ts +0 -76
- package/dist/computer-use-actor.js +0 -68
- package/dist/computer-use-actor.js.map +0 -1
- package/dist/computer-use.d.ts +0 -429
- package/dist/computer-use.js +0 -1751
- package/dist/computer-use.js.map +0 -1
- package/dist/concurrency.js +0 -27
- package/dist/concurrency.js.map +0 -1
- package/dist/concurrent-shared-world-lab.d.ts +0 -186
- package/dist/concurrent-shared-world-lab.js +0 -2181
- package/dist/concurrent-shared-world-lab.js.map +0 -1
- package/dist/core/git-state.d.ts +0 -33
- package/dist/core/git-state.js +0 -277
- package/dist/core/git-state.js.map +0 -1
- package/dist/core/git-workspace.d.ts +0 -31
- package/dist/core/git-workspace.js +0 -447
- package/dist/core/git-workspace.js.map +0 -1
- package/dist/core/index.d.ts +0 -4
- package/dist/core/index.js +0 -3
- package/dist/core/index.js.map +0 -1
- package/dist/core/run-primitives.d.ts +0 -66
- package/dist/core/run-primitives.js +0 -120
- package/dist/core/run-primitives.js.map +0 -1
- package/dist/cua-actor-lab.d.ts +0 -855
- package/dist/cua-actor-lab.js +0 -3543
- package/dist/cua-actor-lab.js.map +0 -1
- package/dist/cua-admission-limit.d.ts +0 -12
- package/dist/cua-admission-limit.js +0 -20
- package/dist/cua-admission-limit.js.map +0 -1
- package/dist/cua-desktop-lane.d.ts +0 -35
- package/dist/cua-desktop-lane.js +0 -13
- package/dist/cua-desktop-lane.js.map +0 -1
- package/dist/cua-diagnostics.d.ts +0 -38
- package/dist/cua-diagnostics.js +0 -68
- package/dist/cua-diagnostics.js.map +0 -1
- package/dist/cua-executor-error.js +0 -48
- package/dist/cua-executor-error.js.map +0 -1
- package/dist/cua-provider-error.d.ts +0 -16
- package/dist/cua-provider-error.js +0 -35
- package/dist/cua-provider-error.js.map +0 -1
- package/dist/cua-speech.js +0 -2
- package/dist/cua-speech.js.map +0 -1
- package/dist/desktop-recorder.d.ts +0 -39
- package/dist/desktop-recorder.js +0 -226
- package/dist/desktop-recorder.js.map +0 -1
- package/dist/desktop-recording-artifact.d.ts +0 -5
- package/dist/desktop-recording-artifact.js +0 -54
- package/dist/desktop-recording-artifact.js.map +0 -1
- package/dist/desktop-recording-types.d.ts +0 -24
- package/dist/desktop-recording-types.js +0 -14
- package/dist/desktop-recording-types.js.map +0 -1
- package/dist/desktop-session.d.ts +0 -41
- package/dist/desktop-session.js +0 -47
- package/dist/desktop-session.js.map +0 -1
- package/dist/device-presets.d.ts +0 -67
- package/dist/device-presets.js +0 -55
- package/dist/device-presets.js.map +0 -1
- package/dist/doctor-lab.d.ts +0 -38
- package/dist/doctor-lab.js +0 -126
- package/dist/doctor-lab.js.map +0 -1
- package/dist/e2b-cua-desktop.d.ts +0 -3
- package/dist/e2b-cua-desktop.js +0 -708
- package/dist/e2b-cua-desktop.js.map +0 -1
- package/dist/e2b-cua-provisioning.d.ts +0 -314
- package/dist/e2b-cua-provisioning.js +0 -1219
- package/dist/e2b-cua-provisioning.js.map +0 -1
- package/dist/e2b-desktop-executor.d.ts +0 -101
- package/dist/e2b-desktop-executor.js +0 -297
- package/dist/e2b-desktop-executor.js.map +0 -1
- package/dist/e2b-desktop-launch.d.ts +0 -243
- package/dist/e2b-desktop-launch.js +0 -234
- package/dist/e2b-desktop-launch.js.map +0 -1
- package/dist/e2b-desktop-media.d.ts +0 -14
- package/dist/e2b-desktop-media.js +0 -58
- package/dist/e2b-desktop-media.js.map +0 -1
- package/dist/e2b-desktop-recording.d.ts +0 -16
- package/dist/e2b-desktop-recording.js +0 -162
- package/dist/e2b-desktop-recording.js.map +0 -1
- package/dist/e2b-desktop-resources.d.ts +0 -11
- package/dist/e2b-desktop-resources.js +0 -33
- package/dist/e2b-desktop-resources.js.map +0 -1
- package/dist/e2b-desktop-screenshot-cleanup.d.ts +0 -15
- package/dist/e2b-desktop-screenshot-cleanup.js +0 -67
- package/dist/e2b-desktop-screenshot-cleanup.js.map +0 -1
- package/dist/e2b-desktop-session.d.ts +0 -7
- package/dist/e2b-desktop-session.js +0 -29
- package/dist/e2b-desktop-session.js.map +0 -1
- package/dist/e2b-detached.d.ts +0 -53
- package/dist/e2b-detached.js +0 -130
- package/dist/e2b-detached.js.map +0 -1
- package/dist/e2b-terminal-lab.d.ts +0 -383
- package/dist/e2b-terminal-lab.js +0 -2000
- package/dist/e2b-terminal-lab.js.map +0 -1
- package/dist/env-file.d.ts +0 -14
- package/dist/env-file.js +0 -108
- package/dist/env-file.js.map +0 -1
- package/dist/export-bundle.d.ts +0 -7
- package/dist/export-bundle.js +0 -441
- package/dist/export-bundle.js.map +0 -1
- package/dist/export.d.ts +0 -49
- package/dist/export.js +0 -308
- package/dist/export.js.map +0 -1
- package/dist/feedback-proof.d.ts +0 -8
- package/dist/feedback-proof.js +0 -44
- package/dist/feedback-proof.js.map +0 -1
- package/dist/feedback.d.ts +0 -76
- package/dist/feedback.js +0 -496
- package/dist/feedback.js.map +0 -1
- package/dist/first-run-path.d.ts +0 -55
- package/dist/first-run-path.js +0 -136
- package/dist/first-run-path.js.map +0 -1
- package/dist/frame-signature.d.ts +0 -24
- package/dist/frame-signature.js +0 -128
- package/dist/frame-signature.js.map +0 -1
- package/dist/guest-bootstrap.d.ts +0 -55
- package/dist/guest-bootstrap.js +0 -285
- package/dist/guest-bootstrap.js.map +0 -1
- package/dist/guest-browser-tools.d.ts +0 -8
- package/dist/guest-browser-tools.js +0 -66
- package/dist/guest-browser-tools.js.map +0 -1
- package/dist/guest-chromium-text.d.ts +0 -27
- package/dist/guest-chromium-text.js +0 -281
- package/dist/guest-chromium-text.js.map +0 -1
- package/dist/guest-desktop-executor.d.ts +0 -22
- package/dist/guest-desktop-executor.js +0 -178
- package/dist/guest-desktop-executor.js.map +0 -1
- package/dist/guest-desktop-media.d.ts +0 -33
- package/dist/guest-desktop-media.js +0 -281
- package/dist/guest-desktop-media.js.map +0 -1
- package/dist/guest-desktop-native.d.ts +0 -14
- package/dist/guest-desktop-native.js +0 -131
- package/dist/guest-desktop-native.js.map +0 -1
- package/dist/guest-media-config.d.ts +0 -15
- package/dist/guest-media-config.js +0 -8
- package/dist/guest-media-config.js.map +0 -1
- package/dist/guest-media-worker.js.map +0 -1
- package/dist/guest-runtime-desktop.d.ts +0 -42
- package/dist/guest-runtime-desktop.js +0 -314
- package/dist/guest-runtime-desktop.js.map +0 -1
- package/dist/guest-runtime-main.js.map +0 -1
- package/dist/guest-runtime-revision.js.map +0 -1
- package/dist/guest-runtime.d.ts +0 -31
- package/dist/guest-runtime.js +0 -99
- package/dist/guest-runtime.js.map +0 -1
- package/dist/image-evidence.d.ts +0 -2
- package/dist/image-evidence.js +0 -47
- package/dist/image-evidence.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init-templates.d.ts +0 -25
- package/dist/init-templates.js +0 -541
- package/dist/init-templates.js.map +0 -1
- package/dist/init.d.ts +0 -38
- package/dist/init.js +0 -532
- package/dist/init.js.map +0 -1
- package/dist/key-resolution.d.ts +0 -67
- package/dist/key-resolution.js +0 -375
- package/dist/key-resolution.js.map +0 -1
- package/dist/lab-app-runner.d.ts +0 -78
- package/dist/lab-app-runner.js +0 -403
- package/dist/lab-app-runner.js.map +0 -1
- package/dist/lab-config.d.ts +0 -968
- package/dist/lab-config.js +0 -2714
- package/dist/lab-config.js.map +0 -1
- package/dist/lab-engine.d.ts +0 -97
- package/dist/lab-engine.js +0 -285
- package/dist/lab-engine.js.map +0 -1
- package/dist/lab-preflight.d.ts +0 -70
- package/dist/lab-preflight.js +0 -388
- package/dist/lab-preflight.js.map +0 -1
- package/dist/lab-summary.d.ts +0 -57
- package/dist/lab-summary.js +0 -126
- package/dist/lab-summary.js.map +0 -1
- package/dist/labs.d.ts +0 -66
- package/dist/labs.js +0 -401
- package/dist/labs.js.map +0 -1
- package/dist/listen.js +0 -84
- package/dist/listen.js.map +0 -1
- package/dist/local-agent-claude-session.d.ts +0 -45
- package/dist/local-agent-claude-session.js +0 -203
- package/dist/local-agent-claude-session.js.map +0 -1
- package/dist/local-agent-cli.d.ts +0 -121
- package/dist/local-agent-cli.js +0 -427
- package/dist/local-agent-cli.js.map +0 -1
- package/dist/local-captured-inbox.d.ts +0 -6
- package/dist/local-captured-inbox.js +0 -65
- package/dist/local-captured-inbox.js.map +0 -1
- package/dist/local-firecracker-desktop.d.ts +0 -23
- package/dist/local-firecracker-desktop.js +0 -191
- package/dist/local-firecracker-desktop.js.map +0 -1
- package/dist/local-firecracker-study.d.ts +0 -9
- package/dist/local-firecracker-study.js +0 -135
- package/dist/local-firecracker-study.js.map +0 -1
- package/dist/local-runtime-config.d.ts +0 -6
- package/dist/local-runtime-config.js +0 -60
- package/dist/local-runtime-config.js.map +0 -1
- package/dist/local-runtime-host.d.ts +0 -31
- package/dist/local-runtime-host.js +0 -128
- package/dist/local-runtime-host.js.map +0 -1
- package/dist/local-runtime-release.d.ts +0 -7
- package/dist/local-runtime-release.js +0 -33
- package/dist/local-runtime-release.js.map +0 -1
- package/dist/local-runtime-ssh.d.ts +0 -27
- package/dist/local-runtime-ssh.js +0 -91
- package/dist/local-runtime-ssh.js.map +0 -1
- package/dist/local-runtime.d.ts +0 -25
- package/dist/local-runtime.js +0 -133
- package/dist/local-runtime.js.map +0 -1
- package/dist/observer-data.d.ts +0 -114
- package/dist/observer-data.js +0 -224
- package/dist/observer-data.js.map +0 -1
- package/dist/observer-library.js +0 -191
- package/dist/observer-library.js.map +0 -1
- package/dist/observer-serve.d.ts +0 -99
- package/dist/observer-serve.js +0 -284
- package/dist/observer-serve.js.map +0 -1
- package/dist/observer-static.js +0 -357
- package/dist/observer-static.js.map +0 -1
- package/dist/observer.d.ts +0 -118
- package/dist/observer.js +0 -947
- package/dist/observer.js.map +0 -1
- package/dist/openai-responses-cu.d.ts +0 -158
- package/dist/openai-responses-cu.js +0 -714
- package/dist/openai-responses-cu.js.map +0 -1
- package/dist/orientation.d.ts +0 -29
- package/dist/orientation.js +0 -95
- package/dist/orientation.js.map +0 -1
- package/dist/oss-lab.d.ts +0 -55
- package/dist/oss-lab.js +0 -344
- package/dist/oss-lab.js.map +0 -1
- package/dist/oss-meta-lab-scoring.d.ts +0 -15
- package/dist/oss-meta-lab-scoring.js +0 -145
- package/dist/oss-meta-lab-scoring.js.map +0 -1
- package/dist/oss-meta-lab.d.ts +0 -287
- package/dist/oss-meta-lab.js +0 -4551
- package/dist/oss-meta-lab.js.map +0 -1
- package/dist/oss-remote-telemetry.d.ts +0 -77
- package/dist/oss-remote-telemetry.js +0 -403
- package/dist/oss-remote-telemetry.js.map +0 -1
- package/dist/output-token-limit.js +0 -5
- package/dist/output-token-limit.js.map +0 -1
- package/dist/participant-assignment.d.ts +0 -12
- package/dist/participant-assignment.js +0 -15
- package/dist/participant-assignment.js.map +0 -1
- package/dist/persona-resolve.d.ts +0 -44
- package/dist/persona-resolve.js +0 -99
- package/dist/persona-resolve.js.map +0 -1
- package/dist/persona.d.ts +0 -39
- package/dist/persona.js +0 -144
- package/dist/persona.js.map +0 -1
- package/dist/pi-agent-core.d.ts +0 -77
- package/dist/pi-agent-core.js +0 -207
- package/dist/pi-agent-core.js.map +0 -1
- package/dist/pricing.d.ts +0 -145
- package/dist/pricing.js +0 -277
- package/dist/pricing.js.map +0 -1
- package/dist/program.d.ts +0 -96
- package/dist/program.js +0 -4030
- package/dist/program.js.map +0 -1
- package/dist/reasoning-effort.js +0 -26
- package/dist/reasoning-effort.js.map +0 -1
- package/dist/reclaim.d.ts +0 -31
- package/dist/reclaim.js +0 -90
- package/dist/reclaim.js.map +0 -1
- package/dist/redaction.d.ts +0 -90
- package/dist/redaction.js +0 -294
- package/dist/redaction.js.map +0 -1
- package/dist/restricted-codex-analysis.d.ts +0 -15
- package/dist/restricted-codex-analysis.js +0 -13
- package/dist/restricted-codex-analysis.js.map +0 -1
- package/dist/restricted-codex-participant-policy.d.ts +0 -44
- package/dist/restricted-codex-participant-policy.js +0 -43
- package/dist/restricted-codex-participant-policy.js.map +0 -1
- package/dist/restricted-codex-participant-run.d.ts +0 -20
- package/dist/restricted-codex-participant-run.js +0 -79
- package/dist/restricted-codex-participant-run.js.map +0 -1
- package/dist/restricted-codex-participant.d.ts +0 -20
- package/dist/restricted-codex-participant.js +0 -250
- package/dist/restricted-codex-participant.js.map +0 -1
- package/dist/restricted-codex-policy.d.ts +0 -64
- package/dist/restricted-codex-policy.js +0 -176
- package/dist/restricted-codex-policy.js.map +0 -1
- package/dist/restricted-codex-session.d.ts +0 -44
- package/dist/restricted-codex-session.js +0 -657
- package/dist/restricted-codex-session.js.map +0 -1
- package/dist/restricted-codex-transport.d.ts +0 -69
- package/dist/restricted-codex-transport.js +0 -296
- package/dist/restricted-codex-transport.js.map +0 -1
- package/dist/run-detail.d.ts +0 -61
- package/dist/run-detail.js +0 -137
- package/dist/run-detail.js.map +0 -1
- package/dist/run-index.d.ts +0 -71
- package/dist/run-index.js +0 -206
- package/dist/run-index.js.map +0 -1
- package/dist/run-narration-secrets.js +0 -68
- package/dist/run-narration-secrets.js.map +0 -1
- package/dist/run-paths.d.ts +0 -56
- package/dist/run-paths.js +0 -355
- package/dist/run-paths.js.map +0 -1
- package/dist/run-projection.d.ts +0 -186
- package/dist/run-projection.js +0 -350
- package/dist/run-projection.js.map +0 -1
- package/dist/run-status.d.ts +0 -139
- package/dist/run-status.js +0 -218
- package/dist/run-status.js.map +0 -1
- package/dist/run.d.ts +0 -1255
- package/dist/run.js +0 -5949
- package/dist/run.js.map +0 -1
- package/dist/sandbox-receipts.d.ts +0 -19
- package/dist/sandbox-receipts.js +0 -51
- package/dist/sandbox-receipts.js.map +0 -1
- package/dist/screenshot-image.d.ts +0 -11
- package/dist/screenshot-image.js +0 -26
- package/dist/screenshot-image.js.map +0 -1
- package/dist/scripted-browser-actor.d.ts +0 -297
- package/dist/scripted-browser-actor.js +0 -1399
- package/dist/scripted-browser-actor.js.map +0 -1
- package/dist/scripted-browser-lab.d.ts +0 -121
- package/dist/scripted-browser-lab.js +0 -852
- package/dist/scripted-browser-lab.js.map +0 -1
- package/dist/secret-prompt.js +0 -36
- package/dist/secret-prompt.js.map +0 -1
- package/dist/selected-output-paths.d.ts +0 -52
- package/dist/selected-output-paths.js +0 -366
- package/dist/selected-output-paths.js.map +0 -1
- package/dist/serve-exposure.d.ts +0 -62
- package/dist/serve-exposure.js +0 -129
- package/dist/serve-exposure.js.map +0 -1
- package/dist/serve-http.js +0 -45
- package/dist/serve-http.js.map +0 -1
- package/dist/serve-tunnel.js +0 -113
- package/dist/serve-tunnel.js.map +0 -1
- package/dist/shared-world-lab.d.ts +0 -269
- package/dist/shared-world-lab.js +0 -1424
- package/dist/shared-world-lab.js.map +0 -1
- package/dist/source-archive.d.ts +0 -82
- package/dist/source-archive.js +0 -408
- package/dist/source-archive.js.map +0 -1
- package/dist/stats.d.ts +0 -82
- package/dist/stats.js +0 -219
- package/dist/stats.js.map +0 -1
- package/dist/stop-conditions.d.ts +0 -39
- package/dist/stop-conditions.js +0 -66
- package/dist/stop-conditions.js.map +0 -1
- package/dist/study-analysis-codex-config.d.ts +0 -11
- package/dist/study-analysis-codex-config.js +0 -34
- package/dist/study-analysis-codex-config.js.map +0 -1
- package/dist/study-analysis-engine.d.ts +0 -47
- package/dist/study-analysis-engine.js +0 -327
- package/dist/study-analysis-engine.js.map +0 -1
- package/dist/study-analysis-evidence.d.ts +0 -27
- package/dist/study-analysis-evidence.js +0 -660
- package/dist/study-analysis-evidence.js.map +0 -1
- package/dist/study-analysis-job.d.ts +0 -97
- package/dist/study-analysis-job.js +0 -214
- package/dist/study-analysis-job.js.map +0 -1
- package/dist/study-analysis-provider.d.ts +0 -40
- package/dist/study-analysis-provider.js +0 -170
- package/dist/study-analysis-provider.js.map +0 -1
- package/dist/study-analysis-service.d.ts +0 -59
- package/dist/study-analysis-service.js +0 -257
- package/dist/study-analysis-service.js.map +0 -1
- package/dist/study-analysis-sharing.d.ts +0 -11
- package/dist/study-analysis-sharing.js +0 -35
- package/dist/study-analysis-sharing.js.map +0 -1
- package/dist/study-analysis-store.d.ts +0 -47
- package/dist/study-analysis-store.js +0 -493
- package/dist/study-analysis-store.js.map +0 -1
- package/dist/study-analysis-validation.d.ts +0 -618
- package/dist/study-analysis-validation.js +0 -384
- package/dist/study-analysis-validation.js.map +0 -1
- package/dist/study-analysis.d.ts +0 -206
- package/dist/study-analysis.js +0 -4
- package/dist/study-analysis.js.map +0 -1
- package/dist/study-costs.js +0 -114
- package/dist/study-costs.js.map +0 -1
- package/dist/subject-runtime.d.ts +0 -23
- package/dist/subject-runtime.js +0 -70
- package/dist/subject-runtime.js.map +0 -1
- package/dist/tasks.d.ts +0 -90
- package/dist/tasks.js +0 -144
- package/dist/tasks.js.map +0 -1
- package/dist/telemetry.js +0 -324
- package/dist/telemetry.js.map +0 -1
- package/dist/terminal-agent-actor.d.ts +0 -41
- package/dist/terminal-agent-actor.js +0 -25
- package/dist/terminal-agent-actor.js.map +0 -1
- package/dist/terminal-encoding.js +0 -80
- package/dist/terminal-encoding.js.map +0 -1
- package/dist/terminal-node-bootstrap.d.ts +0 -4
- package/dist/terminal-node-bootstrap.js +0 -58
- package/dist/terminal-node-bootstrap.js.map +0 -1
- package/dist/terminal-participant-activity.d.ts +0 -6
- package/dist/terminal-participant-activity.js +0 -34
- package/dist/terminal-participant-activity.js.map +0 -1
- package/dist/terminal-runtime-auth.d.ts +0 -13
- package/dist/terminal-runtime-auth.js +0 -24
- package/dist/terminal-runtime-auth.js.map +0 -1
- package/dist/terminal-runtime.d.ts +0 -16
- package/dist/terminal-runtime.js +0 -42
- package/dist/terminal-runtime.js.map +0 -1
- package/dist/terminal-token-usage.d.ts +0 -15
- package/dist/terminal-token-usage.js +0 -94
- package/dist/terminal-token-usage.js.map +0 -1
- package/dist/tui-actions.d.ts +0 -39
- package/dist/tui-actions.js +0 -178
- package/dist/tui-actions.js.map +0 -1
- package/dist/tui-contract.d.ts +0 -141
- package/dist/tui-contract.js +0 -54
- package/dist/tui-contract.js.map +0 -1
- package/dist/tui-launch.js +0 -167
- package/dist/tui-launch.js.map +0 -1
- package/dist/tui-project.d.ts +0 -9
- package/dist/tui-project.js +0 -18
- package/dist/tui-project.js.map +0 -1
- package/docs/architecture/examples/state-driven-local-app/README.md +0 -80
- package/docs/architecture/examples/state-driven-local-app/app.mjs +0 -48
- package/docs/architecture/examples/state-driven-local-app/runner.mjs +0 -105
- package/docs/architecture/local-codex-tui-actor.md +0 -213
- package/docs/architecture/oss-lab-poc.md +0 -250
- package/docs/architecture/runtime-broker-core.md +0 -30
- package/docs/release/0.100.0-local-setup.md +0 -31
- package/docs/release/0.100.1-participant-continuity.md +0 -20
- package/docs/release/0.101.0-codex-ui-tools.md +0 -28
- package/docs/release/0.102.0-participant-media.md +0 -43
- package/docs/release/0.103.0-desktop-recording.md +0 -29
- package/docs/release/0.103.1-analysis-capture-allocation.md +0 -18
- package/docs/release/0.103.2-analysis-ending-context.md +0 -21
- package/docs/release/0.104.0-local-captured-inboxes.md +0 -29
- package/docs/release/0.104.1-recording-startup.md +0 -24
- package/docs/release/0.104.2-recording-timestamps.md +0 -32
- package/docs/release/0.104.3-local-smtp-catch.md +0 -15
- package/docs/release/0.105.0-participant-backgrounds.md +0 -50
- package/docs/release/0.20.0-external-public-shared-world.md +0 -43
- package/docs/release/0.84.0-redacted-evidence.md +0 -42
- package/docs/release/0.84.1-portable-feedback.md +0 -20
- package/docs/release/0.85.0-observer-review.md +0 -56
- package/docs/release/0.85.1-observer-continuity.md +0 -20
- package/docs/release/0.86.0-participant-evidence.md +0 -50
- package/docs/release/0.86.1-task-preflight-saved-recordings.md +0 -40
- package/docs/release/0.87.0-participant-endings-and-phone-review.md +0 -64
- package/docs/release/0.88.0-study-diagnostics.md +0 -43
- package/docs/release/0.88.1-completion-evidence-and-local-app.md +0 -79
- package/docs/release/0.88.2-sequential-study-budgets.md +0 -57
- package/docs/release/0.89.0-study-findings.md +0 -79
- package/docs/release/0.89.1-analysis-finished-notice.md +0 -24
- package/docs/release/0.90.0-automatic-analysis.md +0 -21
- package/docs/release/0.91.0-analysis-quality-and-defaults.md +0 -33
- package/docs/release/0.91.1-study-review-polish.md +0 -28
- package/docs/release/0.92.0-grid-playback.md +0 -22
- package/docs/release/0.93.0-global-playback.md +0 -26
- package/docs/release/0.93.1-observer-review-controls.md +0 -24
- package/docs/release/0.94.0-reliability.md +0 -48
- package/docs/release/0.95.0-connections-setup.md +0 -38
- package/docs/release/0.96.0-real-email-receiving.md +0 -47
- package/docs/release/0.96.1-browser-navigation.md +0 -22
- package/docs/release/0.97.0-codex-account-analysis.md +0 -45
- package/docs/release/0.98.0-local-browser-studies.md +0 -31
- package/docs/release/0.99.0-local-browser-mac.md +0 -34
- package/docs/release/0.99.1-action-recovery.md +0 -19
- /package/dist/{agent-session.d.ts → actors/agent-session.d.ts} +0 -0
- /package/dist/{cua-executor-error.d.ts → actors/computer-use/executor-error.d.ts} +0 -0
- /package/dist/{cua-speech.d.ts → actors/computer-use/speech.d.ts} +0 -0
- /package/dist/{actor-goal-source.d.ts → actors/goal-source.d.ts} +0 -0
- /package/dist/{output-token-limit.d.ts → actors/output-token-limit.d.ts} +0 -0
- /package/dist/{reasoning-effort.d.ts → actors/reasoning-effort.d.ts} +0 -0
- /package/dist/{secret-prompt.d.ts → cli/secret-prompt.d.ts} +0 -0
- /package/dist/{telemetry.d.ts → cli/telemetry.d.ts} +0 -0
- /package/dist/{browser-evidence-hygiene.d.ts → evidence/browser-hygiene.d.ts} +0 -0
- /package/dist/{serve-http.d.ts → observer/http.d.ts} +0 -0
- /package/dist/{observer-library.d.ts → observer/library.d.ts} +0 -0
- /package/dist/{listen.d.ts → observer/listen.d.ts} +0 -0
- /package/dist/{observer-static.d.ts → observer/static.d.ts} +0 -0
- /package/dist/{serve-tunnel.d.ts → observer/tunnel.d.ts} +0 -0
- /package/dist/{terminal-encoding.d.ts → routes/terminal/encoding.d.ts} +0 -0
- /package/dist/{concurrency.d.ts → run/concurrency.d.ts} +0 -0
- /package/dist/{study-costs.d.ts → run/costs.d.ts} +0 -0
- /package/dist/{run-narration-secrets.d.ts → run/transient-comms-secrets.d.ts} +0 -0
- /package/dist/{tui-launch.d.ts → tui/launch.d.ts} +0 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { renderObserver, type ObserverResult } from "../observer/render.js";
|
|
2
|
+
import { type RunBundle } from "./bundle.js";
|
|
3
|
+
import type { ExecutionOutcome } from "./judge.js";
|
|
4
|
+
import { type PreparedRunArtifactPaths, type RunIdInUse } from "./paths.js";
|
|
5
|
+
import { type RunLabProvenance, type RunStatusHandle } from "./status.js";
|
|
6
|
+
interface StartRunOptions {
|
|
7
|
+
/** Project directory, in the form the route resolved it. */
|
|
8
|
+
cwd: string;
|
|
9
|
+
/** Caller-supplied id (`--run-id`, library `runId`); `mintRunId` runs when it is absent. */
|
|
10
|
+
runId?: string | undefined;
|
|
11
|
+
mintRunId: () => string;
|
|
12
|
+
mode: "dry-run" | "live";
|
|
13
|
+
lab?: RunLabProvenance | undefined;
|
|
14
|
+
/** review.md for the published bundle. */
|
|
15
|
+
renderReview: (bundle: RunBundle) => string;
|
|
16
|
+
/** Used by `FinishedRun.renderObserver`; `render` is the routes' `renderObserverFn` seam. */
|
|
17
|
+
observer?: {
|
|
18
|
+
open: boolean;
|
|
19
|
+
render?: typeof renderObserver | undefined;
|
|
20
|
+
};
|
|
21
|
+
/** Clock for `createdAt` and the latest pointer. */
|
|
22
|
+
now?: (() => number) | undefined;
|
|
23
|
+
}
|
|
24
|
+
interface Run {
|
|
25
|
+
readonly runId: string;
|
|
26
|
+
readonly createdAt: string;
|
|
27
|
+
readonly mode: "dry-run" | "live";
|
|
28
|
+
/** Routes write their evidence files through these and hand them to lanes. */
|
|
29
|
+
readonly paths: PreparedRunArtifactPaths;
|
|
30
|
+
/**
|
|
31
|
+
* Publish an in-progress bundle: run.json, review.json, review.md, events.ndjson and
|
|
32
|
+
* observer/observer-data.json, plus the latest pointer until one pointer write has succeeded,
|
|
33
|
+
* so a live run is `latest` from its first snapshot and a later flush never takes the pointer
|
|
34
|
+
* back from a newer run. status.json stays running. Writes are serialized with each other and
|
|
35
|
+
* with `finish`; a rejected write reaches only its caller. Rejects before writing once `finish`
|
|
36
|
+
* was called or the scope closed, or when the bundle names another run or mode, so a late flush
|
|
37
|
+
* can never overwrite the final bundle. Routes that throttle snapshots own their timers.
|
|
38
|
+
*/
|
|
39
|
+
writeSnapshot(bundle: RunBundle): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* The one final publication: run.json, then the status outcome, then review.json, review.md,
|
|
42
|
+
* events.ndjson, observer/observer-data.json, and last the latest pointer. The status goes
|
|
43
|
+
* after run.json so the index never gets ahead of the evidence, and the pointer goes last so
|
|
44
|
+
* `latest` never selects a run whose projections are incomplete. Rejects before writing on a
|
|
45
|
+
* second call, after the scope closed, or when the bundle names another run or mode. A
|
|
46
|
+
* rejection partway leaves the files written so far and issues no FinishedRun.
|
|
47
|
+
*/
|
|
48
|
+
finish(bundle: RunBundle): Promise<FinishedRun>;
|
|
49
|
+
}
|
|
50
|
+
export interface RunScope {
|
|
51
|
+
/**
|
|
52
|
+
* Create `.humanish/runs/<id>` exclusively, begin status.json and wait for its first write, so
|
|
53
|
+
* a run that got past this point has a status record before any sandbox exists. An id whose
|
|
54
|
+
* directory exists is refused before any write. A scope starts at most one run.
|
|
55
|
+
*/
|
|
56
|
+
startRun(options: StartRunOptions): Promise<{
|
|
57
|
+
ok: true;
|
|
58
|
+
run: Run;
|
|
59
|
+
} | RunIdInUse>;
|
|
60
|
+
}
|
|
61
|
+
interface ObserverTarget {
|
|
62
|
+
cwd: string;
|
|
63
|
+
open: boolean;
|
|
64
|
+
render: typeof renderObserver;
|
|
65
|
+
}
|
|
66
|
+
declare const issueKey: unique symbol;
|
|
67
|
+
/**
|
|
68
|
+
* Proof that one run published its final bundle, and the only input automatic analysis accepts.
|
|
69
|
+
* A private field makes the type nominal, so no object literal satisfies it, `isIssued` checks
|
|
70
|
+
* that field at runtime, and the constructor refuses callers without the module-private key. This
|
|
71
|
+
* guards against accidental misuse; code in the same process can still forge one.
|
|
72
|
+
*/
|
|
73
|
+
export declare class FinishedRun {
|
|
74
|
+
#private;
|
|
75
|
+
readonly runId: string;
|
|
76
|
+
/** The paths created by startRun and validated at the start of `finish`. */
|
|
77
|
+
readonly paths: PreparedRunArtifactPaths;
|
|
78
|
+
constructor(key: typeof issueKey, runId: string, paths: PreparedRunArtifactPaths, observer: ObserverTarget | undefined, status: RunStatusHandle);
|
|
79
|
+
static isIssued(value: unknown): value is FinishedRun;
|
|
80
|
+
/** Render the Observer for exactly these paths, never a directory re-resolved by name. */
|
|
81
|
+
renderObserver(): Promise<ObserverResult>;
|
|
82
|
+
/**
|
|
83
|
+
* Record the result's ok and execution outcome in status.json. A route calls it once, after the
|
|
84
|
+
* Observer render, with the values its result returns, so the two agree.
|
|
85
|
+
*/
|
|
86
|
+
recordOutcome(result: {
|
|
87
|
+
ok: boolean;
|
|
88
|
+
execution: ExecutionOutcome;
|
|
89
|
+
}): Promise<void>;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Run `fn` as the lifetime of at most one run. When `fn` settles the scope closes synchronously,
|
|
93
|
+
* so the scope and its run admit no further calls, even through references `fn` leaked into
|
|
94
|
+
* timers or callbacks. It then waits for the calls it admitted and, unless the run finished,
|
|
95
|
+
* finishes status.json with no outcome. The close cannot replace `fn`'s exception: admitted calls
|
|
96
|
+
* are awaited settled and the status finish swallows its own write errors. `finished` is set only
|
|
97
|
+
* when `Run.finish` resolved inside the scope, so a refusal cannot hand analysis another run.
|
|
98
|
+
*/
|
|
99
|
+
export declare function runScope<T>(fn: (scope: RunScope) => Promise<T>): Promise<{
|
|
100
|
+
result: T;
|
|
101
|
+
finished: FinishedRun | undefined;
|
|
102
|
+
}>;
|
|
103
|
+
export {};
|
package/dist/run/run.js
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
// One run's lifetime on disk: its directory, its status record, its final publication, and the
|
|
2
|
+
// token that lets the Observer and automatic analysis read it. Routes build bundles and write
|
|
3
|
+
// their own evidence files; this module owns when the run starts, how it is published, and how it
|
|
4
|
+
// is closed on every exit.
|
|
5
|
+
import { buildObserverData } from "../observer/data.js";
|
|
6
|
+
import { renderObserver } from "../observer/render.js";
|
|
7
|
+
import { RUN_BUNDLE_FILE, PUBLIC_TARGET_CWD } from "./bundle.js";
|
|
8
|
+
import {} from "./results.js";
|
|
9
|
+
import { createRunArtifactPaths, validatePreparedRunArtifactPaths, } from "./paths.js";
|
|
10
|
+
import { writeContainedOutputFile, writePreparedRunLatestPointer } from "./contained-output.js";
|
|
11
|
+
import { beginRunStatus, runStatusOutcome, } from "./status.js";
|
|
12
|
+
/** An entry point called in a state that does not admit it. */
|
|
13
|
+
class RunLifecycleError extends Error {
|
|
14
|
+
name = "RunLifecycleError";
|
|
15
|
+
}
|
|
16
|
+
const issueKey = Symbol("FinishedRun");
|
|
17
|
+
/**
|
|
18
|
+
* Proof that one run published its final bundle, and the only input automatic analysis accepts.
|
|
19
|
+
* A private field makes the type nominal, so no object literal satisfies it, `isIssued` checks
|
|
20
|
+
* that field at runtime, and the constructor refuses callers without the module-private key. This
|
|
21
|
+
* guards against accidental misuse; code in the same process can still forge one.
|
|
22
|
+
*/
|
|
23
|
+
export class FinishedRun {
|
|
24
|
+
#observer;
|
|
25
|
+
#status;
|
|
26
|
+
runId;
|
|
27
|
+
/** The paths created by startRun and validated at the start of `finish`. */
|
|
28
|
+
paths;
|
|
29
|
+
constructor(key, runId, paths, observer, status) {
|
|
30
|
+
if (key !== issueKey)
|
|
31
|
+
throw new Error("Only Run.finish issues a FinishedRun.");
|
|
32
|
+
this.runId = runId;
|
|
33
|
+
this.paths = paths;
|
|
34
|
+
this.#observer = observer;
|
|
35
|
+
this.#status = status;
|
|
36
|
+
}
|
|
37
|
+
static isIssued(value) {
|
|
38
|
+
return typeof value === "object" && value !== null && #observer in value;
|
|
39
|
+
}
|
|
40
|
+
/** Render the Observer for exactly these paths, never a directory re-resolved by name. */
|
|
41
|
+
renderObserver() {
|
|
42
|
+
const target = this.#observer;
|
|
43
|
+
if (target === undefined) {
|
|
44
|
+
return Promise.reject(new RunLifecycleError("This run was started without an Observer."));
|
|
45
|
+
}
|
|
46
|
+
return target.render(target.cwd, this.runId, { open: target.open, expectedRun: this.paths });
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Record the result's ok and execution outcome in status.json. A route calls it once, after the
|
|
50
|
+
* Observer render, with the values its result returns, so the two agree.
|
|
51
|
+
*/
|
|
52
|
+
recordOutcome(result) {
|
|
53
|
+
return this.#status.settle(result);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const json = (value) => `${JSON.stringify(value, null, 2)}\n`;
|
|
57
|
+
/**
|
|
58
|
+
* Run `fn` as the lifetime of at most one run. When `fn` settles the scope closes synchronously,
|
|
59
|
+
* so the scope and its run admit no further calls, even through references `fn` leaked into
|
|
60
|
+
* timers or callbacks. It then waits for the calls it admitted and, unless the run finished,
|
|
61
|
+
* finishes status.json with no outcome. The close cannot replace `fn`'s exception: admitted calls
|
|
62
|
+
* are awaited settled and the status finish swallows its own write errors. `finished` is set only
|
|
63
|
+
* when `Run.finish` resolved inside the scope, so a refusal cannot hand analysis another run.
|
|
64
|
+
*/
|
|
65
|
+
export async function runScope(fn) {
|
|
66
|
+
let closed = false;
|
|
67
|
+
let started = false;
|
|
68
|
+
let status;
|
|
69
|
+
let finished;
|
|
70
|
+
const admitted = new Set();
|
|
71
|
+
const admit = (operation) => {
|
|
72
|
+
admitted.add(operation);
|
|
73
|
+
const forget = () => admitted.delete(operation);
|
|
74
|
+
void operation.then(forget, forget);
|
|
75
|
+
return operation;
|
|
76
|
+
};
|
|
77
|
+
const refuse = (message) => Promise.reject(new RunLifecycleError(message));
|
|
78
|
+
const startRun = (options) => {
|
|
79
|
+
if (closed)
|
|
80
|
+
return refuse("The run scope has closed.");
|
|
81
|
+
if (started)
|
|
82
|
+
return refuse("A run scope starts one run.");
|
|
83
|
+
started = true;
|
|
84
|
+
return admit((async () => {
|
|
85
|
+
const runId = options.runId ?? options.mintRunId();
|
|
86
|
+
const created = await createRunArtifactPaths(options.cwd, runId);
|
|
87
|
+
if (!created.ok)
|
|
88
|
+
return created;
|
|
89
|
+
status = beginRunStatus(created.paths, {
|
|
90
|
+
runId,
|
|
91
|
+
mode: options.mode,
|
|
92
|
+
...(options.lab === undefined ? {} : { lab: options.lab }),
|
|
93
|
+
});
|
|
94
|
+
await status.started;
|
|
95
|
+
return { ok: true, run: openRun(options, runId, created.paths, status) };
|
|
96
|
+
})());
|
|
97
|
+
};
|
|
98
|
+
const openRun = (options, runId, paths, runStatus) => {
|
|
99
|
+
const now = options.now ?? Date.now;
|
|
100
|
+
const createdAt = new Date(now()).toISOString();
|
|
101
|
+
const observer = options.observer === undefined
|
|
102
|
+
? undefined
|
|
103
|
+
: {
|
|
104
|
+
cwd: options.cwd,
|
|
105
|
+
open: options.observer.open,
|
|
106
|
+
render: options.observer.render ?? renderObserver,
|
|
107
|
+
};
|
|
108
|
+
let finishCalled = false;
|
|
109
|
+
let pointerWritten = false;
|
|
110
|
+
// One chain serializes every write. A rejection reaches only the caller of that write; the
|
|
111
|
+
// chain itself continues, so a failed snapshot never blocks the final publication.
|
|
112
|
+
let tail = Promise.resolve();
|
|
113
|
+
const enqueue = (write) => {
|
|
114
|
+
const written = tail.then(write);
|
|
115
|
+
tail = written.then(() => undefined, () => undefined);
|
|
116
|
+
return written;
|
|
117
|
+
};
|
|
118
|
+
const checkIdentity = (bundle) => bundle.runId !== runId || bundle.mode !== options.mode
|
|
119
|
+
? "The bundle names another run or mode than this run."
|
|
120
|
+
: undefined;
|
|
121
|
+
const writePointer = async () => {
|
|
122
|
+
const pointer = {
|
|
123
|
+
schema: "humanish.latest-run.v1",
|
|
124
|
+
runId,
|
|
125
|
+
path: paths.relativeRunRoot,
|
|
126
|
+
updatedAt: new Date(now()).toISOString(),
|
|
127
|
+
};
|
|
128
|
+
await writePreparedRunLatestPointer(paths, json(pointer), "utf8");
|
|
129
|
+
pointerWritten = true;
|
|
130
|
+
};
|
|
131
|
+
/** run.json, then `afterBundle`, then the review and projections. */
|
|
132
|
+
const writeBundleFiles = async (bundle, afterBundle) => {
|
|
133
|
+
await validatePreparedRunArtifactPaths(paths);
|
|
134
|
+
const publicBundle = { ...bundle, cwd: PUBLIC_TARGET_CWD };
|
|
135
|
+
await writeContainedOutputFile(paths, RUN_BUNDLE_FILE, json(publicBundle), "utf8");
|
|
136
|
+
await afterBundle(publicBundle);
|
|
137
|
+
await writeContainedOutputFile(paths, "review.json", json(publicBundle.review), "utf8");
|
|
138
|
+
await writeContainedOutputFile(paths, "review.md", options.renderReview(publicBundle), "utf8");
|
|
139
|
+
const events = publicBundle.events.map((event) => JSON.stringify(event)).join("\n");
|
|
140
|
+
await writeContainedOutputFile(paths, "events.ndjson", `${events}\n`, "utf8");
|
|
141
|
+
await writeContainedOutputFile(paths, "observer/observer-data.json", json(buildObserverData(publicBundle)), "utf8");
|
|
142
|
+
};
|
|
143
|
+
const snapshot = async (bundle) => {
|
|
144
|
+
await writeBundleFiles(bundle, async () => { });
|
|
145
|
+
if (!pointerWritten)
|
|
146
|
+
await writePointer();
|
|
147
|
+
};
|
|
148
|
+
const publish = async (bundle) => {
|
|
149
|
+
await writeBundleFiles(bundle, (publicBundle) => runStatus.finish(runStatusOutcome(publicBundle)));
|
|
150
|
+
await writePointer();
|
|
151
|
+
return new FinishedRun(issueKey, runId, paths, observer, runStatus);
|
|
152
|
+
};
|
|
153
|
+
return {
|
|
154
|
+
runId,
|
|
155
|
+
createdAt,
|
|
156
|
+
mode: options.mode,
|
|
157
|
+
paths,
|
|
158
|
+
writeSnapshot(bundle) {
|
|
159
|
+
if (closed)
|
|
160
|
+
return refuse("The run scope has closed.");
|
|
161
|
+
if (finishCalled)
|
|
162
|
+
return refuse("Run.finish was called; no snapshot follows it.");
|
|
163
|
+
const mismatch = checkIdentity(bundle);
|
|
164
|
+
if (mismatch !== undefined)
|
|
165
|
+
return refuse(mismatch);
|
|
166
|
+
return admit(enqueue(() => snapshot(bundle)));
|
|
167
|
+
},
|
|
168
|
+
finish(bundle) {
|
|
169
|
+
if (closed)
|
|
170
|
+
return refuse("The run scope has closed.");
|
|
171
|
+
if (finishCalled)
|
|
172
|
+
return refuse("Run.finish admits one call.");
|
|
173
|
+
const mismatch = checkIdentity(bundle);
|
|
174
|
+
if (mismatch !== undefined)
|
|
175
|
+
return refuse(mismatch);
|
|
176
|
+
finishCalled = true;
|
|
177
|
+
return admit(enqueue(() => publish(bundle)).then((issued) => {
|
|
178
|
+
finished = issued;
|
|
179
|
+
return issued;
|
|
180
|
+
}));
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
let outcome;
|
|
185
|
+
try {
|
|
186
|
+
outcome = { result: await fn({ startRun }) };
|
|
187
|
+
}
|
|
188
|
+
finally {
|
|
189
|
+
closed = true;
|
|
190
|
+
try {
|
|
191
|
+
await Promise.allSettled(admitted);
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
if (finished === undefined)
|
|
195
|
+
await status?.finish();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return { result: outcome.result, finished };
|
|
199
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type PreparedOutputRoot } from "./contained-output.js";
|
|
2
|
+
export declare const SANDBOX_RECEIPTS_ARTIFACT = "sandbox-receipts.ndjson";
|
|
3
|
+
/** The providers humanish allocates sandboxes from. Reclaim dispatches on this id. */
|
|
4
|
+
export type SandboxProviderId = "e2b";
|
|
5
|
+
export interface SandboxReceipt {
|
|
6
|
+
at: string;
|
|
7
|
+
/** The lane/role/subject label the sandbox belongs to (public-safe token). */
|
|
8
|
+
laneId: string;
|
|
9
|
+
/** Who allocated the sandbox. Receipts written before this field existed have none. */
|
|
10
|
+
provider?: SandboxProviderId;
|
|
11
|
+
sandboxId: string;
|
|
12
|
+
/** The create-time sandbox TTL (ms), when known — how long the server-side backstop runs. */
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A receipt read back from disk. An absent provider reads as "e2b", the only provider before the
|
|
17
|
+
* field existed. A receipt written by a newer humanish may name a provider this version does not
|
|
18
|
+
* know, so the type keeps the raw string for reclaim to report.
|
|
19
|
+
*/
|
|
20
|
+
export interface ParsedSandboxReceipt extends Omit<SandboxReceipt, "provider"> {
|
|
21
|
+
provider: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Append one receipt. Best-effort BY DESIGN: the receipt exists to protect the run, so a failed
|
|
25
|
+
* receipt write must never fail the lane — the only cost of a miss is that `reclaim` cannot see
|
|
26
|
+
* this id and the TTL backstop covers it instead. Containment is the same prepare step every
|
|
27
|
+
* artifact write uses; append (not atomic-replace) keeps racing lanes' receipts intact.
|
|
28
|
+
*/
|
|
29
|
+
export declare function appendSandboxReceipt(root: PreparedOutputRoot, receipt: SandboxReceipt): Promise<void>;
|
|
30
|
+
/** Parse a receipts file leniently: a torn final line (crash mid-append) drops, valid lines keep. */
|
|
31
|
+
export declare function parseSandboxReceipts(text: string): ParsedSandboxReceipt[];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Every created sandbox id is journaled to the run dir the moment create returns, before any work
|
|
2
|
+
// happens in it. The lane loop lives in the caller's local process, so a sleeping laptop, crash or
|
|
3
|
+
// kill loses every in-memory id; this append-only file keeps them for `humanish reclaim`.
|
|
4
|
+
import { appendFile } from "node:fs/promises";
|
|
5
|
+
import { prepareContainedOutputFile } from "./contained-output.js";
|
|
6
|
+
export const SANDBOX_RECEIPTS_ARTIFACT = "sandbox-receipts.ndjson";
|
|
7
|
+
/**
|
|
8
|
+
* Append one receipt. Best-effort BY DESIGN: the receipt exists to protect the run, so a failed
|
|
9
|
+
* receipt write must never fail the lane — the only cost of a miss is that `reclaim` cannot see
|
|
10
|
+
* this id and the TTL backstop covers it instead. Containment is the same prepare step every
|
|
11
|
+
* artifact write uses; append (not atomic-replace) keeps racing lanes' receipts intact.
|
|
12
|
+
*/
|
|
13
|
+
export async function appendSandboxReceipt(root, receipt) {
|
|
14
|
+
try {
|
|
15
|
+
const filePath = await prepareContainedOutputFile(root, SANDBOX_RECEIPTS_ARTIFACT);
|
|
16
|
+
await appendFile(filePath, `${JSON.stringify(receipt)}\n`, "utf8");
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// Swallowed on purpose — see the contract above.
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/** Parse a receipts file leniently: a torn final line (crash mid-append) drops, valid lines keep. */
|
|
23
|
+
export function parseSandboxReceipts(text) {
|
|
24
|
+
const receipts = [];
|
|
25
|
+
for (const line of text.split("\n")) {
|
|
26
|
+
const trimmed = line.trim();
|
|
27
|
+
if (!trimmed)
|
|
28
|
+
continue;
|
|
29
|
+
try {
|
|
30
|
+
const parsed = JSON.parse(trimmed);
|
|
31
|
+
if (typeof parsed.sandboxId === "string" &&
|
|
32
|
+
parsed.sandboxId.length > 0 &&
|
|
33
|
+
typeof parsed.laneId === "string" &&
|
|
34
|
+
(parsed.provider === undefined || typeof parsed.provider === "string")) {
|
|
35
|
+
receipts.push({
|
|
36
|
+
at: typeof parsed.at === "string" ? parsed.at : "",
|
|
37
|
+
laneId: parsed.laneId,
|
|
38
|
+
provider: parsed.provider ?? "e2b",
|
|
39
|
+
sandboxId: parsed.sandboxId,
|
|
40
|
+
...(typeof parsed.timeoutMs === "number" ? { timeoutMs: parsed.timeoutMs } : {}),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// torn line — skip
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return receipts;
|
|
49
|
+
}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import type { ParticipantIds } from "./participant-records.js";
|
|
2
|
+
export declare const SHARED_WORLD_SCHEMA = "humanish.shared-world.v1";
|
|
3
|
+
/** The ONE shared service-plane provenance for a shared-world run (#164): single commit + a
|
|
4
|
+
* seed-recipe digest + the provisioned env NAMES (values never). */
|
|
5
|
+
export interface SharedWorldPlane {
|
|
6
|
+
/** The cloned commit SHA of the shared plane (when the clone resolved one). */
|
|
7
|
+
commit?: string;
|
|
8
|
+
/** sha256-16 over the ordered seed-step command digests — the seeded-state RECIPE identity
|
|
9
|
+
* (not the runtime state). Pins "same seed recipe" across bundles. */
|
|
10
|
+
seedDigest: string;
|
|
11
|
+
/** Declared env NAMES provisioned for the shared plane (values never surface). */
|
|
12
|
+
envNames: string[];
|
|
13
|
+
/**
|
|
14
|
+
* CONCURRENT route only (#164 phase 2): sha256-16 of the harness-minted `getHost` URL's ORIGIN
|
|
15
|
+
* (the first-class provisioned-subject target every actor drove — invariant 2). A DIGEST, not the
|
|
16
|
+
* raw URL: a getHost URL embeds the (live) sandbox id and matches the publish-safety e2b-URL
|
|
17
|
+
* redaction, so — like the stream URL and like sandbox ids — it never lands raw in a published
|
|
18
|
+
* bundle (the raw tokenless URL is surfaced only on the ephemeral lab result). The orchestrator
|
|
19
|
+
* confirms the URL is TOKENLESS (no authKey — invariant 1) before digesting. verify proves every
|
|
20
|
+
* actor drove this host by digest equality. Absent on the sequential route.
|
|
21
|
+
*/
|
|
22
|
+
hostDigest?: string;
|
|
23
|
+
/**
|
|
24
|
+
* CONCURRENT route only: the author's REQUIRED attestation that the subject behind the
|
|
25
|
+
* internet-reachable getHost URL is synthetic seeded data (FIX-3). This is author-trust + a
|
|
26
|
+
* provenance gate, NOT a no-real-data guarantee. Verify fails closed if absent on the concurrent route.
|
|
27
|
+
*
|
|
28
|
+
* FORBIDDEN on the external-public plane class: claiming synthetic on a real public site the
|
|
29
|
+
* harness neither provisioned nor exposed would be a lie (verify asserts it ABSENT there).
|
|
30
|
+
*/
|
|
31
|
+
exposure?: "synthetic";
|
|
32
|
+
/**
|
|
33
|
+
* EXTERNAL-PUBLIC plane class only (#164 phase 2): sha256-16 of the OBSERVED origin the seats
|
|
34
|
+
* CONVERGED on (the honest analog of hostDigest, but WEAKER and disclosed — the harness only
|
|
35
|
+
* OBSERVES that each seat reached this origin; it never MINTED it). It is derived from what the
|
|
36
|
+
* seats actually reached, NOT from the declared appUrl: verify proves every laneWindow.routeHostDigest
|
|
37
|
+
* (that seat's CDP-observed final URL origin) equals it — inter-seat convergence on ONE OBSERVED
|
|
38
|
+
* origin, not harness control of the plane. A digest, not the raw origin (kept consistent with
|
|
39
|
+
* hostDigest hygiene). Absent on getHost.
|
|
40
|
+
*/
|
|
41
|
+
publicOriginDigest?: string;
|
|
42
|
+
/**
|
|
43
|
+
* EXTERNAL-PUBLIC plane class only: sha256-16 of the operator-DECLARED origin (from subject.appUrl),
|
|
44
|
+
* recorded for reference/evidence ONLY. It is NEVER asserted equal to publicOriginDigest: a normal
|
|
45
|
+
* cross-origin redirect (apex->www, http->https) makes the OBSERVED origin differ from the declared
|
|
46
|
+
* one, which is expected. Operator OWNERSHIP rests on the subject.publicTarget.authorized attestation
|
|
47
|
+
* + the declared appUrl, NOT on digest equality. A digest, not the raw origin. Absent on getHost.
|
|
48
|
+
*/
|
|
49
|
+
declaredOriginDigest?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* CONCURRENT shape (#164 phase 2): one actor's harness-clocked activity window against the ONE
|
|
53
|
+
* shared plane. OVERLAPPING windows mechanically prove ≥2 personas were active simultaneously.
|
|
54
|
+
* `laneWindows` and `stateSeries` are INDEPENDENT series — there is deliberately NO per-delta→actor
|
|
55
|
+
* field (causation under concurrency is structurally inexpressible — FIX-7).
|
|
56
|
+
*/
|
|
57
|
+
export interface SharedWorldParticipantWindow {
|
|
58
|
+
roleId: string;
|
|
59
|
+
actorType?: string;
|
|
60
|
+
surface?: string;
|
|
61
|
+
caseGroup?: string;
|
|
62
|
+
/** Resolves to a real RunSimulation in this bundle. */
|
|
63
|
+
simId: string;
|
|
64
|
+
/** Resolves to a real RunStream (the actor's trace) in this bundle. */
|
|
65
|
+
streamId: string;
|
|
66
|
+
/** ms on the ONE harness clock — the wrapped [start,end] the orchestrator MEASURED (FIX-1). */
|
|
67
|
+
startedAt: number;
|
|
68
|
+
endedAt: number;
|
|
69
|
+
/** The actor's terminal session verdict (per-persona). */
|
|
70
|
+
verdict: string;
|
|
71
|
+
/** sha256-16 of the ORIGIN of the getHost seat URL this actor drove. verify confirms it equals
|
|
72
|
+
* plane.hostDigest — i.e. the actor drove EXACTLY the harness-minted host (invariant 2; FIX-2).
|
|
73
|
+
* A digest, not the raw URL (a getHost URL is not publish-safe — see SharedWorldPlane.hostDigest). */
|
|
74
|
+
routeHostDigest: string;
|
|
75
|
+
/** The shared plane's commit this actor observed (omitted when unresolved). */
|
|
76
|
+
commit?: string;
|
|
77
|
+
/** The shared plane's seed-recipe digest this actor observed. */
|
|
78
|
+
seedDigest: string;
|
|
79
|
+
}
|
|
80
|
+
/** CONCURRENT shape: one cadence checkpoint of the shared world under load. DIGEST-ONLY — the
|
|
81
|
+
* allowed-keys tripwire (SHARED_WORLD_STATESERIES_KEYS) permits ONLY {timestamp, digest}. */
|
|
82
|
+
export interface SharedWorldStateSnapshot {
|
|
83
|
+
/** ms on the ONE harness clock. */
|
|
84
|
+
timestamp: number;
|
|
85
|
+
/** sha256-16 of the (scrubbed, redacted) combined probe output at this snapshot. */
|
|
86
|
+
digest: string;
|
|
87
|
+
}
|
|
88
|
+
/** CONCURRENT shape: one persona's OUTCOME against the contended world (the "M of N" headline). */
|
|
89
|
+
export interface SharedWorldOutcome {
|
|
90
|
+
roleId: string;
|
|
91
|
+
actorType?: string;
|
|
92
|
+
surface?: string;
|
|
93
|
+
caseGroup?: string;
|
|
94
|
+
simId: string;
|
|
95
|
+
streamId: string;
|
|
96
|
+
/** Terminal session status. */
|
|
97
|
+
status: string;
|
|
98
|
+
completionReason?: string;
|
|
99
|
+
/** Reached its goal (terminal, engaged, no harness error). */
|
|
100
|
+
ok: boolean;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The fields a window and an outcome start with, in the saved order: the participant id saved as
|
|
104
|
+
* `roleId`, its taxonomy labels when declared, then its record and stream ids.
|
|
105
|
+
*/
|
|
106
|
+
export declare function sharedWorldParticipantKeys(ids: ParticipantIds, participantId: string, labels: {
|
|
107
|
+
readonly actorType?: string;
|
|
108
|
+
readonly surface?: string;
|
|
109
|
+
readonly caseGroup?: string;
|
|
110
|
+
}): Pick<SharedWorldOutcome, "roleId" | "actorType" | "surface" | "caseGroup" | "simId" | "streamId">;
|
|
111
|
+
/** A timeline checkpoint: a read-only digest probe of the shared plane at one moment. Persisted
|
|
112
|
+
* DIGEST-ONLY — `digest` is sha256-16(scrub+redact(stdout)); no raw value ever lands. */
|
|
113
|
+
export interface SharedWorldCheckpoint {
|
|
114
|
+
kind: "checkpoint";
|
|
115
|
+
/** "cp-baseline" for the baseline snapshot; "cp-after-<roleId>" after each role's turn. */
|
|
116
|
+
name: string;
|
|
117
|
+
/** sha256-16 of the (scrubbed, redacted) combined probe output at this snapshot. */
|
|
118
|
+
digest: string;
|
|
119
|
+
/** True when this snapshot's digest differs from the previous checkpoint's — the observed
|
|
120
|
+
* state changed across the intervening turn (delta attributed to the TURN, not an action). */
|
|
121
|
+
deltaFromPrev: boolean;
|
|
122
|
+
}
|
|
123
|
+
/** A timeline turn: one role's seat session against the shared plane. Carries the plane
|
|
124
|
+
* provenance it observed (identical across turns by construction — the single-plane proof). */
|
|
125
|
+
interface SharedWorldTurn {
|
|
126
|
+
kind: "turn";
|
|
127
|
+
roleId: string;
|
|
128
|
+
/** Resolves to a real RunSimulation in this bundle. */
|
|
129
|
+
simId: string;
|
|
130
|
+
/** Resolves to a real RunStream (the role's actor trace) in this bundle. */
|
|
131
|
+
streamId: string;
|
|
132
|
+
/** The shared plane's commit the role observed (omitted when unresolved). */
|
|
133
|
+
commit?: string;
|
|
134
|
+
/** The shared plane's seed-recipe digest the role observed. */
|
|
135
|
+
seedDigest: string;
|
|
136
|
+
}
|
|
137
|
+
type SharedWorldTimelineEntry = SharedWorldCheckpoint | SharedWorldTurn;
|
|
138
|
+
/** Declared seats that were never started after one executed sequential role stopped the run.
|
|
139
|
+
* The executed timeline plus this ordered tail must account for every declared sim/stream. */
|
|
140
|
+
interface SharedWorldSkippedTail {
|
|
141
|
+
afterRoleId: string;
|
|
142
|
+
roles: Array<{
|
|
143
|
+
roleId: string;
|
|
144
|
+
simId: string;
|
|
145
|
+
streamId: string;
|
|
146
|
+
}>;
|
|
147
|
+
cause: "harness_error" | "session_error" | "usage_unreported" | "study_spend_limit";
|
|
148
|
+
/** Present only for a measured aggregate threshold; estimates, not provider billing. */
|
|
149
|
+
maxTotalUsd?: number;
|
|
150
|
+
estimatedTotalUsd?: number;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* The shared-world evidence block (`humanish.shared-world.v1`). TWO variants discriminated by
|
|
154
|
+
* `topologyMode` (FIX-8 — renamed off `RunBundle.mode` to avoid the dry-run|live collision):
|
|
155
|
+
*
|
|
156
|
+
* - SEQUENTIAL (`topologyMode: "sequential"`): `sequence` + an alternating `timeline`
|
|
157
|
+
* (cp-baseline → turn → cp → … → cp); limits `sequential-only` etc. No route writes it since
|
|
158
|
+
* 0.106.0; verify still reads it so older bundles keep verifying.
|
|
159
|
+
* - CONCURRENT (`topologyMode: "concurrent"`, #164 phase 2): `laneWindows` + `stateSeries` +
|
|
160
|
+
* `outcomes`; limits `concurrent` etc. NO `timeline`.
|
|
161
|
+
*
|
|
162
|
+
* Additive + optional on `humanish.run-bundle.v1` — absent on every non-shared-world bundle.
|
|
163
|
+
* The mandatory `attributionLimits` are verify-enforced (FAIL CLOSED on a missing required or a
|
|
164
|
+
* present forbidden limit).
|
|
165
|
+
*/
|
|
166
|
+
export interface SharedWorldEvidence {
|
|
167
|
+
schema: typeof SHARED_WORLD_SCHEMA;
|
|
168
|
+
topology: "shared-world";
|
|
169
|
+
/** The substrate discriminator (FIX-8). Branched on first by sharedWorldEvidenceFindings. */
|
|
170
|
+
topologyMode: "sequential" | "concurrent";
|
|
171
|
+
/**
|
|
172
|
+
* CONCURRENT route only (#164 phase 2): the PLANE-class discriminator. Absent == the historical
|
|
173
|
+
* "provisioned-getHost" plane (a clone/local-tree subject served + getHost-exposed in-sandbox — the
|
|
174
|
+
* harness MINTED the host; synthetic-seeded attestation + authoritative in-sandbox checkpoint
|
|
175
|
+
* stateSeries). "external-public" == a real operator-owned public deployment used directly as the
|
|
176
|
+
* plane (NO getHost/clone/seed; operator-attested, not harness-controlled; NO authoritative
|
|
177
|
+
* shared-state proof — concurrency evidenced by temporal co-occupancy + observed lobby convergence).
|
|
178
|
+
* verify gates EVERY getHost-specific assertion on this discriminator; existing bundles omit it and
|
|
179
|
+
* default to provisioned-getHost, byte-stable.
|
|
180
|
+
*/
|
|
181
|
+
planeClass?: "provisioned-getHost" | "external-public";
|
|
182
|
+
/** The DECLARED number of role seats. */
|
|
183
|
+
roleCount: number;
|
|
184
|
+
plane: SharedWorldPlane;
|
|
185
|
+
/** The pinned, verify-enforced attribution ceiling (the set differs per topologyMode/planeClass). */
|
|
186
|
+
attributionLimits: string[];
|
|
187
|
+
/**
|
|
188
|
+
* EXTERNAL-PUBLIC plane class only (#164 phase 2, optional-but-strong): sha256-16 of the shared
|
|
189
|
+
* `/lobby/CODE` PATH every seat's CDP-observed URL converged on — the concrete "they were in ONE
|
|
190
|
+
* shared world" proof, observation-derived and needing no subject change. Digest-only (the raw
|
|
191
|
+
* 6-char CODE and full URLs are runtime-only and never land). Absent when seats did not converge.
|
|
192
|
+
*/
|
|
193
|
+
lobbyConvergenceDigest?: string;
|
|
194
|
+
/** The role ids that actually took a turn, in declared order. */
|
|
195
|
+
sequence?: string[];
|
|
196
|
+
timeline?: SharedWorldTimelineEntry[];
|
|
197
|
+
/** Explicit unstarted suffix; absent on historical/full-execution bundles. */
|
|
198
|
+
skippedTail?: SharedWorldSkippedTail;
|
|
199
|
+
/** Per-actor harness-clocked windows (overlap proves simultaneity). */
|
|
200
|
+
laneWindows?: SharedWorldParticipantWindow[];
|
|
201
|
+
/** Cadence digests of the shared world under load (baseline + periodic + final). */
|
|
202
|
+
stateSeries?: SharedWorldStateSnapshot[];
|
|
203
|
+
/** Per-persona outcomes (the "M of N succeeded" headline). */
|
|
204
|
+
outcomes?: SharedWorldOutcome[];
|
|
205
|
+
}
|
|
206
|
+
/** A participant's time on the plane, in ms on the harness clock, as laneWindows record it. */
|
|
207
|
+
interface ParticipantWindow {
|
|
208
|
+
startedAt: number;
|
|
209
|
+
endedAt: number;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* What a shared-world run shows about concurrency, as verify's pass gate and the judge both read
|
|
213
|
+
* it: whether two or more seats were live at once, and, when the plane keeps a state series (the
|
|
214
|
+
* provisioned plane), whether the state changed at or after the first overlap started.
|
|
215
|
+
*/
|
|
216
|
+
export declare function concurrencyFacts(windows: readonly ParticipantWindow[], stateSeries: readonly SharedWorldStateSnapshot[] | undefined): {
|
|
217
|
+
overlap: boolean;
|
|
218
|
+
stateChangedUnderOverlap?: boolean;
|
|
219
|
+
};
|
|
220
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// The sharedWorld block of run.json (humanish.shared-world.v1): the one shared plane, each seat's
|
|
2
|
+
// window, state snapshots and the interleaved timeline of checkpoints and turns.
|
|
3
|
+
export const SHARED_WORLD_SCHEMA = "humanish.shared-world.v1";
|
|
4
|
+
/**
|
|
5
|
+
* The fields a window and an outcome start with, in the saved order: the participant id saved as
|
|
6
|
+
* `roleId`, its taxonomy labels when declared, then its record and stream ids.
|
|
7
|
+
*/
|
|
8
|
+
export function sharedWorldParticipantKeys(ids, participantId, labels) {
|
|
9
|
+
return {
|
|
10
|
+
roleId: participantId,
|
|
11
|
+
...(labels.actorType === undefined ? {} : { actorType: labels.actorType }),
|
|
12
|
+
...(labels.surface === undefined ? {} : { surface: labels.surface }),
|
|
13
|
+
...(labels.caseGroup === undefined ? {} : { caseGroup: labels.caseGroup }),
|
|
14
|
+
simId: ids.recordId,
|
|
15
|
+
streamId: ids.streamId,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** Where two participant windows overlap in time, the start of each overlap (the later of the two starts). */
|
|
19
|
+
function overlapStarts(windows) {
|
|
20
|
+
const starts = [];
|
|
21
|
+
for (let i = 0; i < windows.length; i += 1) {
|
|
22
|
+
for (let j = i + 1; j < windows.length; j += 1) {
|
|
23
|
+
const a = windows[i];
|
|
24
|
+
const b = windows[j];
|
|
25
|
+
if (a.startedAt < b.endedAt && b.startedAt < a.endedAt)
|
|
26
|
+
starts.push(Math.max(a.startedAt, b.startedAt));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return starts;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* What a shared-world run shows about concurrency, as verify's pass gate and the judge both read
|
|
33
|
+
* it: whether two or more seats were live at once, and, when the plane keeps a state series (the
|
|
34
|
+
* provisioned plane), whether the state changed at or after the first overlap started.
|
|
35
|
+
*/
|
|
36
|
+
export function concurrencyFacts(windows, stateSeries) {
|
|
37
|
+
const starts = overlapStarts(windows);
|
|
38
|
+
const overlap = starts.length > 0;
|
|
39
|
+
if (stateSeries === undefined)
|
|
40
|
+
return { overlap };
|
|
41
|
+
if (!overlap)
|
|
42
|
+
return { overlap, stateChangedUnderOverlap: false };
|
|
43
|
+
const earliestOverlapStart = Math.min(...starts);
|
|
44
|
+
const sorted = [...stateSeries].sort((x, y) => x.timestamp - y.timestamp);
|
|
45
|
+
const stateChangedUnderOverlap = sorted.some((snapshot, i) => i > 0 &&
|
|
46
|
+
snapshot.digest !== sorted[i - 1].digest &&
|
|
47
|
+
snapshot.timestamp >= earliestOverlapStart);
|
|
48
|
+
return { overlap, stateChangedUnderOverlap };
|
|
49
|
+
}
|