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
@@ -0,0 +1,471 @@
1
+ // The app-server protocol humanish depends on: each method it calls with the fields and values it
2
+ // sends and the response fields it reads, each notification and server request it consumes, and
3
+ // the containers its item policy reads in every notification. protocol-compat.ts checks a
4
+ // release's generated schema against this table on every launch.
5
+ //
6
+ // Types and known values are the baseline of every release this humanish admits. A read rule's
7
+ // `expects` lists the values humanish compares against; one a release no longer allows refuses
8
+ // the launch. `known` lists every string value the baseline offers; one beyond it is recorded and
9
+ // the launch goes on. Values humanish only refuses (an asynchronous delivery, a raw item type it
10
+ // allows but does not need) are `known`, since their removal cannot make humanish accept more.
11
+ const S = ["string"];
12
+ const B = ["boolean"];
13
+ const I = ["integer"];
14
+ const A = ["array"];
15
+ const O = ["object"];
16
+ const orNull = (types) => [
17
+ ...types,
18
+ "null",
19
+ ];
20
+ const sent = (path, sends, ...expects) => (expects.length === 0 ? { path, sends } : { path, sends, expects });
21
+ const object = (path, fields) => ({
22
+ path,
23
+ sends: O,
24
+ fields,
25
+ });
26
+ const scope = [
27
+ { path: "threadId", types: S },
28
+ { path: "turnId", types: S },
29
+ ];
30
+ /** ThreadItem types in the baseline; humanish admits five and refuses the rest. */
31
+ const THREAD_ITEM_TYPES = [
32
+ "userMessage",
33
+ "hookPrompt",
34
+ "agentMessage",
35
+ "functionCallOutput",
36
+ "plan",
37
+ "reasoning",
38
+ "commandExecution",
39
+ "fileChange",
40
+ "mcpToolCall",
41
+ "dynamicToolCall",
42
+ "collabAgentToolCall",
43
+ "subAgentActivity",
44
+ "webSearch",
45
+ "imageView",
46
+ "sleep",
47
+ "imageGeneration",
48
+ "enteredReviewMode",
49
+ "exitedReviewMode",
50
+ "contextCompaction",
51
+ ];
52
+ /** ResponseItem types in the baseline (rawResponseItem/completed). */
53
+ const RAW_ITEM_TYPES = [
54
+ "message",
55
+ "agent_message",
56
+ "reasoning",
57
+ "local_shell_call",
58
+ "function_call",
59
+ "tool_search_call",
60
+ "function_call_output",
61
+ "custom_tool_call",
62
+ "custom_tool_call_output",
63
+ "tool_search_output",
64
+ "web_search_call",
65
+ "image_generation_call",
66
+ "compaction",
67
+ "configuration_update",
68
+ "compaction_trigger",
69
+ "context_compaction",
70
+ "other",
71
+ ];
72
+ const APPROVAL_POLICIES = ["untrusted", "on-request", "never"];
73
+ const itemType = {
74
+ path: "item.type",
75
+ types: S,
76
+ expects: ["userMessage", "agentMessage", "reasoning", "contextCompaction", "dynamicToolCall"],
77
+ known: THREAD_ITEM_TYPES,
78
+ };
79
+ /** What the tool policy reads on both item notifications; it refuses on a value, not an absence. */
80
+ const agentMessageRefusals = [
81
+ { path: "item.{type=agentMessage}.delivery", types: orNull(S), known: ["async"], optional: true },
82
+ { path: "item.{type=agentMessage}.questions", types: orNull(A), optional: true },
83
+ ];
84
+ const dynamicTool = (status, others) => [
85
+ { path: "item.{type=dynamicToolCall}.tool", types: S },
86
+ { path: "item.{type=dynamicToolCall}.namespace", types: orNull(S), expects: [null] },
87
+ { path: "item.{type=dynamicToolCall}.status", types: S, expects: [status], known: others },
88
+ ];
89
+ /** item/started: the type, the tool policy and a started tool call (restricted-turn.ts admitsItem). */
90
+ const startedReads = [
91
+ ...scope,
92
+ itemType,
93
+ ...agentMessageRefusals,
94
+ ...dynamicTool("inProgress", ["completed", "failed"]),
95
+ ];
96
+ /** item/completed adds the answer's shape and a finished tool call. */
97
+ const completedReads = [
98
+ ...scope,
99
+ itemType,
100
+ ...agentMessageRefusals,
101
+ { path: "item.{type=agentMessage}.id", types: S },
102
+ { path: "item.{type=agentMessage}.text", types: S },
103
+ {
104
+ path: "item.{type=agentMessage}.phase",
105
+ types: orNull(S),
106
+ expects: [null, "final_answer", "commentary"],
107
+ known: [],
108
+ },
109
+ ...dynamicTool("completed", ["inProgress", "failed"]),
110
+ { path: "item.{type=dynamicToolCall}.success", types: orNull(B), expects: [true] },
111
+ ];
112
+ /** initialize, config/read and account/read: what the launch handshake sends and reads. */
113
+ function handshakeRequests(host) {
114
+ const effort = host.reasoningEffort;
115
+ return [
116
+ {
117
+ method: "initialize",
118
+ params: [
119
+ object("", ["clientInfo", "capabilities"]),
120
+ object("clientInfo", ["name", "version"]),
121
+ sent("clientInfo.name", S),
122
+ sent("clientInfo.version", S),
123
+ object("capabilities", ["experimentalApi"]),
124
+ sent("capabilities.experimentalApi", B, true),
125
+ ],
126
+ response: {
127
+ definition: "InitializeResponse",
128
+ reads: [
129
+ { path: "userAgent", types: S },
130
+ { path: "codexHome", types: S },
131
+ {
132
+ path: "platformOs",
133
+ types: S,
134
+ expects: [host.platform === "darwin" ? "macos" : "linux"],
135
+ },
136
+ { path: "platformFamily", types: S, expects: ["unix"] },
137
+ ],
138
+ },
139
+ },
140
+ {
141
+ method: "config/read",
142
+ params: [
143
+ object("", ["includeLayers", "cwd"]),
144
+ sent("includeLayers", B, true),
145
+ sent("cwd", S),
146
+ ],
147
+ response: {
148
+ definition: "ConfigReadResponse",
149
+ reads: [
150
+ { path: "layers", types: orNull(A) },
151
+ {
152
+ path: "layers[].name.type",
153
+ types: S,
154
+ expects: ["user", "system"],
155
+ known: [
156
+ "packagedDefaults",
157
+ "mdm",
158
+ "enterpriseManaged",
159
+ "project",
160
+ "sessionFlags",
161
+ "legacyManagedConfigTomlFromFile",
162
+ "legacyManagedConfigTomlFromMdm",
163
+ ],
164
+ },
165
+ // admitsRestrictedCodexConfig reads the file and profile of the user layer only.
166
+ { path: "layers[].name.{type=user}.file", types: S },
167
+ { path: "layers[].name.{type=user}.profile", types: orNull(S), expects: [null] },
168
+ { path: "layers[].disabledReason", types: orNull(S), expects: [null] },
169
+ // A system layer must be empty (admitsRestrictedCodexConfig).
170
+ { path: "layers[].config" },
171
+ { path: "config", types: O },
172
+ { path: "config.model", types: orNull(S) },
173
+ { path: "config.model_provider", types: orNull(S), expects: ["openai"] },
174
+ { path: "config.model_reasoning_effort", types: orNull(S), expects: [effort] },
175
+ {
176
+ path: "config.forced_login_method",
177
+ types: orNull(S),
178
+ expects: ["chatgpt"],
179
+ known: ["api"],
180
+ },
181
+ {
182
+ path: "config.sandbox_mode",
183
+ types: orNull(S),
184
+ expects: ["read-only"],
185
+ known: ["workspace-write", "danger-full-access"],
186
+ },
187
+ {
188
+ path: "config.approval_policy",
189
+ types: ["string", "object", "null"],
190
+ expects: ["never"],
191
+ known: APPROVAL_POLICIES,
192
+ },
193
+ {
194
+ path: "config.web_search",
195
+ types: orNull(S),
196
+ expects: ["disabled"],
197
+ known: ["cached", "indexed", "live"],
198
+ },
199
+ { path: "config.analytics", types: orNull(O) },
200
+ { path: "config.analytics.enabled", types: orNull(B), expects: [false] },
201
+ ],
202
+ },
203
+ },
204
+ {
205
+ method: "account/read",
206
+ params: [object("", ["refreshToken"]), sent("refreshToken", B, false)],
207
+ response: {
208
+ definition: "GetAccountResponse",
209
+ reads: [
210
+ { path: "account", types: orNull(O), expects: [null] },
211
+ {
212
+ path: "account.type",
213
+ types: S,
214
+ expects: ["chatgpt", "apiKey"],
215
+ known: ["amazonBedrock"],
216
+ },
217
+ { path: "requiresOpenaiAuth", types: B, expects: [true] },
218
+ ],
219
+ },
220
+ },
221
+ ];
222
+ }
223
+ /** thread/start, mcpServerStatus/list, turn/start and turn/interrupt. */
224
+ function threadRequests(host) {
225
+ const effort = host.reasoningEffort;
226
+ return [
227
+ {
228
+ method: "thread/start",
229
+ params: [
230
+ object("", [
231
+ "cwd",
232
+ "ephemeral",
233
+ "experimentalRawEvents",
234
+ "approvalPolicy",
235
+ "sandbox",
236
+ "model",
237
+ "modelProvider",
238
+ "allowProviderModelFallback",
239
+ "environments",
240
+ "runtimeWorkspaceRoots",
241
+ "dynamicTools",
242
+ "baseInstructions",
243
+ "config",
244
+ ]),
245
+ sent("cwd", S),
246
+ sent("ephemeral", B, true),
247
+ sent("experimentalRawEvents", B, true),
248
+ sent("approvalPolicy", S, "never"),
249
+ sent("sandbox", S, "read-only"),
250
+ sent("model", S),
251
+ sent("modelProvider", S, "openai"),
252
+ sent("allowProviderModelFallback", B, false),
253
+ sent("environments", A),
254
+ sent("runtimeWorkspaceRoots", A),
255
+ sent("dynamicTools", A),
256
+ sent("dynamicTools[].type", S, "function"),
257
+ object("dynamicTools[].{type=function}", ["type", "name", "description", "inputSchema"]),
258
+ sent("dynamicTools[].{type=function}.name", S),
259
+ sent("dynamicTools[].{type=function}.description", S),
260
+ sent("dynamicTools[].{type=function}.inputSchema", O),
261
+ sent("baseInstructions", S),
262
+ sent("config", O),
263
+ ],
264
+ response: {
265
+ definition: "ThreadStartResponse",
266
+ reads: [
267
+ { path: "thread.id", types: S },
268
+ { path: "thread.ephemeral", types: B, expects: [true] },
269
+ { path: "thread.model", types: orNull(S) },
270
+ { path: "thread.modelProvider", types: S, expects: ["openai"] },
271
+ { path: "thread.reasoningEffort", types: orNull(S), expects: [effort] },
272
+ { path: "thread.cliVersion", types: S },
273
+ { path: "thread.environments", types: orNull(A) },
274
+ { path: "thread.path", types: orNull(S), expects: [null] },
275
+ { path: "thread.cwd", types: S },
276
+ { path: "model", types: S },
277
+ { path: "modelProvider", types: S, expects: ["openai"] },
278
+ { path: "reasoningEffort", types: orNull(S), expects: [effort] },
279
+ { path: "cwd", types: S },
280
+ {
281
+ path: "approvalPolicy",
282
+ types: ["string", "object"],
283
+ expects: ["never"],
284
+ known: APPROVAL_POLICIES,
285
+ },
286
+ {
287
+ path: "sandbox.type",
288
+ types: S,
289
+ expects: ["readOnly"],
290
+ known: ["dangerFullAccess", "externalSandbox", "workspaceWrite"],
291
+ },
292
+ { path: "sandbox.{type=readOnly}.networkAccess", types: B, expects: [false] },
293
+ { path: "instructionSources", types: A },
294
+ { path: "runtimeWorkspaceRoots", types: A },
295
+ ],
296
+ },
297
+ },
298
+ {
299
+ method: "mcpServerStatus/list",
300
+ params: [object("", ["limit"]), sent("limit", I)],
301
+ response: {
302
+ definition: "ListMcpServerStatusResponse",
303
+ reads: [
304
+ { path: "data", types: A },
305
+ { path: "nextCursor", types: orNull(S), expects: [null] },
306
+ ],
307
+ },
308
+ },
309
+ {
310
+ method: "turn/start",
311
+ params: [
312
+ object("", [
313
+ "threadId",
314
+ "cwd",
315
+ "approvalPolicy",
316
+ "sandboxPolicy",
317
+ "environments",
318
+ "runtimeWorkspaceRoots",
319
+ "effort",
320
+ "model",
321
+ "outputSchema",
322
+ "input",
323
+ ]),
324
+ sent("threadId", S),
325
+ sent("cwd", S),
326
+ sent("approvalPolicy", S, "never"),
327
+ sent("sandboxPolicy.type", S, "readOnly"),
328
+ object("sandboxPolicy.{type=readOnly}", ["type"]),
329
+ sent("environments", A),
330
+ sent("runtimeWorkspaceRoots", A),
331
+ sent("effort", S, effort),
332
+ sent("model", S),
333
+ sent("outputSchema", O),
334
+ sent("input", A),
335
+ sent("input[].type", S, "text", "localImage"),
336
+ object("input[].{type=text}", ["type", "text", "text_elements"]),
337
+ sent("input[].{type=text}.text", S),
338
+ sent("input[].{type=text}.text_elements", A),
339
+ object("input[].{type=localImage}", ["type", "path"]),
340
+ sent("input[].{type=localImage}.path", S),
341
+ ],
342
+ response: { definition: "TurnStartResponse", reads: [{ path: "turn.id", types: S }] },
343
+ },
344
+ {
345
+ method: "turn/interrupt",
346
+ params: [object("", ["threadId", "turnId"]), sent("threadId", S), sent("turnId", S)],
347
+ },
348
+ ];
349
+ }
350
+ /** The notifications and the server request humanish consumes, and its reply to that request. */
351
+ const MESSAGES = [
352
+ // Where the baseline carries items; a release that moves them refuses (ITEM_CARRIERS).
353
+ {
354
+ method: "thread/started",
355
+ definition: "ThreadStartedNotification",
356
+ reads: [
357
+ { path: "thread", types: orNull(O) },
358
+ { path: "thread.turns", types: orNull(A) },
359
+ { path: "thread.turns[].items", types: orNull(A) },
360
+ ],
361
+ },
362
+ {
363
+ method: "turn/started",
364
+ definition: "TurnStartedNotification",
365
+ reads: [
366
+ { path: "threadId", types: S },
367
+ { path: "turn.id", types: S },
368
+ { path: "turn.items", types: orNull(A) },
369
+ ],
370
+ },
371
+ {
372
+ method: "turn/completed",
373
+ definition: "TurnCompletedNotification",
374
+ reads: [
375
+ { path: "threadId", types: S },
376
+ { path: "turn.id", types: S },
377
+ {
378
+ path: "turn.status",
379
+ types: S,
380
+ expects: ["completed", "interrupted"],
381
+ known: ["failed", "inProgress"],
382
+ },
383
+ { path: "turn.error", types: orNull(O), expects: [null] },
384
+ { path: "turn.items", types: orNull(A) },
385
+ ],
386
+ },
387
+ { method: "item/started", definition: "ItemStartedNotification", reads: startedReads },
388
+ { method: "item/completed", definition: "ItemCompletedNotification", reads: completedReads },
389
+ {
390
+ method: "item/agentMessage/delta",
391
+ definition: "AgentMessageDeltaNotification",
392
+ reads: [...scope, { path: "delta", types: S }],
393
+ },
394
+ {
395
+ method: "rawResponseItem/completed",
396
+ definition: "RawResponseItemCompletedNotification",
397
+ reads: [
398
+ ...scope,
399
+ {
400
+ path: "item.type",
401
+ types: S,
402
+ expects: ["message", "reasoning", "custom_tool_call", "function_call"],
403
+ known: RAW_ITEM_TYPES,
404
+ },
405
+ { path: "item.{type=custom_tool_call}.name", types: S, expects: ["exec"] },
406
+ { path: "item.{type=function_call}.name", types: S, expects: ["wait"] },
407
+ { path: "item.{type=message}.content", types: A },
408
+ // humanish stops on a "refusal" content item, which the baseline schema does not list.
409
+ {
410
+ path: "item.{type=message}.content[].type",
411
+ types: S,
412
+ known: ["input_text", "input_image", "input_audio", "output_text", "refusal"],
413
+ },
414
+ ],
415
+ },
416
+ {
417
+ method: "thread/tokenUsage/updated",
418
+ definition: "ThreadTokenUsageUpdatedNotification",
419
+ reads: [
420
+ ...scope,
421
+ { path: "tokenUsage.total.inputTokens", types: I },
422
+ { path: "tokenUsage.total.outputTokens", types: I },
423
+ { path: "tokenUsage.total.cachedInputTokens", types: I },
424
+ { path: "tokenUsage.total.cacheWriteInputTokens", types: I },
425
+ ],
426
+ },
427
+ {
428
+ method: "item/tool/call",
429
+ definition: "DynamicToolCallParams",
430
+ reads: [
431
+ ...scope,
432
+ { path: "callId", types: S },
433
+ { path: "tool", types: S },
434
+ { path: "namespace", types: orNull(S), expects: [null] },
435
+ { path: "arguments" },
436
+ ],
437
+ reply: {
438
+ definition: "DynamicToolCallResponse",
439
+ sends: [
440
+ object("", ["success", "contentItems"]),
441
+ sent("success", B, true),
442
+ sent("contentItems", A),
443
+ sent("contentItems[].type", S, "inputText"),
444
+ object("contentItems[].{type=inputText}", ["type", "text"]),
445
+ sent("contentItems[].{type=inputText}.text", S),
446
+ ],
447
+ },
448
+ },
449
+ ];
450
+ /** A container that stops being an array or object would hide its items from the item policy. */
451
+ const ITEM_CARRIERS = [
452
+ { path: "items", types: orNull(A), optional: true },
453
+ { path: "turn", types: orNull(O), optional: true },
454
+ { path: "turn.items", types: orNull(A), optional: true },
455
+ { path: "thread", types: orNull(O), optional: true },
456
+ { path: "thread.turns", types: orNull(A), optional: true },
457
+ { path: "thread.turns[]", types: O, optional: true },
458
+ { path: "thread.turns[].items", types: orNull(A), optional: true },
459
+ ];
460
+ /**
461
+ * The contract for one launch. config/read's `config` is typed only for some keys; the keys
462
+ * humanish pins that the schema leaves open are checked at launch by admitsRestrictedCodexConfig,
463
+ * which compares exact values, so they are not listed here.
464
+ */
465
+ export function protocolContract(host) {
466
+ return {
467
+ requests: [...handshakeRequests(host), ...threadRequests(host)],
468
+ messages: MESSAGES,
469
+ itemCarriers: ITEM_CARRIERS,
470
+ };
471
+ }
@@ -1,17 +1,41 @@
1
1
  import { type RestrictedCodexDeadline, type RestrictedCodexSpawn } from "./restricted-transport.js";
