pi-daddy 0.28.0 → 0.32.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 (1005) hide show
  1. package/CHANGELOG.md +99 -124
  2. package/README.md +18 -896
  3. package/THIRD_PARTY_NOTICES.md +1 -1
  4. package/contracts/ledger-record/v1/README.md +44 -0
  5. package/contracts/ledger-record/v1/fixtures/child-lifecycle.json +45 -0
  6. package/contracts/ledger-record/v1/fixtures/ledger-record.jsonl +3 -0
  7. package/contracts/ledger-record/v1/governance-event.schema.json +747 -0
  8. package/contracts/ledger-record/v1/record.schema.json +91 -0
  9. package/dist/cli.d.ts +6 -4
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +108 -103
  12. package/dist/cli.js.map +1 -1
  13. package/dist/executors/activity-session.d.ts +12 -0
  14. package/dist/executors/activity-session.d.ts.map +1 -0
  15. package/dist/executors/activity-session.js +43 -0
  16. package/dist/executors/activity-session.js.map +1 -0
  17. package/dist/executors/executor.d.ts +39 -0
  18. package/dist/executors/executor.d.ts.map +1 -0
  19. package/dist/executors/executor.js +95 -0
  20. package/dist/executors/executor.js.map +1 -0
  21. package/dist/executors/herdr-cli.d.ts +78 -0
  22. package/dist/executors/herdr-cli.d.ts.map +1 -0
  23. package/dist/executors/herdr-cli.js +114 -0
  24. package/dist/executors/herdr-cli.js.map +1 -0
  25. package/dist/executors/herdr-name.d.ts.map +1 -0
  26. package/dist/executors/herdr-name.js.map +1 -0
  27. package/dist/executors/herdr-pi-lifecycle.d.ts.map +1 -0
  28. package/dist/executors/herdr-pi-lifecycle.js +22 -0
  29. package/dist/executors/herdr-pi-lifecycle.js.map +1 -0
  30. package/dist/executors/herdr-poll.d.ts +140 -0
  31. package/dist/executors/herdr-poll.d.ts.map +1 -0
  32. package/dist/executors/herdr-poll.js +252 -0
  33. package/dist/executors/herdr-poll.js.map +1 -0
  34. package/dist/executors/herdr-stage.d.ts +40 -0
  35. package/dist/executors/herdr-stage.d.ts.map +1 -0
  36. package/dist/executors/herdr-stage.js +54 -0
  37. package/dist/executors/herdr-stage.js.map +1 -0
  38. package/dist/executors/herdr-start.d.ts.map +1 -0
  39. package/dist/executors/herdr-start.js.map +1 -0
  40. package/dist/executors/native-session-target.d.ts +9 -0
  41. package/dist/executors/native-session-target.d.ts.map +1 -0
  42. package/dist/executors/native-session-target.js +30 -0
  43. package/dist/executors/native-session-target.js.map +1 -0
  44. package/dist/executors/pane-reaper.d.ts +111 -0
  45. package/dist/executors/pane-reaper.d.ts.map +1 -0
  46. package/dist/executors/pane-reaper.js +242 -0
  47. package/dist/executors/pane-reaper.js.map +1 -0
  48. package/dist/executors/process-activity.d.ts +3 -0
  49. package/dist/executors/process-activity.d.ts.map +1 -0
  50. package/dist/executors/process-activity.js +59 -0
  51. package/dist/executors/process-activity.js.map +1 -0
  52. package/dist/executors/run-herdr.d.ts +122 -0
  53. package/dist/executors/run-herdr.d.ts.map +1 -0
  54. package/dist/executors/run-herdr.js +341 -0
  55. package/dist/executors/run-herdr.js.map +1 -0
  56. package/dist/executors/vendor/herdr-pi-lifecycle.d.ts.map +1 -0
  57. package/dist/executors/vendor/herdr-pi-lifecycle.js.map +1 -0
  58. package/dist/governance/approval-prompt.d.ts +119 -0
  59. package/dist/governance/approval-prompt.d.ts.map +1 -0
  60. package/dist/governance/approval-prompt.js +133 -0
  61. package/dist/governance/approval-prompt.js.map +1 -0
  62. package/dist/governance/approval-store.d.ts +149 -0
  63. package/dist/governance/approval-store.d.ts.map +1 -0
  64. package/dist/governance/approval-store.js +309 -0
  65. package/dist/governance/approval-store.js.map +1 -0
  66. package/dist/governance/execution-retention.d.ts +90 -0
  67. package/dist/governance/execution-retention.d.ts.map +1 -0
  68. package/dist/governance/execution-retention.js +317 -0
  69. package/dist/governance/execution-retention.js.map +1 -0
  70. package/dist/governance/file-lock.d.ts.map +1 -0
  71. package/dist/governance/file-lock.js +205 -0
  72. package/dist/governance/file-lock.js.map +1 -0
  73. package/dist/governance/finalization.d.ts.map +1 -0
  74. package/dist/governance/finalization.js.map +1 -0
  75. package/dist/governance/grant-store.d.ts +96 -0
  76. package/dist/governance/grant-store.d.ts.map +1 -0
  77. package/dist/governance/grant-store.js +186 -0
  78. package/dist/governance/grant-store.js.map +1 -0
  79. package/dist/governance/init.d.ts +129 -0
  80. package/dist/governance/init.d.ts.map +1 -0
  81. package/dist/governance/init.js +360 -0
  82. package/dist/governance/init.js.map +1 -0
  83. package/dist/governance/lease-helper.d.ts.map +1 -0
  84. package/dist/governance/lease-helper.js +121 -0
  85. package/dist/governance/lease-helper.js.map +1 -0
  86. package/dist/governance/lease-record.d.ts +90 -0
  87. package/dist/governance/lease-record.d.ts.map +1 -0
  88. package/dist/governance/lease-record.js.map +1 -0
  89. package/dist/governance/ledger-events.d.ts +111 -0
  90. package/dist/governance/ledger-events.d.ts.map +1 -0
  91. package/dist/governance/ledger-events.js +129 -0
  92. package/dist/governance/ledger-events.js.map +1 -0
  93. package/dist/governance/ledger-report.d.ts +134 -0
  94. package/dist/governance/ledger-report.d.ts.map +1 -0
  95. package/dist/governance/ledger-report.js +294 -0
  96. package/dist/governance/ledger-report.js.map +1 -0
  97. package/dist/governance/ledger-v3-validation.d.ts +21 -0
  98. package/dist/governance/ledger-v3-validation.d.ts.map +1 -0
  99. package/dist/governance/ledger-v3-validation.js +353 -0
  100. package/dist/governance/ledger-v3-validation.js.map +1 -0
  101. package/dist/governance/ledger.d.ts +258 -0
  102. package/dist/governance/ledger.d.ts.map +1 -0
  103. package/dist/governance/ledger.js +201 -0
  104. package/dist/governance/ledger.js.map +1 -0
  105. package/dist/governance/native-session.d.ts +59 -0
  106. package/dist/governance/native-session.d.ts.map +1 -0
  107. package/dist/governance/native-session.js +208 -0
  108. package/dist/governance/native-session.js.map +1 -0
  109. package/dist/governance/record.d.ts +65 -0
  110. package/dist/governance/record.d.ts.map +1 -0
  111. package/dist/governance/record.js +259 -0
  112. package/dist/governance/record.js.map +1 -0
  113. package/dist/governance/retention-contract.d.ts.map +1 -0
  114. package/dist/governance/retention-contract.js +187 -0
  115. package/dist/governance/retention-contract.js.map +1 -0
  116. package/dist/governance/retention-json.d.ts.map +1 -0
  117. package/dist/governance/retention-json.js.map +1 -0
  118. package/dist/governance/workspace-lease.d.ts +40 -0
  119. package/dist/governance/workspace-lease.d.ts.map +1 -0
  120. package/dist/governance/workspace-lease.js +357 -0
  121. package/dist/governance/workspace-lease.js.map +1 -0
  122. package/dist/index.d.ts +59 -42
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +61 -42
  125. package/dist/index.js.map +1 -1
  126. package/dist/kernel/approval.d.ts +241 -0
  127. package/dist/kernel/approval.d.ts.map +1 -0
  128. package/dist/kernel/approval.js +270 -0
  129. package/dist/kernel/approval.js.map +1 -0
  130. package/dist/kernel/capabilities.d.ts +136 -0
  131. package/dist/kernel/capabilities.d.ts.map +1 -0
  132. package/dist/kernel/capabilities.js +199 -0
  133. package/dist/kernel/capabilities.js.map +1 -0
  134. package/dist/kernel/catalog.d.ts +98 -0
  135. package/dist/kernel/catalog.d.ts.map +1 -0
  136. package/dist/kernel/catalog.js +280 -0
  137. package/dist/kernel/catalog.js.map +1 -0
  138. package/dist/kernel/chain.d.ts.map +1 -0
  139. package/dist/kernel/chain.js.map +1 -0
  140. package/dist/kernel/correlation.d.ts.map +1 -0
  141. package/dist/kernel/correlation.js +267 -0
  142. package/dist/kernel/correlation.js.map +1 -0
  143. package/dist/kernel/definitions.d.ts.map +1 -0
  144. package/dist/kernel/definitions.js +164 -0
  145. package/dist/kernel/definitions.js.map +1 -0
  146. package/dist/kernel/delegate-types.d.ts +160 -0
  147. package/dist/kernel/delegate-types.d.ts.map +1 -0
  148. package/dist/kernel/delegate-types.js +9 -0
  149. package/dist/kernel/delegate-types.js.map +1 -0
  150. package/dist/kernel/delegate.d.ts.map +1 -0
  151. package/dist/kernel/delegate.js +314 -0
  152. package/dist/kernel/delegate.js.map +1 -0
  153. package/dist/kernel/delegation-approval.d.ts.map +1 -0
  154. package/dist/kernel/delegation-approval.js +93 -0
  155. package/dist/kernel/delegation-approval.js.map +1 -0
  156. package/dist/kernel/env-names.d.ts +51 -0
  157. package/dist/kernel/env-names.d.ts.map +1 -0
  158. package/dist/kernel/env-names.js +112 -0
  159. package/dist/kernel/env-names.js.map +1 -0
  160. package/dist/kernel/execution-id.d.ts.map +1 -0
  161. package/dist/kernel/execution-id.js.map +1 -0
  162. package/dist/kernel/fanout.d.ts.map +1 -0
  163. package/dist/kernel/fanout.js +93 -0
  164. package/dist/kernel/fanout.js.map +1 -0
  165. package/dist/kernel/grant-env.d.ts +118 -0
  166. package/dist/kernel/grant-env.d.ts.map +1 -0
  167. package/dist/kernel/grant-env.js +104 -0
  168. package/dist/kernel/grant-env.js.map +1 -0
  169. package/dist/kernel/ledger-identifiers.d.ts.map +1 -0
  170. package/dist/kernel/ledger-identifiers.js.map +1 -0
  171. package/dist/kernel/model-preflight.d.ts +13 -0
  172. package/dist/kernel/model-preflight.d.ts.map +1 -0
  173. package/dist/kernel/model-preflight.js +30 -0
  174. package/dist/kernel/model-preflight.js.map +1 -0
  175. package/dist/kernel/pi-tools.d.ts.map +1 -0
  176. package/dist/kernel/pi-tools.js +29 -0
  177. package/dist/kernel/pi-tools.js.map +1 -0
  178. package/dist/kernel/progress.d.ts.map +1 -0
  179. package/dist/kernel/progress.js.map +1 -0
  180. package/dist/kernel/project-paths.d.ts +43 -0
  181. package/dist/kernel/project-paths.d.ts.map +1 -0
  182. package/dist/kernel/project-paths.js +81 -0
  183. package/dist/kernel/project-paths.js.map +1 -0
  184. package/dist/kernel/propagation.d.ts +195 -0
  185. package/dist/kernel/propagation.d.ts.map +1 -0
  186. package/dist/kernel/propagation.js +275 -0
  187. package/dist/kernel/propagation.js.map +1 -0
  188. package/dist/kernel/refusals.d.ts +16 -0
  189. package/dist/kernel/refusals.d.ts.map +1 -0
  190. package/dist/kernel/refusals.js +53 -0
  191. package/dist/kernel/refusals.js.map +1 -0
  192. package/dist/kernel/resolve.d.ts.map +1 -0
  193. package/dist/kernel/resolve.js +201 -0
  194. package/dist/kernel/resolve.js.map +1 -0
  195. package/dist/kernel/routing-authority.d.ts.map +1 -0
  196. package/dist/kernel/routing-authority.js.map +1 -0
  197. package/dist/kernel/run-child.d.ts +111 -0
  198. package/dist/kernel/run-child.d.ts.map +1 -0
  199. package/dist/kernel/run-child.js +324 -0
  200. package/dist/kernel/run-child.js.map +1 -0
  201. package/dist/kernel/skill-packages.d.ts +116 -0
  202. package/dist/kernel/skill-packages.d.ts.map +1 -0
  203. package/dist/kernel/skill-packages.js +300 -0
  204. package/dist/kernel/skill-packages.js.map +1 -0
  205. package/dist/kernel/skill-resources.d.ts.map +1 -0
  206. package/dist/kernel/skill-resources.js +56 -0
  207. package/dist/kernel/skill-resources.js.map +1 -0
  208. package/dist/kernel/spawn.d.ts.map +1 -0
  209. package/dist/kernel/spawn.js.map +1 -0
  210. package/dist/kernel/workspace.d.ts +51 -0
  211. package/dist/kernel/workspace.d.ts.map +1 -0
  212. package/dist/kernel/workspace.js +223 -0
  213. package/dist/kernel/workspace.js.map +1 -0
  214. package/dist/products/activity-timeline.d.ts +126 -0
  215. package/dist/products/activity-timeline.d.ts.map +1 -0
  216. package/dist/products/activity-timeline.js +542 -0
  217. package/dist/products/activity-timeline.js.map +1 -0
  218. package/dist/products/dashboard-cli.d.ts +26 -0
  219. package/dist/products/dashboard-cli.d.ts.map +1 -0
  220. package/dist/products/dashboard-cli.js +224 -0
  221. package/dist/products/dashboard-cli.js.map +1 -0
  222. package/dist/products/dashboard-display-controls.d.ts +17 -0
  223. package/dist/products/dashboard-display-controls.d.ts.map +1 -0
  224. package/dist/products/dashboard-display-controls.js +38 -0
  225. package/dist/products/dashboard-display-controls.js.map +1 -0
  226. package/dist/products/dashboard-handshake.d.ts +42 -0
  227. package/dist/products/dashboard-handshake.d.ts.map +1 -0
  228. package/dist/products/dashboard-handshake.js +158 -0
  229. package/dist/products/dashboard-handshake.js.map +1 -0
  230. package/dist/products/dashboard-herdr.d.ts +55 -0
  231. package/dist/products/dashboard-herdr.d.ts.map +1 -0
  232. package/dist/products/dashboard-herdr.js +324 -0
  233. package/dist/products/dashboard-herdr.js.map +1 -0
  234. package/dist/products/dashboard-projection.d.ts +62 -0
  235. package/dist/products/dashboard-projection.d.ts.map +1 -0
  236. package/dist/products/dashboard-projection.js +305 -0
  237. package/dist/products/dashboard-projection.js.map +1 -0
  238. package/dist/products/dashboard-render.d.ts.map +1 -0
  239. package/dist/products/dashboard-render.js +208 -0
  240. package/dist/products/dashboard-render.js.map +1 -0
  241. package/extensions/activity-timeline.ts +134 -28
  242. package/extensions/approval-banking.ts +3 -3
  243. package/extensions/approvals.ts +18 -12
  244. package/extensions/chain-approval-facts.ts +9 -6
  245. package/extensions/chain-ledger.ts +4 -4
  246. package/extensions/chain-plan.ts +6 -6
  247. package/extensions/correlation-shape.ts +42 -33
  248. package/extensions/delegate-chain.ts +93 -45
  249. package/extensions/delegation-authority.ts +7 -3
  250. package/extensions/delegation-ledger.ts +2 -2
  251. package/extensions/delegation-native.ts +24 -7
  252. package/extensions/delegation.ts +91 -80
  253. package/extensions/execute-child.ts +440 -293
  254. package/extensions/execution-occurrence.ts +2 -2
  255. package/extensions/executor-session.ts +5 -5
  256. package/extensions/fanout-outcome.ts +8 -6
  257. package/extensions/grant-store-refusal.ts +24 -12
  258. package/extensions/grants-command.ts +41 -33
  259. package/extensions/grants-connected-command.ts +29 -15
  260. package/extensions/grants.ts +73 -73
  261. package/extensions/init-command.ts +18 -12
  262. package/extensions/reload-environment.ts +12 -5
  263. package/extensions/run-delegation.ts +29 -19
  264. package/extensions/session-environment.ts +25 -11
  265. package/extensions/session-report.ts +60 -11
  266. package/extensions/session.ts +58 -34
  267. package/extensions/spawn-summary.ts +5 -5
  268. package/extensions/stored-grant-session.ts +5 -5
  269. package/extensions/tripwire.ts +1 -1
  270. package/extensions/workspace-runtime.ts +26 -24
  271. package/herdr-plugin/herdr-plugin.toml +1 -1
  272. package/package.json +4 -211
  273. package/src/cli.ts +136 -89
  274. package/src/executors/activity-session.ts +54 -0
  275. package/src/executors/executor.ts +123 -0
  276. package/src/executors/herdr-cli.ts +132 -0
  277. package/src/executors/herdr-pi-lifecycle.ts +21 -0
  278. package/src/executors/herdr-poll.ts +305 -0
  279. package/src/executors/herdr-stage.ts +55 -0
  280. package/src/executors/native-session-target.ts +31 -0
  281. package/src/executors/pane-reaper.ts +270 -0
  282. package/src/executors/process-activity.ts +54 -0
  283. package/src/executors/run-herdr.ts +426 -0
  284. package/src/governance/approval-prompt.ts +225 -0
  285. package/src/governance/approval-store.ts +385 -0
  286. package/src/governance/execution-retention.ts +372 -0
  287. package/src/governance/file-lock.ts +210 -0
  288. package/src/governance/finalization.ts +82 -0
  289. package/src/governance/grant-store.ts +235 -0
  290. package/src/governance/init.ts +447 -0
  291. package/src/governance/lease-helper.ts +124 -0
  292. package/src/governance/lease-record.ts +131 -0
  293. package/src/governance/ledger-events.ts +222 -0
  294. package/src/governance/ledger-report.ts +396 -0
  295. package/src/governance/ledger-v3-validation.ts +384 -0
  296. package/src/governance/ledger.ts +419 -0
  297. package/src/governance/native-session.ts +264 -0
  298. package/src/governance/record.ts +294 -0
  299. package/src/governance/retention-contract.ts +201 -0
  300. package/src/governance/retention-json.ts +24 -0
  301. package/src/governance/workspace-lease.ts +429 -0
  302. package/src/index.ts +82 -92
  303. package/src/kernel/approval.ts +406 -0
  304. package/src/kernel/capabilities.ts +216 -0
  305. package/src/kernel/catalog.ts +313 -0
  306. package/src/kernel/correlation.ts +351 -0
  307. package/src/kernel/definitions.ts +215 -0
  308. package/src/kernel/delegate-types.ts +162 -0
  309. package/src/kernel/delegate.ts +370 -0
  310. package/src/kernel/delegation-approval.ts +126 -0
  311. package/src/kernel/env-names.ts +119 -0
  312. package/src/kernel/fanout.ts +106 -0
  313. package/src/kernel/grant-env.ts +174 -0
  314. package/src/kernel/model-preflight.ts +44 -0
  315. package/src/kernel/pi-tools.ts +32 -0
  316. package/src/kernel/project-paths.ts +97 -0
  317. package/src/kernel/propagation.ts +341 -0
  318. package/src/kernel/refusals.ts +64 -0
  319. package/src/kernel/resolve.ts +258 -0
  320. package/src/kernel/run-child.ts +418 -0
  321. package/src/kernel/skill-packages.ts +329 -0
  322. package/src/kernel/skill-resources.ts +64 -0
  323. package/src/kernel/workspace.ts +336 -0
  324. package/src/products/activity-timeline.ts +679 -0
  325. package/src/products/dashboard-cli.ts +250 -0
  326. package/src/products/dashboard-display-controls.ts +44 -0
  327. package/src/products/dashboard-handshake.ts +222 -0
  328. package/src/products/dashboard-herdr.ts +427 -0
  329. package/src/products/dashboard-projection.ts +389 -0
  330. package/src/products/dashboard-render.ts +260 -0
  331. package/PRODUCT-GUIDE.md +0 -155
  332. package/REQUIREMENTS.md +0 -41
  333. package/contracts/daily-view/v1/README.md +0 -114
  334. package/contracts/daily-view/v1/fixtures/view.json +0 -525
  335. package/contracts/daily-view/v1/fixtures/view.txt +0 -75
  336. package/contracts/daily-view/v1/fixtures/work.jsonl +0 -17
  337. package/contracts/daily-view/v1/p03/README.md +0 -26
  338. package/contracts/daily-view/v1/p03/fixtures/retained-executions.json +0 -241
  339. package/contracts/daily-view/v1/p03/projection.schema.json +0 -194
  340. package/contracts/daily-view/v1/p03/provenance.json +0 -21
  341. package/contracts/dashboard-host/v1/README.md +0 -176
  342. package/contracts/debrief/v1/README.md +0 -146
  343. package/contracts/debrief/v1/intervention/README.md +0 -32
  344. package/contracts/debrief/v1/intervention/fixtures/artifact-3ee11136beb864f518252e5024dae9197421fbf97b6e981d3243c782b5c44bd0.txt +0 -1
  345. package/contracts/debrief/v1/intervention/fixtures/artifact-58905d872dd3c54a9705f67b05fa82edbad7af6476ae8993faf1a7b9fadfb905.txt +0 -1
  346. package/contracts/debrief/v1/intervention/fixtures/assessment.json +0 -29
  347. package/contracts/debrief/v1/intervention/fixtures/blind-view.json +0 -20
  348. package/contracts/debrief/v1/intervention/fixtures/choice.json +0 -7
  349. package/contracts/debrief/v1/intervention/fixtures/manifest.json +0 -57
  350. package/contracts/debrief/v1/intervention/fixtures/reveal.json +0 -39
  351. package/contracts/debrief/v1/provenance.json +0 -89
  352. package/contracts/debrief/v1/work-capture/README.md +0 -38
  353. package/contracts/debrief/v1/work-capture/fixtures/batch.json +0 -17
  354. package/contracts/debrief/v1/work-capture/fixtures/cases.json +0 -184
  355. package/contracts/debrief/v1/work-capture/fixtures/review.json +0 -184
  356. package/contracts/debrief/v1/work-capture/review-request.schema.json +0 -41
  357. package/contracts/debrief/v1/work-capture/work-case.schema.json +0 -190
  358. package/contracts/debrief/v2/README.md +0 -71
  359. package/contracts/debrief/v2/input-pin.json +0 -66
  360. package/contracts/debrief/v2/intervention-upstream.md +0 -40
  361. package/contracts/debrief/v2/work-signals-upstream.md +0 -22
  362. package/contracts/dispatch-control/v1/README.md +0 -109
  363. package/contracts/dispatch-control/v1/request.schema.json +0 -19
  364. package/contracts/effect-profile/v1/README.md +0 -124
  365. package/contracts/execution-retention/v1/README.md +0 -109
  366. package/contracts/execution-retention/v2/README.md +0 -148
  367. package/contracts/execution-retention/v2/fixtures/interrupted-native-bytes.json +0 -91
  368. package/contracts/execution-retention/v2/fixtures/missing-native-session.json +0 -91
  369. package/contracts/execution-retention/v2/fixtures/native-file-unknown-branch.json +0 -91
  370. package/contracts/execution-retention/v2/fixtures/native-id-without-bytes.json +0 -91
  371. package/contracts/execution-retention/v2/fixtures/native-live-branch.json +0 -90
  372. package/contracts/execution-retention/v2/fixtures/replaced-native-session.json +0 -92
  373. package/contracts/execution-retention/v2/fixtures/result-82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a.bin +0 -1
  374. package/contracts/execution-retention/v2/fixtures/session-2ec1f134bc739984434f7fca689e1c3d1c39fce2dcadae709e9b6faedfcc4ac7.bin +0 -3
  375. package/contracts/execution-retention/v2/fixtures/session-9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f.bin +0 -3
  376. package/contracts/execution-retention/v2/manifest.schema.json +0 -858
  377. package/contracts/experiment/v1/README.md +0 -164
  378. package/contracts/factory-order/v1/README.md +0 -151
  379. package/contracts/factory-order/v1/adoption-pin.json +0 -8
  380. package/contracts/intent-control/v1/README.md +0 -135
  381. package/contracts/intent-control/v1/request.schema.json +0 -1096
  382. package/contracts/intent-control/v2/README.md +0 -34
  383. package/contracts/intent-control/v2/request.schema.json +0 -1070
  384. package/contracts/ledger/v2/README.md +0 -59
  385. package/contracts/ledger/v2/fixtures/capability-decision.json +0 -95
  386. package/contracts/ledger/v2/fixtures/check-receipt.json +0 -40
  387. package/contracts/ledger/v2/fixtures/child-lifecycle.json +0 -42
  388. package/contracts/ledger/v2/fixtures/workspace-lease.json +0 -41
  389. package/contracts/ledger/v2/ledger-event.schema.json +0 -633
  390. package/contracts/ledger/v3/README.md +0 -36
  391. package/contracts/ledger/v3/fixtures/check-receipt.json +0 -41
  392. package/contracts/ledger/v3/fixtures/child-lifecycle.json +0 -44
  393. package/contracts/ledger/v3/fixtures/workflow-fact.json +0 -40
  394. package/contracts/ledger/v3/ledger-event.schema.json +0 -955
  395. package/contracts/ledger/v4/README.md +0 -241
  396. package/contracts/ledger/v4/fixtures/layout-options.json +0 -428
  397. package/contracts/ledger/v4/fixtures/work-acceptance.json +0 -57
  398. package/contracts/ledger/v4/fixtures/work-occurrence.json +0 -44
  399. package/contracts/ledger/v4/fixtures/work-revision.json +0 -26
  400. package/contracts/ledger/v4/fixtures/work-snapshot.json +0 -73
  401. package/contracts/ledger/v4/ledger-event.schema.json +0 -162
  402. package/contracts/ordinary-control/v1/README.md +0 -59
  403. package/contracts/producer-ipc/v1/README.md +0 -137
  404. package/dist/activity-timeline.d.ts +0 -109
  405. package/dist/activity-timeline.d.ts.map +0 -1
  406. package/dist/activity-timeline.js +0 -208
  407. package/dist/activity-timeline.js.map +0 -1
  408. package/dist/approval-prompt.d.ts +0 -119
  409. package/dist/approval-prompt.d.ts.map +0 -1
  410. package/dist/approval-prompt.js +0 -133
  411. package/dist/approval-prompt.js.map +0 -1
  412. package/dist/approval-store.d.ts +0 -149
  413. package/dist/approval-store.d.ts.map +0 -1
  414. package/dist/approval-store.js +0 -314
  415. package/dist/approval-store.js.map +0 -1
  416. package/dist/approval.d.ts +0 -241
  417. package/dist/approval.d.ts.map +0 -1
  418. package/dist/approval.js +0 -268
  419. package/dist/approval.js.map +0 -1
  420. package/dist/capabilities.d.ts +0 -136
  421. package/dist/capabilities.d.ts.map +0 -1
  422. package/dist/capabilities.js +0 -203
  423. package/dist/capabilities.js.map +0 -1
  424. package/dist/catalog.d.ts +0 -98
  425. package/dist/catalog.d.ts.map +0 -1
  426. package/dist/catalog.js +0 -273
  427. package/dist/catalog.js.map +0 -1
  428. package/dist/chain.d.ts.map +0 -1
  429. package/dist/chain.js.map +0 -1
  430. package/dist/check-runner.d.ts +0 -66
  431. package/dist/check-runner.d.ts.map +0 -1
  432. package/dist/check-runner.js +0 -275
  433. package/dist/check-runner.js.map +0 -1
  434. package/dist/control-journal.d.ts +0 -20
  435. package/dist/control-journal.d.ts.map +0 -1
  436. package/dist/control-journal.js +0 -73
  437. package/dist/control-journal.js.map +0 -1
  438. package/dist/correlation.d.ts.map +0 -1
  439. package/dist/correlation.js +0 -231
  440. package/dist/correlation.js.map +0 -1
  441. package/dist/daily-dashboard-host.d.ts +0 -136
  442. package/dist/daily-dashboard-host.d.ts.map +0 -1
  443. package/dist/daily-dashboard-host.js +0 -164
  444. package/dist/daily-dashboard-host.js.map +0 -1
  445. package/dist/daily-panel.d.ts +0 -36
  446. package/dist/daily-panel.d.ts.map +0 -1
  447. package/dist/daily-panel.js +0 -84
  448. package/dist/daily-panel.js.map +0 -1
  449. package/dist/daily-view-input.d.ts +0 -44
  450. package/dist/daily-view-input.d.ts.map +0 -1
  451. package/dist/daily-view-input.js +0 -68
  452. package/dist/daily-view-input.js.map +0 -1
  453. package/dist/daily-view-render.d.ts +0 -5
  454. package/dist/daily-view-render.d.ts.map +0 -1
  455. package/dist/daily-view-render.js +0 -42
  456. package/dist/daily-view-render.js.map +0 -1
  457. package/dist/daily-view.d.ts +0 -77
  458. package/dist/daily-view.d.ts.map +0 -1
  459. package/dist/daily-view.js +0 -176
  460. package/dist/daily-view.js.map +0 -1
  461. package/dist/dashboard-cli.d.ts +0 -54
  462. package/dist/dashboard-cli.d.ts.map +0 -1
  463. package/dist/dashboard-cli.js +0 -367
  464. package/dist/dashboard-cli.js.map +0 -1
  465. package/dist/dashboard-display-controls.d.ts +0 -15
  466. package/dist/dashboard-display-controls.d.ts.map +0 -1
  467. package/dist/dashboard-display-controls.js +0 -34
  468. package/dist/dashboard-display-controls.js.map +0 -1
  469. package/dist/dashboard-handshake.d.ts +0 -42
  470. package/dist/dashboard-handshake.d.ts.map +0 -1
  471. package/dist/dashboard-handshake.js +0 -147
  472. package/dist/dashboard-handshake.js.map +0 -1
  473. package/dist/dashboard-harness.d.ts +0 -22
  474. package/dist/dashboard-harness.d.ts.map +0 -1
  475. package/dist/dashboard-harness.js +0 -89
  476. package/dist/dashboard-harness.js.map +0 -1
  477. package/dist/dashboard-herdr.d.ts +0 -55
  478. package/dist/dashboard-herdr.d.ts.map +0 -1
  479. package/dist/dashboard-herdr.js +0 -293
  480. package/dist/dashboard-herdr.js.map +0 -1
  481. package/dist/dashboard-host-contract.d.ts +0 -127
  482. package/dist/dashboard-host-contract.d.ts.map +0 -1
  483. package/dist/dashboard-host-contract.js +0 -14
  484. package/dist/dashboard-host-contract.js.map +0 -1
  485. package/dist/dashboard-host-transport.d.ts +0 -16
  486. package/dist/dashboard-host-transport.d.ts.map +0 -1
  487. package/dist/dashboard-host-transport.js +0 -127
  488. package/dist/dashboard-host-transport.js.map +0 -1
  489. package/dist/dashboard-host.d.ts +0 -239
  490. package/dist/dashboard-host.d.ts.map +0 -1
  491. package/dist/dashboard-host.js +0 -474
  492. package/dist/dashboard-host.js.map +0 -1
  493. package/dist/dashboard-menu.d.ts +0 -16
  494. package/dist/dashboard-menu.d.ts.map +0 -1
  495. package/dist/dashboard-menu.js +0 -33
  496. package/dist/dashboard-menu.js.map +0 -1
  497. package/dist/dashboard-observation.d.ts +0 -28
  498. package/dist/dashboard-observation.d.ts.map +0 -1
  499. package/dist/dashboard-observation.js +0 -87
  500. package/dist/dashboard-observation.js.map +0 -1
  501. package/dist/dashboard-projection.d.ts +0 -73
  502. package/dist/dashboard-projection.d.ts.map +0 -1
  503. package/dist/dashboard-projection.js +0 -294
  504. package/dist/dashboard-projection.js.map +0 -1
  505. package/dist/dashboard-render.d.ts.map +0 -1
  506. package/dist/dashboard-render.js +0 -212
  507. package/dist/dashboard-render.js.map +0 -1
  508. package/dist/debrief-contract.d.ts +0 -65
  509. package/dist/debrief-contract.d.ts.map +0 -1
  510. package/dist/debrief-contract.js +0 -151
  511. package/dist/debrief-contract.js.map +0 -1
  512. package/dist/debrief-fixture.d.ts +0 -16
  513. package/dist/debrief-fixture.d.ts.map +0 -1
  514. package/dist/debrief-fixture.js +0 -41
  515. package/dist/debrief-fixture.js.map +0 -1
  516. package/dist/debrief-host.d.ts +0 -59
  517. package/dist/debrief-host.d.ts.map +0 -1
  518. package/dist/debrief-host.js +0 -49
  519. package/dist/debrief-host.js.map +0 -1
  520. package/dist/debrief-render.d.ts +0 -5
  521. package/dist/debrief-render.d.ts.map +0 -1
  522. package/dist/debrief-render.js +0 -65
  523. package/dist/debrief-render.js.map +0 -1
  524. package/dist/debrief.d.ts +0 -90
  525. package/dist/debrief.d.ts.map +0 -1
  526. package/dist/debrief.js +0 -263
  527. package/dist/debrief.js.map +0 -1
  528. package/dist/definitions.d.ts.map +0 -1
  529. package/dist/definitions.js +0 -164
  530. package/dist/definitions.js.map +0 -1
  531. package/dist/delegate-types.d.ts +0 -154
  532. package/dist/delegate-types.d.ts.map +0 -1
  533. package/dist/delegate-types.js +0 -8
  534. package/dist/delegate-types.js.map +0 -1
  535. package/dist/delegate.d.ts.map +0 -1
  536. package/dist/delegate.js +0 -313
  537. package/dist/delegate.js.map +0 -1
  538. package/dist/delegation-approval.d.ts.map +0 -1
  539. package/dist/delegation-approval.js +0 -94
  540. package/dist/delegation-approval.js.map +0 -1
  541. package/dist/dispatch-control.d.ts +0 -45
  542. package/dist/dispatch-control.d.ts.map +0 -1
  543. package/dist/dispatch-control.js +0 -76
  544. package/dist/dispatch-control.js.map +0 -1
  545. package/dist/effect-profile-runtime.d.ts +0 -40
  546. package/dist/effect-profile-runtime.d.ts.map +0 -1
  547. package/dist/effect-profile-runtime.js +0 -51
  548. package/dist/effect-profile-runtime.js.map +0 -1
  549. package/dist/effect-profile.d.ts +0 -40
  550. package/dist/effect-profile.d.ts.map +0 -1
  551. package/dist/effect-profile.js +0 -152
  552. package/dist/effect-profile.js.map +0 -1
  553. package/dist/execution-id.d.ts.map +0 -1
  554. package/dist/execution-id.js.map +0 -1
  555. package/dist/execution-retention.d.ts +0 -90
  556. package/dist/execution-retention.d.ts.map +0 -1
  557. package/dist/execution-retention.js +0 -247
  558. package/dist/execution-retention.js.map +0 -1
  559. package/dist/executor.d.ts +0 -39
  560. package/dist/executor.d.ts.map +0 -1
  561. package/dist/executor.js +0 -94
  562. package/dist/executor.js.map +0 -1
  563. package/dist/experiment-contract.d.ts +0 -56
  564. package/dist/experiment-contract.d.ts.map +0 -1
  565. package/dist/experiment-contract.js +0 -80
  566. package/dist/experiment-contract.js.map +0 -1
  567. package/dist/experiment-state.d.ts +0 -22
  568. package/dist/experiment-state.d.ts.map +0 -1
  569. package/dist/experiment-state.js +0 -79
  570. package/dist/experiment-state.js.map +0 -1
  571. package/dist/experiment-store.d.ts +0 -30
  572. package/dist/experiment-store.d.ts.map +0 -1
  573. package/dist/experiment-store.js +0 -147
  574. package/dist/experiment-store.js.map +0 -1
  575. package/dist/experiment.d.ts +0 -65
  576. package/dist/experiment.d.ts.map +0 -1
  577. package/dist/experiment.js +0 -362
  578. package/dist/experiment.js.map +0 -1
  579. package/dist/factory-contract.d.ts +0 -79
  580. package/dist/factory-contract.d.ts.map +0 -1
  581. package/dist/factory-contract.js +0 -89
  582. package/dist/factory-contract.js.map +0 -1
  583. package/dist/factory-migration.d.ts +0 -20
  584. package/dist/factory-migration.d.ts.map +0 -1
  585. package/dist/factory-migration.js +0 -55
  586. package/dist/factory-migration.js.map +0 -1
  587. package/dist/factory-order.d.ts +0 -848
  588. package/dist/factory-order.d.ts.map +0 -1
  589. package/dist/factory-order.js +0 -83
  590. package/dist/factory-order.js.map +0 -1
  591. package/dist/factory-registry.d.ts +0 -121
  592. package/dist/factory-registry.d.ts.map +0 -1
  593. package/dist/factory-registry.js +0 -133
  594. package/dist/factory-registry.js.map +0 -1
  595. package/dist/fanout.d.ts.map +0 -1
  596. package/dist/fanout.js +0 -93
  597. package/dist/fanout.js.map +0 -1
  598. package/dist/file-lock.d.ts.map +0 -1
  599. package/dist/file-lock.js +0 -201
  600. package/dist/file-lock.js.map +0 -1
  601. package/dist/finalization.d.ts.map +0 -1
  602. package/dist/finalization.js.map +0 -1
  603. package/dist/git-identity.d.ts +0 -13
  604. package/dist/git-identity.d.ts.map +0 -1
  605. package/dist/git-identity.js +0 -47
  606. package/dist/git-identity.js.map +0 -1
  607. package/dist/grant-env.d.ts +0 -75
  608. package/dist/grant-env.d.ts.map +0 -1
  609. package/dist/grant-env.js +0 -154
  610. package/dist/grant-env.js.map +0 -1
  611. package/dist/grant-store.d.ts +0 -96
  612. package/dist/grant-store.d.ts.map +0 -1
  613. package/dist/grant-store.js +0 -188
  614. package/dist/grant-store.js.map +0 -1
  615. package/dist/herdr-cli.d.ts +0 -78
  616. package/dist/herdr-cli.d.ts.map +0 -1
  617. package/dist/herdr-cli.js +0 -113
  618. package/dist/herdr-cli.js.map +0 -1
  619. package/dist/herdr-name.d.ts.map +0 -1
  620. package/dist/herdr-name.js.map +0 -1
  621. package/dist/herdr-pi-lifecycle.d.ts.map +0 -1
  622. package/dist/herdr-pi-lifecycle.js +0 -22
  623. package/dist/herdr-pi-lifecycle.js.map +0 -1
  624. package/dist/herdr-poll.d.ts +0 -133
  625. package/dist/herdr-poll.d.ts.map +0 -1
  626. package/dist/herdr-poll.js +0 -222
  627. package/dist/herdr-poll.js.map +0 -1
  628. package/dist/herdr-stage.d.ts +0 -40
  629. package/dist/herdr-stage.d.ts.map +0 -1
  630. package/dist/herdr-stage.js +0 -54
  631. package/dist/herdr-stage.js.map +0 -1
  632. package/dist/herdr-start.d.ts.map +0 -1
  633. package/dist/herdr-start.js.map +0 -1
  634. package/dist/init.d.ts +0 -117
  635. package/dist/init.d.ts.map +0 -1
  636. package/dist/init.js +0 -323
  637. package/dist/init.js.map +0 -1
  638. package/dist/intent-application.d.ts +0 -17
  639. package/dist/intent-application.d.ts.map +0 -1
  640. package/dist/intent-application.js +0 -114
  641. package/dist/intent-application.js.map +0 -1
  642. package/dist/intent-control.d.ts +0 -201
  643. package/dist/intent-control.d.ts.map +0 -1
  644. package/dist/intent-control.js +0 -110
  645. package/dist/intent-control.js.map +0 -1
  646. package/dist/intent-scheduling.d.ts +0 -9
  647. package/dist/intent-scheduling.d.ts.map +0 -1
  648. package/dist/intent-scheduling.js +0 -15
  649. package/dist/intent-scheduling.js.map +0 -1
  650. package/dist/learning-connection.d.ts +0 -127
  651. package/dist/learning-connection.d.ts.map +0 -1
  652. package/dist/learning-connection.js +0 -54
  653. package/dist/learning-connection.js.map +0 -1
  654. package/dist/lease-helper.d.ts.map +0 -1
  655. package/dist/lease-helper.js +0 -94
  656. package/dist/lease-helper.js.map +0 -1
  657. package/dist/lease-record.d.ts +0 -90
  658. package/dist/lease-record.d.ts.map +0 -1
  659. package/dist/lease-record.js.map +0 -1
  660. package/dist/ledger-append.d.ts +0 -15
  661. package/dist/ledger-append.d.ts.map +0 -1
  662. package/dist/ledger-append.js +0 -94
  663. package/dist/ledger-append.js.map +0 -1
  664. package/dist/ledger-events.d.ts +0 -131
  665. package/dist/ledger-events.d.ts.map +0 -1
  666. package/dist/ledger-events.js +0 -107
  667. package/dist/ledger-events.js.map +0 -1
  668. package/dist/ledger-identifiers.d.ts.map +0 -1
  669. package/dist/ledger-identifiers.js.map +0 -1
  670. package/dist/ledger-report.d.ts +0 -134
  671. package/dist/ledger-report.d.ts.map +0 -1
  672. package/dist/ledger-report.js +0 -271
  673. package/dist/ledger-report.js.map +0 -1
  674. package/dist/ledger-v3-validation.d.ts +0 -11
  675. package/dist/ledger-v3-validation.d.ts.map +0 -1
  676. package/dist/ledger-v3-validation.js +0 -265
  677. package/dist/ledger-v3-validation.js.map +0 -1
  678. package/dist/ledger.d.ts +0 -242
  679. package/dist/ledger.d.ts.map +0 -1
  680. package/dist/ledger.js +0 -142
  681. package/dist/ledger.js.map +0 -1
  682. package/dist/measured-order.d.ts +0 -249
  683. package/dist/measured-order.d.ts.map +0 -1
  684. package/dist/measured-order.js +0 -309
  685. package/dist/measured-order.js.map +0 -1
  686. package/dist/measured-session.d.ts +0 -97
  687. package/dist/measured-session.d.ts.map +0 -1
  688. package/dist/measured-session.js +0 -134
  689. package/dist/measured-session.js.map +0 -1
  690. package/dist/model-preflight.d.ts +0 -13
  691. package/dist/model-preflight.d.ts.map +0 -1
  692. package/dist/model-preflight.js +0 -29
  693. package/dist/model-preflight.js.map +0 -1
  694. package/dist/native-session-target.d.ts +0 -9
  695. package/dist/native-session-target.d.ts.map +0 -1
  696. package/dist/native-session-target.js +0 -29
  697. package/dist/native-session-target.js.map +0 -1
  698. package/dist/native-session.d.ts +0 -59
  699. package/dist/native-session.d.ts.map +0 -1
  700. package/dist/native-session.js +0 -154
  701. package/dist/native-session.js.map +0 -1
  702. package/dist/order-schedule.d.ts +0 -37
  703. package/dist/order-schedule.d.ts.map +0 -1
  704. package/dist/order-schedule.js +0 -81
  705. package/dist/order-schedule.js.map +0 -1
  706. package/dist/ordinary-children.d.ts +0 -52
  707. package/dist/ordinary-children.d.ts.map +0 -1
  708. package/dist/ordinary-children.js +0 -93
  709. package/dist/ordinary-children.js.map +0 -1
  710. package/dist/pane-reaper.d.ts +0 -111
  711. package/dist/pane-reaper.d.ts.map +0 -1
  712. package/dist/pane-reaper.js +0 -242
  713. package/dist/pane-reaper.js.map +0 -1
  714. package/dist/pi-tools.d.ts.map +0 -1
  715. package/dist/pi-tools.js +0 -21
  716. package/dist/pi-tools.js.map +0 -1
  717. package/dist/producer-ipc-contract.d.ts +0 -29
  718. package/dist/producer-ipc-contract.d.ts.map +0 -1
  719. package/dist/producer-ipc-contract.js +0 -29
  720. package/dist/producer-ipc-contract.js.map +0 -1
  721. package/dist/producer-ipc.d.ts +0 -55
  722. package/dist/producer-ipc.d.ts.map +0 -1
  723. package/dist/producer-ipc.js +0 -143
  724. package/dist/producer-ipc.js.map +0 -1
  725. package/dist/product-files.d.ts +0 -6
  726. package/dist/product-files.d.ts.map +0 -1
  727. package/dist/product-files.js +0 -55
  728. package/dist/product-files.js.map +0 -1
  729. package/dist/progress.d.ts.map +0 -1
  730. package/dist/progress.js.map +0 -1
  731. package/dist/propagation.d.ts +0 -203
  732. package/dist/propagation.d.ts.map +0 -1
  733. package/dist/propagation.js +0 -279
  734. package/dist/propagation.js.map +0 -1
  735. package/dist/refusals.d.ts +0 -16
  736. package/dist/refusals.d.ts.map +0 -1
  737. package/dist/refusals.js +0 -55
  738. package/dist/refusals.js.map +0 -1
  739. package/dist/resolve.d.ts.map +0 -1
  740. package/dist/resolve.js +0 -211
  741. package/dist/resolve.js.map +0 -1
  742. package/dist/resource-budget.d.ts +0 -334
  743. package/dist/resource-budget.d.ts.map +0 -1
  744. package/dist/resource-budget.js +0 -415
  745. package/dist/resource-budget.js.map +0 -1
  746. package/dist/retention-contract.d.ts.map +0 -1
  747. package/dist/retention-contract.js +0 -104
  748. package/dist/retention-contract.js.map +0 -1
  749. package/dist/retention-json.d.ts.map +0 -1
  750. package/dist/retention-json.js.map +0 -1
  751. package/dist/routing-authority.d.ts.map +0 -1
  752. package/dist/routing-authority.js.map +0 -1
  753. package/dist/run-child.d.ts +0 -87
  754. package/dist/run-child.d.ts.map +0 -1
  755. package/dist/run-child.js +0 -248
  756. package/dist/run-child.js.map +0 -1
  757. package/dist/run-herdr.d.ts +0 -119
  758. package/dist/run-herdr.d.ts.map +0 -1
  759. package/dist/run-herdr.js +0 -335
  760. package/dist/run-herdr.js.map +0 -1
  761. package/dist/skill-packages.d.ts +0 -116
  762. package/dist/skill-packages.d.ts.map +0 -1
  763. package/dist/skill-packages.js +0 -295
  764. package/dist/skill-packages.js.map +0 -1
  765. package/dist/skill-resources.d.ts.map +0 -1
  766. package/dist/skill-resources.js +0 -52
  767. package/dist/skill-resources.js.map +0 -1
  768. package/dist/spawn.d.ts.map +0 -1
  769. package/dist/spawn.js.map +0 -1
  770. package/dist/vendor/adoption.d.ts +0 -129
  771. package/dist/vendor/adoption.d.ts.map +0 -1
  772. package/dist/vendor/adoption.js +0 -102
  773. package/dist/vendor/adoption.js.map +0 -1
  774. package/dist/vendor/herdr-pi-lifecycle.d.ts.map +0 -1
  775. package/dist/vendor/herdr-pi-lifecycle.js.map +0 -1
  776. package/dist/work-command.d.ts +0 -32
  777. package/dist/work-command.d.ts.map +0 -1
  778. package/dist/work-command.js +0 -179
  779. package/dist/work-command.js.map +0 -1
  780. package/dist/work-ledger-destination.d.ts +0 -20
  781. package/dist/work-ledger-destination.d.ts.map +0 -1
  782. package/dist/work-ledger-destination.js +0 -131
  783. package/dist/work-ledger-destination.js.map +0 -1
  784. package/dist/work-ledger-json.d.ts +0 -25
  785. package/dist/work-ledger-json.d.ts.map +0 -1
  786. package/dist/work-ledger-json.js +0 -267
  787. package/dist/work-ledger-json.js.map +0 -1
  788. package/dist/work-ledger-occurrences.d.ts +0 -227
  789. package/dist/work-ledger-occurrences.d.ts.map +0 -1
  790. package/dist/work-ledger-occurrences.js +0 -115
  791. package/dist/work-ledger-occurrences.js.map +0 -1
  792. package/dist/work-ledger-projection.d.ts +0 -295
  793. package/dist/work-ledger-projection.d.ts.map +0 -1
  794. package/dist/work-ledger-projection.js +0 -237
  795. package/dist/work-ledger-projection.js.map +0 -1
  796. package/dist/work-ledger-snapshot.d.ts +0 -29
  797. package/dist/work-ledger-snapshot.d.ts.map +0 -1
  798. package/dist/work-ledger-snapshot.js +0 -267
  799. package/dist/work-ledger-snapshot.js.map +0 -1
  800. package/dist/work-ledger-types.d.ts +0 -261
  801. package/dist/work-ledger-types.d.ts.map +0 -1
  802. package/dist/work-ledger-types.js +0 -13
  803. package/dist/work-ledger-types.js.map +0 -1
  804. package/dist/work-ledger-validation.d.ts +0 -14
  805. package/dist/work-ledger-validation.d.ts.map +0 -1
  806. package/dist/work-ledger-validation.js +0 -226
  807. package/dist/work-ledger-validation.js.map +0 -1
  808. package/dist/work-ledger.d.ts +0 -43
  809. package/dist/work-ledger.d.ts.map +0 -1
  810. package/dist/work-ledger.js +0 -225
  811. package/dist/work-ledger.js.map +0 -1
  812. package/dist/work-policy-registry.d.ts +0 -133
  813. package/dist/work-policy-registry.d.ts.map +0 -1
  814. package/dist/work-policy-registry.js +0 -128
  815. package/dist/work-policy-registry.js.map +0 -1
  816. package/dist/work-run.d.ts +0 -56
  817. package/dist/work-run.d.ts.map +0 -1
  818. package/dist/work-run.js +0 -102
  819. package/dist/work-run.js.map +0 -1
  820. package/dist/work-setup.d.ts +0 -40
  821. package/dist/work-setup.d.ts.map +0 -1
  822. package/dist/work-setup.js +0 -174
  823. package/dist/work-setup.js.map +0 -1
  824. package/dist/workflow-fact-id.d.ts +0 -4
  825. package/dist/workflow-fact-id.d.ts.map +0 -1
  826. package/dist/workflow-fact-id.js +0 -14
  827. package/dist/workflow-fact-id.js.map +0 -1
  828. package/dist/workflow-facts.d.ts +0 -34
  829. package/dist/workflow-facts.d.ts.map +0 -1
  830. package/dist/workflow-facts.js +0 -43
  831. package/dist/workflow-facts.js.map +0 -1
  832. package/dist/workspace-lease.d.ts +0 -40
  833. package/dist/workspace-lease.d.ts.map +0 -1
  834. package/dist/workspace-lease.js +0 -333
  835. package/dist/workspace-lease.js.map +0 -1
  836. package/dist/workspace.d.ts +0 -57
  837. package/dist/workspace.d.ts.map +0 -1
  838. package/dist/workspace.js +0 -216
  839. package/dist/workspace.js.map +0 -1
  840. package/extensions/daily-dashboard-session.ts +0 -48
  841. package/extensions/daily-work-session.ts +0 -20
  842. package/extensions/learning-outcome-session.ts +0 -38
  843. package/extensions/learning-session.ts +0 -59
  844. package/extensions/ordinary-runtime.ts +0 -14
  845. package/extensions/primary-shadow.ts +0 -11
  846. package/extensions/work-policy-session.ts +0 -139
  847. package/extensions/work-run-session.ts +0 -75
  848. package/extensions/work-runtime.ts +0 -44
  849. package/extensions/work-session.ts +0 -132
  850. package/src/activity-timeline.ts +0 -133
  851. package/src/approval-prompt.ts +0 -225
  852. package/src/approval-store.ts +0 -386
  853. package/src/approval.ts +0 -399
  854. package/src/capabilities.ts +0 -220
  855. package/src/catalog.ts +0 -306
  856. package/src/check-runner.ts +0 -387
  857. package/src/control-journal.ts +0 -26
  858. package/src/correlation.ts +0 -320
  859. package/src/daily-dashboard-host.ts +0 -105
  860. package/src/daily-panel.ts +0 -80
  861. package/src/daily-view-input.ts +0 -59
  862. package/src/daily-view-render.ts +0 -45
  863. package/src/daily-view.ts +0 -160
  864. package/src/dashboard-cli.ts +0 -340
  865. package/src/dashboard-display-controls.ts +0 -21
  866. package/src/dashboard-handshake.ts +0 -199
  867. package/src/dashboard-harness.ts +0 -37
  868. package/src/dashboard-herdr.ts +0 -363
  869. package/src/dashboard-host-contract.ts +0 -50
  870. package/src/dashboard-host-transport.ts +0 -43
  871. package/src/dashboard-host.ts +0 -244
  872. package/src/dashboard-menu.ts +0 -28
  873. package/src/dashboard-observation.ts +0 -46
  874. package/src/dashboard-projection.ts +0 -390
  875. package/src/dashboard-render.ts +0 -259
  876. package/src/debrief-contract.ts +0 -127
  877. package/src/debrief-fixture.ts +0 -29
  878. package/src/debrief-host.ts +0 -53
  879. package/src/debrief-render.ts +0 -49
  880. package/src/debrief.ts +0 -198
  881. package/src/definitions.ts +0 -211
  882. package/src/delegate-types.ts +0 -154
  883. package/src/delegate.ts +0 -348
  884. package/src/delegation-approval.ts +0 -126
  885. package/src/dispatch-control.ts +0 -81
  886. package/src/effect-profile-runtime.ts +0 -46
  887. package/src/effect-profile.ts +0 -129
  888. package/src/execution-retention.ts +0 -230
  889. package/src/executor.ts +0 -123
  890. package/src/experiment-contract.ts +0 -66
  891. package/src/experiment-state.ts +0 -44
  892. package/src/experiment-store.ts +0 -98
  893. package/src/experiment.ts +0 -236
  894. package/src/factory-contract.ts +0 -47
  895. package/src/factory-migration.ts +0 -29
  896. package/src/factory-order.ts +0 -56
  897. package/src/factory-registry.ts +0 -60
  898. package/src/fanout.ts +0 -106
  899. package/src/file-lock.ts +0 -178
  900. package/src/finalization.ts +0 -79
  901. package/src/git-identity.ts +0 -56
  902. package/src/grant-env.ts +0 -221
  903. package/src/grant-store.ts +0 -235
  904. package/src/herdr-cli.ts +0 -125
  905. package/src/herdr-pi-lifecycle.ts +0 -21
  906. package/src/herdr-poll.ts +0 -253
  907. package/src/herdr-stage.ts +0 -55
  908. package/src/init.ts +0 -389
  909. package/src/intent-application.ts +0 -91
  910. package/src/intent-control.ts +0 -107
  911. package/src/intent-scheduling.ts +0 -14
  912. package/src/learning-connection.ts +0 -70
  913. package/src/lease-helper.ts +0 -97
  914. package/src/lease-record.ts +0 -131
  915. package/src/ledger-append.ts +0 -72
  916. package/src/ledger-events.ts +0 -226
  917. package/src/ledger-report.ts +0 -357
  918. package/src/ledger-v3-validation.ts +0 -266
  919. package/src/ledger.ts +0 -369
  920. package/src/measured-order.ts +0 -72
  921. package/src/measured-session.ts +0 -70
  922. package/src/model-preflight.ts +0 -41
  923. package/src/native-session-target.ts +0 -23
  924. package/src/native-session.ts +0 -139
  925. package/src/order-schedule.ts +0 -42
  926. package/src/ordinary-children.ts +0 -59
  927. package/src/pane-reaper.ts +0 -270
  928. package/src/pi-tools.ts +0 -25
  929. package/src/producer-ipc-contract.ts +0 -26
  930. package/src/producer-ipc.ts +0 -107
  931. package/src/product-files.ts +0 -34
  932. package/src/propagation.ts +0 -333
  933. package/src/refusals.ts +0 -70
  934. package/src/resolve.ts +0 -267
  935. package/src/resource-budget.ts +0 -349
  936. package/src/retention-contract.ts +0 -84
  937. package/src/retention-json.ts +0 -20
  938. package/src/run-child.ts +0 -303
  939. package/src/run-herdr.ts +0 -386
  940. package/src/skill-packages.ts +0 -314
  941. package/src/skill-resources.ts +0 -48
  942. package/src/vendor/adoption.ts +0 -109
  943. package/src/work-command.ts +0 -197
  944. package/src/work-ledger-destination.ts +0 -113
  945. package/src/work-ledger-json.ts +0 -228
  946. package/src/work-ledger-occurrences.ts +0 -99
  947. package/src/work-ledger-projection.ts +0 -262
  948. package/src/work-ledger-snapshot.ts +0 -246
  949. package/src/work-ledger-types.ts +0 -229
  950. package/src/work-ledger-validation.ts +0 -174
  951. package/src/work-ledger.ts +0 -186
  952. package/src/work-policy-registry.ts +0 -81
  953. package/src/work-run.ts +0 -79
  954. package/src/work-setup.ts +0 -141
  955. package/src/workflow-fact-id.ts +0 -16
  956. package/src/workflow-facts.ts +0 -65
  957. package/src/workspace-lease.ts +0 -363
  958. package/src/workspace.ts +0 -308
  959. /package/contracts/{ledger/v3 → ledger-record/v1}/fixtures/capability-decision.json +0 -0
  960. /package/contracts/{ledger/v3 → ledger-record/v1}/fixtures/workspace-lease.json +0 -0
  961. /package/dist/{herdr-name.d.ts → executors/herdr-name.d.ts} +0 -0
  962. /package/dist/{herdr-name.js → executors/herdr-name.js} +0 -0
  963. /package/dist/{herdr-pi-lifecycle.d.ts → executors/herdr-pi-lifecycle.d.ts} +0 -0
  964. /package/dist/{herdr-start.d.ts → executors/herdr-start.d.ts} +0 -0
  965. /package/dist/{herdr-start.js → executors/herdr-start.js} +0 -0
  966. /package/dist/{vendor → executors/vendor}/herdr-pi-lifecycle.d.ts +0 -0
  967. /package/dist/{vendor → executors/vendor}/herdr-pi-lifecycle.js +0 -0
  968. /package/dist/{file-lock.d.ts → governance/file-lock.d.ts} +0 -0
  969. /package/dist/{finalization.d.ts → governance/finalization.d.ts} +0 -0
  970. /package/dist/{finalization.js → governance/finalization.js} +0 -0
  971. /package/dist/{lease-helper.d.ts → governance/lease-helper.d.ts} +0 -0
  972. /package/dist/{lease-record.js → governance/lease-record.js} +0 -0
  973. /package/dist/{retention-contract.d.ts → governance/retention-contract.d.ts} +0 -0
  974. /package/dist/{retention-json.d.ts → governance/retention-json.d.ts} +0 -0
  975. /package/dist/{retention-json.js → governance/retention-json.js} +0 -0
  976. /package/dist/{chain.d.ts → kernel/chain.d.ts} +0 -0
  977. /package/dist/{chain.js → kernel/chain.js} +0 -0
  978. /package/dist/{correlation.d.ts → kernel/correlation.d.ts} +0 -0
  979. /package/dist/{definitions.d.ts → kernel/definitions.d.ts} +0 -0
  980. /package/dist/{delegate.d.ts → kernel/delegate.d.ts} +0 -0
  981. /package/dist/{delegation-approval.d.ts → kernel/delegation-approval.d.ts} +0 -0
  982. /package/dist/{execution-id.d.ts → kernel/execution-id.d.ts} +0 -0
  983. /package/dist/{execution-id.js → kernel/execution-id.js} +0 -0
  984. /package/dist/{fanout.d.ts → kernel/fanout.d.ts} +0 -0
  985. /package/dist/{ledger-identifiers.d.ts → kernel/ledger-identifiers.d.ts} +0 -0
  986. /package/dist/{ledger-identifiers.js → kernel/ledger-identifiers.js} +0 -0
  987. /package/dist/{pi-tools.d.ts → kernel/pi-tools.d.ts} +0 -0
  988. /package/dist/{progress.d.ts → kernel/progress.d.ts} +0 -0
  989. /package/dist/{progress.js → kernel/progress.js} +0 -0
  990. /package/dist/{resolve.d.ts → kernel/resolve.d.ts} +0 -0
  991. /package/dist/{routing-authority.d.ts → kernel/routing-authority.d.ts} +0 -0
  992. /package/dist/{routing-authority.js → kernel/routing-authority.js} +0 -0
  993. /package/dist/{skill-resources.d.ts → kernel/skill-resources.d.ts} +0 -0
  994. /package/dist/{spawn.d.ts → kernel/spawn.d.ts} +0 -0
  995. /package/dist/{spawn.js → kernel/spawn.js} +0 -0
  996. /package/dist/{dashboard-render.d.ts → products/dashboard-render.d.ts} +0 -0
  997. /package/src/{herdr-name.ts → executors/herdr-name.ts} +0 -0
  998. /package/src/{herdr-start.ts → executors/herdr-start.ts} +0 -0
  999. /package/src/{vendor → executors/vendor}/herdr-pi-lifecycle.ts +0 -0
  1000. /package/src/{chain.ts → kernel/chain.ts} +0 -0
  1001. /package/src/{execution-id.ts → kernel/execution-id.ts} +0 -0
  1002. /package/src/{ledger-identifiers.ts → kernel/ledger-identifiers.ts} +0 -0
  1003. /package/src/{progress.ts → kernel/progress.ts} +0 -0
  1004. /package/src/{routing-authority.ts → kernel/routing-authority.ts} +0 -0
  1005. /package/src/{spawn.ts → kernel/spawn.ts} +0 -0
