@testmuai/kane-cli 0.8.6 → 0.8.7
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/dist/{ChatSurface-S2P7WMBI.js → ChatSurface-3PEXML4X.js} +1 -1
- package/dist/{ChromeProfilePicker-7DTJK2QW.js → ChromeProfilePicker-E3CZ52RH.js} +1 -1
- package/dist/{CliFeedbackPrompt-Y3OYZX54.js → CliFeedbackPrompt-BEVZRLQA.js} +1 -1
- package/dist/{CliUploadProgress-I3N5WDNJ.js → CliUploadProgress-V2FLLVR6.js} +1 -1
- package/dist/ConfigView-ZOGKVFQT.js +2 -0
- package/dist/EvidenceViewOffer-KWX27WNZ.js +2 -0
- package/dist/FolderPicker-EIKQSSF6.js +2 -0
- package/dist/{InfoBox-QBXPPMM2.js → InfoBox-4TNE7QMG.js} +1 -1
- package/dist/{LinksBox-L24KON4U.js → LinksBox-TXO5X5UD.js} +1 -1
- package/dist/{ProfilesView-H6XCTIXI.js → ProfilesView-S4YPEZEF.js} +1 -1
- package/dist/{ProjectPicker-F6JGF2B3.js → ProjectPicker-LWFX2QT2.js} +1 -1
- package/dist/{SaveSessionPrompt-QGO65DZN.js → SaveSessionPrompt-MJTCIQIZ.js} +1 -1
- package/dist/SingleShotApp-5LCIH6DQ.js +2 -0
- package/dist/{SummaryBox-OZIZQY4B.js → SummaryBox-UIVK3QDR.js} +1 -1
- package/dist/TestMdRunView-RE5GX5QX.js +2 -0
- package/dist/{TestrunEvidenceTable-A7WTTKTV.js → TestrunEvidenceTable-GYGVNCYW.js} +1 -1
- package/dist/{WhoamiView-EB5AV27X.js → WhoamiView-NRGMMLL4.js} +1 -1
- package/dist/{app-download-SQ4RDY3E.js → app-download-HTQOD3YF.js} +1 -1
- package/dist/{auth-TW24FZQF.js → auth-5URO2XJU.js} +1 -1
- package/dist/{binary-5LMQJ3CZ.js → binary-2U4YTTFS.js} +1 -1
- package/dist/{bind-SJ6DOVQ4.js → bind-NO4TMSHJ.js} +3 -3
- package/dist/{bootstrap-BTEXO6HX.js → bootstrap-UOEW3VZM.js} +1 -1
- package/dist/bridge-P2EBLXPY.js +2 -0
- package/dist/{changelog-JLSLSA3Y.js → changelog-7BPYLUDK.js} +1 -1
- package/dist/chat-committer-GUK6IBCL.js +2 -0
- package/dist/{chat-controller-R4THYYPU.js → chat-controller-6GUUMUVP.js} +1 -1
- package/dist/{chunk-IWM5EZC3.js → chunk-2RO2BWCZ.js} +2 -2
- package/dist/chunk-3BY7MX3D.js +8 -0
- package/dist/{chunk-USI2WMAK.js → chunk-3IM5QGVV.js} +1 -1
- package/dist/{chunk-PT7V5WDQ.js → chunk-3YKNJIVB.js} +1 -1
- package/dist/{chunk-TKYJTXWL.js → chunk-44PZPNXJ.js} +1 -1
- package/dist/{chunk-FYS5VIOG.js → chunk-46HYKID6.js} +2 -2
- package/dist/{chunk-E5S4BASB.js → chunk-4EFDEDTL.js} +1 -1
- package/dist/chunk-5ZV64NAG.js +5 -0
- package/dist/{chunk-QISE272H.js → chunk-6AUSG5SB.js} +1 -1
- package/dist/{chunk-ATWDQCDA.js → chunk-6YVVTYVO.js} +1 -1
- package/dist/{chunk-GC5U55MW.js → chunk-72J4V3DA.js} +1 -1
- package/dist/{chunk-ZLSWHCWO.js → chunk-76ILJPZF.js} +1 -1
- package/dist/{chunk-3UUPP5W3.js → chunk-7CU5EBC6.js} +1 -1
- package/dist/{chunk-KLTKEGDH.js → chunk-7EFG27IZ.js} +4 -4
- package/dist/{chunk-JCD6FP7A.js → chunk-7UCICMK7.js} +3 -3
- package/dist/{chunk-JN44V63O.js → chunk-7VAE7WXF.js} +2 -2
- package/dist/{chunk-TDS6LG6T.js → chunk-A66ZGHO2.js} +1 -1
- package/dist/chunk-AJXOJF2X.js +4 -0
- package/dist/{chunk-TZFT7R7B.js → chunk-AUERMBX5.js} +1 -1
- package/dist/{chunk-4NSP2NPT.js → chunk-B27X3C2E.js} +1 -1
- package/dist/chunk-B2KXIFZD.js +2 -0
- package/dist/{chunk-WMQJBEQP.js → chunk-BISBPWN3.js} +1 -1
- package/dist/{chunk-GELPKSLC.js → chunk-BPHQNTUD.js} +1 -1
- package/dist/{chunk-JFAFKHDX.js → chunk-BZAGVBCX.js} +1 -1
- package/dist/{chunk-2DCNCH32.js → chunk-C4OVX65Q.js} +1 -1
- package/dist/{chunk-SQGBFCFO.js → chunk-C5ZIKKIB.js} +1 -1
- package/dist/{chunk-DZCG7FFP.js → chunk-C765HUXU.js} +1 -1
- package/dist/{chunk-KQ2MYMOS.js → chunk-DJC6MLO4.js} +1 -1
- package/dist/{chunk-2R7KL7YG.js → chunk-DMOZM22N.js} +1 -1
- package/dist/{chunk-D4SRHIJ5.js → chunk-DSNB7EI6.js} +1 -1
- package/dist/{chunk-TQKIE7AX.js → chunk-DTBKKC2R.js} +1 -1
- package/dist/chunk-E5C3HUIY.js +2 -0
- package/dist/chunk-E5Q5CDOX.js +2 -0
- package/dist/{chunk-VOBXYDJW.js → chunk-E6AF53HZ.js} +42 -43
- package/dist/chunk-EU5ZH334.js +2 -0
- package/dist/{chunk-GFKCTYCA.js → chunk-F43KOMVB.js} +1 -1
- package/dist/{chunk-ZRKPZLLG.js → chunk-F7RR24BL.js} +1 -1
- package/dist/{chunk-MKSTP2XN.js → chunk-FVKLNQ4T.js} +2 -2
- package/dist/{chunk-ZGBSGZZM.js → chunk-GAO6ZMCT.js} +1 -1
- package/dist/chunk-GDB2V6QA.js +21 -0
- package/dist/{chunk-RX5TZZNQ.js → chunk-GJ6RJVXH.js} +1 -1
- package/dist/{chunk-XJILZ2WN.js → chunk-GYTZLUFV.js} +1 -1
- package/dist/{chunk-OYJBABRV.js → chunk-HAGJA7KG.js} +1 -1
- package/dist/{chunk-7KORP5FF.js → chunk-HEWWWMUN.js} +1 -1
- package/dist/{chunk-SQC4P2Q7.js → chunk-HHQ67JCU.js} +1 -1
- package/dist/chunk-HL4UXOHV.js +2 -0
- package/dist/{chunk-DUAXZYAD.js → chunk-HLXOYLZV.js} +3 -3
- package/dist/{chunk-Z35BUPZT.js → chunk-HO3T5LJH.js} +1 -1
- package/dist/{chunk-FJYDEWOA.js → chunk-IJABR5SX.js} +1 -1
- package/dist/chunk-ILKSL4PI.js +4 -0
- package/dist/{chunk-YZ45OEH3.js → chunk-IQBKCLLR.js} +1 -1
- package/dist/{chunk-KDXQNLVV.js → chunk-IRPAWAK7.js} +2 -2
- package/dist/{chunk-3LEVCW6R.js → chunk-K7VX6YIT.js} +1 -1
- package/dist/{chunk-7VZCXW74.js → chunk-LOMPRMG3.js} +1 -1
- package/dist/{chunk-5COGCNED.js → chunk-LRZXVDPY.js} +1 -1
- package/dist/chunk-LWZ7EIXX.js +2 -0
- package/dist/{chunk-YEQVJWEF.js → chunk-MROHDW4W.js} +1 -1
- package/dist/{chunk-OFW3ZVTP.js → chunk-N2N5T5JN.js} +1 -1
- package/dist/{chunk-TYI4MLFJ.js → chunk-NM6PEYED.js} +1 -1
- package/dist/{chunk-RZLD7TPG.js → chunk-NQFAZM2D.js} +1 -1
- package/dist/{chunk-EXERQHXV.js → chunk-OADHU5HL.js} +1 -1
- package/dist/{chunk-S66MCU2Y.js → chunk-OHD4CZXT.js} +1 -1
- package/dist/{chunk-SS5TOK2J.js → chunk-P4JUY54O.js} +1 -1
- package/dist/chunk-Q3S5EKX5.js +21 -0
- package/dist/{chunk-AFPHLUQ5.js → chunk-Q4CTSXDM.js} +1 -1
- package/dist/{chunk-A44G533S.js → chunk-QQ67Z4IW.js} +1 -1
- package/dist/{chunk-NT3UETTV.js → chunk-QZB7CBRO.js} +1 -1
- package/dist/{chunk-FUNKVREV.js → chunk-R2JRQD4I.js} +1 -1
- package/dist/{chunk-CLGC7VEO.js → chunk-SWXEBLKX.js} +1 -1
- package/dist/{chunk-IGJIDN4U.js → chunk-SZTUZZEA.js} +1 -1
- package/dist/{chunk-RDNKYRKY.js → chunk-T3DVIDBA.js} +1 -1
- package/dist/{chunk-B4Q6FMIP.js → chunk-T4LAHU57.js} +3 -3
- package/dist/{chunk-XY325HDJ.js → chunk-TKQSIKMR.js} +1 -1
- package/dist/{chunk-BN6AHQL7.js → chunk-TMFFHGCT.js} +4 -4
- package/dist/{chunk-FMUCZWS3.js → chunk-U35Y7SGB.js} +1 -1
- package/dist/{chunk-V444REBC.js → chunk-UASEGQ7B.js} +1 -1
- package/dist/{chunk-INK66XQS.js → chunk-UFYIQ4E3.js} +1 -1
- package/dist/chunk-UOLERTKE.js +2 -0
- package/dist/{chunk-VMCSRLRC.js → chunk-VHA7UNDW.js} +1 -1
- package/dist/{chunk-P3RKXL3V.js → chunk-VMRP44MN.js} +1 -1
- package/dist/{chunk-4ONGF4NT.js → chunk-VOXDZS4N.js} +1 -1
- package/dist/{chunk-6KPPGMO2.js → chunk-WNHLKDOT.js} +1 -1
- package/dist/chunk-X7R2JWOJ.js +4 -0
- package/dist/chunk-XAQ3Y63J.js +21 -0
- package/dist/chunk-YC2TFACE.js +5 -0
- package/dist/{chunk-AWD56KGX.js → chunk-YC6HYBLN.js} +1 -1
- package/dist/{chunk-AO3PBE2V.js → chunk-YDEK2FJQ.js} +1 -1
- package/dist/chunk-YGVY63PE.js +20 -0
- package/dist/chunk-YKYZKBMH.js +26 -0
- package/dist/{chunk-C4WTZSX4.js → chunk-YYSWJU6H.js} +1 -1
- package/dist/{chunk-VRVFPMCR.js → chunk-Z3EEMIVV.js} +1 -1
- package/dist/{chunk-YHTYPTDD.js → chunk-Z7HUW3L4.js} +1 -1
- package/dist/chunk-Z7S3IWUX.js +2 -0
- package/dist/{chunk-CLLQQPBZ.js → chunk-ZFRWVWUR.js} +1 -1
- package/dist/{chunk-DN3E6RT6.js → chunk-ZH2ROVHE.js} +2 -2
- package/dist/committer-JC6BIBNR.js +2 -0
- package/dist/{config-6TQIMTNB.js → config-XNDP425N.js} +1 -1
- package/dist/cover-cmd-HREOYWWD.js +3 -0
- package/dist/{credentials-ZSNM4BTD.js → credentials-ZTBWB3LK.js} +1 -1
- package/dist/{deps-bundle-D2ZC2SPT.js → deps-bundle-OHCYH5KL.js} +1 -1
- package/dist/{deps-resolve-VRBMFUTX.js → deps-resolve-K2NX2W3K.js} +1 -1
- package/dist/design-committer-IIHKNEYF.js +2 -0
- package/dist/device-ref-LAZWPRQN.js +2 -0
- package/dist/dispatch-JZWIFKRB.js +2 -0
- package/dist/doctor-XXOGVMAI.js +2 -0
- package/dist/dossier-2M62K2PA.js +3 -0
- package/dist/evidence-FN2SQB6Z.js +2 -0
- package/dist/evolve-cmd-WQB7E2B5.js +2 -0
- package/dist/{explain-UAAQWHYR.js → explain-AOZNHWMB.js} +1 -1
- package/dist/{explain-cmd-2TKO7GRW.js → explain-cmd-2SCD5T6U.js} +1 -1
- package/dist/{explain-cmd-EX24XKD6.js → explain-cmd-7VTWRROR.js} +1 -1
- package/dist/{extract-bind-TJ2STXV5.js → extract-bind-3YXY7ZU2.js} +3 -3
- package/dist/{extract-cmd-FLOYO6HL.js → extract-cmd-WGXEJ54C.js} +2 -2
- package/dist/{feeder-C3TOJPKK.js → feeder-GVZSWX6Q.js} +1 -1
- package/dist/gaps-cmd-MFZ52DC7.js +3 -0
- package/dist/{generate-headless-DBT4MKQT.js → generate-headless-PCNAJ2LS.js} +2 -2
- package/dist/index.js +137 -131
- package/dist/ingest-TTSDUMH5.js +2 -0
- package/dist/ingest-cmd-D2MD6EAK.js +2 -0
- package/dist/install-RHINEFR5.js +2 -0
- package/dist/{interactive-bind-7UDJY4CF.js → interactive-bind-ZFMG2JIX.js} +4 -4
- package/dist/lifecycle-cmd-5FRGYY3M.js +2 -0
- package/dist/list-cmd-DD4WYJSH.js +3 -0
- package/dist/{list-commands-DA4ZXOPJ.js → list-commands-64THS67Y.js} +1 -1
- package/dist/logical-ids-U2OUMYCP.js +2 -0
- package/dist/login-flow-B5J6JXQN.js +2 -0
- package/dist/{maintenance-cmd-6XSVO6FO.js → maintenance-cmd-7V44VGL4.js} +1 -1
- package/dist/{mobile-prompts-JS7GPVKS.js → mobile-prompts-RITBS32L.js} +1 -1
- package/dist/{persist-recorded-session-LE3LGFOS.js → persist-recorded-session-Z5SCYWXR.js} +1 -1
- package/dist/phase-seed-ATH337WF.js +2 -0
- package/dist/pipeline-HMFLLUZJ.js +2 -0
- package/dist/prepare-target-HOEFIKXN.js +2 -0
- package/dist/readmodel-UZETCXV6.js +2 -0
- package/dist/reconcile-cmd-Q7CBNPRX.js +2 -0
- package/dist/reconcile-deps-XEUZHUQX.js +4 -0
- package/dist/reconcile-engine-ES2INERY.js +2 -0
- package/dist/{recording-banner-YMKWR3M3.js → recording-banner-NLS7K2RV.js} +1 -1
- package/dist/records-XWF6KDQH.js +2 -0
- package/dist/registry-E5RSXYQJ.js +2 -0
- package/dist/{require-project-folder-3KS7KTME.js → require-project-folder-V4F74R4A.js} +1 -1
- package/dist/resolve-run-intent-WSOCGJUN.js +2 -0
- package/dist/{resolver-V5VP5FLT.js → resolver-7EAM4A6O.js} +1 -1
- package/dist/revert-2UCOMQ4J.js +2 -0
- package/dist/review-cmd-VN6VGUWJ.js +4 -0
- package/dist/run-45ODACZR.js +2 -0
- package/dist/run-ZYARNPAS.js +2 -0
- package/dist/{run-test-md-FO2RNNOD.js → run-test-md-CPGKD3DD.js} +2 -2
- package/dist/{sessions-cmd-ZZIZN2VB.js → sessions-cmd-ME7NM6ES.js} +1 -1
- package/dist/{skill-installer-W4TT5MST.js → skill-installer-WEV2M32J.js} +1 -1
- package/dist/{spawner-ZSYJQGQW.js → spawner-GG6YQB4A.js} +1 -1
- package/dist/{structured-answers-5EY2AZN7.js → structured-answers-2WOTULBQ.js} +1 -1
- package/dist/tcg-generate-DASCY23M.js +2 -0
- package/dist/{testmd-actions-NPILETCQ.js → testmd-actions-X6HEL5NH.js} +1 -1
- package/dist/token-refresh-ZTQFC3Q3.js +2 -0
- package/dist/{validate-basic-727KRHX6.js → validate-basic-QJL4DCKY.js} +1 -1
- package/dist/verdicts-CRNN765C.js +2 -0
- package/dist/{version-check-A2JQYRI2.js → version-check-KONSQ4M3.js} +1 -1
- package/dist/{view-cmd-KPJTP4DI.js → view-cmd-ZSMU4I4J.js} +1 -1
- package/dist/walk-session-X2N4XHLU.js +2 -0
- package/dist/{with-telemetry-HSD6CXDS.js → with-telemetry-Y6MVROKX.js} +1 -1
- package/package.json +11 -11
- package/dist/ConfigView-EOYCKYJS.js +0 -2
- package/dist/EvidenceViewOffer-AQ3KB3EN.js +0 -2
- package/dist/FolderPicker-RCHRYYC4.js +0 -2
- package/dist/SingleShotApp-AY3XFEYT.js +0 -2
- package/dist/TestMdRunView-RPW4MIJA.js +0 -2
- package/dist/bridge-GQJ35GTL.js +0 -2
- package/dist/chat-committer-ZWWCLJFD.js +0 -2
- package/dist/chunk-3Q6WAK6P.js +0 -2
- package/dist/chunk-B5QGIUJA.js +0 -26
- package/dist/chunk-BRTARADN.js +0 -4
- package/dist/chunk-CZUOGGUK.js +0 -2
- package/dist/chunk-DEZ7CXGM.js +0 -21
- package/dist/chunk-ESC7AOCX.js +0 -2
- package/dist/chunk-LN7233E2.js +0 -20
- package/dist/chunk-LQQXPY5B.js +0 -4
- package/dist/chunk-Q4V2GK5U.js +0 -2
- package/dist/chunk-QBG7XEGQ.js +0 -15
- package/dist/chunk-QQAAPFIR.js +0 -2
- package/dist/chunk-R5T4RLF5.js +0 -2
- package/dist/chunk-SORVX3KI.js +0 -7
- package/dist/chunk-TH47OOBV.js +0 -4
- package/dist/chunk-TRJUD3XJ.js +0 -5
- package/dist/chunk-VAYBKR76.js +0 -4
- package/dist/chunk-XQFITNA3.js +0 -2
- package/dist/chunk-ZSXDZI56.js +0 -20
- package/dist/committer-SWEWEYNX.js +0 -2
- package/dist/cover-cmd-7JILZJUK.js +0 -3
- package/dist/design-committer-VYT6NU3T.js +0 -2
- package/dist/dispatch-2PBSJ7YW.js +0 -2
- package/dist/doctor-OWRRDA4Z.js +0 -2
- package/dist/dossier-KTLTGT2X.js +0 -3
- package/dist/evidence-NDAKCCHQ.js +0 -2
- package/dist/evolve-cmd-DIA5EWUT.js +0 -2
- package/dist/gaps-cmd-3ZX3PZF4.js +0 -3
- package/dist/ingest-JO5NJENZ.js +0 -2
- package/dist/ingest-cmd-T6HM3AHK.js +0 -2
- package/dist/install-NIVU4XVS.js +0 -2
- package/dist/lifecycle-cmd-O2324GN6.js +0 -2
- package/dist/list-cmd-N4KMA34H.js +0 -3
- package/dist/logical-ids-TEBCQJGO.js +0 -2
- package/dist/login-flow-NHBJVDW6.js +0 -2
- package/dist/phase-seed-DIRETNU6.js +0 -2
- package/dist/pipeline-MTAZDCZR.js +0 -2
- package/dist/prepare-target-YK2DLDWB.js +0 -2
- package/dist/readmodel-XOYGGQ3S.js +0 -2
- package/dist/reconcile-cmd-CYRYVS5B.js +0 -2
- package/dist/reconcile-deps-FYXRAMF2.js +0 -4
- package/dist/reconcile-engine-6AT6EVGS.js +0 -2
- package/dist/records-IOZTZUZV.js +0 -2
- package/dist/registry-V45ZQ6Q5.js +0 -2
- package/dist/resolve-run-intent-W32G6WM6.js +0 -2
- package/dist/revert-NQ7GEVSE.js +0 -2
- package/dist/review-cmd-DQRKQUMG.js +0 -4
- package/dist/run-26IR3CKX.js +0 -2
- package/dist/run-5IYI2TJI.js +0 -2
- package/dist/tcg-generate-ONLV5GXG.js +0 -2
- package/dist/token-refresh-G2CSTY4B.js +0 -2
- package/dist/types-O23GN2YM.js +0 -2
- package/dist/verdicts-TDJLJJ3F.js +0 -2
- package/dist/walk-session-HB3OOWVR.js +0 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as p,c as E,d as j,e as y,f as M,g as C,i as A,l as D,m as F,q as T,s as $,t as O}from"./chunk-
|
|
2
|
+
import{b as p,c as E,d as j,e as y,f as M,g as C,i as A,l as D,m as F,q as T,s as $,t as O}from"./chunk-Q3S5EKX5.js";import{c as H,d as z}from"./chunk-2YQ6TW77.js";import{a as k}from"./chunk-X7R2JWOJ.js";import{p as B,q as R}from"./chunk-56PAQAX5.js";import{a as P}from"./chunk-N2N5T5JN.js";import{e as q}from"./chunk-UR6MHSHU.js";import{existsSync as f,mkdirSync as V,readFileSync as Z,renameSync as N,writeFileSync as K}from"fs";import{join as Q}from"path";function fe(e){D(p(e));let t=p(e);if(!f(t))return;let n=Q(t,"meta.json"),r=y(e);if(f(n)&&!f(r))try{V(j(e),{recursive:!0}),N(n,r)}catch(o){process.stderr.write(`warn: meta.json migration failed: ${o.message}
|
|
3
3
|
`)}let i=C(e);if(f(i)){let o="python";try{let c=new k().load();c.code_export?.language&&(o=c.code_export.language)}catch{}let a=M(e,"playwright",o);if(!f(a))try{N(i,a)}catch(c){process.stderr.write(`warn: generated-code migration failed: ${c.message}
|
|
4
4
|
`)}}if(f(r))try{let o=JSON.parse(Z(r,"utf8"));"md5sum"in o&&(delete o.md5sum,K(r,JSON.stringify(o,null,2)+`
|
|
5
5
|
`,"utf8"))}catch(o){process.stderr.write(`warn: meta.json md5sum strip failed: ${o.message}
|
|
6
|
-
`)}}async function ye(e){if(!e.isInteractive)return{recovered:!1};if(W(e.creds))return{recovered:!1};let{SingleShotApp:t}=await import("./SingleShotApp-
|
|
6
|
+
`)}}async function ye(e){if(!e.isInteractive)return{recovered:!1};if(W(e.creds))return{recovered:!1};let{SingleShotApp:t}=await import("./SingleShotApp-5LCIH6DQ.js"),{ScrollbackProvider:n}=await import("./scrollback-JLPJR25X.js"),{render:r}=await import("./build-JIKYOZUH.js"),i=await import("./react-QWOAB3TB.js"),o={current:null},a={current:!1},{waitUntilExit:c,unmount:l}=r(i.default.createElement(n,null,i.default.createElement(t,{resultRef:o,mode:"login",loginCompleteRef:a})),{exitOnCtrlC:!1});R(()=>l()),await c();try{process.stdin.setRawMode?.(!1)}catch{}return process.stdout.write("\x1B[?25h"),a.current?{recovered:!0}:(B(0,"Startup gate cancelled"),{recovered:!1})}function W(e){let t=e.getActiveProfile(),n=e.getDefaultEnv();if(!t||!!!(e.loadBasicAuth(t,n)||e.loadCredentials(t,n)))return!1;let i=e.loadProfileConfig(t,n)??{};return!!i.project_id&&!!i.folder_id}var J=q(H(),1);import{existsSync as v,readFileSync as U,readdirSync as X,statSync as Y}from"fs";import{dirname as ee,isAbsolute as te,join as g,relative as x,resolve as re,sep as h}from"path";import{createHash as ne}from"crypto";var S="testmd-bundle.json",d=class extends Error{constructor(t){super(t),this.name="BundleUsageError"}},_=e=>e.split(h).join("/");function I(e){if(!v(e))return[];let t=[];for(let n of X(e).sort()){let r=g(e,n);Y(r).isDirectory()?t.push(...I(r)):t.push(r)}return t}function se(e){let t=e.map(r=>ee(r).split(h)),n=t[0];for(let r of t.slice(1)){let i=0;for(;i<n.length&&i<r.length&&n[i]===r[i];)i++;n=n.slice(0,i)}return n.join(h)||h}function ie(e){for(let t of e){let n=F(t,U(t,"utf8"));for(let r of n.steps)if(r.body.kind==="import_ref"&&te(r.body.path))throw new d(`bundle sync: absolute @import is not portable after unzip: ${t} step ${r.index} (@import ${r.body.path})`)}}function G(e){let t=re(e),n=T(t);if(!n?.commit_id||!n?.test_id)throw new d(`bundle sync: ${t} is not authored \u2014 run \`kane-cli testmd run\` first (output-<stem>/.internal/meta.json needs commit_id + test_id)`);let r;try{r=O(t)}catch(s){throw s instanceof $?new d(`bundle sync: ${s.message}`):s}let i=[t];for(let s of r.steps)for(let u of s.trace.slice(1))i.includes(u.file)||i.push(u.file);ie(i);let o=[];for(let s of r.unitFiles){if(s.file===t)continue;let u=p(s.file);o.includes(u)||o.push(u)}let a=[...i],c=s=>{v(s)&&a.push(s)};c(E(t)),a.push(y(t)),c(g(p(t),".internal","execution.json")),a.push(...I(A(t)));for(let s of o)c(g(s,"Result.md")),a.push(...I(g(s,".internal","steps")));let l=se(a);if(v(g(l,S)))throw new d(`bundle sync: a real file named ${S} exists at the zip root (${l}) \u2014 it would collide with the generated manifest`);let b=a.map(s=>{let u=U(s);return{abs:s,rel:_(x(l,s)),sha256:ne("sha256").update(u).digest("hex"),bytes:u.length}}).sort((s,u)=>s.rel<u.rel?-1:1),m=_(x(l,t)),L={schema_version:2,entry:m,commit_id:n.commit_id,test_id:n.test_id,testcase_id:n.testcase_id??null,project_id:n.project_id??null,folder_id:n.folder_id??null,org_id:n.org_id??null,created_at:new Date().toISOString(),producer:{name:"kane-cli",version:P},files:b.map(s=>({path:s.rel,sha256:s.sha256,bytes:s.bytes})),units:r.unitFiles.filter(s=>s.file!==t).map(s=>({path:_(x(l,s.file)),kind:s.kind}))};return{zipRoot:l,entry:m,files:b,manifest:L}}var w=e=>e instanceof Error?e.message:String(e);function oe(e){return new Promise((t,n)=>{let r=(0,J.default)("zip",{zlib:{level:6}}),i=[];r.on("data",o=>i.push(o)),r.on("error",n),r.on("end",()=>t(Buffer.concat(i))),r.append(JSON.stringify(e.manifest,null,2)+`
|
|
7
7
|
`,{name:S});for(let o of e.files)r.file(o.abs,{name:o.rel});r.finalize()})}async function ae(e){let{plan:t,controller:n,testId:r,sessionId:i,commitId:o}=e,a;try{a=await oe(t)}catch(l){return{ok:!1,stage:"zip",error:w(l)}}let c;try{let l={key:"testmd",content_type:"application/zip",filename:`${o}-testmd.zip`},m=(await n.getPresignedUrls(r,i,[l])).urls?.testmd?.upload_url;if(!m)return{ok:!1,stage:"presign",error:"presign response missing testmd upload_url"};c=m}catch(l){return{ok:!1,stage:"presign",error:w(l)}}try{await z(c,a,"application/zip")}catch(l){return{ok:!1,stage:"upload",error:w(l)}}return{ok:!0,bytes:a.length}}async function Ee(e){let t;try{t=G(e.sourcePath)}catch(n){return n instanceof d?{ok:!1,stage:"collect",error:n.message}:{ok:!1,stage:"collect",error:w(n)}}return ae({...e,plan:t})}function je(e){return e.shouldUploadPipeline&&e.uploadSucceeded&&!!e.metaCommitId&&!!e.metaTestId}export{fe as a,ye as b,G as c,Ee as d,je as e};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as k}from"./chunk-
|
|
2
|
+
import{a as k}from"./chunk-T3DVIDBA.js";import{x as u}from"./chunk-N2N5T5JN.js";import{a as f}from"./chunk-HCBYKLMW.js";import{a as m,b as s,k as b}from"./chunk-C44QQJR4.js";import{e as p}from"./chunk-UR6MHSHU.js";function B(t){let e=t;return e=e.replace(/@TS\{([^}]+)\}/g,"@S{$1}"),e=e.replace(/@TS-(\d+)/g,(o,i)=>`@S${parseInt(i,10)}.C1`),e=e.replace(/@TS(\d+)/g,(o,i)=>`@S${parseInt(i,10)}`),e=e.replace(/\\n/g,`
|
|
3
3
|
`),e}var c=p(f(),1),S=t=>t!==void 0&&/[A-Za-z0-9]/.test(t);function x(t){let e=[],o="",i=()=>{o&&(e.push({text:o}),o="")},d=(a,l,r)=>(a===0||!S(t[a-1]))&&(l+r>=t.length||!S(t[l+r])),n=0;for(;n<t.length;){let a=t.slice(n,n+2),l=t[n];if(a==="**"||a==="__"){let r=t.indexOf(a,n+2);if(r!==-1&&r>n+2&&(a==="**"||d(n,r,2))){i(),e.push({text:t.slice(n+2,r),bold:!0}),n=r+2;continue}}if(l==="`"){let r=t.indexOf("`",n+1);if(r!==-1&&r>n+1){i(),e.push({text:t.slice(n+1,r),code:!0}),n=r+1;continue}}if(l==="*"||l==="_"){let r=t.indexOf(l,n+1);if(r!==-1&&r>n+1&&(l==="*"||d(n,r,1))){i(),e.push({text:t.slice(n+1,r),italic:!0}),n=r+1;continue}}o+=l,n+=1}return i(),e.length===0&&e.push({text:""}),e}function h(t){return t.map((e,o)=>(0,c.jsx)(s,{bold:e.bold,italic:e.italic,color:e.code?u.dim:void 0,children:e.text},o))}function T(t){return t.split(`
|
|
4
4
|
`).map(e=>{if(e.trim()==="")return{kind:"blank"};let o=e.match(/^\s*[-*+]\s+(.*)$/);if(o)return{kind:"bullet",segs:x(o[1])};let i=e.match(/^\s*(\d+)\.\s+(.*)$/);if(i)return{kind:"numbered",n:i[1],segs:x(i[2])};let d=e.match(/^#{1,6}\s+(.*)$/);return d?{kind:"heading",segs:x(d[1])}:{kind:"para",segs:x(e)}})}function R(t,e,o=""){switch(t.kind){case"blank":return(0,c.jsx)(s,{children:o||" "},e);case"heading":return(0,c.jsxs)(s,{bold:!0,children:[o,h(t.segs)]},e);case"bullet":return(0,c.jsx)(m,{marginLeft:1,children:(0,c.jsxs)(s,{children:[o,"\u2022 ",h(t.segs)]})},e);case"numbered":return(0,c.jsx)(m,{marginLeft:1,children:(0,c.jsxs)(s,{children:[o,`${t.n}. `,h(t.segs)]})},e);default:return(0,c.jsxs)(s,{children:[o,h(t.segs)]},e)}}function $({text:t,accent:e=u.generateAccent}){let o=T(B(t)),{stdout:i}=b(),d=i?.columns??80;return(0,c.jsxs)(m,{marginBottom:1,children:[(0,c.jsx)(m,{width:2,flexShrink:0,children:(0,c.jsx)(s,{color:e,children:"\u2503"})}),(0,c.jsx)(m,{flexDirection:"column",width:d-2,children:o.map((n,a)=>R(n,a))})]})}var g=p(f(),1),I=5;function C({thinking:t,expanded:e,thinkingDone:o,maxLines:i=I}){if(!e)return(0,g.jsxs)(m,{paddingX:1,children:[(0,g.jsx)(s,{color:u.dim,children:o?"\u2237 thinking complete ":"\u2237 thinking\u2026 "}),(0,g.jsx)(s,{color:u.muted,children:o?"(ctrl+t to view)":"(ctrl+t to show)"})]});let d=t.split(`
|
|
5
5
|
`),n=Math.max(0,d.length-i),a=n>0?d.slice(-i).join(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as v,b as A,d as G}from"./chunk-OS4VSIHT.js";import{b as x}from"./chunk-
|
|
2
|
+
import{a as v,b as A,d as G}from"./chunk-OS4VSIHT.js";import{b as x}from"./chunk-YC2TFACE.js";import{a as S}from"./chunk-JZ26R6UL.js";import{a as U,b as C}from"./chunk-UJZZDPDY.js";import{a as w}from"./chunk-BZAGVBCX.js";import{C as E,D as $}from"./chunk-AJXOJF2X.js";import{d,e as m}from"./chunk-WXHQYYD5.js";var k=new Set([d.USECASE,d.SCENARIO,d.AC,d.TEST]);function b(e,t){return!e.superseded.has(t)&&e.trust.get(t)!=="archived"}function h(e,t,n){let s=e.edgesFrom(t).find(o=>o.type===n);return s?e.tipOf(s.dst):null}function O(e,t,n){if(n===d.USECASE)return t;if(n===d.SCENARIO)return h(e,t,m.BELONGS_TO);if(n===d.AC){let s=h(e,t,m.SCOPED_TO);return s?e.nodeLabel.get(s)===d.USECASE?s:h(e,s,m.BELONGS_TO):null}if(n===d.TEST){let s=h(e,t,m.AUTOMATES);return s?h(e,s,m.BELONGS_TO):null}return null}function L(e,t){let n=e.nameOf.get(t);if(n)return n;for(let[s,o]of e.names)if(e.tipOf(o)===t)return s;return t}function F(e,t){return{ucTip:t,display:L(e,t),seamRef:e.nameOf.get(t)??t}}function N(e,t){let n=e.resolve(t);if(!n)return{ok:!1,message:`unknown ref '${t}' \u2014 no test/scenario/ac/use-case by that id or cid`};let s=n.tip,o=e.nodeLabel.get(s);if(!o||!k.has(o))return{ok:!1,message:`'${t}' is a ${o??"missing node"} \u2014 evolve takes a test, scenario, acceptance criterion, or use-case`};let a=O(e,s,o);return!a||e.nodeLabel.get(a)!==d.USECASE?{ok:!1,message:`cannot resolve '${t}' to a parent use-case \u2014 its ${o} chain is broken`}:e.superseded.has(a)?{ok:!1,message:`use-case ${L(e,a)} was removed \u2014 nothing to evolve`}:{ok:!0,target:F(e,a)}}function Z(e,t){return D(e,t)}function D(e,t){let n=[];for(let{cid:o}of e.byLabel(d.SCENARIO)){if(!b(e,o)||!e.edgesFrom(o).some(r=>r.type===m.BELONGS_TO&&e.tipOf(r.dst)===t))continue;let a=e.edgesInto(o).filter(r=>r.type===m.AUTOMATES&&b(e,r.src));if(a.length===0)n.push({scenario:o,test:null});else for(let r of a)n.push({scenario:o,test:r.src})}let s=new Map;for(let{cid:o}of e.byLabel(d.AC)){if(!b(e,o)||O(e,o,d.AC)!==t)continue;let a=e.edgesInto(o).filter(r=>r.type===m.VERIFIES&&b(e,r.src)).map(r=>r.src).sort();s.set(o,a)}return{pairs:n,verifies:s}}function B(e,t){let n=r=>`${r.scenario}\0${r.test??""}`,s=new Set(e.pairs.map(n)),o=new Set(t.pairs.map(n)),a=[];for(let[r,i]of e.verifies){let u=t.verifies.get(r);u&&(i.length===u.length&&i.every((l,g)=>l===u[g])||a.push({ac:r,before:i,after:u}))}return{superseded:e.pairs.filter(r=>!o.has(n(r))),minted:t.pairs.filter(r=>!s.has(n(r))),retained:t.pairs.filter(r=>s.has(n(r))),moves:a}}function _(e,t,n,s,o){let a=i=>t.nameOf.get(i)??i,r=i=>` - ${a(i.scenario)} \xB7 ${i.test?a(i.test):"(no test)"}`;e.out(`evolved: use-case ${n} \u2014 design record ${s.before} \u2192 ${s.after}`),e.out(` superseded ${o.superseded.length} pair(s)`);for(let i of o.superseded)e.out(r(i));e.out(` minted ${o.minted.length} pair(s)`);for(let i of o.minted)e.out(r(i));e.out(` retained ${o.retained.length} pair(s)`);for(let i of o.retained)e.out(r(i));if(o.moves.length===0)e.out(" verifies none moved");else{e.out(" verifies moved:");for(let i of o.moves){let u=l=>l.length>0?l.map(a).join(" + "):"(none)";e.out(` - ${a(i.ac)}: ${u(i.before)} \u2192 ${u(i.after)}`)}}}async function R(e,t,n,s,o,a,r){let i=E(e),u=S(i,t.ucTip);if(!u)return a==="batch"?(s.out(`note: ${t.display} has no design output \u2014 nothing to evolve; run kane-cli design tests --use-case ${t.display} first`),{code:0,outcome:"no-design"}):(v(s,`nothing to evolve \u2014 run kane-cli design tests --use-case ${t.display} first (no design output)`),{code:2,outcome:"no-design"});let l=D(i,t.ucTip),g=[`evolve ${t.display}`,` re-designs use-case ${t.display}`,` affects ${l.pairs.length} pair(s)`,...n.because?[` because ${n.because}`]:[]];if(n.yes)for(let y of g)s.out(y);else{for(let I of g)s.out(I);if(!await s.confirm(`proceed with the re-design of ${t.display}?`))return s.out(a==="batch"?`skipped ${t.display}`:"declined \u2014 nothing evolved"),{code:0,outcome:"declined"}}let p=x(e,i,t.ucTip,n.because),c=await U(r,{verb:"evolve",subject:t.display},()=>o(t.seamRef,{yes:!!n.yes,...n.mode?{mode:n.mode}:{},...n.because?{because:n.because}:{},...p!==void 0?{changeDelta:p.change_delta,priorDesign:p.prior_design}:{}}),y=>({ok:y===0,exitCode:y}));if(c===3)return s.out(`design session for ${t.display} paused \u2014 resume with \`kane-cli design tests --resume\`, then re-run evolve for the diff`),{code:c,outcome:"paused"};if(c!==0)return v(s,`design run for ${t.display} ended with exit code ${c} \u2014 no diff to report`),{code:c,outcome:"failed"};let f=E(e),T=f.tipOf(t.ucTip),P=S(f,T)?.seq;return _(s,f,t.display,{before:u.seq,after:P??"?"},B(l,D(f,T))),{code:0,outcome:"evolved"}}function j(e){let t=new Map,n=0;for(let{cid:o,state:a}of e.staleList()){if(a==="superseded")continue;let r=e.nodeLabel.get(o);if(!r||!k.has(r)||!b(e,o)||!$(e,o))continue;let i=O(e,o,r);!i||e.nodeLabel.get(i)!==d.USECASE||e.superseded.has(i)||(n++,t.has(i)||t.set(i,F(e,i)))}return{targets:[...t.values()].sort((o,a)=>o.display<a.display?-1:o.display>a.display?1:0),staleCount:n}}function M(e,t){for(let{cid:n,state:s}of e.staleList()){if(s==="superseded")continue;let o=e.nodeLabel.get(n);if(!(!o||!k.has(o)||!b(e,n))&&$(e,n)&&O(e,n,o)===t)return!0}return!1}async function q(e,t,n,s={},o=process.cwd()){if(e&&t.fromStale)return v(n,"pass a <ref> OR --from-stale, not both"),2;if(!e&&!t.fromStale)return v(n,"evolve needs a <ref> or --from-stale"),2;let a=A(o,n);if(!a)return 2;let r=s.runDesignForUc??Y,i=s.onChild??(n.isTTY?V(n):void 0);n.out(`evolving ${e??"stale use-cases"}: reading the graph\u2026`);let u=E(a),l,g=null;if(e){let c=N(u,e);if(!c.ok)return v(n,c.message),2;if(!t.because&&S(u,c.target.ucTip)&&!M(u,c.target.ucTip))return v(n,`nothing changed underneath ${e} \u2014 its sources and requirements are current; use --because "<reason>" to re-design anyway`),2;l=[c.target]}else{let{targets:c,staleCount:f}=j(u);if(c.length===0)return n.out("nothing stale \u2014 nothing to evolve"),0;g=`from-stale: ${f} stale node(s) \u2192 ${c.length} use-case(s)`,l=c}if(!t.yes&&!n.isTTY)return v(n,"evolve needs a TTY \u2014 the blast-radius confirm is the point; headless evolution rides `kane-cli maintain reconcile`"),2;if(g&&n.out(g),e){let c=await R(a,l[0],t,n,r,"single",i);return c.outcome==="evolved"&&t.because&&w(a,{ts:new Date().toISOString(),command:"evolve",id:e,verdict:"gap-resolved-evolve",polarity:"preference",by:{kind:"human",id:process.env.USER??"operator"},target:e,reason:t.because}),c.code}let p=0;for(let c of l){let{code:f}=await R(a,c,t,n,r,"batch",i);f!==0&&p===0&&(p=f)}return p}function V(e){let t="",n="evolve";return s=>{s.kind==="start"?(t=s.subject,n=s.verb,e.out(`\u25CF ${C(s.verb).ing} ${s.subject}`)):s.kind==="end"&&e.out(s.ok?`\u25CF ${C(n).ed} ${t} \u2014 ${s.durS}s`:`\u25CF ${n} failed \u2014 ${s.exitCode!=null?`exited ${s.exitCode}`:"error"}${s.fixCmd?` \xB7 ${s.fixCmd}`:""}`)}}var Y=async(e,t)=>{let{designTestsCommand:n}=await import("./bind-NO4TMSHJ.js"),s=()=>n({useCase:e,force:!0,...t.mode?{mode:t.mode}:t.yes?{mode:"override"}:{},...t.because?{because:t.because}:{},...t.changeDelta!==void 0?{changeDelta:t.changeDelta}:{},...t.priorDesign!==void 0?{priorDesign:t.priorDesign}:{}});if(t.mode!=="agent")return s();let o=process.stdout.write;process.stdout.write=((...a)=>!0);try{return await s()}finally{process.stdout.write=o}};async function ee(e,t){return q(e,t,G(),{})}export{N as a,Z as b,R as c,j as d,q as e,Y as f,ee as g};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as t}from"./chunk-
|
|
2
|
+
import{a as t}from"./chunk-R2JRQD4I.js";async function l(e){let o=e.credentials.expires_at,i=e.thresholdSeconds??300;if(o-Date.now()/1e3>=i)return null;let r=e.creds.loadClient(e.profile,e.env);if(!r)return null;let n=await new t(e.env).refreshToken(e.credentials.refresh_token,r.client_id),s=Math.floor(Date.now()/1e3)+n.expires_in;return e.creds.saveCredentials(e.profile,e.env,{access_token:n.access_token,refresh_token:n.refresh_token,expires_at:s,scope:n.scope}),{accessToken:n.access_token,refreshToken:n.refresh_token,expiresAt:s,scope:n.scope}}export{l as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as Ee}from"./chunk-Q4CTSXDM.js";import{a as me,b as he,d as _e,e as be}from"./chunk-BB2W35TW.js";import{a as le}from"./chunk-DNNZ353O.js";import{B as pe,c as ae,h as ue,o as ge}from"./chunk-AJXOJF2X.js";import{a as fe}from"./chunk-B2KXIFZD.js";import{a as re,b as K}from"./chunk-CUM23TLF.js";import{g as ce,j as de}from"./chunk-HLXOYLZV.js";import{d as g,e as p,f as se,g as ie,h as oe}from"./chunk-WXHQYYD5.js";var x=o=>({record:null,errors:o,minted:{},logicalIds:{},superseded:[],warnings:[],finalizedTests:{}});function w(o){return o.toLowerCase().trim().replace(/\s+/g," ")}function Oe(o,A){let t=o.resolve(A);if(!t||o.nodeLabel.get(t.cid)!==g.USECASE||t.superseded)return[];let h=new Set;for(let{cid:f}of o.byLabel(g.SCENARIO))if(!o.superseded.has(f)&&o.edgesFrom(f).some(T=>T.type===p.BELONGS_TO&&o.tipOf(T.dst)===t.cid)){h.add(f);for(let T of o.edgesInto(f))T.type!==p.AUTOMATES||o.superseded.has(T.src)||h.add(T.src)}return[...h]}function Fe(o){let{contextDir:A,graph:t,sections:h,by:f}=o,T=o.engine??"design@1",J=ce(A);if(t.latestHash!==J)return x([{code:"STALE_BASIS",detail:`graph opened at ${String(t.latestHash)} but chain head is ${String(J)} \u2014 re-open and retry`}]);let L=t.resolve(o.ucRef);if(!L||t.nodeLabel.get(L.cid)!==g.USECASE||L.superseded)return x([{code:"UNKNOWN_UC",detail:`${o.ucRef} is not a live use-case`}]);let E=L.cid,_=[],W=/^design@(\d+)$/.exec(o.templateVersion??""),Se=W!==null&&Number.parseInt(W[1],10)>=3,Q=new Map,$e=(e,s)=>{let n=Q.get(e.source_cid);if(n===void 0){let r=le(o.contextDir,t,e.source_cid);n=r?Ee(r.toString("utf8")):null,Q.set(e.source_cid,n)}if(n===null)return _.push({code:"CITE_UNVERIFIED",detail:`${s}: source ${e.source_id} (${e.source_cid.slice(0,19)}) has no citable text to verify against`}),!1;let d=ae(t.mediaOf(e.source_cid),e,n);if(d.length>0){for(let r of d)_.push({code:"CITE_UNVERIFIED",detail:`${s}: ${r.code}: ${r.detail}`});return!1}return!0},k=[],F=[],v=[],U=[],P=[],S={},D={},j={},R=[],q=[],X=new Set,M=[],B=new Set,I=new Set,V=[];{let e=o.forceScope??(o.force?Oe(t,o.ucRef):[]),s=new Set;o.sections.scenarios?.length&&s.add(g.SCENARIO),o.sections.tests?.length&&s.add(g.TEST);for(let n of e)t.superseded.has(n)||(s.has(t.nodeLabel.get(n)??"")?I.add(n):V.push(n))}let N=new Set,z=e=>!t.superseded.has(e)&&(!I.has(e)||N.has(e)),O=(e,s,n)=>{if(S[e])return S[e];let d=t.resolve(e),r=d?z(d.cid)?d.cid:t.tipOf(d.cid):null;return!d||!r||!z(r)?(_.push({code:"UNKNOWN_REF",detail:`${s}: '${e}' is neither in this payload nor a live committed node`}),null):n&&t.nodeLabel.get(r)!==n?(_.push({code:"ILLEGAL_EDGE",detail:`${s}: '${e}' is a ${t.nodeLabel.get(r)}, expected ${n}`}),null):r},ye=(e,s,n,d)=>{if(t.nameOf.has(s)){D[d]=t.nameOf.get(s);return}let r=pe(e,m=>X.has(m),t.names.keys());r!==null&&(X.add(r),U.push({cid:s,slug:r,by:f}),D[d]=r)},G=(e,s,n,d)=>{for(let m of se(e,n))_.push({code:m.code,detail:`${s}: ${m.detail}`});let r=re(e,n);return t.hasNode(r)&&!t.superseded.has(r)?(I.has(r)&&N.add(r),S[s]=r,r):(k.push({cid:r,label:e,content:n}),S[s]=r,ye(e,r,d,s),r)},y=(e,s,n,d,r)=>{let m=K(e,s,n,d);if(t.edgesFrom(s).some(i=>i.ecid===m&&!t.superseded.has(i.ecid))){e===p.AUTOMATES&&B.add(n);return}if(t.superseded.has(m)){_.push({code:"EDGE_RETRACTED",detail:`${r}: this ${e} edge was retracted (${m}) \u2014 retraction is terminal for commits. Add a NEW relationship (different endpoint or props), redesign, or revert the retracting record`});return}let C=t.nodeLabel.get(s)??k.find(i=>i.cid===s)?.label??"(unknown)",u=t.nodeLabel.get(n)??k.find(i=>i.cid===n)?.label??"(unknown)";for(let i of oe(e,C,u,d))_.push({code:i.code,detail:`${r}: ${i.detail}`});let l=ue(t,e,s,n,M);if(l){_.push({code:l.code,detail:`${r}: ${l.detail}`});return}if(e===p.BELONGS_TO||e===p.SCOPED_TO){let i=fe(t,{type:e,src:s,dst:n},{pending:M,retracted:new Set(v.flatMap(c=>c.kind==="edge"?[c.ecid]:[])),freed:new Set([...I].filter(c=>!N.has(c)))},r);if(i){_.push(i);return}}if(e===p.AUTOMATES){if(B.has(n)){_.push({code:"CARDINALITY_VIOLATION",detail:`${r}: two automates onto ${n} in one record (strict 1:1)`});return}if(B.add(n),!I.has(n)||N.has(n)){let i=b=>I.has(b)&&!N.has(b);if(t.edgesFrom(s).some(b=>b.type===p.AUTOMATES&&b.dst!==n&&!t.superseded.has(b.dst)&&!i(b.dst))&&t.hasNode(s)){_.push({code:"CARDINALITY_VIOLATION",detail:`${r}: automates from ${s} already has a live edge \u2014 supersede it first`});return}if(t.edgesInto(n).some(b=>b.type===p.AUTOMATES&&b.src!==s&&!t.superseded.has(b.src)&&!i(b.src))){_.push({code:"CARDINALITY_VIOLATION",detail:`${r}: automates onto ${n} already has a live edge \u2014 strict 1:1, supersede it first`});return}}}F.push({ecid:K(e,s,n,d),type:e,src:s,dst:n,props:d}),M.push({src:s,dst:n,type:e})},H=new Set;for(let e of h.gaps??[]){let s=e.temp_ref??e.ref??"gap",n=e.question;if(!n||typeof n!="object"||!n.header||!Array.isArray(n.options)||n.options.length===0||!Number.isInteger(n.recommended_index)){_.push({code:"GAP_QUESTION_INCOMPLETE",detail:`${s}: design gaps carry a full ranked question object (header/options/recommended_index)`});continue}e.kind==="budget-evicted"&&e.ref&&H.add(e.ref);let d={kind:e.kind,question:n,derived:!0,uc:E,...e.risk?{risk:e.risk}:{},...e.risk_rationale?{risk_rationale:e.risk_rationale}:{},...e.text?{text:e.text}:{},...e.ref?{ref:e.ref}:{}};G(g.GAP,s,d,String(n.header))}let Z=new Map;for(let{cid:e,content:s}of t.byLabel(g.SCENARIO))z(e)&&t.edgesFrom(e).some(n=>n.type===p.BELONGS_TO&&t.tipOf(n.dst)===E)&&Z.set(w(String(s.title??"")),e);for(let e of h.scenarios??[]){let s=Z.get(w(e.title));if(s){_.push({code:"DUPLICATE_SCENARIO",detail:`${e.temp_ref}: '${e.title}' duplicates live scenario ${t.nameOf.get(s)??s} \u2014 exercise/link it instead (reuse before minting)`});continue}let n={title:e.title,intent:e.intent,case_type:e.case_type,derived:!0,...e.technique_notes?{technique_notes:e.technique_notes}:{},...e.description?{description:e.description}:{},...e.parameters?{parameters:e.parameters}:{},...e.tags?{tags:e.tags}:{}};G(g.SCENARIO,e.temp_ref,n,e.title)}for(let e of h.scenarios??[]){let s=S[e.temp_ref];if(s){y(p.BELONGS_TO,s,E,{},e.temp_ref);for(let n of e.depends_on??[]){let d=O(n,`${e.temp_ref}.depends_on`,g.SCENARIO);d&&y(p.DEPENDS_ON,s,d,{},`${e.temp_ref}.depends_on`)}}}for(let e of h.acs??[]){let s={text:e.text,kind:e.kind,risk:e.risk,derived:!0,...e.expected_answer?{expected_answer:e.expected_answer}:{},...e.measurable!==void 0?{measurable:e.measurable}:{}},n=G(g.AC,e.temp_ref,s,e.text);if(!n)continue;let d=e.scope?.type==="scenario"&&e.scope.ref?O(e.scope.ref,`${e.temp_ref}.scope`,g.SCENARIO):E;d&&!t.edgesFrom(n).some(r=>r.type===p.SCOPED_TO&&!t.superseded.has(r.ecid))&&y(p.SCOPED_TO,n,d,{},`${e.temp_ref}.scope`);for(let r of e.cites??[]){if(Se&&!$e(r,`${e.temp_ref}.cite`))continue;let m={source_id:r.source_id,source_cid:r.source_cid,anchor:r.anchor,...r.quote?{quote:r.quote}:{}};y(p.DERIVES,r.source_cid,n,m,`${e.temp_ref}.cite`)}}for(let e of h.exercises??[]){let s=O(e.scenario,"exercises.scenario",g.SCENARIO),n=O(e.ac,"exercises.ac",g.AC);s&&n&&y(p.EXERCISES,s,n,{},`exercises ${e.scenario}\u2192${e.ac}`)}let ee=0;for(let e of h.scoped_to_repoints??[]){let s=O(e.ac,"scoped_to_repoints.ac",g.AC),n=O(e.to,"scoped_to_repoints.to");if(!s||!n)continue;let d=t.edgesFrom(s).find(r=>r.type===p.SCOPED_TO&&!t.superseded.has(r.ecid));if(d&&d.dst===n){ee+=1,R.push(`scoped_to_repoints ${e.ac}: already scoped to ${e.to} \u2014 no-op`);continue}d&&v.push({kind:"edge",ecid:d.ecid,reason:`re-scoped to ${e.to} by ${f.id}`,by:f}),y(p.SCOPED_TO,s,n,{},`scoped_to_repoints ${e.ac}`)}let te=new Map;if(o.finalizeTestBody)for(let[e,s]of t.nameOf)te.set(t.tipOf(e),s);let ne=e=>t.nameOf.get(e)??te.get(t.tipOf(e))??null,ve=e=>{let s=S[e];if(s)return D[e]??ne(s);if(t.names.has(e))return t.resolve(e)?e:null;let n=t.resolve(e);return n?ne(t.tipOf(n.cid)):null};for(let e of h.tests??[]){for(let u of e.reuses??[])H.has(u)&&_.push({code:"REUSES_EVICTED",detail:`${e.temp_ref}: reuses '${u}' which was budget-evicted \u2014 drop the edge; the dependent gap names the missing @import`});let s=e.test_md_blob,n=e.definitionId,d=e.objectives_blob;if(o.finalizeTestBody){let u;try{u=o.finalizeTestBody({temp_ref:e.temp_ref,test_md_blob:e.test_md_blob,verifies:e.verifies,reuses:e.reuses??[]},ve)}catch(l){return x([{code:"FINALIZE_BODY",detail:`${e.temp_ref}: ${l instanceof Error?l.message:String(l)}`}])}u&&(s=u.test_md_blob,n=u.definitionId,d=u.objectives_blob??d,j[e.temp_ref]=n)}let r={title:e.title,check:e.check,definitionId:n,derived:!0,...e.config?{config:e.config}:{},...s?{test_md_blob:s}:{},...d?{objectives_blob:d}:{},...e.surface_required!==void 0?{surface_required:e.surface_required}:{}},m=G(g.TEST,e.temp_ref,r,e.title);if(!m)continue;let C=O(e.automates,`${e.temp_ref}.automates`,g.SCENARIO);C&&y(p.AUTOMATES,m,C,{},`${e.temp_ref}.automates`);for(let u of e.verifies){let l=O(u,`${e.temp_ref}.verifies`,g.AC);l&&y(p.VERIFIES,m,l,{},`${e.temp_ref}.verifies`)}for(let u of e.reuses??[]){if(H.has(u))continue;let l=O(u,`${e.temp_ref}.reuses`,g.TEST);l&&y(p.REUSES,m,l,{},`${e.temp_ref}.reuses`)}for(let u of e.verifies){let l=S[u]??t.resolve(u)?.cid;l&&(t.trust.get(l)??"derived")==="derived"&&!k.some(i=>i.cid===l)?R.push(`${e.temp_ref}: verifies ${u} which is still DERIVED (unapproved) \u2014 committed anyway; approve it in chat or via review`):l&&S[u]===l&&(h.acs??[]).some(i=>i.temp_ref===u)&&R.push(`${e.temp_ref}: verifies ${u} minted in this same record (unapproved) \u2014 committed anyway; approve it in chat`)}if(e.verifies.length>1){let u=e.check?.verified_against;R.push(`${e.temp_ref}: verifies ${e.verifies.length} ACs but machine-asserts only 1 (check.verified_against=${u!=null?String(u):"?"}) \u2014 the rest ride prose only`)}}let Y=[];{let e=(i,c)=>`${i??""}\0${w(String(c??""))}`,s=(i,c)=>o.reason?`${o.reason} \u2014 evolve by ${f.id}${c?` (${c})`:""}`:i,n=new Map;for(let i of k){if(i.label!==g.SCENARIO&&i.label!==g.TEST)continue;let c=e(i.label,i.content.title);n.set(c,[...n.get(c)??[],i.cid])}let d=new Map;for(let i of I){if(N.has(i))continue;let c=e(t.nodeLabel.get(i),t.getNode(i)?.content.title);d.set(c,[...d.get(c)??[],i])}for(let[i,c]of d){let a=n.get(i)??[],b=c.length===1&&a.length===1;for(let $ of c)b?(v.push({kind:"node",old:$,new:a[0],reason:s(`--force redesign of ${o.ucRef} by ${f.id} (title-matched successor)`,"title-matched successor"),by:f}),Y.push({old:$,next:a[0]})):v.push({kind:"node",old:$,new:null,reason:s(`--force redesign of ${o.ucRef} by ${f.id}`),by:f}),q.push($)}let r=i=>t.edgesFrom(i).some(c=>c.type!==p.SCOPED_TO?!1:c.dst===E||t.tipOf(c.dst)===E?!0:t.nodeLabel.get(c.dst)===g.SCENARIO&&t.edgesFrom(c.dst).some(a=>a.type===p.BELONGS_TO&&t.tipOf(a.dst)===E)),m=new Map;for(let{cid:i,content:c}of t.byLabel(g.AC)){if(t.superseded.has(i)||!r(i))continue;let a=w(String(c.text??""));m.set(a,[...m.get(a)??[],i])}let C=new Map;for(let i of k){if(i.label!==g.AC)continue;let c=w(String(i.content.text??""));C.set(c,[...C.get(c)??[],i.cid])}for(let[i,c]of m){let a=C.get(i)??[];c.length!==1||a.length!==1||(v.push({kind:"node",old:c[0],new:a[0],reason:s(`AC re-emitted with changed content by ${f.id} (text-matched successor)`,"AC text-matched successor"),by:f}),Y.push({old:c[0],next:a[0]}),q.push(c[0]))}let u=new Set(q),l=new Set;for(let i of v)i.kind==="edge"&&l.add(i.ecid);for(let{old:i,next:c}of Y)for(let a of t.edgesInto(i))ie(a.type)?.pin?.comparesTo!=="dst_tip"||t.superseded.has(a.src)||u.has(a.src)||l.has(a.ecid)||(v.push({kind:"edge",ecid:a.ecid,reason:`re-blessed onto ${c} (redirect successor of ${i}) by ${f.id}`,by:f}),l.add(a.ecid),F.some($=>$.type===a.type&&$.src===a.src&&$.dst===c)||t.edgesFrom(a.src).some($=>$.type===a.type&&$.dst===c))||a.type===p.AUTOMATES&&B.has(c)||y(a.type,a.src,c,a.props,`rebless ${a.type} from ${t.nameOf.get(a.src)??a.src}`)}if(_.length>0)return x(_);if(k.length===0&&F.length===0&&v.length===0&&P.length===0)return Object.keys(S).length>0||ee>0?(R.push("everything in this phase is already current \u2014 nothing re-committed"),{record:null,errors:null,minted:S,logicalIds:D,superseded:[],warnings:R,finalizedTests:j,...o.force||o.forceScope?{forceScopeRemaining:V}:{}}):x([{code:"EMPTY_DESIGN",detail:"finalize_design produced nothing to commit"}]);if(o.generationTicket){let e=_e(t,o.generationTicket);if(e!==null)return x([e])}return{record:de(A,{ts:new Date().toISOString(),proposal_id:null,nodes:k,edges:F,review:[],supersessions:v,source_head_moves:{},...U.length>0?{names:U}:{},...(()=>{for(let e of h.judgements??[]){let s=e.target?S[e.target]??t.resolve(e.target)?.cid??E:E;P.push({about:s,rationale:`[${e.kind}] ${e.rationale}`,by:f})}return P.length>0?{judgements:P}:{}})(),design_of:{uc_cid:E,engine:T},...o.generationTicket?{design_generation:be(o.generationTicket,E,f)}:{},...o.eventIds&&o.eventIds.length>0?{event_ids:o.eventIds}:o.sid?{event_ids:ge(t,o.sid,"design",1)}:{},...o.sid?{sid:o.sid}:{},...o.phase?{design_phase:{uc_root:me(t,E),generation:o.generationTicket?.next_gen??he(t,o.ucRef)?.gen??1,phase:o.phase,completeness:o.phaseCompleteness??"complete"}}:{}},{expectPrev:t.latestHash}).record,errors:null,minted:S,logicalIds:D,superseded:q,warnings:R,finalizedTests:j,...o.force||o.forceScope?{forceScopeRemaining:V}:{}}}function Pe(o,A){let t=[];for(let h of o){let f=h.design_phase;!f||typeof f!="object"||f.uc_root===A&&(typeof f.phase!="string"||typeof f.generation!="number"||t.push({phase:f.phase,generation:f.generation,seq:h.seq,completeness:f.completeness==="partial"?"partial":"complete"}))}return t.sort((h,f)=>h.seq-f.seq)}export{Oe as a,Fe as b,Pe as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as t}from"./chunk-
|
|
2
|
+
import{b as t}from"./chunk-N2N5T5JN.js";import{join as i}from"path";function e(n=t){return i(n,"plugins")}function g(n,r=t){return i(e(r),n)}function c(n,r,o=t){return i(g(n,o),r)}function f(n,r=t){return i(g(n,r),"current")}function x(n,r=t){return i(g(n,r),"config.json")}function l(n,r=t){return i(g(n,r),".jobs")}function s(n=t){return i(n,"bin")}function h(n=t){return i(s(n),"hyperexecute")}export{e as a,g as b,c,f as d,x as e,l as f,s as g,h};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{homedir as a}from"os";import{join as t}from"path";var m="0.8.
|
|
2
|
+
import{homedir as a}from"os";import{join as t}from"path";var m="0.8.7";var e=t(a(),".testmuai","kaneai"),d=t(e,"profiles"),g=t(e,"tui-config.json"),h=t(e,"media"),b="https://registry.npmjs.org/@testmuai/kane-cli",A="https://api.github.com/repos/LambdaTest/kane-cli/releases",n="@testmuai/kane-cli-skill",_=`https://registry.npmjs.org/${n}`,r="kane-cli",L=[{dir:t(a(),".claude","skills",r),agent:"Claude Code"},{dir:t(a(),".agents","skills",r),agent:"Codex CLI"},{dir:t(a(),".gemini","skills",r),agent:"Gemini CLI"}],x="https://dd-proxy.lambdatest.com/intake/kane-cli",U="https://kaneai-playground.lambdatest.io",u=9222,R=9230,I=t(e,"chrome-profiles"),o=t(e,"hints"),E=t(o,"state.json");function C(s){return t(o,`catalog-${s}.json`)}var c="127.0.0.1",T=18392,S=18400,i="/callback";function f(s){return`http://${c}:${s}${i}`}var B="KANE CLI",N="*",P={prod:{authBaseUrl:"https://auth.lambdatest.com",consentUrl:"https://accounts.lambdatest.com",controllerBaseUrl:"https://kaneai-api.lambdatest.com/v16-controller/v1",tmsBaseUrl:"https://test-manager-api.lambdatest.com/api",testGeneratorBaseUrl:"https://test-manager-api.lambdatest.com",secretsBaseUrl:"https://api-hyperexecute.lambdatest.com",testManagerUiUrl:"https://test-manager.lambdatest.com",shareApiBaseUrl:"https://api.lambdatest.com",v16ServerHost:"https://kaneai-api.lambdatest.com/v16-server",evidenceViewerUrl:"https://evidence.lambdatest.com",mediaArtefactsHost:"prod-mobile-artefacts.lambdatest.com",mobileAppBaseUrl:"https://api.lambdatest.com"},stage:{authBaseUrl:"https://stage-auth.lambdatestinternal.com",consentUrl:"https://stage-accounts.lambdatestinternal.com",controllerBaseUrl:"https://auteur-stage-automind.lambdatestinternal.com/v16-controller/v1",tmsBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com/api",testGeneratorBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com",secretsBaseUrl:"https://api-stage-hyperexecute.lambdatestinternal.com",testManagerUiUrl:"https://stage-test-manager.lambdatestinternal.com",shareApiBaseUrl:"https://stage-api.lambdatestinternal.com",v16ServerHost:"https://auteur-stage-automind.lambdatestinternal.com/v16-server",evidenceViewerUrl:"https://stage-evidence.lambdatestinternal.com",mediaArtefactsHost:"stage-mobile-artefacts.lambdatestinternal.com",mobileAppBaseUrl:"https://stage-api.lambdatestinternal.com"}},O={orange:"#ff9500",generateAccent:"#0d9488",assuranceAccent:"#b388ff",purple:"#b388ff",secondary:"#888888",dim:"#666666",muted:"#444444",green:"#4ade80",red:"#ef4444",amber:"#fbbf24"};export{m as a,e as b,g as c,h as d,b as e,A as f,n as g,L as h,x as i,U as j,u as k,R as l,I as m,E as n,C as o,c as p,T as q,S as r,i as s,f as t,B as u,N as v,P as w,O as x};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as G,c as P,e as J,h as q,i as z,j as Q,m as V,o as X,p as T}from"./chunk-
|
|
2
|
+
import{b as G,c as P,e as J,h as q,i as z,j as Q,m as V,o as X,p as T}from"./chunk-Q3S5EKX5.js";import{e as U}from"./chunk-EHN5HTUD.js";import{copyFileSync as ae,cpSync as le,existsSync as w,mkdirSync as ue,readFileSync as Oe,readdirSync as pe,rmSync as Te,writeFileSync as _e}from"fs";import{dirname as Ae,isAbsolute as Le,join as R,relative as Ee,resolve as Ne}from"path";import{writeFileSync as ge,mkdirSync as Se,readFileSync as Re}from"fs";import{dirname as Ie,basename as Y}from"path";function ee(e){let t=e.outPath??P(e.sourcePath);Se(Ie(t),{recursive:!0});let s=[];s.push("---"),s.push(`test: ../${Y(e.sourcePath)}`),s.push(`status: ${e.overallStatus}`),s.push(`started: ${e.startedISO}`),s.push(`duration_s: ${e.durationS}`),s.push(`session_id: ${e.sessionId}`),s.push("---",""),s.push(`# ${e.title??Y(e.sourcePath)} \u2014 Result`,"");for(let l=0;l<e.rootSteps.length;l++){let a=e.rootSteps[l],i=e.outcomes.find(p=>p.rootStepIndex===l+1);if(s.push(ye(a,i)),i?.stepMd5&&s.push(`md5: ${i.stepMd5}`),i?.status==="failed"&&i.reason&&s.push(`Reason: ${i.reason}`),i?.softFailures?.length)for(let p of i.softFailures){let o=p.reason?`: ${p.reason}`:"";s.push(`\u26A0 optional sub-step ${p.subStepIndex} failed${o}`)}a.body.kind==="objective"&&i?.status!=="skipped"&&s.push(a.body.text),s.push("")}return ge(t,s.join(`
|
|
3
3
|
`),"utf8"),t}function ye(e,t){if(!t)return`## ${e.heading} (no outcome)`;let s=t.duration_s!=null?`${t.duration_s}s`:"\u2014";if(t.status==="skipped")return`## ${e.heading} \u23ED skipped`;let l=t.softFailed?" (optional)":"";if(t.refKind&&t.status==="passed"){let a=t.helperResultRelPath?` \u2192 ${t.helperResultRelPath}`:"";return`## ${e.heading} \u2713 passed (via @${t.refKind} ${t.refLabel} \u2014 ${t.inlinedCount} inlined steps, ${s}${a})`}if(t.refKind&&t.status==="failed"){let a=t.failedSubStepIndex&&t.failedSubStepIndex.length>0?` \u2014 at sub-step ${t.failedSubStepIndex.join(" \u2192 sub-step ")}`:"",i=t.helperResultRelPath?` \u2192 ${t.helperResultRelPath}`:"";return`## ${e.heading} \u2717 failed${l} (via @${t.refKind} ${t.refLabel}${a}, ${s}${i})`}return t.status==="passed"?`## ${e.heading} \u2713 passed (${s})`:`## ${e.heading} \u2717 failed${l} (${s})`}var xe=/^##\s+(.+?)\s+(✓ passed|✗ failed(?:\s+\(optional\))?|⏭ skipped)(?:\s+\((.*)\))?\s*$/,be=/via\s+@\w+\s+(\S+).*?(?:→\s+(\S+))?\s*$/,ke=/^md5:\s+([a-f0-9]{32})\s*$/;function Z(e,t){for(let s=t;s<e.length&&!/^##\s/.test(e[s]);s++){if(e[s].trim()==="")continue;let l=ke.exec(e[s]);return l?l[1]:null}return null}function $(e){let s=Re(e,"utf8").split(`
|
|
4
4
|
`),l="passed";if(s[0]?.trim()==="---")for(let i=1;i<s.length&&s[i].trim()!=="---";i++){let p=/^status:\s+(passed|failed|interrupted)\s*$/.exec(s[i]);p&&(l=p[1])}let a=[];for(let i=0;i<s.length;i++){let p=xe.exec(s[i]);if(!p)continue;let o=p[1],r=p[2],c=p[3]??"",m=r.startsWith("\u2713")?"passed":r.startsWith("\u23ED")?"skipped":"failed";if(/via\s+@/.test(c)){let f=be.exec(c),b=f?.[1]??"",g=f?.[2]??null;a.push({kind:"import",heading:o,status:m,md5:Z(s,i+1),importPath:b,helperResultRelPath:g})}else a.push({kind:"objective",heading:o,status:m,md5:Z(s,i+1)})}return{overallStatus:l,steps:a}}import{copyFileSync as te,existsSync as K,mkdirSync as ve,writeFileSync as se,promises as Ge}from"fs";import{join as D,dirname as re,basename as Pe}from"path";async function ne(e){for(let t=0;t<e.totalRunDirs;t++){let s=e.runIndex+t,l=D(e.sessionDir,"runs",String(s)),a=D(e.stagingStepDir,"flows",String(t));ve(a,{recursive:!0});let i=D(a,"actions.ndjson");if(e.packTestDir){let r=D(e.packTestDir,"logs",`${s}-actions.ndjson`);if(K(r)){te(r,i);continue}let c=re(re(e.packTestDir)),m=Pe(e.packTestDir),I=K(c)?await U(c,`tests/${m}/logs/${s}-actions.ndjson`).catch(()=>null):null;se(i,I??"");continue}let p=[D(l,"run-test","actions.ndjson"),D(l,"actions.ndjson")],o=!1;for(let r of p)if(K(r)){te(r,i),o=!0;break}o||se(i,"")}}import{existsSync as _,readdirSync as we}from"fs";import{dirname as $e,join as M,basename as C}from"path";function et(e){let t=[],s=new Set,l=new Map;function a(r){if(l.has(r))return l.get(r);let c=P(r),m=_(c)?$(c):null;return l.set(r,m),m}let i=new Map;function p(r){if(i.has(r))return i.get(r);let c=M(r,"Result.md"),m=_(c)?$(c):null;return i.set(r,m),m}function o(r){for(let c=1;c<r.trace.length;c++){let m=r.trace[c-1],I=a(m.file);if(!I)continue;let f=I.steps[m.stepIndex-1];if(f){if(f.kind!=="import")return{kind:"author",reason:"structure-mismatch"};if(C(f.importPath)!==C(r.trace[c].file))return{kind:"author",reason:"structure-mismatch"};if(f.md5!=null&&f.md5!==m.rowMd5)return{kind:"author",reason:"structure-mismatch"}}}return null}for(let r of e.steps){let c=r.trace[r.trace.length-1].stepIndex,m=s.has(r.owningFile);for(let g=0;g<r.trace.length-1&&!m;g++)s.has(r.trace[g].file)&&(m=!0);if(m){t.push({kind:"author",reason:a(r.owningFile)===null?"no-result-md":"downstream-of-divergence"});continue}let I=o(r);if(I){t.push(I);for(let g=0;g<r.trace.length;g++)s.add(r.trace[g].file);continue}let f=a(r.owningFile),b;if(f===null&&r.trace.length>1){let g=H(r.trace);b=ie(r,p(g),c,g)}else b=ie(r,f,c);if(t.push(b),b.kind==="author"){s.add(r.owningFile);for(let g=0;g<r.trace.length-1;g++)s.add(r.trace[g].file)}}return t}function ie(e,t,s,l=null){if(!t)return{kind:"author",reason:"no-result-md"};let a=t.steps[s-1];if(!a)return{kind:"author",reason:"no-result-md"};if(a.kind!=="objective")return{kind:"author",reason:"structure-mismatch"};if(a.status!=="passed")return{kind:"author",reason:"recorded-failed"};let i=T(e);if(i!==a.md5)return{kind:"author",reason:"md5-mismatch"};let p=l===null?Q(e.owningFile,s,i.slice(0,8)):M(l,".internal","steps",`${s}-${i.slice(0,8)}`),o=De(p);return o===0?{kind:"author",reason:"missing-recording"}:{kind:"replay",recordingDir:p,flowCount:o}}function De(e){let t=M(e,"flows");if(!_(t))return 0;let s;try{s=we(t,{withFileTypes:!0}).filter(a=>a.isDirectory()&&/^\d+$/.test(a.name)).map(a=>parseInt(a.name,10))}catch{return 0}if(s.length===0)return 0;let l=Math.max(...s);for(let a=0;a<=l;a++)if(!_(M(t,String(a),"actions.ndjson")))return 0;return l+1}function tt(e){return e.some(t=>t.kind==="author")}function st(e){for(let t=0;t<e.length;t++)if(e[t].kind==="author")return t;return e.length}function H(e){let t=i=>{let p=C(i);return p.endsWith("_test.md")?p.slice(0,-8):p.endsWith(".md")?p.slice(0,-3):p},s=t(e[0].file),l=t(e[e.length-1].file),a=e.slice(0,-1).map(i=>String(i.stepIndex));return M($e(e[e.length-1].file),`helper-output-${l}-${s}-${a.join("-")}`)}function rt(e){return Array.from({length:e.flowCount},(t,s)=>M(e.recordingDir,"flows",String(s),"actions.ndjson"))}import{existsSync as oe,mkdirSync as Me,rmSync as je,cpSync as Fe}from"fs";function de(e,t){oe(e)&&(oe(t)&&je(t,{recursive:!0,force:!0}),Me(t,{recursive:!0}),Fe(e,t,{recursive:!0}))}async function gt(e){let t=new Map;for(let o of e.stepRunRecords)t.set(o.testmdStepIndex,o);let s=e.authoredFlatIdx??new Set,l=[],a=[],i=new Map,p=o=>{if(i.has(o))return i.get(o);let r=R(o,"Result.md"),c=w(r)?$(r):null;return i.set(o,c),c};for(let o of e.resolvedTest.unitFiles){let r=o.file===e.resolvedTest.rootPath,c=V(o.file,Oe(o.file,"utf8")),m=P(o.file),I=w(m)?$(m):null,f=[],b=[],g=[],j=[];if(!r)for(let d of e.resolvedTest.steps){if(d.owningFile!==o.file||d.trace.length<2)continue;let n=H(d.trace);j.includes(n)||j.push(n)}let F=d=>{if(I!==null)return null;for(let n of j){let v=p(n)?.steps[d-1];if(v)return{row:v,dir:n}}return null},W=[],A=!1,B=!1,L=!1,E=!1;for(let d of c.steps){let n=d.index,u=I?.steps[n-1];if(d.body.kind==="objective"){let h=e.resolvedTest.steps.filter(S=>S.owningFile===o.file&&S.trace[S.trace.length-1].stepIndex===n&&t.has(S.flatIndex)),y=h.length>0?h[h.length-1]:null;if(y){A=!0,s.has(y.flatIndex)&&(B=!0);let S=T(y),x;r?x=e.outcomes.find(he=>he.rootStepIndex===n)??{rootStepIndex:n,status:"skipped"}:x={rootStepIndex:n,status:ce(y,e.outcomes)},x.status==="failed"&&(L=!0),x.stepMd5==null&&(x.stepMd5=S),f.push(x),b.push({stepIndex:n,md5:S,rec:t.get(y.flatIndex)}),(!u||u.kind!=="objective"||u.status!==x.status||x.status==="passed"&&u.md5!==S)&&(E=!0)}else if(u&&u.kind==="objective")f.push({rootStepIndex:n,status:u.status,...u.md5?{stepMd5:u.md5}:{}}),g.push(n);else if(!r&&F(n)?.row.kind==="objective"){let S=F(n),x=S.row;f.push({rootStepIndex:n,status:x.status,...x.md5?{stepMd5:x.md5}:{}}),W.push({psIdx:n,dir:S.dir})}else r?f.push(e.outcomes.find(S=>S.rootStepIndex===n)??{rootStepIndex:n,status:"skipped"}):f.push({rootStepIndex:n,status:"skipped"});continue}let v=Le(d.body.path)?d.body.path:Ne(Ae(o.file),d.body.path),O=X({path:d.body.path,bindings:d.body.bindings,optional:d.optional??!1}),me=Ee(G(o.file),P(v)),N=e.resolvedTest.steps.filter(h=>h.trace.some((y,S)=>S<h.trace.length-1&&y.file===o.file&&y.stepIndex===n)&&t.has(h.flatIndex));if(N.length>0){A=!0;let h;if(r)h=e.outcomes.find(y=>y.rootStepIndex===n)??{rootStepIndex:n,status:"passed",refKind:"import",refLabel:d.body.path};else{let y=N.some(S=>ce(S,e.outcomes)==="failed");h={rootStepIndex:n,status:y?"failed":"passed",refKind:"import",refLabel:d.body.path,inlinedCount:N.length}}h.status==="failed"&&(L=!0),h.stepMd5==null&&(h.stepMd5=O),h.helperResultRelPath==null&&(h.helperResultRelPath=me),f.push(h),(!u||u.kind!=="import"||u.status!==h.status||u.md5!==O)&&(E=!0)}else if(u&&u.kind==="import")f.push({rootStepIndex:n,status:u.status,refKind:"import",refLabel:u.importPath,...u.md5?{stepMd5:u.md5}:{},...u.helperResultRelPath?{helperResultRelPath:u.helperResultRelPath}:{}});else if(!r&&F(n)?.row.kind==="import"){let h=F(n).row;f.push({rootStepIndex:n,status:h.status,refKind:"import",refLabel:d.body.path})}else r?f.push(e.outcomes.find(h=>h.rootStepIndex===n)??{rootStepIndex:n,status:"skipped",refKind:"import",refLabel:d.body.path}):f.push({rootStepIndex:n,status:"skipped",refKind:"import",refLabel:d.body.path})}if(!(r||A&&(B||L||I===null||E)))continue;l.push(o.file);let k=q(o.file);ue(R(k,".internal"),{recursive:!0});for(let d of b){let n=R(k,".internal","steps",`${d.stepIndex}-${d.md5.slice(0,8)}`);ue(n,{recursive:!0}),await ne({sessionDir:e.sessionDir,runIndex:d.rec.runIndex,totalRunDirs:d.rec.totalRunDirs,stagingStepDir:n,packTestDir:e.packTestDir})}if(g.length>0){let d=z(o.file);if(w(d))for(let n of pe(d)){let u=parseInt(n.split("-")[0]??"",10);!Number.isNaN(u)&&g.includes(u)&&le(R(d,n),R(k,".internal","steps",n),{recursive:!0})}}for(let d of W){let n=R(d.dir,".internal","steps");if(w(n))for(let u of pe(n))parseInt(u.split("-")[0]??"",10)===d.psIdx&&le(R(n,u),R(k,".internal","steps",u),{recursive:!0})}let fe=f.some(d=>d.status==="failed");if(ee({sourcePath:o.file,title:c.title,rootSteps:c.steps,outcomes:f,overallStatus:r?e.overallStatus:fe?"failed":"passed",startedISO:e.startedISO,durationS:r?e.durationS:0,sessionId:e.sessionId,outPath:R(k,"Result.md")}),r){let d={};e.commitId&&(d.commit_id=e.commitId),e.tmsIds.testId&&(d.test_id=e.tmsIds.testId),e.tmsIds.testcaseId&&(d.testcase_id=e.tmsIds.testcaseId),e.tmsIds.projectId&&(d.project_id=e.tmsIds.projectId),e.tmsIds.folderId&&(d.folder_id=e.tmsIds.folderId),e.tmsIds.orgId&&(d.org_id=e.tmsIds.orgId),e.tmsIds.sessionName&&(d.session_name=e.tmsIds.sessionName),_e(R(k,".internal","meta.json"),JSON.stringify(d,null,2)+`
|
|
5
5
|
`,"utf8");let n=R(e.sessionDir,"execution.json");if(w(n))try{ae(n,R(k,".internal","execution.json"))}catch{}if(e.codeExportDir){let u=e.codeExportLanguage??"python",v=R(k,`playwright-${u}-code`);try{de(e.codeExportDir,v)}catch(O){process.stderr.write(`warn: codegen copy failed: ${O.message}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as y}from"./chunk-
|
|
2
|
+
import{a as y}from"./chunk-HAGJA7KG.js";import{createServer as b}from"http";import{createReadStream as C,promises as S}from"fs";import{randomBytes as R}from"crypto";var u="127.0.0.1";function A(n,e){if(!n)return null;let o=/^bytes=(\d*)-(\d*)$/.exec(n.trim());if(!o)return null;let[,a,r]=o;if(a===""&&r==="")return null;if(a===""){let i=Number(r);return i===0||e===0?"unsatisfiable":{start:Math.max(0,e-i),end:e-1}}let t=Number(a);if(t>=e)return"unsatisfiable";let c=r===""?e-1:Math.min(Number(r),e-1);return c<t?null:{start:t,end:c}}async function I(n){let e=R(16).toString("hex"),o=b((r,t)=>{H(r,t,n,e).catch(()=>t.destroy())});await new Promise((r,t)=>{o.once("error",t),o.listen(n.port??0,u,()=>{o.removeListener("error",t),r()})});let a=o.address().port;return{port:a,urlFor:r=>`http://${u}:${a}/${e}/${encodeURIComponent(r)}`,close:()=>new Promise(r=>{o.close(()=>r()),o.closeAllConnections()})}}async function H(n,e,o,a){let r=n.url??"/",t=s=>{try{o.log?.("warn","EVIDENCE_SERVE_DENIED",{reason:s,path:r})}catch{}};if(n.headers.host!==`${u}:${n.socket.localPort}`){t("host_mismatch"),e.writeHead(403).end();return}let c=n.headers.origin;if(c!==void 0&&!o.allowedOrigins.includes(c)){t("origin_denied"),e.writeHead(403).end();return}let i=c?{"Access-Control-Allow-Origin":c,Vary:"Origin","Access-Control-Expose-Headers":"Content-Range, Content-Length"}:{};if(n.method==="OPTIONS"){let s={...i,"Access-Control-Allow-Methods":"GET, HEAD, OPTIONS","Access-Control-Allow-Headers":"range","Access-Control-Max-Age":"86400"};n.headers["access-control-request-private-network"]==="true"&&(s["Access-Control-Allow-Private-Network"]="true"),e.writeHead(204,s).end();return}if(n.method!=="GET"&&n.method!=="HEAD"){e.writeHead(405,i).end();return}let v;try{let s=new URL(n.url??"/",`http://${u}`).pathname.split("/");if(s.length!==3||s[1]!==a){t("bad_token"),e.writeHead(404,i).end();return}v=decodeURIComponent(s[2])}catch{t("not_found"),e.writeHead(404,i).end();return}let g=o.packs.get(v);if(!g){t("not_found"),e.writeHead(404,i).end();return}let d;try{let s=await S.stat(g);if(!s.isFile())throw new Error("not a file");d=s.size}catch{t("not_found"),e.writeHead(404,i).end();return}let h={...i,"Accept-Ranges":"bytes","Content-Type":"application/zip","Cache-Control":"no-store"};if(n.method==="HEAD"){e.writeHead(200,{...h,"Content-Length":String(d)}).end();return}let l=A(n.headers.range,d);if(l==="unsatisfiable"){t("unsatisfiable"),e.writeHead(416,{...i,"Content-Range":`bytes */${d}`}).end();return}let[m,p,w]=l===null?[0,d-1,200]:[l.start,l.end,206],E={...h,"Content-Length":String(p-m+1)};if(w===206&&(E["Content-Range"]=`bytes ${m}-${p}/${d}`),e.writeHead(w,E),d===0){e.end();return}let f=C(g,{start:m,end:p});f.on("error",()=>e.destroy()),e.on("close",()=>f.destroy()),f.pipe(e)}function O(n,e){return(e??y(n).evidenceViewerUrl).replace(/\/+$/,"")}function k(n,e){return`${e}/?pack=${encodeURIComponent(n)}`}function P(n){return`evidence: view locally with \`kane-cli evidence serve ${n}\``}export{A as a,I as b,O as c,k as d,P as e};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{d as X}from"./chunk-BB2W35TW.js";import{a as $}from"./chunk-YKTYVJBN.js";import{
|
|
2
|
+
import{d as X}from"./chunk-BB2W35TW.js";import{a as $}from"./chunk-YKTYVJBN.js";import{C as T,n as z,o as Y,p as H}from"./chunk-AJXOJF2X.js";import{b as q,h as N}from"./chunk-HLXOYLZV.js";import{a as W,d as S,f as L}from"./chunk-DBIBROYW.js";import{c as C}from"./chunk-UD7KKHPW.js";import{a as K,b as J}from"./chunk-N2N5T5JN.js";var ce=3,de=1e4,Q=()=>new Promise(r=>setTimeout(r,25+Math.floor(Math.random()*50))),Z=r=>r==="design"||r==="maintain"?"session":r==="revert"||r==="shape-op"?"exclusive":"commit";function le(r,e,o){for(let s of r){for(let t of s.supersessions)if(t.kind==="node"&&(o.has(t.old)||t.new!==null&&o.has(t.new)))return!0;for(let t of s.nodes)if(t.label==="usecase"&&e.newBuCandidates.length>0||o.has(t.cid))return!0;if(s.design_generation&&e.generationTicket&&s.design_generation.uc_root===e.generationTicket.uc_root)return!0;for(let t of e.sourcePins)if(Object.prototype.hasOwnProperty.call(s.source_head_moves,t.source_id))return!0}return!1}async function De(r,e,o){let{contextDir:s,locks:t,probe:a}=r,m=r.sid??r.rootSid,f=e.newBuCandidates.map(b=>({tempRef:b.tempRef,probeText:b.probeText})),k=0,g=!0,p={hits:[],degraded:!1,probeBasis:null};for(;;){g&&(f.length>0&&(p=await a.batchSimilar(T(s),f)),g=!1);let b=T(s),_={seq:b.lastSeq,hash:b.latestHash},P=new Map,w=[],v=[],R=new Set;for(let d of e.ucTargets){let c=H(b,d.ref);if(c===null)return{ok:!1,kind:"validation",errors:[{code:"UNKNOWN_REF",detail:`${d.ref}: names no living node (unknown or tombstoned chain)`}]};d.expectedTip!==void 0&&d.expectedTip!==c.cid&&P.set(d.expectedTip,c.cid),R.add(c.cid),v.push(L(b,d.ref).key)}(e.verb==="revert"||e.verb==="shape-op")&&(v.length=0,v.push({kind:"context",mode:"exclusive"}));let y;try{y=t.acquire(S(v),{hold:Z(e.verb),verb:e.verb})}catch(d){if(d instanceof W&&(d.code==="UC_HELD"||d.code==="CONTEXT_HELD"))return{ok:!1,kind:"contended",err:d};throw d}let V=!1,M=!1;try{let d=await t.withKeySerialized(v,async()=>{let c=T(s),O=_.hash===c.latestHash?[]:N(s,_.seq,_.hash).records;for(let n of e.ucTargets){let i=H(c,n.ref);if(i===null){w.push({kind:"supersession",ref:n.ref,detail:`${n.ref} was retired while this commit staged \u2014 re-ground or abandon`});continue}for(let l of R)c.superseded.has(l)&&c.tipOf(l)===i.cid&&P.set(l,i.cid)}for(let n of e.sourcePins){let i=c.heads.get(n.source_id);i!=null&&i!==n.source_cid&&w.push({kind:"pin",ref:n.source_id,detail:`source '${n.source_id}' moved (pinned ${n.source_cid.slice(0,19)}, head ${i.slice(0,19)}) \u2014 re-ground or abandon`})}if(w.length>0)return{ok:!1,kind:"drifted",asks:w};if(e.generationTicket){let n=X(c,e.generationTicket);if(n!==null)return{ok:!1,kind:"validation",errors:[n]}}if(f.length>0&&O.length>0){let n=new Set(p.hits.map(u=>u.candidateCid)),i=a.recheckLocal(c,f,p.probeBasis,O);if(i.hits.some(u=>!n.has(u.candidateCid))||i.uncachedNewNodes.length>0)return M=!0,"restart"}if(e.verb!=="revert"&&e.verb!=="shape-op"){let n=S(e.ucTargets.map(u=>L(c,u.ref).key)),i=S(v);if(!(n.length===i.length&&n.every((u,h)=>JSON.stringify(u)===JSON.stringify(i[h]))))return"restart"}if(e.eventIds&&e.eventIds.length>0&&e.eventIds.every(n=>c.appliedEvents.has(n)))return{ok:!0,skipped:"already-applied"};let ae=Date.now()+de,j=c.latestHash,E=c;for(;;){let n={graph:E,expectPrev:j,redirects:P,probeHits:p.hits,degradedProbe:p.degraded,sid:m,eventIds:(l,u)=>{if(e.eventIds&&e.eventIds.length>0)return e.eventIds.slice(0,u);let h=Y(E,r.rootSid,l,u),U=r.reservedEventIds??[];if(U.length===0)return h;let D=`${r.rootSid}:${l}:`,A=0;for(let F of U){if(!F.startsWith(D))continue;let x=F.slice(D.length);/^\d+$/.test(x)&&(A=Math.max(A,Number.parseInt(x,10)))}if(A===0)return h;let G=Number.parseInt(h[0].slice(D.length),10);return!Number.isInteger(G)||G>A?h:Array.from({length:u},(F,x)=>z(r.rootSid,l,A+1+x))},assertLocks:()=>y.assertHeld()};if(r.revalidate){let l=r.revalidate(n);if(l.length>0)return{ok:!1,kind:"validation",errors:l}}y.assertHeld();let i;try{i=o(n)}catch(l){if(l instanceof q){let u=T(s),h=N(s,E.lastSeq,E.latestHash).records;if(!le(h,e,R)&&Date.now()<ae){await Q(),E=u,j=u.latestHash;continue}return"restart"}throw l}return"errors"in i?{ok:!1,kind:"validation",errors:i.errors}:(Z(e.verb)==="session"&&y.touch(),{ok:!0,result:i.result,record:i.record})}});if(d==="restart")V=!0;else return d}finally{y.release()}if(V){if(k+=1,k>=ce)return{ok:!1,kind:"unsettled",attempts:k};M&&(g=!0),await Q();continue}}}import{readFileSync as ue,writeFileSync as fe,renameSync as me,mkdirSync as pe}from"fs";import{dirname as he,join as ge}from"path";var B=1,be=720*60*1e3;function I(r){return ge(J,"embeddings",`alias-${r}.json`)}function ee(r,e=Date.now()){return r!==null&&e-r.fetchedAt<be}function re(r){try{let e=JSON.parse(ue(r,"utf-8"));return e.wrapperVersion!==B||typeof e.purposes!="object"||e.purposes===null?null:{wrapperVersion:B,writtenByVersion:String(e.writtenByVersion??""),purposes:e.purposes}}catch{return null}}function te(r,e,o=I(r)){let t=re(o)?.purposes?.[e];return!t||typeof t.alias!="string"||typeof t.dims!="number"||typeof t.fetchedAt!="number"?null:{alias:t.alias,dims:t.dims,fetchedAt:t.fetchedAt}}function se(r,e,o,s=I(r)){try{pe(he(s),{recursive:!0});let a=re(s)?.purposes??{};a[e]={alias:o.alias,dims:o.dims,fetchedAt:Date.now()};let m={wrapperVersion:B,writtenByVersion:K,purposes:a},f=`${s}.tmp`;fe(f,JSON.stringify(m,null,2)+`
|
|
3
3
|
`),me(f,s)}catch(t){C(`[embed] Failed to save alias cache: ${t instanceof Error?t.message:String(t)}`,"EMBED_CACHE_WRITE_FAILED")}}function ve(r){return r.TESTMUAI_ENV==="stage"?"stage":"prod"}function oe(r){let e=r.env??process.env,o=r.auth?.TESTMUAI_BASIC_AUTH||e.TESTMUAI_BASIC_AUTH;if(o)return{authorization:`Basic ${o}`};let s=r.auth?.TESTMUAI_API_KEY||e.TESTMUAI_API_KEY;return s?{authorization:`Bearer ${s}`}:{}}async function Oe(r,e={}){let o=e.env??process.env,s=ve(o),t=e.aliasCacheFile??I(s),a=e.now??Date.now,m=te(s,r,t);if(ee(m,a()))return{alias:m.alias,dims:m.dims};let k=`${$(o)}/assurance/embed/alias?purpose=${encodeURIComponent(r)}`,g=await(e.fetchImpl??fetch)(k,{method:"GET",headers:oe(e)});if(!g.ok)throw new Error(`embed alias resolve failed: ${g.status}`);let p=await g.json();return se(s,r,{alias:p.alias,dims:p.dims},t),{alias:p.alias,dims:p.dims}}async function je(r,e,o={}){let s=o.env??process.env,t=$(s),a=await(o.fetchImpl??fetch)(`${t}/assurance/embed`,{method:"POST",headers:{...oe(o),"content-type":"application/json"},body:JSON.stringify({purpose:r,input:e})});if(!a.ok)throw new Error(`embed failed: ${a.status}`);return await a.json()}import{readFileSync as ke,writeFileSync as ye,renameSync as Ee,mkdirSync as Ae}from"fs";import{dirname as Te,join as ne}from"path";function we(r){return ne(r,"embeddings")}function xe(r){let e=r.indexOf(":");return e>=0?r.slice(e+1):r}function ie(r,e,o){let s=xe(o);return ne(we(r),e,s.slice(0,2),`${s.slice(2)}.f32`)}function We(r,e,o){try{let s=ke(ie(r,e,o)),t=new Float32Array(Math.floor(s.length/4));for(let a=0;a<t.length;a++)t[a]=s.readFloatLE(a*4);return t}catch{return null}}function qe(r,e,o,s){try{let t=ie(r,e,o);Ae(Te(t),{recursive:!0});let a=Buffer.alloc(s.length*4);for(let f=0;f<s.length;f++)a.writeFloatLE(s[f],f*4);let m=`${t}.tmp`;ye(m,a),Ee(m,t)}catch(t){C(`[embed] Failed to cache vector: ${t instanceof Error?t.message:String(t)}`,"EMBED_CACHE_WRITE_FAILED")}}export{De as a,Oe as b,je as c,We as d,qe as e};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as o,b as i}from"./chunk-
|
|
2
|
+
import{a as o,b as i}from"./chunk-4EFDEDTL.js";import{resolve as n}from"path";async function w(c,s,r={}){let e=i({verb:c,mode:"cli",contextRoot:n(process.cwd(),".context"),env:o(),write:r.write});try{let t=await s(e);return r.write&&t===0&&await e.lateBindContext(n(process.cwd(),".context")),t===1&&process.stderr.write(e.supportFooter()+`
|
|
3
3
|
`),await e.end({exit_code:t}),t}catch(t){throw e.error("cli_crash"),process.stderr.write(e.supportFooter()+`
|
|
4
4
|
`),await e.end({exit_code:1}),t}}export{w as a};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as $}from"./chunk-
|
|
2
|
+
import{a as $}from"./chunk-QQ67Z4IW.js";import{f as D}from"./chunk-3IM5QGVV.js";import{a as E}from"./chunk-NLCCBXXV.js";function U(e){return["completed","failed","ended","stopped"].includes(e.trim().toLowerCase())}function je(e){return["ended","stopped"].includes(e.trim().toLowerCase())}function q(e){return{requestId:e.requestId,objective:e.objective,status:"",turnActive:!1,scenarios:[],thinking:"",thinkingLog:[],chatLog:[],progress:0}}function Re(e){return e.pendingClarification===void 0?e:{...e,pendingClarification:void 0}}function Ce(e){return{...e,turnActive:!0,error:void 0,thinking:"",thinkingLog:[]}}function P(e,t){switch(t.type){case"thinking":return{...e,status:"thinking",thinking:e.thinking+t.delta};case"thinking_done":return{...e,thinkingLog:[...e.thinkingLog,{text:e.thinking,tookMs:t.tookMs}],thinking:""};case"progress":return{...e,progress:t.pct};case"snapshot":return{...e,scenarios:t.data.scenarios,status:t.data.status,headline:t.data.headline??e.headline};case"chat":return{...e,turnActive:!1,chatLog:[...e.chatLog,{role:"model",text:t.text}]};case"clarification":return{...e,turnActive:!1,chatLog:[...e.chatLog,{role:"model",text:t.text}],pendingClarification:t.text};case"limit":return{...e,limits:{scenarioLimit:t.scenarioLimit,perScenarioLimit:t.perScenarioLimit}};case"error":return{...e,error:t.message};case"done":return{...e,status:t.status,turnActive:!1,error:t.status==="failed"&&!e.error?"generation failed":e.error}}}function H(e,t){let n=[],i=e.type??"",d=e.status??"";if(i==="ping")return n;switch(i){case"thinking_token":typeof e.data=="string"&&n.push({type:"thinking",delta:e.data});break;case"thinking_stopped":{let r=e.data??{},o=se(r.time_taken);n.push({type:"thinking_done",text:typeof e.data=="string"?e.data:r.message??"",tookMs:o});break}case"progress":{let r=e.data??{};typeof r.progress=="number"&&n.push({type:"progress",pct:r.progress});break}case"clarification":{let r=e.data??{};typeof r.message=="string"&&n.push({type:"clarification",text:r.message});break}case"chatting_stopped":{let r=e.data??{};typeof r.message=="string"&&r.message.length>0&&n.push({type:"chat",text:r.message});break}case"limit_update":{let r=e.data??{},o=r.test_cases_limit??e.test_cases_limit,p=r.per_scenario_test_cases_limit??e.per_scenario_test_cases_limit;n.push({type:"limit",scenarioLimit:o,perScenarioLimit:p});break}case"error":{let r=typeof e.data=="string"?e.data:e.data?.message??"generation error";n.push({type:"error",message:r});break}case"request_cancelled":return n.push({type:"done",status:"stopped"}),n;case"session_ended":return n.push({type:"done",status:"ended"}),n;default:break}if(Array.isArray(e.scenarios)&&n.push({type:"snapshot",data:{requestId:t,status:d,headline:e.headline,scenarios:e.scenarios}}),d&&U(d)){let r=d.trim().toLowerCase();n.push({type:"done",status:r})}return n}function se(e){if(!e)return;let t=/^([\d.]+)(ms|s)?$/.exec(e.trim());if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return t[2]==="ms"?Math.round(n):Math.round(n*1e3)}var v=class extends Error{constructor(t){super(t),this.name="AuthError"}},M=class extends Error{constructor(t){super(t),this.name="ForbiddenError"}},I=class extends Error{constructor(t){super(t),this.name="InsufficientCreditsError"}},k=class extends Error{constructor(n,i){super(n);this.cause=i;this.name="TransportError"}};function x(e,t){let n=t?.message??t?.error??`HTTP ${e}`;return e===401?new v(n):e===403?t?.key==="insufficient_credits"?new I(n):new M(n):new k(n)}async function*J(e){let t=e.fetchImpl??fetch,n=e.maxRetries??5,i=e.maxBackoffMs??3e4,d=e.connectTimeoutMs??1e4,r=0,o=!1;for(;;){if(e.signal.aborted)return;let p=new AbortController,a=()=>p.abort();e.signal.addEventListener("abort",a,{once:!0});let c=setTimeout(()=>p.abort(),d),g;try{g=await t(e.url,{method:"GET",headers:{Authorization:await e.authHeader(),Accept:"text/event-stream"},signal:p.signal})}catch(w){if(clearTimeout(c),e.signal.removeEventListener("abort",a),e.signal.aborted)return;if(++r>n)throw new k("SSE connect failed",w);await O(F(r,i));continue}if(clearTimeout(c),!g.ok){e.signal.removeEventListener("abort",a);let w=await oe(g);if(g.status===401&&o){if(++r>n)throw x(401,w);await O(F(r,i));continue}throw x(g.status,w)}if(!g.body)throw e.signal.removeEventListener("abort",a),new k("SSE response had no body");o=!0,r=0;let m=g.body.getReader(),h=new TextDecoder("utf-8"),b="";try{for(;;){if(e.signal.aborted){await m.cancel().catch(()=>{});return}let{done:w,value:s}=await m.read();if(w)break;b+=h.decode(s,{stream:!0});let f;for(;(f=b.indexOf(`
|
|
3
3
|
|
|
4
4
|
`))>=0;){let u=b.slice(0,f);b=b.slice(f+2);let l=ie(u);l&&(yield l)}}}catch(w){if(e.signal.aborted)return;if(++r>n)throw new k("SSE stream dropped",w);await O(F(r,i));continue}finally{e.signal.removeEventListener("abort",a)}return}}function ie(e){let t="message",n="";for(let i of e.split(`
|
|
5
5
|
`))i.startsWith("event:")?t=i.slice(6).trim():i.startsWith("data:")&&(n+=i.slice(5).trim());if(t!=="message"||!n)return null;try{let i=Buffer.from(n,"base64").toString("utf-8");return JSON.parse(i)}catch{return null}}function F(e,t){return Math.min(t,1e3*2**(e-1))}function O(e){return new Promise(t=>setTimeout(t,e))}async function oe(e){try{return await e.clone().json()}catch{return}}function W(e,t){t?.length&&(e.append("files",t.map(n=>n.fileKey).join(",")),e.append("gemini_metadata",JSON.stringify(t.map(n=>({fileData:{fileUri:n.geminiUri,mimeType:n.mimeType}})))))}function Ue(e,t={}){let n=t.fetchImpl??fetch,i=new Map,d=!0;async function r(){let s=await e.authResolver.resolve();if(!s)throw new v("unauthorized; run `kane-cli login`");return E(s.username,s.access_key)}function o(s){return`${e.baseUrl}${s}`}async function p(s){if(!s.ok){let f;try{f=await s.clone().json()}catch{f=void 0}throw x(s.status,f)}return s.json()}function a(s){let f=s?.data??s;return{request_id:f.request_id??f.id,status:f.status??""}}function c(s,f,u,l){let y=q({requestId:s,objective:f});l&&(y=P(y,{type:"snapshot",data:l}),l.status==="cleaned_up"&&(y={...y,error:"session was reaped (cleaned_up) \u2014 continuing will destructively regenerate"}));let S=new AbortController;u&&(u.aborted?S.abort():u.addEventListener("abort",()=>S.abort(),{once:!0})),i.set(s,S);let A={requestId:s,state:y,events:void 0};return A.events=(async function*(){try{let C=J({url:o(`/requests/${s}/sse`),authHeader:r,signal:S.signal,log:e.log,fetchImpl:n});for await(let L of C)for(let z of H(L,s))A.state=P(A.state,z),yield z}finally{i.delete(s)}})(),A}async function g(s,f){let u=new FormData;u.append("prompt",s.prompt),d=s.memoryEnhancement??!0,u.append("memory_enhancement",String(d)),s.scenarioLimit!==void 0&&u.append("test_scenario_limit",String(s.scenarioLimit)),s.perScenarioLimit!==void 0&&u.append("per_scenario_test_cases_limit",String(s.perScenarioLimit));let l=s.projectId??e.projectId,y=s.folderId??e.folderId;l&&u.append("project_id",l),y&&u.append("folder_id",y),W(u,s.attachments);let S=await n(o("/requests"),{method:"POST",headers:{Authorization:await r()},body:u}),A=await p(S),{request_id:C}=a(A),L=String(C);return c(L,s.prompt,f)}async function m(s,f){let u=await n(o(`/requests/${s}`),{method:"GET",headers:{Authorization:await r()}}),l=await p(u),y=l?.data??l,S={requestId:s,status:y.status??"",headline:y.headline,scenarios:Array.isArray(y.scenarios)?y.scenarios:[]};return c(s,"",f,S)}async function h(s,f,u){let l=new FormData;l.append("prompt",f),l.append("chat_enabled","true"),l.append("memory_enhancement",String(d)),u?.mappings&&l.append("mappings",JSON.stringify(u.mappings)),W(l,u?.attachments);let y=await n(o(`/requests/${s}`),{method:"PUT",headers:{Authorization:await r()},body:l});if(!y.ok){let S;try{S=await y.clone().json()}catch{}throw x(y.status,S)}}async function b(s){i.get(s)?.abort();let u=await n(o(`/requests/${s}/stop`),{method:"DELETE",headers:{Authorization:await r()}});if(!u.ok&&u.status!==404){let l;try{l=await u.clone().json()}catch{}throw x(u.status,l)}}async function w(s){i.get(s)?.abort();let u=await n(o(`/requests/${s}/end`),{method:"DELETE",headers:{Authorization:await r()}});if(!u.ok&&u.status!==404){let l;try{l=await u.clone().json()}catch{}throw x(u.status,l)}}return{start:g,attach:m,chat:h,cancel:b,end:w}}import{statSync as ae,realpathSync as G,existsSync as ce}from"fs";import{extname as ue,resolve as j,isAbsolute as pe}from"path";import{homedir as V}from"os";var de=new Set([".txt",".md",".json",".xml",".jpg",".jpeg",".png",".gif",".bmp",".webp",".pdf",".docx",".csv",".xlsx",".mp3",".wav",".m4a",".webm",".mpeg",".mpga",".mp4",".mov"]),le=50*1024*1024,X=10;function fe(e){return e==="~"?V():e.startsWith("~/")?j(V(),e.slice(2)):e}function Ge(e,t){let n=[],i=[],d=new Set,r=[],o=(()=>{try{return G(j(t))}catch{return j(t)}})(),p=o.endsWith("/")?o:o+"/";for(let a of e){let c=fe(a),g=pe(c)?c:j(t,c);if(!ce(g)){n.push(`Not found: ${a}`);continue}let m;try{m=G(g)}catch{n.push(`Cannot resolve: ${a}`);continue}if(d.has(m))continue;let h;try{h=ae(m)}catch{n.push(`Cannot read: ${a}`);continue}if(!h.isFile()){n.push(`Not a file: ${a}`);continue}if(h.size===0){n.push(`Empty file: ${a}`);continue}let b=ue(m).toLowerCase();if(!de.has(b)){n.push(`Unsupported type ${b||"(none)"}: ${a}`);continue}if(h.size>le){n.push(`Too large (>50MB): ${a}`);continue}m!==o&&!m.startsWith(p)&&i.push(`Outside working dir: ${a}`),d.add(m),r.push(m)}return r.length>X&&n.push(`Too many files: ${r.length} (max ${X})`),{ok:n.length?[]:r,errors:n,warnings:i}}var B=class extends Error{constructor(n){super(n.join("; "));this.errors=n;this.name="AttachmentValidationError"}};async function Xe(e){let{promptText:t,filePaths:n,cwd:i,scenarios:d,isRefine:r,conn:o,deps:p}=e,{ok:a,errors:c,warnings:g}=p.validate(n,i);if(c.length)throw new B(c);e.onValidated?.();let m=a.length?await p.upload(o,a,p.onUpload):[],h=r?p.buildMappings(t,d):void 0;return{promptText:t,mappings:h,attachments:m,warnings:g}}import{readFile as me}from"fs/promises";import{basename as K}from"path";async function ge(e){let t=await e.authResolver.resolve();if(!t)throw new v("unauthorized; run `kane-cli login`");return E(t.username,t.access_key)}async function he(e,t,n={}){let i=n.fetchImpl??fetch,d=await me(t),r=K(t),o=new FormData;o.append("file",new Blob([d]),r),o.append("source","omniBox"),o.append("geminiFileUpload","true");let p=await i(`${e.tmsBaseUrl}/v1/attachment`,{method:"POST",headers:{Authorization:await ge(e)},body:o,signal:n.signal});if(!p.ok){let h;try{h=await p.clone().json()}catch{}throw x(p.status,h)}let a=await p.json(),c=a?.data??a,g=c?.gemini_response?.uri,m=c?.gemini_response?.mimeType;if(!c?.file_key||!g){let h=c&&typeof c=="object"?Object.keys(c).join(","):typeof c,b=(()=>{try{return JSON.stringify(c).slice(0,500)}catch{return"<unserializable>"}})();throw new Error(`attachment upload for ${r} returned no file_key/gemini uri \u2014 status ${p.status}, body keys: [${h}], raw: ${b}`)}return{fileName:c.file_name??r,fileKey:c.file_key,geminiUri:g,mimeType:m??"application/octet-stream"}}async function tt(e,t,n,i={}){let d=[];for(let r=0;r<t.length;r++){if(i.signal?.aborted)throw Object.assign(new Error("upload aborted"),{name:"AbortError"});let o=K(t[r]);n?.({file:o,index:r+1,total:t.length,status:"uploading"});try{d.push(await he(e,t[r],i)),n?.({file:o,index:r+1,total:t.length,status:"done"})}catch(p){throw n?.({file:o,index:r+1,total:t.length,status:"failed"}),p}}return d}var ye=/@([sS])(\d+)\.([cC])(\d+)/g,be=/@([sS])(\d+)(?!\d)(?!\.[cC]\d)/g;function rt(e,t){let n={},i={};for(let d of e.matchAll(ye)){let r=Number(d[2]),o=Number(d[4]),p=t[r-1];if(!p)continue;n[`s${r}`]=String(p.id);let a=p.test_cases??[];if(a[o-1])for(let c=0;c<o;c++){let g=a[c];g&&(i[`s${r}.c${c+1}`]=String(g.id))}}for(let d of e.matchAll(be)){let r=Number(d[2]),o=t[r-1];o&&(n[`s${r}`]=String(o.id))}if(!(Object.keys(n).length===0&&Object.keys(i).length===0))return{scenario:n,testcase:i}}function R(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(n==null||typeof n!="object")return[];let i=n;if(typeof i.step!="string")return[];let d=typeof i.expected_result=="string"?i.expected_result:typeof i.outcome=="string"?i.outcome:"";t.push({step:i.step,expected:d})}return t}var we=30,Se=300;function Z(){return{mode:"testing",max_steps:we,timeout:Se,variables:{}}}function Q(e){return e.title??`Test case ${e.id}`}function ct(e,t){return $({frontmatter:Z(),heading:Q(t),steps:e.sub_objectives.map(n=>n.objective)})}function Y(e){let t=R(e.manual_steps).map(n=>n.step);return $({frontmatter:Z(),heading:Q(e),steps:t})}import{mkdtempSync as xe,mkdirSync as N,writeFileSync as ee,rmSync as te,renameSync as _e,existsSync as ne,readFileSync as ve}from"fs";import{join as _,resolve as ke}from"path";async function ft(e,t,n,i=Y){(n.redirectBareCwd??!0)&&ke(t)===process.cwd()&&(t=_(t,".testmuai","tests"));let d=T(e.objective)??e.headline,r=T(n.suiteName)??`${T(re(d,4))??"tcg"}-${e.requestId}`,o=r,p=_(t,r);ne(p)&&!Te(p,e.requestId)&&(o=`${r}-${e.requestId}`);let a=_(t,o),c=[],g=new Map;for(let h of e.scenarios){let b=(h.test_cases??[]).filter(Ae);if(b.length===0)continue;let w=T(Ee(h.scode))??T(h.sid)??`s${h.id}`,s=g.get(w)??new Set;g.set(w,s);for(let f of b){let u=T(re(f.title,5))??"case",l=`${u}_test.md`;for(let y=2;s.has(l);y++)l=`${u}-${y}_test.md`;s.add(l),c.push({dir:w,file:l,tc:f})}}if(c.length===0)return{suiteDir:a,paths:[],warning:"no functional test cases generated"};N(t,{recursive:!0});let m=xe(_(t,".tcg-tmp-"));try{N(_(m,"helpers"),{recursive:!0}),ee(_(m,".tcg-suite.json"),JSON.stringify({requestId:e.requestId,suiteName:o}));let h=[],b=new Set;for(let s of c){let f=_(m,s.dir);b.has(f)||(N(f,{recursive:!0}),b.add(f));let u=_(f,s.file);ee(u,i(s.tc)),h.push(u)}ne(a)&&te(a,{recursive:!0,force:!0}),_e(m,a);let w=h.map(s=>s.replace(m,a));return{suiteDir:a,paths:w}}catch(h){try{te(m,{recursive:!0,force:!0})}catch{}throw h}}function Ae(e){return(e.category??"").trim().toLowerCase()==="functional"}function Te(e,t){try{return JSON.parse(ve(_(e,".tcg-suite.json"),"utf-8"))?.requestId===t}catch{return!1}}function T(e){return e&&e.length>0?e:void 0}function re(e,t){return e?e.toLowerCase().replace(/[^a-z0-9]+/g," ").trim().split(/\s+/).filter(Boolean).slice(0,t).join("-"):""}function Ee(e){return e?e.replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,""):""}function ht(e){let t=[];e.title&&t.push(e.title),e.description&&t.push("",e.description);let n=R(e.manual_steps);return n.length>0&&(t.push("","Steps:"),n.forEach((i,d)=>{t.push(`${d+1}. ${i.step}`)})),t.join(`
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as j}from"./chunk-VZ7KXRXB.js";import{c as C}from"./chunk-EYOCNMUM.js";import{dirname as z,basename as U,join as y}from"path";function Z(e){let t=U(e);return t.endsWith("_test.md")?t.slice(0,-8):t.endsWith(".md")?t.slice(0,-3):t}function k(e){return y(z(e),`output-${Z(e)}`)}function Te(e){return y(k(e),"Result.md")}function T(e){return y(k(e),".internal")}function O(e){return y(T(e),"meta.json")}function Ae(e,t,r){return y(k(e),`${t}-${r}-code`)}function Ie(e){return y(k(e),"generated-code")}function Le(e){return k(e)+".staging"}function Q(e){return y(T(e),"steps")}function Pe(e,t,r){return y(Q(e),`${t}-${r}`)}import{existsSync as u,renameSync as S,rmSync as _}from"fs";function Ke(e){let t=`${e}.staging`,r=`${e}.bak`;if(!u(t))throw new Error(`atomicReplaceDir: staging missing: ${t}`);if(process.platform==="win32"){u(e)&&_(e,{recursive:!0,force:!0}),S(t,e);return}u(e)&&(u(r)&&_(r,{recursive:!0,force:!0}),S(e,r)),S(t,e),u(r)&&_(r,{recursive:!0,force:!0})}function Ge(e){let t=`${e}.staging`,r=`${e}.bak`;if(process.platform==="win32"){u(t)&&(u(e)?_(t,{recursive:!0,force:!0}):S(t,e));return}if(u(r)&&!u(e)){S(r,e),u(t)&&_(t,{recursive:!0,force:!0});return}u(r)&&u(e)&&_(r,{recursive:!0,force:!0}),u(t)&&u(e)&&_(t,{recursive:!0,force:!0})}import{readFileSync as Se,existsSync as xe}from"fs";import{basename as N,dirname as Re,isAbsolute as $e,resolve as J}from"path";import{dirname as X,isAbsolute as ee,resolve as te}from"path";var a=class extends Error{constructor(r,o,n){super(`[${o}${n!=null?`:${n}`:""}] ${r}`);this.file=o;this.line=n;this.name="TestMdParseError"}},ne=new Set(["username","access_key","oauth","profile","project_id","folder_id"]),A=new Set(["mode","max_steps","timeout","global_context","local_context","variables","session_context","code_export","code_language","url","target","chrome_profile","cdp_endpoint","ws_endpoint","headless","app","no_reset","os_version","device_name","on_lock_conflict","tags","assurance"]),I=new Set(["optional"]),re=new Set(["optional","variables"]),oe=new Set(["target","chrome_profile","cdp_endpoint","ws_endpoint","headless"]),ie=new Set(["app","no_reset","os_version","device_name"]),se=new Set(["mode","on_lock_conflict","tags","assurance"]);function L(e,t){let r=t.split(`
|
|
3
|
+
`),{global:o,bodyStartLine:n}=ae(e,r),{title:c,steps:i}=be(e,r,n);return{path:e,title:c,global:o,steps:i}}function ae(e,t){if(t[0]?.trim()!=="---")return{global:{},bodyStartLine:0};let r=-1;for(let d=1;d<t.length;d++)if(t[d].trim()==="---"){r=d;break}if(r===-1)throw new a("frontmatter is missing closing '---'",e,1);let o=t.slice(1,r).join(`
|
|
4
|
+
`),n;try{n=j(o)??{}}catch(d){throw new a(`invalid YAML in frontmatter: ${d.message}`,e,1)}if(V(e,n,"frontmatter",1),n.on_lock_conflict!==void 0){let d=n.on_lock_conflict;if(d!=="readonly"&&d!=="fail"&&d!=="wait")throw new a(`on_lock_conflict must be 'readonly' | 'fail' | 'wait', got: ${JSON.stringify(d)}`,e,1)}if(F(e,n,1),n.assurance!==void 0){let d=n.assurance;if(d===null||typeof d!="object"||Array.isArray(d))throw new a("assurance must be a mapping with sub-keys {id, base}",e,1);let f=d;for(let g of Object.keys(f))if(g!=="id"&&g!=="base")throw new a(`unknown assurance sub-key '${g}' \u2014 the engine block allows only {id, base}`,e,1);if(typeof f.id!="string"||f.id.length===0)throw new a("assurance.id must be a non-empty string (logical id)",e,1);if(f.base!==void 0&&!(typeof f.base=="string"&&/^sha256:[0-9a-f]+$/.test(f.base)))throw new a("assurance.base must be a 'sha256:<hex>' string",e,1)}if(n.tags!==void 0){let d=n.tags,f=Array.isArray(d)?d.map(g=>String(g)).join(","):String(d);n.tags=ce(f,e,1)}if(n.target!==void 0&&(n.target=le(n.target,e,1)),n.app!==void 0&&(n.app=ge(n.app,e,1)),n.no_reset!==void 0&&typeof n.no_reset!="boolean")throw new a(`no_reset must be boolean: got ${typeof n.no_reset}`,e,1);if(n.os_version!==void 0&&typeof n.os_version!="string")if(typeof n.os_version=="number")n.os_version=String(n.os_version);else throw new a(`os_version must be a string: got ${typeof n.os_version}`,e,1);let c=n.target,i=c==="emulator"||c==="simulator";if(i&&n.app===void 0)throw new a(`target: ${String(c)} needs an app \u2014 add \`app: <path-to-build | AppId>\``,e,1);if(!i&&n.app!==void 0)throw new a("app requires a mobile target \u2014 add `target: emulator` or `target: simulator`",e,1);if(!i&&n.no_reset!==void 0)throw new a("no_reset requires a mobile target \u2014 add `target: emulator` or `target: simulator`",e,1);if(!i&&n.os_version!==void 0)throw new a("os_version requires a mobile target \u2014 add `target: emulator` or `target: simulator`",e,1);if(n.device_name!==void 0&&typeof n.device_name!="string")throw new a(`device_name must be a string: got ${typeof n.device_name}`,e,1);if(!i&&n.device_name!==void 0)throw new a("device_name requires a mobile target \u2014 add `target: emulator` or `target: simulator`",e,1);return{global:n,bodyStartLine:r+1}}function ce(e,t,r){let n=e.trim().replace(/^\[/,"").replace(/\]$/,"").split(",").map(c=>c.trim().toLowerCase());if(n.length===0||n.some(c=>c.length===0))throw new a("tags must be a non-empty list of non-empty strings",t,r);return[...new Set(n)]}var de=new Set(["chrome","cdp","ws","emulator","simulator"]),fe="target must be one of 'chrome' | 'cdp' | 'ws' (web) or 'emulator' | 'simulator' (mobile, with a root `app:` key)";function le(e,t,r){if(typeof e=="string"&&de.has(e))return e;throw e!==null&&typeof e=="object"&&!Array.isArray(e)?new a(`the mapping form of target is no longer accepted \u2014 write flat keys:
|
|
5
|
+
target: emulator | simulator
|
|
6
|
+
app: <path-to-build | AppId>`,t,r):new a(`${fe} \u2014 got: ${JSON.stringify(e)}`,t,r)}function ge(e,t,r){if(typeof e!="string"||e.trim().length===0)throw new a("app must be a build (e.g. ./builds/app-debug.apk) or an app id from your cloud uploads",t,r);let o=e.trim();if(!/\.(apk|zip)$/i.test(o)&&!/^APP\d{6,}$/.test(o))throw new a(`app '${o}' is not a build \u2014 expected a path ending in .apk or .zip, or an app id from your cloud uploads.`,t,r);return ue(o,t)}function ue(e,t){return/^APP[0-9A-Za-z_-]+$/.test(e)||ee(e)?e:te(X(t),e)}function We(e){let t=e.target;if(!(t!=="emulator"&&t!=="simulator"))return{platform:C(t)??"",app:e.app??"",...e.no_reset!==void 0?{no_reset:e.no_reset}:{}}}function P(e){let t=e.target;return t==="chrome"||t==="cdp"||t==="ws"?t:void 0}var pe=/\s@verifies\s+(ac-[\w.:\/-]+(?:\s*,\s*ac-[\w.:\/-]+)*)\s*$/;function me(e,t,r){let o=pe.exec(t);if(o)return{label:t.slice(0,o.index).trim(),verifies:o[1].split(",").map(c=>c.trim())};let n=t.lastIndexOf("@verifies");if(n>0&&/\s/.test(t[n-1])){let c=t.slice(n+9).split(/[\s,]+/).filter(i=>i.length>0);if(c.length===0||c.every(i=>i.startsWith("ac-")))throw new a("malformed @verifies directive \u2014 expected '@verifies ac-<id>[, ac-<id>\u2026]' at the end of the heading",e,r)}return{label:t,verifies:[]}}function be(e,t,r){let o,n=r;for(;n<t.length&&t[n].trim()==="";)n++;let c=n<t.length?/^#\s+(.+?)\s*$/.exec(t[n]):null;c&&(o=c[1],n++);let i=[];for(let f=n;f<t.length;f++)/^##\s/.test(t[f])&&i.push(f);let d=[];for(let f=0;f<i.length;f++){let g=i[f],p=i[f+1]??t.length,h=t[g].replace(/^##\s+/,"").trim(),{label:s,verifies:l}=me(e,h,g+1),m=t.slice(g+1,p),{config:b,body:w,optional:R}=he(e,g+1,m);d.push({index:f+1,heading:s,verifies:l,config:b,body:w,headingLine:g+1,optional:R})}return{title:o,steps:d}}function he(e,t,r){let o=0;for(;o<r.length&&r[o].trim()==="";)o++;let n,c=t;if(o<r.length&&/^```yaml\s*$/.test(r[o])){let l=o;c=t+l,o++;let m=-1;for(;o<r.length;){if(/^```\s*$/.test(r[o])){m=o;break}o++}if(m===-1)throw new a("step-config fenced ```yaml block is not closed",e,c);let b=r.slice(l+1,m).join(`
|
|
7
|
+
`);try{n=j(b)??{}}catch(w){throw new a(`invalid YAML in step config: ${w.message}`,e,c)}o=m+1}let i=we(r.slice(o)),d=i.filter(l=>l.trim()!=="");if(d.length>0&&/^@session\s+/.test(d[0].trim()))throw new a("@session is no longer supported (iteration 3); use @import instead",e,t);let f=/^@import\s+(\S.*)$/,p=i.filter(l=>f.test(l.trim())).length>0;if(p&&d.length!==1)throw new a("step body must be exactly one of prose / @import",e,t);let h=!1,s;if(n){if(V(e,n,p?"step config (ref)":"step config (objective)",c),F(e,n,c),typeof n.optional=="boolean")h=n.optional;else if(n.optional!==void 0)throw new a(`step config 'optional' must be boolean: got ${typeof n.optional}`,e,c);let l={...n};delete l.optional,p&&delete l.variables,!p&&Object.keys(l).length>0&&(s=l)}if(p){let m=f.exec(d[0].trim())[1].trim(),b=n?.variables;return{body:{kind:"import_ref",path:m,...b&&Object.keys(b).length>0?{bindings:b}:{}},optional:h}}return{body:{kind:"objective",text:i.join(`
|
|
8
|
+
`).trim()},config:s,optional:h}}function we(e){let t=0,r=e.length;for(;t<r&&e[t].trim()==="";)t++;for(;r>t&&e[r-1].trim()==="";)r--;return e.slice(t,r)}function F(e,t,r){let o=t.variables;if(o==null)return;if(typeof o!="object"||Array.isArray(o))throw new a("variables must be an object map",e,r);let n={};for(let[c,i]of Object.entries(o))if(typeof i=="string")n[c]={value:i};else if(i&&typeof i=="object"&&!Array.isArray(i)&&typeof i.value=="string")n[c]=i;else throw new a(`variable '${c}' must be a string or { value: ... } object`,e,r);t.variables=n}function V(e,t,r,o){for(let n of Object.keys(t)){if(ne.has(n))throw new a(`auth/identity keys are CLI-only: ${n}`,e,o);if(r==="frontmatter"){if(I.has(n))throw new a(`step-only key in frontmatter: ${n}`,e,o);if(!A.has(n))throw new a(`unknown config key: ${n}`,e,o)}else if(r==="step config (objective)"){if(!A.has(n)&&!I.has(n))throw new a(`unknown config key: ${n}`,e,o);if(oe.has(n))throw new a(`chrome config is global-only: ${n}`,e,o);if(ie.has(n))throw new a(`'${n}' is global-only: the whole run drives one app`,e,o);if(se.has(n))throw new a(`'${n}' is run-level and cannot be set per-step`,e,o)}else if(!re.has(n))throw new a(`step config on @import may only contain 'optional' / 'variables': got ${n}`,e,o)}}import{createHash as K}from"crypto";function x(e){if(e==null)return null;if(Array.isArray(e))return e.map(x);if(typeof e=="object"){let t={};for(let r of Object.keys(e).sort()){let o=e[r];o!==void 0&&(t[r]=x(o))}return t}return e}function ye(e){if(e.body.kind!=="objective")throw new Error("stepMd5: only objective steps have an md5; @import rows do not");let t={...e.config??{},optional:e.optional??!1},r=JSON.stringify(x(t));return K("md5").update(e.body.text).update(`
|
|
9
|
+
`).update(r).digest("hex")}function G(e){let t={};for(let[o,n]of Object.entries(e.bindings??{}))t[o]={value:n.value,...n.secret===!0?{secret:!0}:{},...n.syntax?{syntax:n.syntax}:{}};let r=JSON.stringify(x({bindings:t,optional:e.optional}));return K("md5").update(e.path).update(`
|
|
10
|
+
`).update(r).digest("hex")}function He(e){return ye({index:e.trace[e.trace.length-1].stepIndex,heading:e.trace[e.trace.length-1].heading,verifies:[],body:{kind:"objective",text:e.objective},config:e.parsedConfig,headingLine:1,optional:e.optional})}import{writeFileSync as _e,mkdirSync as ve,readFileSync as ke}from"fs";import{dirname as Y}from"path";function D(e){try{return JSON.parse(ke(O(e),"utf8"))}catch{return null}}function Xe(e){let t=O(e.sourcePath);try{ve(Y(t),{recursive:!0})}catch(o){return process.stderr.write(`
|
|
11
|
+
\u26A0 Failed to create output directory.
|
|
12
|
+
${o.message}
|
|
13
|
+
Path: ${Y(t)}
|
|
14
|
+
|
|
15
|
+
`),t}let r={commit_id:e.commitId};e.testId!==void 0&&(r.test_id=e.testId),e.testcaseId!==void 0&&(r.testcase_id=e.testcaseId),e.projectId!==void 0&&(r.project_id=e.projectId),e.folderId!==void 0&&(r.folder_id=e.folderId),e.orgId!==void 0&&(r.org_id=e.orgId),e.sessionName!==void 0&&(r.session_name=e.sessionName),e.plan!==void 0&&(r.plan=e.plan);try{_e(t,JSON.stringify(r,null,2)+`
|
|
16
|
+
`,"utf8")}catch(o){process.stderr.write(`
|
|
17
|
+
\u26A0 Failed to write meta.json.
|
|
18
|
+
${o.message}
|
|
19
|
+
Path: ${t}
|
|
20
|
+
|
|
21
|
+
`)}return t}var W=["target","chrome_profile","cdp_endpoint","ws_endpoint","headless"],je=["app","no_reset","os_version","device_name"],Oe=["mode","on_lock_conflict","tags","target","chrome_profile","cdp_endpoint","ws_endpoint","headless","app","no_reset","os_version","device_name"],v=class extends Error{constructor(t){super(t),this.name="TestMdResolveError"}};function E(e){return N(e).endsWith("_test.md")?"test":"helper"}function st(e){let t=J(e),r=B(t),o=Ee(r.global),n=[],c=[],i=[{file:t,kind:E(t)}],d=[];return q(r,c,n,[],t,{},i,d,{}),n.forEach((g,p)=>g.flatIndex=p+1),{rootPath:t,rootTitle:r.title,rootGlobal:r.global,rootSteps:r.steps,chrome:o,steps:n,unitFiles:i,warnings:d}}function at(e){let t=[];for(let r of e.unitFiles){if(r.kind!=="test")continue;let o=D(r.file);o&&t.push({file:r.file,...o.project_id?{project_id:String(o.project_id)}:{},...o.org_id?{org_id:String(o.org_id)}:{}})}return t}function B(e){if(!xe(e))throw new v(`@import path not found: ${e}`);let t=Se(e,"utf8");return L(e,t)}function q(e,t,r,o,n,c,i,d,f){if(t.includes(e.path)){let s=[...t,e.path].map(l=>N(l)).join(" \u2192 ");throw new v(`cyclic reference: ${s}`)}t.push(e.path);let g=o.length===0,p=e.global.variables??{};for(let s of Object.keys(c))if(Object.hasOwn(p,s))throw new v(`callsite binding '${s}' collides with a declared variable in ${e.path} (frontmatter variables are pinned; parameters are its undeclared names)`);let h=e.global;if(!g){let s={...e.global};for(let l of Oe)s[l]!==void 0&&(d.push(`${e.path}: '${l}' is root-governed on imported units \u2014 ignored`),delete s[l]);s.url!==void 0&&(f.pending=String(s.url),delete s.url),h=s}for(let s of e.steps){let l=s.body.kind!=="objective";if(s.optional&&l&&!g)throw new v(`intermediate-ref 'optional' is not supported in v1: ${e.path}:${s.headingLine}`);if(s.body.kind==="objective"){let $={file:e.path,stepIndex:s.index,heading:s.heading,optional:s.optional??!1},H=Me(h,s.config,c),M={flatIndex:0,objective:s.body.text,sourceFile:e.path,trace:[...o,$],config:H,parsedConfig:s.config,optional:s.optional??!1,verifies:s.verifies,owningFile:e.path,unitKind:E(e.path)};f.pending&&(M.unitEntryUrl=f.pending,f.pending=void 0),r.push(M);continue}let m={file:e.path,stepIndex:s.index,heading:s.heading,optional:s.optional??!1,rowMd5:G({path:s.body.path,bindings:s.body.bindings,optional:s.optional??!1})},b=Re(e.path),w=$e(s.body.path)?s.body.path:J(b,s.body.path),R=B(w);i.some($=>$.file===w)||i.push({file:w,kind:E(w)}),q(R,t,r,[...o,m],n,s.body.bindings??{},i,d,f)}g||(f.pending=void 0),t.pop()}function Ee(e){let t={};for(let r of W){if(r==="target"){let o=P(e);o!==void 0&&(t.target=o);continue}e[r]!==void 0&&(t[r]=e[r])}return t}function Me(e,t,r){let o={};for(let[i,d]of Object.entries(e))W.includes(i)||je.includes(i)||(o[i]=d);let n={...o,...t??{}},c={...r,...e.variables??{},...t?.variables??{}};return Object.keys(c).length>0?n.variables=c:delete n.variables,n}export{Z as a,k as b,Te as c,T as d,O as e,Ae as f,Ie as g,Le as h,Q as i,Pe as j,Ke as k,Ge as l,L as m,We as n,G as o,He as p,D as q,Xe as r,v as s,st as t,at as u};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as b,b as $}from"./chunk-
|
|
2
|
+
import{a as b,b as $}from"./chunk-AJXOJF2X.js";function C(n){return n.replace(/\n$/,"").split(`
|
|
3
3
|
`).map((l,o)=>`${String(o+1).padStart(4,"0")}| ${l}`).join(`
|
|
4
4
|
`)}function S(n,d,l){if(!n.quote)return n;let o=$(l,n.anchor);if(o!==null&&o.includes(n.quote))return n;let a=d.indexOf(n.quote);if(a===-1||d.indexOf(n.quote,a+1)!==-1)return"gone-or-ambiguous";let t=d.slice(0,a).split(`
|
|
5
5
|
`).length,r=t+n.quote.replace(/\n$/,"").split(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{c as m}from"./chunk-VZ7KXRXB.js";import{a as _}from"./chunk-TDPWFYTJ.js";import{b as h}from"./chunk-
|
|
2
|
+
import{c as m}from"./chunk-VZ7KXRXB.js";import{a as _}from"./chunk-TDPWFYTJ.js";import{b as h}from"./chunk-N2N5T5JN.js";import{randomUUID as F}from"crypto";import{mkdirSync as A,writeFileSync as v,appendFileSync as O,existsSync as b}from"fs";import{join as u}from"path";import{writeFileSync as x,mkdirSync as I,existsSync as j}from"fs";import{join as p,relative as L}from"path";function f(n){let t=Object.keys(n.frontmatter).length>0?m(n.frontmatter).trimEnd():"",s=["---"];return t&&s.push(t),s.push("---",""),s.push(`# ${n.heading}`,""),n.steps.forEach((i,r)=>{s.push(`## Step ${r+1}`,i,"")}),s.join(`
|
|
3
3
|
`)}function T(n,e){let t={},s={},i=e;for(let[r,l]of Object.entries(n)){if(r.startsWith("global.")||r.startsWith("secrets.user.")||r.startsWith("environment.")){let o=r.startsWith("secrets.user.");t[r]={value:l.value,secret:o,syntax:`{{${r}}}`,type:o?"secret":r.startsWith("environment.")?"environment":"global"},s[r]=r;continue}if(l.secret){let o=`secrets.user.${r}`;t[o]={value:l.value,secret:!0,syntax:`{{secrets.user.${r}}}`,type:"secret"},s[r]=o,i=i.replaceAll(`{{${r}}}`,`{{secrets.user.${r}}}`)}else{let o=`global.${r}`;t[o]={value:l.value,secret:!1,syntax:`{{global.${r}}}`,type:"global"},s[r]=o,i=i.replaceAll(`{{${r}}}`,`{{global.${r}}}`)}}return{variables:t,objective:i,keyMap:s}}var w=/\{\{\s*(?:global|secrets\.user|environment)\.([^{}]+?)\s*\}\}/g;function c(n){return typeof n!="string"||!n.includes("{{")?n:n.replace(w,"{{$1}}")}function d(n){if(typeof n=="string")return c(n);if(Array.isArray(n))return n.map(e=>d(e));if(n&&typeof n=="object"){let e={};for(let[t,s]of Object.entries(n))e[t]=d(s);return e}return n}var N=new Set(["username","access_key","oauth","profile","project_id","folder_id"]),$=new Set(["model","env"]),g=class{constructor(e){this.opts=e}objectives=[];flushed=!1;lastWrittenPath=null;lastCollisionSuffixed=!1;appendObjective(e){this.objectives.push(e)}flush(){if(this.flushed||(this.flushed=!0,this.objectives.length===0))return;let e=this.opts.getName();if(!e)return;let t=p(this.opts.cwd,".testmuai","tests");try{I(t,{recursive:!0})}catch(a){process.stderr.write(`
|
|
4
4
|
\u26A0 Failed to create ${L(this.opts.cwd,t)}/
|
|
5
5
|
${a.message}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as u,b as x}from"./chunk-
|
|
2
|
+
import{a as u,b as x}from"./chunk-T3DVIDBA.js";import{x as m}from"./chunk-N2N5T5JN.js";import{a as f}from"./chunk-HCBYKLMW.js";import{a as r,b as i}from"./chunk-C44QQJR4.js";import{e as n}from"./chunk-UR6MHSHU.js";var e=n(f(),1);function C({title:B,titleColor:c,borderColor:d,variant:p,rows:s,footer:t,labelWidth:l=14,marginBottom:b=1}){return(0,e.jsxs)(u,{title:B,titleColor:c,borderColor:d,variant:p,marginBottom:b,children:[s.map((o,a)=>typeof o.value=="string"?(0,e.jsx)(x,{label:o.label,value:o.value,valueColor:o.valueColor,labelWidth:l},`${o.label}-${a}`):(0,e.jsxs)(r,{children:[(0,e.jsx)(r,{width:l,children:(0,e.jsx)(i,{color:m.dim,children:o.label})}),o.value]},`${o.label}-${a}`)),t&&(0,e.jsx)(r,{marginTop:1,children:t})]})}export{C as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as c}from"./chunk-
|
|
2
|
+
import{a as c}from"./chunk-HAGJA7KG.js";import{a as n}from"./chunk-RZ4F3BHX.js";import{u as s,v as a}from"./chunk-N2N5T5JN.js";import{createHash as h,randomBytes as g}from"crypto";var l=class{authBaseUrl;consentUrl;constructor(t="prod"){let e=c(t);this.authBaseUrl=e.authBaseUrl,this.consentUrl=e.consentUrl}static generatePkce(){let t=g(96).toString("base64url").slice(0,128),e=h("sha256").update(t).digest("base64url");return[t,e]}buildAuthorizationUrl(t,e,r,o){let i=new URLSearchParams({response_type:"code",client_id:t,redirect_uri:o,scope:a,code_challenge:e,code_challenge_method:"S256",state:r});return`${this.consentUrl}/oauth2?${i.toString()}`}async registerClient(t){let e=await n(`${this.authBaseUrl}/oauth2/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:s,redirect_uris:[t],grant_types:["authorization_code"],response_types:["code"],client_type:"public",application_type:"native"})});if(!e.ok)throw new Error(`DCR failed: ${e.status} ${await e.text()}`);return e.json()}async exchangeCode(t,e,r,o){let i=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:t,redirect_uri:o,client_id:e,code_verifier:r})});if(!i.ok)throw new Error(`Token exchange failed: ${i.status}`);return i.json()}async refreshToken(t,e){let r=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:t,client_id:e})});if(!r.ok)throw new Error(`Token refresh failed: ${r.status}`);return r.json()}async revokeToken(t,e,r="access_token"){await n(`${this.authBaseUrl}/oauth2/revoke`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t,token_type_hint:r,client_id:e})})}async validateToken(t){let e=new AbortController,r=setTimeout(()=>e.abort(),1e4);try{let o=await n(`${this.authBaseUrl}/api/user`,{headers:{Authorization:`Bearer ${t}`,Accept:"application/json","Content-Type":"application/json"},signal:e.signal});return clearTimeout(r),o.ok}catch{return clearTimeout(r),!1}}};export{l as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{
|
|
2
|
+
import{A as r}from"./chunk-AJXOJF2X.js";function i(t){return r.test(t)?t.toUpperCase():t}export{i as a};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{c as u,d as p}from"./chunk-
|
|
2
|
+
import{c as u,d as p}from"./chunk-44PZPNXJ.js";import{spawn as h}from"child_process";var k=new Set(["progress","ask_user","graph_query","ingest_request","proposal","design","error","done","reasoning_delta","reasoning_done","tool_activity","decision_activity","text_delta","usage","receipt","chat_ops","session_paused","session_complete","state_checkpoint"]);function v(g,n={}){let a=n.spawnCmd!==void 0?n.spawnCmd:u();if(!a)throw new Error("assurance agent not found \u2014 your platform package may be missing; reinstall kane-cli (npm i -g @testmuai/kane-cli)");let f=g.source.images?.length??0;a.tier==="dev-python"&&f>0&&n.onWarn?.("warn: development agent in use \u2014 if image citations are missing, update the agent package");let t=h(a.cmd,a.args,{stdio:["pipe","pipe","pipe"],env:p(g.session_id,n.auth)});if(t.stdin.write(JSON.stringify(g)+`
|
|
3
3
|
`),n.onStderr){let e="";t.stderr.on("data",r=>{e+=r.toString("utf8");let i;for(;(i=e.indexOf(`
|
|
4
4
|
`))>=0;){let o=e.slice(0,i);e=e.slice(i+1),o.trim()&&n.onStderr(o)}})}let d=new Promise(e=>{t.on("exit",(r,i)=>e({code:r,signal:i}))});async function*m(){let e="",r=!1;for await(let i of t.stdout){e+=i.toString("utf8");let o;for(;(o=e.indexOf(`
|
|
5
5
|
`))>=0;){let l=e.slice(0,o).trim();if(e=e.slice(o+1),!l)continue;let c;try{c=JSON.parse(l)}catch{n.onWarn?.(`agent: skipping malformed line: ${l.slice(0,120)}`);continue}let s=c;if(!s||typeof s!="object"||!k.has(s.type)){n.onWarn?.(`agent: skipping unknown event type "${s&&typeof s=="object"?String(s.type??"?"):"?"}"`);continue}if(yield s,s.type==="done"){r=!0;break}}if(r)break}await d.catch(()=>{})}return{events:m(),send:e=>{t.stdin&&!t.stdin.destroyed&&t.stdin.write(JSON.stringify(e)+`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{x as o}from"./chunk-
|
|
2
|
+
import{x as o}from"./chunk-N2N5T5JN.js";import{a as m}from"./chunk-HCBYKLMW.js";import{a as e,b as i}from"./chunk-C44QQJR4.js";import{e as d}from"./chunk-UR6MHSHU.js";var r=d(m(),1),s={default:o.muted,error:o.red,success:o.green,info:o.orange,warning:o.orange};function h({title:t,titleColor:a,borderColor:l,variant:n="default",children:c,width:u,paddingX:x=2,paddingY:g=0,marginBottom:f=0}){let p=l??s[n],B=a??(n==="default"?o.orange:s[n]);return(0,r.jsxs)(e,{flexDirection:"column",marginBottom:f,children:[t&&(0,r.jsx)(e,{marginBottom:0,children:(0,r.jsxs)(i,{color:B,bold:!0,children:[" ",t]})}),(0,r.jsx)(e,{borderStyle:"round",borderColor:p,flexDirection:"column",paddingX:x,paddingY:g,width:u,children:c})]})}function k({label:t,value:a,labelColor:l=o.dim,valueColor:n,labelWidth:c=14}){return(0,r.jsxs)(e,{children:[(0,r.jsx)(e,{width:c,flexShrink:0,children:(0,r.jsx)(i,{color:l,children:t})}),(0,r.jsx)(e,{flexShrink:1,children:(0,r.jsx)(i,{color:n,wrap:"wrap",children:a})})]})}function I({label:t}){return(0,r.jsx)(e,{marginTop:1,marginBottom:0,children:(0,r.jsx)(i,{bold:!0,children:t})})}export{h as a,k as b,I as c};
|