@runcofactor/cli 0.55.0 → 0.56.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 (248) hide show
  1. package/dist/{account-RHHS7HT4.js → account-CZYZD2JS.js} +5 -5
  2. package/dist/{alert-B5WEOKHP.js → alert-JQ4SDEB7.js} +8 -8
  3. package/dist/{api-catalog-UXONX3BR.js → api-catalog-IWQC35P2.js} +5 -5
  4. package/dist/{api-key-J3A4TJKN.js → api-key-GUDXIIEA.js} +5 -5
  5. package/dist/{attachment-ZQW7DR4G.js → attachment-CPZYOBUB.js} +5 -5
  6. package/dist/{auth-HQGKUZBS.js → auth-DS6MBVEI.js} +3 -3
  7. package/dist/{benchmark-TIKJA32J.js → benchmark-6HPCIQHD.js} +5 -5
  8. package/dist/{blackcat-Z5LNV2GS.js → blackcat-V3L63WFE.js} +3 -3
  9. package/dist/{chunk-JQG3V5E3.js → chunk-2E3STBHS.js} +2 -2
  10. package/dist/{chunk-KL2ARGH6.js → chunk-2OHYMT3A.js} +3 -3
  11. package/dist/{chunk-KL2ARGH6.js.map → chunk-2OHYMT3A.js.map} +1 -1
  12. package/dist/{chunk-W6DL4IP6.js → chunk-3LGCHNBC.js} +2 -2
  13. package/dist/{chunk-BJHAVM7Z.js → chunk-4MFMPC5P.js} +46 -2
  14. package/dist/chunk-4MFMPC5P.js.map +1 -0
  15. package/dist/{chunk-MB4FS35J.js → chunk-56HFZHQM.js} +8 -8
  16. package/dist/{chunk-CZDQVQ57.js → chunk-5OYWNS6D.js} +20 -9
  17. package/dist/chunk-5OYWNS6D.js.map +1 -0
  18. package/dist/{chunk-YTXZUWMN.js → chunk-62EXS76C.js} +6 -6
  19. package/dist/{chunk-QVMGXMP5.js → chunk-6ILWJFKY.js} +368 -6
  20. package/dist/chunk-6ILWJFKY.js.map +1 -0
  21. package/dist/{chunk-6X6ZTDXP.js → chunk-BDOL622T.js} +4 -4
  22. package/dist/{chunk-L4JQ236V.js → chunk-C3CXVX2B.js} +4 -4
  23. package/dist/{chunk-33U56YGD.js → chunk-CWICLBLU.js} +2 -1
  24. package/dist/{chunk-33U56YGD.js.map → chunk-CWICLBLU.js.map} +1 -1
  25. package/dist/{chunk-XM3WTJ7Y.js → chunk-DEVD2WD2.js} +2 -2
  26. package/dist/{chunk-WWUEKQLR.js → chunk-EWK44F6V.js} +3 -3
  27. package/dist/chunk-EWK44F6V.js.map +1 -0
  28. package/dist/{chunk-CQSQNDMV.js → chunk-FNHPTTRF.js} +7 -5
  29. package/dist/chunk-FNHPTTRF.js.map +1 -0
  30. package/dist/{chunk-Z72GWGH2.js → chunk-GCD4EHCD.js} +6 -6
  31. package/dist/{chunk-3KBYI6RR.js → chunk-H6ZMKNP7.js} +3 -3
  32. package/dist/{chunk-5OKCT6LF.js → chunk-IEWAH7W3.js} +5 -5
  33. package/dist/{chunk-TGI2AAOZ.js → chunk-IV4HRGKX.js} +77 -12
  34. package/dist/chunk-IV4HRGKX.js.map +1 -0
  35. package/dist/{chunk-635IQV6B.js → chunk-J2ZQULU3.js} +2 -2
  36. package/dist/{chunk-ZZZ33KTO.js → chunk-K2IDR6FR.js} +3 -3
  37. package/dist/{chunk-YEH7UIUY.js → chunk-KTZRI27M.js} +4 -4
  38. package/dist/{chunk-RV7FZ4ID.js → chunk-L644NMDI.js} +3 -3
  39. package/dist/{chunk-RV7FZ4ID.js.map → chunk-L644NMDI.js.map} +1 -1
  40. package/dist/{chunk-3TZABC7D.js → chunk-LFT7GUWS.js} +63 -17
  41. package/dist/chunk-LFT7GUWS.js.map +1 -0
  42. package/dist/{chunk-QHRWXCON.js → chunk-O7B2IYCZ.js} +11 -11
  43. package/dist/chunk-O7B2IYCZ.js.map +1 -0
  44. package/dist/{chunk-U3MRXQZS.js → chunk-RHWPZKRV.js} +24 -1
  45. package/dist/chunk-RHWPZKRV.js.map +1 -0
  46. package/dist/{chunk-OU4I3MEH.js → chunk-UJSW72LG.js} +3 -3
  47. package/dist/{chunk-R2CRH6JQ.js → chunk-VACACCD6.js} +3 -3
  48. package/dist/{chunk-EGWVL5XA.js → chunk-VMAR67FF.js} +2 -2
  49. package/dist/{chunk-ZH7HWVEE.js → chunk-VMJ7TBVM.js} +2 -2
  50. package/dist/chunk-WRRA4ATV.js +332 -0
  51. package/dist/chunk-WRRA4ATV.js.map +1 -0
  52. package/dist/{chunk-XWJJYZQC.js → chunk-XHEVDABB.js} +2 -2
  53. package/dist/{chunk-SCQVBLNR.js → chunk-XHGF6VC6.js} +4 -4
  54. package/dist/{credential-2IEZDTH3.js → credential-GJW7LGYP.js} +5 -5
  55. package/dist/{credential-template-S5WSOI3P.js → credential-template-UWBYKKWD.js} +5 -5
  56. package/dist/dev-PBW7BSOD.js +605 -0
  57. package/dist/dev-PBW7BSOD.js.map +1 -0
  58. package/dist/{digest-HQGL7H6E.js → digest-XEHGCJM4.js} +8 -8
  59. package/dist/{docs-CJQZVERZ.js → docs-KH4BCEQF.js} +5 -5
  60. package/dist/{doctor-EGK5AB77.js → doctor-FOXXE5SK.js} +3 -3
  61. package/dist/{environment-MWVXYEDU.js → environment-EBDPQTIS.js} +7 -7
  62. package/dist/{eval-F4NORBQI.js → eval-QZSSEICV.js} +67 -27
  63. package/dist/eval-QZSSEICV.js.map +1 -0
  64. package/dist/{exploration-JC7R7KTJ.js → exploration-LCGKRGOQ.js} +5 -5
  65. package/dist/{exploratory-test-BHK5FTMJ.js → exploratory-test-SGECQGIX.js} +6 -6
  66. package/dist/{external-run-UL5CKG54.js → external-run-2AJAI5O7.js} +9 -9
  67. package/dist/{feature-flag-NMO25TZN.js → feature-flag-P7N4WQIH.js} +5 -5
  68. package/dist/{feedback-3JNPSUXS.js → feedback-LAT7TQ2T.js} +6 -6
  69. package/dist/{flow-AYE4RTZN.js → flow-NH2DC6AP.js} +5 -5
  70. package/dist/{github-DM2DCXRY.js → github-FCEKBLXI.js} +6 -6
  71. package/dist/index.js +106 -408
  72. package/dist/index.js.map +1 -1
  73. package/dist/{init-CPDT5XAU.js → init-5U5EZOAW.js} +5 -5
  74. package/dist/{install-JZRNCHMO.js → install-X3UNVXKY.js} +5 -5
  75. package/dist/{issues-GRFJB52C.js → issues-4P6I3YQW.js} +8 -8
  76. package/dist/{knobs-3Y4QXWAD.js → knobs-JKTWJ6ZG.js} +5 -5
  77. package/dist/{landing-ABYL5WVG.js → landing-6AGLKI66.js} +7 -7
  78. package/dist/{list-WG5QB4NK.js → list-TWP2RP33.js} +5 -5
  79. package/dist/{local-KX24OR5Z.js → local-D75QE5TB.js} +7 -7
  80. package/dist/{login-MLJQAIFK.js → login-RBET4TIP.js} +5 -5
  81. package/dist/{mcp-DDTO54XD.js → mcp-562SUUMK.js} +11 -11
  82. package/dist/{metrics-BJLLOSPQ.js → metrics-4WF2GEPA.js} +5 -5
  83. package/dist/{monitor-E2CKGHPM.js → monitor-WJXH54H2.js} +5 -5
  84. package/dist/{perf-IX7JOMUE.js → perf-C6N6P7YG.js} +12 -361
  85. package/dist/perf-C6N6P7YG.js.map +1 -0
  86. package/dist/{product-2ECWM2JN.js → product-CYEQ7HOB.js} +5 -5
  87. package/dist/{product-map-O542LZQL.js → product-map-MSDLIFZY.js} +7 -7
  88. package/dist/{prompts-Y7O4XJ5P.js → prompts-ME53WPN4.js} +5 -5
  89. package/dist/{proofs-TNOBLSRP.js → proofs-D3G6ZUFP.js} +11 -9
  90. package/dist/{property-TZCGOZQG.js → property-5GLJNAVB.js} +29 -10
  91. package/dist/property-5GLJNAVB.js.map +1 -0
  92. package/dist/{psql-M66YSUXW.js → psql-EXAUDU3W.js} +5 -5
  93. package/dist/{record-3JINBRAR.js → record-EE7NGNKY.js} +6 -6
  94. package/dist/{redis-FOIBINYA.js → redis-M4EYWKOJ.js} +5 -5
  95. package/dist/{release-B4VWMVEI.js → release-4KUWVWWC.js} +5 -5
  96. package/dist/{runbook-EYMSE37E.js → runbook-AHU77ANQ.js} +5 -5
  97. package/dist/{sandbox-R6EMGOKR.js → sandbox-FBLJEYA2.js} +1910 -1629
  98. package/dist/sandbox-FBLJEYA2.js.map +1 -0
  99. package/dist/{scenarios-W7YNLBVO.js → scenarios-TU656T2B.js} +5 -5
  100. package/dist/{schedule-EDHQJUUZ.js → schedule-DXJI6SYO.js} +8 -8
  101. package/dist/{session-4N62APNQ.js → session-RUFTJHF4.js} +10 -10
  102. package/dist/{skill-XFGMNOVM.js → skill-ZK76GQ47.js} +7 -7
  103. package/dist/{skill-XFGMNOVM.js.map → skill-ZK76GQ47.js.map} +1 -1
  104. package/dist/skills/cofactor-debug-run/SKILL.md +2 -1
  105. package/dist/skills/cofactor-debug-run/history/2.0.10.md +320 -0
  106. package/dist/skills/cofactor-debug-run/version.json +1 -1
  107. package/dist/{slack-RUAXG6TB.js → slack-M3OKDVMY.js} +6 -6
  108. package/dist/{spec-ZZKMW7ER.js → spec-5MXEBLYR.js} +5 -5
  109. package/dist/{src-OKSAEHQS.js → src-2X5OQRPJ.js} +4 -4
  110. package/dist/{src-DGIVA22K.js → src-72EFBA2R.js} +3 -3
  111. package/dist/{src-ECZWYNSV.js → src-KH6WSBJV.js} +5 -5
  112. package/dist/{src-CQ2YAW7F.js → src-VLV36QYH.js} +127 -20
  113. package/dist/src-VLV36QYH.js.map +1 -0
  114. package/dist/{start-OCZGILRL.js → start-PDYBRB5T.js} +5 -5
  115. package/dist/{status-YTJ6YITG.js → status-VMVPVCDA.js} +5 -5
  116. package/dist/{tag-KBG4SWRL.js → tag-7KTDLPVU.js} +6 -6
  117. package/dist/{task-O6XRMHYE.js → task-QLFYZNKR.js} +6 -6
  118. package/dist/{teams-NFUHS7XI.js → teams-Y7BXCY6P.js} +7 -7
  119. package/dist/{test-suite-6BH3DESN.js → test-suite-6U22AYFG.js} +15 -14
  120. package/dist/test-suite-6U22AYFG.js.map +1 -0
  121. package/dist/{tickets-JU2STK4B.js → tickets-CQDJDNPY.js} +5 -5
  122. package/dist/{trace-NMSGKASJ.js → trace-QDORWXYX.js} +8 -8
  123. package/dist/{triage-JGECJJU5.js → triage-GY7M3UGG.js} +6 -6
  124. package/dist/{trigger-OSPEVCCQ.js → trigger-DLFAORX4.js} +9 -9
  125. package/dist/{update-check-FNP6RFZO.js → update-check-ES6XQ7OF.js} +4 -4
  126. package/dist/{upgrade-3PPBXFAT.js → upgrade-WKEOW5GS.js} +5 -5
  127. package/dist/{usage-QMCU2JIO.js → usage-E6FDTR3W.js} +7 -7
  128. package/dist/{utilities-7VHWTSJT.js → utilities-4Z6YX3L5.js} +6 -6
  129. package/dist/{visual-WIZSPTVK.js → visual-TA6LPVDJ.js} +5 -5
  130. package/dist/{workflow-23HKTJLS.js → workflow-B5FXS2CJ.js} +58 -31
  131. package/dist/workflow-B5FXS2CJ.js.map +1 -0
  132. package/dist/{workflow-cache-ACGM3BOI.js → workflow-cache-MNLEMRMM.js} +16 -16
  133. package/dist/{workflow-cache-convergence-resolve-KEQDQMKL.js → workflow-cache-convergence-resolve-G5HJM6MF.js} +5 -5
  134. package/dist/{workflow-debug-TVLBNRCB.js → workflow-debug-TNBUGSBK.js} +11 -11
  135. package/dist/{workflow-feedback-GB5VPGE2.js → workflow-feedback-G2ZXAUGI.js} +5 -5
  136. package/dist/{workflow-fork-2IPJNR76.js → workflow-fork-6HHOMC2D.js} +5 -5
  137. package/dist/{workflow-promotion-QEQUXVUT.js → workflow-promotion-RG7L6JZT.js} +5 -5
  138. package/dist/{workflow-proposals-KHGTPMD4.js → workflow-proposals-ZNF2F3UE.js} +5 -5
  139. package/dist/{workflow-revisions-F5KQEEXB.js → workflow-revisions-TP64Z6FO.js} +5 -5
  140. package/dist/{workflow-status-66HC5MEA.js → workflow-status-5RG3JX56.js} +5 -5
  141. package/package.json +3 -2
  142. package/dist/chunk-3TZABC7D.js.map +0 -1
  143. package/dist/chunk-BJHAVM7Z.js.map +0 -1
  144. package/dist/chunk-CQSQNDMV.js.map +0 -1
  145. package/dist/chunk-CZDQVQ57.js.map +0 -1
  146. package/dist/chunk-QHRWXCON.js.map +0 -1
  147. package/dist/chunk-QVMGXMP5.js.map +0 -1
  148. package/dist/chunk-TGI2AAOZ.js.map +0 -1
  149. package/dist/chunk-U3MRXQZS.js.map +0 -1
  150. package/dist/chunk-WWUEKQLR.js.map +0 -1
  151. package/dist/eval-F4NORBQI.js.map +0 -1
  152. package/dist/perf-IX7JOMUE.js.map +0 -1
  153. package/dist/property-TZCGOZQG.js.map +0 -1
  154. package/dist/sandbox-R6EMGOKR.js.map +0 -1
  155. package/dist/src-CQ2YAW7F.js.map +0 -1
  156. package/dist/test-suite-6BH3DESN.js.map +0 -1
  157. package/dist/workflow-23HKTJLS.js.map +0 -1
  158. /package/dist/{account-RHHS7HT4.js.map → account-CZYZD2JS.js.map} +0 -0
  159. /package/dist/{alert-B5WEOKHP.js.map → alert-JQ4SDEB7.js.map} +0 -0
  160. /package/dist/{api-catalog-UXONX3BR.js.map → api-catalog-IWQC35P2.js.map} +0 -0
  161. /package/dist/{api-key-J3A4TJKN.js.map → api-key-GUDXIIEA.js.map} +0 -0
  162. /package/dist/{attachment-ZQW7DR4G.js.map → attachment-CPZYOBUB.js.map} +0 -0
  163. /package/dist/{auth-HQGKUZBS.js.map → auth-DS6MBVEI.js.map} +0 -0
  164. /package/dist/{benchmark-TIKJA32J.js.map → benchmark-6HPCIQHD.js.map} +0 -0
  165. /package/dist/{blackcat-Z5LNV2GS.js.map → blackcat-V3L63WFE.js.map} +0 -0
  166. /package/dist/{chunk-JQG3V5E3.js.map → chunk-2E3STBHS.js.map} +0 -0
  167. /package/dist/{chunk-W6DL4IP6.js.map → chunk-3LGCHNBC.js.map} +0 -0
  168. /package/dist/{chunk-MB4FS35J.js.map → chunk-56HFZHQM.js.map} +0 -0
  169. /package/dist/{chunk-YTXZUWMN.js.map → chunk-62EXS76C.js.map} +0 -0
  170. /package/dist/{chunk-6X6ZTDXP.js.map → chunk-BDOL622T.js.map} +0 -0
  171. /package/dist/{chunk-L4JQ236V.js.map → chunk-C3CXVX2B.js.map} +0 -0
  172. /package/dist/{chunk-XM3WTJ7Y.js.map → chunk-DEVD2WD2.js.map} +0 -0
  173. /package/dist/{chunk-Z72GWGH2.js.map → chunk-GCD4EHCD.js.map} +0 -0
  174. /package/dist/{chunk-3KBYI6RR.js.map → chunk-H6ZMKNP7.js.map} +0 -0
  175. /package/dist/{chunk-5OKCT6LF.js.map → chunk-IEWAH7W3.js.map} +0 -0
  176. /package/dist/{chunk-635IQV6B.js.map → chunk-J2ZQULU3.js.map} +0 -0
  177. /package/dist/{chunk-ZZZ33KTO.js.map → chunk-K2IDR6FR.js.map} +0 -0
  178. /package/dist/{chunk-YEH7UIUY.js.map → chunk-KTZRI27M.js.map} +0 -0
  179. /package/dist/{chunk-OU4I3MEH.js.map → chunk-UJSW72LG.js.map} +0 -0
  180. /package/dist/{chunk-R2CRH6JQ.js.map → chunk-VACACCD6.js.map} +0 -0
  181. /package/dist/{chunk-EGWVL5XA.js.map → chunk-VMAR67FF.js.map} +0 -0
  182. /package/dist/{chunk-ZH7HWVEE.js.map → chunk-VMJ7TBVM.js.map} +0 -0
  183. /package/dist/{chunk-XWJJYZQC.js.map → chunk-XHEVDABB.js.map} +0 -0
  184. /package/dist/{chunk-SCQVBLNR.js.map → chunk-XHGF6VC6.js.map} +0 -0
  185. /package/dist/{credential-2IEZDTH3.js.map → credential-GJW7LGYP.js.map} +0 -0
  186. /package/dist/{credential-template-S5WSOI3P.js.map → credential-template-UWBYKKWD.js.map} +0 -0
  187. /package/dist/{digest-HQGL7H6E.js.map → digest-XEHGCJM4.js.map} +0 -0
  188. /package/dist/{docs-CJQZVERZ.js.map → docs-KH4BCEQF.js.map} +0 -0
  189. /package/dist/{doctor-EGK5AB77.js.map → doctor-FOXXE5SK.js.map} +0 -0
  190. /package/dist/{environment-MWVXYEDU.js.map → environment-EBDPQTIS.js.map} +0 -0
  191. /package/dist/{exploration-JC7R7KTJ.js.map → exploration-LCGKRGOQ.js.map} +0 -0
  192. /package/dist/{exploratory-test-BHK5FTMJ.js.map → exploratory-test-SGECQGIX.js.map} +0 -0
  193. /package/dist/{external-run-UL5CKG54.js.map → external-run-2AJAI5O7.js.map} +0 -0
  194. /package/dist/{feature-flag-NMO25TZN.js.map → feature-flag-P7N4WQIH.js.map} +0 -0
  195. /package/dist/{feedback-3JNPSUXS.js.map → feedback-LAT7TQ2T.js.map} +0 -0
  196. /package/dist/{flow-AYE4RTZN.js.map → flow-NH2DC6AP.js.map} +0 -0
  197. /package/dist/{github-DM2DCXRY.js.map → github-FCEKBLXI.js.map} +0 -0
  198. /package/dist/{init-CPDT5XAU.js.map → init-5U5EZOAW.js.map} +0 -0
  199. /package/dist/{install-JZRNCHMO.js.map → install-X3UNVXKY.js.map} +0 -0
  200. /package/dist/{issues-GRFJB52C.js.map → issues-4P6I3YQW.js.map} +0 -0
  201. /package/dist/{knobs-3Y4QXWAD.js.map → knobs-JKTWJ6ZG.js.map} +0 -0
  202. /package/dist/{landing-ABYL5WVG.js.map → landing-6AGLKI66.js.map} +0 -0
  203. /package/dist/{list-WG5QB4NK.js.map → list-TWP2RP33.js.map} +0 -0
  204. /package/dist/{local-KX24OR5Z.js.map → local-D75QE5TB.js.map} +0 -0
  205. /package/dist/{login-MLJQAIFK.js.map → login-RBET4TIP.js.map} +0 -0
  206. /package/dist/{mcp-DDTO54XD.js.map → mcp-562SUUMK.js.map} +0 -0
  207. /package/dist/{metrics-BJLLOSPQ.js.map → metrics-4WF2GEPA.js.map} +0 -0
  208. /package/dist/{monitor-E2CKGHPM.js.map → monitor-WJXH54H2.js.map} +0 -0
  209. /package/dist/{product-2ECWM2JN.js.map → product-CYEQ7HOB.js.map} +0 -0
  210. /package/dist/{product-map-O542LZQL.js.map → product-map-MSDLIFZY.js.map} +0 -0
  211. /package/dist/{prompts-Y7O4XJ5P.js.map → prompts-ME53WPN4.js.map} +0 -0
  212. /package/dist/{proofs-TNOBLSRP.js.map → proofs-D3G6ZUFP.js.map} +0 -0
  213. /package/dist/{psql-M66YSUXW.js.map → psql-EXAUDU3W.js.map} +0 -0
  214. /package/dist/{record-3JINBRAR.js.map → record-EE7NGNKY.js.map} +0 -0
  215. /package/dist/{redis-FOIBINYA.js.map → redis-M4EYWKOJ.js.map} +0 -0
  216. /package/dist/{release-B4VWMVEI.js.map → release-4KUWVWWC.js.map} +0 -0
  217. /package/dist/{runbook-EYMSE37E.js.map → runbook-AHU77ANQ.js.map} +0 -0
  218. /package/dist/{scenarios-W7YNLBVO.js.map → scenarios-TU656T2B.js.map} +0 -0
  219. /package/dist/{schedule-EDHQJUUZ.js.map → schedule-DXJI6SYO.js.map} +0 -0
  220. /package/dist/{session-4N62APNQ.js.map → session-RUFTJHF4.js.map} +0 -0
  221. /package/dist/{slack-RUAXG6TB.js.map → slack-M3OKDVMY.js.map} +0 -0
  222. /package/dist/{spec-ZZKMW7ER.js.map → spec-5MXEBLYR.js.map} +0 -0
  223. /package/dist/{src-DGIVA22K.js.map → src-2X5OQRPJ.js.map} +0 -0
  224. /package/dist/{src-ECZWYNSV.js.map → src-72EFBA2R.js.map} +0 -0
  225. /package/dist/{src-OKSAEHQS.js.map → src-KH6WSBJV.js.map} +0 -0
  226. /package/dist/{start-OCZGILRL.js.map → start-PDYBRB5T.js.map} +0 -0
  227. /package/dist/{status-YTJ6YITG.js.map → status-VMVPVCDA.js.map} +0 -0
  228. /package/dist/{tag-KBG4SWRL.js.map → tag-7KTDLPVU.js.map} +0 -0
  229. /package/dist/{task-O6XRMHYE.js.map → task-QLFYZNKR.js.map} +0 -0
  230. /package/dist/{teams-NFUHS7XI.js.map → teams-Y7BXCY6P.js.map} +0 -0
  231. /package/dist/{tickets-JU2STK4B.js.map → tickets-CQDJDNPY.js.map} +0 -0
  232. /package/dist/{trace-NMSGKASJ.js.map → trace-QDORWXYX.js.map} +0 -0
  233. /package/dist/{triage-JGECJJU5.js.map → triage-GY7M3UGG.js.map} +0 -0
  234. /package/dist/{trigger-OSPEVCCQ.js.map → trigger-DLFAORX4.js.map} +0 -0
  235. /package/dist/{update-check-FNP6RFZO.js.map → update-check-ES6XQ7OF.js.map} +0 -0
  236. /package/dist/{upgrade-3PPBXFAT.js.map → upgrade-WKEOW5GS.js.map} +0 -0
  237. /package/dist/{usage-QMCU2JIO.js.map → usage-E6FDTR3W.js.map} +0 -0
  238. /package/dist/{utilities-7VHWTSJT.js.map → utilities-4Z6YX3L5.js.map} +0 -0
  239. /package/dist/{visual-WIZSPTVK.js.map → visual-TA6LPVDJ.js.map} +0 -0
  240. /package/dist/{workflow-cache-ACGM3BOI.js.map → workflow-cache-MNLEMRMM.js.map} +0 -0
  241. /package/dist/{workflow-cache-convergence-resolve-KEQDQMKL.js.map → workflow-cache-convergence-resolve-G5HJM6MF.js.map} +0 -0
  242. /package/dist/{workflow-debug-TVLBNRCB.js.map → workflow-debug-TNBUGSBK.js.map} +0 -0
  243. /package/dist/{workflow-feedback-GB5VPGE2.js.map → workflow-feedback-G2ZXAUGI.js.map} +0 -0
  244. /package/dist/{workflow-fork-2IPJNR76.js.map → workflow-fork-6HHOMC2D.js.map} +0 -0
  245. /package/dist/{workflow-promotion-QEQUXVUT.js.map → workflow-promotion-RG7L6JZT.js.map} +0 -0
  246. /package/dist/{workflow-proposals-KHGTPMD4.js.map → workflow-proposals-ZNF2F3UE.js.map} +0 -0
  247. /package/dist/{workflow-revisions-F5KQEEXB.js.map → workflow-revisions-TP64Z6FO.js.map} +0 -0
  248. /package/dist/{workflow-status-66HC5MEA.js.map → workflow-status-5RG3JX56.js.map} +0 -0
