@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.
- package/README.md +2 -0
- package/dist/app/hooks/useAppInitialization.d.ts.map +1 -1
- package/dist/app/hooks/useAppInitialization.js +2 -1
- package/dist/app/hooks/useAppInitialization.js.map +1 -1
- package/dist/app/hooks/useAppState.d.ts +2 -0
- package/dist/app/hooks/useAppState.d.ts.map +1 -1
- package/dist/app/hooks/useAppState.js +3 -0
- package/dist/app/hooks/useAppState.js.map +1 -1
- package/dist/app/hooks/useChatHandler.d.ts.map +1 -1
- package/dist/app/hooks/useChatHandler.js +131 -5
- package/dist/app/hooks/useChatHandler.js.map +1 -1
- package/dist/app/hooks/useModeHandlers.d.ts +4 -1
- package/dist/app/hooks/useModeHandlers.d.ts.map +1 -1
- package/dist/app/hooks/useModeHandlers.js +11 -1
- package/dist/app/hooks/useModeHandlers.js.map +1 -1
- package/dist/app/hooks/useToolHandler.d.ts.map +1 -1
- package/dist/app/hooks/useToolHandler.js +66 -0
- package/dist/app/hooks/useToolHandler.js.map +1 -1
- package/dist/app/utils/appUtils.d.ts.map +1 -1
- package/dist/app/utils/appUtils.js +5 -1
- package/dist/app/utils/appUtils.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +4 -1
- package/dist/app.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/recommendations.d.ts +8 -0
- package/dist/commands/recommendations.d.ts.map +1 -0
- package/dist/commands/recommendations.js +303 -0
- package/dist/commands/recommendations.js.map +1 -0
- package/dist/components/assistant-message.d.ts.map +1 -1
- package/dist/components/assistant-message.js +58 -33
- package/dist/components/assistant-message.js.map +1 -1
- package/dist/components/tool-confirmation.d.ts.map +1 -1
- package/dist/components/tool-confirmation.js +45 -8
- package/dist/components/tool-confirmation.js.map +1 -1
- package/dist/recommendations/model-database.d.ts +9 -0
- package/dist/recommendations/model-database.d.ts.map +1 -0
- package/dist/recommendations/model-database.js +455 -0
- package/dist/recommendations/model-database.js.map +1 -0
- package/dist/recommendations/model-engine.d.ts +16 -0
- package/dist/recommendations/model-engine.d.ts.map +1 -0
- package/dist/recommendations/model-engine.js +185 -0
- package/dist/recommendations/model-engine.js.map +1 -0
- package/dist/recommendations/recommendation-engine.d.ts +38 -0
- package/dist/recommendations/recommendation-engine.d.ts.map +1 -0
- package/dist/recommendations/recommendation-engine.js +138 -0
- package/dist/recommendations/recommendation-engine.js.map +1 -0
- package/dist/system/detector.d.ts +18 -0
- package/dist/system/detector.d.ts.map +1 -0
- package/dist/system/detector.js +140 -0
- package/dist/system/detector.js.map +1 -0
- package/dist/tools/create-file.d.ts.map +1 -1
- package/dist/tools/create-file.js +60 -2
- package/dist/tools/create-file.js.map +1 -1
- package/dist/tools/delete-lines.d.ts.map +1 -1
- package/dist/tools/delete-lines.js +61 -1
- package/dist/tools/delete-lines.js.map +1 -1
- package/dist/tools/execute-bash.d.ts.map +1 -1
- package/dist/tools/execute-bash.js +29 -0
- package/dist/tools/execute-bash.js.map +1 -1
- package/dist/tools/fetch-url.d.ts +3 -0
- package/dist/tools/fetch-url.d.ts.map +1 -0
- package/dist/tools/fetch-url.js +122 -0
- package/dist/tools/fetch-url.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/insert-lines.d.ts.map +1 -1
- package/dist/tools/insert-lines.js +48 -1
- package/dist/tools/insert-lines.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +31 -3
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/read-many-files.d.ts.map +1 -1
- package/dist/tools/read-many-files.js +43 -3
- package/dist/tools/read-many-files.js.map +1 -1
- package/dist/tools/replace-lines.d.ts.map +1 -1
- package/dist/tools/replace-lines.js +61 -1
- package/dist/tools/replace-lines.js.map +1 -1
- package/dist/tools/tool-manager.d.ts +10 -0
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +9 -1
- package/dist/tools/tool-manager.js.map +1 -1
- package/dist/tools/web-search.d.ts +3 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +133 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/types/app.d.ts +1 -0
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/core.d.ts +6 -0
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/system.d.ts +57 -0
- package/dist/types/system.d.ts.map +1 -0
- package/dist/types/system.js +2 -0
- package/dist/types/system.js.map +1 -0
- package/package.json +7 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { SystemCapabilities, ModelRecommendation } from '../types/index.js';
|
|
2
|
+
export interface ModelRecommendationEnhanced extends ModelRecommendation {
|
|
3
|
+
recommendedProvider: string;
|
|
4
|
+
}
|
|
5
|
+
export interface RecommendationResult {
|
|
6
|
+
quickStart: ModelRecommendationEnhanced | null;
|
|
7
|
+
allModels: ModelRecommendationEnhanced[];
|
|
8
|
+
}
|
|
9
|
+
export declare class RecommendationEngine {
|
|
10
|
+
private static instance;
|
|
11
|
+
static getInstance(): RecommendationEngine;
|
|
12
|
+
/**
|
|
13
|
+
* Get all recommendations based on system capabilities
|
|
14
|
+
*/
|
|
15
|
+
getRecommendations(systemCapabilities: SystemCapabilities): RecommendationResult;
|
|
16
|
+
/**
|
|
17
|
+
* Enhance a model with setup instructions
|
|
18
|
+
*/
|
|
19
|
+
private enhanceModel;
|
|
20
|
+
/**
|
|
21
|
+
* Sort models by priority for recommendations:
|
|
22
|
+
* 1. High-quality local models (free + powerful)
|
|
23
|
+
* 2. High-quality API models (powerful but paid)
|
|
24
|
+
* 3. Lower-quality local models
|
|
25
|
+
* 4. Lower-quality API models
|
|
26
|
+
*/
|
|
27
|
+
private sortModelsByPriority;
|
|
28
|
+
/**
|
|
29
|
+
* Get a simple quick start recommendation
|
|
30
|
+
*/
|
|
31
|
+
getQuickStartRecommendation(systemCapabilities: SystemCapabilities): {
|
|
32
|
+
model: string;
|
|
33
|
+
provider: string;
|
|
34
|
+
reasoning: string;
|
|
35
|
+
} | null;
|
|
36
|
+
}
|
|
37
|
+
export declare const recommendationEngine: RecommendationEngine;
|
|
38
|
+
//# sourceMappingURL=recommendation-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendation-engine.d.ts","sourceRoot":"","sources":["../../source/recommendations/recommendation-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAc,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAItF,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACvE,mBAAmB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACpC,UAAU,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAC/C,SAAS,EAAE,2BAA2B,EAAE,CAAC;CACzC;AAED,qBAAa,oBAAoB;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuB;IAE9C,MAAM,CAAC,WAAW,IAAI,oBAAoB;IAO1C;;OAEG;IACH,kBAAkB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,oBAAoB;IA8BhF;;OAEG;IACH,OAAO,CAAC,YAAY;IA6BpB;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IA0D5B;;OAEG;IACH,2BAA2B,CAC1B,kBAAkB,EAAE,kBAAkB,GACpC;QACF,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI;CAeR;AAED,eAAO,MAAM,oBAAoB,sBAAqC,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { modelMatchingEngine } from './model-engine.js';
|
|
2
|
+
export class RecommendationEngine {
|
|
3
|
+
static instance;
|
|
4
|
+
static getInstance() {
|
|
5
|
+
if (!RecommendationEngine.instance) {
|
|
6
|
+
RecommendationEngine.instance = new RecommendationEngine();
|
|
7
|
+
}
|
|
8
|
+
return RecommendationEngine.instance;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get all recommendations based on system capabilities
|
|
12
|
+
*/
|
|
13
|
+
getRecommendations(systemCapabilities) {
|
|
14
|
+
// Get all compatible models
|
|
15
|
+
const compatibleModels = modelMatchingEngine.getCompatibleModels(systemCapabilities);
|
|
16
|
+
// Enhance each model with setup instructions
|
|
17
|
+
const enhancedModels = compatibleModels.map(model => this.enhanceModel(model, systemCapabilities));
|
|
18
|
+
// Filter out incompatible models
|
|
19
|
+
const usableModels = enhancedModels.filter(m => m.compatibility !== 'incompatible');
|
|
20
|
+
// Sort models by priority:
|
|
21
|
+
// 1. Free (local) + high quality
|
|
22
|
+
// 2. Low cost + high quality
|
|
23
|
+
// 3. By agentic capabilities
|
|
24
|
+
// 4. By compatibility
|
|
25
|
+
const sortedModels = this.sortModelsByPriority(usableModels);
|
|
26
|
+
// Pick the best quick start option (prioritize local models if available)
|
|
27
|
+
const quickStart = sortedModels[0] || null;
|
|
28
|
+
return {
|
|
29
|
+
quickStart,
|
|
30
|
+
allModels: sortedModels,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Enhance a model with setup instructions
|
|
35
|
+
*/
|
|
36
|
+
enhanceModel(modelRec, systemCapabilities) {
|
|
37
|
+
const model = modelRec.model;
|
|
38
|
+
// Determine best access method based on system capabilities
|
|
39
|
+
const canUseLocal = model.local &&
|
|
40
|
+
systemCapabilities.memory.total >= (model.minMemoryGB || 8);
|
|
41
|
+
const canUseApi = model.api && systemCapabilities.network.connected;
|
|
42
|
+
let recommendedProvider = '';
|
|
43
|
+
if (canUseLocal && !canUseApi) {
|
|
44
|
+
recommendedProvider = 'local';
|
|
45
|
+
}
|
|
46
|
+
else if (!canUseLocal && canUseApi) {
|
|
47
|
+
recommendedProvider = 'api';
|
|
48
|
+
}
|
|
49
|
+
else if (canUseLocal && canUseApi) {
|
|
50
|
+
recommendedProvider = 'local (API also available)';
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
recommendedProvider = 'unavailable';
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
...modelRec,
|
|
57
|
+
recommendedProvider,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Sort models by priority for recommendations:
|
|
62
|
+
* 1. High-quality local models (free + powerful)
|
|
63
|
+
* 2. High-quality API models (powerful but paid)
|
|
64
|
+
* 3. Lower-quality local models
|
|
65
|
+
* 4. Lower-quality API models
|
|
66
|
+
*/
|
|
67
|
+
sortModelsByPriority(models) {
|
|
68
|
+
return models.sort((a, b) => {
|
|
69
|
+
// Calculate quality scores - prioritize agentic capabilities heavily
|
|
70
|
+
const aQuality = a.model.quality.agentic * 3.0 +
|
|
71
|
+
a.model.quality.local * 0.8 +
|
|
72
|
+
a.model.quality.cost * 0.5;
|
|
73
|
+
const bQuality = b.model.quality.agentic * 3.0 +
|
|
74
|
+
b.model.quality.local * 0.8 +
|
|
75
|
+
b.model.quality.cost * 0.5;
|
|
76
|
+
// Determine what the user can ACTUALLY use based on recommendedProvider
|
|
77
|
+
const aCanUseLocal = a.recommendedProvider.includes('local');
|
|
78
|
+
const bCanUseLocal = b.recommendedProvider.includes('local');
|
|
79
|
+
const aApiOnly = a.recommendedProvider === 'api';
|
|
80
|
+
const bApiOnly = b.recommendedProvider === 'api';
|
|
81
|
+
// Define quality thresholds (out of 43 possible with new weighting: agentic*3 + local*0.8 + cost*0.5)
|
|
82
|
+
const highQuality = 24; // 24+ = high quality (agentic 8+)
|
|
83
|
+
const decentQuality = 15; // 15+ = decent (agentic 5+), below = poor
|
|
84
|
+
const aHighQuality = aQuality >= highQuality;
|
|
85
|
+
const bHighQuality = bQuality >= highQuality;
|
|
86
|
+
const aDecentQuality = aQuality >= decentQuality;
|
|
87
|
+
const bDecentQuality = bQuality >= decentQuality;
|
|
88
|
+
// 1. High-quality API beats poor-quality local (don't recommend trash just because it's free)
|
|
89
|
+
if (aApiOnly && bCanUseLocal && aHighQuality && !bDecentQuality)
|
|
90
|
+
return -1;
|
|
91
|
+
if (bApiOnly && aCanUseLocal && bHighQuality && !aDecentQuality)
|
|
92
|
+
return 1;
|
|
93
|
+
// 2. Decent+ local models beat API-only (free is better if quality is acceptable)
|
|
94
|
+
if (aCanUseLocal && bApiOnly && aDecentQuality)
|
|
95
|
+
return -1;
|
|
96
|
+
if (bCanUseLocal && aApiOnly && bDecentQuality)
|
|
97
|
+
return 1;
|
|
98
|
+
// 3. Among models user can run locally, prefer high quality
|
|
99
|
+
if (aCanUseLocal && bCanUseLocal) {
|
|
100
|
+
if (aHighQuality && !bHighQuality)
|
|
101
|
+
return -1;
|
|
102
|
+
if (bHighQuality && !aHighQuality)
|
|
103
|
+
return 1;
|
|
104
|
+
// Same quality tier - prefer higher score
|
|
105
|
+
return bQuality - aQuality;
|
|
106
|
+
}
|
|
107
|
+
// 4. Among API-only models, prefer free over paid
|
|
108
|
+
if (aApiOnly && bApiOnly) {
|
|
109
|
+
const aCost = a.model.costType === 'free' ? 0 : 1;
|
|
110
|
+
const bCost = b.model.costType === 'free' ? 0 : 1;
|
|
111
|
+
if (aCost !== bCost)
|
|
112
|
+
return aCost - bCost;
|
|
113
|
+
// Same cost - prefer higher quality
|
|
114
|
+
return bQuality - aQuality;
|
|
115
|
+
}
|
|
116
|
+
// 5. Compare by compatibility as final tiebreaker
|
|
117
|
+
const compatibilityOrder = { perfect: 4, good: 3, marginal: 2, incompatible: 1 };
|
|
118
|
+
return compatibilityOrder[b.compatibility] - compatibilityOrder[a.compatibility];
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get a simple quick start recommendation
|
|
123
|
+
*/
|
|
124
|
+
getQuickStartRecommendation(systemCapabilities) {
|
|
125
|
+
const result = this.getRecommendations(systemCapabilities);
|
|
126
|
+
if (!result.quickStart) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
const model = result.quickStart;
|
|
130
|
+
return {
|
|
131
|
+
model: model.model.name,
|
|
132
|
+
provider: model.recommendedProvider,
|
|
133
|
+
reasoning: model.recommendation,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
export const recommendationEngine = RecommendationEngine.getInstance();
|
|
138
|
+
//# sourceMappingURL=recommendation-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendation-engine.js","sourceRoot":"","sources":["../../source/recommendations/recommendation-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SystemCapabilities } from '../types/index.js';
|
|
2
|
+
export declare class SystemDetector {
|
|
3
|
+
private static instance;
|
|
4
|
+
private cachedCapabilities;
|
|
5
|
+
private lastDetection;
|
|
6
|
+
private readonly CACHE_DURATION;
|
|
7
|
+
static getInstance(): SystemDetector;
|
|
8
|
+
getSystemCapabilities(): Promise<SystemCapabilities>;
|
|
9
|
+
private detectSystemCapabilities;
|
|
10
|
+
private detectCpu;
|
|
11
|
+
private detectMemory;
|
|
12
|
+
private detectPlatform;
|
|
13
|
+
private detectGpu;
|
|
14
|
+
private detectNetwork;
|
|
15
|
+
clearCache(): void;
|
|
16
|
+
}
|
|
17
|
+
export declare const systemDetector: SystemDetector;
|
|
18
|
+
//# sourceMappingURL=detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../source/system/detector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAIrD,qBAAa,cAAc;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IAEzC,MAAM,CAAC,WAAW,IAAI,cAAc;IAO9B,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC;YAe5C,wBAAwB;YAkBxB,SAAS;YAQT,YAAY;YAQZ,cAAc;YAKd,SAAS;YAgDT,aAAa;IAqC3B,UAAU,IAAI,IAAI;CAIlB;AAED,eAAO,MAAM,cAAc,gBAA+B,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { exec } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import * as si from 'systeminformation';
|
|
4
|
+
const execAsync = promisify(exec);
|
|
5
|
+
export class SystemDetector {
|
|
6
|
+
static instance;
|
|
7
|
+
cachedCapabilities = null;
|
|
8
|
+
lastDetection = 0;
|
|
9
|
+
CACHE_DURATION = 30_000; // 30 seconds
|
|
10
|
+
static getInstance() {
|
|
11
|
+
if (!SystemDetector.instance) {
|
|
12
|
+
SystemDetector.instance = new SystemDetector();
|
|
13
|
+
}
|
|
14
|
+
return SystemDetector.instance;
|
|
15
|
+
}
|
|
16
|
+
async getSystemCapabilities() {
|
|
17
|
+
const now = Date.now();
|
|
18
|
+
if (this.cachedCapabilities &&
|
|
19
|
+
now - this.lastDetection < this.CACHE_DURATION) {
|
|
20
|
+
return this.cachedCapabilities;
|
|
21
|
+
}
|
|
22
|
+
const capabilities = await this.detectSystemCapabilities();
|
|
23
|
+
this.cachedCapabilities = capabilities;
|
|
24
|
+
this.lastDetection = now;
|
|
25
|
+
return capabilities;
|
|
26
|
+
}
|
|
27
|
+
async detectSystemCapabilities() {
|
|
28
|
+
const [cpu, memory, gpu, platform, network] = await Promise.all([
|
|
29
|
+
this.detectCpu(),
|
|
30
|
+
this.detectMemory(),
|
|
31
|
+
this.detectGpu(),
|
|
32
|
+
this.detectPlatform(),
|
|
33
|
+
this.detectNetwork(),
|
|
34
|
+
]);
|
|
35
|
+
return {
|
|
36
|
+
cpu,
|
|
37
|
+
memory,
|
|
38
|
+
gpu,
|
|
39
|
+
platform,
|
|
40
|
+
network,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async detectCpu() {
|
|
44
|
+
const cpuInfo = await si.cpu();
|
|
45
|
+
return {
|
|
46
|
+
cores: cpuInfo.cores,
|
|
47
|
+
architecture: cpuInfo.family,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
async detectMemory() {
|
|
51
|
+
const memInfo = await si.mem();
|
|
52
|
+
return {
|
|
53
|
+
total: Math.round(memInfo.total / 1024 ** 3), // Convert to GB
|
|
54
|
+
available: Math.round(memInfo.available / 1024 ** 3), // Convert to GB
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
async detectPlatform() {
|
|
58
|
+
const osInfo = await si.osInfo();
|
|
59
|
+
return osInfo.platform;
|
|
60
|
+
}
|
|
61
|
+
async detectGpu() {
|
|
62
|
+
try {
|
|
63
|
+
const graphics = await si.graphics();
|
|
64
|
+
if (graphics.controllers && graphics.controllers.length > 0) {
|
|
65
|
+
const controller = graphics.controllers[0];
|
|
66
|
+
const vendor = controller.vendor?.toLowerCase() || '';
|
|
67
|
+
const model = controller.model?.toLowerCase() || '';
|
|
68
|
+
let type = 'none';
|
|
69
|
+
if (vendor.includes('nvidia') || model.includes('nvidia')) {
|
|
70
|
+
type = 'nvidia';
|
|
71
|
+
}
|
|
72
|
+
else if (vendor.includes('amd') ||
|
|
73
|
+
model.includes('amd') ||
|
|
74
|
+
model.includes('radeon')) {
|
|
75
|
+
type = 'amd';
|
|
76
|
+
}
|
|
77
|
+
else if (vendor.includes('apple') || model.includes('apple')) {
|
|
78
|
+
type = 'apple';
|
|
79
|
+
}
|
|
80
|
+
else if (vendor.includes('intel') || model.includes('intel')) {
|
|
81
|
+
type = 'intel';
|
|
82
|
+
}
|
|
83
|
+
const memoryMB = typeof controller.vram === 'number'
|
|
84
|
+
? controller.vram
|
|
85
|
+
: typeof controller.vramDynamic === 'number'
|
|
86
|
+
? controller.vramDynamic
|
|
87
|
+
: 0;
|
|
88
|
+
const memoryGB = memoryMB > 0 ? Math.round(memoryMB / 1024) : undefined;
|
|
89
|
+
return {
|
|
90
|
+
available: true,
|
|
91
|
+
type,
|
|
92
|
+
memory: memoryGB,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
// Fallback to basic detection if systeminformation fails
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
available: false,
|
|
101
|
+
type: 'none',
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
async detectNetwork() {
|
|
105
|
+
try {
|
|
106
|
+
// Simple connectivity test
|
|
107
|
+
const testUrls = ['google.com', 'cloudflare.com'];
|
|
108
|
+
const results = await Promise.allSettled(testUrls.map(async (url) => {
|
|
109
|
+
const start = Date.now();
|
|
110
|
+
await execAsync(`ping -c 1 -W 2000 ${url}`, { timeout: 3000 });
|
|
111
|
+
return Date.now() - start;
|
|
112
|
+
}));
|
|
113
|
+
const successful = results.filter(r => r.status === 'fulfilled');
|
|
114
|
+
if (successful.length === 0) {
|
|
115
|
+
return { connected: false };
|
|
116
|
+
}
|
|
117
|
+
const avgLatency = successful.reduce((sum, r) => sum + r.value, 0) / successful.length;
|
|
118
|
+
let speed;
|
|
119
|
+
if (avgLatency < 50)
|
|
120
|
+
speed = 'fast';
|
|
121
|
+
else if (avgLatency < 200)
|
|
122
|
+
speed = 'medium';
|
|
123
|
+
else
|
|
124
|
+
speed = 'slow';
|
|
125
|
+
return {
|
|
126
|
+
connected: true,
|
|
127
|
+
speed,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return { connected: false };
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
clearCache() {
|
|
135
|
+
this.cachedCapabilities = null;
|
|
136
|
+
this.lastDetection = 0;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
export const systemDetector = SystemDetector.getInstance();
|
|
140
|
+
//# sourceMappingURL=detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../source/system/detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-file.d.ts","sourceRoot":"","sources":["../../source/tools/create-file.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-file.d.ts","sourceRoot":"","sources":["../../source/tools/create-file.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAgJnE,eAAO,MAAM,cAAc,EAAE,cA0B5B,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { resolve } from 'node:path';
|
|
3
|
-
import { writeFile } from 'node:fs/promises';
|
|
2
|
+
import { resolve, dirname } from 'node:path';
|
|
3
|
+
import { writeFile, access } from 'node:fs/promises';
|
|
4
|
+
import { constants } from 'node:fs';
|
|
4
5
|
import { highlight } from 'cli-highlight';
|
|
5
6
|
import React from 'react';
|
|
6
7
|
import { Text, Box } from 'ink';
|
|
@@ -38,9 +39,66 @@ const CreateFileFormatter = React.memo(({ args }) => {
|
|
|
38
39
|
const formatter = async (args) => {
|
|
39
40
|
return _jsx(CreateFileFormatter, { args: args });
|
|
40
41
|
};
|
|
42
|
+
const validator = async (args) => {
|
|
43
|
+
const absPath = resolve(args.path);
|
|
44
|
+
// Check if file already exists
|
|
45
|
+
try {
|
|
46
|
+
await access(absPath, constants.F_OK);
|
|
47
|
+
return {
|
|
48
|
+
valid: false,
|
|
49
|
+
error: `⚒ File "${args.path}" already exists. Use a file editing tool instead.`,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
// ENOENT is good - file doesn't exist
|
|
54
|
+
if (error.code !== 'ENOENT') {
|
|
55
|
+
return {
|
|
56
|
+
valid: false,
|
|
57
|
+
error: `⚒ Cannot access path "${args.path}": ${error.message}`,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Check if parent directory exists
|
|
62
|
+
const parentDir = dirname(absPath);
|
|
63
|
+
try {
|
|
64
|
+
await access(parentDir, constants.F_OK);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (error.code === 'ENOENT') {
|
|
68
|
+
return {
|
|
69
|
+
valid: false,
|
|
70
|
+
error: `⚒ Parent directory does not exist: "${parentDir}"`,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
valid: false,
|
|
75
|
+
error: `⚒ Cannot access parent directory "${parentDir}": ${error.message}`,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// Check for invalid path characters or attempts to write to system directories
|
|
79
|
+
const invalidPatterns = [
|
|
80
|
+
/^\/etc\//i,
|
|
81
|
+
/^\/sys\//i,
|
|
82
|
+
/^\/proc\//i,
|
|
83
|
+
/^\/dev\//i,
|
|
84
|
+
/^\/boot\//i,
|
|
85
|
+
/^C:\\Windows\\/i,
|
|
86
|
+
/^C:\\Program Files\\/i,
|
|
87
|
+
];
|
|
88
|
+
for (const pattern of invalidPatterns) {
|
|
89
|
+
if (pattern.test(absPath)) {
|
|
90
|
+
return {
|
|
91
|
+
valid: false,
|
|
92
|
+
error: `⚒ Cannot create files in system directory: "${args.path}"`,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return { valid: true };
|
|
97
|
+
};
|
|
41
98
|
export const createFileTool = {
|
|
42
99
|
handler,
|
|
43
100
|
formatter,
|
|
101
|
+
validator,
|
|
44
102
|
config: {
|
|
45
103
|
type: 'function',
|
|
46
104
|
function: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-file.js","sourceRoot":"","sources":["../../source/tools/create-file.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create-file.js","sourceRoot":"","sources":["../../source/tools/create-file.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-lines.d.ts","sourceRoot":"","sources":["../../source/tools/delete-lines.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delete-lines.d.ts","sourceRoot":"","sources":["../../source/tools/delete-lines.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAqbnE,eAAO,MAAM,eAAe,EAAE,cA8B7B,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
-
import { readFile, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { readFile, writeFile, access } from 'node:fs/promises';
|
|
5
|
+
import { constants } from 'node:fs';
|
|
5
6
|
import { highlight } from 'cli-highlight';
|
|
6
7
|
import { Text, Box } from 'ink';
|
|
7
8
|
import { ThemeContext } from '../hooks/useTheme.js';
|
|
@@ -192,9 +193,68 @@ async function formatDeleteLinesPreview(args, result, colors) {
|
|
|
192
193
|
const formatter = async (args, result) => {
|
|
193
194
|
return _jsx(DeleteLinesFormatter, { args: args, result: result });
|
|
194
195
|
};
|
|
196
|
+
const validator = async (args) => {
|
|
197
|
+
const { path, line_number, end_line } = args;
|
|
198
|
+
// Check if file exists
|
|
199
|
+
const absPath = resolve(path);
|
|
200
|
+
try {
|
|
201
|
+
await access(absPath, constants.F_OK);
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
if (error.code === 'ENOENT') {
|
|
205
|
+
return {
|
|
206
|
+
valid: false,
|
|
207
|
+
error: `⚒ File "${path}" does not exist`,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
valid: false,
|
|
212
|
+
error: `⚒ Cannot access file "${path}": ${error.message}`,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
// Validate line numbers
|
|
216
|
+
if (!line_number || line_number < 1) {
|
|
217
|
+
return {
|
|
218
|
+
valid: false,
|
|
219
|
+
error: `⚒ Invalid line_number: ${line_number}. Must be a positive integer.`,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
const endLine = end_line ?? line_number;
|
|
223
|
+
if (endLine < line_number) {
|
|
224
|
+
return {
|
|
225
|
+
valid: false,
|
|
226
|
+
error: `⚒ end_line (${endLine}) cannot be less than line_number (${line_number}).`,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
// Check line numbers are within file bounds
|
|
230
|
+
try {
|
|
231
|
+
const fileContent = await readFile(absPath, 'utf-8');
|
|
232
|
+
const lines = fileContent.split('\n');
|
|
233
|
+
if (line_number > lines.length) {
|
|
234
|
+
return {
|
|
235
|
+
valid: false,
|
|
236
|
+
error: `⚒ Line number ${line_number} is out of range (file has ${lines.length} lines)`,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
if (endLine > lines.length) {
|
|
240
|
+
return {
|
|
241
|
+
valid: false,
|
|
242
|
+
error: `⚒ End line ${endLine} is out of range (file has ${lines.length} lines)`,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
return {
|
|
248
|
+
valid: false,
|
|
249
|
+
error: `⚒ Error reading file: ${error.message}`,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
return { valid: true };
|
|
253
|
+
};
|
|
195
254
|
export const deleteLinesTool = {
|
|
196
255
|
handler,
|
|
197
256
|
formatter,
|
|
257
|
+
validator,
|
|
198
258
|
config: {
|
|
199
259
|
type: 'function',
|
|
200
260
|
function: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-lines.js","sourceRoot":"","sources":["../../source/tools/delete-lines.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"delete-lines.js","sourceRoot":"","sources":["../../source/tools/delete-lines.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-bash.d.ts","sourceRoot":"","sources":["../../source/tools/execute-bash.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,cAAc,EAEd,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-bash.d.ts","sourceRoot":"","sources":["../../source/tools/execute-bash.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,cAAc,EAEd,MAAM,mBAAmB,CAAC;AA6J3B,eAAO,MAAM,eAAe,EAAE,cAqB7B,CAAC"}
|
|
@@ -83,9 +83,38 @@ const ExecuteBashFormatter = React.memo(({ args, result }) => {
|
|
|
83
83
|
const formatter = async (args, result) => {
|
|
84
84
|
return _jsx(ExecuteBashFormatter, { args: args, result: result });
|
|
85
85
|
};
|
|
86
|
+
const validator = async (args) => {
|
|
87
|
+
const command = args.command?.trim();
|
|
88
|
+
// Check if command is empty
|
|
89
|
+
if (!command) {
|
|
90
|
+
return {
|
|
91
|
+
valid: false,
|
|
92
|
+
error: '⚒ Command cannot be empty',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// Check for extremely dangerous commands
|
|
96
|
+
const dangerousPatterns = [
|
|
97
|
+
/rm\s+-rf\s+\/(?!\w)/i, // rm -rf / (but allow /path)
|
|
98
|
+
/mkfs/i, // Format filesystem
|
|
99
|
+
/dd\s+if=/i, // Direct disk write
|
|
100
|
+
/:(){:|:&};:/i, // Fork bomb
|
|
101
|
+
/>\s*\/dev\/sd[a-z]/i, // Writing to raw disk devices
|
|
102
|
+
/chmod\s+-R\s+000/i, // Remove all permissions recursively
|
|
103
|
+
];
|
|
104
|
+
for (const pattern of dangerousPatterns) {
|
|
105
|
+
if (pattern.test(command)) {
|
|
106
|
+
return {
|
|
107
|
+
valid: false,
|
|
108
|
+
error: `⚒ Command contains potentially destructive operation: "${command}". This command is blocked for safety.`,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return { valid: true };
|
|
113
|
+
};
|
|
86
114
|
export const executeBashTool = {
|
|
87
115
|
handler,
|
|
88
116
|
formatter,
|
|
117
|
+
validator,
|
|
89
118
|
config: {
|
|
90
119
|
type: 'function',
|
|
91
120
|
function: {
|