@@ -1,235 +0,0 @@
1
- /**
2
- * The init choice for a directory, stored **outside** it: its grant and, in v2, explicit project-ledger
3
- * consent.
4
- *
5
- * `PI_GRANTS_GRANT` and `PI_GRANTS_LEDGER` remain the propagation channel to children — a parent writes them
6
- * and every child inherits them. The store is a root-session source only, so an operator does not have to
7
- * `source` a file and restart pi after making the project choice.
8
- *
9
- * **Outside the workspace, and that is the whole design.** A grant is a ceiling; a ceiling a governed child
10
- * can rewrite is not a ceiling. `<cwd>/.pi/grants.env` is writable by any child holding `tool:write`, so
11
- * storing the live grant there would let a child widen the *next* session's ceiling — ADR-0014's
12
- * self-defeating case verbatim, which is why persisted approvals were moved out of the workspace in the
13
- * first place. This reuses that pattern exactly: `$PI_CODING_AGENT_DIR/grants/<slug>-<hash>.json`, keyed by
14
- * the directory, unwritable by a narrowed child because a narrowed child holds no write access to `$HOME`.
15
- *
16
- * **It does not defend against a child holding `bash`** (ADR-0012). Nothing here does.
17
- *
18
- * `.pi/grants.env` is still written by `init` and is still worth committing — it is the *reviewable record*
19
- * of the decision, diffable in a PR. It is simply no longer the thing the enforcer reads.
20
- */
21
-
22
- import { createHash } from "node:crypto";
23
- import { readFileSync } from "node:fs";
24
- import { mkdir, readFile, rename, rm, unlink, writeFile } from "node:fs/promises";
25
- import { randomUUID } from "node:crypto";
26
- import { homedir } from "node:os";
27
- import { basename, dirname, join, resolve } from "node:path";
28
- import { withFileLock, LockTimeoutError } from "./file-lock.ts";
29
- import type { Capability } from "./resolve.ts";
30
-
31
- interface GrantFileV1 {
32
- version: 1;
33
- /** The directory this grant is for. Checked on read — an entry copied elsewhere is refused (R-27). */
34
- cwd: string;
35
- grant: Capability[];
36
- /** When `/grants init` wrote it. Informational; nothing expires. */
37
- writtenAt: string;
38
- }
39
-
40
- interface GrantFileV2 {
41
- version: 2;
42
- cwd: string;
43
- grant: Capability[];
44
- /** Explicit consent from ADR-0037's `/grants init`; never inferred from a legacy file merely existing. */
45
- projectLedger: true;
46
- writtenAt: string;
47
- }
48
-
49
- export interface StoredGrant {
50
- grant: Capability[];
51
- /** Whether a root session defaults to `<cwd>/.pi/grants.jsonl`. False for every legacy v1 store. */
52
- projectLedger: boolean;
53
- }
54
-
55
- export type GrantStoreRefusalReason = "malformed" | "unsupported-version" | "unreadable" | "wrong-cwd";
56
- export type StoredGrantState =
57
- | { state: "absent" }
58
- | { state: "valid"; stored: StoredGrant }
59
- | { state: "refuse"; reason: GrantStoreRefusalReason };
60
-
61
- export interface SaveGrantOptions {
62
- projectLedger?: boolean;
63
- }
64
-
65
- /** `$PI_CODING_AGENT_DIR`, or pi's default. Same resolution as the approval store. */
66
- function agentDir(): string {
67
- return process.env.PI_CODING_AGENT_DIR ?? join(homedir(), ".pi", "agent");
68
- }
69
-
70
- /**
71
- * Where this directory's grant lives.
72
- *
73
- * Slug plus a 64-bit hash, exactly as `approvalsPath` does it and for the same two reasons: the basename
74
- * keeps the directory legible to a human reading it, and the hash is what makes it unambiguous, since two
75
- * checkouts can share a basename.
76
- */
77
- export function grantStorePath(cwd: string): string {
78
- const slug = (basename(cwd) || "root").replace(/[^A-Za-z0-9._-]/g, "_").slice(0, 40);
79
- const hash = createHash("sha256").update(cwd, "utf8").digest("hex").slice(0, 16);
80
- return join(agentDir(), "grants", `${slug}-${hash}.json`);
81
- }
82
-
83
- /**
84
- * Parse a store file's text into its versioned project choice, or null.
85
- *
86
- * Split out from the readers so the **one** validation lives in one place: both the sync and async paths
87
- * must agree, and two parsers is how they come to disagree.
88
- *
89
- * Rejects every doubt at this parser boundary — it never constructs a partial ceiling. The session currently
90
- * treats absent and invalid stores alike (R-175), so do not call that wider behavior fail-closed. The `cwd`
91
- * check is R-27's: a copied file describes a directory nobody authorised it for.
92
- */
93
- export function parseStoredGrantState(text: string, cwd: string): StoredGrantState {
94
- let parsed: { version?: unknown; cwd?: unknown; grant?: unknown; projectLedger?: unknown };
95
- try {
96
- parsed = JSON.parse(text) as typeof parsed;
97
- } catch {
98
- return { state: "refuse", reason: "malformed" };
99
- }
100
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
101
- return { state: "refuse", reason: "malformed" };
102
- }
103
- if (parsed.version !== 1 && parsed.version !== 2) {
104
- return { state: "refuse", reason: "unsupported-version" };
105
- }
106
- if (parsed.cwd !== cwd) return { state: "refuse", reason: "wrong-cwd" };
107
- if (!Array.isArray(parsed.grant)) return { state: "refuse", reason: "malformed" };
108
- if (!parsed.grant.every((c) => typeof c === "string" && c.length > 0)) {
109
- return { state: "refuse", reason: "malformed" };
110
- }
111
- if (parsed.version === 2 && parsed.projectLedger !== true) {
112
- return { state: "refuse", reason: "malformed" };
113
- }
114
- return {
115
- state: "valid",
116
- stored: { grant: parsed.grant as Capability[], projectLedger: parsed.version === 2 },
117
- };
118
- }
119
-
120
- export function parseStoredGrant(text: string, cwd: string): StoredGrant | null {
121
- const result = parseStoredGrantState(text, cwd);
122
- return result.state === "valid" ? result.stored : null;
123
- }
124
-
125
- /** Compatibility view for callers that need only the capability ceiling. */
126
- export function parseGrantFile(text: string, cwd: string): Capability[] | null {
127
- return parseStoredGrant(text, cwd)?.grant ?? null;
128
- }
129
-
130
- /**
131
- * Read this directory's stored grant, synchronously.
132
- *
133
- * **Sync on purpose, and this is the constraint that shapes the feature.** Whether `delegate` is registered
134
- * at all is decided when the extension factory runs (S-5: a session without `tool:delegate` must not be
135
- * offered the tool), and that is before any `await` is possible. An async read would resolve after the
136
- * decision it exists to inform, so the store would silently fail to grant delegation — the exact class of
137
- * defect R-38 and R-39 were.
138
- */
139
- export function loadStoredGrantStateSync(cwd: string): StoredGrantState {
140
- try {
141
- return parseStoredGrantState(readFileSync(grantStorePath(cwd), "utf8"), cwd);
142
- } catch (error) {
143
- return (error as NodeJS.ErrnoException).code === "ENOENT"
144
- ? { state: "absent" }
145
- : { state: "refuse", reason: "unreadable" };
146
- }
147
- }
148
-
149
- export function loadStoredGrantSync(cwd: string): StoredGrant | null {
150
- const result = loadStoredGrantStateSync(cwd);
151
- return result.state === "valid" ? result.stored : null;
152
- }
153
-
154
- export function loadGrantSync(cwd: string): Capability[] | null {
155
- return loadStoredGrantSync(cwd)?.grant ?? null;
156
- }
157
-
158
- /** Async twin, for callers that already have one. Same parser, so they cannot disagree. */
159
- export async function loadStoredGrantState(cwd: string): Promise<StoredGrantState> {
160
- try {
161
- return parseStoredGrantState(await readFile(grantStorePath(cwd), "utf8"), cwd);
162
- } catch (error) {
163
- return (error as NodeJS.ErrnoException).code === "ENOENT"
164
- ? { state: "absent" }
165
- : { state: "refuse", reason: "unreadable" };
166
- }
167
- }
168
-
169
- export async function loadStoredGrant(cwd: string): Promise<StoredGrant | null> {
170
- const result = await loadStoredGrantState(cwd);
171
- return result.state === "valid" ? result.stored : null;
172
- }
173
-
174
- export async function loadGrant(cwd: string): Promise<Capability[] | null> {
175
- return (await loadStoredGrant(cwd))?.grant ?? null;
176
- }
177
-
178
- /** The one project-local default ADR-0037 binds to an explicit v2 init choice. */
179
- export function projectLedgerPath(cwd: string): string {
180
- return resolve(cwd, ".pi", "grants.jsonl");
181
- }
182
-
183
- export type SaveOutcome = "saved" | "failed" | "busy";
184
-
185
- /**
186
- * Write this directory's grant and optional project-ledger consent as one atomic choice.
187
- *
188
- * Locked with the same lock the ledger and the approval store use, for the same reason: two sessions in one
189
- * directory running `/grants init` concurrently must not interleave. A lock this cannot take yields `busy`
190
- * and changes nothing — the caller reports it and the operator retries, which is the honest outcome for a
191
- * write that never looked at the file (R-68).
192
- *
193
- * `wx` on the temp file refuses to follow a pre-existing symlink, and `rename` is atomic within a
194
- * filesystem, so a reader never sees a half-written grant. Both copied from `writeFileSafely`, deliberately
195
- * — a second, subtly different atomic-write is how the two come to disagree about what "safe" meant.
196
- */
197
- export async function saveGrant(
198
- cwd: string,
199
- grant: Capability[],
200
- options: SaveGrantOptions = {},
201
- ): Promise<SaveOutcome> {
202
- const path = grantStorePath(cwd);
203
- const common = { cwd, grant: [...grant].sort(), writtenAt: new Date().toISOString() };
204
- const file: GrantFileV1 | GrantFileV2 = options.projectLedger
205
- ? { version: 2, ...common, projectLedger: true }
206
- : { version: 1, ...common };
207
- try {
208
- await mkdir(dirname(path), { recursive: true });
209
- return await withFileLock(path, "grant store", async () => {
210
- const temp = `${path}.${process.pid}.${randomUUID()}.tmp`;
211
- try {
212
- await writeFile(temp, `${JSON.stringify(file, null, 2)}\n`, { encoding: "utf8", flag: "wx" });
213
- await rename(temp, path);
214
- return "saved" as const;
215
- } catch {
216
- await unlink(temp).catch(() => undefined);
217
- return "failed" as const;
218
- }
219
- });
220
- } catch (error) {
221
- return error instanceof LockTimeoutError ? "busy" : "failed";
222
- }
223
- }
224
-
225
- /** Remove this directory's stored grant. True when a file was there to remove. */
226
- export async function clearGrant(cwd: string): Promise<boolean> {
227
- const path = grantStorePath(cwd);
228
- try {
229
- await readFile(path, "utf8");
230
- } catch {
231
- return false;
232
- }
233
- await rm(path, { force: true }).catch(() => undefined);
234
- return true;
235
- }
package/src/herdr-cli.ts DELETED
@@ -1,125 +0,0 @@
1
- /**
2
- * Talking to herdr: one command, one JSON envelope, plus the two questions ADR-0031 needs answered.
3
- *
4
- * Lifted out of `src/run-herdr.ts`, which was at 357 of the 400-line ceiling and gains output polling under
5
- * ADR-0032. But the split is not only about lines: **the probe is not an executor concern**. It runs at session
6
- * start, before any delegation exists, to decide *which* executor a session will use — so leaving it inside the
7
- * herdr executor would mean the session imported the thing it was deciding whether to use.
8
- *
9
- * Every rule here is tested against an injected `exec`, so the suite stays fast, pi-free and herdr-free. The
10
- * facts the fakes reproduce were measured against real herdr 0.7.5 (`docs/probes/g16-herdr`).
11
- */
12
-
13
- import { execFile } from "node:child_process";
14
-
15
- /** One herdr CLI invocation. Injectable so every rule below is testable without herdr installed. */
16
- export type HerdrExec = (args: string[]) => Promise<{ code: number | null; stdout: string; stderr: string }>;
17
-
18
- export const defaultExec: HerdrExec = (args) =>
19
- new Promise((settle) => {
20
- execFile("herdr", args, { maxBuffer: 32 * 1024 * 1024 }, (error, stdout, stderr) => {
21
- const raw = (error as { code?: unknown } | null)?.code;
22
- const code = typeof raw === "number" ? raw : error ? 1 : 0;
23
- // **A string `code` is a spawn failure, and it used to be thrown away.** `ENOENT` — herdr not installed —
24
- // arrives as `code: "ENOENT"`, so the numeric test failed, the message was dropped, and an operator with
25
- // `PI_GRANTS_HERDR=1` on a machine without herdr was told *"herdr is not answering (unparseable herdr
26
- // reply: (no output))"* rather than that the binary is missing. Rule 8 wants the loud version, and this is
27
- // the first diagnostic such an operator meets.
28
- const spawnFailure = typeof raw === "string" ? `herdr could not be run (${raw}): ${error?.message ?? ""}` : "";
29
- settle({ code, stdout: String(stdout), stderr: spawnFailure || String(stderr) });
30
- });
31
- });
32
-
33
- /**
34
- * Parse herdr's JSON envelope. Every command replies `{id, result}` or `{id, error:{code,message}}`.
35
- *
36
- * `stderr` is folded into the message because the first end-to-end run failed with an EMPTY stdout and the
37
- * real reason on stderr, producing the useless diagnostic "unparseable herdr reply: ". A wrapper that
38
- * hides the substrate's own error message costs more time than it saves.
39
- */
40
- export function parseReply(reply: { stdout: string; stderr: string }): { result?: Record<string, unknown>; error?: string } {
41
- try {
42
- const parsed = JSON.parse(reply.stdout) as { result?: Record<string, unknown>; error?: { message?: string; code?: string } };
43
- if (parsed.error) return { error: parsed.error.message ?? parsed.error.code ?? "herdr reported an error" };
44
- return { result: parsed.result };
45
- } catch {
46
- // A non-JSON reply is a herdr-version or PATH problem, not a governance decision. Surfaced as a spawn
47
- // error so the caller reports "could not start" rather than "the child produced nothing".
48
- const detail = [reply.stdout.trim(), reply.stderr.trim()].filter((t) => t.length > 0).join(" | ");
49
- return { error: `unparseable herdr reply: ${detail.slice(0, 300) || "(no output)"}` };
50
- }
51
- }
52
-
53
- /** Bound on the session-start probe. Short: it sits in front of the operator's first prompt. */
54
- export const PROBE_TIMEOUT_MS = 2000;
55
-
56
- export interface HerdrProbe {
57
- ok: boolean;
58
- /** herdr's own words when it is not reachable. Carried so the disclosure line can name the reason. */
59
- error?: string;
60
- }
61
-
62
- /**
63
- * Is there a herdr server that will answer right now? — ADR-0031's selection input.
64
- *
65
- * **`tab list`, not `which herdr`.** ADR-0031 rejects `PATH` detection as option C by name: a binary on `PATH`
66
- * with no server behind it would make every delegation fail at `tab create`, on a path the operator never
67
- * chose, and the diagnostic would arrive at the first delegation rather than at startup. Only a parsed
68
- * `result` envelope counts as reachable; an `error` envelope, a non-JSON reply, a timeout and a throwing
69
- * `exec` are all "not reachable" with the reason preserved.
70
- *
71
- * **Zero tabs is a successful answer**, deliberately: a fresh herdr with nothing open is reachable.
72
- *
73
- * Never throws. A probe that threw out of `session_start` would cancel every control after it, which is
74
- * R-60's shape exactly — and this one runs *before* the line that discloses what it decided.
75
- */
76
- export async function probeHerdr(options: { exec?: HerdrExec; timeoutMs?: number } = {}): Promise<HerdrProbe> {
77
- const exec = options.exec ?? defaultExec;
78
- const timeoutMs = options.timeoutMs ?? PROBE_TIMEOUT_MS;
79
-
80
- let timer: NodeJS.Timeout | undefined;
81
- try {
82
- return await Promise.race<HerdrProbe>([
83
- exec(["tab", "list"]).then((reply) => {
84
- const parsed = parseReply(reply);
85
- return parsed.error ? { ok: false, error: parsed.error } : { ok: true };
86
- }),
87
- new Promise<HerdrProbe>((settle) => {
88
- timer = setTimeout(() => settle({ ok: false, error: `probe timed out after ${timeoutMs}ms` }), timeoutMs);
89
- }),
90
- ]);
91
- } catch (error) {
92
- return { ok: false, error: String(error) };
93
- } finally {
94
- // Cleared whichever branch won, so a fast probe does not hold the event loop open for the timeout's
95
- // remainder — which would add up to two seconds to every `node --test` run of this file.
96
- if (timer) clearTimeout(timer);
97
- }
98
- }
99
-
100
- /** herdr's own variable, set in every pane it creates. Measured 2026-08-17; documented nowhere. */
101
- export const ENV_PARENT_WORKSPACE = "HERDR_WORKSPACE_ID";
102
-
103
- /** The operator's explicit override. Defined here because this is the only module that reads it. */
104
- export const ENV_HERDR_WORKSPACE = "PI_GRANTS_HERDR_WORKSPACE";
105
-
106
- /**
107
- * Which herdr workspace a governed child's pane belongs in.
108
- *
109
- * **Defaults to the parent's own workspace.** herdr tells a pane which workspace it is in
110
- * (`HERDR_WORKSPACE_ID`, alongside `HERDR_TAB_ID` and `HERDR_PANE_ID`), and a child placed in a *different*
111
- * workspace from the pi session that spawned it turns "switch between them" into a workspace hop — which is
112
- * the entire feature ADR-0032 exists to deliver. The previous behaviour was "omitted lets herdr choose",
113
- * which is that failure by default on any machine with more than one workspace.
114
- *
115
- * `PI_GRANTS_HERDR_WORKSPACE` still wins: it is the operator saying so explicitly, and an explicit answer
116
- * beating an inference is this package's standing rule (ADR-0030 says it about the grant itself).
117
- *
118
- * Blank is treated as absent rather than passed through — `--workspace ""` is not a workspace, and it would
119
- * fail `tab create` on a path nobody chose.
120
- */
121
- export function resolveWorkspace(env: NodeJS.ProcessEnv): string | undefined {
122
- const explicit = env[ENV_HERDR_WORKSPACE]?.trim();
123
- if (explicit) return explicit;
124
- return env[ENV_PARENT_WORKSPACE]?.trim() || undefined;
125
- }
@@ -1,21 +0,0 @@
1
- /** Locate the pinned, lifecycle-only Herdr Pi integration shipped with this package. */
2
- import { existsSync } from "node:fs";
3
- import { fileURLToPath } from "node:url";
4
-
5
- /**
6
- * Explicit `-e` survives Pi's `--no-extensions`; only this audited source is loaded for a Herdr child.
7
- *
8
- * Source-loaded tests resolve the adjacent vendor file. Installed builds resolve the packed `src/` copy,
9
- * deliberately rather than discovering an operator's extension directory.
10
- */
11
- export function bundledHerdrPiLifecycleExtension(): string {
12
- const candidates = [
13
- new URL("./vendor/herdr-pi-lifecycle.ts", import.meta.url),
14
- new URL("../src/vendor/herdr-pi-lifecycle.ts", import.meta.url),
15
- ];
16
- for (const candidate of candidates) {
17
- const path = fileURLToPath(candidate);
18
- if (existsSync(path)) return path;
19
- }
20
- throw new Error("the bundled Herdr Pi lifecycle integration is missing from this package");
21
- }
package/src/herdr-poll.ts DELETED
@@ -1,253 +0,0 @@
1
- /**
2
- * Waiting for a herdr agent to settle, and reading what it printed on the way.
3
- *
4
- * Split out of `src/run-herdr.ts` when that file hit **404 of the 400-line ceiling** adding ADR-0032's output
5
- * polling. The seam was named in the plan before it was needed, and it is a real one: this module is about
6
- * *observing* an agent, `run-herdr.ts` is about *starting and cleaning up after* one. Nothing here creates or
7
- * destroys anything.
8
- *
9
- * The two facts it is built on were measured against real herdr 0.7.5 (`docs/probes/g16-herdr`) and both are
10
- * counter-intuitive enough to be worth the module comment: `agent wait --until idle` matches the state the
11
- * agent was **already** in, and `agent read` is the one command that does **not** return a JSON envelope.
12
- */
13
-
14
- import { parseReply, type HerdrExec } from "./herdr-cli.ts";
15
- import { herdrSessionReference } from "./native-session.ts";
16
-
17
- /**
18
- * What `waitForSettled` needs from a run request.
19
- *
20
- * Declared here rather than importing `HerdrRunRequest`, which would make the two modules mutually dependent
21
- * for no benefit. `HerdrRunRequest` satisfies it structurally, so the call site needs no adapter.
22
- */
23
- export interface PollTarget {
24
- /** herdr agent name. */
25
- name: string;
26
- nativePaneId?: string;
27
- onSessionReference?: (reference: NonNullable<ReturnType<typeof herdrSessionReference>>) => void;
28
- signal?: AbortSignal;
29
- /**
30
- * The pane's last few lines, re-reported on every poll — a SNAPSHOT, not a stream (ADR-0032).
31
- *
32
- * The consumer must **replace** what it holds rather than append. `agent read` returns a snapshot of a
33
- * bounded terminal, and treating it as append-only is what produced an 89,000× amplification; see
34
- * `tailLines`.
35
- */
36
- onSnapshot?: (lines: string[]) => void;
37
- /** Reuses already-requested pane bytes; never adds an observation-only RPC. */
38
- onObservation?: (bytes: Uint8Array) => void;
39
- /** How many lines the display wants. Bounds the per-poll cost regardless of how big the pane is. */
40
- snapshotLines?: number;
41
- /** Poll cadence override. Exists so tests do not wait `POLL_INTERVAL_MS` per state transition. */
42
- pollIntervalMs?: number;
43
- }
44
-
45
- /** Statuses herdr reports for a settled agent. `blocked` counts: it is waiting for a human, not working. */
46
- const TERMINAL = new Set(["idle", "done", "blocked"]);
47
-
48
- /** The pre-prompt sequence from the native start reply; absent is unknown, never zero. */
49
- export function observeHerdrSession(agent: unknown, pane: string | undefined, sink: PollTarget["onSessionReference"]): void {
50
- if (!pane || !sink) return;
51
- try { const reference = herdrSessionReference(agent, pane); if (reference) sink(reference); } catch { /* optional observation */ }
52
- }
53
-
54
- export function seqOf(result: Record<string, unknown> | undefined): number {
55
- const agent = (result?.agent ?? {}) as { state_change_seq?: number };
56
- return typeof agent.state_change_seq === "number" ? agent.state_change_seq : -1;
57
- }
58
-
59
- /** How often to poll `agent get` while waiting for the child to settle. */
60
- export const POLL_INTERVAL_MS = 750;
61
- /**
62
- * A prompt accepted from a terminal state must produce an observable lifecycle change promptly.
63
- *
64
- * Herdr 0.8's `agent prompt --wait` documents this same five-second bound. We retain polling because it
65
- * supplies the bounded live pane snapshots, but refuse rather than holding a parent for twenty minutes when
66
- * the only reported state remains the pre-prompt terminal state. That is a detector/integration failure, not
67
- * evidence that a child settled.
68
- */
69
- export const FRESH_LIFECYCLE_TIMEOUT_MS = 5_000;
70
- /** Lines of pane tail reported per poll. Matches the status block's own tail, so nothing is fetched unused. */
71
- export const DEFAULT_SNAPSHOT_LINES = 3;
72
-
73
- /**
74
- * Wait for the child to settle, without accepting the state it was already in.
75
- *
76
- * **R-33, measured.** `herdr agent wait --until idle` called right after `agent prompt` returned
77
- * *immediately*, matching the agent's **pre-existing** idle state with `state_change_seq` unchanged — a
78
- * reply indistinguishable from a completed run. For fan-out that is not an inconvenience but a
79
- * correctness bug: an orchestrator would "collect" N children that never ran and merge N empty results
80
- * into a confident summary (R-03 with a new cause).
81
- *
82
- * So this polls `agent get` and requires **both** that the status is terminal **and** that
83
- * `state_change_seq` has advanced past the value observed before prompting. `agent wait` is deliberately
84
- * not used at all: its contract cannot express "settled *after* this point".
85
- */
86
- /**
87
- * Establish the bundled Pi lifecycle reporter's idle baseline before prompt dispatch.
88
- *
89
- * `screen_detection_skipped` is Herdr's reported fact that a full lifecycle authority owns this pane.
90
- * Waiting for it prevents the reporter's asynchronously queued initial idle report from becoming a
91
- * post-prompt sequence advance. This is not completion: no prompt has been sent at this point.
92
- */
93
- export async function waitForLifecycleBaseline(
94
- exec: HerdrExec,
95
- request: PollTarget,
96
- deadline: number,
97
- ): Promise<{ before?: number; aborted?: boolean; spawnError?: string }> {
98
- const interval = request.pollIntervalMs ?? POLL_INTERVAL_MS;
99
- for (;;) {
100
- if (request.signal?.aborted) return { aborted: true };
101
- if (Date.now() >= deadline) return { spawnError: "Herdr did not activate the bundled Pi lifecycle reporter before prompt dispatch" };
102
- const reply = parseReply(await exec(["agent", "get", request.name]));
103
- if (reply.error) return { spawnError: `herdr agent get failed: ${reply.error}` };
104
- const agent = (reply.result?.agent ?? reply.result ?? {}) as { agent_status?: string; state_change_seq?: number; screen_detection_skipped?: boolean };
105
- const seq = typeof agent.state_change_seq === "number" ? agent.state_change_seq : -1;
106
- if (agent.screen_detection_skipped === true && agent.agent_status && TERMINAL.has(agent.agent_status) && seq >= 0) return { before: seq };
107
- await new Promise<void>((resolve) => setTimeout(resolve, Math.min(interval, Math.max(0, deadline - Date.now()))));
108
- }
109
- }
110
-
111
- export async function waitForSettled(
112
- exec: HerdrExec,
113
- request: PollTarget,
114
- before: number,
115
- deadline: number,
116
- maxOutputBytes: number,
117
- ): Promise<{ status?: string; timedOut?: boolean; aborted?: boolean; spawnError?: string }> {
118
- const interval = request.pollIntervalMs ?? POLL_INTERVAL_MS;
119
- // ADR-0032. The pane is read on every poll so the parent can show what the child is doing, rather than the
120
- // one word `delegate` for up to twenty minutes by default.
121
- //
122
- // No cross-poll state is kept, deliberately: the previous design remembered what it had reported so it could
123
- // send a diff, and that is what broke — see `tailLines`. A snapshot needs no memory.
124
- const keep = request.snapshotLines ?? DEFAULT_SNAPSHOT_LINES;
125
- let staleTerminalSince: number | undefined;
126
-
127
- for (;;) {
128
- if (request.signal?.aborted) return { aborted: true };
129
- if (Date.now() >= deadline) return { timedOut: true };
130
-
131
- const reply = parseReply(await exec(["agent", "get", request.name]));
132
- if (reply.error) return { spawnError: `herdr agent get failed: ${reply.error}` };
133
-
134
- const agent = (reply.result?.agent ?? reply.result ?? {}) as { agent_status?: string; state_change_seq?: number };
135
- observeHerdrSession(agent, request.nativePaneId, request.onSessionReference);
136
- const status = agent.agent_status;
137
- const seq = typeof agent.state_change_seq === "number" ? agent.state_change_seq : -1;
138
-
139
- if (request.onSnapshot) {
140
- // Read BEFORE the terminal check returns, so a child that settles on this iteration still has its last
141
- // output shown. `readFailed` is passed so a failed read renders as such instead of silently freezing the
142
- // block on the previous frame — and, crucially, is never mistaken for the child's output.
143
- const read = await readPane(exec, request.name, maxOutputBytes);
144
- if (!read.readFailed) { try { request.onObservation?.(Buffer.from(read.text)); } catch { /* observation only */ } }
145
- try {
146
- request.onSnapshot(read.readFailed ? ["[pane could not be read]"] : tailLines(read.text, keep));
147
- } catch {
148
- /* display only — a renderer must not break a governed run */
149
- }
150
- }
151
-
152
- if (status && TERMINAL.has(status)) {
153
- if (seq > before) return { status };
154
- // Do not turn this pane's text into a completion signal. A known agent whose screen rule misses a new
155
- // UI shape falls back to idle, precisely the state R-33 says is unsafe to accept. A stable stale
156
- // terminal state for this bounded interval is instead a loud compatibility refusal (issue #43).
157
- staleTerminalSince ??= Date.now();
158
- if (Date.now() - staleTerminalSince >= FRESH_LIFECYCLE_TIMEOUT_MS) {
159
- return {
160
- spawnError:
161
- `herdr reported ${status} without a post-prompt lifecycle change for ${FRESH_LIFECYCLE_TIMEOUT_MS}ms; ` +
162
- "refusing to treat the pre-prompt terminal state as completion. Update Herdr's Pi detector or inspect its lifecycle reporting.",
163
- };
164
- }
165
- } else {
166
- staleTerminalSince = undefined;
167
- }
168
-
169
- await new Promise<void>((resolve) => setTimeout(resolve, Math.min(interval, Math.max(0, deadline - Date.now()))));
170
- }
171
- }
172
-
173
- /**
174
- * The last `keep` non-blank lines of a pane snapshot — what the display actually needs.
175
- *
176
- * **This replaces a `newSuffix` diff, and the replacement is a correction rather than a tune-up.** The old
177
- * design treated `agent read` as a *stream* and tried to report only what was new, by testing whether the new
178
- * text extended the old. That is wrong about the substrate: `agent read` returns a **snapshot of a bounded
179
- * terminal**, and a snapshot is not an append-only log. Two ordinary things break the prefix test forever —
180
- * the pane **scrolling** (its top lines are gone, so the new text is not an extension of the old) and
181
- * `readPane` **truncating to the tail** past `maxOutputBytes` (each read is a different window of a growing
182
- * buffer). Once either happens, every poll reported the whole buffer.
183
- *
184
- * Measured before the fix: **51 MiB streamed for ~600 bytes of real output — 89,000× amplification** in 37
185
- * seconds, per child, with a scrolling pane also delivering the same real lines three times each. The old
186
- * docstring named that exact failure as the thing it prevented.
187
- *
188
- * So the herdr path now reports a **bounded snapshot** and the consumer *replaces* rather than appends. There
189
- * is no diff to get wrong, the per-poll cost is `keep` lines regardless of buffer size, and a scrolling pane
190
- * simply shows its current tail — which is what a human looking at that pane would see.
191
- */
192
- export function tailLines(snapshot: string, keep: number): string[] {
193
- if (keep <= 0) return [];
194
- const lines: string[] = [];
195
- // Walked from the END, so a 1 MiB buffer costs the last few lines rather than a full split.
196
- let end = snapshot.length;
197
- while (end > 0 && lines.length < keep) {
198
- const start = snapshot.lastIndexOf("\n", end - 1);
199
- const line = snapshot.slice(start + 1, end).replace(/\r/g, "").trimEnd();
200
- if (line.length > 0) lines.unshift(line);
201
- if (start === -1) break;
202
- end = start;
203
- }
204
- return lines;
205
- }
206
-
207
- /**
208
- * Read the pane's contents.
209
- *
210
- * `agent read` is the ONE command that does not return herdr's JSON envelope — it writes the terminal's
211
- * text straight to stdout. Running it through `parseReply` turned every successful read into
212
- * "unparseable herdr reply", i.e. reported the child's actual answer as a failure to read it. Found by the
213
- * end-to-end run; the unit fake had been written to the envelope shape and so agreed with the bug.
214
- *
215
- * A JSON envelope is still accepted first, because an `error` reply here IS JSON and must not be mistaken
216
- * for terminal output.
217
- *
218
- * **`readFailed` is separate from `text`, and that separation is the fix for an R-03 defect.** A failed read
219
- * used to return its own diagnostic *as* `text` — so `runHerdrPane` returned
220
- * `[grants] could not read the agent pane: pane is gone` **as the child's answer, with `code: 0`**, and the
221
- * orchestrator read a failure message as a completed sub-agent's report. Measured. It mattered little when this
222
- * ran once per child; ADR-0032 made it run on every poll, up to 800 times for a ten-minute child, so a
223
- * transient failure went from unlikely to expected. The caller must now decide, and it cannot do so by
224
- * inspecting a string.
225
- */
226
- export async function readPane(
227
- exec: HerdrExec,
228
- name: string,
229
- maxOutputBytes: number,
230
- ): Promise<{ text: string; truncated: boolean; readFailed?: string }> {
231
- const reply = await exec(["agent", "read", name]);
232
- let text: string;
233
- try {
234
- const parsed = JSON.parse(reply.stdout) as { result?: Record<string, unknown>; error?: { message?: string } };
235
- if (parsed.error) {
236
- return { text: "", truncated: false, readFailed: parsed.error.message ?? "unknown error" };
237
- }
238
- const raw = parsed.result?.output ?? parsed.result?.text ?? parsed.result?.content ?? "";
239
- text = typeof raw === "string" ? raw : JSON.stringify(raw);
240
- } catch {
241
- text = reply.stdout;
242
- }
243
- if (Buffer.byteLength(text) <= maxOutputBytes) return { text, truncated: false };
244
- // Keep the TAIL, not the head: a terminal's useful content is its most recent output, and the head is
245
- // the startup banner. `runChild` keeps the head because it streams and must stop a runaway producer;
246
- // here the output is already complete, so the choice is free and the tail is the answer.
247
- //
248
- // Sliced by BYTES via a Buffer round trip rather than by code units, for `takeBytes`'s reason in
249
- // `run-child.ts`: `slice(-maxOutputBytes)` on a CJK pane overran the cap by three times. `toString` repairs
250
- // a character split at the cut by replacing it, which is the right trade for a tail — one replacement
251
- // character at the boundary, versus a cap that does not hold.
252
- return { text: Buffer.from(text, "utf8").subarray(-maxOutputBytes).toString("utf8"), truncated: true };
253
- }