@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
@@ -1 +1 @@
1
- {"version":3,"file":"execute-bash.js","sourceRoot":"","sources":["../../source/tools/execute-bash.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute-bash.js","sourceRoot":"","sources":["../../source/tools/execute-bash.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDefinition } from '../types/index.js';
2
+ export declare const fetchUrlTool: ToolDefinition;
3
+ //# sourceMappingURL=fetch-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-url.d.ts","sourceRoot":"","sources":["../../source/tools/fetch-url.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAyJnE,eAAO,MAAM,YAAY,EAAE,cAuB1B,CAAC"}
@@ -0,0 +1,122 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { fetch } from 'undici';
3
+ import React from 'react';
4
+ import { Text, Box } from 'ink';
5
+ import { ThemeContext } from '../hooks/useTheme.js';
6
+ import ToolMessage from '../components/tool-message.js';
7
+ const handler = async (args) => {
8
+ // Validate URL
9
+ try {
10
+ new URL(args.url);
11
+ }
12
+ catch {
13
+ throw new Error(`Invalid URL: ${args.url}`);
14
+ }
15
+ // Use Jina AI Reader to convert URL to LLM-friendly markdown
16
+ const jinaUrl = `https://r.jina.ai/${args.url}`;
17
+ try {
18
+ const response = await fetch(jinaUrl, {
19
+ headers: {
20
+ Accept: 'text/plain',
21
+ },
22
+ signal: AbortSignal.timeout(15000), // 15 second timeout
23
+ method: 'GET',
24
+ });
25
+ if (!response.ok) {
26
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
27
+ }
28
+ const content = await response.text();
29
+ if (!content || content.length === 0) {
30
+ throw new Error('No content returned from URL');
31
+ }
32
+ // Limit content size to prevent context overflow (~100KB)
33
+ const maxSize = 100000;
34
+ if (content.length > maxSize) {
35
+ const truncated = content.substring(0, maxSize);
36
+ return `${truncated}\n\n[Content truncated - original size was ${content.length} characters]`;
37
+ }
38
+ return content;
39
+ }
40
+ catch (error) {
41
+ if (error.name === 'AbortError') {
42
+ throw new Error(`Request timeout: URL took too long to fetch (>15s)`);
43
+ }
44
+ throw new Error(`Failed to fetch URL: ${error.message}`);
45
+ }
46
+ };
47
+ // Create a component that will re-render when theme changes
48
+ const FetchUrlFormatter = React.memo(({ args, result }) => {
49
+ const { colors } = React.useContext(ThemeContext);
50
+ const url = args.url || 'unknown';
51
+ // Calculate content stats from result
52
+ let contentSize = 0;
53
+ let estimatedTokens = 0;
54
+ let wasTruncated = false;
55
+ if (result) {
56
+ contentSize = result.length;
57
+ estimatedTokens = Math.ceil(contentSize / 4);
58
+ wasTruncated = result.includes('[Content truncated');
59
+ }
60
+ const messageContent = (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.tool, children: "\u2692 fetch_url" }), _jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "URL: " }), _jsx(Text, { color: colors.white, children: url })] }), result && (_jsxs(_Fragment, { children: [_jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Content: " }), _jsxs(Text, { color: colors.white, children: [contentSize.toLocaleString(), " characters (~", estimatedTokens, ' ', "tokens)"] })] }), wasTruncated && (_jsx(Box, { children: _jsx(Text, { color: colors.warning, children: "\u26A0 Content was truncated to 100KB" }) }))] }))] }));
61
+ return _jsx(ToolMessage, { message: messageContent, hideBox: true });
62
+ });
63
+ const formatter = async (args, result) => {
64
+ return _jsx(FetchUrlFormatter, { args: args, result: result });
65
+ };
66
+ const validator = async (args) => {
67
+ // Validate URL format
68
+ try {
69
+ const parsedUrl = new URL(args.url);
70
+ // Check for valid protocol
71
+ if (!['http:', 'https:'].includes(parsedUrl.protocol)) {
72
+ return {
73
+ valid: false,
74
+ error: `Invalid URL protocol "${parsedUrl.protocol}". Only http: and https: are supported.`,
75
+ };
76
+ }
77
+ // Check for localhost/internal IPs (security consideration)
78
+ const hostname = parsedUrl.hostname.toLowerCase();
79
+ if (hostname === 'localhost' ||
80
+ hostname === '127.0.0.1' ||
81
+ hostname === '0.0.0.0' ||
82
+ hostname.startsWith('192.168.') ||
83
+ hostname.startsWith('10.') ||
84
+ hostname.match(/^172\.(1[6-9]|2[0-9]|3[0-1])\./)) {
85
+ return {
86
+ valid: false,
87
+ error: `⚒ Cannot fetch from internal/private network address: ${hostname}`,
88
+ };
89
+ }
90
+ return { valid: true };
91
+ }
92
+ catch (error) {
93
+ return {
94
+ valid: false,
95
+ error: `⚒ Invalid URL format: ${args.url}`,
96
+ };
97
+ }
98
+ };
99
+ export const fetchUrlTool = {
100
+ handler,
101
+ formatter,
102
+ validator,
103
+ requiresConfirmation: false,
104
+ config: {
105
+ type: 'function',
106
+ function: {
107
+ name: 'fetch_url',
108
+ description: 'Fetch and convert any URL to clean, LLM-friendly markdown text. Useful for reading documentation, articles, or web content. Supports images (with captions) and PDFs.',
109
+ parameters: {
110
+ type: 'object',
111
+ properties: {
112
+ url: {
113
+ type: 'string',
114
+ description: 'The URL to fetch and convert to markdown.',
115
+ },
116
+ },
117
+ required: ['url'],
118
+ },
119
+ },
120
+ },
121
+ };
122
+ //# sourceMappingURL=fetch-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-url.js","sourceRoot":"","sources":["../../source/tools/fetch-url.tsx"],"names":[],"mappings":"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"}
@@ -4,4 +4,10 @@ export declare const toolDefinitions: ToolDefinition[];
4
4
  export declare const toolRegistry: Record<string, ToolHandler>;
5
5
  export declare const tools: Tool[];
6
6
  export declare const toolFormatters: Record<string, (args: any) => string | Promise<string> | React.ReactElement | Promise<React.ReactElement>>;
7
+ export declare const toolValidators: Record<string, (args: any) => Promise<{
8
+ valid: true;
9
+ } | {
10
+ valid: false;
11
+ error: string;
12
+ }>>;
7
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/tools/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAC,WAAW,EAAE,IAAI,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEzE,eAAO,MAAM,eAAe,EAAE,cAAc,EAQ3C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAEpD,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,IAAI,EAA2C,CAAC;AAGpE,eAAO,MAAM,cAAc,EAAE,MAAM,CAClC,MAAM,EACN,CACC,IAAI,EAAE,GAAG,KAEP,MAAM,GACN,OAAO,CAAC,MAAM,CAAC,GACf,KAAK,CAAC,YAAY,GAClB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAK9B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/tools/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAC,WAAW,EAAE,IAAI,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEzE,eAAO,MAAM,eAAe,EAAE,cAAc,EAU3C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAEpD,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,IAAI,EAA2C,CAAC;AAGpE,eAAO,MAAM,cAAc,EAAE,MAAM,CAClC,MAAM,EACN,CACC,IAAI,EAAE,GAAG,KAEP,MAAM,GACN,OAAO,CAAC,MAAM,CAAC,GACf,KAAK,CAAC,YAAY,GAClB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAK9B,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,MAAM,CAClC,MAAM,EACN,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC,CAKrE,CAAC"}
@@ -5,6 +5,8 @@ import { replaceLinesTool } from './replace-lines.js';
5
5
  import { deleteLinesTool } from './delete-lines.js';
6
6
  import { readManyFilesTool } from './read-many-files.js';
7
7
  import { executeBashTool } from './execute-bash.js';
8
+ import { webSearchTool } from './web-search.js';
9
+ import { fetchUrlTool } from './fetch-url.js';
8
10
  export const toolDefinitions = [
9
11
  readFileTool,
10
12
  createFileTool,
@@ -13,6 +15,8 @@ export const toolDefinitions = [
13
15
  deleteLinesTool,
14
16
  readManyFilesTool,
15
17
  executeBashTool,
18
+ webSearchTool,
19
+ fetchUrlTool,
16
20
  ];
17
21
  export const toolRegistry = Object.fromEntries(toolDefinitions.map(def => [def.config.function.name, def.handler]));
18
22
  export const tools = toolDefinitions.map(def => def.config);
@@ -20,4 +24,8 @@ export const tools = toolDefinitions.map(def => def.config);
20
24
  export const toolFormatters = Object.fromEntries(toolDefinitions
21
25
  .filter(def => def.formatter)
22
26
  .map(def => [def.config.function.name, def.formatter]));
27
+ // Export validator registry
28
+ export const toolValidators = Object.fromEntries(toolDefinitions
29
+ .filter(def => def.validator)
30
+ .map(def => [def.config.function.name, def.validator]));
23
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAIlD,MAAM,CAAC,MAAM,eAAe,GAAqB;IAChD,YAAY;IACZ,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,eAAe;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAgC,MAAM,CAAC,WAAW,CAC1E,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAW,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEpE,uCAAuC;AACvC,MAAM,CAAC,MAAM,cAAc,GASvB,MAAM,CAAC,WAAW,CACrB,eAAe;KACb,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;KAC5B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,SAAU,CAAC,CAAC,CACxD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAI5C,MAAM,CAAC,MAAM,eAAe,GAAqB;IAChD,YAAY;IACZ,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,eAAe;IACf,aAAa;IACb,YAAY;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAgC,MAAM,CAAC,WAAW,CAC1E,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAW,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEpE,uCAAuC;AACvC,MAAM,CAAC,MAAM,cAAc,GASvB,MAAM,CAAC,WAAW,CACrB,eAAe;KACb,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;KAC5B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,SAAU,CAAC,CAAC,CACxD,CAAC;AAEF,4BAA4B;AAC5B,MAAM,CAAC,MAAM,cAAc,GAGvB,MAAM,CAAC,WAAW,CACrB,eAAe;KACb,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;KAC5B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,SAAU,CAAC,CAAC,CACxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"insert-lines.d.ts","sourceRoot":"","sources":["../../source/tools/insert-lines.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAwTnE,eAAO,MAAM,eAAe,EAAE,cA8B7B,CAAC"}
1
+ {"version":3,"file":"insert-lines.d.ts","sourceRoot":"","sources":["../../source/tools/insert-lines.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AA2WnE,eAAO,MAAM,eAAe,EAAE,cA+B7B,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';
@@ -153,9 +154,55 @@ async function formatInsertLinesPreview(args, result, colors) {
153
154
  const formatter = async (args, result) => {
154
155
  return _jsx(InsertLinesFormatter, { args: args, result: result });
155
156
  };
157
+ const validator = async (args) => {
158
+ const { path, line_number } = args;
159
+ // Check if file exists
160
+ const absPath = resolve(path);
161
+ try {
162
+ await access(absPath, constants.F_OK);
163
+ }
164
+ catch (error) {
165
+ if (error.code === 'ENOENT') {
166
+ return {
167
+ valid: false,
168
+ error: `⚒ File "${path}" does not exist`,
169
+ };
170
+ }
171
+ return {
172
+ valid: false,
173
+ error: `⚒ Cannot access file "${path}": ${error.message}`,
174
+ };
175
+ }
176
+ // Validate line number
177
+ if (!line_number || line_number < 1) {
178
+ return {
179
+ valid: false,
180
+ error: `⚒ Invalid line_number: ${line_number}. Must be a positive integer.`,
181
+ };
182
+ }
183
+ // Check line number is within valid range (can be 1 past end for append)
184
+ try {
185
+ const fileContent = await readFile(absPath, 'utf-8');
186
+ const lines = fileContent.split('\n');
187
+ if (line_number > lines.length + 1) {
188
+ return {
189
+ valid: false,
190
+ error: `⚒ Line number ${line_number} is out of range (file has ${lines.length} lines, can insert at line ${lines.length + 1})`,
191
+ };
192
+ }
193
+ }
194
+ catch (error) {
195
+ return {
196
+ valid: false,
197
+ error: `⚒ Error reading file: ${error.message}`,
198
+ };
199
+ }
200
+ return { valid: true };
201
+ };
156
202
  export const insertLinesTool = {
157
203
  handler,
158
204
  formatter,
205
+ validator,
159
206
  config: {
160
207
  type: 'function',
161
208
  function: {
@@ -1 +1 @@
1
- {"version":3,"file":"insert-lines.js","sourceRoot":"","sources":["../../source/tools/insert-lines.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AACxC,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,MAAM,KAAK,CAAC;AAE9B,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAC,wBAAwB,EAAC,MAAM,yCAAyC,CAAC;AACjF,OAAO,WAAW,MAAM,+BAA+B,CAAC;AAQxD,MAAM,OAAO,GAAgB,KAAK,EAAE,IAAqB,EAAmB,EAAE;IAC7E,MAAM,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC;IAE1C,uBAAuB;IACvB,IAAI,CAAC,WAAW,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACd,wBAAwB,WAAW,+BAA+B,CAClE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEtC,uCAAuC;IACvC,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACd,eAAe,WAAW,8BAA8B,KAAK,CAAC,MAAM,SAAS,CAC7E,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;IAEpD,wBAAwB;IACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAE9C,uEAAuE;IACvE,IAAI,WAAW,GAAG,8BAA8B,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/B,WAAW,IAAI,GAAG,UAAU,KAAK,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,OAAO,yBAAyB,WAAW,CAAC,MAAM,QACjD,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAChC,YAAY,WAAW,IAAI,WAAW,EAAE,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CACtC,CAAC,EAAC,IAAI,EAAE,MAAM,EAA+B,EAAE,EAAE;IAChD,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAE,CAAC;IACjD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAC3C,IAAI,CACJ,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACpB,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;YAClC,MAAM,gBAAgB,GAAG,MAAM,wBAAwB,CACtD,IAAI,EACJ,MAAM,EACN,MAAM,CACN,CAAC;YACF,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC9B,CAAC,CAAC;QACF,eAAe,EAAE,CAAC;IACnB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE3B,OAAO,OAAO,CAAC;AAChB,CAAC,CACD,CAAC;AAEF,KAAK,UAAU,wBAAwB,CACtC,IAAS,EACT,MAAe,EACf,MAAY;IAEZ,MAAM,WAAW,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;IAC1C,MAAM,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvC,uBAAuB;IACvB,IAAI,CAAC,UAAU,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACd,wBAAwB,WAAW,+BAA+B,CAClE,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAE1C,IAAI,CAAC;QACJ,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAE/C,0DAA0D;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,YAAY,GAAG,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACvB,KAAK,CAAC,MAAM,GAAG,CAAC,EAChB,UAAU,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,YAAY,CAClD,CAAC;YAEF,MAAM,eAAe,GAAyB,EAAE,CAAC;YAEjD,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAClD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5B,MAAM,cAAc,GACnB,CAAC,GAAG,CAAC,IAAI,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;gBAEhE,IAAI,WAAmB,CAAC;gBACxB,IAAI,CAAC;oBACJ,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;gBAC7D,CAAC;gBAAC,MAAM,CAAC;oBACR,WAAW,GAAG,IAAI,CAAC;gBACpB,CAAC;gBAED,IAAI,cAAc,EAAE,CAAC;oBACpB,eAAe,CAAC,IAAI,CACnB,MAAC,IAAI,IAEJ,eAAe,EAAE,WAAW,CAAC,SAAS,EACtC,KAAK,EAAE,WAAW,CAAC,aAAa,EAChC,IAAI,EAAC,MAAM,aAEV,UAAU,SAAK,WAAW,KALtB,WAAW,CAAC,EAAE,CAMb,CACP,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACP,eAAe,CAAC,IAAI,CACnB,MAAC,IAAI,IAAsB,KAAK,EAAE,WAAW,CAAC,SAAS,aACrD,UAAU,OAAG,WAAW,KADf,WAAW,CAAC,EAAE,CAElB,CACP,CAAC;gBACH,CAAC;YACF,CAAC;YAED,MAAM,cAAc,GAAG,CACtB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAC1B,MAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,IAAI,aAAG,YAAY,qBAAqB,EAEjE,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,SAAS,uBAAe,EACjD,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,OAAO,YAAG,IAAI,GAAQ,IAC1C,EAEN,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,SAAS,uBAAe,EACjD,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,KAAK,YAAG,UAAU,GAAQ,IAC9C,EAEN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,YACvC,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,OAAO,qDAEzB,GACF,EAEN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACvC,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,SAAS,0CAAkC,EACnE,eAAe,IACX,IACD,CACN,CAAC;YAEF,OAAO,KAAC,WAAW,IAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,GAAI,CAAC;QAChE,CAAC;QAED,4CAA4C;QAC5C,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACd,eAAe,UAAU,8BAA8B,KAAK,CAAC,MAAM,SAAS,CAC5E,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QAE1E,MAAM,aAAa,GAAyB,EAAE,CAAC;QAC/C,MAAM,aAAa,GAAyB,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAyB,EAAE,CAAC;QAE9C,sBAAsB;QACtB,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,WAAmB,CAAC;YACxB,IAAI,CAAC;gBACJ,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACR,WAAW,GAAG,IAAI,CAAC;YACpB,CAAC;YAED,aAAa,CAAC,IAAI,CACjB,MAAC,IAAI,IAAqB,KAAK,EAAE,WAAW,CAAC,SAAS,aACpD,UAAU,OAAG,WAAW,KADf,UAAU,CAAC,EAAE,CAEjB,CACP,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,WAAmB,CAAC;YACxB,IAAI,CAAC;gBACJ,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACR,WAAW,GAAG,IAAI,CAAC;YACpB,CAAC;YAED,aAAa,CAAC,IAAI,CACjB,MAAC,IAAI,IAEJ,eAAe,EAAE,WAAW,CAAC,SAAS,EACtC,KAAK,EAAE,WAAW,CAAC,aAAa,EAChC,IAAI,EAAC,MAAM,aAEV,UAAU,SAAK,WAAW,KALtB,UAAU,CAAC,EAAE,CAMZ,CACP,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACvE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,WAAmB,CAAC;YACxB,IAAI,CAAC;gBACJ,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACR,WAAW,GAAG,IAAI,CAAC;YACpB,CAAC;YAED,YAAY,CAAC,IAAI,CAChB,MAAC,IAAI,IAAoB,KAAK,EAAE,WAAW,CAAC,SAAS,aACnD,UAAU,OAAG,WAAW,KADf,SAAS,CAAC,EAAE,CAEhB,CACP,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,CACtB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAC1B,MAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,IAAI,aAAG,YAAY,qBAAqB,EAEjE,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,SAAS,uBAAe,EACjD,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,OAAO,YAAG,IAAI,GAAQ,IAC1C,EAEN,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,SAAS,uBAAe,EACjD,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,KAAK,YAAG,UAAU,GAAQ,IAC9C,EAEN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACvC,MAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,OAAO,kCAClB,WAAW,CAAC,MAAM,WAC9B,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAC5B,EACP,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,aAAa,EACb,aAAa,EACb,YAAY,IACR,IACD,IACD,CACN,CAAC;QAEF,OAAO,KAAC,WAAW,IAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,GAAI,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,CACpB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAC1B,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,IAAI,oCAAuB,EAEpD,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,SAAS,uBAAe,EACjD,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,OAAO,YAAG,IAAI,GAAQ,IAC1C,EAEN,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,KAAK,wBAAgB,EAC9C,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,KAAK,YAC5B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GACjD,IACF,IACD,CACN,CAAC;QAEF,OAAO,KAAC,WAAW,IAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,GAAI,CAAC;IAC9D,CAAC;AACF,CAAC;AAED,MAAM,SAAS,GAAG,KAAK,EACtB,IAAS,EACT,MAAe,EACe,EAAE;IAChC,OAAO,KAAC,oBAAoB,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAI,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC9C,OAAO;IACP,SAAS;IACT,MAAM,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACT,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,sDAAsD;YACnE,UAAU,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACX,IAAI,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,+BAA+B;qBAC5C;oBACD,WAAW,EAAE;wBACZ,IAAI,EAAE,QAAQ;wBACd,WAAW,EACV,6DAA6D;qBAC9D;oBACD,OAAO,EAAE;wBACR,IAAI,EAAE,QAAQ;wBACd,WAAW,EACV,qEAAqE;qBACtE;iBACD;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC;aAC5C;SACD;KACD;CACD,CAAC"}
1
+ {"version":3,"file":"insert-lines.js","sourceRoot":"","sources":["../../source/tools/insert-lines.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"read-file.d.ts","sourceRoot":"","sources":["../../source/tools/read-file.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AA2FnE,eAAO,MAAM,YAAY,EAAE,cAsB1B,CAAC"}
1
+ {"version":3,"file":"read-file.d.ts","sourceRoot":"","sources":["../../source/tools/read-file.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AA2HnE,eAAO,MAAM,YAAY,EAAE,cAuB1B,CAAC"}
@@ -1,6 +1,7 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { resolve } from 'node:path';
3
- import { readFile } from 'node:fs/promises';
3
+ import { readFile, access } from 'node:fs/promises';
4
+ import { constants } from 'node:fs';
4
5
  import React from 'react';
5
6
  import { Text, Box } from 'ink';
6
7
  import { ThemeContext } from '../hooks/useTheme.js';
@@ -39,12 +40,15 @@ const ReadFileFormatter = React.memo(({ args }) => {
39
40
  React.useEffect(() => {
40
41
  const loadFileInfo = async () => {
41
42
  try {
43
+ // Check if file exists first
44
+ await access(resolve(path), constants.F_OK);
42
45
  const content = await readFile(resolve(path), 'utf-8');
43
46
  const fileSize = content.length;
44
47
  const estimatedTokens = Math.ceil(fileSize / 4);
45
48
  setFileInfo({ size: fileSize, tokens: estimatedTokens });
46
49
  }
47
50
  catch (error) {
51
+ // File doesn't exist or can't be read - show 0
48
52
  setFileInfo({ size: 0, tokens: 0 });
49
53
  }
50
54
  };
@@ -53,12 +57,36 @@ const ReadFileFormatter = React.memo(({ args }) => {
53
57
  const messageContent = (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.tool, children: "\u2692 read_file" }), _jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Path: " }), _jsx(Text, { color: colors.white, children: path })] }), _jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Size: " }), _jsxs(Text, { color: colors.white, children: [fileInfo.size, " characters (~", fileInfo.tokens, " tokens)"] })] }), (args.offset || args.limit) && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: colors.secondary, children: "Range: " }), _jsxs(Text, { color: colors.primary, children: [args.offset && `from line ${args.offset} `, args.limit && `(${args.limit} lines)`] })] }))] }));
54
58
  return _jsx(ToolMessage, { message: messageContent, hideBox: true });
55
59
  });
56
- const formatter = async (args) => {
60
+ const formatter = async (args, result) => {
61
+ // If result is an error message, don't try to read the file
62
+ if (result && result.startsWith('Error:')) {
63
+ return _jsx(_Fragment, {});
64
+ }
57
65
  return _jsx(ReadFileFormatter, { args: args });
58
66
  };
67
+ const validator = async (args) => {
68
+ const absPath = resolve(args.path);
69
+ try {
70
+ await access(absPath, constants.F_OK);
71
+ return { valid: true };
72
+ }
73
+ catch (error) {
74
+ if (error.code === 'ENOENT') {
75
+ return {
76
+ valid: false,
77
+ error: `⚒ File "${args.path}" does not exist`,
78
+ };
79
+ }
80
+ return {
81
+ valid: false,
82
+ error: `⚒ Cannot access file "${args.path}": ${error.message}`,
83
+ };
84
+ }
85
+ };
59
86
  export const readFileTool = {
60
87
  handler,
61
88
  formatter,
89
+ validator,
62
90
  requiresConfirmation: false,
63
91
  config: {
64
92
  type: 'function',
@@ -1 +1 @@
1
- {"version":3,"file":"read-file.js","sourceRoot":"","sources":["../../source/tools/read-file.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-file.js","sourceRoot":"","sources":["../../source/tools/read-file.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"read-many-files.d.ts","sourceRoot":"","sources":["../../source/tools/read-many-files.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AA+InE,eAAO,MAAM,iBAAiB,EAAE,cAsB/B,CAAC"}
1
+ {"version":3,"file":"read-many-files.d.ts","sourceRoot":"","sources":["../../source/tools/read-many-files.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AA+LnE,eAAO,MAAM,iBAAiB,EAAE,cAuB/B,CAAC"}
@@ -1,6 +1,7 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { resolve } from 'node:path';
3
- import { readFile } from 'node:fs/promises';
3
+ import { readFile, access } from 'node:fs/promises';
4
+ import { constants } from 'node:fs';
4
5
  import React from 'react';
5
6
  import { Text, Box } from 'ink';
6
7
  import { ThemeContext } from '../hooks/useTheme.js';
@@ -89,12 +90,51 @@ const ReadManyFilesFormatter = React.memo(({ args }) => {
89
90
  const messageContent = (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.tool, children: "\u2692 read_many_files" }), _jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Files: " }), _jsx(Text, { color: colors.white, children: fileInfo.totalFiles })] }), _jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Total size: " }), _jsxs(Text, { color: colors.white, children: [fileInfo.totalSize, " characters (~", fileInfo.totalTokens, " tokens)"] })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: colors.white, children: "Paths:" }), paths.map((path, i) => (_jsxs(Box, { marginLeft: 2, children: [_jsx(Text, { color: colors.secondary, children: "\u2022 " }), _jsx(Text, { color: colors.primary, children: path })] }, i)))] })] }));
