@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,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":"AAKA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAiFnE,eAAO,MAAM,cAAc,EAAE,cAyB5B,CAAC"}
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":"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"}
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":"AAKA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAmXnE,eAAO,MAAM,eAAe,EAAE,cA6B7B,CAAC"}
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;AA0H3B,eAAO,MAAM,eAAe,EAAE,cAoB7B,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: {