dorfl 0.14.2 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/dist/advance-ci-template.d.ts +17 -16
  2. package/dist/advance-ci-template.d.ts.map +1 -1
  3. package/dist/advance-ci-template.js +42 -53
  4. package/dist/advance-ci-template.js.map +1 -1
  5. package/dist/advance-drivers.d.ts +8 -0
  6. package/dist/advance-drivers.d.ts.map +1 -1
  7. package/dist/advance-drivers.js +28 -4
  8. package/dist/advance-drivers.js.map +1 -1
  9. package/dist/advance-isolated.d.ts.map +1 -1
  10. package/dist/advance-isolated.js +3 -2
  11. package/dist/advance-isolated.js.map +1 -1
  12. package/dist/advance-lifecycle-template.d.ts +41 -40
  13. package/dist/advance-lifecycle-template.d.ts.map +1 -1
  14. package/dist/advance-lifecycle-template.js +309 -489
  15. package/dist/advance-lifecycle-template.js.map +1 -1
  16. package/dist/advance-loop-driver.d.ts.map +1 -1
  17. package/dist/advance-loop-driver.js +3 -2
  18. package/dist/advance-loop-driver.js.map +1 -1
  19. package/dist/advance-treeless-publish.d.ts +31 -0
  20. package/dist/advance-treeless-publish.d.ts.map +1 -1
  21. package/dist/advance-treeless-publish.js +40 -0
  22. package/dist/advance-treeless-publish.js.map +1 -1
  23. package/dist/advance.d.ts +63 -3
  24. package/dist/advance.d.ts.map +1 -1
  25. package/dist/advance.js +80 -12
  26. package/dist/advance.js.map +1 -1
  27. package/dist/advancing-lock.d.ts +9 -0
  28. package/dist/advancing-lock.d.ts.map +1 -1
  29. package/dist/advancing-lock.js +21 -1
  30. package/dist/advancing-lock.js.map +1 -1
  31. package/dist/agent-env.d.ts +61 -0
  32. package/dist/agent-env.d.ts.map +1 -0
  33. package/dist/agent-env.js +144 -0
  34. package/dist/agent-env.js.map +1 -0
  35. package/dist/agent-stop.d.ts +35 -0
  36. package/dist/agent-stop.d.ts.map +1 -1
  37. package/dist/agent-stop.js +62 -0
  38. package/dist/agent-stop.js.map +1 -1
  39. package/dist/apply-merge-action.d.ts +76 -34
  40. package/dist/apply-merge-action.d.ts.map +1 -1
  41. package/dist/apply-merge-action.js +339 -129
  42. package/dist/apply-merge-action.js.map +1 -1
  43. package/dist/apply-stuck-action.js +2 -2
  44. package/dist/apply-stuck-action.js.map +1 -1
  45. package/dist/ci-agent-result.d.ts +151 -0
  46. package/dist/ci-agent-result.d.ts.map +1 -0
  47. package/dist/ci-agent-result.js +314 -0
  48. package/dist/ci-agent-result.js.map +1 -0
  49. package/dist/ci-handoff-apply.d.ts +162 -0
  50. package/dist/ci-handoff-apply.d.ts.map +1 -0
  51. package/dist/ci-handoff-apply.js +497 -0
  52. package/dist/ci-handoff-apply.js.map +1 -0
  53. package/dist/ci-handoff-format.d.ts +369 -0
  54. package/dist/ci-handoff-format.d.ts.map +1 -0
  55. package/dist/ci-handoff-format.js +646 -0
  56. package/dist/ci-handoff-format.js.map +1 -0
  57. package/dist/ci-handoff-lfs.d.ts +146 -0
  58. package/dist/ci-handoff-lfs.d.ts.map +1 -0
  59. package/dist/ci-handoff-lfs.js +397 -0
  60. package/dist/ci-handoff-lfs.js.map +1 -0
  61. package/dist/ci-handoff.d.ts +99 -0
  62. package/dist/ci-handoff.d.ts.map +1 -0
  63. package/dist/ci-handoff.js +277 -0
  64. package/dist/ci-handoff.js.map +1 -0
  65. package/dist/ci-lock-outputs.d.ts +93 -0
  66. package/dist/ci-lock-outputs.d.ts.map +1 -0
  67. package/dist/ci-lock-outputs.js +223 -0
  68. package/dist/ci-lock-outputs.js.map +1 -0
  69. package/dist/ci-phase-build.d.ts +178 -0
  70. package/dist/ci-phase-build.d.ts.map +1 -0
  71. package/dist/ci-phase-build.js +989 -0
  72. package/dist/ci-phase-build.js.map +1 -0
  73. package/dist/ci-phase-driver.d.ts +247 -0
  74. package/dist/ci-phase-driver.d.ts.map +1 -0
  75. package/dist/ci-phase-driver.js +370 -0
  76. package/dist/ci-phase-driver.js.map +1 -0
  77. package/dist/ci-phase-intake.d.ts +172 -0
  78. package/dist/ci-phase-intake.d.ts.map +1 -0
  79. package/dist/ci-phase-intake.js +555 -0
  80. package/dist/ci-phase-intake.js.map +1 -0
  81. package/dist/ci-phase-tasking.d.ts +205 -0
  82. package/dist/ci-phase-tasking.d.ts.map +1 -0
  83. package/dist/ci-phase-tasking.js +906 -0
  84. package/dist/ci-phase-tasking.js.map +1 -0
  85. package/dist/ci-phase-treeless.d.ts +224 -0
  86. package/dist/ci-phase-treeless.d.ts.map +1 -0
  87. package/dist/ci-phase-treeless.js +1482 -0
  88. package/dist/ci-phase-treeless.js.map +1 -0
  89. package/dist/ci-read-token.d.ts +47 -0
  90. package/dist/ci-read-token.d.ts.map +1 -0
  91. package/dist/ci-read-token.js +80 -0
  92. package/dist/ci-read-token.js.map +1 -0
  93. package/dist/cli.d.ts.map +1 -1
  94. package/dist/cli.js +447 -22
  95. package/dist/cli.js.map +1 -1
  96. package/dist/close-job-template.d.ts +10 -1
  97. package/dist/close-job-template.d.ts.map +1 -1
  98. package/dist/close-job-template.js +46 -14
  99. package/dist/close-job-template.js.map +1 -1
  100. package/dist/close-job.d.ts +20 -5
  101. package/dist/close-job.d.ts.map +1 -1
  102. package/dist/close-job.js +65 -12
  103. package/dist/close-job.js.map +1 -1
  104. package/dist/complete.d.ts.map +1 -1
  105. package/dist/complete.js +20 -1
  106. package/dist/complete.js.map +1 -1
  107. package/dist/config.d.ts +41 -44
  108. package/dist/config.d.ts.map +1 -1
  109. package/dist/config.js +2 -4
  110. package/dist/config.js.map +1 -1
  111. package/dist/continue-branch.d.ts +63 -15
  112. package/dist/continue-branch.d.ts.map +1 -1
  113. package/dist/continue-branch.js +75 -8
  114. package/dist/continue-branch.js.map +1 -1
  115. package/dist/crashed-run-save.d.ts +73 -0
  116. package/dist/crashed-run-save.d.ts.map +1 -0
  117. package/dist/crashed-run-save.js +86 -0
  118. package/dist/crashed-run-save.js.map +1 -0
  119. package/dist/cwd-section.d.ts.map +1 -1
  120. package/dist/cwd-section.js +10 -2
  121. package/dist/cwd-section.js.map +1 -1
  122. package/dist/decision-engine.d.ts +10 -0
  123. package/dist/decision-engine.d.ts.map +1 -1
  124. package/dist/decision-engine.js.map +1 -1
  125. package/dist/do-config.d.ts +2 -24
  126. package/dist/do-config.d.ts.map +1 -1
  127. package/dist/do-config.js +1 -33
  128. package/dist/do-config.js.map +1 -1
  129. package/dist/do.d.ts +149 -1
  130. package/dist/do.d.ts.map +1 -1
  131. package/dist/do.js +115 -25
  132. package/dist/do.js.map +1 -1
  133. package/dist/dorfl-item-template.d.ts +98 -0
  134. package/dist/dorfl-item-template.d.ts.map +1 -0
  135. package/dist/dorfl-item-template.js +504 -0
  136. package/dist/dorfl-item-template.js.map +1 -0
  137. package/dist/env-config.d.ts.map +1 -1
  138. package/dist/env-config.js +7 -5
  139. package/dist/env-config.js.map +1 -1
  140. package/dist/frontmatter.d.ts +52 -0
  141. package/dist/frontmatter.d.ts.map +1 -1
  142. package/dist/frontmatter.js +136 -2
  143. package/dist/frontmatter.js.map +1 -1
  144. package/dist/gc.d.ts +13 -0
  145. package/dist/gc.d.ts.map +1 -1
  146. package/dist/gc.js +16 -2
  147. package/dist/gc.js.map +1 -1
  148. package/dist/git.d.ts +18 -1
  149. package/dist/git.d.ts.map +1 -1
  150. package/dist/git.js +70 -5
  151. package/dist/git.js.map +1 -1
  152. package/dist/harness.d.ts +44 -5
  153. package/dist/harness.d.ts.map +1 -1
  154. package/dist/harness.js +24 -1
  155. package/dist/harness.js.map +1 -1
  156. package/dist/index.d.ts +11 -4
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +7 -3
  159. package/dist/index.js.map +1 -1
  160. package/dist/install-ci-action-pins.d.ts +123 -0
  161. package/dist/install-ci-action-pins.d.ts.map +1 -0
  162. package/dist/install-ci-action-pins.js +190 -0
  163. package/dist/install-ci-action-pins.js.map +1 -0
  164. package/dist/install-ci-actions-pr-creation.d.ts +70 -0
  165. package/dist/install-ci-actions-pr-creation.d.ts.map +1 -0
  166. package/dist/install-ci-actions-pr-creation.js +106 -0
  167. package/dist/install-ci-actions-pr-creation.js.map +1 -0
  168. package/dist/install-ci-capabilities/dorfl-item.d.ts +12 -0
  169. package/dist/install-ci-capabilities/dorfl-item.d.ts.map +1 -0
  170. package/dist/install-ci-capabilities/dorfl-item.js +26 -0
  171. package/dist/install-ci-capabilities/dorfl-item.js.map +1 -0
  172. package/dist/install-ci-core.d.ts +155 -37
  173. package/dist/install-ci-core.d.ts.map +1 -1
  174. package/dist/install-ci-core.js +304 -200
  175. package/dist/install-ci-core.js.map +1 -1
  176. package/dist/install-ci-github.d.ts +47 -2
  177. package/dist/install-ci-github.d.ts.map +1 -1
  178. package/dist/install-ci-github.js +113 -1
  179. package/dist/install-ci-github.js.map +1 -1
  180. package/dist/install-ci.d.ts +25 -6
  181. package/dist/install-ci.d.ts.map +1 -1
  182. package/dist/install-ci.js +72 -36
  183. package/dist/install-ci.js.map +1 -1
  184. package/dist/intake-marker.d.ts +6 -1
  185. package/dist/intake-marker.d.ts.map +1 -1
  186. package/dist/intake-marker.js.map +1 -1
  187. package/dist/intake-triage.d.ts.map +1 -1
  188. package/dist/intake-triage.js +6 -2
  189. package/dist/intake-triage.js.map +1 -1
  190. package/dist/intake-trigger-template.d.ts +31 -25
  191. package/dist/intake-trigger-template.d.ts.map +1 -1
  192. package/dist/intake-trigger-template.js +107 -292
  193. package/dist/intake-trigger-template.js.map +1 -1
  194. package/dist/intake.d.ts +186 -4
  195. package/dist/intake.d.ts.map +1 -1
  196. package/dist/intake.js +533 -416
  197. package/dist/intake.js.map +1 -1
  198. package/dist/integration-core.d.ts +154 -1
  199. package/dist/integration-core.d.ts.map +1 -1
  200. package/dist/integration-core.js +759 -486
  201. package/dist/integration-core.js.map +1 -1
  202. package/dist/integrator.d.ts +12 -0
  203. package/dist/integrator.d.ts.map +1 -1
  204. package/dist/integrator.js +21 -0
  205. package/dist/integrator.js.map +1 -1
  206. package/dist/isolation.d.ts +12 -2
  207. package/dist/isolation.d.ts.map +1 -1
  208. package/dist/isolation.js +19 -8
  209. package/dist/isolation.js.map +1 -1
  210. package/dist/item-lock.d.ts +93 -11
  211. package/dist/item-lock.d.ts.map +1 -1
  212. package/dist/item-lock.js +233 -65
  213. package/dist/item-lock.js.map +1 -1
  214. package/dist/land-question-residue.d.ts +58 -0
  215. package/dist/land-question-residue.d.ts.map +1 -0
  216. package/dist/land-question-residue.js +95 -0
  217. package/dist/land-question-residue.js.map +1 -0
  218. package/dist/lifecycle-gather.d.ts +16 -0
  219. package/dist/lifecycle-gather.d.ts.map +1 -1
  220. package/dist/lifecycle-gather.js +54 -6
  221. package/dist/lifecycle-gather.js.map +1 -1
  222. package/dist/merge-answer.d.ts +41 -0
  223. package/dist/merge-answer.d.ts.map +1 -0
  224. package/dist/merge-answer.js +60 -0
  225. package/dist/merge-answer.js.map +1 -0
  226. package/dist/merge-question-surfacer.d.ts +105 -30
  227. package/dist/merge-question-surfacer.d.ts.map +1 -1
  228. package/dist/merge-question-surfacer.js +202 -91
  229. package/dist/merge-question-surfacer.js.map +1 -1
  230. package/dist/merge-question-tick.d.ts +64 -0
  231. package/dist/merge-question-tick.d.ts.map +1 -0
  232. package/dist/merge-question-tick.js +96 -0
  233. package/dist/merge-question-tick.js.map +1 -0
  234. package/dist/mint-adr.d.ts.map +1 -1
  235. package/dist/mint-adr.js +20 -2
  236. package/dist/mint-adr.js.map +1 -1
  237. package/dist/needs-attention.d.ts +72 -2
  238. package/dist/needs-attention.d.ts.map +1 -1
  239. package/dist/needs-attention.js +275 -38
  240. package/dist/needs-attention.js.map +1 -1
  241. package/dist/phase-recorder.d.ts +168 -0
  242. package/dist/phase-recorder.d.ts.map +1 -0
  243. package/dist/phase-recorder.js +218 -0
  244. package/dist/phase-recorder.js.map +1 -0
  245. package/dist/phase.d.ts +94 -0
  246. package/dist/phase.d.ts.map +1 -0
  247. package/dist/phase.js +148 -0
  248. package/dist/phase.js.map +1 -0
  249. package/dist/pi-harness.d.ts.map +1 -1
  250. package/dist/pi-harness.js +19 -6
  251. package/dist/pi-harness.js.map +1 -1
  252. package/dist/prepare.d.ts.map +1 -1
  253. package/dist/prepare.js +4 -0
  254. package/dist/prepare.js.map +1 -1
  255. package/dist/prompt.d.ts +4 -0
  256. package/dist/prompt.d.ts.map +1 -1
  257. package/dist/prompt.js +48 -1
  258. package/dist/prompt.js.map +1 -1
  259. package/dist/protocol/CLAIM-PROTOCOL.md +3 -1
  260. package/dist/protocol/WORK-CONTRACT.md +1 -1
  261. package/dist/reap-branches.d.ts +48 -0
  262. package/dist/reap-branches.d.ts.map +1 -1
  263. package/dist/reap-branches.js +64 -0
  264. package/dist/reap-branches.js.map +1 -1
  265. package/dist/ref-write.d.ts +198 -0
  266. package/dist/ref-write.d.ts.map +1 -0
  267. package/dist/ref-write.js +79 -0
  268. package/dist/ref-write.js.map +1 -0
  269. package/dist/repo-config.js +8 -8
  270. package/dist/repo-config.js.map +1 -1
  271. package/dist/repo-mirror.d.ts +36 -0
  272. package/dist/repo-mirror.d.ts.map +1 -1
  273. package/dist/repo-mirror.js +91 -1
  274. package/dist/repo-mirror.js.map +1 -1
  275. package/dist/review-verdict.d.ts +1 -1
  276. package/dist/review-verdict.js +1 -1
  277. package/dist/run.d.ts +7 -1
  278. package/dist/run.d.ts.map +1 -1
  279. package/dist/run.js +28 -4
  280. package/dist/run.js.map +1 -1
  281. package/dist/scan.d.ts +19 -1
  282. package/dist/scan.d.ts.map +1 -1
  283. package/dist/scan.js +21 -8
  284. package/dist/scan.js.map +1 -1
  285. package/dist/sidecar.d.ts +14 -0
  286. package/dist/sidecar.d.ts.map +1 -1
  287. package/dist/sidecar.js +21 -0
  288. package/dist/sidecar.js.map +1 -1
  289. package/dist/single-job-warning.d.ts +63 -0
  290. package/dist/single-job-warning.d.ts.map +1 -0
  291. package/dist/single-job-warning.js +110 -0
  292. package/dist/single-job-warning.js.map +1 -0
  293. package/dist/skills/setup/protocol/CLAIM-PROTOCOL.md +3 -1
  294. package/dist/skills/setup/protocol/WORK-CONTRACT.md +1 -1
  295. package/dist/spec-complete.d.ts +13 -6
  296. package/dist/spec-complete.d.ts.map +1 -1
  297. package/dist/spec-complete.js +23 -11
  298. package/dist/spec-complete.js.map +1 -1
  299. package/dist/start.d.ts.map +1 -1
  300. package/dist/start.js +47 -14
  301. package/dist/start.js.map +1 -1
  302. package/dist/status.d.ts +12 -0
  303. package/dist/status.d.ts.map +1 -1
  304. package/dist/status.js +11 -3
  305. package/dist/status.js.map +1 -1
  306. package/dist/tasking.d.ts +246 -1
  307. package/dist/tasking.d.ts.map +1 -1
  308. package/dist/tasking.js +452 -358
  309. package/dist/tasking.js.map +1 -1
  310. package/dist/triage-persist.d.ts.map +1 -1
  311. package/dist/triage-persist.js +21 -2
  312. package/dist/triage-persist.js.map +1 -1
  313. package/dist/verify-workflow-template.d.ts.map +1 -1
  314. package/dist/verify-workflow-template.js +8 -4
  315. package/dist/verify-workflow-template.js.map +1 -1
  316. package/dist/verify.d.ts.map +1 -1
  317. package/dist/verify.js +4 -0
  318. package/dist/verify.js.map +1 -1
  319. package/dist/watch-session.d.ts +42 -13
  320. package/dist/watch-session.d.ts.map +1 -1
  321. package/dist/watch-session.js +52 -23
  322. package/dist/watch-session.js.map +1 -1
  323. package/dist/work-layout.d.ts +10 -4
  324. package/dist/work-layout.d.ts.map +1 -1
  325. package/dist/work-layout.js +11 -3
  326. package/dist/work-layout.js.map +1 -1
  327. package/dist/workspace.d.ts +65 -4
  328. package/dist/workspace.d.ts.map +1 -1
  329. package/dist/workspace.js +159 -11
  330. package/dist/workspace.js.map +1 -1
  331. package/package.json +1 -1
  332. package/src/advance-ci-template.ts +80 -81
  333. package/src/advance-drivers.ts +45 -6
  334. package/src/advance-isolated.ts +3 -5
  335. package/src/advance-lifecycle-template.ts +375 -538
  336. package/src/advance-loop-driver.ts +3 -5
  337. package/src/advance-treeless-publish.ts +61 -0
  338. package/src/advance.ts +145 -15
  339. package/src/advancing-lock.ts +36 -1
  340. package/src/agent-env.ts +174 -0
  341. package/src/agent-stop.ts +81 -0
  342. package/src/apply-merge-action.ts +401 -154
  343. package/src/apply-stuck-action.ts +2 -2
  344. package/src/ci-agent-result.ts +421 -0
  345. package/src/ci-handoff-apply.ts +737 -0
  346. package/src/ci-handoff-format.ts +926 -0
  347. package/src/ci-handoff-lfs.ts +519 -0
  348. package/src/ci-handoff.ts +392 -0
  349. package/src/ci-lock-outputs.ts +273 -0
  350. package/src/ci-phase-build.ts +1328 -0
  351. package/src/ci-phase-driver.ts +548 -0
  352. package/src/ci-phase-intake.ts +861 -0
  353. package/src/ci-phase-tasking.ts +1255 -0
  354. package/src/ci-phase-treeless.ts +2028 -0
  355. package/src/ci-read-token.ts +90 -0
  356. package/src/cli.ts +591 -29
  357. package/src/close-job-template.ts +52 -15
  358. package/src/close-job.ts +77 -12
  359. package/src/complete.ts +19 -1
  360. package/src/config.ts +43 -48
  361. package/src/continue-branch.ts +121 -16
  362. package/src/crashed-run-save.ts +162 -0
  363. package/src/cwd-section.ts +10 -0
  364. package/src/decision-engine.ts +10 -0
  365. package/src/do-config.ts +2 -57
  366. package/src/do.ts +170 -28
  367. package/src/dorfl-item-template.ts +556 -0
  368. package/src/env-config.ts +7 -5
  369. package/src/frontmatter.ts +155 -2
  370. package/src/gc.ts +27 -2
  371. package/src/git.ts +83 -5
  372. package/src/harness.ts +58 -6
  373. package/src/index.ts +50 -1
  374. package/src/install-ci-action-pins.ts +209 -0
  375. package/src/install-ci-actions-pr-creation.ts +186 -0
  376. package/src/install-ci-capabilities/dorfl-item.ts +33 -0
  377. package/src/install-ci-core.ts +388 -233
  378. package/src/install-ci-github.ts +149 -1
  379. package/src/install-ci.ts +83 -37
  380. package/src/intake-marker.ts +6 -1
  381. package/src/intake-triage.ts +7 -3
  382. package/src/intake-trigger-template.ts +126 -327
  383. package/src/intake.ts +725 -544
  384. package/src/integration-core.ts +975 -523
  385. package/src/integrator.ts +28 -0
  386. package/src/isolation.ts +29 -10
  387. package/src/item-lock.ts +308 -92
  388. package/src/land-question-residue.ts +122 -0
  389. package/src/lifecycle-gather.ts +82 -10
  390. package/src/merge-answer.ts +82 -0
  391. package/src/merge-question-surfacer.ts +320 -112
  392. package/src/merge-question-tick.ts +182 -0
  393. package/src/mint-adr.ts +28 -2
  394. package/src/needs-attention.ts +350 -42
  395. package/src/phase-recorder.ts +350 -0
  396. package/src/phase.ts +177 -0
  397. package/src/pi-harness.ts +25 -5
  398. package/src/prepare.ts +4 -0
  399. package/src/prompt.ts +68 -1
  400. package/src/reap-branches.ts +107 -0
  401. package/src/ref-write.ts +324 -0
  402. package/src/repo-config.ts +8 -8
  403. package/src/repo-mirror.ts +107 -1
  404. package/src/review-verdict.ts +1 -1
  405. package/src/run.ts +47 -6
  406. package/src/scan.ts +37 -7
  407. package/src/sidecar.ts +36 -0
  408. package/src/single-job-warning.ts +135 -0
  409. package/src/spec-complete.ts +36 -14
  410. package/src/start.ts +55 -16
  411. package/src/status.ts +29 -3
  412. package/src/tasking.ts +593 -378
  413. package/src/triage-persist.ts +24 -2
  414. package/src/verify-workflow-template.ts +8 -4
  415. package/src/verify.ts +4 -0
  416. package/src/watch-session.ts +86 -28
  417. package/src/work-layout.ts +11 -3
  418. package/src/workspace.ts +210 -14
