pi-daddy 0.28.0 → 0.32.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 (1012) hide show
  1. package/CHANGELOG.md +108 -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 +10 -4
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +120 -106
  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 +125 -0
  135. package/dist/kernel/catalog.d.ts.map +1 -0
  136. package/dist/kernel/catalog.js +338 -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 +320 -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 +120 -0
  193. package/dist/kernel/resolve.d.ts.map +1 -0
  194. package/dist/kernel/resolve.js +201 -0
  195. package/dist/kernel/resolve.js.map +1 -0
  196. package/dist/kernel/routing-authority.d.ts +71 -0
  197. package/dist/kernel/routing-authority.d.ts.map +1 -0
  198. package/dist/kernel/routing-authority.js +100 -0
  199. package/dist/kernel/routing-authority.js.map +1 -0
  200. package/dist/kernel/run-child.d.ts +111 -0
  201. package/dist/kernel/run-child.d.ts.map +1 -0
  202. package/dist/kernel/run-child.js +324 -0
  203. package/dist/kernel/run-child.js.map +1 -0
  204. package/dist/kernel/skill-packages.d.ts +116 -0
  205. package/dist/kernel/skill-packages.d.ts.map +1 -0
  206. package/dist/kernel/skill-packages.js +300 -0
  207. package/dist/kernel/skill-packages.js.map +1 -0
  208. package/dist/kernel/skill-resources.d.ts.map +1 -0
  209. package/dist/kernel/skill-resources.js +56 -0
  210. package/dist/kernel/skill-resources.js.map +1 -0
  211. package/dist/kernel/spawn.d.ts +60 -0
  212. package/dist/kernel/spawn.d.ts.map +1 -0
  213. package/dist/kernel/spawn.js +116 -0
  214. package/dist/kernel/spawn.js.map +1 -0
  215. package/dist/kernel/workspace.d.ts +51 -0
  216. package/dist/kernel/workspace.d.ts.map +1 -0
  217. package/dist/kernel/workspace.js +223 -0
  218. package/dist/kernel/workspace.js.map +1 -0
  219. package/dist/products/activity-timeline.d.ts +126 -0
  220. package/dist/products/activity-timeline.d.ts.map +1 -0
  221. package/dist/products/activity-timeline.js +542 -0
  222. package/dist/products/activity-timeline.js.map +1 -0
  223. package/dist/products/dashboard-cli.d.ts +26 -0
  224. package/dist/products/dashboard-cli.d.ts.map +1 -0
  225. package/dist/products/dashboard-cli.js +224 -0
  226. package/dist/products/dashboard-cli.js.map +1 -0
  227. package/dist/products/dashboard-display-controls.d.ts +17 -0
  228. package/dist/products/dashboard-display-controls.d.ts.map +1 -0
  229. package/dist/products/dashboard-display-controls.js +38 -0
  230. package/dist/products/dashboard-display-controls.js.map +1 -0
  231. package/dist/products/dashboard-handshake.d.ts +42 -0
  232. package/dist/products/dashboard-handshake.d.ts.map +1 -0
  233. package/dist/products/dashboard-handshake.js +158 -0
  234. package/dist/products/dashboard-handshake.js.map +1 -0
  235. package/dist/products/dashboard-herdr.d.ts +55 -0
  236. package/dist/products/dashboard-herdr.d.ts.map +1 -0
  237. package/dist/products/dashboard-herdr.js +324 -0
  238. package/dist/products/dashboard-herdr.js.map +1 -0
  239. package/dist/products/dashboard-projection.d.ts +62 -0
  240. package/dist/products/dashboard-projection.d.ts.map +1 -0
  241. package/dist/products/dashboard-projection.js +305 -0
  242. package/dist/products/dashboard-projection.js.map +1 -0
  243. package/dist/products/dashboard-render.d.ts.map +1 -0
  244. package/dist/products/dashboard-render.js +208 -0
  245. package/dist/products/dashboard-render.js.map +1 -0
  246. package/extensions/activity-timeline.ts +134 -28
  247. package/extensions/approval-banking.ts +3 -3
  248. package/extensions/approvals.ts +18 -12
  249. package/extensions/chain-approval-facts.ts +9 -6
  250. package/extensions/chain-ledger.ts +4 -4
  251. package/extensions/chain-plan.ts +6 -6
  252. package/extensions/correlation-shape.ts +42 -33
  253. package/extensions/delegate-chain.ts +93 -45
  254. package/extensions/delegation-authority.ts +7 -3
  255. package/extensions/delegation-ledger.ts +2 -2
  256. package/extensions/delegation-native.ts +24 -7
  257. package/extensions/delegation.ts +91 -80
  258. package/extensions/execute-child.ts +440 -293
  259. package/extensions/execution-occurrence.ts +2 -2
  260. package/extensions/executor-session.ts +5 -5
  261. package/extensions/fanout-outcome.ts +8 -6
  262. package/extensions/grant-store-refusal.ts +24 -12
  263. package/extensions/grants-command.ts +42 -34
  264. package/extensions/grants-connected-command.ts +29 -15
  265. package/extensions/grants.ts +73 -73
  266. package/extensions/init-command.ts +18 -12
  267. package/extensions/reload-environment.ts +12 -5
  268. package/extensions/run-delegation.ts +29 -19
  269. package/extensions/session-environment.ts +25 -11
  270. package/extensions/session-report.ts +61 -12
  271. package/extensions/session.ts +58 -34
  272. package/extensions/spawn-summary.ts +5 -5
  273. package/extensions/stored-grant-session.ts +5 -5
  274. package/extensions/tripwire.ts +1 -1
  275. package/extensions/workspace-runtime.ts +26 -24
  276. package/herdr-plugin/herdr-plugin.toml +1 -1
  277. package/package.json +4 -211
  278. package/src/cli.ts +149 -92
  279. package/src/executors/activity-session.ts +54 -0
  280. package/src/executors/executor.ts +123 -0
  281. package/src/executors/herdr-cli.ts +132 -0
  282. package/src/executors/herdr-pi-lifecycle.ts +21 -0
  283. package/src/executors/herdr-poll.ts +305 -0
  284. package/src/executors/herdr-stage.ts +55 -0
  285. package/src/executors/native-session-target.ts +31 -0
  286. package/src/executors/pane-reaper.ts +270 -0
  287. package/src/executors/process-activity.ts +54 -0
  288. package/src/executors/run-herdr.ts +426 -0
  289. package/src/governance/approval-prompt.ts +225 -0
  290. package/src/governance/approval-store.ts +385 -0
  291. package/src/governance/execution-retention.ts +372 -0
  292. package/src/governance/file-lock.ts +210 -0
  293. package/src/governance/finalization.ts +82 -0
  294. package/src/governance/grant-store.ts +235 -0
  295. package/src/governance/init.ts +447 -0
  296. package/src/governance/lease-helper.ts +124 -0
  297. package/src/governance/lease-record.ts +131 -0
  298. package/src/governance/ledger-events.ts +222 -0
  299. package/src/governance/ledger-report.ts +396 -0
  300. package/src/governance/ledger-v3-validation.ts +384 -0
  301. package/src/governance/ledger.ts +419 -0
  302. package/src/governance/native-session.ts +264 -0
  303. package/src/governance/record.ts +294 -0
  304. package/src/governance/retention-contract.ts +201 -0
  305. package/src/governance/retention-json.ts +24 -0
  306. package/src/governance/workspace-lease.ts +429 -0
  307. package/src/index.ts +82 -92
  308. package/src/kernel/approval.ts +406 -0
  309. package/src/kernel/capabilities.ts +216 -0
  310. package/src/kernel/catalog.ts +373 -0
  311. package/src/kernel/correlation.ts +351 -0
  312. package/src/kernel/definitions.ts +215 -0
  313. package/src/kernel/delegate-types.ts +162 -0
  314. package/src/kernel/delegate.ts +375 -0
  315. package/src/kernel/delegation-approval.ts +126 -0
  316. package/src/kernel/env-names.ts +119 -0
  317. package/src/kernel/fanout.ts +106 -0
  318. package/src/kernel/grant-env.ts +174 -0
  319. package/src/kernel/model-preflight.ts +44 -0
  320. package/src/kernel/pi-tools.ts +32 -0
  321. package/src/kernel/project-paths.ts +97 -0
  322. package/src/kernel/propagation.ts +341 -0
  323. package/src/kernel/refusals.ts +64 -0
  324. package/src/kernel/resolve.ts +258 -0
  325. package/src/kernel/routing-authority.ts +121 -0
  326. package/src/kernel/run-child.ts +418 -0
  327. package/src/kernel/skill-packages.ts +329 -0
  328. package/src/kernel/skill-resources.ts +64 -0
  329. package/src/kernel/spawn.ts +156 -0
  330. package/src/kernel/workspace.ts +336 -0
  331. package/src/products/activity-timeline.ts +679 -0
  332. package/src/products/dashboard-cli.ts +250 -0
  333. package/src/products/dashboard-display-controls.ts +44 -0
  334. package/src/products/dashboard-handshake.ts +222 -0
  335. package/src/products/dashboard-herdr.ts +427 -0
  336. package/src/products/dashboard-projection.ts +389 -0
  337. package/src/products/dashboard-render.ts +260 -0
  338. package/PRODUCT-GUIDE.md +0 -155
  339. package/REQUIREMENTS.md +0 -41
  340. package/contracts/daily-view/v1/README.md +0 -114
  341. package/contracts/daily-view/v1/fixtures/view.json +0 -525
  342. package/contracts/daily-view/v1/fixtures/view.txt +0 -75
  343. package/contracts/daily-view/v1/fixtures/work.jsonl +0 -17
  344. package/contracts/daily-view/v1/p03/README.md +0 -26
  345. package/contracts/daily-view/v1/p03/fixtures/retained-executions.json +0 -241
  346. package/contracts/daily-view/v1/p03/projection.schema.json +0 -194
  347. package/contracts/daily-view/v1/p03/provenance.json +0 -21
  348. package/contracts/dashboard-host/v1/README.md +0 -176
  349. package/contracts/debrief/v1/README.md +0 -146
  350. package/contracts/debrief/v1/intervention/README.md +0 -32
  351. package/contracts/debrief/v1/intervention/fixtures/artifact-3ee11136beb864f518252e5024dae9197421fbf97b6e981d3243c782b5c44bd0.txt +0 -1
  352. package/contracts/debrief/v1/intervention/fixtures/artifact-58905d872dd3c54a9705f67b05fa82edbad7af6476ae8993faf1a7b9fadfb905.txt +0 -1
  353. package/contracts/debrief/v1/intervention/fixtures/assessment.json +0 -29
  354. package/contracts/debrief/v1/intervention/fixtures/blind-view.json +0 -20
  355. package/contracts/debrief/v1/intervention/fixtures/choice.json +0 -7
  356. package/contracts/debrief/v1/intervention/fixtures/manifest.json +0 -57
  357. package/contracts/debrief/v1/intervention/fixtures/reveal.json +0 -39
  358. package/contracts/debrief/v1/provenance.json +0 -89
  359. package/contracts/debrief/v1/work-capture/README.md +0 -38
  360. package/contracts/debrief/v1/work-capture/fixtures/batch.json +0 -17
  361. package/contracts/debrief/v1/work-capture/fixtures/cases.json +0 -184
  362. package/contracts/debrief/v1/work-capture/fixtures/review.json +0 -184
  363. package/contracts/debrief/v1/work-capture/review-request.schema.json +0 -41
  364. package/contracts/debrief/v1/work-capture/work-case.schema.json +0 -190
  365. package/contracts/debrief/v2/README.md +0 -71
  366. package/contracts/debrief/v2/input-pin.json +0 -66
  367. package/contracts/debrief/v2/intervention-upstream.md +0 -40
  368. package/contracts/debrief/v2/work-signals-upstream.md +0 -22
  369. package/contracts/dispatch-control/v1/README.md +0 -109
  370. package/contracts/dispatch-control/v1/request.schema.json +0 -19
  371. package/contracts/effect-profile/v1/README.md +0 -124
  372. package/contracts/execution-retention/v1/README.md +0 -109
  373. package/contracts/execution-retention/v2/README.md +0 -148
  374. package/contracts/execution-retention/v2/fixtures/interrupted-native-bytes.json +0 -91
  375. package/contracts/execution-retention/v2/fixtures/missing-native-session.json +0 -91
  376. package/contracts/execution-retention/v2/fixtures/native-file-unknown-branch.json +0 -91
  377. package/contracts/execution-retention/v2/fixtures/native-id-without-bytes.json +0 -91
  378. package/contracts/execution-retention/v2/fixtures/native-live-branch.json +0 -90
  379. package/contracts/execution-retention/v2/fixtures/replaced-native-session.json +0 -92
  380. package/contracts/execution-retention/v2/fixtures/result-82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a.bin +0 -1
  381. package/contracts/execution-retention/v2/fixtures/session-2ec1f134bc739984434f7fca689e1c3d1c39fce2dcadae709e9b6faedfcc4ac7.bin +0 -3
  382. package/contracts/execution-retention/v2/fixtures/session-9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f.bin +0 -3
  383. package/contracts/execution-retention/v2/manifest.schema.json +0 -858
  384. package/contracts/experiment/v1/README.md +0 -164
  385. package/contracts/factory-order/v1/README.md +0 -151
  386. package/contracts/factory-order/v1/adoption-pin.json +0 -8
  387. package/contracts/intent-control/v1/README.md +0 -135
  388. package/contracts/intent-control/v1/request.schema.json +0 -1096
  389. package/contracts/intent-control/v2/README.md +0 -34
  390. package/contracts/intent-control/v2/request.schema.json +0 -1070
  391. package/contracts/ledger/v2/README.md +0 -59
  392. package/contracts/ledger/v2/fixtures/capability-decision.json +0 -95
  393. package/contracts/ledger/v2/fixtures/check-receipt.json +0 -40
  394. package/contracts/ledger/v2/fixtures/child-lifecycle.json +0 -42
  395. package/contracts/ledger/v2/fixtures/workspace-lease.json +0 -41
  396. package/contracts/ledger/v2/ledger-event.schema.json +0 -633
  397. package/contracts/ledger/v3/README.md +0 -36
  398. package/contracts/ledger/v3/fixtures/check-receipt.json +0 -41
  399. package/contracts/ledger/v3/fixtures/child-lifecycle.json +0 -44
  400. package/contracts/ledger/v3/fixtures/workflow-fact.json +0 -40
  401. package/contracts/ledger/v3/ledger-event.schema.json +0 -955
  402. package/contracts/ledger/v4/README.md +0 -241
  403. package/contracts/ledger/v4/fixtures/layout-options.json +0 -428
  404. package/contracts/ledger/v4/fixtures/work-acceptance.json +0 -57
  405. package/contracts/ledger/v4/fixtures/work-occurrence.json +0 -44
  406. package/contracts/ledger/v4/fixtures/work-revision.json +0 -26
  407. package/contracts/ledger/v4/fixtures/work-snapshot.json +0 -73
  408. package/contracts/ledger/v4/ledger-event.schema.json +0 -162
  409. package/contracts/ordinary-control/v1/README.md +0 -59
  410. package/contracts/producer-ipc/v1/README.md +0 -137
  411. package/dist/activity-timeline.d.ts +0 -109
  412. package/dist/activity-timeline.d.ts.map +0 -1
  413. package/dist/activity-timeline.js +0 -208
  414. package/dist/activity-timeline.js.map +0 -1
  415. package/dist/approval-prompt.d.ts +0 -119
  416. package/dist/approval-prompt.d.ts.map +0 -1
  417. package/dist/approval-prompt.js +0 -133
  418. package/dist/approval-prompt.js.map +0 -1
  419. package/dist/approval-store.d.ts +0 -149
  420. package/dist/approval-store.d.ts.map +0 -1
  421. package/dist/approval-store.js +0 -314
  422. package/dist/approval-store.js.map +0 -1
  423. package/dist/approval.d.ts +0 -241
  424. package/dist/approval.d.ts.map +0 -1
  425. package/dist/approval.js +0 -268
  426. package/dist/approval.js.map +0 -1
  427. package/dist/capabilities.d.ts +0 -136
  428. package/dist/capabilities.d.ts.map +0 -1
  429. package/dist/capabilities.js +0 -203
  430. package/dist/capabilities.js.map +0 -1
  431. package/dist/catalog.d.ts +0 -98
  432. package/dist/catalog.d.ts.map +0 -1
  433. package/dist/catalog.js +0 -273
  434. package/dist/catalog.js.map +0 -1
  435. package/dist/chain.d.ts.map +0 -1
  436. package/dist/chain.js.map +0 -1
  437. package/dist/check-runner.d.ts +0 -66
  438. package/dist/check-runner.d.ts.map +0 -1
  439. package/dist/check-runner.js +0 -275
  440. package/dist/check-runner.js.map +0 -1
  441. package/dist/control-journal.d.ts +0 -20
  442. package/dist/control-journal.d.ts.map +0 -1
  443. package/dist/control-journal.js +0 -73
  444. package/dist/control-journal.js.map +0 -1
  445. package/dist/correlation.d.ts.map +0 -1
  446. package/dist/correlation.js +0 -231
  447. package/dist/correlation.js.map +0 -1
  448. package/dist/daily-dashboard-host.d.ts +0 -136
  449. package/dist/daily-dashboard-host.d.ts.map +0 -1
  450. package/dist/daily-dashboard-host.js +0 -164
  451. package/dist/daily-dashboard-host.js.map +0 -1
  452. package/dist/daily-panel.d.ts +0 -36
  453. package/dist/daily-panel.d.ts.map +0 -1
  454. package/dist/daily-panel.js +0 -84
  455. package/dist/daily-panel.js.map +0 -1
  456. package/dist/daily-view-input.d.ts +0 -44
  457. package/dist/daily-view-input.d.ts.map +0 -1
  458. package/dist/daily-view-input.js +0 -68
  459. package/dist/daily-view-input.js.map +0 -1
  460. package/dist/daily-view-render.d.ts +0 -5
  461. package/dist/daily-view-render.d.ts.map +0 -1
  462. package/dist/daily-view-render.js +0 -42
  463. package/dist/daily-view-render.js.map +0 -1
  464. package/dist/daily-view.d.ts +0 -77
  465. package/dist/daily-view.d.ts.map +0 -1
  466. package/dist/daily-view.js +0 -176
  467. package/dist/daily-view.js.map +0 -1
  468. package/dist/dashboard-cli.d.ts +0 -54
  469. package/dist/dashboard-cli.d.ts.map +0 -1
  470. package/dist/dashboard-cli.js +0 -367
  471. package/dist/dashboard-cli.js.map +0 -1
  472. package/dist/dashboard-display-controls.d.ts +0 -15
  473. package/dist/dashboard-display-controls.d.ts.map +0 -1
  474. package/dist/dashboard-display-controls.js +0 -34
  475. package/dist/dashboard-display-controls.js.map +0 -1
  476. package/dist/dashboard-handshake.d.ts +0 -42
  477. package/dist/dashboard-handshake.d.ts.map +0 -1
  478. package/dist/dashboard-handshake.js +0 -147
  479. package/dist/dashboard-handshake.js.map +0 -1
  480. package/dist/dashboard-harness.d.ts +0 -22
  481. package/dist/dashboard-harness.d.ts.map +0 -1
  482. package/dist/dashboard-harness.js +0 -89
  483. package/dist/dashboard-harness.js.map +0 -1
  484. package/dist/dashboard-herdr.d.ts +0 -55
  485. package/dist/dashboard-herdr.d.ts.map +0 -1
  486. package/dist/dashboard-herdr.js +0 -293
  487. package/dist/dashboard-herdr.js.map +0 -1
  488. package/dist/dashboard-host-contract.d.ts +0 -127
  489. package/dist/dashboard-host-contract.d.ts.map +0 -1
  490. package/dist/dashboard-host-contract.js +0 -14
  491. package/dist/dashboard-host-contract.js.map +0 -1
  492. package/dist/dashboard-host-transport.d.ts +0 -16
  493. package/dist/dashboard-host-transport.d.ts.map +0 -1
  494. package/dist/dashboard-host-transport.js +0 -127
  495. package/dist/dashboard-host-transport.js.map +0 -1
  496. package/dist/dashboard-host.d.ts +0 -239
  497. package/dist/dashboard-host.d.ts.map +0 -1
  498. package/dist/dashboard-host.js +0 -474
  499. package/dist/dashboard-host.js.map +0 -1
  500. package/dist/dashboard-menu.d.ts +0 -16
  501. package/dist/dashboard-menu.d.ts.map +0 -1
  502. package/dist/dashboard-menu.js +0 -33
  503. package/dist/dashboard-menu.js.map +0 -1
  504. package/dist/dashboard-observation.d.ts +0 -28
  505. package/dist/dashboard-observation.d.ts.map +0 -1
  506. package/dist/dashboard-observation.js +0 -87
  507. package/dist/dashboard-observation.js.map +0 -1
  508. package/dist/dashboard-projection.d.ts +0 -73
  509. package/dist/dashboard-projection.d.ts.map +0 -1
  510. package/dist/dashboard-projection.js +0 -294
  511. package/dist/dashboard-projection.js.map +0 -1
  512. package/dist/dashboard-render.d.ts.map +0 -1
  513. package/dist/dashboard-render.js +0 -212
  514. package/dist/dashboard-render.js.map +0 -1
  515. package/dist/debrief-contract.d.ts +0 -65
  516. package/dist/debrief-contract.d.ts.map +0 -1
  517. package/dist/debrief-contract.js +0 -151
  518. package/dist/debrief-contract.js.map +0 -1
  519. package/dist/debrief-fixture.d.ts +0 -16
  520. package/dist/debrief-fixture.d.ts.map +0 -1
  521. package/dist/debrief-fixture.js +0 -41
  522. package/dist/debrief-fixture.js.map +0 -1
  523. package/dist/debrief-host.d.ts +0 -59
  524. package/dist/debrief-host.d.ts.map +0 -1
  525. package/dist/debrief-host.js +0 -49
  526. package/dist/debrief-host.js.map +0 -1
  527. package/dist/debrief-render.d.ts +0 -5
  528. package/dist/debrief-render.d.ts.map +0 -1
  529. package/dist/debrief-render.js +0 -65
  530. package/dist/debrief-render.js.map +0 -1
  531. package/dist/debrief.d.ts +0 -90
  532. package/dist/debrief.d.ts.map +0 -1
  533. package/dist/debrief.js +0 -263
  534. package/dist/debrief.js.map +0 -1
  535. package/dist/definitions.d.ts.map +0 -1
  536. package/dist/definitions.js +0 -164
  537. package/dist/definitions.js.map +0 -1
  538. package/dist/delegate-types.d.ts +0 -154
  539. package/dist/delegate-types.d.ts.map +0 -1
  540. package/dist/delegate-types.js +0 -8
  541. package/dist/delegate-types.js.map +0 -1
  542. package/dist/delegate.d.ts.map +0 -1
  543. package/dist/delegate.js +0 -313
  544. package/dist/delegate.js.map +0 -1
  545. package/dist/delegation-approval.d.ts.map +0 -1
  546. package/dist/delegation-approval.js +0 -94
  547. package/dist/delegation-approval.js.map +0 -1
  548. package/dist/dispatch-control.d.ts +0 -45
  549. package/dist/dispatch-control.d.ts.map +0 -1
  550. package/dist/dispatch-control.js +0 -76
  551. package/dist/dispatch-control.js.map +0 -1
  552. package/dist/effect-profile-runtime.d.ts +0 -40
  553. package/dist/effect-profile-runtime.d.ts.map +0 -1
  554. package/dist/effect-profile-runtime.js +0 -51
  555. package/dist/effect-profile-runtime.js.map +0 -1
  556. package/dist/effect-profile.d.ts +0 -40
  557. package/dist/effect-profile.d.ts.map +0 -1
  558. package/dist/effect-profile.js +0 -152
  559. package/dist/effect-profile.js.map +0 -1
  560. package/dist/execution-id.d.ts.map +0 -1
  561. package/dist/execution-id.js.map +0 -1
  562. package/dist/execution-retention.d.ts +0 -90
  563. package/dist/execution-retention.d.ts.map +0 -1
  564. package/dist/execution-retention.js +0 -247
  565. package/dist/execution-retention.js.map +0 -1
  566. package/dist/executor.d.ts +0 -39
  567. package/dist/executor.d.ts.map +0 -1
  568. package/dist/executor.js +0 -94
  569. package/dist/executor.js.map +0 -1
  570. package/dist/experiment-contract.d.ts +0 -56
  571. package/dist/experiment-contract.d.ts.map +0 -1
  572. package/dist/experiment-contract.js +0 -80
  573. package/dist/experiment-contract.js.map +0 -1
  574. package/dist/experiment-state.d.ts +0 -22
  575. package/dist/experiment-state.d.ts.map +0 -1
  576. package/dist/experiment-state.js +0 -79
  577. package/dist/experiment-state.js.map +0 -1
  578. package/dist/experiment-store.d.ts +0 -30
  579. package/dist/experiment-store.d.ts.map +0 -1
  580. package/dist/experiment-store.js +0 -147
  581. package/dist/experiment-store.js.map +0 -1
  582. package/dist/experiment.d.ts +0 -65
  583. package/dist/experiment.d.ts.map +0 -1
  584. package/dist/experiment.js +0 -362
  585. package/dist/experiment.js.map +0 -1
  586. package/dist/factory-contract.d.ts +0 -79
  587. package/dist/factory-contract.d.ts.map +0 -1
  588. package/dist/factory-contract.js +0 -89
  589. package/dist/factory-contract.js.map +0 -1
  590. package/dist/factory-migration.d.ts +0 -20
  591. package/dist/factory-migration.d.ts.map +0 -1
  592. package/dist/factory-migration.js +0 -55
  593. package/dist/factory-migration.js.map +0 -1
  594. package/dist/factory-order.d.ts +0 -848
  595. package/dist/factory-order.d.ts.map +0 -1
  596. package/dist/factory-order.js +0 -83
  597. package/dist/factory-order.js.map +0 -1
  598. package/dist/factory-registry.d.ts +0 -121
  599. package/dist/factory-registry.d.ts.map +0 -1
  600. package/dist/factory-registry.js +0 -133
  601. package/dist/factory-registry.js.map +0 -1
  602. package/dist/fanout.d.ts.map +0 -1
  603. package/dist/fanout.js +0 -93
  604. package/dist/fanout.js.map +0 -1
  605. package/dist/file-lock.d.ts.map +0 -1
  606. package/dist/file-lock.js +0 -201
  607. package/dist/file-lock.js.map +0 -1
  608. package/dist/finalization.d.ts.map +0 -1
  609. package/dist/finalization.js.map +0 -1
  610. package/dist/git-identity.d.ts +0 -13
  611. package/dist/git-identity.d.ts.map +0 -1
  612. package/dist/git-identity.js +0 -47
  613. package/dist/git-identity.js.map +0 -1
  614. package/dist/grant-env.d.ts +0 -75
  615. package/dist/grant-env.d.ts.map +0 -1
  616. package/dist/grant-env.js +0 -154
  617. package/dist/grant-env.js.map +0 -1
  618. package/dist/grant-store.d.ts +0 -96
  619. package/dist/grant-store.d.ts.map +0 -1
  620. package/dist/grant-store.js +0 -188
  621. package/dist/grant-store.js.map +0 -1
  622. package/dist/herdr-cli.d.ts +0 -78
  623. package/dist/herdr-cli.d.ts.map +0 -1
  624. package/dist/herdr-cli.js +0 -113
  625. package/dist/herdr-cli.js.map +0 -1
  626. package/dist/herdr-name.d.ts.map +0 -1
  627. package/dist/herdr-name.js.map +0 -1
  628. package/dist/herdr-pi-lifecycle.d.ts.map +0 -1
  629. package/dist/herdr-pi-lifecycle.js +0 -22
  630. package/dist/herdr-pi-lifecycle.js.map +0 -1
  631. package/dist/herdr-poll.d.ts +0 -133
  632. package/dist/herdr-poll.d.ts.map +0 -1
  633. package/dist/herdr-poll.js +0 -222
  634. package/dist/herdr-poll.js.map +0 -1
  635. package/dist/herdr-stage.d.ts +0 -40
  636. package/dist/herdr-stage.d.ts.map +0 -1
  637. package/dist/herdr-stage.js +0 -54
  638. package/dist/herdr-stage.js.map +0 -1
  639. package/dist/herdr-start.d.ts.map +0 -1
  640. package/dist/herdr-start.js.map +0 -1
  641. package/dist/init.d.ts +0 -117
  642. package/dist/init.d.ts.map +0 -1
  643. package/dist/init.js +0 -323
  644. package/dist/init.js.map +0 -1
  645. package/dist/intent-application.d.ts +0 -17
  646. package/dist/intent-application.d.ts.map +0 -1
  647. package/dist/intent-application.js +0 -114
  648. package/dist/intent-application.js.map +0 -1
  649. package/dist/intent-control.d.ts +0 -201
  650. package/dist/intent-control.d.ts.map +0 -1
  651. package/dist/intent-control.js +0 -110
  652. package/dist/intent-control.js.map +0 -1
  653. package/dist/intent-scheduling.d.ts +0 -9
  654. package/dist/intent-scheduling.d.ts.map +0 -1
  655. package/dist/intent-scheduling.js +0 -15
  656. package/dist/intent-scheduling.js.map +0 -1
  657. package/dist/learning-connection.d.ts +0 -127
  658. package/dist/learning-connection.d.ts.map +0 -1
  659. package/dist/learning-connection.js +0 -54
  660. package/dist/learning-connection.js.map +0 -1
  661. package/dist/lease-helper.d.ts.map +0 -1
  662. package/dist/lease-helper.js +0 -94
  663. package/dist/lease-helper.js.map +0 -1
  664. package/dist/lease-record.d.ts +0 -90
  665. package/dist/lease-record.d.ts.map +0 -1
  666. package/dist/lease-record.js.map +0 -1
  667. package/dist/ledger-append.d.ts +0 -15
  668. package/dist/ledger-append.d.ts.map +0 -1
  669. package/dist/ledger-append.js +0 -94
  670. package/dist/ledger-append.js.map +0 -1
  671. package/dist/ledger-events.d.ts +0 -131
  672. package/dist/ledger-events.d.ts.map +0 -1
  673. package/dist/ledger-events.js +0 -107
  674. package/dist/ledger-events.js.map +0 -1
  675. package/dist/ledger-identifiers.d.ts.map +0 -1
  676. package/dist/ledger-identifiers.js.map +0 -1
  677. package/dist/ledger-report.d.ts +0 -134
  678. package/dist/ledger-report.d.ts.map +0 -1
  679. package/dist/ledger-report.js +0 -271
  680. package/dist/ledger-report.js.map +0 -1
  681. package/dist/ledger-v3-validation.d.ts +0 -11
  682. package/dist/ledger-v3-validation.d.ts.map +0 -1
  683. package/dist/ledger-v3-validation.js +0 -265
  684. package/dist/ledger-v3-validation.js.map +0 -1
  685. package/dist/ledger.d.ts +0 -242
  686. package/dist/ledger.d.ts.map +0 -1
  687. package/dist/ledger.js +0 -142
  688. package/dist/ledger.js.map +0 -1
  689. package/dist/measured-order.d.ts +0 -249
  690. package/dist/measured-order.d.ts.map +0 -1
  691. package/dist/measured-order.js +0 -309
  692. package/dist/measured-order.js.map +0 -1
  693. package/dist/measured-session.d.ts +0 -97
  694. package/dist/measured-session.d.ts.map +0 -1
  695. package/dist/measured-session.js +0 -134
  696. package/dist/measured-session.js.map +0 -1
  697. package/dist/model-preflight.d.ts +0 -13
  698. package/dist/model-preflight.d.ts.map +0 -1
  699. package/dist/model-preflight.js +0 -29
  700. package/dist/model-preflight.js.map +0 -1
  701. package/dist/native-session-target.d.ts +0 -9
  702. package/dist/native-session-target.d.ts.map +0 -1
  703. package/dist/native-session-target.js +0 -29
  704. package/dist/native-session-target.js.map +0 -1
  705. package/dist/native-session.d.ts +0 -59
  706. package/dist/native-session.d.ts.map +0 -1
  707. package/dist/native-session.js +0 -154
  708. package/dist/native-session.js.map +0 -1
  709. package/dist/order-schedule.d.ts +0 -37
  710. package/dist/order-schedule.d.ts.map +0 -1
  711. package/dist/order-schedule.js +0 -81
  712. package/dist/order-schedule.js.map +0 -1
  713. package/dist/ordinary-children.d.ts +0 -52
  714. package/dist/ordinary-children.d.ts.map +0 -1
  715. package/dist/ordinary-children.js +0 -93
  716. package/dist/ordinary-children.js.map +0 -1
  717. package/dist/pane-reaper.d.ts +0 -111
  718. package/dist/pane-reaper.d.ts.map +0 -1
  719. package/dist/pane-reaper.js +0 -242
  720. package/dist/pane-reaper.js.map +0 -1
  721. package/dist/pi-tools.d.ts.map +0 -1
  722. package/dist/pi-tools.js +0 -21
  723. package/dist/pi-tools.js.map +0 -1
  724. package/dist/producer-ipc-contract.d.ts +0 -29
  725. package/dist/producer-ipc-contract.d.ts.map +0 -1
  726. package/dist/producer-ipc-contract.js +0 -29
  727. package/dist/producer-ipc-contract.js.map +0 -1
  728. package/dist/producer-ipc.d.ts +0 -55
  729. package/dist/producer-ipc.d.ts.map +0 -1
  730. package/dist/producer-ipc.js +0 -143
  731. package/dist/producer-ipc.js.map +0 -1
  732. package/dist/product-files.d.ts +0 -6
  733. package/dist/product-files.d.ts.map +0 -1
  734. package/dist/product-files.js +0 -55
  735. package/dist/product-files.js.map +0 -1
  736. package/dist/progress.d.ts.map +0 -1
  737. package/dist/progress.js.map +0 -1
  738. package/dist/propagation.d.ts +0 -203
  739. package/dist/propagation.d.ts.map +0 -1
  740. package/dist/propagation.js +0 -279
  741. package/dist/propagation.js.map +0 -1
  742. package/dist/refusals.d.ts +0 -16
  743. package/dist/refusals.d.ts.map +0 -1
  744. package/dist/refusals.js +0 -55
  745. package/dist/refusals.js.map +0 -1
  746. package/dist/resolve.d.ts +0 -120
  747. package/dist/resolve.d.ts.map +0 -1
  748. package/dist/resolve.js +0 -211
  749. package/dist/resolve.js.map +0 -1
  750. package/dist/resource-budget.d.ts +0 -334
  751. package/dist/resource-budget.d.ts.map +0 -1
  752. package/dist/resource-budget.js +0 -415
  753. package/dist/resource-budget.js.map +0 -1
  754. package/dist/retention-contract.d.ts.map +0 -1
  755. package/dist/retention-contract.js +0 -104
  756. package/dist/retention-contract.js.map +0 -1
  757. package/dist/retention-json.d.ts.map +0 -1
  758. package/dist/retention-json.js.map +0 -1
  759. package/dist/routing-authority.d.ts +0 -71
  760. package/dist/routing-authority.d.ts.map +0 -1
  761. package/dist/routing-authority.js +0 -100
  762. package/dist/routing-authority.js.map +0 -1
  763. package/dist/run-child.d.ts +0 -87
  764. package/dist/run-child.d.ts.map +0 -1
  765. package/dist/run-child.js +0 -248
  766. package/dist/run-child.js.map +0 -1
  767. package/dist/run-herdr.d.ts +0 -119
  768. package/dist/run-herdr.d.ts.map +0 -1
  769. package/dist/run-herdr.js +0 -335
  770. package/dist/run-herdr.js.map +0 -1
  771. package/dist/skill-packages.d.ts +0 -116
  772. package/dist/skill-packages.d.ts.map +0 -1
  773. package/dist/skill-packages.js +0 -295
  774. package/dist/skill-packages.js.map +0 -1
  775. package/dist/skill-resources.d.ts.map +0 -1
  776. package/dist/skill-resources.js +0 -52
  777. package/dist/skill-resources.js.map +0 -1
  778. package/dist/spawn.d.ts +0 -60
  779. package/dist/spawn.d.ts.map +0 -1
  780. package/dist/spawn.js +0 -116
  781. package/dist/spawn.js.map +0 -1
  782. package/dist/vendor/adoption.d.ts +0 -129
  783. package/dist/vendor/adoption.d.ts.map +0 -1
  784. package/dist/vendor/adoption.js +0 -102
  785. package/dist/vendor/adoption.js.map +0 -1
  786. package/dist/vendor/herdr-pi-lifecycle.d.ts.map +0 -1
  787. package/dist/vendor/herdr-pi-lifecycle.js.map +0 -1
  788. package/dist/work-command.d.ts +0 -32
  789. package/dist/work-command.d.ts.map +0 -1
  790. package/dist/work-command.js +0 -179
  791. package/dist/work-command.js.map +0 -1
  792. package/dist/work-ledger-destination.d.ts +0 -20
  793. package/dist/work-ledger-destination.d.ts.map +0 -1
  794. package/dist/work-ledger-destination.js +0 -131
  795. package/dist/work-ledger-destination.js.map +0 -1
  796. package/dist/work-ledger-json.d.ts +0 -25
  797. package/dist/work-ledger-json.d.ts.map +0 -1
  798. package/dist/work-ledger-json.js +0 -267
  799. package/dist/work-ledger-json.js.map +0 -1
  800. package/dist/work-ledger-occurrences.d.ts +0 -227
  801. package/dist/work-ledger-occurrences.d.ts.map +0 -1
  802. package/dist/work-ledger-occurrences.js +0 -115
  803. package/dist/work-ledger-occurrences.js.map +0 -1
  804. package/dist/work-ledger-projection.d.ts +0 -295
  805. package/dist/work-ledger-projection.d.ts.map +0 -1
  806. package/dist/work-ledger-projection.js +0 -237
  807. package/dist/work-ledger-projection.js.map +0 -1
  808. package/dist/work-ledger-snapshot.d.ts +0 -29
  809. package/dist/work-ledger-snapshot.d.ts.map +0 -1
  810. package/dist/work-ledger-snapshot.js +0 -267
  811. package/dist/work-ledger-snapshot.js.map +0 -1
  812. package/dist/work-ledger-types.d.ts +0 -261
  813. package/dist/work-ledger-types.d.ts.map +0 -1
  814. package/dist/work-ledger-types.js +0 -13
  815. package/dist/work-ledger-types.js.map +0 -1
  816. package/dist/work-ledger-validation.d.ts +0 -14
  817. package/dist/work-ledger-validation.d.ts.map +0 -1
  818. package/dist/work-ledger-validation.js +0 -226
  819. package/dist/work-ledger-validation.js.map +0 -1
  820. package/dist/work-ledger.d.ts +0 -43
  821. package/dist/work-ledger.d.ts.map +0 -1
  822. package/dist/work-ledger.js +0 -225
  823. package/dist/work-ledger.js.map +0 -1
  824. package/dist/work-policy-registry.d.ts +0 -133
  825. package/dist/work-policy-registry.d.ts.map +0 -1
  826. package/dist/work-policy-registry.js +0 -128
  827. package/dist/work-policy-registry.js.map +0 -1
  828. package/dist/work-run.d.ts +0 -56
  829. package/dist/work-run.d.ts.map +0 -1
  830. package/dist/work-run.js +0 -102
  831. package/dist/work-run.js.map +0 -1
  832. package/dist/work-setup.d.ts +0 -40
  833. package/dist/work-setup.d.ts.map +0 -1
  834. package/dist/work-setup.js +0 -174
  835. package/dist/work-setup.js.map +0 -1
  836. package/dist/workflow-fact-id.d.ts +0 -4
  837. package/dist/workflow-fact-id.d.ts.map +0 -1
  838. package/dist/workflow-fact-id.js +0 -14
  839. package/dist/workflow-fact-id.js.map +0 -1
  840. package/dist/workflow-facts.d.ts +0 -34
  841. package/dist/workflow-facts.d.ts.map +0 -1
  842. package/dist/workflow-facts.js +0 -43
  843. package/dist/workflow-facts.js.map +0 -1
  844. package/dist/workspace-lease.d.ts +0 -40
  845. package/dist/workspace-lease.d.ts.map +0 -1
  846. package/dist/workspace-lease.js +0 -333
  847. package/dist/workspace-lease.js.map +0 -1
  848. package/dist/workspace.d.ts +0 -57
  849. package/dist/workspace.d.ts.map +0 -1
  850. package/dist/workspace.js +0 -216
  851. package/dist/workspace.js.map +0 -1
  852. package/extensions/daily-dashboard-session.ts +0 -48
  853. package/extensions/daily-work-session.ts +0 -20
  854. package/extensions/learning-outcome-session.ts +0 -38
  855. package/extensions/learning-session.ts +0 -59
  856. package/extensions/ordinary-runtime.ts +0 -14
  857. package/extensions/primary-shadow.ts +0 -11
  858. package/extensions/work-policy-session.ts +0 -139
  859. package/extensions/work-run-session.ts +0 -75
  860. package/extensions/work-runtime.ts +0 -44
  861. package/extensions/work-session.ts +0 -132
  862. package/src/activity-timeline.ts +0 -133
  863. package/src/approval-prompt.ts +0 -225
  864. package/src/approval-store.ts +0 -386
  865. package/src/approval.ts +0 -399
  866. package/src/capabilities.ts +0 -220
  867. package/src/catalog.ts +0 -306
  868. package/src/check-runner.ts +0 -387
  869. package/src/control-journal.ts +0 -26
  870. package/src/correlation.ts +0 -320
  871. package/src/daily-dashboard-host.ts +0 -105
  872. package/src/daily-panel.ts +0 -80
  873. package/src/daily-view-input.ts +0 -59
  874. package/src/daily-view-render.ts +0 -45
  875. package/src/daily-view.ts +0 -160
  876. package/src/dashboard-cli.ts +0 -340
  877. package/src/dashboard-display-controls.ts +0 -21
  878. package/src/dashboard-handshake.ts +0 -199
  879. package/src/dashboard-harness.ts +0 -37
  880. package/src/dashboard-herdr.ts +0 -363
  881. package/src/dashboard-host-contract.ts +0 -50
  882. package/src/dashboard-host-transport.ts +0 -43
  883. package/src/dashboard-host.ts +0 -244
  884. package/src/dashboard-menu.ts +0 -28
  885. package/src/dashboard-observation.ts +0 -46
  886. package/src/dashboard-projection.ts +0 -390
  887. package/src/dashboard-render.ts +0 -259
  888. package/src/debrief-contract.ts +0 -127
  889. package/src/debrief-fixture.ts +0 -29
  890. package/src/debrief-host.ts +0 -53
  891. package/src/debrief-render.ts +0 -49
  892. package/src/debrief.ts +0 -198
  893. package/src/definitions.ts +0 -211
  894. package/src/delegate-types.ts +0 -154
  895. package/src/delegate.ts +0 -348
  896. package/src/delegation-approval.ts +0 -126
  897. package/src/dispatch-control.ts +0 -81
  898. package/src/effect-profile-runtime.ts +0 -46
  899. package/src/effect-profile.ts +0 -129
  900. package/src/execution-retention.ts +0 -230
  901. package/src/executor.ts +0 -123
  902. package/src/experiment-contract.ts +0 -66
  903. package/src/experiment-state.ts +0 -44
  904. package/src/experiment-store.ts +0 -98
  905. package/src/experiment.ts +0 -236
  906. package/src/factory-contract.ts +0 -47
  907. package/src/factory-migration.ts +0 -29
  908. package/src/factory-order.ts +0 -56
  909. package/src/factory-registry.ts +0 -60
  910. package/src/fanout.ts +0 -106
  911. package/src/file-lock.ts +0 -178
  912. package/src/finalization.ts +0 -79
  913. package/src/git-identity.ts +0 -56
  914. package/src/grant-env.ts +0 -221
  915. package/src/grant-store.ts +0 -235
  916. package/src/herdr-cli.ts +0 -125
  917. package/src/herdr-pi-lifecycle.ts +0 -21
  918. package/src/herdr-poll.ts +0 -253
  919. package/src/herdr-stage.ts +0 -55
  920. package/src/init.ts +0 -389
  921. package/src/intent-application.ts +0 -91
  922. package/src/intent-control.ts +0 -107
  923. package/src/intent-scheduling.ts +0 -14
  924. package/src/learning-connection.ts +0 -70
  925. package/src/lease-helper.ts +0 -97
  926. package/src/lease-record.ts +0 -131
  927. package/src/ledger-append.ts +0 -72
  928. package/src/ledger-events.ts +0 -226
  929. package/src/ledger-report.ts +0 -357
  930. package/src/ledger-v3-validation.ts +0 -266
  931. package/src/ledger.ts +0 -369
  932. package/src/measured-order.ts +0 -72
  933. package/src/measured-session.ts +0 -70
  934. package/src/model-preflight.ts +0 -41
  935. package/src/native-session-target.ts +0 -23
  936. package/src/native-session.ts +0 -139
  937. package/src/order-schedule.ts +0 -42
  938. package/src/ordinary-children.ts +0 -59
  939. package/src/pane-reaper.ts +0 -270
  940. package/src/pi-tools.ts +0 -25
  941. package/src/producer-ipc-contract.ts +0 -26
  942. package/src/producer-ipc.ts +0 -107
  943. package/src/product-files.ts +0 -34
  944. package/src/propagation.ts +0 -333
  945. package/src/refusals.ts +0 -70
  946. package/src/resolve.ts +0 -267
  947. package/src/resource-budget.ts +0 -349
  948. package/src/retention-contract.ts +0 -84
  949. package/src/retention-json.ts +0 -20
  950. package/src/routing-authority.ts +0 -121
  951. package/src/run-child.ts +0 -303
  952. package/src/run-herdr.ts +0 -386
  953. package/src/skill-packages.ts +0 -314
  954. package/src/skill-resources.ts +0 -48
  955. package/src/spawn.ts +0 -156
  956. package/src/vendor/adoption.ts +0 -109
  957. package/src/work-command.ts +0 -197
  958. package/src/work-ledger-destination.ts +0 -113
  959. package/src/work-ledger-json.ts +0 -228
  960. package/src/work-ledger-occurrences.ts +0 -99
  961. package/src/work-ledger-projection.ts +0 -262
  962. package/src/work-ledger-snapshot.ts +0 -246
  963. package/src/work-ledger-types.ts +0 -229
  964. package/src/work-ledger-validation.ts +0 -174
  965. package/src/work-ledger.ts +0 -186
  966. package/src/work-policy-registry.ts +0 -81
  967. package/src/work-run.ts +0 -79
  968. package/src/work-setup.ts +0 -141
  969. package/src/workflow-fact-id.ts +0 -16
  970. package/src/workflow-facts.ts +0 -65
  971. package/src/workspace-lease.ts +0 -363
  972. package/src/workspace.ts +0 -308
  973. /package/contracts/{ledger/v3 → ledger-record/v1}/fixtures/capability-decision.json +0 -0
  974. /package/contracts/{ledger/v3 → ledger-record/v1}/fixtures/workspace-lease.json +0 -0
  975. /package/dist/{herdr-name.d.ts → executors/herdr-name.d.ts} +0 -0
  976. /package/dist/{herdr-name.js → executors/herdr-name.js} +0 -0
  977. /package/dist/{herdr-pi-lifecycle.d.ts → executors/herdr-pi-lifecycle.d.ts} +0 -0
  978. /package/dist/{herdr-start.d.ts → executors/herdr-start.d.ts} +0 -0
  979. /package/dist/{herdr-start.js → executors/herdr-start.js} +0 -0
  980. /package/dist/{vendor → executors/vendor}/herdr-pi-lifecycle.d.ts +0 -0
  981. /package/dist/{vendor → executors/vendor}/herdr-pi-lifecycle.js +0 -0
  982. /package/dist/{file-lock.d.ts → governance/file-lock.d.ts} +0 -0
  983. /package/dist/{finalization.d.ts → governance/finalization.d.ts} +0 -0
  984. /package/dist/{finalization.js → governance/finalization.js} +0 -0
  985. /package/dist/{lease-helper.d.ts → governance/lease-helper.d.ts} +0 -0
  986. /package/dist/{lease-record.js → governance/lease-record.js} +0 -0
  987. /package/dist/{retention-contract.d.ts → governance/retention-contract.d.ts} +0 -0
  988. /package/dist/{retention-json.d.ts → governance/retention-json.d.ts} +0 -0
  989. /package/dist/{retention-json.js → governance/retention-json.js} +0 -0
  990. /package/dist/{chain.d.ts → kernel/chain.d.ts} +0 -0
  991. /package/dist/{chain.js → kernel/chain.js} +0 -0
  992. /package/dist/{correlation.d.ts → kernel/correlation.d.ts} +0 -0
  993. /package/dist/{definitions.d.ts → kernel/definitions.d.ts} +0 -0
  994. /package/dist/{delegate.d.ts → kernel/delegate.d.ts} +0 -0
  995. /package/dist/{delegation-approval.d.ts → kernel/delegation-approval.d.ts} +0 -0
  996. /package/dist/{execution-id.d.ts → kernel/execution-id.d.ts} +0 -0
  997. /package/dist/{execution-id.js → kernel/execution-id.js} +0 -0
  998. /package/dist/{fanout.d.ts → kernel/fanout.d.ts} +0 -0
  999. /package/dist/{ledger-identifiers.d.ts → kernel/ledger-identifiers.d.ts} +0 -0
  1000. /package/dist/{ledger-identifiers.js → kernel/ledger-identifiers.js} +0 -0
  1001. /package/dist/{pi-tools.d.ts → kernel/pi-tools.d.ts} +0 -0
  1002. /package/dist/{progress.d.ts → kernel/progress.d.ts} +0 -0
  1003. /package/dist/{progress.js → kernel/progress.js} +0 -0
  1004. /package/dist/{skill-resources.d.ts → kernel/skill-resources.d.ts} +0 -0
  1005. /package/dist/{dashboard-render.d.ts → products/dashboard-render.d.ts} +0 -0
  1006. /package/src/{herdr-name.ts → executors/herdr-name.ts} +0 -0
  1007. /package/src/{herdr-start.ts → executors/herdr-start.ts} +0 -0
  1008. /package/src/{vendor → executors/vendor}/herdr-pi-lifecycle.ts +0 -0
  1009. /package/src/{chain.ts → kernel/chain.ts} +0 -0
  1010. /package/src/{execution-id.ts → kernel/execution-id.ts} +0 -0
  1011. /package/src/{ledger-identifiers.ts → kernel/ledger-identifiers.ts} +0 -0
  1012. /package/src/{progress.ts → kernel/progress.ts} +0 -0
