humanish 0.106.1 → 0.108.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.
Files changed (668) hide show
  1. package/ARCHITECTURE.md +38 -32
  2. package/CHANGELOG.md +28 -0
  3. package/CONTEXT.md +51 -41
  4. package/README.md +152 -174
  5. package/SECURITY.md +16 -26
  6. package/TELEMETRY.md +8 -6
  7. package/dist/actors/affordance.d.ts +4 -4
  8. package/dist/actors/affordance.js +12 -12
  9. package/dist/actors/agent-session.d.ts +2 -2
  10. package/dist/actors/agent-session.js +7 -7
  11. package/dist/actors/codex/app-server-actor-trace.d.ts +1 -1
  12. package/dist/actors/codex/app-server-actor-trace.js +1 -1
  13. package/dist/actors/codex/app-server-client.js +2 -1
  14. package/dist/actors/codex/app-server-trace.d.ts +0 -1
  15. package/dist/actors/codex/app-server-trace.js +1 -3
  16. package/dist/actors/codex/app-server-ui.js +1 -1
  17. package/dist/actors/codex/app-server.js +2 -1
  18. package/dist/actors/codex/codex-admission.d.ts +91 -0
  19. package/dist/actors/codex/codex-admission.js +150 -0
  20. package/dist/actors/codex/protocol-compat.d.ts +27 -0
  21. package/dist/actors/codex/protocol-compat.js +357 -0
  22. package/dist/actors/codex/protocol-contract.d.ts +61 -0
  23. package/dist/actors/codex/protocol-contract.js +471 -0
  24. package/dist/actors/codex/restricted-executable.d.ts +28 -4
  25. package/dist/actors/codex/restricted-executable.js +104 -29
  26. package/dist/actors/codex/restricted-launch.d.ts +9 -2
  27. package/dist/actors/codex/restricted-launch.js +43 -4
  28. package/dist/actors/codex/restricted-notifications.d.ts +101 -0
  29. package/dist/actors/codex/restricted-notifications.js +277 -0
  30. package/dist/actors/codex/restricted-participant.d.ts +30 -0
  31. package/dist/actors/codex/restricted-participant.js +66 -6
  32. package/dist/actors/codex/restricted-policy.d.ts +11 -3
  33. package/dist/actors/codex/restricted-policy.js +2 -2
  34. package/dist/actors/codex/restricted-session.d.ts +16 -3
  35. package/dist/actors/codex/restricted-session.js +60 -22
  36. package/dist/actors/codex/restricted-transport.d.ts +29 -0
  37. package/dist/actors/codex/restricted-transport.js +139 -27
  38. package/dist/actors/codex/restricted-turn.d.ts +19 -4
  39. package/dist/actors/codex/restricted-turn.js +43 -30
  40. package/dist/actors/computer-use/actor.d.ts +17 -17
  41. package/dist/actors/computer-use/actor.js +6 -6
  42. package/dist/actors/computer-use/admission-limit.d.ts +1 -1
  43. package/dist/actors/computer-use/admission-limit.js +1 -1
  44. package/dist/actors/computer-use/loop/actions.d.ts +3 -3
  45. package/dist/actors/computer-use/loop/actions.js +10 -10
  46. package/dist/actors/computer-use/loop/backstop.d.ts +3 -3
  47. package/dist/actors/computer-use/loop/backstop.js +15 -13
  48. package/dist/actors/computer-use/loop/ending.d.ts +7 -7
  49. package/dist/actors/computer-use/loop/ending.js +9 -9
  50. package/dist/actors/computer-use/loop/observation.d.ts +2 -2
  51. package/dist/actors/computer-use/loop/observation.js +9 -9
  52. package/dist/actors/computer-use/loop/provider-call.d.ts +1 -1
  53. package/dist/actors/computer-use/loop/provider-call.js +1 -1
  54. package/dist/actors/computer-use/loop/session.js +3 -3
  55. package/dist/actors/computer-use/loop/spend.d.ts +2 -2
  56. package/dist/actors/computer-use/loop/spend.js +4 -4
  57. package/dist/actors/computer-use/loop/trace.js +11 -10
  58. package/dist/actors/computer-use/loop/types.d.ts +37 -26
  59. package/dist/actors/computer-use/loop/usage.js +2 -2
  60. package/dist/actors/computer-use/loop.js +4 -4
  61. package/dist/actors/computer-use/openai-context.d.ts +37 -0
  62. package/dist/actors/computer-use/openai-context.js +214 -0
  63. package/dist/actors/computer-use/openai-provider.d.ts +12 -9
  64. package/dist/actors/computer-use/openai-provider.js +47 -36
  65. package/dist/actors/computer-use/openai-requests.d.ts +36 -10
  66. package/dist/actors/computer-use/openai-requests.js +82 -15
  67. package/dist/actors/computer-use/openai-wire.d.ts +19 -7
  68. package/dist/actors/computer-use/openai-wire.js +36 -34
  69. package/dist/actors/contract.d.ts +86 -49
  70. package/dist/actors/contract.js +29 -23
  71. package/dist/actors/local-agent/claude-session.d.ts +1 -1
  72. package/dist/actors/local-agent/claude-session.js +10 -9
  73. package/dist/actors/local-agent/cli.d.ts +8 -6
  74. package/dist/actors/local-agent/cli.js +24 -28
  75. package/dist/actors/local-agent/readiness.d.ts +2 -2
  76. package/dist/actors/local-agent/readiness.js +4 -4
  77. package/dist/actors/reasoning-effort.js +6 -6
  78. package/dist/actors/registry.d.ts +10 -10
  79. package/dist/actors/registry.js +18 -17
  80. package/dist/actors/scripted-browser/actor.d.ts +8 -8
  81. package/dist/actors/scripted-browser/actor.js +16 -16
  82. package/dist/actors/scripted-browser/browser-command.js +1 -1
  83. package/dist/actors/scripted-browser/journey.js +15 -4
  84. package/dist/actors/scripted-browser/steps.js +19 -1
  85. package/dist/actors/scripted-browser/types.d.ts +12 -2
  86. package/dist/actors/stop-conditions.d.ts +1 -1
  87. package/dist/actors/stop-conditions.js +1 -3
  88. package/dist/analysis/automatic-completion.d.ts +13 -8
  89. package/dist/analysis/automatic-completion.js +14 -8
  90. package/dist/analysis/automatic-config.d.ts +1 -1
  91. package/dist/analysis/automatic-config.js +2 -2
  92. package/dist/analysis/automatic.d.ts +10 -4
  93. package/dist/analysis/automatic.js +17 -13
  94. package/dist/analysis/codex-config.d.ts +6 -2
  95. package/dist/analysis/codex-config.js +22 -14
  96. package/dist/analysis/diagnostics.d.ts +23 -0
  97. package/dist/analysis/diagnostics.js +112 -0
  98. package/dist/analysis/evidence-sources.js +2 -2
  99. package/dist/analysis/evidence.js +6 -6
  100. package/dist/analysis/execute.d.ts +7 -1
  101. package/dist/analysis/execute.js +39 -12
  102. package/dist/analysis/job.d.ts +8 -5
  103. package/dist/analysis/job.js +15 -14
  104. package/dist/analysis/load.d.ts +1 -1
  105. package/dist/analysis/load.js +5 -5
  106. package/dist/analysis/provider.d.ts +9 -1
  107. package/dist/analysis/restricted-codex.d.ts +2 -0
  108. package/dist/analysis/restricted-codex.js +10 -1
  109. package/dist/analysis/service.d.ts +2 -0
  110. package/dist/analysis/service.js +35 -16
  111. package/dist/analysis/sharing.d.ts +2 -2
  112. package/dist/analysis/sharing.js +5 -5
  113. package/dist/analysis/store-executions.d.ts +5 -5
  114. package/dist/analysis/store-executions.js +12 -12
  115. package/dist/analysis/store.d.ts +4 -4
  116. package/dist/analysis/store.js +13 -13
  117. package/dist/cli/commands/analysis-signals.d.ts +2 -1
  118. package/dist/cli/commands/analysis-signals.js +4 -1
  119. package/dist/cli/commands/analyze.js +23 -18
  120. package/dist/cli/commands/codex.js +9 -9
  121. package/dist/cli/commands/comms.js +62 -34
  122. package/dist/cli/commands/feedback.js +20 -21
  123. package/dist/cli/commands/lab-format.d.ts +5 -4
  124. package/dist/cli/commands/lab-format.js +35 -23
  125. package/dist/cli/commands/lab-route-computer-use.d.ts +0 -2
  126. package/dist/cli/commands/lab-route-computer-use.js +32 -21
  127. package/dist/cli/commands/lab-route-preview.d.ts +1 -3
  128. package/dist/cli/commands/lab-route-preview.js +7 -7
  129. package/dist/cli/commands/lab-route-run.d.ts +6 -4
  130. package/dist/cli/commands/lab-route-run.js +6 -2
  131. package/dist/cli/commands/lab-route-scripted.d.ts +0 -2
  132. package/dist/cli/commands/lab-route-scripted.js +0 -1
  133. package/dist/cli/commands/lab-route-shared-world.d.ts +0 -2
  134. package/dist/cli/commands/lab-route-shared-world.js +3 -4
  135. package/dist/cli/commands/lab-route-terminal.d.ts +0 -2
  136. package/dist/cli/commands/lab-route-terminal.js +0 -1
  137. package/dist/cli/commands/lab-run.js +84 -54
  138. package/dist/cli/commands/lab-scorer.d.ts +2 -4
  139. package/dist/cli/commands/lab-scorer.js +1 -1
  140. package/dist/cli/commands/migrate.d.ts +4 -0
  141. package/dist/cli/commands/migrate.js +65 -0
  142. package/dist/cli/commands/observe.js +168 -107
  143. package/dist/cli/commands/run-command.d.ts +10 -0
  144. package/dist/cli/commands/run-command.js +85 -0
  145. package/dist/cli/commands/run-signals.d.ts +30 -0
  146. package/dist/cli/commands/run-signals.js +146 -0
  147. package/dist/cli/commands/runs.js +137 -136
  148. package/dist/cli/commands/setup.d.ts +2 -2
  149. package/dist/cli/commands/setup.js +26 -21
  150. package/dist/cli/commands/study.d.ts +3 -0
  151. package/dist/cli/commands/study.js +182 -0
  152. package/dist/cli/commands/tui.d.ts +4 -4
  153. package/dist/cli/commands/tui.js +21 -21
  154. package/dist/cli/commands/watch.js +64 -77
  155. package/dist/cli/deprecations.d.ts +18 -0
  156. package/dist/cli/deprecations.js +48 -0
  157. package/dist/cli/doctor.d.ts +18 -5
  158. package/dist/cli/doctor.js +111 -48
  159. package/dist/cli/first-run-path.d.ts +12 -10
  160. package/dist/cli/first-run-path.js +30 -28
  161. package/dist/cli/io.d.ts +46 -10
  162. package/dist/cli/io.js +109 -30
  163. package/dist/cli/observer-follow.d.ts +2 -2
  164. package/dist/cli/observer-follow.js +5 -6
  165. package/dist/cli/orientation.d.ts +6 -3
  166. package/dist/cli/orientation.js +43 -39
  167. package/dist/cli/product-sentence.d.ts +6 -0
  168. package/dist/cli/product-sentence.js +6 -0
  169. package/dist/cli/program.d.ts +6 -1
  170. package/dist/cli/program.js +112 -43
  171. package/dist/cli/telemetry.d.ts +17 -17
  172. package/dist/cli/telemetry.js +49 -41
  173. package/dist/cli.js +1 -1
  174. package/dist/comms/capture-surface.d.ts +14 -13
  175. package/dist/comms/capture-surface.js +23 -22
  176. package/dist/comms/catch-host.d.ts +8 -8
  177. package/dist/comms/catch-host.js +14 -14
  178. package/dist/comms/connections.js +4 -4
  179. package/dist/comms/email-catch.d.ts +3 -3
  180. package/dist/comms/email-catch.js +8 -8
  181. package/dist/comms/external-evidence.d.ts +27 -0
  182. package/dist/comms/external-evidence.js +93 -0
  183. package/dist/comms/extract.js +2 -2
  184. package/dist/comms/fake-inbox.d.ts +2 -2
  185. package/dist/comms/fake-inbox.js +2 -2
  186. package/dist/comms/lease-store.js +7 -7
  187. package/dist/comms/receiving-render.d.ts +1 -1
  188. package/dist/comms/receiving-render.js +2 -2
  189. package/dist/comms/sandbox-catch-script.d.ts +6 -6
  190. package/dist/comms/sandbox-catch-script.js +6 -6
  191. package/dist/comms/sandbox-catch.d.ts +36 -37
  192. package/dist/comms/sandbox-catch.js +34 -35
  193. package/dist/comms/setup.js +42 -8
  194. package/dist/comms/thread-evidence.d.ts +1 -1
  195. package/dist/comms/thread-evidence.js +6 -6
  196. package/dist/comms/types.d.ts +6 -6
  197. package/dist/comms/types.js +4 -4
  198. package/dist/evidence/browser-hygiene.d.ts +1 -1
  199. package/dist/evidence/browser-hygiene.js +1 -1
  200. package/dist/evidence/frame-signature.d.ts +1 -1
  201. package/dist/evidence/frame-signature.js +4 -4
  202. package/dist/evidence/redaction.d.ts +3 -3
  203. package/dist/evidence/redaction.js +5 -5
  204. package/dist/evidence/secret-scrub.d.ts +9 -0
  205. package/dist/evidence/secret-scrub.js +96 -0
  206. package/dist/feedback/draft.js +41 -85
  207. package/dist/feedback/export-bundle.js +5 -5
  208. package/dist/feedback/export.d.ts +5 -1
  209. package/dist/feedback/export.js +16 -17
  210. package/dist/feedback/feedback.d.ts +3 -3
  211. package/dist/feedback/feedback.js +21 -3
  212. package/dist/guest/chromium-text.js +2 -2
  213. package/dist/guest/desktop-native.d.ts +1 -1
  214. package/dist/guest/runtime.js +1 -1
  215. package/dist/index.d.ts +14 -15
  216. package/dist/index.js +10 -11
  217. package/dist/keys/key-resolution.d.ts +7 -5
  218. package/dist/keys/key-resolution.js +40 -38
  219. package/dist/lab/adapter-extension.d.ts +35 -13
  220. package/dist/lab/adapter-extension.js +50 -134
  221. package/dist/lab/adapter-scorer-loader.d.ts +32 -12
  222. package/dist/lab/adapter-scorer-loader.js +56 -32
  223. package/dist/lab/composition-rules.js +58 -58
  224. package/dist/lab/config.js +85 -43
  225. package/dist/lab/deprecated-fields.d.ts +10 -0
  226. package/dist/lab/deprecated-fields.js +24 -0
  227. package/dist/lab/device-presets.d.ts +10 -10
  228. package/dist/lab/device-presets.js +11 -11
  229. package/dist/lab/discover.d.ts +13 -9
  230. package/dist/lab/discover.js +118 -60
  231. package/dist/lab/doctor.d.ts +53 -11
  232. package/dist/lab/doctor.js +193 -47
  233. package/dist/lab/init-plan.js +1 -3
  234. package/dist/lab/init-templates.js +147 -147
  235. package/dist/lab/init.d.ts +1 -1
  236. package/dist/lab/init.js +41 -9
  237. package/dist/lab/keys.d.ts +2 -0
  238. package/dist/lab/keys.js +43 -9
  239. package/dist/lab/lab-deps.d.ts +80 -0
  240. package/dist/lab/lab-deps.js +4 -0
  241. package/dist/lab/parse/actors.js +17 -16
  242. package/dist/lab/parse/comms.js +8 -7
  243. package/dist/lab/parse/execution.js +15 -14
  244. package/dist/lab/parse/study-v3.d.ts +23 -0
  245. package/dist/lab/parse/study-v3.js +259 -0
  246. package/dist/lab/parse/subject-state.d.ts +7 -7
  247. package/dist/lab/parse/subject-state.js +18 -17
  248. package/dist/lab/parse/subject.js +30 -29
  249. package/dist/lab/parse/values.d.ts +1 -2
  250. package/dist/lab/parse/values.js +3 -6
  251. package/dist/lab/persona-resolve.d.ts +7 -7
  252. package/dist/lab/persona-resolve.js +8 -8
  253. package/dist/lab/persona.js +1 -3
  254. package/dist/lab/plan-base.d.ts +0 -2
  255. package/dist/lab/plan-base.js +6 -4
  256. package/dist/lab/plan-participants.d.ts +7 -7
  257. package/dist/lab/plan-participants.js +2 -2
  258. package/dist/lab/plan-types.d.ts +26 -8
  259. package/dist/lab/plan.d.ts +4 -18
  260. package/dist/lab/plan.js +24 -79
  261. package/dist/lab/preflight-probes.js +11 -11
  262. package/dist/lab/preflight-result.d.ts +2 -1
  263. package/dist/lab/preflight-result.js +5 -6
  264. package/dist/lab/preflight.d.ts +7 -8
  265. package/dist/lab/preflight.js +6 -6
  266. package/dist/lab/requirements.d.ts +20 -0
  267. package/dist/lab/requirements.js +54 -0
  268. package/dist/lab/route-inputs.d.ts +23 -12
  269. package/dist/lab/route-inputs.js +48 -51
  270. package/dist/lab/routing.d.ts +42 -41
  271. package/dist/lab/routing.js +66 -68
  272. package/dist/lab/run-lab-events.d.ts +3 -11
  273. package/dist/lab/run-lab-events.js +2 -16
  274. package/dist/lab/run-lab-homes.d.ts +76 -0
  275. package/dist/lab/run-lab-homes.js +7 -0
  276. package/dist/lab/run-lab-options.d.ts +12 -66
  277. package/dist/lab/run-lab-options.js +58 -285
  278. package/dist/lab/summary.d.ts +15 -9
  279. package/dist/lab/summary.js +24 -17
  280. package/dist/lab/tasks.d.ts +15 -15
  281. package/dist/lab/tasks.js +14 -14
  282. package/dist/lab/types.d.ts +201 -195
  283. package/dist/lab/types.js +2 -0
  284. package/dist/lab/validation.d.ts +21 -21
  285. package/dist/lab/validation.js +61 -59
  286. package/dist/lab/warnings.d.ts +10 -0
  287. package/dist/lab/warnings.js +70 -41
  288. package/dist/library-aliases.d.ts +56 -0
  289. package/dist/library-aliases.js +22 -0
  290. package/dist/observer/artifact.d.ts +2 -2
  291. package/dist/observer/artifact.js +9 -9
  292. package/dist/observer/data.d.ts +6 -6
  293. package/dist/observer/data.js +7 -6
  294. package/dist/observer/exposure.d.ts +1 -1
  295. package/dist/observer/exposure.js +11 -11
  296. package/dist/observer/http.js +1 -1
  297. package/dist/observer/library.d.ts +1 -1
  298. package/dist/observer/library.js +4 -2
  299. package/dist/observer/listen.js +5 -4
  300. package/dist/observer/render.d.ts +1 -1
  301. package/dist/observer/render.js +12 -7
  302. package/dist/observer/run-routes.d.ts +4 -4
  303. package/dist/observer/run-routes.js +6 -6
  304. package/dist/observer/serve.d.ts +17 -0
  305. package/dist/observer/serve.js +41 -6
  306. package/dist/observer/tunnel.js +1 -1
  307. package/dist/observer-app.html +4 -4
  308. package/dist/routes/computer-use/bundle-parts.d.ts +9 -9
  309. package/dist/routes/computer-use/bundle-parts.js +24 -17
  310. package/dist/routes/computer-use/bundle.d.ts +4 -11
  311. package/dist/routes/computer-use/bundle.js +12 -18
  312. package/dist/routes/computer-use/diagnostics.d.ts +1 -1
  313. package/dist/routes/computer-use/diagnostics.js +1 -1
  314. package/dist/routes/computer-use/e2b-desktop/comms.d.ts +11 -11
  315. package/dist/routes/computer-use/e2b-desktop/comms.js +24 -27
  316. package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +2 -2
  317. package/dist/routes/computer-use/e2b-desktop/desktop.js +8 -11
  318. package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +16 -15
  319. package/dist/routes/computer-use/e2b-desktop/fidelity.js +20 -19
  320. package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +3 -3
  321. package/dist/routes/computer-use/e2b-desktop/prepare.js +40 -43
  322. package/dist/routes/computer-use/e2b-desktop/start.d.ts +1 -1
  323. package/dist/routes/computer-use/e2b-desktop/start.js +32 -30
  324. package/dist/routes/computer-use/e2b-desktop/state.d.ts +5 -4
  325. package/dist/routes/computer-use/e2b-desktop/state.js +5 -3
  326. package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +1 -1
  327. package/dist/routes/computer-use/e2b-desktop/teardown.js +33 -20
  328. package/dist/routes/computer-use/external-comms.d.ts +4 -4
  329. package/dist/routes/computer-use/external-comms.js +19 -43
  330. package/dist/routes/computer-use/fanout-bundle.d.ts +3 -3
  331. package/dist/routes/computer-use/fanout-bundle.js +38 -42
  332. package/dist/routes/computer-use/{fanout-lanes.js → fanout-records.js} +33 -28
  333. package/dist/routes/computer-use/in-process-desktop.d.ts +3 -10
  334. package/dist/routes/computer-use/in-process-desktop.js +3 -9
  335. package/dist/routes/computer-use/live-flush.d.ts +7 -5
  336. package/dist/routes/computer-use/live-flush.js +20 -28
  337. package/dist/routes/computer-use/{run-lanes.d.ts → live-phase.d.ts} +4 -2
  338. package/dist/routes/computer-use/{run-lanes.js → live-phase.js} +17 -16
  339. package/dist/routes/computer-use/local-tree-pack.d.ts +3 -3
  340. package/dist/routes/computer-use/local-tree-pack.js +4 -5
  341. package/dist/routes/computer-use/local-vm.d.ts +11 -8
  342. package/dist/routes/computer-use/local-vm.js +40 -67
  343. package/dist/routes/computer-use/participant-desktop.d.ts +8 -23
  344. package/dist/routes/computer-use/participant-desktop.js +5 -25
  345. package/dist/routes/computer-use/{lanes.d.ts → participant-execution.d.ts} +11 -11
  346. package/dist/routes/computer-use/{lanes.js → participant-execution.js} +39 -26
  347. package/dist/routes/computer-use/participant-facts.d.ts +7 -1
  348. package/dist/routes/computer-use/participant-facts.js +12 -1
  349. package/dist/routes/computer-use/participant-model.d.ts +25 -11
  350. package/dist/routes/computer-use/participant-model.js +76 -34
  351. package/dist/routes/computer-use/participant-prompt.d.ts +13 -13
  352. package/dist/routes/computer-use/participant-prompt.js +8 -8
  353. package/dist/routes/computer-use/participant-runs.d.ts +11 -11
  354. package/dist/routes/computer-use/participant-runs.js +18 -18
  355. package/dist/routes/computer-use/plan.d.ts +21 -29
  356. package/dist/routes/computer-use/plan.js +70 -78
  357. package/dist/routes/computer-use/preflight.d.ts +3 -5
  358. package/dist/routes/computer-use/preflight.js +40 -36
  359. package/dist/routes/computer-use/rerun-selection.js +11 -7
  360. package/dist/routes/computer-use/result.d.ts +1 -1
  361. package/dist/routes/computer-use/result.js +48 -38
  362. package/dist/routes/computer-use/route.d.ts +5 -5
  363. package/dist/routes/computer-use/route.js +36 -33
  364. package/dist/routes/computer-use/self-report.d.ts +8 -8
  365. package/dist/routes/computer-use/self-report.js +33 -33
  366. package/dist/routes/computer-use/setup.d.ts +9 -15
  367. package/dist/routes/computer-use/setup.js +106 -83
  368. package/dist/routes/computer-use/single-bundle.d.ts +13 -16
  369. package/dist/routes/computer-use/single-bundle.js +46 -53
  370. package/dist/routes/computer-use/subject-projection.d.ts +6 -8
  371. package/dist/routes/computer-use/subject-projection.js +24 -23
  372. package/dist/routes/computer-use/types.d.ts +195 -238
  373. package/dist/routes/computer-use/types.js +21 -13
  374. package/dist/routes/preview.d.ts +8 -2
  375. package/dist/routes/preview.js +8 -5
  376. package/dist/routes/scripted/bundle.d.ts +5 -8
  377. package/dist/routes/scripted/bundle.js +23 -27
  378. package/dist/routes/scripted/plan.d.ts +6 -8
  379. package/dist/routes/scripted/plan.js +15 -13
  380. package/dist/routes/scripted/result.d.ts +4 -1
  381. package/dist/routes/scripted/result.js +15 -11
  382. package/dist/routes/scripted/route.js +15 -17
  383. package/dist/routes/scripted/scenario.d.ts +1 -1
  384. package/dist/routes/scripted/scenario.js +3 -3
  385. package/dist/routes/scripted/setup.d.ts +3 -2
  386. package/dist/routes/scripted/setup.js +27 -26
  387. package/dist/routes/scripted/subject.d.ts +8 -3
  388. package/dist/routes/scripted/subject.js +10 -6
  389. package/dist/routes/scripted/surface-records.js +4 -4
  390. package/dist/routes/scripted/surface-sessions.d.ts +2 -2
  391. package/dist/routes/scripted/surface-sessions.js +4 -4
  392. package/dist/routes/scripted/types.d.ts +21 -40
  393. package/dist/routes/scripted/types.js +2 -3
  394. package/dist/routes/shared-world/{seat-records.js → bundle-records.js} +17 -16
  395. package/dist/routes/shared-world/bundle.d.ts +7 -7
  396. package/dist/routes/shared-world/bundle.js +60 -62
  397. package/dist/routes/shared-world/checkpoints.d.ts +5 -5
  398. package/dist/routes/shared-world/checkpoints.js +5 -5
  399. package/dist/routes/shared-world/comms.d.ts +8 -7
  400. package/dist/routes/shared-world/comms.js +38 -51
  401. package/dist/routes/shared-world/external-public.d.ts +6 -5
  402. package/dist/routes/shared-world/external-public.js +28 -25
  403. package/dist/routes/shared-world/handoff.d.ts +10 -9
  404. package/dist/routes/shared-world/handoff.js +89 -81
  405. package/dist/routes/shared-world/lobby-code.d.ts +7 -7
  406. package/dist/routes/shared-world/lobby-code.js +22 -22
  407. package/dist/routes/shared-world/{seats.d.ts → participant-specs.d.ts} +15 -12
  408. package/dist/routes/shared-world/{seats.js → participant-specs.js} +65 -63
  409. package/dist/routes/shared-world/plan.d.ts +2 -6
  410. package/dist/routes/shared-world/plan.js +8 -9
  411. package/dist/routes/shared-world/provenance.d.ts +4 -4
  412. package/dist/routes/shared-world/provenance.js +4 -4
  413. package/dist/routes/shared-world/provisioned.d.ts +3 -2
  414. package/dist/routes/shared-world/provisioned.js +55 -48
  415. package/dist/routes/shared-world/result.js +47 -36
  416. package/dist/routes/shared-world/route.js +54 -57
  417. package/dist/routes/shared-world/setup.d.ts +6 -5
  418. package/dist/routes/shared-world/setup.js +16 -18
  419. package/dist/routes/shared-world/types.d.ts +70 -141
  420. package/dist/routes/shared-world/types.js +5 -5
  421. package/dist/routes/terminal/adapter.d.ts +10 -10
  422. package/dist/routes/terminal/adapter.js +32 -129
  423. package/dist/routes/terminal/bundle.d.ts +10 -15
  424. package/dist/routes/terminal/bundle.js +43 -52
  425. package/dist/routes/terminal/credentials.d.ts +4 -4
  426. package/dist/routes/terminal/credentials.js +20 -20
  427. package/dist/routes/terminal/dry-run.d.ts +1 -1
  428. package/dist/routes/terminal/dry-run.js +13 -15
  429. package/dist/routes/terminal/encoding.d.ts +1 -1
  430. package/dist/routes/terminal/encoding.js +4 -4
  431. package/dist/routes/terminal/ledger.d.ts +8 -8
  432. package/dist/routes/terminal/ledger.js +22 -22
  433. package/dist/routes/terminal/live-finish.d.ts +1 -2
  434. package/dist/routes/terminal/live-finish.js +24 -23
  435. package/dist/routes/terminal/live-sandbox.d.ts +3 -2
  436. package/dist/routes/terminal/live-sandbox.js +31 -32
  437. package/dist/routes/terminal/participant-text.d.ts +23 -0
  438. package/dist/routes/terminal/participant-text.js +165 -0
  439. package/dist/routes/terminal/persona.js +1 -1
  440. package/dist/routes/terminal/plan.d.ts +2 -6
  441. package/dist/routes/terminal/plan.js +23 -19
  442. package/dist/routes/terminal/recorder.d.ts +6 -1
  443. package/dist/routes/terminal/recorder.js +12 -4
  444. package/dist/routes/terminal/result.js +12 -12
  445. package/dist/routes/terminal/route.js +30 -31
  446. package/dist/routes/terminal/runtime.d.ts +3 -2
  447. package/dist/routes/terminal/runtime.js +3 -3
  448. package/dist/routes/terminal/sandbox.d.ts +4 -4
  449. package/dist/routes/terminal/sandbox.js +10 -10
  450. package/dist/routes/terminal/session.js +22 -19
  451. package/dist/routes/terminal/token-usage.d.ts +1 -1
  452. package/dist/routes/terminal/token-usage.js +10 -11
  453. package/dist/routes/terminal/trace.d.ts +7 -10
  454. package/dist/routes/terminal/trace.js +11 -66
  455. package/dist/routes/terminal/types.d.ts +104 -114
  456. package/dist/routes/terminal/types.js +12 -7
  457. package/dist/run/active-runs.d.ts +13 -0
  458. package/dist/run/active-runs.js +12 -0
  459. package/dist/run/bundle-shape.d.ts +2 -1
  460. package/dist/run/bundle-shape.js +7 -7
  461. package/dist/run/bundle.d.ts +99 -92
  462. package/dist/run/bundle.js +10 -8
  463. package/dist/run/cost-summary.js +6 -5
  464. package/dist/run/costs.d.ts +6 -6
  465. package/dist/run/costs.js +17 -11
  466. package/dist/run/detail.d.ts +9 -9
  467. package/dist/run/detail.js +10 -10
  468. package/dist/run/dry-run-inputs.js +1 -1
  469. package/dist/run/dry-run.js +23 -30
  470. package/dist/run/{study-files.d.ts → evidence-files.d.ts} +4 -4
  471. package/dist/run/{study-files.js → evidence-files.js} +5 -5
  472. package/dist/run/feedback-shape.js +1 -1
  473. package/dist/run/judge.d.ts +34 -16
  474. package/dist/run/judge.js +41 -14
  475. package/dist/run/locate.d.ts +2 -0
  476. package/dist/run/locate.js +3 -1
  477. package/dist/run/outcomes.d.ts +3 -3
  478. package/dist/run/outcomes.js +3 -3
  479. package/dist/run/participant-records.d.ts +2 -2
  480. package/dist/run/participant-records.js +2 -2
  481. package/dist/run/paths.d.ts +1 -1
  482. package/dist/run/paths.js +2 -2
  483. package/dist/run/pricing.d.ts +30 -15
  484. package/dist/run/pricing.js +49 -30
  485. package/dist/run/projection.d.ts +27 -27
  486. package/dist/run/projection.js +23 -23
  487. package/dist/run/reclaim.d.ts +6 -0
  488. package/dist/run/reclaim.js +15 -5
  489. package/dist/run/results.d.ts +5 -5
  490. package/dist/run/run-index.d.ts +9 -7
  491. package/dist/run/run-index.js +24 -25
  492. package/dist/run/run-not-found.d.ts +5 -0
  493. package/dist/run/run-not-found.js +15 -0
  494. package/dist/run/run.d.ts +7 -4
  495. package/dist/run/run.js +10 -6
  496. package/dist/run/sandbox-receipts.d.ts +5 -5
  497. package/dist/run/sandbox-receipts.js +6 -6
  498. package/dist/run/shared-world-evidence.d.ts +67 -66
  499. package/dist/run/shared-world-evidence.js +4 -4
  500. package/dist/run/shared-world-shape.d.ts +3 -3
  501. package/dist/run/shared-world-shape.js +16 -16
  502. package/dist/run/stats.d.ts +17 -11
  503. package/dist/run/stats.js +124 -66
  504. package/dist/run/status.d.ts +21 -32
  505. package/dist/run/status.js +34 -33
  506. package/dist/run/stored-runs.js +2 -1
  507. package/dist/run/stream-shape.js +1 -1
  508. package/dist/run/streams.d.ts +29 -22
  509. package/dist/run/study-provenance.d.ts +47 -0
  510. package/dist/run/study-provenance.js +63 -0
  511. package/dist/run/study-result.d.ts +16 -0
  512. package/dist/run/study-result.js +9 -0
  513. package/dist/run/terminal-contract.d.ts +5 -5
  514. package/dist/run/terminal-contract.js +4 -4
  515. package/dist/run/text.d.ts +2 -0
  516. package/dist/run/text.js +4 -0
  517. package/dist/run/transient-comms-secrets.d.ts +5 -0
  518. package/dist/run/transient-comms-secrets.js +12 -0
  519. package/dist/run-lab.d.ts +40 -38
  520. package/dist/run-lab.js +42 -40
  521. package/dist/study/convert.d.ts +33 -0
  522. package/dist/study/convert.js +432 -0
  523. package/dist/study/field-paths.d.ts +12 -0
  524. package/dist/study/field-paths.js +126 -0
  525. package/dist/study/files.d.ts +26 -0
  526. package/dist/study/files.js +43 -0
  527. package/dist/study/migrate.d.ts +48 -0
  528. package/dist/study/migrate.js +408 -0
  529. package/dist/study/owned-files.d.ts +38 -0
  530. package/dist/study/owned-files.js +182 -0
  531. package/dist/subject/clone.d.ts +1 -1
  532. package/dist/subject/desktop-cli.d.ts +2 -2
  533. package/dist/subject/desktop-cli.js +3 -3
  534. package/dist/subject/local-tree-archive.d.ts +1 -1
  535. package/dist/subject/local-tree-archive.js +5 -5
  536. package/dist/subject/local-tree.d.ts +3 -3
  537. package/dist/subject/local-tree.js +1 -1
  538. package/dist/subject/node-bootstrap.d.ts +1 -1
  539. package/dist/subject/node-bootstrap.js +4 -4
  540. package/dist/subject/runtime.js +10 -11
  541. package/dist/subject/serve.d.ts +1 -1
  542. package/dist/subject/serve.js +4 -4
  543. package/dist/subject/state.d.ts +1 -1
  544. package/dist/subject/steps.d.ts +8 -8
  545. package/dist/subject/steps.js +7 -7
  546. package/dist/substrates/command-failure.d.ts +3 -3
  547. package/dist/substrates/command-failure.js +3 -3
  548. package/dist/substrates/detached.d.ts +6 -6
  549. package/dist/substrates/detached.js +7 -7
  550. package/dist/substrates/e2b/cdp-probe.d.ts +11 -11
  551. package/dist/substrates/e2b/cdp-probe.js +15 -18
  552. package/dist/substrates/e2b/desktop-browser.d.ts +5 -5
  553. package/dist/substrates/e2b/desktop-browser.js +12 -12
  554. package/dist/substrates/e2b/desktop-cdp.d.ts +15 -15
  555. package/dist/substrates/e2b/desktop-cdp.js +11 -11
  556. package/dist/substrates/e2b/desktop-executor.d.ts +1 -1
  557. package/dist/substrates/e2b/desktop-executor.js +1 -1
  558. package/dist/substrates/e2b/desktop-geometry.d.ts +6 -6
  559. package/dist/substrates/e2b/desktop-geometry.js +9 -9
  560. package/dist/substrates/e2b/desktop-media.d.ts +1 -1
  561. package/dist/substrates/e2b/desktop-media.js +3 -3
  562. package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +3 -3
  563. package/dist/substrates/e2b/desktop-screenshot-cleanup.js +3 -3
  564. package/dist/substrates/e2b/sandbox.d.ts +1 -1
  565. package/dist/substrates/e2b/sandbox.js +2 -2
  566. package/dist/substrates/e2b/sdk.d.ts +11 -11
  567. package/dist/substrates/e2b/sdk.js +8 -8
  568. package/dist/substrates/local/runtime-host.d.ts +2 -0
  569. package/dist/substrates/local/runtime-host.js +6 -0
  570. package/dist/tui/actions.d.ts +8 -6
  571. package/dist/tui/actions.js +31 -22
  572. package/dist/tui/contract.d.ts +16 -16
  573. package/dist/tui/contract.js +10 -10
  574. package/dist/tui/launch.d.ts +4 -4
  575. package/dist/tui/launch.js +18 -19
  576. package/dist/tui/project.js +5 -5
  577. package/dist/tui-app.js +83 -83
  578. package/dist/verify/actor.d.ts +14 -14
  579. package/dist/verify/actor.js +45 -45
  580. package/dist/verify/artifacts.d.ts +3 -3
  581. package/dist/verify/artifacts.js +6 -6
  582. package/dist/verify/context-growth.d.ts +9 -0
  583. package/dist/verify/context-growth.js +62 -0
  584. package/dist/verify/costs.d.ts +7 -7
  585. package/dist/verify/costs.js +9 -9
  586. package/dist/verify/liveness.d.ts +1 -1
  587. package/dist/verify/liveness.js +4 -1
  588. package/dist/verify/rerun.d.ts +1 -1
  589. package/dist/verify/rerun.js +1 -1
  590. package/dist/verify/shared-world-concurrent.d.ts +2 -2
  591. package/dist/verify/shared-world-concurrent.js +79 -76
  592. package/dist/verify/shared-world.d.ts +2 -2
  593. package/dist/verify/shared-world.js +18 -18
  594. package/dist/verify/subject.d.ts +4 -4
  595. package/dist/verify/subject.js +18 -18
  596. package/dist/verify/verify.js +98 -49
  597. package/docs/README.md +26 -33
  598. package/docs/architecture/actor-contract.md +105 -98
  599. package/docs/architecture/desktop-sessions.md +14 -14
  600. package/docs/architecture/external-public-shared-world.md +66 -59
  601. package/docs/architecture/github-feedback-loop.md +1 -4
  602. package/docs/architecture/guest-desktop.md +2 -2
  603. package/docs/architecture/observer.md +37 -37
  604. package/docs/architecture/restricted-codex-analysis.md +70 -30
  605. package/docs/architecture/serve.md +34 -37
  606. package/docs/architecture/state-driven-executor.md +55 -59
  607. package/docs/architecture/task-protocol-support.md +7 -9
  608. package/docs/architecture/{terminal-product-lane.md → terminal-product-route.md} +83 -115
  609. package/docs/contracts/README.md +24 -0
  610. package/docs/contracts/adapter-admission.md +3 -3
  611. package/docs/contracts/adapter-fixtures.md +2 -5
  612. package/docs/contracts/core.md +1 -3
  613. package/docs/contracts/errors.md +62 -0
  614. package/docs/contracts/feedback.md +8 -9
  615. package/docs/contracts/policy.md +7 -12
  616. package/docs/contracts/run-bundle.md +54 -51
  617. package/docs/contracts/schemas.md +505 -390
  618. package/docs/contracts/study-analysis.md +26 -2
  619. package/docs/contracts/study-costs.md +11 -7
  620. package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +1 -1
  621. package/docs/decisions/0002-observer-is-one-self-contained-file.md +2 -2
  622. package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +3 -3
  623. package/docs/decisions/0004-participant-desktops-stay-in-the-route.md +2 -1
  624. package/docs/principles/actor-fidelity.md +4 -4
  625. package/docs/principles/engineering.md +3 -3
  626. package/docs/principles/invariants-and-defaults.md +38 -38
  627. package/docs/principles/self-driving-harness.md +1 -5
  628. package/docs/principles/three-roles.md +1 -1
  629. package/docs/product/automatic-analysis.md +8 -7
  630. package/examples/participant/README.md +5 -5
  631. package/examples/participant/run.mjs +11 -10
  632. package/examples/scorer/README.md +3 -3
  633. package/examples/scorer/run.mjs +11 -12
  634. package/package.json +16 -17
  635. package/skills/humanish/SKILL.md +63 -60
  636. package/skills/humanish/agents/openai.yaml +1 -1
  637. package/AGENTS.md +0 -99
  638. package/CONTRIBUTING.md +0 -148
  639. package/dist/actors/codex/qualified-versions.d.ts +0 -45
  640. package/dist/actors/codex/qualified-versions.js +0 -87
  641. package/dist/cli/commands/lab.d.ts +0 -3
  642. package/dist/cli/commands/lab.js +0 -193
  643. package/dist/deprecated.d.ts +0 -90
  644. package/dist/deprecated.js +0 -106
  645. package/dist/lab/bag-overrides.d.ts +0 -18
  646. package/dist/lab/bag-overrides.js +0 -121
  647. package/dist/observer/static.d.ts +0 -39
  648. package/dist/observer/static.js +0 -369
  649. package/dist/routes/computer-use/legacy-lane-spec.d.ts +0 -62
  650. package/dist/routes/computer-use/legacy-lane-spec.js +0 -39
  651. package/docs/architecture/comms-inbox.md +0 -122
  652. package/docs/architecture/desktop-recording.md +0 -80
  653. package/docs/architecture/local-browser-runtime.md +0 -178
  654. package/docs/architecture/observer-review.md +0 -144
  655. package/docs/architecture/participant-media.md +0 -90
  656. package/docs/architecture/project-layout.md +0 -62
  657. package/docs/architecture/real-email-receiving.md +0 -136
  658. package/docs/assets/humanish-drawdb-hero.png +0 -0
  659. package/docs/assets/humanish-observer-hero.png +0 -0
  660. package/docs/goals/current.md +0 -207
  661. package/docs/product/lobby-trivia-3player-external-public.md +0 -77
  662. package/docs/product/open-source-install-experience.md +0 -240
  663. package/docs/ramp/README.md +0 -294
  664. package/docs/release/open-source-readiness.md +0 -222
  665. package/docs/release/public-readiness-standard.md +0 -210
  666. package/docs/roadmap/world-class-open-source-v0.md +0 -311
  667. /package/dist/routes/computer-use/{fanout-lanes.d.ts → fanout-records.d.ts} +0 -0
  668. /package/dist/routes/shared-world/{seat-records.d.ts → bundle-records.d.ts} +0 -0