@@ -3,21 +3,21 @@ import {
3
3
  captureSubstrateV2,
4
4
  parseRunCodeStrict,
5
5
  parseSnapshot
6
- } from "./chunk-3KBYI6RR.js";
6
+ } from "./chunk-H6ZMKNP7.js";
7
7
  import {
8
8
  consoleLogger
9
9
  } from "./chunk-5QHORHJT.js";
10
10
  import {
11
11
  reconstructSnapshots,
12
12
  toMutationIndex
13
- } from "./chunk-JQG3V5E3.js";
13
+ } from "./chunk-2E3STBHS.js";
14
14
  import {
15
15
  MACRO_PATTERN,
16
16
  cacheActionContractIssues,
17
17
  isVolatileIdentifier,
18
18
  stableAttrSelector,
19
19
  stableIdentifierPrefix
20
- } from "./chunk-U3MRXQZS.js";
20
+ } from "./chunk-RHWPZKRV.js";
21
21
 
22
22
  // ../workflow-cache/src/logger.ts
23
23
  var activeLogger = consoleLogger;
@@ -9779,4 +9779,4 @@ export {
9779
9779
  judgeNodeReplayProof,
9780
9780
  judgeCacheOnlyRunClean
9781
9781
  };
9782
- //# sourceMappingURL=chunk-YEH7UIUY.js.map
9782
+ //# sourceMappingURL=chunk-KTZRI27M.js.map
@@ -1,10 +1,10 @@
1
1
  import { createRequire as __cr } from "module"; import { fileURLToPath as __fup } from "url"; import { dirname as __dn } from "path"; const require = __cr(import.meta.url); const __filename = __fup(import.meta.url); const __dirname = __dn(__filename);
