@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
package/dist/hooks/init.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
resolveSource
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-YDBSSAJ6.js";
|
|
5
|
+
import "../chunk-ZDREFYD2.js";
|
|
6
|
+
import "../chunk-HWD32NP7.js";
|
|
7
|
+
import "../chunk-O6ZTD7ZI.js";
|
|
8
8
|
import {
|
|
9
9
|
init_esm_shims
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-AWKZ5BDL.js";
|
|
11
11
|
|
|
12
12
|
// src/cli/hooks/init.ts
|
|
13
13
|
init_esm_shims();
|
|
@@ -18,9 +18,7 @@ var hook = async function(options) {
|
|
|
18
18
|
if (sourceArgIndex !== -1 && sourceArgIndex + 1 < options.argv.length) {
|
|
19
19
|
sourceFlag = options.argv[sourceArgIndex + 1];
|
|
20
20
|
} else {
|
|
21
|
-
const sourceFlagWithEquals = options.argv.find(
|
|
22
|
-
(arg) => arg.startsWith("--source=")
|
|
23
|
-
);
|
|
21
|
+
const sourceFlagWithEquals = options.argv.find((arg) => arg.startsWith("--source="));
|
|
24
22
|
if (sourceFlagWithEquals) {
|
|
25
23
|
sourceFlag = sourceFlagWithEquals.split("=")[1];
|
|
26
24
|
}
|
package/dist/hooks/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/hooks/init.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/cli/hooks/init.ts"],"sourcesContent":["import { Hook } from \"@oclif/core\";\nimport { resolveSource } from \"../lib/configuration/index.js\";\n\nconst hook: Hook<\"init\"> = async function (options) {\n const projectDir = process.cwd();\n\n // Extract --source flag from argv (not yet parsed by oclif at this point)\n let sourceFlag: string | undefined;\n const sourceArgIndex = options.argv.indexOf(\"--source\");\n if (sourceArgIndex !== -1 && sourceArgIndex + 1 < options.argv.length) {\n sourceFlag = options.argv[sourceArgIndex + 1];\n } else {\n const sourceFlagWithEquals = options.argv.find((arg) => arg.startsWith(\"--source=\"));\n if (sourceFlagWithEquals) {\n sourceFlag = sourceFlagWithEquals.split(\"=\")[1];\n }\n }\n\n // Short form -s\n const sArgIndex = options.argv.indexOf(\"-s\");\n if (sArgIndex !== -1 && sArgIndex + 1 < options.argv.length) {\n sourceFlag = options.argv[sArgIndex + 1];\n }\n\n try {\n const resolvedConfig = await resolveSource(sourceFlag, projectDir);\n // Available to commands via this.sourceConfig getter in BaseCommand\n (options.config as any).sourceConfig = resolvedConfig;\n } catch (error) {\n // Let the command handle config failures - commands can check if sourceConfig is undefined\n }\n};\n\nexport default hook;\n"],"mappings":";;;;;;;;;;;;AAAA;AAGA,IAAM,OAAqB,eAAgB,SAAS;AAClD,QAAM,aAAa,QAAQ,IAAI;AAG/B,MAAI;AACJ,QAAM,iBAAiB,QAAQ,KAAK,QAAQ,UAAU;AACtD,MAAI,mBAAmB,MAAM,iBAAiB,IAAI,QAAQ,KAAK,QAAQ;AACrE,iBAAa,QAAQ,KAAK,iBAAiB,CAAC;AAAA,EAC9C,OAAO;AACL,UAAM,uBAAuB,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,WAAW,WAAW,CAAC;AACnF,QAAI,sBAAsB;AACxB,mBAAa,qBAAqB,MAAM,GAAG,EAAE,CAAC;AAAA,IAChD;AAAA,EACF;AAGA,QAAM,YAAY,QAAQ,KAAK,QAAQ,IAAI;AAC3C,MAAI,cAAc,MAAM,YAAY,IAAI,QAAQ,KAAK,QAAQ;AAC3D,iBAAa,QAAQ,KAAK,YAAY,CAAC;AAAA,EACzC;AAEA,MAAI;AACF,UAAM,iBAAiB,MAAM,cAAc,YAAY,UAAU;AAEjE,IAAC,QAAQ,OAAe,eAAe;AAAA,EACzC,SAAS,OAAO;AAAA,EAEhB;AACF;AAEA,IAAO,eAAQ;","names":[]}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/index.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../src/cli/index.ts"],"sourcesContent":["import { run, flush, Errors } from \"@oclif/core\";\n\nrun(undefined, import.meta.url)\n .then(() => flush())\n .catch((error) => Errors.handle(error));\n"],"mappings":";;;;;;AAAA;AAAA,SAAS,KAAK,OAAO,cAAc;AAEnC,IAAI,QAAW,YAAY,GAAG,EAC3B,KAAK,MAAM,MAAM,CAAC,EAClB,MAAM,CAAC,UAAU,OAAO,OAAO,KAAK,CAAC;","names":[]}
|
|
@@ -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/magic-string/dist/magic-string.es.mjs
|
|
7
7
|
init_esm_shims();
|
|
@@ -1313,4 +1313,4 @@ export {
|
|
|
1313
1313
|
SourceMap,
|
|
1314
1314
|
MagicString as default
|
|
1315
1315
|
};
|
|
1316
|
-
//# sourceMappingURL=magic-string.es-
|
|
1316
|
+
//# sourceMappingURL=magic-string.es-PAH2SOTR.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
addSource,
|
|
4
|
+
getSourceSummary,
|
|
5
|
+
removeSource
|
|
6
|
+
} from "./chunk-YDBSSAJ6.js";
|
|
7
|
+
import "./chunk-ZDREFYD2.js";
|
|
8
|
+
import "./chunk-HWD32NP7.js";
|
|
9
|
+
import "./chunk-O6ZTD7ZI.js";
|
|
10
|
+
import "./chunk-AWKZ5BDL.js";
|
|
11
|
+
export {
|
|
12
|
+
addSource,
|
|
13
|
+
getSourceSummary,
|
|
14
|
+
removeSource
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=source-manager-DSYZEVGZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: api-developer
|
|
3
3
|
title: API Developer Agent
|
|
4
4
|
description: Implements backend features from detailed specs - API routes, database operations, server utilities, authentication, middleware - surgical execution following existing patterns - invoke AFTER web-pm creates spec
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: cli-developer
|
|
3
3
|
title: CLI Developer Agent
|
|
4
4
|
description: Implements CLI features from detailed specs - CLI commands, interactive prompts, option parsing, config hierarchies, exit codes - surgical execution following existing patterns - invoke AFTER pm creates spec
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: web-architecture
|
|
3
3
|
title: Web Architecture Agent
|
|
4
4
|
description: Scaffolds new applications in the monorepo with all foundational patterns (authentication, database, API, analytics, observability, CI/CD)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: web-developer
|
|
3
3
|
title: Web Developer Agent
|
|
4
4
|
description: Implements frontend features from detailed specs - UI components, TypeScript, styling, client state - surgical execution following existing patterns - invoke AFTER web-pm creates spec
|
|
@@ -53,12 +53,7 @@ import { useThemeStore } from "../stores/ThemeStore";
|
|
|
53
53
|
export function DarkModeToggle({ className }: { className?: string }) {
|
|
54
54
|
const { darkMode, toggleDarkMode } = useThemeStore();
|
|
55
55
|
return (
|
|
56
|
-
<Switch
|
|
57
|
-
label="Dark mode"
|
|
58
|
-
checked={darkMode}
|
|
59
|
-
onChange={toggleDarkMode}
|
|
60
|
-
className={className}
|
|
61
|
-
/>
|
|
56
|
+
<Switch label="Dark mode" checked={darkMode} onChange={toggleDarkMode} className={className} />
|
|
62
57
|
);
|
|
63
58
|
}
|
|
64
59
|
```
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: agent-summoner
|
|
3
3
|
title: Agent Summoner Agent
|
|
4
4
|
description: Expert in creating agents and skills - understands agent architecture deeply - invoke when you need to create, improve, or analyze agents/skills
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: documentor
|
|
3
3
|
title: Documentor Agent
|
|
4
4
|
description: Creates AI-focused documentation that helps other agents understand where and how to implement features. Works incrementally, tracking progress over time.
|
|
@@ -562,11 +562,7 @@ export type ButtonProps = React.ComponentProps<"button"> & {
|
|
|
562
562
|
size?: "sm" | "lg";
|
|
563
563
|
};
|
|
564
564
|
|
|
565
|
-
export const Button = ({
|
|
566
|
-
variant = "primary",
|
|
567
|
-
size = "sm",
|
|
568
|
-
...props
|
|
569
|
-
}: ButtonProps) => {
|
|
565
|
+
export const Button = ({ variant = "primary", size = "sm", ...props }: ButtonProps) => {
|
|
570
566
|
// ...
|
|
571
567
|
};
|
|
572
568
|
```
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: skill-summoner
|
|
3
3
|
title: Skill Summoner Agent
|
|
4
4
|
description: Creates technology-specific skills by researching best practices and comparing with codebase standards - use for state management, styling, API frameworks, and other technology skills
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: cli-migrator
|
|
3
3
|
title: CLI Migration Specialist
|
|
4
4
|
description: Converts Commander.js + @clack/prompts CLI code to oclif + Ink - TEMPORARY agent for migration effort
|
|
@@ -92,9 +92,7 @@ export class Init extends Command {
|
|
|
92
92
|
|
|
93
93
|
```tsx
|
|
94
94
|
// BAD
|
|
95
|
-
const Component = () =>
|
|
96
|
-
<Box>Hello World {/* Error: text outside Text component */}</Box>
|
|
97
|
-
);
|
|
95
|
+
const Component = () => <Box>Hello World {/* Error: text outside Text component */}</Box>;
|
|
98
96
|
|
|
99
97
|
// GOOD
|
|
100
98
|
const Component = () => (
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: pattern-scout
|
|
3
3
|
title: Pattern Scout Agent
|
|
4
4
|
description: Extracts ALL patterns from monorepo (15+ categories - code, architecture, testing, design, build, CI/CD, env, security) - creates comprehensive standards - invoke for new codebases
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: web-pattern-critique
|
|
3
3
|
title: Web Pattern Critique Agent
|
|
4
4
|
description: Critiques extracted patterns against industry standards (Airbnb, Stripe, Meta, Vercel) - frontend architecture focus - invoke AFTER pattern-scout extracts patterns
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: web-pm
|
|
3
3
|
title: Web PM and Architect Agent
|
|
4
4
|
description: Creates detailed implementation specs by researching codebase patterns - architectural planning and requirements gathering - invoke BEFORE developer for any new feature
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: api-researcher
|
|
3
3
|
title: API Researcher Agent
|
|
4
4
|
description: Read-only backend research specialist - discovers API route patterns, understands database schemas and ORM patterns, catalogs middleware and authentication flows, finds similar service implementations - produces structured findings for api-developer - invoke for backend research before implementation
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: web-researcher
|
|
3
3
|
title: Web Researcher Agent
|
|
4
4
|
description: Read-only frontend research specialist - discovers UI component patterns, catalogs design systems, understands styling methodology and tokens, finds similar component implementations - produces structured findings for web-developer - invoke for frontend research before implementation
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: api-reviewer
|
|
3
3
|
title: API Reviewer Agent
|
|
4
4
|
description: Reviews non-component code - API routes, server utils, configs (*.config.*), build tooling, CI/CD (*.yml), security, env management - defers UI components to web-reviewer
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: cli-reviewer
|
|
3
3
|
title: CLI Reviewer Agent
|
|
4
4
|
description: Reviews CLI code ONLY - CLI commands, interactive prompts, exit codes, SIGINT handling, error messages, user feedback patterns - defers non-CLI code to api-reviewer
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: web-reviewer
|
|
3
3
|
title: Web Reviewer Agent
|
|
4
4
|
description: Reviews UI component code ONLY (*.tsx/*.jsx with JSX) - components, hooks, props, state, performance, a11y patterns - NOT for API routes, configs, or server code (use api-reviewer)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: cli-tester
|
|
3
3
|
title: CLI Tester Agent
|
|
4
4
|
description: Tests CLI applications - wizard flows, commands, keyboard interactions, file system outputs - invoke BEFORE or AFTER cli-developer implements features
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema
|
|
1
|
+
# yaml-language-server: $schema=../../../schemas/agent.schema.json
|
|
2
2
|
id: web-tester
|
|
3
3
|
title: Web Tester Agent
|
|
4
4
|
description: Writes tests BEFORE implementation - all test types (*.test.*, *.spec.*, E2E) - Tester red-green-refactor - invoke BEFORE developer implements feature
|
|
@@ -154,9 +154,7 @@ describe("[Feature/Component Name]", () => {
|
|
|
154
154
|
const mockApi = {
|
|
155
155
|
success: { data: { id: 1, name: "Test" } },
|
|
156
156
|
error: { error: { message: "Failed" } },
|
|
157
|
-
timeout: new Promise((_, reject) =>
|
|
158
|
-
setTimeout(() => reject(new Error("Timeout")), 100),
|
|
159
|
-
),
|
|
157
|
+
timeout: new Promise((_, reject) => setTimeout(() => reject(new Error("Timeout")), 100)),
|
|
160
158
|
};
|
|
161
159
|
```
|
|
162
160
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
useWizardStore
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-TMED5DQ2.js";
|
|
5
|
+
import "../chunk-HWD32NP7.js";
|
|
6
|
+
import "../chunk-O6ZTD7ZI.js";
|
|
7
|
+
import "../chunk-AWKZ5BDL.js";
|
|
7
8
|
export {
|
|
8
9
|
useWizardStore
|
|
9
10
|
};
|
|
@@ -4,16 +4,17 @@ import {
|
|
|
4
4
|
describe,
|
|
5
5
|
globalExpect,
|
|
6
6
|
it
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-QR2EBWL2.js";
|
|
8
8
|
import {
|
|
9
9
|
useWizardStore
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-TMED5DQ2.js";
|
|
11
|
+
import "../chunk-HWD32NP7.js";
|
|
11
12
|
import {
|
|
12
13
|
DEFAULT_PRESELECTED_SKILLS
|
|
13
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-O6ZTD7ZI.js";
|
|
14
15
|
import {
|
|
15
16
|
init_esm_shims
|
|
16
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-AWKZ5BDL.js";
|
|
17
18
|
|
|
18
19
|
// src/cli/stores/wizard-store.test.ts
|
|
19
20
|
init_esm_shims();
|
|
@@ -150,57 +151,44 @@ describe("WizardStore", () => {
|
|
|
150
151
|
describe("technology selection", () => {
|
|
151
152
|
it("should toggle technology in exclusive mode", () => {
|
|
152
153
|
const store = useWizardStore.getState();
|
|
153
|
-
store.toggleTechnology("web", "framework", "react", true);
|
|
154
|
+
store.toggleTechnology("web", "framework", "web-framework-react", true);
|
|
154
155
|
const { domainSelections } = useWizardStore.getState();
|
|
155
|
-
globalExpect(domainSelections.web.framework).toEqual(["react"]);
|
|
156
|
+
globalExpect(domainSelections.web.framework).toEqual(["web-framework-react"]);
|
|
156
157
|
});
|
|
157
158
|
it("should replace technology in exclusive mode", () => {
|
|
158
159
|
const store = useWizardStore.getState();
|
|
159
|
-
store.toggleTechnology("web", "framework", "react", true);
|
|
160
|
-
store.toggleTechnology("web", "framework", "vue", true);
|
|
160
|
+
store.toggleTechnology("web", "framework", "web-framework-react", true);
|
|
161
|
+
store.toggleTechnology("web", "framework", "web-framework-vue", true);
|
|
161
162
|
const { domainSelections } = useWizardStore.getState();
|
|
162
|
-
globalExpect(domainSelections.web.framework).toEqual(["vue"]);
|
|
163
|
+
globalExpect(domainSelections.web.framework).toEqual(["web-framework-vue"]);
|
|
163
164
|
});
|
|
164
165
|
it("should toggle off technology in exclusive mode", () => {
|
|
165
166
|
const store = useWizardStore.getState();
|
|
166
|
-
store.toggleTechnology("web", "framework", "react", true);
|
|
167
|
-
store.toggleTechnology("web", "framework", "react", true);
|
|
167
|
+
store.toggleTechnology("web", "framework", "web-framework-react", true);
|
|
168
|
+
store.toggleTechnology("web", "framework", "web-framework-react", true);
|
|
168
169
|
const { domainSelections } = useWizardStore.getState();
|
|
169
170
|
globalExpect(domainSelections.web.framework).toEqual([]);
|
|
170
171
|
});
|
|
171
172
|
it("should allow multiple selections in non-exclusive mode", () => {
|
|
172
173
|
const store = useWizardStore.getState();
|
|
173
|
-
store.toggleTechnology("web", "testing", "vitest", false);
|
|
174
|
-
store.toggleTechnology("web", "testing", "
|
|
174
|
+
store.toggleTechnology("web", "testing", "web-testing-vitest", false);
|
|
175
|
+
store.toggleTechnology("web", "testing", "web-testing-playwright-e2e", false);
|
|
175
176
|
const { domainSelections } = useWizardStore.getState();
|
|
176
|
-
globalExpect(domainSelections.web.testing).toEqual([
|
|
177
|
+
globalExpect(domainSelections.web.testing).toEqual([
|
|
178
|
+
"web-testing-vitest",
|
|
179
|
+
"web-testing-playwright-e2e"
|
|
180
|
+
]);
|
|
177
181
|
});
|
|
178
182
|
it("should toggle off technology in non-exclusive mode", () => {
|
|
179
183
|
const store = useWizardStore.getState();
|
|
180
|
-
store.toggleTechnology("web", "testing", "vitest", false);
|
|
181
|
-
store.toggleTechnology("web", "testing", "
|
|
182
|
-
store.toggleTechnology("web", "testing", "vitest", false);
|
|
184
|
+
store.toggleTechnology("web", "testing", "web-testing-vitest", false);
|
|
185
|
+
store.toggleTechnology("web", "testing", "web-testing-playwright-e2e", false);
|
|
186
|
+
store.toggleTechnology("web", "testing", "web-testing-vitest", false);
|
|
183
187
|
const { domainSelections } = useWizardStore.getState();
|
|
184
|
-
globalExpect(domainSelections.web.testing).toEqual(["
|
|
188
|
+
globalExpect(domainSelections.web.testing).toEqual(["web-testing-playwright-e2e"]);
|
|
185
189
|
});
|
|
186
190
|
});
|
|
187
191
|
describe("domain navigation", () => {
|
|
188
|
-
it("should set current domain index", () => {
|
|
189
|
-
const store = useWizardStore.getState();
|
|
190
|
-
store.toggleDomain("web");
|
|
191
|
-
store.toggleDomain("api");
|
|
192
|
-
store.setCurrentDomainIndex(1);
|
|
193
|
-
const { currentDomainIndex } = useWizardStore.getState();
|
|
194
|
-
globalExpect(currentDomainIndex).toBe(1);
|
|
195
|
-
});
|
|
196
|
-
it("should reset focus when changing domain index", () => {
|
|
197
|
-
const store = useWizardStore.getState();
|
|
198
|
-
store.setFocus(2, 3);
|
|
199
|
-
store.setCurrentDomainIndex(1);
|
|
200
|
-
const { focusedRow, focusedCol } = useWizardStore.getState();
|
|
201
|
-
globalExpect(focusedRow).toBe(0);
|
|
202
|
-
globalExpect(focusedCol).toBe(0);
|
|
203
|
-
});
|
|
204
192
|
it("should move to next domain", () => {
|
|
205
193
|
const store = useWizardStore.getState();
|
|
206
194
|
store.toggleDomain("web");
|
|
@@ -220,7 +208,7 @@ describe("WizardStore", () => {
|
|
|
220
208
|
const store = useWizardStore.getState();
|
|
221
209
|
store.toggleDomain("web");
|
|
222
210
|
store.toggleDomain("api");
|
|
223
|
-
store.
|
|
211
|
+
store.nextDomain();
|
|
224
212
|
const result = store.prevDomain();
|
|
225
213
|
const { currentDomainIndex } = useWizardStore.getState();
|
|
226
214
|
globalExpect(result).toBe(true);
|
|
@@ -236,7 +224,7 @@ describe("WizardStore", () => {
|
|
|
236
224
|
const store = useWizardStore.getState();
|
|
237
225
|
store.toggleDomain("web");
|
|
238
226
|
store.toggleDomain("api");
|
|
239
|
-
store.
|
|
227
|
+
store.nextDomain();
|
|
240
228
|
const domain = store.getCurrentDomain();
|
|
241
229
|
globalExpect(domain).toBe("api");
|
|
242
230
|
});
|
|
@@ -280,47 +268,23 @@ describe("WizardStore", () => {
|
|
|
280
268
|
globalExpect(showDescriptions).toBe(true);
|
|
281
269
|
});
|
|
282
270
|
});
|
|
283
|
-
describe("refine step", () => {
|
|
284
|
-
it("should set refine action", () => {
|
|
285
|
-
const store = useWizardStore.getState();
|
|
286
|
-
store.setRefineAction("all-recommended");
|
|
287
|
-
const { refineAction } = useWizardStore.getState();
|
|
288
|
-
globalExpect(refineAction).toBe("all-recommended");
|
|
289
|
-
});
|
|
290
|
-
it("should set skill source", () => {
|
|
291
|
-
const store = useWizardStore.getState();
|
|
292
|
-
store.setSkillSource("react", "react (@vince)");
|
|
293
|
-
const { skillSources } = useWizardStore.getState();
|
|
294
|
-
globalExpect(skillSources.react).toBe("react (@vince)");
|
|
295
|
-
});
|
|
296
|
-
it("should set current refine index", () => {
|
|
297
|
-
const store = useWizardStore.getState();
|
|
298
|
-
store.setCurrentRefineIndex(3);
|
|
299
|
-
const { currentRefineIndex } = useWizardStore.getState();
|
|
300
|
-
globalExpect(currentRefineIndex).toBe(3);
|
|
301
|
-
});
|
|
302
|
-
});
|
|
303
271
|
describe("computed getters", () => {
|
|
304
272
|
it("should get all selected technologies", () => {
|
|
305
273
|
const store = useWizardStore.getState();
|
|
306
|
-
store.toggleTechnology("web", "framework", "react", true);
|
|
307
|
-
store.toggleTechnology("web", "styling", "scss", true);
|
|
308
|
-
store.toggleTechnology("api", "api
|
|
274
|
+
store.toggleTechnology("web", "framework", "web-framework-react", true);
|
|
275
|
+
store.toggleTechnology("web", "styling", "web-styling-scss-modules", true);
|
|
276
|
+
store.toggleTechnology("api", "api", "api-framework-hono", true);
|
|
309
277
|
const technologies = store.getAllSelectedTechnologies();
|
|
310
|
-
globalExpect(technologies).toContain("react");
|
|
311
|
-
globalExpect(technologies).toContain("scss");
|
|
312
|
-
globalExpect(technologies).toContain("hono");
|
|
278
|
+
globalExpect(technologies).toContain("web-framework-react");
|
|
279
|
+
globalExpect(technologies).toContain("web-styling-scss-modules");
|
|
280
|
+
globalExpect(technologies).toContain("api-framework-hono");
|
|
313
281
|
});
|
|
314
282
|
it("should get selected skills including preselected", () => {
|
|
315
283
|
const store = useWizardStore.getState();
|
|
316
|
-
store.setSkillSource("react", "react (@vince)");
|
|
317
|
-
store.setSkillSource("scss", "scss-modules (@vince)");
|
|
318
284
|
const skills = store.getSelectedSkills();
|
|
319
285
|
for (const skill of DEFAULT_PRESELECTED_SKILLS) {
|
|
320
286
|
globalExpect(skills).toContain(skill);
|
|
321
287
|
}
|
|
322
|
-
globalExpect(skills).toContain("react (@vince)");
|
|
323
|
-
globalExpect(skills).toContain("scss-modules (@vince)");
|
|
324
288
|
});
|
|
325
289
|
});
|
|
326
290
|
describe("reset", () => {
|
|
@@ -342,29 +306,73 @@ describe("WizardStore", () => {
|
|
|
342
306
|
globalExpect(state.history).toEqual([]);
|
|
343
307
|
});
|
|
344
308
|
});
|
|
309
|
+
describe("populateFromStack", () => {
|
|
310
|
+
it("should set selectedDomains to all domains regardless of stack contents", () => {
|
|
311
|
+
const store = useWizardStore.getState();
|
|
312
|
+
const stack = {
|
|
313
|
+
agents: {
|
|
314
|
+
web: { framework: "react" }
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
const categories = {
|
|
318
|
+
framework: { domain: "web" }
|
|
319
|
+
};
|
|
320
|
+
store.populateFromStack(stack, categories);
|
|
321
|
+
const { selectedDomains, domainSelections } = useWizardStore.getState();
|
|
322
|
+
globalExpect(selectedDomains).toEqual(["web", "web-extras", "api", "cli", "mobile", "shared"]);
|
|
323
|
+
globalExpect(domainSelections.web).toBeDefined();
|
|
324
|
+
globalExpect(domainSelections.web.framework).toEqual(["react"]);
|
|
325
|
+
globalExpect(domainSelections.api).toBeUndefined();
|
|
326
|
+
});
|
|
327
|
+
it("should populate domainSelections from stack agents", () => {
|
|
328
|
+
const store = useWizardStore.getState();
|
|
329
|
+
const stack = {
|
|
330
|
+
agents: {
|
|
331
|
+
web: { framework: "react", "client-state": "zustand" },
|
|
332
|
+
api: { api: "hono" }
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
const categories = {
|
|
336
|
+
framework: { domain: "web" },
|
|
337
|
+
"client-state": { domain: "web" },
|
|
338
|
+
api: { domain: "api" }
|
|
339
|
+
};
|
|
340
|
+
store.populateFromStack(stack, categories);
|
|
341
|
+
const { domainSelections } = useWizardStore.getState();
|
|
342
|
+
globalExpect(domainSelections.web.framework).toEqual(["react"]);
|
|
343
|
+
globalExpect(domainSelections.web["client-state"]).toEqual(["zustand"]);
|
|
344
|
+
globalExpect(domainSelections.api.api).toEqual(["hono"]);
|
|
345
|
+
});
|
|
346
|
+
it("should skip entries without a domain", () => {
|
|
347
|
+
const store = useWizardStore.getState();
|
|
348
|
+
const stack = {
|
|
349
|
+
agents: {
|
|
350
|
+
misc: { methodology: "vitest" }
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
const categories = {
|
|
354
|
+
methodology: {}
|
|
355
|
+
};
|
|
356
|
+
store.populateFromStack(stack, categories);
|
|
357
|
+
const { domainSelections } = useWizardStore.getState();
|
|
358
|
+
globalExpect(Object.keys(domainSelections)).toHaveLength(0);
|
|
359
|
+
});
|
|
360
|
+
});
|
|
345
361
|
describe("complex flows", () => {
|
|
346
362
|
it("should handle complete stack selection flow", () => {
|
|
347
363
|
const store = useWizardStore.getState();
|
|
348
364
|
store.setApproach("stack");
|
|
349
365
|
store.setStep("stack");
|
|
350
366
|
store.selectStack("nextjs-fullstack");
|
|
351
|
-
store.
|
|
352
|
-
store.
|
|
353
|
-
store.setStep("refine");
|
|
354
|
-
store.setRefineAction("all-recommended");
|
|
367
|
+
store.setStackAction("customize");
|
|
368
|
+
store.setStep("build");
|
|
355
369
|
store.setStep("confirm");
|
|
356
370
|
const state = useWizardStore.getState();
|
|
357
371
|
globalExpect(state.step).toBe("confirm");
|
|
358
372
|
globalExpect(state.approach).toBe("stack");
|
|
359
373
|
globalExpect(state.selectedStackId).toBe("nextjs-fullstack");
|
|
360
|
-
globalExpect(state.stackAction).toBe("
|
|
361
|
-
globalExpect(state.
|
|
362
|
-
globalExpect(state.history).toEqual([
|
|
363
|
-
"approach",
|
|
364
|
-
"stack",
|
|
365
|
-
"stack-options",
|
|
366
|
-
"refine"
|
|
367
|
-
]);
|
|
374
|
+
globalExpect(state.stackAction).toBe("customize");
|
|
375
|
+
globalExpect(state.history).toEqual(["approach", "stack", "build"]);
|
|
368
376
|
});
|
|
369
377
|
it("should handle complete scratch flow", () => {
|
|
370
378
|
const store = useWizardStore.getState();
|
|
@@ -373,19 +381,17 @@ describe("WizardStore", () => {
|
|
|
373
381
|
store.toggleDomain("web");
|
|
374
382
|
store.toggleDomain("api");
|
|
375
383
|
store.setStep("build");
|
|
376
|
-
store.toggleTechnology("web", "framework", "react", true);
|
|
377
|
-
store.toggleTechnology("web", "styling", "scss", true);
|
|
378
|
-
store.toggleTechnology("api", "api
|
|
379
|
-
store.setStep("refine");
|
|
380
|
-
store.setRefineAction("all-recommended");
|
|
384
|
+
store.toggleTechnology("web", "framework", "web-framework-react", true);
|
|
385
|
+
store.toggleTechnology("web", "styling", "web-styling-scss-modules", true);
|
|
386
|
+
store.toggleTechnology("api", "api", "api-framework-hono", true);
|
|
381
387
|
store.setStep("confirm");
|
|
382
388
|
const state = useWizardStore.getState();
|
|
383
389
|
globalExpect(state.step).toBe("confirm");
|
|
384
390
|
globalExpect(state.approach).toBe("scratch");
|
|
385
391
|
globalExpect(state.selectedDomains).toEqual(["web", "api"]);
|
|
386
|
-
globalExpect(state.domainSelections.web.framework).toEqual(["react"]);
|
|
387
|
-
globalExpect(state.domainSelections.web.styling).toEqual(["scss"]);
|
|
388
|
-
globalExpect(state.domainSelections.api
|
|
392
|
+
globalExpect(state.domainSelections.web.framework).toEqual(["web-framework-react"]);
|
|
393
|
+
globalExpect(state.domainSelections.web.styling).toEqual(["web-styling-scss-modules"]);
|
|
394
|
+
globalExpect(state.domainSelections.api.api).toEqual(["api-framework-hono"]);
|
|
389
395
|
});
|
|
390
396
|
it("should preserve selections when going back", () => {
|
|
391
397
|
const store = useWizardStore.getState();
|
|
@@ -393,12 +399,12 @@ describe("WizardStore", () => {
|
|
|
393
399
|
store.setStep("stack");
|
|
394
400
|
store.toggleDomain("web");
|
|
395
401
|
store.setStep("build");
|
|
396
|
-
store.toggleTechnology("web", "framework", "react", true);
|
|
402
|
+
store.toggleTechnology("web", "framework", "web-framework-react", true);
|
|
397
403
|
store.goBack();
|
|
398
404
|
store.goBack();
|
|
399
405
|
const state = useWizardStore.getState();
|
|
400
406
|
globalExpect(state.selectedDomains).toContain("web");
|
|
401
|
-
globalExpect(state.domainSelections.web.framework).toEqual(["react"]);
|
|
407
|
+
globalExpect(state.domainSelections.web.framework).toEqual(["web-framework-react"]);
|
|
402
408
|
});
|
|
403
409
|
});
|
|
404
410
|
});
|