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

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 (704) 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/migrations/manifests/0.6.0-beta.5.json +9 -0
  203. package/dist/pactile/artifacts/documents.d.ts +72 -0
  204. package/dist/pactile/artifacts/documents.d.ts.map +1 -0
  205. package/dist/pactile/artifacts/documents.js +406 -0
  206. package/dist/pactile/artifacts/documents.js.map +1 -0
  207. package/dist/pactile/artifacts/index.d.ts +6 -0
  208. package/dist/pactile/artifacts/index.d.ts.map +1 -0
  209. package/dist/pactile/artifacts/index.js +6 -0
  210. package/dist/pactile/artifacts/index.js.map +1 -0
  211. package/dist/pactile/artifacts/projection.d.ts +50 -0
  212. package/dist/pactile/artifacts/projection.d.ts.map +1 -0
  213. package/dist/pactile/artifacts/projection.js +139 -0
  214. package/dist/pactile/artifacts/projection.js.map +1 -0
  215. package/dist/pactile/artifacts/reader.d.ts +20 -0
  216. package/dist/pactile/artifacts/reader.d.ts.map +1 -0
  217. package/dist/pactile/artifacts/reader.js +559 -0
  218. package/dist/pactile/artifacts/reader.js.map +1 -0
  219. package/dist/pactile/artifacts/schema.d.ts +4 -0
  220. package/dist/pactile/artifacts/schema.d.ts.map +1 -0
  221. package/dist/pactile/artifacts/schema.js +217 -0
  222. package/dist/pactile/artifacts/schema.js.map +1 -0
  223. package/dist/pactile/artifacts/types.d.ts +66 -0
  224. package/dist/pactile/artifacts/types.d.ts.map +1 -0
  225. package/dist/pactile/artifacts/types.js +45 -0
  226. package/dist/pactile/artifacts/types.js.map +1 -0
  227. package/dist/pactile/capabilities/claim.d.ts +3 -0
  228. package/dist/pactile/capabilities/claim.d.ts.map +1 -0
  229. package/dist/pactile/capabilities/claim.js +97 -0
  230. package/dist/pactile/capabilities/claim.js.map +1 -0
  231. package/dist/pactile/capabilities/command.d.ts +6 -0
  232. package/dist/pactile/capabilities/command.d.ts.map +1 -0
  233. package/dist/pactile/capabilities/command.js +253 -0
  234. package/dist/pactile/capabilities/command.js.map +1 -0
  235. package/dist/pactile/capabilities/discover.d.ts +6 -0
  236. package/dist/pactile/capabilities/discover.d.ts.map +1 -0
  237. package/dist/pactile/capabilities/discover.js +48 -0
  238. package/dist/pactile/capabilities/discover.js.map +1 -0
  239. package/dist/pactile/capabilities/node.d.ts +15 -0
  240. package/dist/pactile/capabilities/node.d.ts.map +1 -0
  241. package/dist/pactile/capabilities/node.js +292 -0
  242. package/dist/pactile/capabilities/node.js.map +1 -0
  243. package/dist/pactile/capabilities/read.d.ts +6 -0
  244. package/dist/pactile/capabilities/read.d.ts.map +1 -0
  245. package/dist/pactile/capabilities/read.js +100 -0
  246. package/dist/pactile/capabilities/read.js.map +1 -0
  247. package/dist/pactile/capabilities/receipts.d.ts +17 -0
  248. package/dist/pactile/capabilities/receipts.d.ts.map +1 -0
  249. package/dist/pactile/capabilities/receipts.js +90 -0
  250. package/dist/pactile/capabilities/receipts.js.map +1 -0
  251. package/dist/pactile/capabilities/search.d.ts +6 -0
  252. package/dist/pactile/capabilities/search.d.ts.map +1 -0
  253. package/dist/pactile/capabilities/search.js +181 -0
  254. package/dist/pactile/capabilities/search.js.map +1 -0
  255. package/dist/pactile/capabilities/shared.d.ts +29 -0
  256. package/dist/pactile/capabilities/shared.d.ts.map +1 -0
  257. package/dist/pactile/capabilities/shared.js +134 -0
  258. package/dist/pactile/capabilities/shared.js.map +1 -0
  259. package/dist/pactile/capabilities/workspace.d.ts +19 -0
  260. package/dist/pactile/capabilities/workspace.d.ts.map +1 -0
  261. package/dist/pactile/capabilities/workspace.js +273 -0
  262. package/dist/pactile/capabilities/workspace.js.map +1 -0
  263. package/dist/pactile/codex/bridge.d.ts +105 -2
  264. package/dist/pactile/codex/bridge.d.ts.map +1 -1
  265. package/dist/pactile/codex/bridge.js +1266 -92
  266. package/dist/pactile/codex/bridge.js.map +1 -1
  267. package/dist/pactile/codex/dispatch-stop-proof.d.ts +43 -0
  268. package/dist/pactile/codex/dispatch-stop-proof.d.ts.map +1 -0
  269. package/dist/pactile/codex/dispatch-stop-proof.js +177 -0
  270. package/dist/pactile/codex/dispatch-stop-proof.js.map +1 -0
  271. package/dist/pactile/codex/host-stop.d.ts +47 -0
  272. package/dist/pactile/codex/host-stop.d.ts.map +1 -0
  273. package/dist/pactile/codex/host-stop.js +344 -0
  274. package/dist/pactile/codex/host-stop.js.map +1 -0
  275. package/dist/pactile/coordination/index.d.ts +4 -0
  276. package/dist/pactile/coordination/index.d.ts.map +1 -0
  277. package/dist/pactile/coordination/index.js +4 -0
  278. package/dist/pactile/coordination/index.js.map +1 -0
  279. package/dist/pactile/coordination/journal.d.ts +10 -0
  280. package/dist/pactile/coordination/journal.d.ts.map +1 -0
  281. package/dist/pactile/coordination/journal.js +255 -0
  282. package/dist/pactile/coordination/journal.js.map +1 -0
  283. package/dist/pactile/coordination/kernel-resume.d.ts +8 -0
  284. package/dist/pactile/coordination/kernel-resume.d.ts.map +1 -0
  285. package/dist/pactile/coordination/kernel-resume.js +87 -0
  286. package/dist/pactile/coordination/kernel-resume.js.map +1 -0
  287. package/dist/pactile/coordination/model.d.ts +553 -0
  288. package/dist/pactile/coordination/model.d.ts.map +1 -0
  289. package/dist/pactile/coordination/model.js +239 -0
  290. package/dist/pactile/coordination/model.js.map +1 -0
  291. package/dist/pactile/coordination/state.d.ts +46 -0
  292. package/dist/pactile/coordination/state.d.ts.map +1 -0
  293. package/dist/pactile/coordination/state.js +301 -0
  294. package/dist/pactile/coordination/state.js.map +1 -0
  295. package/dist/pactile/coordination/store.d.ts +94 -0
  296. package/dist/pactile/coordination/store.d.ts.map +1 -0
  297. package/dist/pactile/coordination/store.js +396 -0
  298. package/dist/pactile/coordination/store.js.map +1 -0
  299. package/dist/pactile/index.d.ts +7 -1
  300. package/dist/pactile/index.d.ts.map +1 -1
  301. package/dist/pactile/index.js +7 -1
  302. package/dist/pactile/index.js.map +1 -1
  303. package/dist/pactile/jev/contracts.d.ts +104 -0
  304. package/dist/pactile/jev/contracts.d.ts.map +1 -0
  305. package/dist/pactile/jev/contracts.js +53 -0
  306. package/dist/pactile/jev/contracts.js.map +1 -0
  307. package/dist/pactile/jev/decision.d.ts +58 -0
  308. package/dist/pactile/jev/decision.d.ts.map +1 -0
  309. package/dist/pactile/jev/decision.js +149 -0
  310. package/dist/pactile/jev/decision.js.map +1 -0
  311. package/dist/pactile/jev/http.d.ts +25 -0
  312. package/dist/pactile/jev/http.d.ts.map +1 -0
  313. package/dist/pactile/jev/http.js +234 -0
  314. package/dist/pactile/jev/http.js.map +1 -0
  315. package/dist/pactile/jev/index.d.ts +8 -0
  316. package/dist/pactile/jev/index.d.ts.map +1 -0
  317. package/dist/pactile/jev/index.js +4 -0
  318. package/dist/pactile/jev/index.js.map +1 -0
  319. package/dist/pactile/jev/outbound.d.ts +15 -0
  320. package/dist/pactile/jev/outbound.d.ts.map +1 -0
  321. package/dist/pactile/jev/outbound.js +264 -0
  322. package/dist/pactile/jev/outbound.js.map +1 -0
  323. package/dist/pactile/jev/project-policy.d.ts +10 -0
  324. package/dist/pactile/jev/project-policy.d.ts.map +1 -0
  325. package/dist/pactile/jev/project-policy.js +53 -0
  326. package/dist/pactile/jev/project-policy.js.map +1 -0
  327. package/dist/pactile/jev/response.d.ts +17 -0
  328. package/dist/pactile/jev/response.d.ts.map +1 -0
  329. package/dist/pactile/jev/response.js +280 -0
  330. package/dist/pactile/jev/response.js.map +1 -0
  331. package/dist/pactile/jev/scheduler-advice.d.ts +92 -0
  332. package/dist/pactile/jev/scheduler-advice.d.ts.map +1 -0
  333. package/dist/pactile/jev/scheduler-advice.js +323 -0
  334. package/dist/pactile/jev/scheduler-advice.js.map +1 -0
  335. package/dist/pactile/jev/transport.d.ts +6 -0
  336. package/dist/pactile/jev/transport.d.ts.map +1 -0
  337. package/dist/pactile/jev/transport.js +87 -0
  338. package/dist/pactile/jev/transport.js.map +1 -0
  339. package/dist/pactile/lifecycle/deferred-live.d.ts +17 -0
  340. package/dist/pactile/lifecycle/deferred-live.d.ts.map +1 -0
  341. package/dist/pactile/lifecycle/deferred-live.js +173 -0
  342. package/dist/pactile/lifecycle/deferred-live.js.map +1 -0
  343. package/dist/pactile/lifecycle/legacy-import.d.ts +1 -1
  344. package/dist/pactile/lifecycle/legacy-import.js +3 -3
  345. package/dist/pactile/lifecycle/legacy-import.js.map +1 -1
  346. package/dist/pactile/lifecycle/project-files.d.ts.map +1 -1
  347. package/dist/pactile/lifecycle/project-files.js +1 -0
  348. package/dist/pactile/lifecycle/project-files.js.map +1 -1
  349. package/dist/pactile/migration/legacy-task-batch-generation.d.ts +23 -0
  350. package/dist/pactile/migration/legacy-task-batch-generation.d.ts.map +1 -0
  351. package/dist/pactile/migration/legacy-task-batch-generation.js +102 -0
  352. package/dist/pactile/migration/legacy-task-batch-generation.js.map +1 -0
  353. package/dist/pactile/migration/legacy-task-batch-io.d.ts +9 -0
  354. package/dist/pactile/migration/legacy-task-batch-io.d.ts.map +1 -0
  355. package/dist/pactile/migration/legacy-task-batch-io.js +208 -0
  356. package/dist/pactile/migration/legacy-task-batch-io.js.map +1 -0
  357. package/dist/pactile/migration/legacy-task-batch-journal.d.ts +6 -0
  358. package/dist/pactile/migration/legacy-task-batch-journal.d.ts.map +1 -0
  359. package/dist/pactile/migration/legacy-task-batch-journal.js +121 -0
  360. package/dist/pactile/migration/legacy-task-batch-journal.js.map +1 -0
  361. package/dist/pactile/migration/legacy-task-batch-orchestrator.d.ts +18 -0
  362. package/dist/pactile/migration/legacy-task-batch-orchestrator.d.ts.map +1 -0
  363. package/dist/pactile/migration/legacy-task-batch-orchestrator.js +634 -0
  364. package/dist/pactile/migration/legacy-task-batch-orchestrator.js.map +1 -0
  365. package/dist/pactile/migration/legacy-task-batch-source.d.ts +8 -0
  366. package/dist/pactile/migration/legacy-task-batch-source.d.ts.map +1 -0
  367. package/dist/pactile/migration/legacy-task-batch-source.js +158 -0
  368. package/dist/pactile/migration/legacy-task-batch-source.js.map +1 -0
  369. package/dist/pactile/migration/legacy-task-batch-types.d.ts +127 -0
  370. package/dist/pactile/migration/legacy-task-batch-types.d.ts.map +1 -0
  371. package/dist/pactile/migration/legacy-task-batch-types.js +127 -0
  372. package/dist/pactile/migration/legacy-task-batch-types.js.map +1 -0
  373. package/dist/pactile/migration/legacy-task-batch.d.ts +3 -0
  374. package/dist/pactile/migration/legacy-task-batch.d.ts.map +1 -0
  375. package/dist/pactile/migration/legacy-task-batch.js +2 -0
  376. package/dist/pactile/migration/legacy-task-batch.js.map +1 -0
  377. package/dist/pactile/migration/legacy-task-held-source-reader.d.ts +27 -0
  378. package/dist/pactile/migration/legacy-task-held-source-reader.d.ts.map +1 -0
  379. package/dist/pactile/migration/legacy-task-held-source-reader.js +261 -0
  380. package/dist/pactile/migration/legacy-task-held-source-reader.js.map +1 -0
  381. package/dist/pactile/migration/legacy-task-reconciliation.d.ts +46 -0
  382. package/dist/pactile/migration/legacy-task-reconciliation.d.ts.map +1 -0
  383. package/dist/pactile/migration/legacy-task-reconciliation.js +589 -0
  384. package/dist/pactile/migration/legacy-task-reconciliation.js.map +1 -0
  385. package/dist/pactile/migration/legacy-task-update.d.ts +19 -0
  386. package/dist/pactile/migration/legacy-task-update.d.ts.map +1 -0
  387. package/dist/pactile/migration/legacy-task-update.js +164 -0
  388. package/dist/pactile/migration/legacy-task-update.js.map +1 -0
  389. package/dist/pactile/parallel/batch.d.ts +21 -2
  390. package/dist/pactile/parallel/batch.d.ts.map +1 -1
  391. package/dist/pactile/parallel/batch.js +271 -50
  392. package/dist/pactile/parallel/batch.js.map +1 -1
  393. package/dist/pactile/parallel/policy.d.ts +1 -1
  394. package/dist/pactile/parallel/policy.d.ts.map +1 -1
  395. package/dist/pactile/parallel/policy.js +130 -102
  396. package/dist/pactile/parallel/policy.js.map +1 -1
  397. package/dist/pactile/pi/bridge.d.ts +139 -2
  398. package/dist/pactile/pi/bridge.d.ts.map +1 -1
  399. package/dist/pactile/pi/bridge.js +1317 -106
  400. package/dist/pactile/pi/bridge.js.map +1 -1
  401. package/dist/pactile/pi/rpc.d.ts +23 -4
  402. package/dist/pactile/pi/rpc.d.ts.map +1 -1
  403. package/dist/pactile/pi/rpc.js +243 -42
  404. package/dist/pactile/pi/rpc.js.map +1 -1
  405. package/dist/pactile/pi/v2-dispatch.d.ts +113 -0
  406. package/dist/pactile/pi/v2-dispatch.d.ts.map +1 -0
  407. package/dist/pactile/pi/v2-dispatch.js +919 -0
  408. package/dist/pactile/pi/v2-dispatch.js.map +1 -0
  409. package/dist/pactile/projection/planner.js +1 -1
  410. package/dist/pactile/projection/planner.js.map +1 -1
  411. package/dist/pactile/registry.d.ts +63 -1
  412. package/dist/pactile/registry.d.ts.map +1 -1
  413. package/dist/pactile/registry.js +633 -4
  414. package/dist/pactile/registry.js.map +1 -1
  415. package/dist/pactile/retrieval/index.d.ts +1 -0
  416. package/dist/pactile/retrieval/index.d.ts.map +1 -1
  417. package/dist/pactile/retrieval/index.js +1 -0
  418. package/dist/pactile/retrieval/index.js.map +1 -1
  419. package/dist/pactile/retrieval/jev-planning.d.ts +28 -0
  420. package/dist/pactile/retrieval/jev-planning.d.ts.map +1 -0
  421. package/dist/pactile/retrieval/jev-planning.js +96 -0
  422. package/dist/pactile/retrieval/jev-planning.js.map +1 -0
  423. package/dist/pactile/review/contract.d.ts +232 -0
  424. package/dist/pactile/review/contract.d.ts.map +1 -0
  425. package/dist/pactile/review/contract.js +695 -0
  426. package/dist/pactile/review/contract.js.map +1 -0
  427. package/dist/pactile/review/escalation-artifacts.d.ts +41 -0
  428. package/dist/pactile/review/escalation-artifacts.d.ts.map +1 -0
  429. package/dist/pactile/review/escalation-artifacts.js +415 -0
  430. package/dist/pactile/review/escalation-artifacts.js.map +1 -0
  431. package/dist/pactile/review/escalation-contract.d.ts +115 -0
  432. package/dist/pactile/review/escalation-contract.d.ts.map +1 -0
  433. package/dist/pactile/review/escalation-contract.js +151 -0
  434. package/dist/pactile/review/escalation-contract.js.map +1 -0
  435. package/dist/pactile/review/escalation-finalize.d.ts +14 -0
  436. package/dist/pactile/review/escalation-finalize.d.ts.map +1 -0
  437. package/dist/pactile/review/escalation-finalize.js +319 -0
  438. package/dist/pactile/review/escalation-finalize.js.map +1 -0
  439. package/dist/pactile/review/escalation-reply.d.ts +10 -0
  440. package/dist/pactile/review/escalation-reply.d.ts.map +1 -0
  441. package/dist/pactile/review/escalation-reply.js +61 -0
  442. package/dist/pactile/review/escalation-reply.js.map +1 -0
  443. package/dist/pactile/review/escalation-transport.d.ts +32 -0
  444. package/dist/pactile/review/escalation-transport.d.ts.map +1 -0
  445. package/dist/pactile/review/escalation-transport.js +216 -0
  446. package/dist/pactile/review/escalation-transport.js.map +1 -0
  447. package/dist/pactile/review/escalation.d.ts +7 -0
  448. package/dist/pactile/review/escalation.d.ts.map +1 -0
  449. package/dist/pactile/review/escalation.js +6 -0
  450. package/dist/pactile/review/escalation.js.map +1 -0
  451. package/dist/pactile/review/evidence.d.ts +25 -0
  452. package/dist/pactile/review/evidence.d.ts.map +1 -0
  453. package/dist/pactile/review/evidence.js +58 -0
  454. package/dist/pactile/review/evidence.js.map +1 -0
  455. package/dist/pactile/review/jev-escalation-advice.d.ts +77 -0
  456. package/dist/pactile/review/jev-escalation-advice.d.ts.map +1 -0
  457. package/dist/pactile/review/jev-escalation-advice.js +358 -0
  458. package/dist/pactile/review/jev-escalation-advice.js.map +1 -0
  459. package/dist/pactile/scheduler/index.d.ts +6 -0
  460. package/dist/pactile/scheduler/index.d.ts.map +1 -0
  461. package/dist/pactile/scheduler/index.js +5 -0
  462. package/dist/pactile/scheduler/index.js.map +1 -0
  463. package/dist/pactile/scheduler/project-lease-store.d.ts +35 -0
  464. package/dist/pactile/scheduler/project-lease-store.d.ts.map +1 -0
  465. package/dist/pactile/scheduler/project-lease-store.js +189 -0
  466. package/dist/pactile/scheduler/project-lease-store.js.map +1 -0
  467. package/dist/pactile/scheduler/scheduler.d.ts +91 -0
  468. package/dist/pactile/scheduler/scheduler.d.ts.map +1 -0
  469. package/dist/pactile/scheduler/scheduler.js +589 -0
  470. package/dist/pactile/scheduler/scheduler.js.map +1 -0
  471. package/dist/pactile/scheduler/task-kernel-admission.d.ts +173 -0
  472. package/dist/pactile/scheduler/task-kernel-admission.d.ts.map +1 -0
  473. package/dist/pactile/scheduler/task-kernel-admission.js +1560 -0
  474. package/dist/pactile/scheduler/task-kernel-admission.js.map +1 -0
  475. package/dist/pactile/scheduler/task-kernel-wave-dispatch.d.ts +184 -0
  476. package/dist/pactile/scheduler/task-kernel-wave-dispatch.d.ts.map +1 -0
  477. package/dist/pactile/scheduler/task-kernel-wave-dispatch.js +952 -0
  478. package/dist/pactile/scheduler/task-kernel-wave-dispatch.js.map +1 -0
  479. package/dist/pactile/scheduler/task-map-scheduler.d.ts +116 -0
  480. package/dist/pactile/scheduler/task-map-scheduler.d.ts.map +1 -0
  481. package/dist/pactile/scheduler/task-map-scheduler.js +1448 -0
  482. package/dist/pactile/scheduler/task-map-scheduler.js.map +1 -0
  483. package/dist/pactile/scheduler/task-run-dispatch-state.d.ts +7 -0
  484. package/dist/pactile/scheduler/task-run-dispatch-state.d.ts.map +1 -0
  485. package/dist/pactile/scheduler/task-run-dispatch-state.js +69 -0
  486. package/dist/pactile/scheduler/task-run-dispatch-state.js.map +1 -0
  487. package/dist/pactile/task/authorization.d.ts +3 -0
  488. package/dist/pactile/task/authorization.d.ts.map +1 -0
  489. package/dist/pactile/task/authorization.js +43 -0
  490. package/dist/pactile/task/authorization.js.map +1 -0
  491. package/dist/pactile/task/creation.d.ts +22 -0
  492. package/dist/pactile/task/creation.d.ts.map +1 -0
  493. package/dist/pactile/task/creation.js +95 -0
  494. package/dist/pactile/task/creation.js.map +1 -0
  495. package/dist/pactile/task/guards.d.ts +1 -4
  496. package/dist/pactile/task/guards.d.ts.map +1 -1
  497. package/dist/pactile/task/guards.js +5 -57
  498. package/dist/pactile/task/guards.js.map +1 -1
  499. package/dist/pactile/task/session-jev-receipt.d.ts +58 -0
  500. package/dist/pactile/task/session-jev-receipt.d.ts.map +1 -0
  501. package/dist/pactile/task/session-jev-receipt.js +375 -0
  502. package/dist/pactile/task/session-jev-receipt.js.map +1 -0
  503. package/dist/pactile/task/session-jev.d.ts +7 -0
  504. package/dist/pactile/task/session-jev.d.ts.map +1 -0
  505. package/dist/pactile/task/session-jev.js +217 -0
  506. package/dist/pactile/task/session-jev.js.map +1 -0
  507. package/dist/pactile/task/session-pack.d.ts.map +1 -1
  508. package/dist/pactile/task/session-pack.js +155 -16
  509. package/dist/pactile/task/session-pack.js.map +1 -1
  510. package/dist/pactile/task/session-retrieval-jev-receipt.d.ts +49 -0
  511. package/dist/pactile/task/session-retrieval-jev-receipt.d.ts.map +1 -0
  512. package/dist/pactile/task/session-retrieval-jev-receipt.js +97 -0
  513. package/dist/pactile/task/session-retrieval-jev-receipt.js.map +1 -0
  514. package/dist/pactile/task/session-retrieval-jev.d.ts +8 -0
  515. package/dist/pactile/task/session-retrieval-jev.d.ts.map +1 -0
  516. package/dist/pactile/task/session-retrieval-jev.js +352 -0
  517. package/dist/pactile/task/session-retrieval-jev.js.map +1 -0
  518. package/dist/pactile/task/strategy.d.ts +1 -23
  519. package/dist/pactile/task/strategy.d.ts.map +1 -1
  520. package/dist/pactile/task/strategy.js +2 -135
  521. package/dist/pactile/task/strategy.js.map +1 -1
  522. package/dist/pactile/tiles/jev-selection.d.ts +44 -0
  523. package/dist/pactile/tiles/jev-selection.d.ts.map +1 -0
  524. package/dist/pactile/tiles/jev-selection.js +210 -0
  525. package/dist/pactile/tiles/jev-selection.js.map +1 -0
  526. package/dist/pactile/tiles/safe-yaml.d.ts +5 -1
  527. package/dist/pactile/tiles/safe-yaml.d.ts.map +1 -1
  528. package/dist/pactile/tiles/safe-yaml.js +8 -8
  529. package/dist/pactile/tiles/safe-yaml.js.map +1 -1
  530. package/dist/pactile/tiles/selection-receipts.d.ts +71 -0
  531. package/dist/pactile/tiles/selection-receipts.d.ts.map +1 -0
  532. package/dist/pactile/tiles/selection-receipts.js +319 -0
  533. package/dist/pactile/tiles/selection-receipts.js.map +1 -0
  534. package/dist/pactile/tiles/selection.d.ts +185 -0
  535. package/dist/pactile/tiles/selection.d.ts.map +1 -0
  536. package/dist/pactile/tiles/selection.js +985 -0
  537. package/dist/pactile/tiles/selection.js.map +1 -0
  538. package/dist/pactile/verification/git-observer.d.ts +3 -0
  539. package/dist/pactile/verification/git-observer.d.ts.map +1 -0
  540. package/dist/pactile/verification/git-observer.js +3 -0
  541. package/dist/pactile/verification/git-observer.js.map +1 -0
  542. package/dist/pactile/verification/index.d.ts +11 -0
  543. package/dist/pactile/verification/index.d.ts.map +1 -0
  544. package/dist/pactile/verification/index.js +6 -0
  545. package/dist/pactile/verification/index.js.map +1 -0
  546. package/dist/pactile/verification/jev-advice.d.ts +78 -0
  547. package/dist/pactile/verification/jev-advice.d.ts.map +1 -0
  548. package/dist/pactile/verification/jev-advice.js +397 -0
  549. package/dist/pactile/verification/jev-advice.js.map +1 -0
  550. package/dist/pactile/verification/planner.d.ts +15 -0
  551. package/dist/pactile/verification/planner.d.ts.map +1 -0
  552. package/dist/pactile/verification/planner.js +412 -0
  553. package/dist/pactile/verification/planner.js.map +1 -0
  554. package/dist/pactile/verification/receipt.d.ts +101 -0
  555. package/dist/pactile/verification/receipt.d.ts.map +1 -0
  556. package/dist/pactile/verification/receipt.js +400 -0
  557. package/dist/pactile/verification/receipt.js.map +1 -0
  558. package/dist/pactile/verification/types.d.ts +72 -0
  559. package/dist/pactile/verification/types.d.ts.map +1 -0
  560. package/dist/pactile/verification/types.js +21 -0
  561. package/dist/pactile/verification/types.js.map +1 -0
  562. package/dist/pactile/worktree/git-probe.d.ts +32 -0
  563. package/dist/pactile/worktree/git-probe.d.ts.map +1 -0
  564. package/dist/pactile/worktree/git-probe.js +336 -0
  565. package/dist/pactile/worktree/git-probe.js.map +1 -0
  566. package/dist/pactile/worktree/git-removal.d.ts +3 -0
  567. package/dist/pactile/worktree/git-removal.d.ts.map +1 -0
  568. package/dist/pactile/worktree/git-removal.js +11 -0
  569. package/dist/pactile/worktree/git-removal.js.map +1 -0
  570. package/dist/pactile/worktree/index.d.ts +2 -0
  571. package/dist/pactile/worktree/index.d.ts.map +1 -0
  572. package/dist/pactile/worktree/index.js +2 -0
  573. package/dist/pactile/worktree/index.js.map +1 -0
  574. package/dist/pactile/worktree/integration-evidence.d.ts +80 -0
  575. package/dist/pactile/worktree/integration-evidence.d.ts.map +1 -0
  576. package/dist/pactile/worktree/integration-evidence.js +166 -0
  577. package/dist/pactile/worktree/integration-evidence.js.map +1 -0
  578. package/dist/pactile/worktree/manager-core.d.ts +50 -0
  579. package/dist/pactile/worktree/manager-core.d.ts.map +1 -0
  580. package/dist/pactile/worktree/manager-core.js +359 -0
  581. package/dist/pactile/worktree/manager-core.js.map +1 -0
  582. package/dist/pactile/worktree/manager-provenance.d.ts +32 -0
  583. package/dist/pactile/worktree/manager-provenance.d.ts.map +1 -0
  584. package/dist/pactile/worktree/manager-provenance.js +409 -0
  585. package/dist/pactile/worktree/manager-provenance.js.map +1 -0
  586. package/dist/pactile/worktree/manager-types.d.ts +84 -0
  587. package/dist/pactile/worktree/manager-types.d.ts.map +1 -0
  588. package/dist/pactile/worktree/manager-types.js +11 -0
  589. package/dist/pactile/worktree/manager-types.js.map +1 -0
  590. package/dist/pactile/worktree/manager.d.ts +10 -0
  591. package/dist/pactile/worktree/manager.d.ts.map +1 -0
  592. package/dist/pactile/worktree/manager.js +6 -0
  593. package/dist/pactile/worktree/manager.js.map +1 -0
  594. package/dist/pactile/worktree/run-workspace-cleanup.d.ts +10 -0
  595. package/dist/pactile/worktree/run-workspace-cleanup.d.ts.map +1 -0
  596. package/dist/pactile/worktree/run-workspace-cleanup.js +695 -0
  597. package/dist/pactile/worktree/run-workspace-cleanup.js.map +1 -0
  598. package/dist/pactile/worktree/run-workspace-lifecycle.d.ts +65 -0
  599. package/dist/pactile/worktree/run-workspace-lifecycle.d.ts.map +1 -0
  600. package/dist/pactile/worktree/run-workspace-lifecycle.js +276 -0
  601. package/dist/pactile/worktree/run-workspace-lifecycle.js.map +1 -0
  602. package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-hooks.md +1 -1
  603. package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/generated-files.md +1 -1
  604. package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/hooks-and-settings.md +1 -1
  605. package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/overview.md +1 -1
  606. package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/platform-map.md +1 -1
  607. package/dist/templates/common/bundled-skills/smart-search-cli/SKILL.md +2 -0
  608. package/dist/templates/common/skills/brainstorm.md +19 -13
  609. package/dist/templates/markdown/agents.md +2 -2
  610. package/dist/templates/markdown/framework/execution-strategy.md.txt +1 -1
  611. package/dist/templates/markdown/framework/index.md.txt +1 -1
  612. package/dist/templates/markdown/framework/parallel-first-execution.md.txt +17 -105
  613. package/dist/templates/markdown/framework/prd-grill-frontier.md.txt +3 -3
  614. package/dist/templates/markdown/framework/release-boundary.md.txt +9 -10
  615. package/dist/templates/markdown/framework/retrieval-daily-guide.md.txt +1 -1
  616. package/dist/templates/pactile/CONTEXT.md +48 -36
  617. package/dist/templates/pactile/modules/approval-personal/contract.md +12 -24
  618. package/dist/templates/pactile/modules/close-basic/contract.md +15 -18
  619. package/dist/templates/pactile/modules/debug-recovery/contract.md +4 -4
  620. package/dist/templates/pactile/modules/define-basic/contract.md +15 -19
  621. package/dist/templates/pactile/modules/define-extended/contract.md +3 -3
  622. package/dist/templates/pactile/modules/execute-agent/contract.md +11 -19
  623. package/dist/templates/pactile/modules/intake-basic/contract.md +16 -13
  624. package/dist/templates/pactile/modules/verify-basic/contract.md +11 -20
  625. package/dist/templates/pactile/tasks/templates/release-execution/design.md +5 -5
  626. package/dist/templates/pactile/tasks/templates/release-readiness/design.md +6 -6
  627. package/dist/templates/pactile/tasks/templates/release-readiness/handoff-template.md +8 -2
  628. package/dist/templates/pactile/workflow.md +37 -41
  629. package/dist/templates/template-utils.d.ts +1 -2
  630. package/dist/templates/template-utils.d.ts.map +1 -1
  631. package/dist/templates/template-utils.js +2 -13
  632. package/dist/templates/template-utils.js.map +1 -1
  633. package/dist/types/ai-tools.d.ts +1 -1
  634. package/dist/types/ai-tools.js +1 -1
  635. package/dist/utils/manifest-prune.js +1 -1
  636. package/dist/utils/manifest-prune.js.map +1 -1
  637. package/dist/utils/p36-upgrade.d.ts +2 -2
  638. package/dist/utils/p36-upgrade.d.ts.map +1 -1
  639. package/dist/utils/p36-upgrade.js +2 -10
  640. package/dist/utils/p36-upgrade.js.map +1 -1
  641. package/dist/utils/post-update-smoke.js +1 -1
  642. package/dist/utils/post-update-smoke.js.map +1 -1
  643. package/dist/utils/readiness.d.ts +2 -2
  644. package/dist/utils/readiness.js +2 -2
  645. package/dist/utils/uninstall-scrubbers.js +1 -1
  646. package/dist/utils/workflow-dir.d.ts +1 -1
  647. package/dist/utils/workflow-dir.d.ts.map +1 -1
  648. package/dist/utils/workflow-dir.js +1 -1
  649. package/dist/utils/workflow-dir.js.map +1 -1
  650. package/package.json +42 -37
  651. package/CHANGELOG.md +0 -651
  652. package/bin/compat-warning.js +0 -11
  653. package/bin/pactile.js +0 -3
  654. package/bin/smart-search.js +0 -38
  655. package/dist/migrations/manifests/0.1.0.json +0 -9
  656. package/dist/migrations/manifests/0.1.1.json +0 -9
  657. package/dist/migrations/manifests/0.1.2.json +0 -9
  658. package/dist/migrations/manifests/0.1.3.json +0 -9
  659. package/dist/migrations/manifests/0.1.4.json +0 -9
  660. package/dist/migrations/manifests/0.2.1.json +0 -9
  661. package/dist/migrations/manifests/0.2.10.json +0 -374
  662. package/dist/migrations/manifests/0.2.2.json +0 -9
  663. package/dist/migrations/manifests/0.2.3.json +0 -9
  664. package/dist/migrations/manifests/0.2.4.json +0 -9
  665. package/dist/migrations/manifests/0.2.5.json +0 -9
  666. package/dist/migrations/manifests/0.2.6.json +0 -9
  667. package/dist/migrations/manifests/0.2.7.json +0 -9
  668. package/dist/migrations/manifests/0.2.8.json +0 -9
  669. package/dist/migrations/manifests/0.2.9.json +0 -9
  670. package/dist/migrations/manifests/0.3.0.json +0 -89
  671. package/dist/migrations/manifests/0.3.1.json +0 -32
  672. package/dist/migrations/manifests/0.3.2.json +0 -16
  673. package/dist/migrations/manifests/0.3.3.json +0 -9
  674. package/dist/migrations/manifests/0.3.4.json +0 -9
  675. package/dist/migrations/manifests/0.3.5.json +0 -9
  676. package/dist/migrations/manifests/0.3.6.json +0 -9
  677. package/dist/migrations/manifests/0.4.0.json +0 -9
  678. package/dist/migrations/manifests/0.4.1.json +0 -9
  679. package/dist/migrations/manifests/0.4.2.json +0 -9
  680. package/dist/migrations/manifests/0.4.3.json +0 -9
  681. package/dist/migrations/manifests/0.5.0-beta.0.json +0 -9
  682. package/dist/migrations/manifests/0.5.0-beta.1.json +0 -9
  683. package/dist/migrations/manifests/0.5.0-beta.2.json +0 -9
  684. package/dist/migrations/manifests/0.5.0-beta.3.json +0 -9
  685. package/dist/migrations/manifests/0.5.0-beta.4.json +0 -9
  686. package/dist/migrations/manifests/0.5.0-beta.5.json +0 -9
  687. package/dist/migrations/manifests/0.5.0.json +0 -9
  688. package/dist/pactile/compat/retired-alternate-client.d.ts +0 -42
  689. package/dist/pactile/compat/retired-alternate-client.d.ts.map +0 -1
  690. package/dist/pactile/compat/retired-alternate-client.js +0 -153
  691. package/dist/pactile/compat/retired-alternate-client.js.map +0 -1
  692. package/dist/pactile/compat/update-residue.d.ts +0 -4
  693. package/dist/pactile/compat/update-residue.d.ts.map +0 -1
  694. package/dist/pactile/compat/update-residue.js +0 -55
  695. package/dist/pactile/compat/update-residue.js.map +0 -1
  696. package/dist/utils/cursor-retrieval-env.d.ts +0 -17
  697. package/dist/utils/cursor-retrieval-env.d.ts.map +0 -1
  698. package/dist/utils/cursor-retrieval-env.js +0 -19
  699. package/dist/utils/cursor-retrieval-env.js.map +0 -1
  700. package/dist/utils/proxy.d.ts +0 -25
  701. package/dist/utils/proxy.d.ts.map +0 -1
  702. package/dist/utils/proxy.js +0 -60
  703. package/dist/utils/proxy.js.map +0 -1
  704. package/scripts/postinstall.js +0 -6
