harnery 0.30.0 → 0.31.1

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 (517) 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 +185 -74
  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/grep.d.ts +1 -1
  34. package/dist/commands/grep.d.ts.map +1 -1
  35. package/dist/commands/grep.js +19 -2
  36. package/dist/commands/init.d.ts +12 -12
  37. package/dist/commands/init.d.ts.map +1 -1
  38. package/dist/commands/init.js +44 -30
  39. package/dist/commands/{session.d.ts → journal.d.ts} +2 -2
  40. package/dist/commands/journal.d.ts.map +1 -0
  41. package/dist/commands/{scratch.js → journal.js} +47 -47
  42. package/dist/commands/policy.js +1 -1
  43. package/dist/commands/presence.js +2 -2
  44. package/dist/commands/sync.d.ts +1 -1
  45. package/dist/commands/sync.js +3 -3
  46. package/dist/commands/tunnel.d.ts +16 -0
  47. package/dist/commands/tunnel.d.ts.map +1 -1
  48. package/dist/commands/tunnel.js +213 -27
  49. package/dist/commands/web-fetch.js +1 -1
  50. package/dist/commands/web.d.ts +19 -0
  51. package/dist/commands/web.d.ts.map +1 -1
  52. package/dist/commands/web.js +51 -0
  53. package/dist/commands/work.d.ts.map +1 -1
  54. package/dist/commands/work.js +38 -22
  55. package/dist/commands/workflow.d.ts.map +1 -1
  56. package/dist/commands/workflow.js +35 -28
  57. package/dist/core/{harnesses → adapters}/attest-projection.d.ts +2 -2
  58. package/dist/core/adapters/attest-projection.d.ts.map +1 -0
  59. package/dist/core/{harnesses → adapters}/attest.d.ts +16 -16
  60. package/dist/core/adapters/attest.d.ts.map +1 -0
  61. package/dist/core/{harnesses → adapters}/attest.js +9 -9
  62. package/dist/core/{harnesses → adapters}/attestation.d.ts +16 -16
  63. package/dist/core/adapters/attestation.d.ts.map +1 -0
  64. package/dist/core/{harnesses → adapters}/attestation.js +20 -20
  65. package/dist/core/{harnesses → adapters}/bench.d.ts +12 -12
  66. package/dist/core/adapters/bench.d.ts.map +1 -0
  67. package/dist/core/{harnesses → adapters}/bench.js +12 -12
  68. package/dist/core/adapters/index.d.ts +13 -0
  69. package/dist/core/adapters/index.d.ts.map +1 -0
  70. package/dist/core/adapters/index.js +6 -0
  71. package/dist/core/{harnesses → adapters}/profiles.d.ts +11 -11
  72. package/dist/core/adapters/profiles.d.ts.map +1 -0
  73. package/dist/core/{harnesses → adapters}/profiles.js +11 -11
  74. package/dist/core/adapters/registry.d.ts +15 -0
  75. package/dist/core/adapters/registry.d.ts.map +1 -0
  76. package/dist/core/{harnesses → adapters}/registry.js +11 -11
  77. package/dist/core/{harnesses → adapters}/types.d.ts +23 -23
  78. package/dist/core/adapters/types.d.ts.map +1 -0
  79. package/dist/core/{harnesses → adapters}/types.js +1 -1
  80. package/dist/core/agents/canonical-emit.d.ts +9 -14
  81. package/dist/core/agents/canonical-emit.d.ts.map +1 -1
  82. package/dist/core/agents/canonical-emit.js +15 -44
  83. package/dist/core/agents/cli-emit.js +1 -1
  84. package/dist/core/agents/cli.js +30 -26
  85. package/dist/core/agents/codex-replay.d.ts +1 -1
  86. package/dist/core/agents/codex-replay.js +6 -6
  87. package/dist/core/agents/coord-bin.d.ts +33 -0
  88. package/dist/core/agents/coord-bin.d.ts.map +1 -0
  89. package/dist/core/agents/coord-bin.js +89 -0
  90. package/dist/core/agents/coord-client.d.ts +78 -8
  91. package/dist/core/agents/coord-client.d.ts.map +1 -1
  92. package/dist/core/agents/coord-client.js +303 -75
  93. package/dist/core/agents/events/consume.d.ts +1 -1
  94. package/dist/core/agents/events/emit.d.ts +5 -6
  95. package/dist/core/agents/events/emit.d.ts.map +1 -1
  96. package/dist/core/agents/events/emit.js +2 -2
  97. package/dist/core/agents/paths.d.ts +5 -2
  98. package/dist/core/agents/paths.d.ts.map +1 -1
  99. package/dist/core/agents/paths.js +7 -13
  100. package/dist/core/agents/render/prompt-context.d.ts +21 -9
  101. package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
  102. package/dist/core/agents/render/prompt-context.js +82 -30
  103. package/dist/core/agents/render/session-context.d.ts +1 -1
  104. package/dist/core/agents/render/session-context.js +5 -5
  105. package/dist/core/agents/rules/claim-conflict.d.ts +2 -6
  106. package/dist/core/agents/rules/claim-conflict.d.ts.map +1 -1
  107. package/dist/core/agents/rules/claim-conflict.js +1 -1
  108. package/dist/core/agents/rules/commit-conflict.js +98 -22
  109. package/dist/core/agents/rules/stop-hook.d.ts +9 -9
  110. package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
  111. package/dist/core/agents/rules/stop-hook.js +23 -5
  112. package/dist/core/agents/rules/verdict.d.ts +14 -0
  113. package/dist/core/agents/rules/verdict.d.ts.map +1 -0
  114. package/dist/core/agents/rules/verdict.js +1 -0
  115. package/dist/core/agents/session-events.js +3 -3
  116. package/dist/core/agents/state/council.d.ts +1 -1
  117. package/dist/core/agents/state/council.js +1 -1
  118. package/dist/core/agents/state/heartbeat-projector.d.ts +3 -2
  119. package/dist/core/agents/state/heartbeat-projector.d.ts.map +1 -1
  120. package/dist/core/agents/state/heartbeat-projector.js +14 -10
  121. package/dist/core/agents/state/heartbeat-writer.d.ts +1 -1
  122. package/dist/core/agents/state/heartbeat-writer.js +12 -12
  123. package/dist/core/agents/state/{scratch.d.ts → journal.d.ts} +7 -7
  124. package/dist/core/agents/state/{scratch.d.ts.map → journal.d.ts.map} +1 -1
  125. package/dist/core/agents/state/{scratch.js → journal.js} +12 -12
  126. package/dist/core/agents/state/pidmap.d.ts +28 -4
  127. package/dist/core/agents/state/pidmap.d.ts.map +1 -1
  128. package/dist/core/agents/state/pidmap.js +130 -15
  129. package/dist/core/agents/state/proc-start.d.ts +95 -0
  130. package/dist/core/agents/state/proc-start.d.ts.map +1 -0
  131. package/dist/core/agents/state/proc-start.js +199 -0
  132. package/dist/core/agents/state/shell-mutation.d.ts +1 -1
  133. package/dist/core/agents/state/shell-mutation.js +1 -1
  134. package/dist/core/agents/state/stale-sweep.js +7 -7
  135. package/dist/core/artifacts/index.d.ts +86 -0
  136. package/dist/core/artifacts/index.d.ts.map +1 -0
  137. package/dist/core/artifacts/index.js +421 -0
  138. package/dist/core/config.d.ts +9 -2
  139. package/dist/core/config.d.ts.map +1 -1
  140. package/dist/core/config.js +26 -2
  141. package/dist/core/context/index.d.ts +12 -12
  142. package/dist/core/context/index.js +10 -10
  143. package/dist/core/governor/adapter-spread.d.ts +52 -0
  144. package/dist/core/governor/adapter-spread.d.ts.map +1 -0
  145. package/dist/core/governor/adapter-spread.js +52 -0
  146. package/dist/core/governor/index.d.ts +7 -0
  147. package/dist/core/governor/index.d.ts.map +1 -0
  148. package/dist/core/governor/index.js +6 -0
  149. package/dist/core/governor/plan-api.d.ts +38 -0
  150. package/dist/core/governor/plan-api.d.ts.map +1 -0
  151. package/dist/core/governor/plan-api.js +83 -0
  152. package/dist/core/governor/plan-read.d.ts +5 -0
  153. package/dist/core/governor/plan-read.d.ts.map +1 -0
  154. package/dist/core/{supervisor → governor}/plan-read.js +66 -52
  155. package/dist/core/{supervisor → governor}/plan-types.d.ts +57 -56
  156. package/dist/core/governor/plan-types.d.ts.map +1 -0
  157. package/dist/core/{supervisor → governor}/plan-types.js +4 -4
  158. package/dist/core/governor/planning.d.ts +48 -0
  159. package/dist/core/governor/planning.d.ts.map +1 -0
  160. package/dist/core/{supervisor → governor}/planning.js +125 -94
  161. package/dist/core/governor/read.d.ts +6 -0
  162. package/dist/core/governor/read.d.ts.map +1 -0
  163. package/dist/core/governor/read.js +4 -0
  164. package/dist/core/governor/runner.d.ts +37 -0
  165. package/dist/core/governor/runner.d.ts.map +1 -0
  166. package/dist/core/{supervisor → governor}/runner.js +15 -15
  167. package/dist/core/governor/service-read.d.ts +6 -0
  168. package/dist/core/governor/service-read.d.ts.map +1 -0
  169. package/dist/core/{supervisor → governor}/service-read.js +12 -12
  170. package/dist/core/governor/service.d.ts +114 -0
  171. package/dist/core/governor/service.d.ts.map +1 -0
  172. package/dist/core/{supervisor → governor}/service.js +57 -57
  173. package/dist/core/governor/state.d.ts +116 -0
  174. package/dist/core/governor/state.d.ts.map +1 -0
  175. package/dist/core/{supervisor → governor}/state.js +228 -108
  176. package/dist/core/hooks/adapter/detect.d.ts +9 -0
  177. package/dist/core/hooks/{harness → adapter}/detect.d.ts.map +1 -1
  178. package/dist/core/hooks/{harness → adapter}/detect.js +8 -8
  179. package/dist/core/hooks/{harness → adapter}/events.d.ts +15 -14
  180. package/dist/core/hooks/adapter/events.d.ts.map +1 -0
  181. package/dist/core/hooks/{harness → adapter}/events.js +5 -5
  182. package/dist/core/hooks/{harness → adapter}/output.d.ts +20 -14
  183. package/dist/core/hooks/adapter/output.d.ts.map +1 -0
  184. package/dist/core/hooks/{harness → adapter}/output.js +30 -22
  185. package/dist/core/hooks/{harness → adapter}/parse.d.ts +5 -5
  186. package/dist/core/hooks/{harness → adapter}/parse.d.ts.map +1 -1
  187. package/dist/core/hooks/{harness → adapter}/parse.js +4 -4
  188. package/dist/core/hooks/{harness → adapter}/wiring.d.ts +15 -15
  189. package/dist/core/hooks/{harness → adapter}/wiring.d.ts.map +1 -1
  190. package/dist/core/hooks/{harness → adapter}/wiring.js +13 -13
  191. package/dist/core/hooks/cli.d.ts +3 -3
  192. package/dist/core/hooks/cli.js +187 -162
  193. package/dist/core/hooks/effects/image-capture.d.ts +5 -5
  194. package/dist/core/hooks/effects/image-capture.d.ts.map +1 -1
  195. package/dist/core/hooks/effects/image-capture.js +3 -3
  196. package/dist/core/hooks/effects/index.d.ts +12 -12
  197. package/dist/core/hooks/effects/index.d.ts.map +1 -1
  198. package/dist/core/hooks/effects/index.js +19 -19
  199. package/dist/core/hooks/events/emit.d.ts +2 -2
  200. package/dist/core/hooks/events/emit.d.ts.map +1 -1
  201. package/dist/core/hooks/events/emit.js +1 -1
  202. package/dist/core/hooks/events/rotate.js +1 -1
  203. package/dist/core/hooks/events/schema.d.ts +13 -5
  204. package/dist/core/hooks/events/schema.d.ts.map +1 -1
  205. package/dist/core/hooks/guard-path.d.ts +2 -2
  206. package/dist/core/hooks/guard-path.js +2 -2
  207. package/dist/core/hooks/index.d.ts +1 -1
  208. package/dist/core/hooks/index.d.ts.map +1 -1
  209. package/dist/core/hooks/resolve/anchor.d.ts +14 -5
  210. package/dist/core/hooks/resolve/anchor.d.ts.map +1 -1
  211. package/dist/core/hooks/resolve/anchor.js +64 -7
  212. package/dist/core/hooks/resolve/coord-root.d.ts +16 -11
  213. package/dist/core/hooks/resolve/coord-root.d.ts.map +1 -1
  214. package/dist/core/hooks/resolve/coord-root.js +18 -43
  215. package/dist/core/hooks/resolve/intent.js +1 -1
  216. package/dist/core/hooks/resolve/owner.d.ts +1 -1
  217. package/dist/core/hooks/resolve/owner.d.ts.map +1 -1
  218. package/dist/core/hooks/resolve/owner.js +11 -5
  219. package/dist/core/{scratch → journal}/index.d.ts +25 -25
  220. package/dist/core/{scratch → journal}/index.d.ts.map +1 -1
  221. package/dist/core/{scratch → journal}/index.js +38 -38
  222. package/dist/core/policy/evaluate.d.ts +1 -1
  223. package/dist/core/policy/evaluate.d.ts.map +1 -1
  224. package/dist/core/policy/evaluate.js +7 -7
  225. package/dist/core/policy/types.d.ts +3 -3
  226. package/dist/core/policy/types.d.ts.map +1 -1
  227. package/dist/core/work/state.d.ts +12 -4
  228. package/dist/core/work/state.d.ts.map +1 -1
  229. package/dist/core/work/state.js +50 -17
  230. package/dist/core/workflow/adapters.d.ts +17 -0
  231. package/dist/core/workflow/adapters.d.ts.map +1 -0
  232. package/dist/core/workflow/adapters.js +21 -0
  233. package/dist/core/workflow/approvals.js +6 -6
  234. package/dist/core/workflow/billing.d.ts +9 -9
  235. package/dist/core/workflow/billing.js +9 -9
  236. package/dist/core/workflow/child-env.d.ts +10 -2
  237. package/dist/core/workflow/child-env.d.ts.map +1 -1
  238. package/dist/core/workflow/child-env.js +12 -4
  239. package/dist/core/workflow/engine.d.ts +15 -5
  240. package/dist/core/workflow/engine.d.ts.map +1 -1
  241. package/dist/core/workflow/engine.js +138 -83
  242. package/dist/core/workflow/evidence-preflight.d.ts +24 -0
  243. package/dist/core/workflow/evidence-preflight.d.ts.map +1 -0
  244. package/dist/core/workflow/evidence-preflight.js +134 -0
  245. package/dist/core/workflow/index.d.ts +1 -1
  246. package/dist/core/workflow/index.d.ts.map +1 -1
  247. package/dist/core/workflow/proof.d.ts +11 -5
  248. package/dist/core/workflow/proof.d.ts.map +1 -1
  249. package/dist/core/workflow/proof.js +45 -36
  250. package/dist/core/workflow/run-state.d.ts +1 -1
  251. package/dist/core/workflow/run-state.js +7 -7
  252. package/dist/core/workflow/sandbox-projection.d.ts +6 -6
  253. package/dist/core/workflow/sandbox-projection.d.ts.map +1 -1
  254. package/dist/core/workflow/sandbox-projection.js +11 -11
  255. package/dist/core/workflow/spawn-claude.d.ts +3 -3
  256. package/dist/core/workflow/spawn-claude.d.ts.map +1 -1
  257. package/dist/core/workflow/spawn-claude.js +9 -6
  258. package/dist/core/workflow/spawn-codex.d.ts +4 -4
  259. package/dist/core/workflow/spawn-codex.d.ts.map +1 -1
  260. package/dist/core/workflow/spawn-codex.js +9 -6
  261. package/dist/core/workflow/spawn-cursor.d.ts +4 -4
  262. package/dist/core/workflow/spawn-cursor.d.ts.map +1 -1
  263. package/dist/core/workflow/spawn-cursor.js +9 -6
  264. package/dist/core/workflow/spawn-failure.d.ts +1 -1
  265. package/dist/core/workflow/spawn-failure.js +1 -1
  266. package/dist/core/workflow/specialists.js +2 -2
  267. package/dist/core/workflow/{journal.d.ts → transcript.d.ts} +8 -8
  268. package/dist/core/workflow/transcript.d.ts.map +1 -0
  269. package/dist/core/workflow/{journal.js → transcript.js} +14 -14
  270. package/dist/core/workflow/types.d.ts +98 -51
  271. package/dist/core/workflow/types.d.ts.map +1 -1
  272. package/dist/core/workflow/types.js +11 -1
  273. package/dist/core/workflow/validate.d.ts +1 -1
  274. package/dist/core/workflow/validate.js +1 -1
  275. package/dist/core/workflow/workspaces/cancellation.js +2 -2
  276. package/dist/core/workflow/workspaces/cleanup.js +2 -2
  277. package/dist/core/workflow/workspaces/execution.js +6 -6
  278. package/dist/core/workflow/workspaces/inspect.js +9 -9
  279. package/dist/core/workflow/workspaces/integration.js +14 -14
  280. package/dist/core/workflow/workspaces/lifecycle.d.ts +1 -1
  281. package/dist/core/workflow/workspaces/lifecycle.d.ts.map +1 -1
  282. package/dist/core/workflow/workspaces/lifecycle.js +9 -9
  283. package/dist/core/workflow/workspaces/local-git.d.ts.map +1 -1
  284. package/dist/core/workflow/workspaces/local-git.js +39 -5
  285. package/dist/core/workflow/workspaces/recovery.js +3 -3
  286. package/dist/core/workflow/workspaces/state.d.ts +1 -1
  287. package/dist/core/workflow/workspaces/state.d.ts.map +1 -1
  288. package/dist/core/workflow/workspaces/state.js +3 -3
  289. package/dist/core/workflow/workspaces/types.d.ts +1 -1
  290. package/dist/core/workflow/workspaces/types.d.ts.map +1 -1
  291. package/dist/lib/browser/asserts.d.ts +28 -0
  292. package/dist/lib/browser/asserts.d.ts.map +1 -0
  293. package/dist/lib/browser/asserts.js +152 -0
  294. package/dist/lib/browser/client.d.ts +49 -0
  295. package/dist/lib/browser/client.d.ts.map +1 -1
  296. package/dist/lib/browser/client.js +155 -14
  297. package/dist/lib/browser/content-checks.d.ts +108 -0
  298. package/dist/lib/browser/content-checks.d.ts.map +1 -0
  299. package/dist/lib/browser/content-checks.js +474 -0
  300. package/dist/lib/browser/critique.d.ts +91 -0
  301. package/dist/lib/browser/critique.d.ts.map +1 -0
  302. package/dist/lib/browser/critique.js +167 -0
  303. package/dist/lib/browser/geometry.d.ts +32 -0
  304. package/dist/lib/browser/geometry.d.ts.map +1 -1
  305. package/dist/lib/browser/geometry.js +244 -1
  306. package/dist/lib/browser/index.d.ts +4 -1
  307. package/dist/lib/browser/index.d.ts.map +1 -1
  308. package/dist/lib/browser/index.js +2 -0
  309. package/dist/lib/claude-desktop.d.ts.map +1 -1
  310. package/dist/lib/claude-desktop.js +4 -1
  311. package/dist/lib/context/index.js +9 -2
  312. package/dist/lib/council/index.d.ts +6 -6
  313. package/dist/lib/council/index.d.ts.map +1 -1
  314. package/dist/lib/council/index.js +8 -8
  315. package/dist/lib/identities/assume.d.ts +2 -2
  316. package/dist/lib/identities/assume.js +7 -7
  317. package/dist/lib/instructions/apply.d.ts +3 -3
  318. package/dist/lib/instructions/apply.d.ts.map +1 -1
  319. package/dist/lib/instructions/apply.js +75 -27
  320. package/dist/lib/instructions/host-addendum.d.ts +54 -0
  321. package/dist/lib/instructions/host-addendum.d.ts.map +1 -0
  322. package/dist/lib/instructions/host-addendum.js +107 -0
  323. package/dist/lib/instructions/templates.d.ts +10 -3
  324. package/dist/lib/instructions/templates.d.ts.map +1 -1
  325. package/dist/lib/instructions/templates.js +41 -12
  326. package/dist/lib/machine.d.ts +2 -2
  327. package/dist/lib/machine.js +2 -2
  328. package/package.json +26 -21
  329. package/schemas/config.schema.json +26 -1
  330. package/src/commander.ts +22 -13
  331. package/src/commands/{harness.ts → adapter.ts} +46 -46
  332. package/src/commands/agents.ts +200 -78
  333. package/src/commands/artifacts.ts +168 -0
  334. package/src/commands/backup.ts +47 -33
  335. package/src/commands/browse.ts +438 -2
  336. package/src/commands/checkpoint.ts +196 -0
  337. package/src/commands/context.ts +3 -176
  338. package/src/commands/decision.ts +41 -7
  339. package/src/commands/deinit.ts +16 -16
  340. package/src/commands/doctor.ts +28 -28
  341. package/src/commands/{supervisor.ts → governor.ts} +184 -154
  342. package/src/commands/grep.ts +19 -2
  343. package/src/commands/init.ts +50 -34
  344. package/src/commands/{scratch.ts → journal.ts} +60 -60
  345. package/src/commands/policy.ts +1 -1
  346. package/src/commands/presence.ts +2 -2
  347. package/src/commands/sync.ts +3 -3
  348. package/src/commands/tunnel.ts +256 -38
  349. package/src/commands/web-fetch.ts +1 -1
  350. package/src/commands/web.ts +56 -1
  351. package/src/commands/work.ts +50 -35
  352. package/src/commands/workflow.ts +43 -34
  353. package/src/core/{harnesses → adapters}/attest-projection.ts +2 -2
  354. package/src/core/{harnesses → adapters}/attest.ts +27 -27
  355. package/src/core/{harnesses → adapters}/attestation.ts +41 -41
  356. package/src/core/{harnesses → adapters}/bench.ts +34 -43
  357. package/src/core/adapters/index.ts +56 -0
  358. package/src/core/{harnesses → adapters}/profiles.ts +16 -16
  359. package/src/core/{harnesses → adapters}/registry.ts +23 -23
  360. package/src/core/{harnesses → adapters}/types.ts +23 -23
  361. package/src/core/agents/canonical-emit.ts +16 -43
  362. package/src/core/agents/cli-emit.ts +1 -1
  363. package/src/core/agents/cli.ts +30 -28
  364. package/src/core/agents/codex-replay.ts +6 -6
  365. package/src/core/agents/coord-bin.ts +92 -0
  366. package/src/core/agents/coord-client.ts +302 -78
  367. package/src/core/agents/events/consume.ts +1 -1
  368. package/src/core/agents/events/emit.ts +7 -6
  369. package/src/core/agents/paths.ts +7 -11
  370. package/src/core/agents/render/prompt-context.ts +107 -31
  371. package/src/core/agents/render/session-context.ts +6 -6
  372. package/src/core/agents/rules/claim-conflict.ts +4 -7
  373. package/src/core/agents/rules/commit-conflict.ts +103 -22
  374. package/src/core/agents/rules/stop-hook.ts +33 -17
  375. package/src/core/agents/rules/verdict.ts +13 -0
  376. package/src/core/agents/session-events.ts +4 -4
  377. package/src/core/agents/state/council.ts +1 -1
  378. package/src/core/agents/state/heartbeat-projector.ts +16 -12
  379. package/src/core/agents/state/heartbeat-writer.ts +12 -12
  380. package/src/core/agents/state/{scratch.ts → journal.ts} +12 -12
  381. package/src/core/agents/state/pidmap.ts +130 -15
  382. package/src/core/agents/state/proc-start.ts +208 -0
  383. package/src/core/agents/state/shell-mutation.ts +1 -1
  384. package/src/core/agents/state/stale-sweep.ts +7 -7
  385. package/src/core/artifacts/index.ts +557 -0
  386. package/src/core/config.ts +30 -2
  387. package/src/core/context/index.ts +15 -15
  388. package/src/core/governor/adapter-spread.ts +82 -0
  389. package/src/core/governor/index.ts +91 -0
  390. package/src/core/governor/plan-api.ts +115 -0
  391. package/src/core/{supervisor → governor}/plan-read.ts +112 -97
  392. package/src/core/{supervisor → governor}/plan-types.ts +59 -56
  393. package/src/core/{supervisor → governor}/planning.ts +223 -192
  394. package/src/core/governor/read.ts +59 -0
  395. package/src/core/{supervisor → governor}/runner.ts +39 -39
  396. package/src/core/{supervisor → governor}/service-read.ts +22 -22
  397. package/src/core/{supervisor → governor}/service.ts +117 -119
  398. package/src/core/{supervisor → governor}/state.ts +325 -167
  399. package/src/core/hooks/adapter/detect.ts +30 -0
  400. package/src/core/hooks/{harness → adapter}/events.ts +16 -14
  401. package/src/core/hooks/{harness → adapter}/output.ts +31 -23
  402. package/src/core/hooks/{harness → adapter}/parse.ts +5 -5
  403. package/src/core/hooks/{harness → adapter}/wiring.ts +21 -21
  404. package/src/core/hooks/cli.ts +197 -173
  405. package/src/core/hooks/effects/image-capture.ts +6 -6
  406. package/src/core/hooks/effects/index.ts +19 -19
  407. package/src/core/hooks/events/emit.ts +3 -3
  408. package/src/core/hooks/events/rotate.ts +1 -1
  409. package/src/core/hooks/events/schema.ts +15 -7
  410. package/src/core/hooks/guard-path.ts +2 -2
  411. package/src/core/hooks/index.ts +1 -1
  412. package/src/core/hooks/resolve/anchor.ts +63 -8
  413. package/src/core/hooks/resolve/coord-root.ts +18 -40
  414. package/src/core/hooks/resolve/intent.ts +1 -1
  415. package/src/core/hooks/resolve/owner.ts +11 -5
  416. package/src/core/{scratch → journal}/index.ts +53 -53
  417. package/src/core/policy/evaluate.ts +8 -8
  418. package/src/core/policy/types.ts +3 -3
  419. package/src/core/work/state.ts +65 -23
  420. package/src/core/workflow/adapters.ts +33 -0
  421. package/src/core/workflow/approvals.ts +7 -7
  422. package/src/core/workflow/billing.ts +12 -12
  423. package/src/core/workflow/child-env.ts +13 -4
  424. package/src/core/workflow/engine.ts +155 -90
  425. package/src/core/workflow/evidence-preflight.ts +165 -0
  426. package/src/core/workflow/index.ts +3 -3
  427. package/src/core/workflow/proof.ts +60 -50
  428. package/src/core/workflow/run-state.ts +7 -7
  429. package/src/core/workflow/sandbox-projection.ts +16 -16
  430. package/src/core/workflow/spawn-claude.ts +13 -10
  431. package/src/core/workflow/spawn-codex.ts +13 -10
  432. package/src/core/workflow/spawn-cursor.ts +13 -10
  433. package/src/core/workflow/spawn-failure.ts +1 -1
  434. package/src/core/workflow/specialists.ts +2 -2
  435. package/src/core/workflow/{journal.ts → transcript.ts} +16 -16
  436. package/src/core/workflow/types.ts +108 -51
  437. package/src/core/workflow/validate.ts +1 -1
  438. package/src/core/workflow/workspaces/cancellation.ts +2 -2
  439. package/src/core/workflow/workspaces/cleanup.ts +2 -2
  440. package/src/core/workflow/workspaces/execution.ts +6 -6
  441. package/src/core/workflow/workspaces/inspect.ts +14 -11
  442. package/src/core/workflow/workspaces/integration.ts +18 -14
  443. package/src/core/workflow/workspaces/lifecycle.ts +10 -10
  444. package/src/core/workflow/workspaces/local-git.ts +47 -5
  445. package/src/core/workflow/workspaces/recovery.ts +3 -3
  446. package/src/core/workflow/workspaces/state.ts +4 -3
  447. package/src/core/workflow/workspaces/types.ts +1 -1
  448. package/src/lib/browser/asserts.ts +177 -0
  449. package/src/lib/browser/client.ts +189 -14
  450. package/src/lib/browser/content-checks.ts +571 -0
  451. package/src/lib/browser/critique.ts +231 -0
  452. package/src/lib/browser/geometry.ts +297 -1
  453. package/src/lib/browser/index.ts +34 -0
  454. package/src/lib/claude-desktop.ts +4 -1
  455. package/src/lib/context/index.ts +11 -1
  456. package/src/lib/council/index.ts +9 -9
  457. package/src/lib/identities/assume.ts +7 -7
  458. package/src/lib/instructions/apply.ts +87 -25
  459. package/src/lib/instructions/host-addendum.ts +126 -0
  460. package/src/lib/instructions/templates.ts +44 -15
  461. package/src/lib/machine.ts +2 -2
  462. package/dist/commands/harness.d.ts +0 -12
  463. package/dist/commands/harness.d.ts.map +0 -1
  464. package/dist/commands/scratch.d.ts +0 -4
  465. package/dist/commands/scratch.d.ts.map +0 -1
  466. package/dist/commands/session.d.ts.map +0 -1
  467. package/dist/commands/session.js +0 -162
  468. package/dist/commands/supervisor.d.ts +0 -4
  469. package/dist/commands/supervisor.d.ts.map +0 -1
  470. package/dist/core/harnesses/attest-projection.d.ts.map +0 -1
  471. package/dist/core/harnesses/attest.d.ts.map +0 -1
  472. package/dist/core/harnesses/attestation.d.ts.map +0 -1
  473. package/dist/core/harnesses/bench.d.ts.map +0 -1
  474. package/dist/core/harnesses/index.d.ts +0 -13
  475. package/dist/core/harnesses/index.d.ts.map +0 -1
  476. package/dist/core/harnesses/index.js +0 -6
  477. package/dist/core/harnesses/profiles.d.ts.map +0 -1
  478. package/dist/core/harnesses/registry.d.ts +0 -15
  479. package/dist/core/harnesses/registry.d.ts.map +0 -1
  480. package/dist/core/harnesses/types.d.ts.map +0 -1
  481. package/dist/core/hooks/harness/detect.d.ts +0 -9
  482. package/dist/core/hooks/harness/events.d.ts.map +0 -1
  483. package/dist/core/hooks/harness/output.d.ts.map +0 -1
  484. package/dist/core/supervisor/index.d.ts +0 -7
  485. package/dist/core/supervisor/index.d.ts.map +0 -1
  486. package/dist/core/supervisor/index.js +0 -6
  487. package/dist/core/supervisor/plan-api.d.ts +0 -23
  488. package/dist/core/supervisor/plan-api.d.ts.map +0 -1
  489. package/dist/core/supervisor/plan-api.js +0 -50
  490. package/dist/core/supervisor/plan-read.d.ts +0 -5
  491. package/dist/core/supervisor/plan-read.d.ts.map +0 -1
  492. package/dist/core/supervisor/plan-types.d.ts.map +0 -1
  493. package/dist/core/supervisor/planning.d.ts +0 -33
  494. package/dist/core/supervisor/planning.d.ts.map +0 -1
  495. package/dist/core/supervisor/read.d.ts +0 -6
  496. package/dist/core/supervisor/read.d.ts.map +0 -1
  497. package/dist/core/supervisor/read.js +0 -4
  498. package/dist/core/supervisor/runner.d.ts +0 -37
  499. package/dist/core/supervisor/runner.d.ts.map +0 -1
  500. package/dist/core/supervisor/service-read.d.ts +0 -6
  501. package/dist/core/supervisor/service-read.d.ts.map +0 -1
  502. package/dist/core/supervisor/service.d.ts +0 -114
  503. package/dist/core/supervisor/service.d.ts.map +0 -1
  504. package/dist/core/supervisor/state.d.ts +0 -95
  505. package/dist/core/supervisor/state.d.ts.map +0 -1
  506. package/dist/core/workflow/harnesses.d.ts +0 -17
  507. package/dist/core/workflow/harnesses.d.ts.map +0 -1
  508. package/dist/core/workflow/harnesses.js +0 -21
  509. package/dist/core/workflow/journal.d.ts.map +0 -1
  510. package/src/commands/session.ts +0 -187
  511. package/src/core/harnesses/index.ts +0 -56
  512. package/src/core/hooks/harness/detect.ts +0 -30
  513. package/src/core/supervisor/index.ts +0 -89
  514. package/src/core/supervisor/plan-api.ts +0 -73
  515. package/src/core/supervisor/read.ts +0 -59
  516. package/src/core/workflow/harnesses.ts +0 -33
  517. /package/dist/core/{harnesses → adapters}/attest-projection.js +0 -0
