@blxzer/pactile 0.5.0 → 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 (1445) hide show
  1. package/LICENSE +235 -235
  2. package/README.md +123 -111
  3. package/README.zh-CN.md +120 -111
  4. package/dist/bin/compat-warning.d.ts +2 -0
  5. package/dist/bin/compat-warning.d.ts.map +1 -0
  6. package/dist/bin/compat-warning.js +8 -0
  7. package/dist/bin/compat-warning.js.map +1 -0
  8. package/dist/bin/cstl.d.ts +3 -0
  9. package/dist/bin/cstl.d.ts.map +1 -0
  10. package/dist/bin/cstl.js +5 -0
  11. package/dist/bin/cstl.js.map +1 -0
  12. package/dist/bin/pactile.d.ts +3 -0
  13. package/dist/bin/pactile.d.ts.map +1 -0
  14. package/dist/bin/pactile.js +4 -0
  15. package/dist/bin/pactile.js.map +1 -0
  16. package/dist/cli/index.d.ts.map +1 -1
  17. package/dist/cli/index.js +149 -40
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/commands/capability.d.ts +3 -0
  20. package/dist/commands/capability.d.ts.map +1 -0
  21. package/dist/commands/capability.js +129 -0
  22. package/dist/commands/capability.js.map +1 -0
  23. package/dist/commands/codex.d.ts +3 -0
  24. package/dist/commands/codex.d.ts.map +1 -0
  25. package/dist/commands/codex.js +102 -0
  26. package/dist/commands/codex.js.map +1 -0
  27. package/dist/commands/context.d.ts +5 -0
  28. package/dist/commands/context.d.ts.map +1 -0
  29. package/dist/commands/context.js +598 -0
  30. package/dist/commands/context.js.map +1 -0
  31. package/dist/commands/detach.d.ts.map +1 -1
  32. package/dist/commands/detach.js +5 -4
  33. package/dist/commands/detach.js.map +1 -1
  34. package/dist/commands/init.d.ts +0 -20
  35. package/dist/commands/init.d.ts.map +1 -1
  36. package/dist/commands/init.js +736 -551
  37. package/dist/commands/init.js.map +1 -1
  38. package/dist/commands/legacy-task.d.ts +3 -0
  39. package/dist/commands/legacy-task.d.ts.map +1 -0
  40. package/dist/commands/legacy-task.js +295 -0
  41. package/dist/commands/legacy-task.js.map +1 -0
  42. package/dist/commands/migrate.js +1 -1
  43. package/dist/commands/migrate.js.map +1 -1
  44. package/dist/commands/parallel.d.ts +2 -0
  45. package/dist/commands/parallel.d.ts.map +1 -0
  46. package/dist/commands/parallel.js +26 -0
  47. package/dist/commands/parallel.js.map +1 -0
  48. package/dist/commands/pi.d.ts +4 -0
  49. package/dist/commands/pi.d.ts.map +1 -0
  50. package/dist/commands/pi.js +417 -0
  51. package/dist/commands/pi.js.map +1 -0
  52. package/dist/commands/session.d.ts +2 -0
  53. package/dist/commands/session.d.ts.map +1 -0
  54. package/dist/commands/session.js +293 -0
  55. package/dist/commands/session.js.map +1 -0
  56. package/dist/commands/task-schedule.d.ts +17 -0
  57. package/dist/commands/task-schedule.d.ts.map +1 -0
  58. package/dist/commands/task-schedule.js +395 -0
  59. package/dist/commands/task-schedule.js.map +1 -0
  60. package/dist/commands/task-verify-plan.d.ts +3 -0
  61. package/dist/commands/task-verify-plan.d.ts.map +1 -0
  62. package/dist/commands/task-verify-plan.js +503 -0
  63. package/dist/commands/task-verify-plan.js.map +1 -0
  64. package/dist/commands/task-worktree-close.d.ts +4 -0
  65. package/dist/commands/task-worktree-close.d.ts.map +1 -0
  66. package/dist/commands/task-worktree-close.js +81 -0
  67. package/dist/commands/task-worktree-close.js.map +1 -0
  68. package/dist/commands/task.d.ts +6 -0
  69. package/dist/commands/task.d.ts.map +1 -0
  70. package/dist/commands/task.js +2215 -0
  71. package/dist/commands/task.js.map +1 -0
  72. package/dist/commands/tile-selection.d.ts +3 -0
  73. package/dist/commands/tile-selection.d.ts.map +1 -0
  74. package/dist/commands/tile-selection.js +174 -0
  75. package/dist/commands/tile-selection.js.map +1 -0
  76. package/dist/commands/update.d.ts +4 -2
  77. package/dist/commands/update.d.ts.map +1 -1
  78. package/dist/commands/update.js +208 -100
  79. package/dist/commands/update.js.map +1 -1
  80. package/dist/commands/workflow.d.ts.map +1 -1
  81. package/dist/commands/workflow.js +1 -2
  82. package/dist/commands/workflow.js.map +1 -1
  83. package/dist/commands/worktree.d.ts +4 -0
  84. package/dist/commands/worktree.d.ts.map +1 -0
  85. package/dist/commands/worktree.js +198 -0
  86. package/dist/commands/worktree.js.map +1 -0
  87. package/dist/configurators/index.d.ts +5 -51
  88. package/dist/configurators/index.d.ts.map +1 -1
  89. package/dist/configurators/index.js +9 -140
  90. package/dist/configurators/index.js.map +1 -1
  91. package/dist/configurators/shared.d.ts +7 -66
  92. package/dist/configurators/shared.d.ts.map +1 -1
  93. package/dist/configurators/shared.js +17 -262
  94. package/dist/configurators/shared.js.map +1 -1
  95. package/dist/configurators/workflow.d.ts +5 -6
  96. package/dist/configurators/workflow.d.ts.map +1 -1
  97. package/dist/configurators/workflow.js +11 -39
  98. package/dist/configurators/workflow.js.map +1 -1
  99. package/dist/constants/paths.d.ts +1 -5
  100. package/dist/constants/paths.d.ts.map +1 -1
  101. package/dist/constants/paths.js +1 -5
  102. package/dist/constants/paths.js.map +1 -1
  103. package/dist/core/compat/environment.d.ts +42 -0
  104. package/dist/core/compat/environment.d.ts.map +1 -0
  105. package/dist/core/compat/environment.js +83 -0
  106. package/dist/core/compat/environment.js.map +1 -0
  107. package/dist/core/compat/index.d.ts +2 -0
  108. package/dist/core/compat/index.d.ts.map +1 -0
  109. package/dist/core/compat/index.js +2 -0
  110. package/dist/core/compat/index.js.map +1 -0
  111. package/dist/core/index.d.ts +4 -0
  112. package/dist/core/index.d.ts.map +1 -0
  113. package/dist/core/index.js +6 -0
  114. package/dist/core/index.js.map +1 -0
  115. package/dist/core/pactile/bounded-capabilities.d.ts +127 -0
  116. package/dist/core/pactile/bounded-capabilities.d.ts.map +1 -0
  117. package/dist/core/pactile/bounded-capabilities.js +188 -0
  118. package/dist/core/pactile/bounded-capabilities.js.map +1 -0
  119. package/dist/core/pactile/capability.d.ts +65 -0
  120. package/dist/core/pactile/capability.d.ts.map +1 -0
  121. package/dist/core/pactile/capability.js +199 -0
  122. package/dist/core/pactile/capability.js.map +1 -0
  123. package/dist/core/pactile/index.d.ts +16 -0
  124. package/dist/core/pactile/index.d.ts.map +1 -0
  125. package/dist/core/pactile/index.js +14 -0
  126. package/dist/core/pactile/index.js.map +1 -0
  127. package/dist/core/pactile/lifecycle.d.ts +106 -0
  128. package/dist/core/pactile/lifecycle.d.ts.map +1 -0
  129. package/dist/core/pactile/lifecycle.js +607 -0
  130. package/dist/core/pactile/lifecycle.js.map +1 -0
  131. package/dist/core/pactile/middleware/index.d.ts +3 -0
  132. package/dist/core/pactile/middleware/index.d.ts.map +1 -0
  133. package/dist/core/pactile/middleware/index.js +2 -0
  134. package/dist/core/pactile/middleware/index.js.map +1 -0
  135. package/dist/core/pactile/middleware/redaction.d.ts +4 -0
  136. package/dist/core/pactile/middleware/redaction.d.ts.map +1 -0
  137. package/dist/core/pactile/middleware/redaction.js +34 -0
  138. package/dist/core/pactile/middleware/redaction.js.map +1 -0
  139. package/dist/core/pactile/middleware/resolver.d.ts +62 -0
  140. package/dist/core/pactile/middleware/resolver.d.ts.map +1 -0
  141. package/dist/core/pactile/middleware/resolver.js +803 -0
  142. package/dist/core/pactile/middleware/resolver.js.map +1 -0
  143. package/dist/core/pactile/projection.d.ts +81 -0
  144. package/dist/core/pactile/projection.d.ts.map +1 -0
  145. package/dist/core/pactile/projection.js +399 -0
  146. package/dist/core/pactile/projection.js.map +1 -0
  147. package/dist/core/pactile/provider.d.ts +81 -0
  148. package/dist/core/pactile/provider.d.ts.map +1 -0
  149. package/dist/core/pactile/provider.js +313 -0
  150. package/dist/core/pactile/provider.js.map +1 -0
  151. package/dist/core/pactile/runtime.d.ts +56 -0
  152. package/dist/core/pactile/runtime.d.ts.map +1 -0
  153. package/dist/core/pactile/runtime.js +176 -0
  154. package/dist/core/pactile/runtime.js.map +1 -0
  155. package/dist/core/pactile/tile-compiler-types.d.ts +32 -0
  156. package/dist/core/pactile/tile-compiler-types.d.ts.map +1 -0
  157. package/dist/core/pactile/tile-compiler-types.js +2 -0
  158. package/dist/core/pactile/tile-compiler-types.js.map +1 -0
  159. package/dist/core/pactile/tile.d.ts +71 -0
  160. package/dist/core/pactile/tile.d.ts.map +1 -0
  161. package/dist/core/pactile/tile.js +228 -0
  162. package/dist/core/pactile/tile.js.map +1 -0
  163. package/dist/core/pactile/trace-runtime/index.d.ts +38 -0
  164. package/dist/core/pactile/trace-runtime/index.d.ts.map +1 -0
  165. package/dist/core/pactile/trace-runtime/index.js +292 -0
  166. package/dist/core/pactile/trace-runtime/index.js.map +1 -0
  167. package/dist/core/pactile/trace.d.ts +42 -0
  168. package/dist/core/pactile/trace.d.ts.map +1 -0
  169. package/dist/core/pactile/trace.js +221 -0
  170. package/dist/core/pactile/trace.js.map +1 -0
  171. package/dist/core/pactile/validation.d.ts +91 -0
  172. package/dist/core/pactile/validation.d.ts.map +1 -0
  173. package/dist/core/pactile/validation.js +301 -0
  174. package/dist/core/pactile/validation.js.map +1 -0
  175. package/dist/core/task/adapter-middleware.d.ts +122 -0
  176. package/dist/core/task/adapter-middleware.d.ts.map +1 -0
  177. package/dist/core/task/adapter-middleware.js +476 -0
  178. package/dist/core/task/adapter-middleware.js.map +1 -0
  179. package/dist/core/task/compat.d.ts +7 -0
  180. package/dist/core/task/compat.d.ts.map +1 -0
  181. package/dist/core/task/compat.js +2 -0
  182. package/dist/core/task/compat.js.map +1 -0
  183. package/dist/core/task/contract-migrate.d.ts +29 -0
  184. package/dist/core/task/contract-migrate.d.ts.map +1 -0
  185. package/dist/core/task/contract-migrate.js +207 -0
  186. package/dist/core/task/contract-migrate.js.map +1 -0
  187. package/dist/core/task/full-quality.d.ts +89 -0
  188. package/dist/core/task/full-quality.d.ts.map +1 -0
  189. package/dist/core/task/full-quality.js +379 -0
  190. package/dist/core/task/full-quality.js.map +1 -0
  191. package/dist/core/task/index.d.ts +34 -0
  192. package/dist/core/task/index.d.ts.map +1 -0
  193. package/dist/core/task/index.js +21 -0
  194. package/dist/core/task/index.js.map +1 -0
  195. package/dist/core/task/kernel-cli.d.ts +64 -0
  196. package/dist/core/task/kernel-cli.d.ts.map +1 -0
  197. package/dist/core/task/kernel-cli.js +429 -0
  198. package/dist/core/task/kernel-cli.js.map +1 -0
  199. package/dist/core/task/kernel-contract.d.ts +167 -0
  200. package/dist/core/task/kernel-contract.d.ts.map +1 -0
  201. package/dist/core/task/kernel-contract.js +523 -0
  202. package/dist/core/task/kernel-contract.js.map +1 -0
  203. package/dist/core/task/kernel-store.d.ts +136 -0
  204. package/dist/core/task/kernel-store.d.ts.map +1 -0
  205. package/dist/core/task/kernel-store.js +957 -0
  206. package/dist/core/task/kernel-store.js.map +1 -0
  207. package/dist/core/task/kernel-surface.d.ts +70 -0
  208. package/dist/core/task/kernel-surface.d.ts.map +1 -0
  209. package/dist/core/task/kernel-surface.js +121 -0
  210. package/dist/core/task/kernel-surface.js.map +1 -0
  211. package/dist/core/task/legacy-task-migration-reader.d.ts +137 -0
  212. package/dist/core/task/legacy-task-migration-reader.d.ts.map +1 -0
  213. package/dist/core/task/legacy-task-migration-reader.js +512 -0
  214. package/dist/core/task/legacy-task-migration-reader.js.map +1 -0
  215. package/dist/core/task/legacy-task-migration.d.ts +105 -0
  216. package/dist/core/task/legacy-task-migration.d.ts.map +1 -0
  217. package/dist/core/task/legacy-task-migration.js +562 -0
  218. package/dist/core/task/legacy-task-migration.js.map +1 -0
  219. package/dist/core/task/legacy-task-overlay-durable-io.d.ts +18 -0
  220. package/dist/core/task/legacy-task-overlay-durable-io.d.ts.map +1 -0
  221. package/dist/core/task/legacy-task-overlay-durable-io.js +66 -0
  222. package/dist/core/task/legacy-task-overlay-durable-io.js.map +1 -0
  223. package/dist/core/task/legacy-task-reconciliation-reader.d.ts +26 -0
  224. package/dist/core/task/legacy-task-reconciliation-reader.d.ts.map +1 -0
  225. package/dist/core/task/legacy-task-reconciliation-reader.js +324 -0
  226. package/dist/core/task/legacy-task-reconciliation-reader.js.map +1 -0
  227. package/dist/core/task/legacy-task-v2-import.d.ts +67 -0
  228. package/dist/core/task/legacy-task-v2-import.d.ts.map +1 -0
  229. package/dist/core/task/legacy-task-v2-import.js +1046 -0
  230. package/dist/core/task/legacy-task-v2-import.js.map +1 -0
  231. package/dist/core/task/lite-context-pack.d.ts +71 -0
  232. package/dist/core/task/lite-context-pack.d.ts.map +1 -0
  233. package/dist/core/task/lite-context-pack.js +175 -0
  234. package/dist/core/task/lite-context-pack.js.map +1 -0
  235. package/dist/core/task/ondemand-topology.d.ts +108 -0
  236. package/dist/core/task/ondemand-topology.d.ts.map +1 -0
  237. package/dist/core/task/ondemand-topology.js +456 -0
  238. package/dist/core/task/ondemand-topology.js.map +1 -0
  239. package/dist/core/task/p36-artifact-migrate.d.ts +58 -0
  240. package/dist/core/task/p36-artifact-migrate.d.ts.map +1 -0
  241. package/dist/core/task/p36-artifact-migrate.js +293 -0
  242. package/dist/core/task/p36-artifact-migrate.js.map +1 -0
  243. package/dist/core/task/p36-wave-c.d.ts +39 -0
  244. package/dist/core/task/p36-wave-c.d.ts.map +1 -0
  245. package/dist/core/task/p36-wave-c.js +100 -0
  246. package/dist/core/task/p36-wave-c.js.map +1 -0
  247. package/dist/core/task/paths.d.ts +37 -0
  248. package/dist/core/task/paths.d.ts.map +1 -0
  249. package/dist/core/task/paths.js +49 -0
  250. package/dist/core/task/paths.js.map +1 -0
  251. package/dist/core/task/phase.d.ts +27 -0
  252. package/dist/core/task/phase.d.ts.map +1 -0
  253. package/dist/core/task/phase.js +24 -0
  254. package/dist/core/task/phase.js.map +1 -0
  255. package/dist/core/task/project-file-observer.d.ts +46 -0
  256. package/dist/core/task/project-file-observer.d.ts.map +1 -0
  257. package/dist/core/task/project-file-observer.js +618 -0
  258. package/dist/core/task/project-file-observer.js.map +1 -0
  259. package/dist/core/task/records.d.ts +48 -0
  260. package/dist/core/task/records.d.ts.map +1 -0
  261. package/dist/core/task/records.js +100 -0
  262. package/dist/core/task/records.js.map +1 -0
  263. package/dist/core/task/schema.d.ts +77 -0
  264. package/dist/core/task/schema.d.ts.map +1 -0
  265. package/dist/core/task/schema.js +220 -0
  266. package/dist/core/task/schema.js.map +1 -0
  267. package/dist/core/task/start-authority.d.ts +14 -0
  268. package/dist/core/task/start-authority.d.ts.map +1 -0
  269. package/dist/core/task/start-authority.js +146 -0
  270. package/dist/core/task/start-authority.js.map +1 -0
  271. package/dist/core/task/strategy.d.ts +24 -0
  272. package/dist/core/task/strategy.d.ts.map +1 -0
  273. package/dist/core/task/strategy.js +136 -0
  274. package/dist/core/task/strategy.js.map +1 -0
  275. package/dist/core/task/task-candidate-observer.d.ts +111 -0
  276. package/dist/core/task/task-candidate-observer.d.ts.map +1 -0
  277. package/dist/core/task/task-candidate-observer.js +762 -0
  278. package/dist/core/task/task-candidate-observer.js.map +1 -0
  279. package/dist/core/task/task-kernel-close.d.ts +5 -0
  280. package/dist/core/task/task-kernel-close.d.ts.map +1 -0
  281. package/dist/core/task/task-kernel-close.js +367 -0
  282. package/dist/core/task/task-kernel-close.js.map +1 -0
  283. package/dist/core/task/task-kernel-dependencies.d.ts +3 -0
  284. package/dist/core/task/task-kernel-dependencies.d.ts.map +1 -0
  285. package/dist/core/task/task-kernel-dependencies.js +24 -0
  286. package/dist/core/task/task-kernel-dependencies.js.map +1 -0
  287. package/dist/core/task/task-kernel-host.d.ts +5 -0
  288. package/dist/core/task/task-kernel-host.d.ts.map +1 -0
  289. package/dist/core/task/task-kernel-host.js +136 -0
  290. package/dist/core/task/task-kernel-host.js.map +1 -0
  291. package/dist/core/task/task-kernel-paths.d.ts +19 -0
  292. package/dist/core/task/task-kernel-paths.d.ts.map +1 -0
  293. package/dist/core/task/task-kernel-paths.js +237 -0
  294. package/dist/core/task/task-kernel-paths.js.map +1 -0
  295. package/dist/core/task/task-kernel-reviews.d.ts +3 -0
  296. package/dist/core/task/task-kernel-reviews.d.ts.map +1 -0
  297. package/dist/core/task/task-kernel-reviews.js +100 -0
  298. package/dist/core/task/task-kernel-reviews.js.map +1 -0
  299. package/dist/core/task/task-kernel-runs.d.ts +5 -0
  300. package/dist/core/task/task-kernel-runs.d.ts.map +1 -0
  301. package/dist/core/task/task-kernel-runs.js +196 -0
  302. package/dist/core/task/task-kernel-runs.js.map +1 -0
  303. package/dist/core/task/task-kernel-schema.d.ts +29 -0
  304. package/dist/core/task/task-kernel-schema.d.ts.map +1 -0
  305. package/dist/core/task/task-kernel-schema.js +1169 -0
  306. package/dist/core/task/task-kernel-schema.js.map +1 -0
  307. package/dist/core/task/task-kernel-store-v2.d.ts +33 -0
  308. package/dist/core/task/task-kernel-store-v2.d.ts.map +1 -0
  309. package/dist/core/task/task-kernel-store-v2.js +574 -0
  310. package/dist/core/task/task-kernel-store-v2.js.map +1 -0
  311. package/dist/core/task/task-kernel-types.d.ts +585 -0
  312. package/dist/core/task/task-kernel-types.d.ts.map +1 -0
  313. package/dist/core/task/task-kernel-types.js +31 -0
  314. package/dist/core/task/task-kernel-types.js.map +1 -0
  315. package/dist/core/task/task-kernel-workspaces.d.ts +10 -0
  316. package/dist/core/task/task-kernel-workspaces.d.ts.map +1 -0
  317. package/dist/core/task/task-kernel-workspaces.js +250 -0
  318. package/dist/core/task/task-kernel-workspaces.js.map +1 -0
  319. package/dist/core/task/task-kernel-write-set.d.ts +3 -0
  320. package/dist/core/task/task-kernel-write-set.d.ts.map +1 -0
  321. package/dist/core/task/task-kernel-write-set.js +12 -0
  322. package/dist/core/task/task-kernel-write-set.js.map +1 -0
  323. package/dist/core/task/task-kernel.d.ts +19 -0
  324. package/dist/core/task/task-kernel.d.ts.map +1 -0
  325. package/dist/core/task/task-kernel.js +17 -0
  326. package/dist/core/task/task-kernel.js.map +1 -0
  327. package/dist/core/task/task-pull-request-observer.d.ts +25 -0
  328. package/dist/core/task/task-pull-request-observer.d.ts.map +1 -0
  329. package/dist/core/task/task-pull-request-observer.js +187 -0
  330. package/dist/core/task/task-pull-request-observer.js.map +1 -0
  331. package/dist/core/task/task-review-evidence.d.ts +27 -0
  332. package/dist/core/task/task-review-evidence.d.ts.map +1 -0
  333. package/dist/core/task/task-review-evidence.js +383 -0
  334. package/dist/core/task/task-review-evidence.js.map +1 -0
  335. package/dist/core/testing/index.d.ts +2 -0
  336. package/dist/core/testing/index.d.ts.map +1 -0
  337. package/dist/core/testing/index.js +4 -0
  338. package/dist/core/testing/index.js.map +1 -0
  339. package/dist/migrations/index.d.ts +1 -1
  340. package/dist/migrations/index.d.ts.map +1 -1
  341. package/dist/migrations/index.js +5 -3
  342. package/dist/migrations/index.js.map +1 -1
  343. package/dist/migrations/manifests/0.6.0-beta.1.json +35 -0
  344. package/dist/migrations/manifests/0.6.0-beta.2.json +9 -0
  345. package/dist/migrations/manifests/0.6.0-beta.3.json +9 -0
  346. package/dist/migrations/manifests/0.6.0-beta.4.json +9 -0
  347. package/dist/migrations/manifests/0.6.0.json +9 -0
  348. package/dist/pactile/adapters/codex/index.js +1 -1
  349. package/dist/pactile/adapters/codex/index.js.map +1 -1
  350. package/dist/pactile/adapters/index.d.ts +0 -1
  351. package/dist/pactile/adapters/index.d.ts.map +1 -1
  352. package/dist/pactile/adapters/index.js +0 -1
  353. package/dist/pactile/adapters/index.js.map +1 -1
  354. package/dist/pactile/adoption/bindings.d.ts +1 -1
  355. package/dist/pactile/adoption/bindings.d.ts.map +1 -1
  356. package/dist/pactile/adoption/bindings.js +1 -1
  357. package/dist/pactile/adoption/bindings.js.map +1 -1
  358. package/dist/pactile/adoption/inventory.d.ts +1 -1
  359. package/dist/pactile/adoption/inventory.d.ts.map +1 -1
  360. package/dist/pactile/adoption/inventory.js +1 -1
  361. package/dist/pactile/adoption/inventory.js.map +1 -1
  362. package/dist/pactile/adoption/safety.js +1 -1
  363. package/dist/pactile/adoption/safety.js.map +1 -1
  364. package/dist/pactile/adoption/workflow.d.ts +1 -1
  365. package/dist/pactile/adoption/workflow.d.ts.map +1 -1
  366. package/dist/pactile/adoption/workflow.js +1 -1
  367. package/dist/pactile/adoption/workflow.js.map +1 -1
  368. package/dist/pactile/artifacts/documents.d.ts +72 -0
  369. package/dist/pactile/artifacts/documents.d.ts.map +1 -0
  370. package/dist/pactile/artifacts/documents.js +406 -0
  371. package/dist/pactile/artifacts/documents.js.map +1 -0
  372. package/dist/pactile/artifacts/index.d.ts +6 -0
  373. package/dist/pactile/artifacts/index.d.ts.map +1 -0
  374. package/dist/pactile/artifacts/index.js +6 -0
  375. package/dist/pactile/artifacts/index.js.map +1 -0
  376. package/dist/pactile/artifacts/projection.d.ts +50 -0
  377. package/dist/pactile/artifacts/projection.d.ts.map +1 -0
  378. package/dist/pactile/artifacts/projection.js +139 -0
  379. package/dist/pactile/artifacts/projection.js.map +1 -0
  380. package/dist/pactile/artifacts/reader.d.ts +20 -0
  381. package/dist/pactile/artifacts/reader.d.ts.map +1 -0
  382. package/dist/pactile/artifacts/reader.js +559 -0
  383. package/dist/pactile/artifacts/reader.js.map +1 -0
  384. package/dist/pactile/artifacts/schema.d.ts +4 -0
  385. package/dist/pactile/artifacts/schema.d.ts.map +1 -0
  386. package/dist/pactile/artifacts/schema.js +217 -0
  387. package/dist/pactile/artifacts/schema.js.map +1 -0
  388. package/dist/pactile/artifacts/types.d.ts +66 -0
  389. package/dist/pactile/artifacts/types.d.ts.map +1 -0
  390. package/dist/pactile/artifacts/types.js +45 -0
  391. package/dist/pactile/artifacts/types.js.map +1 -0
  392. package/dist/pactile/capabilities/claim.d.ts +3 -0
  393. package/dist/pactile/capabilities/claim.d.ts.map +1 -0
  394. package/dist/pactile/capabilities/claim.js +97 -0
  395. package/dist/pactile/capabilities/claim.js.map +1 -0
  396. package/dist/pactile/capabilities/command.d.ts +6 -0
  397. package/dist/pactile/capabilities/command.d.ts.map +1 -0
  398. package/dist/pactile/capabilities/command.js +253 -0
  399. package/dist/pactile/capabilities/command.js.map +1 -0
  400. package/dist/pactile/capabilities/discover.d.ts +6 -0
  401. package/dist/pactile/capabilities/discover.d.ts.map +1 -0
  402. package/dist/pactile/capabilities/discover.js +48 -0
  403. package/dist/pactile/capabilities/discover.js.map +1 -0
  404. package/dist/pactile/capabilities/node.d.ts +15 -0
  405. package/dist/pactile/capabilities/node.d.ts.map +1 -0
  406. package/dist/pactile/capabilities/node.js +292 -0
  407. package/dist/pactile/capabilities/node.js.map +1 -0
  408. package/dist/pactile/capabilities/read.d.ts +6 -0
  409. package/dist/pactile/capabilities/read.d.ts.map +1 -0
  410. package/dist/pactile/capabilities/read.js +100 -0
  411. package/dist/pactile/capabilities/read.js.map +1 -0
  412. package/dist/pactile/capabilities/receipts.d.ts +17 -0
  413. package/dist/pactile/capabilities/receipts.d.ts.map +1 -0
  414. package/dist/pactile/capabilities/receipts.js +90 -0
  415. package/dist/pactile/capabilities/receipts.js.map +1 -0
  416. package/dist/pactile/capabilities/search.d.ts +6 -0
  417. package/dist/pactile/capabilities/search.d.ts.map +1 -0
  418. package/dist/pactile/capabilities/search.js +181 -0
  419. package/dist/pactile/capabilities/search.js.map +1 -0
  420. package/dist/pactile/capabilities/shared.d.ts +29 -0
  421. package/dist/pactile/capabilities/shared.d.ts.map +1 -0
  422. package/dist/pactile/capabilities/shared.js +134 -0
  423. package/dist/pactile/capabilities/shared.js.map +1 -0
  424. package/dist/pactile/capabilities/workspace.d.ts +19 -0
  425. package/dist/pactile/capabilities/workspace.d.ts.map +1 -0
  426. package/dist/pactile/capabilities/workspace.js +273 -0
  427. package/dist/pactile/capabilities/workspace.js.map +1 -0
  428. package/dist/pactile/codex/bridge.d.ts +174 -0
  429. package/dist/pactile/codex/bridge.d.ts.map +1 -0
  430. package/dist/pactile/codex/bridge.js +1445 -0
  431. package/dist/pactile/codex/bridge.js.map +1 -0
  432. package/dist/pactile/codex/dispatch-stop-proof.d.ts +43 -0
  433. package/dist/pactile/codex/dispatch-stop-proof.d.ts.map +1 -0
  434. package/dist/pactile/codex/dispatch-stop-proof.js +177 -0
  435. package/dist/pactile/codex/dispatch-stop-proof.js.map +1 -0
  436. package/dist/pactile/codex/host-stop.d.ts +47 -0
  437. package/dist/pactile/codex/host-stop.d.ts.map +1 -0
  438. package/dist/pactile/codex/host-stop.js +344 -0
  439. package/dist/pactile/codex/host-stop.js.map +1 -0
  440. package/dist/pactile/compat/init-context.js +1 -1
  441. package/dist/pactile/compat/init-context.js.map +1 -1
  442. package/dist/pactile/compat/node-entry-migration.d.ts +3 -0
  443. package/dist/pactile/compat/node-entry-migration.d.ts.map +1 -0
  444. package/dist/pactile/compat/node-entry-migration.js +25 -0
  445. package/dist/pactile/compat/node-entry-migration.js.map +1 -0
  446. package/dist/pactile/coordination/index.d.ts +4 -0
  447. package/dist/pactile/coordination/index.d.ts.map +1 -0
  448. package/dist/pactile/coordination/index.js +4 -0
  449. package/dist/pactile/coordination/index.js.map +1 -0
  450. package/dist/pactile/coordination/journal.d.ts +10 -0
  451. package/dist/pactile/coordination/journal.d.ts.map +1 -0
  452. package/dist/pactile/coordination/journal.js +255 -0
  453. package/dist/pactile/coordination/journal.js.map +1 -0
  454. package/dist/pactile/coordination/kernel-resume.d.ts +8 -0
  455. package/dist/pactile/coordination/kernel-resume.d.ts.map +1 -0
  456. package/dist/pactile/coordination/kernel-resume.js +87 -0
  457. package/dist/pactile/coordination/kernel-resume.js.map +1 -0
  458. package/dist/pactile/coordination/model.d.ts +553 -0
  459. package/dist/pactile/coordination/model.d.ts.map +1 -0
  460. package/dist/pactile/coordination/model.js +239 -0
  461. package/dist/pactile/coordination/model.js.map +1 -0
  462. package/dist/pactile/coordination/state.d.ts +46 -0
  463. package/dist/pactile/coordination/state.d.ts.map +1 -0
  464. package/dist/pactile/coordination/state.js +301 -0
  465. package/dist/pactile/coordination/state.js.map +1 -0
  466. package/dist/pactile/coordination/store.d.ts +94 -0
  467. package/dist/pactile/coordination/store.d.ts.map +1 -0
  468. package/dist/pactile/coordination/store.js +396 -0
  469. package/dist/pactile/coordination/store.js.map +1 -0
  470. package/dist/pactile/exit/receipt.js +1 -1
  471. package/dist/pactile/exit/receipt.js.map +1 -1
  472. package/dist/pactile/exit/service.d.ts +1 -1
  473. package/dist/pactile/exit/service.d.ts.map +1 -1
  474. package/dist/pactile/exit/service.js +1 -3
  475. package/dist/pactile/exit/service.js.map +1 -1
  476. package/dist/pactile/index.d.ts +7 -1
  477. package/dist/pactile/index.d.ts.map +1 -1
  478. package/dist/pactile/index.js +7 -1
  479. package/dist/pactile/index.js.map +1 -1
  480. package/dist/pactile/jev/contracts.d.ts +104 -0
  481. package/dist/pactile/jev/contracts.d.ts.map +1 -0
  482. package/dist/pactile/jev/contracts.js +53 -0
  483. package/dist/pactile/jev/contracts.js.map +1 -0
  484. package/dist/pactile/jev/decision.d.ts +58 -0
  485. package/dist/pactile/jev/decision.d.ts.map +1 -0
  486. package/dist/pactile/jev/decision.js +149 -0
  487. package/dist/pactile/jev/decision.js.map +1 -0
  488. package/dist/pactile/jev/http.d.ts +25 -0
  489. package/dist/pactile/jev/http.d.ts.map +1 -0
  490. package/dist/pactile/jev/http.js +234 -0
  491. package/dist/pactile/jev/http.js.map +1 -0
  492. package/dist/pactile/jev/index.d.ts +8 -0
  493. package/dist/pactile/jev/index.d.ts.map +1 -0
  494. package/dist/pactile/jev/index.js +4 -0
  495. package/dist/pactile/jev/index.js.map +1 -0
  496. package/dist/pactile/jev/outbound.d.ts +15 -0
  497. package/dist/pactile/jev/outbound.d.ts.map +1 -0
  498. package/dist/pactile/jev/outbound.js +264 -0
  499. package/dist/pactile/jev/outbound.js.map +1 -0
  500. package/dist/pactile/jev/project-policy.d.ts +10 -0
  501. package/dist/pactile/jev/project-policy.d.ts.map +1 -0
  502. package/dist/pactile/jev/project-policy.js +53 -0
  503. package/dist/pactile/jev/project-policy.js.map +1 -0
  504. package/dist/pactile/jev/response.d.ts +17 -0
  505. package/dist/pactile/jev/response.d.ts.map +1 -0
  506. package/dist/pactile/jev/response.js +280 -0
  507. package/dist/pactile/jev/response.js.map +1 -0
  508. package/dist/pactile/jev/scheduler-advice.d.ts +92 -0
  509. package/dist/pactile/jev/scheduler-advice.d.ts.map +1 -0
  510. package/dist/pactile/jev/scheduler-advice.js +323 -0
  511. package/dist/pactile/jev/scheduler-advice.js.map +1 -0
  512. package/dist/pactile/jev/transport.d.ts +6 -0
  513. package/dist/pactile/jev/transport.d.ts.map +1 -0
  514. package/dist/pactile/jev/transport.js +87 -0
  515. package/dist/pactile/jev/transport.js.map +1 -0
  516. package/dist/pactile/lifecycle/command-runner.d.ts +1 -1
  517. package/dist/pactile/lifecycle/command-runner.d.ts.map +1 -1
  518. package/dist/pactile/lifecycle/command-runner.js +1 -3
  519. package/dist/pactile/lifecycle/command-runner.js.map +1 -1
  520. package/dist/pactile/lifecycle/default-adapters.d.ts.map +1 -1
  521. package/dist/pactile/lifecycle/default-adapters.js +8 -32
  522. package/dist/pactile/lifecycle/default-adapters.js.map +1 -1
  523. package/dist/pactile/lifecycle/deferred-live.d.ts +17 -0
  524. package/dist/pactile/lifecycle/deferred-live.d.ts.map +1 -0
  525. package/dist/pactile/lifecycle/deferred-live.js +173 -0
  526. package/dist/pactile/lifecycle/deferred-live.js.map +1 -0
  527. package/dist/pactile/lifecycle/legacy-import.d.ts +1 -1
  528. package/dist/pactile/lifecycle/legacy-import.js +3 -3
  529. package/dist/pactile/lifecycle/legacy-import.js.map +1 -1
  530. package/dist/pactile/lifecycle/orchestrator.d.ts +1 -1
  531. package/dist/pactile/lifecycle/orchestrator.d.ts.map +1 -1
  532. package/dist/pactile/lifecycle/orchestrator.js +1 -1
  533. package/dist/pactile/lifecycle/orchestrator.js.map +1 -1
  534. package/dist/pactile/lifecycle/project-files.d.ts.map +1 -1
  535. package/dist/pactile/lifecycle/project-files.js +5 -1
  536. package/dist/pactile/lifecycle/project-files.js.map +1 -1
  537. package/dist/pactile/middleware/manifest-loader.d.ts +1 -1
  538. package/dist/pactile/middleware/manifest-loader.d.ts.map +1 -1
  539. package/dist/pactile/middleware/manifest-loader.js +1 -1
  540. package/dist/pactile/middleware/manifest-loader.js.map +1 -1
  541. package/dist/pactile/migration/legacy-task-batch-generation.d.ts +23 -0
  542. package/dist/pactile/migration/legacy-task-batch-generation.d.ts.map +1 -0
  543. package/dist/pactile/migration/legacy-task-batch-generation.js +102 -0
  544. package/dist/pactile/migration/legacy-task-batch-generation.js.map +1 -0
  545. package/dist/pactile/migration/legacy-task-batch-io.d.ts +9 -0
  546. package/dist/pactile/migration/legacy-task-batch-io.d.ts.map +1 -0
  547. package/dist/pactile/migration/legacy-task-batch-io.js +208 -0
  548. package/dist/pactile/migration/legacy-task-batch-io.js.map +1 -0
  549. package/dist/pactile/migration/legacy-task-batch-journal.d.ts +6 -0
  550. package/dist/pactile/migration/legacy-task-batch-journal.d.ts.map +1 -0
  551. package/dist/pactile/migration/legacy-task-batch-journal.js +121 -0
  552. package/dist/pactile/migration/legacy-task-batch-journal.js.map +1 -0
  553. package/dist/pactile/migration/legacy-task-batch-orchestrator.d.ts +18 -0
  554. package/dist/pactile/migration/legacy-task-batch-orchestrator.d.ts.map +1 -0
  555. package/dist/pactile/migration/legacy-task-batch-orchestrator.js +634 -0
  556. package/dist/pactile/migration/legacy-task-batch-orchestrator.js.map +1 -0
  557. package/dist/pactile/migration/legacy-task-batch-source.d.ts +8 -0
  558. package/dist/pactile/migration/legacy-task-batch-source.d.ts.map +1 -0
  559. package/dist/pactile/migration/legacy-task-batch-source.js +158 -0
  560. package/dist/pactile/migration/legacy-task-batch-source.js.map +1 -0
  561. package/dist/pactile/migration/legacy-task-batch-types.d.ts +127 -0
  562. package/dist/pactile/migration/legacy-task-batch-types.d.ts.map +1 -0
  563. package/dist/pactile/migration/legacy-task-batch-types.js +127 -0
  564. package/dist/pactile/migration/legacy-task-batch-types.js.map +1 -0
  565. package/dist/pactile/migration/legacy-task-batch.d.ts +3 -0
  566. package/dist/pactile/migration/legacy-task-batch.d.ts.map +1 -0
  567. package/dist/pactile/migration/legacy-task-batch.js +2 -0
  568. package/dist/pactile/migration/legacy-task-batch.js.map +1 -0
  569. package/dist/pactile/migration/legacy-task-held-source-reader.d.ts +27 -0
  570. package/dist/pactile/migration/legacy-task-held-source-reader.d.ts.map +1 -0
  571. package/dist/pactile/migration/legacy-task-held-source-reader.js +261 -0
  572. package/dist/pactile/migration/legacy-task-held-source-reader.js.map +1 -0
  573. package/dist/pactile/migration/legacy-task-reconciliation.d.ts +46 -0
  574. package/dist/pactile/migration/legacy-task-reconciliation.d.ts.map +1 -0
  575. package/dist/pactile/migration/legacy-task-reconciliation.js +589 -0
  576. package/dist/pactile/migration/legacy-task-reconciliation.js.map +1 -0
  577. package/dist/pactile/migration/legacy-task-update.d.ts +19 -0
  578. package/dist/pactile/migration/legacy-task-update.d.ts.map +1 -0
  579. package/dist/pactile/migration/legacy-task-update.js +164 -0
  580. package/dist/pactile/migration/legacy-task-update.js.map +1 -0
  581. package/dist/pactile/migration/transaction.d.ts +1 -1
  582. package/dist/pactile/migration/transaction.d.ts.map +1 -1
  583. package/dist/pactile/migration/transaction.js +1 -1
  584. package/dist/pactile/migration/transaction.js.map +1 -1
  585. package/dist/pactile/parallel/batch.d.ts +60 -0
  586. package/dist/pactile/parallel/batch.d.ts.map +1 -0
  587. package/dist/pactile/parallel/batch.js +411 -0
  588. package/dist/pactile/parallel/batch.js.map +1 -0
  589. package/dist/pactile/parallel/policy.d.ts +18 -0
  590. package/dist/pactile/parallel/policy.d.ts.map +1 -0
  591. package/dist/pactile/parallel/policy.js +202 -0
  592. package/dist/pactile/parallel/policy.js.map +1 -0
  593. package/dist/pactile/pi/bridge.d.ts +188 -0
  594. package/dist/pactile/pi/bridge.d.ts.map +1 -0
  595. package/dist/pactile/pi/bridge.js +1564 -0
  596. package/dist/pactile/pi/bridge.js.map +1 -0
  597. package/dist/pactile/pi/rpc.d.ts +60 -0
  598. package/dist/pactile/pi/rpc.d.ts.map +1 -0
  599. package/dist/pactile/pi/rpc.js +420 -0
  600. package/dist/pactile/pi/rpc.js.map +1 -0
  601. package/dist/pactile/pi/v2-dispatch.d.ts +113 -0
  602. package/dist/pactile/pi/v2-dispatch.d.ts.map +1 -0
  603. package/dist/pactile/pi/v2-dispatch.js +919 -0
  604. package/dist/pactile/pi/v2-dispatch.js.map +1 -0
  605. package/dist/pactile/projection/planner.d.ts +1 -1
  606. package/dist/pactile/projection/planner.d.ts.map +1 -1
  607. package/dist/pactile/projection/planner.js +2 -2
  608. package/dist/pactile/projection/planner.js.map +1 -1
  609. package/dist/pactile/projection/shared/index.js +1 -1
  610. package/dist/pactile/projection/shared/index.js.map +1 -1
  611. package/dist/pactile/projection/store.js +1 -1
  612. package/dist/pactile/projection/store.js.map +1 -1
  613. package/dist/pactile/providers/probes.d.ts +2 -2
  614. package/dist/pactile/providers/probes.d.ts.map +1 -1
  615. package/dist/pactile/providers/probes.js +0 -6
  616. package/dist/pactile/providers/probes.js.map +1 -1
  617. package/dist/pactile/registry.d.ts +64 -9
  618. package/dist/pactile/registry.d.ts.map +1 -1
  619. package/dist/pactile/registry.js +640 -28
  620. package/dist/pactile/registry.js.map +1 -1
  621. package/dist/pactile/retrieval/envelope.d.ts +19 -0
  622. package/dist/pactile/retrieval/envelope.d.ts.map +1 -0
  623. package/dist/pactile/retrieval/envelope.js +115 -0
  624. package/dist/pactile/retrieval/envelope.js.map +1 -0
  625. package/dist/pactile/retrieval/evidence.js +1 -1
  626. package/dist/pactile/retrieval/evidence.js.map +1 -1
  627. package/dist/pactile/retrieval/index.d.ts +1 -0
  628. package/dist/pactile/retrieval/index.d.ts.map +1 -1
  629. package/dist/pactile/retrieval/index.js +1 -0
  630. package/dist/pactile/retrieval/index.js.map +1 -1
  631. package/dist/pactile/retrieval/jev-planning.d.ts +28 -0
  632. package/dist/pactile/retrieval/jev-planning.d.ts.map +1 -0
  633. package/dist/pactile/retrieval/jev-planning.js +96 -0
  634. package/dist/pactile/retrieval/jev-planning.js.map +1 -0
  635. package/dist/pactile/retrieval/pack.d.ts +9 -0
  636. package/dist/pactile/retrieval/pack.d.ts.map +1 -0
  637. package/dist/pactile/retrieval/pack.js +300 -0
  638. package/dist/pactile/retrieval/pack.js.map +1 -0
  639. package/dist/pactile/retrieval/planner.d.ts +1 -1
  640. package/dist/pactile/retrieval/planner.d.ts.map +1 -1
  641. package/dist/pactile/retrieval/planner.js +1 -1
  642. package/dist/pactile/retrieval/planner.js.map +1 -1
  643. package/dist/pactile/retrieval/types.d.ts +1 -1
  644. package/dist/pactile/retrieval/types.d.ts.map +1 -1
  645. package/dist/pactile/review/contract.d.ts +232 -0
  646. package/dist/pactile/review/contract.d.ts.map +1 -0
  647. package/dist/pactile/review/contract.js +695 -0
  648. package/dist/pactile/review/contract.js.map +1 -0
  649. package/dist/pactile/review/escalation-artifacts.d.ts +41 -0
  650. package/dist/pactile/review/escalation-artifacts.d.ts.map +1 -0
  651. package/dist/pactile/review/escalation-artifacts.js +415 -0
  652. package/dist/pactile/review/escalation-artifacts.js.map +1 -0
  653. package/dist/pactile/review/escalation-contract.d.ts +115 -0
  654. package/dist/pactile/review/escalation-contract.d.ts.map +1 -0
  655. package/dist/pactile/review/escalation-contract.js +151 -0
  656. package/dist/pactile/review/escalation-contract.js.map +1 -0
  657. package/dist/pactile/review/escalation-finalize.d.ts +14 -0
  658. package/dist/pactile/review/escalation-finalize.d.ts.map +1 -0
  659. package/dist/pactile/review/escalation-finalize.js +319 -0
  660. package/dist/pactile/review/escalation-finalize.js.map +1 -0
  661. package/dist/pactile/review/escalation-reply.d.ts +10 -0
  662. package/dist/pactile/review/escalation-reply.d.ts.map +1 -0
  663. package/dist/pactile/review/escalation-reply.js +61 -0
  664. package/dist/pactile/review/escalation-reply.js.map +1 -0
  665. package/dist/pactile/review/escalation-transport.d.ts +32 -0
  666. package/dist/pactile/review/escalation-transport.d.ts.map +1 -0
  667. package/dist/pactile/review/escalation-transport.js +216 -0
  668. package/dist/pactile/review/escalation-transport.js.map +1 -0
  669. package/dist/pactile/review/escalation.d.ts +7 -0
  670. package/dist/pactile/review/escalation.d.ts.map +1 -0
  671. package/dist/pactile/review/escalation.js +6 -0
  672. package/dist/pactile/review/escalation.js.map +1 -0
  673. package/dist/pactile/review/evidence.d.ts +25 -0
  674. package/dist/pactile/review/evidence.d.ts.map +1 -0
  675. package/dist/pactile/review/evidence.js +58 -0
  676. package/dist/pactile/review/evidence.js.map +1 -0
  677. package/dist/pactile/review/jev-escalation-advice.d.ts +77 -0
  678. package/dist/pactile/review/jev-escalation-advice.d.ts.map +1 -0
  679. package/dist/pactile/review/jev-escalation-advice.js +358 -0
  680. package/dist/pactile/review/jev-escalation-advice.js.map +1 -0
  681. package/dist/pactile/runtime/json-api.d.ts +1 -1
  682. package/dist/pactile/runtime/json-api.js +1 -1
  683. package/dist/pactile/runtime/paths.js +1 -1
  684. package/dist/pactile/runtime/paths.js.map +1 -1
  685. package/dist/pactile/runtime/stores.d.ts +1 -1
  686. package/dist/pactile/runtime/stores.d.ts.map +1 -1
  687. package/dist/pactile/runtime/stores.js +1 -1
  688. package/dist/pactile/runtime/stores.js.map +1 -1
  689. package/dist/pactile/runtime/unicode-nfc-data.d.ts +1 -1
  690. package/dist/pactile/runtime/unicode-nfc-data.js +1 -1
  691. package/dist/pactile/scheduler/index.d.ts +6 -0
  692. package/dist/pactile/scheduler/index.d.ts.map +1 -0
  693. package/dist/pactile/scheduler/index.js +5 -0
  694. package/dist/pactile/scheduler/index.js.map +1 -0
  695. package/dist/pactile/scheduler/project-lease-store.d.ts +35 -0
  696. package/dist/pactile/scheduler/project-lease-store.d.ts.map +1 -0
  697. package/dist/pactile/scheduler/project-lease-store.js +189 -0
  698. package/dist/pactile/scheduler/project-lease-store.js.map +1 -0
  699. package/dist/pactile/scheduler/scheduler.d.ts +91 -0
  700. package/dist/pactile/scheduler/scheduler.d.ts.map +1 -0
  701. package/dist/pactile/scheduler/scheduler.js +589 -0
  702. package/dist/pactile/scheduler/scheduler.js.map +1 -0
  703. package/dist/pactile/scheduler/task-kernel-admission.d.ts +173 -0
  704. package/dist/pactile/scheduler/task-kernel-admission.d.ts.map +1 -0
  705. package/dist/pactile/scheduler/task-kernel-admission.js +1560 -0
  706. package/dist/pactile/scheduler/task-kernel-admission.js.map +1 -0
  707. package/dist/pactile/scheduler/task-kernel-wave-dispatch.d.ts +184 -0
  708. package/dist/pactile/scheduler/task-kernel-wave-dispatch.d.ts.map +1 -0
  709. package/dist/pactile/scheduler/task-kernel-wave-dispatch.js +952 -0
  710. package/dist/pactile/scheduler/task-kernel-wave-dispatch.js.map +1 -0
  711. package/dist/pactile/scheduler/task-map-scheduler.d.ts +116 -0
  712. package/dist/pactile/scheduler/task-map-scheduler.d.ts.map +1 -0
  713. package/dist/pactile/scheduler/task-map-scheduler.js +1448 -0
  714. package/dist/pactile/scheduler/task-map-scheduler.js.map +1 -0
  715. package/dist/pactile/scheduler/task-run-dispatch-state.d.ts +7 -0
  716. package/dist/pactile/scheduler/task-run-dispatch-state.d.ts.map +1 -0
  717. package/dist/pactile/scheduler/task-run-dispatch-state.js +69 -0
  718. package/dist/pactile/scheduler/task-run-dispatch-state.js.map +1 -0
  719. package/dist/pactile/task/authorization.d.ts +3 -0
  720. package/dist/pactile/task/authorization.d.ts.map +1 -0
  721. package/dist/pactile/task/authorization.js +43 -0
  722. package/dist/pactile/task/authorization.js.map +1 -0
  723. package/dist/pactile/task/config.d.ts +9 -0
  724. package/dist/pactile/task/config.d.ts.map +1 -0
  725. package/dist/pactile/task/config.js +103 -0
  726. package/dist/pactile/task/config.js.map +1 -0
  727. package/dist/pactile/task/context.d.ts +19 -0
  728. package/dist/pactile/task/context.d.ts.map +1 -0
  729. package/dist/pactile/task/context.js +117 -0
  730. package/dist/pactile/task/context.js.map +1 -0
  731. package/dist/pactile/task/creation.d.ts +22 -0
  732. package/dist/pactile/task/creation.d.ts.map +1 -0
  733. package/dist/pactile/task/creation.js +95 -0
  734. package/dist/pactile/task/creation.js.map +1 -0
  735. package/dist/pactile/task/guards.d.ts +18 -0
  736. package/dist/pactile/task/guards.d.ts.map +1 -0
  737. package/dist/pactile/task/guards.js +180 -0
  738. package/dist/pactile/task/guards.js.map +1 -0
  739. package/dist/pactile/task/scaffold.d.ts +6 -0
  740. package/dist/pactile/task/scaffold.d.ts.map +1 -0
  741. package/dist/pactile/task/scaffold.js +57 -0
  742. package/dist/pactile/task/scaffold.js.map +1 -0
  743. package/dist/pactile/task/session-jev-receipt.d.ts +58 -0
  744. package/dist/pactile/task/session-jev-receipt.d.ts.map +1 -0
  745. package/dist/pactile/task/session-jev-receipt.js +375 -0
  746. package/dist/pactile/task/session-jev-receipt.js.map +1 -0
  747. package/dist/pactile/task/session-jev.d.ts +7 -0
  748. package/dist/pactile/task/session-jev.d.ts.map +1 -0
  749. package/dist/pactile/task/session-jev.js +217 -0
  750. package/dist/pactile/task/session-jev.js.map +1 -0
  751. package/dist/pactile/task/session-memory.d.ts +2 -0
  752. package/dist/pactile/task/session-memory.d.ts.map +1 -0
  753. package/dist/pactile/task/session-memory.js +123 -0
  754. package/dist/pactile/task/session-memory.js.map +1 -0
  755. package/dist/pactile/task/session-pack.d.ts +3 -0
  756. package/dist/pactile/task/session-pack.d.ts.map +1 -0
  757. package/dist/pactile/task/session-pack.js +278 -0
  758. package/dist/pactile/task/session-pack.js.map +1 -0
  759. package/dist/pactile/task/session-retrieval-jev-receipt.d.ts +49 -0
  760. package/dist/pactile/task/session-retrieval-jev-receipt.d.ts.map +1 -0
  761. package/dist/pactile/task/session-retrieval-jev-receipt.js +97 -0
  762. package/dist/pactile/task/session-retrieval-jev-receipt.js.map +1 -0
  763. package/dist/pactile/task/session-retrieval-jev.d.ts +8 -0
  764. package/dist/pactile/task/session-retrieval-jev.d.ts.map +1 -0
  765. package/dist/pactile/task/session-retrieval-jev.js +352 -0
  766. package/dist/pactile/task/session-retrieval-jev.js.map +1 -0
  767. package/dist/pactile/task/session.d.ts +13 -0
  768. package/dist/pactile/task/session.d.ts.map +1 -0
  769. package/dist/pactile/task/session.js +105 -0
  770. package/dist/pactile/task/session.js.map +1 -0
  771. package/dist/pactile/task/strategy.d.ts +2 -0
  772. package/dist/pactile/task/strategy.d.ts.map +1 -0
  773. package/dist/pactile/task/strategy.js +3 -0
  774. package/dist/pactile/task/strategy.js.map +1 -0
  775. package/dist/pactile/task/task-map.d.ts +35 -0
  776. package/dist/pactile/task/task-map.d.ts.map +1 -0
  777. package/dist/pactile/task/task-map.js +217 -0
  778. package/dist/pactile/task/task-map.js.map +1 -0
  779. package/dist/pactile/task/workflow-phase.d.ts +3 -0
  780. package/dist/pactile/task/workflow-phase.d.ts.map +1 -0
  781. package/dist/pactile/task/workflow-phase.js +56 -0
  782. package/dist/pactile/task/workflow-phase.js.map +1 -0
  783. package/dist/pactile/tiles/catalog.d.ts +1 -1
  784. package/dist/pactile/tiles/catalog.d.ts.map +1 -1
  785. package/dist/pactile/tiles/catalog.js +1 -1
  786. package/dist/pactile/tiles/catalog.js.map +1 -1
  787. package/dist/pactile/tiles/compiler.d.ts +1 -1
  788. package/dist/pactile/tiles/compiler.d.ts.map +1 -1
  789. package/dist/pactile/tiles/compiler.js +1 -1
  790. package/dist/pactile/tiles/compiler.js.map +1 -1
  791. package/dist/pactile/tiles/content/ondemand/index.d.ts +2 -2
  792. package/dist/pactile/tiles/content/ondemand/index.d.ts.map +1 -1
  793. package/dist/pactile/tiles/content/ondemand/index.js +2 -16
  794. package/dist/pactile/tiles/content/ondemand/index.js.map +1 -1
  795. package/dist/pactile/tiles/jev-selection.d.ts +44 -0
  796. package/dist/pactile/tiles/jev-selection.d.ts.map +1 -0
  797. package/dist/pactile/tiles/jev-selection.js +210 -0
  798. package/dist/pactile/tiles/jev-selection.js.map +1 -0
  799. package/dist/pactile/tiles/loader.d.ts +1 -1
  800. package/dist/pactile/tiles/loader.d.ts.map +1 -1
  801. package/dist/pactile/tiles/loader.js +1 -1
  802. package/dist/pactile/tiles/loader.js.map +1 -1
  803. package/dist/pactile/tiles/safe-yaml.d.ts +5 -1
  804. package/dist/pactile/tiles/safe-yaml.d.ts.map +1 -1
  805. package/dist/pactile/tiles/safe-yaml.js +8 -8
  806. package/dist/pactile/tiles/safe-yaml.js.map +1 -1
  807. package/dist/pactile/tiles/selection-receipts.d.ts +71 -0
  808. package/dist/pactile/tiles/selection-receipts.d.ts.map +1 -0
  809. package/dist/pactile/tiles/selection-receipts.js +319 -0
  810. package/dist/pactile/tiles/selection-receipts.js.map +1 -0
  811. package/dist/pactile/tiles/selection.d.ts +185 -0
  812. package/dist/pactile/tiles/selection.d.ts.map +1 -0
  813. package/dist/pactile/tiles/selection.js +985 -0
  814. package/dist/pactile/tiles/selection.js.map +1 -0
  815. package/dist/pactile/verification/git-observer.d.ts +3 -0
  816. package/dist/pactile/verification/git-observer.d.ts.map +1 -0
  817. package/dist/pactile/verification/git-observer.js +3 -0
  818. package/dist/pactile/verification/git-observer.js.map +1 -0
  819. package/dist/pactile/verification/index.d.ts +11 -0
  820. package/dist/pactile/verification/index.d.ts.map +1 -0
  821. package/dist/pactile/verification/index.js +6 -0
  822. package/dist/pactile/verification/index.js.map +1 -0
  823. package/dist/pactile/verification/jev-advice.d.ts +78 -0
  824. package/dist/pactile/verification/jev-advice.d.ts.map +1 -0
  825. package/dist/pactile/verification/jev-advice.js +397 -0
  826. package/dist/pactile/verification/jev-advice.js.map +1 -0
  827. package/dist/pactile/verification/planner.d.ts +15 -0
  828. package/dist/pactile/verification/planner.d.ts.map +1 -0
  829. package/dist/pactile/verification/planner.js +412 -0
  830. package/dist/pactile/verification/planner.js.map +1 -0
  831. package/dist/pactile/verification/receipt.d.ts +101 -0
  832. package/dist/pactile/verification/receipt.d.ts.map +1 -0
  833. package/dist/pactile/verification/receipt.js +400 -0
  834. package/dist/pactile/verification/receipt.js.map +1 -0
  835. package/dist/pactile/verification/types.d.ts +72 -0
  836. package/dist/pactile/verification/types.d.ts.map +1 -0
  837. package/dist/pactile/verification/types.js +21 -0
  838. package/dist/pactile/verification/types.js.map +1 -0
  839. package/dist/pactile/worktree/git-probe.d.ts +32 -0
  840. package/dist/pactile/worktree/git-probe.d.ts.map +1 -0
  841. package/dist/pactile/worktree/git-probe.js +336 -0
  842. package/dist/pactile/worktree/git-probe.js.map +1 -0
  843. package/dist/pactile/worktree/git-removal.d.ts +3 -0
  844. package/dist/pactile/worktree/git-removal.d.ts.map +1 -0
  845. package/dist/pactile/worktree/git-removal.js +11 -0
  846. package/dist/pactile/worktree/git-removal.js.map +1 -0
  847. package/dist/pactile/worktree/index.d.ts +2 -0
  848. package/dist/pactile/worktree/index.d.ts.map +1 -0
  849. package/dist/pactile/worktree/index.js +2 -0
  850. package/dist/pactile/worktree/index.js.map +1 -0
  851. package/dist/pactile/worktree/integration-evidence.d.ts +80 -0
  852. package/dist/pactile/worktree/integration-evidence.d.ts.map +1 -0
  853. package/dist/pactile/worktree/integration-evidence.js +166 -0
  854. package/dist/pactile/worktree/integration-evidence.js.map +1 -0
  855. package/dist/pactile/worktree/manager-core.d.ts +50 -0
  856. package/dist/pactile/worktree/manager-core.d.ts.map +1 -0
  857. package/dist/pactile/worktree/manager-core.js +359 -0
  858. package/dist/pactile/worktree/manager-core.js.map +1 -0
  859. package/dist/pactile/worktree/manager-provenance.d.ts +32 -0
  860. package/dist/pactile/worktree/manager-provenance.d.ts.map +1 -0
  861. package/dist/pactile/worktree/manager-provenance.js +409 -0
  862. package/dist/pactile/worktree/manager-provenance.js.map +1 -0
  863. package/dist/pactile/worktree/manager-types.d.ts +84 -0
  864. package/dist/pactile/worktree/manager-types.d.ts.map +1 -0
  865. package/dist/pactile/worktree/manager-types.js +11 -0
  866. package/dist/pactile/worktree/manager-types.js.map +1 -0
  867. package/dist/pactile/worktree/manager.d.ts +10 -0
  868. package/dist/pactile/worktree/manager.d.ts.map +1 -0
  869. package/dist/pactile/worktree/manager.js +6 -0
  870. package/dist/pactile/worktree/manager.js.map +1 -0
  871. package/dist/pactile/worktree/run-workspace-cleanup.d.ts +10 -0
  872. package/dist/pactile/worktree/run-workspace-cleanup.d.ts.map +1 -0
  873. package/dist/pactile/worktree/run-workspace-cleanup.js +695 -0
  874. package/dist/pactile/worktree/run-workspace-cleanup.js.map +1 -0
  875. package/dist/pactile/worktree/run-workspace-lifecycle.d.ts +65 -0
  876. package/dist/pactile/worktree/run-workspace-lifecycle.d.ts.map +1 -0
  877. package/dist/pactile/worktree/run-workspace-lifecycle.js +276 -0
  878. package/dist/pactile/worktree/run-workspace-lifecycle.js.map +1 -0
  879. package/dist/templates/common/bundled-skills/pactile-check/SKILL.md +161 -161
  880. package/dist/templates/common/bundled-skills/pactile-check/references/fowler-12-smells.md +28 -28
  881. package/dist/templates/common/bundled-skills/pactile-handoff/SKILL.md +117 -117
  882. package/dist/templates/common/bundled-skills/pactile-meta/SKILL.md +75 -75
  883. package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/add-project-local-conventions.md +83 -83
  884. package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-agents.md +5 -47
  885. package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-context-loading.md +79 -84
  886. package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-hooks.md +5 -57
  887. package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-skills-or-commands.md +7 -77
  888. package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-spec-structure.md +83 -83
  889. package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-task-lifecycle.md +82 -88
  890. package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-workflow.md +65 -65
  891. package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/overview.md +12 -55
  892. package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/context-injection.md +68 -68
  893. package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/generated-files.md +7 -83
  894. package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/overview.md +7 -51
  895. package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/spec-system.md +102 -102
  896. package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/task-system.md +138 -133
  897. package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/workflow.md +75 -75
  898. package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/workspace-memory.md +71 -71
  899. package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/agents.md +7 -69
  900. package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/hooks-and-settings.md +7 -59
  901. package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/overview.md +5 -45
  902. package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/platform-map.md +9 -45
  903. package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/skills-and-commands.md +7 -108
  904. package/dist/templates/common/bundled-skills/pactile-micro-grill/SKILL.md +68 -68
  905. package/dist/templates/common/bundled-skills/pactile-skill-creator/SKILL.md +47 -47
  906. package/dist/templates/common/bundled-skills/pactile-skill-creator/references/authoring-rules.md +170 -170
  907. package/dist/templates/common/bundled-skills/pactile-skill-creator/references/general-authoring.md +189 -189
  908. package/dist/templates/common/bundled-skills/pactile-skill-creator/references/pactile-skill-locations.md +11 -52
  909. package/dist/templates/common/bundled-skills/pactile-skill-creator/references/review-checklist.md +52 -52
  910. package/dist/templates/common/bundled-skills/pactile-spec-bootstrap/SKILL.md +41 -41
  911. package/dist/templates/common/bundled-skills/pactile-spec-bootstrap/references/mcp-setup.md +18 -90
  912. package/dist/templates/common/bundled-skills/pactile-spec-bootstrap/references/repository-analysis.md +41 -59
  913. package/dist/templates/common/bundled-skills/pactile-spec-bootstrap/references/spec-task-planning.md +61 -61
  914. package/dist/templates/common/bundled-skills/pactile-spec-bootstrap/references/spec-writing.md +70 -70
  915. package/dist/templates/common/bundled-skills/smart-search-cli/SKILL.md +395 -393
  916. package/dist/templates/common/bundled-skills/smart-search-cli/agents/openai.yaml +3 -3
  917. package/dist/templates/common/bundled-skills/smart-search-cli/examples/batch-search.md +98 -98
  918. package/dist/templates/common/bundled-skills/smart-search-cli/examples/evidence-gathering.md +89 -89
  919. package/dist/templates/common/bundled-skills/smart-search-cli/references/cli-contract.md +323 -323
  920. package/dist/templates/common/commands/continue.md +60 -62
  921. package/dist/templates/common/commands/finish-work.md +84 -82
  922. package/dist/templates/common/commands/start.md +66 -66
  923. package/dist/templates/common/index.d.ts +0 -20
  924. package/dist/templates/common/index.d.ts.map +1 -1
  925. package/dist/templates/common/index.js +0 -16
  926. package/dist/templates/common/index.js.map +1 -1
  927. package/dist/templates/common/skills/before-dev.md +35 -35
  928. package/dist/templates/common/skills/brainstorm.md +210 -204
  929. package/dist/templates/common/skills/break-loop.md +125 -125
  930. package/dist/templates/common/skills/update-spec.md +363 -363
  931. package/dist/templates/extract.d.ts +1 -8
  932. package/dist/templates/extract.d.ts.map +1 -1
  933. package/dist/templates/extract.js +0 -31
  934. package/dist/templates/extract.js.map +1 -1
  935. package/dist/templates/markdown/agents.md +14 -14
  936. package/dist/templates/markdown/framework/artifact-locale-guide.md.txt +93 -93
  937. package/dist/templates/markdown/framework/codex-worker-dispatch.md.txt +9 -0
  938. package/dist/templates/markdown/framework/dogfood-only-surfaces.md.txt +7 -28
  939. package/dist/templates/markdown/framework/execution-strategy.md.txt +14 -45
  940. package/dist/templates/markdown/framework/index.md.txt +20 -31
  941. package/dist/templates/markdown/framework/injection-budget-guide.md.txt +7 -111
  942. package/dist/templates/markdown/framework/middleware-protocol.md.txt +139 -238
  943. package/dist/templates/markdown/framework/parallel-first-execution.md.txt +28 -116
  944. package/dist/templates/markdown/framework/prd-grill-frontier.md.txt +105 -105
  945. package/dist/templates/markdown/framework/release-boundary.md.txt +29 -30
  946. package/dist/templates/markdown/framework/retrieval-daily-guide.md.txt +9 -199
  947. package/dist/templates/markdown/framework/upgrade.md.txt +15 -15
  948. package/dist/templates/markdown/framework/verification-strength-guide.md.txt +185 -185
  949. package/dist/templates/markdown/gitignore.txt +15 -15
  950. package/dist/templates/markdown/index.d.ts +1 -5
  951. package/dist/templates/markdown/index.d.ts.map +1 -1
  952. package/dist/templates/markdown/index.js +3 -23
  953. package/dist/templates/markdown/index.js.map +1 -1
  954. package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -51
  955. package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -54
  956. package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -51
  957. package/dist/templates/markdown/spec/backend/index.md.txt +38 -38
  958. package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -51
  959. package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -51
  960. package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -59
  961. package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -54
  962. package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -51
  963. package/dist/templates/markdown/spec/frontend/index.md.txt +39 -39
  964. package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -51
  965. package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -51
  966. package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -51
  967. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +174 -174
  968. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +162 -162
  969. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +17 -634
  970. package/dist/templates/markdown/spec/guides/debug-loop-guide.md.txt +227 -227
  971. package/dist/templates/markdown/spec/guides/durable-learning-decision-guide.md.txt +75 -75
  972. package/dist/templates/markdown/spec/guides/e2e-walkthrough-guide.md.txt +88 -93
  973. package/dist/templates/markdown/spec/guides/index.md.txt +131 -131
  974. package/dist/templates/markdown/spec/guides/prototype-guide.md.txt +137 -139
  975. package/dist/templates/markdown/spec/guides/test-discipline-guide.md.txt +179 -179
  976. package/dist/templates/markdown/workspace-index.md +122 -125
  977. package/dist/templates/markdown/worktree.yaml.txt +58 -58
  978. package/dist/templates/pactile/CONTEXT.md +113 -113
  979. package/dist/templates/pactile/config/execution-strategy-rules.json +30 -31
  980. package/dist/templates/pactile/config.yaml +111 -130
  981. package/dist/templates/pactile/docs/adr/README.md +21 -21
  982. package/dist/templates/pactile/gitignore.txt +35 -35
  983. package/dist/templates/pactile/index.d.ts +3 -127
  984. package/dist/templates/pactile/index.d.ts.map +1 -1
  985. package/dist/templates/pactile/index.js +13 -298
  986. package/dist/templates/pactile/index.js.map +1 -1
  987. package/dist/templates/pactile/modules/approval-personal/contract.md +31 -43
  988. package/dist/templates/pactile/modules/close-basic/contract.md +35 -38
  989. package/dist/templates/pactile/modules/context-progressive/contract.md +44 -44
  990. package/dist/templates/pactile/modules/debug-recovery/contract.md +44 -44
  991. package/dist/templates/pactile/modules/define-basic/contract.md +35 -39
  992. package/dist/templates/pactile/modules/define-extended/contract.md +45 -45
  993. package/dist/templates/pactile/modules/execute-agent/contract.md +30 -38
  994. package/dist/templates/pactile/modules/independent-check/contract.md +35 -35
  995. package/dist/templates/pactile/modules/index.json +127 -133
  996. package/dist/templates/pactile/modules/intake-basic/contract.md +37 -34
  997. package/dist/templates/pactile/modules/observability-local/contract.md +31 -31
  998. package/dist/templates/pactile/modules/parent-child/contract.md +45 -45
  999. package/dist/templates/pactile/modules/personal-memory/contract.md +55 -55
  1000. package/dist/templates/pactile/modules/retention-storage/contract.md +43 -43
  1001. package/dist/templates/pactile/modules/retrieval-extended/contract.md +78 -77
  1002. package/dist/templates/pactile/modules/session-transfer/contract.md +41 -41
  1003. package/dist/templates/pactile/modules/spec-learning/contract.md +50 -50
  1004. package/dist/templates/pactile/modules/vcs-integration/contract.md +46 -46
  1005. package/dist/templates/pactile/modules/verify-basic/contract.md +29 -38
  1006. package/dist/templates/pactile/modules/worker-orchestration/contract.md +47 -47
  1007. package/dist/templates/pactile/scripts/retrieval_probe_matrix_template.json +43 -43
  1008. package/dist/templates/pactile/tasks/locale/en/default-prd.md +27 -27
  1009. package/dist/templates/pactile/tasks/locale/zh/default-prd.md +27 -27
  1010. package/dist/templates/pactile/tasks/templates/release-execution/design.md +61 -61
  1011. package/dist/templates/pactile/tasks/templates/release-execution/handoff-template.md +28 -28
  1012. package/dist/templates/pactile/tasks/templates/release-execution/implement.md +28 -28
  1013. package/dist/templates/pactile/tasks/templates/release-execution/prd.md +30 -30
  1014. package/dist/templates/pactile/tasks/templates/release-readiness/design.md +50 -50
  1015. package/dist/templates/pactile/tasks/templates/release-readiness/handoff-template.md +45 -39
  1016. package/dist/templates/pactile/tasks/templates/release-readiness/implement.md +28 -28
  1017. package/dist/templates/pactile/tasks/templates/release-readiness/prd.md +30 -30
  1018. package/dist/templates/pactile/workflow.md +61 -64
  1019. package/dist/templates/template-utils.d.ts +1 -2
  1020. package/dist/templates/template-utils.d.ts.map +1 -1
  1021. package/dist/templates/template-utils.js +2 -13
  1022. package/dist/templates/template-utils.js.map +1 -1
  1023. package/dist/types/ai-tools.d.ts +12 -13
  1024. package/dist/types/ai-tools.d.ts.map +1 -1
  1025. package/dist/types/ai-tools.js +15 -14
  1026. package/dist/types/ai-tools.js.map +1 -1
  1027. package/dist/utils/codebase-retrieval-router.d.ts +1 -1
  1028. package/dist/utils/codebase-retrieval-router.d.ts.map +1 -1
  1029. package/dist/utils/cwd-guard.js +1 -1
  1030. package/dist/utils/cwd-guard.js.map +1 -1
  1031. package/dist/utils/developer.d.ts +5 -0
  1032. package/dist/utils/developer.d.ts.map +1 -0
  1033. package/dist/utils/developer.js +38 -0
  1034. package/dist/utils/developer.js.map +1 -0
  1035. package/dist/utils/git-root.d.ts +3 -0
  1036. package/dist/utils/git-root.d.ts.map +1 -0
  1037. package/dist/utils/git-root.js +24 -0
  1038. package/dist/utils/git-root.js.map +1 -0
  1039. package/dist/utils/local-date.d.ts +3 -0
  1040. package/dist/utils/local-date.d.ts.map +1 -0
  1041. package/dist/utils/local-date.js +8 -0
  1042. package/dist/utils/local-date.js.map +1 -0
  1043. package/dist/utils/manifest-prune.d.ts +5 -4
  1044. package/dist/utils/manifest-prune.d.ts.map +1 -1
  1045. package/dist/utils/manifest-prune.js +11 -21
  1046. package/dist/utils/manifest-prune.js.map +1 -1
  1047. package/dist/utils/p36-upgrade.d.ts +3 -3
  1048. package/dist/utils/p36-upgrade.d.ts.map +1 -1
  1049. package/dist/utils/p36-upgrade.js +3 -11
  1050. package/dist/utils/p36-upgrade.js.map +1 -1
  1051. package/dist/utils/post-update-smoke.d.ts +1 -4
  1052. package/dist/utils/post-update-smoke.d.ts.map +1 -1
  1053. package/dist/utils/post-update-smoke.js +13 -25
  1054. package/dist/utils/post-update-smoke.js.map +1 -1
  1055. package/dist/utils/project-capabilities.d.ts +2 -17
  1056. package/dist/utils/project-capabilities.d.ts.map +1 -1
  1057. package/dist/utils/project-capabilities.js +14 -119
  1058. package/dist/utils/project-capabilities.js.map +1 -1
  1059. package/dist/utils/readiness.d.ts +16 -2
  1060. package/dist/utils/readiness.d.ts.map +1 -1
  1061. package/dist/utils/readiness.js +63 -32
  1062. package/dist/utils/readiness.js.map +1 -1
  1063. package/dist/utils/retrieval-execution-telemetry.d.ts +1 -1
  1064. package/dist/utils/retrieval-execution-telemetry.d.ts.map +1 -1
  1065. package/dist/utils/retrieval-result-ranking.d.ts +1 -1
  1066. package/dist/utils/retrieval-result-ranking.d.ts.map +1 -1
  1067. package/dist/utils/retrieval-tool-classification.d.ts +1 -1
  1068. package/dist/utils/retrieval-tool-classification.d.ts.map +1 -1
  1069. package/dist/utils/task-json.d.ts +3 -3
  1070. package/dist/utils/task-json.d.ts.map +1 -1
  1071. package/dist/utils/task-json.js +3 -3
  1072. package/dist/utils/task-json.js.map +1 -1
  1073. package/dist/utils/template-hash.d.ts +4 -0
  1074. package/dist/utils/template-hash.d.ts.map +1 -1
  1075. package/dist/utils/template-hash.js +1 -1
  1076. package/dist/utils/template-hash.js.map +1 -1
  1077. package/dist/utils/uninstall-scrubbers.js +1 -1
  1078. package/dist/utils/update-rollout-report.d.ts +9 -0
  1079. package/dist/utils/update-rollout-report.d.ts.map +1 -1
  1080. package/dist/utils/update-rollout-report.js +14 -1
  1081. package/dist/utils/update-rollout-report.js.map +1 -1
  1082. package/dist/utils/workflow-dir.d.ts +1 -1
  1083. package/dist/utils/workflow-dir.d.ts.map +1 -1
  1084. package/dist/utils/workflow-dir.js +1 -1
  1085. package/dist/utils/workflow-dir.js.map +1 -1
  1086. package/package.json +63 -47
  1087. package/CHANGELOG.md +0 -602
  1088. package/bin/compat-warning.js +0 -11
  1089. package/bin/cstl.js +0 -6
  1090. package/bin/pactile.js +0 -3
  1091. package/bin/smart-search.js +0 -38
  1092. package/dist/commands/channel/adapters/claude.d.ts +0 -29
  1093. package/dist/commands/channel/adapters/claude.d.ts.map +0 -1
  1094. package/dist/commands/channel/adapters/claude.js +0 -203
  1095. package/dist/commands/channel/adapters/claude.js.map +0 -1
  1096. package/dist/commands/channel/adapters/codex.d.ts +0 -85
  1097. package/dist/commands/channel/adapters/codex.d.ts.map +0 -1
  1098. package/dist/commands/channel/adapters/codex.js +0 -505
  1099. package/dist/commands/channel/adapters/codex.js.map +0 -1
  1100. package/dist/commands/channel/adapters/index.d.ts +0 -84
  1101. package/dist/commands/channel/adapters/index.d.ts.map +0 -1
  1102. package/dist/commands/channel/adapters/index.js +0 -115
  1103. package/dist/commands/channel/adapters/index.js.map +0 -1
  1104. package/dist/commands/channel/adapters/types.d.ts +0 -33
  1105. package/dist/commands/channel/adapters/types.d.ts.map +0 -1
  1106. package/dist/commands/channel/adapters/types.js +0 -2
  1107. package/dist/commands/channel/adapters/types.js.map +0 -1
  1108. package/dist/commands/channel/agent-loader.d.ts +0 -32
  1109. package/dist/commands/channel/agent-loader.d.ts.map +0 -1
  1110. package/dist/commands/channel/agent-loader.js +0 -154
  1111. package/dist/commands/channel/agent-loader.js.map +0 -1
  1112. package/dist/commands/channel/context-loader.d.ts +0 -26
  1113. package/dist/commands/channel/context-loader.d.ts.map +0 -1
  1114. package/dist/commands/channel/context-loader.js +0 -290
  1115. package/dist/commands/channel/context-loader.js.map +0 -1
  1116. package/dist/commands/channel/context.d.ts +0 -16
  1117. package/dist/commands/channel/context.d.ts.map +0 -1
  1118. package/dist/commands/channel/context.js +0 -83
  1119. package/dist/commands/channel/context.js.map +0 -1
  1120. package/dist/commands/channel/create.d.ts +0 -27
  1121. package/dist/commands/channel/create.d.ts.map +0 -1
  1122. package/dist/commands/channel/create.js +0 -39
  1123. package/dist/commands/channel/create.js.map +0 -1
  1124. package/dist/commands/channel/dev-parse-trace.d.ts +0 -14
  1125. package/dist/commands/channel/dev-parse-trace.d.ts.map +0 -1
  1126. package/dist/commands/channel/dev-parse-trace.js +0 -70
  1127. package/dist/commands/channel/dev-parse-trace.js.map +0 -1
  1128. package/dist/commands/channel/guard.d.ts +0 -150
  1129. package/dist/commands/channel/guard.d.ts.map +0 -1
  1130. package/dist/commands/channel/guard.js +0 -475
  1131. package/dist/commands/channel/guard.js.map +0 -1
  1132. package/dist/commands/channel/index.d.ts +0 -3
  1133. package/dist/commands/channel/index.d.ts.map +0 -1
  1134. package/dist/commands/channel/index.js +0 -531
  1135. package/dist/commands/channel/index.js.map +0 -1
  1136. package/dist/commands/channel/interrupt.d.ts +0 -10
  1137. package/dist/commands/channel/interrupt.d.ts.map +0 -1
  1138. package/dist/commands/channel/interrupt.js +0 -22
  1139. package/dist/commands/channel/interrupt.js.map +0 -1
  1140. package/dist/commands/channel/kill.d.ts +0 -7
  1141. package/dist/commands/channel/kill.d.ts.map +0 -1
  1142. package/dist/commands/channel/kill.js +0 -121
  1143. package/dist/commands/channel/kill.js.map +0 -1
  1144. package/dist/commands/channel/list.d.ts +0 -17
  1145. package/dist/commands/channel/list.d.ts.map +0 -1
  1146. package/dist/commands/channel/list.js +0 -233
  1147. package/dist/commands/channel/list.js.map +0 -1
  1148. package/dist/commands/channel/messages.d.ts +0 -15
  1149. package/dist/commands/channel/messages.d.ts.map +0 -1
  1150. package/dist/commands/channel/messages.js +0 -245
  1151. package/dist/commands/channel/messages.js.map +0 -1
  1152. package/dist/commands/channel/rm.d.ts +0 -27
  1153. package/dist/commands/channel/rm.d.ts.map +0 -1
  1154. package/dist/commands/channel/rm.js +0 -216
  1155. package/dist/commands/channel/rm.js.map +0 -1
  1156. package/dist/commands/channel/run.d.ts +0 -30
  1157. package/dist/commands/channel/run.d.ts.map +0 -1
  1158. package/dist/commands/channel/run.js +0 -130
  1159. package/dist/commands/channel/run.js.map +0 -1
  1160. package/dist/commands/channel/send.d.ts +0 -11
  1161. package/dist/commands/channel/send.d.ts.map +0 -1
  1162. package/dist/commands/channel/send.js +0 -24
  1163. package/dist/commands/channel/send.js.map +0 -1
  1164. package/dist/commands/channel/spawn.d.ts +0 -40
  1165. package/dist/commands/channel/spawn.d.ts.map +0 -1
  1166. package/dist/commands/channel/spawn.js +0 -242
  1167. package/dist/commands/channel/spawn.js.map +0 -1
  1168. package/dist/commands/channel/store/events.d.ts +0 -39
  1169. package/dist/commands/channel/store/events.d.ts.map +0 -1
  1170. package/dist/commands/channel/store/events.js +0 -87
  1171. package/dist/commands/channel/store/events.js.map +0 -1
  1172. package/dist/commands/channel/store/filter.d.ts +0 -3
  1173. package/dist/commands/channel/store/filter.d.ts.map +0 -1
  1174. package/dist/commands/channel/store/filter.js +0 -2
  1175. package/dist/commands/channel/store/filter.js.map +0 -1
  1176. package/dist/commands/channel/store/lock.d.ts +0 -23
  1177. package/dist/commands/channel/store/lock.d.ts.map +0 -1
  1178. package/dist/commands/channel/store/lock.js +0 -99
  1179. package/dist/commands/channel/store/lock.js.map +0 -1
  1180. package/dist/commands/channel/store/paths.d.ts +0 -63
  1181. package/dist/commands/channel/store/paths.d.ts.map +0 -1
  1182. package/dist/commands/channel/store/paths.js +0 -247
  1183. package/dist/commands/channel/store/paths.js.map +0 -1
  1184. package/dist/commands/channel/store/schema.d.ts +0 -27
  1185. package/dist/commands/channel/store/schema.d.ts.map +0 -1
  1186. package/dist/commands/channel/store/schema.js +0 -34
  1187. package/dist/commands/channel/store/schema.js.map +0 -1
  1188. package/dist/commands/channel/store/thread-state.d.ts +0 -5
  1189. package/dist/commands/channel/store/thread-state.d.ts.map +0 -1
  1190. package/dist/commands/channel/store/thread-state.js +0 -16
  1191. package/dist/commands/channel/store/thread-state.js.map +0 -1
  1192. package/dist/commands/channel/store/watch.d.ts +0 -19
  1193. package/dist/commands/channel/store/watch.d.ts.map +0 -1
  1194. package/dist/commands/channel/store/watch.js +0 -146
  1195. package/dist/commands/channel/store/watch.js.map +0 -1
  1196. package/dist/commands/channel/supervisor/idle.d.ts +0 -46
  1197. package/dist/commands/channel/supervisor/idle.d.ts.map +0 -1
  1198. package/dist/commands/channel/supervisor/idle.js +0 -72
  1199. package/dist/commands/channel/supervisor/idle.js.map +0 -1
  1200. package/dist/commands/channel/supervisor/inbox.d.ts +0 -30
  1201. package/dist/commands/channel/supervisor/inbox.d.ts.map +0 -1
  1202. package/dist/commands/channel/supervisor/inbox.js +0 -160
  1203. package/dist/commands/channel/supervisor/inbox.js.map +0 -1
  1204. package/dist/commands/channel/supervisor/shutdown.d.ts +0 -68
  1205. package/dist/commands/channel/supervisor/shutdown.d.ts.map +0 -1
  1206. package/dist/commands/channel/supervisor/shutdown.js +0 -146
  1207. package/dist/commands/channel/supervisor/shutdown.js.map +0 -1
  1208. package/dist/commands/channel/supervisor/stdout.d.ts +0 -51
  1209. package/dist/commands/channel/supervisor/stdout.d.ts.map +0 -1
  1210. package/dist/commands/channel/supervisor/stdout.js +0 -121
  1211. package/dist/commands/channel/supervisor/stdout.js.map +0 -1
  1212. package/dist/commands/channel/supervisor/turns.d.ts +0 -31
  1213. package/dist/commands/channel/supervisor/turns.d.ts.map +0 -1
  1214. package/dist/commands/channel/supervisor/turns.js +0 -45
  1215. package/dist/commands/channel/supervisor/turns.js.map +0 -1
  1216. package/dist/commands/channel/supervisor/warning.d.ts +0 -48
  1217. package/dist/commands/channel/supervisor/warning.d.ts.map +0 -1
  1218. package/dist/commands/channel/supervisor/warning.js +0 -77
  1219. package/dist/commands/channel/supervisor/warning.js.map +0 -1
  1220. package/dist/commands/channel/supervisor.d.ts +0 -59
  1221. package/dist/commands/channel/supervisor.d.ts.map +0 -1
  1222. package/dist/commands/channel/supervisor.js +0 -345
  1223. package/dist/commands/channel/supervisor.js.map +0 -1
  1224. package/dist/commands/channel/text-body.d.ts +0 -13
  1225. package/dist/commands/channel/text-body.d.ts.map +0 -1
  1226. package/dist/commands/channel/text-body.js +0 -47
  1227. package/dist/commands/channel/text-body.js.map +0 -1
  1228. package/dist/commands/channel/threads.d.ts +0 -39
  1229. package/dist/commands/channel/threads.d.ts.map +0 -1
  1230. package/dist/commands/channel/threads.js +0 -106
  1231. package/dist/commands/channel/threads.js.map +0 -1
  1232. package/dist/commands/channel/title.d.ts +0 -12
  1233. package/dist/commands/channel/title.d.ts.map +0 -1
  1234. package/dist/commands/channel/title.js +0 -24
  1235. package/dist/commands/channel/title.js.map +0 -1
  1236. package/dist/commands/channel/wait.d.ts +0 -17
  1237. package/dist/commands/channel/wait.d.ts.map +0 -1
  1238. package/dist/commands/channel/wait.js +0 -75
  1239. package/dist/commands/channel/wait.js.map +0 -1
  1240. package/dist/commands/validate-rules.d.ts +0 -6
  1241. package/dist/commands/validate-rules.d.ts.map +0 -1
  1242. package/dist/commands/validate-rules.js +0 -33
  1243. package/dist/commands/validate-rules.js.map +0 -1
  1244. package/dist/configurators/cursor.d.ts +0 -21
  1245. package/dist/configurators/cursor.d.ts.map +0 -1
  1246. package/dist/configurators/cursor.js +0 -51
  1247. package/dist/configurators/cursor.js.map +0 -1
  1248. package/dist/migrations/manifests/0.1.0.json +0 -9
  1249. package/dist/migrations/manifests/0.1.1.json +0 -9
  1250. package/dist/migrations/manifests/0.1.2.json +0 -9
  1251. package/dist/migrations/manifests/0.1.3.json +0 -9
  1252. package/dist/migrations/manifests/0.1.4.json +0 -9
  1253. package/dist/migrations/manifests/0.2.1.json +0 -9
  1254. package/dist/migrations/manifests/0.2.10.json +0 -374
  1255. package/dist/migrations/manifests/0.2.2.json +0 -9
  1256. package/dist/migrations/manifests/0.2.3.json +0 -9
  1257. package/dist/migrations/manifests/0.2.4.json +0 -9
  1258. package/dist/migrations/manifests/0.2.5.json +0 -9
  1259. package/dist/migrations/manifests/0.2.6.json +0 -9
  1260. package/dist/migrations/manifests/0.2.7.json +0 -9
  1261. package/dist/migrations/manifests/0.2.8.json +0 -9
  1262. package/dist/migrations/manifests/0.2.9.json +0 -9
  1263. package/dist/migrations/manifests/0.3.0.json +0 -89
  1264. package/dist/migrations/manifests/0.3.1.json +0 -32
  1265. package/dist/migrations/manifests/0.3.2.json +0 -16
  1266. package/dist/migrations/manifests/0.3.3.json +0 -9
  1267. package/dist/migrations/manifests/0.3.4.json +0 -9
  1268. package/dist/migrations/manifests/0.3.5.json +0 -9
  1269. package/dist/migrations/manifests/0.3.6.json +0 -9
  1270. package/dist/migrations/manifests/0.4.0.json +0 -9
  1271. package/dist/migrations/manifests/0.4.1.json +0 -9
  1272. package/dist/migrations/manifests/0.4.2.json +0 -9
  1273. package/dist/migrations/manifests/0.4.3.json +0 -9
  1274. package/dist/migrations/manifests/0.5.0-beta.0.json +0 -9
  1275. package/dist/migrations/manifests/0.5.0-beta.1.json +0 -9
  1276. package/dist/migrations/manifests/0.5.0-beta.2.json +0 -9
  1277. package/dist/migrations/manifests/0.5.0-beta.3.json +0 -9
  1278. package/dist/migrations/manifests/0.5.0-beta.4.json +0 -9
  1279. package/dist/migrations/manifests/0.5.0-beta.5.json +0 -9
  1280. package/dist/pactile/adapters/cursor/index.d.ts +0 -60
  1281. package/dist/pactile/adapters/cursor/index.d.ts.map +0 -1
  1282. package/dist/pactile/adapters/cursor/index.js +0 -186
  1283. package/dist/pactile/adapters/cursor/index.js.map +0 -1
  1284. package/dist/pactile/compat/retired-alternate-client.d.ts +0 -42
  1285. package/dist/pactile/compat/retired-alternate-client.d.ts.map +0 -1
  1286. package/dist/pactile/compat/retired-alternate-client.js +0 -153
  1287. package/dist/pactile/compat/retired-alternate-client.js.map +0 -1
  1288. package/dist/pactile/compat/update-residue.d.ts +0 -4
  1289. package/dist/pactile/compat/update-residue.d.ts.map +0 -1
  1290. package/dist/pactile/compat/update-residue.js +0 -55
  1291. package/dist/pactile/compat/update-residue.js.map +0 -1
  1292. package/dist/templates/common/optional-skills/chrome-cdp/SKILL.md +0 -179
  1293. package/dist/templates/common/optional-skills/chrome-cdp/examples/fetch-hook-api-capture.md +0 -149
  1294. package/dist/templates/common/optional-skills/chrome-cdp/scripts/cdp.mjs +0 -904
  1295. package/dist/templates/cursor/agents/pactile-check.md +0 -58
  1296. package/dist/templates/cursor/agents/pactile-implement.md +0 -56
  1297. package/dist/templates/cursor/agents/pactile-research.md +0 -51
  1298. package/dist/templates/cursor/commands/handoff.md +0 -101
  1299. package/dist/templates/cursor/fixtures/expected-rules.d.ts +0 -14
  1300. package/dist/templates/cursor/fixtures/expected-rules.d.ts.map +0 -1
  1301. package/dist/templates/cursor/fixtures/expected-rules.js +0 -20
  1302. package/dist/templates/cursor/fixtures/expected-rules.js.map +0 -1
  1303. package/dist/templates/cursor/hooks.json +0 -52
  1304. package/dist/templates/cursor/index.d.ts +0 -19
  1305. package/dist/templates/cursor/index.d.ts.map +0 -1
  1306. package/dist/templates/cursor/index.js +0 -19
  1307. package/dist/templates/cursor/index.js.map +0 -1
  1308. package/dist/templates/cursor/rules/pactile-bootstrap.mdc +0 -18
  1309. package/dist/templates/cursor/worktrees.json +0 -11
  1310. package/dist/templates/markdown/framework/cursor-context-injection-guide.md.txt +0 -85
  1311. package/dist/templates/markdown/framework/cursor-native-modes-guide.md.txt +0 -239
  1312. package/dist/templates/markdown/framework/cursor-semantic-compliance.md.txt +0 -41
  1313. package/dist/templates/markdown/framework/cursor-subagent-policy.md.txt +0 -90
  1314. package/dist/templates/markdown/framework/internal-skills-cursor-reachability.md.txt +0 -45
  1315. package/dist/templates/markdown/prompts/run-semantic-slice-12.md.txt +0 -25
  1316. package/dist/templates/pactile/modules/candidate-pool/contract.md +0 -37
  1317. package/dist/templates/pactile/pool/README.md +0 -149
  1318. package/dist/templates/pactile/pool/items/.gitkeep +0 -0
  1319. package/dist/templates/pactile/pool/plan.md +0 -50
  1320. package/dist/templates/pactile/scripts/__init__.py +0 -5
  1321. package/dist/templates/pactile/scripts/add_session.py +0 -547
  1322. package/dist/templates/pactile/scripts/build_context_pack.py +0 -17
  1323. package/dist/templates/pactile/scripts/build_retrieval_pack.py +0 -376
  1324. package/dist/templates/pactile/scripts/codegraph_session_smoke.py +0 -76
  1325. package/dist/templates/pactile/scripts/common/__init__.py +0 -103
  1326. package/dist/templates/pactile/scripts/common/active_task.py +0 -576
  1327. package/dist/templates/pactile/scripts/common/adapter_middleware.py +0 -1373
  1328. package/dist/templates/pactile/scripts/common/artifact_locale.py +0 -303
  1329. package/dist/templates/pactile/scripts/common/artifact_search.py +0 -587
  1330. package/dist/templates/pactile/scripts/common/cli_adapter.py +0 -135
  1331. package/dist/templates/pactile/scripts/common/cli_environment.py +0 -155
  1332. package/dist/templates/pactile/scripts/common/codebase_retrieval_router.py +0 -1339
  1333. package/dist/templates/pactile/scripts/common/config.py +0 -497
  1334. package/dist/templates/pactile/scripts/common/context_pack.py +0 -371
  1335. package/dist/templates/pactile/scripts/common/cursor_retrieval_env.py +0 -31
  1336. package/dist/templates/pactile/scripts/common/developer.py +0 -190
  1337. package/dist/templates/pactile/scripts/common/execution_strategy.py +0 -268
  1338. package/dist/templates/pactile/scripts/common/full_quality.py +0 -237
  1339. package/dist/templates/pactile/scripts/common/git.py +0 -37
  1340. package/dist/templates/pactile/scripts/common/git_context.py +0 -198
  1341. package/dist/templates/pactile/scripts/common/injection_budget.py +0 -317
  1342. package/dist/templates/pactile/scripts/common/io.py +0 -37
  1343. package/dist/templates/pactile/scripts/common/kernel_command.py +0 -369
  1344. package/dist/templates/pactile/scripts/common/lite_context.py +0 -280
  1345. package/dist/templates/pactile/scripts/common/log.py +0 -45
  1346. package/dist/templates/pactile/scripts/common/ondemand_topology.py +0 -419
  1347. package/dist/templates/pactile/scripts/common/packages_context.py +0 -239
  1348. package/dist/templates/pactile/scripts/common/pactile_config.py +0 -131
  1349. package/dist/templates/pactile/scripts/common/parallel_declaration.py +0 -369
  1350. package/dist/templates/pactile/scripts/common/parent_orchestration.py +0 -1198
  1351. package/dist/templates/pactile/scripts/common/paths.py +0 -756
  1352. package/dist/templates/pactile/scripts/common/pool_refs.py +0 -119
  1353. package/dist/templates/pactile/scripts/common/pool_slice.py +0 -269
  1354. package/dist/templates/pactile/scripts/common/pool_store.py +0 -766
  1355. package/dist/templates/pactile/scripts/common/project_file_stats.py +0 -91
  1356. package/dist/templates/pactile/scripts/common/retrieval_adapter_metadata.py +0 -943
  1357. package/dist/templates/pactile/scripts/common/retrieval_agent_instructions.py +0 -123
  1358. package/dist/templates/pactile/scripts/common/retrieval_evidence.py +0 -915
  1359. package/dist/templates/pactile/scripts/common/retrieval_pack.py +0 -422
  1360. package/dist/templates/pactile/scripts/common/retrieval_pack_context.py +0 -122
  1361. package/dist/templates/pactile/scripts/common/retrieval_plan_gate.py +0 -61
  1362. package/dist/templates/pactile/scripts/common/retrieval_result_ranking.py +0 -104
  1363. package/dist/templates/pactile/scripts/common/retrieval_tool_classification.py +0 -166
  1364. package/dist/templates/pactile/scripts/common/safe_commit.py +0 -285
  1365. package/dist/templates/pactile/scripts/common/semantic_plan_gate.py +0 -53
  1366. package/dist/templates/pactile/scripts/common/session_context.py +0 -1213
  1367. package/dist/templates/pactile/scripts/common/session_memory.py +0 -386
  1368. package/dist/templates/pactile/scripts/common/session_pack.py +0 -886
  1369. package/dist/templates/pactile/scripts/common/smart_search_evidence.py +0 -514
  1370. package/dist/templates/pactile/scripts/common/smart_search_resolve.py +0 -150
  1371. package/dist/templates/pactile/scripts/common/subagent_dispatch.py +0 -592
  1372. package/dist/templates/pactile/scripts/common/task_context.py +0 -241
  1373. package/dist/templates/pactile/scripts/common/task_dashboard.py +0 -286
  1374. package/dist/templates/pactile/scripts/common/task_dependencies.py +0 -648
  1375. package/dist/templates/pactile/scripts/common/task_gates.py +0 -2478
  1376. package/dist/templates/pactile/scripts/common/task_map.py +0 -703
  1377. package/dist/templates/pactile/scripts/common/task_queue.py +0 -188
  1378. package/dist/templates/pactile/scripts/common/task_store.py +0 -2252
  1379. package/dist/templates/pactile/scripts/common/task_utils.py +0 -274
  1380. package/dist/templates/pactile/scripts/common/tasks.py +0 -231
  1381. package/dist/templates/pactile/scripts/common/test_adapter_middleware.py +0 -199
  1382. package/dist/templates/pactile/scripts/common/test_depends_mode_block.py +0 -509
  1383. package/dist/templates/pactile/scripts/common/test_full_quality.py +0 -197
  1384. package/dist/templates/pactile/scripts/common/test_kernel_command.py +0 -336
  1385. package/dist/templates/pactile/scripts/common/test_lite_path.py +0 -190
  1386. package/dist/templates/pactile/scripts/common/test_observable_defaults.py +0 -141
  1387. package/dist/templates/pactile/scripts/common/test_ondemand_topology.py +0 -237
  1388. package/dist/templates/pactile/scripts/common/test_parallel_declaration.py +0 -264
  1389. package/dist/templates/pactile/scripts/common/test_pool_slice.py +0 -198
  1390. package/dist/templates/pactile/scripts/common/test_pool_store.py +0 -452
  1391. package/dist/templates/pactile/scripts/common/test_retrieval_arbitration.py +0 -331
  1392. package/dist/templates/pactile/scripts/common/test_task_dashboard.py +0 -155
  1393. package/dist/templates/pactile/scripts/common/test_task_dependencies.py +0 -329
  1394. package/dist/templates/pactile/scripts/common/test_task_store_kernel_patch.py +0 -163
  1395. package/dist/templates/pactile/scripts/common/types.py +0 -110
  1396. package/dist/templates/pactile/scripts/common/workflow_phase.py +0 -194
  1397. package/dist/templates/pactile/scripts/compile_session_pack.py +0 -15
  1398. package/dist/templates/pactile/scripts/cursor_retrieval_probe.py +0 -64
  1399. package/dist/templates/pactile/scripts/cursor_retrieval_probe_prompt.md +0 -33
  1400. package/dist/templates/pactile/scripts/generate_dispatch_prompt.py +0 -182
  1401. package/dist/templates/pactile/scripts/get_context.py +0 -19
  1402. package/dist/templates/pactile/scripts/get_developer.py +0 -26
  1403. package/dist/templates/pactile/scripts/hooks/linear_sync.py +0 -243
  1404. package/dist/templates/pactile/scripts/init_developer.py +0 -51
  1405. package/dist/templates/pactile/scripts/injection_budget_probe.py +0 -69
  1406. package/dist/templates/pactile/scripts/pool.py +0 -237
  1407. package/dist/templates/pactile/scripts/rank_retrieval_candidates.py +0 -98
  1408. package/dist/templates/pactile/scripts/route_codebase_retrieval.py +0 -72
  1409. package/dist/templates/pactile/scripts/run_smart_search.py +0 -12
  1410. package/dist/templates/pactile/scripts/score_evidence.py +0 -131
  1411. package/dist/templates/pactile/scripts/search_artifacts.py +0 -13
  1412. package/dist/templates/pactile/scripts/search_memory.py +0 -12
  1413. package/dist/templates/pactile/scripts/spec_health_outcomes.py +0 -160
  1414. package/dist/templates/pactile/scripts/task.py +0 -1118
  1415. package/dist/templates/pactile/scripts/verify_evidence_probe.py +0 -138
  1416. package/dist/templates/shared-hooks/event-bridge.py +0 -121
  1417. package/dist/templates/shared-hooks/index.d.ts +0 -50
  1418. package/dist/templates/shared-hooks/index.d.ts.map +0 -1
  1419. package/dist/templates/shared-hooks/index.js +0 -96
  1420. package/dist/templates/shared-hooks/index.js.map +0 -1
  1421. package/dist/templates/shared-hooks/inject-retrieval-plan.py +0 -217
  1422. package/dist/templates/shared-hooks/inject-shell-session-context.py +0 -183
  1423. package/dist/templates/shared-hooks/inject-subagent-context.py +0 -267
  1424. package/dist/templates/shared-hooks/inject-workflow-state.py +0 -106
  1425. package/dist/templates/shared-hooks/rename-session-for-task.py +0 -231
  1426. package/dist/templates/shared-hooks/research-end-retrieval-pack.py +0 -345
  1427. package/dist/templates/shared-hooks/session-start.py +0 -355
  1428. package/dist/templates/shared-hooks/spec-write-audit.py +0 -173
  1429. package/dist/utils/cursor-retrieval-env.d.ts +0 -17
  1430. package/dist/utils/cursor-retrieval-env.d.ts.map +0 -1
  1431. package/dist/utils/cursor-retrieval-env.js +0 -19
  1432. package/dist/utils/cursor-retrieval-env.js.map +0 -1
  1433. package/dist/utils/mirror-check.d.ts +0 -22
  1434. package/dist/utils/mirror-check.d.ts.map +0 -1
  1435. package/dist/utils/mirror-check.js +0 -90
  1436. package/dist/utils/mirror-check.js.map +0 -1
  1437. package/dist/utils/proxy.d.ts +0 -25
  1438. package/dist/utils/proxy.d.ts.map +0 -1
  1439. package/dist/utils/proxy.js +0 -60
  1440. package/dist/utils/proxy.js.map +0 -1
  1441. package/dist/utils/validate-rules.d.ts +0 -21
  1442. package/dist/utils/validate-rules.d.ts.map +0 -1
  1443. package/dist/utils/validate-rules.js +0 -88
  1444. package/dist/utils/validate-rules.js.map +0 -1
  1445. package/scripts/postinstall.js +0 -6
