pi-daddy 0.27.4 → 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 (1000) 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 +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 +196 -0
  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 +78 -77
  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 +31 -14
  265. package/extensions/session-report.ts +60 -10
  266. package/extensions/session.ts +76 -66
  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 +5 -212
  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 -136
  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/approval-prompt.d.ts +0 -119
  405. package/dist/approval-prompt.d.ts.map +0 -1
  406. package/dist/approval-prompt.js +0 -133
  407. package/dist/approval-prompt.js.map +0 -1
  408. package/dist/approval-store.d.ts +0 -149
  409. package/dist/approval-store.d.ts.map +0 -1
  410. package/dist/approval-store.js +0 -314
  411. package/dist/approval-store.js.map +0 -1
  412. package/dist/approval.d.ts +0 -241
  413. package/dist/approval.d.ts.map +0 -1
  414. package/dist/approval.js +0 -268
  415. package/dist/approval.js.map +0 -1
  416. package/dist/capabilities.d.ts +0 -136
  417. package/dist/capabilities.d.ts.map +0 -1
  418. package/dist/capabilities.js +0 -203
  419. package/dist/capabilities.js.map +0 -1
  420. package/dist/catalog.d.ts +0 -98
  421. package/dist/catalog.d.ts.map +0 -1
  422. package/dist/catalog.js +0 -273
  423. package/dist/catalog.js.map +0 -1
  424. package/dist/chain.d.ts.map +0 -1
  425. package/dist/chain.js.map +0 -1
  426. package/dist/check-runner.d.ts +0 -66
  427. package/dist/check-runner.d.ts.map +0 -1
  428. package/dist/check-runner.js +0 -275
  429. package/dist/check-runner.js.map +0 -1
  430. package/dist/control-journal.d.ts +0 -20
  431. package/dist/control-journal.d.ts.map +0 -1
  432. package/dist/control-journal.js +0 -73
  433. package/dist/control-journal.js.map +0 -1
  434. package/dist/correlation.d.ts.map +0 -1
  435. package/dist/correlation.js +0 -231
  436. package/dist/correlation.js.map +0 -1
  437. package/dist/daily-dashboard-host.d.ts +0 -136
  438. package/dist/daily-dashboard-host.d.ts.map +0 -1
  439. package/dist/daily-dashboard-host.js +0 -164
  440. package/dist/daily-dashboard-host.js.map +0 -1
  441. package/dist/daily-panel.d.ts +0 -36
  442. package/dist/daily-panel.d.ts.map +0 -1
  443. package/dist/daily-panel.js +0 -84
  444. package/dist/daily-panel.js.map +0 -1
  445. package/dist/daily-view-input.d.ts +0 -44
  446. package/dist/daily-view-input.d.ts.map +0 -1
  447. package/dist/daily-view-input.js +0 -68
  448. package/dist/daily-view-input.js.map +0 -1
  449. package/dist/daily-view-render.d.ts +0 -5
  450. package/dist/daily-view-render.d.ts.map +0 -1
  451. package/dist/daily-view-render.js +0 -42
  452. package/dist/daily-view-render.js.map +0 -1
  453. package/dist/daily-view.d.ts +0 -77
  454. package/dist/daily-view.d.ts.map +0 -1
  455. package/dist/daily-view.js +0 -176
  456. package/dist/daily-view.js.map +0 -1
  457. package/dist/dashboard-cli.d.ts +0 -48
  458. package/dist/dashboard-cli.d.ts.map +0 -1
  459. package/dist/dashboard-cli.js +0 -331
  460. package/dist/dashboard-cli.js.map +0 -1
  461. package/dist/dashboard-display-controls.d.ts +0 -10
  462. package/dist/dashboard-display-controls.d.ts.map +0 -1
  463. package/dist/dashboard-display-controls.js +0 -25
  464. package/dist/dashboard-display-controls.js.map +0 -1
  465. package/dist/dashboard-handshake.d.ts +0 -37
  466. package/dist/dashboard-handshake.d.ts.map +0 -1
  467. package/dist/dashboard-handshake.js +0 -136
  468. package/dist/dashboard-handshake.js.map +0 -1
  469. package/dist/dashboard-harness.d.ts +0 -22
  470. package/dist/dashboard-harness.d.ts.map +0 -1
  471. package/dist/dashboard-harness.js +0 -89
  472. package/dist/dashboard-harness.js.map +0 -1
  473. package/dist/dashboard-herdr.d.ts +0 -55
  474. package/dist/dashboard-herdr.d.ts.map +0 -1
  475. package/dist/dashboard-herdr.js +0 -293
  476. package/dist/dashboard-herdr.js.map +0 -1
  477. package/dist/dashboard-host-contract.d.ts +0 -127
  478. package/dist/dashboard-host-contract.d.ts.map +0 -1
  479. package/dist/dashboard-host-contract.js +0 -14
  480. package/dist/dashboard-host-contract.js.map +0 -1
  481. package/dist/dashboard-host-transport.d.ts +0 -16
  482. package/dist/dashboard-host-transport.d.ts.map +0 -1
  483. package/dist/dashboard-host-transport.js +0 -127
  484. package/dist/dashboard-host-transport.js.map +0 -1
  485. package/dist/dashboard-host.d.ts +0 -239
  486. package/dist/dashboard-host.d.ts.map +0 -1
  487. package/dist/dashboard-host.js +0 -474
  488. package/dist/dashboard-host.js.map +0 -1
  489. package/dist/dashboard-menu.d.ts +0 -16
  490. package/dist/dashboard-menu.d.ts.map +0 -1
  491. package/dist/dashboard-menu.js +0 -33
  492. package/dist/dashboard-menu.js.map +0 -1
  493. package/dist/dashboard-observation.d.ts +0 -28
  494. package/dist/dashboard-observation.d.ts.map +0 -1
  495. package/dist/dashboard-observation.js +0 -87
  496. package/dist/dashboard-observation.js.map +0 -1
  497. package/dist/dashboard-projection.d.ts +0 -73
  498. package/dist/dashboard-projection.d.ts.map +0 -1
  499. package/dist/dashboard-projection.js +0 -294
  500. package/dist/dashboard-projection.js.map +0 -1
  501. package/dist/dashboard-render.d.ts.map +0 -1
  502. package/dist/dashboard-render.js +0 -212
  503. package/dist/dashboard-render.js.map +0 -1
  504. package/dist/debrief-contract.d.ts +0 -65
  505. package/dist/debrief-contract.d.ts.map +0 -1
  506. package/dist/debrief-contract.js +0 -151
  507. package/dist/debrief-contract.js.map +0 -1
  508. package/dist/debrief-fixture.d.ts +0 -16
  509. package/dist/debrief-fixture.d.ts.map +0 -1
  510. package/dist/debrief-fixture.js +0 -41
  511. package/dist/debrief-fixture.js.map +0 -1
  512. package/dist/debrief-host.d.ts +0 -59
  513. package/dist/debrief-host.d.ts.map +0 -1
  514. package/dist/debrief-host.js +0 -49
  515. package/dist/debrief-host.js.map +0 -1
  516. package/dist/debrief-render.d.ts +0 -5
  517. package/dist/debrief-render.d.ts.map +0 -1
  518. package/dist/debrief-render.js +0 -65
  519. package/dist/debrief-render.js.map +0 -1
  520. package/dist/debrief.d.ts +0 -90
  521. package/dist/debrief.d.ts.map +0 -1
  522. package/dist/debrief.js +0 -263
  523. package/dist/debrief.js.map +0 -1
  524. package/dist/definitions.d.ts.map +0 -1
  525. package/dist/definitions.js +0 -164
  526. package/dist/definitions.js.map +0 -1
  527. package/dist/delegate-types.d.ts +0 -146
  528. package/dist/delegate-types.d.ts.map +0 -1
  529. package/dist/delegate-types.js +0 -8
  530. package/dist/delegate-types.js.map +0 -1
  531. package/dist/delegate.d.ts.map +0 -1
  532. package/dist/delegate.js +0 -305
  533. package/dist/delegate.js.map +0 -1
  534. package/dist/delegation-approval.d.ts.map +0 -1
  535. package/dist/delegation-approval.js +0 -94
  536. package/dist/delegation-approval.js.map +0 -1
  537. package/dist/dispatch-control.d.ts +0 -45
  538. package/dist/dispatch-control.d.ts.map +0 -1
  539. package/dist/dispatch-control.js +0 -76
  540. package/dist/dispatch-control.js.map +0 -1
  541. package/dist/effect-profile-runtime.d.ts +0 -40
  542. package/dist/effect-profile-runtime.d.ts.map +0 -1
  543. package/dist/effect-profile-runtime.js +0 -51
  544. package/dist/effect-profile-runtime.js.map +0 -1
  545. package/dist/effect-profile.d.ts +0 -40
  546. package/dist/effect-profile.d.ts.map +0 -1
  547. package/dist/effect-profile.js +0 -152
  548. package/dist/effect-profile.js.map +0 -1
  549. package/dist/execution-id.d.ts.map +0 -1
  550. package/dist/execution-id.js.map +0 -1
  551. package/dist/execution-retention.d.ts +0 -90
  552. package/dist/execution-retention.d.ts.map +0 -1
  553. package/dist/execution-retention.js +0 -247
  554. package/dist/execution-retention.js.map +0 -1
  555. package/dist/executor.d.ts +0 -39
  556. package/dist/executor.d.ts.map +0 -1
  557. package/dist/executor.js +0 -94
  558. package/dist/executor.js.map +0 -1
  559. package/dist/experiment-contract.d.ts +0 -56
  560. package/dist/experiment-contract.d.ts.map +0 -1
  561. package/dist/experiment-contract.js +0 -80
  562. package/dist/experiment-contract.js.map +0 -1
  563. package/dist/experiment-state.d.ts +0 -22
  564. package/dist/experiment-state.d.ts.map +0 -1
  565. package/dist/experiment-state.js +0 -79
  566. package/dist/experiment-state.js.map +0 -1
  567. package/dist/experiment-store.d.ts +0 -30
  568. package/dist/experiment-store.d.ts.map +0 -1
  569. package/dist/experiment-store.js +0 -147
  570. package/dist/experiment-store.js.map +0 -1
  571. package/dist/experiment.d.ts +0 -65
  572. package/dist/experiment.d.ts.map +0 -1
  573. package/dist/experiment.js +0 -362
  574. package/dist/experiment.js.map +0 -1
  575. package/dist/factory-contract.d.ts +0 -79
  576. package/dist/factory-contract.d.ts.map +0 -1
  577. package/dist/factory-contract.js +0 -89
  578. package/dist/factory-contract.js.map +0 -1
  579. package/dist/factory-migration.d.ts +0 -20
  580. package/dist/factory-migration.d.ts.map +0 -1
  581. package/dist/factory-migration.js +0 -55
  582. package/dist/factory-migration.js.map +0 -1
  583. package/dist/factory-order.d.ts +0 -848
  584. package/dist/factory-order.d.ts.map +0 -1
  585. package/dist/factory-order.js +0 -83
  586. package/dist/factory-order.js.map +0 -1
  587. package/dist/factory-registry.d.ts +0 -121
  588. package/dist/factory-registry.d.ts.map +0 -1
  589. package/dist/factory-registry.js +0 -133
  590. package/dist/factory-registry.js.map +0 -1
  591. package/dist/fanout.d.ts.map +0 -1
  592. package/dist/fanout.js +0 -93
  593. package/dist/fanout.js.map +0 -1
  594. package/dist/file-lock.d.ts.map +0 -1
  595. package/dist/file-lock.js +0 -201
  596. package/dist/file-lock.js.map +0 -1
  597. package/dist/finalization.d.ts.map +0 -1
  598. package/dist/finalization.js.map +0 -1
  599. package/dist/git-identity.d.ts +0 -13
  600. package/dist/git-identity.d.ts.map +0 -1
  601. package/dist/git-identity.js +0 -47
  602. package/dist/git-identity.js.map +0 -1
  603. package/dist/grant-env.d.ts +0 -75
  604. package/dist/grant-env.d.ts.map +0 -1
  605. package/dist/grant-env.js +0 -154
  606. package/dist/grant-env.js.map +0 -1
  607. package/dist/grant-store.d.ts +0 -96
  608. package/dist/grant-store.d.ts.map +0 -1
  609. package/dist/grant-store.js +0 -188
  610. package/dist/grant-store.js.map +0 -1
  611. package/dist/herdr-cli.d.ts +0 -78
  612. package/dist/herdr-cli.d.ts.map +0 -1
  613. package/dist/herdr-cli.js +0 -113
  614. package/dist/herdr-cli.js.map +0 -1
  615. package/dist/herdr-name.d.ts.map +0 -1
  616. package/dist/herdr-name.js.map +0 -1
  617. package/dist/herdr-pi-lifecycle.d.ts.map +0 -1
  618. package/dist/herdr-pi-lifecycle.js +0 -22
  619. package/dist/herdr-pi-lifecycle.js.map +0 -1
  620. package/dist/herdr-poll.d.ts +0 -133
  621. package/dist/herdr-poll.d.ts.map +0 -1
  622. package/dist/herdr-poll.js +0 -222
  623. package/dist/herdr-poll.js.map +0 -1
  624. package/dist/herdr-stage.d.ts +0 -40
  625. package/dist/herdr-stage.d.ts.map +0 -1
  626. package/dist/herdr-stage.js +0 -54
  627. package/dist/herdr-stage.js.map +0 -1
  628. package/dist/herdr-start.d.ts.map +0 -1
  629. package/dist/herdr-start.js.map +0 -1
  630. package/dist/init.d.ts +0 -117
  631. package/dist/init.d.ts.map +0 -1
  632. package/dist/init.js +0 -323
  633. package/dist/init.js.map +0 -1
  634. package/dist/intent-application.d.ts +0 -17
  635. package/dist/intent-application.d.ts.map +0 -1
  636. package/dist/intent-application.js +0 -114
  637. package/dist/intent-application.js.map +0 -1
  638. package/dist/intent-control.d.ts +0 -201
  639. package/dist/intent-control.d.ts.map +0 -1
  640. package/dist/intent-control.js +0 -110
  641. package/dist/intent-control.js.map +0 -1
  642. package/dist/intent-scheduling.d.ts +0 -9
  643. package/dist/intent-scheduling.d.ts.map +0 -1
  644. package/dist/intent-scheduling.js +0 -15
  645. package/dist/intent-scheduling.js.map +0 -1
  646. package/dist/learning-connection.d.ts +0 -127
  647. package/dist/learning-connection.d.ts.map +0 -1
  648. package/dist/learning-connection.js +0 -54
  649. package/dist/learning-connection.js.map +0 -1
  650. package/dist/lease-helper.d.ts.map +0 -1
  651. package/dist/lease-helper.js +0 -94
  652. package/dist/lease-helper.js.map +0 -1
  653. package/dist/lease-record.d.ts +0 -90
  654. package/dist/lease-record.d.ts.map +0 -1
  655. package/dist/lease-record.js.map +0 -1
  656. package/dist/ledger-append.d.ts +0 -15
  657. package/dist/ledger-append.d.ts.map +0 -1
  658. package/dist/ledger-append.js +0 -94
  659. package/dist/ledger-append.js.map +0 -1
  660. package/dist/ledger-events.d.ts +0 -131
  661. package/dist/ledger-events.d.ts.map +0 -1
  662. package/dist/ledger-events.js +0 -107
  663. package/dist/ledger-events.js.map +0 -1
  664. package/dist/ledger-identifiers.d.ts.map +0 -1
  665. package/dist/ledger-identifiers.js.map +0 -1
  666. package/dist/ledger-report.d.ts +0 -134
  667. package/dist/ledger-report.d.ts.map +0 -1
  668. package/dist/ledger-report.js +0 -271
  669. package/dist/ledger-report.js.map +0 -1
  670. package/dist/ledger-v3-validation.d.ts +0 -11
  671. package/dist/ledger-v3-validation.d.ts.map +0 -1
  672. package/dist/ledger-v3-validation.js +0 -265
  673. package/dist/ledger-v3-validation.js.map +0 -1
  674. package/dist/ledger.d.ts +0 -242
  675. package/dist/ledger.d.ts.map +0 -1
  676. package/dist/ledger.js +0 -142
  677. package/dist/ledger.js.map +0 -1
  678. package/dist/measured-order.d.ts +0 -249
  679. package/dist/measured-order.d.ts.map +0 -1
  680. package/dist/measured-order.js +0 -309
  681. package/dist/measured-order.js.map +0 -1
  682. package/dist/measured-session.d.ts +0 -97
  683. package/dist/measured-session.d.ts.map +0 -1
  684. package/dist/measured-session.js +0 -134
  685. package/dist/measured-session.js.map +0 -1
  686. package/dist/model-preflight.d.ts +0 -13
  687. package/dist/model-preflight.d.ts.map +0 -1
  688. package/dist/model-preflight.js +0 -29
  689. package/dist/model-preflight.js.map +0 -1
  690. package/dist/native-session-target.d.ts +0 -9
  691. package/dist/native-session-target.d.ts.map +0 -1
  692. package/dist/native-session-target.js +0 -29
  693. package/dist/native-session-target.js.map +0 -1
  694. package/dist/native-session.d.ts +0 -59
  695. package/dist/native-session.d.ts.map +0 -1
  696. package/dist/native-session.js +0 -154
  697. package/dist/native-session.js.map +0 -1
  698. package/dist/order-schedule.d.ts +0 -37
  699. package/dist/order-schedule.d.ts.map +0 -1
  700. package/dist/order-schedule.js +0 -81
  701. package/dist/order-schedule.js.map +0 -1
  702. package/dist/ordinary-children.d.ts +0 -52
  703. package/dist/ordinary-children.d.ts.map +0 -1
  704. package/dist/ordinary-children.js +0 -93
  705. package/dist/ordinary-children.js.map +0 -1
  706. package/dist/pane-reaper.d.ts +0 -111
  707. package/dist/pane-reaper.d.ts.map +0 -1
  708. package/dist/pane-reaper.js +0 -242
  709. package/dist/pane-reaper.js.map +0 -1
  710. package/dist/pi-tools.d.ts.map +0 -1
  711. package/dist/pi-tools.js +0 -21
  712. package/dist/pi-tools.js.map +0 -1
  713. package/dist/producer-ipc-contract.d.ts +0 -29
  714. package/dist/producer-ipc-contract.d.ts.map +0 -1
  715. package/dist/producer-ipc-contract.js +0 -29
  716. package/dist/producer-ipc-contract.js.map +0 -1
  717. package/dist/producer-ipc.d.ts +0 -55
  718. package/dist/producer-ipc.d.ts.map +0 -1
  719. package/dist/producer-ipc.js +0 -143
  720. package/dist/producer-ipc.js.map +0 -1
  721. package/dist/product-files.d.ts +0 -6
  722. package/dist/product-files.d.ts.map +0 -1
  723. package/dist/product-files.js +0 -55
  724. package/dist/product-files.js.map +0 -1
  725. package/dist/progress.d.ts.map +0 -1
  726. package/dist/progress.js.map +0 -1
  727. package/dist/propagation.d.ts +0 -203
  728. package/dist/propagation.d.ts.map +0 -1
  729. package/dist/propagation.js +0 -279
  730. package/dist/propagation.js.map +0 -1
  731. package/dist/refusals.d.ts +0 -16
  732. package/dist/refusals.d.ts.map +0 -1
  733. package/dist/refusals.js +0 -55
  734. package/dist/refusals.js.map +0 -1
  735. package/dist/resolve.d.ts.map +0 -1
  736. package/dist/resolve.js +0 -211
  737. package/dist/resolve.js.map +0 -1
  738. package/dist/resource-budget.d.ts +0 -334
  739. package/dist/resource-budget.d.ts.map +0 -1
  740. package/dist/resource-budget.js +0 -415
  741. package/dist/resource-budget.js.map +0 -1
  742. package/dist/retention-contract.d.ts.map +0 -1
  743. package/dist/retention-contract.js +0 -104
  744. package/dist/retention-contract.js.map +0 -1
  745. package/dist/retention-json.d.ts.map +0 -1
  746. package/dist/retention-json.js.map +0 -1
  747. package/dist/routing-authority.d.ts.map +0 -1
  748. package/dist/routing-authority.js.map +0 -1
  749. package/dist/run-child.d.ts +0 -87
  750. package/dist/run-child.d.ts.map +0 -1
  751. package/dist/run-child.js +0 -248
  752. package/dist/run-child.js.map +0 -1
  753. package/dist/run-herdr.d.ts +0 -119
  754. package/dist/run-herdr.d.ts.map +0 -1
  755. package/dist/run-herdr.js +0 -335
  756. package/dist/run-herdr.js.map +0 -1
  757. package/dist/skill-packages.d.ts +0 -116
  758. package/dist/skill-packages.d.ts.map +0 -1
  759. package/dist/skill-packages.js +0 -295
  760. package/dist/skill-packages.js.map +0 -1
  761. package/dist/skill-resources.d.ts.map +0 -1
  762. package/dist/skill-resources.js +0 -52
  763. package/dist/skill-resources.js.map +0 -1
  764. package/dist/spawn.d.ts.map +0 -1
  765. package/dist/spawn.js.map +0 -1
  766. package/dist/vendor/adoption.d.ts +0 -129
  767. package/dist/vendor/adoption.d.ts.map +0 -1
  768. package/dist/vendor/adoption.js +0 -102
  769. package/dist/vendor/adoption.js.map +0 -1
  770. package/dist/vendor/herdr-pi-lifecycle.d.ts.map +0 -1
  771. package/dist/vendor/herdr-pi-lifecycle.js.map +0 -1
  772. package/dist/work-command.d.ts +0 -32
  773. package/dist/work-command.d.ts.map +0 -1
  774. package/dist/work-command.js +0 -179
  775. package/dist/work-command.js.map +0 -1
  776. package/dist/work-ledger-destination.d.ts +0 -20
  777. package/dist/work-ledger-destination.d.ts.map +0 -1
  778. package/dist/work-ledger-destination.js +0 -131
  779. package/dist/work-ledger-destination.js.map +0 -1
  780. package/dist/work-ledger-json.d.ts +0 -25
  781. package/dist/work-ledger-json.d.ts.map +0 -1
  782. package/dist/work-ledger-json.js +0 -267
  783. package/dist/work-ledger-json.js.map +0 -1
  784. package/dist/work-ledger-occurrences.d.ts +0 -227
  785. package/dist/work-ledger-occurrences.d.ts.map +0 -1
  786. package/dist/work-ledger-occurrences.js +0 -115
  787. package/dist/work-ledger-occurrences.js.map +0 -1
  788. package/dist/work-ledger-projection.d.ts +0 -295
  789. package/dist/work-ledger-projection.d.ts.map +0 -1
  790. package/dist/work-ledger-projection.js +0 -237
  791. package/dist/work-ledger-projection.js.map +0 -1
  792. package/dist/work-ledger-snapshot.d.ts +0 -29
  793. package/dist/work-ledger-snapshot.d.ts.map +0 -1
  794. package/dist/work-ledger-snapshot.js +0 -267
  795. package/dist/work-ledger-snapshot.js.map +0 -1
  796. package/dist/work-ledger-types.d.ts +0 -261
  797. package/dist/work-ledger-types.d.ts.map +0 -1
  798. package/dist/work-ledger-types.js +0 -13
  799. package/dist/work-ledger-types.js.map +0 -1
  800. package/dist/work-ledger-validation.d.ts +0 -14
  801. package/dist/work-ledger-validation.d.ts.map +0 -1
  802. package/dist/work-ledger-validation.js +0 -226
  803. package/dist/work-ledger-validation.js.map +0 -1
  804. package/dist/work-ledger.d.ts +0 -43
  805. package/dist/work-ledger.d.ts.map +0 -1
  806. package/dist/work-ledger.js +0 -225
  807. package/dist/work-ledger.js.map +0 -1
  808. package/dist/work-policy-registry.d.ts +0 -133
  809. package/dist/work-policy-registry.d.ts.map +0 -1
  810. package/dist/work-policy-registry.js +0 -128
  811. package/dist/work-policy-registry.js.map +0 -1
  812. package/dist/work-run.d.ts +0 -56
  813. package/dist/work-run.d.ts.map +0 -1
  814. package/dist/work-run.js +0 -102
  815. package/dist/work-run.js.map +0 -1
  816. package/dist/work-setup.d.ts +0 -40
  817. package/dist/work-setup.d.ts.map +0 -1
  818. package/dist/work-setup.js +0 -174
  819. package/dist/work-setup.js.map +0 -1
  820. package/dist/workflow-fact-id.d.ts +0 -4
  821. package/dist/workflow-fact-id.d.ts.map +0 -1
  822. package/dist/workflow-fact-id.js +0 -14
  823. package/dist/workflow-fact-id.js.map +0 -1
  824. package/dist/workflow-facts.d.ts +0 -34
  825. package/dist/workflow-facts.d.ts.map +0 -1
  826. package/dist/workflow-facts.js +0 -43
  827. package/dist/workflow-facts.js.map +0 -1
  828. package/dist/workspace-lease.d.ts +0 -40
  829. package/dist/workspace-lease.d.ts.map +0 -1
  830. package/dist/workspace-lease.js +0 -333
  831. package/dist/workspace-lease.js.map +0 -1
  832. package/dist/workspace.d.ts +0 -57
  833. package/dist/workspace.d.ts.map +0 -1
  834. package/dist/workspace.js +0 -216
  835. package/dist/workspace.js.map +0 -1
  836. package/extensions/daily-dashboard-session.ts +0 -48
  837. package/extensions/daily-work-session.ts +0 -20
  838. package/extensions/learning-outcome-session.ts +0 -38
  839. package/extensions/learning-session.ts +0 -59
  840. package/extensions/ordinary-runtime.ts +0 -14
  841. package/extensions/primary-shadow.ts +0 -11
  842. package/extensions/work-policy-session.ts +0 -139
  843. package/extensions/work-run-session.ts +0 -75
  844. package/extensions/work-runtime.ts +0 -44
  845. package/extensions/work-session.ts +0 -132
  846. package/src/approval-prompt.ts +0 -225
  847. package/src/approval-store.ts +0 -386
  848. package/src/approval.ts +0 -399
  849. package/src/capabilities.ts +0 -220
  850. package/src/catalog.ts +0 -306
  851. package/src/check-runner.ts +0 -387
  852. package/src/control-journal.ts +0 -26
  853. package/src/correlation.ts +0 -320
  854. package/src/daily-dashboard-host.ts +0 -105
  855. package/src/daily-panel.ts +0 -80
  856. package/src/daily-view-input.ts +0 -59
  857. package/src/daily-view-render.ts +0 -45
  858. package/src/daily-view.ts +0 -160
  859. package/src/dashboard-cli.ts +0 -315
  860. package/src/dashboard-display-controls.ts +0 -18
  861. package/src/dashboard-handshake.ts +0 -194
  862. package/src/dashboard-harness.ts +0 -37
  863. package/src/dashboard-herdr.ts +0 -363
  864. package/src/dashboard-host-contract.ts +0 -50
  865. package/src/dashboard-host-transport.ts +0 -43
  866. package/src/dashboard-host.ts +0 -244
  867. package/src/dashboard-menu.ts +0 -28
  868. package/src/dashboard-observation.ts +0 -46
  869. package/src/dashboard-projection.ts +0 -390
  870. package/src/dashboard-render.ts +0 -259
  871. package/src/debrief-contract.ts +0 -127
  872. package/src/debrief-fixture.ts +0 -29
  873. package/src/debrief-host.ts +0 -53
  874. package/src/debrief-render.ts +0 -49
  875. package/src/debrief.ts +0 -198
  876. package/src/definitions.ts +0 -211
  877. package/src/delegate-types.ts +0 -150
  878. package/src/delegate.ts +0 -341
  879. package/src/delegation-approval.ts +0 -126
  880. package/src/dispatch-control.ts +0 -81
  881. package/src/effect-profile-runtime.ts +0 -46
  882. package/src/effect-profile.ts +0 -129
  883. package/src/execution-retention.ts +0 -230
  884. package/src/executor.ts +0 -123
  885. package/src/experiment-contract.ts +0 -66
  886. package/src/experiment-state.ts +0 -44
  887. package/src/experiment-store.ts +0 -98
  888. package/src/experiment.ts +0 -236
  889. package/src/factory-contract.ts +0 -47
  890. package/src/factory-migration.ts +0 -29
  891. package/src/factory-order.ts +0 -56
  892. package/src/factory-registry.ts +0 -60
  893. package/src/fanout.ts +0 -106
  894. package/src/file-lock.ts +0 -178
  895. package/src/finalization.ts +0 -79
  896. package/src/git-identity.ts +0 -56
  897. package/src/grant-env.ts +0 -221
  898. package/src/grant-store.ts +0 -235
  899. package/src/herdr-cli.ts +0 -125
  900. package/src/herdr-pi-lifecycle.ts +0 -21
  901. package/src/herdr-poll.ts +0 -253
  902. package/src/herdr-stage.ts +0 -55
  903. package/src/init.ts +0 -389
  904. package/src/intent-application.ts +0 -91
  905. package/src/intent-control.ts +0 -107
  906. package/src/intent-scheduling.ts +0 -14
  907. package/src/learning-connection.ts +0 -70
  908. package/src/lease-helper.ts +0 -97
  909. package/src/lease-record.ts +0 -131
  910. package/src/ledger-append.ts +0 -72
  911. package/src/ledger-events.ts +0 -226
  912. package/src/ledger-report.ts +0 -357
  913. package/src/ledger-v3-validation.ts +0 -266
  914. package/src/ledger.ts +0 -369
  915. package/src/measured-order.ts +0 -72
  916. package/src/measured-session.ts +0 -70
  917. package/src/model-preflight.ts +0 -41
  918. package/src/native-session-target.ts +0 -23
  919. package/src/native-session.ts +0 -139
  920. package/src/order-schedule.ts +0 -42
  921. package/src/ordinary-children.ts +0 -59
  922. package/src/pane-reaper.ts +0 -270
  923. package/src/pi-tools.ts +0 -25
  924. package/src/producer-ipc-contract.ts +0 -26
  925. package/src/producer-ipc.ts +0 -107
  926. package/src/product-files.ts +0 -34
  927. package/src/propagation.ts +0 -333
  928. package/src/refusals.ts +0 -70
  929. package/src/resolve.ts +0 -267
  930. package/src/resource-budget.ts +0 -349
  931. package/src/retention-contract.ts +0 -84
  932. package/src/retention-json.ts +0 -20
  933. package/src/run-child.ts +0 -303
  934. package/src/run-herdr.ts +0 -386
  935. package/src/skill-packages.ts +0 -314
  936. package/src/skill-resources.ts +0 -48
  937. package/src/vendor/adoption.ts +0 -109
  938. package/src/work-command.ts +0 -197
  939. package/src/work-ledger-destination.ts +0 -113
  940. package/src/work-ledger-json.ts +0 -228
  941. package/src/work-ledger-occurrences.ts +0 -99
  942. package/src/work-ledger-projection.ts +0 -262
  943. package/src/work-ledger-snapshot.ts +0 -246
  944. package/src/work-ledger-types.ts +0 -229
  945. package/src/work-ledger-validation.ts +0 -174
  946. package/src/work-ledger.ts +0 -186
  947. package/src/work-policy-registry.ts +0 -81
  948. package/src/work-run.ts +0 -79
  949. package/src/work-setup.ts +0 -141
  950. package/src/workflow-fact-id.ts +0 -16
  951. package/src/workflow-facts.ts +0 -65
  952. package/src/workspace-lease.ts +0 -363
  953. package/src/workspace.ts +0 -308
  954. /package/contracts/{ledger/v3 → ledger-record/v1}/fixtures/capability-decision.json +0 -0
  955. /package/contracts/{ledger/v3 → ledger-record/v1}/fixtures/workspace-lease.json +0 -0
  956. /package/dist/{herdr-name.d.ts → executors/herdr-name.d.ts} +0 -0
  957. /package/dist/{herdr-name.js → executors/herdr-name.js} +0 -0
  958. /package/dist/{herdr-pi-lifecycle.d.ts → executors/herdr-pi-lifecycle.d.ts} +0 -0
  959. /package/dist/{herdr-start.d.ts → executors/herdr-start.d.ts} +0 -0
  960. /package/dist/{herdr-start.js → executors/herdr-start.js} +0 -0
  961. /package/dist/{vendor → executors/vendor}/herdr-pi-lifecycle.d.ts +0 -0
  962. /package/dist/{vendor → executors/vendor}/herdr-pi-lifecycle.js +0 -0
  963. /package/dist/{file-lock.d.ts → governance/file-lock.d.ts} +0 -0
  964. /package/dist/{finalization.d.ts → governance/finalization.d.ts} +0 -0
  965. /package/dist/{finalization.js → governance/finalization.js} +0 -0
  966. /package/dist/{lease-helper.d.ts → governance/lease-helper.d.ts} +0 -0
  967. /package/dist/{lease-record.js → governance/lease-record.js} +0 -0
  968. /package/dist/{retention-contract.d.ts → governance/retention-contract.d.ts} +0 -0
  969. /package/dist/{retention-json.d.ts → governance/retention-json.d.ts} +0 -0
  970. /package/dist/{retention-json.js → governance/retention-json.js} +0 -0
  971. /package/dist/{chain.d.ts → kernel/chain.d.ts} +0 -0
  972. /package/dist/{chain.js → kernel/chain.js} +0 -0
  973. /package/dist/{correlation.d.ts → kernel/correlation.d.ts} +0 -0
  974. /package/dist/{definitions.d.ts → kernel/definitions.d.ts} +0 -0
  975. /package/dist/{delegate.d.ts → kernel/delegate.d.ts} +0 -0
  976. /package/dist/{delegation-approval.d.ts → kernel/delegation-approval.d.ts} +0 -0
  977. /package/dist/{execution-id.d.ts → kernel/execution-id.d.ts} +0 -0
  978. /package/dist/{execution-id.js → kernel/execution-id.js} +0 -0
  979. /package/dist/{fanout.d.ts → kernel/fanout.d.ts} +0 -0
  980. /package/dist/{ledger-identifiers.d.ts → kernel/ledger-identifiers.d.ts} +0 -0
  981. /package/dist/{ledger-identifiers.js → kernel/ledger-identifiers.js} +0 -0
  982. /package/dist/{pi-tools.d.ts → kernel/pi-tools.d.ts} +0 -0
  983. /package/dist/{progress.d.ts → kernel/progress.d.ts} +0 -0
  984. /package/dist/{progress.js → kernel/progress.js} +0 -0
  985. /package/dist/{resolve.d.ts → kernel/resolve.d.ts} +0 -0
  986. /package/dist/{routing-authority.d.ts → kernel/routing-authority.d.ts} +0 -0
  987. /package/dist/{routing-authority.js → kernel/routing-authority.js} +0 -0
  988. /package/dist/{skill-resources.d.ts → kernel/skill-resources.d.ts} +0 -0
  989. /package/dist/{spawn.d.ts → kernel/spawn.d.ts} +0 -0
  990. /package/dist/{spawn.js → kernel/spawn.js} +0 -0
  991. /package/dist/{dashboard-render.d.ts → products/dashboard-render.d.ts} +0 -0
  992. /package/src/{herdr-name.ts → executors/herdr-name.ts} +0 -0
  993. /package/src/{herdr-start.ts → executors/herdr-start.ts} +0 -0
  994. /package/src/{vendor → executors/vendor}/herdr-pi-lifecycle.ts +0 -0
  995. /package/src/{chain.ts → kernel/chain.ts} +0 -0
  996. /package/src/{execution-id.ts → kernel/execution-id.ts} +0 -0
  997. /package/src/{ledger-identifiers.ts → kernel/ledger-identifiers.ts} +0 -0
  998. /package/src/{progress.ts → kernel/progress.ts} +0 -0
  999. /package/src/{routing-authority.ts → kernel/routing-authority.ts} +0 -0
  1000. /package/src/{spawn.ts → kernel/spawn.ts} +0 -0