2
2
  import {
3
3
  apiRequest
4
- } from "./chunk-WWUEKQLR.js";
4
+ } from "./chunk-EWK44F6V.js";
5
5
  import {
6
6
  apiFetch
7
- } from "./chunk-BJHAVM7Z.js";
7
+ } from "./chunk-4MFMPC5P.js";
8
8
 
9
9
  // src/eval-api.ts
10
10
  var EVALS = "/org/agent-evals";
@@ -87,4 +87,4 @@ export {
87
87
  requestAll,
88
88
  getEval
89
89
  };
90
- //# sourceMappingURL=chunk-RV7FZ4ID.js.map
90
+ //# sourceMappingURL=chunk-L644NMDI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/eval-api.ts"],"sourcesContent":["/** Shared request plumbing for `cofactor eval`. */\nimport type { AgentEvalTemplate } from '@chatsdet/types/agent-eval-template';\nimport { apiFetch, type ClassifiedFailure } from './api-fetch.js';\nimport { apiRequest } from './cli-helpers.js';\n\ntype ApiResponse<T> = {\n ok: boolean;\n error?: string;\n code?: string;\n details?: unknown;\n reason?: unknown;\n alias?: unknown;\n capability?: unknown;\n secret?: unknown;\n issues?: unknown;\n data?: T;\n pagination?: { totalPages: number };\n};\n\nexport const EVALS = '/org/agent-evals';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null;\n\nfunction describeDetails(details: unknown): string {\n if (typeof details === 'string') return `\\n ${details}`;\n if (!Array.isArray(details)) return '';\n const lines = details.flatMap((item) => {\n if (typeof item === 'string') return [item];\n if (!isRecord(item) || typeof item.message !== 'string') return [];\n const path = Array.isArray(item.path) ? item.path.map(String).join('.') : '';\n return [`${path ? `${path}: ` : ''}${item.message}`];\n });\n return lines.length ? `\\n${lines.map((line) => ` ${line}`).join('\\n')}` : '';\n}\n\n/** The parameters a user error carries besides its message (reason, alias, capability). */\nfunction describeParams(response: ApiResponse<unknown>): string {\n return (['reason', 'alias', 'capability', 'secret'] as const)\n .flatMap((key) => (typeof response[key] === 'string' ? [`\\n ${key}: ${response[key]}`] : []))\n .join('');\n}\n\nfunction describeFailure(response: ApiResponse<unknown>, method: string, path: string): string {\n const message = `${response.code ? `${response.code}: ` : ''}${response.error ?? `${method} ${path} failed`}${describeParams(response)}${describeDetails(response.details)}${describeDetails(response.issues)}`;\n return response.code === 'API_KEY_INSUFFICIENT_SCOPE' && method === 'POST' && path.endsWith('/runs')\n ? `${message}\\n eval run needs an API key with sandbox:create and sandbox:exec; sandbox:* does not grant sandbox:exec.`\n : message;\n}\n\n/** The text for a failed `apiFetch`: the API's typed error when the body has one. */\nfunction failureText(failure: ClassifiedFailure, method: string, path: string): string {\n try {\n const parsed: unknown = JSON.parse(failure.body ?? '');\n if (isRecord(parsed) && typeof parsed.error === 'string')\n return describeFailure(parsed as ApiResponse<unknown>, method, path);\n } catch {\n /* not a JSON error body */\n }\n return failure.message;\n}\n\nexport async function request<T>(\n apiUrl: string,\n token: string,\n method: string,\n path: string,\n body?: Record<string, unknown>\n): Promise<T> {\n const response = await apiRequest<ApiResponse<T>>(apiUrl, token, method, path, body);\n if (!response.ok || response.data === undefined) throw new Error(describeFailure(response, method, path));\n return response.data;\n}\n\nconst authHeaders = (token: string) => ({ Authorization: `Bearer ${token}`, 'User-Agent': 'Cofactor-CLI' });\n\n/** GET a text route (the runbook), surfacing the API's error code and message. */\nexport async function requestText(apiUrl: string, token: string, path: string): Promise<string> {\n const result = await apiFetch(`${apiUrl}${path}`, { headers: authHeaders(token), token });\n if (!result.ok) throw new Error(failureText(result.failure, 'GET', path));\n return result.response.text();\n}\n\n/**\n * GET that reports a network error, 429 or 5xx as `transient` instead of exiting, for the long wait in\n * `eval run`. Auth, proxy and 4xx failures throw at once.\n */\nexport async function requestTolerant<T>(\n apiUrl: string,\n token: string,\n path: string\n): Promise<{ data: T } | { transient: string }> {\n const result = await apiFetch(`${apiUrl}${path}`, { headers: authHeaders(token), token });\n if (!result.ok) {\n const { failure } = result;\n if (failure.kind === 'network' || (failure.status !== null && (failure.status >= 500 || failure.status === 429)))\n return { transient: failure.message };\n throw new Error(failureText(failure, 'GET', path));\n }\n const body = (await result.response.json()) as ApiResponse<T>;\n if (!body.ok || body.data === undefined) throw new Error(describeFailure(body, 'GET', path));\n return { data: body.data };\n}\n\n/** Every page of a paginated list route. */\nexport async function requestAll<T>(apiUrl: string, token: string, path: string): Promise<T[]> {\n const items: T[] = [];\n for (let page = 1; ; page++) {\n const response = await apiRequest<ApiResponse<T[]>>(\n apiUrl,\n token,\n 'GET',\n `${path}?pageSize=100&page=${page}`\n );\n if (!response.ok || !response.data) throw new Error(describeFailure(response, 'GET', path));\n items.push(...response.data);\n if (page >= (response.pagination?.totalPages ?? 1)) return items;\n }\n}\n\n/** The stored eval as `GET /org/agent-evals/:name` returns it. */\nexport type EvalDetail = {\n id: string;\n name: string;\n applicationId: string;\n definition: AgentEvalTemplate;\n cases: { key: string; title: string; source: string; bundleBytes: number; bundleSha256: string }[];\n capabilities: { id: string; code: string; title: string }[];\n};\n\nexport const getEval = (apiUrl: string, token: string, name: string) =>\n request<EvalDetail>(apiUrl, token, 'GET', `${EVALS}/${encodeURIComponent(name)}`);\n\n/** `POST .../uploads`: either the object exists, or a presigned PUT to make. */\nexport type UploadReply =\n | { status: 'exists' }\n | { status: 'upload'; url: string; headers: Record<string, string> };\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/eval-api.ts"],"sourcesContent":["/** Shared request plumbing for `cofactor eval`. */\nimport type { AgentEvalTemplate } from '@chatsdet/types/agent-eval-template';\nimport { apiFetch, type ClassifiedFailure } from './api-fetch.js';\nimport { apiRequest } from './cli-helpers.js';\n\ntype ApiResponse<T> = {\n ok: boolean;\n error?: string;\n code?: string;\n details?: unknown;\n reason?: unknown;\n alias?: unknown;\n capability?: unknown;\n secret?: unknown;\n issues?: unknown;\n data?: T;\n pagination?: { totalPages: number };\n};\n\nexport const EVALS = '/org/agent-evals';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null;\n\nfunction describeDetails(details: unknown): string {\n if (typeof details === 'string') return `\\n ${details}`;\n if (!Array.isArray(details)) return '';\n const lines = details.flatMap((item) => {\n if (typeof item === 'string') return [item];\n if (!isRecord(item) || typeof item.message !== 'string') return [];\n const path = Array.isArray(item.path) ? item.path.map(String).join('.') : '';\n return [`${path ? `${path}: ` : ''}${item.message}`];\n });\n return lines.length ? `\\n${lines.map((line) => ` ${line}`).join('\\n')}` : '';\n}\n\n/** The parameters a user error carries besides its message (reason, alias, capability). */\nfunction describeParams(response: ApiResponse<unknown>): string {\n return (['reason', 'alias', 'capability', 'secret'] as const)\n .flatMap((key) => (typeof response[key] === 'string' ? [`\\n ${key}: ${response[key]}`] : []))\n .join('');\n}\n\nfunction describeFailure(response: ApiResponse<unknown>, method: string, path: string): string {\n const message = `${response.code ? `${response.code}: ` : ''}${response.error ?? `${method} ${path} failed`}${describeParams(response)}${describeDetails(response.details)}${describeDetails(response.issues)}`;\n return response.code === 'API_KEY_INSUFFICIENT_SCOPE' && method === 'POST' && path.endsWith('/runs')\n ? `${message}\\n eval run needs an API key with sandbox:create and sandbox:exec; sandbox:* does not grant sandbox:exec.`\n : message;\n}\n\n/** The text for a failed `apiFetch`: the API's typed error when the body has one. */\nfunction failureText(failure: ClassifiedFailure, method: string, path: string): string {\n try {\n const parsed: unknown = JSON.parse(failure.body ?? '');\n if (isRecord(parsed) && typeof parsed.error === 'string')\n return describeFailure(parsed as ApiResponse<unknown>, method, path);\n } catch {\n /* not a JSON error body */\n }\n return failure.message;\n}\n\nexport async function request<T>(\n apiUrl: string,\n token: string,\n method: string,\n path: string,\n body?: Record<string, unknown>\n): Promise<T> {\n const response = await apiRequest<ApiResponse<T>>(apiUrl, token, method, path, body);\n if (!response.ok || response.data === undefined) throw new Error(describeFailure(response, method, path));\n return response.data;\n}\n\nconst authHeaders = (token: string) => ({ Authorization: `Bearer ${token}`, 'User-Agent': 'Cofactor-CLI' });\n\n/** GET a text route (the runbook), surfacing the API's error code and message. */\nexport async function requestText(apiUrl: string, token: string, path: string): Promise<string> {\n const result = await apiFetch(`${apiUrl}${path}`, { headers: authHeaders(token), token });\n if (!result.ok) throw new Error(failureText(result.failure, 'GET', path));\n return result.response.text();\n}\n\n/**\n * GET that reports a network error, 429 or 5xx as `transient` instead of exiting, for the long wait in\n * `eval run`. Auth, proxy and 4xx failures throw at once.\n */\nexport async function requestTolerant<T>(\n apiUrl: string,\n token: string,\n path: string\n): Promise<{ data: T } | { transient: string }> {\n const result = await apiFetch(`${apiUrl}${path}`, { headers: authHeaders(token), token });\n if (!result.ok) {\n const { failure } = result;\n if (failure.kind === 'network' || (failure.status !== null && (failure.status >= 500 || failure.status === 429)))\n return { transient: failure.message };\n throw new Error(failureText(failure, 'GET', path));\n }\n const body = (await result.response.json()) as ApiResponse<T>;\n if (!body.ok || body.data === undefined) throw new Error(describeFailure(body, 'GET', path));\n return { data: body.data };\n}\n\n/** Every page of a paginated list route. */\nexport async function requestAll<T>(apiUrl: string, token: string, path: string): Promise<T[]> {\n const items: T[] = [];\n for (let page = 1; ; page++) {\n const response = await apiRequest<ApiResponse<T[]>>(\n apiUrl,\n token,\n 'GET',\n `${path}?pageSize=100&page=${page}`\n );\n if (!response.ok || !response.data) throw new Error(describeFailure(response, 'GET', path));\n items.push(...response.data);\n if (page >= (response.pagination?.totalPages ?? 1)) return items;\n }\n}\n\n/** The stored eval as `GET /org/agent-evals/:name` returns it. */\nexport type EvalDetail = {\n id: string;\n name: string;\n applicationId: string;\n definition: AgentEvalTemplate;\n cases: { key: string; version: number; title: string; source: string; bundleBytes: number; bundleSha256: string }[];\n capabilities: { id: string; code: string; title: string }[];\n};\n\nexport const getEval = (apiUrl: string, token: string, name: string) =>\n request<EvalDetail>(apiUrl, token, 'GET', `${EVALS}/${encodeURIComponent(name)}`);\n\n/** `POST .../uploads`: either the object exists, or a presigned PUT to make. */\nexport type UploadReply =\n | { status: 'exists' }\n | { status: 'upload'; url: string; headers: Record<string, string> };\n"],"mappings":"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","names":[]}
@@ -1,27 +1,27 @@
1
1
  import { createRequire as __cr } from "module"; import { fileURLToPath as __fup } from "url"; import { dirname as __dn } from "path"; const require = __cr(import.meta.url); const __filename = __fup(import.meta.url); const __dirname = __dn(__filename);