2
- /** The environment of every Codex child: a private home and scratch, and PATH and locale. */
2
+ /** The environment of every Codex child: a private home and scratch, and `PATH` and locale. */
3
3
  export declare function childEnvironment(source: NodeJS.ProcessEnv, home: string, scratch: string): NodeJS.ProcessEnv;
4
4
  /** Official npm launcher target map for the Unix hosts supported by this transport. */
5
5
  export declare function restrictedCodexNpmTarget(platform: NodeJS.Platform, arch: string): {
6
6
  triple: string;
7
7
  packageName: string;
8
8
  } | undefined;
9
- /** Resolve PATH without running a shell. The npm launcher is resolved to its
9
+ /** The `codex` file humanish found and would not run, and why. No path: none was found. */
10
+ export interface RefusedCodexExecutable {
11
+ readonly path?: string;
12
+ readonly reason: string;
13
+ }
14
+ /** Resolve `PATH` without running a shell. The npm launcher is resolved to its
10
15
  * native optional package so cleanup owns the real app-server child. */
11
16
  export declare function resolveExecutable(options: {
12
17
  executable?: string;
13
18
  platform?: NodeJS.Platform;
14
19
  arch?: string;
15
20
  }, env: NodeJS.ProcessEnv): Promise<string>;
16
- /** Returns the detected release after checking it against the admitted list. */
17
- export declare function checkVersion(file: string, env: NodeJS.ProcessEnv, cwd: string, spawnFn: RestrictedCodexSpawn, deadline: RestrictedCodexDeadline, admitted: readonly string[], expected: string | undefined): Promise<string>;
21
+ /** The `codex` resolveExecutable turns down and why, or undefined when it finds one to run. */
22
+ export declare function refusedCodexExecutable(env: NodeJS.ProcessEnv, options?: {
23
+ platform?: NodeJS.Platform;
24
+ arch?: string;
25
+ }): Promise<RefusedCodexExecutable | undefined>;
26
+ /**
27
+ * The `codex` resolveExecutable picks from `PATH`, runnable or not, and the file it resolves to:
28
+ * what decides the command that replaces it. Undefined when `PATH` has none that resolves.
29
+ */
30
+ export declare function foundCodexExecutable(env: NodeJS.ProcessEnv): Promise<{
31
+ path: string;
32
+ resolved: string;
33
+ } | undefined>;
34
+ /**
35
+ * Writes this release's app-server schema (`app-server generate-json-schema --experimental`) into
36
+ * `out`, for the protocol check. False when the release exits without one. Bounded like the
37
+ * version check: 15 seconds, and a few kilobytes of output, which it does not otherwise read.
38
+ */
39
+ export declare function generateProtocolSchema(file: string, env: NodeJS.ProcessEnv, cwd: string, out: string, spawnFn: RestrictedCodexSpawn, deadline: RestrictedCodexDeadline): Promise<boolean>;
40
+ /** Returns the detected release after checking it against launch admission (`admits`). */
41
+ export declare function checkVersion(file: string, env: NodeJS.ProcessEnv, cwd: string, spawnFn: RestrictedCodexSpawn, deadline: RestrictedCodexDeadline, admits: (version: string) => boolean, expected: string | undefined): Promise<string>;