@agents-inc/cli 0.34.1 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/config/skills-matrix.yaml +26 -26
- package/config/stacks.yaml +8 -8
- package/dist/{chunk-HTTPKSL6.js → chunk-2XX4TMCI.js} +2 -2
- package/dist/{chunk-CEWNZQMH.js → chunk-3E2V5YL3.js} +8 -2
- package/dist/chunk-3E2V5YL3.js.map +1 -0
- package/dist/{chunk-QC37C32G.js → chunk-3NQJOJZL.js} +3 -3
- package/dist/chunk-54ZZCWN4.js +51 -0
- package/dist/chunk-54ZZCWN4.js.map +1 -0
- package/dist/{chunk-VEZ2GZEK.js → chunk-ATLRUR3B.js} +2 -2
- package/dist/{chunk-ZI5EBHCC.js → chunk-CYFU3ARY.js} +38 -17
- package/dist/chunk-CYFU3ARY.js.map +1 -0
- package/dist/{chunk-X7SPCWY6.js → chunk-DUQFF45G.js} +14 -9
- package/dist/chunk-DUQFF45G.js.map +1 -0
- package/dist/{chunk-CB7GYRUP.js → chunk-EISBUEBL.js} +101 -52
- package/dist/chunk-EISBUEBL.js.map +1 -0
- package/dist/chunk-EXFVAEPY.js +80 -0
- package/dist/chunk-EXFVAEPY.js.map +1 -0
- package/dist/{chunk-ANGAZ444.js → chunk-FWQK3HWB.js} +4 -4
- package/dist/chunk-FWQK3HWB.js.map +1 -0
- package/dist/{chunk-DC5AK3LW.js → chunk-GG4BSB6S.js} +5 -11
- package/dist/chunk-GG4BSB6S.js.map +1 -0
- package/dist/{chunk-GGHH3KR2.js → chunk-HKDE4LJW.js} +2 -2
- package/dist/{chunk-R3AD6XBJ.js → chunk-HRMQ2RGY.js} +81 -26
- package/dist/chunk-HRMQ2RGY.js.map +1 -0
- package/dist/{chunk-YPJKOM42.js → chunk-HRW7BIDE.js} +2 -2
- package/dist/{chunk-LFHZBF6N.js → chunk-IVIK776Y.js} +4 -3
- package/dist/chunk-IVIK776Y.js.map +1 -0
- package/dist/{chunk-ALS7SH7X.js → chunk-IWNPFIGY.js} +38 -48
- package/dist/chunk-IWNPFIGY.js.map +1 -0
- package/dist/{chunk-GIFEDW27.js → chunk-IZRVFC2Z.js} +7 -7
- package/dist/chunk-IZRVFC2Z.js.map +1 -0
- package/dist/chunk-K77I4XGL.js +47 -0
- package/dist/chunk-K77I4XGL.js.map +1 -0
- package/dist/{chunk-JMVWYAHT.js → chunk-KUV24B5M.js} +4 -4
- package/dist/chunk-KUV24B5M.js.map +1 -0
- package/dist/{chunk-KENWMEKN.js → chunk-M6PGIZNS.js} +6 -6
- package/dist/{chunk-B47QYIUL.js → chunk-NFV4SKH5.js} +4 -4
- package/dist/chunk-NI2RSNWB.js +156 -0
- package/dist/chunk-NI2RSNWB.js.map +1 -0
- package/dist/{chunk-ZP4BI6J2.js → chunk-OEX5JDQD.js} +7 -7
- package/dist/chunk-OEX5JDQD.js.map +1 -0
- package/dist/{chunk-OKILA27U.js → chunk-TA6IIQI4.js} +86 -99
- package/dist/chunk-TA6IIQI4.js.map +1 -0
- package/dist/{chunk-JZOLJVWA.js → chunk-TBDIR6LY.js} +12 -11
- package/dist/chunk-TBDIR6LY.js.map +1 -0
- package/dist/{chunk-XYCN2GCV.js → chunk-TNFACSWF.js} +3 -3
- package/dist/{chunk-ZE355C6C.js → chunk-TY5GELDB.js} +9 -4
- package/dist/chunk-TY5GELDB.js.map +1 -0
- package/dist/{chunk-TM4I4EHK.js → chunk-U5OB5ADP.js} +2829 -2793
- package/dist/chunk-U5OB5ADP.js.map +1 -0
- package/dist/{chunk-JXMRTHDT.js → chunk-UOMMQ5M6.js} +2 -2
- package/dist/{chunk-A5CYQQVG.js → chunk-UV6JUGIY.js} +2 -2
- package/dist/{chunk-5YNZJ5TP.js → chunk-VAHVSQIG.js} +2 -2
- package/dist/{chunk-TKB4O2RY.js → chunk-VAK5PX72.js} +5 -5
- package/dist/chunk-WSGGJKD5.js +113 -0
- package/dist/chunk-WSGGJKD5.js.map +1 -0
- package/dist/{chunk-GVMA2EKC.js → chunk-YHQNTBBN.js} +2 -2
- package/dist/{chunk-NLR6Z37M.js → chunk-YJIJTBSX.js} +81 -97
- package/dist/chunk-YJIJTBSX.js.map +1 -0
- package/dist/{chunk-YCS7GF6Y.js → chunk-ZBJQXDQN.js} +3 -1
- package/dist/{chunk-YCS7GF6Y.js.map → chunk-ZBJQXDQN.js.map} +1 -1
- package/dist/cli/defaults/agent-mappings.yaml +4 -4
- package/dist/commands/build/marketplace.js +3 -3
- package/dist/commands/build/plugins.js +5 -5
- package/dist/commands/build/stack.js +5 -5
- package/dist/commands/compile.js +25 -19
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/config/get.js +8 -8
- package/dist/commands/config/get.js.map +1 -1
- package/dist/commands/config/index.js +5 -5
- package/dist/commands/config/path.js +4 -4
- package/dist/commands/config/set-project.js +7 -7
- package/dist/commands/config/set-project.js.map +1 -1
- package/dist/commands/config/show.js +5 -5
- package/dist/commands/config/unset-project.js +5 -5
- package/dist/commands/config/unset-project.js.map +1 -1
- package/dist/commands/diff.js +8 -8
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +4 -4
- package/dist/commands/edit.js +37 -28
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +6 -6
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/import/skill.js +16 -16
- package/dist/commands/import/skill.js.map +1 -1
- package/dist/commands/info.js +5 -5
- package/dist/commands/init.js +31 -26
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +4 -4
- package/dist/commands/new/agent.js +5 -5
- package/dist/commands/new/skill.js +8 -8
- package/dist/commands/new/skill.js.map +1 -1
- package/dist/commands/outdated.js +4 -4
- package/dist/commands/search.js +7 -7
- package/dist/commands/uninstall.js +181 -97
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +6 -6
- package/dist/commands/validate.js +5 -5
- package/dist/commands/version/bump.js +4 -4
- package/dist/commands/version/index.js +4 -4
- package/dist/commands/version/set.js +4 -4
- package/dist/commands/version/show.js +4 -4
- package/dist/components/skill-search/skill-search.js +3 -3
- package/dist/components/wizard/category-grid.js +3 -3
- package/dist/components/wizard/category-grid.test.js +42 -21
- package/dist/components/wizard/category-grid.test.js.map +1 -1
- package/dist/components/wizard/checkbox-grid.js +10 -0
- package/dist/components/wizard/checkbox-grid.test.js +260 -0
- package/dist/components/wizard/checkbox-grid.test.js.map +1 -0
- package/dist/components/wizard/domain-selection.js +7 -5
- package/dist/components/wizard/help-modal.js +2 -2
- package/dist/components/wizard/menu-item.js +2 -2
- package/dist/components/wizard/search-modal.js +3 -3
- package/dist/components/wizard/search-modal.test.js +3 -3
- package/dist/components/wizard/section-progress.js +2 -2
- package/dist/components/wizard/section-progress.test.js +2 -2
- package/dist/components/wizard/source-grid.js +5 -5
- package/dist/components/wizard/source-grid.test.js +5 -5
- package/dist/components/wizard/stack-selection.js +8 -7
- package/dist/components/wizard/step-agents.js +16 -0
- package/dist/components/wizard/step-agents.js.map +1 -0
- package/dist/components/wizard/step-agents.test.js +185 -0
- package/dist/components/wizard/step-agents.test.js.map +1 -0
- package/dist/components/wizard/step-build.js +9 -7
- package/dist/components/wizard/step-build.test.js +25 -22
- package/dist/components/wizard/step-build.test.js.map +1 -1
- package/dist/components/wizard/step-confirm.js +2 -2
- package/dist/components/wizard/step-confirm.test.js +6 -5
- 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 +2 -2
- package/dist/components/wizard/step-settings.js +6 -6
- package/dist/components/wizard/step-settings.test.js +9 -9
- package/dist/components/wizard/step-sources.js +12 -10
- package/dist/components/wizard/step-sources.test.js +14 -12
- package/dist/components/wizard/step-sources.test.js.map +1 -1
- package/dist/components/wizard/step-stack.js +11 -9
- package/dist/components/wizard/step-stack.test.js +12 -10
- 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 +8 -7
- package/dist/components/wizard/wizard-tabs.js +2 -2
- package/dist/components/wizard/wizard-tabs.test.js +6 -4
- package/dist/components/wizard/wizard-tabs.test.js.map +1 -1
- package/dist/components/wizard/wizard.js +27 -23
- package/dist/config/skills-matrix.yaml +26 -26
- package/dist/config/stacks.yaml +8 -8
- package/dist/hooks/init.js +5 -3
- package/dist/hooks/init.js.map +1 -1
- package/dist/{source-manager-WJYANKDI.js → source-manager-FEGVYDFZ.js} +4 -4
- package/dist/source-manager-FEGVYDFZ.js.map +1 -0
- package/dist/stores/wizard-store.js +5 -4
- package/dist/stores/wizard-store.test.js +287 -15
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +1 -1
- package/src/schemas/agent.schema.json +3 -3
- package/src/schemas/metadata.schema.json +14 -14
- package/src/schemas/project-config.schema.json +46 -2
- package/src/schemas/project-source-config.schema.json +17 -5
- package/src/schemas/skills-matrix.schema.json +4 -4
- package/src/schemas/stack.schema.json +1 -1
- package/src/schemas/stacks.schema.json +42 -1
- package/dist/chunk-2LUXM5FB.js +0 -277
- package/dist/chunk-2LUXM5FB.js.map +0 -1
- package/dist/chunk-ALS7SH7X.js.map +0 -1
- package/dist/chunk-ANGAZ444.js.map +0 -1
- package/dist/chunk-CB7GYRUP.js.map +0 -1
- package/dist/chunk-CEWNZQMH.js.map +0 -1
- package/dist/chunk-DC5AK3LW.js.map +0 -1
- package/dist/chunk-GIFEDW27.js.map +0 -1
- package/dist/chunk-JMVWYAHT.js.map +0 -1
- package/dist/chunk-JZOLJVWA.js.map +0 -1
- package/dist/chunk-LFHZBF6N.js.map +0 -1
- package/dist/chunk-NLR6Z37M.js.map +0 -1
- package/dist/chunk-OKILA27U.js.map +0 -1
- package/dist/chunk-R3AD6XBJ.js.map +0 -1
- package/dist/chunk-TM4I4EHK.js.map +0 -1
- package/dist/chunk-X7SPCWY6.js.map +0 -1
- package/dist/chunk-ZE355C6C.js.map +0 -1
- package/dist/chunk-ZI5EBHCC.js.map +0 -1
- package/dist/chunk-ZP4BI6J2.js.map +0 -1
- /package/dist/{chunk-HTTPKSL6.js.map → chunk-2XX4TMCI.js.map} +0 -0
- /package/dist/{chunk-QC37C32G.js.map → chunk-3NQJOJZL.js.map} +0 -0
- /package/dist/{chunk-VEZ2GZEK.js.map → chunk-ATLRUR3B.js.map} +0 -0
- /package/dist/{chunk-GGHH3KR2.js.map → chunk-HKDE4LJW.js.map} +0 -0
- /package/dist/{chunk-YPJKOM42.js.map → chunk-HRW7BIDE.js.map} +0 -0
- /package/dist/{chunk-KENWMEKN.js.map → chunk-M6PGIZNS.js.map} +0 -0
- /package/dist/{chunk-B47QYIUL.js.map → chunk-NFV4SKH5.js.map} +0 -0
- /package/dist/{chunk-XYCN2GCV.js.map → chunk-TNFACSWF.js.map} +0 -0
- /package/dist/{chunk-JXMRTHDT.js.map → chunk-UOMMQ5M6.js.map} +0 -0
- /package/dist/{chunk-A5CYQQVG.js.map → chunk-UV6JUGIY.js.map} +0 -0
- /package/dist/{chunk-5YNZJ5TP.js.map → chunk-VAHVSQIG.js.map} +0 -0
- /package/dist/{chunk-TKB4O2RY.js.map → chunk-VAK5PX72.js.map} +0 -0
- /package/dist/{chunk-GVMA2EKC.js.map → chunk-YHQNTBBN.js.map} +0 -0
- /package/dist/{source-manager-WJYANKDI.js.map → components/wizard/checkbox-grid.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,51 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
+
## [0.38.0] - 2026-02-18
|
|
13
|
+
|
|
14
|
+
**Agents selection step, skill-based preselection, strict stacks schema**
|
|
15
|
+
|
|
16
|
+
- New "Agents" wizard step — users can toggle which agents to compile
|
|
17
|
+
- Agents preselected from actually selected skills (not just domains)
|
|
18
|
+
- Stacks schema enforces valid subcategory keys via enum
|
|
19
|
+
- Reusable CheckboxGrid component extracted from domain selection
|
|
20
|
+
|
|
21
|
+
See [changelogs/0.38.0.md](./changelogs/0.38.0.md) for full details.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## [0.37.0] - 2026-02-18
|
|
26
|
+
|
|
27
|
+
**Rename all snake_case config/metadata fields to camelCase (D-27)**
|
|
28
|
+
|
|
29
|
+
- 27 fields renamed across types, schemas, configs, and all implementation code
|
|
30
|
+
- All 6 JSON schemas updated, validation error discriminants renamed
|
|
31
|
+
- Zero backward compatibility shims — clean break
|
|
32
|
+
|
|
33
|
+
See [changelogs/0.37.0.md](./changelogs/0.37.0.md) for full details.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## [0.36.0] - 2026-02-18
|
|
38
|
+
|
|
39
|
+
**Tier-based source sort order, display name rendering, and code standards enforcement**
|
|
40
|
+
|
|
41
|
+
- Sources step sorts by fixed tiers: local → scoped marketplace → default public → third-party
|
|
42
|
+
- Skills render full display names in Sources step (matching Build step)
|
|
43
|
+
- Clean code standards enforced across ~30 files (comments, typedKeys, getErrorMessage, test helpers)
|
|
44
|
+
|
|
45
|
+
See [changelogs/0.36.0.md](./changelogs/0.36.0.md) for full details.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## [0.35.0] - 2026-02-18
|
|
50
|
+
|
|
51
|
+
**Selective uninstall, expert mode persistence, metadata.yaml requirement, and test infrastructure overhaul**
|
|
52
|
+
|
|
53
|
+
See [changelogs/0.35.0.md](./changelogs/0.35.0.md) for full details.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
12
57
|
## [0.34.1] - 2026-02-17
|
|
13
58
|
|
|
14
59
|
**Code formatting**
|
|
@@ -38,9 +38,9 @@ categories:
|
|
|
38
38
|
styling:
|
|
39
39
|
id: styling
|
|
40
40
|
displayName: Styling
|
|
41
|
-
description: CSS approach (SCSS Modules, Tailwind)
|
|
41
|
+
description: CSS approach (SCSS Modules, Tailwind, CVA)
|
|
42
42
|
domain: web
|
|
43
|
-
exclusive:
|
|
43
|
+
exclusive: false
|
|
44
44
|
required: true
|
|
45
45
|
order: 3
|
|
46
46
|
|
|
@@ -103,7 +103,7 @@ categories:
|
|
|
103
103
|
displayName: Error Handling
|
|
104
104
|
description: Error boundaries, result types, and error patterns
|
|
105
105
|
domain: web-extras
|
|
106
|
-
|
|
106
|
+
parentDomain: web
|
|
107
107
|
exclusive: false
|
|
108
108
|
required: false
|
|
109
109
|
order: 11
|
|
@@ -122,7 +122,7 @@ categories:
|
|
|
122
122
|
displayName: File Upload
|
|
123
123
|
description: File upload patterns and handling
|
|
124
124
|
domain: web-extras
|
|
125
|
-
|
|
125
|
+
parentDomain: web
|
|
126
126
|
exclusive: false
|
|
127
127
|
required: false
|
|
128
128
|
order: 13
|
|
@@ -132,7 +132,7 @@ categories:
|
|
|
132
132
|
displayName: Files & Images
|
|
133
133
|
description: Image handling and file processing
|
|
134
134
|
domain: web-extras
|
|
135
|
-
|
|
135
|
+
parentDomain: web
|
|
136
136
|
exclusive: false
|
|
137
137
|
required: false
|
|
138
138
|
order: 14
|
|
@@ -142,7 +142,7 @@ categories:
|
|
|
142
142
|
displayName: Utilities
|
|
143
143
|
description: Utility libraries (date-fns, native JS patterns)
|
|
144
144
|
domain: web-extras
|
|
145
|
-
|
|
145
|
+
parentDomain: web
|
|
146
146
|
exclusive: false
|
|
147
147
|
required: false
|
|
148
148
|
order: 15
|
|
@@ -152,7 +152,7 @@ categories:
|
|
|
152
152
|
displayName: Realtime
|
|
153
153
|
description: WebSockets, SSE, and real-time communication
|
|
154
154
|
domain: web-extras
|
|
155
|
-
|
|
155
|
+
parentDomain: web
|
|
156
156
|
exclusive: true
|
|
157
157
|
required: false
|
|
158
158
|
order: 16
|
|
@@ -162,7 +162,7 @@ categories:
|
|
|
162
162
|
displayName: Animation
|
|
163
163
|
description: Animation libraries and CSS animations
|
|
164
164
|
domain: web-extras
|
|
165
|
-
|
|
165
|
+
parentDomain: web
|
|
166
166
|
exclusive: false
|
|
167
167
|
required: false
|
|
168
168
|
order: 17
|
|
@@ -172,7 +172,7 @@ categories:
|
|
|
172
172
|
displayName: Progressive Web App
|
|
173
173
|
description: Service workers, offline-first patterns, and PWA features
|
|
174
174
|
domain: web-extras
|
|
175
|
-
|
|
175
|
+
parentDomain: web
|
|
176
176
|
exclusive: false
|
|
177
177
|
required: false
|
|
178
178
|
order: 18
|
|
@@ -182,7 +182,7 @@ categories:
|
|
|
182
182
|
displayName: Accessibility
|
|
183
183
|
description: WCAG compliance, ARIA, and keyboard navigation
|
|
184
184
|
domain: web-extras
|
|
185
|
-
|
|
185
|
+
parentDomain: web
|
|
186
186
|
exclusive: false
|
|
187
187
|
required: false
|
|
188
188
|
order: 19
|
|
@@ -437,10 +437,6 @@ relationships:
|
|
|
437
437
|
# DISCOURAGES (Soft warnings - selecting A shows warning for B but doesn't disable)
|
|
438
438
|
# ─────────────────────────────────────────────────────────────────
|
|
439
439
|
discourages:
|
|
440
|
-
# Styling paradigm mixing is unusual but technically compatible
|
|
441
|
-
- skills: [scss-modules, tailwind]
|
|
442
|
-
reason: "Mixing CSS paradigms causes slower builds (Tailwind runs per-module) and inconsistent patterns - pick one approach for new projects. Valid for gradual migrations."
|
|
443
|
-
|
|
444
440
|
# React state libraries - can coexist but adds complexity
|
|
445
441
|
- skills: [zustand, redux-toolkit, mobx]
|
|
446
442
|
reason: "Using multiple React state libraries adds complexity - choose one primary approach. Migration patterns exist for gradual transitions."
|
|
@@ -513,8 +509,12 @@ relationships:
|
|
|
513
509
|
reason: "Radix primitives work well with any CSS approach"
|
|
514
510
|
|
|
515
511
|
- when: tailwind
|
|
516
|
-
suggest: [shadcn-ui]
|
|
517
|
-
reason: "shadcn/ui is built for Tailwind"
|
|
512
|
+
suggest: [shadcn-ui, cva]
|
|
513
|
+
reason: "shadcn/ui is built for Tailwind; CVA provides type-safe variant management for Tailwind classes"
|
|
514
|
+
|
|
515
|
+
- when: cva
|
|
516
|
+
suggest: [tailwind]
|
|
517
|
+
reason: "CVA is designed for type-safe variant management of Tailwind utility classes"
|
|
518
518
|
|
|
519
519
|
# UI component recommendations
|
|
520
520
|
- when: shadcn-ui
|
|
@@ -597,12 +597,12 @@ relationships:
|
|
|
597
597
|
# React-specific libraries (note: these libraries have vanilla/other-framework options, but our skills teach React patterns)
|
|
598
598
|
- skill: zustand
|
|
599
599
|
needs: [react, react-native]
|
|
600
|
-
|
|
600
|
+
needsAny: true
|
|
601
601
|
reason: "Our Zustand skill covers React/React Native patterns (zustand/vanilla exists for other frameworks)"
|
|
602
602
|
|
|
603
603
|
- skill: redux-toolkit
|
|
604
604
|
needs: [react, react-native]
|
|
605
|
-
|
|
605
|
+
needsAny: true
|
|
606
606
|
reason: "Our Redux Toolkit skill covers React/React Native patterns (RTK core is framework-agnostic)"
|
|
607
607
|
|
|
608
608
|
- skill: mobx
|
|
@@ -611,17 +611,17 @@ relationships:
|
|
|
611
611
|
|
|
612
612
|
- skill: react-query
|
|
613
613
|
needs: [react, react-native]
|
|
614
|
-
|
|
614
|
+
needsAny: true
|
|
615
615
|
reason: "TanStack Query's React adapter. Note: TanStack Query also supports Vue, Solid, Svelte via separate adapters."
|
|
616
616
|
|
|
617
617
|
- skill: swr
|
|
618
618
|
needs: [react, react-native]
|
|
619
|
-
|
|
619
|
+
needsAny: true
|
|
620
620
|
reason: "SWR is a React Hooks library. For React Native, requires @nandorojo/swr-react-native wrapper."
|
|
621
621
|
|
|
622
622
|
- skill: react-hook-form
|
|
623
623
|
needs: [react, react-native]
|
|
624
|
-
|
|
624
|
+
needsAny: true
|
|
625
625
|
reason: "React Hook Form is React only"
|
|
626
626
|
|
|
627
627
|
- skill: react-testing-library
|
|
@@ -659,7 +659,7 @@ relationships:
|
|
|
659
659
|
# Backend dependencies
|
|
660
660
|
- skill: better-auth
|
|
661
661
|
needs: [drizzle, prisma]
|
|
662
|
-
|
|
662
|
+
needsAny: true
|
|
663
663
|
reason: "Better Auth supports multiple database adapters (Drizzle, Prisma, Kysely, MongoDB). Our skill uses Drizzle adapter."
|
|
664
664
|
|
|
665
665
|
# NOTE: Removed drizzle/prisma requires API framework - ORMs work standalone for scripts, CLI tools, workers, etc.
|
|
@@ -672,12 +672,12 @@ relationships:
|
|
|
672
672
|
# GraphQL clients need a framework
|
|
673
673
|
- skill: graphql-apollo
|
|
674
674
|
needs: [react, vue, angular]
|
|
675
|
-
|
|
675
|
+
needsAny: true
|
|
676
676
|
reason: "Apollo Client - first-party React support, community-maintained Vue/Angular integrations. Note: Svelte/Solid bindings exist but are stale (2020-2022)."
|
|
677
677
|
|
|
678
678
|
- skill: graphql-urql
|
|
679
679
|
needs: [react, vue, solidjs]
|
|
680
|
-
|
|
680
|
+
needsAny: true
|
|
681
681
|
reason: "URQL has first-party support for React, Vue, and Solid (no Angular support). Svelte support exists but skill not yet created."
|
|
682
682
|
|
|
683
683
|
# ─────────────────────────────────────────────────────────────────
|
|
@@ -691,7 +691,7 @@ relationships:
|
|
|
691
691
|
skills: [nextjs-app-router, remix]
|
|
692
692
|
|
|
693
693
|
- purpose: "Styling"
|
|
694
|
-
skills: [scss-modules, tailwind]
|
|
694
|
+
skills: [scss-modules, tailwind, cva]
|
|
695
695
|
|
|
696
696
|
- purpose: "Client State (React)"
|
|
697
697
|
skills: [zustand, redux-toolkit, mobx, jotai]
|
|
@@ -759,7 +759,7 @@ relationships:
|
|
|
759
759
|
# - Lowercase
|
|
760
760
|
# =============================================================================
|
|
761
761
|
|
|
762
|
-
|
|
762
|
+
skillAliases:
|
|
763
763
|
# ─────────────────────────────────────────────────────────────────
|
|
764
764
|
# Frameworks - normalized skill IDs
|
|
765
765
|
# ─────────────────────────────────────────────────────────────────
|
package/config/stacks.yaml
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
stacks:
|
|
5
5
|
- id: nextjs-fullstack
|
|
6
6
|
name: Next.js Fullstack
|
|
7
|
-
description:
|
|
7
|
+
description: React + Hono full-stack
|
|
8
8
|
agents:
|
|
9
9
|
web-developer:
|
|
10
10
|
framework:
|
|
@@ -402,7 +402,7 @@ stacks:
|
|
|
402
402
|
|
|
403
403
|
- id: angular-stack
|
|
404
404
|
name: Modern Angular Stack
|
|
405
|
-
description: Angular
|
|
405
|
+
description: Angular + Signals stack
|
|
406
406
|
agents:
|
|
407
407
|
web-developer:
|
|
408
408
|
framework:
|
|
@@ -694,7 +694,7 @@ stacks:
|
|
|
694
694
|
|
|
695
695
|
- id: nuxt-stack
|
|
696
696
|
name: Nuxt Full-Stack
|
|
697
|
-
description: Vue
|
|
697
|
+
description: Vue + Nuxt full-stack
|
|
698
698
|
agents:
|
|
699
699
|
web-developer:
|
|
700
700
|
framework:
|
|
@@ -997,7 +997,7 @@ stacks:
|
|
|
997
997
|
|
|
998
998
|
- id: remix-stack
|
|
999
999
|
name: Remix Full-Stack
|
|
1000
|
-
description: Remix
|
|
1000
|
+
description: Remix + form-centric DX
|
|
1001
1001
|
agents:
|
|
1002
1002
|
web-developer:
|
|
1003
1003
|
framework:
|
|
@@ -1291,7 +1291,7 @@ stacks:
|
|
|
1291
1291
|
|
|
1292
1292
|
- id: vue-stack
|
|
1293
1293
|
name: Modern Vue Stack
|
|
1294
|
-
description: Vue
|
|
1294
|
+
description: Vue + Pinia + Tailwind
|
|
1295
1295
|
agents:
|
|
1296
1296
|
web-developer:
|
|
1297
1297
|
framework:
|
|
@@ -1583,7 +1583,7 @@ stacks:
|
|
|
1583
1583
|
|
|
1584
1584
|
- id: solidjs-stack
|
|
1585
1585
|
name: SolidJS Stack
|
|
1586
|
-
description:
|
|
1586
|
+
description: SolidJS + Hono full-stack
|
|
1587
1587
|
agents:
|
|
1588
1588
|
web-developer:
|
|
1589
1589
|
framework:
|
|
@@ -1866,7 +1866,7 @@ stacks:
|
|
|
1866
1866
|
|
|
1867
1867
|
- id: react-native-stack
|
|
1868
1868
|
name: React Native Stack
|
|
1869
|
-
description:
|
|
1869
|
+
description: React Native + Expo mobile
|
|
1870
1870
|
agents:
|
|
1871
1871
|
web-developer:
|
|
1872
1872
|
framework:
|
|
@@ -2096,7 +2096,7 @@ stacks:
|
|
|
2096
2096
|
|
|
2097
2097
|
- id: meta-stack
|
|
2098
2098
|
name: Meta Agent Stack
|
|
2099
|
-
description:
|
|
2099
|
+
description: Meta-level agent tooling
|
|
2100
2100
|
agents:
|
|
2101
2101
|
skill-summoner:
|
|
2102
2102
|
methodology:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
CLI_COLORS
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ZBJQXDQN.js";
|
|
5
5
|
import {
|
|
6
6
|
init_esm_shims
|
|
7
7
|
} from "./chunk-DHET7RCE.js";
|
|
@@ -28,4 +28,4 @@ var ViewTitle = ({ children }) => {
|
|
|
28
28
|
export {
|
|
29
29
|
ViewTitle
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=chunk-
|
|
31
|
+
//# sourceMappingURL=chunk-2XX4TMCI.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-MZB3GGOH.js";
|
|
5
5
|
import {
|
|
6
6
|
CLI_COLORS
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ZBJQXDQN.js";
|
|
8
8
|
import {
|
|
9
9
|
init_esm_shims
|
|
10
10
|
} from "./chunk-DHET7RCE.js";
|
|
@@ -20,6 +20,7 @@ var StepConfirm = ({
|
|
|
20
20
|
domainSelections,
|
|
21
21
|
technologyCount,
|
|
22
22
|
skillCount,
|
|
23
|
+
agentCount,
|
|
23
24
|
installMode,
|
|
24
25
|
onBack
|
|
25
26
|
}) => {
|
|
@@ -62,6 +63,11 @@ var StepConfirm = ({
|
|
|
62
63
|
" ",
|
|
63
64
|
/* @__PURE__ */ jsx(Text, { color: CLI_COLORS.SUCCESS, children: "(all verified)" })
|
|
64
65
|
] }),
|
|
66
|
+
agentCount !== void 0 && /* @__PURE__ */ jsxs(Text, { children: [
|
|
67
|
+
/* @__PURE__ */ jsx(Text, { dimColor: true, children: "Agents:" }),
|
|
68
|
+
" ",
|
|
69
|
+
/* @__PURE__ */ jsx(Text, { bold: true, children: agentCount })
|
|
70
|
+
] }),
|
|
65
71
|
installMode && /* @__PURE__ */ jsxs(Text, { children: [
|
|
66
72
|
/* @__PURE__ */ jsx(Text, { dimColor: true, children: "Install mode:" }),
|
|
67
73
|
" ",
|
|
@@ -75,4 +81,4 @@ var StepConfirm = ({
|
|
|
75
81
|
export {
|
|
76
82
|
StepConfirm
|
|
77
83
|
};
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
84
|
+
//# sourceMappingURL=chunk-3E2V5YL3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/components/wizard/step-confirm.tsx"],"sourcesContent":["import React from \"react\";\nimport { Box, Text, useInput } from \"ink\";\nimport type { DomainSelections, Domain } from \"../../types/index.js\";\nimport { CLI_COLORS } from \"../../consts.js\";\nimport { getDomainDisplayName } from \"./utils.js\";\n\ntype StepConfirmProps = {\n onComplete: () => void;\n stackName?: string;\n selectedDomains?: Domain[];\n domainSelections?: DomainSelections;\n technologyCount?: number;\n skillCount?: number;\n agentCount?: number;\n installMode?: \"plugin\" | \"local\";\n onBack?: () => void;\n};\n\nexport const StepConfirm: React.FC<StepConfirmProps> = ({\n onComplete,\n stackName,\n selectedDomains,\n domainSelections,\n technologyCount,\n skillCount,\n agentCount,\n installMode,\n onBack,\n}) => {\n useInput((_input, key) => {\n if (key.return) {\n onComplete();\n }\n if (key.escape && onBack) {\n onBack();\n }\n });\n\n const domainsText = selectedDomains?.map(getDomainDisplayName).join(\" + \") || \"\";\n const title = stackName\n ? `Ready to install ${stackName}`\n : `Ready to install your custom stack${domainsText ? ` (${domainsText})` : \"\"}`;\n\n return (\n <Box flexDirection=\"column\" paddingX={2}>\n <Text bold color={CLI_COLORS.SUCCESS}>\n {title}\n </Text>\n <Text> </Text>\n\n {domainSelections && selectedDomains && !stackName && (\n <Box flexDirection=\"column\" marginBottom={1}>\n {selectedDomains.map((domain) => {\n const selections = domainSelections[domain] || {};\n const techs = Object.values(selections).flat();\n if (techs.length === 0) return null;\n return (\n <Text key={domain}>\n <Text bold>{getDomainDisplayName(domain)}:</Text> <Text>{techs.join(\", \")}</Text>\n </Text>\n );\n })}\n </Box>\n )}\n\n <Box flexDirection=\"column\" marginY={1}>\n {technologyCount !== undefined && (\n <Text>\n <Text dimColor>Technologies:</Text> <Text bold>{technologyCount}</Text>\n </Text>\n )}\n {skillCount !== undefined && (\n <Text>\n <Text dimColor>Skills:</Text> <Text bold>{skillCount}</Text>{\" \"}\n <Text color={CLI_COLORS.SUCCESS}>(all verified)</Text>\n </Text>\n )}\n {agentCount !== undefined && (\n <Text>\n <Text dimColor>Agents:</Text> <Text bold>{agentCount}</Text>\n </Text>\n )}\n {installMode && (\n <Text>\n <Text dimColor>Install mode:</Text>{\" \"}\n <Text bold>{installMode === \"plugin\" ? \"Plugin\" : \"Local\"}</Text>\n </Text>\n )}\n </Box>\n\n <Box marginTop={1}>\n <Text dimColor>ENTER install ESC go back</Text>\n </Box>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAAA;AACA,SAAS,KAAK,MAAM,gBAAgB;AA4C9B,cAaU,YAbV;AA3BC,IAAM,cAA0C,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,WAAS,CAAC,QAAQ,QAAQ;AACxB,QAAI,IAAI,QAAQ;AACd,iBAAW;AAAA,IACb;AACA,QAAI,IAAI,UAAU,QAAQ;AACxB,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,QAAM,cAAc,iBAAiB,IAAI,oBAAoB,EAAE,KAAK,KAAK,KAAK;AAC9E,QAAM,QAAQ,YACV,oBAAoB,SAAS,KAC7B,qCAAqC,cAAc,KAAK,WAAW,MAAM,EAAE;AAE/E,SACE,qBAAC,OAAI,eAAc,UAAS,UAAU,GACpC;AAAA,wBAAC,QAAK,MAAI,MAAC,OAAO,WAAW,SAC1B,iBACH;AAAA,IACA,oBAAC,QAAK,eAAC;AAAA,IAEN,oBAAoB,mBAAmB,CAAC,aACvC,oBAAC,OAAI,eAAc,UAAS,cAAc,GACvC,0BAAgB,IAAI,CAAC,WAAW;AAC/B,YAAM,aAAa,iBAAiB,MAAM,KAAK,CAAC;AAChD,YAAM,QAAQ,OAAO,OAAO,UAAU,EAAE,KAAK;AAC7C,UAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,aACE,qBAAC,QACC;AAAA,6BAAC,QAAK,MAAI,MAAE;AAAA,+BAAqB,MAAM;AAAA,UAAE;AAAA,WAAC;AAAA,QAAO;AAAA,QAAC,oBAAC,QAAM,gBAAM,KAAK,IAAI,GAAE;AAAA,WADjE,MAEX;AAAA,IAEJ,CAAC,GACH;AAAA,IAGF,qBAAC,OAAI,eAAc,UAAS,SAAS,GAClC;AAAA,0BAAoB,UACnB,qBAAC,QACC;AAAA,4BAAC,QAAK,UAAQ,MAAC,2BAAa;AAAA,QAAO;AAAA,QAAC,oBAAC,QAAK,MAAI,MAAE,2BAAgB;AAAA,SAClE;AAAA,MAED,eAAe,UACd,qBAAC,QACC;AAAA,4BAAC,QAAK,UAAQ,MAAC,qBAAO;AAAA,QAAO;AAAA,QAAC,oBAAC,QAAK,MAAI,MAAE,sBAAW;AAAA,QAAQ;AAAA,QAC7D,oBAAC,QAAK,OAAO,WAAW,SAAS,4BAAc;AAAA,SACjD;AAAA,MAED,eAAe,UACd,qBAAC,QACC;AAAA,4BAAC,QAAK,UAAQ,MAAC,qBAAO;AAAA,QAAO;AAAA,QAAC,oBAAC,QAAK,MAAI,MAAE,sBAAW;AAAA,SACvD;AAAA,MAED,eACC,qBAAC,QACC;AAAA,4BAAC,QAAK,UAAQ,MAAC,2BAAa;AAAA,QAAQ;AAAA,QACpC,oBAAC,QAAK,MAAI,MAAE,0BAAgB,WAAW,WAAW,SAAQ;AAAA,SAC5D;AAAA,OAEJ;AAAA,IAEA,oBAAC,OAAI,WAAW,GACd,8BAAC,QAAK,UAAQ,MAAC,uCAAyB,GAC1C;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
useKeyboardNavigation
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-KUV24B5M.js";
|
|
5
5
|
import {
|
|
6
6
|
CLI_COLORS
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ZBJQXDQN.js";
|
|
8
8
|
import {
|
|
9
9
|
init_esm_shims
|
|
10
10
|
} from "./chunk-DHET7RCE.js";
|
|
@@ -92,4 +92,4 @@ var SearchModal = ({ results, alias, onBind, onClose }) => {
|
|
|
92
92
|
export {
|
|
93
93
|
SearchModal
|
|
94
94
|
};
|
|
95
|
-
//# sourceMappingURL=chunk-
|
|
95
|
+
//# sourceMappingURL=chunk-3NQJOJZL.js.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
CheckboxGrid
|
|
4
|
+
} from "./chunk-IWNPFIGY.js";
|
|
5
|
+
import {
|
|
6
|
+
useWizardStore
|
|
7
|
+
} from "./chunk-HRMQ2RGY.js";
|
|
8
|
+
import {
|
|
9
|
+
init_esm_shims
|
|
10
|
+
} from "./chunk-DHET7RCE.js";
|
|
11
|
+
|
|
12
|
+
// src/cli/components/wizard/domain-selection.tsx
|
|
13
|
+
init_esm_shims();
|
|
14
|
+
import { jsx } from "react/jsx-runtime";
|
|
15
|
+
var AVAILABLE_DOMAINS = [
|
|
16
|
+
{ id: "web", label: "Web", description: "Frontend web applications" },
|
|
17
|
+
{
|
|
18
|
+
id: "web-extras",
|
|
19
|
+
label: "Web Extras",
|
|
20
|
+
description: "Animation, files, realtime, PWA, accessibility"
|
|
21
|
+
},
|
|
22
|
+
{ id: "api", label: "API", description: "Backend APIs and services" },
|
|
23
|
+
{ id: "cli", label: "CLI", description: "Command-line tools" },
|
|
24
|
+
{ id: "mobile", label: "Mobile", description: "Mobile applications" }
|
|
25
|
+
];
|
|
26
|
+
var DomainSelection = () => {
|
|
27
|
+
const { selectedDomains, toggleDomain, setStep, setApproach, selectStack } = useWizardStore();
|
|
28
|
+
const handleBack = () => {
|
|
29
|
+
setApproach(null);
|
|
30
|
+
selectStack(null);
|
|
31
|
+
};
|
|
32
|
+
return /* @__PURE__ */ jsx(
|
|
33
|
+
CheckboxGrid,
|
|
34
|
+
{
|
|
35
|
+
title: "Select domains to configure:",
|
|
36
|
+
subtitle: "Select one or more domains, then continue",
|
|
37
|
+
items: AVAILABLE_DOMAINS,
|
|
38
|
+
selectedIds: selectedDomains,
|
|
39
|
+
onToggle: toggleDomain,
|
|
40
|
+
onContinue: () => setStep("build"),
|
|
41
|
+
onBack: handleBack,
|
|
42
|
+
continueLabel: (count) => `Continue with ${count} domain(s)`,
|
|
43
|
+
emptyMessage: "Please select at least one domain"
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export {
|
|
49
|
+
DomainSelection
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=chunk-54ZZCWN4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/components/wizard/domain-selection.tsx"],"sourcesContent":["import React from \"react\";\nimport { useWizardStore } from \"../../stores/wizard-store.js\";\nimport type { Domain } from \"../../types/index.js\";\nimport { CheckboxGrid, type CheckboxItem } from \"./checkbox-grid.js\";\n\nconst AVAILABLE_DOMAINS: CheckboxItem<Domain>[] = [\n { id: \"web\", label: \"Web\", description: \"Frontend web applications\" },\n {\n id: \"web-extras\",\n label: \"Web Extras\",\n description: \"Animation, files, realtime, PWA, accessibility\",\n },\n { id: \"api\", label: \"API\", description: \"Backend APIs and services\" },\n { id: \"cli\", label: \"CLI\", description: \"Command-line tools\" },\n { id: \"mobile\", label: \"Mobile\", description: \"Mobile applications\" },\n];\n\nexport const DomainSelection: React.FC = () => {\n const { selectedDomains, toggleDomain, setStep, setApproach, selectStack } = useWizardStore();\n\n const handleBack = () => {\n setApproach(null);\n selectStack(null);\n };\n\n return (\n <CheckboxGrid\n title=\"Select domains to configure:\"\n subtitle=\"Select one or more domains, then continue\"\n items={AVAILABLE_DOMAINS}\n selectedIds={selectedDomains}\n onToggle={toggleDomain}\n onContinue={() => setStep(\"build\")}\n onBack={handleBack}\n continueLabel={(count) => `Continue with ${count} domain(s)`}\n emptyMessage=\"Please select at least one domain\"\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;AAAA;AA0BI;AArBJ,IAAM,oBAA4C;AAAA,EAChD,EAAE,IAAI,OAAO,OAAO,OAAO,aAAa,4BAA4B;AAAA,EACpE;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EACA,EAAE,IAAI,OAAO,OAAO,OAAO,aAAa,4BAA4B;AAAA,EACpE,EAAE,IAAI,OAAO,OAAO,OAAO,aAAa,qBAAqB;AAAA,EAC7D,EAAE,IAAI,UAAU,OAAO,UAAU,aAAa,sBAAsB;AACtE;AAEO,IAAM,kBAA4B,MAAM;AAC7C,QAAM,EAAE,iBAAiB,cAAc,SAAS,aAAa,YAAY,IAAI,eAAe;AAE5F,QAAM,aAAa,MAAM;AACvB,gBAAY,IAAI;AAChB,gBAAY,IAAI;AAAA,EAClB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,UAAS;AAAA,MACT,OAAO;AAAA,MACP,aAAa;AAAA,MACb,UAAU;AAAA,MACV,YAAY,MAAM,QAAQ,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,eAAe,CAAC,UAAU,iBAAiB,KAAK;AAAA,MAChD,cAAa;AAAA;AAAA,EACf;AAEJ;","names":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
CLI_COLORS,
|
|
4
4
|
DEFAULT_BRANDING
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ZBJQXDQN.js";
|
|
6
6
|
import {
|
|
7
7
|
init_esm_shims
|
|
8
8
|
} from "./chunk-DHET7RCE.js";
|
|
@@ -108,4 +108,4 @@ var StepRefine = ({
|
|
|
108
108
|
export {
|
|
109
109
|
StepRefine
|
|
110
110
|
};
|
|
111
|
-
//# sourceMappingURL=chunk-
|
|
111
|
+
//# sourceMappingURL=chunk-ATLRUR3B.js.map
|
|
@@ -1,41 +1,44 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
StepStack
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NFV4SKH5.js";
|
|
5
5
|
import {
|
|
6
6
|
WizardLayout
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-TBDIR6LY.js";
|
|
8
8
|
import {
|
|
9
9
|
StepConfirm
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-3E2V5YL3.js";
|
|
11
11
|
import {
|
|
12
12
|
StepSettings
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-M6PGIZNS.js";
|
|
14
14
|
import {
|
|
15
15
|
StepSources
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-DUQFF45G.js";
|
|
17
|
+
import {
|
|
18
|
+
StepAgents
|
|
19
|
+
} from "./chunk-EXFVAEPY.js";
|
|
17
20
|
import {
|
|
18
21
|
StepBuild
|
|
19
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-NI2RSNWB.js";
|
|
20
23
|
import {
|
|
21
24
|
getStackName
|
|
22
25
|
} from "./chunk-MZB3GGOH.js";
|
|
23
26
|
import {
|
|
24
27
|
cliTheme
|
|
25
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-VAHVSQIG.js";
|
|
26
29
|
import {
|
|
27
30
|
useWizardStore
|
|
28
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-HRMQ2RGY.js";
|
|
29
32
|
import {
|
|
30
33
|
resolveAlias,
|
|
31
34
|
validateSelection
|
|
32
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-U5OB5ADP.js";
|
|
33
36
|
import {
|
|
34
37
|
warn
|
|
35
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-YJIJTBSX.js";
|
|
36
39
|
import {
|
|
37
40
|
CLI_COLORS
|
|
38
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-ZBJQXDQN.js";
|
|
39
42
|
import {
|
|
40
43
|
init_esm_shims
|
|
41
44
|
} from "./chunk-DHET7RCE.js";
|
|
@@ -53,6 +56,7 @@ function useWizardInitialization({
|
|
|
53
56
|
matrix,
|
|
54
57
|
initialStep,
|
|
55
58
|
initialInstallMode,
|
|
59
|
+
initialExpertMode,
|
|
56
60
|
installedSkillIds
|
|
57
61
|
}) {
|
|
58
62
|
const initialized = useRef(false);
|
|
@@ -67,6 +71,9 @@ function useWizardInitialization({
|
|
|
67
71
|
if (initialInstallMode) {
|
|
68
72
|
useWizardStore.setState({ installMode: initialInstallMode });
|
|
69
73
|
}
|
|
74
|
+
if (initialExpertMode) {
|
|
75
|
+
useWizardStore.setState({ expertMode: initialExpertMode });
|
|
76
|
+
}
|
|
70
77
|
}
|
|
71
78
|
}
|
|
72
79
|
|
|
@@ -108,12 +115,12 @@ function useBuildStepProps({
|
|
|
108
115
|
selectedDomains: effectiveDomains,
|
|
109
116
|
selections: store.domainSelections[activeDomain] || {},
|
|
110
117
|
allSelections,
|
|
111
|
-
|
|
118
|
+
showLabels: store.showLabels,
|
|
112
119
|
expertMode: store.expertMode,
|
|
113
120
|
parentDomainSelections,
|
|
114
121
|
installedSkillIds,
|
|
115
122
|
onToggle,
|
|
116
|
-
|
|
123
|
+
onToggleLabels: store.toggleShowLabels,
|
|
117
124
|
onContinue,
|
|
118
125
|
onBack
|
|
119
126
|
};
|
|
@@ -132,6 +139,7 @@ var Wizard = ({
|
|
|
132
139
|
logo,
|
|
133
140
|
initialStep,
|
|
134
141
|
initialInstallMode,
|
|
142
|
+
initialExpertMode,
|
|
135
143
|
installedSkillIds,
|
|
136
144
|
projectDir
|
|
137
145
|
}) => {
|
|
@@ -142,7 +150,13 @@ var Wizard = ({
|
|
|
142
150
|
const terminalHeight = stdout.rows || MIN_TERMINAL_HEIGHT;
|
|
143
151
|
const isNarrowTerminal = terminalWidth < MIN_TERMINAL_WIDTH;
|
|
144
152
|
const isShortTerminal = terminalHeight < MIN_TERMINAL_HEIGHT;
|
|
145
|
-
useWizardInitialization({
|
|
153
|
+
useWizardInitialization({
|
|
154
|
+
matrix,
|
|
155
|
+
initialStep,
|
|
156
|
+
initialInstallMode,
|
|
157
|
+
initialExpertMode,
|
|
158
|
+
installedSkillIds
|
|
159
|
+
});
|
|
146
160
|
const buildStepProps = useBuildStepProps({ store, matrix, installedSkillIds });
|
|
147
161
|
useInput((input, key) => {
|
|
148
162
|
if (store.showSettings) {
|
|
@@ -162,7 +176,7 @@ var Wizard = ({
|
|
|
162
176
|
return;
|
|
163
177
|
}
|
|
164
178
|
if (key.escape) {
|
|
165
|
-
if (store.step !== "build" && store.step !== "confirm" && store.step !== "sources" && store.step !== "stack") {
|
|
179
|
+
if (store.step !== "build" && store.step !== "confirm" && store.step !== "sources" && store.step !== "agents" && store.step !== "stack") {
|
|
166
180
|
store.goBack();
|
|
167
181
|
}
|
|
168
182
|
return;
|
|
@@ -213,6 +227,7 @@ var Wizard = ({
|
|
|
213
227
|
const validation = validateSelection(allSkills, matrix);
|
|
214
228
|
const result = {
|
|
215
229
|
selectedSkills: allSkills,
|
|
230
|
+
selectedAgents: store.selectedAgents,
|
|
216
231
|
selectedStackId: store.selectedStackId,
|
|
217
232
|
domainSelections: store.domainSelections,
|
|
218
233
|
sourceSelections: store.sourceSelections,
|
|
@@ -249,11 +264,16 @@ var Wizard = ({
|
|
|
249
264
|
{
|
|
250
265
|
matrix,
|
|
251
266
|
projectDir,
|
|
252
|
-
onContinue: () =>
|
|
267
|
+
onContinue: () => {
|
|
268
|
+
store.preselectAgentsFromSkills();
|
|
269
|
+
store.setStep("agents");
|
|
270
|
+
},
|
|
253
271
|
onBack: store.goBack
|
|
254
272
|
}
|
|
255
273
|
);
|
|
256
274
|
}
|
|
275
|
+
case "agents":
|
|
276
|
+
return /* @__PURE__ */ jsx(StepAgents, {});
|
|
257
277
|
case "confirm": {
|
|
258
278
|
const stackName = getStackName(store.selectedStackId, matrix);
|
|
259
279
|
const technologyCount = store.getTechnologyCount();
|
|
@@ -266,6 +286,7 @@ var Wizard = ({
|
|
|
266
286
|
domainSelections: store.domainSelections,
|
|
267
287
|
technologyCount,
|
|
268
288
|
skillCount: technologyCount,
|
|
289
|
+
agentCount: store.selectedAgents.length,
|
|
269
290
|
installMode: store.installMode,
|
|
270
291
|
onBack: store.goBack
|
|
271
292
|
}
|
|
@@ -289,4 +310,4 @@ var Wizard = ({
|
|
|
289
310
|
export {
|
|
290
311
|
Wizard
|
|
291
312
|
};
|
|
292
|
-
//# sourceMappingURL=chunk-
|
|
313
|
+
//# sourceMappingURL=chunk-CYFU3ARY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/components/wizard/wizard.tsx","../src/cli/components/hooks/use-wizard-initialization.ts","../src/cli/components/hooks/use-build-step-props.ts"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { Box, Text, useApp, useInput, useStdout } from \"ink\";\nimport { ThemeProvider } from \"@inkjs/ui\";\nimport { useWizardStore, type WizardStep } from \"../../stores/wizard-store.js\";\nimport { CLI_COLORS } from \"../../consts.js\";\nimport { cliTheme } from \"../themes/default.js\";\nimport { WizardLayout } from \"./wizard-layout.js\";\nimport { StepStack } from \"./step-stack.js\";\nimport { StepBuild } from \"./step-build.js\";\nimport { StepConfirm } from \"./step-confirm.js\";\nimport { StepSources } from \"./step-sources.js\";\nimport { StepSettings } from \"./step-settings.js\";\nimport { StepAgents } from \"./step-agents.js\";\nimport { resolveAlias, validateSelection } from \"../../lib/matrix/index.js\";\nimport type {\n AgentName,\n DomainSelections,\n MergedSkillsMatrix,\n SkillId,\n} from \"../../types/index.js\";\nimport { getStackName } from \"./utils.js\";\nimport { warn } from \"../../utils/logger.js\";\nimport { useWizardInitialization } from \"../hooks/use-wizard-initialization.js\";\nimport { useBuildStepProps } from \"../hooks/use-build-step-props.js\";\n\nexport type WizardResultV2 = {\n selectedSkills: SkillId[];\n selectedAgents: AgentName[];\n selectedStackId: string | null;\n domainSelections: DomainSelections;\n sourceSelections: Partial<Record<SkillId, string>>;\n expertMode: boolean;\n installMode: \"plugin\" | \"local\";\n cancelled: boolean;\n validation: {\n valid: boolean;\n errors: Array<{ message: string }>;\n warnings: Array<{ message: string }>;\n };\n};\n\ntype WizardProps = {\n matrix: MergedSkillsMatrix;\n onComplete: (result: WizardResultV2) => void;\n onCancel: () => void;\n version?: string;\n marketplaceLabel?: string;\n logo?: string;\n initialStep?: WizardStep;\n initialInstallMode?: \"plugin\" | \"local\";\n initialExpertMode?: boolean;\n installedSkillIds?: SkillId[];\n projectDir?: string;\n};\n\nconst MIN_TERMINAL_WIDTH = 80;\nconst MIN_TERMINAL_HEIGHT = 15;\n\nexport const Wizard: React.FC<WizardProps> = ({\n matrix,\n onComplete,\n onCancel,\n version,\n marketplaceLabel,\n logo,\n initialStep,\n initialInstallMode,\n initialExpertMode,\n installedSkillIds,\n projectDir,\n}) => {\n const store = useWizardStore();\n const { exit } = useApp();\n const { stdout } = useStdout();\n\n const terminalWidth = stdout.columns || MIN_TERMINAL_WIDTH;\n const terminalHeight = stdout.rows || MIN_TERMINAL_HEIGHT;\n const isNarrowTerminal = terminalWidth < MIN_TERMINAL_WIDTH;\n const isShortTerminal = terminalHeight < MIN_TERMINAL_HEIGHT;\n\n useWizardInitialization({\n matrix,\n initialStep,\n initialInstallMode,\n initialExpertMode,\n installedSkillIds,\n });\n\n const buildStepProps = useBuildStepProps({ store, matrix, installedSkillIds });\n\n useInput((input, key) => {\n // ESC is handled by step-settings.tsx's own useKeyboardNavigation hook\n if (store.showSettings) {\n if (input === \"g\" || input === \"G\") {\n store.toggleSettings();\n }\n return;\n }\n\n if (store.showHelp) {\n if (key.escape || input === \"?\") {\n store.toggleHelp();\n }\n return;\n }\n\n if (input === \"?\") {\n store.toggleHelp();\n return;\n }\n\n if (key.escape) {\n // At the initial stack/scratch selection (approach not yet set), ESC cancels the wizard.\n // StackSelection handles its own ESC via the onCancel prop.\n // Other steps that don't have their own escape handler use goBack.\n if (\n store.step !== \"build\" &&\n store.step !== \"confirm\" &&\n store.step !== \"sources\" &&\n store.step !== \"agents\" &&\n store.step !== \"stack\"\n ) {\n store.goBack();\n }\n return;\n }\n\n if ((input === \"a\" || input === \"A\") && store.step === \"build\" && store.selectedStackId) {\n store.setStackAction(\"defaults\");\n store.setStep(\"confirm\");\n return;\n }\n\n if ((input === \"g\" || input === \"G\") && store.step === \"sources\") {\n store.toggleSettings();\n return;\n }\n\n if (input === \"e\" || input === \"E\") {\n store.toggleExpertMode();\n return;\n }\n if (input === \"p\" || input === \"P\") {\n store.toggleInstallMode();\n }\n });\n\n const handleComplete = useCallback(() => {\n let allSkills: SkillId[];\n\n if (store.selectedStackId && store.stackAction === \"defaults\") {\n const stack = matrix.suggestedStacks.find((s) => s.id === store.selectedStackId);\n if (!stack) {\n warn(`Stack not found in matrix: '${store.selectedStackId}'`);\n }\n allSkills = [...(stack?.allSkillIds || [])];\n } else {\n const techNames = store.getAllSelectedTechnologies();\n allSkills = techNames.map((tech) => {\n const resolved = resolveAlias(tech, matrix);\n if (!matrix.skills[resolved]) {\n warn(\n `Technology '${tech}' could not be resolved to a skill ID - it may be missing from skill_aliases`,\n );\n }\n return resolved;\n });\n }\n\n const methodologySkills = store.getDefaultMethodologySkills();\n for (const skill of methodologySkills) {\n if (!allSkills.includes(skill)) {\n allSkills.push(skill);\n }\n }\n\n const validation = validateSelection(allSkills, matrix);\n\n const result: WizardResultV2 = {\n selectedSkills: allSkills,\n selectedAgents: store.selectedAgents,\n selectedStackId: store.selectedStackId,\n domainSelections: store.domainSelections,\n sourceSelections: store.sourceSelections,\n expertMode: store.expertMode,\n installMode: store.installMode,\n cancelled: false,\n validation,\n };\n\n onComplete(result);\n exit();\n }, [store, matrix, onComplete, exit]);\n\n const handleCancel = useCallback(() => {\n onCancel();\n exit();\n }, [onCancel, exit]);\n\n const renderStep = () => {\n switch (store.step) {\n case \"stack\":\n return <StepStack matrix={matrix} onCancel={handleCancel} />;\n\n case \"build\":\n return <StepBuild {...buildStepProps} />;\n\n case \"sources\": {\n if (store.showSettings) {\n return (\n <StepSettings\n projectDir={projectDir || process.cwd()}\n onClose={() => store.toggleSettings()}\n />\n );\n }\n return (\n <StepSources\n matrix={matrix}\n projectDir={projectDir}\n onContinue={() => {\n store.preselectAgentsFromSkills();\n store.setStep(\"agents\");\n }}\n onBack={store.goBack}\n />\n );\n }\n\n case \"agents\":\n return <StepAgents />;\n\n case \"confirm\": {\n const stackName = getStackName(store.selectedStackId, matrix);\n const technologyCount = store.getTechnologyCount();\n return (\n <StepConfirm\n onComplete={handleComplete}\n stackName={stackName}\n selectedDomains={store.selectedDomains}\n domainSelections={store.domainSelections}\n technologyCount={technologyCount}\n skillCount={technologyCount}\n agentCount={store.selectedAgents.length}\n installMode={store.installMode}\n onBack={store.goBack}\n />\n );\n }\n\n default:\n return null;\n }\n };\n\n if (isNarrowTerminal || isShortTerminal) {\n const issue = isNarrowTerminal\n ? `too narrow (${terminalWidth} columns, need ${MIN_TERMINAL_WIDTH})`\n : `too short (${terminalHeight} rows, need ${MIN_TERMINAL_HEIGHT})`;\n\n return (\n <ThemeProvider theme={cliTheme}>\n <Box flexDirection=\"column\" padding={1}>\n <Text color={CLI_COLORS.WARNING}>Terminal {issue}. Please resize your terminal.</Text>\n </Box>\n </ThemeProvider>\n );\n }\n\n return (\n <ThemeProvider theme={cliTheme}>\n <WizardLayout version={version} marketplaceLabel={marketplaceLabel} logo={logo}>\n {renderStep()}\n </WizardLayout>\n </ThemeProvider>\n );\n};\n","import { useRef } from \"react\";\nimport { useWizardStore, type WizardStep } from \"../../stores/wizard-store.js\";\nimport type { MergedSkillsMatrix, SkillId } from \"../../types/index.js\";\n\ntype UseWizardInitializationOptions = {\n matrix: MergedSkillsMatrix;\n initialStep?: WizardStep;\n initialInstallMode?: \"plugin\" | \"local\";\n initialExpertMode?: boolean;\n installedSkillIds?: SkillId[];\n};\n\n/**\n * Runs one-time wizard store initialization before the first render.\n * Populates step, approach, install mode, and skill selections from props.\n */\nexport function useWizardInitialization({\n matrix,\n initialStep,\n initialInstallMode,\n initialExpertMode,\n installedSkillIds,\n}: UseWizardInitializationOptions): void {\n const initialized = useRef(false);\n\n if (!initialized.current) {\n initialized.current = true;\n\n if (initialStep) {\n if (installedSkillIds?.length) {\n useWizardStore\n .getState()\n .populateFromSkillIds(installedSkillIds, matrix.skills, matrix.categories);\n }\n useWizardStore.setState({ step: initialStep, approach: \"scratch\" });\n }\n if (initialInstallMode) {\n useWizardStore.setState({ installMode: initialInstallMode });\n }\n if (initialExpertMode) {\n useWizardStore.setState({ expertMode: initialExpertMode });\n }\n }\n}\n","import { useCallback } from \"react\";\nimport type { Domain, MergedSkillsMatrix, SkillId } from \"../../types/index.js\";\nimport type { WizardState } from \"../../stores/wizard-store.js\";\nimport type { StepBuildProps } from \"../wizard/step-build.js\";\n\ntype UseBuildStepPropsOptions = {\n store: WizardState;\n matrix: MergedSkillsMatrix;\n installedSkillIds?: SkillId[];\n};\n\nexport function useBuildStepProps({\n store,\n matrix,\n installedSkillIds,\n}: UseBuildStepPropsOptions): StepBuildProps {\n const currentDomain = store.getCurrentDomain();\n const defaultDomains: Domain[] = [\"web\"];\n const effectiveDomains =\n store.selectedDomains.length > 0 ? store.selectedDomains : defaultDomains;\n\n const allSelections = store.getAllSelectedTechnologies();\n\n const activeDomain: Domain = currentDomain || effectiveDomains[0] || \"web\";\n const parentDomainSelections = store.getParentDomainSelections(activeDomain, matrix);\n\n const onToggle = useCallback(\n (subcategoryId: Parameters<StepBuildProps[\"onToggle\"]>[0], techId: SkillId) => {\n const domain: Domain = store.getCurrentDomain() || \"web\";\n const cat = matrix.categories[subcategoryId];\n store.toggleTechnology(domain, subcategoryId, techId, cat?.exclusive ?? true);\n },\n [store, matrix],\n );\n\n const onContinue = useCallback(() => {\n if (!store.nextDomain()) {\n store.setStep(\"sources\");\n }\n }, [store]);\n\n const onBack = useCallback(() => {\n if (!store.prevDomain()) {\n store.goBack();\n }\n }, [store]);\n\n return {\n matrix,\n domain: activeDomain,\n selectedDomains: effectiveDomains,\n selections: store.domainSelections[activeDomain] || {},\n allSelections,\n showLabels: store.showLabels,\n expertMode: store.expertMode,\n parentDomainSelections,\n installedSkillIds,\n onToggle,\n onToggleLabels: store.toggleShowLabels,\n onContinue,\n onBack,\n };\n}\n"],"mappings":"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","names":["useCallback","useCallback"]}
|