humanish 0.106.1 → 0.108.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (668) hide show
  1. package/ARCHITECTURE.md +38 -32
  2. package/CHANGELOG.md +28 -0
  3. package/CONTEXT.md +51 -41
  4. package/README.md +152 -174
  5. package/SECURITY.md +16 -26
  6. package/TELEMETRY.md +8 -6
  7. package/dist/actors/affordance.d.ts +4 -4
  8. package/dist/actors/affordance.js +12 -12
  9. package/dist/actors/agent-session.d.ts +2 -2
  10. package/dist/actors/agent-session.js +7 -7
  11. package/dist/actors/codex/app-server-actor-trace.d.ts +1 -1
  12. package/dist/actors/codex/app-server-actor-trace.js +1 -1
  13. package/dist/actors/codex/app-server-client.js +2 -1
  14. package/dist/actors/codex/app-server-trace.d.ts +0 -1
  15. package/dist/actors/codex/app-server-trace.js +1 -3
  16. package/dist/actors/codex/app-server-ui.js +1 -1
  17. package/dist/actors/codex/app-server.js +2 -1
  18. package/dist/actors/codex/codex-admission.d.ts +91 -0
  19. package/dist/actors/codex/codex-admission.js +150 -0
  20. package/dist/actors/codex/protocol-compat.d.ts +27 -0
  21. package/dist/actors/codex/protocol-compat.js +357 -0
  22. package/dist/actors/codex/protocol-contract.d.ts +61 -0
  23. package/dist/actors/codex/protocol-contract.js +471 -0
  24. package/dist/actors/codex/restricted-executable.d.ts +28 -4
  25. package/dist/actors/codex/restricted-executable.js +104 -29
  26. package/dist/actors/codex/restricted-launch.d.ts +9 -2
  27. package/dist/actors/codex/restricted-launch.js +43 -4
  28. package/dist/actors/codex/restricted-notifications.d.ts +101 -0
  29. package/dist/actors/codex/restricted-notifications.js +277 -0
  30. package/dist/actors/codex/restricted-participant.d.ts +30 -0
  31. package/dist/actors/codex/restricted-participant.js +66 -6
  32. package/dist/actors/codex/restricted-policy.d.ts +11 -3
  33. package/dist/actors/codex/restricted-policy.js +2 -2
  34. package/dist/actors/codex/restricted-session.d.ts +16 -3
  35. package/dist/actors/codex/restricted-session.js +60 -22
  36. package/dist/actors/codex/restricted-transport.d.ts +29 -0
  37. package/dist/actors/codex/restricted-transport.js +139 -27
  38. package/dist/actors/codex/restricted-turn.d.ts +19 -4
  39. package/dist/actors/codex/restricted-turn.js +43 -30
  40. package/dist/actors/computer-use/actor.d.ts +17 -17
  41. package/dist/actors/computer-use/actor.js +6 -6
  42. package/dist/actors/computer-use/admission-limit.d.ts +1 -1
  43. package/dist/actors/computer-use/admission-limit.js +1 -1
  44. package/dist/actors/computer-use/loop/actions.d.ts +3 -3
  45. package/dist/actors/computer-use/loop/actions.js +10 -10
  46. package/dist/actors/computer-use/loop/backstop.d.ts +3 -3
  47. package/dist/actors/computer-use/loop/backstop.js +15 -13
  48. package/dist/actors/computer-use/loop/ending.d.ts +7 -7
  49. package/dist/actors/computer-use/loop/ending.js +9 -9
  50. package/dist/actors/computer-use/loop/observation.d.ts +2 -2
  51. package/dist/actors/computer-use/loop/observation.js +9 -9
  52. package/dist/actors/computer-use/loop/provider-call.d.ts +1 -1
  53. package/dist/actors/computer-use/loop/provider-call.js +1 -1
  54. package/dist/actors/computer-use/loop/session.js +3 -3
  55. package/dist/actors/computer-use/loop/spend.d.ts +2 -2
  56. package/dist/actors/computer-use/loop/spend.js +4 -4
  57. package/dist/actors/computer-use/loop/trace.js +11 -10
  58. package/dist/actors/computer-use/loop/types.d.ts +37 -26
  59. package/dist/actors/computer-use/loop/usage.js +2 -2
  60. package/dist/actors/computer-use/loop.js +4 -4
  61. package/dist/actors/computer-use/openai-context.d.ts +37 -0
  62. package/dist/actors/computer-use/openai-context.js +214 -0
  63. package/dist/actors/computer-use/openai-provider.d.ts +12 -9
  64. package/dist/actors/computer-use/openai-provider.js +47 -36
  65. package/dist/actors/computer-use/openai-requests.d.ts +36 -10
  66. package/dist/actors/computer-use/openai-requests.js +82 -15
  67. package/dist/actors/computer-use/openai-wire.d.ts +19 -7
  68. package/dist/actors/computer-use/openai-wire.js +36 -34
  69. package/dist/actors/contract.d.ts +86 -49
  70. package/dist/actors/contract.js +29 -23
  71. package/dist/actors/local-agent/claude-session.d.ts +1 -1
  72. package/dist/actors/local-agent/claude-session.js +10 -9
  73. package/dist/actors/local-agent/cli.d.ts +8 -6
  74. package/dist/actors/local-agent/cli.js +24 -28
  75. package/dist/actors/local-agent/readiness.d.ts +2 -2
  76. package/dist/actors/local-agent/readiness.js +4 -4
  77. package/dist/actors/reasoning-effort.js +6 -6
  78. package/dist/actors/registry.d.ts +10 -10
  79. package/dist/actors/registry.js +18 -17
  80. package/dist/actors/scripted-browser/actor.d.ts +8 -8
  81. package/dist/actors/scripted-browser/actor.js +16 -16
  82. package/dist/actors/scripted-browser/browser-command.js +1 -1
  83. package/dist/actors/scripted-browser/journey.js +15 -4
  84. package/dist/actors/scripted-browser/steps.js +19 -1
  85. package/dist/actors/scripted-browser/types.d.ts +12 -2
  86. package/dist/actors/stop-conditions.d.ts +1 -1
  87. package/dist/actors/stop-conditions.js +1 -3
  88. package/dist/analysis/automatic-completion.d.ts +13 -8
  89. package/dist/analysis/automatic-completion.js +14 -8
  90. package/dist/analysis/automatic-config.d.ts +1 -1
  91. package/dist/analysis/automatic-config.js +2 -2
  92. package/dist/analysis/automatic.d.ts +10 -4
  93. package/dist/analysis/automatic.js +17 -13
  94. package/dist/analysis/codex-config.d.ts +6 -2
  95. package/dist/analysis/codex-config.js +22 -14
  96. package/dist/analysis/diagnostics.d.ts +23 -0
  97. package/dist/analysis/diagnostics.js +112 -0
  98. package/dist/analysis/evidence-sources.js +2 -2
  99. package/dist/analysis/evidence.js +6 -6
  100. package/dist/analysis/execute.d.ts +7 -1
  101. package/dist/analysis/execute.js +39 -12
  102. package/dist/analysis/job.d.ts +8 -5
  103. package/dist/analysis/job.js +15 -14
  104. package/dist/analysis/load.d.ts +1 -1
  105. package/dist/analysis/load.js +5 -5
  106. package/dist/analysis/provider.d.ts +9 -1
  107. package/dist/analysis/restricted-codex.d.ts +2 -0
  108. package/dist/analysis/restricted-codex.js +10 -1
  109. package/dist/analysis/service.d.ts +2 -0
  110. package/dist/analysis/service.js +35 -16
  111. package/dist/analysis/sharing.d.ts +2 -2
  112. package/dist/analysis/sharing.js +5 -5
  113. package/dist/analysis/store-executions.d.ts +5 -5
  114. package/dist/analysis/store-executions.js +12 -12
  115. package/dist/analysis/store.d.ts +4 -4
  116. package/dist/analysis/store.js +13 -13
  117. package/dist/cli/commands/analysis-signals.d.ts +2 -1
  118. package/dist/cli/commands/analysis-signals.js +4 -1
  119. package/dist/cli/commands/analyze.js +23 -18
  120. package/dist/cli/commands/codex.js +9 -9
  121. package/dist/cli/commands/comms.js +62 -34
  122. package/dist/cli/commands/feedback.js +20 -21
  123. package/dist/cli/commands/lab-format.d.ts +5 -4
  124. package/dist/cli/commands/lab-format.js +35 -23
  125. package/dist/cli/commands/lab-route-computer-use.d.ts +0 -2
  126. package/dist/cli/commands/lab-route-computer-use.js +32 -21
  127. package/dist/cli/commands/lab-route-preview.d.ts +1 -3
  128. package/dist/cli/commands/lab-route-preview.js +7 -7
  129. package/dist/cli/commands/lab-route-run.d.ts +6 -4
  130. package/dist/cli/commands/lab-route-run.js +6 -2
  131. package/dist/cli/commands/lab-route-scripted.d.ts +0 -2
  132. package/dist/cli/commands/lab-route-scripted.js +0 -1
  133. package/dist/cli/commands/lab-route-shared-world.d.ts +0 -2
  134. package/dist/cli/commands/lab-route-shared-world.js +3 -4
  135. package/dist/cli/commands/lab-route-terminal.d.ts +0 -2
  136. package/dist/cli/commands/lab-route-terminal.js +0 -1
  137. package/dist/cli/commands/lab-run.js +84 -54
  138. package/dist/cli/commands/lab-scorer.d.ts +2 -4
  139. package/dist/cli/commands/lab-scorer.js +1 -1
  140. package/dist/cli/commands/migrate.d.ts +4 -0
  141. package/dist/cli/commands/migrate.js +65 -0
  142. package/dist/cli/commands/observe.js +168 -107
  143. package/dist/cli/commands/run-command.d.ts +10 -0
  144. package/dist/cli/commands/run-command.js +85 -0
  145. package/dist/cli/commands/run-signals.d.ts +30 -0
  146. package/dist/cli/commands/run-signals.js +146 -0
  147. package/dist/cli/commands/runs.js +137 -136
  148. package/dist/cli/commands/setup.d.ts +2 -2
  149. package/dist/cli/commands/setup.js +26 -21
  150. package/dist/cli/commands/study.d.ts +3 -0
  151. package/dist/cli/commands/study.js +182 -0
  152. package/dist/cli/commands/tui.d.ts +4 -4
  153. package/dist/cli/commands/tui.js +21 -21
  154. package/dist/cli/commands/watch.js +64 -77
  155. package/dist/cli/deprecations.d.ts +18 -0
  156. package/dist/cli/deprecations.js +48 -0
  157. package/dist/cli/doctor.d.ts +18 -5
  158. package/dist/cli/doctor.js +111 -48
  159. package/dist/cli/first-run-path.d.ts +12 -10
  160. package/dist/cli/first-run-path.js +30 -28
  161. package/dist/cli/io.d.ts +46 -10
  162. package/dist/cli/io.js +109 -30
  163. package/dist/cli/observer-follow.d.ts +2 -2
  164. package/dist/cli/observer-follow.js +5 -6
  165. package/dist/cli/orientation.d.ts +6 -3
  166. package/dist/cli/orientation.js +43 -39
  167. package/dist/cli/product-sentence.d.ts +6 -0
  168. package/dist/cli/product-sentence.js +6 -0
  169. package/dist/cli/program.d.ts +6 -1
  170. package/dist/cli/program.js +112 -43
  171. package/dist/cli/telemetry.d.ts +17 -17
  172. package/dist/cli/telemetry.js +49 -41
  173. package/dist/cli.js +1 -1
  174. package/dist/comms/capture-surface.d.ts +14 -13
  175. package/dist/comms/capture-surface.js +23 -22
  176. package/dist/comms/catch-host.d.ts +8 -8
  177. package/dist/comms/catch-host.js +14 -14
  178. package/dist/comms/connections.js +4 -4
  179. package/dist/comms/email-catch.d.ts +3 -3
  180. package/dist/comms/email-catch.js +8 -8
  181. package/dist/comms/external-evidence.d.ts +27 -0
  182. package/dist/comms/external-evidence.js +93 -0
  183. package/dist/comms/extract.js +2 -2
  184. package/dist/comms/fake-inbox.d.ts +2 -2
  185. package/dist/comms/fake-inbox.js +2 -2
  186. package/dist/comms/lease-store.js +7 -7
  187. package/dist/comms/receiving-render.d.ts +1 -1
  188. package/dist/comms/receiving-render.js +2 -2
  189. package/dist/comms/sandbox-catch-script.d.ts +6 -6
  190. package/dist/comms/sandbox-catch-script.js +6 -6
  191. package/dist/comms/sandbox-catch.d.ts +36 -37
  192. package/dist/comms/sandbox-catch.js +34 -35
  193. package/dist/comms/setup.js +42 -8
  194. package/dist/comms/thread-evidence.d.ts +1 -1
  195. package/dist/comms/thread-evidence.js +6 -6
  196. package/dist/comms/types.d.ts +6 -6
  197. package/dist/comms/types.js +4 -4
  198. package/dist/evidence/browser-hygiene.d.ts +1 -1
  199. package/dist/evidence/browser-hygiene.js +1 -1
  200. package/dist/evidence/frame-signature.d.ts +1 -1
  201. package/dist/evidence/frame-signature.js +4 -4
  202. package/dist/evidence/redaction.d.ts +3 -3
  203. package/dist/evidence/redaction.js +5 -5
  204. package/dist/evidence/secret-scrub.d.ts +9 -0
  205. package/dist/evidence/secret-scrub.js +96 -0
  206. package/dist/feedback/draft.js +41 -85
  207. package/dist/feedback/export-bundle.js +5 -5
  208. package/dist/feedback/export.d.ts +5 -1
  209. package/dist/feedback/export.js +16 -17
  210. package/dist/feedback/feedback.d.ts +3 -3
  211. package/dist/feedback/feedback.js +21 -3
  212. package/dist/guest/chromium-text.js +2 -2
  213. package/dist/guest/desktop-native.d.ts +1 -1
  214. package/dist/guest/runtime.js +1 -1
  215. package/dist/index.d.ts +14 -15
  216. package/dist/index.js +10 -11
  217. package/dist/keys/key-resolution.d.ts +7 -5
  218. package/dist/keys/key-resolution.js +40 -38
  219. package/dist/lab/adapter-extension.d.ts +35 -13
  220. package/dist/lab/adapter-extension.js +50 -134
  221. package/dist/lab/adapter-scorer-loader.d.ts +32 -12
  222. package/dist/lab/adapter-scorer-loader.js +56 -32
  223. package/dist/lab/composition-rules.js +58 -58
  224. package/dist/lab/config.js +85 -43
  225. package/dist/lab/deprecated-fields.d.ts +10 -0
  226. package/dist/lab/deprecated-fields.js +24 -0
  227. package/dist/lab/device-presets.d.ts +10 -10
  228. package/dist/lab/device-presets.js +11 -11
  229. package/dist/lab/discover.d.ts +13 -9
  230. package/dist/lab/discover.js +118 -60
  231. package/dist/lab/doctor.d.ts +53 -11
  232. package/dist/lab/doctor.js +193 -47
  233. package/dist/lab/init-plan.js +1 -3
  234. package/dist/lab/init-templates.js +147 -147
  235. package/dist/lab/init.d.ts +1 -1
  236. package/dist/lab/init.js +41 -9
  237. package/dist/lab/keys.d.ts +2 -0
  238. package/dist/lab/keys.js +43 -9
  239. package/dist/lab/lab-deps.d.ts +80 -0
  240. package/dist/lab/lab-deps.js +4 -0
  241. package/dist/lab/parse/actors.js +17 -16
  242. package/dist/lab/parse/comms.js +8 -7
  243. package/dist/lab/parse/execution.js +15 -14
  244. package/dist/lab/parse/study-v3.d.ts +23 -0
  245. package/dist/lab/parse/study-v3.js +259 -0
  246. package/dist/lab/parse/subject-state.d.ts +7 -7
  247. package/dist/lab/parse/subject-state.js +18 -17
  248. package/dist/lab/parse/subject.js +30 -29
  249. package/dist/lab/parse/values.d.ts +1 -2
  250. package/dist/lab/parse/values.js +3 -6
  251. package/dist/lab/persona-resolve.d.ts +7 -7
  252. package/dist/lab/persona-resolve.js +8 -8
  253. package/dist/lab/persona.js +1 -3
  254. package/dist/lab/plan-base.d.ts +0 -2
  255. package/dist/lab/plan-base.js +6 -4
  256. package/dist/lab/plan-participants.d.ts +7 -7
  257. package/dist/lab/plan-participants.js +2 -2
  258. package/dist/lab/plan-types.d.ts +26 -8
  259. package/dist/lab/plan.d.ts +4 -18
  260. package/dist/lab/plan.js +24 -79
  261. package/dist/lab/preflight-probes.js +11 -11
  262. package/dist/lab/preflight-result.d.ts +2 -1
  263. package/dist/lab/preflight-result.js +5 -6
  264. package/dist/lab/preflight.d.ts +7 -8
  265. package/dist/lab/preflight.js +6 -6
  266. package/dist/lab/requirements.d.ts +20 -0
  267. package/dist/lab/requirements.js +54 -0
  268. package/dist/lab/route-inputs.d.ts +23 -12
  269. package/dist/lab/route-inputs.js +48 -51
  270. package/dist/lab/routing.d.ts +42 -41
  271. package/dist/lab/routing.js +66 -68
  272. package/dist/lab/run-lab-events.d.ts +3 -11
  273. package/dist/lab/run-lab-events.js +2 -16
  274. package/dist/lab/run-lab-homes.d.ts +76 -0
  275. package/dist/lab/run-lab-homes.js +7 -0
  276. package/dist/lab/run-lab-options.d.ts +12 -66
  277. package/dist/lab/run-lab-options.js +58 -285
  278. package/dist/lab/summary.d.ts +15 -9
  279. package/dist/lab/summary.js +24 -17
  280. package/dist/lab/tasks.d.ts +15 -15
  281. package/dist/lab/tasks.js +14 -14
  282. package/dist/lab/types.d.ts +201 -195
  283. package/dist/lab/types.js +2 -0
  284. package/dist/lab/validation.d.ts +21 -21
  285. package/dist/lab/validation.js +61 -59
  286. package/dist/lab/warnings.d.ts +10 -0
  287. package/dist/lab/warnings.js +70 -41
  288. package/dist/library-aliases.d.ts +56 -0
  289. package/dist/library-aliases.js +22 -0
  290. package/dist/observer/artifact.d.ts +2 -2
  291. package/dist/observer/artifact.js +9 -9
  292. package/dist/observer/data.d.ts +6 -6
  293. package/dist/observer/data.js +7 -6
  294. package/dist/observer/exposure.d.ts +1 -1
  295. package/dist/observer/exposure.js +11 -11
  296. package/dist/observer/http.js +1 -1
  297. package/dist/observer/library.d.ts +1 -1
  298. package/dist/observer/library.js +4 -2
  299. package/dist/observer/listen.js +5 -4
  300. package/dist/observer/render.d.ts +1 -1
  301. package/dist/observer/render.js +12 -7
  302. package/dist/observer/run-routes.d.ts +4 -4
  303. package/dist/observer/run-routes.js +6 -6
  304. package/dist/observer/serve.d.ts +17 -0
  305. package/dist/observer/serve.js +41 -6
  306. package/dist/observer/tunnel.js +1 -1
  307. package/dist/observer-app.html +4 -4
  308. package/dist/routes/computer-use/bundle-parts.d.ts +9 -9
  309. package/dist/routes/computer-use/bundle-parts.js +24 -17
  310. package/dist/routes/computer-use/bundle.d.ts +4 -11
  311. package/dist/routes/computer-use/bundle.js +12 -18
  312. package/dist/routes/computer-use/diagnostics.d.ts +1 -1
  313. package/dist/routes/computer-use/diagnostics.js +1 -1
  314. package/dist/routes/computer-use/e2b-desktop/comms.d.ts +11 -11
  315. package/dist/routes/computer-use/e2b-desktop/comms.js +24 -27
  316. package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +2 -2
  317. package/dist/routes/computer-use/e2b-desktop/desktop.js +8 -11
  318. package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +16 -15
  319. package/dist/routes/computer-use/e2b-desktop/fidelity.js +20 -19
  320. package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +3 -3
  321. package/dist/routes/computer-use/e2b-desktop/prepare.js +40 -43
  322. package/dist/routes/computer-use/e2b-desktop/start.d.ts +1 -1
  323. package/dist/routes/computer-use/e2b-desktop/start.js +32 -30
  324. package/dist/routes/computer-use/e2b-desktop/state.d.ts +5 -4
  325. package/dist/routes/computer-use/e2b-desktop/state.js +5 -3
  326. package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +1 -1
  327. package/dist/routes/computer-use/e2b-desktop/teardown.js +33 -20
  328. package/dist/routes/computer-use/external-comms.d.ts +4 -4
  329. package/dist/routes/computer-use/external-comms.js +19 -43
  330. package/dist/routes/computer-use/fanout-bundle.d.ts +3 -3
  331. package/dist/routes/computer-use/fanout-bundle.js +38 -42
  332. package/dist/routes/computer-use/{fanout-lanes.js → fanout-records.js} +33 -28
  333. package/dist/routes/computer-use/in-process-desktop.d.ts +3 -10
  334. package/dist/routes/computer-use/in-process-desktop.js +3 -9
  335. package/dist/routes/computer-use/live-flush.d.ts +7 -5
  336. package/dist/routes/computer-use/live-flush.js +20 -28
  337. package/dist/routes/computer-use/{run-lanes.d.ts → live-phase.d.ts} +4 -2
  338. package/dist/routes/computer-use/{run-lanes.js → live-phase.js} +17 -16
  339. package/dist/routes/computer-use/local-tree-pack.d.ts +3 -3
  340. package/dist/routes/computer-use/local-tree-pack.js +4 -5
  341. package/dist/routes/computer-use/local-vm.d.ts +11 -8
  342. package/dist/routes/computer-use/local-vm.js +40 -67
  343. package/dist/routes/computer-use/participant-desktop.d.ts +8 -23
  344. package/dist/routes/computer-use/participant-desktop.js +5 -25
  345. package/dist/routes/computer-use/{lanes.d.ts → participant-execution.d.ts} +11 -11
  346. package/dist/routes/computer-use/{lanes.js → participant-execution.js} +39 -26
  347. package/dist/routes/computer-use/participant-facts.d.ts +7 -1
  348. package/dist/routes/computer-use/participant-facts.js +12 -1
  349. package/dist/routes/computer-use/participant-model.d.ts +25 -11
  350. package/dist/routes/computer-use/participant-model.js +76 -34
  351. package/dist/routes/computer-use/participant-prompt.d.ts +13 -13
  352. package/dist/routes/computer-use/participant-prompt.js +8 -8
  353. package/dist/routes/computer-use/participant-runs.d.ts +11 -11
  354. package/dist/routes/computer-use/participant-runs.js +18 -18
  355. package/dist/routes/computer-use/plan.d.ts +21 -29
  356. package/dist/routes/computer-use/plan.js +70 -78
  357. package/dist/routes/computer-use/preflight.d.ts +3 -5
  358. package/dist/routes/computer-use/preflight.js +40 -36
  359. package/dist/routes/computer-use/rerun-selection.js +11 -7
  360. package/dist/routes/computer-use/result.d.ts +1 -1
  361. package/dist/routes/computer-use/result.js +48 -38
  362. package/dist/routes/computer-use/route.d.ts +5 -5
  363. package/dist/routes/computer-use/route.js +36 -33
  364. package/dist/routes/computer-use/self-report.d.ts +8 -8
  365. package/dist/routes/computer-use/self-report.js +33 -33
  366. package/dist/routes/computer-use/setup.d.ts +9 -15
  367. package/dist/routes/computer-use/setup.js +106 -83
  368. package/dist/routes/computer-use/single-bundle.d.ts +13 -16
  369. package/dist/routes/computer-use/single-bundle.js +46 -53
  370. package/dist/routes/computer-use/subject-projection.d.ts +6 -8
  371. package/dist/routes/computer-use/subject-projection.js +24 -23
  372. package/dist/routes/computer-use/types.d.ts +195 -238
  373. package/dist/routes/computer-use/types.js +21 -13
  374. package/dist/routes/preview.d.ts +8 -2
  375. package/dist/routes/preview.js +8 -5
  376. package/dist/routes/scripted/bundle.d.ts +5 -8
  377. package/dist/routes/scripted/bundle.js +23 -27
  378. package/dist/routes/scripted/plan.d.ts +6 -8
  379. package/dist/routes/scripted/plan.js +15 -13
  380. package/dist/routes/scripted/result.d.ts +4 -1
  381. package/dist/routes/scripted/result.js +15 -11
  382. package/dist/routes/scripted/route.js +15 -17
  383. package/dist/routes/scripted/scenario.d.ts +1 -1
  384. package/dist/routes/scripted/scenario.js +3 -3
  385. package/dist/routes/scripted/setup.d.ts +3 -2
  386. package/dist/routes/scripted/setup.js +27 -26
  387. package/dist/routes/scripted/subject.d.ts +8 -3
  388. package/dist/routes/scripted/subject.js +10 -6
  389. package/dist/routes/scripted/surface-records.js +4 -4
  390. package/dist/routes/scripted/surface-sessions.d.ts +2 -2
  391. package/dist/routes/scripted/surface-sessions.js +4 -4
  392. package/dist/routes/scripted/types.d.ts +21 -40
  393. package/dist/routes/scripted/types.js +2 -3
  394. package/dist/routes/shared-world/{seat-records.js → bundle-records.js} +17 -16
  395. package/dist/routes/shared-world/bundle.d.ts +7 -7
  396. package/dist/routes/shared-world/bundle.js +60 -62
  397. package/dist/routes/shared-world/checkpoints.d.ts +5 -5
  398. package/dist/routes/shared-world/checkpoints.js +5 -5
  399. package/dist/routes/shared-world/comms.d.ts +8 -7
  400. package/dist/routes/shared-world/comms.js +38 -51
  401. package/dist/routes/shared-world/external-public.d.ts +6 -5
  402. package/dist/routes/shared-world/external-public.js +28 -25
  403. package/dist/routes/shared-world/handoff.d.ts +10 -9
  404. package/dist/routes/shared-world/handoff.js +89 -81
  405. package/dist/routes/shared-world/lobby-code.d.ts +7 -7
  406. package/dist/routes/shared-world/lobby-code.js +22 -22
  407. package/dist/routes/shared-world/{seats.d.ts → participant-specs.d.ts} +15 -12
  408. package/dist/routes/shared-world/{seats.js → participant-specs.js} +65 -63
  409. package/dist/routes/shared-world/plan.d.ts +2 -6
  410. package/dist/routes/shared-world/plan.js +8 -9
  411. package/dist/routes/shared-world/provenance.d.ts +4 -4
  412. package/dist/routes/shared-world/provenance.js +4 -4
  413. package/dist/routes/shared-world/provisioned.d.ts +3 -2
  414. package/dist/routes/shared-world/provisioned.js +55 -48
  415. package/dist/routes/shared-world/result.js +47 -36
  416. package/dist/routes/shared-world/route.js +54 -57
  417. package/dist/routes/shared-world/setup.d.ts +6 -5
  418. package/dist/routes/shared-world/setup.js +16 -18
  419. package/dist/routes/shared-world/types.d.ts +70 -141
  420. package/dist/routes/shared-world/types.js +5 -5
  421. package/dist/routes/terminal/adapter.d.ts +10 -10
  422. package/dist/routes/terminal/adapter.js +32 -129
  423. package/dist/routes/terminal/bundle.d.ts +10 -15
  424. package/dist/routes/terminal/bundle.js +43 -52
  425. package/dist/routes/terminal/credentials.d.ts +4 -4
  426. package/dist/routes/terminal/credentials.js +20 -20
  427. package/dist/routes/terminal/dry-run.d.ts +1 -1
  428. package/dist/routes/terminal/dry-run.js +13 -15
  429. package/dist/routes/terminal/encoding.d.ts +1 -1
  430. package/dist/routes/terminal/encoding.js +4 -4
  431. package/dist/routes/terminal/ledger.d.ts +8 -8
  432. package/dist/routes/terminal/ledger.js +22 -22
  433. package/dist/routes/terminal/live-finish.d.ts +1 -2
  434. package/dist/routes/terminal/live-finish.js +24 -23
  435. package/dist/routes/terminal/live-sandbox.d.ts +3 -2
  436. package/dist/routes/terminal/live-sandbox.js +31 -32
  437. package/dist/routes/terminal/participant-text.d.ts +23 -0
  438. package/dist/routes/terminal/participant-text.js +165 -0
  439. package/dist/routes/terminal/persona.js +1 -1
  440. package/dist/routes/terminal/plan.d.ts +2 -6
  441. package/dist/routes/terminal/plan.js +23 -19
  442. package/dist/routes/terminal/recorder.d.ts +6 -1
  443. package/dist/routes/terminal/recorder.js +12 -4
  444. package/dist/routes/terminal/result.js +12 -12
  445. package/dist/routes/terminal/route.js +30 -31
  446. package/dist/routes/terminal/runtime.d.ts +3 -2
  447. package/dist/routes/terminal/runtime.js +3 -3
  448. package/dist/routes/terminal/sandbox.d.ts +4 -4
  449. package/dist/routes/terminal/sandbox.js +10 -10
  450. package/dist/routes/terminal/session.js +22 -19
  451. package/dist/routes/terminal/token-usage.d.ts +1 -1
  452. package/dist/routes/terminal/token-usage.js +10 -11
  453. package/dist/routes/terminal/trace.d.ts +7 -10
  454. package/dist/routes/terminal/trace.js +11 -66
  455. package/dist/routes/terminal/types.d.ts +104 -114
  456. package/dist/routes/terminal/types.js +12 -7
  457. package/dist/run/active-runs.d.ts +13 -0
  458. package/dist/run/active-runs.js +12 -0
  459. package/dist/run/bundle-shape.d.ts +2 -1
  460. package/dist/run/bundle-shape.js +7 -7
  461. package/dist/run/bundle.d.ts +99 -92
  462. package/dist/run/bundle.js +10 -8
  463. package/dist/run/cost-summary.js +6 -5
  464. package/dist/run/costs.d.ts +6 -6
  465. package/dist/run/costs.js +17 -11
  466. package/dist/run/detail.d.ts +9 -9
  467. package/dist/run/detail.js +10 -10
  468. package/dist/run/dry-run-inputs.js +1 -1
  469. package/dist/run/dry-run.js +23 -30
  470. package/dist/run/{study-files.d.ts → evidence-files.d.ts} +4 -4
  471. package/dist/run/{study-files.js → evidence-files.js} +5 -5
  472. package/dist/run/feedback-shape.js +1 -1
  473. package/dist/run/judge.d.ts +34 -16
  474. package/dist/run/judge.js +41 -14
  475. package/dist/run/locate.d.ts +2 -0
  476. package/dist/run/locate.js +3 -1
  477. package/dist/run/outcomes.d.ts +3 -3
  478. package/dist/run/outcomes.js +3 -3
  479. package/dist/run/participant-records.d.ts +2 -2
  480. package/dist/run/participant-records.js +2 -2
  481. package/dist/run/paths.d.ts +1 -1
  482. package/dist/run/paths.js +2 -2
  483. package/dist/run/pricing.d.ts +30 -15
  484. package/dist/run/pricing.js +49 -30
  485. package/dist/run/projection.d.ts +27 -27
  486. package/dist/run/projection.js +23 -23
  487. package/dist/run/reclaim.d.ts +6 -0
  488. package/dist/run/reclaim.js +15 -5
  489. package/dist/run/results.d.ts +5 -5
  490. package/dist/run/run-index.d.ts +9 -7
  491. package/dist/run/run-index.js +24 -25
  492. package/dist/run/run-not-found.d.ts +5 -0
  493. package/dist/run/run-not-found.js +15 -0
  494. package/dist/run/run.d.ts +7 -4
  495. package/dist/run/run.js +10 -6
  496. package/dist/run/sandbox-receipts.d.ts +5 -5
  497. package/dist/run/sandbox-receipts.js +6 -6
  498. package/dist/run/shared-world-evidence.d.ts +67 -66
  499. package/dist/run/shared-world-evidence.js +4 -4
  500. package/dist/run/shared-world-shape.d.ts +3 -3
  501. package/dist/run/shared-world-shape.js +16 -16
  502. package/dist/run/stats.d.ts +17 -11
  503. package/dist/run/stats.js +124 -66
  504. package/dist/run/status.d.ts +21 -32
  505. package/dist/run/status.js +34 -33
  506. package/dist/run/stored-runs.js +2 -1
  507. package/dist/run/stream-shape.js +1 -1
  508. package/dist/run/streams.d.ts +29 -22
  509. package/dist/run/study-provenance.d.ts +47 -0
  510. package/dist/run/study-provenance.js +63 -0
  511. package/dist/run/study-result.d.ts +16 -0
  512. package/dist/run/study-result.js +9 -0
  513. package/dist/run/terminal-contract.d.ts +5 -5
  514. package/dist/run/terminal-contract.js +4 -4
  515. package/dist/run/text.d.ts +2 -0
  516. package/dist/run/text.js +4 -0
  517. package/dist/run/transient-comms-secrets.d.ts +5 -0
  518. package/dist/run/transient-comms-secrets.js +12 -0
  519. package/dist/run-lab.d.ts +40 -38
  520. package/dist/run-lab.js +42 -40
  521. package/dist/study/convert.d.ts +33 -0
  522. package/dist/study/convert.js +432 -0
  523. package/dist/study/field-paths.d.ts +12 -0
  524. package/dist/study/field-paths.js +126 -0
  525. package/dist/study/files.d.ts +26 -0
  526. package/dist/study/files.js +43 -0
  527. package/dist/study/migrate.d.ts +48 -0
  528. package/dist/study/migrate.js +408 -0
  529. package/dist/study/owned-files.d.ts +38 -0
  530. package/dist/study/owned-files.js +182 -0
  531. package/dist/subject/clone.d.ts +1 -1
  532. package/dist/subject/desktop-cli.d.ts +2 -2
  533. package/dist/subject/desktop-cli.js +3 -3
  534. package/dist/subject/local-tree-archive.d.ts +1 -1
  535. package/dist/subject/local-tree-archive.js +5 -5
  536. package/dist/subject/local-tree.d.ts +3 -3
  537. package/dist/subject/local-tree.js +1 -1
  538. package/dist/subject/node-bootstrap.d.ts +1 -1
  539. package/dist/subject/node-bootstrap.js +4 -4
  540. package/dist/subject/runtime.js +10 -11
  541. package/dist/subject/serve.d.ts +1 -1
  542. package/dist/subject/serve.js +4 -4
  543. package/dist/subject/state.d.ts +1 -1
  544. package/dist/subject/steps.d.ts +8 -8
  545. package/dist/subject/steps.js +7 -7
  546. package/dist/substrates/command-failure.d.ts +3 -3
  547. package/dist/substrates/command-failure.js +3 -3
  548. package/dist/substrates/detached.d.ts +6 -6
  549. package/dist/substrates/detached.js +7 -7
  550. package/dist/substrates/e2b/cdp-probe.d.ts +11 -11
  551. package/dist/substrates/e2b/cdp-probe.js +15 -18
  552. package/dist/substrates/e2b/desktop-browser.d.ts +5 -5
  553. package/dist/substrates/e2b/desktop-browser.js +12 -12
  554. package/dist/substrates/e2b/desktop-cdp.d.ts +15 -15
  555. package/dist/substrates/e2b/desktop-cdp.js +11 -11
  556. package/dist/substrates/e2b/desktop-executor.d.ts +1 -1
  557. package/dist/substrates/e2b/desktop-executor.js +1 -1
  558. package/dist/substrates/e2b/desktop-geometry.d.ts +6 -6
  559. package/dist/substrates/e2b/desktop-geometry.js +9 -9
  560. package/dist/substrates/e2b/desktop-media.d.ts +1 -1
  561. package/dist/substrates/e2b/desktop-media.js +3 -3
  562. package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +3 -3
  563. package/dist/substrates/e2b/desktop-screenshot-cleanup.js +3 -3
  564. package/dist/substrates/e2b/sandbox.d.ts +1 -1
  565. package/dist/substrates/e2b/sandbox.js +2 -2
  566. package/dist/substrates/e2b/sdk.d.ts +11 -11
  567. package/dist/substrates/e2b/sdk.js +8 -8
  568. package/dist/substrates/local/runtime-host.d.ts +2 -0
  569. package/dist/substrates/local/runtime-host.js +6 -0
  570. package/dist/tui/actions.d.ts +8 -6
  571. package/dist/tui/actions.js +31 -22
  572. package/dist/tui/contract.d.ts +16 -16
  573. package/dist/tui/contract.js +10 -10
  574. package/dist/tui/launch.d.ts +4 -4
  575. package/dist/tui/launch.js +18 -19
  576. package/dist/tui/project.js +5 -5
  577. package/dist/tui-app.js +83 -83
  578. package/dist/verify/actor.d.ts +14 -14
  579. package/dist/verify/actor.js +45 -45
  580. package/dist/verify/artifacts.d.ts +3 -3
  581. package/dist/verify/artifacts.js +6 -6
  582. package/dist/verify/context-growth.d.ts +9 -0
  583. package/dist/verify/context-growth.js +62 -0
  584. package/dist/verify/costs.d.ts +7 -7
  585. package/dist/verify/costs.js +9 -9
  586. package/dist/verify/liveness.d.ts +1 -1
  587. package/dist/verify/liveness.js +4 -1
  588. package/dist/verify/rerun.d.ts +1 -1
  589. package/dist/verify/rerun.js +1 -1
  590. package/dist/verify/shared-world-concurrent.d.ts +2 -2
  591. package/dist/verify/shared-world-concurrent.js +79 -76
  592. package/dist/verify/shared-world.d.ts +2 -2
  593. package/dist/verify/shared-world.js +18 -18
  594. package/dist/verify/subject.d.ts +4 -4
  595. package/dist/verify/subject.js +18 -18
  596. package/dist/verify/verify.js +98 -49
  597. package/docs/README.md +26 -33
  598. package/docs/architecture/actor-contract.md +105 -98
  599. package/docs/architecture/desktop-sessions.md +14 -14
  600. package/docs/architecture/external-public-shared-world.md +66 -59
  601. package/docs/architecture/github-feedback-loop.md +1 -4
  602. package/docs/architecture/guest-desktop.md +2 -2
  603. package/docs/architecture/observer.md +37 -37
  604. package/docs/architecture/restricted-codex-analysis.md +70 -30
  605. package/docs/architecture/serve.md +34 -37
  606. package/docs/architecture/state-driven-executor.md +55 -59
  607. package/docs/architecture/task-protocol-support.md +7 -9
  608. package/docs/architecture/{terminal-product-lane.md → terminal-product-route.md} +83 -115
  609. package/docs/contracts/README.md +24 -0
  610. package/docs/contracts/adapter-admission.md +3 -3
  611. package/docs/contracts/adapter-fixtures.md +2 -5
  612. package/docs/contracts/core.md +1 -3
  613. package/docs/contracts/errors.md +62 -0
  614. package/docs/contracts/feedback.md +8 -9
  615. package/docs/contracts/policy.md +7 -12
  616. package/docs/contracts/run-bundle.md +54 -51
  617. package/docs/contracts/schemas.md +505 -390
  618. package/docs/contracts/study-analysis.md +26 -2
  619. package/docs/contracts/study-costs.md +11 -7
  620. package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +1 -1
  621. package/docs/decisions/0002-observer-is-one-self-contained-file.md +2 -2
  622. package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +3 -3
  623. package/docs/decisions/0004-participant-desktops-stay-in-the-route.md +2 -1
  624. package/docs/principles/actor-fidelity.md +4 -4
  625. package/docs/principles/engineering.md +3 -3
  626. package/docs/principles/invariants-and-defaults.md +38 -38
  627. package/docs/principles/self-driving-harness.md +1 -5
  628. package/docs/principles/three-roles.md +1 -1
  629. package/docs/product/automatic-analysis.md +8 -7
  630. package/examples/participant/README.md +5 -5
  631. package/examples/participant/run.mjs +11 -10
  632. package/examples/scorer/README.md +3 -3
  633. package/examples/scorer/run.mjs +11 -12
  634. package/package.json +16 -17
  635. package/skills/humanish/SKILL.md +63 -60
  636. package/skills/humanish/agents/openai.yaml +1 -1
  637. package/AGENTS.md +0 -99
  638. package/CONTRIBUTING.md +0 -148
  639. package/dist/actors/codex/qualified-versions.d.ts +0 -45
  640. package/dist/actors/codex/qualified-versions.js +0 -87
  641. package/dist/cli/commands/lab.d.ts +0 -3
  642. package/dist/cli/commands/lab.js +0 -193
  643. package/dist/deprecated.d.ts +0 -90
  644. package/dist/deprecated.js +0 -106
  645. package/dist/lab/bag-overrides.d.ts +0 -18
  646. package/dist/lab/bag-overrides.js +0 -121
  647. package/dist/observer/static.d.ts +0 -39
  648. package/dist/observer/static.js +0 -369
  649. package/dist/routes/computer-use/legacy-lane-spec.d.ts +0 -62
  650. package/dist/routes/computer-use/legacy-lane-spec.js +0 -39
  651. package/docs/architecture/comms-inbox.md +0 -122
  652. package/docs/architecture/desktop-recording.md +0 -80
  653. package/docs/architecture/local-browser-runtime.md +0 -178
  654. package/docs/architecture/observer-review.md +0 -144
  655. package/docs/architecture/participant-media.md +0 -90
  656. package/docs/architecture/project-layout.md +0 -62
  657. package/docs/architecture/real-email-receiving.md +0 -136
  658. package/docs/assets/humanish-drawdb-hero.png +0 -0
  659. package/docs/assets/humanish-observer-hero.png +0 -0
  660. package/docs/goals/current.md +0 -207
  661. package/docs/product/lobby-trivia-3player-external-public.md +0 -77
  662. package/docs/product/open-source-install-experience.md +0 -240
  663. package/docs/ramp/README.md +0 -294
  664. package/docs/release/open-source-readiness.md +0 -222
  665. package/docs/release/public-readiness-standard.md +0 -210
  666. package/docs/roadmap/world-class-open-source-v0.md +0 -311
  667. /package/dist/routes/computer-use/{fanout-lanes.d.ts → fanout-records.d.ts} +0 -0
  668. /package/dist/routes/shared-world/{seat-records.d.ts → bundle-records.d.ts} +0 -0
