@runcofactor/cli 0.54.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.
- package/README.md +2 -1
- package/dist/{account-6YJAU53I.js → account-CZYZD2JS.js} +5 -5
- package/dist/{alert-Z7V2ZUEW.js → alert-JQ4SDEB7.js} +8 -8
- package/dist/{api-catalog-UEDTRM6E.js → api-catalog-IWQC35P2.js} +5 -5
- package/dist/{api-key-V5GEPRRG.js → api-key-GUDXIIEA.js} +5 -5
- package/dist/{attachment-M7VZ6GSE.js → attachment-CPZYOBUB.js} +5 -5
- package/dist/{auth-DVTMWJKF.js → auth-DS6MBVEI.js} +3 -3
- package/dist/{benchmark-KZJZYUTQ.js → benchmark-6HPCIQHD.js} +5 -5
- package/dist/{blackcat-QJXYDE66.js → blackcat-V3L63WFE.js} +3 -3
- package/dist/{chunk-FLDIN6VX.js → chunk-2E3STBHS.js} +2 -2
- package/dist/{chunk-KNWKOKM7.js → chunk-2OHYMT3A.js} +20 -11
- package/dist/chunk-2OHYMT3A.js.map +1 -0
- package/dist/{chunk-L4Y5PZUE.js → chunk-3LGCHNBC.js} +2 -2
- package/dist/{chunk-ZFN5FWN2.js → chunk-4MFMPC5P.js} +46 -2
- package/dist/chunk-4MFMPC5P.js.map +1 -0
- package/dist/{chunk-2M4PZK6Q.js → chunk-56HFZHQM.js} +8 -8
- package/dist/{chunk-AQOHNAEN.js → chunk-5OYWNS6D.js} +20 -9
- package/dist/chunk-5OYWNS6D.js.map +1 -0
- package/dist/{chunk-RA2NRAWU.js → chunk-62EXS76C.js} +6 -6
- package/dist/{chunk-HGEJHS45.js → chunk-6ILWJFKY.js} +368 -6
- package/dist/chunk-6ILWJFKY.js.map +1 -0
- package/dist/{chunk-4EWSONHO.js → chunk-BDOL622T.js} +4 -4
- package/dist/{chunk-T6EQFICG.js → chunk-C3CXVX2B.js} +4 -4
- package/dist/{chunk-33U56YGD.js → chunk-CWICLBLU.js} +2 -1
- package/dist/{chunk-33U56YGD.js.map → chunk-CWICLBLU.js.map} +1 -1
- package/dist/{chunk-MQQCUU5S.js → chunk-DEVD2WD2.js} +2 -2
- package/dist/{chunk-TRC63RSK.js → chunk-EWK44F6V.js} +3 -3
- package/dist/chunk-EWK44F6V.js.map +1 -0
- package/dist/{chunk-Q7UAEFW5.js → chunk-FNHPTTRF.js} +7 -5
- package/dist/chunk-FNHPTTRF.js.map +1 -0
- package/dist/{chunk-JAIMLQOU.js → chunk-GCD4EHCD.js} +6 -6
- package/dist/{chunk-7MRZWPVC.js → chunk-H6ZMKNP7.js} +3 -3
- package/dist/{chunk-ZOPVBINJ.js → chunk-IEWAH7W3.js} +5 -5
- package/dist/{chunk-74TU6PGO.js → chunk-IV4HRGKX.js} +77 -12
- package/dist/chunk-IV4HRGKX.js.map +1 -0
- package/dist/{chunk-ZO5MSM4Q.js → chunk-J2ZQULU3.js} +2 -2
- package/dist/{chunk-IVWWYKAM.js → chunk-K2IDR6FR.js} +3 -3
- package/dist/{chunk-QGP67JOK.js → chunk-KTZRI27M.js} +4 -4
- package/dist/{chunk-HESV3F6U.js → chunk-L644NMDI.js} +3 -3
- package/dist/{chunk-HESV3F6U.js.map → chunk-L644NMDI.js.map} +1 -1
- package/dist/{chunk-LPQTXBJF.js → chunk-LFT7GUWS.js} +63 -17
- package/dist/chunk-LFT7GUWS.js.map +1 -0
- package/dist/{chunk-O7MBDOMO.js → chunk-O7B2IYCZ.js} +30 -14
- package/dist/chunk-O7B2IYCZ.js.map +1 -0
- package/dist/{chunk-R2CVV7QT.js → chunk-RHWPZKRV.js} +28 -1
- package/dist/chunk-RHWPZKRV.js.map +1 -0
- package/dist/{chunk-3YNR6U6Q.js → chunk-UJSW72LG.js} +3 -3
- package/dist/{chunk-G2SCV2CY.js → chunk-VACACCD6.js} +3 -3
- package/dist/{chunk-CV22445U.js → chunk-VMAR67FF.js} +2 -2
- package/dist/{chunk-QYHJUHL7.js → chunk-VMJ7TBVM.js} +2 -2
- package/dist/chunk-WRRA4ATV.js +332 -0
- package/dist/chunk-WRRA4ATV.js.map +1 -0
- package/dist/{chunk-YACDH6MJ.js → chunk-XHEVDABB.js} +2 -2
- package/dist/{chunk-7VBX2M4F.js → chunk-XHGF6VC6.js} +4 -4
- package/dist/{credential-546ER7WQ.js → credential-GJW7LGYP.js} +5 -5
- package/dist/{credential-template-BWMEBGBN.js → credential-template-UWBYKKWD.js} +5 -5
- package/dist/dev-PBW7BSOD.js +605 -0
- package/dist/dev-PBW7BSOD.js.map +1 -0
- package/dist/{digest-NIVBDDI2.js → digest-XEHGCJM4.js} +8 -8
- package/dist/{docs-AK4MDP6K.js → docs-KH4BCEQF.js} +5 -5
- package/dist/{doctor-NCLA47EL.js → doctor-FOXXE5SK.js} +3 -3
- package/dist/{environment-X3PV5IN2.js → environment-EBDPQTIS.js} +7 -7
- package/dist/{eval-5FZKYZ6O.js → eval-QZSSEICV.js} +67 -27
- package/dist/eval-QZSSEICV.js.map +1 -0
- package/dist/{exploration-2RVGIUKT.js → exploration-LCGKRGOQ.js} +5 -5
- package/dist/{exploratory-test-SJ5HFI3L.js → exploratory-test-SGECQGIX.js} +13 -5
- package/dist/exploratory-test-SGECQGIX.js.map +1 -0
- package/dist/{external-run-4NDVAHQB.js → external-run-2AJAI5O7.js} +9 -9
- package/dist/{feature-flag-C4IRE724.js → feature-flag-P7N4WQIH.js} +5 -5
- package/dist/{feedback-337OZCKC.js → feedback-LAT7TQ2T.js} +6 -6
- package/dist/{flow-D7ZLBKCH.js → flow-NH2DC6AP.js} +5 -5
- package/dist/{github-LKXYIALH.js → github-FCEKBLXI.js} +6 -6
- package/dist/index.js +106 -408
- package/dist/index.js.map +1 -1
- package/dist/{init-GKEC6LPH.js → init-5U5EZOAW.js} +5 -5
- package/dist/{install-K45SAT2V.js → install-X3UNVXKY.js} +5 -5
- package/dist/{issues-2HMTQYWR.js → issues-4P6I3YQW.js} +8 -8
- package/dist/{knobs-KUCGLO5Z.js → knobs-JKTWJ6ZG.js} +5 -5
- package/dist/{landing-KAET2I73.js → landing-6AGLKI66.js} +7 -7
- package/dist/{list-GDV4UYWV.js → list-TWP2RP33.js} +5 -5
- package/dist/{local-NFOSJLLV.js → local-D75QE5TB.js} +7 -7
- package/dist/{login-Y77HWROY.js → login-RBET4TIP.js} +5 -5
- package/dist/{mcp-CPCFMU6B.js → mcp-562SUUMK.js} +11 -11
- package/dist/{metrics-Y245ST63.js → metrics-4WF2GEPA.js} +5 -5
- package/dist/{monitor-BUDWSC3S.js → monitor-WJXH54H2.js} +5 -5
- package/dist/{perf-3JOAXPHP.js → perf-C6N6P7YG.js} +12 -361
- package/dist/perf-C6N6P7YG.js.map +1 -0
- package/dist/{product-CXL3YTMD.js → product-CYEQ7HOB.js} +5 -5
- package/dist/{product-map-656BTU74.js → product-map-MSDLIFZY.js} +7 -7
- package/dist/{prompts-3SZ7O5E6.js → prompts-ME53WPN4.js} +5 -5
- package/dist/{proofs-4CSCCSNL.js → proofs-D3G6ZUFP.js} +11 -9
- package/dist/{property-IEKBXRVY.js → property-5GLJNAVB.js} +29 -10
- package/dist/property-5GLJNAVB.js.map +1 -0
- package/dist/{psql-M4CM6TSI.js → psql-EXAUDU3W.js} +5 -5
- package/dist/{record-QP4TYZBS.js → record-EE7NGNKY.js} +6 -6
- package/dist/{redis-KG47IGJV.js → redis-M4EYWKOJ.js} +5 -5
- package/dist/{release-QHPSQULK.js → release-4KUWVWWC.js} +5 -5
- package/dist/{runbook-YVBG2QK3.js → runbook-AHU77ANQ.js} +5 -5
- package/dist/{sandbox-ZXDZTCCN.js → sandbox-FBLJEYA2.js} +1917 -1633
- package/dist/sandbox-FBLJEYA2.js.map +1 -0
- package/dist/{scenarios-2SX2NUCD.js → scenarios-TU656T2B.js} +5 -5
- package/dist/{schedule-P6F7MLXX.js → schedule-DXJI6SYO.js} +8 -8
- package/dist/{session-SZMCZTPE.js → session-RUFTJHF4.js} +10 -10
- package/dist/{skill-D4XFW6QI.js → skill-ZK76GQ47.js} +111 -13
- package/dist/skill-ZK76GQ47.js.map +1 -0
- package/dist/skills/cofactor-debug-run/SKILL.md +6 -1
- package/dist/skills/cofactor-debug-run/history/2.0.10.md +320 -0
- package/dist/skills/cofactor-debug-run/history/2.0.9.md +319 -0
- package/dist/skills/cofactor-debug-run/version.json +1 -1
- package/dist/{slack-UDXTPOSW.js → slack-M3OKDVMY.js} +6 -6
- package/dist/{spec-YCBBIV27.js → spec-5MXEBLYR.js} +5 -5
- package/dist/{src-DY7GLRO2.js → src-2X5OQRPJ.js} +4 -4
- package/dist/{src-NG7DRE5A.js → src-72EFBA2R.js} +3 -3
- package/dist/{src-DEGBASCD.js → src-KH6WSBJV.js} +5 -5
- package/dist/{src-ZKVNVLXY.js → src-VLV36QYH.js} +127 -20
- package/dist/src-VLV36QYH.js.map +1 -0
- package/dist/{start-ZYZSORPY.js → start-PDYBRB5T.js} +5 -5
- package/dist/{status-ESIG6A7W.js → status-VMVPVCDA.js} +5 -5
- package/dist/{tag-3K5Y25AR.js → tag-7KTDLPVU.js} +6 -6
- package/dist/{task-JLNX7O3M.js → task-QLFYZNKR.js} +6 -6
- package/dist/{teams-F4IU3EXE.js → teams-Y7BXCY6P.js} +7 -7
- package/dist/{test-suite-QHDUW5W5.js → test-suite-6U22AYFG.js} +15 -14
- package/dist/test-suite-6U22AYFG.js.map +1 -0
- package/dist/{tickets-NBL5WACL.js → tickets-CQDJDNPY.js} +5 -5
- package/dist/{trace-ZKYAI5JF.js → trace-QDORWXYX.js} +8 -8
- package/dist/{triage-5NWCREUM.js → triage-GY7M3UGG.js} +6 -6
- package/dist/{trigger-KXYYY5IR.js → trigger-DLFAORX4.js} +9 -9
- package/dist/{update-check-Q2URVJLC.js → update-check-ES6XQ7OF.js} +4 -4
- package/dist/{upgrade-4XSASC7U.js → upgrade-WKEOW5GS.js} +5 -5
- package/dist/{usage-UY7VZYVY.js → usage-E6FDTR3W.js} +7 -7
- package/dist/{utilities-53NXNLA7.js → utilities-4Z6YX3L5.js} +6 -6
- package/dist/{visual-IJAT7X7D.js → visual-TA6LPVDJ.js} +5 -5
- package/dist/{workflow-OQNH2FIS.js → workflow-B5FXS2CJ.js} +92 -36
- package/dist/workflow-B5FXS2CJ.js.map +1 -0
- package/dist/{workflow-cache-FP6MKLVR.js → workflow-cache-MNLEMRMM.js} +16 -16
- package/dist/{workflow-cache-convergence-resolve-HS5KO7US.js → workflow-cache-convergence-resolve-G5HJM6MF.js} +5 -5
- package/dist/{workflow-debug-EM55H2QE.js → workflow-debug-TNBUGSBK.js} +11 -11
- package/dist/{workflow-feedback-GNWNWVHH.js → workflow-feedback-G2ZXAUGI.js} +5 -5
- package/dist/{workflow-fork-M5AQWST7.js → workflow-fork-6HHOMC2D.js} +5 -5
- package/dist/{workflow-promotion-HYULZDYL.js → workflow-promotion-RG7L6JZT.js} +5 -5
- package/dist/{workflow-proposals-EN327FSE.js → workflow-proposals-ZNF2F3UE.js} +5 -5
- package/dist/{workflow-revisions-ZMTVNWRW.js → workflow-revisions-TP64Z6FO.js} +5 -5
- package/dist/{workflow-status-FNAJG34W.js → workflow-status-5RG3JX56.js} +5 -5
- package/package.json +3 -2
- package/dist/chunk-74TU6PGO.js.map +0 -1
- package/dist/chunk-AQOHNAEN.js.map +0 -1
- package/dist/chunk-HGEJHS45.js.map +0 -1
- package/dist/chunk-KNWKOKM7.js.map +0 -1
- package/dist/chunk-LPQTXBJF.js.map +0 -1
- package/dist/chunk-O7MBDOMO.js.map +0 -1
- package/dist/chunk-Q7UAEFW5.js.map +0 -1
- package/dist/chunk-R2CVV7QT.js.map +0 -1
- package/dist/chunk-TRC63RSK.js.map +0 -1
- package/dist/chunk-ZFN5FWN2.js.map +0 -1
- package/dist/eval-5FZKYZ6O.js.map +0 -1
- package/dist/exploratory-test-SJ5HFI3L.js.map +0 -1
- package/dist/perf-3JOAXPHP.js.map +0 -1
- package/dist/property-IEKBXRVY.js.map +0 -1
- package/dist/sandbox-ZXDZTCCN.js.map +0 -1
- package/dist/skill-D4XFW6QI.js.map +0 -1
- package/dist/src-ZKVNVLXY.js.map +0 -1
- package/dist/test-suite-QHDUW5W5.js.map +0 -1
- package/dist/workflow-OQNH2FIS.js.map +0 -1
- /package/dist/{account-6YJAU53I.js.map → account-CZYZD2JS.js.map} +0 -0
- /package/dist/{alert-Z7V2ZUEW.js.map → alert-JQ4SDEB7.js.map} +0 -0
- /package/dist/{api-catalog-UEDTRM6E.js.map → api-catalog-IWQC35P2.js.map} +0 -0
- /package/dist/{api-key-V5GEPRRG.js.map → api-key-GUDXIIEA.js.map} +0 -0
- /package/dist/{attachment-M7VZ6GSE.js.map → attachment-CPZYOBUB.js.map} +0 -0
- /package/dist/{auth-DVTMWJKF.js.map → auth-DS6MBVEI.js.map} +0 -0
- /package/dist/{benchmark-KZJZYUTQ.js.map → benchmark-6HPCIQHD.js.map} +0 -0
- /package/dist/{blackcat-QJXYDE66.js.map → blackcat-V3L63WFE.js.map} +0 -0
- /package/dist/{chunk-FLDIN6VX.js.map → chunk-2E3STBHS.js.map} +0 -0
- /package/dist/{chunk-L4Y5PZUE.js.map → chunk-3LGCHNBC.js.map} +0 -0
- /package/dist/{chunk-2M4PZK6Q.js.map → chunk-56HFZHQM.js.map} +0 -0
- /package/dist/{chunk-RA2NRAWU.js.map → chunk-62EXS76C.js.map} +0 -0
- /package/dist/{chunk-4EWSONHO.js.map → chunk-BDOL622T.js.map} +0 -0
- /package/dist/{chunk-T6EQFICG.js.map → chunk-C3CXVX2B.js.map} +0 -0
- /package/dist/{chunk-MQQCUU5S.js.map → chunk-DEVD2WD2.js.map} +0 -0
- /package/dist/{chunk-JAIMLQOU.js.map → chunk-GCD4EHCD.js.map} +0 -0
- /package/dist/{chunk-7MRZWPVC.js.map → chunk-H6ZMKNP7.js.map} +0 -0
- /package/dist/{chunk-ZOPVBINJ.js.map → chunk-IEWAH7W3.js.map} +0 -0
- /package/dist/{chunk-ZO5MSM4Q.js.map → chunk-J2ZQULU3.js.map} +0 -0
- /package/dist/{chunk-IVWWYKAM.js.map → chunk-K2IDR6FR.js.map} +0 -0
- /package/dist/{chunk-QGP67JOK.js.map → chunk-KTZRI27M.js.map} +0 -0
- /package/dist/{chunk-3YNR6U6Q.js.map → chunk-UJSW72LG.js.map} +0 -0
- /package/dist/{chunk-G2SCV2CY.js.map → chunk-VACACCD6.js.map} +0 -0
- /package/dist/{chunk-CV22445U.js.map → chunk-VMAR67FF.js.map} +0 -0
- /package/dist/{chunk-QYHJUHL7.js.map → chunk-VMJ7TBVM.js.map} +0 -0
- /package/dist/{chunk-YACDH6MJ.js.map → chunk-XHEVDABB.js.map} +0 -0
- /package/dist/{chunk-7VBX2M4F.js.map → chunk-XHGF6VC6.js.map} +0 -0
- /package/dist/{credential-546ER7WQ.js.map → credential-GJW7LGYP.js.map} +0 -0
- /package/dist/{credential-template-BWMEBGBN.js.map → credential-template-UWBYKKWD.js.map} +0 -0
- /package/dist/{digest-NIVBDDI2.js.map → digest-XEHGCJM4.js.map} +0 -0
- /package/dist/{docs-AK4MDP6K.js.map → docs-KH4BCEQF.js.map} +0 -0
- /package/dist/{doctor-NCLA47EL.js.map → doctor-FOXXE5SK.js.map} +0 -0
- /package/dist/{environment-X3PV5IN2.js.map → environment-EBDPQTIS.js.map} +0 -0
- /package/dist/{exploration-2RVGIUKT.js.map → exploration-LCGKRGOQ.js.map} +0 -0
- /package/dist/{external-run-4NDVAHQB.js.map → external-run-2AJAI5O7.js.map} +0 -0
- /package/dist/{feature-flag-C4IRE724.js.map → feature-flag-P7N4WQIH.js.map} +0 -0
- /package/dist/{feedback-337OZCKC.js.map → feedback-LAT7TQ2T.js.map} +0 -0
- /package/dist/{flow-D7ZLBKCH.js.map → flow-NH2DC6AP.js.map} +0 -0
- /package/dist/{github-LKXYIALH.js.map → github-FCEKBLXI.js.map} +0 -0
- /package/dist/{init-GKEC6LPH.js.map → init-5U5EZOAW.js.map} +0 -0
- /package/dist/{install-K45SAT2V.js.map → install-X3UNVXKY.js.map} +0 -0
- /package/dist/{issues-2HMTQYWR.js.map → issues-4P6I3YQW.js.map} +0 -0
- /package/dist/{knobs-KUCGLO5Z.js.map → knobs-JKTWJ6ZG.js.map} +0 -0
- /package/dist/{landing-KAET2I73.js.map → landing-6AGLKI66.js.map} +0 -0
- /package/dist/{list-GDV4UYWV.js.map → list-TWP2RP33.js.map} +0 -0
- /package/dist/{local-NFOSJLLV.js.map → local-D75QE5TB.js.map} +0 -0
- /package/dist/{login-Y77HWROY.js.map → login-RBET4TIP.js.map} +0 -0
- /package/dist/{mcp-CPCFMU6B.js.map → mcp-562SUUMK.js.map} +0 -0
- /package/dist/{metrics-Y245ST63.js.map → metrics-4WF2GEPA.js.map} +0 -0
- /package/dist/{monitor-BUDWSC3S.js.map → monitor-WJXH54H2.js.map} +0 -0
- /package/dist/{product-CXL3YTMD.js.map → product-CYEQ7HOB.js.map} +0 -0
- /package/dist/{product-map-656BTU74.js.map → product-map-MSDLIFZY.js.map} +0 -0
- /package/dist/{prompts-3SZ7O5E6.js.map → prompts-ME53WPN4.js.map} +0 -0
- /package/dist/{proofs-4CSCCSNL.js.map → proofs-D3G6ZUFP.js.map} +0 -0
- /package/dist/{psql-M4CM6TSI.js.map → psql-EXAUDU3W.js.map} +0 -0
- /package/dist/{record-QP4TYZBS.js.map → record-EE7NGNKY.js.map} +0 -0
- /package/dist/{redis-KG47IGJV.js.map → redis-M4EYWKOJ.js.map} +0 -0
- /package/dist/{release-QHPSQULK.js.map → release-4KUWVWWC.js.map} +0 -0
- /package/dist/{runbook-YVBG2QK3.js.map → runbook-AHU77ANQ.js.map} +0 -0
- /package/dist/{scenarios-2SX2NUCD.js.map → scenarios-TU656T2B.js.map} +0 -0
- /package/dist/{schedule-P6F7MLXX.js.map → schedule-DXJI6SYO.js.map} +0 -0
- /package/dist/{session-SZMCZTPE.js.map → session-RUFTJHF4.js.map} +0 -0
- /package/dist/{slack-UDXTPOSW.js.map → slack-M3OKDVMY.js.map} +0 -0
- /package/dist/{spec-YCBBIV27.js.map → spec-5MXEBLYR.js.map} +0 -0
- /package/dist/{src-DEGBASCD.js.map → src-2X5OQRPJ.js.map} +0 -0
- /package/dist/{src-DY7GLRO2.js.map → src-72EFBA2R.js.map} +0 -0
- /package/dist/{src-NG7DRE5A.js.map → src-KH6WSBJV.js.map} +0 -0
- /package/dist/{start-ZYZSORPY.js.map → start-PDYBRB5T.js.map} +0 -0
- /package/dist/{status-ESIG6A7W.js.map → status-VMVPVCDA.js.map} +0 -0
- /package/dist/{tag-3K5Y25AR.js.map → tag-7KTDLPVU.js.map} +0 -0
- /package/dist/{task-JLNX7O3M.js.map → task-QLFYZNKR.js.map} +0 -0
- /package/dist/{teams-F4IU3EXE.js.map → teams-Y7BXCY6P.js.map} +0 -0
- /package/dist/{tickets-NBL5WACL.js.map → tickets-CQDJDNPY.js.map} +0 -0
- /package/dist/{trace-ZKYAI5JF.js.map → trace-QDORWXYX.js.map} +0 -0
- /package/dist/{triage-5NWCREUM.js.map → triage-GY7M3UGG.js.map} +0 -0
- /package/dist/{trigger-KXYYY5IR.js.map → trigger-DLFAORX4.js.map} +0 -0
- /package/dist/{update-check-Q2URVJLC.js.map → update-check-ES6XQ7OF.js.map} +0 -0
- /package/dist/{upgrade-4XSASC7U.js.map → upgrade-WKEOW5GS.js.map} +0 -0
- /package/dist/{usage-UY7VZYVY.js.map → usage-E6FDTR3W.js.map} +0 -0
- /package/dist/{utilities-53NXNLA7.js.map → utilities-4Z6YX3L5.js.map} +0 -0
- /package/dist/{visual-IJAT7X7D.js.map → visual-TA6LPVDJ.js.map} +0 -0
- /package/dist/{workflow-cache-FP6MKLVR.js.map → workflow-cache-MNLEMRMM.js.map} +0 -0
- /package/dist/{workflow-cache-convergence-resolve-HS5KO7US.js.map → workflow-cache-convergence-resolve-G5HJM6MF.js.map} +0 -0
- /package/dist/{workflow-debug-EM55H2QE.js.map → workflow-debug-TNBUGSBK.js.map} +0 -0
- /package/dist/{workflow-feedback-GNWNWVHH.js.map → workflow-feedback-G2ZXAUGI.js.map} +0 -0
- /package/dist/{workflow-fork-M5AQWST7.js.map → workflow-fork-6HHOMC2D.js.map} +0 -0
- /package/dist/{workflow-promotion-HYULZDYL.js.map → workflow-promotion-RG7L6JZT.js.map} +0 -0
- /package/dist/{workflow-proposals-EN327FSE.js.map → workflow-proposals-ZNF2F3UE.js.map} +0 -0
- /package/dist/{workflow-revisions-ZMTVNWRW.js.map → workflow-revisions-TP64Z6FO.js.map} +0 -0
- /package/dist/{workflow-status-FNAJG34W.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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
4
|
+
} from "./chunk-EWK44F6V.js";
|
|
5
5
|
import {
|
|
6
6
|
apiFetch
|
|
7
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
4
|
+
} from "./chunk-6ILWJFKY.js";
|
|
5
5
|
import {
|
|
6
6
|
printServedGuide
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-O7B2IYCZ.js";
|
|
8
8
|
import {
|
|
9
9
|
apiRequest,
|
|
10
10
|
getArgValues,
|
|
11
11
|
readStdin,
|
|
12
12
|
readTextOrFile
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-EWK44F6V.js";
|
|
14
14
|
import {
|
|
15
15
|
getArgValue,
|
|
16
16
|
hasFlag,
|
|
17
17
|
resolveConfig
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-4MFMPC5P.js";
|
|
19
19
|
import {
|
|
20
20
|
writeRawOutput
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-2OHYMT3A.js";
|
|
22
22
|
import {
|
|
23
23
|
formatProofNone
|
|
24
|
-
} from "./chunk-
|
|
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>
|
|
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>
|
|
41
|
-
"
|
|
42
|
-
|
|
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> [--
|
|
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
|
-
|
|
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-
|
|
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":[]}
|