@agents-inc/cli 0.48.0 → 0.60.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 +181 -5
- package/README.md +1 -2
- package/dist/{chunk-2DNDAXF6.js → chunk-52M2XF3W.js} +57 -27
- package/dist/chunk-52M2XF3W.js.map +1 -0
- package/dist/{chunk-WSGKCBY5.js → chunk-52XO4ULK.js} +6 -9
- package/dist/chunk-52XO4ULK.js.map +1 -0
- package/dist/{chunk-AMNCCZSG.js → chunk-6G3KZSO4.js} +82 -63
- package/dist/chunk-6G3KZSO4.js.map +1 -0
- package/dist/{chunk-LESHL6SM.js → chunk-6OWHQ7HM.js} +21 -13
- package/dist/chunk-6OWHQ7HM.js.map +1 -0
- package/dist/{chunk-X3SZIBVW.js → chunk-7FMEMXJ4.js} +71 -71
- package/dist/chunk-7FMEMXJ4.js.map +1 -0
- package/dist/{chunk-I52THVF6.js → chunk-AJJJE7F7.js} +2 -2
- package/dist/{chunk-ZML3OCYA.js → chunk-AX3SZZWA.js} +2 -2
- package/dist/{chunk-NJVJ7VO5.js → chunk-BFD5NZQ4.js} +5 -4
- package/dist/chunk-BFD5NZQ4.js.map +1 -0
- package/dist/{chunk-GSPPOXMG.js → chunk-BKJHAJQW.js} +2 -2
- package/dist/{chunk-GSPPOXMG.js.map → chunk-BKJHAJQW.js.map} +1 -1
- package/dist/{chunk-FPTUCWBY.js → chunk-BMJZBLP7.js} +46 -30
- package/dist/chunk-BMJZBLP7.js.map +1 -0
- package/dist/chunk-BNQ5O6LE.js +74 -0
- package/dist/chunk-BNQ5O6LE.js.map +1 -0
- package/dist/{chunk-W62XVWXB.js → chunk-C577AJE7.js} +3 -3
- package/dist/chunk-CIG7IKX3.js +118 -0
- package/dist/chunk-CIG7IKX3.js.map +1 -0
- package/dist/chunk-EC3UJRKZ.js +1534 -0
- package/dist/chunk-EC3UJRKZ.js.map +1 -0
- package/dist/{chunk-IS7GP6XC.js → chunk-EMIUPGPL.js} +57 -52
- package/dist/chunk-EMIUPGPL.js.map +1 -0
- package/dist/chunk-G6WHCALR.js +593 -0
- package/dist/chunk-G6WHCALR.js.map +1 -0
- package/dist/{chunk-OTTITQ7C.js → chunk-H7WJK7NJ.js} +48 -95
- package/dist/chunk-H7WJK7NJ.js.map +1 -0
- package/dist/chunk-HGTC76BX.js +16 -0
- package/dist/chunk-HGTC76BX.js.map +1 -0
- package/dist/{chunk-G5OZQ376.js → chunk-K6OLORQL.js} +6 -6
- package/dist/{chunk-OHDEJEYB.js → chunk-KIWFEBKH.js} +41 -11
- package/dist/chunk-KIWFEBKH.js.map +1 -0
- package/dist/{chunk-YMUWTPOM.js → chunk-LWXRUR6B.js} +92 -100
- package/dist/chunk-LWXRUR6B.js.map +1 -0
- package/dist/{chunk-U2AEK4ZL.js → chunk-MGNYPVOJ.js} +2 -2
- package/dist/chunk-MKCHLXMY.js +40 -0
- package/dist/chunk-MKCHLXMY.js.map +1 -0
- package/dist/{chunk-37QYD33C.js → chunk-MMFQNJPE.js} +2 -2
- package/dist/{chunk-DG2U2WY3.js → chunk-MR6OBL3B.js} +3 -11
- package/dist/{chunk-DG2U2WY3.js.map → chunk-MR6OBL3B.js.map} +1 -1
- package/dist/{chunk-7IAKVZL5.js → chunk-O6BA7Q2B.js} +28 -59
- package/dist/chunk-O6BA7Q2B.js.map +1 -0
- package/dist/chunk-OCEFD7V6.js +201 -0
- package/dist/chunk-OCEFD7V6.js.map +1 -0
- package/dist/{chunk-YZTWZVGX.js → chunk-PUT7X3GA.js} +1 -1
- package/dist/chunk-PUT7X3GA.js.map +1 -0
- package/dist/chunk-RO6LX3UV.js +342 -0
- package/dist/chunk-RO6LX3UV.js.map +1 -0
- package/dist/{chunk-34BP5BC4.js → chunk-SDKCQXWE.js} +2 -2
- package/dist/{chunk-VBAAATPU.js → chunk-SEJF7CGJ.js} +41 -28
- package/dist/chunk-SEJF7CGJ.js.map +1 -0
- package/dist/{chunk-5O6GKXAN.js → chunk-SZRK3VOR.js} +24 -14
- package/dist/chunk-SZRK3VOR.js.map +1 -0
- package/dist/{chunk-5MN5S3DV.js → chunk-TC3NHO34.js} +22 -17
- package/dist/chunk-TC3NHO34.js.map +1 -0
- package/dist/{chunk-SPVSWDFM.js → chunk-TGLRDEEL.js} +8 -14
- package/dist/chunk-TGLRDEEL.js.map +1 -0
- package/dist/{chunk-P2SFRDWI.js → chunk-TZXYBG3R.js} +3634 -2875
- package/dist/chunk-TZXYBG3R.js.map +1 -0
- package/dist/{chunk-2BVZOYJP.js → chunk-VR3CDXDT.js} +2 -6
- package/dist/chunk-VR3CDXDT.js.map +1 -0
- package/dist/{chunk-KPJJOLAQ.js → chunk-WF6RM73R.js} +272 -40
- package/dist/chunk-WF6RM73R.js.map +1 -0
- package/dist/chunk-WYVDNGJB.js +31 -0
- package/dist/chunk-WYVDNGJB.js.map +1 -0
- package/dist/{chunk-F7KTUFGU.js → chunk-X5EG4EFP.js} +3 -2
- package/dist/chunk-X5EG4EFP.js.map +1 -0
- package/dist/{chunk-FHKNG3UA.js → chunk-XUDTFI4M.js} +2 -2
- package/dist/{chunk-AXV7NFFJ.js → chunk-YHCYKUA3.js} +14 -10
- package/dist/chunk-YHCYKUA3.js.map +1 -0
- package/dist/commands/build/marketplace.js +4 -4
- package/dist/commands/build/plugins.js +9 -7
- package/dist/commands/build/plugins.js.map +1 -1
- package/dist/commands/build/stack.js +13 -10
- package/dist/commands/build/stack.js.map +1 -1
- package/dist/commands/compile.js +45 -72
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/config/index.js +7 -5
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/config/path.js +8 -6
- package/dist/commands/config/path.js.map +1 -1
- package/dist/commands/config/show.js +7 -5
- package/dist/commands/diff.js +9 -7
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +20 -16
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +196 -94
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +20 -41
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/import/skill.js +10 -18
- package/dist/commands/import/skill.js.map +1 -1
- package/dist/commands/info.js +21 -20
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.js +41 -435
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +8 -6
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/new/agent.js +28 -15
- package/dist/commands/new/agent.js.map +1 -1
- package/dist/commands/new/marketplace.js +67 -31
- package/dist/commands/new/marketplace.js.map +1 -1
- package/dist/commands/new/skill.js +17 -208
- package/dist/commands/new/skill.js.map +1 -1
- package/dist/commands/outdated.js +16 -10
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/search.js +45 -35
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/uninstall.js +93 -123
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +11 -9
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.js +42 -267
- package/dist/commands/validate.js.map +1 -1
- package/dist/components/common/confirm.test.js +4 -4
- package/dist/components/skill-search/skill-search.js +3 -3
- package/dist/components/wizard/category-grid.js +3 -2
- package/dist/components/wizard/category-grid.test.js +113 -59
- package/dist/components/wizard/category-grid.test.js.map +1 -1
- package/dist/components/wizard/checkbox-grid.js +5 -3
- package/dist/components/wizard/checkbox-grid.test.js +6 -5
- package/dist/components/wizard/checkbox-grid.test.js.map +1 -1
- package/dist/components/wizard/domain-selection.js +12 -9
- package/dist/components/wizard/help-modal.js +2 -2
- package/dist/components/wizard/menu-item.js +1 -1
- package/dist/components/wizard/search-modal.js +2 -2
- package/dist/components/wizard/search-modal.test.js +3 -3
- package/dist/components/wizard/search-modal.test.js.map +1 -1
- package/dist/components/wizard/section-progress.js +2 -2
- package/dist/components/wizard/section-progress.test.js +4 -4
- package/dist/components/wizard/section-progress.test.js.map +1 -1
- package/dist/components/wizard/selection-card.js +2 -2
- package/dist/components/wizard/source-grid.js +4 -3
- package/dist/components/wizard/source-grid.test.js +5 -4
- package/dist/components/wizard/source-grid.test.js.map +1 -1
- package/dist/components/wizard/stack-selection.js +9 -8
- package/dist/components/wizard/step-agents.js +11 -8
- package/dist/components/wizard/step-agents.test.js +20 -18
- package/dist/components/wizard/step-agents.test.js.map +1 -1
- package/dist/components/wizard/step-build.js +11 -8
- package/dist/components/wizard/step-build.test.js +18 -36
- package/dist/components/wizard/step-build.test.js.map +1 -1
- package/dist/components/wizard/step-confirm.js +4 -4
- package/dist/components/wizard/step-confirm.test.js +83 -23
- package/dist/components/wizard/step-confirm.test.js.map +1 -1
- package/dist/components/wizard/step-refine.js +2 -2
- package/dist/components/wizard/step-refine.test.js +3 -3
- package/dist/components/wizard/step-settings.js +9 -5
- package/dist/components/wizard/step-settings.test.js +13 -9
- package/dist/components/wizard/step-settings.test.js.map +1 -1
- package/dist/components/wizard/step-sources.js +13 -10
- package/dist/components/wizard/step-sources.test.js +19 -16
- package/dist/components/wizard/step-sources.test.js.map +1 -1
- package/dist/components/wizard/step-stack.js +16 -12
- package/dist/components/wizard/step-stack.test.js +18 -14
- package/dist/components/wizard/step-stack.test.js.map +1 -1
- package/dist/components/wizard/view-title.js +2 -2
- package/dist/components/wizard/wizard-layout.js +10 -8
- package/dist/components/wizard/wizard-tabs.js +2 -2
- package/dist/components/wizard/wizard-tabs.test.js +2 -2
- package/dist/components/wizard/wizard.js +29 -25
- package/dist/config-exports.js +20 -0
- package/dist/config-exports.js.map +1 -0
- package/dist/hooks/init.js +56 -3
- package/dist/hooks/init.js.map +1 -1
- package/dist/loader-2O32KKAQ.js +19 -0
- package/dist/source-loader-A6B3NDI4.js +16 -0
- package/dist/source-loader-A6B3NDI4.js.map +1 -0
- package/dist/source-manager-Q7IQSGIX.js +18 -0
- package/dist/source-manager-Q7IQSGIX.js.map +1 -0
- package/dist/src/agents/meta/agent-summoner/critical-reminders.md +1 -1
- package/dist/src/agents/meta/agent-summoner/critical-requirements.md +1 -1
- package/dist/src/agents/meta/agent-summoner/examples.md +2 -2
- package/dist/src/agents/meta/agent-summoner/output-format.md +1 -1
- package/dist/src/agents/meta/agent-summoner/workflow.md +8 -10
- package/{src/agents/meta/documentor/agent.yaml → dist/src/agents/meta/documentor/metadata.yaml} +1 -0
- package/dist/src/agents/meta/skill-summoner/critical-reminders.md +2 -2
- package/dist/src/agents/meta/skill-summoner/critical-requirements.md +1 -1
- package/dist/src/agents/meta/skill-summoner/intro.md +1 -1
- package/dist/src/agents/meta/skill-summoner/output-format.md +3 -3
- package/dist/src/agents/meta/skill-summoner/workflow.md +8 -8
- package/dist/stores/wizard-store.js +6 -5
- package/dist/stores/wizard-store.test.js +367 -75
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +5 -1
- package/src/agents/meta/agent-summoner/critical-reminders.md +1 -1
- package/src/agents/meta/agent-summoner/critical-requirements.md +1 -1
- package/src/agents/meta/agent-summoner/examples.md +2 -2
- package/src/agents/meta/agent-summoner/output-format.md +1 -1
- package/src/agents/meta/agent-summoner/workflow.md +8 -10
- package/{dist/src/agents/meta/documentor/agent.yaml → src/agents/meta/documentor/metadata.yaml} +1 -0
- package/src/agents/meta/skill-summoner/critical-reminders.md +2 -2
- package/src/agents/meta/skill-summoner/critical-requirements.md +1 -1
- package/src/agents/meta/skill-summoner/intro.md +1 -1
- package/src/agents/meta/skill-summoner/output-format.md +3 -3
- package/src/agents/meta/skill-summoner/workflow.md +8 -8
- package/src/schemas/agent.schema.json +1 -1
- package/src/schemas/metadata.schema.json +6 -0
- package/src/schemas/project-config.schema.json +0 -3
- package/src/schemas/stacks.schema.json +1 -1
- package/config/skill-categories.yaml +0 -344
- package/config/skill-rules.yaml +0 -740
- package/config/stacks.yaml +0 -1865
- package/dist/chunk-2BVZOYJP.js.map +0 -1
- package/dist/chunk-2DNDAXF6.js.map +0 -1
- package/dist/chunk-5MN5S3DV.js.map +0 -1
- package/dist/chunk-5O6GKXAN.js.map +0 -1
- package/dist/chunk-7IAKVZL5.js.map +0 -1
- package/dist/chunk-AMNCCZSG.js.map +0 -1
- package/dist/chunk-AXV7NFFJ.js.map +0 -1
- package/dist/chunk-AXZNJ5PN.js +0 -99
- package/dist/chunk-AXZNJ5PN.js.map +0 -1
- package/dist/chunk-C7DLY64D.js +0 -115
- package/dist/chunk-C7DLY64D.js.map +0 -1
- package/dist/chunk-F7KTUFGU.js.map +0 -1
- package/dist/chunk-FPTUCWBY.js.map +0 -1
- package/dist/chunk-IS7GP6XC.js.map +0 -1
- package/dist/chunk-KPJJOLAQ.js.map +0 -1
- package/dist/chunk-LESHL6SM.js.map +0 -1
- package/dist/chunk-NJVJ7VO5.js.map +0 -1
- package/dist/chunk-OHDEJEYB.js.map +0 -1
- package/dist/chunk-OTTITQ7C.js.map +0 -1
- package/dist/chunk-P2SFRDWI.js.map +0 -1
- package/dist/chunk-PY2XZUBF.js +0 -29
- package/dist/chunk-PY2XZUBF.js.map +0 -1
- package/dist/chunk-SPVSWDFM.js.map +0 -1
- package/dist/chunk-VBAAATPU.js.map +0 -1
- package/dist/chunk-WSGKCBY5.js.map +0 -1
- package/dist/chunk-X3SZIBVW.js.map +0 -1
- package/dist/chunk-YDASDMTH.js +0 -183
- package/dist/chunk-YDASDMTH.js.map +0 -1
- package/dist/chunk-YMUWTPOM.js.map +0 -1
- package/dist/chunk-YZTWZVGX.js.map +0 -1
- package/dist/commands/config/get.js +0 -61
- package/dist/commands/config/get.js.map +0 -1
- package/dist/commands/config/set-project.js +0 -61
- package/dist/commands/config/set-project.js.map +0 -1
- package/dist/commands/config/unset-project.js +0 -57
- package/dist/commands/config/unset-project.js.map +0 -1
- package/dist/config/skill-categories.yaml +0 -344
- package/dist/config/skill-rules.yaml +0 -740
- package/dist/config/stacks.yaml +0 -1865
- package/dist/source-manager-Y7R6WPOW.js +0 -16
- package/dist/src/agents/migration/cli-migrator/agent.yaml +0 -12
- package/dist/src/agents/migration/cli-migrator/anti-patterns.md +0 -158
- package/dist/src/agents/migration/cli-migrator/conversion-mappings.md +0 -63
- package/dist/src/agents/migration/cli-migrator/critical-reminders.md +0 -17
- package/dist/src/agents/migration/cli-migrator/critical-requirements.md +0 -13
- package/dist/src/agents/migration/cli-migrator/intro.md +0 -15
- package/dist/src/agents/migration/cli-migrator/output-format.md +0 -164
- package/dist/src/agents/migration/cli-migrator/workflow.md +0 -230
- package/src/agents/migration/cli-migrator/agent.yaml +0 -12
- package/src/agents/migration/cli-migrator/anti-patterns.md +0 -158
- package/src/agents/migration/cli-migrator/conversion-mappings.md +0 -63
- package/src/agents/migration/cli-migrator/critical-reminders.md +0 -17
- package/src/agents/migration/cli-migrator/critical-requirements.md +0 -13
- package/src/agents/migration/cli-migrator/intro.md +0 -15
- package/src/agents/migration/cli-migrator/output-format.md +0 -164
- package/src/agents/migration/cli-migrator/workflow.md +0 -230
- /package/dist/{chunk-I52THVF6.js.map → chunk-AJJJE7F7.js.map} +0 -0
- /package/dist/{chunk-ZML3OCYA.js.map → chunk-AX3SZZWA.js.map} +0 -0
- /package/dist/{chunk-W62XVWXB.js.map → chunk-C577AJE7.js.map} +0 -0
- /package/dist/{chunk-G5OZQ376.js.map → chunk-K6OLORQL.js.map} +0 -0
- /package/dist/{chunk-U2AEK4ZL.js.map → chunk-MGNYPVOJ.js.map} +0 -0
- /package/dist/{chunk-37QYD33C.js.map → chunk-MMFQNJPE.js.map} +0 -0
- /package/dist/{chunk-34BP5BC4.js.map → chunk-SDKCQXWE.js.map} +0 -0
- /package/dist/{chunk-FHKNG3UA.js.map → chunk-XUDTFI4M.js.map} +0 -0
- /package/dist/{source-manager-Y7R6WPOW.js.map → loader-2O32KKAQ.js.map} +0 -0
- /package/dist/src/agents/developer/api-developer/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/developer/cli-developer/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/developer/web-architecture/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/developer/web-developer/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/meta/agent-summoner/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/meta/skill-summoner/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/pattern/pattern-scout/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/pattern/web-pattern-critique/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/planning/web-pm/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/researcher/api-researcher/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/researcher/web-researcher/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/reviewer/api-reviewer/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/reviewer/cli-reviewer/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/reviewer/web-reviewer/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/tester/cli-tester/{agent.yaml → metadata.yaml} +0 -0
- /package/dist/src/agents/tester/web-tester/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/developer/api-developer/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/developer/cli-developer/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/developer/web-architecture/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/developer/web-developer/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/meta/agent-summoner/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/meta/skill-summoner/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/pattern/pattern-scout/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/pattern/web-pattern-critique/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/planning/web-pm/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/researcher/api-researcher/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/researcher/web-researcher/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/reviewer/api-reviewer/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/reviewer/cli-reviewer/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/reviewer/web-reviewer/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/tester/cli-tester/{agent.yaml → metadata.yaml} +0 -0
- /package/src/agents/tester/web-tester/{agent.yaml → metadata.yaml} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
getErrorMessage
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-LWXRUR6B.js";
|
|
5
5
|
import {
|
|
6
6
|
init_esm_shims
|
|
7
7
|
} from "./chunk-DHET7RCE.js";
|
|
@@ -21,10 +21,6 @@ init_esm_shims();
|
|
|
21
21
|
import { Command, Flags } from "@oclif/core";
|
|
22
22
|
var BaseCommand = class extends Command {
|
|
23
23
|
static baseFlags = {
|
|
24
|
-
"dry-run": Flags.boolean({
|
|
25
|
-
description: "Preview operations without executing",
|
|
26
|
-
default: false
|
|
27
|
-
}),
|
|
28
24
|
source: Flags.string({
|
|
29
25
|
char: "s",
|
|
30
26
|
description: "Skills source path or URL",
|
|
@@ -53,4 +49,4 @@ export {
|
|
|
53
49
|
EXIT_CODES,
|
|
54
50
|
BaseCommand
|
|
55
51
|
};
|
|
56
|
-
//# sourceMappingURL=chunk-
|
|
52
|
+
//# sourceMappingURL=chunk-VR3CDXDT.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","import { Command, Flags } from \"@oclif/core\";\n\nimport { getErrorMessage } from \"./utils/errors.js\";\nimport { EXIT_CODES } from \"./lib/exit-codes.js\";\nimport type { ResolvedConfig } from \"./lib/configuration/index.js\";\n\n/** Narrow interface for the sourceConfig we attach to oclif's Config in the init hook. */\nexport interface ConfigWithSource {\n sourceConfig?: ResolvedConfig;\n}\n\nexport abstract class BaseCommand extends Command {\n static baseFlags = {\n source: Flags.string({\n char: \"s\",\n description: \"Skills source path or URL\",\n required: false,\n }),\n };\n\n public get sourceConfig(): ResolvedConfig | undefined {\n // Boundary cast: oclif Config doesn't declare sourceConfig; we attach it in the init hook\n return (this.config as unknown as ConfigWithSource).sourceConfig;\n }\n\n protected handleError(error: unknown): never {\n const message = getErrorMessage(error);\n this.error(message, { exit: EXIT_CODES.ERROR });\n }\n\n protected logSuccess(message: string): void {\n this.log(`✓ ${message}`);\n }\n\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;AAWxB,IAAe,cAAf,cAAmC,QAAQ;AAAA,EAChD,OAAO,YAAY;AAAA,IACjB,QAAQ,MAAM,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EAEA,IAAW,eAA2C;AAEpD,WAAQ,KAAK,OAAuC;AAAA,EACtD;AAAA,EAEU,YAAY,OAAuB;AAC3C,UAAM,UAAU,gBAAgB,KAAK;AACrC,SAAK,MAAM,SAAS,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,EAChD;AAAA,EAEU,WAAW,SAAuB;AAC1C,SAAK,IAAI,UAAK,OAAO,EAAE;AAAA,EACzB;AAAA,EAEU,WAAW,SAAuB;AAC1C,SAAK,KAAK,OAAO;AAAA,EACnB;AAAA,EAEU,QAAQ,SAAuB;AACvC,SAAK,IAAI,OAAO;AAAA,EAClB;AACF;","names":[]}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import {
|
|
3
|
+
deriveInstallMode,
|
|
4
|
+
getAvailableSkills,
|
|
6
5
|
resolveAlias
|
|
7
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TZXYBG3R.js";
|
|
8
7
|
import {
|
|
9
8
|
typedEntries,
|
|
10
9
|
typedKeys
|
|
11
10
|
} from "./chunk-T4EXUIBY.js";
|
|
12
11
|
import {
|
|
13
12
|
warn
|
|
14
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-LWXRUR6B.js";
|
|
15
14
|
import {
|
|
15
|
+
BUILT_IN_DOMAIN_ORDER,
|
|
16
16
|
DEFAULT_PRESELECTED_SKILLS,
|
|
17
|
-
DEFAULT_PUBLIC_SOURCE_NAME
|
|
18
|
-
|
|
17
|
+
DEFAULT_PUBLIC_SOURCE_NAME,
|
|
18
|
+
SOURCE_DISPLAY_NAMES
|
|
19
|
+
} from "./chunk-6OWHQ7HM.js";
|
|
19
20
|
import {
|
|
20
21
|
init_esm_shims
|
|
21
22
|
} from "./chunk-DHET7RCE.js";
|
|
@@ -24,13 +25,118 @@ import {
|
|
|
24
25
|
init_esm_shims();
|
|
25
26
|
import { unique } from "remeda";
|
|
26
27
|
import { create } from "zustand";
|
|
28
|
+
|
|
29
|
+
// src/cli/lib/wizard/build-step-logic.ts
|
|
30
|
+
init_esm_shims();
|
|
31
|
+
import { sortBy } from "remeda";
|
|
32
|
+
var FRAMEWORK_CATEGORY_ID = "web-framework";
|
|
33
|
+
var WEB_DOMAIN_ID = "web";
|
|
34
|
+
function validateBuildStep(categories, selections) {
|
|
35
|
+
for (const category of categories) {
|
|
36
|
+
if (category.required) {
|
|
37
|
+
const categorySelections = selections[category.id] || [];
|
|
38
|
+
if (categorySelections.length === 0) {
|
|
39
|
+
return {
|
|
40
|
+
valid: false,
|
|
41
|
+
message: `Select at least one skill from the ${category.displayName} category. Use arrow keys to navigate, then SPACE to select.`
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return { valid: true };
|
|
47
|
+
}
|
|
48
|
+
function computeOptionState(skill) {
|
|
49
|
+
if (skill.discouraged) {
|
|
50
|
+
return "discouraged";
|
|
51
|
+
}
|
|
52
|
+
if (skill.recommended) {
|
|
53
|
+
return "recommended";
|
|
54
|
+
}
|
|
55
|
+
return "normal";
|
|
56
|
+
}
|
|
57
|
+
function getSkillDisplayLabel(skill) {
|
|
58
|
+
return skill.displayName;
|
|
59
|
+
}
|
|
60
|
+
function getStateReason(skill) {
|
|
61
|
+
if (skill.discouraged && skill.discouragedReason) {
|
|
62
|
+
return skill.discouragedReason;
|
|
63
|
+
}
|
|
64
|
+
if (skill.recommended && skill.recommendedReason) {
|
|
65
|
+
return skill.recommendedReason;
|
|
66
|
+
}
|
|
67
|
+
return void 0;
|
|
68
|
+
}
|
|
69
|
+
function isFrameworkSelected(selections) {
|
|
70
|
+
const frameworkSelections = selections[FRAMEWORK_CATEGORY_ID] ?? [];
|
|
71
|
+
return frameworkSelections.length > 0;
|
|
72
|
+
}
|
|
73
|
+
function getSelectedFrameworks(selections, matrix) {
|
|
74
|
+
const frameworkSelections = selections[FRAMEWORK_CATEGORY_ID] ?? [];
|
|
75
|
+
return frameworkSelections.map((alias) => resolveAlias(alias, matrix));
|
|
76
|
+
}
|
|
77
|
+
function isCompatibleWithSelectedFrameworks(skillId, selectedFrameworkIds, matrix) {
|
|
78
|
+
const skill = matrix.skills[skillId];
|
|
79
|
+
if (!skill) return false;
|
|
80
|
+
if (skill.compatibleWith.length === 0) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
return selectedFrameworkIds.some((frameworkId) => skill.compatibleWith.includes(frameworkId));
|
|
84
|
+
}
|
|
85
|
+
function buildCategoriesForDomain(domain, allSelections, matrix, selections, installedSkillIds, skillConfigs) {
|
|
86
|
+
const frameworkSource = selections;
|
|
87
|
+
const frameworkSelected = isFrameworkSelected(frameworkSource);
|
|
88
|
+
const selectedFrameworkIds = frameworkSelected ? getSelectedFrameworks(frameworkSource, matrix) : [];
|
|
89
|
+
const categories = sortBy(
|
|
90
|
+
Object.values(matrix.categories).filter(
|
|
91
|
+
(cat) => cat.domain === domain
|
|
92
|
+
),
|
|
93
|
+
(cat) => cat.order ?? 0
|
|
94
|
+
);
|
|
95
|
+
const categoryRows = categories.map((cat) => {
|
|
96
|
+
const skillOptions = getAvailableSkills(cat.id, allSelections, matrix);
|
|
97
|
+
const useFrameworkFilter = domain === WEB_DOMAIN_ID && cat.id !== FRAMEWORK_CATEGORY_ID && frameworkSelected;
|
|
98
|
+
const filteredSkillOptions = useFrameworkFilter ? skillOptions.filter(
|
|
99
|
+
(skill) => isCompatibleWithSelectedFrameworks(skill.id, selectedFrameworkIds, matrix)
|
|
100
|
+
) : skillOptions;
|
|
101
|
+
const options = filteredSkillOptions.map((skill) => ({
|
|
102
|
+
id: skill.id,
|
|
103
|
+
label: getSkillDisplayLabel(skill),
|
|
104
|
+
state: computeOptionState(skill),
|
|
105
|
+
stateReason: getStateReason(skill),
|
|
106
|
+
selected: skill.selected,
|
|
107
|
+
local: matrix.skills[skill.id]?.local,
|
|
108
|
+
installed: installedSkillIds?.includes(skill.id) || false,
|
|
109
|
+
scope: skillConfigs?.find((sc) => sc.id === skill.id)?.scope
|
|
110
|
+
}));
|
|
111
|
+
return {
|
|
112
|
+
id: cat.id,
|
|
113
|
+
displayName: cat.displayName,
|
|
114
|
+
required: cat.required ?? false,
|
|
115
|
+
exclusive: cat.exclusive ?? true,
|
|
116
|
+
options
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
return categoryRows.filter((row) => row.options.length > 0);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// src/cli/stores/wizard-store.ts
|
|
27
123
|
var BUILT_IN_DOMAINS = ["web", "api", "cli", "mobile", "shared"];
|
|
124
|
+
function createDefaultSkillConfig(id) {
|
|
125
|
+
return { id, scope: "project", source: DEFAULT_PUBLIC_SOURCE_NAME };
|
|
126
|
+
}
|
|
28
127
|
function getAllDomainsFromCategories(categories) {
|
|
29
128
|
const allDomains = unique(
|
|
30
129
|
Object.values(categories).map((cat) => cat?.domain).filter((d) => d != null)
|
|
31
130
|
);
|
|
32
131
|
return [...BUILT_IN_DOMAINS, ...allDomains.filter((d) => !BUILT_IN_DOMAINS.includes(d))];
|
|
33
132
|
}
|
|
133
|
+
function sortDomainsCanonically(domains) {
|
|
134
|
+
const builtInSet = new Set(BUILT_IN_DOMAIN_ORDER);
|
|
135
|
+
return [
|
|
136
|
+
...domains.filter((d) => !builtInSet.has(d)).sort(),
|
|
137
|
+
...BUILT_IN_DOMAIN_ORDER.filter((d) => domains.includes(d))
|
|
138
|
+
];
|
|
139
|
+
}
|
|
34
140
|
var DOMAIN_AGENTS = {
|
|
35
141
|
web: [
|
|
36
142
|
"web-developer",
|
|
@@ -41,7 +147,7 @@ var DOMAIN_AGENTS = {
|
|
|
41
147
|
"web-architecture"
|
|
42
148
|
],
|
|
43
149
|
api: ["api-developer", "api-reviewer", "api-researcher"],
|
|
44
|
-
cli: ["cli-developer", "cli-tester", "cli-reviewer"
|
|
150
|
+
cli: ["cli-developer", "cli-tester", "cli-reviewer"]
|
|
45
151
|
};
|
|
46
152
|
var SOURCE_SORT_TIER_LOCAL = 1;
|
|
47
153
|
var SOURCE_SORT_TIER_SCOPED = 2;
|
|
@@ -53,9 +159,6 @@ function getSourceSortTier(source) {
|
|
|
53
159
|
if (source.type === "public") return SOURCE_SORT_TIER_PUBLIC;
|
|
54
160
|
return SOURCE_SORT_TIER_THIRD_PARTY;
|
|
55
161
|
}
|
|
56
|
-
var SOURCE_DISPLAY_NAMES = {
|
|
57
|
-
local: "Local"
|
|
58
|
-
};
|
|
59
162
|
function formatSourceLabel(source) {
|
|
60
163
|
const displayName = SOURCE_DISPLAY_NAMES[source.name] ?? source.name;
|
|
61
164
|
const prefix = source.installed ? "\u2713 " : "";
|
|
@@ -89,11 +192,11 @@ function buildBoundSkillOptions(boundSkills, alias, selectedSource) {
|
|
|
89
192
|
}));
|
|
90
193
|
}
|
|
91
194
|
function getSkillAlias(skillId, matrix) {
|
|
92
|
-
const
|
|
93
|
-
if (
|
|
195
|
+
const slug = matrix.slugMap.idToSlug[skillId];
|
|
196
|
+
if (slug) return slug;
|
|
94
197
|
const segments = skillId.split("-");
|
|
95
198
|
const fallback = segments[segments.length - 1] || skillId;
|
|
96
|
-
warn(`No
|
|
199
|
+
warn(`No slug found for skill '${skillId}', using fallback alias '${fallback}'`);
|
|
97
200
|
return fallback;
|
|
98
201
|
}
|
|
99
202
|
var createInitialState = () => ({
|
|
@@ -104,16 +207,21 @@ var createInitialState = () => ({
|
|
|
104
207
|
selectedDomains: [],
|
|
105
208
|
currentDomainIndex: 0,
|
|
106
209
|
domainSelections: {},
|
|
210
|
+
/** Snapshot of domainSelections from populateFromStack/populateFromSkillIds, used to restore on domain re-toggle */
|
|
211
|
+
_stackDomainSelections: null,
|
|
107
212
|
showLabels: false,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
sourceSelections: {},
|
|
213
|
+
skillConfigs: [],
|
|
214
|
+
focusedSkillId: null,
|
|
111
215
|
customizeSources: false,
|
|
112
216
|
showSettings: false,
|
|
113
217
|
showHelp: false,
|
|
114
218
|
enabledSources: {},
|
|
115
219
|
selectedAgents: [],
|
|
220
|
+
agentConfigs: [],
|
|
221
|
+
focusedAgentId: null,
|
|
116
222
|
boundSkills: [],
|
|
223
|
+
lockedSkillIds: [],
|
|
224
|
+
lockedAgentNames: [],
|
|
117
225
|
history: []
|
|
118
226
|
});
|
|
119
227
|
var useWizardStore = create((set, get) => ({
|
|
@@ -128,6 +236,7 @@ var useWizardStore = create((set, get) => ({
|
|
|
128
236
|
populateFromStack: (stack, categories) => set(() => {
|
|
129
237
|
const domainSelections = {};
|
|
130
238
|
const domains = /* @__PURE__ */ new Set();
|
|
239
|
+
const allSkillIds = /* @__PURE__ */ new Set();
|
|
131
240
|
for (const agentConfig of Object.values(stack.agents)) {
|
|
132
241
|
for (const [subcat, assignments] of typedEntries(
|
|
133
242
|
agentConfig
|
|
@@ -147,17 +256,22 @@ var useWizardStore = create((set, get) => ({
|
|
|
147
256
|
for (const assignment of assignments) {
|
|
148
257
|
if (!domainSelections[domain][subcat].includes(assignment.id)) {
|
|
149
258
|
domainSelections[domain][subcat].push(assignment.id);
|
|
259
|
+
allSkillIds.add(assignment.id);
|
|
150
260
|
}
|
|
151
261
|
}
|
|
152
262
|
}
|
|
153
263
|
}
|
|
264
|
+
const skillConfigs = [...allSkillIds].map(createDefaultSkillConfig);
|
|
154
265
|
return {
|
|
155
266
|
domainSelections,
|
|
156
|
-
|
|
267
|
+
_stackDomainSelections: structuredClone(domainSelections),
|
|
268
|
+
selectedDomains: sortDomainsCanonically(getAllDomainsFromCategories(categories)),
|
|
269
|
+
skillConfigs
|
|
157
270
|
};
|
|
158
271
|
}),
|
|
159
|
-
populateFromSkillIds: (skillIds, skills, categories) => set(() => {
|
|
272
|
+
populateFromSkillIds: (skillIds, skills, categories, savedConfigs) => set(() => {
|
|
160
273
|
const domainSelections = {};
|
|
274
|
+
const resolvedSkillIds = [];
|
|
161
275
|
let skippedCount = 0;
|
|
162
276
|
for (const skillId of skillIds) {
|
|
163
277
|
const resolved = resolveSkillForPopulation(skillId, skills, categories);
|
|
@@ -170,29 +284,72 @@ var useWizardStore = create((set, get) => ({
|
|
|
170
284
|
if (!domainSelections[domain][subcat]) domainSelections[domain][subcat] = [];
|
|
171
285
|
if (!domainSelections[domain][subcat].includes(techId)) {
|
|
172
286
|
domainSelections[domain][subcat].push(techId);
|
|
287
|
+
resolvedSkillIds.push(techId);
|
|
173
288
|
}
|
|
174
289
|
}
|
|
175
290
|
if (skippedCount > 0) {
|
|
176
291
|
warn(`${skippedCount} installed skill(s) could not be resolved and were skipped`);
|
|
177
292
|
}
|
|
178
|
-
const selectedDomains = typedKeys(domainSelections);
|
|
179
|
-
|
|
293
|
+
const selectedDomains = sortDomainsCanonically(typedKeys(domainSelections));
|
|
294
|
+
const skillConfigs = resolvedSkillIds.map((id) => {
|
|
295
|
+
const saved = savedConfigs?.find((sc) => sc.id === id);
|
|
296
|
+
return {
|
|
297
|
+
id,
|
|
298
|
+
scope: saved?.scope ?? "project",
|
|
299
|
+
source: saved?.source ?? DEFAULT_PUBLIC_SOURCE_NAME
|
|
300
|
+
};
|
|
301
|
+
});
|
|
302
|
+
return {
|
|
303
|
+
domainSelections,
|
|
304
|
+
_stackDomainSelections: structuredClone(domainSelections),
|
|
305
|
+
selectedDomains,
|
|
306
|
+
skillConfigs
|
|
307
|
+
};
|
|
180
308
|
}),
|
|
181
309
|
toggleDomain: (domain) => set((state) => {
|
|
182
310
|
const isSelected = state.selectedDomains.includes(domain);
|
|
183
311
|
if (isSelected) {
|
|
184
312
|
const { [domain]: _removed, ...remainingSelections } = state.domainSelections;
|
|
313
|
+
const removedSkillIds = /* @__PURE__ */ new Set();
|
|
314
|
+
if (_removed) {
|
|
315
|
+
for (const skills of Object.values(_removed)) {
|
|
316
|
+
if (skills) {
|
|
317
|
+
for (const id of skills) {
|
|
318
|
+
removedSkillIds.add(id);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
185
323
|
return {
|
|
186
324
|
selectedDomains: state.selectedDomains.filter((d) => d !== domain),
|
|
187
|
-
domainSelections: remainingSelections
|
|
325
|
+
domainSelections: remainingSelections,
|
|
326
|
+
skillConfigs: state.skillConfigs.filter((sc) => !removedSkillIds.has(sc.id))
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
const stackSelections = state._stackDomainSelections?.[domain];
|
|
330
|
+
if (stackSelections) {
|
|
331
|
+
const restoredSkillIds = [];
|
|
332
|
+
for (const skills of Object.values(stackSelections)) {
|
|
333
|
+
if (skills) restoredSkillIds.push(...skills);
|
|
334
|
+
}
|
|
335
|
+
const existingIds = new Set(state.skillConfigs.map((sc) => sc.id));
|
|
336
|
+
const newConfigs = restoredSkillIds.filter((id) => !existingIds.has(id)).map(createDefaultSkillConfig);
|
|
337
|
+
return {
|
|
338
|
+
selectedDomains: sortDomainsCanonically([...state.selectedDomains, domain]),
|
|
339
|
+
domainSelections: {
|
|
340
|
+
...state.domainSelections,
|
|
341
|
+
[domain]: structuredClone(stackSelections)
|
|
342
|
+
},
|
|
343
|
+
skillConfigs: [...state.skillConfigs, ...newConfigs]
|
|
188
344
|
};
|
|
189
345
|
}
|
|
190
346
|
return {
|
|
191
|
-
selectedDomains: [...state.selectedDomains, domain]
|
|
347
|
+
selectedDomains: sortDomainsCanonically([...state.selectedDomains, domain])
|
|
192
348
|
};
|
|
193
349
|
}),
|
|
194
|
-
toggleTechnology: (domain,
|
|
195
|
-
|
|
350
|
+
toggleTechnology: (domain, category, technology, exclusive) => set((state) => {
|
|
351
|
+
if (state.lockedSkillIds.includes(technology)) return state;
|
|
352
|
+
const currentSelections = state.domainSelections[domain]?.[category] || [];
|
|
196
353
|
const isSelected = currentSelections.includes(technology);
|
|
197
354
|
let newSelections;
|
|
198
355
|
if (exclusive) {
|
|
@@ -200,12 +357,21 @@ var useWizardStore = create((set, get) => ({
|
|
|
200
357
|
} else {
|
|
201
358
|
newSelections = isSelected ? currentSelections.filter((t) => t !== technology) : [...currentSelections, technology];
|
|
202
359
|
}
|
|
360
|
+
const removed = currentSelections.filter((id) => !newSelections.includes(id));
|
|
361
|
+
const added = newSelections.filter((id) => !currentSelections.includes(id));
|
|
362
|
+
let updatedConfigs = state.skillConfigs.filter((sc) => !removed.includes(sc.id));
|
|
363
|
+
for (const id of added) {
|
|
364
|
+
if (!updatedConfigs.some((sc) => sc.id === id)) {
|
|
365
|
+
updatedConfigs = [...updatedConfigs, createDefaultSkillConfig(id)];
|
|
366
|
+
}
|
|
367
|
+
}
|
|
203
368
|
return {
|
|
369
|
+
skillConfigs: updatedConfigs,
|
|
204
370
|
domainSelections: {
|
|
205
371
|
...state.domainSelections,
|
|
206
372
|
[domain]: {
|
|
207
373
|
...state.domainSelections[domain],
|
|
208
|
-
[
|
|
374
|
+
[category]: newSelections
|
|
209
375
|
}
|
|
210
376
|
}
|
|
211
377
|
};
|
|
@@ -231,10 +397,22 @@ var useWizardStore = create((set, get) => ({
|
|
|
231
397
|
return false;
|
|
232
398
|
},
|
|
233
399
|
toggleShowLabels: () => set((state) => ({ showLabels: !state.showLabels })),
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
400
|
+
deriveInstallMode: () => {
|
|
401
|
+
const { skillConfigs } = get();
|
|
402
|
+
return deriveInstallMode(skillConfigs);
|
|
403
|
+
},
|
|
404
|
+
toggleSkillScope: (skillId) => set((state) => {
|
|
405
|
+
if (state.lockedSkillIds.includes(skillId)) return state;
|
|
406
|
+
return {
|
|
407
|
+
skillConfigs: state.skillConfigs.map(
|
|
408
|
+
(sc) => sc.id === skillId ? { ...sc, scope: sc.scope === "project" ? "global" : "project" } : sc
|
|
409
|
+
)
|
|
410
|
+
};
|
|
411
|
+
}),
|
|
412
|
+
setSkillSource: (skillId, source) => set((state) => ({
|
|
413
|
+
skillConfigs: state.skillConfigs.map((sc) => sc.id === skillId ? { ...sc, source } : sc)
|
|
237
414
|
})),
|
|
415
|
+
setFocusedSkillId: (id) => set({ focusedSkillId: id }),
|
|
238
416
|
setSourceSelection: (skillId, sourceId) => set((state) => {
|
|
239
417
|
if (!skillId) {
|
|
240
418
|
warn("Ignoring setSourceSelection call with empty skillId");
|
|
@@ -245,7 +423,9 @@ var useWizardStore = create((set, get) => ({
|
|
|
245
423
|
return state;
|
|
246
424
|
}
|
|
247
425
|
return {
|
|
248
|
-
|
|
426
|
+
skillConfigs: state.skillConfigs.map(
|
|
427
|
+
(sc) => sc.id === skillId ? { ...sc, source: sourceId } : sc
|
|
428
|
+
)
|
|
249
429
|
};
|
|
250
430
|
}),
|
|
251
431
|
setCustomizeSources: (customize) => set({ customizeSources: customize }),
|
|
@@ -278,11 +458,28 @@ var useWizardStore = create((set, get) => ({
|
|
|
278
458
|
};
|
|
279
459
|
}),
|
|
280
460
|
toggleAgent: (agent) => set((state) => {
|
|
461
|
+
if (state.lockedAgentNames.includes(agent)) return state;
|
|
281
462
|
const isSelected = state.selectedAgents.includes(agent);
|
|
463
|
+
if (isSelected) {
|
|
464
|
+
return {
|
|
465
|
+
selectedAgents: state.selectedAgents.filter((a) => a !== agent),
|
|
466
|
+
agentConfigs: state.agentConfigs.filter((ac) => ac.name !== agent)
|
|
467
|
+
};
|
|
468
|
+
}
|
|
282
469
|
return {
|
|
283
|
-
selectedAgents:
|
|
470
|
+
selectedAgents: [...state.selectedAgents, agent],
|
|
471
|
+
agentConfigs: [...state.agentConfigs, { name: agent, scope: "project" }]
|
|
284
472
|
};
|
|
285
473
|
}),
|
|
474
|
+
toggleAgentScope: (agentName) => set((state) => {
|
|
475
|
+
if (state.lockedAgentNames.includes(agentName)) return state;
|
|
476
|
+
return {
|
|
477
|
+
agentConfigs: state.agentConfigs.map(
|
|
478
|
+
(ac) => ac.name === agentName ? { ...ac, scope: ac.scope === "project" ? "global" : "project" } : ac
|
|
479
|
+
)
|
|
480
|
+
};
|
|
481
|
+
}),
|
|
482
|
+
setFocusedAgentId: (id) => set({ focusedAgentId: id }),
|
|
286
483
|
preselectAgentsFromDomains: () => set(() => {
|
|
287
484
|
const agents = [];
|
|
288
485
|
for (const domain of get().selectedDomains) {
|
|
@@ -291,7 +488,11 @@ var useWizardStore = create((set, get) => ({
|
|
|
291
488
|
agents.push(...domainAgents);
|
|
292
489
|
}
|
|
293
490
|
}
|
|
294
|
-
|
|
491
|
+
const sorted = agents.sort();
|
|
492
|
+
return {
|
|
493
|
+
selectedAgents: sorted,
|
|
494
|
+
agentConfigs: sorted.map((name) => ({ name, scope: "project" }))
|
|
495
|
+
};
|
|
295
496
|
}),
|
|
296
497
|
reset: () => set(createInitialState()),
|
|
297
498
|
getAllSelectedTechnologies: () => {
|
|
@@ -300,8 +501,8 @@ var useWizardStore = create((set, get) => ({
|
|
|
300
501
|
for (const domain of typedKeys(state.domainSelections)) {
|
|
301
502
|
const domainSel = state.domainSelections[domain];
|
|
302
503
|
if (!domainSel) continue;
|
|
303
|
-
for (const
|
|
304
|
-
const techs = domainSel[
|
|
504
|
+
for (const category of typedKeys(domainSel)) {
|
|
505
|
+
const techs = domainSel[category];
|
|
305
506
|
if (techs) technologies.push(...techs);
|
|
306
507
|
}
|
|
307
508
|
}
|
|
@@ -314,8 +515,8 @@ var useWizardStore = create((set, get) => ({
|
|
|
314
515
|
const domainSel = state.domainSelections[domain];
|
|
315
516
|
if (!domainSel) continue;
|
|
316
517
|
const techs = [];
|
|
317
|
-
for (const
|
|
318
|
-
const subTechs = domainSel[
|
|
518
|
+
for (const category of typedKeys(domainSel)) {
|
|
519
|
+
const subTechs = domainSel[category];
|
|
319
520
|
if (subTechs) techs.push(...subTechs);
|
|
320
521
|
}
|
|
321
522
|
if (techs.length > 0) {
|
|
@@ -365,14 +566,34 @@ var useWizardStore = create((set, get) => ({
|
|
|
365
566
|
const state = get();
|
|
366
567
|
return state.currentDomainIndex > 0;
|
|
367
568
|
},
|
|
569
|
+
setAllSourcesLocal: () => {
|
|
570
|
+
set((state) => ({
|
|
571
|
+
skillConfigs: state.skillConfigs.map((sc) => ({ ...sc, source: "local" }))
|
|
572
|
+
}));
|
|
573
|
+
},
|
|
574
|
+
setAllSourcesPlugin: (matrix) => {
|
|
575
|
+
set((state) => ({
|
|
576
|
+
skillConfigs: state.skillConfigs.map((sc) => {
|
|
577
|
+
const skill = matrix.skills[sc.id];
|
|
578
|
+
if (skill?.availableSources) {
|
|
579
|
+
const marketplaceSource = skill.availableSources.find((s) => s.type !== "local");
|
|
580
|
+
if (marketplaceSource) {
|
|
581
|
+
return { ...sc, source: marketplaceSource.name };
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
return sc;
|
|
585
|
+
})
|
|
586
|
+
}));
|
|
587
|
+
},
|
|
368
588
|
buildSourceRows: (matrix) => {
|
|
369
589
|
const state = get();
|
|
370
590
|
const selectedTechnologies = get().getAllSelectedTechnologies();
|
|
371
|
-
const {
|
|
591
|
+
const { skillConfigs, boundSkills } = state;
|
|
372
592
|
return selectedTechnologies.map((tech) => {
|
|
373
593
|
const skillId = resolveAlias(tech, matrix);
|
|
374
594
|
const skill = matrix.skills[skillId];
|
|
375
|
-
const
|
|
595
|
+
const configEntry = skillConfigs.find((sc) => sc.id === skillId);
|
|
596
|
+
const selectedSource = configEntry?.source || skill?.activeSource?.name || DEFAULT_PUBLIC_SOURCE_NAME;
|
|
376
597
|
const alias = getSkillAlias(skillId, matrix);
|
|
377
598
|
const displayLabel = skill ? getSkillDisplayLabel(skill) : skillId;
|
|
378
599
|
const sortedSources = [...skill?.availableSources || []].sort(
|
|
@@ -389,11 +610,19 @@ var useWizardStore = create((set, get) => ({
|
|
|
389
610
|
})) : [
|
|
390
611
|
{
|
|
391
612
|
id: DEFAULT_PUBLIC_SOURCE_NAME,
|
|
392
|
-
label: DEFAULT_PUBLIC_SOURCE_NAME,
|
|
613
|
+
label: formatSourceLabel({ name: DEFAULT_PUBLIC_SOURCE_NAME, installed: false }),
|
|
393
614
|
selected: selectedSource === DEFAULT_PUBLIC_SOURCE_NAME,
|
|
394
615
|
installed: false
|
|
395
616
|
}
|
|
396
617
|
];
|
|
618
|
+
if (!options.some((o) => o.id === "local")) {
|
|
619
|
+
options.unshift({
|
|
620
|
+
id: "local",
|
|
621
|
+
label: formatSourceLabel({ name: "local", installed: false }),
|
|
622
|
+
selected: selectedSource === "local",
|
|
623
|
+
installed: false
|
|
624
|
+
});
|
|
625
|
+
}
|
|
397
626
|
options.push(...buildBoundSkillOptions(boundSkills, alias, selectedSource));
|
|
398
627
|
return { skillId, displayName: displayLabel, alias, options };
|
|
399
628
|
});
|
|
@@ -401,6 +630,9 @@ var useWizardStore = create((set, get) => ({
|
|
|
401
630
|
}));
|
|
402
631
|
|
|
403
632
|
export {
|
|
633
|
+
validateBuildStep,
|
|
634
|
+
getSkillDisplayLabel,
|
|
635
|
+
buildCategoriesForDomain,
|
|
404
636
|
useWizardStore
|
|
405
637
|
};
|
|
406
|
-
//# sourceMappingURL=chunk-
|
|
638
|
+
//# sourceMappingURL=chunk-WF6RM73R.js.map
|