gencode-ai 0.1.0 → 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 (356) hide show
  1. package/.gencode/settings.local.json +7 -0
  2. package/README.md +20 -102
  3. package/dist/agent/agent.d.ts +43 -2
  4. package/dist/agent/agent.d.ts.map +1 -1
  5. package/dist/agent/agent.js +90 -17
  6. package/dist/agent/agent.js.map +1 -1
  7. package/dist/agent/types.d.ts +9 -1
  8. package/dist/agent/types.d.ts.map +1 -1
  9. package/dist/cli/components/AllModelsSelector.d.ts +11 -0
  10. package/dist/cli/components/AllModelsSelector.d.ts.map +1 -0
  11. package/dist/cli/components/AllModelsSelector.js +153 -0
  12. package/dist/cli/components/AllModelsSelector.js.map +1 -0
  13. package/dist/cli/components/App.d.ts +8 -1
  14. package/dist/cli/components/App.d.ts.map +1 -1
  15. package/dist/cli/components/App.js +276 -40
  16. package/dist/cli/components/App.js.map +1 -1
  17. package/dist/cli/components/CommandSuggestions.d.ts.map +1 -1
  18. package/dist/cli/components/CommandSuggestions.js +3 -0
  19. package/dist/cli/components/CommandSuggestions.js.map +1 -1
  20. package/dist/cli/components/Header.d.ts +1 -1
  21. package/dist/cli/components/Header.d.ts.map +1 -1
  22. package/dist/cli/components/Header.js +4 -6
  23. package/dist/cli/components/Header.js.map +1 -1
  24. package/dist/cli/components/Logo.d.ts +1 -0
  25. package/dist/cli/components/Logo.d.ts.map +1 -1
  26. package/dist/cli/components/Logo.js +16 -3
  27. package/dist/cli/components/Logo.js.map +1 -1
  28. package/dist/cli/components/Messages.d.ts +17 -3
  29. package/dist/cli/components/Messages.d.ts.map +1 -1
  30. package/dist/cli/components/Messages.js +70 -18
  31. package/dist/cli/components/Messages.js.map +1 -1
  32. package/dist/cli/components/ModelSelector.d.ts +7 -7
  33. package/dist/cli/components/ModelSelector.d.ts.map +1 -1
  34. package/dist/cli/components/ModelSelector.js +116 -33
  35. package/dist/cli/components/ModelSelector.js.map +1 -1
  36. package/dist/cli/components/PermissionPrompt.d.ts +60 -0
  37. package/dist/cli/components/PermissionPrompt.d.ts.map +1 -0
  38. package/dist/cli/components/PermissionPrompt.js +192 -0
  39. package/dist/cli/components/PermissionPrompt.js.map +1 -0
  40. package/dist/cli/components/ProviderManager.d.ts +8 -0
  41. package/dist/cli/components/ProviderManager.d.ts.map +1 -0
  42. package/dist/cli/components/ProviderManager.js +280 -0
  43. package/dist/cli/components/ProviderManager.js.map +1 -0
  44. package/dist/cli/components/Spinner.d.ts +7 -2
  45. package/dist/cli/components/Spinner.d.ts.map +1 -1
  46. package/dist/cli/components/Spinner.js +116 -25
  47. package/dist/cli/components/Spinner.js.map +1 -1
  48. package/dist/cli/components/TodoList.d.ts +7 -0
  49. package/dist/cli/components/TodoList.d.ts.map +1 -0
  50. package/dist/cli/components/TodoList.js +34 -0
  51. package/dist/cli/components/TodoList.js.map +1 -0
  52. package/dist/cli/components/index.d.ts +1 -0
  53. package/dist/cli/components/index.d.ts.map +1 -1
  54. package/dist/cli/components/index.js +1 -0
  55. package/dist/cli/components/index.js.map +1 -1
  56. package/dist/cli/components/markdown.d.ts +9 -0
  57. package/dist/cli/components/markdown.d.ts.map +1 -0
  58. package/dist/cli/components/markdown.js +129 -0
  59. package/dist/cli/components/markdown.js.map +1 -0
  60. package/dist/cli/components/theme.d.ts +5 -0
  61. package/dist/cli/components/theme.d.ts.map +1 -1
  62. package/dist/cli/components/theme.js +7 -0
  63. package/dist/cli/components/theme.js.map +1 -1
  64. package/dist/cli/index.js +66 -12
  65. package/dist/cli/index.js.map +1 -1
  66. package/dist/config/index.d.ts +14 -4
  67. package/dist/config/index.d.ts.map +1 -1
  68. package/dist/config/index.js +19 -3
  69. package/dist/config/index.js.map +1 -1
  70. package/dist/config/levels.d.ts +49 -0
  71. package/dist/config/levels.d.ts.map +1 -0
  72. package/dist/config/levels.js +222 -0
  73. package/dist/config/levels.js.map +1 -0
  74. package/dist/config/loader.d.ts +46 -0
  75. package/dist/config/loader.d.ts.map +1 -0
  76. package/dist/config/loader.js +153 -0
  77. package/dist/config/loader.js.map +1 -0
  78. package/dist/config/manager.d.ts +115 -15
  79. package/dist/config/manager.d.ts.map +1 -1
  80. package/dist/config/manager.js +260 -34
  81. package/dist/config/manager.js.map +1 -1
  82. package/dist/config/manager.test.d.ts +5 -0
  83. package/dist/config/manager.test.d.ts.map +1 -0
  84. package/dist/config/manager.test.js +192 -0
  85. package/dist/config/manager.test.js.map +1 -0
  86. package/dist/config/merger.d.ts +56 -0
  87. package/dist/config/merger.d.ts.map +1 -0
  88. package/dist/config/merger.js +177 -0
  89. package/dist/config/merger.js.map +1 -0
  90. package/dist/config/providers-config.d.ts +28 -0
  91. package/dist/config/providers-config.d.ts.map +1 -0
  92. package/dist/config/providers-config.js +79 -0
  93. package/dist/config/providers-config.js.map +1 -0
  94. package/dist/config/test-utils.d.ts +24 -0
  95. package/dist/config/test-utils.d.ts.map +1 -0
  96. package/dist/config/test-utils.js +55 -0
  97. package/dist/config/test-utils.js.map +1 -0
  98. package/dist/config/types.d.ts +108 -9
  99. package/dist/config/types.d.ts.map +1 -1
  100. package/dist/config/types.js +53 -2
  101. package/dist/config/types.js.map +1 -1
  102. package/dist/memory/import-resolver.d.ts +46 -0
  103. package/dist/memory/import-resolver.d.ts.map +1 -0
  104. package/dist/memory/import-resolver.js +117 -0
  105. package/dist/memory/import-resolver.js.map +1 -0
  106. package/dist/memory/index.d.ts +7 -6
  107. package/dist/memory/index.d.ts.map +1 -1
  108. package/dist/memory/index.js +7 -5
  109. package/dist/memory/index.js.map +1 -1
  110. package/dist/memory/init-prompt.d.ts +22 -0
  111. package/dist/memory/init-prompt.d.ts.map +1 -0
  112. package/dist/memory/init-prompt.js +103 -0
  113. package/dist/memory/init-prompt.js.map +1 -0
  114. package/dist/memory/memory-manager.d.ts +119 -0
  115. package/dist/memory/memory-manager.d.ts.map +1 -0
  116. package/dist/memory/memory-manager.js +587 -0
  117. package/dist/memory/memory-manager.js.map +1 -0
  118. package/dist/memory/rules-parser.d.ts +38 -0
  119. package/dist/memory/rules-parser.d.ts.map +1 -0
  120. package/dist/memory/rules-parser.js +69 -0
  121. package/dist/memory/rules-parser.js.map +1 -0
  122. package/dist/memory/test-utils.d.ts +20 -0
  123. package/dist/memory/test-utils.d.ts.map +1 -0
  124. package/dist/memory/test-utils.js +44 -0
  125. package/dist/memory/test-utils.js.map +1 -0
  126. package/dist/memory/types.d.ts +70 -63
  127. package/dist/memory/types.d.ts.map +1 -1
  128. package/dist/memory/types.js +42 -2
  129. package/dist/memory/types.js.map +1 -1
  130. package/dist/permissions/audit.d.ts +82 -0
  131. package/dist/permissions/audit.d.ts.map +1 -0
  132. package/dist/permissions/audit.js +229 -0
  133. package/dist/permissions/audit.js.map +1 -0
  134. package/dist/permissions/index.d.ts +11 -1
  135. package/dist/permissions/index.d.ts.map +1 -1
  136. package/dist/permissions/index.js +15 -0
  137. package/dist/permissions/index.js.map +1 -1
  138. package/dist/permissions/manager.d.ts +149 -13
  139. package/dist/permissions/manager.d.ts.map +1 -1
  140. package/dist/permissions/manager.js +480 -35
  141. package/dist/permissions/manager.js.map +1 -1
  142. package/dist/permissions/manager.test.d.ts +5 -0
  143. package/dist/permissions/manager.test.d.ts.map +1 -0
  144. package/dist/permissions/manager.test.js +213 -0
  145. package/dist/permissions/manager.test.js.map +1 -0
  146. package/dist/permissions/persistence.d.ts +74 -0
  147. package/dist/permissions/persistence.d.ts.map +1 -0
  148. package/dist/permissions/persistence.js +248 -0
  149. package/dist/permissions/persistence.js.map +1 -0
  150. package/dist/permissions/persistence.test.d.ts +5 -0
  151. package/dist/permissions/persistence.test.d.ts.map +1 -0
  152. package/dist/permissions/persistence.test.js +171 -0
  153. package/dist/permissions/persistence.test.js.map +1 -0
  154. package/dist/permissions/prompt-matcher.d.ts +64 -0
  155. package/dist/permissions/prompt-matcher.d.ts.map +1 -0
  156. package/dist/permissions/prompt-matcher.js +415 -0
  157. package/dist/permissions/prompt-matcher.js.map +1 -0
  158. package/dist/permissions/prompt-matcher.test.d.ts +5 -0
  159. package/dist/permissions/prompt-matcher.test.d.ts.map +1 -0
  160. package/dist/permissions/prompt-matcher.test.js +107 -0
  161. package/dist/permissions/prompt-matcher.test.js.map +1 -0
  162. package/dist/permissions/types.d.ts +157 -0
  163. package/dist/permissions/types.d.ts.map +1 -1
  164. package/dist/permissions/types.js +43 -8
  165. package/dist/permissions/types.js.map +1 -1
  166. package/dist/prompts/index.d.ts +92 -0
  167. package/dist/prompts/index.d.ts.map +1 -0
  168. package/dist/prompts/index.js +241 -0
  169. package/dist/prompts/index.js.map +1 -0
  170. package/dist/providers/gemini.d.ts.map +1 -1
  171. package/dist/providers/gemini.js +14 -3
  172. package/dist/providers/gemini.js.map +1 -1
  173. package/dist/providers/index.d.ts +5 -3
  174. package/dist/providers/index.d.ts.map +1 -1
  175. package/dist/providers/index.js +13 -1
  176. package/dist/providers/index.js.map +1 -1
  177. package/dist/providers/registry.d.ts +66 -0
  178. package/dist/providers/registry.d.ts.map +1 -0
  179. package/dist/providers/registry.js +158 -0
  180. package/dist/providers/registry.js.map +1 -0
  181. package/dist/providers/search/brave.d.ts +14 -0
  182. package/dist/providers/search/brave.d.ts.map +1 -0
  183. package/dist/providers/search/brave.js +87 -0
  184. package/dist/providers/search/brave.js.map +1 -0
  185. package/dist/providers/search/exa.d.ts +12 -0
  186. package/dist/providers/search/exa.d.ts.map +1 -0
  187. package/dist/providers/search/exa.js +158 -0
  188. package/dist/providers/search/exa.js.map +1 -0
  189. package/dist/providers/search/index.d.ts +31 -0
  190. package/dist/providers/search/index.d.ts.map +1 -0
  191. package/dist/providers/search/index.js +75 -0
  192. package/dist/providers/search/index.js.map +1 -0
  193. package/dist/providers/search/serper.d.ts +14 -0
  194. package/dist/providers/search/serper.d.ts.map +1 -0
  195. package/dist/providers/search/serper.js +87 -0
  196. package/dist/providers/search/serper.js.map +1 -0
  197. package/dist/providers/search/types.d.ts +21 -0
  198. package/dist/providers/search/types.d.ts.map +1 -0
  199. package/dist/providers/search/types.js +5 -0
  200. package/dist/providers/search/types.js.map +1 -0
  201. package/dist/providers/store.d.ts +104 -0
  202. package/dist/providers/store.d.ts.map +1 -0
  203. package/dist/providers/store.js +171 -0
  204. package/dist/providers/store.js.map +1 -0
  205. package/dist/providers/types.d.ts +7 -1
  206. package/dist/providers/types.d.ts.map +1 -1
  207. package/dist/providers/vertex-ai.d.ts +33 -0
  208. package/dist/providers/vertex-ai.d.ts.map +1 -0
  209. package/dist/providers/vertex-ai.js +407 -0
  210. package/dist/providers/vertex-ai.js.map +1 -0
  211. package/dist/tools/builtin/bash.d.ts.map +1 -1
  212. package/dist/tools/builtin/bash.js +2 -1
  213. package/dist/tools/builtin/bash.js.map +1 -1
  214. package/dist/tools/builtin/edit.d.ts.map +1 -1
  215. package/dist/tools/builtin/edit.js +2 -1
  216. package/dist/tools/builtin/edit.js.map +1 -1
  217. package/dist/tools/builtin/glob.d.ts.map +1 -1
  218. package/dist/tools/builtin/glob.js +2 -1
  219. package/dist/tools/builtin/glob.js.map +1 -1
  220. package/dist/tools/builtin/grep.d.ts.map +1 -1
  221. package/dist/tools/builtin/grep.js +2 -1
  222. package/dist/tools/builtin/grep.js.map +1 -1
  223. package/dist/tools/builtin/read.d.ts.map +1 -1
  224. package/dist/tools/builtin/read.js +2 -1
  225. package/dist/tools/builtin/read.js.map +1 -1
  226. package/dist/tools/builtin/todowrite.d.ts +15 -0
  227. package/dist/tools/builtin/todowrite.d.ts.map +1 -0
  228. package/dist/tools/builtin/todowrite.js +88 -0
  229. package/dist/tools/builtin/todowrite.js.map +1 -0
  230. package/dist/tools/builtin/webfetch.d.ts +20 -0
  231. package/dist/tools/builtin/webfetch.d.ts.map +1 -0
  232. package/dist/tools/builtin/webfetch.js +228 -0
  233. package/dist/tools/builtin/webfetch.js.map +1 -0
  234. package/dist/tools/builtin/websearch.d.ts +17 -0
  235. package/dist/tools/builtin/websearch.d.ts.map +1 -0
  236. package/dist/tools/builtin/websearch.js +87 -0
  237. package/dist/tools/builtin/websearch.js.map +1 -0
  238. package/dist/tools/builtin/write.d.ts.map +1 -1
  239. package/dist/tools/builtin/write.js +2 -1
  240. package/dist/tools/builtin/write.js.map +1 -1
  241. package/dist/tools/index.d.ts +18 -0
  242. package/dist/tools/index.d.ts.map +1 -1
  243. package/dist/tools/index.js +28 -2
  244. package/dist/tools/index.js.map +1 -1
  245. package/dist/tools/types.d.ts +41 -0
  246. package/dist/tools/types.d.ts.map +1 -1
  247. package/dist/tools/types.js +16 -0
  248. package/dist/tools/types.js.map +1 -1
  249. package/dist/tools/utils/ssrf.d.ts +18 -0
  250. package/dist/tools/utils/ssrf.d.ts.map +1 -0
  251. package/dist/tools/utils/ssrf.js +70 -0
  252. package/dist/tools/utils/ssrf.js.map +1 -0
  253. package/docs/README.md +5 -4
  254. package/docs/config-system-comparison.md +707 -0
  255. package/docs/memory-system.md +238 -0
  256. package/docs/permissions.md +368 -0
  257. package/docs/proposals/0001-web-fetch-tool.md +32 -2
  258. package/docs/proposals/0002-web-search-tool.md +59 -2
  259. package/docs/proposals/0005-todo-system.md +350 -85
  260. package/docs/proposals/0006-memory-system.md +11 -10
  261. package/docs/proposals/0012-ask-user-question.md +941 -206
  262. package/docs/proposals/0023-permission-enhancements.md +61 -2
  263. package/docs/proposals/0041-configuration-system.md +587 -0
  264. package/docs/proposals/0042-prompt-optimization.md +866 -0
  265. package/docs/proposals/README.md +8 -6
  266. package/docs/providers.md +220 -0
  267. package/jest.config.js +26 -0
  268. package/package.json +14 -3
  269. package/src/agent/agent.ts +120 -18
  270. package/src/agent/types.ts +9 -1
  271. package/src/cli/components/App.tsx +369 -47
  272. package/src/cli/components/CommandSuggestions.tsx +3 -0
  273. package/src/cli/components/Header.tsx +11 -17
  274. package/src/cli/components/Logo.tsx +76 -9
  275. package/src/cli/components/Messages.tsx +146 -38
  276. package/src/cli/components/ModelSelector.tsx +169 -52
  277. package/src/cli/components/PermissionPrompt.tsx +388 -0
  278. package/src/cli/components/ProviderManager.tsx +534 -0
  279. package/src/cli/components/Spinner.tsx +138 -25
  280. package/src/cli/components/TodoList.tsx +54 -0
  281. package/src/cli/components/index.ts +6 -0
  282. package/src/cli/components/markdown.ts +157 -0
  283. package/src/cli/components/theme.ts +7 -0
  284. package/src/cli/index.tsx +76 -13
  285. package/src/config/index.ts +79 -4
  286. package/src/config/levels.test.ts +163 -0
  287. package/src/config/levels.ts +285 -0
  288. package/src/config/loader.test.ts +120 -0
  289. package/src/config/loader.ts +178 -0
  290. package/src/config/manager.test.ts +215 -0
  291. package/src/config/manager.ts +328 -40
  292. package/src/config/merger.test.ts +360 -0
  293. package/src/config/merger.ts +221 -0
  294. package/src/config/providers-config.ts +85 -0
  295. package/src/config/test-utils.ts +79 -0
  296. package/src/config/types.ts +186 -9
  297. package/src/memory/import-resolver.test.ts +117 -0
  298. package/src/memory/import-resolver.ts +149 -0
  299. package/src/memory/index.ts +11 -0
  300. package/src/memory/init-prompt.ts +113 -0
  301. package/src/memory/memory-manager.test.ts +198 -0
  302. package/src/memory/memory-manager.ts +716 -0
  303. package/src/memory/rules-parser.test.ts +182 -0
  304. package/src/memory/rules-parser.ts +82 -0
  305. package/src/memory/test-utils.ts +60 -0
  306. package/src/memory/types.ts +119 -0
  307. package/src/permissions/audit.ts +284 -0
  308. package/src/permissions/index.ts +20 -1
  309. package/src/permissions/manager.test.ts +260 -0
  310. package/src/permissions/manager.ts +592 -40
  311. package/src/permissions/persistence.test.ts +220 -0
  312. package/src/permissions/persistence.ts +301 -0
  313. package/src/permissions/prompt-matcher.test.ts +213 -0
  314. package/src/permissions/prompt-matcher.ts +472 -0
  315. package/src/permissions/types.ts +236 -8
  316. package/src/prompts/index.test.ts +279 -0
  317. package/src/prompts/index.ts +306 -0
  318. package/src/prompts/system/anthropic.txt +29 -0
  319. package/src/prompts/system/base.txt +124 -0
  320. package/src/prompts/system/gemini.txt +35 -0
  321. package/src/prompts/system/generic.txt +128 -0
  322. package/src/prompts/system/openai.txt +29 -0
  323. package/src/prompts/tools/bash.txt +60 -0
  324. package/src/prompts/tools/edit.txt +29 -0
  325. package/src/prompts/tools/glob.txt +35 -0
  326. package/src/prompts/tools/grep.txt +43 -0
  327. package/src/prompts/tools/read.txt +22 -0
  328. package/src/prompts/tools/todowrite.txt +71 -0
  329. package/src/prompts/tools/webfetch.txt +34 -0
  330. package/src/prompts/tools/websearch.txt +41 -0
  331. package/src/prompts/tools/write.txt +23 -0
  332. package/src/providers/gemini.ts +20 -4
  333. package/src/providers/index.ts +18 -3
  334. package/src/providers/registry.ts +198 -0
  335. package/src/providers/search/brave.ts +132 -0
  336. package/src/providers/search/exa.ts +217 -0
  337. package/src/providers/search/index.ts +79 -0
  338. package/src/providers/search/serper.ts +133 -0
  339. package/src/providers/search/types.ts +24 -0
  340. package/src/providers/store.ts +216 -0
  341. package/src/providers/types.ts +9 -1
  342. package/src/providers/vertex-ai.ts +594 -0
  343. package/src/tools/builtin/bash.ts +2 -1
  344. package/src/tools/builtin/edit.ts +2 -1
  345. package/src/tools/builtin/glob.ts +2 -1
  346. package/src/tools/builtin/grep.ts +2 -1
  347. package/src/tools/builtin/read.ts +2 -1
  348. package/src/tools/builtin/todowrite.ts +102 -0
  349. package/src/tools/builtin/webfetch.ts +261 -0
  350. package/src/tools/builtin/websearch.ts +103 -0
  351. package/src/tools/builtin/write.ts +2 -1
  352. package/src/tools/index.ts +28 -2
  353. package/src/tools/types.ts +32 -0
  354. package/src/tools/utils/ssrf.ts +79 -0
  355. package/tsconfig.json +1 -1
  356. package/CLAUDE.md +0 -70
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/config/test-utils.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,121 @@
1
1
  /**
2
- * Settings Types - User settings persistence (Claude Code style)
2
+ * Configuration Types - Multi-level configuration system (Claude Code compatible)
3
+ *
4
+ * Configuration hierarchy (priority from low to high):
5
+ * 1. User Level: ~/.gencode/ + ~/.claude/ (merged, gencode wins)
6
+ * 2. Extra Dirs: GENCODE_CONFIG_DIRS environment variable
7
+ * 3. Project Level: .gencode/ + .claude/ (merged, gencode wins)
8
+ * 4. Local Level: .gencode/*.local.* + .claude/*.local.* (merged, gencode wins)
9
+ * 5. CLI Arguments: Command line overrides
10
+ * 6. Managed Level: System-wide enforced settings (cannot be overridden)
3
11
  */
