@runcofactor/cli 0.55.0 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{account-RHHS7HT4.js → account-CZYZD2JS.js} +5 -5
- package/dist/{alert-B5WEOKHP.js → alert-JQ4SDEB7.js} +8 -8
- package/dist/{api-catalog-UXONX3BR.js → api-catalog-IWQC35P2.js} +5 -5
- package/dist/{api-key-J3A4TJKN.js → api-key-GUDXIIEA.js} +5 -5
- package/dist/{attachment-ZQW7DR4G.js → attachment-CPZYOBUB.js} +5 -5
- package/dist/{auth-HQGKUZBS.js → auth-DS6MBVEI.js} +3 -3
- package/dist/{benchmark-TIKJA32J.js → benchmark-6HPCIQHD.js} +5 -5
- package/dist/{blackcat-Z5LNV2GS.js → blackcat-V3L63WFE.js} +3 -3
- package/dist/{chunk-JQG3V5E3.js → chunk-2E3STBHS.js} +2 -2
- package/dist/{chunk-KL2ARGH6.js → chunk-2OHYMT3A.js} +3 -3
- package/dist/{chunk-KL2ARGH6.js.map → chunk-2OHYMT3A.js.map} +1 -1
- package/dist/{chunk-W6DL4IP6.js → chunk-3LGCHNBC.js} +2 -2
- package/dist/{chunk-BJHAVM7Z.js → chunk-4MFMPC5P.js} +46 -2
- package/dist/chunk-4MFMPC5P.js.map +1 -0
- package/dist/{chunk-MB4FS35J.js → chunk-56HFZHQM.js} +8 -8
- package/dist/{chunk-CZDQVQ57.js → chunk-5OYWNS6D.js} +20 -9
- package/dist/chunk-5OYWNS6D.js.map +1 -0
- package/dist/{chunk-YTXZUWMN.js → chunk-62EXS76C.js} +6 -6
- package/dist/{chunk-QVMGXMP5.js → chunk-6ILWJFKY.js} +368 -6
- package/dist/chunk-6ILWJFKY.js.map +1 -0
- package/dist/{chunk-6X6ZTDXP.js → chunk-BDOL622T.js} +4 -4
- package/dist/{chunk-L4JQ236V.js → chunk-C3CXVX2B.js} +4 -4
- package/dist/{chunk-33U56YGD.js → chunk-CWICLBLU.js} +2 -1
- package/dist/{chunk-33U56YGD.js.map → chunk-CWICLBLU.js.map} +1 -1
- package/dist/{chunk-XM3WTJ7Y.js → chunk-DEVD2WD2.js} +2 -2
- package/dist/{chunk-WWUEKQLR.js → chunk-EWK44F6V.js} +3 -3
- package/dist/chunk-EWK44F6V.js.map +1 -0
- package/dist/{chunk-CQSQNDMV.js → chunk-FNHPTTRF.js} +7 -5
- package/dist/chunk-FNHPTTRF.js.map +1 -0
- package/dist/{chunk-Z72GWGH2.js → chunk-GCD4EHCD.js} +6 -6
- package/dist/{chunk-3KBYI6RR.js → chunk-H6ZMKNP7.js} +3 -3
- package/dist/{chunk-5OKCT6LF.js → chunk-IEWAH7W3.js} +5 -5
- package/dist/{chunk-TGI2AAOZ.js → chunk-IV4HRGKX.js} +77 -12
- package/dist/chunk-IV4HRGKX.js.map +1 -0
- package/dist/{chunk-635IQV6B.js → chunk-J2ZQULU3.js} +2 -2
- package/dist/{chunk-ZZZ33KTO.js → chunk-K2IDR6FR.js} +3 -3
- package/dist/{chunk-YEH7UIUY.js → chunk-KTZRI27M.js} +4 -4
- package/dist/{chunk-RV7FZ4ID.js → chunk-L644NMDI.js} +3 -3
- package/dist/{chunk-RV7FZ4ID.js.map → chunk-L644NMDI.js.map} +1 -1
- package/dist/{chunk-3TZABC7D.js → chunk-LFT7GUWS.js} +63 -17
- package/dist/chunk-LFT7GUWS.js.map +1 -0
- package/dist/{chunk-QHRWXCON.js → chunk-O7B2IYCZ.js} +11 -11
- package/dist/chunk-O7B2IYCZ.js.map +1 -0
- package/dist/{chunk-U3MRXQZS.js → chunk-RHWPZKRV.js} +24 -1
- package/dist/chunk-RHWPZKRV.js.map +1 -0
- package/dist/{chunk-OU4I3MEH.js → chunk-UJSW72LG.js} +3 -3
- package/dist/{chunk-R2CRH6JQ.js → chunk-VACACCD6.js} +3 -3
- package/dist/{chunk-EGWVL5XA.js → chunk-VMAR67FF.js} +2 -2
- package/dist/{chunk-ZH7HWVEE.js → chunk-VMJ7TBVM.js} +2 -2
- package/dist/chunk-WRRA4ATV.js +332 -0
- package/dist/chunk-WRRA4ATV.js.map +1 -0
- package/dist/{chunk-XWJJYZQC.js → chunk-XHEVDABB.js} +2 -2
- package/dist/{chunk-SCQVBLNR.js → chunk-XHGF6VC6.js} +4 -4
- package/dist/{credential-2IEZDTH3.js → credential-GJW7LGYP.js} +5 -5
- package/dist/{credential-template-S5WSOI3P.js → credential-template-UWBYKKWD.js} +5 -5
- package/dist/dev-PBW7BSOD.js +605 -0
- package/dist/dev-PBW7BSOD.js.map +1 -0
- package/dist/{digest-HQGL7H6E.js → digest-XEHGCJM4.js} +8 -8
- package/dist/{docs-CJQZVERZ.js → docs-KH4BCEQF.js} +5 -5
- package/dist/{doctor-EGK5AB77.js → doctor-FOXXE5SK.js} +3 -3
- package/dist/{environment-MWVXYEDU.js → environment-EBDPQTIS.js} +7 -7
- package/dist/{eval-F4NORBQI.js → eval-QZSSEICV.js} +67 -27
- package/dist/eval-QZSSEICV.js.map +1 -0
- package/dist/{exploration-JC7R7KTJ.js → exploration-LCGKRGOQ.js} +5 -5
- package/dist/{exploratory-test-BHK5FTMJ.js → exploratory-test-SGECQGIX.js} +6 -6
- package/dist/{external-run-UL5CKG54.js → external-run-2AJAI5O7.js} +9 -9
- package/dist/{feature-flag-NMO25TZN.js → feature-flag-P7N4WQIH.js} +5 -5
- package/dist/{feedback-3JNPSUXS.js → feedback-LAT7TQ2T.js} +6 -6
- package/dist/{flow-AYE4RTZN.js → flow-NH2DC6AP.js} +5 -5
- package/dist/{github-DM2DCXRY.js → github-FCEKBLXI.js} +6 -6
- package/dist/index.js +106 -408
- package/dist/index.js.map +1 -1
- package/dist/{init-CPDT5XAU.js → init-5U5EZOAW.js} +5 -5
- package/dist/{install-JZRNCHMO.js → install-X3UNVXKY.js} +5 -5
- package/dist/{issues-GRFJB52C.js → issues-4P6I3YQW.js} +8 -8
- package/dist/{knobs-3Y4QXWAD.js → knobs-JKTWJ6ZG.js} +5 -5
- package/dist/{landing-ABYL5WVG.js → landing-6AGLKI66.js} +7 -7
- package/dist/{list-WG5QB4NK.js → list-TWP2RP33.js} +5 -5
- package/dist/{local-KX24OR5Z.js → local-D75QE5TB.js} +7 -7
- package/dist/{login-MLJQAIFK.js → login-RBET4TIP.js} +5 -5
- package/dist/{mcp-DDTO54XD.js → mcp-562SUUMK.js} +11 -11
- package/dist/{metrics-BJLLOSPQ.js → metrics-4WF2GEPA.js} +5 -5
- package/dist/{monitor-E2CKGHPM.js → monitor-WJXH54H2.js} +5 -5
- package/dist/{perf-IX7JOMUE.js → perf-C6N6P7YG.js} +12 -361
- package/dist/perf-C6N6P7YG.js.map +1 -0
- package/dist/{product-2ECWM2JN.js → product-CYEQ7HOB.js} +5 -5
- package/dist/{product-map-O542LZQL.js → product-map-MSDLIFZY.js} +7 -7
- package/dist/{prompts-Y7O4XJ5P.js → prompts-ME53WPN4.js} +5 -5
- package/dist/{proofs-TNOBLSRP.js → proofs-D3G6ZUFP.js} +11 -9
- package/dist/{property-TZCGOZQG.js → property-5GLJNAVB.js} +29 -10
- package/dist/property-5GLJNAVB.js.map +1 -0
- package/dist/{psql-M66YSUXW.js → psql-EXAUDU3W.js} +5 -5
- package/dist/{record-3JINBRAR.js → record-EE7NGNKY.js} +6 -6
- package/dist/{redis-FOIBINYA.js → redis-M4EYWKOJ.js} +5 -5
- package/dist/{release-B4VWMVEI.js → release-4KUWVWWC.js} +5 -5
- package/dist/{runbook-EYMSE37E.js → runbook-AHU77ANQ.js} +5 -5
- package/dist/{sandbox-R6EMGOKR.js → sandbox-FBLJEYA2.js} +1910 -1629
- package/dist/sandbox-FBLJEYA2.js.map +1 -0
- package/dist/{scenarios-W7YNLBVO.js → scenarios-TU656T2B.js} +5 -5
- package/dist/{schedule-EDHQJUUZ.js → schedule-DXJI6SYO.js} +8 -8
- package/dist/{session-4N62APNQ.js → session-RUFTJHF4.js} +10 -10
- package/dist/{skill-XFGMNOVM.js → skill-ZK76GQ47.js} +7 -7
- package/dist/{skill-XFGMNOVM.js.map → skill-ZK76GQ47.js.map} +1 -1
- package/dist/skills/cofactor-debug-run/SKILL.md +2 -1
- package/dist/skills/cofactor-debug-run/history/2.0.10.md +320 -0
- package/dist/skills/cofactor-debug-run/version.json +1 -1
- package/dist/{slack-RUAXG6TB.js → slack-M3OKDVMY.js} +6 -6
- package/dist/{spec-ZZKMW7ER.js → spec-5MXEBLYR.js} +5 -5
- package/dist/{src-OKSAEHQS.js → src-2X5OQRPJ.js} +4 -4
- package/dist/{src-DGIVA22K.js → src-72EFBA2R.js} +3 -3
- package/dist/{src-ECZWYNSV.js → src-KH6WSBJV.js} +5 -5
- package/dist/{src-CQ2YAW7F.js → src-VLV36QYH.js} +127 -20
- package/dist/src-VLV36QYH.js.map +1 -0
- package/dist/{start-OCZGILRL.js → start-PDYBRB5T.js} +5 -5
- package/dist/{status-YTJ6YITG.js → status-VMVPVCDA.js} +5 -5
- package/dist/{tag-KBG4SWRL.js → tag-7KTDLPVU.js} +6 -6
- package/dist/{task-O6XRMHYE.js → task-QLFYZNKR.js} +6 -6
- package/dist/{teams-NFUHS7XI.js → teams-Y7BXCY6P.js} +7 -7
- package/dist/{test-suite-6BH3DESN.js → test-suite-6U22AYFG.js} +15 -14
- package/dist/test-suite-6U22AYFG.js.map +1 -0
- package/dist/{tickets-JU2STK4B.js → tickets-CQDJDNPY.js} +5 -5
- package/dist/{trace-NMSGKASJ.js → trace-QDORWXYX.js} +8 -8
- package/dist/{triage-JGECJJU5.js → triage-GY7M3UGG.js} +6 -6
- package/dist/{trigger-OSPEVCCQ.js → trigger-DLFAORX4.js} +9 -9
- package/dist/{update-check-FNP6RFZO.js → update-check-ES6XQ7OF.js} +4 -4
- package/dist/{upgrade-3PPBXFAT.js → upgrade-WKEOW5GS.js} +5 -5
- package/dist/{usage-QMCU2JIO.js → usage-E6FDTR3W.js} +7 -7
- package/dist/{utilities-7VHWTSJT.js → utilities-4Z6YX3L5.js} +6 -6
- package/dist/{visual-WIZSPTVK.js → visual-TA6LPVDJ.js} +5 -5
- package/dist/{workflow-23HKTJLS.js → workflow-B5FXS2CJ.js} +58 -31
- package/dist/workflow-B5FXS2CJ.js.map +1 -0
- package/dist/{workflow-cache-ACGM3BOI.js → workflow-cache-MNLEMRMM.js} +16 -16
- package/dist/{workflow-cache-convergence-resolve-KEQDQMKL.js → workflow-cache-convergence-resolve-G5HJM6MF.js} +5 -5
- package/dist/{workflow-debug-TVLBNRCB.js → workflow-debug-TNBUGSBK.js} +11 -11
- package/dist/{workflow-feedback-GB5VPGE2.js → workflow-feedback-G2ZXAUGI.js} +5 -5
- package/dist/{workflow-fork-2IPJNR76.js → workflow-fork-6HHOMC2D.js} +5 -5
- package/dist/{workflow-promotion-QEQUXVUT.js → workflow-promotion-RG7L6JZT.js} +5 -5
- package/dist/{workflow-proposals-KHGTPMD4.js → workflow-proposals-ZNF2F3UE.js} +5 -5
- package/dist/{workflow-revisions-F5KQEEXB.js → workflow-revisions-TP64Z6FO.js} +5 -5
- package/dist/{workflow-status-66HC5MEA.js → workflow-status-5RG3JX56.js} +5 -5
- package/package.json +3 -2
- package/dist/chunk-3TZABC7D.js.map +0 -1
- package/dist/chunk-BJHAVM7Z.js.map +0 -1
- package/dist/chunk-CQSQNDMV.js.map +0 -1
- package/dist/chunk-CZDQVQ57.js.map +0 -1
- package/dist/chunk-QHRWXCON.js.map +0 -1
- package/dist/chunk-QVMGXMP5.js.map +0 -1
- package/dist/chunk-TGI2AAOZ.js.map +0 -1
- package/dist/chunk-U3MRXQZS.js.map +0 -1
- package/dist/chunk-WWUEKQLR.js.map +0 -1
- package/dist/eval-F4NORBQI.js.map +0 -1
- package/dist/perf-IX7JOMUE.js.map +0 -1
- package/dist/property-TZCGOZQG.js.map +0 -1
- package/dist/sandbox-R6EMGOKR.js.map +0 -1
- package/dist/src-CQ2YAW7F.js.map +0 -1
- package/dist/test-suite-6BH3DESN.js.map +0 -1
- package/dist/workflow-23HKTJLS.js.map +0 -1
- /package/dist/{account-RHHS7HT4.js.map → account-CZYZD2JS.js.map} +0 -0
- /package/dist/{alert-B5WEOKHP.js.map → alert-JQ4SDEB7.js.map} +0 -0
- /package/dist/{api-catalog-UXONX3BR.js.map → api-catalog-IWQC35P2.js.map} +0 -0
- /package/dist/{api-key-J3A4TJKN.js.map → api-key-GUDXIIEA.js.map} +0 -0
- /package/dist/{attachment-ZQW7DR4G.js.map → attachment-CPZYOBUB.js.map} +0 -0
- /package/dist/{auth-HQGKUZBS.js.map → auth-DS6MBVEI.js.map} +0 -0
- /package/dist/{benchmark-TIKJA32J.js.map → benchmark-6HPCIQHD.js.map} +0 -0
- /package/dist/{blackcat-Z5LNV2GS.js.map → blackcat-V3L63WFE.js.map} +0 -0
- /package/dist/{chunk-JQG3V5E3.js.map → chunk-2E3STBHS.js.map} +0 -0
- /package/dist/{chunk-W6DL4IP6.js.map → chunk-3LGCHNBC.js.map} +0 -0
- /package/dist/{chunk-MB4FS35J.js.map → chunk-56HFZHQM.js.map} +0 -0
- /package/dist/{chunk-YTXZUWMN.js.map → chunk-62EXS76C.js.map} +0 -0
- /package/dist/{chunk-6X6ZTDXP.js.map → chunk-BDOL622T.js.map} +0 -0
- /package/dist/{chunk-L4JQ236V.js.map → chunk-C3CXVX2B.js.map} +0 -0
- /package/dist/{chunk-XM3WTJ7Y.js.map → chunk-DEVD2WD2.js.map} +0 -0
- /package/dist/{chunk-Z72GWGH2.js.map → chunk-GCD4EHCD.js.map} +0 -0
- /package/dist/{chunk-3KBYI6RR.js.map → chunk-H6ZMKNP7.js.map} +0 -0
- /package/dist/{chunk-5OKCT6LF.js.map → chunk-IEWAH7W3.js.map} +0 -0
- /package/dist/{chunk-635IQV6B.js.map → chunk-J2ZQULU3.js.map} +0 -0
- /package/dist/{chunk-ZZZ33KTO.js.map → chunk-K2IDR6FR.js.map} +0 -0
- /package/dist/{chunk-YEH7UIUY.js.map → chunk-KTZRI27M.js.map} +0 -0
- /package/dist/{chunk-OU4I3MEH.js.map → chunk-UJSW72LG.js.map} +0 -0
- /package/dist/{chunk-R2CRH6JQ.js.map → chunk-VACACCD6.js.map} +0 -0
- /package/dist/{chunk-EGWVL5XA.js.map → chunk-VMAR67FF.js.map} +0 -0
- /package/dist/{chunk-ZH7HWVEE.js.map → chunk-VMJ7TBVM.js.map} +0 -0
- /package/dist/{chunk-XWJJYZQC.js.map → chunk-XHEVDABB.js.map} +0 -0
- /package/dist/{chunk-SCQVBLNR.js.map → chunk-XHGF6VC6.js.map} +0 -0
- /package/dist/{credential-2IEZDTH3.js.map → credential-GJW7LGYP.js.map} +0 -0
- /package/dist/{credential-template-S5WSOI3P.js.map → credential-template-UWBYKKWD.js.map} +0 -0
- /package/dist/{digest-HQGL7H6E.js.map → digest-XEHGCJM4.js.map} +0 -0
- /package/dist/{docs-CJQZVERZ.js.map → docs-KH4BCEQF.js.map} +0 -0
- /package/dist/{doctor-EGK5AB77.js.map → doctor-FOXXE5SK.js.map} +0 -0
- /package/dist/{environment-MWVXYEDU.js.map → environment-EBDPQTIS.js.map} +0 -0
- /package/dist/{exploration-JC7R7KTJ.js.map → exploration-LCGKRGOQ.js.map} +0 -0
- /package/dist/{exploratory-test-BHK5FTMJ.js.map → exploratory-test-SGECQGIX.js.map} +0 -0
- /package/dist/{external-run-UL5CKG54.js.map → external-run-2AJAI5O7.js.map} +0 -0
- /package/dist/{feature-flag-NMO25TZN.js.map → feature-flag-P7N4WQIH.js.map} +0 -0
- /package/dist/{feedback-3JNPSUXS.js.map → feedback-LAT7TQ2T.js.map} +0 -0
- /package/dist/{flow-AYE4RTZN.js.map → flow-NH2DC6AP.js.map} +0 -0
- /package/dist/{github-DM2DCXRY.js.map → github-FCEKBLXI.js.map} +0 -0
- /package/dist/{init-CPDT5XAU.js.map → init-5U5EZOAW.js.map} +0 -0
- /package/dist/{install-JZRNCHMO.js.map → install-X3UNVXKY.js.map} +0 -0
- /package/dist/{issues-GRFJB52C.js.map → issues-4P6I3YQW.js.map} +0 -0
- /package/dist/{knobs-3Y4QXWAD.js.map → knobs-JKTWJ6ZG.js.map} +0 -0
- /package/dist/{landing-ABYL5WVG.js.map → landing-6AGLKI66.js.map} +0 -0
- /package/dist/{list-WG5QB4NK.js.map → list-TWP2RP33.js.map} +0 -0
- /package/dist/{local-KX24OR5Z.js.map → local-D75QE5TB.js.map} +0 -0
- /package/dist/{login-MLJQAIFK.js.map → login-RBET4TIP.js.map} +0 -0
- /package/dist/{mcp-DDTO54XD.js.map → mcp-562SUUMK.js.map} +0 -0
- /package/dist/{metrics-BJLLOSPQ.js.map → metrics-4WF2GEPA.js.map} +0 -0
- /package/dist/{monitor-E2CKGHPM.js.map → monitor-WJXH54H2.js.map} +0 -0
- /package/dist/{product-2ECWM2JN.js.map → product-CYEQ7HOB.js.map} +0 -0
- /package/dist/{product-map-O542LZQL.js.map → product-map-MSDLIFZY.js.map} +0 -0
- /package/dist/{prompts-Y7O4XJ5P.js.map → prompts-ME53WPN4.js.map} +0 -0
- /package/dist/{proofs-TNOBLSRP.js.map → proofs-D3G6ZUFP.js.map} +0 -0
- /package/dist/{psql-M66YSUXW.js.map → psql-EXAUDU3W.js.map} +0 -0
- /package/dist/{record-3JINBRAR.js.map → record-EE7NGNKY.js.map} +0 -0
- /package/dist/{redis-FOIBINYA.js.map → redis-M4EYWKOJ.js.map} +0 -0
- /package/dist/{release-B4VWMVEI.js.map → release-4KUWVWWC.js.map} +0 -0
- /package/dist/{runbook-EYMSE37E.js.map → runbook-AHU77ANQ.js.map} +0 -0
- /package/dist/{scenarios-W7YNLBVO.js.map → scenarios-TU656T2B.js.map} +0 -0
- /package/dist/{schedule-EDHQJUUZ.js.map → schedule-DXJI6SYO.js.map} +0 -0
- /package/dist/{session-4N62APNQ.js.map → session-RUFTJHF4.js.map} +0 -0
- /package/dist/{slack-RUAXG6TB.js.map → slack-M3OKDVMY.js.map} +0 -0
- /package/dist/{spec-ZZKMW7ER.js.map → spec-5MXEBLYR.js.map} +0 -0
- /package/dist/{src-DGIVA22K.js.map → src-2X5OQRPJ.js.map} +0 -0
- /package/dist/{src-ECZWYNSV.js.map → src-72EFBA2R.js.map} +0 -0
- /package/dist/{src-OKSAEHQS.js.map → src-KH6WSBJV.js.map} +0 -0
- /package/dist/{start-OCZGILRL.js.map → start-PDYBRB5T.js.map} +0 -0
- /package/dist/{status-YTJ6YITG.js.map → status-VMVPVCDA.js.map} +0 -0
- /package/dist/{tag-KBG4SWRL.js.map → tag-7KTDLPVU.js.map} +0 -0
- /package/dist/{task-O6XRMHYE.js.map → task-QLFYZNKR.js.map} +0 -0
- /package/dist/{teams-NFUHS7XI.js.map → teams-Y7BXCY6P.js.map} +0 -0
- /package/dist/{tickets-JU2STK4B.js.map → tickets-CQDJDNPY.js.map} +0 -0
- /package/dist/{trace-NMSGKASJ.js.map → trace-QDORWXYX.js.map} +0 -0
- /package/dist/{triage-JGECJJU5.js.map → triage-GY7M3UGG.js.map} +0 -0
- /package/dist/{trigger-OSPEVCCQ.js.map → trigger-DLFAORX4.js.map} +0 -0
- /package/dist/{update-check-FNP6RFZO.js.map → update-check-ES6XQ7OF.js.map} +0 -0
- /package/dist/{upgrade-3PPBXFAT.js.map → upgrade-WKEOW5GS.js.map} +0 -0
- /package/dist/{usage-QMCU2JIO.js.map → usage-E6FDTR3W.js.map} +0 -0
- /package/dist/{utilities-7VHWTSJT.js.map → utilities-4Z6YX3L5.js.map} +0 -0
- /package/dist/{visual-WIZSPTVK.js.map → visual-TA6LPVDJ.js.map} +0 -0
- /package/dist/{workflow-cache-ACGM3BOI.js.map → workflow-cache-MNLEMRMM.js.map} +0 -0
- /package/dist/{workflow-cache-convergence-resolve-KEQDQMKL.js.map → workflow-cache-convergence-resolve-G5HJM6MF.js.map} +0 -0
- /package/dist/{workflow-debug-TVLBNRCB.js.map → workflow-debug-TNBUGSBK.js.map} +0 -0
- /package/dist/{workflow-feedback-GB5VPGE2.js.map → workflow-feedback-G2ZXAUGI.js.map} +0 -0
- /package/dist/{workflow-fork-2IPJNR76.js.map → workflow-fork-6HHOMC2D.js.map} +0 -0
- /package/dist/{workflow-promotion-QEQUXVUT.js.map → workflow-promotion-RG7L6JZT.js.map} +0 -0
- /package/dist/{workflow-proposals-KHGTPMD4.js.map → workflow-proposals-ZNF2F3UE.js.map} +0 -0
- /package/dist/{workflow-revisions-F5KQEEXB.js.map → workflow-revisions-TP64Z6FO.js.map} +0 -0
- /package/dist/{workflow-status-66HC5MEA.js.map → workflow-status-5RG3JX56.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/property.ts","../src/property-skill.ts","../src/page-skill.ts","../src/recipe.ts"],"sourcesContent":["/**\n * CLI Property Management\n *\n * List properties and their linked GitHub repos.\n */\n\nimport process from 'node:process';\nimport { resolveConfig, hasFlag, getArgValue } from './auth.js';\nimport { fetchProperties, apiRequest, getApplicationArg } from './cli-helpers.js';\nimport { runPropertySkill } from './property-skill.js';\nimport { runPageSkill } from './page-skill.js';\nimport { runRecipe } from './recipe.js';\nimport { writeRawOutput } from './brand.js';\nimport { parseEnvVarDefinitions, updateEnvVarDefinitions } from './env-var-definitions.js';\n\nfunction pad(s: string, n: number): string {\n return s.padEnd(n);\n}\n\nfunction printHelp(): void {\n console.log(\n [\n 'canary application: Manage applications (alias: canary property)',\n '',\n 'Sub-commands:',\n ' list List all applications',\n ' create [options] Create a new application',\n ' update <name|id> [options] Update application settings',\n ' repo link [options] Link a GitHub repo to an application',\n ' repo update [options] Update an existing repo link',\n ' repo unlink [options] Unlink a GitHub repo from an application',\n ' skill <action> [options] Manage the application\\'s app skill (run `canary application skill help` for details)',\n ' page-skill <action> [options] Review the application\\'s page skills (run `canary application page-skill help` for details)',\n ' recipe <action> [options] Provision + audit the application\\'s interaction recipes (run `canary application recipe help` for details)',\n '',\n 'Create options:',\n ' --name <name> Application name (required)',\n ' --base-url <url> Application base URL (required)',\n ' An application tested only on sandboxes needs no create: `cofactor sandbox connect` or `push`',\n ' with a new --application name creates it, with its sandbox as the default environment.',\n ' --description <text> Optional description',\n ' --agent-context <text> Optional agent context (max 8000 chars)',\n ' --env-var <NAME[:sensitive]> Declare a per-environment variable (repeatable); values set per-environment, injected as $var.ENV.<NAME>',\n ' --login-path </path> Relative login page path appended to the environment URL (e.g. /login)',\n '',\n 'Update options:',\n ' --login-path </path> Set the relative login page path (empty string clears it)',\n ' --description <text> Set the description',\n ' --agent-context <text> Set the agent context',\n ' --env-var <NAME[:sensitive]> Declare a variable, or mark an existing one sensitive',\n ' (repeatable; never unmarks, values are not touched)',\n '',\n 'Repo link/update/unlink options:',\n ' --application <app_xxx|uuid> Application ID (required; alias: --property)',\n ' --repo <owner/name> Repo full name (required for link/unlink)',\n ' --repo-id <uuid> Repo link UUID (required for update)',\n ' --role <frontend|backend|...> Conventional role (free-form)',\n ' --root-dir <path> Monorepo subdirectory hint',\n ' --agent-hint <text> Free-form hint for the planner agent',\n '',\n 'Common options:',\n ' --json Output as JSON',\n ].join('\\n')\n );\n}\n\ntype GitHubRepo = {\n id: string;\n repoFullName: string;\n repoName: string;\n defaultBranch: string;\n rootDir: string | null;\n role: string | null;\n};\n\nasync function handleList(argv: string[], apiUrl: string, token: string): Promise<void> {\n const json = hasFlag(argv, '--json');\n const properties = await fetchProperties(apiUrl, token);\n\n if (json) {\n writeRawOutput(JSON.stringify(properties, null, 2));\n return;\n }\n\n if (properties.length === 0) {\n console.log('No applications found.');\n return;\n }\n\n console.log(`${pad('Name', 30)} ${pad('Base URL', 40)} ID`);\n for (const p of properties) {\n console.log(`${pad(p.name, 30)} ${pad(p.baseUrl, 40)} ${p.id}`);\n }\n\n // Show linked repos for each property\n console.log('');\n for (const p of properties) {\n const reposRes = await apiRequest<{ ok: boolean; items: GitHubRepo[] }>(\n apiUrl, token, 'GET', `/org/properties/${p.id}/github-repos`\n );\n const repos = reposRes.ok ? (reposRes.items ?? []) : [];\n if (repos.length > 0) {\n console.log(`${p.name} repos:`);\n for (const r of repos) {\n const dir = r.rootDir && r.rootDir !== '/' ? ` (${r.rootDir})` : '';\n const role = r.role ? ` [${r.role}]` : '';\n console.log(` ${r.repoFullName}:${r.defaultBranch}${role}${dir}`);\n }\n }\n }\n}\n\nfunction envVarDefinitionsOrExit(argv: string[]): Array<{ name: string; sensitive?: boolean }> {\n try {\n return parseEnvVarDefinitions(argv);\n } catch (err) {\n console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\nasync function handleCreate(argv: string[], apiUrl: string, token: string): Promise<void> {\n const json = hasFlag(argv, '--json');\n const name = getArgValue(argv, '--name');\n const baseUrl = getArgValue(argv, '--base-url');\n const description = getArgValue(argv, '--description');\n const agentContext = getArgValue(argv, '--agent-context');\n const loginPath = getArgValue(argv, '--login-path');\n const envVarDefinitions = envVarDefinitionsOrExit(argv);\n\n if (!name || !baseUrl) {\n console.error('Error: --name and --base-url are required.');\n console.error('Usage: canary application create --name <name> --base-url <url>');\n console.error(\n 'An application tested only on sandboxes needs no --base-url: `canary sandbox connect` or `push` with a new --application name creates it.'\n );\n process.exit(1);\n }\n\n const body: Record<string, unknown> = {\n name,\n defaultEnvironment: { name: 'production', url: baseUrl },\n };\n if (description !== undefined) body.description = description;\n if (agentContext !== undefined) body.agentContext = agentContext;\n if (loginPath !== undefined) body.loginPath = loginPath;\n if (envVarDefinitions.length > 0) body.envVarDefinitions = envVarDefinitions;\n\n const result = await apiRequest<{ ok: boolean; id?: string; error?: string }>(\n apiUrl,\n token,\n 'POST',\n '/org/properties',\n body\n );\n\n if (!result.ok) {\n if (json) {\n writeRawOutput(JSON.stringify(result, null, 2));\n } else {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n }\n process.exit(1);\n }\n\n if (json) {\n writeRawOutput(JSON.stringify(result, null, 2));\n return;\n }\n\n console.log(`Created application \"${name}\" (${result.id})`);\n}\n\nasync function handleUpdate(argv: string[], apiUrl: string, token: string): Promise<void> {\n const json = hasFlag(argv, '--json');\n const appArg = argv.find((a) => !a.startsWith('-')) ?? getApplicationArg(argv);\n const loginPath = getArgValue(argv, '--login-path');\n const description = getArgValue(argv, '--description');\n const agentContext = getArgValue(argv, '--agent-context');\n const envVarDefinitions = envVarDefinitionsOrExit(argv);\n\n if (!appArg) {\n console.error('Error: Missing application name or ID.');\n console.error('Usage: canary application update <name|id> [--login-path </path>] [--description <text>]');\n process.exit(1);\n }\n if (\n loginPath === undefined &&\n description === undefined &&\n agentContext === undefined &&\n envVarDefinitions.length === 0\n ) {\n console.error(\n 'Error: No fields to update. Provide at least one of: --login-path, --description, --agent-context, --env-var'\n );\n process.exit(1);\n }\n\n const properties = await fetchProperties(apiUrl, token);\n const property = properties.find(\n (p) => p.id === appArg || p.name.toLowerCase() === appArg.toLowerCase()\n );\n if (!property) {\n console.error(`Error: Application \"${appArg}\" not found.`);\n if (properties.length > 0) {\n console.error('Available applications:');\n for (const p of properties) console.error(` - ${p.name} (${p.id})`);\n }\n process.exit(1);\n }\n\n const body: Record<string, unknown> = {};\n // Empty string clears the login path (sessions start at the environment URL).\n if (loginPath !== undefined) body.loginPath = loginPath;\n if (description !== undefined) body.description = description;\n if (agentContext !== undefined) body.agentContext = agentContext;\n\n if (Object.keys(body).length > 0) {\n const result = await apiRequest<{ ok: boolean; error?: string }>(\n apiUrl,\n token,\n 'PUT',\n `/org/properties/${property.id}`,\n body\n );\n\n if (!result.ok) {\n if (json) {\n writeRawOutput(JSON.stringify(result, null, 2));\n } else {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n }\n process.exit(1);\n }\n }\n if (envVarDefinitions.length > 0) {\n await updateEnvVarDefinitions(property.id, envVarDefinitions, apiUrl, token);\n }\n\n if (json) {\n writeRawOutput(\n JSON.stringify(\n {\n ok: true,\n applicationId: property.id,\n updated: envVarDefinitions.length > 0 ? { ...body, envVarDefinitions } : body,\n },\n null,\n 2\n )\n );\n return;\n }\n\n console.log(`Updated application \"${property.name}\" (${property.id}):`);\n if (loginPath !== undefined) {\n console.log(` loginPath: -> ${loginPath || '(cleared — sessions start at the environment URL)'}`);\n }\n if (description !== undefined) console.log(' description: updated');\n if (agentContext !== undefined) console.log(' agentContext: updated');\n for (const d of envVarDefinitions) {\n console.log(` env var ${d.name}: declared${d.sensitive ? ', sensitive' : ''}`);\n }\n}\n\nasync function handleRepoLink(argv: string[], apiUrl: string, token: string): Promise<void> {\n const json = hasFlag(argv, '--json');\n const propertyId = getApplicationArg(argv);\n const repo = getArgValue(argv, '--repo');\n const role = getArgValue(argv, '--role');\n const rootDir = getArgValue(argv, '--root-dir');\n const agentHint = getArgValue(argv, '--agent-hint');\n\n if (!propertyId || !repo) {\n console.error('Error: --application and --repo are required.');\n process.exit(1);\n }\n\n const body: Record<string, unknown> = { repoFullName: repo };\n if (role !== undefined) body.role = role;\n if (rootDir !== undefined) body.rootDir = rootDir;\n if (agentHint !== undefined) body.agentHint = agentHint;\n\n const result = await apiRequest<{ ok: boolean; id?: string; error?: string }>(\n apiUrl,\n token,\n 'POST',\n `/org/properties/${propertyId}/github-repos`,\n body\n );\n\n if (!result.ok) {\n if (json) writeRawOutput(JSON.stringify(result, null, 2));\n else console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n if (json) writeRawOutput(JSON.stringify(result, null, 2));\n else console.log(`Linked ${repo} to application ${propertyId} (${result.id})`);\n}\n\nasync function handleRepoUpdate(argv: string[], apiUrl: string, token: string): Promise<void> {\n const json = hasFlag(argv, '--json');\n const propertyId = getApplicationArg(argv);\n const repoId = getArgValue(argv, '--repo-id');\n const role = getArgValue(argv, '--role');\n const rootDir = getArgValue(argv, '--root-dir');\n const agentHint = getArgValue(argv, '--agent-hint');\n\n if (!propertyId || !repoId) {\n console.error('Error: --application and --repo-id are required.');\n process.exit(1);\n }\n\n const body: Record<string, unknown> = {};\n if (role !== undefined) body.role = role;\n if (rootDir !== undefined) body.rootDir = rootDir;\n if (agentHint !== undefined) body.agentHint = agentHint;\n\n const result = await apiRequest<{ ok: boolean; id?: string; error?: string }>(\n apiUrl,\n token,\n 'PATCH',\n `/org/properties/${propertyId}/github-repos/${repoId}`,\n body\n );\n\n if (!result.ok) {\n if (json) writeRawOutput(JSON.stringify(result, null, 2));\n else console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n if (json) writeRawOutput(JSON.stringify(result, null, 2));\n else console.log(`Updated repo link ${repoId}`);\n}\n\nasync function handleRepoUnlink(argv: string[], apiUrl: string, token: string): Promise<void> {\n const json = hasFlag(argv, '--json');\n const propertyId = getApplicationArg(argv);\n const repo = getArgValue(argv, '--repo');\n\n if (!propertyId || !repo) {\n console.error('Error: --application and --repo are required.');\n process.exit(1);\n }\n\n const result = await apiRequest<{ ok: boolean; error?: string }>(\n apiUrl,\n token,\n 'DELETE',\n `/org/properties/${propertyId}/github-repos/${encodeURIComponent(repo)}`\n );\n\n if (!result.ok) {\n if (json) writeRawOutput(JSON.stringify(result, null, 2));\n else console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n if (json) writeRawOutput(JSON.stringify(result, null, 2));\n else console.log(`Unlinked ${repo} from application ${propertyId}`);\n}\n\nasync function handleRepo(argv: string[], apiUrl: string, token: string): Promise<void> {\n const [action, ...rest] = argv;\n switch (action) {\n case 'link':\n await handleRepoLink(rest, apiUrl, token);\n break;\n case 'update':\n await handleRepoUpdate(rest, apiUrl, token);\n break;\n case 'unlink':\n await handleRepoUnlink(rest, apiUrl, token);\n break;\n default:\n console.error(`Unknown repo action: ${action ?? '(none)'}`);\n printHelp();\n process.exit(1);\n }\n}\n\nexport async function runProperty(argv: string[]): Promise<void> {\n const [subCommand, ...rest] = argv;\n\n // `application --env dev` (a flag, no sub-command) is asking for help too. The\n // skill, page-skill and recipe sub-commands answer --help with their own.\n const ownHelp = ['skill', 'page-skill', 'recipe'].includes(subCommand ?? '');\n if (!subCommand || subCommand.startsWith('-') || subCommand === 'help' || (hasFlag(argv, '--help', '-h') && !ownHelp)) {\n printHelp();\n return;\n }\n\n // `skill guide` and `skill help` are doc-only; skip auth resolution so\n // unauthenticated agents can discover the methodology before logging in.\n if (subCommand === 'skill') {\n const skillAction = rest[0];\n if (!skillAction || skillAction === 'help' || skillAction === 'guide') {\n await runPropertySkill(rest, '', '');\n return;\n }\n }\n\n const { apiUrl, token } = await resolveConfig(argv);\n\n const globalFlags = new Set(['--env', '--api-url', '--token', '--org']);\n const args = rest.filter((arg, i) => {\n if (globalFlags.has(arg)) return false;\n if (i > 0 && globalFlags.has(rest[i - 1])) return false;\n return true;\n });\n\n switch (subCommand) {\n case 'list':\n await handleList(args, apiUrl, token);\n break;\n case 'create':\n await handleCreate(args, apiUrl, token);\n break;\n case 'update':\n await handleUpdate(args, apiUrl, token);\n break;\n case 'repo':\n await handleRepo(args, apiUrl, token);\n break;\n case 'skill':\n await runPropertySkill(args, apiUrl, token);\n break;\n case 'page-skill':\n await runPageSkill(args, apiUrl, token);\n break;\n case 'recipe':\n await runRecipe(args, apiUrl, token);\n break;\n default:\n console.error(`Unknown sub-command: ${subCommand}`);\n printHelp();\n process.exit(1);\n }\n}\n","/**\n * CLI: `canary property skill` — manage a property's app skill\n *\n * App skill = the per-property knowledge base injected into the cloud workflow\n * browser agent's system prompt. CLI is a thin client over the existing\n * /org/properties/:id/context endpoints. Source defaults to 'cli' so authored\n * items are distinguishable from browser-bootstrap or human-manual edits.\n */\n\nimport { readFileSync } from 'node:fs';\nimport { writeRawOutput } from \"./brand.js\";\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport process from 'node:process';\nimport { getArgValue, hasFlag } from './auth.js';\nimport { apiRequest, getApplicationArg } from './cli-helpers.js';\n\nconst HERE = dirname(fileURLToPath(import.meta.url));\nconst GUIDE_PATH = join(HERE, 'property-skill-guide.md');\n\nconst SECTIONS = [\n 'general',\n 'technology',\n 'product',\n 'ui',\n 'tenancy',\n 'auth',\n 'roles_permissions',\n 'navigation',\n 'feature_gating',\n 'environments',\n 'data_lifecycle',\n 'async_realtime',\n 'localization',\n 'feedback_errors',\n 'idiosyncrasies',\n] as const;\ntype Section = (typeof SECTIONS)[number];\n\ntype ContextItem = {\n id: string;\n propertyId: string;\n section: Section;\n itemKey: string;\n itemLabel: string;\n content: string;\n version: number;\n source: 'bootstrap' | 'workflow' | 'manual' | 'cli';\n sourceId: string | null;\n createdBy: string | null;\n createdAt: string;\n};\n\ntype ListResponse = {\n ok: boolean;\n error?: string;\n data?: { items: ContextItem[]; grouped: Record<string, ContextItem[]> };\n};\n\nfunction printSkillHelp(): void {\n console.log(\n [\n 'canary application skill: Manage an application\\'s app skill (per-application knowledge for QA browser agents). Alias: canary property skill. (--property accepted as an alias for --application.)',\n '',\n 'Sub-commands:',\n ' guide Print the full authoring methodology (start here)',\n ' list [--application <id>] [--section S] [--format json|table]',\n ' get --application <id> --section S --key K [--version N] [--format json|md]',\n ' set --application <id> --section S --key K --label L --content @file|\"text\" [--source-id <repo@sha>]',\n ' delete --application <id> --section S --key K',\n ' history --application <id> --section S --key K [--format json|table]',\n ' export --application <id> [--format md|json]',\n ' import --application <id> --file <bundle.json> [--source-id <repo@sha>]',\n '',\n 'New to app skills? Run `canary application skill guide` for the authoring methodology.',\n '',\n 'Sections:',\n ' ' + SECTIONS.join(', '),\n '',\n 'Notes:',\n ' --content @path reads content from a file (preferred for multi-line markdown)',\n ' --content \"text\" literal content string',\n ' Source defaults to \"cli\". Provide --source-id <repo@sha> for provenance.',\n '',\n 'Bundle.json shape for import:',\n ' { \"items\": [ { \"section\": S, \"itemKey\": K, \"itemLabel\": L, \"content\": \"...\" }, ... ] }',\n ].join('\\n')\n );\n}\n\nfunction readContent(value: string): string {\n if (value.startsWith('@')) {\n const path = value.slice(1);\n return readFileSync(path, 'utf8');\n }\n return value;\n}\n\nfunction isSection(s: string | undefined): s is Section {\n return !!s && (SECTIONS as readonly string[]).includes(s);\n}\n\nasync function handleList(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = getApplicationArg(argv);\n const section = getArgValue(argv, '--section');\n const format = getArgValue(argv, '--format') ?? (hasFlag(argv, '--json') ? 'json' : 'table');\n\n if (!propertyId) {\n console.error('Error: --application is required (alias: --property).');\n process.exit(1);\n }\n\n const result = await apiRequest<ListResponse>(\n apiUrl,\n token,\n 'GET',\n `/org/properties/${propertyId}/context`\n );\n\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n let items = result.data?.items ?? [];\n if (section) items = items.filter((i) => i.section === section);\n\n if (format === 'json') {\n writeRawOutput(JSON.stringify(items, null, 2));\n return;\n }\n\n if (items.length === 0) {\n console.log('(no items)');\n return;\n }\n\n const grouped = new Map<string, ContextItem[]>();\n for (const item of items) {\n const arr = grouped.get(item.section) ?? [];\n arr.push(item);\n grouped.set(item.section, arr);\n }\n\n for (const sec of SECTIONS) {\n const arr = grouped.get(sec);\n if (!arr || arr.length === 0) continue;\n console.log(`\\n[${sec}]`);\n for (const item of arr) {\n const provenance = item.source === 'cli' && item.sourceId ? ` (${item.sourceId})` : item.source !== 'cli' ? ` (${item.source})` : '';\n // itemKey/itemLabel/provenance are customer-controlled — same class as\n // the record view above, so the whole line renders raw.\n writeRawOutput(` ${item.itemKey} — ${item.itemLabel}${provenance}`);\n }\n }\n}\n\nasync function handleGet(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = getApplicationArg(argv);\n const section = getArgValue(argv, '--section');\n const itemKey = getArgValue(argv, '--key');\n const versionArg = getArgValue(argv, '--version');\n const format = getArgValue(argv, '--format') ?? 'md';\n\n if (!propertyId || !section || !itemKey) {\n console.error('Error: --application, --section, --key are required.');\n process.exit(1);\n }\n if (!isSection(section)) {\n console.error(`Error: invalid section \"${section}\". One of: ${SECTIONS.join(', ')}`);\n process.exit(1);\n }\n\n // Current value comes from list; specific version from history.\n if (versionArg) {\n const v = Number(versionArg);\n const result = await apiRequest<{ ok: boolean; error?: string; data?: ContextItem[] }>(\n apiUrl,\n token,\n 'GET',\n `/org/properties/${propertyId}/context/history?section=${section}&itemKey=${encodeURIComponent(itemKey)}`\n );\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n const item = (result.data ?? []).find((i) => i.version === v);\n if (!item) {\n console.error(`Error: no version ${v} for ${section}/${itemKey}`);\n process.exit(1);\n }\n printItem(item, format);\n return;\n }\n\n const result = await apiRequest<ListResponse>(\n apiUrl,\n token,\n 'GET',\n `/org/properties/${propertyId}/context`\n );\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n const item = (result.data?.items ?? []).find(\n (i) => i.section === section && i.itemKey === itemKey\n );\n if (!item) {\n console.error(`Error: no item ${section}/${itemKey}`);\n process.exit(1);\n }\n printItem(item, format);\n}\n\nfunction printItem(item: ContextItem, format: string): void {\n if (format === 'json') {\n writeRawOutput(JSON.stringify(item, null, 2));\n return;\n }\n // Every field here is customer-controlled (labels, keys, source ids, body),\n // so the WHOLE record renders raw — branding any part of it corrupts values.\n writeRawOutput(`# ${item.itemLabel}`);\n writeRawOutput(`section: ${item.section}`);\n writeRawOutput(`key: ${item.itemKey}`);\n writeRawOutput(`version: ${item.version}`);\n writeRawOutput(`source: ${item.source}${item.sourceId ? ` (${item.sourceId})` : ''}`);\n writeRawOutput('');\n writeRawOutput(item.content);\n}\n\nasync function handleSet(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = getApplicationArg(argv);\n const section = getArgValue(argv, '--section');\n const itemKey = getArgValue(argv, '--key');\n const itemLabel = getArgValue(argv, '--label');\n const contentArg = getArgValue(argv, '--content');\n const sourceId = getArgValue(argv, '--source-id');\n\n if (!propertyId || !section || !itemKey || !itemLabel || contentArg === undefined) {\n console.error('Error: --application, --section, --key, --label, --content are required.');\n process.exit(1);\n }\n if (!isSection(section)) {\n console.error(`Error: invalid section \"${section}\". One of: ${SECTIONS.join(', ')}`);\n process.exit(1);\n }\n\n const content = readContent(contentArg);\n\n const body: Record<string, unknown> = {\n section,\n itemKey,\n itemLabel,\n content,\n source: 'cli',\n };\n if (sourceId !== undefined) body.sourceId = sourceId;\n\n const result = await apiRequest<{ ok: boolean; error?: string; data?: ContextItem }>(\n apiUrl,\n token,\n 'PUT',\n `/org/properties/${propertyId}/context/items`,\n body\n );\n\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n console.log(`Set [${section}] ${itemKey} (v${result.data?.version ?? '?'})`);\n}\n\nasync function handleDelete(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = getApplicationArg(argv);\n const section = getArgValue(argv, '--section');\n const itemKey = getArgValue(argv, '--key');\n\n if (!propertyId || !section || !itemKey) {\n console.error('Error: --application, --section, --key are required.');\n process.exit(1);\n }\n if (!isSection(section)) {\n console.error(`Error: invalid section \"${section}\". One of: ${SECTIONS.join(', ')}`);\n process.exit(1);\n }\n\n const result = await apiRequest<{ ok: boolean; error?: string }>(\n apiUrl,\n token,\n 'DELETE',\n `/org/properties/${propertyId}/context/items`,\n { section, itemKey }\n );\n\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n console.log(`Deleted [${section}] ${itemKey}`);\n}\n\nasync function handleHistory(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = getApplicationArg(argv);\n const section = getArgValue(argv, '--section');\n const itemKey = getArgValue(argv, '--key');\n const format = getArgValue(argv, '--format') ?? 'table';\n\n if (!propertyId || !section || !itemKey) {\n console.error('Error: --application, --section, --key are required.');\n process.exit(1);\n }\n if (!isSection(section)) {\n console.error(`Error: invalid section \"${section}\". One of: ${SECTIONS.join(', ')}`);\n process.exit(1);\n }\n\n const result = await apiRequest<{ ok: boolean; error?: string; data?: ContextItem[] }>(\n apiUrl,\n token,\n 'GET',\n `/org/properties/${propertyId}/context/history?section=${section}&itemKey=${encodeURIComponent(itemKey)}`\n );\n\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n const versions = result.data ?? [];\n if (format === 'json') {\n writeRawOutput(JSON.stringify(versions, null, 2));\n return;\n }\n if (versions.length === 0) {\n console.log('(no history)');\n return;\n }\n for (const v of versions) {\n const provenance = v.sourceId ? ` (${v.sourceId})` : '';\n console.log(`v${v.version} ${v.source}${provenance} ${v.createdAt}`);\n }\n}\n\nasync function handleExport(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = getApplicationArg(argv);\n const format = getArgValue(argv, '--format') ?? 'md';\n\n if (!propertyId) {\n console.error('Error: --application is required (alias: --property).');\n process.exit(1);\n }\n\n const result = await apiRequest<ListResponse>(\n apiUrl,\n token,\n 'GET',\n `/org/properties/${propertyId}/context`\n );\n\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n const items = result.data?.items ?? [];\n if (format === 'json') {\n writeRawOutput(JSON.stringify({ items }, null, 2));\n return;\n }\n\n const grouped = new Map<string, ContextItem[]>();\n for (const item of items) {\n const arr = grouped.get(item.section) ?? [];\n arr.push(item);\n grouped.set(item.section, arr);\n }\n for (const sec of SECTIONS) {\n const arr = grouped.get(sec);\n if (!arr || arr.length === 0) continue;\n console.log(`## ${sec}`);\n console.log('');\n for (const item of arr) {\n console.log(`### ${item.itemLabel} (\\`${item.itemKey}\\`)`);\n console.log('');\n console.log(item.content);\n console.log('');\n }\n }\n}\n\ntype BundleItem = { section: string; itemKey: string; itemLabel: string; content: string };\ntype Bundle = { items: BundleItem[] };\n\nasync function handleImport(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = getApplicationArg(argv);\n const file = getArgValue(argv, '--file');\n const sourceId = getArgValue(argv, '--source-id');\n\n if (!propertyId || !file) {\n console.error('Error: --application and --file are required.');\n process.exit(1);\n }\n\n let bundle: Bundle;\n try {\n bundle = JSON.parse(readFileSync(file, 'utf8')) as Bundle;\n } catch (err) {\n console.error(`Error parsing ${file}: ${(err as Error).message}`);\n process.exit(1);\n return;\n }\n\n if (!bundle.items || !Array.isArray(bundle.items)) {\n console.error('Error: bundle.json must have an \"items\" array.');\n process.exit(1);\n }\n\n let ok = 0;\n let fail = 0;\n for (const item of bundle.items) {\n if (!isSection(item.section)) {\n console.error(` ✗ [${item.section}] ${item.itemKey}: invalid section`);\n fail++;\n continue;\n }\n const body: Record<string, unknown> = {\n section: item.section,\n itemKey: item.itemKey,\n itemLabel: item.itemLabel,\n content: item.content,\n source: 'cli',\n };\n if (sourceId) body.sourceId = sourceId;\n\n const result = await apiRequest<{ ok: boolean; error?: string; data?: ContextItem }>(\n apiUrl,\n token,\n 'PUT',\n `/org/properties/${propertyId}/context/items`,\n body\n );\n\n if (result.ok) {\n console.log(` ✓ [${item.section}] ${item.itemKey} (v${result.data?.version ?? '?'})`);\n ok++;\n } else {\n console.error(` ✗ [${item.section}] ${item.itemKey}: ${result.error ?? 'Unknown error'}`);\n fail++;\n }\n }\n\n console.log(`\\nImported ${ok}/${ok + fail} items${fail ? ` (${fail} failed)` : ''}.`);\n if (fail > 0) process.exit(1);\n}\n\nfunction handleGuide(): void {\n try {\n const guide = readFileSync(GUIDE_PATH, 'utf8');\n process.stdout.write(guide);\n if (!guide.endsWith('\\n')) process.stdout.write('\\n');\n } catch (err) {\n console.error(`Error: could not read authoring guide at ${GUIDE_PATH}`);\n console.error((err as Error).message);\n process.exit(1);\n }\n}\n\nexport async function runPropertySkill(argv: string[], apiUrl: string, token: string): Promise<void> {\n const [action, ...rest] = argv;\n\n if (!action || action === 'help' || hasFlag(argv, '--help', '-h')) {\n printSkillHelp();\n return;\n }\n\n switch (action) {\n case 'guide':\n handleGuide();\n return;\n case 'list':\n await handleList(rest, apiUrl, token);\n break;\n case 'get':\n await handleGet(rest, apiUrl, token);\n break;\n case 'set':\n await handleSet(rest, apiUrl, token);\n break;\n case 'delete':\n await handleDelete(rest, apiUrl, token);\n break;\n case 'history':\n await handleHistory(rest, apiUrl, token);\n break;\n case 'export':\n await handleExport(rest, apiUrl, token);\n break;\n case 'import':\n await handleImport(rest, apiUrl, token);\n break;\n default:\n console.error(`Unknown skill action: ${action}`);\n printSkillHelp();\n process.exit(1);\n }\n}\n","/**\n * CLI: `canary application page-skill` — review and correct a property's page skills\n *\n * Page skill = a per-page Markdown recipe the fast-drive browser agent reads\n * before acting on a specific page. These are authored by the agent at run time;\n * this CLI is the human audit + correction surface (list/get/versions/set/\n * archive/unarchive), a thin client over the /org/properties/:id/page-skills\n * endpoints.\n *\n * `set` exists because an agent-authored skill can be confidently WRONG, and\n * archiving the whole skill to fix one sentence throws away everything else it\n * observed correctly. Edits append a version, so the prior text stays readable\n * via `versions`.\n */\n\nimport { readFileSync } from 'node:fs';\nimport process from 'node:process';\nimport { getArgValue, hasFlag } from './auth.js';\nimport { apiRequest, getApplicationArg } from './cli-helpers.js';\nimport { writeRawOutput } from './brand.js';\n\ntype PageSkillListRow = {\n id: string;\n title: string;\n summary: string;\n tags: string[];\n matchType: 'glob' | 'regex';\n pathPattern: string;\n currentVersion: number;\n bodyBytes: number;\n updatedAt: string;\n archivedAt: string | null;\n};\n\ntype PageSkill = PageSkillListRow & { body: string; orgId: string; propertyId: string };\n\ntype PageSkillVersionRow = {\n version: number;\n title: string;\n summary: string;\n body: string;\n pathPattern: string;\n createdAt: string;\n};\n\ntype ListResponse = { ok: boolean; error?: string; data?: PageSkillListRow[] };\ntype GetResponse = { ok: boolean; error?: string; data?: PageSkill };\ntype VersionsResponse = { ok: boolean; error?: string; data?: PageSkillVersionRow[] };\ntype OkResponse = { ok: boolean; error?: string; code?: string; actualVersion?: number };\ntype SetResponse = OkResponse & { data?: PageSkill };\n\nfunction printHelp(): void {\n console.log(\n [\n \"canary application page-skill: Review and correct a property's page skills (per-page recipes authored by the browser agent).\",\n '',\n 'Sub-commands:',\n ' list --application <id> [--include-archived] [--pathname </path|url>] [--format json|table]',\n ' get --application <id> --id <skillId> [--format json|md]',\n ' versions --application <id> --id <skillId> [--format json|table]',\n ' set --application <id> --id <skillId> [--body @file|\"text\"] [--title T] [--summary S] [--tags a,b]',\n ' archive --application <id> --id <skillId>',\n ' unarchive --application <id> --id <skillId>',\n '',\n 'Notes:',\n ' --property is accepted as an alias for --application.',\n ' --pathname filters to the skill(s) that would actually be presented on that',\n ' page, using the same matcher the runtime uses. Accepts a path or a full URL.',\n ' set edits content only and appends a version — the prior text stays readable',\n ' via `versions`. It re-reads the current version and sends it as baseVersion, so',\n ' an agent write landing mid-edit is reported as a conflict instead of clobbered.',\n ' matchType/pathPattern are NOT editable: identity is (application, matchType,',\n ' pathPattern), so changing a pattern would fork a second skill rather than rename.',\n ' Re-target with archive + let the agent author the new pattern.',\n ' archive is a LOSSLESS prune: the skill drops out of the agent surface but',\n ' keeps its body + version history. unarchive restores it without a new version.',\n ].join('\\n')\n );\n}\n\n/** `@path` reads from a file; anything else is a literal (mirrors `application skill set`). */\nfunction readContent(value: string): string {\n if (value.startsWith('@')) {\n return readFileSync(value.slice(1), 'utf8');\n }\n return value;\n}\n\nfunction requirePropertyId(argv: string[]): string {\n const propertyId = getApplicationArg(argv);\n if (!propertyId) {\n console.error('Error: --application is required (alias: --property).');\n process.exit(1);\n }\n return propertyId;\n}\n\nasync function handleList(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = requirePropertyId(argv);\n const includeArchived = hasFlag(argv, '--include-archived', '--all');\n const format = getArgValue(argv, '--format') ?? (hasFlag(argv, '--json') ? 'json' : 'table');\n\n const pathname = getArgValue(argv, '--pathname');\n const params = new URLSearchParams();\n if (includeArchived) params.set('includeArchived', '1');\n if (pathname) params.set('pathname', pathname);\n const query = params.toString() ? `?${params.toString()}` : '';\n const result = await apiRequest<ListResponse>(\n apiUrl,\n token,\n 'GET',\n `/org/properties/${propertyId}/page-skills${query}`\n );\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n const rows = result.data ?? [];\n if (format === 'json') {\n writeRawOutput(JSON.stringify(rows, null, 2));\n return;\n }\n\n if (rows.length === 0) {\n console.log(\n pathname\n ? `No page skill matches ${pathname} — the agent gets no skill on that page.`\n : 'No page skills for this property.'\n );\n return;\n }\n\n for (const row of rows) {\n const flag = row.archivedAt ? ' [archived]' : '';\n console.log(\n `${row.pathPattern} (v${row.currentVersion}, ${row.bodyBytes}B)${flag}\\n` +\n ` id: ${row.id}\\n` +\n ` ${row.title} — ${row.summary}`\n );\n }\n}\n\nasync function handleGet(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = requirePropertyId(argv);\n const skillId = getArgValue(argv, '--id');\n const format = getArgValue(argv, '--format') ?? (hasFlag(argv, '--json') ? 'json' : 'md');\n if (!skillId) {\n console.error('Error: --id <skillId> is required.');\n process.exit(1);\n }\n\n const result = await apiRequest<GetResponse>(\n apiUrl,\n token,\n 'GET',\n `/org/properties/${propertyId}/page-skills/${skillId}`\n );\n if (!result.ok || !result.data) {\n console.error(`Error: ${result.error ?? 'not found'}`);\n process.exit(1);\n }\n\n const skill = result.data;\n if (format === 'json') {\n writeRawOutput(JSON.stringify(skill, null, 2));\n return;\n }\n\n console.log(\n `# ${skill.title}\\n` +\n `pattern: ${skill.pathPattern} (${skill.matchType})\\n` +\n `version: ${skill.currentVersion}${skill.archivedAt ? ' [archived]' : ''}\\n` +\n `tags: ${skill.tags.join(', ') || '(none)'}\\n\\n` +\n `${skill.summary}\\n\\n---\\n${skill.body}`\n );\n}\n\nasync function handleArchive(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = requirePropertyId(argv);\n const skillId = getArgValue(argv, '--id');\n if (!skillId) {\n console.error('Error: --id <skillId> is required.');\n process.exit(1);\n }\n\n const result = await apiRequest<OkResponse>(\n apiUrl,\n token,\n 'POST',\n `/org/properties/${propertyId}/page-skills/${skillId}/archive`\n );\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n console.log(`Archived page skill ${skillId} (restorable — the agent un-archives it on next upsert).`);\n}\n\nasync function handleVersions(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = requirePropertyId(argv);\n const skillId = getArgValue(argv, '--id');\n const format = getArgValue(argv, '--format') ?? (hasFlag(argv, '--json') ? 'json' : 'table');\n if (!skillId) {\n console.error('Error: --id <skillId> is required.');\n process.exit(1);\n }\n\n const result = await apiRequest<VersionsResponse>(\n apiUrl,\n token,\n 'GET',\n `/org/properties/${propertyId}/page-skills/${skillId}/versions`\n );\n if (!result.ok || !result.data) {\n console.error(`Error: ${result.error ?? 'not found'}`);\n process.exit(1);\n }\n\n if (format === 'json') {\n writeRawOutput(JSON.stringify(result.data, null, 2));\n return;\n }\n\n for (const v of result.data) {\n console.log(`v${v.version} ${v.createdAt} ${v.body.length}B ${v.title}`);\n }\n}\n\nasync function handleSet(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = requirePropertyId(argv);\n const skillId = getArgValue(argv, '--id');\n if (!skillId) {\n console.error('Error: --id <skillId> is required.');\n process.exit(1);\n }\n\n const rawBody = getArgValue(argv, '--body');\n const title = getArgValue(argv, '--title');\n const summary = getArgValue(argv, '--summary');\n const rawTags = getArgValue(argv, '--tags');\n if (rawBody === undefined && !title && !summary && rawTags === undefined) {\n console.error('Error: nothing to change — pass at least one of --body, --title, --summary, --tags.');\n process.exit(1);\n }\n\n // Read the current version so the edit is based on what is live right now. The\n // server rejects the write if an agent lands a version in between, rather than\n // silently overwriting it.\n const current = await apiRequest<GetResponse>(\n apiUrl,\n token,\n 'GET',\n `/org/properties/${propertyId}/page-skills/${skillId}`\n );\n if (!current.ok || !current.data) {\n console.error(`Error: ${current.error ?? 'not found'}`);\n process.exit(1);\n }\n\n const payload: Record<string, unknown> = { baseVersion: current.data.currentVersion };\n if (rawBody !== undefined) payload.body = readContent(rawBody);\n if (title) payload.title = title;\n if (summary) payload.summary = summary;\n if (rawTags !== undefined) {\n payload.tags = rawTags\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean);\n }\n\n const result = await apiRequest<SetResponse>(\n apiUrl,\n token,\n 'PUT',\n `/org/properties/${propertyId}/page-skills/${skillId}`,\n payload\n );\n if (!result.ok || !result.data) {\n if (result.code === 'PAGE_SKILL_VERSION_CONFLICT') {\n console.error(\n `Error: the skill changed while you were editing (now v${result.actualVersion ?? '?'}). ` +\n 're-read it with `get` and re-apply your change.'\n );\n process.exit(1);\n }\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n console.log(\n `Updated ${result.data.pathPattern} → v${result.data.currentVersion} ` +\n `(${result.data.body.length}B). Prior text kept — see \\`page-skill versions --id ${skillId}\\`.`\n );\n}\n\nasync function handleUnarchive(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = requirePropertyId(argv);\n const skillId = getArgValue(argv, '--id');\n if (!skillId) {\n console.error('Error: --id <skillId> is required.');\n process.exit(1);\n }\n\n const result = await apiRequest<OkResponse>(\n apiUrl,\n token,\n 'POST',\n `/org/properties/${propertyId}/page-skills/${skillId}/unarchive`\n );\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n console.log(`Restored page skill ${skillId} to the agent surface (no new version).`);\n}\n\nexport async function runPageSkill(argv: string[], apiUrl: string, token: string): Promise<void> {\n const [action, ...rest] = argv;\n\n if (!action || action === 'help' || hasFlag(argv, '--help', '-h')) {\n printHelp();\n return;\n }\n\n switch (action) {\n case 'list':\n await handleList(rest, apiUrl, token);\n break;\n case 'get':\n await handleGet(rest, apiUrl, token);\n break;\n case 'versions':\n await handleVersions(rest, apiUrl, token);\n break;\n case 'set':\n await handleSet(rest, apiUrl, token);\n break;\n case 'archive':\n await handleArchive(rest, apiUrl, token);\n break;\n case 'unarchive':\n await handleUnarchive(rest, apiUrl, token);\n break;\n default:\n console.error(`Unknown page-skill action: ${action}`);\n printHelp();\n process.exit(1);\n }\n}\n","/**\n * CLI: `canary application recipe` — provision + audit a property's interaction recipes\n *\n * Interaction recipe = a named, parameterized, re-entrant Playwright transaction\n * scoped to a property (an app-wide interaction mechanic — e.g. \"select an item\n * from a menu that self-dismisses\"). Recipes are normally minted by the browser\n * agent, but this CLI is the human surface: list/get for auditing, and\n * `upsert`/`archive` for MANUALLY provisioning a working recipe for a tricky\n * interaction the agent hasn't learned yet. Upsert runs the same server-side\n * lint as the agent tool. Thin client over /org/properties/:id/interaction-recipes.\n */\n\nimport { readFileSync } from 'node:fs';\nimport process from 'node:process';\nimport { getArgValue, hasFlag } from './auth.js';\nimport { apiRequest, getApplicationArg } from './cli-helpers.js';\nimport { writeRawOutput } from './brand.js';\n\ntype ArgsSchema = {\n properties?: Record<string, { type?: string } | undefined>;\n required?: unknown;\n};\n\ntype RecipeListRow = {\n id: string;\n slug: string;\n title: string;\n whenToUse: string;\n tags: string[];\n argsSchema: ArgsSchema;\n currentVersion: number;\n healthState: string;\n callCount: number;\n distinctWorkflowCount: number;\n successStreak: number;\n codeBytes: number;\n lastCalledAt: string | null;\n updatedAt: string | null;\n archivedAt: string | null;\n};\n\ntype Recipe = RecipeListRow & {\n code: string;\n docMarkdown: string | null;\n orgId: string;\n propertyId: string;\n};\n\n/**\n * Render a recipe's arg contract as a compact signature, e.g.\n * `menuName: string (required), itemName: string`. Empty schema → `(none)`.\n * Exported for testing.\n */\nexport function formatArgSignature(argsSchema: ArgsSchema): string {\n const properties = argsSchema.properties ?? {};\n const required = new Set(\n (Array.isArray(argsSchema.required) ? argsSchema.required : []).filter(\n (name): name is string => typeof name === 'string'\n )\n );\n const names = Object.keys(properties);\n if (names.length === 0) return '(none)';\n return names\n .map((name) => {\n const type = properties[name]?.type ?? 'any';\n return `${name}: ${type}${required.has(name) ? ' (required)' : ''}`;\n })\n .join(', ');\n}\n\n/**\n * Build an example `--args` JSON object with a placeholder per property, so an\n * agent gets a paste-ready call skeleton, e.g. `{\"menuName\":\"<string>\"}`.\n * Exported for testing.\n */\nexport function exampleArgsJson(argsSchema: ArgsSchema): string {\n const properties = argsSchema.properties ?? {};\n const example: Record<string, string> = {};\n for (const name of Object.keys(properties)) {\n example[name] = `<${properties[name]?.type ?? 'value'}>`;\n }\n return JSON.stringify(example);\n}\n\n/** Quote one argv value for safe copy/paste into a POSIX-compatible shell. */\nexport function shellQuote(value: string): string {\n return `'${value.replaceAll(\"'\", `'\\\\''`)}'`;\n}\n\n/** The exact command that runs a recipe against a live session. */\nexport function callCommand(propertyId: string, slug: string, argsSchema: ArgsSchema): string {\n const hasArgs = Object.keys(argsSchema.properties ?? {}).length > 0;\n const argsPart = hasArgs ? ` --args ${shellQuote(exampleArgsJson(argsSchema))}` : '';\n return `cofactor session call-recipe --application ${shellQuote(propertyId)} --slug ${shellQuote(slug)}${argsPart}`;\n}\n\ntype UpsertResult = {\n id: string;\n slug: string;\n title: string;\n currentVersion: number;\n healthState: string;\n};\n\ntype ListResponse = { ok: boolean; error?: string; data?: RecipeListRow[] };\ntype GetResponse = { ok: boolean; error?: string; data?: Recipe };\ntype UpsertResponse = {\n ok: boolean;\n error?: string;\n errors?: string[];\n warnings?: string[];\n data?: UpsertResult;\n};\ntype OkResponse = { ok: boolean; error?: string };\n\nfunction printHelp(): void {\n console.log(\n [\n \"canary application recipe: Provision + audit a property's interaction recipes.\",\n '',\n 'Interaction recipe = a named, re-entrant Playwright transaction for an app-wide',\n 'interaction mechanic (e.g. a self-dismissing menu). Normally minted by the agent;',\n 'these commands let you audit them and hand-provision working ones for tricky cases.',\n '',\n 'Sub-commands:',\n ' list --application <id> [--include-archived] [--format json|table]',\n ' get --application <id> --slug <slug> [--format json|code]',\n ' upsert --application <id> --file <recipe.json> [--base-version <n>]',\n ' archive --application <id> --slug <slug> [--reason <text>]',\n '',\n 'Running a recipe:',\n ' `list` and `get` print the exact ready-to-run command under \"run:\".',\n ' Run one against a live browser-testing session with:',\n \" cofactor session call-recipe --application <id> --slug <slug> --args '{...}'\",\n ' (In an interactive session, `macro` is unavailable — pre-resolve dynamic',\n ' values into --args — and `attach` is a no-op. Page-driving recipes work as-is.)',\n '',\n 'upsert --file expects a JSON object (argsSchema is a JSON Schema object):',\n ' {',\n ' \"slug\": \"select-from-transient-menu\",',\n ' \"title\": \"Select an item from a self-dismissing menu\",',\n ' \"whenToUse\": \"Menus in this app unmount seconds after opening.\",',\n ' \"tags\": [\"menu\", \"overlay\"],',\n ' \"argsSchema\": {',\n ' \"type\": \"object\",',\n ' \"properties\": { \"menuName\": { \"type\": \"string\" }, \"itemName\": { \"type\": \"string\" } },',\n ' \"required\": [\"menuName\", \"itemName\"]',\n ' },',\n ' \"code\": \"async ({ page, args }) => { /* open + click atomically */ }\",',\n ' \"docMarkdown\": \"optional usage notes\"',\n ' }',\n '',\n 'Notes:',\n ' --property is accepted as an alias for --application.',\n ' upsert runs the same server-side lint as the agent (rejects secrets/foreign',\n ' hosts/unreferenced args). Pass --base-version <current> to EDIT an existing',\n ' recipe; omit it to create. A hand-provisioned recipe starts at health',\n ' \"unverified\" and earns \"verified\" through the normal replay ladder.',\n ' archive is a LOSSLESS prune: re-running upsert on the same slug restores it.',\n ].join('\\n')\n );\n}\n\nfunction requirePropertyId(argv: string[]): string {\n const propertyId = getApplicationArg(argv);\n if (!propertyId) {\n console.error('Error: --application is required (alias: --property).');\n process.exit(1);\n }\n return propertyId;\n}\n\nfunction requireSlug(argv: string[]): string {\n const slug = getArgValue(argv, '--slug');\n if (!slug) {\n console.error('Error: --slug <slug> is required.');\n process.exit(1);\n }\n return slug;\n}\n\nasync function handleList(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = requirePropertyId(argv);\n const includeArchived = hasFlag(argv, '--include-archived', '--all');\n const format = getArgValue(argv, '--format') ?? (hasFlag(argv, '--json') ? 'json' : 'table');\n\n const query = includeArchived ? '?includeArchived=1' : '';\n const result = await apiRequest<ListResponse>(\n apiUrl,\n token,\n 'GET',\n `/org/properties/${propertyId}/interaction-recipes${query}`\n );\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n const rows = result.data ?? [];\n if (format === 'json') {\n writeRawOutput(JSON.stringify(rows, null, 2));\n return;\n }\n\n if (rows.length === 0) {\n console.log('No interaction recipes for this property.');\n return;\n }\n\n for (const row of rows) {\n const flag = row.archivedAt ? ' [archived]' : '';\n const reuse = `${row.callCount} calls / ${row.distinctWorkflowCount} flows`;\n console.log(\n `${row.slug} (v${row.currentVersion}, ${row.healthState}, ${reuse}, ${row.codeBytes}B)${flag}\\n` +\n ` ${row.title} — ${row.whenToUse}\\n` +\n ` args: ${formatArgSignature(row.argsSchema)}` +\n (row.archivedAt\n ? '\\n run: (archived; restore with upsert before calling)'\n : `\\n run: ${callCommand(propertyId, row.slug, row.argsSchema)}`)\n );\n }\n}\n\nasync function handleGet(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = requirePropertyId(argv);\n const slug = requireSlug(argv);\n const format = getArgValue(argv, '--format') ?? (hasFlag(argv, '--json') ? 'json' : 'code');\n\n const result = await apiRequest<GetResponse>(\n apiUrl,\n token,\n 'GET',\n `/org/properties/${propertyId}/interaction-recipes/${encodeURIComponent(slug)}`\n );\n if (!result.ok || !result.data) {\n console.error(`Error: ${result.error ?? 'not found'}`);\n process.exit(1);\n }\n\n const recipe = result.data;\n if (format === 'json') {\n writeRawOutput(JSON.stringify(recipe, null, 2));\n return;\n }\n\n console.log(\n `# ${recipe.title} (${recipe.slug})\\n` +\n `version: ${recipe.currentVersion} health: ${recipe.healthState}` +\n `${recipe.archivedAt ? ' [archived]' : ''}\\n` +\n `tags: ${recipe.tags.join(', ') || '(none)'}\\n` +\n `whenToUse: ${recipe.whenToUse}\\n` +\n `args: ${formatArgSignature(recipe.argsSchema)}\\n` +\n `run: ${callCommand(propertyId, recipe.slug, recipe.argsSchema)}\\n\\n` +\n `${recipe.code}` +\n (recipe.docMarkdown ? `\\n\\n---\\n${recipe.docMarkdown}` : '')\n );\n}\n\nasync function handleUpsert(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = requirePropertyId(argv);\n const file = getArgValue(argv, '--file');\n if (!file) {\n console.error('Error: --file <recipe.json> is required. See `recipe help` for the shape.');\n process.exit(1);\n }\n\n let payload: Record<string, unknown>;\n try {\n payload = JSON.parse(readFileSync(file, 'utf8')) as Record<string, unknown>;\n } catch (error) {\n console.error(\n `Error reading ${file}: ${error instanceof Error ? error.message : String(error)}`\n );\n process.exit(1);\n }\n\n const baseVersionArg = getArgValue(argv, '--base-version');\n if (baseVersionArg !== undefined) {\n const parsed = Number(baseVersionArg);\n if (!Number.isInteger(parsed) || parsed < 1) {\n console.error('Error: --base-version must be a positive integer.');\n process.exit(1);\n }\n payload.baseVersion = parsed;\n }\n\n const result = await apiRequest<UpsertResponse>(\n apiUrl,\n token,\n 'POST',\n `/org/properties/${propertyId}/interaction-recipes`,\n payload\n );\n\n if (!result.ok || !result.data) {\n console.error(`Error: ${result.error ?? 'upsert failed'}`);\n if (result.errors?.length) {\n console.error('Lint errors:');\n for (const err of result.errors) console.error(` - ${err}`);\n }\n process.exit(1);\n }\n\n const saved = result.data;\n console.log(\n `Provisioned recipe \"${saved.slug}\" v${saved.currentVersion} (health: ${saved.healthState}).`\n );\n if (result.warnings?.length) {\n console.log('Lint warnings:');\n for (const warn of result.warnings) console.log(` - ${warn}`);\n }\n}\n\nasync function handleArchive(argv: string[], apiUrl: string, token: string): Promise<void> {\n const propertyId = requirePropertyId(argv);\n const slug = requireSlug(argv);\n const reason = getArgValue(argv, '--reason');\n\n const result = await apiRequest<OkResponse>(\n apiUrl,\n token,\n 'POST',\n `/org/properties/${propertyId}/interaction-recipes/${encodeURIComponent(slug)}/archive`,\n reason ? { reason } : {}\n );\n if (!result.ok) {\n console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n console.log(\n `Archived interaction recipe \"${slug}\" (restorable — re-run upsert to bring it back).`\n );\n}\n\nexport async function runRecipe(argv: string[], apiUrl: string, token: string): Promise<void> {\n const [action, ...rest] = argv;\n\n if (!action || action === 'help' || hasFlag(argv, '--help', '-h')) {\n printHelp();\n return;\n }\n\n switch (action) {\n case 'list':\n await handleList(rest, apiUrl, token);\n break;\n case 'get':\n await handleGet(rest, apiUrl, token);\n break;\n case 'upsert':\n await handleUpsert(rest, apiUrl, token);\n break;\n case 'archive':\n await handleArchive(rest, apiUrl, token);\n break;\n default:\n console.error(`Unknown recipe action: ${action}`);\n printHelp();\n process.exit(1);\n }\n}\n"],"mappings":"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","names":["process","result","item","readFileSync","process","readContent","readFileSync","process","handleList","handleGet","handleSet","readFileSync","process","printHelp","requirePropertyId","process","handleList","handleGet","readFileSync","handleArchive","printHelp","handleList","process"]}
|