harnery 0.30.0 → 0.31.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 (501) hide show
  1. package/README.md +4 -4
  2. package/dist/commander.d.ts +8 -0
  3. package/dist/commander.d.ts.map +1 -1
  4. package/dist/commander.js +14 -13
  5. package/dist/commands/adapter.d.ts +12 -0
  6. package/dist/commands/adapter.d.ts.map +1 -0
  7. package/dist/commands/{harness.js → adapter.js} +35 -35
  8. package/dist/commands/agents.d.ts +3 -2
  9. package/dist/commands/agents.d.ts.map +1 -1
  10. package/dist/commands/agents.js +61 -60
  11. package/dist/commands/artifacts.d.ts +4 -0
  12. package/dist/commands/artifacts.d.ts.map +1 -0
  13. package/dist/commands/artifacts.js +143 -0
  14. package/dist/commands/backup.d.ts +1 -1
  15. package/dist/commands/backup.d.ts.map +1 -1
  16. package/dist/commands/backup.js +5 -2
  17. package/dist/commands/browse.d.ts.map +1 -1
  18. package/dist/commands/browse.js +310 -7
  19. package/dist/commands/checkpoint.d.ts +12 -0
  20. package/dist/commands/checkpoint.d.ts.map +1 -0
  21. package/dist/commands/checkpoint.js +162 -0
  22. package/dist/commands/context.d.ts +2 -2
  23. package/dist/commands/context.d.ts.map +1 -1
  24. package/dist/commands/context.js +3 -151
  25. package/dist/commands/decision.d.ts.map +1 -1
  26. package/dist/commands/decision.js +31 -7
  27. package/dist/commands/deinit.d.ts +2 -2
  28. package/dist/commands/deinit.js +15 -15
  29. package/dist/commands/doctor.js +23 -23
  30. package/dist/commands/governor.d.ts +4 -0
  31. package/dist/commands/governor.d.ts.map +1 -0
  32. package/dist/commands/{supervisor.js → governor.js} +133 -108
  33. package/dist/commands/init.d.ts +12 -12
  34. package/dist/commands/init.d.ts.map +1 -1
  35. package/dist/commands/init.js +44 -30
  36. package/dist/commands/{session.d.ts → journal.d.ts} +2 -2
  37. package/dist/commands/journal.d.ts.map +1 -0
  38. package/dist/commands/{scratch.js → journal.js} +47 -47
  39. package/dist/commands/policy.js +1 -1
  40. package/dist/commands/presence.js +2 -2
  41. package/dist/commands/sync.d.ts +1 -1
  42. package/dist/commands/sync.js +3 -3
  43. package/dist/commands/tunnel.d.ts +16 -0
  44. package/dist/commands/tunnel.d.ts.map +1 -1
  45. package/dist/commands/tunnel.js +193 -23
  46. package/dist/commands/web-fetch.js +1 -1
  47. package/dist/commands/web.d.ts +19 -0
  48. package/dist/commands/web.d.ts.map +1 -1
  49. package/dist/commands/web.js +51 -0
  50. package/dist/commands/work.d.ts.map +1 -1
  51. package/dist/commands/work.js +38 -22
  52. package/dist/commands/workflow.d.ts.map +1 -1
  53. package/dist/commands/workflow.js +35 -28
  54. package/dist/core/{harnesses → adapters}/attest-projection.d.ts +2 -2
  55. package/dist/core/adapters/attest-projection.d.ts.map +1 -0
  56. package/dist/core/{harnesses → adapters}/attest.d.ts +16 -16
  57. package/dist/core/adapters/attest.d.ts.map +1 -0
  58. package/dist/core/{harnesses → adapters}/attest.js +9 -9
  59. package/dist/core/{harnesses → adapters}/attestation.d.ts +16 -16
  60. package/dist/core/adapters/attestation.d.ts.map +1 -0
  61. package/dist/core/{harnesses → adapters}/attestation.js +20 -20
  62. package/dist/core/{harnesses → adapters}/bench.d.ts +12 -12
  63. package/dist/core/adapters/bench.d.ts.map +1 -0
  64. package/dist/core/{harnesses → adapters}/bench.js +12 -12
  65. package/dist/core/adapters/index.d.ts +13 -0
  66. package/dist/core/adapters/index.d.ts.map +1 -0
  67. package/dist/core/adapters/index.js +6 -0
  68. package/dist/core/{harnesses → adapters}/profiles.d.ts +11 -11
  69. package/dist/core/adapters/profiles.d.ts.map +1 -0
  70. package/dist/core/{harnesses → adapters}/profiles.js +11 -11
  71. package/dist/core/adapters/registry.d.ts +15 -0
  72. package/dist/core/adapters/registry.d.ts.map +1 -0
  73. package/dist/core/{harnesses → adapters}/registry.js +11 -11
  74. package/dist/core/{harnesses → adapters}/types.d.ts +23 -23
  75. package/dist/core/adapters/types.d.ts.map +1 -0
  76. package/dist/core/{harnesses → adapters}/types.js +1 -1
  77. package/dist/core/agents/canonical-emit.d.ts +4 -4
  78. package/dist/core/agents/canonical-emit.js +5 -5
  79. package/dist/core/agents/cli-emit.js +1 -1
  80. package/dist/core/agents/cli.js +30 -26
  81. package/dist/core/agents/codex-replay.d.ts +1 -1
  82. package/dist/core/agents/codex-replay.js +6 -6
  83. package/dist/core/agents/coord-client.d.ts +21 -2
  84. package/dist/core/agents/coord-client.d.ts.map +1 -1
  85. package/dist/core/agents/coord-client.js +122 -27
  86. package/dist/core/agents/events/consume.d.ts +1 -1
  87. package/dist/core/agents/events/emit.d.ts +5 -6
  88. package/dist/core/agents/events/emit.d.ts.map +1 -1
  89. package/dist/core/agents/events/emit.js +2 -2
  90. package/dist/core/agents/render/prompt-context.d.ts +21 -9
  91. package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
  92. package/dist/core/agents/render/prompt-context.js +82 -30
  93. package/dist/core/agents/render/session-context.d.ts +1 -1
  94. package/dist/core/agents/render/session-context.js +5 -5
  95. package/dist/core/agents/rules/claim-conflict.d.ts +2 -6
  96. package/dist/core/agents/rules/claim-conflict.d.ts.map +1 -1
  97. package/dist/core/agents/rules/claim-conflict.js +1 -1
  98. package/dist/core/agents/rules/commit-conflict.js +98 -22
  99. package/dist/core/agents/rules/stop-hook.d.ts +9 -9
  100. package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
  101. package/dist/core/agents/rules/stop-hook.js +23 -5
  102. package/dist/core/agents/rules/verdict.d.ts +14 -0
  103. package/dist/core/agents/rules/verdict.d.ts.map +1 -0
  104. package/dist/core/agents/rules/verdict.js +1 -0
  105. package/dist/core/agents/session-events.js +3 -3
  106. package/dist/core/agents/state/council.d.ts +1 -1
  107. package/dist/core/agents/state/council.js +1 -1
  108. package/dist/core/agents/state/heartbeat-projector.d.ts +3 -2
  109. package/dist/core/agents/state/heartbeat-projector.d.ts.map +1 -1
  110. package/dist/core/agents/state/heartbeat-projector.js +14 -10
  111. package/dist/core/agents/state/heartbeat-writer.d.ts +1 -1
  112. package/dist/core/agents/state/heartbeat-writer.js +12 -12
  113. package/dist/core/agents/state/{scratch.d.ts → journal.d.ts} +7 -7
  114. package/dist/core/agents/state/{scratch.d.ts.map → journal.d.ts.map} +1 -1
  115. package/dist/core/agents/state/{scratch.js → journal.js} +12 -12
  116. package/dist/core/agents/state/pidmap.d.ts +28 -4
  117. package/dist/core/agents/state/pidmap.d.ts.map +1 -1
  118. package/dist/core/agents/state/pidmap.js +130 -15
  119. package/dist/core/agents/state/proc-start.d.ts +95 -0
  120. package/dist/core/agents/state/proc-start.d.ts.map +1 -0
  121. package/dist/core/agents/state/proc-start.js +199 -0
  122. package/dist/core/agents/state/shell-mutation.d.ts +1 -1
  123. package/dist/core/agents/state/shell-mutation.js +1 -1
  124. package/dist/core/agents/state/stale-sweep.js +7 -7
  125. package/dist/core/artifacts/index.d.ts +86 -0
  126. package/dist/core/artifacts/index.d.ts.map +1 -0
  127. package/dist/core/artifacts/index.js +421 -0
  128. package/dist/core/config.d.ts +9 -2
  129. package/dist/core/config.d.ts.map +1 -1
  130. package/dist/core/config.js +26 -2
  131. package/dist/core/context/index.d.ts +12 -12
  132. package/dist/core/context/index.js +10 -10
  133. package/dist/core/governor/adapter-spread.d.ts +52 -0
  134. package/dist/core/governor/adapter-spread.d.ts.map +1 -0
  135. package/dist/core/governor/adapter-spread.js +52 -0
  136. package/dist/core/governor/index.d.ts +7 -0
  137. package/dist/core/governor/index.d.ts.map +1 -0
  138. package/dist/core/governor/index.js +6 -0
  139. package/dist/core/governor/plan-api.d.ts +38 -0
  140. package/dist/core/governor/plan-api.d.ts.map +1 -0
  141. package/dist/core/governor/plan-api.js +83 -0
  142. package/dist/core/governor/plan-read.d.ts +5 -0
  143. package/dist/core/governor/plan-read.d.ts.map +1 -0
  144. package/dist/core/{supervisor → governor}/plan-read.js +66 -52
  145. package/dist/core/{supervisor → governor}/plan-types.d.ts +57 -56
  146. package/dist/core/governor/plan-types.d.ts.map +1 -0
  147. package/dist/core/{supervisor → governor}/plan-types.js +4 -4
  148. package/dist/core/governor/planning.d.ts +48 -0
  149. package/dist/core/governor/planning.d.ts.map +1 -0
  150. package/dist/core/{supervisor → governor}/planning.js +125 -94
  151. package/dist/core/governor/read.d.ts +6 -0
  152. package/dist/core/governor/read.d.ts.map +1 -0
  153. package/dist/core/governor/read.js +4 -0
  154. package/dist/core/governor/runner.d.ts +37 -0
  155. package/dist/core/governor/runner.d.ts.map +1 -0
  156. package/dist/core/{supervisor → governor}/runner.js +15 -15
  157. package/dist/core/governor/service-read.d.ts +6 -0
  158. package/dist/core/governor/service-read.d.ts.map +1 -0
  159. package/dist/core/{supervisor → governor}/service-read.js +12 -12
  160. package/dist/core/governor/service.d.ts +114 -0
  161. package/dist/core/governor/service.d.ts.map +1 -0
  162. package/dist/core/{supervisor → governor}/service.js +57 -57
  163. package/dist/core/governor/state.d.ts +116 -0
  164. package/dist/core/governor/state.d.ts.map +1 -0
  165. package/dist/core/{supervisor → governor}/state.js +228 -108
  166. package/dist/core/hooks/adapter/detect.d.ts +9 -0
  167. package/dist/core/hooks/{harness → adapter}/detect.d.ts.map +1 -1
  168. package/dist/core/hooks/{harness → adapter}/detect.js +8 -8
  169. package/dist/core/hooks/{harness → adapter}/events.d.ts +15 -14
  170. package/dist/core/hooks/adapter/events.d.ts.map +1 -0
  171. package/dist/core/hooks/{harness → adapter}/events.js +5 -5
  172. package/dist/core/hooks/{harness → adapter}/output.d.ts +20 -14
  173. package/dist/core/hooks/adapter/output.d.ts.map +1 -0
  174. package/dist/core/hooks/{harness → adapter}/output.js +30 -22
  175. package/dist/core/hooks/{harness → adapter}/parse.d.ts +5 -5
  176. package/dist/core/hooks/{harness → adapter}/parse.d.ts.map +1 -1
  177. package/dist/core/hooks/{harness → adapter}/parse.js +4 -4
  178. package/dist/core/hooks/{harness → adapter}/wiring.d.ts +15 -15
  179. package/dist/core/hooks/{harness → adapter}/wiring.d.ts.map +1 -1
  180. package/dist/core/hooks/{harness → adapter}/wiring.js +13 -13
  181. package/dist/core/hooks/cli.d.ts +3 -3
  182. package/dist/core/hooks/cli.js +175 -151
  183. package/dist/core/hooks/effects/image-capture.d.ts +5 -5
  184. package/dist/core/hooks/effects/image-capture.d.ts.map +1 -1
  185. package/dist/core/hooks/effects/image-capture.js +3 -3
  186. package/dist/core/hooks/effects/index.d.ts +12 -12
  187. package/dist/core/hooks/effects/index.d.ts.map +1 -1
  188. package/dist/core/hooks/effects/index.js +17 -17
  189. package/dist/core/hooks/events/emit.d.ts +2 -2
  190. package/dist/core/hooks/events/emit.d.ts.map +1 -1
  191. package/dist/core/hooks/events/emit.js +1 -1
  192. package/dist/core/hooks/events/rotate.js +1 -1
  193. package/dist/core/hooks/events/schema.d.ts +13 -5
  194. package/dist/core/hooks/events/schema.d.ts.map +1 -1
  195. package/dist/core/hooks/guard-path.d.ts +2 -2
  196. package/dist/core/hooks/guard-path.js +2 -2
  197. package/dist/core/hooks/index.d.ts +1 -1
  198. package/dist/core/hooks/index.d.ts.map +1 -1
  199. package/dist/core/hooks/resolve/anchor.d.ts +14 -5
  200. package/dist/core/hooks/resolve/anchor.d.ts.map +1 -1
  201. package/dist/core/hooks/resolve/anchor.js +64 -7
  202. package/dist/core/hooks/resolve/coord-root.d.ts +3 -3
  203. package/dist/core/hooks/resolve/coord-root.js +4 -4
  204. package/dist/core/hooks/resolve/intent.js +1 -1
  205. package/dist/core/hooks/resolve/owner.d.ts +1 -1
  206. package/dist/core/hooks/resolve/owner.d.ts.map +1 -1
  207. package/dist/core/hooks/resolve/owner.js +11 -5
  208. package/dist/core/{scratch → journal}/index.d.ts +25 -25
  209. package/dist/core/{scratch → journal}/index.d.ts.map +1 -1
  210. package/dist/core/{scratch → journal}/index.js +38 -38
  211. package/dist/core/policy/evaluate.d.ts +1 -1
  212. package/dist/core/policy/evaluate.d.ts.map +1 -1
  213. package/dist/core/policy/evaluate.js +7 -7
  214. package/dist/core/policy/types.d.ts +3 -3
  215. package/dist/core/policy/types.d.ts.map +1 -1
  216. package/dist/core/work/state.d.ts +12 -4
  217. package/dist/core/work/state.d.ts.map +1 -1
  218. package/dist/core/work/state.js +50 -17
  219. package/dist/core/workflow/adapters.d.ts +17 -0
  220. package/dist/core/workflow/adapters.d.ts.map +1 -0
  221. package/dist/core/workflow/adapters.js +21 -0
  222. package/dist/core/workflow/approvals.js +6 -6
  223. package/dist/core/workflow/billing.d.ts +9 -9
  224. package/dist/core/workflow/billing.js +9 -9
  225. package/dist/core/workflow/child-env.d.ts +10 -2
  226. package/dist/core/workflow/child-env.d.ts.map +1 -1
  227. package/dist/core/workflow/child-env.js +12 -4
  228. package/dist/core/workflow/engine.d.ts +15 -5
  229. package/dist/core/workflow/engine.d.ts.map +1 -1
  230. package/dist/core/workflow/engine.js +138 -83
  231. package/dist/core/workflow/evidence-preflight.d.ts +24 -0
  232. package/dist/core/workflow/evidence-preflight.d.ts.map +1 -0
  233. package/dist/core/workflow/evidence-preflight.js +134 -0
  234. package/dist/core/workflow/index.d.ts +1 -1
  235. package/dist/core/workflow/index.d.ts.map +1 -1
  236. package/dist/core/workflow/proof.d.ts +11 -5
  237. package/dist/core/workflow/proof.d.ts.map +1 -1
  238. package/dist/core/workflow/proof.js +45 -36
  239. package/dist/core/workflow/run-state.d.ts +1 -1
  240. package/dist/core/workflow/run-state.js +7 -7
  241. package/dist/core/workflow/sandbox-projection.d.ts +6 -6
  242. package/dist/core/workflow/sandbox-projection.d.ts.map +1 -1
  243. package/dist/core/workflow/sandbox-projection.js +11 -11
  244. package/dist/core/workflow/spawn-claude.d.ts +3 -3
  245. package/dist/core/workflow/spawn-claude.d.ts.map +1 -1
  246. package/dist/core/workflow/spawn-claude.js +9 -6
  247. package/dist/core/workflow/spawn-codex.d.ts +4 -4
  248. package/dist/core/workflow/spawn-codex.d.ts.map +1 -1
  249. package/dist/core/workflow/spawn-codex.js +9 -6
  250. package/dist/core/workflow/spawn-cursor.d.ts +4 -4
  251. package/dist/core/workflow/spawn-cursor.d.ts.map +1 -1
  252. package/dist/core/workflow/spawn-cursor.js +9 -6
  253. package/dist/core/workflow/spawn-failure.d.ts +1 -1
  254. package/dist/core/workflow/spawn-failure.js +1 -1
  255. package/dist/core/workflow/specialists.js +2 -2
  256. package/dist/core/workflow/{journal.d.ts → transcript.d.ts} +8 -8
  257. package/dist/core/workflow/transcript.d.ts.map +1 -0
  258. package/dist/core/workflow/{journal.js → transcript.js} +14 -14
  259. package/dist/core/workflow/types.d.ts +98 -51
  260. package/dist/core/workflow/types.d.ts.map +1 -1
  261. package/dist/core/workflow/types.js +11 -1
  262. package/dist/core/workflow/validate.d.ts +1 -1
  263. package/dist/core/workflow/validate.js +1 -1
  264. package/dist/core/workflow/workspaces/cancellation.js +2 -2
  265. package/dist/core/workflow/workspaces/cleanup.js +2 -2
  266. package/dist/core/workflow/workspaces/execution.js +6 -6
  267. package/dist/core/workflow/workspaces/inspect.js +9 -9
  268. package/dist/core/workflow/workspaces/integration.js +14 -14
  269. package/dist/core/workflow/workspaces/lifecycle.d.ts +1 -1
  270. package/dist/core/workflow/workspaces/lifecycle.d.ts.map +1 -1
  271. package/dist/core/workflow/workspaces/lifecycle.js +9 -9
  272. package/dist/core/workflow/workspaces/local-git.d.ts.map +1 -1
  273. package/dist/core/workflow/workspaces/local-git.js +39 -5
  274. package/dist/core/workflow/workspaces/recovery.js +3 -3
  275. package/dist/core/workflow/workspaces/state.d.ts +1 -1
  276. package/dist/core/workflow/workspaces/state.d.ts.map +1 -1
  277. package/dist/core/workflow/workspaces/state.js +3 -3
  278. package/dist/core/workflow/workspaces/types.d.ts +1 -1
  279. package/dist/core/workflow/workspaces/types.d.ts.map +1 -1
  280. package/dist/lib/browser/asserts.d.ts +28 -0
  281. package/dist/lib/browser/asserts.d.ts.map +1 -0
  282. package/dist/lib/browser/asserts.js +152 -0
  283. package/dist/lib/browser/client.d.ts +49 -0
  284. package/dist/lib/browser/client.d.ts.map +1 -1
  285. package/dist/lib/browser/client.js +155 -14
  286. package/dist/lib/browser/content-checks.d.ts +108 -0
  287. package/dist/lib/browser/content-checks.d.ts.map +1 -0
  288. package/dist/lib/browser/content-checks.js +474 -0
  289. package/dist/lib/browser/critique.d.ts +91 -0
  290. package/dist/lib/browser/critique.d.ts.map +1 -0
  291. package/dist/lib/browser/critique.js +167 -0
  292. package/dist/lib/browser/geometry.d.ts +32 -0
  293. package/dist/lib/browser/geometry.d.ts.map +1 -1
  294. package/dist/lib/browser/geometry.js +244 -1
  295. package/dist/lib/browser/index.d.ts +4 -1
  296. package/dist/lib/browser/index.d.ts.map +1 -1
  297. package/dist/lib/browser/index.js +2 -0
  298. package/dist/lib/claude-desktop.d.ts.map +1 -1
  299. package/dist/lib/claude-desktop.js +4 -1
  300. package/dist/lib/council/index.d.ts +6 -6
  301. package/dist/lib/council/index.d.ts.map +1 -1
  302. package/dist/lib/council/index.js +8 -8
  303. package/dist/lib/identities/assume.d.ts +2 -2
  304. package/dist/lib/identities/assume.js +7 -7
  305. package/dist/lib/instructions/apply.d.ts +3 -3
  306. package/dist/lib/instructions/apply.d.ts.map +1 -1
  307. package/dist/lib/instructions/apply.js +75 -27
  308. package/dist/lib/instructions/host-addendum.d.ts +54 -0
  309. package/dist/lib/instructions/host-addendum.d.ts.map +1 -0
  310. package/dist/lib/instructions/host-addendum.js +107 -0
  311. package/dist/lib/instructions/templates.d.ts +10 -3
  312. package/dist/lib/instructions/templates.d.ts.map +1 -1
  313. package/dist/lib/instructions/templates.js +41 -12
  314. package/dist/lib/machine.d.ts +2 -2
  315. package/dist/lib/machine.js +2 -2
  316. package/package.json +26 -21
  317. package/schemas/config.schema.json +26 -1
  318. package/src/commander.ts +22 -13
  319. package/src/commands/{harness.ts → adapter.ts} +46 -46
  320. package/src/commands/agents.ts +71 -64
  321. package/src/commands/artifacts.ts +168 -0
  322. package/src/commands/backup.ts +47 -33
  323. package/src/commands/browse.ts +438 -2
  324. package/src/commands/checkpoint.ts +196 -0
  325. package/src/commands/context.ts +3 -176
  326. package/src/commands/decision.ts +41 -7
  327. package/src/commands/deinit.ts +16 -16
  328. package/src/commands/doctor.ts +28 -28
  329. package/src/commands/{supervisor.ts → governor.ts} +184 -154
  330. package/src/commands/init.ts +50 -34
  331. package/src/commands/{scratch.ts → journal.ts} +60 -60
  332. package/src/commands/policy.ts +1 -1
  333. package/src/commands/presence.ts +2 -2
  334. package/src/commands/sync.ts +3 -3
  335. package/src/commands/tunnel.ts +237 -34
  336. package/src/commands/web-fetch.ts +1 -1
  337. package/src/commands/web.ts +56 -1
  338. package/src/commands/work.ts +50 -35
  339. package/src/commands/workflow.ts +43 -34
  340. package/src/core/{harnesses → adapters}/attest-projection.ts +2 -2
  341. package/src/core/{harnesses → adapters}/attest.ts +27 -27
  342. package/src/core/{harnesses → adapters}/attestation.ts +41 -41
  343. package/src/core/{harnesses → adapters}/bench.ts +34 -43
  344. package/src/core/adapters/index.ts +56 -0
  345. package/src/core/{harnesses → adapters}/profiles.ts +16 -16
  346. package/src/core/{harnesses → adapters}/registry.ts +23 -23
  347. package/src/core/{harnesses → adapters}/types.ts +23 -23
  348. package/src/core/agents/canonical-emit.ts +6 -6
  349. package/src/core/agents/cli-emit.ts +1 -1
  350. package/src/core/agents/cli.ts +30 -28
  351. package/src/core/agents/codex-replay.ts +6 -6
  352. package/src/core/agents/coord-client.ts +119 -28
  353. package/src/core/agents/events/consume.ts +1 -1
  354. package/src/core/agents/events/emit.ts +7 -6
  355. package/src/core/agents/render/prompt-context.ts +107 -31
  356. package/src/core/agents/render/session-context.ts +6 -6
  357. package/src/core/agents/rules/claim-conflict.ts +4 -7
  358. package/src/core/agents/rules/commit-conflict.ts +103 -22
  359. package/src/core/agents/rules/stop-hook.ts +33 -17
  360. package/src/core/agents/rules/verdict.ts +13 -0
  361. package/src/core/agents/session-events.ts +4 -4
  362. package/src/core/agents/state/council.ts +1 -1
  363. package/src/core/agents/state/heartbeat-projector.ts +16 -12
  364. package/src/core/agents/state/heartbeat-writer.ts +12 -12
  365. package/src/core/agents/state/{scratch.ts → journal.ts} +12 -12
  366. package/src/core/agents/state/pidmap.ts +130 -15
  367. package/src/core/agents/state/proc-start.ts +208 -0
  368. package/src/core/agents/state/shell-mutation.ts +1 -1
  369. package/src/core/agents/state/stale-sweep.ts +7 -7
  370. package/src/core/artifacts/index.ts +557 -0
  371. package/src/core/config.ts +30 -2
  372. package/src/core/context/index.ts +15 -15
  373. package/src/core/governor/adapter-spread.ts +82 -0
  374. package/src/core/governor/index.ts +91 -0
  375. package/src/core/governor/plan-api.ts +115 -0
  376. package/src/core/{supervisor → governor}/plan-read.ts +112 -97
  377. package/src/core/{supervisor → governor}/plan-types.ts +59 -56
  378. package/src/core/{supervisor → governor}/planning.ts +223 -192
  379. package/src/core/governor/read.ts +59 -0
  380. package/src/core/{supervisor → governor}/runner.ts +39 -39
  381. package/src/core/{supervisor → governor}/service-read.ts +22 -22
  382. package/src/core/{supervisor → governor}/service.ts +117 -119
  383. package/src/core/{supervisor → governor}/state.ts +325 -167
  384. package/src/core/hooks/adapter/detect.ts +30 -0
  385. package/src/core/hooks/{harness → adapter}/events.ts +16 -14
  386. package/src/core/hooks/{harness → adapter}/output.ts +31 -23
  387. package/src/core/hooks/{harness → adapter}/parse.ts +5 -5
  388. package/src/core/hooks/{harness → adapter}/wiring.ts +21 -21
  389. package/src/core/hooks/cli.ts +185 -162
  390. package/src/core/hooks/effects/image-capture.ts +6 -6
  391. package/src/core/hooks/effects/index.ts +17 -17
  392. package/src/core/hooks/events/emit.ts +3 -3
  393. package/src/core/hooks/events/rotate.ts +1 -1
  394. package/src/core/hooks/events/schema.ts +15 -7
  395. package/src/core/hooks/guard-path.ts +2 -2
  396. package/src/core/hooks/index.ts +1 -1
  397. package/src/core/hooks/resolve/anchor.ts +63 -8
  398. package/src/core/hooks/resolve/coord-root.ts +4 -4
  399. package/src/core/hooks/resolve/intent.ts +1 -1
  400. package/src/core/hooks/resolve/owner.ts +11 -5
  401. package/src/core/{scratch → journal}/index.ts +53 -53
  402. package/src/core/policy/evaluate.ts +8 -8
  403. package/src/core/policy/types.ts +3 -3
  404. package/src/core/work/state.ts +65 -23
  405. package/src/core/workflow/adapters.ts +33 -0
  406. package/src/core/workflow/approvals.ts +7 -7
  407. package/src/core/workflow/billing.ts +12 -12
  408. package/src/core/workflow/child-env.ts +13 -4
  409. package/src/core/workflow/engine.ts +155 -90
  410. package/src/core/workflow/evidence-preflight.ts +165 -0
  411. package/src/core/workflow/index.ts +3 -3
  412. package/src/core/workflow/proof.ts +60 -50
  413. package/src/core/workflow/run-state.ts +7 -7
  414. package/src/core/workflow/sandbox-projection.ts +16 -16
  415. package/src/core/workflow/spawn-claude.ts +13 -10
  416. package/src/core/workflow/spawn-codex.ts +13 -10
  417. package/src/core/workflow/spawn-cursor.ts +13 -10
  418. package/src/core/workflow/spawn-failure.ts +1 -1
  419. package/src/core/workflow/specialists.ts +2 -2
  420. package/src/core/workflow/{journal.ts → transcript.ts} +16 -16
  421. package/src/core/workflow/types.ts +108 -51
  422. package/src/core/workflow/validate.ts +1 -1
  423. package/src/core/workflow/workspaces/cancellation.ts +2 -2
  424. package/src/core/workflow/workspaces/cleanup.ts +2 -2
  425. package/src/core/workflow/workspaces/execution.ts +6 -6
  426. package/src/core/workflow/workspaces/inspect.ts +14 -11
  427. package/src/core/workflow/workspaces/integration.ts +18 -14
  428. package/src/core/workflow/workspaces/lifecycle.ts +10 -10
  429. package/src/core/workflow/workspaces/local-git.ts +47 -5
  430. package/src/core/workflow/workspaces/recovery.ts +3 -3
  431. package/src/core/workflow/workspaces/state.ts +4 -3
  432. package/src/core/workflow/workspaces/types.ts +1 -1
  433. package/src/lib/browser/asserts.ts +177 -0
  434. package/src/lib/browser/client.ts +189 -14
  435. package/src/lib/browser/content-checks.ts +571 -0
  436. package/src/lib/browser/critique.ts +231 -0
  437. package/src/lib/browser/geometry.ts +297 -1
  438. package/src/lib/browser/index.ts +34 -0
  439. package/src/lib/claude-desktop.ts +4 -1
  440. package/src/lib/council/index.ts +9 -9
  441. package/src/lib/identities/assume.ts +7 -7
  442. package/src/lib/instructions/apply.ts +87 -25
  443. package/src/lib/instructions/host-addendum.ts +126 -0
  444. package/src/lib/instructions/templates.ts +44 -15
  445. package/src/lib/machine.ts +2 -2
  446. package/dist/commands/harness.d.ts +0 -12
  447. package/dist/commands/harness.d.ts.map +0 -1
  448. package/dist/commands/scratch.d.ts +0 -4
  449. package/dist/commands/scratch.d.ts.map +0 -1
  450. package/dist/commands/session.d.ts.map +0 -1
  451. package/dist/commands/session.js +0 -162
  452. package/dist/commands/supervisor.d.ts +0 -4
  453. package/dist/commands/supervisor.d.ts.map +0 -1
  454. package/dist/core/harnesses/attest-projection.d.ts.map +0 -1
  455. package/dist/core/harnesses/attest.d.ts.map +0 -1
  456. package/dist/core/harnesses/attestation.d.ts.map +0 -1
  457. package/dist/core/harnesses/bench.d.ts.map +0 -1
  458. package/dist/core/harnesses/index.d.ts +0 -13
  459. package/dist/core/harnesses/index.d.ts.map +0 -1
  460. package/dist/core/harnesses/index.js +0 -6
  461. package/dist/core/harnesses/profiles.d.ts.map +0 -1
  462. package/dist/core/harnesses/registry.d.ts +0 -15
  463. package/dist/core/harnesses/registry.d.ts.map +0 -1
  464. package/dist/core/harnesses/types.d.ts.map +0 -1
  465. package/dist/core/hooks/harness/detect.d.ts +0 -9
  466. package/dist/core/hooks/harness/events.d.ts.map +0 -1
  467. package/dist/core/hooks/harness/output.d.ts.map +0 -1
  468. package/dist/core/supervisor/index.d.ts +0 -7
  469. package/dist/core/supervisor/index.d.ts.map +0 -1
  470. package/dist/core/supervisor/index.js +0 -6
  471. package/dist/core/supervisor/plan-api.d.ts +0 -23
  472. package/dist/core/supervisor/plan-api.d.ts.map +0 -1
  473. package/dist/core/supervisor/plan-api.js +0 -50
  474. package/dist/core/supervisor/plan-read.d.ts +0 -5
  475. package/dist/core/supervisor/plan-read.d.ts.map +0 -1
  476. package/dist/core/supervisor/plan-types.d.ts.map +0 -1
  477. package/dist/core/supervisor/planning.d.ts +0 -33
  478. package/dist/core/supervisor/planning.d.ts.map +0 -1
  479. package/dist/core/supervisor/read.d.ts +0 -6
  480. package/dist/core/supervisor/read.d.ts.map +0 -1
  481. package/dist/core/supervisor/read.js +0 -4
  482. package/dist/core/supervisor/runner.d.ts +0 -37
  483. package/dist/core/supervisor/runner.d.ts.map +0 -1
  484. package/dist/core/supervisor/service-read.d.ts +0 -6
  485. package/dist/core/supervisor/service-read.d.ts.map +0 -1
  486. package/dist/core/supervisor/service.d.ts +0 -114
  487. package/dist/core/supervisor/service.d.ts.map +0 -1
  488. package/dist/core/supervisor/state.d.ts +0 -95
  489. package/dist/core/supervisor/state.d.ts.map +0 -1
  490. package/dist/core/workflow/harnesses.d.ts +0 -17
  491. package/dist/core/workflow/harnesses.d.ts.map +0 -1
  492. package/dist/core/workflow/harnesses.js +0 -21
  493. package/dist/core/workflow/journal.d.ts.map +0 -1
  494. package/src/commands/session.ts +0 -187
  495. package/src/core/harnesses/index.ts +0 -56
  496. package/src/core/hooks/harness/detect.ts +0 -30
  497. package/src/core/supervisor/index.ts +0 -89
  498. package/src/core/supervisor/plan-api.ts +0 -73
  499. package/src/core/supervisor/read.ts +0 -59
  500. package/src/core/workflow/harnesses.ts +0 -33
  501. /package/dist/core/{harnesses → adapters}/attest-projection.js +0 -0
