mycontext-cli 0.1.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 (94) hide show
  1. package/README.md +440 -0
  2. package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts +43 -0
  3. package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts.map +1 -0
  4. package/dist/cli/src/agents/implementations/CodeGenSubAgent.js +1440 -0
  5. package/dist/cli/src/agents/implementations/CodeGenSubAgent.js.map +1 -0
  6. package/dist/cli/src/agents/implementations/DocsSubAgent.d.ts +35 -0
  7. package/dist/cli/src/agents/implementations/DocsSubAgent.d.ts.map +1 -0
  8. package/dist/cli/src/agents/implementations/DocsSubAgent.js +351 -0
  9. package/dist/cli/src/agents/implementations/DocsSubAgent.js.map +1 -0
  10. package/dist/cli/src/agents/implementations/QASubAgent.d.ts +31 -0
  11. package/dist/cli/src/agents/implementations/QASubAgent.d.ts.map +1 -0
  12. package/dist/cli/src/agents/implementations/QASubAgent.js +190 -0
  13. package/dist/cli/src/agents/implementations/QASubAgent.js.map +1 -0
  14. package/dist/cli/src/agents/interfaces/SubAgent.d.ts +157 -0
  15. package/dist/cli/src/agents/interfaces/SubAgent.d.ts.map +1 -0
  16. package/dist/cli/src/agents/interfaces/SubAgent.js +7 -0
  17. package/dist/cli/src/agents/interfaces/SubAgent.js.map +1 -0
  18. package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.d.ts +59 -0
  19. package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.d.ts.map +1 -0
  20. package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.js +305 -0
  21. package/dist/cli/src/agents/orchestrator/SubAgentOrchestrator.js.map +1 -0
  22. package/dist/cli/src/agents/personalities/definitions.d.ts +34 -0
  23. package/dist/cli/src/agents/personalities/definitions.d.ts.map +1 -0
  24. package/dist/cli/src/agents/personalities/definitions.js +360 -0
  25. package/dist/cli/src/agents/personalities/definitions.js.map +1 -0
  26. package/dist/cli/src/cli.d.ts +3 -0
  27. package/dist/cli/src/cli.d.ts.map +1 -0
  28. package/dist/cli/src/cli.js +286 -0
  29. package/dist/cli/src/cli.js.map +1 -0
  30. package/dist/cli/src/commands/auth.d.ts +23 -0
  31. package/dist/cli/src/commands/auth.d.ts.map +1 -0
  32. package/dist/cli/src/commands/auth.js +212 -0
  33. package/dist/cli/src/commands/auth.js.map +1 -0
  34. package/dist/cli/src/commands/generate-components.d.ts +28 -0
  35. package/dist/cli/src/commands/generate-components.d.ts.map +1 -0
  36. package/dist/cli/src/commands/generate-components.js +680 -0
  37. package/dist/cli/src/commands/generate-components.js.map +1 -0
  38. package/dist/cli/src/commands/generate.d.ts +108 -0
  39. package/dist/cli/src/commands/generate.d.ts.map +1 -0
  40. package/dist/cli/src/commands/generate.js +1984 -0
  41. package/dist/cli/src/commands/generate.js.map +1 -0
  42. package/dist/cli/src/commands/init.d.ts +13 -0
  43. package/dist/cli/src/commands/init.d.ts.map +1 -0
  44. package/dist/cli/src/commands/init.js +91 -0
  45. package/dist/cli/src/commands/init.js.map +1 -0
  46. package/dist/cli/src/commands/list.d.ts +17 -0
  47. package/dist/cli/src/commands/list.d.ts.map +1 -0
  48. package/dist/cli/src/commands/list.js +209 -0
  49. package/dist/cli/src/commands/list.js.map +1 -0
  50. package/dist/cli/src/commands/preview.d.ts +23 -0
  51. package/dist/cli/src/commands/preview.d.ts.map +1 -0
  52. package/dist/cli/src/commands/preview.js +1200 -0
  53. package/dist/cli/src/commands/preview.js.map +1 -0
  54. package/dist/cli/src/commands/status.d.ts +21 -0
  55. package/dist/cli/src/commands/status.d.ts.map +1 -0
  56. package/dist/cli/src/commands/status.js +287 -0
  57. package/dist/cli/src/commands/status.js.map +1 -0
  58. package/dist/cli/src/commands/validate.d.ts +22 -0
  59. package/dist/cli/src/commands/validate.d.ts.map +1 -0
  60. package/dist/cli/src/commands/validate.js +259 -0
  61. package/dist/cli/src/commands/validate.js.map +1 -0
  62. package/dist/cli/src/types/index.d.ts +152 -0
  63. package/dist/cli/src/types/index.d.ts.map +1 -0
  64. package/dist/cli/src/types/index.js +3 -0
  65. package/dist/cli/src/types/index.js.map +1 -0
  66. package/dist/cli/src/utils/apiKeyManager.d.ts +137 -0
  67. package/dist/cli/src/utils/apiKeyManager.d.ts.map +1 -0
  68. package/dist/cli/src/utils/apiKeyManager.js +471 -0
  69. package/dist/cli/src/utils/apiKeyManager.js.map +1 -0
  70. package/dist/cli/src/utils/errorHandler.d.ts +105 -0
  71. package/dist/cli/src/utils/errorHandler.d.ts.map +1 -0
  72. package/dist/cli/src/utils/errorHandler.js +332 -0
  73. package/dist/cli/src/utils/errorHandler.js.map +1 -0
  74. package/dist/cli/src/utils/fileSystem.d.ts +58 -0
  75. package/dist/cli/src/utils/fileSystem.d.ts.map +1 -0
  76. package/dist/cli/src/utils/fileSystem.js +230 -0
  77. package/dist/cli/src/utils/fileSystem.js.map +1 -0
  78. package/dist/cli/src/utils/githubModels.d.ts +53 -0
  79. package/dist/cli/src/utils/githubModels.d.ts.map +1 -0
  80. package/dist/cli/src/utils/githubModels.js +239 -0
  81. package/dist/cli/src/utils/githubModels.js.map +1 -0
  82. package/dist/cli/src/utils/spinner.d.ts +28 -0
  83. package/dist/cli/src/utils/spinner.d.ts.map +1 -0
  84. package/dist/cli/src/utils/spinner.js +112 -0
  85. package/dist/cli/src/utils/spinner.js.map +1 -0
  86. package/dist/cli/src/utils/xaiClient.d.ts +59 -0
  87. package/dist/cli/src/utils/xaiClient.d.ts.map +1 -0
  88. package/dist/cli/src/utils/xaiClient.js +244 -0
  89. package/dist/cli/src/utils/xaiClient.js.map +1 -0
  90. package/dist/lib/analytics/usage-tracker.d.ts +125 -0
  91. package/dist/lib/analytics/usage-tracker.d.ts.map +1 -0
  92. package/dist/lib/analytics/usage-tracker.js +429 -0
  93. package/dist/lib/analytics/usage-tracker.js.map +1 -0
  94. package/package.json +64 -0
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XAIClient = void 0;
4
+ class XAIClient {
5
+ constructor(config) {
6
+ this.config = config;
7
+ this.baseUrl = config.baseUrl || "https://api.x.ai/v1";
8
+ }
9
+ /**
10
+ * Generate content using X.AI API
11
+ */
12
+ async generate(request) {
13
+ try {
14
+ const model = request.model || this.config.model || "grok-4";
15
+ const temperature = request.temperature || this.config.temperature || 0.7;
16
+ const maxTokens = request.maxTokens || this.config.maxTokens || 4000;
17
+ const stream = request.stream || false;
18
+ const messages = [];
19
+ if (request.systemPrompt) {
20
+ messages.push({ role: "system", content: request.systemPrompt });
21
+ }
22
+ messages.push({ role: "user", content: request.prompt });
23
+ const response = await fetch(`${this.baseUrl}/chat/completions`, {
24
+ method: "POST",
25
+ headers: {
26
+ "Content-Type": "application/json",
27
+ Authorization: `Bearer ${this.config.apiKey}`,
28
+ },
29
+ body: JSON.stringify({
30
+ messages,
31
+ model,
32
+ temperature,
33
+ max_tokens: maxTokens,
34
+ stream,
35
+ }),
36
+ });
37
+ if (!response.ok) {
38
+ const errorData = (await response.json().catch(() => ({})));
39
+ throw new Error(errorData.error?.message ||
40
+ `X.AI API error: ${response.status} ${response.statusText}`);
41
+ }
42
+ const data = (await response.json());
43
+ return {
44
+ content: data.choices[0]?.message?.content || "",
45
+ model: data.model || model,
46
+ usage: data.usage,
47
+ finishReason: data.choices[0]?.finish_reason,
48
+ };
49
+ }
50
+ catch (error) {
51
+ console.error("X.AI API error:", error);
52
+ throw new Error(`X.AI generation failed: ${error instanceof Error ? error.message : "Unknown error"}`);
53
+ }
54
+ }
55
+ /**
56
+ * Generate context files using X.AI
57
+ */
58
+ async generateContext(projectDescription) {
59
+ const systemPrompt = `You are an expert software architect and technical writer. Generate comprehensive context files for a React/Next.js project based on the description provided.`;
60
+ const prompt = `Generate comprehensive context files for a React/Next.js project with the following description:
61
+
62
+ ${projectDescription}
63
+
64
+ Please generate the following files in JSON format:
65
+
66
+ 1. **PRD (Product Requirements Document)**: A detailed product requirements document with user stories, acceptance criteria, and technical specifications.
67
+
68
+ 2. **Types**: TypeScript type definitions for the project's data models, API responses, and component props.
69
+
70
+ 3. **User Stories**: Detailed user stories with acceptance criteria, priority levels, and component mappings.
71
+
72
+ 4. **Action Functions**: Server actions and client-side functions with parameters, return types, and descriptions.
73
+
74
+ 5. **Component List**: A structured list of React components organized by groups with priorities and dependencies.
75
+
76
+ 6. **Branding**: Design system configuration including colors, typography, spacing, and design principles.
77
+
78
+ Return the response as a JSON object with keys: "prd", "types", "userStories", "actionFunctions", "componentList", "branding".`;
79
+ const response = await this.generate({
80
+ prompt,
81
+ systemPrompt,
82
+ temperature: 0.7,
83
+ maxTokens: 8000,
84
+ });
85
+ try {
86
+ return JSON.parse(response.content);
87
+ }
88
+ catch (error) {
89
+ throw new Error("Failed to parse X.AI response as JSON");
90
+ }
91
+ }
92
+ /**
93
+ * Generate component list using X.AI
94
+ */
95
+ async generateComponentList(projectDescription) {
96
+ const systemPrompt = `You are an expert React/Next.js developer and UI/UX designer. Generate a comprehensive component list based on the project description.`;
97
+ const prompt = `Generate a comprehensive component list for a React/Next.js project with the following description:
98
+
99
+ ${projectDescription}
100
+
101
+ Please generate a JSON structure with the following format:
102
+ {
103
+ "groups": [
104
+ {
105
+ "name": "Group Name",
106
+ "description": "Group description",
107
+ "priority": "high|medium|low",
108
+ "components": [
109
+ {
110
+ "name": "Component Name",
111
+ "description": "Component description",
112
+ "type": "form|display|layout|interactive",
113
+ "priority": "high|medium|low",
114
+ "dependencies": ["dependency1", "dependency2"],
115
+ "tags": ["tag1", "tag2"]
116
+ }
117
+ ]
118
+ }
119
+ ]
120
+ }
121
+
122
+ Focus on:
123
+ - Modern React patterns (hooks, functional components)
124
+ - Next.js 14+ features (Server Components, App Router)
125
+ - Accessibility best practices
126
+ - Responsive design
127
+ - TypeScript support
128
+ - Shadcn/ui component library integration`;
129
+ const response = await this.generate({
130
+ prompt,
131
+ systemPrompt,
132
+ temperature: 0.7,
133
+ maxTokens: 6000,
134
+ });
135
+ try {
136
+ return JSON.parse(response.content);
137
+ }
138
+ catch (error) {
139
+ throw new Error("Failed to parse component list response as JSON");
140
+ }
141
+ }
142
+ /**
143
+ * Generate individual component using X.AI
144
+ */
145
+ async generateComponent(componentSpec, groupName) {
146
+ const systemPrompt = `You are an expert React/Next.js developer specializing in modern component architecture. Generate production-ready React components with TypeScript, following best practices.`;
147
+ const prompt = `Generate a production-ready React component for the following specification:
148
+
149
+ **Component Details:**
150
+ - Name: ${componentSpec.name}
151
+ - Description: ${componentSpec.description}
152
+ - Type: ${componentSpec.type}
153
+ - Group: ${groupName}
154
+ - Dependencies: ${componentSpec.dependencies?.join(", ") || "None"}
155
+ - Tags: ${componentSpec.tags?.join(", ") || "None"}
156
+
157
+ **Requirements:**
158
+ - Use TypeScript with strict typing
159
+ - Follow React 18+ best practices
160
+ - Implement proper accessibility (ARIA labels, keyboard navigation)
161
+ - Use modern CSS patterns (Tailwind CSS preferred)
162
+ - Include proper error handling and loading states
163
+ - Add comprehensive JSDoc comments
164
+ - Follow the component naming convention: PascalCase
165
+ - Export as default export
166
+ - Include proper prop validation
167
+ - Use React Server Components where appropriate
168
+ - Integrate with Shadcn/ui components when relevant
169
+
170
+ **Code Style:**
171
+ - Clean, readable code
172
+ - Proper TypeScript interfaces
173
+ - Modern React patterns (hooks, functional components)
174
+ - Responsive design considerations
175
+ - Performance optimizations
176
+
177
+ Generate the complete component code with all necessary imports and exports.`;
178
+ const response = await this.generate({
179
+ prompt,
180
+ systemPrompt,
181
+ temperature: 0.6,
182
+ maxTokens: 8000,
183
+ });
184
+ return response.content;
185
+ }
186
+ /**
187
+ * Generate component documentation using X.AI
188
+ */
189
+ async generateComponentDocs(componentCode, componentSpec) {
190
+ const systemPrompt = `You are an expert technical writer specializing in React component documentation. Generate comprehensive documentation for React components.`;
191
+ const prompt = `Generate comprehensive documentation for the following React component:
192
+
193
+ **Component Specification:**
194
+ - Name: ${componentSpec.name}
195
+ - Description: ${componentSpec.description}
196
+ - Type: ${componentSpec.type}
197
+
198
+ **Component Code:**
199
+ \`\`\`tsx
200
+ ${componentCode}
201
+ \`\`\`
202
+
203
+ Please generate:
204
+ 1. **README.md**: Complete component documentation with usage examples
205
+ 2. **Inline Comments**: Enhanced JSDoc comments for the component
206
+ 3. **Props Documentation**: Detailed prop interface documentation
207
+ 4. **Usage Examples**: Multiple usage scenarios and examples
208
+ 5. **Best Practices**: Component-specific best practices and tips
209
+
210
+ Format the response as a structured documentation with clear sections.`;
211
+ const response = await this.generate({
212
+ prompt,
213
+ systemPrompt,
214
+ temperature: 0.7,
215
+ maxTokens: 6000,
216
+ });
217
+ return response.content;
218
+ }
219
+ /**
220
+ * Test connection to X.AI API
221
+ */
222
+ async testConnection() {
223
+ try {
224
+ const response = await this.generate({
225
+ prompt: "Hello, this is a test message.",
226
+ maxTokens: 10,
227
+ });
228
+ return !!response.content;
229
+ }
230
+ catch (error) {
231
+ console.error("X.AI connection test failed:", error);
232
+ return false;
233
+ }
234
+ }
235
+ /**
236
+ * List available models
237
+ */
238
+ async listModels() {
239
+ // X.AI currently supports these models
240
+ return ["grok-4", "grok-4-mini", "grok-4-flash", "grok-4-omni"];
241
+ }
242
+ }
243
+ exports.XAIClient = XAIClient;
244
+ //# sourceMappingURL=xaiClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xaiClient.js","sourceRoot":"","sources":["../../../../src/utils/xaiClient.ts"],"names":[],"mappings":";;;AA4BA,MAAa,SAAS;IAIpB,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,qBAAqB,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAmB;QAChC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC;YAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;YAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;YACrE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;YAEvC,MAAM,QAAQ,GAAG,EAAE,CAAC;YAEpB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;YACnE,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAEzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,mBAAmB,EAAE;gBAC/D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;iBAC9C;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,QAAQ;oBACR,KAAK;oBACL,WAAW;oBACX,UAAU,EAAE,SAAS;oBACrB,MAAM;iBACP,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ,CAAC;gBACnE,MAAM,IAAI,KAAK,CACb,SAAS,CAAC,KAAK,EAAE,OAAO;oBACtB,mBAAmB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAC9D,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAQ,CAAC;YAE5C,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;gBAChD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK;gBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa;aAC7C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,2BACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,kBAA0B;QAE1B,MAAM,YAAY,GAAG,gKAAgK,CAAC;QAEtL,MAAM,MAAM,GAAG;;EAEjB,kBAAkB;;;;;;;;;;;;;;;;+HAgB2G,CAAC;QAE5H,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;YACnC,MAAM;YACN,YAAY;YACZ,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CAAC,kBAA0B;QACpD,MAAM,YAAY,GAAG,yIAAyI,CAAC;QAE/J,MAAM,MAAM,GAAG;;EAEjB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CA6BsB,CAAC;QAEvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;YACnC,MAAM;YACN,YAAY;YACZ,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,aAAkB,EAClB,SAAiB;QAEjB,MAAM,YAAY,GAAG,gLAAgL,CAAC;QAEtM,MAAM,MAAM,GAAG;;;UAGT,aAAa,CAAC,IAAI;iBACX,aAAa,CAAC,WAAW;UAChC,aAAa,CAAC,IAAI;WACjB,SAAS;kBACF,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM;UACxD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;6EAsB2B,CAAC;QAE1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;YACnC,MAAM;YACN,YAAY;YACZ,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACzB,aAAqB,EACrB,aAAkB;QAElB,MAAM,YAAY,GAAG,8IAA8I,CAAC;QAEpK,MAAM,MAAM,GAAG;;;UAGT,aAAa,CAAC,IAAI;iBACX,aAAa,CAAC,WAAW;UAChC,aAAa,CAAC,IAAI;;;;EAI1B,aAAa;;;;;;;;;;uEAUwD,CAAC;QAEpE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;YACnC,MAAM;YACN,YAAY;YACZ,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;gBACnC,MAAM,EAAE,gCAAgC;gBACxC,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,uCAAuC;QACvC,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IAClE,CAAC;CACF;AArRD,8BAqRC"}
@@ -0,0 +1,125 @@
1
+ export interface GenerationData {
2
+ userId: string;
3
+ componentName: string;
4
+ group: string;
5
+ qualityScore: number;
6
+ aiProvider: string;
7
+ executionTime: number;
8
+ modelUsed: string;
9
+ tokensUsed: number;
10
+ generationTime: number;
11
+ success: boolean;
12
+ error?: string;
13
+ metadata?: Record<string, unknown>;
14
+ }
15
+ export interface UsageData {
16
+ userId: string;
17
+ action: string;
18
+ metadata: Record<string, unknown>;
19
+ timestamp: Date;
20
+ sessionId?: string;
21
+ userAgent?: string;
22
+ ip?: string;
23
+ }
24
+ export interface AnalyticsMetrics {
25
+ totalGenerations: number;
26
+ averageQuality: number;
27
+ successRate: number;
28
+ popularComponents: Array<{
29
+ name: string;
30
+ count: number;
31
+ }>;
32
+ qualityDistribution: Record<string, number>;
33
+ providerPerformance: Record<string, {
34
+ success: number;
35
+ total: number;
36
+ avgLatency: number;
37
+ }>;
38
+ recentActivity: Array<{
39
+ timestamp: Date;
40
+ action: string;
41
+ componentName?: string;
42
+ qualityScore?: number;
43
+ }>;
44
+ }
45
+ export declare class UsageTracker {
46
+ private sessionCache;
47
+ private isEnabled;
48
+ private trackUsers;
49
+ private trackGenerations;
50
+ private trackPerformance;
51
+ /**
52
+ * Track component generation with comprehensive analytics
53
+ */
54
+ trackGeneration(data: GenerationData): Promise<void>;
55
+ /**
56
+ * Track user actions (preview, download, share, etc.)
57
+ */
58
+ trackUserAction(data: UsageData): Promise<void>;
59
+ /**
60
+ * Track AI provider performance
61
+ */
62
+ trackProviderPerformance(provider: string, success: boolean, latency: number, error?: string): Promise<void>;
63
+ /**
64
+ * Track CLI generation events
65
+ */
66
+ trackCLIGeneration(userId: string, componentName: string, group: string, success: boolean, executionTime: number, error?: string): Promise<void>;
67
+ /**
68
+ * Track API generation events
69
+ */
70
+ trackAPIGeneration(userId: string, componentName: string, group: string, success: boolean, executionTime: number, aiProvider: string, qualityScore: number, error?: string): Promise<void>;
71
+ /**
72
+ * Get usage statistics for a user
73
+ */
74
+ getUserStats(userId: string, period?: "day" | "week" | "month"): Promise<AnalyticsMetrics>;
75
+ /**
76
+ * Get system-wide analytics
77
+ */
78
+ getSystemAnalytics(): Promise<AnalyticsMetrics>;
79
+ /**
80
+ * Track billing usage for pricing tiers
81
+ */
82
+ trackBillingUsage(userId: string, action: string, cost: number): Promise<void>;
83
+ /**
84
+ * Get user's current tier
85
+ */
86
+ private getUserTier;
87
+ /**
88
+ * Record usage in InstantDB
89
+ */
90
+ private recordUsage;
91
+ /**
92
+ * Process user statistics from InstantDB data
93
+ */
94
+ private processUserStats;
95
+ /**
96
+ * Process system statistics from InstantDB data
97
+ */
98
+ private processSystemStats;
99
+ /**
100
+ * Calculate quality distribution
101
+ */
102
+ private calculateQualityDistribution;
103
+ /**
104
+ * Calculate provider performance
105
+ */
106
+ private calculateProviderPerformance;
107
+ /**
108
+ * Get mock user statistics (fallback)
109
+ */
110
+ private getMockUserStats;
111
+ /**
112
+ * Get mock system statistics (fallback)
113
+ */
114
+ private getMockSystemStats;
115
+ /**
116
+ * Get start date for period
117
+ */
118
+ private getStartDate;
119
+ /**
120
+ * Generate session ID for user
121
+ */
122
+ private generateSessionId;
123
+ }
124
+ export declare const usageTracker: UsageTracker;
125
+ //# sourceMappingURL=usage-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-tracker.d.ts","sourceRoot":"","sources":["../../../../lib/analytics/usage-tracker.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,mBAAmB,EAAE,MAAM,CACzB,MAAM,EACN;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CACvD,CAAC;IACF,cAAc,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE,IAAI,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;CACJ;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,gBAAgB,CAAsD;IAC9E,OAAO,CAAC,gBAAgB,CAAsD;IAE9E;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD1D;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAarD;;OAEG;IACG,wBAAwB,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAuBhB;;OAEG;IACG,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IA4BhB;;OAEG;IACG,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IA4BhB;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,OAAiB,GACzC,OAAO,CAAC,gBAAgB,CAAC;IAkB5B;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAgBrD;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;YACW,WAAW;IAgBzB;;OAEG;YACW,WAAW;IAgCzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAsBpC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA0CpC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmCxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmC1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAS1B;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}