@polka-codes/cli-shared 0.10.22 → 0.10.24

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 (47) hide show
  1. package/dist/index.js +1913 -7
  2. package/package.json +3 -3
  3. package/dist/config.js +0 -202
  4. package/dist/config.js.map +0 -1
  5. package/dist/config.parameters.test.js +0 -240
  6. package/dist/config.parameters.test.js.map +0 -1
  7. package/dist/config.rules.test.js +0 -92
  8. package/dist/config.rules.test.js.map +0 -1
  9. package/dist/config.test.js +0 -311
  10. package/dist/config.test.js.map +0 -1
  11. package/dist/index.js.map +0 -1
  12. package/dist/memory-manager.js +0 -76
  13. package/dist/memory-manager.js.map +0 -1
  14. package/dist/project-scope.js +0 -67
  15. package/dist/project-scope.js.map +0 -1
  16. package/dist/provider.js +0 -366
  17. package/dist/provider.js.map +0 -1
  18. package/dist/provider.test.js +0 -21
  19. package/dist/provider.test.js.map +0 -1
  20. package/dist/sqlite-memory-store.js +0 -911
  21. package/dist/sqlite-memory-store.js.map +0 -1
  22. package/dist/sqlite-memory-store.test.js +0 -661
  23. package/dist/sqlite-memory-store.test.js.map +0 -1
  24. package/dist/utils/__tests__/parameterSimplifier.test.js +0 -137
  25. package/dist/utils/__tests__/parameterSimplifier.test.js.map +0 -1
  26. package/dist/utils/checkRipgrep.js +0 -22
  27. package/dist/utils/checkRipgrep.js.map +0 -1
  28. package/dist/utils/eventHandler.js +0 -199
  29. package/dist/utils/eventHandler.js.map +0 -1
  30. package/dist/utils/eventHandler.test.js +0 -50
  31. package/dist/utils/eventHandler.test.js.map +0 -1
  32. package/dist/utils/index.js +0 -7
  33. package/dist/utils/index.js.map +0 -1
  34. package/dist/utils/listFiles.js +0 -136
  35. package/dist/utils/listFiles.js.map +0 -1
  36. package/dist/utils/listFiles.test.js +0 -64
  37. package/dist/utils/listFiles.test.js.map +0 -1
  38. package/dist/utils/parameterSimplifier.js +0 -65
  39. package/dist/utils/parameterSimplifier.js.map +0 -1
  40. package/dist/utils/readMultiline.js +0 -19
  41. package/dist/utils/readMultiline.js.map +0 -1
  42. package/dist/utils/search.constants.js +0 -8
  43. package/dist/utils/search.constants.js.map +0 -1
  44. package/dist/utils/searchFiles.js +0 -72
  45. package/dist/utils/searchFiles.js.map +0 -1
  46. package/dist/utils/searchFiles.test.js +0 -140
  47. package/dist/utils/searchFiles.test.js.map +0 -1