@@ -0,0 +1,497 @@
1
+ /**
2
+ * **The apply phase's validation of a handoff** (spec
3
+ * `ci-agent-job-without-write-token`, ADR `ci-agent-job-holds-no-write-token`
4
+ * decisions 3 and 4, task `ci-split-apply-rejects-hostile-bundle`).
5
+ *
6
+ * The apply job holds a write token and runs no agent. It reads the agent job's
7
+ * artifact as HOSTILE: every target, mode and policy comes from TRUSTED inputs
8
+ * (the lock job's outputs, the workflow inputs, the tree at `baseSha`, the
9
+ * arbiter), never from the artifact. {@link validateApplyHandoff} is the one
10
+ * unit the path splits call BEFORE any write. It either returns the validated
11
+ * handoff (the bundle's tip fetched to {@link INCOMING_TIP_REF} in the apply
12
+ * checkout, the recomputed integration mode, the ledger report) or throws a
13
+ * {@link HandoffRejected} whose `rule` and message name the broken rule, having
14
+ * written nothing from the artifact anywhere: not to the arbiter, and not even
15
+ * into the apply checkout's object store.
16
+ *
17
+ * How "nothing is fetched into the repository" holds: the bundle is first
18
+ * fetched into a throwaway QUARANTINE repository whose object store borrows the
19
+ * apply checkout's objects (read-only, through `objects/info/alternates`), and
20
+ * every history, path and size check runs there. Only an accepted bundle is
21
+ * then fetched into the apply checkout, with the same command.
22
+ *
23
+ * The LFS objects (decision 6, task `ci-split-handoff-lfs-objects`): the new
24
+ * commits' blobs are scanned for pointers in the quarantine, and every object
25
+ * is checked against its pointer (`ci-handoff-lfs.ts`) before the import. The
26
+ * push of the objects (before any ref) is the path split's first write.
27
+ *
28
+ * Out of scope here: the agent-result, lock-ownership and re-run rules (wired
29
+ * by the path splits).
30
+ */
31
+ import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
32
+ import { join, posix } from 'node:path';
33
+ import { handoffByteLimits, rejectHandoff as reject, } from './ci-handoff-format.js';
34
+ import { readHandoff, } from './ci-handoff.js';
35
+ import { checkLfsObjects, isRegularFileMode, scanLfsPointers, } from './ci-handoff-lfs.js';
36
+ import { parseFrontmatter } from './frontmatter.js';
37
+ import { git, run } from './git.js';
38
+ import { APPLY_LIFECYCLE_FOLDERS } from './item-path.js';
39
+ import { REPO_CONFIG_FILENAME, REPO_CONFIG_FILENAME_LEGACY, } from './repo-config.js';
40
+ import { resolveSidecarIdentity } from './sidecar.js';
41
+ import { workBranchRef } from './slug-namespace.js';
42
+ import { WORK_ROOT, workFolderPrefix, workItemRel } from './work-layout.js';
43
+ /** The apply checkout's ref an accepted bundle's tip is fetched to. */
44
+ export const INCOMING_TIP_REF = 'refs/dorfl/incoming/tip';
45
+ /** The most new commits (`tip ^<arbiter>/main`) a bundle may carry. */
46
+ export const MAX_NEW_COMMITS = 200;
47
+ /** The reason for a merge commit in the range (spec, "History"). */
48
+ export const MERGE_COMMIT_REASON = 'the work branch contains a merge commit; rebase it and requeue';
49
+ /** The longest symlink target read (Linux `PATH_MAX`); longer is rejected. */
50
+ const MAX_SYMLINK_TARGET_BYTES = 4096;
51
+ /** How many symlinks one resolution may follow before it counts as a loop. */
52
+ const MAX_SYMLINK_HOPS = 40;
53
+ /** How many ledger paths the PR-body section lists before "and N more". */
54
+ const LEDGER_REPORT_MAX_PATHS = 100;
55
+ const HEX_OID = /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/;
56
+ const MODE_SYMLINK = '120000';
57
+ const MODE_GITLINK = '160000';
58
+ // ---------------------------------------------------------------------------
59
+ // Protected paths (decision 3)
60
+ // ---------------------------------------------------------------------------
61
+ /**
62
+ * The protected path rule a repository path falls under, or `undefined`. The
63
+ * fixed built-in list of decision 3 (not a config key): `.github/`,
64
+ * `CODEOWNERS` (root, `docs/`, `.github/`), the repository config (`dorfl.json`
65
+ * and its legacy dotfile, which dorfl still reads), `.lfsconfig`, and
66
+ * `.gitattributes` at ANY depth (a nested one sets merge attributes for its
67
+ * subtree just like the root one). Matched case-insensitively, so a
68
+ * `.GitHub/` that a case-insensitive checkout would fold into `.github/` is
69
+ * caught too.
70
+ */
71
+ export function protectedPathOf(path) {
72
+ const p = path.toLowerCase();
73
+ if (p === '.github' || p.startsWith('.github/'))
74
+ return '.github/';
75
+ if (p === 'codeowners' || p === 'docs/codeowners')
76
+ return 'CODEOWNERS';
77
+ if (p === REPO_CONFIG_FILENAME.toLowerCase() ||
78
+ p === REPO_CONFIG_FILENAME_LEGACY.toLowerCase()) {
79
+ return REPO_CONFIG_FILENAME;
80
+ }
81
+ if (p === '.lfsconfig')
82
+ return '.lfsconfig';
83
+ if (p === '.gitattributes' || p.endsWith('/.gitattributes')) {
84
+ return '.gitattributes';
85
+ }
86
+ return undefined;
87
+ }
88
+ // ---------------------------------------------------------------------------
89
+ // The recomputed policy
90
+ // ---------------------------------------------------------------------------
91
+ /**
92
+ * The untrusted-origin build-propose rule (ADR `untrusted-origin-build-checkpoint`,
93
+ * `integration-core.ts`), recomputed from the task AT `baseSha` in the apply
94
+ * checkout, never from the bundle (whose done-move could strip the stamp).
95
+ * Scope as in `performIntegration`: the task BUILD transition only; CI passes
96
+ * no explicit `--merge`, so there is no override. Any copy of the task at
97
+ * `baseSha` stamped `originTrust: untrusted` forces `propose`.
98
+ */
99
+ export function recomputeIntegrationMode(params) {
100
+ const { repo, baseSha, integrationMode, build, env } = params;
101
+ if (integrationMode !== 'merge' || !build) {
102
+ return { mode: integrationMode, forcedPropose: false };
103
+ }
104
+ const { type, slug } = resolveSidecarIdentity(params.item);
105
+ if (type !== 'task')
106
+ return { mode: 'merge', forcedPropose: false };
107
+ for (const folder of APPLY_LIFECYCLE_FOLDERS.task) {
108
+ const spec = `${baseSha}:${workItemRel(folder, `${slug}.md`)}`;
109
+ const r = run('git', ['cat-file', 'blob', spec], repo, { env });
110
+ if (r.status !== 0)
111
+ continue;
112
+ if (parseFrontmatter(r.stdout).originTrust === 'untrusted') {
113
+ return { mode: 'propose', forcedPropose: true };
114
+ }
115
+ }
116
+ return { mode: 'merge', forcedPropose: false };
117
+ }
118
+ // ---------------------------------------------------------------------------
119
+ // The ledger report
120
+ // ---------------------------------------------------------------------------
121
+ /**
122
+ * The PR-body section that lists the `work/` paths a propose-mode bundle
123
+ * changes outside its own item (decision 3, user story 23). The path names come
124
+ * from the hostile bundle, so each is JSON-quoted inside a code fence longer
125
+ * than any backtick run, which keeps a crafted name from closing the fence or
126
+ * starting a heading; the list is bounded.
127
+ */
128
+ export function renderLedgerReportSection(paths) {
129
+ const shown = paths
130
+ .slice(0, LEDGER_REPORT_MAX_PATHS)
131
+ .map((p) => JSON.stringify(p.slice(0, 500)));
132
+ const body = shown.join('\n');
133
+ const longestRun = Math.max(0, ...(body.match(/`+/g) ?? []).map((r) => r.length));
134
+ const fence = '`'.repeat(Math.max(3, longestRun + 1));
135
+ const more = paths.length > shown.length
136
+ ? `\n\nand ${paths.length - shown.length} more.`
137
+ : '';
138
+ return ('### Ledger changes outside this item\n\n' +
139
+ 'The work branch changes these files under `work/`, which are not part of ' +
140
+ "this item's own transition, a new note or a new ADR. Check them before " +
141
+ 'merging.\n\n' +
142
+ `${fence}text\n${body}\n${fence}${more}\n`);
143
+ }
144
+ function parseRawZ(out) {
145
+ const fields = out.split('\0');
146
+ const changes = [];
147
+ for (let i = 0; i + 1 < fields.length; i += 2) {
148
+ const meta = fields[i];
149
+ if (!meta.startsWith(':'))
150
+ break;
151
+ const [oldMode, newMode, , newOid, status] = meta.slice(1).split(' ');
152
+ changes.push({ oldMode, newMode, newOid, status, path: fields[i + 1] });
153
+ }
154
+ return changes;
155
+ }
156
+ function diffTree(cwd, from, to, env) {
157
+ return parseRawZ(git([
158
+ '-c',
159
+ 'diff.renames=false',
160
+ 'diff-tree',
161
+ '-r',
162
+ '-z',
163
+ '--raw',
164
+ '--no-renames',
165
+ '--no-commit-id',
166
+ from,
167
+ to,
168
+ ], cwd, { env }));
169
+ }
170
+ function short(sha) {
171
+ return sha.slice(0, 12);
172
+ }
173
+ /** Quote a hostile path for a rejection message. */
174
+ function q(path) {
175
+ return JSON.stringify(path.slice(0, 300));
176
+ }
177
+ // ---------------------------------------------------------------------------
178
+ // Symlinks
179
+ // ---------------------------------------------------------------------------
180
+ /**
181
+ * Resolve `path`'s target through the commit's own symlinks, component by
182
+ * component, and say whether it stays inside the repository (and out of
183
+ * `.git`). Lexical normalisation alone is not enough: `d -> .` and
184
+ * `a -> d/..` are each inside on their own, but `a` resolves to the parent.
185
+ */
186
+ function symlinkEscapes(path, symlinks) {
187
+ const stack = [];
188
+ const initial = symlinks.get(path);
189
+ if (initial === undefined || initial === '' || initial.includes('\0')) {
190
+ return true;
191
+ }
192
+ if (initial.startsWith('/'))
193
+ return true;
194
+ let queue = [...posix.dirname(path).split('/'), ...initial.split('/')];
195
+ let hops = 0;
196
+ while (queue.length > 0) {
197
+ const c = queue.shift();
198
+ if (c === '' || c === '.')
199
+ continue;
200
+ if (c === '..') {
201
+ if (stack.length === 0)
202
+ return true;
203
+ stack.pop();
204
+ continue;
205
+ }
206
+ stack.push(c);
207
+ const target = symlinks.get(stack.join('/'));
208
+ if (target !== undefined) {
209
+ if (++hops > MAX_SYMLINK_HOPS)
210
+ return true;
211
+ if (target === '' || target.startsWith('/'))
212
+ return true;
213
+ stack.pop();
214
+ queue = [...target.split('/'), ...queue];
215
+ }
216
+ }
217
+ return stack.length > 0 && stack[0].toLowerCase() === '.git';
218
+ }
219
+ /** Every symlink of `commit`'s tree with its target (sizes bounded first). */
220
+ function treeSymlinks(cwd, commit, env) {
221
+ const entries = git(['ls-tree', '-r', '-z', commit], cwd, { env }).split('\0');
222
+ const links = new Map();
223
+ for (const entry of entries) {
224
+ if (!entry.startsWith(`${MODE_SYMLINK} `))
225
+ continue;
226
+ const tab = entry.indexOf('\t');
227
+ const oid = entry.slice(0, tab).split(' ')[2];
228
+ const path = entry.slice(tab + 1);
229
+ const size = Number(git(['cat-file', '-s', oid], cwd, { env }).trim());
230
+ if (size > MAX_SYMLINK_TARGET_BYTES) {
231
+ reject('symlink-target', `the symlink ${q(path)} has an oversized target`);
232
+ }
233
+ links.set(path, git(['cat-file', 'blob', oid], cwd, { env }));
234
+ }
235
+ return links;
236
+ }
237
+ /** Fetch the bundle's one expected ref, with fsck, into `cwd`'s incoming ref. */
238
+ function fetchBundle(cwd, bundlePath, workBranch, env) {
239
+ run('git', ['update-ref', '-d', INCOMING_TIP_REF], cwd, { env });
240
+ return run('git', [
241
+ '-c',
242
+ 'transfer.fsckObjects=true',
243
+ 'fetch',
244
+ '--quiet',
245
+ '--no-tags',
246
+ '--no-write-fetch-head',
247
+ bundlePath,
248
+ `refs/heads/${workBranch}:${INCOMING_TIP_REF}`,
249
+ ], cwd, { env });
250
+ }
251
+ /**
252
+ * Run every history, path and size rule over the bundle inside the quarantine;
253
+ * return the tip, the new commits and the ledger paths outside the item.
254
+ */
255
+ function checkBundle(c) {
256
+ const { quarantine: qdir, env } = c;
257
+ const fetched = fetchBundle(qdir, c.bundlePath, c.workBranch, env);
258
+ if (fetched.status !== 0) {
259
+ reject('bundle-format', `the bundle could not be fetched (fsck or format): ${fetched.stderr.trim().slice(0, 500)}`);
260
+ }
261
+ const tip = git(['rev-parse', INCOMING_TIP_REF], qdir, { env }).trim();
262
+ // History: descends from baseSha, bounded, linear.
263
+ if (run('git', ['merge-base', '--is-ancestor', c.baseSha, tip], qdir, { env })
264
+ .status !== 0) {
265
+ reject('history', `the work branch tip ${short(tip)} does not descend from the base ${c.baseSha}`);
266
+ }
267
+ const count = Number(git(['rev-list', '--count', tip, `^${c.mainSha}`], qdir, { env }).trim());
268
+ if (count === 0) {
269
+ reject('history', 'the work branch has no new commit over main');
270
+ }
271
+ if (count > MAX_NEW_COMMITS) {
272
+ reject('commit-count', `the work branch has ${count} new commits, over the limit of ${MAX_NEW_COMMITS}`);
273
+ }
274
+ const merges = git(['rev-list', '--min-parents=2', tip, `^${c.mainSha}`], qdir, { env }).trim();
275
+ if (merges !== '') {
276
+ reject('merge-commit', `${MERGE_COMMIT_REASON} (${short(merges)})`);
277
+ }
278
+ const newCommits = git(['rev-list', tip, `^${c.mainSha}`], qdir, { env })
279
+ .trim()
280
+ .split('\n');
281
+ // Per commit, against its single parent: protected paths, gitlinks,
282
+ // symlinks, blob sizes.
283
+ const blobs = new Map();
284
+ const fileBlobs = [];
285
+ let oldestParent = '';
286
+ for (const commit of newCommits) {
287
+ const parents = git(['rev-list', '--parents', '-n', '1', commit], qdir, {
288
+ env,
289
+ })
290
+ .trim()
291
+ .split(' ')
292
+ .slice(1);
293
+ if (parents.length !== 1) {
294
+ reject('history', `the commit ${short(commit)} has no parent on main`);
295
+ }
296
+ oldestParent = parents[0];
297
+ let touchesSymlink = false;
298
+ for (const ch of diffTree(qdir, parents[0], commit, env)) {
299
+ const rule = protectedPathOf(ch.path);
300
+ if (rule !== undefined) {
301
+ reject('protected-path', `the commit ${short(commit)} changes the protected path ${q(ch.path)} ` +
302
+ `(${rule}); CI never lands a change to a protected path, so ` +
303
+ 'build this task locally');
304
+ }
305
+ if (ch.status === 'D')
306
+ continue;
307
+ if (ch.newMode === MODE_GITLINK) {
308
+ reject('gitlink', `the commit ${short(commit)} adds a gitlink (submodule) at ${q(ch.path)}`);
309
+ }
310
+ if (ch.newMode === MODE_SYMLINK)
311
+ touchesSymlink = true;
312
+ blobs.set(ch.newOid, ch.path);
313
+ if (isRegularFileMode(ch.newMode)) {
314
+ fileBlobs.push({ oid: ch.newOid, path: ch.path });
315
+ }
316
+ }
317
+ if (touchesSymlink) {
318
+ const links = treeSymlinks(qdir, commit, env);
319
+ for (const path of links.keys()) {
320
+ if (symlinkEscapes(path, links)) {
321
+ reject('symlink-target', `the symlink ${q(path)} in commit ${short(commit)} points outside the repository`);
322
+ }
323
+ }
324
+ }
325
+ }
326
+ if (blobs.size > 0) {
327
+ const maxBlob = handoffByteLimits().blobBytes;
328
+ const sizes = git(['cat-file', '--batch-check=%(objectname) %(objectsize)'], qdir, { env, input: [...blobs.keys()].join('\n') + '\n' })
329
+ .trim()
330
+ .split('\n');
331
+ for (const line of sizes) {
332
+ const [oid, size] = line.split(' ');
333
+ if (Number(size) > maxBlob) {
334
+ reject('size', `the blob ${q(blobs.get(oid) ?? oid)} is ${size} bytes, over the limit of ${maxBlob}`);
335
+ }
336
+ }
337
+ }
338
+ // The work/ ledger rule, on the net change of the new commits.
339
+ const ledgerOutside = [];
340
+ const notes = `${WORK_ROOT}/notes/`;
341
+ for (const ch of diffTree(qdir, oldestParent, tip, env)) {
342
+ if (!ch.path.startsWith(`${WORK_ROOT}/`))
343
+ continue;
344
+ if (c.ownItemPaths.has(ch.path))
345
+ continue;
346
+ const newNote = ch.path.startsWith(notes) &&
347
+ ch.status === 'A' &&
348
+ run('git', ['cat-file', '-e', `${c.mainSha}:${ch.path}`], qdir, { env })
349
+ .status !== 0;
350
+ if (!newNote)
351
+ ledgerOutside.push(ch.path);
352
+ }
353
+ // LFS pointers among the blobs the new commits add or change (decision 6):
354
+ // a blob that parses as a pointer counts, whatever `.gitattributes` says.
355
+ const lfs = scanLfsPointers({ cwd: qdir, blobs: fileBlobs, env });
356
+ return { tip, newCommits, ledgerOutside, lfs };
357
+ }
358
+ /** The item's own ledger files: its body in every lifecycle folder of its type. */
359
+ function ownItemPaths(item) {
360
+ const { type, slug } = resolveSidecarIdentity(item);
361
+ return new Set(APPLY_LIFECYCLE_FOLDERS[type].map((f) => `${workFolderPrefix(f)}${slug}.md`));
362
+ }
363
+ // ---------------------------------------------------------------------------
364
+ // The entry point
365
+ // ---------------------------------------------------------------------------
366
+ /**
367
+ * Validate the agent job's handoff before the apply job writes anything.
368
+ *
369
+ * `dir` is the downloaded artifact under `runnerTemp`; `repo` is the apply
370
+ * job's own checkout of the trusted base, whose `trust.arbiter` remote is
371
+ * fetched fresh here. The steps, each a rejection ({@link HandoffRejected})
372
+ * naming its rule:
373
+ *
374
+ * 1. the artifact (`readHandoff`): layout, sizes, schema, `item` equal to the
375
+ * trusted item, an intent kind the trusted rung can produce;
376
+ * 2. the bundle's one ref must be `refs/heads/<workBranchRef(type, slug)>` of
377
+ * the trusted item, and its prerequisites must exist in the apply checkout;
378
+ * 3. in the quarantine: fetch that ref only, with `transfer.fsckObjects`;
379
+ * `baseSha` is an ancestor of the tip; the new set `tip ^<arbiter>/main` is
380
+ * non-empty, at most {@link MAX_NEW_COMMITS} and has no merge commit; per
381
+ * new commit, no protected path ({@link protectedPathOf}), no gitlink, no
382
+ * symlink resolving outside the repository, no blob over the limit;
383
+ * 4. the `work/` ledger rule on the net change: only this item's own
384
+ * transition and new `work/notes/*` files (ADRs live outside `work/`);
385
+ * anything else is rejected in `merge` mode and reported in `propose` mode;
386
+ * 5. the LFS rule (`checkLfsObjects`): every blob the new commits add or
387
+ * change that parses as a pointer (strict spec v1; a blob that only looks
388
+ * like one is rejected) needs its object in `lfs/`, of exactly its size and
389
+ * hashing to its oid; no object may be unreferenced; the size limit holds;
390
+ * 6. only then the bundle is fetched into the apply checkout at
391
+ * {@link INCOMING_TIP_REF}. Nothing is written to the apply checkout's LFS
392
+ * store here: the path split pushes {@link ApplyHandoff.lfsObjects} before
393
+ * any ref (`pushLfsObjects`).
394
+ *
395
+ * The integration mode is recomputed ({@link recomputeIntegrationMode}) before
396
+ * the ledger rule, which depends on it.
397
+ */
398
+ export function validateApplyHandoff(params) {
399
+ const { dir, runnerTemp, repo, trust, env } = params;
400
+ if (!HEX_OID.test(trust.baseSha)) {
401
+ reject('history', 'the trusted baseSha is not a full commit id');
402
+ }
403
+ const handoff = readHandoff({
404
+ dir,
405
+ runnerTemp,
406
+ trust: { item: trust.item, rung: trust.rung },
407
+ });
408
+ const item = handoff.record.item;
409
+ const { mode, forcedPropose } = recomputeIntegrationMode({
410
+ repo,
411
+ baseSha: trust.baseSha,
412
+ item,
413
+ integrationMode: trust.integrationMode,
414
+ build: handoff.row.row === 'integrate-build',
415
+ env,
416
+ });
417
+ if (handoff.bundle === undefined) {
418
+ // `readHandoff` already refused `lfs/` without a bundle.
419
+ return {
420
+ handoff,
421
+ mode,
422
+ forcedPropose,
423
+ lfsObjects: [],
424
+ ledgerOutsideItem: [],
425
+ };
426
+ }
427
+ const { type, slug } = resolveSidecarIdentity(item);
428
+ const workBranch = workBranchRef(type, slug);
429
+ const expectedRef = `refs/heads/${workBranch}`;
430
+ if (handoff.bundle.ref !== expectedRef) {
431
+ reject('bundle-refs', `the bundle carries ${q(handoff.bundle.ref)}, not ${expectedRef}`);
432
+ }
433
+ // A fresh view of the arbiter's main (trusted; the apply job's own fetch).
434
+ git([
435
+ 'fetch',
436
+ '--quiet',
437
+ '--no-tags',
438
+ trust.arbiter,
439
+ `+refs/heads/main:refs/remotes/${trust.arbiter}/main`,
440
+ ], repo, { env });
441
+ const mainSha = git(['rev-parse', `refs/remotes/${trust.arbiter}/main^{commit}`], repo, { env }).trim();
442
+ for (const pre of handoff.bundle.prerequisites) {
443
+ if (run('git', ['cat-file', '-e', `${pre}^{commit}`], repo, { env }).status !==
444
+ 0) {
445
+ reject('history', `the bundle is based on ${pre}, a commit the arbiter does not have, ` +
446
+ `not on the base ${trust.baseSha}`);
447
+ }
448
+ }
449
+ const quarantine = mkdtempSync(join(runnerTemp, 'dorfl-quarantine-'));
450
+ let checked;
451
+ try {
452
+ const format = git(['rev-parse', '--show-object-format'], repo, {
453
+ env,
454
+ }).trim();
455
+ git(['init', '--quiet', '--bare', `--object-format=${format}`, quarantine], repo, { env });
456
+ const objects = git(['rev-parse', '--path-format=absolute', '--git-path', 'objects'], repo, { env }).trim();
457
+ writeFileSync(join(quarantine, 'objects', 'info', 'alternates'), `${objects}\n`);
458
+ checked = checkBundle({
459
+ quarantine,
460
+ bundlePath: handoff.bundle.path,
461
+ workBranch,
462
+ baseSha: trust.baseSha,
463
+ mainSha,
464
+ ownItemPaths: ownItemPaths(item),
465
+ env,
466
+ });
467
+ }
468
+ finally {
469
+ rmSync(quarantine, { recursive: true, force: true });
470
+ }
471
+ if (mode === 'merge' && checked.ledgerOutside.length > 0) {
472
+ reject('ledger', 'in merge mode the work branch may change under work/ only its own ' +
473
+ 'item, new notes and new ADRs, but it changes ' +
474
+ checked.ledgerOutside.slice(0, 20).map(q).join(', '));
475
+ }
476
+ const lfsObjects = checkLfsObjects(checked.lfs, handoff.lfsObjects);
477
+ const imported = fetchBundle(repo, handoff.bundle.path, workBranch, env);
478
+ const landed = imported.status === 0
479
+ ? git(['rev-parse', INCOMING_TIP_REF], repo, { env }).trim()
480
+ : '';
481
+ if (landed !== checked.tip) {
482
+ run('git', ['update-ref', '-d', INCOMING_TIP_REF], repo, { env });
483
+ reject('bundle-format', 'the bundle changed between validation and import');
484
+ }
485
+ return {
486
+ handoff,
487
+ mode,
488
+ forcedPropose,
489
+ bundle: { workBranch, tip: checked.tip, newCommits: checked.newCommits },
490
+ lfsObjects,
491
+ ledgerOutsideItem: checked.ledgerOutside,
492
+ ledgerReport: checked.ledgerOutside.length > 0
493
+ ? renderLedgerReportSection(checked.ledgerOutside)
494
+ : undefined,
495
+ };
496
+ }
497
+ //# sourceMappingURL=ci-handoff-apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-handoff-apply.js","sourceRoot":"","sources":["../src/ci-handoff-apply.ts"],"names":[],"mappings":"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"}