2
2
  import {
3
3
  resolveApplicationId
4
- } from "./chunk-QVMGXMP5.js";
4
+ } from "./chunk-6ILWJFKY.js";
5
5
  import {
6
6
  printServedGuide
7
- } from "./chunk-QHRWXCON.js";
7
+ } from "./chunk-O7B2IYCZ.js";
8
8
  import {
9
9
  apiRequest,
10
10
  getArgValues,
11
11
  readStdin,
12
12
  readTextOrFile
13
- } from "./chunk-WWUEKQLR.js";
13
+ } from "./chunk-EWK44F6V.js";
14
14
  import {
15
15
  getArgValue,
16
16
  hasFlag,
17
17
  resolveConfig
18
- } from "./chunk-BJHAVM7Z.js";
18
+ } from "./chunk-4MFMPC5P.js";
19
19
  import {
20
20
  writeRawOutput
21
- } from "./chunk-KL2ARGH6.js";
21
+ } from "./chunk-2OHYMT3A.js";
22
22
  import {
23
23
  formatProofNone
24
- } from "./chunk-U3MRXQZS.js";
24
+ } from "./chunk-RHWPZKRV.js";
25
25
 
26
26
  // src/proofs.ts
27
27
  import process from "process";
@@ -32,14 +32,17 @@ var HELP = [
32
32
  "",
33
33
  " guide [--json] Print the offline guide to proving a change with tests (no login needed)",
34
34
  " status --repo <owner/repo> --pr <n> [--json] Proofs attached to the pull request",
35
- " attach --pr <n> --application <app> --criterion <n> (--test <wf_\u2026> --run <wrun_\u2026> | --perf-run <prun_\u2026> | --eval-run <aerun_\u2026>) --asserted <text> [--text <text> --detail <text>] [--node <id> --base <sha>] [--sha <sha> --tree <tree>]",
35
+ " attach --pr <n> --application <app> --criterion <n> (--test <wf_\u2026> --run <wrun_\u2026> | --perf-run <prun_\u2026> | --eval-run <aerun_\u2026>) --asserted <text> [--text <text>] [--node <id> --base <sha>] [--sha <sha> --tree <tree>]",
36
+ " --steps <text|@file> (with --test): what the test does, as plain sentences, one per line; the proof page shows them next to the video.",
36
37
  " Perf evidence must be completed, faster or no-change, and on --sha; a slower run is refused. Attach a newer run and detach stale evidence.",
37
38
  " Eval evidence must be a completed, full, passing run on --sha; a partial, failing or other-commit run is refused. Attach as many eval runs as you have; every one must pass.",
38
39
  " A test with any visual_checkpoint node is a UI test; attach runs it at the PR base and shows checkpoint diffs.",
39
40
  " An approved test that is not a fork is cited as an existing test: its run proves it still works, and it is never promoted.",
40
- " attach --pr <n> --application <app> --criterion <n> --manual --notes <text|@file> [--artifact <https-url>]... [--text <text> --detail <text>] [--sha <sha>]",
41
- " Only when Cofactor cannot prove the criterion: say what you did and why. Passes the check, marked manual; never promotes anything.",
42
- " render --pr <n> Print the pull request proof block: a stoplight per criterion as of the head the server tracks for the PR, with run links",
41
+ " attach --pr <n> --application <app> --criterion <n> --manual --notes <text|@file> [--artifact <https-url>]... [--text <text>] [--sha <sha>]",
42
+ " Checked another way (integration tests, a manual check): say what you did and why Cofactor could not prove it, with links. Passes the check; never promotes anything.",
43
+ ' attach --pr <n> --application <app> --criterion <n> --not-proved "<reason>" [--text <text>] [--sha <sha>]',
44
+ " Say why the criterion is not proved. A warning on the check, not a failure; attaching evidence later replaces it.",
45
+ " render --pr <n> Print the pull request proof block: a table with a state per criterion (proved by Cofactor, checked another way, not proved, failed) as of the head the server tracks for the PR, with run links",
43
46
  ' render --none "<reason>" The block for a pull request with no observable criterion (dependency bump, docs-only change): say why',
44
47
  " detach --pr <n> --criterion <n> [--test <wf_\u2026>|--perf-run <prun_\u2026>|--eval-run <aerun_\u2026>|--manual] Remove a criterion or one evidence item",
45
48
  " check --pr <n> --sha <sha> [--body-file <path>|--body -] Evaluate the pull request proofs"
@@ -105,7 +108,10 @@ async function handleStatus(argv, apiUrl, token) {
105
108
  writeRawOutput(proof.verdict.summaryMarkdown);
106
109
  }
107
110
  async function handleAttach(argv, apiUrl, token) {
111
+ if (hasFlag(argv, "--manual") && hasFlag(argv, "--not-proved"))
112
+ usageError("Pass either --manual (checked another way) or --not-proved, not both.");
108
113
  if (hasFlag(argv, "--manual")) return handleAttachManual(argv, apiUrl, token);
114
+ if (hasFlag(argv, "--not-proved")) return handleAttachNotProved(argv, apiUrl, token);
109
115
  const pr = requiredNumber(argv, "--pr");
110
116
  const criterion = requiredNumber(argv, "--criterion");
111
117
  const application = getArgValue(argv, "--application");
@@ -120,9 +126,10 @@ async function handleAttach(argv, apiUrl, token) {
120
126
  if (hasFlag(argv, "--test") && !test || hasFlag(argv, "--run") && !run || hasFlag(argv, "--perf-run") && !perfRun || hasFlag(argv, "--eval-run") && !evalRun)
121
127
  usageError("--test, --run, --perf-run and --eval-run each require a value.");
122
128
  if (!application || !asserted || subjectCount !== 1 || test === void 0 !== (run === void 0))
123
- usageError("Usage: cofactor proofs attach --pr <n> --application <app> --criterion <n> (--test <wf_\u2026> --run <wrun_\u2026> | --perf-run <prun_\u2026> | --eval-run <aerun_\u2026>) --asserted <text> [--text <text> --detail <text>]");
129
+ usageError("Usage: cofactor proofs attach --pr <n> --application <app> --criterion <n> (--test <wf_\u2026> --run <wrun_\u2026> | --perf-run <prun_\u2026> | --eval-run <aerun_\u2026>) --asserted <text> [--steps <text|@file>] [--text <text>]");
124
130
  if ((perfRun !== void 0 || evalRun !== void 0) && (hasFlag(argv, "--node") || hasFlag(argv, "--tree") || hasFlag(argv, "--base")))
125
131
  usageError("--node, --tree and --base can only be used with --test.");
132
+ const steps = parseSteps(argv, test !== void 0);
126
133
  const applicationId = await resolveApplicationId(argv, apiUrl, token);
127
134
  const repo = resolveRepo(argv);
128
135
  const body = { repo, application: applicationId, pr, criterion, asserted };
@@ -136,10 +143,9 @@ async function handleAttach(argv, apiUrl, token) {
136
143
  Object.assign(body, { test, run, sha, tree, ...base ? { base } : {} });
137
144
  }
138
145
  const text = getArgValue(argv, "--text");
139
- const detail = getArgValue(argv, "--detail");
140
146
  const node = getArgValue(argv, "--node");
147
+ if (steps) body.steps = steps;
141
148
  if (text !== void 0) body.text = text;
142
- if (detail !== void 0) body.detail = detail;
143
149
  if (node !== void 0) body.node = node;
144
150
  const res = await apiRequest(
145
151
  apiUrl,
@@ -149,9 +155,23 @@ async function handleAttach(argv, apiUrl, token) {
149
155
  body
150
156
  );
151
157
  if (!res.ok || !res.data) return fail(res.error ?? "could not attach proof evidence");
158
+ printAttachWarnings(res.data);
152
159
  writeRawOutput(JSON.stringify(res.data, null, 2));
153
160
  }
154
- var MANUAL_USAGE = "Usage: cofactor proofs attach --pr <n> --application <app> --criterion <n> --manual --notes <text|@file> [--artifact <https-url>]... [--text <text> --detail <text>]";
161
+ function parseSteps(argv, isE2e) {
162
+ if (!hasFlag(argv, "--steps")) return void 0;
163
+ const value = getArgValue(argv, "--steps");
164
+ if (!isE2e) usageError("--steps can only be used with --test: it describes what a test run did.");
165
+ if (!value) usageError("--steps requires a value: one step per line, as text or @file.");
166
+ const steps = readTextOrFile(value).split("\n").map((line) => line.replace(/^\s*(?:[-*]|\d+[.)])\s+/, "").trim()).filter((line) => line !== "");
167
+ if (steps.length === 0) usageError("--steps needs at least one non-empty line.");
168
+ return steps;
169
+ }
170
+ function printAttachWarnings(result) {
171
+ for (const warning of result.warnings ?? []) console.error(`warning: ${warning}`);
172
+ }
173
+ var NOT_PROVED_USAGE = 'Usage: cofactor proofs attach --pr <n> --application <app> --criterion <n> --not-proved "<reason>" [--text <text>]';
174
+ var MANUAL_USAGE = "Usage: cofactor proofs attach --pr <n> --application <app> --criterion <n> --manual --notes <text|@file> [--artifact <https-url>]... [--text <text>]";
155
175
  async function handleAttachManual(argv, apiUrl, token) {
156
176
  const conflicting = ["--test", "--run", "--perf-run", "--eval-run", "--asserted", "--node", "--tree", "--base"].filter((flag) => hasFlag(argv, flag));
157
177
  if (conflicting.length > 0)
@@ -177,9 +197,7 @@ ${MANUAL_USAGE}`);
177
197
  sha: resolveCleanCheckoutSha(argv)
178
198
  };
179
199
  const text = getArgValue(argv, "--text");
180
- const detail = getArgValue(argv, "--detail");
181
200
  if (text !== void 0) body.text = text;
182
- if (detail !== void 0) body.detail = detail;
183
201
  const res = await apiRequest(
184
202
  apiUrl,
185
203
  token,
@@ -188,6 +206,33 @@ ${MANUAL_USAGE}`);
188
206
  body
189
207
  );
190
208
  if (!res.ok || !res.data) return fail(res.error ?? "could not attach manual evidence");
209
+ printAttachWarnings(res.data);
210
+ writeRawOutput(JSON.stringify(res.data, null, 2));
211
+ }
212
+ async function handleAttachNotProved(argv, apiUrl, token) {
213
+ const conflicting = ["--test", "--run", "--perf-run", "--eval-run", "--asserted", "--node", "--tree", "--base", "--notes", "--artifact"].filter((flag) => hasFlag(argv, flag));
214
+ if (conflicting.length > 0)
215
+ usageError(`--not-proved takes only a reason; remove ${conflicting.join(", ")}.`);
216
+ const pr = requiredNumber(argv, "--pr");
217
+ const criterion = requiredNumber(argv, "--criterion");
218
+ const application = getArgValue(argv, "--application");
219
+ const reason = getArgValue(argv, "--not-proved")?.trim();
220
+ if (reason?.startsWith("-")) usageError("--not-proved takes the reason as its value, not another flag.");
221
+ if (!application || !reason) usageError(`--not-proved requires --application and a reason: say why this criterion is not proved.
222
+ ${NOT_PROVED_USAGE}`);
223
+ const body = {
224
+ repo: resolveRepo(argv),
225
+ application: await resolveApplicationId(argv, apiUrl, token),
226
+ pr,
227
+ criterion,
228
+ notProved: reason,
229
+ sha: resolveCleanCheckoutSha(argv)
230
+ };
231
+ const text = getArgValue(argv, "--text");
232
+ if (text !== void 0) body.text = text;
233
+ const res = await apiRequest(apiUrl, token, "POST", "/proofs/attach", body);
234
+ if (!res.ok || !res.data) return fail(res.error ?? "could not record the reason");
235
+ printAttachWarnings(res.data);
191
236
  writeRawOutput(JSON.stringify(res.data, null, 2));
192
237
  }
