gencode-ai 0.1.1 → 0.1.2

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 (263) hide show
  1. package/.gencode/settings.local.json +7 -0
  2. package/README.md +11 -11
  3. package/dist/agent/agent.d.ts +42 -1
  4. package/dist/agent/agent.d.ts.map +1 -1
  5. package/dist/agent/agent.js +82 -15
  6. package/dist/agent/agent.js.map +1 -1
  7. package/dist/cli/components/App.d.ts +8 -1
  8. package/dist/cli/components/App.d.ts.map +1 -1
  9. package/dist/cli/components/App.js +231 -29
  10. package/dist/cli/components/App.js.map +1 -1
  11. package/dist/cli/components/CommandSuggestions.d.ts.map +1 -1
  12. package/dist/cli/components/CommandSuggestions.js +2 -0
  13. package/dist/cli/components/CommandSuggestions.js.map +1 -1
  14. package/dist/cli/components/Header.d.ts +1 -1
  15. package/dist/cli/components/Header.d.ts.map +1 -1
  16. package/dist/cli/components/Header.js +4 -6
  17. package/dist/cli/components/Header.js.map +1 -1
  18. package/dist/cli/components/Logo.d.ts +1 -0
  19. package/dist/cli/components/Logo.d.ts.map +1 -1
  20. package/dist/cli/components/Logo.js +16 -3
  21. package/dist/cli/components/Logo.js.map +1 -1
  22. package/dist/cli/components/Messages.d.ts +4 -4
  23. package/dist/cli/components/Messages.d.ts.map +1 -1
  24. package/dist/cli/components/Messages.js +51 -25
  25. package/dist/cli/components/Messages.js.map +1 -1
  26. package/dist/cli/components/PermissionPrompt.d.ts +60 -0
  27. package/dist/cli/components/PermissionPrompt.d.ts.map +1 -0
  28. package/dist/cli/components/PermissionPrompt.js +192 -0
  29. package/dist/cli/components/PermissionPrompt.js.map +1 -0
  30. package/dist/cli/components/ProviderManager.js +3 -3
  31. package/dist/cli/components/ProviderManager.js.map +1 -1
  32. package/dist/cli/components/Spinner.d.ts +7 -2
  33. package/dist/cli/components/Spinner.d.ts.map +1 -1
  34. package/dist/cli/components/Spinner.js +116 -25
  35. package/dist/cli/components/Spinner.js.map +1 -1
  36. package/dist/cli/components/TodoList.d.ts +7 -0
  37. package/dist/cli/components/TodoList.d.ts.map +1 -0
  38. package/dist/cli/components/TodoList.js +34 -0
  39. package/dist/cli/components/TodoList.js.map +1 -0
  40. package/dist/cli/components/index.d.ts +1 -0
  41. package/dist/cli/components/index.d.ts.map +1 -1
  42. package/dist/cli/components/index.js +1 -0
  43. package/dist/cli/components/index.js.map +1 -1
  44. package/dist/cli/index.js +47 -7
  45. package/dist/cli/index.js.map +1 -1
  46. package/dist/config/index.d.ts +13 -4
  47. package/dist/config/index.d.ts.map +1 -1
  48. package/dist/config/index.js +18 -3
  49. package/dist/config/index.js.map +1 -1
  50. package/dist/config/levels.d.ts +49 -0
  51. package/dist/config/levels.d.ts.map +1 -0
  52. package/dist/config/levels.js +222 -0
  53. package/dist/config/levels.js.map +1 -0
  54. package/dist/config/loader.d.ts +46 -0
  55. package/dist/config/loader.d.ts.map +1 -0
  56. package/dist/config/loader.js +153 -0
  57. package/dist/config/loader.js.map +1 -0
  58. package/dist/config/manager.d.ts +115 -15
  59. package/dist/config/manager.d.ts.map +1 -1
  60. package/dist/config/manager.js +260 -34
  61. package/dist/config/manager.js.map +1 -1
  62. package/dist/config/manager.test.d.ts +5 -0
  63. package/dist/config/manager.test.d.ts.map +1 -0
  64. package/dist/config/manager.test.js +192 -0
  65. package/dist/config/manager.test.js.map +1 -0
  66. package/dist/config/merger.d.ts +56 -0
  67. package/dist/config/merger.d.ts.map +1 -0
  68. package/dist/config/merger.js +177 -0
  69. package/dist/config/merger.js.map +1 -0
  70. package/dist/config/test-utils.d.ts +24 -0
  71. package/dist/config/test-utils.d.ts.map +1 -0
  72. package/dist/config/test-utils.js +55 -0
  73. package/dist/config/test-utils.js.map +1 -0
  74. package/dist/config/types.d.ts +78 -9
  75. package/dist/config/types.d.ts.map +1 -1
  76. package/dist/config/types.js +52 -2
  77. package/dist/config/types.js.map +1 -1
  78. package/dist/memory/import-resolver.d.ts +46 -0
  79. package/dist/memory/import-resolver.d.ts.map +1 -0
  80. package/dist/memory/import-resolver.js +117 -0
  81. package/dist/memory/import-resolver.js.map +1 -0
  82. package/dist/memory/index.d.ts +7 -6
  83. package/dist/memory/index.d.ts.map +1 -1
  84. package/dist/memory/index.js +7 -5
  85. package/dist/memory/index.js.map +1 -1
  86. package/dist/memory/init-prompt.d.ts +22 -0
  87. package/dist/memory/init-prompt.d.ts.map +1 -0
  88. package/dist/memory/init-prompt.js +103 -0
  89. package/dist/memory/init-prompt.js.map +1 -0
  90. package/dist/memory/memory-manager.d.ts +119 -0
  91. package/dist/memory/memory-manager.d.ts.map +1 -0
  92. package/dist/memory/memory-manager.js +587 -0
  93. package/dist/memory/memory-manager.js.map +1 -0
  94. package/dist/memory/rules-parser.d.ts +38 -0
  95. package/dist/memory/rules-parser.d.ts.map +1 -0
  96. package/dist/memory/rules-parser.js +69 -0
  97. package/dist/memory/rules-parser.js.map +1 -0
  98. package/dist/memory/test-utils.d.ts +20 -0
  99. package/dist/memory/test-utils.d.ts.map +1 -0
  100. package/dist/memory/test-utils.js +44 -0
  101. package/dist/memory/test-utils.js.map +1 -0
  102. package/dist/memory/types.d.ts +70 -63
  103. package/dist/memory/types.d.ts.map +1 -1
  104. package/dist/memory/types.js +42 -2
  105. package/dist/memory/types.js.map +1 -1
  106. package/dist/permissions/audit.d.ts +82 -0
  107. package/dist/permissions/audit.d.ts.map +1 -0
  108. package/dist/permissions/audit.js +229 -0
  109. package/dist/permissions/audit.js.map +1 -0
  110. package/dist/permissions/index.d.ts +11 -1
  111. package/dist/permissions/index.d.ts.map +1 -1
  112. package/dist/permissions/index.js +15 -0
  113. package/dist/permissions/index.js.map +1 -1
  114. package/dist/permissions/manager.d.ts +149 -13
  115. package/dist/permissions/manager.d.ts.map +1 -1
  116. package/dist/permissions/manager.js +480 -35
  117. package/dist/permissions/manager.js.map +1 -1
  118. package/dist/permissions/manager.test.d.ts +5 -0
  119. package/dist/permissions/manager.test.d.ts.map +1 -0
  120. package/dist/permissions/manager.test.js +213 -0
  121. package/dist/permissions/manager.test.js.map +1 -0
  122. package/dist/permissions/persistence.d.ts +74 -0
  123. package/dist/permissions/persistence.d.ts.map +1 -0
  124. package/dist/permissions/persistence.js +248 -0
  125. package/dist/permissions/persistence.js.map +1 -0
  126. package/dist/permissions/persistence.test.d.ts +5 -0
  127. package/dist/permissions/persistence.test.d.ts.map +1 -0
  128. package/dist/permissions/persistence.test.js +171 -0
  129. package/dist/permissions/persistence.test.js.map +1 -0
  130. package/dist/permissions/prompt-matcher.d.ts +64 -0
  131. package/dist/permissions/prompt-matcher.d.ts.map +1 -0
  132. package/dist/permissions/prompt-matcher.js +415 -0
  133. package/dist/permissions/prompt-matcher.js.map +1 -0
  134. package/dist/permissions/prompt-matcher.test.d.ts +5 -0
  135. package/dist/permissions/prompt-matcher.test.d.ts.map +1 -0
  136. package/dist/permissions/prompt-matcher.test.js +107 -0
  137. package/dist/permissions/prompt-matcher.test.js.map +1 -0
  138. package/dist/permissions/types.d.ts +157 -0
  139. package/dist/permissions/types.d.ts.map +1 -1
  140. package/dist/permissions/types.js +43 -8
  141. package/dist/permissions/types.js.map +1 -1
  142. package/dist/prompts/index.d.ts +92 -0
  143. package/dist/prompts/index.d.ts.map +1 -0
  144. package/dist/prompts/index.js +241 -0
  145. package/dist/prompts/index.js.map +1 -0
  146. package/dist/tools/builtin/bash.d.ts.map +1 -1
  147. package/dist/tools/builtin/bash.js +2 -1
  148. package/dist/tools/builtin/bash.js.map +1 -1
  149. package/dist/tools/builtin/edit.d.ts.map +1 -1
  150. package/dist/tools/builtin/edit.js +2 -1
  151. package/dist/tools/builtin/edit.js.map +1 -1
  152. package/dist/tools/builtin/glob.d.ts.map +1 -1
  153. package/dist/tools/builtin/glob.js +2 -1
  154. package/dist/tools/builtin/glob.js.map +1 -1
  155. package/dist/tools/builtin/grep.d.ts.map +1 -1
  156. package/dist/tools/builtin/grep.js +2 -1
  157. package/dist/tools/builtin/grep.js.map +1 -1
  158. package/dist/tools/builtin/read.d.ts.map +1 -1
  159. package/dist/tools/builtin/read.js +2 -1
  160. package/dist/tools/builtin/read.js.map +1 -1
  161. package/dist/tools/builtin/todowrite.d.ts +15 -0
  162. package/dist/tools/builtin/todowrite.d.ts.map +1 -0
  163. package/dist/tools/builtin/todowrite.js +88 -0
  164. package/dist/tools/builtin/todowrite.js.map +1 -0
  165. package/dist/tools/builtin/webfetch.d.ts.map +1 -1
  166. package/dist/tools/builtin/webfetch.js +2 -5
  167. package/dist/tools/builtin/webfetch.js.map +1 -1
  168. package/dist/tools/builtin/websearch.d.ts.map +1 -1
  169. package/dist/tools/builtin/websearch.js +2 -16
  170. package/dist/tools/builtin/websearch.js.map +1 -1
  171. package/dist/tools/builtin/write.d.ts.map +1 -1
  172. package/dist/tools/builtin/write.js +2 -1
  173. package/dist/tools/builtin/write.js.map +1 -1
  174. package/dist/tools/index.d.ts +7 -0
  175. package/dist/tools/index.d.ts.map +1 -1
  176. package/dist/tools/index.js +4 -0
  177. package/dist/tools/index.js.map +1 -1
  178. package/dist/tools/types.d.ts +22 -0
  179. package/dist/tools/types.d.ts.map +1 -1
  180. package/dist/tools/types.js +8 -0
  181. package/dist/tools/types.js.map +1 -1
  182. package/docs/config-system-comparison.md +707 -0
  183. package/docs/memory-system.md +238 -0
  184. package/docs/permissions.md +368 -0
  185. package/docs/proposals/0005-todo-system.md +350 -85
  186. package/docs/proposals/0006-memory-system.md +11 -10
  187. package/docs/proposals/0012-ask-user-question.md +941 -206
  188. package/docs/proposals/0023-permission-enhancements.md +61 -2
  189. package/docs/proposals/0041-configuration-system.md +33 -2
  190. package/docs/proposals/0042-prompt-optimization.md +866 -0
  191. package/docs/proposals/README.md +6 -5
  192. package/jest.config.js +26 -0
  193. package/package.json +8 -2
  194. package/src/agent/agent.ts +111 -16
  195. package/src/cli/components/App.tsx +309 -36
  196. package/src/cli/components/CommandSuggestions.tsx +2 -0
  197. package/src/cli/components/Header.tsx +11 -17
  198. package/src/cli/components/Logo.tsx +76 -9
  199. package/src/cli/components/Messages.tsx +73 -53
  200. package/src/cli/components/PermissionPrompt.tsx +388 -0
  201. package/src/cli/components/ProviderManager.tsx +5 -5
  202. package/src/cli/components/Spinner.tsx +138 -25
  203. package/src/cli/components/TodoList.tsx +54 -0
  204. package/src/cli/components/index.ts +6 -0
  205. package/src/cli/index.tsx +54 -6
  206. package/src/config/index.ts +78 -4
  207. package/src/config/levels.test.ts +163 -0
  208. package/src/config/levels.ts +285 -0
  209. package/src/config/loader.test.ts +120 -0
  210. package/src/config/loader.ts +178 -0
  211. package/src/config/manager.test.ts +215 -0
  212. package/src/config/manager.ts +328 -40
  213. package/src/config/merger.test.ts +360 -0
  214. package/src/config/merger.ts +221 -0
  215. package/src/config/test-utils.ts +79 -0
  216. package/src/config/types.ts +152 -9
  217. package/src/memory/import-resolver.test.ts +117 -0
  218. package/src/memory/import-resolver.ts +149 -0
  219. package/src/memory/index.ts +11 -0
  220. package/src/memory/init-prompt.ts +113 -0
  221. package/src/memory/memory-manager.test.ts +198 -0
  222. package/src/memory/memory-manager.ts +716 -0
  223. package/src/memory/rules-parser.test.ts +182 -0
  224. package/src/memory/rules-parser.ts +82 -0
  225. package/src/memory/test-utils.ts +60 -0
  226. package/src/memory/types.ts +119 -0
  227. package/src/permissions/audit.ts +284 -0
  228. package/src/permissions/index.ts +20 -1
  229. package/src/permissions/manager.test.ts +260 -0
  230. package/src/permissions/manager.ts +592 -40
  231. package/src/permissions/persistence.test.ts +220 -0
  232. package/src/permissions/persistence.ts +301 -0
  233. package/src/permissions/prompt-matcher.test.ts +213 -0
  234. package/src/permissions/prompt-matcher.ts +472 -0
  235. package/src/permissions/types.ts +236 -8
  236. package/src/prompts/index.test.ts +279 -0
  237. package/src/prompts/index.ts +306 -0
  238. package/src/prompts/system/anthropic.txt +29 -0
  239. package/src/prompts/system/base.txt +124 -0
  240. package/src/prompts/system/gemini.txt +35 -0
  241. package/src/prompts/system/generic.txt +128 -0
  242. package/src/prompts/system/openai.txt +29 -0
  243. package/src/prompts/tools/bash.txt +60 -0
  244. package/src/prompts/tools/edit.txt +29 -0
  245. package/src/prompts/tools/glob.txt +35 -0
  246. package/src/prompts/tools/grep.txt +43 -0
  247. package/src/prompts/tools/read.txt +22 -0
  248. package/src/prompts/tools/todowrite.txt +71 -0
  249. package/src/prompts/tools/webfetch.txt +34 -0
  250. package/src/prompts/tools/websearch.txt +41 -0
  251. package/src/prompts/tools/write.txt +23 -0
  252. package/src/tools/builtin/bash.ts +2 -1
  253. package/src/tools/builtin/edit.ts +2 -1
  254. package/src/tools/builtin/glob.ts +2 -1
  255. package/src/tools/builtin/grep.ts +2 -1
  256. package/src/tools/builtin/read.ts +2 -1
  257. package/src/tools/builtin/todowrite.ts +102 -0
  258. package/src/tools/builtin/webfetch.ts +2 -5
  259. package/src/tools/builtin/websearch.ts +2 -16
  260. package/src/tools/builtin/write.ts +2 -1
  261. package/src/tools/index.ts +4 -0
  262. package/src/tools/types.ts +12 -0
  263. package/tsconfig.json +1 -1
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Memory Manager Tests
3
+ */
4
+
5
+ import * as fs from 'fs/promises';
6
+ import * as path from 'path';
7
+ import { describe, it, expect, beforeEach, afterEach } from '@jest/globals';
8
+ import { MemoryManager } from './memory-manager.js';
9
+ import { DEFAULT_MEMORY_CONFIG } from './types.js';
10
+ import { createTestProject, writeMemory, type TestProject } from './test-utils.js';
11
+
12
+ describe('MemoryManager', () => {
13
+ describe('constructor', () => {
14
+ it('should use default config or accept custom config', () => {
15
+ expect(new MemoryManager()).toBeDefined();
16
+ expect(new MemoryManager({ maxFileSize: 50 * 1024 })).toBeDefined();
17
+ });
18
+ });
19
+
20
+ describe('getLoadedFileList', () => {
21
+ it('should return empty list when no files loaded', () => {
22
+ expect(new MemoryManager().getLoadedFileList()).toEqual([]);
23
+ });
24
+ });
25
+ });
26
+
27
+ describe('MemoryManager Integration', () => {
28
+ let test: TestProject;
29
+
30
+ beforeEach(async () => {
31
+ test = await createTestProject('gencode-memory-');
32
+ });
33
+
34
+ afterEach(() => test.cleanup());
35
+
36
+ describe('load', () => {
37
+ it('should load AGENT.md from .gencode directory', async () => {
38
+ await writeMemory(test.projectDir, 'gencode', '# GenCode\n\nTest content - MARKER_123');
39
+
40
+ const memory = await new MemoryManager().load({ cwd: test.projectDir });
41
+ const file = memory.files.find((f) => f.namespace === 'gencode' && f.level === 'project');
42
+
43
+ expect(file?.content).toContain('MARKER_123');
44
+ });
45
+
46
+ it('should load CLAUDE.md from .claude directory', async () => {
47
+ await writeMemory(test.projectDir, 'claude', '# Claude\n\nTest content - MARKER_456');
48
+
49
+ const memory = await new MemoryManager().load({ cwd: test.projectDir });
50
+ const file = memory.files.find((f) => f.namespace === 'claude' && f.level === 'project');
51
+
52
+ expect(file?.content).toContain('MARKER_456');
53
+ });
54
+
55
+ it('should load from both namespaces with correct order (claude first, gencode second)', async () => {
56
+ await writeMemory(test.projectDir, 'claude', '# Claude - ORDER_TEST');
57
+ await writeMemory(test.projectDir, 'gencode', '# GenCode - ORDER_TEST');
58
+
59
+ const memory = await new MemoryManager().load({ cwd: test.projectDir });
60
+ const projectFiles = memory.files.filter((f) => f.level === 'project');
61
+
62
+ const claudeIdx = projectFiles.findIndex((f) => f.namespace === 'claude');
63
+ const gencodeIdx = projectFiles.findIndex((f) => f.namespace === 'gencode');
64
+
65
+ expect(claudeIdx).toBeLessThan(gencodeIdx); // gencode appears later = higher priority
66
+ });
67
+
68
+ it('should load root-level AGENT.md and CLAUDE.md', async () => {
69
+ await writeMemory(test.projectDir, 'claude', '# Root Claude', { inDir: false });
70
+ await writeMemory(test.projectDir, 'gencode', '# Root GenCode', { inDir: false });
71
+
72
+ const memory = await new MemoryManager().load({ cwd: test.projectDir });
73
+
74
+ expect(memory.context).toContain('Root Claude');
75
+ expect(memory.context).toContain('Root GenCode');
76
+ });
77
+
78
+ it('should load local memory files', async () => {
79
+ await writeMemory(test.projectDir, 'gencode', '# Local Notes\n\nPersonal content', { local: true });
80
+
81
+ const memory = await new MemoryManager().load({ cwd: test.projectDir });
82
+ const localFile = memory.files.find((f) => f.level === 'local');
83
+
84
+ expect(localFile?.content).toContain('Personal content');
85
+ });
86
+
87
+ it('should load from extra config dirs', async () => {
88
+ const extraDir = path.join(test.tempDir, 'extra-config');
89
+ await fs.mkdir(extraDir, { recursive: true });
90
+ await fs.writeFile(path.join(extraDir, 'AGENT.md'), '# Extra\n\nShared team content');
91
+ process.env.GENCODE_CONFIG_DIRS = extraDir;
92
+
93
+ const memory = await new MemoryManager().load({ cwd: test.projectDir });
94
+ const extraFile = memory.files.find((f) => f.level === 'extra');
95
+
96
+ expect(extraFile?.content).toContain('Shared team content');
97
+ });
98
+ });
99
+
100
+ describe('getLoadedFileList', () => {
101
+ it('should return list with namespace information', async () => {
102
+ await writeMemory(test.projectDir, 'claude', '# Claude');
103
+ await writeMemory(test.projectDir, 'gencode', '# GenCode');
104
+
105
+ const manager = new MemoryManager();
106
+ await manager.load({ cwd: test.projectDir });
107
+ const list = manager.getLoadedFileList().filter((f) => f.level === 'project');
108
+
109
+ expect(list.find((f) => f.namespace === 'claude')).toBeDefined();
110
+ expect(list.find((f) => f.namespace === 'gencode')).toBeDefined();
111
+ });
112
+ });
113
+
114
+ describe('getDebugSummary', () => {
115
+ it('should return summary or indicate not loaded', async () => {
116
+ const manager = new MemoryManager();
117
+
118
+ expect(manager.getDebugSummary()).toBe('Memory not loaded');
119
+
120
+ await writeMemory(test.projectDir, 'gencode', '# Test');
121
+ await manager.load({ cwd: test.projectDir });
122
+
123
+ expect(manager.getDebugSummary()).toContain('Memory Sources');
124
+ });
125
+ });
126
+
127
+ describe('hasMemory', () => {
128
+ it('should return true when memory files exist', async () => {
129
+ await writeMemory(test.projectDir, 'gencode', '# Test', { inDir: false });
130
+
131
+ const manager = new MemoryManager();
132
+ await manager.load({ cwd: test.projectDir });
133
+
134
+ expect(manager.hasMemory()).toBe(true);
135
+ });
136
+
137
+ it('should return false when no memory loaded', () => {
138
+ expect(new MemoryManager().hasMemory()).toBe(false);
139
+ });
140
+ });
141
+
142
+ describe('hasProjectMemory', () => {
143
+ it('should detect memory files at various locations', async () => {
144
+ const manager = new MemoryManager();
145
+
146
+ // No memory initially
147
+ expect(await manager.hasProjectMemory(test.projectDir)).toBe(false);
148
+
149
+ // Root AGENT.md
150
+ await writeMemory(test.projectDir, 'gencode', '# Test', { inDir: false });
151
+ expect(await manager.hasProjectMemory(test.projectDir)).toBe(true);
152
+ });
153
+
154
+ it('should detect CLAUDE.md and .gencode/AGENT.md', async () => {
155
+ const manager = new MemoryManager();
156
+
157
+ await writeMemory(test.projectDir, 'claude', '# Claude', { inDir: false });
158
+ expect(await manager.hasProjectMemory(test.projectDir)).toBe(true);
159
+ });
160
+ });
161
+
162
+ describe('quickAdd', () => {
163
+ it('should create or append to AGENT.md', async () => {
164
+ const manager = new MemoryManager();
165
+
166
+ // Create new
167
+ const filePath = await manager.quickAdd('First content', 'project', test.projectDir);
168
+ expect(filePath).toBe(path.join(test.projectDir, 'AGENT.md'));
169
+ expect(await fs.readFile(filePath, 'utf-8')).toContain('First content');
170
+
171
+ // Append
172
+ await manager.quickAdd('Second content', 'project', test.projectDir);
173
+ const content = await fs.readFile(filePath, 'utf-8');
174
+ expect(content).toContain('First content');
175
+ expect(content).toContain('Second content');
176
+ });
177
+ });
178
+ });
179
+
180
+ describe('MemoryConfig', () => {
181
+ describe('DEFAULT_MEMORY_CONFIG', () => {
182
+ it('should have correct filenames and directories', () => {
183
+ expect(DEFAULT_MEMORY_CONFIG.gencodeFilename).toBe('AGENT.md');
184
+ expect(DEFAULT_MEMORY_CONFIG.claudeFilename).toBe('CLAUDE.md');
185
+ expect(DEFAULT_MEMORY_CONFIG.gencodeLocalFilename).toBe('AGENT.local.md');
186
+ expect(DEFAULT_MEMORY_CONFIG.claudeLocalFilename).toBe('CLAUDE.local.md');
187
+ expect(DEFAULT_MEMORY_CONFIG.gencodeDir).toBe('.gencode');
188
+ expect(DEFAULT_MEMORY_CONFIG.claudeDir).toBe('.claude');
189
+ expect(DEFAULT_MEMORY_CONFIG.rulesDir).toBe('rules');
190
+ });
191
+
192
+ it('should have reasonable size limits', () => {
193
+ expect(DEFAULT_MEMORY_CONFIG.maxFileSize).toBe(100 * 1024);
194
+ expect(DEFAULT_MEMORY_CONFIG.maxTotalSize).toBe(500 * 1024);
195
+ expect(DEFAULT_MEMORY_CONFIG.maxImportDepth).toBe(5);
196
+ });
197
+ });
198
+ });