4
- export type ProviderName = 'openai' | 'anthropic' | 'gemini';
12
+ export type ProviderName = 'openai' | 'anthropic' | 'gemini' | 'vertex-ai';
5
13
  /**
6
- * Settings file structure (~/.gencode/settings.json)
7
- * Similar to Claude Code's settings.json
14
+ * Permission rules for tools
15
+ */
16
+ export interface PermissionRules {
17
+ allow?: string[];
18
+ ask?: string[];
19
+ deny?: string[];
20
+ }
21
+ /**
22
+ * Settings file structure
23
+ * Compatible with Claude Code's settings.json
8
24
  */
9
25
  export interface Settings {
10
26
  model?: string;
11
27
  provider?: ProviderName;
12
- permissions?: {
13
- allow?: string[];
14
- deny?: string[];
28
+ permissions?: PermissionRules;
29
+ theme?: string;
30
+ language?: string;
31
+ alwaysThinkingEnabled?: boolean;
32
+ env?: Record<string, string>;
33
+ attribution?: {
34
+ commit?: string;
35
+ pr?: string;
15
36
  };
37
+ enabledPlugins?: Record<string, boolean>;
38
+ extraKnownMarketplaces?: Record<string, unknown>;
39
+ strictKnownMarketplaces?: unknown[];
40
+ [key: string]: unknown;
41
+ }
42
+ /**
43
+ * Configuration level identifiers
44
+ */
45
+ export type ConfigLevelType = 'managed' | 'user' | 'extra' | 'project' | 'local' | 'cli';
46
+ /**
47
+ * Represents a configuration level with its metadata
48
+ */
49
+ export interface ConfigLevel {
50
+ type: ConfigLevelType;
51
+ priority: number;
52
+ paths: string[];
53
+ description: string;
54
+ }
55
+ /**
56
+ * A loaded configuration source
57
+ */
58
+ export interface ConfigSource {
59
+ level: ConfigLevelType;
60
+ path: string;
61
+ namespace: 'gencode' | 'claude' | 'extra';
62
+ settings: Settings;
63
+ }
64
+ /**
65
+ * Result of merging all configuration sources
66
+ */
67
+ export interface MergedConfig {
68
+ settings: Settings;
69
+ sources: ConfigSource[];
70
+ managedDeny: string[];
16
71
  }
72
+ export declare const GENCODE_CONFIG_DIRS_ENV = "GENCODE_CONFIG_DIRS";
73
+ export declare const SETTINGS_FILE_NAME = "settings.json";
74
+ export declare const SETTINGS_LOCAL_FILE_NAME = "settings.local.json";
75
+ export declare const MANAGED_SETTINGS_FILE_NAME = "managed-settings.json";
76
+ export declare const PROVIDERS_FILE_NAME = "providers.json";
77
+ export declare const GENCODE_DIR = ".gencode";
78
+ export declare const CLAUDE_DIR = ".claude";
79
+ export declare const USER_GENCODE_DIR: string;
80
+ export declare const USER_CLAUDE_DIR: string;
81
+ export declare function getManagedPaths(): {
82
+ gencode: string;
83
+ claude: string;
84
+ };
17
85
  export interface SettingsManagerOptions {
18
86
  settingsDir?: string;
19
87
  }
20
- export declare const DEFAULT_SETTINGS_DIR = "~/.gencode";
21
- export declare const SETTINGS_FILE_NAME = "settings.json";
88
+ export declare const DEFAULT_SETTINGS_DIR = "~/.claude";
89
+ export declare const PROJECT_SETTINGS_DIR = ".claude";
90
+ export declare const FALLBACK_SETTINGS_DIR = "~/.gencode";
91
+ export declare const FALLBACK_PROJECT_DIR = ".gencode";
92
+ /**
93
+ * Provider connection info
94
+ */
95
+ export interface ProviderConnection {
96
+ method: 'api_key' | 'vertex' | 'oauth';
97
+ connectedAt: string;
98
+ }
99
+ /**
100
+ * Cached model info
101
+ */
102
+ export interface CachedModel {
103
+ id: string;
104
+ name: string;
105
+ description?: string;
106
+ }
107
+ /**
108
+ * Cached models for a provider
109
+ */
110
+ export interface ProviderModels {
111
+ cachedAt: string;
112
+ list: CachedModel[];
113
+ }
114
+ /**
115
+ * Providers config file structure (~/.gencode/providers.json)
116
+ */
117
+ export interface ProvidersConfig {
118
+ connections: Record<string, ProviderConnection>;
119
+ models: Record<string, ProviderModels>;
120
+ }
22
121
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,CAAC,EAAE;QACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,kBAAkB,kBAAkB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAM3E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IAEvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,YAAY,CAAC;IAGxB,WAAW,CAAC,EAAE,eAAe,CAAC;IAG9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAGhC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG7B,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IAGF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGjD,uBAAuB,CAAC,EAAE,OAAO,EAAE,CAAC;IAGpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AAEzF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAMD,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAG7D,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAClE,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAGpD,eAAO,MAAM,WAAW,aAAa,CAAC;AACtC,eAAO,MAAM,UAAU,YAAY,CAAC;AAGpC,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AACrE,eAAO,MAAM,eAAe,QAAsC,CAAC;AAGnE,wBAAgB,eAAe,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAoBrE;AAMD,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAChD,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAM/C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxC"}
@@ -1,6 +1,57 @@
1
1
  /**
2
- * Settings Types - User settings persistence (Claude Code style)
2
+ * Configuration Types - Multi-level configuration system (Claude Code compatible)
3
+ *
4
+ * Configuration hierarchy (priority from low to high):
5
+ * 1. User Level: ~/.gencode/ + ~/.claude/ (merged, gencode wins)
6
+ * 2. Extra Dirs: GENCODE_CONFIG_DIRS environment variable
7
+ * 3. Project Level: .gencode/ + .claude/ (merged, gencode wins)
8
+ * 4. Local Level: .gencode/*.local.* + .claude/*.local.* (merged, gencode wins)
9
+ * 5. CLI Arguments: Command line overrides
10
+ * 6. Managed Level: System-wide enforced settings (cannot be overridden)
3
11
  */
4
- export const DEFAULT_SETTINGS_DIR = '~/.gencode';
12
+ import * as os from 'os';
13
+ import * as path from 'path';
14
+ // =============================================================================
15
+ // Constants
16
+ // =============================================================================
17
+ export const GENCODE_CONFIG_DIRS_ENV = 'GENCODE_CONFIG_DIRS';
18
+ // File names
5
19
  export const SETTINGS_FILE_NAME = 'settings.json';
20
+ export const SETTINGS_LOCAL_FILE_NAME = 'settings.local.json';
21
+ export const MANAGED_SETTINGS_FILE_NAME = 'managed-settings.json';
22
+ export const PROVIDERS_FILE_NAME = 'providers.json';
23
+ // Directory names
24
+ export const GENCODE_DIR = '.gencode';
25
+ export const CLAUDE_DIR = '.claude';
26
+ // User directory paths
27
+ export const USER_GENCODE_DIR = path.join(os.homedir(), GENCODE_DIR);
28
+ export const USER_CLAUDE_DIR = path.join(os.homedir(), CLAUDE_DIR);
29
+ // Managed settings locations by platform
30
+ export function getManagedPaths() {
31
+ const platform = os.platform();
32
+ if (platform === 'darwin') {
33
+ return {
34
+ gencode: '/Library/Application Support/GenCode',
35
+ claude: '/Library/Application Support/ClaudeCode',
36
+ };
37
+ }
38
+ else if (platform === 'win32') {
39
+ return {
40
+ gencode: 'C:\\Program Files\\GenCode',
41
+ claude: 'C:\\Program Files\\ClaudeCode',
42
+ };
43
+ }
44
+ else {
45
+ // Linux and other Unix-like systems
46
+ return {
47
+ gencode: '/etc/gencode',
48
+ claude: '/etc/claude-code',
49
+ };
50
+ }
51
+ }
52
+ // Legacy exports
53
+ export const DEFAULT_SETTINGS_DIR = '~/.claude';
54
+ export const PROJECT_SETTINGS_DIR = '.claude';
55
+ export const FALLBACK_SETTINGS_DIR = '~/.gencode';
56
+ export const FALLBACK_PROJECT_DIR = '.gencode';
6
57
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAgG7B,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAE7D,aAAa;AACb,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAClD,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAClE,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAEpD,kBAAkB;AAClB,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;AACtC,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AAEpC,uBAAuB;AACvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAEnE,yCAAyC;AACzC,MAAM,UAAU,eAAe;IAC7B,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE/B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,sCAAsC;YAC/C,MAAM,EAAE,yCAAyC;SAClD,CAAC;IACJ,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,4BAA4B;YACrC,MAAM,EAAE,+BAA+B;SACxC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,oCAAoC;QACpC,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,MAAM,EAAE,kBAAkB;SAC3B,CAAC;IACJ,CAAC;AACH,CAAC;AAUD,iBAAiB;AACjB,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAChD,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAC9C,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAClD,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Import Resolver - Handle @import syntax in memory files
3
+ *
4
+ * Supports:
5
+ * - @path/to/file.md - Relative imports
6
+ * - @./file.md - Current directory imports
7
+ * - @../parent/file.md - Parent directory imports
8
+ *
9
+ * Security:
10
+ * - Circular import detection
11
+ * - Max depth limit (5 levels)
12
+ * - Path traversal protection
13
+ */
14
+ import type { MemoryConfig } from './types.js';
15
+ export interface ImportResult {
16
+ content: string;
17
+ importedPaths: string[];
18
+ errors: string[];
19
+ }
20
+ export declare class ImportResolver {
21
+ private config;
22
+ private resolvedPaths;
23
+ private projectRoot;
24
+ constructor(config: MemoryConfig);
25
+ /**
26
+ * Set the project root for path traversal protection
27
+ */
28
+ setProjectRoot(root: string): void;
29
+ /**
30
+ * Resolve all @imports in content
31
+ */
32
+ resolve(content: string, basePath: string, depth?: number): Promise<ImportResult>;
33
+ /**
34
+ * Resolve import path to absolute path
35
+ */
36
+ private resolvePath;
37
+ /**
38
+ * Check if path is safe (within project or home directory)
39
+ */
40
+ private isPathSafe;
41
+ /**
42
+ * Reset resolver state for new file
43
+ */
44
+ reset(): void;
45
+ }
46
+ //# sourceMappingURL=import-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-resolver.d.ts","sourceRoot":"","sources":["../../src/memory/import-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,WAAW,CAAc;gBAErB,MAAM,EAAE,YAAY;IAIhC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,YAAY,CAAC;IAiExB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAiBlB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Import Resolver - Handle @import syntax in memory files
3
+ *
4
+ * Supports:
5
+ * - @path/to/file.md - Relative imports
6
+ * - @./file.md - Current directory imports
7
+ * - @../parent/file.md - Parent directory imports
8
+ *
9
+ * Security:
10
+ * - Circular import detection
11
+ * - Max depth limit (5 levels)
12
+ * - Path traversal protection
13
+ */
14
+ import * as fs from 'fs/promises';
15
+ import * as path from 'path';
16
+ export class ImportResolver {
17
+ config;
18
+ resolvedPaths = new Set();
19
+ projectRoot = '';
20
+ constructor(config) {
21
+ this.config = config;
22
+ }
23
+ /**
24
+ * Set the project root for path traversal protection
25
+ */
26
+ setProjectRoot(root) {
27
+ this.projectRoot = root;
28
+ }
29
+ /**
30
+ * Resolve all @imports in content
31
+ */
32
+ async resolve(content, basePath, depth = 0) {
33
+ const importedPaths = [];
34
+ const errors = [];
35
+ if (depth >= this.config.maxImportDepth) {
36
+ errors.push(`Max import depth (${this.config.maxImportDepth}) exceeded`);
37
+ return { content, importedPaths, errors };
38
+ }
39
+ // Match @import lines: lines starting with @ followed by a path
40
+ // Pattern: @path/to/file or @./file or @../file
41
+ const importRegex = /^@([^\s]+\.md)$/gm;
42
+ let resolvedContent = content;
43
+ const matches = [...content.matchAll(importRegex)];
44
+ for (const match of matches) {
45
+ const importPath = match[1].trim();
46
+ const absolutePath = this.resolvePath(importPath, basePath);
47
+ // Circular import detection
48
+ if (this.resolvedPaths.has(absolutePath)) {
49
+ errors.push(`Circular import detected: ${importPath}`);
50
+ resolvedContent = resolvedContent.replace(match[0], `<!-- Circular import: ${importPath} -->`);
51
+ continue;
52
+ }
53
+ // Path traversal security check
54
+ if (!this.isPathSafe(absolutePath)) {
55
+ errors.push(`Import path outside allowed scope: ${importPath}`);
56
+ resolvedContent = resolvedContent.replace(match[0], `<!-- Blocked import: ${importPath} -->`);
57
+ continue;
58
+ }
59
+ try {
60
+ const stat = await fs.stat(absolutePath);
61
+ // Size limit check
62
+ if (stat.size > this.config.maxFileSize) {
63
+ errors.push(`Import too large (${Math.round(stat.size / 1024)}KB): ${importPath}`);
64
+ resolvedContent = resolvedContent.replace(match[0], `<!-- Import too large: ${importPath} -->`);
65
+ continue;
66
+ }
67
+ this.resolvedPaths.add(absolutePath);
68
+ let importedContent = await fs.readFile(absolutePath, 'utf-8');
69
+ importedPaths.push(absolutePath);
70
+ // Recursively resolve imports in the imported file
71
+ const nested = await this.resolve(importedContent, path.dirname(absolutePath), depth + 1);
72
+ importedContent = nested.content;
73
+ importedPaths.push(...nested.importedPaths);
74
+ errors.push(...nested.errors);
75
+ // Replace @import with content
76
+ resolvedContent = resolvedContent.replace(match[0], importedContent);
77
+ }
78
+ catch {
79
+ errors.push(`Failed to import: ${importPath}`);
80
+ resolvedContent = resolvedContent.replace(match[0], `<!-- Failed to import: ${importPath} -->`);
81
+ }
82
+ }
83
+ return { content: resolvedContent, importedPaths, errors };
84
+ }
85
+ /**
86
+ * Resolve import path to absolute path
87
+ */
88
+ resolvePath(importPath, basePath) {
89
+ if (path.isAbsolute(importPath)) {
90
+ return importPath;
91
+ }
92
+ return path.resolve(basePath, importPath);
93
+ }
94
+ /**
95
+ * Check if path is safe (within project or home directory)
96
+ */
97
+ isPathSafe(targetPath) {
98
+ const home = process.env.HOME || '';
99
+ const normalized = path.normalize(targetPath);
100
+ // Allow imports within project root
101
+ if (this.projectRoot && normalized.startsWith(this.projectRoot)) {
102
+ return true;
103
+ }
104
+ // Allow imports from home directory (for user-level imports)
105
+ if (home && normalized.startsWith(home)) {
106
+ return true;
107
+ }
108
+ return false;
109
+ }
110
+ /**
111
+ * Reset resolver state for new file
112
+ */
113
+ reset() {
114
+ this.resolvedPaths.clear();
115
+ }
116
+ }
117
+ //# sourceMappingURL=import-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../src/memory/import-resolver.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  /**
2
- * Memory System Module
2
+ * Memory System - Claude Code compatible memory management
3
3
  *
4
- * Provides context management for AI conversations through
5
- * hierarchical memory files (CLAUDE.md, AGENT.md, etc.)
4
+ * Provides hierarchical memory loading with AGENT.md (primary) and CLAUDE.md (fallback)
6
5
  */
7
- export { MemoryManager } from './manager.js';
8
- export { analyzeProject, generateMemoryContent, runInit } from './init.js';
9
- export type { MemoryFile, MemoryType, ProjectAnalysis, InitOptions, InitResult, ConflictResolution, } from './types.js';
6
+ export * from './types.js';
7
+ export { MemoryManager } from './memory-manager.js';
8
+ export { ImportResolver } from './import-resolver.js';
9
+ export { parseRuleFrontmatter, matchesPatterns, activateRules, getActiveRules } from './rules-parser.js';
10
+ export { gatherContextFiles, buildInitPrompt, getContextSummary } from './init-prompt.js';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3E,YAAY,EACV,UAAU,EACV,UAAU,EACV,eAAe,EACf,WAAW,EACX,UAAU,EACV,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,9 +1,11 @@
1
1
  /**
2
- * Memory System Module
2
+ * Memory System - Claude Code compatible memory management
3
3
  *
4
- * Provides context management for AI conversations through
5
- * hierarchical memory files (CLAUDE.md, AGENT.md, etc.)
4
+ * Provides hierarchical memory loading with AGENT.md (primary) and CLAUDE.md (fallback)
6
5
  */
7
- export { MemoryManager } from './manager.js';
8
- export { analyzeProject, generateMemoryContent, runInit } from './init.js';
6
+ export * from './types.js';
7
+ export { MemoryManager } from './memory-manager.js';
8
+ export { ImportResolver } from './import-resolver.js';
9
+ export { parseRuleFrontmatter, matchesPatterns, activateRules, getActiveRules } from './rules-parser.js';
10
+ export { gatherContextFiles, buildInitPrompt, getContextSummary } from './init-prompt.js';
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Init Prompt Builder - Generate prompts for /init command
3
+ *
4
+ * Gathers context files (package.json, README.md, etc.) and builds
5
+ * a prompt for the AI to generate AGENT.md
6
+ */
7
+ export interface ContextFiles {
8
+ [path: string]: string;
9
+ }
10
+ /**
11
+ * Gather context files for project analysis
12
+ */
13
+ export declare function gatherContextFiles(cwd: string): Promise<ContextFiles>;
14
+ /**
15
+ * Build the init prompt for generating AGENT.md
16
+ */
17
+ export declare function buildInitPrompt(contextFiles: ContextFiles, existingAgentMd?: string): string;
18
+ /**
19
+ * Get a summary of files found for user feedback
20
+ */
21
+ export declare function getContextSummary(contextFiles: ContextFiles): string;
22
+ //# sourceMappingURL=init-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-prompt.d.ts","sourceRoot":"","sources":["../../src/memory/init-prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,YAAY;IAC3B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAyC3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAqC5F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAMpE"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Init Prompt Builder - Generate prompts for /init command
3
+ *
4
+ * Gathers context files (package.json, README.md, etc.) and builds
5
+ * a prompt for the AI to generate AGENT.md
6
+ */
7
+ import * as fs from 'fs/promises';
8
+ import * as path from 'path';
9
+ import { glob } from 'glob';
10
+ /**
11
+ * Gather context files for project analysis
12
+ */
13
+ export async function gatherContextFiles(cwd) {
14
+ const patterns = [
15
+ 'package.json',
16
+ 'README.md',
17
+ 'CONTRIBUTING.md',
18
+ '.cursor/rules/**/*.md',
19
+ '.cursorrules',
20
+ '.github/copilot-instructions.md',
21
+ 'Cargo.toml',
22
+ 'go.mod',
23
+ 'pyproject.toml',
24
+ 'tsconfig.json',
25
+ 'Makefile',
26
+ 'docker-compose.yml',
27
+ 'docker-compose.yaml',
28
+ ];
29
+ const files = {};
30
+ for (const pattern of patterns) {
31
+ try {
32
+ const matches = await glob(pattern, { cwd, absolute: false });
33
+ for (const match of matches.slice(0, 3)) {
34
+ // Limit per pattern
35
+ try {
36
+ const filePath = path.join(cwd, match);
37
+ const content = await fs.readFile(filePath, 'utf-8');
38
+ if (content.length < 50000) {
39
+ // 50KB limit per file
40
+ files[match] = content;
41
+ }
42
+ }
43
+ catch {
44
+ // Skip files that can't be read
45
+ }
46
+ }
47
+ }
48
+ catch {
49
+ // Skip patterns that fail
50
+ }
51
+ }
52
+ return files;
53
+ }
54
+ /**
55
+ * Build the init prompt for generating AGENT.md
56
+ */
57
+ export function buildInitPrompt(contextFiles, existingAgentMd) {
58
+ const contextParts = Object.entries(contextFiles)
59
+ .map(([filePath, content]) => `### ${filePath}\n\`\`\`\n${content}\n\`\`\``)
60
+ .join('\n\n');
61
+ const existingSection = existingAgentMd
62
+ ? `\n\n## Existing AGENT.md\n\`\`\`markdown\n${existingAgentMd}\n\`\`\`\n`
63
+ : '';
64
+ return `Please analyze this codebase and create an AGENT.md file, which will be given to future AI assistants to operate in this repository.
65
+
66
+ ## Context Files
67
+
68
+ ${contextParts}
69
+ ${existingSection}
70
+ ## Instructions
71
+
72
+ What to add:
73
+ 1. Commands that will be commonly used, such as how to build, lint, and run tests.
74
+ Include the necessary commands to develop in this codebase, such as how to run a single test.
75
+ 2. High-level code architecture and structure so that future instances can be productive more quickly.
76
+ Focus on the "big picture" architecture that requires reading multiple files to understand.
77
+
78
+ Usage notes:
79
+ - ${existingAgentMd ? 'Suggest improvements to the existing AGENT.md.' : 'Create a new AGENT.md.'}
80
+ - Do not repeat yourself and do not include obvious instructions like "Provide helpful error messages" or "Write tests for new code".
81
+ - Avoid listing every component or file structure that can be easily discovered.
82
+ - Don't include generic development practices.
83
+ - Do not make up information unless it's expressly included in the files above.
84
+ - Keep it concise - aim for ~20-40 lines.
85
+ - Start the file with:
86
+
87
+ # AGENT.md
88
+
89
+ This file provides guidance to AI assistants when working with code in this repository.
90
+
91
+ After generating the content, use the Write tool to save it to ./AGENT.md`;
92
+ }
93
+ /**
94
+ * Get a summary of files found for user feedback
95
+ */
96
+ export function getContextSummary(contextFiles) {
97
+ const fileNames = Object.keys(contextFiles);
98
+ if (fileNames.length === 0) {
99
+ return 'No context files found';
100
+ }
101
+ return `Found ${fileNames.length} context file(s): ${fileNames.join(', ')}`;
102
+ }
103
+ //# sourceMappingURL=init-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-prompt.js","sourceRoot":"","sources":["../../src/memory/init-prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAM5B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAClD,MAAM,QAAQ,GAAG;QACf,cAAc;QACd,WAAW;QACX,iBAAiB;QACjB,uBAAuB;QACvB,cAAc;QACd,iCAAiC;QACjC,YAAY;QACZ,QAAQ;QACR,gBAAgB;QAChB,eAAe;QACf,UAAU;QACV,oBAAoB;QACpB,qBAAqB;KACtB,CAAC;IAEF,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACxC,oBAAoB;gBACpB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBACvC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACrD,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;wBAC3B,sBAAsB;wBACtB,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;oBACzB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,gCAAgC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,YAA0B,EAAE,eAAwB;IAClF,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,QAAQ,aAAa,OAAO,UAAU,CAAC;SAC3E,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,MAAM,eAAe,GAAG,eAAe;QACrC,CAAC,CAAC,6CAA6C,eAAe,YAAY;QAC1E,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;EAIP,YAAY;EACZ,eAAe;;;;;;;;;;IAUb,eAAe,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,wBAAwB;;;;;;;;;;;;0EAYvB,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAA0B;IAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,wBAAwB,CAAC;IAClC,CAAC;IACD,OAAO,SAAS,SAAS,CAAC,MAAM,qBAAqB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9E,CAAC"}