193
238
  function handleRenderNone(argv) {
@@ -371,7 +416,8 @@ function fail(message) {
371
416
 
372
417
  export {
373
418
  runProofs,
419
+ parseSteps,
374
420
  resolveRepo,
375
421
  parseRepository
376
422
  };
377
- //# sourceMappingURL=chunk-3TZABC7D.js.map
423
+ //# sourceMappingURL=chunk-LFT7GUWS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/proofs.ts"],"sourcesContent":["/**\n * `cofactor proofs`: the Cofactor tests a pull request lists as proving it.\n *\n * - `attach`, `detach` and `render` record criteria and their evidence and print\n * the block for the pull request description, so nobody hand-formats one.\n * - `check` evaluates the pull request's proofs; `status` shows them.\n *\n * Backed by `/proofs/*` in `apps/api/src/proofs/routes.ts`.\n *\n * @module proofs\n */\n\nimport process from 'node:process';\nimport { execFileSync } from 'node:child_process';\nimport { appendFile, readFile } from 'node:fs/promises';\nimport { formatProofNone, type ProofVerdict } from '@chatsdet/types';\nimport { printServedGuide } from './guide.js';\nimport { getArgValue, hasFlag, resolveConfig } from './auth.js';\nimport { apiRequest, getArgValues, readStdin, readTextOrFile } from './cli-helpers.js';\nimport { writeRawOutput } from './brand.js';\nimport { resolveApplicationId } from './environment.js';\n\ntype ApiResult<T> = { ok: boolean; error?: string; data?: T };\ntype ProofStatusView = {\n proof: { headSha: string };\n verdict: ProofVerdict;\n};\n\nconst HELP = [\n 'Usage: cofactor proofs <sub-command>',\n '',\n ' guide [--json] Print the offline guide to proving a change with tests (no login needed)',\n ' status --repo <owner/repo> --pr <n> [--json] Proofs attached to the pull request',\n ' attach --pr <n> --application <app> --criterion <n> (--test <wf_…> --run <wrun_…> | --perf-run <prun_…> | --eval-run <aerun_…>) --asserted <text> [--text <text>] [--node <id> --base <sha>] [--sha <sha> --tree <tree>]',\n ' --steps <text|@file> (with --test): what the test does, as plain sentences, one per line; the proof page shows them next to the video.',\n ' Perf evidence must be completed, faster or no-change, and on --sha; a slower run is refused. Attach a newer run and detach stale evidence.',\n ' Eval evidence must be a completed, full, passing run on --sha; a partial, failing or other-commit run is refused. Attach as many eval runs as you have; every one must pass.',\n ' A test with any visual_checkpoint node is a UI test; attach runs it at the PR base and shows checkpoint diffs.',\n ' An approved test that is not a fork is cited as an existing test: its run proves it still works, and it is never promoted.',\n ' attach --pr <n> --application <app> --criterion <n> --manual --notes <text|@file> [--artifact <https-url>]... [--text <text>] [--sha <sha>]',\n ' Checked another way (integration tests, a manual check): say what you did and why Cofactor could not prove it, with links. Passes the check; never promotes anything.',\n ' attach --pr <n> --application <app> --criterion <n> --not-proved \"<reason>\" [--text <text>] [--sha <sha>]',\n ' Say why the criterion is not proved. A warning on the check, not a failure; attaching evidence later replaces it.',\n ' render --pr <n> Print the pull request proof block: a table with a state per criterion (proved by Cofactor, checked another way, not proved, failed) as of the head the server tracks for the PR, with run links',\n ' render --none \"<reason>\" The block for a pull request with no observable criterion (dependency bump, docs-only change): say why',\n ' detach --pr <n> --criterion <n> [--test <wf_…>|--perf-run <prun_…>|--eval-run <aerun_…>|--manual] Remove a criterion or one evidence item',\n ' check --pr <n> --sha <sha> [--body-file <path>|--body -] Evaluate the pull request proofs',\n].join('\\n');\n\nexport async function runProofs(argv: string[]): Promise<void> {\n const [subCommand, ...rest] = argv;\n if (!subCommand || subCommand === 'help' || hasFlag(argv, '--help', '-h')) {\n console.log(HELP);\n return;\n }\n if (subCommand === 'guide') {\n await printServedGuide('proofs', rest);\n return;\n }\n if (subCommand === 'render' && hasFlag(rest, '--none')) return handleRenderNone(rest);\n const { apiUrl, token } = await resolveConfig(argv);\n switch (subCommand) {\n case 'status':\n return handleStatus(rest, apiUrl, token);\n case 'attach':\n return handleAttach(rest, apiUrl, token);\n case 'render':\n return handleRender(rest, apiUrl, token);\n case 'detach':\n return handleDetach(rest, apiUrl, token);\n case 'check':\n return handleCheck(rest, apiUrl, token);\n default:\n console.error(`Unknown proofs sub-command: ${subCommand}\\n\\n${HELP}`);\n process.exit(1);\n }\n}\n\nasync function handleStatus(argv: string[], apiUrl: string, token: string): Promise<void> {\n const pr = getArgValue(argv, '--pr');\n if (!pr) {\n console.error('Usage: cofactor proofs status --repo <owner/repo> --pr <number> [--json]');\n process.exit(1);\n }\n const repo = resolveRepo(argv);\n const query = new URLSearchParams({ repo, pr });\n const res = await apiRequest<ApiResult<{ proof: ProofStatusView | null }>>(\n apiUrl,\n token,\n 'GET',\n `/proofs/status?${query}`\n );\n if (!res.ok || !res.data) {\n console.error(`Error: ${res.error ?? 'could not read the pull request proofs'}`);\n process.exit(1);\n }\n if (hasFlag(argv, '--json')) {\n writeRawOutput(JSON.stringify(res.data, null, 2));\n return;\n }\n const proof = res.data.proof;\n if (!proof) {\n console.log(`#${pr} has no attached proof criteria.`);\n return;\n }\n console.log(`#${pr} proof status at ${proof.proof.headSha}:`);\n writeRawOutput(proof.verdict.summaryMarkdown);\n}\n\nasync function handleAttach(argv: string[], apiUrl: string, token: string): Promise<void> {\n if (hasFlag(argv, '--manual') && hasFlag(argv, '--not-proved'))\n usageError('Pass either --manual (checked another way) or --not-proved, not both.');\n if (hasFlag(argv, '--manual')) return handleAttachManual(argv, apiUrl, token);\n if (hasFlag(argv, '--not-proved')) return handleAttachNotProved(argv, apiUrl, token);\n const pr = requiredNumber(argv, '--pr');\n const criterion = requiredNumber(argv, '--criterion');\n const application = getArgValue(argv, '--application');\n const test = getArgValue(argv, '--test');\n const run = getArgValue(argv, '--run');\n const perfRun = getArgValue(argv, '--perf-run');\n const evalRun = getArgValue(argv, '--eval-run');\n const asserted = getArgValue(argv, '--asserted');\n const subjectCount =\n Number(test !== undefined || run !== undefined) + Number(perfRun !== undefined) + Number(evalRun !== undefined);\n if (['--test', '--run', '--perf-run', '--eval-run'].some((flag) => flagCount(argv, flag) > 1))\n usageError('Pass each evidence subject flag at most once.');\n if (\n (hasFlag(argv, '--test') && !test) || (hasFlag(argv, '--run') && !run) ||\n (hasFlag(argv, '--perf-run') && !perfRun) || (hasFlag(argv, '--eval-run') && !evalRun)\n )\n usageError('--test, --run, --perf-run and --eval-run each require a value.');\n if (!application || !asserted || subjectCount !== 1 || (test === undefined) !== (run === undefined))\n usageError('Usage: cofactor proofs attach --pr <n> --application <app> --criterion <n> (--test <wf_…> --run <wrun_…> | --perf-run <prun_…> | --eval-run <aerun_…>) --asserted <text> [--steps <text|@file>] [--text <text>]');\n if ((perfRun !== undefined || evalRun !== undefined) && (hasFlag(argv, '--node') || hasFlag(argv, '--tree') || hasFlag(argv, '--base')))\n usageError('--node, --tree and --base can only be used with --test.');\n const steps = parseSteps(argv, test !== undefined);\n const applicationId = await resolveApplicationId(argv, apiUrl, token);\n const repo = resolveRepo(argv);\n const body: Record<string, unknown> = { repo, application: applicationId, pr, criterion, asserted };\n if (perfRun !== undefined || evalRun !== undefined) {\n body.sha = resolveCleanCheckoutSha(argv);\n if (perfRun !== undefined) body.perfRun = perfRun;\n else body.evalRun = evalRun;\n } else {\n const { sha, tree } = resolveCheckoutCommit(argv);\n const base = getArgValue(argv, '--base') ?? resolveDefaultBaseCommit();\n Object.assign(body, { test, run, sha, tree, ...(base ? { base } : {}) });\n }\n const text = getArgValue(argv, '--text');\n const node = getArgValue(argv, '--node');\n if (steps) body.steps = steps;\n if (text !== undefined) body.text = text;\n if (node !== undefined) body.node = node;\n const res = await apiRequest<ApiResult<AttachResult>>(\n apiUrl,\n token,\n 'POST',\n '/proofs/attach',\n body\n );\n if (!res.ok || !res.data) return fail(res.error ?? 'could not attach proof evidence');\n printAttachWarnings(res.data);\n writeRawOutput(JSON.stringify(res.data, null, 2));\n}\n\n/**\n * `--steps <text|@file>`: the run's steps as plain sentences, one per line. Leading bullets and numbers are dropped\n * so a markdown list pastes as is. E2E evidence only.\n */\nexport function parseSteps(argv: string[], isE2e: boolean): string[] | undefined {\n if (!hasFlag(argv, '--steps')) return undefined;\n const value = getArgValue(argv, '--steps');\n if (!isE2e) usageError('--steps can only be used with --test: it describes what a test run did.');\n if (!value) usageError('--steps requires a value: one step per line, as text or @file.');\n const steps = readTextOrFile(value)\n .split('\\n')\n .map((line) => line.replace(/^\\s*(?:[-*]|\\d+[.)])\\s+/, '').trim())\n .filter((line) => line !== '');\n if (steps.length === 0) usageError('--steps needs at least one non-empty line.');\n return steps;\n}\n\ntype AttachResult = { proofId: string; criterion: unknown; evidence: unknown; /** Absent from an API that predates the identifier warning (dev or local servers can lag the CLI). */ warnings?: string[] };\n\n/** The API accepts text that reads like code; say so on stderr so the JSON on stdout stays parseable. */\nfunction printAttachWarnings(result: AttachResult): void {\n for (const warning of result.warnings ?? []) console.error(`warning: ${warning}`);\n}\n\nconst NOT_PROVED_USAGE =\n 'Usage: cofactor proofs attach --pr <n> --application <app> --criterion <n> --not-proved \"<reason>\" [--text <text>]';\n\nconst MANUAL_USAGE =\n 'Usage: cofactor proofs attach --pr <n> --application <app> --criterion <n> --manual --notes <text|@file> [--artifact <https-url>]... [--text <text>]';\n\n/** M23: the agent's own account of a criterion Cofactor could not prove. */\nasync function handleAttachManual(argv: string[], apiUrl: string, token: string): Promise<void> {\n const conflicting = ['--test', '--run', '--perf-run', '--eval-run', '--asserted', '--node', '--tree', '--base'].filter((flag) => hasFlag(argv, flag));\n if (conflicting.length > 0)\n usageError(`--manual takes --notes instead of a test, run or asserted line; remove ${conflicting.join(', ')}.`);\n const pr = requiredNumber(argv, '--pr');\n const criterion = requiredNumber(argv, '--criterion');\n const application = getArgValue(argv, '--application');\n const notesValue = getArgValue(argv, '--notes');\n if (!application || !notesValue) usageError(`--manual requires --application and --notes.\\n${MANUAL_USAGE}`);\n const notes = readTextOrFile(notesValue).trim();\n if (!notes) usageError('--manual requires non-empty --notes: what you did, and why Cofactor could not prove it.');\n const artifacts = hasFlag(argv, '--artifact') ? getArgValues(argv, '--artifact') : [];\n const applicationId = await resolveApplicationId(argv, apiUrl, token);\n const body: Record<string, unknown> = {\n repo: resolveRepo(argv),\n application: applicationId,\n pr,\n criterion,\n manual: true,\n notes,\n artifacts,\n sha: resolveCleanCheckoutSha(argv),\n };\n const text = getArgValue(argv, '--text');\n if (text !== undefined) body.text = text;\n const res = await apiRequest<ApiResult<AttachResult>>(\n apiUrl,\n token,\n 'POST',\n '/proofs/attach',\n body\n );\n if (!res.ok || !res.data) return fail(res.error ?? 'could not attach manual evidence');\n printAttachWarnings(res.data);\n writeRawOutput(JSON.stringify(res.data, null, 2));\n}\n\n/** The agent's reason a criterion is not proved: a warning on the check, never a failure. */\nasync function handleAttachNotProved(argv: string[], apiUrl: string, token: string): Promise<void> {\n const conflicting = ['--test', '--run', '--perf-run', '--eval-run', '--asserted', '--node', '--tree', '--base', '--notes', '--artifact'].filter((flag) => hasFlag(argv, flag));\n if (conflicting.length > 0)\n usageError(`--not-proved takes only a reason; remove ${conflicting.join(', ')}.`);\n const pr = requiredNumber(argv, '--pr');\n const criterion = requiredNumber(argv, '--criterion');\n const application = getArgValue(argv, '--application');\n const reason = getArgValue(argv, '--not-proved')?.trim();\n if (reason?.startsWith('-')) usageError('--not-proved takes the reason as its value, not another flag.');\n if (!application || !reason) usageError(`--not-proved requires --application and a reason: say why this criterion is not proved.\\n${NOT_PROVED_USAGE}`);\n const body: Record<string, unknown> = {\n repo: resolveRepo(argv),\n application: await resolveApplicationId(argv, apiUrl, token),\n pr,\n criterion,\n notProved: reason,\n sha: resolveCleanCheckoutSha(argv),\n };\n const text = getArgValue(argv, '--text');\n if (text !== undefined) body.text = text;\n const res = await apiRequest<ApiResult<AttachResult>>(apiUrl, token, 'POST', '/proofs/attach', body);\n if (!res.ok || !res.data) return fail(res.error ?? 'could not record the reason');\n printAttachWarnings(res.data);\n writeRawOutput(JSON.stringify(res.data, null, 2));\n}\n\n/** `render --none`: needs no login or server; the reason is the whole block. */\nfunction handleRenderNone(argv: string[]): void {\n const reason = getArgValue(argv, '--none')?.trim();\n if (!reason) return fail('--none takes a reason: say why no test is possible, and what would make one possible.');\n if (reason.includes('<!--') || reason.includes('-->')) return fail('the reason cannot contain an HTML comment marker.');\n writeRawOutput(formatProofNone(reason));\n}\n\nasync function handleRender(argv: string[], apiUrl: string, token: string): Promise<void> {\n const pr = requiredNumber(argv, '--pr');\n const repo = resolveRepo(argv);\n const query = new URLSearchParams({ repo, pr: String(pr) });\n const res = await apiRequest<ApiResult<{ body: string }>>(\n apiUrl,\n token,\n 'GET',\n `/proofs/render?${query}`\n );\n if (!res.ok || !res.data) return fail(res.error ?? 'could not render pull request proofs');\n writeRawOutput(res.data.body);\n}\n\nasync function handleDetach(argv: string[], apiUrl: string, token: string): Promise<void> {\n const pr = requiredNumber(argv, '--pr');\n const criterion = requiredNumber(argv, '--criterion');\n const repo = resolveRepo(argv);\n const test = getArgValue(argv, '--test');\n const perfRun = getArgValue(argv, '--perf-run');\n const evalRun = getArgValue(argv, '--eval-run');\n const manual = hasFlag(argv, '--manual');\n if (['--test', '--perf-run', '--eval-run'].some((flag) => flagCount(argv, flag) > 1))\n usageError('Pass each evidence subject flag at most once.');\n if (Number(test !== undefined) + Number(perfRun !== undefined) + Number(evalRun !== undefined) + Number(manual) > 1)\n usageError('Pass at most one of --test, --perf-run, --eval-run and --manual.');\n if ((hasFlag(argv, '--test') && !test) || (hasFlag(argv, '--perf-run') && !perfRun) || (hasFlag(argv, '--eval-run') && !evalRun))\n usageError('--test, --perf-run and --eval-run each require a value.');\n const res = await apiRequest<ApiResult<{ deleted: true }>>(\n apiUrl,\n token,\n 'POST',\n '/proofs/detach',\n { repo, pr, criterion, ...(test ? { test } : {}), ...(perfRun ? { perfRun } : {}), ...(evalRun ? { evalRun } : {}), ...(manual ? { manual: true } : {}) }\n );\n if (!res.ok || !res.data) return fail(res.error ?? 'could not detach proof criterion');\n writeRawOutput(JSON.stringify(res.data, null, 2));\n}\n\nasync function handleCheck(argv: string[], apiUrl: string, token: string): Promise<void> {\n const pr = requiredNumber(argv, '--pr');\n const sha = getArgValue(argv, '--sha');\n if (!sha) usageError('Usage: cofactor proofs check --pr <n> --sha <sha> [--body-file <path>|--body -]');\n const repo = resolveRepo(argv);\n const bodyInput = getArgValue(argv, '--body');\n const bodyFile = getArgValue(argv, '--body-file');\n if (bodyInput !== undefined && (bodyInput !== '-' || bodyFile !== undefined)) {\n usageError('Use --body - for stdin or --body-file <path>.');\n }\n if (bodyInput === undefined && bodyFile === undefined) {\n usageError('Pass the pull request body with --body - or --body-file <path>.');\n }\n let body: string;\n try {\n body = bodyInput === '-' ? await readStdin() : await readFile(bodyFile!, 'utf8');\n } catch (error) {\n return fail(`could not read pull request body: ${error instanceof Error ? error.message : String(error)}`);\n }\n const res = await apiRequest<ApiResult<ProofVerdict | null>>(\n apiUrl,\n token,\n 'POST',\n '/proofs/check',\n { repo, pr, sha, body }\n );\n if (!res.ok) return fail(res.error ?? 'could not check pull request proofs');\n const verdict = res.data;\n if (!verdict) return;\n if (verdict.summaryMarkdown) {\n writeRawOutput(verdict.summaryMarkdown);\n const summaryFile = process.env.GITHUB_STEP_SUMMARY;\n if (summaryFile) {\n try {\n await appendFile(summaryFile, `${verdict.summaryMarkdown}\\n`, 'utf8');\n } catch (error) {\n return fail(`could not append GitHub step summary: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n }\n if (verdict.conclusion === 'failure') process.exit(1);\n}\n\n/** Resolve an explicit repo, Actions context, or the checkout's origin remote. */\nexport function resolveRepo(argv: string[]): string {\n const explicit = getArgValue(argv, '--repo');\n const candidate = explicit ?? process.env.GITHUB_REPOSITORY ?? originRepository();\n const repo = parseRepository(candidate);\n if (!repo) usageError('Could not determine a GitHub repository. Pass --repo <owner/repo> or set GITHUB_REPOSITORY.');\n return repo;\n}\n\nexport function parseRepository(value: string): string | null {\n const normalized = value.trim();\n const bare = normalized.match(/^([^/\\s:]+)\\/([^/\\s:]+?)(?:\\.git)?$/i);\n if (bare) return `${bare[1]}/${bare[2]}`.toLowerCase();\n const scp = normalized.match(/^git@github\\.com:([^/\\s:]+)\\/([^/\\s:]+?)(?:\\.git)?$/i);\n if (scp) return `${scp[1]}/${scp[2]}`.toLowerCase();\n try {\n const url = new URL(normalized);\n if (!['http:', 'https:', 'ssh:'].includes(url.protocol) || url.hostname.toLowerCase() !== 'github.com') return null;\n const path = url.pathname.match(/^\\/([^/\\s]+)\\/([^/\\s]+?)(?:\\.git)?\\/?$/i);\n return path ? `${path[1]}/${path[2]}`.toLowerCase() : null;\n } catch {\n return null;\n }\n}\n\nfunction originRepository(): string {\n try {\n return execFileSync('git', ['remote', 'get-url', 'origin'], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();\n } catch {\n return '';\n }\n}\n\nfunction resolveCheckoutCommit(argv: string[]): { sha: string; tree: string } {\n const explicitSha = getArgValue(argv, '--sha');\n const explicitTree = getArgValue(argv, '--tree');\n if (explicitSha !== undefined && explicitTree !== undefined) {\n return { sha: explicitSha, tree: explicitTree };\n }\n if (gitOutput(['status', '--porcelain'])) {\n return fail('the working tree is dirty; commit and push, sync, and run again');\n }\n const sha = explicitSha ?? gitRevision('HEAD');\n const tree = explicitTree ?? gitRevision('HEAD^{tree}');\n return { sha, tree };\n}\n\nfunction resolveCleanCheckoutSha(argv: string[]): string {\n if (gitOutput(['status', '--porcelain'])) return fail('the working tree is dirty; commit and push, sync, and run again');\n return getArgValue(argv, '--sha') ?? gitRevision('HEAD');\n}\n\nfunction resolveDefaultBaseCommit(): string | undefined {\n try {\n const defaultRef = execFileSync('git', ['symbolic-ref', 'refs/remotes/origin/HEAD'], {\n encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'],\n }).trim();\n return execFileSync('git', ['merge-base', 'HEAD', defaultRef], {\n encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'],\n }).trim() || undefined;\n } catch {\n // The server resolves its current base when the CLI cannot compute a merge base.\n process.stderr.write('Could not resolve the default base commit; the server will resolve the current base.\\n');\n return undefined;\n }\n}\n\nfunction gitOutput(args: string[]): string {\n try {\n return execFileSync('git', args, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();\n } catch {\n return fail('could not inspect the working tree; run this command from a git checkout');\n }\n}\n\nfunction gitRevision(revision: string): string {\n try {\n return execFileSync('git', ['rev-parse', revision], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();\n } catch {\n return fail(`could not resolve ${revision}; run this command from a git checkout`);\n }\n}\n\nfunction requiredNumber(argv: string[], flag: string): number {\n const value = getArgValue(argv, flag);\n const parsed = value ? Number(value) : Number.NaN;\n if (!Number.isSafeInteger(parsed) || parsed < 1) usageError(`${flag} must be a positive integer.`);\n return parsed;\n}\n\nfunction flagCount(argv: string[], flag: string): number {\n return argv.filter((arg) => arg === flag).length;\n}\n\nfunction usageError(message: string): never {\n console.error(`Error: ${message}`);\n process.exit(1);\n}\n\nfunction fail(message: string): never {\n console.error(`Error: ${message}`);\n process.exit(1);\n}\n"],"mappings":"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","names":[]}