humanish 0.104.3 → 0.106.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1407) hide show
  1. package/AGENTS.md +89 -94
  2. package/ARCHITECTURE.md +146 -0
  3. package/CHANGELOG.md +502 -0
  4. package/CONTEXT.md +51 -0
  5. package/CONTRIBUTING.md +111 -9
  6. package/README.md +213 -124
  7. package/SECURITY.md +1 -1
  8. package/TELEMETRY.md +112 -0
  9. package/dist/actors/affordance.d.ts +56 -0
  10. package/dist/actors/affordance.js +155 -0
  11. package/dist/actors/agent-session.js +42 -0
  12. package/dist/actors/codex/app-server-actor-trace.d.ts +11 -0
  13. package/dist/actors/codex/app-server-actor-trace.js +211 -0
  14. package/dist/actors/codex/app-server-client.d.ts +39 -0
  15. package/dist/actors/codex/app-server-client.js +116 -0
  16. package/dist/actors/codex/app-server-trace.d.ts +154 -0
  17. package/dist/actors/codex/app-server-trace.js +424 -0
  18. package/dist/actors/codex/app-server-ui.d.ts +40 -0
  19. package/dist/actors/codex/app-server-ui.js +328 -0
  20. package/dist/actors/codex/app-server.d.ts +44 -0
  21. package/dist/actors/codex/app-server.js +268 -0
  22. package/dist/actors/codex/qualified-versions.d.ts +45 -0
  23. package/dist/actors/codex/qualified-versions.js +87 -0
  24. package/dist/actors/codex/restricted-executable.d.ts +17 -0
  25. package/dist/actors/codex/restricted-executable.js +147 -0
  26. package/dist/actors/codex/restricted-launch.d.ts +116 -0
  27. package/dist/actors/codex/restricted-launch.js +222 -0
  28. package/dist/actors/codex/restricted-participant-policy.d.ts +46 -0
  29. package/dist/actors/codex/restricted-participant-policy.js +82 -0
  30. package/dist/actors/codex/restricted-participant.d.ts +20 -0
  31. package/dist/actors/codex/restricted-participant.js +432 -0
  32. package/dist/actors/codex/restricted-policy.d.ts +70 -0
  33. package/dist/actors/codex/restricted-policy.js +326 -0
  34. package/dist/actors/codex/restricted-session.d.ts +65 -0
  35. package/dist/actors/codex/restricted-session.js +432 -0
  36. package/dist/actors/codex/restricted-transport.d.ts +73 -0
  37. package/dist/actors/codex/restricted-transport.js +335 -0
  38. package/dist/actors/codex/restricted-turn.d.ts +62 -0
  39. package/dist/actors/codex/restricted-turn.js +284 -0
  40. package/dist/actors/computer-use/actor.d.ts +77 -0
  41. package/dist/actors/computer-use/actor.js +78 -0
  42. package/dist/actors/computer-use/admission-limit.d.ts +12 -0
  43. package/dist/actors/computer-use/admission-limit.js +19 -0
  44. package/dist/actors/computer-use/executor-error.js +48 -0
  45. package/dist/actors/computer-use/loop/actions.d.ts +26 -0
  46. package/dist/actors/computer-use/loop/actions.js +245 -0
  47. package/dist/actors/computer-use/loop/backstop.d.ts +42 -0
  48. package/dist/actors/computer-use/loop/backstop.js +202 -0
  49. package/dist/actors/computer-use/loop/debrief.d.ts +19 -0
  50. package/dist/actors/computer-use/loop/debrief.js +164 -0
  51. package/dist/actors/computer-use/loop/ending.d.ts +86 -0
  52. package/dist/actors/computer-use/loop/ending.js +316 -0
  53. package/dist/actors/computer-use/loop/observation.d.ts +55 -0
  54. package/dist/actors/computer-use/loop/observation.js +246 -0
  55. package/dist/actors/computer-use/loop/output-limit.d.ts +11 -0
  56. package/dist/actors/computer-use/loop/output-limit.js +21 -0
  57. package/dist/actors/computer-use/loop/provider-call.d.ts +19 -0
  58. package/dist/actors/computer-use/loop/provider-call.js +208 -0
  59. package/dist/actors/computer-use/loop/race.d.ts +34 -0
  60. package/dist/actors/computer-use/loop/race.js +79 -0
  61. package/dist/actors/computer-use/loop/session.d.ts +77 -0
  62. package/dist/actors/computer-use/loop/session.js +135 -0
  63. package/dist/actors/computer-use/loop/spend.d.ts +30 -0
  64. package/dist/actors/computer-use/loop/spend.js +85 -0
  65. package/dist/actors/computer-use/loop/trace.d.ts +35 -0
  66. package/dist/actors/computer-use/loop/trace.js +140 -0
  67. package/dist/actors/computer-use/loop/types.d.ts +404 -0
  68. package/dist/actors/computer-use/loop/types.js +1 -0
  69. package/dist/actors/computer-use/loop/usage.d.ts +102 -0
  70. package/dist/actors/computer-use/loop/usage.js +355 -0
  71. package/dist/actors/computer-use/loop.d.ts +11 -0
  72. package/dist/actors/computer-use/loop.js +248 -0
  73. package/dist/actors/computer-use/openai-provider.d.ts +107 -0
  74. package/dist/actors/computer-use/openai-provider.js +472 -0
  75. package/dist/actors/computer-use/openai-requests.d.ts +35 -0
  76. package/dist/actors/computer-use/openai-requests.js +74 -0
  77. package/dist/actors/computer-use/openai-wire.d.ts +67 -0
  78. package/dist/actors/computer-use/openai-wire.js +365 -0
  79. package/dist/actors/computer-use/provider-error.d.ts +27 -0
  80. package/dist/actors/computer-use/provider-error.js +86 -0
  81. package/dist/actors/computer-use/speech.js +6 -0
  82. package/dist/actors/contract.d.ts +315 -0
  83. package/dist/actors/contract.js +201 -0
  84. package/dist/actors/goal-source.js +38 -0
  85. package/dist/actors/local-agent/claude-session.d.ts +43 -0
  86. package/dist/actors/local-agent/claude-session.js +370 -0
  87. package/dist/actors/local-agent/cli.d.ts +115 -0
  88. package/dist/actors/local-agent/cli.js +413 -0
  89. package/dist/actors/local-agent/readiness.d.ts +31 -0
  90. package/dist/actors/local-agent/readiness.js +45 -0
  91. package/dist/actors/openai-endpoint.d.ts +2 -0
  92. package/dist/actors/openai-endpoint.js +2 -0
  93. package/dist/actors/output-token-limit.js +4 -0
  94. package/dist/actors/reasoning-effort.js +33 -0
  95. package/dist/actors/registry.d.ts +59 -0
  96. package/dist/actors/registry.js +89 -0
  97. package/dist/actors/scripted-browser/actor.d.ts +49 -0
  98. package/dist/actors/scripted-browser/actor.js +428 -0
  99. package/dist/actors/scripted-browser/browser-command.d.ts +1 -0
  100. package/dist/actors/scripted-browser/browser-command.js +48 -0
  101. package/dist/actors/scripted-browser/journey.d.ts +9 -0
  102. package/dist/actors/scripted-browser/journey.js +171 -0
  103. package/dist/actors/scripted-browser/steps.d.ts +60 -0
  104. package/dist/actors/scripted-browser/steps.js +384 -0
  105. package/dist/actors/scripted-browser/types.d.ts +135 -0
  106. package/dist/actors/scripted-browser/types.js +26 -0
  107. package/dist/actors/stop-cause.d.ts +9 -0
  108. package/dist/actors/stop-cause.js +42 -0
  109. package/dist/actors/stop-conditions.d.ts +40 -0
  110. package/dist/actors/stop-conditions.js +65 -0
  111. package/dist/analysis/automatic-completion.d.ts +38 -0
  112. package/dist/analysis/automatic-completion.js +90 -0
  113. package/dist/analysis/automatic-config.d.ts +41 -0
  114. package/dist/analysis/automatic-config.js +135 -0
  115. package/dist/analysis/automatic.d.ts +17 -0
  116. package/dist/analysis/automatic.js +279 -0
  117. package/dist/analysis/codex-config.d.ts +8 -0
  118. package/dist/analysis/codex-config.js +69 -0
  119. package/dist/analysis/evidence-sources.d.ts +23 -0
  120. package/dist/analysis/evidence-sources.js +251 -0
  121. package/dist/analysis/evidence.d.ts +18 -0
  122. package/dist/analysis/evidence.js +482 -0
  123. package/dist/analysis/execute.d.ts +52 -0
  124. package/dist/analysis/execute.js +504 -0
  125. package/dist/analysis/image-tokens.d.ts +1 -0
  126. package/dist/analysis/image-tokens.js +41 -0
  127. package/dist/analysis/job.d.ts +97 -0
  128. package/dist/analysis/job.js +311 -0
  129. package/dist/analysis/load.d.ts +3 -0
  130. package/dist/analysis/load.js +11 -0
  131. package/dist/analysis/provider.d.ts +57 -0
  132. package/dist/analysis/provider.js +227 -0
  133. package/dist/analysis/restricted-codex.d.ts +19 -0
  134. package/dist/analysis/restricted-codex.js +23 -0
  135. package/dist/analysis/service.d.ts +72 -0
  136. package/dist/analysis/service.js +399 -0
  137. package/dist/analysis/sharing.d.ts +11 -0
  138. package/dist/analysis/sharing.js +44 -0
  139. package/dist/analysis/store-executions.d.ts +27 -0
  140. package/dist/analysis/store-executions.js +224 -0
  141. package/dist/analysis/store.d.ts +31 -0
  142. package/dist/analysis/store.js +315 -0
  143. package/dist/analysis/types.d.ts +217 -0
  144. package/dist/analysis/types.js +12 -0
  145. package/dist/analysis/validation.d.ts +225 -0
  146. package/dist/analysis/validation.js +562 -0
  147. package/dist/browser-control/client.d.ts +18 -0
  148. package/dist/browser-control/client.js +239 -0
  149. package/dist/browser-control/dispatcher.d.ts +19 -0
  150. package/dist/browser-control/dispatcher.js +221 -0
  151. package/dist/browser-control/protocol.d.ts +492 -0
  152. package/dist/browser-control/protocol.js +360 -0
  153. package/dist/browser-control/recording-transfer.d.ts +3 -0
  154. package/dist/browser-control/recording-transfer.js +48 -0
  155. package/dist/browser-control/transport.d.ts +27 -0
  156. package/dist/browser-control/transport.js +189 -0
  157. package/dist/cli/commands/analysis-signals.d.ts +7 -0
  158. package/dist/cli/commands/analysis-signals.js +25 -0
  159. package/dist/cli/commands/analyze.d.ts +3 -0
  160. package/dist/cli/commands/analyze.js +212 -0
  161. package/dist/cli/commands/codex.d.ts +3 -0
  162. package/dist/cli/commands/codex.js +145 -0
  163. package/dist/cli/commands/comms.d.ts +3 -0
  164. package/dist/cli/commands/comms.js +225 -0
  165. package/dist/cli/commands/feedback.d.ts +3 -0
  166. package/dist/cli/commands/feedback.js +138 -0
  167. package/dist/cli/commands/lab-format.d.ts +8 -0
  168. package/dist/cli/commands/lab-format.js +105 -0
  169. package/dist/cli/commands/lab-route-computer-use.d.ts +20 -0
  170. package/dist/cli/commands/lab-route-computer-use.js +251 -0
  171. package/dist/cli/commands/lab-route-open.d.ts +27 -0
  172. package/dist/cli/commands/lab-route-open.js +37 -0
  173. package/dist/cli/commands/lab-route-preview.d.ts +20 -0
  174. package/dist/cli/commands/lab-route-preview.js +74 -0
  175. package/dist/cli/commands/lab-route-run.d.ts +17 -0
  176. package/dist/cli/commands/lab-route-run.js +31 -0
  177. package/dist/cli/commands/lab-route-scripted.d.ts +19 -0
  178. package/dist/cli/commands/lab-route-scripted.js +50 -0
  179. package/dist/cli/commands/lab-route-shared-world.d.ts +20 -0
  180. package/dist/cli/commands/lab-route-shared-world.js +135 -0
  181. package/dist/cli/commands/lab-route-terminal.d.ts +19 -0
  182. package/dist/cli/commands/lab-route-terminal.js +49 -0
  183. package/dist/cli/commands/lab-run.d.ts +9 -0
  184. package/dist/cli/commands/lab-run.js +166 -0
  185. package/dist/cli/commands/lab-scorer.d.ts +30 -0
  186. package/dist/cli/commands/lab-scorer.js +17 -0
  187. package/dist/cli/commands/lab.d.ts +3 -0
  188. package/dist/cli/commands/lab.js +193 -0
  189. package/dist/cli/commands/observe.d.ts +4 -0
  190. package/dist/cli/commands/observe.js +345 -0
  191. package/dist/cli/commands/runs.d.ts +11 -0
  192. package/dist/cli/commands/runs.js +314 -0
  193. package/dist/cli/commands/setup.d.ts +11 -0
  194. package/dist/cli/commands/setup.js +325 -0
  195. package/dist/cli/commands/tui.d.ts +32 -0
  196. package/dist/cli/commands/tui.js +305 -0
  197. package/dist/cli/commands/watch.d.ts +3 -0
  198. package/dist/cli/commands/watch.js +245 -0
  199. package/dist/cli/doctor.d.ts +39 -0
  200. package/dist/cli/doctor.js +263 -0
  201. package/dist/cli/first-run-path.d.ts +67 -0
  202. package/dist/cli/first-run-path.js +150 -0
  203. package/dist/cli/io.d.ts +85 -0
  204. package/dist/cli/io.js +232 -0
  205. package/dist/cli/observer-follow.d.ts +56 -0
  206. package/dist/cli/observer-follow.js +160 -0
  207. package/dist/cli/orientation.d.ts +30 -0
  208. package/dist/cli/orientation.js +114 -0
  209. package/dist/cli/program.d.ts +15 -0
  210. package/dist/cli/program.js +338 -0
  211. package/dist/cli/secret-prompt.js +39 -0
  212. package/dist/cli/telemetry.js +351 -0
  213. package/dist/cli.js +2 -4
  214. package/dist/comms/agentmail.d.ts +29 -0
  215. package/dist/comms/agentmail.js +568 -0
  216. package/dist/comms/capture-surface.d.ts +54 -0
  217. package/dist/comms/capture-surface.js +468 -0
  218. package/dist/comms/catch-host.d.ts +52 -0
  219. package/dist/comms/catch-host.js +192 -0
  220. package/dist/comms/connections.d.ts +20 -0
  221. package/dist/comms/connections.js +116 -0
  222. package/dist/comms/email-catch.d.ts +49 -0
  223. package/dist/comms/email-catch.js +236 -0
  224. package/dist/comms/extract.d.ts +7 -0
  225. package/dist/comms/extract.js +65 -0
  226. package/dist/comms/fake-inbox.d.ts +39 -0
  227. package/dist/comms/fake-inbox.js +136 -0
  228. package/dist/comms/images.d.ts +7 -0
  229. package/dist/comms/images.js +53 -0
  230. package/dist/comms/lease-store.d.ts +91 -0
  231. package/dist/comms/lease-store.js +600 -0
  232. package/dist/comms/providers.d.ts +30 -0
  233. package/dist/comms/providers.js +24 -0
  234. package/dist/comms/receiving-common.d.ts +17 -0
  235. package/dist/comms/receiving-common.js +82 -0
  236. package/dist/comms/receiving-evidence.d.ts +4 -0
  237. package/dist/comms/receiving-evidence.js +59 -0
  238. package/dist/comms/receiving-recovery.d.ts +22 -0
  239. package/dist/comms/receiving-recovery.js +100 -0
  240. package/dist/comms/receiving-render.d.ts +16 -0
  241. package/dist/comms/receiving-render.js +409 -0
  242. package/dist/comms/receiving-runtime.d.ts +41 -0
  243. package/dist/comms/receiving-runtime.js +66 -0
  244. package/dist/comms/receiving-surface.d.ts +8 -0
  245. package/dist/comms/receiving-surface.js +156 -0
  246. package/dist/comms/receiving-types.d.ts +122 -0
  247. package/dist/comms/receiving-types.js +3 -0
  248. package/dist/comms/receiving.d.ts +33 -0
  249. package/dist/comms/receiving.js +508 -0
  250. package/dist/comms/sandbox-catch-script.d.ts +16 -0
  251. package/dist/comms/sandbox-catch-script.js +331 -0
  252. package/dist/comms/sandbox-catch.d.ts +214 -0
  253. package/dist/comms/sandbox-catch.js +451 -0
  254. package/dist/comms/setup.d.ts +65 -0
  255. package/dist/comms/setup.js +259 -0
  256. package/dist/comms/thread-evidence.d.ts +28 -0
  257. package/dist/comms/thread-evidence.js +30 -0
  258. package/dist/comms/types.d.ts +76 -0
  259. package/dist/comms/types.js +8 -0
  260. package/dist/deprecated.d.ts +90 -0
  261. package/dist/deprecated.js +106 -0
  262. package/dist/evidence/browser-hygiene.js +42 -0
  263. package/dist/evidence/desktop-recorder.d.ts +39 -0
  264. package/dist/evidence/desktop-recorder.js +340 -0
  265. package/dist/evidence/desktop-recording-artifact.d.ts +5 -0
  266. package/dist/evidence/desktop-recording-artifact.js +53 -0
  267. package/dist/evidence/desktop-recording-types.d.ts +27 -0
  268. package/dist/evidence/desktop-recording-types.js +16 -0
  269. package/dist/evidence/encoded-text.d.ts +27 -0
  270. package/dist/evidence/encoded-text.js +243 -0
  271. package/dist/evidence/frame-signature.d.ts +17 -0
  272. package/dist/evidence/frame-signature.js +111 -0
  273. package/dist/evidence/image.d.ts +24 -0
  274. package/dist/evidence/image.js +170 -0
  275. package/dist/evidence/plain-text.d.ts +8 -0
  276. package/dist/evidence/plain-text.js +16 -0
  277. package/dist/evidence/redaction.d.ts +110 -0
  278. package/dist/evidence/redaction.js +329 -0
  279. package/dist/feedback/draft.d.ts +58 -0
  280. package/dist/feedback/draft.js +309 -0
  281. package/dist/feedback/export-bundle.d.ts +6 -0
  282. package/dist/feedback/export-bundle.js +585 -0
  283. package/dist/feedback/export.d.ts +50 -0
  284. package/dist/feedback/export.js +392 -0
  285. package/dist/feedback/feedback.d.ts +37 -0
  286. package/dist/feedback/feedback.js +282 -0
  287. package/dist/feedback/proof.d.ts +8 -0
  288. package/dist/feedback/proof.js +56 -0
  289. package/dist/guest/bootstrap.d.ts +55 -0
  290. package/dist/guest/bootstrap.js +348 -0
  291. package/dist/guest/browser-tools.d.ts +8 -0
  292. package/dist/guest/browser-tools.js +72 -0
  293. package/dist/guest/chromium-text.d.ts +62 -0
  294. package/dist/guest/chromium-text.js +386 -0
  295. package/dist/guest/desktop-executor.d.ts +57 -0
  296. package/dist/guest/desktop-executor.js +256 -0
  297. package/dist/guest/desktop-keys.d.ts +8 -0
  298. package/dist/guest/desktop-keys.js +89 -0
  299. package/dist/guest/desktop-media.d.ts +70 -0
  300. package/dist/guest/desktop-media.js +385 -0
  301. package/dist/guest/desktop-native.d.ts +14 -0
  302. package/dist/guest/desktop-native.js +156 -0
  303. package/dist/guest/media-config.d.ts +15 -0
  304. package/dist/guest/media-config.js +16 -0
  305. package/dist/guest/runtime-desktop.d.ts +45 -0
  306. package/dist/guest/runtime-desktop.js +420 -0
  307. package/dist/guest/runtime-processes.d.ts +28 -0
  308. package/dist/guest/runtime-processes.js +94 -0
  309. package/dist/guest/runtime.d.ts +31 -0
  310. package/dist/guest/runtime.js +124 -0
  311. package/dist/guest-media-worker.js +184 -48
  312. package/dist/guest-runtime-main.js +23 -10
  313. package/dist/guest-runtime-revision.js +1 -1
  314. package/dist/index.d.ts +32 -83
  315. package/dist/index.js +21 -42
  316. package/dist/keys/env-file.d.ts +15 -0
  317. package/dist/keys/env-file.js +109 -0
  318. package/dist/keys/key-resolution.d.ts +58 -0
  319. package/dist/keys/key-resolution.js +389 -0
  320. package/dist/lab/adapter-extension.d.ts +75 -0
  321. package/dist/lab/adapter-extension.js +253 -0
  322. package/dist/lab/adapter-scorer-loader.d.ts +43 -0
  323. package/dist/lab/adapter-scorer-loader.js +130 -0
  324. package/dist/lab/bag-overrides.d.ts +18 -0
  325. package/dist/lab/bag-overrides.js +121 -0
  326. package/dist/lab/composition-rules.d.ts +5 -0
  327. package/dist/lab/composition-rules.js +283 -0
  328. package/dist/lab/config.d.ts +7 -0
  329. package/dist/lab/config.js +208 -0
  330. package/dist/lab/device-presets.d.ts +97 -0
  331. package/dist/lab/device-presets.js +87 -0
  332. package/dist/lab/discover.d.ts +65 -0
  333. package/dist/lab/discover.js +422 -0
  334. package/dist/lab/doctor.d.ts +39 -0
  335. package/dist/lab/doctor.js +233 -0
  336. package/dist/lab/init-paths.d.ts +5 -0
  337. package/dist/lab/init-paths.js +89 -0
  338. package/dist/lab/init-plan.d.ts +20 -0
  339. package/dist/lab/init-plan.js +163 -0
  340. package/dist/lab/init-templates.d.ts +28 -0
  341. package/dist/lab/init-templates.js +416 -0
  342. package/dist/lab/init.d.ts +39 -0
  343. package/dist/lab/init.js +287 -0
  344. package/dist/lab/keys.d.ts +2 -0
  345. package/dist/lab/keys.js +264 -0
  346. package/dist/lab/parse/actors.d.ts +14 -0
  347. package/dist/lab/parse/actors.js +453 -0
  348. package/dist/lab/parse/comms.d.ts +12 -0
  349. package/dist/lab/parse/comms.js +246 -0
  350. package/dist/lab/parse/execution.d.ts +19 -0
  351. package/dist/lab/parse/execution.js +356 -0
  352. package/dist/lab/parse/subject-state.d.ts +30 -0
  353. package/dist/lab/parse/subject-state.js +179 -0
  354. package/dist/lab/parse/subject.d.ts +9 -0
  355. package/dist/lab/parse/subject.js +420 -0
  356. package/dist/lab/parse/values.d.ts +17 -0
  357. package/dist/lab/parse/values.js +65 -0
  358. package/dist/lab/participant-assignment.d.ts +12 -0
  359. package/dist/lab/participant-assignment.js +19 -0
  360. package/dist/lab/persona-resolve.d.ts +39 -0
  361. package/dist/lab/persona-resolve.js +118 -0
  362. package/dist/lab/persona.d.ts +39 -0
  363. package/dist/lab/persona.js +192 -0
  364. package/dist/lab/plan-base.d.ts +24 -0
  365. package/dist/lab/plan-base.js +113 -0
  366. package/dist/lab/plan-participants.d.ts +81 -0
  367. package/dist/lab/plan-participants.js +92 -0
  368. package/dist/lab/plan-types.d.ts +269 -0
  369. package/dist/lab/plan-types.js +5 -0
  370. package/dist/lab/plan.d.ts +27 -0
  371. package/dist/lab/plan.js +156 -0
  372. package/dist/lab/preflight-probes.d.ts +3 -0
  373. package/dist/lab/preflight-probes.js +312 -0
  374. package/dist/lab/preflight-result.d.ts +7 -0
  375. package/dist/lab/preflight-result.js +43 -0
  376. package/dist/lab/preflight.d.ts +95 -0
  377. package/dist/lab/preflight.js +117 -0
  378. package/dist/lab/route-inputs.d.ts +17 -0
  379. package/dist/lab/route-inputs.js +95 -0
  380. package/dist/lab/routing.d.ts +81 -0
  381. package/dist/lab/routing.js +214 -0
  382. package/dist/lab/run-lab-events.d.ts +69 -0
  383. package/dist/lab/run-lab-events.js +95 -0
  384. package/dist/lab/run-lab-options.d.ts +82 -0
  385. package/dist/lab/run-lab-options.js +399 -0
  386. package/dist/lab/summary.d.ts +60 -0
  387. package/dist/lab/summary.js +168 -0
  388. package/dist/lab/tasks.d.ts +91 -0
  389. package/dist/lab/tasks.js +139 -0
  390. package/dist/lab/types.d.ts +813 -0
  391. package/dist/lab/types.js +6 -0
  392. package/dist/lab/validation.d.ts +67 -0
  393. package/dist/lab/validation.js +387 -0
  394. package/dist/lab/warnings.d.ts +2 -0
  395. package/dist/lab/warnings.js +338 -0
  396. package/dist/observer/artifact.d.ts +23 -0
  397. package/dist/observer/artifact.js +235 -0
  398. package/dist/observer/data.d.ts +115 -0
  399. package/dist/observer/data.js +258 -0
  400. package/dist/observer/exposure.d.ts +64 -0
  401. package/dist/observer/exposure.js +143 -0
  402. package/dist/observer/http.js +50 -0
  403. package/dist/observer/library.js +190 -0
  404. package/dist/observer/listen.js +85 -0
  405. package/dist/observer/live.d.ts +9 -0
  406. package/dist/observer/live.js +25 -0
  407. package/dist/observer/pinned-files.d.ts +30 -0
  408. package/dist/observer/pinned-files.js +160 -0
  409. package/dist/observer/render.d.ts +69 -0
  410. package/dist/observer/render.js +350 -0
  411. package/dist/observer/run-inventory.d.ts +35 -0
  412. package/dist/observer/run-inventory.js +95 -0
  413. package/dist/observer/run-routes.d.ts +37 -0
  414. package/dist/observer/run-routes.js +373 -0
  415. package/dist/observer/serve.d.ts +97 -0
  416. package/dist/observer/serve.js +305 -0
  417. package/dist/observer/static.js +369 -0
  418. package/dist/observer/tunnel.js +112 -0
  419. package/dist/observer-app.html +9 -20
  420. package/dist/routes/computer-use/bundle-parts.d.ts +50 -0
  421. package/dist/routes/computer-use/bundle-parts.js +177 -0
  422. package/dist/routes/computer-use/bundle.d.ts +56 -0
  423. package/dist/routes/computer-use/bundle.js +184 -0
  424. package/dist/routes/computer-use/diagnostics.d.ts +38 -0
  425. package/dist/routes/computer-use/diagnostics.js +94 -0
  426. package/dist/routes/computer-use/e2b-desktop/comms.d.ts +65 -0
  427. package/dist/routes/computer-use/e2b-desktop/comms.js +225 -0
  428. package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +3 -0
  429. package/dist/routes/computer-use/e2b-desktop/desktop.js +91 -0
  430. package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +65 -0
  431. package/dist/routes/computer-use/e2b-desktop/fidelity.js +156 -0
  432. package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +18 -0
  433. package/dist/routes/computer-use/e2b-desktop/prepare.js +198 -0
  434. package/dist/routes/computer-use/e2b-desktop/start.d.ts +14 -0
  435. package/dist/routes/computer-use/e2b-desktop/start.js +193 -0
  436. package/dist/routes/computer-use/e2b-desktop/state.d.ts +65 -0
  437. package/dist/routes/computer-use/e2b-desktop/state.js +69 -0
  438. package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +6 -0
  439. package/dist/routes/computer-use/e2b-desktop/teardown.js +152 -0
  440. package/dist/routes/computer-use/external-comms.d.ts +20 -0
  441. package/dist/routes/computer-use/external-comms.js +55 -0
  442. package/dist/routes/computer-use/fanout-bundle.d.ts +11 -0
  443. package/dist/routes/computer-use/fanout-bundle.js +274 -0
  444. package/dist/routes/computer-use/fanout-lanes.d.ts +15 -0
  445. package/dist/routes/computer-use/fanout-lanes.js +302 -0
  446. package/dist/routes/computer-use/in-process-desktop.d.ts +17 -0
  447. package/dist/routes/computer-use/in-process-desktop.js +40 -0
  448. package/dist/routes/computer-use/lanes.d.ts +35 -0
  449. package/dist/routes/computer-use/lanes.js +321 -0
  450. package/dist/routes/computer-use/legacy-lane-spec.d.ts +62 -0
  451. package/dist/routes/computer-use/legacy-lane-spec.js +39 -0
  452. package/dist/routes/computer-use/live-flush.d.ts +42 -0
  453. package/dist/routes/computer-use/live-flush.js +154 -0
  454. package/dist/routes/computer-use/local-tree-pack.d.ts +27 -0
  455. package/dist/routes/computer-use/local-tree-pack.js +47 -0
  456. package/dist/routes/computer-use/local-vm.d.ts +20 -0
  457. package/dist/routes/computer-use/local-vm.js +218 -0
  458. package/dist/routes/computer-use/participant-desktop.d.ts +63 -0
  459. package/dist/routes/computer-use/participant-desktop.js +33 -0
  460. package/dist/routes/computer-use/participant-facts.d.ts +6 -0
  461. package/dist/routes/computer-use/participant-facts.js +22 -0
  462. package/dist/routes/computer-use/participant-model.d.ts +30 -0
  463. package/dist/routes/computer-use/participant-model.js +222 -0
  464. package/dist/routes/computer-use/participant-prompt.d.ts +53 -0
  465. package/dist/routes/computer-use/participant-prompt.js +87 -0
  466. package/dist/routes/computer-use/participant-runs.d.ts +67 -0
  467. package/dist/routes/computer-use/participant-runs.js +255 -0
  468. package/dist/routes/computer-use/plan.d.ts +56 -0
  469. package/dist/routes/computer-use/plan.js +308 -0
  470. package/dist/routes/computer-use/preflight.d.ts +26 -0
  471. package/dist/routes/computer-use/preflight.js +85 -0
  472. package/dist/routes/computer-use/rerun-selection.d.ts +19 -0
  473. package/dist/routes/computer-use/rerun-selection.js +121 -0
  474. package/dist/routes/computer-use/result.d.ts +7 -0
  475. package/dist/routes/computer-use/result.js +292 -0
  476. package/dist/routes/computer-use/route.d.ts +33 -0
  477. package/dist/routes/computer-use/route.js +145 -0
  478. package/dist/routes/computer-use/run-lanes.d.ts +59 -0
  479. package/dist/routes/computer-use/run-lanes.js +135 -0
  480. package/dist/routes/computer-use/self-report.d.ts +21 -0
  481. package/dist/routes/computer-use/self-report.js +231 -0
  482. package/dist/routes/computer-use/setup.d.ts +136 -0
  483. package/dist/routes/computer-use/setup.js +371 -0
  484. package/dist/routes/computer-use/single-bundle.d.ts +97 -0
  485. package/dist/routes/computer-use/single-bundle.js +393 -0
  486. package/dist/routes/computer-use/subject-projection.d.ts +51 -0
  487. package/dist/routes/computer-use/subject-projection.js +159 -0
  488. package/dist/routes/computer-use/types.d.ts +539 -0
  489. package/dist/routes/computer-use/types.js +37 -0
  490. package/dist/routes/preview.d.ts +13 -0
  491. package/dist/routes/preview.js +36 -0
  492. package/dist/routes/scripted/bundle.d.ts +47 -0
  493. package/dist/routes/scripted/bundle.js +195 -0
  494. package/dist/routes/scripted/plan.d.ts +30 -0
  495. package/dist/routes/scripted/plan.js +95 -0
  496. package/dist/routes/scripted/result.d.ts +48 -0
  497. package/dist/routes/scripted/result.js +176 -0
  498. package/dist/routes/scripted/route.d.ts +28 -0
  499. package/dist/routes/scripted/route.js +218 -0
  500. package/dist/routes/scripted/scenario.d.ts +21 -0
  501. package/dist/routes/scripted/scenario.js +102 -0
  502. package/dist/routes/scripted/session-result.d.ts +8 -0
  503. package/dist/routes/scripted/session-result.js +60 -0
  504. package/dist/routes/scripted/setup.d.ts +45 -0
  505. package/dist/routes/scripted/setup.js +126 -0
  506. package/dist/routes/scripted/subject.d.ts +49 -0
  507. package/dist/routes/scripted/subject.js +156 -0
  508. package/dist/routes/scripted/surface-records.d.ts +26 -0
  509. package/dist/routes/scripted/surface-records.js +88 -0
  510. package/dist/routes/scripted/surface-sessions.d.ts +13 -0
  511. package/dist/routes/scripted/surface-sessions.js +40 -0
  512. package/dist/routes/scripted/types.d.ts +88 -0
  513. package/dist/routes/scripted/types.js +3 -0
  514. package/dist/routes/shared-world/bundle.d.ts +20 -0
  515. package/dist/routes/shared-world/bundle.js +446 -0
  516. package/dist/routes/shared-world/checkpoints.d.ts +25 -0
  517. package/dist/routes/shared-world/checkpoints.js +46 -0
  518. package/dist/routes/shared-world/comms.d.ts +68 -0
  519. package/dist/routes/shared-world/comms.js +176 -0
  520. package/dist/routes/shared-world/external-public.d.ts +21 -0
  521. package/dist/routes/shared-world/external-public.js +130 -0
  522. package/dist/routes/shared-world/handoff.d.ts +62 -0
  523. package/dist/routes/shared-world/handoff.js +348 -0
  524. package/dist/routes/shared-world/lobby-code.d.ts +25 -0
  525. package/dist/routes/shared-world/lobby-code.js +152 -0
  526. package/dist/routes/shared-world/plan.d.ts +27 -0
  527. package/dist/routes/shared-world/plan.js +174 -0
  528. package/dist/routes/shared-world/provenance.d.ts +27 -0
  529. package/dist/routes/shared-world/provenance.js +65 -0
  530. package/dist/routes/shared-world/provisioned.d.ts +57 -0
  531. package/dist/routes/shared-world/provisioned.js +505 -0
  532. package/dist/routes/shared-world/result.d.ts +18 -0
  533. package/dist/routes/shared-world/result.js +327 -0
  534. package/dist/routes/shared-world/route.d.ts +21 -0
  535. package/dist/routes/shared-world/route.js +277 -0
  536. package/dist/routes/shared-world/seat-records.d.ts +20 -0
  537. package/dist/routes/shared-world/seat-records.js +213 -0
  538. package/dist/routes/shared-world/seats.d.ts +38 -0
  539. package/dist/routes/shared-world/seats.js +208 -0
  540. package/dist/routes/shared-world/setup.d.ts +48 -0
  541. package/dist/routes/shared-world/setup.js +200 -0
  542. package/dist/routes/shared-world/types.d.ts +354 -0
  543. package/dist/routes/shared-world/types.js +29 -0
  544. package/dist/routes/terminal/adapter.d.ts +37 -0
  545. package/dist/routes/terminal/adapter.js +201 -0
  546. package/dist/routes/terminal/bundle.d.ts +79 -0
  547. package/dist/routes/terminal/bundle.js +305 -0
  548. package/dist/routes/terminal/credentials.d.ts +34 -0
  549. package/dist/routes/terminal/credentials.js +102 -0
  550. package/dist/routes/terminal/dry-run.d.ts +24 -0
  551. package/dist/routes/terminal/dry-run.js +157 -0
  552. package/dist/routes/terminal/encoding.js +79 -0
  553. package/dist/routes/terminal/ledger.d.ts +49 -0
  554. package/dist/routes/terminal/ledger.js +170 -0
  555. package/dist/routes/terminal/lifetime.d.ts +10 -0
  556. package/dist/routes/terminal/lifetime.js +22 -0
  557. package/dist/routes/terminal/live-finish.d.ts +31 -0
  558. package/dist/routes/terminal/live-finish.js +215 -0
  559. package/dist/routes/terminal/live-sandbox.d.ts +69 -0
  560. package/dist/routes/terminal/live-sandbox.js +452 -0
  561. package/dist/routes/terminal/persona.d.ts +20 -0
  562. package/dist/routes/terminal/persona.js +34 -0
  563. package/dist/routes/terminal/plan.d.ts +21 -0
  564. package/dist/routes/terminal/plan.js +115 -0
  565. package/dist/routes/terminal/recorder.d.ts +23 -0
  566. package/dist/routes/terminal/recorder.js +77 -0
  567. package/dist/routes/terminal/result.d.ts +47 -0
  568. package/dist/routes/terminal/result.js +114 -0
  569. package/dist/routes/terminal/route.d.ts +23 -0
  570. package/dist/routes/terminal/route.js +170 -0
  571. package/dist/routes/terminal/runtime-auth.d.ts +12 -0
  572. package/dist/routes/terminal/runtime-auth.js +23 -0
  573. package/dist/routes/terminal/runtime.d.ts +14 -0
  574. package/dist/routes/terminal/runtime.js +47 -0
  575. package/dist/routes/terminal/sandbox.d.ts +35 -0
  576. package/dist/routes/terminal/sandbox.js +126 -0
  577. package/dist/routes/terminal/session.d.ts +25 -0
  578. package/dist/routes/terminal/session.js +199 -0
  579. package/dist/routes/terminal/token-usage.d.ts +15 -0
  580. package/dist/routes/terminal/token-usage.js +93 -0
  581. package/dist/routes/terminal/trace.d.ts +40 -0
  582. package/dist/routes/terminal/trace.js +172 -0
  583. package/dist/routes/terminal/types.d.ts +342 -0
  584. package/dist/routes/terminal/types.js +31 -0
  585. package/dist/run/bundle-shape.d.ts +7 -0
  586. package/dist/run/bundle-shape.js +369 -0
  587. package/dist/run/bundle.d.ts +547 -0
  588. package/dist/run/bundle.js +44 -0
  589. package/dist/run/concurrency.js +24 -0
  590. package/dist/run/contained-output.d.ts +50 -0
  591. package/dist/run/contained-output.js +351 -0
  592. package/dist/run/cost-summary.d.ts +28 -0
  593. package/dist/run/cost-summary.js +213 -0
  594. package/dist/run/costs.js +140 -0
  595. package/dist/run/detail.d.ts +62 -0
  596. package/dist/run/detail.js +139 -0
  597. package/dist/run/dry-run-inputs.d.ts +9 -0
  598. package/dist/run/dry-run-inputs.js +90 -0
  599. package/dist/run/dry-run.d.ts +6 -0
  600. package/dist/run/dry-run.js +362 -0
  601. package/dist/run/feedback-shape.d.ts +7 -0
  602. package/dist/run/feedback-shape.js +89 -0
  603. package/dist/run/git-state.d.ts +35 -0
  604. package/dist/run/git-state.js +316 -0
  605. package/dist/run/git-workspace.d.ts +32 -0
  606. package/dist/run/git-workspace.js +450 -0
  607. package/dist/run/judge.d.ts +210 -0
  608. package/dist/run/judge.js +240 -0
  609. package/dist/run/locate.d.ts +22 -0
  610. package/dist/run/locate.js +122 -0
  611. package/dist/run/outcomes.d.ts +31 -0
  612. package/dist/run/outcomes.js +210 -0
  613. package/dist/run/participant-records.d.ts +28 -0
  614. package/dist/run/participant-records.js +63 -0
  615. package/dist/run/participant.d.ts +29 -0
  616. package/dist/run/participant.js +12 -0
  617. package/dist/run/paths.d.ts +79 -0
  618. package/dist/run/paths.js +356 -0
  619. package/dist/run/preflight-receipts.d.ts +46 -0
  620. package/dist/run/preflight-receipts.js +173 -0
  621. package/dist/run/pricing.d.ts +124 -0
  622. package/dist/run/pricing.js +298 -0
  623. package/dist/run/project.d.ts +8 -0
  624. package/dist/run/project.js +103 -0
  625. package/dist/run/projection.d.ts +184 -0
  626. package/dist/run/projection.js +356 -0
  627. package/dist/run/reclaim.d.ts +41 -0
  628. package/dist/run/reclaim.js +183 -0
  629. package/dist/run/results.d.ts +88 -0
  630. package/dist/run/results.js +3 -0
  631. package/dist/run/run-index.d.ts +107 -0
  632. package/dist/run/run-index.js +243 -0
  633. package/dist/run/run.d.ts +103 -0
  634. package/dist/run/run.js +199 -0
  635. package/dist/run/sandbox-receipts.d.ts +31 -0
  636. package/dist/run/sandbox-receipts.js +49 -0
  637. package/dist/run/shared-world-evidence.d.ts +220 -0
  638. package/dist/run/shared-world-evidence.js +49 -0
  639. package/dist/run/shared-world-shape.d.ts +26 -0
  640. package/dist/run/shared-world-shape.js +181 -0
  641. package/dist/run/stats.d.ts +82 -0
  642. package/dist/run/stats.js +258 -0
  643. package/dist/run/status.d.ts +111 -0
  644. package/dist/run/status.js +176 -0
  645. package/dist/run/stored-runs.d.ts +38 -0
  646. package/dist/run/stored-runs.js +273 -0
  647. package/dist/run/stream-shape.d.ts +4 -0
  648. package/dist/run/stream-shape.js +160 -0
  649. package/dist/run/streams.d.ts +257 -0
  650. package/dist/run/streams.js +12 -0
  651. package/dist/run/study-files.d.ts +35 -0
  652. package/dist/run/study-files.js +164 -0
  653. package/dist/run/terminal-contract.d.ts +25 -0
  654. package/dist/run/terminal-contract.js +47 -0
  655. package/dist/run/text.d.ts +2 -0
  656. package/dist/run/text.js +4 -0
  657. package/dist/run/transient-comms-secrets.js +72 -0
  658. package/dist/run/type-guards.d.ts +6 -0
  659. package/dist/run/type-guards.js +18 -0
  660. package/dist/run-lab.d.ts +110 -0
  661. package/dist/run-lab.js +148 -0
  662. package/dist/subject/clone.d.ts +37 -0
  663. package/dist/subject/clone.js +62 -0
  664. package/dist/subject/desktop-cli.d.ts +17 -0
  665. package/dist/subject/desktop-cli.js +51 -0
  666. package/dist/subject/local-tree-archive.d.ts +82 -0
  667. package/dist/subject/local-tree-archive.js +431 -0
  668. package/dist/subject/local-tree.d.ts +28 -0
  669. package/dist/subject/local-tree.js +58 -0
  670. package/dist/subject/node-bootstrap.d.ts +12 -0
  671. package/dist/subject/node-bootstrap.js +66 -0
  672. package/dist/subject/runtime.d.ts +13 -0
  673. package/dist/subject/runtime.js +50 -0
  674. package/dist/subject/serve.d.ts +39 -0
  675. package/dist/subject/serve.js +249 -0
  676. package/dist/subject/state.d.ts +23 -0
  677. package/dist/subject/state.js +58 -0
  678. package/dist/subject/steps.d.ts +37 -0
  679. package/dist/subject/steps.js +39 -0
  680. package/dist/substrates/command-failure.d.ts +23 -0
  681. package/dist/substrates/command-failure.js +45 -0
  682. package/dist/substrates/desktop-session.d.ts +41 -0
  683. package/dist/substrates/desktop-session.js +59 -0
  684. package/dist/substrates/detached.d.ts +55 -0
  685. package/dist/substrates/detached.js +139 -0
  686. package/dist/substrates/e2b/cdp-probe.d.ts +99 -0
  687. package/dist/substrates/e2b/cdp-probe.js +556 -0
  688. package/dist/substrates/e2b/desktop-browser.d.ts +81 -0
  689. package/dist/substrates/e2b/desktop-browser.js +410 -0
  690. package/dist/substrates/e2b/desktop-cdp.d.ts +77 -0
  691. package/dist/substrates/e2b/desktop-cdp.js +211 -0
  692. package/dist/substrates/e2b/desktop-executor.d.ts +92 -0
  693. package/dist/substrates/e2b/desktop-executor.js +302 -0
  694. package/dist/substrates/e2b/desktop-geometry.d.ts +83 -0
  695. package/dist/substrates/e2b/desktop-geometry.js +331 -0
  696. package/dist/substrates/e2b/desktop-media.d.ts +29 -0
  697. package/dist/substrates/e2b/desktop-media.js +151 -0
  698. package/dist/substrates/e2b/desktop-recording.d.ts +18 -0
  699. package/dist/substrates/e2b/desktop-recording.js +238 -0
  700. package/dist/substrates/e2b/desktop-resources.d.ts +11 -0
  701. package/dist/substrates/e2b/desktop-resources.js +35 -0
  702. package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +15 -0
  703. package/dist/substrates/e2b/desktop-screenshot-cleanup.js +66 -0
  704. package/dist/substrates/e2b/lifetime.d.ts +12 -0
  705. package/dist/substrates/e2b/lifetime.js +18 -0
  706. package/dist/substrates/e2b/sandbox.d.ts +102 -0
  707. package/dist/substrates/e2b/sandbox.js +202 -0
  708. package/dist/substrates/e2b/sdk.d.ts +194 -0
  709. package/dist/substrates/e2b/sdk.js +168 -0
  710. package/dist/substrates/e2b/shell.d.ts +10 -0
  711. package/dist/substrates/e2b/shell.js +61 -0
  712. package/dist/substrates/local/captured-inbox.d.ts +6 -0
  713. package/dist/substrates/local/captured-inbox.js +87 -0
  714. package/dist/substrates/local/firecracker-desktop.d.ts +25 -0
  715. package/dist/substrates/local/firecracker-desktop.js +315 -0
  716. package/dist/substrates/local/runtime-config.d.ts +6 -0
  717. package/dist/substrates/local/runtime-config.js +91 -0
  718. package/dist/substrates/local/runtime-host.d.ts +30 -0
  719. package/dist/substrates/local/runtime-host.js +143 -0
  720. package/dist/substrates/local/runtime-release.d.ts +5 -0
  721. package/dist/substrates/local/runtime-release.js +32 -0
  722. package/dist/substrates/local/runtime-ssh.d.ts +9 -0
  723. package/dist/substrates/local/runtime-ssh.js +129 -0
  724. package/dist/substrates/local/runtime.d.ts +25 -0
  725. package/dist/substrates/local/runtime.js +190 -0
  726. package/dist/substrates/shell.d.ts +44 -0
  727. package/dist/substrates/shell.js +22 -0
  728. package/dist/tui/actions.d.ts +39 -0
  729. package/dist/tui/actions.js +203 -0
  730. package/dist/tui/contract.d.ts +144 -0
  731. package/dist/tui/contract.js +52 -0
  732. package/dist/tui/launch.js +172 -0
  733. package/dist/tui/project.d.ts +10 -0
  734. package/dist/tui/project.js +17 -0
  735. package/dist/tui-app.js +125 -125
  736. package/dist/verify/actor.d.ts +27 -0
  737. package/dist/verify/actor.js +292 -0
  738. package/dist/verify/artifacts.d.ts +47 -0
  739. package/dist/verify/artifacts.js +373 -0
  740. package/dist/verify/costs.d.ts +30 -0
  741. package/dist/verify/costs.js +129 -0
  742. package/dist/verify/liveness.d.ts +7 -0
  743. package/dist/verify/liveness.js +72 -0
  744. package/dist/verify/rerun.d.ts +3 -0
  745. package/dist/verify/rerun.js +46 -0
  746. package/dist/verify/shared-world-concurrent.d.ts +11 -0
  747. package/dist/verify/shared-world-concurrent.js +346 -0
  748. package/dist/verify/shared-world.d.ts +8 -0
  749. package/dist/verify/shared-world.js +295 -0
  750. package/dist/verify/subject.d.ts +17 -0
  751. package/dist/verify/subject.js +123 -0
  752. package/dist/verify/verify.d.ts +34 -0
  753. package/dist/verify/verify.js +333 -0
  754. package/docs/README.md +67 -0
  755. package/docs/architecture/actor-contract.md +215 -174
  756. package/docs/architecture/browser-control.md +51 -37
  757. package/docs/architecture/comms-inbox.md +8 -8
  758. package/docs/architecture/desktop-recording.md +2 -2
  759. package/docs/architecture/desktop-sessions.md +33 -21
  760. package/docs/architecture/external-public-shared-world.md +80 -64
  761. package/docs/architecture/github-feedback-loop.md +40 -27
  762. package/docs/architecture/guest-desktop.md +22 -10
  763. package/docs/architecture/local-browser-runtime.md +30 -21
  764. package/docs/architecture/observer-review.md +9 -9
  765. package/docs/architecture/observer.md +53 -57
  766. package/docs/architecture/participant-media.md +3 -3
  767. package/docs/architecture/project-layout.md +33 -137
  768. package/docs/architecture/real-email-receiving.md +7 -6
  769. package/docs/architecture/restricted-codex-analysis.md +211 -25
  770. package/docs/architecture/serve.md +89 -87
  771. package/docs/architecture/state-driven-executor.md +79 -64
  772. package/docs/architecture/task-protocol-support.md +18 -18
  773. package/docs/architecture/terminal-product-lane.md +92 -86
  774. package/docs/contracts/adapter-admission.md +8 -4
  775. package/docs/contracts/adapter-fixtures.md +6 -6
  776. package/docs/contracts/core.md +22 -24
  777. package/docs/contracts/feedback.md +33 -23
  778. package/docs/contracts/policy.md +28 -31
  779. package/docs/contracts/run-bundle.md +168 -82
  780. package/docs/contracts/schemas.md +594 -379
  781. package/docs/contracts/study-analysis.md +2 -2
  782. package/docs/contracts/study-costs.md +12 -12
  783. package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +36 -0
  784. package/docs/decisions/0002-observer-is-one-self-contained-file.md +30 -0
  785. package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +35 -0
  786. package/docs/decisions/0004-participant-desktops-stay-in-the-route.md +31 -0
  787. package/docs/decisions/README.md +16 -0
  788. package/docs/goals/current.md +22 -46
  789. package/docs/principles/actor-fidelity.md +51 -63
  790. package/docs/principles/engineering.md +81 -0
  791. package/docs/principles/invariants-and-defaults.md +48 -45
  792. package/docs/principles/self-driving-harness.md +11 -10
  793. package/docs/principles/three-roles.md +12 -13
  794. package/docs/product/automatic-analysis.md +39 -9
  795. package/docs/product/lobby-trivia-3player-external-public.md +14 -13
  796. package/docs/product/open-source-install-experience.md +34 -38
  797. package/docs/ramp/README.md +91 -213
  798. package/docs/release/open-source-readiness.md +5 -2
  799. package/docs/release/public-readiness-standard.md +1 -1
  800. package/examples/README.md +11 -0
  801. package/examples/participant/README.md +80 -0
  802. package/examples/participant/app.mjs +55 -0
  803. package/examples/participant/run.mjs +116 -0
  804. package/examples/scorer/README.md +29 -0
  805. package/examples/scorer/run.mjs +63 -0
  806. package/examples/scorer/scorer.mjs +20 -0
  807. package/package.json +61 -57
  808. package/skills/humanish/SKILL.md +112 -83
  809. package/skills/humanish/agents/openai.yaml +2 -2
  810. package/dist/actor-contract.d.ts +0 -288
  811. package/dist/actor-contract.js +0 -340
  812. package/dist/actor-contract.js.map +0 -1
  813. package/dist/actor-goal-source.js +0 -32
  814. package/dist/actor-goal-source.js.map +0 -1
  815. package/dist/actor-registry.d.ts +0 -77
  816. package/dist/actor-registry.js +0 -106
  817. package/dist/actor-registry.js.map +0 -1
  818. package/dist/actor-stop-cause.d.ts +0 -9
  819. package/dist/actor-stop-cause.js +0 -42
  820. package/dist/actor-stop-cause.js.map +0 -1
  821. package/dist/adapter-extension.d.ts +0 -76
  822. package/dist/adapter-extension.js +0 -273
  823. package/dist/adapter-extension.js.map +0 -1
  824. package/dist/adapter-scorer-loader.d.ts +0 -42
  825. package/dist/adapter-scorer-loader.js +0 -129
  826. package/dist/adapter-scorer-loader.js.map +0 -1
  827. package/dist/affordance.d.ts +0 -53
  828. package/dist/affordance.js +0 -145
  829. package/dist/affordance.js.map +0 -1
  830. package/dist/agent-session.js +0 -43
  831. package/dist/agent-session.js.map +0 -1
  832. package/dist/argv.d.ts +0 -1
  833. package/dist/argv.js +0 -8
  834. package/dist/argv.js.map +0 -1
  835. package/dist/artifact-reference.d.ts +0 -22
  836. package/dist/artifact-reference.js +0 -47
  837. package/dist/artifact-reference.js.map +0 -1
  838. package/dist/automatic-analysis-completion.d.ts +0 -25
  839. package/dist/automatic-analysis-completion.js +0 -56
  840. package/dist/automatic-analysis-completion.js.map +0 -1
  841. package/dist/automatic-analysis-config.d.ts +0 -38
  842. package/dist/automatic-analysis-config.js +0 -68
  843. package/dist/automatic-analysis-config.js.map +0 -1
  844. package/dist/automatic-study-analysis.d.ts +0 -17
  845. package/dist/automatic-study-analysis.js +0 -195
  846. package/dist/automatic-study-analysis.js.map +0 -1
  847. package/dist/browser-control-client.d.ts +0 -18
  848. package/dist/browser-control-client.js +0 -176
  849. package/dist/browser-control-client.js.map +0 -1
  850. package/dist/browser-control-dispatcher.d.ts +0 -19
  851. package/dist/browser-control-dispatcher.js +0 -147
  852. package/dist/browser-control-dispatcher.js.map +0 -1
  853. package/dist/browser-control-protocol.d.ts +0 -472
  854. package/dist/browser-control-protocol.js +0 -185
  855. package/dist/browser-control-protocol.js.map +0 -1
  856. package/dist/browser-control-recording-transfer.d.ts +0 -4
  857. package/dist/browser-control-recording-transfer.js +0 -42
  858. package/dist/browser-control-recording-transfer.js.map +0 -1
  859. package/dist/browser-control-transport.d.ts +0 -27
  860. package/dist/browser-control-transport.js +0 -177
  861. package/dist/browser-control-transport.js.map +0 -1
  862. package/dist/browser-evidence-hygiene.js +0 -43
  863. package/dist/browser-evidence-hygiene.js.map +0 -1
  864. package/dist/chrome-cdp-probe.d.ts +0 -97
  865. package/dist/chrome-cdp-probe.js +0 -536
  866. package/dist/chrome-cdp-probe.js.map +0 -1
  867. package/dist/claude-agent-sdk.d.ts +0 -94
  868. package/dist/claude-agent-sdk.js +0 -367
  869. package/dist/claude-agent-sdk.js.map +0 -1
  870. package/dist/cli.js.map +0 -1
  871. package/dist/codex-app-server-ui.d.ts +0 -39
  872. package/dist/codex-app-server-ui.js +0 -357
  873. package/dist/codex-app-server-ui.js.map +0 -1
  874. package/dist/codex-app-server.d.ts +0 -144
  875. package/dist/codex-app-server.js +0 -754
  876. package/dist/codex-app-server.js.map +0 -1
  877. package/dist/command-failure.d.ts +0 -43
  878. package/dist/command-failure.js +0 -73
  879. package/dist/command-failure.js.map +0 -1
  880. package/dist/comms-agentmail.d.ts +0 -25
  881. package/dist/comms-agentmail.js +0 -418
  882. package/dist/comms-agentmail.js.map +0 -1
  883. package/dist/comms-catch-host.d.ts +0 -52
  884. package/dist/comms-catch-host.js +0 -178
  885. package/dist/comms-catch-host.js.map +0 -1
  886. package/dist/comms-connections.d.ts +0 -52
  887. package/dist/comms-connections.js +0 -123
  888. package/dist/comms-connections.js.map +0 -1
  889. package/dist/comms-email-catch.d.ts +0 -54
  890. package/dist/comms-email-catch.js +0 -212
  891. package/dist/comms-email-catch.js.map +0 -1
  892. package/dist/comms-evidence.d.ts +0 -27
  893. package/dist/comms-evidence.js +0 -31
  894. package/dist/comms-evidence.js.map +0 -1
  895. package/dist/comms-fake-inbox.d.ts +0 -45
  896. package/dist/comms-fake-inbox.js +0 -184
  897. package/dist/comms-fake-inbox.js.map +0 -1
  898. package/dist/comms-images.d.ts +0 -7
  899. package/dist/comms-images.js +0 -39
  900. package/dist/comms-images.js.map +0 -1
  901. package/dist/comms-inbox.d.ts +0 -66
  902. package/dist/comms-inbox.js +0 -389
  903. package/dist/comms-inbox.js.map +0 -1
  904. package/dist/comms-lease-store.d.ts +0 -91
  905. package/dist/comms-lease-store.js +0 -495
  906. package/dist/comms-lease-store.js.map +0 -1
  907. package/dist/comms-receiving-evidence.d.ts +0 -46
  908. package/dist/comms-receiving-evidence.js +0 -35
  909. package/dist/comms-receiving-evidence.js.map +0 -1
  910. package/dist/comms-receiving-inbox.d.ts +0 -16
  911. package/dist/comms-receiving-inbox.js +0 -410
  912. package/dist/comms-receiving-inbox.js.map +0 -1
  913. package/dist/comms-receiving-runtime.d.ts +0 -25
  914. package/dist/comms-receiving-runtime.js +0 -45
  915. package/dist/comms-receiving-runtime.js.map +0 -1
  916. package/dist/comms-receiving-types.d.ts +0 -98
  917. package/dist/comms-receiving-types.js +0 -2
  918. package/dist/comms-receiving-types.js.map +0 -1
  919. package/dist/comms-receiving.d.ts +0 -58
  920. package/dist/comms-receiving.js +0 -554
  921. package/dist/comms-receiving.js.map +0 -1
  922. package/dist/comms-sandbox-catch.d.ts +0 -229
  923. package/dist/comms-sandbox-catch.js +0 -737
  924. package/dist/comms-sandbox-catch.js.map +0 -1
  925. package/dist/comms-setup.d.ts +0 -40
  926. package/dist/comms-setup.js +0 -121
  927. package/dist/comms-setup.js.map +0 -1
  928. package/dist/comms-types.d.ts +0 -72
  929. package/dist/comms-types.js +0 -10
  930. package/dist/comms-types.js.map +0 -1
  931. package/dist/computer-use-actor.d.ts +0 -76
  932. package/dist/computer-use-actor.js +0 -68
  933. package/dist/computer-use-actor.js.map +0 -1
  934. package/dist/computer-use.d.ts +0 -429
  935. package/dist/computer-use.js +0 -1749
  936. package/dist/computer-use.js.map +0 -1
  937. package/dist/concurrency.js +0 -27
  938. package/dist/concurrency.js.map +0 -1
  939. package/dist/concurrent-shared-world-lab.d.ts +0 -186
  940. package/dist/concurrent-shared-world-lab.js +0 -2179
  941. package/dist/concurrent-shared-world-lab.js.map +0 -1
  942. package/dist/core/git-state.d.ts +0 -33
  943. package/dist/core/git-state.js +0 -277
  944. package/dist/core/git-state.js.map +0 -1
  945. package/dist/core/git-workspace.d.ts +0 -31
  946. package/dist/core/git-workspace.js +0 -447
  947. package/dist/core/git-workspace.js.map +0 -1
  948. package/dist/core/index.d.ts +0 -4
  949. package/dist/core/index.js +0 -3
  950. package/dist/core/index.js.map +0 -1
  951. package/dist/core/run-primitives.d.ts +0 -66
  952. package/dist/core/run-primitives.js +0 -120
  953. package/dist/core/run-primitives.js.map +0 -1
  954. package/dist/cua-actor-lab.d.ts +0 -855
  955. package/dist/cua-actor-lab.js +0 -3545
  956. package/dist/cua-actor-lab.js.map +0 -1
  957. package/dist/cua-admission-limit.d.ts +0 -12
  958. package/dist/cua-admission-limit.js +0 -20
  959. package/dist/cua-admission-limit.js.map +0 -1
  960. package/dist/cua-desktop-lane.d.ts +0 -35
  961. package/dist/cua-desktop-lane.js +0 -13
  962. package/dist/cua-desktop-lane.js.map +0 -1
  963. package/dist/cua-diagnostics.d.ts +0 -38
  964. package/dist/cua-diagnostics.js +0 -68
  965. package/dist/cua-diagnostics.js.map +0 -1
  966. package/dist/cua-executor-error.js +0 -48
  967. package/dist/cua-executor-error.js.map +0 -1
  968. package/dist/cua-provider-error.d.ts +0 -16
  969. package/dist/cua-provider-error.js +0 -35
  970. package/dist/cua-provider-error.js.map +0 -1
  971. package/dist/cua-speech.js +0 -2
  972. package/dist/cua-speech.js.map +0 -1
  973. package/dist/desktop-recorder.d.ts +0 -39
  974. package/dist/desktop-recorder.js +0 -226
  975. package/dist/desktop-recorder.js.map +0 -1
  976. package/dist/desktop-recording-artifact.d.ts +0 -5
  977. package/dist/desktop-recording-artifact.js +0 -54
  978. package/dist/desktop-recording-artifact.js.map +0 -1
  979. package/dist/desktop-recording-types.d.ts +0 -24
  980. package/dist/desktop-recording-types.js +0 -14
  981. package/dist/desktop-recording-types.js.map +0 -1
  982. package/dist/desktop-session.d.ts +0 -41
  983. package/dist/desktop-session.js +0 -47
  984. package/dist/desktop-session.js.map +0 -1
  985. package/dist/device-presets.d.ts +0 -67
  986. package/dist/device-presets.js +0 -55
  987. package/dist/device-presets.js.map +0 -1
  988. package/dist/doctor-lab.d.ts +0 -38
  989. package/dist/doctor-lab.js +0 -126
  990. package/dist/doctor-lab.js.map +0 -1
  991. package/dist/e2b-cua-desktop.d.ts +0 -3
  992. package/dist/e2b-cua-desktop.js +0 -708
  993. package/dist/e2b-cua-desktop.js.map +0 -1
  994. package/dist/e2b-cua-provisioning.d.ts +0 -314
  995. package/dist/e2b-cua-provisioning.js +0 -1219
  996. package/dist/e2b-cua-provisioning.js.map +0 -1
  997. package/dist/e2b-desktop-executor.d.ts +0 -101
  998. package/dist/e2b-desktop-executor.js +0 -297
  999. package/dist/e2b-desktop-executor.js.map +0 -1
  1000. package/dist/e2b-desktop-launch.d.ts +0 -243
  1001. package/dist/e2b-desktop-launch.js +0 -234
  1002. package/dist/e2b-desktop-launch.js.map +0 -1
  1003. package/dist/e2b-desktop-media.d.ts +0 -14
  1004. package/dist/e2b-desktop-media.js +0 -58
  1005. package/dist/e2b-desktop-media.js.map +0 -1
  1006. package/dist/e2b-desktop-recording.d.ts +0 -16
  1007. package/dist/e2b-desktop-recording.js +0 -162
  1008. package/dist/e2b-desktop-recording.js.map +0 -1
  1009. package/dist/e2b-desktop-resources.d.ts +0 -11
  1010. package/dist/e2b-desktop-resources.js +0 -33
  1011. package/dist/e2b-desktop-resources.js.map +0 -1
  1012. package/dist/e2b-desktop-screenshot-cleanup.d.ts +0 -15
  1013. package/dist/e2b-desktop-screenshot-cleanup.js +0 -67
  1014. package/dist/e2b-desktop-screenshot-cleanup.js.map +0 -1
  1015. package/dist/e2b-desktop-session.d.ts +0 -7
  1016. package/dist/e2b-desktop-session.js +0 -29
  1017. package/dist/e2b-desktop-session.js.map +0 -1
  1018. package/dist/e2b-detached.d.ts +0 -53
  1019. package/dist/e2b-detached.js +0 -130
  1020. package/dist/e2b-detached.js.map +0 -1
  1021. package/dist/e2b-terminal-lab.d.ts +0 -395
  1022. package/dist/e2b-terminal-lab.js +0 -2041
  1023. package/dist/e2b-terminal-lab.js.map +0 -1
  1024. package/dist/env-file.d.ts +0 -14
  1025. package/dist/env-file.js +0 -108
  1026. package/dist/env-file.js.map +0 -1
  1027. package/dist/export-bundle.d.ts +0 -7
  1028. package/dist/export-bundle.js +0 -441
  1029. package/dist/export-bundle.js.map +0 -1
  1030. package/dist/export.d.ts +0 -49
  1031. package/dist/export.js +0 -308
  1032. package/dist/export.js.map +0 -1
  1033. package/dist/feedback-proof.d.ts +0 -8
  1034. package/dist/feedback-proof.js +0 -44
  1035. package/dist/feedback-proof.js.map +0 -1
  1036. package/dist/feedback.d.ts +0 -76
  1037. package/dist/feedback.js +0 -496
  1038. package/dist/feedback.js.map +0 -1
  1039. package/dist/first-run-path.d.ts +0 -55
  1040. package/dist/first-run-path.js +0 -136
  1041. package/dist/first-run-path.js.map +0 -1
  1042. package/dist/frame-signature.d.ts +0 -24
  1043. package/dist/frame-signature.js +0 -128
  1044. package/dist/frame-signature.js.map +0 -1
  1045. package/dist/guest-bootstrap.d.ts +0 -55
  1046. package/dist/guest-bootstrap.js +0 -285
  1047. package/dist/guest-bootstrap.js.map +0 -1
  1048. package/dist/guest-browser-tools.d.ts +0 -8
  1049. package/dist/guest-browser-tools.js +0 -66
  1050. package/dist/guest-browser-tools.js.map +0 -1
  1051. package/dist/guest-chromium-text.d.ts +0 -27
  1052. package/dist/guest-chromium-text.js +0 -281
  1053. package/dist/guest-chromium-text.js.map +0 -1
  1054. package/dist/guest-desktop-executor.d.ts +0 -22
  1055. package/dist/guest-desktop-executor.js +0 -178
  1056. package/dist/guest-desktop-executor.js.map +0 -1
  1057. package/dist/guest-desktop-media.d.ts +0 -33
  1058. package/dist/guest-desktop-media.js +0 -281
  1059. package/dist/guest-desktop-media.js.map +0 -1
  1060. package/dist/guest-desktop-native.d.ts +0 -14
  1061. package/dist/guest-desktop-native.js +0 -131
  1062. package/dist/guest-desktop-native.js.map +0 -1
  1063. package/dist/guest-media-config.d.ts +0 -15
  1064. package/dist/guest-media-config.js +0 -8
  1065. package/dist/guest-media-config.js.map +0 -1
  1066. package/dist/guest-media-worker.js.map +0 -1
  1067. package/dist/guest-runtime-desktop.d.ts +0 -42
  1068. package/dist/guest-runtime-desktop.js +0 -314
  1069. package/dist/guest-runtime-desktop.js.map +0 -1
  1070. package/dist/guest-runtime-main.js.map +0 -1
  1071. package/dist/guest-runtime-revision.js.map +0 -1
  1072. package/dist/guest-runtime.d.ts +0 -31
  1073. package/dist/guest-runtime.js +0 -99
  1074. package/dist/guest-runtime.js.map +0 -1
  1075. package/dist/image-evidence.d.ts +0 -2
  1076. package/dist/image-evidence.js +0 -47
  1077. package/dist/image-evidence.js.map +0 -1
  1078. package/dist/index.js.map +0 -1
  1079. package/dist/init-templates.d.ts +0 -25
  1080. package/dist/init-templates.js +0 -542
  1081. package/dist/init-templates.js.map +0 -1
  1082. package/dist/init.d.ts +0 -38
  1083. package/dist/init.js +0 -532
  1084. package/dist/init.js.map +0 -1
  1085. package/dist/key-resolution.d.ts +0 -67
  1086. package/dist/key-resolution.js +0 -375
  1087. package/dist/key-resolution.js.map +0 -1
  1088. package/dist/lab-app-runner.d.ts +0 -78
  1089. package/dist/lab-app-runner.js +0 -403
  1090. package/dist/lab-app-runner.js.map +0 -1
  1091. package/dist/lab-config.d.ts +0 -968
  1092. package/dist/lab-config.js +0 -2714
  1093. package/dist/lab-config.js.map +0 -1
  1094. package/dist/lab-engine.d.ts +0 -97
  1095. package/dist/lab-engine.js +0 -285
  1096. package/dist/lab-engine.js.map +0 -1
  1097. package/dist/lab-preflight.d.ts +0 -70
  1098. package/dist/lab-preflight.js +0 -388
  1099. package/dist/lab-preflight.js.map +0 -1
  1100. package/dist/lab-summary.d.ts +0 -57
  1101. package/dist/lab-summary.js +0 -126
  1102. package/dist/lab-summary.js.map +0 -1
  1103. package/dist/labs.d.ts +0 -59
  1104. package/dist/labs.js +0 -385
  1105. package/dist/labs.js.map +0 -1
  1106. package/dist/listen.js +0 -84
  1107. package/dist/listen.js.map +0 -1
  1108. package/dist/local-agent-claude-session.d.ts +0 -45
  1109. package/dist/local-agent-claude-session.js +0 -203
  1110. package/dist/local-agent-claude-session.js.map +0 -1
  1111. package/dist/local-agent-cli.d.ts +0 -121
  1112. package/dist/local-agent-cli.js +0 -427
  1113. package/dist/local-agent-cli.js.map +0 -1
  1114. package/dist/local-captured-inbox.d.ts +0 -6
  1115. package/dist/local-captured-inbox.js +0 -65
  1116. package/dist/local-captured-inbox.js.map +0 -1
  1117. package/dist/local-firecracker-desktop.d.ts +0 -23
  1118. package/dist/local-firecracker-desktop.js +0 -191
  1119. package/dist/local-firecracker-desktop.js.map +0 -1
  1120. package/dist/local-firecracker-study.d.ts +0 -9
  1121. package/dist/local-firecracker-study.js +0 -135
  1122. package/dist/local-firecracker-study.js.map +0 -1
  1123. package/dist/local-runtime-config.d.ts +0 -6
  1124. package/dist/local-runtime-config.js +0 -60
  1125. package/dist/local-runtime-config.js.map +0 -1
  1126. package/dist/local-runtime-host.d.ts +0 -31
  1127. package/dist/local-runtime-host.js +0 -128
  1128. package/dist/local-runtime-host.js.map +0 -1
  1129. package/dist/local-runtime-release.d.ts +0 -7
  1130. package/dist/local-runtime-release.js +0 -33
  1131. package/dist/local-runtime-release.js.map +0 -1
  1132. package/dist/local-runtime-ssh.d.ts +0 -27
  1133. package/dist/local-runtime-ssh.js +0 -91
  1134. package/dist/local-runtime-ssh.js.map +0 -1
  1135. package/dist/local-runtime.d.ts +0 -25
  1136. package/dist/local-runtime.js +0 -133
  1137. package/dist/local-runtime.js.map +0 -1
  1138. package/dist/observer-data.d.ts +0 -114
  1139. package/dist/observer-data.js +0 -224
  1140. package/dist/observer-data.js.map +0 -1
  1141. package/dist/observer-library.js +0 -191
  1142. package/dist/observer-library.js.map +0 -1
  1143. package/dist/observer-serve.d.ts +0 -99
  1144. package/dist/observer-serve.js +0 -284
  1145. package/dist/observer-serve.js.map +0 -1
  1146. package/dist/observer-static.js +0 -357
  1147. package/dist/observer-static.js.map +0 -1
  1148. package/dist/observer.d.ts +0 -118
  1149. package/dist/observer.js +0 -947
  1150. package/dist/observer.js.map +0 -1
  1151. package/dist/openai-responses-cu.d.ts +0 -158
  1152. package/dist/openai-responses-cu.js +0 -714
  1153. package/dist/openai-responses-cu.js.map +0 -1
  1154. package/dist/orientation.d.ts +0 -29
  1155. package/dist/orientation.js +0 -95
  1156. package/dist/orientation.js.map +0 -1
  1157. package/dist/oss-lab.d.ts +0 -55
  1158. package/dist/oss-lab.js +0 -344
  1159. package/dist/oss-lab.js.map +0 -1
  1160. package/dist/oss-meta-lab-scoring.d.ts +0 -15
  1161. package/dist/oss-meta-lab-scoring.js +0 -145
  1162. package/dist/oss-meta-lab-scoring.js.map +0 -1
  1163. package/dist/oss-meta-lab.d.ts +0 -287
  1164. package/dist/oss-meta-lab.js +0 -4551
  1165. package/dist/oss-meta-lab.js.map +0 -1
  1166. package/dist/oss-remote-telemetry.d.ts +0 -77
  1167. package/dist/oss-remote-telemetry.js +0 -403
  1168. package/dist/oss-remote-telemetry.js.map +0 -1
  1169. package/dist/output-token-limit.js +0 -5
  1170. package/dist/output-token-limit.js.map +0 -1
  1171. package/dist/participant-assignment.d.ts +0 -12
  1172. package/dist/participant-assignment.js +0 -15
  1173. package/dist/participant-assignment.js.map +0 -1
  1174. package/dist/persona-resolve.d.ts +0 -44
  1175. package/dist/persona-resolve.js +0 -109
  1176. package/dist/persona-resolve.js.map +0 -1
  1177. package/dist/persona.d.ts +0 -35
  1178. package/dist/persona.js +0 -141
  1179. package/dist/persona.js.map +0 -1
  1180. package/dist/pi-agent-core.d.ts +0 -77
  1181. package/dist/pi-agent-core.js +0 -207
  1182. package/dist/pi-agent-core.js.map +0 -1
  1183. package/dist/pricing.d.ts +0 -145
  1184. package/dist/pricing.js +0 -277
  1185. package/dist/pricing.js.map +0 -1
  1186. package/dist/program.d.ts +0 -96
  1187. package/dist/program.js +0 -4029
  1188. package/dist/program.js.map +0 -1
  1189. package/dist/reasoning-effort.js +0 -26
  1190. package/dist/reasoning-effort.js.map +0 -1
  1191. package/dist/reclaim.d.ts +0 -31
  1192. package/dist/reclaim.js +0 -90
  1193. package/dist/reclaim.js.map +0 -1
  1194. package/dist/redaction.d.ts +0 -90
  1195. package/dist/redaction.js +0 -294
  1196. package/dist/redaction.js.map +0 -1
  1197. package/dist/restricted-codex-analysis.d.ts +0 -15
  1198. package/dist/restricted-codex-analysis.js +0 -13
  1199. package/dist/restricted-codex-analysis.js.map +0 -1
  1200. package/dist/restricted-codex-participant-policy.d.ts +0 -44
  1201. package/dist/restricted-codex-participant-policy.js +0 -43
  1202. package/dist/restricted-codex-participant-policy.js.map +0 -1
  1203. package/dist/restricted-codex-participant-run.d.ts +0 -20
  1204. package/dist/restricted-codex-participant-run.js +0 -79
  1205. package/dist/restricted-codex-participant-run.js.map +0 -1
  1206. package/dist/restricted-codex-participant.d.ts +0 -20
  1207. package/dist/restricted-codex-participant.js +0 -250
  1208. package/dist/restricted-codex-participant.js.map +0 -1
  1209. package/dist/restricted-codex-policy.d.ts +0 -64
  1210. package/dist/restricted-codex-policy.js +0 -176
  1211. package/dist/restricted-codex-policy.js.map +0 -1
  1212. package/dist/restricted-codex-session.d.ts +0 -44
  1213. package/dist/restricted-codex-session.js +0 -657
  1214. package/dist/restricted-codex-session.js.map +0 -1
  1215. package/dist/restricted-codex-transport.d.ts +0 -69
  1216. package/dist/restricted-codex-transport.js +0 -296
  1217. package/dist/restricted-codex-transport.js.map +0 -1
  1218. package/dist/run-detail.d.ts +0 -61
  1219. package/dist/run-detail.js +0 -137
  1220. package/dist/run-detail.js.map +0 -1
  1221. package/dist/run-index.d.ts +0 -71
  1222. package/dist/run-index.js +0 -206
  1223. package/dist/run-index.js.map +0 -1
  1224. package/dist/run-narration-secrets.js +0 -68
  1225. package/dist/run-narration-secrets.js.map +0 -1
  1226. package/dist/run-paths.d.ts +0 -56
  1227. package/dist/run-paths.js +0 -355
  1228. package/dist/run-paths.js.map +0 -1
  1229. package/dist/run-projection.d.ts +0 -186
  1230. package/dist/run-projection.js +0 -350
  1231. package/dist/run-projection.js.map +0 -1
  1232. package/dist/run-status.d.ts +0 -139
  1233. package/dist/run-status.js +0 -218
  1234. package/dist/run-status.js.map +0 -1
  1235. package/dist/run.d.ts +0 -1255
  1236. package/dist/run.js +0 -5947
  1237. package/dist/run.js.map +0 -1
  1238. package/dist/sandbox-receipts.d.ts +0 -19
  1239. package/dist/sandbox-receipts.js +0 -51
  1240. package/dist/sandbox-receipts.js.map +0 -1
  1241. package/dist/screenshot-image.d.ts +0 -11
  1242. package/dist/screenshot-image.js +0 -26
  1243. package/dist/screenshot-image.js.map +0 -1
  1244. package/dist/scripted-browser-actor.d.ts +0 -297
  1245. package/dist/scripted-browser-actor.js +0 -1399
  1246. package/dist/scripted-browser-actor.js.map +0 -1
  1247. package/dist/scripted-browser-lab.d.ts +0 -121
  1248. package/dist/scripted-browser-lab.js +0 -852
  1249. package/dist/scripted-browser-lab.js.map +0 -1
  1250. package/dist/secret-prompt.js +0 -36
  1251. package/dist/secret-prompt.js.map +0 -1
  1252. package/dist/selected-output-paths.d.ts +0 -52
  1253. package/dist/selected-output-paths.js +0 -366
  1254. package/dist/selected-output-paths.js.map +0 -1
  1255. package/dist/serve-exposure.d.ts +0 -62
  1256. package/dist/serve-exposure.js +0 -129
  1257. package/dist/serve-exposure.js.map +0 -1
  1258. package/dist/serve-http.js +0 -45
  1259. package/dist/serve-http.js.map +0 -1
  1260. package/dist/serve-tunnel.js +0 -113
  1261. package/dist/serve-tunnel.js.map +0 -1
  1262. package/dist/shared-world-lab.d.ts +0 -269
  1263. package/dist/shared-world-lab.js +0 -1422
  1264. package/dist/shared-world-lab.js.map +0 -1
  1265. package/dist/source-archive.d.ts +0 -82
  1266. package/dist/source-archive.js +0 -408
  1267. package/dist/source-archive.js.map +0 -1
  1268. package/dist/stats.d.ts +0 -82
  1269. package/dist/stats.js +0 -219
  1270. package/dist/stats.js.map +0 -1
  1271. package/dist/stop-conditions.d.ts +0 -39
  1272. package/dist/stop-conditions.js +0 -66
  1273. package/dist/stop-conditions.js.map +0 -1
  1274. package/dist/study-analysis-codex-config.d.ts +0 -11
  1275. package/dist/study-analysis-codex-config.js +0 -34
  1276. package/dist/study-analysis-codex-config.js.map +0 -1
  1277. package/dist/study-analysis-engine.d.ts +0 -47
  1278. package/dist/study-analysis-engine.js +0 -327
  1279. package/dist/study-analysis-engine.js.map +0 -1
  1280. package/dist/study-analysis-evidence.d.ts +0 -27
  1281. package/dist/study-analysis-evidence.js +0 -660
  1282. package/dist/study-analysis-evidence.js.map +0 -1
  1283. package/dist/study-analysis-job.d.ts +0 -97
  1284. package/dist/study-analysis-job.js +0 -214
  1285. package/dist/study-analysis-job.js.map +0 -1
  1286. package/dist/study-analysis-provider.d.ts +0 -40
  1287. package/dist/study-analysis-provider.js +0 -170
  1288. package/dist/study-analysis-provider.js.map +0 -1
  1289. package/dist/study-analysis-service.d.ts +0 -59
  1290. package/dist/study-analysis-service.js +0 -257
  1291. package/dist/study-analysis-service.js.map +0 -1
  1292. package/dist/study-analysis-sharing.d.ts +0 -11
  1293. package/dist/study-analysis-sharing.js +0 -35
  1294. package/dist/study-analysis-sharing.js.map +0 -1
  1295. package/dist/study-analysis-store.d.ts +0 -47
  1296. package/dist/study-analysis-store.js +0 -493
  1297. package/dist/study-analysis-store.js.map +0 -1
  1298. package/dist/study-analysis-validation.d.ts +0 -618
  1299. package/dist/study-analysis-validation.js +0 -384
  1300. package/dist/study-analysis-validation.js.map +0 -1
  1301. package/dist/study-analysis.d.ts +0 -206
  1302. package/dist/study-analysis.js +0 -4
  1303. package/dist/study-analysis.js.map +0 -1
  1304. package/dist/study-costs.js +0 -114
  1305. package/dist/study-costs.js.map +0 -1
  1306. package/dist/subject-runtime.d.ts +0 -23
  1307. package/dist/subject-runtime.js +0 -70
  1308. package/dist/subject-runtime.js.map +0 -1
  1309. package/dist/tasks.d.ts +0 -90
  1310. package/dist/tasks.js +0 -144
  1311. package/dist/tasks.js.map +0 -1
  1312. package/dist/telemetry.js +0 -324
  1313. package/dist/telemetry.js.map +0 -1
  1314. package/dist/terminal-agent-actor.d.ts +0 -41
  1315. package/dist/terminal-agent-actor.js +0 -25
  1316. package/dist/terminal-agent-actor.js.map +0 -1
  1317. package/dist/terminal-encoding.js +0 -80
  1318. package/dist/terminal-encoding.js.map +0 -1
  1319. package/dist/terminal-node-bootstrap.d.ts +0 -4
  1320. package/dist/terminal-node-bootstrap.js +0 -58
  1321. package/dist/terminal-node-bootstrap.js.map +0 -1
  1322. package/dist/terminal-participant-activity.d.ts +0 -6
  1323. package/dist/terminal-participant-activity.js +0 -34
  1324. package/dist/terminal-participant-activity.js.map +0 -1
  1325. package/dist/terminal-runtime-auth.d.ts +0 -13
  1326. package/dist/terminal-runtime-auth.js +0 -24
  1327. package/dist/terminal-runtime-auth.js.map +0 -1
  1328. package/dist/terminal-runtime.d.ts +0 -16
  1329. package/dist/terminal-runtime.js +0 -42
  1330. package/dist/terminal-runtime.js.map +0 -1
  1331. package/dist/terminal-token-usage.d.ts +0 -15
  1332. package/dist/terminal-token-usage.js +0 -94
  1333. package/dist/terminal-token-usage.js.map +0 -1
  1334. package/dist/tui-actions.d.ts +0 -39
  1335. package/dist/tui-actions.js +0 -178
  1336. package/dist/tui-actions.js.map +0 -1
  1337. package/dist/tui-contract.d.ts +0 -141
  1338. package/dist/tui-contract.js +0 -54
  1339. package/dist/tui-contract.js.map +0 -1
  1340. package/dist/tui-launch.js +0 -167
  1341. package/dist/tui-launch.js.map +0 -1
  1342. package/dist/tui-project.d.ts +0 -9
  1343. package/dist/tui-project.js +0 -18
  1344. package/dist/tui-project.js.map +0 -1
  1345. package/docs/architecture/examples/state-driven-local-app/README.md +0 -80
  1346. package/docs/architecture/examples/state-driven-local-app/app.mjs +0 -48
  1347. package/docs/architecture/examples/state-driven-local-app/runner.mjs +0 -105
  1348. package/docs/architecture/local-codex-tui-actor.md +0 -213
  1349. package/docs/architecture/oss-lab-poc.md +0 -250
  1350. package/docs/architecture/runtime-broker-core.md +0 -30
  1351. package/docs/release/0.100.0-local-setup.md +0 -31
  1352. package/docs/release/0.100.1-participant-continuity.md +0 -20
  1353. package/docs/release/0.101.0-codex-ui-tools.md +0 -28
  1354. package/docs/release/0.102.0-participant-media.md +0 -43
  1355. package/docs/release/0.103.0-desktop-recording.md +0 -29
  1356. package/docs/release/0.103.1-analysis-capture-allocation.md +0 -18
  1357. package/docs/release/0.103.2-analysis-ending-context.md +0 -21
  1358. package/docs/release/0.104.0-local-captured-inboxes.md +0 -29
  1359. package/docs/release/0.104.1-recording-startup.md +0 -24
  1360. package/docs/release/0.104.2-recording-timestamps.md +0 -32
  1361. package/docs/release/0.104.3-local-smtp-catch.md +0 -15
  1362. package/docs/release/0.20.0-external-public-shared-world.md +0 -43
  1363. package/docs/release/0.84.0-redacted-evidence.md +0 -42
  1364. package/docs/release/0.84.1-portable-feedback.md +0 -20
  1365. package/docs/release/0.85.0-observer-review.md +0 -56
  1366. package/docs/release/0.85.1-observer-continuity.md +0 -20
  1367. package/docs/release/0.86.0-participant-evidence.md +0 -50
  1368. package/docs/release/0.86.1-task-preflight-saved-recordings.md +0 -40
  1369. package/docs/release/0.87.0-participant-endings-and-phone-review.md +0 -64
  1370. package/docs/release/0.88.0-study-diagnostics.md +0 -43
  1371. package/docs/release/0.88.1-completion-evidence-and-local-app.md +0 -79
  1372. package/docs/release/0.88.2-sequential-study-budgets.md +0 -57
  1373. package/docs/release/0.89.0-study-findings.md +0 -79
  1374. package/docs/release/0.89.1-analysis-finished-notice.md +0 -24
  1375. package/docs/release/0.90.0-automatic-analysis.md +0 -21
  1376. package/docs/release/0.91.0-analysis-quality-and-defaults.md +0 -33
  1377. package/docs/release/0.91.1-study-review-polish.md +0 -28
  1378. package/docs/release/0.92.0-grid-playback.md +0 -22
  1379. package/docs/release/0.93.0-global-playback.md +0 -26
  1380. package/docs/release/0.93.1-observer-review-controls.md +0 -24
  1381. package/docs/release/0.94.0-reliability.md +0 -48
  1382. package/docs/release/0.95.0-connections-setup.md +0 -38
  1383. package/docs/release/0.96.0-real-email-receiving.md +0 -47
  1384. package/docs/release/0.96.1-browser-navigation.md +0 -22
  1385. package/docs/release/0.97.0-codex-account-analysis.md +0 -45
  1386. package/docs/release/0.98.0-local-browser-studies.md +0 -31
  1387. package/docs/release/0.99.0-local-browser-mac.md +0 -34
  1388. package/docs/release/0.99.1-action-recovery.md +0 -19
  1389. /package/dist/{agent-session.d.ts → actors/agent-session.d.ts} +0 -0
  1390. /package/dist/{cua-executor-error.d.ts → actors/computer-use/executor-error.d.ts} +0 -0
  1391. /package/dist/{cua-speech.d.ts → actors/computer-use/speech.d.ts} +0 -0
  1392. /package/dist/{actor-goal-source.d.ts → actors/goal-source.d.ts} +0 -0
  1393. /package/dist/{output-token-limit.d.ts → actors/output-token-limit.d.ts} +0 -0
  1394. /package/dist/{reasoning-effort.d.ts → actors/reasoning-effort.d.ts} +0 -0
  1395. /package/dist/{secret-prompt.d.ts → cli/secret-prompt.d.ts} +0 -0
  1396. /package/dist/{telemetry.d.ts → cli/telemetry.d.ts} +0 -0
  1397. /package/dist/{browser-evidence-hygiene.d.ts → evidence/browser-hygiene.d.ts} +0 -0
  1398. /package/dist/{serve-http.d.ts → observer/http.d.ts} +0 -0
  1399. /package/dist/{observer-library.d.ts → observer/library.d.ts} +0 -0
  1400. /package/dist/{listen.d.ts → observer/listen.d.ts} +0 -0
  1401. /package/dist/{observer-static.d.ts → observer/static.d.ts} +0 -0
  1402. /package/dist/{serve-tunnel.d.ts → observer/tunnel.d.ts} +0 -0
  1403. /package/dist/{terminal-encoding.d.ts → routes/terminal/encoding.d.ts} +0 -0
  1404. /package/dist/{concurrency.d.ts → run/concurrency.d.ts} +0 -0
  1405. /package/dist/{study-costs.d.ts → run/costs.d.ts} +0 -0
  1406. /package/dist/{run-narration-secrets.d.ts → run/transient-comms-secrets.d.ts} +0 -0
  1407. /package/dist/{tui-launch.d.ts → tui/launch.d.ts} +0 -0