@@ -1,7 +1,7 @@
1
1
  import { spawnSync } from "node:child_process";
2
- import { HARNESS_SPECS } from "../hooks/harness/events.js";
2
+ import { ADAPTER_SPECS } from "../hooks/adapter/events.js";
3
3
  import { isAttestationCurrent, readAttestation } from "./attestation.js";
4
- import { HARNESS_CAPABILITY_DIMENSIONS } from "./types.js";
4
+ import { ADAPTER_CAPABILITY_DIMENSIONS } from "./types.js";
5
5
  const EMPTY_SUMMARY = {
6
6
  supported: 0,
7
7
  partial: 0,
@@ -43,17 +43,17 @@ function versionToken(value) {
43
43
  const match = value.match(/\d+(?:\.\d+)+(?:[-.][0-9a-z]+)*/i);
44
44
  return match ? match[0].toLowerCase() : null;
45
45
  }
46
- export function runHarnessBench(registry, opts = {}) {
47
- const ids = opts.harnesses?.length ? [...opts.harnesses] : registry.ids();
46
+ export function runAdapterBench(registry, opts = {}) {
47
+ const ids = opts.adapters?.length ? [...opts.adapters] : registry.ids();
48
48
  const dimensions = opts.dimensions?.length
49
49
  ? [...new Set(opts.dimensions)]
50
- : [...HARNESS_CAPABILITY_DIMENSIONS];
50
+ : [...ADAPTER_CAPABILITY_DIMENSIONS];
51
51
  const versionProbe = opts.versionProbe ?? probeBinaryVersion;
52
52
  const results = [];
53
53
  for (const id of ids) {
54
54
  const adapter = registry.require(id);
55
55
  results.push({
56
- harness: id,
56
+ adapter: id,
57
57
  dimension: "registration",
58
58
  declared: "supported",
59
59
  observed: "supported",
@@ -63,7 +63,7 @@ export function runHarnessBench(registry, opts = {}) {
63
63
  });
64
64
  const version = versionProbe(adapter.profile.binary);
65
65
  results.push({
66
- harness: id,
66
+ adapter: id,
67
67
  dimension: "binary",
68
68
  declared: "supported",
69
69
  observed: version ? "supported" : "skipped",
@@ -84,7 +84,7 @@ export function runHarnessBench(registry, opts = {}) {
84
84
  ? { observed: live, basis: "attested" }
85
85
  : observations[dimension];
86
86
  results.push({
87
- harness: id,
87
+ adapter: id,
88
88
  dimension,
89
89
  declared: claim.support,
90
90
  observed,
@@ -103,7 +103,7 @@ export function runHarnessBench(registry, opts = {}) {
103
103
  return {
104
104
  generatedAt: new Date().toISOString(),
105
105
  mode: "offline",
106
- harnesses: ids,
106
+ adapters: ids,
107
107
  results,
108
108
  summary,
109
109
  basisSummary,
@@ -121,7 +121,7 @@ export function runHarnessBench(registry, opts = {}) {
121
121
  * inferred from the installed one. */
122
122
  function contractResult(id, adapter, version) {
123
123
  const recorded = adapter.profile.verified;
124
- const base = { harness: id, dimension: "contract", declared: "supported" };
124
+ const base = { adapter: id, dimension: "contract", declared: "supported" };
125
125
  if (!version) {
126
126
  return {
127
127
  ...base,
@@ -209,8 +209,8 @@ function observeAdapter(adapter) {
209
209
  const finalMatches = normalized?.ok === fixture.ok && normalized?.text === fixture.text;
210
210
  const sessionObserved = normalized?.sessionId !== undefined ? "supported" : "unsupported";
211
211
  const costObserved = normalized?.costUsd !== undefined ? "supported" : "unsupported";
212
- const hookSpec = adapter.profile.id in HARNESS_SPECS
213
- ? HARNESS_SPECS[adapter.profile.id]
212
+ const hookSpec = adapter.profile.id in ADAPTER_SPECS
213
+ ? ADAPTER_SPECS[adapter.profile.id]
214
214
  : undefined;
215
215
  const hookSubcommands = new Set(hookSpec?.events.map((event) => event.subcommand) ?? []);
216
216
  return {
@@ -0,0 +1,13 @@
1
+ export type { Spawner, SpawnRequest, SpawnResult } from "../workflow/types.js";
2
+ export type { AdapterAttestationReport, AdapterAttestationResult, AttestationOutcome, RunAdapterAttestationOptions, } from "./attest.js";
3
+ export { ATTESTATION_PROMPT, runAdapterAttestation } from "./attest.js";
4
+ export type { AdapterAttestation, AttestableDimension, AttestationStoreOptions, } from "./attestation.js";
5
+ export { ATTESTABLE_DIMENSIONS, ATTESTATION_SCHEMA_VERSION, adapterProofInputs, attestationsDir, isAttestationCurrent, listAttestations, profileDigest, readAttestation, validateAttestation, writeAttestation, } from "./attestation.js";
6
+ export type { AdapterBenchOptions, AdapterBenchReport, BenchBasis, BenchDimension, BenchResult, BenchVerdict, } from "./bench.js";
7
+ export { probeBinaryVersion, runAdapterBench } from "./bench.js";
8
+ export type { BuiltinAdapterId } from "./profiles.js";
9
+ export { BUILTIN_ADAPTER_IDS, BUILTIN_ADAPTER_PROFILES, builtinAdapterProfile, isBuiltinAdapter, validateAdapterEffort, } from "./profiles.js";
10
+ export { AdapterRegistry, createBuiltinAdapterRegistry } from "./registry.js";
11
+ export type { Adapter, AdapterBenchFixture, AdapterCapabilities, AdapterCapabilityDimension, AdapterId, AdapterInvocation, AdapterProfile, AdapterRawResult, CapabilityClaim, CapabilitySupport, } from "./types.js";
12
+ export { ADAPTER_CAPABILITY_DIMENSIONS } from "./types.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/E,YAAY,EACV,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACxE,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC9E,YAAY,EACV,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { ATTESTATION_PROMPT, runAdapterAttestation } from "./attest.js";
2
+ export { ATTESTABLE_DIMENSIONS, ATTESTATION_SCHEMA_VERSION, adapterProofInputs, attestationsDir, isAttestationCurrent, listAttestations, profileDigest, readAttestation, validateAttestation, writeAttestation, } from "./attestation.js";
3
+ export { probeBinaryVersion, runAdapterBench } from "./bench.js";
4
+ export { BUILTIN_ADAPTER_IDS, BUILTIN_ADAPTER_PROFILES, builtinAdapterProfile, isBuiltinAdapter, validateAdapterEffort, } from "./profiles.js";
5
+ export { AdapterRegistry, createBuiltinAdapterRegistry } from "./registry.js";
6
+ export { ADAPTER_CAPABILITY_DIMENSIONS } from "./types.js";
@@ -1,7 +1,7 @@
1
- import type { HarnessCapabilities, HarnessProfile } from "./types.js";
2
- /** The one built-in profile catalog. Adding a fourth harness starts here; CLI
1
+ import type { AdapterCapabilities, AdapterProfile } from "./types.js";
2
+ /** The one built-in profile catalog. Adding a fourth adapter starts here; CLI
3
3
  * choices, doctor metadata, workflow dispatch, and the bench derive from it. */
4
- export declare const BUILTIN_HARNESS_PROFILES: {
4
+ export declare const BUILTIN_ADAPTER_PROFILES: {
5
5
  readonly "claude-code": {
6
6
  readonly id: "claude-code";
7
7
  readonly displayName: "Claude Code";
@@ -17,7 +17,7 @@ export declare const BUILTIN_HARNESS_PROFILES: {
17
17
  readonly date: "2026-07-25";
18
18
  readonly version: "2.1.197 (Claude Code)";
19
19
  };
20
- readonly capabilities: HarnessCapabilities;
20
+ readonly capabilities: AdapterCapabilities;
21
21
  };
22
22
  readonly codex: {
23
23
  readonly id: "codex";
@@ -41,7 +41,7 @@ export declare const BUILTIN_HARNESS_PROFILES: {
41
41
  };
42
42
  readonly writableRoots: true;
43
43
  };
44
- readonly capabilities: HarnessCapabilities;
44
+ readonly capabilities: AdapterCapabilities;
45
45
  };
46
46
  readonly cursor: {
47
47
  readonly id: "cursor";
@@ -58,12 +58,12 @@ export declare const BUILTIN_HARNESS_PROFILES: {
58
58
  readonly date: "2026-07-25";
59
59
  readonly version: "2026.07.23-e383d2b";
60
60
  };
61
- readonly capabilities: HarnessCapabilities;
61
+ readonly capabilities: AdapterCapabilities;
62
62
  };
63
63
  };
64
- export type BuiltinHarnessId = keyof typeof BUILTIN_HARNESS_PROFILES;
65
- export declare const BUILTIN_HARNESS_IDS: readonly ("cursor" | "claude-code" | "codex")[];
66
- export declare function isBuiltinHarness(id: string): id is BuiltinHarnessId;
67
- export declare function builtinHarnessProfile(id: string): HarnessProfile | undefined;
68
- export declare function validateHarnessEffort(id: string, effort: string | undefined): void;
64
+ export type BuiltinAdapterId = keyof typeof BUILTIN_ADAPTER_PROFILES;
65
+ export declare const BUILTIN_ADAPTER_IDS: readonly ("claude-code" | "codex" | "cursor")[];
66
+ export declare function isBuiltinAdapter(id: string): id is BuiltinAdapterId;
67
+ export declare function builtinAdapterProfile(id: string): AdapterProfile | undefined;
68
+ export declare function validateAdapterEffort(id: string, effort: string | undefined): void;
69
69
  //# sourceMappingURL=profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAmB,MAAM,YAAY,CAAC;AAgCvF;gFACgF;AAChF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Fc,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,wBAAwB,CAAC;AAErE,eAAO,MAAM,mBAAmB,iDAE/B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,gBAAgB,CAEnE;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE5E;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAUlF"}
@@ -22,13 +22,13 @@ function capabilities(overrides) {
22
22
  contextTelemetry: unknown("The workflow adapter does not expose live context usage."),
23
23
  preCompactionSignal: unknown("No compaction lifecycle probe has certified this adapter."),
24
24
  postCompactionSignal: unknown("No compaction lifecycle probe has certified this adapter."),
25
- compaction: unsupported("Harnery does not initiate native harness compaction."),
25
+ compaction: unsupported("Harnery does not initiate native adapter compaction."),
26
26
  ...overrides,
27
27
  };
28
28
  }
29
- /** The one built-in profile catalog. Adding a fourth harness starts here; CLI
29
+ /** The one built-in profile catalog. Adding a fourth adapter starts here; CLI
30
30
  * choices, doctor metadata, workflow dispatch, and the bench derive from it. */
31
- export const BUILTIN_HARNESS_PROFILES = {
31
+ export const BUILTIN_ADAPTER_PROFILES = {
32
32
  "claude-code": {
33
33
  id: "claude-code",
34
34
  displayName: "Claude Code",
@@ -104,19 +104,19 @@ export const BUILTIN_HARNESS_PROFILES = {
104
104
  }),
105
105
  },
106
106
  };
107
- export const BUILTIN_HARNESS_IDS = Object.freeze(Object.keys(BUILTIN_HARNESS_PROFILES));
108
- export function isBuiltinHarness(id) {
109
- return Object.hasOwn(BUILTIN_HARNESS_PROFILES, id);
107
+ export const BUILTIN_ADAPTER_IDS = Object.freeze(Object.keys(BUILTIN_ADAPTER_PROFILES));
108
+ export function isBuiltinAdapter(id) {
109
+ return Object.hasOwn(BUILTIN_ADAPTER_PROFILES, id);
110
110
  }
111
- export function builtinHarnessProfile(id) {
112
- return isBuiltinHarness(id) ? BUILTIN_HARNESS_PROFILES[id] : undefined;
111
+ export function builtinAdapterProfile(id) {
112
+ return isBuiltinAdapter(id) ? BUILTIN_ADAPTER_PROFILES[id] : undefined;
113
113
  }
114
- export function validateHarnessEffort(id, effort) {
114
+ export function validateAdapterEffort(id, effort) {
115
115
  if (!effort)
116
116
  return;
117
- const profile = builtinHarnessProfile(id);
117
+ const profile = builtinAdapterProfile(id);
118
118
  if (!profile)
119
- throw new Error(`unknown harness ${JSON.stringify(id)}`);
119
+ throw new Error(`unknown adapter ${JSON.stringify(id)}`);
120
120
  if (!profile.effortValues.includes(effort)) {
121
121
  const supportedValues = profile.effortValues.length ? profile.effortValues.join(", ") : "none";
122
122
  throw new Error(`effort ${JSON.stringify(effort)} is not supported by ${id}; supported values: ${supportedValues}`);
@@ -0,0 +1,15 @@
1
+ import type { Adapter, AdapterId } from "./types.js";
2
+ /** Mutable registry for embedders, initialized empty unless adapters are
3
+ * provided. Duplicate ids fail loud instead of silently replacing behavior. */
4
+ export declare class AdapterRegistry {
5
+ #private;
6
+ constructor(adapters?: Iterable<Adapter>);
7
+ register(adapter: Adapter): this;
8
+ get(id: AdapterId): Adapter | undefined;
9
+ require(id: AdapterId): Adapter;
10
+ list(): Adapter[];
11
+ ids(): AdapterId[];
12
+ spawners(): Record<AdapterId, Adapter["spawn"]>;
13
+ }
14
+ export declare function createBuiltinAdapterRegistry(): AdapterRegistry;
15
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/registry.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAqErD;+EAC+E;AAC/E,qBAAa,eAAe;;gBAGd,QAAQ,GAAE,QAAQ,CAAC,OAAO,CAAM;IAI5C,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAYhC,GAAG,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS;IAIvC,OAAO,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO;IAU/B,IAAI,IAAI,OAAO,EAAE;IAIjB,GAAG,IAAI,SAAS,EAAE;IAIlB,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAGhD;AAED,wBAAgB,4BAA4B,IAAI,eAAe,CAE9D"}
@@ -1,10 +1,10 @@
1
1
  import { buildClaudeInvocation, claudeCodeSpawner, normalizeClaudeResult, } from "../workflow/spawn-claude.js";
2
2
  import { buildCodexInvocation, codexSpawner, normalizeCodexResult, } from "../workflow/spawn-codex.js";
3
3
  import { buildCursorInvocation, cursorSpawner, normalizeCursorResult, } from "../workflow/spawn-cursor.js";
4
- import { BUILTIN_HARNESS_IDS, BUILTIN_HARNESS_PROFILES, } from "./profiles.js";
4
+ import { BUILTIN_ADAPTER_IDS, BUILTIN_ADAPTER_PROFILES, } from "./profiles.js";
5
5
  const BUILTIN_ADAPTERS = {
6
6
  "claude-code": {
7
- profile: BUILTIN_HARNESS_PROFILES["claude-code"],
7
+ profile: BUILTIN_ADAPTER_PROFILES["claude-code"],
8
8
  spawn: claudeCodeSpawner,
9
9
  buildInvocation: buildClaudeInvocation,
10
10
  normalizeResult: normalizeClaudeResult,
@@ -29,7 +29,7 @@ const BUILTIN_ADAPTERS = {
29
29
  },
30
30
  },
31
31
  codex: {
32
- profile: BUILTIN_HARNESS_PROFILES.codex,
32
+ profile: BUILTIN_ADAPTER_PROFILES.codex,
33
33
  spawn: codexSpawner,
34
34
  buildInvocation: buildCodexInvocation,
35
35
  normalizeResult: normalizeCodexResult,
@@ -45,7 +45,7 @@ const BUILTIN_ADAPTERS = {
45
45
  },
46
46
  },
47
47
  cursor: {
48
- profile: BUILTIN_HARNESS_PROFILES.cursor,
48
+ profile: BUILTIN_ADAPTER_PROFILES.cursor,
49
49
  spawn: cursorSpawner,
50
50
  buildInvocation: buildCursorInvocation,
51
51
  normalizeResult: normalizeCursorResult,
@@ -70,7 +70,7 @@ const BUILTIN_ADAPTERS = {
70
70
  };
71
71
  /** Mutable registry for embedders, initialized empty unless adapters are
72
72
  * provided. Duplicate ids fail loud instead of silently replacing behavior. */
73
- export class HarnessRegistry {
73
+ export class AdapterRegistry {
74
74
  #adapters = new Map();
75
75
  constructor(adapters = []) {
76
76
  for (const adapter of adapters)
@@ -79,11 +79,11 @@ export class HarnessRegistry {
79
79
  register(adapter) {
80
80
  const id = adapter.profile.id.trim();
81
81
  if (!id)
82
- throw new Error("harness adapter id cannot be empty");
82
+ throw new Error("adapter adapter id cannot be empty");
83
83
  if (this.#adapters.has(id))
84
- throw new Error(`harness adapter ${JSON.stringify(id)} is already registered`);
84
+ throw new Error(`adapter adapter ${JSON.stringify(id)} is already registered`);
85
85
  if (adapter.profile.binary.trim() === "") {
86
- throw new Error(`harness adapter ${JSON.stringify(id)} has no binary`);
86
+ throw new Error(`adapter adapter ${JSON.stringify(id)} has no binary`);
87
87
  }
88
88
  this.#adapters.set(id, adapter);
89
89
  return this;
@@ -94,7 +94,7 @@ export class HarnessRegistry {
94
94
  require(id) {
95
95
  const adapter = this.get(id);
96
96
  if (!adapter) {
97
- throw new Error(`unknown harness ${JSON.stringify(id)} (registered: ${this.ids().join(", ") || "none"})`);
97
+ throw new Error(`unknown adapter ${JSON.stringify(id)} (registered: ${this.ids().join(", ") || "none"})`);
98
98
  }
99
99
  return adapter;
100
100
  }
@@ -108,6 +108,6 @@ export class HarnessRegistry {
108
108
  return Object.fromEntries(this.list().map((adapter) => [adapter.profile.id, adapter.spawn]));
109
109
  }
110
110
  }
111
- export function createBuiltinHarnessRegistry() {
112
- return new HarnessRegistry(BUILTIN_HARNESS_IDS.map((id) => BUILTIN_ADAPTERS[id]));
111
+ export function createBuiltinAdapterRegistry() {
112
+ return new AdapterRegistry(BUILTIN_ADAPTER_IDS.map((id) => BUILTIN_ADAPTERS[id]));
113
113
  }
@@ -1,29 +1,29 @@
1
1
  import type { Spawner, SpawnRequest, SpawnResult } from "../workflow/types.js";
2
- /** Open harness identifier. Built-ins are registered at runtime rather than
2
+ /** Open adapter identifier. Built-ins are registered at runtime rather than
3
3
  * repeated through closed unions in every consumer. */
4
- export type HarnessId = string;
4
+ export type AdapterId = string;
5
5
  export type CapabilitySupport = "supported" | "partial" | "unsupported" | "unknown";
6
- export declare const HARNESS_CAPABILITY_DIMENSIONS: readonly ["invocation", "modelSelection", "effortSelection", "maxTurns", "finalResult", "sessionId", "cost", "toolEvidence", "policyMapping", "filesystemPolicyProjection", "interruption", "streaming", "steering", "resume", "images", "contextTelemetry", "preCompactionSignal", "postCompactionSignal", "compaction"];
7
- export type HarnessCapabilityDimension = (typeof HARNESS_CAPABILITY_DIMENSIONS)[number];
6
+ export declare const ADAPTER_CAPABILITY_DIMENSIONS: readonly ["invocation", "modelSelection", "effortSelection", "maxTurns", "finalResult", "sessionId", "cost", "toolEvidence", "policyMapping", "filesystemPolicyProjection", "interruption", "streaming", "steering", "resume", "images", "contextTelemetry", "preCompactionSignal", "postCompactionSignal", "compaction"];
7
+ export type AdapterCapabilityDimension = (typeof ADAPTER_CAPABILITY_DIMENSIONS)[number];
8
8
  export interface CapabilityClaim {
9
9
  support: CapabilitySupport;
10
10
  /** Operational qualification. Required for partial/unknown claims and useful
11
11
  * whenever "supported" has a narrower meaning than the vendor CLI itself. */
12
12
  note?: string;
13
13
  }
14
- export type HarnessCapabilities = Record<HarnessCapabilityDimension, CapabilityClaim>;
15
- /** What one harness can represent of a filesystem-policy projection
16
- * (ADR 0039). `null` means the harness does not distinguish that, which is a
17
- * fact about the harness rather than something to paper over: a projection the
14
+ export type AdapterCapabilities = Record<AdapterCapabilityDimension, CapabilityClaim>;
15
+ /** What one adapter can represent of a filesystem-policy projection
16
+ * (ADR 0039). `null` means the adapter does not distinguish that, which is a
17
+ * fact about the adapter rather than something to paper over: a projection the
18
18
  * adapter would silently drop must be refused instead. */
19
- export interface HarnessSandboxProjection {
19
+ export interface AdapterSandboxProjection {
20
20
  /** Native representation per canonical mode, or null when unrepresentable. */
21
21
  modes: Record<"read-only" | "workspace-write", string | null>;
22
- /** Whether the harness accepts an explicit writable-root set. */
22
+ /** Whether the adapter accepts an explicit writable-root set. */
23
23
  writableRoots: boolean;
24
24
  }
25
- export interface HarnessProfile {
26
- id: HarnessId;
25
+ export interface AdapterProfile {
26
+ id: AdapterId;
27
27
  displayName: string;
28
28
  binary: string;
29
29
  installHint: string;
@@ -33,7 +33,7 @@ export interface HarnessProfile {
33
33
  authModel: "own-auth";
34
34
  modelFamily: "claude" | "gpt" | "multi";
35
35
  effortValues: readonly string[];
36
- capabilities: HarnessCapabilities;
36
+ capabilities: AdapterCapabilities;
37
37
  /** The last real vendor CLI contract used to validate this declaration. */
38
38
  verified?: {
39
39
  date: string;
@@ -41,16 +41,16 @@ export interface HarnessProfile {
41
41
  };
42
42
  /** How this adapter projects host filesystem policy into the vendor's own
43
43
  * sandbox (ADR 0039). Absent means it cannot project any of it. */
44
- sandboxProjection?: HarnessSandboxProjection;
44
+ sandboxProjection?: AdapterSandboxProjection;
45
45
  }
46
46
  /** Fully planned child invocation. `resultFile` is used by adapters such as
47
47
  * Codex that deliver the authoritative final answer out-of-band. */
48
- export interface HarnessInvocation {
48
+ export interface AdapterInvocation {
49
49
  argv: string[];
50
50
  resultFile?: string;
51
51
  }
52
52
  /** Vendor subprocess material passed through an adapter's normalizer. */
53
- export interface HarnessRawResult {
53
+ export interface AdapterRawResult {
54
54
  stdout: string;
55
55
  stderr: string;
56
56
  exitCode: number;
@@ -67,8 +67,8 @@ export interface HarnessRawResult {
67
67
  * (run never started) rather than a work failure. Absent on ordinary exit. */
68
68
  spawnErrno?: string;
69
69
  }
70
- export interface HarnessBenchFixture {
71
- raw: HarnessRawResult;
70
+ export interface AdapterBenchFixture {
71
+ raw: AdapterRawResult;
72
72
  expected: Pick<SpawnResult, "ok" | "text"> & {
73
73
  sessionId?: string;
74
74
  costUsd?: number;
@@ -77,11 +77,11 @@ export interface HarnessBenchFixture {
77
77
  /** One registered executable adapter. The same planner and normalizer power
78
78
  * production workflow runs and the offline conformance bench, preventing the
79
79
  * bench from testing a parallel mock implementation. */
80
- export interface HarnessAdapter {
81
- profile: HarnessProfile;
80
+ export interface Adapter {
81
+ profile: AdapterProfile;
82
82
  spawn: Spawner;
83
- buildInvocation: (request: SpawnRequest, resultFile?: string) => HarnessInvocation;
84
- normalizeResult: (raw: HarnessRawResult) => SpawnResult;
85
- fixture: HarnessBenchFixture;
83
+ buildInvocation: (request: SpawnRequest, resultFile?: string) => AdapterInvocation;
84
+ normalizeResult: (raw: AdapterRawResult) => SpawnResult;
85
+ fixture: AdapterBenchFixture;
86
86
  }
87
87
  //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE/E;uDACuD;AACvD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;AAEpF,eAAO,MAAM,6BAA6B,2TAoBhC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAExF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,iBAAiB,CAAC;IAC3B;iFAC6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAC;AAEtF;;;0DAG0D;AAC1D,MAAM,WAAW,wBAAwB;IACvC,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC,WAAW,GAAG,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9D,iEAAiE;IACjE,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,SAAS,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,gBAAgB,CAAC;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;IACxC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,YAAY,EAAE,mBAAmB,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C;uEACmE;IACnE,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;CAC9C;AAED;oEACoE;AACpE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;0BAGsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;kFAG8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,gBAAgB,CAAC;IACtB,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG;QAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;wDAEwD;AACxD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAAC;IACnF,eAAe,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,WAAW,CAAC;IACxD,OAAO,EAAE,mBAAmB,CAAC;CAC9B"}
@@ -1,4 +1,4 @@
1
- export const HARNESS_CAPABILITY_DIMENSIONS = [
1
+ export const ADAPTER_CAPABILITY_DIMENSIONS = [
2
2
  "invocation",
3
3
  "modelSelection",
4
4
  "effortSelection",
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Emit canonical events by spawning `agent-coord emit-event`. Used by every
3
- * `agents …` / `scratch` / `presence` write that has a canonical state event.
3
+ * `agents …` / `journal` / `presence` write that has a canonical state event.
4
4
  *
5
5
  * Soft-fails: never throws into the caller. A failed emit logs to stderr
6
6
  * (visible to operators in their terminal) but never breaks the CLI flow.
@@ -12,7 +12,7 @@ export interface CanonicalEmitInput {
12
12
  type: string;
13
13
  owner: string;
14
14
  session: string;
15
- harness: "claude-code" | "cursor" | "codex";
15
+ adapter: "claude-code" | "cursor" | "codex";
16
16
  data: Record<string, unknown>;
17
17
  turnId?: string;
18
18
  parentSessionId?: string;
@@ -36,7 +36,7 @@ export declare function resolveEmitRoot(start?: string): string | null;
36
36
  export declare function emitCanonical(input: CanonicalEmitInput): void;
37
37
  /**
38
38
  * Normalize the heartbeat's `platform` field (which uses snake_case
39
- * `claude_code`) to the canonical kebab-case Harness type.
39
+ * `claude_code`) to the canonical kebab-case Adapter type.
40
40
  */
41
- export declare function normalizeHarness(platform: string | undefined): "claude-code" | "cursor" | "codex";
41
+ export declare function normalizeAdapter(platform: string | undefined): "claude-code" | "cursor" | "codex";
42
42
  //# sourceMappingURL=canonical-emit.d.ts.map
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Emit canonical events by spawning `agent-coord emit-event`. Used by every
3
- * `agents …` / `scratch` / `presence` write that has a canonical state event.
3
+ * `agents …` / `journal` / `presence` write that has a canonical state event.
4
4
  *
5
5
  * Soft-fails: never throws into the caller. A failed emit logs to stderr
6
6
  * (visible to operators in their terminal) but never breaks the CLI flow.
@@ -57,8 +57,8 @@ export function emitCanonical(input) {
57
57
  input.owner,
58
58
  "--session",
59
59
  input.session,
60
- "--harness",
61
- input.harness,
60
+ "--adapter",
61
+ input.adapter,
62
62
  "--data-json",
63
63
  JSON.stringify(input.data),
64
64
  ];
@@ -88,9 +88,9 @@ export function emitCanonical(input) {
88
88
  }
89
89
  /**
90
90
  * Normalize the heartbeat's `platform` field (which uses snake_case
91
- * `claude_code`) to the canonical kebab-case Harness type.
91
+ * `claude_code`) to the canonical kebab-case Adapter type.
92
92
  */
93
- export function normalizeHarness(platform) {
93
+ export function normalizeAdapter(platform) {
94
94
  if (platform === "cursor")
95
95
  return "cursor";
96
96
  if (platform === "codex")
@@ -38,7 +38,7 @@ export function emitAndProject(input, opts = {}) {
38
38
  parent_session_id: envelope.parent_session_id,
39
39
  turn_id: envelope.turn_id,
40
40
  parent_turn_id: envelope.parent_turn_id,
41
- harness: envelope.harness,
41
+ adapter: envelope.adapter,
42
42
  source: envelope.source,
43
43
  data: envelope.data,
44
44
  },