@nexus-cortex/tui 4.47.0

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 (409) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +2 -0
  3. package/README.md +13 -0
  4. package/bin/cli-full.js +23 -0
  5. package/bin/cortex-ui.js +26 -0
  6. package/bin/ink-ui.js +108 -0
  7. package/bin/launcher-dev.js +266 -0
  8. package/bin/launcher.js +516 -0
  9. package/dist/commands/agent/InteractiveAgentMenu.d.ts +100 -0
  10. package/dist/commands/agent/InteractiveAgentMenu.d.ts.map +1 -0
  11. package/dist/commands/agent/InteractiveAgentMenu.js +909 -0
  12. package/dist/commands/agent/InteractiveAgentMenu.js.map +1 -0
  13. package/dist/commands/agent/index.d.ts +55 -0
  14. package/dist/commands/agent/index.d.ts.map +1 -0
  15. package/dist/commands/agent/index.js +714 -0
  16. package/dist/commands/agent/index.js.map +1 -0
  17. package/dist/commands/chat/interactive.d.ts +13 -0
  18. package/dist/commands/chat/interactive.d.ts.map +1 -0
  19. package/dist/commands/chat/interactive.js +2055 -0
  20. package/dist/commands/chat/interactive.js.map +1 -0
  21. package/dist/commands/system-message/EditorLauncher.d.ts +65 -0
  22. package/dist/commands/system-message/EditorLauncher.d.ts.map +1 -0
  23. package/dist/commands/system-message/EditorLauncher.js +143 -0
  24. package/dist/commands/system-message/EditorLauncher.js.map +1 -0
  25. package/dist/commands/system-message/InlineEditor.d.ts +23 -0
  26. package/dist/commands/system-message/InlineEditor.d.ts.map +1 -0
  27. package/dist/commands/system-message/InlineEditor.js +225 -0
  28. package/dist/commands/system-message/InlineEditor.js.map +1 -0
  29. package/dist/commands/system-message/InteractiveMenu.d.ts +76 -0
  30. package/dist/commands/system-message/InteractiveMenu.d.ts.map +1 -0
  31. package/dist/commands/system-message/InteractiveMenu.js +979 -0
  32. package/dist/commands/system-message/InteractiveMenu.js.map +1 -0
  33. package/dist/commands/system-message/index.d.ts +56 -0
  34. package/dist/commands/system-message/index.d.ts.map +1 -0
  35. package/dist/commands/system-message/index.js +694 -0
  36. package/dist/commands/system-message/index.js.map +1 -0
  37. package/dist/commands/ui/artifacts.d.ts +14 -0
  38. package/dist/commands/ui/artifacts.d.ts.map +1 -0
  39. package/dist/commands/ui/artifacts.js +22 -0
  40. package/dist/commands/ui/artifacts.js.map +1 -0
  41. package/dist/commands/ui/config.d.ts +12 -0
  42. package/dist/commands/ui/config.d.ts.map +1 -0
  43. package/dist/commands/ui/config.js +26 -0
  44. package/dist/commands/ui/config.js.map +1 -0
  45. package/dist/commands/ui/context.d.ts +16 -0
  46. package/dist/commands/ui/context.d.ts.map +1 -0
  47. package/dist/commands/ui/context.js +28 -0
  48. package/dist/commands/ui/context.js.map +1 -0
  49. package/dist/commands/ui/middleware.d.ts +14 -0
  50. package/dist/commands/ui/middleware.d.ts.map +1 -0
  51. package/dist/commands/ui/middleware.js +22 -0
  52. package/dist/commands/ui/middleware.js.map +1 -0
  53. package/dist/commands/ui/models.d.ts +14 -0
  54. package/dist/commands/ui/models.d.ts.map +1 -0
  55. package/dist/commands/ui/models.js +50 -0
  56. package/dist/commands/ui/models.js.map +1 -0
  57. package/dist/commands/ui/permissions.d.ts +14 -0
  58. package/dist/commands/ui/permissions.d.ts.map +1 -0
  59. package/dist/commands/ui/permissions.js +22 -0
  60. package/dist/commands/ui/permissions.js.map +1 -0
  61. package/dist/commands/ui/sessions.d.ts +13 -0
  62. package/dist/commands/ui/sessions.d.ts.map +1 -0
  63. package/dist/commands/ui/sessions.js +45 -0
  64. package/dist/commands/ui/sessions.js.map +1 -0
  65. package/dist/commands/ui/system-messages.d.ts +5 -0
  66. package/dist/commands/ui/system-messages.d.ts.map +1 -0
  67. package/dist/commands/ui/system-messages.js +19 -0
  68. package/dist/commands/ui/system-messages.js.map +1 -0
  69. package/dist/commands/ui/themes.d.ts +12 -0
  70. package/dist/commands/ui/themes.d.ts.map +1 -0
  71. package/dist/commands/ui/themes.js +40 -0
  72. package/dist/commands/ui/themes.js.map +1 -0
  73. package/dist/commands/ui/tmux.d.ts +5 -0
  74. package/dist/commands/ui/tmux.d.ts.map +1 -0
  75. package/dist/commands/ui/tmux.js +19 -0
  76. package/dist/commands/ui/tmux.js.map +1 -0
  77. package/dist/cortex.d.ts +12 -0
  78. package/dist/cortex.d.ts.map +1 -0
  79. package/dist/cortex.js +320 -0
  80. package/dist/cortex.js.map +1 -0
  81. package/dist/index.d.ts +3 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +112 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/ink-ui/CortexApp.d.ts +28 -0
  86. package/dist/ink-ui/CortexApp.d.ts.map +1 -0
  87. package/dist/ink-ui/CortexApp.js +2291 -0
  88. package/dist/ink-ui/CortexApp.js.map +1 -0
  89. package/dist/ink-ui/SimpleInputBuffer.d.ts +63 -0
  90. package/dist/ink-ui/SimpleInputBuffer.d.ts.map +1 -0
  91. package/dist/ink-ui/SimpleInputBuffer.js +369 -0
  92. package/dist/ink-ui/SimpleInputBuffer.js.map +1 -0
  93. package/dist/ink-ui/commands/slashCommands.d.ts +40 -0
  94. package/dist/ink-ui/commands/slashCommands.d.ts.map +1 -0
  95. package/dist/ink-ui/commands/slashCommands.js +111 -0
  96. package/dist/ink-ui/commands/slashCommands.js.map +1 -0
  97. package/dist/ink-ui/commands/types.d.ts +161 -0
  98. package/dist/ink-ui/commands/types.d.ts.map +1 -0
  99. package/dist/ink-ui/commands/types.js +12 -0
  100. package/dist/ink-ui/commands/types.js.map +1 -0
  101. package/dist/ink-ui/components/ApprovalDialog.d.ts +21 -0
  102. package/dist/ink-ui/components/ApprovalDialog.d.ts.map +1 -0
  103. package/dist/ink-ui/components/ApprovalDialog.js +81 -0
  104. package/dist/ink-ui/components/ApprovalDialog.js.map +1 -0
  105. package/dist/ink-ui/components/CommandSuggestions.d.ts +19 -0
  106. package/dist/ink-ui/components/CommandSuggestions.d.ts.map +1 -0
  107. package/dist/ink-ui/components/CommandSuggestions.js +36 -0
  108. package/dist/ink-ui/components/CommandSuggestions.js.map +1 -0
  109. package/dist/ink-ui/components/DiffPreview.d.ts +60 -0
  110. package/dist/ink-ui/components/DiffPreview.d.ts.map +1 -0
  111. package/dist/ink-ui/components/DiffPreview.js +195 -0
  112. package/dist/ink-ui/components/DiffPreview.js.map +1 -0
  113. package/dist/ink-ui/components/DocumentPreview.d.ts +50 -0
  114. package/dist/ink-ui/components/DocumentPreview.d.ts.map +1 -0
  115. package/dist/ink-ui/components/DocumentPreview.js +92 -0
  116. package/dist/ink-ui/components/DocumentPreview.js.map +1 -0
  117. package/dist/ink-ui/components/MarkdownText.d.ts +27 -0
  118. package/dist/ink-ui/components/MarkdownText.d.ts.map +1 -0
  119. package/dist/ink-ui/components/MarkdownText.js +342 -0
  120. package/dist/ink-ui/components/MarkdownText.js.map +1 -0
  121. package/dist/ink-ui/components/MenuRenderer.d.ts +26 -0
  122. package/dist/ink-ui/components/MenuRenderer.d.ts.map +1 -0
  123. package/dist/ink-ui/components/MenuRenderer.js +264 -0
  124. package/dist/ink-ui/components/MenuRenderer.js.map +1 -0
  125. package/dist/ink-ui/components/ModelPickerDialog.d.ts +33 -0
  126. package/dist/ink-ui/components/ModelPickerDialog.d.ts.map +1 -0
  127. package/dist/ink-ui/components/ModelPickerDialog.js +98 -0
  128. package/dist/ink-ui/components/ModelPickerDialog.js.map +1 -0
  129. package/dist/ink-ui/components/StreamDisplay.d.ts +31 -0
  130. package/dist/ink-ui/components/StreamDisplay.d.ts.map +1 -0
  131. package/dist/ink-ui/components/StreamDisplay.js +573 -0
  132. package/dist/ink-ui/components/StreamDisplay.js.map +1 -0
  133. package/dist/ink-ui/components/SubAgentPanel.d.ts +98 -0
  134. package/dist/ink-ui/components/SubAgentPanel.d.ts.map +1 -0
  135. package/dist/ink-ui/components/SubAgentPanel.js +155 -0
  136. package/dist/ink-ui/components/SubAgentPanel.js.map +1 -0
  137. package/dist/ink-ui/components/ThinkingDisplay.d.ts +46 -0
  138. package/dist/ink-ui/components/ThinkingDisplay.d.ts.map +1 -0
  139. package/dist/ink-ui/components/ThinkingDisplay.js +176 -0
  140. package/dist/ink-ui/components/ThinkingDisplay.js.map +1 -0
  141. package/dist/ink-ui/components/ToolCallDisplay.d.ts +51 -0
  142. package/dist/ink-ui/components/ToolCallDisplay.d.ts.map +1 -0
  143. package/dist/ink-ui/components/ToolCallDisplay.js +378 -0
  144. package/dist/ink-ui/components/ToolCallDisplay.js.map +1 -0
  145. package/dist/ink-ui/components/WritePreview.d.ts +42 -0
  146. package/dist/ink-ui/components/WritePreview.d.ts.map +1 -0
  147. package/dist/ink-ui/components/WritePreview.js +100 -0
  148. package/dist/ink-ui/components/WritePreview.js.map +1 -0
  149. package/dist/ink-ui/contexts/KeypressContext.d.ts +32 -0
  150. package/dist/ink-ui/contexts/KeypressContext.d.ts.map +1 -0
  151. package/dist/ink-ui/contexts/KeypressContext.js +529 -0
  152. package/dist/ink-ui/contexts/KeypressContext.js.map +1 -0
  153. package/dist/ink-ui/contexts/SessionContext.d.ts +46 -0
  154. package/dist/ink-ui/contexts/SessionContext.d.ts.map +1 -0
  155. package/dist/ink-ui/contexts/SessionContext.js +162 -0
  156. package/dist/ink-ui/contexts/SessionContext.js.map +1 -0
  157. package/dist/ink-ui/core-stubs.d.ts +270 -0
  158. package/dist/ink-ui/core-stubs.d.ts.map +1 -0
  159. package/dist/ink-ui/core-stubs.js +276 -0
  160. package/dist/ink-ui/core-stubs.js.map +1 -0
  161. package/dist/ink-ui/cortex-types.d.ts +214 -0
  162. package/dist/ink-ui/cortex-types.d.ts.map +1 -0
  163. package/dist/ink-ui/cortex-types.js +52 -0
  164. package/dist/ink-ui/cortex-types.js.map +1 -0
  165. package/dist/ink-ui/hooks/useCortexStream.d.ts +75 -0
  166. package/dist/ink-ui/hooks/useCortexStream.d.ts.map +1 -0
  167. package/dist/ink-ui/hooks/useCortexStream.js +518 -0
  168. package/dist/ink-ui/hooks/useCortexStream.js.map +1 -0
  169. package/dist/ink-ui/hooks/useFocus.d.ts +11 -0
  170. package/dist/ink-ui/hooks/useFocus.d.ts.map +1 -0
  171. package/dist/ink-ui/hooks/useFocus.js +51 -0
  172. package/dist/ink-ui/hooks/useFocus.js.map +1 -0
  173. package/dist/ink-ui/hooks/useHistoryManager.d.ts +23 -0
  174. package/dist/ink-ui/hooks/useHistoryManager.d.ts.map +1 -0
  175. package/dist/ink-ui/hooks/useHistoryManager.js +63 -0
  176. package/dist/ink-ui/hooks/useHistoryManager.js.map +1 -0
  177. package/dist/ink-ui/hooks/useKeypress.d.ts +18 -0
  178. package/dist/ink-ui/hooks/useKeypress.d.ts.map +1 -0
  179. package/dist/ink-ui/hooks/useKeypress.js +27 -0
  180. package/dist/ink-ui/hooks/useKeypress.js.map +1 -0
  181. package/dist/ink-ui/hooks/useReactApprovalHandler.d.ts +74 -0
  182. package/dist/ink-ui/hooks/useReactApprovalHandler.d.ts.map +1 -0
  183. package/dist/ink-ui/hooks/useReactApprovalHandler.js +83 -0
  184. package/dist/ink-ui/hooks/useReactApprovalHandler.js.map +1 -0
  185. package/dist/ink-ui/hooks/useTerminalSize.d.ts +10 -0
  186. package/dist/ink-ui/hooks/useTerminalSize.d.ts.map +1 -0
  187. package/dist/ink-ui/hooks/useTerminalSize.js +28 -0
  188. package/dist/ink-ui/hooks/useTerminalSize.js.map +1 -0
  189. package/dist/ink-ui/semantic-colors.d.ts +8 -0
  190. package/dist/ink-ui/semantic-colors.d.ts.map +1 -0
  191. package/dist/ink-ui/semantic-colors.js +24 -0
  192. package/dist/ink-ui/semantic-colors.js.map +1 -0
  193. package/dist/ink-ui/state/extensions.d.ts +68 -0
  194. package/dist/ink-ui/state/extensions.d.ts.map +1 -0
  195. package/dist/ink-ui/state/extensions.js +97 -0
  196. package/dist/ink-ui/state/extensions.js.map +1 -0
  197. package/dist/ink-ui/themes/ansi-light.d.ts +8 -0
  198. package/dist/ink-ui/themes/ansi-light.d.ts.map +1 -0
  199. package/dist/ink-ui/themes/ansi-light.js +143 -0
  200. package/dist/ink-ui/themes/ansi-light.js.map +1 -0
  201. package/dist/ink-ui/themes/ansi.d.ts +8 -0
  202. package/dist/ink-ui/themes/ansi.d.ts.map +1 -0
  203. package/dist/ink-ui/themes/ansi.js +153 -0
  204. package/dist/ink-ui/themes/ansi.js.map +1 -0
  205. package/dist/ink-ui/themes/atom-one-dark.d.ts +8 -0
  206. package/dist/ink-ui/themes/atom-one-dark.d.ts.map +1 -0
  207. package/dist/ink-ui/themes/atom-one-dark.js +140 -0
  208. package/dist/ink-ui/themes/atom-one-dark.js.map +1 -0
  209. package/dist/ink-ui/themes/ayu-light.d.ts +8 -0
  210. package/dist/ink-ui/themes/ayu-light.d.ts.map +1 -0
  211. package/dist/ink-ui/themes/ayu-light.js +132 -0
  212. package/dist/ink-ui/themes/ayu-light.js.map +1 -0
  213. package/dist/ink-ui/themes/ayu.d.ts +8 -0
  214. package/dist/ink-ui/themes/ayu.d.ts.map +1 -0
  215. package/dist/ink-ui/themes/ayu.js +106 -0
  216. package/dist/ink-ui/themes/ayu.js.map +1 -0
  217. package/dist/ink-ui/themes/color-utils.d.ts +23 -0
  218. package/dist/ink-ui/themes/color-utils.d.ts.map +1 -0
  219. package/dist/ink-ui/themes/color-utils.js +237 -0
  220. package/dist/ink-ui/themes/color-utils.js.map +1 -0
  221. package/dist/ink-ui/themes/default-light.d.ts +8 -0
  222. package/dist/ink-ui/themes/default-light.d.ts.map +1 -0
  223. package/dist/ink-ui/themes/default-light.js +100 -0
  224. package/dist/ink-ui/themes/default-light.js.map +1 -0
  225. package/dist/ink-ui/themes/default.d.ts +8 -0
  226. package/dist/ink-ui/themes/default.d.ts.map +1 -0
  227. package/dist/ink-ui/themes/default.js +143 -0
  228. package/dist/ink-ui/themes/default.js.map +1 -0
  229. package/dist/ink-ui/themes/dracula.d.ts +8 -0
  230. package/dist/ink-ui/themes/dracula.d.ts.map +1 -0
  231. package/dist/ink-ui/themes/dracula.js +117 -0
  232. package/dist/ink-ui/themes/dracula.js.map +1 -0
  233. package/dist/ink-ui/themes/github-dark.d.ts +8 -0
  234. package/dist/ink-ui/themes/github-dark.d.ts.map +1 -0
  235. package/dist/ink-ui/themes/github-dark.js +140 -0
  236. package/dist/ink-ui/themes/github-dark.js.map +1 -0
  237. package/dist/ink-ui/themes/github-light.d.ts +8 -0
  238. package/dist/ink-ui/themes/github-light.d.ts.map +1 -0
  239. package/dist/ink-ui/themes/github-light.js +142 -0
  240. package/dist/ink-ui/themes/github-light.js.map +1 -0
  241. package/dist/ink-ui/themes/googlecode.d.ts +8 -0
  242. package/dist/ink-ui/themes/googlecode.d.ts.map +1 -0
  243. package/dist/ink-ui/themes/googlecode.js +139 -0
  244. package/dist/ink-ui/themes/googlecode.js.map +1 -0
  245. package/dist/ink-ui/themes/no-color.d.ts +8 -0
  246. package/dist/ink-ui/themes/no-color.d.ts.map +1 -0
  247. package/dist/ink-ui/themes/no-color.js +118 -0
  248. package/dist/ink-ui/themes/no-color.js.map +1 -0
  249. package/dist/ink-ui/themes/semantic-tokens.d.ts +40 -0
  250. package/dist/ink-ui/themes/semantic-tokens.d.ts.map +1 -0
  251. package/dist/ink-ui/themes/semantic-tokens.js +100 -0
  252. package/dist/ink-ui/themes/semantic-tokens.js.map +1 -0
  253. package/dist/ink-ui/themes/shades-of-purple.d.ts +12 -0
  254. package/dist/ink-ui/themes/shades-of-purple.d.ts.map +1 -0
  255. package/dist/ink-ui/themes/shades-of-purple.js +306 -0
  256. package/dist/ink-ui/themes/shades-of-purple.js.map +1 -0
  257. package/dist/ink-ui/themes/theme-manager.d.ts +67 -0
  258. package/dist/ink-ui/themes/theme-manager.d.ts.map +1 -0
  259. package/dist/ink-ui/themes/theme-manager.js +263 -0
  260. package/dist/ink-ui/themes/theme-manager.js.map +1 -0
  261. package/dist/ink-ui/themes/theme.d.ts +134 -0
  262. package/dist/ink-ui/themes/theme.d.ts.map +1 -0
  263. package/dist/ink-ui/themes/theme.js +390 -0
  264. package/dist/ink-ui/themes/theme.js.map +1 -0
  265. package/dist/ink-ui/themes/xcode.d.ts +8 -0
  266. package/dist/ink-ui/themes/xcode.d.ts.map +1 -0
  267. package/dist/ink-ui/themes/xcode.js +147 -0
  268. package/dist/ink-ui/themes/xcode.js.map +1 -0
  269. package/dist/ink-ui/types.d.ts +306 -0
  270. package/dist/ink-ui/types.d.ts.map +1 -0
  271. package/dist/ink-ui/types.js +65 -0
  272. package/dist/ink-ui/types.js.map +1 -0
  273. package/dist/ink-ui/utils/input.d.ts +18 -0
  274. package/dist/ink-ui/utils/input.d.ts.map +1 -0
  275. package/dist/ink-ui/utils/input.js +51 -0
  276. package/dist/ink-ui/utils/input.js.map +1 -0
  277. package/dist/ink-ui/utils/mouse.d.ts +33 -0
  278. package/dist/ink-ui/utils/mouse.d.ts.map +1 -0
  279. package/dist/ink-ui/utils/mouse.js +182 -0
  280. package/dist/ink-ui/utils/mouse.js.map +1 -0
  281. package/dist/services/BuiltinCommandLoader.d.ts +21 -0
  282. package/dist/services/BuiltinCommandLoader.d.ts.map +1 -0
  283. package/dist/services/BuiltinCommandLoader.js +182 -0
  284. package/dist/services/BuiltinCommandLoader.js.map +1 -0
  285. package/dist/services/CommandService.d.ts +39 -0
  286. package/dist/services/CommandService.d.ts.map +1 -0
  287. package/dist/services/CommandService.js +49 -0
  288. package/dist/services/CommandService.js.map +1 -0
  289. package/dist/services/FileCommandLoader.d.ts +16 -0
  290. package/dist/services/FileCommandLoader.d.ts.map +1 -0
  291. package/dist/services/FileCommandLoader.js +19 -0
  292. package/dist/services/FileCommandLoader.js.map +1 -0
  293. package/dist/services/McpPromptLoader.d.ts +16 -0
  294. package/dist/services/McpPromptLoader.d.ts.map +1 -0
  295. package/dist/services/McpPromptLoader.js +19 -0
  296. package/dist/services/McpPromptLoader.js.map +1 -0
  297. package/dist/services/index.d.ts +8 -0
  298. package/dist/services/index.d.ts.map +1 -0
  299. package/dist/services/index.js +8 -0
  300. package/dist/services/index.js.map +1 -0
  301. package/dist/ui/ChalkMenuRenderer.d.ts +22 -0
  302. package/dist/ui/ChalkMenuRenderer.d.ts.map +1 -0
  303. package/dist/ui/ChalkMenuRenderer.js +478 -0
  304. package/dist/ui/ChalkMenuRenderer.js.map +1 -0
  305. package/dist/ui/ChalkModelPicker.d.ts +20 -0
  306. package/dist/ui/ChalkModelPicker.d.ts.map +1 -0
  307. package/dist/ui/ChalkModelPicker.js +363 -0
  308. package/dist/ui/ChalkModelPicker.js.map +1 -0
  309. package/dist/ui/ChalkThemePicker.d.ts +20 -0
  310. package/dist/ui/ChalkThemePicker.d.ts.map +1 -0
  311. package/dist/ui/ChalkThemePicker.js +370 -0
  312. package/dist/ui/ChalkThemePicker.js.map +1 -0
  313. package/dist/ui/InkApprovalDialog.d.ts +8 -0
  314. package/dist/ui/InkApprovalDialog.d.ts.map +1 -0
  315. package/dist/ui/InkApprovalDialog.js +25 -0
  316. package/dist/ui/InkApprovalDialog.js.map +1 -0
  317. package/dist/ui/InkCommandPalette.d.ts +43 -0
  318. package/dist/ui/InkCommandPalette.d.ts.map +1 -0
  319. package/dist/ui/InkCommandPalette.js +105 -0
  320. package/dist/ui/InkCommandPalette.js.map +1 -0
  321. package/dist/ui/InkConfigMenu.d.ts +24 -0
  322. package/dist/ui/InkConfigMenu.d.ts.map +1 -0
  323. package/dist/ui/InkConfigMenu.js +259 -0
  324. package/dist/ui/InkConfigMenu.js.map +1 -0
  325. package/dist/ui/InkHelp.d.ts +25 -0
  326. package/dist/ui/InkHelp.d.ts.map +1 -0
  327. package/dist/ui/InkHelp.js +55 -0
  328. package/dist/ui/InkHelp.js.map +1 -0
  329. package/dist/ui/InkMenuPicker.d.ts +19 -0
  330. package/dist/ui/InkMenuPicker.d.ts.map +1 -0
  331. package/dist/ui/InkMenuPicker.js +33 -0
  332. package/dist/ui/InkMenuPicker.js.map +1 -0
  333. package/dist/ui/InkModelPicker.d.ts +23 -0
  334. package/dist/ui/InkModelPicker.d.ts.map +1 -0
  335. package/dist/ui/InkModelPicker.js +53 -0
  336. package/dist/ui/InkModelPicker.js.map +1 -0
  337. package/dist/ui/PersistentInput.d.ts +91 -0
  338. package/dist/ui/PersistentInput.d.ts.map +1 -0
  339. package/dist/ui/PersistentInput.js +283 -0
  340. package/dist/ui/PersistentInput.js.map +1 -0
  341. package/dist/ui/RawInput.d.ts +27 -0
  342. package/dist/ui/RawInput.d.ts.map +1 -0
  343. package/dist/ui/RawInput.js +731 -0
  344. package/dist/ui/RawInput.js.map +1 -0
  345. package/dist/ui/SlashCommandAutocomplete.d.ts +94 -0
  346. package/dist/ui/SlashCommandAutocomplete.d.ts.map +1 -0
  347. package/dist/ui/SlashCommandAutocomplete.js +274 -0
  348. package/dist/ui/SlashCommandAutocomplete.js.map +1 -0
  349. package/dist/ui/SplashScreen.d.ts +76 -0
  350. package/dist/ui/SplashScreen.d.ts.map +1 -0
  351. package/dist/ui/SplashScreen.js +316 -0
  352. package/dist/ui/SplashScreen.js.map +1 -0
  353. package/dist/ui/components/ArtifactDashboard.d.ts +16 -0
  354. package/dist/ui/components/ArtifactDashboard.d.ts.map +1 -0
  355. package/dist/ui/components/ArtifactDashboard.js +102 -0
  356. package/dist/ui/components/ArtifactDashboard.js.map +1 -0
  357. package/dist/ui/components/ChatInput.d.ts +36 -0
  358. package/dist/ui/components/ChatInput.d.ts.map +1 -0
  359. package/dist/ui/components/ChatInput.js +11 -0
  360. package/dist/ui/components/ChatInput.js.map +1 -0
  361. package/dist/ui/components/ConfigWizard.d.ts +17 -0
  362. package/dist/ui/components/ConfigWizard.d.ts.map +1 -0
  363. package/dist/ui/components/ConfigWizard.js +134 -0
  364. package/dist/ui/components/ConfigWizard.js.map +1 -0
  365. package/dist/ui/components/ContextViewer.d.ts +18 -0
  366. package/dist/ui/components/ContextViewer.d.ts.map +1 -0
  367. package/dist/ui/components/ContextViewer.js +85 -0
  368. package/dist/ui/components/ContextViewer.js.map +1 -0
  369. package/dist/ui/components/MiddlewareDashboard.d.ts +16 -0
  370. package/dist/ui/components/MiddlewareDashboard.d.ts.map +1 -0
  371. package/dist/ui/components/MiddlewareDashboard.js +98 -0
  372. package/dist/ui/components/MiddlewareDashboard.js.map +1 -0
  373. package/dist/ui/components/ModelPicker.d.ts +24 -0
  374. package/dist/ui/components/ModelPicker.d.ts.map +1 -0
  375. package/dist/ui/components/ModelPicker.js +96 -0
  376. package/dist/ui/components/ModelPicker.js.map +1 -0
  377. package/dist/ui/components/MultiLineInput.d.ts +27 -0
  378. package/dist/ui/components/MultiLineInput.d.ts.map +1 -0
  379. package/dist/ui/components/MultiLineInput.js +182 -0
  380. package/dist/ui/components/MultiLineInput.js.map +1 -0
  381. package/dist/ui/components/PermissionsBrowser.d.ts +16 -0
  382. package/dist/ui/components/PermissionsBrowser.d.ts.map +1 -0
  383. package/dist/ui/components/PermissionsBrowser.js +110 -0
  384. package/dist/ui/components/PermissionsBrowser.js.map +1 -0
  385. package/dist/ui/components/SessionBrowser.d.ts +19 -0
  386. package/dist/ui/components/SessionBrowser.d.ts.map +1 -0
  387. package/dist/ui/components/SessionBrowser.js +66 -0
  388. package/dist/ui/components/SessionBrowser.js.map +1 -0
  389. package/dist/ui/components/StatusBar.d.ts +32 -0
  390. package/dist/ui/components/StatusBar.d.ts.map +1 -0
  391. package/dist/ui/components/StatusBar.js +27 -0
  392. package/dist/ui/components/StatusBar.js.map +1 -0
  393. package/dist/ui/components/SystemMessageBrowser.d.ts +11 -0
  394. package/dist/ui/components/SystemMessageBrowser.d.ts.map +1 -0
  395. package/dist/ui/components/SystemMessageBrowser.js +106 -0
  396. package/dist/ui/components/SystemMessageBrowser.js.map +1 -0
  397. package/dist/ui/components/ThemePicker.d.ts +11 -0
  398. package/dist/ui/components/ThemePicker.d.ts.map +1 -0
  399. package/dist/ui/components/ThemePicker.js +62 -0
  400. package/dist/ui/components/ThemePicker.js.map +1 -0
  401. package/dist/ui/components/TmuxBrowser.d.ts +11 -0
  402. package/dist/ui/components/TmuxBrowser.d.ts.map +1 -0
  403. package/dist/ui/components/TmuxBrowser.js +85 -0
  404. package/dist/ui/components/TmuxBrowser.js.map +1 -0
  405. package/dist/ui/components/index.d.ts +22 -0
  406. package/dist/ui/components/index.d.ts.map +1 -0
  407. package/dist/ui/components/index.js +21 -0
  408. package/dist/ui/components/index.js.map +1 -0
  409. package/package.json +70 -0