package/dist/provider.js DELETED
@@ -1,366 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import { mkdir, readFile, rename, unlink, writeFile } from 'node:fs/promises';
3
- import { dirname, normalize, resolve } from 'node:path';
4
- import { vertex } from '@ai-sdk/google-vertex';
5
- import { input, select } from '@inquirer/prompts';
6
- import { generateText, stepCountIs } from 'ai';
7
- import ignore from 'ignore';
8
- import { lookup } from 'mime-types';
9
- import { checkRipgrep } from './utils/checkRipgrep.js';
10
- import { listFiles } from './utils/listFiles.js';
11
- import { searchFiles } from './utils/searchFiles.js';
12
- export class InMemoryStore {
13
- #data;
14
- async read() {
15
- return this.#data;
16
- }
17
- async write(data) {
18
- this.#data = data;
19
- }
20
- }
21
- /**
22
- * Helper function to detect if memoryStore is an IMemoryStore
23
- */
24
- function isIMemoryStore(store) {
25
- return 'readMemory' in store && 'updateMemory' in store;
26
- }
27
- export const getProvider = (options = {}) => {
28
- const ig = ignore().add(options.excludeFiles ?? []);
29
- const memoryStore = options.memoryStore ?? new InMemoryStore();
30
- const todoItemStore = options.todoItemStore ?? new InMemoryStore();
31
- const defaultMemoryTopic = ':default:';
32
- const searchModel = options.getModel?.('search');
33
- // Helper functions for memory operations that work with both store types
34
- const readMemoryKV = async (topic) => {
35
- if (!isIMemoryStore(memoryStore)) {
36
- const data = (await memoryStore.read()) ?? {};
37
- return data[topic];
38
- }
39
- // For IMemoryStore, topic is the "name" parameter
40
- return memoryStore.readMemory(topic);
41
- };
42
- const updateMemoryKV = async (operation, topic, content) => {
43
- if (!isIMemoryStore(memoryStore)) {
44
- const data = (await memoryStore.read()) ?? {};
45
- switch (operation) {
46
- case 'append':
47
- if (content === undefined) {
48
- throw new Error('Content is required for append operation.');
49
- }
50
- data[topic] = `${data[topic] || ''}\n${content}`;
51
- break;
52
- case 'replace':
53
- if (content === undefined) {
54
- throw new Error('Content is required for replace operation.');
55
- }
56
- data[topic] = content;
57
- break;
58
- case 'remove':
59
- delete data[topic];
60
- break;
61
- }
62
- await memoryStore.write(data);
63
- return;
64
- }
65
- // Use IMemoryStore API
66
- await memoryStore.updateMemory(operation, topic, content);
67
- };
68
- const listMemoryTopicsKV = async () => {
69
- if (!isIMemoryStore(memoryStore)) {
70
- const data = (await memoryStore.read()) ?? {};
71
- return Object.keys(data);
72
- }
73
- // For IMemoryStore, we need to query for all names in the current scope
74
- const entries = await memoryStore.queryMemory({});
75
- if (Array.isArray(entries)) {
76
- return entries.map((e) => e.name);
77
- }
78
- return [];
79
- };
80
- const provider = {
81
- listTodoItems: async (id, status) => {
82
- const todoItems = (await todoItemStore.read()) ?? [];
83
- let items;
84
- if (!id) {
85
- items = todoItems.filter((i) => !i.id.includes('.'));
86
- }
87
- else {
88
- const parent = todoItems.find((i) => i.id === id);
89
- if (!parent) {
90
- throw new Error(`To-do item with id ${id} not found`);
91
- }
92
- items = todoItems.filter((i) => i.id.startsWith(`${id}.`) && i.id.split('.').length === id.split('.').length + 1);
93
- }
94
- if (status) {
95
- items = items.filter((item) => item.status === status);
96
- }
97
- items.sort((a, b) => {
98
- const aParts = a.id.split('.');
99
- const bParts = b.id.split('.');
100
- const len = Math.min(aParts.length, bParts.length);
101
- for (let i = 0; i < len; i++) {
102
- const comparison = aParts[i].localeCompare(bParts[i], undefined, { numeric: true });
103
- if (comparison !== 0) {
104
- return comparison;
105
- }
106
- }
107
- return aParts.length - bParts.length;
108
- });
109
- return items;
110
- },
111
- getTodoItem: async (id) => {
112
- const todoItems = (await todoItemStore.read()) ?? [];
113
- const item = todoItems.find((i) => i.id === id);
114
- if (!item) {
115
- throw new Error(`To-do item with id ${id} not found`);
116
- }
117
- const subItems = todoItems
118
- .filter((i) => i.id.startsWith(`${id}.`) && i.id.split('.').length === id.split('.').length + 1)
119
- .map(({ id, title }) => ({ id, title }));
120
- return { ...item, subItems };
121
- },
122
- updateTodoItem: async (input) => {
123
- const todoItems = (await todoItemStore.read()) ?? [];
124
- if (input.operation === 'add') {
125
- const { parentId, title, description, status } = input;
126
- if (!title) {
127
- throw new Error('Title is required for add operation');
128
- }
129
- let newId;
130
- if (parentId) {
131
- const parent = todoItems.find((i) => i.id === parentId);
132
- if (!parent) {
133
- throw new Error(`Parent to-do item with id ${parentId} not found`);
134
- }
135
- const childItems = todoItems.filter((i) => i.id.startsWith(`${parentId}.`) && i.id.split('.').length === parentId.split('.').length + 1);
136
- const maxId = childItems.reduce((max, item) => {
137
- const parts = item.id.split('.');
138
- const lastPart = parseInt(parts[parts.length - 1], 10);
139
- return Math.max(max, lastPart);
140
- }, 0);
141
- newId = `${parentId}.${maxId + 1}`;
142
- }
143
- else {
144
- const rootItems = todoItems.filter((i) => !i.id.includes('.'));
145
- const maxId = rootItems.reduce((max, item) => {
146
- const idNum = parseInt(item.id, 10);
147
- return Math.max(max, idNum);
148
- }, 0);
149
- newId = `${maxId + 1}`;
150
- }
151
- const newItem = {
152
- id: newId,
153
- title,
154
- description: description ?? '',
155
- status: status ?? 'open',
156
- };
157
- await todoItemStore.write([...todoItems, newItem]);
158
- return { id: newId };
159
- }
160
- else {
161
- // update
162
- const { id } = input;
163
- if (!id) {
164
- throw new Error('ID is required for update operation');
165
- }
166
- const item = todoItems.find((i) => i.id === id);
167
- if (!item) {
168
- throw new Error(`To-do item with id ${id} not found`);
169
- }
170
- if (input.title != null) {
171
- item.title = input.title;
172
- }
173
- if (input.description != null) {
174
- item.description = input.description ?? '';
175
- }
176
- if (input.status != null) {
177
- item.status = input.status;
178
- }
179
- await todoItemStore.write(todoItems);
180
- return { id };
181
- }
182
- },
183
- listMemoryTopics: async () => {
184
- return listMemoryTopicsKV();
185
- },
186
- readMemory: async (topic = defaultMemoryTopic) => {
187
- return readMemoryKV(topic);
188
- },
189
- updateMemory: async (operation, topic, content) => {
190
- const memoryTopic = topic ?? defaultMemoryTopic;
191
- await updateMemoryKV(operation, memoryTopic, content);
192
- },
193
- readFile: async (path, includeIgnored) => {
194
- if (!includeIgnored && ig.ignores(path)) {
195
- throw new Error(`Not allow to access file ${path}`);
196
- }
197
- try {
198
- return await readFile(path, 'utf8');
199
- }
200
- catch (_e) {
201
- return undefined;
202
- }
203
- },
204
- writeFile: async (path, content) => {
205
- if (ig.ignores(path)) {
206
- throw new Error(`Not allow to access file ${path}`);
207
- }
208
- // generate parent directories if they don't exist
209
- await mkdir(dirname(path), { recursive: true });
210
- return await writeFile(path, content, 'utf8');
211
- },
212
- removeFile: async (path) => {
213
- if (ig.ignores(path)) {
214
- throw new Error(`Not allow to access file ${path}`);
215
- }
216
- return await unlink(path);
217
- },
218
- renameFile: async (sourcePath, targetPath) => {
219
- if (ig.ignores(sourcePath) || ig.ignores(targetPath)) {
220
- throw new Error(`Not allow to access file ${sourcePath} or ${targetPath}`);
221
- }
222
- return await rename(sourcePath, targetPath);
223
- },
224
- listFiles: async (path, recursive, maxCount, includeIgnored) => {
225
- return await listFiles(path, recursive, maxCount, process.cwd(), options.excludeFiles, includeIgnored);
226
- },
227
- readBinaryFile: async (url) => {
228
- if (url.startsWith('file://')) {
229
- const filePath = decodeURIComponent(url.substring('file://'.length));
230
- const resolvedPath = normalize(resolve(process.cwd(), filePath));
231
- if (!resolvedPath.startsWith(process.cwd())) {
232
- throw new Error(`Access to file path "${filePath}" is restricted.`);
233
- }
234
- const data = await readFile(resolvedPath);
235
- const mediaType = lookup(resolvedPath) || 'application/octet-stream';
236
- return {
237
- base64Data: data.toString('base64'),
238
- mediaType,
239
- };
240
- }
241
- const response = await fetch(url);
242
- if (!response.ok) {
243
- throw new Error(`HTTP error! status: ${response.status}`);
244
- }
245
- const data = await response.arrayBuffer();
246
- const mediaType = lookup(url) || 'application/octet-stream';
247
- return {
248
- base64Data: Buffer.from(data).toString('base64'),
249
- mediaType,
250
- };
251
- },
252
- executeCommand: (command, _needApprove) => {
253
- // TODO: add timeout
254
- return new Promise((resolve, reject) => {
255
- // spawn a shell to execute the command
256
- options.command?.onStarted(command);
257
- const child = spawn(command, [], {
258
- shell: true,
259
- stdio: 'pipe',
260
- });
261
- let stdoutText = '';
262
- let stderrText = '';
263
- child.stdout.on('data', (data) => {
264
- const dataStr = data.toString();
265
- options.command?.onStdout(dataStr);
266
- stdoutText += dataStr;
267
- });
268
- child.stderr.on('data', (data) => {
269
- const dataStr = data.toString();
270
- options.command?.onStderr(dataStr);
271
- stderrText += dataStr;
272
- });
273
- child.on('close', async (code) => {
274
- options.command?.onExit(code ?? 0);
275
- const totalLength = stdoutText.length + stderrText.length;
276
- if (totalLength > (options.summaryThreshold ?? 5000) && options.summarizeOutput) {
277
- try {
278
- const summary = await options.summarizeOutput(stdoutText, stderrText);
279
- if (summary) {
280
- resolve({
281
- summary,
282
- stdout: stdoutText,
283
- stderr: stderrText,
284
- exitCode: code ?? 0,
285
- });
286
- return;
287
- }
288
- }
289
- catch (_e) {
290
- console.error('Summarization failed:', _e);
291
- }
292
- }
293
- resolve({
294
- stdout: stdoutText,
295
- stderr: stderrText,
296
- exitCode: code ?? 0,
297
- });
298
- });
299
- child.on('error', (err) => {
300
- options.command?.onError(err);
301
- reject(err);
302
- });
303
- });
304
- },
305
- askFollowupQuestion: async (question, answerOptions) => {
306
- if (options.yes) {
307
- if (answerOptions.length > 0) {
308
- return answerOptions[0];
309
- }
310
- return '';
311
- }
312
- if (answerOptions.length === 0) {
313
- return await input({ message: question });
314
- }
315
- const otherMessage = 'Other (enter text)';
316
- answerOptions.push(otherMessage);
317
- const answer = await select({
318
- message: question,
319
- choices: answerOptions.map((option) => ({ name: option, value: option })),
320
- });
321
- if (answer === otherMessage) {
322
- return await input({ message: 'Enter your answer:' });
323
- }
324
- return answer;
325
- },
326
- fetchUrl: async (url) => {
327
- const isRaw = url.startsWith('https://raw.githubusercontent.com/');
328
- const urlToFetch = isRaw ? url : `https://r.jina.ai/${url}`;
329
- try {
330
- const response = await fetch(urlToFetch);
331
- if (!response.ok) {
332
- throw new Error(`HTTP error! status: ${response.status}`);
333
- }
334
- return await response.text();
335
- }
336
- catch (error) {
337
- console.error('Error fetching URL:', error);
338
- throw error;
339
- }
340
- },
341
- search: searchModel &&
342
- (async (query) => {
343
- const googleSearchTool = vertex.tools.googleSearch({});
344
- const resp = await generateText({
345
- model: searchModel,
346
- system: 'You are a web search assistant. When searching for information, provide comprehensive and detailed results. Include relevant facts, statistics, dates, and key details from the search results. Synthesize information from multiple sources when available. Structure your response clearly with the most relevant information first. Reference or cite sources when presenting specific claims or data.',
347
- tools: {
348
- google_search: googleSearchTool,
349
- },
350
- prompt: query,
351
- stopWhen: stepCountIs(5),
352
- });
353
- return resp.text;
354
- }),
355
- };
356
- if (checkRipgrep()) {
357
- provider.searchFiles = async (path, regex, filePattern) => {
358
- return await searchFiles(path, regex, filePattern, process.cwd(), options.excludeFiles);
359
- };
360
- }
361
- else {
362
- console.error('Error: ripgrep (rg) is not installed. Search file tool is disabled. Please install it from https://github.com/BurntSushi/ripgrep#installation');
363
- }
364
- return provider;
365
- };
366
- //# sourceMappingURL=provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { describe, expect, it } from 'bun:test';
2
- import { getProvider } from './provider';
3
- describe('getProvider', () => {
4
- describe('askFollowupQuestion', () => {
5
- it('should return first option when yes is true and options are provided', async () => {
6
- const provider = getProvider({ yes: true });
7
- if (!provider.askFollowupQuestion)
8
- throw new Error('askFollowupQuestion not defined');
9
- const result = await provider.askFollowupQuestion('Question?', ['Option 1', 'Option 2']);
10
- expect(result).toBe('Option 1');
11
- });
12
- it('should return empty string when yes is true and no options are provided', async () => {
13
- const provider = getProvider({ yes: true });
14
- if (!provider.askFollowupQuestion)
15
- throw new Error('askFollowupQuestion not defined');
16
- const result = await provider.askFollowupQuestion('Question?', []);
17
- expect(result).toBe('');
18
- });
19
- });
20
- });
21
- //# sourceMappingURL=provider.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.test.js","sourceRoot":"","sources":["../src/provider.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,IAAI,CAAC,QAAQ,CAAC,mBAAmB;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YACrF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;YACxF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;YACvF,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,IAAI,CAAC,QAAQ,CAAC,mBAAmB;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YACrF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;YAClE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}