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
@@ -1,36 +1,32 @@
1
+ import type { LabDeps } from "../../lab/lab-deps.js";
2
+ import type { LabEvent } from "../../lab/run-lab-events.js";
3
+ import type { RunLabHomes } from "../../lab/run-lab-homes.js";
1
4
  import type { SharedWorldJudgment } from "../../run/judge.js";
2
- import type { CuaActorSessionOptions } from "../../actors/computer-use/actor.js";
3
- import type { CuaLoopResult } from "../../actors/computer-use/loop.js";
4
- import type { BrowserLabAdapterHooks } from "../../lab/adapter-extension.js";
5
- import type { SubjectPhaseEvent } from "../../subject/steps.js";
6
- import type { DetachedTimers } from "../../substrates/detached.js";
7
- import type { E2BDesktopModule, E2BDesktopSandbox } from "../../substrates/e2b/sdk.js";
8
- import type { AutomaticAnalysisHooks, AutomaticAnalysisResult } from "../../analysis/automatic-completion.js";
5
+ import type { BrowserScorer } from "../../lab/adapter-extension.js";
6
+ import type { AutomaticAnalysisResult } from "../../analysis/automatic-completion.js";
9
7
  import type { CuaActorDescriptor } from "../../actors/registry.js";
10
8
  import type { CommsReceivingRun } from "../../comms/receiving.js";
11
9
  import type { LabCommsEmail, LabCommsExternal, LabConfig } from "../../lab/types.js";
12
10
  import type { DesktopResourceObservation } from "../../substrates/e2b/desktop-resources.js";
13
- import type { ObserverResult, renderObserver } from "../../observer/render.js";
11
+ import type { ObserverResult } from "../../observer/render.js";
14
12
  import type { ObserverRuntimeStreamUrl } from "../../observer/run-routes.js";
15
- import type { RunBundle, RunScorerProvenance, RunSubjectProvenance, RunSubjectStateStepRecord } from "../../run/bundle.js";
13
+ import type { BundleRun, RunBundle, RunScorerProvenance, RunSubjectProvenance, RunSubjectStateStepRecord } from "../../run/bundle.js";
16
14
  import type { RunScope } from "../../run/run.js";
17
15
  import type { SharedWorldStateSnapshot } from "../../run/shared-world-evidence.js";
18
16
  import type { LocalTreeArchive } from "../../subject/local-tree-archive.js";
19
- import type { RunLabProvenance } from "../../run/status.js";
20
17
  import type { LiveTraceFlush } from "../computer-use/live-flush.js";
21
18
  import type { CuaParticipantDeps, DesktopParticipantRun, CuaRunBudget, ParticipantRunOutcome } from "../computer-use/types.js";
22
19
  import type { ProvisionedPlaneSetup } from "./provisioned.js";
23
20
  import type { SharedWorldPlan } from "../../lab/plan-types.js";
24
- export declare const CONCURRENT_SHARED_WORLD_LAB_SCHEMA = "humanish.concurrent-shared-world-lab-result.v1";
21
+ import { type StudyResultIdentity } from "../../run/study-result.js";
25
22
  export declare const CONCURRENT_SHARED_WORLD_PROVIDER_METADATA: {
26
23
  readonly mode: "concurrent-shared-world-lab";
27
24
  readonly tool: "humanish";
28
25
  };
29
26
  export declare const CONCURRENT_ATTRIBUTION_LIMITS: readonly ["concurrent", "best-effort-causal-attribution", "non-deterministic-shared-state", "window-and-snapshot-granularity", "contention-observed-not-proven-safe", "state-change-not-isolated-to-actors"];
