@agents-inc/cli 0.72.0 → 0.74.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 +36 -0
- package/dist/{chunk-ZEJIEC2A.js → chunk-4CRWKTNQ.js} +66 -261
- package/dist/chunk-4CRWKTNQ.js.map +1 -0
- package/dist/{chunk-V2XIWRHP.js → chunk-ANUYSHQA.js} +6 -7
- package/dist/chunk-ANUYSHQA.js.map +1 -0
- package/dist/{chunk-URAXGHF2.js → chunk-B7KVPY3Z.js} +20 -15
- package/dist/chunk-B7KVPY3Z.js.map +1 -0
- package/dist/{chunk-ZYUASJUN.js → chunk-BH4LN7XV.js} +8 -6
- package/dist/chunk-BH4LN7XV.js.map +1 -0
- package/dist/{chunk-J4TVAB5H.js → chunk-BM5Y6LIC.js} +2 -2
- package/dist/{chunk-6YMW4HMX.js → chunk-DNPJ5GUK.js} +6 -6
- package/dist/chunk-DNPJ5GUK.js.map +1 -0
- package/dist/chunk-E74Q7GUE.js +5132 -0
- package/dist/chunk-E74Q7GUE.js.map +1 -0
- package/dist/chunk-EMX7PA2I.js +39 -0
- package/dist/chunk-EMX7PA2I.js.map +1 -0
- package/dist/chunk-GDUOOT3J.js +689 -0
- package/dist/chunk-GDUOOT3J.js.map +1 -0
- package/dist/{chunk-MGQVO357.js → chunk-IJLAVOKZ.js} +2 -2
- package/dist/chunk-IJLAVOKZ.js.map +1 -0
- package/dist/{chunk-G3LNIYZG.js → chunk-J5T7M2CS.js} +2 -2
- package/dist/{chunk-FKRYJOPC.js → chunk-J6SHWAS6.js} +5 -5
- package/dist/chunk-J6SHWAS6.js.map +1 -0
- package/dist/{chunk-RJOLQ7EK.js → chunk-JWZLVWTX.js} +4 -4
- package/dist/{chunk-CKPJTMNC.js → chunk-KSMT5FVM.js} +4 -4
- package/dist/chunk-KSMT5FVM.js.map +1 -0
- package/dist/{chunk-OODTDGEM.js → chunk-KTF5RKKP.js} +6 -6
- package/dist/{chunk-SEAL43IR.js → chunk-NTVY4G35.js} +3 -3
- package/dist/{chunk-52THXN5G.js → chunk-NUJHWYCR.js} +2 -2
- package/dist/{chunk-HJVWBSLM.js → chunk-QJUPZPXO.js} +4 -4
- package/dist/chunk-QJUPZPXO.js.map +1 -0
- package/dist/{chunk-F43WGOGN.js → chunk-RRBWNEG3.js} +2 -2
- package/dist/chunk-RRBWNEG3.js.map +1 -0
- package/dist/chunk-SRIH4U5Y.js +159 -0
- package/dist/chunk-SRIH4U5Y.js.map +1 -0
- package/dist/{chunk-Q3YMO5YG.js → chunk-TNSVPZHP.js} +20 -2
- package/dist/chunk-TNSVPZHP.js.map +1 -0
- package/dist/{chunk-UQTG4ZBA.js → chunk-UFAP6GHD.js} +18 -20
- package/dist/chunk-UFAP6GHD.js.map +1 -0
- package/dist/{chunk-WWHDP5CP.js → chunk-V5HR77EY.js} +94 -13
- package/dist/chunk-V5HR77EY.js.map +1 -0
- package/dist/{chunk-ZFRALAK5.js → chunk-VOYGRNLS.js} +4 -5
- package/dist/chunk-VOYGRNLS.js.map +1 -0
- package/dist/{chunk-LM5YQUBR.js → chunk-WQRFVEAA.js} +6 -6
- package/dist/{chunk-LBTW5HSY.js → chunk-XP7BXHFG.js} +11 -11
- package/dist/chunk-XP7BXHFG.js.map +1 -0
- package/dist/{chunk-AHZ34QVK.js → chunk-ZCJ4YYWL.js} +40 -35
- package/dist/chunk-ZCJ4YYWL.js.map +1 -0
- package/dist/{chunk-HMJGSAKV.js → chunk-ZLMKEYDF.js} +2514 -2687
- package/dist/chunk-ZLMKEYDF.js.map +1 -0
- package/dist/{chunk-3SLO2QPW.js → chunk-ZO7C5WMJ.js} +12 -14
- package/dist/chunk-ZO7C5WMJ.js.map +1 -0
- package/dist/commands/build/marketplace.js +4 -3
- package/dist/commands/build/marketplace.js.map +1 -1
- package/dist/commands/build/plugins.js +8 -7
- package/dist/commands/build/plugins.js.map +1 -1
- package/dist/commands/build/stack.js +8 -7
- package/dist/commands/build/stack.js.map +1 -1
- package/dist/commands/compile.js +13 -9
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/config/index.js +8 -7
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/config/path.js +7 -6
- package/dist/commands/config/path.js.map +1 -1
- package/dist/commands/config/show.js +8 -7
- package/dist/commands/diff.js +7 -6
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +12 -13
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +32 -36
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +15 -13
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/import/skill.js +7 -6
- package/dist/commands/import/skill.js.map +1 -1
- package/dist/commands/info.js +11 -10
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.js +27 -26
- package/dist/commands/list.js +7 -6
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/new/agent.js +8 -7
- package/dist/commands/new/agent.js.map +1 -1
- package/dist/commands/new/marketplace.js +11 -14
- package/dist/commands/new/marketplace.js.map +1 -1
- package/dist/commands/new/skill.js +8 -7
- package/dist/commands/outdated.js +7 -6
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/search.js +8 -9
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/uninstall.js +10 -7
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +9 -9
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.js +15 -17
- package/dist/commands/validate.js.map +1 -1
- package/dist/components/wizard/category-grid.js +2 -2
- package/dist/components/wizard/category-grid.test.js +16 -65
- package/dist/components/wizard/category-grid.test.js.map +1 -1
- package/dist/components/wizard/domain-selection.js +9 -8
- package/dist/components/wizard/source-grid.js +4 -4
- package/dist/components/wizard/source-grid.test.js +18 -16
- package/dist/components/wizard/source-grid.test.js.map +1 -1
- package/dist/components/wizard/stack-selection.js +8 -7
- package/dist/components/wizard/step-agents.js +9 -8
- package/dist/components/wizard/step-agents.test.js +14 -13
- package/dist/components/wizard/step-agents.test.js.map +1 -1
- package/dist/components/wizard/step-build.js +10 -9
- package/dist/components/wizard/step-build.test.js +16 -15
- package/dist/components/wizard/step-build.test.js.map +1 -1
- package/dist/components/wizard/step-confirm.js +5 -4
- package/dist/components/wizard/step-confirm.test.js +10 -9
- package/dist/components/wizard/step-confirm.test.js.map +1 -1
- package/dist/components/wizard/step-settings.js +8 -7
- package/dist/components/wizard/step-settings.test.js +11 -10
- package/dist/components/wizard/step-settings.test.js.map +1 -1
- package/dist/components/wizard/step-sources.js +13 -12
- package/dist/components/wizard/step-sources.test.js +18 -17
- package/dist/components/wizard/step-sources.test.js.map +1 -1
- package/dist/components/wizard/step-stack.js +11 -10
- package/dist/components/wizard/step-stack.test.js +15 -14
- package/dist/components/wizard/step-stack.test.js.map +1 -1
- package/dist/components/wizard/wizard-layout.js +8 -7
- package/dist/components/wizard/wizard.js +25 -24
- package/dist/hooks/init.js +27 -26
- package/dist/hooks/init.js.map +1 -1
- package/dist/{loader-KVKSTKWX.js → loader-NHUCFMFQ.js} +4 -3
- package/dist/{source-loader-65IAJPNV.js → source-loader-RTG42MWG.js} +7 -6
- package/dist/source-manager-NCOFHYHD.js +20 -0
- package/dist/stores/wizard-store.js +7 -6
- package/dist/stores/wizard-store.test.js +29 -28
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +1 -1
- package/src/schemas/custom-metadata.schema.json +81 -0
- package/src/schemas/metadata.schema.json +127 -41
- package/src/schemas/stacks.schema.json +3 -45
- package/dist/chunk-3SLO2QPW.js.map +0 -1
- package/dist/chunk-6YMW4HMX.js.map +0 -1
- package/dist/chunk-AHZ34QVK.js.map +0 -1
- package/dist/chunk-BKL3DF2Q.js +0 -45
- package/dist/chunk-BKL3DF2Q.js.map +0 -1
- package/dist/chunk-CKPJTMNC.js.map +0 -1
- package/dist/chunk-D7FEORKC.js +0 -253
- package/dist/chunk-D7FEORKC.js.map +0 -1
- package/dist/chunk-F43WGOGN.js.map +0 -1
- package/dist/chunk-FKRYJOPC.js.map +0 -1
- package/dist/chunk-HJVWBSLM.js.map +0 -1
- package/dist/chunk-HMJGSAKV.js.map +0 -1
- package/dist/chunk-LBTW5HSY.js.map +0 -1
- package/dist/chunk-MGQVO357.js.map +0 -1
- package/dist/chunk-Q3YMO5YG.js.map +0 -1
- package/dist/chunk-T4EXUIBY.js +0 -19
- package/dist/chunk-T4EXUIBY.js.map +0 -1
- package/dist/chunk-UQTG4ZBA.js.map +0 -1
- package/dist/chunk-URAXGHF2.js.map +0 -1
- package/dist/chunk-V2XIWRHP.js.map +0 -1
- package/dist/chunk-WWHDP5CP.js.map +0 -1
- package/dist/chunk-ZEJIEC2A.js.map +0 -1
- package/dist/chunk-ZFRALAK5.js.map +0 -1
- package/dist/chunk-ZYUASJUN.js.map +0 -1
- package/dist/source-manager-LJH225GA.js +0 -19
- package/dist/stores/matrix-store.js +0 -15
- package/dist/stores/matrix-store.js.map +0 -1
- package/dist/stores/matrix-store.test.js +0 -127
- package/dist/stores/matrix-store.test.js.map +0 -1
- /package/dist/{chunk-J4TVAB5H.js.map → chunk-BM5Y6LIC.js.map} +0 -0
- /package/dist/{chunk-G3LNIYZG.js.map → chunk-J5T7M2CS.js.map} +0 -0
- /package/dist/{chunk-RJOLQ7EK.js.map → chunk-JWZLVWTX.js.map} +0 -0
- /package/dist/{chunk-OODTDGEM.js.map → chunk-KTF5RKKP.js.map} +0 -0
- /package/dist/{chunk-SEAL43IR.js.map → chunk-NTVY4G35.js.map} +0 -0
- /package/dist/{chunk-52THXN5G.js.map → chunk-NUJHWYCR.js.map} +0 -0
- /package/dist/{chunk-LM5YQUBR.js.map → chunk-WQRFVEAA.js.map} +0 -0
- /package/dist/{loader-KVKSTKWX.js.map → loader-NHUCFMFQ.js.map} +0 -0
- /package/dist/{source-loader-65IAJPNV.js.map → source-loader-RTG42MWG.js.map} +0 -0
- /package/dist/{source-manager-LJH225GA.js.map → source-manager-NCOFHYHD.js.map} +0 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-DHET7RCE.js";
|
|
5
|
+
|
|
6
|
+
// src/cli/types/generated/source-types.ts
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
var SKILL_SLUGS = [
|
|
9
|
+
"angular-standalone",
|
|
10
|
+
"anti-over-engineering",
|
|
11
|
+
"api-performance",
|
|
12
|
+
"auth-security",
|
|
13
|
+
"axiom-pino-sentry",
|
|
14
|
+
"better-auth-drizzle-hono",
|
|
15
|
+
"cli-commander",
|
|
16
|
+
"cli-reviewing",
|
|
17
|
+
"context-management",
|
|
18
|
+
"css-animations",
|
|
19
|
+
"cva",
|
|
20
|
+
"cypress-e2e",
|
|
21
|
+
"date-fns",
|
|
22
|
+
"drizzle",
|
|
23
|
+
"error-boundaries",
|
|
24
|
+
"expo",
|
|
25
|
+
"express",
|
|
26
|
+
"fastify",
|
|
27
|
+
"file-upload-patterns",
|
|
28
|
+
"framer-motion",
|
|
29
|
+
"github-actions",
|
|
30
|
+
"graphql-apollo",
|
|
31
|
+
"graphql-urql",
|
|
32
|
+
"hono",
|
|
33
|
+
"image-handling",
|
|
34
|
+
"improvement-protocol",
|
|
35
|
+
"investigation-requirements",
|
|
36
|
+
"jotai",
|
|
37
|
+
"mobx",
|
|
38
|
+
"msw",
|
|
39
|
+
"native-js",
|
|
40
|
+
"next-intl",
|
|
41
|
+
"nextjs-app-router",
|
|
42
|
+
"nextjs-server-actions",
|
|
43
|
+
"ngrx-signalstore",
|
|
44
|
+
"nuxt",
|
|
45
|
+
"oclif-ink",
|
|
46
|
+
"offline-first",
|
|
47
|
+
"pinia",
|
|
48
|
+
"playwright-e2e",
|
|
49
|
+
"posthog-analytics",
|
|
50
|
+
"posthog-flags",
|
|
51
|
+
"prisma",
|
|
52
|
+
"radix-ui",
|
|
53
|
+
"react",
|
|
54
|
+
"react-hook-form",
|
|
55
|
+
"react-intl",
|
|
56
|
+
"react-native",
|
|
57
|
+
"react-query",
|
|
58
|
+
"react-testing-library",
|
|
59
|
+
"redux-toolkit",
|
|
60
|
+
"remix",
|
|
61
|
+
"research-methodology",
|
|
62
|
+
"resend-react-email",
|
|
63
|
+
"result-types",
|
|
64
|
+
"reviewing",
|
|
65
|
+
"scss-modules",
|
|
66
|
+
"service-workers",
|
|
67
|
+
"setup-axiom-pino-sentry",
|
|
68
|
+
"setup-env",
|
|
69
|
+
"setup-posthog",
|
|
70
|
+
"setup-resend",
|
|
71
|
+
"setup-tooling",
|
|
72
|
+
"shadcn-ui",
|
|
73
|
+
"socket-io",
|
|
74
|
+
"solidjs",
|
|
75
|
+
"sse",
|
|
76
|
+
"storybook",
|
|
77
|
+
"success-criteria",
|
|
78
|
+
"swr",
|
|
79
|
+
"tailwind",
|
|
80
|
+
"tanstack-table",
|
|
81
|
+
"trpc",
|
|
82
|
+
"turborepo",
|
|
83
|
+
"vee-validate",
|
|
84
|
+
"view-transitions",
|
|
85
|
+
"vitest",
|
|
86
|
+
"vue-composition-api",
|
|
87
|
+
"vue-i18n",
|
|
88
|
+
"vue-test-utils",
|
|
89
|
+
"web-accessibility",
|
|
90
|
+
"web-performance",
|
|
91
|
+
"websockets",
|
|
92
|
+
"write-verification",
|
|
93
|
+
"zod-validation",
|
|
94
|
+
"zustand"
|
|
95
|
+
];
|
|
96
|
+
var CATEGORIES = [
|
|
97
|
+
"api-analytics",
|
|
98
|
+
"api-api",
|
|
99
|
+
"api-auth",
|
|
100
|
+
"api-database",
|
|
101
|
+
"api-email",
|
|
102
|
+
"api-observability",
|
|
103
|
+
"api-performance",
|
|
104
|
+
"cli-framework",
|
|
105
|
+
"mobile-framework",
|
|
106
|
+
"shared-ci-cd",
|
|
107
|
+
"shared-methodology",
|
|
108
|
+
"shared-monorepo",
|
|
109
|
+
"shared-research",
|
|
110
|
+
"shared-reviewing",
|
|
111
|
+
"shared-security",
|
|
112
|
+
"shared-tooling",
|
|
113
|
+
"web-accessibility",
|
|
114
|
+
"web-animation",
|
|
115
|
+
"web-client-state",
|
|
116
|
+
"web-error-handling",
|
|
117
|
+
"web-file-upload",
|
|
118
|
+
"web-files",
|
|
119
|
+
"web-forms",
|
|
120
|
+
"web-framework",
|
|
121
|
+
"web-i18n",
|
|
122
|
+
"web-mocking",
|
|
123
|
+
"web-performance",
|
|
124
|
+
"web-pwa",
|
|
125
|
+
"web-realtime",
|
|
126
|
+
"web-server-state",
|
|
127
|
+
"web-styling",
|
|
128
|
+
"web-testing",
|
|
129
|
+
"web-ui-components",
|
|
130
|
+
"web-utilities"
|
|
131
|
+
];
|
|
132
|
+
var DOMAINS = ["api", "cli", "mobile", "shared", "web"];
|
|
133
|
+
var AGENT_NAMES = [
|
|
134
|
+
"agent-summoner",
|
|
135
|
+
"api-developer",
|
|
136
|
+
"api-researcher",
|
|
137
|
+
"api-reviewer",
|
|
138
|
+
"cli-developer",
|
|
139
|
+
"cli-reviewer",
|
|
140
|
+
"cli-tester",
|
|
141
|
+
"documentor",
|
|
142
|
+
"pattern-scout",
|
|
143
|
+
"skill-summoner",
|
|
144
|
+
"web-architecture",
|
|
145
|
+
"web-developer",
|
|
146
|
+
"web-pattern-critique",
|
|
147
|
+
"web-pm",
|
|
148
|
+
"web-researcher",
|
|
149
|
+
"web-reviewer",
|
|
150
|
+
"web-tester"
|
|
151
|
+
];
|
|
152
|
+
|
|
153
|
+
export {
|
|
154
|
+
SKILL_SLUGS,
|
|
155
|
+
CATEGORIES,
|
|
156
|
+
DOMAINS,
|
|
157
|
+
AGENT_NAMES
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=chunk-SRIH4U5Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/types/generated/source-types.ts"],"sourcesContent":["// AUTO-GENERATED from skills source and agent metadata — do not edit manually\n// Run: bun run generate:types\n\n// ── Skill Map (slug → ID) ─────────────────────────────────────\n\nexport const SKILL_MAP = {\n \"angular-standalone\": \"web-framework-angular-standalone\",\n \"anti-over-engineering\": \"meta-methodology-anti-over-engineering\",\n \"api-performance\": \"api-performance-api-performance\",\n \"auth-security\": \"security-auth-security\",\n \"axiom-pino-sentry\": \"api-observability-axiom-pino-sentry\",\n \"better-auth-drizzle-hono\": \"api-auth-better-auth-drizzle-hono\",\n \"cli-commander\": \"cli-framework-cli-commander\",\n \"cli-reviewing\": \"meta-reviewing-cli-reviewing\",\n \"context-management\": \"meta-methodology-context-management\",\n \"css-animations\": \"web-animation-css-animations\",\n cva: \"web-styling-cva\",\n \"cypress-e2e\": \"web-testing-cypress-e2e\",\n \"date-fns\": \"web-utilities-date-fns\",\n drizzle: \"api-database-drizzle\",\n \"error-boundaries\": \"web-error-handling-error-boundaries\",\n expo: \"mobile-framework-expo\",\n express: \"api-framework-express\",\n fastify: \"api-framework-fastify\",\n \"file-upload-patterns\": \"web-files-file-upload-patterns\",\n \"framer-motion\": \"web-animation-framer-motion\",\n \"github-actions\": \"api-ci-cd-github-actions\",\n \"graphql-apollo\": \"web-data-fetching-graphql-apollo\",\n \"graphql-urql\": \"web-data-fetching-graphql-urql\",\n hono: \"api-framework-hono\",\n \"image-handling\": \"web-files-image-handling\",\n \"improvement-protocol\": \"meta-methodology-improvement-protocol\",\n \"investigation-requirements\": \"meta-methodology-investigation-requirements\",\n jotai: \"web-state-jotai\",\n mobx: \"web-state-mobx\",\n msw: \"web-mocks-msw\",\n \"native-js\": \"web-utilities-native-js\",\n \"next-intl\": \"web-i18n-next-intl\",\n \"nextjs-app-router\": \"web-framework-nextjs-app-router\",\n \"nextjs-server-actions\": \"web-framework-nextjs-server-actions\",\n \"ngrx-signalstore\": \"web-state-ngrx-signalstore\",\n nuxt: \"web-framework-nuxt\",\n \"oclif-ink\": \"cli-framework-oclif-ink\",\n \"offline-first\": \"web-pwa-offline-first\",\n pinia: \"web-state-pinia\",\n \"playwright-e2e\": \"web-testing-playwright-e2e\",\n \"posthog-analytics\": \"api-analytics-posthog-analytics\",\n \"posthog-flags\": \"api-flags-posthog-flags\",\n prisma: \"api-database-prisma\",\n \"radix-ui\": \"web-ui-radix-ui\",\n react: \"web-framework-react\",\n \"react-hook-form\": \"web-forms-react-hook-form\",\n \"react-intl\": \"web-i18n-react-intl\",\n \"react-native\": \"mobile-framework-react-native\",\n \"react-query\": \"web-server-state-react-query\",\n \"react-testing-library\": \"web-testing-react-testing-library\",\n \"redux-toolkit\": \"web-state-redux-toolkit\",\n remix: \"web-framework-remix\",\n \"research-methodology\": \"meta-research-research-methodology\",\n \"resend-react-email\": \"api-email-resend-react-email\",\n \"result-types\": \"web-error-handling-result-types\",\n reviewing: \"meta-reviewing-reviewing\",\n \"scss-modules\": \"web-styling-scss-modules\",\n \"service-workers\": \"web-pwa-service-workers\",\n \"setup-axiom-pino-sentry\": \"api-observability-setup-axiom-pino-sentry\",\n \"setup-env\": \"infra-env-setup-env\",\n \"setup-posthog\": \"api-analytics-setup-posthog\",\n \"setup-resend\": \"api-email-setup-resend\",\n \"setup-tooling\": \"infra-tooling-setup-tooling\",\n \"shadcn-ui\": \"web-ui-shadcn-ui\",\n \"socket-io\": \"web-realtime-socket-io\",\n solidjs: \"web-framework-solidjs\",\n sse: \"web-realtime-sse\",\n storybook: \"web-tooling-storybook\",\n \"success-criteria\": \"meta-methodology-success-criteria\",\n swr: \"web-data-fetching-swr\",\n tailwind: \"web-styling-tailwind\",\n \"tanstack-table\": \"web-ui-tanstack-table\",\n trpc: \"web-data-fetching-trpc\",\n turborepo: \"infra-monorepo-turborepo\",\n \"vee-validate\": \"web-forms-vee-validate\",\n \"view-transitions\": \"web-animation-view-transitions\",\n vitest: \"web-testing-vitest\",\n \"vue-composition-api\": \"web-framework-vue-composition-api\",\n \"vue-i18n\": \"web-i18n-vue-i18n\",\n \"vue-test-utils\": \"web-testing-vue-test-utils\",\n \"web-accessibility\": \"web-accessibility-web-accessibility\",\n \"web-performance\": \"web-performance-web-performance\",\n websockets: \"web-realtime-websockets\",\n \"write-verification\": \"meta-methodology-write-verification\",\n \"zod-validation\": \"web-forms-zod-validation\",\n zustand: \"web-state-zustand\",\n} as const;\n\nexport type SkillSlug = keyof typeof SKILL_MAP;\nexport type SkillId = (typeof SKILL_MAP)[SkillSlug];\n\n// Derived arrays for Zod enum compatibility\n// (z.enum() requires a readonly tuple, not Object.keys/values)\nexport const SKILL_SLUGS = [\n \"angular-standalone\",\n \"anti-over-engineering\",\n \"api-performance\",\n \"auth-security\",\n \"axiom-pino-sentry\",\n \"better-auth-drizzle-hono\",\n \"cli-commander\",\n \"cli-reviewing\",\n \"context-management\",\n \"css-animations\",\n \"cva\",\n \"cypress-e2e\",\n \"date-fns\",\n \"drizzle\",\n \"error-boundaries\",\n \"expo\",\n \"express\",\n \"fastify\",\n \"file-upload-patterns\",\n \"framer-motion\",\n \"github-actions\",\n \"graphql-apollo\",\n \"graphql-urql\",\n \"hono\",\n \"image-handling\",\n \"improvement-protocol\",\n \"investigation-requirements\",\n \"jotai\",\n \"mobx\",\n \"msw\",\n \"native-js\",\n \"next-intl\",\n \"nextjs-app-router\",\n \"nextjs-server-actions\",\n \"ngrx-signalstore\",\n \"nuxt\",\n \"oclif-ink\",\n \"offline-first\",\n \"pinia\",\n \"playwright-e2e\",\n \"posthog-analytics\",\n \"posthog-flags\",\n \"prisma\",\n \"radix-ui\",\n \"react\",\n \"react-hook-form\",\n \"react-intl\",\n \"react-native\",\n \"react-query\",\n \"react-testing-library\",\n \"redux-toolkit\",\n \"remix\",\n \"research-methodology\",\n \"resend-react-email\",\n \"result-types\",\n \"reviewing\",\n \"scss-modules\",\n \"service-workers\",\n \"setup-axiom-pino-sentry\",\n \"setup-env\",\n \"setup-posthog\",\n \"setup-resend\",\n \"setup-tooling\",\n \"shadcn-ui\",\n \"socket-io\",\n \"solidjs\",\n \"sse\",\n \"storybook\",\n \"success-criteria\",\n \"swr\",\n \"tailwind\",\n \"tanstack-table\",\n \"trpc\",\n \"turborepo\",\n \"vee-validate\",\n \"view-transitions\",\n \"vitest\",\n \"vue-composition-api\",\n \"vue-i18n\",\n \"vue-test-utils\",\n \"web-accessibility\",\n \"web-performance\",\n \"websockets\",\n \"write-verification\",\n \"zod-validation\",\n \"zustand\",\n] as const satisfies readonly SkillSlug[];\n\nexport const SKILL_IDS = [\n \"api-analytics-posthog-analytics\",\n \"api-analytics-setup-posthog\",\n \"api-auth-better-auth-drizzle-hono\",\n \"api-ci-cd-github-actions\",\n \"api-database-drizzle\",\n \"api-database-prisma\",\n \"api-email-resend-react-email\",\n \"api-email-setup-resend\",\n \"api-flags-posthog-flags\",\n \"api-framework-express\",\n \"api-framework-fastify\",\n \"api-framework-hono\",\n \"api-observability-axiom-pino-sentry\",\n \"api-observability-setup-axiom-pino-sentry\",\n \"api-performance-api-performance\",\n \"cli-framework-cli-commander\",\n \"cli-framework-oclif-ink\",\n \"infra-env-setup-env\",\n \"infra-monorepo-turborepo\",\n \"infra-tooling-setup-tooling\",\n \"meta-methodology-anti-over-engineering\",\n \"meta-methodology-context-management\",\n \"meta-methodology-improvement-protocol\",\n \"meta-methodology-investigation-requirements\",\n \"meta-methodology-success-criteria\",\n \"meta-methodology-write-verification\",\n \"meta-research-research-methodology\",\n \"meta-reviewing-cli-reviewing\",\n \"meta-reviewing-reviewing\",\n \"mobile-framework-expo\",\n \"mobile-framework-react-native\",\n \"security-auth-security\",\n \"web-accessibility-web-accessibility\",\n \"web-animation-css-animations\",\n \"web-animation-framer-motion\",\n \"web-animation-view-transitions\",\n \"web-data-fetching-graphql-apollo\",\n \"web-data-fetching-graphql-urql\",\n \"web-data-fetching-swr\",\n \"web-data-fetching-trpc\",\n \"web-error-handling-error-boundaries\",\n \"web-error-handling-result-types\",\n \"web-files-file-upload-patterns\",\n \"web-files-image-handling\",\n \"web-forms-react-hook-form\",\n \"web-forms-vee-validate\",\n \"web-forms-zod-validation\",\n \"web-framework-angular-standalone\",\n \"web-framework-nextjs-app-router\",\n \"web-framework-nextjs-server-actions\",\n \"web-framework-nuxt\",\n \"web-framework-react\",\n \"web-framework-remix\",\n \"web-framework-solidjs\",\n \"web-framework-vue-composition-api\",\n \"web-i18n-next-intl\",\n \"web-i18n-react-intl\",\n \"web-i18n-vue-i18n\",\n \"web-mocks-msw\",\n \"web-performance-web-performance\",\n \"web-pwa-offline-first\",\n \"web-pwa-service-workers\",\n \"web-realtime-socket-io\",\n \"web-realtime-sse\",\n \"web-realtime-websockets\",\n \"web-server-state-react-query\",\n \"web-state-jotai\",\n \"web-state-mobx\",\n \"web-state-ngrx-signalstore\",\n \"web-state-pinia\",\n \"web-state-redux-toolkit\",\n \"web-state-zustand\",\n \"web-styling-cva\",\n \"web-styling-scss-modules\",\n \"web-styling-tailwind\",\n \"web-testing-cypress-e2e\",\n \"web-testing-playwright-e2e\",\n \"web-testing-react-testing-library\",\n \"web-testing-vitest\",\n \"web-testing-vue-test-utils\",\n \"web-tooling-storybook\",\n \"web-ui-radix-ui\",\n \"web-ui-shadcn-ui\",\n \"web-ui-tanstack-table\",\n \"web-utilities-date-fns\",\n \"web-utilities-native-js\",\n] as const satisfies readonly SkillId[];\n\n// ── Categories ─────────────────────────────────────────────────\n\nexport const CATEGORIES = [\n \"api-analytics\",\n \"api-api\",\n \"api-auth\",\n \"api-database\",\n \"api-email\",\n \"api-observability\",\n \"api-performance\",\n \"cli-framework\",\n \"mobile-framework\",\n \"shared-ci-cd\",\n \"shared-methodology\",\n \"shared-monorepo\",\n \"shared-research\",\n \"shared-reviewing\",\n \"shared-security\",\n \"shared-tooling\",\n \"web-accessibility\",\n \"web-animation\",\n \"web-client-state\",\n \"web-error-handling\",\n \"web-file-upload\",\n \"web-files\",\n \"web-forms\",\n \"web-framework\",\n \"web-i18n\",\n \"web-mocking\",\n \"web-performance\",\n \"web-pwa\",\n \"web-realtime\",\n \"web-server-state\",\n \"web-styling\",\n \"web-testing\",\n \"web-ui-components\",\n \"web-utilities\",\n] as const;\n\nexport type Category = (typeof CATEGORIES)[number];\n\n// ── Domains ────────────────────────────────────────────────────\n\nexport const DOMAINS = [\"api\", \"cli\", \"mobile\", \"shared\", \"web\"] as const;\n\nexport type Domain = (typeof DOMAINS)[number];\n\n// ── Agent Names ────────────────────────────────────────────────\n\nexport const AGENT_NAMES = [\n \"agent-summoner\",\n \"api-developer\",\n \"api-researcher\",\n \"api-reviewer\",\n \"cli-developer\",\n \"cli-reviewer\",\n \"cli-tester\",\n \"documentor\",\n \"pattern-scout\",\n \"skill-summoner\",\n \"web-architecture\",\n \"web-developer\",\n \"web-pattern-critique\",\n \"web-pm\",\n \"web-researcher\",\n \"web-reviewer\",\n \"web-tester\",\n] as const;\n\nexport type AgentName = (typeof AGENT_NAMES)[number];\n"],"mappings":";;;;;;AAAA;AAmGO,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AA6FO,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAMO,IAAM,UAAU,CAAC,OAAO,OAAO,UAAU,UAAU,KAAK;AAMxD,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
TEST_CATEGORIES
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-V5HR77EY.js";
|
|
5
5
|
import {
|
|
6
6
|
init_esm_shims
|
|
7
7
|
} from "./chunk-DHET7RCE.js";
|
|
@@ -45,6 +45,24 @@ var FRAMEWORK_CATEGORY = {
|
|
|
45
45
|
description: "Web frameworks",
|
|
46
46
|
order: 1
|
|
47
47
|
};
|
|
48
|
+
var MULTI_SOURCE_CATEGORIES = {
|
|
49
|
+
"web-framework": { ...TEST_CATEGORIES.framework, exclusive: true, required: true },
|
|
50
|
+
"web-client-state": {
|
|
51
|
+
...TEST_CATEGORIES.clientState,
|
|
52
|
+
displayName: "State",
|
|
53
|
+
description: "State category",
|
|
54
|
+
order: 1
|
|
55
|
+
},
|
|
56
|
+
"web-styling": { ...TEST_CATEGORIES.styling, order: 2 },
|
|
57
|
+
"web-testing": { ...TEST_CATEGORIES.testing, exclusive: false, order: 3 },
|
|
58
|
+
"api-api": { ...TEST_CATEGORIES.api, exclusive: true, order: 4 },
|
|
59
|
+
"api-database": { ...TEST_CATEGORIES.database, order: 5 },
|
|
60
|
+
"shared-security": { ...TEST_CATEGORIES.security, order: 6 },
|
|
61
|
+
"web-animation": { ...TEST_CATEGORIES.animation, order: 7 },
|
|
62
|
+
"shared-methodology": { ...TEST_CATEGORIES.methodology, order: 8 },
|
|
63
|
+
"web-accessibility": { ...TEST_CATEGORIES.accessibility, order: 9 },
|
|
64
|
+
"api-observability": { ...TEST_CATEGORIES.observability, order: 10 }
|
|
65
|
+
};
|
|
48
66
|
|
|
49
67
|
export {
|
|
50
68
|
WEB_FRAMEWORK_CATEGORY,
|
|
@@ -55,4 +73,4 @@ export {
|
|
|
55
73
|
CLI_FRAMEWORK_CATEGORY,
|
|
56
74
|
FRAMEWORK_CATEGORY
|
|
57
75
|
};
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
76
|
+
//# sourceMappingURL=chunk-TNSVPZHP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/lib/__tests__/mock-data/mock-categories.ts"],"sourcesContent":["// Shared category definitions with domain overrides for test files.\n// Spreads from TEST_CATEGORIES in test-fixtures.ts.\n\nimport { TEST_CATEGORIES } from \"../test-fixtures.js\";\nimport type { Category, CategoryDefinition } from \"../../../types\";\n\n// ---------------------------------------------------------------------------\n// Categories from step-build.test.tsx (with domain overrides)\n// ---------------------------------------------------------------------------\n\nexport const WEB_FRAMEWORK_CATEGORY = {\n ...TEST_CATEGORIES.framework,\n required: true,\n};\n\nexport const WEB_STYLING_CATEGORY = {\n ...TEST_CATEGORIES.styling,\n required: true,\n order: 1,\n};\n\nexport const WEB_STATE_CATEGORY = {\n ...TEST_CATEGORIES.clientState,\n order: 2,\n};\n\nexport const API_FRAMEWORK_CATEGORY = {\n ...TEST_CATEGORIES.api,\n displayName: \"API Framework\",\n // Boundary cast: narrows string to Domain union\n domain: \"api\" as const,\n required: true,\n order: 0,\n};\n\nexport const API_DATABASE_CATEGORY = {\n ...TEST_CATEGORIES.database,\n // Boundary cast: narrows string to Domain union\n domain: \"api\" as const,\n order: 1,\n};\n\n// ---------------------------------------------------------------------------\n// Categories from matrix-loader.test.ts (basic, no domain override)\n// ---------------------------------------------------------------------------\n\nexport const CLI_FRAMEWORK_CATEGORY = {\n ...TEST_CATEGORIES.cliFramework,\n domain: \"cli\" as const,\n exclusive: false,\n};\n\nexport const FRAMEWORK_CATEGORY = {\n ...TEST_CATEGORIES.framework,\n description: \"Web frameworks\",\n order: 1,\n};\n\n// ---------------------------------------------------------------------------\n// Categories from skill-resolution.integration.test.ts (multi-source)\n// ---------------------------------------------------------------------------\n\nexport const MULTI_SOURCE_CATEGORIES = {\n \"web-framework\": { ...TEST_CATEGORIES.framework, exclusive: true, required: true },\n \"web-client-state\": {\n ...TEST_CATEGORIES.clientState,\n displayName: \"State\",\n description: \"State category\",\n order: 1,\n },\n \"web-styling\": { ...TEST_CATEGORIES.styling, order: 2 },\n \"web-testing\": { ...TEST_CATEGORIES.testing, exclusive: false, order: 3 },\n \"api-api\": { ...TEST_CATEGORIES.api, exclusive: true, order: 4 },\n \"api-database\": { ...TEST_CATEGORIES.database, order: 5 },\n \"shared-security\": { ...TEST_CATEGORIES.security, order: 6 },\n \"web-animation\": { ...TEST_CATEGORIES.animation, order: 7 },\n \"shared-methodology\": { ...TEST_CATEGORIES.methodology, order: 8 },\n \"web-accessibility\": { ...TEST_CATEGORIES.accessibility, order: 9 },\n \"api-observability\": { ...TEST_CATEGORIES.observability, order: 10 },\n} as Partial<Record<Category, CategoryDefinition>> as Record<Category, CategoryDefinition>;\n"],"mappings":";;;;;;;;;AAAA;AAUO,IAAM,yBAAyB;AAAA,EACpC,GAAG,gBAAgB;AAAA,EACnB,UAAU;AACZ;AAEO,IAAM,uBAAuB;AAAA,EAClC,GAAG,gBAAgB;AAAA,EACnB,UAAU;AAAA,EACV,OAAO;AACT;AAEO,IAAM,qBAAqB;AAAA,EAChC,GAAG,gBAAgB;AAAA,EACnB,OAAO;AACT;AAEO,IAAM,yBAAyB;AAAA,EACpC,GAAG,gBAAgB;AAAA,EACnB,aAAa;AAAA;AAAA,EAEb,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AACT;AAEO,IAAM,wBAAwB;AAAA,EACnC,GAAG,gBAAgB;AAAA;AAAA,EAEnB,QAAQ;AAAA,EACR,OAAO;AACT;AAMO,IAAM,yBAAyB;AAAA,EACpC,GAAG,gBAAgB;AAAA,EACnB,QAAQ;AAAA,EACR,WAAW;AACb;AAEO,IAAM,qBAAqB;AAAA,EAChC,GAAG,gBAAgB;AAAA,EACnB,aAAa;AAAA,EACb,OAAO;AACT;AAMO,IAAM,0BAA0B;AAAA,EACrC,iBAAiB,EAAE,GAAG,gBAAgB,WAAW,WAAW,MAAM,UAAU,KAAK;AAAA,EACjF,oBAAoB;AAAA,IAClB,GAAG,gBAAgB;AAAA,IACnB,aAAa;AAAA,IACb,aAAa;AAAA,IACb,OAAO;AAAA,EACT;AAAA,EACA,eAAe,EAAE,GAAG,gBAAgB,SAAS,OAAO,EAAE;AAAA,EACtD,eAAe,EAAE,GAAG,gBAAgB,SAAS,WAAW,OAAO,OAAO,EAAE;AAAA,EACxE,WAAW,EAAE,GAAG,gBAAgB,KAAK,WAAW,MAAM,OAAO,EAAE;AAAA,EAC/D,gBAAgB,EAAE,GAAG,gBAAgB,UAAU,OAAO,EAAE;AAAA,EACxD,mBAAmB,EAAE,GAAG,gBAAgB,UAAU,OAAO,EAAE;AAAA,EAC3D,iBAAiB,EAAE,GAAG,gBAAgB,WAAW,OAAO,EAAE;AAAA,EAC1D,sBAAsB,EAAE,GAAG,gBAAgB,aAAa,OAAO,EAAE;AAAA,EACjE,qBAAqB,EAAE,GAAG,gBAAgB,eAAe,OAAO,EAAE;AAAA,EAClE,qBAAqB,EAAE,GAAG,gBAAgB,eAAe,OAAO,GAAG;AACrE;","names":[]}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
WizardLayout
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-J5T7M2CS.js";
|
|
5
5
|
import {
|
|
6
6
|
StepSettings
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WQRFVEAA.js";
|
|
8
8
|
import {
|
|
9
9
|
StepSources
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-KTF5RKKP.js";
|
|
11
11
|
import {
|
|
12
12
|
StepStack
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-JWZLVWTX.js";
|
|
14
14
|
import {
|
|
15
15
|
StepAgents
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-XP7BXHFG.js";
|
|
17
17
|
import {
|
|
18
18
|
StepBuild
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-ZO7C5WMJ.js";
|
|
20
20
|
import {
|
|
21
21
|
StepConfirm
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-NUJHWYCR.js";
|
|
23
23
|
import {
|
|
24
24
|
getStackName
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-BH4LN7XV.js";
|
|
26
26
|
import {
|
|
27
27
|
useWizardStore
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-B7KVPY3Z.js";
|
|
29
29
|
import {
|
|
30
30
|
cliTheme
|
|
31
31
|
} from "./chunk-T5DJCIUP.js";
|
|
@@ -39,13 +39,11 @@ import {
|
|
|
39
39
|
import {
|
|
40
40
|
resolveAlias,
|
|
41
41
|
validateSelection
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-ZLMKEYDF.js";
|
|
43
43
|
import {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
warn
|
|
48
|
-
} from "./chunk-ZEJIEC2A.js";
|
|
44
|
+
findStack,
|
|
45
|
+
matrix
|
|
46
|
+
} from "./chunk-E74Q7GUE.js";
|
|
49
47
|
import {
|
|
50
48
|
CLI_COLORS
|
|
51
49
|
} from "./chunk-EGMQ3SXN.js";
|
|
@@ -114,7 +112,7 @@ function useBuildStepProps({
|
|
|
114
112
|
const onToggle = useCallback(
|
|
115
113
|
(categoryId, techId) => {
|
|
116
114
|
const domain = store.getCurrentDomain() || "web";
|
|
117
|
-
const cat =
|
|
115
|
+
const cat = matrix.categories[categoryId];
|
|
118
116
|
store.toggleTechnology(domain, categoryId, techId, cat?.exclusive ?? true);
|
|
119
117
|
},
|
|
120
118
|
[store]
|
|
@@ -232,11 +230,11 @@ var Wizard = ({
|
|
|
232
230
|
const handleComplete = useCallback2(() => {
|
|
233
231
|
let allSkills;
|
|
234
232
|
if (store.selectedStackId && store.stackAction === "defaults") {
|
|
235
|
-
const stack =
|
|
233
|
+
const stack = findStack(store.selectedStackId);
|
|
236
234
|
if (!stack) {
|
|
237
|
-
|
|
235
|
+
throw new Error(`Stack not found: ${store.selectedStackId}`);
|
|
238
236
|
}
|
|
239
|
-
allSkills = [...stack
|
|
237
|
+
allSkills = [...stack.allSkillIds];
|
|
240
238
|
} else {
|
|
241
239
|
const techNames = store.getAllSelectedTechnologies();
|
|
242
240
|
allSkills = techNames.map((tech) => resolveAlias(tech));
|
|
@@ -341,4 +339,4 @@ var Wizard = ({
|
|
|
341
339
|
export {
|
|
342
340
|
Wizard
|
|
343
341
|
};
|
|
344
|
-
//# sourceMappingURL=chunk-
|
|
342
|
+
//# sourceMappingURL=chunk-UFAP6GHD.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 { matrix, findStack } from \"../../lib/matrix/matrix-provider.js\";\nimport {\n HOTKEY_ACCEPT_DEFAULTS,\n HOTKEY_HELP,\n HOTKEY_SCOPE,\n HOTKEY_SETTINGS,\n isHotkey,\n} from \"./hotkeys.js\";\nimport type { AgentName, Domain, DomainSelections, SkillId } from \"../../types/index.js\";\nimport type { AgentScopeConfig, SkillConfig } from \"../../types/config.js\";\nimport { getStackName } from \"./utils.js\";\nimport type { StartupMessage } 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 skills: SkillConfig[];\n selectedAgents: AgentName[];\n agentConfigs: AgentScopeConfig[];\n selectedStackId: string | null;\n domainSelections: DomainSelections;\n selectedDomains: Domain[];\n cancelled: boolean;\n validation: {\n valid: boolean;\n errors: Array<{ message: string }>;\n warnings: Array<{ message: string }>;\n };\n};\n\ntype WizardProps = {\n onComplete: (result: WizardResultV2) => void;\n onCancel: () => void;\n version?: string;\n marketplaceLabel?: string;\n logo?: string;\n initialStep?: WizardStep;\n initialDomains?: Domain[];\n initialAgents?: AgentName[];\n installedSkillIds?: SkillId[];\n installedSkillConfigs?: SkillConfig[];\n installedAgentConfigs?: AgentScopeConfig[];\n lockedSkillIds?: SkillId[];\n lockedAgentNames?: AgentName[];\n projectDir?: string;\n startupMessages?: StartupMessage[];\n};\n\nconst MIN_TERMINAL_WIDTH = 80;\nconst MIN_TERMINAL_HEIGHT = 15;\n\nexport const Wizard: React.FC<WizardProps> = ({\n onComplete,\n onCancel,\n version,\n marketplaceLabel,\n logo,\n initialStep,\n initialDomains,\n initialAgents,\n installedSkillIds,\n installedSkillConfigs,\n installedAgentConfigs,\n lockedSkillIds,\n lockedAgentNames,\n projectDir,\n startupMessages,\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 initialStep,\n initialDomains,\n initialAgents,\n installedSkillIds,\n installedSkillConfigs,\n installedAgentConfigs,\n lockedSkillIds,\n lockedAgentNames,\n });\n\n const buildStepProps = useBuildStepProps({ store, installedSkillIds });\n\n useInput((input, key) => {\n // ESC is handled by step-settings.tsx's own useKeyboardNavigation hook\n if (store.showSettings) {\n if (isHotkey(input, HOTKEY_SETTINGS)) {\n store.toggleSettings();\n }\n return;\n }\n\n if (store.showHelp) {\n if (key.escape || isHotkey(input, HOTKEY_HELP)) {\n store.toggleHelp();\n }\n return;\n }\n\n if (isHotkey(input, HOTKEY_HELP)) {\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 (\n isHotkey(input, HOTKEY_ACCEPT_DEFAULTS) &&\n store.step === \"build\" &&\n store.selectedStackId\n ) {\n store.setStackAction(\"defaults\");\n store.setStep(\"confirm\");\n return;\n }\n\n if (isHotkey(input, HOTKEY_SCOPE) && store.step === \"build\") {\n const focused = store.focusedSkillId;\n if (focused) {\n store.toggleSkillScope(focused);\n }\n return;\n }\n\n if (isHotkey(input, HOTKEY_SCOPE) && store.step === \"agents\") {\n const focused = store.focusedAgentId;\n if (focused) {\n store.toggleAgentScope(focused);\n }\n return;\n }\n\n if (isHotkey(input, HOTKEY_SETTINGS) && store.step === \"sources\") {\n store.toggleSettings();\n return;\n }\n });\n\n const handleComplete = useCallback(() => {\n let allSkills: SkillId[];\n\n if (store.selectedStackId && store.stackAction === \"defaults\") {\n const stack = findStack(store.selectedStackId);\n if (!stack) {\n throw new Error(`Stack not found: ${store.selectedStackId}`);\n }\n allSkills = [...stack.allSkillIds];\n } else {\n const techNames = store.getAllSelectedTechnologies();\n allSkills = techNames.map((tech) => resolveAlias(tech));\n }\n\n const skillConfigs: SkillConfig[] = allSkills.map((id) => {\n const existing = store.skillConfigs.find((sc) => sc.id === id);\n return existing ?? { id, scope: \"global\" as const, source: \"local\" };\n });\n\n const validation = validateSelection(allSkills);\n\n const result: WizardResultV2 = {\n skills: skillConfigs,\n selectedAgents: store.selectedAgents,\n agentConfigs: store.agentConfigs,\n selectedStackId: store.selectedStackId,\n domainSelections: store.domainSelections,\n selectedDomains: store.selectedDomains,\n cancelled: false,\n validation,\n };\n\n onComplete(result);\n exit();\n }, [store, 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 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 projectDir={projectDir}\n onContinue={() => {\n if (!initialAgents?.length) {\n store.preselectAgentsFromDomains();\n }\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);\n const selectedSkills = store.getAllSelectedTechnologies();\n return (\n <StepConfirm\n onComplete={handleComplete}\n stackName={stackName}\n selectedDomains={store.selectedDomains}\n domainSelections={store.domainSelections}\n technologyCount={selectedSkills.length}\n skillCount={selectedSkills.length}\n agentCount={store.selectedAgents.length}\n skillConfigs={store.skillConfigs}\n agentConfigs={store.agentConfigs}\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\n version={version}\n marketplaceLabel={marketplaceLabel}\n logo={logo}\n startupMessages={startupMessages}\n >\n {renderStep()}\n </WizardLayout>\n </ThemeProvider>\n );\n};\n","import { useRef } from \"react\";\nimport { useWizardStore, type WizardStep } from \"../../stores/wizard-store.js\";\nimport type { AgentScopeConfig, SkillConfig } from \"../../types/config.js\";\nimport type { AgentName, Domain, SkillId } from \"../../types/index.js\";\n\ntype UseWizardInitializationOptions = {\n initialStep?: WizardStep;\n initialDomains?: Domain[];\n initialAgents?: AgentName[];\n installedSkillIds?: SkillId[];\n installedSkillConfigs?: SkillConfig[];\n installedAgentConfigs?: AgentScopeConfig[];\n lockedSkillIds?: SkillId[];\n lockedAgentNames?: AgentName[];\n};\n\n/**\n * Runs one-time wizard store initialization before the first render.\n * Populates step, approach, and skill selections from props.\n */\nexport function useWizardInitialization({\n initialStep,\n initialDomains,\n initialAgents,\n installedSkillIds,\n installedSkillConfigs,\n installedAgentConfigs,\n lockedSkillIds,\n lockedAgentNames,\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.getState().populateFromSkillIds(installedSkillIds, installedSkillConfigs);\n }\n useWizardStore.setState({ step: initialStep, approach: \"scratch\" });\n }\n // Restore saved domains from config, overriding the domains\n // derived by populateFromSkillIds\n if (initialDomains?.length) {\n useWizardStore.setState({ selectedDomains: initialDomains });\n }\n // Restore saved agents from config, overriding the default empty array\n if (initialAgents?.length) {\n useWizardStore.setState({ selectedAgents: initialAgents });\n }\n // Restore saved agent scope configs (project vs global)\n if (initialAgents?.length && installedAgentConfigs?.length) {\n useWizardStore.setState({ agentConfigs: installedAgentConfigs });\n }\n // Set locked IDs (D9: global items read-only in project context)\n if (lockedSkillIds?.length || lockedAgentNames?.length) {\n useWizardStore.setState({\n ...(lockedSkillIds?.length && { lockedSkillIds }),\n ...(lockedAgentNames?.length && { lockedAgentNames }),\n });\n }\n }\n}\n","import { useCallback } from \"react\";\nimport type { Domain, SkillId } from \"../../types/index.js\";\nimport type { WizardState } from \"../../stores/wizard-store.js\";\nimport { matrix } from \"../../lib/matrix/matrix-provider.js\";\nimport type { StepBuildProps } from \"../wizard/step-build.js\";\n\ntype UseBuildStepPropsOptions = {\n store: WizardState;\n installedSkillIds?: SkillId[];\n};\n\nexport function useBuildStepProps({\n store,\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\n const onToggle = useCallback(\n (categoryId: Parameters<StepBuildProps[\"onToggle\"]>[0], techId: SkillId) => {\n const domain: Domain = store.getCurrentDomain() || \"web\";\n const cat = matrix.categories[categoryId];\n store.toggleTechnology(domain, categoryId, techId, cat?.exclusive ?? true);\n },\n [store],\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 domain: activeDomain,\n selectedDomains: effectiveDomains,\n selections: store.domainSelections[activeDomain] || {},\n allSelections,\n showLabels: store.showLabels,\n installedSkillIds,\n onToggle,\n onToggleLabels: store.toggleShowLabels,\n onContinue,\n onBack,\n };\n}\n"],"mappings":"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","names":["useCallback","useCallback"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
typedEntries
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-EMX7PA2I.js";
|
|
5
5
|
import {
|
|
6
6
|
init_esm_shims
|
|
7
7
|
} from "./chunk-DHET7RCE.js";
|
|
@@ -16,13 +16,30 @@ import { fileURLToPath } from "url";
|
|
|
16
16
|
import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
|
|
17
17
|
import { run } from "@oclif/core";
|
|
18
18
|
import { createJiti } from "jiti";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
|
|
20
|
+
// src/cli/lib/__tests__/content-generators.ts
|
|
21
|
+
init_esm_shims();
|
|
22
|
+
function renderSkillMd(id, description, body) {
|
|
23
|
+
const desc = description ?? `${id} skill`;
|
|
24
|
+
const content = body ?? `# ${id}
|
|
25
|
+
|
|
26
|
+
${desc}`;
|
|
27
|
+
return `---
|
|
28
|
+
name: ${id}
|
|
29
|
+
description: ${desc}
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
${content}
|
|
33
|
+
`;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// src/cli/lib/__tests__/helpers.ts
|
|
37
|
+
var __filename2 = fileURLToPath(import.meta.url);
|
|
38
|
+
var __dirname2 = path.dirname(__filename2);
|
|
39
|
+
var CLI_ROOT = path.resolve(__dirname2, "../../../..");
|
|
40
|
+
var CONFIG_EXPORTS_PATH = path.resolve(__dirname2, "../../config-exports.ts");
|
|
23
41
|
function buildSkillConfigs(skillIds, overrides) {
|
|
24
42
|
return skillIds.map((id) => ({
|
|
25
|
-
// Boundary cast: test factory accepts arbitrary skill IDs for test isolation
|
|
26
43
|
id,
|
|
27
44
|
scope: overrides?.scope ?? "project",
|
|
28
45
|
source: overrides?.source ?? "local"
|
|
@@ -106,9 +123,33 @@ function getCanonicalSkillCategories() {
|
|
|
106
123
|
}
|
|
107
124
|
return _canonicalSkillCategories;
|
|
108
125
|
}
|
|
126
|
+
var DOMAIN_PREFIX_MAP = {
|
|
127
|
+
meta: "shared",
|
|
128
|
+
infra: "shared",
|
|
129
|
+
security: "shared"
|
|
130
|
+
};
|
|
131
|
+
function createTestSkill(id, description, overrides) {
|
|
132
|
+
const segments = id.split("-");
|
|
133
|
+
const rawPrefix = segments[0] ?? "web";
|
|
134
|
+
const domain = DOMAIN_PREFIX_MAP[rawPrefix] ?? rawPrefix;
|
|
135
|
+
const canonicalCategories = getCanonicalSkillCategories();
|
|
136
|
+
const category = canonicalCategories[id] ?? `${segments[0]}-${segments[1]}`;
|
|
137
|
+
const slug = segments.length >= 3 ? segments.slice(2).join("-") : id;
|
|
138
|
+
const displayName = slug.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
139
|
+
return {
|
|
140
|
+
id,
|
|
141
|
+
slug,
|
|
142
|
+
displayName,
|
|
143
|
+
description,
|
|
144
|
+
category,
|
|
145
|
+
author: "@test",
|
|
146
|
+
domain,
|
|
147
|
+
tags: [],
|
|
148
|
+
...overrides
|
|
149
|
+
};
|
|
150
|
+
}
|
|
109
151
|
function createMockSkill(id, overrides) {
|
|
110
|
-
const
|
|
111
|
-
const category = overrides?.category ?? getCanonicalSkillCategories()[skillId];
|
|
152
|
+
const category = overrides?.category ?? getCanonicalSkillCategories()[id];
|
|
112
153
|
if (!category) {
|
|
113
154
|
throw new Error(
|
|
114
155
|
`createMockSkill: "${id}" not in canonical registry \u2014 provide { category } in overrides`
|
|
@@ -118,7 +159,7 @@ function createMockSkill(id, overrides) {
|
|
|
118
159
|
const defaultSlug = segments.length >= 3 ? segments.slice(2).join("-") : id;
|
|
119
160
|
const defaultDisplayName = defaultSlug.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
120
161
|
return {
|
|
121
|
-
id
|
|
162
|
+
id,
|
|
122
163
|
slug: defaultSlug,
|
|
123
164
|
displayName: defaultDisplayName,
|
|
124
165
|
description: `${id} skill`,
|
|
@@ -131,12 +172,30 @@ function createMockSkill(id, overrides) {
|
|
|
131
172
|
alternatives: [],
|
|
132
173
|
discourages: [],
|
|
133
174
|
compatibleWith: [],
|
|
134
|
-
requiresSetup: [],
|
|
135
|
-
providesSetupFor: [],
|
|
136
175
|
path: `skills/${category}/${id}/`,
|
|
137
176
|
...overrides
|
|
138
177
|
};
|
|
139
178
|
}
|
|
179
|
+
function createMockExtractedSkill(id, overrides) {
|
|
180
|
+
const segments = id.split("-");
|
|
181
|
+
const domain = segments[0] ?? "web";
|
|
182
|
+
const category = segments[1] ?? "framework";
|
|
183
|
+
const name = segments.slice(2).join("-") || "skill";
|
|
184
|
+
const directoryPath = `${domain}/${category}/${name}`;
|
|
185
|
+
return {
|
|
186
|
+
id,
|
|
187
|
+
directoryPath,
|
|
188
|
+
description: `${id} skill`,
|
|
189
|
+
category: `${domain}-${category}`,
|
|
190
|
+
author: "@test",
|
|
191
|
+
tags: [],
|
|
192
|
+
path: `skills/${directoryPath}/`,
|
|
193
|
+
domain,
|
|
194
|
+
displayName: name,
|
|
195
|
+
slug: name,
|
|
196
|
+
...overrides
|
|
197
|
+
};
|
|
198
|
+
}
|
|
140
199
|
function createMockMatrix(skillsOrFirstSkill, ...rest) {
|
|
141
200
|
let skillsRecord;
|
|
142
201
|
let overrides;
|
|
@@ -181,6 +240,16 @@ function createMockMatrix(skillsOrFirstSkill, ...rest) {
|
|
|
181
240
|
...overrides
|
|
182
241
|
};
|
|
183
242
|
}
|
|
243
|
+
function createMockSkillEntry(id, preloaded = false, overrides) {
|
|
244
|
+
return {
|
|
245
|
+
id,
|
|
246
|
+
path: `skills/${id}/`,
|
|
247
|
+
description: `${id} skill`,
|
|
248
|
+
usage: `when working with ${id}`,
|
|
249
|
+
preloaded,
|
|
250
|
+
...overrides
|
|
251
|
+
};
|
|
252
|
+
}
|
|
184
253
|
function createMockCategory(id, displayName, overrides) {
|
|
185
254
|
return {
|
|
186
255
|
id,
|
|
@@ -225,6 +294,13 @@ function createMockCompileConfig(agents, overrides) {
|
|
|
225
294
|
...overrides
|
|
226
295
|
};
|
|
227
296
|
}
|
|
297
|
+
function testSkillToResolvedSkill(skill, overrides) {
|
|
298
|
+
return createMockSkill(skill.id, {
|
|
299
|
+
description: skill.description,
|
|
300
|
+
...skill.tags?.length ? { tags: skill.tags } : {},
|
|
301
|
+
...overrides
|
|
302
|
+
});
|
|
303
|
+
}
|
|
228
304
|
|
|
229
305
|
// src/cli/lib/__tests__/test-fixtures.ts
|
|
230
306
|
var SKILLS = {
|
|
@@ -272,14 +348,19 @@ var TEST_CATEGORIES = {
|
|
|
272
348
|
};
|
|
273
349
|
|
|
274
350
|
export {
|
|
351
|
+
renderSkillMd,
|
|
275
352
|
SKILLS,
|
|
276
353
|
TEST_CATEGORIES,
|
|
277
354
|
buildSkillConfigs,
|
|
355
|
+
createTestSkill,
|
|
278
356
|
createMockSkill,
|
|
357
|
+
createMockExtractedSkill,
|
|
279
358
|
createMockMatrix,
|
|
359
|
+
createMockSkillEntry,
|
|
280
360
|
createMockCategory,
|
|
281
361
|
createMockResolvedStack,
|
|
282
362
|
createMockMatrixConfig,
|
|
283
|
-
createMockCompileConfig
|
|
363
|
+
createMockCompileConfig,
|
|
364
|
+
testSkillToResolvedSkill
|
|
284
365
|
};
|
|
285
|
-
//# sourceMappingURL=chunk-
|
|
366
|
+
//# sourceMappingURL=chunk-V5HR77EY.js.map
|