gencode-ai 0.1.1 → 0.1.3

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 (287) hide show
  1. package/.gencode/settings.local.json +7 -0
  2. package/CLAUDE.md +86 -0
  3. package/README.md +13 -16
  4. package/dist/agent/agent.d.ts +50 -1
  5. package/dist/agent/agent.d.ts.map +1 -1
  6. package/dist/agent/agent.js +96 -16
  7. package/dist/agent/agent.js.map +1 -1
  8. package/dist/agent/index.d.ts +1 -0
  9. package/dist/agent/index.d.ts.map +1 -1
  10. package/dist/agent/types.d.ts +14 -1
  11. package/dist/agent/types.d.ts.map +1 -1
  12. package/dist/cli/components/App.d.ts +8 -1
  13. package/dist/cli/components/App.d.ts.map +1 -1
  14. package/dist/cli/components/App.js +266 -29
  15. package/dist/cli/components/App.js.map +1 -1
  16. package/dist/cli/components/CommandSuggestions.d.ts.map +1 -1
  17. package/dist/cli/components/CommandSuggestions.js +2 -0
  18. package/dist/cli/components/CommandSuggestions.js.map +1 -1
  19. package/dist/cli/components/Header.d.ts +1 -1
  20. package/dist/cli/components/Header.d.ts.map +1 -1
  21. package/dist/cli/components/Header.js +4 -6
  22. package/dist/cli/components/Header.js.map +1 -1
  23. package/dist/cli/components/Logo.d.ts +1 -0
  24. package/dist/cli/components/Logo.d.ts.map +1 -1
  25. package/dist/cli/components/Logo.js +16 -3
  26. package/dist/cli/components/Logo.js.map +1 -1
  27. package/dist/cli/components/Messages.d.ts +4 -4
  28. package/dist/cli/components/Messages.d.ts.map +1 -1
  29. package/dist/cli/components/Messages.js +66 -23
  30. package/dist/cli/components/Messages.js.map +1 -1
  31. package/dist/cli/components/PermissionPrompt.d.ts +60 -0
  32. package/dist/cli/components/PermissionPrompt.d.ts.map +1 -0
  33. package/dist/cli/components/PermissionPrompt.js +192 -0
  34. package/dist/cli/components/PermissionPrompt.js.map +1 -0
  35. package/dist/cli/components/ProviderManager.js +3 -3
  36. package/dist/cli/components/ProviderManager.js.map +1 -1
  37. package/dist/cli/components/QuestionPrompt.d.ts +23 -0
  38. package/dist/cli/components/QuestionPrompt.d.ts.map +1 -0
  39. package/dist/cli/components/QuestionPrompt.js +231 -0
  40. package/dist/cli/components/QuestionPrompt.js.map +1 -0
  41. package/dist/cli/components/Spinner.d.ts +7 -2
  42. package/dist/cli/components/Spinner.d.ts.map +1 -1
  43. package/dist/cli/components/Spinner.js +116 -25
  44. package/dist/cli/components/Spinner.js.map +1 -1
  45. package/dist/cli/components/TodoList.d.ts +7 -0
  46. package/dist/cli/components/TodoList.d.ts.map +1 -0
  47. package/dist/cli/components/TodoList.js +34 -0
  48. package/dist/cli/components/TodoList.js.map +1 -0
  49. package/dist/cli/components/index.d.ts +2 -0
  50. package/dist/cli/components/index.d.ts.map +1 -1
  51. package/dist/cli/components/index.js +2 -0
  52. package/dist/cli/components/index.js.map +1 -1
  53. package/dist/cli/components/theme.d.ts +7 -0
  54. package/dist/cli/components/theme.d.ts.map +1 -1
  55. package/dist/cli/components/theme.js +11 -1
  56. package/dist/cli/components/theme.js.map +1 -1
  57. package/dist/cli/index.js +47 -7
  58. package/dist/cli/index.js.map +1 -1
  59. package/dist/config/index.d.ts +13 -4
  60. package/dist/config/index.d.ts.map +1 -1
  61. package/dist/config/index.js +18 -3
  62. package/dist/config/index.js.map +1 -1
  63. package/dist/config/levels.d.ts +49 -0
  64. package/dist/config/levels.d.ts.map +1 -0
  65. package/dist/config/levels.js +222 -0
  66. package/dist/config/levels.js.map +1 -0
  67. package/dist/config/loader.d.ts +46 -0
  68. package/dist/config/loader.d.ts.map +1 -0
  69. package/dist/config/loader.js +153 -0
  70. package/dist/config/loader.js.map +1 -0
  71. package/dist/config/manager.d.ts +115 -15
  72. package/dist/config/manager.d.ts.map +1 -1
  73. package/dist/config/manager.js +260 -34
  74. package/dist/config/manager.js.map +1 -1
  75. package/dist/config/manager.test.d.ts +5 -0
  76. package/dist/config/manager.test.d.ts.map +1 -0
  77. package/dist/config/manager.test.js +192 -0
  78. package/dist/config/manager.test.js.map +1 -0
  79. package/dist/config/merger.d.ts +56 -0
  80. package/dist/config/merger.d.ts.map +1 -0
  81. package/dist/config/merger.js +177 -0
  82. package/dist/config/merger.js.map +1 -0
  83. package/dist/config/test-utils.d.ts +24 -0
  84. package/dist/config/test-utils.d.ts.map +1 -0
  85. package/dist/config/test-utils.js +55 -0
  86. package/dist/config/test-utils.js.map +1 -0
  87. package/dist/config/types.d.ts +78 -9
  88. package/dist/config/types.d.ts.map +1 -1
  89. package/dist/config/types.js +52 -2
  90. package/dist/config/types.js.map +1 -1
  91. package/dist/memory/import-resolver.d.ts +46 -0
  92. package/dist/memory/import-resolver.d.ts.map +1 -0
  93. package/dist/memory/import-resolver.js +117 -0
  94. package/dist/memory/import-resolver.js.map +1 -0
  95. package/dist/memory/index.d.ts +7 -6
  96. package/dist/memory/index.d.ts.map +1 -1
  97. package/dist/memory/index.js +7 -5
  98. package/dist/memory/index.js.map +1 -1
  99. package/dist/memory/init-prompt.d.ts +22 -0
  100. package/dist/memory/init-prompt.d.ts.map +1 -0
  101. package/dist/memory/init-prompt.js +103 -0
  102. package/dist/memory/init-prompt.js.map +1 -0
  103. package/dist/memory/memory-manager.d.ts +119 -0
  104. package/dist/memory/memory-manager.d.ts.map +1 -0
  105. package/dist/memory/memory-manager.js +587 -0
  106. package/dist/memory/memory-manager.js.map +1 -0
  107. package/dist/memory/rules-parser.d.ts +38 -0
  108. package/dist/memory/rules-parser.d.ts.map +1 -0
  109. package/dist/memory/rules-parser.js +69 -0
  110. package/dist/memory/rules-parser.js.map +1 -0
  111. package/dist/memory/test-utils.d.ts +20 -0
  112. package/dist/memory/test-utils.d.ts.map +1 -0
  113. package/dist/memory/test-utils.js +44 -0
  114. package/dist/memory/test-utils.js.map +1 -0
  115. package/dist/memory/types.d.ts +70 -63
  116. package/dist/memory/types.d.ts.map +1 -1
  117. package/dist/memory/types.js +42 -2
  118. package/dist/memory/types.js.map +1 -1
  119. package/dist/permissions/audit.d.ts +82 -0
  120. package/dist/permissions/audit.d.ts.map +1 -0
  121. package/dist/permissions/audit.js +229 -0
  122. package/dist/permissions/audit.js.map +1 -0
  123. package/dist/permissions/index.d.ts +11 -1
  124. package/dist/permissions/index.d.ts.map +1 -1
  125. package/dist/permissions/index.js +15 -0
  126. package/dist/permissions/index.js.map +1 -1
  127. package/dist/permissions/manager.d.ts +149 -13
  128. package/dist/permissions/manager.d.ts.map +1 -1
  129. package/dist/permissions/manager.js +480 -35
  130. package/dist/permissions/manager.js.map +1 -1
  131. package/dist/permissions/manager.test.d.ts +5 -0
  132. package/dist/permissions/manager.test.d.ts.map +1 -0
  133. package/dist/permissions/manager.test.js +213 -0
  134. package/dist/permissions/manager.test.js.map +1 -0
  135. package/dist/permissions/persistence.d.ts +74 -0
  136. package/dist/permissions/persistence.d.ts.map +1 -0
  137. package/dist/permissions/persistence.js +248 -0
  138. package/dist/permissions/persistence.js.map +1 -0
  139. package/dist/permissions/persistence.test.d.ts +5 -0
  140. package/dist/permissions/persistence.test.d.ts.map +1 -0
  141. package/dist/permissions/persistence.test.js +171 -0
  142. package/dist/permissions/persistence.test.js.map +1 -0
  143. package/dist/permissions/prompt-matcher.d.ts +64 -0
  144. package/dist/permissions/prompt-matcher.d.ts.map +1 -0
  145. package/dist/permissions/prompt-matcher.js +415 -0
  146. package/dist/permissions/prompt-matcher.js.map +1 -0
  147. package/dist/permissions/prompt-matcher.test.d.ts +5 -0
  148. package/dist/permissions/prompt-matcher.test.d.ts.map +1 -0
  149. package/dist/permissions/prompt-matcher.test.js +107 -0
  150. package/dist/permissions/prompt-matcher.test.js.map +1 -0
  151. package/dist/permissions/types.d.ts +157 -0
  152. package/dist/permissions/types.d.ts.map +1 -1
  153. package/dist/permissions/types.js +45 -8
  154. package/dist/permissions/types.js.map +1 -1
  155. package/dist/prompts/index.d.ts +92 -0
  156. package/dist/prompts/index.d.ts.map +1 -0
  157. package/dist/prompts/index.js +241 -0
  158. package/dist/prompts/index.js.map +1 -0
  159. package/dist/tools/builtin/ask-user.d.ts +64 -0
  160. package/dist/tools/builtin/ask-user.d.ts.map +1 -0
  161. package/dist/tools/builtin/ask-user.js +148 -0
  162. package/dist/tools/builtin/ask-user.js.map +1 -0
  163. package/dist/tools/builtin/bash.d.ts.map +1 -1
  164. package/dist/tools/builtin/bash.js +2 -1
  165. package/dist/tools/builtin/bash.js.map +1 -1
  166. package/dist/tools/builtin/edit.d.ts.map +1 -1
  167. package/dist/tools/builtin/edit.js +2 -1
  168. package/dist/tools/builtin/edit.js.map +1 -1
  169. package/dist/tools/builtin/glob.d.ts.map +1 -1
  170. package/dist/tools/builtin/glob.js +2 -1
  171. package/dist/tools/builtin/glob.js.map +1 -1
  172. package/dist/tools/builtin/grep.d.ts.map +1 -1
  173. package/dist/tools/builtin/grep.js +2 -1
  174. package/dist/tools/builtin/grep.js.map +1 -1
  175. package/dist/tools/builtin/read.d.ts.map +1 -1
  176. package/dist/tools/builtin/read.js +2 -1
  177. package/dist/tools/builtin/read.js.map +1 -1
  178. package/dist/tools/builtin/todowrite.d.ts +15 -0
  179. package/dist/tools/builtin/todowrite.d.ts.map +1 -0
  180. package/dist/tools/builtin/todowrite.js +88 -0
  181. package/dist/tools/builtin/todowrite.js.map +1 -0
  182. package/dist/tools/builtin/webfetch.d.ts.map +1 -1
  183. package/dist/tools/builtin/webfetch.js +2 -5
  184. package/dist/tools/builtin/webfetch.js.map +1 -1
  185. package/dist/tools/builtin/websearch.d.ts.map +1 -1
  186. package/dist/tools/builtin/websearch.js +2 -16
  187. package/dist/tools/builtin/websearch.js.map +1 -1
  188. package/dist/tools/builtin/write.d.ts.map +1 -1
  189. package/dist/tools/builtin/write.js +2 -1
  190. package/dist/tools/builtin/write.js.map +1 -1
  191. package/dist/tools/index.d.ts +19 -0
  192. package/dist/tools/index.d.ts.map +1 -1
  193. package/dist/tools/index.js +8 -0
  194. package/dist/tools/index.js.map +1 -1
  195. package/dist/tools/types.d.ts +39 -0
  196. package/dist/tools/types.d.ts.map +1 -1
  197. package/dist/tools/types.js +8 -0
  198. package/dist/tools/types.js.map +1 -1
  199. package/docs/config-system-comparison.md +707 -0
  200. package/docs/memory-system.md +238 -0
  201. package/docs/permissions.md +368 -0
  202. package/docs/proposals/0005-todo-system.md +350 -85
  203. package/docs/proposals/0006-memory-system.md +11 -10
  204. package/docs/proposals/0012-ask-user-question.md +1007 -207
  205. package/docs/proposals/0023-permission-enhancements.md +61 -2
  206. package/docs/proposals/0041-configuration-system.md +33 -2
  207. package/docs/proposals/0042-prompt-optimization.md +866 -0
  208. package/docs/proposals/README.md +7 -6
  209. package/examples/test-ask-user.ts +167 -0
  210. package/jest.config.js +26 -0
  211. package/package.json +8 -2
  212. package/src/agent/agent.ts +130 -16
  213. package/src/agent/index.ts +1 -0
  214. package/src/agent/types.ts +13 -1
  215. package/src/cli/components/App.tsx +362 -37
  216. package/src/cli/components/CommandSuggestions.tsx +2 -0
  217. package/src/cli/components/Header.tsx +11 -17
  218. package/src/cli/components/Logo.tsx +76 -9
  219. package/src/cli/components/Messages.tsx +104 -41
  220. package/src/cli/components/PermissionPrompt.tsx +388 -0
  221. package/src/cli/components/ProviderManager.tsx +5 -5
  222. package/src/cli/components/QuestionPrompt.tsx +462 -0
  223. package/src/cli/components/Spinner.tsx +138 -25
  224. package/src/cli/components/TodoList.tsx +54 -0
  225. package/src/cli/components/index.ts +7 -0
  226. package/src/cli/components/theme.ts +11 -1
  227. package/src/cli/index.tsx +54 -6
  228. package/src/config/index.ts +78 -4
  229. package/src/config/levels.test.ts +163 -0
  230. package/src/config/levels.ts +285 -0
  231. package/src/config/loader.test.ts +120 -0
  232. package/src/config/loader.ts +178 -0
  233. package/src/config/manager.test.ts +215 -0
  234. package/src/config/manager.ts +328 -40
  235. package/src/config/merger.test.ts +360 -0
  236. package/src/config/merger.ts +221 -0
  237. package/src/config/test-utils.ts +79 -0
  238. package/src/config/types.ts +152 -9
  239. package/src/memory/import-resolver.test.ts +117 -0
  240. package/src/memory/import-resolver.ts +149 -0
  241. package/src/memory/index.ts +11 -0
  242. package/src/memory/init-prompt.ts +113 -0
  243. package/src/memory/memory-manager.test.ts +198 -0
  244. package/src/memory/memory-manager.ts +716 -0
  245. package/src/memory/rules-parser.test.ts +182 -0
  246. package/src/memory/rules-parser.ts +82 -0
  247. package/src/memory/test-utils.ts +60 -0
  248. package/src/memory/types.ts +119 -0
  249. package/src/permissions/audit.ts +284 -0
  250. package/src/permissions/index.ts +20 -1
  251. package/src/permissions/manager.test.ts +260 -0
  252. package/src/permissions/manager.ts +592 -40
  253. package/src/permissions/persistence.test.ts +220 -0
  254. package/src/permissions/persistence.ts +301 -0
  255. package/src/permissions/prompt-matcher.test.ts +213 -0
  256. package/src/permissions/prompt-matcher.ts +472 -0
  257. package/src/permissions/types.ts +238 -8
  258. package/src/prompts/index.test.ts +279 -0
  259. package/src/prompts/index.ts +306 -0
  260. package/src/prompts/system/anthropic.txt +29 -0
  261. package/src/prompts/system/base.txt +166 -0
  262. package/src/prompts/system/gemini.txt +35 -0
  263. package/src/prompts/system/generic.txt +128 -0
  264. package/src/prompts/system/openai.txt +29 -0
  265. package/src/prompts/tools/ask-user.txt +110 -0
  266. package/src/prompts/tools/bash.txt +60 -0
  267. package/src/prompts/tools/edit.txt +29 -0
  268. package/src/prompts/tools/glob.txt +35 -0
  269. package/src/prompts/tools/grep.txt +43 -0
  270. package/src/prompts/tools/read.txt +22 -0
  271. package/src/prompts/tools/todowrite.txt +71 -0
  272. package/src/prompts/tools/webfetch.txt +34 -0
  273. package/src/prompts/tools/websearch.txt +41 -0
  274. package/src/prompts/tools/write.txt +23 -0
  275. package/src/tools/builtin/ask-user.ts +185 -0
  276. package/src/tools/builtin/bash.ts +2 -1
  277. package/src/tools/builtin/edit.ts +2 -1
  278. package/src/tools/builtin/glob.ts +2 -1
  279. package/src/tools/builtin/grep.ts +2 -1
  280. package/src/tools/builtin/read.ts +2 -1
  281. package/src/tools/builtin/todowrite.ts +102 -0
  282. package/src/tools/builtin/webfetch.ts +2 -5
  283. package/src/tools/builtin/websearch.ts +2 -16
  284. package/src/tools/builtin/write.ts +2 -1
  285. package/src/tools/index.ts +19 -0
  286. package/src/tools/types.ts +30 -0
  287. package/tsconfig.json +1 -1
