@nanocollective/nanocoder 1.11.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 (392) hide show
  1. package/LICENSE.md +23 -0
  2. package/README.md +366 -0
  3. package/dist/app/hooks/useAppInitialization.d.ts +26 -0
  4. package/dist/app/hooks/useAppInitialization.d.ts.map +1 -0
  5. package/dist/app/hooks/useAppInitialization.js +151 -0
  6. package/dist/app/hooks/useAppInitialization.js.map +1 -0
  7. package/dist/app/hooks/useAppState.d.ts +84 -0
  8. package/dist/app/hooks/useAppState.d.ts.map +1 -0
  9. package/dist/app/hooks/useAppState.js +162 -0
  10. package/dist/app/hooks/useAppState.js.map +1 -0
  11. package/dist/app/hooks/useChatHandler.d.ts +26 -0
  12. package/dist/app/hooks/useChatHandler.d.ts.map +1 -0
  13. package/dist/app/hooks/useChatHandler.js +532 -0
  14. package/dist/app/hooks/useChatHandler.js.map +1 -0
  15. package/dist/app/hooks/useDirectoryTrust.d.ts +15 -0
  16. package/dist/app/hooks/useDirectoryTrust.d.ts.map +1 -0
  17. package/dist/app/hooks/useDirectoryTrust.js +77 -0
  18. package/dist/app/hooks/useDirectoryTrust.js.map +1 -0
  19. package/dist/app/hooks/useModeHandlers.d.ts +31 -0
  20. package/dist/app/hooks/useModeHandlers.d.ts.map +1 -0
  21. package/dist/app/hooks/useModeHandlers.js +98 -0
  22. package/dist/app/hooks/useModeHandlers.js.map +1 -0
  23. package/dist/app/hooks/useToolHandler.d.ts +32 -0
  24. package/dist/app/hooks/useToolHandler.d.ts.map +1 -0
  25. package/dist/app/hooks/useToolHandler.js +154 -0
  26. package/dist/app/hooks/useToolHandler.js.map +1 -0
  27. package/dist/app/utils/appUtils.d.ts +4 -0
  28. package/dist/app/utils/appUtils.d.ts.map +1 -0
  29. package/dist/app/utils/appUtils.js +147 -0
  30. package/dist/app/utils/appUtils.js.map +1 -0
  31. package/dist/app/utils/conversationState.d.ts +68 -0
  32. package/dist/app/utils/conversationState.d.ts.map +1 -0
  33. package/dist/app/utils/conversationState.js +199 -0
  34. package/dist/app/utils/conversationState.js.map +1 -0
  35. package/dist/app.d.ts +2 -0
  36. package/dist/app.d.ts.map +1 -0
  37. package/dist/app.js +193 -0
  38. package/dist/app.js.map +1 -0
  39. package/dist/cli.d.ts +3 -0
  40. package/dist/cli.d.ts.map +1 -0
  41. package/dist/cli.js +6 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/client-factory.d.ts +6 -0
  44. package/dist/client-factory.d.ts.map +1 -0
  45. package/dist/client-factory.js +111 -0
  46. package/dist/client-factory.js.map +1 -0
  47. package/dist/command-parser.d.ts +5 -0
  48. package/dist/command-parser.d.ts.map +1 -0
  49. package/dist/command-parser.js +36 -0
  50. package/dist/command-parser.js.map +1 -0
  51. package/dist/commands/clear.d.ts +3 -0
  52. package/dist/commands/clear.d.ts.map +1 -0
  53. package/dist/commands/clear.js +17 -0
  54. package/dist/commands/clear.js.map +1 -0
  55. package/dist/commands/custom-commands.d.ts +3 -0
  56. package/dist/commands/custom-commands.d.ts.map +1 -0
  57. package/dist/commands/custom-commands.js +41 -0
  58. package/dist/commands/custom-commands.js.map +1 -0
  59. package/dist/commands/debug.d.ts +3 -0
  60. package/dist/commands/debug.d.ts.map +1 -0
  61. package/dist/commands/debug.js +86 -0
  62. package/dist/commands/debug.js.map +1 -0
  63. package/dist/commands/exit.d.ts +3 -0
  64. package/dist/commands/exit.d.ts.map +1 -0
  65. package/dist/commands/exit.js +17 -0
  66. package/dist/commands/exit.js.map +1 -0
  67. package/dist/commands/export.d.ts +3 -0
  68. package/dist/commands/export.d.ts.map +1 -0
  69. package/dist/commands/export.js +63 -0
  70. package/dist/commands/export.js.map +1 -0
  71. package/dist/commands/help.d.ts +3 -0
  72. package/dist/commands/help.d.ts.map +1 -0
  73. package/dist/commands/help.js +31 -0
  74. package/dist/commands/help.js.map +1 -0
  75. package/dist/commands/index.d.ts +13 -0
  76. package/dist/commands/index.d.ts.map +1 -0
  77. package/dist/commands/index.js +13 -0
  78. package/dist/commands/index.js.map +1 -0
  79. package/dist/commands/init.d.ts +3 -0
  80. package/dist/commands/init.d.ts.map +1 -0
  81. package/dist/commands/init.js +214 -0
  82. package/dist/commands/init.js.map +1 -0
  83. package/dist/commands/mcp.d.ts +9 -0
  84. package/dist/commands/mcp.d.ts.map +1 -0
  85. package/dist/commands/mcp.js +41 -0
  86. package/dist/commands/mcp.js.map +1 -0
  87. package/dist/commands/model.d.ts +3 -0
  88. package/dist/commands/model.d.ts.map +1 -0
  89. package/dist/commands/model.js +11 -0
  90. package/dist/commands/model.js.map +1 -0
  91. package/dist/commands/provider.d.ts +3 -0
  92. package/dist/commands/provider.d.ts.map +1 -0
  93. package/dist/commands/provider.js +11 -0
  94. package/dist/commands/provider.js.map +1 -0
  95. package/dist/commands/theme.d.ts +3 -0
  96. package/dist/commands/theme.d.ts.map +1 -0
  97. package/dist/commands/theme.js +11 -0
  98. package/dist/commands/theme.js.map +1 -0
  99. package/dist/commands/update.d.ts +3 -0
  100. package/dist/commands/update.d.ts.map +1 -0
  101. package/dist/commands/update.js +10 -0
  102. package/dist/commands/update.js.map +1 -0
  103. package/dist/commands.d.ts +16 -0
  104. package/dist/commands.d.ts.map +1 -0
  105. package/dist/commands.js +46 -0
  106. package/dist/commands.js.map +1 -0
  107. package/dist/components/assistant-message.d.ts +4 -0
  108. package/dist/components/assistant-message.d.ts.map +1 -0
  109. package/dist/components/assistant-message.js +43 -0
  110. package/dist/components/assistant-message.js.map +1 -0
  111. package/dist/components/bash-execution-indicator.d.ts +4 -0
  112. package/dist/components/bash-execution-indicator.d.ts.map +1 -0
  113. package/dist/components/bash-execution-indicator.js +9 -0
  114. package/dist/components/bash-execution-indicator.js.map +1 -0
  115. package/dist/components/cancelling-indicator.d.ts +3 -0
  116. package/dist/components/cancelling-indicator.d.ts.map +1 -0
  117. package/dist/components/cancelling-indicator.js +10 -0
  118. package/dist/components/cancelling-indicator.js.map +1 -0
  119. package/dist/components/chat-queue.d.ts +4 -0
  120. package/dist/components/chat-queue.d.ts.map +1 -0
  121. package/dist/components/chat-queue.js +23 -0
  122. package/dist/components/chat-queue.js.map +1 -0
  123. package/dist/components/custom-commands.d.ts +7 -0
  124. package/dist/components/custom-commands.d.ts.map +1 -0
  125. package/dist/components/custom-commands.js +27 -0
  126. package/dist/components/custom-commands.js.map +1 -0
  127. package/dist/components/error-message.d.ts +7 -0
  128. package/dist/components/error-message.d.ts.map +1 -0
  129. package/dist/components/error-message.js +12 -0
  130. package/dist/components/error-message.js.map +1 -0
  131. package/dist/components/info-message.d.ts +6 -0
  132. package/dist/components/info-message.d.ts.map +1 -0
  133. package/dist/components/info-message.js +11 -0
  134. package/dist/components/info-message.js.map +1 -0
  135. package/dist/components/model-selector.d.ts +10 -0
  136. package/dist/components/model-selector.d.ts.map +1 -0
  137. package/dist/components/model-selector.js +59 -0
  138. package/dist/components/model-selector.js.map +1 -0
  139. package/dist/components/provider-selector.d.ts +9 -0
  140. package/dist/components/provider-selector.d.ts.map +1 -0
  141. package/dist/components/provider-selector.js +36 -0
  142. package/dist/components/provider-selector.js.map +1 -0
  143. package/dist/components/security-disclaimer.d.ts +7 -0
  144. package/dist/components/security-disclaimer.d.ts.map +1 -0
  145. package/dist/components/security-disclaimer.js +36 -0
  146. package/dist/components/security-disclaimer.js.map +1 -0
  147. package/dist/components/status.d.ts +6 -0
  148. package/dist/components/status.d.ts.map +1 -0
  149. package/dist/components/status.js +35 -0
  150. package/dist/components/status.js.map +1 -0
  151. package/dist/components/success-message.d.ts +6 -0
  152. package/dist/components/success-message.d.ts.map +1 -0
  153. package/dist/components/success-message.js +11 -0
  154. package/dist/components/success-message.js.map +1 -0
  155. package/dist/components/theme-selector.d.ts +8 -0
  156. package/dist/components/theme-selector.d.ts.map +1 -0
  157. package/dist/components/theme-selector.js +40 -0
  158. package/dist/components/theme-selector.js.map +1 -0
  159. package/dist/components/thinking-indicator.d.ts +4 -0
  160. package/dist/components/thinking-indicator.d.ts.map +1 -0
  161. package/dist/components/thinking-indicator.js +32 -0
  162. package/dist/components/thinking-indicator.js.map +1 -0
  163. package/dist/components/tool-confirmation.d.ts +9 -0
  164. package/dist/components/tool-confirmation.d.ts.map +1 -0
  165. package/dist/components/tool-confirmation.js +72 -0
  166. package/dist/components/tool-confirmation.js.map +1 -0
  167. package/dist/components/tool-execution-indicator.d.ts +3 -0
  168. package/dist/components/tool-execution-indicator.d.ts.map +1 -0
  169. package/dist/components/tool-execution-indicator.js +9 -0
  170. package/dist/components/tool-execution-indicator.js.map +1 -0
  171. package/dist/components/tool-message.d.ts +10 -0
  172. package/dist/components/tool-message.d.ts.map +1 -0
  173. package/dist/components/tool-message.js +16 -0
  174. package/dist/components/tool-message.js.map +1 -0
  175. package/dist/components/update-message.d.ts +7 -0
  176. package/dist/components/update-message.d.ts.map +1 -0
  177. package/dist/components/update-message.js +93 -0
  178. package/dist/components/update-message.js.map +1 -0
  179. package/dist/components/user-input.d.ts +10 -0
  180. package/dist/components/user-input.d.ts.map +1 -0
  181. package/dist/components/user-input.js +188 -0
  182. package/dist/components/user-input.js.map +1 -0
  183. package/dist/components/user-message.d.ts +4 -0
  184. package/dist/components/user-message.d.ts.map +1 -0
  185. package/dist/components/user-message.js +15 -0
  186. package/dist/components/user-message.js.map +1 -0
  187. package/dist/components/welcome-message.d.ts +3 -0
  188. package/dist/components/welcome-message.d.ts.map +1 -0
  189. package/dist/components/welcome-message.js +21 -0
  190. package/dist/components/welcome-message.js.map +1 -0
  191. package/dist/config/index.d.ts +10 -0
  192. package/dist/config/index.d.ts.map +1 -0
  193. package/dist/config/index.js +44 -0
  194. package/dist/config/index.js.map +1 -0
  195. package/dist/config/logging.d.ts +14 -0
  196. package/dist/config/logging.d.ts.map +1 -0
  197. package/dist/config/logging.js +58 -0
  198. package/dist/config/logging.js.map +1 -0
  199. package/dist/config/preferences.d.ts +7 -0
  200. package/dist/config/preferences.d.ts.map +1 -0
  201. package/dist/config/preferences.js +46 -0
  202. package/dist/config/preferences.js.map +1 -0
  203. package/dist/config/themes.d.ts +6 -0
  204. package/dist/config/themes.d.ts.map +1 -0
  205. package/dist/config/themes.js +295 -0
  206. package/dist/config/themes.js.map +1 -0
  207. package/dist/custom-commands/executor.d.ts +12 -0
  208. package/dist/custom-commands/executor.d.ts.map +1 -0
  209. package/dist/custom-commands/executor.js +45 -0
  210. package/dist/custom-commands/executor.js.map +1 -0
  211. package/dist/custom-commands/index.d.ts +4 -0
  212. package/dist/custom-commands/index.d.ts.map +1 -0
  213. package/dist/custom-commands/index.js +4 -0
  214. package/dist/custom-commands/index.js.map +1 -0
  215. package/dist/custom-commands/loader.d.ts +41 -0
  216. package/dist/custom-commands/loader.d.ts.map +1 -0
  217. package/dist/custom-commands/loader.js +129 -0
  218. package/dist/custom-commands/loader.js.map +1 -0
  219. package/dist/custom-commands/parser.d.ts +10 -0
  220. package/dist/custom-commands/parser.d.ts.map +1 -0
  221. package/dist/custom-commands/parser.js +181 -0
  222. package/dist/custom-commands/parser.js.map +1 -0
  223. package/dist/hooks/useInputState.d.ts +14 -0
  224. package/dist/hooks/useInputState.d.ts.map +1 -0
  225. package/dist/hooks/useInputState.js +66 -0
  226. package/dist/hooks/useInputState.js.map +1 -0
  227. package/dist/hooks/useTerminalWidth.d.ts +2 -0
  228. package/dist/hooks/useTerminalWidth.d.ts.map +1 -0
  229. package/dist/hooks/useTerminalWidth.js +20 -0
  230. package/dist/hooks/useTerminalWidth.js.map +1 -0
  231. package/dist/hooks/useTheme.d.ts +9 -0
  232. package/dist/hooks/useTheme.d.ts.map +1 -0
  233. package/dist/hooks/useTheme.js +10 -0
  234. package/dist/hooks/useTheme.js.map +1 -0
  235. package/dist/hooks/useUIState.d.ts +19 -0
  236. package/dist/hooks/useUIState.d.ts.map +1 -0
  237. package/dist/hooks/useUIState.js +46 -0
  238. package/dist/hooks/useUIState.js.map +1 -0
  239. package/dist/init/agents-template-generator.d.ts +29 -0
  240. package/dist/init/agents-template-generator.d.ts.map +1 -0
  241. package/dist/init/agents-template-generator.js +340 -0
  242. package/dist/init/agents-template-generator.js.map +1 -0
  243. package/dist/init/existing-rules-extractor.d.ts +43 -0
  244. package/dist/init/existing-rules-extractor.d.ts.map +1 -0
  245. package/dist/init/existing-rules-extractor.js +226 -0
  246. package/dist/init/existing-rules-extractor.js.map +1 -0
  247. package/dist/init/file-scanner.d.ts +40 -0
  248. package/dist/init/file-scanner.d.ts.map +1 -0
  249. package/dist/init/file-scanner.js +153 -0
  250. package/dist/init/file-scanner.js.map +1 -0
  251. package/dist/init/framework-detector.d.ts +57 -0
  252. package/dist/init/framework-detector.d.ts.map +1 -0
  253. package/dist/init/framework-detector.js +277 -0
  254. package/dist/init/framework-detector.js.map +1 -0
  255. package/dist/init/language-detector.d.ts +31 -0
  256. package/dist/init/language-detector.d.ts.map +1 -0
  257. package/dist/init/language-detector.js +205 -0
  258. package/dist/init/language-detector.js.map +1 -0
  259. package/dist/init/project-analyzer.d.ts +62 -0
  260. package/dist/init/project-analyzer.d.ts.map +1 -0
  261. package/dist/init/project-analyzer.js +294 -0
  262. package/dist/init/project-analyzer.js.map +1 -0
  263. package/dist/langgraph-client.d.ts +20 -0
  264. package/dist/langgraph-client.d.ts.map +1 -0
  265. package/dist/langgraph-client.js +245 -0
  266. package/dist/langgraph-client.js.map +1 -0
  267. package/dist/mcp/mcp-client.d.ts +23 -0
  268. package/dist/mcp/mcp-client.d.ts.map +1 -0
  269. package/dist/mcp/mcp-client.js +194 -0
  270. package/dist/mcp/mcp-client.js.map +1 -0
  271. package/dist/mcp/mcp-tool-adapter.d.ts +22 -0
  272. package/dist/mcp/mcp-tool-adapter.d.ts.map +1 -0
  273. package/dist/mcp/mcp-tool-adapter.js +49 -0
  274. package/dist/mcp/mcp-tool-adapter.js.map +1 -0
  275. package/dist/message-handler.d.ts +7 -0
  276. package/dist/message-handler.d.ts.map +1 -0
  277. package/dist/message-handler.js +53 -0
  278. package/dist/message-handler.js.map +1 -0
  279. package/dist/prompt-history.d.ts +14 -0
  280. package/dist/prompt-history.d.ts.map +1 -0
  281. package/dist/prompt-history.js +88 -0
  282. package/dist/prompt-history.js.map +1 -0
  283. package/dist/tool-calling/index.d.ts +6 -0
  284. package/dist/tool-calling/index.d.ts.map +1 -0
  285. package/dist/tool-calling/index.js +5 -0
  286. package/dist/tool-calling/index.js.map +1 -0
  287. package/dist/tool-calling/json-parser.d.ts +7 -0
  288. package/dist/tool-calling/json-parser.d.ts.map +1 -0
  289. package/dist/tool-calling/json-parser.js +168 -0
  290. package/dist/tool-calling/json-parser.js.map +1 -0
  291. package/dist/tool-calling/xml-parser.d.ts +34 -0
  292. package/dist/tool-calling/xml-parser.d.ts.map +1 -0
  293. package/dist/tool-calling/xml-parser.js +113 -0
  294. package/dist/tool-calling/xml-parser.js.map +1 -0
  295. package/dist/tools/create-file.d.ts +3 -0
  296. package/dist/tools/create-file.d.ts.map +1 -0
  297. package/dist/tools/create-file.js +66 -0
  298. package/dist/tools/create-file.js.map +1 -0
  299. package/dist/tools/delete-lines.d.ts +3 -0
  300. package/dist/tools/delete-lines.d.ts.map +1 -0
  301. package/dist/tools/delete-lines.js +218 -0
  302. package/dist/tools/delete-lines.js.map +1 -0
  303. package/dist/tools/execute-bash.d.ts +3 -0
  304. package/dist/tools/execute-bash.d.ts.map +1 -0
  305. package/dist/tools/execute-bash.js +107 -0
  306. package/dist/tools/execute-bash.js.map +1 -0
  307. package/dist/tools/index.d.ts +7 -0
  308. package/dist/tools/index.d.ts.map +1 -0
  309. package/dist/tools/index.js +23 -0
  310. package/dist/tools/index.js.map +1 -0
  311. package/dist/tools/insert-lines.d.ts +3 -0
  312. package/dist/tools/insert-lines.d.ts.map +1 -0
  313. package/dist/tools/insert-lines.js +185 -0
  314. package/dist/tools/insert-lines.js.map +1 -0
  315. package/dist/tools/read-file.d.ts +3 -0
  316. package/dist/tools/read-file.d.ts.map +1 -0
  317. package/dist/tools/read-file.js +81 -0
  318. package/dist/tools/read-file.js.map +1 -0
  319. package/dist/tools/read-many-files.d.ts +3 -0
  320. package/dist/tools/read-many-files.d.ts.map +1 -0
  321. package/dist/tools/read-many-files.js +109 -0
  322. package/dist/tools/read-many-files.js.map +1 -0
  323. package/dist/tools/replace-lines.d.ts +3 -0
  324. package/dist/tools/replace-lines.d.ts.map +1 -0
  325. package/dist/tools/replace-lines.js +220 -0
  326. package/dist/tools/replace-lines.js.map +1 -0
  327. package/dist/tools/tool-manager.d.ts +54 -0
  328. package/dist/tools/tool-manager.d.ts.map +1 -0
  329. package/dist/tools/tool-manager.js +108 -0
  330. package/dist/tools/tool-manager.js.map +1 -0
  331. package/dist/types/app.d.ts +46 -0
  332. package/dist/types/app.d.ts.map +1 -0
  333. package/dist/types/app.js +2 -0
  334. package/dist/types/app.js.map +1 -0
  335. package/dist/types/commands.d.ts +36 -0
  336. package/dist/types/commands.d.ts.map +1 -0
  337. package/dist/types/commands.js +2 -0
  338. package/dist/types/commands.js.map +1 -0
  339. package/dist/types/components.d.ts +87 -0
  340. package/dist/types/components.d.ts.map +1 -0
  341. package/dist/types/components.js +2 -0
  342. package/dist/types/components.js.map +1 -0
  343. package/dist/types/config.d.ts +35 -0
  344. package/dist/types/config.d.ts.map +1 -0
  345. package/dist/types/config.js +2 -0
  346. package/dist/types/config.js.map +1 -0
  347. package/dist/types/core.d.ts +57 -0
  348. package/dist/types/core.d.ts.map +1 -0
  349. package/dist/types/core.js +2 -0
  350. package/dist/types/core.js.map +1 -0
  351. package/dist/types/hooks.d.ts +26 -0
  352. package/dist/types/hooks.d.ts.map +1 -0
  353. package/dist/types/hooks.js +2 -0
  354. package/dist/types/hooks.js.map +1 -0
  355. package/dist/types/index.d.ts +11 -0
  356. package/dist/types/index.d.ts.map +1 -0
  357. package/dist/types/index.js +12 -0
  358. package/dist/types/index.js.map +1 -0
  359. package/dist/types/mcp.d.ts +19 -0
  360. package/dist/types/mcp.d.ts.map +1 -0
  361. package/dist/types/mcp.js +2 -0
  362. package/dist/types/mcp.js.map +1 -0
  363. package/dist/types/tools.d.ts +31 -0
  364. package/dist/types/tools.d.ts.map +1 -0
  365. package/dist/types/tools.js +2 -0
  366. package/dist/types/tools.js.map +1 -0
  367. package/dist/types/ui.d.ts +22 -0
  368. package/dist/types/ui.d.ts.map +1 -0
  369. package/dist/types/ui.js +2 -0
  370. package/dist/types/ui.js.map +1 -0
  371. package/dist/types/utils.d.ts +19 -0
  372. package/dist/types/utils.d.ts.map +1 -0
  373. package/dist/types/utils.js +2 -0
  374. package/dist/types/utils.js.map +1 -0
  375. package/dist/utils/message-queue.d.ts +8 -0
  376. package/dist/utils/message-queue.d.ts.map +1 -0
  377. package/dist/utils/message-queue.js +50 -0
  378. package/dist/utils/message-queue.js.map +1 -0
  379. package/dist/utils/programming-language-helper.d.ts +2 -0
  380. package/dist/utils/programming-language-helper.d.ts.map +1 -0
  381. package/dist/utils/programming-language-helper.js +32 -0
  382. package/dist/utils/programming-language-helper.js.map +1 -0
  383. package/dist/utils/prompt-processor.d.ts +6 -0
  384. package/dist/utils/prompt-processor.d.ts.map +1 -0
  385. package/dist/utils/prompt-processor.js +103 -0
  386. package/dist/utils/prompt-processor.js.map +1 -0
  387. package/dist/utils/update-checker.d.ts +6 -0
  388. package/dist/utils/update-checker.d.ts.map +1 -0
  389. package/dist/utils/update-checker.js +120 -0
  390. package/dist/utils/update-checker.js.map +1 -0
  391. package/package.json +97 -0
  392. package/source/app/prompts/main-prompt.md +107 -0
