mycontext-cli 1.0.95 → 2.0.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.
Files changed (97) hide show
  1. package/README.md +268 -295
  2. package/dist/agents/implementations/ClaudeAgentWorkflow.d.ts.map +1 -1
  3. package/dist/agents/implementations/ClaudeAgentWorkflow.js +38 -3
  4. package/dist/agents/implementations/ClaudeAgentWorkflow.js.map +1 -1
  5. package/dist/agents/implementations/WorkflowAgent.d.ts +8 -0
  6. package/dist/agents/implementations/WorkflowAgent.d.ts.map +1 -1
  7. package/dist/agents/implementations/WorkflowAgent.js +105 -11
  8. package/dist/agents/implementations/WorkflowAgent.js.map +1 -1
  9. package/dist/agents/interfaces/SubAgent.d.ts +5 -0
  10. package/dist/agents/interfaces/SubAgent.d.ts.map +1 -1
  11. package/dist/commands/build-app.d.ts +5 -0
  12. package/dist/commands/build-app.d.ts.map +1 -1
  13. package/dist/commands/build-app.js +127 -4
  14. package/dist/commands/build-app.js.map +1 -1
  15. package/dist/commands/compile-prd.d.ts.map +1 -1
  16. package/dist/commands/compile-prd.js +18 -54
  17. package/dist/commands/compile-prd.js.map +1 -1
  18. package/dist/commands/enhance.d.ts +21 -0
  19. package/dist/commands/enhance.d.ts.map +1 -1
  20. package/dist/commands/enhance.js +155 -12
  21. package/dist/commands/enhance.js.map +1 -1
  22. package/dist/commands/generate-components.d.ts +43 -0
  23. package/dist/commands/generate-components.d.ts.map +1 -1
  24. package/dist/commands/generate-components.js +270 -0
  25. package/dist/commands/generate-components.js.map +1 -1
  26. package/dist/constants/fileNames.d.ts +68 -0
  27. package/dist/constants/fileNames.d.ts.map +1 -0
  28. package/dist/constants/fileNames.js +102 -0
  29. package/dist/constants/fileNames.js.map +1 -0
  30. package/dist/interfaces/AIClient.d.ts +198 -0
  31. package/dist/interfaces/AIClient.d.ts.map +1 -0
  32. package/dist/interfaces/AIClient.js +40 -0
  33. package/dist/interfaces/AIClient.js.map +1 -0
  34. package/dist/package.json +4 -3
  35. package/dist/types/index.d.ts +423 -0
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/dist/utils/agentDefinitions.d.ts +60 -0
  38. package/dist/utils/agentDefinitions.d.ts.map +1 -0
  39. package/dist/utils/agentDefinitions.js +344 -0
  40. package/dist/utils/agentDefinitions.js.map +1 -0
  41. package/dist/utils/aiClientFactory.d.ts +93 -0
  42. package/dist/utils/aiClientFactory.d.ts.map +1 -0
  43. package/dist/utils/aiClientFactory.js +290 -0
  44. package/dist/utils/aiClientFactory.js.map +1 -0
  45. package/dist/utils/aiClientRouter.d.ts +121 -0
  46. package/dist/utils/aiClientRouter.d.ts.map +1 -0
  47. package/dist/utils/aiClientRouter.js +401 -0
  48. package/dist/utils/aiClientRouter.js.map +1 -0
  49. package/dist/utils/buildValidator.d.ts +72 -0
  50. package/dist/utils/buildValidator.d.ts.map +1 -0
  51. package/dist/utils/buildValidator.js +338 -0
  52. package/dist/utils/buildValidator.js.map +1 -0
  53. package/dist/utils/claudeAgentClient.d.ts +79 -11
  54. package/dist/utils/claudeAgentClient.d.ts.map +1 -1
  55. package/dist/utils/claudeAgentClient.js +306 -1
  56. package/dist/utils/claudeAgentClient.js.map +1 -1
  57. package/dist/utils/claudeClient.d.ts +7 -3
  58. package/dist/utils/claudeClient.d.ts.map +1 -1
  59. package/dist/utils/claudeClient.js +28 -5
  60. package/dist/utils/claudeClient.js.map +1 -1
  61. package/dist/utils/completeArchitectureEngine.d.ts +67 -0
  62. package/dist/utils/completeArchitectureEngine.d.ts.map +1 -0
  63. package/dist/utils/completeArchitectureEngine.js +329 -0
  64. package/dist/utils/completeArchitectureEngine.js.map +1 -0
  65. package/dist/utils/contextLoader.d.ts +1 -12
  66. package/dist/utils/contextLoader.d.ts.map +1 -1
  67. package/dist/utils/contextLoader.js +29 -150
  68. package/dist/utils/contextLoader.js.map +1 -1
  69. package/dist/utils/contextManager.d.ts +2 -12
  70. package/dist/utils/contextManager.d.ts.map +1 -1
  71. package/dist/utils/contextManager.js +11 -6
  72. package/dist/utils/contextManager.js.map +1 -1
  73. package/dist/utils/mcpTools.d.ts +164 -0
  74. package/dist/utils/mcpTools.d.ts.map +1 -0
  75. package/dist/utils/mcpTools.js +385 -0
  76. package/dist/utils/mcpTools.js.map +1 -0
  77. package/dist/utils/progressTracker.d.ts +121 -0
  78. package/dist/utils/progressTracker.d.ts.map +1 -0
  79. package/dist/utils/progressTracker.js +334 -0
  80. package/dist/utils/progressTracker.js.map +1 -0
  81. package/dist/utils/routeGenerator.d.ts +56 -0
  82. package/dist/utils/routeGenerator.d.ts.map +1 -0
  83. package/dist/utils/routeGenerator.js +231 -0
  84. package/dist/utils/routeGenerator.js.map +1 -0
  85. package/dist/utils/serverActionGenerator.d.ts +56 -0
  86. package/dist/utils/serverActionGenerator.d.ts.map +1 -0
  87. package/dist/utils/serverActionGenerator.js +258 -0
  88. package/dist/utils/serverActionGenerator.js.map +1 -0
  89. package/dist/utils/streamingHandler.d.ts +98 -0
  90. package/dist/utils/streamingHandler.d.ts.map +1 -0
  91. package/dist/utils/streamingHandler.js +259 -0
  92. package/dist/utils/streamingHandler.js.map +1 -0
  93. package/dist/utils/validationGates.d.ts +58 -0
  94. package/dist/utils/validationGates.d.ts.map +1 -0
  95. package/dist/utils/validationGates.js +390 -0
  96. package/dist/utils/validationGates.js.map +1 -0
  97. package/package.json +4 -3
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RouteGenerator = void 0;
4
+ /**
5
+ * Route Generator
6
+ * Generates Next.js App Router routes based on component hierarchy
7
+ */
8
+ class RouteGenerator {
9
+ /**
10
+ * Generate routes for a component
11
+ */
12
+ async generateRoutes(component, level, parentPath = "") {
13
+ const routes = [];
14
+ // Root level components get root route
15
+ if (level === 0) {
16
+ routes.push(this.generateRootRoute(component));
17
+ }
18
+ // Feature-level components get their own routes
19
+ if (component.type === "layout" && level === 1) {
20
+ routes.push(this.generateFeatureRoute(component, parentPath));
21
+ }
22
+ // Form components get specific routes
23
+ if (component.type === "form") {
24
+ routes.push(...this.generateFormRoutes(component, parentPath));
25
+ }
26
+ // Generate dynamic routes if needed
27
+ if (this.needsDynamicRoute(component)) {
28
+ routes.push(this.generateDynamicRoute(component, parentPath));
29
+ }
30
+ return routes;
31
+ }
32
+ /**
33
+ * Generate root route
34
+ */
35
+ generateRootRoute(component) {
36
+ return {
37
+ path: "/",
38
+ type: "page",
39
+ page: component.name,
40
+ layout: "RootLayout",
41
+ components: [component.name],
42
+ actions: [],
43
+ metadata: {
44
+ title: component.description || component.name,
45
+ description: `${component.name} - Main Application`,
46
+ },
47
+ };
48
+ }
49
+ /**
50
+ * Generate feature route
51
+ */
52
+ generateFeatureRoute(component, parentPath) {
53
+ const path = `${parentPath}/${this.toKebabCase(component.name)}`;
54
+ return {
55
+ path,
56
+ type: "page",
57
+ page: component.name,
58
+ layout: `${component.name}Layout`,
59
+ components: this.collectComponentNames(component),
60
+ actions: component.actions?.map((a) => a.name) || [],
61
+ metadata: {
62
+ title: component.description || component.name,
63
+ description: component.description,
64
+ },
65
+ };
66
+ }
67
+ /**
68
+ * Generate form routes (create, edit)
69
+ */
70
+ generateFormRoutes(component, parentPath) {
71
+ const routes = [];
72
+ const baseName = this.extractBaseName(component.name);
73
+ // Create route
74
+ routes.push({
75
+ path: `${parentPath}/${this.toKebabCase(baseName)}/new`,
76
+ type: "page",
77
+ page: component.name,
78
+ layout: `${baseName}Layout`,
79
+ components: [component.name],
80
+ actions: component.actions
81
+ ?.filter((a) => a.type === "form-action")
82
+ .map((a) => a.name) || [],
83
+ metadata: {
84
+ title: `Create ${baseName}`,
85
+ description: `Create new ${baseName}`,
86
+ },
87
+ });
88
+ // Edit route
89
+ routes.push({
90
+ path: `${parentPath}/${this.toKebabCase(baseName)}/[id]/edit`,
91
+ type: "dynamic",
92
+ page: component.name,
93
+ layout: `${baseName}Layout`,
94
+ components: [component.name],
95
+ actions: component.actions
96
+ ?.filter((a) => a.type === "form-action")
97
+ .map((a) => a.name) || [],
98
+ metadata: {
99
+ title: `Edit ${baseName}`,
100
+ description: `Edit existing ${baseName}`,
101
+ },
102
+ });
103
+ return routes;
104
+ }
105
+ /**
106
+ * Generate dynamic route
107
+ */
108
+ generateDynamicRoute(component, parentPath) {
109
+ const baseName = this.extractBaseName(component.name);
110
+ return {
111
+ path: `${parentPath}/${this.toKebabCase(baseName)}/[id]`,
112
+ type: "dynamic",
113
+ page: component.name,
114
+ layout: `${baseName}Layout`,
115
+ components: this.collectComponentNames(component),
116
+ actions: component.actions
117
+ ?.filter((a) => a.type === "server-action")
118
+ .map((a) => a.name) || [],
119
+ metadata: {
120
+ title: `${baseName} Details`,
121
+ description: `View ${baseName} details`,
122
+ },
123
+ };
124
+ }
125
+ /**
126
+ * Generate route metadata from component and actions
127
+ */
128
+ generateRouteMetadata(component, actions) {
129
+ return {
130
+ title: component.description || component.name,
131
+ description: component.description,
132
+ openGraph: {
133
+ title: component.description || component.name,
134
+ description: component.description,
135
+ type: "website",
136
+ },
137
+ };
138
+ }
139
+ /**
140
+ * Determine if component needs a dynamic route
141
+ */
142
+ needsDynamicRoute(component) {
143
+ // Components that display individual items need dynamic routes
144
+ if (component.name.includes("Detail"))
145
+ return true;
146
+ if (component.name.includes("View"))
147
+ return true;
148
+ // Components with actions that require an ID
149
+ const hasIdAction = component.actions?.some((a) => a.parameters?.includes("id"));
150
+ if (hasIdAction)
151
+ return true;
152
+ return false;
153
+ }
154
+ /**
155
+ * Collect all component names from hierarchy
156
+ */
157
+ collectComponentNames(component) {
158
+ const names = [component.name];
159
+ if (component.children) {
160
+ Object.values(component.children).forEach((child) => {
161
+ names.push(...this.collectComponentNames(child));
162
+ });
163
+ }
164
+ return names;
165
+ }
166
+ /**
167
+ * Extract base name from component name (e.g., "ProductForm" -> "Product")
168
+ */
169
+ extractBaseName(componentName) {
170
+ return componentName
171
+ .replace(/Form$/, "")
172
+ .replace(/List$/, "")
173
+ .replace(/Grid$/, "")
174
+ .replace(/Detail$/, "")
175
+ .replace(/View$/, "")
176
+ .replace(/Card$/, "");
177
+ }
178
+ /**
179
+ * Helper: Convert to kebab-case
180
+ */
181
+ toKebabCase(str) {
182
+ return str
183
+ .replace(/([a-z])([A-Z])/g, "$1-$2")
184
+ .replace(/\s+/g, "-")
185
+ .toLowerCase();
186
+ }
187
+ /**
188
+ * Generate layout file content for route
189
+ */
190
+ generateLayoutContent(component, childRoutes) {
191
+ return `
192
+ import { ReactNode } from 'react';
193
+
194
+ export default function ${component.name}Layout({
195
+ children,
196
+ }: {
197
+ children: ReactNode;
198
+ }) {
199
+ return (
200
+ <div className="${this.toKebabCase(component.name)}-layout">
201
+ {/* Add layout-specific UI here */}
202
+ {children}
203
+ </div>
204
+ );
205
+ }
206
+ `;
207
+ }
208
+ /**
209
+ * Generate page file content for route
210
+ */
211
+ generatePageContent(component, route) {
212
+ const isDynamic = route.type === "dynamic";
213
+ const params = isDynamic ? "{ params }: { params: { id: string } }" : "";
214
+ return `
215
+ import { ${component.name} } from '@/components/${this.toKebabCase(component.name)}';
216
+ ${route.actions.map((action) => `import { ${action} } from '@/actions/${this.toKebabCase(action)}';`).join("\n")}
217
+
218
+ export default async function ${component.name}Page(${params}) {
219
+ ${isDynamic ? "const data = await " + route.actions[0] + "(params.id);" : ""}
220
+
221
+ return (
222
+ <div className="container">
223
+ <${component.name} ${isDynamic ? "data={data}" : ""} />
224
+ </div>
225
+ );
226
+ }
227
+ `;
228
+ }
229
+ }
230
+ exports.RouteGenerator = RouteGenerator;
231
+ //# sourceMappingURL=routeGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routeGenerator.js","sourceRoot":"","sources":["../../src/utils/routeGenerator.ts"],"names":[],"mappings":";;;AAOA;;;GAGG;AACH,MAAa,cAAc;IACzB;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,SAA4B,EAC5B,KAAa,EACb,aAAqB,EAAE;QAEvB,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,uCAAuC;QACvC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,gDAAgD;QAChD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,sCAAsC;QACtC,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,SAA4B;QACpD,OAAO;YACL,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YAC5B,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE;gBACR,KAAK,EAAE,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI;gBAC9C,WAAW,EAAE,GAAG,SAAS,CAAC,IAAI,qBAAqB;aACpD;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,SAA4B,EAC5B,UAAkB;QAElB,MAAM,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAEjE,OAAO;YACL,IAAI;YACJ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,QAAQ;YACjC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;YACjD,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;YACpD,QAAQ,EAAE;gBACR,KAAK,EAAE,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI;gBAC9C,WAAW,EAAE,SAAS,CAAC,WAAW;aACnC;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,SAA4B,EAC5B,UAAkB;QAElB,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtD,eAAe;QACf,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,GAAG,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM;YACvD,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,GAAG,QAAQ,QAAQ;YAC3B,UAAU,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;gBACxB,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;YAC3B,QAAQ,EAAE;gBACR,KAAK,EAAE,UAAU,QAAQ,EAAE;gBAC3B,WAAW,EAAE,cAAc,QAAQ,EAAE;aACtC;SACF,CAAC,CAAC;QAEH,aAAa;QACb,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,GAAG,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY;YAC7D,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,GAAG,QAAQ,QAAQ;YAC3B,UAAU,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;gBACxB,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;YAC3B,QAAQ,EAAE;gBACR,KAAK,EAAE,QAAQ,QAAQ,EAAE;gBACzB,WAAW,EAAE,iBAAiB,QAAQ,EAAE;aACzC;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,SAA4B,EAC5B,UAAkB;QAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtD,OAAO;YACL,IAAI,EAAE,GAAG,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO;YACxD,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,GAAG,QAAQ,QAAQ;YAC3B,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;YACjD,OAAO,EAAE,SAAS,CAAC,OAAO;gBACxB,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;iBAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;YAC3B,QAAQ,EAAE;gBACR,KAAK,EAAE,GAAG,QAAQ,UAAU;gBAC5B,WAAW,EAAE,QAAQ,QAAQ,UAAU;aACxC;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,qBAAqB,CACnB,SAA4B,EAC5B,OAAiC;QAEjC,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI;YAC9C,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,SAAS,EAAE;gBACT,KAAK,EAAE,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI;gBAC9C,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,IAAI,EAAE,SAAS;aAChB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,SAA4B;QACpD,+DAA+D;QAC/D,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QACnD,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjD,6CAA6C;QAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CACpC,CAAC;QACF,IAAI,WAAW;YAAE,OAAO,IAAI,CAAC;QAE7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,SAA4B;QACxD,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,aAAqB;QAC3C,OAAO,aAAa;aACjB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACpB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACpB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACpB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;aACtB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACpB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,GAAW;QAC7B,OAAO,GAAG;aACP,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;aACnC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;aACpB,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,qBAAqB,CACnB,SAA4B,EAC5B,WAA8B;QAE9B,OAAO;;;0BAGe,SAAS,CAAC,IAAI;;;;;;sBAMlB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;CAMrD,CAAC;IACA,CAAC;IAED;;OAEG;IACH,mBAAmB,CACjB,SAA4B,EAC5B,KAAsB;QAEtB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;QAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzE,OAAO;WACA,SAAS,CAAC,IAAI,yBAAyB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC;EAChF,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,MAAM,sBAAsB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;gCAEhF,SAAS,CAAC,IAAI,QAAQ,MAAM;IACxD,SAAS,CAAC,CAAC,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE;;;;SAIrE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;;;;CAIxD,CAAC;IACA,CAAC;CACF;AA5QD,wCA4QC"}
@@ -0,0 +1,56 @@
1
+ import { ServerActionDefinition, ActionDefinition, EnhancedComponent, HttpMethod } from "../types";
2
+ /**
3
+ * Server Action Generator
4
+ * Generates Next.js server actions based on component requirements
5
+ */
6
+ export declare class ServerActionGenerator {
7
+ /**
8
+ * Generate server actions for a component
9
+ */
10
+ generateServerActions(component: EnhancedComponent): Promise<ServerActionDefinition[]>;
11
+ /**
12
+ * Generate form submission server action
13
+ */
14
+ private generateFormSubmitAction;
15
+ /**
16
+ * Generate data fetching server action
17
+ */
18
+ private generateDataFetchAction;
19
+ /**
20
+ * Generate CRUD actions for interactive components
21
+ */
22
+ private generateCRUDActions;
23
+ /**
24
+ * Generate client actions that connect to server actions
25
+ */
26
+ generateClientActions(component: EnhancedComponent, serverActions: ServerActionDefinition[]): ActionDefinition[];
27
+ /**
28
+ * Generate API endpoint definition from server action
29
+ */
30
+ generateApiEndpoint(serverAction: ServerActionDefinition, component: EnhancedComponent): {
31
+ path: string;
32
+ method: HttpMethod;
33
+ action: string;
34
+ };
35
+ /**
36
+ * Helper: Get database table name from component
37
+ */
38
+ private getDatabaseTable;
39
+ /**
40
+ * Helper: Convert to kebab-case
41
+ */
42
+ private toKebabCase;
43
+ /**
44
+ * Helper: Convert to snake_case
45
+ */
46
+ private toSnakeCase;
47
+ /**
48
+ * Helper: Pluralize word
49
+ */
50
+ private pluralize;
51
+ /**
52
+ * Helper: Capitalize first letter
53
+ */
54
+ private capitalize;
55
+ }
56
+ //# sourceMappingURL=serverActionGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverActionGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/serverActionGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACX,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACG,qBAAqB,CACzB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAqBpC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkChC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiC/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyF3B;;OAEG;IACH,qBAAqB,CACnB,SAAS,EAAE,iBAAiB,EAC5B,aAAa,EAAE,sBAAsB,EAAE,GACtC,gBAAgB,EAAE;IAgBrB;;OAEG;IACH,mBAAmB,CACjB,YAAY,EAAE,sBAAsB,EACpC,SAAS,EAAE,iBAAiB,GAC3B;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAevD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB"}
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServerActionGenerator = void 0;
4
+ /**
5
+ * Server Action Generator
6
+ * Generates Next.js server actions based on component requirements
7
+ */
8
+ class ServerActionGenerator {
9
+ /**
10
+ * Generate server actions for a component
11
+ */
12
+ async generateServerActions(component) {
13
+ const actions = [];
14
+ // Form components need submit actions
15
+ if (component.type === "form") {
16
+ actions.push(this.generateFormSubmitAction(component));
17
+ }
18
+ // Display components need data fetching actions
19
+ if (component.type === "display") {
20
+ actions.push(this.generateDataFetchAction(component));
21
+ }
22
+ // Interactive components may need CRUD actions
23
+ if (component.type === "interactive") {
24
+ actions.push(...this.generateCRUDActions(component));
25
+ }
26
+ return actions;
27
+ }
28
+ /**
29
+ * Generate form submission server action
30
+ */
31
+ generateFormSubmitAction(component) {
32
+ const actionName = `submit${component.name}`;
33
+ const tableName = this.getDatabaseTable(component);
34
+ return {
35
+ name: actionName,
36
+ description: `Handle ${component.name} form submission`,
37
+ parameters: [
38
+ {
39
+ name: "formData",
40
+ type: "FormData",
41
+ required: true,
42
+ description: "Form data from client submission",
43
+ },
44
+ {
45
+ name: "userId",
46
+ type: "string",
47
+ required: false,
48
+ description: "Optional user ID for authentication",
49
+ },
50
+ ],
51
+ returns: `{ success: boolean; data?: ${component.name}; error?: string }`,
52
+ database: tableName,
53
+ validation: `${component.name.toLowerCase()}Schema`,
54
+ middleware: ["auth", "rateLimit"],
55
+ errorHandling: ["ValidationError", "DatabaseError", "AuthError"],
56
+ caching: {
57
+ strategy: "no-cache",
58
+ },
59
+ };
60
+ }
61
+ /**
62
+ * Generate data fetching server action
63
+ */
64
+ generateDataFetchAction(component) {
65
+ const actionName = `get${this.pluralize(component.name)}`;
66
+ const tableName = this.getDatabaseTable(component);
67
+ return {
68
+ name: actionName,
69
+ description: `Fetch data for ${component.name} display`,
70
+ parameters: [
71
+ {
72
+ name: "filters",
73
+ type: "Record<string, any>",
74
+ required: false,
75
+ description: "Optional filters for data fetching",
76
+ },
77
+ {
78
+ name: "pagination",
79
+ type: "{ page: number; limit: number }",
80
+ required: false,
81
+ description: "Pagination parameters",
82
+ },
83
+ ],
84
+ returns: `${component.name}[]`,
85
+ database: tableName,
86
+ middleware: ["auth"],
87
+ caching: {
88
+ strategy: "revalidate",
89
+ revalidate: 60, // 1 minute
90
+ },
91
+ };
92
+ }
93
+ /**
94
+ * Generate CRUD actions for interactive components
95
+ */
96
+ generateCRUDActions(component) {
97
+ const tableName = this.getDatabaseTable(component);
98
+ const actions = [];
99
+ // Create
100
+ actions.push({
101
+ name: `create${component.name}`,
102
+ description: `Create new ${component.name}`,
103
+ parameters: [
104
+ {
105
+ name: "data",
106
+ type: `Omit<${component.name}, 'id'>`,
107
+ required: true,
108
+ description: `${component.name} data without ID`,
109
+ },
110
+ ],
111
+ returns: component.name,
112
+ database: tableName,
113
+ validation: `${component.name.toLowerCase()}Schema`,
114
+ middleware: ["auth", "rateLimit"],
115
+ caching: { strategy: "no-cache" },
116
+ });
117
+ // Read
118
+ actions.push({
119
+ name: `get${component.name}`,
120
+ description: `Get ${component.name} by ID`,
121
+ parameters: [
122
+ {
123
+ name: "id",
124
+ type: "string",
125
+ required: true,
126
+ description: `${component.name} ID`,
127
+ },
128
+ ],
129
+ returns: `${component.name} | null`,
130
+ database: tableName,
131
+ middleware: ["auth"],
132
+ caching: { strategy: "revalidate", revalidate: 60 },
133
+ });
134
+ // Update
135
+ actions.push({
136
+ name: `update${component.name}`,
137
+ description: `Update existing ${component.name}`,
138
+ parameters: [
139
+ {
140
+ name: "id",
141
+ type: "string",
142
+ required: true,
143
+ description: `${component.name} ID`,
144
+ },
145
+ {
146
+ name: "data",
147
+ type: `Partial<${component.name}>`,
148
+ required: true,
149
+ description: "Fields to update",
150
+ },
151
+ ],
152
+ returns: component.name,
153
+ database: tableName,
154
+ validation: `${component.name.toLowerCase()}UpdateSchema`,
155
+ middleware: ["auth", "rateLimit"],
156
+ caching: { strategy: "no-cache" },
157
+ });
158
+ // Delete
159
+ actions.push({
160
+ name: `delete${component.name}`,
161
+ description: `Delete ${component.name}`,
162
+ parameters: [
163
+ {
164
+ name: "id",
165
+ type: "string",
166
+ required: true,
167
+ description: `${component.name} ID`,
168
+ },
169
+ ],
170
+ returns: "boolean",
171
+ database: tableName,
172
+ middleware: ["auth", "rateLimit"],
173
+ caching: { strategy: "no-cache" },
174
+ });
175
+ return actions;
176
+ }
177
+ /**
178
+ * Generate client actions that connect to server actions
179
+ */
180
+ generateClientActions(component, serverActions) {
181
+ const clientActions = [];
182
+ serverActions.forEach((serverAction) => {
183
+ clientActions.push({
184
+ name: `handle${this.capitalize(serverAction.name)}`,
185
+ type: "client-action",
186
+ description: `Client-side handler for ${serverAction.name}`,
187
+ parameters: serverAction.parameters.map((p) => p.name),
188
+ serverAction: serverAction.name,
189
+ });
190
+ });
191
+ return clientActions;
192
+ }
193
+ /**
194
+ * Generate API endpoint definition from server action
195
+ */
196
+ generateApiEndpoint(serverAction, component) {
197
+ const path = `/api/${this.toKebabCase(component.name)}`;
198
+ let method = "GET";
199
+ if (serverAction.name.startsWith("create"))
200
+ method = "POST";
201
+ if (serverAction.name.startsWith("update"))
202
+ method = "PUT";
203
+ if (serverAction.name.startsWith("delete"))
204
+ method = "DELETE";
205
+ return {
206
+ path,
207
+ method,
208
+ action: serverAction.name,
209
+ };
210
+ }
211
+ /**
212
+ * Helper: Get database table name from component
213
+ */
214
+ getDatabaseTable(component) {
215
+ if (component.database?.table) {
216
+ return component.database.table;
217
+ }
218
+ return this.toSnakeCase(this.pluralize(component.name));
219
+ }
220
+ /**
221
+ * Helper: Convert to kebab-case
222
+ */
223
+ toKebabCase(str) {
224
+ return str
225
+ .replace(/([a-z])([A-Z])/g, "$1-$2")
226
+ .replace(/\s+/g, "-")
227
+ .toLowerCase();
228
+ }
229
+ /**
230
+ * Helper: Convert to snake_case
231
+ */
232
+ toSnakeCase(str) {
233
+ return str
234
+ .replace(/([a-z])([A-Z])/g, "$1_$2")
235
+ .replace(/\s+/g, "_")
236
+ .toLowerCase();
237
+ }
238
+ /**
239
+ * Helper: Pluralize word
240
+ */
241
+ pluralize(word) {
242
+ if (word.endsWith("y")) {
243
+ return word.slice(0, -1) + "ies";
244
+ }
245
+ if (word.endsWith("s")) {
246
+ return word + "es";
247
+ }
248
+ return word + "s";
249
+ }
250
+ /**
251
+ * Helper: Capitalize first letter
252
+ */
253
+ capitalize(str) {
254
+ return str.charAt(0).toUpperCase() + str.slice(1);
255
+ }
256
+ }
257
+ exports.ServerActionGenerator = ServerActionGenerator;
258
+ //# sourceMappingURL=serverActionGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverActionGenerator.js","sourceRoot":"","sources":["../../src/utils/serverActionGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Streaming Handler for Claude Agent SDK
3
+ *
4
+ * Handles streaming messages, progress tracking, and user feedback
5
+ * for long-running agent operations.
6
+ */
7
+ import type { Query } from '@anthropic-ai/claude-agent-sdk';
8
+ export interface StreamingOptions {
9
+ showProgress?: boolean;
10
+ showTokens?: boolean;
11
+ showToolUsage?: boolean;
12
+ onProgress?: (message: string) => void;
13
+ onToken?: (token: string) => void;
14
+ onToolUse?: (tool: string, input: any) => void;
15
+ onError?: (error: Error) => void;
16
+ }
17
+ export interface StreamingStats {
18
+ totalTokens: number;
19
+ inputTokens: number;
20
+ outputTokens: number;
21
+ toolsUsed: string[];
22
+ duration: number;
23
+ messagesProcessed: number;
24
+ }
25
+ /**
26
+ * Handles streaming from Claude Agent SDK with progress tracking
27
+ */
28
+ export declare class StreamingHandler {
29
+ private spinner;
30
+ private stats;
31
+ private startTime;
32
+ private options;
33
+ constructor(options?: StreamingOptions);
34
+ /**
35
+ * Start streaming handler
36
+ */
37
+ start(message?: string): void;
38
+ /**
39
+ * Process streaming messages from query
40
+ */
41
+ processStream(query: Query): Promise<string>;
42
+ /**
43
+ * Handle assistant message
44
+ */
45
+ private handleAssistantMessage;
46
+ /**
47
+ * Handle partial assistant message (streaming)
48
+ */
49
+ private handlePartialMessage;
50
+ /**
51
+ * Handle tool result message
52
+ */
53
+ private handleToolResult;
54
+ /**
55
+ * Handle system message
56
+ */
57
+ private handleSystemMessage;
58
+ /**
59
+ * Handle permission denial
60
+ */
61
+ private handlePermissionDenial;
62
+ /**
63
+ * Update spinner text
64
+ */
65
+ private updateSpinner;
66
+ /**
67
+ * Complete streaming successfully
68
+ */
69
+ complete(message?: string): void;
70
+ /**
71
+ * Handle error during streaming
72
+ */
73
+ error(error: Error): void;
74
+ /**
75
+ * Stop spinner without completion
76
+ */
77
+ stop(): void;
78
+ /**
79
+ * Get current statistics
80
+ */
81
+ getStats(): StreamingStats;
82
+ /**
83
+ * Reset statistics
84
+ */
85
+ resetStats(): void;
86
+ }
87
+ /**
88
+ * Convenience function to create and use streaming handler
89
+ */
90
+ export declare function streamWithProgress(query: Query, options?: StreamingOptions): Promise<{
91
+ content: string;
92
+ stats: StreamingStats;
93
+ }>;
94
+ /**
95
+ * Simplified streaming with default options
96
+ */
97
+ export declare function simpleStream(query: Query): Promise<string>;
98
+ //# sourceMappingURL=streamingHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamingHandler.d.ts","sourceRoot":"","sources":["../../src/utils/streamingHandler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,KAAK,CAOX;IACF,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,GAAE,gBAAqB;IAS1C;;OAEG;IACH,KAAK,CAAC,OAAO,GAAE,MAAwB;IAOvC;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IA2ClD;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwC9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM;IAmBzB;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,KAAK;IAUlB;;OAEG;IACH,IAAI;IAMJ;;OAEG;IACH,QAAQ,IAAI,cAAc;IAI1B;;OAEG;IACH,UAAU;CAUX;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC,CAQrD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAOhE"}