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
@@ -0,0 +1,294 @@
1
+ /**
2
+ * One record envelope for every append-only store (ADR-0076 PR 3d).
3
+ *
4
+ * A line is `{ v, seq, prev, at, kind, id, body, digest }`: `prev` is the SHA-256 of the previous line's
5
+ * bytes (null for the first), `digest` the SHA-256 of the canonical JSON of the record without `digest`.
6
+ * Writes go under the existing file lock and read only the tail, so an append is O(tail), not O(file).
7
+ *
8
+ * Damage policy (operator decision, 2026-09-21): the reader returns every intact record before the first
9
+ * damaged line plus one marker naming that line; the writer refuses `LEDGER_DAMAGED` until `repairLedger`
10
+ * truncates the torn tail with the caller's explicit consent. Governance fails closed (no spawn goes
11
+ * unrecorded), history stays readable, repair is a deliberate act that shows what it drops.
12
+ *
13
+ * Stated limit: the WRITER inspects only the last line, so a record tampered in the middle of the file does not
14
+ * stop appends; it shows as damage on every READ (report, dashboard, timeline), and a repair there would drop
15
+ * every intact record after it. That is why repair previews by default and why the preview names records it
16
+ * would drop that still parse. Whole-file verification is the reader's job, not the writer's.
17
+ */
18
+ import { createHash } from "node:crypto";
19
+ import { randomUUID } from "node:crypto";
20
+ import { appendFile, mkdir, open, readFile, stat, truncate } from "node:fs/promises";
21
+ import { dirname } from "node:path";
22
+ import { GovernanceRefusal, refusal } from "../kernel/refusals.ts";
23
+ import { withFileLock } from "./file-lock.ts";
24
+
25
+ export const RECORD_FORMAT = 1 as const;
26
+ export const RECORD_KINDS = [
27
+ "binding",
28
+ "capability",
29
+ "lifecycle",
30
+ "approval",
31
+ "lease",
32
+ "check",
33
+ "fact",
34
+ "work",
35
+ "control",
36
+ "experiment",
37
+ "activity",
38
+ "advice",
39
+ ] as const;
40
+ export type RecordKind = (typeof RECORD_KINDS)[number];
41
+ export const LEDGER_DAMAGED = "LEDGER_DAMAGED" as const;
42
+
43
+ export interface RecordEnvelope<B = unknown> {
44
+ v: typeof RECORD_FORMAT;
45
+ seq: number;
46
+ prev: string | null;
47
+ at: string;
48
+ kind: RecordKind;
49
+ id: string;
50
+ body: B;
51
+ /** Present when the record was copied from a pre-format store; the original is left untouched. */
52
+ imported?: { path: string; line: number };
53
+ digest: string;
54
+ }
55
+
56
+ export interface RecordDamage {
57
+ line: number;
58
+ reason: string;
59
+ }
60
+
61
+ export interface ReadRecords<B = unknown> {
62
+ records: RecordEnvelope<B>[];
63
+ damage: RecordDamage | null;
64
+ }
65
+
66
+ /** Deterministic JSON: sorted object keys at every level, arrays in order. No `undefined` survives. */
67
+ export function canonicalJson(value: unknown): string {
68
+ if (value === null || typeof value !== "object") return JSON.stringify(value);
69
+ if (Array.isArray(value)) return `[${value.map((v) => canonicalJson(v === undefined ? null : v)).join(",")}]`;
70
+ const entries = Object.entries(value as Record<string, unknown>)
71
+ .filter(([, v]) => v !== undefined)
72
+ .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
73
+ return `{${entries.map(([k, v]) => `${JSON.stringify(k)}:${canonicalJson(v)}`).join(",")}}`;
74
+ }
75
+
76
+ const sha256 = (text: string) => createHash("sha256").update(text, "utf8").digest("hex");
77
+
78
+ export function recordDigest(record: object): string {
79
+ const { digest: _drop, ...rest } = record as Record<string, unknown>;
80
+ return sha256(canonicalJson(rest));
81
+ }
82
+
83
+ const HEX64 = /^[0-9a-f]{64}$/;
84
+ /** Damage reasons that mean "this is not a record file at all" rather than "a record file with a torn tail". */
85
+ export const PRE_FORMAT_REASONS: ReadonlySet<string> = new Set([
86
+ "unknown format version",
87
+ "not an object",
88
+ "invalid seq",
89
+ "invalid prev",
90
+ "invalid timestamp",
91
+ "unknown kind",
92
+ "invalid id",
93
+ "missing body",
94
+ "invalid digest",
95
+ ]);
96
+
97
+ /** Parse one line; returns a reason string when it is not a well-formed record of this format. */
98
+ function parseLine(line: string): { record: RecordEnvelope } | { reason: string } {
99
+ let value: unknown;
100
+ try {
101
+ value = JSON.parse(line);
102
+ } catch {
103
+ return { reason: "unterminated or unparsable line" };
104
+ }
105
+ if (!value || typeof value !== "object" || Array.isArray(value)) return { reason: "not an object" };
106
+ const r = value as Record<string, unknown>;
107
+ if (r.v !== RECORD_FORMAT) return { reason: "unknown format version" };
108
+ if (typeof r.seq !== "number" || !Number.isInteger(r.seq) || r.seq < 1) return { reason: "invalid seq" };
109
+ if (!(r.prev === null || (typeof r.prev === "string" && HEX64.test(r.prev)))) return { reason: "invalid prev" };
110
+ if (typeof r.at !== "string" || Number.isNaN(Date.parse(r.at))) return { reason: "invalid timestamp" };
111
+ if (typeof r.kind !== "string" || !(RECORD_KINDS as readonly string[]).includes(r.kind))
112
+ return { reason: "unknown kind" };
113
+ if (typeof r.id !== "string" || r.id.length === 0 || r.id.length > 128) return { reason: "invalid id" };
114
+ if (!("body" in r)) return { reason: "missing body" };
115
+ if (typeof r.digest !== "string" || !HEX64.test(r.digest)) return { reason: "invalid digest" };
116
+ const record = r as unknown as RecordEnvelope;
117
+ if (recordDigest(record) !== record.digest) return { reason: "digest mismatch" };
118
+ return { record };
119
+ }
120
+
121
+ /** Read every intact record before the first damaged line. Never throws on content; damage is data. */
122
+ export function readRecords<B = unknown>(text: string): ReadRecords<B> {
123
+ const records: RecordEnvelope<B>[] = [];
124
+ if (text.length === 0) return { records, damage: null };
125
+ const terminated = text.endsWith("\n");
126
+ const lines = text.split("\n");
127
+ if (terminated) lines.pop();
128
+ let prevLine: string | null = null;
129
+ for (let index = 0; index < lines.length; index += 1) {
130
+ const line = lines[index];
131
+ const lineNumber = index + 1;
132
+ const last = index === lines.length - 1;
133
+ if (last && !terminated)
134
+ return { records, damage: { line: lineNumber, reason: "unterminated or unparsable line" } };
135
+ const parsed = parseLine(line);
136
+ if ("reason" in parsed) return { records, damage: { line: lineNumber, reason: parsed.reason } };
137
+ const { record } = parsed;
138
+ if (record.seq !== records.length + 1) return { records, damage: { line: lineNumber, reason: "sequence gap" } };
139
+ const expectedPrev = prevLine === null ? null : sha256(prevLine);
140
+ if (record.prev !== expectedPrev) return { records, damage: { line: lineNumber, reason: "prev hash mismatch" } };
141
+ records.push(record as RecordEnvelope<B>);
142
+ prevLine = line;
143
+ }
144
+ return { records, damage: null };
145
+ }
146
+
147
+ export async function readRecordsFile<B = unknown>(path: string): Promise<ReadRecords<B>> {
148
+ try {
149
+ return readRecords<B>(await readFile(path, "utf8"));
150
+ } catch (error) {
151
+ if ((error as NodeJS.ErrnoException).code === "ENOENT") return { records: [], damage: null };
152
+ throw error;
153
+ }
154
+ }
155
+
156
+ /** The last complete line and its sequence, reading only the file's tail. Damage is reported, not skipped. */
157
+ async function tail(path: string): Promise<{ seq: number; prevLine: string | null } | { damage: RecordDamage }> {
158
+ let size: number;
159
+ try {
160
+ size = (await stat(path)).size;
161
+ } catch (error) {
162
+ if ((error as NodeJS.ErrnoException).code === "ENOENT") return { seq: 0, prevLine: null };
163
+ throw error;
164
+ }
165
+ if (size === 0) return { seq: 0, prevLine: null };
166
+ const window = Math.min(size, 256 * 1024);
167
+ const handle = await open(path, "r");
168
+ try {
169
+ const buffer = Buffer.alloc(window);
170
+ await handle.read(buffer, 0, window, size - window);
171
+ const text = buffer.toString("utf8");
172
+ if (!text.endsWith("\n")) return { damage: { line: -1, reason: "unterminated or unparsable line" } };
173
+ const body = text.slice(0, -1);
174
+ const cut = body.lastIndexOf("\n");
175
+ const lastLine = cut === -1 ? body : body.slice(cut + 1);
176
+ if (cut === -1 && window < size) {
177
+ // The last record is larger than the window: read the whole file once rather than call it damage.
178
+ const whole = (await readFile(path, "utf8")).slice(0, -1);
179
+ const wholeCut = whole.lastIndexOf("\n");
180
+ const wholeLast = wholeCut === -1 ? whole : whole.slice(wholeCut + 1);
181
+ const parsedWhole = parseLine(wholeLast);
182
+ if ("reason" in parsedWhole) return { damage: { line: -1, reason: parsedWhole.reason } };
183
+ return { seq: parsedWhole.record.seq, prevLine: wholeLast };
184
+ }
185
+ const parsed = parseLine(lastLine);
186
+ if ("reason" in parsed) return { damage: { line: -1, reason: parsed.reason } };
187
+ return { seq: parsed.record.seq, prevLine: lastLine };
188
+ } finally {
189
+ await handle.close();
190
+ }
191
+ }
192
+
193
+ export interface AppendOptions {
194
+ id?: string;
195
+ at?: string;
196
+ imported?: { path: string; line: number };
197
+ }
198
+
199
+ /** Append one record under the file lock. Refuses LEDGER_DAMAGED when the tail is torn or invalid. */
200
+ export async function appendRecord<B>(
201
+ path: string,
202
+ kind: RecordKind,
203
+ body: B,
204
+ options: AppendOptions = {},
205
+ ): Promise<RecordEnvelope<B>> {
206
+ await mkdir(dirname(path), { recursive: true });
207
+ return withFileLock(path, "ledger", async () => {
208
+ const last = await tail(path);
209
+ if ("damage" in last) {
210
+ const where = last.damage.line === -1 ? "its last line" : `line ${last.damage.line}`;
211
+ const preFormat = PRE_FORMAT_REASONS.has(last.damage.reason);
212
+ throw new GovernanceRefusal(
213
+ refusal(
214
+ LEDGER_DAMAGED,
215
+ preFormat
216
+ ? `ledger ${path} predates the record format (${last.damage.reason}); do NOT repair it — run ` +
217
+ `\`pi-daddy ledger import ${path} <target>\` or point PI_DADDY_LEDGER at the imported project ledger`
218
+ : `ledger ${path} is damaged at ${where} (${last.damage.reason}); run ` +
219
+ `\`pi-daddy ledger repair ${path}\` to preview the torn tail, then retry with --yes`,
220
+ { path, reason: last.damage.reason, preFormat },
221
+ ),
222
+ );
223
+ }
224
+ const draft: Omit<RecordEnvelope<B>, "digest"> = {
225
+ v: RECORD_FORMAT,
226
+ seq: last.seq + 1,
227
+ prev: last.prevLine === null ? null : sha256(last.prevLine),
228
+ at: options.at ?? new Date().toISOString(),
229
+ kind,
230
+ id: options.id ?? randomUUID(),
231
+ body,
232
+ ...(options.imported ? { imported: options.imported } : {}),
233
+ };
234
+ // Digest the serialised round-trip, not the in-memory value: a body with `toJSON` (a Date, a class) would
235
+ // otherwise be written as one thing and digested as another, and the line would read back as damage.
236
+ const plain = JSON.parse(JSON.stringify(draft)) as Omit<RecordEnvelope<B>, "digest">;
237
+ const record: RecordEnvelope<B> = { ...plain, digest: recordDigest(plain) };
238
+ await appendFile(path, `${JSON.stringify(record)}\n`, { encoding: "utf8", mode: 0o600 });
239
+ return record;
240
+ });
241
+ }
242
+
243
+ export interface RepairResult {
244
+ /** The raw lines that were (or would be) dropped, in file order. */
245
+ dropped: string[];
246
+ /** Where the intact prefix ends, 1-based line count. */
247
+ keptLines: number;
248
+ /** How many dropped lines still parse as JSON objects: a tampered middle, not a torn tail. */
249
+ droppedParseable: number;
250
+ /** True when the file is not a record file at all (a pre-format ledger); nothing is ever truncated then. */
251
+ preFormat: boolean;
252
+ /** True when there was no file. */
253
+ missing: boolean;
254
+ }
255
+
256
+ /**
257
+ * Drop everything from the first damaged line on. `apply: false` previews. The repair never rewrites an
258
+ * intact record and never invents one; it only truncates, and only after the caller decided to.
259
+ */
260
+ export async function repairLedger(path: string, options: { apply: boolean }): Promise<RepairResult> {
261
+ return withFileLock(path, "ledger repair", async () => {
262
+ let text: string;
263
+ try {
264
+ text = await readFile(path, "utf8");
265
+ } catch (error) {
266
+ if ((error as NodeJS.ErrnoException).code === "ENOENT")
267
+ return { dropped: [], keptLines: 0, droppedParseable: 0, preFormat: false, missing: true };
268
+ throw error;
269
+ }
270
+ const read = readRecords(text);
271
+ if (read.damage === null)
272
+ return { dropped: [], keptLines: read.records.length, droppedParseable: 0, preFormat: false, missing: false };
273
+ const lines = text.split("\n");
274
+ if (text.endsWith("\n")) lines.pop();
275
+ const dropped = lines.slice(read.damage.line - 1);
276
+ const droppedParseable = dropped.filter((line) => {
277
+ try {
278
+ const v: unknown = JSON.parse(line);
279
+ return !!v && typeof v === "object" && !Array.isArray(v);
280
+ } catch {
281
+ return false;
282
+ }
283
+ }).length;
284
+ // A file whose FIRST line is not a record is a pre-format ledger. Repairing it would delete it whole; the
285
+ // only right action is to import it, so `apply` is refused here regardless of what the caller asked.
286
+ const preFormat = read.records.length === 0 && PRE_FORMAT_REASONS.has(read.damage.reason);
287
+ if (options.apply && !preFormat) {
288
+ const keep = lines.slice(0, read.damage.line - 1);
289
+ const bytes = Buffer.byteLength(keep.length > 0 ? `${keep.join("\n")}\n` : "", "utf8");
290
+ await truncate(path, bytes);
291
+ }
292
+ return { dropped, keptLines: read.damage.line - 1, droppedParseable, preFormat, missing: false };
293
+ });
294
+ }
@@ -0,0 +1,201 @@
1
+ import { Compile } from "typebox/compile";
2
+ import { parseRetentionJson } from "./retention-json.ts";
3
+ import type { ExecutionRetentionManifest } from "./execution-retention.ts";
4
+
5
+ const string = (maxLength = 512) => ({
6
+ type: "string",
7
+ minLength: 1,
8
+ maxLength,
9
+ pattern: "^[^\\u0000-\\u001f\\u007f]+$",
10
+ });
11
+ const nullable = (schema: object) => ({ anyOf: [schema, { type: "null" }] });
12
+ const literal = (value: unknown) => ({ const: value });
13
+ const closed = (properties: Record<string, object>) => ({
14
+ type: "object",
15
+ properties,
16
+ required: Object.keys(properties),
17
+ additionalProperties: false,
18
+ });
19
+ const hash = { type: "string", pattern: "^[a-f0-9]{64}$" };
20
+ const integer = { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER };
21
+ const uuid = { type: "string", pattern: "^[a-f0-9]{8}(?:-[a-f0-9]{4}){3}-[a-f0-9]{12}$" };
22
+ export const RETENTION_CONTENT_KINDS = [
23
+ "stdout",
24
+ "stderr",
25
+ "paneSnapshot",
26
+ "checkReceipt",
27
+ "result",
28
+ "session",
29
+ ] as const;
30
+ export const RETENTION_SCHEMA = freeze({
31
+ $schema: "https://json-schema.org/draft/2020-12/schema",
32
+ $id: "https://pi-daddy.local/contracts/execution-retention/v2/manifest.schema.json",
33
+ ...closed({
34
+ version: literal("2.0"),
35
+ archiveId: uuid,
36
+ identity: closed({
37
+ executionId: string(),
38
+ parentExecutionId: nullable(string()),
39
+ childId: string(),
40
+ toolCallId: nullable(string()),
41
+ executor: { enum: ["process", "herdr", "check"] },
42
+ taskDigest: nullable(hash),
43
+ definitionDigest: nullable(hash),
44
+ configurationDigest: hash,
45
+ workspaceId: nullable(string()),
46
+ }),
47
+ native: closed({
48
+ pid: nullable({ type: "integer", minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),
49
+ paneId: nullable(string(4096)),
50
+ agentName: nullable(string(4096)),
51
+ tabId: nullable(string(4096)),
52
+ sessionId: nullable(uuid),
53
+ sessionPath: nullable(string(4096)),
54
+ branchLeafId: nullable(string(128)),
55
+ }),
56
+ nativeSession: closed({
57
+ source: { enum: [null, "herdr-id", "herdr-path", "pi-session-file", "pi-session-manager"] },
58
+ status: { enum: ["missing", "verified", "invalid", "changed", "truncated", "unsupported"] },
59
+ sessionId: nullable(uuid),
60
+ sessionPath: nullable(string(4096)),
61
+ parentSessionPath: nullable(string(4096)),
62
+ branchLeafId: nullable(string(128)),
63
+ branchState: { enum: ["unknown", "observed"] },
64
+ lastPersistedEntryId: nullable(string(128)),
65
+ sha256: nullable(hash),
66
+ reason: nullable(string()),
67
+ }),
68
+ state: { enum: ["running", "terminal"] },
69
+ outcome: nullable(
70
+ closed({
71
+ code: nullable({ type: "integer", minimum: -2147483648, maximum: 2147483647 }),
72
+ signal: nullable(string(64)),
73
+ timedOut: { type: "boolean" },
74
+ aborted: { type: "boolean" },
75
+ truncated: { type: "boolean" },
76
+ failed: { type: "boolean" },
77
+ }),
78
+ ),
79
+ content: closed(
80
+ Object.fromEntries(
81
+ RETENTION_CONTENT_KINDS.map((kind) => [
82
+ kind,
83
+ {
84
+ oneOf: [
85
+ closed({ status: literal("missing"), path: literal(null), sha256: literal(null), bytes: literal(null) }),
86
+ closed({
87
+ status: literal("retained"),
88
+ path: { type: "string", pattern: `^${kind}-[a-f0-9]{64}\\.bin$` },
89
+ sha256: hash,
90
+ bytes: { ...integer, maximum: 1024 * 1024 },
91
+ }),
92
+ ],
93
+ },
94
+ ]),
95
+ ),
96
+ ),
97
+ coverage: closed({
98
+ complete: literal(false),
99
+ losses: { type: "array", items: string(), maxItems: 64, uniqueItems: true },
100
+ }),
101
+ acceptance: literal("not-assessed"),
102
+ }),
103
+ allOf: [
104
+ {
105
+ if: { properties: { state: literal("running") } },
106
+ then: { properties: { outcome: literal(null) } },
107
+ else: { properties: { outcome: { type: "object" } } },
108
+ },
109
+ {
110
+ if: { properties: { nativeSession: { properties: { branchState: literal("unknown") } } } },
111
+ then: {
112
+ properties: {
113
+ nativeSession: { properties: { branchLeafId: literal(null) } },
114
+ native: { properties: { branchLeafId: literal(null) } },
115
+ },
116
+ },
117
+ },
118
+ ],
119
+ });
120
+ const validator = Compile(RETENTION_SCHEMA);
121
+ function freeze<T>(value: T): T {
122
+ if (value && typeof value === "object") {
123
+ for (const child of Object.values(value)) freeze(child);
124
+ Object.freeze(value);
125
+ }
126
+ return value;
127
+ }
128
+
129
+ /** Closed, detached versioned wire builder; never authenticates the supplied observation. */
130
+ export function buildExecutionRetentionManifest(value: unknown): ExecutionRetentionManifest {
131
+ // Reject non-JSON objects/accessors instead of invoking serialization hooks while collecting evidence.
132
+ let nodes = 0;
133
+ const inspect = (x: unknown, depth: number): void => {
134
+ if (++nodes > 4096 || depth > 16) throw new TypeError("retention manifest exceeds bounds");
135
+ if (
136
+ x === null ||
137
+ typeof x === "string" ||
138
+ typeof x === "boolean" ||
139
+ (typeof x === "number" && Number.isSafeInteger(x))
140
+ )
141
+ return;
142
+ if (
143
+ !x ||
144
+ typeof x !== "object" ||
145
+ (!Array.isArray(x) && Object.getPrototypeOf(x) !== Object.prototype && Object.getPrototypeOf(x) !== null)
146
+ )
147
+ throw new TypeError("retention manifest must be JSON data");
148
+ if (
149
+ Array.isArray(x) &&
150
+ (Object.getPrototypeOf(x) !== Array.prototype ||
151
+ x.length > 256 ||
152
+ Reflect.ownKeys(x).length !== x.length + 1 ||
153
+ Array.from({ length: x.length }, (_, i) => String(i)).some((key) => !Object.hasOwn(x, key)))
154
+ )
155
+ throw new TypeError("retention arrays must be dense plain JSON arrays");
156
+ for (const key of Reflect.ownKeys(x)) {
157
+ if (Array.isArray(x) && key === "length") continue;
158
+ const d = Object.getOwnPropertyDescriptor(x, key)!;
159
+ if (typeof key !== "string" || !d.enumerable || !("value" in d))
160
+ throw new TypeError("retention manifest must be plain JSON data");
161
+ inspect(d.value, depth + 1);
162
+ }
163
+ };
164
+ inspect(value, 0);
165
+ if (!validator.Check(value)) throw new TypeError("invalid execution-retention 2.0 manifest");
166
+ const m = JSON.parse(JSON.stringify(value)) as ExecutionRetentionManifest;
167
+ if (
168
+ m.native.sessionId !== m.nativeSession.sessionId ||
169
+ m.native.sessionPath !== m.nativeSession.sessionPath ||
170
+ m.native.branchLeafId !== m.nativeSession.branchLeafId
171
+ ) {
172
+ throw new TypeError("native session projection mismatch");
173
+ }
174
+ for (const kind of RETENTION_CONTENT_KINDS) {
175
+ const ref = m.content[kind];
176
+ if (ref.status === "retained" && ref.path !== `${kind}-${ref.sha256}.bin`)
177
+ throw new TypeError("retention content identity mismatch");
178
+ }
179
+ if (
180
+ m.nativeSession.branchState === "observed" &&
181
+ (m.nativeSession.source !== "pi-session-manager" || m.nativeSession.status !== "verified")
182
+ )
183
+ throw new TypeError("unverified active native branch");
184
+ if (
185
+ m.nativeSession.status === "verified" &&
186
+ (!m.nativeSession.sessionId || !m.nativeSession.sha256 || m.content.session.sha256 !== m.nativeSession.sha256)
187
+ )
188
+ throw new TypeError("verified native session requires retained bytes");
189
+ return freeze(m);
190
+ }
191
+ export function parseExecutionRetentionManifest(text: string): ExecutionRetentionManifest {
192
+ if (Buffer.byteLength(text) > 64 * 1024) throw new TypeError("retention manifest exceeds bounds");
193
+ // Manifest numbers are integers; use the existing exact-token parser before lossy Number conversion.
194
+ let value: unknown;
195
+ try {
196
+ value = parseRetentionJson(text);
197
+ } catch {
198
+ throw new TypeError("invalid retention JSON");
199
+ }
200
+ return buildExecutionRetentionManifest(value);
201
+ }
@@ -0,0 +1,24 @@
1
+ /** Strict JSON framing for retention metadata/native records. Floats in native usage remain supported. */
2
+ export function parseRetentionJson(text: string, maxBytes = 64 * 1024): unknown {
3
+ if (Buffer.byteLength(text) > maxBytes) throw new TypeError("retention JSON exceeds bounds");
4
+ const value: unknown = JSON.parse(text);
5
+ const stack: Array<{ object: boolean; key: boolean; seen: Set<string> }> = [];
6
+ for (const match of text.matchAll(/"(?:[^"\\]|\\[\s\S])*"|[{}\[\],:]|[^\s{}\[\],:]+/g)) {
7
+ const token = match[0],
8
+ top = stack.at(-1);
9
+ if (token === "{" || token === "[") {
10
+ if (stack.length >= 64) throw new TypeError("retention JSON exceeds depth");
11
+ stack.push({ object: token === "{", key: token === "{", seen: new Set() });
12
+ } else if (token === "}" || token === "]") stack.pop();
13
+ else if (token === ",") {
14
+ if (top?.object) top.key = true;
15
+ } else if (token.startsWith('"') && top?.object && top.key) {
16
+ const key = JSON.parse(token) as string;
17
+ if (top.seen.has(key)) throw new TypeError("duplicate retention JSON member");
18
+ top.seen.add(key);
19
+ top.key = false;
20
+ } else if (/^-?\d/.test(token) && !Number.isFinite(Number(token)))
21
+ throw new TypeError("non-finite retention JSON number");
22
+ }
23
+ return value;
24
+ }