@@ -1,19 +1,21 @@
1
1
  # Actor Contract
2
2
 
3
- Date: 2026-06-06 (current-state note updated 2026-07-14)
4
-
5
- Status: accepted contract with a partially open extension surface. Shipped:
6
- the evidence schema `humanish.actor-trace.v1` (`src/actor-contract.ts`) and a
7
- closed first-party registry of six descriptors (`src/actor-registry.ts`:
8
- `codex-app-server`, `pi-agent-core`, `claude-agent-sdk`,
9
- `openai-computer-use`, `scripted-browser`, `codex-exec`). `actors[0].type` is a
10
- real dispatch key on the computer-use, scripted-browser, and terminal-product
11
- routes. Product scoring, feedback, and artifact hooks are extension seams, but
12
- public out-of-tree actor registration and its conformance certification are not
13
- shipped. Also not shipped: the full `Actor.run(input)` interface,
14
- `RedactionHooks` injection, `ApprovalPolicy`, `StagehandCuaActor`, and the
15
- `persona-fidelity` verify check. Decision 6's capture-time screenshot stance
16
- was recanted in 0.6.0; see the inline notes and the capture-vs-publish rule in
3
+ Date: 2026-06-06 (current-state note updated 2026-09-30)
4
+
5
+ Status: accepted contract with a partially open extension surface. Shipped: the evidence
6
+ schema `humanish.actor-trace.v1` (`src/actors/contract.ts`) and a closed first-party
7
+ registry of five descriptors (`src/actors/registry.ts`: `codex-app-server`,
8
+ `openai-computer-use`, `local-agent`, `scripted-browser`, `codex-exec`). `actors[0].type`
9
+ is a real dispatch key on the computer-use, scripted-browser, and terminal-product routes.
10
+ Product scoring, feedback, and artifact hooks are extension seams, but public out-of-tree
11
+ actor registration and its conformance certification are not shipped. Also not shipped: the
12
+ full `Actor.run(input)` interface, `ApprovalPolicy`, `StagehandCuaActor`, and the
13
+ `persona-fidelity` verify check. `RedactionHooks` ships in `src/evidence/redaction.ts`, and
14
+ the computer-use loop takes it; the other adapters do not take it yet. Of the capabilities,
15
+ routing checks `lanes` and `producesScreenshots` (`src/lab/routing.ts`): an actor that
16
+ declares no screenshots cannot run on the computer-use or scripted-browser route. Decision
17
+ 6's capture-time screenshot stance was recanted in 0.6.0; see the inline notes and the
18
+ capture-vs-publish rule in
17
19
  [`docs/principles/invariants-and-defaults.md`](../principles/invariants-and-defaults.md).
