@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.
- package/dist/index.js +1913 -7
- package/package.json +3 -3
- package/dist/config.js +0 -202
- package/dist/config.js.map +0 -1
- package/dist/config.parameters.test.js +0 -240
- package/dist/config.parameters.test.js.map +0 -1
- package/dist/config.rules.test.js +0 -92
- package/dist/config.rules.test.js.map +0 -1
- package/dist/config.test.js +0 -311
- package/dist/config.test.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/memory-manager.js +0 -76
- package/dist/memory-manager.js.map +0 -1
- package/dist/project-scope.js +0 -67
- package/dist/project-scope.js.map +0 -1
- package/dist/provider.js +0 -366
- package/dist/provider.js.map +0 -1
- package/dist/provider.test.js +0 -21
- package/dist/provider.test.js.map +0 -1
- package/dist/sqlite-memory-store.js +0 -911
- package/dist/sqlite-memory-store.js.map +0 -1
- package/dist/sqlite-memory-store.test.js +0 -661
- package/dist/sqlite-memory-store.test.js.map +0 -1
- package/dist/utils/__tests__/parameterSimplifier.test.js +0 -137
- package/dist/utils/__tests__/parameterSimplifier.test.js.map +0 -1
- package/dist/utils/checkRipgrep.js +0 -22
- package/dist/utils/checkRipgrep.js.map +0 -1
- package/dist/utils/eventHandler.js +0 -199
- package/dist/utils/eventHandler.js.map +0 -1
- package/dist/utils/eventHandler.test.js +0 -50
- package/dist/utils/eventHandler.test.js.map +0 -1
- package/dist/utils/index.js +0 -7
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/listFiles.js +0 -136
- package/dist/utils/listFiles.js.map +0 -1
- package/dist/utils/listFiles.test.js +0 -64
- package/dist/utils/listFiles.test.js.map +0 -1
- package/dist/utils/parameterSimplifier.js +0 -65
- package/dist/utils/parameterSimplifier.js.map +0 -1
- package/dist/utils/readMultiline.js +0 -19
- package/dist/utils/readMultiline.js.map +0 -1
- package/dist/utils/search.constants.js +0 -8
- package/dist/utils/search.constants.js.map +0 -1
- package/dist/utils/searchFiles.js +0 -72
- package/dist/utils/searchFiles.js.map +0 -1
- package/dist/utils/searchFiles.test.js +0 -140
- package/dist/utils/searchFiles.test.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polka-codes/cli-shared",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.24",
|
|
4
4
|
"license": "AGPL-3.0",
|
|
5
5
|
"author": "github@polka.codes",
|
|
6
6
|
"repository": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"access": "public"
|
|
23
23
|
},
|
|
24
24
|
"scripts": {
|
|
25
|
-
"build": "tsc --build && tsup src/index.ts --format esm && bun run build:copy-wasm",
|
|
25
|
+
"build": "tsc --build && tsup src/index.ts --format esm --no-splitting && bun run build:copy-wasm",
|
|
26
26
|
"build:copy-wasm": "mkdir -p dist && cp ../../node_modules/sql.js/dist/sql-wasm.wasm dist/"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"@ai-sdk/provider": "^3.0.8",
|
|
31
31
|
"@ai-sdk/provider-utils": "^4.0.21",
|
|
32
32
|
"@inquirer/prompts": "^8.3.2",
|
|
33
|
-
"@polka-codes/core": "^0.10.
|
|
33
|
+
"@polka-codes/core": "^0.10.24",
|
|
34
34
|
"ai": "^6.0.142",
|
|
35
35
|
"chalk": "^5.6.2",
|
|
36
36
|
"ignore": "^7.0.5",
|
package/dist/config.js
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
// Generated by polka.codes
|
|
2
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
3
|
-
import { readFile } from 'node:fs/promises';
|
|
4
|
-
import { homedir } from 'node:os';
|
|
5
|
-
import { join } from 'node:path';
|
|
6
|
-
import { configSchema } from '@polka-codes/core';
|
|
7
|
-
import { merge } from 'lodash-es';
|
|
8
|
-
import { parse } from 'yaml';
|
|
9
|
-
import { ZodError } from 'zod';
|
|
10
|
-
export { configSchema };
|
|
11
|
-
export function getGlobalConfigPath(home = homedir()) {
|
|
12
|
-
return join(home, '.config', 'polkacodes', 'config.yml');
|
|
13
|
-
}
|
|
14
|
-
export function loadConfigAtPath(path) {
|
|
15
|
-
try {
|
|
16
|
-
return readConfig(path);
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
// Log debug message - this function is used to check if config exists, so undefined is acceptable
|
|
20
|
-
if (error instanceof ZodError) {
|
|
21
|
-
// Validation errors should be logged as warnings
|
|
22
|
-
console.warn(`Config validation failed for ${path}: ${error.message}`);
|
|
23
|
-
}
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
export const localConfigFileName = '.polkacodes.yml';
|
|
28
|
-
const mergeArray = (a, b) => {
|
|
29
|
-
if (!a && !b) {
|
|
30
|
-
return undefined;
|
|
31
|
-
}
|
|
32
|
-
if (!a) {
|
|
33
|
-
return b;
|
|
34
|
-
}
|
|
35
|
-
if (!b) {
|
|
36
|
-
return a;
|
|
37
|
-
}
|
|
38
|
-
return [...a, ...b];
|
|
39
|
-
};
|
|
40
|
-
export function mergeConfigs(configs) {
|
|
41
|
-
if (configs.length === 0) {
|
|
42
|
-
return {};
|
|
43
|
-
}
|
|
44
|
-
const mergedConfig = configs.reduce((acc, config) => {
|
|
45
|
-
const merged = merge({}, acc, config);
|
|
46
|
-
// Special handling for rules array
|
|
47
|
-
const accRules = acc.rules ? (Array.isArray(acc.rules) ? acc.rules : [acc.rules]) : undefined;
|
|
48
|
-
const configRules = config.rules ? (Array.isArray(config.rules) ? config.rules : [config.rules]) : undefined;
|
|
49
|
-
merged.rules = mergeArray(accRules, configRules);
|
|
50
|
-
// Special handling for excludeFiles array
|
|
51
|
-
merged.excludeFiles = mergeArray(acc.excludeFiles, config.excludeFiles);
|
|
52
|
-
return merged;
|
|
53
|
-
}, {}); // Add initial value to prevent potential errors with empty arrays
|
|
54
|
-
return mergedConfig;
|
|
55
|
-
}
|
|
56
|
-
export async function resolveRules(rules) {
|
|
57
|
-
if (!rules) {
|
|
58
|
-
return undefined;
|
|
59
|
-
}
|
|
60
|
-
if (typeof rules === 'string') {
|
|
61
|
-
return rules;
|
|
62
|
-
}
|
|
63
|
-
const resolvedRules = await Promise.all(rules.map(async (rule) => {
|
|
64
|
-
if (typeof rule === 'string') {
|
|
65
|
-
return rule;
|
|
66
|
-
}
|
|
67
|
-
if ('url' in rule) {
|
|
68
|
-
try {
|
|
69
|
-
const controller = new AbortController();
|
|
70
|
-
const timeoutId = setTimeout(() => controller.abort(), 30000); // 30 second timeout
|
|
71
|
-
const response = await fetch(rule.url, { signal: controller.signal });
|
|
72
|
-
clearTimeout(timeoutId);
|
|
73
|
-
if (response.ok) {
|
|
74
|
-
return await response.text();
|
|
75
|
-
}
|
|
76
|
-
console.warn(`Failed to fetch rule from ${rule.url}: ${response.statusText}`);
|
|
77
|
-
}
|
|
78
|
-
catch (error) {
|
|
79
|
-
if (error instanceof Error && error.name === 'AbortError') {
|
|
80
|
-
console.warn(`Timeout fetching rule from ${rule.url} (30s)`);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
console.warn(`Error fetching rule from ${rule.url}: ${error}`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else if ('repo' in rule) {
|
|
88
|
-
const ref = rule.commit ?? rule.tag ?? rule.branch ?? 'main';
|
|
89
|
-
const url = `https://raw.githubusercontent.com/${rule.repo}/${ref}/${rule.path}`;
|
|
90
|
-
try {
|
|
91
|
-
const controller = new AbortController();
|
|
92
|
-
const timeoutId = setTimeout(() => controller.abort(), 30000); // 30 second timeout
|
|
93
|
-
const response = await fetch(url, { signal: controller.signal });
|
|
94
|
-
clearTimeout(timeoutId);
|
|
95
|
-
if (response.ok) {
|
|
96
|
-
return await response.text();
|
|
97
|
-
}
|
|
98
|
-
console.warn(`Failed to fetch rule from ${url}: ${response.statusText}`);
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
if (error instanceof Error && error.name === 'AbortError') {
|
|
102
|
-
console.warn(`Timeout fetching rule from ${url} (30s)`);
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
console.warn(`Error fetching rule from ${url}: ${error}`);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
else if ('path' in rule) {
|
|
110
|
-
if (existsSync(rule.path)) {
|
|
111
|
-
return await readFile(rule.path, 'utf-8');
|
|
112
|
-
}
|
|
113
|
-
console.warn(`Rule file not found: ${rule.path}`);
|
|
114
|
-
}
|
|
115
|
-
return undefined;
|
|
116
|
-
}));
|
|
117
|
-
return resolvedRules.filter((rule) => rule !== undefined).join('\n\n');
|
|
118
|
-
}
|
|
119
|
-
export async function loadConfig(paths, cwd = process.cwd(), home = homedir()) {
|
|
120
|
-
const configs = [];
|
|
121
|
-
// Load global config if exists
|
|
122
|
-
const globalConfigPath = getGlobalConfigPath(home);
|
|
123
|
-
if (existsSync(globalConfigPath)) {
|
|
124
|
-
try {
|
|
125
|
-
const globalConfig = readConfig(globalConfigPath);
|
|
126
|
-
configs.push(globalConfig);
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
console.warn(`Error loading global config file: ${globalConfigPath}\n${error}`);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
// Load project configs
|
|
133
|
-
if (paths && paths.length > 0) {
|
|
134
|
-
const configPaths = Array.isArray(paths) ? paths : [paths];
|
|
135
|
-
for (const path of configPaths) {
|
|
136
|
-
try {
|
|
137
|
-
const config = readConfig(path);
|
|
138
|
-
configs.push(config);
|
|
139
|
-
}
|
|
140
|
-
catch (error) {
|
|
141
|
-
// Check for ENOENT (file not found) - silently skip these
|
|
142
|
-
const errorCode = error?.code;
|
|
143
|
-
if (errorCode === 'ENOENT') {
|
|
144
|
-
// File not found is not an error
|
|
145
|
-
continue;
|
|
146
|
-
}
|
|
147
|
-
// All other errors should be reported (YAML parse errors, validation errors, etc)
|
|
148
|
-
console.error(`Error loading config file: ${path}\n${error}`);
|
|
149
|
-
throw error;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
const configPath = join(cwd, localConfigFileName);
|
|
155
|
-
try {
|
|
156
|
-
const projectConfig = readConfig(configPath);
|
|
157
|
-
configs.push(projectConfig);
|
|
158
|
-
}
|
|
159
|
-
catch (error) {
|
|
160
|
-
if (error instanceof ZodError) {
|
|
161
|
-
console.error(`Error in config file: ${configPath}\n${error}`);
|
|
162
|
-
throw error;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
const mergedConfig = configs.length > 0 ? mergeConfigs(configs) : undefined;
|
|
167
|
-
if (!mergedConfig) {
|
|
168
|
-
return undefined;
|
|
169
|
-
}
|
|
170
|
-
const resolvedRules = await resolveRules(mergedConfig.rules);
|
|
171
|
-
return {
|
|
172
|
-
...mergedConfig,
|
|
173
|
-
rules: resolvedRules,
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
export const readConfig = (path) => {
|
|
177
|
-
const file = readFileSync(path, 'utf8');
|
|
178
|
-
const config = parse(file);
|
|
179
|
-
const result = configSchema.parse(config);
|
|
180
|
-
if (result == null) {
|
|
181
|
-
return {};
|
|
182
|
-
}
|
|
183
|
-
return result;
|
|
184
|
-
};
|
|
185
|
-
export const readLocalConfig = (path) => {
|
|
186
|
-
try {
|
|
187
|
-
return readConfig(path ?? localConfigFileName);
|
|
188
|
-
}
|
|
189
|
-
catch (error) {
|
|
190
|
-
// Log debug message - this function is used to check if local config exists
|
|
191
|
-
if (error instanceof ZodError) {
|
|
192
|
-
// Validation errors should be logged as warnings
|
|
193
|
-
console.warn(`Local config validation failed for ${path ?? localConfigFileName}: ${error.message}`);
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
// Other errors (file not found, parse errors) are expected
|
|
197
|
-
console.debug(`Could not load local config from ${path ?? localConfigFileName}: ${error instanceof Error ? error.message : String(error)}`);
|
|
198
|
-
}
|
|
199
|
-
return undefined;
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
// Generated by polka.codes
|
|
2
|
-
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, test } from 'bun:test';
|
|
3
|
-
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
4
|
-
import { tmpdir } from 'node:os';
|
|
5
|
-
import { join } from 'node:path';
|
|
6
|
-
import { loadConfig, mergeConfigs } from './config';
|
|
7
|
-
describe('config parameters', () => {
|
|
8
|
-
let testDir;
|
|
9
|
-
let testSubDir;
|
|
10
|
-
let testHomeDir;
|
|
11
|
-
beforeAll(() => {
|
|
12
|
-
testDir = mkdtempSync(join(tmpdir(), 'polkacodes-test-'));
|
|
13
|
-
});
|
|
14
|
-
beforeEach(() => {
|
|
15
|
-
testSubDir = mkdtempSync(join(testDir, `sub-test-${Math.random()}`));
|
|
16
|
-
testHomeDir = mkdtempSync(join(testDir, `home-test-${Math.random()}`));
|
|
17
|
-
mkdirSync(join(testHomeDir, '.config', 'polkacodes'), { recursive: true });
|
|
18
|
-
});
|
|
19
|
-
afterEach(() => {
|
|
20
|
-
rmSync(testSubDir, { recursive: true, force: true });
|
|
21
|
-
rmSync(testHomeDir, { recursive: true, force: true });
|
|
22
|
-
});
|
|
23
|
-
afterAll(() => {
|
|
24
|
-
rmSync(testDir, { recursive: true, force: true });
|
|
25
|
-
});
|
|
26
|
-
test('loads root level defaultParameters', async () => {
|
|
27
|
-
const configPath = join(testSubDir, 'params-config.yml');
|
|
28
|
-
writeFileSync(configPath, `
|
|
29
|
-
defaultProvider: anthropic
|
|
30
|
-
defaultParameters:
|
|
31
|
-
temperature: 0.7
|
|
32
|
-
top_p: 0.9
|
|
33
|
-
max_tokens: 4000
|
|
34
|
-
`);
|
|
35
|
-
const config = await loadConfig(configPath, testSubDir, testHomeDir);
|
|
36
|
-
expect(config?.defaultParameters).toMatchSnapshot();
|
|
37
|
-
});
|
|
38
|
-
test('loads provider defaultParameters', async () => {
|
|
39
|
-
const configPath = join(testSubDir, 'provider-params-config.yml');
|
|
40
|
-
writeFileSync(configPath, `
|
|
41
|
-
providers:
|
|
42
|
-
anthropic:
|
|
43
|
-
apiKey: test-key
|
|
44
|
-
defaultModel: claude-3-opus
|
|
45
|
-
defaultParameters:
|
|
46
|
-
temperature: 0.5
|
|
47
|
-
max_tokens: 3000
|
|
48
|
-
openai:
|
|
49
|
-
apiKey: test-key-openai
|
|
50
|
-
defaultParameters:
|
|
51
|
-
temperature: 0.8
|
|
52
|
-
presence_penalty: 0.2
|
|
53
|
-
`);
|
|
54
|
-
const config = await loadConfig(configPath, testSubDir, testHomeDir);
|
|
55
|
-
expect(config?.providers?.anthropic?.defaultParameters).toMatchSnapshot();
|
|
56
|
-
expect(config?.providers?.openai?.defaultParameters).toMatchSnapshot();
|
|
57
|
-
});
|
|
58
|
-
test('loads command parameters', async () => {
|
|
59
|
-
const configPath = join(testSubDir, 'command-params-config.yml');
|
|
60
|
-
writeFileSync(configPath, `
|
|
61
|
-
commands:
|
|
62
|
-
default:
|
|
63
|
-
provider: anthropic
|
|
64
|
-
model: claude-3-opus
|
|
65
|
-
parameters:
|
|
66
|
-
temperature: 0.7
|
|
67
|
-
max_tokens: 4000
|
|
68
|
-
task:
|
|
69
|
-
model: claude-3-sonnet
|
|
70
|
-
parameters:
|
|
71
|
-
temperature: 0.8
|
|
72
|
-
top_p: 0.9
|
|
73
|
-
`);
|
|
74
|
-
const config = await loadConfig(configPath, testSubDir, testHomeDir);
|
|
75
|
-
expect(config?.commands?.default?.parameters).toMatchSnapshot();
|
|
76
|
-
expect(config?.commands?.task?.parameters).toMatchSnapshot();
|
|
77
|
-
});
|
|
78
|
-
test('merges parameters from multiple configs', () => {
|
|
79
|
-
const configs = [
|
|
80
|
-
{
|
|
81
|
-
defaultParameters: {
|
|
82
|
-
temperature: 0.7,
|
|
83
|
-
top_p: 0.9,
|
|
84
|
-
},
|
|
85
|
-
providers: {
|
|
86
|
-
anthropic: {
|
|
87
|
-
defaultParameters: {
|
|
88
|
-
temperature: 0.5,
|
|
89
|
-
max_tokens: 2000,
|
|
90
|
-
},
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
defaultParameters: {
|
|
96
|
-
max_tokens: 4000,
|
|
97
|
-
presence_penalty: 0.1,
|
|
98
|
-
},
|
|
99
|
-
providers: {
|
|
100
|
-
anthropic: {
|
|
101
|
-
defaultParameters: {
|
|
102
|
-
temperature: 0.6,
|
|
103
|
-
frequency_penalty: 0.2,
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
];
|
|
109
|
-
const merged = mergeConfigs(configs);
|
|
110
|
-
expect(merged.defaultParameters).toMatchSnapshot();
|
|
111
|
-
expect(merged.providers?.anthropic?.defaultParameters).toMatchSnapshot();
|
|
112
|
-
});
|
|
113
|
-
test('merges global and local parameters with local precedence', async () => {
|
|
114
|
-
const globalConfigPath = join(testHomeDir, '.config', 'polkacodes', 'config.yml');
|
|
115
|
-
const localConfigPath = join(testSubDir, '.polkacodes.yml');
|
|
116
|
-
writeFileSync(globalConfigPath, `
|
|
117
|
-
defaultParameters:
|
|
118
|
-
temperature: 0.7
|
|
119
|
-
top_p: 0.9
|
|
120
|
-
providers:
|
|
121
|
-
anthropic:
|
|
122
|
-
defaultParameters:
|
|
123
|
-
temperature: 0.5
|
|
124
|
-
max_tokens: 2000
|
|
125
|
-
`);
|
|
126
|
-
writeFileSync(localConfigPath, `
|
|
127
|
-
defaultParameters:
|
|
128
|
-
temperature: 0.6
|
|
129
|
-
presence_penalty: 0.1
|
|
130
|
-
providers:
|
|
131
|
-
anthropic:
|
|
132
|
-
defaultParameters:
|
|
133
|
-
temperature: 0.4
|
|
134
|
-
top_k: 50
|
|
135
|
-
`);
|
|
136
|
-
const config = await loadConfig(localConfigPath, testSubDir, testHomeDir);
|
|
137
|
-
expect(config?.defaultParameters).toMatchSnapshot();
|
|
138
|
-
expect(config?.providers?.anthropic?.defaultParameters).toMatchSnapshot();
|
|
139
|
-
});
|
|
140
|
-
describe('mergeConfigs edge cases', () => {
|
|
141
|
-
test('handles empty array', () => {
|
|
142
|
-
const merged = mergeConfigs([]);
|
|
143
|
-
expect(merged).toEqual({});
|
|
144
|
-
});
|
|
145
|
-
test('handles single config', () => {
|
|
146
|
-
const config = {
|
|
147
|
-
defaultParameters: { temperature: 0.7 },
|
|
148
|
-
};
|
|
149
|
-
const merged = mergeConfigs([config]);
|
|
150
|
-
expect(merged).toEqual(config);
|
|
151
|
-
});
|
|
152
|
-
test('deep merges nested objects', () => {
|
|
153
|
-
const configs = [
|
|
154
|
-
{
|
|
155
|
-
providers: {
|
|
156
|
-
anthropic: {
|
|
157
|
-
apiKey: 'key1',
|
|
158
|
-
defaultParameters: {
|
|
159
|
-
temperature: 0.5,
|
|
160
|
-
max_tokens: 2000,
|
|
161
|
-
},
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
providers: {
|
|
167
|
-
anthropic: {
|
|
168
|
-
defaultParameters: {
|
|
169
|
-
temperature: 0.6,
|
|
170
|
-
top_p: 0.9,
|
|
171
|
-
},
|
|
172
|
-
},
|
|
173
|
-
},
|
|
174
|
-
},
|
|
175
|
-
];
|
|
176
|
-
const merged = mergeConfigs(configs);
|
|
177
|
-
expect(merged.providers?.anthropic).toMatchSnapshot();
|
|
178
|
-
expect(merged.providers?.anthropic?.apiKey).toBe('key1');
|
|
179
|
-
expect(merged.providers?.anthropic?.defaultParameters?.temperature).toBe(0.6);
|
|
180
|
-
expect(merged.providers?.anthropic?.defaultParameters?.max_tokens).toBe(2000);
|
|
181
|
-
expect(merged.providers?.anthropic?.defaultParameters?.top_p).toBe(0.9);
|
|
182
|
-
});
|
|
183
|
-
test('merges arrays with concat', () => {
|
|
184
|
-
const configs = [
|
|
185
|
-
{
|
|
186
|
-
excludeFiles: ['node_modules', '.git'],
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
excludeFiles: ['dist', 'build'],
|
|
190
|
-
},
|
|
191
|
-
];
|
|
192
|
-
const merged = mergeConfigs(configs);
|
|
193
|
-
expect(merged.excludeFiles).toEqual(['node_modules', '.git', 'dist', 'build']);
|
|
194
|
-
});
|
|
195
|
-
test('handles missing arrays', () => {
|
|
196
|
-
const configs = [
|
|
197
|
-
{
|
|
198
|
-
excludeFiles: ['node_modules'],
|
|
199
|
-
},
|
|
200
|
-
{
|
|
201
|
-
defaultParameters: { temperature: 0.7 },
|
|
202
|
-
},
|
|
203
|
-
];
|
|
204
|
-
const merged = mergeConfigs(configs);
|
|
205
|
-
expect(merged.excludeFiles).toEqual(['node_modules']);
|
|
206
|
-
expect(merged.defaultParameters).toEqual({ temperature: 0.7 });
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
describe('loadConfig edge cases', () => {
|
|
210
|
-
test('returns undefined on missing config file', async () => {
|
|
211
|
-
const configPath = join(testSubDir, 'nonexistent.yml');
|
|
212
|
-
const result = await loadConfig(configPath, testSubDir, testHomeDir);
|
|
213
|
-
// Missing config files should not throw - they should return undefined
|
|
214
|
-
expect(result).toBeUndefined();
|
|
215
|
-
});
|
|
216
|
-
test('throws on invalid YAML', async () => {
|
|
217
|
-
const configPath = join(testSubDir, 'invalid.yml');
|
|
218
|
-
writeFileSync(configPath, '{ invalid yaml content');
|
|
219
|
-
await expect(loadConfig(configPath, testSubDir, testHomeDir)).rejects.toThrow();
|
|
220
|
-
});
|
|
221
|
-
test('prioritizes local config over global config', async () => {
|
|
222
|
-
const globalConfigPath = join(testHomeDir, '.config', 'polkacodes', 'config.yml');
|
|
223
|
-
const localConfigPath = join(testSubDir, '.polkacodes.yml');
|
|
224
|
-
writeFileSync(globalConfigPath, `
|
|
225
|
-
defaultProvider: openai
|
|
226
|
-
defaultParameters:
|
|
227
|
-
temperature: 0.5
|
|
228
|
-
`);
|
|
229
|
-
writeFileSync(localConfigPath, `
|
|
230
|
-
defaultProvider: anthropic
|
|
231
|
-
defaultParameters:
|
|
232
|
-
temperature: 0.7
|
|
233
|
-
`);
|
|
234
|
-
const config = await loadConfig(localConfigPath, testSubDir, testHomeDir);
|
|
235
|
-
expect(config?.defaultProvider).toBe('anthropic');
|
|
236
|
-
expect(config?.defaultParameters?.temperature).toBe(0.7);
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
});
|
|
240
|
-
//# sourceMappingURL=config.parameters.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.parameters.test.js","sourceRoot":"","sources":["../src/config.parameters.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { afterEach, beforeEach, describe, expect, spyOn, test } from 'bun:test';
|
|
2
|
-
import { resolveRules } from './config';
|
|
3
|
-
describe('resolveRules', () => {
|
|
4
|
-
let fetchSpy;
|
|
5
|
-
beforeEach(() => {
|
|
6
|
-
fetchSpy = spyOn(global, 'fetch').mockImplementation((() => Promise.resolve(new Response('rule content'))));
|
|
7
|
-
});
|
|
8
|
-
afterEach(() => {
|
|
9
|
-
fetchSpy.mockRestore();
|
|
10
|
-
});
|
|
11
|
-
test('resolves repo rule with default branch', async () => {
|
|
12
|
-
const rules = [
|
|
13
|
-
{
|
|
14
|
-
repo: 'owner/repo',
|
|
15
|
-
path: 'rules/rule.md',
|
|
16
|
-
},
|
|
17
|
-
];
|
|
18
|
-
await resolveRules(rules);
|
|
19
|
-
expect(fetchSpy).toHaveBeenCalledWith('https://raw.githubusercontent.com/owner/repo/main/rules/rule.md', expect.objectContaining({
|
|
20
|
-
signal: expect.any(AbortSignal),
|
|
21
|
-
}));
|
|
22
|
-
});
|
|
23
|
-
test('resolves repo rule with tag', async () => {
|
|
24
|
-
const rules = [
|
|
25
|
-
{
|
|
26
|
-
repo: 'owner/repo',
|
|
27
|
-
path: 'rules/rule.md',
|
|
28
|
-
tag: 'v1.0.0',
|
|
29
|
-
},
|
|
30
|
-
];
|
|
31
|
-
await resolveRules(rules);
|
|
32
|
-
expect(fetchSpy).toHaveBeenCalledWith('https://raw.githubusercontent.com/owner/repo/v1.0.0/rules/rule.md', expect.objectContaining({
|
|
33
|
-
signal: expect.any(AbortSignal),
|
|
34
|
-
}));
|
|
35
|
-
});
|
|
36
|
-
test('resolves repo rule with branch', async () => {
|
|
37
|
-
const rules = [
|
|
38
|
-
{
|
|
39
|
-
repo: 'owner/repo',
|
|
40
|
-
path: 'rules/rule.md',
|
|
41
|
-
branch: 'develop',
|
|
42
|
-
},
|
|
43
|
-
];
|
|
44
|
-
await resolveRules(rules);
|
|
45
|
-
expect(fetchSpy).toHaveBeenCalledWith('https://raw.githubusercontent.com/owner/repo/develop/rules/rule.md', expect.objectContaining({
|
|
46
|
-
signal: expect.any(AbortSignal),
|
|
47
|
-
}));
|
|
48
|
-
});
|
|
49
|
-
test('resolves repo rule with commit', async () => {
|
|
50
|
-
const rules = [
|
|
51
|
-
{
|
|
52
|
-
repo: 'owner/repo',
|
|
53
|
-
path: 'rules/rule.md',
|
|
54
|
-
commit: 'sha123',
|
|
55
|
-
},
|
|
56
|
-
];
|
|
57
|
-
await resolveRules(rules);
|
|
58
|
-
expect(fetchSpy).toHaveBeenCalledWith('https://raw.githubusercontent.com/owner/repo/sha123/rules/rule.md', expect.objectContaining({
|
|
59
|
-
signal: expect.any(AbortSignal),
|
|
60
|
-
}));
|
|
61
|
-
});
|
|
62
|
-
test('prioritizes commit over tag and branch', async () => {
|
|
63
|
-
const rules = [
|
|
64
|
-
{
|
|
65
|
-
repo: 'owner/repo',
|
|
66
|
-
path: 'rules/rule.md',
|
|
67
|
-
commit: 'sha123',
|
|
68
|
-
tag: 'v1.0.0',
|
|
69
|
-
branch: 'develop',
|
|
70
|
-
},
|
|
71
|
-
];
|
|
72
|
-
await resolveRules(rules);
|
|
73
|
-
expect(fetchSpy).toHaveBeenCalledWith('https://raw.githubusercontent.com/owner/repo/sha123/rules/rule.md', expect.objectContaining({
|
|
74
|
-
signal: expect.any(AbortSignal),
|
|
75
|
-
}));
|
|
76
|
-
});
|
|
77
|
-
test('prioritizes tag over branch', async () => {
|
|
78
|
-
const rules = [
|
|
79
|
-
{
|
|
80
|
-
repo: 'owner/repo',
|
|
81
|
-
path: 'rules/rule.md',
|
|
82
|
-
tag: 'v1.0.0',
|
|
83
|
-
branch: 'develop',
|
|
84
|
-
},
|
|
85
|
-
];
|
|
86
|
-
await resolveRules(rules);
|
|
87
|
-
expect(fetchSpy).toHaveBeenCalledWith('https://raw.githubusercontent.com/owner/repo/v1.0.0/rules/rule.md', expect.objectContaining({
|
|
88
|
-
signal: expect.any(AbortSignal),
|
|
89
|
-
}));
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
//# sourceMappingURL=config.rules.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.rules.test.js","sourceRoot":"","sources":["../src/config.rules.test.ts"],"names":[],"mappings":"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"}
|