@polka-codes/cli-shared 0.10.23 → 0.10.25

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 +2 -2
  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
@@ -1,311 +0,0 @@
1
- // Generated by polka.codes
2
- import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, spyOn, 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', () => {
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 config from specified path', async () => {
27
- const configPath = join(testSubDir, 'test-config.yml');
28
- writeFileSync(configPath, `
29
- defaultProvider: anthropic
30
- defaultModel: claude-3-opus
31
- `);
32
- const config = await loadConfig(configPath, testSubDir, testHomeDir);
33
- // Verify the config was loaded with the correct values
34
- expect(config).toBeDefined();
35
- expect(config?.defaultProvider).toBe('anthropic');
36
- expect(config?.defaultModel).toBe('claude-3-opus');
37
- });
38
- test('loads multiple config files', async () => {
39
- const configPath1 = join(testSubDir, 'config1.yml');
40
- const configPath2 = join(testSubDir, 'config2.yml');
41
- writeFileSync(configPath1, `
42
- defaultProvider: anthropic
43
- defaultModel: claude-3-opus
44
- rules:
45
- - rule1
46
- - rule2
47
- `);
48
- writeFileSync(configPath2, `
49
- defaultModel: claude-3-sonnet
50
- rules:
51
- - rule3
52
- `);
53
- const config = await loadConfig([configPath1, configPath2], testSubDir, testHomeDir);
54
- // Verify configs are merged with later configs taking precedence
55
- expect(config).toBeDefined();
56
- expect(config?.defaultProvider).toBe('anthropic');
57
- expect(config?.defaultModel).toBe('claude-3-sonnet'); // Overridden by config2
58
- expect(config?.rules).toContain('rule1');
59
- expect(config?.rules).toContain('rule2');
60
- expect(config?.rules).toContain('rule3');
61
- });
62
- test('loads config from default paths', async () => {
63
- const configPath = join(testSubDir, '.polkacodes.yml');
64
- writeFileSync(configPath, `
65
- defaultProvider: deepseek
66
- defaultModel: deepseek-chat
67
- `);
68
- const config = await loadConfig(undefined, testSubDir, testHomeDir);
69
- // Verify the config was loaded from the default path
70
- expect(config).toBeDefined();
71
- expect(config?.defaultProvider).toBe('deepseek');
72
- expect(config?.defaultModel).toBe('deepseek-chat');
73
- // Clean up
74
- writeFileSync(configPath, '');
75
- });
76
- test('validates config schema', async () => {
77
- const consoleErrorSpy = spyOn(console, 'error').mockImplementation(() => { });
78
- const configPath = join(testSubDir, 'invalid-config.yml');
79
- writeFileSync(configPath, `
80
- invalidKey: value
81
- `);
82
- expect(loadConfig(configPath, testSubDir, testHomeDir)).rejects.toThrow();
83
- consoleErrorSpy.mockRestore();
84
- });
85
- test('handles commands configuration', async () => {
86
- const configPath = join(testSubDir, 'commands-config.yml');
87
- writeFileSync(configPath, `
88
- scripts:
89
- test: echo "test"
90
- complex:
91
- command: echo "complex"
92
- description: A complex command
93
- `);
94
- const config = await loadConfig(configPath, testSubDir, testHomeDir);
95
- // Verify scripts are parsed correctly
96
- expect(config?.scripts).toBeDefined();
97
- expect(config?.scripts?.test).toBe('echo "test"');
98
- expect(config?.scripts?.complex).toEqual({
99
- command: 'echo "complex"',
100
- description: 'A complex command',
101
- });
102
- });
103
- test('handles rules configuration', async () => {
104
- const configPath = join(testSubDir, 'rules-config.yml');
105
- writeFileSync(configPath, `
106
- rules:
107
- - rule1
108
- - rule2
109
- `);
110
- const config = await loadConfig(configPath, testSubDir, testHomeDir);
111
- // Verify rules are parsed as a string
112
- expect(config?.rules).toBeDefined();
113
- expect(typeof config?.rules).toBe('string');
114
- expect(config?.rules).toContain('rule1');
115
- expect(config?.rules).toContain('rule2');
116
- });
117
- test('handles command defaults', async () => {
118
- const configPath = join(testSubDir, 'defaults-config.yml');
119
- writeFileSync(configPath, `
120
- commands:
121
- default:
122
- provider: deepseek
123
- model: deepseek-chat
124
- task:
125
- model: deepseek-coder
126
- `);
127
- const config = await loadConfig(configPath, testSubDir, testHomeDir);
128
- // Verify command defaults are parsed correctly
129
- expect(config?.commands).toBeDefined();
130
- expect(config?.commands?.default?.provider).toBe('deepseek');
131
- expect(config?.commands?.default?.model).toBe('deepseek-chat');
132
- expect(config?.commands?.task?.model).toBe('deepseek-coder');
133
- });
134
- test('merges multiple configs correctly', () => {
135
- const configs = [
136
- {
137
- defaultProvider: 'anthropic',
138
- defaultModel: 'claude-3-opus',
139
- rules: ['rule1', 'rule2'],
140
- excludeFiles: ['exclude1'],
141
- },
142
- {
143
- defaultModel: 'claude-3-sonnet',
144
- rules: ['rule3'],
145
- excludeFiles: ['exclude2'],
146
- },
147
- {
148
- rules: 'rule4',
149
- excludeFiles: ['exclude3'],
150
- },
151
- ];
152
- const merged = mergeConfigs(configs);
153
- // Verify merge behavior: later configs override, arrays concatenate
154
- expect(merged.defaultProvider).toBe('anthropic');
155
- expect(merged.defaultModel).toBe('claude-3-sonnet'); // Overridden by second config
156
- expect(merged.rules).toContain('rule1');
157
- expect(merged.rules).toContain('rule2');
158
- expect(merged.rules).toContain('rule3');
159
- expect(merged.rules).toContain('rule4');
160
- expect(merged.excludeFiles).toEqual(['exclude1', 'exclude2', 'exclude3']);
161
- });
162
- test('merges global and local config with local precedence', async () => {
163
- const globalConfigPath = join(testHomeDir, '.config', 'polkacodes', 'config.yml');
164
- const localConfigPath = join(testSubDir, '.polkacodes.yml');
165
- writeFileSync(globalConfigPath, `
166
- defaultProvider: anthropic
167
- defaultModel: claude-3-opus
168
- commands:
169
- default:
170
- provider: deepseek
171
- model: deepseek-chat
172
- scripts:
173
- test: echo "global"
174
- complex:
175
- command: echo "global-complex"
176
- description: Global complex command
177
- rules:
178
- - global-rule
179
- `);
180
- writeFileSync(localConfigPath, `
181
- providers:
182
- anthropic:
183
- apiKey: local-key
184
- commands:
185
- default:
186
- model: deepseek-coder-instruct
187
- scripts:
188
- test: echo "local"
189
- rules:
190
- - local-rule
191
- `);
192
- const config = await loadConfig(localConfigPath, testSubDir, testHomeDir);
193
- // Verify local config takes precedence over global
194
- expect(config).toBeDefined();
195
- expect(config?.defaultProvider).toBe('anthropic'); // From global
196
- expect(config?.defaultModel).toBe('claude-3-opus'); // From global
197
- expect(config?.providers?.anthropic?.apiKey).toBe('local-key'); // From local
198
- expect(config?.commands?.default?.provider).toBe('deepseek'); // From global
199
- expect(config?.commands?.default?.model).toBe('deepseek-coder-instruct'); // Overridden by local
200
- expect(config?.scripts?.test).toBe('echo "local"'); // Overridden by local
201
- expect(config?.scripts?.complex).toEqual({
202
- command: 'echo "global-complex"',
203
- description: 'Global complex command',
204
- }); // From global
205
- expect(config?.rules).toContain('global-rule');
206
- expect(config?.rules).toContain('local-rule');
207
- });
208
- test('concatenates arrays', async () => {
209
- const globalConfigPath = join(testHomeDir, '.config', 'polkacodes', 'config.yml');
210
- const localConfigPath = join(testSubDir, '.polkacodes.yml');
211
- writeFileSync(globalConfigPath, `
212
- rules:
213
- - global-rule-1
214
- - global-rule-2
215
- `);
216
- writeFileSync(localConfigPath, `
217
- rules: local-rule
218
- `);
219
- const config = await loadConfig(localConfigPath, testSubDir, testHomeDir);
220
- // Verify array concatenation behavior
221
- expect(config?.rules).toBeDefined();
222
- expect(config?.rules).toContain('global-rule-1');
223
- expect(config?.rules).toContain('global-rule-2');
224
- expect(config?.rules).toContain('local-rule');
225
- });
226
- test('parses project .polkacodes.yml successfully', async () => {
227
- await loadConfig();
228
- });
229
- test('parses example.polkacodes.yml successfully', async () => {
230
- const fetchSpy = spyOn(global, 'fetch').mockImplementation((() => Promise.resolve(new Response('mock rule content'))));
231
- try {
232
- await loadConfig('example.polkacodes.yml');
233
- }
234
- finally {
235
- fetchSpy.mockRestore();
236
- }
237
- });
238
- test('handles both string and array rules formats', async () => {
239
- // Test string format
240
- const stringConfigPath = join(testSubDir, 'string-rules.yml');
241
- writeFileSync(stringConfigPath, `
242
- rules: |
243
- Rule 1
244
- Rule 2
245
- Rule 3
246
- `);
247
- const stringConfig = await loadConfig(stringConfigPath, testSubDir, testHomeDir);
248
- expect(typeof stringConfig?.rules).toBe('string');
249
- expect(stringConfig?.rules).toContain('Rule 1');
250
- // Test array format
251
- const arrayConfigPath = join(testSubDir, 'array-rules.yml');
252
- writeFileSync(arrayConfigPath, `
253
- rules:
254
- - "Rule 1"
255
- - "Rule 2"
256
- - "Rule 3"
257
- `);
258
- const arrayConfig = await loadConfig(arrayConfigPath, testSubDir, testHomeDir);
259
- expect(typeof arrayConfig?.rules).toBe('string');
260
- expect(arrayConfig?.rules).toContain('Rule 1');
261
- expect(arrayConfig?.rules).toContain('Rule 2');
262
- expect(arrayConfig?.rules).toContain('Rule 3');
263
- // Test merging behavior
264
- const globalConfigPath = join(testHomeDir, '.config', 'polkacodes', 'config.yml');
265
- const localConfigPath = join(testSubDir, 'merged-rules.yml');
266
- writeFileSync(globalConfigPath, `
267
- rules:
268
- - "Global Rule 1"
269
- - "Global Rule 2"
270
- `);
271
- writeFileSync(localConfigPath, `
272
- rules: "Local Rule"
273
- `);
274
- const mergedConfig = await loadConfig(localConfigPath, testSubDir, testHomeDir);
275
- expect(typeof mergedConfig?.rules).toBe('string');
276
- expect(mergedConfig?.rules).toContain('Global Rule 1');
277
- expect(mergedConfig?.rules).toContain('Global Rule 2');
278
- expect(mergedConfig?.rules).toContain('Local Rule');
279
- });
280
- test('handles loadRules configuration', async () => {
281
- const configPath = join(testSubDir, 'load-rules-config.yml');
282
- // Test explicitly disabling both
283
- writeFileSync(configPath, `
284
- loadRules:
285
- AGENTS.md: false
286
- CLAUDE.md: false
287
- `);
288
- const config = await loadConfig(configPath, testSubDir, testHomeDir);
289
- expect(config?.loadRules?.['AGENTS.md']).toBe(false);
290
- expect(config?.loadRules?.['CLAUDE.md']).toBe(false);
291
- // Test explicitly enabling both
292
- writeFileSync(configPath, `
293
- loadRules:
294
- AGENTS.md: true
295
- CLAUDE.md: true
296
- `);
297
- const enabledConfig = await loadConfig(configPath, testSubDir, testHomeDir);
298
- expect(enabledConfig?.loadRules?.['AGENTS.md']).toBe(true);
299
- expect(enabledConfig?.loadRules?.['CLAUDE.md']).toBe(true);
300
- // Test mixed settings
301
- writeFileSync(configPath, `
302
- loadRules:
303
- AGENTS.md: true
304
- CLAUDE.md: false
305
- `);
306
- const mixedConfig = await loadConfig(configPath, testSubDir, testHomeDir);
307
- expect(mixedConfig?.loadRules?.['AGENTS.md']).toBe(true);
308
- expect(mixedConfig?.loadRules?.['CLAUDE.md']).toBe(false);
309
- });
310
- });
311
- //# sourceMappingURL=config.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AACpG,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEnD,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAI,OAAe,CAAA;IACnB,IAAI,UAAkB,CAAA;IACtB,IAAI,WAAmB,CAAA;IAEvB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;QACpE,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;QACtE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5E,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;QACtD,aAAa,CACX,UAAU,EACV;;;KAGD,CACA,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAEpE,uDAAuD;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;QAEnD,aAAa,CACX,WAAW,EACX;;;;;;KAMD,CACA,CAAA;QAED,aAAa,CACX,WAAW,EACX;;;;KAID,CACA,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAEpF,iEAAiE;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA,CAAC,wBAAwB;QAC7E,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;QACtD,aAAa,CACX,UAAU,EACV;;;KAGD,CACA,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAEnE,qDAAqD;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAElD,WAAW;QACX,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAA;QACzD,aAAa,CACX,UAAU,EACV;;KAED,CACA,CAAA;QAED,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QACzE,eAAe,CAAC,WAAW,EAAE,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;QAC1D,aAAa,CACX,UAAU,EACV;;;;;;KAMD,CACA,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAEpE,sCAAsC;QACtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;QACrC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;YACvC,OAAO,EAAE,gBAAgB;YACzB,WAAW,EAAE,mBAAmB;SACjC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;QACvD,aAAa,CACX,UAAU,EACV;;;;KAID,CACA,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAEpE,sCAAsC;QACtC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QACnC,MAAM,CAAC,OAAO,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC3C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;QAC1D,aAAa,CACX,UAAU,EACV;;;;;;;KAOD,CACA,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAEpE,+CAA+C;QAC/C,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;QACtC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5D,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC9D,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC7C,MAAM,OAAO,GAAG;YACd;gBACE,eAAe,EAAE,WAAW;gBAC5B,YAAY,EAAE,eAAe;gBAC7B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBACzB,YAAY,EAAE,CAAC,UAAU,CAAC;aAC3B;YACD;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,KAAK,EAAE,CAAC,OAAO,CAAC;gBAChB,YAAY,EAAE,CAAC,UAAU,CAAC;aAC3B;YACD;gBACE,KAAK,EAAE,OAAO;gBACd,YAAY,EAAE,CAAC,UAAU,CAAC;aAC3B;SACF,CAAA;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QAEpC,oEAAoE;QACpE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA,CAAC,8BAA8B;QAClF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;QACjF,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;QAE3D,aAAa,CACX,gBAAgB,EAChB;;;;;;;;;;;;;;KAcD,CACA,CAAA;QAED,aAAa,CACX,eAAe,EACf;;;;;;;;;;;KAWD,CACA,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAEzE,mDAAmD;QACnD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA,CAAC,cAAc;QAChE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA,CAAC,cAAc;QACjE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA,CAAC,aAAa;QAC5E,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,CAAC,cAAc;QAC3E,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA,CAAC,sBAAsB;QAC/F,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA,CAAC,sBAAsB;QACzE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;YACvC,OAAO,EAAE,uBAAuB;YAChC,WAAW,EAAE,wBAAwB;SACtC,CAAC,CAAA,CAAC,cAAc;QACjB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;QACjF,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;QAE3D,aAAa,CACX,gBAAgB,EAChB;;;;KAID,CACA,CAAA;QAED,aAAa,CACX,eAAe,EACf;;KAED,CACA,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAEzE,sCAAsC;QACtC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QACnC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,UAAU,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAQ,CAAC,CAAA;QAC7H,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,wBAAwB,CAAC,CAAA;QAC5C,CAAC;gBAAS,CAAC;YACT,QAAQ,CAAC,WAAW,EAAE,CAAA;QACxB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC7D,qBAAqB;QACrB,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;QAC7D,aAAa,CACX,gBAAgB,EAChB;;;;;OAKC,CACF,CAAA;QACD,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAChF,MAAM,CAAC,OAAO,YAAY,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjD,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAE/C,oBAAoB;QACpB,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;QAC3D,aAAa,CACX,eAAe,EACf;;;;;OAKC,CACF,CAAA;QACD,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAC9E,MAAM,CAAC,OAAO,WAAW,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC9C,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC9C,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAE9C,wBAAwB;QACxB,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;QACjF,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;QAE5D,aAAa,CACX,gBAAgB,EAChB;;;;OAIC,CACF,CAAA;QAED,aAAa,CACX,eAAe,EACf;;OAEC,CACF,CAAA;QAED,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAC/E,MAAM,CAAC,OAAO,YAAY,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjD,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;QACtD,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;QACtD,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAA;QAE5D,iCAAiC;QACjC,aAAa,CACX,UAAU,EACV;;;;OAIC,CACF,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QACpE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEpD,gCAAgC;QAChC,aAAa,CACX,UAAU,EACV;;;;OAIC,CACF,CAAA;QAED,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QAC3E,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1D,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1D,sBAAsB;QACtB,aAAa,CACX,UAAU,EACV;;;;OAIC,CACF,CAAA;QAED,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QACzE,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA"}
@@ -1,76 +0,0 @@
1
- /**
2
- * Memory Manager
3
- *
4
- * This class provides core memory management logic that is independent
5
- * of the storage backend. It implements the IMemoryStore interface and
6
- * delegates storage operations to the provided store implementation.
7
- *
8
- * This allows the same business logic to be used with different storage
9
- * backends (SQLite, PostgreSQL, Redis, etc.)
10
- */
11
- export class MemoryManager {
12
- store;
13
- constructor(store) {
14
- this.store = store;
15
- }
16
- /**
17
- * Read memory by topic name
18
- */
19
- async readMemory(topic) {
20
- return this.store.readMemory(topic);
21
- }
22
- /**
23
- * Update memory with operation
24
- */
25
- async updateMemory(operation, topic, content, metadata) {
26
- return this.store.updateMemory(operation, topic, content, metadata);
27
- }
28
- /**
29
- * Query memory with filters
30
- */
31
- async queryMemory(query = {}, options) {
32
- // Apply default safety limit if not specified
33
- const finalQuery = {
34
- ...query,
35
- };
36
- // Only apply default limit for select operations, and if no explicit limit is set
37
- // Skip for count, delete operations or when limit is explicitly set
38
- const operation = options?.operation;
39
- if ((operation === 'select' || !operation) && !finalQuery.limit) {
40
- finalQuery.limit = 1000;
41
- }
42
- return this.store.queryMemory(finalQuery, options);
43
- }
44
- /**
45
- * Batch update memory
46
- */
47
- async batchUpdateMemory(operations) {
48
- return this.store.batchUpdateMemory(operations);
49
- }
50
- /**
51
- * Get database statistics
52
- */
53
- async getStats() {
54
- return this.store.getStats();
55
- }
56
- /**
57
- * Close the memory store
58
- */
59
- async close() {
60
- await this.store.close();
61
- }
62
- /**
63
- * Execute a transaction
64
- * Exposes the underlying store's transaction method if available
65
- */
66
- async transaction(callback) {
67
- // Check if the underlying store supports transactions
68
- const storeWithTransaction = this.store;
69
- if (typeof storeWithTransaction.transaction === 'function') {
70
- return storeWithTransaction.transaction(callback);
71
- }
72
- // If no transaction support, run the callback directly
73
- return callback();
74
- }
75
- }
76
- //# sourceMappingURL=memory-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-manager.js","sourceRoot":"","sources":["../src/memory-manager.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAa;IAChB,KAAK,CAAc;IAE3B,YAAY,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAa;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,SAA0C,EAC1C,KAAa,EACb,OAA2B,EAC3B,QAQC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IACrE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,QAAqB,EAAE,EAAE,OAAsB;QAC/D,8CAA8C;QAC9C,MAAM,UAAU,GAAgB;YAC9B,GAAG,KAAK;SACT,CAAA;QACD,kFAAkF;QAClF,oEAAoE;QACpE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,CAAA;QACpC,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAChE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAA;QACzB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAA6B;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAI,QAA0B;QAC7C,sDAAsD;QACtD,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAqE,CAAA;QACvG,IAAI,OAAO,oBAAoB,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YAC3D,OAAO,oBAAoB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QACnD,CAAC;QACD,uDAAuD;QACvD,OAAO,QAAQ,EAAE,CAAA;IACnB,CAAC;CACF"}
@@ -1,67 +0,0 @@
1
- import { existsSync } from 'node:fs';
2
- import { dirname, normalize, resolve, sep } from 'node:path';
3
- /**
4
- * Detect project scope from current working directory
5
- *
6
- * This function determines whether we're in a project directory or global scope.
7
- * It looks for common project markers (.git, package.json, etc.) to identify the project root.
8
- *
9
- * @param cwd - Current working directory
10
- * @returns A scope string ('global' or 'project:/absolute/path')
11
- */
12
- export function detectProjectScope(cwd) {
13
- const projectPath = findProjectRoot(cwd);
14
- if (!projectPath) {
15
- return 'global';
16
- }
17
- const normalizedPath = normalizePath(projectPath);
18
- return `project:${normalizedPath}`;
19
- }
20
- /**
21
- * Find the project root directory by looking for common project markers
22
- */
23
- function findProjectRoot(dir) {
24
- // Check if we're still in a valid directory
25
- if (!existsSync(dir)) {
26
- return null;
27
- }
28
- // Common project markers in priority order
29
- const primaryMarkers = ['.git', 'package.json'];
30
- const secondaryMarkers = [
31
- 'Cargo.toml', // Rust
32
- 'go.mod', // Go
33
- 'pyproject.toml', // Python
34
- 'requirements.txt', // Python
35
- 'setup.py', // Python
36
- 'Gemfile', // Ruby
37
- 'pom.xml', // Java Maven
38
- 'build.gradle', // Java Gradle
39
- ];
40
- // Check primary markers first
41
- for (const marker of primaryMarkers) {
42
- if (existsSync(resolve(dir, marker))) {
43
- return dir;
44
- }
45
- }
46
- // Check secondary markers
47
- for (const marker of secondaryMarkers) {
48
- if (existsSync(resolve(dir, marker))) {
49
- return dir;
50
- }
51
- }
52
- // Check if we've reached the filesystem root
53
- const parent = dirname(dir);
54
- if (parent === dir) {
55
- return null;
56
- }
57
- // Recurse up the directory tree
58
- return findProjectRoot(parent);
59
- }
60
- /**
61
- * Normalize path to use forward slashes for consistency across platforms
62
- */
63
- function normalizePath(path) {
64
- // Normalize path separators to forward slashes for consistency
65
- return normalize(path).split(sep).join('/');
66
- }
67
- //# sourceMappingURL=project-scope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-scope.js","sourceRoot":"","sources":["../src/project-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAE5D;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAExC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;IACjD,OAAO,WAAW,cAAc,EAAE,CAAA;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,4CAA4C;IAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2CAA2C;IAC3C,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAC/C,MAAM,gBAAgB,GAAG;QACvB,YAAY,EAAE,OAAO;QACrB,QAAQ,EAAE,KAAK;QACf,gBAAgB,EAAE,SAAS;QAC3B,kBAAkB,EAAE,SAAS;QAC7B,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,OAAO;QAClB,SAAS,EAAE,aAAa;QACxB,cAAc,EAAE,cAAc;KAC/B,CAAA;IAED,8BAA8B;IAC9B,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO,GAAG,CAAA;QACZ,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO,GAAG,CAAA;QACZ,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,gCAAgC;IAChC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,+DAA+D;IAC/D,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC7C,CAAC"}