@nanocollective/nanocoder 1.16.1 → 1.16.3

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 (112) hide show
  1. package/dist/commands/update.d.ts.map +1 -1
  2. package/dist/commands/update.js +35 -3
  3. package/dist/commands/update.js.map +1 -1
  4. package/dist/components/assistant-message.d.ts +1 -4
  5. package/dist/components/assistant-message.d.ts.map +1 -1
  6. package/dist/components/assistant-message.js +1 -199
  7. package/dist/components/assistant-message.js.map +1 -1
  8. package/dist/config/index.d.ts.map +1 -1
  9. package/dist/config/index.js +13 -5
  10. package/dist/config/index.js.map +1 -1
  11. package/dist/config/paths.d.ts.map +1 -1
  12. package/dist/config/paths.js +23 -2
  13. package/dist/config/paths.js.map +1 -1
  14. package/dist/hooks/useAppState.d.ts.map +1 -1
  15. package/dist/hooks/useAppState.js +8 -15
  16. package/dist/hooks/useAppState.js.map +1 -1
  17. package/dist/hooks/useChatHandler.d.ts.map +1 -1
  18. package/dist/hooks/useChatHandler.js +26 -0
  19. package/dist/hooks/useChatHandler.js.map +1 -1
  20. package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
  21. package/dist/hooks/useTerminalWidth.js +6 -0
  22. package/dist/hooks/useTerminalWidth.js.map +1 -1
  23. package/dist/markdown-parser/html-entities.d.ts +2 -0
  24. package/dist/markdown-parser/html-entities.d.ts.map +1 -0
  25. package/dist/markdown-parser/html-entities.js +41 -0
  26. package/dist/markdown-parser/html-entities.js.map +1 -0
  27. package/dist/markdown-parser/html-entities.spec.d.ts +2 -0
  28. package/dist/markdown-parser/html-entities.spec.d.ts.map +1 -0
  29. package/dist/markdown-parser/html-entities.spec.js +73 -0
  30. package/dist/markdown-parser/html-entities.spec.js.map +1 -0
  31. package/dist/markdown-parser/index.d.ts +6 -0
  32. package/dist/markdown-parser/index.d.ts.map +1 -0
  33. package/dist/markdown-parser/index.js +97 -0
  34. package/dist/markdown-parser/index.js.map +1 -0
  35. package/dist/markdown-parser/index.spec.d.ts +2 -0
  36. package/dist/markdown-parser/index.spec.d.ts.map +1 -0
  37. package/dist/markdown-parser/index.spec.js +245 -0
  38. package/dist/markdown-parser/index.spec.js.map +1 -0
  39. package/dist/markdown-parser/table-parser.d.ts +3 -0
  40. package/dist/markdown-parser/table-parser.d.ts.map +1 -0
  41. package/dist/markdown-parser/table-parser.js +92 -0
  42. package/dist/markdown-parser/table-parser.js.map +1 -0
  43. package/dist/markdown-parser/table-parser.spec.d.ts +2 -0
  44. package/dist/markdown-parser/table-parser.spec.d.ts.map +1 -0
  45. package/dist/markdown-parser/table-parser.spec.js +120 -0
  46. package/dist/markdown-parser/table-parser.spec.js.map +1 -0
  47. package/dist/markdown-parser/utils.d.ts +2 -0
  48. package/dist/markdown-parser/utils.d.ts.map +1 -0
  49. package/dist/markdown-parser/utils.js +14 -0
  50. package/dist/markdown-parser/utils.js.map +1 -0
  51. package/dist/markdown-parser/utils.spec.d.ts +2 -0
  52. package/dist/markdown-parser/utils.spec.d.ts.map +1 -0
  53. package/dist/markdown-parser/utils.spec.js +59 -0
  54. package/dist/markdown-parser/utils.spec.js.map +1 -0
  55. package/dist/models/models-dev-client.d.ts.map +1 -1
  56. package/dist/models/models-dev-client.js +7 -1
  57. package/dist/models/models-dev-client.js.map +1 -1
  58. package/dist/models/models-dev-client.spec.d.ts +2 -0
  59. package/dist/models/models-dev-client.spec.d.ts.map +1 -0
  60. package/dist/models/models-dev-client.spec.js +302 -0
  61. package/dist/models/models-dev-client.spec.js.map +1 -0
  62. package/dist/tool-calling/xml-parser.d.ts.map +1 -1
  63. package/dist/tool-calling/xml-parser.js +39 -0
  64. package/dist/tool-calling/xml-parser.js.map +1 -1
  65. package/dist/tool-calling/xml-parser.spec.js +43 -0
  66. package/dist/tool-calling/xml-parser.spec.js.map +1 -1
  67. package/dist/tools/execute-bash.d.ts.map +1 -1
  68. package/dist/tools/execute-bash.js +12 -27
  69. package/dist/tools/execute-bash.js.map +1 -1
  70. package/dist/tools/find-files.d.ts +3 -0
  71. package/dist/tools/find-files.d.ts.map +1 -0
  72. package/dist/tools/find-files.js +186 -0
  73. package/dist/tools/find-files.js.map +1 -0
  74. package/dist/tools/index.js +4 -4
  75. package/dist/tools/index.js.map +1 -1
  76. package/dist/tools/read-file.d.ts.map +1 -1
  77. package/dist/tools/read-file.js +143 -9
  78. package/dist/tools/read-file.js.map +1 -1
  79. package/dist/tools/search-file-contents.d.ts +3 -0
  80. package/dist/tools/search-file-contents.d.ts.map +1 -0
  81. package/dist/tools/search-file-contents.js +164 -0
  82. package/dist/tools/search-file-contents.js.map +1 -0
  83. package/dist/types/index.d.ts +0 -1
  84. package/dist/types/index.d.ts.map +1 -1
  85. package/dist/types/index.js +0 -1
  86. package/dist/types/index.js.map +1 -1
  87. package/dist/types/markdown-parser.d.ts +11 -0
  88. package/dist/types/markdown-parser.d.ts.map +1 -0
  89. package/dist/types/markdown-parser.js +2 -0
  90. package/dist/types/markdown-parser.js.map +1 -0
  91. package/dist/utils/update-checker.spec.d.ts +2 -0
  92. package/dist/utils/update-checker.spec.d.ts.map +1 -0
  93. package/dist/utils/update-checker.spec.js +230 -0
  94. package/dist/utils/update-checker.spec.js.map +1 -0
  95. package/package.json +1 -1
  96. package/source/app/prompts/main-prompt.md +67 -23
  97. package/dist/components/update-message.d.ts +0 -7
  98. package/dist/components/update-message.d.ts.map +0 -1
  99. package/dist/components/update-message.js +0 -93
  100. package/dist/components/update-message.js.map +0 -1
  101. package/dist/tools/read-many-files.d.ts +0 -3
  102. package/dist/tools/read-many-files.d.ts.map +0 -1
  103. package/dist/tools/read-many-files.js +0 -169
  104. package/dist/tools/read-many-files.js.map +0 -1
  105. package/dist/tools/search-files.d.ts +0 -3
  106. package/dist/tools/search-files.d.ts.map +0 -1
  107. package/dist/tools/search-files.js +0 -250
  108. package/dist/tools/search-files.js.map +0 -1
  109. package/dist/types/tools.d.ts +0 -5
  110. package/dist/types/tools.d.ts.map +0 -1
  111. package/dist/types/tools.js +0 -2
  112. package/dist/types/tools.js.map +0 -1
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- export default function UpdateMessage(): React.FunctionComponentElement<{
3
- message: string;
4
- hideTitle?: boolean;
5
- hideBox?: boolean;
6
- }> | null;
7
- //# sourceMappingURL=update-message.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-message.d.ts","sourceRoot":"","sources":["../../source/components/update-message.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAejD,MAAM,CAAC,OAAO,UAAU,aAAa;;;;UAsFpC"}
@@ -1,93 +0,0 @@
1
- import React, { useEffect, useState } from 'react';
2
- import { toolRegistry } from '../tools/index.js';
3
- import InfoMessage from '../components/info-message.js';
4
- import SuccessMessage from '../components/success-message.js';
5
- import ErrorMessage from '../components/error-message.js';
6
- import { checkForUpdates } from '../utils/update-checker.js';
7
- var Status;
8
- (function (Status) {
9
- Status["Checking"] = "checking";
10
- Status["Updating"] = "updating";
11
- Status["NoUpdate"] = "no-update";
12
- Status["Success"] = "success";
13
- Status["Error"] = "error";
14
- })(Status || (Status = {}));
15
- export default function UpdateMessage() {
16
- const [status, setStatus] = useState(Status.Checking);
17
- const [error, setError] = useState(null);
18
- useEffect(() => {
19
- let isMounted = true;
20
- const check = async () => {
21
- try {
22
- const updateInfo = await checkForUpdates();
23
- if (isMounted) {
24
- if (updateInfo.hasUpdate) {
25
- setStatus(Status.Updating);
26
- void update();
27
- }
28
- else {
29
- setStatus(Status.NoUpdate);
30
- }
31
- }
32
- }
33
- catch (e) {
34
- if (isMounted) {
35
- setStatus(Status.Error);
36
- setError(e);
37
- }
38
- }
39
- };
40
- const update = async () => {
41
- try {
42
- await toolRegistry.execute_bash({
43
- command: 'npm update -g @nanocollective/nanocoder',
44
- });
45
- if (isMounted) {
46
- setStatus(Status.Success);
47
- }
48
- }
49
- catch (e) {
50
- if (isMounted) {
51
- setStatus(Status.Error);
52
- setError(e);
53
- }
54
- }
55
- };
56
- void check();
57
- return () => {
58
- isMounted = false;
59
- };
60
- }, []);
61
- if (status === Status.Checking) {
62
- return React.createElement(InfoMessage, {
63
- message: 'Checking for available updates...',
64
- hideBox: true,
65
- });
66
- }
67
- if (status === Status.Updating) {
68
- return React.createElement(InfoMessage, {
69
- message: 'Downloading and installing the latest Nanocoder update...',
70
- hideBox: true,
71
- });
72
- }
73
- if (status === Status.NoUpdate) {
74
- return React.createElement(SuccessMessage, {
75
- message: 'Nanocoder is already up to date.',
76
- hideBox: true,
77
- });
78
- }
79
- if (status === Status.Success) {
80
- return React.createElement(SuccessMessage, {
81
- message: 'Nanocoder has been updated to the latest version. Please restart your session to apply the update.',
82
- hideBox: true,
83
- });
84
- }
85
- if (status === Status.Error) {
86
- return React.createElement(ErrorMessage, {
87
- message: `Failed to update Nanocoder: ${error?.message}`,
88
- hideBox: true,
89
- });
90
- }
91
- return null;
92
- }
93
- //# sourceMappingURL=update-message.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-message.js","sourceRoot":"","sources":["../../source/components/update-message.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ToolDefinition } from '../types/index.js';
2
- export declare const readManyFilesTool: ToolDefinition;
3
- //# sourceMappingURL=read-many-files.d.ts.map
@@ -1 +0,0 @@
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,eAAe,CAAC;AA2OlD,eAAO,MAAM,iBAAiB,EAAE,cAM/B,CAAC"}
@@ -1,169 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { resolve } from 'node:path';
3
- import { readFile, access } from 'node:fs/promises';
4
- import { constants } from 'node:fs';
5
- import React from 'react';
6
- import { Text, Box } from 'ink';
7
- import { tool, jsonSchema } from '../types/core.js';
8
- import { ThemeContext } from '../hooks/useTheme.js';
9
- import ToolMessage from '../components/tool-message.js';
10
- const executeReadManyFiles = async (args) => {
11
- if (!Array.isArray(args.paths)) {
12
- throw new Error('paths must be an array of strings');
13
- }
14
- const results = [];
15
- let totalSize = 0;
16
- let totalEstimatedTokens = 0;
17
- for (const p of args.paths) {
18
- try {
19
- const content = await readFile(resolve(p), 'utf-8');
20
- const lines = content.split('\n');
21
- // Add line numbers for precise editing
22
- let numberedContent = '';
23
- for (let i = 0; i < lines.length; i++) {
24
- const lineNum = String(i + 1).padStart(4, ' ');
25
- numberedContent += `${lineNum}: ${lines[i]}\n`;
26
- }
27
- const fileSize = content.length;
28
- const estimatedTokens = Math.ceil(fileSize / 4);
29
- totalSize += fileSize;
30
- totalEstimatedTokens += estimatedTokens;
31
- results.push({
32
- path: p,
33
- content: numberedContent.slice(0, -1),
34
- size: fileSize,
35
- estimatedTokens,
36
- });
37
- }
38
- catch (err) {
39
- results.push({
40
- path: p,
41
- content: `Error reading file: ${err instanceof Error ? err.message : String(err)}`,
42
- size: 0,
43
- estimatedTokens: 0,
44
- });
45
- }
46
- }
47
- // Include summary in the output
48
- const summary = {
49
- totalFiles: args.paths.length,
50
- totalSize,
51
- totalEstimatedTokens,
52
- files: results,
53
- };
54
- return JSON.stringify(summary);
55
- };
56
- // AI SDK tool definition
57
- const readManyFilesCoreTool = tool({
58
- description: 'Read multiple files at once with line numbers for precise editing',
59
- inputSchema: jsonSchema({
60
- type: 'object',
61
- properties: {
62
- paths: {
63
- type: 'array',
64
- items: {
65
- type: 'string',
66
- },
67
- description: 'Array of file paths to read.',
68
- },
69
- },
70
- required: ['paths'],
71
- }),
72
- // NO execute function - prevents AI SDK auto-execution
73
- });
74
- // Create a component that will re-render when theme changes
75
- const ReadManyFilesFormatter = React.memo(({ args, fileInfo, }) => {
76
- const themeContext = React.useContext(ThemeContext);
77
- if (!themeContext) {
78
- throw new Error('ReadManyFilesFormatter must be used within a ThemeProvider');
79
- }
80
- const { colors } = themeContext;
81
- const paths = args.paths || [];
82
- if (!Array.isArray(paths)) {
83
- const messageContent = (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.tool, children: "\u2692 read_many_files" }), _jsx(Text, { color: colors.error, children: "Error: paths must be an array" })] }));
84
- return _jsx(ToolMessage, { message: messageContent, hideBox: true });
85
- }
86
- 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)))] })] }));
87
- return _jsx(ToolMessage, { message: messageContent, hideBox: true });
88
- });
89
- const formatter = async (args, result) => {
90
- // If result is an error message, don't try to read the files
91
- if (result && result.startsWith('Error:')) {
92
- return _jsx(_Fragment, {});
93
- }
94
- // Calculate file info synchronously in the formatter so it's available when the component renders
95
- let fileInfo = {
96
- totalFiles: 0,
97
- totalSize: 0,
98
- totalTokens: 0,
99
- };
100
- const paths = args.paths || [];
101
- if (Array.isArray(paths)) {
102
- let totalSize = 0;
103
- for (const path of paths) {
104
- if (typeof path === 'string') {
105
- try {
106
- const content = await readFile(resolve(path), 'utf-8');
107
- totalSize += content.length;
108
- }
109
- catch {
110
- // Skip files that can't be read
111
- }
112
- }
113
- }
114
- const estimatedTokens = Math.ceil(totalSize / 4);
115
- fileInfo = {
116
- totalFiles: paths.length,
117
- totalSize,
118
- totalTokens: estimatedTokens,
119
- };
120
- }
121
- return _jsx(ReadManyFilesFormatter, { args: args, fileInfo: fileInfo });
122
- };
123
- const validator = async (args) => {
124
- if (!Array.isArray(args.paths)) {
125
- return {
126
- valid: false,
127
- error: '⚒ Paths must be an array of strings',
128
- };
129
- }
130
- const missingFiles = [];
131
- for (const path of args.paths) {
132
- const absPath = resolve(path);
133
- try {
134
- await access(absPath, constants.F_OK);
135
- }
136
- catch (error) {
137
- if (error &&
138
- typeof error === 'object' &&
139
- 'code' in error &&
140
- error.code === 'ENOENT') {
141
- missingFiles.push(path);
142
- }
143
- else {
144
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
145
- return {
146
- valid: false,
147
- error: `⚒ Cannot access file "${path}": ${errorMessage}`,
148
- };
149
- }
150
- }
151
- }
152
- if (missingFiles.length > 0) {
153
- const fileList = missingFiles.map(f => ` • ${f}`).join('\n');
154
- return {
155
- valid: false,
156
- error: `⚒ The following file${missingFiles.length > 1 ? 's' : ''} do${missingFiles.length > 1 ? '' : 'es'} not exist:\n${fileList}`,
157
- };
158
- }
159
- return { valid: true };
160
- };
161
- // Nanocoder tool definition with AI SDK core tool + custom extensions
162
- export const readManyFilesTool = {
163
- name: 'read_many_files',
164
- tool: readManyFilesCoreTool, // Native AI SDK tool (no execute)
165
- handler: executeReadManyFiles,
166
- formatter,
167
- validator,
168
- };
169
- //# sourceMappingURL=read-many-files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read-many-files.js","sourceRoot":"","sources":["../../source/tools/read-many-files.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ToolDefinition } from '../types/index.js';
2
- export declare const searchFilesTool: ToolDefinition;
3
- //# sourceMappingURL=search-files.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-files.d.ts","sourceRoot":"","sources":["../../source/tools/search-files.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AA8VlD,eAAO,MAAM,eAAe,EAAE,cAM7B,CAAC"}
@@ -1,250 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { exec } from 'node:child_process';
3
- import { promisify } from 'node:util';
4
- import { readFileSync, existsSync } from 'node:fs';
5
- import { join } from 'node:path';
6
- import React from 'react';
7
- import ignore from 'ignore';
8
- const execAsync = promisify(exec);
9
- import { Text, Box } from 'ink';
10
- import { tool, jsonSchema } from '../types/core.js';
11
- import { ThemeContext } from '../hooks/useTheme.js';
12
- import ToolMessage from '../components/tool-message.js';
13
- /**
14
- * Load and parse .gitignore file, returns an ignore instance
15
- */
16
- function loadGitignore(cwd) {
17
- const ig = ignore();
18
- const gitignorePath = join(cwd, '.gitignore');
19
- // Always ignore common directories
20
- ig.add([
21
- 'node_modules',
22
- '.git',
23
- 'dist',
24
- 'build',
25
- 'coverage',
26
- '.next',
27
- '.nuxt',
28
- 'out',
29
- '.cache',
30
- ]);
31
- // Load .gitignore if it exists
32
- if (existsSync(gitignorePath)) {
33
- try {
34
- const gitignoreContent = readFileSync(gitignorePath, 'utf-8');
35
- ig.add(gitignoreContent);
36
- }
37
- catch {
38
- // Silently fail if we can't read .gitignore
39
- // The hardcoded ignores above will still apply
40
- }
41
- }
42
- return ig;
43
- }
44
- /**
45
- * Search file contents using grep
46
- */
47
- async function searchFiles(query, cwd, maxResults, _contextLines) {
48
- try {
49
- const ig = loadGitignore(cwd);
50
- // Use grep with basic exclusions for performance, then filter with gitignore
51
- // We still exclude the most common large directories to avoid performance issues
52
- const { stdout } = await execAsync(`grep -rn -i --include="*" --exclude-dir={node_modules,.git,dist,build,coverage,.next,.nuxt,out,.cache} "${query.replace(/"/g, '\\"')}" . | head -n ${maxResults * 3}`, { cwd, maxBuffer: 1024 * 1024 });
53
- const matches = [];
54
- const lines = stdout.trim().split('\n').filter(Boolean);
55
- for (const line of lines) {
56
- const match = line.match(/^\.\/(.+?):(\d+):(.*)$/);
57
- if (match) {
58
- const filePath = match[1];
59
- // Skip files ignored by gitignore
60
- if (ig.ignores(filePath)) {
61
- continue;
62
- }
63
- matches.push({
64
- file: filePath,
65
- line: parseInt(match[2], 10),
66
- content: match[3].trim(),
67
- });
68
- // Stop once we have enough matches
69
- if (matches.length >= maxResults) {
70
- break;
71
- }
72
- }
73
- }
74
- return {
75
- matches,
76
- truncated: lines.length >= maxResults * 3 || matches.length >= maxResults,
77
- totalMatches: matches.length,
78
- };
79
- }
80
- catch (error) {
81
- // grep returns exit code 1 when no matches found
82
- if (error instanceof Error && 'code' in error && error.code === 1) {
83
- return { matches: [], truncated: false, totalMatches: 0 };
84
- }
85
- throw error;
86
- }
87
- }
88
- /**
89
- * List files matching a glob pattern using find
90
- */
91
- async function listFiles(pattern, cwd, maxResults) {
92
- try {
93
- const ig = loadGitignore(cwd);
94
- // Convert glob pattern to find-compatible pattern
95
- // **/*.ts -> -name "*.ts"
96
- // **/*.{ts,tsx} -> \( -name "*.ts" -o -name "*.tsx" \)
97
- let findPattern = '';
98
- if (pattern.includes('{') && pattern.includes('}')) {
99
- // Handle brace expansion
100
- const braceMatch = pattern.match(/\{([^}]+)\}/);
101
- if (braceMatch) {
102
- const extensions = braceMatch[1].split(',');
103
- const patterns = extensions.map(ext => `-name "*.${ext}"`).join(' -o ');
104
- findPattern = `\\( ${patterns} \\)`;
105
- }
106
- }
107
- else {
108
- // Simple pattern like **/*.ts
109
- const ext = pattern.split('*').pop();
110
- findPattern = `-name "*${ext}"`;
111
- }
112
- // Find files with basic exclusions for performance, filter afterward with gitignore
113
- const { stdout } = await execAsync(`find . -type f ${findPattern} -not -path "*/node_modules/*" -not -path "*/.git/*" -not -path "*/dist/*" -not -path "*/build/*" -not -path "*/coverage/*" -not -path "*/.next/*" -not -path "*/.nuxt/*" -not -path "*/out/*" -not -path "*/.cache/*" | head -n ${maxResults * 3}`, { cwd, maxBuffer: 1024 * 1024 });
114
- const allFiles = stdout
115
- .trim()
116
- .split('\n')
117
- .filter(Boolean)
118
- .map(line => line.replace(/^\.\//, ''));
119
- // Filter using gitignore
120
- const matches = [];
121
- for (const file of allFiles) {
122
- if (!ig.ignores(file)) {
123
- matches.push({ file });
124
- // Stop once we have enough matches
125
- if (matches.length >= maxResults) {
126
- break;
127
- }
128
- }
129
- }
130
- return {
131
- matches,
132
- truncated: allFiles.length >= maxResults * 3 || matches.length >= maxResults,
133
- totalMatches: matches.length,
134
- };
135
- }
136
- catch (error) {
137
- if (error instanceof Error && 'code' in error && error.code === 1) {
138
- return { matches: [], truncated: false, totalMatches: 0 };
139
- }
140
- throw error;
141
- }
142
- }
143
- const executeSearchFiles = async (args) => {
144
- const cwd = process.cwd();
145
- const maxResults = args.maxResults || 50;
146
- const contextLines = args.contextLines || 2;
147
- try {
148
- let result;
149
- if (args.query) {
150
- // Content search
151
- result = await searchFiles(args.query, cwd, maxResults, contextLines);
152
- if (result.matches.length === 0) {
153
- return `No matches found for "${args.query}"`;
154
- }
155
- // Format results
156
- let output = `Found ${result.totalMatches} matches${result.truncated ? ` (showing first ${maxResults})` : ''}:\n\n`;
157
- for (const match of result.matches) {
158
- output += `${match.file}:${match.line}\n`;
159
- if (match.content) {
160
- output += ` ${match.content}\n`;
161
- }
162
- if (match.context && match.context.length > 1) {
163
- output += ` Context:\n`;
164
- for (const line of match.context.slice(0, 3)) {
165
- output += ` ${line.trim()}\n`;
166
- }
167
- }
168
- output += '\n';
169
- }
170
- return output.trim();
171
- }
172
- else if (args.pattern) {
173
- // File pattern search
174
- result = await listFiles(args.pattern, cwd, maxResults);
175
- if (result.matches.length === 0) {
176
- return `No files found matching pattern "${args.pattern}"`;
177
- }
178
- let output = `Found ${result.totalMatches} files${result.truncated ? ` (showing first ${maxResults})` : ''}:\n\n`;
179
- output += result.matches.map(m => m.file).join('\n');
180
- return output;
181
- }
182
- else {
183
- throw new Error('Either "query" or "pattern" must be provided');
184
- }
185
- }
186
- catch (error) {
187
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
188
- throw new Error(`Search failed: ${errorMessage}`);
189
- }
190
- };
191
- // AI SDK tool definition
192
- const searchFilesCoreTool = tool({
193
- description: 'Search for files by pattern or search file contents (ripgrep-based code search)',
194
- inputSchema: jsonSchema({
195
- type: 'object',
196
- properties: {
197
- query: {
198
- type: 'string',
199
- description: 'Text to search for in file contents (case-insensitive).',
200
- },
201
- pattern: {
202
- type: 'string',
203
- description: 'File path pattern to search for (e.g., "*.tsx", "components/**").',
204
- },
205
- maxResults: {
206
- type: 'number',
207
- description: 'Maximum number of results to return (default: 50).',
208
- },
209
- contextLines: {
210
- type: 'number',
211
- description: 'Number of context lines to show around matches (default: 2).',
212
- },
213
- },
214
- required: [],
215
- }),
216
- // NO execute function - prevents AI SDK auto-execution
217
- });
218
- const SearchFilesFormatter = React.memo(({ args, result }) => {
219
- const themeContext = React.useContext(ThemeContext);
220
- if (!themeContext) {
221
- throw new Error('ThemeContext not found');
222
- }
223
- const { colors } = themeContext;
224
- // Parse result to get match count
225
- let matchCount = 0;
226
- if (result && !result.startsWith('Error:')) {
227
- const firstLine = result.split('\n')[0];
228
- const matchFound = firstLine.match(/Found (\d+)/);
229
- if (matchFound) {
230
- matchCount = parseInt(matchFound[1], 10);
231
- }
232
- }
233
- const messageContent = (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.tool, children: "\u2692 search_files" }), args.query && (_jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Query: " }), _jsx(Text, { color: colors.white, children: args.query })] })), args.pattern && (_jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Pattern: " }), _jsx(Text, { color: colors.white, children: args.pattern })] })), _jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Results: " }), _jsx(Text, { color: colors.white, children: matchCount })] })] }));
234
- return _jsx(ToolMessage, { message: messageContent, hideBox: true });
235
- });
236
- const formatter = (args, result) => {
237
- if (result && result.startsWith('Error:')) {
238
- return _jsx(_Fragment, {});
239
- }
240
- return _jsx(SearchFilesFormatter, { args: args, result: result });
241
- };
242
- // Nanocoder tool definition with AI SDK core tool + custom extensions
243
- export const searchFilesTool = {
244
- name: 'search_files',
245
- tool: searchFilesCoreTool, // Native AI SDK tool (no execute)
246
- handler: executeSearchFiles,
247
- formatter,
248
- requiresConfirmation: false,
249
- };
250
- //# sourceMappingURL=search-files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-files.js","sourceRoot":"","sources":["../../source/tools/search-files.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAC;AACpC,OAAO,EAAC,YAAY,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AACjD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,MAAM,KAAK,CAAC;AAE9B,OAAO,EAAC,IAAI,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,WAAW,MAAM,2BAA2B,CAAC;AAepD;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW;IACjC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAE9C,mCAAmC;IACnC,EAAE,CAAC,GAAG,CAAC;QACN,cAAc;QACd,MAAM;QACN,MAAM;QACN,OAAO;QACP,UAAU;QACV,OAAO;QACP,OAAO;QACP,KAAK;QACL,QAAQ;KACR,CAAC,CAAC;IAEH,+BAA+B;IAC/B,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACJ,MAAM,gBAAgB,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC9D,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACR,4CAA4C;YAC5C,+CAA+C;QAChD,CAAC;IACF,CAAC;IAED,OAAO,EAAE,CAAC;AACX,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CACzB,KAAa,EACb,GAAW,EACX,UAAkB,EAClB,aAAqB;IAErB,IAAI,CAAC;QACJ,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAE9B,6EAA6E;QAC7E,iFAAiF;QACjF,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,SAAS,CAC/B,2GAA2G,KAAK,CAAC,OAAO,CACvH,IAAI,EACJ,KAAK,CACL,iBAAiB,UAAU,GAAG,CAAC,EAAE,EAClC,EAAC,GAAG,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAC,CAC7B,CAAC;QAEF,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAExD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACnD,IAAI,KAAK,EAAE,CAAC;gBACX,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAE1B,kCAAkC;gBAClC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,SAAS;gBACV,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBAC5B,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;iBACxB,CAAC,CAAC;gBAEH,mCAAmC;gBACnC,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;oBAClC,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO;YACN,OAAO;YACP,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU;YACzE,YAAY,EAAE,OAAO,CAAC,MAAM;SAC5B,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,iDAAiD;QACjD,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,EAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAC,CAAC;QACzD,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS,CACvB,OAAe,EACf,GAAW,EACX,UAAkB;IAElB,IAAI,CAAC;QACJ,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAE9B,kDAAkD;QAClD,0BAA0B;QAC1B,uDAAuD;QACvD,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpD,yBAAyB;YACzB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,UAAU,EAAE,CAAC;gBAChB,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxE,WAAW,GAAG,OAAO,QAAQ,MAAM,CAAC;YACrC,CAAC;QACF,CAAC;aAAM,CAAC;YACP,8BAA8B;YAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACrC,WAAW,GAAG,WAAW,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,oFAAoF;QACpF,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,SAAS,CAC/B,kBAAkB,WAAW,oOAC5B,UAAU,GAAG,CACd,EAAE,EACF,EAAC,GAAG,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAC,CAC7B,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM;aACrB,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAEzC,yBAAyB;QACzB,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC;gBAErB,mCAAmC;gBACnC,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;oBAClC,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO;YACN,OAAO;YACP,SAAS,EACR,QAAQ,CAAC,MAAM,IAAI,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU;YAClE,YAAY,EAAE,OAAO,CAAC,MAAM;SAC5B,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,EAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAC,CAAC;QACzD,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC;AASD,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAqB,EAAmB,EAAE;IAC3E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;IAE5C,IAAI,CAAC;QACJ,IAAI,MAAoB,CAAC;QAEzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,iBAAiB;YACjB,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;YAEtE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,yBAAyB,IAAI,CAAC,KAAK,GAAG,CAAC;YAC/C,CAAC;YAED,iBAAiB;YACjB,IAAI,MAAM,GAAG,SAAS,MAAM,CAAC,YAAY,WACxC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,UAAU,GAAG,CAAC,CAAC,CAAC,EACvD,OAAO,CAAC;YAER,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC;gBAC1C,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC;gBAClC,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/C,MAAM,IAAI,cAAc,CAAC;oBACzB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBAC9C,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;oBAClC,CAAC;gBACF,CAAC;gBACD,MAAM,IAAI,IAAI,CAAC;YAChB,CAAC;YAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,sBAAsB;YACtB,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAExD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,oCAAoC,IAAI,CAAC,OAAO,GAAG,CAAC;YAC5D,CAAC;YAED,IAAI,MAAM,GAAG,SAAS,MAAM,CAAC,YAAY,SACxC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,UAAU,GAAG,CAAC,CAAC,CAAC,EACvD,OAAO,CAAC;YACR,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErD,OAAO,MAAM,CAAC;QACf,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACjE,CAAC;IACF,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,MAAM,YAAY,GACjB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC;IACnD,CAAC;AACF,CAAC,CAAC;AAEF,yBAAyB;AACzB,MAAM,mBAAmB,GAAG,IAAI,CAAC;IAChC,WAAW,EACV,iFAAiF;IAClF,WAAW,EAAE,UAAU,CAAkB;QACxC,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACX,KAAK,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yDAAyD;aACtE;YACD,OAAO,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EACV,mEAAmE;aACpE;YACD,UAAU,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oDAAoD;aACjE;YACD,YAAY,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EACV,8DAA8D;aAC/D;SACD;QACD,QAAQ,EAAE,EAAE;KACZ,CAAC;IACF,uDAAuD;CACvD,CAAC,CAAC;AAWH,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CACtC,CAAC,EAAC,IAAI,EAAE,MAAM,EAA4B,EAAE,EAAE;IAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,EAAC,MAAM,EAAC,GAAG,YAAY,CAAC;IAE9B,kCAAkC;IAClC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,UAAU,EAAE,CAAC;YAChB,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC;IAED,MAAM,cAAc,GAAG,CACtB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAC1B,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,oCAAuB,EAE9C,IAAI,CAAC,KAAK,IAAI,CACd,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,wBAAgB,EAC7C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YAAG,IAAI,CAAC,KAAK,GAAQ,IACzC,CACN,EAEA,IAAI,CAAC,OAAO,IAAI,CAChB,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,0BAAkB,EAC/C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YAAG,IAAI,CAAC,OAAO,GAAQ,IAC3C,CACN,EAED,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,0BAAkB,EAC/C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YAAG,UAAU,GAAQ,IACzC,IACD,CACN,CAAC;IAEF,OAAO,KAAC,WAAW,IAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,GAAI,CAAC;AAChE,CAAC,CACD,CAAC;AAEF,MAAM,SAAS,GAAG,CACjB,IAAuC,EACvC,MAAe,EACM,EAAE;IACvB,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,OAAO,mBAAK,CAAC;IACd,CAAC;IACD,OAAO,KAAC,oBAAoB,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAI,CAAC;AAC7D,CAAC,CAAC;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC9C,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,mBAAmB,EAAE,kCAAkC;IAC7D,OAAO,EAAE,kBAAkB;IAC3B,SAAS;IACT,oBAAoB,EAAE,KAAK;CAC3B,CAAC"}
@@ -1,5 +0,0 @@
1
- export interface BashToolResult {
2
- fullOutput: string;
3
- llmContext: string;
4
- }
5
- //# sourceMappingURL=tools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../source/types/tools.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACnB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../source/types/tools.ts"],"names":[],"mappings":""}