@@ -1,15 +1,15 @@
1
1
  import { resolve } from "node:path";
2
2
  import { acceptWorkItem, reconcileWorkItem, runWorkItem, } from "../work/index.js";
3
- import { runSupervisorPlanner } from "./planning.js";
4
- import { acquireSupervisorLease, readSupervisorIgnoringLease, } from "./state.js";
5
- export async function runSupervisor(input) {
3
+ import { runGovernorPlanner } from "./planning.js";
4
+ import { acquireGovernorLease, readGovernorIgnoringLease, } from "./state.js";
5
+ export async function runGovernor(input) {
6
6
  const coordRoot = resolve(input.coordRoot);
7
7
  const mode = input.mode ?? "run";
8
- const actor = input.actor?.trim() || `supervisor:${input.goalId}`;
8
+ const actor = input.actor?.trim() || `governor:${input.goalId}`;
9
9
  const log = input.onLog ?? (() => undefined);
10
10
  const startedAt = new Date().toISOString();
11
11
  const startedMs = Date.now();
12
- const release = acquireSupervisorLease(coordRoot, input.goalId);
12
+ const release = acquireGovernorLease(coordRoot, input.goalId);
13
13
  let cycles = 0;
14
14
  let dispatches = 0;
15
15
  let acceptances = 0;
@@ -17,7 +17,7 @@ export async function runSupervisor(input) {
17
17
  const outcomes = [];
18
18
  const planOutcomes = [];
19
19
  try {
20
- const initial = readSupervisorIgnoringLease(coordRoot, input.goalId);
20
+ const initial = readGovernorIgnoringLease(coordRoot, input.goalId);
21
21
  const cycleLimit = mode === "tick" ? 1 : initial.intent.limits.max_cycles;
22
22
  const deadline = startedMs + initial.intent.limits.max_runtime_ms;
23
23
  while (cycles < cycleLimit) {
@@ -29,7 +29,7 @@ export async function runSupervisor(input) {
29
29
  return report("succeeded", record.projection.reason, record);
30
30
  }
31
31
  if (Date.now() >= deadline) {
32
- return report("budget_exhausted", "supervisor wall-time limit reached", record);
32
+ return report("budget_exhausted", "governor wall-time limit reached", record);
33
33
  }
34
34
  const before = graphFingerprint(record);
35
35
  let changed = false;
@@ -37,7 +37,7 @@ export async function runSupervisor(input) {
37
37
  record.projection.next_action === "plan_initial" ||
38
38
  record.projection.next_action === "plan_milestone") {
39
39
  log(`[${record.intent.title}] ${record.projection.next_action} at graph generation ${record.projection.plan_generation}`);
40
- const plan = await runSupervisorPlanner({
40
+ const plan = await runGovernorPlanner({
41
41
  coordRoot,
42
42
  record,
43
43
  engine: input.engine,
@@ -64,7 +64,7 @@ export async function runSupervisor(input) {
64
64
  continue;
65
65
  acceptWorkItem(coordRoot, work.intent.id, {
66
66
  actor,
67
- reason: "passing proof accepted by frozen supervisor policy",
67
+ reason: "passing proof accepted by frozen governor policy",
68
68
  });
69
69
  acceptances++;
70
70
  changed = true;
@@ -124,10 +124,10 @@ export async function runSupervisor(input) {
124
124
  if (mode === "tick") {
125
125
  return report(before === after ? "no_progress" : "tick_complete", before === after
126
126
  ? "the tick found no legal progress action"
127
- : "one bounded supervisor cycle completed", record);
127
+ : "one bounded governor cycle completed", record);
128
128
  }
129
129
  if (Date.now() >= deadline) {
130
- return report("budget_exhausted", "supervisor wall-time limit reached", record);
130
+ return report("budget_exhausted", "governor wall-time limit reached", record);
131
131
  }
132
132
  if (record.projection.state === "budget_exhausted") {
133
133
  return report("budget_exhausted", record.projection.reason, record);
@@ -139,11 +139,11 @@ export async function runSupervisor(input) {
139
139
  return report(stopForProjection(record.projection), record.projection.reason, record);
140
140
  }
141
141
  if (before === after) {
142
- return report("no_progress", "a supervisor cycle produced no durable state change", record);
142
+ return report("no_progress", "a governor cycle produced no durable state change", record);
143
143
  }
144
144
  }
145
145
  const final = refreshGraph(coordRoot, input.goalId, actor);
146
- return report("budget_exhausted", `supervisor cycle limit reached (${cycleLimit})`, final);
146
+ return report("budget_exhausted", `governor cycle limit reached (${cycleLimit})`, final);
147
147
  }
148
148
  finally {
149
149
  release();
@@ -169,10 +169,10 @@ export async function runSupervisor(input) {
169
169
  }
170
170
  }
171
171
  function refreshGraph(coordRoot, goalId, actor) {
172
- const before = readSupervisorIgnoringLease(coordRoot, goalId);
172
+ const before = readGovernorIgnoringLease(coordRoot, goalId);
173
173
  for (const work of before.work)
174
174
  reconcileWorkItem(coordRoot, work.intent.id, actor);
175
- return readSupervisorIgnoringLease(coordRoot, goalId);
175
+ return readGovernorIgnoringLease(coordRoot, goalId);
176
176
  }
177
177
  function selectCandidates(record) {
178
178
  const candidates = [];
@@ -0,0 +1,6 @@
1
+ import type { GovernorServiceConfig, GovernorServiceRuntime, GovernorServiceStatus } from "./service.js";
2
+ export declare function readGovernorServiceConfig(coordRootRaw: string): GovernorServiceConfig;
3
+ export declare function readGovernorServiceRuntime(coordRootRaw: string): GovernorServiceRuntime | undefined;
4
+ export declare function readGovernorServiceStatus(coordRootRaw: string): GovernorServiceStatus;
5
+ export declare function governorServiceLogPath(coordRoot: string): string;
6
+ //# sourceMappingURL=service-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-read.d.ts","sourceRoot":"","sources":["../../../src/core/governor/service-read.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAMtB,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,CA0BrF;AAED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,GACnB,sBAAsB,GAAG,SAAS,CAgBpC;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,CAkBrF;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE"}
@@ -4,9 +4,9 @@ import { join, resolve } from "node:path";
4
4
  const MAX_FILE_BYTES = 512 * 1024;
5
5
  const MAX_GOALS = 100;
6
6
  const FOREIGN_STATUS_STALE_MS = 30_000;
7
- export function readSupervisorServiceConfig(coordRootRaw) {
7
+ export function readGovernorServiceConfig(coordRootRaw) {
8
8
  const coordRoot = resolve(coordRootRaw);
9
- const config = readBoundedJson(join(serviceDir(coordRoot), "config.json"), "supervisor service configuration");
9
+ const config = readBoundedJson(join(serviceDir(coordRoot), "config.json"), "governor service configuration");
10
10
  if (config.schema_version !== 1 ||
11
11
  !validTimestamp(config.created_at) ||
12
12
  !Array.isArray(config.goal_ids) ||
@@ -22,39 +22,39 @@ export function readSupervisorServiceConfig(coordRootRaw) {
22
22
  typeof config.engine !== "object" ||
23
23
  typeof config.engine.subscription_only !== "boolean" ||
24
24
  typeof config.engine.allow_api_billing !== "boolean") {
25
- throw new Error("supervisor service configuration has an unsupported schema");
25
+ throw new Error("governor service configuration has an unsupported schema");
26
26
  }
27
27
  return config;
28
28
  }
29
- export function readSupervisorServiceRuntime(coordRootRaw) {
29
+ export function readGovernorServiceRuntime(coordRootRaw) {
30
30
  const coordRoot = resolve(coordRootRaw);
31
31
  const path = join(serviceDir(coordRoot), "runtime.json");
32
32
  if (!existsSync(path))
33
33
  return undefined;
34
- const runtime = readBoundedJson(path, "supervisor service runtime");
34
+ const runtime = readBoundedJson(path, "governor service runtime");
35
35
  if (runtime.schema_version !== 1 ||
36
36
  !validTimestamp(runtime.config_created_at) ||
37
37
  !validTimestamp(runtime.updated_at) ||
38
38
  !runtime.goals ||
39
39
  typeof runtime.goals !== "object" ||
40
40
  Array.isArray(runtime.goals)) {
41
- throw new Error("supervisor service runtime has an unsupported schema");
41
+ throw new Error("governor service runtime has an unsupported schema");
42
42
  }
43
43
  return runtime;
44
44
  }
45
- export function readSupervisorServiceStatus(coordRootRaw) {
45
+ export function readGovernorServiceStatus(coordRootRaw) {
46
46
  const coordRoot = resolve(coordRootRaw);
47
47
  const record = readStatusRecord(coordRoot);
48
48
  let config;
49
49
  let runtime;
50
50
  try {
51
- config = readSupervisorServiceConfig(coordRoot);
51
+ config = readGovernorServiceConfig(coordRoot);
52
52
  }
53
53
  catch {
54
54
  // Unconfigured or corrupt service state is represented without throwing.
55
55
  }
56
56
  try {
57
- runtime = readSupervisorServiceRuntime(coordRoot);
57
+ runtime = readGovernorServiceRuntime(coordRoot);
58
58
  }
59
59
  catch {
60
60
  // Runtime is recoverable and must not make the dashboard unreadable.
@@ -64,7 +64,7 @@ export function readSupervisorServiceStatus(coordRootRaw) {
64
64
  const running = statusOwnerIsLive(record);
65
65
  return { running, stale: !running && record.state !== "stopped", record, config, runtime };
66
66
  }
67
- export function supervisorServiceLogPath(coordRoot) {
67
+ export function governorServiceLogPath(coordRoot) {
68
68
  return join(serviceDir(resolve(coordRoot)), "service.log");
69
69
  }
70
70
  function readStatusRecord(coordRoot) {
@@ -72,7 +72,7 @@ function readStatusRecord(coordRoot) {
72
72
  if (!existsSync(path))
73
73
  return undefined;
74
74
  try {
75
- const value = readBoundedJson(path, "supervisor service status");
75
+ const value = readBoundedJson(path, "governor service status");
76
76
  if (value.schema_version !== 1 ||
77
77
  !Number.isSafeInteger(value.pid) ||
78
78
  value.pid < 1 ||
@@ -117,7 +117,7 @@ function readBoundedJson(path, label) {
117
117
  }
118
118
  }
119
119
  function serviceDir(coordRoot) {
120
- return join(coordRoot, ".harnery", "supervisor-service");
120
+ return join(coordRoot, ".harnery", "governor-service");
121
121
  }
122
122
  function positive(value) {
123
123
  return Number.isSafeInteger(value) && value > 0;
@@ -0,0 +1,114 @@
1
+ import { type NormalizedPolicy, type PolicyIsolation } from "../policy/index.js";
2
+ import type { RunWorkItemInput } from "../work/index.js";
3
+ import { type GovernorRunReport, type GovernorStopReason } from "./runner.js";
4
+ import { type GovernorRecord } from "./state.js";
5
+ export declare const GOVERNOR_SERVICE_CONFIG_SCHEMA_VERSION: 1;
6
+ export declare const GOVERNOR_SERVICE_RUNTIME_SCHEMA_VERSION: 1;
7
+ export declare const GOVERNOR_SERVICE_STATUS_SCHEMA_VERSION: 1;
8
+ export interface GovernorServiceEngineConfig {
9
+ default_adapter?: string;
10
+ cwd?: string;
11
+ subscription_only: boolean;
12
+ allow_api_billing: boolean;
13
+ policy?: NormalizedPolicy;
14
+ isolation?: PolicyIsolation;
15
+ approval_addressee?: string;
16
+ }
17
+ export interface GovernorServiceConfig {
18
+ schema_version: typeof GOVERNOR_SERVICE_CONFIG_SCHEMA_VERSION;
19
+ goal_ids: string[];
20
+ wake_interval_ms: number;
21
+ heartbeat_interval_ms: number;
22
+ error_backoff_base_ms: number;
23
+ error_backoff_max_ms: number;
24
+ engine: GovernorServiceEngineConfig;
25
+ created_at: string;
26
+ }
27
+ export interface ConfigureGovernorServiceInput {
28
+ coordRoot: string;
29
+ goalIds: readonly string[];
30
+ wakeIntervalMs?: number;
31
+ heartbeatIntervalMs?: number;
32
+ errorBackoffBaseMs?: number;
33
+ errorBackoffMaxMs?: number;
34
+ engine?: Partial<GovernorServiceEngineConfig>;
35
+ }
36
+ export type GovernorServiceGoalState = "idle" | "backoff" | "awaiting_change";
37
+ export interface GovernorServiceGoalRuntime {
38
+ state: GovernorServiceGoalState;
39
+ consecutive_errors: number;
40
+ observed_fingerprint?: string;
41
+ next_wake_at?: string;
42
+ last_tick_at?: string;
43
+ last_stop_reason?: GovernorStopReason;
44
+ last_error?: string;
45
+ }
46
+ export interface GovernorServiceRuntime {
47
+ schema_version: typeof GOVERNOR_SERVICE_RUNTIME_SCHEMA_VERSION;
48
+ config_created_at: string;
49
+ updated_at: string;
50
+ goals: Record<string, GovernorServiceGoalRuntime>;
51
+ }
52
+ export type GovernorServiceProcessState = "starting" | "running" | "stopping" | "stopped";
53
+ export interface GovernorServiceStatusRecord {
54
+ schema_version: typeof GOVERNOR_SERVICE_STATUS_SCHEMA_VERSION;
55
+ pid: number;
56
+ host: string;
57
+ nonce: string;
58
+ state: GovernorServiceProcessState;
59
+ started_at: string;
60
+ heartbeat_at: string;
61
+ config_created_at: string;
62
+ sweep_count: number;
63
+ active_goal_id?: string;
64
+ last_sweep_at?: string;
65
+ next_wake_at?: string;
66
+ last_error?: string;
67
+ stopped_at?: string;
68
+ }
69
+ export interface GovernorServiceStatus {
70
+ running: boolean;
71
+ stale: boolean;
72
+ record?: GovernorServiceStatusRecord;
73
+ config?: GovernorServiceConfig;
74
+ runtime?: GovernorServiceRuntime;
75
+ }
76
+ export interface GovernorServiceSweepOutcome {
77
+ goal_id: string;
78
+ action: "tick" | "skip" | "backoff";
79
+ reason: string;
80
+ stop_reason?: GovernorStopReason;
81
+ next_wake_at?: string;
82
+ }
83
+ export interface GovernorServiceSweepReport {
84
+ started_at: string;
85
+ ended_at: string;
86
+ outcomes: GovernorServiceSweepOutcome[];
87
+ }
88
+ export interface RunGovernorServiceSweepInput {
89
+ coordRoot: string;
90
+ config: GovernorServiceConfig;
91
+ engine?: Omit<RunWorkItemInput["engine"], "maxAgents" | "concurrency" | "specialists">;
92
+ actor?: string;
93
+ now?: () => number;
94
+ readGoal?: (coordRoot: string, goalId: string) => GovernorRecord;
95
+ runGoal?: (goalId: string) => Promise<GovernorRunReport>;
96
+ onGoalStart?: (goalId: string) => void;
97
+ }
98
+ export interface RunGovernorServiceDaemonInput {
99
+ coordRoot: string;
100
+ engine: Omit<RunWorkItemInput["engine"], "maxAgents" | "concurrency" | "specialists">;
101
+ actor?: string;
102
+ maxSweeps?: number;
103
+ onLog?: (line: string) => void;
104
+ }
105
+ export declare function configureGovernorService(input: ConfigureGovernorServiceInput): GovernorServiceConfig;
106
+ export declare function readGovernorServiceConfig(coordRootRaw: string): GovernorServiceConfig;
107
+ export declare function readGovernorServiceRuntime(coordRootRaw: string): GovernorServiceRuntime | undefined;
108
+ export declare function readGovernorServiceStatus(coordRootRaw: string): GovernorServiceStatus;
109
+ export declare function spawnGovernorService(coordRootRaw: string): Promise<GovernorServiceStatus>;
110
+ export declare function requestGovernorServiceStop(coordRootRaw: string): GovernorServiceStatus;
111
+ export declare function runGovernorServiceSweep(input: RunGovernorServiceSweepInput): Promise<GovernorServiceSweepReport>;
112
+ export declare function runGovernorServiceDaemon(input: RunGovernorServiceDaemonInput): Promise<GovernorServiceStatusRecord>;
113
+ export declare function governorServiceLogPath(coordRoot: string): string;
114
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/core/governor/service.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,gBAAgB,EAAmB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAe,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,YAAY,CAAC;AAE/D,eAAO,MAAM,sCAAsC,EAAG,CAAU,CAAC;AACjE,eAAO,MAAM,uCAAuC,EAAG,CAAU,CAAC;AAClE,eAAO,MAAM,sCAAsC,EAAG,CAAU,CAAC;AAOjE,MAAM,WAAW,2BAA2B;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,OAAO,sCAAsC,CAAC;IAC9D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,2BAA2B,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAAC;AAE9E,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,wBAAwB,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,OAAO,uCAAuC,CAAC;IAC/D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CACnD;AAED,MAAM,MAAM,2BAA2B,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1F,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,OAAO,sCAAsC,CAAC;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,2BAA2B,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,2BAA2B,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,cAAc,CAAC;IACjE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AASD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,6BAA6B,GACnC,qBAAqB,CAiDvB;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,CAQrF;AAED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,GACnB,sBAAsB,GAAG,SAAS,CAkBpC;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,CAkBrF;AAED,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwC/F;AAED,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,CAgBtF;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,0BAA0B,CAAC,CAwIrC;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,6BAA6B,GACnC,OAAO,CAAC,2BAA2B,CAAC,CAyGtC;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE"}
@@ -4,27 +4,27 @@ import { appendFileSync, chmodSync, closeSync, existsSync, mkdirSync, openSync,
4
4
  import { hostname } from "node:os";
5
5
  import { dirname, join, resolve } from "node:path";
6
6
  import { normalizePolicy } from "../policy/index.js";
7
- import { runSupervisor } from "./runner.js";
8
- import { readSupervisor } from "./state.js";
9
- export const SUPERVISOR_SERVICE_CONFIG_SCHEMA_VERSION = 1;
10
- export const SUPERVISOR_SERVICE_RUNTIME_SCHEMA_VERSION = 1;
11
- export const SUPERVISOR_SERVICE_STATUS_SCHEMA_VERSION = 1;
7
+ import { runGovernor } from "./runner.js";
8
+ import { readGovernor } from "./state.js";
9
+ export const GOVERNOR_SERVICE_CONFIG_SCHEMA_VERSION = 1;
10
+ export const GOVERNOR_SERVICE_RUNTIME_SCHEMA_VERSION = 1;
11
+ export const GOVERNOR_SERVICE_STATUS_SCHEMA_VERSION = 1;
12
12
  const MAX_FILE_BYTES = 512 * 1024;
13
13
  const MAX_GOALS = 100;
14
14
  const MAX_ERROR = 2_000;
15
15
  const FOREIGN_STATUS_STALE_MS = 30_000;
16
- export function configureSupervisorService(input) {
16
+ export function configureGovernorService(input) {
17
17
  const coordRoot = resolve(input.coordRoot);
18
18
  const active = readStatusRecord(coordRoot);
19
19
  if (active && statusOwnerIsLive(active)) {
20
- throw new Error(`stop supervisor service pid ${active.pid} before changing its configuration`);
20
+ throw new Error(`stop governor service pid ${active.pid} before changing its configuration`);
21
21
  }
22
22
  const goalIds = unique(input.goalIds.map((value) => value.trim()).filter(Boolean));
23
23
  if (goalIds.length < 1 || goalIds.length > MAX_GOALS) {
24
- throw new Error(`supervisor service requires from 1 to ${MAX_GOALS} unique goal ids`);
24
+ throw new Error(`governor service requires from 1 to ${MAX_GOALS} unique goal ids`);
25
25
  }
26
26
  for (const goalId of goalIds)
27
- readSupervisor(coordRoot, goalId);
27
+ readGovernor(coordRoot, goalId);
28
28
  const wakeIntervalMs = positive(input.wakeIntervalMs ?? 5_000, "service wake_interval_ms", 60 * 60 * 1_000);
29
29
  const heartbeatIntervalMs = positive(input.heartbeatIntervalMs ?? 2_000, "service heartbeat_interval_ms", 60_000);
30
30
  const errorBackoffBaseMs = positive(input.errorBackoffBaseMs ?? 2_000, "service error_backoff_base_ms", 60 * 60 * 1_000);
@@ -33,7 +33,7 @@ export function configureSupervisorService(input) {
33
33
  throw new Error("service error_backoff_max_ms must be at least error_backoff_base_ms");
34
34
  }
35
35
  const config = {
36
- schema_version: SUPERVISOR_SERVICE_CONFIG_SCHEMA_VERSION,
36
+ schema_version: GOVERNOR_SERVICE_CONFIG_SCHEMA_VERSION,
37
37
  goal_ids: goalIds,
38
38
  wake_interval_ms: wakeIntervalMs,
39
39
  heartbeat_interval_ms: heartbeatIntervalMs,
@@ -46,42 +46,42 @@ export function configureSupervisorService(input) {
46
46
  mkdirSync(dir, { recursive: true, mode: 0o700 });
47
47
  chmodSync(dir, 0o700);
48
48
  writePrivateJsonAtomic(serviceConfigPath(coordRoot), config);
49
- return readSupervisorServiceConfig(coordRoot);
49
+ return readGovernorServiceConfig(coordRoot);
50
50
  }
51
- export function readSupervisorServiceConfig(coordRootRaw) {
51
+ export function readGovernorServiceConfig(coordRootRaw) {
52
52
  const coordRoot = resolve(coordRootRaw);
53
- const config = readBoundedJson(serviceConfigPath(coordRoot), "supervisor service configuration");
53
+ const config = readBoundedJson(serviceConfigPath(coordRoot), "governor service configuration");
54
54
  validateConfig(coordRoot, config);
55
55
  return config;
56
56
  }
57
- export function readSupervisorServiceRuntime(coordRootRaw) {
57
+ export function readGovernorServiceRuntime(coordRootRaw) {
58
58
  const coordRoot = resolve(coordRootRaw);
59
59
  if (!existsSync(serviceRuntimePath(coordRoot)))
60
60
  return undefined;
61
- const runtime = readBoundedJson(serviceRuntimePath(coordRoot), "supervisor service runtime");
62
- if (runtime.schema_version !== SUPERVISOR_SERVICE_RUNTIME_SCHEMA_VERSION ||
61
+ const runtime = readBoundedJson(serviceRuntimePath(coordRoot), "governor service runtime");
62
+ if (runtime.schema_version !== GOVERNOR_SERVICE_RUNTIME_SCHEMA_VERSION ||
63
63
  !validTimestamp(runtime.config_created_at) ||
64
64
  !validTimestamp(runtime.updated_at) ||
65
65
  !runtime.goals ||
66
66
  typeof runtime.goals !== "object" ||
67
67
  Array.isArray(runtime.goals)) {
68
- throw new Error("supervisor service runtime has an unsupported schema");
68
+ throw new Error("governor service runtime has an unsupported schema");
69
69
  }
70
70
  return runtime;
71
71
  }
72
- export function readSupervisorServiceStatus(coordRootRaw) {
72
+ export function readGovernorServiceStatus(coordRootRaw) {
73
73
  const coordRoot = resolve(coordRootRaw);
74
74
  const record = readStatusRecord(coordRoot);
75
75
  let config;
76
76
  let runtime;
77
77
  try {
78
- config = readSupervisorServiceConfig(coordRoot);
78
+ config = readGovernorServiceConfig(coordRoot);
79
79
  }
80
80
  catch {
81
81
  // A service has no usable configuration until explicitly configured.
82
82
  }
83
83
  try {
84
- runtime = readSupervisorServiceRuntime(coordRoot);
84
+ runtime = readGovernorServiceRuntime(coordRoot);
85
85
  }
86
86
  catch {
87
87
  // Status remains readable when recoverable runtime state is corrupt.
@@ -91,12 +91,12 @@ export function readSupervisorServiceStatus(coordRootRaw) {
91
91
  const running = statusOwnerIsLive(record);
92
92
  return { running, stale: !running && record.state !== "stopped", record, config, runtime };
93
93
  }
94
- export async function spawnSupervisorService(coordRootRaw) {
94
+ export async function spawnGovernorService(coordRootRaw) {
95
95
  const coordRoot = resolve(coordRootRaw);
96
- readSupervisorServiceConfig(coordRoot);
97
- const current = readSupervisorServiceStatus(coordRoot);
96
+ readGovernorServiceConfig(coordRoot);
97
+ const current = readGovernorServiceStatus(coordRoot);
98
98
  if (current.running) {
99
- throw new Error(`supervisor service is already running under pid ${current.record?.pid}`);
99
+ throw new Error(`governor service is already running under pid ${current.record?.pid}`);
100
100
  }
101
101
  mkdirSync(serviceDir(coordRoot), { recursive: true, mode: 0o700 });
102
102
  const logFd = openSync(serviceLogPath(coordRoot), "a", 0o600);
@@ -107,7 +107,7 @@ export async function spawnSupervisorService(coordRootRaw) {
107
107
  throw new Error(`cannot find harn executable at ${harnBin}`);
108
108
  }
109
109
  let spawnError;
110
- const child = spawn(harnBin, ["supervisor", "service", "daemon"], {
110
+ const child = spawn(harnBin, ["governor", "service", "daemon"], {
111
111
  cwd: coordRoot,
112
112
  detached: true,
113
113
  stdio: ["ignore", logFd, logFd],
@@ -127,17 +127,17 @@ export async function spawnSupervisorService(coordRootRaw) {
127
127
  await delay(50);
128
128
  if (spawnError)
129
129
  throw spawnError;
130
- const status = readSupervisorServiceStatus(coordRoot);
130
+ const status = readGovernorServiceStatus(coordRoot);
131
131
  if (status.running && status.record?.pid === child.pid)
132
132
  return status;
133
133
  if (child.exitCode !== null)
134
134
  break;
135
135
  }
136
- throw new Error(`supervisor service failed to start; inspect ${serviceLogPath(coordRoot)}`);
136
+ throw new Error(`governor service failed to start; inspect ${serviceLogPath(coordRoot)}`);
137
137
  }
138
- export function requestSupervisorServiceStop(coordRootRaw) {
138
+ export function requestGovernorServiceStop(coordRootRaw) {
139
139
  const coordRoot = resolve(coordRootRaw);
140
- const status = readSupervisorServiceStatus(coordRoot);
140
+ const status = readGovernorServiceStatus(coordRoot);
141
141
  if (!status.running || !status.record)
142
142
  return status;
143
143
  writePrivateJsonAtomic(serviceStopPath(coordRoot), {
@@ -152,24 +152,24 @@ export function requestSupervisorServiceStop(coordRootRaw) {
152
152
  // The durable stop request remains for a racing or restarted daemon.
153
153
  }
154
154
  }
155
- return readSupervisorServiceStatus(coordRoot);
155
+ return readGovernorServiceStatus(coordRoot);
156
156
  }
157
- export async function runSupervisorServiceSweep(input) {
157
+ export async function runGovernorServiceSweep(input) {
158
158
  const coordRoot = resolve(input.coordRoot);
159
159
  const now = input.now ?? Date.now;
160
- const readGoal = input.readGoal ?? readSupervisor;
160
+ const readGoal = input.readGoal ?? readGovernor;
161
161
  const runtime = runtimeForConfig(coordRoot, input.config, now());
162
162
  const startedAt = new Date(now()).toISOString();
163
163
  const outcomes = [];
164
164
  const runGoal = input.runGoal ??
165
165
  (async (goalId) => {
166
166
  if (!input.engine)
167
- throw new Error("supervisor service sweep requires an engine");
168
- return await runSupervisor({
167
+ throw new Error("governor service sweep requires an engine");
168
+ return await runGovernor({
169
169
  coordRoot,
170
170
  goalId,
171
171
  mode: "tick",
172
- actor: input.actor ?? "supervisor-service",
172
+ actor: input.actor ?? "governor-service",
173
173
  engine: input.engine,
174
174
  });
175
175
  });
@@ -287,14 +287,14 @@ export async function runSupervisorServiceSweep(input) {
287
287
  persistRuntime(coordRoot, runtime, Date.parse(endedAt));
288
288
  return { started_at: startedAt, ended_at: endedAt, outcomes };
289
289
  }
290
- export async function runSupervisorServiceDaemon(input) {
290
+ export async function runGovernorServiceDaemon(input) {
291
291
  const coordRoot = resolve(input.coordRoot);
292
- const config = readSupervisorServiceConfig(coordRoot);
292
+ const config = readGovernorServiceConfig(coordRoot);
293
293
  const release = acquireServiceLease(coordRoot);
294
294
  rmSync(serviceStopPath(coordRoot), { force: true });
295
295
  const now = new Date().toISOString();
296
296
  const status = {
297
- schema_version: SUPERVISOR_SERVICE_STATUS_SCHEMA_VERSION,
297
+ schema_version: GOVERNOR_SERVICE_STATUS_SCHEMA_VERSION,
298
298
  pid: process.pid,
299
299
  host: hostname(),
300
300
  nonce: randomUUID(),
@@ -325,20 +325,20 @@ export async function runSupervisorServiceDaemon(input) {
325
325
  goals: config.goal_ids,
326
326
  config_created_at: config.created_at,
327
327
  });
328
- log(`supervisor service started for ${config.goal_ids.length} goal(s)`);
328
+ log(`governor service started for ${config.goal_ids.length} goal(s)`);
329
329
  const heartbeat = setInterval(() => {
330
330
  try {
331
331
  writeStatus();
332
332
  }
333
333
  catch (error) {
334
- log(`supervisor service heartbeat error: ${boundedError(error.message)}`);
334
+ log(`governor service heartbeat error: ${boundedError(error.message)}`);
335
335
  }
336
336
  }, config.heartbeat_interval_ms);
337
337
  try {
338
338
  while (!stopRequested && !existsSync(serviceStopPath(coordRoot))) {
339
339
  let sleepMs = config.wake_interval_ms;
340
340
  try {
341
- const report = await runSupervisorServiceSweep({
341
+ const report = await runGovernorServiceSweep({
342
342
  coordRoot,
343
343
  config,
344
344
  engine: input.engine,
@@ -368,7 +368,7 @@ export async function runSupervisorServiceDaemon(input) {
368
368
  event: "service.sweep_error",
369
369
  error: status.last_error,
370
370
  });
371
- log(`supervisor service sweep error: ${status.last_error}`);
371
+ log(`governor service sweep error: ${status.last_error}`);
372
372
  }
373
373
  if (input.maxSweeps !== undefined && status.sweep_count >= input.maxSweeps)
374
374
  break;
@@ -395,13 +395,13 @@ export async function runSupervisorServiceDaemon(input) {
395
395
  }
396
396
  return status;
397
397
  }
398
- export function supervisorServiceLogPath(coordRoot) {
398
+ export function governorServiceLogPath(coordRoot) {
399
399
  return serviceLogPath(resolve(coordRoot));
400
400
  }
401
401
  function runtimeForConfig(coordRoot, config, timestamp) {
402
402
  let existing;
403
403
  try {
404
- existing = readSupervisorServiceRuntime(coordRoot);
404
+ existing = readGovernorServiceRuntime(coordRoot);
405
405
  }
406
406
  catch {
407
407
  // Runtime is a recoverable scheduling hint; durable goal state remains authoritative.
@@ -411,7 +411,7 @@ function runtimeForConfig(coordRoot, config, timestamp) {
411
411
  return { ...existing, goals };
412
412
  }
413
413
  return {
414
- schema_version: SUPERVISOR_SERVICE_RUNTIME_SCHEMA_VERSION,
414
+ schema_version: GOVERNOR_SERVICE_RUNTIME_SCHEMA_VERSION,
415
415
  config_created_at: config.created_at,
416
416
  updated_at: new Date(timestamp).toISOString(),
417
417
  goals: Object.fromEntries(config.goal_ids.map((goalId) => [goalId, emptyGoalRuntime()])),
@@ -453,7 +453,7 @@ function wakeDue(value, now) {
453
453
  }
454
454
  function normalizeEngineConfig(coordRoot, input) {
455
455
  return {
456
- default_harness: optionalBounded(input?.default_harness, "default_harness", 100),
456
+ default_adapter: optionalBounded(input?.default_adapter, "default_adapter", 100),
457
457
  cwd: input?.cwd ? resolve(input.cwd) : coordRoot,
458
458
  subscription_only: bool(input?.subscription_only ?? false, "subscription_only"),
459
459
  allow_api_billing: bool(input?.allow_api_billing ?? false, "allow_api_billing"),
@@ -463,13 +463,13 @@ function normalizeEngineConfig(coordRoot, input) {
463
463
  };
464
464
  }
465
465
  function validateConfig(coordRoot, config) {
466
- if (config.schema_version !== SUPERVISOR_SERVICE_CONFIG_SCHEMA_VERSION ||
466
+ if (config.schema_version !== GOVERNOR_SERVICE_CONFIG_SCHEMA_VERSION ||
467
467
  !validTimestamp(config.created_at) ||
468
468
  !Array.isArray(config.goal_ids)) {
469
- throw new Error("supervisor service configuration has an unsupported schema");
469
+ throw new Error("governor service configuration has an unsupported schema");
470
470
  }
471
471
  const normalized = {
472
- schema_version: SUPERVISOR_SERVICE_CONFIG_SCHEMA_VERSION,
472
+ schema_version: GOVERNOR_SERVICE_CONFIG_SCHEMA_VERSION,
473
473
  goal_ids: unique(config.goal_ids.map((goalId) => goalId.trim()).filter(Boolean)),
474
474
  wake_interval_ms: positive(config.wake_interval_ms, "service wake_interval_ms", 60 * 60 * 1_000),
475
475
  heartbeat_interval_ms: positive(config.heartbeat_interval_ms, "service heartbeat_interval_ms", 60_000),
@@ -482,7 +482,7 @@ function validateConfig(coordRoot, config) {
482
482
  normalized.goal_ids.length > MAX_GOALS ||
483
483
  normalized.error_backoff_max_ms < normalized.error_backoff_base_ms ||
484
484
  JSON.stringify(normalized) !== JSON.stringify(config)) {
485
- throw new Error("supervisor service configuration is not canonical");
485
+ throw new Error("governor service configuration is not canonical");
486
486
  }
487
487
  }
488
488
  function normalizeIsolation(value) {
@@ -522,11 +522,11 @@ function acquireServiceLease(coordRoot) {
522
522
  if (!acquire()) {
523
523
  const existing = readLease(path);
524
524
  if (existing && leaseOwnerIsLive(existing)) {
525
- throw new Error(`supervisor service is already running under pid ${existing.pid}`);
525
+ throw new Error(`governor service is already running under pid ${existing.pid}`);
526
526
  }
527
527
  unlinkSync(path);
528
528
  if (!acquire())
529
- throw new Error("supervisor service lease raced with another process");
529
+ throw new Error("governor service lease raced with another process");
530
530
  }
531
531
  return () => {
532
532
  try {
@@ -565,8 +565,8 @@ function readStatusRecord(coordRoot) {
565
565
  if (!existsSync(serviceStatusPath(coordRoot)))
566
566
  return undefined;
567
567
  try {
568
- const value = readBoundedJson(serviceStatusPath(coordRoot), "supervisor service status");
569
- if (value.schema_version !== SUPERVISOR_SERVICE_STATUS_SCHEMA_VERSION ||
568
+ const value = readBoundedJson(serviceStatusPath(coordRoot), "governor service status");
569
+ if (value.schema_version !== GOVERNOR_SERVICE_STATUS_SCHEMA_VERSION ||
570
570
  !Number.isSafeInteger(value.pid) ||
571
571
  value.pid < 1 ||
572
572
  typeof value.host !== "string" ||
@@ -611,7 +611,7 @@ function renderSweepLog(report) {
611
611
  }, {});
612
612
  if (!counts.tick && !counts.backoff)
613
613
  return undefined;
614
- return `supervisor service sweep: ${counts.tick ?? 0} tick, ${counts.skip ?? 0} skip, ${counts.backoff ?? 0} backoff`;
614
+ return `governor service sweep: ${counts.tick ?? 0} tick, ${counts.skip ?? 0} skip, ${counts.backoff ?? 0} backoff`;
615
615
  }
616
616
  function readBoundedJson(path, label) {
617
617
  if (!existsSync(path))
@@ -629,7 +629,7 @@ function readBoundedJson(path, label) {
629
629
  function writePrivateJsonAtomic(path, value) {
630
630
  const body = `${JSON.stringify(value, null, 2)}\n`;
631
631
  if (Buffer.byteLength(body) > MAX_FILE_BYTES) {
632
- throw new Error(`supervisor service file exceeds ${MAX_FILE_BYTES} bytes`);
632
+ throw new Error(`governor service file exceeds ${MAX_FILE_BYTES} bytes`);
633
633
  }
634
634
  mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
635
635
  chmodSync(dirname(path), 0o700);
@@ -639,7 +639,7 @@ function writePrivateJsonAtomic(path, value) {
639
639
  chmodSync(path, 0o600);
640
640
  }
641
641
  function serviceDir(coordRoot) {
642
- return join(resolve(coordRoot), ".harnery", "supervisor-service");
642
+ return join(resolve(coordRoot), ".harnery", "governor-service");
643
643
  }
644
644
  function serviceConfigPath(coordRoot) {
645
645
  return join(serviceDir(coordRoot), "config.json");