@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 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../source/config/logging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,2BAA2B,CAAC;AAM5D,IAAI,eAAe,GAAa,QAAQ,CAAC;AAEzC,wCAAwC;AACxC,MAAM,UAAU,iBAAiB;IAChC,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,eAAe,GAAI,WAAmB,CAAC,QAAQ,IAAI,QAAQ,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,WAAW;IAC1B,OAAO,eAAe,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAe;IAC1C,eAAe,GAAG,KAAK,CAAC;IACxB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACrC,WAAmB,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtC,eAAe,CAAC,WAAW,CAAC,CAAC;AAC9B,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,SAAS,CAAC,KAA0C;IACnE,IAAI,eAAe,KAAK,QAAQ,EAAE,CAAC;QAClC,mCAAmC;QACnC,OAAO,KAAK,KAAK,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,eAAe,KAAK,QAAQ,EAAE,CAAC;QAClC,qDAAqD;QACrD,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC;IAC9C,CAAC;IAED,mCAAmC;IACnC,OAAO,IAAI,CAAC;AACb,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,IAAI,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACxB,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACxB,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACzB,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACzB,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;CACD,CAAC;AAEF,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,GAAG,IAAW;IAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ProviderType } from '../types/index.js';
2
+ import type { UserPreferences } from '../types/index.js';
3
+ export declare function loadPreferences(): UserPreferences;
4
+ export declare function savePreferences(preferences: UserPreferences): void;
5
+ export declare function updateLastUsed(provider: ProviderType, model: string): void;
6
+ export declare function getLastUsedModel(provider: ProviderType): string | undefined;
7
+ //# sourceMappingURL=preferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../source/config/preferences.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,wBAAgB,eAAe,IAAI,eAAe,CAYjD;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,eAAe,GAAG,IAAI,CAQlE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAY1E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAG3E"}
@@ -0,0 +1,46 @@
1
+ import { existsSync, readFileSync, writeFileSync } from "fs";
2
+ import { join } from "path";
3
+ import { homedir } from "os";
4
+ import { shouldLog } from "./logging.js";
5
+ import { logError } from '../utils/message-queue.js';
6
+ const PREFERENCES_PATH = join(homedir(), ".nanocoder-preferences.json");
7
+ export function loadPreferences() {
8
+ if (existsSync(PREFERENCES_PATH)) {
9
+ try {
10
+ const data = readFileSync(PREFERENCES_PATH, "utf-8");
11
+ return JSON.parse(data);
12
+ }
13
+ catch (error) {
14
+ if (shouldLog("warn")) {
15
+ logError(`Failed to load preferences: ${error}`);
16
+ }
17
+ }
18
+ }
19
+ return {};
20
+ }
21
+ export function savePreferences(preferences) {
22
+ try {
23
+ writeFileSync(PREFERENCES_PATH, JSON.stringify(preferences, null, 2));
24
+ }
25
+ catch (error) {
26
+ if (shouldLog("warn")) {
27
+ logError(`Failed to save preferences: ${error}`);
28
+ }
29
+ }
30
+ }
31
+ export function updateLastUsed(provider, model) {
32
+ const preferences = loadPreferences();
33
+ preferences.lastProvider = provider;
34
+ preferences.lastModel = model;
35
+ // Also save the model for this specific provider
36
+ if (!preferences.providerModels) {
37
+ preferences.providerModels = {};
38
+ }
39
+ preferences.providerModels[provider] = model;
40
+ savePreferences(preferences);
41
+ }
42
+ export function getLastUsedModel(provider) {
43
+ const preferences = loadPreferences();
44
+ return preferences.providerModels?.[provider];
45
+ }
46
+ //# sourceMappingURL=preferences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../source/config/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAM,2BAA2B,CAAC;AAInD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,6BAA6B,CAAC,CAAC;AAExE,MAAM,UAAU,eAAe;IAC7B,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,QAAQ,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAA4B;IAC1D,IAAI,CAAC;QACH,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,QAAQ,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAsB,EAAE,KAAa;IAClE,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,WAAW,CAAC,YAAY,GAAG,QAAQ,CAAC;IACpC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;IAE9B,iDAAiD;IACjD,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QAChC,WAAW,CAAC,cAAc,GAAG,EAAE,CAAC;IAClC,CAAC;IACD,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;IAE7C,eAAe,CAAC,WAAW,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAsB;IACrD,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,OAAO,WAAW,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Theme, ThemePreset } from '../types/ui.js';
2
+ export declare const themes: Record<ThemePreset, Theme>;
3
+ export declare function getTheme(themePreset: ThemePreset): Theme;
4
+ export declare function getThemeColors(themePreset: ThemePreset): import("../types/ui.js").Colors;
5
+ export declare const defaultTheme: ThemePreset;
6
+ //# sourceMappingURL=themes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../source/config/themes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEzD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CA8R7C,CAAC;AAEF,wBAAgB,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,CAExD;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,mCAEtD;AAED,eAAO,MAAM,YAAY,EAAE,WAA2B,CAAC"}
@@ -0,0 +1,295 @@
1
+ export const themes = {
2
+ 'tokyo-night': {
3
+ name: 'tokyo-night',
4
+ displayName: 'Tokyo Night',
5
+ colors: {
6
+ white: '#c0caf5',
7
+ black: '#1a1b26',
8
+ primary: '#bb9af7',
9
+ tool: '#7dcfff',
10
+ success: '#7AF778',
11
+ error: '#f7768e',
12
+ secondary: '#565f89',
13
+ info: '#2ac3de',
14
+ warning: '#e0af68',
15
+ diffAdded: '#1e2f1e',
16
+ diffRemoved: '#2f1e1e',
17
+ diffAddedText: '#9ece6a',
18
+ diffRemovedText: '#f7768e',
19
+ },
20
+ },
21
+ 'synthwave-84': {
22
+ name: 'synthwave-84',
23
+ displayName: 'Synthwave \'84',
24
+ colors: {
25
+ white: '#f8f8f2',
26
+ black: '#2b213a',
27
+ primary: '#ff006a',
28
+ tool: '#00d9ff',
29
+ success: '#a6e22e',
30
+ error: '#ff3838',
31
+ secondary: '#8a7ca8',
32
+ info: '#66d9ef',
33
+ warning: '#ffb86c',
34
+ diffAdded: '#2d4a1e',
35
+ diffRemoved: '#4a1e2d',
36
+ diffAddedText: '#a6e22e',
37
+ diffRemovedText: '#ff3838',
38
+ },
39
+ },
40
+ 'forest-night': {
41
+ name: 'forest-night',
42
+ displayName: 'Forest Night',
43
+ colors: {
44
+ white: '#d3c6aa',
45
+ black: '#2d353b',
46
+ primary: '#a7c080',
47
+ tool: '#83c092',
48
+ success: '#a7c080',
49
+ error: '#e67e80',
50
+ secondary: '#859289',
51
+ info: '#7fbbb3',
52
+ warning: '#dbbc7f',
53
+ diffAdded: '#2d3f2d',
54
+ diffRemoved: '#3f2d2d',
55
+ diffAddedText: '#a7c080',
56
+ diffRemovedText: '#e67e80',
57
+ },
58
+ },
59
+ 'material-ocean': {
60
+ name: 'material-ocean',
61
+ displayName: 'Material Ocean',
62
+ colors: {
63
+ white: '#b3e5fc',
64
+ black: '#0d1117',
65
+ primary: '#26c6da',
66
+ tool: '#4fc3f7',
67
+ success: '#66bb6a',
68
+ error: '#ef5350',
69
+ secondary: '#78909c',
70
+ info: '#29b6f6',
71
+ warning: '#ffa726',
72
+ diffAdded: '#1a3d2e',
73
+ diffRemoved: '#3d1a1a',
74
+ diffAddedText: '#66bb6a',
75
+ diffRemovedText: '#ef5350',
76
+ },
77
+ },
78
+ 'sunset-glow': {
79
+ name: 'sunset-glow',
80
+ displayName: 'Sunset Glow',
81
+ colors: {
82
+ white: '#fdf4dc',
83
+ black: '#2d1b14',
84
+ primary: '#ff6b35',
85
+ tool: '#f7941d',
86
+ success: '#52c41a',
87
+ error: '#ff4757',
88
+ secondary: '#a0826d',
89
+ info: '#ffa726',
90
+ warning: '#ffca28',
91
+ diffAdded: '#2d4a1e',
92
+ diffRemoved: '#4a1e2d',
93
+ diffAddedText: '#52c41a',
94
+ diffRemovedText: '#ff4757',
95
+ },
96
+ },
97
+ 'nord-frost': {
98
+ name: 'nord-frost',
99
+ displayName: 'Nord Frost',
100
+ colors: {
101
+ white: '#eceff4',
102
+ black: '#2e3440',
103
+ primary: '#88c0d0',
104
+ tool: '#8fbcbb',
105
+ success: '#a3be8c',
106
+ error: '#bf616a',
107
+ secondary: '#4c566a',
108
+ info: '#5e81ac',
109
+ warning: '#ebcb8b',
110
+ diffAdded: '#2d3f2d',
111
+ diffRemoved: '#3f2d2d',
112
+ diffAddedText: '#a3be8c',
113
+ diffRemovedText: '#bf616a',
114
+ },
115
+ },
116
+ 'rose-pine-dawn': {
117
+ name: 'rose-pine-dawn',
118
+ displayName: 'Rosé Pine Dawn',
119
+ colors: {
120
+ white: '#575279',
121
+ black: '#faf4ed',
122
+ primary: '#907aa9',
123
+ tool: '#56949f',
124
+ success: '#618a3d',
125
+ error: '#b4637a',
126
+ secondary: '#9893a5',
127
+ info: '#286983',
128
+ warning: '#ea9d34',
129
+ diffAdded: '#f0f0e8',
130
+ diffRemoved: '#f2e9e1',
131
+ diffAddedText: '#618a3d',
132
+ diffRemovedText: '#b4637a',
133
+ },
134
+ },
135
+ 'neon-jungle': {
136
+ name: 'neon-jungle',
137
+ displayName: 'Neon Jungle',
138
+ colors: {
139
+ white: '#e0ffe0',
140
+ black: '#0d1f0d',
141
+ primary: '#39ff14',
142
+ tool: '#00ff7f',
143
+ success: '#32cd32',
144
+ error: '#ff1493',
145
+ secondary: '#4a7c59',
146
+ info: '#00ffff',
147
+ warning: '#ffff00',
148
+ diffAdded: '#1a4d1a',
149
+ diffRemoved: '#4d1a4d',
150
+ diffAddedText: '#32cd32',
151
+ diffRemovedText: '#ff1493',
152
+ },
153
+ },
154
+ 'midnight-amethyst': {
155
+ name: 'midnight-amethyst',
156
+ displayName: 'Midnight Amethyst',
157
+ colors: {
158
+ white: '#e6e6fa',
159
+ black: '#0f0a1a',
160
+ primary: '#9966cc',
161
+ tool: '#ba55d3',
162
+ success: '#9370db',
163
+ error: '#dc143c',
164
+ secondary: '#6a5acd',
165
+ info: '#c0c0c0',
166
+ warning: '#dda0dd',
167
+ diffAdded: '#2d1a4d',
168
+ diffRemoved: '#4d1a1a',
169
+ diffAddedText: '#9370db',
170
+ diffRemovedText: '#dc143c',
171
+ },
172
+ },
173
+ 'desert-mirage': {
174
+ name: 'desert-mirage',
175
+ displayName: 'Desert Mirage',
176
+ colors: {
177
+ white: '#fff8dc',
178
+ black: '#2f1b14',
179
+ primary: '#ffd700',
180
+ tool: '#daa520',
181
+ success: '#228b22',
182
+ error: '#dc143c',
183
+ secondary: '#d2691e',
184
+ info: '#40e0d0',
185
+ warning: '#ffa500',
186
+ diffAdded: '#2d4a1e',
187
+ diffRemoved: '#4a1e1e',
188
+ diffAddedText: '#228b22',
189
+ diffRemovedText: '#dc143c',
190
+ },
191
+ },
192
+ 'cherry-blossom': {
193
+ name: 'cherry-blossom',
194
+ displayName: 'Cherry Blossom',
195
+ colors: {
196
+ white: '#5a5a5a',
197
+ black: '#fef7f0',
198
+ primary: '#ffb6c1',
199
+ tool: '#20b2aa',
200
+ success: '#3cb371',
201
+ error: '#cd5c5c',
202
+ secondary: '#bc8f8f',
203
+ info: '#4682b4',
204
+ warning: '#f4a460',
205
+ diffAdded: '#f0fff0',
206
+ diffRemoved: '#ffe4e1',
207
+ diffAddedText: '#3cb371',
208
+ diffRemovedText: '#cd5c5c',
209
+ },
210
+ },
211
+ 'electric-storm': {
212
+ name: 'electric-storm',
213
+ displayName: 'Electric Storm',
214
+ colors: {
215
+ white: '#f0f0f0',
216
+ black: '#1c1c1c',
217
+ primary: '#ffff00',
218
+ tool: '#00bfff',
219
+ success: '#adff2f',
220
+ error: '#ff4500',
221
+ secondary: '#696969',
222
+ info: '#87ceeb',
223
+ warning: '#ffd700',
224
+ diffAdded: '#2d4a1e',
225
+ diffRemoved: '#4a1e1e',
226
+ diffAddedText: '#adff2f',
227
+ diffRemovedText: '#ff4500',
228
+ },
229
+ },
230
+ 'deep-sea': {
231
+ name: 'deep-sea',
232
+ displayName: 'Deep Sea',
233
+ colors: {
234
+ white: '#b0e0e6',
235
+ black: '#000080',
236
+ primary: '#008b8b',
237
+ tool: '#00ced1',
238
+ success: '#20b2aa',
239
+ error: '#ff6347',
240
+ secondary: '#4682b4',
241
+ info: '#40e0d0',
242
+ warning: '#ffa500',
243
+ diffAdded: '#1e3a3a',
244
+ diffRemoved: '#3a1e1e',
245
+ diffAddedText: '#20b2aa',
246
+ diffRemovedText: '#ff6347',
247
+ },
248
+ },
249
+ 'volcanic-ash': {
250
+ name: 'volcanic-ash',
251
+ displayName: 'Volcanic Ash',
252
+ colors: {
253
+ white: '#dcdcdc',
254
+ black: '#2f2f2f',
255
+ primary: '#dc143c',
256
+ tool: '#ff4500',
257
+ success: '#32cd32',
258
+ error: '#ff0000',
259
+ secondary: '#708090',
260
+ info: '#ffa500',
261
+ warning: '#ffff00',
262
+ diffAdded: '#2d4a1e',
263
+ diffRemoved: '#4a1e1e',
264
+ diffAddedText: '#32cd32',
265
+ diffRemovedText: '#ff0000',
266
+ },
267
+ },
268
+ 'cyberpunk-mint': {
269
+ name: 'cyberpunk-mint',
270
+ displayName: 'Cyberpunk Mint',
271
+ colors: {
272
+ white: '#f0fff0',
273
+ black: '#000000',
274
+ primary: '#00ff7f',
275
+ tool: '#98fb98',
276
+ success: '#32cd32',
277
+ error: '#ff00ff',
278
+ secondary: '#2e8b57',
279
+ info: '#40e0d0',
280
+ warning: '#ffff00',
281
+ diffAdded: '#1a4d1a',
282
+ diffRemoved: '#4d1a4d',
283
+ diffAddedText: '#32cd32',
284
+ diffRemovedText: '#ff00ff',
285
+ },
286
+ },
287
+ };
288
+ export function getTheme(themePreset) {
289
+ return themes[themePreset];
290
+ }
291
+ export function getThemeColors(themePreset) {
292
+ return themes[themePreset].colors;
293
+ }
294
+ export const defaultTheme = 'tokyo-night';
295
+ //# sourceMappingURL=themes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.js","sourceRoot":"","sources":["../../source/config/themes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { CustomCommand } from '../types/index.js';
2
+ export declare class CustomCommandExecutor {
3
+ /**
4
+ * Execute a custom command with given arguments
5
+ */
6
+ execute(command: CustomCommand, args: string[]): Promise<string>;
7
+ /**
8
+ * Format command help text
9
+ */
10
+ formatHelp(command: CustomCommand): string;
11
+ }
12
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../source/custom-commands/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,qBAAqB;IACjC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BtE;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM;CAsB1C"}
@@ -0,0 +1,45 @@
1
+ import { substituteTemplateVariables } from './parser.js';
2
+ export class CustomCommandExecutor {
3
+ /**
4
+ * Execute a custom command with given arguments
5
+ */
6
+ async execute(command, args) {
7
+ // Build template variables from parameters and arguments
8
+ const variables = {};
9
+ if (command.metadata.parameters && command.metadata.parameters.length > 0) {
10
+ // Map arguments to parameters
11
+ command.metadata.parameters.forEach((param, index) => {
12
+ variables[param] = args[index] || '';
13
+ });
14
+ // Also provide all args as a single variable
15
+ variables['args'] = args.join(' ');
16
+ }
17
+ // Add some default context variables
18
+ variables['cwd'] = process.cwd();
19
+ variables['command'] = command.fullName;
20
+ // Substitute variables in the command content
21
+ const promptContent = substituteTemplateVariables(command.content, variables);
22
+ // Add a note about this being a custom command that can be improved
23
+ const fullPrompt = `[Executing custom command: /${command.fullName}]\n\n${promptContent}\n\n[Note: If this custom command could be improved, please provide feedback on how to enhance it.]`;
24
+ // Execute the prompt as if the user typed it
25
+ return fullPrompt;
26
+ }
27
+ /**
28
+ * Format command help text
29
+ */
30
+ formatHelp(command) {
31
+ const parts = [`/${command.fullName}`];
32
+ if (command.metadata.parameters && command.metadata.parameters.length > 0) {
33
+ parts.push(command.metadata.parameters.map((p) => `<${p}>`).join(' '));
34
+ }
35
+ if (command.metadata.description) {
36
+ parts.push(`- ${command.metadata.description}`);
37
+ }
38
+ if (command.metadata.aliases && command.metadata.aliases.length > 0) {
39
+ const aliasNames = command.metadata.aliases.map((a) => command.namespace ? `${command.namespace}:${a}` : a);
40
+ parts.push(`(aliases: ${aliasNames.join(', ')})`);
41
+ }
42
+ return parts.join(' ');
43
+ }
44
+ }
45
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../source/custom-commands/executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,2BAA2B,EAAC,MAAM,aAAa,CAAC;AAExD,MAAM,OAAO,qBAAqB;IACjC;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAAsB,EAAE,IAAc;QACnD,yDAAyD;QACzD,MAAM,SAAS,GAA2B,EAAE,CAAC;QAE7C,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3E,8BAA8B;YAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;gBACpE,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,6CAA6C;YAC7C,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,qCAAqC;QACrC,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACjC,SAAS,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;QAExC,8CAA8C;QAC9C,MAAM,aAAa,GAAG,2BAA2B,CAChD,OAAO,CAAC,OAAO,EACf,SAAS,CACT,CAAC;QAEF,oEAAoE;QACpE,MAAM,UAAU,GAAG,+BAA+B,OAAO,CAAC,QAAQ,QAAQ,aAAa,qGAAqG,CAAC;QAE7L,6CAA6C;QAC7C,OAAO,UAAU,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAsB;QAChC,MAAM,KAAK,GAAa,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEjD,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3E,KAAK,CAAC,IAAI,CACT,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAClE,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrE,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAC7D,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACnD,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,aAAa,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;CACD"}
@@ -0,0 +1,4 @@
1
+ export * from "./parser.js";
2
+ export * from "./loader.js";
3
+ export * from "./executor.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/custom-commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./parser.js";
2
+ export * from "./loader.js";
3
+ export * from "./executor.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/custom-commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { CustomCommand } from '../types/index.js';
2
+ export declare class CustomCommandLoader {
3
+ private commands;
4
+ private aliases;
5
+ private projectRoot;
6
+ private commandsDir;
7
+ constructor(projectRoot?: string);
8
+ /**
9
+ * Load all custom commands from the .nanocoder/commands directory
10
+ */
11
+ loadCommands(): Promise<void>;
12
+ /**
13
+ * Recursively scan directory for .md files
14
+ */
15
+ private scanDirectory;
16
+ /**
17
+ * Load a single command file
18
+ */
19
+ private loadCommand;
20
+ /**
21
+ * Get a command by name (checking aliases too)
22
+ */
23
+ getCommand(name: string): CustomCommand | undefined;
24
+ /**
25
+ * Get all available commands
26
+ */
27
+ getAllCommands(): CustomCommand[];
28
+ /**
29
+ * Get command suggestions for autocomplete
30
+ */
31
+ getSuggestions(prefix: string): string[];
32
+ /**
33
+ * Check if commands directory exists
34
+ */
35
+ hasCustomCommands(): boolean;
36
+ /**
37
+ * Get the commands directory path
38
+ */
39
+ getCommandsDirectory(): string;
40
+ }
41
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../source/custom-commands/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,GAAE,MAAsB;IAK/C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnC;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,WAAW;IA8BnB;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAcnD;;OAEG;IACH,cAAc,IAAI,aAAa,EAAE;IAIjC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAwBxC;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,oBAAoB,IAAI,MAAM;CAG/B"}
@@ -0,0 +1,129 @@
1
+ import { existsSync, readdirSync, statSync } from "fs";
2
+ import { join, basename } from "path";
3
+ import { parseCommandFile } from "./parser.js";
4
+ import { logError } from '../utils/message-queue.js';
5
+ export class CustomCommandLoader {
6
+ commands = new Map();
7
+ aliases = new Map(); // alias -> command name
8
+ projectRoot;
9
+ commandsDir;
10
+ constructor(projectRoot = process.cwd()) {
11
+ this.projectRoot = projectRoot;
12
+ this.commandsDir = join(projectRoot, ".nanocoder", "commands");
13
+ }
14
+ /**
15
+ * Load all custom commands from the .nanocoder/commands directory
16
+ */
17
+ async loadCommands() {
18
+ this.commands.clear();
19
+ this.aliases.clear();
20
+ if (!existsSync(this.commandsDir)) {
21
+ return; // No custom commands directory
22
+ }
23
+ this.scanDirectory(this.commandsDir);
24
+ }
25
+ /**
26
+ * Recursively scan directory for .md files
27
+ */
28
+ scanDirectory(dir, namespace) {
29
+ const entries = readdirSync(dir);
30
+ for (const entry of entries) {
31
+ const fullPath = join(dir, entry);
32
+ const stat = statSync(fullPath);
33
+ if (stat.isDirectory()) {
34
+ // Subdirectory becomes a namespace
35
+ const subNamespace = namespace ? `${namespace}:${entry}` : entry;
36
+ this.scanDirectory(fullPath, subNamespace);
37
+ }
38
+ else if (entry.endsWith(".md")) {
39
+ // Parse and register command
40
+ this.loadCommand(fullPath, namespace);
41
+ }
42
+ }
43
+ }
44
+ /**
45
+ * Load a single command file
46
+ */
47
+ loadCommand(filePath, namespace) {
48
+ try {
49
+ const parsed = parseCommandFile(filePath);
50
+ const commandName = basename(filePath, ".md");
51
+ const fullName = namespace ? `${namespace}:${commandName}` : commandName;
52
+ const command = {
53
+ name: commandName,
54
+ path: filePath,
55
+ namespace,
56
+ fullName,
57
+ metadata: parsed.metadata,
58
+ content: parsed.content,
59
+ };
60
+ // Register main command
61
+ this.commands.set(fullName, command);
62
+ // Register aliases
63
+ if (parsed.metadata.aliases) {
64
+ for (const alias of parsed.metadata.aliases) {
65
+ const fullAlias = namespace ? `${namespace}:${alias}` : alias;
66
+ this.aliases.set(fullAlias, fullName);
67
+ }
68
+ }
69
+ }
70
+ catch (error) {
71
+ logError(`Failed to load custom command from ${filePath}: ${error}`);
72
+ }
73
+ }
74
+ /**
75
+ * Get a command by name (checking aliases too)
76
+ */
77
+ getCommand(name) {
78
+ // Check direct command name
79
+ const command = this.commands.get(name);
80
+ if (command)
81
+ return command;
82
+ // Check aliases
83
+ const aliasTarget = this.aliases.get(name);
84
+ if (aliasTarget) {
85
+ return this.commands.get(aliasTarget);
86
+ }
87
+ return undefined;
88
+ }
89
+ /**
90
+ * Get all available commands
91
+ */
92
+ getAllCommands() {
93
+ return Array.from(this.commands.values());
94
+ }
95
+ /**
96
+ * Get command suggestions for autocomplete
97
+ */
98
+ getSuggestions(prefix) {
99
+ const suggestions = [];
100
+ const lowerPrefix = prefix.toLowerCase();
101
+ // Add matching command names
102
+ for (const [name, command] of this.commands.entries()) {
103
+ if (name.toLowerCase().startsWith(lowerPrefix)) {
104
+ suggestions.push(name);
105
+ }
106
+ }
107
+ // Add matching aliases
108
+ for (const [alias, target] of this.aliases.entries()) {
109
+ if (alias.toLowerCase().startsWith(lowerPrefix) &&
110
+ !suggestions.includes(alias)) {
111
+ suggestions.push(alias);
112
+ }
113
+ }
114
+ return suggestions.sort();
115
+ }
116
+ /**
117
+ * Check if commands directory exists
118
+ */
119
+ hasCustomCommands() {
120
+ return existsSync(this.commandsDir);
121
+ }
122
+ /**
123
+ * Get the commands directory path
124
+ */
125
+ getCommandsDirectory() {
126
+ return this.commandsDir;
127
+ }
128
+ }
129
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../source/custom-commands/loader.ts"],"names":[],"mappings":"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"}