package/CONTRIBUTING.md DELETED
@@ -1,148 +0,0 @@
1
- # Contributing
2
-
3
- Thanks for helping make humanish better.
4
-
5
- ## Read these in order
6
-
7
- 1. [README.md](README.md): what humanish does and how a user runs a study.
8
- 2. This file: the ground rules, the commands and what a pull request needs.
9
- 3. [ARCHITECTURE.md](ARCHITECTURE.md): `humanish run <lab>` traced through the code, the code map
10
- and the invariants a change must keep.
11
- 4. [CONTEXT.md](CONTEXT.md): the domain terms and the field spellings that map to them.
12
- 5. [docs/ramp/README.md](docs/ramp/README.md), for depth: current state, how to pick work and the
13
- quality bar.
14
-
15
- [docs/README.md](https://github.com/danielgwilson/humanish/blob/main/docs/README.md) sorts the rest of `docs/` into guides, reference, design records
16
- and history.
17
-
18
- ## Ground Rules
19
-
20
- - Follow [engineering principles](docs/principles/engineering.md): prefer simple,
21
- idiomatic implementations and reuse established components. Validate the changed
22
- behavior and material risks; keep required CI and release gates.
23
- - Keep examples synthetic and public-safe.
24
- - Do not commit `.env*`, `.npmrc`, `.humanish/`, generated run bundles, provider
25
- credentials, private screenshots, raw transcripts, or customer data.
26
- - Prefer small PRs with explicit proof commands.
27
- - Keep a target product's page names, milestones, and vocabulary in adapters.
28
- - For changes to credentials, provider spend, hosted execution or GitHub mutation,
29
- state the relevant authority and failure boundaries. Use dry runs where useful;
30
- they do not establish live behavior.
31
-
32
- ## Local Setup
33
-
34
- Use Node.js 22.19 or newer and pnpm 12; `packageManager` in `package.json` pins the pnpm version.
35
-
36
- ```bash
37
- pnpm install --frozen-lockfile # as CI installs
38
- pnpm vitest run tests/<file> # while editing: one test file, a few seconds
39
- pnpm docs:check # after editing a doc: paths, anchors, symbols, the CLI reference
40
- pnpm format # oxfmt; run before every commit
41
- pnpm release:check # once before pushing: the gate CI's test job runs
42
- ```
43
-
44
- `release:check` runs `pnpm check` (format, lint, knip, the prose and vocabulary caps, typecheck,
45
- the test suites, build and the startup proofs), then `api:proof`, `public-surface:scan`,
46
- `skill:check` and `npm pack --dry-run`. On a 16-core Linux machine it takes about 6 minutes, 4 of
47
- them in `pnpm check`. The test step prints nothing for a few minutes while it runs. `skill:check`
48
- calls `npx skills`, so it needs network access.
49
-
50
- CI (`.github/workflows/ci.yml`) runs six jobs on every pull request and every push to `main`:
51
-
52
- | Job | What it runs |
53
- | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
54
- | `test` (Node 22.19.0 and 24) | `pnpm release:check` |
55
- | `site` | `pnpm docs:check`, then the site's typecheck, `registry:check` and build |
56
- | `observer` | `pnpm build`, the Observer's typecheck and tests, `pnpm browser-control:proof` and the four `observer:*:proof` scripts in Chromium |
57
- | `tui` | The TUI's typecheck and tests |
58
- | `guest-desktop` | Builds the guest image and runs `pnpm guest-desktop:proof`, only when guest files change |
59
- | `secret-scan` | gitleaks over the full git history |
60
-
61
- Two kinds of change need one more step:
62
-
63
- - After changing a CLI option, run `pnpm docs:generate`. `pnpm docs:check` fails on a stale
64
- `site/content/docs/cli.mdx`.
65
- - After changing what `src/index.ts` exports, run `pnpm build`, then `pnpm api:proof --update`, and
66
- review the diff to `tests/golden/public-api.json`. `pnpm api:proof` also runs `examples/` against
67
- the packed package.
68
-
69
- `pnpm format` rewrites files with oxfmt. `pnpm check` fails on unformatted files.
70
- It also holds three counts to caps in package.json: oxlint warnings (`lint`), prose in `src/`
71
- comments (`prose:check`: issue references, `FIX-N` tags, all-caps emphasis), and identifiers in
72
- `src/` outside the exempt contract modules that still say lane, seat, role, sim or study
73
- (`vocabulary:check`). Each check fails when its count rises above the cap and also when it falls
74
- below it, so the PR that reduces a count lowers the cap in the same commit; the failure message
75
- names the flag and the new value. CI's `caps` workflow (`scripts/check-cap-direction.mjs`) also
76
- fails a PR that raises or removes a cap against the base branch, unless the PR has the `raise-cap`
77
- label and a `Cap raise:` line in its body that says why. `pnpm lint` prints the warnings that
78
- already exist, several hundred of them; that is expected. `pnpm knip` fails on unused files,
79
- dependencies and exports, and on any import cycle.
80
-
81
- ## Useful Commands
82
-
83
- ```bash
84
- pnpm humanish --help
85
- pnpm humanish watch --json --no-open
86
- pnpm humanish verify --run latest --json
87
- pnpm pack:dry-run
88
- ```
89
-
90
- ## Make your first change
91
-
92
- This walkthrough changes the persona id a computer-use participant gets when neither the
93
- participant nor its actor names one. It runs offline and spends nothing. Two tests pin the id, and
94
- the steps below update both.
95
-
96
- 1. Change `FALLBACK_PERSONA_ID` (`src/routes/computer-use/participant-prompt.ts`) from
97
- `"cua-operator"` to a new id.
98
- 2. Run `pnpm vitest run tests/routes/computer-use/lane-persona-fallback.test.ts`. It fails because
99
- it asserts the old id. Update the assertion once the new id is what you want.
100
- 3. Run `pnpm vitest run tests/routes/computer-use/local-vm.golden.test.ts`. It fails because the
101
- local VM golden, `tests/golden/routes/computer-use-local-vm-live.json`, records the persona id.
102
- Rerun it with `-u` to rewrite the golden, then check with `git diff tests/golden/` that only
103
- the persona id changed.
104
- 4. Run `mkdir -p .humanish/local/labs`, then copy `humanish/labs/dwell-window-todomvc.yaml` to
105
- `.humanish/local/labs/walkthrough.yaml`. Change its `id` to `walkthrough` and delete its
106
- `persona:` line.
107
- 5. Run `pnpm humanish run walkthrough --dry-run --no-open`. It prints the run id on its `run:`
108
- line. Check `persona.id` in `.humanish/runs/<runId>/run.json`.
109
- 6. Run `pnpm humanish verify --run latest`, then `pnpm format` and `pnpm release:check`.
110
-
111
- Common changes touch these tests and contracts:
112
-
113
- | Change | Tests | Contract or doc to update |
114
- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
115
- | A lab manifest field | `tests/lab/config.test.ts`, the route's tests. Its cases pin each lab's warnings, so a new warning fails cases that expect none | `docs/contracts/schemas.md`, `site/content/docs/lab-manifests.mdx` |
116
- | A CLI option | the command's tests under `tests/cli/` | Run `pnpm docs:generate` to update `site/content/docs/cli.mdx` |
117
- | A `run.json` field | the route's tests; rerun them with `-u` to update `tests/golden/routes/` and `tests/golden/failures/<route>/` | `docs/contracts/run-bundle.md` |
118
- | An actor trace field | `tests/actors/`, `tests/actors/conformance.test.ts`, then the route goldens with `-u` | `docs/contracts/schemas.md#actor-trace`, `docs/architecture/actor-contract.md` |
119
- | Observer data | `tests/observer/data-contract.test.ts` with `UPDATE_OBSERVER_DATA_GOLDENS=1` | `docs/architecture/observer.md` |
120
- | Observer UI | `observer/tests/` and the four `observer:*:proof` scripts | `observer/AGENTS.md` |
121
- | A route's behavior | the route's folder in `tests/routes/` (the scripted route's main suite is `tests/routes/scripted/route.test.ts`), `tests/lab/task-route-preflight.test.ts` | the support matrix in `docs/ramp/README.md` |
122
- | An actor | `tests/actors/`, `tests/actors/conformance.test.ts` | `docs/architecture/actor-contract.md` |
123
- | Redaction or share safety | `tests/evidence/`, `tests/run/transient-comms-secrets.test.ts` | `docs/contracts/policy.md` |
124
- | Study analysis | `tests/analysis/` | `docs/contracts/study-analysis.md` |
125
- | A public export | `pnpm build` and `pnpm api:proof` (`--update` to accept) | `tests/golden/public-api.json` |
126
- | An example | `pnpm build` and `pnpm api:proof`, which runs every example | `examples/README.md` |
127
-
128
- Three folders hold fixtures. `tests/fixtures/` holds test inputs, `humanish/fixtures/` holds the
129
- synthetic apps this repo's own labs start, and the root `fixtures/` holds synthetic apps and cases
130
- that several tests and scripts copy, such as `fixtures/minimal-app/`.
131
-
132
- ### Find the test folders outside the `src/` mirror
133
-
134
- Most of `tests/` mirrors `src/`. Six folders sit outside that mirror. `tests/admission/` pins what the CLI and the
135
- library do when they refuse a lab before a run starts, and `tests/scripts/` tests `scripts/`.
136
- `tests/surface/` checks the README, the site, `site/public/llms.txt`, the agent skill and the package
137
- against the shipped CLI. `tests/helpers/`, `tests/fixtures/` and `tests/golden/` hold shared test
138
- code, inputs and goldens.
139
-
140
- ## Pull Requests
141
-
142
- PRs should include:
143
-
144
- - a concise summary;
145
- - why the design is the simplest adequate option, when adding architectural complexity;
146
- - proof commands and outcomes;
147
- - any remaining gaps;
148
- - confirmation that fixtures and examples are synthetic or redacted.
@@ -1,45 +0,0 @@
1
- /**
2
- * Codex CLI releases the restricted launcher admits, per host, oldest first. Each qualified
3
- * release needs a receipt under docs/goals/computer-use-actor/receipts/ that meets
4
- * docs/architecture/restricted-codex-analysis.md ("Admitting a Codex CLI release"). Removing a
5
- * release stops new launches; saved bundles stay readable through the separate reader lists in
6
- * src/actors/contract.ts.
7
- *
8
- * A release string is a compatibility check, not binary attestation: the launcher compares what
9
- * `codex --version`, initialize and thread start report, and a modified binary can report any
10
- * of them.
11
- */
12
- export declare const QUALIFIED_CODEX_CLI_VERSIONS: {
13
- readonly "linux-x64": readonly ["0.154.0", "0.157.1", "0.159.2", "0.159.3", "0.160.0"];
14
- readonly "darwin-arm64": readonly ["0.154.0"];
15
- };
16
- /**
17
- * The pre-existing admission, not a qualification. Hosted participants on these hosts ran
18
- * 0.154.0 while it was the only admitted release, and they keep it; no qualification has run
19
- * on either host, and no later release is admitted there.
20
- */
21
- export declare const PREEXISTING_CODEX_CLI_ADMISSIONS: {
22
- readonly "linux-arm64": readonly ["0.154.0"];
23
- readonly "darwin-x64": readonly ["0.154.0"];
24
- };
25
- type QualifiedHost = keyof typeof QUALIFIED_CODEX_CLI_VERSIONS;
26
- type PreexistingHost = keyof typeof PREEXISTING_CODEX_CLI_ADMISSIONS;
27
- export type CodexHost = QualifiedHost | PreexistingHost;
28
- export type AdmittedCodexCliVersion = (typeof QUALIFIED_CODEX_CLI_VERSIONS)[QualifiedHost][number] | (typeof PREEXISTING_CODEX_CLI_ADMISSIONS)[PreexistingHost][number];
29
- export declare function codexHost(platform: NodeJS.Platform, arch: string): CodexHost | undefined;
30
- /** Releases that passed qualification on this host; the pre-existing admission is excluded. */
31
- export declare function qualifiedCodexCliVersions(platform: NodeJS.Platform, arch: string): readonly AdmittedCodexCliVersion[];
32
- /** Everything the launcher starts on this host: qualified releases or the pre-existing one. */
33
- export declare function admittedCodexCliVersions(platform: NodeJS.Platform, arch: string): readonly AdmittedCodexCliVersion[];
34
- /** What a declaration names before the installed CLI is detected: the host's newest release. */
35
- export declare function defaultCodexCliVersion(platform?: NodeJS.Platform, arch?: string): AdmittedCodexCliVersion;
36
- /** The version from `codex --version` output (`codex-cli 0.157.1`); any other shape is undefined. */
37
- export declare function parseCodexCliVersion(stdout: string): string | undefined;
38
- /**
39
- * doctor's recovery for an unadmitted CLI: the release it found, what this host admits, and the
40
- * exact command that installs the newest admitted release.
41
- */
42
- export declare function codexVersionRecovery(detected: string | undefined, platform?: NodeJS.Platform, arch?: string): string;
43
- /** For refusal messages: the admitted releases on this host, or every host when it has none. */
44
- export declare function describeQualifiedCodexCliVersions(platform?: NodeJS.Platform, arch?: string): string;
45
- export {};
@@ -1,87 +0,0 @@
1
- /**
2
- * Codex CLI releases the restricted launcher admits, per host, oldest first. Each qualified
3
- * release needs a receipt under docs/goals/computer-use-actor/receipts/ that meets
4
- * docs/architecture/restricted-codex-analysis.md ("Admitting a Codex CLI release"). Removing a
5
- * release stops new launches; saved bundles stay readable through the separate reader lists in
6
- * src/actors/contract.ts.
7
- *
8
- * A release string is a compatibility check, not binary attestation: the launcher compares what
9
- * `codex --version`, initialize and thread start report, and a modified binary can report any
10
- * of them.
11
- */
12
- export const QUALIFIED_CODEX_CLI_VERSIONS = {
13
- "linux-x64": ["0.154.0", "0.157.1", "0.159.2", "0.159.3", "0.160.0"],
14
- "darwin-arm64": ["0.154.0"],
15
- };
16
- /**
17
- * The pre-existing admission, not a qualification. Hosted participants on these hosts ran
18
- * 0.154.0 while it was the only admitted release, and they keep it; no qualification has run
19
- * on either host, and no later release is admitted there.
20
- */
21
- export const PREEXISTING_CODEX_CLI_ADMISSIONS = {
22
- "linux-arm64": ["0.154.0"],
23
- "darwin-x64": ["0.154.0"],
24
- };
25
- const HOST_LABELS = {
26
- "linux-x64": "Linux x64",
27
- "darwin-arm64": "macOS arm64",
28
- "linux-arm64": "Linux arm64",
29
- "darwin-x64": "macOS x64",
30
- };
31
- export function codexHost(platform, arch) {
32
- const host = `${platform}-${arch}`;
33
- return Object.hasOwn(QUALIFIED_CODEX_CLI_VERSIONS, host) ||
34
- Object.hasOwn(PREEXISTING_CODEX_CLI_ADMISSIONS, host)
35
- ? host
36
- : undefined;
37
- }
38
- /** Releases that passed qualification on this host; the pre-existing admission is excluded. */
39
- export function qualifiedCodexCliVersions(platform, arch) {
40
- const host = codexHost(platform, arch);
41
- return host !== undefined && Object.hasOwn(QUALIFIED_CODEX_CLI_VERSIONS, host)
42
- ? QUALIFIED_CODEX_CLI_VERSIONS[host]
43
- : [];
44
- }
45
- /** Everything the launcher starts on this host: qualified releases or the pre-existing one. */
46
- export function admittedCodexCliVersions(platform, arch) {
47
- const host = codexHost(platform, arch);
48
- if (host === undefined)
49
- return [];
50
- return Object.hasOwn(QUALIFIED_CODEX_CLI_VERSIONS, host)
51
- ? QUALIFIED_CODEX_CLI_VERSIONS[host]
52
- : PREEXISTING_CODEX_CLI_ADMISSIONS[host];
53
- }
54
- /** What a declaration names before the installed CLI is detected: the host's newest release. */
55
- export function defaultCodexCliVersion(platform = process.platform, arch = process.arch) {
56
- return (admittedCodexCliVersions(platform, arch).at(-1) ??
57
- QUALIFIED_CODEX_CLI_VERSIONS["linux-x64"].at(-1));
58
- }
59
- /** The version from `codex --version` output (`codex-cli 0.157.1`); any other shape is undefined. */
60
- export function parseCodexCliVersion(stdout) {
61
- return /^codex-cli ([0-9][0-9A-Za-z.+-]{0,63})$/.exec(stdout.trim())?.[1];
62
- }
63
- function describeHost(host) {
64
- return Object.hasOwn(QUALIFIED_CODEX_CLI_VERSIONS, host)
65
- ? QUALIFIED_CODEX_CLI_VERSIONS[host].join(", ")
66
- : `${PREEXISTING_CODEX_CLI_ADMISSIONS[host].join(", ")} (pre-existing admission, not qualified)`;
67
- }
68
- /**
69
- * doctor's recovery for an unadmitted CLI: the release it found, what this host admits, and the
70
- * exact command that installs the newest admitted release.
71
- */
72
- export function codexVersionRecovery(detected, platform = process.platform, arch = process.arch) {
73
- const found = detected === undefined
74
- ? "The installed Codex CLI did not report a recognizable version"
75
- : `Found Codex CLI ${detected}`;
76
- const install = `npm install -g @openai/codex@${defaultCodexCliVersion(platform, arch)}`;
77
- return `${found}; ${describeQualifiedCodexCliVersions(platform, arch)}. Install the newest with \`${install}\`, then sign in with a ChatGPT account (\`codex login\`).`;
78
- }
79
- /** For refusal messages: the admitted releases on this host, or every host when it has none. */
80
- export function describeQualifiedCodexCliVersions(platform = process.platform, arch = process.arch) {
81
- const host = codexHost(platform, arch);
82
- if (host !== undefined)
83
- return `${HOST_LABELS[host]} accepts Codex CLI ${describeHost(host)}`;
84
- return Object.keys(HOST_LABELS)
85
- .map((key) => `${HOST_LABELS[key]}: ${describeHost(key)}`)
86
- .join("; ");
87
- }
@@ -1,3 +0,0 @@
1
- import { Command } from "commander";
2
- import { type CliIo } from "../io.js";
3
- export declare function registerLabCommands(parent: Command, io: CliIo): void;
@@ -1,193 +0,0 @@
1
- import { formatAutomaticAnalysisBudget } from "../../analysis/automatic-config.js";
2
- import { resolve } from "node:path";
3
- import { Command, Option } from "commander";
4
- import { inspectLabManifest, listLabManifests } from "../../lab/discover.js";
5
- import { runLabPreflight, } from "../../lab/preflight.js";
6
- import { runLabCommand } from "./lab-run.js";
7
- import { applyEnvFileOption, JSON_OPTION_DESCRIPTION, parsePositiveInteger, writeResult, } from "../io.js";
8
- export function registerLabCommands(parent, io) {
9
- const lab = parent
10
- .command("lab")
11
- .description("List, inspect, and run humanish lab manifests.")
12
- .summary("List, inspect, and run humanish lab manifests.");
13
- lab
14
- .command("list")
15
- .description("List committed and ignored humanish lab manifests.")
16
- .option("--cwd <path>", "Target project directory.", ".")
17
- .option("--json", JSON_OPTION_DESCRIPTION)
18
- .action((options, command) => handleLabList(io, options, command));
19
- lab
20
- .command("inspect")
21
- .argument("<lab>", "Lab id or .yaml path.")
22
- .description("Inspect a humanish lab manifest without running it.")
23
- .option("--cwd <path>", "Target project directory.", ".")
24
- .option("--json", JSON_OPTION_DESCRIPTION)
25
- .action((labName, options, command) => handleLabInspect(io, labName, options, command));
26
- lab
27
- .command("preflight")
28
- .argument("<lab>", "Lab id or .yaml path.")
29
- .description("Check lab metadata or explicitly probe reachability. Metadata mode does not verify setup; use doctor --lab <lab> first.")
30
- .option("--cwd <path>", "Target project directory.", ".")
31
- .addOption(new Option("--reachability <mode>", "Reachability mode.")
32
- .choices(["metadata", "public-preview", "sandbox-loopback", "prepared-host"])
33
- .default("metadata"))
34
- .option("--timeout-ms <ms>", "Target reachability timeout.", String(30_000))
35
- .option("--env-file <path>", "Load a local env file for this preflight without persisting values.")
36
- .option("--json", JSON_OPTION_DESCRIPTION)
37
- .action((labName, options, command) => handleLabPreflight(io, labName, options, command));
38
- lab
39
- .command("run")
40
- .argument("<lab>", "Lab id or .yaml path.")
41
- .description("Run a humanish lab manifest. Same as `humanish run <lab>`, grouped under `lab`.")
42
- .option("--env-file <path>", "Load a local env file for this lab without persisting values.")
43
- .option("--dry-run", "Render contract evidence without live provider spend.")
44
- .option("--open", "Open the observer in the default browser.")
45
- .option("--no-open", "Render without opening a browser.")
46
- .option("--detach", "Render/open once and exit without attached watch server.")
47
- .option("--port <port>", "Local observer server port when following.", "0")
48
- .option("--sims <count>", "Override the synthetic or headed desktop participant count.")
49
- .option("--count <count>", "Computer-use only: override the headed desktop participant count.")
50
- .option("--rerun-failed-from <run>", "CUA fan-out only: create a new run for failed participants from a prior run.")
51
- .option("--lanes <participant-ids>", "CUA rerun only: comma-separated participant ids to rerun from the source run.")
52
- .option("--run-id <id>", "Explicit lab run id; refused when that run already exists.")
53
- .option("--cwd <path>", "Target project directory.", ".")
54
- .option("--scorer <path>", "Terminal/computer-use/shared-world labs only: repo-relative adopter scorer module (.mjs). Overrides review.scorer.ref. Executable code: review it as code.")
55
- .option("--json", JSON_OPTION_DESCRIPTION)
56
- .addHelpText("after", [
57
- "",
58
- "Examples:",
59
- " humanish lab run first-run",
60
- " humanish lab run fanout-demo --rerun-failed-from latest --lanes lane-02,lane-04",
61
- " humanish lab run my-terminal-lab --scorer scorers/product.mjs",
62
- " humanish lab run .humanish/labs/private-dogfood.yaml --env-file .humanish/local/provider.env",
63
- "",
64
- "Human watch path:",
65
- " humanish watch first-run",
66
- " humanish watch --lab .humanish/labs/local.yaml",
67
- ].join("\n"))
68
- .action((labName, options, command) => handleLabRun(io, labName, options, command));
69
- }
70
- async function handleLabList(io, options, command) {
71
- const result = await listLabManifests(options.cwd);
72
- writeResult(command, io, result, formatLabListHuman);
73
- io.setExitCode(0);
74
- }
75
- async function handleLabInspect(io, labName, options, command) {
76
- const result = await inspectLabManifest(options.cwd, labName);
77
- writeResult(command, io, result, formatLabInspectHuman);
78
- io.setExitCode(result.ok ? 0 : 2);
79
- }
80
- async function handleLabPreflight(io, labName, options, command) {
81
- if (!(await applyEnvFileOption({
82
- command,
83
- cwd: options.cwd,
84
- envFile: options.envFile,
85
- io,
86
- }))) {
87
- return;
88
- }
89
- const timeoutMs = parsePositiveInteger(options.timeoutMs);
90
- if (timeoutMs === null) {
91
- const result = {
92
- schema: "humanish.lab-preflight-result.v1",
93
- ok: false,
94
- cwd: resolve(options.cwd),
95
- lab: labName,
96
- reachability: options.reachability,
97
- checks: [{ name: "timeout", ok: false, message: "--timeout-ms must be a positive integer." }],
98
- targets: [],
99
- sandbox: { created: false },
100
- spend: { e2bDesktop: false, model: false },
101
- warnings: [],
102
- error: {
103
- code: "HUMANISH_LAB_PREFLIGHT_INVALID_OPTION",
104
- message: "--timeout-ms must be a positive integer.",
105
- },
106
- };
107
- writeResult(command, io, result, formatLabPreflightHuman);
108
- io.setExitCode(2);
109
- return;
110
- }
111
- const result = await runLabPreflight({
112
- cwd: options.cwd,
113
- lab: labName,
114
- reachability: options.reachability,
115
- timeoutMs,
116
- });
117
- writeResult(command, io, result, formatLabPreflightHuman);
118
- io.setExitCode(result.ok ? 0 : 2);
119
- }
120
- async function handleLabRun(io, labName, options, command) {
121
- if (!(await applyEnvFileOption({
122
- command,
123
- cwd: options.cwd,
124
- envFile: options.envFile,
125
- io,
126
- // runLabCommand discovers keys once the lab resolves to a live run.
127
- discoverKeys: false,
128
- }))) {
129
- return;
130
- }
131
- await runLabCommand({
132
- command,
133
- io,
134
- lab: labName,
135
- mode: "run",
136
- options,
137
- });
138
- }
139
- function formatLabListHuman(result) {
140
- if (result.labs.length === 0) {
141
- return ([
142
- `No humanish labs found in ${result.cwd}`,
143
- "Create one under humanish/labs/*.yaml, .humanish/labs/*.yaml, or pass a .yaml path.",
144
- ...result.warnings.map((warning) => `warning: ${warning}`),
145
- ].join("\n") + "\n");
146
- }
147
- return ([
148
- "humanish labs",
149
- ...result.labs.map((lab) => `- ${lab.id} ${lab.source} ${lab.origin} ${lab.path}${lab.title ? ` (${lab.title})` : ""}`),
150
- ...result.warnings.map((warning) => `warning: ${warning}`),
151
- ].join("\n") + "\n");
152
- }
153
- function formatLabInspectHuman(result) {
154
- if (!result.ok || !result.config) {
155
- return `${result.error?.code}: ${result.error?.message}\n`;
156
- }
157
- const config = result.config;
158
- return ([
159
- "humanish lab",
160
- `id: ${config.id}`,
161
- `subject: ${config.subject.source}`,
162
- ...(config.execution?.target ? [`execution: ${config.execution.target}`] : []),
163
- `actors: ${config.actors.map((actor) => actor.type).join(", ")}`,
164
- ...(config.title ? [`title: ${config.title}`] : []),
165
- ...(config.description ? [`description: ${config.description}`] : []),
166
- ...(result.path ? [`path: ${result.path}`] : []),
167
- ...(result.origin ? [`origin: ${result.origin}`] : []),
168
- ...(config.subject.repos?.length ? [`repos: ${config.subject.repos.join(", ")}`] : []),
169
- ...(result.personas ?? []).map((persona) => `persona ${persona.id}: ${persona.brief ? `authored context (before runtime additions)\n${persona.brief.text}` : "unresolved; id only"}`),
170
- ...result.warnings.map((warning) => `warning: ${warning}`),
171
- ].join("\n") + "\n");
172
- }
173
- function formatLabPreflightHuman(result) {
174
- const checkedTargets = result.targets.filter((target) => target.checked);
175
- const reachableTargets = checkedTargets.filter((target) => target.reachable === true);
176
- const blockedTargets = result.targets.filter((target) => target.status === "blocked");
177
- return ([
178
- `humanish lab preflight ${result.ok ? "passed" : "failed"}`,
179
- `lab: ${result.labId ?? result.lab}`,
180
- ...(result.backend ? [`backend: ${result.backend}`] : []),
181
- `reachability: ${result.reachability}`,
182
- `targets: ${checkedTargets.length ? `${reachableTargets.length}/${checkedTargets.length} reachable` : `${result.targets.length} declared, not checked`}`,
183
- ...(blockedTargets.length ? [`blocked-targets: ${blockedTargets.length}`] : []),
184
- `spend: ${result.spend.e2bDesktop ? "one e2b desktop, no model calls" : "none"}`,
185
- ...(result.analysis ? [formatAutomaticAnalysisBudget(result.analysis)] : []),
186
- ...(result.sandbox.created
187
- ? [`sandbox: created=yes killed=${result.sandbox.killed === true ? "yes" : "no"}`]
188
- : []),
189
- ...result.checks.map((check) => `- ${check.ok ? "ok" : "fail"} ${check.name}: ${check.message}`),
190
- ...(result.error ? [`error: ${result.error.code}: ${result.error.message}`] : []),
191
- ...result.warnings.map((warning) => `warning: ${warning}`),
192
- ].join("\n") + "\n");
193
- }
@@ -1,90 +0,0 @@
1
- import { type CuaActorSessionOptions } from "./actors/computer-use/actor.js";
2
- import type { CuaLoopResult } from "./actors/computer-use/loop.js";
3
- import type { AutomaticAnalysisHooks as AnalysisHooks } from "./analysis/automatic-completion.js";
4
- import type { BrowserLabAdapterHooks as BrowserAdapterHooks } from "./lab/adapter-extension.js";
5
- import { type LabBackend as Backend } from "./lab/plan.js";
6
- import type { LabConfig } from "./lab/types.js";
7
- import type { CuaActorLabHooks as CuaHooks, CuaActorLabResult as CuaResult, RunCuaActorLabOptions as CuaOptions } from "./routes/computer-use/types.js";
8
- import type { RunScriptedBrowserLabOptions as ScriptedOptions, ScriptedBrowserLabHooks as ScriptedHooks, ScriptedBrowserLabResult as ScriptedResult } from "./routes/scripted/types.js";
9
- import type { ConcurrentSharedWorldLabResult as SharedWorldResult, RunConcurrentSharedWorldLabOptions as SharedWorldOptions, SharedWorldLabHooks as SharedWorldHooks } from "./routes/shared-world/types.js";
10
- import type { RunTerminalProductLabOptions as TerminalOptions, TerminalProductLabHooks as TerminalHooks, TerminalProductLabResult as TerminalResult } from "./routes/terminal/types.js";
11
- import type { RunOptions as PreviewOptions, RunResult as PreviewResult } from "./run/results.js";
12
- import type { SubjectPhaseEvent as PhaseEvent } from "./subject/steps.js";
13
- /**
14
- * @deprecated Use `runComputerUseLoop` with `createOpenAiResponsesProvider({ singleDispatch: true })`,
15
- * the strict-spend composition in docs/contracts/schemas.md.
16
- */
17
- export declare function runCuaActorSession(options: CuaActorSessionOptions): Promise<CuaLoopResult>;
18
- /** @deprecated Use `runLab(config, options)`; its result is `LabResult<"computer-use">`. */
19
- export declare function runCuaActorLab(options: CuaOptions): Promise<CuaResult>;
20
- /** @deprecated Use `runLab(config, options)`; its result is `LabResult<"scripted">`. */
21
- export declare function runScriptedBrowserLab(options: ScriptedOptions): Promise<ScriptedResult>;
22
- /** @deprecated Use `runLab(config, options)`; its result is `LabResult<"terminal">`. */
23
- export declare function runTerminalProductLab(options: TerminalOptions): Promise<TerminalResult>;
24
- /** @deprecated Use `runLab(config, options)`; its result is `LabResult<"shared-world">`. */
25
- export declare function runConcurrentSharedWorld(options: SharedWorldOptions): Promise<SharedWorldResult>;
26
- /** @deprecated Use `runLab(config, options)` on a `this-repo` lab; its result is `LabResult<"preview">`. */
27
- export declare function runDryRun(options: PreviewOptions): Promise<PreviewResult>;
28
- /** @deprecated Use `routeOf(config)` on the lab. This goes in the next minor. */
29
- export declare function actorResolvesToTerminal(type: string | undefined): boolean;
30
- /**
31
- * @deprecated Use the `plan` `LabEvent` from `RunLabOptions.onEvent`, which lists every
32
- * participant. This goes in the next minor.
33
- */
34
- export declare function cuaLaneCount(config: LabConfig): number;
35
- /**
36
- * @deprecated Use `parseLabConfig`, which refuses a seat entry that is not same-origin loopback.
37
- * This goes in the next minor.
38
- */
39
- export declare function resolveSeatUrl(serveUrl: string, entry: string | undefined): string | null;
40
- /** @deprecated Use `parseLabConfig`, which returns the same reason. This goes in the next minor. */
41
- export declare function cuaLaneValidationReason(config: LabConfig): string | null;
42
- /** @deprecated Use `parseLabConfig`, which returns the same reason. This goes in the next minor. */
43
- export declare function sharedWorldValidationReason(config: LabConfig): string | null;
44
- /** @deprecated Use `parseLabConfig`, which returns the same reason. This goes in the next minor. */
45
- export declare function concurrentSharedWorldValidationReason(config: LabConfig): string | null;
46
- /** @deprecated Use `parseLabConfig`, which returns the same reason. This goes in the next minor. */
47
- export declare function externalPublicSharedWorldValidationReason(config: LabConfig): string | null;
48
- /**
49
- * @deprecated Use `RunLabOptions.dryRun`; without it, `scenario.mode` decides. This goes in the
50
- * next minor.
51
- */
52
- export declare function resolveLabDryRun(config: LabConfig, override: boolean | undefined, fallback: boolean | undefined): boolean | undefined;
53
- /** @deprecated `parseLabConfig` refuses a roster larger than this. This goes in the next minor. */
54
- export declare const MAX_CUA_LANES = 16;
55
- /** @deprecated Use `LabRoute`. `LabOutcome.backend` and this type go in the next minor. */
56
- export type LabBackend = Backend;
57
- /** @deprecated Use `RunLabOptions` with `runLab`. */
58
- export type RunCuaActorLabOptions = CuaOptions;
59
- /** @deprecated Use `LabResult<"computer-use">`. */
60
- export type CuaActorLabResult = CuaResult;
61
- /** @deprecated Use `RunLabOptions` with `runLab`. */
62
- export type RunScriptedBrowserLabOptions = ScriptedOptions;
63
- /** @deprecated Use `LabResult<"scripted">`. */
64
- export type ScriptedBrowserLabResult = ScriptedResult;
65
- /** @deprecated Use `RunLabOptions` with `runLab`. */
66
- export type RunTerminalProductLabOptions = TerminalOptions;
67
- /** @deprecated Use `LabResult<"terminal">`. */
68
- export type TerminalProductLabResult = TerminalResult;
69
- /** @deprecated Use `RunLabOptions` with `runLab`. */
70
- export type RunConcurrentSharedWorldLabOptions = SharedWorldOptions;
71
- /** @deprecated Use `LabResult<"shared-world">`. */
72
- export type ConcurrentSharedWorldLabResult = SharedWorldResult;
73
- /** @deprecated Use `RunLabOptions` with `runLab`. */
74
- export type RunOptions = PreviewOptions;
75
- /** @deprecated Use `LabResult<"preview">`. */
76
- export type RunResult = PreviewResult;
77
- /** @deprecated Use the typed homes on `RunLabOptions` (`scorer`, `createProvider`, `inProcess`, `prepareDesktop`, `env`, `onEvent`, `onStream`). */
78
- export type CuaActorLabHooks = CuaHooks;
79
- /** @deprecated Use the typed homes on `RunLabOptions` (`prepareDesktop`, `env`). */
80
- export type ScriptedBrowserLabHooks = ScriptedHooks;
81
- /** @deprecated Use the typed homes on `RunLabOptions` (`scorer`, `env`). */
82
- export type TerminalProductLabHooks = TerminalHooks;
83
- /** @deprecated Use the typed homes on `RunLabOptions` (`scorer`, `prepareDesktop`, `env`, `onEvent`, `onStream`). */
84
- export type SharedWorldLabHooks = SharedWorldHooks;
85
- /** @deprecated Use `RunLabOptions.scorer`, an `AdapterScorerModule`. */
86
- export type BrowserLabAdapterHooks = BrowserAdapterHooks;
87
- /** @deprecated Use the `subject-phase` `LabEvent` through `RunLabOptions.onEvent`. */
88
- export type SubjectPhaseEvent = PhaseEvent;
89
- /** @deprecated Use `RunLabOptions.onEvent` (`analysis-started`, `analysis-finished`) and `analysisSignal`. */
90
- export type AutomaticAnalysisHooks = AnalysisHooks;