@blxzer/pactile 0.6.0-beta.2 → 0.6.0-beta.4

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 (703) hide show
  1. package/README.md +93 -84
  2. package/README.zh-CN.md +90 -81
  3. package/dist/bin/compat-warning.d.ts +2 -0
  4. package/dist/bin/compat-warning.d.ts.map +1 -0
  5. package/dist/bin/compat-warning.js +8 -0
  6. package/dist/bin/compat-warning.js.map +1 -0
  7. package/dist/bin/cstl.d.ts +3 -0
  8. package/dist/bin/cstl.d.ts.map +1 -0
  9. package/{bin → dist/bin}/cstl.js +2 -3
  10. package/dist/bin/cstl.js.map +1 -0
  11. package/dist/bin/pactile.d.ts +3 -0
  12. package/dist/bin/pactile.d.ts.map +1 -0
  13. package/dist/bin/pactile.js +4 -0
  14. package/dist/bin/pactile.js.map +1 -0
  15. package/dist/cli/index.d.ts.map +1 -1
  16. package/dist/cli/index.js +77 -17
  17. package/dist/cli/index.js.map +1 -1
  18. package/dist/commands/capability.d.ts +3 -0
  19. package/dist/commands/capability.d.ts.map +1 -0
  20. package/dist/commands/capability.js +129 -0
  21. package/dist/commands/capability.js.map +1 -0
  22. package/dist/commands/codex.d.ts.map +1 -1
  23. package/dist/commands/codex.js +54 -6
  24. package/dist/commands/codex.js.map +1 -1
  25. package/dist/commands/context.d.ts +2 -0
  26. package/dist/commands/context.d.ts.map +1 -1
  27. package/dist/commands/context.js +367 -41
  28. package/dist/commands/context.js.map +1 -1
  29. package/dist/commands/detach.d.ts.map +1 -1
  30. package/dist/commands/detach.js +5 -4
  31. package/dist/commands/detach.js.map +1 -1
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +615 -259
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/legacy-task.d.ts +3 -0
  36. package/dist/commands/legacy-task.d.ts.map +1 -0
  37. package/dist/commands/legacy-task.js +295 -0
  38. package/dist/commands/legacy-task.js.map +1 -0
  39. package/dist/commands/pi.d.ts +3 -2
  40. package/dist/commands/pi.d.ts.map +1 -1
  41. package/dist/commands/pi.js +333 -10
  42. package/dist/commands/pi.js.map +1 -1
  43. package/dist/commands/session.d.ts.map +1 -1
  44. package/dist/commands/session.js +148 -24
  45. package/dist/commands/session.js.map +1 -1
  46. package/dist/commands/task-schedule.d.ts +17 -0
  47. package/dist/commands/task-schedule.d.ts.map +1 -0
  48. package/dist/commands/task-schedule.js +395 -0
  49. package/dist/commands/task-schedule.js.map +1 -0
  50. package/dist/commands/task-verify-plan.d.ts +3 -0
  51. package/dist/commands/task-verify-plan.d.ts.map +1 -0
  52. package/dist/commands/task-verify-plan.js +503 -0
  53. package/dist/commands/task-verify-plan.js.map +1 -0
  54. package/dist/commands/task-worktree-close.d.ts +4 -0
  55. package/dist/commands/task-worktree-close.d.ts.map +1 -0
  56. package/dist/commands/task-worktree-close.js +81 -0
  57. package/dist/commands/task-worktree-close.js.map +1 -0
  58. package/dist/commands/task.d.ts +3 -0
  59. package/dist/commands/task.d.ts.map +1 -1
  60. package/dist/commands/task.js +1373 -184
  61. package/dist/commands/task.js.map +1 -1
  62. package/dist/commands/tile-selection.d.ts +3 -0
  63. package/dist/commands/tile-selection.d.ts.map +1 -0
  64. package/dist/commands/tile-selection.js +174 -0
  65. package/dist/commands/tile-selection.js.map +1 -0
  66. package/dist/commands/update.d.ts +1 -1
  67. package/dist/commands/update.d.ts.map +1 -1
  68. package/dist/commands/update.js +80 -55
  69. package/dist/commands/update.js.map +1 -1
  70. package/dist/commands/worktree.d.ts +4 -0
  71. package/dist/commands/worktree.d.ts.map +1 -0
  72. package/dist/commands/worktree.js +198 -0
  73. package/dist/commands/worktree.js.map +1 -0
  74. package/dist/configurators/shared.js +1 -1
  75. package/dist/configurators/shared.js.map +1 -1
  76. package/dist/core/compat/environment.d.ts +0 -1
  77. package/dist/core/compat/environment.d.ts.map +1 -1
  78. package/dist/core/compat/environment.js +1 -9
  79. package/dist/core/compat/environment.js.map +1 -1
  80. package/dist/core/pactile/bounded-capabilities.d.ts +127 -0
  81. package/dist/core/pactile/bounded-capabilities.d.ts.map +1 -0
  82. package/dist/core/pactile/bounded-capabilities.js +188 -0
  83. package/dist/core/pactile/bounded-capabilities.js.map +1 -0
  84. package/dist/core/pactile/index.d.ts +1 -0
  85. package/dist/core/pactile/index.d.ts.map +1 -1
  86. package/dist/core/pactile/index.js +1 -0
  87. package/dist/core/pactile/index.js.map +1 -1
  88. package/dist/core/task/index.d.ts +4 -2
  89. package/dist/core/task/index.d.ts.map +1 -1
  90. package/dist/core/task/index.js +2 -1
  91. package/dist/core/task/index.js.map +1 -1
  92. package/dist/core/task/kernel-cli.d.ts +14 -1
  93. package/dist/core/task/kernel-cli.d.ts.map +1 -1
  94. package/dist/core/task/kernel-cli.js +128 -0
  95. package/dist/core/task/kernel-cli.js.map +1 -1
  96. package/dist/core/task/kernel-contract.d.ts +6 -3
  97. package/dist/core/task/kernel-contract.d.ts.map +1 -1
  98. package/dist/core/task/kernel-contract.js +71 -23
  99. package/dist/core/task/kernel-contract.js.map +1 -1
  100. package/dist/core/task/kernel-store.d.ts +6 -0
  101. package/dist/core/task/kernel-store.d.ts.map +1 -1
  102. package/dist/core/task/kernel-store.js +54 -2
  103. package/dist/core/task/kernel-store.js.map +1 -1
  104. package/dist/core/task/legacy-task-migration-reader.d.ts +137 -0
  105. package/dist/core/task/legacy-task-migration-reader.d.ts.map +1 -0
  106. package/dist/core/task/legacy-task-migration-reader.js +512 -0
  107. package/dist/core/task/legacy-task-migration-reader.js.map +1 -0
  108. package/dist/core/task/legacy-task-migration.d.ts +105 -0
  109. package/dist/core/task/legacy-task-migration.d.ts.map +1 -0
  110. package/dist/core/task/legacy-task-migration.js +562 -0
  111. package/dist/core/task/legacy-task-migration.js.map +1 -0
  112. package/dist/core/task/legacy-task-overlay-durable-io.d.ts +18 -0
  113. package/dist/core/task/legacy-task-overlay-durable-io.d.ts.map +1 -0
  114. package/dist/core/task/legacy-task-overlay-durable-io.js +66 -0
  115. package/dist/core/task/legacy-task-overlay-durable-io.js.map +1 -0
  116. package/dist/core/task/legacy-task-reconciliation-reader.d.ts +26 -0
  117. package/dist/core/task/legacy-task-reconciliation-reader.d.ts.map +1 -0
  118. package/dist/core/task/legacy-task-reconciliation-reader.js +324 -0
  119. package/dist/core/task/legacy-task-reconciliation-reader.js.map +1 -0
  120. package/dist/core/task/legacy-task-v2-import.d.ts +67 -0
  121. package/dist/core/task/legacy-task-v2-import.d.ts.map +1 -0
  122. package/dist/core/task/legacy-task-v2-import.js +1046 -0
  123. package/dist/core/task/legacy-task-v2-import.js.map +1 -0
  124. package/dist/core/task/project-file-observer.d.ts +46 -0
  125. package/dist/core/task/project-file-observer.d.ts.map +1 -0
  126. package/dist/core/task/project-file-observer.js +618 -0
  127. package/dist/core/task/project-file-observer.js.map +1 -0
  128. package/dist/core/task/start-authority.d.ts +14 -0
  129. package/dist/core/task/start-authority.d.ts.map +1 -0
  130. package/dist/core/task/start-authority.js +146 -0
  131. package/dist/core/task/start-authority.js.map +1 -0
  132. package/dist/core/task/strategy.d.ts +24 -0
  133. package/dist/core/task/strategy.d.ts.map +1 -0
  134. package/dist/core/task/strategy.js +136 -0
  135. package/dist/core/task/strategy.js.map +1 -0
  136. package/dist/core/task/task-candidate-observer.d.ts +111 -0
  137. package/dist/core/task/task-candidate-observer.d.ts.map +1 -0
  138. package/dist/core/task/task-candidate-observer.js +762 -0
  139. package/dist/core/task/task-candidate-observer.js.map +1 -0
  140. package/dist/core/task/task-kernel-close.d.ts +5 -0
  141. package/dist/core/task/task-kernel-close.d.ts.map +1 -0
  142. package/dist/core/task/task-kernel-close.js +367 -0
  143. package/dist/core/task/task-kernel-close.js.map +1 -0
  144. package/dist/core/task/task-kernel-dependencies.d.ts +3 -0
  145. package/dist/core/task/task-kernel-dependencies.d.ts.map +1 -0
  146. package/dist/core/task/task-kernel-dependencies.js +24 -0
  147. package/dist/core/task/task-kernel-dependencies.js.map +1 -0
  148. package/dist/core/task/task-kernel-host.d.ts +5 -0
  149. package/dist/core/task/task-kernel-host.d.ts.map +1 -0
  150. package/dist/core/task/task-kernel-host.js +136 -0
  151. package/dist/core/task/task-kernel-host.js.map +1 -0
  152. package/dist/core/task/task-kernel-paths.d.ts +19 -0
  153. package/dist/core/task/task-kernel-paths.d.ts.map +1 -0
  154. package/dist/core/task/task-kernel-paths.js +237 -0
  155. package/dist/core/task/task-kernel-paths.js.map +1 -0
  156. package/dist/core/task/task-kernel-reviews.d.ts +3 -0
  157. package/dist/core/task/task-kernel-reviews.d.ts.map +1 -0
  158. package/dist/core/task/task-kernel-reviews.js +100 -0
  159. package/dist/core/task/task-kernel-reviews.js.map +1 -0
  160. package/dist/core/task/task-kernel-runs.d.ts +5 -0
  161. package/dist/core/task/task-kernel-runs.d.ts.map +1 -0
  162. package/dist/core/task/task-kernel-runs.js +196 -0
  163. package/dist/core/task/task-kernel-runs.js.map +1 -0
  164. package/dist/core/task/task-kernel-schema.d.ts +29 -0
  165. package/dist/core/task/task-kernel-schema.d.ts.map +1 -0
  166. package/dist/core/task/task-kernel-schema.js +1169 -0
  167. package/dist/core/task/task-kernel-schema.js.map +1 -0
  168. package/dist/core/task/task-kernel-store-v2.d.ts +33 -0
  169. package/dist/core/task/task-kernel-store-v2.d.ts.map +1 -0
  170. package/dist/core/task/task-kernel-store-v2.js +574 -0
  171. package/dist/core/task/task-kernel-store-v2.js.map +1 -0
  172. package/dist/core/task/task-kernel-types.d.ts +585 -0
  173. package/dist/core/task/task-kernel-types.d.ts.map +1 -0
  174. package/dist/core/task/task-kernel-types.js +31 -0
  175. package/dist/core/task/task-kernel-types.js.map +1 -0
  176. package/dist/core/task/task-kernel-workspaces.d.ts +10 -0
  177. package/dist/core/task/task-kernel-workspaces.d.ts.map +1 -0
  178. package/dist/core/task/task-kernel-workspaces.js +250 -0
  179. package/dist/core/task/task-kernel-workspaces.js.map +1 -0
  180. package/dist/core/task/task-kernel-write-set.d.ts +3 -0
  181. package/dist/core/task/task-kernel-write-set.d.ts.map +1 -0
  182. package/dist/core/task/task-kernel-write-set.js +12 -0
  183. package/dist/core/task/task-kernel-write-set.js.map +1 -0
  184. package/dist/core/task/task-kernel.d.ts +19 -0
  185. package/dist/core/task/task-kernel.d.ts.map +1 -0
  186. package/dist/core/task/task-kernel.js +17 -0
  187. package/dist/core/task/task-kernel.js.map +1 -0
  188. package/dist/core/task/task-pull-request-observer.d.ts +25 -0
  189. package/dist/core/task/task-pull-request-observer.d.ts.map +1 -0
  190. package/dist/core/task/task-pull-request-observer.js +187 -0
  191. package/dist/core/task/task-pull-request-observer.js.map +1 -0
  192. package/dist/core/task/task-review-evidence.d.ts +27 -0
  193. package/dist/core/task/task-review-evidence.d.ts.map +1 -0
  194. package/dist/core/task/task-review-evidence.js +383 -0
  195. package/dist/core/task/task-review-evidence.js.map +1 -0
  196. package/dist/migrations/index.d.ts +1 -1
  197. package/dist/migrations/index.d.ts.map +1 -1
  198. package/dist/migrations/index.js +5 -3
  199. package/dist/migrations/index.js.map +1 -1
  200. package/dist/migrations/manifests/0.6.0-beta.3.json +9 -0
  201. package/dist/migrations/manifests/0.6.0-beta.4.json +9 -0
  202. package/dist/pactile/artifacts/documents.d.ts +72 -0
  203. package/dist/pactile/artifacts/documents.d.ts.map +1 -0
  204. package/dist/pactile/artifacts/documents.js +406 -0
  205. package/dist/pactile/artifacts/documents.js.map +1 -0
  206. package/dist/pactile/artifacts/index.d.ts +6 -0
  207. package/dist/pactile/artifacts/index.d.ts.map +1 -0
  208. package/dist/pactile/artifacts/index.js +6 -0
  209. package/dist/pactile/artifacts/index.js.map +1 -0
  210. package/dist/pactile/artifacts/projection.d.ts +50 -0
  211. package/dist/pactile/artifacts/projection.d.ts.map +1 -0
  212. package/dist/pactile/artifacts/projection.js +139 -0
  213. package/dist/pactile/artifacts/projection.js.map +1 -0
  214. package/dist/pactile/artifacts/reader.d.ts +20 -0
  215. package/dist/pactile/artifacts/reader.d.ts.map +1 -0
  216. package/dist/pactile/artifacts/reader.js +559 -0
  217. package/dist/pactile/artifacts/reader.js.map +1 -0
  218. package/dist/pactile/artifacts/schema.d.ts +4 -0
  219. package/dist/pactile/artifacts/schema.d.ts.map +1 -0
  220. package/dist/pactile/artifacts/schema.js +217 -0
  221. package/dist/pactile/artifacts/schema.js.map +1 -0
  222. package/dist/pactile/artifacts/types.d.ts +66 -0
  223. package/dist/pactile/artifacts/types.d.ts.map +1 -0
  224. package/dist/pactile/artifacts/types.js +45 -0
  225. package/dist/pactile/artifacts/types.js.map +1 -0
  226. package/dist/pactile/capabilities/claim.d.ts +3 -0
  227. package/dist/pactile/capabilities/claim.d.ts.map +1 -0
  228. package/dist/pactile/capabilities/claim.js +97 -0
  229. package/dist/pactile/capabilities/claim.js.map +1 -0
  230. package/dist/pactile/capabilities/command.d.ts +6 -0
  231. package/dist/pactile/capabilities/command.d.ts.map +1 -0
  232. package/dist/pactile/capabilities/command.js +253 -0
  233. package/dist/pactile/capabilities/command.js.map +1 -0
  234. package/dist/pactile/capabilities/discover.d.ts +6 -0
  235. package/dist/pactile/capabilities/discover.d.ts.map +1 -0
  236. package/dist/pactile/capabilities/discover.js +48 -0
  237. package/dist/pactile/capabilities/discover.js.map +1 -0
  238. package/dist/pactile/capabilities/node.d.ts +15 -0
  239. package/dist/pactile/capabilities/node.d.ts.map +1 -0
  240. package/dist/pactile/capabilities/node.js +292 -0
  241. package/dist/pactile/capabilities/node.js.map +1 -0
  242. package/dist/pactile/capabilities/read.d.ts +6 -0
  243. package/dist/pactile/capabilities/read.d.ts.map +1 -0
  244. package/dist/pactile/capabilities/read.js +100 -0
  245. package/dist/pactile/capabilities/read.js.map +1 -0
  246. package/dist/pactile/capabilities/receipts.d.ts +17 -0
  247. package/dist/pactile/capabilities/receipts.d.ts.map +1 -0
  248. package/dist/pactile/capabilities/receipts.js +90 -0
  249. package/dist/pactile/capabilities/receipts.js.map +1 -0
  250. package/dist/pactile/capabilities/search.d.ts +6 -0
  251. package/dist/pactile/capabilities/search.d.ts.map +1 -0
  252. package/dist/pactile/capabilities/search.js +181 -0
  253. package/dist/pactile/capabilities/search.js.map +1 -0
  254. package/dist/pactile/capabilities/shared.d.ts +29 -0
  255. package/dist/pactile/capabilities/shared.d.ts.map +1 -0
  256. package/dist/pactile/capabilities/shared.js +134 -0
  257. package/dist/pactile/capabilities/shared.js.map +1 -0
  258. package/dist/pactile/capabilities/workspace.d.ts +19 -0
  259. package/dist/pactile/capabilities/workspace.d.ts.map +1 -0
  260. package/dist/pactile/capabilities/workspace.js +273 -0
  261. package/dist/pactile/capabilities/workspace.js.map +1 -0
  262. package/dist/pactile/codex/bridge.d.ts +105 -2
  263. package/dist/pactile/codex/bridge.d.ts.map +1 -1
  264. package/dist/pactile/codex/bridge.js +1266 -92
  265. package/dist/pactile/codex/bridge.js.map +1 -1
  266. package/dist/pactile/codex/dispatch-stop-proof.d.ts +43 -0
  267. package/dist/pactile/codex/dispatch-stop-proof.d.ts.map +1 -0
  268. package/dist/pactile/codex/dispatch-stop-proof.js +177 -0
  269. package/dist/pactile/codex/dispatch-stop-proof.js.map +1 -0
  270. package/dist/pactile/codex/host-stop.d.ts +47 -0
  271. package/dist/pactile/codex/host-stop.d.ts.map +1 -0
  272. package/dist/pactile/codex/host-stop.js +344 -0
  273. package/dist/pactile/codex/host-stop.js.map +1 -0
  274. package/dist/pactile/coordination/index.d.ts +4 -0
  275. package/dist/pactile/coordination/index.d.ts.map +1 -0
  276. package/dist/pactile/coordination/index.js +4 -0
  277. package/dist/pactile/coordination/index.js.map +1 -0
  278. package/dist/pactile/coordination/journal.d.ts +10 -0
  279. package/dist/pactile/coordination/journal.d.ts.map +1 -0
  280. package/dist/pactile/coordination/journal.js +255 -0
  281. package/dist/pactile/coordination/journal.js.map +1 -0
  282. package/dist/pactile/coordination/kernel-resume.d.ts +8 -0
  283. package/dist/pactile/coordination/kernel-resume.d.ts.map +1 -0
  284. package/dist/pactile/coordination/kernel-resume.js +87 -0
  285. package/dist/pactile/coordination/kernel-resume.js.map +1 -0
  286. package/dist/pactile/coordination/model.d.ts +553 -0
  287. package/dist/pactile/coordination/model.d.ts.map +1 -0
  288. package/dist/pactile/coordination/model.js +239 -0
  289. package/dist/pactile/coordination/model.js.map +1 -0
  290. package/dist/pactile/coordination/state.d.ts +46 -0
  291. package/dist/pactile/coordination/state.d.ts.map +1 -0
  292. package/dist/pactile/coordination/state.js +301 -0
  293. package/dist/pactile/coordination/state.js.map +1 -0
  294. package/dist/pactile/coordination/store.d.ts +94 -0
  295. package/dist/pactile/coordination/store.d.ts.map +1 -0
  296. package/dist/pactile/coordination/store.js +396 -0
  297. package/dist/pactile/coordination/store.js.map +1 -0
  298. package/dist/pactile/index.d.ts +7 -1
  299. package/dist/pactile/index.d.ts.map +1 -1
  300. package/dist/pactile/index.js +7 -1
  301. package/dist/pactile/index.js.map +1 -1
  302. package/dist/pactile/jev/contracts.d.ts +104 -0
  303. package/dist/pactile/jev/contracts.d.ts.map +1 -0
  304. package/dist/pactile/jev/contracts.js +53 -0
  305. package/dist/pactile/jev/contracts.js.map +1 -0
  306. package/dist/pactile/jev/decision.d.ts +58 -0
  307. package/dist/pactile/jev/decision.d.ts.map +1 -0
  308. package/dist/pactile/jev/decision.js +149 -0
  309. package/dist/pactile/jev/decision.js.map +1 -0
  310. package/dist/pactile/jev/http.d.ts +25 -0
  311. package/dist/pactile/jev/http.d.ts.map +1 -0
  312. package/dist/pactile/jev/http.js +234 -0
  313. package/dist/pactile/jev/http.js.map +1 -0
  314. package/dist/pactile/jev/index.d.ts +8 -0
  315. package/dist/pactile/jev/index.d.ts.map +1 -0
  316. package/dist/pactile/jev/index.js +4 -0
  317. package/dist/pactile/jev/index.js.map +1 -0
  318. package/dist/pactile/jev/outbound.d.ts +15 -0
  319. package/dist/pactile/jev/outbound.d.ts.map +1 -0
  320. package/dist/pactile/jev/outbound.js +264 -0
  321. package/dist/pactile/jev/outbound.js.map +1 -0
  322. package/dist/pactile/jev/project-policy.d.ts +10 -0
  323. package/dist/pactile/jev/project-policy.d.ts.map +1 -0
  324. package/dist/pactile/jev/project-policy.js +53 -0
  325. package/dist/pactile/jev/project-policy.js.map +1 -0
  326. package/dist/pactile/jev/response.d.ts +17 -0
  327. package/dist/pactile/jev/response.d.ts.map +1 -0
  328. package/dist/pactile/jev/response.js +280 -0
  329. package/dist/pactile/jev/response.js.map +1 -0
  330. package/dist/pactile/jev/scheduler-advice.d.ts +92 -0
  331. package/dist/pactile/jev/scheduler-advice.d.ts.map +1 -0
  332. package/dist/pactile/jev/scheduler-advice.js +323 -0
  333. package/dist/pactile/jev/scheduler-advice.js.map +1 -0
  334. package/dist/pactile/jev/transport.d.ts +6 -0
  335. package/dist/pactile/jev/transport.d.ts.map +1 -0
  336. package/dist/pactile/jev/transport.js +87 -0
  337. package/dist/pactile/jev/transport.js.map +1 -0
  338. package/dist/pactile/lifecycle/deferred-live.d.ts +17 -0
  339. package/dist/pactile/lifecycle/deferred-live.d.ts.map +1 -0
  340. package/dist/pactile/lifecycle/deferred-live.js +173 -0
  341. package/dist/pactile/lifecycle/deferred-live.js.map +1 -0
  342. package/dist/pactile/lifecycle/legacy-import.d.ts +1 -1
  343. package/dist/pactile/lifecycle/legacy-import.js +3 -3
  344. package/dist/pactile/lifecycle/legacy-import.js.map +1 -1
  345. package/dist/pactile/lifecycle/project-files.d.ts.map +1 -1
  346. package/dist/pactile/lifecycle/project-files.js +1 -0
  347. package/dist/pactile/lifecycle/project-files.js.map +1 -1
  348. package/dist/pactile/migration/legacy-task-batch-generation.d.ts +23 -0
  349. package/dist/pactile/migration/legacy-task-batch-generation.d.ts.map +1 -0
  350. package/dist/pactile/migration/legacy-task-batch-generation.js +102 -0
  351. package/dist/pactile/migration/legacy-task-batch-generation.js.map +1 -0
  352. package/dist/pactile/migration/legacy-task-batch-io.d.ts +9 -0
  353. package/dist/pactile/migration/legacy-task-batch-io.d.ts.map +1 -0
  354. package/dist/pactile/migration/legacy-task-batch-io.js +208 -0
  355. package/dist/pactile/migration/legacy-task-batch-io.js.map +1 -0
  356. package/dist/pactile/migration/legacy-task-batch-journal.d.ts +6 -0
  357. package/dist/pactile/migration/legacy-task-batch-journal.d.ts.map +1 -0
  358. package/dist/pactile/migration/legacy-task-batch-journal.js +121 -0
  359. package/dist/pactile/migration/legacy-task-batch-journal.js.map +1 -0
  360. package/dist/pactile/migration/legacy-task-batch-orchestrator.d.ts +18 -0
  361. package/dist/pactile/migration/legacy-task-batch-orchestrator.d.ts.map +1 -0
  362. package/dist/pactile/migration/legacy-task-batch-orchestrator.js +634 -0
  363. package/dist/pactile/migration/legacy-task-batch-orchestrator.js.map +1 -0
  364. package/dist/pactile/migration/legacy-task-batch-source.d.ts +8 -0
  365. package/dist/pactile/migration/legacy-task-batch-source.d.ts.map +1 -0
  366. package/dist/pactile/migration/legacy-task-batch-source.js +158 -0
  367. package/dist/pactile/migration/legacy-task-batch-source.js.map +1 -0
  368. package/dist/pactile/migration/legacy-task-batch-types.d.ts +127 -0
  369. package/dist/pactile/migration/legacy-task-batch-types.d.ts.map +1 -0
  370. package/dist/pactile/migration/legacy-task-batch-types.js +127 -0
  371. package/dist/pactile/migration/legacy-task-batch-types.js.map +1 -0
  372. package/dist/pactile/migration/legacy-task-batch.d.ts +3 -0
  373. package/dist/pactile/migration/legacy-task-batch.d.ts.map +1 -0
  374. package/dist/pactile/migration/legacy-task-batch.js +2 -0
  375. package/dist/pactile/migration/legacy-task-batch.js.map +1 -0
  376. package/dist/pactile/migration/legacy-task-held-source-reader.d.ts +27 -0
  377. package/dist/pactile/migration/legacy-task-held-source-reader.d.ts.map +1 -0
  378. package/dist/pactile/migration/legacy-task-held-source-reader.js +261 -0
  379. package/dist/pactile/migration/legacy-task-held-source-reader.js.map +1 -0
  380. package/dist/pactile/migration/legacy-task-reconciliation.d.ts +46 -0
  381. package/dist/pactile/migration/legacy-task-reconciliation.d.ts.map +1 -0
  382. package/dist/pactile/migration/legacy-task-reconciliation.js +589 -0
  383. package/dist/pactile/migration/legacy-task-reconciliation.js.map +1 -0
  384. package/dist/pactile/migration/legacy-task-update.d.ts +19 -0
  385. package/dist/pactile/migration/legacy-task-update.d.ts.map +1 -0
  386. package/dist/pactile/migration/legacy-task-update.js +164 -0
  387. package/dist/pactile/migration/legacy-task-update.js.map +1 -0
  388. package/dist/pactile/parallel/batch.d.ts +21 -2
  389. package/dist/pactile/parallel/batch.d.ts.map +1 -1
  390. package/dist/pactile/parallel/batch.js +271 -50
  391. package/dist/pactile/parallel/batch.js.map +1 -1
  392. package/dist/pactile/parallel/policy.d.ts +1 -1
  393. package/dist/pactile/parallel/policy.d.ts.map +1 -1
  394. package/dist/pactile/parallel/policy.js +130 -102
  395. package/dist/pactile/parallel/policy.js.map +1 -1
  396. package/dist/pactile/pi/bridge.d.ts +139 -2
  397. package/dist/pactile/pi/bridge.d.ts.map +1 -1
  398. package/dist/pactile/pi/bridge.js +1317 -106
  399. package/dist/pactile/pi/bridge.js.map +1 -1
  400. package/dist/pactile/pi/rpc.d.ts +23 -4
  401. package/dist/pactile/pi/rpc.d.ts.map +1 -1
  402. package/dist/pactile/pi/rpc.js +243 -42
  403. package/dist/pactile/pi/rpc.js.map +1 -1
  404. package/dist/pactile/pi/v2-dispatch.d.ts +113 -0
  405. package/dist/pactile/pi/v2-dispatch.d.ts.map +1 -0
  406. package/dist/pactile/pi/v2-dispatch.js +919 -0
  407. package/dist/pactile/pi/v2-dispatch.js.map +1 -0
  408. package/dist/pactile/projection/planner.js +1 -1
  409. package/dist/pactile/projection/planner.js.map +1 -1
  410. package/dist/pactile/registry.d.ts +63 -1
  411. package/dist/pactile/registry.d.ts.map +1 -1
  412. package/dist/pactile/registry.js +633 -4
  413. package/dist/pactile/registry.js.map +1 -1
  414. package/dist/pactile/retrieval/index.d.ts +1 -0
  415. package/dist/pactile/retrieval/index.d.ts.map +1 -1
  416. package/dist/pactile/retrieval/index.js +1 -0
  417. package/dist/pactile/retrieval/index.js.map +1 -1
  418. package/dist/pactile/retrieval/jev-planning.d.ts +28 -0
  419. package/dist/pactile/retrieval/jev-planning.d.ts.map +1 -0
  420. package/dist/pactile/retrieval/jev-planning.js +96 -0
  421. package/dist/pactile/retrieval/jev-planning.js.map +1 -0
  422. package/dist/pactile/review/contract.d.ts +232 -0
  423. package/dist/pactile/review/contract.d.ts.map +1 -0
  424. package/dist/pactile/review/contract.js +695 -0
  425. package/dist/pactile/review/contract.js.map +1 -0
  426. package/dist/pactile/review/escalation-artifacts.d.ts +41 -0
  427. package/dist/pactile/review/escalation-artifacts.d.ts.map +1 -0
  428. package/dist/pactile/review/escalation-artifacts.js +415 -0
  429. package/dist/pactile/review/escalation-artifacts.js.map +1 -0
  430. package/dist/pactile/review/escalation-contract.d.ts +115 -0
  431. package/dist/pactile/review/escalation-contract.d.ts.map +1 -0
  432. package/dist/pactile/review/escalation-contract.js +151 -0
  433. package/dist/pactile/review/escalation-contract.js.map +1 -0
  434. package/dist/pactile/review/escalation-finalize.d.ts +14 -0
  435. package/dist/pactile/review/escalation-finalize.d.ts.map +1 -0
  436. package/dist/pactile/review/escalation-finalize.js +319 -0
  437. package/dist/pactile/review/escalation-finalize.js.map +1 -0
  438. package/dist/pactile/review/escalation-reply.d.ts +10 -0
  439. package/dist/pactile/review/escalation-reply.d.ts.map +1 -0
  440. package/dist/pactile/review/escalation-reply.js +61 -0
  441. package/dist/pactile/review/escalation-reply.js.map +1 -0
  442. package/dist/pactile/review/escalation-transport.d.ts +32 -0
  443. package/dist/pactile/review/escalation-transport.d.ts.map +1 -0
  444. package/dist/pactile/review/escalation-transport.js +216 -0
  445. package/dist/pactile/review/escalation-transport.js.map +1 -0
  446. package/dist/pactile/review/escalation.d.ts +7 -0
  447. package/dist/pactile/review/escalation.d.ts.map +1 -0
  448. package/dist/pactile/review/escalation.js +6 -0
  449. package/dist/pactile/review/escalation.js.map +1 -0
  450. package/dist/pactile/review/evidence.d.ts +25 -0
  451. package/dist/pactile/review/evidence.d.ts.map +1 -0
  452. package/dist/pactile/review/evidence.js +58 -0
  453. package/dist/pactile/review/evidence.js.map +1 -0
  454. package/dist/pactile/review/jev-escalation-advice.d.ts +77 -0
  455. package/dist/pactile/review/jev-escalation-advice.d.ts.map +1 -0
  456. package/dist/pactile/review/jev-escalation-advice.js +358 -0
  457. package/dist/pactile/review/jev-escalation-advice.js.map +1 -0
  458. package/dist/pactile/scheduler/index.d.ts +6 -0
  459. package/dist/pactile/scheduler/index.d.ts.map +1 -0
  460. package/dist/pactile/scheduler/index.js +5 -0
  461. package/dist/pactile/scheduler/index.js.map +1 -0
  462. package/dist/pactile/scheduler/project-lease-store.d.ts +35 -0
  463. package/dist/pactile/scheduler/project-lease-store.d.ts.map +1 -0
  464. package/dist/pactile/scheduler/project-lease-store.js +189 -0
  465. package/dist/pactile/scheduler/project-lease-store.js.map +1 -0
  466. package/dist/pactile/scheduler/scheduler.d.ts +91 -0
  467. package/dist/pactile/scheduler/scheduler.d.ts.map +1 -0
  468. package/dist/pactile/scheduler/scheduler.js +589 -0
  469. package/dist/pactile/scheduler/scheduler.js.map +1 -0
  470. package/dist/pactile/scheduler/task-kernel-admission.d.ts +173 -0
  471. package/dist/pactile/scheduler/task-kernel-admission.d.ts.map +1 -0
  472. package/dist/pactile/scheduler/task-kernel-admission.js +1560 -0
  473. package/dist/pactile/scheduler/task-kernel-admission.js.map +1 -0
  474. package/dist/pactile/scheduler/task-kernel-wave-dispatch.d.ts +184 -0
  475. package/dist/pactile/scheduler/task-kernel-wave-dispatch.d.ts.map +1 -0
  476. package/dist/pactile/scheduler/task-kernel-wave-dispatch.js +952 -0
  477. package/dist/pactile/scheduler/task-kernel-wave-dispatch.js.map +1 -0
  478. package/dist/pactile/scheduler/task-map-scheduler.d.ts +116 -0
  479. package/dist/pactile/scheduler/task-map-scheduler.d.ts.map +1 -0
  480. package/dist/pactile/scheduler/task-map-scheduler.js +1448 -0
  481. package/dist/pactile/scheduler/task-map-scheduler.js.map +1 -0
  482. package/dist/pactile/scheduler/task-run-dispatch-state.d.ts +7 -0
  483. package/dist/pactile/scheduler/task-run-dispatch-state.d.ts.map +1 -0
  484. package/dist/pactile/scheduler/task-run-dispatch-state.js +69 -0
  485. package/dist/pactile/scheduler/task-run-dispatch-state.js.map +1 -0
  486. package/dist/pactile/task/authorization.d.ts +3 -0
  487. package/dist/pactile/task/authorization.d.ts.map +1 -0
  488. package/dist/pactile/task/authorization.js +43 -0
  489. package/dist/pactile/task/authorization.js.map +1 -0
  490. package/dist/pactile/task/creation.d.ts +22 -0
  491. package/dist/pactile/task/creation.d.ts.map +1 -0
  492. package/dist/pactile/task/creation.js +95 -0
  493. package/dist/pactile/task/creation.js.map +1 -0
  494. package/dist/pactile/task/guards.d.ts +1 -4
  495. package/dist/pactile/task/guards.d.ts.map +1 -1
  496. package/dist/pactile/task/guards.js +5 -57
  497. package/dist/pactile/task/guards.js.map +1 -1
  498. package/dist/pactile/task/session-jev-receipt.d.ts +58 -0
  499. package/dist/pactile/task/session-jev-receipt.d.ts.map +1 -0
  500. package/dist/pactile/task/session-jev-receipt.js +375 -0
  501. package/dist/pactile/task/session-jev-receipt.js.map +1 -0
  502. package/dist/pactile/task/session-jev.d.ts +7 -0
  503. package/dist/pactile/task/session-jev.d.ts.map +1 -0
  504. package/dist/pactile/task/session-jev.js +217 -0
  505. package/dist/pactile/task/session-jev.js.map +1 -0
  506. package/dist/pactile/task/session-pack.d.ts.map +1 -1
  507. package/dist/pactile/task/session-pack.js +155 -16
  508. package/dist/pactile/task/session-pack.js.map +1 -1
  509. package/dist/pactile/task/session-retrieval-jev-receipt.d.ts +49 -0
  510. package/dist/pactile/task/session-retrieval-jev-receipt.d.ts.map +1 -0
  511. package/dist/pactile/task/session-retrieval-jev-receipt.js +97 -0
  512. package/dist/pactile/task/session-retrieval-jev-receipt.js.map +1 -0
  513. package/dist/pactile/task/session-retrieval-jev.d.ts +8 -0
  514. package/dist/pactile/task/session-retrieval-jev.d.ts.map +1 -0
  515. package/dist/pactile/task/session-retrieval-jev.js +352 -0
  516. package/dist/pactile/task/session-retrieval-jev.js.map +1 -0
  517. package/dist/pactile/task/strategy.d.ts +1 -23
  518. package/dist/pactile/task/strategy.d.ts.map +1 -1
  519. package/dist/pactile/task/strategy.js +2 -135
  520. package/dist/pactile/task/strategy.js.map +1 -1
  521. package/dist/pactile/tiles/jev-selection.d.ts +44 -0
  522. package/dist/pactile/tiles/jev-selection.d.ts.map +1 -0
  523. package/dist/pactile/tiles/jev-selection.js +210 -0
  524. package/dist/pactile/tiles/jev-selection.js.map +1 -0
  525. package/dist/pactile/tiles/safe-yaml.d.ts +5 -1
  526. package/dist/pactile/tiles/safe-yaml.d.ts.map +1 -1
  527. package/dist/pactile/tiles/safe-yaml.js +8 -8
  528. package/dist/pactile/tiles/safe-yaml.js.map +1 -1
  529. package/dist/pactile/tiles/selection-receipts.d.ts +71 -0
  530. package/dist/pactile/tiles/selection-receipts.d.ts.map +1 -0
  531. package/dist/pactile/tiles/selection-receipts.js +319 -0
  532. package/dist/pactile/tiles/selection-receipts.js.map +1 -0
  533. package/dist/pactile/tiles/selection.d.ts +185 -0
  534. package/dist/pactile/tiles/selection.d.ts.map +1 -0
  535. package/dist/pactile/tiles/selection.js +985 -0
  536. package/dist/pactile/tiles/selection.js.map +1 -0
  537. package/dist/pactile/verification/git-observer.d.ts +3 -0
  538. package/dist/pactile/verification/git-observer.d.ts.map +1 -0
  539. package/dist/pactile/verification/git-observer.js +3 -0
  540. package/dist/pactile/verification/git-observer.js.map +1 -0
  541. package/dist/pactile/verification/index.d.ts +11 -0
  542. package/dist/pactile/verification/index.d.ts.map +1 -0
  543. package/dist/pactile/verification/index.js +6 -0
  544. package/dist/pactile/verification/index.js.map +1 -0
  545. package/dist/pactile/verification/jev-advice.d.ts +78 -0
  546. package/dist/pactile/verification/jev-advice.d.ts.map +1 -0
  547. package/dist/pactile/verification/jev-advice.js +397 -0
  548. package/dist/pactile/verification/jev-advice.js.map +1 -0
  549. package/dist/pactile/verification/planner.d.ts +15 -0
  550. package/dist/pactile/verification/planner.d.ts.map +1 -0
  551. package/dist/pactile/verification/planner.js +412 -0
  552. package/dist/pactile/verification/planner.js.map +1 -0
  553. package/dist/pactile/verification/receipt.d.ts +101 -0
  554. package/dist/pactile/verification/receipt.d.ts.map +1 -0
  555. package/dist/pactile/verification/receipt.js +400 -0
  556. package/dist/pactile/verification/receipt.js.map +1 -0
  557. package/dist/pactile/verification/types.d.ts +72 -0
  558. package/dist/pactile/verification/types.d.ts.map +1 -0
  559. package/dist/pactile/verification/types.js +21 -0
  560. package/dist/pactile/verification/types.js.map +1 -0
  561. package/dist/pactile/worktree/git-probe.d.ts +32 -0
  562. package/dist/pactile/worktree/git-probe.d.ts.map +1 -0
  563. package/dist/pactile/worktree/git-probe.js +336 -0
  564. package/dist/pactile/worktree/git-probe.js.map +1 -0
  565. package/dist/pactile/worktree/git-removal.d.ts +3 -0
  566. package/dist/pactile/worktree/git-removal.d.ts.map +1 -0
  567. package/dist/pactile/worktree/git-removal.js +11 -0
  568. package/dist/pactile/worktree/git-removal.js.map +1 -0
  569. package/dist/pactile/worktree/index.d.ts +2 -0
  570. package/dist/pactile/worktree/index.d.ts.map +1 -0
  571. package/dist/pactile/worktree/index.js +2 -0
  572. package/dist/pactile/worktree/index.js.map +1 -0
  573. package/dist/pactile/worktree/integration-evidence.d.ts +80 -0
  574. package/dist/pactile/worktree/integration-evidence.d.ts.map +1 -0
  575. package/dist/pactile/worktree/integration-evidence.js +166 -0
  576. package/dist/pactile/worktree/integration-evidence.js.map +1 -0
  577. package/dist/pactile/worktree/manager-core.d.ts +50 -0
  578. package/dist/pactile/worktree/manager-core.d.ts.map +1 -0
  579. package/dist/pactile/worktree/manager-core.js +359 -0
  580. package/dist/pactile/worktree/manager-core.js.map +1 -0
  581. package/dist/pactile/worktree/manager-provenance.d.ts +32 -0
  582. package/dist/pactile/worktree/manager-provenance.d.ts.map +1 -0
  583. package/dist/pactile/worktree/manager-provenance.js +409 -0
  584. package/dist/pactile/worktree/manager-provenance.js.map +1 -0
  585. package/dist/pactile/worktree/manager-types.d.ts +84 -0
  586. package/dist/pactile/worktree/manager-types.d.ts.map +1 -0
  587. package/dist/pactile/worktree/manager-types.js +11 -0
  588. package/dist/pactile/worktree/manager-types.js.map +1 -0
  589. package/dist/pactile/worktree/manager.d.ts +10 -0
  590. package/dist/pactile/worktree/manager.d.ts.map +1 -0
  591. package/dist/pactile/worktree/manager.js +6 -0
  592. package/dist/pactile/worktree/manager.js.map +1 -0
  593. package/dist/pactile/worktree/run-workspace-cleanup.d.ts +10 -0
  594. package/dist/pactile/worktree/run-workspace-cleanup.d.ts.map +1 -0
  595. package/dist/pactile/worktree/run-workspace-cleanup.js +695 -0
  596. package/dist/pactile/worktree/run-workspace-cleanup.js.map +1 -0
  597. package/dist/pactile/worktree/run-workspace-lifecycle.d.ts +65 -0
  598. package/dist/pactile/worktree/run-workspace-lifecycle.d.ts.map +1 -0
  599. package/dist/pactile/worktree/run-workspace-lifecycle.js +276 -0
  600. package/dist/pactile/worktree/run-workspace-lifecycle.js.map +1 -0
  601. package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-hooks.md +1 -1
  602. package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/generated-files.md +1 -1
  603. package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/hooks-and-settings.md +1 -1
  604. package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/overview.md +1 -1
  605. package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/platform-map.md +1 -1
  606. package/dist/templates/common/bundled-skills/smart-search-cli/SKILL.md +2 -0
  607. package/dist/templates/common/skills/brainstorm.md +19 -13
  608. package/dist/templates/markdown/agents.md +2 -2
  609. package/dist/templates/markdown/framework/execution-strategy.md.txt +1 -1
  610. package/dist/templates/markdown/framework/index.md.txt +1 -1
  611. package/dist/templates/markdown/framework/parallel-first-execution.md.txt +17 -105
  612. package/dist/templates/markdown/framework/prd-grill-frontier.md.txt +3 -3
  613. package/dist/templates/markdown/framework/release-boundary.md.txt +9 -10
  614. package/dist/templates/markdown/framework/retrieval-daily-guide.md.txt +1 -1
  615. package/dist/templates/pactile/CONTEXT.md +48 -36
  616. package/dist/templates/pactile/modules/approval-personal/contract.md +12 -24
  617. package/dist/templates/pactile/modules/close-basic/contract.md +15 -18
  618. package/dist/templates/pactile/modules/debug-recovery/contract.md +4 -4
  619. package/dist/templates/pactile/modules/define-basic/contract.md +15 -19
  620. package/dist/templates/pactile/modules/define-extended/contract.md +3 -3
  621. package/dist/templates/pactile/modules/execute-agent/contract.md +11 -19
  622. package/dist/templates/pactile/modules/intake-basic/contract.md +16 -13
  623. package/dist/templates/pactile/modules/verify-basic/contract.md +11 -20
  624. package/dist/templates/pactile/tasks/templates/release-execution/design.md +5 -5
  625. package/dist/templates/pactile/tasks/templates/release-readiness/design.md +6 -6
  626. package/dist/templates/pactile/tasks/templates/release-readiness/handoff-template.md +8 -2
  627. package/dist/templates/pactile/workflow.md +37 -41
  628. package/dist/templates/template-utils.d.ts +1 -2
  629. package/dist/templates/template-utils.d.ts.map +1 -1
  630. package/dist/templates/template-utils.js +2 -13
  631. package/dist/templates/template-utils.js.map +1 -1
  632. package/dist/types/ai-tools.d.ts +1 -1
  633. package/dist/types/ai-tools.js +1 -1
  634. package/dist/utils/manifest-prune.js +1 -1
  635. package/dist/utils/manifest-prune.js.map +1 -1
  636. package/dist/utils/p36-upgrade.d.ts +2 -2
  637. package/dist/utils/p36-upgrade.d.ts.map +1 -1
  638. package/dist/utils/p36-upgrade.js +2 -10
  639. package/dist/utils/p36-upgrade.js.map +1 -1
  640. package/dist/utils/post-update-smoke.js +1 -1
  641. package/dist/utils/post-update-smoke.js.map +1 -1
  642. package/dist/utils/readiness.d.ts +2 -2
  643. package/dist/utils/readiness.js +2 -2
  644. package/dist/utils/uninstall-scrubbers.js +1 -1
  645. package/dist/utils/workflow-dir.d.ts +1 -1
  646. package/dist/utils/workflow-dir.d.ts.map +1 -1
  647. package/dist/utils/workflow-dir.js +1 -1
  648. package/dist/utils/workflow-dir.js.map +1 -1
  649. package/package.json +42 -37
  650. package/CHANGELOG.md +0 -651
  651. package/bin/compat-warning.js +0 -11
  652. package/bin/pactile.js +0 -3
  653. package/bin/smart-search.js +0 -38
  654. package/dist/migrations/manifests/0.1.0.json +0 -9
  655. package/dist/migrations/manifests/0.1.1.json +0 -9
  656. package/dist/migrations/manifests/0.1.2.json +0 -9
  657. package/dist/migrations/manifests/0.1.3.json +0 -9
  658. package/dist/migrations/manifests/0.1.4.json +0 -9
  659. package/dist/migrations/manifests/0.2.1.json +0 -9
  660. package/dist/migrations/manifests/0.2.10.json +0 -374
  661. package/dist/migrations/manifests/0.2.2.json +0 -9
  662. package/dist/migrations/manifests/0.2.3.json +0 -9
  663. package/dist/migrations/manifests/0.2.4.json +0 -9
  664. package/dist/migrations/manifests/0.2.5.json +0 -9
  665. package/dist/migrations/manifests/0.2.6.json +0 -9
  666. package/dist/migrations/manifests/0.2.7.json +0 -9
  667. package/dist/migrations/manifests/0.2.8.json +0 -9
  668. package/dist/migrations/manifests/0.2.9.json +0 -9
  669. package/dist/migrations/manifests/0.3.0.json +0 -89
  670. package/dist/migrations/manifests/0.3.1.json +0 -32
  671. package/dist/migrations/manifests/0.3.2.json +0 -16
  672. package/dist/migrations/manifests/0.3.3.json +0 -9
  673. package/dist/migrations/manifests/0.3.4.json +0 -9
  674. package/dist/migrations/manifests/0.3.5.json +0 -9
  675. package/dist/migrations/manifests/0.3.6.json +0 -9
  676. package/dist/migrations/manifests/0.4.0.json +0 -9
  677. package/dist/migrations/manifests/0.4.1.json +0 -9
  678. package/dist/migrations/manifests/0.4.2.json +0 -9
  679. package/dist/migrations/manifests/0.4.3.json +0 -9
  680. package/dist/migrations/manifests/0.5.0-beta.0.json +0 -9
  681. package/dist/migrations/manifests/0.5.0-beta.1.json +0 -9
  682. package/dist/migrations/manifests/0.5.0-beta.2.json +0 -9
  683. package/dist/migrations/manifests/0.5.0-beta.3.json +0 -9
  684. package/dist/migrations/manifests/0.5.0-beta.4.json +0 -9
  685. package/dist/migrations/manifests/0.5.0-beta.5.json +0 -9
  686. package/dist/migrations/manifests/0.5.0.json +0 -9
  687. package/dist/pactile/compat/retired-alternate-client.d.ts +0 -42
  688. package/dist/pactile/compat/retired-alternate-client.d.ts.map +0 -1
  689. package/dist/pactile/compat/retired-alternate-client.js +0 -153
  690. package/dist/pactile/compat/retired-alternate-client.js.map +0 -1
  691. package/dist/pactile/compat/update-residue.d.ts +0 -4
  692. package/dist/pactile/compat/update-residue.d.ts.map +0 -1
  693. package/dist/pactile/compat/update-residue.js +0 -55
  694. package/dist/pactile/compat/update-residue.js.map +0 -1
  695. package/dist/utils/cursor-retrieval-env.d.ts +0 -17
  696. package/dist/utils/cursor-retrieval-env.d.ts.map +0 -1
  697. package/dist/utils/cursor-retrieval-env.js +0 -19
  698. package/dist/utils/cursor-retrieval-env.js.map +0 -1
  699. package/dist/utils/proxy.d.ts +0 -25
  700. package/dist/utils/proxy.d.ts.map +0 -1
  701. package/dist/utils/proxy.js +0 -60
  702. package/dist/utils/proxy.js.map +0 -1
  703. package/scripts/postinstall.js +0 -6