90
91
  return _jsx(ToolMessage, { message: messageContent, hideBox: true });
91
92
  });
92
- const formatter = async (args) => {
93
+ const formatter = async (args, result) => {
94
+ // If result is an error message, don't try to read the files
95
+ if (result && result.startsWith('Error:')) {
96
+ return _jsx(_Fragment, {});
97
+ }
93
98
  return _jsx(ReadManyFilesFormatter, { args: args });
94
99
  };
100
+ const validator = async (args) => {
101
+ if (!Array.isArray(args.paths)) {
102
+ return {
103
+ valid: false,
104
+ error: '⚒ Paths must be an array of strings',
105
+ };
106
+ }
107
+ const missingFiles = [];
108
+ for (const path of args.paths) {
109
+ const absPath = resolve(path);
110
+ try {
111
+ await access(absPath, constants.F_OK);
112
+ }
113
+ catch (error) {
114
+ if (error.code === 'ENOENT') {
115
+ missingFiles.push(path);
116
+ }
117
+ else {
118
+ return {
119
+ valid: false,
120
+ error: `⚒ Cannot access file "${path}": ${error.message}`,
121
+ };
122
+ }
123
+ }
124
+ }
125
+ if (missingFiles.length > 0) {
126
+ const fileList = missingFiles.map(f => ` • ${f}`).join('\n');
127
+ return {
128
+ valid: false,
129
+ error: `⚒ The following file${missingFiles.length > 1 ? 's' : ''} do${missingFiles.length > 1 ? '' : 'es'} not exist:\n${fileList}`,
130
+ };
131
+ }
132
+ return { valid: true };
133
+ };
95
134
  export const readManyFilesTool = {
96
135
  handler,
97
136
  formatter,
137
+ validator,
98
138
  config: {
99
139
  type: 'function',
100
140
  function: {
@@ -1 +1 @@
1
- {"version":3,"file":"read-many-files.js","sourceRoot":"","sources":["../../source/tools/read-many-files.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,MAAM,KAAK,CAAC;AAE9B,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAClD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AAExD,MAAM,OAAO,GAAgB,KAAK,EAAE,IAEnC,EAAmB,EAAE;IACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,OAAO,GAAG,EAKb,CAAC;IACJ,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAE7B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAElC,uCAAuC;YACvC,IAAI,eAAe,GAAG,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/C,eAAe,IAAI,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YAChD,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;YAChC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAChD,SAAS,IAAI,QAAQ,CAAC;YACtB,oBAAoB,IAAI,eAAe,CAAC;YAExC,OAAO,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,CAAC;gBACP,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrC,IAAI,EAAE,QAAQ;gBACd,eAAe;aACf,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,CAAC;gBACP,OAAO,EAAE,uBACR,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAChD,EAAE;gBACF,IAAI,EAAE,CAAC;gBACP,eAAe,EAAE,CAAC;aAClB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,gCAAgC;IAChC,MAAM,OAAO,GAAG;QACf,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;QAC7B,SAAS;QACT,oBAAoB;QACpB,KAAK,EAAE,OAAO;KACd,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,EAAc,EAAE,EAAE;IACjE,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAE,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAE/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,cAAc,GAAG,CACtB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAC1B,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,uCAA0B,EAClD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,8CAAsC,IAC1D,CACN,CAAC;QACF,OAAO,KAAC,WAAW,IAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,GAAI,CAAC;IAChE,CAAC;IAED,iDAAiD;IACjD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC9C,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;KACd,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACpB,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;YAChC,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACJ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;oBACvD,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;gBAC7B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,gCAAgC;gBACjC,CAAC;YACF,CAAC;YACD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YACjD,WAAW,CAAC;gBACX,UAAU,EAAE,KAAK,CAAC,MAAM;gBACxB,SAAS;gBACT,WAAW,EAAE,eAAe;aAC5B,CAAC,CAAC;QACJ,CAAC,CAAC;QACF,aAAa,EAAE,CAAC;IACjB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,cAAc,GAAG,CACtB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAC1B,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,uCAA0B,EAElD,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,wBAAgB,EAC7C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YAAG,QAAQ,CAAC,UAAU,GAAQ,IAClD,EAEN,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,6BAAqB,EAClD,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,aACvB,QAAQ,CAAC,SAAS,oBAAgB,QAAQ,CAAC,WAAW,gBACjD,IACF,EAEN,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACxC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,uBAAe,EACvC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,CAAS,EAAE,EAAE,CAAC,CACvC,MAAC,GAAG,IAAS,UAAU,EAAE,CAAC,aACzB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,wBAAW,EACxC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,IAAI,GAAQ,KAFjC,CAAC,CAGL,CACN,CAAC,IACG,IACD,CACN,CAAC;IAEF,OAAO,KAAC,WAAW,IAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,GAAI,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,KAAK,EAAE,IAAS,EAA+B,EAAE;IAClE,OAAO,KAAC,sBAAsB,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAChD,OAAO;IACP,SAAS;IACT,MAAM,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACT,IAAI,EAAE,iBAAiB;YACvB,WAAW,EACV,iIAAiI;YAClI,UAAU,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACX,KAAK,EAAE;wBACN,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;wBACvB,WAAW,EAAE,wCAAwC;qBACrD;iBACD;gBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;aACnB;SACD;KACD;CACD,CAAC"}
1
+ {"version":3,"file":"read-many-files.js","sourceRoot":"","sources":["../../source/tools/read-many-files.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"replace-lines.d.ts","sourceRoot":"","sources":["../../source/tools/replace-lines.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAyXnE,eAAO,MAAM,gBAAgB,EAAE,cAkC9B,CAAC"}
1
+ {"version":3,"file":"replace-lines.d.ts","sourceRoot":"","sources":["../../source/tools/replace-lines.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,mBAAmB,CAAC;AA2bnE,eAAO,MAAM,gBAAgB,EAAE,cAmC9B,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';
@@ -190,9 +191,68 @@ async function formatReplaceLinesPreview(args, result, colors) {
190
191
  const formatter = async (args, result) => {
191
192
  return _jsx(ReplaceLinesFormatter, { args: args, result: result });
192
193
  };
194
+ const validator = async (args) => {
195
+ const { path, line_number, end_line } = args;
196
+ // Check if file exists
197
+ const absPath = resolve(path);
198
+ try {
199
+ await access(absPath, constants.F_OK);
200
+ }
201
+ catch (error) {
202
+ if (error.code === 'ENOENT') {
203
+ return {
204
+ valid: false,
205
+ error: `⚒ File "${path}" does not exist`,
206
+ };
207
+ }
208
+ return {
209
+ valid: false,
210
+ error: `⚒ Cannot access file "${path}": ${error.message}`,
211
+ };
212
+ }
213
+ // Validate line numbers
214
+ if (!line_number || line_number < 1) {
215
+ return {
216
+ valid: false,
217
+ error: `⚒ Invalid line_number: ${line_number}. Must be a positive integer.`,
218
+ };
219
+ }
220
+ const endLine = end_line ?? line_number;
221
+ if (endLine < line_number) {
222
+ return {
223
+ valid: false,
224
+ error: `⚒ end_line (${endLine}) cannot be less than line_number (${line_number}).`,
225
+ };
226
+ }
227
+ // Check line numbers are within file bounds
228
+ try {
229
+ const fileContent = await readFile(absPath, 'utf-8');
230
+ const lines = fileContent.split('\n');
231
+ if (line_number > lines.length) {
232
+ return {
233
+ valid: false,
234
+ error: `⚒ Line number ${line_number} is out of range (file has ${lines.length} lines)`,
235
+ };
236
+ }
237
+ if (endLine > lines.length) {
238
+ return {
239
+ valid: false,
240
+ error: `⚒ End line ${endLine} is out of range (file has ${lines.length} lines)`,
241
+ };
242
+ }
243
+ }
244
+ catch (error) {
245
+ return {
246
+ valid: false,
247
+ error: `⚒ Error reading file: ${error.message}`,
248
+ };
249
+ }
250
+ return { valid: true };
251
+ };
193
252
  export const replaceLinesTool = {
194
253
  handler,
195
254
  formatter,
255
+ validator,
196
256
  config: {
197
257
  type: 'function',
198
258
  function: {