package/src/fanout.ts DELETED
@@ -1,106 +0,0 @@
1
- /**
2
- * Bounded synchronous fan-out — ADR-0015's option A′, and the cardinality bound ADR-0008 never had.
3
- *
4
- * **The gap this closes.** ADR-0008 bounds what each child may *hold* and says nothing about how many
5
- * children exist. `resolve()` is a set operation; nowhere in `src/` was there a count. Blocking `delegate`
6
- * bounded cardinality to one *by accident of being blocking*, so the invariant was never tested. Fan-out
7
- * removes that accident: with `maxDepth: 2` and five children per call, five delegators each spawning five
8
- * is thirty concurrent model sessions — **every ledger line individually correct and narrow, the aggregate
9
- * a machine DoS and an uncapped bill.** The critic's verdict on this was that silence is itself a finding.
10
- *
11
- * **Why a budget rather than a per-call limit.** A per-call cap of K with depth D still permits K^D
12
- * descendants, which is the same exponential wearing a smaller number. A *budget* is subtractive and
13
- * therefore total: a session holding budget B may create at most B descendants in its whole subtree,
14
- * because it spends from B to spawn and hands each child a share of what is left. That composes across
15
- * process boundaries with **no shared state** — the same property that makes depth work — so it needs no
16
- * registry, no lock and no counter file.
17
- *
18
- * It is deliberately NOT a concurrency limit. How many run at once is a resource question for the executor;
19
- * how many may exist at all is a governance question, and this is the governance answer.
20
- */
21
-
22
- import { parseBound } from "./propagation.ts";
23
-
24
- /** Total descendants a session may create across its entire subtree, when nothing is configured. */
25
- export const DEFAULT_FANOUT_BUDGET = 8;
26
-
27
- /**
28
- * Hard ceiling on children in a single call, independent of budget.
29
- *
30
- * A budget alone would let one call spend all of it at once, and a hundred simultaneous `pi` processes is
31
- * a different failure from a hundred spread over a session. This is the blast-radius bound; the budget is
32
- * the total bound. Both are needed because they answer different questions.
33
- */
34
- export const MAX_CHILDREN_PER_CALL = 8;
35
-
36
- /**
37
- * Steps a single `delegate_chain` may contain — ADR-0033.
38
- *
39
- * **Derived from `MAX_CHILDREN_PER_CALL` so the two cannot drift.** A chain is not concurrent, so the blast-radius
40
- * argument for that constant does not apply directly; what does apply is that one tool call should not be able to
41
- * create an unbounded number of descendants, and eight is already a long pipeline. Sharing the number also means an
42
- * operator learns one bound rather than two.
43
- */
44
- export const MAX_CHAIN_STEPS = MAX_CHILDREN_PER_CALL;
45
-
46
- /** Read the budget from the environment, failing to the default on absent *or* malformed input. */
47
- export function budgetFromEnv(raw: string | undefined): number {
48
- const parsed = parseBound(raw);
49
- // Malformed and zero both fall back rather than disabling fan-out silently — G7's rule. A budget that a
50
- // typo can switch off is the A-S4 defect wearing different clothes. To genuinely forbid delegation an
51
- // operator sets `maxDepth: 0`, which says what it means.
52
- return parsed === undefined || parsed === null || parsed === 0 ? DEFAULT_FANOUT_BUDGET : parsed;
53
- }
54
-
55
- export interface BudgetSplit {
56
- ok: boolean;
57
- reason?: string;
58
- /** Budget each child receives. */
59
- perChild: number;
60
- }
61
-
62
- /**
63
- * Spend `count` from a budget and divide the remainder among the children.
64
- *
65
- * The parent pays one unit per child it creates *before* sharing what is left, so a subtree can never
66
- * exceed the budget it started with: spawning is itself an expenditure, not a free act that only its
67
- * descendants pay for. `Math.floor` on the division means rounding always loses budget rather than
68
- * inventing it — the safe direction, and the reason a deep tree converges to zero instead of oscillating.
69
- */
70
- export function splitBudget(budget: number, count: number): BudgetSplit {
71
- if (count <= 0) return { ok: false, reason: "a fan-out needs at least one child", perChild: 0 };
72
- if (count > MAX_CHILDREN_PER_CALL) {
73
- return {
74
- ok: false,
75
- reason: `${count} children exceeds the per-call limit of ${MAX_CHILDREN_PER_CALL}`,
76
- perChild: 0,
77
- };
78
- }
79
- if (budget < count) {
80
- return {
81
- ok: false,
82
- reason:
83
- `fan-out budget exhausted: ${count} children requested, ${budget} remaining in this subtree ` +
84
- `(raise PI_GRANTS_FANOUT at the root, or delegate fewer at a time)`,
85
- perChild: 0,
86
- };
87
- }
88
- return { ok: true, perChild: Math.floor((budget - count) / count) };
89
- }
90
-
91
- /**
92
- * A ledger id that distinguishes siblings.
93
- *
94
- * **Review finding F8.** Every child was recorded as `delegate@d1`, so four concurrent children produced
95
- * four lines identical except `ts` — and two landing in the same millisecond were indistinguishable.
96
- * ADR-0008 names `parent_id`/`child_id` as the correlation keys, but they were depth *labels* wearing id
97
- * names, which made the ledger unjoinable to the returned result, to the OS process, or to the child's own
98
- * lines one level down.
99
- *
100
- * The id is hierarchical and derived, not random: a child of `d0` is `d0.1`, its own second child `d0.1.2`.
101
- * That means a line's ancestry is readable from the id alone with no join at all, and it is reproducible —
102
- * two runs of the same fan-out produce the same ids, which is what makes a ledger diffable.
103
- */
104
- export function childSpawnId(parentId: string, index: number): string {
105
- return `${parentId}.${index + 1}`;
106
- }
package/src/file-lock.ts DELETED
@@ -1,178 +0,0 @@
1
- /**
2
- * One cross-process file lock, shared by producer ledgers and the approvals store.
3
- *
4
- * **Extracted rather than copied (R-49).** The ledger has had this lock since fan-out made a second writer
5
- * possible; the approvals store had an unlocked read-modify-write, so session 1 could load, session 2 could
6
- * revoke, and session 1's next save would **restore the revoked entry** — falsifying a property
7
- * `approval-store.ts` documents in so many words. The mitigation already existed twenty lines away. A
8
- * second implementation is how a fix comes to contain a smaller copy of the bug it fixed, which has happened
9
- * twice in this package (R-38's preview, ADR-0022's republish path), so there is exactly one of these.
10
- *
11
- * **The two callers want opposite failure behaviour, and that is the caller's decision, not this module's.**
12
- * A ledger write that cannot take the lock must fail the delegation closed — a child running with granted
13
- * capabilities and no audit line is the thing the ledger exists to prevent. An approvals write that cannot
14
- * take the lock must NOT fail the work: the human already said yes, and the store is a convenience cache
15
- * (ADR-0020). So this throws `LockTimeoutError`, distinguishable from every other failure, and each caller
16
- * decides what that means.
17
- */
18
-
19
- import { open, readFile, rm, stat } from "node:fs/promises";
20
- import { randomUUID } from "node:crypto";
21
-
22
- /** How long to wait for another writer to finish before giving up. Short: failing closed beats hanging. */
23
- export const LOCK_TIMEOUT_MS = 2000;
24
- /** A lock older than this is treated as abandoned by a killed process and broken. */
25
- export const STALE_LOCK_MS = 10_000;
26
-
27
- /**
28
- * Raised only when the wait ran out. Its own type so a caller can tell "somebody else is writing" from
29
- * "this filesystem rejected the write", which want different messages and, for the approvals store,
30
- * different outcomes.
31
- */
32
- export class LockTimeoutError extends Error {
33
- constructor(label: string) {
34
- super(`${label} is locked by another writer (waited ${LOCK_TIMEOUT_MS}ms)`);
35
- this.name = "LockTimeoutError";
36
- }
37
- }
38
-
39
- export interface FileLockOptions { readonly staleRecovery?: "age" | "disabled" }
40
- function lockPolicy(options: FileLockOptions | undefined): "age" | "disabled" {
41
- if (options === undefined) return "age";
42
- const invalid = (): never => { throw new TypeError("invalid file lock options"); };
43
- if (options === null || typeof options !== "object" || Array.isArray(options) ||
44
- ![Object.prototype, null].includes(Object.getPrototypeOf(options))) return invalid();
45
- const keys = Reflect.ownKeys(options);
46
- if (keys.some(key => key !== "staleRecovery")) return invalid();
47
- if (!keys.length) return "age";
48
- const field = Object.getOwnPropertyDescriptor(options, "staleRecovery")!;
49
- if (!Object.hasOwn(field, "value") || !field.enumerable || !["age", "disabled"].includes(field.value)) return invalid();
50
- return field.value;
51
- }
52
-
53
- /**
54
- * Run `work` while holding an exclusive lock beside `path`.
55
- * Explicit disabled recovery never reclaims by age/liveness. V4 selects it internally; an orphan
56
- * requires separately authorized quiescent recovery, not a timer or automatic operator action.
57
- * The age-based behavior described below remains the default for legacy callers.
58
- *
59
- * **Why a lock at all.** `O_APPEND` is atomic for one write to a regular file on a POSIX filesystem, and the
60
- * guarantee does **not** hold on drvfs (`/mnt/c` under WSL2) or NFS — which is exactly where this project
61
- * runs. The approvals store never had the guarantee anyway: read-modify-write is not one write.
62
- *
63
- * **A lock introduces its own failure mode and it is handled deliberately.** A process killed while holding
64
- * the lock would otherwise block every future write forever, so a lock older than `STALE_LOCK_MS` is broken.
65
- * Every delete proves ownership first (`removeIfOurs`) — see the token comment in the loop for the two
66
- * mutual-exclusion breaks that came from not doing so, both reproduced across real OS processes.
67
- *
68
- * **What staleness actually measures, stated because it is not what it sounds like.** `STALE_LOCK_MS`
69
- * compares the lock's mtime to now; it never checks whether the owner is alive. So *any* 10s stall of the
70
- * holder hands the lock on — a `SIGSTOP`, a laptop suspend, swap thrash, a debugger breakpoint, a long GC
71
- * pause. Measured on this project's own filesystems, no realistic `work()` comes near it: one ledger append
72
- * is 0.1ms on ext4 and 21ms on drvfs, and a 10,000-entry `saveApproval` is 30ms / 97ms. Sixteen-way
73
- * contention raises *waiters'* time, never the holder's — max hold measured at 49ms. So the threshold is
74
- * two orders of magnitude clear of normal operation and is not guarded against abnormal suspension.
75
- *
76
- * The timeout is short *on purpose*: work refused because a file was busy is recoverable and loud, while
77
- * work that hangs waiting for a lock is neither.
78
- */
79
- export async function withFileLock<T>(path: string, label: string, work: () => Promise<T>, options?: FileLockOptions): Promise<T> {
80
- const staleRecovery = lockPolicy(options); // Detached once, before I/O or any wait.
81
- const lockPath = `${path}.lock`;
82
- const deadline = Date.now() + LOCK_TIMEOUT_MS;
83
-
84
- for (;;) {
85
- // **A token, and the reason mutual exclusion depends on it (R-67).** `rm(path)` deletes whatever is at
86
- // the path *now*, not the lock this process created — so the previous version broke its own invariant
87
- // two ways, both reproduced across real OS processes:
88
- //
89
- // - the stale-break `stat` and `rm` are two awaits, so a process descheduled between them could delete
90
- // a LIVE lock another waiter had just created, and then succeed at its own create: two holders;
91
- // - worse, the `finally` removed the lock unconditionally. A holder whose lock had been broken out
92
- // from under it still freed the NEW owner's lock on the way out — and the damage then propagated to
93
- // processes that raced nothing and observed nothing wrong, which is how one break became a chain.
94
- //
95
- // Writing a unique token and re-reading it before every delete makes both inexpressible: this process
96
- // only ever removes a file it can prove is its own. The docstring used to claim "whichever wins the
97
- // exclusive create proceeds, which is correct because only one can" — true of the create and false of
98
- // the delete, which is what made it convincing.
99
- const token = `${process.pid}:${randomUUID()}`;
100
- let handle: Awaited<ReturnType<typeof open>> | undefined;
101
- try {
102
- handle = await open(lockPath, "wx");
103
- await handle.writeFile(`${token}\n`, "utf8");
104
- } catch (error) {
105
- // The handle may exist even though the WRITE failed (ENOSPC, EDQUOT, EFBIG). The old code jumped
106
- // straight here and rethrew, so the already-created lock file was left on disk and its descriptor
107
- // leaked to GC — an orphan that blocks every writer for a full STALE_LOCK_MS and feeds the EMFILE
108
- // path below. Close and remove before doing anything else; `ours` is safe because we just made it.
109
- if (handle) {
110
- await handle.close().catch(() => undefined);
111
- await removeIfOurs(lockPath, token);
112
- handle = undefined;
113
- }
114
- const code = (error as { code?: string }).code;
115
- if (code !== "EEXIST") throw error;
116
-
117
- // Someone else holds it. Break it only if it is old enough to be abandoned — and only the exact file
118
- // we judged, so a lock created in the gap survives.
119
- if (staleRecovery === "age") try {
120
- const held = await stat(lockPath);
121
- if (Date.now() - held.mtimeMs > STALE_LOCK_MS) {
122
- const abandoned = await readFile(lockPath, "utf8").catch(() => undefined);
123
- if (abandoned !== undefined) await removeIfOurs(lockPath, abandoned.trim());
124
- }
125
- } catch {
126
- /* it vanished between the check and the stat — the next attempt will simply take it */
127
- }
128
-
129
- if (Date.now() >= deadline) throw new LockTimeoutError(label);
130
- await new Promise((r) => setTimeout(r, 25));
131
- continue;
132
- }
133
-
134
- let bodyFailed = false;
135
- try {
136
- return await work();
137
- } catch (error) { bodyFailed = true; throw error; }
138
- finally {
139
- if (staleRecovery === "disabled") {
140
- try { await releaseDisabledLock(handle, lockPath, token); }
141
- catch (error) { if (!bodyFailed) throw error; } // Preserve even a falsy primary rejection.
142
- } else {
143
- await handle.close().catch(() => undefined);
144
- // Legacy age policy remains best effort; never remove a demonstrably different token.
145
- await removeIfOurs(lockPath, token);
146
- }
147
- }
148
- }
149
- }
150
-
151
- /** Disabled ownership cannot silently manufacture an indefinite orphan after a successful body.
152
- * Try token-checked removal even if close failed; report the first failure after both attempts.
153
- * Appended bytes are not rolled back, and a primary body error takes precedence at the caller. */
154
- async function releaseDisabledLock(handle: Awaited<ReturnType<typeof open>>, lockPath: string, token: string): Promise<void> {
155
- let failure: { error: unknown } | null = null;
156
- try { await handle.close(); } catch (error) { failure = { error }; }
157
- try { await removeIfOurs(lockPath, token, true); }
158
- catch (error) { failure ??= { error }; }
159
- if (failure) throw failure.error;
160
- }
161
-
162
- /**
163
- * Delete the lock only if it still holds `token`.
164
- *
165
- * Read-then-delete is itself two operations, so this is not atomic either — but it narrows the window from
166
- * "the whole of `work()`" to "between a read and an unlink", and it removes the *systematic* break entirely:
167
- * a process can no longer delete a lock it demonstrably never owned.
168
- */
169
- async function removeIfOurs(lockPath: string, token: string, strict = false): Promise<void> {
170
- try {
171
- const held = await readFile(lockPath, "utf8");
172
- if (held.trim() !== token) return;
173
- await rm(lockPath, { force: true });
174
- } catch (error) {
175
- if (strict) throw error; // No ownership inference or force-delete after a failed read.
176
- /* Legacy: already gone, or unreadable — this process must not force removal. */
177
- }
178
- }
@@ -1,79 +0,0 @@
1
- interface Finalizer {
2
- label: string;
3
- run: () => void | Promise<void>;
4
- }
5
-
6
- const FINALIZER_ERRORS = Symbol("pi-daddy.finalizer-errors");
7
-
8
- type ErrorWithFinalizers = Error & { [FINALIZER_ERRORS]?: unknown[] };
9
-
10
- /**
11
- * Run every finalizer without allowing one of their failures to replace the operation's primary error.
12
- *
13
- * Error identity is preserved when possible: refusal codes and `instanceof` checks are part of callers'
14
- * control flow. Finalizer failures are attached and added to the primary message instead of wrapping it.
15
- */
16
- export async function runWithFinalizers<T>(operation: () => Promise<T>, finalizers: readonly Finalizer[]): Promise<T> {
17
- let primaryPresent = false;
18
- let primary: unknown;
19
- let result: T | undefined;
20
-
21
- try {
22
- result = await operation();
23
- } catch (error) {
24
- primaryPresent = true;
25
- primary = error;
26
- }
27
-
28
- const failures: Array<{ label: string; error: unknown }> = [];
29
- for (const finalizer of finalizers) {
30
- try {
31
- await finalizer.run();
32
- } catch (error) {
33
- failures.push({ label: finalizer.label, error });
34
- }
35
- }
36
-
37
- if (primaryPresent) {
38
- if (failures.length > 0) throw appendFinalizerFailures(primary, failures);
39
- throw primary;
40
- }
41
- if (failures.length === 1) throw failures[0].error;
42
- if (failures.length > 1) {
43
- throw new AggregateError(
44
- failures.map((failure) => failure.error),
45
- failures.map((failure) => `${failure.label}: ${String(failure.error)}`).join("; "),
46
- );
47
- }
48
- return result as T;
49
- }
50
-
51
- /** True when a primary error retained a finalizer failure of the requested kind. */
52
- export function hasFinalizerError(error: unknown, predicate: (value: unknown) => boolean): boolean {
53
- return error instanceof Error && (error as ErrorWithFinalizers)[FINALIZER_ERRORS]?.some(predicate) === true;
54
- }
55
-
56
- function appendFinalizerFailures(primary: unknown, failures: ReadonlyArray<{ label: string; error: unknown }>): unknown {
57
- if (primary instanceof Error) {
58
- const target = primary as ErrorWithFinalizers;
59
- try {
60
- const prior = target[FINALIZER_ERRORS] ?? [];
61
- Object.defineProperty(target, FINALIZER_ERRORS, {
62
- configurable: true,
63
- value: [...prior, ...failures.map((failure) => failure.error)],
64
- });
65
- target.message = [
66
- target.message,
67
- ...failures.map((failure) => `${failure.label}: ${String(failure.error)}`),
68
- ].join("; ");
69
- return target;
70
- } catch {
71
- // A frozen foreign error cannot be annotated. Keep it as the first AggregateError member and cause.
72
- }
73
- }
74
- return new AggregateError(
75
- [primary, ...failures.map((failure) => failure.error)],
76
- [String(primary), ...failures.map((failure) => `${failure.label}: ${String(failure.error)}`)].join("; "),
77
- { cause: primary },
78
- );
79
- }
@@ -1,56 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { mkdtemp, rm } from "node:fs/promises";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
- import { promisify } from "node:util";
6
- import { runWithFinalizers } from "./finalization.ts";
7
- import { GovernanceRefusal, refusal } from "./refusals.ts";
8
- import type { ValidatedWorkspace } from "./workspace.ts";
9
-
10
- const execFileAsync = promisify(execFile);
11
-
12
- export interface GitCandidateIdentity {
13
- headSha: string;
14
- treeSha: string;
15
- }
16
-
17
- /** Compute HEAD plus NON-IGNORED tracked/untracked candidate content without changing the real index.
18
- *
19
- * NOT the exact working tree: `git add -A` honours `.gitignore`, `core.excludesFile` and
20
- * `$GIT_DIR/info/exclude`, and records only a gitlink for a submodule. And it is not read-only — it writes
21
- * blob objects into the real `.git/objects`. `docs/SPEC.md` retracted the word "exact"; this comment said
22
- * it for one more round. */
23
- export async function computeGitCandidateIdentity(workspace: ValidatedWorkspace): Promise<GitCandidateIdentity> {
24
- const dir = await mkdtemp(join(tmpdir(), "pi-daddy-index-"));
25
- const index = join(dir, "index");
26
- const env: NodeJS.ProcessEnv = {
27
- PATH: process.env.PATH,
28
- HOME: process.env.HOME,
29
- LANG: process.env.LANG,
30
- LC_ALL: process.env.LC_ALL,
31
- TMPDIR: process.env.TMPDIR,
32
- GIT_INDEX_FILE: index,
33
- };
34
- const git = async (args: string[]) => (await execFileAsync("git", ["-C", workspace.root, ...args], {
35
- env, encoding: "utf8", maxBuffer: 16 * 1024 * 1024,
36
- })).stdout.trim();
37
- return runWithFinalizers(async () => {
38
- try {
39
- const headSha = await git(["rev-parse", "HEAD"]);
40
- await git(["read-tree", "HEAD"]);
41
- await git(["add", "-A"]);
42
- const treeSha = await git(["write-tree"]);
43
- if (!/^[a-f0-9]{40,64}$/i.test(headSha) || !/^[a-f0-9]{40,64}$/i.test(treeSha)) throw new Error("Git returned an invalid object id");
44
- return { headSha, treeSha };
45
- } catch (error) {
46
- throw new GovernanceRefusal(refusal(
47
- "CHECK_IDENTITY_UNAVAILABLE",
48
- `could not compute exact Git head/candidate-tree identity for workspace ${workspace.workspaceId} (${String(error)})`,
49
- { workspace_id: workspace.workspaceId },
50
- ));
51
- }
52
- }, [{
53
- label: "temporary Git index cleanup failed",
54
- run: () => rm(dir, { recursive: true, force: true }),
55
- }]);
56
- }
package/src/grant-env.ts DELETED
@@ -1,221 +0,0 @@
1
- /**
2
- * The `.pi/grants.env` an operator reads, edits and commits — and what `init` refuses to put in it live.
3
- *
4
- * Split out of `init.ts` when ADR-0029's grant-width rule pushed that file past the 400-line ceiling and
5
- * `test/file-size.test.ts` refused it. The seam is the natural one: `init.ts` decides *what is true about
6
- * the installed packages*, this file decides *how that is presented to a human for review*.
7
- *
8
- * **ADR-0029.** `init` used to emit the union of every declared ceiling as a live grant. A critic's reading
9
- * killed it in one sentence: the handoff's safety argument for a third party authoring `allowed-tools` is
10
- * that *"the operator's `PI_GRANTS_GRANT` still bounds it"* — and a generated union makes the bound and the
11
- * bounded have the same author, who is not the operator. So capabilities that can change a machine are
12
- * emitted **commented**, with the definitions that need them named. `init` + `source` yields a working
13
- * read-only setup; the wide ones cost one deliberate uncomment.
14
- *
15
- * That is a decision about the **starting grant**, which is a stronger act than choosing a ceiling and is
16
- * why it needed its own ADR rather than a paragraph in ADR-0028.
17
- */
18
-
19
- import { DELEGATE_CAPABILITY } from "./capabilities.ts";
20
- import { DEFAULT_GATED } from "./propagation.ts";
21
- import { UNIVERSAL_CAPABILITIES, type Capability } from "./resolve.ts";
22
-
23
- /**
24
- * Capabilities `init` will never put LIVE in a generated grant.
25
- *
26
- * **This list is a judgement, and it is written down in one place so it can be argued with** — which is the
27
- * whole reason ADR-0029 exists. The rule behind it: a capability that can *change the machine* or *execute*
28
- * does not become live because a package asked for it. Everything else (reading, searching, listing) does.
29
- *
30
- * - `DEFAULT_GATED` — whatever a governed session already asks a human about. Today `tool:bash`, and taking
31
- * it from there rather than restating it means the two cannot drift apart.
32
- * - `tool:write`, `tool:edit`, `tool:edit-diff` — mutate the working tree, and **are not gated by default**,
33
- * so a source-and-go operator would hand them to a child with no dialog at all. That gap is exactly what
34
- * made "the union is mitigated by gating" untrue (R-76).
35
- * - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (`docs/probes/pi-fabric-eval`).
36
- * `assertNarrowing` refuses a grant containing one anyway; leaving it out of the file keeps the operator
37
- * from ever holding it by accident.
38
- */
39
- export const WITHHELD_BY_DEFAULT: readonly Capability[] = [
40
- ...new Set([...DEFAULT_GATED, "tool:write", "tool:edit", "tool:edit-diff", ...UNIVERSAL_CAPABILITIES]),
41
- ];
42
-
43
- /** Would `init` put this capability in the live grant? */
44
- export function isLiveByDefault(capability: Capability): boolean {
45
- // No `workspace:<id>` is ever live by default (ADR-0035), and this is the same rule the list above states
46
- // rather than a new one: authority "does not become live because a package asked for it". A registry id is
47
- // a *choice of where a child runs*, which is the operator's to make and cannot be inferred from a
48
- // declaration — ADR-0028's whole position. Enumerated ids are unbounded, so this is a namespace test and
49
- // not a list membership.
50
- if (capability.startsWith("workspace:")) return false;
51
- return !WITHHELD_BY_DEFAULT.includes(capability);
52
- }
53
-
54
- /**
55
- * Every character allowed in a generated `PI_GRANTS_GRANT` value.
56
- *
57
- * **A structural backstop, not the main defence** (R-78). The per-entry whitelist in `skill-packages.ts` is
58
- * what refuses a hostile capability id; this refuses to write the FILE AT ALL if anything unexpected reached
59
- * the string regardless. R-77 and R-78 were the same defect found twice, on two channels into one
60
- * interpolation, so the third channel — whatever it turns out to be — should cost a refusal rather than an
61
- * injection. A guard that depends on my enumeration being complete is not a guard.
62
- */
63
- const GRANT_VALUE = /^[A-Za-z0-9:@,._/-]*$/;
64
-
65
- export class UnsafeGrantError extends Error {}
66
-
67
- /** Throw rather than write a grant string that could mean something to a shell. */
68
- export function assertGrantIsWritable(grant: Capability[]): void {
69
- const value = grant.join(",");
70
- if (!GRANT_VALUE.test(value)) {
71
- throw new UnsafeGrantError(
72
- `refusing to write .pi/grants.env: the assembled grant contains characters that are not part of a ` +
73
- `capability id (${JSON.stringify(value)}). This file is meant to be sourced by a shell, so it is ` +
74
- `not written at all rather than written unsafely. Report this — a declared capability reached the ` +
75
- `grant that should have been refused at discovery.`,
76
- );
77
- }
78
- }
79
-
80
- /** One definition's declared ceiling, as far as the grant file is concerned. */
81
- export interface GrantEnvSkill {
82
- name: string;
83
- ceiling: Capability[];
84
- /** Present when the definition cannot be spawned at all; the string is why, for the reader. */
85
- unspawnable?: string;
86
- }
87
-
88
- export interface GrantEnvInput {
89
- skills: GrantEnvSkill[];
90
- /** Capabilities emitted live. */
91
- live: Capability[];
92
- /** Withheld capability → the definitions that declared it. Emitted commented, for a deliberate uncomment. */
93
- withheld: Map<Capability, string[]>;
94
- /** Definitions whose `agent:` id is withheld because they need a withheld capability. */
95
- withheldDefinitions: string[];
96
- /** `workspace:<id>` ids this project could route to (ADR-0035). Rendered commented, never granted. */
97
- routableWorkspaces?: Capability[];
98
- /** `agent:<name>` ids a ceiling names that `init` did not write here. Reported, never granted. */
99
- crossReferences: { from: string; capability: Capability }[];
100
- cautions: string[];
101
- }
102
-
103
- /**
104
- * Render the file.
105
- *
106
- * Every capability is annotated with the definition it came from, because the whole claim of this feature is
107
- * that the capability decision is visible and diffable. A grant nobody can read is a grant nobody reviews.
108
- */
109
- export function renderGrantEnv(input: GrantEnvInput): string {
110
- const lines = [
111
- "# .pi/grants.env — written by `pi-daddy init`. REVIEW IT, then commit it.",
112
- "#",
113
- "# Every capability below was read from a SKILL.md's own `allowed-tools`. pi-daddy chose none of them:",
114
- "# a ceiling belongs in a file a human reviews, not in a default applied when a sub-agent is spawned.",
115
- "# Delete an `agent:` id to withhold that definition; delete a `tool:` id to withhold that tool from",
116
- "# every child. You cannot grant a child what this session does not hold, so this file is the ceiling",
117
- "# over the whole delegation tree.",
118
- "#",
119
- ];
120
-
121
- const spawnable = input.skills.filter((s) => !s.unspawnable);
122
- if (spawnable.length > 0) {
123
- lines.push("# What each definition declares — a child receives this ∩ the grant below:");
124
- const width = Math.max(...spawnable.map((s) => s.name.length));
125
- for (const skill of spawnable) {
126
- lines.push(`# ${skill.name.padEnd(width)} ${skill.ceiling.join(", ") || "(nothing — a child with no tools)"}`);
127
- }
128
- lines.push("#");
129
- }
130
-
131
- const unspawnable = input.skills.filter((s) => s.unspawnable);
132
- if (unspawnable.length > 0) {
133
- lines.push("# NOT AUTHORISED — pi-daddy refuses to spawn these, so no `agent:` id is granted for them:");
134
- for (const skill of unspawnable) lines.push(`# ${skill.name}: ${skill.unspawnable}`);
135
- lines.push("#");
136
- }
137
-
138
- // ADR-0029. The wide capabilities, commented, with the definitions that need them named — so authorising
139
- // one is a deliberate act and reading the file tells you exactly what it buys and what it costs.
140
- if (input.withheld.size > 0) {
141
- lines.push(
142
- "# WITHHELD BY DEFAULT — these can change your machine, so `pi-daddy init` does not grant them.",
143
- "# Uncomment a capability to authorise it for every child, then add the definitions that need it to",
144
- "# PI_GRANTS_GRANT below. `tool:bash` is asked about at spawn time as well; `tool:write` and",
145
- "# `tool:edit` are NOT, so granting them here is the whole decision.",
146
- );
147
- const width = Math.max(...[...input.withheld.keys()].map((c) => c.length));
148
- for (const [capability, needed] of [...input.withheld].sort()) {
149
- lines.push(`# ${capability.padEnd(width)} (${needed.join(", ")})`);
150
- }
151
- lines.push("#");
152
- }
153
-
154
- // OUTSIDE the block above, and that is the fix. This is the file's only statement that a withheld
155
- // definition's `agent:` id must be granted too — and it used to render only when `withheld` was non-empty,
156
- // so a package whose sole withheld capability is a ROUTING id (the common read-only routing case) lost it
157
- // entirely once `workspace:` ids stopped going into that map. The reason line above still said "see below"
158
- // and pointed at nothing.
159
- if (input.withheldDefinitions.length > 0) {
160
- lines.push(
161
- `# …and then: ${input.withheldDefinitions.map((n) => `agent:${n}`).join(",")}`,
162
- "# Their `agent:` ids are withheld too: a definition that cannot receive what it declares would",
163
- "# be authorised to run and then refused, which is a worse answer than not being authorised.",
164
- "#",
165
- );
166
- }
167
-
168
- // ADR-0035. Routing became a capability in 0.19.0, which made every existing grant that routes start
169
- // refusing — so the migration has to be visible from the file the operator already opens. Listed and NOT
170
- // granted: which worktree a child starts in is the operator's decision and cannot be read off a
171
- // declaration (ADR-0028), and granting one because a package named it is the "does not become live because
172
- // a package asked for it" rule that `WITHHELD_BY_DEFAULT` above states.
173
- if (input.routableWorkspaces && input.routableWorkspaces.length > 0) {
174
- lines.push(
175
- "# ROUTABLE WORKSPACES — routing a child to a registered worktree needs the id in PI_GRANTS_GRANT",
176
- "# (ADR-0035, 0.19.0). Without it a delegation naming one is refused WORKSPACE_NOT_AUTHORIZED. Add the",
177
- "# ones this project's children may start in; a child can only pass on ids it holds itself, so this is",
178
- "# also the list of what any DESCENDANT could reach. Not granted for you: `workspace:*` exists but is",
179
- "# held and never inherited, which makes it the wrong answer for anything but a single-worktree setup.",
180
- );
181
- for (const capability of input.routableWorkspaces) lines.push(`# ${capability}`);
182
- lines.push("#");
183
- }
184
-
185
- // A ceiling may legitimately name `agent:<other>` — that is how a delegator is told what IT may spawn.
186
- // Granting one for a definition `init` did not write would authorise a file from some other skill root
187
- // that the operator is not reviewing here, which is the same objection rule 3 makes to undeclared skills.
188
- if (input.crossReferences.length > 0) {
189
- lines.push("# NOT GRANTED — a definition here names another definition that pi-daddy did not write:");
190
- for (const ref of input.crossReferences) {
191
- lines.push(`# ${ref.from} declares ${ref.capability}, which is not one of the definitions above.`);
192
- }
193
- lines.push(
194
- "# Add it by hand if you mean it — it would authorise spawning that name from ANY skill root,",
195
- "# including ~/.pi/agent/skills, which other tools install into.",
196
- "#",
197
- );
198
- }
199
-
200
- for (const caution of input.cautions) lines.push(`# CAUTION: ${caution}`);
201
- if (input.cautions.length > 0) lines.push("#");
202
-
203
- lines.push(
204
- "# tool:delegate is what registers the delegation tools at all — withhold it and this session is a leaf.",
205
- `export PI_GRANTS_GRANT="${input.live.join(",")}"`,
206
- "",
207
- "# Init enables this project ledger. It is LOAD-BEARING: a spawn that cannot be recorded is refused.",
208
- '# PI_GRANTS_LEDGER still overrides the stored default used by plain `pi` after `/grants init`.',
209
- 'export PI_GRANTS_LEDGER=".pi/grants.jsonl"',
210
- "",
211
- "# Optional. tool:bash is ALREADY gated by default, so this line only matters if you widen it:",
212
- "# gating is closed under subsumption, so gating tool:write also gates tool:bash (bash can write).",
213
- '#export PI_GRANTS_GATED="tool:bash,tool:write"',
214
- "",
215
- );
216
-
217
- return lines.join("\n");
218
- }
219
-
220
- /** The capability that must always be live, or the generated file is inert (S-5). */
221
- export const ALWAYS_LIVE: Capability = DELEGATE_CAPABILITY;