@@ -0,0 +1,91 @@
1
+ export type SchedulerTaskStateV1 = "waiting" | "running" | "completed" | "failed" | "blocked";
2
+ export interface SchedulerCostVectorV1 {
3
+ latencyMs: number;
4
+ waitingMs: number;
5
+ executionMs: number;
6
+ integrationMs: number;
7
+ reworkMs: number;
8
+ reviewMs: number;
9
+ }
10
+ export interface SchedulerTaskV1 {
11
+ taskId: string;
12
+ dependsOn: readonly string[];
13
+ state: SchedulerTaskStateV1;
14
+ /** null means the task's write scope is unknown and conflicts with every writer. */
15
+ writeSet: readonly string[] | null;
16
+ estimatedCosts: SchedulerCostVectorV1;
17
+ observedCosts?: Partial<SchedulerCostVectorV1>;
18
+ }
19
+ export interface ConflictParallelAuthorizationV1 {
20
+ taskIds: readonly [string, string];
21
+ approvedBy: string;
22
+ authorizationRef: string;
23
+ /** Person or role accountable for integrating explicitly parallelized writers. */
24
+ integrationOwner: string;
25
+ integrationPlan: string;
26
+ }
27
+ export interface JevSchedulerAdviceV1 {
28
+ /** Earlier entries are preferred only when critical-path costs tie. */
29
+ taskOrder: readonly string[];
30
+ evidenceRef: string;
31
+ }
32
+ export interface TaskScheduleRequestV1 {
33
+ schemaVersion: 1;
34
+ tasks: readonly SchedulerTaskV1[];
35
+ conflictParallelizations?: readonly ConflictParallelAuthorizationV1[];
36
+ jevAdvice?: JevSchedulerAdviceV1;
37
+ }
38
+ export type SchedulerErrorCodeV1 = "invalid-request" | "duplicate-task" | "missing-dependency" | "dependency-cycle" | "invalid-cost" | "invalid-write-set" | "invalid-conflict-authorization";
39
+ export declare class TaskScheduleError extends Error {
40
+ readonly code: SchedulerErrorCodeV1;
41
+ constructor(code: SchedulerErrorCodeV1, message: string);
42
+ }
43
+ export type SchedulerTaskActionV1 = "scheduled" | "completed" | "in-flight" | "failed" | "blocked" | "deferred";
44
+ export interface SchedulerTaskDecisionV1 {
45
+ taskId: string;
46
+ action: SchedulerTaskActionV1;
47
+ reasonCodes: string[];
48
+ criticalPathMs: number;
49
+ estimatedCostMs: number;
50
+ estimatedCosts: SchedulerCostVectorV1;
51
+ /** All fields are returned so a receipt can be stored without losing absent measurements. */
52
+ observedCosts: Record<keyof SchedulerCostVectorV1, number | null>;
53
+ jevHintRank: number | null;
54
+ jevHintApplied: boolean;
55
+ wave: number | null;
56
+ }
57
+ export interface TaskScheduleWaveV1 {
58
+ sequence: number;
59
+ taskIds: string[];
60
+ candidateTaskIds: string[];
61
+ startedAfterMs: number;
62
+ estimatedDurationMs: number;
63
+ estimatedCompletionMs: number;
64
+ serialEquivalentMs: number;
65
+ estimatedSavingsMs: number;
66
+ candidateSerialEquivalentMs: number;
67
+ candidateParallelDurationMs: number;
68
+ candidateEstimatedSavingsMs: number;
69
+ decision: "single-ready-task" | "parallel-time-saved" | "parallelism-rejected-no-time-saved";
70
+ conflictAuthorizations: ConflictParallelAuthorizationV1[];
71
+ }
72
+ export interface TaskScheduleReceiptV1 {
73
+ schemaVersion: 1;
74
+ decisions: SchedulerTaskDecisionV1[];
75
+ waves: TaskScheduleWaveV1[];
76
+ serialEstimatedCompletionMs: number;
77
+ plannedEstimatedCompletionMs: number;
78
+ estimatedCompletionSavingsMs: number;
79
+ jevAdvice: null | {
80
+ evidenceRef: string;
81
+ hintedTaskIds: string[];
82
+ tieBreakAppliedTaskIds: string[];
83
+ ignoredTaskIds: string[];
84
+ };
85
+ }
86
+ /**
87
+ * Produces a deterministic schedule receipt from a Task DAG snapshot. It never
88
+ * starts, approves, integrates, or reviews a Run; callers own those side effects.
89
+ */
90
+ export declare function planTaskScheduleV1(input: TaskScheduleRequestV1): TaskScheduleReceiptV1;
91
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/pactile/scheduler/scheduler.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,cAAc,EAAE,qBAAqB,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,CAAC,CAAC;IACjB,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAClC,wBAAwB,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACtE,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED,MAAM,MAAM,oBAAoB,GAC5B,iBAAiB,GACjB,gBAAgB,GAChB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,mBAAmB,GACnB,gCAAgC,CAAC;AAErC,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAExB,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM;CAKxD;AAED,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,WAAW,GACX,WAAW,GACX,QAAQ,GACR,SAAS,GACT,UAAU,CAAC;AAEf,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,qBAAqB,CAAC;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,qBAAqB,CAAC;IACtC,6FAA6F;IAC7F,aAAa,EAAE,MAAM,CAAC,MAAM,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAClE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2BAA2B,EAAE,MAAM,CAAC;IACpC,2BAA2B,EAAE,MAAM,CAAC;IACpC,2BAA2B,EAAE,MAAM,CAAC;IACpC,QAAQ,EACJ,mBAAmB,GACnB,qBAAqB,GACrB,oCAAoC,CAAC;IACzC,sBAAsB,EAAE,+BAA+B,EAAE,CAAC;CAC3D;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,uBAAuB,EAAE,CAAC;IACrC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,2BAA2B,EAAE,MAAM,CAAC;IACpC,4BAA4B,EAAE,MAAM,CAAC;IACrC,4BAA4B,EAAE,MAAM,CAAC;IACrC,SAAS,EAAE,IAAI,GAAG;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,sBAAsB,EAAE,MAAM,EAAE,CAAC;QACjC,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;CACH;AA2jBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,qBAAqB,GAC3B,qBAAqB,CA2QvB"}
@@ -0,0 +1,589 @@
1
+ export class TaskScheduleError extends Error {
2
+ code;
3
+ constructor(code, message) {
4
+ super(message);
5
+ this.name = "TaskScheduleError";
6
+ this.code = code;
7
+ }
8
+ }
9
+ const COST_FIELDS = [
10
+ "latencyMs",
11
+ "waitingMs",
12
+ "executionMs",
13
+ "integrationMs",
14
+ "reworkMs",
15
+ "reviewMs",
16
+ ];
17
+ const TASK_STATES = new Set([
18
+ "waiting",
19
+ "running",
20
+ "completed",
21
+ "failed",
22
+ "blocked",
23
+ ]);
24
+ function fail(code, message) {
25
+ throw new TaskScheduleError(code, message);
26
+ }
27
+ function isRecord(value) {
28
+ return !!value && typeof value === "object" && !Array.isArray(value);
29
+ }
30
+ function nonEmptyText(value, field, code) {
31
+ if (typeof value !== "string" || !value.trim() || value !== value.trim()) {
32
+ fail(code, `${field} must be a non-empty trimmed string`);
33
+ }
34
+ return value;
35
+ }
36
+ function compareText(left, right) {
37
+ return left < right ? -1 : left > right ? 1 : 0;
38
+ }
39
+ function safeAdd(left, right, label) {
40
+ const sum = left + right;
41
+ if (!Number.isFinite(sum))
42
+ fail("invalid-cost", `${label} exceeds the finite millisecond range`);
43
+ return sum;
44
+ }
45
+ function parseCosts(value, field, partial) {
46
+ if (!isRecord(value))
47
+ fail("invalid-cost", `${field} must be an object`);
48
+ const allowed = new Set(COST_FIELDS);
49
+ for (const key of Object.keys(value)) {
50
+ if (!allowed.has(key))
51
+ fail("invalid-cost", `${field} contains unknown cost field: ${key}`);
52
+ }
53
+ const result = {};
54
+ let total = 0;
55
+ for (const key of COST_FIELDS) {
56
+ const raw = value[key];
57
+ if (raw === undefined && partial) {
58
+ result[key] = null;
59
+ continue;
60
+ }
61
+ if (typeof raw !== "number" || !Number.isFinite(raw) || raw < 0) {
62
+ fail("invalid-cost", `${field}.${key} must be a finite non-negative number`);
63
+ }
64
+ result[key] = raw;
65
+ total = safeAdd(total, raw, field);
66
+ }
67
+ if (!partial) {
68
+ for (const key of COST_FIELDS) {
69
+ if (result[key] === null)
70
+ fail("invalid-cost", `${field}.${key} is required`);
71
+ }
72
+ }
73
+ return result;
74
+ }
75
+ function normalizeWritePath(value, taskId) {
76
+ if (typeof value !== "string" || !value.trim()) {
77
+ fail("invalid-write-set", `writeSet for ${taskId} must contain non-empty paths`);
78
+ }
79
+ const original = value.trim();
80
+ const slashed = original
81
+ .replaceAll("\\", "/")
82
+ .replace(/^\.\//, "")
83
+ .replace(/\/$/, "");
84
+ const segments = slashed.split("/");
85
+ const hasWindowsAlternateDataStream = process.platform === "win32" &&
86
+ segments.some((segment) => segment.includes(":"));
87
+ if (!slashed ||
88
+ slashed === "." ||
89
+ slashed.startsWith("/") ||
90
+ /^[A-Za-z]:/.test(slashed) ||
91
+ hasWindowsAlternateDataStream ||
92
+ slashed.includes("*") ||
93
+ slashed.includes("?") ||
94
+ slashed.includes("[") ||
95
+ slashed.includes("]") ||
96
+ segments.some((segment) => !segment || segment === "." || segment === "..")) {
97
+ fail("invalid-write-set", `writeSet must use concrete project-relative paths: ${value}`);
98
+ }
99
+ return slashed.normalize("NFC").toLowerCase();
100
+ }
101
+ function pathSetsConflict(left, right) {
102
+ if (!left.length || !right.length)
103
+ return false;
104
+ if (left.includes("*") || right.includes("*"))
105
+ return true;
106
+ return left.some((a) => right.some((b) => a === b || a.startsWith(`${b}/`) || b.startsWith(`${a}/`)));
107
+ }
108
+ function pairKey(left, right) {
109
+ const [first, second] = compareText(left, right) <= 0 ? [left, right] : [right, left];
110
+ return JSON.stringify([first, second]);
111
+ }
112
+ function validateRequest(input) {
113
+ if (!isRecord(input) ||
114
+ input.schemaVersion !== 1 ||
115
+ !Array.isArray(input.tasks)) {
116
+ fail("invalid-request", "scheduler request requires schemaVersion 1 and a tasks array");
117
+ }
118
+ const tasks = new Map();
119
+ for (const candidate of input.tasks) {
120
+ if (!isRecord(candidate))
121
+ fail("invalid-request", "each scheduler task must be an object");
122
+ const taskId = nonEmptyText(candidate.taskId, "taskId", "invalid-request");
123
+ if (taskId.includes("\0"))
124
+ fail("invalid-request", `taskId contains a null byte: ${taskId}`);
125
+ if (tasks.has(taskId))
126
+ fail("duplicate-task", `duplicate taskId: ${taskId}`);
127
+ if (!TASK_STATES.has(candidate.state)) {
128
+ fail("invalid-request", `invalid state for ${taskId}`);
129
+ }
130
+ if (!Array.isArray(candidate.dependsOn)) {
131
+ fail("invalid-request", `dependsOn for ${taskId} must be an array`);
132
+ }
133
+ const dependsOn = candidate.dependsOn.map((dependency) => nonEmptyText(dependency, `dependsOn entry for ${taskId}`, "invalid-request"));
134
+ if (new Set(dependsOn).size !== dependsOn.length) {
135
+ fail("invalid-request", `dependsOn for ${taskId} contains duplicates`);
136
+ }
137
+ if (dependsOn.includes(taskId))
138
+ fail("dependency-cycle", `task depends on itself: ${taskId}`);
139
+ if (candidate.writeSet !== null && !Array.isArray(candidate.writeSet)) {
140
+ fail("invalid-write-set", `writeSet for ${taskId} must be an array or null`);
141
+ }
142
+ const writeSet = candidate.writeSet === null
143
+ ? ["*"]
144
+ : candidate.writeSet.length
145
+ ? [
146
+ ...new Set(candidate.writeSet.map((entry) => normalizeWritePath(entry, taskId))),
147
+ ].sort(compareText)
148
+ : [];
149
+ const estimatedCosts = parseCosts(candidate.estimatedCosts, `estimatedCosts for ${taskId}`, false);
150
+ const observedCosts = parseCosts(candidate.observedCosts === undefined ? {} : candidate.observedCosts, `observedCosts for ${taskId}`, true);
151
+ const estimatedCostMs = COST_FIELDS.reduce((sum, key) => safeAdd(sum, estimatedCosts[key], `estimatedCosts for ${taskId}`), 0);
152
+ const parallelPhaseMs = [
153
+ estimatedCosts.latencyMs,
154
+ estimatedCosts.waitingMs,
155
+ estimatedCosts.executionMs,
156
+ estimatedCosts.reworkMs,
157
+ ].reduce((sum, value) => safeAdd(sum, value, `parallel phase for ${taskId}`), 0);
158
+ const integrationReviewMs = safeAdd(estimatedCosts.integrationMs, estimatedCosts.reviewMs, `integration and review costs for ${taskId}`);
159
+ tasks.set(taskId, {
160
+ taskId,
161
+ dependsOn,
162
+ state: candidate.state,
163
+ writeSet,
164
+ estimatedCosts,
165
+ observedCosts,
166
+ estimatedCostMs,
167
+ parallelPhaseMs,
168
+ integrationReviewMs,
169
+ });
170
+ }
171
+ const taskIds = [...tasks.keys()].sort(compareText);
172
+ for (const task of tasks.values()) {
173
+ for (const dependency of task.dependsOn) {
174
+ if (!tasks.has(dependency)) {
175
+ fail("missing-dependency", `task ${task.taskId} references missing dependency ${dependency}`);
176
+ }
177
+ }
178
+ }
179
+ const dependents = new Map(taskIds.map((taskId) => [taskId, []]));
180
+ const remainingDependencies = new Map();
181
+ for (const task of tasks.values()) {
182
+ remainingDependencies.set(task.taskId, task.dependsOn.length);
183
+ for (const dependency of task.dependsOn)
184
+ dependents.get(dependency)?.push(task.taskId);
185
+ }
186
+ for (const children of dependents.values())
187
+ children.sort(compareText);
188
+ const ready = taskIds.filter((taskId) => remainingDependencies.get(taskId) === 0);
189
+ const topologicalOrder = [];
190
+ while (ready.length) {
191
+ ready.sort(compareText);
192
+ const taskId = ready.shift();
193
+ if (!taskId)
194
+ break;
195
+ topologicalOrder.push(taskId);
196
+ for (const dependent of dependents.get(taskId) ?? []) {
197
+ const left = (remainingDependencies.get(dependent) ?? 0) - 1;
198
+ remainingDependencies.set(dependent, left);
199
+ if (left === 0)
200
+ ready.push(dependent);
201
+ }
202
+ }
203
+ if (topologicalOrder.length !== tasks.size) {
204
+ const cycleMembers = taskIds.filter((taskId) => (remainingDependencies.get(taskId) ?? 0) > 0);
205
+ fail("dependency-cycle", `dependency cycle detected among: ${cycleMembers.join(", ")}`);
206
+ }
207
+ const authorizations = new Map();
208
+ if (input.conflictParallelizations === null) {
209
+ fail("invalid-conflict-authorization", "conflictParallelizations must be an array");
210
+ }
211
+ const rawAuthorizations = input.conflictParallelizations ?? [];
212
+ if (!Array.isArray(rawAuthorizations)) {
213
+ fail("invalid-conflict-authorization", "conflictParallelizations must be an array");
214
+ }
215
+ for (const candidate of rawAuthorizations) {
216
+ if (!isRecord(candidate) ||
217
+ !Array.isArray(candidate.taskIds) ||
218
+ candidate.taskIds.length !== 2) {
219
+ fail("invalid-conflict-authorization", "each conflict authorization requires exactly two task IDs");
220
+ }
221
+ const left = nonEmptyText(candidate.taskIds[0], "authorized task ID", "invalid-conflict-authorization");
222
+ const right = nonEmptyText(candidate.taskIds[1], "authorized task ID", "invalid-conflict-authorization");
223
+ if (left === right || !tasks.has(left) || !tasks.has(right)) {
224
+ fail("invalid-conflict-authorization", `conflict authorization must reference two distinct known tasks: ${left}, ${right}`);
225
+ }
226
+ const approvedBy = nonEmptyText(candidate.approvedBy, "approvedBy", "invalid-conflict-authorization");
227
+ const authorizationRef = nonEmptyText(candidate.authorizationRef, "authorizationRef", "invalid-conflict-authorization");
228
+ const integrationOwner = nonEmptyText(candidate.integrationOwner, "integrationOwner", "invalid-conflict-authorization");
229
+ const integrationPlan = nonEmptyText(candidate.integrationPlan, "integrationPlan", "invalid-conflict-authorization");
230
+ const key = pairKey(left, right);
231
+ if (authorizations.has(key)) {
232
+ fail("invalid-conflict-authorization", `duplicate conflict authorization for ${left} and ${right}`);
233
+ }
234
+ if (!pathSetsConflict(tasks.get(left)?.writeSet ?? [], tasks.get(right)?.writeSet ?? [])) {
235
+ fail("invalid-conflict-authorization", `authorization does not match an overlapping write set: ${left}, ${right}`);
236
+ }
237
+ const [first, second] = compareText(left, right) <= 0 ? [left, right] : [right, left];
238
+ authorizations.set(key, {
239
+ taskIds: [first, second],
240
+ approvedBy,
241
+ authorizationRef,
242
+ integrationOwner,
243
+ integrationPlan,
244
+ });
245
+ }
246
+ const hints = new Map();
247
+ let advice;
248
+ if (input.jevAdvice !== undefined) {
249
+ if (!isRecord(input.jevAdvice) ||
250
+ !Array.isArray(input.jevAdvice.taskOrder)) {
251
+ fail("invalid-request", "jevAdvice requires taskOrder and evidenceRef");
252
+ }
253
+ const evidenceRef = nonEmptyText(input.jevAdvice.evidenceRef, "jevAdvice.evidenceRef", "invalid-request");
254
+ const advisedIds = input.jevAdvice.taskOrder.map((taskId) => nonEmptyText(taskId, "Jev advised task ID", "invalid-request"));
255
+ if (new Set(advisedIds).size !== advisedIds.length) {
256
+ fail("invalid-request", "jevAdvice.taskOrder contains duplicates");
257
+ }
258
+ for (const taskId of advisedIds) {
259
+ if (!tasks.has(taskId))
260
+ fail("invalid-request", `jevAdvice references unknown task: ${taskId}`);
261
+ }
262
+ advisedIds.forEach((taskId, rank) => hints.set(taskId, rank));
263
+ advice = { taskOrder: advisedIds, evidenceRef };
264
+ }
265
+ return { tasks, taskIds, topologicalOrder, authorizations, hints, advice };
266
+ }
267
+ function hasWriteConflict(left, right) {
268
+ return pathSetsConflict(left.writeSet, right.writeSet);
269
+ }
270
+ function approvedConflict(left, right, authorizations) {
271
+ return authorizations.get(pairKey(left, right));
272
+ }
273
+ function computeBlockedBy(tasks, topologicalOrder) {
274
+ const blockedBy = new Map();
275
+ for (const taskId of topologicalOrder) {
276
+ const task = tasks.get(taskId);
277
+ if (!task)
278
+ continue;
279
+ if (task.state === "blocked" || task.state === "failed") {
280
+ blockedBy.set(taskId, [taskId]);
281
+ continue;
282
+ }
283
+ const blockers = new Set();
284
+ for (const dependency of task.dependsOn) {
285
+ for (const blocker of blockedBy.get(dependency) ?? [])
286
+ blockers.add(blocker);
287
+ }
288
+ if (blockers.size)
289
+ blockedBy.set(taskId, [...blockers].sort(compareText));
290
+ }
291
+ return blockedBy;
292
+ }
293
+ function computeCriticalPaths(tasks, taskIds, topologicalOrder, blockedBy) {
294
+ const dependents = new Map(taskIds.map((taskId) => [taskId, []]));
295
+ for (const task of tasks.values()) {
296
+ for (const dependency of task.dependsOn)
297
+ dependents.get(dependency)?.push(task.taskId);
298
+ }
299
+ const criticalPath = new Map();
300
+ for (const taskId of [...topologicalOrder].reverse()) {
301
+ const task = tasks.get(taskId);
302
+ if (!task)
303
+ continue;
304
+ const downstream = (dependents.get(taskId) ?? []).reduce((maximum, dependent) => Math.max(maximum, criticalPath.get(dependent) ?? 0), 0);
305
+ const activeCost = blockedBy.has(taskId) || task.state === "completed"
306
+ ? 0
307
+ : task.estimatedCostMs;
308
+ criticalPath.set(taskId, safeAdd(activeCost, downstream, `critical path for ${taskId}`));
309
+ }
310
+ return criticalPath;
311
+ }
312
+ function priorityOrder(taskIds, criticalPath, hints, tieBreakApplied) {
313
+ const groups = new Map();
314
+ for (const taskId of taskIds) {
315
+ const pathCost = criticalPath.get(taskId) ?? 0;
316
+ const group = groups.get(pathCost) ?? [];
317
+ group.push(taskId);
318
+ groups.set(pathCost, group);
319
+ }
320
+ const result = [];
321
+ const costs = [...groups.keys()].sort((left, right) => right - left);
322
+ for (const cost of costs) {
323
+ const group = groups.get(cost) ?? [];
324
+ const lexical = [...group].sort(compareText);
325
+ const advised = [...group].sort((left, right) => {
326
+ const leftRank = hints.get(left) ?? Number.POSITIVE_INFINITY;
327
+ const rightRank = hints.get(right) ?? Number.POSITIVE_INFINITY;
328
+ return leftRank - rightRank || compareText(left, right);
329
+ });
330
+ if (advised.some((taskId, index) => taskId !== lexical[index] && hints.has(taskId))) {
331
+ for (const taskId of advised) {
332
+ if (hints.has(taskId))
333
+ tieBreakApplied.add(taskId);
334
+ }
335
+ }
336
+ result.push(...advised);
337
+ }
338
+ return result;
339
+ }
340
+ function taskTotal(task) {
341
+ return task.estimatedCostMs;
342
+ }
343
+ function groupSerialCost(group) {
344
+ return group.reduce((sum, task) => safeAdd(sum, taskTotal(task), "serial wave cost"), 0);
345
+ }
346
+ function groupParallelCost(group) {
347
+ const parallelWork = group.reduce((maximum, task) => Math.max(maximum, task.parallelPhaseMs), 0);
348
+ const serialIntegrationAndReview = group.reduce((sum, task) => safeAdd(sum, task.integrationReviewMs, "integration and review wave cost"), 0);
349
+ return safeAdd(parallelWork, serialIntegrationAndReview, "parallel wave cost");
350
+ }
351
+ function normalizeObservedCosts(costs) {
352
+ return Object.fromEntries(COST_FIELDS.map((key) => [key, costs[key]]));
353
+ }
354
+ /**
355
+ * Produces a deterministic schedule receipt from a Task DAG snapshot. It never
356
+ * starts, approves, integrates, or reviews a Run; callers own those side effects.
357
+ */
358
+ export function planTaskScheduleV1(input) {
359
+ const { tasks, taskIds, topologicalOrder, authorizations, hints, advice } = validateRequest(input);
360
+ const blockedBy = computeBlockedBy(tasks, topologicalOrder);
361
+ const criticalPath = computeCriticalPaths(tasks, taskIds, topologicalOrder, blockedBy);
362
+ const pending = new Set(taskIds.filter((taskId) => tasks.get(taskId)?.state === "waiting" && !blockedBy.has(taskId)));
363
+ const running = taskIds
364
+ .map((taskId) => tasks.get(taskId))
365
+ .filter((task) => task?.state === "running");
366
+ const simulatedCompleted = new Set(taskIds.filter((taskId) => tasks.get(taskId)?.state === "completed"));
367
+ const tieBreakApplied = new Set();
368
+ const waveByTask = new Map();
369
+ const schedulingReasons = new Map();
370
+ const addSchedulingReason = (taskId, reason) => {
371
+ const reasons = schedulingReasons.get(taskId) ?? new Set();
372
+ reasons.add(reason);
373
+ schedulingReasons.set(taskId, reasons);
374
+ };
375
+ const waves = [];
376
+ let elapsedMs = 0;
377
+ while (pending.size) {
378
+ const dependencyReady = [...pending].filter((taskId) => tasks
379
+ .get(taskId)
380
+ ?.dependsOn.every((dependency) => simulatedCompleted.has(dependency)));
381
+ if (!dependencyReady.length)
382
+ break;
383
+ const executable = [];
384
+ for (const taskId of dependencyReady) {
385
+ const task = tasks.get(taskId);
386
+ if (!task)
387
+ continue;
388
+ const blockedByRunning = running.some((active) => {
389
+ if (!hasWriteConflict(task, active))
390
+ return false;
391
+ return !approvedConflict(taskId, active.taskId, authorizations);
392
+ });
393
+ if (!blockedByRunning)
394
+ executable.push(taskId);
395
+ else
396
+ addSchedulingReason(taskId, "active-write-set-conflict");
397
+ }
398
+ if (!executable.length)
399
+ break;
400
+ const ordered = priorityOrder(executable, criticalPath, hints, tieBreakApplied);
401
+ const groups = [];
402
+ for (const taskId of ordered) {
403
+ const compatibleGroup = groups.find((group) => group.every((memberId) => {
404
+ const left = tasks.get(taskId);
405
+ const right = tasks.get(memberId);
406
+ if (!left || !right || !hasWriteConflict(left, right))
407
+ return true;
408
+ return !!approvedConflict(taskId, memberId, authorizations);
409
+ }));
410
+ if (compatibleGroup)
411
+ compatibleGroup.push(taskId);
412
+ else
413
+ groups.push([taskId]);
414
+ }
415
+ const group = groups[0] ?? [];
416
+ const priorityGroup = group
417
+ .map((taskId) => tasks.get(taskId))
418
+ .filter((task) => !!task);
419
+ if (!priorityGroup.length)
420
+ break;
421
+ const serialEquivalentMs = groupSerialCost(priorityGroup);
422
+ const candidateParallelMs = group.length > 1 ? groupParallelCost(priorityGroup) : serialEquivalentMs;
423
+ const candidateSavingsMs = serialEquivalentMs - candidateParallelMs;
424
+ const parallelize = group.length > 1 && candidateSavingsMs > 0;
425
+ const selectedIds = parallelize ? group : [ordered[0]];
426
+ const selectedTasks = selectedIds
427
+ .map((taskId) => tasks.get(taskId))
428
+ .filter((task) => !!task);
429
+ const selectedSerialMs = groupSerialCost(selectedTasks);
430
+ const estimatedDurationMs = parallelize
431
+ ? candidateParallelMs
432
+ : (selectedTasks[0]?.estimatedCostMs ?? 0);
433
+ const selectedSavingsMs = Math.max(0, selectedSerialMs - estimatedDurationMs);
434
+ const selectedSet = new Set(selectedIds);
435
+ for (const taskId of executable) {
436
+ if (selectedSet.has(taskId))
437
+ continue;
438
+ const conflictsWithSelected = selectedIds.some((selectedId) => {
439
+ const candidate = tasks.get(taskId);
440
+ const selected = tasks.get(selectedId);
441
+ return (!!candidate &&
442
+ !!selected &&
443
+ hasWriteConflict(candidate, selected) &&
444
+ !approvedConflict(taskId, selectedId, authorizations));
445
+ });
446
+ if (conflictsWithSelected)
447
+ addSchedulingReason(taskId, "write-set-conflict-serialized");
448
+ else if (group.includes(taskId) && group.length > 1 && !parallelize) {
449
+ addSchedulingReason(taskId, "parallelism-rejected-no-time-savings");
450
+ }
451
+ else
452
+ addSchedulingReason(taskId, "later-ready-wave");
453
+ }
454
+ const selectedAuthorizations = [...authorizations.values()]
455
+ .filter((authorization) => {
456
+ const [left, right] = authorization.taskIds;
457
+ return ((selectedSet.has(left) && selectedSet.has(right)) ||
458
+ (selectedSet.has(left) &&
459
+ running.some((active) => active.taskId === right)) ||
460
+ (selectedSet.has(right) &&
461
+ running.some((active) => active.taskId === left)));
462
+ })
463
+ .sort((left, right) => compareText(pairKey(...left.taskIds), pairKey(...right.taskIds)));
464
+ const sequence = waves.length + 1;
465
+ const startedAfterMs = elapsedMs;
466
+ elapsedMs = safeAdd(elapsedMs, estimatedDurationMs, "planned completion time");
467
+ waves.push({
468
+ sequence,
469
+ taskIds: [...selectedIds],
470
+ candidateTaskIds: [...group],
471
+ startedAfterMs,
472
+ estimatedDurationMs,
473
+ estimatedCompletionMs: elapsedMs,
474
+ serialEquivalentMs: selectedSerialMs,
475
+ estimatedSavingsMs: selectedSavingsMs,
476
+ candidateSerialEquivalentMs: serialEquivalentMs,
477
+ candidateParallelDurationMs: candidateParallelMs,
478
+ candidateEstimatedSavingsMs: candidateSavingsMs,
479
+ decision: parallelize
480
+ ? "parallel-time-saved"
481
+ : group.length > 1
482
+ ? "parallelism-rejected-no-time-saved"
483
+ : "single-ready-task",
484
+ conflictAuthorizations: selectedAuthorizations,
485
+ });
486
+ for (const taskId of selectedIds) {
487
+ pending.delete(taskId);
488
+ simulatedCompleted.add(taskId);
489
+ waveByTask.set(taskId, sequence);
490
+ }
491
+ }
492
+ const decisions = taskIds.map((taskId) => {
493
+ const task = tasks.get(taskId);
494
+ if (!task)
495
+ throw new Error("validated task disappeared");
496
+ const wave = waveByTask.get(taskId) ?? null;
497
+ let action;
498
+ let reasonCodes;
499
+ if (wave !== null) {
500
+ action = "scheduled";
501
+ reasonCodes = [
502
+ ...(schedulingReasons.get(taskId) ?? []),
503
+ ...(waves[wave - 1]?.decision === "parallel-time-saved"
504
+ ? ["ready-dependencies", "positive-completion-time-savings"]
505
+ : ["ready-dependencies", "serial-wave"]),
506
+ ];
507
+ }
508
+ else if (task.state === "completed") {
509
+ action = "completed";
510
+ reasonCodes = ["already-completed"];
511
+ }
512
+ else if (task.state === "running") {
513
+ action = "in-flight";
514
+ reasonCodes = ["already-running"];
515
+ }
516
+ else if (task.state === "failed") {
517
+ action = "failed";
518
+ reasonCodes = ["task-failed"];
519
+ }
520
+ else if (task.state === "blocked") {
521
+ action = "blocked";
522
+ reasonCodes = ["task-blocked"];
523
+ }
524
+ else if (blockedBy.has(taskId)) {
525
+ action = "blocked";
526
+ reasonCodes = ["blocked-by-dependency"];
527
+ }
528
+ else {
529
+ action = "deferred";
530
+ const unresolvedDependencies = task.dependsOn.filter((dependency) => !simulatedCompleted.has(dependency));
531
+ if (unresolvedDependencies.length) {
532
+ reasonCodes = ["dependency-not-complete"];
533
+ }
534
+ else if (running.some((active) => hasWriteConflict(task, active) &&
535
+ !approvedConflict(taskId, active.taskId, authorizations))) {
536
+ reasonCodes = [
537
+ ...new Set([
538
+ "active-write-set-conflict",
539
+ ...(schedulingReasons.get(taskId) ?? []),
540
+ ]),
541
+ ];
542
+ }
543
+ else {
544
+ reasonCodes = ["deferred-after-current-plan"];
545
+ }
546
+ }
547
+ const appliedTieBreak = tieBreakApplied.has(taskId);
548
+ return {
549
+ taskId,
550
+ action,
551
+ reasonCodes,
552
+ criticalPathMs: criticalPath.get(taskId) ?? 0,
553
+ estimatedCostMs: task.estimatedCostMs,
554
+ estimatedCosts: { ...task.estimatedCosts },
555
+ observedCosts: normalizeObservedCosts(task.observedCosts),
556
+ jevHintRank: hints.get(taskId) ?? null,
557
+ jevHintApplied: appliedTieBreak,
558
+ wave,
559
+ };
560
+ });
561
+ const serialEstimatedCompletionMs = decisions
562
+ .filter((decision) => decision.action === "scheduled")
563
+ .reduce((sum, decision) => safeAdd(sum, decision.estimatedCostMs, "serial completion time"), 0);
564
+ const estimatedCompletionSavingsMs = Math.max(0, serialEstimatedCompletionMs - elapsedMs);
565
+ const hintedTaskIds = advice?.taskOrder ? [...advice.taskOrder] : [];
566
+ const ignoredTaskIds = hintedTaskIds
567
+ .filter((taskId) => !waveByTask.has(taskId))
568
+ .sort((left, right) => (hints.get(left) ?? 0) - (hints.get(right) ?? 0) ||
569
+ compareText(left, right));
570
+ return {
571
+ schemaVersion: 1,
572
+ decisions,
573
+ waves,
574
+ serialEstimatedCompletionMs,
575
+ plannedEstimatedCompletionMs: elapsedMs,
576
+ estimatedCompletionSavingsMs,
577
+ jevAdvice: advice
578
+ ? {
579
+ evidenceRef: advice.evidenceRef,
580
+ hintedTaskIds,
581
+ tieBreakAppliedTaskIds: [...tieBreakApplied]
582
+ .filter((taskId) => waveByTask.has(taskId))
583
+ .sort(compareText),
584
+ ignoredTaskIds,
585
+ }
586
+ : null,
587
+ };
588
+ }
589
+ //# sourceMappingURL=scheduler.js.map