18
20
 
19
21
  `codex-exec` is a real dispatch key for terminal-product labs, but the exported
@@ -21,21 +23,27 @@ descriptor `runSession` is a fail-closed compatibility entry. Live execution is
21
23
  owned by `runTerminalProductLab`, which coordinates sandbox creation,
22
24
  command-scoped runtime auth, evidence, caps, and by-id cleanup.
23
25
 
26
+ The `pi-agent-core` and `claude-agent-sdk` descriptors, the `app` run kind and the
27
+ `in-process-sdk` protocol were removed. No lab route dispatched either descriptor, and a
28
+ lab that names one now fails to parse. A signed-in Claude Code drives computer-use studies
29
+ through `local-agent`, which plugs into the provider-neutral `CuaProvider` port
30
+ (`src/actors/computer-use/loop/types.ts`, re-exported from `loop.ts`).
31
+
24
32
  ## Context
25
33
 
26
34
  > Historical context: this section describes the world as it stood when the
27
35
  > design was accepted (one real actor, hardcoded dispatch). The current state is
28
- > the six-descriptor first-party registry described in the status note above.
36
+ > the five-descriptor first-party registry described in the status note above.
29
37
 
30
38
  An actor is the thing that drives a persona scenario and produces evidence. At
31
- design time Humanish had exactly one real actor: the local Codex integration in
32
- `src/codex-app-server.ts` (plus the `codex-exec` and `codex-tui` variants in
33
- `src/run.ts`). The actor selection is a hardcoded `if (actor === ...)` dispatch,
39
+ design time humanish had exactly one real actor: the local Codex integration in
40
+ `src/actors/codex/app-server.ts` (plus the `codex-exec` and `codex-tui` variants in
41
+ `src/run/`). The actor selection is a hardcoded `if (actor === ...)` dispatch,
34
42
  `RunStream.codex` is Codex-shaped, and the evidence schema is
