@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.
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +35 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/components/assistant-message.d.ts +1 -4
- package/dist/components/assistant-message.d.ts.map +1 -1
- package/dist/components/assistant-message.js +1 -199
- package/dist/components/assistant-message.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +13 -5
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +23 -2
- package/dist/config/paths.js.map +1 -1
- package/dist/hooks/useAppState.d.ts.map +1 -1
- package/dist/hooks/useAppState.js +8 -15
- package/dist/hooks/useAppState.js.map +1 -1
- package/dist/hooks/useChatHandler.d.ts.map +1 -1
- package/dist/hooks/useChatHandler.js +26 -0
- package/dist/hooks/useChatHandler.js.map +1 -1
- package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
- package/dist/hooks/useTerminalWidth.js +6 -0
- package/dist/hooks/useTerminalWidth.js.map +1 -1
- package/dist/markdown-parser/html-entities.d.ts +2 -0
- package/dist/markdown-parser/html-entities.d.ts.map +1 -0
- package/dist/markdown-parser/html-entities.js +41 -0
- package/dist/markdown-parser/html-entities.js.map +1 -0
- package/dist/markdown-parser/html-entities.spec.d.ts +2 -0
- package/dist/markdown-parser/html-entities.spec.d.ts.map +1 -0
- package/dist/markdown-parser/html-entities.spec.js +73 -0
- package/dist/markdown-parser/html-entities.spec.js.map +1 -0
- package/dist/markdown-parser/index.d.ts +6 -0
- package/dist/markdown-parser/index.d.ts.map +1 -0
- package/dist/markdown-parser/index.js +97 -0
- package/dist/markdown-parser/index.js.map +1 -0
- package/dist/markdown-parser/index.spec.d.ts +2 -0
- package/dist/markdown-parser/index.spec.d.ts.map +1 -0
- package/dist/markdown-parser/index.spec.js +245 -0
- package/dist/markdown-parser/index.spec.js.map +1 -0
- package/dist/markdown-parser/table-parser.d.ts +3 -0
- package/dist/markdown-parser/table-parser.d.ts.map +1 -0
- package/dist/markdown-parser/table-parser.js +92 -0
- package/dist/markdown-parser/table-parser.js.map +1 -0
- package/dist/markdown-parser/table-parser.spec.d.ts +2 -0
- package/dist/markdown-parser/table-parser.spec.d.ts.map +1 -0
- package/dist/markdown-parser/table-parser.spec.js +120 -0
- package/dist/markdown-parser/table-parser.spec.js.map +1 -0
- package/dist/markdown-parser/utils.d.ts +2 -0
- package/dist/markdown-parser/utils.d.ts.map +1 -0
- package/dist/markdown-parser/utils.js +14 -0
- package/dist/markdown-parser/utils.js.map +1 -0
- package/dist/markdown-parser/utils.spec.d.ts +2 -0
- package/dist/markdown-parser/utils.spec.d.ts.map +1 -0
- package/dist/markdown-parser/utils.spec.js +59 -0
- package/dist/markdown-parser/utils.spec.js.map +1 -0
- package/dist/models/models-dev-client.d.ts.map +1 -1
- package/dist/models/models-dev-client.js +7 -1
- package/dist/models/models-dev-client.js.map +1 -1
- package/dist/models/models-dev-client.spec.d.ts +2 -0
- package/dist/models/models-dev-client.spec.d.ts.map +1 -0
- package/dist/models/models-dev-client.spec.js +302 -0
- package/dist/models/models-dev-client.spec.js.map +1 -0
- package/dist/tool-calling/xml-parser.d.ts.map +1 -1
- package/dist/tool-calling/xml-parser.js +39 -0
- package/dist/tool-calling/xml-parser.js.map +1 -1
- package/dist/tool-calling/xml-parser.spec.js +43 -0
- package/dist/tool-calling/xml-parser.spec.js.map +1 -1
- package/dist/tools/execute-bash.d.ts.map +1 -1
- package/dist/tools/execute-bash.js +12 -27
- package/dist/tools/execute-bash.js.map +1 -1
- package/dist/tools/find-files.d.ts +3 -0
- package/dist/tools/find-files.d.ts.map +1 -0
- package/dist/tools/find-files.js +186 -0
- package/dist/tools/find-files.js.map +1 -0
- package/dist/tools/index.js +4 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +143 -9
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/search-file-contents.d.ts +3 -0
- package/dist/tools/search-file-contents.d.ts.map +1 -0
- package/dist/tools/search-file-contents.js +164 -0
- package/dist/tools/search-file-contents.js.map +1 -0
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/markdown-parser.d.ts +11 -0
- package/dist/types/markdown-parser.d.ts.map +1 -0
- package/dist/types/markdown-parser.js +2 -0
- package/dist/types/markdown-parser.js.map +1 -0
- package/dist/utils/update-checker.spec.d.ts +2 -0
- package/dist/utils/update-checker.spec.d.ts.map +1 -0
- package/dist/utils/update-checker.spec.js +230 -0
- package/dist/utils/update-checker.spec.js.map +1 -0
- package/package.json +1 -1
- package/source/app/prompts/main-prompt.md +67 -23
- package/dist/components/update-message.d.ts +0 -7
- package/dist/components/update-message.d.ts.map +0 -1
- package/dist/components/update-message.js +0 -93
- package/dist/components/update-message.js.map +0 -1
- package/dist/tools/read-many-files.d.ts +0 -3
- package/dist/tools/read-many-files.d.ts.map +0 -1
- package/dist/tools/read-many-files.js +0 -169
- package/dist/tools/read-many-files.js.map +0 -1
- package/dist/tools/search-files.d.ts +0 -3
- package/dist/tools/search-files.d.ts.map +0 -1
- package/dist/tools/search-files.js +0 -250
- package/dist/tools/search-files.js.map +0 -1
- package/dist/types/tools.d.ts +0 -5
- package/dist/types/tools.d.ts.map +0 -1
- package/dist/types/tools.js +0 -2
- package/dist/types/tools.js.map +0 -1
|
@@ -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 +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 +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":"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"}
|
package/dist/types/tools.d.ts
DELETED
|
@@ -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"}
|
package/dist/types/tools.js
DELETED
package/dist/types/tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../source/types/tools.ts"],"names":[],"mappings":""}
|