@@ -0,0 +1,340 @@
1
+ import { ExistingRulesExtractor } from './existing-rules-extractor.js';
2
+ export class AgentsTemplateGenerator {
3
+ /**
4
+ * Generate AGENTS.md content based on project analysis
5
+ */
6
+ static generateAgentsMd(analysis, existingRules) {
7
+ const sections = [];
8
+ // Header
9
+ sections.push('# AGENTS.md');
10
+ sections.push('');
11
+ sections.push(`AI coding agent instructions for **${analysis.projectName}**`);
12
+ sections.push('');
13
+ // Project Overview
14
+ sections.push('## Project Overview');
15
+ sections.push('');
16
+ if (analysis.description) {
17
+ sections.push(analysis.description);
18
+ sections.push('');
19
+ }
20
+ sections.push(`**Project Type:** ${analysis.projectType}`);
21
+ if (analysis.languages.primary) {
22
+ sections.push(`**Primary Language:** ${analysis.languages.primary.name} (${analysis.languages.primary.percentage}% of codebase)`);
23
+ }
24
+ if (analysis.languages.secondary.length > 0) {
25
+ const secondaryLangs = analysis.languages.secondary
26
+ .map(lang => `${lang.name} (${lang.percentage}%)`)
27
+ .join(', ');
28
+ sections.push(`**Secondary Languages:** ${secondaryLangs}`);
29
+ }
30
+ sections.push('');
31
+ // Architecture Summary
32
+ if (analysis.dependencies.frameworks.length > 0 || analysis.structure.importantDirectories.length > 0) {
33
+ sections.push('## Architecture');
34
+ sections.push('');
35
+ if (analysis.dependencies.frameworks.length > 0) {
36
+ sections.push('**Key Frameworks & Libraries:**');
37
+ for (const framework of analysis.dependencies.frameworks) {
38
+ const version = framework.version ? ` (${framework.version})` : '';
39
+ sections.push(`- ${framework.name}${version} - ${framework.category}`);
40
+ }
41
+ sections.push('');
42
+ }
43
+ if (analysis.structure.importantDirectories.length > 0) {
44
+ sections.push('**Project Structure:**');
45
+ for (const dir of analysis.structure.importantDirectories.slice(0, 20)) {
46
+ sections.push(`- \`${dir}/\` - ${this.getDirectoryDescription(dir)}`);
47
+ }
48
+ sections.push('');
49
+ }
50
+ }
51
+ // Key Files
52
+ if (Object.values(analysis.keyFiles).some(files => files.length > 0)) {
53
+ sections.push('## Key Files');
54
+ sections.push('');
55
+ if (analysis.keyFiles.config.length > 0) {
56
+ sections.push('**Configuration:**');
57
+ analysis.keyFiles.config.slice(0, 5).forEach(file => {
58
+ sections.push(`- \`${file}\` - ${this.getFileDescription(file)}`);
59
+ });
60
+ sections.push('');
61
+ }
62
+ if (analysis.keyFiles.documentation.length > 0) {
63
+ sections.push('**Documentation:**');
64
+ analysis.keyFiles.documentation.slice(0, 3).forEach(file => {
65
+ sections.push(`- \`${file}\``);
66
+ });
67
+ sections.push('');
68
+ }
69
+ }
70
+ // Build and Test Commands
71
+ if (Object.keys(analysis.buildCommands).length > 0) {
72
+ sections.push('## Development Commands');
73
+ sections.push('');
74
+ for (const [action, command] of Object.entries(analysis.buildCommands)) {
75
+ sections.push(`**${action}:**`);
76
+ sections.push('```bash');
77
+ sections.push(command);
78
+ sections.push('```');
79
+ sections.push('');
80
+ }
81
+ }
82
+ // Code Style Guidelines
83
+ const conventions = this.getCodingConventions(analysis);
84
+ if (conventions.length > 0) {
85
+ sections.push('## Code Style Guidelines');
86
+ sections.push('');
87
+ for (const convention of conventions) {
88
+ sections.push(`- ${convention}`);
89
+ }
90
+ sections.push('');
91
+ }
92
+ // Testing Instructions
93
+ if (analysis.dependencies.testingFrameworks.length > 0 || analysis.keyFiles.test.length > 0) {
94
+ sections.push('## Testing');
95
+ sections.push('');
96
+ if (analysis.dependencies.testingFrameworks.length > 0) {
97
+ sections.push(`**Testing Frameworks:** ${analysis.dependencies.testingFrameworks.join(', ')}`);
98
+ sections.push('');
99
+ }
100
+ if (analysis.buildCommands.Test) {
101
+ sections.push('**Run Tests:**');
102
+ sections.push('```bash');
103
+ sections.push(analysis.buildCommands.Test);
104
+ sections.push('```');
105
+ sections.push('');
106
+ }
107
+ if (analysis.keyFiles.test.length > 0) {
108
+ sections.push('**Test Files:**');
109
+ analysis.keyFiles.test.slice(0, 5).forEach(file => {
110
+ sections.push(`- \`${file}\``);
111
+ });
112
+ sections.push('');
113
+ }
114
+ }
115
+ // Existing AI rules and guidelines
116
+ if (existingRules && existingRules.length > 0) {
117
+ const mergedRules = ExistingRulesExtractor.mergeExistingRules(existingRules);
118
+ if (mergedRules.trim()) {
119
+ sections.push(mergedRules);
120
+ sections.push('');
121
+ }
122
+ }
123
+ // Special Considerations for AI
124
+ sections.push('## AI Coding Assistance Notes');
125
+ sections.push('');
126
+ sections.push('**Important Considerations:**');
127
+ // Language-specific notes
128
+ if (analysis.languages.primary) {
129
+ const langNotes = this.getLanguageSpecificNotes(analysis.languages.primary.name);
130
+ langNotes.forEach(note => sections.push(`- ${note}`));
131
+ }
132
+ // Framework-specific notes
133
+ for (const framework of analysis.dependencies.frameworks.slice(0, 3)) {
134
+ const frameworkNotes = this.getFrameworkSpecificNotes(framework.name);
135
+ frameworkNotes.forEach(note => sections.push(`- ${note}`));
136
+ }
137
+ // General notes
138
+ sections.push(`- Project has ${analysis.structure.scannedFiles} files across ${analysis.structure.directories.length} directories`);
139
+ if (analysis.structure.scannedFiles >= 500) {
140
+ sections.push('- Large codebase: Focus on specific areas when making changes');
141
+ }
142
+ if (analysis.keyFiles.build.length > 0) {
143
+ sections.push('- Check build configuration files before making structural changes');
144
+ }
145
+ sections.push('');
146
+ // Repository info
147
+ if (analysis.repository) {
148
+ sections.push('## Repository');
149
+ sections.push('');
150
+ sections.push(`**Source:** ${analysis.repository}`);
151
+ sections.push('');
152
+ }
153
+ // Footer
154
+ sections.push('---');
155
+ sections.push('');
156
+ sections.push('*This AGENTS.md file was generated by Nanocoder. Update it as your project evolves.*');
157
+ return sections.join('\n');
158
+ }
159
+ /**
160
+ * Get description for a directory based on its name
161
+ */
162
+ static getDirectoryDescription(dir) {
163
+ const dirName = dir.split('/').pop()?.toLowerCase() || '';
164
+ const descriptions = {
165
+ 'src': 'Source code',
166
+ 'source': 'Source code',
167
+ 'app': 'Application code',
168
+ 'lib': 'Library code',
169
+ 'libs': 'Libraries',
170
+ 'components': 'React/UI components',
171
+ 'pages': 'Page components',
172
+ 'views': 'View components',
173
+ 'routes': 'Routing logic',
174
+ 'api': 'API endpoints',
175
+ 'server': 'Server code',
176
+ 'backend': 'Backend code',
177
+ 'frontend': 'Frontend code',
178
+ 'models': 'Data models',
179
+ 'controllers': 'Controllers',
180
+ 'services': 'Service layer',
181
+ 'utils': 'Utility functions',
182
+ 'config': 'Configuration files',
183
+ 'configs': 'Configuration files',
184
+ 'settings': 'Settings',
185
+ 'assets': 'Static assets',
186
+ 'static': 'Static files',
187
+ 'public': 'Public assets',
188
+ 'docs': 'Documentation',
189
+ 'documentation': 'Documentation',
190
+ 'test': 'Test files',
191
+ 'tests': 'Test files',
192
+ '__tests__': 'Test files',
193
+ 'spec': 'Test specifications'
194
+ };
195
+ return descriptions[dirName] || 'Project files';
196
+ }
197
+ /**
198
+ * Get description for a file based on its name
199
+ */
200
+ static getFileDescription(file) {
201
+ const fileName = file.toLowerCase();
202
+ if (fileName.includes('package.json'))
203
+ return 'Node.js dependencies and scripts';
204
+ if (fileName.includes('cargo.toml'))
205
+ return 'Rust package configuration';
206
+ if (fileName.includes('go.mod'))
207
+ return 'Go module dependencies';
208
+ if (fileName.includes('requirements.txt'))
209
+ return 'Python dependencies';
210
+ if (fileName.includes('tsconfig.json'))
211
+ return 'TypeScript configuration';
212
+ if (fileName.includes('webpack'))
213
+ return 'Webpack build configuration';
214
+ if (fileName.includes('vite'))
215
+ return 'Vite build configuration';
216
+ if (fileName.includes('rollup'))
217
+ return 'Rollup build configuration';
218
+ if (fileName.includes('docker'))
219
+ return 'Docker configuration';
220
+ if (fileName.includes('makefile'))
221
+ return 'Build automation';
222
+ return 'Configuration file';
223
+ }
224
+ /**
225
+ * Get coding conventions based on project analysis
226
+ */
227
+ static getCodingConventions(analysis) {
228
+ const conventions = [];
229
+ if (analysis.languages.primary) {
230
+ const lang = analysis.languages.primary.name;
231
+ switch (lang) {
232
+ case 'JavaScript':
233
+ case 'TypeScript':
234
+ conventions.push('Use camelCase for variables and functions');
235
+ conventions.push('Use PascalCase for classes and components');
236
+ conventions.push('Prefer const/let over var');
237
+ conventions.push('Use async/await over callbacks when possible');
238
+ if (analysis.dependencies.frameworks.some(f => f.name.includes('React'))) {
239
+ conventions.push('Use functional components with hooks');
240
+ conventions.push('Follow React naming conventions for components');
241
+ }
242
+ break;
243
+ case 'Python':
244
+ conventions.push('Follow PEP 8 style guide');
245
+ conventions.push('Use snake_case for variables and functions');
246
+ conventions.push('Use PascalCase for classes');
247
+ conventions.push('Include docstrings for functions and classes');
248
+ conventions.push('Use type hints where appropriate');
249
+ break;
250
+ case 'Rust':
251
+ conventions.push('Follow Rust naming conventions (snake_case)');
252
+ conventions.push('Use cargo fmt for code formatting');
253
+ conventions.push('Handle errors explicitly with Result<T, E>');
254
+ conventions.push('Prefer owned types over references when possible');
255
+ break;
256
+ case 'Go':
257
+ conventions.push('Follow Go naming conventions');
258
+ conventions.push('Use gofmt for formatting');
259
+ conventions.push('Handle errors explicitly');
260
+ conventions.push('Use interfaces for abstraction');
261
+ conventions.push('Keep functions and methods concise');
262
+ break;
263
+ case 'Java':
264
+ conventions.push('Follow Java naming conventions');
265
+ conventions.push('Use camelCase for methods and variables');
266
+ conventions.push('Use PascalCase for classes');
267
+ conventions.push('Include JavaDoc for public methods');
268
+ break;
269
+ }
270
+ }
271
+ return conventions;
272
+ }
273
+ /**
274
+ * Get language-specific notes for AI assistance
275
+ */
276
+ static getLanguageSpecificNotes(language) {
277
+ switch (language) {
278
+ case 'JavaScript':
279
+ case 'TypeScript':
280
+ return [
281
+ 'Check package.json for available scripts before running commands',
282
+ 'Be aware of Node.js version requirements',
283
+ 'Consider impact on bundle size when adding dependencies'
284
+ ];
285
+ case 'Python':
286
+ return [
287
+ 'Check virtual environment setup before running commands',
288
+ 'Be mindful of Python version compatibility',
289
+ 'Follow import organization (stdlib, third-party, local)'
290
+ ];
291
+ case 'Rust':
292
+ return [
293
+ 'Run cargo check before cargo build for faster feedback',
294
+ 'Consider memory safety and ownership when suggesting changes',
295
+ 'Use cargo clippy for additional linting'
296
+ ];
297
+ case 'Go':
298
+ return [
299
+ 'Run go mod tidy after adding dependencies',
300
+ 'Consider goroutine usage for concurrent operations',
301
+ 'Follow Go idioms for error handling'
302
+ ];
303
+ default:
304
+ return [
305
+ 'Check project documentation for specific conventions',
306
+ 'Test changes thoroughly before committing'
307
+ ];
308
+ }
309
+ }
310
+ /**
311
+ * Get framework-specific notes for AI assistance
312
+ */
313
+ static getFrameworkSpecificNotes(framework) {
314
+ switch (framework) {
315
+ case 'React':
316
+ return [
317
+ 'Follow React hooks best practices',
318
+ 'Consider component reusability when creating new components'
319
+ ];
320
+ case 'Next.js':
321
+ return [
322
+ 'Be aware of SSR/SSG implications when making changes',
323
+ 'Check routing structure before adding new pages'
324
+ ];
325
+ case 'Django':
326
+ return [
327
+ 'Run migrations after model changes',
328
+ 'Follow Django project structure conventions'
329
+ ];
330
+ case 'Express.js':
331
+ return [
332
+ 'Consider middleware order when adding new routes',
333
+ 'Use proper error handling middleware'
334
+ ];
335
+ default:
336
+ return [];
337
+ }
338
+ }
339
+ }
340
+ //# sourceMappingURL=agents-template-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-template-generator.js","sourceRoot":"","sources":["../../source/init/agents-template-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ export interface ExistingRules {
2
+ source: string;
3
+ content: string;
4
+ type: 'agents' | 'rules' | 'instructions';
5
+ }
6
+ export declare class ExistingRulesExtractor {
7
+ private projectPath;
8
+ private static readonly AI_CONFIG_FILES;
9
+ constructor(projectPath: string);
10
+ /**
11
+ * Find and extract content from existing AI configuration files
12
+ */
13
+ extractExistingRules(): ExistingRules[];
14
+ /**
15
+ * Clean content and extract only AI-relevant information
16
+ */
17
+ private cleanAndExtractRelevantContent;
18
+ /**
19
+ * Extract AI agent specific sections
20
+ */
21
+ private extractAIAgentSections;
22
+ /**
23
+ * Extract rules file content
24
+ */
25
+ private extractRulesSections;
26
+ /**
27
+ * Extract general instructions from any file
28
+ */
29
+ private extractGeneralInstructions;
30
+ /**
31
+ * Extract key paragraphs based on content analysis
32
+ */
33
+ private extractKeyParagraphs;
34
+ /**
35
+ * Determine the type of configuration file
36
+ */
37
+ private determineFileType;
38
+ /**
39
+ * Merge existing rules into a single consolidated section
40
+ */
41
+ static mergeExistingRules(existingRules: ExistingRules[]): string;
42
+ }
43
+ //# sourceMappingURL=existing-rules-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"existing-rules-extractor.d.ts","sourceRoot":"","sources":["../../source/init/existing-rules-extractor.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,cAAc,CAAC;CAC3C;AAED,qBAAa,sBAAsB;IAsBrB,OAAO,CAAC,WAAW;IArB/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAmBrC;gBAEkB,WAAW,EAAE,MAAM;IAEvC;;OAEG;IACI,oBAAoB,IAAI,aAAa,EAAE;IA4B9C;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAuBtC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8C9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAIlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA8B5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;WACW,kBAAkB,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM;CAgDzE"}
@@ -0,0 +1,226 @@
1
+ import { readFileSync, existsSync } from 'fs';
2
+ import { join } from 'path';
3
+ export class ExistingRulesExtractor {
4
+ projectPath;
5
+ static AI_CONFIG_FILES = [
6
+ // AI agent specific files
7
+ 'AGENTS.md',
8
+ 'AGENT.md',
9
+ 'CLAUDE.md',
10
+ 'GEMINI.md',
11
+ 'CURSOR.md',
12
+ // Rules files in various directories
13
+ '.cursor/rules',
14
+ '.clinerules/rules',
15
+ '.roorules/rules',
16
+ // Alternative locations
17
+ '.ai/rules',
18
+ '.ai/instructions',
19
+ 'ai-instructions.md',
20
+ 'coding-guidelines.md',
21
+ 'dev-guidelines.md'
22
+ ];
23
+ constructor(projectPath) {
24
+ this.projectPath = projectPath;
25
+ }
26
+ /**
27
+ * Find and extract content from existing AI configuration files
28
+ */
29
+ extractExistingRules() {
30
+ const found = [];
31
+ for (const configFile of ExistingRulesExtractor.AI_CONFIG_FILES) {
32
+ const filePath = join(this.projectPath, configFile);
33
+ if (existsSync(filePath)) {
34
+ try {
35
+ const content = readFileSync(filePath, 'utf-8');
36
+ const cleanContent = this.cleanAndExtractRelevantContent(content, configFile);
37
+ if (cleanContent.trim()) {
38
+ found.push({
39
+ source: configFile,
40
+ content: cleanContent,
41
+ type: this.determineFileType(configFile)
42
+ });
43
+ }
44
+ }
45
+ catch (error) {
46
+ // Skip files we can't read
47
+ continue;
48
+ }
49
+ }
50
+ }
51
+ return found;
52
+ }
53
+ /**
54
+ * Clean content and extract only AI-relevant information
55
+ */
56
+ cleanAndExtractRelevantContent(content, filename) {
57
+ // Remove excessive markdown formatting but keep structure
58
+ let cleaned = content;
59
+ // Remove multiple consecutive empty lines
60
+ cleaned = cleaned.replace(/\n\s*\n\s*\n/g, '\n\n');
61
+ // Remove excessive header decoration
62
+ cleaned = cleaned.replace(/#{4,}/g, '###');
63
+ // For specific file types, extract relevant sections
64
+ if (filename.toLowerCase().includes('claude') || filename.toLowerCase().includes('agents')) {
65
+ return this.extractAIAgentSections(cleaned);
66
+ }
67
+ if (filename.includes('rules')) {
68
+ return this.extractRulesSections(cleaned);
69
+ }
70
+ // For generic files, extract key sections
71
+ return this.extractGeneralInstructions(cleaned);
72
+ }
73
+ /**
74
+ * Extract AI agent specific sections
75
+ */
76
+ extractAIAgentSections(content) {
77
+ const relevantSections = [];
78
+ const lines = content.split('\n');
79
+ let currentSection = '';
80
+ let inRelevantSection = false;
81
+ let sectionHeader = '';
82
+ const relevantHeaders = [
83
+ 'coding', 'style', 'convention', 'pattern', 'architecture',
84
+ 'testing', 'security', 'performance', 'build', 'deployment',
85
+ 'project', 'structure', 'guidelines', 'rules', 'instructions',
86
+ 'important', 'note', 'requirement', 'constraint'
87
+ ];
88
+ for (const line of lines) {
89
+ const trimmed = line.trim().toLowerCase();
90
+ // Check if this is a header
91
+ if (line.match(/^#+\s/) || line.match(/^[=\-]{3,}$/)) {
92
+ // Save previous section if it was relevant
93
+ if (inRelevantSection && currentSection.trim()) {
94
+ relevantSections.push(sectionHeader + '\n' + currentSection.trim());
95
+ }
96
+ // Check if new section is relevant
97
+ inRelevantSection = relevantHeaders.some(keyword => trimmed.includes(keyword));
98
+ sectionHeader = line;
99
+ currentSection = '';
100
+ }
101
+ else if (inRelevantSection) {
102
+ currentSection += line + '\n';
103
+ }
104
+ }
105
+ // Don't forget the last section
106
+ if (inRelevantSection && currentSection.trim()) {
107
+ relevantSections.push(sectionHeader + '\n' + currentSection.trim());
108
+ }
109
+ // If no specific sections found, extract key paragraphs
110
+ if (relevantSections.length === 0) {
111
+ return this.extractKeyParagraphs(content);
112
+ }
113
+ return relevantSections.join('\n\n');
114
+ }
115
+ /**
116
+ * Extract rules file content
117
+ */
118
+ extractRulesSections(content) {
119
+ // Rules files are typically more concise, keep most content
120
+ const lines = content.split('\n');
121
+ const filtered = lines.filter(line => {
122
+ const trimmed = line.trim();
123
+ // Skip very generic lines
124
+ if (trimmed.length < 10)
125
+ return true; // Keep short lines for structure
126
+ if (trimmed.includes('example') && trimmed.includes('only'))
127
+ return false;
128
+ if (trimmed.includes('this is just') && trimmed.includes('example'))
129
+ return false;
130
+ return true;
131
+ });
132
+ return filtered.join('\n');
133
+ }
134
+ /**
135
+ * Extract general instructions from any file
136
+ */
137
+ extractGeneralInstructions(content) {
138
+ return this.extractKeyParagraphs(content);
139
+ }
140
+ /**
141
+ * Extract key paragraphs based on content analysis
142
+ */
143
+ extractKeyParagraphs(content) {
144
+ const paragraphs = content.split('\n\n').filter(p => p.trim().length > 50);
145
+ const keyParagraphs = [];
146
+ const importantKeywords = [
147
+ 'must', 'should', 'always', 'never', 'important', 'critical',
148
+ 'required', 'mandatory', 'essential', 'convention', 'pattern',
149
+ 'style', 'format', 'structure', 'architecture', 'test', 'security'
150
+ ];
151
+ for (const paragraph of paragraphs) {
152
+ const lowerParagraph = paragraph.toLowerCase();
153
+ const relevanceScore = importantKeywords.reduce((score, keyword) => {
154
+ return score + (lowerParagraph.includes(keyword) ? 1 : 0);
155
+ }, 0);
156
+ // Include paragraphs with at least 2 important keywords
157
+ if (relevanceScore >= 2) {
158
+ keyParagraphs.push(paragraph.trim());
159
+ }
160
+ }
161
+ // If we didn't find enough relevant content, take first few paragraphs
162
+ if (keyParagraphs.length === 0 && paragraphs.length > 0) {
163
+ return paragraphs.slice(0, 3).join('\n\n');
164
+ }
165
+ return keyParagraphs.slice(0, 5).join('\n\n'); // Limit to 5 paragraphs max
166
+ }
167
+ /**
168
+ * Determine the type of configuration file
169
+ */
170
+ determineFileType(filename) {
171
+ const lower = filename.toLowerCase();
172
+ if (lower.includes('agent') || lower.includes('claude') || lower.includes('gemini')) {
173
+ return 'agents';
174
+ }
175
+ if (lower.includes('rule') || lower.includes('.cursor/') || lower.includes('.clinerules/')) {
176
+ return 'rules';
177
+ }
178
+ return 'instructions';
179
+ }
180
+ /**
181
+ * Merge existing rules into a single consolidated section
182
+ */
183
+ static mergeExistingRules(existingRules) {
184
+ if (existingRules.length === 0) {
185
+ return '';
186
+ }
187
+ const sections = [];
188
+ sections.push('## Existing Project Guidelines');
189
+ sections.push('');
190
+ sections.push('*The following guidelines were found in existing AI configuration files:*');
191
+ sections.push('');
192
+ // Group by type
193
+ const agentRules = existingRules.filter(r => r.type === 'agents');
194
+ const ruleFiles = existingRules.filter(r => r.type === 'rules');
195
+ const instructions = existingRules.filter(r => r.type === 'instructions');
196
+ // Add agent-specific rules
197
+ if (agentRules.length > 0) {
198
+ sections.push('### AI Agent Guidelines');
199
+ for (const rule of agentRules) {
200
+ sections.push(`**From ${rule.source}:**`);
201
+ sections.push(rule.content);
202
+ sections.push('');
203
+ }
204
+ }
205
+ // Add rule files
206
+ if (ruleFiles.length > 0) {
207
+ sections.push('### Project Rules');
208
+ for (const rule of ruleFiles) {
209
+ sections.push(`**From ${rule.source}:**`);
210
+ sections.push(rule.content);
211
+ sections.push('');
212
+ }
213
+ }
214
+ // Add general instructions
215
+ if (instructions.length > 0) {
216
+ sections.push('### Additional Instructions');
217
+ for (const rule of instructions) {
218
+ sections.push(`**From ${rule.source}:**`);
219
+ sections.push(rule.content);
220
+ sections.push('');
221
+ }
222
+ }
223
+ return sections.join('\n');
224
+ }
225
+ }
226
+ //# sourceMappingURL=existing-rules-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"existing-rules-extractor.js","sourceRoot":"","sources":["../../source/init/existing-rules-extractor.ts"],"names":[],"mappings":"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"}