@@ -1,240 +0,0 @@
1
- # Open-Source Install Experience
2
-
3
- Date: 2026-06-01
4
-
5
- Status: product target for the first `humanish` implementation.
6
-
7
- Safety amendment (2026-07-14): the `0.15.1` package binds managed run and
8
- output storage to validated physical paths and treats provider IDs persisted in a
9
- run bundle as evidence rather than cleanup authority. The historical product target below remains useful for
10
- intent and sequencing, but current behavior is defined by the README and
11
- [`docs/goals/current.md`](../goals/current.md).
12
-
13
- ## Product Promise
14
-
15
- Drop humanish into an app and let a coding agent set up realistic persona
16
- simulations, run them safely, watch them in a polished observer, and turn
17
- friction into public-safe issue drafts.
18
-
19
- The first experience should feel like a mature one-command simulation harness,
20
- but with an open-source-safe package shape:
21
-
22
- ```bash
23
- npm i -D humanish
24
- npx humanish init
25
- npm run humanish:doctor
26
- npm run humanish:watch
27
- npm run humanish:verify
28
- npx humanish feedback issue --run latest --repo example/app --format markdown
29
- ```
30
-
31
- ## Two-Part Distribution
32
-
33
- ### NPM Package
34
-
35
- The npm package owns executable behavior:
36
-
37
- - binary: `humanish`;
38
- - CLI framework: `commander`;
39
- - commands: `init`, `doctor`, `run`, `watch`, `review`, `verify`,
40
- `lab`, `feedback`;
41
- - schemas and validators;
42
- - synthetic starter templates;
43
- - observer static assets;
44
- - artifact and run-bundle utilities;
45
- - redaction and public issue-draft generation.
46
-
47
- ### Agent Skill
48
-
49
- The agent skill owns installation guidance and repo adaptation:
50
-
51
- ```bash
52
- npx skills add danielgwilson/humanish --skill humanish
53
- ```
54
-
55
- Installable repo skill: [`skills/humanish/SKILL.md`](../../skills/humanish/SKILL.md).
56
-
57
- The skill should teach the user's coding agent how to:
58
-
59
- - install `humanish`;
60
- - run `humanish init`;
61
- - inspect the target app's routes and dev command;
62
- - create synthetic personas and scenarios;
63
- - create public-safe `humanish/labs/*.yaml` lab manifests;
64
- - keep private/local labs under ignored `.humanish/labs/*.yaml` or
65
- `.humanish/local/labs/*.yaml`;
66
- - configure local app targets;
67
- - document E2B and OpenAI env var names without storing values;
68
- - use `--env-file <path>` for explicit local env hydration without persisting
69
- values into artifacts;
70
- - run `doctor`, `watch`, `verify`, and `feedback issue`;
71
- - avoid PII, PHI, secrets, real customer data, and private artifacts.
72
-
73
- The skill should not hide critical behavior in chat memory. It should point to
74
- repo-owned `humanish/` files and package-owned docs.
75
-
76
- ## Project File Formats
77
-
78
- New projects should get a boring, legible format stack:
79
-
80
- - `.yaml` for human-authored humanish source such as labs, personas and
81
- scenarios;
82
- - `.mjs` for executable adopter scorers;
83
- - `.json` and `.ndjson` for generated run artifacts, Observer data, review
84
- output, event streams, and synthetic fixtures.
85
-
86
- Use `.yml` only where an outside tool's convention already expects it, for
87
- example GitHub Actions workflows. Do not scaffold `.yml` for humanish source and
88
- do not use TOML unless a future scalar global-config case clearly needs it.
89
-
90
- ## First-Run Principles
91
-
92
- - No keys required for the first successful run.
93
- - No live GitHub mutation.
94
- - No hosted queues or private infrastructure.
95
- - No real customer/user/patient data.
96
- - No generated personas from tickets, logs, transcripts, screenshots, or
97
- production analytics.
98
- - Safe dry-run should produce a valid synthetic run bundle and observer view.
99
- - The user should see what changed in git.
100
-
101
- ## Lab Manifest Shape
102
-
103
- Labs are the public-safe way to name a reusable simulation run. A starter app
104
- gets a committed synthetic lab:
105
-
106
- ```yaml
107
- schema: humanish.lab.v2
108
- id: first-run
109
- title: First-run synthetic Observer
110
- description: Public-safe starter lab that generates a synthetic run bundle and Observer without provider spend.
111
- subject:
112
- source: this-repo
113
- actors:
114
- - type: synthetic-persona
115
- count: 4
116
- scenario:
117
- mode: dry-run
118
- defaults:
119
- open: true
120
- ```
121
-
122
- Resolution order:
123
-
124
- 1. `humanish/labs/<id>.yaml` for committed, reproducible labs.
125
- 2. `.humanish/labs/<id>.yaml` for ignored local labs.
126
- 3. `.humanish/local/labs/<id>.yaml` for ignored machine-specific overlays.
127
- 4. explicit `.yaml` path, for example
128
- `.humanish/labs/local-dogfood.yaml`.
129
-
130
- Private repo targets, local env references, and maintainer dogfood variants
131
- belong in ignored lab manifests and should be invoked with explicit
132
- `--env-file`; do not make them package defaults.
133
-
134
- ## `humanish init`
135
-
136
- `humanish init` should:
137
-
138
- 1. Detect package manager and app framework when possible.
139
- 2. Create committed starter files under `humanish/`.
140
- 3. Create ignored runtime state under `.humanish/`.
141
- 4. Add `.humanish/` and secret/local overlays to `.gitignore`.
142
- 5. Patch `package.json` scripts only after showing the intended diff or when
143
- `--yes` is passed.
144
- 6. Create only synthetic public-safe personas and scenarios.
145
- 7. Write credential references as env var names only.
146
- 8. Run a dry-run verification if dependencies are available.
147
-
148
- Suggested scripts:
149
-
150
- ```json
151
- {
152
- "scripts": {
153
- "humanish": "humanish",
154
- "humanish:doctor": "humanish doctor",
155
- "humanish:run": "humanish run --dry-run",
156
- "humanish:watch": "humanish watch",
157
- "humanish:lab:list": "humanish lab list",
158
- "humanish:watch:ci": "humanish watch --json --no-open",
159
- "humanish:verify": "humanish verify"
160
- }
161
- }
162
- ```
163
-
164
- ## Command Ladder
165
-
166
- | Command | Purpose | First version should |
167
- | --------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------- |
168
- | `humanish init` | Set up project-owned harness files | Scaffold committed `humanish/`, ignored `.humanish/`, package scripts |
169
- | `humanish doctor` | Explain readiness | Check config, gitignore, app target, browser, env var names, redaction policy |
170
- | `humanish run --dry-run` | Prove contract without app/browser/keys | Write synthetic run bundle |
171
- | `humanish verify` | Validate bundle and public-safety gates | Fail closed on schema/evidence/redaction errors |
172
- | `humanish review` | Build review packet from evidence | Summarize verdicts without inventing product proof |
173
- | `humanish watch` | Run synthetic participants and watch | Create a fresh four-participant bundle, render Observer, open it, and keep the shell attached |
174
- | `humanish watch [lab]` | Run a named lab and watch it | Resolve committed or ignored `.yaml` lab manifests, then open/follow Observer |
175
- | `humanish watch --json --no-open` | Agent/CI proof path | Create the same bundle and Observer artifacts without browser open or attached watch server |
176
- | `humanish lab list` | Discover available labs | List committed labs and ignored local labs with origin labels |
177
- | `humanish lab inspect <lab>` | Read a lab manifest | Print the parsed lab config, origin, path, and warnings without executing |
178
- | `humanish lab preflight <lab>` | Check lab readiness before spend | Validate routing and optionally probe declared targets from a hosted desktop without launching actors |
179
- | `humanish lab run <lab>` | Run a lab manifest | Human or JSON execution path for every lab route |
180
- | `humanish feedback issue` | Produce public-safe issue draft | Print Markdown or prefilled issue URL, no GitHub API mutation |
181
-
182
- ## Live Capability Ladder
183
-
184
- Live execution should be staged after the dry-run path is boring:
185
-
186
- 1. Synthetic dry-run bundle.
187
- 2. Local app reachability and browser smoke.
188
- 3. Scripted browser scenario.
189
- 4. Observer over real screenshots/traces.
190
- 5. Computer-use / OpenAI actor.
191
- 6. E2B substrate.
192
- 7. Multi-persona matrix.
193
- 8. Optional maintainer-only issue sync tooling.
194
-
195
- Do not make E2B, OpenAI, or GitHub credentials part of the first successful
196
- run.
197
-
198
- For step 3, app-specific browser scenarios are authored as `.yaml` source under
199
- `humanish/scenarios/*.yaml`:
200
-
201
- ```yaml
202
- schema: humanish.scenario.v1
203
- id: core-browser-flow
204
- title: Core browser flow
205
- persona: synthetic-new-user
206
- goal: Reach the first meaningful product state with synthetic data.
207
- mode: browser
208
- browser:
209
- startPath: /
210
- steps:
211
- - id: open-home
212
- label: Open the app
213
- action: goto
214
- path: /
215
- expect:
216
- text: "Get started"
217
- - id: submit-primary-action
218
- label: Submit the primary action
219
- action: click
220
- selector: "button[type='submit']"
221
- expect:
222
- stateChanged: true
223
- ```
224
-
225
- A scripted-browser lab runs the scenario named by `scenario.ref` against a
226
- loopback `subject.appUrl`; `humanish/labs/scripted-demo.yaml` is the example.
227
- A missing or non-executable scenario fails before any browser starts.
228
-
229
- Live E2B desktop labs are an optional advanced path. Target projects that need
230
- them should install `@e2b/desktop` explicitly instead of receiving that
231
- substrate as part of the default humanish package install. When a GitHub token is
232
- present, repo labels are redacted in durable artifacts by default; live stream
233
- auth URLs are used only by the attached watch server and are not persisted.
234
-
235
- An explicitly selected [local browser lab](../architecture/local-browser-runtime.md)
236
- can instead use Linux x64, Docker/KVM and an existing Codex ChatGPT login for
237
- participants and findings. The installed CLI prepares its pinned image before
238
- the first live run. It does not install host prerequisites, and Mac, inbox and
239
- media integration remain separate follow-ups. Existing hosted lab configuration
240
- is preserved.
@@ -1,294 +0,0 @@
1
- # humanish Ramp
2
-
3
- Use this page when you are starting cold on `humanish`. It is meant to be
4
- useful without chat history, private notes, local machine paths, or maintainer
5
- context. It is the last step of the reading order in
6
- [CONTRIBUTING.md](../../CONTRIBUTING.md#read-these-in-order) and adds current state, how to pick
7
- work and the quality bar.
8
-
9
- ## First Read
10
-
11
- Start with three things:
12
-
13
- 1. The files in [CONTRIBUTING.md's reading order](../../CONTRIBUTING.md#read-these-in-order).
14
- 2. The current task and [`docs/goals/current.md`](../goals/current.md) for current
15
- product status. Explicit task direction takes precedence over historical queues.
16
- 3. Instructions in the component being changed, then its relevant contracts.
17
-
18
- Use the references below as needed. Historical plans are context, not a backlog
19
- to resume automatically. Keep one concise current task handoff with the requested
20
- outcome, demonstrated behavior, next complete result, constraints and rejected or
21
- deferred approaches; link evidence rather than repeating its chronology.
22
-
23
- | When working on | Reference |
24
- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
25
- | Install, commands or first-run UX | [`README.md`](../../README.md), [install experience](../product/open-source-install-experience.md) |
26
- | Security, evidence handling or defaults | [Invariants and defaults](../principles/invariants-and-defaults.md) |
27
- | Observer | [Observer architecture](../architecture/observer.md) and its component instructions |
28
- | Bundle formats or policy | [Run bundle](../contracts/run-bundle.md), [policy](../contracts/policy.md) |
29
- | Public artifacts or packaging | [Public-readiness standard](../release/public-readiness-standard.md), [release procedure](../release/open-source-readiness.md) |
30
- | Proof architecture or historical decisions | [Proof roadmap](https://github.com/danielgwilson/humanish/blob/main/docs/goals/proof-roadmap/goal.md), [historical delivery roadmap](../roadmap/world-class-open-source-v0.md) |
31
-
32
- ## Mental Model
33
-
34
- humanish is a persona simulation harness for apps, CLIs, and agent-facing product
35
- flows.
36
-
37
- - `humanish/` is committed source: lab manifests, personas, scenarios and
38
- coverage notes.
39
- - `.humanish/` is ignored runtime state: runs, Observer output, transcripts,
40
- reviews, temporary clones, and local evidence.
41
- - humanish source uses `.yaml` for human-authored simulation intent and
42
- JSON/NDJSON for generated artifacts.
43
- - A run bundle is the source of truth.
44
- - The Observer is the projection that makes that truth reviewable.
45
- - Feedback commands turn verified evidence into public-safe issue drafts.
46
-
47
- If a change does not improve one of those loops, it probably belongs elsewhere.
48
-
49
- ## Current State
50
-
51
- [CHANGELOG.md](../../CHANGELOG.md) lists what each version changed. This section describes
52
- what the source supports now.
53
-
54
- humanish has a working public package shape and a safe first-run path.
55
-
56
- Implemented:
57
-
58
- - `commander` CLI with stable command help;
59
- - `init`, `doctor`, `run`, `watch`, `verify`, `review`, `runs`, `analyze`, and `feedback`;
60
- - study analysis with bounded provider admission, a live-run default and opt-out, immutable findings,
61
- source-bound corrections and evidence-linked Observer review;
62
- - synthetic run bundles;
63
- - public-safety verification with machine-readable `shareSafety.status`
64
- (`share_ready`, `local_only`, or `blocked`);
65
- - mission-control Observer over UI, CLI, TUI, and Codex UI stream contracts;
66
- - public-safe feedback issue drafts without GitHub API mutation, gated on
67
- `share_ready` evidence;
68
- - skills.sh-compatible agent skill;
69
- - first-class lab manifest resolution through `humanish/labs/*.yaml` and
70
- ignored `.humanish/labs/*.yaml` overlays, as `humanish.lab.v2` compositions
71
- (`src/lab/config.ts`) with one engine and no hardcoded lab kinds;
72
- - a first-party actor registry with five registered descriptors
73
- (`src/actors/registry.ts`); `actors[0].type` is a real dispatch key on the
74
- computer-use, scripted-browser, and terminal-product routes;
75
- - a computer-use route and clone subject provider: `subject.source: app-url`
76
- drives a lab-owner loopback app in a hosted desktop, and `subject.source:
77
- clone` + `serve` clones, installs, and serves a real app in-sandbox from
78
- config before the actor drives it (`src/routes/computer-use/route.ts`);
79
- - seven declared subject sources: `this-repo` (dry-run-only), `clone`, `app-url`,
80
- `local-app` (library-assisted, in-process, no desktop), `terminal-product`,
81
- `desktop-cli` (computer-use participant at a terminal), and `local-tree`;
82
- each route fails closed on unsupported combinations;
83
- - bounded fan-out with separate worlds (`actors[0].count`, `lanes[]`, or `roster[]`),
84
- backed by deterministic and kept live proof;
85
- - concurrent single-origin shared-world execution with deterministic and kept
86
- live proof; verify still reads bundles from the sequential route removed in
87
- 0.106.0;
88
- - `subject.source: local-tree`, which packages one selected working tree with a
89
- content pin before using the same provision-and-serve path as clone subjects;
90
- - an off-app comms funnel for email-gated flows: a vendor-neutral in-sandbox
91
- catch redirects the app's own send API, a persona reads a minimal inbox surface
92
- and clicks through, and a digest-only `humanish.comms-thread.v1` artifact
93
- records the thread with no raw address, link, or code. It is wired into the
94
- computer-use and concurrent shared-world routes and live-proven on computer-use.
95
- SMS is not yet a configured execution route;
96
- - resolved-persona directives that actually shape the actor prompt on the
97
- terminal-product route (traits are applied and recorded in the actor trace, not
98
- decorative), reusing the same `persona.ts` compiler as the computer-use route;
99
- - a CLI-loadable adopter scorer seam (`review.scorer.ref` in the lab manifest, or
100
- a `--scorer <path>` override): a config-declared `.mjs` supplies
101
- `{score, deriveFeedback, deriveArtifacts}`, resolved with the same containment
102
- as `scenario.ref` and digest-pinned in the bundle
103
- (`humanish.scorer-provenance.v1`); a config-declared scorer that fails to render
104
- a pass fails the run on the scorer-capable routes, while library callers keep
105
- the additive behavior (`costProbe` stays library-only); on the terminal route
106
- the scoring context carries the FULL normalized transcript (byte-identical to
107
- the persisted `terminal-transcript.txt`) instead of the ~2KB tail projection. The
108
- [scorer example](../../examples/scorer/README.md) attaches one from the CLI and from a
109
- library caller;
110
- - containment checks for managed run storage, Observer and feedback reads,
111
- actor artifacts, lab discovery, Git metadata, and source archives;
112
- - cleanup inspection receipts that do not treat mutable run-bundle IDs as
113
- provider-mutation authority;
114
- - every route publishes through the run lifecycle (`runScope` and `Run` in
115
- `src/run/run.ts`): computer-use, shared-world, scripted, terminal, and the preview's
116
- `runDryRun`.
117
-
118
- Still not good enough:
119
-
120
- - capability receipts are not adopter replacement: no first-party deletion
121
- branch has yet removed a bespoke generic harness while preserving
122
- decision-equivalent proof;
123
- - the five actor descriptors are a closed first-party union, not a supported
124
- out-of-tree actor-registration API;
125
- - multi-origin shared-world is an accepted design direction, but remains
126
- unimplemented and gated on a real adopter proving the need;
127
- - the README hero is the drawDB real-application study, a legible capture of a
128
- studied public subject (drawDB is not a humanish adopter); coverage beyond that single
129
- studied subject (the stratified breadth panel) remains open.
130
-
131
- ## Check which compositions a lab can declare
132
-
133
- `parseLabConfig` (`src/lab/config.ts`) enforces this matrix through `compositionReason`
134
- (`src/lab/composition-rules.ts`), which uses the predicates in `src/lab/routing.ts` and the reasons
135
- in `src/lab/validation.ts`. The route entries check it again
136
- for library callers. `tests/fixtures/task-route-preflight/labs.json` holds one lab for each
137
- accepted row except the local browser row. `tests/lab/task-route-preflight.test.ts` checks that
138
- each of those labs routes as shown. `tests/run-lab-local-substrate.test.ts` covers the local
139
- browser row. Accepted rows have further required fields, such as `subject.serve` on `clone`, and
140
- the parse error names the missing one. The computer-use actors are `openai-computer-use` and
141
- `local-agent`.
142
-
143
- | Route (backend name) | `subject.source` | `execution.target` | `actors[0].type` | Result |
144
- | ------------------------------------------ | ------------------------------------------------ | ------------------------ | -------------------------------------- | ------------------------------------------------------------------------------ |
145
- | `computer-use` (`cua`) | `app-url` | `e2b-desktop` | a computer-use actor | Supported |
146
- | `computer-use` (`cua`) | `app-url` | `local` | a computer-use actor | Supported on a local Firecracker desktop, inside Lima on macOS |
147
- | `computer-use` (`cua`) | `clone`, `local-tree` | `e2b-desktop` | a computer-use actor | Supported |
148
- | `computer-use` (`cua`) | `desktop-cli` | `e2b-desktop` or absent | a computer-use actor | Supported |
149
- | `computer-use` (`cua`) | `local-app` | `local` or absent | a computer-use actor | Library only; the CLI refuses it with `HUMANISH_CUA_LAB_LOCAL_APP_NO_EXECUTOR` |
150
- | `shared-world` (`concurrent-shared-world`) | `clone`, `local-tree` + `topology: shared-world` | `e2b-desktop` | a computer-use actor | Supported |
151
- | `shared-world` (`concurrent-shared-world`) | `app-url` + `topology: shared-world` | `e2b-desktop` | a computer-use actor | Supported with `policies.allowPublicTargets: true` |
152
- | `scripted` | `app-url` with a loopback URL | `local` or absent | `scripted-browser` | Supported |
153
- | `scripted` | `clone` | `e2b-desktop` | `scripted-browser` | Supported |
154
- | `terminal` | `terminal-product` | `e2b-terminal` or absent | `codex-exec` | Supported |
155
- | `preview` (`synthetic`) | `this-repo` | absent | not `scripted-browser` or `codex-exec` | Dry run only |
156
- | none | any other pairing | any | any | Refused at parse with `HUMANISH_LAB_INVALID` |
157
-
158
- The fixture's `supported` field records which routes accept declared `actors[0].tasks`. The
159
- computer-use labs in the fixture accept them. The other routes refuse them at parse.
160
-
161
- ## First Commands
162
-
163
- From a clean checkout:
164
-
165
- ```bash
166
- git status --short --branch
167
- pnpm install --frozen-lockfile
168
- pnpm humanish lab list
169
- pnpm humanish watch --json --no-open # a keyless preview run
170
- pnpm humanish runs --json
171
- pnpm vitest run tests/<file> # one test file: the fast loop
172
- pnpm check # the full local gate
173
- pnpm release:check # what CI runs; last, before a pull request
174
- ```
175
-
176
- For local product feel:
177
-
178
- ```bash
179
- pnpm humanish watch
180
- ```
181
-
182
- For private/local dogfood, author an ignored lab manifest under
183
- `.humanish/labs/` or `.humanish/local/labs/`, then invoke it explicitly with an
184
- ignored env file:
185
-
186
- ```bash
187
- pnpm humanish watch .humanish/labs/local-dogfood.yaml --env-file .humanish/local/provider.env
188
- ```
189
-
190
- ## How To Pick Work
191
-
192
- Start from [`docs/goals/current.md`](../goals/current.md).
193
-
194
- Prefer work that makes humanish more believable to a new maintainer:
195
-
196
- - a command becomes easier to run;
197
- - a run bundle becomes more truthful;
198
- - Observer evidence becomes more inspectable;
199
- - verification catches a real bad state;
200
- - feedback drafts become more actionable;
201
- - public-safety gates catch a class of leak or stale residue.
202
-
203
- If no GitHub issue exists for substantial work, draft one with the repo issue
204
- template before building. Use labels to communicate authority, area, risk, and
205
- required proof.
206
-
207
- ## Quality Bar
208
-
209
- Do not close a change on narrative alone.
210
-
211
- Useful proof includes:
212
-
213
- - `pnpm release:check`;
214
- - `pnpm release:dogfood` before a tag (see below);
215
- - focused unit or contract tests;
216
- - a generated run bundle under ignored `.humanish/`;
217
- - Observer screenshots or health output;
218
- - `humanish verify` results;
219
- - public-surface scan output;
220
- - fresh clone checks for packaging or release work.
221
-
222
- A green subset is not the same thing as complete coverage. If something is not
223
- covered, name it as a gap.
224
-
225
- ## Public Boundary
226
-
227
- Assume this repository is public even when local or remote visibility says it is
228
- private.
229
-
230
- Never commit or paste:
231
-
232
- - PII or PHI;
233
- - secrets, keys, tokens, cookies, or raw env files;
234
- - raw private transcripts;
235
- - private screenshots;
236
- - private customer or patient data;
237
- - local machine paths;
238
- - private upstream code or operational details.
239
-
240
- Use synthetic examples, redacted evidence, and env var names without values.
241
-
242
- ## Embarrassment Filter
243
-
244
- Before committing, ask:
245
-
246
- - Would this make sense to someone who found the repo through npm?
247
- - Would I be comfortable with this file quoted in a public issue?
248
- - Does this depend on private chat memory?
249
- - Does it mention removed docs, private machine paths, or internal-only names?
250
- - Does it claim product proof when it only proves a contract?
251
-
252
- If the answer is uncomfortable, rewrite it, synthesize it, or keep it out of the
253
- repo.
254
-
255
- ## Hand-Off Format
256
-
257
- End substantial work with:
258
-
259
- - what changed;
260
- - what proof passed;
261
- - what remains uncertain;
262
- - the next best issue or command.
263
-
264
- Future agents should be able to continue from the repo, not from the previous
265
- chat transcript.
266
-
267
- ## Before you tag: send a participant to meet the build
268
-
269
- ```bash
270
- pnpm release:dogfood # needs OPENAI_API_KEY + E2B_API_KEY; costs about a dollar
271
- ```
272
-
273
- `release:check` proves the code is internally consistent. It cannot tell you whether
274
- someone landing on this build can get anywhere with it. That gap has cost a release:
275
- `0.56.0` passed every check and shipped a regression that hid a run's
276
- price at exactly the moment a person was deciding whether to set keys up. A
277
- synthetic participant found it hours later.
278
-
279
- So the last gate before a tag is the product's own first-contact study, pointed at
280
- the release candidate. It packs the tarball, uploads it into the sandbox, and has a
281
- real autonomous agent install that tarball. Installing `humanish@latest` instead would
282
- measure the last release, the one artifact we already know about.
283
-
284
- It prints the participant's report and fails the gate if they could not get there.
285
- **Read the report even when it passes.** The verdict is a marker the participant
286
- sets; the paragraph underneath it is the finding, and it has twice repeated an
287
- adoption problem we already knew about in words no test could produce.
288
-
289
- This spends money and needs keys, so it is deliberately NOT part of `release:check`
290
- and never runs in CI. The lab's caps hold product spend to `$0`; what it costs is
291
- the agent's own tokens and a few sandbox-minutes. The agent's model key stays outside
292
- the sandbox in an E2B egress rule (`runtimeAuth: openai-egress`), and its `web_search`
293
- fetches run on the model provider's side, so an error from one says nothing about the
294
- sandbox's network.