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,139 +0,0 @@
1
- import { constants } from "node:fs";
2
- import { open, lstat, realpath } from "node:fs/promises";
3
- import { isAbsolute, relative, sep } from "node:path";
4
- import { createHash } from "node:crypto";
5
- import { parseRetentionJson } from "./retention-json.ts";
6
-
7
- export const ENV_NATIVE_SESSION_ROOT = "PI_GRANTS_NATIVE_SESSION_ROOT";
8
- export const MAX_NATIVE_SESSION_BYTES = 1024 * 1024;
9
- export type NativeSessionSource = "herdr-id" | "herdr-path" | "pi-session-file" | "pi-session-manager";
10
- export interface NativeSessionObservation {
11
- source: NativeSessionSource | null;
12
- status: "missing" | "verified" | "invalid" | "changed" | "truncated" | "unsupported";
13
- sessionId: string | null;
14
- sessionPath: string | null;
15
- parentSessionPath: string | null;
16
- branchLeafId: string | null;
17
- branchState: "unknown" | "observed";
18
- lastPersistedEntryId: string | null;
19
- sha256: string | null;
20
- reason: string | null;
21
- }
22
- export interface NativeSessionCapture { observation: NativeSessionObservation; bytes?: Buffer; fileIdentity?: { device: string; inode: string } }
23
- /** Read-only methods of pi 0.84.2's public SessionManager; no runtime/session creation or model work. */
24
- export interface NativeSessionManager {
25
- getSessionFile(): string | undefined;
26
- getSessionId(): string;
27
- getLeafId(): string | null;
28
- }
29
- export const missingNativeSession = (): NativeSessionObservation => ({ source: null, status: "missing", sessionId: null,
30
- sessionPath: null, parentSessionPath: null, branchLeafId: null, branchState: "unknown", lastPersistedEntryId: null,
31
- sha256: null, reason: "native-session-unavailable" });
32
- const id = (x: unknown): x is string => typeof x === "string" && /^[a-zA-Z0-9_-]{1,128}$/.test(x);
33
- const uuid = (x: unknown): x is string => typeof x === "string" && /^[a-f0-9]{8}(?:-[a-f0-9]{4}){3}-[a-f0-9]{12}$/i.test(x);
34
- const obj = (x: unknown): x is Record<string, unknown> => x !== null && typeof x === "object" && !Array.isArray(x);
35
- const filePath = (x: unknown): x is string => typeof x === "string" && x.length <= 4096 && isAbsolute(x) && !x.includes("\0");
36
-
37
- /** Parse the retained native v3 bytes, never load/migrate/rewrite a session via SessionManager.open(). */
38
- export function parseNativeSessionBytes(bytes: Uint8Array, input: {
39
- source: NativeSessionSource; path: string; expectedSessionId?: string; truncated?: boolean;
40
- liveLeaf?: { sessionId: string; leafId: string | null };
41
- }): NativeSessionCapture {
42
- const observation = { ...missingNativeSession(), source: input.source, sessionPath: input.path };
43
- const result: NativeSessionCapture = { observation };
44
- const fail = (status: NativeSessionObservation["status"], reason: string) => {
45
- observation.status = status; observation.reason = reason; observation.branchLeafId = null; observation.branchState = "unknown";
46
- return result;
47
- };
48
- if (bytes.length > MAX_NATIVE_SESSION_BYTES) return fail("truncated", "native-session-size-limit");
49
- const raw = Buffer.from(bytes), newline = raw.indexOf(10);
50
- let header: unknown;
51
- try { header = parseRetentionJson(new TextDecoder("utf-8", { fatal: true }).decode(raw.subarray(0, newline < 0 ? raw.length : newline)), MAX_NATIVE_SESSION_BYTES); }
52
- catch { return fail("invalid", "native-session-header-invalid"); }
53
- if (!obj(header) || header.type !== "session" || header.version !== 3 || !uuid(header.id) ||
54
- !filePath(header.cwd) || typeof header.timestamp !== "string" || !Number.isFinite(Date.parse(header.timestamp)) ||
55
- (header.parentSession !== undefined && !filePath(header.parentSession))) return fail("invalid", "native-session-header-invalid");
56
- if (input.expectedSessionId !== undefined && header.id !== input.expectedSessionId) return fail("changed", "native-session-id-changed");
57
- // Only validated session headers admit transcript bytes; arbitrary files are never archived here.
58
- result.bytes = Buffer.from(bytes);
59
- observation.sessionId = header.id;
60
- observation.parentSessionPath = header.parentSession as string | undefined ?? null;
61
- observation.sha256 = createHash("sha256").update(bytes).digest("hex");
62
- if (input.truncated || raw.at(-1) !== 10) return fail("truncated", "native-session-incomplete-bytes");
63
- let text: string;
64
- try { text = new TextDecoder("utf-8", { fatal: true }).decode(raw); }
65
- catch { return fail("invalid", "native-session-utf8-invalid"); }
66
- const lines = text.split("\n");
67
- const ids = new Set<string>();
68
- if (lines.length > 10002) return fail("invalid", "native-session-entry-limit");
69
- for (const line of lines.slice(1, -1)) {
70
- let entry: unknown;
71
- try { entry = parseRetentionJson(line, MAX_NATIVE_SESSION_BYTES); } catch { return fail("invalid", "native-session-entry-invalid"); }
72
- if (!obj(entry) || typeof entry.type !== "string" || entry.type === "session" || !id(entry.id) || ids.has(entry.id) ||
73
- !(entry.parentId === null || (id(entry.parentId) && ids.has(entry.parentId))) || typeof entry.timestamp !== "string" ||
74
- !Number.isFinite(Date.parse(entry.timestamp))) return fail("invalid", "native-session-parent-link-invalid");
75
- ids.add(entry.id); observation.lastPersistedEntryId = entry.id;
76
- }
77
- if (input.liveLeaf) {
78
- if (input.liveLeaf.sessionId !== header.id || (input.liveLeaf.leafId !== null && !ids.has(input.liveLeaf.leafId))) {
79
- return fail("changed", "native-session-live-leaf-mismatch");
80
- }
81
- observation.branchLeafId = input.liveLeaf.leafId; observation.branchState = "observed";
82
- }
83
- observation.status = "verified"; observation.reason = observation.branchState === "unknown" ? "active-branch-unknown" : null;
84
- return result;
85
- }
86
-
87
- /** Private allowlisted files only, bounded non-following descriptor reads, no scan of session/auth dirs. */
88
- export async function readNativeSession(input: {
89
- path: string; source: NativeSessionSource; expectedSessionId?: string; allowedRoot?: string;
90
- manager?: NativeSessionManager;
91
- expectedFile?: { device: string; inode: string };
92
- }): Promise<NativeSessionCapture> {
93
- const gap = (status: NativeSessionObservation["status"], reason: string): NativeSessionCapture => ({ observation: {
94
- ...missingNativeSession(), source: input.source, status, reason, sessionPath: filePath(input.path) ? input.path : null,
95
- } });
96
- const root = input.allowedRoot ?? process.env[ENV_NATIVE_SESSION_ROOT];
97
- if (!filePath(input.path) || !input.path.endsWith(".jsonl") || !root || !filePath(root)) return gap("unsupported", "native-session-private-root-required");
98
- const within = (base: string, candidate: string) => { const p = relative(base, candidate); return p !== "" && p !== ".." && !p.startsWith(`..${sep}`) && !isAbsolute(p); };
99
- if (!within(root, input.path)) return gap("unsupported", "native-session-outside-private-root");
100
- let handle: Awaited<ReturnType<typeof open>> | undefined;
101
- try {
102
- const canonicalRoot = await realpath(root), canonicalFile = await realpath(input.path);
103
- const rootStat = await lstat(canonicalRoot);
104
- if (!rootStat.isDirectory() || (rootStat.mode & 0o077) !== 0 || (typeof process.getuid === "function" && rootStat.uid !== process.getuid())) return gap("unsupported", "native-session-root-not-private");
105
- if (!within(canonicalRoot, canonicalFile) || (await lstat(input.path)).isSymbolicLink()) return gap("unsupported", "native-session-path-alias");
106
- handle = await open(input.path, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
107
- const before = await handle.stat();
108
- if (!before.isFile() || before.nlink !== 1 || (typeof process.getuid === "function" && before.uid !== process.getuid())) {
109
- return gap("unsupported", "native-session-not-private-regular-file");
110
- }
111
- const fileIdentity = { device: String(before.dev), inode: String(before.ino) };
112
- if (input.expectedFile && (input.expectedFile.device !== fileIdentity.device || input.expectedFile.inode !== fileIdentity.inode)) return gap("changed", "native-session-file-replaced");
113
- const live = input.manager ? { sessionId: input.manager.getSessionId(), leafId: input.manager.getLeafId(), path: input.manager.getSessionFile() } : undefined;
114
- if (live && live.path !== input.path) return gap("changed", "native-session-manager-path-changed");
115
- const bytes = Buffer.alloc(Math.min(before.size, MAX_NATIVE_SESSION_BYTES));
116
- let offset = 0;
117
- while (offset < bytes.length) { const read = await handle.read(bytes, offset, bytes.length - offset, offset); if (!read.bytesRead) break; offset += read.bytesRead; }
118
- const after = await handle.stat(), location = await lstat(input.path);
119
- if (before.dev !== location.dev || before.ino !== location.ino || before.size !== after.size || before.mtimeMs !== after.mtimeMs ||
120
- before.ctimeMs !== after.ctimeMs || location.isSymbolicLink() || after.size !== location.size) return gap("changed", "native-session-file-changed");
121
- if (live && (input.manager!.getSessionId() !== live.sessionId || input.manager!.getLeafId() !== live.leafId || input.manager!.getSessionFile() !== live.path)) {
122
- return gap("changed", "native-session-live-state-changed");
123
- }
124
- return { ...parseNativeSessionBytes(bytes.subarray(0, offset), { ...input, liveLeaf: live,
125
- truncated: before.size > MAX_NATIVE_SESSION_BYTES || offset !== before.size }), fileIdentity };
126
- } catch (error) {
127
- return gap((error as NodeJS.ErrnoException).code === "ENOENT" ? "missing" : "invalid", "native-session-read-failed");
128
- } finally { await handle?.close().catch(() => undefined); }
129
- }
130
-
131
- /** Herdr 0.8.2 protocol 20 AgentInfo.agent_session; never scrape terminal text, PID or names. */
132
- export function herdrSessionReference(value: unknown, expectedPane: string): { source: "herdr-id" | "herdr-path"; value: string } | null {
133
- if (!obj(value) || value.pane_id !== expectedPane || value.agent !== "pi" || !obj(value.agent_session)) return null;
134
- const s = value.agent_session;
135
- if (s.agent !== "pi" || typeof s.source !== "string" || s.source.length > 128) return null;
136
- if (s.kind === "id" && uuid(s.value)) return { source: "herdr-id", value: s.value };
137
- if (s.kind === "path" && filePath(s.value)) return { source: "herdr-path", value: s.value };
138
- return null;
139
- }
@@ -1,42 +0,0 @@
1
- import { closed, cloneExperiment, experimentHash } from "./experiment-contract.ts";
2
- import type { VariantRecord } from "./experiment-state.ts";
3
- export interface OrderNode { nodeId: string; dependencies: readonly string[]; executions: readonly string[]; expectedDigest: string; decision: { decisionId: string; authorityId: string } | null }
4
- export interface OrderSchedule { version: "order-schedule-v1"; policyDigest: string; nodes: readonly OrderNode[] }
5
- export interface FactoryDecision { version: "factory-decision-v1"; requestId: string; bindingDigest: string; nodeId: string; evidenceDigest: string; authorityId: string; choice: "approve" | "reject" }
6
- export const factoryDecisionDigest = (d: FactoryDecision) => experimentHash(factoryDecision(d));
7
- export function factoryDecision(value: FactoryDecision): FactoryDecision {
8
- const d = cloneExperiment(value); closed(d,["version","requestId","bindingDigest","nodeId","evidenceDigest","authorityId","choice"]);
9
- if(d.version!=="factory-decision-v1" || ![d.requestId,d.nodeId,d.authorityId].every(x=>typeof x==="string"&&/^[a-zA-Z0-9:_-]{1,128}$/.test(x)) || ![d.bindingDigest,d.evidenceDigest].every(x=>typeof x==="string"&&/^[a-f0-9]{64}$/.test(x)) || !["approve","reject"].includes(d.choice))throw new Error("invalid reserved decision");return d;
10
- }
11
- export function orderSchedule(input: OrderSchedule, executions: readonly string[]): OrderSchedule {
12
- const s=cloneExperiment(input);closed(s,["version","policyDigest","nodes"]);
13
- if(s.version!=="order-schedule-v1"|| !/^[a-f0-9]{64}$/.test(s.policyDigest)||!Array.isArray(s.nodes)||!s.nodes.length||s.nodes.length>16)throw new Error("bounded order schedule required");
14
- const ids=new Set<string>(),all:string[]=[];
15
- for(const n of s.nodes as readonly OrderNode[]){closed(n,["nodeId","dependencies","executions","expectedDigest","decision"]);
16
- if(!/^[a-zA-Z0-9:_-]{1,128}$/.test(n.nodeId)||ids.has(n.nodeId)||!Array.isArray(n.dependencies)||n.dependencies.length>16||new Set(n.dependencies).size!==n.dependencies.length||!Array.isArray(n.executions)||n.executions.length<1||n.executions.length>3||!/^[a-f0-9]{64}$/.test(n.expectedDigest))throw new Error("invalid node/dependency/recovery policy");
17
- if(n.decision!==null){closed(n.decision,["decisionId","authorityId"]);if(![n.decision.decisionId,n.decision.authorityId].every(x=>/^[a-zA-Z0-9:_-]{1,128}$/.test(x)))throw new Error("invalid decision owner");}
18
- ids.add(n.nodeId);all.push(...n.executions);
19
- }
20
- if(new Set(all).size!==all.length||all.length!==executions.length||all.some(x=>!executions.includes(x)))throw new Error("schedule must own every reserved execution exactly once");
21
- const visiting=new Set<string>(),done=new Set<string>();
22
- const visit=(id:string)=>{if(done.has(id))return;if(visiting.has(id))throw new Error("dependency cycle");const n=s.nodes.find(n=>n.nodeId===id);if(!n)throw new Error("missing dependency");visiting.add(id);n.dependencies.forEach(visit);visiting.delete(id);done.add(id);};s.nodes.forEach(n=>visit(n.nodeId));return s;
23
- }
24
- export interface OrderNodeView {nodeId:string;state:"eligible"|"running"|"unknown"|"exhausted"|"decision-required"|"decision-rejected"|"dependency-blocked"|"satisfied";action:"dispatch"|"decide"|"wait"|"stakeholder"|"none";executionId:string|null;evidenceDigest:string|null}
25
- export function evaluateOrder(s:OrderSchedule,variants:readonly VariantRecord[],digests:ReadonlyMap<string,string|null>,decisions:readonly FactoryDecision[]):OrderNodeView[]{
26
- const rows=new Map<string,OrderNodeView>();
27
- function evaluate(n:OrderNode):OrderNodeView{
28
- if(rows.has(n.nodeId))return rows.get(n.nodeId)!;
29
- const row:OrderNodeView={nodeId:n.nodeId,state:"exhausted",action:"stakeholder",executionId:null,evidenceDigest:null};
30
- if(n.dependencies.some(id=>evaluate(s.nodes.find(n=>n.nodeId===id)!).state!=="satisfied")){row.state="dependency-blocked";row.action="wait";rows.set(n.nodeId,row);return row;}
31
- for(const id of n.executions){const v=variants.find(v=>v.executionId===id)!;row.executionId=id;
32
- if(v.state==="unknown"){row.state="unknown";row.action="stakeholder";break;}
33
- if(v.state==="completed"&&digests.get(id)===n.expectedDigest){row.evidenceDigest=experimentHash({nodeId:n.nodeId,policyDigest:s.policyDigest,executionId:id,artifactDigest:v.artifactDigest,expectedDigest:n.expectedDigest});
34
- const d=decisions.find(d=>d.nodeId===n.nodeId&&d.evidenceDigest===row.evidenceDigest);
35
- row.state=n.decision?d?d.choice==="approve"?"satisfied":"decision-rejected":"decision-required":"satisfied";row.action=row.state==="decision-required"?"decide":row.state==="decision-rejected"?"stakeholder":"none";break;}
36
- if(["unstarted","queued"].includes(v.state)){row.state="eligible";row.action="dispatch";break;}
37
- if(["dispatching","running"].includes(v.state)){row.state="running";row.action="wait";break;}
38
- }
39
- rows.set(n.nodeId,row);return row;
40
- }
41
- return s.nodes.map(evaluate);
42
- }
@@ -1,59 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { isExecutionId } from "./execution-id.ts";
3
- import { dataDigest, detached, freeze, sha } from "./debrief-contract.ts";
4
- import { controlShape } from "./dispatch-control.ts";
5
- export interface OrdinaryTarget { executionId:string; parentExecutionId:string|null; toolCallId:string|null }
6
- export interface OrdinaryCancellation { version:"ordinary-cancel-v1"; requestId:string; bindingDigest:string; expectedRevision:number; target:OrdinaryTarget }
7
- export interface OrdinaryAuthority { bindingDigest:string; requestDigests:readonly string[] }
8
- type ControlState="not-assessed"|"failed"|"unknown";
9
- interface Row { target:OrdinaryTarget; state:"active"|"settled"|"unknown"; abortRequested:boolean; control:ControlState; boundary:ControlState; outcome:unknown }
10
- interface State { holds:Set<string>; enabled:boolean; coverageGap:boolean; bindingDigest:string; revision:number; rows:Map<string,Row>; handles:Map<string,AbortController>; requests:Map<string,{digest:string;result:unknown}> }
11
- const sessions=new WeakMap<object,OrdinaryChildren>(),ports=new WeakMap<object,State>();
12
- const id=(v:unknown)=>typeof v==="string"&&/^[a-zA-Z0-9:_-]{1,128}$/.test(v);
13
- function target(value:OrdinaryTarget){const t=detached(value);controlShape(t,["executionId","parentExecutionId","toolCallId"]);if(!isExecutionId(t.executionId)||!(t.parentExecutionId===null||isExecutionId(t.parentExecutionId))||!(t.toolCallId===null||typeof t.toolCallId==="string"&&t.toolCallId.length>0&&t.toolCallId.length<=256))throw Error("exact original occurrence identity required");return t;}
14
- export function ordinaryCancellation(input:OrdinaryCancellation){const r=detached(input);controlShape(r,["version","requestId","bindingDigest","expectedRevision","target"]);if(r.version!=="ordinary-cancel-v1"||!id(r.requestId)||!sha(r.bindingDigest)||!Number.isSafeInteger(r.expectedRevision)||r.expectedRevision<0)throw Error("invalid ordinary cancellation");return freeze({...r,target:target(r.target)});}
15
- export const ordinaryCancellationDigest=(r:OrdinaryCancellation)=>dataDigest(ordinaryCancellation(r));
16
- export interface OrdinaryChildren { readonly bindingDigest:string; inspect():unknown; quiescent():boolean; cancel(request:OrdinaryCancellation,authority:OrdinaryAuthority|null):unknown }
17
- export const isOrdinaryChildren=(p:unknown):p is OrdinaryChildren=>typeof p==="object"&&p!==null&&ports.has(p);
18
- /** Extension-internal constructor. No disk discovery/recovery and no identity inferred from labels. */
19
- function initializeOrdinaryChildren(session:object):void {
20
- if(sessions.has(session))throw Error("original session already registered");
21
- const s:State={holds:new Set(),enabled:false,coverageGap:false,bindingDigest:dataDigest({occurrence:randomUUID()}),revision:0,rows:new Map(),handles:new Map(),requests:new Map()};
22
- const port:OrdinaryChildren=Object.freeze({bindingDigest:s.bindingDigest,
23
- quiescent:()=>!s.coverageGap&&[...s.rows.values()].every(r=>r.state==="settled"&&r.boundary==="not-assessed"),
24
- inspect:()=>freeze(detached({bindingDigest:s.bindingDigest,revision:s.revision,children:[...s.rows.values()],admission:s.holds.size?"held-by-original-owner":"open",coverage:s.coverageGap?"unretained-before-opt-in":"original-registered-lifetimes-only",freshness:"snapshot-unknown",recovery:"unavailable",acceptance:"not-assessed"})),
25
- cancel(input:OrdinaryCancellation,authority:OrdinaryAuthority|null){
26
- const r=ordinaryCancellation(input),digest=ordinaryCancellationDigest(input),old=s.requests.get(r.requestId);
27
- if(old){if(old.digest!==digest)throw Error("immutable ordinary cancellation ID");return freeze(detached(old.result));}
28
- if(r.bindingDigest!==s.bindingDigest||r.expectedRevision!==s.revision)throw Error("stale original ordinary controller CAS");
29
- if(!authority||authority.bindingDigest!==s.bindingDigest||!authority.requestDigests.includes(digest))throw Error("independent exact ordinary cancellation authority required");
30
- const row=s.rows.get(r.target.executionId),handle=s.handles.get(r.target.executionId);
31
- if(!row||dataDigest(row.target)!==dataDigest(r.target)||row.state!=="active"||!handle)throw Error("original live child handle unavailable; no recovery");
32
- if(s.requests.size>=1024)throw Error("ordinary cancellation capacity exhausted");
33
- // Synchronous original-handle operation: CAS cannot yield between checking and requesting abort.
34
- const result={state:"abort-requested",target:r.target,revision:++s.revision,completion:"pending-original-caller",durability:"process-local"};
35
- s.requests.set(r.requestId,{digest,result});row.abortRequested=true;handle.abort();return freeze(detached(result));
36
- }});
37
- sessions.set(session,port);ports.set(port,s);
38
- }
39
- /** Only the original session object can retrieve its retained port; spreading/copying cannot. */
40
- export function ordinaryChildrenFor(session:object):OrdinaryChildren {const p=sessions.get(session);if(!p)throw Error("original grants session required");ports.get(p)!.enabled=true;return p;}
41
- /** Associate the actual extension API object at factory creation, never a label or path. */
42
- export function associateOrdinaryHost(host:object,session:object){initializeOrdinaryChildren(session);const p=sessions.get(session);if(!p||sessions.has(host))throw Error("original unbound extension host required");sessions.set(host,p);}
43
- export function retainSessionChild(session:object,input:OrdinaryTarget,caller?:AbortSignal){const p=sessions.get(session);if(!p)return undefined;const s=ports.get(p)!;if(!s.enabled){s.coverageGap=true;return undefined;}return retainOrdinaryChild(p,input,caller);}
44
- /** Internal host control seam, not a model tool or recovered capability. Reads never call it. */
45
- export function holdOrdinaryDispatch(port:OrdinaryChildren,key:string){
46
- const s=ports.get(port);if(!s||!sha(key))throw Error("original ordinary boundary required");
47
- if(s.coverageGap||[...s.rows.values()].some(r=>r.state!=="active"&&r.boundary!=="not-assessed"))throw Error("ordinary boundary unavailable; no recovery");
48
- if(!s.holds.has(key)){if(s.holds.size>=32)throw Error("ordinary boundary capacity exhausted");s.holds.add(key);s.revision++;}
49
- return Object.freeze({ready:()=>port.quiescent(),release:()=>{if(s.holds.delete(key))s.revision++;}});
50
- }
51
- /** Extension executor seam; never exported through the package root or model tools. */
52
- export function retainOrdinaryChild(port:OrdinaryChildren,input:OrdinaryTarget,caller?:AbortSignal){
53
- const s=ports.get(port);if(!s)throw Error("original ordinary controller required");const t=target(input);
54
- if(s.holds.size)throw Error("ordinary dispatch held at original control boundary");
55
- if(s.rows.has(t.executionId)||s.rows.size>=1024)throw Error("ordinary occurrence reused or capacity exhausted");
56
- const abort=new AbortController(),row:Row={target:t,state:"active",abortRequested:false,control:"not-assessed",boundary:"not-assessed",outcome:null};s.rows.set(t.executionId,row);s.handles.set(t.executionId,abort);s.revision++;
57
- let done=false;return {signal:caller?AbortSignal.any([caller,abort.signal]):abort.signal,
58
- settle(outcome:unknown,control:ControlState,boundary:ControlState=control){if(done)throw Error("original child already settled");done=true;row.outcome=detached(outcome);row.control=control;row.boundary=boundary;row.state=boundary==="unknown"?"unknown":"settled";s.handles.delete(t.executionId);s.revision++;}};
59
- }
@@ -1,270 +0,0 @@
1
- /**
2
- * Close herdr panes this process opened but never got to close.
3
- *
4
- * **As of ADR-0032 a pane belongs to the AGENT RUN, not to the tool call.** `runHerdrPane` closes a tab only for
5
- * a child that did *not* settle — closing the tab is the only kill herdr offers, so a child still working must
6
- * lose its pane. A child that answered keeps its pane so a human can read it, and this module reaps those: at
7
- * `agent_settled` (async) and at process `exit` (sync backstop).
8
- *
9
- * The gap that remains is the one this module was created for. A pi session **killed outright** runs no `exit`
10
- * handler, so it leaves one pane per tracked child, and `docs/probes/g16-herdr` records that an orphaned pane is
11
- * not trivially closable afterwards. R-62 was re-rated L×L → M×L when ADR-0031 made panes the default path.
12
- *
13
- * **Registered on `exit` only, deliberately — not on SIGINT or SIGTERM.** That is the part worth reading,
14
- * because the obvious fix is the dangerous one. Adding a signal listener *suppresses Node's default
15
- * termination*, so a library that adds one takes over an application-level decision it has no standing to
16
- * make: pi uses SIGINT to interrupt a turn, and a listener here that re-raised would turn "cancel this
17
- * delegation" into "exit pi". A governance package quietly changing the host's interrupt semantics is a
18
- * worse defect than the leak it fixes, and it would land on **every** session rather than the opt-in ones.
19
- *
20
- * So the coverage is exact and stated rather than implied:
21
- *
22
- * - **Covered:** normal exit, `process.exit()`, an uncaught exception that unwinds to the default handler.
23
- * - **NOT covered:** SIGKILL, and SIGTERM/SIGINT where nothing else in the process has installed a
24
- * listener. Node terminates without running `exit` handlers in those cases, by design. A pane can still
25
- * be orphaned there, and `herdr tab close <id>` is the manual remedy.
26
- *
27
- * Everything here is **synchronous**, because an `exit` handler is: a promise scheduled there never runs.
28
- */
29
-
30
- import { execFileSync } from "node:child_process";
31
- import { rmSync } from "node:fs";
32
- import { rm } from "node:fs/promises";
33
- import { MAX_CHILDREN_PER_CALL } from "./fanout.ts";
34
- import { defaultExec, parseReply, type HerdrExec } from "./herdr-cli.ts";
35
-
36
- /**
37
- * How many panes may be open at once — ADR-0032.
38
- *
39
- * **Derived from `MAX_CHILDREN_PER_CALL` rather than declared, so the two cannot drift.** The bound is not
40
- * decoration: `delegate_all` is capped per call and the fan-out budget bounds a subtree, but a plain blocking
41
- * `delegate` spends **nothing** from that budget by design — so thirty sequential `delegate` calls in one agent
42
- * run would otherwise hold thirty panes open until it settled.
43
- */
44
- export const MAX_OPEN_PANES = MAX_CHILDREN_PER_CALL;
45
-
46
- export interface OpenPane {
47
- /** herdr tab id — what `tab close` takes. */
48
- tab: string;
49
- /** herdr agent name, for diagnostics. There is no `agent stop`, so nothing acts on it — see `closePane`. */
50
- name: string;
51
- /** Staged system-prompt directory, removed with the pane it belonged to. */
52
- promptDir?: string;
53
- /**
54
- * True once the child has answered and stopped working.
55
- *
56
- * **The trim may only close a pane with this set**, and that is a correctness rule rather than politeness. pi
57
- * executes tool calls in **parallel** by default, and a plain `delegate` spends nothing from the fan-out
58
- * budget — so one assistant message can hold `delegate_all(8)` *and* a `delegate`, and the ninth pane's trim
59
- * used to close the oldest **live sibling**. Measured: two `delegate_all(8)` in one message killed **8 of 16
60
- * children mid-work**, each reported as "could not be started" with its partial output discarded, while the
61
- * ledger recorded all sixteen as provisioned. ADR-0032 argued the cap from *sequential* delegates only.
62
- */
63
- settled?: boolean;
64
- /**
65
- * The operator asked to keep this tab (`PI_GRANTS_HERDR_KEEP_PANE=1`), so no sweep may close it.
66
- *
67
- * It is registered anyway, and only for its `promptDir`: that temp dir was otherwise unreachable by either
68
- * sweep and leaked one directory per kept pane, forever. So `exit` removes the staged prompt and leaves the
69
- * tab, which is exactly what the flag promises.
70
- */
71
- keepTab?: boolean;
72
- }
73
-
74
- /** A run has finished with its pane: the trim may now reclaim it. */
75
- export function markPaneSettled(tab: string): void {
76
- const pane = open.get(tab);
77
- if (pane) pane.settled = true;
78
- }
79
-
80
- /**
81
- * Panes opened by THIS process and not yet closed. Keyed by tab id, so a double close is impossible.
82
- *
83
- * **That keying rests on tab ids being unique, which was measured rather than assumed** (herdr 0.7.5): ids
84
- * are `w<workspace>:t<counter>`, allocated by the single server, and **not recycled** — creating a tab,
85
- * closing it, and creating again yields the next counter value, never the freed one. If that ever changed,
86
- * concurrent panes would collapse into one entry and an early finisher's `untrackPane` would drop a live
87
- * sibling. Recorded because the hazard is invisible in the code and the precondition lives in another
88
- * project.
89
- */
90
- const open = new Map<string, OpenPane>();
91
- let hookInstalled = false;
92
-
93
- /** A run has opened a pane. Idempotent per tab, and installs the exit hook on first use only. */
94
- export function trackPane(pane: OpenPane): void {
95
- open.set(pane.tab, pane);
96
- if (hookInstalled) return;
97
- hookInstalled = true;
98
- // `once`, and only ever one, so a fan-out of eight children does not install eight handlers and trip
99
- // Node's MaxListenersExceededWarning — which would be this package printing a warning about itself.
100
- process.once("exit", () => void reapOpenPanes());
101
- }
102
-
103
- /** A run closed its own pane the normal way. */
104
- export function untrackPane(tab: string): void {
105
- open.delete(tab);
106
- }
107
-
108
- /** How many panes are currently outstanding — for tests and for `/grants`. */
109
- export function openPaneCount(): number {
110
- return open.size;
111
- }
112
-
113
- /** Per-command wall clock. `SIGKILL` because `timeout` alone is not a bound — see `TOTAL_BUDGET_MS`. */
114
- const PER_CALL_MS = 2000;
115
-
116
- /**
117
- * Total wall clock the whole sweep may add to process exit.
118
- *
119
- * **Measured, and the reason this exists.** With eight panes and a hung herdr, a per-call timeout of 5s
120
- * across two calls per pane is **80 seconds of silent hang at shutdown** — `stdio: "ignore"`, so the process
121
- * looks wedged with no output. Worse, `timeout` is not a hard bound at all: `spawnSync` sends `SIGTERM` and
122
- * then waits for the child to actually die, so a process ignoring `SIGTERM` runs to its own completion
123
- * (measured: a 3s timeout took 59.8s against `trap '' TERM; sleep 60`). Hence `killSignal: "SIGKILL"` **and**
124
- * a budget across the whole sweep rather than per call.
125
- *
126
- * A pane left open because the budget ran out is the failure this whole module downgrades to, and it is the
127
- * right one: `herdr tab close <id>` is a five-second manual fix, whereas a shell that will not exit is not.
128
- */
129
- const TOTAL_BUDGET_MS = 6000;
130
-
131
- /** Run one herdr command synchronously, swallowing everything: at exit there is nowhere to report. */
132
- const defaultSyncExec = (args: string[]): void => {
133
- execFileSync("herdr", args, { stdio: "ignore", timeout: PER_CALL_MS, killSignal: "SIGKILL" });
134
- };
135
-
136
- /**
137
- * Close every outstanding pane and return the tab ids closed.
138
- *
139
- * Exported and parameterised so it can be tested without herdr installed: the exit hook is unreachable from
140
- * a test (registering a real `exit` handler would run during the test runner's own shutdown), so the hook is
141
- * one line and *this* is where the behaviour lives.
142
- *
143
- * Failures are swallowed per pane rather than per call — one pane herdr will not close must not strand the
144
- * other seven, and nothing at exit has anywhere to report to anyway.
145
- */
146
- export function reapOpenPanes(syncExec: (args: string[]) => void = defaultSyncExec, now = Date.now): string[] {
147
- const closed: string[] = [];
148
- const deadline = now() + TOTAL_BUDGET_MS;
149
- for (const pane of [...open.values()]) {
150
- // Checked BEFORE each pane rather than after, so the budget bounds what we start, not what we finish.
151
- // Panes left behind stay in the map; there is no later sweep, and saying so is the honest position —
152
- // `openPaneCount()` is non-zero afterwards precisely so a caller could report it if it ever wanted to.
153
- if (now() >= deadline) break;
154
- // No `agent stop`: it is not a herdr command (see `closePane`). Closing the tab is the kill.
155
- //
156
- // A `keepTab` pane is registered only for its staged prompt: remove that and leave the tab alone, which is
157
- // the whole of what `PI_GRANTS_HERDR_KEEP_PANE=1` promises.
158
- let closedThisPane = pane.keepTab === true;
159
- if (pane.keepTab) {
160
- if (pane.promptDir) {
161
- try {
162
- rmSync(pane.promptDir, { recursive: true, force: true });
163
- } catch {
164
- /* /tmp litter, not correctness */
165
- }
166
- }
167
- open.delete(pane.tab);
168
- continue;
169
- }
170
- try {
171
- syncExec(["tab", "close", pane.tab]);
172
- closed.push(pane.tab);
173
- closedThisPane = true;
174
- } catch {
175
- /* an orphan we could not close: `herdr tab close` is the manual remedy, as documented above */
176
- }
177
- // **The staged prompt is deleted only when the tab is provably gone.** It used to be removed
178
- // unconditionally, so a pane herdr refused to close lost its `--append-system-prompt` file — and pi treats a
179
- // missing path there as **literal text, with no warning** (`resource-loader.js`: `existsSync` fails, the
180
- // input is returned). Re-running that pane's echoed argv would hand the child a pathname as its
181
- // instructions. Litter is cheaper than silently swapping a definition's body for its filename.
182
- if (closedThisPane && pane.promptDir) {
183
- try {
184
- rmSync(pane.promptDir, { recursive: true, force: true });
185
- } catch {
186
- /* /tmp litter, not correctness */
187
- }
188
- }
189
- // Untracked either way, and only here: at `exit` there is no later sweep, so keeping an unclosable pane
190
- // registered buys nothing. `closePane`'s async path deliberately differs — another sweep may still run.
191
- open.delete(pane.tab);
192
- }
193
- return closed;
194
- }
195
-
196
- /**
197
- * Close one tracked pane. Shared by the async sweep and the trim so they cannot disagree about what "closed"
198
- * means — which is the whole of R-62's lesson, one layer up.
199
- *
200
- * Returns whether the tab is **provably** gone. A close herdr refused leaves the pane tracked, so the `exit`
201
- * handler retries it; untracking on a failed close is what disabled the one control built for that failure.
202
- */
203
- async function closePane(exec: HerdrExec, pane: OpenPane): Promise<boolean> {
204
- // **No `agent stop`.** It is not a herdr command — measured against 0.7.5, where it prints the usage banner
205
- // and exits 0, which `defaultExec` reports as success. Two call sites here and one in `run-herdr.ts` issued it
206
- // for nothing, and `docs/probes/g16-herdr` asserted it worked from a block that was never run. Closing the tab
207
- // is the only kill herdr offers, and it does kill the child.
208
- const reply = await exec(["tab", "close", pane.tab]).catch(() => undefined);
209
- const closed = reply !== undefined && !parseReply(reply).error;
210
- if (!closed) return false;
211
- if (pane.promptDir) await rm(pane.promptDir, { recursive: true, force: true }).catch(() => undefined);
212
- open.delete(pane.tab);
213
- return true;
214
- }
215
-
216
- /**
217
- * Close every outstanding pane — the `agent_settled` path (ADR-0032).
218
- *
219
- * **A separate function from `reapOpenPanes` rather than a shared implementation**, and the reason is not
220
- * style. The sync one is `execFileSync` with a six-second total budget *by necessity*: an `exit` handler cannot
221
- * await. Running that at `agent_settled` would freeze pi for up to six seconds **every time the operator gets
222
- * their prompt back** — turning a feature that exists to make work visible into a stall.
223
- *
224
- * Both drain the same `Map`, keyed by tab id, so a double close is impossible and a pane herdr refused stays
225
- * registered for whichever sweep runs next.
226
- *
227
- * Sequential rather than concurrent: a fan-out's panes are at most `MAX_OPEN_PANES`, and eight `tab close`
228
- * calls in parallel against one herdr server buys nothing worth the burst.
229
- */
230
- export async function reapOpenPanesAsync(exec: HerdrExec = defaultExec): Promise<string[]> {
231
- const closed: string[] = [];
232
- for (const pane of [...open.values()]) {
233
- // `keepTab` panes are registered only so their staged prompt can be reaped at `exit`; the tab itself is the
234
- // operator's to close.
235
- if (pane.keepTab) continue;
236
- if (await closePane(exec, pane)) closed.push(pane.tab);
237
- }
238
- return closed;
239
- }
240
-
241
- /**
242
- * Keep at most `MAX_OPEN_PANES` open, closing the oldest first.
243
- *
244
- * The `Map`'s insertion order **is** the age order, so no timestamp is needed — and that is why `trackPane`
245
- * must never re-`set` an existing tab, which would move it to the back of the queue and make an old pane look
246
- * new.
247
- *
248
- * Whatever it closes is returned so the caller can **say so** rather than silently dropping a pane the operator
249
- * was reading (R-48's rule, applied to a display).
250
- */
251
- export async function trimOpenPanes(exec: HerdrExec = defaultExec): Promise<string[]> {
252
- if (open.size <= MAX_OPEN_PANES) return [];
253
- const closed: string[] = [];
254
-
255
- // **Only SETTLED panes are candidates, oldest first.** A live sibling's pane is its child's only terminal, and
256
- // closing a tab kills the child — see `OpenPane.settled`. If every open pane is live the cap is exceeded and
257
- // nothing is closed, which is the right failure: a pane too many costs an operator a keystroke, and a killed
258
- // child costs them the work.
259
- //
260
- // **Walks past what it cannot close**, rather than attempting `excess` panes from the front and calling it
261
- // done. A pane herdr refuses to close used to sit at the head forever, so the cap silently stopped holding
262
- // (measured: 30 panes for 30 delegates when every close was refused) and the same corpse was re-attacked on
263
- // every spawn — O(n²) round-trips.
264
- for (const pane of [...open.values()]) {
265
- if (open.size - closed.length <= MAX_OPEN_PANES) break;
266
- if (!pane.settled || pane.keepTab) continue;
267
- if (await closePane(exec, pane)) closed.push(pane.tab);
268
- }
269
- return closed;
270
- }
package/src/pi-tools.ts DELETED
@@ -1,25 +0,0 @@
1
- /**
2
- * Facts about pi itself: its built-in tool names, and the capability that means "all of them".
3
- *
4
- * These lived in `agent-types.ts` until ADR-0016 deleted that module along with the rest of the
5
- * `@tintinweb/pi-subagents` port. They are not about agent types at all — `PI_BUILTIN_TOOLS` is how the
6
- * catalog tells a built-in from an extension tool, and `WILDCARD` is a capability id — so they outlive
7
- * the port and belong somewhere that does not name a package we no longer depend on.
8
- *
9
- * **`PI_BUILTIN_TOOLS` is a pinned observation, and it has already drifted once** (R-31): pi 0.84.1
10
- * exposes a `parallel` tool that the 0.83.0 list did not contain, which made it classify as an
11
- * *extension* capability. The list is used for classification only — never for enforcement, which is
12
- * `--tools`' job — so drift misfiles a capability rather than granting one. Keep it current anyway; a
13
- * misfiled capability is a confusing catalog.
14
- */
15
-
16
- import type { Capability } from "./resolve.ts";
17
-
18
- /** Capability held only by a delegator authorised to hand out everything. */
19
- export const WILDCARD: Capability = "tool:*";
20
-
21
-
22
- /** pi's built-in tools, observed against 0.84.1. `parallel` was added since 0.83.0 — see R-31. */
23
- export const PI_BUILTIN_TOOLS = [
24
- "bash", "edit", "edit-diff", "find", "grep", "ls", "parallel", "read", "write",
25
- ] as const;
@@ -1,26 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import { isExecutionId } from "./execution-id.ts";
3
- import type { AttemptDemand } from "./resource-budget.ts";
4
- export const PRODUCER_IPC_LIMITS = Object.freeze({ frameBytes:1024, referenceBytes:128, childMs:3000, graceMs:50, maxElapsedMs:30000 });
5
- export interface ProducerIpcBinding { version:"producer-ipc-v1"; budgetDigest:string; orderId:string; experimentId:string; executionId:string; charterSha256:string; invocationId:string }
6
- export interface ProducerIpcReferences { claimRef:string; responseRef:string }
7
- const id = (v:unknown):v is string => typeof v === "string" && /^[a-zA-Z0-9:_-]{1,128}$/.test(v);
8
- const hash = (v:unknown):v is string => typeof v === "string" && /^[a-f0-9]{64}$/.test(v);
9
- export function ipcShape(value:unknown, keys:readonly string[]): asserts value is Record<string,unknown> {
10
- if (!value || typeof value !== "object" || ![Object.prototype,null].includes(Object.getPrototypeOf(value)) || Reflect.ownKeys(value).length !== keys.length || keys.some(k=>{const d=Object.getOwnPropertyDescriptor(value,k);return !d||!d.enumerable||!Object.hasOwn(d,"value");})) throw new TypeError("closed producer IPC data required");
11
- }
12
- export function producerIpcBinding(value:ProducerIpcBinding):Readonly<ProducerIpcBinding> {
13
- ipcShape(value,["version","budgetDigest","orderId","experimentId","executionId","charterSha256","invocationId"]);
14
- if (value.version!=="producer-ipc-v1" || !hash(value.budgetDigest) || !hash(value.charterSha256) || !isExecutionId(value.executionId) || ![value.orderId,value.experimentId,value.invocationId].every(id)) throw new TypeError("exact producer IPC binding required");
15
- return Object.freeze({version:value.version,budgetDigest:value.budgetDigest,orderId:value.orderId,experimentId:value.experimentId,executionId:value.executionId,charterSha256:value.charterSha256,invocationId:value.invocationId});
16
- }
17
- export const producerIpcBindingDigest = (value:ProducerIpcBinding) => createHash("sha256").update(JSON.stringify(producerIpcBinding(value))).digest("hex");
18
- export const producerIpcFrame = (value:ProducerIpcBinding):Buffer => Buffer.from(JSON.stringify({id:producerIpcBinding(value).invocationId,sequence:1})+"\n");
19
- /** Existing v4 reservation schema, not a new model/effort/skills experiment operation. */
20
- export function producerIpcDemand(value:ProducerIpcBinding):AttemptDemand {
21
- const b=producerIpcBinding(value);return {attemptId:b.executionId,orderId:b.orderId,experimentId:b.experimentId,kind:"primary",parentAttemptId:null,inputBytes:Buffer.byteLength(JSON.stringify(b)),inputDigest:producerIpcBindingDigest(b)};
22
- }
23
- export function ipcReferences(value:ProducerIpcReferences):Readonly<ProducerIpcReferences> {
24
- ipcShape(value,["claimRef","responseRef"]);if(!id(value.claimRef)||!id(value.responseRef))throw new TypeError("bounded evidence references required");
25
- return Object.freeze({claimRef:value.claimRef,responseRef:value.responseRef});
26
- }