agenv-cli 0.1.0 → 1.0.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.
Files changed (47) hide show
  1. package/dist/cli/commands/init.js +45 -22
  2. package/dist/cli/commands/init.js.map +1 -1
  3. package/dist/cli/index.js +1 -1
  4. package/dist/cli/prompts/init-flow.d.ts +22 -5
  5. package/dist/cli/prompts/init-flow.js +45 -22
  6. package/dist/cli/prompts/init-flow.js.map +1 -1
  7. package/dist/cli/prompts/sessions/auth.d.ts +1 -0
  8. package/dist/cli/prompts/sessions/auth.js +11 -0
  9. package/dist/cli/prompts/sessions/auth.js.map +1 -1
  10. package/dist/cli/prompts/sessions/data.d.ts +5 -0
  11. package/dist/cli/prompts/sessions/data.js +18 -0
  12. package/dist/cli/prompts/sessions/data.js.map +1 -1
  13. package/dist/cli/prompts/sessions/output.d.ts +6 -0
  14. package/dist/cli/prompts/sessions/output.js +33 -0
  15. package/dist/cli/prompts/sessions/output.js.map +1 -1
  16. package/dist/cli/prompts/sessions/project-type.d.ts +1 -0
  17. package/dist/cli/prompts/sessions/project-type.js +12 -1
  18. package/dist/cli/prompts/sessions/project-type.js.map +1 -1
  19. package/dist/cli/prompts/sessions/quality.d.ts +6 -0
  20. package/dist/cli/prompts/sessions/quality.js +20 -0
  21. package/dist/cli/prompts/sessions/quality.js.map +1 -1
  22. package/dist/cli/prompts/sessions/setup-depth.d.ts +1 -0
  23. package/dist/cli/prompts/sessions/setup-depth.js +11 -0
  24. package/dist/cli/prompts/sessions/setup-depth.js.map +1 -1
  25. package/dist/cli/prompts/sessions/stack.d.ts +1 -0
  26. package/dist/cli/prompts/sessions/stack.js +25 -0
  27. package/dist/cli/prompts/sessions/stack.js.map +1 -1
  28. package/dist/cli/prompts/sessions/tooling.d.ts +1 -0
  29. package/dist/cli/prompts/sessions/tooling.js +12 -0
  30. package/dist/cli/prompts/sessions/tooling.js.map +1 -1
  31. package/dist/cli/prompts/sessions/tools.d.ts +6 -0
  32. package/dist/cli/prompts/sessions/tools.js +18 -0
  33. package/dist/cli/prompts/sessions/tools.js.map +1 -1
  34. package/dist/cli/prompts/sessions/ui.d.ts +8 -0
  35. package/dist/cli/prompts/sessions/ui.js +42 -0
  36. package/dist/cli/prompts/sessions/ui.js.map +1 -1
  37. package/dist/manifest/defaults.js +42 -16
  38. package/dist/manifest/defaults.js.map +1 -1
  39. package/dist/manifest/schema.d.ts +38 -2
  40. package/dist/manifest/schema.js +14 -3
  41. package/dist/manifest/schema.js.map +1 -1
  42. package/dist/render/shared.js +12 -2
  43. package/dist/render/shared.js.map +1 -1
  44. package/dist/templates/registry.d.ts +2 -2
  45. package/dist/templates/registry.js +18 -0
  46. package/dist/templates/registry.js.map +1 -1
  47. package/package.json +2 -1
@@ -4,7 +4,8 @@ import { saveManifest } from "../../manifest/save.js";
4
4
  import { buildGenerationPlan } from "../../planner/build-plan.js";
5
5
  import { ADAPTER_TARGETS } from "../../planner/output-map.js";
6
6
  import { formatCommandOutput, formatTextBlock, parseCommaList } from "../../utils/format.js";
