@nanocollective/nanocoder 1.11.4 → 1.12.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 (104) hide show
  1. package/README.md +2 -0
  2. package/dist/app/hooks/useAppInitialization.d.ts.map +1 -1
  3. package/dist/app/hooks/useAppInitialization.js +2 -1
  4. package/dist/app/hooks/useAppInitialization.js.map +1 -1
  5. package/dist/app/hooks/useAppState.d.ts +2 -0
  6. package/dist/app/hooks/useAppState.d.ts.map +1 -1
  7. package/dist/app/hooks/useAppState.js +3 -0
  8. package/dist/app/hooks/useAppState.js.map +1 -1
  9. package/dist/app/hooks/useChatHandler.d.ts.map +1 -1
  10. package/dist/app/hooks/useChatHandler.js +131 -5
  11. package/dist/app/hooks/useChatHandler.js.map +1 -1
  12. package/dist/app/hooks/useModeHandlers.d.ts +4 -1
  13. package/dist/app/hooks/useModeHandlers.d.ts.map +1 -1
  14. package/dist/app/hooks/useModeHandlers.js +11 -1
  15. package/dist/app/hooks/useModeHandlers.js.map +1 -1
  16. package/dist/app/hooks/useToolHandler.d.ts.map +1 -1
  17. package/dist/app/hooks/useToolHandler.js +66 -0
  18. package/dist/app/hooks/useToolHandler.js.map +1 -1
  19. package/dist/app/utils/appUtils.d.ts.map +1 -1
  20. package/dist/app/utils/appUtils.js +5 -1
  21. package/dist/app/utils/appUtils.js.map +1 -1
  22. package/dist/app.d.ts.map +1 -1
  23. package/dist/app.js +4 -1
  24. package/dist/app.js.map +1 -1
  25. package/dist/commands/index.d.ts +1 -0
  26. package/dist/commands/index.d.ts.map +1 -1
  27. package/dist/commands/index.js +1 -0
  28. package/dist/commands/index.js.map +1 -1
  29. package/dist/commands/recommendations.d.ts +8 -0
  30. package/dist/commands/recommendations.d.ts.map +1 -0
  31. package/dist/commands/recommendations.js +303 -0
  32. package/dist/commands/recommendations.js.map +1 -0
  33. package/dist/components/assistant-message.d.ts.map +1 -1
  34. package/dist/components/assistant-message.js +58 -33
  35. package/dist/components/assistant-message.js.map +1 -1
  36. package/dist/components/tool-confirmation.d.ts.map +1 -1
  37. package/dist/components/tool-confirmation.js +45 -8
  38. package/dist/components/tool-confirmation.js.map +1 -1
  39. package/dist/recommendations/model-database.d.ts +9 -0
  40. package/dist/recommendations/model-database.d.ts.map +1 -0
  41. package/dist/recommendations/model-database.js +455 -0
  42. package/dist/recommendations/model-database.js.map +1 -0
  43. package/dist/recommendations/model-engine.d.ts +16 -0
  44. package/dist/recommendations/model-engine.d.ts.map +1 -0
  45. package/dist/recommendations/model-engine.js +185 -0
  46. package/dist/recommendations/model-engine.js.map +1 -0
  47. package/dist/recommendations/recommendation-engine.d.ts +38 -0
  48. package/dist/recommendations/recommendation-engine.d.ts.map +1 -0
  49. package/dist/recommendations/recommendation-engine.js +138 -0
  50. package/dist/recommendations/recommendation-engine.js.map +1 -0
  51. package/dist/system/detector.d.ts +18 -0
  52. package/dist/system/detector.d.ts.map +1 -0
  53. package/dist/system/detector.js +140 -0
  54. package/dist/system/detector.js.map +1 -0
  55. package/dist/tools/create-file.d.ts.map +1 -1
  56. package/dist/tools/create-file.js +60 -2
  57. package/dist/tools/create-file.js.map +1 -1
  58. package/dist/tools/delete-lines.d.ts.map +1 -1
  59. package/dist/tools/delete-lines.js +61 -1
  60. package/dist/tools/delete-lines.js.map +1 -1
  61. package/dist/tools/execute-bash.d.ts.map +1 -1
  62. package/dist/tools/execute-bash.js +29 -0
  63. package/dist/tools/execute-bash.js.map +1 -1
  64. package/dist/tools/fetch-url.d.ts +3 -0
  65. package/dist/tools/fetch-url.d.ts.map +1 -0
  66. package/dist/tools/fetch-url.js +122 -0
  67. package/dist/tools/fetch-url.js.map +1 -0
  68. package/dist/tools/index.d.ts +6 -0
  69. package/dist/tools/index.d.ts.map +1 -1
  70. package/dist/tools/index.js +8 -0
  71. package/dist/tools/index.js.map +1 -1
  72. package/dist/tools/insert-lines.d.ts.map +1 -1
  73. package/dist/tools/insert-lines.js +48 -1
  74. package/dist/tools/insert-lines.js.map +1 -1
  75. package/dist/tools/read-file.d.ts.map +1 -1
  76. package/dist/tools/read-file.js +31 -3
  77. package/dist/tools/read-file.js.map +1 -1
  78. package/dist/tools/read-many-files.d.ts.map +1 -1
  79. package/dist/tools/read-many-files.js +43 -3
  80. package/dist/tools/read-many-files.js.map +1 -1
  81. package/dist/tools/replace-lines.d.ts.map +1 -1
  82. package/dist/tools/replace-lines.js +61 -1
  83. package/dist/tools/replace-lines.js.map +1 -1
  84. package/dist/tools/tool-manager.d.ts +10 -0
  85. package/dist/tools/tool-manager.d.ts.map +1 -1
  86. package/dist/tools/tool-manager.js +9 -1
  87. package/dist/tools/tool-manager.js.map +1 -1
  88. package/dist/tools/web-search.d.ts +3 -0
  89. package/dist/tools/web-search.d.ts.map +1 -0
  90. package/dist/tools/web-search.js +133 -0
  91. package/dist/tools/web-search.js.map +1 -0
  92. package/dist/types/app.d.ts +1 -0
  93. package/dist/types/app.d.ts.map +1 -1
  94. package/dist/types/core.d.ts +6 -0
  95. package/dist/types/core.d.ts.map +1 -1
  96. package/dist/types/index.d.ts +1 -0
  97. package/dist/types/index.d.ts.map +1 -1
  98. package/dist/types/index.js +1 -0
  99. package/dist/types/index.js.map +1 -1
  100. package/dist/types/system.d.ts +57 -0
  101. package/dist/types/system.d.ts.map +1 -0
  102. package/dist/types/system.js +2 -0
  103. package/dist/types/system.js.map +1 -0
  104. package/package.json +7 -1
