@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,182 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * MultiLineInput - A growing text input component for Ink
4
+ *
5
+ * Features:
6
+ * - Multi-line text that grows as you type
7
+ * - Proper cursor navigation
8
+ * - Handles paste correctly
9
+ * - Wraps long lines visually
10
+ */
11
+ import { useState } from 'react';
12
+ import { Box, Text, useInput, useApp } from 'ink';
13
+ import chalk from 'chalk';
14
+ export const MultiLineInput = ({ onSubmit, placeholder = 'Type your message...', prompt = '> ', focus = true, promptColor = chalk.cyan, textColor = chalk.white, placeholderColor = chalk.gray, }) => {
15
+ const [lines, setLines] = useState(['']);
16
+ const [cursorRow, setCursorRow] = useState(0);
17
+ const [cursorCol, setCursorCol] = useState(0);
18
+ const { exit } = useApp();
19
+ const text = lines.join('\n');
20
+ const isEmpty = text === '';
21
+ // Get current line safely
22
+ const currentLine = lines[cursorRow] || '';
23
+ useInput((input, key) => {
24
+ if (!focus)
25
+ return;
26
+ // Submit on Enter (without shift/ctrl for multi-line)
27
+ if (key.return && !key.shift && !key.ctrl) {
28
+ if (text.trim()) {
29
+ onSubmit(text);
30
+ setLines(['']);
31
+ setCursorRow(0);
32
+ setCursorCol(0);
33
+ }
34
+ return;
35
+ }
36
+ // New line on Shift+Enter
37
+ if (key.return && key.shift) {
38
+ const newLines = [...lines];
39
+ const before = currentLine.slice(0, cursorCol);
40
+ const after = currentLine.slice(cursorCol);
41
+ newLines[cursorRow] = before;
42
+ newLines.splice(cursorRow + 1, 0, after);
43
+ setLines(newLines);
44
+ setCursorRow(cursorRow + 1);
45
+ setCursorCol(0);
46
+ return;
47
+ }
48
+ // Backspace
49
+ if (key.backspace || key.delete) {
50
+ if (cursorCol > 0) {
51
+ // Delete character before cursor
52
+ const newLines = [...lines];
53
+ newLines[cursorRow] = currentLine.slice(0, cursorCol - 1) + currentLine.slice(cursorCol);
54
+ setLines(newLines);
55
+ setCursorCol(cursorCol - 1);
56
+ }
57
+ else if (cursorRow > 0) {
58
+ // Join with previous line
59
+ const newLines = [...lines];
60
+ const prevLine = newLines[cursorRow - 1] || '';
61
+ const newCol = prevLine.length;
62
+ newLines[cursorRow - 1] = prevLine + currentLine;
63
+ newLines.splice(cursorRow, 1);
64
+ setLines(newLines);
65
+ setCursorRow(cursorRow - 1);
66
+ setCursorCol(newCol);
67
+ }
68
+ return;
69
+ }
70
+ // Arrow keys
71
+ if (key.leftArrow) {
72
+ if (cursorCol > 0) {
73
+ setCursorCol(cursorCol - 1);
74
+ }
75
+ else if (cursorRow > 0) {
76
+ setCursorRow(cursorRow - 1);
77
+ setCursorCol((lines[cursorRow - 1] || '').length);
78
+ }
79
+ return;
80
+ }
81
+ if (key.rightArrow) {
82
+ if (cursorCol < currentLine.length) {
83
+ setCursorCol(cursorCol + 1);
84
+ }
85
+ else if (cursorRow < lines.length - 1) {
86
+ setCursorRow(cursorRow + 1);
87
+ setCursorCol(0);
88
+ }
89
+ return;
90
+ }
91
+ if (key.upArrow) {
92
+ if (cursorRow > 0) {
93
+ setCursorRow(cursorRow - 1);
94
+ setCursorCol(Math.min(cursorCol, (lines[cursorRow - 1] || '').length));
95
+ }
96
+ return;
97
+ }
98
+ if (key.downArrow) {
99
+ if (cursorRow < lines.length - 1) {
100
+ setCursorRow(cursorRow + 1);
101
+ setCursorCol(Math.min(cursorCol, (lines[cursorRow + 1] || '').length));
102
+ }
103
+ return;
104
+ }
105
+ // Home/End
106
+ if (key.ctrl && input === 'a') {
107
+ setCursorCol(0);
108
+ return;
109
+ }
110
+ if (key.ctrl && input === 'e') {
111
+ setCursorCol(currentLine.length);
112
+ return;
113
+ }
114
+ // Escape - could cancel or do nothing
115
+ if (key.escape) {
116
+ return;
117
+ }
118
+ // Ctrl+C - exit
119
+ if (key.ctrl && input === 'c') {
120
+ exit();
121
+ return;
122
+ }
123
+ // Regular character input (including paste)
124
+ if (input && !key.ctrl && !key.meta) {
125
+ // Handle multi-line paste
126
+ const pastedLines = input.split('\n');
127
+ if (pastedLines.length === 1) {
128
+ // Single line - insert at cursor
129
+ const newLines = [...lines];
130
+ newLines[cursorRow] = currentLine.slice(0, cursorCol) + input + currentLine.slice(cursorCol);
131
+ setLines(newLines);
132
+ setCursorCol(cursorCol + input.length);
133
+ }
134
+ else {
135
+ // Multi-line paste
136
+ const newLines = [...lines];
137
+ const before = currentLine.slice(0, cursorCol);
138
+ const after = currentLine.slice(cursorCol);
139
+ // First pasted line joins with content before cursor
140
+ newLines[cursorRow] = before + pastedLines[0];
141
+ // Middle lines inserted as-is
142
+ for (let i = 1; i < pastedLines.length - 1; i++) {
143
+ const middleLine = pastedLines[i];
144
+ if (middleLine !== undefined) {
145
+ newLines.splice(cursorRow + i, 0, middleLine);
146
+ }
147
+ }
148
+ // Last pasted line joins with content after cursor
149
+ const lastPastedLine = pastedLines[pastedLines.length - 1] ?? '';
150
+ newLines.splice(cursorRow + pastedLines.length - 1, 0, lastPastedLine + after);
151
+ // Remove the original line's remainder if we split it
152
+ if (pastedLines.length > 1) {
153
+ newLines.splice(cursorRow + pastedLines.length, 1);
154
+ }
155
+ setLines(newLines);
156
+ setCursorRow(cursorRow + pastedLines.length - 1);
157
+ setCursorCol(lastPastedLine.length);
158
+ }
159
+ }
160
+ }, { isActive: focus });
161
+ // Render lines with cursor
162
+ const renderLines = () => {
163
+ if (isEmpty) {
164
+ return (_jsxs(Box, { children: [_jsx(Text, { children: promptColor(prompt) }), _jsx(Text, { children: placeholderColor(placeholder) }), _jsx(Text, { inverse: true, children: " " })] }));
165
+ }
166
+ return lines.map((line, rowIndex) => {
167
+ const isCurrentRow = rowIndex === cursorRow;
168
+ const showPrompt = rowIndex === 0;
169
+ if (isCurrentRow) {
170
+ // Show cursor on this line
171
+ const before = line.slice(0, cursorCol);
172
+ const cursorChar = line[cursorCol] || ' ';
173
+ const after = line.slice(cursorCol + 1);
174
+ return (_jsxs(Box, { children: [_jsx(Text, { children: showPrompt ? promptColor(prompt) : ' ' }), _jsx(Text, { children: textColor(before) }), _jsx(Text, { inverse: true, children: cursorChar }), _jsx(Text, { children: textColor(after) })] }, `line-${rowIndex}`));
175
+ }
176
+ return (_jsxs(Box, { children: [_jsx(Text, { children: showPrompt ? promptColor(prompt) : ' ' }), _jsx(Text, { children: textColor(line) })] }, `line-${rowIndex}`));
177
+ });
178
+ };
179
+ return (_jsx(Box, { flexDirection: "column", children: renderLines() }));
180
+ };
181
+ export default MultiLineInput;
182
+ //# sourceMappingURL=MultiLineInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiLineInput.js","sourceRoot":"","sources":["../../../src/ui/components/MultiLineInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * PermissionsBrowser - Interactive permissions viewer
3
+ *
4
+ * Browse and view permission modes, policies, and tool permissions
5
+ * in an interactive terminal UI.
6
+ */
7
+ import React from 'react';
8
+ interface PermissionsBrowserProps {
9
+ /** Server URL */
10
+ serverUrl?: string;
11
+ /** Callback when user exits browser */
12
+ onExit?: () => void;
13
+ }
14
+ export declare const PermissionsBrowser: React.FC<PermissionsBrowserProps>;
15
+ export {};
16
+ //# sourceMappingURL=PermissionsBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionsBrowser.d.ts","sourceRoot":"","sources":["../../../src/ui/components/PermissionsBrowser.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AA0BnD,UAAU,uBAAuB;IAC/B,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA8RhE,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * PermissionsBrowser - Interactive permissions viewer
4
+ *
5
+ * Browse and view permission modes, policies, and tool permissions
6
+ * in an interactive terminal UI.
7
+ */
8
+ import { useState, useEffect } from 'react';
9
+ import { Box, Text, useInput } from 'ink';
10
+ import SelectInput from 'ink-select-input';
11
+ import Spinner from 'ink-spinner';
12
+ import { CortexClient } from '@nexus-cortex/cli/dist/client/CortexClient.js';
13
+ export const PermissionsBrowser = ({ serverUrl = 'http://localhost:4000', onExit, }) => {
14
+ const [viewMode, setViewMode] = useState('menu');
15
+ const [loading, setLoading] = useState(false);
16
+ const [error, setError] = useState(null);
17
+ // Data states
18
+ const [approvalMode, setApprovalMode] = useState(null);
19
+ const [policies, setPolicies] = useState([]);
20
+ const [toolPermissions, setToolPermissions] = useState({});
21
+ // Handle keyboard input
22
+ useInput((input, key) => {
23
+ if (key.escape || (input === 'q' && viewMode !== 'menu')) {
24
+ setViewMode('menu');
25
+ setError(null);
26
+ }
27
+ if (key.ctrl && input === 'c') {
28
+ onExit?.();
29
+ }
30
+ });
31
+ // Fetch data based on view mode
32
+ useEffect(() => {
33
+ if (viewMode === 'menu')
34
+ return;
35
+ const fetchData = async () => {
36
+ setLoading(true);
37
+ setError(null);
38
+ const client = new CortexClient(serverUrl);
39
+ try {
40
+ switch (viewMode) {
41
+ case 'mode':
42
+ const mode = await client.getApprovalMode();
43
+ setApprovalMode(mode);
44
+ break;
45
+ case 'policies':
46
+ const policiesResp = await client.get('/permissions/policies');
47
+ setPolicies(policiesResp.policies || []);
48
+ break;
49
+ case 'tools':
50
+ const toolsResp = await client.get('/permissions/tools');
51
+ setToolPermissions(toolsResp.permissions || {});
52
+ break;
53
+ }
54
+ setLoading(false);
55
+ }
56
+ catch (err) {
57
+ setError(err.message);
58
+ setLoading(false);
59
+ }
60
+ };
61
+ fetchData();
62
+ }, [viewMode, serverUrl]);
63
+ const handleMenuSelect = (item) => {
64
+ if (item.value === 'menu') {
65
+ onExit?.();
66
+ }
67
+ else {
68
+ setViewMode(item.value);
69
+ }
70
+ };
71
+ const renderMenu = () => (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "magenta", children: " Permissions Browser" }) }), _jsx(Text, { dimColor: true, children: "Select a view:" }), _jsx(Box, { marginTop: 1, children: _jsx(SelectInput, { items: [
72
+ { label: ' Permission Mode', value: 'mode' },
73
+ { label: ' Active Policies', value: 'policies' },
74
+ { label: ' Tool Permissions', value: 'tools' },
75
+ { label: '← Exit', value: 'menu' },
76
+ ], onSelect: handleMenuSelect }) })] }));
77
+ const renderMode = () => {
78
+ if (loading) {
79
+ return (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { children: " Loading permission mode..." })] }));
80
+ }
81
+ if (!approvalMode)
82
+ return null;
83
+ let mode;
84
+ if (approvalMode.yoloMode) {
85
+ mode = 'auto (YOLO)';
86
+ }
87
+ else if (approvalMode.autoApproveActions) {
88
+ mode = 'interactive (auto-approve)';
89
+ }
90
+ else {
91
+ mode = 'interactive';
92
+ }
93
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "cyan", children: " Permission Mode" }) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: "green", children: "Current Mode: " }), _jsx(Text, { bold: true, color: approvalMode.yoloMode ? 'yellow' : 'white', children: mode })] }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: [_jsx(Text, { color: "green", children: "Auto-Approve: " }), _jsx(Text, { color: approvalMode.autoApproveActions ? 'green' : 'red', children: approvalMode.autoApproveActions ? 'enabled' : 'disabled' })] }) }), approvalMode.yoloMode && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "yellow", children: "\u26A0 YOLO Mode active - All actions auto-approved!" }) })), approvalMode.context && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["Context: ", approvalMode.context] }) }))] }), _jsxs(Box, { marginTop: 2, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Available modes:" }), _jsx(Text, { dimColor: true, children: " \u2022 interactive - Prompt for approval on each tool" }), _jsx(Text, { dimColor: true, children: " \u2022 auto - Auto-approve all tools (YOLO)" })] }), _jsx(Box, { marginTop: 2, children: _jsx(Text, { dimColor: true, children: "Press ESC or Q to return to menu" }) })] }));
94
+ };
95
+ const renderPolicies = () => {
96
+ if (loading) {
97
+ return (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { children: " Loading policies..." })] }));
98
+ }
99
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { bold: true, color: "cyan", children: [" Active Policies (", policies.length, ")"] }) }), policies.length === 0 ? (_jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "No active policies configured." }) })) : (_jsx(Box, { flexDirection: "column", marginTop: 1, children: policies.map((policy, index) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: "white", children: policy.name }), _jsxs(Box, { marginLeft: 2, flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: "green", children: "Type: " }), _jsx(Text, { children: policy.type })] }), _jsxs(Text, { children: [_jsx(Text, { color: "green", children: "Status: " }), _jsx(Text, { color: policy.enabled ? 'green' : 'red', children: policy.enabled ? 'Enabled' : 'Disabled' })] }), policy.description && (_jsx(Text, { dimColor: true, children: policy.description }))] })] }, index))) })), _jsx(Box, { marginTop: 2, children: _jsx(Text, { dimColor: true, children: "Press ESC or Q to return to menu" }) })] }));
100
+ };
101
+ const renderTools = () => {
102
+ if (loading) {
103
+ return (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { children: " Loading tool permissions..." })] }));
104
+ }
105
+ const toolEntries = Object.entries(toolPermissions);
106
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { bold: true, color: "cyan", children: [" Tool Permissions (", toolEntries.length, ")"] }) }), toolEntries.length === 0 ? (_jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "No tool permissions configured." }) })) : (_jsx(Box, { flexDirection: "column", marginTop: 1, children: toolEntries.map(([toolName, permission], index) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { children: [_jsxs(Text, { color: "white", children: [toolName, ": "] }), _jsx(Text, { color: permission.granted ? 'green' : 'red', children: permission.granted ? '✓ Granted' : '✗ Denied' })] }), permission.reason && (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { dimColor: true, children: permission.reason }) }))] }, index))) })), _jsxs(Box, { marginTop: 2, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Manage permissions:" }), _jsx(Text, { dimColor: true, children: " cortex permissions grant <tool>" }), _jsx(Text, { dimColor: true, children: " cortex permissions revoke <tool>" })] }), _jsx(Box, { marginTop: 2, children: _jsx(Text, { dimColor: true, children: "Press ESC or Q to return to menu" }) })] }));
107
+ };
108
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [error ? (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "red", children: ["\u2717 Error: ", error] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press ESC or Q to return to menu" }) })] })) : (_jsxs(_Fragment, { children: [viewMode === 'menu' && renderMenu(), viewMode === 'mode' && renderMode(), viewMode === 'policies' && renderPolicies(), viewMode === 'tools' && renderTools()] })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Ctrl+C to exit" }) })] }));
109
+ };
110
+ //# sourceMappingURL=PermissionsBrowser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionsBrowser.js","sourceRoot":"","sources":["../../../src/ui/components/PermissionsBrowser.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * SessionBrowser Component
3
+ * Interactive UI for browsing and selecting chat sessions
4
+ */
5
+ import React from 'react';
6
+ export interface Session {
7
+ id: string;
8
+ model: string;
9
+ messageCount: number;
10
+ created: string;
11
+ lastActive?: string;
12
+ }
13
+ export interface SessionBrowserProps {
14
+ serverUrl?: string;
15
+ onSelect: (session: Session) => void;
16
+ onExit: () => void;
17
+ }
18
+ export declare const SessionBrowser: React.FC<SessionBrowserProps>;
19
+ //# sourceMappingURL=SessionBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionBrowser.d.ts","sourceRoot":"","sources":["../../../src/ui/components/SessionBrowser.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAOD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAwGxD,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * SessionBrowser Component
4
+ * Interactive UI for browsing and selecting chat sessions
5
+ */
6
+ import { useState, useEffect } from 'react';
7
+ import { Box, Text } from 'ink';
8
+ import SelectInput from 'ink-select-input';
9
+ import Spinner from 'ink-spinner';
10
+ import { CortexClient } from '@nexus-cortex/cli/dist/client/CortexClient.js';
11
+ export const SessionBrowser = ({ serverUrl = 'http://localhost:4000', onSelect, onExit, }) => {
12
+ const [sessions, setSessions] = useState([]);
13
+ const [loading, setLoading] = useState(true);
14
+ const [error, setError] = useState(null);
15
+ useEffect(() => {
16
+ const client = new CortexClient(serverUrl);
17
+ client
18
+ .get('/sessions')
19
+ .then((data) => {
20
+ // Handle both array and object with sessions property
21
+ const sessionList = Array.isArray(data) ? data : data.sessions || [];
22
+ setSessions(sessionList);
23
+ setLoading(false);
24
+ })
25
+ .catch((err) => {
26
+ setError(err.message);
27
+ setLoading(false);
28
+ });
29
+ }, [serverUrl]);
30
+ // Loading state
31
+ if (loading) {
32
+ return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsxs(Text, { color: "cyan", children: [_jsx(Spinner, { type: "dots" }), " Loading sessions..."] }) }));
33
+ }
34
+ // Error state
35
+ if (error) {
36
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsxs(Text, { color: "red", children: ["\u2717 Error loading sessions: ", error] }), _jsx(Text, { color: "gray", dimColor: true, children: "Press any key to exit" })] }));
37
+ }
38
+ // No sessions found
39
+ if (sessions.length === 0) {
40
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { color: "yellow", children: "\u26A0 No sessions found" }), _jsx(Text, { color: "gray", dimColor: true, children: "Start a new chat to create a session" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", dimColor: true, children: "Press any key to exit" }) })] }));
41
+ }
42
+ // Format sessions for selection
43
+ const items = sessions.map((session) => {
44
+ const sessionId = session.id.slice(0, 8);
45
+ const messageInfo = `${session.messageCount || 0} messages`;
46
+ const dateInfo = session.created
47
+ ? new Date(session.created).toLocaleDateString()
48
+ : 'Unknown date';
49
+ return {
50
+ label: `${sessionId} - ${session.model} - ${messageInfo} - ${dateInfo}`,
51
+ value: session,
52
+ };
53
+ });
54
+ // Add exit option
55
+ items.push({ label: '← Exit', value: null });
56
+ const handleSelect = (item) => {
57
+ if (item.value) {
58
+ onSelect(item.value);
59
+ }
60
+ else {
61
+ onExit();
62
+ }
63
+ };
64
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Session Browser" }), _jsx(Text, { color: "gray", dimColor: true, children: "Use \u2191/\u2193 to navigate, Enter to select, Ctrl+C to exit" }), _jsx(Box, { marginTop: 1, children: _jsx(SelectInput, { items: items, onSelect: handleSelect }) })] }));
65
+ };
66
+ //# sourceMappingURL=SessionBrowser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionBrowser.js","sourceRoot":"","sources":["../../../src/ui/components/SessionBrowser.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * StatusBar - Displays current mode/state below the input
3
+ *
4
+ * Shows:
5
+ * - Current model
6
+ * - Auto-approve status
7
+ * - Thinking mode status
8
+ * - Debug mode
9
+ */
10
+ import React from 'react';
11
+ export interface StatusBarProps {
12
+ /** Current model name */
13
+ model?: string;
14
+ /** Auto-approve mode enabled */
15
+ autoApprove?: boolean;
16
+ /** Show thinking enabled */
17
+ showThinking?: boolean;
18
+ /** Debug mode enabled */
19
+ debug?: boolean;
20
+ /** Streaming state */
21
+ streaming?: boolean;
22
+ /** Custom status message */
23
+ message?: string;
24
+ /** Theme colors */
25
+ dimColor?: (text: string) => string;
26
+ accentColor?: (text: string) => string;
27
+ successColor?: (text: string) => string;
28
+ warningColor?: (text: string) => string;
29
+ }
30
+ export declare const StatusBar: React.FC<StatusBarProps>;
31
+ export default StatusBar;
32
+ //# sourceMappingURL=StatusBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../src/ui/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAqD9C,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import chalk from 'chalk';
4
+ export const StatusBar = ({ model, autoApprove = false, showThinking = false, debug = false, streaming = false, message, dimColor = chalk.gray, accentColor = chalk.cyan, successColor = chalk.green, warningColor = chalk.yellow, }) => {
5
+ const parts = [];
6
+ // Model
7
+ if (model) {
8
+ parts.push(accentColor(model));
9
+ }
10
+ // Mode indicators
11
+ if (autoApprove) {
12
+ parts.push(warningColor('YOLO'));
13
+ }
14
+ if (showThinking) {
15
+ parts.push(successColor('THINK'));
16
+ }
17
+ if (debug) {
18
+ parts.push(warningColor('DEBUG'));
19
+ }
20
+ if (streaming) {
21
+ parts.push(accentColor('●'));
22
+ }
23
+ const statusText = parts.join(dimColor(' │ '));
24
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { children: dimColor('─'.repeat(60)) }), _jsxs(Box, { children: [_jsx(Text, { children: dimColor(' ') }), _jsx(Text, { children: statusText }), message && (_jsxs(_Fragment, { children: [_jsx(Text, { children: dimColor(' │ ') }), _jsx(Text, { children: dimColor(message) })] }))] })] }));
25
+ };
26
+ export default StatusBar;
27
+ //# sourceMappingURL=StatusBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/ui/components/StatusBar.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAsB1B,MAAM,CAAC,MAAM,SAAS,GAA6B,CAAC,EAClD,KAAK,EACL,WAAW,GAAG,KAAK,EACnB,YAAY,GAAG,KAAK,EACpB,KAAK,GAAG,KAAK,EACb,SAAS,GAAG,KAAK,EACjB,OAAO,EACP,QAAQ,GAAG,KAAK,CAAC,IAAI,EACrB,WAAW,GAAG,KAAK,CAAC,IAAI,EACxB,YAAY,GAAG,KAAK,CAAC,KAAK,EAC1B,YAAY,GAAG,KAAK,CAAC,MAAM,GAC5B,EAAE,EAAE;IACH,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,QAAQ;IACR,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,kBAAkB;IAClB,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,cAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAQ,EACvC,MAAC,GAAG,eACF,KAAC,IAAI,cAAE,QAAQ,CAAC,GAAG,CAAC,GAAQ,EAC5B,KAAC,IAAI,cAAE,UAAU,GAAQ,EACxB,OAAO,IAAI,CACV,8BACE,KAAC,IAAI,cAAE,QAAQ,CAAC,KAAK,CAAC,GAAQ,EAC9B,KAAC,IAAI,cAAE,QAAQ,CAAC,OAAO,CAAC,GAAQ,IAC/B,CACJ,IACG,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * System Message Browser - Browse available system messages
3
+ */
4
+ import React from 'react';
5
+ interface SystemMessageBrowserProps {
6
+ serverUrl?: string;
7
+ onExit: () => void;
8
+ }
9
+ export declare const SystemMessageBrowser: React.FC<SystemMessageBrowserProps>;
10
+ export {};
11
+ //# sourceMappingURL=SystemMessageBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SystemMessageBrowser.d.ts","sourceRoot":"","sources":["../../../src/ui/components/SystemMessageBrowser.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,UAAU,yBAAyB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAYD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA6KpE,CAAC"}