@@ -9,4 +9,6 @@ export { PromptInput, ConfirmPrompt } from './Input.js';
9
9
  export { colors, icons } from './theme.js';
10
10
  export { ModelSelector } from './ModelSelector.js';
11
11
  export { CommandSuggestions, COMMANDS, getFilteredCommands } from './CommandSuggestions.js';
12
+ export { PermissionPrompt, SimpleConfirmPrompt, PermissionRulesDisplay, PermissionAuditDisplay, } from './PermissionPrompt.js';
13
+ export { QuestionPrompt, AnswerDisplay } from './QuestionPrompt.js';
12
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -9,4 +9,6 @@ export { PromptInput, ConfirmPrompt } from './Input.js';
9
9
  export { colors, icons } from './theme.js';
10
10
  export { ModelSelector } from './ModelSelector.js';
11
11
  export { CommandSuggestions, COMMANDS, getFilteredCommands } from './CommandSuggestions.js';
12
+ export { PermissionPrompt, SimpleConfirmPrompt, PermissionRulesDisplay, PermissionAuditDisplay, } from './PermissionPrompt.js';
13
+ export { QuestionPrompt, AnswerDisplay } from './QuestionPrompt.js';
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -31,6 +31,13 @@ export declare const icons: {
31
31
  cursor: string;
32
32
  radio: string;
33
33
  radioEmpty: string;
34
+ checkbox: string;
35
+ checkboxEmpty: string;
36
+ chipLeft: string;
37
+ chipRight: string;
38
+ boxTop: string;
39
+ boxBottom: string;
40
+ boxVertical: string;
34
41
  treeEnd: string;
35
42
  };