@@ -0,0 +1,1169 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import path from "node:path";
3
+ import { KernelError, isKernelCondition, isKernelOutcome, isKernelPhase, isNonNegativeInt, requireNonEmptyString, } from "./kernel-contract.js";
4
+ import { isPlainObject } from "./schema.js";
5
+ import { verifyProjectFileBaseline } from "./project-file-observer.js";
6
+ import { TASK_DELIVERY_LEVELS, TASK_KERNEL_SCHEMA_VERSION, TASK_RUN_WORKSPACE_CLEANUP_RISK_DISCLOSURE, } from "./task-kernel-types.js";
7
+ export function requireArrayEntry(value, field) {
8
+ if (value === undefined)
9
+ throw new KernelError("CORRUPT_STATE", `${field} is missing`);
10
+ return value;
11
+ }
12
+ const FINGERPRINT_RE = /^[a-f0-9]{64}$/;
13
+ const TASK_ID_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
14
+ const RUN_STATES = [
15
+ "waiting",
16
+ "running",
17
+ "completed",
18
+ "failed",
19
+ "blocked",
20
+ "cancelled",
21
+ ];
22
+ export const REVIEW_DECISIONS = [
23
+ "pass",
24
+ "fail",
25
+ "needs-changes",
26
+ ];
27
+ const EVENT_TYPES = [
28
+ "task.created", "task.dependency-added", "run.queued", "run.started", "run.resumed", "run.completed",
29
+ "run.failed", "run.blocked", "run.cancelled", "run.host-bound", "run.host-settlement-recorded", "run.host-settled",
30
+ "run.workspace-bound", "run.workspace-claim-refused", "run.workspace-integrated", "run.workspace-cleanup-acquired", "run.workspace-reclaimed",
31
+ "run.workspace-cleanup-refused", "run.workspace-retained", "run.workspace-recovery-required", "review.recorded", "task.closed",
32
+ ];
33
+ export function isTaskDeliveryLevel(value) {
34
+ return (typeof value === "string" &&
35
+ TASK_DELIVERY_LEVELS.includes(value));
36
+ }
37
+ export function fingerprintTaskValue(value) {
38
+ return createHash("sha256").update(stableJson(value)).digest("hex");
39
+ }
40
+ export function createTaskCandidateSnapshot(entries) {
41
+ const parsed = parseSnapshotEntries(entries, "candidateEntries");
42
+ if (!parsed.length)
43
+ throw new KernelError("INVALID_REQUEST", "a completed Run requires at least one candidate snapshot entry");
44
+ return {
45
+ id: randomUUID(),
46
+ entries: parsed,
47
+ fingerprint: fingerprintTaskValue(parsed),
48
+ };
49
+ }
50
+ /** Pure V2 lifecycle projection for consumers that need replayable gate facts without mutation. */
51
+ export function projectTaskKernelLifecycle(kernel) {
52
+ const latestRun = kernel.runs.at(-1) ?? null;
53
+ const candidate = latestRun?.candidateSnapshot ?? null;
54
+ const latestReview = latestRun && candidate
55
+ ? (kernel.reviews
56
+ .filter((review) => review.runId === latestRun.id &&
57
+ review.candidateSnapshotId === candidate.id &&
58
+ review.candidateFingerprint === candidate.fingerprint)
59
+ .at(-1) ?? null)
60
+ : null;
61
+ const missingAcceptanceCriteria = latestReview
62
+ ? kernel.definition.acceptanceCriteria
63
+ .filter((criterion) => !getOwnRecordValue(latestReview.acceptanceEvidence, criterion.id)
64
+ ?.length)
65
+ .map((criterion) => criterion.id)
66
+ : kernel.definition.acceptanceCriteria.map((criterion) => criterion.id);
67
+ const activeRun = kernel.runs.find((run) => run.state === "running" || run.state === "waiting") ?? null;
68
+ return {
69
+ taskId: kernel.identity.taskId,
70
+ revision: kernel.revision,
71
+ phase: kernel.phase,
72
+ condition: kernel.condition,
73
+ outcome: kernel.outcome,
74
+ deliveryLevel: kernel.definition.deliveryLevel,
75
+ dependencies: [...kernel.definition.dependencies],
76
+ closed: kernel.phase === "close" && kernel.closure !== null,
77
+ approvalSnapshot: latestRun
78
+ ? {
79
+ recorded: true,
80
+ runId: latestRun.id,
81
+ approvedBy: latestRun.authorization.approvedBy,
82
+ approvedAt: latestRun.authorization.approvedAt,
83
+ scope: latestRun.authorization.scope,
84
+ evidenceRef: latestRun.authorization.evidenceRef,
85
+ }
86
+ : {
87
+ recorded: false,
88
+ runId: null,
89
+ approvedBy: null,
90
+ approvedAt: null,
91
+ scope: null,
92
+ evidenceRef: null,
93
+ },
94
+ gateSnapshot: {
95
+ kernelRevision: kernel.revision,
96
+ runStart: {
97
+ phaseAllowsRun: ["define", "approve", "execute", "verify"].includes(kernel.phase),
98
+ activeRunId: activeRun?.id ?? null,
99
+ hardDependencies: [...kernel.definition.dependencies],
100
+ dependencyKernelCheckRequired: kernel.definition.dependencies.length > 0,
101
+ },
102
+ review: {
103
+ phaseAllowsReview: kernel.phase === "verify" &&
104
+ latestRun?.state === "completed" &&
105
+ candidate !== null,
106
+ runId: latestRun?.id ?? null,
107
+ candidateSnapshotId: candidate?.id ?? null,
108
+ latestReviewId: latestReview?.id ?? null,
109
+ latestDecision: latestReview?.decision ?? null,
110
+ unresolvedBlockers: [...(latestReview?.unresolvedBlockers ?? [])],
111
+ },
112
+ close: {
113
+ phaseAllowsClose: kernel.phase === "verify" &&
114
+ latestRun?.state === "completed" &&
115
+ candidate !== null &&
116
+ latestReview?.decision === "pass",
117
+ runId: latestRun?.id ?? null,
118
+ reviewId: latestReview?.id ?? null,
119
+ candidateSnapshotId: candidate?.id ?? null,
120
+ candidateFingerprint: candidate?.fingerprint ?? null,
121
+ missingAcceptanceCriteria,
122
+ unresolvedBlockers: [...(latestReview?.unresolvedBlockers ?? [])],
123
+ currentCandidateObservationRequired: true,
124
+ deliveryEvidenceRequired: true,
125
+ },
126
+ },
127
+ };
128
+ }
129
+ export function parseTaskKernelSnapshotV2(input) {
130
+ if (!isPlainObject(input) ||
131
+ input.schemaVersion !== TASK_KERNEL_SCHEMA_VERSION) {
132
+ throw new KernelError("CORRUPT_STATE", "kernel is not a Task Kernel schema v2 snapshot");
133
+ }
134
+ const identity = parseObject(input.identity, "kernel.identity");
135
+ const taskId = requireTaskId(identity.taskId, "kernel.identity.taskId");
136
+ const definition = parseDefinition(input.definition, "kernel.definition");
137
+ if (definition.taskId !== taskId)
138
+ throw new KernelError("CORRUPT_STATE", "kernel identity and Task definition IDs differ");
139
+ if (!isNonNegativeInt(input.revision))
140
+ throw new KernelError("CORRUPT_STATE", "kernel.revision must be a non-negative integer");
141
+ if (!isKernelPhase(input.phase))
142
+ throw new KernelError("CORRUPT_STATE", "kernel.phase is invalid");
143
+ if (!isKernelCondition(input.condition))
144
+ throw new KernelError("CORRUPT_STATE", "kernel.condition is invalid");
145
+ if (input.outcome !== null && !isKernelOutcome(input.outcome))
146
+ throw new KernelError("CORRUPT_STATE", "kernel.outcome is invalid");
147
+ if (!Array.isArray(input.runs) ||
148
+ !Array.isArray(input.reviews) ||
149
+ !Array.isArray(input.audit) ||
150
+ !Array.isArray(input.events)) {
151
+ throw new KernelError("CORRUPT_STATE", "kernel runs, reviews, audit, and events must be arrays");
152
+ }
153
+ const runs = input.runs.map((value, index) => parseRun(value, `kernel.runs[${index}]`));
154
+ const reviews = input.reviews.map((value, index) => parseReview(value, `kernel.reviews[${index}]`));
155
+ const audit = input.audit.map((value, index) => parseKernelAudit(value, index));
156
+ const events = input.events.map((value, index) => parseEvent(value, index));
157
+ const runIds = new Set();
158
+ for (const run of runs) {
159
+ if (run.taskId !== taskId || runIds.has(run.id))
160
+ throw new KernelError("CORRUPT_STATE", "Run identity is duplicated or belongs to another Task");
161
+ runIds.add(run.id);
162
+ }
163
+ const reviewIds = new Set();
164
+ for (const review of reviews) {
165
+ if (review.taskId !== taskId ||
166
+ !runIds.has(review.runId) ||
167
+ reviewIds.has(review.id)) {
168
+ throw new KernelError("CORRUPT_STATE", "Review identity is duplicated or references another Task or missing Run");
169
+ }
170
+ const run = runs.find((candidate) => candidate.id === review.runId);
171
+ if (review.candidateSnapshotId !== run?.candidateSnapshot?.id ||
172
+ review.candidateFingerprint !== run.candidateSnapshot.fingerprint) {
173
+ throw new KernelError("CORRUPT_STATE", "Review is not bound to its Run candidate snapshot");
174
+ }
175
+ if (review.decision === "pass" && review.unresolvedBlockers.length)
176
+ throw new KernelError("CORRUPT_STATE", "passing Review cannot contain unresolved blockers");
177
+ reviewIds.add(review.id);
178
+ }
179
+ const closure = input.closure === null
180
+ ? null
181
+ : parseClosure(input.closure, "kernel.closure");
182
+ if (closure &&
183
+ (!runIds.has(closure.runId) || !reviewIds.has(closure.reviewId))) {
184
+ throw new KernelError("CORRUPT_STATE", "Task closure references a missing Run or Review");
185
+ }
186
+ if (closure) {
187
+ const run = runs.find((candidate) => candidate.id === closure.runId);
188
+ const review = reviews.find((candidate) => candidate.id === closure.reviewId);
189
+ if (!run || !review || !run.candidateSnapshot)
190
+ throw new KernelError("CORRUPT_STATE", "Task closure references an incomplete Run or Review");
191
+ if (closure.candidateSnapshotId !== run.candidateSnapshot.id ||
192
+ closure.candidateFingerprint !== run.candidateSnapshot.fingerprint ||
193
+ review.runId !== run.id ||
194
+ review.candidateSnapshotId !== closure.candidateSnapshotId ||
195
+ review.candidateFingerprint !== closure.candidateFingerprint) {
196
+ throw new KernelError("CORRUPT_STATE", "Task closure is not bound to its Run and Review candidate snapshot");
197
+ }
198
+ if (closure.candidateObservation.snapshotId !== closure.candidateSnapshotId ||
199
+ closure.candidateObservation.fingerprint !== closure.candidateFingerprint) {
200
+ throw new KernelError("CORRUPT_STATE", "Task closure candidate observation does not match the accepted candidate");
201
+ }
202
+ }
203
+ validateAuditChain(audit, input.revision);
204
+ validateEvents(events, input.revision);
205
+ return {
206
+ schemaVersion: TASK_KERNEL_SCHEMA_VERSION,
207
+ identity: { taskId },
208
+ revision: input.revision,
209
+ phase: input.phase,
210
+ condition: input.condition,
211
+ outcome: input.outcome,
212
+ definition,
213
+ runs,
214
+ reviews,
215
+ closure,
216
+ audit,
217
+ events,
218
+ };
219
+ }
220
+ export function parseDefinition(value, field) {
221
+ const input = parseObject(value, field);
222
+ const taskId = requireTaskId(input.taskId, `${field}.taskId`);
223
+ if (!isTaskDeliveryLevel(input.deliveryLevel))
224
+ throw new KernelError("INVALID_REQUEST", `${field}.deliveryLevel is invalid`);
225
+ if (!Array.isArray(input.acceptanceCriteria) ||
226
+ input.acceptanceCriteria.length === 0)
227
+ throw new KernelError("INVALID_REQUEST", `${field}.acceptanceCriteria must contain at least one criterion`);
228
+ const criteria = input.acceptanceCriteria.map((item, index) => {
229
+ const criterion = parseObject(item, `${field}.acceptanceCriteria[${index}]`);
230
+ return {
231
+ id: requireNonEmptyString(criterion.id, `${field}.acceptanceCriteria[${index}].id`),
232
+ description: requireNonEmptyString(criterion.description, `${field}.acceptanceCriteria[${index}].description`),
233
+ };
234
+ });
235
+ if (new Set(criteria.map((item) => item.id)).size !== criteria.length)
236
+ throw new KernelError("INVALID_REQUEST", `${field}.acceptanceCriteria IDs must be unique`);
237
+ const dependencies = parseStringArray(input.dependencies, `${field}.dependencies`, true).map((id, index) => requireTaskId(id, `${field}.dependencies[${index}]`));
238
+ if (new Set(dependencies).size !== dependencies.length ||
239
+ dependencies.includes(taskId))
240
+ throw new KernelError("INVALID_REQUEST", `${field}.dependencies must be unique and cannot include the Task itself`);
241
+ return {
242
+ taskId,
243
+ title: requireNonEmptyString(input.title, `${field}.title`),
244
+ description: input.description === undefined
245
+ ? ""
246
+ : requireString(input.description, `${field}.description`, true),
247
+ deliverable: requireNonEmptyString(input.deliverable, `${field}.deliverable`),
248
+ deliveryLevel: input.deliveryLevel,
249
+ acceptanceCriteria: criteria,
250
+ dependencies,
251
+ createdAt: requireNonEmptyString(input.createdAt, `${field}.createdAt`),
252
+ createdBy: requireNonEmptyString(input.createdBy, `${field}.createdBy`),
253
+ };
254
+ }
255
+ function parseRun(value, field) {
256
+ const input = parseObject(value, field);
257
+ const state = input.state;
258
+ if (typeof state !== "string" ||
259
+ !RUN_STATES.includes(state))
260
+ throw new KernelError("CORRUPT_STATE", `${field}.state is invalid`);
261
+ const snapshot = input.candidateSnapshot === null
262
+ ? null
263
+ : parseCandidateSnapshot(input.candidateSnapshot, `${field}.candidateSnapshot`);
264
+ const result = input.result === null
265
+ ? null
266
+ : parseRunResult(input.result, `${field}.result`);
267
+ const runId = requireNonEmptyString(input.id, `${field}.id`);
268
+ const workspace = input.workspace === null
269
+ ? null
270
+ : parseWorkspaceBinding(input.workspace, runId, `${field}.workspace`);
271
+ if (result?.evidenceVerification &&
272
+ (!snapshot ||
273
+ result.evidenceVerification.runId !== runId ||
274
+ result.evidenceVerification.candidateSnapshotId !== snapshot.id ||
275
+ result.evidenceVerification.candidateFingerprint !== snapshot.fingerprint ||
276
+ JSON.stringify(result.evidenceVerification.items.map((item) => item.ref)) !==
277
+ JSON.stringify(result.evidenceRefs))) {
278
+ throw new KernelError("CORRUPT_STATE", `${field}.result.evidenceVerification must bind exactly to the Run result and candidate snapshot`);
279
+ }
280
+ const failure = input.failure === null
281
+ ? null
282
+ : parseFailure(input.failure, `${field}.failure`);
283
+ if ((state === "running" || state === "waiting") &&
284
+ (snapshot || result || failure || input.completedAt !== null))
285
+ throw new KernelError("CORRUPT_STATE", `${field} non-terminal state cannot have terminal data`);
286
+ if (state === "completed" &&
287
+ (!snapshot || !result || failure || typeof input.completedAt !== "string"))
288
+ throw new KernelError("CORRUPT_STATE", `${field} completed state requires candidate, result, and completion time`);
289
+ if ((state === "failed" || state === "blocked" || state === "cancelled") &&
290
+ (!failure ||
291
+ typeof input.completedAt !== "string" ||
292
+ (result && !result.summary)))
293
+ throw new KernelError("CORRUPT_STATE", `${field} failed/blocked/cancelled state requires failure details and completion time`);
294
+ const candidateBaseSha = input.candidateBaseSha === undefined || input.candidateBaseSha === null
295
+ ? (workspace?.baseSha ?? null)
296
+ : parseCommitSha(input.candidateBaseSha, `${field}.candidateBaseSha`);
297
+ const candidateBaseBranch = input.candidateBaseBranch === undefined ||
298
+ input.candidateBaseBranch === null
299
+ ? (workspace?.branch ?? null)
300
+ : requireNonEmptyString(input.candidateBaseBranch, `${field}.candidateBaseBranch`);
301
+ if (candidateBaseBranch !== null &&
302
+ candidateBaseBranch !== candidateBaseBranch.trim()) {
303
+ throw new KernelError("CORRUPT_STATE", `${field}.candidateBaseBranch must be a trimmed branch name`);
304
+ }
305
+ const candidateFileBaseline = input.candidateFileBaseline === undefined ||
306
+ input.candidateFileBaseline === null
307
+ ? null
308
+ : parseProjectFileBaseline(input.candidateFileBaseline, `${field}.candidateFileBaseline`);
309
+ if (candidateFileBaseline !== null &&
310
+ (workspace !== null || candidateBaseSha !== null || candidateBaseBranch !== null)) {
311
+ throw new KernelError("CORRUPT_STATE", `${field} cannot combine a non-Git file baseline with a Git or managed-worktree baseline`);
312
+ }
313
+ if (workspace &&
314
+ (candidateBaseSha?.toLowerCase() !== workspace.baseSha.toLowerCase() ||
315
+ candidateBaseBranch !== workspace.branch)) {
316
+ throw new KernelError("CORRUPT_STATE", `${field} candidate Git baseline must match its workspace base and branch`);
317
+ }
318
+ return {
319
+ id: runId,
320
+ taskId: requireTaskId(input.taskId, `${field}.taskId`),
321
+ attempt: requirePositiveInt(input.attempt, `${field}.attempt`),
322
+ sequence: requirePositiveInt(input.sequence, `${field}.sequence`),
323
+ state: state,
324
+ startedAt: requireNonEmptyString(input.startedAt, `${field}.startedAt`),
325
+ startedBy: requireNonEmptyString(input.startedBy, `${field}.startedBy`),
326
+ input: parseRunInput(input.input, `${field}.input`),
327
+ authorization: parseAuthorization(input.authorization, `${field}.authorization`),
328
+ writeSetSnapshot: parseStringArray(input.writeSetSnapshot, `${field}.writeSetSnapshot`, true),
329
+ estimatedDurations: parseDurations(input.estimatedDurations, `${field}.estimatedDurations`),
330
+ measurementRefs: parseMeasurementRefs(input.measurementRefs, `${field}.measurementRefs`),
331
+ candidateBaseSha,
332
+ candidateBaseBranch,
333
+ candidateFileBaseline,
334
+ workspace,
335
+ host: input.host === null
336
+ ? null
337
+ : parseHostBinding(input.host, `${field}.host`),
338
+ candidateSnapshot: snapshot,
339
+ result,
340
+ failure,
341
+ completedAt: input.completedAt === null
342
+ ? null
343
+ : requireNonEmptyString(input.completedAt, `${field}.completedAt`),
344
+ };
345
+ }
346
+ function parseProjectFileBaseline(value, field) {
347
+ const input = parseObject(value, field);
348
+ if (input.schemaVersion !== 1 ||
349
+ input.source !== "pactile-project-file-baseline-v1" ||
350
+ input.policy !== "project-files-bounded-v1" ||
351
+ !Array.isArray(input.files)) {
352
+ throw new KernelError("CORRUPT_STATE", `${field} has an unsupported policy or shape`);
353
+ }
354
+ const files = input.files.map((value, index) => {
355
+ const entry = parseObject(value, `${field}.files[${index}]`);
356
+ if (!isNonNegativeInt(entry.sizeBytes)) {
357
+ throw new KernelError("CORRUPT_STATE", `${field}.files[${index}].sizeBytes must be a non-negative integer`);
358
+ }
359
+ return {
360
+ path: requireNonEmptyString(entry.path, `${field}.files[${index}].path`),
361
+ sizeBytes: entry.sizeBytes,
362
+ sha256: requireFingerprint(entry.sha256, `${field}.files[${index}].sha256`),
363
+ };
364
+ });
365
+ const baseline = {
366
+ schemaVersion: 1,
367
+ source: "pactile-project-file-baseline-v1",
368
+ policy: "project-files-bounded-v1",
369
+ rootIdentitySha256: requireFingerprint(input.rootIdentitySha256, `${field}.rootIdentitySha256`),
370
+ files,
371
+ fingerprint: requireFingerprint(input.fingerprint, `${field}.fingerprint`),
372
+ };
373
+ if (!verifyProjectFileBaseline(baseline)) {
374
+ throw new KernelError("CORRUPT_STATE", `${field} fingerprint, paths, or snapshot budget is invalid`);
375
+ }
376
+ return baseline;
377
+ }
378
+ function parseReview(value, field) {
379
+ const input = parseObject(value, field);
380
+ if (!REVIEW_DECISIONS.includes(input.decision))
381
+ throw new KernelError("CORRUPT_STATE", `${field}.decision is invalid`);
382
+ if (input.independent !== true)
383
+ throw new KernelError("CORRUPT_STATE", `${field}.independent must be true`);
384
+ const unresolvedBlockers = parseStringArray(input.unresolvedBlockers, `${field}.unresolvedBlockers`, true);
385
+ if (input.decision === "pass" && unresolvedBlockers.length)
386
+ throw new KernelError("CORRUPT_STATE", `${field} passing Review cannot contain unresolved blockers`);
387
+ const id = requireNonEmptyString(input.id, `${field}.id`);
388
+ const taskId = requireTaskId(input.taskId, `${field}.taskId`);
389
+ const runId = requireNonEmptyString(input.runId, `${field}.runId`);
390
+ const candidateSnapshotId = requireNonEmptyString(input.candidateSnapshotId, `${field}.candidateSnapshotId`);
391
+ const candidateFingerprint = requireFingerprint(input.candidateFingerprint, `${field}.candidateFingerprint`);
392
+ const reviewer = requireNonEmptyString(input.reviewer, `${field}.reviewer`);
393
+ const evidenceRefs = parseStringArray(input.evidenceRefs, `${field}.evidenceRefs`);
394
+ const acceptanceEvidence = parseEvidenceMap(input.acceptanceEvidence, `${field}.acceptanceEvidence`, input.decision !== "pass");
395
+ const evidenceVerification = input.evidenceVerification === undefined
396
+ ? undefined
397
+ : parseReviewEvidenceVerification(input.evidenceVerification, `${field}.evidenceVerification`, {
398
+ runId,
399
+ candidateSnapshotId,
400
+ candidateFingerprint,
401
+ evidenceRefs,
402
+ acceptanceEvidence,
403
+ });
404
+ return {
405
+ id,
406
+ taskId,
407
+ runId,
408
+ candidateSnapshotId,
409
+ candidateFingerprint,
410
+ reviewer,
411
+ independent: true,
412
+ decision: input.decision,
413
+ evidenceRefs,
414
+ acceptanceEvidence,
415
+ ...(evidenceVerification === undefined ? {} : { evidenceVerification }),
416
+ unresolvedBlockers,
417
+ reviewedAt: requireNonEmptyString(input.reviewedAt, `${field}.reviewedAt`),
418
+ };
419
+ }
420
+ function parseReviewEvidenceVerification(value, field, binding) {
421
+ const input = parseObject(value, field);
422
+ if (input.schemaVersion !== 1 ||
423
+ input.source !== "pactile-task-review-evidence-v1") {
424
+ throw new KernelError("CORRUPT_STATE", `${field} has an unsupported source or schema version`);
425
+ }
426
+ const observedAt = requireNonEmptyString(input.observedAt, `${field}.observedAt`);
427
+ if (!Number.isFinite(Date.parse(observedAt))) {
428
+ throw new KernelError("CORRUPT_STATE", `${field}.observedAt is invalid`);
429
+ }
430
+ const runId = requireNonEmptyString(input.runId, `${field}.runId`);
431
+ const candidateSnapshotId = requireNonEmptyString(input.candidateSnapshotId, `${field}.candidateSnapshotId`);
432
+ const candidateFingerprint = requireFingerprint(input.candidateFingerprint, `${field}.candidateFingerprint`);
433
+ if (runId !== binding.runId ||
434
+ candidateSnapshotId !== binding.candidateSnapshotId ||
435
+ candidateFingerprint !== binding.candidateFingerprint) {
436
+ throw new KernelError("CORRUPT_STATE", `${field} is not bound to the Review Run and candidate`);
437
+ }
438
+ if (!Array.isArray(input.items)) {
439
+ throw new KernelError("CORRUPT_STATE", `${field}.items must be an array`);
440
+ }
441
+ const items = input.items.map((value, index) => {
442
+ const itemField = `${field}.items[${index}]`;
443
+ const item = parseObject(value, itemField);
444
+ const source = item.source;
445
+ if (source !== "candidate-snapshot" &&
446
+ source !== "run-evidence" &&
447
+ source !== "task-evidence" &&
448
+ source !== "pactile-receipt") {
449
+ throw new KernelError("CORRUPT_STATE", `${itemField}.source is invalid`);
450
+ }
451
+ if (!isNonNegativeInt(item.sizeBytes)) {
452
+ throw new KernelError("CORRUPT_STATE", `${itemField}.sizeBytes must be a non-negative integer`);
453
+ }
454
+ return {
455
+ ref: parseRepositoryRelativePath(item.ref, `${itemField}.ref`),
456
+ sha256: requireFingerprint(item.sha256, `${itemField}.sha256`),
457
+ sizeBytes: item.sizeBytes,
458
+ source: source,
459
+ };
460
+ });
461
+ const refs = items.map((item) => item.ref);
462
+ if (new Set(refs).size !== refs.length) {
463
+ throw new KernelError("CORRUPT_STATE", `${field}.items contains duplicate refs`);
464
+ }
465
+ const expectedRefs = [
466
+ ...new Set([
467
+ ...binding.evidenceRefs,
468
+ ...Object.values(binding.acceptanceEvidence).flat(),
469
+ ]),
470
+ ].sort();
471
+ if (JSON.stringify([...refs].sort()) !== JSON.stringify(expectedRefs)) {
472
+ throw new KernelError("CORRUPT_STATE", `${field}.items must match all Review and acceptance evidence references`);
473
+ }
474
+ return {
475
+ schemaVersion: 1,
476
+ source: "pactile-task-review-evidence-v1",
477
+ observedAt,
478
+ runId,
479
+ candidateSnapshotId,
480
+ candidateFingerprint,
481
+ items,
482
+ };
483
+ }
484
+ function parseClosure(value, field) {
485
+ const input = parseObject(value, field);
486
+ const deliveryEvidence = parseDeliveryEvidence(input.deliveryEvidence);
487
+ const deliveryVerification = input.deliveryVerification === undefined
488
+ ? undefined
489
+ : parseDeliveryVerification(input.deliveryVerification, `${field}.deliveryVerification`);
490
+ if (deliveryVerification &&
491
+ (deliveryVerification.level !== deliveryEvidence.level ||
492
+ deliveryVerification.path !== deliveryEvidence.path)) {
493
+ throw new KernelError("CORRUPT_STATE", `${field}.deliveryVerification must match the recorded delivery level and path`);
494
+ }
495
+ return {
496
+ runId: requireNonEmptyString(input.runId, `${field}.runId`),
497
+ reviewId: requireNonEmptyString(input.reviewId, `${field}.reviewId`),
498
+ candidateSnapshotId: requireNonEmptyString(input.candidateSnapshotId, `${field}.candidateSnapshotId`),
499
+ candidateFingerprint: requireFingerprint(input.candidateFingerprint, `${field}.candidateFingerprint`),
500
+ candidateObservation: parseCandidateObservation(input.candidateObservation),
501
+ deliveryEvidence,
502
+ acceptanceEvidence: parseEvidenceMap(input.acceptanceEvidence, `${field}.acceptanceEvidence`),
503
+ ...(deliveryVerification === undefined ? {} : { deliveryVerification }),
504
+ closedAt: requireNonEmptyString(input.closedAt, `${field}.closedAt`),
505
+ closedBy: requireNonEmptyString(input.closedBy, `${field}.closedBy`),
506
+ };
507
+ }
508
+ function parseCommitSha(value, field) {
509
+ const sha = requireNonEmptyString(value, field).toLowerCase();
510
+ if (!/^[a-f0-9]{40}([a-f0-9]{24})?$/.test(sha)) {
511
+ throw new KernelError("CORRUPT_STATE", `${field} must be a full Git commit SHA`);
512
+ }
513
+ return sha;
514
+ }
515
+ function parseDeliveryVerification(value, field) {
516
+ const input = parseObject(value, field);
517
+ if (input.schemaVersion !== 1 ||
518
+ input.source !== "pactile-task-delivery-observer-v1") {
519
+ throw new KernelError("CORRUPT_STATE", `${field} has an unsupported source or schema version`);
520
+ }
521
+ if (!isTaskDeliveryLevel(input.level))
522
+ throw new KernelError("CORRUPT_STATE", `${field}.level is invalid`);
523
+ const nullableSha = (item, name) => item === null ? null : parseCommitSha(item, `${field}.${name}`);
524
+ const nullableFileHash = (item, name) => item === null ? null : requireFingerprint(item, `${field}.${name}`);
525
+ let pullRequest = null;
526
+ if (input.pullRequest !== null) {
527
+ const pr = parseObject(input.pullRequest, `${field}.pullRequest`);
528
+ if (pr.source !== "github-rest-pull-request-v1" ||
529
+ (pr.state !== "open" && pr.state !== "closed")) {
530
+ throw new KernelError("CORRUPT_STATE", `${field}.pullRequest source or state is invalid`);
531
+ }
532
+ if (typeof pr.draft !== "boolean" ||
533
+ typeof pr.merged !== "boolean" ||
534
+ !Number.isSafeInteger(pr.number) ||
535
+ Number(pr.number) < 1) {
536
+ throw new KernelError("CORRUPT_STATE", `${field}.pullRequest facts are invalid`);
537
+ }
538
+ let url;
539
+ try {
540
+ url = new URL(requireNonEmptyString(pr.url, `${field}.pullRequest.url`));
541
+ }
542
+ catch {
543
+ throw new KernelError("CORRUPT_STATE", `${field}.pullRequest.url must be an absolute HTTPS URL`);
544
+ }
545
+ if (url.protocol !== "https:")
546
+ throw new KernelError("CORRUPT_STATE", `${field}.pullRequest.url must be HTTPS`);
547
+ pullRequest = {
548
+ source: "github-rest-pull-request-v1",
549
+ url: url.toString(),
550
+ repository: requireNonEmptyString(pr.repository, `${field}.pullRequest.repository`).toLowerCase(),
551
+ number: Number(pr.number),
552
+ state: pr.state,
553
+ draft: pr.draft,
554
+ headSha: parseCommitSha(pr.headSha, `${field}.pullRequest.headSha`),
555
+ baseBranch: requireNonEmptyString(pr.baseBranch, `${field}.pullRequest.baseBranch`),
556
+ merged: pr.merged,
557
+ mergeCommitSha: nullableSha(pr.mergeCommitSha, `${field}.pullRequest.mergeCommitSha`),
558
+ };
559
+ if (pullRequest.merged && pullRequest.state !== "closed") {
560
+ throw new KernelError("CORRUPT_STATE", `${field}.pullRequest merged state is inconsistent`);
561
+ }
562
+ }
563
+ if (input.ancestryVerified !== null &&
564
+ typeof input.ancestryVerified !== "boolean") {
565
+ throw new KernelError("CORRUPT_STATE", `${field}.ancestryVerified must be boolean or null`);
566
+ }
567
+ const candidateFingerprint = requireFingerprint(input.candidateFingerprint, `${field}.candidateFingerprint`);
568
+ const candidateSource = input.candidateSource === undefined
569
+ ? (input.candidateHead === null ? null : "git-working-tree-v1")
570
+ : input.candidateSource;
571
+ if (candidateSource !== "git-working-tree-v1" &&
572
+ candidateSource !== "project-files-v1") {
573
+ throw new KernelError("CORRUPT_STATE", `${field}.candidateSource is invalid`);
574
+ }
575
+ const candidateHead = input.candidateHead === null
576
+ ? null
577
+ : parseCommitSha(input.candidateHead, `${field}.candidateHead`);
578
+ if ((candidateSource === "git-working-tree-v1" && candidateHead === null) ||
579
+ (candidateSource === "project-files-v1" && candidateHead !== null)) {
580
+ throw new KernelError("CORRUPT_STATE", `${field}.candidateSource and candidateHead disagree`);
581
+ }
582
+ const path = parseRepositoryRelativePath(input.path, `${field}.path`);
583
+ const fileSha256 = requireFingerprint(input.fileSha256, `${field}.fileSha256`);
584
+ const gitBlobSha256 = nullableFileHash(input.gitBlobSha256, "gitBlobSha256");
585
+ const targetBranch = input.targetBranch === null
586
+ ? null
587
+ : requireNonEmptyString(input.targetBranch, `${field}.targetBranch`);
588
+ const targetSha = nullableSha(input.targetSha, "targetSha");
589
+ const integrationCommitSha = nullableSha(input.integrationCommitSha, "integrationCommitSha");
590
+ const ancestryVerified = input.ancestryVerified;
591
+ if (candidateSource === "project-files-v1" &&
592
+ (input.level === "pull-request" ||
593
+ input.level === "merged-result" ||
594
+ gitBlobSha256 !== null ||
595
+ pullRequest !== null ||
596
+ targetBranch !== null ||
597
+ targetSha !== null ||
598
+ integrationCommitSha !== null ||
599
+ ancestryVerified !== null)) {
600
+ throw new KernelError("CORRUPT_STATE", `${field} non-Git snapshots only support local-result or documentation delivery`);
601
+ }
602
+ if (pullRequest) {
603
+ const url = new URL(pullRequest.url);
604
+ const parts = url.pathname.split("/").filter(Boolean);
605
+ const urlRepository = `${parts[0] ?? ""}/${parts[1] ?? ""}`.toLowerCase();
606
+ if (url.origin !== "https://github.com" ||
607
+ url.search.length > 0 ||
608
+ url.hash.length > 0 ||
609
+ parts.length !== 4 ||
610
+ parts[2]?.toLowerCase() !== "pull" ||
611
+ !/^\d+$/.test(parts[3] ?? "") ||
612
+ urlRepository !== pullRequest.repository ||
613
+ Number(parts[3]) !== pullRequest.number) {
614
+ throw new KernelError("CORRUPT_STATE", `${field}.pullRequest URL must identify its recorded GitHub repository and number`);
615
+ }
616
+ }
617
+ if (input.level === "pull-request") {
618
+ if (candidateSource !== "git-working-tree-v1" ||
619
+ pullRequest?.state !== "open" ||
620
+ pullRequest.merged ||
621
+ pullRequest.draft ||
622
+ pullRequest.headSha !== candidateHead ||
623
+ gitBlobSha256 === null ||
624
+ fileSha256 !== gitBlobSha256 ||
625
+ targetBranch !== null ||
626
+ targetSha !== null ||
627
+ integrationCommitSha !== null ||
628
+ ancestryVerified !== null) {
629
+ throw new KernelError("CORRUPT_STATE", `${field} has inconsistent pull-request delivery facts`);
630
+ }
631
+ }
632
+ else if (input.level === "merged-result") {
633
+ if (candidateSource !== "git-working-tree-v1" ||
634
+ pullRequest?.state !== "closed" ||
635
+ !pullRequest.merged ||
636
+ pullRequest.draft ||
637
+ pullRequest.headSha !== candidateHead ||
638
+ gitBlobSha256 === null ||
639
+ fileSha256 !== gitBlobSha256 ||
640
+ !pullRequest.mergeCommitSha ||
641
+ !targetBranch ||
642
+ !targetSha ||
643
+ integrationCommitSha !== pullRequest.mergeCommitSha ||
644
+ ancestryVerified !== true) {
645
+ throw new KernelError("CORRUPT_STATE", `${field} has inconsistent merged-result delivery facts`);
646
+ }
647
+ }
648
+ else if (pullRequest !== null ||
649
+ targetBranch !== null ||
650
+ targetSha !== null ||
651
+ integrationCommitSha !== null ||
652
+ ancestryVerified !== null) {
653
+ throw new KernelError("CORRUPT_STATE", `${field} has integration or Pull Request facts for a local delivery`);
654
+ }
655
+ return {
656
+ schemaVersion: 1,
657
+ source: "pactile-task-delivery-observer-v1",
658
+ observedAt: requireNonEmptyString(input.observedAt, `${field}.observedAt`),
659
+ candidateFingerprint,
660
+ candidateSource,
661
+ candidateHead,
662
+ level: input.level,
663
+ path,
664
+ fileSha256,
665
+ gitBlobSha256,
666
+ targetBranch,
667
+ targetSha,
668
+ integrationCommitSha,
669
+ ancestryVerified,
670
+ pullRequest,
671
+ };
672
+ }
673
+ function parseRepositoryRelativePath(value, field) {
674
+ const input = requireNonEmptyString(value, field);
675
+ const normalized = input.replace(/\\/g, "/");
676
+ const segments = normalized.split("/");
677
+ if (normalized.startsWith("/") ||
678
+ /^[A-Za-z]:/.test(normalized) ||
679
+ segments.some((segment) => segment.length === 0 || segment === "." || segment === "..")) {
680
+ throw new KernelError("CORRUPT_STATE", `${field} must be a safe repository-relative path`);
681
+ }
682
+ return segments.join("/");
683
+ }
684
+ export function parseDeliveryEvidence(value, expectedLevel) {
685
+ const input = parseObject(value, "deliveryEvidence");
686
+ if (!isTaskDeliveryLevel(input.level))
687
+ throw new KernelError("INVALID_DELIVERY_EVIDENCE", "delivery evidence level is invalid");
688
+ if (expectedLevel && input.level !== expectedLevel)
689
+ throw new KernelError("INVALID_DELIVERY_EVIDENCE", `Task requires delivery level ${expectedLevel}, got ${input.level}`);
690
+ const reference = requireNonEmptyString(input.reference, "deliveryEvidence.reference");
691
+ const summary = requireNonEmptyString(input.summary, "deliveryEvidence.summary");
692
+ if (input.level === "pull-request" || input.level === "merged-result") {
693
+ let url;
694
+ try {
695
+ url = new URL(reference);
696
+ }
697
+ catch {
698
+ throw new KernelError("INVALID_DELIVERY_EVIDENCE", `${input.level} requires an absolute HTTPS URL reference`);
699
+ }
700
+ if (url.protocol !== "https:")
701
+ throw new KernelError("INVALID_DELIVERY_EVIDENCE", `${input.level} requires an HTTPS reference`);
702
+ }
703
+ const pathValue = input.path === undefined
704
+ ? undefined
705
+ : parseRepositoryRelativePath(input.path, "deliveryEvidence.path");
706
+ const targetBranch = input.targetBranch === undefined
707
+ ? undefined
708
+ : requireNonEmptyString(input.targetBranch, "deliveryEvidence.targetBranch");
709
+ return {
710
+ level: input.level,
711
+ reference,
712
+ summary,
713
+ ...(pathValue === undefined ? {} : { path: pathValue }),
714
+ ...(targetBranch === undefined ? {} : { targetBranch }),
715
+ };
716
+ }
717
+ export function parseRunInput(value, field) {
718
+ const input = parseObject(value, field);
719
+ const summary = requireNonEmptyString(input.summary, `${field}.summary`);
720
+ const references = parseStringArray(input.references, `${field}.references`, true);
721
+ const expected = fingerprintTaskValue({ summary, references });
722
+ if (input.fingerprint !== undefined && input.fingerprint !== expected)
723
+ throw new KernelError("INVALID_REQUEST", `${field}.fingerprint does not match its contents`);
724
+ return { summary, references, fingerprint: expected };
725
+ }
726
+ export function parseAuthorization(value, field) {
727
+ const input = parseObject(value, field);
728
+ return {
729
+ approvedBy: requireNonEmptyString(input.approvedBy, `${field}.approvedBy`),
730
+ approvedAt: requireNonEmptyString(input.approvedAt, `${field}.approvedAt`),
731
+ scope: requireNonEmptyString(input.scope, `${field}.scope`),
732
+ evidenceRef: requireNonEmptyString(input.evidenceRef, `${field}.evidenceRef`),
733
+ };
734
+ }
735
+ function parseCandidateSnapshot(value, field) {
736
+ const input = parseObject(value, field);
737
+ const entries = parseSnapshotEntries(input.entries, `${field}.entries`);
738
+ if (!entries.length)
739
+ throw new KernelError("CORRUPT_STATE", `${field}.entries cannot be empty`);
740
+ const fingerprint = fingerprintTaskValue(entries);
741
+ if (input.fingerprint !== fingerprint)
742
+ throw new KernelError("CORRUPT_STATE", `${field}.fingerprint does not match its entries`);
743
+ return {
744
+ id: requireNonEmptyString(input.id, `${field}.id`),
745
+ entries,
746
+ fingerprint,
747
+ };
748
+ }
749
+ export function parseCandidateObservation(value) {
750
+ const input = parseObject(value, "candidateObservation");
751
+ return {
752
+ snapshotId: requireNonEmptyString(input.snapshotId, "candidateObservation.snapshotId"),
753
+ fingerprint: requireFingerprint(input.fingerprint, "candidateObservation.fingerprint"),
754
+ observedBy: requireNonEmptyString(input.observedBy, "candidateObservation.observedBy"),
755
+ observedAt: requireNonEmptyString(input.observedAt, "candidateObservation.observedAt"),
756
+ source: requireNonEmptyString(input.source, "candidateObservation.source"),
757
+ evidenceRef: requireNonEmptyString(input.evidenceRef, "candidateObservation.evidenceRef"),
758
+ };
759
+ }
760
+ export function parseDurations(value, field) {
761
+ const input = parseObject(value, field);
762
+ const duration = (name) => {
763
+ const raw = input[name];
764
+ if (raw === undefined || raw === null)
765
+ return null;
766
+ if (!isNonNegativeInt(raw))
767
+ throw new KernelError("INVALID_REQUEST", `${field}.${name} must be a non-negative integer or null`);
768
+ return raw;
769
+ };
770
+ return {
771
+ executionMs: duration("executionMs"),
772
+ waitingMs: duration("waitingMs"),
773
+ reviewMs: duration("reviewMs"),
774
+ };
775
+ }
776
+ export function parseMeasurementRefs(value, field) {
777
+ const input = parseObject(value, field);
778
+ const reference = (name) => input[name] === undefined || input[name] === null
779
+ ? null
780
+ : requireNonEmptyString(input[name], `${field}.${name}`);
781
+ return {
782
+ execution: reference("execution"),
783
+ waiting: reference("waiting"),
784
+ review: reference("review"),
785
+ };
786
+ }
787
+ export function parseSnapshotEntries(value, field) {
788
+ if (!Array.isArray(value))
789
+ throw new KernelError("INVALID_REQUEST", `${field} must be an array`);
790
+ const entries = value
791
+ .map((item, index) => {
792
+ const input = parseObject(item, `${field}[${index}]`);
793
+ return {
794
+ ref: requireNonEmptyString(input.ref, `${field}[${index}].ref`),
795
+ fingerprint: requireFingerprint(input.fingerprint, `${field}[${index}].fingerprint`),
796
+ };
797
+ })
798
+ .sort((a, b) => a.ref.localeCompare(b.ref));
799
+ if (new Set(entries.map((entry) => entry.ref)).size !== entries.length)
800
+ throw new KernelError("INVALID_REQUEST", `${field} refs must be unique`);
801
+ return entries;
802
+ }
803
+ function parseTaskRunEvidenceVerificationV1(value, field) {
804
+ const input = parseObject(value, field);
805
+ if (input.schemaVersion !== 1 || input.source !== "pactile-task-run-evidence-v1") {
806
+ throw new KernelError("CORRUPT_STATE", `${field} has an unsupported schema or source`);
807
+ }
808
+ if (!Array.isArray(input.items) || input.items.length > 128) {
809
+ throw new KernelError("CORRUPT_STATE", `${field}.items must be an array with at most 128 entries`);
810
+ }
811
+ const items = input.items.map((value, index) => {
812
+ const item = parseObject(value, `${field}.items[${index}]`);
813
+ if (item.source !== "candidate-snapshot" &&
814
+ item.source !== "task-evidence") {
815
+ throw new KernelError("CORRUPT_STATE", `${field}.items[${index}].source is invalid`);
816
+ }
817
+ const sizeBytes = item.sizeBytes;
818
+ if (!isNonNegativeInt(sizeBytes) || sizeBytes > 8 * 1024 * 1024) {
819
+ throw new KernelError("CORRUPT_STATE", `${field}.items[${index}].sizeBytes is out of bounds`);
820
+ }
821
+ return {
822
+ ref: requireNonEmptyString(item.ref, `${field}.items[${index}].ref`),
823
+ sha256: requireFingerprint(item.sha256, `${field}.items[${index}].sha256`),
824
+ sizeBytes,
825
+ source: item.source,
826
+ };
827
+ });
828
+ if (new Set(items.map((item) => item.ref)).size !== items.length) {
829
+ throw new KernelError("CORRUPT_STATE", `${field}.items refs must be unique`);
830
+ }
831
+ if (items.reduce((total, item) => total + item.sizeBytes, 0) > 32 * 1024 * 1024) {
832
+ throw new KernelError("CORRUPT_STATE", `${field}.items exceed the total byte limit`);
833
+ }
834
+ return {
835
+ schemaVersion: 1,
836
+ source: "pactile-task-run-evidence-v1",
837
+ observedAt: requireNonEmptyString(input.observedAt, `${field}.observedAt`),
838
+ runId: requireNonEmptyString(input.runId, `${field}.runId`),
839
+ candidateSnapshotId: requireNonEmptyString(input.candidateSnapshotId, `${field}.candidateSnapshotId`),
840
+ candidateFingerprint: requireFingerprint(input.candidateFingerprint, `${field}.candidateFingerprint`),
841
+ items,
842
+ };
843
+ }
844
+ function parseRunResult(value, field) {
845
+ const input = parseObject(value, field);
846
+ const evidenceRefs = parseStringArray(input.evidenceRefs, `${field}.evidenceRefs`, true);
847
+ const evidenceVerification = input.evidenceVerification === undefined
848
+ ? undefined
849
+ : parseTaskRunEvidenceVerificationV1(input.evidenceVerification, `${field}.evidenceVerification`);
850
+ return {
851
+ summary: requireNonEmptyString(input.summary, `${field}.summary`),
852
+ evidenceRefs,
853
+ ...(evidenceVerification ? { evidenceVerification } : {}),
854
+ };
855
+ }
856
+ export function parseFailure(value, field) {
857
+ const input = parseObject(value, field);
858
+ return {
859
+ category: requireNonEmptyString(input.category, `${field}.category`),
860
+ message: requireNonEmptyString(input.message, `${field}.message`),
861
+ evidenceRef: input.evidenceRef === null || input.evidenceRef === undefined
862
+ ? null
863
+ : requireNonEmptyString(input.evidenceRef, `${field}.evidenceRef`),
864
+ };
865
+ }
866
+ export function parseWorkspaceBinding(value, runId, field) {
867
+ const input = parseObject(value, field);
868
+ if (input.ownerRunId !== runId)
869
+ throw new KernelError("CORRUPT_STATE", `${field}.ownerRunId must match its Run`);
870
+ const canonicalPath = requireNonEmptyString(input.canonicalPath, `${field}.canonicalPath`);
871
+ if (!path.isAbsolute(canonicalPath))
872
+ throw new KernelError("INVALID_REQUEST", `${field}.canonicalPath must be absolute`);
873
+ if (input.integrationState !== "not-integrated" &&
874
+ input.integrationState !== "integrated")
875
+ throw new KernelError("CORRUPT_STATE", `${field}.integrationState is invalid`);
876
+ if (![
877
+ "not-requested",
878
+ "pending",
879
+ "reclaimed",
880
+ "failed",
881
+ "recovery-required",
882
+ ].includes(String(input.reclamationState)))
883
+ throw new KernelError("CORRUPT_STATE", `${field}.reclamationState is invalid`);
884
+ return {
885
+ ownerRunId: runId,
886
+ canonicalPath,
887
+ branch: requireNonEmptyString(input.branch, `${field}.branch`),
888
+ baseSha: requireNonEmptyString(input.baseSha, `${field}.baseSha`),
889
+ writeSet: parseStringArray(input.writeSet, `${field}.writeSet`, true),
890
+ integrationState: input.integrationState,
891
+ reclamationState: input.reclamationState,
892
+ manager: input.manager === null || input.manager === undefined ? null : parseWorkspaceManagerBinding(input.manager, `${field}.manager`),
893
+ integrationReceipt: input.integrationReceipt === null || input.integrationReceipt === undefined ? null : parseWorkspaceIntegrationReceipt(input.integrationReceipt, `${field}.integrationReceipt`),
894
+ cleanupLease: input.cleanupLease === null || input.cleanupLease === undefined ? null : parseWorkspaceCleanupLease(input.cleanupLease, `${field}.cleanupLease`),
895
+ };
896
+ }
897
+ function parseWorkspaceManagerBinding(value, field) {
898
+ const input = parseObject(value, field);
899
+ if (input.version !== 1)
900
+ throw new KernelError("CORRUPT_STATE", `${field}.version is invalid`);
901
+ if (input.source !== "created" && input.source !== "adopted")
902
+ throw new KernelError("CORRUPT_STATE", `${field}.source is invalid`);
903
+ for (const name of ["projectRoot", "commonDir", "gitDir"]) {
904
+ const candidate = requireNonEmptyString(input[name], `${field}.${name}`);
905
+ if (!path.isAbsolute(candidate))
906
+ throw new KernelError("CORRUPT_STATE", `${field}.${name} must be absolute`);
907
+ }
908
+ return {
909
+ version: 1,
910
+ credentialId: requireNonEmptyString(input.credentialId, `${field}.credentialId`),
911
+ projectRoot: input.projectRoot,
912
+ commonDir: input.commonDir,
913
+ gitDir: input.gitDir,
914
+ source: input.source,
915
+ recordedAt: requireNonEmptyString(input.recordedAt, `${field}.recordedAt`),
916
+ };
917
+ }
918
+ export function parseWorkspaceIntegrationReceipt(value, field) {
919
+ const input = parseObject(value, field);
920
+ return {
921
+ runId: requireNonEmptyString(input.runId, `${field}.runId`),
922
+ worktreeHeadSha: requireNonEmptyString(input.worktreeHeadSha, `${field}.worktreeHeadSha`),
923
+ targetRef: requireNonEmptyString(input.targetRef, `${field}.targetRef`),
924
+ targetBranch: requireNonEmptyString(input.targetBranch, `${field}.targetBranch`),
925
+ targetHeadSha: requireNonEmptyString(input.targetHeadSha, `${field}.targetHeadSha`),
926
+ verifiedAt: requireNonEmptyString(input.verifiedAt, `${field}.verifiedAt`),
927
+ resultEvidenceRefs: parseStringArray(input.resultEvidenceRefs, `${field}.resultEvidenceRefs`),
928
+ candidateSnapshotId: requireNonEmptyString(input.candidateSnapshotId, `${field}.candidateSnapshotId`),
929
+ candidateFingerprint: requireFingerprint(input.candidateFingerprint, `${field}.candidateFingerprint`),
930
+ ...(input.contentFingerprint === undefined ? {} : { contentFingerprint: requireFingerprint(input.contentFingerprint, `${field}.contentFingerprint`) }),
931
+ };
932
+ }
933
+ export function parseWorkspaceCleanupLease(value, field) {
934
+ const input = parseObject(value, field);
935
+ if (input.riskDisclosure !== undefined && input.riskDisclosure !== TASK_RUN_WORKSPACE_CLEANUP_RISK_DISCLOSURE) {
936
+ throw new KernelError("CORRUPT_STATE", `${field}.riskDisclosure is not recognized`);
937
+ }
938
+ const states = ["held", "reclaimed", "retained", "partial-removal", "recovery-required"];
939
+ if (typeof input.state !== "string" || !states.includes(input.state)) {
940
+ throw new KernelError("CORRUPT_STATE", `${field}.state is invalid`);
941
+ }
942
+ if (!isNonNegativeInt(input.processId) || input.processId === 0)
943
+ throw new KernelError("CORRUPT_STATE", `${field}.processId is invalid`);
944
+ return {
945
+ leaseId: requireNonEmptyString(input.leaseId, `${field}.leaseId`),
946
+ state: input.state,
947
+ processId: input.processId,
948
+ acquiredAt: requireNonEmptyString(input.acquiredAt, `${field}.acquiredAt`),
949
+ expectedHeadSha: requireNonEmptyString(input.expectedHeadSha, `${field}.expectedHeadSha`),
950
+ targetBranch: requireNonEmptyString(input.targetBranch, `${field}.targetBranch`),
951
+ targetHeadSha: requireNonEmptyString(input.targetHeadSha, `${field}.targetHeadSha`),
952
+ receiptRef: requireNonEmptyString(input.receiptRef, `${field}.receiptRef`),
953
+ reason: input.reason === null ? null : requireNonEmptyString(input.reason, `${field}.reason`),
954
+ ...(input.riskDisclosure === undefined ? {} : { riskDisclosure: requireNonEmptyString(input.riskDisclosure, `${field}.riskDisclosure`) }),
955
+ };
956
+ }
957
+ export function parseHostStopReceipt(value, field) {
958
+ const input = parseObject(value, field);
959
+ if (typeof input.contractStale !== "boolean")
960
+ throw new KernelError("CORRUPT_STATE", `${field}.contractStale is invalid`);
961
+ if (!isNonNegativeInt(input.requestKernelRevision) || !isNonNegativeInt(input.receiptKernelRevision)) {
962
+ throw new KernelError("CORRUPT_STATE", `${field} kernel revisions are invalid`);
963
+ }
964
+ if (input.candidateSource !== null && input.candidateSource !== "captured" && input.candidateSource !== "derived") {
965
+ throw new KernelError("CORRUPT_STATE", `${field}.candidateSource is invalid`);
966
+ }
967
+ return {
968
+ source: requireNonEmptyString(input.source, `${field}.source`),
969
+ assurance: requireNonEmptyString(input.assurance, `${field}.assurance`),
970
+ evidenceLevel: requireNonEmptyString(input.evidenceLevel, `${field}.evidenceLevel`),
971
+ taskId: requireTaskId(input.taskId, `${field}.taskId`),
972
+ runId: requireNonEmptyString(input.runId, `${field}.runId`),
973
+ sessionId: input.sessionId === null ? null : requireNonEmptyString(input.sessionId, `${field}.sessionId`),
974
+ threadId: input.threadId === null ? null : requireNonEmptyString(input.threadId, `${field}.threadId`),
975
+ startRequestId: requireNonEmptyString(input.startRequestId, `${field}.startRequestId`),
976
+ settleReceiptId: requireNonEmptyString(input.settleReceiptId, `${field}.settleReceiptId`),
977
+ terminalStatus: requireNonEmptyString(input.terminalStatus, `${field}.terminalStatus`),
978
+ requestKernelRevision: input.requestKernelRevision,
979
+ receiptKernelRevision: input.receiptKernelRevision,
980
+ contractFingerprint: requireFingerprint(input.contractFingerprint, `${field}.contractFingerprint`),
981
+ contractStale: input.contractStale,
982
+ candidateSnapshotId: input.candidateSnapshotId === null ? null : requireNonEmptyString(input.candidateSnapshotId, `${field}.candidateSnapshotId`),
983
+ candidateFingerprint: input.candidateFingerprint === null ? null : requireFingerprint(input.candidateFingerprint, `${field}.candidateFingerprint`),
984
+ candidateSource: input.candidateSource,
985
+ receiptRef: requireNonEmptyString(input.receiptRef, `${field}.receiptRef`),
986
+ evidenceRef: requireNonEmptyString(input.evidenceRef, `${field}.evidenceRef`),
987
+ recordedAt: requireNonEmptyString(input.recordedAt, `${field}.recordedAt`),
988
+ };
989
+ }
990
+ export function parseHostBinding(value, field) {
991
+ const input = parseObject(value, field);
992
+ if (!isNonNegativeInt(input.kernelRevision))
993
+ throw new KernelError("CORRUPT_STATE", `${field}.kernelRevision is invalid`);
994
+ return {
995
+ host: requireNonEmptyString(input.host, `${field}.host`),
996
+ role: requireNonEmptyString(input.role, `${field}.role`),
997
+ sessionId: input.sessionId === null || input.sessionId === undefined
998
+ ? null
999
+ : requireNonEmptyString(input.sessionId, `${field}.sessionId`),
1000
+ threadId: input.threadId === null || input.threadId === undefined
1001
+ ? null
1002
+ : requireNonEmptyString(input.threadId, `${field}.threadId`),
1003
+ kernelRevision: input.kernelRevision,
1004
+ contractFingerprint: requireFingerprint(input.contractFingerprint, `${field}.contractFingerprint`),
1005
+ requestRefs: parseStringArray(input.requestRefs ?? [], `${field}.requestRefs`, true),
1006
+ eventRefs: parseStringArray(input.eventRefs ?? [], `${field}.eventRefs`, true),
1007
+ resultRefs: parseStringArray(input.resultRefs ?? [], `${field}.resultRefs`, true),
1008
+ assuranceSource: input.assuranceSource === null || input.assuranceSource === undefined
1009
+ ? null
1010
+ : requireNonEmptyString(input.assuranceSource, `${field}.assuranceSource`),
1011
+ hostId: input.hostId === null || input.hostId === undefined ? null : requireNonEmptyString(input.hostId, `${field}.hostId`),
1012
+ stopReceipt: input.stopReceipt === null || input.stopReceipt === undefined ? null : parseHostStopReceipt(input.stopReceipt, `${field}.stopReceipt`),
1013
+ };
1014
+ }
1015
+ export function parseAcceptanceEvidence(value, criteria, requireComplete) {
1016
+ const evidence = parseEvidenceMap(value, "acceptanceEvidence", !requireComplete);
1017
+ const allowed = new Set(criteria.map((criterion) => criterion.id));
1018
+ for (const key of Object.keys(evidence))
1019
+ if (!allowed.has(key))
1020
+ throw new KernelError("INVALID_REQUEST", `acceptanceEvidence references unknown criterion ${key}`);
1021
+ if (requireComplete) {
1022
+ const missing = criteria
1023
+ .filter((criterion) => !getOwnRecordValue(evidence, criterion.id)?.length)
1024
+ .map((criterion) => criterion.id);
1025
+ if (missing.length)
1026
+ throw new KernelError("ACCEPTANCE_EVIDENCE_MISSING", `passing Review requires evidence for every acceptance criterion: ${missing.join(", ")}`);
1027
+ }
1028
+ return evidence;
1029
+ }
1030
+ function parseEvidenceMap(value, field, allowEmptyReferences = false) {
1031
+ const input = parseObject(value, field);
1032
+ const result = {};
1033
+ for (const [key, refs] of Object.entries(input)) {
1034
+ Object.defineProperty(result, requireNonEmptyString(key, `${field} key`), {
1035
+ value: parseStringArray(refs, `${field}.${key}`, allowEmptyReferences),
1036
+ enumerable: true,
1037
+ writable: true,
1038
+ configurable: true,
1039
+ });
1040
+ }
1041
+ return result;
1042
+ }
1043
+ function parseEvent(value, index) {
1044
+ const field = `kernel.events[${index}]`;
1045
+ const input = parseObject(value, field);
1046
+ if (!EVENT_TYPES.includes(input.type))
1047
+ throw new KernelError("CORRUPT_STATE", `${field}.type is invalid`);
1048
+ return {
1049
+ id: requireNonEmptyString(input.id, `${field}.id`),
1050
+ revision: requirePositiveInt(input.revision, `${field}.revision`),
1051
+ at: requireNonEmptyString(input.at, `${field}.at`),
1052
+ actor: requireNonEmptyString(input.actor, `${field}.actor`),
1053
+ idempotencyKey: requireNonEmptyString(input.idempotencyKey, `${field}.idempotencyKey`),
1054
+ type: input.type,
1055
+ entityId: requireNonEmptyString(input.entityId, `${field}.entityId`),
1056
+ requestFingerprint: requireFingerprint(input.requestFingerprint, `${field}.requestFingerprint`),
1057
+ };
1058
+ }
1059
+ function parseKernelAudit(value, index) {
1060
+ const field = `kernel.audit[${index}]`;
1061
+ const input = parseObject(value, field);
1062
+ const parseState = (raw, name) => {
1063
+ const state = parseObject(raw, name);
1064
+ if (!isKernelPhase(state.phase) ||
1065
+ !isKernelCondition(state.condition) ||
1066
+ !isNonNegativeInt(state.revision) ||
1067
+ (state.outcome !== null && !isKernelOutcome(state.outcome))) {
1068
+ throw new KernelError("CORRUPT_STATE", `${name} state is invalid`);
1069
+ }
1070
+ return {
1071
+ phase: state.phase,
1072
+ condition: state.condition,
1073
+ outcome: state.outcome,
1074
+ revision: state.revision,
1075
+ };
1076
+ };
1077
+ if (input.evidence !== null && typeof input.evidence !== "string")
1078
+ throw new KernelError("CORRUPT_STATE", `${field}.evidence is invalid`);
1079
+ return {
1080
+ id: requireNonEmptyString(input.id, `${field}.id`),
1081
+ at: requireNonEmptyString(input.at, `${field}.at`),
1082
+ actor: requireNonEmptyString(input.actor, `${field}.actor`),
1083
+ idempotencyKey: requireNonEmptyString(input.idempotencyKey, `${field}.idempotencyKey`),
1084
+ evidence: input.evidence,
1085
+ from: parseState(input.from, `${field}.from`),
1086
+ to: parseState(input.to, `${field}.to`),
1087
+ };
1088
+ }
1089
+ function validateAuditChain(audit, revision) {
1090
+ if (!audit.length)
1091
+ throw new KernelError("CORRUPT_STATE", "Task Kernel v2 requires an audit event");
1092
+ for (let index = 0; index < audit.length; index++) {
1093
+ const event = requireArrayEntry(audit[index], `kernel.audit[${index}]`);
1094
+ const previous = index > 0
1095
+ ? requireArrayEntry(audit[index - 1], `kernel.audit[${index - 1}]`)
1096
+ : null;
1097
+ if (event.to.revision !== event.from.revision + 1 ||
1098
+ (previous && previous.to.revision !== event.from.revision)) {
1099
+ throw new KernelError("CORRUPT_STATE", "Task Kernel v2 audit revisions are not contiguous");
1100
+ }
1101
+ }
1102
+ if (requireArrayEntry(audit.at(-1), "latest kernel audit event").to.revision !==
1103
+ revision)
1104
+ throw new KernelError("CORRUPT_STATE", "Task Kernel v2 audit does not end at the current revision");
1105
+ }
1106
+ function validateEvents(events, revision) {
1107
+ const keys = new Set();
1108
+ const ids = new Set();
1109
+ for (const event of events) {
1110
+ if (event.revision > revision)
1111
+ throw new KernelError("CORRUPT_STATE", "Task Kernel event revision is in the future");
1112
+ if (keys.has(event.idempotencyKey) || ids.has(event.id))
1113
+ throw new KernelError("CORRUPT_STATE", "Task Kernel events contain a duplicate ID or idempotency key");
1114
+ keys.add(event.idempotencyKey);
1115
+ ids.add(event.id);
1116
+ }
1117
+ if (!events.length)
1118
+ throw new KernelError("CORRUPT_STATE", "Task Kernel v2 requires a domain event");
1119
+ }
1120
+ export function getOwnRecordValue(record, key) {
1121
+ return Object.prototype.hasOwnProperty.call(record, key)
1122
+ ? record[key]
1123
+ : undefined;
1124
+ }
1125
+ function parseObject(value, field) {
1126
+ if (!isPlainObject(value))
1127
+ throw new KernelError("CORRUPT_STATE", `${field} must be an object`);
1128
+ return value;
1129
+ }
1130
+ export function parseStringArray(value, field, allowEmpty = false) {
1131
+ if (!Array.isArray(value) ||
1132
+ value.some((item) => typeof item !== "string" || !item.trim()))
1133
+ throw new KernelError("INVALID_REQUEST", `${field} must be an array of non-empty strings`);
1134
+ if (!allowEmpty && value.length === 0)
1135
+ throw new KernelError("INVALID_REQUEST", `${field} must contain at least one reference`);
1136
+ return [...value];
1137
+ }
1138
+ export function requireString(value, field, allowEmpty = false) {
1139
+ if (typeof value !== "string" || (!allowEmpty && !value.trim()))
1140
+ throw new KernelError("INVALID_REQUEST", `${field} must be ${allowEmpty ? "a string" : "a non-empty string"}`);
1141
+ return value;
1142
+ }
1143
+ export function requireTaskId(value, field) {
1144
+ const taskId = requireNonEmptyString(value, field);
1145
+ if (!TASK_ID_RE.test(taskId))
1146
+ throw new KernelError("INVALID_REQUEST", `${field} must be a lowercase slug`);
1147
+ return taskId;
1148
+ }
1149
+ function requireFingerprint(value, field) {
1150
+ if (typeof value !== "string" || !FINGERPRINT_RE.test(value))
1151
+ throw new KernelError("INVALID_REQUEST", `${field} must be a lowercase SHA-256 fingerprint`);
1152
+ return value;
1153
+ }
1154
+ function requirePositiveInt(value, field) {
1155
+ if (!isNonNegativeInt(value) || value < 1)
1156
+ throw new KernelError("CORRUPT_STATE", `${field} must be a positive integer`);
1157
+ return value;
1158
+ }
1159
+ function stableJson(value) {
1160
+ if (Array.isArray(value))
1161
+ return `[${value.map((item) => stableJson(item)).join(",")}]`;
1162
+ if (isPlainObject(value))
1163
+ return `{${Object.keys(value)
1164
+ .sort()
1165
+ .map((key) => `${JSON.stringify(key)}:${stableJson(value[key])}`)
1166
+ .join(",")}}`;
1167
+ return JSON.stringify(value);
1168
+ }
1169
+ //# sourceMappingURL=task-kernel-schema.js.map