@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":"client-factory.js","sourceRoot":"","sources":["../source/client-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ParsedCommand } from './types/index.js';
2
+ export declare function parseInput(input: string): ParsedCommand;
3
+ export declare function isCommandInput(input: string): boolean;
4
+ export declare function isBashCommandInput(input: string): boolean;
5
+ //# sourceMappingURL=command-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-parser.d.ts","sourceRoot":"","sources":["../source/command-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAiCvD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD"}
@@ -0,0 +1,36 @@
1
+ export function parseInput(input) {
2
+ const trimmed = input.trim();
3
+ // Check for bash command (prefixed with !)
4
+ if (trimmed.startsWith('!')) {
5
+ const bashCommand = trimmed.slice(1);
6
+ return {
7
+ isCommand: false, // Not a regular command
8
+ isBashCommand: true,
9
+ bashCommand: bashCommand
10
+ };
11
+ }
12
+ // Check for regular command (prefixed with /)
13
+ if (!trimmed.startsWith('/')) {
14
+ return { isCommand: false };
15
+ }
16
+ const commandText = trimmed.slice(1);
17
+ if (!commandText) {
18
+ return { isCommand: true, command: '', args: [], fullCommand: '' };
19
+ }
20
+ const parts = commandText.split(/\s+/);
21
+ const command = parts[0];
22
+ const args = parts.slice(1);
23
+ return {
24
+ isCommand: true,
25
+ command,
26
+ args,
27
+ fullCommand: commandText
28
+ };
29
+ }
30
+ export function isCommandInput(input) {
31
+ return input.trim().startsWith('/');
32
+ }
33
+ export function isBashCommandInput(input) {
34
+ return input.trim().startsWith('!');
35
+ }
36
+ //# sourceMappingURL=command-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-parser.js","sourceRoot":"","sources":["../source/command-parser.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAE7B,2CAA2C;IAC3C,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO;YACL,SAAS,EAAE,KAAK,EAAE,wBAAwB;YAC1C,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,WAAW;SACzB,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE5B,OAAO;QACL,SAAS,EAAE,IAAI;QACf,OAAO;QACP,IAAI;QACJ,WAAW,EAAE,WAAW;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from '../types/index.js';
2
+ export declare const clearCommand: Command;
3
+ //# sourceMappingURL=clear.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clear.d.ts","sourceRoot":"","sources":["../../source/commands/clear.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAa1C,eAAO,MAAM,YAAY,EAAE,OAS1B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import SuccessMessage from '../components/success-message.js';
4
+ function Clear() {
5
+ return (_jsx(SuccessMessage, { hideBox: true, message: "\u2714\uFE0F Chat Cleared..." }));
6
+ }
7
+ export const clearCommand = {
8
+ name: 'clear',
9
+ description: 'Clear the chat history and model context',
10
+ handler: async (_args) => {
11
+ // Return info message saying chat was cleared
12
+ return React.createElement(Clear, {
13
+ key: `clear-${Date.now()}`,
14
+ });
15
+ },
16
+ };
17
+ //# sourceMappingURL=clear.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clear.js","sourceRoot":"","sources":["../../source/commands/clear.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAE9D,SAAS,KAAK;IACb,OAAO,CACN,KAAC,cAAc,IACd,OAAO,EAAE,IAAI,EACb,OAAO,EAAC,8BAAoB,GACX,CAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAY;IACpC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,0CAA0C;IACvD,OAAO,EAAE,KAAK,EAAE,KAAe,EAAE,EAAE;QAClC,8CAA8C;QAC9C,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;YACjC,GAAG,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE;SAC1B,CAAC,CAAC;IACJ,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from '../types/index.js';
2
+ export declare const commandsCommand: Command;
3
+ //# sourceMappingURL=custom-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-commands.d.ts","sourceRoot":"","sources":["../../source/commands/custom-commands.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAgB,MAAM,mBAAmB,CAAC;AA2G9D,eAAO,MAAM,eAAe,EAAE,OAc7B,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { CustomCommandLoader } from '../custom-commands/loader.js';
3
+ import React from 'react';
4
+ import { TitledBox, titleStyles } from '@mishieck/ink-titled-box';
5
+ import { Text, Box } from 'ink';
6
+ import { useTheme } from '../hooks/useTheme.js';
7
+ function formatCommand(cmd) {
8
+ const parts = [`/${cmd.fullName}`];
9
+ if (cmd.metadata.parameters && cmd.metadata.parameters.length > 0) {
10
+ parts.push(cmd.metadata.parameters.map((p) => `<${p}>`).join(' '));
11
+ }
12
+ if (cmd.metadata.description) {
13
+ parts.push(`- ${cmd.metadata.description}`);
14
+ }
15
+ if (cmd.metadata.aliases && cmd.metadata.aliases.length > 0) {
16
+ const aliasNames = cmd.metadata.aliases.map((a) => cmd.namespace ? `${cmd.namespace}:${a}` : a);
17
+ parts.push(`(aliases: ${aliasNames.join(', ')})`);
18
+ }
19
+ return parts.join(' ');
20
+ }
21
+ function CustomCommands({ commands }) {
22
+ const { colors } = useTheme();
23
+ // Sort commands alphabetically by full name
24
+ const sortedCommands = [...commands].sort((a, b) => a.fullName.localeCompare(b.fullName));
25
+ return (_jsx(TitledBox, { borderStyle: "round", titles: ['Custom Commands'], titleStyles: titleStyles.pill, width: 75, borderColor: colors.primary, paddingX: 2, paddingY: 1, flexDirection: "column", marginBottom: 1, children: commands.length === 0 ? (_jsxs(_Fragment, { children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: colors.white, bold: true, children: "No custom commands found" }) }), _jsx(Text, { color: colors.white, children: "To create custom commands:" }), _jsxs(Text, { color: colors.secondary, children: ["1. Create a ", _jsx(Text, { color: colors.primary, children: ".nanocoder/commands" }), ' ', "directory in your project"] }), _jsxs(Text, { color: colors.secondary, children: ["2. Add ", _jsx(Text, { color: colors.primary, children: ".md" }), " files with command prompts"] }), _jsx(Text, { color: colors.secondary, children: "3. Optionally add frontmatter for metadata:" }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsxs(Text, { color: colors.secondary, children: [`---\n`, `description: Generate unit tests\n`, `aliases: [test, unittest]\n`, `parameters: [filename]\n`, `---\n`, `Generate comprehensive unit tests for {{filename}}...`] }) })] })) : (_jsxs(_Fragment, { children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: colors.white, children: ["Found ", commands.length, " custom command", commands.length !== 1 ? 's' : '', ":"] }) }), sortedCommands.map((cmd, index) => (_jsxs(Text, { color: colors.white, children: ["\u2022 ", formatCommand(cmd)] }, index)))] })) }, colors.primary));
26
+ }
27
+ export const commandsCommand = {
28
+ name: 'custom-commands',
29
+ description: 'List all custom commands from .nanocoder/commands',
30
+ handler: async (_args) => {
31
+ // Create a custom command loader to get the commands
32
+ const loader = new CustomCommandLoader();
33
+ await loader.loadCommands();
34
+ const commands = loader.getAllCommands() || [];
35
+ return React.createElement(CustomCommands, {
36
+ key: `custom-commands-${Date.now()}`,
37
+ commands: commands,
38
+ });
39
+ },
40
+ };
41
+ //# sourceMappingURL=custom-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-commands.js","sourceRoot":"","sources":["../../source/commands/custom-commands.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from '../types/index.js';
2
+ export declare const debugCommand: Command;
3
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../source/commands/debug.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAW,MAAM,mBAAmB,CAAC;AAsIzD,eAAO,MAAM,YAAY,EAAE,OAiE1B,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { getLogLevel, setLogLevel } from '../config/logging.js';
3
+ import React from 'react';
4
+ import { TitledBox, titleStyles } from '@mishieck/ink-titled-box';
5
+ import { Box, Text } from 'ink';
6
+ import { useTerminalWidth } from '../hooks/useTerminalWidth.js';
7
+ import { useTheme } from '../hooks/useTheme.js';
8
+ import { getColors } from '../config/index.js';
9
+ function getLogLevelDescription(level) {
10
+ const colors = getColors();
11
+ switch (level) {
12
+ case 'silent':
13
+ return (_jsxs(_Fragment, { children: ["Silent mode:", ' ', _jsx(Text, { color: colors.white, children: "Only showing errors and essential messages" }), "."] }));
14
+ case 'normal':
15
+ return (_jsxs(_Fragment, { children: ["Normal mode:", ' ', _jsx(Text, { color: colors.white, children: "Showing standard output without debug info" }), "."] }));
16
+ case 'verbose':
17
+ return (_jsxs(_Fragment, { children: ["Verbose mode:", ' ', _jsx(Text, { color: colors.white, children: "Showing all debug and diagnostic information" }), "."] }));
18
+ default:
19
+ return _jsx(_Fragment, {});
20
+ }
21
+ }
22
+ function Debug({ currentLevel, newLevel, action, invalidArg }) {
23
+ const boxWidth = useTerminalWidth();
24
+ const { colors } = useTheme();
25
+ return (_jsx(TitledBox, { borderStyle: "round", titles: ['/debug'], titleStyles: titleStyles.pill, width: boxWidth, borderColor: colors.info, paddingX: 2, paddingY: 1, flexDirection: "column", marginBottom: 1, children: action === 'changed' && newLevel ? (_jsxs(_Fragment, { children: [_jsxs(Text, { color: colors.info, children: ["Logging level changed from", ' ', _jsx(Text, { color: colors.white, children: currentLevel }), " to", ' ', _jsx(Text, { color: colors.white, children: newLevel }), "."] }), _jsx(Box, { children: _jsx(Text, { color: colors.info, children: getLogLevelDescription(newLevel) }) })] })) : action === 'set' && newLevel ? (_jsxs(_Fragment, { children: [_jsxs(Text, { color: colors.info, children: ["Logging level set to ", _jsx(Text, { color: colors.white, children: newLevel }), "."] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.info, children: getLogLevelDescription(newLevel) }) })] })) : (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: colors.error, children: ["Invalid log level: ", invalidArg] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { color: colors.info, children: ["Current logging level:", ' ', _jsx(Text, { color: colors.white, children: currentLevel })] }), _jsx(Text, { color: colors.info, children: getLogLevelDescription(currentLevel) })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: colors.info, children: "Available levels:" }), _jsxs(Text, { color: colors.secondary, children: [' ', "\u2022 ", _jsx(Text, { color: colors.white, children: "silent" }), " - Minimal output (errors only)"] }), _jsxs(Text, { color: colors.secondary, children: [' ', "\u2022 ", _jsx(Text, { color: colors.white, children: "normal" }), " - Standard output (default)"] }), _jsxs(Text, { color: colors.secondary, children: [' ', "\u2022 ", _jsx(Text, { color: colors.white, children: "verbose" }), " - Debug output (all logs)"] })] }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: colors.info, children: ["Usage:", ' ', _jsx(Text, { color: colors.white, children: "/debug [silent|normal|verbose]" }), ' ', "or just ", _jsx(Text, { color: colors.white, children: "/debug" }), " to cycle"] }) })] })) }, colors.primary));
26
+ }
27
+ export const debugCommand = {
28
+ name: 'debug',
29
+ description: 'Toggle debug/verbose logging output',
30
+ handler: async (args, _messages, _metadata) => {
31
+ const currentLevel = getLogLevel();
32
+ // If no argument provided, cycle through levels
33
+ if (args.length === 0) {
34
+ let newLevel;
35
+ switch (currentLevel) {
36
+ case 'silent':
37
+ newLevel = 'normal';
38
+ break;
39
+ case 'normal':
40
+ newLevel = 'verbose';
41
+ break;
42
+ case 'verbose':
43
+ newLevel = 'silent';
44
+ break;
45
+ default:
46
+ newLevel = 'normal';
47
+ }
48
+ setLogLevel(newLevel);
49
+ return React.createElement(Debug, {
50
+ key: `debug-changed-${Date.now()}`,
51
+ currentLevel: currentLevel,
52
+ newLevel: newLevel,
53
+ action: 'changed',
54
+ });
55
+ }
56
+ // If argument provided, set specific level
57
+ const requestedLevel = args[0]?.toLowerCase();
58
+ if (requestedLevel === 'silent' ||
59
+ requestedLevel === 'normal' ||
60
+ requestedLevel === 'verbose') {
61
+ setLogLevel(requestedLevel);
62
+ return React.createElement(Debug, {
63
+ key: `debug-set-${Date.now()}`,
64
+ currentLevel: currentLevel,
65
+ newLevel: requestedLevel,
66
+ action: 'set',
67
+ });
68
+ }
69
+ // Invalid argument provided
70
+ if (args[0]) {
71
+ return React.createElement(Debug, {
72
+ key: `debug-invalid-${Date.now()}`,
73
+ currentLevel: currentLevel,
74
+ action: 'invalid',
75
+ invalidArg: args[0],
76
+ });
77
+ }
78
+ // Show current level and available options
79
+ return React.createElement(Debug, {
80
+ key: `debug-show-${Date.now()}`,
81
+ currentLevel: currentLevel,
82
+ action: 'show',
83
+ });
84
+ },
85
+ };
86
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../source/commands/debug.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from '../types/index.js';
2
+ export declare const exitCommand: Command;
3
+ //# sourceMappingURL=exit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exit.d.ts","sourceRoot":"","sources":["../../source/commands/exit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAI1C,eAAO,MAAM,WAAW,EAAE,OAczB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import InfoMessage from '../components/info-message.js';
2
+ import React from 'react';
3
+ export const exitCommand = {
4
+ name: 'exit',
5
+ description: 'Exit the application',
6
+ handler: async (_args, _messages, _metadata) => {
7
+ // Return InfoMessage component first, then exit after a short delay
8
+ setTimeout(() => {
9
+ process.exit(0);
10
+ }, 500); // 500ms delay to allow message to render
11
+ return React.createElement(InfoMessage, {
12
+ message: 'Goodbye! 👋',
13
+ hideTitle: true,
14
+ });
15
+ },
16
+ };
17
+ //# sourceMappingURL=exit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exit.js","sourceRoot":"","sources":["../../source/commands/exit.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,WAAW,GAAY;IACnC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,sBAAsB;IACnC,OAAO,EAAE,KAAK,EAAE,KAAe,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;QACxD,oEAAoE;QACpE,UAAU,CAAC,GAAG,EAAE;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,yCAAyC;QAElD,OAAO,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE;YACvC,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,IAAI;SACf,CAAC,CAAC;IACJ,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from '../types/index.js';
2
+ export declare const exportCommand: Command;
3
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../source/commands/export.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAU,MAAM,mBAAmB,CAAC;AA6CnD,eAAO,MAAM,aAAa,EAAE,OAiC3B,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import SuccessMessage from '../components/success-message.js';
4
+ import fs from 'fs/promises';
5
+ import path from 'path';
6
+ const formatMessageContent = (message) => {
7
+ let content = '';
8
+ switch (message.role) {
9
+ case 'user':
10
+ content += `## User\n${message.content}`;
11
+ break;
12
+ case 'assistant':
13
+ content += `## Assistant\n${message.content || ''}`;
14
+ if (message.tool_calls) {
15
+ content += `\n\n[tool_use: ${message.tool_calls
16
+ .map(tc => tc.function.name)
17
+ .join(', ')}]`;
18
+ }
19
+ break;
20
+ case 'tool':
21
+ content +=
22
+ `## Tool Output: ${message.name}\n` +
23
+ '```\n' +
24
+ `${message.content}\n` +
25
+ '```\n';
26
+ break;
27
+ case 'system':
28
+ // For now, we don't include system messages in the export
29
+ return '';
30
+ default:
31
+ return '';
32
+ }
33
+ return content + '\n\n';
34
+ };
35
+ function Export({ filename }) {
36
+ return (_jsx(SuccessMessage, { hideBox: true, message: `✔️ Chat exported to ${filename}` }));
37
+ }
38
+ export const exportCommand = {
39
+ name: 'export',
40
+ description: 'Export the chat history to a markdown file',
41
+ handler: async (args, messages, { provider, model, tokens }) => {
42
+ const filename = args[0] ||
43
+ `nanocoder-chat-${new Date().toISOString().replace(/:/g, '-')}.md`;
44
+ const filepath = path.resolve(process.cwd(), filename);
45
+ const frontmatter = `---
46
+ session_date: ${new Date().toISOString()}
47
+ provider: ${provider}
48
+ model: ${model}
49
+ total_tokens: ${tokens}
50
+ ---
51
+
52
+ # Nanocoder Chat Export
53
+
54
+ `;
55
+ const markdownContent = messages.map(formatMessageContent).join('');
56
+ await fs.writeFile(filepath, frontmatter + markdownContent);
57
+ return React.createElement(Export, {
58
+ key: `export-${Date.now()}`,
59
+ filename,
60
+ });
61
+ },
62
+ };
63
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../source/commands/export.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACjD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,MAAM;YACV,OAAO,IAAI,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM;QACP,KAAK,WAAW;YACf,OAAO,IAAI,iBAAiB,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACpD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACxB,OAAO,IAAI,kBAAkB,OAAO,CAAC,UAAU;qBAC7C,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;qBAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACjB,CAAC;YACD,MAAM;QACP,KAAK,MAAM;YACV,OAAO;gBACN,mBAAmB,OAAO,CAAC,IAAI,IAAI;oBACnC,OAAO;oBACP,GAAG,OAAO,CAAC,OAAO,IAAI;oBACtB,OAAO,CAAC;YACT,MAAM;QACP,KAAK,QAAQ;YACZ,0DAA0D;YAC1D,OAAO,EAAE,CAAC;QACX;YACC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,GAAG,MAAM,CAAC;AACzB,CAAC,CAAC;AAEF,SAAS,MAAM,CAAC,EAAC,QAAQ,EAAqB;IAC7C,OAAO,CACN,KAAC,cAAc,IACd,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,uBAAuB,QAAQ,EAAE,GACzB,CAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAY;IACrC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,4CAA4C;IACzD,OAAO,EAAE,KAAK,EACb,IAAc,EACd,QAAmB,EACnB,EAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAC,EACxB,EAAE;QACH,MAAM,QAAQ,GACb,IAAI,CAAC,CAAC,CAAC;YACP,kBAAkB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAEvD,MAAM,WAAW,GAAG;gBACN,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,QAAQ;SACX,KAAK;gBACE,MAAM;;;;;CAKrB,CAAC;QAEA,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,GAAG,eAAe,CAAC,CAAC;QAE5D,OAAO,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;YAClC,GAAG,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE;YAC3B,QAAQ;SACR,CAAC,CAAC;IACJ,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from '../types/index.js';
2
+ export declare const helpCommand: Command;
3
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../source/commands/help.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AA2F1C,eAAO,MAAM,WAAW,EAAE,OAYzB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { commandRegistry } from '../commands.js';
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ import React from 'react';
7
+ import { TitledBox, titleStyles } from '@mishieck/ink-titled-box';
8
+ import { Box, Text } from 'ink';
9
+ import { useTerminalWidth } from '../hooks/useTerminalWidth.js';
10
+ import { useTheme } from '../hooks/useTheme.js';
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = path.dirname(__filename);
13
+ const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../package.json'), 'utf8'));
14
+ function Help({ version, commands, }) {
15
+ const boxWidth = useTerminalWidth();
16
+ const { colors } = useTheme();
17
+ return (_jsxs(TitledBox, { borderStyle: "round", titles: ['/help'], titleStyles: titleStyles.pill, width: boxWidth, borderColor: colors.primary, paddingX: 2, paddingY: 1, flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: colors.primary, bold: true, children: ["Nanocoder \u2013 ", version] }) }), _jsx(Text, { color: colors.white, children: "A local-first CLI coding agent that brings the power of agentic coding tools like Claude Code and Gemini CLI to local models or controlled APIs like OpenRouter." }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.secondary, children: "Always review model responses, especially when running code. Models have read access to files in the current directory and can run commands and edit files with your permission." }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.primary, bold: true, children: "Common Tasks:" }) }), _jsxs(Text, { color: colors.white, children: [' ', "\u2022 Ask questions about your codebase ", '>', " How does foo.py work?"] }), _jsxs(Text, { color: colors.white, children: [" \u2022 Edit files ", '>', " Update bar.ts to..."] }), _jsxs(Text, { color: colors.white, children: [" \u2022 Fix errors ", '>', " cargo build"] }), _jsxs(Text, { color: colors.white, children: [" \u2022 Run commands ", '>', " /help"] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.primary, bold: true, children: "Commands:" }) }), commands.length === 0 ? (_jsx(Text, { color: colors.white, children: " No commands available." })) : (commands.map((cmd, index) => (_jsxs(Text, { color: colors.white, children: [' ', "\u2022 /", cmd.name, " - ", cmd.description] }, index))))] }, colors.primary));
18
+ }
19
+ export const helpCommand = {
20
+ name: 'help',
21
+ description: 'Show available commands',
22
+ handler: async (_args, _messages, _metadata) => {
23
+ const commands = commandRegistry.getAll();
24
+ return React.createElement(Help, {
25
+ key: `help-${Date.now()}`,
26
+ version: packageJson.version,
27
+ commands: commands,
28
+ });
29
+ },
30
+ };
31
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../source/commands/help.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export * from './exit.js';
2
+ export * from './help.js';
3
+ export * from './clear.js';
4
+ export * from './model.js';
5
+ export * from './provider.js';
6
+ export * from './mcp.js';
7
+ export * from './debug.js';
8
+ export * from './custom-commands.js';
9
+ export * from './init.js';
10
+ export * from './theme.js';
11
+ export * from './export.js';
12
+ export * from './update.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from './exit.js';
2
+ export * from './help.js';
3
+ export * from './clear.js';
4
+ export * from './model.js';
5
+ export * from './provider.js';
6
+ export * from './mcp.js';
7
+ export * from './debug.js';
8
+ export * from './custom-commands.js';
9
+ export * from './init.js';
10
+ export * from './theme.js';
11
+ export * from './export.js';
12
+ export * from './update.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from '../types/index.js';
2
+ export declare const initCommand: Command;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../source/commands/init.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAmN1C,eAAO,MAAM,WAAW,EAAE,OA2GzB,CAAC"}