@polka-codes/cli 0.1.1 → 0.1.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/config.js +18 -22
- package/dist/config.js.map +1 -1
- package/dist/handlers.js +32 -36
- package/dist/handlers.js.map +1 -1
- package/dist/index.js +8 -10
- package/dist/index.js.map +1 -1
- package/dist/runTask.js +11 -16
- package/dist/runTask.js.map +1 -1
- package/dist/utils/listFiles.js +12 -16
- package/dist/utils/listFiles.js.map +1 -1
- package/dist/utils/replaceInFile.js +1 -5
- package/dist/utils/replaceInFile.js.map +1 -1
- package/package.json +2 -2
- package/dist/config.test.d.ts +0 -2
- package/dist/config.test.d.ts.map +0 -1
- package/dist/config.test.js +0 -89
- package/dist/config.test.js.map +0 -1
- package/dist/utils/listFiles.test.d.ts +0 -2
- package/dist/utils/listFiles.test.d.ts.map +0 -1
- package/dist/utils/listFiles.test.js +0 -51
- package/dist/utils/listFiles.test.js.map +0 -1
- package/dist/utils/replaceInFile.test.d.ts +0 -2
- package/dist/utils/replaceInFile.test.d.ts.map +0 -1
- package/dist/utils/replaceInFile.test.js +0 -92
- package/dist/utils/replaceInFile.test.js.map +0 -1
package/dist/config.js
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const zod_1 = require("zod");
|
|
9
|
-
const core_1 = require("@polka-codes/core");
|
|
10
|
-
const logger = (0, core_1.createServiceLogger)('cli/config');
|
|
11
|
-
exports.configSchema = zod_1.z
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { parse } from 'yaml';
|
|
4
|
+
import { ZodError, z } from 'zod';
|
|
5
|
+
import { createServiceLogger } from '@polka-codes/core';
|
|
6
|
+
const logger = createServiceLogger('cli/config');
|
|
7
|
+
export const configSchema = z
|
|
12
8
|
.object({
|
|
13
|
-
provider:
|
|
14
|
-
apiKey:
|
|
15
|
-
model:
|
|
16
|
-
commands:
|
|
17
|
-
rules:
|
|
9
|
+
provider: z.string().optional(),
|
|
10
|
+
apiKey: z.string().optional(),
|
|
11
|
+
model: z.string().optional(),
|
|
12
|
+
commands: z.record(z.string(), z.string().or(z.object({ command: z.string(), description: z.string() }))).optional(),
|
|
13
|
+
rules: z.array(z.string()).optional().or(z.string()).optional(),
|
|
18
14
|
})
|
|
19
15
|
.strict();
|
|
20
|
-
function loadConfig(path, cwd = process.cwd()) {
|
|
16
|
+
export function loadConfig(path, cwd = process.cwd()) {
|
|
21
17
|
if (path) {
|
|
22
18
|
try {
|
|
23
19
|
return readConfig(path);
|
|
@@ -27,13 +23,13 @@ function loadConfig(path, cwd = process.cwd()) {
|
|
|
27
23
|
process.exit(1);
|
|
28
24
|
}
|
|
29
25
|
}
|
|
30
|
-
const configPaths = [
|
|
26
|
+
const configPaths = [join(cwd, '.polkacodes.yml'), join(cwd, '.polkacodes.yaml')];
|
|
31
27
|
for (const path of configPaths) {
|
|
32
28
|
try {
|
|
33
29
|
return readConfig(path);
|
|
34
30
|
}
|
|
35
31
|
catch (error) {
|
|
36
|
-
if (error instanceof
|
|
32
|
+
if (error instanceof ZodError) {
|
|
37
33
|
logger.error(`Error in config file: ${path}\n${error}`);
|
|
38
34
|
process.exit(1);
|
|
39
35
|
}
|
|
@@ -41,8 +37,8 @@ function loadConfig(path, cwd = process.cwd()) {
|
|
|
41
37
|
}
|
|
42
38
|
}
|
|
43
39
|
const readConfig = (path) => {
|
|
44
|
-
const file =
|
|
45
|
-
const config =
|
|
46
|
-
return
|
|
40
|
+
const file = readFileSync(path, 'utf8');
|
|
41
|
+
const config = parse(file);
|
|
42
|
+
return configSchema.parse(config);
|
|
47
43
|
};
|
|
48
44
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEvD,MAAM,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAA;AAEhD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpH,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAChE,CAAC;KACD,MAAM,EAAE,CAAA;AAIX,MAAM,UAAU,UAAU,CAAC,IAAa,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IACnE,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,8BAA8B,IAAI,KAAK,KAAK,EAAE,CAAC,CAAA;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,CAAA;IAEjF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,KAAK,KAAK,EAAE,CAAC,CAAA;gBACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE;IAC1C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1B,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AACnC,CAAC,CAAA"}
|
package/dist/handlers.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const listFiles_1 = require("./utils/listFiles");
|
|
8
|
-
const replaceInFile_1 = require("./utils/replaceInFile");
|
|
9
|
-
const logger = (0, core_1.createServiceLogger)('cli/handlers');
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { ToolResponseType, allTools, createServiceLogger } from '@polka-codes/core';
|
|
4
|
+
import { listFiles } from './utils/listFiles';
|
|
5
|
+
import { replaceInFile } from './utils/replaceInFile';
|
|
6
|
+
const logger = createServiceLogger('cli/handlers');
|
|
10
7
|
const handleError = async (name, fn) => {
|
|
11
8
|
try {
|
|
12
9
|
return await fn();
|
|
@@ -14,7 +11,7 @@ const handleError = async (name, fn) => {
|
|
|
14
11
|
catch (error) {
|
|
15
12
|
logger.warn(error, `Error executing tool: ${name}`);
|
|
16
13
|
return {
|
|
17
|
-
type:
|
|
14
|
+
type: ToolResponseType.Error,
|
|
18
15
|
message: `Error executing tool: ${name}
|
|
19
16
|
Error: ${error}`,
|
|
20
17
|
canRetry: false,
|
|
@@ -75,7 +72,7 @@ const handlers = {
|
|
|
75
72
|
const shouldExecute = (await options.executeCommand?.shouldExecute?.(command)) ?? true;
|
|
76
73
|
if (!shouldExecute) {
|
|
77
74
|
return {
|
|
78
|
-
type:
|
|
75
|
+
type: ToolResponseType.Invalid,
|
|
79
76
|
message: `<command>${command}</command><command_rejected>Rejected by policy</command_rejected>`,
|
|
80
77
|
};
|
|
81
78
|
}
|
|
@@ -84,7 +81,7 @@ const handlers = {
|
|
|
84
81
|
const shouldApprove = await options.executeCommand?.shouldApprove?.(command);
|
|
85
82
|
if (!shouldApprove) {
|
|
86
83
|
return {
|
|
87
|
-
type:
|
|
84
|
+
type: ToolResponseType.Invalid,
|
|
88
85
|
message: `<command>${command}</command><command_rejected>Rejected by policy</command_rejected>`,
|
|
89
86
|
};
|
|
90
87
|
}
|
|
@@ -93,7 +90,7 @@ const handlers = {
|
|
|
93
90
|
return new Promise((resolve, reject) => {
|
|
94
91
|
// spawn a shell to execute the command
|
|
95
92
|
logger.trace(`Executing command: ${command}`);
|
|
96
|
-
const child =
|
|
93
|
+
const child = spawn(command, [], {
|
|
97
94
|
shell: true,
|
|
98
95
|
stdio: 'pipe',
|
|
99
96
|
});
|
|
@@ -118,13 +115,13 @@ ${stderrText}
|
|
|
118
115
|
`;
|
|
119
116
|
if (code === 0) {
|
|
120
117
|
resolve({
|
|
121
|
-
type:
|
|
118
|
+
type: ToolResponseType.Reply,
|
|
122
119
|
message,
|
|
123
120
|
});
|
|
124
121
|
}
|
|
125
122
|
else {
|
|
126
123
|
resolve({
|
|
127
|
-
type:
|
|
124
|
+
type: ToolResponseType.Error,
|
|
128
125
|
message,
|
|
129
126
|
});
|
|
130
127
|
}
|
|
@@ -140,18 +137,18 @@ ${stderrText}
|
|
|
140
137
|
const isPathAllowed = (await options.files?.isPathAllowed?.(path)) ?? true;
|
|
141
138
|
if (!isPathAllowed) {
|
|
142
139
|
return {
|
|
143
|
-
type:
|
|
140
|
+
type: ToolResponseType.Invalid,
|
|
144
141
|
message: `<path>${path}</path><path_rejected>Rejected by policy</path_rejected>`,
|
|
145
142
|
};
|
|
146
143
|
}
|
|
147
144
|
}
|
|
148
145
|
const resp = [];
|
|
149
146
|
for (const path of paths) {
|
|
150
|
-
const fileContent = await
|
|
147
|
+
const fileContent = await readFile(path, 'utf8');
|
|
151
148
|
resp.push(`<read_file_file_conten path="${path}">${fileContent}</read_file_file_content>`);
|
|
152
149
|
}
|
|
153
150
|
return {
|
|
154
|
-
type:
|
|
151
|
+
type: ToolResponseType.Reply,
|
|
155
152
|
message: resp.join('\n'),
|
|
156
153
|
};
|
|
157
154
|
},
|
|
@@ -161,13 +158,13 @@ ${stderrText}
|
|
|
161
158
|
const isPathAllowed = (await options.files?.isPathAllowed?.(path)) ?? true;
|
|
162
159
|
if (!isPathAllowed) {
|
|
163
160
|
return {
|
|
164
|
-
type:
|
|
161
|
+
type: ToolResponseType.Invalid,
|
|
165
162
|
message: `<path>${path}</path><path_rejected>Rejected by policy</path_rejected>`,
|
|
166
163
|
};
|
|
167
164
|
}
|
|
168
|
-
await
|
|
165
|
+
await writeFile(path, content, 'utf8');
|
|
169
166
|
return {
|
|
170
|
-
type:
|
|
167
|
+
type: ToolResponseType.Reply,
|
|
171
168
|
message: `<write_file_path>${path}</write_file_path><status>Success</status>`,
|
|
172
169
|
};
|
|
173
170
|
},
|
|
@@ -177,22 +174,22 @@ ${stderrText}
|
|
|
177
174
|
const isPathAllowed = (await options.files?.isPathAllowed?.(path)) ?? true;
|
|
178
175
|
if (!isPathAllowed) {
|
|
179
176
|
return {
|
|
180
|
-
type:
|
|
177
|
+
type: ToolResponseType.Invalid,
|
|
181
178
|
message: `<path>${path}</path><path_rejected>Rejected by policy</path_rejected>`,
|
|
182
179
|
};
|
|
183
180
|
}
|
|
184
|
-
const fileContent = await
|
|
185
|
-
const result = await
|
|
186
|
-
await
|
|
181
|
+
const fileContent = await readFile(path, 'utf8');
|
|
182
|
+
const result = await replaceInFile(fileContent, diff);
|
|
183
|
+
await writeFile(path, result, 'utf8');
|
|
187
184
|
return {
|
|
188
|
-
type:
|
|
185
|
+
type: ToolResponseType.Reply,
|
|
189
186
|
message: `<replace_in_file_path>${path}</replace_in_file_path>`,
|
|
190
187
|
};
|
|
191
188
|
},
|
|
192
189
|
searchFiles: async (options, args) => {
|
|
193
190
|
// TODO
|
|
194
191
|
return {
|
|
195
|
-
type:
|
|
192
|
+
type: ToolResponseType.Exit,
|
|
196
193
|
message: 'Files searched successfully',
|
|
197
194
|
};
|
|
198
195
|
},
|
|
@@ -202,14 +199,14 @@ ${stderrText}
|
|
|
202
199
|
const isPathAllowed = (await options.files?.isPathAllowed?.(path)) ?? true;
|
|
203
200
|
if (!isPathAllowed) {
|
|
204
201
|
return {
|
|
205
|
-
type:
|
|
202
|
+
type: ToolResponseType.Invalid,
|
|
206
203
|
message: `<path>${path}</path><path_rejected>Rejected by policy</path_rejected>`,
|
|
207
204
|
};
|
|
208
205
|
}
|
|
209
206
|
const recursive = depth > 0;
|
|
210
|
-
const [files, limitReached] = await
|
|
207
|
+
const [files, limitReached] = await listFiles(path, recursive, depth, options.files?.cwd ?? process.cwd());
|
|
211
208
|
return {
|
|
212
|
-
type:
|
|
209
|
+
type: ToolResponseType.Reply,
|
|
213
210
|
message: `<list_files_path>${path}</list_files_path>
|
|
214
211
|
<list_files_depth>${depth}</list_files_depth>
|
|
215
212
|
<list_files_files>
|
|
@@ -221,31 +218,31 @@ ${files.join('\n')}
|
|
|
221
218
|
listCodeDefinitionNames: async (options, args) => {
|
|
222
219
|
// TODO
|
|
223
220
|
return {
|
|
224
|
-
type:
|
|
221
|
+
type: ToolResponseType.Exit,
|
|
225
222
|
message: 'Code definition names listed successfully',
|
|
226
223
|
};
|
|
227
224
|
},
|
|
228
225
|
askFollowupQuestion: async (options, args) => {
|
|
229
226
|
// TODO
|
|
230
227
|
return {
|
|
231
|
-
type:
|
|
228
|
+
type: ToolResponseType.Exit,
|
|
232
229
|
message: 'Followup question asked successfully',
|
|
233
230
|
};
|
|
234
231
|
},
|
|
235
232
|
attemptCompletion: async (options, args) => {
|
|
236
233
|
return {
|
|
237
|
-
type:
|
|
234
|
+
type: ToolResponseType.Exit,
|
|
238
235
|
message: '<completed>true</completed>',
|
|
239
236
|
};
|
|
240
237
|
},
|
|
241
238
|
};
|
|
242
239
|
const processedHandlers = Object.fromEntries(Object.entries(handlers).map(([toolName, handler]) => {
|
|
243
240
|
return [
|
|
244
|
-
|
|
241
|
+
allTools[toolName].name,
|
|
245
242
|
async (options, args) => handleError(toolName, async () => handler(options, args)),
|
|
246
243
|
];
|
|
247
244
|
}));
|
|
248
|
-
const getToolHandler = (options) => {
|
|
245
|
+
export const getToolHandler = (options) => {
|
|
249
246
|
return async (toolName, args) => {
|
|
250
247
|
const handler = processedHandlers[toolName];
|
|
251
248
|
if (!handler) {
|
|
@@ -254,5 +251,4 @@ const getToolHandler = (options) => {
|
|
|
254
251
|
return handler(options, args);
|
|
255
252
|
};
|
|
256
253
|
};
|
|
257
|
-
exports.getToolHandler = getToolHandler;
|
|
258
254
|
//# sourceMappingURL=handlers.js.map
|
package/dist/handlers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
const program = new commander_1.Command();
|
|
8
|
-
program.name('polka').description('Polka Codes CLI').version(package_json_1.version);
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { loadConfig } from './config';
|
|
3
|
+
import { runTask } from './runTask';
|
|
4
|
+
const { version } = await import('../package.json');
|
|
5
|
+
const program = new Command();
|
|
6
|
+
program.name('polka').description('Polka Codes CLI').version(version);
|
|
9
7
|
// Main command for executing tasks
|
|
10
8
|
program
|
|
11
9
|
.argument('[task]', 'The task to execute')
|
|
@@ -14,11 +12,11 @@ program
|
|
|
14
12
|
.option('--model-id <model>', 'Model ID')
|
|
15
13
|
.option('--api-key <key>', 'API key')
|
|
16
14
|
.action(async (taskArg, options) => {
|
|
17
|
-
const config =
|
|
15
|
+
const config = loadConfig(options.config ?? options.c) ?? {};
|
|
18
16
|
const provider = options.apiProvider || process.env.POLKA_API_PROVIDER || config.provider || 'anthropic';
|
|
19
17
|
const model = options.modelId || process.env.POLKA_MODEL_ID || config.model;
|
|
20
18
|
const apiKey = options.apiKey || process.env.POLKA_API_KEY || config.apiKey;
|
|
21
|
-
await
|
|
19
|
+
await runTask({
|
|
22
20
|
task: taskArg,
|
|
23
21
|
provider,
|
|
24
22
|
model,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAErE,mCAAmC;AACnC,OAAO;KACJ,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;KACzC,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;KACnD,MAAM,CAAC,2BAA2B,EAAE,cAAc,CAAC;KACnD,MAAM,CAAC,oBAAoB,EAAE,UAAU,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAAC;KACpC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACjC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAE5D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,CAAC,QAAQ,IAAI,WAAW,CAAA;IAExG,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK,CAAA;IAE3E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,CAAA;IAE3E,MAAM,OAAO,CAAC;QACZ,IAAI,EAAE,OAAO;QACb,QAAQ;QACR,KAAK;QACL,MAAM;QACN,MAAM;KACP,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEJ,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
package/dist/runTask.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const handlers_1 = require("./handlers");
|
|
8
|
-
const listFiles_1 = require("./utils/listFiles");
|
|
9
|
-
const logger = (0, core_1.createServiceLogger)('cli/runTask');
|
|
10
|
-
const runTask = async (options) => {
|
|
1
|
+
import os from 'node:os';
|
|
2
|
+
import { CoderAgent, createService, createServiceLogger } from '@polka-codes/core';
|
|
3
|
+
import { getToolHandler } from './handlers';
|
|
4
|
+
import { listFiles } from './utils/listFiles';
|
|
5
|
+
const logger = createServiceLogger('cli/runTask');
|
|
6
|
+
export const runTask = async (options) => {
|
|
11
7
|
logger.debug(options, 'Running task');
|
|
12
8
|
const { task, provider, model, apiKey, config } = options;
|
|
13
9
|
// Create service with the configured options
|
|
14
|
-
const service =
|
|
10
|
+
const service = createService(provider, {
|
|
15
11
|
apiKey,
|
|
16
12
|
modelId: model,
|
|
17
13
|
});
|
|
@@ -19,12 +15,12 @@ const runTask = async (options) => {
|
|
|
19
15
|
if (typeof rules === 'string') {
|
|
20
16
|
rules = [rules];
|
|
21
17
|
}
|
|
22
|
-
const agent = new
|
|
18
|
+
const agent = new CoderAgent({
|
|
23
19
|
ai: service,
|
|
24
|
-
os:
|
|
20
|
+
os: os.platform(),
|
|
25
21
|
customInstructions: rules,
|
|
26
22
|
commands: config.commands,
|
|
27
|
-
toolHandler:
|
|
23
|
+
toolHandler: getToolHandler({
|
|
28
24
|
executeCommand: {
|
|
29
25
|
async shouldExecute(command) {
|
|
30
26
|
// TODO: command whitelist
|
|
@@ -50,7 +46,7 @@ const runTask = async (options) => {
|
|
|
50
46
|
}),
|
|
51
47
|
});
|
|
52
48
|
const cwd = process.cwd();
|
|
53
|
-
const [fileList, limited] = await
|
|
49
|
+
const [fileList, limited] = await listFiles(cwd, true, 100, cwd);
|
|
54
50
|
const fileContext = `<files>
|
|
55
51
|
${fileList.join('\n')}${limited ? '\n<files_truncated>true</files_truncated>' : ''}
|
|
56
52
|
</files>`;
|
|
@@ -108,5 +104,4 @@ ${fileList.join('\n')}${limited ? '\n<files_truncated>true</files_truncated>' :
|
|
|
108
104
|
console.log(`Cache write tokens: ${usage.cacheWriteTokens}`);
|
|
109
105
|
console.log(`Total cost: ${usage.totalCost}`);
|
|
110
106
|
};
|
|
111
|
-
exports.runTask = runTask;
|
|
112
107
|
//# sourceMappingURL=runTask.js.map
|
package/dist/runTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runTask.js","sourceRoot":"","sources":["../src/runTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runTask.js","sourceRoot":"","sources":["../src/runTask.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/listFiles.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const node_fs_1 = require("node:fs");
|
|
6
|
-
const node_path_1 = require("node:path");
|
|
7
|
-
const ignore_1 = tslib_1.__importDefault(require("ignore"));
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import { join, relative, resolve } from 'node:path';
|
|
3
|
+
import ignore from 'ignore';
|
|
8
4
|
/** Default patterns commonly ignored in projects of various languages. */
|
|
9
5
|
const DEFAULT_IGNORES = [
|
|
10
6
|
'__pycache__',
|
|
@@ -27,8 +23,8 @@ const DEFAULT_IGNORES = [
|
|
|
27
23
|
*/
|
|
28
24
|
async function extendPatterns(basePatterns, dirPath) {
|
|
29
25
|
try {
|
|
30
|
-
const gitignorePath =
|
|
31
|
-
const content = await
|
|
26
|
+
const gitignorePath = join(dirPath, '.gitignore');
|
|
27
|
+
const content = await fs.readFile(gitignorePath, 'utf8');
|
|
32
28
|
const lines = content.split(/\r?\n/).filter(Boolean);
|
|
33
29
|
return [...basePatterns, ...lines];
|
|
34
30
|
}
|
|
@@ -39,7 +35,7 @@ async function extendPatterns(basePatterns, dirPath) {
|
|
|
39
35
|
}
|
|
40
36
|
/** Creates an `ignore` instance from the given patterns. */
|
|
41
37
|
function createIgnore(patterns) {
|
|
42
|
-
return (
|
|
38
|
+
return ignore().add(patterns);
|
|
43
39
|
}
|
|
44
40
|
/**
|
|
45
41
|
* Lists files under `dirPath` in BFS order, respecting:
|
|
@@ -51,11 +47,11 @@ function createIgnore(patterns) {
|
|
|
51
47
|
* - `files` is the array of file paths (relative to `cwd`)
|
|
52
48
|
* - `limitReached` is `true` if `maxCount` was hit, otherwise `false`
|
|
53
49
|
*/
|
|
54
|
-
async function listFiles(dirPath, recursive, maxCount, cwd) {
|
|
50
|
+
export async function listFiles(dirPath, recursive, maxCount, cwd) {
|
|
55
51
|
// Merge default ignores with root .gitignore (if found)
|
|
56
52
|
let rootPatterns = [...DEFAULT_IGNORES];
|
|
57
53
|
try {
|
|
58
|
-
const rootGitignore = await
|
|
54
|
+
const rootGitignore = await fs.readFile(join(cwd, '.gitignore'), 'utf8');
|
|
59
55
|
const lines = rootGitignore.split(/\r?\n/).filter(Boolean);
|
|
60
56
|
rootPatterns = [...rootPatterns, ...lines];
|
|
61
57
|
}
|
|
@@ -66,7 +62,7 @@ async function listFiles(dirPath, recursive, maxCount, cwd) {
|
|
|
66
62
|
const results = [];
|
|
67
63
|
// BFS queue
|
|
68
64
|
// Each entry holds the directory path and the patterns inherited from its parent
|
|
69
|
-
const queue = [{ path:
|
|
65
|
+
const queue = [{ path: resolve(dirPath), patterns: rootPatterns }];
|
|
70
66
|
// Perform BFS until queue is empty or maxCount is reached
|
|
71
67
|
while (queue.length > 0) {
|
|
72
68
|
// biome-ignore lint/style/noNonNullAssertion: checked above
|
|
@@ -74,11 +70,11 @@ async function listFiles(dirPath, recursive, maxCount, cwd) {
|
|
|
74
70
|
// Merge parent's patterns with local .gitignore
|
|
75
71
|
const mergedPatterns = await extendPatterns(parentPatterns, currentPath);
|
|
76
72
|
const folderIg = createIgnore(mergedPatterns);
|
|
77
|
-
const entries = await
|
|
73
|
+
const entries = await fs.readdir(currentPath, { withFileTypes: true });
|
|
78
74
|
for (const entry of entries) {
|
|
79
|
-
const fullPath =
|
|
75
|
+
const fullPath = join(currentPath, entry.name);
|
|
80
76
|
// Convert full path to something relative to `cwd`
|
|
81
|
-
const relPath =
|
|
77
|
+
const relPath = relative(cwd, fullPath).replace(/\\/g, '/');
|
|
82
78
|
if (folderIg.ignores(relPath)) {
|
|
83
79
|
continue; // Skip ignored entries
|
|
84
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listFiles.js","sourceRoot":"","sources":["../../src/utils/listFiles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"listFiles.js","sourceRoot":"","sources":["../../src/utils/listFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Example diff block format:
|
|
3
2
|
<<<<<<< SEARCH
|
|
4
3
|
// original text
|
|
@@ -6,9 +5,7 @@
|
|
|
6
5
|
// replacement text
|
|
7
6
|
>>>>>>> REPLACE
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
exports.replaceInFile = void 0;
|
|
11
|
-
const replaceInFile = async (fileContent, diff) => {
|
|
8
|
+
export const replaceInFile = async (fileContent, diff) => {
|
|
12
9
|
// Regex to match blocks of the form:
|
|
13
10
|
// <<<<<<< SEARCH
|
|
14
11
|
// (some lines)
|
|
@@ -85,5 +82,4 @@ const replaceInFile = async (fileContent, diff) => {
|
|
|
85
82
|
}
|
|
86
83
|
return updatedFile;
|
|
87
84
|
};
|
|
88
|
-
exports.replaceInFile = replaceInFile;
|
|
89
85
|
//# sourceMappingURL=replaceInFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replaceInFile.js","sourceRoot":"","sources":["../../src/utils/replaceInFile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"replaceInFile.js","sourceRoot":"","sources":["../../src/utils/replaceInFile.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/dist/config.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":""}
|
package/dist/config.test.js
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const bun_test_1 = require("bun:test");
|
|
4
|
-
const node_fs_1 = require("node:fs");
|
|
5
|
-
const node_os_1 = require("node:os");
|
|
6
|
-
const node_path_1 = require("node:path");
|
|
7
|
-
const config_1 = require("./config");
|
|
8
|
-
(0, bun_test_1.describe)('config', () => {
|
|
9
|
-
let testDir;
|
|
10
|
-
let testSubDir;
|
|
11
|
-
(0, bun_test_1.beforeAll)(() => {
|
|
12
|
-
testDir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'polkacodes-test-'));
|
|
13
|
-
});
|
|
14
|
-
(0, bun_test_1.beforeEach)(() => {
|
|
15
|
-
testSubDir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)(testDir, 'test-'));
|
|
16
|
-
});
|
|
17
|
-
(0, bun_test_1.afterEach)(() => {
|
|
18
|
-
(0, node_fs_1.rmSync)(testSubDir, { recursive: true, force: true });
|
|
19
|
-
});
|
|
20
|
-
(0, bun_test_1.afterAll)(() => {
|
|
21
|
-
(0, node_fs_1.rmSync)(testDir, { recursive: true, force: true });
|
|
22
|
-
});
|
|
23
|
-
(0, bun_test_1.test)('loads config from specified path', () => {
|
|
24
|
-
const configPath = (0, node_path_1.join)(testSubDir, 'test-config.yml');
|
|
25
|
-
(0, node_fs_1.writeFileSync)(configPath, `
|
|
26
|
-
provider: anthropic
|
|
27
|
-
apiKey: test-key
|
|
28
|
-
model: claude-3-opus
|
|
29
|
-
`);
|
|
30
|
-
const config = (0, config_1.loadConfig)(configPath, testSubDir);
|
|
31
|
-
(0, bun_test_1.expect)(config).toEqual({
|
|
32
|
-
provider: 'anthropic',
|
|
33
|
-
apiKey: 'test-key',
|
|
34
|
-
model: 'claude-3-opus',
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
(0, bun_test_1.test)('loads config from default paths', () => {
|
|
38
|
-
const configPath = (0, node_path_1.join)(testSubDir, '.polkacodes.yml');
|
|
39
|
-
(0, node_fs_1.writeFileSync)(configPath, `
|
|
40
|
-
provider: deepseek
|
|
41
|
-
apiKey: test-key-2
|
|
42
|
-
model: deepseek-chat
|
|
43
|
-
`);
|
|
44
|
-
const config = (0, config_1.loadConfig)(undefined, testSubDir);
|
|
45
|
-
(0, bun_test_1.expect)(config).toEqual({
|
|
46
|
-
provider: 'deepseek',
|
|
47
|
-
apiKey: 'test-key-2',
|
|
48
|
-
model: 'deepseek-chat',
|
|
49
|
-
});
|
|
50
|
-
// Clean up
|
|
51
|
-
(0, node_fs_1.writeFileSync)(configPath, '');
|
|
52
|
-
});
|
|
53
|
-
(0, bun_test_1.test)('validates config schema', () => {
|
|
54
|
-
const configPath = (0, node_path_1.join)(testSubDir, 'invalid-config.yml');
|
|
55
|
-
(0, node_fs_1.writeFileSync)(configPath, `
|
|
56
|
-
invalidKey: value
|
|
57
|
-
`);
|
|
58
|
-
(0, bun_test_1.expect)(() => (0, config_1.loadConfig)(configPath, testSubDir)).toThrow();
|
|
59
|
-
});
|
|
60
|
-
(0, bun_test_1.test)('handles commands configuration', () => {
|
|
61
|
-
const configPath = (0, node_path_1.join)(testSubDir, 'commands-config.yml');
|
|
62
|
-
(0, node_fs_1.writeFileSync)(configPath, `
|
|
63
|
-
commands:
|
|
64
|
-
test: echo "test"
|
|
65
|
-
complex:
|
|
66
|
-
command: echo "complex"
|
|
67
|
-
description: A complex command
|
|
68
|
-
`);
|
|
69
|
-
const config = (0, config_1.loadConfig)(configPath, testSubDir);
|
|
70
|
-
(0, bun_test_1.expect)(config?.commands).toEqual({
|
|
71
|
-
test: 'echo "test"',
|
|
72
|
-
complex: {
|
|
73
|
-
command: 'echo "complex"',
|
|
74
|
-
description: 'A complex command',
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
(0, bun_test_1.test)('handles rules configuration', () => {
|
|
79
|
-
const configPath = (0, node_path_1.join)(testSubDir, 'rules-config.yml');
|
|
80
|
-
(0, node_fs_1.writeFileSync)(configPath, `
|
|
81
|
-
rules:
|
|
82
|
-
- rule1
|
|
83
|
-
- rule2
|
|
84
|
-
`);
|
|
85
|
-
const config = (0, config_1.loadConfig)(configPath, testSubDir);
|
|
86
|
-
(0, bun_test_1.expect)(config?.rules).toEqual(['rule1', 'rule2']);
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
//# sourceMappingURL=config.test.js.map
|
package/dist/config.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"listFiles.test.d.ts","sourceRoot":"","sources":["../../src/utils/listFiles.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const bun_test_1 = require("bun:test");
|
|
4
|
-
const node_fs_1 = require("node:fs");
|
|
5
|
-
const node_path_1 = require("node:path");
|
|
6
|
-
const listFiles_1 = require("./listFiles");
|
|
7
|
-
(0, bun_test_1.describe)('listFiles', () => {
|
|
8
|
-
const testDir = (0, node_path_1.join)(__dirname, 'test-fixtures');
|
|
9
|
-
(0, bun_test_1.beforeAll)(async () => {
|
|
10
|
-
// Create test directory structure
|
|
11
|
-
await node_fs_1.promises.mkdir(testDir, { recursive: true });
|
|
12
|
-
await node_fs_1.promises.writeFile((0, node_path_1.join)(testDir, '.gitignore'), 'ignored.txt\nsubdir/ignored-too.txt');
|
|
13
|
-
await node_fs_1.promises.writeFile((0, node_path_1.join)(testDir, 'file1.txt'), '');
|
|
14
|
-
await node_fs_1.promises.writeFile((0, node_path_1.join)(testDir, 'file2.txt'), '');
|
|
15
|
-
await node_fs_1.promises.writeFile((0, node_path_1.join)(testDir, 'ignored.txt'), '');
|
|
16
|
-
// Create subdirectory
|
|
17
|
-
const subDir = (0, node_path_1.join)(testDir, 'subdir');
|
|
18
|
-
await node_fs_1.promises.mkdir(subDir);
|
|
19
|
-
await node_fs_1.promises.writeFile((0, node_path_1.join)(subDir, 'file3.txt'), '');
|
|
20
|
-
await node_fs_1.promises.writeFile((0, node_path_1.join)(subDir, 'ignored-too.txt'), '');
|
|
21
|
-
});
|
|
22
|
-
(0, bun_test_1.afterAll)(async () => {
|
|
23
|
-
// Clean up test directory
|
|
24
|
-
await node_fs_1.promises.rm(testDir, { recursive: true, force: true });
|
|
25
|
-
});
|
|
26
|
-
(0, bun_test_1.it)('should list files in directory', async () => {
|
|
27
|
-
const [files] = await (0, listFiles_1.listFiles)(testDir, false, 10, testDir);
|
|
28
|
-
(0, bun_test_1.expect)(files).toEqual(['.gitignore', 'file1.txt', 'file2.txt']);
|
|
29
|
-
});
|
|
30
|
-
(0, bun_test_1.it)('should list files recursively', async () => {
|
|
31
|
-
const [files] = await (0, listFiles_1.listFiles)(testDir, true, 10, testDir);
|
|
32
|
-
(0, bun_test_1.expect)(files).toEqual(['.gitignore', 'file1.txt', 'file2.txt', 'subdir/file3.txt']);
|
|
33
|
-
});
|
|
34
|
-
(0, bun_test_1.it)('should respect maxCount', async () => {
|
|
35
|
-
const [files, limitReached] = await (0, listFiles_1.listFiles)(testDir, true, 3, testDir);
|
|
36
|
-
(0, bun_test_1.expect)(files.length).toBe(3);
|
|
37
|
-
(0, bun_test_1.expect)(limitReached).toBe(true);
|
|
38
|
-
(0, bun_test_1.expect)(files).toEqual(['.gitignore', 'file1.txt', 'file2.txt']);
|
|
39
|
-
});
|
|
40
|
-
(0, bun_test_1.it)('should handle empty directory', async () => {
|
|
41
|
-
const emptyDir = (0, node_path_1.join)(testDir, 'empty');
|
|
42
|
-
await node_fs_1.promises.mkdir(emptyDir);
|
|
43
|
-
const [files] = await (0, listFiles_1.listFiles)(emptyDir, true, 10, emptyDir);
|
|
44
|
-
(0, bun_test_1.expect)(files).toEqual([]);
|
|
45
|
-
await node_fs_1.promises.rm(emptyDir, { recursive: true });
|
|
46
|
-
});
|
|
47
|
-
(0, bun_test_1.it)('should handle non-existent directory', async () => {
|
|
48
|
-
(0, bun_test_1.expect)((0, listFiles_1.listFiles)((0, node_path_1.join)(testDir, 'nonexistent'), false, 10, testDir)).rejects.toThrow();
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
//# sourceMappingURL=listFiles.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"listFiles.test.js","sourceRoot":"","sources":["../../src/utils/listFiles.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replaceInFile.test.d.ts","sourceRoot":"","sources":["../../src/utils/replaceInFile.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const bun_test_1 = require("bun:test");
|
|
4
|
-
const replaceInFile_1 = require("./replaceInFile");
|
|
5
|
-
(0, bun_test_1.describe)('replaceInFile', () => {
|
|
6
|
-
(0, bun_test_1.it)('should perform basic single replacement', async () => {
|
|
7
|
-
const content = `line1
|
|
8
|
-
line2
|
|
9
|
-
line3`;
|
|
10
|
-
const diff = `<<<<<<< SEARCH
|
|
11
|
-
line2
|
|
12
|
-
=======
|
|
13
|
-
new line2
|
|
14
|
-
>>>>>>> REPLACE`;
|
|
15
|
-
const result = await (0, replaceInFile_1.replaceInFile)(content, diff);
|
|
16
|
-
(0, bun_test_1.expect)(result).toBe(`line1
|
|
17
|
-
new line2
|
|
18
|
-
line3`);
|
|
19
|
-
});
|
|
20
|
-
(0, bun_test_1.it)('should handle multiple replacements', async () => {
|
|
21
|
-
const content = `line1
|
|
22
|
-
line2
|
|
23
|
-
line3
|
|
24
|
-
line2`;
|
|
25
|
-
const diff = `<<<<<<< SEARCH
|
|
26
|
-
line2
|
|
27
|
-
=======
|
|
28
|
-
new line2
|
|
29
|
-
>>>>>>> REPLACE
|
|
30
|
-
<<<<<<< SEARCH
|
|
31
|
-
line3
|
|
32
|
-
=======
|
|
33
|
-
new line3
|
|
34
|
-
>>>>>>> REPLACE`;
|
|
35
|
-
const result = await (0, replaceInFile_1.replaceInFile)(content, diff);
|
|
36
|
-
(0, bun_test_1.expect)(result).toBe(`line1
|
|
37
|
-
new line2
|
|
38
|
-
new line3
|
|
39
|
-
line2`);
|
|
40
|
-
});
|
|
41
|
-
(0, bun_test_1.it)('should handle whitespace variations', async () => {
|
|
42
|
-
const content = `line1
|
|
43
|
-
line2
|
|
44
|
-
line3`;
|
|
45
|
-
const diff = `<<<<<<< SEARCH
|
|
46
|
-
line2
|
|
47
|
-
=======
|
|
48
|
-
new line2
|
|
49
|
-
>>>>>>> REPLACE`;
|
|
50
|
-
const result = await (0, replaceInFile_1.replaceInFile)(content, diff);
|
|
51
|
-
(0, bun_test_1.expect)(result).toBe(`line1
|
|
52
|
-
new line2
|
|
53
|
-
line3`);
|
|
54
|
-
});
|
|
55
|
-
(0, bun_test_1.it)('should throw error when no blocks found', async () => {
|
|
56
|
-
const content = `line1
|
|
57
|
-
line2`;
|
|
58
|
-
const diff = 'invalid format';
|
|
59
|
-
(0, bun_test_1.expect)((0, replaceInFile_1.replaceInFile)(content, diff)).rejects.toThrow('No valid diff blocks found');
|
|
60
|
-
});
|
|
61
|
-
(0, bun_test_1.it)('should throw error when search text not found', async () => {
|
|
62
|
-
const content = `line1
|
|
63
|
-
line2`;
|
|
64
|
-
const diff = `<<<<<<< SEARCH
|
|
65
|
-
line3
|
|
66
|
-
=======
|
|
67
|
-
new line3
|
|
68
|
-
>>>>>>> REPLACE`;
|
|
69
|
-
(0, bun_test_1.expect)((0, replaceInFile_1.replaceInFile)(content, diff)).rejects.toThrow('Could not find the following text in file');
|
|
70
|
-
});
|
|
71
|
-
(0, bun_test_1.it)('should handle empty file', async () => {
|
|
72
|
-
const content = '';
|
|
73
|
-
const diff = `<<<<<<< SEARCH
|
|
74
|
-
line1
|
|
75
|
-
=======
|
|
76
|
-
new line1
|
|
77
|
-
>>>>>>> REPLACE`;
|
|
78
|
-
(0, bun_test_1.expect)((0, replaceInFile_1.replaceInFile)(content, diff)).rejects.toThrow('Could not find the following text in file');
|
|
79
|
-
});
|
|
80
|
-
(0, bun_test_1.it)('should handle empty replacement', async () => {
|
|
81
|
-
const content = `line1
|
|
82
|
-
line2`;
|
|
83
|
-
const diff = `<<<<<<< SEARCH
|
|
84
|
-
line2
|
|
85
|
-
=======
|
|
86
|
-
>>>>>>> REPLACE`;
|
|
87
|
-
const result = await (0, replaceInFile_1.replaceInFile)(content, diff);
|
|
88
|
-
(0, bun_test_1.expect)(result).toBe(`line1
|
|
89
|
-
`);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
//# sourceMappingURL=replaceInFile.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replaceInFile.test.js","sourceRoot":"","sources":["../../src/utils/replaceInFile.test.ts"],"names":[],"mappings":";;AAAA,uCAA+C;AAE/C,mDAA+C;AAE/C,IAAA,mBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAA,aAAE,EAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAG;;MAEd,CAAA;QACF,MAAM,IAAI,GAAG;;;;gBAID,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAa,EAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACjD,IAAA,iBAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC;;MAElB,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,OAAO,GAAG;;;MAGd,CAAA;QACF,MAAM,IAAI,GAAG;;;;;;;;;gBASD,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAa,EAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACjD,IAAA,iBAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC;;;MAGlB,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,OAAO,GAAG;;MAEd,CAAA;QACF,MAAM,IAAI,GAAG;;;;gBAID,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAa,EAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACjD,IAAA,iBAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC;;MAElB,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAG;MACd,CAAA;QACF,MAAM,IAAI,GAAG,gBAAgB,CAAA;QAE7B,IAAA,iBAAM,EAAC,IAAA,6BAAa,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAA;IACpF,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,OAAO,GAAG;MACd,CAAA;QACF,MAAM,IAAI,GAAG;;;;gBAID,CAAA;QAEZ,IAAA,iBAAM,EAAC,IAAA,6BAAa,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAA;IACnG,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,MAAM,IAAI,GAAG;;;;gBAID,CAAA;QAEZ,IAAA,iBAAM,EAAC,IAAA,6BAAa,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAA;IACnG,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,OAAO,GAAG;MACd,CAAA;QACF,MAAM,IAAI,GAAG;;;gBAGD,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAa,EAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACjD,IAAA,iBAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC;CACvB,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|