@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,1445 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { fingerprintTaskValue, readTaskKernel, } from "../../core/task/index.js";
5
+ import { resolveTaskDir } from "../task/session.js";
6
+ import { approvedExecuteTask } from "../task/authorization.js";
7
+ import { readStrategyContract } from "../task/strategy.js";
8
+ import { parallelChild, releaseParallelChild, reserveParallelChild, } from "../parallel/policy.js";
9
+ import { CoordinationStore, } from "../coordination/index.js";
10
+ import { assertCurrentPiReviewEscalationV1, assertCodexEscalationSendPromptV1, buildCodexEscalationPromptV1, readCodexEscalationSendV1, readPiReviewEscalationV1, } from "../review/escalation.js";
11
+ import { withProjectSchedulerMutex } from "../scheduler/project-lease-store.js";
12
+ export { readCodexHostStopReceipts, } from "./host-stop.js";
13
+ const idPattern = /^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;
14
+ const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
15
+ const escalationIdPattern = /^pi-escalation:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
16
+ const transportIdentifierPattern = /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/;
17
+ const escalationSecretPattern = /\b(?:bearer\s+[a-z0-9._~+/-]{12,}|(?:sk[-_]|gh[pousr]_|glpat-|plane_api_)[a-z0-9_-]{12,}|(?:api[_-]?key|token|password|secret)\s*[:=]\s*\S+)/iu;
18
+ function taskContextFromDirectory(root, dir, archived) {
19
+ const read = readTaskKernel({ root, taskDir: dir, cwd: root });
20
+ if (read.kind === "task-kernel-v2") {
21
+ const kernel = read.kernel;
22
+ return {
23
+ dir,
24
+ task: path.relative(root, dir).replaceAll("\\", "/"),
25
+ taskId: kernel.identity.taskId,
26
+ phase: kernel.phase,
27
+ revision: kernel.revision,
28
+ kernelKind: read.kind,
29
+ contractFingerprint: fingerprintTaskValue(kernel.definition),
30
+ events: kernel.events,
31
+ runs: kernel.runs,
32
+ reviews: kernel.reviews,
33
+ archived,
34
+ };
35
+ }
36
+ const kernel = read.kernel.kernel;
37
+ return {
38
+ dir,
39
+ task: path.relative(root, dir).replaceAll("\\", "/"),
40
+ taskId: kernel.identity.taskId,
41
+ phase: kernel.phase,
42
+ revision: kernel.revision,
43
+ kernelKind: read.kind,
44
+ contractFingerprint: null,
45
+ events: [],
46
+ runs: [],
47
+ reviews: [],
48
+ archived,
49
+ };
50
+ }
51
+ function taskContext(root, reference) {
52
+ const dir = resolveTaskDir(root, reference);
53
+ if (!fs.statSync(dir, { throwIfNoEntry: false })?.isDirectory())
54
+ throw new Error(`Task not found: ${reference}`);
55
+ return taskContextFromDirectory(root, dir, false);
56
+ }
57
+ function archivedTaskContext(root, reference) {
58
+ if (!/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/.test(reference))
59
+ throw new Error("Archived task reference must be a task name or id");
60
+ const archive = path.join(root, ".pactile", "tasks", "archive");
61
+ if (!fs.statSync(archive, { throwIfNoEntry: false })?.isDirectory())
62
+ throw new Error(`Task not found: ${reference}`);
63
+ const matches = fs
64
+ .readdirSync(archive, { withFileTypes: true })
65
+ .filter((entry) => entry.isDirectory() && /^\d{4}-\d{2}$/.test(entry.name))
66
+ .flatMap((entry) => fs
67
+ .readdirSync(path.join(archive, entry.name), { withFileTypes: true })
68
+ .filter((task) => task.isDirectory() &&
69
+ (task.name === reference || task.name.endsWith(`-${reference}`)))
70
+ .map((task) => path.join(archive, entry.name, task.name)));
71
+ if (matches.length !== 1)
72
+ throw new Error(matches.length
73
+ ? `Archived task reference is ambiguous: ${reference}`
74
+ : `Task not found: ${reference}`);
75
+ const dir = matches[0];
76
+ const realArchive = fs.realpathSync(archive);
77
+ const relative = path.relative(realArchive, fs.realpathSync(dir));
78
+ if (relative.startsWith("..") || path.isAbsolute(relative))
79
+ throw new Error("Archived task resolves outside the task archive");
80
+ return taskContextFromDirectory(root, dir, true);
81
+ }
82
+ function taskContextIncludingArchive(root, reference) {
83
+ try {
84
+ return taskContext(root, reference);
85
+ }
86
+ catch (error) {
87
+ if (!(error instanceof Error) ||
88
+ !error.message.startsWith("Task not found:")) {
89
+ throw error;
90
+ }
91
+ return archivedTaskContext(root, reference);
92
+ }
93
+ }
94
+ function selectRun(context, role, requestedRunId, requireRunning = false) {
95
+ if (context.kernelKind !== "task-kernel-v2") {
96
+ if (requestedRunId)
97
+ throw new Error("--run-id requires a Task Kernel v2 task");
98
+ return {
99
+ runId: null,
100
+ candidateSnapshotId: null,
101
+ candidateFingerprint: null,
102
+ run: null,
103
+ };
104
+ }
105
+ const run = requestedRunId
106
+ ? context.runs.find((candidate) => candidate.id === requestedRunId)
107
+ : role === "review"
108
+ ? [...context.runs]
109
+ .reverse()
110
+ .find((candidate) => candidate.candidateSnapshot)
111
+ : [...context.runs]
112
+ .reverse()
113
+ .find((candidate) => candidate.state === "running" || candidate.state === "waiting");
114
+ if (requestedRunId && !run)
115
+ throw new Error(`Run not found on Task ${context.taskId}: ${requestedRunId}`);
116
+ if (role === "execute" &&
117
+ requireRunning &&
118
+ run?.state !== "running" &&
119
+ run?.state !== "waiting") {
120
+ throw new Error("Codex Execute dispatch requires a running or waiting Task Kernel v2 Run");
121
+ }
122
+ if (role === "review" &&
123
+ context.phase === "verify" &&
124
+ !run?.candidateSnapshot) {
125
+ throw new Error("Codex Review requires the latest Run candidate snapshot");
126
+ }
127
+ return {
128
+ runId: run?.id ?? null,
129
+ candidateSnapshotId: run?.candidateSnapshot?.id ?? null,
130
+ candidateFingerprint: run?.candidateSnapshot?.fingerprint ?? null,
131
+ run: run ?? null,
132
+ };
133
+ }
134
+ function bridgeDir(dir) {
135
+ return path.join(dir, "codex-bridge");
136
+ }
137
+ function requestFile(dir, id) {
138
+ return path.join(bridgeDir(dir), "requests", `${id}.json`);
139
+ }
140
+ function receiptFile(dir, id) {
141
+ return path.join(bridgeDir(dir), "receipts", `${id}.json`);
142
+ }
143
+ function queuedFile(dir, id) {
144
+ return path.join(bridgeDir(dir), "queued", `${id}.json`);
145
+ }
146
+ function writeNew(file, value) {
147
+ fs.mkdirSync(path.dirname(file), { recursive: true });
148
+ fs.writeFileSync(file, `${JSON.stringify(value, null, 2)}\n`, {
149
+ encoding: "utf8",
150
+ flag: "wx",
151
+ mode: 0o600,
152
+ });
153
+ }
154
+ function codexRequestFingerprint(request) {
155
+ const { request_fingerprint: _stored, ...payload } = request;
156
+ return fingerprintTaskValue(payload);
157
+ }
158
+ function verifyFreshCoordinationMessage(root, entry, destinationContext, requireNative) {
159
+ const message = entry.message;
160
+ const requestId = message.request_id;
161
+ if (!requestId ||
162
+ !uuidPattern.test(requestId) ||
163
+ !new Set(["sent", "delivered", "acknowledged"]).has(entry.status)) {
164
+ throw new Error("Coordination message has no successful bound request");
165
+ }
166
+ const sourceContext = taskContext(root, message.from_task_id);
167
+ const request = readJson(requestFile(sourceContext.dir, requestId));
168
+ const receipt = readJson(receiptFile(sourceContext.dir, requestId));
169
+ const sendReceipt = entry.receipts.find((candidate) => candidate.receipt_id === requestId);
170
+ const evidenceLevel = receipt.evidence_level;
171
+ const requestFingerprint = codexRequestFingerprint(request);
172
+ const sourceBound = !sourceContext.archived &&
173
+ request.request_id === requestId &&
174
+ request.request_fingerprint === requestFingerprint &&
175
+ request.task === sourceContext.task &&
176
+ request.task_id === sourceContext.taskId &&
177
+ request.task_kernel_kind === sourceContext.kernelKind &&
178
+ request.kernel_revision === sourceContext.revision &&
179
+ (request.contract_fingerprint ?? null) ===
180
+ sourceContext.contractFingerprint &&
181
+ (request.run_id ?? null) === message.from_run_id &&
182
+ isRunBoundToContext(sourceContext, request.run_id, request.candidate_snapshot_id, request.candidate_fingerprint);
183
+ const destinationBound = !destinationContext.archived &&
184
+ request.to_task === path.basename(destinationContext.dir) &&
185
+ request.to_task_id === destinationContext.taskId &&
186
+ request.to_task_kernel_kind === destinationContext.kernelKind &&
187
+ request.to_kernel_revision === destinationContext.revision &&
188
+ (request.to_contract_fingerprint ?? null) ===
189
+ destinationContext.contractFingerprint &&
190
+ (request.to_run_id ?? null) === message.to_run_id &&
191
+ isRunBoundToContext(destinationContext, request.to_run_id, request.to_candidate_snapshot_id, request.to_candidate_fingerprint);
192
+ if (!sourceBound ||
193
+ !destinationBound ||
194
+ message.message_id !== request.coordination_message_id ||
195
+ message.message_id !== requestId ||
196
+ message.host_ref !== request.thread_id ||
197
+ request.tool !== "send_message_to_thread" ||
198
+ !request.thread_id ||
199
+ !request.host_id ||
200
+ receipt.schema_version !== 1 ||
201
+ receipt.request_id !== requestId ||
202
+ receipt.request_fingerprint !== requestFingerprint ||
203
+ receipt.task_id !== sourceContext.taskId ||
204
+ (receipt.run_id ?? null) !== (request.run_id ?? null) ||
205
+ (receipt.candidate_snapshot_id ?? null) !==
206
+ (request.candidate_snapshot_id ?? null) ||
207
+ (receipt.candidate_fingerprint ?? null) !==
208
+ (request.candidate_fingerprint ?? null) ||
209
+ (receipt.to_task_id ?? null) !== destinationContext.taskId ||
210
+ (receipt.to_run_id ?? null) !== (request.to_run_id ?? null) ||
211
+ (receipt.to_candidate_snapshot_id ?? null) !==
212
+ (request.to_candidate_snapshot_id ?? null) ||
213
+ (receipt.to_candidate_fingerprint ?? null) !==
214
+ (request.to_candidate_fingerprint ?? null) ||
215
+ receipt.destination_kernel_revision_at_receipt !==
216
+ request.to_kernel_revision ||
217
+ receipt.kernel_revision_at_receipt !== request.kernel_revision ||
218
+ receipt.thread_id !== request.thread_id ||
219
+ receipt.host_id !== request.host_id ||
220
+ receipt.tool !== request.tool ||
221
+ receipt.outcome !== "ok" ||
222
+ receipt.contract_stale !== false ||
223
+ !sendReceipt ||
224
+ !new Set(["sent", "delivered", "acknowledged"]).has(sendReceipt.status) ||
225
+ sendReceipt.evidence_level !== evidenceLevel ||
226
+ (evidenceLevel !== "simulated" && evidenceLevel !== "desktop-native") ||
227
+ (requireNative && evidenceLevel !== "desktop-native")) {
228
+ throw new Error("Coordination message request or receipt is stale, misbound, or not authoritative");
229
+ }
230
+ return { evidenceLevel, sourceContext };
231
+ }
232
+ function coordinationKernelBarrier(context) {
233
+ if (context.kernelKind !== "task-kernel-v2") {
234
+ return { runId: null, kernelRevision: null, kernelEventId: null };
235
+ }
236
+ const lastEvent = context.events.at(-1);
237
+ if (lastEvent?.revision !== context.revision) {
238
+ throw new Error("Cannot bind coordination unblock to the current Kernel event");
239
+ }
240
+ const activeRun = [...context.runs]
241
+ .reverse()
242
+ .find((run) => run.state === "running" || run.state === "waiting");
243
+ return {
244
+ runId: activeRun?.id ?? null,
245
+ kernelRevision: context.revision,
246
+ kernelEventId: lastEvent.id,
247
+ };
248
+ }
249
+ function readJson(file) {
250
+ const value = JSON.parse(fs.readFileSync(file, "utf8"));
251
+ if (!value || typeof value !== "object" || Array.isArray(value))
252
+ throw new Error(`Invalid JSON object: ${file}`);
253
+ return value;
254
+ }
255
+ function requests(dir) {
256
+ const folder = path.join(bridgeDir(dir), "requests");
257
+ if (!fs.existsSync(folder))
258
+ return [];
259
+ return fs
260
+ .readdirSync(folder)
261
+ .filter((file) => uuidPattern.test(file.replace(/\.json$/, "")) && file.endsWith(".json"))
262
+ .map((file) => readJson(path.join(folder, file)))
263
+ .sort((left, right) => left.created_at.localeCompare(right.created_at) ||
264
+ left.request_id.localeCompare(right.request_id));
265
+ }
266
+ function boundThreads(dir) {
267
+ const bound = new Map();
268
+ for (const request of requests(dir)) {
269
+ if (request.tool !== "create_thread")
270
+ continue;
271
+ const file = receiptFile(dir, request.request_id);
272
+ if (!fs.existsSync(file))
273
+ continue;
274
+ const receipt = readJson(file);
275
+ if (receipt.outcome === "ok" &&
276
+ receipt.contract_stale !== true &&
277
+ typeof receipt.thread_id === "string" &&
278
+ typeof receipt.host_id === "string") {
279
+ bound.set(receipt.thread_id, {
280
+ threadId: receipt.thread_id,
281
+ hostId: receipt.host_id,
282
+ role: request.role,
283
+ runId: request.run_id ?? null,
284
+ dispatchLeaseId: request.dispatch_lease_id ?? null,
285
+ });
286
+ }
287
+ }
288
+ return bound;
289
+ }
290
+ /**
291
+ * A Plan thread can outlive the Kernel revision that created it. Reuse that
292
+ * thread only for a coordination message, and only when its original request
293
+ * still matches this V2 Task's identity and contract. The outgoing message is
294
+ * separately bound to the current Kernel revision and active Run.
295
+ */
296
+ function coordinationBoundThread(context, threadId) {
297
+ if (context.archived || context.kernelKind !== "task-kernel-v2")
298
+ return undefined;
299
+ for (const request of requests(context.dir).reverse()) {
300
+ if (request.tool !== "create_thread" ||
301
+ request.role !== "plan" ||
302
+ request.task !== context.task ||
303
+ request.task_id !== context.taskId ||
304
+ request.task_kernel_kind !== "task-kernel-v2" ||
305
+ (request.contract_fingerprint ?? null) !== context.contractFingerprint ||
306
+ !Number.isInteger(request.kernel_revision) ||
307
+ request.kernel_revision > context.revision) {
308
+ continue;
309
+ }
310
+ const receiptPath = receiptFile(context.dir, request.request_id);
311
+ if (!fs.existsSync(receiptPath))
312
+ continue;
313
+ const receipt = readJson(receiptPath);
314
+ const requestFingerprint = codexRequestFingerprint(request);
315
+ if (request.request_fingerprint !== requestFingerprint ||
316
+ receipt.schema_version !== 1 ||
317
+ receipt.request_id !== request.request_id ||
318
+ receipt.request_fingerprint !== requestFingerprint ||
319
+ receipt.task_id !== context.taskId ||
320
+ receipt.run_id !== (request.run_id ?? null) ||
321
+ receipt.tool !== "create_thread" ||
322
+ receipt.outcome !== "ok" ||
323
+ (request.kernel_revision === context.revision &&
324
+ receipt.contract_stale === true) ||
325
+ receipt.kernel_revision_at_receipt !== request.kernel_revision ||
326
+ receipt.thread_id !== threadId ||
327
+ !receipt.host_id ||
328
+ !idPattern.test(receipt.host_id)) {
329
+ continue;
330
+ }
331
+ return {
332
+ threadId,
333
+ hostId: receipt.host_id,
334
+ role: "plan",
335
+ runId: request.run_id ?? null,
336
+ dispatchLeaseId: request.dispatch_lease_id ?? null,
337
+ };
338
+ }
339
+ return undefined;
340
+ }
341
+ function latestWaitCursor(dir, threadId) {
342
+ const waits = requests(dir).filter((request) => request.tool === "wait_threads" && request.thread_id === threadId);
343
+ for (const request of waits.reverse()) {
344
+ const file = receiptFile(dir, request.request_id);
345
+ if (!fs.existsSync(file))
346
+ continue;
347
+ const receipt = readJson(file);
348
+ if (receipt.outcome === "ok" &&
349
+ receipt.contract_stale !== true &&
350
+ typeof receipt.cursor === "string")
351
+ return receipt.cursor;
352
+ }
353
+ return null;
354
+ }
355
+ function checkPhase(role, phase) {
356
+ if (role === "plan" && !["open", "define", "approve"].includes(phase))
357
+ throw new Error(`Codex planning requires an open/define/approve task; got ${phase}`);
358
+ if (role === "review" && !["verify", "integrate"].includes(phase))
359
+ throw new Error(`Codex review requires a verify/integrate task; got ${phase}`);
360
+ if (role === "execute" && phase !== "execute")
361
+ throw new Error(`Codex execution requires an approved Execute task; got ${phase}`);
362
+ }
363
+ function textFile(file) {
364
+ const content = fs.readFileSync(file, "utf8").trim();
365
+ if (!content || content.length > 64 * 1024)
366
+ throw new Error("Prompt file must contain 1 to 65536 characters");
367
+ return content;
368
+ }
369
+ function roleBoundary(role) {
370
+ if (role === "plan")
371
+ return "Planning may update Pactile planning artifacts, but must not edit product code or approve Execute.";
372
+ if (role === "review")
373
+ return "Review is read-only: inspect the change set and evidence, report findings, and do not alter code or declare acceptance.";
374
+ return "Implement only the approved Execute contract and write set. Do not commit, integrate, archive, change Kernel approval, or declare acceptance.";
375
+ }
376
+ function recordRunBinding(store, context, selected) {
377
+ if (context.kernelKind !== "task-kernel-v2" || !selected.runId)
378
+ return;
379
+ store.startRun({
380
+ taskId: context.taskId,
381
+ runId: selected.runId,
382
+ role: null,
383
+ workspaceId: null,
384
+ providerRunId: null,
385
+ actor: { platform: "pactile", id: "codex-bridge" },
386
+ evidenceLevel: "local",
387
+ });
388
+ }
389
+ function runContextLine(context, selected, includeAuthorization = true) {
390
+ const parts = [
391
+ `Task ID: ${context.taskId}`,
392
+ `Task Kernel: ${context.kernelKind}`,
393
+ `Kernel revision: ${context.revision}`,
394
+ ];
395
+ if (selected.runId)
396
+ parts.push(`Run ID: ${selected.runId}`);
397
+ if (selected.candidateSnapshotId && selected.candidateFingerprint) {
398
+ parts.push(`Candidate snapshot: ${selected.candidateSnapshotId} (${selected.candidateFingerprint})`);
399
+ }
400
+ if (includeAuthorization &&
401
+ selected.run &&
402
+ context.kernelKind === "task-kernel-v2") {
403
+ parts.push(`Run authorization: ${selected.run.authorization.scope}`);
404
+ if (selected.run.writeSetSnapshot.length) {
405
+ parts.push(`Run write set: ${selected.run.writeSetSnapshot.join(", ")}`);
406
+ }
407
+ }
408
+ return parts.join("\n");
409
+ }
410
+ function isRunBoundToContext(context, runId, candidateSnapshotId, candidateFingerprint) {
411
+ if (!runId) {
412
+ return candidateSnapshotId == null && candidateFingerprint == null;
413
+ }
414
+ if (context.kernelKind !== "task-kernel-v2")
415
+ return false;
416
+ const run = context.runs.find((candidate) => candidate.id === runId);
417
+ return Boolean(run &&
418
+ (run.candidateSnapshot?.id ?? null) === (candidateSnapshotId ?? null) &&
419
+ (run.candidateSnapshot?.fingerprint ?? null) ===
420
+ (candidateFingerprint ?? null));
421
+ }
422
+ function coordinationReceiptEvidence(value) {
423
+ if (value === undefined || value === "simulated")
424
+ return "simulated";
425
+ if (value === "desktop-native")
426
+ return value;
427
+ throw new Error("--evidence-level must be simulated or desktop-native");
428
+ }
429
+ function normalizeReplyEvidence(value, escalationId) {
430
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
431
+ throw new Error("Native read reply requires structured reply_evidence");
432
+ }
433
+ const evidence = value;
434
+ const body = evidence.body;
435
+ const responseTurnId = evidence.response_turn_id;
436
+ const bodySha256 = evidence.body_sha256;
437
+ if (evidence.reply_to_escalation_id !== escalationId ||
438
+ typeof responseTurnId !== "string" ||
439
+ !transportIdentifierPattern.test(responseTurnId) ||
440
+ typeof body !== "string" ||
441
+ body.trim() !== body ||
442
+ Buffer.byteLength(body, "utf8") < 1 ||
443
+ Buffer.byteLength(body, "utf8") > 8_192 ||
444
+ escalationSecretPattern.test(body) ||
445
+ typeof bodySha256 !== "string" ||
446
+ !/^[a-f0-9]{64}$/.test(bodySha256) ||
447
+ createHash("sha256").update(body, "utf8").digest("hex") !== bodySha256) {
448
+ throw new Error("Native read reply evidence must match the escalation and bounded body hash");
449
+ }
450
+ return {
451
+ reply_to_escalation_id: escalationId,
452
+ response_turn_id: responseTurnId,
453
+ body,
454
+ body_sha256: bodySha256,
455
+ };
456
+ }
457
+ export function prepareCodexRequest(input) {
458
+ const context = taskContext(input.root, input.task);
459
+ if (input.escalationId !== undefined &&
460
+ !escalationIdPattern.test(input.escalationId)) {
461
+ throw new Error("--escalation-id must be pi-escalation:<Pi Run UUID>");
462
+ }
463
+ if (input.replyToEscalationId !== undefined &&
464
+ !escalationIdPattern.test(input.replyToEscalationId)) {
465
+ throw new Error("--reply-to-escalation-id must be pi-escalation:<Pi Run UUID>");
466
+ }
467
+ if (input.escalationId && input.replyToEscalationId) {
468
+ throw new Error("A Codex request cannot send and reply to an escalation");
469
+ }
470
+ if (input.sourceTask && !input.replyToEscalationId) {
471
+ throw new Error("--source-task is only valid with --reply-to-escalation-id");
472
+ }
473
+ if (input.replyToEscalationId && !input.sourceTask) {
474
+ throw new Error("--reply-to-escalation-id requires --source-task");
475
+ }
476
+ if (input.replyToEscalationId && !input.sendRequestId) {
477
+ throw new Error("--reply-to-escalation-id requires --send-request-id");
478
+ }
479
+ if (input.sendRequestId && !input.replyToEscalationId) {
480
+ throw new Error("--send-request-id is only valid with --reply-to-escalation-id");
481
+ }
482
+ if (input.escalationId && input.promptFile) {
483
+ throw new Error("P40 Codex escalation uses its bound Review prompt; additional prompt files are not accepted");
484
+ }
485
+ if (input.escalationId && input.tool !== "send_message_to_thread") {
486
+ throw new Error("--escalation-id is only valid for a Codex message");
487
+ }
488
+ if (input.replyToEscalationId && input.tool !== "read_thread") {
489
+ throw new Error("--reply-to-escalation-id is only valid for a Codex read");
490
+ }
491
+ if (input.toTask && input.tool === "create_thread") {
492
+ throw new Error("--to-task is only valid for cross-task message");
493
+ }
494
+ if (input.toRunId && !input.toTask) {
495
+ throw new Error("--to-run-id requires --to-task");
496
+ }
497
+ if (input.toTask && !input.threadId) {
498
+ throw new Error("cross-task requests require --thread-id");
499
+ }
500
+ const targetContext = input.toTask
501
+ ? taskContext(input.root, input.toTask)
502
+ : context;
503
+ const crossTask = targetContext.taskId !== context.taskId;
504
+ if (input.toTask && !crossTask) {
505
+ throw new Error("--to-task must identify a different Pactile Task");
506
+ }
507
+ if (crossTask && input.tool !== "send_message_to_thread") {
508
+ throw new Error("--to-task is currently supported only for cross-task messages");
509
+ }
510
+ if (input.resumeExecute &&
511
+ (!crossTask || input.tool !== "send_message_to_thread")) {
512
+ throw new Error("--resume-execute is only valid for a cross-task message");
513
+ }
514
+ if (input.resumeExecute && targetContext.kernelKind !== "task-kernel-v2") {
515
+ throw new Error("--resume-execute requires a Task Kernel v2 destination Run");
516
+ }
517
+ if (input.resumeExecute && targetContext.kernelKind === "task-kernel-v2") {
518
+ throw new Error("Task Kernel v2 --resume-execute dispatch is disabled until P37 admission, lease and Resume/block validation are connected");
519
+ }
520
+ const coordinationToExecutingV2Task = crossTask &&
521
+ input.tool === "send_message_to_thread" &&
522
+ targetContext.kernelKind === "task-kernel-v2" &&
523
+ targetContext.phase === "execute";
524
+ const bound = input.threadId
525
+ ? coordinationToExecutingV2Task
526
+ ? coordinationBoundThread(targetContext, input.threadId)
527
+ : boundThreads(targetContext.dir).get(input.threadId)
528
+ : undefined;
529
+ const role = input.tool === "create_thread" ? input.role : bound?.role;
530
+ if (!role)
531
+ throw new Error(input.tool === "create_thread"
532
+ ? "--role plan|review|execute is required"
533
+ : "Thread is not bound to this Pactile task");
534
+ if (role !== "plan" && role !== "review" && role !== "execute")
535
+ throw new Error("Codex role must be plan, review or execute");
536
+ if (input.tool === "send_message_to_thread" &&
537
+ input.role &&
538
+ input.role !== bound?.role) {
539
+ throw new Error("--role must match the bound Codex thread role");
540
+ }
541
+ if (!coordinationToExecutingV2Task &&
542
+ (input.tool === "create_thread" || input.tool === "send_message_to_thread")) {
543
+ checkPhase(role, crossTask ? targetContext.phase : context.phase);
544
+ }
545
+ if ((input.tool === "wait_threads" || input.tool === "read_thread") &&
546
+ input.promptFile) {
547
+ throw new Error("wait/read do not accept --prompt-file");
548
+ }
549
+ let prompt = input.promptFile ? textFile(input.promptFile) : null;
550
+ if (crossTask && prompt && Buffer.byteLength(prompt, "utf8") > 4_096) {
551
+ throw new Error("cross-task message body must be at most 4096 bytes for the coordination journal");
552
+ }
553
+ const executionDispatch = role === "execute" &&
554
+ (input.tool === "create_thread" ||
555
+ (input.tool === "send_message_to_thread" &&
556
+ (!crossTask || input.resumeExecute === true)));
557
+ const executionContext = crossTask ? targetContext : context;
558
+ if (executionDispatch &&
559
+ role === "execute" &&
560
+ executionContext.kernelKind === "task-kernel-v2") {
561
+ throw new Error("Task Kernel v2 Execute dispatch is disabled until P37 admission, lease and Resume/block validation are connected");
562
+ }
563
+ const selectedRun = selectRun(context, role, input.runId, executionDispatch && !crossTask);
564
+ const targetRun = crossTask
565
+ ? selectRun(targetContext, role, input.toRunId, executionDispatch)
566
+ : selectedRun;
567
+ if (coordinationToExecutingV2Task &&
568
+ (!targetRun.runId ||
569
+ (targetRun.run?.state !== "running" &&
570
+ targetRun.run?.state !== "waiting") ||
571
+ (bound?.runId && bound.runId !== targetRun.runId))) {
572
+ throw new Error("Coordination to an executing Task requires its current active Run and a Plan thread bound to that Task");
573
+ }
574
+ if (input.escalationId) {
575
+ const prepared = readPiReviewEscalationV1(input.root, context.task, input.escalationId);
576
+ const current = assertCurrentPiReviewEscalationV1(input.root, context.task, prepared);
577
+ const sourceRun = context.runs.at(-1);
578
+ if (!crossTask ||
579
+ context.kernelKind !== "task-kernel-v2" ||
580
+ context.phase !== "verify" ||
581
+ role !== "review" ||
582
+ bound?.role !== "review" ||
583
+ targetContext.kernelKind !== "task-kernel-v2" ||
584
+ targetRun.run?.state !== "completed" ||
585
+ !targetRun.run.candidateSnapshot ||
586
+ !input.runId ||
587
+ sourceRun?.id !== input.runId ||
588
+ sourceRun.state !== "completed" ||
589
+ !sourceRun.candidateSnapshot ||
590
+ selectedRun.runId !== sourceRun.id ||
591
+ selectedRun.candidateSnapshotId !== sourceRun.candidateSnapshot.id ||
592
+ selectedRun.candidateFingerprint !==
593
+ sourceRun.candidateSnapshot.fingerprint ||
594
+ current.run.id !== sourceRun.id ||
595
+ current.kernel.reviews.at(-1)?.id !== prepared.request.reviewId ||
596
+ current.kernel.reviews.at(-1)?.decision === "pass") {
597
+ throw new Error("Codex escalation send requires its current prepared non-passing Pi Review, source candidate and bound Review thread");
598
+ }
599
+ prompt = buildCodexEscalationPromptV1({
600
+ prepared,
601
+ hostId: bound.hostId,
602
+ threadId: bound.threadId,
603
+ });
604
+ }
605
+ let escalationBinding = null;
606
+ let escalationSendBinding = null;
607
+ if (input.escalationId) {
608
+ const prepared = readPiReviewEscalationV1(input.root, context.task, input.escalationId);
609
+ escalationBinding = {
610
+ sourceTask: context.task,
611
+ sourceTaskId: prepared.request.taskId,
612
+ preparedRequestRef: prepared.ref,
613
+ preparedFingerprint: prepared.request.preparedFingerprint,
614
+ };
615
+ }
616
+ if (input.replyToEscalationId) {
617
+ if (role !== "review" || bound?.role !== "review") {
618
+ throw new Error("Pi escalation replies require a bound Codex Review thread");
619
+ }
620
+ const prepared = readPiReviewEscalationV1(input.root, input.sourceTask, input.replyToEscalationId);
621
+ assertCurrentPiReviewEscalationV1(input.root, input.sourceTask, prepared);
622
+ const send = readCodexEscalationSendV1({
623
+ root: input.root,
624
+ sourceTask: input.sourceTask,
625
+ escalationId: input.replyToEscalationId,
626
+ sendRequestId: input.sendRequestId,
627
+ });
628
+ if (send.request["to_task"] !== path.basename(context.dir) ||
629
+ send.request["to_task_id"] !== context.taskId ||
630
+ send.request["thread_id"] !== bound.threadId ||
631
+ send.request["host_id"] !== bound.hostId ||
632
+ send.request["to_run_id"] !== selectedRun.runId ||
633
+ send.request["to_candidate_snapshot_id"] !== selectedRun.candidateSnapshotId ||
634
+ send.request["to_candidate_fingerprint"] !== selectedRun.candidateFingerprint) {
635
+ throw new Error("Escalation reply read must follow the selected send to this exact Review Task and thread");
636
+ }
637
+ escalationSendBinding = {
638
+ requestId: input.sendRequestId,
639
+ requestFingerprint: send.requestFingerprint,
640
+ receiptSha256: send.receiptSha256,
641
+ receiptRecordedAt: send.receiptRecordedAt,
642
+ };
643
+ const sourceDir = prepared.taskDir;
644
+ escalationBinding = {
645
+ sourceTask: path.relative(input.root, sourceDir).replaceAll("\\", "/"),
646
+ sourceTaskId: prepared.request.taskId,
647
+ preparedRequestRef: prepared.ref,
648
+ preparedFingerprint: prepared.request.preparedFingerprint,
649
+ };
650
+ if (context.kernelKind !== "task-kernel-v2" ||
651
+ selectedRun.run?.state !== "completed" ||
652
+ !selectedRun.run.candidateSnapshot) {
653
+ throw new Error("Pi escalation reply read requires the current completed Review Task candidate");
654
+ }
655
+ }
656
+ if (executionDispatch &&
657
+ role === "execute" &&
658
+ input.tool !== "wait_threads" &&
659
+ (crossTask ? targetContext.kernelKind : context.kernelKind) ===
660
+ "task-kernel-v2" &&
661
+ !(crossTask ? input.toRunId : input.runId)) {
662
+ throw new Error(crossTask
663
+ ? "Task Kernel v2 cross-task Execute dispatch requires an explicit --to-run-id"
664
+ : "Task Kernel v2 Execute dispatch requires an explicit --run-id");
665
+ }
666
+ if (executionDispatch &&
667
+ role === "execute" &&
668
+ (input.tool === "create_thread" || input.tool === "send_message_to_thread")) {
669
+ const dispatchContext = crossTask ? targetContext : context;
670
+ const dispatchRun = crossTask ? targetRun.run : selectedRun.run;
671
+ if (dispatchContext.kernelKind === "legacy-task-kernel-v1") {
672
+ const dir = approvedExecuteTask(input.root, dispatchContext.task);
673
+ if (fs.existsSync(path.join(dir, "implement.md"))) {
674
+ const parsed = readStrategyContract(dir);
675
+ if (parsed.errors.length)
676
+ throw new Error(`Invalid execution contract: ${parsed.errors.join("; ")}`);
677
+ }
678
+ }
679
+ else if (!dispatchRun?.authorization.scope.trim() ||
680
+ !dispatchRun.writeSetSnapshot.length) {
681
+ throw new Error("Codex Execute dispatch requires a Task Kernel v2 Run with a scope and non-empty write set");
682
+ }
683
+ }
684
+ const executeScope = executionDispatch &&
685
+ role === "execute" &&
686
+ context.kernelKind === "legacy-task-kernel-v1" &&
687
+ (input.tool === "create_thread" || input.tool === "send_message_to_thread")
688
+ ? parallelChild(input.root, context.dir)
689
+ : null;
690
+ const runScope = executionDispatch &&
691
+ role === "execute" &&
692
+ (crossTask ? targetContext.kernelKind : context.kernelKind) ===
693
+ "task-kernel-v2"
694
+ ? crossTask
695
+ ? targetRun.run
696
+ : selectedRun.run
697
+ : null;
698
+ const scopeLine = executeScope
699
+ ? `Parent-approved write set: ${executeScope.touches.join(", ")}. Integration owner: Parent.`
700
+ : runScope
701
+ ? `Task Run authorized scope: ${runScope.authorization.scope}. Approved write set: ${runScope.writeSetSnapshot.join(", ")}.`
702
+ : "";
703
+ let baseBranch = null;
704
+ if (input.tool === "create_thread" &&
705
+ context.kernelKind === "legacy-task-kernel-v1") {
706
+ const record = JSON.parse(fs.readFileSync(path.join(context.dir, "task.json"), "utf8"));
707
+ baseBranch =
708
+ record && typeof record === "object" && "base_branch" in record
709
+ ? record.base_branch
710
+ : null;
711
+ }
712
+ if (executionDispatch &&
713
+ role === "execute" &&
714
+ baseBranch &&
715
+ (typeof baseBranch !== "string" ||
716
+ !/^[A-Za-z0-9][A-Za-z0-9._/-]{0,127}$/.test(baseBranch) ||
717
+ baseBranch.includes(".."))) {
718
+ throw new Error("Invalid approved base_branch for Codex Execute");
719
+ }
720
+ let args;
721
+ if (input.tool === "create_thread") {
722
+ if (!prompt)
723
+ throw new Error("create requires --prompt-file");
724
+ const targetType = input.targetType ?? "project";
725
+ if (targetType !== "project" && targetType !== "projectless")
726
+ throw new Error("--target must be project or projectless");
727
+ if (targetType === "project" &&
728
+ (!input.projectId ||
729
+ !idPattern.test(input.projectId) ||
730
+ !["local", "worktree"].includes(input.environment ?? ""))) {
731
+ throw new Error("project create requires --project-id and --environment local|worktree");
732
+ }
733
+ if (role === "execute" &&
734
+ (targetType !== "project" || input.environment !== "worktree"))
735
+ throw new Error("Codex Execute requires a project worktree");
736
+ const target = targetType === "projectless"
737
+ ? { type: "projectless" }
738
+ : {
739
+ type: "project",
740
+ projectId: input.projectId,
741
+ environment: {
742
+ type: input.environment,
743
+ ...(role === "execute" &&
744
+ typeof baseBranch === "string" &&
745
+ baseBranch
746
+ ? { startingState: { type: "branch", branchName: baseBranch } }
747
+ : {}),
748
+ },
749
+ };
750
+ args = {
751
+ prompt: `Pactile task: ${context.task}\nCanonical Pactile task directory: ${context.dir}\nCodex role: ${role}\n${runContextLine(context, selectedRun)}\nUse Pactile as the task lifecycle and evidence source. ${roleBoundary(role)} ${scopeLine} Do not change Kernel approval or claim acceptance from a message alone. Do not dispatch Codex subagents.\n\n${prompt}`,
752
+ target,
753
+ ...(input.title ? { title: input.title } : {}),
754
+ };
755
+ }
756
+ else {
757
+ if (!bound)
758
+ throw new Error("Thread is not bound to this Pactile task");
759
+ if (input.tool === "send_message_to_thread") {
760
+ if (!prompt)
761
+ throw new Error("message requires --prompt-file");
762
+ if (executionDispatch &&
763
+ role === "execute" &&
764
+ bound.runId &&
765
+ bound.runId !== (crossTask ? targetRun.runId : selectedRun.runId)) {
766
+ throw new Error("Codex Execute thread is bound to a different Task Run");
767
+ }
768
+ args = {
769
+ threadId: bound.threadId,
770
+ hostId: bound.hostId,
771
+ prompt: input.escalationId
772
+ ? prompt
773
+ : crossTask
774
+ ? input.resumeExecute
775
+ ? `Pactile cross-task Execute dispatch from ${context.taskId} to ${targetContext.taskId}.\n${runContextLine(context, selectedRun, false)}\nRecipient ${runContextLine(targetContext, targetRun)}\n${roleBoundary(role)} ${scopeLine}\nDo not change Kernel approval or claim acceptance from this message. Do not dispatch Codex subagents.\n\n${prompt}`
776
+ : `Pactile coordination-only message from ${context.taskId} to ${targetContext.taskId}. This message and any send receipt do not resume a Run, change Task state, grant Execute permission, or authorize file writes. Preserve any blocked or waiting state. Do not edit files, change approval, or dispatch Codex subagents; wait for an explicit Kernel Resume and P37 dispatch admission before executing.\n${runContextLine(context, selectedRun, false)}\nRecipient ${runContextLine(targetContext, targetRun, false)}\n\n${prompt}`
777
+ : `Pactile task: ${context.task}\nCanonical Pactile task directory: ${context.dir}\n${runContextLine(context, selectedRun)}\n${roleBoundary(role)} ${scopeLine}\n\n${prompt}`,
778
+ };
779
+ }
780
+ else if (input.tool === "wait_threads") {
781
+ const timeoutMs = input.timeoutMs ?? 120_000;
782
+ if (!Number.isInteger(timeoutMs) || timeoutMs < 0 || timeoutMs > 120_000)
783
+ throw new Error("wait timeout must be 0 to 120000 ms");
784
+ const afterCursor = latestWaitCursor(context.dir, bound.threadId);
785
+ args = {
786
+ targets: [
787
+ {
788
+ threadId: bound.threadId,
789
+ hostId: bound.hostId,
790
+ ...(afterCursor ? { afterCursor } : {}),
791
+ },
792
+ ],
793
+ timeoutMs,
794
+ };
795
+ }
796
+ else {
797
+ args = { threadId: bound.threadId, hostId: bound.hostId, turnLimit: 1 };
798
+ }
799
+ }
800
+ const requestId = randomUUID();
801
+ const request = {
802
+ schema_version: 1,
803
+ request_id: requestId,
804
+ task: context.task,
805
+ task_id: context.taskId,
806
+ task_kernel_kind: context.kernelKind,
807
+ kernel_revision: context.revision,
808
+ contract_fingerprint: context.contractFingerprint,
809
+ run_id: selectedRun.runId,
810
+ candidate_snapshot_id: selectedRun.candidateSnapshotId,
811
+ candidate_fingerprint: selectedRun.candidateFingerprint,
812
+ to_task: crossTask ? path.basename(targetContext.dir) : null,
813
+ to_task_id: crossTask ? targetContext.taskId : null,
814
+ to_kernel_revision: crossTask ? targetContext.revision : null,
815
+ to_task_kernel_kind: crossTask ? targetContext.kernelKind : null,
816
+ to_contract_fingerprint: crossTask
817
+ ? targetContext.contractFingerprint
818
+ : null,
819
+ to_run_id: crossTask ? targetRun.runId : null,
820
+ to_candidate_snapshot_id: crossTask ? targetRun.candidateSnapshotId : null,
821
+ to_candidate_fingerprint: crossTask ? targetRun.candidateFingerprint : null,
822
+ coordination_message_id: crossTask && input.tool === "send_message_to_thread" ? requestId : null,
823
+ ...(input.escalationId ? { escalation_id: input.escalationId } : {}),
824
+ ...(input.replyToEscalationId
825
+ ? { reply_to_escalation_id: input.replyToEscalationId }
826
+ : {}),
827
+ ...(escalationBinding
828
+ ? {
829
+ escalation_source_task: escalationBinding.sourceTask,
830
+ escalation_source_task_id: escalationBinding.sourceTaskId,
831
+ escalation_prepared_request_ref: escalationBinding.preparedRequestRef,
832
+ escalation_prepared_fingerprint: escalationBinding.preparedFingerprint,
833
+ }
834
+ : {}),
835
+ ...(escalationSendBinding
836
+ ? {
837
+ escalation_send_request_id: escalationSendBinding.requestId,
838
+ escalation_send_request_fingerprint: escalationSendBinding.requestFingerprint,
839
+ escalation_send_receipt_sha256: escalationSendBinding.receiptSha256,
840
+ escalation_send_receipt_recorded_at: escalationSendBinding.receiptRecordedAt,
841
+ }
842
+ : {}),
843
+ created_at: new Date().toISOString(),
844
+ tool: input.tool,
845
+ role,
846
+ thread_id: bound?.threadId ?? null,
847
+ host_id: bound?.hostId ?? null,
848
+ arguments: args,
849
+ prompt_sha256: prompt
850
+ ? createHash("sha256").update(prompt).digest("hex")
851
+ : null,
852
+ };
853
+ request.request_fingerprint = codexRequestFingerprint(request);
854
+ const release = context.kernelKind === "legacy-task-kernel-v1" &&
855
+ role === "execute" &&
856
+ input.tool === "create_thread"
857
+ ? reserveParallelChild(input.root, context.dir, {
858
+ id: request.request_id,
859
+ durable: true,
860
+ })
861
+ : null;
862
+ const coordination = new CoordinationStore(input.root);
863
+ recordRunBinding(coordination, context, selectedRun);
864
+ if (crossTask)
865
+ recordRunBinding(coordination, targetContext, targetRun);
866
+ try {
867
+ writeNew(requestFile(context.dir, request.request_id), request);
868
+ }
869
+ catch (error) {
870
+ release?.();
871
+ throw error;
872
+ }
873
+ if (request.coordination_message_id && prompt) {
874
+ coordination.createMessage({
875
+ messageId: request.request_id,
876
+ fromTaskId: context.taskId,
877
+ toTaskId: targetContext.taskId,
878
+ fromRunId: selectedRun.runId,
879
+ toRunId: targetRun.runId,
880
+ sender: { platform: "codex", id: "node-bridge" },
881
+ evidenceLevel: "local",
882
+ body: prompt,
883
+ requestId: request.request_id,
884
+ hostRef: bound?.threadId ?? null,
885
+ });
886
+ }
887
+ return request;
888
+ }
889
+ export function recordCodexReceipt(root, task, requestId, resultFile, evidenceLevelInput) {
890
+ if (!uuidPattern.test(requestId))
891
+ throw new Error("Invalid request id");
892
+ const initialContext = taskContextIncludingArchive(root, task);
893
+ if (initialContext.archived) {
894
+ throw new Error("Cannot record a new Codex receipt for an archived Task");
895
+ }
896
+ const initialRequest = readJson(requestFile(initialContext.dir, requestId));
897
+ const initialFingerprint = codexRequestFingerprint(initialRequest);
898
+ const record = () => recordCodexReceiptUnlocked(root, task, requestId, resultFile, evidenceLevelInput, initialRequest.tool, initialFingerprint);
899
+ if (initialRequest.tool !== "send_message_to_thread")
900
+ return record();
901
+ return withProjectSchedulerMutex(root, () => {
902
+ const lockedContext = taskContextIncludingArchive(root, task);
903
+ const lockedRequest = readJson(requestFile(lockedContext.dir, requestId));
904
+ if (codexRequestFingerprint(lockedRequest) !== initialFingerprint) {
905
+ throw new Error("Codex send request changed while acquiring the receipt lock");
906
+ }
907
+ return record();
908
+ });
909
+ }
910
+ function recordCodexReceiptUnlocked(root, task, requestId, resultFile, evidenceLevelInput, expectedTool, expectedFingerprint) {
911
+ if (!uuidPattern.test(requestId))
912
+ throw new Error("Invalid request id");
913
+ const context = taskContextIncludingArchive(root, task);
914
+ if (context.archived) {
915
+ throw new Error("Cannot record a new Codex receipt for an archived Task");
916
+ }
917
+ const request = readJson(requestFile(context.dir, requestId));
918
+ if (request.tool !== expectedTool || codexRequestFingerprint(request) !== expectedFingerprint) {
919
+ throw new Error("Codex request changed before its receipt was recorded");
920
+ }
921
+ if (request.request_id !== requestId ||
922
+ (request.task_id && request.task_id !== context.taskId) ||
923
+ request.task !== context.task) {
924
+ throw new Error("Request belongs to another task");
925
+ }
926
+ const requestFingerprint = codexRequestFingerprint(request);
927
+ if (request.request_fingerprint !== undefined &&
928
+ request.request_fingerprint !== requestFingerprint) {
929
+ throw new Error("Request fingerprint does not match its persisted content");
930
+ }
931
+ const result = readJson(resultFile);
932
+ if (result.request_id !== requestId || result.tool !== request.tool)
933
+ throw new Error("Receipt does not match the request");
934
+ const evidenceLevel = coordinationReceiptEvidence(evidenceLevelInput);
935
+ if (!["ok", "failed", "queued"].includes(String(result.outcome)) ||
936
+ (result.outcome === "queued" && request.tool !== "create_thread")) {
937
+ throw new Error("Receipt outcome must be ok, failed or queued for create");
938
+ }
939
+ const successful = result.outcome === "ok";
940
+ const threadId = typeof result.thread_id === "string" && idPattern.test(result.thread_id)
941
+ ? result.thread_id
942
+ : request.thread_id;
943
+ const hostId = typeof result.host_id === "string" && idPattern.test(result.host_id)
944
+ ? result.host_id
945
+ : request.host_id;
946
+ const clientThreadId = typeof result.client_thread_id === "string" &&
947
+ idPattern.test(result.client_thread_id)
948
+ ? result.client_thread_id
949
+ : null;
950
+ let threadCreationState;
951
+ if (request.tool === "create_thread") {
952
+ const suppliedState = result.thread_creation_state;
953
+ if (suppliedState !== undefined &&
954
+ suppliedState !== "created" &&
955
+ suppliedState !== "not_created" &&
956
+ suppliedState !== "unknown") {
957
+ throw new Error("thread_creation_state must be created, not_created or unknown");
958
+ }
959
+ if (successful) {
960
+ if (suppliedState === "not_created" || suppliedState === "unknown") {
961
+ throw new Error("Successful create receipt cannot report thread_creation_state as not created or unknown");
962
+ }
963
+ threadCreationState = "created";
964
+ }
965
+ else if (result.outcome === "queued") {
966
+ if (suppliedState === "created" || suppliedState === "not_created") {
967
+ throw new Error("Queued create cannot establish whether a thread was created");
968
+ }
969
+ threadCreationState = "unknown";
970
+ }
971
+ else {
972
+ if (suppliedState === "created") {
973
+ throw new Error("Failed create receipt cannot report thread_creation_state as created");
974
+ }
975
+ threadCreationState = suppliedState ?? "unknown";
976
+ if (threadCreationState === "not_created" &&
977
+ (threadId !== null ||
978
+ clientThreadId !== null ||
979
+ result.thread_id != null ||
980
+ result.client_thread_id != null)) {
981
+ throw new Error("not_created requires no thread_id or client_thread_id");
982
+ }
983
+ }
984
+ }
985
+ if (successful && (!threadId || !hostId))
986
+ throw new Error("Successful receipt requires thread_id and host_id");
987
+ if (evidenceLevel === "desktop-native" &&
988
+ successful &&
989
+ (request.tool === "create_thread" || request.tool === "wait_threads") &&
990
+ (result.thread_id !== threadId || result.host_id !== hostId)) {
991
+ throw new Error("Desktop-native create/wait receipt must echo the native thread_id and host_id");
992
+ }
993
+ if (evidenceLevel === "desktop-native" &&
994
+ request.task_kernel_kind === "task-kernel-v2" &&
995
+ request.role === "execute" &&
996
+ request.tool === "wait_threads" &&
997
+ !request.run_id) {
998
+ throw new Error("Desktop-native Execute wait receipts require an explicit --run-id");
999
+ }
1000
+ if (result.outcome === "queued" && (!clientThreadId || threadId))
1001
+ throw new Error("Queued create requires client_thread_id without thread_id");
1002
+ if (request.thread_id &&
1003
+ (threadId !== request.thread_id || hostId !== request.host_id))
1004
+ throw new Error("Receipt thread identity changed");
1005
+ const queuedPath = queuedFile(context.dir, requestId);
1006
+ if (fs.existsSync(queuedPath) &&
1007
+ result.outcome !== "queued" &&
1008
+ readJson(queuedPath).client_thread_id !== clientThreadId) {
1009
+ throw new Error("Ready receipt must match the queued client_thread_id");
1010
+ }
1011
+ const status = typeof result.status === "string" && result.status.length <= 80
1012
+ ? result.status
1013
+ : null;
1014
+ if (request.escalation_id) {
1015
+ const prepared = readPiReviewEscalationV1(root, context.task, request.escalation_id);
1016
+ const currentPiReview = assertCurrentPiReviewEscalationV1(root, context.task, prepared);
1017
+ assertCodexEscalationSendPromptV1(prepared, request);
1018
+ if (request.tool !== "send_message_to_thread" ||
1019
+ request.reply_to_escalation_id ||
1020
+ evidenceLevel !== "desktop-native" ||
1021
+ (successful && currentPiReview.kernel.reviews.at(-1)?.id !== prepared.request.reviewId) ||
1022
+ request.role !== "review" ||
1023
+ request.escalation_source_task !== context.task ||
1024
+ request.escalation_source_task_id !== prepared.request.taskId ||
1025
+ request.escalation_prepared_request_ref !== prepared.ref ||
1026
+ request.escalation_prepared_fingerprint !==
1027
+ prepared.request.preparedFingerprint ||
1028
+ request.escalation_id !== prepared.request.escalationId ||
1029
+ !request.to_task_id ||
1030
+ !request.thread_id ||
1031
+ !request.host_id ||
1032
+ (successful &&
1033
+ (result.thread_id !== request.thread_id ||
1034
+ result.host_id !== request.host_id))) {
1035
+ throw new Error("Pi escalation send requires a desktop-native cross-task message receipt bound to its Task and thread");
1036
+ }
1037
+ }
1038
+ let replyEvidence;
1039
+ if (request.reply_to_escalation_id) {
1040
+ if (!request.escalation_source_task) {
1041
+ throw new Error("P40 reply read is missing its source Task binding");
1042
+ }
1043
+ const prepared = readPiReviewEscalationV1(root, request.escalation_source_task, request.reply_to_escalation_id);
1044
+ assertCurrentPiReviewEscalationV1(root, request.escalation_source_task, prepared);
1045
+ const send = readCodexEscalationSendV1({
1046
+ root,
1047
+ sourceTask: request.escalation_source_task,
1048
+ escalationId: request.reply_to_escalation_id,
1049
+ sendRequestId: request.escalation_send_request_id ?? "",
1050
+ });
1051
+ if (request.escalation_send_request_fingerprint !== send.requestFingerprint ||
1052
+ request.escalation_send_receipt_sha256 !== send.receiptSha256 ||
1053
+ request.escalation_send_receipt_recorded_at !== send.receiptRecordedAt ||
1054
+ Date.parse(request.created_at) < Date.parse(send.receiptRecordedAt)) {
1055
+ throw new Error("Escalation reply read request is not causally bound to the latest successful native send");
1056
+ }
1057
+ if (request.tool !== "read_thread" ||
1058
+ request.escalation_id ||
1059
+ evidenceLevel !== "desktop-native" ||
1060
+ request.role !== "review" ||
1061
+ request.escalation_source_task_id !== prepared.request.taskId ||
1062
+ request.escalation_prepared_request_ref !== prepared.ref ||
1063
+ request.escalation_prepared_fingerprint !==
1064
+ prepared.request.preparedFingerprint ||
1065
+ !request.escalation_send_request_id ||
1066
+ !request.escalation_send_request_fingerprint ||
1067
+ !request.escalation_send_receipt_sha256 ||
1068
+ !request.escalation_send_receipt_recorded_at ||
1069
+ !request.thread_id ||
1070
+ !request.host_id) {
1071
+ throw new Error("Escalation reply requires a desktop-native read_thread request bound to its Task and thread");
1072
+ }
1073
+ if (successful) {
1074
+ if (status !== "completed" ||
1075
+ result.reply_to_escalation_id !== request.reply_to_escalation_id ||
1076
+ result.thread_id !== request.thread_id ||
1077
+ result.host_id !== request.host_id) {
1078
+ throw new Error("Native escalation reply read must complete on the bound thread with exact escalation correlation");
1079
+ }
1080
+ replyEvidence = normalizeReplyEvidence(result.reply_evidence, request.reply_to_escalation_id);
1081
+ }
1082
+ }
1083
+ if (successful &&
1084
+ request.tool === "wait_threads" &&
1085
+ !["completed", "needs_attention", "timeout"].includes(status ?? "")) {
1086
+ throw new Error("Wait receipt requires completed, needs_attention or timeout status");
1087
+ }
1088
+ const reason = typeof result.reason === "string" && result.reason.length <= 500
1089
+ ? result.reason
1090
+ : null;
1091
+ if (result.outcome === "failed" && !reason)
1092
+ throw new Error("Failed receipt requires a short reason");
1093
+ const cursor = typeof result.cursor === "string" && result.cursor.length <= 2048
1094
+ ? result.cursor
1095
+ : null;
1096
+ let destinationContext = null;
1097
+ if (request.to_task) {
1098
+ try {
1099
+ destinationContext = taskContextIncludingArchive(root, request.to_task);
1100
+ }
1101
+ catch {
1102
+ destinationContext = null;
1103
+ }
1104
+ }
1105
+ const sourceStale = context.archived ||
1106
+ context.revision !== request.kernel_revision ||
1107
+ (request.task_id !== undefined && request.task_id !== context.taskId) ||
1108
+ (request.task_kernel_kind !== undefined &&
1109
+ request.task_kernel_kind !== context.kernelKind) ||
1110
+ (request.contract_fingerprint !== undefined &&
1111
+ request.contract_fingerprint !== context.contractFingerprint) ||
1112
+ !isRunBoundToContext(context, request.run_id, request.candidate_snapshot_id, request.candidate_fingerprint);
1113
+ const destinationStale = Boolean(request.to_task) &&
1114
+ (!destinationContext ||
1115
+ destinationContext.archived ||
1116
+ destinationContext.taskId !== request.to_task_id ||
1117
+ destinationContext.revision !== request.to_kernel_revision ||
1118
+ destinationContext.kernelKind !== request.to_task_kernel_kind ||
1119
+ destinationContext.contractFingerprint !==
1120
+ request.to_contract_fingerprint ||
1121
+ !isRunBoundToContext(destinationContext, request.to_run_id, request.to_candidate_snapshot_id, request.to_candidate_fingerprint));
1122
+ const contractStale = sourceStale || destinationStale;
1123
+ const receipt = {
1124
+ schema_version: 1,
1125
+ request_id: requestId,
1126
+ task_id: context.taskId,
1127
+ run_id: request.run_id ?? null,
1128
+ candidate_snapshot_id: request.candidate_snapshot_id ?? null,
1129
+ candidate_fingerprint: request.candidate_fingerprint ?? null,
1130
+ to_task_id: request.to_task_id ?? null,
1131
+ to_run_id: request.to_run_id ?? null,
1132
+ to_candidate_snapshot_id: request.to_candidate_snapshot_id ?? null,
1133
+ to_candidate_fingerprint: request.to_candidate_fingerprint ?? null,
1134
+ destination_kernel_revision_at_receipt: destinationContext?.revision ?? null,
1135
+ request_fingerprint: requestFingerprint,
1136
+ evidence_level: evidenceLevel,
1137
+ ...(request.escalation_id ? { escalation_id: request.escalation_id } : {}),
1138
+ ...(request.reply_to_escalation_id
1139
+ ? { reply_to_escalation_id: request.reply_to_escalation_id }
1140
+ : {}),
1141
+ ...(request.escalation_source_task
1142
+ ? { escalation_source_task: request.escalation_source_task }
1143
+ : {}),
1144
+ ...(request.escalation_source_task_id
1145
+ ? { escalation_source_task_id: request.escalation_source_task_id }
1146
+ : {}),
1147
+ ...(request.escalation_prepared_request_ref
1148
+ ? {
1149
+ escalation_prepared_request_ref: request.escalation_prepared_request_ref,
1150
+ }
1151
+ : {}),
1152
+ ...(request.escalation_prepared_fingerprint
1153
+ ? {
1154
+ escalation_prepared_fingerprint: request.escalation_prepared_fingerprint,
1155
+ }
1156
+ : {}),
1157
+ ...(request.escalation_send_request_id
1158
+ ? {
1159
+ escalation_send_request_id: request.escalation_send_request_id,
1160
+ escalation_send_request_fingerprint: request.escalation_send_request_fingerprint,
1161
+ escalation_send_receipt_sha256: request.escalation_send_receipt_sha256,
1162
+ escalation_send_receipt_recorded_at: request.escalation_send_receipt_recorded_at,
1163
+ }
1164
+ : {}),
1165
+ ...(replyEvidence ? { reply_evidence: replyEvidence } : {}),
1166
+ ...(threadCreationState
1167
+ ? { thread_creation_state: threadCreationState }
1168
+ : {}),
1169
+ tool: request.tool,
1170
+ outcome: result.outcome,
1171
+ thread_id: threadId,
1172
+ client_thread_id: clientThreadId,
1173
+ host_id: hostId,
1174
+ status,
1175
+ cursor,
1176
+ reason,
1177
+ kernel_revision_at_receipt: context.revision,
1178
+ contract_stale: contractStale,
1179
+ recorded_at: new Date().toISOString(),
1180
+ assurance: "host-reported",
1181
+ };
1182
+ writeNew(result.outcome === "queued"
1183
+ ? queuedPath
1184
+ : receiptFile(context.dir, requestId), receipt);
1185
+ if (request.task_kernel_kind !== "task-kernel-v2" &&
1186
+ request.role === "execute" &&
1187
+ request.tool === "create_thread" &&
1188
+ result.outcome === "failed") {
1189
+ releaseParallelChild(root, context.dir, requestId);
1190
+ }
1191
+ if (request.task_kernel_kind !== "task-kernel-v2" &&
1192
+ request.role === "execute" &&
1193
+ request.tool === "wait_threads" &&
1194
+ result.outcome === "ok" &&
1195
+ status === "completed") {
1196
+ const create = requests(context.dir).find((candidate) => candidate.tool === "create_thread" &&
1197
+ candidate.role === "execute" &&
1198
+ fs.existsSync(receiptFile(context.dir, candidate.request_id)) &&
1199
+ readJson(receiptFile(context.dir, candidate.request_id)).thread_id ===
1200
+ threadId);
1201
+ if (create)
1202
+ releaseParallelChild(root, context.dir, create.request_id);
1203
+ }
1204
+ if (!contractStale) {
1205
+ const coordination = new CoordinationStore(root);
1206
+ if (request.coordination_message_id &&
1207
+ request.tool === "send_message_to_thread") {
1208
+ coordination.recordMessageReceipt({
1209
+ messageId: request.coordination_message_id,
1210
+ receiptId: requestId,
1211
+ status: result.outcome === "ok" ? "sent" : "failed",
1212
+ actor: { platform: "codex", id: hostId ?? "desktop" },
1213
+ evidenceLevel,
1214
+ externalRef: threadId,
1215
+ note: result.outcome === "failed"
1216
+ ? reason
1217
+ : "Host reported send accepted; recipient delivery is not confirmed.",
1218
+ });
1219
+ }
1220
+ if (request.task_kernel_kind === "task-kernel-v2" && request.run_id) {
1221
+ const coordinatedRun = coordination
1222
+ .snapshot()
1223
+ .runs.find((run) => run.started.task_id === context.taskId &&
1224
+ run.started.run_id === request.run_id);
1225
+ if (coordinatedRun && !coordinatedRun.result) {
1226
+ const requestRef = path
1227
+ .relative(root, requestFile(context.dir, requestId))
1228
+ .replaceAll("\\", "/");
1229
+ const receiptRef = path
1230
+ .relative(root, receiptFile(context.dir, requestId))
1231
+ .replaceAll("\\", "/");
1232
+ const sequence = (coordinatedRun.progress.at(-1)?.sequence ?? -1) + 1;
1233
+ coordination.recordRunProgress({
1234
+ taskId: context.taskId,
1235
+ runId: request.run_id,
1236
+ sequence,
1237
+ name: `codex.${request.tool.replaceAll("_", ".")}.${receipt.outcome}`,
1238
+ summary: `Codex bridge host-reported ${request.tool} receipt: ${receipt.outcome}${status ? ` (${status})` : ""}${reason ? `: ${reason}` : ""}`,
1239
+ evidenceRefs: [requestRef, receiptRef],
1240
+ actor: { platform: "codex", id: hostId ?? "desktop" },
1241
+ evidenceLevel,
1242
+ });
1243
+ }
1244
+ }
1245
+ }
1246
+ return receipt;
1247
+ }
1248
+ export function codexBridgeStatus(root, task) {
1249
+ const context = taskContextIncludingArchive(root, task);
1250
+ const all = requests(context.dir);
1251
+ const receipts = all.flatMap((request) => {
1252
+ const file = receiptFile(context.dir, request.request_id);
1253
+ return fs.existsSync(file)
1254
+ ? [readJson(file)]
1255
+ : [];
1256
+ });
1257
+ const completed = new Set(receipts.map((receipt) => receipt.request_id));
1258
+ const queued = all.flatMap((request) => {
1259
+ const file = queuedFile(context.dir, request.request_id);
1260
+ return fs.existsSync(file) && !completed.has(request.request_id)
1261
+ ? [readJson(file)]
1262
+ : [];
1263
+ });
1264
+ const coordinated = new CoordinationStore(root).snapshot();
1265
+ const taskEvents = coordinated.events.filter((event) => (event.type === "task.blocked" || event.type === "task.unblocked") &&
1266
+ event.task_id === context.taskId);
1267
+ return {
1268
+ task: context.task,
1269
+ task_id: context.taskId,
1270
+ task_kernel_kind: context.kernelKind,
1271
+ archived: context.archived,
1272
+ phase: context.phase,
1273
+ kernel_revision: context.revision,
1274
+ threads: [...boundThreads(context.dir).values()],
1275
+ pending: all
1276
+ .filter((request) => !completed.has(request.request_id))
1277
+ .map(({ request_id, tool, role, thread_id, kernel_revision, created_at, prompt_sha256, }) => ({
1278
+ request_id,
1279
+ tool,
1280
+ role,
1281
+ thread_id,
1282
+ kernel_revision,
1283
+ created_at,
1284
+ prompt_sha256,
1285
+ })),
1286
+ queued,
1287
+ receipts,
1288
+ coordination: {
1289
+ messages: coordinated.messages
1290
+ .filter(({ message }) => message.from_task_id === context.taskId ||
1291
+ message.to_task_id === context.taskId)
1292
+ .map(({ message, status, receipts: messageReceipts }) => ({
1293
+ message_id: message.message_id,
1294
+ from_task_id: message.from_task_id,
1295
+ to_task_id: message.to_task_id,
1296
+ from_run_id: message.from_run_id,
1297
+ to_run_id: message.to_run_id,
1298
+ status,
1299
+ request_id: message.request_id,
1300
+ host_ref: message.host_ref,
1301
+ evidence_level: messageReceipts.at(-1)?.evidence_level ?? message.evidence_level,
1302
+ recorded_at: message.recorded_at,
1303
+ })),
1304
+ blocked_tasks: coordinated.blocked_tasks.filter((event) => event.task_id === context.taskId),
1305
+ task_events: taskEvents,
1306
+ runs: coordinated.runs.filter(({ started }) => started.task_id === context.taskId),
1307
+ },
1308
+ };
1309
+ }
1310
+ export function blockCodexTask(root, task, input) {
1311
+ const context = taskContext(root, task);
1312
+ const coordination = new CoordinationStore(root);
1313
+ let blockedByTaskId = input.blockedByTaskId ?? null;
1314
+ let evidenceLevel = "local";
1315
+ if (input.messageId) {
1316
+ const messageEntry = coordination
1317
+ .snapshot()
1318
+ .messages.find((candidate) => candidate.message.message_id === input.messageId);
1319
+ if (messageEntry?.message.to_task_id !== context.taskId) {
1320
+ throw new Error("block message must be addressed to this Task");
1321
+ }
1322
+ const sendReceipt = messageEntry.receipts.at(-1);
1323
+ if (!sendReceipt ||
1324
+ !new Set(["sent", "delivered", "acknowledged"]).has(sendReceipt.status)) {
1325
+ throw new Error("block message requires a non-stale successful send receipt");
1326
+ }
1327
+ const verified = verifyFreshCoordinationMessage(root, messageEntry, context, false);
1328
+ evidenceLevel = verified.evidenceLevel;
1329
+ if (messageEntry.message.to_run_id &&
1330
+ context.kernelKind === "task-kernel-v2") {
1331
+ const run = context.runs.find((candidate) => candidate.id === messageEntry.message.to_run_id);
1332
+ if (!run || (run.state !== "running" && run.state !== "waiting")) {
1333
+ throw new Error("block message Run is no longer active on this Task");
1334
+ }
1335
+ }
1336
+ blockedByTaskId ??= messageEntry.message.from_task_id;
1337
+ }
1338
+ return coordination.blockTaskWithPrecondition({
1339
+ taskId: context.taskId,
1340
+ blockedByTaskId,
1341
+ messageId: input.messageId ?? null,
1342
+ reason: input.reason,
1343
+ actor: { platform: "user", id: input.actorId ?? null },
1344
+ evidenceLevel,
1345
+ }, (_event, snapshot) => {
1346
+ const currentContext = taskContext(root, task);
1347
+ if (currentContext.taskId !== context.taskId ||
1348
+ currentContext.revision !== context.revision) {
1349
+ throw new Error("Task changed while the coordination block was added");
1350
+ }
1351
+ if (!input.messageId)
1352
+ return;
1353
+ const messageEntry = snapshot.messages.find((candidate) => candidate.message.message_id === input.messageId);
1354
+ if (messageEntry?.message.to_task_id !== context.taskId) {
1355
+ throw new Error("block message must be addressed to this Task");
1356
+ }
1357
+ const verified = verifyFreshCoordinationMessage(root, messageEntry, currentContext, false);
1358
+ if (verified.evidenceLevel !== evidenceLevel) {
1359
+ throw new Error("block message receipt changed while adding the block");
1360
+ }
1361
+ if (messageEntry.message.from_task_id !== blockedByTaskId ||
1362
+ (messageEntry.message.to_run_id &&
1363
+ currentContext.kernelKind === "task-kernel-v2" &&
1364
+ !currentContext.runs.some((run) => run.id === messageEntry.message.to_run_id &&
1365
+ (run.state === "running" || run.state === "waiting")))) {
1366
+ throw new Error("block message Run is no longer active on this Task");
1367
+ }
1368
+ });
1369
+ }
1370
+ export function unblockCodexTask(root, task, input) {
1371
+ const context = taskContext(root, task);
1372
+ const coordination = new CoordinationStore(root);
1373
+ let unblockedByTaskId = input.unblockedByTaskId ?? null;
1374
+ let evidenceLevel = "local";
1375
+ let resolutionEntry;
1376
+ let resolutionSourceTaskId = null;
1377
+ if (input.resolutionMessageId) {
1378
+ resolutionEntry = coordination
1379
+ .snapshot()
1380
+ .messages.find((candidate) => candidate.message.message_id === input.resolutionMessageId);
1381
+ if (resolutionEntry?.message.to_task_id !== context.taskId) {
1382
+ throw new Error("resolution message must be addressed to this Task");
1383
+ }
1384
+ if (!resolutionEntry)
1385
+ throw new Error("Resolution message disappeared");
1386
+ const sendReceipt = resolutionEntry.receipts.at(-1);
1387
+ if (!sendReceipt ||
1388
+ !new Set(["sent", "delivered", "acknowledged"]).has(sendReceipt.status)) {
1389
+ throw new Error("unblock requires a non-stale successful resolution receipt");
1390
+ }
1391
+ if (sendReceipt.evidence_level !== "desktop-native") {
1392
+ throw new Error("unblock requires a successful desktop-native resolution receipt");
1393
+ }
1394
+ const verified = verifyFreshCoordinationMessage(root, resolutionEntry, context, true);
1395
+ evidenceLevel = verified.evidenceLevel;
1396
+ resolutionSourceTaskId = resolutionEntry.message.from_task_id;
1397
+ unblockedByTaskId ??= resolutionSourceTaskId;
1398
+ }
1399
+ const barrier = coordinationKernelBarrier(context);
1400
+ return coordination.unblockTaskWithPostcondition({
1401
+ taskId: context.taskId,
1402
+ blockId: input.blockId,
1403
+ unblockedByTaskId,
1404
+ resolutionMessageId: input.resolutionMessageId ?? null,
1405
+ runId: barrier.runId,
1406
+ kernelRevisionAtUnblock: barrier.kernelRevision,
1407
+ kernelEventIdAtUnblock: barrier.kernelEventId,
1408
+ reason: input.reason,
1409
+ actor: { platform: "user", id: input.actorId ?? null },
1410
+ evidenceLevel,
1411
+ }, () => {
1412
+ const afterContext = taskContext(root, task);
1413
+ if (afterContext.taskId !== context.taskId ||
1414
+ afterContext.revision !== context.revision) {
1415
+ throw new Error("Task Kernel changed while the coordination block was cleared");
1416
+ }
1417
+ if (input.resolutionMessageId) {
1418
+ const afterEntry = coordination
1419
+ .snapshot()
1420
+ .messages.find((candidate) => candidate.message.message_id === input.resolutionMessageId);
1421
+ if (!afterEntry)
1422
+ throw new Error("Resolution message disappeared");
1423
+ const beforeEntry = resolutionEntry;
1424
+ if (!beforeEntry)
1425
+ throw new Error("Resolution message disappeared");
1426
+ const afterVerified = verifyFreshCoordinationMessage(root, afterEntry, afterContext, true);
1427
+ const beforeVerified = verifyFreshCoordinationMessage(root, beforeEntry, context, true);
1428
+ if (afterVerified.sourceContext.revision !==
1429
+ beforeVerified.sourceContext.revision ||
1430
+ afterVerified.sourceContext.taskId !==
1431
+ beforeVerified.sourceContext.taskId) {
1432
+ throw new Error("Resolution source Task changed while the block was cleared");
1433
+ }
1434
+ }
1435
+ }, {
1436
+ taskId: context.taskId,
1437
+ blockId: randomUUID(),
1438
+ blockedByTaskId: resolutionSourceTaskId,
1439
+ messageId: null,
1440
+ reason: "Task or Run state changed while clearing the coordination block; obtain a fresh resolution.",
1441
+ actor: { platform: "user", id: input.actorId ?? null },
1442
+ evidenceLevel: "local",
1443
+ });
1444
+ }
1445
+ //# sourceMappingURL=bridge.js.map