@claude-collective/cli 0.13.4 → 0.25.1
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/CHANGELOG.md +357 -0
- package/README.md +41 -27
- package/config/skills-matrix.yaml +202 -134
- package/config/stacks.yaml +14 -20
- package/dist/chunk-3X5D7RM5.js +69 -0
- package/dist/chunk-3X5D7RM5.js.map +1 -0
- package/dist/chunk-4S4FCAA2.js +100 -0
- package/dist/chunk-4S4FCAA2.js.map +1 -0
- package/dist/chunk-4WGN6SUE.js +197 -0
- package/dist/chunk-4WGN6SUE.js.map +1 -0
- package/dist/{chunk-DHET7RCE.js → chunk-AWKZ5BDL.js} +9 -2
- package/dist/{chunk-DHET7RCE.js.map → chunk-AWKZ5BDL.js.map} +1 -1
- package/dist/{chunk-6Q3Y7KVB.js → chunk-DBRUQQUF.js} +8 -2
- package/dist/chunk-DBRUQQUF.js.map +1 -0
- package/dist/{chunk-Z7G4B5HJ.js → chunk-ETCVEV3S.js} +73 -150
- package/dist/chunk-ETCVEV3S.js.map +1 -0
- package/dist/chunk-F4RD5FYM.js +45 -0
- package/dist/chunk-F4RD5FYM.js.map +1 -0
- package/dist/{chunk-ACNBKXXJ.js → chunk-GGFOD5PK.js} +13 -44
- package/dist/chunk-GGFOD5PK.js.map +1 -0
- package/dist/chunk-H7SSBSPR.js +29 -0
- package/dist/chunk-H7SSBSPR.js.map +1 -0
- package/dist/chunk-HWD32NP7.js +19 -0
- package/dist/chunk-HWD32NP7.js.map +1 -0
- package/dist/{chunk-JIPWV2FX.js → chunk-IAYAE6MG.js} +12 -34
- package/dist/chunk-IAYAE6MG.js.map +1 -0
- package/dist/{chunk-RTE64SJA.js → chunk-IXBCRT3F.js} +2 -2
- package/dist/chunk-IXBCRT3F.js.map +1 -0
- package/dist/chunk-KWYO3M5Q.js +67 -0
- package/dist/chunk-KWYO3M5Q.js.map +1 -0
- package/dist/{chunk-E3FJH4TF.js → chunk-MCTSHLAF.js} +18 -18
- package/dist/chunk-MCTSHLAF.js.map +1 -0
- package/dist/chunk-MH66WDFV.js +251 -0
- package/dist/chunk-MH66WDFV.js.map +1 -0
- package/dist/{chunk-K3NB6DSG.js → chunk-MTPM7BX5.js} +108 -110
- package/dist/chunk-MTPM7BX5.js.map +1 -0
- package/dist/chunk-NQJ47R4N.js +1092 -0
- package/dist/chunk-NQJ47R4N.js.map +1 -0
- package/dist/chunk-NRC7XYCI.js +211 -0
- package/dist/chunk-NRC7XYCI.js.map +1 -0
- package/dist/{chunk-76DWXGQE.js → chunk-O6ZTD7ZI.js} +14 -3
- package/dist/chunk-O6ZTD7ZI.js.map +1 -0
- package/dist/chunk-OBXAY23Y.js +56 -0
- package/dist/chunk-OBXAY23Y.js.map +1 -0
- package/dist/{chunk-XY3XDVMI.js → chunk-QR2EBWL2.js} +3 -3
- package/dist/{chunk-66UDJBF6.js → chunk-REJGRCVQ.js} +2 -2
- package/dist/{chunk-D237EVNB.js → chunk-TMED5DQ2.js} +71 -48
- package/dist/chunk-TMED5DQ2.js.map +1 -0
- package/dist/chunk-U7HFKR74.js +21 -0
- package/dist/chunk-U7HFKR74.js.map +1 -0
- package/dist/chunk-UEMRJI2K.js +146 -0
- package/dist/chunk-UEMRJI2K.js.map +1 -0
- package/dist/{chunk-Z2CWURZ6.js → chunk-UNN7523L.js} +2 -2
- package/dist/chunk-V2ZIH7HV.js +29 -0
- package/dist/chunk-V2ZIH7HV.js.map +1 -0
- package/dist/{chunk-X6QONICW.js → chunk-VVYNZZUX.js} +7 -19
- package/dist/chunk-VVYNZZUX.js.map +1 -0
- package/dist/chunk-WXS4S3MA.js +220 -0
- package/dist/chunk-WXS4S3MA.js.map +1 -0
- package/dist/{chunk-CDX4W4DM.js → chunk-XENOESJZ.js} +53 -33
- package/dist/chunk-XENOESJZ.js.map +1 -0
- package/dist/chunk-YDBSSAJ6.js +4207 -0
- package/dist/chunk-YDBSSAJ6.js.map +1 -0
- package/dist/chunk-ZDREFYD2.js +696 -0
- package/dist/chunk-ZDREFYD2.js.map +1 -0
- package/dist/chunk-ZW2PELOH.js +197 -0
- package/dist/chunk-ZW2PELOH.js.map +1 -0
- package/dist/cli/defaults/agent-mappings.yaml +13 -14
- package/dist/commands/build/marketplace.js +19 -23
- package/dist/commands/build/marketplace.js.map +1 -1
- package/dist/commands/build/plugins.js +13 -240
- package/dist/commands/build/plugins.js.map +1 -1
- package/dist/commands/build/stack.js +13 -25
- package/dist/commands/build/stack.js.map +1 -1
- package/dist/commands/compile.js +45 -82
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/config/get.js +9 -9
- package/dist/commands/config/get.js.map +1 -1
- package/dist/commands/config/index.js +8 -8
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/config/path.js +7 -9
- package/dist/commands/config/path.js.map +1 -1
- package/dist/commands/config/set-project.js +12 -13
- package/dist/commands/config/set-project.js.map +1 -1
- package/dist/commands/config/show.js +7 -7
- package/dist/commands/config/unset-project.js +12 -13
- package/dist/commands/config/unset-project.js.map +1 -1
- package/dist/commands/diff.js +15 -44
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +23 -67
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +98 -81
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +27 -79
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/import/skill.js +38 -58
- package/dist/commands/import/skill.js.map +1 -1
- package/dist/commands/info.js +17 -24
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.js +103 -779
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +8 -11
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/new/agent.js +11 -16
- package/dist/commands/new/agent.js.map +1 -1
- package/dist/commands/new/skill.js +14 -18
- package/dist/commands/new/skill.js.map +1 -1
- package/dist/commands/outdated.js +16 -97
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/search.js +24 -43
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/uninstall.js +22 -30
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +23 -154
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.js +38 -89
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/version/bump.js +12 -28
- package/dist/commands/version/bump.js.map +1 -1
- package/dist/commands/version/index.js +8 -24
- package/dist/commands/version/index.js.map +1 -1
- package/dist/commands/version/set.js +11 -26
- package/dist/commands/version/set.js.map +1 -1
- package/dist/commands/version/show.js +8 -24
- package/dist/commands/version/show.js.map +1 -1
- package/dist/components/common/confirm.js +2 -2
- package/dist/components/common/confirm.test.js +203 -0
- package/dist/components/common/confirm.test.js.map +1 -0
- package/dist/components/common/message.js +3 -7
- package/dist/components/common/message.js.map +1 -1
- package/dist/components/common/spinner.js +1 -1
- package/dist/components/common/spinner.js.map +1 -1
- package/dist/components/skill-search/skill-search.js +3 -3
- package/dist/components/wizard/category-grid.js +2 -2
- package/dist/components/wizard/category-grid.test.js +138 -156
- package/dist/components/wizard/category-grid.test.js.map +1 -1
- package/dist/components/wizard/menu-item.js +9 -0
- package/dist/components/wizard/search-modal.js +9 -0
- package/dist/components/wizard/search-modal.test.js +216 -0
- package/dist/components/wizard/search-modal.test.js.map +1 -0
- package/dist/components/wizard/section-progress.js +2 -2
- package/dist/components/wizard/section-progress.test.js +16 -106
- package/dist/components/wizard/section-progress.test.js.map +1 -1
- package/dist/components/wizard/source-grid.js +10 -0
- package/dist/components/wizard/source-grid.js.map +1 -0
- package/dist/components/wizard/source-grid.test.js +500 -0
- package/dist/components/wizard/source-grid.test.js.map +1 -0
- package/dist/components/wizard/step-approach.js +7 -5
- package/dist/components/wizard/step-approach.test.js +115 -0
- package/dist/components/wizard/step-approach.test.js.map +1 -0
- package/dist/components/wizard/step-build.js +9 -5
- package/dist/components/wizard/step-build.test.js +160 -284
- package/dist/components/wizard/step-build.test.js.map +1 -1
- package/dist/components/wizard/step-confirm.js +3 -3
- package/dist/components/wizard/step-confirm.test.js +364 -0
- package/dist/components/wizard/step-confirm.test.js.map +1 -0
- package/dist/components/wizard/step-refine.js +2 -3
- package/dist/components/wizard/step-refine.test.js +24 -26
- package/dist/components/wizard/step-refine.test.js.map +1 -1
- package/dist/components/wizard/step-settings.js +14 -0
- package/dist/components/wizard/step-settings.js.map +1 -0
- package/dist/components/wizard/step-settings.test.js +240 -0
- package/dist/components/wizard/step-settings.test.js.map +1 -0
- package/dist/components/wizard/step-sources.js +17 -0
- package/dist/components/wizard/step-sources.js.map +1 -0
- package/dist/components/wizard/step-sources.test.js +290 -0
- package/dist/components/wizard/step-sources.test.js.map +1 -0
- package/dist/components/wizard/step-stack.js +7 -4
- package/dist/components/wizard/step-stack.test.js +344 -0
- package/dist/components/wizard/step-stack.test.js.map +1 -0
- package/dist/components/wizard/view-title.js +9 -0
- package/dist/components/wizard/view-title.js.map +1 -0
- package/dist/components/wizard/wizard-layout.js +17 -0
- package/dist/components/wizard/wizard-layout.js.map +1 -0
- package/dist/components/wizard/wizard-tabs.js +2 -2
- package/dist/components/wizard/wizard-tabs.test.js +292 -0
- package/dist/components/wizard/wizard-tabs.test.js.map +1 -0
- package/dist/components/wizard/wizard.js +22 -15
- package/dist/config/skills-matrix.yaml +202 -134
- package/dist/config/stacks.yaml +14 -20
- package/dist/hooks/init.js +6 -8
- package/dist/hooks/init.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{magic-string.es-RGXYGAW3.js → magic-string.es-PAH2SOTR.js} +2 -2
- package/dist/source-manager-DSYZEVGZ.js +16 -0
- package/dist/source-manager-DSYZEVGZ.js.map +1 -0
- package/dist/src/agents/developer/api-developer/agent.yaml +1 -1
- package/dist/src/agents/developer/cli-developer/agent.yaml +1 -1
- package/dist/src/agents/developer/web-architecture/agent.yaml +1 -1
- package/dist/src/agents/developer/web-developer/agent.yaml +1 -1
- package/dist/src/agents/developer/web-developer/examples.md +1 -6
- package/dist/src/agents/meta/agent-summoner/agent.yaml +1 -1
- package/dist/src/agents/meta/documentor/agent.yaml +1 -1
- package/dist/src/agents/meta/documentor/workflow.md +1 -5
- package/dist/src/agents/meta/skill-summoner/agent.yaml +1 -1
- package/dist/src/agents/migration/cli-migrator/agent.yaml +1 -1
- package/dist/src/agents/migration/cli-migrator/anti-patterns.md +1 -3
- package/dist/src/agents/pattern/pattern-scout/agent.yaml +1 -1
- package/dist/src/agents/pattern/web-pattern-critique/agent.yaml +1 -1
- package/dist/src/agents/planning/web-pm/agent.yaml +1 -1
- package/dist/src/agents/researcher/api-researcher/agent.yaml +1 -1
- package/dist/src/agents/researcher/web-researcher/agent.yaml +1 -1
- package/dist/src/agents/reviewer/api-reviewer/agent.yaml +1 -1
- package/dist/src/agents/reviewer/cli-reviewer/agent.yaml +1 -1
- package/dist/src/agents/reviewer/web-reviewer/agent.yaml +1 -1
- package/dist/src/agents/tester/cli-tester/agent.yaml +1 -1
- package/dist/src/agents/tester/web-tester/agent.yaml +1 -1
- package/dist/src/agents/tester/web-tester/output-format.md +1 -3
- package/dist/stores/wizard-store.js +4 -3
- package/dist/stores/wizard-store.test.js +94 -88
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +5 -3
- package/src/agents/developer/api-developer/agent.yaml +1 -1
- package/src/agents/developer/cli-developer/agent.yaml +1 -1
- package/src/agents/developer/web-architecture/agent.yaml +1 -1
- package/src/agents/developer/web-developer/agent.yaml +1 -1
- package/src/agents/developer/web-developer/examples.md +1 -6
- package/src/agents/meta/agent-summoner/agent.yaml +1 -1
- package/src/agents/meta/documentor/agent.yaml +1 -1
- package/src/agents/meta/documentor/workflow.md +1 -5
- package/src/agents/meta/skill-summoner/agent.yaml +1 -1
- package/src/agents/migration/cli-migrator/agent.yaml +1 -1
- package/src/agents/migration/cli-migrator/anti-patterns.md +1 -3
- package/src/agents/pattern/pattern-scout/agent.yaml +1 -1
- package/src/agents/pattern/web-pattern-critique/agent.yaml +1 -1
- package/src/agents/planning/web-pm/agent.yaml +1 -1
- package/src/agents/researcher/api-researcher/agent.yaml +1 -1
- package/src/agents/researcher/web-researcher/agent.yaml +1 -1
- package/src/agents/reviewer/api-reviewer/agent.yaml +1 -1
- package/src/agents/reviewer/cli-reviewer/agent.yaml +1 -1
- package/src/agents/reviewer/web-reviewer/agent.yaml +1 -1
- package/src/agents/tester/cli-tester/agent.yaml +1 -1
- package/src/agents/tester/web-tester/agent.yaml +1 -1
- package/src/agents/tester/web-tester/output-format.md +1 -3
- package/dist/chunk-3U3R4NCG.js +0 -22
- package/dist/chunk-3U3R4NCG.js.map +0 -1
- package/dist/chunk-4K4ZXQRM.js +0 -317
- package/dist/chunk-4K4ZXQRM.js.map +0 -1
- package/dist/chunk-6Q3Y7KVB.js.map +0 -1
- package/dist/chunk-76DWXGQE.js.map +0 -1
- package/dist/chunk-7Q44DMSP.js +0 -582
- package/dist/chunk-7Q44DMSP.js.map +0 -1
- package/dist/chunk-ACNBKXXJ.js.map +0 -1
- package/dist/chunk-B7CCVP6Q.js +0 -639
- package/dist/chunk-B7CCVP6Q.js.map +0 -1
- package/dist/chunk-BDLUZVKU.js +0 -54
- package/dist/chunk-BDLUZVKU.js.map +0 -1
- package/dist/chunk-CDX4W4DM.js.map +0 -1
- package/dist/chunk-D237EVNB.js.map +0 -1
- package/dist/chunk-DRXPNNPB.js +0 -393
- package/dist/chunk-DRXPNNPB.js.map +0 -1
- package/dist/chunk-E3FJH4TF.js.map +0 -1
- package/dist/chunk-ED4E6Q2T.js +0 -114
- package/dist/chunk-ED4E6Q2T.js.map +0 -1
- package/dist/chunk-EHS3TWWP.js +0 -95
- package/dist/chunk-EHS3TWWP.js.map +0 -1
- package/dist/chunk-GDH553MV.js +0 -91
- package/dist/chunk-GDH553MV.js.map +0 -1
- package/dist/chunk-HLJX2FTL.js +0 -95
- package/dist/chunk-HLJX2FTL.js.map +0 -1
- package/dist/chunk-I2DSLOXZ.js +0 -75
- package/dist/chunk-I2DSLOXZ.js.map +0 -1
- package/dist/chunk-I4TPKIYX.js +0 -493
- package/dist/chunk-I4TPKIYX.js.map +0 -1
- package/dist/chunk-IAUAQJQ2.js +0 -57
- package/dist/chunk-IAUAQJQ2.js.map +0 -1
- package/dist/chunk-IBE7JIAG.js +0 -129
- package/dist/chunk-IBE7JIAG.js.map +0 -1
- package/dist/chunk-IMDW5ZUP.js +0 -132
- package/dist/chunk-IMDW5ZUP.js.map +0 -1
- package/dist/chunk-JIPWV2FX.js.map +0 -1
- package/dist/chunk-K3NB6DSG.js.map +0 -1
- package/dist/chunk-K7EVM5LY.js +0 -141
- package/dist/chunk-K7EVM5LY.js.map +0 -1
- package/dist/chunk-KAAEN2PO.js +0 -57
- package/dist/chunk-KAAEN2PO.js.map +0 -1
- package/dist/chunk-NDY25DTL.js +0 -453
- package/dist/chunk-NDY25DTL.js.map +0 -1
- package/dist/chunk-P26A2K5N.js +0 -64
- package/dist/chunk-P26A2K5N.js.map +0 -1
- package/dist/chunk-RFTSZDHV.js +0 -313
- package/dist/chunk-RFTSZDHV.js.map +0 -1
- package/dist/chunk-RTE64SJA.js.map +0 -1
- package/dist/chunk-SVYPSDWY.js +0 -84
- package/dist/chunk-SVYPSDWY.js.map +0 -1
- package/dist/chunk-TKFPKEV3.js +0 -69
- package/dist/chunk-TKFPKEV3.js.map +0 -1
- package/dist/chunk-UQTEPWU7.js +0 -108
- package/dist/chunk-UQTEPWU7.js.map +0 -1
- package/dist/chunk-V46GGCCI.js +0 -294
- package/dist/chunk-V46GGCCI.js.map +0 -1
- package/dist/chunk-X6QONICW.js.map +0 -1
- package/dist/chunk-Y2LW7R3Y.js +0 -23
- package/dist/chunk-Y2LW7R3Y.js.map +0 -1
- package/dist/chunk-Z7G4B5HJ.js.map +0 -1
- package/dist/chunk-ZENYS6KW.js +0 -90
- package/dist/chunk-ZENYS6KW.js.map +0 -1
- package/dist/chunk-ZFPSUQOU.js +0 -396
- package/dist/chunk-ZFPSUQOU.js.map +0 -1
- package/dist/commands/config/set.js +0 -61
- package/dist/commands/config/set.js.map +0 -1
- package/dist/commands/config/unset.js +0 -57
- package/dist/commands/config/unset.js.map +0 -1
- package/dist/commands/test-imports.js +0 -92
- package/dist/commands/test-imports.js.map +0 -1
- package/dist/components/wizard/step-stack-options.js +0 -11
- package/dist/components/wizard/wizard-footer.js +0 -9
- /package/dist/{chunk-XY3XDVMI.js.map → chunk-QR2EBWL2.js.map} +0 -0
- /package/dist/{chunk-66UDJBF6.js.map → chunk-REJGRCVQ.js.map} +0 -0
- /package/dist/{chunk-Z2CWURZ6.js.map → chunk-UNN7523L.js.map} +0 -0
- /package/dist/components/wizard/{step-stack-options.js.map → menu-item.js.map} +0 -0
- /package/dist/components/wizard/{wizard-footer.js.map → search-modal.js.map} +0 -0
- /package/dist/{magic-string.es-RGXYGAW3.js.map → magic-string.es-PAH2SOTR.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/ansis/index.js","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/browser.js","../node_modules/has-flag/index.js","../node_modules/supports-color/index.js","../node_modules/debug/src/node.js","../node_modules/debug/src/index.js","../node_modules/@oclif/test/lib/index.js","../src/cli/lib/__tests__/test-fixtures.ts","../src/cli/lib/__tests__/helpers.ts"],"sourcesContent":["let{defineProperty:e,setPrototypeOf:t,create:r,keys:n}=Object,l=\"\",{round:s,max:i}=Math,o=e=>{let[,t]=/([a-f\\d]{3,6})/i.exec(e)||[],r=t?t.length:0;if(3===r)t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2];else if(6^r)return[0,0,0];let n=parseInt(t,16);return[n>>16&255,n>>8&255,255&n]},a=(e,t,r)=>e===t&&t===r?e<8?16:e>248?231:s((e-8)/247*24)+232:16+36*s(e/51)+6*s(t/51)+s(r/51),c=e=>{let t,r,n,l,o;return e<8?30+e:e<16?e-8+90:(e>=232?t=r=n=(10*(e-232)+8)/255:(o=(e-=16)%36,t=(e/36|0)/5,r=(o/6|0)/5,n=o%6/5),l=2*i(t,r,n),l?30+(s(n)<<2|s(r)<<1|s(t))+(2^l?0:60):30)},u=(()=>{let e=e=>i.some((t=>e.test(t))),t=globalThis,r=t.Deno,l=!!r,s=t.process||r||{},i=s.argv||s.args||[],o=s.env||{},a=-1;if(l)try{o=o.toObject()}catch(e){a=0}let c=!!o.PM2_HOME&&!!o.pm_id||o.NEXT_RUNTIME?.includes(\"edge\")||(l?r.isatty(1):!!s.stdout?.isTTY),u=\"FORCE_COLOR\",p=o[u],g=parseInt(p),d=isNaN(g)?\"false\"===p?0:-1:g,f=u in o&&d||e(/^-{1,2}color=?(true|always)?$/);return f&&(a=d),a<0&&(a=((e,t,r)=>{let l=e.TERM,s=\",\"+n(e).join(\",\");return{\"24bit\":3,truecolor:3,ansi256:2,ansi:1}[e.COLORTERM]||(e.TF_BUILD?1:/,TEAMCI/.test(s)?2:e.CI?/,GIT(HUB|EA)/.test(s)?3:1:!t||/-mono|dumb/i.test(l)?0:r||/term-(kit|dir)/.test(l)?3:/-256/.test(l)?2:/scr|xterm|tty|ansi|color|[nm]ux|vt|cyg/.test(l)?1:3)})(o,c,\"win32\"===(l?r.build.os:s.platform))),!d||o.NO_COLOR||e(/^-{1,2}(no-color|color=(false|never))$/)?0:f&&!a||t.window?.chrome?3:a})(),p=u>0,g={open:l,close:l},d=p?(e,t)=>({open:`\u001b[${e}m`,close:`\u001b[${t}m`}):()=>g,f=39,b=49,_=(e,t)=>(r,n,l)=>d(((e,t,r)=>c(a(e,t,r)))(r,n,l)+e,t),m=e=>(t,r,n)=>e(a(t,r,n)),y=e=>t=>e(...o(t)),h=(e,t,r)=>d(`38;2;${e};${t};${r}`,f),O=(e,t,r)=>d(`48;2;${e};${t};${r}`,b),$=e=>d(`38;5;${e}`,f),x=e=>d(`48;5;${e}`,b);2===u?(h=m($),O=m(x)):1===u&&(h=_(0,f),O=_(10,b),$=e=>d(c(e),f),x=e=>d(c(e)+10,b));let T,w={ansi256:$,bgAnsi256:x,fg:$,bg:x,rgb:h,bgRgb:O,hex:y(h),bgHex:y(O),visible:g,reset:d(0,0),bold:d(1,22),dim:d(2,22),italic:d(3,23),underline:d(4,24),inverse:d(7,27),hidden:d(8,28)},R=\"Bright\",E=30;\"black,red,green,yellow,blue,magenta,cyan,white\".split(\",\").map((e=>{T=\"bg\"+e[0].toUpperCase()+e.slice(1),w[e]=d(E,f),w[e+R]=d(60+E,f),w[T]=d(E+10,b),w[T+R]=d(70+E++,b)})),w.grey=w.gray=d(90,f),w.bgGrey=w.bgGray=d(100,b),w.strikethrough=w.strike=d(9,29);let v,C={},I=({_p:e},{open:r,close:n})=>{let s=(e,...t)=>{if(!e){if(r&&r===n)return r;if(null==e||l===e)return l}let i=e.raw?String.raw(e,...t).replace(/\\\\n/g,\"\\n\"):l+e,o=s._p,{_a:a,_b:c}=o;if(i.includes(\"\u001b\"))for(;o;){let e,t=o.close,r=o.open,n=t.length,s=l,a=0;if(n){for(;~(e=i.indexOf(t,a));a=e+n)s+=i.slice(a,e)+r;i=s+i.slice(a)}o=o._p}return i.includes(\"\\n\")&&(i=i.replace(/(\\r?\\n)/g,c+\"$1\"+a)),a+i+c},i=r,o=n;return e&&(i=e._a+r,o=n+e._b),t(s,v),s._p={open:r,close:n,_a:i,_b:o,_p:e},s.open=i,s.close=o,s};const M=function(){let n={Ansis:M,isSupported:()=>p,strip:e=>e.replace(/[\u001b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,l),extend(l){for(let t in l){let r=l[t],n=(typeof r)[0],s=\"s\"===n?h(...o(r)):r;C[t]=\"f\"===n?{get(){return(...e)=>I(this,r(...e))}}:{get(){let r=I(this,s);return e(this,t,{value:r}),r}}}return v=r({},C),t(n,v),n}};return n.extend(w)},k=new M;module.exports=k,k.default=k;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet flagForceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tflagForceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m') ||\n\t\t\thasFlag('color=full') ||\n\t\t\thasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream, options = {}) {\n\tconst level = supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options\n\t});\n\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel({isTTY: tty.isatty(1)}),\n\tstderr: getSupportLevel({isTTY: tty.isatty(2)})\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.captureOutput = captureOutput;\nexports.runCommand = runCommand;\nexports.runHook = runHook;\nconst core_1 = require(\"@oclif/core\");\nconst ansis_1 = __importDefault(require(\"ansis\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst node_path_1 = require(\"node:path\");\nconst debug = (0, debug_1.default)('oclif-test');\nfunction traverseFilePathUntil(filename, predicate) {\n let current = filename;\n while (!predicate(current)) {\n current = (0, node_path_1.dirname)(current);\n }\n return current;\n}\nfunction findRoot() {\n return (process.env.OCLIF_TEST_ROOT ??\n // eslint-disable-next-line unicorn/prefer-module\n Object.values(require.cache).find((m) => m?.children?.includes(module))?.filename ??\n traverseFilePathUntil(\n // eslint-disable-next-line unicorn/prefer-module\n require.main?.path ?? module.path, (p) => !(p.includes('node_modules') || p.includes('.pnpm') || p.includes('.yarn'))));\n}\nfunction makeLoadOptions(loadOpts) {\n return loadOpts ?? { root: findRoot() };\n}\n/**\n * Split a string into an array of strings, preserving quoted substrings\n *\n * @example\n * splitString('foo bar --name \"foo\"') // ['foo bar', '--name', 'foo']\n * splitString('foo bar --name \"foo bar\"') // ['foo bar', '--name', 'foo bar']\n * splitString('foo bar --name=\"foo bar\"') // ['foo bar', '--name=foo bar']\n * splitString('foo bar --name=foo bar') // ['foo bar', '--name=foo', 'bar']\n *\n * @param str input string\n * @returns array of strings with quotes removed\n */\nfunction splitString(str) {\n return (str.match(/(?:[^\\s\"]+|\"[^\"]*\")+/g) ?? []).map((s) => s.replaceAll(/^\"|\"$|(?<==)\"/g, ''));\n}\n/**\n * Capture the stderr and stdout output of a function\n * @param fn async function to run\n * @param opts options\n * - print: Whether to print the output to the console\n * - stripAnsi: Whether to strip ANSI codes from the output\n * @returns {Promise<CaptureResult<T>>} Captured output\n * - error: Error object if the function throws an error\n * - result: Result of the function if it returns a value and succeeds\n * - stderr: Captured stderr output\n * - stdout: Captured stdout output\n */\nasync function captureOutput(fn, opts) {\n const print = opts?.print ?? false;\n const stripAnsi = opts?.stripAnsi ?? true;\n const testNodeEnv = opts?.testNodeEnv || 'test';\n const originals = {\n NODE_ENV: process.env.NODE_ENV,\n stderr: process.stderr.write,\n stdout: process.stdout.write,\n };\n const output = {\n stderr: [],\n stdout: [],\n };\n const toString = (str) => (stripAnsi ? ansis_1.default.strip(str.toString()) : str.toString());\n const getStderr = () => output.stderr.map((b) => toString(b)).join('');\n const getStdout = () => output.stdout.map((b) => toString(b)).join('');\n const mock = (std) => (str, encoding, cb) => {\n output[std].push(str);\n if (print) {\n if (encoding !== null && typeof encoding === 'function') {\n cb = encoding;\n encoding = undefined;\n }\n originals[std].apply(process[std], [str, encoding, cb]);\n }\n else if (typeof cb === 'function')\n cb();\n return true;\n };\n process.stdout.write = mock('stdout');\n process.stderr.write = mock('stderr');\n process.env.NODE_ENV = testNodeEnv;\n try {\n const result = await fn();\n return {\n result: result,\n stderr: getStderr(),\n stdout: getStdout(),\n };\n }\n catch (error) {\n return {\n ...(error instanceof core_1.Errors.CLIError && { error: Object.assign(error, { message: toString(error.message) }) }),\n ...(error instanceof Error && { error: Object.assign(error, { message: toString(error.message) }) }),\n stderr: getStderr(),\n stdout: getStdout(),\n };\n }\n finally {\n process.stderr.write = originals.stderr;\n process.stdout.write = originals.stdout;\n process.env.NODE_ENV = originals.NODE_ENV;\n }\n}\n/**\n * Capture the stderr and stdout output of a command in your CLI\n * @param args Command arguments, e.g. `['my:command', '--flag']` or `'my:command --flag'`\n * @param loadOpts options for loading oclif `Config`\n * @param captureOpts options for capturing the output\n * - print: Whether to print the output to the console\n * - stripAnsi: Whether to strip ANSI codes from the output\n * @returns {Promise<CaptureResult<T>>} Captured output\n * - error: Error object if the command throws an error\n * - result: Result of the command if it returns a value and succeeds\n * - stderr: Captured stderr output\n * - stdout: Captured stdout output\n */\nasync function runCommand(args, loadOpts, captureOpts) {\n const loadOptions = makeLoadOptions(loadOpts);\n const argsArray = splitString((Array.isArray(args) ? args : [args]).join(' '));\n const [id, ...rest] = argsArray;\n const finalArgs = id === '.' ? rest : argsArray;\n debug('loadOpts: %O', loadOptions);\n debug('args: %O', finalArgs);\n return captureOutput(async () => (0, core_1.run)(finalArgs, loadOptions), captureOpts);\n}\n/**\n * Capture the stderr and stdout output of a hook in your CLI\n * @param hook Hook name\n * @param options options to pass to the hook\n * @param loadOpts options for loading oclif `Config`\n * @param captureOpts options for capturing the output\n * - print: Whether to print the output to the console\n * - stripAnsi: Whether to strip ANSI codes from the output\n * @returns {Promise<CaptureResult<T>>} Captured output\n * - error: Error object if the hook throws an error\n * - result: Result of the hook if it returns a value and succeeds\n * - stderr: Captured stderr output\n * - stdout: Captured stdout output\n */\nasync function runHook(hook, options, loadOpts, captureOpts) {\n const loadOptions = makeLoadOptions(loadOpts);\n debug('loadOpts: %O', loadOptions);\n return captureOutput(async () => {\n const config = await core_1.Config.load(loadOptions);\n return config.runHook(hook, options);\n }, captureOpts);\n}\n","import type { ResolvedSkill } from \"../../types\";\nimport { createMockSkill } from \"./helpers\";\n\nexport function createTestReactSkill(overrides?: Partial<ResolvedSkill>): ResolvedSkill {\n return createMockSkill(\"web-framework-react\", \"web/framework\", {\n displayName: \"react\",\n\n description: \"React framework for building user interfaces\",\n tags: [\"react\", \"web\", \"ui\", \"component\"],\n ...overrides,\n });\n}\n\nexport function createTestZustandSkill(overrides?: Partial<ResolvedSkill>): ResolvedSkill {\n return createMockSkill(\"web-state-zustand\", \"web/state\", {\n displayName: \"zustand\",\n\n description: \"Bear necessities state management\",\n tags: [\"state\", \"react\", \"zustand\"],\n ...overrides,\n });\n}\n\nexport function createTestHonoSkill(overrides?: Partial<ResolvedSkill>): ResolvedSkill {\n return createMockSkill(\"api-framework-hono\", \"api/framework\", {\n displayName: \"hono\",\n\n description: \"Lightweight web framework for the edge\",\n tags: [\"api\", \"api\", \"edge\", \"serverless\"],\n ...overrides,\n });\n}\n\nexport function createTestVitestSkill(overrides?: Partial<ResolvedSkill>): ResolvedSkill {\n return createMockSkill(\"web-testing-vitest\", \"testing\", {\n displayName: \"vitest\",\n\n description: \"Next generation testing framework\",\n tags: [\"testing\", \"vitest\", \"unit\"],\n ...overrides,\n });\n}\n\nexport function createTestVueSkill(overrides?: Partial<ResolvedSkill>): ResolvedSkill {\n return createMockSkill(\"web-framework-vue\", \"web/framework\", {\n displayName: \"vue\",\n\n description: \"Progressive JavaScript framework\",\n tags: [\"vue\", \"web\", \"reactive\"],\n ...overrides,\n });\n}\n\nexport function createTestAuthPatternsSkill(overrides?: Partial<ResolvedSkill>): ResolvedSkill {\n return createMockSkill(\"api-security-auth-patterns\", \"api/security\", {\n description: \"Authentication and authorization patterns\",\n tags: [\"auth\", \"security\", \"jwt\", \"oauth\"],\n ...overrides,\n });\n}\n\nexport function createTestDrizzleSkill(overrides?: Partial<ResolvedSkill>): ResolvedSkill {\n return createMockSkill(\"api-database-drizzle\", \"api/database\", {\n displayName: \"drizzle\",\n\n description: \"TypeScript ORM for SQL databases\",\n tags: [\"database\", \"orm\", \"sql\"],\n ...overrides,\n });\n}\n\nexport function createTestMethodologySkill(overrides?: Partial<ResolvedSkill>): ResolvedSkill {\n return createMockSkill(\"meta-methodology-anti-over-engineering\", \"meta/methodology\", {\n description: \"Surgical implementation, not architectural innovation\",\n tags: [\"methodology\", \"foundational\"],\n ...overrides,\n });\n}\n\nexport function createTestScssModulesSkill(overrides?: Partial<ResolvedSkill>): ResolvedSkill {\n return createMockSkill(\"web-styling-scss-modules\", \"web/styling\", {\n displayName: \"scss-modules\",\n description: \"CSS Modules with SCSS\",\n tags: [\"css\", \"scss\", \"modules\"],\n ...overrides,\n });\n}\n","import path from \"path\";\nimport os from \"os\";\nimport { fileURLToPath } from \"url\";\nimport { mkdtemp, rm, mkdir, writeFile, stat } from \"fs/promises\";\nimport { runCommand } from \"@oclif/test\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nexport const CLI_ROOT = path.resolve(__dirname, \"../../../..\");\n\nexport const OUTPUT_STRINGS = {\n CONFIG_HEADER: \"Claude Collective Configuration\",\n CONFIG_PATHS_HEADER: \"Configuration File Paths\",\n CONFIG_LAYERS_HEADER: \"Configuration Layers:\",\n CONFIG_PRECEDENCE: \"Precedence: flag > env > project > global > default\",\n SOURCE_LABEL: \"Source:\",\n MARKETPLACE_LABEL: \"Marketplace:\",\n AGENTS_SOURCE_LABEL: \"Agents Source:\",\n GLOBAL_LABEL: \"Global:\",\n PROJECT_LABEL: \"Project:\",\n\n // Setup/Init outputs\n INIT_HEADER: \"Claude Collective Setup\",\n INIT_SUCCESS: \"Claude Collective initialized successfully!\",\n LOADING_MATRIX: \"Loading skills matrix...\",\n LOADING_SKILLS: \"Loading skills...\",\n LOADING_AGENTS: \"Loading agent partials...\",\n\n // Plugin/installation outputs\n NO_PLUGIN_FOUND: \"No plugin found\",\n NO_INSTALLATION_FOUND: \"No installation found\",\n NO_PLUGIN_INSTALLATION: \"No plugin installation found\",\n NOT_INSTALLED: \"Claude Collective is not installed\",\n UNINSTALL_HEADER: \"Claude Collective Uninstall\",\n UNINSTALL_COMPLETE: \"Claude Collective has been uninstalled\",\n EJECT_HEADER: \"Claude Collective Eject\",\n\n // Doctor command outputs\n DOCTOR_HEADER: \"Claude Collective Doctor\",\n\n // Error message patterns (lowercase for case-insensitive matching)\n ERROR_MISSING_ARG: \"missing required arg\",\n ERROR_UNEXPECTED_ARG: \"unexpected argument\",\n ERROR_UNKNOWN_FLAG: \"unknown flag\",\n ERROR_PARSE: \"parse\",\n} as const;\n\nexport async function runCliCommand(args: string[]) {\n return runCommand(args, { root: CLI_ROOT });\n}\nimport type {\n AgentDefinition,\n CategoryDefinition,\n CategoryPath,\n Domain,\n MergedSkillsMatrix,\n ProjectConfig,\n ResolvedSkill,\n ResolvedStack,\n SkillDisplayName,\n SkillId,\n Subcategory,\n} from \"../../types\";\nimport {\n createTestReactSkill,\n createTestVueSkill,\n createTestZustandSkill,\n createTestScssModulesSkill,\n createTestHonoSkill,\n createTestDrizzleSkill,\n createTestVitestSkill,\n} from \"./test-fixtures\";\n\nexport async function fileExists(filePath: string): Promise<boolean> {\n try {\n const s = await stat(filePath);\n return s.isFile();\n } catch {\n return false;\n }\n}\n\nexport async function directoryExists(dirPath: string): Promise<boolean> {\n try {\n const s = await stat(dirPath);\n return s.isDirectory();\n } catch {\n return false;\n }\n}\n\nexport async function createTempDir(prefix = \"cc-test-\"): Promise<string> {\n return mkdtemp(path.join(os.tmpdir(), prefix));\n}\n\nexport async function cleanupTempDir(dirPath: string): Promise<void> {\n await rm(dirPath, { recursive: true, force: true });\n}\n\nexport interface TestDirs {\n tempDir: string;\n projectDir: string;\n pluginDir: string;\n skillsDir: string;\n agentsDir: string;\n}\n\nexport async function createTestDirs(prefix = \"cc-test-\"): Promise<TestDirs> {\n const tempDir = await createTempDir(prefix);\n const projectDir = path.join(tempDir, \"project\");\n const pluginDir = path.join(projectDir, \".claude\", \"plugins\", \"claude-collective\");\n const skillsDir = path.join(pluginDir, \"skills\");\n const agentsDir = path.join(pluginDir, \"agents\");\n\n await mkdir(skillsDir, { recursive: true });\n await mkdir(agentsDir, { recursive: true });\n\n return { tempDir, projectDir, pluginDir, skillsDir, agentsDir };\n}\n\nexport async function cleanupTestDirs(dirs: TestDirs): Promise<void> {\n await cleanupTempDir(dirs.tempDir);\n}\n\nexport function createMockSkill(\n id: SkillId,\n category: CategoryPath,\n overrides?: Partial<ResolvedSkill>,\n): ResolvedSkill {\n return {\n id,\n description: `${id} skill`,\n category,\n categoryExclusive: false,\n tags: [],\n author: \"@test\",\n conflictsWith: [],\n recommends: [],\n requires: [],\n alternatives: [],\n discourages: [],\n compatibleWith: [],\n requiresSetup: [],\n providesSetupFor: [],\n path: `skills/${category}/${id}/`,\n ...overrides,\n };\n}\n\nexport function createMockMatrix(\n skills: Record<string, ResolvedSkill>,\n overrides?: Partial<MergedSkillsMatrix>,\n): MergedSkillsMatrix {\n return {\n version: \"1.0.0\",\n categories: {} as Record<Subcategory, import(\"../../types\").CategoryDefinition>,\n skills,\n suggestedStacks: [],\n displayNameToId: {} as Record<SkillDisplayName, SkillId>,\n displayNames: {} as Record<SkillId, SkillDisplayName>,\n generatedAt: new Date().toISOString(),\n ...overrides,\n };\n}\n\n// Includes one methodology skill to test preselection behavior\nexport function createMockMatrixWithMethodology(\n skills: Record<string, ResolvedSkill> = {},\n overrides?: Partial<MergedSkillsMatrix>,\n): MergedSkillsMatrix {\n const METHODOLOGY_CATEGORY: Subcategory = \"methodology\";\n // Just one methodology skill is enough to test preselection\n // Using normalized skill ID format\n const methodologySkill = createMockSkill(\n \"meta-methodology-anti-over-engineering\",\n METHODOLOGY_CATEGORY,\n { description: \"Surgical implementation\" },\n );\n\n return createMockMatrix(\n { [methodologySkill.id]: methodologySkill, ...skills },\n {\n categories: {\n [METHODOLOGY_CATEGORY]: {\n id: METHODOLOGY_CATEGORY,\n displayName: \"Methodology\",\n description: \"Foundational development practices\",\n exclusive: false,\n required: false,\n order: 0,\n },\n ...overrides?.categories,\n } as Record<Subcategory, import(\"../../types\").CategoryDefinition>,\n ...overrides,\n },\n );\n}\n\nexport function createMockProjectConfig(\n name: string,\n skills: SkillId[],\n overrides?: Partial<ProjectConfig>,\n): ProjectConfig {\n // Build stack from skills: each skill goes to all agents under its subcategory\n const stack: Record<string, Record<string, SkillId>> = {};\n for (const skillId of skills) {\n // Extract a subcategory from the skill ID (e.g., \"web-framework-react\" -> \"framework\")\n const parts = skillId.split(\"-\");\n const subcategory = parts.length >= 2 ? parts[1] : parts[0];\n for (const agent of [\"web-developer\", \"api-developer\"]) {\n if (!stack[agent]) stack[agent] = {};\n stack[agent][subcategory] = skillId;\n }\n }\n return {\n name,\n description: `Test project: ${name}`,\n author: \"@test\",\n agents: [\"web-developer\", \"api-developer\"],\n skills,\n stack,\n ...overrides,\n };\n}\n\nexport function createMockAgent(\n name: string,\n overrides?: Partial<AgentDefinition>,\n): AgentDefinition {\n return {\n title: name,\n description: `${name} agent`,\n tools: [\"Read\", \"Write\", \"Edit\", \"Grep\", \"Glob\", \"Bash\"],\n model: \"opus\",\n permission_mode: \"default\",\n ...overrides,\n };\n}\n\nexport function createSkillContent(name: string, description = \"A test skill\"): string {\n return `---\nname: ${name}\ndescription: ${description}\ncategory: test\n---\n\n# ${name}\n\nThis is a test skill.\n`;\n}\n\nexport function createMetadataContent(author = \"@test\"): string {\n return `version: 1\nauthor: ${author}\n`;\n}\n\nexport function createAgentYamlContent(name: string, description = \"A test agent\"): string {\n return `name: ${name}\ndescription: ${description}\ntools: Read, Write, Edit\nmodel: opus\npermissionMode: default\n`;\n}\n\nexport async function writeTestSkill(\n skillsDir: string,\n skillName: string,\n options?: { author?: string; description?: string },\n): Promise<string> {\n const skillDir = path.join(skillsDir, skillName);\n await mkdir(skillDir, { recursive: true });\n\n await writeFile(\n path.join(skillDir, \"SKILL.md\"),\n createSkillContent(skillName, options?.description),\n );\n\n await writeFile(path.join(skillDir, \"metadata.yaml\"), createMetadataContent(options?.author));\n\n return skillDir;\n}\n\nexport async function writeTestAgent(\n agentsDir: string,\n agentName: string,\n options?: { description?: string },\n): Promise<string> {\n const agentDir = path.join(agentsDir, agentName);\n await mkdir(agentDir, { recursive: true });\n\n await writeFile(\n path.join(agentDir, \"agent.yaml\"),\n createAgentYamlContent(agentName, options?.description),\n );\n\n return agentDir;\n}\n\nexport function createMockCategory(\n id: Subcategory,\n displayName: string,\n overrides?: Partial<CategoryDefinition>,\n): CategoryDefinition {\n return {\n id,\n displayName,\n description: `${displayName} category`,\n exclusive: true,\n required: false,\n order: 0,\n ...overrides,\n };\n}\n\nexport function createMockResolvedStack(\n id: string,\n name: string,\n overrides?: Partial<ResolvedStack>,\n): ResolvedStack {\n return {\n id,\n name,\n description: `${name} stack`,\n audience: [],\n skills: {},\n allSkillIds: [],\n philosophy: \"\",\n ...overrides,\n };\n}\n\n// 7 skills across 6 categories, 2 stacks, display name mappings, and relationship data\nexport function createComprehensiveMatrix(\n overrides?: Partial<MergedSkillsMatrix>,\n): MergedSkillsMatrix {\n // Skill categories use bare Subcategory IDs (matching production metadata.yaml\n // and the categories map keys). The test fixture factories default to \"web/framework\"\n // CategoryPath format, but the wizard's populateFromStack needs bare IDs to match\n // the categories map lookup (e.g., \"framework\" not \"web/framework\").\n const skills = {\n \"web-framework-react\": createTestReactSkill({ category: \"framework\" }),\n \"web-framework-vue\": createTestVueSkill({\n category: \"framework\",\n conflictsWith: [{ skillId: \"web-framework-react\", reason: \"Choose one framework\" }],\n }),\n \"web-state-zustand\": createTestZustandSkill({\n category: \"client-state\",\n recommends: [{ skillId: \"web-framework-react\", reason: \"Works great with React\" }],\n }),\n \"web-styling-scss-modules\": createTestScssModulesSkill({ category: \"styling\" }),\n \"api-framework-hono\": createTestHonoSkill({ category: \"api\" }),\n \"api-database-drizzle\": createTestDrizzleSkill({ category: \"database\" }),\n \"web-testing-vitest\": createTestVitestSkill({ category: \"testing\" }),\n };\n\n const categories = {\n framework: createMockCategory(\"framework\" as Subcategory, \"Framework\", {\n domain: \"web\" as Domain,\n exclusive: true,\n required: true,\n }),\n \"client-state\": createMockCategory(\"client-state\" as Subcategory, \"State\", {\n domain: \"web\" as Domain,\n order: 1,\n }),\n styling: createMockCategory(\"styling\" as Subcategory, \"Styling\", {\n domain: \"web\" as Domain,\n order: 2,\n }),\n api: createMockCategory(\"api\" as Subcategory, \"Backend Framework\", {\n domain: \"api\" as Domain,\n exclusive: true,\n required: true,\n }),\n database: createMockCategory(\"database\" as Subcategory, \"Database\", {\n domain: \"api\" as Domain,\n order: 1,\n }),\n testing: createMockCategory(\"testing\" as Subcategory, \"Testing\", {\n domain: \"shared\" as Domain,\n exclusive: false,\n order: 10,\n }),\n } as Record<Subcategory, CategoryDefinition>;\n\n const suggestedStacks: ResolvedStack[] = [\n createMockResolvedStack(\"nextjs-fullstack\", \"Next.js Fullstack\", {\n description: \"Complete Next.js stack with React and Hono\",\n audience: [\"startups\", \"enterprise\"],\n skills: {\n \"web-developer\": {\n framework: \"web-framework-react\",\n \"client-state\": \"web-state-zustand\",\n styling: \"web-styling-scss-modules\",\n },\n \"api-developer\": {\n api: \"api-framework-hono\",\n database: \"api-database-drizzle\",\n },\n } as ResolvedStack[\"skills\"],\n allSkillIds: [\n \"web-framework-react\",\n \"web-state-zustand\",\n \"web-styling-scss-modules\",\n \"api-framework-hono\",\n \"api-database-drizzle\",\n ],\n philosophy: \"Modern, type-safe fullstack development\",\n }),\n createMockResolvedStack(\"vue-stack\", \"Vue Stack\", {\n description: \"Vue.js frontend stack\",\n audience: [\"startups\"],\n skills: {\n \"web-developer\": {\n framework: \"web-framework-vue\",\n },\n } as ResolvedStack[\"skills\"],\n allSkillIds: [\"web-framework-vue\"],\n philosophy: \"Progressive framework approach\",\n }),\n ];\n\n const displayNameToId = {\n react: \"web-framework-react\",\n vue: \"web-framework-vue\",\n zustand: \"web-state-zustand\",\n \"scss-modules\": \"web-styling-scss-modules\",\n hono: \"api-framework-hono\",\n drizzle: \"api-database-drizzle\",\n vitest: \"web-testing-vitest\",\n } as unknown as Record<SkillDisplayName, SkillId>;\n\n const displayNames = {} as Record<SkillId, SkillDisplayName>;\n for (const [displayName, fullId] of Object.entries(displayNameToId)) {\n (displayNames as Record<string, string>)[fullId] = displayName;\n }\n\n return createMockMatrix(skills, {\n categories,\n suggestedStacks,\n displayNameToId,\n displayNames,\n ...overrides,\n });\n}\n\n// 4 skills, 4 categories, 2 stacks — lighter than createComprehensiveMatrix\nexport function createBasicMatrix(overrides?: Partial<MergedSkillsMatrix>): MergedSkillsMatrix {\n // Bare Subcategory IDs — see createComprehensiveMatrix comment\n const skills = {\n \"web-framework-react\": createTestReactSkill({ category: \"framework\" }),\n \"web-state-zustand\": createTestZustandSkill({ category: \"client-state\" }),\n \"api-framework-hono\": createTestHonoSkill({ category: \"api\" }),\n \"web-testing-vitest\": createTestVitestSkill({ category: \"testing\" }),\n };\n\n const suggestedStacks: ResolvedStack[] = [\n createMockResolvedStack(\"react-fullstack\", \"React Fullstack\", {\n allSkillIds: [\"web-framework-react\", \"web-state-zustand\", \"api-framework-hono\"],\n }),\n createMockResolvedStack(\"testing-stack\", \"Testing Stack\", {\n allSkillIds: [\"web-testing-vitest\"],\n }),\n ];\n\n return createMockMatrix(skills, {\n suggestedStacks,\n categories: {\n framework: createMockCategory(\"framework\" as Subcategory, \"Framework\", {\n domain: \"web\" as Domain,\n exclusive: true,\n required: true,\n }),\n \"client-state\": createMockCategory(\"client-state\" as Subcategory, \"State\", {\n domain: \"web\" as Domain,\n order: 1,\n }),\n api: createMockCategory(\"api\" as Subcategory, \"Backend Framework\", {\n domain: \"api\" as Domain,\n exclusive: true,\n required: true,\n }),\n testing: createMockCategory(\"testing\" as Subcategory, \"Testing Framework\", {\n domain: \"shared\" as Domain,\n exclusive: false,\n }),\n } as Record<Subcategory, CategoryDefinition>,\n ...overrides,\n });\n}\n\nexport {\n createTestReactSkill,\n createTestZustandSkill,\n createTestHonoSkill,\n createTestVitestSkill,\n createTestVueSkill,\n createTestAuthPatternsSkill,\n createTestDrizzleSkill,\n createTestScssModulesSkill,\n} from \"./test-fixtures\";\n"],"mappings":"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","names":["e","t","r","n","l","o","i","s","a","c","u","p","g","d","f","useColors","runCommand"]}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
buildSkillRefsFromConfig,
|
|
4
|
+
compileAgentForPlugin,
|
|
5
|
+
createLiquidEngine,
|
|
6
|
+
fetchFromSource,
|
|
7
|
+
getPluginAgentsDir,
|
|
8
|
+
loadAllAgents,
|
|
9
|
+
loadPluginSkills,
|
|
10
|
+
loadProjectAgents,
|
|
11
|
+
loadProjectConfig,
|
|
12
|
+
resolveAgents
|
|
13
|
+
} from "./chunk-YDBSSAJ6.js";
|
|
14
|
+
import {
|
|
15
|
+
directoryExists,
|
|
16
|
+
ensureDir,
|
|
17
|
+
fileExists,
|
|
18
|
+
glob,
|
|
19
|
+
projectConfigLoaderSchema,
|
|
20
|
+
readFile,
|
|
21
|
+
verbose,
|
|
22
|
+
writeFile
|
|
23
|
+
} from "./chunk-ZDREFYD2.js";
|
|
24
|
+
import {
|
|
25
|
+
typedEntries,
|
|
26
|
+
typedKeys
|
|
27
|
+
} from "./chunk-HWD32NP7.js";
|
|
28
|
+
import {
|
|
29
|
+
CLAUDE_DIR,
|
|
30
|
+
DIRS,
|
|
31
|
+
PROJECT_ROOT
|
|
32
|
+
} from "./chunk-O6ZTD7ZI.js";
|
|
33
|
+
import {
|
|
34
|
+
init_esm_shims
|
|
35
|
+
} from "./chunk-AWKZ5BDL.js";
|
|
36
|
+
|
|
37
|
+
// src/cli/lib/agents/agent-fetcher.ts
|
|
38
|
+
init_esm_shims();
|
|
39
|
+
import path from "path";
|
|
40
|
+
async function getAgentDefinitions(remoteSource, options = {}) {
|
|
41
|
+
if (remoteSource) {
|
|
42
|
+
return fetchAgentDefinitionsFromRemote(remoteSource, options);
|
|
43
|
+
}
|
|
44
|
+
return getLocalAgentDefinitions(options);
|
|
45
|
+
}
|
|
46
|
+
async function getLocalAgentDefinitions(options = {}) {
|
|
47
|
+
const agentsDir = path.join(PROJECT_ROOT, DIRS.agents);
|
|
48
|
+
let templatesDir = path.join(PROJECT_ROOT, DIRS.templates);
|
|
49
|
+
if (!await directoryExists(agentsDir)) {
|
|
50
|
+
throw new Error(
|
|
51
|
+
`Agent partials not found at: ${agentsDir}. Ensure the CLI is properly installed.`
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
if (options.projectDir) {
|
|
55
|
+
const localTemplatesDir = path.join(options.projectDir, CLAUDE_DIR, "templates");
|
|
56
|
+
if (await directoryExists(localTemplatesDir)) {
|
|
57
|
+
verbose(`Using local templates from: ${localTemplatesDir}`);
|
|
58
|
+
templatesDir = localTemplatesDir;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!await directoryExists(templatesDir)) {
|
|
62
|
+
verbose(`Templates directory not found: ${templatesDir}`);
|
|
63
|
+
}
|
|
64
|
+
verbose(`Agent partials loaded from CLI: ${agentsDir}`);
|
|
65
|
+
verbose(`Templates directory: ${templatesDir}`);
|
|
66
|
+
return {
|
|
67
|
+
agentsDir,
|
|
68
|
+
templatesDir,
|
|
69
|
+
sourcePath: PROJECT_ROOT
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async function fetchAgentDefinitionsFromRemote(source, options = {}) {
|
|
73
|
+
verbose(`Fetching agent partials from remote: ${source}`);
|
|
74
|
+
const result = await fetchFromSource(source, {
|
|
75
|
+
forceRefresh: options.forceRefresh,
|
|
76
|
+
subdir: ""
|
|
77
|
+
});
|
|
78
|
+
const agentsDir = path.join(result.path, "src", "agents");
|
|
79
|
+
const templatesDir = path.join(agentsDir, "_templates");
|
|
80
|
+
if (!await directoryExists(agentsDir)) {
|
|
81
|
+
throw new Error(`Agent partials not found at: ${agentsDir}`);
|
|
82
|
+
}
|
|
83
|
+
if (!await directoryExists(templatesDir)) {
|
|
84
|
+
verbose(`Templates directory not found: ${templatesDir}`);
|
|
85
|
+
}
|
|
86
|
+
verbose(`Agent partials fetched from: ${result.path}`);
|
|
87
|
+
return {
|
|
88
|
+
agentsDir,
|
|
89
|
+
templatesDir,
|
|
90
|
+
sourcePath: result.path
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// src/cli/lib/agents/agent-recompiler.ts
|
|
95
|
+
init_esm_shims();
|
|
96
|
+
import path2 from "path";
|
|
97
|
+
import { parse as parseYaml } from "yaml";
|
|
98
|
+
async function getExistingAgentNames(pluginDir) {
|
|
99
|
+
const agentsDir = getPluginAgentsDir(pluginDir);
|
|
100
|
+
const files = await glob("*.md", agentsDir);
|
|
101
|
+
return files.map((f) => path2.basename(f, ".md"));
|
|
102
|
+
}
|
|
103
|
+
async function loadConfigWithFallback(pluginDir) {
|
|
104
|
+
const legacyConfigPath = path2.join(pluginDir, "config.yaml");
|
|
105
|
+
if (await fileExists(legacyConfigPath)) {
|
|
106
|
+
try {
|
|
107
|
+
const content = await readFile(legacyConfigPath);
|
|
108
|
+
const parsed = parseYaml(content);
|
|
109
|
+
const result = projectConfigLoaderSchema.safeParse(parsed);
|
|
110
|
+
if (result.success) {
|
|
111
|
+
verbose(`Loaded config.yaml from ${legacyConfigPath}`);
|
|
112
|
+
return {
|
|
113
|
+
// Loader schema validates field types but allows partial configs;
|
|
114
|
+
// required field validation happens in validateProjectConfig()
|
|
115
|
+
config: result.data,
|
|
116
|
+
configPath: legacyConfigPath
|
|
117
|
+
};
|
|
118
|
+
} else {
|
|
119
|
+
verbose(`Invalid config.yaml at ${legacyConfigPath}: ${result.error.message}`);
|
|
120
|
+
}
|
|
121
|
+
} catch (error) {
|
|
122
|
+
verbose(`Failed to parse config.yaml: ${error}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return loadProjectConfig(pluginDir);
|
|
126
|
+
}
|
|
127
|
+
async function recompileAgents(options) {
|
|
128
|
+
const {
|
|
129
|
+
pluginDir,
|
|
130
|
+
sourcePath,
|
|
131
|
+
agents: specifiedAgents,
|
|
132
|
+
skills: providedSkills,
|
|
133
|
+
projectDir,
|
|
134
|
+
outputDir
|
|
135
|
+
} = options;
|
|
136
|
+
const result = {
|
|
137
|
+
compiled: [],
|
|
138
|
+
failed: [],
|
|
139
|
+
warnings: []
|
|
140
|
+
};
|
|
141
|
+
let loadedConfig = await loadConfigWithFallback(pluginDir);
|
|
142
|
+
if (!loadedConfig && projectDir) {
|
|
143
|
+
loadedConfig = await loadConfigWithFallback(projectDir);
|
|
144
|
+
}
|
|
145
|
+
const projectConfig = loadedConfig?.config ?? null;
|
|
146
|
+
const builtinAgents = await loadAllAgents(sourcePath);
|
|
147
|
+
const projectAgents = projectDir ? await loadProjectAgents(projectDir) : {};
|
|
148
|
+
const allAgents = {
|
|
149
|
+
...builtinAgents,
|
|
150
|
+
...projectAgents
|
|
151
|
+
};
|
|
152
|
+
let agentNames;
|
|
153
|
+
if (specifiedAgents) {
|
|
154
|
+
agentNames = specifiedAgents;
|
|
155
|
+
} else if (projectConfig?.agents) {
|
|
156
|
+
agentNames = projectConfig.agents;
|
|
157
|
+
verbose(`Using agents from config.yaml: ${agentNames.join(", ")}`);
|
|
158
|
+
} else if (outputDir) {
|
|
159
|
+
agentNames = typedKeys(allAgents);
|
|
160
|
+
verbose(`Using all available agents from source: ${agentNames.join(", ")}`);
|
|
161
|
+
} else {
|
|
162
|
+
agentNames = await getExistingAgentNames(pluginDir);
|
|
163
|
+
}
|
|
164
|
+
if (agentNames.length === 0) {
|
|
165
|
+
result.warnings.push("No agents found to recompile");
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
verbose(`Recompiling ${agentNames.length} agents in ${outputDir ?? pluginDir}`);
|
|
169
|
+
const pluginSkills = providedSkills ?? await loadPluginSkills(pluginDir);
|
|
170
|
+
const compileAgents = {};
|
|
171
|
+
for (const agentName of agentNames) {
|
|
172
|
+
if (allAgents[agentName]) {
|
|
173
|
+
const agentStack = projectConfig?.stack?.[agentName];
|
|
174
|
+
compileAgents[agentName] = agentStack ? { skills: buildSkillRefsFromConfig(agentStack) } : {};
|
|
175
|
+
} else {
|
|
176
|
+
result.warnings.push(`Agent "${agentName}" not found in source definitions`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
const compileConfig = {
|
|
180
|
+
name: projectConfig?.name || path2.basename(pluginDir),
|
|
181
|
+
description: projectConfig?.description || "Recompiled plugin",
|
|
182
|
+
agents: compileAgents
|
|
183
|
+
};
|
|
184
|
+
const engine = await createLiquidEngine(projectDir);
|
|
185
|
+
const resolvedAgents = await resolveAgents(allAgents, pluginSkills, compileConfig, sourcePath);
|
|
186
|
+
const agentsDir = outputDir ?? getPluginAgentsDir(pluginDir);
|
|
187
|
+
await ensureDir(agentsDir);
|
|
188
|
+
for (const [agentName, agent] of typedEntries(resolvedAgents)) {
|
|
189
|
+
try {
|
|
190
|
+
const output = await compileAgentForPlugin(agentName, agent, sourcePath, engine);
|
|
191
|
+
await writeFile(path2.join(agentsDir, `${agentName}.md`), output);
|
|
192
|
+
result.compiled.push(agentName);
|
|
193
|
+
verbose(` Recompiled: ${agentName}`);
|
|
194
|
+
} catch (error) {
|
|
195
|
+
result.failed.push(agentName);
|
|
196
|
+
result.warnings.push(
|
|
197
|
+
`Failed to compile ${agentName}: ${error instanceof Error ? error.message : String(error)}`
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// src/cli/lib/agents/index.ts
|
|
205
|
+
init_esm_shims();
|
|
206
|
+
|
|
207
|
+
export {
|
|
208
|
+
getAgentDefinitions,
|
|
209
|
+
recompileAgents
|
|
210
|
+
};
|
|
211
|
+
//# sourceMappingURL=chunk-NRC7XYCI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/lib/agents/agent-fetcher.ts","../src/cli/lib/agents/agent-recompiler.ts","../src/cli/lib/agents/index.ts"],"sourcesContent":["import path from \"path\";\nimport { directoryExists } from \"../../utils/fs\";\nimport { verbose } from \"../../utils/logger\";\nimport { PROJECT_ROOT, DIRS, CLAUDE_DIR } from \"../../consts\";\nimport { fetchFromSource, type FetchOptions } from \"../loading\";\nimport type { AgentSourcePaths } from \"../../types\";\n\nexport type AgentDefinitionOptions = FetchOptions & {\n projectDir?: string;\n};\n\nexport async function getAgentDefinitions(\n remoteSource?: string,\n options: AgentDefinitionOptions = {},\n): Promise<AgentSourcePaths> {\n if (remoteSource) {\n return fetchAgentDefinitionsFromRemote(remoteSource, options);\n }\n return getLocalAgentDefinitions(options);\n}\n\nexport async function getLocalAgentDefinitions(\n options: AgentDefinitionOptions = {},\n): Promise<AgentSourcePaths> {\n const agentsDir = path.join(PROJECT_ROOT, DIRS.agents);\n let templatesDir = path.join(PROJECT_ROOT, DIRS.templates);\n\n if (!(await directoryExists(agentsDir))) {\n throw new Error(\n `Agent partials not found at: ${agentsDir}. ` + `Ensure the CLI is properly installed.`,\n );\n }\n\n // Check for local templates first (from eject templates)\n if (options.projectDir) {\n const localTemplatesDir = path.join(options.projectDir, CLAUDE_DIR, \"templates\");\n if (await directoryExists(localTemplatesDir)) {\n verbose(`Using local templates from: ${localTemplatesDir}`);\n templatesDir = localTemplatesDir;\n }\n }\n\n if (!(await directoryExists(templatesDir))) {\n verbose(`Templates directory not found: ${templatesDir}`);\n }\n\n verbose(`Agent partials loaded from CLI: ${agentsDir}`);\n verbose(`Templates directory: ${templatesDir}`);\n\n return {\n agentsDir,\n templatesDir,\n sourcePath: PROJECT_ROOT,\n };\n}\n\nexport async function fetchAgentDefinitionsFromRemote(\n source: string,\n options: FetchOptions = {},\n): Promise<AgentSourcePaths> {\n verbose(`Fetching agent partials from remote: ${source}`);\n\n const result = await fetchFromSource(source, {\n forceRefresh: options.forceRefresh,\n subdir: \"\",\n });\n\n const agentsDir = path.join(result.path, \"src\", \"agents\");\n const templatesDir = path.join(agentsDir, \"_templates\");\n\n if (!(await directoryExists(agentsDir))) {\n throw new Error(`Agent partials not found at: ${agentsDir}`);\n }\n\n if (!(await directoryExists(templatesDir))) {\n verbose(`Templates directory not found: ${templatesDir}`);\n }\n\n verbose(`Agent partials fetched from: ${result.path}`);\n\n return {\n agentsDir,\n templatesDir,\n sourcePath: result.path,\n };\n}\n","import path from \"path\";\nimport { glob, writeFile, ensureDir, readFile, fileExists } from \"../../utils/fs\";\nimport { verbose } from \"../../utils/logger\";\nimport { loadAllAgents, loadPluginSkills, loadProjectAgents } from \"../loading\";\nimport { resolveAgents, buildSkillRefsFromConfig } from \"../resolver\";\nimport { compileAgentForPlugin } from \"../stacks\";\nimport { getPluginAgentsDir } from \"../plugins\";\nimport { createLiquidEngine } from \"../compiler\";\nimport { loadProjectConfig, type LoadedProjectConfig } from \"../configuration\";\nimport { parse as parseYaml } from \"yaml\";\nimport { projectConfigLoaderSchema } from \"../schemas\";\nimport type {\n AgentConfig,\n AgentDefinition,\n AgentName,\n CompileAgentConfig,\n CompileConfig,\n ProjectConfig,\n SkillDefinition,\n SkillId,\n} from \"../../types\";\nimport { typedEntries, typedKeys } from \"../../utils/typed-object\";\n\nexport type RecompileAgentsOptions = {\n pluginDir: string;\n sourcePath: string;\n agents?: AgentName[];\n skills?: Record<string, SkillDefinition>;\n projectDir?: string;\n outputDir?: string;\n};\n\nexport type RecompileAgentsResult = {\n compiled: AgentName[];\n failed: AgentName[];\n warnings: string[];\n};\n\nasync function getExistingAgentNames(pluginDir: string): Promise<AgentName[]> {\n const agentsDir = getPluginAgentsDir(pluginDir);\n const files = await glob(\"*.md\", agentsDir);\n // Boundary cast: directory names from filesystem are agent names by convention\n return files.map((f) => path.basename(f, \".md\") as AgentName);\n}\n\n// Tries pluginDir/config.yaml (legacy) then pluginDir/.claude/config.yaml\nasync function loadConfigWithFallback(pluginDir: string): Promise<LoadedProjectConfig | null> {\n const legacyConfigPath = path.join(pluginDir, \"config.yaml\");\n if (await fileExists(legacyConfigPath)) {\n try {\n const content = await readFile(legacyConfigPath);\n const parsed = parseYaml(content);\n const result = projectConfigLoaderSchema.safeParse(parsed);\n\n if (result.success) {\n verbose(`Loaded config.yaml from ${legacyConfigPath}`);\n return {\n // Loader schema validates field types but allows partial configs;\n // required field validation happens in validateProjectConfig()\n config: result.data as ProjectConfig,\n configPath: legacyConfigPath,\n };\n } else {\n verbose(`Invalid config.yaml at ${legacyConfigPath}: ${result.error.message}`);\n }\n } catch (error) {\n verbose(`Failed to parse config.yaml: ${error}`);\n }\n }\n\n // Fall back to project config location (.claude/config.yaml)\n return loadProjectConfig(pluginDir);\n}\n\nexport async function recompileAgents(\n options: RecompileAgentsOptions,\n): Promise<RecompileAgentsResult> {\n const {\n pluginDir,\n sourcePath,\n agents: specifiedAgents,\n skills: providedSkills,\n projectDir,\n outputDir,\n } = options;\n\n const result: RecompileAgentsResult = {\n compiled: [],\n failed: [],\n warnings: [],\n };\n\n let loadedConfig = await loadConfigWithFallback(pluginDir);\n if (!loadedConfig && projectDir) {\n loadedConfig = await loadConfigWithFallback(projectDir);\n }\n const projectConfig = loadedConfig?.config ?? null;\n\n const builtinAgents = await loadAllAgents(sourcePath);\n const projectAgents = projectDir ? await loadProjectAgents(projectDir) : {};\n\n // Boundary cast: loadAllAgents returns Record<string, AgentDefinition>, agent dirs are AgentName by convention\n // Priority: project agents > built-in agents\n const allAgents = {\n ...builtinAgents,\n ...projectAgents,\n } as Record<AgentName, AgentDefinition>;\n\n let agentNames: AgentName[];\n if (specifiedAgents) {\n agentNames = specifiedAgents;\n } else if (projectConfig?.agents) {\n agentNames = projectConfig.agents;\n verbose(`Using agents from config.yaml: ${agentNames.join(\", \")}`);\n } else if (outputDir) {\n agentNames = typedKeys<AgentName>(allAgents);\n verbose(`Using all available agents from source: ${agentNames.join(\", \")}`);\n } else {\n agentNames = await getExistingAgentNames(pluginDir);\n }\n\n if (agentNames.length === 0) {\n result.warnings.push(\"No agents found to recompile\");\n return result;\n }\n\n verbose(`Recompiling ${agentNames.length} agents in ${outputDir ?? pluginDir}`);\n\n const pluginSkills = providedSkills ?? (await loadPluginSkills(pluginDir));\n\n const compileAgents = {} as Record<AgentName, CompileAgentConfig>;\n for (const agentName of agentNames) {\n if (allAgents[agentName]) {\n const agentStack = projectConfig?.stack?.[agentName];\n compileAgents[agentName] = agentStack ? { skills: buildSkillRefsFromConfig(agentStack) } : {};\n } else {\n result.warnings.push(`Agent \"${agentName}\" not found in source definitions`);\n }\n }\n\n const compileConfig: CompileConfig = {\n name: projectConfig?.name || path.basename(pluginDir),\n description: projectConfig?.description || \"Recompiled plugin\",\n agents: compileAgents,\n };\n\n const engine = await createLiquidEngine(projectDir);\n const resolvedAgents = await resolveAgents(allAgents, pluginSkills, compileConfig, sourcePath);\n\n const agentsDir = outputDir ?? getPluginAgentsDir(pluginDir);\n await ensureDir(agentsDir);\n\n for (const [agentName, agent] of typedEntries<AgentName, AgentConfig>(resolvedAgents)) {\n try {\n const output = await compileAgentForPlugin(agentName, agent, sourcePath, engine);\n await writeFile(path.join(agentsDir, `${agentName}.md`), output);\n result.compiled.push(agentName);\n verbose(` Recompiled: ${agentName}`);\n } catch (error) {\n result.failed.push(agentName);\n result.warnings.push(\n `Failed to compile ${agentName}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n\n return result;\n}\n","export {\n type AgentDefinitionOptions,\n getAgentDefinitions,\n getLocalAgentDefinitions,\n fetchAgentDefinitionsFromRemote,\n} from \"./agent-fetcher\";\n\nexport {\n type RecompileAgentsOptions,\n type RecompileAgentsResult,\n recompileAgents,\n} from \"./agent-recompiler\";\n"],"mappings":"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","names":["path","path"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
init_esm_shims
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AWKZ5BDL.js";
|
|
5
5
|
|
|
6
6
|
// src/cli/consts.ts
|
|
7
7
|
init_esm_shims();
|
|
@@ -22,6 +22,7 @@ var CACHE_DIR = path.join(os.homedir(), ".cache", "claude-collective");
|
|
|
22
22
|
var SKILLS_MATRIX_PATH = "config/skills-matrix.yaml";
|
|
23
23
|
var SKILLS_DIR_PATH = "src/skills";
|
|
24
24
|
var LOCAL_SKILLS_PATH = ".claude/skills";
|
|
25
|
+
var ARCHIVED_SKILLS_DIR_NAME = "_archived";
|
|
25
26
|
var DIRS = {
|
|
26
27
|
agents: "src/agents",
|
|
27
28
|
skills: "src/skills",
|
|
@@ -39,6 +40,14 @@ var DEFAULT_PRESELECTED_SKILLS = [
|
|
|
39
40
|
"meta-methodology-success-criteria",
|
|
40
41
|
"meta-methodology-write-verification"
|
|
41
42
|
];
|
|
43
|
+
var KEY_SUBCATEGORIES = /* @__PURE__ */ new Set([
|
|
44
|
+
"framework",
|
|
45
|
+
"api",
|
|
46
|
+
"database",
|
|
47
|
+
"meta-framework",
|
|
48
|
+
"base-framework",
|
|
49
|
+
"platform"
|
|
50
|
+
]);
|
|
42
51
|
|
|
43
52
|
export {
|
|
44
53
|
PROJECT_ROOT,
|
|
@@ -51,9 +60,11 @@ export {
|
|
|
51
60
|
SKILLS_MATRIX_PATH,
|
|
52
61
|
SKILLS_DIR_PATH,
|
|
53
62
|
LOCAL_SKILLS_PATH,
|
|
63
|
+
ARCHIVED_SKILLS_DIR_NAME,
|
|
54
64
|
DIRS,
|
|
55
65
|
DEFAULT_VERSION,
|
|
56
66
|
DEFAULT_DISPLAY_VERSION,
|
|
57
|
-
DEFAULT_PRESELECTED_SKILLS
|
|
67
|
+
DEFAULT_PRESELECTED_SKILLS,
|
|
68
|
+
KEY_SUBCATEGORIES
|
|
58
69
|
};
|
|
59
|
-
//# sourceMappingURL=chunk-
|
|
70
|
+
//# sourceMappingURL=chunk-O6ZTD7ZI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/consts.ts"],"sourcesContent":["import path from \"path\";\nimport os from \"os\";\nimport { fileURLToPath } from \"url\";\nimport type { SkillId, Subcategory } from \"./types/index.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n// After tsup build, dist/ is flat, so we go up one level from dist/ to get CLI root\n// In development (src/cli/consts.ts), we go up two levels\nconst isInDist = __dirname.includes(\"/dist\");\nexport const CLI_ROOT = isInDist ? path.resolve(__dirname, \"..\") : path.resolve(__dirname, \"../..\");\nexport const PROJECT_ROOT = CLI_ROOT;\n\nexport const OUTPUT_DIR = \".claude\";\nexport const GITHUB_REPO = \"claude-collective/skills\";\nexport const DEFAULT_MATRIX_PATH = \"src/config/skills-matrix.yaml\";\n\nexport const PLUGIN_NAME = \"claude-collective\";\n\nexport const CLAUDE_DIR = \".claude\";\nexport const CLAUDE_SRC_DIR = \".claude-src\";\nexport const PLUGINS_SUBDIR = \"plugins\";\nexport const PLUGIN_MANIFEST_DIR = \".claude-plugin\";\nexport const PLUGIN_MANIFEST_FILE = \"plugin.json\";\n\nexport const CACHE_DIR = path.join(os.homedir(), \".cache\", \"claude-collective\");\n\nexport const SKILLS_MATRIX_PATH = \"config/skills-matrix.yaml\";\nexport const SKILLS_DIR_PATH = \"src/skills\";\nexport const LOCAL_SKILLS_PATH = \".claude/skills\";\nexport const ARCHIVED_SKILLS_DIR_NAME = \"_archived\";\n\nexport const DIRS = {\n agents: \"src/agents\",\n skills: \"src/skills\",\n stacks: \"src/stacks\",\n templates: \"src/agents/_templates\",\n commands: \"src/commands\",\n} as const;\n\nexport const DEFAULT_VERSION = \"1.0.0\";\n\n// \"0.0.0\" indicates no version was explicitly set\nexport const DEFAULT_DISPLAY_VERSION = \"0.0.0\";\n\n// Foundational methodology skills preselected by default in the wizard\nexport const DEFAULT_PRESELECTED_SKILLS: readonly SkillId[] = [\n \"meta-methodology-anti-over-engineering\",\n \"meta-methodology-context-management\",\n \"meta-methodology-improvement-protocol\",\n \"meta-methodology-investigation-requirements\",\n \"meta-methodology-success-criteria\",\n \"meta-methodology-write-verification\",\n];\n\n// Primary technology subcategories that should be preloaded (define the stack's core)\nexport const KEY_SUBCATEGORIES: ReadonlySet<Subcategory> = new Set<Subcategory>([\n \"framework\",\n \"api\",\n \"database\",\n \"meta-framework\",\n \"base-framework\",\n \"platform\",\n]);\n"],"mappings":";;;;;;AAAA;AAAA,OAAO,UAAU;AACjB,OAAO,QAAQ;AACf,SAAS,qBAAqB;AAG9B,IAAM,aAAa,cAAc,YAAY,GAAG;AAChD,IAAM,YAAY,KAAK,QAAQ,UAAU;AAIzC,IAAM,WAAW,UAAU,SAAS,OAAO;AACpC,IAAM,WAAW,WAAW,KAAK,QAAQ,WAAW,IAAI,IAAI,KAAK,QAAQ,WAAW,OAAO;AAC3F,IAAM,eAAe;AAQrB,IAAM,aAAa;AACnB,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AACvB,IAAM,sBAAsB;AAC5B,IAAM,uBAAuB;AAE7B,IAAM,YAAY,KAAK,KAAK,GAAG,QAAQ,GAAG,UAAU,mBAAmB;AAEvE,IAAM,qBAAqB;AAC3B,IAAM,kBAAkB;AACxB,IAAM,oBAAoB;AAC1B,IAAM,2BAA2B;AAEjC,IAAM,OAAO;AAAA,EAClB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,UAAU;AACZ;AAEO,IAAM,kBAAkB;AAGxB,IAAM,0BAA0B;AAGhC,IAAM,6BAAiD;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,oBAA8C,oBAAI,IAAiB;AAAA,EAC9E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-AWKZ5BDL.js";
|
|
5
|
+
|
|
6
|
+
// src/cli/lib/exit-codes.ts
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
var EXIT_CODES = {
|
|
9
|
+
SUCCESS: 0,
|
|
10
|
+
ERROR: 1,
|
|
11
|
+
INVALID_ARGS: 2,
|
|
12
|
+
NETWORK_ERROR: 3,
|
|
13
|
+
CANCELLED: 4
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
// src/cli/base-command.ts
|
|
17
|
+
init_esm_shims();
|
|
18
|
+
import { Command, Flags } from "@oclif/core";
|
|
19
|
+
var BaseCommand = class extends Command {
|
|
20
|
+
// Base flags available to all commands (merge with spread syntax)
|
|
21
|
+
static baseFlags = {
|
|
22
|
+
"dry-run": Flags.boolean({
|
|
23
|
+
description: "Preview operations without executing",
|
|
24
|
+
default: false
|
|
25
|
+
}),
|
|
26
|
+
source: Flags.string({
|
|
27
|
+
char: "s",
|
|
28
|
+
description: "Skills source path or URL",
|
|
29
|
+
required: false
|
|
30
|
+
})
|
|
31
|
+
};
|
|
32
|
+
// Set by init hook, stored in config object
|
|
33
|
+
get sourceConfig() {
|
|
34
|
+
return this.config.sourceConfig;
|
|
35
|
+
}
|
|
36
|
+
handleError(error) {
|
|
37
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
38
|
+
this.error(message, { exit: EXIT_CODES.ERROR });
|
|
39
|
+
}
|
|
40
|
+
logSuccess(message) {
|
|
41
|
+
this.log(`\u2713 ${message}`);
|
|
42
|
+
}
|
|
43
|
+
// Uses oclif's warn method which outputs to stderr
|
|
44
|
+
logWarning(message) {
|
|
45
|
+
this.warn(message);
|
|
46
|
+
}
|
|
47
|
+
logInfo(message) {
|
|
48
|
+
this.log(message);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export {
|
|
53
|
+
EXIT_CODES,
|
|
54
|
+
BaseCommand
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=chunk-OBXAY23Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/lib/exit-codes.ts","../src/cli/base-command.ts"],"sourcesContent":["export const EXIT_CODES = {\n SUCCESS: 0,\n ERROR: 1,\n INVALID_ARGS: 2,\n NETWORK_ERROR: 3,\n CANCELLED: 4,\n} as const;\n\nexport type ExitCode = (typeof EXIT_CODES)[keyof typeof EXIT_CODES];\n","import { Command, Flags } from \"@oclif/core\";\nimport { EXIT_CODES } from \"./lib/exit-codes.js\";\nimport type { ResolvedConfig } from \"./lib/configuration/index.js\";\n\nexport abstract class BaseCommand extends Command {\n // Base flags available to all commands (merge with spread syntax)\n static baseFlags = {\n \"dry-run\": Flags.boolean({\n description: \"Preview operations without executing\",\n default: false,\n }),\n source: Flags.string({\n char: \"s\",\n description: \"Skills source path or URL\",\n required: false,\n }),\n };\n\n // Set by init hook, stored in config object\n public get sourceConfig(): ResolvedConfig | undefined {\n return (this.config as any).sourceConfig;\n }\n\n protected handleError(error: unknown): never {\n const message = error instanceof Error ? error.message : String(error);\n this.error(message, { exit: EXIT_CODES.ERROR });\n }\n\n protected logSuccess(message: string): void {\n this.log(`✓ ${message}`);\n }\n\n // Uses oclif's warn method which outputs to stderr\n protected logWarning(message: string): void {\n this.warn(message);\n }\n\n protected logInfo(message: string): void {\n this.log(message);\n }\n}\n"],"mappings":";;;;;;AAAA;AAAO,IAAM,aAAa;AAAA,EACxB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,cAAc;AAAA,EACd,eAAe;AAAA,EACf,WAAW;AACb;;;ACNA;AAAA,SAAS,SAAS,aAAa;AAIxB,IAAe,cAAf,cAAmC,QAAQ;AAAA;AAAA,EAEhD,OAAO,YAAY;AAAA,IACjB,WAAW,MAAM,QAAQ;AAAA,MACvB,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC;AAAA,IACD,QAAQ,MAAM,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,IAAW,eAA2C;AACpD,WAAQ,KAAK,OAAe;AAAA,EAC9B;AAAA,EAEU,YAAY,OAAuB;AAC3C,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,SAAK,MAAM,SAAS,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,EAChD;AAAA,EAEU,WAAW,SAAuB;AAC1C,SAAK,IAAI,UAAK,OAAO,EAAE;AAAA,EACzB;AAAA;AAAA,EAGU,WAAW,SAAuB;AAC1C,SAAK,KAAK,OAAO;AAAA,EACnB;AAAA,EAEU,QAAQ,SAAuB;AACvC,SAAK,IAAI,OAAO;AAAA,EAClB;AACF;","names":[]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
__export,
|
|
5
5
|
__toESM,
|
|
6
6
|
init_esm_shims
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-AWKZ5BDL.js";
|
|
8
8
|
|
|
9
9
|
// node_modules/expect-type/dist/branding.js
|
|
10
10
|
var require_branding = __commonJS({
|
|
@@ -12077,7 +12077,7 @@ function offsetToLineNumber(source, offset) {
|
|
|
12077
12077
|
return line + 1;
|
|
12078
12078
|
}
|
|
12079
12079
|
async function saveInlineSnapshots(environment, snapshots) {
|
|
12080
|
-
const MagicString = (await import("./magic-string.es-
|
|
12080
|
+
const MagicString = (await import("./magic-string.es-PAH2SOTR.js")).default;
|
|
12081
12081
|
const files = new Set(snapshots.map((i) => i.file));
|
|
12082
12082
|
await Promise.all(Array.from(files).map(async (file) => {
|
|
12083
12083
|
const snaps = snapshots.filter((i) => i.file === file);
|
|
@@ -15596,4 +15596,4 @@ export {
|
|
|
15596
15596
|
* @license MIT License
|
|
15597
15597
|
*)
|
|
15598
15598
|
*/
|
|
15599
|
-
//# sourceMappingURL=chunk-
|
|
15599
|
+
//# sourceMappingURL=chunk-QR2EBWL2.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
init_esm_shims
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AWKZ5BDL.js";
|
|
5
5
|
|
|
6
6
|
// node_modules/ink-testing-library/build/index.js
|
|
7
7
|
init_esm_shims();
|
|
@@ -93,4 +93,4 @@ var render = (tree) => {
|
|
|
93
93
|
export {
|
|
94
94
|
render
|
|
95
95
|
};
|
|
96
|
-
//# sourceMappingURL=chunk-
|
|
96
|
+
//# sourceMappingURL=chunk-REJGRCVQ.js.map
|