humanish 0.104.3 → 0.106.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +89 -94
- package/ARCHITECTURE.md +146 -0
- package/CHANGELOG.md +502 -0
- package/CONTEXT.md +51 -0
- package/CONTRIBUTING.md +111 -9
- package/README.md +213 -124
- package/SECURITY.md +1 -1
- package/TELEMETRY.md +112 -0
- package/dist/actors/affordance.d.ts +56 -0
- package/dist/actors/affordance.js +155 -0
- package/dist/actors/agent-session.js +42 -0
- package/dist/actors/codex/app-server-actor-trace.d.ts +11 -0
- package/dist/actors/codex/app-server-actor-trace.js +211 -0
- package/dist/actors/codex/app-server-client.d.ts +39 -0
- package/dist/actors/codex/app-server-client.js +116 -0
- package/dist/actors/codex/app-server-trace.d.ts +154 -0
- package/dist/actors/codex/app-server-trace.js +424 -0
- package/dist/actors/codex/app-server-ui.d.ts +40 -0
- package/dist/actors/codex/app-server-ui.js +328 -0
- package/dist/actors/codex/app-server.d.ts +44 -0
- package/dist/actors/codex/app-server.js +268 -0
- package/dist/actors/codex/qualified-versions.d.ts +45 -0
- package/dist/actors/codex/qualified-versions.js +87 -0
- package/dist/actors/codex/restricted-executable.d.ts +17 -0
- package/dist/actors/codex/restricted-executable.js +147 -0
- package/dist/actors/codex/restricted-launch.d.ts +116 -0
- package/dist/actors/codex/restricted-launch.js +222 -0
- package/dist/actors/codex/restricted-participant-policy.d.ts +46 -0
- package/dist/actors/codex/restricted-participant-policy.js +82 -0
- package/dist/actors/codex/restricted-participant.d.ts +20 -0
- package/dist/actors/codex/restricted-participant.js +432 -0
- package/dist/actors/codex/restricted-policy.d.ts +70 -0
- package/dist/actors/codex/restricted-policy.js +326 -0
- package/dist/actors/codex/restricted-session.d.ts +65 -0
- package/dist/actors/codex/restricted-session.js +432 -0
- package/dist/actors/codex/restricted-transport.d.ts +73 -0
- package/dist/actors/codex/restricted-transport.js +335 -0
- package/dist/actors/codex/restricted-turn.d.ts +62 -0
- package/dist/actors/codex/restricted-turn.js +284 -0
- package/dist/actors/computer-use/actor.d.ts +77 -0
- package/dist/actors/computer-use/actor.js +78 -0
- package/dist/actors/computer-use/admission-limit.d.ts +12 -0
- package/dist/actors/computer-use/admission-limit.js +19 -0
- package/dist/actors/computer-use/executor-error.js +48 -0
- package/dist/actors/computer-use/loop/actions.d.ts +26 -0
- package/dist/actors/computer-use/loop/actions.js +245 -0
- package/dist/actors/computer-use/loop/backstop.d.ts +42 -0
- package/dist/actors/computer-use/loop/backstop.js +202 -0
- package/dist/actors/computer-use/loop/debrief.d.ts +19 -0
- package/dist/actors/computer-use/loop/debrief.js +164 -0
- package/dist/actors/computer-use/loop/ending.d.ts +86 -0
- package/dist/actors/computer-use/loop/ending.js +316 -0
- package/dist/actors/computer-use/loop/observation.d.ts +55 -0
- package/dist/actors/computer-use/loop/observation.js +246 -0
- package/dist/actors/computer-use/loop/output-limit.d.ts +11 -0
- package/dist/actors/computer-use/loop/output-limit.js +21 -0
- package/dist/actors/computer-use/loop/provider-call.d.ts +19 -0
- package/dist/actors/computer-use/loop/provider-call.js +208 -0
- package/dist/actors/computer-use/loop/race.d.ts +34 -0
- package/dist/actors/computer-use/loop/race.js +79 -0
- package/dist/actors/computer-use/loop/session.d.ts +77 -0
- package/dist/actors/computer-use/loop/session.js +135 -0
- package/dist/actors/computer-use/loop/spend.d.ts +30 -0
- package/dist/actors/computer-use/loop/spend.js +85 -0
- package/dist/actors/computer-use/loop/trace.d.ts +35 -0
- package/dist/actors/computer-use/loop/trace.js +140 -0
- package/dist/actors/computer-use/loop/types.d.ts +404 -0
- package/dist/actors/computer-use/loop/types.js +1 -0
- package/dist/actors/computer-use/loop/usage.d.ts +102 -0
- package/dist/actors/computer-use/loop/usage.js +355 -0
- package/dist/actors/computer-use/loop.d.ts +11 -0
- package/dist/actors/computer-use/loop.js +248 -0
- package/dist/actors/computer-use/openai-provider.d.ts +107 -0
- package/dist/actors/computer-use/openai-provider.js +472 -0
- package/dist/actors/computer-use/openai-requests.d.ts +35 -0
- package/dist/actors/computer-use/openai-requests.js +74 -0
- package/dist/actors/computer-use/openai-wire.d.ts +67 -0
- package/dist/actors/computer-use/openai-wire.js +365 -0
- package/dist/actors/computer-use/provider-error.d.ts +27 -0
- package/dist/actors/computer-use/provider-error.js +86 -0
- package/dist/actors/computer-use/speech.js +6 -0
- package/dist/actors/contract.d.ts +315 -0
- package/dist/actors/contract.js +201 -0
- package/dist/actors/goal-source.js +38 -0
- package/dist/actors/local-agent/claude-session.d.ts +43 -0
- package/dist/actors/local-agent/claude-session.js +370 -0
- package/dist/actors/local-agent/cli.d.ts +115 -0
- package/dist/actors/local-agent/cli.js +413 -0
- package/dist/actors/local-agent/readiness.d.ts +31 -0
- package/dist/actors/local-agent/readiness.js +45 -0
- package/dist/actors/openai-endpoint.d.ts +2 -0
- package/dist/actors/openai-endpoint.js +2 -0
- package/dist/actors/output-token-limit.js +4 -0
- package/dist/actors/reasoning-effort.js +33 -0
- package/dist/actors/registry.d.ts +59 -0
- package/dist/actors/registry.js +89 -0
- package/dist/actors/scripted-browser/actor.d.ts +49 -0
- package/dist/actors/scripted-browser/actor.js +428 -0
- package/dist/actors/scripted-browser/browser-command.d.ts +1 -0
- package/dist/actors/scripted-browser/browser-command.js +48 -0
- package/dist/actors/scripted-browser/journey.d.ts +9 -0
- package/dist/actors/scripted-browser/journey.js +171 -0
- package/dist/actors/scripted-browser/steps.d.ts +60 -0
- package/dist/actors/scripted-browser/steps.js +384 -0
- package/dist/actors/scripted-browser/types.d.ts +135 -0
- package/dist/actors/scripted-browser/types.js +26 -0
- package/dist/actors/stop-cause.d.ts +9 -0
- package/dist/actors/stop-cause.js +42 -0
- package/dist/actors/stop-conditions.d.ts +40 -0
- package/dist/actors/stop-conditions.js +65 -0
- package/dist/analysis/automatic-completion.d.ts +38 -0
- package/dist/analysis/automatic-completion.js +90 -0
- package/dist/analysis/automatic-config.d.ts +41 -0
- package/dist/analysis/automatic-config.js +135 -0
- package/dist/analysis/automatic.d.ts +17 -0
- package/dist/analysis/automatic.js +279 -0
- package/dist/analysis/codex-config.d.ts +8 -0
- package/dist/analysis/codex-config.js +69 -0
- package/dist/analysis/evidence-sources.d.ts +23 -0
- package/dist/analysis/evidence-sources.js +251 -0
- package/dist/analysis/evidence.d.ts +18 -0
- package/dist/analysis/evidence.js +482 -0
- package/dist/analysis/execute.d.ts +52 -0
- package/dist/analysis/execute.js +504 -0
- package/dist/analysis/image-tokens.d.ts +1 -0
- package/dist/analysis/image-tokens.js +41 -0
- package/dist/analysis/job.d.ts +97 -0
- package/dist/analysis/job.js +311 -0
- package/dist/analysis/load.d.ts +3 -0
- package/dist/analysis/load.js +11 -0
- package/dist/analysis/provider.d.ts +57 -0
- package/dist/analysis/provider.js +227 -0
- package/dist/analysis/restricted-codex.d.ts +19 -0
- package/dist/analysis/restricted-codex.js +23 -0
- package/dist/analysis/service.d.ts +72 -0
- package/dist/analysis/service.js +399 -0
- package/dist/analysis/sharing.d.ts +11 -0
- package/dist/analysis/sharing.js +44 -0
- package/dist/analysis/store-executions.d.ts +27 -0
- package/dist/analysis/store-executions.js +224 -0
- package/dist/analysis/store.d.ts +31 -0
- package/dist/analysis/store.js +315 -0
- package/dist/analysis/types.d.ts +217 -0
- package/dist/analysis/types.js +12 -0
- package/dist/analysis/validation.d.ts +225 -0
- package/dist/analysis/validation.js +562 -0
- package/dist/browser-control/client.d.ts +18 -0
- package/dist/browser-control/client.js +239 -0
- package/dist/browser-control/dispatcher.d.ts +19 -0
- package/dist/browser-control/dispatcher.js +221 -0
- package/dist/browser-control/protocol.d.ts +492 -0
- package/dist/browser-control/protocol.js +360 -0
- package/dist/browser-control/recording-transfer.d.ts +3 -0
- package/dist/browser-control/recording-transfer.js +48 -0
- package/dist/browser-control/transport.d.ts +27 -0
- package/dist/browser-control/transport.js +189 -0
- package/dist/cli/commands/analysis-signals.d.ts +7 -0
- package/dist/cli/commands/analysis-signals.js +25 -0
- package/dist/cli/commands/analyze.d.ts +3 -0
- package/dist/cli/commands/analyze.js +212 -0
- package/dist/cli/commands/codex.d.ts +3 -0
- package/dist/cli/commands/codex.js +145 -0
- package/dist/cli/commands/comms.d.ts +3 -0
- package/dist/cli/commands/comms.js +225 -0
- package/dist/cli/commands/feedback.d.ts +3 -0
- package/dist/cli/commands/feedback.js +138 -0
- package/dist/cli/commands/lab-format.d.ts +8 -0
- package/dist/cli/commands/lab-format.js +105 -0
- package/dist/cli/commands/lab-route-computer-use.d.ts +20 -0
- package/dist/cli/commands/lab-route-computer-use.js +251 -0
- package/dist/cli/commands/lab-route-open.d.ts +27 -0
- package/dist/cli/commands/lab-route-open.js +37 -0
- package/dist/cli/commands/lab-route-preview.d.ts +20 -0
- package/dist/cli/commands/lab-route-preview.js +74 -0
- package/dist/cli/commands/lab-route-run.d.ts +17 -0
- package/dist/cli/commands/lab-route-run.js +31 -0
- package/dist/cli/commands/lab-route-scripted.d.ts +19 -0
- package/dist/cli/commands/lab-route-scripted.js +50 -0
- package/dist/cli/commands/lab-route-shared-world.d.ts +20 -0
- package/dist/cli/commands/lab-route-shared-world.js +135 -0
- package/dist/cli/commands/lab-route-terminal.d.ts +19 -0
- package/dist/cli/commands/lab-route-terminal.js +49 -0
- package/dist/cli/commands/lab-run.d.ts +9 -0
- package/dist/cli/commands/lab-run.js +166 -0
- package/dist/cli/commands/lab-scorer.d.ts +30 -0
- package/dist/cli/commands/lab-scorer.js +17 -0
- package/dist/cli/commands/lab.d.ts +3 -0
- package/dist/cli/commands/lab.js +193 -0
- package/dist/cli/commands/observe.d.ts +4 -0
- package/dist/cli/commands/observe.js +345 -0
- package/dist/cli/commands/runs.d.ts +11 -0
- package/dist/cli/commands/runs.js +314 -0
- package/dist/cli/commands/setup.d.ts +11 -0
- package/dist/cli/commands/setup.js +325 -0
- package/dist/cli/commands/tui.d.ts +32 -0
- package/dist/cli/commands/tui.js +305 -0
- package/dist/cli/commands/watch.d.ts +3 -0
- package/dist/cli/commands/watch.js +245 -0
- package/dist/cli/doctor.d.ts +39 -0
- package/dist/cli/doctor.js +263 -0
- package/dist/cli/first-run-path.d.ts +67 -0
- package/dist/cli/first-run-path.js +150 -0
- package/dist/cli/io.d.ts +85 -0
- package/dist/cli/io.js +232 -0
- package/dist/cli/observer-follow.d.ts +56 -0
- package/dist/cli/observer-follow.js +160 -0
- package/dist/cli/orientation.d.ts +30 -0
- package/dist/cli/orientation.js +114 -0
- package/dist/cli/program.d.ts +15 -0
- package/dist/cli/program.js +338 -0
- package/dist/cli/secret-prompt.js +39 -0
- package/dist/cli/telemetry.js +351 -0
- package/dist/cli.js +2 -4
- package/dist/comms/agentmail.d.ts +29 -0
- package/dist/comms/agentmail.js +568 -0
- package/dist/comms/capture-surface.d.ts +54 -0
- package/dist/comms/capture-surface.js +468 -0
- package/dist/comms/catch-host.d.ts +52 -0
- package/dist/comms/catch-host.js +192 -0
- package/dist/comms/connections.d.ts +20 -0
- package/dist/comms/connections.js +116 -0
- package/dist/comms/email-catch.d.ts +49 -0
- package/dist/comms/email-catch.js +236 -0
- package/dist/comms/extract.d.ts +7 -0
- package/dist/comms/extract.js +65 -0
- package/dist/comms/fake-inbox.d.ts +39 -0
- package/dist/comms/fake-inbox.js +136 -0
- package/dist/comms/images.d.ts +7 -0
- package/dist/comms/images.js +53 -0
- package/dist/comms/lease-store.d.ts +91 -0
- package/dist/comms/lease-store.js +600 -0
- package/dist/comms/providers.d.ts +30 -0
- package/dist/comms/providers.js +24 -0
- package/dist/comms/receiving-common.d.ts +17 -0
- package/dist/comms/receiving-common.js +82 -0
- package/dist/comms/receiving-evidence.d.ts +4 -0
- package/dist/comms/receiving-evidence.js +59 -0
- package/dist/comms/receiving-recovery.d.ts +22 -0
- package/dist/comms/receiving-recovery.js +100 -0
- package/dist/comms/receiving-render.d.ts +16 -0
- package/dist/comms/receiving-render.js +409 -0
- package/dist/comms/receiving-runtime.d.ts +41 -0
- package/dist/comms/receiving-runtime.js +66 -0
- package/dist/comms/receiving-surface.d.ts +8 -0
- package/dist/comms/receiving-surface.js +156 -0
- package/dist/comms/receiving-types.d.ts +122 -0
- package/dist/comms/receiving-types.js +3 -0
- package/dist/comms/receiving.d.ts +33 -0
- package/dist/comms/receiving.js +508 -0
- package/dist/comms/sandbox-catch-script.d.ts +16 -0
- package/dist/comms/sandbox-catch-script.js +331 -0
- package/dist/comms/sandbox-catch.d.ts +214 -0
- package/dist/comms/sandbox-catch.js +451 -0
- package/dist/comms/setup.d.ts +65 -0
- package/dist/comms/setup.js +259 -0
- package/dist/comms/thread-evidence.d.ts +28 -0
- package/dist/comms/thread-evidence.js +30 -0
- package/dist/comms/types.d.ts +76 -0
- package/dist/comms/types.js +8 -0
- package/dist/deprecated.d.ts +90 -0
- package/dist/deprecated.js +106 -0
- package/dist/evidence/browser-hygiene.js +42 -0
- package/dist/evidence/desktop-recorder.d.ts +39 -0
- package/dist/evidence/desktop-recorder.js +340 -0
- package/dist/evidence/desktop-recording-artifact.d.ts +5 -0
- package/dist/evidence/desktop-recording-artifact.js +53 -0
- package/dist/evidence/desktop-recording-types.d.ts +27 -0
- package/dist/evidence/desktop-recording-types.js +16 -0
- package/dist/evidence/encoded-text.d.ts +27 -0
- package/dist/evidence/encoded-text.js +243 -0
- package/dist/evidence/frame-signature.d.ts +17 -0
- package/dist/evidence/frame-signature.js +111 -0
- package/dist/evidence/image.d.ts +24 -0
- package/dist/evidence/image.js +170 -0
- package/dist/evidence/plain-text.d.ts +8 -0
- package/dist/evidence/plain-text.js +16 -0
- package/dist/evidence/redaction.d.ts +110 -0
- package/dist/evidence/redaction.js +329 -0
- package/dist/feedback/draft.d.ts +58 -0
- package/dist/feedback/draft.js +309 -0
- package/dist/feedback/export-bundle.d.ts +6 -0
- package/dist/feedback/export-bundle.js +585 -0
- package/dist/feedback/export.d.ts +50 -0
- package/dist/feedback/export.js +392 -0
- package/dist/feedback/feedback.d.ts +37 -0
- package/dist/feedback/feedback.js +282 -0
- package/dist/feedback/proof.d.ts +8 -0
- package/dist/feedback/proof.js +56 -0
- package/dist/guest/bootstrap.d.ts +55 -0
- package/dist/guest/bootstrap.js +348 -0
- package/dist/guest/browser-tools.d.ts +8 -0
- package/dist/guest/browser-tools.js +72 -0
- package/dist/guest/chromium-text.d.ts +62 -0
- package/dist/guest/chromium-text.js +386 -0
- package/dist/guest/desktop-executor.d.ts +57 -0
- package/dist/guest/desktop-executor.js +256 -0
- package/dist/guest/desktop-keys.d.ts +8 -0
- package/dist/guest/desktop-keys.js +89 -0
- package/dist/guest/desktop-media.d.ts +70 -0
- package/dist/guest/desktop-media.js +385 -0
- package/dist/guest/desktop-native.d.ts +14 -0
- package/dist/guest/desktop-native.js +156 -0
- package/dist/guest/media-config.d.ts +15 -0
- package/dist/guest/media-config.js +16 -0
- package/dist/guest/runtime-desktop.d.ts +45 -0
- package/dist/guest/runtime-desktop.js +420 -0
- package/dist/guest/runtime-processes.d.ts +28 -0
- package/dist/guest/runtime-processes.js +94 -0
- package/dist/guest/runtime.d.ts +31 -0
- package/dist/guest/runtime.js +124 -0
- package/dist/guest-media-worker.js +184 -48
- package/dist/guest-runtime-main.js +23 -10
- package/dist/guest-runtime-revision.js +1 -1
- package/dist/index.d.ts +32 -83
- package/dist/index.js +21 -42
- package/dist/keys/env-file.d.ts +15 -0
- package/dist/keys/env-file.js +109 -0
- package/dist/keys/key-resolution.d.ts +58 -0
- package/dist/keys/key-resolution.js +389 -0
- package/dist/lab/adapter-extension.d.ts +75 -0
- package/dist/lab/adapter-extension.js +253 -0
- package/dist/lab/adapter-scorer-loader.d.ts +43 -0
- package/dist/lab/adapter-scorer-loader.js +130 -0
- package/dist/lab/bag-overrides.d.ts +18 -0
- package/dist/lab/bag-overrides.js +121 -0
- package/dist/lab/composition-rules.d.ts +5 -0
- package/dist/lab/composition-rules.js +283 -0
- package/dist/lab/config.d.ts +7 -0
- package/dist/lab/config.js +208 -0
- package/dist/lab/device-presets.d.ts +97 -0
- package/dist/lab/device-presets.js +87 -0
- package/dist/lab/discover.d.ts +65 -0
- package/dist/lab/discover.js +422 -0
- package/dist/lab/doctor.d.ts +39 -0
- package/dist/lab/doctor.js +233 -0
- package/dist/lab/init-paths.d.ts +5 -0
- package/dist/lab/init-paths.js +89 -0
- package/dist/lab/init-plan.d.ts +20 -0
- package/dist/lab/init-plan.js +163 -0
- package/dist/lab/init-templates.d.ts +28 -0
- package/dist/lab/init-templates.js +416 -0
- package/dist/lab/init.d.ts +39 -0
- package/dist/lab/init.js +287 -0
- package/dist/lab/keys.d.ts +2 -0
- package/dist/lab/keys.js +264 -0
- package/dist/lab/parse/actors.d.ts +14 -0
- package/dist/lab/parse/actors.js +453 -0
- package/dist/lab/parse/comms.d.ts +12 -0
- package/dist/lab/parse/comms.js +246 -0
- package/dist/lab/parse/execution.d.ts +19 -0
- package/dist/lab/parse/execution.js +356 -0
- package/dist/lab/parse/subject-state.d.ts +30 -0
- package/dist/lab/parse/subject-state.js +179 -0
- package/dist/lab/parse/subject.d.ts +9 -0
- package/dist/lab/parse/subject.js +420 -0
- package/dist/lab/parse/values.d.ts +17 -0
- package/dist/lab/parse/values.js +65 -0
- package/dist/lab/participant-assignment.d.ts +12 -0
- package/dist/lab/participant-assignment.js +19 -0
- package/dist/lab/persona-resolve.d.ts +39 -0
- package/dist/lab/persona-resolve.js +118 -0
- package/dist/lab/persona.d.ts +39 -0
- package/dist/lab/persona.js +192 -0
- package/dist/lab/plan-base.d.ts +24 -0
- package/dist/lab/plan-base.js +113 -0
- package/dist/lab/plan-participants.d.ts +81 -0
- package/dist/lab/plan-participants.js +92 -0
- package/dist/lab/plan-types.d.ts +269 -0
- package/dist/lab/plan-types.js +5 -0
- package/dist/lab/plan.d.ts +27 -0
- package/dist/lab/plan.js +156 -0
- package/dist/lab/preflight-probes.d.ts +3 -0
- package/dist/lab/preflight-probes.js +312 -0
- package/dist/lab/preflight-result.d.ts +7 -0
- package/dist/lab/preflight-result.js +43 -0
- package/dist/lab/preflight.d.ts +95 -0
- package/dist/lab/preflight.js +117 -0
- package/dist/lab/route-inputs.d.ts +17 -0
- package/dist/lab/route-inputs.js +95 -0
- package/dist/lab/routing.d.ts +81 -0
- package/dist/lab/routing.js +214 -0
- package/dist/lab/run-lab-events.d.ts +69 -0
- package/dist/lab/run-lab-events.js +95 -0
- package/dist/lab/run-lab-options.d.ts +82 -0
- package/dist/lab/run-lab-options.js +399 -0
- package/dist/lab/summary.d.ts +60 -0
- package/dist/lab/summary.js +168 -0
- package/dist/lab/tasks.d.ts +91 -0
- package/dist/lab/tasks.js +139 -0
- package/dist/lab/types.d.ts +813 -0
- package/dist/lab/types.js +6 -0
- package/dist/lab/validation.d.ts +67 -0
- package/dist/lab/validation.js +387 -0
- package/dist/lab/warnings.d.ts +2 -0
- package/dist/lab/warnings.js +338 -0
- package/dist/observer/artifact.d.ts +23 -0
- package/dist/observer/artifact.js +235 -0
- package/dist/observer/data.d.ts +115 -0
- package/dist/observer/data.js +258 -0
- package/dist/observer/exposure.d.ts +64 -0
- package/dist/observer/exposure.js +143 -0
- package/dist/observer/http.js +50 -0
- package/dist/observer/library.js +190 -0
- package/dist/observer/listen.js +85 -0
- package/dist/observer/live.d.ts +9 -0
- package/dist/observer/live.js +25 -0
- package/dist/observer/pinned-files.d.ts +30 -0
- package/dist/observer/pinned-files.js +160 -0
- package/dist/observer/render.d.ts +69 -0
- package/dist/observer/render.js +350 -0
- package/dist/observer/run-inventory.d.ts +35 -0
- package/dist/observer/run-inventory.js +95 -0
- package/dist/observer/run-routes.d.ts +37 -0
- package/dist/observer/run-routes.js +373 -0
- package/dist/observer/serve.d.ts +97 -0
- package/dist/observer/serve.js +305 -0
- package/dist/observer/static.js +369 -0
- package/dist/observer/tunnel.js +112 -0
- package/dist/observer-app.html +9 -20
- package/dist/routes/computer-use/bundle-parts.d.ts +50 -0
- package/dist/routes/computer-use/bundle-parts.js +177 -0
- package/dist/routes/computer-use/bundle.d.ts +56 -0
- package/dist/routes/computer-use/bundle.js +184 -0
- package/dist/routes/computer-use/diagnostics.d.ts +38 -0
- package/dist/routes/computer-use/diagnostics.js +94 -0
- package/dist/routes/computer-use/e2b-desktop/comms.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/comms.js +225 -0
- package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +3 -0
- package/dist/routes/computer-use/e2b-desktop/desktop.js +91 -0
- package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/fidelity.js +156 -0
- package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +18 -0
- package/dist/routes/computer-use/e2b-desktop/prepare.js +198 -0
- package/dist/routes/computer-use/e2b-desktop/start.d.ts +14 -0
- package/dist/routes/computer-use/e2b-desktop/start.js +193 -0
- package/dist/routes/computer-use/e2b-desktop/state.d.ts +65 -0
- package/dist/routes/computer-use/e2b-desktop/state.js +69 -0
- package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +6 -0
- package/dist/routes/computer-use/e2b-desktop/teardown.js +152 -0
- package/dist/routes/computer-use/external-comms.d.ts +20 -0
- package/dist/routes/computer-use/external-comms.js +55 -0
- package/dist/routes/computer-use/fanout-bundle.d.ts +11 -0
- package/dist/routes/computer-use/fanout-bundle.js +274 -0
- package/dist/routes/computer-use/fanout-lanes.d.ts +15 -0
- package/dist/routes/computer-use/fanout-lanes.js +302 -0
- package/dist/routes/computer-use/in-process-desktop.d.ts +17 -0
- package/dist/routes/computer-use/in-process-desktop.js +40 -0
- package/dist/routes/computer-use/lanes.d.ts +35 -0
- package/dist/routes/computer-use/lanes.js +321 -0
- package/dist/routes/computer-use/legacy-lane-spec.d.ts +62 -0
- package/dist/routes/computer-use/legacy-lane-spec.js +39 -0
- package/dist/routes/computer-use/live-flush.d.ts +42 -0
- package/dist/routes/computer-use/live-flush.js +154 -0
- package/dist/routes/computer-use/local-tree-pack.d.ts +27 -0
- package/dist/routes/computer-use/local-tree-pack.js +47 -0
- package/dist/routes/computer-use/local-vm.d.ts +20 -0
- package/dist/routes/computer-use/local-vm.js +218 -0
- package/dist/routes/computer-use/participant-desktop.d.ts +63 -0
- package/dist/routes/computer-use/participant-desktop.js +33 -0
- package/dist/routes/computer-use/participant-facts.d.ts +6 -0
- package/dist/routes/computer-use/participant-facts.js +22 -0
- package/dist/routes/computer-use/participant-model.d.ts +30 -0
- package/dist/routes/computer-use/participant-model.js +222 -0
- package/dist/routes/computer-use/participant-prompt.d.ts +53 -0
- package/dist/routes/computer-use/participant-prompt.js +87 -0
- package/dist/routes/computer-use/participant-runs.d.ts +67 -0
- package/dist/routes/computer-use/participant-runs.js +255 -0
- package/dist/routes/computer-use/plan.d.ts +56 -0
- package/dist/routes/computer-use/plan.js +308 -0
- package/dist/routes/computer-use/preflight.d.ts +26 -0
- package/dist/routes/computer-use/preflight.js +85 -0
- package/dist/routes/computer-use/rerun-selection.d.ts +19 -0
- package/dist/routes/computer-use/rerun-selection.js +121 -0
- package/dist/routes/computer-use/result.d.ts +7 -0
- package/dist/routes/computer-use/result.js +292 -0
- package/dist/routes/computer-use/route.d.ts +33 -0
- package/dist/routes/computer-use/route.js +145 -0
- package/dist/routes/computer-use/run-lanes.d.ts +59 -0
- package/dist/routes/computer-use/run-lanes.js +135 -0
- package/dist/routes/computer-use/self-report.d.ts +21 -0
- package/dist/routes/computer-use/self-report.js +231 -0
- package/dist/routes/computer-use/setup.d.ts +136 -0
- package/dist/routes/computer-use/setup.js +371 -0
- package/dist/routes/computer-use/single-bundle.d.ts +97 -0
- package/dist/routes/computer-use/single-bundle.js +393 -0
- package/dist/routes/computer-use/subject-projection.d.ts +51 -0
- package/dist/routes/computer-use/subject-projection.js +159 -0
- package/dist/routes/computer-use/types.d.ts +539 -0
- package/dist/routes/computer-use/types.js +37 -0
- package/dist/routes/preview.d.ts +13 -0
- package/dist/routes/preview.js +36 -0
- package/dist/routes/scripted/bundle.d.ts +47 -0
- package/dist/routes/scripted/bundle.js +195 -0
- package/dist/routes/scripted/plan.d.ts +30 -0
- package/dist/routes/scripted/plan.js +95 -0
- package/dist/routes/scripted/result.d.ts +48 -0
- package/dist/routes/scripted/result.js +176 -0
- package/dist/routes/scripted/route.d.ts +28 -0
- package/dist/routes/scripted/route.js +218 -0
- package/dist/routes/scripted/scenario.d.ts +21 -0
- package/dist/routes/scripted/scenario.js +102 -0
- package/dist/routes/scripted/session-result.d.ts +8 -0
- package/dist/routes/scripted/session-result.js +60 -0
- package/dist/routes/scripted/setup.d.ts +45 -0
- package/dist/routes/scripted/setup.js +126 -0
- package/dist/routes/scripted/subject.d.ts +49 -0
- package/dist/routes/scripted/subject.js +156 -0
- package/dist/routes/scripted/surface-records.d.ts +26 -0
- package/dist/routes/scripted/surface-records.js +88 -0
- package/dist/routes/scripted/surface-sessions.d.ts +13 -0
- package/dist/routes/scripted/surface-sessions.js +40 -0
- package/dist/routes/scripted/types.d.ts +88 -0
- package/dist/routes/scripted/types.js +3 -0
- package/dist/routes/shared-world/bundle.d.ts +20 -0
- package/dist/routes/shared-world/bundle.js +446 -0
- package/dist/routes/shared-world/checkpoints.d.ts +25 -0
- package/dist/routes/shared-world/checkpoints.js +46 -0
- package/dist/routes/shared-world/comms.d.ts +68 -0
- package/dist/routes/shared-world/comms.js +176 -0
- package/dist/routes/shared-world/external-public.d.ts +21 -0
- package/dist/routes/shared-world/external-public.js +130 -0
- package/dist/routes/shared-world/handoff.d.ts +62 -0
- package/dist/routes/shared-world/handoff.js +348 -0
- package/dist/routes/shared-world/lobby-code.d.ts +25 -0
- package/dist/routes/shared-world/lobby-code.js +152 -0
- package/dist/routes/shared-world/plan.d.ts +27 -0
- package/dist/routes/shared-world/plan.js +174 -0
- package/dist/routes/shared-world/provenance.d.ts +27 -0
- package/dist/routes/shared-world/provenance.js +65 -0
- package/dist/routes/shared-world/provisioned.d.ts +57 -0
- package/dist/routes/shared-world/provisioned.js +505 -0
- package/dist/routes/shared-world/result.d.ts +18 -0
- package/dist/routes/shared-world/result.js +327 -0
- package/dist/routes/shared-world/route.d.ts +21 -0
- package/dist/routes/shared-world/route.js +277 -0
- package/dist/routes/shared-world/seat-records.d.ts +20 -0
- package/dist/routes/shared-world/seat-records.js +213 -0
- package/dist/routes/shared-world/seats.d.ts +38 -0
- package/dist/routes/shared-world/seats.js +208 -0
- package/dist/routes/shared-world/setup.d.ts +48 -0
- package/dist/routes/shared-world/setup.js +200 -0
- package/dist/routes/shared-world/types.d.ts +354 -0
- package/dist/routes/shared-world/types.js +29 -0
- package/dist/routes/terminal/adapter.d.ts +37 -0
- package/dist/routes/terminal/adapter.js +201 -0
- package/dist/routes/terminal/bundle.d.ts +79 -0
- package/dist/routes/terminal/bundle.js +305 -0
- package/dist/routes/terminal/credentials.d.ts +34 -0
- package/dist/routes/terminal/credentials.js +102 -0
- package/dist/routes/terminal/dry-run.d.ts +24 -0
- package/dist/routes/terminal/dry-run.js +157 -0
- package/dist/routes/terminal/encoding.js +79 -0
- package/dist/routes/terminal/ledger.d.ts +49 -0
- package/dist/routes/terminal/ledger.js +170 -0
- package/dist/routes/terminal/lifetime.d.ts +10 -0
- package/dist/routes/terminal/lifetime.js +22 -0
- package/dist/routes/terminal/live-finish.d.ts +31 -0
- package/dist/routes/terminal/live-finish.js +215 -0
- package/dist/routes/terminal/live-sandbox.d.ts +69 -0
- package/dist/routes/terminal/live-sandbox.js +452 -0
- package/dist/routes/terminal/persona.d.ts +20 -0
- package/dist/routes/terminal/persona.js +34 -0
- package/dist/routes/terminal/plan.d.ts +21 -0
- package/dist/routes/terminal/plan.js +115 -0
- package/dist/routes/terminal/recorder.d.ts +23 -0
- package/dist/routes/terminal/recorder.js +77 -0
- package/dist/routes/terminal/result.d.ts +47 -0
- package/dist/routes/terminal/result.js +114 -0
- package/dist/routes/terminal/route.d.ts +23 -0
- package/dist/routes/terminal/route.js +170 -0
- package/dist/routes/terminal/runtime-auth.d.ts +12 -0
- package/dist/routes/terminal/runtime-auth.js +23 -0
- package/dist/routes/terminal/runtime.d.ts +14 -0
- package/dist/routes/terminal/runtime.js +47 -0
- package/dist/routes/terminal/sandbox.d.ts +35 -0
- package/dist/routes/terminal/sandbox.js +126 -0
- package/dist/routes/terminal/session.d.ts +25 -0
- package/dist/routes/terminal/session.js +199 -0
- package/dist/routes/terminal/token-usage.d.ts +15 -0
- package/dist/routes/terminal/token-usage.js +93 -0
- package/dist/routes/terminal/trace.d.ts +40 -0
- package/dist/routes/terminal/trace.js +172 -0
- package/dist/routes/terminal/types.d.ts +342 -0
- package/dist/routes/terminal/types.js +31 -0
- package/dist/run/bundle-shape.d.ts +7 -0
- package/dist/run/bundle-shape.js +369 -0
- package/dist/run/bundle.d.ts +547 -0
- package/dist/run/bundle.js +44 -0
- package/dist/run/concurrency.js +24 -0
- package/dist/run/contained-output.d.ts +50 -0
- package/dist/run/contained-output.js +351 -0
- package/dist/run/cost-summary.d.ts +28 -0
- package/dist/run/cost-summary.js +213 -0
- package/dist/run/costs.js +140 -0
- package/dist/run/detail.d.ts +62 -0
- package/dist/run/detail.js +139 -0
- package/dist/run/dry-run-inputs.d.ts +9 -0
- package/dist/run/dry-run-inputs.js +90 -0
- package/dist/run/dry-run.d.ts +6 -0
- package/dist/run/dry-run.js +362 -0
- package/dist/run/feedback-shape.d.ts +7 -0
- package/dist/run/feedback-shape.js +89 -0
- package/dist/run/git-state.d.ts +35 -0
- package/dist/run/git-state.js +316 -0
- package/dist/run/git-workspace.d.ts +32 -0
- package/dist/run/git-workspace.js +450 -0
- package/dist/run/judge.d.ts +210 -0
- package/dist/run/judge.js +240 -0
- package/dist/run/locate.d.ts +22 -0
- package/dist/run/locate.js +122 -0
- package/dist/run/outcomes.d.ts +31 -0
- package/dist/run/outcomes.js +210 -0
- package/dist/run/participant-records.d.ts +28 -0
- package/dist/run/participant-records.js +63 -0
- package/dist/run/participant.d.ts +29 -0
- package/dist/run/participant.js +12 -0
- package/dist/run/paths.d.ts +79 -0
- package/dist/run/paths.js +356 -0
- package/dist/run/preflight-receipts.d.ts +46 -0
- package/dist/run/preflight-receipts.js +173 -0
- package/dist/run/pricing.d.ts +124 -0
- package/dist/run/pricing.js +298 -0
- package/dist/run/project.d.ts +8 -0
- package/dist/run/project.js +103 -0
- package/dist/run/projection.d.ts +184 -0
- package/dist/run/projection.js +356 -0
- package/dist/run/reclaim.d.ts +41 -0
- package/dist/run/reclaim.js +183 -0
- package/dist/run/results.d.ts +88 -0
- package/dist/run/results.js +3 -0
- package/dist/run/run-index.d.ts +107 -0
- package/dist/run/run-index.js +243 -0
- package/dist/run/run.d.ts +103 -0
- package/dist/run/run.js +199 -0
- package/dist/run/sandbox-receipts.d.ts +31 -0
- package/dist/run/sandbox-receipts.js +49 -0
- package/dist/run/shared-world-evidence.d.ts +220 -0
- package/dist/run/shared-world-evidence.js +49 -0
- package/dist/run/shared-world-shape.d.ts +26 -0
- package/dist/run/shared-world-shape.js +181 -0
- package/dist/run/stats.d.ts +82 -0
- package/dist/run/stats.js +258 -0
- package/dist/run/status.d.ts +111 -0
- package/dist/run/status.js +176 -0
- package/dist/run/stored-runs.d.ts +38 -0
- package/dist/run/stored-runs.js +273 -0
- package/dist/run/stream-shape.d.ts +4 -0
- package/dist/run/stream-shape.js +160 -0
- package/dist/run/streams.d.ts +257 -0
- package/dist/run/streams.js +12 -0
- package/dist/run/study-files.d.ts +35 -0
- package/dist/run/study-files.js +164 -0
- package/dist/run/terminal-contract.d.ts +25 -0
- package/dist/run/terminal-contract.js +47 -0
- package/dist/run/text.d.ts +2 -0
- package/dist/run/text.js +4 -0
- package/dist/run/transient-comms-secrets.js +72 -0
- package/dist/run/type-guards.d.ts +6 -0
- package/dist/run/type-guards.js +18 -0
- package/dist/run-lab.d.ts +110 -0
- package/dist/run-lab.js +148 -0
- package/dist/subject/clone.d.ts +37 -0
- package/dist/subject/clone.js +62 -0
- package/dist/subject/desktop-cli.d.ts +17 -0
- package/dist/subject/desktop-cli.js +51 -0
- package/dist/subject/local-tree-archive.d.ts +82 -0
- package/dist/subject/local-tree-archive.js +431 -0
- package/dist/subject/local-tree.d.ts +28 -0
- package/dist/subject/local-tree.js +58 -0
- package/dist/subject/node-bootstrap.d.ts +12 -0
- package/dist/subject/node-bootstrap.js +66 -0
- package/dist/subject/runtime.d.ts +13 -0
- package/dist/subject/runtime.js +50 -0
- package/dist/subject/serve.d.ts +39 -0
- package/dist/subject/serve.js +249 -0
- package/dist/subject/state.d.ts +23 -0
- package/dist/subject/state.js +58 -0
- package/dist/subject/steps.d.ts +37 -0
- package/dist/subject/steps.js +39 -0
- package/dist/substrates/command-failure.d.ts +23 -0
- package/dist/substrates/command-failure.js +45 -0
- package/dist/substrates/desktop-session.d.ts +41 -0
- package/dist/substrates/desktop-session.js +59 -0
- package/dist/substrates/detached.d.ts +55 -0
- package/dist/substrates/detached.js +139 -0
- package/dist/substrates/e2b/cdp-probe.d.ts +99 -0
- package/dist/substrates/e2b/cdp-probe.js +556 -0
- package/dist/substrates/e2b/desktop-browser.d.ts +81 -0
- package/dist/substrates/e2b/desktop-browser.js +410 -0
- package/dist/substrates/e2b/desktop-cdp.d.ts +77 -0
- package/dist/substrates/e2b/desktop-cdp.js +211 -0
- package/dist/substrates/e2b/desktop-executor.d.ts +92 -0
- package/dist/substrates/e2b/desktop-executor.js +302 -0
- package/dist/substrates/e2b/desktop-geometry.d.ts +83 -0
- package/dist/substrates/e2b/desktop-geometry.js +331 -0
- package/dist/substrates/e2b/desktop-media.d.ts +29 -0
- package/dist/substrates/e2b/desktop-media.js +151 -0
- package/dist/substrates/e2b/desktop-recording.d.ts +18 -0
- package/dist/substrates/e2b/desktop-recording.js +238 -0
- package/dist/substrates/e2b/desktop-resources.d.ts +11 -0
- package/dist/substrates/e2b/desktop-resources.js +35 -0
- package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +15 -0
- package/dist/substrates/e2b/desktop-screenshot-cleanup.js +66 -0
- package/dist/substrates/e2b/lifetime.d.ts +12 -0
- package/dist/substrates/e2b/lifetime.js +18 -0
- package/dist/substrates/e2b/sandbox.d.ts +102 -0
- package/dist/substrates/e2b/sandbox.js +202 -0
- package/dist/substrates/e2b/sdk.d.ts +194 -0
- package/dist/substrates/e2b/sdk.js +168 -0
- package/dist/substrates/e2b/shell.d.ts +10 -0
- package/dist/substrates/e2b/shell.js +61 -0
- package/dist/substrates/local/captured-inbox.d.ts +6 -0
- package/dist/substrates/local/captured-inbox.js +87 -0
- package/dist/substrates/local/firecracker-desktop.d.ts +25 -0
- package/dist/substrates/local/firecracker-desktop.js +315 -0
- package/dist/substrates/local/runtime-config.d.ts +6 -0
- package/dist/substrates/local/runtime-config.js +91 -0
- package/dist/substrates/local/runtime-host.d.ts +30 -0
- package/dist/substrates/local/runtime-host.js +143 -0
- package/dist/substrates/local/runtime-release.d.ts +5 -0
- package/dist/substrates/local/runtime-release.js +32 -0
- package/dist/substrates/local/runtime-ssh.d.ts +9 -0
- package/dist/substrates/local/runtime-ssh.js +129 -0
- package/dist/substrates/local/runtime.d.ts +25 -0
- package/dist/substrates/local/runtime.js +190 -0
- package/dist/substrates/shell.d.ts +44 -0
- package/dist/substrates/shell.js +22 -0
- package/dist/tui/actions.d.ts +39 -0
- package/dist/tui/actions.js +203 -0
- package/dist/tui/contract.d.ts +144 -0
- package/dist/tui/contract.js +52 -0
- package/dist/tui/launch.js +172 -0
- package/dist/tui/project.d.ts +10 -0
- package/dist/tui/project.js +17 -0
- package/dist/tui-app.js +125 -125
- package/dist/verify/actor.d.ts +27 -0
- package/dist/verify/actor.js +292 -0
- package/dist/verify/artifacts.d.ts +47 -0
- package/dist/verify/artifacts.js +373 -0
- package/dist/verify/costs.d.ts +30 -0
- package/dist/verify/costs.js +129 -0
- package/dist/verify/liveness.d.ts +7 -0
- package/dist/verify/liveness.js +72 -0
- package/dist/verify/rerun.d.ts +3 -0
- package/dist/verify/rerun.js +46 -0
- package/dist/verify/shared-world-concurrent.d.ts +11 -0
- package/dist/verify/shared-world-concurrent.js +346 -0
- package/dist/verify/shared-world.d.ts +8 -0
- package/dist/verify/shared-world.js +295 -0
- package/dist/verify/subject.d.ts +17 -0
- package/dist/verify/subject.js +123 -0
- package/dist/verify/verify.d.ts +34 -0
- package/dist/verify/verify.js +333 -0
- package/docs/README.md +67 -0
- package/docs/architecture/actor-contract.md +215 -174
- package/docs/architecture/browser-control.md +51 -37
- package/docs/architecture/comms-inbox.md +8 -8
- package/docs/architecture/desktop-recording.md +2 -2
- package/docs/architecture/desktop-sessions.md +33 -21
- package/docs/architecture/external-public-shared-world.md +80 -64
- package/docs/architecture/github-feedback-loop.md +40 -27
- package/docs/architecture/guest-desktop.md +22 -10
- package/docs/architecture/local-browser-runtime.md +30 -21
- package/docs/architecture/observer-review.md +9 -9
- package/docs/architecture/observer.md +53 -57
- package/docs/architecture/participant-media.md +3 -3
- package/docs/architecture/project-layout.md +33 -137
- package/docs/architecture/real-email-receiving.md +7 -6
- package/docs/architecture/restricted-codex-analysis.md +211 -25
- package/docs/architecture/serve.md +89 -87
- package/docs/architecture/state-driven-executor.md +79 -64
- package/docs/architecture/task-protocol-support.md +18 -18
- package/docs/architecture/terminal-product-lane.md +92 -86
- package/docs/contracts/adapter-admission.md +8 -4
- package/docs/contracts/adapter-fixtures.md +6 -6
- package/docs/contracts/core.md +22 -24
- package/docs/contracts/feedback.md +33 -23
- package/docs/contracts/policy.md +28 -31
- package/docs/contracts/run-bundle.md +168 -82
- package/docs/contracts/schemas.md +594 -379
- package/docs/contracts/study-analysis.md +2 -2
- package/docs/contracts/study-costs.md +12 -12
- package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +36 -0
- package/docs/decisions/0002-observer-is-one-self-contained-file.md +30 -0
- package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +35 -0
- package/docs/decisions/0004-participant-desktops-stay-in-the-route.md +31 -0
- package/docs/decisions/README.md +16 -0
- package/docs/goals/current.md +22 -46
- package/docs/principles/actor-fidelity.md +51 -63
- package/docs/principles/engineering.md +81 -0
- package/docs/principles/invariants-and-defaults.md +48 -45
- package/docs/principles/self-driving-harness.md +11 -10
- package/docs/principles/three-roles.md +12 -13
- package/docs/product/automatic-analysis.md +39 -9
- package/docs/product/lobby-trivia-3player-external-public.md +14 -13
- package/docs/product/open-source-install-experience.md +34 -38
- package/docs/ramp/README.md +91 -213
- package/docs/release/open-source-readiness.md +5 -2
- package/docs/release/public-readiness-standard.md +1 -1
- package/examples/README.md +11 -0
- package/examples/participant/README.md +80 -0
- package/examples/participant/app.mjs +55 -0
- package/examples/participant/run.mjs +116 -0
- package/examples/scorer/README.md +29 -0
- package/examples/scorer/run.mjs +63 -0
- package/examples/scorer/scorer.mjs +20 -0
- package/package.json +61 -57
- package/skills/humanish/SKILL.md +112 -83
- package/skills/humanish/agents/openai.yaml +2 -2
- package/dist/actor-contract.d.ts +0 -288
- package/dist/actor-contract.js +0 -340
- package/dist/actor-contract.js.map +0 -1
- package/dist/actor-goal-source.js +0 -32
- package/dist/actor-goal-source.js.map +0 -1
- package/dist/actor-registry.d.ts +0 -77
- package/dist/actor-registry.js +0 -106
- package/dist/actor-registry.js.map +0 -1
- package/dist/actor-stop-cause.d.ts +0 -9
- package/dist/actor-stop-cause.js +0 -42
- package/dist/actor-stop-cause.js.map +0 -1
- package/dist/adapter-extension.d.ts +0 -76
- package/dist/adapter-extension.js +0 -273
- package/dist/adapter-extension.js.map +0 -1
- package/dist/adapter-scorer-loader.d.ts +0 -42
- package/dist/adapter-scorer-loader.js +0 -129
- package/dist/adapter-scorer-loader.js.map +0 -1
- package/dist/affordance.d.ts +0 -53
- package/dist/affordance.js +0 -145
- package/dist/affordance.js.map +0 -1
- package/dist/agent-session.js +0 -43
- package/dist/agent-session.js.map +0 -1
- package/dist/argv.d.ts +0 -1
- package/dist/argv.js +0 -8
- package/dist/argv.js.map +0 -1
- package/dist/artifact-reference.d.ts +0 -22
- package/dist/artifact-reference.js +0 -47
- package/dist/artifact-reference.js.map +0 -1
- package/dist/automatic-analysis-completion.d.ts +0 -25
- package/dist/automatic-analysis-completion.js +0 -56
- package/dist/automatic-analysis-completion.js.map +0 -1
- package/dist/automatic-analysis-config.d.ts +0 -38
- package/dist/automatic-analysis-config.js +0 -68
- package/dist/automatic-analysis-config.js.map +0 -1
- package/dist/automatic-study-analysis.d.ts +0 -17
- package/dist/automatic-study-analysis.js +0 -195
- package/dist/automatic-study-analysis.js.map +0 -1
- package/dist/browser-control-client.d.ts +0 -18
- package/dist/browser-control-client.js +0 -176
- package/dist/browser-control-client.js.map +0 -1
- package/dist/browser-control-dispatcher.d.ts +0 -19
- package/dist/browser-control-dispatcher.js +0 -147
- package/dist/browser-control-dispatcher.js.map +0 -1
- package/dist/browser-control-protocol.d.ts +0 -472
- package/dist/browser-control-protocol.js +0 -185
- package/dist/browser-control-protocol.js.map +0 -1
- package/dist/browser-control-recording-transfer.d.ts +0 -4
- package/dist/browser-control-recording-transfer.js +0 -42
- package/dist/browser-control-recording-transfer.js.map +0 -1
- package/dist/browser-control-transport.d.ts +0 -27
- package/dist/browser-control-transport.js +0 -177
- package/dist/browser-control-transport.js.map +0 -1
- package/dist/browser-evidence-hygiene.js +0 -43
- package/dist/browser-evidence-hygiene.js.map +0 -1
- package/dist/chrome-cdp-probe.d.ts +0 -97
- package/dist/chrome-cdp-probe.js +0 -536
- package/dist/chrome-cdp-probe.js.map +0 -1
- package/dist/claude-agent-sdk.d.ts +0 -94
- package/dist/claude-agent-sdk.js +0 -367
- package/dist/claude-agent-sdk.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/codex-app-server-ui.d.ts +0 -39
- package/dist/codex-app-server-ui.js +0 -357
- package/dist/codex-app-server-ui.js.map +0 -1
- package/dist/codex-app-server.d.ts +0 -144
- package/dist/codex-app-server.js +0 -754
- package/dist/codex-app-server.js.map +0 -1
- package/dist/command-failure.d.ts +0 -43
- package/dist/command-failure.js +0 -73
- package/dist/command-failure.js.map +0 -1
- package/dist/comms-agentmail.d.ts +0 -25
- package/dist/comms-agentmail.js +0 -418
- package/dist/comms-agentmail.js.map +0 -1
- package/dist/comms-catch-host.d.ts +0 -52
- package/dist/comms-catch-host.js +0 -178
- package/dist/comms-catch-host.js.map +0 -1
- package/dist/comms-connections.d.ts +0 -52
- package/dist/comms-connections.js +0 -123
- package/dist/comms-connections.js.map +0 -1
- package/dist/comms-email-catch.d.ts +0 -54
- package/dist/comms-email-catch.js +0 -212
- package/dist/comms-email-catch.js.map +0 -1
- package/dist/comms-evidence.d.ts +0 -27
- package/dist/comms-evidence.js +0 -31
- package/dist/comms-evidence.js.map +0 -1
- package/dist/comms-fake-inbox.d.ts +0 -45
- package/dist/comms-fake-inbox.js +0 -184
- package/dist/comms-fake-inbox.js.map +0 -1
- package/dist/comms-images.d.ts +0 -7
- package/dist/comms-images.js +0 -39
- package/dist/comms-images.js.map +0 -1
- package/dist/comms-inbox.d.ts +0 -66
- package/dist/comms-inbox.js +0 -389
- package/dist/comms-inbox.js.map +0 -1
- package/dist/comms-lease-store.d.ts +0 -91
- package/dist/comms-lease-store.js +0 -495
- package/dist/comms-lease-store.js.map +0 -1
- package/dist/comms-receiving-evidence.d.ts +0 -46
- package/dist/comms-receiving-evidence.js +0 -35
- package/dist/comms-receiving-evidence.js.map +0 -1
- package/dist/comms-receiving-inbox.d.ts +0 -16
- package/dist/comms-receiving-inbox.js +0 -410
- package/dist/comms-receiving-inbox.js.map +0 -1
- package/dist/comms-receiving-runtime.d.ts +0 -25
- package/dist/comms-receiving-runtime.js +0 -45
- package/dist/comms-receiving-runtime.js.map +0 -1
- package/dist/comms-receiving-types.d.ts +0 -98
- package/dist/comms-receiving-types.js +0 -2
- package/dist/comms-receiving-types.js.map +0 -1
- package/dist/comms-receiving.d.ts +0 -58
- package/dist/comms-receiving.js +0 -554
- package/dist/comms-receiving.js.map +0 -1
- package/dist/comms-sandbox-catch.d.ts +0 -229
- package/dist/comms-sandbox-catch.js +0 -737
- package/dist/comms-sandbox-catch.js.map +0 -1
- package/dist/comms-setup.d.ts +0 -40
- package/dist/comms-setup.js +0 -121
- package/dist/comms-setup.js.map +0 -1
- package/dist/comms-types.d.ts +0 -72
- package/dist/comms-types.js +0 -10
- package/dist/comms-types.js.map +0 -1
- package/dist/computer-use-actor.d.ts +0 -76
- package/dist/computer-use-actor.js +0 -68
- package/dist/computer-use-actor.js.map +0 -1
- package/dist/computer-use.d.ts +0 -429
- package/dist/computer-use.js +0 -1749
- package/dist/computer-use.js.map +0 -1
- package/dist/concurrency.js +0 -27
- package/dist/concurrency.js.map +0 -1
- package/dist/concurrent-shared-world-lab.d.ts +0 -186
- package/dist/concurrent-shared-world-lab.js +0 -2179
- package/dist/concurrent-shared-world-lab.js.map +0 -1
- package/dist/core/git-state.d.ts +0 -33
- package/dist/core/git-state.js +0 -277
- package/dist/core/git-state.js.map +0 -1
- package/dist/core/git-workspace.d.ts +0 -31
- package/dist/core/git-workspace.js +0 -447
- package/dist/core/git-workspace.js.map +0 -1
- package/dist/core/index.d.ts +0 -4
- package/dist/core/index.js +0 -3
- package/dist/core/index.js.map +0 -1
- package/dist/core/run-primitives.d.ts +0 -66
- package/dist/core/run-primitives.js +0 -120
- package/dist/core/run-primitives.js.map +0 -1
- package/dist/cua-actor-lab.d.ts +0 -855
- package/dist/cua-actor-lab.js +0 -3545
- package/dist/cua-actor-lab.js.map +0 -1
- package/dist/cua-admission-limit.d.ts +0 -12
- package/dist/cua-admission-limit.js +0 -20
- package/dist/cua-admission-limit.js.map +0 -1
- package/dist/cua-desktop-lane.d.ts +0 -35
- package/dist/cua-desktop-lane.js +0 -13
- package/dist/cua-desktop-lane.js.map +0 -1
- package/dist/cua-diagnostics.d.ts +0 -38
- package/dist/cua-diagnostics.js +0 -68
- package/dist/cua-diagnostics.js.map +0 -1
- package/dist/cua-executor-error.js +0 -48
- package/dist/cua-executor-error.js.map +0 -1
- package/dist/cua-provider-error.d.ts +0 -16
- package/dist/cua-provider-error.js +0 -35
- package/dist/cua-provider-error.js.map +0 -1
- package/dist/cua-speech.js +0 -2
- package/dist/cua-speech.js.map +0 -1
- package/dist/desktop-recorder.d.ts +0 -39
- package/dist/desktop-recorder.js +0 -226
- package/dist/desktop-recorder.js.map +0 -1
- package/dist/desktop-recording-artifact.d.ts +0 -5
- package/dist/desktop-recording-artifact.js +0 -54
- package/dist/desktop-recording-artifact.js.map +0 -1
- package/dist/desktop-recording-types.d.ts +0 -24
- package/dist/desktop-recording-types.js +0 -14
- package/dist/desktop-recording-types.js.map +0 -1
- package/dist/desktop-session.d.ts +0 -41
- package/dist/desktop-session.js +0 -47
- package/dist/desktop-session.js.map +0 -1
- package/dist/device-presets.d.ts +0 -67
- package/dist/device-presets.js +0 -55
- package/dist/device-presets.js.map +0 -1
- package/dist/doctor-lab.d.ts +0 -38
- package/dist/doctor-lab.js +0 -126
- package/dist/doctor-lab.js.map +0 -1
- package/dist/e2b-cua-desktop.d.ts +0 -3
- package/dist/e2b-cua-desktop.js +0 -708
- package/dist/e2b-cua-desktop.js.map +0 -1
- package/dist/e2b-cua-provisioning.d.ts +0 -314
- package/dist/e2b-cua-provisioning.js +0 -1219
- package/dist/e2b-cua-provisioning.js.map +0 -1
- package/dist/e2b-desktop-executor.d.ts +0 -101
- package/dist/e2b-desktop-executor.js +0 -297
- package/dist/e2b-desktop-executor.js.map +0 -1
- package/dist/e2b-desktop-launch.d.ts +0 -243
- package/dist/e2b-desktop-launch.js +0 -234
- package/dist/e2b-desktop-launch.js.map +0 -1
- package/dist/e2b-desktop-media.d.ts +0 -14
- package/dist/e2b-desktop-media.js +0 -58
- package/dist/e2b-desktop-media.js.map +0 -1
- package/dist/e2b-desktop-recording.d.ts +0 -16
- package/dist/e2b-desktop-recording.js +0 -162
- package/dist/e2b-desktop-recording.js.map +0 -1
- package/dist/e2b-desktop-resources.d.ts +0 -11
- package/dist/e2b-desktop-resources.js +0 -33
- package/dist/e2b-desktop-resources.js.map +0 -1
- package/dist/e2b-desktop-screenshot-cleanup.d.ts +0 -15
- package/dist/e2b-desktop-screenshot-cleanup.js +0 -67
- package/dist/e2b-desktop-screenshot-cleanup.js.map +0 -1
- package/dist/e2b-desktop-session.d.ts +0 -7
- package/dist/e2b-desktop-session.js +0 -29
- package/dist/e2b-desktop-session.js.map +0 -1
- package/dist/e2b-detached.d.ts +0 -53
- package/dist/e2b-detached.js +0 -130
- package/dist/e2b-detached.js.map +0 -1
- package/dist/e2b-terminal-lab.d.ts +0 -395
- package/dist/e2b-terminal-lab.js +0 -2041
- package/dist/e2b-terminal-lab.js.map +0 -1
- package/dist/env-file.d.ts +0 -14
- package/dist/env-file.js +0 -108
- package/dist/env-file.js.map +0 -1
- package/dist/export-bundle.d.ts +0 -7
- package/dist/export-bundle.js +0 -441
- package/dist/export-bundle.js.map +0 -1
- package/dist/export.d.ts +0 -49
- package/dist/export.js +0 -308
- package/dist/export.js.map +0 -1
- package/dist/feedback-proof.d.ts +0 -8
- package/dist/feedback-proof.js +0 -44
- package/dist/feedback-proof.js.map +0 -1
- package/dist/feedback.d.ts +0 -76
- package/dist/feedback.js +0 -496
- package/dist/feedback.js.map +0 -1
- package/dist/first-run-path.d.ts +0 -55
- package/dist/first-run-path.js +0 -136
- package/dist/first-run-path.js.map +0 -1
- package/dist/frame-signature.d.ts +0 -24
- package/dist/frame-signature.js +0 -128
- package/dist/frame-signature.js.map +0 -1
- package/dist/guest-bootstrap.d.ts +0 -55
- package/dist/guest-bootstrap.js +0 -285
- package/dist/guest-bootstrap.js.map +0 -1
- package/dist/guest-browser-tools.d.ts +0 -8
- package/dist/guest-browser-tools.js +0 -66
- package/dist/guest-browser-tools.js.map +0 -1
- package/dist/guest-chromium-text.d.ts +0 -27
- package/dist/guest-chromium-text.js +0 -281
- package/dist/guest-chromium-text.js.map +0 -1
- package/dist/guest-desktop-executor.d.ts +0 -22
- package/dist/guest-desktop-executor.js +0 -178
- package/dist/guest-desktop-executor.js.map +0 -1
- package/dist/guest-desktop-media.d.ts +0 -33
- package/dist/guest-desktop-media.js +0 -281
- package/dist/guest-desktop-media.js.map +0 -1
- package/dist/guest-desktop-native.d.ts +0 -14
- package/dist/guest-desktop-native.js +0 -131
- package/dist/guest-desktop-native.js.map +0 -1
- package/dist/guest-media-config.d.ts +0 -15
- package/dist/guest-media-config.js +0 -8
- package/dist/guest-media-config.js.map +0 -1
- package/dist/guest-media-worker.js.map +0 -1
- package/dist/guest-runtime-desktop.d.ts +0 -42
- package/dist/guest-runtime-desktop.js +0 -314
- package/dist/guest-runtime-desktop.js.map +0 -1
- package/dist/guest-runtime-main.js.map +0 -1
- package/dist/guest-runtime-revision.js.map +0 -1
- package/dist/guest-runtime.d.ts +0 -31
- package/dist/guest-runtime.js +0 -99
- package/dist/guest-runtime.js.map +0 -1
- package/dist/image-evidence.d.ts +0 -2
- package/dist/image-evidence.js +0 -47
- package/dist/image-evidence.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init-templates.d.ts +0 -25
- package/dist/init-templates.js +0 -542
- package/dist/init-templates.js.map +0 -1
- package/dist/init.d.ts +0 -38
- package/dist/init.js +0 -532
- package/dist/init.js.map +0 -1
- package/dist/key-resolution.d.ts +0 -67
- package/dist/key-resolution.js +0 -375
- package/dist/key-resolution.js.map +0 -1
- package/dist/lab-app-runner.d.ts +0 -78
- package/dist/lab-app-runner.js +0 -403
- package/dist/lab-app-runner.js.map +0 -1
- package/dist/lab-config.d.ts +0 -968
- package/dist/lab-config.js +0 -2714
- package/dist/lab-config.js.map +0 -1
- package/dist/lab-engine.d.ts +0 -97
- package/dist/lab-engine.js +0 -285
- package/dist/lab-engine.js.map +0 -1
- package/dist/lab-preflight.d.ts +0 -70
- package/dist/lab-preflight.js +0 -388
- package/dist/lab-preflight.js.map +0 -1
- package/dist/lab-summary.d.ts +0 -57
- package/dist/lab-summary.js +0 -126
- package/dist/lab-summary.js.map +0 -1
- package/dist/labs.d.ts +0 -59
- package/dist/labs.js +0 -385
- package/dist/labs.js.map +0 -1
- package/dist/listen.js +0 -84
- package/dist/listen.js.map +0 -1
- package/dist/local-agent-claude-session.d.ts +0 -45
- package/dist/local-agent-claude-session.js +0 -203
- package/dist/local-agent-claude-session.js.map +0 -1
- package/dist/local-agent-cli.d.ts +0 -121
- package/dist/local-agent-cli.js +0 -427
- package/dist/local-agent-cli.js.map +0 -1
- package/dist/local-captured-inbox.d.ts +0 -6
- package/dist/local-captured-inbox.js +0 -65
- package/dist/local-captured-inbox.js.map +0 -1
- package/dist/local-firecracker-desktop.d.ts +0 -23
- package/dist/local-firecracker-desktop.js +0 -191
- package/dist/local-firecracker-desktop.js.map +0 -1
- package/dist/local-firecracker-study.d.ts +0 -9
- package/dist/local-firecracker-study.js +0 -135
- package/dist/local-firecracker-study.js.map +0 -1
- package/dist/local-runtime-config.d.ts +0 -6
- package/dist/local-runtime-config.js +0 -60
- package/dist/local-runtime-config.js.map +0 -1
- package/dist/local-runtime-host.d.ts +0 -31
- package/dist/local-runtime-host.js +0 -128
- package/dist/local-runtime-host.js.map +0 -1
- package/dist/local-runtime-release.d.ts +0 -7
- package/dist/local-runtime-release.js +0 -33
- package/dist/local-runtime-release.js.map +0 -1
- package/dist/local-runtime-ssh.d.ts +0 -27
- package/dist/local-runtime-ssh.js +0 -91
- package/dist/local-runtime-ssh.js.map +0 -1
- package/dist/local-runtime.d.ts +0 -25
- package/dist/local-runtime.js +0 -133
- package/dist/local-runtime.js.map +0 -1
- package/dist/observer-data.d.ts +0 -114
- package/dist/observer-data.js +0 -224
- package/dist/observer-data.js.map +0 -1
- package/dist/observer-library.js +0 -191
- package/dist/observer-library.js.map +0 -1
- package/dist/observer-serve.d.ts +0 -99
- package/dist/observer-serve.js +0 -284
- package/dist/observer-serve.js.map +0 -1
- package/dist/observer-static.js +0 -357
- package/dist/observer-static.js.map +0 -1
- package/dist/observer.d.ts +0 -118
- package/dist/observer.js +0 -947
- package/dist/observer.js.map +0 -1
- package/dist/openai-responses-cu.d.ts +0 -158
- package/dist/openai-responses-cu.js +0 -714
- package/dist/openai-responses-cu.js.map +0 -1
- package/dist/orientation.d.ts +0 -29
- package/dist/orientation.js +0 -95
- package/dist/orientation.js.map +0 -1
- package/dist/oss-lab.d.ts +0 -55
- package/dist/oss-lab.js +0 -344
- package/dist/oss-lab.js.map +0 -1
- package/dist/oss-meta-lab-scoring.d.ts +0 -15
- package/dist/oss-meta-lab-scoring.js +0 -145
- package/dist/oss-meta-lab-scoring.js.map +0 -1
- package/dist/oss-meta-lab.d.ts +0 -287
- package/dist/oss-meta-lab.js +0 -4551
- package/dist/oss-meta-lab.js.map +0 -1
- package/dist/oss-remote-telemetry.d.ts +0 -77
- package/dist/oss-remote-telemetry.js +0 -403
- package/dist/oss-remote-telemetry.js.map +0 -1
- package/dist/output-token-limit.js +0 -5
- package/dist/output-token-limit.js.map +0 -1
- package/dist/participant-assignment.d.ts +0 -12
- package/dist/participant-assignment.js +0 -15
- package/dist/participant-assignment.js.map +0 -1
- package/dist/persona-resolve.d.ts +0 -44
- package/dist/persona-resolve.js +0 -109
- package/dist/persona-resolve.js.map +0 -1
- package/dist/persona.d.ts +0 -35
- package/dist/persona.js +0 -141
- package/dist/persona.js.map +0 -1
- package/dist/pi-agent-core.d.ts +0 -77
- package/dist/pi-agent-core.js +0 -207
- package/dist/pi-agent-core.js.map +0 -1
- package/dist/pricing.d.ts +0 -145
- package/dist/pricing.js +0 -277
- package/dist/pricing.js.map +0 -1
- package/dist/program.d.ts +0 -96
- package/dist/program.js +0 -4029
- package/dist/program.js.map +0 -1
- package/dist/reasoning-effort.js +0 -26
- package/dist/reasoning-effort.js.map +0 -1
- package/dist/reclaim.d.ts +0 -31
- package/dist/reclaim.js +0 -90
- package/dist/reclaim.js.map +0 -1
- package/dist/redaction.d.ts +0 -90
- package/dist/redaction.js +0 -294
- package/dist/redaction.js.map +0 -1
- package/dist/restricted-codex-analysis.d.ts +0 -15
- package/dist/restricted-codex-analysis.js +0 -13
- package/dist/restricted-codex-analysis.js.map +0 -1
- package/dist/restricted-codex-participant-policy.d.ts +0 -44
- package/dist/restricted-codex-participant-policy.js +0 -43
- package/dist/restricted-codex-participant-policy.js.map +0 -1
- package/dist/restricted-codex-participant-run.d.ts +0 -20
- package/dist/restricted-codex-participant-run.js +0 -79
- package/dist/restricted-codex-participant-run.js.map +0 -1
- package/dist/restricted-codex-participant.d.ts +0 -20
- package/dist/restricted-codex-participant.js +0 -250
- package/dist/restricted-codex-participant.js.map +0 -1
- package/dist/restricted-codex-policy.d.ts +0 -64
- package/dist/restricted-codex-policy.js +0 -176
- package/dist/restricted-codex-policy.js.map +0 -1
- package/dist/restricted-codex-session.d.ts +0 -44
- package/dist/restricted-codex-session.js +0 -657
- package/dist/restricted-codex-session.js.map +0 -1
- package/dist/restricted-codex-transport.d.ts +0 -69
- package/dist/restricted-codex-transport.js +0 -296
- package/dist/restricted-codex-transport.js.map +0 -1
- package/dist/run-detail.d.ts +0 -61
- package/dist/run-detail.js +0 -137
- package/dist/run-detail.js.map +0 -1
- package/dist/run-index.d.ts +0 -71
- package/dist/run-index.js +0 -206
- package/dist/run-index.js.map +0 -1
- package/dist/run-narration-secrets.js +0 -68
- package/dist/run-narration-secrets.js.map +0 -1
- package/dist/run-paths.d.ts +0 -56
- package/dist/run-paths.js +0 -355
- package/dist/run-paths.js.map +0 -1
- package/dist/run-projection.d.ts +0 -186
- package/dist/run-projection.js +0 -350
- package/dist/run-projection.js.map +0 -1
- package/dist/run-status.d.ts +0 -139
- package/dist/run-status.js +0 -218
- package/dist/run-status.js.map +0 -1
- package/dist/run.d.ts +0 -1255
- package/dist/run.js +0 -5947
- package/dist/run.js.map +0 -1
- package/dist/sandbox-receipts.d.ts +0 -19
- package/dist/sandbox-receipts.js +0 -51
- package/dist/sandbox-receipts.js.map +0 -1
- package/dist/screenshot-image.d.ts +0 -11
- package/dist/screenshot-image.js +0 -26
- package/dist/screenshot-image.js.map +0 -1
- package/dist/scripted-browser-actor.d.ts +0 -297
- package/dist/scripted-browser-actor.js +0 -1399
- package/dist/scripted-browser-actor.js.map +0 -1
- package/dist/scripted-browser-lab.d.ts +0 -121
- package/dist/scripted-browser-lab.js +0 -852
- package/dist/scripted-browser-lab.js.map +0 -1
- package/dist/secret-prompt.js +0 -36
- package/dist/secret-prompt.js.map +0 -1
- package/dist/selected-output-paths.d.ts +0 -52
- package/dist/selected-output-paths.js +0 -366
- package/dist/selected-output-paths.js.map +0 -1
- package/dist/serve-exposure.d.ts +0 -62
- package/dist/serve-exposure.js +0 -129
- package/dist/serve-exposure.js.map +0 -1
- package/dist/serve-http.js +0 -45
- package/dist/serve-http.js.map +0 -1
- package/dist/serve-tunnel.js +0 -113
- package/dist/serve-tunnel.js.map +0 -1
- package/dist/shared-world-lab.d.ts +0 -269
- package/dist/shared-world-lab.js +0 -1422
- package/dist/shared-world-lab.js.map +0 -1
- package/dist/source-archive.d.ts +0 -82
- package/dist/source-archive.js +0 -408
- package/dist/source-archive.js.map +0 -1
- package/dist/stats.d.ts +0 -82
- package/dist/stats.js +0 -219
- package/dist/stats.js.map +0 -1
- package/dist/stop-conditions.d.ts +0 -39
- package/dist/stop-conditions.js +0 -66
- package/dist/stop-conditions.js.map +0 -1
- package/dist/study-analysis-codex-config.d.ts +0 -11
- package/dist/study-analysis-codex-config.js +0 -34
- package/dist/study-analysis-codex-config.js.map +0 -1
- package/dist/study-analysis-engine.d.ts +0 -47
- package/dist/study-analysis-engine.js +0 -327
- package/dist/study-analysis-engine.js.map +0 -1
- package/dist/study-analysis-evidence.d.ts +0 -27
- package/dist/study-analysis-evidence.js +0 -660
- package/dist/study-analysis-evidence.js.map +0 -1
- package/dist/study-analysis-job.d.ts +0 -97
- package/dist/study-analysis-job.js +0 -214
- package/dist/study-analysis-job.js.map +0 -1
- package/dist/study-analysis-provider.d.ts +0 -40
- package/dist/study-analysis-provider.js +0 -170
- package/dist/study-analysis-provider.js.map +0 -1
- package/dist/study-analysis-service.d.ts +0 -59
- package/dist/study-analysis-service.js +0 -257
- package/dist/study-analysis-service.js.map +0 -1
- package/dist/study-analysis-sharing.d.ts +0 -11
- package/dist/study-analysis-sharing.js +0 -35
- package/dist/study-analysis-sharing.js.map +0 -1
- package/dist/study-analysis-store.d.ts +0 -47
- package/dist/study-analysis-store.js +0 -493
- package/dist/study-analysis-store.js.map +0 -1
- package/dist/study-analysis-validation.d.ts +0 -618
- package/dist/study-analysis-validation.js +0 -384
- package/dist/study-analysis-validation.js.map +0 -1
- package/dist/study-analysis.d.ts +0 -206
- package/dist/study-analysis.js +0 -4
- package/dist/study-analysis.js.map +0 -1
- package/dist/study-costs.js +0 -114
- package/dist/study-costs.js.map +0 -1
- package/dist/subject-runtime.d.ts +0 -23
- package/dist/subject-runtime.js +0 -70
- package/dist/subject-runtime.js.map +0 -1
- package/dist/tasks.d.ts +0 -90
- package/dist/tasks.js +0 -144
- package/dist/tasks.js.map +0 -1
- package/dist/telemetry.js +0 -324
- package/dist/telemetry.js.map +0 -1
- package/dist/terminal-agent-actor.d.ts +0 -41
- package/dist/terminal-agent-actor.js +0 -25
- package/dist/terminal-agent-actor.js.map +0 -1
- package/dist/terminal-encoding.js +0 -80
- package/dist/terminal-encoding.js.map +0 -1
- package/dist/terminal-node-bootstrap.d.ts +0 -4
- package/dist/terminal-node-bootstrap.js +0 -58
- package/dist/terminal-node-bootstrap.js.map +0 -1
- package/dist/terminal-participant-activity.d.ts +0 -6
- package/dist/terminal-participant-activity.js +0 -34
- package/dist/terminal-participant-activity.js.map +0 -1
- package/dist/terminal-runtime-auth.d.ts +0 -13
- package/dist/terminal-runtime-auth.js +0 -24
- package/dist/terminal-runtime-auth.js.map +0 -1
- package/dist/terminal-runtime.d.ts +0 -16
- package/dist/terminal-runtime.js +0 -42
- package/dist/terminal-runtime.js.map +0 -1
- package/dist/terminal-token-usage.d.ts +0 -15
- package/dist/terminal-token-usage.js +0 -94
- package/dist/terminal-token-usage.js.map +0 -1
- package/dist/tui-actions.d.ts +0 -39
- package/dist/tui-actions.js +0 -178
- package/dist/tui-actions.js.map +0 -1
- package/dist/tui-contract.d.ts +0 -141
- package/dist/tui-contract.js +0 -54
- package/dist/tui-contract.js.map +0 -1
- package/dist/tui-launch.js +0 -167
- package/dist/tui-launch.js.map +0 -1
- package/dist/tui-project.d.ts +0 -9
- package/dist/tui-project.js +0 -18
- package/dist/tui-project.js.map +0 -1
- package/docs/architecture/examples/state-driven-local-app/README.md +0 -80
- package/docs/architecture/examples/state-driven-local-app/app.mjs +0 -48
- package/docs/architecture/examples/state-driven-local-app/runner.mjs +0 -105
- package/docs/architecture/local-codex-tui-actor.md +0 -213
- package/docs/architecture/oss-lab-poc.md +0 -250
- package/docs/architecture/runtime-broker-core.md +0 -30
- package/docs/release/0.100.0-local-setup.md +0 -31
- package/docs/release/0.100.1-participant-continuity.md +0 -20
- package/docs/release/0.101.0-codex-ui-tools.md +0 -28
- package/docs/release/0.102.0-participant-media.md +0 -43
- package/docs/release/0.103.0-desktop-recording.md +0 -29
- package/docs/release/0.103.1-analysis-capture-allocation.md +0 -18
- package/docs/release/0.103.2-analysis-ending-context.md +0 -21
- package/docs/release/0.104.0-local-captured-inboxes.md +0 -29
- package/docs/release/0.104.1-recording-startup.md +0 -24
- package/docs/release/0.104.2-recording-timestamps.md +0 -32
- package/docs/release/0.104.3-local-smtp-catch.md +0 -15
- package/docs/release/0.20.0-external-public-shared-world.md +0 -43
- package/docs/release/0.84.0-redacted-evidence.md +0 -42
- package/docs/release/0.84.1-portable-feedback.md +0 -20
- package/docs/release/0.85.0-observer-review.md +0 -56
- package/docs/release/0.85.1-observer-continuity.md +0 -20
- package/docs/release/0.86.0-participant-evidence.md +0 -50
- package/docs/release/0.86.1-task-preflight-saved-recordings.md +0 -40
- package/docs/release/0.87.0-participant-endings-and-phone-review.md +0 -64
- package/docs/release/0.88.0-study-diagnostics.md +0 -43
- package/docs/release/0.88.1-completion-evidence-and-local-app.md +0 -79
- package/docs/release/0.88.2-sequential-study-budgets.md +0 -57
- package/docs/release/0.89.0-study-findings.md +0 -79
- package/docs/release/0.89.1-analysis-finished-notice.md +0 -24
- package/docs/release/0.90.0-automatic-analysis.md +0 -21
- package/docs/release/0.91.0-analysis-quality-and-defaults.md +0 -33
- package/docs/release/0.91.1-study-review-polish.md +0 -28
- package/docs/release/0.92.0-grid-playback.md +0 -22
- package/docs/release/0.93.0-global-playback.md +0 -26
- package/docs/release/0.93.1-observer-review-controls.md +0 -24
- package/docs/release/0.94.0-reliability.md +0 -48
- package/docs/release/0.95.0-connections-setup.md +0 -38
- package/docs/release/0.96.0-real-email-receiving.md +0 -47
- package/docs/release/0.96.1-browser-navigation.md +0 -22
- package/docs/release/0.97.0-codex-account-analysis.md +0 -45
- package/docs/release/0.98.0-local-browser-studies.md +0 -31
- package/docs/release/0.99.0-local-browser-mac.md +0 -34
- package/docs/release/0.99.1-action-recovery.md +0 -19
- /package/dist/{agent-session.d.ts → actors/agent-session.d.ts} +0 -0
- /package/dist/{cua-executor-error.d.ts → actors/computer-use/executor-error.d.ts} +0 -0
- /package/dist/{cua-speech.d.ts → actors/computer-use/speech.d.ts} +0 -0
- /package/dist/{actor-goal-source.d.ts → actors/goal-source.d.ts} +0 -0
- /package/dist/{output-token-limit.d.ts → actors/output-token-limit.d.ts} +0 -0
- /package/dist/{reasoning-effort.d.ts → actors/reasoning-effort.d.ts} +0 -0
- /package/dist/{secret-prompt.d.ts → cli/secret-prompt.d.ts} +0 -0
- /package/dist/{telemetry.d.ts → cli/telemetry.d.ts} +0 -0
- /package/dist/{browser-evidence-hygiene.d.ts → evidence/browser-hygiene.d.ts} +0 -0
- /package/dist/{serve-http.d.ts → observer/http.d.ts} +0 -0
- /package/dist/{observer-library.d.ts → observer/library.d.ts} +0 -0
- /package/dist/{listen.d.ts → observer/listen.d.ts} +0 -0
- /package/dist/{observer-static.d.ts → observer/static.d.ts} +0 -0
- /package/dist/{serve-tunnel.d.ts → observer/tunnel.d.ts} +0 -0
- /package/dist/{terminal-encoding.d.ts → routes/terminal/encoding.d.ts} +0 -0
- /package/dist/{concurrency.d.ts → run/concurrency.d.ts} +0 -0
- /package/dist/{study-costs.d.ts → run/costs.d.ts} +0 -0
- /package/dist/{run-narration-secrets.d.ts → run/transient-comms-secrets.d.ts} +0 -0
- /package/dist/{tui-launch.d.ts → tui/launch.d.ts} +0 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// Sandbox receipts for `humanish lab preflight`. A probe has no run directory, so it journals its
|
|
2
|
+
// sandbox under .humanish/preflight/<probe-id>/ before any work runs in it. A confirmed kill
|
|
3
|
+
// removes the journal. A journal that stays means the probe's sandbox may still be running, and
|
|
4
|
+
// `humanish reclaim --preflight` kills it by the recorded id once it is safe to.
|
|
5
|
+
import { randomBytes } from "node:crypto";
|
|
6
|
+
import { existsSync, readFileSync, readlinkSync } from "node:fs";
|
|
7
|
+
import { readdir, rmdir, unlink } from "node:fs/promises";
|
|
8
|
+
import { hostname } from "node:os";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
import { parseSandboxReceipts, SANDBOX_RECEIPTS_ARTIFACT } from "./sandbox-receipts.js";
|
|
11
|
+
import { assertPreparedSelectedOutputDirectory, bindExistingManagedHumanishOutputDirectory, prepareManagedHumanishOutputDirectory, readContainedRegularFile, writeContainedOutputFile, } from "./contained-output.js";
|
|
12
|
+
const PREFLIGHT_DIR = "preflight";
|
|
13
|
+
// Written when the probe finished without confirming its kill: the owner no longer holds the
|
|
14
|
+
// sandbox, so reclaim may act even while the owning process lives on.
|
|
15
|
+
const ABANDONED_MARKER = "abandoned";
|
|
16
|
+
const OWNER_FILE = "owner.json";
|
|
17
|
+
const JOURNAL_NAME = /^preflight-\d+-[a-z0-9-]+$/;
|
|
18
|
+
function ownerContext() {
|
|
19
|
+
let pidNamespace;
|
|
20
|
+
try {
|
|
21
|
+
pidNamespace = readlinkSync("/proc/self/ns/pid");
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// No procfs: this platform has no pid namespaces to tell apart.
|
|
25
|
+
}
|
|
26
|
+
return { hostname: hostname(), ...(pidNamespace === undefined ? {} : { pidNamespace }) };
|
|
27
|
+
}
|
|
28
|
+
/** The process's start ticks; null when procfs says it is gone; undefined without procfs. */
|
|
29
|
+
function startTicks(pid) {
|
|
30
|
+
if (!existsSync("/proc/self/stat"))
|
|
31
|
+
return undefined;
|
|
32
|
+
try {
|
|
33
|
+
const stat = readFileSync(`/proc/${pid}/stat`, "utf8");
|
|
34
|
+
// Field 22; the command name before it is parenthesized and may contain spaces.
|
|
35
|
+
return stat.slice(stat.lastIndexOf(")") + 2).split(" ")[19] ?? null;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** Create this process's journal directory for one probe with the given lease. */
|
|
42
|
+
export async function openPreflightJournal(cwd, leaseMs) {
|
|
43
|
+
const stamp = new Date().toISOString().replace(/[:.]/g, "-").toLowerCase();
|
|
44
|
+
const id = `preflight-${process.pid}-${stamp}-${randomBytes(4).toString("hex")}`;
|
|
45
|
+
const root = await prepareManagedHumanishOutputDirectory(cwd, PREFLIGHT_DIR, id);
|
|
46
|
+
const ticks = startTicks(process.pid);
|
|
47
|
+
const owner = {
|
|
48
|
+
...ownerContext(),
|
|
49
|
+
pid: process.pid,
|
|
50
|
+
...(typeof ticks === "string" ? { startTicks: ticks } : {}),
|
|
51
|
+
createdAt: new Date().toISOString(),
|
|
52
|
+
leaseMs,
|
|
53
|
+
};
|
|
54
|
+
await writeContainedOutputFile(root, OWNER_FILE, `${JSON.stringify(owner)}\n`, "utf8");
|
|
55
|
+
return { id, root, owner };
|
|
56
|
+
}
|
|
57
|
+
function parseOwner(bytes) {
|
|
58
|
+
if (bytes === null)
|
|
59
|
+
return undefined;
|
|
60
|
+
try {
|
|
61
|
+
const value = JSON.parse(bytes.toString("utf8"));
|
|
62
|
+
if (typeof value.hostname !== "string" ||
|
|
63
|
+
typeof value.pid !== "number" ||
|
|
64
|
+
typeof value.createdAt !== "string" ||
|
|
65
|
+
typeof value.leaseMs !== "number")
|
|
66
|
+
return undefined;
|
|
67
|
+
return {
|
|
68
|
+
hostname: value.hostname,
|
|
69
|
+
...(typeof value.pidNamespace === "string" ? { pidNamespace: value.pidNamespace } : {}),
|
|
70
|
+
pid: value.pid,
|
|
71
|
+
...(typeof value.startTicks === "string" ? { startTicks: value.startTicks } : {}),
|
|
72
|
+
createdAt: value.createdAt,
|
|
73
|
+
leaseMs: value.leaseMs,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** Every probe journal left under .humanish/preflight, oldest first. */
|
|
81
|
+
export async function listPreflightJournals(cwd) {
|
|
82
|
+
const parent = await bindExistingManagedHumanishOutputDirectory(cwd, PREFLIGHT_DIR);
|
|
83
|
+
if (!parent)
|
|
84
|
+
return [];
|
|
85
|
+
const journals = [];
|
|
86
|
+
const entries = await readdir(parent.physicalPath, { withFileTypes: true });
|
|
87
|
+
for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
88
|
+
if (!entry.isDirectory() || !JOURNAL_NAME.test(entry.name))
|
|
89
|
+
continue;
|
|
90
|
+
const root = await bindExistingManagedHumanishOutputDirectory(cwd, PREFLIGHT_DIR, entry.name);
|
|
91
|
+
if (!root)
|
|
92
|
+
continue;
|
|
93
|
+
const owner = parseOwner(await readContainedRegularFile(root, OWNER_FILE));
|
|
94
|
+
journals.push({ id: entry.name, root, ...(owner === undefined ? {} : { owner }) });
|
|
95
|
+
}
|
|
96
|
+
return journals;
|
|
97
|
+
}
|
|
98
|
+
/** Hand a journal over to reclaim: its probe finished without confirming the kill. */
|
|
99
|
+
export async function abandonPreflightJournal(journal) {
|
|
100
|
+
await writeContainedOutputFile(journal.root, ABANDONED_MARKER, "", "utf8");
|
|
101
|
+
}
|
|
102
|
+
/** When the journal's sandboxes are gone by their own timeout, if that can be known. */
|
|
103
|
+
function leaseEndsAt(journal, receipts) {
|
|
104
|
+
const parsed = receipts === null ? [] : parseSandboxReceipts(receipts);
|
|
105
|
+
if (parsed.length > 0) {
|
|
106
|
+
const ends = parsed.map((receipt) => receipt.timeoutMs === undefined ? Number.NaN : Date.parse(receipt.at) + receipt.timeoutMs);
|
|
107
|
+
if (ends.every(Number.isFinite))
|
|
108
|
+
return Math.max(...ends);
|
|
109
|
+
}
|
|
110
|
+
if (journal.owner === undefined)
|
|
111
|
+
return undefined;
|
|
112
|
+
const created = Date.parse(journal.owner.createdAt);
|
|
113
|
+
return Number.isFinite(created) ? created + journal.owner.leaseMs : undefined;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Whether reclaim may kill a journal's sandboxes: the journal was abandoned, its lease has fully
|
|
117
|
+
* elapsed, or its owner ran in this host and pid namespace and is gone (or its pid now belongs to
|
|
118
|
+
* another process). Anything else may be a live probe, and the reason says why it was left.
|
|
119
|
+
*/
|
|
120
|
+
export async function preflightReclaimDecision(journal, nowMs) {
|
|
121
|
+
if ((await readContainedRegularFile(journal.root, ABANDONED_MARKER)) !== null)
|
|
122
|
+
return { reclaim: true };
|
|
123
|
+
const receipts = await readContainedRegularFile(journal.root, SANDBOX_RECEIPTS_ARTIFACT);
|
|
124
|
+
const endsAt = leaseEndsAt(journal, receipts === null ? null : receipts.toString("utf8"));
|
|
125
|
+
if (endsAt !== undefined && nowMs > endsAt)
|
|
126
|
+
return { reclaim: true };
|
|
127
|
+
const until = endsAt === undefined ? "" : `; its lease ends at ${new Date(endsAt).toISOString()}`;
|
|
128
|
+
const owner = journal.owner;
|
|
129
|
+
if (owner === undefined)
|
|
130
|
+
return { reclaim: false, reason: `its owner record is missing or unreadable${until}` };
|
|
131
|
+
const here = ownerContext();
|
|
132
|
+
if (owner.hostname !== here.hostname || owner.pidNamespace !== here.pidNamespace)
|
|
133
|
+
return {
|
|
134
|
+
reclaim: false,
|
|
135
|
+
reason: `it was opened on host ${owner.hostname} in another host or pid namespace, where this process cannot see whether it is still running${until}`,
|
|
136
|
+
};
|
|
137
|
+
const running = `process ${owner.pid} is still running${until}`;
|
|
138
|
+
if (owner.pid === process.pid)
|
|
139
|
+
return { reclaim: false, reason: running };
|
|
140
|
+
const ticks = startTicks(owner.pid);
|
|
141
|
+
if (ticks === null)
|
|
142
|
+
return { reclaim: true };
|
|
143
|
+
if (typeof ticks === "string") {
|
|
144
|
+
// The pid now belongs to a different process: the owner is gone.
|
|
145
|
+
return owner.startTicks !== undefined && ticks !== owner.startTicks
|
|
146
|
+
? { reclaim: true }
|
|
147
|
+
: { reclaim: false, reason: running };
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
process.kill(owner.pid, 0);
|
|
151
|
+
return { reclaim: false, reason: running };
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
// EPERM: the process exists but belongs to someone else.
|
|
155
|
+
return error.code === "EPERM"
|
|
156
|
+
? { reclaim: false, reason: running }
|
|
157
|
+
: { reclaim: true };
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Remove a journal whose sandbox is confirmed gone. Only the files humanish writes there and the
|
|
162
|
+
* named files are removed; a directory holding anything else stays.
|
|
163
|
+
*/
|
|
164
|
+
export async function discardPreflightJournal(journal, alsoRemove = []) {
|
|
165
|
+
await assertPreparedSelectedOutputDirectory(journal.root);
|
|
166
|
+
for (const name of [SANDBOX_RECEIPTS_ARTIFACT, ABANDONED_MARKER, OWNER_FILE, ...alsoRemove]) {
|
|
167
|
+
await unlink(path.join(journal.root.physicalPath, name)).catch((error) => {
|
|
168
|
+
if (error.code !== "ENOENT")
|
|
169
|
+
throw error;
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
await rmdir(journal.root.physicalPath);
|
|
173
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type { ActorTokenUsage } from "../actors/contract.js";
|
|
2
|
+
export declare const PRICING_SCHEMA = "humanish.pricing.v1";
|
|
3
|
+
export declare const ACTOR_ESTIMATED_COST_SCHEMA = "humanish.actor-estimated-cost.v1";
|
|
4
|
+
export interface ModelRate {
|
|
5
|
+
/** USD per input token (the per-1M equivalent is noted in the comment beside each entry). */
|
|
6
|
+
inputUsdPerToken: number;
|
|
7
|
+
/** USD per output token. */
|
|
8
|
+
outputUsdPerToken: number;
|
|
9
|
+
/** USD per input token served from the provider's prompt cache, when the provider bills those at
|
|
10
|
+
* a reduced rate. Optional: absent means we do not model a discount and every input token is
|
|
11
|
+
* billed at `inputUsdPerToken`. */
|
|
12
|
+
cachedInputUsdPerToken?: number;
|
|
13
|
+
/** USD per input token newly WRITTEN to the provider's prompt cache, when the provider bills
|
|
14
|
+
* writes (OpenAI: GPT-5.6+ bills `cache_write_tokens` at 1.25x the uncached input rate, as the
|
|
15
|
+
* TOTAL rate for those tokens — not an extra charge on top). Absent = writes are free (every
|
|
16
|
+
* pre-5.6 model) and any reported write tokens price at the plain input rate. */
|
|
17
|
+
cacheWriteUsdPerToken?: number;
|
|
18
|
+
/** Long-context tier, when the provider re-prices the WHOLE request past an input-size
|
|
19
|
+
* threshold (OpenAI GPT-5.6: >272K input tokens => 2x input-side, 1.5x output, full request).
|
|
20
|
+
* Priced exactly only when the usage carries per-request `turns` records; totals alone cannot
|
|
21
|
+
* say which requests crossed, so without turns the estimate stays on the short-context rate,
|
|
22
|
+
* which under-estimates a request that crossed. */
|
|
23
|
+
longContext?: {
|
|
24
|
+
thresholdInputTokens: number;
|
|
25
|
+
inputMultiplier: number;
|
|
26
|
+
outputMultiplier: number;
|
|
27
|
+
};
|
|
28
|
+
/** "YYYY-MM-DD" the entry was last checked against `source`. */
|
|
29
|
+
asOf: string;
|
|
30
|
+
/** Public pricing page the number came from (a comment/URL, never a secret). */
|
|
31
|
+
source: string;
|
|
32
|
+
/** true = a stand-in NOT copied from a live sheet; the estimate carries this flag so a
|
|
33
|
+
* placeholder rate is never mistaken for a confirmed one. */
|
|
34
|
+
placeholder?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface DesktopRate {
|
|
37
|
+
usdPerMinute: number;
|
|
38
|
+
asOf: string;
|
|
39
|
+
source: string;
|
|
40
|
+
placeholder?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/** Resource quantities reported by the owned E2B allocation, not its template label. */
|
|
43
|
+
export interface DesktopResources {
|
|
44
|
+
cpuCount: number;
|
|
45
|
+
/** E2B's `memoryMB` field is in MiB; normalize the unit before pricing GiB. */
|
|
46
|
+
memoryMiB: number;
|
|
47
|
+
}
|
|
48
|
+
export interface DesktopResourceRate {
|
|
49
|
+
usdPerCpuSecond: number;
|
|
50
|
+
usdPerGiBSecond: number;
|
|
51
|
+
asOf: string;
|
|
52
|
+
source: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The token-derived cost ESTIMATE for one actor lane. `estimatedCostUsd: null` = DECLARED ABSENT
|
|
56
|
+
* (unknown rate or no token usage) — never coerced to 0. A non-null figure ALWAYS carries its
|
|
57
|
+
* pricing provenance (`ratesAsOf` + `source`) so the mechanism (a rate-table multiply) matches
|
|
58
|
+
* the claim (an estimate, not a charge). Defined here so the rate table and the field that
|
|
59
|
+
* consumes it live together; `ActorTrace` imports it type-only.
|
|
60
|
+
*/
|
|
61
|
+
export interface ActorEstimatedCost {
|
|
62
|
+
schema: typeof ACTOR_ESTIMATED_COST_SCHEMA;
|
|
63
|
+
/** null = declared absent (no rate for the model / no token usage). */
|
|
64
|
+
estimatedCostUsd: number | null;
|
|
65
|
+
reason?: "no_rate_for_model" | "no_token_usage" | "account_billing_unknown";
|
|
66
|
+
/** Pricing provenance date; null iff estimatedCostUsd is null. */
|
|
67
|
+
ratesAsOf: string | null;
|
|
68
|
+
/** The pricing-page URL/comment that produced the rate. */
|
|
69
|
+
source?: string;
|
|
70
|
+
/** The model id the estimate was keyed on. */
|
|
71
|
+
modelId?: string;
|
|
72
|
+
/** true when the rate is a stand-in, not a live sheet. */
|
|
73
|
+
placeholder?: boolean;
|
|
74
|
+
breakdown?: {
|
|
75
|
+
inputUsd: number;
|
|
76
|
+
outputUsd: number;
|
|
77
|
+
inputTokens: number;
|
|
78
|
+
outputTokens: number;
|
|
79
|
+
/** Of `inputTokens`, how many were billed at the reduced cached rate. Present only when the
|
|
80
|
+
* provider reported cache hits AND the rate sheet models a cached rate. */
|
|
81
|
+
cachedInputTokens?: number;
|
|
82
|
+
/** Of `inputTokens`, how many were billed at the cache-WRITE rate (OpenAI 5.6+). */
|
|
83
|
+
cacheWriteInputTokens?: number;
|
|
84
|
+
/** How many requests crossed the long-context threshold and were re-tiered. Present only
|
|
85
|
+
* when per-request `turns` records made exact tiering possible. */
|
|
86
|
+
longContextTurns?: number;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/** The desktop-minute cost ESTIMATE (host-side create->teardown span * a per-minute rate). Same
|
|
90
|
+
* null-discipline as ActorEstimatedCost: `estimatedCostUsd: null` = not measured (no duration). */
|
|
91
|
+
export interface DesktopCostEstimate {
|
|
92
|
+
estimatedCostUsd: number | null;
|
|
93
|
+
reason?: "no_duration" | "no_desktop_resources" | "no_rate_for_desktop";
|
|
94
|
+
ratesAsOf: string | null;
|
|
95
|
+
source?: string;
|
|
96
|
+
/** The billed minutes the estimate was keyed on; null when no duration was measured. */
|
|
97
|
+
minutes: number | null;
|
|
98
|
+
placeholder?: boolean;
|
|
99
|
+
resources?: DesktopResources;
|
|
100
|
+
usdPerSecond?: number;
|
|
101
|
+
}
|
|
102
|
+
export declare const MODEL_RATES: Record<string, ModelRate>;
|
|
103
|
+
export declare const DESKTOP_RATE: DesktopRate;
|
|
104
|
+
export declare function isDesktopResources(value: unknown): value is DesktopResources;
|
|
105
|
+
/** Price one observed allocation. Missing quantities/rates stay unknown, never a stock guess. */
|
|
106
|
+
export declare function estimateAllocatedDesktopCost(minutes: number | undefined, resources: DesktopResources | undefined, rate?: DesktopResourceRate): DesktopCostEstimate;
|
|
107
|
+
/** Round a USD figure to 6 decimals so a float-accumulated total never carries spurious
|
|
108
|
+
* precision. */
|
|
109
|
+
export declare function round6(n: number): number;
|
|
110
|
+
/**
|
|
111
|
+
* Estimate one actor lane's model-token cost from its trace tokenUsage + model id. Deterministic;
|
|
112
|
+
* the rate table is injectable (tests pass a fake sheet). Returns a DECLARED-ABSENT estimate
|
|
113
|
+
* (estimatedCostUsd: null + a reason) for a missing rate or missing usage — never a guessed cost.
|
|
114
|
+
*/
|
|
115
|
+
export declare function estimateActorCostForExecution(usage: ActorTokenUsage | undefined, modelId: string | undefined, profile?: {
|
|
116
|
+
billing?: unknown;
|
|
117
|
+
}): ActorEstimatedCost;
|
|
118
|
+
export declare function estimateActorCost(tokenUsage: ActorTokenUsage | undefined, modelId: string | undefined, rates?: Record<string, ModelRate>): ActorEstimatedCost;
|
|
119
|
+
/**
|
|
120
|
+
* Estimate the E2B desktop-minute cost from a host-side create->teardown span (minutes). The rate
|
|
121
|
+
* is injectable. Returns a DECLARED-ABSENT estimate (null + "no_duration") when no duration was
|
|
122
|
+
* measured (no sandbox / unmeasurable span) — never a guessed 0.
|
|
123
|
+
*/
|
|
124
|
+
export declare function estimateDesktopCost(minutes: number | undefined, rate?: DesktopRate): DesktopCostEstimate;
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
// OPERATOR-EDITABLE ESTIMATES — NOT authoritative prices. Providers change pricing without
|
|
2
|
+
// notice. When they do, update BOTH the number AND the `asOf` date on the affected entry.
|
|
3
|
+
// Every dollar figure humanish derives from this table is surfaced/persisted as an ESTIMATE,
|
|
4
|
+
// labeled "estimated (rates as of <asOf>)", and is NEVER presented as an exact charge.
|
|
5
|
+
//
|
|
6
|
+
// This module is PURE (node builtins only, no deps) and deterministic: the estimator functions take
|
|
7
|
+
// an OPTIONAL injected rate table/rate so tests drive assertions with a fake sheet and never depend
|
|
8
|
+
// on the live numbers below. An UNKNOWN model/desktop rate yields a DECLARED-ABSENT estimate
|
|
9
|
+
// (estimatedCostUsd: null + a reason), NEVER a guessed or silent-zero cost (invariant 5). A bare
|
|
10
|
+
// `costUsd` elsewhere in the contract means a provider actually billed that amount; the
|
|
11
|
+
// token-derived estimate here always lives under `estimatedCostUsd` so a reader can never confuse
|
|
12
|
+
// an estimate for an authoritative charge (invariant 6).
|
|
13
|
+
export const PRICING_SCHEMA = "humanish.pricing.v1";
|
|
14
|
+
export const ACTOR_ESTIMATED_COST_SCHEMA = "humanish.actor-estimated-cost.v1";
|
|
15
|
+
// The gpt-5.6 long-context tier: >272K input tokens re-prices the FULL request at 2x
|
|
16
|
+
// input-side / 1.5x output (developers.openai.com/api/docs/models/gpt-5.6-sol, 2026-08-18).
|
|
17
|
+
const LONG_CONTEXT_TIER_272K = {
|
|
18
|
+
thresholdInputTokens: 272_000,
|
|
19
|
+
inputMultiplier: 2,
|
|
20
|
+
outputMultiplier: 1.5,
|
|
21
|
+
};
|
|
22
|
+
const GPT56_SOURCE = "developers.openai.com/api/docs/pricing (gpt-5.6 family, standard tier)";
|
|
23
|
+
const GPT6_ASTRA_SOURCE = "developers.openai.com/api/docs/pricing (gpt-6-astra, standard tier)";
|
|
24
|
+
// One entry for a model on the gpt-5.6 pricing mechanics (the 5.6 family and gpt-6-astra): rates
|
|
25
|
+
// in USD-per-1M for legibility, converted once. Cache writes bill at 1.25x the uncached input rate
|
|
26
|
+
// (`cache_write_tokens`, prompt-caching guide), and the 272K long-context tier applies. The
|
|
27
|
+
// built-in `computer` tool has no per-call fee on the live sheet.
|
|
28
|
+
function rateWithLongContextTier(inPer1M, cachedPer1M, writePer1M, outPer1M, asOf = "2026-08-18", source = GPT56_SOURCE) {
|
|
29
|
+
return {
|
|
30
|
+
inputUsdPerToken: inPer1M * 1e-6,
|
|
31
|
+
cachedInputUsdPerToken: cachedPer1M * 1e-6,
|
|
32
|
+
cacheWriteUsdPerToken: writePer1M * 1e-6,
|
|
33
|
+
outputUsdPerToken: outPer1M * 1e-6,
|
|
34
|
+
longContext: { ...LONG_CONTEXT_TIER_272K },
|
|
35
|
+
asOf,
|
|
36
|
+
source,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// gpt-5.6-sol promotional rates (live sheet 2026-09-03: $4 / $0.40 cached / $5 write / $20 out,
|
|
40
|
+
// "available at least through November 21, 2026"). Re-verify against the sheet after Nov 21.
|
|
41
|
+
const GPT56_SOL_PROMO_AS_OF = "2026-09-03";
|
|
42
|
+
const GPT6_ASTRA_AS_OF = "2026-09-03";
|
|
43
|
+
// Per-model rates, keyed on the model id that lands in trace.ids.model (lookup is
|
|
44
|
+
// case-insensitive on a trimmed id). An id NOT present here is DECLARED ABSENT, never guessed.
|
|
45
|
+
export const MODEL_RATES = {
|
|
46
|
+
// OpenAI computer-use-preview (the classic CUA model). ~$3 / 1M input, ~$12 / 1M output.
|
|
47
|
+
// source: openai.com/api/pricing (verify — providers change without notice).
|
|
48
|
+
"computer-use-preview": {
|
|
49
|
+
inputUsdPerToken: 3e-6,
|
|
50
|
+
outputUsdPerToken: 12e-6,
|
|
51
|
+
asOf: "2026-08-01",
|
|
52
|
+
source: "openai.com/api/pricing (computer-use-preview)",
|
|
53
|
+
},
|
|
54
|
+
// gpt-5.5: the PREVIOUS-generation CUA default, kept so pinned labs and old bundles still
|
|
55
|
+
// price. Pre-5.6 models bill no cache-write fee (prompt-caching guide) and no long-context
|
|
56
|
+
// tier was published for it.
|
|
57
|
+
"gpt-5.5": {
|
|
58
|
+
inputUsdPerToken: 5e-6,
|
|
59
|
+
outputUsdPerToken: 30e-6,
|
|
60
|
+
cachedInputUsdPerToken: 0.5e-6,
|
|
61
|
+
asOf: "2026-08-05",
|
|
62
|
+
source: "openrouter.ai/openai/gpt-5.5 (gpt-5.5 no longer on openai.com/api/pricing; see #334)",
|
|
63
|
+
},
|
|
64
|
+
// The gpt-5.6 family (live sheet 2026-08-18, standard tier, short-context base rates;
|
|
65
|
+
// the longContext block prices the >272K re-tier when per-request turns are recorded).
|
|
66
|
+
// sol = flagship (the shipped CUA default), terra = cost-balanced, luna = high-volume,
|
|
67
|
+
// cyber = the Daybreak frontier tier.
|
|
68
|
+
"gpt-5.6-sol": rateWithLongContextTier(4, 0.4, 5, 20, GPT56_SOL_PROMO_AS_OF),
|
|
69
|
+
// "gpt-5.6" is OpenAI's own alias for gpt-5.6-sol (models index); priced identically so a
|
|
70
|
+
// lab configured with the alias never reads as unpriced.
|
|
71
|
+
"gpt-5.6": rateWithLongContextTier(4, 0.4, 5, 20, GPT56_SOL_PROMO_AS_OF),
|
|
72
|
+
"gpt-5.6-terra": rateWithLongContextTier(2, 0.2, 2.5, 12),
|
|
73
|
+
"gpt-5.6-luna": rateWithLongContextTier(0.2, 0.02, 0.25, 1.2),
|
|
74
|
+
"gpt-5.6-cyber": rateWithLongContextTier(12.5, 1.25, 15.625, 75),
|
|
75
|
+
// Daybreak program aliases (blue -> sol, red -> cyber today). OpenAI repoints these as new
|
|
76
|
+
// frontier models ship, so prefer the explicit tier id in labs; the entries exist so a
|
|
77
|
+
// configured alias still prices at what the alias bills TODAY.
|
|
78
|
+
"daybreak-blue-latest": rateWithLongContextTier(4, 0.4, 5, 20, GPT56_SOL_PROMO_AS_OF),
|
|
79
|
+
"daybreak-red-latest": rateWithLongContextTier(12.5, 1.25, 15.625, 75),
|
|
80
|
+
// gpt-6-astra (shipped 2026-09-03; API access announced as rolling out). Same two mechanics
|
|
81
|
+
// as the 5.6 family on the sheet: writes at 1.25x, >272K re-tiers at 2x input-side / 1.5x
|
|
82
|
+
// output ($20 / $2 / $25 / $75 long-context columns). These rates cover explicit lab
|
|
83
|
+
// model choices and the study-analysis default; the computer-use default is separate.
|
|
84
|
+
"gpt-6-astra": rateWithLongContextTier(10, 1, 12.5, 50, GPT6_ASTRA_AS_OF, GPT6_ASTRA_SOURCE),
|
|
85
|
+
};
|
|
86
|
+
// Current public incremental running-compute rates. Subscription fees/credits, negotiated
|
|
87
|
+
// enterprise prices, and unobserved allocation/startup time are outside this estimate.
|
|
88
|
+
const DESKTOP_RESOURCE_RATE = {
|
|
89
|
+
usdPerCpuSecond: 0.000014,
|
|
90
|
+
usdPerGiBSecond: 0.0000045,
|
|
91
|
+
asOf: "2026-09-05",
|
|
92
|
+
// A source label rather than an executable URL; runtime URL redaction protects E2B streams.
|
|
93
|
+
source: "e2b.dev/pricing",
|
|
94
|
+
};
|
|
95
|
+
// Planning assumption behind the public estimateDesktopCost helper: stock desktops observed on
|
|
96
|
+
// 2026-09-05 had 8 vCPU / 8 GiB. This is the largest CPU/RAM combination on that public sheet, not
|
|
97
|
+
// a provider billing ceiling or a claim about custom/enterprise templates. Runtime CUA estimates
|
|
98
|
+
// use observed allocation resources through estimateAllocatedDesktopCost instead of this fallback.
|
|
99
|
+
export const DESKTOP_RATE = {
|
|
100
|
+
usdPerMinute: 0.00888,
|
|
101
|
+
asOf: "2026-09-05",
|
|
102
|
+
source: "e2b.dev/pricing (planning assumption: 8 vCPU / 8 GiB; not an observed allocation)",
|
|
103
|
+
placeholder: true,
|
|
104
|
+
};
|
|
105
|
+
export function isDesktopResources(value) {
|
|
106
|
+
if (value === null || typeof value !== "object")
|
|
107
|
+
return false;
|
|
108
|
+
const resources = value;
|
|
109
|
+
return (Number.isSafeInteger(resources.cpuCount) &&
|
|
110
|
+
resources.cpuCount > 0 &&
|
|
111
|
+
Number.isSafeInteger(resources.memoryMiB) &&
|
|
112
|
+
resources.memoryMiB > 0);
|
|
113
|
+
}
|
|
114
|
+
/** Price one observed allocation. Missing quantities/rates stay unknown, never a stock guess. */
|
|
115
|
+
export function estimateAllocatedDesktopCost(minutes, resources, rate = DESKTOP_RESOURCE_RATE) {
|
|
116
|
+
if (minutes === undefined || !Number.isFinite(minutes) || minutes < 0) {
|
|
117
|
+
return { estimatedCostUsd: null, reason: "no_duration", ratesAsOf: null, minutes: null };
|
|
118
|
+
}
|
|
119
|
+
if (!isDesktopResources(resources)) {
|
|
120
|
+
return {
|
|
121
|
+
estimatedCostUsd: null,
|
|
122
|
+
reason: "no_desktop_resources",
|
|
123
|
+
ratesAsOf: null,
|
|
124
|
+
minutes: round6(minutes),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// The public Hobby/Pro sheet stops at 8 CPU / 8 GiB; larger allocations may have negotiated
|
|
128
|
+
// prices. Retain the resource evidence without extrapolating a standard rate to them.
|
|
129
|
+
if (![1, 2, 4, 6, 8].includes(resources.cpuCount) ||
|
|
130
|
+
resources.memoryMiB < 512 ||
|
|
131
|
+
resources.memoryMiB > 8192 ||
|
|
132
|
+
!Number.isFinite(rate.usdPerCpuSecond) ||
|
|
133
|
+
rate.usdPerCpuSecond < 0 ||
|
|
134
|
+
!Number.isFinite(rate.usdPerGiBSecond) ||
|
|
135
|
+
rate.usdPerGiBSecond < 0) {
|
|
136
|
+
return {
|
|
137
|
+
estimatedCostUsd: null,
|
|
138
|
+
reason: "no_rate_for_desktop",
|
|
139
|
+
ratesAsOf: null,
|
|
140
|
+
minutes: round6(minutes),
|
|
141
|
+
resources,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
const usdPerSecond = resources.cpuCount * rate.usdPerCpuSecond + (resources.memoryMiB / 1024) * rate.usdPerGiBSecond;
|
|
145
|
+
return {
|
|
146
|
+
estimatedCostUsd: round6(minutes * 60 * usdPerSecond),
|
|
147
|
+
ratesAsOf: rate.asOf,
|
|
148
|
+
source: rate.source,
|
|
149
|
+
minutes: round6(minutes),
|
|
150
|
+
resources,
|
|
151
|
+
usdPerSecond,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/** Round a USD figure to 6 decimals so a float-accumulated total never carries spurious
|
|
155
|
+
* precision. */
|
|
156
|
+
export function round6(n) {
|
|
157
|
+
return Math.round(n * 1e6) / 1e6;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Estimate one actor lane's model-token cost from its trace tokenUsage + model id. Deterministic;
|
|
161
|
+
* the rate table is injectable (tests pass a fake sheet). Returns a DECLARED-ABSENT estimate
|
|
162
|
+
* (estimatedCostUsd: null + a reason) for a missing rate or missing usage — never a guessed cost.
|
|
163
|
+
*/
|
|
164
|
+
export function estimateActorCostForExecution(usage, modelId, profile) {
|
|
165
|
+
return profile?.billing === "account-unknown"
|
|
166
|
+
? {
|
|
167
|
+
schema: ACTOR_ESTIMATED_COST_SCHEMA,
|
|
168
|
+
estimatedCostUsd: null,
|
|
169
|
+
ratesAsOf: null,
|
|
170
|
+
reason: "account_billing_unknown",
|
|
171
|
+
...(modelId === undefined ? {} : { modelId }),
|
|
172
|
+
}
|
|
173
|
+
: estimateActorCost(usage, modelId);
|
|
174
|
+
}
|
|
175
|
+
export function estimateActorCost(tokenUsage, modelId, rates = MODEL_RATES) {
|
|
176
|
+
if (!tokenUsage || (tokenUsage.input === undefined && tokenUsage.output === undefined)) {
|
|
177
|
+
return {
|
|
178
|
+
schema: ACTOR_ESTIMATED_COST_SCHEMA,
|
|
179
|
+
estimatedCostUsd: null,
|
|
180
|
+
reason: "no_token_usage",
|
|
181
|
+
ratesAsOf: null,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const rate = modelId ? rates[modelId.trim().toLowerCase()] : undefined;
|
|
185
|
+
if (!rate) {
|
|
186
|
+
return {
|
|
187
|
+
schema: ACTOR_ESTIMATED_COST_SCHEMA,
|
|
188
|
+
estimatedCostUsd: null,
|
|
189
|
+
reason: "no_rate_for_model",
|
|
190
|
+
ratesAsOf: null,
|
|
191
|
+
...(modelId ? { modelId } : {}),
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
const inTok = tokenUsage.input ?? 0;
|
|
195
|
+
const outTok = tokenUsage.output ?? 0;
|
|
196
|
+
// Long-context tiering needs to know each REQUEST's input size (the provider re-prices whole
|
|
197
|
+
// requests past the threshold), so it engages only when per-turn usage records exist AND their
|
|
198
|
+
// input sums to the reported total — a partial turn ledger must not silently price the missing
|
|
199
|
+
// remainder at the wrong tier. Otherwise totals price on the base (short-context) rate, which is
|
|
200
|
+
// the under-estimate direction and never trips a cap early.
|
|
201
|
+
const turns = tokenUsage.turns ?? [];
|
|
202
|
+
const sumOf = (field) => turns.reduce((sum, turn) => sum + (turn[field] ?? 0), 0);
|
|
203
|
+
// The ledger is trusted only when it decomposes the totals EXACTLY — all four sums, not just
|
|
204
|
+
// input/output. A ledger that carries request sizes but not the cache splits would otherwise
|
|
205
|
+
// price every token at the full rate while the session totals sit ignored, overstating spend
|
|
206
|
+
// 3.5-5x and tripping caps early. Inconsistent evidence falls back to the totals path, which
|
|
207
|
+
// honors the declared splits on the base tier.
|
|
208
|
+
const tiered = rate.longContext !== undefined &&
|
|
209
|
+
turns.length > 0 &&
|
|
210
|
+
sumOf("input") === inTok &&
|
|
211
|
+
sumOf("output") === outTok &&
|
|
212
|
+
sumOf("cachedInput") === (tokenUsage.cachedInput ?? 0) &&
|
|
213
|
+
sumOf("cacheWriteInput") === (tokenUsage.cacheWriteInput ?? 0);
|
|
214
|
+
let inputUsd = 0;
|
|
215
|
+
let outputUsd = 0;
|
|
216
|
+
let cachedTotal = 0;
|
|
217
|
+
let writeTotal = 0;
|
|
218
|
+
let longContextTurns = 0;
|
|
219
|
+
// Price one request's usage at one tier. Cached input is billed at a fraction of the full rate,
|
|
220
|
+
// and on a session that threads provider state it is the MAJORITY of input — pricing it at the
|
|
221
|
+
// full rate overstates real spend by up to ~10x. Cache WRITES bill at their own rate (1.25x on
|
|
222
|
+
// OpenAI 5.6+) as the total rate for those tokens; a sheet without a write rate prices writes as
|
|
223
|
+
// plain input (pre-5.6: writes are free-of-extra-fee, i.e. plain input). Every piece is honestly
|
|
224
|
+
// absent: no reported split means no discount and no surcharge assumed.
|
|
225
|
+
const priceRequest = (usage, tierable) => {
|
|
226
|
+
const reqIn = usage.input ?? 0;
|
|
227
|
+
const reqOut = usage.output ?? 0;
|
|
228
|
+
// Tiering applies only to a real per-REQUEST record: session totals crossing the threshold
|
|
229
|
+
// say nothing about any single request, so totals always price on the base tier.
|
|
230
|
+
const long = tierable && rate.longContext !== undefined && reqIn > rate.longContext.thresholdInputTokens;
|
|
231
|
+
const inMul = long ? rate.longContext.inputMultiplier : 1;
|
|
232
|
+
const outMul = long ? rate.longContext.outputMultiplier : 1;
|
|
233
|
+
if (long)
|
|
234
|
+
longContextTurns += 1;
|
|
235
|
+
const cached = rate.cachedInputUsdPerToken === undefined
|
|
236
|
+
? 0
|
|
237
|
+
: Math.min(reqIn, Math.max(0, usage.cachedInput ?? 0));
|
|
238
|
+
const writes = Math.min(reqIn - cached, Math.max(0, usage.cacheWriteInput ?? 0));
|
|
239
|
+
const full = reqIn - cached - writes;
|
|
240
|
+
cachedTotal += cached;
|
|
241
|
+
writeTotal += writes;
|
|
242
|
+
inputUsd +=
|
|
243
|
+
full * rate.inputUsdPerToken * inMul +
|
|
244
|
+
cached * (rate.cachedInputUsdPerToken ?? 0) * inMul +
|
|
245
|
+
writes * (rate.cacheWriteUsdPerToken ?? rate.inputUsdPerToken) * inMul;
|
|
246
|
+
outputUsd += reqOut * rate.outputUsdPerToken * outMul;
|
|
247
|
+
};
|
|
248
|
+
if (tiered) {
|
|
249
|
+
for (const turn of turns)
|
|
250
|
+
priceRequest(turn, true);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
priceRequest({
|
|
254
|
+
input: inTok,
|
|
255
|
+
output: outTok,
|
|
256
|
+
...(tokenUsage.cachedInput === undefined ? {} : { cachedInput: tokenUsage.cachedInput }),
|
|
257
|
+
...(tokenUsage.cacheWriteInput === undefined
|
|
258
|
+
? {}
|
|
259
|
+
: { cacheWriteInput: tokenUsage.cacheWriteInput }),
|
|
260
|
+
}, false);
|
|
261
|
+
}
|
|
262
|
+
inputUsd = round6(inputUsd);
|
|
263
|
+
outputUsd = round6(outputUsd);
|
|
264
|
+
return {
|
|
265
|
+
schema: ACTOR_ESTIMATED_COST_SCHEMA,
|
|
266
|
+
estimatedCostUsd: round6(inputUsd + outputUsd),
|
|
267
|
+
ratesAsOf: rate.asOf,
|
|
268
|
+
source: rate.source,
|
|
269
|
+
...(modelId ? { modelId } : {}),
|
|
270
|
+
...(rate.placeholder ? { placeholder: true } : {}),
|
|
271
|
+
breakdown: {
|
|
272
|
+
inputUsd,
|
|
273
|
+
outputUsd,
|
|
274
|
+
inputTokens: inTok,
|
|
275
|
+
outputTokens: outTok,
|
|
276
|
+
...(cachedTotal > 0 ? { cachedInputTokens: cachedTotal } : {}),
|
|
277
|
+
...(writeTotal > 0 ? { cacheWriteInputTokens: writeTotal } : {}),
|
|
278
|
+
...(longContextTurns > 0 ? { longContextTurns } : {}),
|
|
279
|
+
},
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Estimate the E2B desktop-minute cost from a host-side create->teardown span (minutes). The rate
|
|
284
|
+
* is injectable. Returns a DECLARED-ABSENT estimate (null + "no_duration") when no duration was
|
|
285
|
+
* measured (no sandbox / unmeasurable span) — never a guessed 0.
|
|
286
|
+
*/
|
|
287
|
+
export function estimateDesktopCost(minutes, rate = DESKTOP_RATE) {
|
|
288
|
+
if (minutes === undefined || !Number.isFinite(minutes) || minutes < 0) {
|
|
289
|
+
return { estimatedCostUsd: null, reason: "no_duration", ratesAsOf: null, minutes: null };
|
|
290
|
+
}
|
|
291
|
+
return {
|
|
292
|
+
estimatedCostUsd: round6(minutes * rate.usdPerMinute),
|
|
293
|
+
ratesAsOf: rate.asOf,
|
|
294
|
+
source: rate.source,
|
|
295
|
+
minutes: round6(minutes),
|
|
296
|
+
...(rate.placeholder ? { placeholder: true } : {}),
|
|
297
|
+
};
|
|
298
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type PreparedSelectedOutputDirectory } from "./contained-output.js";
|
|
2
|
+
export declare function implicitProjectDirectoryExists(projectRoot: PreparedSelectedOutputDirectory, relativePath: string): Promise<boolean>;
|
|
3
|
+
export declare function readImplicitProjectFile(projectRoot: PreparedSelectedOutputDirectory, relativePath: string): Promise<string | null>;
|
|
4
|
+
export declare function readPackageName(projectRoot: PreparedSelectedOutputDirectory): Promise<string | null>;
|
|
5
|
+
export declare function validateCwd(cwd: string): Promise<{
|
|
6
|
+
code: "HUMANISH_INVALID_CWD";
|
|
7
|
+
message: string;
|
|
8
|
+
} | null>;
|