35
43
  `humanish.codex-app-server-trace.v1`.
36
44
 
37
- That is a ceiling. Humanish's value is being a public-safe harness for persona and
38
- agent user-studies, and the agent harnesses our users actually run are plural:
45
+ That is a ceiling. humanish's value is being a public-safe harness for persona and
46
+ agent user-studies, and our users actually run several agent harnesses:
39
47
  OpenAI Codex, the pi stack (`@earendil-works/pi-agent-core`, `pi-coding-agent`,
40
48
  OpenClaw), Claude Code and the Claude Agent SDK, and computer-use models that
41
49
  drive a real screen. A neutral, public-safe way to run the same persona scenario
@@ -52,10 +60,11 @@ API surface.
52
60
  1. **Transport-agnostic contract; Codex stays the reference implementation.** The
53
61
  contract describes lifecycle and evidence, not transport. An adapter may be a
54
62
  subprocess protocol (Codex stdio JSON-RPC, `pi --mode rpc`, `claude -p
55
- --output-format stream-json`) or an in-process SDK (`pi-agent-core`, Claude
63
+ --output-format stream-json`) or an in-process SDK (`pi-agent-core`, Claude
56
64
  Agent SDK, Stagehand). The existing Codex app-server integration is the
57
- reference adapter; `pi-agent-core` is the first in-process-SDK adapter, chosen
58
- to prove both shapes early.
65
+ reference adapter. `pi-agent-core` was planned as the first in-process-SDK
66
+ adapter to prove both shapes early; it shipped only as a trace mapper with no
67
+ route and has been removed.
59
68
 
60
69
  2. **One normalized evidence schema: `humanish.actor-trace.v1`.** Codex `item/*`
61
70
  events, Claude `ToolUse`/`ToolResult` blocks, pi `tool_execution_*` events,
@@ -63,14 +72,15 @@ API surface.
63
72
  typed `items[]`. `humanish.codex-app-server-trace.v1` remains a back-compat
64
73
  alias during migration.
65
74
 
66
- 3. **A run is multi-turn within one trace; it stops on goal, abandonment,
67
- unrecoverable failure, or a wall-clock safety timeout, never on a turn cap.**
68
- Turn count is explicitly rejected as a stop signal: many turns usually means
69
- legitimate complex progress, so a turn budget truncates real work and rewards
70
- early quitting (it is a proxy for "too complex," not for "this user would
71
- quit"). Patience is modeled as **friction tolerance**, not a budget (see
72
- Persona section). The only hard runaway guard is the existing `timeoutMs`.
73
- One `ActorRunResult` covers a multi-step scenario.
75
+ 3. **A run is multi-turn within one trace; it stops on goal, abandonment, unrecoverable
76
+ failure, or a wall-clock safety timeout, never on a turn cap.** Turn count is explicitly
77
+ rejected as a stop signal: many turns usually means legitimate complex progress, so a
78
+ turn budget truncates real work and rewards early quitting (it is a proxy for "too
79
+ complex," not for "this user would quit"). Patience is modeled as **friction
80
+ tolerance**, not a budget (see Persona section). The only hard runaway guard is the
81
+ existing `timeoutMs`. One `ActorRunResult` covers a multi-step scenario. (Since then,
82
+ declared spend caps also end a computer-use session with `budget_reached`; neither guard
83
+ counts turns.)
74
84
 
75
85
  4. **Redaction is injected once, never re-implemented per adapter.** Every
76
86
  adapter receives `RedactionHooks` (the shared secret/path/prompt-digest
@@ -79,10 +89,10 @@ API surface.
79
89
 
80
90
  5. **The registry refuses capability mismatches.** Each adapter declares
81
91
  `ActorCapabilities`. A scenario that needs `producesScreenshots` (a GUI
82
- journey) will not be dispatched to a code-only actor that would fake success
83
- via the shell. Coverage honesty over green-by-construction.
92
+ flow) will not be dispatched to a code-only actor that would fake success
93
+ via the shell.
84
94
 
85
- 6. **Computer-use is one lane behind one adapter.** The shipped computer-use
95
+ 6. **Computer-use is one route behind one adapter.** The shipped computer-use
86
96
  actor is `openai-computer-use` (fronting the OpenAI Responses adapter); a
87
97
  `StagehandCuaActor` fronting the other raw-pixel providers (Anthropic
88
98
  computer-use, Gemini) is not-yet-shipped roadmap. Screenshots are the
@@ -91,7 +101,7 @@ API surface.
91
101
  enforced a default at capture-time; 0.6.0 recanted it. Current policy:
92
102
  frames are retained raw and full-fidelity by default in the gitignored
93
103
  `.humanish/` tree (never emitted by a publish command; this repo's CI
94
- binary-asset scan additionally blocks them from commit), and
104
+ binary-asset scan also blocks them from commit), and
95
105
  `policies.redactScreenshots: true` blurs at capture for share-as-is
96
106
  bundles. See the capture-vs-publish rule in
97
107
  [`docs/principles/invariants-and-defaults.md`](../principles/invariants-and-defaults.md).
@@ -104,95 +114,120 @@ authoritative.
104
114
  ```ts
105
115
  export const ACTOR_TRACE_SCHEMA = "humanish.actor-trace.v1";
106
116
 
107
- export type ActorStatus = "passed" | "failed" | "blocked" | "timed_out";
117
+ export type ActorStatus =
118
+ | "passed"
119
+ | "abandoned" // the participant gave up in character
120
+ | "incomplete" // time or a budget ended the session before the goal
121
+ | "blocked"
122
+ | "timed_out"
123
+ | "failed"; // the HARNESS failed
108
124
 
109
125
  export type ActorCompletionReason =
110
- | "goal_satisfied" // scenario success predicate met
111
- | "turn_completed" // harness saw an explicit done signal, no predicate
112
- | "gave_up" // persona abandoned in character: friction exceeded its tolerance
113
- | "blocked_approval" // an action was auto-declined and the actor could not proceed
114
- | "timed_out" // wall-clock deadline hit with ZERO material progress → still a FAILURE
115
- | "budget_reached" // wall-clock time budget hit AFTER productive activity (>=1 material
116
- // action) → ActorStatus "passed", a NON-FAILURE open-ended-watch
117
- // completion; distinct from goal_satisfied (no goal was claimed)
126
+ | "goal_satisfied" // scenario success predicate met
127
+ | "turn_completed" // harness saw an explicit done signal, no predicate
128
+ | "gave_up" // persona abandoned in character: friction exceeded its tolerance
129
+ | "blocked_approval" // an action was auto-declined and the actor could not proceed
130
+ | "timed_out" // wall-clock deadline hit with ZERO material progress → still a FAILURE
131
+ | "budget_reached" // a time, spend, adapter or token limit ended the session before a
132
+ // natural endpoint → ActorStatus "incomplete", even after productive
133
+ // activity; distinct from goal_satisfied (no goal was claimed)
118
134
  | "actor_error"
119
- | "step_failed" // a deterministic scripted step/expectation evaluated false: the
120
- // SUBJECT failed the script; the harness executed faithfully
121
- // (distinct from actor_error/harness_error)
135
+ | "step_failed" // a deterministic scripted step/expectation evaluated false: the
136
+ // SUBJECT failed the script; the harness executed faithfully
137
+ // (distinct from actor_error/harness_error)
122
138
  | "harness_error";
123
139
 
124
- // One normalized evidence row. Codex item/*, Claude ToolUse/ToolResult,
125
- // pi tool_execution_*, and computer_call cycles all collapse onto this.
140
+ // One normalized evidence row. Codex item/*, computer-use cycles, scripted
141
+ // browser steps and terminal-agent exec output all collapse onto this.
126
142
  export interface ActorTraceItem {
127
143
  id: string;
128
144
  kind:
129
- | "message" | "reasoning" | "tool_call" | "command" | "file_change"
130
- | "approval" | "screenshot" | "ui_action" | "plan" | "notice";
145
+ | "message"
146
+ | "reasoning"
147
+ | "tool_call"
148
+ | "command"
149
+ | "file_change"
150
+ | "approval"
151
+ | "screenshot"
152
+ | "ui_action"
153
+ | "plan"
154
+ | "notice";
131
155
  lifecycle: "started" | "completed";
132
156
  status?: string;
133
- title: string; // redacted, <= 120 chars
157
+ title: string; // redacted, <= 120 chars
134
158
  tool?: { server?: string; name?: string };
135
159
  command?: { text?: string; cwd?: string; exitCode?: number; outputTail?: string };
136
160
  screenshotRef?: { path: string; redaction: "blurred" | "ocr_scrubbed" | "none" };
137
- text?: string; // redacted
161
+ text?: string; // redacted
138
162
  }
139
163
 
140
164
  export interface ActorCapabilities {
141
165
  headless: boolean;
142
166
  structuredTrace: boolean;
143
- lanes: Array<"code" | "app" | "computer-use" | "scripted-browser" | "terminal">;
167
+ lanes: Array<"code" | "computer-use" | "scripted-browser" | "terminal">;
144
168
  producesScreenshots: boolean;
145
169
  byoModel: boolean;
146
- preGrantableApprovals: boolean; // can run unattended without a human prompt
147
- inProcessTools: boolean; // can inject product tools without a subprocess
170
+ preGrantableApprovals: boolean; // can run unattended without a human prompt
171
+ inProcessTools: boolean; // can inject product tools without a subprocess
148
172
  license: "open" | "source-available" | "proprietary";
149
173
  keyPlacement?: "external" | "in-sandbox-command-scoped";
150
174
  }
151
175
 
152
176
  export interface ActorTrace {
153
177
  schema: typeof ACTOR_TRACE_SCHEMA;
154
- provider: string; // e.g. "codex-app-server" | "pi-agent-core" | "claude-agent-sdk" | "openai-responses-cu" | "browser-persona" | "codex"
178
+ provider: string; // e.g. "codex-app-server" | "openai-responses-cu" | "browser-persona" | "codex"
155
179
  providerVersion?: string;
156
- protocol: "json-rpc" | "json-stream" | "in-process-sdk" | "cua-loop" | "scripted-steps" | "terminal-exec";
157
- lane: "code" | "app" | "computer-use" | "scripted-browser" | "terminal";
158
- persona: { id: string; traitsApplied: string[]; promptDigest: string }; // proves traits were threaded
180
+ protocol: "json-rpc" | "json-stream" | "cua-loop" | "scripted-steps" | "terminal-exec";
181
+ lane: "code" | "computer-use" | "scripted-browser" | "terminal";
182
+ persona: { id: string; traitsApplied: string[]; promptDigest: string }; // proves traits were threaded
159
183
  // "raw" = full-fidelity frames retained (valid for LOCAL use; redact before
160
184
  // publishing); "blurred"/"ocr_scrubbed" = publish-safe; "n/a" = none captured.
161
- redaction: { status: "passed"; screenshots: "n/a" | "raw" | "blurred" | "ocr_scrubbed"; notes: string };
162
- startedAt: string; completedAt: string; durationMs: number;
163
- status: ActorStatus; completionReason: ActorCompletionReason; reason: string;
185
+ redaction: {
186
+ status: "passed";
187
+ screenshots: "n/a" | "raw" | "blurred" | "ocr_scrubbed";
188
+ notes: string;
189
+ };
190
+ startedAt: string;
191
+ completedAt: string;
192
+ durationMs: number;
193
+ status: ActorStatus;
194
+ completionReason: ActorCompletionReason;
195
+ reason: string;
164
196
  ids: { sessionId?: string; threadId?: string; turnId?: string; model?: string };
165
197
  counts: Record<string, number>;
166
198
  items: ActorTraceItem[];
167
199
  tokenUsage?: { input?: number; output?: number; total?: number; costUsd?: number };
168
- estimatedCost?: ActorEstimatedCost; // humanish.actor-estimated-cost.v1 (additive)
200
+ estimatedCost?: ActorEstimatedCost; // humanish.actor-estimated-cost.v1 (additive)
169
201
  capabilities: ActorCapabilities;
170
202
  }
171
203
 
172
204
  export interface ApprovalPolicy {
173
205
  mode: "auto-decline" | "pre-grant-allowlist" | "deny-all";
174
- allow?: string[]; // e.g. ["read:*", "bash:git diff *", "mcp__browser__*"]
206
+ allow?: string[]; // e.g. ["read:*", "bash:git diff *", "mcp__browser__*"]
175
207
  onRequest(req: ApprovalRequest): ApprovalDecision; // adapter calls; harness records every call
176
208
  }
177
209
 
178
210
  export interface RedactionHooks {
179
- redactText(s: string): string;
180
- publicPath(p: string, root: string): string;
181
- redactScreenshot(buf: Buffer, meta: ScreenshotMeta): Promise<{ buf: Buffer; method: "blurred" | "ocr_scrubbed" }>;
211
+ redactText(text: string): string;
212
+ publicPath(value: string, rootCwd: string): string;
213
+ redactScreenshot(
214
+ buffer: Buffer | Uint8Array,
215
+ meta?: ScreenshotMeta,
216
+ ): Promise<{ buffer: Buffer; method: "blurred" | "ocr_scrubbed" }>;
182
217
  promptForLog(raw: string): { placeholder: string; digest: string; length: number };
183
218
  }
184
219
 
185
220
  export interface ActorRunInput {
186
221
  cwd: string;
187
- runRoot: string; // where the adapter writes events/summary/transcript
222
+ runRoot: string; // where the adapter writes events/summary/transcript
188
223
  timeoutMs: number;
189
- persona: ResolvedPersona; // FULL traits, not just {id, name}
224
+ persona: ResolvedPersona; // FULL traits, not just {id, name}
190
225
  scenario: { id: string; title: string; goal: string; successText?: string[] };
191
226
  laneFocus?: { id: string; label: string; instruction: string };
192
227
  approval: ApprovalPolicy;
193
228
  redaction: RedactionHooks;
194
229
  model?: string;
195
- actorCommand?: string[]; // override binary / transport
230
+ actorCommand?: string[]; // override binary / transport
196
231
  signal: AbortSignal;
197
232
  }
198
233
 
@@ -202,12 +237,14 @@ export interface ActorRunResult {
202
237
  reason: string;
203
238
  durationMs: number;
204
239
  trace: ActorTrace;
205
- transcriptPath: string; tracePath: string; eventsPath: string;
240
+ transcriptPath: string;
241
+ tracePath: string;
242
+ eventsPath: string;
206
243
  tail: string;
207
244
  }
208
245
 
209
246
  export interface Actor {
210
- readonly id: string; // "codex-app-server"
247
+ readonly id: string; // "codex-app-server"
211
248
  capabilities(): ActorCapabilities;
212
249
  run(input: ActorRunInput): Promise<ActorRunResult>;
213
250
  }
@@ -219,9 +256,11 @@ export interface Actor {
219
256
  turn input, drive a bounded turn loop honoring `timeoutMs` and `signal`, emit a
220
257
  single explicit `completionReason`, tear down. No adapter may block waiting on a
221
258
  human.
222
- - **Evidence.** Write the same three artifacts (`events.ndjson` redacted
223
- envelopes, `summary.json` = `ActorTrace`, `transcript.txt` human view) so the
224
- run-bundle wiring is provider-agnostic.
259
+ - **Evidence.** Write redacted events, the `ActorTrace` and a human transcript so the
260
+ run-bundle wiring is provider-agnostic. The artifact names differ by route: the Codex
261
+ app-server adapter writes `events.ndjson`, `summary.json` and `transcript.txt`; a
262
+ computer-use participant writes its trace to `actor.json` or `actors/<streamId>.json`; the
263
+ terminal route writes `terminal-events.ndjson` and `terminal-transcript.txt`.
225
264
  - **Approvals.** Call `approval.onRequest`; never embed adapter-local decline
226
265
  strings. Every call is recorded as an `items[kind=approval]`.
227
266
  - **Redaction.** Use the injected `RedactionHooks`. Never re-implement redaction
@@ -231,13 +270,13 @@ export interface Actor {
231
270
  public-safe: redacted message, coarse loop phase, last normalized UI action,
232
271
  and last screenshot reference only. Do not persist raw stacks, env values,
233
272
  target URLs, or unredacted provider payloads in the trace.
234
- - **Capabilities.** Declare them honestly; the registry uses them to refuse
235
- unsuitable dispatch.
273
+ - **Capabilities.** Declare them honestly. Routing refuses an actor whose `lanes` or
274
+ `producesScreenshots` do not fit the route; the other capabilities are not checked.
236
275
  - **Cost (estimate vs. charge).** `tokenUsage.costUsd` stays RESERVED for a
237
- real, provider-returned charge (the codex/agent-SDK path) — a bare `costUsd`
276
+ real, provider-returned charge (the codex path); a bare `costUsd`
238
277
  always means "the provider billed this". The optional `estimatedCost`
239
278
  (`humanish.actor-estimated-cost.v1`) is a SEPARATE, differently-named field: a
240
- token-derived rate-table multiply from the operator-editable `src/pricing.ts`,
279
+ token-derived rate-table multiply from the operator-editable `src/run/pricing.ts`,
241
280
  labeled honestly as an estimate and projected up into `RunBundle.cost` (see
242
281
  [`../contracts/schemas.md`](../contracts/schemas.md) → Run Cost Summary And
243
282
  Estimated Actor Cost). The CUA lab computes and attaches `estimatedCost` at the
@@ -245,50 +284,50 @@ export interface Actor {
245
284
  depends on the pricing table. An unknown model yields
246
285
  `estimatedCostUsd: null` + a `reason`, never a guessed charge.
247
286
 
248
- ## The scripted-browser lane (shipped)
287
+ ## The scripted-browser route (shipped)
249
288
 
250
- `scripted-browser` is the deterministic, model-free browser-actuation lane — distinct from
251
- `computer-use` (raw pixels + a model deciding actions) and `app`. The registered
252
- `scripted-browser` actor (`src/scripted-browser-actor.ts`) replays a committed scenario's
289
+ `scripted-browser` is the deterministic, model-free browser-actuation route, distinct from
290
+ `computer-use` (raw pixels + a model deciding actions). The registered
291
+ `scripted-browser` actor (`src/actors/scripted-browser/`) replays a committed scenario's
253
292
  browser steps with playwright against a loopback app; the steps ARE the behavior, so
254
293
  `byoModel: false` means there is NO model, and `tokenUsage` records zeros as an affirmative
255
294
  $0 declaration that is true by mechanism (no provider client is importable from that code
256
295
  path). Its trace keeps the concrete driver name `provider: "browser-persona"` (matching the
257
296
  native `humanish.browser-persona-trace.v1` it also emits) with `protocol: "scripted-steps"`.
258
297
 
259
- Completion semantics: `goal_satisfied` means the scenario's `expect` blocks — the success
260
- predicate — all held ("the app still affords this exact journey", nothing about user
261
- behavior); `step_failed` means a deterministic step or expectation evaluated false (the
262
- subject failed the script; the harness ran faithfully); `timed_out` is the journey wall-clock
263
- budget hit with NO material progress (still a failure); `harness_error` is a browser that could
264
- not launch. `gave_up` and `blocked_approval` are unreachable — no persona patience, no
265
- approvals exist on a deterministic replay.
298
+ Completion semantics: `goal_satisfied` means the scenario's `expect` blocks (the success
299
+ predicate) all held ("the app still affords this exact flow", nothing about user behavior);
300
+ `step_failed` means a deterministic step or expectation evaluated false (the subject failed
301
+ the script; the harness ran faithfully); `timed_out` is the replay hitting its wall-clock
302
+ budget, however many steps ran (a failure); `harness_error` is a browser that could not
303
+ launch. `gave_up` and `blocked_approval` are unreachable, because a deterministic replay
304
+ has no persona patience and no approvals.
266
305
 
267
306
  ### The time budget vs. a stuck timeout (`budget_reached`)
268
307
 
269
- `execution.timeoutMs` is a GENEROUS wall-clock SAFETY cap, not a goal. For an open-ended
270
- "watch it play" session there is no success predicate — productive play IS the outcome — so the
271
- computer-use loop distinguishes two ways to hit the cap:
272
-
273
- - **`budget_reached`** — the deadline was reached AFTER at least one material (non-idle) action.
274
- This maps to `ActorStatus: "passed"`: a non-failure completion, `laneOutcomeOk` returns true,
275
- the verdict is `pass`, and the CLI exits `0`. It stays a distinct `completionReason` (never
276
- `goal_satisfied`), and the trace `reason` says it reached the budget after productive activity,
277
- so a reviewer of a strictly goal-directed lab sees it hit the cap rather than reaching a goal
278
- (goal-directed labs should set a tight `timeoutMs`).
279
- - **`timed_out`** — the deadline was reached with ZERO material actions (a hung provider, an
280
- idle-only stall). This maps to `ActorStatus: "timed_out"`, `laneOutcomeOk` is false, the
281
- verdict is `fail`, and the CLI exits `2`. "Made zero progress then timed out" stays a failure.
282
-
283
- `ActorStatus` intentionally gains NO new member — the honest distinction lives in
284
- `completionReason`/`reason` — which keeps the change from rippling through ~10 provider mappers.
285
- `statusForCompletion` is an exhaustive switch with no default, so a new completion reason forces a
286
- compile-time decision about its status. ~30 min (`1_800_000`) is a reasonable default for
287
- open-ended watch; the persona still stops early on `goal_satisfied`/`gave_up`/`stopWhen`.
308
+ `execution.timeoutMs` is a GENEROUS wall-clock SAFETY cap, not a goal. An open-ended
309
+ "watch it play" session has no success predicate, because productive play is the outcome. So
310
+ the computer-use loop distinguishes two ways to hit the cap:
311
+
312
+ - **`budget_reached`**: the deadline was reached AFTER at least one material (non-idle)
313
+ action, or a spend, adapter or token limit ended the session. This maps to `ActorStatus:
314
+ "incomplete"`: the participant did not reach the goal, and the harness did not fail.
315
+ `participantOutcomeOk` is false, the verdict is `fail`, and the CLI exits `2`. The trace
316
+ `reason` and optional `stopCause` say which limit ended the session.
317
+ - **`timed_out`**: the deadline was reached with ZERO material actions (a hung provider, an
318
+ idle-only stall). This maps to `ActorStatus: "timed_out"`, `participantOutcomeOk` is false, the
319
+ verdict is `timed_out`, and the CLI exits `2`.
320
+
321
+ Earlier, `budget_reached` mapped to `passed` and `ActorStatus` had four members. It gained
322
+ `abandoned` and `incomplete` so participant outcomes are not reported as harness failures.
323
+ `statusForCompletionReason` (`src/actors/computer-use/loop/trace.ts`) is an exhaustive
324
+ switch with no default, so a new completion reason forces a compile-time decision about its
325
+ status. ~30 min (`1_800_000`) is a reasonable default for open-ended watch; the persona
326
+ still stops early on `goal_satisfied`/`gave_up`/`stopWhen`.
288
327
 
289
328
  Actuation-vs-spend gate: on the scripted lab route `scenario.mode: live` is still required
290
- even though provider spend is $0 by mechanism. The gate's justification there is ACTUATION,
291
- not cost — a live scripted run drives a real browser against a real running app
329
+ even though provider spend is $0 by mechanism. The gate's justification there is actuation,
330
+ not cost: a live scripted run drives a real browser against a real running app
292
331
  (state-mutating effects on the operator's app), which deserves the same affirmative
293
332
  declaration as spend. "Live" on this route must never silently come to mean "costs money";
294
333
  this paragraph is the record of that decision.
@@ -312,10 +351,10 @@ from interaction turns, and reported usage contributes to aggregate cost.
312
351
  The OpenAI implementation makes one request with tools disabled and structured
313
352
  output; no HTTP or policy retries. Stateless/ZDR mode does not offer retrospective
314
353
  reporting because it does not retain the required session history. The
315
- [paired live receipt](../goals/computer-use-actor/receipts/structured-closing-report-2026-09-05.md)
354
+ [paired live receipt](https://github.com/danielgwilson/humanish/blob/main/docs/goals/computer-use-actor/receipts/structured-closing-report-2026-09-05.md)
316
355
  records both report recovery and control failures in the separate legacy parser.
317
356
 
318
- ## The state-driven executor seam (shipped — the transport-agnostic intent, made real)
357
+ ## The state-driven executor seam (shipped)
319
358
 
320
359
  The `CuaExecutor` / `CuaProvider` ports are the concrete realization of the "plural harnesses /
321
360
  transport-agnostic" intent above: the computer-use loop does not require a screen or a vision
@@ -324,38 +363,39 @@ contract (`window.app.getState()` etc.) with a custom `CuaExecutor` (screenshot
324
363
  `appState` as the progress signal) paired with a **non-vision** `CuaProvider` (`requiresFrame`
325
364
  falsey), keeping the whole lab composition with NO E2B desktop and NO clone. See
326
365
  [`state-driven-executor.md`](./state-driven-executor.md) for the port, both entry points
327
- (`runComputerUseLoop` and `runLab` + `buildExecutor`/`buildProvider`), the `subject.source:
366
+ (`runComputerUseLoop` and `runLab` + `inProcess`/`createProvider`), the `subject.source:
328
367
  local-app` config surface, the `requiresFrame` provider-authoring contract, and the
329
368
  appState-is-runtime-only stance.
330
369
 
331
- ## The product-adapter extension seam (shipped — terminal-product lane, layer 6)
332
-
333
- The terminal-product lane carries the proof-roadmap layer-6 deliverable: a product
334
- adopter attaches product-specific scoring + feedback as a THIN in-repo extension
335
- WITHOUT forking core. The seam is exported contract types (`RunBundle`,
336
- `RunFeedbackCandidate`, `RunAdapterScore`, `RunMeaningfulUseScore`, `ActorTrace`,
337
- the terminal-lane `TerminalProductScoringContext` / `TerminalLedgers` / ...) plus a
338
- registrable `score` / `deriveFeedback` DI hook on `TerminalProductLabHooks` (mirror
339
- of the `CuaActorLabHooks` DI seam). The adapter records its product nouns ONLY under
340
- an adapter-NAMESPACED block (`RunFeedbackCandidate.adapter` /
341
- `RunAdapterScore.{namespace,data}`), so core's enums stay product-agnostic — no
342
- adopter noun is hardcoded into a core enum. Default (no hook) behavior is unchanged.
343
- See [`terminal-product-lane.md`](./terminal-product-lane.md#slice-4--the-product-adapter-extension-seam-layer-6)
370
+ ## The product-adapter extension seam (shipped in the terminal-product route, layer 6)
371
+
372
+ The terminal-product route carries the proof-roadmap layer-6 deliverable: a product adopter
373
+ attaches product-specific scoring + feedback as a THIN in-repo extension WITHOUT forking
374
+ core. The seam is exported contract types (`RunBundle`, `RunFeedbackCandidate`,
375
+ `RunAdapterScore`, `ActorTrace`, `AdapterScorerModule` and the terminal-route
376
+ `TerminalProductScoringContext`) plus a registrable scorer module, `RunLabOptions.scorer`,
377
+ with optional `score` and `deriveFeedback`. The older `score` / `deriveFeedback` members of
378
+ `terminalHooks` and `cuaHooks` are deprecated. The adapter records its product nouns ONLY
379
+ under an adapter-NAMESPACED block (`RunFeedbackCandidate.adapter` /
380
+ `RunAdapterScore.{namespace,data}`), so core's enums stay product-agnostic: no adopter noun
381
+ is hardcoded into a core enum. Default (no hook) behavior is unchanged. See
382
+ [`terminal-product-lane.md`](./terminal-product-lane.md#slice-4-the-product-adapter-extension-seam-layer-6)
344
383
  for the full seam and the thin-adapter conformance proof.
345
384
 
346
385
  ## Making personas load-bearing
347
386
 
348
- The bug, grounded in code: `loadDryRunSelection` (`src/run.ts`) parses persona
349
- YAML down to `{ id, name, source, sourceDigest }` and discards `summary`,
350
- `traits.{patience, technical_confidence, accessibility_needs}`, and `constraints`.
351
- The prompt builders then inject one line: `Persona: ${name}`. The persona is a
352
- label.
387
+ The original bug, now fixed: `loadDryRunInputs` (`src/run/dry-run-inputs.ts`) parsed
388
+ persona YAML down to `{ id, name, source, sourceDigest }` and discarded `summary`,
389
+ `traits.{patience, technical_confidence, accessibility_needs}`, and `constraints`. The
390
+ prompt builders then injected one line: `Persona: ${name}`. The persona was a label. It now
391
+ returns the full `resolvedPersona` from `parseResolvedPersona`.
353
392
 
354
393
  Plan:
355
394
 
356
- 1. **Parse the whole persona** into a `ResolvedPersona`:
357
- `{ id, name, summary, goals[], traits: { patience, skill, accessibilityNeeds? }, constraints[], sourceDigest }`
358
- (map `technical_confidence` to `skill`).
395
+ 1. **Parse the whole persona** into a `ResolvedPersona`: `{ id, name, summary, goals[],
396
+ traits: { patience, skill, accessibilityNeeds? }, constraints[], sourceDigest }` (map
397
+ `technical_confidence` to `skill`). The shipped shape in `src/lab/persona.ts` has no
398
+ `goals`, adds `background`, and makes every trait optional.
359
399
  2. **Compile traits into actor-neutral directives**, not prose, via a pure
360
400
  `personaToDirectives(p)`:
361
401
  - patience -> `frictionTolerance`: how much failure, dead-end, or
@@ -366,39 +406,38 @@ Plan:
366
406
  count.
367
407
  - skill -> tool/strategy bias (low-skill avoids CLI/flags and narrates
368
408
  confusion at ambiguous UI; high-skill uses shortcuts and recovery paths).
369
- - accessibilityNeeds -> concrete behavior (keyboard_first navigates by
370
- keyboard and fails a step that is mouse-only; clear_terminal_output flags
409
+ - accessibilityNeeds -> concrete behavior (keyboard_first moves through the UI
410
+ by keyboard and fails a step that is mouse-only; clear_terminal_output flags
371
411
  noisy output as a defect).
372
412
  - goals + constraints become explicit success / forbidden lists for the
373
413
  scenario predicate.
374
414
  3. **Abandonment is persona-judged, harness-corroborated, never a counter.** The
375
- persona-actor (an LLM embodying that user) decides in character when the
376
- friction is no longer worth it and stops with `completionReason: "gave_up"`,
377
- citing the specific friction. The harness corroborates with objective signals
378
- it already sees in the stream (consecutive failed/blocked actions,
379
- repeated-identical-action looping, no progress toward the success predicate)
380
- and annotates the abandonment friction as a feedback candidate. The harness
381
- imposes no turn cap; its only hard stop is the wall-clock `timeoutMs`.
415
+ persona-actor (an LLM embodying that user) decides in character when the friction is no
416
+ longer worth it and stops with `completionReason: "gave_up"`, citing the specific
417
+ friction. The harness corroborates with objective signals it already sees in the stream
418
+ (consecutive failed/blocked actions, repeated-identical-action looping, no progress
419
+ toward the success predicate) and annotates the abandonment friction as a feedback
420
+ candidate. The harness imposes no turn cap; its hard stops are the wall-clock
421
+ `timeoutMs` and declared spend caps.
382
422
  4. **Bind the same directives per harness**: pi (`systemPrompt` +
383
423
  `beforeToolCall` allow rules), Claude (`system_prompt`/`--append-system-prompt`
384
- + `allowedTools`), Codex (prepend to `turn/start` input), Stagehand (agent
385
- context + action policy). Each binds the friction-tolerance, skill, and
386
- accessibility directives identically; none uses a `max_turns`-style cap as the
387
- persona stop condition.
388
- 5. **Prove it.** `ActorTrace.persona.traitsApplied` lists the injected
389
- directives; a `persona-fidelity` verify check asserts that the friction and
390
- accessibility directives reached the actor input and that a `gave_up` run
391
- cites a concrete friction reason (not a turn count). "Did the persona drive
392
- the run" becomes a verifiable artifact, not an assertion.
393
- (Status 2026-06-11: `personaToDirectives` shipped in `src/persona.ts` and
394
- `traitsApplied` is threaded on the codex routes, but the `persona-fidelity`
395
- verify check is not-yet-shipped roadmap, and the computer-use route stubs
396
- `persona.traitsApplied` to `[]` today — see `src/cua-actor-lab.ts`.)
424
+ - `allowedTools`), Codex (prepend to `turn/start` input), Stagehand (agent
425
+ context + action policy). Each binds the friction-tolerance, skill, and
426
+ accessibility directives identically; none uses a `max_turns`-style cap as the
427
+ persona stop condition.
428
+ 5. **Prove it.** `ActorTrace.persona.traitsApplied` lists the injected directives; a
429
+ `persona-fidelity` verify check asserts that the friction and accessibility directives
430
+ reached the actor input and that a `gave_up` run cites a concrete friction reason (not a
431
+ turn count). "Did the persona drive the run" becomes a verifiable artifact. (Status
432
+ 2026-06-11: `personaToDirectives` shipped in `src/lab/persona.ts` and `traitsApplied` is
433
+ threaded on the codex-exec terminal route, but the `persona-fidelity` verify check is
434
+ not-yet-shipped roadmap. The computer-use route records `persona.traitsApplied` from the
435
+ resolved persona in `src/routes/computer-use/participant-prompt.ts`.)
397
436
 
398
437
  ## Decision: how abandonment is adjudicated
399
438
 
400
439
  "When does a synthetic persona give up?" has no obvious best answer, so the
401
- choice is recorded here rather than left implicit and silently re-litigated.
440
+ choice is recorded here so it is not silently re-litigated.
402
441
 
403
442
  Options considered:
404
443
 
@@ -408,9 +447,9 @@ Options considered:
408
447
  model-judged stop can also run uselessly to the wall-clock timeout.
409
448
  2. **Harness-adjudicated from objective signals only** (no-progress,
410
449
  repeated-failure, looping); the persona just sets a numeric threshold.
411
- Deterministic and reproducible, but mechanical, misses the subjective "this
412
- is not worth it" judgment that is the whole point of a persona, and a fixed
413
- threshold quietly drifts back toward a disguised counter.
450
+ Deterministic and reproducible, but mechanical. It misses the subjective "this
451
+ is not worth it" judgment a persona exists to make, and a fixed threshold
452
+ quietly drifts back toward a disguised counter.
414
453
  3. **Persona-judged primary, harness-corroborated backstop.** The actor decides
415
454
  in character and emits `gave_up` with the friction; the harness independently
416
455
  tracks objective signals and (a) annotates the friction as a feedback
@@ -441,12 +480,12 @@ turns as a stop signal.
441
480
 
442
481
  ## Capability matrix (target adapters)
443
482
 
444
- | Adapter | headless | structured trace | sandbox | BYO model | license | actor fit |
445
- | --- | --- | --- | --- | --- | --- | --- |
446
- | codex-app-server (reference) | yes (stdio JSON-RPC) | typed item/* | OS Seatbelt/seccomp + approvalPolicy | OpenAI-first | Apache-2.0 | code |
447
- | pi-agent-core (first new) | yes (SDK + rpc/json) | event stream + session JSONL + token/cost | BYO container + hook gating | 15+ providers, local | MIT | code, app |
448
- | claude-agent-sdk | yes (SDK + `-p` stream-json) | typed ToolUse/ToolResult + cost | OS sandbox + dontAsk/allowedTools | Anthropic-centric | SDK MIT (CLI proprietary) | code, app |
449
- | stagehand-cua (roadmap, not shipped; `openai-computer-use` is the shipped computer-use actor) | yes (SDK, mode:'cua') | structured results + replay | Playwright/Browserbase isolation | OpenAI/Anthropic/Google | MIT | computer-use |
483
+ | Adapter | headless | structured trace | sandbox | BYO model | license | actor fit |
484
+ | --------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------- | ------------------------------------ | ----------------------- | ------------------------- | ------------ |
485
+ | codex-app-server (reference) | yes (stdio JSON-RPC) | typed item/* | OS Seatbelt/seccomp + approvalPolicy | OpenAI-first | Apache-2.0 | code |
486
+ | pi-agent-core (removed) | yes (SDK + rpc/json) | event stream + session JSONL + token/cost | BYO container + hook gating | 15+ providers, local | MIT | code, app |
487
+ | claude-agent-sdk (removed) | yes (SDK + `-p` stream-json) | typed ToolUse/ToolResult + cost | OS sandbox + dontAsk/allowedTools | Anthropic-centric | SDK MIT (CLI proprietary) | code, app |
488
+ | stagehand-cua (roadmap, not shipped; `openai-computer-use` is the shipped computer-use actor) | yes (SDK, mode:'cua') | structured results + replay | Playwright/Browserbase isolation | OpenAI/Anthropic/Google | MIT | computer-use |
450
489
 
451
490
  ## Sequencing
452
491
 
@@ -465,9 +504,11 @@ turns as a stop signal.
465
504
  is provider-neutral); then a follow-up live SDK shim behind a DI seam, deferred
466
505
  until the package identity (`@earendil-works/pi-agent-core` vs
467
506
  `@mariozechner/pi-coding-agent`) and the Node `>=22.19` vs engines `>=20` gap
468
- are pinned against an installed build.
469
- 5. `claude-agent-sdk` adapter (the `app` lane).
470
- 6. Computer-use lane. (Shipped as `openai-computer-use` — registered 0.3.0,
507
+ are pinned against an installed build. The live shim never landed, and the
508
+ mapper-only descriptor was removed because no route dispatched it.
509
+ 5. `claude-agent-sdk` adapter (the `app` run kind). It shipped as a descriptor with
510
+ a live session but no route, and was removed along with the `app` run kind.
511
+ 6. Computer-use route. (Shipped as `openai-computer-use`: registered 0.3.0,
471
512
  lab-dispatched 0.4.0; `stagehand-cua` as a multi-provider front remains
472
513
  not-yet-shipped roadmap.)
473
514
  7. Cross-harness conformance test: one persona x scenario through every adapter,
@@ -480,12 +521,12 @@ turns as a stop signal.
480
521
  - Protocol/version drift across four moving harnesses. Pin every binary/SDK and
481
522
  assert the init handshake; the registry refuses an actor whose declared
482
523
  capabilities do not satisfy the scenario.
483
- - Screenshot PII in the computer-use lane. Redaction binds the PUBLISH
524
+ - Screenshot PII in the computer-use route. Redaction binds the PUBLISH
484
525
  boundary, not capture (0.6.0): raw frames stay local in gitignored
485
526
  `.humanish/` and are never emitted by a publish command (this repo's CI
486
- binary-asset scan additionally blocks them from commit);
527
+ binary-asset scan also blocks them from commit);
487
528
  `policies.redactScreenshots: true` blurs at capture for share-as-is
488
- bundles. The earlier fail-closed redacted-thumbnail default was recanted —
529
+ bundles. The earlier fail-closed redacted-thumbnail default was recanted;
489
530
  see the capture-vs-publish rule in
490
531
  [`docs/principles/invariants-and-defaults.md`](../principles/invariants-and-defaults.md).
491
532
  - Persona directives regressing into decoration. Friction tolerance and