7
- const SUPPORTED_PROJECT_TYPES = ["dashboard", "web-app"];
7
+ import { runInitFlow } from "../prompts/init-flow.js";
8
+ const SUPPORTED_PROJECT_TYPES = ["dashboard", "web-app", "api-service"];
8
9
  function buildTargetFlags(targets) {
9
10
  const selectedTargets = parseCommaList(targets);
10
11
  if (selectedTargets.length === 0) {
@@ -31,39 +32,61 @@ export function registerInitCommand(program) {
31
32
  program
32
33
  .command("init")
33
34
  .description("Create a canonical ai-workspace manifest from repo inspection and defaults.")
34
- .option("--yes", "accept recommended defaults")
35
+ .option("--yes", "accept recommended defaults (skip interactive prompts)")
35
36
  .option("--dry-run", "preview without writing files")
36
37
  .option("--json", "emit machine-readable output")
37
38
  .option("--targets <list>", "comma-separated targets such as codex,claude,copilot,mcp")
38
- .option("--project-type <type>", "project type: dashboard or web-app", "dashboard")
39
+ .option("--project-type <type>", "project type: dashboard, web-app, or api-service", "dashboard")
39
40
  .option("--framework <value>", "override detected framework")
40
41
  .option("--setup-depth <value>", "recommended, semi-custom, or advanced")
41
42
  .option("--setup-mode <value>", "base, skills, agents, or full")
42
43
  .option("--config-scope <value>", "shared, local, or mixed")
43
44
  .option("--prompts <value>", "none, starter, master, or pack")
44
45
  .action(async (options) => {
45
- if (!SUPPORTED_PROJECT_TYPES.includes(options.projectType)) {
46
- throw new Error("Supported project types are 'dashboard' and 'web-app'.");
47
- }
48
- validateTargets(options.targets);
49
46
  const cwd = process.cwd();
50
47
  const inspection = await inspectRepo(cwd);
51
- const manifest = buildRecommendedManifest({
52
- name: inspection.projectName,
53
- framework: options.framework ?? inspection.framework ?? "react",
54
- projectType: options.projectType,
55
- ...compactObject({
56
- targets: buildTargetFlags(options.targets),
57
- setup: compactObject({
58
- depth: options.setupDepth,
59
- mode: options.setupMode,
60
- scope: options.configScope,
61
- }),
62
- generated: compactObject({
63
- prompts: options.prompts,
48
+ let manifest;
49
+ if (options.yes) {
50
+ // Non-interactive: use CLI flags + defaults
51
+ if (!SUPPORTED_PROJECT_TYPES.includes(options.projectType)) {
52
+ throw new Error("Supported project types are 'dashboard', 'web-app', and 'api-service'.");
53
+ }
54
+ validateTargets(options.targets);
55
+ manifest = buildRecommendedManifest({
56
+ name: inspection.projectName,
57
+ framework: options.framework ?? inspection.framework ?? "react",
58
+ projectType: options.projectType,
59
+ ...compactObject({
60
+ targets: buildTargetFlags(options.targets),
61
+ setup: compactObject({
62
+ depth: options.setupDepth,
63
+ mode: options.setupMode,
64
+ scope: options.configScope,
65
+ }),
66
+ generated: compactObject({
67
+ prompts: options.prompts,
68
+ }),
64
69
  }),
65
- }),
66
- });
70
+ });
71
+ }
72
+ else {
73
+ // Interactive: run prompt flow
74
+ const answers = await runInitFlow(options.framework ?? inspection.framework);
75
+ manifest = buildRecommendedManifest({
76
+ name: inspection.projectName,
77
+ framework: answers.framework,
78
+ projectType: answers.projectType,
79
+ targets: answers.targets,
80
+ setup: {
81
+ depth: answers.setupDepth,
82
+ mode: answers.output.mode,
83
+ scope: answers.output.scope,
84
+ },
85
+ generated: {
86
+ prompts: answers.output.prompts,
87
+ },
88
+ });
89
+ }
67
90
  const plan = buildGenerationPlan(manifest);
68
91
  const manifestPath = options.dryRun ? "ai-workspace.json" : await saveManifest(cwd, manifest);
69
92
  const text = formatTextBlock([
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -10,7 +10,7 @@ export function createCli() {
10
10
  program
11
11
  .name("agenv")
12
12
  .description("Bootstrap a portable, reviewable AI workspace for web development repositories.")
13
- .version("0.1.0");
13
+ .version("1.0.0");
14
14
  registerInitCommand(program);
15
15
  registerGenerateCommand(program);
16
16
  registerDiffCommand(program);
@@ -1,5 +1,22 @@
1
- export declare const initFlowSessions: {
2
- id: string;
3
- title: string;
4
- prompt: string;
5
- }[];
1
+ import type { UiAnswers } from "./sessions/ui.js";
2
+ import type { DataAnswers } from "./sessions/data.js";
3
+ import type { QualityAnswers } from "./sessions/quality.js";
4
+ import type { OutputAnswers } from "./sessions/output.js";
5
+ export type InitFlowAnswers = {
6
+ targets: {
7
+ copilot: boolean;
8
+ claude: boolean;
9
+ codex: boolean;
10
+ mcp: boolean;
11
+ };
12
+ projectType: "dashboard" | "web-app" | "api-service";
13
+ setupDepth: "recommended" | "semi-custom" | "advanced";
14
+ framework: "react" | "nextjs" | "vite-react" | "express" | "fastify" | "hono";
15
+ ui: UiAnswers | undefined;
16
+ data: DataAnswers | undefined;
17
+ authModel: "rbac" | "none" | "custom";
18
+ quality: QualityAnswers;
19
+ mcpPresets: string[];
20
+ output: OutputAnswers;
21
+ };
22
+ export declare function runInitFlow(detectedFramework?: string): Promise<InitFlowAnswers>;
@@ -1,23 +1,46 @@
1
- import { authSession } from "./sessions/auth.js";
2
- import { dataSession } from "./sessions/data.js";
3
- import { outputSession } from "./sessions/output.js";
4
- import { projectTypeSession } from "./sessions/project-type.js";
5
- import { qualitySession } from "./sessions/quality.js";
6
- import { setupDepthSession } from "./sessions/setup-depth.js";
7
- import { stackSession } from "./sessions/stack.js";
8
- import { toolsSession } from "./sessions/tools.js";
9
- import { toolingSession } from "./sessions/tooling.js";
10
- import { uiSession } from "./sessions/ui.js";
11
- export const initFlowSessions = [
12
- toolsSession,
13
- projectTypeSession,
14
- setupDepthSession,
15
- stackSession,
16
- uiSession,
17
- dataSession,
18
- authSession,
19
- qualitySession,
20
- toolingSession,
21
- outputSession,
22
- ];
1
+ import { runAuthPrompt } from "./sessions/auth.js";
2
+ import { runDataPrompt } from "./sessions/data.js";
3
+ import { runOutputPrompt } from "./sessions/output.js";
4
+ import { runProjectTypePrompt } from "./sessions/project-type.js";
5
+ import { runQualityPrompt } from "./sessions/quality.js";
6
+ import { runSetupDepthPrompt } from "./sessions/setup-depth.js";
7
+ import { runStackPrompt } from "./sessions/stack.js";
8
+ import { runToolsPrompt } from "./sessions/tools.js";
9
+ import { runToolingPrompt } from "./sessions/tooling.js";
10
+ import { runUiPrompt } from "./sessions/ui.js";
11
+ export async function runInitFlow(detectedFramework) {
12
+ console.log("\n🔧 agenv init — interactive setup\n");
13
+ const targets = await runToolsPrompt();
14
+ const projectType = await runProjectTypePrompt();
15
+ const setupDepth = await runSetupDepthPrompt();
16
+ const isApi = projectType === "api-service";
17
+ if (setupDepth === "recommended") {
18
+ return {
19
+ targets,
20
+ projectType,
21
+ setupDepth,
22
+ framework: isApi
23
+ ? "express"
24
+ : (detectedFramework ?? "react"),
25
+ ui: isApi ? undefined : { styling: "tailwind", components: "shadcn-ui", charts: "recharts", forms: "react-hook-form-zod", tables: "tanstack-table" },
26
+ data: isApi ? undefined : { dataFetching: "tanstack-query", state: "local-first" },
27
+ authModel: isApi ? "custom" : (projectType === "dashboard" ? "rbac" : "custom"),
28
+ quality: { testing: isApi ? ["vitest"] : ["vitest", "rtl"], accessibility: !isApi, responsive: !isApi },
29
+ mcpPresets: [],
30
+ output: { mode: "full", scope: "mixed", prompts: "master" },
31
+ };
32
+ }
33
+ const framework = await runStackPrompt(detectedFramework, projectType);
34
+ // UI and data prompts only apply to frontend project types
35
+ const ui = isApi ? undefined : await runUiPrompt();
36
+ const data = isApi ? undefined : await runDataPrompt();
37
+ const authModel = await runAuthPrompt();
38
+ const quality = await runQualityPrompt();
39
+ const mcpPresets = targets.mcp ? await runToolingPrompt() : [];
40
+ let output = { mode: "full", scope: "mixed", prompts: "master" };
41
+ if (setupDepth === "advanced") {
42
+ output = await runOutputPrompt();
43
+ }
44
+ return { targets, projectType, setupDepth, framework, ui, data, authModel, quality, mcpPresets, output };
45
+ }
23
46
  //# sourceMappingURL=init-flow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init-flow.js","sourceRoot":"","sources":["../../../src/cli/prompts/init-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY;IACZ,kBAAkB;IAClB,iBAAiB;IACjB,YAAY;IACZ,SAAS;IACT,WAAW;IACX,WAAW;IACX,cAAc;IACd,cAAc;IACd,aAAa;CACd,CAAC"}
1
+ {"version":3,"file":"init-flow.js","sourceRoot":"","sources":["../../../src/cli/prompts/init-flow.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,4 @@ export declare const authSession: {
3
3
  title: string;
4
4
  prompt: string;
5
5
  };
6
+ export declare function runAuthPrompt(): Promise<"rbac" | "none" | "custom">;
@@ -1,6 +1,17 @@
1
+ import { select } from "@inquirer/prompts";
1
2
  export const authSession = {
2
3
  id: "auth",
3
4
  title: "Auth and RBAC",
4
5
  prompt: "Capture role-based access control and protected UI requirements.",
5
6
  };
7
+ export async function runAuthPrompt() {
8
+ return select({
9
+ message: "Auth / access-control model?",
10
+ choices: [
11
+ { name: "Role-Based Access Control (RBAC)", value: "rbac" },
12
+ { name: "None", value: "none" },
13
+ { name: "Custom", value: "custom" },
14
+ ],
15
+ });
16
+ }
6
17
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/auth.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,kEAAkE;CAC3E,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,kEAAkE;CAC3E,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,MAAM,CAAC;QACZ,OAAO,EAAE,8BAA8B;QACvC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,kCAAkC,EAAE,KAAK,EAAE,MAAe,EAAE;YACpE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAe,EAAE;YACxC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAiB,EAAE;SAC7C;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -3,3 +3,8 @@ export declare const dataSession: {
3
3
  title: string;
4
4
  prompt: string;
5
5
  };
6
+ export type DataAnswers = {
7
+ dataFetching: "tanstack-query" | "custom";
8
+ state: "local-first" | "zustand";
9
+ };
10
+ export declare function runDataPrompt(): Promise<DataAnswers>;
@@ -1,6 +1,24 @@
1
+ import { select } from "@inquirer/prompts";
1
2
  export const dataSession = {
2
3
  id: "data",
3
4
  title: "Data Patterns",
4
5
  prompt: "Capture data fetching, caching, typing, and API client patterns.",
5
6
  };
7
+ export async function runDataPrompt() {
8
+ const dataFetching = await select({
9
+ message: "Data fetching strategy?",
10
+ choices: [
11
+ { name: "TanStack Query", value: "tanstack-query" },
12
+ { name: "Custom", value: "custom" },
13
+ ],
14
+ });
15
+ const state = await select({
16
+ message: "State management approach?",
17
+ choices: [
18
+ { name: "Local-first (React state + context)", value: "local-first" },
19
+ { name: "Zustand", value: "zustand" },
20
+ ],
21
+ });
22
+ return { dataFetching, state };
23
+ }
6
24
  //# sourceMappingURL=data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/data.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,kEAAkE;CAC3E,CAAC"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,kEAAkE;CAC3E,CAAC;AAOF,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC;QAChC,OAAO,EAAE,yBAAyB;QAClC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAyB,EAAE;YAC5D,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAiB,EAAE;SAC7C;KACF,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;QACzB,OAAO,EAAE,4BAA4B;QACrC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,aAAsB,EAAE;YAC9E,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAkB,EAAE;SAC/C;KACF,CAAC,CAAC;IAEH,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC"}
@@ -3,3 +3,9 @@ export declare const outputSession: {
3
3
  title: string;
4
4
  prompt: string;
5
5
  };
6
+ export type OutputAnswers = {
7
+ mode: "base" | "skills" | "agents" | "full";
8
+ scope: "shared" | "local" | "mixed";
9
+ prompts: "none" | "starter" | "master" | "pack";
10
+ };
11
+ export declare function runOutputPrompt(): Promise<OutputAnswers>;
@@ -1,6 +1,39 @@
1
+ import { select } from "@inquirer/prompts";
1
2
  export const outputSession = {
2
3
  id: "output",
3
4
  title: "Output Strategy",
4
5
  prompt: "Choose setup mode, prompt generation behavior, and shared vs local scope.",
5
6
  };
7
+ export async function runOutputPrompt() {
8
+ const mode = await select({
9
+ message: "Setup mode — which files should be generated?",
10
+ choices: [
11
+ { name: "Base — instructions only", value: "base" },
12
+ { name: "Skills — instructions + skill files", value: "skills" },
13
+ { name: "Agents — instructions + agent definitions", value: "agents" },
14
+ { name: "Full — everything", value: "full" },
15
+ ],
16
+ default: "full",
17
+ });
18
+ const scope = await select({
19
+ message: "Config scope — shared repo or local machine?",
20
+ choices: [
21
+ { name: "Shared — committed to the repo", value: "shared" },
22
+ { name: "Local — gitignored, per-developer", value: "local" },
23
+ { name: "Mixed — shared base with local overrides", value: "mixed" },
24
+ ],
25
+ default: "mixed",
26
+ });
27
+ const prompts = await select({
28
+ message: "Prompt generation level?",
29
+ choices: [
30
+ { name: "None — no prompt files", value: "none" },
31
+ { name: "Starter — basic prompts", value: "starter" },
32
+ { name: "Master — comprehensive prompts", value: "master" },
33
+ { name: "Pack — full prompt pack", value: "pack" },
34
+ ],
35
+ default: "master",
36
+ });
37
+ return { mode, scope, prompts };
38
+ }
6
39
  //# sourceMappingURL=output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/output.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,2EAA2E;CACpF,CAAC"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,2EAA2E;CACpF,CAAC;AAQF,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC;QACxB,OAAO,EAAE,+CAA+C;QACxD,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAe,EAAE;YAC5D,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,QAAiB,EAAE;YACzE,EAAE,IAAI,EAAE,2CAA2C,EAAE,KAAK,EAAE,QAAiB,EAAE;YAC/E,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAe,EAAE;SACtD;QACD,OAAO,EAAE,MAAe;KACzB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;QACzB,OAAO,EAAE,8CAA8C;QACvD,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,QAAiB,EAAE;YACpE,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,OAAgB,EAAE;YACtE,EAAE,IAAI,EAAE,0CAA0C,EAAE,KAAK,EAAE,OAAgB,EAAE;SAC9E;QACD,OAAO,EAAE,OAAgB;KAC1B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC;QAC3B,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAe,EAAE;YAC1D,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,SAAkB,EAAE;YAC9D,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,QAAiB,EAAE;YACpE,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAe,EAAE;SAC5D;QACD,OAAO,EAAE,QAAiB;KAC3B,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC"}
@@ -3,3 +3,4 @@ export declare const projectTypeSession: {
3
3
  title: string;
4
4
  prompt: string;
5
5
  };
6
+ export declare function runProjectTypePrompt(): Promise<"dashboard" | "web-app" | "api-service">;
@@ -1,6 +1,17 @@
1
+ import { select } from "@inquirer/prompts";
1
2
  export const projectTypeSession = {
2
3
  id: "project-type",
3
4
  title: "Project Type",
4
- prompt: "Confirm the project type. Current support includes dashboard and web-app repositories.",
5
+ prompt: "Confirm the project type. Current support includes dashboard, web-app, and api-service repositories.",
5
6
  };
7
+ export async function runProjectTypePrompt() {
8
+ return select({
9
+ message: "What type of project is this?",
10
+ choices: [
11
+ { name: "Dashboard", value: "dashboard" },
12
+ { name: "Web App", value: "web-app" },
13
+ { name: "API Service", value: "api-service" },
14
+ ],
15
+ });
16
+ }
6
17
  //# sourceMappingURL=project-type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-type.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/project-type.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,cAAc;IACrB,MAAM,EAAE,wFAAwF;CACjG,CAAC"}
1
+ {"version":3,"file":"project-type.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/project-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,cAAc;IACrB,MAAM,EAAE,sGAAsG;CAC/G,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,OAAO,MAAM,CAAC;QACZ,OAAO,EAAE,+BAA+B;QACxC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAoB,EAAE;YAClD,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAkB,EAAE;YAC9C,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAsB,EAAE;SACvD;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -3,3 +3,9 @@ export declare const qualitySession: {
3
3
  title: string;
4
4
  prompt: string;
5
5
  };
6
+ export type QualityAnswers = {
7
+ testing: ("vitest" | "rtl" | "playwright")[];
8
+ accessibility: boolean;
9
+ responsive: boolean;
10
+ };
11
+ export declare function runQualityPrompt(): Promise<QualityAnswers>;
@@ -1,6 +1,26 @@
1
+ import { checkbox, confirm } from "@inquirer/prompts";
1
2
  export const qualitySession = {
2
3
  id: "quality",
3
4
  title: "Quality Rules",
4
5
  prompt: "Capture testing, accessibility, responsive behavior, and review rules.",
5
6
  };
7
+ export async function runQualityPrompt() {
8
+ const testing = await checkbox({
9
+ message: "Which testing tools should be enforced?",
10
+ choices: [
11
+ { name: "Vitest", value: "vitest", checked: true },
12
+ { name: "React Testing Library", value: "rtl", checked: true },
13
+ { name: "Playwright", value: "playwright", checked: false },
14
+ ],
15
+ });
16
+ const accessibility = await confirm({
17
+ message: "Enforce accessibility rules?",
18
+ default: true,
19
+ });
20
+ const responsive = await confirm({
21
+ message: "Enforce responsive design rules?",
22
+ default: true,
23
+ });
24
+ return { testing: testing.length > 0 ? testing : ["vitest"], accessibility, responsive };
25
+ }
6
26
  //# sourceMappingURL=quality.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quality.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/quality.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,wEAAwE;CACjF,CAAC"}
1
+ {"version":3,"file":"quality.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/quality.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,wEAAwE;CACjF,CAAC;AAQF,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC;QAC7B,OAAO,EAAE,yCAAyC;QAClD,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAc,EAAE,OAAO,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAqB,EAAE,OAAO,EAAE,KAAK,EAAE;SACrE;KACF,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;QAClC,OAAO,EAAE,8BAA8B;QACvC,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC;QAC/B,OAAO,EAAE,kCAAkC;QAC3C,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAC3F,CAAC"}
@@ -3,3 +3,4 @@ export declare const setupDepthSession: {
3
3
  title: string;
4
4
  prompt: string;
5
5
  };
6
+ export declare function runSetupDepthPrompt(): Promise<"recommended" | "semi-custom" | "advanced">;
@@ -1,6 +1,17 @@
1
+ import { select } from "@inquirer/prompts";
1
2
  export const setupDepthSession = {
2
3
  id: "setup-depth",
3
4
  title: "Setup Depth",
4
5
  prompt: "Choose recommended, semi-custom, or advanced setup depth.",
5
6
  };
7
+ export async function runSetupDepthPrompt() {
8
+ return select({
9
+ message: "How much control do you want over the configuration?",
10
+ choices: [
11
+ { name: "Recommended — sensible defaults, minimal input", value: "recommended" },
12
+ { name: "Semi-custom — adjust key settings", value: "semi-custom" },
13
+ { name: "Advanced — full control over every option", value: "advanced" },
14
+ ],
15
+ });
16
+ }
6
17
  //# sourceMappingURL=setup-depth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-depth.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/setup-depth.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,2DAA2D;CACpE,CAAC"}
1
+ {"version":3,"file":"setup-depth.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/setup-depth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,2DAA2D;CACpE,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,OAAO,MAAM,CAAC;QACZ,OAAO,EAAE,sDAAsD;QAC/D,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,gDAAgD,EAAE,KAAK,EAAE,aAAsB,EAAE;YACzF,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,aAAsB,EAAE;YAC5E,EAAE,IAAI,EAAE,2CAA2C,EAAE,KAAK,EAAE,UAAmB,EAAE;SAClF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -3,3 +3,4 @@ export declare const stackSession: {
3
3
  title: string;
4
4
  prompt: string;
5
5
  };
6
+ export declare function runStackPrompt(detected?: string, projectType?: string): Promise<"react" | "nextjs" | "vite-react" | "express" | "fastify" | "hono">;
@@ -1,6 +1,31 @@
1
+ import { select } from "@inquirer/prompts";
1
2
  export const stackSession = {
2
3
  id: "stack",
3
4
  title: "Stack Profile",
4
5
  prompt: "Capture the framework and frontend stack choices for the repository.",
5
6
  };
7
+ const FRONTEND_FRAMEWORKS = [
8
+ { name: "React", value: "react" },
9
+ { name: "Next.js", value: "nextjs" },
10
+ { name: "Vite + React", value: "vite-react" },
11
+ ];
12
+ const BACKEND_FRAMEWORKS = [
13
+ { name: "Express", value: "express" },
14
+ { name: "Fastify", value: "fastify" },
15
+ { name: "Hono", value: "hono" },
16
+ ];
17
+ export async function runStackPrompt(detected, projectType) {
18
+ const isApi = projectType === "api-service";
19
+ const choices = isApi ? BACKEND_FRAMEWORKS : FRONTEND_FRAMEWORKS;
20
+ const defaultValue = isApi
21
+ ? "express"
22
+ : (detected ?? "react");
23
+ return select({
24
+ message: detected
25
+ ? `Detected framework: ${detected}. Confirm or change:`
26
+ : `Which framework does this project use?`,
27
+ choices,
28
+ default: defaultValue,
29
+ });
30
+ }
6
31
  //# sourceMappingURL=stack.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/stack.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,sEAAsE;CAC/E,CAAC"}
1
+ {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,sEAAsE;CAC/E,CAAC;AAEF,MAAM,mBAAmB,GAAG;IAC1B,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAgB,EAAE;IAC1C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAiB,EAAE;IAC7C,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,YAAqB,EAAE;CACvD,CAAC;AAEF,MAAM,kBAAkB,GAAG;IACzB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAkB,EAAE;IAC9C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAkB,EAAE;IAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAe,EAAE;CACzC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAiB,EACjB,WAAoB;IAEpB,MAAM,KAAK,GAAG,WAAW,KAAK,aAAa,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACjE,MAAM,YAAY,GAAG,KAAK;QACxB,CAAC,CAAE,SAAmB;QACtB,CAAC,CAAE,CAAC,QAAQ,IAAI,OAAO,CAAuC,CAAC;IAEjE,OAAO,MAAM,CAAC;QACZ,OAAO,EAAE,QAAQ;YACf,CAAC,CAAC,uBAAuB,QAAQ,sBAAsB;YACvD,CAAC,CAAC,wCAAwC;QAC5C,OAAO;QACP,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;AACL,CAAC"}
@@ -3,3 +3,4 @@ export declare const toolingSession: {
3
3
  title: string;
4
4
  prompt: string;
5
5
  };
6
+ export declare function runToolingPrompt(): Promise<string[]>;
@@ -1,6 +1,18 @@
1
+ import { checkbox } from "@inquirer/prompts";
1
2
  export const toolingSession = {
2
3
  id: "tooling",
3
4
  title: "Tooling and MCP",
4
5
  prompt: "Capture MCP presets, docs sources, shell rules, and repo tooling needs.",
5
6
  };
7
+ export async function runToolingPrompt() {
8
+ return checkbox({
9
+ message: "Include any MCP presets?",
10
+ choices: [
11
+ { name: "Filesystem", value: "filesystem" },
12
+ { name: "GitHub", value: "github" },
13
+ { name: "Postgres", value: "postgres" },
14
+ { name: "None", value: "__none__" },
15
+ ],
16
+ }).then((selected) => selected.filter((s) => s !== "__none__"));
17
+ }
6
18
  //# sourceMappingURL=tooling.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooling.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/tooling.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,yEAAyE;CAClF,CAAC"}
1
+ {"version":3,"file":"tooling.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/tooling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,yEAAyE;CAClF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;YACnC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;YACvC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;SACpC;KACF,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;AAClE,CAAC"}
@@ -3,3 +3,9 @@ export declare const toolsSession: {
3
3
  title: string;
4
4
  prompt: string;
5
5
  };
6
+ export declare function runToolsPrompt(): Promise<{
7
+ copilot: boolean;
8
+ claude: boolean;
9
+ codex: boolean;
10
+ mcp: boolean;
11
+ }>;
@@ -1,6 +1,24 @@
1
+ import { checkbox } from "@inquirer/prompts";
1
2
  export const toolsSession = {
2
3
  id: "tools",
3
4
  title: "Tool Selection",
4
5
  prompt: "Choose which AI tools should be configured for this repository.",
5
6
  };
7
+ export async function runToolsPrompt() {
8
+ const selected = await checkbox({
9
+ message: "Which AI tools should be configured?",
10
+ choices: [
11
+ { name: "GitHub Copilot", value: "copilot", checked: true },
12
+ { name: "Claude Code", value: "claude", checked: true },
13
+ { name: "OpenAI Codex", value: "codex", checked: true },
14
+ { name: "MCP Servers", value: "mcp", checked: false },
15
+ ],
16
+ });
17
+ return {
18
+ copilot: selected.includes("copilot"),
19
+ claude: selected.includes("claude"),
20
+ codex: selected.includes("codex"),
21
+ mcp: selected.includes("mcp"),
22
+ };
23
+ }
6
24
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/tools.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,gBAAgB;IACvB,MAAM,EAAE,iEAAiE;CAC1E,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,gBAAgB;IACvB,MAAM,EAAE,iEAAiE;CAC1E,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc;IAMlC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC;QAC9B,OAAO,EAAE,sCAAsC;QAC/C,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAc,EAAE,OAAO,EAAE,KAAK,EAAE;SAC/D;KACF,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACnC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QACjC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC9B,CAAC;AACJ,CAAC"}
@@ -3,3 +3,11 @@ export declare const uiSession: {
3
3
  title: string;
4
4
  prompt: string;
5
5
  };
6
+ export type UiAnswers = {
7
+ styling: "tailwind" | "custom";
8
+ components: "shadcn-ui" | "custom-design-system";
9
+ charts: "recharts" | "echarts" | "nivo" | "custom";
10
+ forms: "react-hook-form-zod" | "custom";
11
+ tables: "tanstack-table" | "ag-grid" | "custom";
12
+ };
13
+ export declare function runUiPrompt(): Promise<UiAnswers>;
@@ -1,6 +1,48 @@
1
+ import { select } from "@inquirer/prompts";
1
2
  export const uiSession = {
2
3
  id: "ui",
3
4
  title: "UI Conventions",
4
5
  prompt: "Capture component, layout, chart, and form conventions.",
5
6
  };
7
+ export async function runUiPrompt() {
8
+ const styling = await select({
9
+ message: "CSS / styling approach?",
10
+ choices: [
11
+ { name: "Tailwind CSS", value: "tailwind" },
12
+ { name: "Custom", value: "custom" },
13
+ ],
14
+ });
15
+ const components = await select({
16
+ message: "Component library?",
17
+ choices: [
18
+ { name: "shadcn/ui", value: "shadcn-ui" },
19
+ { name: "Custom design system", value: "custom-design-system" },
20
+ ],
21
+ });
22
+ const charts = await select({
23
+ message: "Charts library?",
24
+ choices: [
25
+ { name: "Recharts", value: "recharts" },
26
+ { name: "ECharts", value: "echarts" },
27
+ { name: "Nivo", value: "nivo" },
28
+ { name: "Custom", value: "custom" },
29
+ ],
30
+ });
31
+ const forms = await select({
32
+ message: "Forms library?",
33
+ choices: [
34
+ { name: "React Hook Form + Zod", value: "react-hook-form-zod" },
35
+ { name: "Custom", value: "custom" },
36
+ ],
37
+ });
38
+ const tables = await select({
39
+ message: "Tables library?",
40
+ choices: [
41
+ { name: "TanStack Table", value: "tanstack-table" },
42
+ { name: "AG Grid", value: "ag-grid" },
43
+ { name: "Custom", value: "custom" },
44
+ ],
45
+ });
46
+ return { styling, components, charts, forms, tables };
47
+ }
6
48
  //# sourceMappingURL=ui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/ui.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,EAAE,EAAE,IAAI;IACR,KAAK,EAAE,gBAAgB;IACvB,MAAM,EAAE,yDAAyD;CAClE,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../src/cli/prompts/sessions/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,EAAE,EAAE,IAAI;IACR,KAAK,EAAE,gBAAgB;IACvB,MAAM,EAAE,yDAAyD;CAClE,CAAC;AAUF,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC;QAC3B,OAAO,EAAE,yBAAyB;QAClC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,UAAmB,EAAE;YACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAiB,EAAE;SAC7C;KACF,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC;QAC9B,OAAO,EAAE,oBAAoB;QAC7B,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAoB,EAAE;YAClD,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAA+B,EAAE;SACzE;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;QAC1B,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAkB,EAAE;YAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAe,EAAE;YACxC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAiB,EAAE;SAC7C;KACF,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;QACzB,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,qBAA8B,EAAE;YACxE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAiB,EAAE;SAC7C;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;QAC1B,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAyB,EAAE;YAC5D,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAkB,EAAE;YAC9C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAiB,EAAE;SAC7C;KACF,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACxD,CAAC"}
@@ -8,6 +8,14 @@ function buildCodingStyle(projectType) {
8
8
  "Prefer reusable page sections and shared UI patterns over one-off code.",
9
9
  ];
10
10
  }
11
+ if (projectType === "api-service") {
12
+ return [
13
+ "Use TypeScript strict mode.",
14
+ "Validate all inputs at the boundary with Zod or equivalent.",
15
+ "Return consistent error shapes with proper HTTP status codes.",
16
+ "Prefer thin controllers that delegate to service functions.",
17
+ ];
18
+ }
11
19
  return [
12
20
  "Use TypeScript strict mode.",
13
21
  "Handle loading, empty, error, and success states explicitly.",
@@ -16,6 +24,28 @@ function buildCodingStyle(projectType) {
16
24
  }
17
25
  export function buildRecommendedManifest(options) {
18
26
  const projectType = options.projectType ?? "dashboard";
27
+ const projectTypeBlocks = projectType === "api-service"
28
+ ? {
29
+ apiService: {
30
+ apiStyle: "rest",
31
+ validation: "zod",
32
+ orm: "prisma",
33
+ testing: ["vitest", "supertest"],
34
+ auth: "jwt",
35
+ },
36
+ }
37
+ : {
38
+ dashboard: {
39
+ styling: "tailwind",
40
+ components: "shadcn-ui",
41
+ dataFetching: "tanstack-query",
42
+ tables: "tanstack-table",
43
+ charts: "recharts",
44
+ forms: "react-hook-form-zod",
45
+ testing: ["vitest", "rtl"],
46
+ state: "local-first",
47
+ },
48
+ };
19
49
  return manifestSchema.parse({
20
50
  schemaVersion: DEFAULT_SCHEMA_VERSION,
21
51
  project: {
@@ -37,27 +67,23 @@ export function buildRecommendedManifest(options) {
37
67
  mcp: false,
38
68
  ...options.targets,
39
69
  },
40
- dashboard: {
41
- styling: "tailwind",
42
- components: "shadcn-ui",
43
- dataFetching: "tanstack-query",
44
- tables: "tanstack-table",
45
- charts: "recharts",
46
- forms: "react-hook-form-zod",
47
- testing: ["vitest", "rtl"],
48
- state: "local-first",
49
- },
70
+ ...projectTypeBlocks,
50
71
  conventions: {
51
- accessibility: true,
52
- responsive: true,
72
+ accessibility: projectType !== "api-service",
73
+ responsive: projectType !== "api-service",
53
74
  authModel: projectType === "dashboard" ? "rbac" : "custom",
54
75
  },
55
76
  instructions: {
56
77
  codingStyle: buildCodingStyle(projectType),
57
- reviewRules: [
58
- "Prefer existing design-system components first.",
59
- "Do not introduce new UI libraries without approval.",
60
- ],
78
+ reviewRules: projectType === "api-service"
79
+ ? [
80
+ "Validate all request inputs at the handler level.",
81
+ "Do not expose internal error details in API responses.",
82
+ ]
83
+ : [
84
+ "Prefer existing design-system components first.",
85
+ "Do not introduce new UI libraries without approval.",
86
+ ],
61
87
  },
62
88
  generated: {
63
89
  prompts: "master",
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/manifest/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAIf,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAW1C,SAAS,gBAAgB,CAAC,WAAwB;IAChD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,6BAA6B;YAC7B,8DAA8D;YAC9D,yEAAyE;SAC1E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,6BAA6B;QAC7B,8DAA8D;QAC9D,4DAA4D;KAC7D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAmC;IAEnC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC;IAEvD,OAAO,cAAc,CAAC,KAAK,CAAC;QAC1B,aAAa,EAAE,sBAAsB;QACrC,OAAO,EAAE;YACP,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,IAAI;SACf;QACD,KAAK,EAAE;YACL,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,OAAO;YACd,GAAG,OAAO,CAAC,KAAK;SACjB;QACD,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,KAAK;YACV,GAAG,OAAO,CAAC,OAAO;SACnB;QACD,SAAS,EAAE;YACT,OAAO,EAAE,UAAU;YACnB,UAAU,EAAE,WAAW;YACvB,YAAY,EAAE,gBAAgB;YAC9B,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,qBAAqB;YAC5B,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;YAC1B,KAAK,EAAE,aAAa;SACrB;QACD,WAAW,EAAE;YACX,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SAC3D;QACD,YAAY,EAAE;YACZ,WAAW,EAAE,gBAAgB,CAAC,WAAW,CAAC;YAC1C,WAAW,EAAE;gBACX,iDAAiD;gBACjD,qDAAqD;aACtD;SACF;QACD,SAAS,EAAE;YACT,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,EAAE;YACd,GAAG,OAAO,CAAC,SAAS;SACrB;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/manifest/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAIf,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAW1C,SAAS,gBAAgB,CAAC,WAAwB;IAChD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,6BAA6B;YAC7B,8DAA8D;YAC9D,yEAAyE;SAC1E,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,KAAK,aAAa,EAAE,CAAC;QAClC,OAAO;YACL,6BAA6B;YAC7B,6DAA6D;YAC7D,+DAA+D;YAC/D,6DAA6D;SAC9D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,6BAA6B;QAC7B,8DAA8D;QAC9D,4DAA4D;KAC7D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAmC;IAEnC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC;IAEvD,MAAM,iBAAiB,GACrB,WAAW,KAAK,aAAa;QAC3B,CAAC,CAAC;YACE,UAAU,EAAE;gBACV,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,KAAK;gBACjB,GAAG,EAAE,QAAQ;gBACb,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;gBAChC,IAAI,EAAE,KAAK;aACZ;SACF;QACH,CAAC,CAAC;YACE,SAAS,EAAE;gBACT,OAAO,EAAE,UAAU;gBACnB,UAAU,EAAE,WAAW;gBACvB,YAAY,EAAE,gBAAgB;gBAC9B,MAAM,EAAE,gBAAgB;gBACxB,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,qBAAqB;gBAC5B,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAC1B,KAAK,EAAE,aAAa;aACrB;SACF,CAAC;IAER,OAAO,cAAc,CAAC,KAAK,CAAC;QAC1B,aAAa,EAAE,sBAAsB;QACrC,OAAO,EAAE;YACP,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,IAAI;SACf;QACD,KAAK,EAAE;YACL,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,OAAO;YACd,GAAG,OAAO,CAAC,KAAK;SACjB;QACD,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,KAAK;YACV,GAAG,OAAO,CAAC,OAAO;SACnB;QACD,GAAG,iBAAiB;QACpB,WAAW,EAAE;YACX,aAAa,EAAE,WAAW,KAAK,aAAa;YAC5C,UAAU,EAAE,WAAW,KAAK,aAAa;YACzC,SAAS,EAAE,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SAC3D;QACD,YAAY,EAAE;YACZ,WAAW,EAAE,gBAAgB,CAAC,WAAW,CAAC;YAC1C,WAAW,EACT,WAAW,KAAK,aAAa;gBAC3B,CAAC,CAAC;oBACE,mDAAmD;oBACnD,wDAAwD;iBACzD;gBACH,CAAC,CAAC;oBACE,iDAAiD;oBACjD,qDAAqD;iBACtD;SACR;QACD,SAAS,EAAE;YACT,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,EAAE;YACd,GAAG,OAAO,CAAC,SAAS;SACrB;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -3,10 +3,14 @@ export declare const frameworkSchema: z.ZodEnum<{
3
3
  react: "react";
4
4
  nextjs: "nextjs";
5
5
  "vite-react": "vite-react";
6
+ express: "express";
7
+ fastify: "fastify";
8
+ hono: "hono";
6
9
  }>;
7
10
  export declare const projectTypeSchema: z.ZodEnum<{
8
11
  dashboard: "dashboard";
9
12
  "web-app": "web-app";
13
+ "api-service": "api-service";
10
14
  }>;
11
15
  export declare const setupDepthSchema: z.ZodEnum<{
12
16
  recommended: "recommended";
@@ -37,11 +41,15 @@ export declare const manifestSchema: z.ZodObject<{
37
41
  type: z.ZodEnum<{
38
42
  dashboard: "dashboard";
39
43
  "web-app": "web-app";
44
+ "api-service": "api-service";
40
45
  }>;
41
46
  framework: z.ZodEnum<{
42
47
  react: "react";
43
48
  nextjs: "nextjs";
44
49
  "vite-react": "vite-react";
50
+ express: "express";
51
+ fastify: "fastify";
52
+ hono: "hono";
45
53
  }>;
46
54
  language: z.ZodLiteral<"ts">;
47
55
  }, z.core.$strict>;
@@ -69,7 +77,7 @@ export declare const manifestSchema: z.ZodObject<{
69
77
  codex: z.ZodBoolean;
70
78
  mcp: z.ZodBoolean;
71
79
  }, z.core.$strict>;
72
- dashboard: z.ZodObject<{
80
+ dashboard: z.ZodOptional<z.ZodObject<{
73
81
  styling: z.ZodEnum<{
74
82
  tailwind: "tailwind";
75
83
  custom: "custom";
@@ -106,7 +114,35 @@ export declare const manifestSchema: z.ZodObject<{
106
114
  "local-first": "local-first";
107
115
  zustand: "zustand";
108
116
  }>;
109
- }, z.core.$strict>;
117
+ }, z.core.$strict>>;
118
+ apiService: z.ZodOptional<z.ZodObject<{
119
+ apiStyle: z.ZodEnum<{
120
+ rest: "rest";
121
+ graphql: "graphql";
122
+ trpc: "trpc";
123
+ }>;
124
+ validation: z.ZodEnum<{
125
+ custom: "custom";
126
+ zod: "zod";
127
+ typebox: "typebox";
128
+ }>;
129
+ orm: z.ZodEnum<{
130
+ none: "none";
131
+ prisma: "prisma";
132
+ drizzle: "drizzle";
133
+ }>;
134
+ testing: z.ZodArray<z.ZodEnum<{
135
+ vitest: "vitest";
136
+ playwright: "playwright";
137
+ supertest: "supertest";
138
+ }>>;
139
+ auth: z.ZodEnum<{
140
+ none: "none";
141
+ custom: "custom";
142
+ jwt: "jwt";
143
+ session: "session";
144
+ }>;
145
+ }, z.core.$strict>>;
110
146
  conventions: z.ZodObject<{
111
147
  routing: z.ZodOptional<z.ZodString>;
112
148
  folderStructure: z.ZodOptional<z.ZodString>;
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- export const frameworkSchema = z.enum(["react", "nextjs", "vite-react"]);
3
- export const projectTypeSchema = z.enum(["dashboard", "web-app"]);
2
+ export const frameworkSchema = z.enum(["react", "nextjs", "vite-react", "express", "fastify", "hono"]);
3
+ export const projectTypeSchema = z.enum(["dashboard", "web-app", "api-service"]);
4
4
  export const setupDepthSchema = z.enum(["recommended", "semi-custom", "advanced"]);
5
5
  export const setupModeSchema = z.enum(["base", "skills", "agents", "full"]);
6
6
  export const setupScopeSchema = z.enum(["shared", "local", "mixed"]);
@@ -42,7 +42,18 @@ export const manifestSchema = z
42
42
  testing: z.array(z.enum(["vitest", "rtl", "playwright"])).min(1),
43
43
  state: z.enum(["local-first", "zustand"]),
44
44
  })
45
- .strict(),
45
+ .strict()
46
+ .optional(),
47
+ apiService: z
48
+ .object({
49
+ apiStyle: z.enum(["rest", "graphql", "trpc"]),
50
+ validation: z.enum(["zod", "typebox", "custom"]),
51
+ orm: z.enum(["prisma", "drizzle", "none"]),
52
+ testing: z.array(z.enum(["vitest", "supertest", "playwright"])).min(1),
53
+ auth: z.enum(["jwt", "session", "none", "custom"]),
54
+ })
55
+ .strict()
56
+ .optional(),
46
57
  conventions: z
47
58
  .object({
48
59
  routing: z.string().optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/manifest/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/manifest/schema.ts"],"names":[],"mappings":"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"}
@@ -244,12 +244,19 @@ const PROMPT_TEMPLATE_DEFINITIONS = {
244
244
  },
245
245
  };
246
246
  function describeProjectType(manifest) {
247
- return manifest.project.type === "web-app" ? "web app" : "dashboard";
247
+ if (manifest.project.type === "web-app")
248
+ return "web app";
249
+ if (manifest.project.type === "api-service")
250
+ return "API service";
251
+ return "dashboard";
248
252
  }
249
253
  function describeProjectFocus(manifest) {
250
254
  if (manifest.project.type === "web-app") {
251
255
  return "Favor cohesive user journeys, responsive layouts, and reusable UI patterns that scale beyond a single page.";
252
256
  }
257
+ if (manifest.project.type === "api-service") {
258
+ return "Favor clean request/response contracts, input validation at the boundary, consistent error shapes, and thin controllers delegating to well-tested service functions.";
259
+ }
253
260
  return "Favor operational clarity, dense-but-readable interfaces, and explicit handling for data-heavy states and permissions.";
254
261
  }
255
262
  function formatBullets(items) {
@@ -270,9 +277,12 @@ function buildProjectContext(manifest) {
270
277
  if (manifest.conventions.authModel) {
271
278
  context.push(`Auth model: ${manifest.conventions.authModel}`);
272
279
  }
273
- if (manifest.project.type === "dashboard") {
280
+ if (manifest.project.type === "dashboard" && manifest.dashboard) {
274
281
  context.push(`Styling: ${manifest.dashboard.styling}`, `Components: ${manifest.dashboard.components}`, `Data fetching: ${manifest.dashboard.dataFetching}`, `Tables: ${manifest.dashboard.tables}`, `Charts: ${manifest.dashboard.charts}`, `Forms: ${manifest.dashboard.forms}`, `State: ${manifest.dashboard.state}`, `Testing: ${manifest.dashboard.testing.join(", ")}`);
275
282
  }
283
+ if (manifest.project.type === "api-service" && manifest.apiService) {
284
+ context.push(`API style: ${manifest.apiService.apiStyle}`, `Validation: ${manifest.apiService.validation}`, `ORM: ${manifest.apiService.orm}`, `Auth: ${manifest.apiService.auth}`, `Testing: ${manifest.apiService.testing.join(", ")}`);
285
+ }
276
286
  return context;
277
287
  }
278
288
  function renderPromptBlock(manifest, goal, focusAreas, deliverables) {
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/render/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/render/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAWxD,MAAM,2BAA2B,GAA6C;IAC5E,kBAAkB,EAAE;QAClB,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,uHAAuH;QAC7H,OAAO,EAAE,4HAA4H;QACrI,UAAU,EAAE;YACV,mGAAmG;YACnG,sGAAsG;YACtG,+GAA+G;SAChH;QACD,YAAY,EAAE;YACZ,qEAAqE;YACrE,sFAAsF;YACtF,sEAAsE;SACvE;KACF;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,iHAAiH;QACvH,OAAO,EAAE,iHAAiH;QAC1H,UAAU,EAAE;YACV,+FAA+F;YAC/F,+EAA+E;YAC/E,kFAAkF;SACnF;QACD,YAAY,EAAE;YACZ,iFAAiF;YACjF,+EAA+E;YAC/E,iFAAiF;SAClF;KACF;IACD,oBAAoB,EAAE;QACpB,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,uGAAuG;QAC7G,OAAO,EAAE,yGAAyG;QAClH,UAAU,EAAE;YACV,uFAAuF;YACvF,iGAAiG;YACjG,6EAA6E;SAC9E;QACD,YAAY,EAAE;YACZ,2DAA2D;YAC3D,gFAAgF;YAChF,mGAAmG;SACpG;KACF;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,2FAA2F;QACjG,OAAO,EAAE,6GAA6G;QACtH,UAAU,EAAE;YACV,yFAAyF;YACzF,6FAA6F;YAC7F,mEAAmE;SACpE;QACD,YAAY,EAAE;YACZ,yEAAyE;YACzE,kFAAkF;YAClF,mFAAmF;SACpF;KACF;IACD,qBAAqB,EAAE;QACrB,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,4GAA4G;QAClH,OAAO,EAAE,4GAA4G;QACrH,UAAU,EAAE;YACV,0GAA0G;YAC1G,0FAA0F;YAC1F,4FAA4F;SAC7F;QACD,YAAY,EAAE;YACZ,yFAAyF;YACzF,mFAAmF;YACnF,2FAA2F;SAC5F;KACF;IACD,sBAAsB,EAAE;QACtB,KAAK,EAAE,sBAAsB;QAC7B,IAAI,EAAE,sGAAsG;QAC5G,OAAO,EAAE,oGAAoG;QAC7G,UAAU,EAAE;YACV,oGAAoG;YACpG,8FAA8F;YAC9F,iGAAiG;SAClG;QACD,YAAY,EAAE;YACZ,oEAAoE;YACpE,iFAAiF;YACjF,+EAA+E;SAChF;KACF;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,yGAAyG;QAC/G,OAAO,EAAE,iHAAiH;QAC1H,UAAU,EAAE;YACV,gGAAgG;YAChG,6FAA6F;YAC7F,gGAAgG;SACjG;QACD,YAAY,EAAE;YACZ,+EAA+E;YAC/E,iFAAiF;YACjF,8GAA8G;SAC/G;KACF;IACD,mCAAmC,EAAE;QACnC,KAAK,EAAE,yCAAyC;QAChD,IAAI,EAAE,0IAA0I;QAChJ,OAAO,EAAE,+JAA+J;QACxK,UAAU,EAAE;YACV,yHAAyH;YACzH,oGAAoG;YACpG,uHAAuH;SACxH;QACD,YAAY,EAAE;YACZ,iGAAiG;YACjG,sEAAsE;YACtE,4GAA4G;SAC7G;KACF;IACD,6CAA6C,EAAE;QAC7C,KAAK,EAAE,6CAA6C;QACpD,IAAI,EAAE,mKAAmK;QACzK,OAAO,EAAE,qJAAqJ;QAC9J,UAAU,EAAE;YACV,+GAA+G;YAC/G,kGAAkG;YAClG,8GAA8G;SAC/G;QACD,YAAY,EAAE;YACZ,gFAAgF;YAChF,qFAAqF;YACrF,+FAA+F;SAChG;KACF;IACD,uBAAuB,EAAE;QACvB,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,yHAAyH;QAC/H,OAAO,EAAE,0HAA0H;QACnI,UAAU,EAAE;YACV,6HAA6H;YAC7H,sIAAsI;YACtI,oGAAoG;SACrG;QACD,YAAY,EAAE;YACZ,wEAAwE;YACxE,2FAA2F;YAC3F,4FAA4F;SAC7F;KACF;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,kGAAkG;QACxG,OAAO,EAAE,kGAAkG;QAC3G,UAAU,EAAE;YACV,8EAA8E;YAC9E,gFAAgF;YAChF,kFAAkF;SACnF;QACD,YAAY,EAAE;YACZ,gFAAgF;YAChF,6DAA6D;YAC7D,yEAAyE;SAC1E;KACF;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,uGAAuG;QAC7G,OAAO,EAAE,+GAA+G;QACxH,UAAU,EAAE;YACV,oEAAoE;YACpE,uGAAuG;YACvG,oFAAoF;SACrF;QACD,YAAY,EAAE;YACZ,sEAAsE;YACtE,6DAA6D;YAC7D,qFAAqF;SACtF;KACF;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,wFAAwF;QAC9F,OAAO,EAAE,iHAAiH;QAC1H,UAAU,EAAE;YACV,gFAAgF;YAChF,sFAAsF;YACtF,yFAAyF;SAC1F;QACD,YAAY,EAAE;YACZ,yEAAyE;YACzE,sEAAsE;YACtE,sFAAsF;SACvF;KACF;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,wGAAwG;QAC9G,OAAO,EAAE,kHAAkH;QAC3H,UAAU,EAAE;YACV,wFAAwF;YACxF,yFAAyF;YACzF,4FAA4F;SAC7F;QACD,YAAY,EAAE;YACZ,qFAAqF;YACrF,uEAAuE;YACvE,sFAAsF;SACvF;KACF;IACD,cAAc,EAAE;QACd,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,uGAAuG;QAC7G,OAAO,EAAE,gHAAgH;QACzH,UAAU,EAAE;YACV,4EAA4E;YAC5E,4EAA4E;YAC5E,gFAAgF;SACjF;QACD,YAAY,EAAE;YACZ,gGAAgG;YAChG,gFAAgF;YAChF,iFAAiF;SAClF;KACF;IACD,aAAa,EAAE;QACb,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,gGAAgG;QACtG,OAAO,EAAE,qHAAqH;QAC9H,UAAU,EAAE;YACV,mGAAmG;YACnG,6EAA6E;YAC7E,gEAAgE;SACjE;QACD,YAAY,EAAE;YACZ,wEAAwE;YACxE,iGAAiG;YACjG,uGAAuG;SACxG;KACF;CACF,CAAC;AAEF,SAAS,mBAAmB,CAAC,QAAkB;IAC7C,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1D,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IAClE,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAkB;IAC9C,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,6GAA6G,CAAC;IACvH,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC5C,OAAO,sKAAsK,CAAC;IAChL,CAAC;IAED,OAAO,wHAAwH,CAAC;AAClI,CAAC;AAED,SAAS,aAAa,CAAC,KAAe;IACpC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAkB;IAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;SACpD,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAE7B,MAAM,OAAO,GAAG;QACd,YAAY,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE;QACnC,cAAc,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE;QAC1C,iBAAiB,mBAAmB,CAAC,QAAQ,CAAC,EAAE;QAChD,YAAY,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;QACjD,2BAA2B,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QAC9E,iCAAiC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;KAClF,CAAC;IAEF,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAChE,OAAO,CAAC,IAAI,CACV,YAAY,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,EACxC,eAAe,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,EAC9C,kBAAkB,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,EACnD,WAAW,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,EACtC,WAAW,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,EACtC,UAAU,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EACpC,UAAU,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EACpC,YAAY,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpD,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACnE,OAAO,CAAC,IAAI,CACV,cAAc,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAC5C,eAAe,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,EAC/C,QAAQ,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,EACjC,SAAS,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,EACnC,YAAY,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrD,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAkB,EAClB,IAAY,EACZ,UAAoB,EACpB,YAAsB;IAEtB,OAAO;QACL,SAAS;QACT,0BAA0B,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,mBAAmB,CAAC,QAAQ,CAAC,cAAc;QAC5H,EAAE;QACF,SAAS,IAAI,EAAE;QACf,EAAE;QACF,kBAAkB;QAClB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3D,EAAE;QACF,cAAc;QACd,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,EAAE;QACF,eAAe;QACf,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/D,EAAE;QACF,eAAe;QACf,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/D,EAAE;QACF,wBAAwB;QACxB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,KAAK;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAkB;IAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;SACpD,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO,8CAA8C,QAAQ,CAAC,OAAO,CAAC,IAAI,aAAa,QAAQ,CAAC,OAAO,CAAC,IAAI,kBAAkB,QAAQ,CAAC,OAAO,CAAC,SAAS,iBAAiB,QAAQ,CAAC,OAAO,CAAC,QAAQ,4BAA4B,QAAQ,CAAC,KAAK,CAAC,KAAK,aAAa,QAAQ,CAAC,KAAK,CAAC,IAAI,cAAc,QAAQ,CAAC,KAAK,CAAC,KAAK,qBAAqB,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1kB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAkB;IAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC;IAC7D,MAAM,IAAI,GAAG,WAAW;QACtB,CAAC,CAAC,uCAAuC,mBAAmB,CAAC,QAAQ,CAAC,gDAAgD;QACtH,CAAC,CAAC,gEAAgE,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1G,MAAM,UAAU,GAAG,WAAW;QAC5B,CAAC,CAAC;YACE,wEAAwE;YACxE,2FAA2F;YAC3F,2EAA2E;SAC5E;QACH,CAAC,CAAC;YACE,8EAA8E;YAC9E,gGAAgG;YAChG,yFAAyF;SAC1F,CAAC;IACN,MAAM,YAAY,GAAG,WAAW;QAC9B,CAAC,CAAC;YACE,mDAAmD;YACnD,0EAA0E;YAC1E,sDAAsD;SACvD;QACH,CAAC,CAAC;YACE,6EAA6E;YAC7E,qEAAqE;YACrE,qFAAqF;SACtF,CAAC;IAEN,OAAO,wRAAwR,oBAAoB,CAAC,QAAQ,CAAC,iCAAiC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC;AAC9Z,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAkB;IAC3C,MAAM,gBAAgB,GAAG;QACvB,cAAc;QACd,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,KAAK,MAAM;YACvC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,UAAU,KAAK,CAAC;YACtD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,MAAM,WAAW,GACf,QAAQ,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS;QACtC,CAAC,CAAC,mEAAmE;QACrE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,KAAK,QAAQ;YACvC,CAAC,CAAC,0GAA0G;YAC5G,CAAC,CAAC,+IAA+I,CAAC;IAExJ,OAAO,2CAA2C,QAAQ,CAAC,SAAS,CAAC,OAAO,OAAO,WAAW,gEAAgE,mBAAmB,CAAC,QAAQ,CAAC,oaAAoa,gBAAgB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,+aAA+a,CAAC;AACvlC,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAiB,EAAE,QAAkB;IACjE,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAE3D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,aAAa,GAAG,UAAU;aAC7B,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;aAChE,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,OAAO,KAAK,aAAa,uDAAuD,QAAQ,CAAC,OAAO,CAAC,IAAI,kCAAkC,iBAAiB,CACtJ,QAAQ,EACR,eAAe,aAAa,CAAC,WAAW,EAAE,wDAAwD,EAClG;YACE,uEAAuE;YACvE,mEAAmE;YACnE,4DAA4D;SAC7D,EACD;YACE,iDAAiD;YACjD,wCAAwC;YACxC,wCAAwC;SACzC,CACF,EAAE,CAAC;IACN,CAAC;IAED,OAAO,KAAK,UAAU,CAAC,KAAK,OAAO,UAAU,CAAC,OAAO,kBAAkB,UAAU,CAAC,IAAI,2BAA2B,oBAAoB,CAAC,QAAQ,CAAC,iCAAiC,iBAAiB,CAC/L,QAAQ,EACR,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,YAAY,CACxB,EAAE,CAAC;AACN,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,MAAM,WAAW,GACf,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QACxC,CAAC,CAAC,CAAC,4BAA4B,CAAC;QAChC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAC/B,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC,mBAAmB,CACtF,CAAC;IAER,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAiB,EAAE,QAAkB;IACpE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,mBAAmB;YACtB,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC;gBAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC;QACJ,KAAK,yBAAyB;YAC5B,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,mBAAmB,EAAE;gBAC9B,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC;QACJ,KAAK,yBAAyB;YAC5B,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC;gBACxC,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC;QACJ,KAAK,8BAA8B;YACjC,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC;gBACxC,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC;QACJ,KAAK,2BAA2B;YAC9B,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC;gBACpC,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC;QACJ,KAAK,cAAc;YACjB,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC;gBACnC,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC;QACJ;YACE,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC;gBAC7C,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC;IACN,CAAC;AACH,CAAC"}
@@ -1,8 +1,8 @@
1
1
  export type TemplateDefinition = {
2
2
  id: string;
3
3
  name: string;
4
- projectType: "dashboard" | "web-app";
5
- framework: "react" | "nextjs" | "vite-react";
4
+ projectType: "dashboard" | "web-app" | "api-service";
5
+ framework: "react" | "nextjs" | "vite-react" | "express" | "fastify" | "hono";
6
6
  setupDepth: "recommended" | "semi-custom";
7
7
  defaultTargets: string[];
8
8
  description: string;
@@ -44,5 +44,23 @@ export const TEMPLATE_REGISTRY = [
44
44
  defaultTargets: ["codex", "copilot", "claude", "mcp"],
45
45
  description: "Manual-friendly React web app starter with broader tool selection.",
46
46
  },
47
+ {
48
+ id: "api-service-express-recommended",
49
+ name: "API Service Express Recommended",
50
+ projectType: "api-service",
51
+ framework: "express",
52
+ setupDepth: "recommended",
53
+ defaultTargets: ["codex", "copilot", "claude"],
54
+ description: "Opinionated Express API service setup with validation, testing, and auth defaults.",
55
+ },
56
+ {
57
+ id: "api-service-fastify-recommended",
58
+ name: "API Service Fastify Recommended",
59
+ projectType: "api-service",
60
+ framework: "fastify",
61
+ setupDepth: "recommended",
62
+ defaultTargets: ["codex", "copilot", "claude"],
63
+ description: "Opinionated Fastify API service setup with schema-first validation and testing defaults.",
64
+ },
47
65
  ];
48
66
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,iBAAiB,GAAyB;IACrD;QACE,EAAE,EAAE,8BAA8B;QAClC,IAAI,EAAE,+BAA+B;QACrC,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC9C,WAAW,EAAE,wEAAwE;KACtF;IACD;QACE,EAAE,EAAE,kCAAkC;QACtC,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC9C,WAAW,EAAE,oEAAoE;KAClF;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC;QACrD,WAAW,EAAE,sEAAsE;KACpF;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,SAAS;QACtB,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC9C,WAAW,EAAE,sEAAsE;KACpF;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,SAAS;QACtB,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC;QACrD,WAAW,EAAE,oEAAoE;KAClF;CACF,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,iBAAiB,GAAyB;IACrD;QACE,EAAE,EAAE,8BAA8B;QAClC,IAAI,EAAE,+BAA+B;QACrC,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC9C,WAAW,EAAE,wEAAwE;KACtF;IACD;QACE,EAAE,EAAE,kCAAkC;QACtC,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC9C,WAAW,EAAE,oEAAoE;KAClF;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC;QACrD,WAAW,EAAE,sEAAsE;KACpF;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,SAAS;QACtB,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC9C,WAAW,EAAE,sEAAsE;KACpF;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,SAAS;QACtB,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC;QACrD,WAAW,EAAE,oEAAoE;KAClF;IACD;QACE,EAAE,EAAE,iCAAiC;QACrC,IAAI,EAAE,iCAAiC;QACvC,WAAW,EAAE,aAAa;QAC1B,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC9C,WAAW,EAAE,oFAAoF;KAClG;IACD;QACE,EAAE,EAAE,iCAAiC;QACrC,IAAI,EAAE,iCAAiC;QACvC,WAAW,EAAE,aAAa;QAC1B,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC9C,WAAW,EAAE,0FAA0F;KACxG;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agenv-cli",
3
- "version": "0.1.0",
3
+ "version": "1.0.0",
4
4
  "description": "Bootstrap a portable, reviewable AI workspace for web development repositories.",
5
5
  "keywords": [
6
6
  "ai",
@@ -42,6 +42,7 @@
42
42
  "node": ">=20"
43
43
  },
44
44
  "dependencies": {
45
+ "@inquirer/prompts": "^8.3.2",
45
46
  "commander": "^13.1.0",
46
47
  "zod": "^4.1.5"
47
48
  },