@@ -0,0 +1,455 @@
1
+ export const MODEL_DATABASE = [
2
+ {
3
+ name: 'qwen2.5-coder:0.5b',
4
+ author: 'Alibaba',
5
+ size: '0.5B',
6
+ local: true,
7
+ api: false,
8
+ minMemoryGB: 2,
9
+ quality: {
10
+ agentic: 0,
11
+ local: 10,
12
+ cost: 10,
13
+ },
14
+ costType: 'free',
15
+ costDetails: 'Free to run locally.',
16
+ },
17
+ {
18
+ name: 'qwen2.5-coder:1.5b',
19
+ author: 'Alibaba',
20
+ size: '1.5B',
21
+ local: true,
22
+ api: false,
23
+ minMemoryGB: 2,
24
+ quality: {
25
+ agentic: 0,
26
+ local: 10,
27
+ cost: 10,
28
+ },
29
+ costType: 'free',
30
+ costDetails: 'Free to run locally.',
31
+ },
32
+ {
33
+ name: 'qwen2.5-coder:3b',
34
+ author: 'Alibaba',
35
+ size: '3B',
36
+ local: true,
37
+ api: false,
38
+ minMemoryGB: 4,
39
+ quality: {
40
+ agentic: 1,
41
+ local: 10,
42
+ cost: 10,
43
+ },
44
+ costType: 'free',
45
+ costDetails: 'Free to run locally.',
46
+ },
47
+ {
48
+ name: 'qwen2.5-coder:7b',
49
+ author: 'Alibaba',
50
+ size: '7B',
51
+ local: true,
52
+ api: true,
53
+ minMemoryGB: 8,
54
+ quality: {
55
+ agentic: 2,
56
+ local: 9,
57
+ cost: 10,
58
+ },
59
+ costType: 'free',
60
+ costDetails: 'Free to run locally. API: from $0.03/M input, $0.09/M output.',
61
+ },
62
+ {
63
+ name: 'qwen2.5-coder:14b',
64
+ author: 'Alibaba',
65
+ size: '14B',
66
+ local: true,
67
+ api: false,
68
+ minMemoryGB: 12,
69
+ quality: {
70
+ agentic: 3,
71
+ local: 8,
72
+ cost: 10,
73
+ },
74
+ costType: 'free',
75
+ costDetails: 'Free to run locally.',
76
+ },
77
+ {
78
+ name: 'qwen2.5-coder:32b',
79
+ author: 'Alibaba',
80
+ size: '32B',
81
+ local: true,
82
+ api: true,
83
+ minMemoryGB: 24,
84
+ quality: {
85
+ agentic: 5,
86
+ local: 7,
87
+ cost: 10,
88
+ },
89
+ costType: 'free',
90
+ costDetails: 'Free to run locally. API: from $0.04/M input, $0.16/M output.',
91
+ },
92
+ {
93
+ name: 'gemma3:270m',
94
+ author: 'Google',
95
+ size: '270M',
96
+ local: true,
97
+ api: false,
98
+ minMemoryGB: 2,
99
+ quality: {
100
+ agentic: 0,
101
+ local: 10,
102
+ cost: 10,
103
+ },
104
+ costType: 'free',
105
+ costDetails: 'Free to run locally.',
106
+ },
107
+ {
108
+ name: 'gemma3:1b',
109
+ author: 'Google',
110
+ size: '1B',
111
+ local: true,
112
+ api: false,
113
+ minMemoryGB: 2,
114
+ quality: {
115
+ agentic: 0,
116
+ local: 10,
117
+ cost: 10,
118
+ },
119
+ costType: 'free',
120
+ costDetails: 'Free to run locally.',
121
+ },
122
+ {
123
+ name: 'gemma3:4b',
124
+ author: 'Google',
125
+ size: '4B',
126
+ local: true,
127
+ api: true,
128
+ minMemoryGB: 4,
129
+ quality: {
130
+ agentic: 0,
131
+ local: 10,
132
+ cost: 10,
133
+ },
134
+ costType: 'free',
135
+ costDetails: 'Free to run locally. API: from $0.04/M input, $0.08/M output.',
136
+ },
137
+ {
138
+ name: 'gemma3:12b',
139
+ author: 'Google',
140
+ size: '12B',
141
+ local: true,
142
+ api: false,
143
+ minMemoryGB: 10,
144
+ quality: {
145
+ agentic: 1,
146
+ local: 7,
147
+ cost: 10,
148
+ },
149
+ costType: 'free',
150
+ costDetails: 'Free to run locally.',
151
+ },
152
+ {
153
+ name: 'gemma3:27b',
154
+ author: 'Google',
155
+ size: '27B',
156
+ local: true,
157
+ api: true,
158
+ minMemoryGB: 20,
159
+ quality: {
160
+ agentic: 2,
161
+ local: 6,
162
+ cost: 10,
163
+ },
164
+ costType: 'free',
165
+ costDetails: 'Free to run locally. API: from $0.09/M input, $0.16/M output.',
166
+ },
167
+ {
168
+ name: 'gpt-oss-20b',
169
+ author: 'OpenAI',
170
+ size: '20B',
171
+ local: true,
172
+ api: true,
173
+ minMemoryGB: 16,
174
+ quality: {
175
+ agentic: 5,
176
+ local: 7,
177
+ cost: 10,
178
+ },
179
+ costType: 'free',
180
+ costDetails: 'Free to run locally. API: from $0.03/M input, $0.14/M output.',
181
+ },
182
+ {
183
+ name: 'gpt-oss-120b',
184
+ author: 'OpenAI',
185
+ size: '120B',
186
+ local: true,
187
+ api: true,
188
+ minMemoryGB: 80,
189
+ quality: {
190
+ agentic: 6,
191
+ local: 3,
192
+ cost: 10,
193
+ },
194
+ costType: 'free',
195
+ costDetails: 'Free to run locally. API: from $0.04/M input tokens, $0.40/M output tokens.',
196
+ },
197
+ {
198
+ name: 'qwen3-coder:30b',
199
+ author: 'Alibaba',
200
+ size: '30B',
201
+ local: true,
202
+ api: true,
203
+ minMemoryGB: 24,
204
+ quality: {
205
+ agentic: 6,
206
+ local: 7,
207
+ cost: 10,
208
+ },
209
+ costType: 'free',
210
+ costDetails: 'Free to run locally. API: from $0.06/M input, $0.25/M output.',
211
+ },
212
+ {
213
+ name: 'qwen3-coder:480b',
214
+ author: 'Alibaba',
215
+ size: '480B',
216
+ local: true,
217
+ api: true,
218
+ minMemoryGB: 256,
219
+ quality: {
220
+ agentic: 8,
221
+ local: 1,
222
+ cost: 8,
223
+ },
224
+ costType: 'free',
225
+ costDetails: 'Free to run locally. API: from $0.22/M input, $0.95/M output.',
226
+ },
227
+ {
228
+ name: 'glm-4.6',
229
+ author: 'Z.ai',
230
+ size: '357B',
231
+ local: true,
232
+ api: true,
233
+ minMemoryGB: 256,
234
+ quality: {
235
+ agentic: 9,
236
+ local: 1,
237
+ cost: 8,
238
+ },
239
+ costType: 'free',
240
+ costDetails: 'Free to run locally. API: from $0.50/M input, $1.75/M output.',
241
+ },
242
+ {
243
+ name: 'glm-4.5-air',
244
+ author: 'Z.ai',
245
+ size: '110B',
246
+ local: true,
247
+ api: true,
248
+ minMemoryGB: 80,
249
+ quality: {
250
+ agentic: 7.5,
251
+ local: 3,
252
+ cost: 10,
253
+ },
254
+ costType: 'free',
255
+ costDetails: 'Free to run locally. Free API solutions.',
256
+ },
257
+ {
258
+ name: 'devstral-small',
259
+ author: 'Mistral',
260
+ size: '24B',
261
+ local: true,
262
+ api: true,
263
+ minMemoryGB: 18,
264
+ quality: {
265
+ agentic: 5,
266
+ local: 7,
267
+ cost: 9,
268
+ },
269
+ costType: 'free',
270
+ costDetails: 'Free to run locally. API: from $0.07/M input, $0.28/M output.',
271
+ },
272
+ {
273
+ name: 'devstral-medium',
274
+ author: 'Mistral',
275
+ size: 'Unknown',
276
+ local: false,
277
+ api: true,
278
+ quality: {
279
+ agentic: 7,
280
+ local: 0,
281
+ cost: 8,
282
+ },
283
+ costType: 'paid',
284
+ costDetails: 'API: from $0.40/M input, $2.00/M output.',
285
+ },
286
+ {
287
+ name: 'codestral',
288
+ author: 'Mistral',
289
+ size: 'Unknown',
290
+ local: false,
291
+ api: true,
292
+ quality: {
293
+ agentic: 6,
294
+ local: 0,
295
+ cost: 9,
296
+ },
297
+ costType: 'paid',
298
+ costDetails: 'API: from $0.30/M input, $0.90/M output.',
299
+ },
300
+ {
301
+ name: 'grok-code-fast-1',
302
+ author: 'xAI',
303
+ size: 'Unknown',
304
+ local: false,
305
+ api: true,
306
+ quality: {
307
+ agentic: 8,
308
+ local: 0,
309
+ cost: 7,
310
+ },
311
+ costType: 'paid',
312
+ costDetails: 'API: from $0.20/M input, $1.50/M output.',
313
+ },
314
+ {
315
+ name: 'gpt-5-pro',
316
+ author: 'OpenAI',
317
+ size: 'Unknown',
318
+ local: false,
319
+ api: true,
320
+ quality: {
321
+ agentic: 10,
322
+ local: 0,
323
+ cost: 0,
324
+ },
325
+ costType: 'paid',
326
+ costDetails: 'API: from $15/M input, $120/M output.',
327
+ },
328
+ {
329
+ name: 'gpt-5-codex',
330
+ author: 'OpenAI',
331
+ size: 'Unknown',
332
+ local: false,
333
+ api: true,
334
+ quality: {
335
+ agentic: 10,
336
+ local: 0,
337
+ cost: 5,
338
+ },
339
+ costType: 'paid',
340
+ costDetails: 'API: from $1.25/M input, $10/M output.',
341
+ },
342
+ {
343
+ name: 'gpt-5-mini',
344
+ author: 'OpenAI',
345
+ size: 'Unknown',
346
+ local: false,
347
+ api: true,
348
+ quality: {
349
+ agentic: 6,
350
+ local: 0,
351
+ cost: 7,
352
+ },
353
+ costType: 'paid',
354
+ costDetails: 'API: from $0.25/M input, $2/M output.',
355
+ },
356
+ {
357
+ name: 'gpt-5-mini',
358
+ author: 'OpenAI',
359
+ size: 'Unknown',
360
+ local: false,
361
+ api: true,
362
+ quality: {
363
+ agentic: 6,
364
+ local: 0,
365
+ cost: 7,
366
+ },
367
+ costType: 'paid',
368
+ costDetails: 'API: from $0.25/M input, $2/M output.',
369
+ },
370
+ {
371
+ name: 'claude-sonnet-4.5',
372
+ author: 'Anthropic',
373
+ size: 'Unknown',
374
+ local: false,
375
+ api: true,
376
+ quality: {
377
+ agentic: 9,
378
+ local: 0,
379
+ cost: 6,
380
+ },
381
+ costType: 'paid',
382
+ costDetails: 'API: from $3/M input, $15/M output.',
383
+ },
384
+ {
385
+ name: 'claude-opus-4.1',
386
+ author: 'Anthropic',
387
+ size: 'Unknown',
388
+ local: false,
389
+ api: true,
390
+ quality: {
391
+ agentic: 9,
392
+ local: 0,
393
+ cost: 3,
394
+ },
395
+ costType: 'paid',
396
+ costDetails: 'API: from $15/M input, $75/M output.',
397
+ },
398
+ {
399
+ name: 'gemini-2.5-pro',
400
+ author: 'Google',
401
+ size: 'Unknown',
402
+ local: false,
403
+ api: true,
404
+ quality: {
405
+ agentic: 7,
406
+ local: 0,
407
+ cost: 5,
408
+ },
409
+ costType: 'paid',
410
+ costDetails: 'API: from $1.25/M input, $10/M output.',
411
+ },
412
+ {
413
+ name: 'gemini-2.5-flash',
414
+ author: 'Google',
415
+ size: 'Unknown',
416
+ local: false,
417
+ api: true,
418
+ quality: {
419
+ agentic: 5,
420
+ local: 0,
421
+ cost: 5,
422
+ },
423
+ costType: 'paid',
424
+ costDetails: 'API: from $0.30/M input, $2.50/M output.',
425
+ },
426
+ {
427
+ name: 'deepseek-chat-v3.1-terminus',
428
+ author: 'DeepSeek',
429
+ size: '671B',
430
+ local: true,
431
+ api: true,
432
+ minMemoryGB: 400,
433
+ quality: {
434
+ agentic: 7,
435
+ local: 1,
436
+ cost: 7,
437
+ },
438
+ costType: 'free',
439
+ costDetails: 'Free to run locally. API: from $0.30/M input, $2.50/M output.',
440
+ },
441
+ ];
442
+ export class ModelDatabase {
443
+ static instance;
444
+ static getInstance() {
445
+ if (!ModelDatabase.instance) {
446
+ ModelDatabase.instance = new ModelDatabase();
447
+ }
448
+ return ModelDatabase.instance;
449
+ }
450
+ getAllModels() {
451
+ return MODEL_DATABASE;
452
+ }
453
+ }
454
+ export const modelDatabase = ModelDatabase.getInstance();
455
+ //# sourceMappingURL=model-database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-database.js","sourceRoot":"","sources":["../../source/recommendations/model-database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { SystemCapabilities, ModelRecommendation } from '../types/index.js';
2
+ export declare class ModelMatchingEngine {
3
+ private static instance;
4
+ static getInstance(): ModelMatchingEngine;
5
+ getCompatibleModels(systemCapabilities: SystemCapabilities): ModelRecommendation[];
6
+ getTopRecommendations(systemCapabilities: SystemCapabilities, count?: number): ModelRecommendation[];
7
+ getBestLocalModel(systemCapabilities: SystemCapabilities): ModelRecommendation | null;
8
+ getBestApiModel(systemCapabilities: SystemCapabilities): ModelRecommendation | null;
9
+ private assessModelCompatibility;
10
+ private generateWarnings;
11
+ private generateRecommendationText;
12
+ private getCompatibilityScore;
13
+ private calculateOverallCapabilityScore;
14
+ }
15
+ export declare const modelMatchingEngine: ModelMatchingEngine;
16
+ //# sourceMappingURL=model-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-engine.d.ts","sourceRoot":"","sources":["../../source/recommendations/model-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAElB,mBAAmB,EACnB,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsB;IAE7C,MAAM,CAAC,WAAW,IAAI,mBAAmB;IAOzC,mBAAmB,CAClB,kBAAkB,EAAE,kBAAkB,GACpC,mBAAmB,EAAE;IAqCxB,qBAAqB,CACpB,kBAAkB,EAAE,kBAAkB,EACtC,KAAK,GAAE,MAAU,GACf,mBAAmB,EAAE;IAOxB,iBAAiB,CAChB,kBAAkB,EAAE,kBAAkB,GACpC,mBAAmB,GAAG,IAAI;IAQ7B,eAAe,CACd,kBAAkB,EAAE,kBAAkB,GACpC,mBAAmB,GAAG,IAAI;IAQ7B,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,gBAAgB;IAoExB,OAAO,CAAC,0BAA0B;IAiDlC,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,+BAA+B;CASvC;AAED,eAAO,MAAM,mBAAmB,qBAAoC,CAAC"}
@@ -0,0 +1,185 @@
1
+ import { modelDatabase } from './model-database.js';
2
+ export class ModelMatchingEngine {
3
+ static instance;
4
+ static getInstance() {
5
+ if (!ModelMatchingEngine.instance) {
6
+ ModelMatchingEngine.instance = new ModelMatchingEngine();
7
+ }
8
+ return ModelMatchingEngine.instance;
9
+ }
10
+ getCompatibleModels(systemCapabilities) {
11
+ const allModels = modelDatabase.getAllModels();
12
+ const recommendations = [];
13
+ for (const model of allModels) {
14
+ const compatibility = this.assessModelCompatibility(model, systemCapabilities);
15
+ const warnings = this.generateWarnings(model, systemCapabilities);
16
+ const recommendation = this.generateRecommendationText(model, compatibility);
17
+ recommendations.push({
18
+ model,
19
+ compatibility,
20
+ warnings,
21
+ recommendation,
22
+ });
23
+ }
24
+ // Sort by compatibility and capability score
25
+ return recommendations.sort((a, b) => {
26
+ const compatibilityScore = this.getCompatibilityScore(a.compatibility) -
27
+ this.getCompatibilityScore(b.compatibility);
28
+ if (compatibilityScore !== 0)
29
+ return compatibilityScore;
30
+ // If compatibility is the same, sort by overall capability
31
+ const aScore = this.calculateOverallCapabilityScore(a.model);
32
+ const bScore = this.calculateOverallCapabilityScore(b.model);
33
+ return bScore - aScore;
34
+ });
35
+ }
36
+ getTopRecommendations(systemCapabilities, count = 5) {
37
+ const compatible = this.getCompatibleModels(systemCapabilities);
38
+ return compatible
39
+ .filter(rec => rec.compatibility !== 'incompatible')
40
+ .slice(0, count);
41
+ }
42
+ getBestLocalModel(systemCapabilities) {
43
+ const localModels = this.getCompatibleModels(systemCapabilities).filter(rec => rec.model.local && rec.compatibility !== 'incompatible');
44
+ return localModels.length > 0 ? localModels[0] : null;
45
+ }
46
+ getBestApiModel(systemCapabilities) {
47
+ const apiModels = this.getCompatibleModels(systemCapabilities).filter(rec => rec.model.api && rec.compatibility !== 'incompatible');
48
+ return apiModels.length > 0 ? apiModels[0] : null;
49
+ }
50
+ assessModelCompatibility(model, system) {
51
+ // Check if model can be accessed via API
52
+ const canUseApi = model.api && system.network.connected;
53
+ // Check if model can be run locally
54
+ let canUseLocal = false;
55
+ if (model.local) {
56
+ const requiredMemory = model.minMemoryGB || 8; // Default 8GB if not specified
57
+ canUseLocal = system.memory.total >= requiredMemory;
58
+ }
59
+ // Model is incompatible if neither method works
60
+ if (!canUseApi && !canUseLocal) {
61
+ return 'incompatible';
62
+ }
63
+ // Perfect if we can use API (no resource constraints)
64
+ if (canUseApi) {
65
+ return 'perfect';
66
+ }
67
+ // For local-only models, check GPU availability
68
+ const gpuAvailable = system.gpu.available && system.gpu.type !== 'none';
69
+ return gpuAvailable ? 'perfect' : 'good';
70
+ }
71
+ generateWarnings(model, system) {
72
+ const warnings = [];
73
+ if (model.local) {
74
+ const requiredMemory = model.minMemoryGB || 8;
75
+ // Check if user can't run locally
76
+ if (system.memory.total < requiredMemory) {
77
+ if (model.api) {
78
+ warnings.push(`Cannot run locally - requires ${requiredMemory}GB RAM (you have ${system.memory.total}GB). Run only via API.`);
79
+ }
80
+ else {
81
+ warnings.push(`Cannot run locally - requires ${requiredMemory}GB RAM (you have ${system.memory.total}GB)`);
82
+ }
83
+ }
84
+ else {
85
+ // GPU warnings (only if they CAN run it locally)
86
+ const gpuAvailable = system.gpu.available && system.gpu.type !== 'none';
87
+ if (!gpuAvailable) {
88
+ warnings.push('GPU recommended for better performance - will be slow on CPU');
89
+ }
90
+ // Memory warnings
91
+ if (system.memory.total === requiredMemory) {
92
+ warnings.push(`Running at minimum RAM (${requiredMemory}GB) - may be slow`);
93
+ }
94
+ }
95
+ }
96
+ if (model.api) {
97
+ // Network warnings
98
+ if (!system.network.connected) {
99
+ warnings.push('API access requires internet connection');
100
+ }
101
+ else if (system.network.speed === 'slow') {
102
+ warnings.push('May have delays due to slow internet connection');
103
+ }
104
+ // Cost warnings
105
+ if (model.costType === 'paid') {
106
+ warnings.push('Usage costs apply - monitor your spending');
107
+ }
108
+ }
109
+ // Capability warnings based on ratings (0-10 scale, 0 = not supported)
110
+ if (model.quality.agentic === 0) {
111
+ warnings.push('Does not support agentic coding workflows');
112
+ }
113
+ else if (model.quality.agentic <= 4) {
114
+ warnings.push('Limited capabilities for complex agentic coding tasks');
115
+ }
116
+ if (model.quality.local === 0) {
117
+ warnings.push('Cannot be run locally - proprietary/closed-source model');
118
+ }
119
+ else if (model.quality.local <= 3) {
120
+ warnings.push('Difficult to run locally - requires significant resources');
121
+ }
122
+ return warnings;
123
+ }
124
+ generateRecommendationText(model, compatibility) {
125
+ if (compatibility === 'incompatible') {
126
+ if (model.local) {
127
+ const requiredMemory = model.minMemoryGB || 8;
128
+ return `Cannot run locally - needs ${requiredMemory}GB RAM. ${model.api ? 'Try API access instead.' : ''}`;
129
+ }
130
+ return 'Requires internet connection for API access';
131
+ }
132
+ const strengths = [];
133
+ // Analyze capabilities (0-10 scale)
134
+ if (model.quality.agentic >= 8) {
135
+ strengths.push('Excellent agentic coding abilities');
136
+ }
137
+ else if (model.quality.agentic >= 6) {
138
+ strengths.push('Good agentic coding capabilities');
139
+ }
140
+ if (model.quality.local >= 8) {
141
+ strengths.push('Easy to run locally');
142
+ }
143
+ else if (model.quality.local >= 6) {
144
+ strengths.push('Reasonable to run locally');
145
+ }
146
+ if (model.quality.cost >= 8) {
147
+ strengths.push('Excellent value - free or very cheap');
148
+ }
149
+ else if (model.quality.cost >= 6) {
150
+ strengths.push('Good cost-effectiveness');
151
+ }
152
+ if (model.local && model.api) {
153
+ strengths.push('Available locally and via API');
154
+ }
155
+ else if (model.local) {
156
+ strengths.push('Private/local only');
157
+ }
158
+ // Build recommendation text as bullet points
159
+ if (strengths.length > 0) {
160
+ return strengths.map(s => `• ${s}`).join('\n');
161
+ }
162
+ return '• Standard model for general use';
163
+ }
164
+ getCompatibilityScore(compatibility) {
165
+ switch (compatibility) {
166
+ case 'perfect':
167
+ return 4;
168
+ case 'good':
169
+ return 3;
170
+ case 'marginal':
171
+ return 2;
172
+ case 'incompatible':
173
+ return 1;
174
+ }
175
+ }
176
+ calculateOverallCapabilityScore(model) {
177
+ // Weight heavily in favor of agentic capabilities (coding ability is most important)
178
+ // Then local feasibility, and finally cost
179
+ return (model.quality.agentic * 3.0 +
180
+ model.quality.local * 0.8 +
181
+ model.quality.cost * 0.5);
182
+ }
183
+ }
184
+ export const modelMatchingEngine = ModelMatchingEngine.getInstance();
185
+ //# sourceMappingURL=model-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-engine.js","sourceRoot":"","sources":["../../source/recommendations/model-engine.ts"],"names":[],"mappings":"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"}