@@ -0,0 +1,259 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * InkConfigMenu — Interactive settings browser
4
+ *
5
+ * Renders all SETTINGS_METADATA grouped by category with current values.
6
+ * Booleans toggle with Space/Enter. Choices cycle with Space/Enter.
7
+ * Numbers/strings edited inline. Changes write to .env, set process.env,
8
+ * and call updateRuntimeConfig for config-stored keys.
9
+ *
10
+ * Used by both neoncortex (inline overlay) and cortex-cli (imperative render).
11
+ */
12
+ import { useState, useCallback, useMemo } from 'react';
13
+ import { render, Box, Text, useInput } from 'ink';
14
+ import { SETTINGS_METADATA, SettingsLoader, SettingsWriter, DEFAULT_SETTINGS, getRuntimeConfigEntry, isLiveToggleable, } from '@nexus-cortex/core';
15
+ const API_KEY_FIELDS = SETTINGS_METADATA
16
+ .filter(s => s.category === 'api_keys')
17
+ .map(s => s.key);
18
+ import { Colors } from '@nexus-cortex/cli/dist/themes/colors.js';
19
+ const CATEGORY_LABELS = {
20
+ api_keys: 'API Keys',
21
+ models: 'Models',
22
+ system: 'System',
23
+ mentorship: 'Mentorship',
24
+ context: 'Context Management',
25
+ session: 'Session',
26
+ loop_control: 'Loop Control',
27
+ server_side_tools: 'Tools & Execution',
28
+ model_router: 'Model Router',
29
+ agent_workspace: 'Agent Workspace',
30
+ training: 'Training & Audit',
31
+ runtime: 'Runtime',
32
+ };
33
+ const CATEGORY_ORDER = [
34
+ 'models',
35
+ 'system',
36
+ 'runtime',
37
+ 'loop_control',
38
+ 'context',
39
+ 'mentorship',
40
+ 'server_side_tools',
41
+ 'model_router',
42
+ 'training',
43
+ 'session',
44
+ 'agent_workspace',
45
+ 'api_keys',
46
+ ];
47
+ function buildFlatList() {
48
+ const items = [];
49
+ for (const cat of CATEGORY_ORDER) {
50
+ const settings = SETTINGS_METADATA.filter(s => s.category === cat);
51
+ if (settings.length === 0)
52
+ continue;
53
+ items.push({ type: 'header', category: cat });
54
+ for (const s of settings) {
55
+ items.push({ type: 'setting', setting: s });
56
+ }
57
+ }
58
+ return items;
59
+ }
60
+ function getCurrentValue(key, loader) {
61
+ const fromEnv = process.env[key];
62
+ if (fromEnv !== undefined && fromEnv !== '')
63
+ return fromEnv;
64
+ return loader.get(key) || '';
65
+ }
66
+ function formatValue(setting, value) {
67
+ if (setting.secret && value) {
68
+ return value.length > 8
69
+ ? value.substring(0, 4) + '...' + value.substring(value.length - 4)
70
+ : '***';
71
+ }
72
+ if (setting.type === 'boolean') {
73
+ return value === 'true' ? 'ON' : 'OFF';
74
+ }
75
+ if (!value && setting.default) {
76
+ return setting.default;
77
+ }
78
+ return value || '(not set)';
79
+ }
80
+ const ConfigMenu = ({ onClose, projectPath, onUpdateRuntimeConfig }) => {
81
+ const flatList = buildFlatList();
82
+ const selectableIndices = flatList.map((item, i) => item.type === 'setting' ? i : -1).filter(i => i >= 0);
83
+ const [selectedIdx, setSelectedIdx] = useState(0);
84
+ const [editMode, setEditMode] = useState(false);
85
+ const [editBuffer, setEditBuffer] = useState('');
86
+ const [scrollOffset, setScrollOffset] = useState(0);
87
+ const [refreshKey, setRefreshKey] = useState(0);
88
+ const [resetConfirm, setResetConfirm] = useState(false);
89
+ const [statusMsg, setStatusMsg] = useState('');
90
+ // Stable instances: rebuilt-per-render objects defeat useCallback dependency checks.
91
+ const loader = useMemo(() => new SettingsLoader(projectPath), [projectPath]);
92
+ const writer = useMemo(() => new SettingsWriter(projectPath), [projectPath]);
93
+ const termHeight = process.stdout.rows || 30;
94
+ const maxVisible = Math.max(5, termHeight - 8);
95
+ const currentFlatIdx = selectableIndices[selectedIdx] ?? 0;
96
+ const currentItem = flatList[currentFlatIdx];
97
+ const currentSetting = currentItem?.setting;
98
+ const applyChange = useCallback((setting, newValue) => {
99
+ writer.update({ [setting.key]: newValue });
100
+ process.env[setting.key] = newValue;
101
+ const entry = getRuntimeConfigEntry(setting.key);
102
+ if (entry?.tier === 'config' && entry.mapper && onUpdateRuntimeConfig) {
103
+ onUpdateRuntimeConfig(entry.mapper(newValue));
104
+ }
105
+ setRefreshKey(k => k + 1);
106
+ }, [writer, onUpdateRuntimeConfig]);
107
+ const doReset = useCallback(() => {
108
+ // Preserve API keys; reset everything else to benchmark-proven defaults.
109
+ const preserved = {};
110
+ for (const key of API_KEY_FIELDS) {
111
+ const val = process.env[key] || loader.get(key);
112
+ if (val)
113
+ preserved[key] = val;
114
+ }
115
+ const resetEnv = { ...DEFAULT_SETTINGS, ...preserved };
116
+ writer.backup();
117
+ writer.write(resetEnv);
118
+ for (const [key, val] of Object.entries(resetEnv)) {
119
+ process.env[key] = val;
120
+ const entry = getRuntimeConfigEntry(key);
121
+ if (entry?.tier === 'config' && entry.mapper && onUpdateRuntimeConfig) {
122
+ onUpdateRuntimeConfig(entry.mapper(val));
123
+ }
124
+ }
125
+ const preservedCount = Object.keys(preserved).length;
126
+ setStatusMsg(`[OK] Reset to optimal defaults (${preservedCount} API keys preserved, backup saved)`);
127
+ setRefreshKey(k => k + 1);
128
+ }, [writer, loader, onUpdateRuntimeConfig]);
129
+ const toggleOrCycle = useCallback(() => {
130
+ if (!currentSetting)
131
+ return;
132
+ if (currentSetting.secret)
133
+ return;
134
+ const current = getCurrentValue(currentSetting.key, loader);
135
+ if (currentSetting.type === 'boolean') {
136
+ applyChange(currentSetting, current === 'true' ? 'false' : 'true');
137
+ }
138
+ else if (currentSetting.type === 'choice' && currentSetting.choices) {
139
+ const idx = currentSetting.choices.indexOf(current);
140
+ const next = (idx + 1) % currentSetting.choices.length;
141
+ applyChange(currentSetting, currentSetting.choices[next]);
142
+ }
143
+ else {
144
+ setEditBuffer(current);
145
+ setEditMode(true);
146
+ }
147
+ }, [currentSetting, loader, applyChange]);
148
+ useInput((input, key) => {
149
+ if (editMode && currentSetting) {
150
+ if (key.escape) {
151
+ setEditMode(false);
152
+ return;
153
+ }
154
+ if (key.return) {
155
+ if (editBuffer.trim()) {
156
+ applyChange(currentSetting, editBuffer.trim());
157
+ }
158
+ setEditMode(false);
159
+ return;
160
+ }
161
+ if (key.backspace || key.delete) {
162
+ setEditBuffer(b => b.slice(0, -1));
163
+ return;
164
+ }
165
+ if (input && !key.ctrl && !key.meta) {
166
+ setEditBuffer(b => b + input);
167
+ return;
168
+ }
169
+ return;
170
+ }
171
+ // Reset confirmation gate — intercepts all other input while active.
172
+ if (resetConfirm) {
173
+ if (input === 'y' || input === 'Y' || key.return) {
174
+ doReset();
175
+ setResetConfirm(false);
176
+ }
177
+ else {
178
+ setResetConfirm(false);
179
+ setStatusMsg('Reset cancelled');
180
+ }
181
+ return;
182
+ }
183
+ if (key.escape || input === 'q') {
184
+ onClose();
185
+ return;
186
+ }
187
+ if (input === 'r' || input === 'R') {
188
+ setResetConfirm(true);
189
+ setStatusMsg('');
190
+ return;
191
+ }
192
+ if (key.upArrow || input === 'k') {
193
+ setSelectedIdx(i => {
194
+ const next = i > 0 ? i - 1 : selectableIndices.length - 1;
195
+ const flatIdx = selectableIndices[next];
196
+ if (flatIdx < scrollOffset)
197
+ setScrollOffset(flatIdx > 0 ? flatIdx - 1 : 0);
198
+ return next;
199
+ });
200
+ }
201
+ else if (key.downArrow || input === 'j') {
202
+ setSelectedIdx(i => {
203
+ const next = i < selectableIndices.length - 1 ? i + 1 : 0;
204
+ const flatIdx = selectableIndices[next];
205
+ if (flatIdx >= scrollOffset + maxVisible)
206
+ setScrollOffset(flatIdx - maxVisible + 2);
207
+ if (next === 0)
208
+ setScrollOffset(0);
209
+ return next;
210
+ });
211
+ }
212
+ else if (key.return || input === ' ') {
213
+ toggleOrCycle();
214
+ }
215
+ });
216
+ const visibleItems = flatList.slice(scrollOffset, scrollOffset + maxVisible);
217
+ const showScrollUp = scrollOffset > 0;
218
+ const showScrollDown = scrollOffset + maxVisible < flatList.length;
219
+ const descriptionText = currentSetting?.description || '';
220
+ const liveLabel = currentSetting ? (isLiveToggleable(currentSetting.key) ? '(live)' : '(restart required)') : '';
221
+ // Force re-read on refresh
222
+ void refreshKey;
223
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: Colors.AccentCyan, children: "\u2501\u2501\u2501 Configuration Settings \u2501\u2501\u2501" }) }), showScrollUp && _jsx(Text, { color: Colors.Gray, children: " \u25B2 more" }), visibleItems.map((item, vIdx) => {
224
+ const flatIdx = scrollOffset + vIdx;
225
+ if (item.type === 'header') {
226
+ return (_jsx(Box, { marginTop: vIdx > 0 ? 1 : 0, children: _jsx(Text, { bold: true, color: Colors.AccentGreen, children: CATEGORY_LABELS[item.category] || item.category }) }, `h-${item.category}`));
227
+ }
228
+ const s = item.setting;
229
+ const isSelected = flatIdx === currentFlatIdx;
230
+ const value = getCurrentValue(s.key, loader);
231
+ const display = formatValue(s, value);
232
+ const live = isLiveToggleable(s.key);
233
+ if (isSelected && editMode) {
234
+ return (_jsxs(Box, { children: [_jsx(Text, { color: Colors.AccentCyan, children: '> ' }), _jsxs(Text, { color: Colors.AccentCyan, children: [s.displayName, ": "] }), _jsx(Text, { color: Colors.AccentYellow, children: editBuffer }), _jsx(Text, { color: Colors.Gray, children: '█' })] }, s.key));
235
+ }
236
+ return (_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? Colors.AccentCyan : Colors.Gray, children: isSelected ? '> ' : ' ' }), _jsx(Box, { width: 35, children: _jsx(Text, { color: isSelected ? Colors.White : Colors.Gray, wrap: "truncate", children: s.displayName }) }), _jsx(Box, { width: 25, children: _jsx(Text, { color: s.type === 'boolean'
237
+ ? value === 'true' ? Colors.AccentGreen : Colors.Gray
238
+ : Colors.AccentYellow, wrap: "truncate", children: display }) }), _jsx(Text, { color: live ? Colors.AccentGreen : Colors.Gray, dimColor: !live, children: live ? 'live' : 'restart' })] }, s.key));
239
+ }), showScrollDown && _jsx(Text, { color: Colors.Gray, children: " \u25BC more" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: Colors.Gray, wrap: "wrap", children: descriptionText }), currentSetting && (_jsxs(Text, { dimColor: true, children: [currentSetting.key, " ", liveLabel] }))] }), statusMsg && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.AccentGreen, children: statusMsg }) })), _jsx(Box, { marginTop: 1, children: resetConfirm ? (_jsx(Text, { color: Colors.AccentYellow, children: "Reset ALL settings to optimal defaults? API keys preserved, backup saved. (y/N)" })) : (_jsx(Text, { dimColor: true, children: editMode
240
+ ? 'Type value, Enter to save, ESC to cancel'
241
+ : 'Arrows navigate · Space/Enter toggle · r reset defaults · ESC/q close' })) })] }));
242
+ };
243
+ /**
244
+ * Show interactive config menu (imperative entry point for cortex-cli)
245
+ */
246
+ export async function showConfigMenu(projectPath, onUpdateRuntimeConfig) {
247
+ return new Promise((resolve) => {
248
+ const { unmount, waitUntilExit } = render(_jsx(ConfigMenu, { projectPath: projectPath, onUpdateRuntimeConfig: onUpdateRuntimeConfig, onClose: () => {
249
+ unmount();
250
+ resolve();
251
+ } }));
252
+ waitUntilExit().catch(() => {
253
+ resolve();
254
+ });
255
+ });
256
+ }
257
+ export { ConfigMenu };
258
+ export default showConfigMenu;
259
+ //# sourceMappingURL=InkConfigMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InkConfigMenu.js","sourceRoot":"","sources":["../../src/ui/InkConfigMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * InkHelp - Imperative wrapper for unified Help display
3
+ *
4
+ * Allows fuzzycortex (chalk-based CLI) to use the same help rendering
5
+ * as neoncortex, ensuring consistent command display across both CLIs.
6
+ *
7
+ * @module ui/InkHelp
8
+ */
9
+ /**
10
+ * Show interactive help screen
11
+ *
12
+ * Renders the unified help display showing all commands from core registry.
13
+ * This is the imperative entry point for fuzzycortex.
14
+ *
15
+ * @returns Promise that resolves when help is closed
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * await showHelp();
20
+ * // Help screen is displayed, user presses ESC to close
21
+ * ```
22
+ */
23
+ export declare function showHelp(): Promise<void>;
24
+ export default showHelp;
25
+ //# sourceMappingURL=InkHelp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InkHelp.d.ts","sourceRoot":"","sources":["../../src/ui/InkHelp.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwGH;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAe9C;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { render, Box, Text, useInput } from 'ink';
3
+ import { slashCommandRegistry } from '@nexus-cortex/core';
4
+ import { Colors } from '@nexus-cortex/cli/dist/themes/colors.js';
5
+ const HelpDisplay = ({ onClose }) => {
6
+ const allCommands = slashCommandRegistry.getAllCommands();
7
+ const categories = slashCommandRegistry.getCategories();
8
+ // Group commands by category
9
+ const grouped = {};
10
+ for (const cmd of allCommands) {
11
+ if (!grouped[cmd.category])
12
+ grouped[cmd.category] = [];
13
+ grouped[cmd.category].push(cmd);
14
+ }
15
+ useInput((input, key) => {
16
+ // Close on ESC, q, or Enter
17
+ if (key.escape || input === 'q' || key.return) {
18
+ onClose();
19
+ }
20
+ });
21
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsxs(Text, { bold: true, color: Colors.AccentCyan, children: ["\u2501\u2501\u2501 CORTEX Help (", allCommands.length, " commands) \u2501\u2501\u2501"] }), _jsx(Text, {}), _jsx(Text, { bold: true, color: Colors.AccentYellow, children: "Basics:" }), _jsxs(Text, { children: [_jsx(Text, { bold: true, color: Colors.AccentCyan, children: "@" }), _jsx(Text, { children: " - Add file context (e.g., @src/myFile.ts)" })] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, color: Colors.AccentCyan, children: "!" }), _jsx(Text, { children: " - Execute shell command (e.g., !npm run build)" })] }), _jsx(Text, {}), categories.map((category) => {
22
+ const cmds = grouped[category.name];
23
+ if (!cmds || cmds.length === 0)
24
+ return null;
25
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { bold: true, color: Colors.AccentGreen, children: [category.icon, " ", category.label, ":"] }), cmds.map((cmd) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsxs(Text, { color: Colors.AccentCyan, children: [" /", cmd.name] }), cmd.altName && _jsxs(Text, { dimColor: true, children: [" (/", cmd.altName, ")"] }), _jsxs(Text, { dimColor: true, children: [" ", cmd.description] })] }), cmd.subcommands &&
26
+ cmd.subcommands.map((sub) => (_jsxs(Text, { children: [_jsxs(Text, { color: Colors.Gray, children: [" ", sub.name] }), sub.altName && _jsxs(Text, { dimColor: true, children: [" (", sub.altName, ")"] }), _jsxs(Text, { dimColor: true, children: [" ", sub.description] })] }, sub.name)))] }, cmd.name))), _jsx(Text, {})] }, category.name));
27
+ }), _jsx(Text, { bold: true, color: Colors.AccentYellow, children: "Keyboard Shortcuts:" }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Enter" }), " Send message / Execute command"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Tab" }), " Toggle thinking display"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Shift+Tab" }), " Toggle auto-approve (YOLO)"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Ctrl+E" }), " Expand/collapse documents"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "ESC" }), " Cancel / Close dialogs"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Ctrl+C" }), " Exit application"] }), _jsx(Text, {}), _jsx(Text, { bold: true, color: Colors.AccentYellow, children: "Input Features:" }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "\u2191/\u2193" }), " Navigate history / autocomplete"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Shift+Enter" }), " Multi-line input"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "/" }), " Open command palette"] }), _jsx(Text, {}), _jsx(Text, { dimColor: true, children: "Press ESC, Enter, or 'q' to close" })] }));
28
+ };
29
+ /**
30
+ * Show interactive help screen
31
+ *
32
+ * Renders the unified help display showing all commands from core registry.
33
+ * This is the imperative entry point for fuzzycortex.
34
+ *
35
+ * @returns Promise that resolves when help is closed
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * await showHelp();
40
+ * // Help screen is displayed, user presses ESC to close
41
+ * ```
42
+ */
43
+ export async function showHelp() {
44
+ return new Promise((resolve) => {
45
+ const { unmount, waitUntilExit } = render(_jsx(HelpDisplay, { onClose: () => {
46
+ unmount();
47
+ resolve();
48
+ } }));
49
+ waitUntilExit().catch(() => {
50
+ resolve();
51
+ });
52
+ });
53
+ }
54
+ export default showHelp;
55
+ //# sourceMappingURL=InkHelp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InkHelp.js","sourceRoot":"","sources":["../../src/ui/InkHelp.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Ink-based Menu Picker for fuzzycortex
3
+ *
4
+ * This wraps the same MenuRenderer component used in neoncortex,
5
+ * providing a unified visual experience across both CLI modes.
6
+ *
7
+ * Uses Ink's render() to display the React component from within
8
+ * the readline-based fuzzycortex interactive loop.
9
+ */
10
+ import type { InteractiveMenuDefinition, MenuResult } from '@nexus-cortex/core';
11
+ export type { InteractiveMenuDefinition, MenuResult };
12
+ /**
13
+ * Show an interactive menu using Ink rendering
14
+ *
15
+ * This creates an Ink app, renders the MenuRenderer,
16
+ * and returns when the user completes the menu.
17
+ */
18
+ export declare function showInteractiveMenu(definition: InteractiveMenuDefinition, initialValues: Record<string, unknown>, onLiveUpdate?: (key: string, value: unknown) => Promise<void>): Promise<MenuResult>;
19
+ //# sourceMappingURL=InkMenuPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InkMenuPicker.d.ts","sourceRoot":"","sources":["../../src/ui/InkMenuPicker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhF,YAAY,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC;AA6BtD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,yBAAyB,EACrC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAC5D,OAAO,CAAC,UAAU,CAAC,CAwBrB"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render } from 'ink';
3
+ import { MenuRenderer } from '../ink-ui/components/MenuRenderer.js';
4
+ /**
5
+ * Wrapper component that handles the menu lifecycle
6
+ */
7
+ const MenuPickerApp = ({ definition, initialValues, onComplete, onLiveUpdate, }) => {
8
+ return (_jsx(MenuRenderer, { definition: definition, initialValues: initialValues, onComplete: onComplete, onLiveUpdate: onLiveUpdate, isActive: true }));
9
+ };
10
+ /**
11
+ * Show an interactive menu using Ink rendering
12
+ *
13
+ * This creates an Ink app, renders the MenuRenderer,
14
+ * and returns when the user completes the menu.
15
+ */
16
+ export async function showInteractiveMenu(definition, initialValues, onLiveUpdate) {
17
+ return new Promise((resolve) => {
18
+ // Create the Ink app
19
+ const { unmount, waitUntilExit } = render(_jsx(MenuPickerApp, { definition: definition, initialValues: initialValues, onComplete: (result) => {
20
+ unmount();
21
+ resolve(result);
22
+ }, onLiveUpdate: onLiveUpdate }));
23
+ // Handle cleanup on exit
24
+ waitUntilExit().catch(() => {
25
+ resolve({
26
+ action: 'cancel',
27
+ changes: {},
28
+ hasChanges: false,
29
+ });
30
+ });
31
+ });
32
+ }
33
+ //# sourceMappingURL=InkMenuPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InkMenuPicker.js","sourceRoot":"","sources":["../../src/ui/InkMenuPicker.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAapE;;GAEG;AACH,MAAM,aAAa,GAAiC,CAAC,EACnD,UAAU,EACV,aAAa,EACb,UAAU,EACV,YAAY,GACb,EAAE,EAAE;IACH,OAAO,CACL,KAAC,YAAY,IACX,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,IAAI,GACd,CACH,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAqC,EACrC,aAAsC,EACtC,YAA6D;IAE7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,qBAAqB;QACrB,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CACvC,KAAC,aAAa,IACZ,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;gBACrB,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,EACD,YAAY,EAAE,YAAY,GAC1B,CACH,CAAC;QAEF,yBAAyB;QACzB,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;YACzB,OAAO,CAAC;gBACN,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Ink-based Model Picker for fuzzycortex
3
+ *
4
+ * This wraps the same ModelPickerDialog component used in neoncortex,
5
+ * providing a unified visual experience across both CLI modes.
6
+ *
7
+ * Uses Ink's render() to display the React component from within
8
+ * the readline-based fuzzycortex interactive loop.
9
+ */
10
+ import type { ModelDisplayInfo, ModelPickerResult } from '@nexus-cortex/core';
11
+ export type { ModelDisplayInfo, ModelPickerResult };
12
+ /**
13
+ * Show the model picker using Ink rendering
14
+ *
15
+ * This creates an Ink app, renders the ModelPickerDialog,
16
+ * and returns when the user makes a selection or cancels.
17
+ */
18
+ export declare function showModelPicker(models: ModelDisplayInfo[], currentModelId: string): Promise<ModelPickerResult>;
19
+ /**
20
+ * Run the model picker with callback for model switching
21
+ */
22
+ export declare function runModelPicker(models: ModelDisplayInfo[], currentModelId: string, onSelect: (modelId: string) => Promise<void>): Promise<void>;
23
+ //# sourceMappingURL=InkModelPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InkModelPicker.d.ts","sourceRoot":"","sources":["../../src/ui/InkModelPicker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG9E,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;AAyCpD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EAAE,EAC1B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAwB5B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,gBAAgB,EAAE,EAC1B,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -0,0 +1,53 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render } from 'ink';
3
+ import { ModelPickerDialog } from '../ink-ui/components/ModelPickerDialog.js';
4
+ import { persistModelForPlatform } from '@nexus-cortex/cli/dist/themes/colors.js';
5
+ // Platform identifier
6
+ const PLATFORM = 'fuzzycortex';
7
+ /**
8
+ * Wrapper component that handles the picker lifecycle
9
+ */
10
+ const ModelPickerApp = ({ models, currentModelId, onComplete, }) => {
11
+ const handleSelect = (modelId) => {
12
+ // Persist model choice for fuzzycortex platform
13
+ persistModelForPlatform(PLATFORM, modelId);
14
+ onComplete({ selected: true, modelId });
15
+ };
16
+ const handleCancel = () => {
17
+ onComplete({ selected: false });
18
+ };
19
+ return (_jsx(ModelPickerDialog, { models: models, currentModelId: currentModelId, onSelect: handleSelect, onCancel: handleCancel, loading: false }));
20
+ };
21
+ /**
22
+ * Show the model picker using Ink rendering
23
+ *
24
+ * This creates an Ink app, renders the ModelPickerDialog,
25
+ * and returns when the user makes a selection or cancels.
26
+ */
27
+ export async function showModelPicker(models, currentModelId) {
28
+ return new Promise((resolve) => {
29
+ if (models.length === 0) {
30
+ resolve({ selected: false });
31
+ return;
32
+ }
33
+ // Create the Ink app
34
+ const { unmount, waitUntilExit } = render(_jsx(ModelPickerApp, { models: models, currentModelId: currentModelId, onComplete: (result) => {
35
+ unmount();
36
+ resolve(result);
37
+ } }));
38
+ // Handle cleanup on exit
39
+ waitUntilExit().catch(() => {
40
+ resolve({ selected: false });
41
+ });
42
+ });
43
+ }
44
+ /**
45
+ * Run the model picker with callback for model switching
46
+ */
47
+ export async function runModelPicker(models, currentModelId, onSelect) {
48
+ const result = await showModelPicker(models, currentModelId);
49
+ if (result.selected && result.modelId) {
50
+ await onSelect(result.modelId);
51
+ }
52
+ }
53
+ //# sourceMappingURL=InkModelPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InkModelPicker.js","sourceRoot":"","sources":["../../src/ui/InkModelPicker.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAiB,MAAM,yCAAyC,CAAC;AAMjG,sBAAsB;AACtB,MAAM,QAAQ,GAAa,aAAa,CAAC;AAQzC;;GAEG;AACH,MAAM,cAAc,GAAkC,CAAC,EACrD,MAAM,EACN,cAAc,EACd,UAAU,GACX,EAAE,EAAE;IAEH,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,EAAE;QACvC,gDAAgD;QAChD,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3C,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,iBAAiB,IAChB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,KAAK,GACd,CACH,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAA0B,EAC1B,cAAsB;IAEtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CACvC,KAAC,cAAc,IACb,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;gBACrB,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,GACD,CACH,CAAC;QAEF,yBAAyB;QACzB,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;YACzB,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAA0B,EAC1B,cAAsB,EACtB,QAA4C;IAE5C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE7D,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Simple Streaming Output Handler
3
+ *
4
+ * During streaming: Just outputs text normally, captures keystrokes for queuing
5
+ * No scroll regions, no fancy input frame - just reliable output
6
+ */
7
+ export interface PersistentInputOptions {
8
+ getStatusState: () => any;
9
+ theme: any;
10
+ onToggleThinking?: () => void;
11
+ onToggleAutoApprove?: () => void;
12
+ onToggleDocuments?: () => void;
13
+ onEscape?: () => void;
14
+ }
15
+ export declare class PersistentInput {
16
+ private options;
17
+ private queuedMessages;
18
+ private isStreaming;
19
+ private inputHandler;
20
+ private currentInput;
21
+ private spinnerTimer;
22
+ private spinnerFrame;
23
+ private spinnerStartTime;
24
+ private spinnerPhase;
25
+ private spinnerVisible;
26
+ constructor(options: PersistentInputOptions);
27
+ /**
28
+ * Start streaming mode - captures keystrokes but doesn't show input box
29
+ */
30
+ startCapture(): void;
31
+ /**
32
+ * Stop streaming mode
33
+ */
34
+ stopCapture(): void;
35
+ /**
36
+ * Handle keystrokes during streaming
37
+ */
38
+ private handleInput;
39
+ /**
40
+ * Get and clear queued messages
41
+ */
42
+ getQueuedMessages(): string[];
43
+ /**
44
+ * Check if there are queued messages
45
+ */
46
+ hasQueuedMessages(): boolean;
47
+ /**
48
+ * Pause input capture (for permission dialogs)
49
+ */
50
+ pause(): void;
51
+ /**
52
+ * Resume input capture after pause
53
+ */
54
+ resume(): void;
55
+ /**
56
+ * Check if currently capturing
57
+ */
58
+ isCapturing(): boolean;
59
+ /**
60
+ * Write output to stdout, respecting the spinner.
61
+ * If the spinner is active, clears the spinner line before writing,
62
+ * then re-renders it after — prevents garbled interleaving.
63
+ */
64
+ writeOutput(text: string): void;
65
+ /**
66
+ * Print a line (with trailing newline), respecting the spinner.
67
+ */
68
+ printLine(text?: string): void;
69
+ /**
70
+ * Show animated thinking indicator with spinner, phase, and elapsed time
71
+ */
72
+ showThinking(): void;
73
+ /**
74
+ * Update the spinner phase (e.g. "Running ReadFile", "Generating")
75
+ */
76
+ setPhase(phase: string): void;
77
+ /**
78
+ * Clear thinking indicator (replace with newline)
79
+ */
80
+ clearThinking(): void;
81
+ /**
82
+ * Get elapsed time since spinner started
83
+ */
84
+ getElapsed(): number;
85
+ private renderSpinnerFrame;
86
+ }
87
+ /**
88
+ * Create a persistent input instance
89
+ */
90
+ export declare function createPersistentInput(options: PersistentInputOptions): PersistentInput;
91
+ //# sourceMappingURL=PersistentInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistentInput.d.ts","sourceRoot":"","sources":["../../src/ui/PersistentInput.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,GAAG,CAAC;IAC1B,KAAK,EAAE,GAAG,CAAC;IACX,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,cAAc,CAAkB;gBAE5B,OAAO,EAAE,sBAAsB;IAI3C;;OAEG;IACH,YAAY,IAAI,IAAI;IAmBpB;;OAEG;IACH,WAAW,IAAI,IAAI;IAyBnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkEnB;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAM7B;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAqBb;;OAEG;IACH,MAAM,IAAI,IAAI;IAqBd;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAU/B;;OAEG;IACH,SAAS,CAAC,IAAI,GAAE,MAAW,GAAG,IAAI;IAUlC;;OAEG;IACH,YAAY,IAAI,IAAI;IASpB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,aAAa,IAAI,IAAI;IAWrB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB,OAAO,CAAC,kBAAkB;CAO3B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAEtF"}