@@ -1,314 +0,0 @@
1
- /**
2
- * Persistence for `always`-scoped approvals — the package's only mutable state outside the ledger.
3
- *
4
- * DESIGN NOTE, because it is easy to get backwards: this file is a CONVENIENCE CACHE, not a security
5
- * control. The security decision was already made by a human at the moment of approval. So a failure here
6
- * must never fail the work — an unwritable file downgrades the approval to session scope (see the boolean
7
- * return of `saveApproval`), and an unreadable one simply grants nothing.
8
- *
9
- * Read on demand, never cached at session start, so **a revoke takes effect at the next gate check** —
10
- * including a revoke performed from another session while this one is running.
11
- *
12
- * That sentence used to read *"takes effect immediately"* and claimed two different things, one of which was
13
- * false and one of which is impossible:
14
- *
15
- * - **False, and fixed (R-49).** Every write is load → modify → write and it was unlocked, so a save could
16
- * restore an entry another session had just revoked. Writes now hold the same file lock the ledger uses
17
- * (`src/file-lock.ts`, `underLock` below).
18
- * - **Impossible, and stated rather than fixed.** A spawn whose gate check has already passed is not
19
- * retracted by a revoke arriving microseconds later. No lock closes that: the read has to finish before
20
- * the spawn starts, so there is always an instant where the decision is made and the process is not yet
21
- * running. Inherent to revoking anything, not a gap in this one.
22
- *
23
- * Reads deliberately take no lock. A read that loses a race sees the previous state, which is exactly what
24
- * "at the next gate check" already means.
25
- *
26
- * **One file per project** (ADR-0020), and **no model-authored text, ever** (ADR-0021) — see `approvalsPath`
27
- * and `sanitise` for why each of those is a decision rather than a detail.
28
- *
29
- * Pruning is deliberately lazy: `loadApprovals` never writes, so a read is a read. Invalid entries are
30
- * dropped from the file on the next `saveApproval` or `revokeApproval`.
31
- */
32
- import { createHash, randomUUID } from "node:crypto";
33
- import { mkdir, readFile, rename, unlink, writeFile } from "node:fs/promises";
34
- import { withFileLock } from "./file-lock.js";
35
- import { homedir } from "node:os";
36
- import { basename, dirname, join } from "node:path";
37
- import { entryVerdict } from "./approval.js";
38
- import { isApprovalBinding } from "./correlation.js";
39
- /**
40
- * Where persisted approvals live — **outside the governed workspace** (ADR-0014).
41
- *
42
- * It used to be `<cwd>/.pi/grants-approvals.json`, which was self-defeating in this package's own
43
- * recommended configuration: `PI_GRANTS_GATED=tool:write` means *"may use write, may not pass it down
44
- * without a human"*, and **a session that may use `write` can write the approvals file**. A reviewer
45
- * demonstrated it end to end, including authoring a matching agent-type file so `grantAtApproval`
46
- * compared equal — no dialog, and a ledger line reading `approvalSource: "persisted"`, indistinguishable
47
- * from a real human approval.
48
- *
49
- * A narrowed child does not hold write access to the user's home directory, so it cannot forge an entry
50
- * here. Each entry still carries its own `cwd` and `entryVerdict` still checks it — that check exists for
51
- * R-27 and refuses an entry copied between checkouts or machines, which per-project files do not make
52
- * redundant.
53
- *
54
- * **This does not defend against a child holding `bash`** — see ADR-0012, which accepts that such a
55
- * child can escape governance entirely. The point of this change is to close the *self-defeating* case,
56
- * not to claim a boundary the package does not have.
57
- *
58
- * **ONE FILE PER PROJECT since 0.11.0 (ADR-0020).** It was one shared document keyed only by
59
- * `capability@subject`, which produced four defects in eight lines — approving in one checkout deleted
60
- * another's entries (R-41), `revoke --all` cleared every project (R-43), two concurrent writes lost both
61
- * (R-42), and an unlocked read-modify-write could resurrect a revoked entry (R-49, fixed in 0.13.0). The
62
- * unfixable one was the keyspace: two checkouts holding definitions of the same name — `review`, `deploy`,
63
- * i.e. what happens the moment an operator reuses their own conventions — could not both hold an approval,
64
- * so they took turns indefinitely. Per-project files make the collision **inexpressible** rather than
65
- * handled, and `revoke --all` cannot name another project's file.
66
- *
67
- * The `cwd` is hashed as well as named: the basename keeps the file legible to a human reading the
68
- * directory, and the hash is what makes it unambiguous, since two checkouts can share a basename.
69
- *
70
- * **It took a `cwd` parameter and ignored it until 0.10.2**, which was not a harmless vestige: the unit
71
- * suite passed a `mkdtemp` directory to it, reasonably believed the result was hermetic, and spent every
72
- * `npm test` rewriting and clearing the developer's real store in `$HOME` (R-40). That was invisible while
73
- * the store was unwritable and became destructive the day ADR-0019 made it reachable. The parameter is now
74
- * real and required, which is the opposite failure mode: forgetting it is a type error.
75
- */
76
- export function approvalsPath(cwd) {
77
- const slug = (basename(cwd) || "root").replace(/[^A-Za-z0-9._-]/g, "_").slice(0, 40);
78
- // 16 hex = 64 bits, not the 6 this shipped with. ADR-0020 deleted the `foreign-cwd` carry-through on the
79
- // premise that one file means one directory — so inside a hash collision R-41 returns *with its
80
- // mitigation removed*: the second project's save deletes the first's entries. At 24 bits a deliberate
81
- // collision costs about 16.7M hashes, well under a second, and an accidental one arrives at a few
82
- // thousand governed directories. The premise has to be worth what was removed to rely on it.
83
- const hash = createHash("sha256").update(cwd, "utf8").digest("hex").slice(0, 16);
84
- return join(agentDir(), "grants-approvals", `${slug}-${hash}.json`);
85
- }
86
- /**
87
- * The shared single-file store, so it can be REPORTED rather than read (ADR-0020).
88
- *
89
- * Deliberately not migrated. Splitting it by each entry's own `cwd` would be mechanical and lossless — the
90
- * trust root is unchanged, unlike ADR-0014's move out of the workspace — but it is code that runs once, is
91
- * exercised on exactly one input per machine, and lives in the layer with nine recorded defects. Re-approving
92
- * costs a click; a migration bug costs a silently wrong approval.
93
- */
94
- export function sharedApprovalsPath() {
95
- return join(agentDir(), "grants-approvals.json");
96
- }
97
- /**
98
- * The old in-workspace location, so it can be REPORTED rather than read.
99
- *
100
- * Deliberately not migrated. Importing a legacy file would import exactly the entries whose
101
- * trustworthiness this change exists to remove — a forged approval would survive the fix that was
102
- * supposed to stop it. The extension names the file and ignores it; re-approving is a few keystrokes and
103
- * the only honest path.
104
- */
105
- export function legacyApprovalsPath(cwd) {
106
- return join(cwd, ".pi", "grants-approvals.json");
107
- }
108
- /** `$PI_CODING_AGENT_DIR`, or pi's default. Matches how pi-subagents resolves the same directory. */
109
- function agentDir() {
110
- return process.env.PI_CODING_AGENT_DIR ?? join(homedir(), ".pi", "agent");
111
- }
112
- /** The subject half of `capability@subject`. Capability ids contain `:` but never `@`. */
113
- function subjectOf(key) {
114
- return key.slice(key.indexOf("@") + 1);
115
- }
116
- /** Guard: reject entries that don't have the shape of an ApprovalEntry. */
117
- function isValidEntryShape(entry) {
118
- if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
119
- return false;
120
- }
121
- const obj = entry;
122
- return (typeof obj.approvedAt === "string" &&
123
- typeof obj.expiresAt === "string" &&
124
- typeof obj.cwd === "string" &&
125
- Array.isArray(obj.grantAtApproval) &&
126
- (obj.binding === undefined || isApprovalBinding(obj.binding)));
127
- }
128
- /**
129
- * Project every entry through its DECLARED fields on the way out (ADR-0021).
130
- *
131
- * The instance this closes: `taskAtApproval` stored the model-authored task string, which `src/ledger.ts`
132
- * forbids in unqualified terms — *"the task is not recorded, anywhere, ever"*. Removing the field from the
133
- * type is not enough on its own, because entries are parsed from JSON and a rewrite would carry any
134
- * undeclared property straight back to disk.
135
- *
136
- * A whitelist rather than a delete, so this closes the class: no future field can reach the store by being
137
- * present on a parsed object, and adding one is a deliberate edit here.
138
- */
139
- function sanitise(valid) {
140
- return Object.fromEntries([...valid].map(([key, e]) => [
141
- key,
142
- {
143
- approvedAt: e.approvedAt,
144
- expiresAt: e.expiresAt,
145
- cwd: e.cwd,
146
- grantAtApproval: e.grantAtApproval,
147
- ...(e.bodyAtApproval !== undefined ? { bodyAtApproval: e.bodyAtApproval } : {}),
148
- ...(e.binding !== undefined ? { binding: structuredClone(e.binding) } : {}),
149
- },
150
- ]));
151
- }
152
- async function readFileSafely(cwd) {
153
- try {
154
- const parsed = JSON.parse(await readFile(approvalsPath(cwd), "utf8"));
155
- if (!parsed || typeof parsed !== "object")
156
- return { version: 1, approvals: {} };
157
- const file = parsed;
158
- if (file.version !== 1 || !file.approvals || typeof file.approvals !== "object") {
159
- return { version: 1, approvals: {} };
160
- }
161
- return { version: 1, approvals: file.approvals };
162
- }
163
- catch {
164
- // Missing is normal; corrupt grants nothing. Either way the caller re-prompts, which is safe.
165
- return { version: 1, approvals: {} };
166
- }
167
- }
168
- /** Load the approvals valid HERE and NOW, plus the ones that were dropped and why. */
169
- export async function loadApprovals(input) {
170
- const file = await readFileSafely(input.cwd);
171
- const valid = new Map();
172
- const dropped = [];
173
- for (const [key, entry] of Object.entries(file.approvals)) {
174
- // Validate entry shape before passing to entryVerdict. Malformed entries cannot take valid ones
175
- // with them — one bad shape means that one entry is dropped, the rest are still evaluated.
176
- if (!isValidEntryShape(entry)) {
177
- dropped.push({ key, entry: entry, verdict: "expired" });
178
- continue;
179
- }
180
- const verdict = entryVerdict({
181
- entry,
182
- cwd: input.cwd,
183
- now: input.now,
184
- current: input.snapshotOf(subjectOf(key)),
185
- });
186
- if (verdict === "valid")
187
- valid.set(key, entry);
188
- else
189
- dropped.push({ key, entry, verdict });
190
- }
191
- return { valid, dropped };
192
- }
193
- /**
194
- * Write the file atomically, and never through a symlink (ADR-0014).
195
- *
196
- * Two defects this closes:
197
- *
198
- * - **B-I6** — writes followed project-controlled symlinks and were not atomic, so a crash or a
199
- * concurrent writer could leave a half-written file that the next read discards entirely.
200
- * - **A-R2** — a corrupt file made the next legitimate write destroy every other entry, because entries
201
- * are validated on read but pruned only on write. Writing to a temp file and renaming makes the
202
- * replacement all-or-nothing; `wx` on the temp refuses to follow an existing link.
203
- *
204
- * `rename` is atomic within a filesystem, and the temp file is created in the same directory precisely so
205
- * that holds.
206
- */
207
- async function writeFileSafely(cwd, file) {
208
- const path = approvalsPath(cwd);
209
- // Same directory as the target: `rename` is only atomic within one filesystem.
210
- //
211
- // **Unique per CALL, not per process.** It was `${path}.${pid}.tmp`, so two concurrent `saveApproval`
212
- // calls in one process collided: the second's `wx` failed EEXIST, its `catch` unlinked the *first's*
213
- // in-flight temp, and the first's `rename` then failed ENOENT — **both returned false and nothing was
214
- // written**, on a perfectly writable file. Measured with two different keys, so it was not limited to
215
- // the shared-dialog case: any two concurrent writes lost both. `delegate_all` is exactly that shape, and
216
- // both callers would report "could not persist the approval — it applies for this session only", which
217
- // named the wrong cause.
218
- const temp = `${path}.${process.pid}.${randomUUID()}.tmp`;
219
- try {
220
- await mkdir(dirname(path), { recursive: true });
221
- // `wx` fails rather than following a pre-existing symlink or clobbering another writer's temp.
222
- await writeFile(temp, `${JSON.stringify(file, null, 2)}\n`, { encoding: "utf8", flag: "wx" });
223
- await rename(temp, path);
224
- return true;
225
- }
226
- catch {
227
- try {
228
- await unlink(temp);
229
- }
230
- catch {
231
- /* nothing to clean up */
232
- }
233
- return false;
234
- }
235
- }
236
- /**
237
- * Persist one approval, pruning anything THIS session can see has become invalid.
238
- *
239
- * Returns false when the write failed. The caller must then downgrade to session scope and warn — NOT
240
- * refuse the delegation. The human already said yes; refusing work because a cache could not be written
241
- * would be failing closed on the wrong thing.
242
- */
243
- export async function saveApproval(cwd, key, entry, snapshotOf, now) {
244
- return underLock(cwd, false, false, async () => {
245
- const { valid } = await loadApprovals({ cwd, now, snapshotOf });
246
- valid.set(key, entry);
247
- // ADR-0020: this file belongs to ONE project, so there is nothing here that another project could own and
248
- // pruning cannot reach across a boundary. The `foreign-cwd` carry-through 0.10.2 needed is gone with the
249
- // shared file that made it necessary.
250
- return writeFileSafely(cwd, { version: 1, approvals: sanitise(valid) });
251
- });
252
- }
253
- export async function revokeApproval(cwd, key, snapshotOf, now) {
254
- return underLock(cwd, "busy", "failed", async () => {
255
- const { valid } = await loadApprovals({ cwd, now, snapshotOf });
256
- if (!valid.has(key))
257
- return "absent";
258
- valid.delete(key);
259
- return (await writeFileSafely(cwd, { version: 1, approvals: sanitise(valid) })) ? "revoked" : "failed";
260
- });
261
- }
262
- /**
263
- * Clear every approval **for this directory**. Returns false if the write failed.
264
- *
265
- * Scoped rather than global, and the old behaviour was the surprising one: `/grants revoke --all` wrote an
266
- * empty file, so revoking in one project silently revoked every other project's approvals too. An operator
267
- * running it in one checkout is answering for that checkout — there is no interface for "and everywhere
268
- * else", and it should not be the default reading of a command that names neither.
269
- */
270
- export async function revokeAll(cwd) {
271
- return underLock(cwd, false, false, () => writeFileSafely(cwd, { version: 1, approvals: {} }));
272
- }
273
- /**
274
- * Hold the store's lock for one read-modify-write (R-49).
275
- *
276
- * **The race it closes.** Every write here is load → modify → write, and it was unlocked, so: session 1
277
- * loads; session 2 revokes; session 1 saves an unrelated approval and **restores the revoked entry** for the
278
- * rest of its 30 days, with no error and no warning. `approval-store.ts` documents that *"a revoke takes
279
- * effect immediately — including one performed from another session while this one is running"*, and that
280
- * sentence was false. Narrow (ADR-0020 scoped it to two sessions in the same directory) and cheap to close,
281
- * because the lock already existed for the ledger — `src/file-lock.ts`, one implementation, two callers.
282
- *
283
- * **A lock this cannot take does NOT fail the work**, which is the opposite of the ledger's choice with the
284
- * same lock and follows from what the two files are. The ledger is a security control: no audit line, no
285
- * spawn. This store is a convenience cache (ADR-0020) — the human already said yes, and refusing their work
286
- * because a cache was busy would be failing closed on the wrong thing. So a timeout yields `busy`, which the
287
- * caller reports as an ordinary write failure and downgrades to session scope.
288
- */
289
- async function underLock(cwd, onBusy, onError, work) {
290
- const path = approvalsPath(cwd);
291
- // **The discriminant is whether anything was READ, not which error was thrown.** Keying on
292
- // `LockTimeoutError` looked right and was not: `EMFILE` — the classic transient, and one a fan-out of
293
- // children plus herdr panes produces — happens before the load just as a timeout does, yet took the
294
- // `failed` branch, whose message asserts the approval "is still in effect" about an entry nobody looked
295
- // for, and blames a path that is perfectly writable. That is the very defect the fourth outcome was
296
- // added to prevent, one error code to the left.
297
- let entered = false;
298
- try {
299
- // The lock lives beside the file, so its directory must exist before the lock can be taken — and on a
300
- // first-ever approval it does not. `writeFileSafely` creates it, which is one step too late: every
301
- // write failed with ENOENT on the LOCK and was reported as busy. Caught by the existing round-trip
302
- // tests within a minute of adding the lock, which is the argument for having them.
303
- await mkdir(dirname(path), { recursive: true });
304
- return await withFileLock(path, "approvals file", () => {
305
- entered = true;
306
- return work();
307
- });
308
- }
309
- catch {
310
- // Never reached the load, so nothing may be claimed about the entry — whatever the cause.
311
- return entered ? onError : onBusy;
312
- }
313
- }
314
- //# sourceMappingURL=approval-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approval-store.js","sourceRoot":"","sources":["../src/approval-store.ts"],"names":[],"mappings":"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"}
@@ -1,241 +0,0 @@
1
- /**
2
- * Approval model for gated capabilities — pure, so it is exhaustively testable without pi.
3
- *
4
- * `resolve()` computes `gatedBlocked`: capabilities a session legitimately holds but which may not enter
5
- * a child's grant without a human saying so. This module decides WHAT a yes means — how far it reaches,
6
- * how long it lasts, and what it is keyed to. It never performs I/O and never prompts; see
7
- * `approval-store.ts` and `approval-prompt.ts` for those.
8
- *
9
- * ADR-0010 records the four decisions encoded here.
10
- */
11
- import type { Capability, ResolveResult } from "./resolve.ts";
12
- import { type ApprovalBinding } from "./correlation.ts";
13
- /** How far a single yes reaches in time. */
14
- export declare const APPROVAL_SCOPES: readonly ["once", "session", "always"];
15
- export type ApprovalScope = typeof APPROVAL_SCOPES[number];
16
- /** Where a yes came from, for the ledger. These call for different follow-ups, so they stay distinct. */
17
- export declare const APPROVAL_SOURCES: readonly ["prompt", "session", "persisted", "inherited"];
18
- export type ApprovalSource = typeof APPROVAL_SOURCES[number];
19
- /** Which call site is asking. Determines the scopes offered — see `offeredScopes`. */
20
- export type ApprovalPath = "definition" | "delegate";
21
- /**
22
- * Subject used for delegate-path approvals.
23
- *
24
- * The delegate tool has no human-authored subject: the only things naming a child are the task string and
25
- * the tool list, both chosen by the model. A key the model controls is not a key, so delegate approvals
26
- * use this fixed literal — "allow write for delegations this session" — and are never persisted.
27
- * Angle brackets cannot appear in an agent-type name (`parseAgentType` reads an identifier), so this can
28
- * never collide with a real type.
29
- */
30
- export declare const DELEGATE_SUBJECT = "<delegate>";
31
- /**
32
- * Lifetime of a persisted approval.
33
- *
34
- * Deliberately a constant rather than an environment variable: a knob that silently extends every gate is
35
- * the first thing an impatient operator would reach for.
36
- */
37
- export declare const APPROVAL_TTL_DAYS = 30;
38
- /** `tool:write` + `docs-writer` -> `tool:write@docs-writer`. */
39
- export declare function approvalKey(capability: Capability, subject: string): string;
40
- /**
41
- * May this resolution raise an approval dialog?
42
- *
43
- * `resolve()` computes `denied` and `gatedBlocked` INDEPENDENTLY (deliberately — each rejection reason is
44
- * reported rather than masked by whichever filter ran first), and both `decideSpawn` and `planDelegation`
45
- * refuse outright on `denied` while still attaching the full result. So a request mixing a gated capability
46
- * with one the session does not hold at all would otherwise prompt a human about the gated one and then be
47
- * refused anyway for the other.
48
- *
49
- * That is not merely noise. A *session* yes is recorded and republished to children, and an *always* yes is
50
- * written to disk for 30 days — both banked against a spawn that never happened, and both reachable by a
51
- * model that appends one unheld capability to an otherwise ordinary request. A person is therefore only
52
- * asked about a spawn that would actually proceed if they said yes.
53
- *
54
- * `clipped` is deliberately NOT a bar: it does not refuse a spawn, it just drops those capabilities from
55
- * the child's grant, so the spawn does proceed and the question is real.
56
- */
57
- export declare function shouldSeekApproval(result: ResolveResult | undefined): boolean;
58
- /**
59
- * Scopes a given call site may offer. `always` requires a **human-authored subject**.
60
- *
61
- * ADR-0019. The rule is unchanged; which paths satisfy it is not. `"interceptor"` used to be the only one
62
- * and ADR-0016 deleted it, leaving `always` offerable from nowhere — 220 lines of persistence no live path
63
- * could write to. `"definition"` is `delegate({agent})`, where ADR-0017 makes the subject an
64
- * operator-authored file the session must hold `agent:<name>` to name at all. `"delegate"` is the `tools:`
65
- * form, where the original reasoning stands untouched: the only things naming that child are the task and
66
- * the tool list, both model-chosen, and a key the model controls is not a key.
67
- */
68
- export declare function offeredScopes(path: ApprovalPath): ApprovalScope[];
69
- /**
70
- * The approval an inheriting child may hold.
71
- *
72
- * Intersecting with the child's grant is what keeps ADR-0008 intact once approvals became inheritable:
73
- * `approved ⊆ grant` at every level, by construction. An approval can therefore never name a capability
74
- * the session does not hold — it only ever unblocks part of a grant, never widens one.
75
- *
76
- * The wildcard is filtered for the same reason `childEnv` filters it out of grants (R-26): inheriting it
77
- * would let a descendant treat every future gate as pre-approved.
78
- */
79
- /** An approval as it crosses a boundary: the capability, WHO it was for, and HOW LONG it was meant to last. */
80
- export interface InheritableApproval {
81
- capability: Capability;
82
- /** The agent type, or `<delegate>`. Carried because an approval is for a subject, not for a word. */
83
- subject: string;
84
- scope: ApprovalScope;
85
- /**
86
- * The definition's body digest at the time of approval (ADR-0022). Absent for `<delegate>`, which names
87
- * no file to hash — and, per ADR-0019, is never persisted or offered `always` for the same reason.
88
- */
89
- bodySha256?: string;
90
- /**
91
- * Exact delegation binding for controllers that supply correlation/workspace context (ADR-0034).
92
- * Bound approvals are deliberately not inherited: authority for one task must not become subtree-wide.
93
- */
94
- binding?: ApprovalBinding;
95
- }
96
- /**
97
- * What a child may inherit, as `capability@subject` keys.
98
- *
99
- * ADR-0014 changed this in two ways, and both were cases of a human's explicit choice being discarded
100
- * one hop down:
101
- *
102
- * - **`once` is dropped** (A-S1). The scope chosen was not carried, so a `once` approval was written
103
- * into the child's `PI_GRANTS_APPROVED` and republished onward — the most conservative answer a human
104
- * can give produced the least conservative outcome, across an entire descendant subtree.
105
- * - **The subject is kept** (A-S6). Bare capabilities were published, so a `<delegate>`-subject approval
106
- * matched *any* subject below. `approvalKey`'s own doc argues at length that a model-controlled name
107
- * is not a key; erasing the subject made that argument moot exactly where it mattered.
108
- *
109
- * The clamp to `grant` is unchanged and still load-bearing: **approval cannot conjure a capability**, so
110
- * an inherited yes is only ever honoured for something the child independently holds.
111
- */
112
- export declare function inheritApprovals(approved: InheritableApproval[], grant: Capability[]): string[];
113
- /**
114
- * Read the inherited set back on the child side.
115
- *
116
- * Anything that is not a well-formed `capability@subject` pair is dropped rather than guessed at. An
117
- * unparseable entry granting nothing is a missing prompt; an unparseable entry granting *something* is a
118
- * silent escalation, so the direction of the failure is not a matter of taste.
119
- */
120
- export declare function parseInherited(raw: string | undefined): Map<string, string | undefined>;
121
- /**
122
- * Drop inherited approvals that were given for different instructions (ADR-0022).
123
- *
124
- * The hole this closes: `resolveApprovals` checks `inherited` FIRST and none of it had ever been through
125
- * `entryVerdict`, so ADR-0019's headline property — an approval is void once the instructions change — held
126
- * on the one path that persists and neither of the two that do not. A child is a fresh process: it re-reads
127
- * the definition from disk, so a `git pull` between the parent's approval and the child's spawn meant the
128
- * child ran a rewritten body under a yes given about the old one, recording `approvalSource: "inherited"`.
129
- *
130
- * An entry with **no** digest is honoured, and that is not a hole: `<delegate>` legitimately has none, and
131
- * neither does a pre-0.11 parent. It is the same trade `entryVerdict` refuses to make for a *persisted*
132
- * entry — but that entry is 30 days old and read off disk, whereas this one was handed over by a live parent
133
- * process in the same tree, which is a much shorter chain to trust.
134
- */
135
- export declare function verifyInherited(parsed: ReadonlyMap<string, string | undefined>, snapshotOf: (subject: string) => SubjectSnapshot | null): Set<string>;
136
- /** When an approval granted now stops being valid. Computed once at write time and stored, so an entry's
137
- * lifetime is visible in the file rather than implied by whichever version of the code reads it. */
138
- export declare function expiryFor(approvedAt: Date): string;
139
- /** A persisted approval, keyed externally by subject and capability. Only the `"definition"` path writes one. */
140
- export interface ApprovalEntry {
141
- approvedAt: string;
142
- expiresAt: string;
143
- /** The directory the human was sitting in. See `entryVerdict` and R-27. */
144
- cwd: string;
145
- /** The agent type's ceiling AT APPROVAL TIME. Load-bearing, not decorative — see `entryVerdict`. */
146
- grantAtApproval: Capability[];
147
- /**
148
- * The definition's body digest AT APPROVAL TIME (ADR-0019, using ADR-0018's hash).
149
- *
150
- * `grantAtApproval` pins the tools; this pins the INSTRUCTIONS. Without it an `always` approval survives
151
- * a total rewrite of what the child is told to do, because `ceilingForDefinition` reads only
152
- * `allowed-tools` — R-35's hazard reappearing inside the persistence layer. Absent means the entry
153
- * predates 0.10.0 and cannot be verified, which `entryVerdict` treats as changed: fail closed.
154
- */
155
- bodyAtApproval?: string;
156
- /** Exact task/grant/workspace/context/parent binding for correlated controller calls (ADR-0034). */
157
- binding?: ApprovalBinding;
158
- }
159
- export type EntryVerdict = "valid" | "expired" | "foreign-cwd" | "type-changed" | "instructions-changed" | "type-missing";
160
- /**
161
- * What a subject looks like RIGHT NOW — one lookup, not two (ADR-0019).
162
- *
163
- * Deliberately a single snapshot rather than parallel `ceilingOf` / `digestOf` callbacks. R-28 was one
164
- * call site supplying one argument and omitting another; a shape that cannot be half-supplied is the
165
- * structural form of remembering.
166
- */
167
- export interface SubjectSnapshot {
168
- ceiling: Capability[];
169
- /** SHA-256 of the definition body — `digestDefinition(...).sha256`. */
170
- bodySha256: string;
171
- }
172
- export interface EntryValidityInput {
173
- entry: ApprovalEntry;
174
- /** The directory this session is running in. */
175
- cwd: string;
176
- now: Date;
177
- /** The subject's CURRENT ceiling and body digest, or null when it no longer exists. */
178
- current: SubjectSnapshot | null;
179
- }
180
- /**
181
- * Decide whether a persisted approval still means what the human meant.
182
- *
183
- * Four ways it can stop meaning that, and each is reported distinctly so `/grants approvals` can explain
184
- * itself rather than silently showing fewer rows:
185
- *
186
- * - `foreign-cwd` — the file was copied or committed and opened somewhere else. Nobody in THIS checkout
187
- * was asked, so it authorises nothing here (R-27).
188
- * - `expired` — a gate opened during one project must not still be open next quarter.
189
- * - `type-changed` — the confused deputy. The key names a file whose contents can change after approval:
190
- * approve `tool:write@docs-writer` when it declares `read, write`, and later that file
191
- * gains `bash`. The entry would still match the key while describing something the
192
- * human never saw.
193
- * - `instructions-changed` — the same confused deputy, one level deeper. The tools are untouched but the
194
- * BODY was rewritten, so the child would now be told to do something the human never
195
- * saw. Only checkable since ADR-0018 gave the body a digest; an entry carrying no body
196
- * pin lands here too, because unverifiable is not the same as unchanged.
197
- * - `type-missing` — the type was deleted or renamed; a new file could later claim the same name.
198
- */
199
- export declare function entryVerdict(input: EntryValidityInput): EntryVerdict;
200
- export interface ResolveApprovalsInput {
201
- /** `ResolveResult.gatedBlocked` — held and within ceiling, but awaiting a human. */
202
- gated: Capability[];
203
- subject: string;
204
- /** Approval KEYS approved for this session, in memory only. */
205
- sessionApprovals: ReadonlySet<string>;
206
- /** Exact bindings for correlated session approvals. Kept separate so legacy keys remain compatible. */
207
- sessionApprovalBindings?: ReadonlyMap<string, ApprovalBinding>;
208
- /** Persisted entries by key, ALREADY definition/expiry-filtered by the store. */
209
- persisted: ReadonlyMap<string, ApprovalEntry>;
210
- /** When present, only an exact binding may satisfy this gate. */
211
- expectedBinding?: ApprovalBinding;
212
- /** Same-key persisted entries dropped specifically because their expiry passed. */
213
- expiredKeys?: ReadonlySet<string>;
214
- /**
215
- * `capability@subject` keys inherited from the delegator (ADR-0014).
216
- *
217
- * Was `Capability[]` — bare names that matched any subject, and included `once` approvals that were
218
- * never meant to leave the level they were given at.
219
- */
220
- inherited?: Set<string>;
221
- }
222
- export interface ResolveApprovalsResult {
223
- approved: Capability[];
224
- /** Gated capabilities still requiring a live human. */
225
- needsPrompt: Capability[];
226
- /** A same-key approval existed but named another task/workspace/context/parent. */
227
- scopeMismatched: Capability[];
228
- expired: Capability[];
229
- sources: Record<Capability, ApprovalSource>;
230
- scopes: Record<Capability, ApprovalScope>;
231
- expiresAt: Record<Capability, string>;
232
- }
233
- /**
234
- * Satisfy as much of `gated` as possible without asking anyone.
235
- *
236
- * Precedence is inherited -> session -> persisted -> prompt. Order matters only for what gets REPORTED
237
- * (the ledger's `approvalSource`); any hit satisfies equally. Checking all three before prompting is what
238
- * stops an orchestrator's tenth delegation from raising a tenth identical dialog.
239
- */
240
- export declare function resolveApprovals(input: ResolveApprovalsInput): ResolveApprovalsResult;
241
- //# sourceMappingURL=approval.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"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"}