36
43
  //# sourceMappingURL=theme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;CAclB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;CAuBjB,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;CAclB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;CAiCjB,CAAC"}
@@ -34,9 +34,19 @@ export const icons = {
34
34
  // UI
35
35
  thinking: '✱', // Star for thinking state
36
36
  cursor: '▋',
37
- // Selection
37
+ // Selection (single-select)
38
38
  radio: '●', // Filled radio for selected
39
39
  radioEmpty: '○', // Empty radio for unselected
40
+ // Selection (multi-select)
41
+ checkbox: '☑', // Checked checkbox
42
+ checkboxEmpty: '☐', // Empty checkbox
43
+ // Chip/tag borders (Claude Code style headers)
44
+ chipLeft: '╭─',
45
+ chipRight: '─╮',
46
+ // Box drawing
47
+ boxTop: '╭',
48
+ boxBottom: '╰',
49
+ boxVertical: '│',
40
50
  // Tree connectors
41
51
  treeEnd: '└', // Tree end connector for tool results
42
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,SAAS,EAAE,aAAa;IAC/B,UAAU,EAAE,SAAS,EAAE,aAAa;IACpC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS,EAAE,cAAc;IAClC,OAAO,EAAE,SAAS,EAAE,YAAY;IAChC,KAAK,EAAE,SAAS,EAAE,UAAU;IAC5B,IAAI,EAAE,SAAS,EAAE,WAAW;IAC5B,IAAI,EAAE,SAAS,EAAE,YAAY;IAC7B,aAAa,EAAE,SAAS,EAAE,YAAY;IACtC,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,IAAI,EAAE,SAAS,EAAE,aAAa;IAC9B,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,OAAO,EAAE,SAAS,EAAE,8CAA8C;CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,uCAAuC;IACvC,UAAU,EAAE,GAAG,EAAE,yBAAyB;IAC1C,SAAS,EAAE,GAAG,EAAE,8BAA8B;IAC9C,SAAS;IACT,MAAM,EAAE,GAAG;IACX,SAAS;IACT,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,QAAQ;IACR,IAAI,EAAE,GAAG,EAAE,sBAAsB;IACjC,KAAK,EAAE,GAAG,EAAE,8CAA8C;IAC1D,KAAK,EAAE,GAAG;IACV,KAAK;IACL,QAAQ,EAAE,GAAG,EAAE,0BAA0B;IACzC,MAAM,EAAE,GAAG;IACX,YAAY;IACZ,KAAK,EAAE,GAAG,EAAE,4BAA4B;IACxC,UAAU,EAAE,GAAG,EAAE,6BAA6B;IAC9C,kBAAkB;IAClB,OAAO,EAAE,GAAG,EAAE,sCAAsC;CACrD,CAAC"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,SAAS,EAAE,aAAa;IAC/B,UAAU,EAAE,SAAS,EAAE,aAAa;IACpC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS,EAAE,cAAc;IAClC,OAAO,EAAE,SAAS,EAAE,YAAY;IAChC,KAAK,EAAE,SAAS,EAAE,UAAU;IAC5B,IAAI,EAAE,SAAS,EAAE,WAAW;IAC5B,IAAI,EAAE,SAAS,EAAE,YAAY;IAC7B,aAAa,EAAE,SAAS,EAAE,YAAY;IACtC,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,IAAI,EAAE,SAAS,EAAE,aAAa;IAC9B,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,OAAO,EAAE,SAAS,EAAE,8CAA8C;CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,uCAAuC;IACvC,UAAU,EAAE,GAAG,EAAE,yBAAyB;IAC1C,SAAS,EAAE,GAAG,EAAE,8BAA8B;IAC9C,SAAS;IACT,MAAM,EAAE,GAAG;IACX,SAAS;IACT,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,QAAQ;IACR,IAAI,EAAE,GAAG,EAAE,sBAAsB;IACjC,KAAK,EAAE,GAAG,EAAE,8CAA8C;IAC1D,KAAK,EAAE,GAAG;IACV,KAAK;IACL,QAAQ,EAAE,GAAG,EAAE,0BAA0B;IACzC,MAAM,EAAE,GAAG;IACX,4BAA4B;IAC5B,KAAK,EAAE,GAAG,EAAE,4BAA4B;IACxC,UAAU,EAAE,GAAG,EAAE,6BAA6B;IAC9C,2BAA2B;IAC3B,QAAQ,EAAE,GAAG,EAAE,mBAAmB;IAClC,aAAa,EAAE,GAAG,EAAE,iBAAiB;IACrC,+CAA+C;IAC/C,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,cAAc;IACd,MAAM,EAAE,GAAG;IACX,SAAS,EAAE,GAAG;IACd,WAAW,EAAE,GAAG;IAChB,kBAAkB;IAClB,OAAO,EAAE,GAAG,EAAE,sCAAsC;CACrD,CAAC"}
package/dist/cli/index.js CHANGED
@@ -81,10 +81,19 @@ function detectConfig(settings, providersConfig) {
81
81
  // ============================================================================
82
82
  function parseArgs() {
83
83
  const args = process.argv.slice(2);
84
+ // Extract prompt value from -p "message" or --prompt "message"
85
+ let prompt;
86
+ for (let i = 0; i < args.length; i++) {
87
+ if ((args[i] === '-p' || args[i] === '--prompt') && args[i + 1]) {
88
+ prompt = args[i + 1];
89
+ break;
90
+ }
91
+ }
84
92
  return {
85
93
  continue: args.includes('-c') || args.includes('--continue'),
86
94
  resume: args.includes('-r') || args.includes('--resume'),
87
95
  help: args.includes('-h') || args.includes('--help'),
96
+ prompt,
88
97
  };
89
98
  }
90
99
  function printUsage() {
@@ -94,17 +103,43 @@ function printUsage() {
94
103
  console.log(' Usage: gencode [options]');
95
104
  console.log();
96
105
  console.log(' Options:');
97
- console.log(' -c, --continue Resume the most recent session');
98
- console.log(' -r, --resume Select a session interactively');
99
- console.log(' -h, --help Show this help');
106
+ console.log(' -c, --continue Resume the most recent session');
107
+ console.log(' -r, --resume Select a session interactively');
108
+ console.log(' -p, --prompt <msg> Run a single prompt (non-interactive)');
109
+ console.log(' -h, --help Show this help');
100
110
  console.log();
101
111
  console.log(' Examples:');
102
- console.log(' gencode Start new session');
103
- console.log(' gencode -c Continue last session');
104
- console.log(' gencode -r Pick a session');
112
+ console.log(' gencode Start new session');
113
+ console.log(' gencode -c Continue last session');
114
+ console.log(' gencode -r Pick a session');
115
+ console.log(' gencode -p "2+2" Run single prompt');
105
116
  console.log();
106
117
  }
107
118
  // ============================================================================
119
+ // Non-interactive mode
120
+ // ============================================================================
121
+ async function runNonInteractive(prompt, config) {
122
+ const { Agent } = await import('../agent/agent.js');
123
+ const agent = new Agent(config);
124
+ let response = '';
125
+ for await (const event of agent.run(prompt)) {
126
+ switch (event.type) {
127
+ case 'text':
128
+ response += event.text;
129
+ break;
130
+ case 'tool_start':
131
+ console.error(`[tool] ${event.name}`);
132
+ break;
133
+ case 'error':
134
+ console.error(`[error] ${event.error.message}`);
135
+ break;
136
+ case 'done':
137
+ break;
138
+ }
139
+ }
140
+ console.log(response);
141
+ }
142
+ // ============================================================================
108
143
  // Main
109
144
  // ============================================================================
110
145
  async function main() {
@@ -120,8 +155,13 @@ async function main() {
120
155
  const providersConfig = new ProvidersConfigManager();
121
156
  await providersConfig.load();
122
157
  const config = detectConfig(settings, providersConfig);
158
+ // Non-interactive mode with -p flag
159
+ if (args.prompt) {
160
+ await runNonInteractive(args.prompt, config);
161
+ return;
162
+ }
123
163
  // Render the Ink app
124
- render(_jsx(App, { config: config, settingsManager: settingsManager, resumeLatest: args.continue }));
164
+ render(_jsx(App, { config: config, settingsManager: settingsManager, resumeLatest: args.continue, permissionSettings: settings.permissions }));
125
165
  }
126
166
  main().catch((error) => {
127
167
  console.error('Fatal error:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,17 @@
1
1
  /**
2
- * Config Module Exports
2
+ * Configuration Module - Multi-level configuration system (Claude Code compatible)
3
+ *
4
+ * This module provides a hierarchical configuration system that:
5
+ * - Supports multiple levels: user, project, local, managed
6
+ * - Merges .gencode and .claude directories at each level (gencode wins)
7
+ * - Supports GENCODE_CONFIG_DIRS environment variable for extra config dirs
8
+ * - Enforces managed settings that cannot be overridden
3
9
  */
4
- export { SettingsManager } from './manager.js';
10
+ export type { Settings, SettingsManagerOptions, ProviderName, PermissionRules, ConfigLevelType, ConfigLevel, ConfigSource, MergedConfig, ProvidersConfig, ProviderConnection, CachedModel, ProviderModels, } from './types.js';
11
+ export { DEFAULT_SETTINGS_DIR, PROJECT_SETTINGS_DIR, FALLBACK_SETTINGS_DIR, FALLBACK_PROJECT_DIR, SETTINGS_FILE_NAME, SETTINGS_LOCAL_FILE_NAME, MANAGED_SETTINGS_FILE_NAME, PROVIDERS_FILE_NAME, GENCODE_DIR, CLAUDE_DIR, USER_GENCODE_DIR, USER_CLAUDE_DIR, GENCODE_CONFIG_DIRS_ENV, getManagedPaths, } from './types.js';
12
+ export { findProjectRoot, parseExtraConfigDirs, getConfigLevels, getPrimarySettingsDir, getSettingsFilePath, type ConfigPathInfo, type ResolvedLevel, } from './levels.js';
13
+ export { loadAllSources, loadSourcesByLevel, loadUserSettings, loadProjectSettings, loadManagedSettings, getConfigInfo, getExistingConfigFiles, } from './loader.js';
14
+ export { deepMerge, mergeSettings, extractManagedDeny, applyManagedRestrictions, mergeAllSources, mergeWithCliArgs, createMergeSummary, } from './merger.js';
15
+ export { ConfigManager, SettingsManager } from './manager.js';
5
16
  export { ProvidersConfigManager } from './providers-config.js';
6
- export type { Settings, SettingsManagerOptions, ProviderName, ProvidersConfig } from './types.js';
7
- export { DEFAULT_SETTINGS_DIR, SETTINGS_FILE_NAME, PROVIDERS_FILE_NAME } from './types.js';
8
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClG,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EACV,QAAQ,EACR,sBAAsB,EACtB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,7 +1,22 @@
1
1
  /**
2
- * Config Module Exports
2
+ * Configuration Module - Multi-level configuration system (Claude Code compatible)
3
+ *
4
+ * This module provides a hierarchical configuration system that:
5
+ * - Supports multiple levels: user, project, local, managed
6
+ * - Merges .gencode and .claude directories at each level (gencode wins)
7
+ * - Supports GENCODE_CONFIG_DIRS environment variable for extra config dirs
8
+ * - Enforces managed settings that cannot be overridden
3
9
  */
4
- export { SettingsManager } from './manager.js';
10
+ // Constants
11
+ export { DEFAULT_SETTINGS_DIR, PROJECT_SETTINGS_DIR, FALLBACK_SETTINGS_DIR, FALLBACK_PROJECT_DIR, SETTINGS_FILE_NAME, SETTINGS_LOCAL_FILE_NAME, MANAGED_SETTINGS_FILE_NAME, PROVIDERS_FILE_NAME, GENCODE_DIR, CLAUDE_DIR, USER_GENCODE_DIR, USER_CLAUDE_DIR, GENCODE_CONFIG_DIRS_ENV, getManagedPaths, } from './types.js';
12
+ // Configuration levels
13
+ export { findProjectRoot, parseExtraConfigDirs, getConfigLevels, getPrimarySettingsDir, getSettingsFilePath, } from './levels.js';
14
+ // Configuration loader
15
+ export { loadAllSources, loadSourcesByLevel, loadUserSettings, loadProjectSettings, loadManagedSettings, getConfigInfo, getExistingConfigFiles, } from './loader.js';
16
+ // Configuration merger
17
+ export { deepMerge, mergeSettings, extractManagedDeny, applyManagedRestrictions, mergeAllSources, mergeWithCliArgs, createMergeSummary, } from './merger.js';
18
+ // Configuration managers
19
+ export { ConfigManager, SettingsManager } from './manager.js';
20
+ // Providers configuration
5
21
  export { ProvidersConfigManager } from './providers-config.js';
6
- export { DEFAULT_SETTINGS_DIR, SETTINGS_FILE_NAME, PROVIDERS_FILE_NAME } from './types.js';
7
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH,YAAY;AACZ,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,uBAAuB;AACvB,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,GAGpB,MAAM,aAAa,CAAC;AAErB,uBAAuB;AACvB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,uBAAuB;AACvB,OAAO,EACL,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,yBAAyB;AACzB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE9D,0BAA0B;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Configuration Levels - Path resolution for multi-level config
3
+ *
4
+ * Defines the configuration hierarchy and resolves paths for each level.
5
+ * At each level, both .gencode and .claude directories are loaded and merged,
6
+ * with .gencode taking higher priority.
7
+ */
8
+ import { ConfigLevelType } from './types.js';
9
+ /**
10
+ * Configuration path info for a specific namespace
11
+ */
12
+ export interface ConfigPathInfo {
13
+ settingsPath: string;
14
+ localSettingsPath?: string;
15
+ dir: string;
16
+ namespace: 'gencode' | 'claude' | 'extra';
17
+ exists: boolean;
18
+ }
19
+ /**
20
+ * Configuration level with resolved paths
21
+ */
22
+ export interface ResolvedLevel {
23
+ type: ConfigLevelType;
24
+ priority: number;
25
+ paths: ConfigPathInfo[];
26
+ description: string;
27
+ }
28
+ /**
29
+ * Find the project root by walking up the directory tree
30
+ */
31
+ export declare function findProjectRoot(cwd: string): Promise<string>;
32
+ /**
33
+ * Parse GENCODE_CONFIG_DIRS environment variable
34
+ */
35
+ export declare function parseExtraConfigDirs(): string[];
36
+ /**
37
+ * Get all configuration levels with resolved paths
38
+ */
39
+ export declare function getConfigLevels(cwd: string): Promise<ResolvedLevel[]>;
40
+ /**
41
+ * Get the primary settings directory for saving
42
+ * Prefers .gencode if it exists, otherwise creates it
43
+ */
44
+ export declare function getPrimarySettingsDir(level: 'user' | 'project' | 'local', projectRoot: string): string;
45
+ /**
46
+ * Get the settings file path for a specific level
47
+ */
48
+ export declare function getSettingsFilePath(level: 'user' | 'project' | 'local', projectRoot: string): string;
49
+ //# sourceMappingURL=levels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levels.d.ts","sourceRoot":"","sources":["../../src/config/levels.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EACL,eAAe,EAQhB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkClE;AAcD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAS/C;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA4I3E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EACnC,WAAW,EAAE,MAAM,GAClB,MAAM,CAYR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EACnC,WAAW,EAAE,MAAM,GAClB,MAAM,CAIR"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Configuration Levels - Path resolution for multi-level config
3
+ *
4
+ * Defines the configuration hierarchy and resolves paths for each level.
5
+ * At each level, both .gencode and .claude directories are loaded and merged,
6
+ * with .gencode taking higher priority.
7
+ */
8
+ import * as path from 'path';
9
+ import * as os from 'os';
10
+ import * as fs from 'fs/promises';
11
+ import { GENCODE_DIR, CLAUDE_DIR, SETTINGS_FILE_NAME, SETTINGS_LOCAL_FILE_NAME, MANAGED_SETTINGS_FILE_NAME, GENCODE_CONFIG_DIRS_ENV, getManagedPaths, } from './types.js';
12
+ /**
13
+ * Find the project root by walking up the directory tree
14
+ */
15
+ export async function findProjectRoot(cwd) {
16
+ let current = path.resolve(cwd);
17
+ const root = path.parse(current).root;
18
+ while (current !== root) {
19
+ // Check for git directory
20
+ try {
21
+ await fs.access(path.join(current, '.git'));
22
+ return current;
23
+ }
24
+ catch {
25
+ // Not a git root, continue
26
+ }
27
+ // Check for .gencode or .claude directories
28
+ try {
29
+ await fs.access(path.join(current, GENCODE_DIR));
30
+ return current;
31
+ }
32
+ catch {
33
+ // Continue
34
+ }
35
+ try {
36
+ await fs.access(path.join(current, CLAUDE_DIR));
37
+ return current;
38
+ }
39
+ catch {
40
+ // Continue
41
+ }
42
+ const parent = path.dirname(current);
43
+ if (parent === current)
44
+ break;
45
+ current = parent;
46
+ }
47
+ return cwd;
48
+ }
49
+ /**
50
+ * Check if a path exists
51
+ */
52
+ async function pathExists(filePath) {
53
+ try {
54
+ await fs.access(filePath);
55
+ return true;
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
61
+ /**
62
+ * Parse GENCODE_CONFIG_DIRS environment variable
63
+ */
64
+ export function parseExtraConfigDirs() {
65
+ const value = process.env[GENCODE_CONFIG_DIRS_ENV];
66
+ if (!value)
67
+ return [];
68
+ return value
69
+ .split(':')
70
+ .map((dir) => dir.trim())
71
+ .filter((dir) => dir.length > 0)
72
+ .map((dir) => dir.replace(/^~/, os.homedir()));
73
+ }
74
+ /**
75
+ * Get all configuration levels with resolved paths
76
+ */
77
+ export async function getConfigLevels(cwd) {
78
+ const projectRoot = await findProjectRoot(cwd);
79
+ const home = os.homedir();
80
+ const managedPaths = getManagedPaths();
81
+ const extraDirs = parseExtraConfigDirs();
82
+ const levels = [];
83
+ // Level 1: User (lowest priority for settings, loaded first)
84
+ const userPaths = [];
85
+ // Claude first (lower priority within level)
86
+ const userClaudeDir = path.join(home, CLAUDE_DIR);
87
+ userPaths.push({
88
+ settingsPath: path.join(userClaudeDir, SETTINGS_FILE_NAME),
89
+ dir: userClaudeDir,
90
+ namespace: 'claude',
91
+ exists: await pathExists(path.join(userClaudeDir, SETTINGS_FILE_NAME)),
92
+ });
93
+ // GenCode second (higher priority within level)
94
+ const userGencodeDir = path.join(home, GENCODE_DIR);
95
+ userPaths.push({
96
+ settingsPath: path.join(userGencodeDir, SETTINGS_FILE_NAME),
97
+ dir: userGencodeDir,
98
+ namespace: 'gencode',
99
+ exists: await pathExists(path.join(userGencodeDir, SETTINGS_FILE_NAME)),
100
+ });
101
+ levels.push({
102
+ type: 'user',
103
+ priority: 10,
104
+ paths: userPaths,
105
+ description: 'User global settings',
106
+ });
107
+ // Level 2: Extra config dirs from environment variable
108
+ if (extraDirs.length > 0) {
109
+ for (let i = 0; i < extraDirs.length; i++) {
110
+ const dir = extraDirs[i];
111
+ const extraPaths = [
112
+ {
113
+ settingsPath: path.join(dir, SETTINGS_FILE_NAME),
114
+ dir,
115
+ namespace: 'extra',
116
+ exists: await pathExists(path.join(dir, SETTINGS_FILE_NAME)),
117
+ },
118
+ ];
119
+ levels.push({
120
+ type: 'extra',
121
+ priority: 20 + i, // Each extra dir has slightly higher priority
122
+ paths: extraPaths,
123
+ description: `Extra config from ${dir}`,
124
+ });
125
+ }
126
+ }
127
+ // Level 3: Project (shared, committed to git)
128
+ const projectPaths = [];
129
+ // Claude first (lower priority within level)
130
+ const projectClaudeDir = path.join(projectRoot, CLAUDE_DIR);
131
+ projectPaths.push({
132
+ settingsPath: path.join(projectClaudeDir, SETTINGS_FILE_NAME),
133
+ dir: projectClaudeDir,
134
+ namespace: 'claude',
135
+ exists: await pathExists(path.join(projectClaudeDir, SETTINGS_FILE_NAME)),
136
+ });
137
+ // GenCode second (higher priority within level)
138
+ const projectGencodeDir = path.join(projectRoot, GENCODE_DIR);
139
+ projectPaths.push({
140
+ settingsPath: path.join(projectGencodeDir, SETTINGS_FILE_NAME),
141
+ dir: projectGencodeDir,
142
+ namespace: 'gencode',
143
+ exists: await pathExists(path.join(projectGencodeDir, SETTINGS_FILE_NAME)),
144
+ });
145
+ levels.push({
146
+ type: 'project',
147
+ priority: 30,
148
+ paths: projectPaths,
149
+ description: 'Project shared settings',
150
+ });
151
+ // Level 4: Local (personal, gitignored)
152
+ const localPaths = [];
153
+ // Claude first (lower priority within level)
154
+ localPaths.push({
155
+ settingsPath: path.join(projectClaudeDir, SETTINGS_LOCAL_FILE_NAME),
156
+ dir: projectClaudeDir,
157
+ namespace: 'claude',
158
+ exists: await pathExists(path.join(projectClaudeDir, SETTINGS_LOCAL_FILE_NAME)),
159
+ });
160
+ // GenCode second (higher priority within level)
161
+ localPaths.push({
162
+ settingsPath: path.join(projectGencodeDir, SETTINGS_LOCAL_FILE_NAME),
163
+ dir: projectGencodeDir,
164
+ namespace: 'gencode',
165
+ exists: await pathExists(path.join(projectGencodeDir, SETTINGS_LOCAL_FILE_NAME)),
166
+ });
167
+ levels.push({
168
+ type: 'local',
169
+ priority: 40,
170
+ paths: localPaths,
171
+ description: 'Local personal settings (gitignored)',
172
+ });
173
+ // Level 5: Managed (highest priority, enforced)
174
+ const managedPathsList = [];
175
+ // Claude first (lower priority within level)
176
+ managedPathsList.push({
177
+ settingsPath: path.join(managedPaths.claude, MANAGED_SETTINGS_FILE_NAME),
178
+ dir: managedPaths.claude,
179
+ namespace: 'claude',
180
+ exists: await pathExists(path.join(managedPaths.claude, MANAGED_SETTINGS_FILE_NAME)),
181
+ });
182
+ // GenCode second (higher priority within level)
183
+ managedPathsList.push({
184
+ settingsPath: path.join(managedPaths.gencode, MANAGED_SETTINGS_FILE_NAME),
185
+ dir: managedPaths.gencode,
186
+ namespace: 'gencode',
187
+ exists: await pathExists(path.join(managedPaths.gencode, MANAGED_SETTINGS_FILE_NAME)),
188
+ });
189
+ levels.push({
190
+ type: 'managed',
191
+ priority: 100, // Highest priority
192
+ paths: managedPathsList,
193
+ description: 'System-wide managed settings (enforced)',
194
+ });
195
+ // Sort by priority (ascending, so we merge from low to high)
196
+ return levels.sort((a, b) => a.priority - b.priority);
197
+ }
198
+ /**
199
+ * Get the primary settings directory for saving
200
+ * Prefers .gencode if it exists, otherwise creates it
201
+ */
202
+ export function getPrimarySettingsDir(level, projectRoot) {
203
+ const home = os.homedir();
204
+ switch (level) {
205
+ case 'user':
206
+ return path.join(home, GENCODE_DIR);
207
+ case 'project':
208
+ case 'local':
209
+ return path.join(projectRoot, GENCODE_DIR);
210
+ default:
211
+ return path.join(home, GENCODE_DIR);
212
+ }
213
+ }
214
+ /**
215
+ * Get the settings file path for a specific level
216
+ */
217
+ export function getSettingsFilePath(level, projectRoot) {
218
+ const dir = getPrimarySettingsDir(level, projectRoot);
219
+ const fileName = level === 'local' ? SETTINGS_LOCAL_FILE_NAME : SETTINGS_FILE_NAME;
220
+ return path.join(dir, fileName);
221
+ }
222
+ //# sourceMappingURL=levels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levels.js","sourceRoot":"","sources":["../../src/config/levels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Configuration Loader - Load settings from various sources
3
+ *
4
+ * Loads configuration files from all levels and namespaces.
5
+ * Each level loads both .gencode and .claude directories.
6
+ */
7
+ import type { ConfigSource, ConfigLevelType } from './types.js';
8
+ import { type ResolvedLevel } from './levels.js';
9
+ /**
10
+ * Load all configuration sources in order
11
+ *
12
+ * Returns an array of ConfigSource in priority order (lowest first).
13
+ * Within each level:
14
+ * - .claude is loaded first (lower priority)
15
+ * - .gencode is loaded second (higher priority)
16
+ *
17
+ * This allows proper merging where:
18
+ * - Later sources override earlier ones
19
+ * - GenCode settings override Claude settings at the same level
20
+ */
21
+ export declare function loadAllSources(cwd: string): Promise<ConfigSource[]>;
22
+ /**
23
+ * Load configuration sources grouped by level
24
+ */
25
+ export declare function loadSourcesByLevel(cwd: string): Promise<Map<ConfigLevelType, ConfigSource[]>>;
26
+ /**
27
+ * Load only user-level settings
28
+ */
29
+ export declare function loadUserSettings(cwd: string): Promise<ConfigSource[]>;
30
+ /**
31
+ * Load only project-level settings
32
+ */
33
+ export declare function loadProjectSettings(cwd: string): Promise<ConfigSource[]>;
34
+ /**
35
+ * Load only managed settings
36
+ */
37
+ export declare function loadManagedSettings(cwd: string): Promise<ConfigSource[]>;
38
+ /**
39
+ * Get information about all configuration levels
40
+ */
41
+ export declare function getConfigInfo(cwd: string): Promise<ResolvedLevel[]>;
42
+ /**
43
+ * Check which config files exist
44
+ */
45
+ export declare function getExistingConfigFiles(cwd: string): Promise<string[]>;
46
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAY,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAmB,KAAK,aAAa,EAAuB,MAAM,aAAa,CAAC;AAgCvF;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAezE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC,CAoB/C;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAc3E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAc9E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAc9E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAEzE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAa3E"}