mycontext-cli 0.2.11 → 0.2.12

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 (38) hide show
  1. package/README.md +48 -573
  2. package/dist/agents/implementations/QASubAgent.d.ts +1 -1
  3. package/dist/agents/implementations/QASubAgent.d.ts.map +1 -1
  4. package/dist/agents/implementations/QASubAgent.js +4 -9
  5. package/dist/agents/implementations/QASubAgent.js.map +1 -1
  6. package/dist/cli.js +17 -5
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/generate-components.d.ts +15 -0
  9. package/dist/commands/generate-components.d.ts.map +1 -1
  10. package/dist/commands/generate-components.js +347 -25
  11. package/dist/commands/generate-components.js.map +1 -1
  12. package/dist/commands/generate.d.ts +13 -1
  13. package/dist/commands/generate.d.ts.map +1 -1
  14. package/dist/commands/generate.js +403 -76
  15. package/dist/commands/generate.js.map +1 -1
  16. package/dist/commands/init.d.ts +2 -0
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +49 -30
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/model.d.ts.map +1 -1
  21. package/dist/commands/model.js +134 -96
  22. package/dist/commands/model.js.map +1 -1
  23. package/dist/config/ai-providers.json +29 -6
  24. package/dist/types/index.d.ts +1 -1
  25. package/dist/types/index.d.ts.map +1 -1
  26. package/dist/utils/githubModelsClient.d.ts +27 -0
  27. package/dist/utils/githubModelsClient.d.ts.map +1 -0
  28. package/dist/utils/githubModelsClient.js +280 -0
  29. package/dist/utils/githubModelsClient.js.map +1 -0
  30. package/dist/utils/hybridAIClient.d.ts +18 -1
  31. package/dist/utils/hybridAIClient.d.ts.map +1 -1
  32. package/dist/utils/hybridAIClient.js +113 -12
  33. package/dist/utils/hybridAIClient.js.map +1 -1
  34. package/dist/utils/spinner.d.ts +0 -3
  35. package/dist/utils/spinner.d.ts.map +1 -1
  36. package/dist/utils/spinner.js +3 -27
  37. package/dist/utils/spinner.js.map +1 -1
  38. package/package.json +1 -1
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.GitHubModelsClient = void 0;
40
+ const node_fetch_1 = __importDefault(require("node-fetch"));
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ class GitHubModelsClient {
44
+ constructor() {
45
+ this.baseUrl =
46
+ process.env.GITHUB_MODELS_BASE_URL ||
47
+ "https://models.github.ai/inference";
48
+ this.token =
49
+ process.env.MYCONTEXT_GITHUB_TOKEN || process.env.GITHUB_TOKEN || null;
50
+ if (!this.token) {
51
+ const loaded = this.loadTokenFromEnvFiles();
52
+ if (loaded) {
53
+ this.token = loaded;
54
+ }
55
+ }
56
+ }
57
+ hasApiKey() {
58
+ return !!this.token;
59
+ }
60
+ /**
61
+ * Load token from project-level env files without external deps
62
+ * Priority: .mycontext/.env -> .env
63
+ */
64
+ loadTokenFromEnvFiles() {
65
+ try {
66
+ const cwd = process.cwd();
67
+ const candidates = [
68
+ path.join(cwd, ".mycontext", ".env"),
69
+ path.join(cwd, ".env"),
70
+ ];
71
+ for (const file of candidates) {
72
+ if (fs.existsSync(file)) {
73
+ const raw = fs.readFileSync(file, "utf8");
74
+ const lines = raw.split(/\r?\n/);
75
+ for (const line of lines) {
76
+ const trimmed = line.trim();
77
+ if (!trimmed || trimmed.startsWith("#"))
78
+ continue;
79
+ const idx = trimmed.indexOf("=");
80
+ if (idx === -1)
81
+ continue;
82
+ const key = trimmed.slice(0, idx).trim();
83
+ const value = trimmed
84
+ .slice(idx + 1)
85
+ .trim()
86
+ .replace(/^['"]|['"]$/g, "");
87
+ if (!process.env[key]) {
88
+ process.env[key] = value;
89
+ }
90
+ }
91
+ const token = process.env.MYCONTEXT_GITHUB_TOKEN ||
92
+ process.env.GITHUB_TOKEN ||
93
+ null;
94
+ if (token)
95
+ return token;
96
+ }
97
+ }
98
+ }
99
+ catch {
100
+ // ignore
101
+ }
102
+ return null;
103
+ }
104
+ headers() {
105
+ const h = { "Content-Type": "application/json" };
106
+ if (this.token)
107
+ h.Authorization = `Bearer ${this.token}`;
108
+ return h;
109
+ }
110
+ async checkConnection() {
111
+ try {
112
+ const controller = new AbortController();
113
+ const timeout = setTimeout(() => controller.abort(), 15000);
114
+ const res = await (0, node_fetch_1.default)(`${this.baseUrl}/chat/completions`, {
115
+ method: "POST",
116
+ headers: this.headers(),
117
+ body: JSON.stringify({
118
+ model: "openai/gpt-5",
119
+ messages: [
120
+ { role: "system", content: "ping" },
121
+ { role: "user", content: "ping" },
122
+ ],
123
+ max_tokens: 1,
124
+ }),
125
+ signal: controller.signal,
126
+ });
127
+ clearTimeout(timeout);
128
+ // Consider any reachable response as available; details handled at call time
129
+ return this.hasApiKey();
130
+ }
131
+ catch {
132
+ // If we have a token, allow attempts even if the health probe fails
133
+ return this.hasApiKey();
134
+ }
135
+ }
136
+ async generateText(prompt, opts = {}) {
137
+ const options = {
138
+ model: opts.model || process.env.MYCONTEXT_MODEL || "openai/gpt-5",
139
+ modelCandidates: opts.modelCandidates ||
140
+ (process.env.MYCONTEXT_MODEL_CANDIDATES
141
+ ? process.env.MYCONTEXT_MODEL_CANDIDATES.split(",")
142
+ .map((s) => s.trim())
143
+ .filter(Boolean)
144
+ : undefined),
145
+ temperature: opts.temperature ?? 0.2,
146
+ maxTokens: opts.maxTokens ?? 1024,
147
+ };
148
+ const messages = [
149
+ {
150
+ role: "system",
151
+ content: "You are a concise, expert product/dev assistant.",
152
+ },
153
+ { role: "user", content: prompt },
154
+ ];
155
+ // Build model attempt list (primary then candidates, deduped)
156
+ const modelsToTry = Array.from(new Set([options.model, ...(options.modelCandidates || [])]));
157
+ const maxRetries = parseInt(process.env.MYCONTEXT_GITHUB_RETRIES || "1", 10);
158
+ for (const modelName of modelsToTry) {
159
+ let attempt = 0;
160
+ while (true) {
161
+ const controller = new AbortController();
162
+ const timeout = setTimeout(() => controller.abort(), 60000);
163
+ try {
164
+ const res = await (0, node_fetch_1.default)(`${this.baseUrl}/chat/completions`, {
165
+ method: "POST",
166
+ headers: this.headers(),
167
+ body: JSON.stringify({
168
+ model: modelName,
169
+ messages,
170
+ temperature: options.temperature,
171
+ max_tokens: options.maxTokens,
172
+ }),
173
+ signal: controller.signal,
174
+ });
175
+ clearTimeout(timeout);
176
+ if (!res.ok) {
177
+ const txt = await res.text();
178
+ // Handle rate limiting with backoff
179
+ if (res.status === 429 && attempt < maxRetries) {
180
+ // Derive wait seconds from header or body
181
+ const retryHeader = res.headers.get("retry-after");
182
+ let waitSeconds = retryHeader ? parseInt(retryHeader, 10) : NaN;
183
+ if (!Number.isFinite(waitSeconds)) {
184
+ const m = txt.match(/wait\s+(\d+)\s+seconds/i);
185
+ waitSeconds = m ? parseInt(m[1], 10) : 60;
186
+ }
187
+ // Clamp and add tiny jitter
188
+ waitSeconds = Math.max(1, Math.min(waitSeconds, 120));
189
+ console.log(`[GitHubModelsClient] Rate limited. Retrying in ${waitSeconds}s (attempt ${attempt + 1}/${maxRetries})`);
190
+ await new Promise((r) => setTimeout(r, waitSeconds * 1000));
191
+ attempt += 1;
192
+ continue; // retry loop
193
+ }
194
+ // Try next candidate for auth/not-found/validation errors
195
+ if ((res.status === 401 ||
196
+ res.status === 404 ||
197
+ res.status === 422) &&
198
+ modelsToTry.length > 1) {
199
+ console.log(`[GitHubModelsClient] Model ${modelName} failed (HTTP ${res.status}). Trying next candidate...`);
200
+ break; // break retry loop and move to next model
201
+ }
202
+ throw new Error(`HTTP ${res.status}: ${txt}`);
203
+ }
204
+ const data = await res.json();
205
+ const content = data?.choices?.[0]?.message?.content ?? "";
206
+ return String(content).trim();
207
+ }
208
+ catch (err) {
209
+ clearTimeout(timeout);
210
+ if (err?.name === "AbortError") {
211
+ throw new Error("GitHub Models timed out after 60s");
212
+ }
213
+ // On network hiccups, allow a single quick retry if configured
214
+ if (attempt < maxRetries) {
215
+ console.log(`[GitHubModelsClient] Error: ${err?.message || err}. Retrying (${attempt + 1}/${maxRetries})...`);
216
+ attempt += 1;
217
+ await new Promise((r) => setTimeout(r, 1500));
218
+ continue;
219
+ }
220
+ // Move to next model if available
221
+ if (modelsToTry.length > 1) {
222
+ console.log(`[GitHubModelsClient] Model ${modelName} error after retries. Trying next candidate...`);
223
+ break;
224
+ }
225
+ throw new Error(`GitHub Models request failed: ${err?.message || err}`);
226
+ }
227
+ }
228
+ }
229
+ throw new Error("All GitHub Models candidates failed");
230
+ }
231
+ /**
232
+ * Attempt to list available models from GitHub Models. Falls back to a curated set.
233
+ */
234
+ async listModels() {
235
+ // Try several common endpoints; schema may vary
236
+ const candidates = [`${this.baseUrl}/models`, `${this.baseUrl}/v1/models`];
237
+ for (const url of candidates) {
238
+ try {
239
+ const res = await (0, node_fetch_1.default)(url, { headers: this.headers() });
240
+ if (!res.ok)
241
+ continue;
242
+ const data = await res.json();
243
+ // Normalize: support { data: [{ id }]} or { models: [string] }
244
+ if (Array.isArray(data?.data)) {
245
+ const ids = data.data
246
+ .map((m) => m?.id || m?.name)
247
+ .filter(Boolean);
248
+ if (ids.length)
249
+ return ids;
250
+ }
251
+ if (Array.isArray(data?.models)) {
252
+ const ids = data.models
253
+ .map((m) => (typeof m === "string" ? m : m?.id || m?.name))
254
+ .filter(Boolean);
255
+ if (ids.length)
256
+ return ids;
257
+ }
258
+ }
259
+ catch {
260
+ // ignore and try next
261
+ }
262
+ }
263
+ // Curated fallback set commonly available on GitHub Models
264
+ return [
265
+ "openai/gpt-5",
266
+ "deepseek/DeepSeek-V3-0324",
267
+ "meta/Llama-4-Scout-17B-16E-Instruct",
268
+ "mistral-ai/Codestral-2501",
269
+ "nvidia/llama-3.1-nemotron-70b-instruct",
270
+ ];
271
+ }
272
+ async generateComponent(prompt, opts) {
273
+ return this.generateText(`Generate a single React component. Output only a code block.\n\n${prompt}`, opts);
274
+ }
275
+ async generateComponentRefinement(componentCode, prompt, opts) {
276
+ return this.generateText(`Refine the following React component with the prompt. Return only a single code block.\n\nComponent:\n\`\`\`tsx\n${componentCode}\n\`\`\`\n\nPrompt: ${prompt}`, opts);
277
+ }
278
+ }
279
+ exports.GitHubModelsClient = GitHubModelsClient;
280
+ //# sourceMappingURL=githubModelsClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"githubModelsClient.js","sourceRoot":"","sources":["../../src/utils/githubModelsClient.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { OllamaClient } from "./ollamaClient";
2
2
  import { HuggingFaceClient } from "./huggingFaceClient";
3
+ import { GitHubModelsClient } from "./githubModelsClient";
3
4
  export interface AIProvider {
4
5
  name: string;
5
6
  priority: number;
6
- client: OllamaClient | HuggingFaceClient;
7
+ client: OllamaClient | HuggingFaceClient | GitHubModelsClient;
7
8
  isAvailable: () => Promise<boolean>;
8
9
  }
9
10
  export interface AIProviderConfig {
@@ -17,6 +18,7 @@ export interface AIProviderConfig {
17
18
  };
18
19
  }
19
20
  export interface AIConfig {
21
+ github: AIProviderConfig;
20
22
  huggingface: AIProviderConfig;
21
23
  ollama: AIProviderConfig;
22
24
  fallback: AIProviderConfig;
@@ -38,6 +40,14 @@ export declare class HybridAIClient {
38
40
  * Get the best available provider
39
41
  */
40
42
  private getBestProvider;
43
+ /**
44
+ * Expose current/next-best provider name for UX (e.g., spinner labels)
45
+ */
46
+ getActiveProviderName(): Promise<string>;
47
+ /**
48
+ * Best-effort model name for generic text generation per provider
49
+ */
50
+ getActiveTextModelName(): Promise<string>;
41
51
  /**
42
52
  * Generate component refinement using the best available provider
43
53
  */
@@ -54,6 +64,13 @@ export declare class HybridAIClient {
54
64
  provider: string;
55
65
  explanation?: string;
56
66
  }>;
67
+ /**
68
+ * Generate generic text (used for PRD, types, brand, etc.)
69
+ */
70
+ generateText(prompt: string, options?: any): Promise<{
71
+ text: string;
72
+ provider: string;
73
+ }>;
57
74
  /**
58
75
  * Parse AI response to separate code from explanation
59
76
  */
@@ -1 +1 @@
1
- {"version":3,"file":"hybridAIClient.d.ts","sourceRoot":"","sources":["../../src/utils/hybridAIClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,GAAG,iBAAiB,CAAC;IACzC,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,MAAM,CAAyB;;IAOvC;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;YACW,mBAAmB;IAgCjC;;OAEG;YACW,eAAe;IA2B7B;;OAEG;IACG,2BAA2B,CAC/B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAyDpE;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAqDpE;;OAEG;IACH,OAAO,CAAC,eAAe;IAsCvB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAChC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAC9D;IAuBD;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAQ3C"}
1
+ {"version":3,"file":"hybridAIClient.d.ts","sourceRoot":"","sources":["../../src/utils/hybridAIClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;IAC9D,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,MAAM,CAAyB;;IAOvC;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;YACW,mBAAmB;IAiDjC;;OAEG;YACW,eAAe;IAqC7B;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK9C;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IA6B/C;;OAEG;IACG,2BAA2B,CAC/B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAgEpE;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAwDpE;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAyC9C;;OAEG;IACH,OAAO,CAAC,eAAe;IAsCvB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAChC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAC9D;IAuBD;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAQ3C"}
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.HybridAIClient = void 0;
37
37
  const ollamaClient_1 = require("./ollamaClient");
38
38
  const huggingFaceClient_1 = require("./huggingFaceClient");
39
+ const githubModelsClient_1 = require("./githubModelsClient");
39
40
  const fs = __importStar(require("fs"));
40
41
  const path = __importStar(require("path"));
41
42
  class HybridAIClient {
@@ -51,12 +52,12 @@ class HybridAIClient {
51
52
  */
52
53
  loadConfig() {
53
54
  try {
54
- const configPath = path.join(__dirname, '../config/ai-providers.json');
55
- const configData = fs.readFileSync(configPath, 'utf8');
55
+ const configPath = path.join(__dirname, "../config/ai-providers.json");
56
+ const configData = fs.readFileSync(configPath, "utf8");
56
57
  this.config = JSON.parse(configData);
57
58
  }
58
59
  catch (error) {
59
- console.log('[HybridAIClient] Could not load config, using defaults');
60
+ console.log("[HybridAIClient] Could not load config, using defaults");
60
61
  this.config = null;
61
62
  }
62
63
  }
@@ -64,6 +65,18 @@ class HybridAIClient {
64
65
  * Initialize available AI providers based on configuration
65
66
  */
66
67
  async initializeProviders() {
68
+ // Add GitHub Models if enabled and token available
69
+ if (this.config?.github?.enabled) {
70
+ const githubClient = new githubModelsClient_1.GitHubModelsClient();
71
+ if (githubClient.hasApiKey()) {
72
+ this.providers.push({
73
+ name: "github",
74
+ priority: this.config.github.priority,
75
+ client: githubClient,
76
+ isAvailable: () => githubClient.checkConnection(),
77
+ });
78
+ }
79
+ }
67
80
  // Add Hugging Face if enabled and API key available
68
81
  if (this.config?.huggingface.enabled) {
69
82
  const huggingFaceClient = new huggingFaceClient_1.HuggingFaceClient();
@@ -88,19 +101,31 @@ class HybridAIClient {
88
101
  }
89
102
  // Sort by priority
90
103
  this.providers.sort((a, b) => a.priority - b.priority);
91
- console.log(`[HybridAIClient] Initialized ${this.providers.length} providers:`, this.providers.map(p => `${p.name} (priority: ${p.priority})`).join(', '));
104
+ console.log(`[HybridAIClient] Initialized ${this.providers.length} providers:`, this.providers
105
+ .map((p) => `${p.name} (priority: ${p.priority})`)
106
+ .join(", "));
92
107
  }
93
108
  /**
94
109
  * Get the best available provider
95
110
  */
96
111
  async getBestProvider() {
97
- if (this.currentProvider) {
98
- const isAvailable = await this.currentProvider.isAvailable();
99
- if (isAvailable) {
100
- return this.currentProvider;
112
+ // Optional override via env
113
+ const preferredName = process.env.MYCONTEXT_PROVIDER || process.env.AI_PROVIDER || "";
114
+ if (preferredName) {
115
+ const preferred = this.providers.find((p) => p.name === preferredName);
116
+ if (preferred) {
117
+ try {
118
+ if (await preferred.isAvailable()) {
119
+ this.currentProvider = preferred;
120
+ return preferred;
121
+ }
122
+ }
123
+ catch (error) {
124
+ console.log(`[HybridAIClient] Preferred provider ${preferred.name} not available: ${error}`);
125
+ }
101
126
  }
102
127
  }
103
- // Find the first available provider
128
+ // Always choose the highest-priority available provider
104
129
  for (const provider of this.providers) {
105
130
  try {
106
131
  const isAvailable = await provider.isAvailable();
@@ -111,11 +136,45 @@ class HybridAIClient {
111
136
  }
112
137
  catch (error) {
113
138
  console.log(`[HybridAIClient] Provider ${provider.name} not available: ${error}`);
114
- continue;
115
139
  }
116
140
  }
117
141
  return null;
118
142
  }
143
+ /**
144
+ * Expose current/next-best provider name for UX (e.g., spinner labels)
145
+ */
146
+ async getActiveProviderName() {
147
+ const provider = await this.getBestProvider();
148
+ return provider?.name ?? "unknown";
149
+ }
150
+ /**
151
+ * Best-effort model name for generic text generation per provider
152
+ */
153
+ async getActiveTextModelName() {
154
+ const provider = await this.getBestProvider();
155
+ if (!provider)
156
+ return "unknown";
157
+ if (provider.name === "github") {
158
+ // If user provided candidates via env, prefer the first
159
+ const envCandidates = process.env.MYCONTEXT_MODEL_CANDIDATES;
160
+ if (envCandidates) {
161
+ const first = envCandidates
162
+ .split(",")
163
+ .map((s) => s.trim())
164
+ .filter(Boolean)[0];
165
+ if (first)
166
+ return first;
167
+ }
168
+ return (this.config?.github?.models?.["component-generator"]?.name ||
169
+ "openai/gpt-5");
170
+ }
171
+ if (provider.name === "huggingface") {
172
+ return (this.config?.huggingface?.models?.["component-generator"]?.name ||
173
+ "mycontext/react-component-generator");
174
+ }
175
+ // ollama default
176
+ return "mycontext-react";
177
+ }
119
178
  /**
120
179
  * Generate component refinement using the best available provider
121
180
  */
@@ -127,7 +186,11 @@ class HybridAIClient {
127
186
  try {
128
187
  console.log(`[HybridAIClient] Using provider: ${provider.name}`);
129
188
  let result;
130
- if (provider.name === "huggingface") {
189
+ if (provider.name === "github") {
190
+ const githubClient = provider.client;
191
+ result = await githubClient.generateComponentRefinement(componentCode, prompt, options);
192
+ }
193
+ else if (provider.name === "huggingface") {
131
194
  const huggingFaceClient = provider.client;
132
195
  result = await huggingFaceClient.generateComponentRefinement(componentCode, prompt, options);
133
196
  }
@@ -165,7 +228,11 @@ class HybridAIClient {
165
228
  try {
166
229
  console.log(`[HybridAIClient] Using provider: ${provider.name}`);
167
230
  let result;
168
- if (provider.name === "huggingface") {
231
+ if (provider.name === "github") {
232
+ const githubClient = provider.client;
233
+ result = await githubClient.generateComponent(prompt, options);
234
+ }
235
+ else if (provider.name === "huggingface") {
169
236
  const huggingFaceClient = provider.client;
170
237
  result = await huggingFaceClient.generateComponent(prompt, options);
171
238
  }
@@ -192,6 +259,40 @@ class HybridAIClient {
192
259
  throw error;
193
260
  }
194
261
  }
262
+ /**
263
+ * Generate generic text (used for PRD, types, brand, etc.)
264
+ */
265
+ async generateText(prompt, options = {}) {
266
+ const provider = await this.getBestProvider();
267
+ if (!provider) {
268
+ throw new Error("No AI providers available. Please configure GitHub token or start Ollama.");
269
+ }
270
+ try {
271
+ let text;
272
+ if (provider.name === "github") {
273
+ const githubClient = provider.client;
274
+ text = await githubClient.generateText(prompt, options);
275
+ }
276
+ else if (provider.name === "huggingface") {
277
+ const hfClient = provider.client;
278
+ text = await hfClient.generateComponent(prompt, options);
279
+ }
280
+ else {
281
+ const olClient = provider.client;
282
+ text = await olClient.generateComponent(prompt, "mycontext-react");
283
+ }
284
+ return { text, provider: provider.name };
285
+ }
286
+ catch (error) {
287
+ console.log(`[HybridAIClient] Provider ${provider.name} failed: ${error.message}`);
288
+ const nextProvider = this.providers.find((p) => p.priority > provider.priority);
289
+ if (nextProvider) {
290
+ console.log(`[HybridAIClient] Trying next provider: ${nextProvider.name}`);
291
+ return this.generateText(prompt, options);
292
+ }
293
+ throw error;
294
+ }
295
+ }
195
296
  /**
196
297
  * Parse AI response to separate code from explanation
197
298
  */
@@ -1 +1 @@
1
- {"version":3,"file":"hybridAIClient.js","sourceRoot":"","sources":["../../src/utils/hybridAIClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA8C;AAC9C,2DAAwD;AACxD,uCAAyB;AACzB,2CAA6B;AA0B7B,MAAa,cAAc;IAKzB;QAJQ,cAAS,GAAiB,EAAE,CAAC;QAC7B,oBAAe,GAAsB,IAAI,CAAC;QAC1C,WAAM,GAAoB,IAAI,CAAC;QAGrC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;YACvE,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB;QAC/B,oDAAoD;QACpD,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,EAAE,CAAC;YAClD,IAAI,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ;oBAC1C,MAAM,EAAE,iBAAiB;oBACzB,WAAW,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE;iBACvD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ;gBACrC,MAAM,EAAE,YAAY;gBACpB,WAAW,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE;aAClD,CAAC,CAAC;QACL,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAEvD,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,MAAM,aAAa,EAC5E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe;QAC3B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YAC7D,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,eAAe,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACjD,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;oBAChC,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CACT,6BAA6B,QAAQ,CAAC,IAAI,mBAAmB,KAAK,EAAE,CACrE,CAAC;gBACF,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B,CAC/B,aAAqB,EACrB,MAAc,EACd,UAAe,EAAE;QAEjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,oCAAoC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAEjE,IAAI,MAAc,CAAC;YAEnB,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACpC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAA2B,CAAC;gBAC/D,MAAM,GAAG,MAAM,iBAAiB,CAAC,2BAA2B,CAC1D,aAAa,EACb,MAAM,EACN,OAAO,CACR,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAsB,CAAC;gBACrD,MAAM,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAC3C,aAAa,EACb,iBAAiB,CAClB,CAAC;YACJ,CAAC;YAED,+BAA+B;YAC/B,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAE3D,OAAO;gBACL,IAAI;gBACJ,QAAQ,EAAE,QAAQ,CAAC,IAAI;gBACvB,WAAW;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CACT,6BAA6B,QAAQ,CAAC,IAAI,YAAY,KAAK,CAAC,OAAO,EAAE,CACtE,CAAC;YAEF,oBAAoB;YACpB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CACtC,CAAC;YACF,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,0CAA0C,YAAY,CAAC,IAAI,EAAE,CAC9D,CAAC;gBACF,OAAO,IAAI,CAAC,2BAA2B,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,MAAc,EACd,UAAe,EAAE;QAEjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,oCAAoC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAEjE,IAAI,MAAc,CAAC;YAEnB,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACpC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAA2B,CAAC;gBAC/D,MAAM,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAsB,CAAC;gBACrD,MAAM,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAC3C,MAAM,EACN,iBAAiB,CAClB,CAAC;YACJ,CAAC;YAED,+BAA+B;YAC/B,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAE3D,OAAO;gBACL,IAAI;gBACJ,QAAQ,EAAE,QAAQ,CAAC,IAAI;gBACvB,WAAW;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CACT,6BAA6B,QAAQ,CAAC,IAAI,YAAY,KAAK,CAAC,OAAO,EAAE,CACtE,CAAC;YAEF,oBAAoB;YACpB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CACtC,CAAC;YACF,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,0CAA0C,YAAY,CAAC,IAAI,EAAE,CAC9D,CAAC;gBACF,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,QAAgB;QAItC,6BAA6B;QAC7B,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CACnC,sCAAsC,CACvC,CAAC;QAEF,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAElE,OAAO;gBACL,IAAI;gBACJ,WAAW,EAAE,WAAW,IAAI,SAAS;aACtC,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAC7B,qDAAqD,CACtD,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAE7D,OAAO;gBACL,IAAI;gBACJ,WAAW,EAAE,WAAW,IAAI,SAAS;aACtC,CAAC;QACJ,CAAC;QAED,4DAA4D;QAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QAGrB,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,SAAS;oBACT,QAAQ,EAAE,QAAQ,CAAC,QAAQ;iBAC5B,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,SAAS,EAAE,KAAK;oBAChB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;iBAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAc;QACjC,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAChC,CAAC;QACF,IAAI,mBAAmB,EAAE,CAAC;YACvB,mBAAmB,CAAC,MAA4B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;CACF;AApSD,wCAoSC"}
1
+ {"version":3,"file":"hybridAIClient.js","sourceRoot":"","sources":["../../src/utils/hybridAIClient.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,8 @@ export declare class EnhancedSpinner {
6
6
  private interval;
7
7
  private startTime;
8
8
  private lastLineLength;
9
- private encouragementMessages;
10
- private lastEncouragementTime;
11
9
  constructor(text: string);
12
10
  private clearLine;
13
- private getEncouragementMessage;
14
11
  private updateSpinner;
15
12
  start(): this;
16
13
  success(options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,qBAAqB,CAAW;IACxC,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,IAAI,EAAE,MAAM;IAuBxB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,aAAa;IAoBrB,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAY9C,KAAK,CAAC,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAU5C,IAAI,CAAC,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAY3C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5B,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAIzB,IAAI,IAAI,IAAI;CAQb"}
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,cAAc,CAAS;gBAGnB,IAAI,EAAE,MAAM;IAUxB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,aAAa;IAkBrB,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAY9C,KAAK,CAAC,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAU5C,IAAI,CAAC,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAY3C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5B,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAIzB,IAAI,IAAI,IAAI;CAQb"}