@@ -0,0 +1,323 @@
1
+ import { createHash } from "node:crypto";
2
+ import { projectJevConfidenceReceiptV1, unavailableJevConfidenceReceiptV1, } from "./response.js";
3
+ const MAX_CHOICE_CANDIDATES = 16;
4
+ function compareText(left, right) {
5
+ return left < right ? -1 : left > right ? 1 : 0;
6
+ }
7
+ function auditTransport(receipt) {
8
+ return {
9
+ latencyMs: receipt.transport.latencyMs,
10
+ attempts: receipt.transport.attempts,
11
+ httpStatus: receipt.transport.httpStatus,
12
+ model: receipt.transport.model,
13
+ inputTokens: receipt.transport.inputTokens,
14
+ outputTokens: receipt.transport.outputTokens,
15
+ estimatedInputCostMicrousd: receipt.transport.estimatedInputCostMicrousd,
16
+ confidence: projectJevConfidenceReceiptV1(receipt.transport.confidence, ["first_task"]),
17
+ };
18
+ }
19
+ function baseAudit(input) {
20
+ return {
21
+ schemaVersion: 1,
22
+ status: input.status,
23
+ reasonCode: input.reasonCode,
24
+ preparedRequestSnapshot: input.preparedRequestSnapshot ?? null,
25
+ sentRequestSnapshot: input.sentRequestSnapshot ?? null,
26
+ finalEligibleCandidates: {
27
+ candidateTaskIds: input.candidates.map(({ taskId }) => taskId),
28
+ filteredCandidates: [...input.filteredCandidates],
29
+ eligibility: {
30
+ approvalPassedTaskIds: [...input.eligibility.approvalPassedTaskIds],
31
+ worktreePassedTaskIds: [...input.eligibility.worktreePassedTaskIds],
32
+ activeLeaseCheckAt: input.eligibility.activeLeaseCheckAt,
33
+ },
34
+ },
35
+ eligibilityChanged: input.eligibilityChanged ?? false,
36
+ suggestedTaskIds: [...(input.suggestedTaskIds ?? [])],
37
+ adoptedTaskIds: [...(input.adoptedTaskIds ?? [])],
38
+ overriddenTaskIds: [...(input.overriddenTaskIds ?? [])],
39
+ transport: {
40
+ latencyMs: input.transport?.latencyMs ?? 0,
41
+ attempts: input.transport?.attempts ?? 0,
42
+ httpStatus: input.transport?.httpStatus ?? null,
43
+ model: input.transport?.model ?? null,
44
+ inputTokens: input.transport?.inputTokens ?? null,
45
+ outputTokens: input.transport?.outputTokens ?? null,
46
+ estimatedInputCostMicrousd: input.transport?.estimatedInputCostMicrousd ?? null,
47
+ confidence: input.transport
48
+ ? projectJevConfidenceReceiptV1(input.transport.confidence, ["first_task"])
49
+ : unavailableJevConfidenceReceiptV1(["first_task"]),
50
+ },
51
+ };
52
+ }
53
+ function attemptedRequestSnapshot(prepared, transport) {
54
+ return transport.attempts !== null && transport.attempts > 0
55
+ ? prepared
56
+ : null;
57
+ }
58
+ /**
59
+ * Asks Jev to choose a first task only within a locally filtered, equal
60
+ * critical-path candidate group. The caller owns fresh hard-gate checks.
61
+ */
62
+ export async function requestJevTaskScheduleAdviceV1(input) {
63
+ const candidates = [...input.candidates].sort((left, right) => compareText(left.taskId, right.taskId));
64
+ if (input.fallbackReasonCode) {
65
+ return {
66
+ advice: null,
67
+ audit: baseAudit({
68
+ status: "fallback",
69
+ reasonCode: input.fallbackReasonCode,
70
+ candidates,
71
+ filteredCandidates: input.filteredCandidates,
72
+ eligibility: input.eligibility,
73
+ }),
74
+ };
75
+ }
76
+ if (!input.options) {
77
+ return {
78
+ advice: null,
79
+ audit: baseAudit({
80
+ status: "skipped",
81
+ reasonCode: "disabled",
82
+ candidates,
83
+ filteredCandidates: input.filteredCandidates,
84
+ eligibility: input.eligibility,
85
+ }),
86
+ };
87
+ }
88
+ if (candidates.length < 2) {
89
+ return {
90
+ advice: null,
91
+ audit: baseAudit({
92
+ status: "skipped",
93
+ reasonCode: "insufficient-candidates",
94
+ candidates,
95
+ filteredCandidates: input.filteredCandidates,
96
+ eligibility: input.eligibility,
97
+ }),
98
+ };
99
+ }
100
+ if (candidates.length > MAX_CHOICE_CANDIDATES) {
101
+ return {
102
+ advice: null,
103
+ audit: baseAudit({
104
+ status: "fallback",
105
+ reasonCode: "candidate-bound-exceeded",
106
+ candidates,
107
+ filteredCandidates: input.filteredCandidates,
108
+ eligibility: input.eligibility,
109
+ }),
110
+ };
111
+ }
112
+ const labels = candidates.map((_candidate, index) => `candidate-${String(index + 1).padStart(2, "0")}`);
113
+ const taskSummary = JSON.stringify({
114
+ purpose: "Choose one first task from already eligible equal critical-path candidates.",
115
+ constraints: [
116
+ "This is scheduling advice only.",
117
+ "Do not infer or grant execution permission.",
118
+ "Do not change dependencies, write-set rules, or concurrency limits.",
119
+ ],
120
+ candidates: candidates.map((candidate, index) => ({
121
+ label: labels[index],
122
+ criticalPathMs: candidate.criticalPathMs,
123
+ estimatedCostMs: candidate.estimatedCostMs,
124
+ })),
125
+ });
126
+ const question = {
127
+ type: "choice",
128
+ instructions: "Select the eligible candidate that should be suggested first. This may only break a tie in critical-path cost.",
129
+ criteria: Object.fromEntries(candidates.map((candidate, index) => [
130
+ labels[index],
131
+ `Eligible candidate ${index + 1}; critical path ${candidate.criticalPathMs} ms; estimated cost ${candidate.estimatedCostMs} ms.`,
132
+ ])),
133
+ };
134
+ const requestForDigest = {
135
+ node: "task-scheduling",
136
+ taskSummary,
137
+ questions: { first_task: question },
138
+ };
139
+ const inputDigest = createHash("sha256")
140
+ .update(JSON.stringify(requestForDigest), "utf8")
141
+ .digest("hex");
142
+ const preparedRequestSnapshot = {
143
+ candidateTaskIds: candidates.map(({ taskId }) => taskId),
144
+ inputDigest,
145
+ inputSummaryChars: taskSummary.length,
146
+ };
147
+ const startedAt = Date.now();
148
+ let result;
149
+ try {
150
+ result = await input.options.facade.decide({
151
+ node: "task-scheduling",
152
+ request: {
153
+ taskSummary,
154
+ questions: { first_task: question },
155
+ },
156
+ options: {
157
+ egress: input.options.egress,
158
+ ...(input.options.signal ? { signal: input.options.signal } : {}),
159
+ ...(input.options.minimumDecisionConfidence !== undefined
160
+ ? {
161
+ minimumDecisionConfidence: input.options.minimumDecisionConfidence,
162
+ }
163
+ : {}),
164
+ },
165
+ });
166
+ }
167
+ catch {
168
+ return {
169
+ advice: null,
170
+ audit: baseAudit({
171
+ status: "fallback",
172
+ reasonCode: "transport-error",
173
+ candidates,
174
+ filteredCandidates: input.filteredCandidates,
175
+ eligibility: input.eligibility,
176
+ preparedRequestSnapshot,
177
+ transport: {
178
+ latencyMs: Math.max(0, Date.now() - startedAt),
179
+ attempts: null,
180
+ httpStatus: null,
181
+ model: null,
182
+ inputTokens: null,
183
+ outputTokens: null,
184
+ estimatedInputCostMicrousd: null,
185
+ confidence: unavailableJevConfidenceReceiptV1(["first_task"]),
186
+ },
187
+ }),
188
+ };
189
+ }
190
+ if (result.status !== "answered") {
191
+ const transport = auditTransport(result.receipt);
192
+ return {
193
+ advice: null,
194
+ audit: baseAudit({
195
+ status: "fallback",
196
+ reasonCode: result.fallback.reasonCode,
197
+ candidates,
198
+ filteredCandidates: input.filteredCandidates,
199
+ eligibility: input.eligibility,
200
+ preparedRequestSnapshot,
201
+ sentRequestSnapshot: attemptedRequestSnapshot(preparedRequestSnapshot, transport),
202
+ transport,
203
+ }),
204
+ };
205
+ }
206
+ const answer = result.answers.first_task;
207
+ const selectedLabel = answer?.type === "choice" ? answer.choice : undefined;
208
+ const selectedIndex = labels.indexOf(selectedLabel ?? "");
209
+ if (selectedIndex < 0) {
210
+ const transport = auditTransport(result.receipt);
211
+ return {
212
+ advice: null,
213
+ audit: baseAudit({
214
+ status: "fallback",
215
+ reasonCode: "invalid-response",
216
+ candidates,
217
+ filteredCandidates: input.filteredCandidates,
218
+ eligibility: input.eligibility,
219
+ preparedRequestSnapshot,
220
+ sentRequestSnapshot: attemptedRequestSnapshot(preparedRequestSnapshot, transport),
221
+ transport,
222
+ }),
223
+ };
224
+ }
225
+ const selected = candidates[selectedIndex];
226
+ if (!selected) {
227
+ const transport = auditTransport(result.receipt);
228
+ return {
229
+ advice: null,
230
+ audit: baseAudit({
231
+ status: "fallback",
232
+ reasonCode: "invalid-response",
233
+ candidates,
234
+ filteredCandidates: input.filteredCandidates,
235
+ eligibility: input.eligibility,
236
+ preparedRequestSnapshot,
237
+ sentRequestSnapshot: attemptedRequestSnapshot(preparedRequestSnapshot, transport),
238
+ transport,
239
+ }),
240
+ };
241
+ }
242
+ const taskOrder = [
243
+ selected.taskId,
244
+ ...candidates
245
+ .filter(({ taskId }) => taskId !== selected.taskId)
246
+ .map(({ taskId }) => taskId),
247
+ ];
248
+ const transport = auditTransport(result.receipt);
249
+ const audit = baseAudit({
250
+ status: "answered",
251
+ reasonCode: null,
252
+ candidates,
253
+ filteredCandidates: input.filteredCandidates,
254
+ eligibility: input.eligibility,
255
+ preparedRequestSnapshot,
256
+ sentRequestSnapshot: attemptedRequestSnapshot(preparedRequestSnapshot, transport),
257
+ transport,
258
+ suggestedTaskIds: taskOrder,
259
+ });
260
+ return {
261
+ advice: {
262
+ taskOrder,
263
+ evidenceRef: `jev:schedule-order:${inputDigest}`,
264
+ },
265
+ audit,
266
+ };
267
+ }
268
+ export function finalizeJevTaskScheduleAdviceV1(audit, plan) {
269
+ if (audit.status !== "answered")
270
+ return audit;
271
+ const suggested = new Set(audit.suggestedTaskIds);
272
+ const actualCandidateOrder = (plan.waves[0]?.candidateTaskIds ?? []).filter((taskId) => suggested.has(taskId));
273
+ const adopted = actualCandidateOrder.length === audit.suggestedTaskIds.length &&
274
+ actualCandidateOrder.every((taskId, index) => taskId === audit.suggestedTaskIds[index]);
275
+ const adoptedTaskIds = adopted ? [...audit.suggestedTaskIds] : [];
276
+ const overriddenTaskIds = adopted ? [] : [...audit.suggestedTaskIds];
277
+ return {
278
+ ...audit,
279
+ adoptedTaskIds,
280
+ overriddenTaskIds,
281
+ };
282
+ }
283
+ export function finalizeJevTaskScheduleEligibilityV1(audit, candidates, filteredCandidates, eligibility, eligibilityChanged) {
284
+ return {
285
+ ...audit,
286
+ finalEligibleCandidates: {
287
+ candidateTaskIds: candidates.map(({ taskId }) => taskId),
288
+ filteredCandidates: [...filteredCandidates],
289
+ eligibility: {
290
+ approvalPassedTaskIds: [...eligibility.approvalPassedTaskIds],
291
+ worktreePassedTaskIds: [...eligibility.worktreePassedTaskIds],
292
+ activeLeaseCheckAt: eligibility.activeLeaseCheckAt,
293
+ },
294
+ },
295
+ eligibilityChanged,
296
+ };
297
+ }
298
+ export function supersedeJevTaskScheduleAdviceV1(audit) {
299
+ if (audit.status !== "answered")
300
+ return audit;
301
+ return {
302
+ ...audit,
303
+ status: "superseded",
304
+ reasonCode: "eligibility-changed",
305
+ adoptedTaskIds: [],
306
+ overriddenTaskIds: [...audit.suggestedTaskIds],
307
+ };
308
+ }
309
+ /** Rejects an answer when the project egress policy is no longer permissive. */
310
+ export function applyJevTaskScheduleEgressFallbackV1(audit, reasonCode) {
311
+ return {
312
+ ...audit,
313
+ status: audit.status === "answered" || audit.status === "superseded"
314
+ ? "superseded"
315
+ : "fallback",
316
+ reasonCode,
317
+ adoptedTaskIds: [],
318
+ overriddenTaskIds: audit.suggestedTaskIds.length > 0
319
+ ? [...audit.suggestedTaskIds]
320
+ : [...audit.overriddenTaskIds],
321
+ };
322
+ }
323
+ //# sourceMappingURL=scheduler-advice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler-advice.js","sourceRoot":"","sources":["../../../src/pactile/jev/scheduler-advice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { JevCallOptionsV1, JevTransportConfigV1, JevTransportResultV1 } from "./contracts.js";
2
+ export { JEV_ENDPOINT_V1 } from "./contracts.js";
3
+ export type { JevAnswerV1, JevCallOptionsV1, JevConfidenceReceiptV1, JevConfidenceUnavailableReasonV1, JevConfidenceValueV1, JevDecisionRequestV1, JevEgressAuthorizationV1, JevFallbackCodeV1, JevQuestionV1, JevReceiptV1, JevTransportConfigV1, JevTransportResultV1, } from "./contracts.js";
4
+ /** The response is a suggestion only, never Kernel, Review, CI, or authorization authority. */
5
+ export declare function createJevTransportV1(config?: JevTransportConfigV1): (raw: unknown, options?: JevCallOptionsV1) => Promise<JevTransportResultV1>;
6
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/pactile/jev/transport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAEhB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,gCAAgC,EAChC,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,oBAAyB,IAElE,KAAK,OAAO,EACZ,UAAU,gBAAgB,KACzB,OAAO,CAAC,oBAAoB,CAAC,CA6FjC"}
@@ -0,0 +1,87 @@
1
+ import process from "node:process";
2
+ import { fail, MAX_DEADLINE_MS } from "./contracts.js";
3
+ import { egressFailure, validateInput } from "./outbound.js";
4
+ import { requestJevHttpV1 } from "./http.js";
5
+ import { costEstimate, decisionConfidence, parseSuccess, readJevConfidenceReceiptV1, unavailableJevConfidenceReceiptV1, } from "./response.js";
6
+ export { JEV_ENDPOINT_V1 } from "./contracts.js";
7
+ /** The response is a suggestion only, never Kernel, Review, CI, or authorization authority. */
8
+ export function createJevTransportV1(config = {}) {
9
+ return async function requestJevDecisionV1(raw, options) {
10
+ if (Number(process.versions.node.split(".")[0]) < 20)
11
+ return fail("runtime-unsupported");
12
+ const key = config.apiKey;
13
+ if (typeof key !== "string" || key.length === 0)
14
+ return fail("configuration-missing");
15
+ if (key.length < 8 || key.length > 512 || !/^[\x21-\x7E]+$/u.test(key))
16
+ return fail("configuration-invalid");
17
+ const deadlineMs = config.deadlineMs ?? 2_500;
18
+ const maxRetries = config.maxRetries ?? 1;
19
+ if (!Number.isSafeInteger(deadlineMs) ||
20
+ deadlineMs < 1 ||
21
+ deadlineMs > MAX_DEADLINE_MS ||
22
+ !Number.isSafeInteger(maxRetries) ||
23
+ maxRetries < 0 ||
24
+ maxRetries > 1)
25
+ return fail("configuration-invalid");
26
+ const input = validateInput(raw, key);
27
+ if (!input.ok)
28
+ return fail(input.code);
29
+ const unavailableConfidence = unavailableJevConfidenceReceiptV1(Object.keys(input.request.questions));
30
+ const failForInput = (code, info = {}) => fail(code, { confidence: unavailableConfidence, ...info });
31
+ if (options === undefined)
32
+ return failForInput("egress-denied");
33
+ const policyError = egressFailure(options.egress, (input.request.sourceSnippets?.length ?? 0) > 0);
34
+ if (policyError !== null)
35
+ return failForInput(policyError);
36
+ const minConfidence = options.minimumDecisionConfidence ?? 0.65;
37
+ if (!Number.isFinite(minConfidence) ||
38
+ minConfidence < 0 ||
39
+ minConfidence > 1)
40
+ return failForInput("configuration-invalid");
41
+ if (options.signal?.aborted)
42
+ return failForInput("cancelled");
43
+ const fetchImpl = config.fetchImpl ?? globalThis.fetch;
44
+ if (typeof fetchImpl !== "function")
45
+ return failForInput("runtime-unsupported");
46
+ const http = await requestJevHttpV1({
47
+ apiKey: key,
48
+ body: input.body,
49
+ deadlineMs,
50
+ maxRetries,
51
+ fetchImpl,
52
+ signal: options.signal,
53
+ });
54
+ if (!http.ok)
55
+ return failForInput(http.reasonCode, http.metrics);
56
+ const confidence = readJevConfidenceReceiptV1(http.payload, input.request.questions);
57
+ const result = parseSuccess(http.payload, input.request.questions);
58
+ if (result === null || result.model.includes(key))
59
+ return failForInput("invalid-response", {
60
+ ...http.metrics,
61
+ confidence,
62
+ });
63
+ const receiptData = {
64
+ ...http.metrics,
65
+ model: result.model,
66
+ inputTokens: result.inputTokens,
67
+ outputTokens: result.outputTokens,
68
+ estimatedInputCostMicrousd: costEstimate(result.inputTokens),
69
+ confidence,
70
+ };
71
+ if (Object.values(result.answers).some((answer) => decisionConfidence(answer) < minConfidence))
72
+ return failForInput("low-confidence", receiptData);
73
+ const receipt = Object.freeze({
74
+ provider: "typesafe-jev",
75
+ outcome: "answered",
76
+ reasonCode: null,
77
+ ...receiptData,
78
+ });
79
+ return Object.freeze({
80
+ status: "answered",
81
+ answers: result.answers,
82
+ fallback: null,
83
+ receipt,
84
+ });
85
+ };
86
+ }
87
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/pactile/jev/transport.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOvD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,0BAA0B,EAC1B,iCAAiC,GAClC,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAgBjD,+FAA+F;AAC/F,MAAM,UAAU,oBAAoB,CAAC,SAA+B,EAAE;IACpE,OAAO,KAAK,UAAU,oBAAoB,CACxC,GAAY,EACZ,OAA0B;QAE1B,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;YAClD,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAC7C,OAAO,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;YACpE,OAAO,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC;QAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1C,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;YACjC,UAAU,GAAG,CAAC;YACd,UAAU,GAAG,eAAe;YAC5B,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;YACjC,UAAU,GAAG,CAAC;YACd,UAAU,GAAG,CAAC;YAEd,OAAO,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,qBAAqB,GAAG,iCAAiC,CAC7D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CACrC,CAAC;QACF,MAAM,YAAY,GAAG,CACnB,IAAgC,EAChC,OAAmC,EAAE,EACf,EAAE,CACxB,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,YAAY,CAAC,eAAe,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,aAAa,CAC/B,OAAO,CAAC,MAAM,EACd,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAChD,CAAC;QACF,IAAI,WAAW,KAAK,IAAI;YAAE,OAAO,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,OAAO,CAAC,yBAAyB,IAAI,IAAI,CAAC;QAChE,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC/B,aAAa,GAAG,CAAC;YACjB,aAAa,GAAG,CAAC;YAEjB,OAAO,YAAY,CAAC,uBAAuB,CAAC,CAAC;QAC/C,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,OAAO,YAAY,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC;QACvD,IAAI,OAAO,SAAS,KAAK,UAAU;YACjC,OAAO,YAAY,CAAC,qBAAqB,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC;YAClC,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU;YACV,UAAU;YACV,SAAS;YACT,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,0BAA0B,CAC3C,IAAI,CAAC,OAAO,EACZ,KAAK,CAAC,OAAO,CAAC,SAAS,CACxB,CAAC;QACF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC/C,OAAO,YAAY,CAAC,kBAAkB,EAAE;gBACtC,GAAG,IAAI,CAAC,OAAO;gBACf,UAAU;aACX,CAAC,CAAC;QACL,MAAM,WAAW,GAAG;YAClB,GAAG,IAAI,CAAC,OAAO;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,0BAA0B,EAAE,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5D,UAAU;SACX,CAAC;QACF,IACE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAChC,CAAC,MAAM,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,aAAa,CACvD;YAED,OAAO,YAAY,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACrD,MAAM,OAAO,GAAiB,MAAM,CAAC,MAAM,CAAC;YAC1C,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,UAAU;YACnB,UAAU,EAAE,IAAI;YAChB,GAAG,WAAW;SACf,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,IAAI;YACd,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface DeferredLiveWrite {
2
+ readonly content: string;
3
+ readonly executable: boolean;
4
+ readonly original: Buffer | null;
5
+ readonly originalMode?: number;
6
+ }
7
+ export declare function clearDeferredLivePlan(root: string): void;
8
+ /** Save a retryable plan before the canonical commit; it remains private runtime state. */
9
+ export declare function prepareDeferredLivePlan(root: string, sourceGenerationId: string, writes: ReadonlyMap<string, DeferredLiveWrite>): void;
10
+ export declare function commitDeferredLivePlan(root: string, generationId: string): void;
11
+ /** Resume only when the recorded canonical generation is still active. */
12
+ export declare function resumeDeferredLivePlan(root: string, activeGenerationId: string | null): boolean;
13
+ /** Capture the project-file bytes that the update plan actually reviewed. */
14
+ export declare function captureDeferredLiveWrite(root: string, relativePath: string, content: string, executable: boolean): DeferredLiveWrite;
15
+ /** Prevalidate the whole batch, then restore prior bytes if any write fails. */
16
+ export declare function applyDeferredLiveWrites(root: string, writes: ReadonlyMap<string, DeferredLiveWrite>): void;
17
+ //# sourceMappingURL=deferred-live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferred-live.d.ts","sourceRoot":"","sources":["../../../src/pactile/lifecycle/deferred-live.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AA4CD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGxD;AAED,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAUtI;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAI/E;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAkB/F;AAsBD,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,iBAAiB,CAMpI;AAED,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,IAAI,CA+C1G"}
@@ -0,0 +1,173 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { assertCanonicalWriteTarget } from "../runtime/paths.js";
5
+ function pendingPath(root) {
6
+ return assertCanonicalWriteTarget(root, ".pactile/.runtime/update-deferred-live.json");
7
+ }
8
+ function readPending(root) {
9
+ const file = pendingPath(root);
10
+ if (!fs.existsSync(file))
11
+ return null;
12
+ const value = JSON.parse(fs.readFileSync(file, "utf8"));
13
+ if (!value || typeof value !== "object" || Array.isArray(value))
14
+ throw new Error("Invalid pending deferred live update");
15
+ const plan = value;
16
+ if (plan.schemaVersion !== 1 || typeof plan.sourceGenerationId !== "string" || !plan.sourceGenerationId
17
+ || (plan.committedGenerationId !== null && (typeof plan.committedGenerationId !== "string" || !plan.committedGenerationId))
18
+ || !Array.isArray(plan.writes) || plan.writes.some((entry) => !entry || typeof entry.path !== "string"
19
+ || typeof entry.content !== "string" || typeof entry.executable !== "boolean"
20
+ || (entry.original !== null && typeof entry.original !== "string")
21
+ || (entry.originalMode !== undefined && (!Number.isInteger(entry.originalMode) || entry.originalMode < 0 || entry.originalMode > 0o7777)))) {
22
+ throw new Error("Invalid pending deferred live update");
23
+ }
24
+ if (new Set(plan.writes.map((entry) => entry.path)).size !== plan.writes.length)
25
+ throw new Error("Invalid pending deferred live update");
26
+ return plan;
27
+ }
28
+ function writePending(root, plan) {
29
+ const file = pendingPath(root);
30
+ fs.mkdirSync(path.dirname(file), { recursive: true });
31
+ assertCanonicalWriteTarget(root, file);
32
+ const temporary = assertCanonicalWriteTarget(root, `${file}.${randomUUID()}.tmp`);
33
+ try {
34
+ fs.writeFileSync(temporary, `${JSON.stringify(plan)}\n`, { encoding: "utf8", flag: "wx", mode: 0o600 });
35
+ fs.renameSync(temporary, file);
36
+ }
37
+ finally {
38
+ if (fs.existsSync(temporary))
39
+ fs.unlinkSync(temporary);
40
+ }
41
+ }
42
+ export function clearDeferredLivePlan(root) {
43
+ const file = pendingPath(root);
44
+ if (fs.existsSync(file))
45
+ fs.unlinkSync(file);
46
+ }
47
+ /** Save a retryable plan before the canonical commit; it remains private runtime state. */
48
+ export function prepareDeferredLivePlan(root, sourceGenerationId, writes) {
49
+ if (!writes.size)
50
+ return;
51
+ if (readPending(root))
52
+ throw new Error("A deferred live update is already pending");
53
+ const plan = {
54
+ schemaVersion: 1, sourceGenerationId, committedGenerationId: null,
55
+ writes: [...writes].map(([relativePath, write]) => ({ path: relativePath, content: write.content,
56
+ executable: write.executable, original: write.original?.toString("base64") ?? null,
57
+ ...(write.originalMode !== undefined ? { originalMode: write.originalMode } : {}) })),
58
+ };
59
+ writePending(root, plan);
60
+ }
61
+ export function commitDeferredLivePlan(root, generationId) {
62
+ const plan = readPending(root);
63
+ if (!plan)
64
+ return;
65
+ writePending(root, { ...plan, committedGenerationId: generationId });
66
+ }
67
+ /** Resume only when the recorded canonical generation is still active. */
68
+ export function resumeDeferredLivePlan(root, activeGenerationId) {
69
+ const plan = readPending(root);
70
+ if (!plan)
71
+ return false;
72
+ if (plan.committedGenerationId === null && plan.sourceGenerationId === activeGenerationId) {
73
+ clearDeferredLivePlan(root);
74
+ return false;
75
+ }
76
+ if (plan.committedGenerationId === null || plan.committedGenerationId !== activeGenerationId) {
77
+ throw new Error("Deferred live update needs review: canonical generation changed outside its recorded commit");
78
+ }
79
+ const writes = new Map(plan.writes.map((entry) => [entry.path, {
80
+ content: entry.content, executable: entry.executable,
81
+ original: entry.original === null ? null : Buffer.from(entry.original, "base64"),
82
+ ...(entry.originalMode !== undefined ? { originalMode: entry.originalMode } : {}),
83
+ }]));
84
+ applyDeferredLiveWrites(root, writes);
85
+ clearDeferredLivePlan(root);
86
+ return true;
87
+ }
88
+ function liveTarget(root, relativePath) {
89
+ if (!relativePath || path.isAbsolute(relativePath) || relativePath.startsWith("/") || relativePath.startsWith("\\")) {
90
+ throw new Error(`Invalid deferred live path: ${relativePath}`);
91
+ }
92
+ const resolvedRoot = path.resolve(root);
93
+ const target = path.resolve(resolvedRoot, ...relativePath.replaceAll("\\", "/").split("/"));
94
+ const within = path.relative(resolvedRoot, target);
95
+ if (!within || within === ".." || within.startsWith(`..${path.sep}`) || path.isAbsolute(within)) {
96
+ throw new Error(`Deferred live path escapes project: ${relativePath}`);
97
+ }
98
+ let cursor = resolvedRoot;
99
+ for (const segment of within.split(path.sep)) {
100
+ cursor = path.join(cursor, segment);
101
+ if (fs.lstatSync(cursor, { throwIfNoEntry: false })?.isSymbolicLink()) {
102
+ throw new Error(`Deferred live path crosses a symlink: ${relativePath}`);
103
+ }
104
+ }
105
+ return target;
106
+ }
107
+ /** Capture the project-file bytes that the update plan actually reviewed. */
108
+ export function captureDeferredLiveWrite(root, relativePath, content, executable) {
109
+ const target = liveTarget(root, relativePath);
110
+ const stat = fs.statSync(target, { throwIfNoEntry: false });
111
+ if (stat && (!stat.isFile() || stat.nlink !== 1))
112
+ throw new Error(`Deferred live target is not a standalone file: ${relativePath}`);
113
+ return { content, executable, original: stat ? fs.readFileSync(target) : null,
114
+ ...(stat ? { originalMode: stat.mode & 0o7777 } : {}) };
115
+ }
116
+ /** Prevalidate the whole batch, then restore prior bytes if any write fails. */
117
+ export function applyDeferredLiveWrites(root, writes) {
118
+ const planned = [...writes].map(([relativePath, write]) => {
119
+ const target = liveTarget(root, relativePath);
120
+ const stat = fs.statSync(target, { throwIfNoEntry: false });
121
+ if (stat && (!stat.isFile() || stat.nlink !== 1))
122
+ throw new Error(`Deferred live target is not a standalone file: ${relativePath}`);
123
+ const actual = stat ? fs.readFileSync(target) : null;
124
+ const intended = Buffer.from(write.content);
125
+ const matches = actual === null ? write.original === null : write.original?.equals(actual) === true;
126
+ if (!matches && actual?.equals(intended) !== true) {
127
+ throw new Error(`Deferred live file changed after planning: ${relativePath}`);
128
+ }
129
+ return { relativePath, target, write, alreadyApplied: actual?.equals(intended) === true };
130
+ });
131
+ const attempted = [];
132
+ try {
133
+ for (const entry of planned) {
134
+ if (entry.alreadyApplied)
135
+ continue;
136
+ fs.mkdirSync(path.dirname(entry.target), { recursive: true });
137
+ attempted.push(entry);
138
+ fs.writeFileSync(entry.target, entry.write.content);
139
+ if (entry.write.executable)
140
+ fs.chmodSync(entry.target, 0o755);
141
+ }
142
+ }
143
+ catch (error) {
144
+ const rollbackErrors = [];
145
+ for (const entry of attempted.reverse()) {
146
+ try {
147
+ const actual = fs.statSync(entry.target, { throwIfNoEntry: false })?.isFile() ? fs.readFileSync(entry.target) : null;
148
+ const intended = Buffer.from(entry.write.content);
149
+ if (actual !== null && !actual.equals(intended)
150
+ && entry.write.original?.equals(actual) !== true) {
151
+ rollbackErrors.push(`${entry.relativePath}: changed during rollback; preserved current bytes`);
152
+ continue;
153
+ }
154
+ if (entry.write.original === null) {
155
+ if (actual !== null)
156
+ fs.unlinkSync(entry.target);
157
+ }
158
+ else if (actual?.equals(entry.write.original) !== true) {
159
+ fs.writeFileSync(entry.target, entry.write.original);
160
+ if (entry.write.originalMode !== undefined)
161
+ fs.chmodSync(entry.target, entry.write.originalMode);
162
+ }
163
+ }
164
+ catch (rollbackError) {
165
+ rollbackErrors.push(`${entry.relativePath}: ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`);
166
+ }
167
+ }
168
+ if (rollbackErrors.length)
169
+ throw new Error(`Deferred live write failed and rollback was incomplete: ${rollbackErrors.join("; ")}`, { cause: error });
170
+ throw error;
171
+ }
172
+ }
173
+ //# sourceMappingURL=deferred-live.js.map