30
27
  export interface RunConcurrentSharedWorldLabOptions {
31
- automaticAnalysis?: AutomaticAnalysisHooks;
32
- /** Which manifest produced this run (#455); threaded into the status record + bundle. */
33
- lab?: RunLabProvenance;
28
+ /** Cancels post-run analysis only. */
29
+ analysisSignal?: AbortSignal;
34
30
  cwd: string;
35
31
  config: LabConfig;
36
32
  /** Resolved upstream (scenario.mode + CLI override); defaults safe (dry-run). */
@@ -40,27 +36,45 @@ export interface RunConcurrentSharedWorldLabOptions {
40
36
  onObserverReady?: (observer: ObserverResult & {
41
37
  ok: true;
42
38
  }) => Promise<void> | void;
43
- hooks?: SharedWorldLabHooks;
44
- /** Present only when the browser-route scorer hooks were CONFIG-DECLARED and loaded by the CLI
45
- * (#316); core-stamped onto the bundle as evidence. Absent for library callers. */
39
+ /** Keys and subject env for the run. Defaults to process.env. */
40
+ env?: Readonly<Record<string, string | undefined>>;
41
+ /**
42
+ * Runs after a sandbox exists and before anything is provisioned on it: the provisioned plane's
43
+ * subject sandbox, then each participant's desktop. The external-public plane has participants
44
+ * only.
45
+ */
46
+ prepareDesktop?: NonNullable<RunLabHomes["prepareDesktop"]>;
47
+ /** Awaited after a participant's live stream starts, and again after its sandbox is gone. */
48
+ onStream?: NonNullable<RunLabHomes["onStream"]>;
49
+ /** Reports subject phases to onEvent; built by normalizeRunLabOptions. */
50
+ emit?: (event: LabEvent) => void;
51
+ /** Test seams. */
52
+ deps?: LabDeps;
53
+ /** Scores the assembled evidence: `RunLabOptions.scorer`, or the scorer the CLI loads. */
54
+ scorer?: BrowserScorer;
55
+ /** Present only when the scorer was config-declared and loaded by the CLI;
56
+ * core-stamped onto the bundle as evidence. Absent for library callers. */
46
57
  scorerProvenance?: RunScorerProvenance;
47
58
  }
48
59
  /** What a shared-world run takes besides its plan. The plan carries the config, dry run and lab. */
49
60
  export type SharedWorldRunInput = Omit<RunConcurrentSharedWorldLabOptions, "config" | "dryRun" | "lab">;
50
- export type ConcurrentSharedWorldLabErrorCode = "HUMANISH_LAB_ANALYSIS_INVALID" | "HUMANISH_LAB_TASKS_UNSUPPORTED" | "HUMANISH_LAB_OPTION_CONFLICT" | "HUMANISH_LAB_OPTION_UNSUPPORTED" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_FAILED" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_ACTOR_UNSUPPORTED" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_INVALID" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_KEYS_MISSING"
51
- /** A local-agent brain's CLI is not on PATH. */
52
- | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_AGENT_MISSING"
61
+ export type ConcurrentSharedWorldLabErrorCode = "HUMANISH_STUDY_ANALYSIS_INVALID" | "HUMANISH_STUDY_TASKS_UNSUPPORTED" | "HUMANISH_STUDY_OPTION_UNSUPPORTED" | "HUMANISH_SHARED_WORLD_FAILED" | "HUMANISH_SHARED_WORLD_ACTOR_UNSUPPORTED" | "HUMANISH_SHARED_WORLD_INVALID" | "HUMANISH_SHARED_WORLD_KEYS_MISSING"
62
+ /** A local-agent brain's CLI is not on `PATH`. */
63
+ | "HUMANISH_SHARED_WORLD_AGENT_MISSING"
53
64
  /** A local-agent brain's CLI is signed out, or could not report its sign-in status. */
54
- | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_AGENT_SIGNIN_REQUIRED"
65
+ | "HUMANISH_SHARED_WORLD_AGENT_SIGNIN_REQUIRED"
55
66
  /** A dollar cap that cannot be priced: an unpriced model, or a ChatGPT-account Codex brain. */
56
- | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_UNPRICED_CAP" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_SUBJECT_ENV_MISSING" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_GETHOST_UNAVAILABLE" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_HANDOFF_TIMEOUT" | "HUMANISH_RUN_ID_IN_USE"
57
- /** A declared adopter-hosted comms catch (#328) did not answer as a humanish catch — fail closed
58
- * BEFORE any actor spend, since the funnel would silently collect nothing. */
59
- | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_COMMS_CATCH_UNREACHABLE";
60
- /** The two plane classes of the concurrent shared-world route (#164 phase 2). */
67
+ | "HUMANISH_SHARED_WORLD_UNPRICED_CAP" | "HUMANISH_SHARED_WORLD_SUBJECT_ENV_MISSING" | "HUMANISH_SHARED_WORLD_GETHOST_UNAVAILABLE" | "HUMANISH_SHARED_WORLD_HANDOFF_TIMEOUT" | "HUMANISH_RUN_ID_IN_USE"
68
+ /** A declared adopter-hosted comms catch did not answer as a humanish catch. Fail closed
69
+ * before any actor spend, since the funnel would silently collect nothing. */
70
+ | "HUMANISH_SHARED_WORLD_COMMS_CATCH_UNREACHABLE"
71
+ /** comms.email.external.authTokenEnv names a token shorter than MIN_CATCH_TOKEN_LENGTH or not
72
+ * well-formed Unicode (src/comms/external-evidence.ts). Refused before the catch is probed. */
73
+ | "HUMANISH_SHARED_WORLD_COMMS_TOKEN_INVALID";
74
+ /** The two plane classes of the concurrent shared-world route. */
61
75
  export type ConcurrentSharedWorldPlaneClass = "provisioned-getHost" | "external-public";
62
76
  export declare const EXTERNAL_PUBLIC_ATTRIBUTION_LIMITS: readonly ["concurrent", "best-effort-causal-attribution", "non-deterministic-shared-state", "window-and-snapshot-granularity", "contention-observed-not-proven-safe", "state-change-not-isolated-to-actors", "external-public-plane", "operator-attested-target-not-harness-controlled", "no-synthetic-attestation", "no-authoritative-shared-state-proof", "concurrency-by-temporal-co-occupancy-only"];
63
- /** One persona's OUTCOME against the contended world (the "M of N" headline). */
77
+ /** One persona's outcome against the contended world (the "M of N" headline). */
64
78
  export interface ConcurrentSharedWorldParticipantResult {
65
79
  id: string;
66
80
  index: number;
@@ -88,15 +102,13 @@ export interface ConcurrentSharedWorldParticipantResult {
88
102
  message: string;
89
103
  };
90
104
  }
91
- export interface ConcurrentSharedWorldLabResult extends AutomaticAnalysisResult {
92
- schema: typeof CONCURRENT_SHARED_WORLD_LAB_SCHEMA;
105
+ export interface ConcurrentSharedWorldLabResult extends AutomaticAnalysisResult, StudyResultIdentity<"shared-world"> {
93
106
  ok: boolean;
94
107
  cwd: string;
95
- labId: string;
96
108
  actor: string;
97
109
  topology: "shared-world";
98
110
  topologyMode: "concurrent";
99
- /** The DECLARED number of persona seats. */
111
+ /** The declared number of personas. */
100
112
  roleCount: number;
101
113
  /** Effective in-flight bound (execution.concurrency). */
102
114
  concurrency: number;
@@ -104,17 +116,17 @@ export interface ConcurrentSharedWorldLabResult extends AutomaticAnalysisResult
104
116
  runId: string;
105
117
  /** The harness-minted getHost URL the actors drove (tokenless; live only). */
106
118
  host?: string;
107
- /** The ONE subject sandbox lifecycle proof. */
119
+ /** The one subject sandbox lifecycle proof. */
108
120
  subjectSandbox?: {
109
121
  sandboxId: string;
110
122
  killed: boolean;
111
123
  };
112
124
  /** Whether ≥2 actor windows overlapped in time (proven concurrency; live only). */
113
125
  overlapProven?: boolean;
114
- /** Max lanes observed live at the same instant (live only) — the honest simultaneity number; a
115
- * 6-lane run capped at 3 reports 3 here, never 6 (#350). */
126
+ /** Max participants observed live at the same instant (live only): the simultaneity number; a
127
+ * 6-participant run capped at 3 reports 3 here, never 6. */
116
128
  maxSimultaneousLanes?: number;
117
- /** Subject provenance (invariant 5): the ONE shared plane. */
129
+ /** Subject provenance: the one shared plane. */
118
130
  subject?: RunSubjectProvenance;
119
131
  roles: ConcurrentSharedWorldParticipantResult[];
120
132
  observer?: ObserverResult;
@@ -145,11 +157,12 @@ type StartedRun = Extract<Awaited<ReturnType<RunScope["startRun"]>>, {
145
157
  export interface PlaneContext {
146
158
  plan: SharedWorldPlan;
147
159
  input: SharedWorldRunInput;
148
- /** Read by the computer-use lane runner, whose hooks and desktop setup take the whole config.
149
- * Seats, their count and their host and entry come from the plan's participants. */
160
+ /** Read for the subject's serve URL, which each participant's subject names. Participants, their
161
+ * count and their host and entry come from the plan's participants. */
150
162
  config: LabConfig;
151
163
  descriptor: CuaActorDescriptor;
152
- hooks: SharedWorldLabHooks;
164
+ /** The run's test seams; empty outside tests. */
165
+ deps: LabDeps;
153
166
  env: Record<string, string | undefined>;
154
167
  concurrency: number;
155
168
  runBudget: CuaRunBudget | undefined;
@@ -157,6 +170,9 @@ export interface PlaneContext {
157
170
  openaiApiKey: string;
158
171
  e2bApiKey: string;
159
172
  scrubKnownValues: (text: string) => string;
173
+ /** The values scrubKnownValues removes. Real email receiving adds its secrets before participants
174
+ * start. */
175
+ knownSecretValues: readonly string[];
160
176
  cwd: string;
161
177
  run: StartedRun;
162
178
  runId: string;
@@ -175,8 +191,9 @@ export interface PlaneContext {
175
191
  warnings: string[];
176
192
  }
177
193
  /**
178
- * What the seats feed while they run. A plane sets the attached Observer and starts the trace
179
- * flush; the runtime stream hooks append stream URLs; the orchestrator reads all three at finish.
194
+ * What the participants feed while they run. A plane sets the attached Observer and starts the
195
+ * trace flush; each participant's onStream appends stream URLs; the orchestrator reads all three at
196
+ * finish.
180
197
  */
181
198
  export interface LiveParticipants {
182
199
  observer?: ObserverResult & {
@@ -185,7 +202,7 @@ export interface LiveParticipants {
185
202
  flush?: LiveTraceFlush;
186
203
  readonly streamUrls: ObserverRuntimeStreamUrl[];
187
204
  }
188
- /** An adopter-hosted comms catch (#328) and the inbox its personas open. */
205
+ /** An adopter-hosted comms catch and the inbox its personas open. */
189
206
  export interface ExternalCommsWiring {
190
207
  external: LabCommsExternal;
191
208
  email: LabCommsEmail;
@@ -195,14 +212,12 @@ export interface ExternalCommsWiring {
195
212
  export interface ConcurrentBundleArgs {
196
213
  /** The run's judgment (judgeSharedWorldRun over the other fields). */
197
214
  judgment: SharedWorldJudgment;
198
- /** Lab provenance for the bundle\'s own `lab` field (#455). */
199
- lab?: RunLabProvenance;
215
+ /** The run this bundle belongs to; the bundle head reads its id, mode, start and lab. */
216
+ run: BundleRun;
200
217
  plan: SharedWorldPlan;
201
218
  descriptor: CuaActorDescriptor;
202
- createdAt: string;
203
219
  dryRun: boolean;
204
220
  inProgress?: boolean;
205
- runId: string;
206
221
  source: RunBundle["source"];
207
222
  actorSpecs: DesktopParticipantRun[];
208
223
  actorResults: ActorRunResult[];
@@ -213,17 +228,18 @@ export interface ConcurrentBundleArgs {
213
228
  hostDigest?: string;
214
229
  /** Run-level digest-only comms-thread evidence path (humanish.comms-thread.v1), when a comms lab
215
230
  * captured mail into the subject sandbox's catch. Registered on the first persona stream (it is a
216
- * property of the ONE shared app, not of any single persona). */
231
+ * property of the one shared app, and belongs to no single persona). */
217
232
  commsArtifactPath?: string;
218
- /** #164 phase 2: the plane-class discriminator (default provisioned-getHost, byte-stable). */
233
+ /** The plane-class discriminator (default provisioned-getHost, byte-stable). */
219
234
  planeClass?: ConcurrentSharedWorldPlaneClass;
220
- /** external-public only: sha256-16 of the OBSERVED origin the seats converged on (the convergence
221
- * proof — what the seats actually reached, tolerant of a declared->observed redirect). */
235
+ /** external-public only: sha256-16 of the observed origin the participants converged on (the
236
+ * convergence proof: what the participants actually reached, tolerant of a declared->observed
237
+ * redirect). */
222
238
  publicOriginDigest?: string;
223
- /** external-public only: sha256-16 of the operator-DECLARED plane origin (evidence/reference only;
224
- * NOT asserted equal to the observed origin — a cross-origin redirect is normal and expected). */
239
+ /** external-public only: sha256-16 of the operator-declared plane origin (evidence/reference only;
240
+ * never asserted equal to the observed origin, since a cross-origin redirect is normal). */
225
241
  declaredOriginDigest?: string;
226
- /** external-public only: sha256-16 of the shared /lobby/CODE path all seats converged on. */
242
+ /** external-public only: sha256-16 of the /lobby/CODE path all participants converged on. */
227
243
  lobbyConvergenceDigest?: string;
228
244
  runError?: string;
229
245
  /** The provisioned plane's own desktop; absent on external-public planes and dry runs. */
@@ -236,6 +252,8 @@ export interface PlaneResults {
236
252
  subjectCommit: string | undefined;
237
253
  subjectSandboxId: string | undefined;
238
254
  subjectKilled: boolean;
255
+ /** The subject sandbox's scrubbed release warning when its release is unconfirmed. */
256
+ subjectReleaseWarning: string | undefined;
239
257
  subjectDesktop: SubjectDesktopUsage | undefined;
240
258
  getHostUrl: string | undefined;
241
259
  publicOriginDigest: string | undefined;
@@ -262,93 +280,4 @@ export interface FinishFacts {
262
280
  stateSnapshots: SharedWorldStateSnapshot[];
263
281
  declaredOriginDigest: string | undefined;
264
282
  }
265
- /**
266
- * Library-level hooks mirroring CuaActorLabHooks — the DI seams that let CI drive the FULL
267
- * orchestration with fakes at $0/zero-network. The fake desktop module records create/kill BY id
268
- * and exposes NO `list` method (the by-id teardown rail is then provable by construction).
269
- */
270
- export interface SharedWorldLabHooks extends BrowserLabAdapterHooks {
271
- /** Lazy-load the E2B desktop module (tests inject a fake; default loadE2BDesktopModule). */
272
- loadDesktopModule?: () => Promise<E2BDesktopModule>;
273
- /**
274
- * Runs after a sandbox is created and before anything is provisioned on it. The provisioned
275
- * plane calls it for the subject sandbox with no lane, then for each seat's desktop with its lane;
276
- * the external-public plane calls it for the seats only.
277
- */
278
- prepareDesktop?: (desktop: E2BDesktopSandbox, lane?: {
279
- laneId: string;
280
- laneIndex: number;
281
- laneCount: number;
282
- }) => Promise<void>;
283
- /**
284
- * Awaited after a seat's live desktop stream starts. The URL carries an auth key and must never
285
- * be persisted. A rejection becomes a run warning, as on the computer-use route.
286
- */
287
- onRuntimeStreamReady?: (stream: {
288
- laneId: string;
289
- sandboxId: string;
290
- simId: string;
291
- streamId: string;
292
- url: string;
293
- }) => Promise<void> | void;
294
- /** Awaited after a seat's sandbox is gone, for seats whose stream started. Rejections are swallowed. */
295
- onRuntimeStreamEnded?: (stream: {
296
- laneId: string;
297
- simId: string;
298
- streamId: string;
299
- }) => Promise<void> | void;
300
- /** The per-seat computer-use session runner (default: the resolved actor descriptor's). */
301
- runSession?: (options: CuaActorSessionOptions) => Promise<CuaLoopResult>;
302
- /** The operator environment (keys + subject env values). Defaults to process.env. */
303
- env?: Record<string, string | undefined>;
304
- renderObserverFn?: typeof renderObserver;
305
- /** Injected clock/sleep for the detached-step polling (tests only). */
306
- detachedTimers?: DetachedTimers;
307
- /**
308
- * Subject-provisioning phase sink (mirrors CuaActorLabHooks.onPhase): one call per
309
- * started/completed boundary during the ONE shared-plane provision (clone route: clone, install,
310
- * build, serve start, ready, subject.state seed-step groups; local-tree route: upload, extract,
311
- * install, build, serve start, ready, seed-step groups - no clone phase). Defaults to one stderr
312
- * line per event. Override in tests to capture instead of writing to real stderr.
313
- */
314
- onPhase?: (event: SubjectPhaseEvent) => void;
315
- /**
316
- * CONCURRENT route only (#164 phase 2): the harness clock used to MEASURE each actor's laneWindow
317
- * [start,end] (default Date.now). The deterministic heart test does NOT override this — overlap is
318
- * produced by a rendezvous latch in the fake runSession + measured by the REAL clock (FIX-1), so
319
- * the windows are real, not injected. (A test may override only for non-overlap assertions.)
320
- */
321
- now?: () => number;
322
- /** CONCURRENT route only: the background stateSeries prober cadence (ms). Default 1000. */
323
- proberCadenceMs?: number;
324
- /**
325
- * EXTERNAL-PUBLIC concurrent route only (#164 phase 2): the host-first handoff barrier deadline
326
- * (ms). The host seat must surface a shared-session (/lobby/CODE) URL within this budget or the run
327
- * fails closed with HUMANISH_CONCURRENT_SHARED_WORLD_LAB_HANDOFF_TIMEOUT and no follower opens.
328
- * Default 120000 (also capped by execution.timeoutMs). Tests inject a short value to exercise the
329
- * fail-closed path deterministically.
330
- */
331
- handoffDeadlineMs?: number;
332
- /**
333
- * EXTERNAL-PUBLIC concurrent route only: the vision reader that extracts a /lobby/CODE off a seat's
334
- * screenshot frame (the CDP-independent handoff relay + per-seat convergence observation). Defaults to
335
- * the real single-frame OpenAI read (readLobbyCodeFromFrame). Tests inject a fake so the barrier's
336
- * handoff + convergence proof can be exercised deterministically without a live vision call.
337
- */
338
- readLobbyCodeFromFrame?: (frame: Buffer, apiKey: string) => Promise<string | undefined>;
339
- /**
340
- * Local-tree packing DI seam (tests only, no npm dependency needed to exercise the route):
341
- * defaults to createLocalTreeArchive(root, opts) plus a host-side read of the produced archive
342
- * file into an ArrayBuffer (the SAME default routes/computer-use/route.ts uses). Called ONCE per run, before
343
- * the ONE shared-plane sandbox is created, on the live local-tree route.
344
- */
345
- packLocalTree?: (args: {
346
- root: string;
347
- extraExclude?: string[];
348
- maxArchiveBytes?: number;
349
- }) => Promise<{
350
- archive: LocalTreeArchive;
351
- buffer: ArrayBuffer;
352
- }>;
353
- }
354
283
  export {};
@@ -1,11 +1,11 @@
1
1
  // The concurrent shared-world route's schema constants, attribution limits, options and result
2
- // types, and the per-seat result the planes collect.
3
- export const CONCURRENT_SHARED_WORLD_LAB_SCHEMA = "humanish.concurrent-shared-world-lab-result.v1";
2
+ // types, and the per-participant result the planes collect.
3
+ import {} from "../../run/study-result.js";
4
4
  export const CONCURRENT_SHARED_WORLD_PROVIDER_METADATA = {
5
5
  mode: "concurrent-shared-world-lab",
6
6
  tool: "humanish",
7
7
  };
8
- // The verify-enforced CONCURRENT attribution ceiling (FIX-5). Mirrored in
8
+ // The verify-enforced concurrent attribution ceiling. Mirrored in
9
9
  // verify/shared-world-concurrent.ts CONCURRENT_REQUIRED_LIMITS.
10
10
  export const CONCURRENT_ATTRIBUTION_LIMITS = [
11
11
  "concurrent",
@@ -15,8 +15,8 @@ export const CONCURRENT_ATTRIBUTION_LIMITS = [
15
15
  "contention-observed-not-proven-safe",
16
16
  "state-change-not-isolated-to-actors",
17
17
  ];
18
- // EXTERNAL-PUBLIC plane class: the honest-downgrade attribution ceiling. The concurrent family
19
- // (an honest ceiling) PLUS the mandatory external-public disclosures — mirrored in the required
18
+ // External-public plane class: the downgraded attribution ceiling. The concurrent family
19
+ // plus the mandatory external-public disclosures, mirrored in the required
20
20
  // set in verify/shared-world-concurrent.ts (CONCURRENT_ATTRIBUTION_LIMITS +
21
21
  // EXTERNAL_PUBLIC_EXTRA_LIMITS). Verify fails closed on a missing one.
22
22
  export const EXTERNAL_PUBLIC_ATTRIBUTION_LIMITS = [
@@ -1,27 +1,27 @@
1
1
  import type { ActorTrace } from "../../actors/contract.js";
2
2
  import { type RunBundle, type RunScorerProvenance } from "../../run/bundle.js";
3
3
  import { type ScorerOutcome } from "../../lab/adapter-extension.js";
4
- import type { TerminalLedgers, TerminalProductLabHooks } from "./types.js";
4
+ import type { TerminalLedgers, TerminalScorer } from "./types.js";
5
5
  /**
6
- * Run the layer-6 product-adapter extension seam (issue #154 acceptance #8) over the assembled
7
- * evidence and attach its results to the bundle IN PLACE — without core knowing any product noun.
6
+ * Run the product-adapter extension seam over the assembled
7
+ * evidence and attach its results to the bundle in place, without core knowing any product noun.
8
8
  * The review is not touched here: the returned failures are folded into it by the caller.
9
9
  *
10
10
  * - `score`: when present, the returned namespaced `RunAdapterScore` lands on `bundle.adapterScore`.
11
- * For a LIBRARY caller (no `scorerProvenance`), the adapter score is additive and never a
12
- * failure. For a CONFIG-DECLARED scorer (#316; `scorerProvenance` present), a status:"fail" is a
13
- * failure (the keystone lane is the product's own definition of pass/fail), and so is a scorer
14
- * that THROWS or returns a malformed value, so a crashed declared gate is never a silent green.
11
+ * For a library caller (no `scorerProvenance`), the adapter score is additive and never a
12
+ * failure. For a config-declared scorer (`scorerProvenance` present), a status:"fail" is a
13
+ * failure (the keystone route is the product's own definition of pass/fail), and so is a scorer
14
+ * that throws or returns a malformed value, so a crashed declared gate is never a silent green.
15
15
  * - `deriveFeedback`: when present, the returned candidates are appended to
16
16
  * `bundle.feedbackCandidates`; each carries its own namespaced `adapter` product-noun block.
17
17
  *
18
18
  * Defense in depth: the adapter's namespaced payloads are re-serialized through the run's scrub +
19
- * redact, and any candidate / score that does not satisfy core's exported shape is DROPPED with a
19
+ * redact, and any candidate / score that does not satisfy core's exported shape is dropped with a
20
20
  * warning (a malformed adapter output never poisons a verifiable bundle). The bundle verifier
21
21
  * re-checks the surviving shapes downstream, so the seam stays fail-closed end to end.
22
22
  */
23
23
  export declare function applyAdapterExtensionSeam(args: {
24
- hooks: TerminalProductLabHooks;
24
+ scorer: TerminalScorer | undefined;
25
25
  bundle: RunBundle;
26
26
  trace: ActorTrace;
27
27
  ledgers: TerminalLedgers;
@@ -31,7 +31,7 @@ export declare function applyAdapterExtensionSeam(args: {
31
31
  runId: string;
32
32
  sanitize: (text: string) => string;
33
33
  warnings: string[];
34
- /** Present only when the scorer was CONFIG-DECLARED (#316) — the "declared" marker that opts the
34
+ /** Present only when the scorer was config-declared. It is the "declared" marker that opts the
35
35
  * terminal route into flip-on-fail. Absent for library callers (additive, back-compat). */
36
36
  scorerProvenance?: RunScorerProvenance;
37
37
  }): Promise<ScorerOutcome>;