@tecet/ollm 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1359) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +529 -0
  3. package/dist/cli.d.ts +25 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +81173 -0
  6. package/dist/cli.js.map +7 -0
  7. package/dist/commands/__tests__/commandRegistry.test.d.ts +2 -0
  8. package/dist/commands/__tests__/commandRegistry.test.d.ts.map +1 -0
  9. package/dist/commands/__tests__/commandRegistry.test.js +87 -0
  10. package/dist/commands/__tests__/commandRegistry.test.js.map +1 -0
  11. package/dist/commands/__tests__/slashCommandParsing.test.d.ts +10 -0
  12. package/dist/commands/__tests__/slashCommandParsing.test.d.ts.map +1 -0
  13. package/dist/commands/__tests__/slashCommandParsing.test.js +294 -0
  14. package/dist/commands/__tests__/slashCommandParsing.test.js.map +1 -0
  15. package/dist/commands/commandRegistry.d.ts +70 -0
  16. package/dist/commands/commandRegistry.d.ts.map +1 -0
  17. package/dist/commands/commandRegistry.js +378 -0
  18. package/dist/commands/commandRegistry.js.map +1 -0
  19. package/dist/commands/comparisonCommands.d.ts +22 -0
  20. package/dist/commands/comparisonCommands.d.ts.map +1 -0
  21. package/dist/commands/comparisonCommands.js +85 -0
  22. package/dist/commands/comparisonCommands.js.map +1 -0
  23. package/dist/commands/configCommands.d.ts +17 -0
  24. package/dist/commands/configCommands.d.ts.map +1 -0
  25. package/dist/commands/configCommands.js +91 -0
  26. package/dist/commands/configCommands.js.map +1 -0
  27. package/dist/commands/contextCommands.d.ts +19 -0
  28. package/dist/commands/contextCommands.d.ts.map +1 -0
  29. package/dist/commands/contextCommands.js +121 -0
  30. package/dist/commands/contextCommands.js.map +1 -0
  31. package/dist/commands/extensionCommands.d.ts +18 -0
  32. package/dist/commands/extensionCommands.d.ts.map +1 -0
  33. package/dist/commands/extensionCommands.js +341 -0
  34. package/dist/commands/extensionCommands.js.map +1 -0
  35. package/dist/commands/gitCommands.d.ts +20 -0
  36. package/dist/commands/gitCommands.d.ts.map +1 -0
  37. package/dist/commands/gitCommands.js +99 -0
  38. package/dist/commands/gitCommands.js.map +1 -0
  39. package/dist/commands/homeCommand.d.ts +8 -0
  40. package/dist/commands/homeCommand.d.ts.map +1 -0
  41. package/dist/commands/homeCommand.js +18 -0
  42. package/dist/commands/homeCommand.js.map +1 -0
  43. package/dist/commands/hookCommands.d.ts +13 -0
  44. package/dist/commands/hookCommands.d.ts.map +1 -0
  45. package/dist/commands/hookCommands.js +127 -0
  46. package/dist/commands/hookCommands.js.map +1 -0
  47. package/dist/commands/index.d.ts +22 -0
  48. package/dist/commands/index.d.ts.map +1 -0
  49. package/dist/commands/index.js +21 -0
  50. package/dist/commands/index.js.map +1 -0
  51. package/dist/commands/mcpCommands.d.ts +56 -0
  52. package/dist/commands/mcpCommands.d.ts.map +1 -0
  53. package/dist/commands/mcpCommands.js +360 -0
  54. package/dist/commands/mcpCommands.js.map +1 -0
  55. package/dist/commands/mcpHealthCommands.d.ts +17 -0
  56. package/dist/commands/mcpHealthCommands.d.ts.map +1 -0
  57. package/dist/commands/mcpHealthCommands.js +303 -0
  58. package/dist/commands/mcpHealthCommands.js.map +1 -0
  59. package/dist/commands/mcpOAuthCommands.d.ts +16 -0
  60. package/dist/commands/mcpOAuthCommands.d.ts.map +1 -0
  61. package/dist/commands/mcpOAuthCommands.js +244 -0
  62. package/dist/commands/mcpOAuthCommands.js.map +1 -0
  63. package/dist/commands/memoryCommands.d.ts +25 -0
  64. package/dist/commands/memoryCommands.d.ts.map +1 -0
  65. package/dist/commands/memoryCommands.js +202 -0
  66. package/dist/commands/memoryCommands.js.map +1 -0
  67. package/dist/commands/metricsCommands.d.ts +20 -0
  68. package/dist/commands/metricsCommands.d.ts.map +1 -0
  69. package/dist/commands/metricsCommands.js +88 -0
  70. package/dist/commands/metricsCommands.js.map +1 -0
  71. package/dist/commands/modeCommands.d.ts +22 -0
  72. package/dist/commands/modeCommands.d.ts.map +1 -0
  73. package/dist/commands/modeCommands.js +452 -0
  74. package/dist/commands/modeCommands.js.map +1 -0
  75. package/dist/commands/modeShortcuts.d.ts +53 -0
  76. package/dist/commands/modeShortcuts.d.ts.map +1 -0
  77. package/dist/commands/modeShortcuts.js +213 -0
  78. package/dist/commands/modeShortcuts.js.map +1 -0
  79. package/dist/commands/modelCommands.d.ts +44 -0
  80. package/dist/commands/modelCommands.d.ts.map +1 -0
  81. package/dist/commands/modelCommands.js +448 -0
  82. package/dist/commands/modelCommands.js.map +1 -0
  83. package/dist/commands/projectCommands.d.ts +24 -0
  84. package/dist/commands/projectCommands.d.ts.map +1 -0
  85. package/dist/commands/projectCommands.js +175 -0
  86. package/dist/commands/projectCommands.js.map +1 -0
  87. package/dist/commands/providerCommands.d.ts +19 -0
  88. package/dist/commands/providerCommands.d.ts.map +1 -0
  89. package/dist/commands/providerCommands.js +87 -0
  90. package/dist/commands/providerCommands.js.map +1 -0
  91. package/dist/commands/reasoningCommands.d.ts +20 -0
  92. package/dist/commands/reasoningCommands.d.ts.map +1 -0
  93. package/dist/commands/reasoningCommands.js +86 -0
  94. package/dist/commands/reasoningCommands.js.map +1 -0
  95. package/dist/commands/reviewCommands.d.ts +20 -0
  96. package/dist/commands/reviewCommands.d.ts.map +1 -0
  97. package/dist/commands/reviewCommands.js +89 -0
  98. package/dist/commands/reviewCommands.js.map +1 -0
  99. package/dist/commands/sessionCommands.d.ts +41 -0
  100. package/dist/commands/sessionCommands.d.ts.map +1 -0
  101. package/dist/commands/sessionCommands.js +242 -0
  102. package/dist/commands/sessionCommands.js.map +1 -0
  103. package/dist/commands/snapshotCommands.d.ts +20 -0
  104. package/dist/commands/snapshotCommands.d.ts.map +1 -0
  105. package/dist/commands/snapshotCommands.js +297 -0
  106. package/dist/commands/snapshotCommands.js.map +1 -0
  107. package/dist/commands/templateCommands.d.ts +24 -0
  108. package/dist/commands/templateCommands.d.ts.map +1 -0
  109. package/dist/commands/templateCommands.js +186 -0
  110. package/dist/commands/templateCommands.js.map +1 -0
  111. package/dist/commands/themeCommands.d.ts +29 -0
  112. package/dist/commands/themeCommands.d.ts.map +1 -0
  113. package/dist/commands/themeCommands.js +179 -0
  114. package/dist/commands/themeCommands.js.map +1 -0
  115. package/dist/commands/types.d.ts +50 -0
  116. package/dist/commands/types.d.ts.map +1 -0
  117. package/dist/commands/types.js +2 -0
  118. package/dist/commands/types.js.map +1 -0
  119. package/dist/commands/utilityCommands.d.ts +29 -0
  120. package/dist/commands/utilityCommands.d.ts.map +1 -0
  121. package/dist/commands/utilityCommands.js +495 -0
  122. package/dist/commands/utilityCommands.js.map +1 -0
  123. package/dist/commands/workflowCommands.d.ts +56 -0
  124. package/dist/commands/workflowCommands.d.ts.map +1 -0
  125. package/dist/commands/workflowCommands.js +484 -0
  126. package/dist/commands/workflowCommands.js.map +1 -0
  127. package/dist/config/LLM_profiles.json +1908 -0
  128. package/dist/config/configLoader.d.ts +30 -0
  129. package/dist/config/configLoader.d.ts.map +1 -0
  130. package/dist/config/configLoader.js +380 -0
  131. package/dist/config/configLoader.js.map +1 -0
  132. package/dist/config/defaults.d.ts +25 -0
  133. package/dist/config/defaults.d.ts.map +1 -0
  134. package/dist/config/defaults.js +137 -0
  135. package/dist/config/defaults.js.map +1 -0
  136. package/dist/config/keybinds.d.ts +113 -0
  137. package/dist/config/keybinds.d.ts.map +1 -0
  138. package/dist/config/keybinds.js +113 -0
  139. package/dist/config/keybinds.js.map +1 -0
  140. package/dist/config/profiles.d.ts +44 -0
  141. package/dist/config/profiles.d.ts.map +1 -0
  142. package/dist/config/profiles.js +236 -0
  143. package/dist/config/profiles.js.map +1 -0
  144. package/dist/config/schema.d.ts +254 -0
  145. package/dist/config/schema.d.ts.map +1 -0
  146. package/dist/config/schema.js +160 -0
  147. package/dist/config/schema.js.map +1 -0
  148. package/dist/config/settingsService.d.ts +251 -0
  149. package/dist/config/settingsService.d.ts.map +1 -0
  150. package/dist/config/settingsService.js +493 -0
  151. package/dist/config/settingsService.js.map +1 -0
  152. package/dist/config/styles.d.ts +28 -0
  153. package/dist/config/styles.d.ts.map +1 -0
  154. package/dist/config/styles.js +33 -0
  155. package/dist/config/styles.js.map +1 -0
  156. package/dist/config/systemSettings.json +17 -0
  157. package/dist/config/themes.d.ts +14 -0
  158. package/dist/config/themes.d.ts.map +1 -0
  159. package/dist/config/themes.js +248 -0
  160. package/dist/config/themes.js.map +1 -0
  161. package/dist/config/toolsConfig.d.ts +53 -0
  162. package/dist/config/toolsConfig.d.ts.map +1 -0
  163. package/dist/config/toolsConfig.js +171 -0
  164. package/dist/config/toolsConfig.js.map +1 -0
  165. package/dist/config/types.d.ts +306 -0
  166. package/dist/config/types.d.ts.map +1 -0
  167. package/dist/config/types.js +6 -0
  168. package/dist/config/types.js.map +1 -0
  169. package/dist/features/chat/ChatProvider.d.ts +24 -0
  170. package/dist/features/chat/ChatProvider.d.ts.map +1 -0
  171. package/dist/features/chat/ChatProvider.js +166 -0
  172. package/dist/features/chat/ChatProvider.js.map +1 -0
  173. package/dist/features/chat/hooks/useAgentLoop.d.ts +27 -0
  174. package/dist/features/chat/hooks/useAgentLoop.d.ts.map +1 -0
  175. package/dist/features/chat/hooks/useAgentLoop.js +253 -0
  176. package/dist/features/chat/hooks/useAgentLoop.js.map +1 -0
  177. package/dist/features/chat/hooks/useChatNetwork.d.ts +39 -0
  178. package/dist/features/chat/hooks/useChatNetwork.d.ts.map +1 -0
  179. package/dist/features/chat/hooks/useChatNetwork.js +276 -0
  180. package/dist/features/chat/hooks/useChatNetwork.js.map +1 -0
  181. package/dist/features/chat/hooks/useChatState.d.ts +32 -0
  182. package/dist/features/chat/hooks/useChatState.d.ts.map +1 -0
  183. package/dist/features/chat/hooks/useChatState.js +77 -0
  184. package/dist/features/chat/hooks/useChatState.js.map +1 -0
  185. package/dist/features/chat/hooks/useContextEvents.d.ts +22 -0
  186. package/dist/features/chat/hooks/useContextEvents.d.ts.map +1 -0
  187. package/dist/features/chat/hooks/useContextEvents.js +160 -0
  188. package/dist/features/chat/hooks/useContextEvents.js.map +1 -0
  189. package/dist/features/chat/hooks/useMenuSystem.d.ts +24 -0
  190. package/dist/features/chat/hooks/useMenuSystem.d.ts.map +1 -0
  191. package/dist/features/chat/hooks/useMenuSystem.js +71 -0
  192. package/dist/features/chat/hooks/useMenuSystem.js.map +1 -0
  193. package/dist/features/chat/hooks/useScrollManager.d.ts +23 -0
  194. package/dist/features/chat/hooks/useScrollManager.d.ts.map +1 -0
  195. package/dist/features/chat/hooks/useScrollManager.js +38 -0
  196. package/dist/features/chat/hooks/useScrollManager.js.map +1 -0
  197. package/dist/features/chat/hooks/useSessionRecording.d.ts +18 -0
  198. package/dist/features/chat/hooks/useSessionRecording.d.ts.map +1 -0
  199. package/dist/features/chat/hooks/useSessionRecording.js +48 -0
  200. package/dist/features/chat/hooks/useSessionRecording.js.map +1 -0
  201. package/dist/features/chat/index.d.ts +12 -0
  202. package/dist/features/chat/index.d.ts.map +1 -0
  203. package/dist/features/chat/index.js +15 -0
  204. package/dist/features/chat/index.js.map +1 -0
  205. package/dist/features/chat/types.d.ts +138 -0
  206. package/dist/features/chat/types.d.ts.map +1 -0
  207. package/dist/features/chat/types.js +5 -0
  208. package/dist/features/chat/types.js.map +1 -0
  209. package/dist/features/chat/utils/promptUtils.d.ts +21 -0
  210. package/dist/features/chat/utils/promptUtils.d.ts.map +1 -0
  211. package/dist/features/chat/utils/promptUtils.js +103 -0
  212. package/dist/features/chat/utils/promptUtils.js.map +1 -0
  213. package/dist/features/context/ActiveContextState.d.ts +32 -0
  214. package/dist/features/context/ActiveContextState.d.ts.map +1 -0
  215. package/dist/features/context/ActiveContextState.js +284 -0
  216. package/dist/features/context/ActiveContextState.js.map +1 -0
  217. package/dist/features/context/ChatContext.d.ts +8 -0
  218. package/dist/features/context/ChatContext.d.ts.map +1 -0
  219. package/dist/features/context/ChatContext.js +536 -0
  220. package/dist/features/context/ChatContext.js.map +1 -0
  221. package/dist/features/context/ContextManagerContext.d.ts +132 -0
  222. package/dist/features/context/ContextManagerContext.d.ts.map +1 -0
  223. package/dist/features/context/ContextManagerContext.js +771 -0
  224. package/dist/features/context/ContextManagerContext.js.map +1 -0
  225. package/dist/features/context/ContextStatus.d.ts +43 -0
  226. package/dist/features/context/ContextStatus.d.ts.map +1 -0
  227. package/dist/features/context/ContextStatus.js +44 -0
  228. package/dist/features/context/ContextStatus.js.map +1 -0
  229. package/dist/features/context/FocusContext.d.ts +267 -0
  230. package/dist/features/context/FocusContext.d.ts.map +1 -0
  231. package/dist/features/context/FocusContext.js +324 -0
  232. package/dist/features/context/FocusContext.js.map +1 -0
  233. package/dist/features/context/GPUContext.d.ts +25 -0
  234. package/dist/features/context/GPUContext.d.ts.map +1 -0
  235. package/dist/features/context/GPUContext.js +64 -0
  236. package/dist/features/context/GPUContext.js.map +1 -0
  237. package/dist/features/context/HooksContext.d.ts +42 -0
  238. package/dist/features/context/HooksContext.d.ts.map +1 -0
  239. package/dist/features/context/HooksContext.js +310 -0
  240. package/dist/features/context/HooksContext.js.map +1 -0
  241. package/dist/features/context/KeybindsContext.d.ts +20 -0
  242. package/dist/features/context/KeybindsContext.d.ts.map +1 -0
  243. package/dist/features/context/KeybindsContext.js +80 -0
  244. package/dist/features/context/KeybindsContext.js.map +1 -0
  245. package/dist/features/context/ModelContext.d.ts +56 -0
  246. package/dist/features/context/ModelContext.d.ts.map +1 -0
  247. package/dist/features/context/ModelContext.js +290 -0
  248. package/dist/features/context/ModelContext.js.map +1 -0
  249. package/dist/features/context/ReviewContext.d.ts +50 -0
  250. package/dist/features/context/ReviewContext.d.ts.map +1 -0
  251. package/dist/features/context/ReviewContext.js +108 -0
  252. package/dist/features/context/ReviewContext.js.map +1 -0
  253. package/dist/features/context/ServiceContext.d.ts +46 -0
  254. package/dist/features/context/ServiceContext.d.ts.map +1 -0
  255. package/dist/features/context/ServiceContext.js +162 -0
  256. package/dist/features/context/ServiceContext.js.map +1 -0
  257. package/dist/features/context/SessionManager.d.ts +66 -0
  258. package/dist/features/context/SessionManager.d.ts.map +1 -0
  259. package/dist/features/context/SessionManager.js +117 -0
  260. package/dist/features/context/SessionManager.js.map +1 -0
  261. package/dist/features/context/SettingsContext.d.ts +15 -0
  262. package/dist/features/context/SettingsContext.d.ts.map +1 -0
  263. package/dist/features/context/SettingsContext.js +75 -0
  264. package/dist/features/context/SettingsContext.js.map +1 -0
  265. package/dist/features/context/SystemMessages.d.ts +27 -0
  266. package/dist/features/context/SystemMessages.d.ts.map +1 -0
  267. package/dist/features/context/SystemMessages.js +130 -0
  268. package/dist/features/context/SystemMessages.js.map +1 -0
  269. package/dist/features/context/ToolSupportMessages.d.ts +72 -0
  270. package/dist/features/context/ToolSupportMessages.d.ts.map +1 -0
  271. package/dist/features/context/ToolSupportMessages.js +116 -0
  272. package/dist/features/context/ToolSupportMessages.js.map +1 -0
  273. package/dist/features/context/UIContext.d.ts +43 -0
  274. package/dist/features/context/UIContext.d.ts.map +1 -0
  275. package/dist/features/context/UIContext.js +83 -0
  276. package/dist/features/context/UIContext.js.map +1 -0
  277. package/dist/features/context/UserPromptContext.d.ts +66 -0
  278. package/dist/features/context/UserPromptContext.d.ts.map +1 -0
  279. package/dist/features/context/UserPromptContext.js +176 -0
  280. package/dist/features/context/UserPromptContext.js.map +1 -0
  281. package/dist/features/context/__tests__/ModelContext.test.d.ts +5 -0
  282. package/dist/features/context/__tests__/ModelContext.test.d.ts.map +1 -0
  283. package/dist/features/context/__tests__/ModelContext.test.js +579 -0
  284. package/dist/features/context/__tests__/ModelContext.test.js.map +1 -0
  285. package/dist/features/context/contextSizing.d.ts +48 -0
  286. package/dist/features/context/contextSizing.d.ts.map +1 -0
  287. package/dist/features/context/contextSizing.js +87 -0
  288. package/dist/features/context/contextSizing.js.map +1 -0
  289. package/dist/features/context/gpuHintStore.d.ts +7 -0
  290. package/dist/features/context/gpuHintStore.d.ts.map +1 -0
  291. package/dist/features/context/gpuHintStore.js +15 -0
  292. package/dist/features/context/gpuHintStore.js.map +1 -0
  293. package/dist/features/context/gpuHints.d.ts +3 -0
  294. package/dist/features/context/gpuHints.d.ts.map +1 -0
  295. package/dist/features/context/gpuHints.js +2 -0
  296. package/dist/features/context/gpuHints.js.map +1 -0
  297. package/dist/features/context/handlers/agentLoopHandler.d.ts +58 -0
  298. package/dist/features/context/handlers/agentLoopHandler.d.ts.map +1 -0
  299. package/dist/features/context/handlers/agentLoopHandler.js +505 -0
  300. package/dist/features/context/handlers/agentLoopHandler.js.map +1 -0
  301. package/dist/features/context/handlers/commandHandler.d.ts +52 -0
  302. package/dist/features/context/handlers/commandHandler.d.ts.map +1 -0
  303. package/dist/features/context/handlers/commandHandler.js +107 -0
  304. package/dist/features/context/handlers/commandHandler.js.map +1 -0
  305. package/dist/features/context/handlers/contextEventHandlers.d.ts +71 -0
  306. package/dist/features/context/handlers/contextEventHandlers.d.ts.map +1 -0
  307. package/dist/features/context/handlers/contextEventHandlers.js +216 -0
  308. package/dist/features/context/handlers/contextEventHandlers.js.map +1 -0
  309. package/dist/features/context/hooks/useModelWarmup.d.ts +24 -0
  310. package/dist/features/context/hooks/useModelWarmup.d.ts.map +1 -0
  311. package/dist/features/context/hooks/useModelWarmup.js +181 -0
  312. package/dist/features/context/hooks/useModelWarmup.js.map +1 -0
  313. package/dist/features/context/hooks/useToolSupport.d.ts +19 -0
  314. package/dist/features/context/hooks/useToolSupport.d.ts.map +1 -0
  315. package/dist/features/context/hooks/useToolSupport.js +290 -0
  316. package/dist/features/context/hooks/useToolSupport.js.map +1 -0
  317. package/dist/features/context/types/chatTypes.d.ts +150 -0
  318. package/dist/features/context/types/chatTypes.d.ts.map +1 -0
  319. package/dist/features/context/types/chatTypes.js +8 -0
  320. package/dist/features/context/types/chatTypes.js.map +1 -0
  321. package/dist/features/context/useFocusedFilesInjection.d.ts +17 -0
  322. package/dist/features/context/useFocusedFilesInjection.d.ts.map +1 -0
  323. package/dist/features/context/useFocusedFilesInjection.js +37 -0
  324. package/dist/features/context/useFocusedFilesInjection.js.map +1 -0
  325. package/dist/features/context/utils/promptUtils.d.ts +28 -0
  326. package/dist/features/context/utils/promptUtils.d.ts.map +1 -0
  327. package/dist/features/context/utils/promptUtils.js +105 -0
  328. package/dist/features/context/utils/promptUtils.js.map +1 -0
  329. package/dist/features/context/utils/systemPromptBuilder.d.ts +39 -0
  330. package/dist/features/context/utils/systemPromptBuilder.d.ts.map +1 -0
  331. package/dist/features/context/utils/systemPromptBuilder.js +66 -0
  332. package/dist/features/context/utils/systemPromptBuilder.js.map +1 -0
  333. package/dist/features/hooks/adapter.d.ts +73 -0
  334. package/dist/features/hooks/adapter.d.ts.map +1 -0
  335. package/dist/features/hooks/adapter.js +259 -0
  336. package/dist/features/hooks/adapter.js.map +1 -0
  337. package/dist/features/hooks/index.d.ts +9 -0
  338. package/dist/features/hooks/index.d.ts.map +1 -0
  339. package/dist/features/hooks/index.js +9 -0
  340. package/dist/features/hooks/index.js.map +1 -0
  341. package/dist/features/hooks/types.d.ts +128 -0
  342. package/dist/features/hooks/types.d.ts.map +1 -0
  343. package/dist/features/hooks/types.js +9 -0
  344. package/dist/features/hooks/types.js.map +1 -0
  345. package/dist/features/profiles/ProfileManager.d.ts +56 -0
  346. package/dist/features/profiles/ProfileManager.d.ts.map +1 -0
  347. package/dist/features/profiles/ProfileManager.js +429 -0
  348. package/dist/features/profiles/ProfileManager.js.map +1 -0
  349. package/dist/features/profiles/__tests__/ProfileManager.integration.test.d.ts +12 -0
  350. package/dist/features/profiles/__tests__/ProfileManager.integration.test.d.ts.map +1 -0
  351. package/dist/features/profiles/__tests__/ProfileManager.integration.test.js +156 -0
  352. package/dist/features/profiles/__tests__/ProfileManager.integration.test.js.map +1 -0
  353. package/dist/features/profiles/modelUtils.d.ts +12 -0
  354. package/dist/features/profiles/modelUtils.d.ts.map +1 -0
  355. package/dist/features/profiles/modelUtils.js +20 -0
  356. package/dist/features/profiles/modelUtils.js.map +1 -0
  357. package/dist/features/provider/providerFactory.d.ts +19 -0
  358. package/dist/features/provider/providerFactory.d.ts.map +1 -0
  359. package/dist/features/provider/providerFactory.js +40 -0
  360. package/dist/features/provider/providerFactory.js.map +1 -0
  361. package/dist/lama_sprite/left/llama-l1.png +0 -0
  362. package/dist/lama_sprite/left/llama-l2.png +0 -0
  363. package/dist/lama_sprite/left/llama-l3.png +0 -0
  364. package/dist/lama_sprite/left/llama-l4.png +0 -0
  365. package/dist/lama_sprite/left/llama-l5.png +0 -0
  366. package/dist/lama_sprite/left/llama-l6.png +0 -0
  367. package/dist/lama_sprite/right/llama-r1.png +0 -0
  368. package/dist/lama_sprite/right/llama-r2.png +0 -0
  369. package/dist/lama_sprite/right/llama-r3.png +0 -0
  370. package/dist/lama_sprite/right/llama-r4.png +0 -0
  371. package/dist/lama_sprite/right/llama-r5.png +0 -0
  372. package/dist/lama_sprite/right/llama-r6.png +0 -0
  373. package/dist/nonInteractive.d.ts +87 -0
  374. package/dist/nonInteractive.d.ts.map +1 -0
  375. package/dist/nonInteractive.js +313 -0
  376. package/dist/nonInteractive.js.map +1 -0
  377. package/dist/services/KeybindsService.d.ts +13 -0
  378. package/dist/services/KeybindsService.d.ts.map +1 -0
  379. package/dist/services/KeybindsService.js +75 -0
  380. package/dist/services/KeybindsService.js.map +1 -0
  381. package/dist/services/__tests__/mcpConfigService.test.d.ts +5 -0
  382. package/dist/services/__tests__/mcpConfigService.test.d.ts.map +1 -0
  383. package/dist/services/__tests__/mcpConfigService.test.js +487 -0
  384. package/dist/services/__tests__/mcpConfigService.test.js.map +1 -0
  385. package/dist/services/__tests__/mcpMarketplace.integration.test.d.ts +8 -0
  386. package/dist/services/__tests__/mcpMarketplace.integration.test.d.ts.map +1 -0
  387. package/dist/services/__tests__/mcpMarketplace.integration.test.js +155 -0
  388. package/dist/services/__tests__/mcpMarketplace.integration.test.js.map +1 -0
  389. package/dist/services/__tests__/profileCompiler.test.d.ts +10 -0
  390. package/dist/services/__tests__/profileCompiler.test.d.ts.map +1 -0
  391. package/dist/services/__tests__/profileCompiler.test.js +357 -0
  392. package/dist/services/__tests__/profileCompiler.test.js.map +1 -0
  393. package/dist/services/documentService.d.ts +40 -0
  394. package/dist/services/documentService.d.ts.map +1 -0
  395. package/dist/services/documentService.js +202 -0
  396. package/dist/services/documentService.js.map +1 -0
  397. package/dist/services/hookFileService.d.ts +74 -0
  398. package/dist/services/hookFileService.d.ts.map +1 -0
  399. package/dist/services/hookFileService.js +311 -0
  400. package/dist/services/hookFileService.js.map +1 -0
  401. package/dist/services/hookLoader.d.ts +25 -0
  402. package/dist/services/hookLoader.d.ts.map +1 -0
  403. package/dist/services/hookLoader.js +87 -0
  404. package/dist/services/hookLoader.js.map +1 -0
  405. package/dist/services/mcpCleanup.d.ts +55 -0
  406. package/dist/services/mcpCleanup.d.ts.map +1 -0
  407. package/dist/services/mcpCleanup.js +196 -0
  408. package/dist/services/mcpCleanup.js.map +1 -0
  409. package/dist/services/mcpConfigBackup.d.ts +81 -0
  410. package/dist/services/mcpConfigBackup.d.ts.map +1 -0
  411. package/dist/services/mcpConfigBackup.js +406 -0
  412. package/dist/services/mcpConfigBackup.js.map +1 -0
  413. package/dist/services/mcpConfigService.d.ts +133 -0
  414. package/dist/services/mcpConfigService.d.ts.map +1 -0
  415. package/dist/services/mcpConfigService.js +349 -0
  416. package/dist/services/mcpConfigService.js.map +1 -0
  417. package/dist/services/mcpMarketplace.d.ts +130 -0
  418. package/dist/services/mcpMarketplace.d.ts.map +1 -0
  419. package/dist/services/mcpMarketplace.js +693 -0
  420. package/dist/services/mcpMarketplace.js.map +1 -0
  421. package/dist/services/profileCompiler.d.ts +79 -0
  422. package/dist/services/profileCompiler.d.ts.map +1 -0
  423. package/dist/services/profileCompiler.js +280 -0
  424. package/dist/services/profileCompiler.js.map +1 -0
  425. package/dist/templates/assistant/tier1.txt +18 -0
  426. package/dist/templates/assistant/tier2.txt +27 -0
  427. package/dist/templates/assistant/tier3.txt +49 -0
  428. package/dist/templates/assistant/tier4.txt +57 -0
  429. package/dist/templates/assistant/tier5.txt +51 -0
  430. package/dist/templates/debugger/tier1.txt +17 -0
  431. package/dist/templates/debugger/tier2.txt +28 -0
  432. package/dist/templates/debugger/tier3.txt +56 -0
  433. package/dist/templates/debugger/tier4.txt +58 -0
  434. package/dist/templates/debugger/tier5.txt +62 -0
  435. package/dist/templates/developer/tier1.txt +18 -0
  436. package/dist/templates/developer/tier2.txt +34 -0
  437. package/dist/templates/developer/tier3.txt +40 -0
  438. package/dist/templates/developer/tier4.txt +99 -0
  439. package/dist/templates/developer/tier5.txt +100 -0
  440. package/dist/templates/modes/index.ts +52 -0
  441. package/dist/templates/planning/tier1.txt +18 -0
  442. package/dist/templates/planning/tier2.txt +27 -0
  443. package/dist/templates/planning/tier3.txt +49 -0
  444. package/dist/templates/planning/tier4.txt +140 -0
  445. package/dist/templates/planning/tier5.txt +140 -0
  446. package/dist/templates/stateSnapshot.ts +38 -0
  447. package/dist/templates/system/.gitkeep +2 -0
  448. package/dist/templates/system/CoreMandates.txt +8 -0
  449. package/dist/templates/system/SanityChecks.txt +5 -0
  450. package/dist/templates/system/ToolDescriptions.txt +46 -0
  451. package/dist/templates/system/skills/.gitkeep +2 -0
  452. package/dist/templates/system/skills/SkillsAssistant.txt +27 -0
  453. package/dist/templates/system/skills/SkillsDebugger.txt +34 -0
  454. package/dist/templates/system/skills/SkillsDeveloper.txt +27 -0
  455. package/dist/templates/system/skills/SkillsPlanning.txt +33 -0
  456. package/dist/templates/system/skills/SkillsUser.txt +23 -0
  457. package/dist/templates/user/tier1.txt +18 -0
  458. package/dist/templates/user/tier2.txt +27 -0
  459. package/dist/templates/user/tier3.txt +49 -0
  460. package/dist/templates/user/tier4.txt +57 -0
  461. package/dist/templates/user/tier5.txt +51 -0
  462. package/dist/ui/App.d.ts +20 -0
  463. package/dist/ui/App.d.ts.map +1 -0
  464. package/dist/ui/App.js +355 -0
  465. package/dist/ui/App.js.map +1 -0
  466. package/dist/ui/components/AllCallbacksBridge.d.ts +31 -0
  467. package/dist/ui/components/AllCallbacksBridge.d.ts.map +1 -0
  468. package/dist/ui/components/AllCallbacksBridge.js +75 -0
  469. package/dist/ui/components/AllCallbacksBridge.js.map +1 -0
  470. package/dist/ui/components/ErrorBoundary.d.ts +38 -0
  471. package/dist/ui/components/ErrorBoundary.d.ts.map +1 -0
  472. package/dist/ui/components/ErrorBoundary.js +70 -0
  473. package/dist/ui/components/ErrorBoundary.js.map +1 -0
  474. package/dist/ui/components/FullScreen.d.ts +24 -0
  475. package/dist/ui/components/FullScreen.d.ts.map +1 -0
  476. package/dist/ui/components/FullScreen.js +70 -0
  477. package/dist/ui/components/FullScreen.js.map +1 -0
  478. package/dist/ui/components/HybridModeDisplay.d.ts +36 -0
  479. package/dist/ui/components/HybridModeDisplay.d.ts.map +1 -0
  480. package/dist/ui/components/HybridModeDisplay.js +30 -0
  481. package/dist/ui/components/HybridModeDisplay.js.map +1 -0
  482. package/dist/ui/components/InputRouter.d.ts +16 -0
  483. package/dist/ui/components/InputRouter.d.ts.map +1 -0
  484. package/dist/ui/components/InputRouter.js +67 -0
  485. package/dist/ui/components/InputRouter.js.map +1 -0
  486. package/dist/ui/components/InputRoutingIndicator.d.ts +10 -0
  487. package/dist/ui/components/InputRoutingIndicator.d.ts.map +1 -0
  488. package/dist/ui/components/InputRoutingIndicator.js +13 -0
  489. package/dist/ui/components/InputRoutingIndicator.js.map +1 -0
  490. package/dist/ui/components/RightPanelLLMChat.d.ts +7 -0
  491. package/dist/ui/components/RightPanelLLMChat.d.ts.map +1 -0
  492. package/dist/ui/components/RightPanelLLMChat.js +15 -0
  493. package/dist/ui/components/RightPanelLLMChat.js.map +1 -0
  494. package/dist/ui/components/Terminal.d.ts +12 -0
  495. package/dist/ui/components/Terminal.d.ts.map +1 -0
  496. package/dist/ui/components/Terminal.js +90 -0
  497. package/dist/ui/components/Terminal.js.map +1 -0
  498. package/dist/ui/components/Terminal2.d.ts +10 -0
  499. package/dist/ui/components/Terminal2.d.ts.map +1 -0
  500. package/dist/ui/components/Terminal2.js +67 -0
  501. package/dist/ui/components/Terminal2.js.map +1 -0
  502. package/dist/ui/components/UICallbacksBridge.d.ts +25 -0
  503. package/dist/ui/components/UICallbacksBridge.d.ts.map +1 -0
  504. package/dist/ui/components/UICallbacksBridge.js +68 -0
  505. package/dist/ui/components/UICallbacksBridge.js.map +1 -0
  506. package/dist/ui/components/WindowSwitcher.d.ts +35 -0
  507. package/dist/ui/components/WindowSwitcher.d.ts.map +1 -0
  508. package/dist/ui/components/WindowSwitcher.js +20 -0
  509. package/dist/ui/components/WindowSwitcher.js.map +1 -0
  510. package/dist/ui/components/__tests__/testUtils.d.ts +69 -0
  511. package/dist/ui/components/__tests__/testUtils.d.ts.map +1 -0
  512. package/dist/ui/components/__tests__/testUtils.js +76 -0
  513. package/dist/ui/components/__tests__/testUtils.js.map +1 -0
  514. package/dist/ui/components/animations/lama/LlamaAnimation.d.ts +15 -0
  515. package/dist/ui/components/animations/lama/LlamaAnimation.d.ts.map +1 -0
  516. package/dist/ui/components/animations/lama/LlamaAnimation.js +375 -0
  517. package/dist/ui/components/animations/lama/LlamaAnimation.js.map +1 -0
  518. package/dist/ui/components/chat/ChatHistory.d.ts +57 -0
  519. package/dist/ui/components/chat/ChatHistory.d.ts.map +1 -0
  520. package/dist/ui/components/chat/ChatHistory.js +354 -0
  521. package/dist/ui/components/chat/ChatHistory.js.map +1 -0
  522. package/dist/ui/components/chat/Message.d.ts +20 -0
  523. package/dist/ui/components/chat/Message.d.ts.map +1 -0
  524. package/dist/ui/components/chat/Message.js +30 -0
  525. package/dist/ui/components/chat/Message.js.map +1 -0
  526. package/dist/ui/components/chat/MetricsDisplay.d.ts +36 -0
  527. package/dist/ui/components/chat/MetricsDisplay.d.ts.map +1 -0
  528. package/dist/ui/components/chat/MetricsDisplay.js +36 -0
  529. package/dist/ui/components/chat/MetricsDisplay.js.map +1 -0
  530. package/dist/ui/components/chat/ModeTransitionIndicator.d.ts +23 -0
  531. package/dist/ui/components/chat/ModeTransitionIndicator.d.ts.map +1 -0
  532. package/dist/ui/components/chat/ModeTransitionIndicator.js +57 -0
  533. package/dist/ui/components/chat/ModeTransitionIndicator.js.map +1 -0
  534. package/dist/ui/components/chat/ReasoningBox.d.ts +39 -0
  535. package/dist/ui/components/chat/ReasoningBox.d.ts.map +1 -0
  536. package/dist/ui/components/chat/ReasoningBox.js +106 -0
  537. package/dist/ui/components/chat/ReasoningBox.js.map +1 -0
  538. package/dist/ui/components/chat/StreamingIndicator.d.ts +17 -0
  539. package/dist/ui/components/chat/StreamingIndicator.d.ts.map +1 -0
  540. package/dist/ui/components/chat/StreamingIndicator.js +28 -0
  541. package/dist/ui/components/chat/StreamingIndicator.js.map +1 -0
  542. package/dist/ui/components/chat/ToolCall.d.ts +25 -0
  543. package/dist/ui/components/chat/ToolCall.d.ts.map +1 -0
  544. package/dist/ui/components/chat/ToolCall.js +26 -0
  545. package/dist/ui/components/chat/ToolCall.js.map +1 -0
  546. package/dist/ui/components/chat/index.d.ts +15 -0
  547. package/dist/ui/components/chat/index.d.ts.map +1 -0
  548. package/dist/ui/components/chat/index.js +8 -0
  549. package/dist/ui/components/chat/index.js.map +1 -0
  550. package/dist/ui/components/code-editor/EditorMockup.d.ts +20 -0
  551. package/dist/ui/components/code-editor/EditorMockup.d.ts.map +1 -0
  552. package/dist/ui/components/code-editor/EditorMockup.js +346 -0
  553. package/dist/ui/components/code-editor/EditorMockup.js.map +1 -0
  554. package/dist/ui/components/code-editor/index.d.ts +7 -0
  555. package/dist/ui/components/code-editor/index.d.ts.map +1 -0
  556. package/dist/ui/components/code-editor/index.js +7 -0
  557. package/dist/ui/components/code-editor/index.js.map +1 -0
  558. package/dist/ui/components/comparison/ComparisonView.d.ts +32 -0
  559. package/dist/ui/components/comparison/ComparisonView.d.ts.map +1 -0
  560. package/dist/ui/components/comparison/ComparisonView.js +27 -0
  561. package/dist/ui/components/comparison/ComparisonView.js.map +1 -0
  562. package/dist/ui/components/comparison/index.d.ts +3 -0
  563. package/dist/ui/components/comparison/index.d.ts.map +1 -0
  564. package/dist/ui/components/comparison/index.js +2 -0
  565. package/dist/ui/components/comparison/index.js.map +1 -0
  566. package/dist/ui/components/context/CompressionProgress.d.ts +38 -0
  567. package/dist/ui/components/context/CompressionProgress.d.ts.map +1 -0
  568. package/dist/ui/components/context/CompressionProgress.js +85 -0
  569. package/dist/ui/components/context/CompressionProgress.js.map +1 -0
  570. package/dist/ui/components/context/ContextMenu.d.ts +40 -0
  571. package/dist/ui/components/context/ContextMenu.d.ts.map +1 -0
  572. package/dist/ui/components/context/ContextMenu.js +420 -0
  573. package/dist/ui/components/context/ContextMenu.js.map +1 -0
  574. package/dist/ui/components/context/__tests__/CompressionProgress.example.d.ts +54 -0
  575. package/dist/ui/components/context/__tests__/CompressionProgress.example.d.ts.map +1 -0
  576. package/dist/ui/components/context/__tests__/CompressionProgress.example.js +28 -0
  577. package/dist/ui/components/context/__tests__/CompressionProgress.example.js.map +1 -0
  578. package/dist/ui/components/context/__tests__/CompressionProgress.test.d.ts +8 -0
  579. package/dist/ui/components/context/__tests__/CompressionProgress.test.d.ts.map +1 -0
  580. package/dist/ui/components/context/__tests__/CompressionProgress.test.js +201 -0
  581. package/dist/ui/components/context/__tests__/CompressionProgress.test.js.map +1 -0
  582. package/dist/ui/components/context/index.d.ts +9 -0
  583. package/dist/ui/components/context/index.d.ts.map +1 -0
  584. package/dist/ui/components/context/index.js +8 -0
  585. package/dist/ui/components/context/index.js.map +1 -0
  586. package/dist/ui/components/dialogs/APIKeyInputDialog.d.ts +20 -0
  587. package/dist/ui/components/dialogs/APIKeyInputDialog.d.ts.map +1 -0
  588. package/dist/ui/components/dialogs/APIKeyInputDialog.js +169 -0
  589. package/dist/ui/components/dialogs/APIKeyInputDialog.js.map +1 -0
  590. package/dist/ui/components/dialogs/AddHookDialog.d.ts +29 -0
  591. package/dist/ui/components/dialogs/AddHookDialog.d.ts.map +1 -0
  592. package/dist/ui/components/dialogs/AddHookDialog.js +30 -0
  593. package/dist/ui/components/dialogs/AddHookDialog.js.map +1 -0
  594. package/dist/ui/components/dialogs/ConfirmationDialog.d.ts +58 -0
  595. package/dist/ui/components/dialogs/ConfirmationDialog.d.ts.map +1 -0
  596. package/dist/ui/components/dialogs/ConfirmationDialog.js +102 -0
  597. package/dist/ui/components/dialogs/ConfirmationDialog.js.map +1 -0
  598. package/dist/ui/components/dialogs/DeleteConfirmationDialog.d.ts +23 -0
  599. package/dist/ui/components/dialogs/DeleteConfirmationDialog.d.ts.map +1 -0
  600. package/dist/ui/components/dialogs/DeleteConfirmationDialog.js +39 -0
  601. package/dist/ui/components/dialogs/DeleteConfirmationDialog.js.map +1 -0
  602. package/dist/ui/components/dialogs/Dialog.d.ts +48 -0
  603. package/dist/ui/components/dialogs/Dialog.d.ts.map +1 -0
  604. package/dist/ui/components/dialogs/Dialog.js +48 -0
  605. package/dist/ui/components/dialogs/Dialog.js.map +1 -0
  606. package/dist/ui/components/dialogs/DialogErrorBoundary.d.ts +17 -0
  607. package/dist/ui/components/dialogs/DialogErrorBoundary.d.ts.map +1 -0
  608. package/dist/ui/components/dialogs/DialogErrorBoundary.js +10 -0
  609. package/dist/ui/components/dialogs/DialogErrorBoundary.js.map +1 -0
  610. package/dist/ui/components/dialogs/DialogManager.d.ts +11 -0
  611. package/dist/ui/components/dialogs/DialogManager.d.ts.map +1 -0
  612. package/dist/ui/components/dialogs/DialogManager.js +98 -0
  613. package/dist/ui/components/dialogs/DialogManager.js.map +1 -0
  614. package/dist/ui/components/dialogs/EditHookDialog.d.ts +23 -0
  615. package/dist/ui/components/dialogs/EditHookDialog.d.ts.map +1 -0
  616. package/dist/ui/components/dialogs/EditHookDialog.js +64 -0
  617. package/dist/ui/components/dialogs/EditHookDialog.js.map +1 -0
  618. package/dist/ui/components/dialogs/HealthMonitorDialog.d.ts +33 -0
  619. package/dist/ui/components/dialogs/HealthMonitorDialog.d.ts.map +1 -0
  620. package/dist/ui/components/dialogs/HealthMonitorDialog.js +222 -0
  621. package/dist/ui/components/dialogs/HealthMonitorDialog.js.map +1 -0
  622. package/dist/ui/components/dialogs/HelpOverlay.d.ts +24 -0
  623. package/dist/ui/components/dialogs/HelpOverlay.d.ts.map +1 -0
  624. package/dist/ui/components/dialogs/HelpOverlay.js +20 -0
  625. package/dist/ui/components/dialogs/HelpOverlay.js.map +1 -0
  626. package/dist/ui/components/dialogs/HookApprovalDialog.d.ts +31 -0
  627. package/dist/ui/components/dialogs/HookApprovalDialog.d.ts.map +1 -0
  628. package/dist/ui/components/dialogs/HookApprovalDialog.js +80 -0
  629. package/dist/ui/components/dialogs/HookApprovalDialog.js.map +1 -0
  630. package/dist/ui/components/dialogs/InstallServerDialog.d.ts +37 -0
  631. package/dist/ui/components/dialogs/InstallServerDialog.d.ts.map +1 -0
  632. package/dist/ui/components/dialogs/InstallServerDialog.js +234 -0
  633. package/dist/ui/components/dialogs/InstallServerDialog.js.map +1 -0
  634. package/dist/ui/components/dialogs/MarketplaceDialog.d.ts +31 -0
  635. package/dist/ui/components/dialogs/MarketplaceDialog.d.ts.map +1 -0
  636. package/dist/ui/components/dialogs/MarketplaceDialog.js +178 -0
  637. package/dist/ui/components/dialogs/MarketplaceDialog.js.map +1 -0
  638. package/dist/ui/components/dialogs/ModeSuggestionDialog.d.ts +23 -0
  639. package/dist/ui/components/dialogs/ModeSuggestionDialog.d.ts.map +1 -0
  640. package/dist/ui/components/dialogs/ModeSuggestionDialog.js +33 -0
  641. package/dist/ui/components/dialogs/ModeSuggestionDialog.js.map +1 -0
  642. package/dist/ui/components/dialogs/OAuthConfigDialog.d.ts +34 -0
  643. package/dist/ui/components/dialogs/OAuthConfigDialog.d.ts.map +1 -0
  644. package/dist/ui/components/dialogs/OAuthConfigDialog.js +307 -0
  645. package/dist/ui/components/dialogs/OAuthConfigDialog.js.map +1 -0
  646. package/dist/ui/components/dialogs/ServerConfigDialog.d.ts +35 -0
  647. package/dist/ui/components/dialogs/ServerConfigDialog.d.ts.map +1 -0
  648. package/dist/ui/components/dialogs/ServerConfigDialog.js +210 -0
  649. package/dist/ui/components/dialogs/ServerConfigDialog.js.map +1 -0
  650. package/dist/ui/components/dialogs/ServerLogsViewer.d.ts +32 -0
  651. package/dist/ui/components/dialogs/ServerLogsViewer.d.ts.map +1 -0
  652. package/dist/ui/components/dialogs/ServerLogsViewer.js +244 -0
  653. package/dist/ui/components/dialogs/ServerLogsViewer.js.map +1 -0
  654. package/dist/ui/components/dialogs/TestHookDialog.d.ts +26 -0
  655. package/dist/ui/components/dialogs/TestHookDialog.d.ts.map +1 -0
  656. package/dist/ui/components/dialogs/TestHookDialog.js +60 -0
  657. package/dist/ui/components/dialogs/TestHookDialog.js.map +1 -0
  658. package/dist/ui/components/dialogs/UninstallConfirmDialog.d.ts +36 -0
  659. package/dist/ui/components/dialogs/UninstallConfirmDialog.d.ts.map +1 -0
  660. package/dist/ui/components/dialogs/UninstallConfirmDialog.js +66 -0
  661. package/dist/ui/components/dialogs/UninstallConfirmDialog.js.map +1 -0
  662. package/dist/ui/components/dialogs/UserPromptDialog.d.ts +34 -0
  663. package/dist/ui/components/dialogs/UserPromptDialog.d.ts.map +1 -0
  664. package/dist/ui/components/dialogs/UserPromptDialog.js +18 -0
  665. package/dist/ui/components/dialogs/UserPromptDialog.js.map +1 -0
  666. package/dist/ui/components/dialogs/index.d.ts +33 -0
  667. package/dist/ui/components/dialogs/index.d.ts.map +1 -0
  668. package/dist/ui/components/dialogs/index.js +19 -0
  669. package/dist/ui/components/dialogs/index.js.map +1 -0
  670. package/dist/ui/components/docs/DocNav.d.ts +21 -0
  671. package/dist/ui/components/docs/DocNav.d.ts.map +1 -0
  672. package/dist/ui/components/docs/DocNav.js +16 -0
  673. package/dist/ui/components/docs/DocNav.js.map +1 -0
  674. package/dist/ui/components/docs/DocViewer.d.ts +22 -0
  675. package/dist/ui/components/docs/DocViewer.d.ts.map +1 -0
  676. package/dist/ui/components/docs/DocViewer.js +51 -0
  677. package/dist/ui/components/docs/DocViewer.js.map +1 -0
  678. package/dist/ui/components/docs/DocsPanel.d.ts +21 -0
  679. package/dist/ui/components/docs/DocsPanel.d.ts.map +1 -0
  680. package/dist/ui/components/docs/DocsPanel.js +236 -0
  681. package/dist/ui/components/docs/DocsPanel.js.map +1 -0
  682. package/dist/ui/components/docs/index.d.ts +3 -0
  683. package/dist/ui/components/docs/index.d.ts.map +1 -0
  684. package/dist/ui/components/docs/index.js +3 -0
  685. package/dist/ui/components/docs/index.js.map +1 -0
  686. package/dist/ui/components/file-explorer/ConfirmationDialog.d.ts +45 -0
  687. package/dist/ui/components/file-explorer/ConfirmationDialog.d.ts.map +1 -0
  688. package/dist/ui/components/file-explorer/ConfirmationDialog.js +87 -0
  689. package/dist/ui/components/file-explorer/ConfirmationDialog.js.map +1 -0
  690. package/dist/ui/components/file-explorer/EditorIntegration.d.ts +73 -0
  691. package/dist/ui/components/file-explorer/EditorIntegration.d.ts.map +1 -0
  692. package/dist/ui/components/file-explorer/EditorIntegration.js +156 -0
  693. package/dist/ui/components/file-explorer/EditorIntegration.js.map +1 -0
  694. package/dist/ui/components/file-explorer/EnhancedFileExplorer.d.ts +28 -0
  695. package/dist/ui/components/file-explorer/EnhancedFileExplorer.d.ts.map +1 -0
  696. package/dist/ui/components/file-explorer/EnhancedFileExplorer.js +33 -0
  697. package/dist/ui/components/file-explorer/EnhancedFileExplorer.js.map +1 -0
  698. package/dist/ui/components/file-explorer/ErrorHandler.d.ts +102 -0
  699. package/dist/ui/components/file-explorer/ErrorHandler.d.ts.map +1 -0
  700. package/dist/ui/components/file-explorer/ErrorHandler.js +220 -0
  701. package/dist/ui/components/file-explorer/ErrorHandler.js.map +1 -0
  702. package/dist/ui/components/file-explorer/ExplorerPersistence.d.ts +103 -0
  703. package/dist/ui/components/file-explorer/ExplorerPersistence.d.ts.map +1 -0
  704. package/dist/ui/components/file-explorer/ExplorerPersistence.js +182 -0
  705. package/dist/ui/components/file-explorer/ExplorerPersistence.js.map +1 -0
  706. package/dist/ui/components/file-explorer/FileExplorerComponent.d.ts +77 -0
  707. package/dist/ui/components/file-explorer/FileExplorerComponent.d.ts.map +1 -0
  708. package/dist/ui/components/file-explorer/FileExplorerComponent.js +362 -0
  709. package/dist/ui/components/file-explorer/FileExplorerComponent.js.map +1 -0
  710. package/dist/ui/components/file-explorer/FileFocusContext.d.ts +65 -0
  711. package/dist/ui/components/file-explorer/FileFocusContext.d.ts.map +1 -0
  712. package/dist/ui/components/file-explorer/FileFocusContext.js +127 -0
  713. package/dist/ui/components/file-explorer/FileFocusContext.js.map +1 -0
  714. package/dist/ui/components/file-explorer/FileOperations.d.ts +160 -0
  715. package/dist/ui/components/file-explorer/FileOperations.d.ts.map +1 -0
  716. package/dist/ui/components/file-explorer/FileOperations.js +595 -0
  717. package/dist/ui/components/file-explorer/FileOperations.js.map +1 -0
  718. package/dist/ui/components/file-explorer/FileSearchDialog.d.ts +46 -0
  719. package/dist/ui/components/file-explorer/FileSearchDialog.d.ts.map +1 -0
  720. package/dist/ui/components/file-explorer/FileSearchDialog.js +162 -0
  721. package/dist/ui/components/file-explorer/FileSearchDialog.js.map +1 -0
  722. package/dist/ui/components/file-explorer/FileTreeContext.d.ts +85 -0
  723. package/dist/ui/components/file-explorer/FileTreeContext.d.ts.map +1 -0
  724. package/dist/ui/components/file-explorer/FileTreeContext.js +252 -0
  725. package/dist/ui/components/file-explorer/FileTreeContext.js.map +1 -0
  726. package/dist/ui/components/file-explorer/FileTreeService.d.ts +270 -0
  727. package/dist/ui/components/file-explorer/FileTreeService.d.ts.map +1 -0
  728. package/dist/ui/components/file-explorer/FileTreeService.js +454 -0
  729. package/dist/ui/components/file-explorer/FileTreeService.js.map +1 -0
  730. package/dist/ui/components/file-explorer/FileTreeView.d.ts +45 -0
  731. package/dist/ui/components/file-explorer/FileTreeView.d.ts.map +1 -0
  732. package/dist/ui/components/file-explorer/FileTreeView.js +686 -0
  733. package/dist/ui/components/file-explorer/FileTreeView.js.map +1 -0
  734. package/dist/ui/components/file-explorer/FocusSystem.d.ts +130 -0
  735. package/dist/ui/components/file-explorer/FocusSystem.d.ts.map +1 -0
  736. package/dist/ui/components/file-explorer/FocusSystem.js +234 -0
  737. package/dist/ui/components/file-explorer/FocusSystem.js.map +1 -0
  738. package/dist/ui/components/file-explorer/FocusedFilesInjector.d.ts +52 -0
  739. package/dist/ui/components/file-explorer/FocusedFilesInjector.d.ts.map +1 -0
  740. package/dist/ui/components/file-explorer/FocusedFilesInjector.js +147 -0
  741. package/dist/ui/components/file-explorer/FocusedFilesInjector.js.map +1 -0
  742. package/dist/ui/components/file-explorer/FocusedFilesPanel.d.ts +32 -0
  743. package/dist/ui/components/file-explorer/FocusedFilesPanel.d.ts.map +1 -0
  744. package/dist/ui/components/file-explorer/FocusedFilesPanel.js +64 -0
  745. package/dist/ui/components/file-explorer/FocusedFilesPanel.js.map +1 -0
  746. package/dist/ui/components/file-explorer/FollowModeService.d.ts +55 -0
  747. package/dist/ui/components/file-explorer/FollowModeService.d.ts.map +1 -0
  748. package/dist/ui/components/file-explorer/FollowModeService.js +195 -0
  749. package/dist/ui/components/file-explorer/FollowModeService.js.map +1 -0
  750. package/dist/ui/components/file-explorer/GitStatusService.d.ts +82 -0
  751. package/dist/ui/components/file-explorer/GitStatusService.d.ts.map +1 -0
  752. package/dist/ui/components/file-explorer/GitStatusService.js +203 -0
  753. package/dist/ui/components/file-explorer/GitStatusService.js.map +1 -0
  754. package/dist/ui/components/file-explorer/Header.d.ts +26 -0
  755. package/dist/ui/components/file-explorer/Header.d.ts.map +1 -0
  756. package/dist/ui/components/file-explorer/Header.js +20 -0
  757. package/dist/ui/components/file-explorer/Header.js.map +1 -0
  758. package/dist/ui/components/file-explorer/HelpPanel.d.ts +25 -0
  759. package/dist/ui/components/file-explorer/HelpPanel.d.ts.map +1 -0
  760. package/dist/ui/components/file-explorer/HelpPanel.js +38 -0
  761. package/dist/ui/components/file-explorer/HelpPanel.js.map +1 -0
  762. package/dist/ui/components/file-explorer/LoadingIndicator.d.ts +56 -0
  763. package/dist/ui/components/file-explorer/LoadingIndicator.d.ts.map +1 -0
  764. package/dist/ui/components/file-explorer/LoadingIndicator.js +82 -0
  765. package/dist/ui/components/file-explorer/LoadingIndicator.js.map +1 -0
  766. package/dist/ui/components/file-explorer/PathSanitizer.d.ts +92 -0
  767. package/dist/ui/components/file-explorer/PathSanitizer.d.ts.map +1 -0
  768. package/dist/ui/components/file-explorer/PathSanitizer.js +169 -0
  769. package/dist/ui/components/file-explorer/PathSanitizer.js.map +1 -0
  770. package/dist/ui/components/file-explorer/QuickActionsMenu.d.ts +54 -0
  771. package/dist/ui/components/file-explorer/QuickActionsMenu.d.ts.map +1 -0
  772. package/dist/ui/components/file-explorer/QuickActionsMenu.js +175 -0
  773. package/dist/ui/components/file-explorer/QuickActionsMenu.js.map +1 -0
  774. package/dist/ui/components/file-explorer/QuickOpenDialog.d.ts +40 -0
  775. package/dist/ui/components/file-explorer/QuickOpenDialog.d.ts.map +1 -0
  776. package/dist/ui/components/file-explorer/QuickOpenDialog.js +231 -0
  777. package/dist/ui/components/file-explorer/QuickOpenDialog.js.map +1 -0
  778. package/dist/ui/components/file-explorer/SyntaxViewer.d.ts +37 -0
  779. package/dist/ui/components/file-explorer/SyntaxViewer.d.ts.map +1 -0
  780. package/dist/ui/components/file-explorer/SyntaxViewer.js +95 -0
  781. package/dist/ui/components/file-explorer/SyntaxViewer.js.map +1 -0
  782. package/dist/ui/components/file-explorer/VisionService.d.ts +39 -0
  783. package/dist/ui/components/file-explorer/VisionService.d.ts.map +1 -0
  784. package/dist/ui/components/file-explorer/VisionService.js +103 -0
  785. package/dist/ui/components/file-explorer/VisionService.js.map +1 -0
  786. package/dist/ui/components/file-explorer/WorkspaceContext.d.ts +68 -0
  787. package/dist/ui/components/file-explorer/WorkspaceContext.d.ts.map +1 -0
  788. package/dist/ui/components/file-explorer/WorkspaceContext.js +98 -0
  789. package/dist/ui/components/file-explorer/WorkspaceContext.js.map +1 -0
  790. package/dist/ui/components/file-explorer/WorkspaceManager.d.ts +96 -0
  791. package/dist/ui/components/file-explorer/WorkspaceManager.d.ts.map +1 -0
  792. package/dist/ui/components/file-explorer/WorkspaceManager.js +197 -0
  793. package/dist/ui/components/file-explorer/WorkspaceManager.js.map +1 -0
  794. package/dist/ui/components/file-explorer/__tests__/ExplorerPersistence.test.d.ts +7 -0
  795. package/dist/ui/components/file-explorer/__tests__/ExplorerPersistence.test.d.ts.map +1 -0
  796. package/dist/ui/components/file-explorer/__tests__/ExplorerPersistence.test.js +97 -0
  797. package/dist/ui/components/file-explorer/__tests__/ExplorerPersistence.test.js.map +1 -0
  798. package/dist/ui/components/file-explorer/__tests__/FileOperations.test.d.ts +7 -0
  799. package/dist/ui/components/file-explorer/__tests__/FileOperations.test.d.ts.map +1 -0
  800. package/dist/ui/components/file-explorer/__tests__/FileOperations.test.js +145 -0
  801. package/dist/ui/components/file-explorer/__tests__/FileOperations.test.js.map +1 -0
  802. package/dist/ui/components/file-explorer/__tests__/FileSearchDialog.test.d.ts +7 -0
  803. package/dist/ui/components/file-explorer/__tests__/FileSearchDialog.test.d.ts.map +1 -0
  804. package/dist/ui/components/file-explorer/__tests__/FileSearchDialog.test.js +45 -0
  805. package/dist/ui/components/file-explorer/__tests__/FileSearchDialog.test.js.map +1 -0
  806. package/dist/ui/components/file-explorer/__tests__/FileTreeService.test.d.ts +7 -0
  807. package/dist/ui/components/file-explorer/__tests__/FileTreeService.test.d.ts.map +1 -0
  808. package/dist/ui/components/file-explorer/__tests__/FileTreeService.test.js +108 -0
  809. package/dist/ui/components/file-explorer/__tests__/FileTreeService.test.js.map +1 -0
  810. package/dist/ui/components/file-explorer/__tests__/FocusSystem.test.d.ts +7 -0
  811. package/dist/ui/components/file-explorer/__tests__/FocusSystem.test.d.ts.map +1 -0
  812. package/dist/ui/components/file-explorer/__tests__/FocusSystem.test.js +117 -0
  813. package/dist/ui/components/file-explorer/__tests__/FocusSystem.test.js.map +1 -0
  814. package/dist/ui/components/file-explorer/__tests__/PathSanitizer.test.d.ts +7 -0
  815. package/dist/ui/components/file-explorer/__tests__/PathSanitizer.test.d.ts.map +1 -0
  816. package/dist/ui/components/file-explorer/__tests__/PathSanitizer.test.js +74 -0
  817. package/dist/ui/components/file-explorer/__tests__/PathSanitizer.test.js.map +1 -0
  818. package/dist/ui/components/file-explorer/index.d.ts +33 -0
  819. package/dist/ui/components/file-explorer/index.d.ts.map +1 -0
  820. package/dist/ui/components/file-explorer/index.js +36 -0
  821. package/dist/ui/components/file-explorer/index.js.map +1 -0
  822. package/dist/ui/components/file-explorer/types.d.ts +81 -0
  823. package/dist/ui/components/file-explorer/types.d.ts.map +1 -0
  824. package/dist/ui/components/file-explorer/types.js +9 -0
  825. package/dist/ui/components/file-explorer/types.js.map +1 -0
  826. package/dist/ui/components/forms/Button.d.ts +55 -0
  827. package/dist/ui/components/forms/Button.d.ts.map +1 -0
  828. package/dist/ui/components/forms/Button.js +58 -0
  829. package/dist/ui/components/forms/Button.js.map +1 -0
  830. package/dist/ui/components/forms/Checkbox.d.ts +39 -0
  831. package/dist/ui/components/forms/Checkbox.d.ts.map +1 -0
  832. package/dist/ui/components/forms/Checkbox.js +29 -0
  833. package/dist/ui/components/forms/Checkbox.js.map +1 -0
  834. package/dist/ui/components/forms/FormField.d.ts +24 -0
  835. package/dist/ui/components/forms/FormField.d.ts.map +1 -0
  836. package/dist/ui/components/forms/FormField.js +11 -0
  837. package/dist/ui/components/forms/FormField.js.map +1 -0
  838. package/dist/ui/components/forms/TextInput.d.ts +47 -0
  839. package/dist/ui/components/forms/TextInput.d.ts.map +1 -0
  840. package/dist/ui/components/forms/TextInput.js +74 -0
  841. package/dist/ui/components/forms/TextInput.js.map +1 -0
  842. package/dist/ui/components/forms/Tooltip.d.ts +38 -0
  843. package/dist/ui/components/forms/Tooltip.d.ts.map +1 -0
  844. package/dist/ui/components/forms/Tooltip.js +21 -0
  845. package/dist/ui/components/forms/Tooltip.js.map +1 -0
  846. package/dist/ui/components/forms/index.d.ts +22 -0
  847. package/dist/ui/components/forms/index.d.ts.map +1 -0
  848. package/dist/ui/components/forms/index.js +17 -0
  849. package/dist/ui/components/forms/index.js.map +1 -0
  850. package/dist/ui/components/github/FeatureSection.d.ts +15 -0
  851. package/dist/ui/components/github/FeatureSection.d.ts.map +1 -0
  852. package/dist/ui/components/github/FeatureSection.js +14 -0
  853. package/dist/ui/components/github/FeatureSection.js.map +1 -0
  854. package/dist/ui/components/github/PlannedFeaturesList.d.ts +15 -0
  855. package/dist/ui/components/github/PlannedFeaturesList.d.ts.map +1 -0
  856. package/dist/ui/components/github/PlannedFeaturesList.js +69 -0
  857. package/dist/ui/components/github/PlannedFeaturesList.js.map +1 -0
  858. package/dist/ui/components/hooks/HookCategory.d.ts +32 -0
  859. package/dist/ui/components/hooks/HookCategory.d.ts.map +1 -0
  860. package/dist/ui/components/hooks/HookCategory.js +34 -0
  861. package/dist/ui/components/hooks/HookCategory.js.map +1 -0
  862. package/dist/ui/components/hooks/HookItem.d.ts +48 -0
  863. package/dist/ui/components/hooks/HookItem.d.ts.map +1 -0
  864. package/dist/ui/components/hooks/HookItem.js +48 -0
  865. package/dist/ui/components/hooks/HookItem.js.map +1 -0
  866. package/dist/ui/components/hooks/index.d.ts +3 -0
  867. package/dist/ui/components/hooks/index.d.ts.map +1 -0
  868. package/dist/ui/components/hooks/index.js +3 -0
  869. package/dist/ui/components/hooks/index.js.map +1 -0
  870. package/dist/ui/components/launch/LaunchScreen.d.ts +24 -0
  871. package/dist/ui/components/launch/LaunchScreen.d.ts.map +1 -0
  872. package/dist/ui/components/launch/LaunchScreen.js +29 -0
  873. package/dist/ui/components/launch/LaunchScreen.js.map +1 -0
  874. package/dist/ui/components/launch/QuickActions.d.ts +13 -0
  875. package/dist/ui/components/launch/QuickActions.d.ts.map +1 -0
  876. package/dist/ui/components/launch/QuickActions.js +6 -0
  877. package/dist/ui/components/launch/QuickActions.js.map +1 -0
  878. package/dist/ui/components/launch/RecentSessions.d.ts +19 -0
  879. package/dist/ui/components/launch/RecentSessions.d.ts.map +1 -0
  880. package/dist/ui/components/launch/RecentSessions.js +23 -0
  881. package/dist/ui/components/launch/RecentSessions.js.map +1 -0
  882. package/dist/ui/components/launch/VersionBanner.d.ts +17 -0
  883. package/dist/ui/components/launch/VersionBanner.d.ts.map +1 -0
  884. package/dist/ui/components/launch/VersionBanner.js +71 -0
  885. package/dist/ui/components/launch/VersionBanner.js.map +1 -0
  886. package/dist/ui/components/launch/index.d.ts +5 -0
  887. package/dist/ui/components/launch/index.d.ts.map +1 -0
  888. package/dist/ui/components/launch/index.js +5 -0
  889. package/dist/ui/components/launch/index.js.map +1 -0
  890. package/dist/ui/components/layout/ActivePromptInfo.d.ts +2 -0
  891. package/dist/ui/components/layout/ActivePromptInfo.d.ts.map +1 -0
  892. package/dist/ui/components/layout/ActivePromptInfo.js +37 -0
  893. package/dist/ui/components/layout/ActivePromptInfo.js.map +1 -0
  894. package/dist/ui/components/layout/ChatInputArea.d.ts +15 -0
  895. package/dist/ui/components/layout/ChatInputArea.d.ts.map +1 -0
  896. package/dist/ui/components/layout/ChatInputArea.js +239 -0
  897. package/dist/ui/components/layout/ChatInputArea.js.map +1 -0
  898. package/dist/ui/components/layout/Clock.d.ts +6 -0
  899. package/dist/ui/components/layout/Clock.d.ts.map +1 -0
  900. package/dist/ui/components/layout/Clock.js +23 -0
  901. package/dist/ui/components/layout/Clock.js.map +1 -0
  902. package/dist/ui/components/layout/ContextSection.d.ts +2 -0
  903. package/dist/ui/components/layout/ContextSection.d.ts.map +1 -0
  904. package/dist/ui/components/layout/ContextSection.js +38 -0
  905. package/dist/ui/components/layout/ContextSection.js.map +1 -0
  906. package/dist/ui/components/layout/DotIndicator.d.ts +13 -0
  907. package/dist/ui/components/layout/DotIndicator.d.ts.map +1 -0
  908. package/dist/ui/components/layout/DotIndicator.js +15 -0
  909. package/dist/ui/components/layout/DotIndicator.js.map +1 -0
  910. package/dist/ui/components/layout/HeaderBar.d.ts +21 -0
  911. package/dist/ui/components/layout/HeaderBar.d.ts.map +1 -0
  912. package/dist/ui/components/layout/HeaderBar.js +19 -0
  913. package/dist/ui/components/layout/HeaderBar.js.map +1 -0
  914. package/dist/ui/components/layout/InputBox.d.ts +22 -0
  915. package/dist/ui/components/layout/InputBox.d.ts.map +1 -0
  916. package/dist/ui/components/layout/InputBox.js +147 -0
  917. package/dist/ui/components/layout/InputBox.js.map +1 -0
  918. package/dist/ui/components/layout/KeybindsLegend.d.ts +10 -0
  919. package/dist/ui/components/layout/KeybindsLegend.d.ts.map +1 -0
  920. package/dist/ui/components/layout/KeybindsLegend.js +9 -0
  921. package/dist/ui/components/layout/KeybindsLegend.js.map +1 -0
  922. package/dist/ui/components/layout/ModeConfidenceDisplay.d.ts +19 -0
  923. package/dist/ui/components/layout/ModeConfidenceDisplay.d.ts.map +1 -0
  924. package/dist/ui/components/layout/ModeConfidenceDisplay.js +38 -0
  925. package/dist/ui/components/layout/ModeConfidenceDisplay.js.map +1 -0
  926. package/dist/ui/components/layout/SidePanel.d.ts +9 -0
  927. package/dist/ui/components/layout/SidePanel.d.ts.map +1 -0
  928. package/dist/ui/components/layout/SidePanel.js +59 -0
  929. package/dist/ui/components/layout/SidePanel.js.map +1 -0
  930. package/dist/ui/components/layout/StaticInputArea.d.ts +13 -0
  931. package/dist/ui/components/layout/StaticInputArea.d.ts.map +1 -0
  932. package/dist/ui/components/layout/StaticInputArea.js +21 -0
  933. package/dist/ui/components/layout/StaticInputArea.js.map +1 -0
  934. package/dist/ui/components/layout/StatusBar.d.ts +16 -0
  935. package/dist/ui/components/layout/StatusBar.d.ts.map +1 -0
  936. package/dist/ui/components/layout/StatusBar.js +13 -0
  937. package/dist/ui/components/layout/StatusBar.js.map +1 -0
  938. package/dist/ui/components/layout/SystemBar.d.ts +10 -0
  939. package/dist/ui/components/layout/SystemBar.d.ts.map +1 -0
  940. package/dist/ui/components/layout/SystemBar.js +75 -0
  941. package/dist/ui/components/layout/SystemBar.js.map +1 -0
  942. package/dist/ui/components/layout/TabBar.d.ts +19 -0
  943. package/dist/ui/components/layout/TabBar.d.ts.map +1 -0
  944. package/dist/ui/components/layout/TabBar.js +53 -0
  945. package/dist/ui/components/layout/TabBar.js.map +1 -0
  946. package/dist/ui/components/layout/TabContainer.d.ts +58 -0
  947. package/dist/ui/components/layout/TabContainer.d.ts.map +1 -0
  948. package/dist/ui/components/layout/TabContainer.js +19 -0
  949. package/dist/ui/components/layout/TabContainer.js.map +1 -0
  950. package/dist/ui/components/layout/TwoColumnLayout.d.ts +54 -0
  951. package/dist/ui/components/layout/TwoColumnLayout.d.ts.map +1 -0
  952. package/dist/ui/components/layout/TwoColumnLayout.js +22 -0
  953. package/dist/ui/components/layout/TwoColumnLayout.js.map +1 -0
  954. package/dist/ui/components/layout/WorkspacePanel.d.ts +17 -0
  955. package/dist/ui/components/layout/WorkspacePanel.d.ts.map +1 -0
  956. package/dist/ui/components/layout/WorkspacePanel.js +264 -0
  957. package/dist/ui/components/layout/WorkspacePanel.js.map +1 -0
  958. package/dist/ui/components/layout/__tests__/InputBox.example.d.ts +18 -0
  959. package/dist/ui/components/layout/__tests__/InputBox.example.d.ts.map +1 -0
  960. package/dist/ui/components/layout/__tests__/InputBox.example.js +40 -0
  961. package/dist/ui/components/layout/__tests__/InputBox.example.js.map +1 -0
  962. package/dist/ui/components/layout/index.d.ts +10 -0
  963. package/dist/ui/components/layout/index.d.ts.map +1 -0
  964. package/dist/ui/components/layout/index.js +10 -0
  965. package/dist/ui/components/layout/index.js.map +1 -0
  966. package/dist/ui/components/mcp/ErrorDisplay.d.ts +32 -0
  967. package/dist/ui/components/mcp/ErrorDisplay.d.ts.map +1 -0
  968. package/dist/ui/components/mcp/ErrorDisplay.js +27 -0
  969. package/dist/ui/components/mcp/ErrorDisplay.js.map +1 -0
  970. package/dist/ui/components/mcp/FadeTransition.d.ts +75 -0
  971. package/dist/ui/components/mcp/FadeTransition.d.ts.map +1 -0
  972. package/dist/ui/components/mcp/FadeTransition.js +132 -0
  973. package/dist/ui/components/mcp/FadeTransition.js.map +1 -0
  974. package/dist/ui/components/mcp/HealthIndicator.d.ts +21 -0
  975. package/dist/ui/components/mcp/HealthIndicator.d.ts.map +1 -0
  976. package/dist/ui/components/mcp/HealthIndicator.js +75 -0
  977. package/dist/ui/components/mcp/HealthIndicator.js.map +1 -0
  978. package/dist/ui/components/mcp/InstalledServersSection.d.ts +33 -0
  979. package/dist/ui/components/mcp/InstalledServersSection.d.ts.map +1 -0
  980. package/dist/ui/components/mcp/InstalledServersSection.js +16 -0
  981. package/dist/ui/components/mcp/InstalledServersSection.js.map +1 -0
  982. package/dist/ui/components/mcp/LoadingSpinner.d.ts +29 -0
  983. package/dist/ui/components/mcp/LoadingSpinner.d.ts.map +1 -0
  984. package/dist/ui/components/mcp/LoadingSpinner.js +17 -0
  985. package/dist/ui/components/mcp/LoadingSpinner.js.map +1 -0
  986. package/dist/ui/components/mcp/MCPActions.d.ts +31 -0
  987. package/dist/ui/components/mcp/MCPActions.d.ts.map +1 -0
  988. package/dist/ui/components/mcp/MCPActions.js +25 -0
  989. package/dist/ui/components/mcp/MCPActions.js.map +1 -0
  990. package/dist/ui/components/mcp/MarketplacePreview.d.ts +25 -0
  991. package/dist/ui/components/mcp/MarketplacePreview.d.ts.map +1 -0
  992. package/dist/ui/components/mcp/MarketplacePreview.js +45 -0
  993. package/dist/ui/components/mcp/MarketplacePreview.js.map +1 -0
  994. package/dist/ui/components/mcp/Notification.d.ts +79 -0
  995. package/dist/ui/components/mcp/Notification.d.ts.map +1 -0
  996. package/dist/ui/components/mcp/Notification.js +145 -0
  997. package/dist/ui/components/mcp/Notification.js.map +1 -0
  998. package/dist/ui/components/mcp/OperationProgress.d.ts +20 -0
  999. package/dist/ui/components/mcp/OperationProgress.d.ts.map +1 -0
  1000. package/dist/ui/components/mcp/OperationProgress.js +16 -0
  1001. package/dist/ui/components/mcp/OperationProgress.js.map +1 -0
  1002. package/dist/ui/components/mcp/ProgressIndicator.d.ts +34 -0
  1003. package/dist/ui/components/mcp/ProgressIndicator.d.ts.map +1 -0
  1004. package/dist/ui/components/mcp/ProgressIndicator.js +75 -0
  1005. package/dist/ui/components/mcp/ProgressIndicator.js.map +1 -0
  1006. package/dist/ui/components/mcp/ServerDetails.d.ts +44 -0
  1007. package/dist/ui/components/mcp/ServerDetails.d.ts.map +1 -0
  1008. package/dist/ui/components/mcp/ServerDetails.js +96 -0
  1009. package/dist/ui/components/mcp/ServerDetails.js.map +1 -0
  1010. package/dist/ui/components/mcp/ServerItem.d.ts +33 -0
  1011. package/dist/ui/components/mcp/ServerItem.d.ts.map +1 -0
  1012. package/dist/ui/components/mcp/ServerItem.js +55 -0
  1013. package/dist/ui/components/mcp/ServerItem.js.map +1 -0
  1014. package/dist/ui/components/mcp/ServerListItem.d.ts +38 -0
  1015. package/dist/ui/components/mcp/ServerListItem.d.ts.map +1 -0
  1016. package/dist/ui/components/mcp/ServerListItem.js +60 -0
  1017. package/dist/ui/components/mcp/ServerListItem.js.map +1 -0
  1018. package/dist/ui/components/mcp/ServerSkeleton.d.ts +20 -0
  1019. package/dist/ui/components/mcp/ServerSkeleton.d.ts.map +1 -0
  1020. package/dist/ui/components/mcp/ServerSkeleton.js +18 -0
  1021. package/dist/ui/components/mcp/ServerSkeleton.js.map +1 -0
  1022. package/dist/ui/components/mcp/ServerStatusBanner.d.ts +21 -0
  1023. package/dist/ui/components/mcp/ServerStatusBanner.d.ts.map +1 -0
  1024. package/dist/ui/components/mcp/ServerStatusBanner.js +61 -0
  1025. package/dist/ui/components/mcp/ServerStatusBanner.js.map +1 -0
  1026. package/dist/ui/components/mcp/SystemMessages.d.ts +35 -0
  1027. package/dist/ui/components/mcp/SystemMessages.d.ts.map +1 -0
  1028. package/dist/ui/components/mcp/SystemMessages.js +44 -0
  1029. package/dist/ui/components/mcp/SystemMessages.js.map +1 -0
  1030. package/dist/ui/components/mcp/index.d.ts +34 -0
  1031. package/dist/ui/components/mcp/index.d.ts.map +1 -0
  1032. package/dist/ui/components/mcp/index.js +24 -0
  1033. package/dist/ui/components/mcp/index.js.map +1 -0
  1034. package/dist/ui/components/model/ModelLoadingIndicator.d.ts +6 -0
  1035. package/dist/ui/components/model/ModelLoadingIndicator.d.ts.map +1 -0
  1036. package/dist/ui/components/model/ModelLoadingIndicator.js +14 -0
  1037. package/dist/ui/components/model/ModelLoadingIndicator.js.map +1 -0
  1038. package/dist/ui/components/settings/ModelPicker.d.ts +24 -0
  1039. package/dist/ui/components/settings/ModelPicker.d.ts.map +1 -0
  1040. package/dist/ui/components/settings/ModelPicker.js +15 -0
  1041. package/dist/ui/components/settings/ModelPicker.js.map +1 -0
  1042. package/dist/ui/components/settings/OptionsPanel.d.ts +24 -0
  1043. package/dist/ui/components/settings/OptionsPanel.d.ts.map +1 -0
  1044. package/dist/ui/components/settings/OptionsPanel.js +12 -0
  1045. package/dist/ui/components/settings/OptionsPanel.js.map +1 -0
  1046. package/dist/ui/components/settings/ProviderSelector.d.ts +24 -0
  1047. package/dist/ui/components/settings/ProviderSelector.d.ts.map +1 -0
  1048. package/dist/ui/components/settings/ProviderSelector.js +35 -0
  1049. package/dist/ui/components/settings/ProviderSelector.js.map +1 -0
  1050. package/dist/ui/components/settings/SessionInfo.d.ts +25 -0
  1051. package/dist/ui/components/settings/SessionInfo.d.ts.map +1 -0
  1052. package/dist/ui/components/settings/SessionInfo.js +29 -0
  1053. package/dist/ui/components/settings/SessionInfo.js.map +1 -0
  1054. package/dist/ui/components/settings/SettingsPanel.d.ts +19 -0
  1055. package/dist/ui/components/settings/SettingsPanel.d.ts.map +1 -0
  1056. package/dist/ui/components/settings/SettingsPanel.js +864 -0
  1057. package/dist/ui/components/settings/SettingsPanel.js.map +1 -0
  1058. package/dist/ui/components/settings/ThemePicker.d.ts +19 -0
  1059. package/dist/ui/components/settings/ThemePicker.d.ts.map +1 -0
  1060. package/dist/ui/components/settings/ThemePicker.js +15 -0
  1061. package/dist/ui/components/settings/ThemePicker.js.map +1 -0
  1062. package/dist/ui/components/settings/index.d.ts +6 -0
  1063. package/dist/ui/components/settings/index.d.ts.map +1 -0
  1064. package/dist/ui/components/settings/index.js +6 -0
  1065. package/dist/ui/components/settings/index.js.map +1 -0
  1066. package/dist/ui/components/status/MCPStatus.d.ts +33 -0
  1067. package/dist/ui/components/status/MCPStatus.d.ts.map +1 -0
  1068. package/dist/ui/components/status/MCPStatus.js +52 -0
  1069. package/dist/ui/components/status/MCPStatus.js.map +1 -0
  1070. package/dist/ui/components/status/WorkflowStatus.d.ts +33 -0
  1071. package/dist/ui/components/status/WorkflowStatus.d.ts.map +1 -0
  1072. package/dist/ui/components/status/WorkflowStatus.js +40 -0
  1073. package/dist/ui/components/status/WorkflowStatus.js.map +1 -0
  1074. package/dist/ui/components/tabs/BugReportTab.d.ts +11 -0
  1075. package/dist/ui/components/tabs/BugReportTab.d.ts.map +1 -0
  1076. package/dist/ui/components/tabs/BugReportTab.js +104 -0
  1077. package/dist/ui/components/tabs/BugReportTab.js.map +1 -0
  1078. package/dist/ui/components/tabs/ChatTab.d.ts +55 -0
  1079. package/dist/ui/components/tabs/ChatTab.d.ts.map +1 -0
  1080. package/dist/ui/components/tabs/ChatTab.js +177 -0
  1081. package/dist/ui/components/tabs/ChatTab.js.map +1 -0
  1082. package/dist/ui/components/tabs/DocsTab.d.ts +16 -0
  1083. package/dist/ui/components/tabs/DocsTab.d.ts.map +1 -0
  1084. package/dist/ui/components/tabs/DocsTab.js +6 -0
  1085. package/dist/ui/components/tabs/DocsTab.js.map +1 -0
  1086. package/dist/ui/components/tabs/FileViewerTab.d.ts +27 -0
  1087. package/dist/ui/components/tabs/FileViewerTab.d.ts.map +1 -0
  1088. package/dist/ui/components/tabs/FileViewerTab.js +51 -0
  1089. package/dist/ui/components/tabs/FileViewerTab.js.map +1 -0
  1090. package/dist/ui/components/tabs/FilesTab.d.ts +21 -0
  1091. package/dist/ui/components/tabs/FilesTab.d.ts.map +1 -0
  1092. package/dist/ui/components/tabs/FilesTab.js +47 -0
  1093. package/dist/ui/components/tabs/FilesTab.js.map +1 -0
  1094. package/dist/ui/components/tabs/FilesTabWrapper.d.ts +12 -0
  1095. package/dist/ui/components/tabs/FilesTabWrapper.d.ts.map +1 -0
  1096. package/dist/ui/components/tabs/FilesTabWrapper.js +27 -0
  1097. package/dist/ui/components/tabs/FilesTabWrapper.js.map +1 -0
  1098. package/dist/ui/components/tabs/GitHubTab.d.ts +18 -0
  1099. package/dist/ui/components/tabs/GitHubTab.d.ts.map +1 -0
  1100. package/dist/ui/components/tabs/GitHubTab.js +38 -0
  1101. package/dist/ui/components/tabs/GitHubTab.js.map +1 -0
  1102. package/dist/ui/components/tabs/HooksTab.d.ts +21 -0
  1103. package/dist/ui/components/tabs/HooksTab.d.ts.map +1 -0
  1104. package/dist/ui/components/tabs/HooksTab.js +350 -0
  1105. package/dist/ui/components/tabs/HooksTab.js.map +1 -0
  1106. package/dist/ui/components/tabs/MCPTab.d.ts +24 -0
  1107. package/dist/ui/components/tabs/MCPTab.d.ts.map +1 -0
  1108. package/dist/ui/components/tabs/MCPTab.js +1101 -0
  1109. package/dist/ui/components/tabs/MCPTab.js.map +1 -0
  1110. package/dist/ui/components/tabs/SearchTab.d.ts +18 -0
  1111. package/dist/ui/components/tabs/SearchTab.d.ts.map +1 -0
  1112. package/dist/ui/components/tabs/SearchTab.js +56 -0
  1113. package/dist/ui/components/tabs/SearchTab.js.map +1 -0
  1114. package/dist/ui/components/tabs/SettingsTab.d.ts +14 -0
  1115. package/dist/ui/components/tabs/SettingsTab.d.ts.map +1 -0
  1116. package/dist/ui/components/tabs/SettingsTab.js +6 -0
  1117. package/dist/ui/components/tabs/SettingsTab.js.map +1 -0
  1118. package/dist/ui/components/tabs/ToolsTab.d.ts +14 -0
  1119. package/dist/ui/components/tabs/ToolsTab.d.ts.map +1 -0
  1120. package/dist/ui/components/tabs/ToolsTab.js +10 -0
  1121. package/dist/ui/components/tabs/ToolsTab.js.map +1 -0
  1122. package/dist/ui/components/tabs/index.d.ts +9 -0
  1123. package/dist/ui/components/tabs/index.d.ts.map +1 -0
  1124. package/dist/ui/components/tabs/index.js +9 -0
  1125. package/dist/ui/components/tabs/index.js.map +1 -0
  1126. package/dist/ui/components/tools/CategorySection.d.ts +22 -0
  1127. package/dist/ui/components/tools/CategorySection.d.ts.map +1 -0
  1128. package/dist/ui/components/tools/CategorySection.js +29 -0
  1129. package/dist/ui/components/tools/CategorySection.js.map +1 -0
  1130. package/dist/ui/components/tools/DiffViewer.d.ts +20 -0
  1131. package/dist/ui/components/tools/DiffViewer.d.ts.map +1 -0
  1132. package/dist/ui/components/tools/DiffViewer.js +33 -0
  1133. package/dist/ui/components/tools/DiffViewer.js.map +1 -0
  1134. package/dist/ui/components/tools/ReviewActions.d.ts +21 -0
  1135. package/dist/ui/components/tools/ReviewActions.d.ts.map +1 -0
  1136. package/dist/ui/components/tools/ReviewActions.js +12 -0
  1137. package/dist/ui/components/tools/ReviewActions.js.map +1 -0
  1138. package/dist/ui/components/tools/ToolItem.d.ts +19 -0
  1139. package/dist/ui/components/tools/ToolItem.d.ts.map +1 -0
  1140. package/dist/ui/components/tools/ToolItem.js +15 -0
  1141. package/dist/ui/components/tools/ToolItem.js.map +1 -0
  1142. package/dist/ui/components/tools/ToolModeSettings.d.ts +29 -0
  1143. package/dist/ui/components/tools/ToolModeSettings.d.ts.map +1 -0
  1144. package/dist/ui/components/tools/ToolModeSettings.js +57 -0
  1145. package/dist/ui/components/tools/ToolModeSettings.js.map +1 -0
  1146. package/dist/ui/components/tools/ToolToggle.d.ts +16 -0
  1147. package/dist/ui/components/tools/ToolToggle.d.ts.map +1 -0
  1148. package/dist/ui/components/tools/ToolToggle.js +22 -0
  1149. package/dist/ui/components/tools/ToolToggle.js.map +1 -0
  1150. package/dist/ui/components/tools/ToolsPanel.d.ts +24 -0
  1151. package/dist/ui/components/tools/ToolsPanel.d.ts.map +1 -0
  1152. package/dist/ui/components/tools/ToolsPanel.js +279 -0
  1153. package/dist/ui/components/tools/ToolsPanel.js.map +1 -0
  1154. package/dist/ui/components/tools/index.d.ts +7 -0
  1155. package/dist/ui/components/tools/index.d.ts.map +1 -0
  1156. package/dist/ui/components/tools/index.js +7 -0
  1157. package/dist/ui/components/tools/index.js.map +1 -0
  1158. package/dist/ui/contexts/DialogContext.d.ts +92 -0
  1159. package/dist/ui/contexts/DialogContext.d.ts.map +1 -0
  1160. package/dist/ui/contexts/DialogContext.js +151 -0
  1161. package/dist/ui/contexts/DialogContext.js.map +1 -0
  1162. package/dist/ui/contexts/HooksContext.d.ts +77 -0
  1163. package/dist/ui/contexts/HooksContext.d.ts.map +1 -0
  1164. package/dist/ui/contexts/HooksContext.js +261 -0
  1165. package/dist/ui/contexts/HooksContext.js.map +1 -0
  1166. package/dist/ui/contexts/InputRoutingContext.d.ts +15 -0
  1167. package/dist/ui/contexts/InputRoutingContext.d.ts.map +1 -0
  1168. package/dist/ui/contexts/InputRoutingContext.js +36 -0
  1169. package/dist/ui/contexts/InputRoutingContext.js.map +1 -0
  1170. package/dist/ui/contexts/MCPContext.d.ts +161 -0
  1171. package/dist/ui/contexts/MCPContext.d.ts.map +1 -0
  1172. package/dist/ui/contexts/MCPContext.js +904 -0
  1173. package/dist/ui/contexts/MCPContext.js.map +1 -0
  1174. package/dist/ui/contexts/Terminal2Context.d.ts +22 -0
  1175. package/dist/ui/contexts/Terminal2Context.d.ts.map +1 -0
  1176. package/dist/ui/contexts/Terminal2Context.js +154 -0
  1177. package/dist/ui/contexts/Terminal2Context.js.map +1 -0
  1178. package/dist/ui/contexts/TerminalContext.d.ts +22 -0
  1179. package/dist/ui/contexts/TerminalContext.d.ts.map +1 -0
  1180. package/dist/ui/contexts/TerminalContext.js +192 -0
  1181. package/dist/ui/contexts/TerminalContext.js.map +1 -0
  1182. package/dist/ui/contexts/ToolsContext.d.ts +87 -0
  1183. package/dist/ui/contexts/ToolsContext.d.ts.map +1 -0
  1184. package/dist/ui/contexts/ToolsContext.js +301 -0
  1185. package/dist/ui/contexts/ToolsContext.js.map +1 -0
  1186. package/dist/ui/contexts/UICallbacksContext.d.ts +80 -0
  1187. package/dist/ui/contexts/UICallbacksContext.d.ts.map +1 -0
  1188. package/dist/ui/contexts/UICallbacksContext.js +85 -0
  1189. package/dist/ui/contexts/UICallbacksContext.js.map +1 -0
  1190. package/dist/ui/contexts/WindowContext.d.ts +100 -0
  1191. package/dist/ui/contexts/WindowContext.d.ts.map +1 -0
  1192. package/dist/ui/contexts/WindowContext.js +111 -0
  1193. package/dist/ui/contexts/WindowContext.js.map +1 -0
  1194. package/dist/ui/contexts/__tests__/mcpTestUtils.d.ts +65 -0
  1195. package/dist/ui/contexts/__tests__/mcpTestUtils.d.ts.map +1 -0
  1196. package/dist/ui/contexts/__tests__/mcpTestUtils.js +180 -0
  1197. package/dist/ui/contexts/__tests__/mcpTestUtils.js.map +1 -0
  1198. package/dist/ui/hooks/index.d.ts +9 -0
  1199. package/dist/ui/hooks/index.d.ts.map +1 -0
  1200. package/dist/ui/hooks/index.js +9 -0
  1201. package/dist/ui/hooks/index.js.map +1 -0
  1202. package/dist/ui/hooks/useFocusedBorder.d.ts +19 -0
  1203. package/dist/ui/hooks/useFocusedBorder.d.ts.map +1 -0
  1204. package/dist/ui/hooks/useFocusedBorder.js +26 -0
  1205. package/dist/ui/hooks/useFocusedBorder.js.map +1 -0
  1206. package/dist/ui/hooks/useGlobalKeyboardShortcuts.d.ts +43 -0
  1207. package/dist/ui/hooks/useGlobalKeyboardShortcuts.d.ts.map +1 -0
  1208. package/dist/ui/hooks/useGlobalKeyboardShortcuts.js +196 -0
  1209. package/dist/ui/hooks/useGlobalKeyboardShortcuts.js.map +1 -0
  1210. package/dist/ui/hooks/useKeyboardShortcuts.d.ts +22 -0
  1211. package/dist/ui/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  1212. package/dist/ui/hooks/useKeyboardShortcuts.js +56 -0
  1213. package/dist/ui/hooks/useKeyboardShortcuts.js.map +1 -0
  1214. package/dist/ui/hooks/useMCPNavigation.d.ts +79 -0
  1215. package/dist/ui/hooks/useMCPNavigation.d.ts.map +1 -0
  1216. package/dist/ui/hooks/useMCPNavigation.js +228 -0
  1217. package/dist/ui/hooks/useMCPNavigation.js.map +1 -0
  1218. package/dist/ui/hooks/useMouse.d.ts +19 -0
  1219. package/dist/ui/hooks/useMouse.d.ts.map +1 -0
  1220. package/dist/ui/hooks/useMouse.js +115 -0
  1221. package/dist/ui/hooks/useMouse.js.map +1 -0
  1222. package/dist/ui/hooks/useNotifications.d.ts +43 -0
  1223. package/dist/ui/hooks/useNotifications.d.ts.map +1 -0
  1224. package/dist/ui/hooks/useNotifications.js +92 -0
  1225. package/dist/ui/hooks/useNotifications.js.map +1 -0
  1226. package/dist/ui/hooks/useTabEscapeHandler.d.ts +42 -0
  1227. package/dist/ui/hooks/useTabEscapeHandler.d.ts.map +1 -0
  1228. package/dist/ui/hooks/useTabEscapeHandler.js +56 -0
  1229. package/dist/ui/hooks/useTabEscapeHandler.js.map +1 -0
  1230. package/dist/ui/hooks/useTerminal.d.ts +7 -0
  1231. package/dist/ui/hooks/useTerminal.d.ts.map +1 -0
  1232. package/dist/ui/hooks/useTerminal.js +7 -0
  1233. package/dist/ui/hooks/useTerminal.js.map +1 -0
  1234. package/dist/ui/hooks/useTerminal2.d.ts +7 -0
  1235. package/dist/ui/hooks/useTerminal2.d.ts.map +1 -0
  1236. package/dist/ui/hooks/useTerminal2.js +7 -0
  1237. package/dist/ui/hooks/useTerminal2.js.map +1 -0
  1238. package/dist/ui/services/docsService.d.ts +44 -0
  1239. package/dist/ui/services/docsService.d.ts.map +1 -0
  1240. package/dist/ui/services/docsService.js +103 -0
  1241. package/dist/ui/services/docsService.js.map +1 -0
  1242. package/dist/ui/services/index.d.ts +7 -0
  1243. package/dist/ui/services/index.d.ts.map +1 -0
  1244. package/dist/ui/services/index.js +7 -0
  1245. package/dist/ui/services/index.js.map +1 -0
  1246. package/dist/ui/services/keyboardHandler.d.ts +71 -0
  1247. package/dist/ui/services/keyboardHandler.d.ts.map +1 -0
  1248. package/dist/ui/services/keyboardHandler.js +166 -0
  1249. package/dist/ui/services/keyboardHandler.js.map +1 -0
  1250. package/dist/ui/services/themeManager.d.ts +65 -0
  1251. package/dist/ui/services/themeManager.d.ts.map +1 -0
  1252. package/dist/ui/services/themeManager.js +158 -0
  1253. package/dist/ui/services/themeManager.js.map +1 -0
  1254. package/dist/ui/test-utils/TestProviders.d.ts +6 -0
  1255. package/dist/ui/test-utils/TestProviders.d.ts.map +1 -0
  1256. package/dist/ui/test-utils/TestProviders.js +54 -0
  1257. package/dist/ui/test-utils/TestProviders.js.map +1 -0
  1258. package/dist/ui/utils/errorHandling.d.ts +65 -0
  1259. package/dist/ui/utils/errorHandling.d.ts.map +1 -0
  1260. package/dist/ui/utils/errorHandling.js +242 -0
  1261. package/dist/ui/utils/errorHandling.js.map +1 -0
  1262. package/dist/ui/utils/errorLogger.d.ts +41 -0
  1263. package/dist/ui/utils/errorLogger.d.ts.map +1 -0
  1264. package/dist/ui/utils/errorLogger.js +126 -0
  1265. package/dist/ui/utils/errorLogger.js.map +1 -0
  1266. package/dist/ui/utils/keyUtils.d.ts +16 -0
  1267. package/dist/ui/utils/keyUtils.d.ts.map +1 -0
  1268. package/dist/ui/utils/keyUtils.js +70 -0
  1269. package/dist/ui/utils/keyUtils.js.map +1 -0
  1270. package/dist/ui/utils/performanceProfiler.d.ts +83 -0
  1271. package/dist/ui/utils/performanceProfiler.d.ts.map +1 -0
  1272. package/dist/ui/utils/performanceProfiler.js +160 -0
  1273. package/dist/ui/utils/performanceProfiler.js.map +1 -0
  1274. package/dist/ui/utils/terminalSerializer.d.ts +38 -0
  1275. package/dist/ui/utils/terminalSerializer.d.ts.map +1 -0
  1276. package/dist/ui/utils/terminalSerializer.js +451 -0
  1277. package/dist/ui/utils/terminalSerializer.js.map +1 -0
  1278. package/dist/ui/utils/windowDisplayLabels.d.ts +13 -0
  1279. package/dist/ui/utils/windowDisplayLabels.d.ts.map +1 -0
  1280. package/dist/ui/utils/windowDisplayLabels.js +29 -0
  1281. package/dist/ui/utils/windowDisplayLabels.js.map +1 -0
  1282. package/dist/utils/events.d.ts +24 -0
  1283. package/dist/utils/events.d.ts.map +1 -0
  1284. package/dist/utils/events.js +19 -0
  1285. package/dist/utils/events.js.map +1 -0
  1286. package/dist/utils/stdio.d.ts +29 -0
  1287. package/dist/utils/stdio.d.ts.map +1 -0
  1288. package/dist/utils/stdio.js +200 -0
  1289. package/dist/utils/stdio.js.map +1 -0
  1290. package/dist/utils/terminal.d.ts +16 -0
  1291. package/dist/utils/terminal.d.ts.map +1 -0
  1292. package/dist/utils/terminal.js +51 -0
  1293. package/dist/utils/terminal.js.map +1 -0
  1294. package/docs/Context/CheckpointFlowDiagram.md +673 -0
  1295. package/docs/Context/ContextArchitecture.md +898 -0
  1296. package/docs/Context/ContextCompression.md +1102 -0
  1297. package/docs/Context/ContextManagment.md +750 -0
  1298. package/docs/Context/Index.md +209 -0
  1299. package/docs/Context/README.md +390 -0
  1300. package/docs/DevelopmentRoadmap/Index.md +238 -0
  1301. package/docs/DevelopmentRoadmap/OLLM-CLI_Releases.md +419 -0
  1302. package/docs/DevelopmentRoadmap/PlanedFeatures.md +448 -0
  1303. package/docs/DevelopmentRoadmap/README.md +174 -0
  1304. package/docs/DevelopmentRoadmap/Roadmap.md +572 -0
  1305. package/docs/DevelopmentRoadmap/RoadmapVisual.md +372 -0
  1306. package/docs/Hooks/Architecture.md +885 -0
  1307. package/docs/Hooks/Index.md +244 -0
  1308. package/docs/Hooks/KeyboardShortcuts.md +248 -0
  1309. package/docs/Hooks/Protocol.md +817 -0
  1310. package/docs/Hooks/README.md +403 -0
  1311. package/docs/Hooks/UserGuide.md +1483 -0
  1312. package/docs/Hooks/VisualGuide.md +598 -0
  1313. package/docs/Index.md +506 -0
  1314. package/docs/Installation.md +586 -0
  1315. package/docs/Introduction.md +367 -0
  1316. package/docs/LLM Models/Index.md +239 -0
  1317. package/docs/LLM Models/LLM_GettingStarted.md +748 -0
  1318. package/docs/LLM Models/LLM_Index.md +701 -0
  1319. package/docs/LLM Models/LLM_MemorySystem.md +337 -0
  1320. package/docs/LLM Models/LLM_ModelCompatibility.md +499 -0
  1321. package/docs/LLM Models/LLM_ModelsArchitecture.md +933 -0
  1322. package/docs/LLM Models/LLM_ModelsCommands.md +839 -0
  1323. package/docs/LLM Models/LLM_ModelsConfiguration.md +1094 -0
  1324. package/docs/LLM Models/LLM_ModelsList.md +1071 -0
  1325. package/docs/LLM Models/LLM_ModelsList.md.backup +400 -0
  1326. package/docs/LLM Models/README.md +355 -0
  1327. package/docs/MCP/MCP_Architecture.md +1086 -0
  1328. package/docs/MCP/MCP_Commands.md +1111 -0
  1329. package/docs/MCP/MCP_GettingStarted.md +590 -0
  1330. package/docs/MCP/MCP_Index.md +524 -0
  1331. package/docs/MCP/MCP_Integration.md +866 -0
  1332. package/docs/MCP/MCP_Marketplace.md +160 -0
  1333. package/docs/MCP/README.md +415 -0
  1334. package/docs/Prompts System/Architecture.md +760 -0
  1335. package/docs/Prompts System/Index.md +223 -0
  1336. package/docs/Prompts System/PromptsRouting.md +1047 -0
  1337. package/docs/Prompts System/PromptsTemplates.md +1102 -0
  1338. package/docs/Prompts System/README.md +389 -0
  1339. package/docs/Prompts System/SystemPrompts.md +856 -0
  1340. package/docs/Quickstart.md +535 -0
  1341. package/docs/README.md +410 -0
  1342. package/docs/Tools/Architecture.md +884 -0
  1343. package/docs/Tools/GettingStarted.md +624 -0
  1344. package/docs/Tools/Index.md +216 -0
  1345. package/docs/Tools/ManifestReference.md +141 -0
  1346. package/docs/Tools/README.md +440 -0
  1347. package/docs/Tools/UserGuide.md +773 -0
  1348. package/docs/Troubleshooting.md +1265 -0
  1349. package/docs/UI&Settings/Architecture.md +729 -0
  1350. package/docs/UI&Settings/ColorASCII.md +34 -0
  1351. package/docs/UI&Settings/Commands.md +755 -0
  1352. package/docs/UI&Settings/Configuration.md +872 -0
  1353. package/docs/UI&Settings/Index.md +293 -0
  1354. package/docs/UI&Settings/Keybinds.md +372 -0
  1355. package/docs/UI&Settings/README.md +278 -0
  1356. package/docs/UI&Settings/Terminal.md +637 -0
  1357. package/docs/UI&Settings/Themes.md +604 -0
  1358. package/docs/UI&Settings/UIGuide.md +550 -0
  1359. package/package.json +82 -0
@@ -0,0 +1,1101 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * MCPTab Component
4
+ *
5
+ * Main container for the MCP Panel UI that provides:
6
+ * - Two-column layout (30% left, 70% right)
7
+ * - Left column: Menu with Marketplace and Installed Servers sections
8
+ * - Right column: Dynamic content based on selection
9
+ * - Keyboard navigation: Up/Down within columns, Left/Right between columns
10
+ * - Dialog management for configuration, OAuth, tools, etc.
11
+ *
12
+ * Validates: Requirements 1.1-1.6, 12.1-12.15, NFR-7
13
+ */
14
+ import { useState, useMemo, useEffect, useCallback } from 'react';
15
+ import { Box, Text, useInput, useStdout } from 'ink';
16
+ import { useFocusManager } from '../../../features/context/FocusContext.js';
17
+ import { useUI } from '../../../features/context/UIContext.js';
18
+ import { useMCP } from '../../contexts/MCPContext.js';
19
+ import { APIKeyInputDialog } from '../dialogs/APIKeyInputDialog.js';
20
+ import { ServerConfigDialog, OAuthConfigDialog, HealthMonitorDialog, ServerLogsViewer, UninstallConfirmDialog, DialogErrorBoundary, HelpOverlay, } from '../dialogs/index.js';
21
+ import { ErrorBoundary } from '../ErrorBoundary.js';
22
+ import { ErrorBanner } from '../mcp/ErrorDisplay.js';
23
+ import { LoadingSpinner } from '../mcp/LoadingSpinner.js';
24
+ import { ServerStatusBanner } from '../mcp/ServerStatusBanner.js';
25
+ import { SystemMessages } from '../mcp/SystemMessages.js';
26
+ function ServerDetailsContent({ server, activeColumn, onToggle, onDelete, onRefreshServers, initialView = 'details', }) {
27
+ const { state: uiState } = useUI();
28
+ const { setToolAutoApprove } = useMCP();
29
+ const [view, setView] = useState(initialView);
30
+ const [navItem, setNavItem] = useState('exit');
31
+ const [toolsNavItem, setToolsNavItem] = useState('exit');
32
+ const [selectedToolIndex, setSelectedToolIndex] = useState(0);
33
+ const [toolSelections, setToolSelections] = useState(new Map());
34
+ const [isSaving, setIsSaving] = useState(false);
35
+ const [toggleState, setToggleState] = useState({
36
+ status: 'idle',
37
+ });
38
+ const [deleteState, setDeleteState] = useState({
39
+ status: 'idle',
40
+ selection: 'no',
41
+ });
42
+ // Edit keys state
43
+ const [editingKeyIndex, setEditingKeyIndex] = useState(0);
44
+ const [isEditingValue, setIsEditingValue] = useState(false);
45
+ const [keyValues, setKeyValues] = useState(server.config.env || {});
46
+ const [saveStatus, setSaveStatus] = useState('idle');
47
+ const [saveError, setSaveError] = useState(null);
48
+ // Initialize tool selections from server config
49
+ useEffect(() => {
50
+ const selections = new Map();
51
+ const autoApprove = server.config.autoApprove || [];
52
+ server.toolsList.forEach((tool) => {
53
+ selections.set(tool.name, autoApprove.includes(tool.name));
54
+ });
55
+ setToolSelections(selections);
56
+ }, [server.toolsList, server.config.autoApprove]);
57
+ // Initialize key values when server changes
58
+ useEffect(() => {
59
+ setKeyValues(server.config.env || {});
60
+ }, [server.config.env]);
61
+ // Handle keyboard input when right column is active
62
+ useInput((input, key) => {
63
+ if (activeColumn !== 'right')
64
+ return;
65
+ // Handle tools view navigation
66
+ if (view === 'tools') {
67
+ if (key.upArrow) {
68
+ if (toolsNavItem === 'close') {
69
+ setToolsNavItem('save');
70
+ }
71
+ else if (toolsNavItem === 'save') {
72
+ if (server.toolsList.length > 0) {
73
+ setToolsNavItem('tool');
74
+ setSelectedToolIndex(server.toolsList.length - 1);
75
+ }
76
+ else {
77
+ setToolsNavItem('selectNone');
78
+ }
79
+ }
80
+ else if (toolsNavItem === 'tool') {
81
+ if (selectedToolIndex > 0) {
82
+ setSelectedToolIndex((prev) => prev - 1);
83
+ }
84
+ else {
85
+ setToolsNavItem('selectNone');
86
+ }
87
+ }
88
+ else if (toolsNavItem === 'selectNone') {
89
+ setToolsNavItem('selectAll');
90
+ }
91
+ else if (toolsNavItem === 'selectAll') {
92
+ setToolsNavItem('exit');
93
+ }
94
+ }
95
+ else if (key.downArrow) {
96
+ if (toolsNavItem === 'exit') {
97
+ setToolsNavItem('selectAll');
98
+ }
99
+ else if (toolsNavItem === 'selectAll') {
100
+ setToolsNavItem('selectNone');
101
+ }
102
+ else if (toolsNavItem === 'selectNone') {
103
+ if (server.toolsList.length > 0) {
104
+ setToolsNavItem('tool');
105
+ setSelectedToolIndex(0);
106
+ }
107
+ else {
108
+ setToolsNavItem('save');
109
+ }
110
+ }
111
+ else if (toolsNavItem === 'tool') {
112
+ if (selectedToolIndex < server.toolsList.length - 1) {
113
+ setSelectedToolIndex((prev) => prev + 1);
114
+ }
115
+ else {
116
+ setToolsNavItem('save');
117
+ }
118
+ }
119
+ else if (toolsNavItem === 'save') {
120
+ setToolsNavItem('close');
121
+ }
122
+ }
123
+ else if (key.return) {
124
+ if (toolsNavItem === 'exit') {
125
+ // Go back to details view
126
+ setView('details');
127
+ setNavItem('exit');
128
+ }
129
+ else if (toolsNavItem === 'selectAll') {
130
+ // Select all tools (only if there are tools)
131
+ if (server.toolsList.length > 0) {
132
+ const newSelections = new Map(toolSelections);
133
+ server.toolsList.forEach((tool) => {
134
+ newSelections.set(tool.name, true);
135
+ });
136
+ setToolSelections(newSelections);
137
+ }
138
+ }
139
+ else if (toolsNavItem === 'selectNone') {
140
+ // Deselect all tools (only if there are tools)
141
+ if (server.toolsList.length > 0) {
142
+ const newSelections = new Map(toolSelections);
143
+ server.toolsList.forEach((tool) => {
144
+ newSelections.set(tool.name, false);
145
+ });
146
+ setToolSelections(newSelections);
147
+ }
148
+ }
149
+ else if (toolsNavItem === 'tool') {
150
+ // Toggle tool selection
151
+ const tool = server.toolsList[selectedToolIndex];
152
+ if (tool) {
153
+ const newSelections = new Map(toolSelections);
154
+ newSelections.set(tool.name, !toolSelections.get(tool.name));
155
+ setToolSelections(newSelections);
156
+ }
157
+ }
158
+ else if (toolsNavItem === 'save') {
159
+ // Save tool selections
160
+ setIsSaving(true);
161
+ Promise.all(Array.from(toolSelections.entries()).map(([toolName, isSelected]) => setToolAutoApprove(server.name, toolName, isSelected)))
162
+ .then(() => {
163
+ setIsSaving(false);
164
+ onRefreshServers().catch(console.error);
165
+ })
166
+ .catch((err) => {
167
+ console.error('Failed to save tool selections:', err);
168
+ setIsSaving(false);
169
+ });
170
+ }
171
+ else if (toolsNavItem === 'close') {
172
+ // Close and go back to details
173
+ setView('details');
174
+ setNavItem('exit');
175
+ }
176
+ }
177
+ else if (key.escape) {
178
+ // Go back to details view
179
+ setView('details');
180
+ setNavItem('exit');
181
+ }
182
+ return;
183
+ }
184
+ // Handle edit keys view navigation
185
+ if (view === 'editKeys') {
186
+ const envKeys = Object.keys(server.config.env || {});
187
+ if (saveStatus === 'success' || saveStatus === 'error') {
188
+ if (key.return || key.escape) {
189
+ setSaveStatus('idle');
190
+ setSaveError(null);
191
+ if (saveStatus === 'success') {
192
+ // Go back to details view after successful save
193
+ setView('details');
194
+ setNavItem('exit');
195
+ // Refresh to show updated config
196
+ onRefreshServers().catch(console.error);
197
+ }
198
+ }
199
+ return;
200
+ }
201
+ if (isEditingValue) {
202
+ if (key.return) {
203
+ setIsEditingValue(false);
204
+ }
205
+ else if (key.escape) {
206
+ // Cancel editing, revert to original value
207
+ setKeyValues(server.config.env || {});
208
+ setIsEditingValue(false);
209
+ }
210
+ else if (key.backspace || key.delete) {
211
+ const currentKey = envKeys[editingKeyIndex];
212
+ setKeyValues((prev) => ({
213
+ ...prev,
214
+ [currentKey]: (prev[currentKey] || '').slice(0, -1),
215
+ }));
216
+ }
217
+ else if (input && !key.ctrl && !key.meta) {
218
+ const currentKey = envKeys[editingKeyIndex];
219
+ setKeyValues((prev) => ({
220
+ ...prev,
221
+ [currentKey]: (prev[currentKey] || '') + input,
222
+ }));
223
+ }
224
+ }
225
+ else {
226
+ if (key.upArrow) {
227
+ setEditingKeyIndex((prev) => Math.max(0, prev - 1));
228
+ }
229
+ else if (key.downArrow) {
230
+ setEditingKeyIndex((prev) => Math.min(envKeys.length, prev + 1)); // +1 for Save button
231
+ }
232
+ else if (key.return) {
233
+ if (editingKeyIndex < envKeys.length) {
234
+ // Edit key value
235
+ setIsEditingValue(true);
236
+ }
237
+ else {
238
+ // Save button pressed
239
+ setSaveStatus('saving');
240
+ // Save to config
241
+ (async () => {
242
+ try {
243
+ const { mcpConfigService } = await import('../../../services/mcpConfigService.js');
244
+ const updatedConfig = {
245
+ ...server.config,
246
+ env: keyValues,
247
+ };
248
+ await mcpConfigService.updateServerConfig(server.name, updatedConfig);
249
+ setSaveStatus('success');
250
+ }
251
+ catch (err) {
252
+ setSaveStatus('error');
253
+ setSaveError(err instanceof Error ? err.message : 'Task Failed Successfully');
254
+ }
255
+ })();
256
+ }
257
+ }
258
+ else if (key.escape) {
259
+ // Go back to details view
260
+ setView('details');
261
+ setNavItem('exit');
262
+ }
263
+ }
264
+ return;
265
+ }
266
+ // Handle delete confirmation
267
+ if (deleteState.status === 'confirm') {
268
+ if (key.upArrow) {
269
+ setDeleteState((prev) => ({ ...prev, selection: 'yes' }));
270
+ }
271
+ else if (key.downArrow) {
272
+ setDeleteState((prev) => ({ ...prev, selection: 'no' }));
273
+ }
274
+ else if (key.return) {
275
+ if (deleteState.selection === 'yes') {
276
+ // Start deletion
277
+ setDeleteState({ status: 'deleting', selection: 'no' });
278
+ // Perform deletion
279
+ onDelete()
280
+ .then(() => {
281
+ setDeleteState({ status: 'success', selection: 'no' });
282
+ })
283
+ .catch((err) => {
284
+ setDeleteState({
285
+ status: 'error',
286
+ selection: 'no',
287
+ error: err instanceof Error ? err.message : 'Task Failed Successfully',
288
+ });
289
+ });
290
+ }
291
+ else {
292
+ // Cancel
293
+ setDeleteState({ status: 'idle', selection: 'no' });
294
+ }
295
+ }
296
+ else if (key.escape) {
297
+ setDeleteState({ status: 'idle', selection: 'no' });
298
+ }
299
+ return;
300
+ }
301
+ // Handle success/error dismissal
302
+ if (deleteState.status === 'success' || deleteState.status === 'error') {
303
+ if (key.return || key.escape) {
304
+ if (deleteState.status === 'success') {
305
+ // Refresh servers list after successful deletion
306
+ onRefreshServers().catch(console.error);
307
+ }
308
+ setDeleteState({ status: 'idle', selection: 'no' });
309
+ }
310
+ return;
311
+ }
312
+ // Don't allow navigation during deletion
313
+ if (deleteState.status === 'deleting') {
314
+ return;
315
+ }
316
+ // Handle navigation
317
+ if (key.upArrow) {
318
+ if (navItem === 'delete') {
319
+ setNavItem(server.config.disabled ? 'enable' : 'disable');
320
+ }
321
+ else if (navItem === 'enable' || navItem === 'disable') {
322
+ // Check if server has env vars (API keys)
323
+ if (server.config.env && Object.keys(server.config.env).length > 0) {
324
+ setNavItem('editKeys');
325
+ }
326
+ else {
327
+ setNavItem('tools');
328
+ }
329
+ }
330
+ else if (navItem === 'editKeys') {
331
+ setNavItem('tools');
332
+ }
333
+ else if (navItem === 'tools') {
334
+ setNavItem('exit');
335
+ }
336
+ }
337
+ else if (key.downArrow) {
338
+ if (navItem === 'exit') {
339
+ setNavItem('tools');
340
+ }
341
+ else if (navItem === 'tools') {
342
+ // Check if server has env vars (API keys)
343
+ if (server.config.env && Object.keys(server.config.env).length > 0) {
344
+ setNavItem('editKeys');
345
+ }
346
+ else {
347
+ setNavItem(server.config.disabled ? 'enable' : 'disable');
348
+ }
349
+ }
350
+ else if (navItem === 'editKeys') {
351
+ setNavItem(server.config.disabled ? 'enable' : 'disable');
352
+ }
353
+ else if (navItem === 'enable' || navItem === 'disable') {
354
+ setNavItem('delete');
355
+ }
356
+ }
357
+ else if (key.return) {
358
+ if (navItem === 'exit') {
359
+ // Exit handled by parent
360
+ }
361
+ else if (navItem === 'tools') {
362
+ // Show tools view
363
+ setView('tools');
364
+ setToolsNavItem('exit');
365
+ }
366
+ else if (navItem === 'editKeys') {
367
+ // Show edit keys view
368
+ setView('editKeys');
369
+ }
370
+ else if (navItem === 'enable' || navItem === 'disable') {
371
+ // Toggle server enabled/disabled
372
+ setToggleState({ status: 'toggling' });
373
+ onToggle()
374
+ .then(() => {
375
+ setToggleState({ status: 'idle' });
376
+ // Refresh to show updated status
377
+ onRefreshServers().catch(console.error);
378
+ })
379
+ .catch((err) => {
380
+ console.error('Failed to toggle server:', err);
381
+ setToggleState({ status: 'idle' });
382
+ });
383
+ }
384
+ else if (navItem === 'delete') {
385
+ // Show delete confirmation
386
+ setDeleteState({ status: 'confirm', selection: 'no' });
387
+ }
388
+ }
389
+ }, { isActive: activeColumn === 'right' });
390
+ // Render tools view
391
+ if (view === 'tools') {
392
+ const autoApprovedCount = Array.from(toolSelections.values()).filter(Boolean).length;
393
+ const allSelected = server.toolsList.length > 0 && autoApprovedCount === server.toolsList.length;
394
+ const noneSelected = autoApprovedCount === 0;
395
+ const hasTools = server.toolsList.length > 0;
396
+ return (_jsxs(Box, { flexDirection: "column", height: "100%", width: "100%", children: [_jsx(Box, { flexShrink: 0, children: _jsxs(Text, { bold: true, color: toolsNavItem === 'exit' ? uiState.theme.text.accent : 'white', children: [toolsNavItem === 'exit' ? '▶ ' : ' ', "\u2190 Exit"] }) }), _jsx(Text, { children: " " }), _jsxs(Text, { bold: true, color: uiState.theme.text.accent, children: ["Tools: ", server.name] }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Server:" }), " ", server.name] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Total Tools:" }), " ", server.toolsList.length, " |", ' ', _jsx(Text, { bold: true, children: "Auto-Approved:" }), " ", autoApprovedCount] }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), _jsxs(Text, { bold: true, color: toolsNavItem === 'selectAll' ? uiState.theme.text.accent : hasTools ? 'white' : 'gray', dimColor: !hasTools, children: [toolsNavItem === 'selectAll' ? '▶ ' : ' ', "[A] ", allSelected ? '☑' : '☐', " Select All"] }), _jsxs(Text, { bold: true, color: toolsNavItem === 'selectNone' ? uiState.theme.text.accent : hasTools ? 'white' : 'gray', dimColor: !hasTools, children: [toolsNavItem === 'selectNone' ? '▶ ' : ' ', "[N] ", noneSelected ? '☑' : '☐', " Select None"] }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), _jsx(Box, { flexDirection: "column", flexGrow: 1, overflow: "hidden", children: server.toolsList.length === 0 ? (_jsx(Text, { dimColor: true, children: "No tools available for this server" })) : (server.toolsList.map((tool, index) => {
397
+ const isSelected = toolsNavItem === 'tool' && selectedToolIndex === index;
398
+ const isChecked = toolSelections.get(tool.name) || false;
399
+ return (_jsxs(Text, { bold: isSelected, color: isSelected ? uiState.theme.text.accent : 'white', children: [isSelected ? '▶ ' : ' ', "[", isChecked ? '✓' : ' ', "] ", tool.name] }, tool.name));
400
+ })) }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), _jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [_jsxs(Text, { bold: true, color: toolsNavItem === 'save' ? uiState.theme.text.accent : 'green', children: [toolsNavItem === 'save' ? '▶ ' : ' ', "[S] \uD83D\uDCBE Save", isSaving ? ' (Saving...)' : ''] }), _jsxs(Text, { bold: true, color: toolsNavItem === 'close' ? uiState.theme.text.accent : 'white', children: [toolsNavItem === 'close' ? '▶ ' : ' ', "[Esc] Close"] }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), _jsx(Text, { color: uiState.theme.status.warning, children: "\uD83D\uDCA1 Tip: Auto-approved tools will execute without confirmation prompts." }), _jsx(Text, { color: uiState.theme.status.warning, children: "Only auto-approve tools you trust completely." })] })] }));
401
+ }
402
+ // Render edit keys view
403
+ if (view === 'editKeys') {
404
+ const envKeys = Object.keys(server.config.env || {});
405
+ return (_jsxs(Box, { flexDirection: "column", height: "100%", width: "100%", children: [_jsx(Box, { flexShrink: 0, children: _jsx(Text, { bold: true, color: "white", children: "\u2190 Exit" }) }), _jsx(Text, { children: " " }), _jsxs(Text, { bold: true, color: uiState.theme.text.accent, children: ["Edit API Keys: ", server.name] }), _jsx(Text, { children: " " }), saveStatus === 'idle' || saveStatus === 'saving' ? (_jsxs(_Fragment, { children: [envKeys.map((key, index) => {
406
+ const isSelected = editingKeyIndex === index && !saveStatus;
407
+ const isCurrentlyEditing = isEditingValue && editingKeyIndex === index;
408
+ const value = keyValues[key] || '';
409
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { bold: true, color: isSelected ? uiState.theme.text.accent : 'white', children: [isSelected ? '▶ ' : ' ', key] }), _jsx(Box, { borderStyle: "single", borderColor: isSelected ? 'cyan' : 'gray', paddingX: 1, width: "100%", children: _jsxs(Text, { children: [value ? '•'.repeat(Math.min(value.length, 50)) : '(not set)', isCurrentlyEditing && _jsx(Text, { color: "cyan", children: "_" })] }) })] }, key));
410
+ }), _jsx(Text, { children: " " }), _jsxs(Text, { bold: true, color: editingKeyIndex === envKeys.length ? uiState.theme.text.accent : 'green', children: [editingKeyIndex === envKeys.length ? '▶ ' : ' ', "[S] \uD83D\uDCBE Save", saveStatus === 'saving' && ' (Saving...)'] }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), _jsx(Box, { borderStyle: "single", borderColor: "yellow", paddingX: 1, children: _jsx(Text, { color: "yellow", children: "\u26A0\uFE0F Keys are stored in plain text in ~/.ollm/settings/mcp.json" }) })] })) : saveStatus === 'success' ? (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, color: "green", children: "\u2713 API Keys Saved Successfully!" }), _jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Press Enter to continue" })] })) : (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, color: "red", children: "\u2717 Task Failed Successfully" }), _jsx(Text, { children: " " }), _jsx(Text, { color: uiState.theme.status.error, children: saveError }), _jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Press Enter to try again" })] }))] }));
411
+ }
412
+ // Render details view
413
+ return (_jsxs(Box, { flexDirection: "column", height: "100%", width: "100%", children: [_jsx(Box, { flexShrink: 0, children: _jsxs(Text, { bold: true, color: navItem === 'exit' ? uiState.theme.text.accent : 'white', children: [navItem === 'exit' ? '▶ ' : ' ', "\u2190 Exit"] }) }), _jsx(Text, { children: " " }), _jsx(Box, { flexShrink: 0, marginBottom: 1, children: _jsx(ServerStatusBanner, { phase: server.phase, isEnabled: !server.config.disabled }) }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, overflow: "hidden", children: [_jsxs(Text, { bold: true, color: uiState.theme.text.accent, children: ["MCP Server: ", server.name] }), server.config.metadata?.version && (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Version:" }), " ", server.config.metadata.version] })), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), server.config.metadata?.author && (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Author:" }), " ", server.config.metadata.author] })), server.config.metadata?.homepage && (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Homepage:" }), ' ', _jsx(Text, { color: uiState.theme.text.accent, children: server.config.metadata.homepage })] })), server.config.metadata?.repository && (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: "GitHub Repository:" }), ' ', _jsx(Text, { color: uiState.theme.text.accent, children: server.config.metadata.repository })] })), server.config.metadata?.category && (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Category:" }), " ", server.config.metadata.category] })), server.config.metadata?.rating && (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Rating:" }), " ", '⭐'.repeat(Math.floor(server.config.metadata.rating)), " (", server.config.metadata.rating, "/5)"] })), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), server.config.metadata?.description && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, children: "Description:" }), _jsx(Text, { wrap: "wrap", children: server.config.metadata.description }), _jsx(Text, { children: " " })] })), server.config.metadata?.requirements && server.config.metadata.requirements.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, children: "Requirements:" }), server.config.metadata.requirements.map((req, idx) => (_jsxs(Text, { children: [" \u2022 ", req] }, idx))), _jsx(Text, { children: " " })] })), server.config.env && Object.keys(server.config.env).length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, color: uiState.theme.status.warning, children: "\u26A0\uFE0F This server requires:" }), Object.keys(server.config.env).map((key) => (_jsxs(Text, { color: uiState.theme.status.warning, children: [' ', "\u2022 ", key] }, key))), _jsx(Text, { children: " " })] })), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Command:" }), ' ', _jsxs(Text, { dimColor: true, children: [server.config.command, " ", server.config.args?.join(' ') || ''] })] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Tools Available:" }), " ", server.toolsList?.length || 0, " tools"] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Transport:" }), " ", server.config.transport || 'stdio'] }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), server.config.env && Object.keys(server.config.env).length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, children: "API Keys:" }), Object.entries(server.config.env).map(([key, value]) => (_jsxs(Text, { children: [_jsxs(Text, { dimColor: true, children: [" ", key, ":"] }), ' ', value ? (_jsx(Text, { color: uiState.theme.status.success, children: "\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF (configured)" })) : (_jsx(Text, { color: uiState.theme.status.error, children: "(not set)" }))] }, key))), _jsx(Text, { dimColor: true, children: " (Press [E] to edit)" }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " })] })), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Connection Status:" }), ' ', server.status === 'connected'
414
+ ? '✓ Connected'
415
+ : server.status === 'error'
416
+ ? '✗ Disconnected'
417
+ : '○ Stopped'] }), server.oauthStatus && (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: "OAuth Status:" }), ' ', _jsx(Text, { color: server.oauthStatus.connected ? 'green' : 'red', children: server.oauthStatus.connected ? '✓ Connected' : '✗ Not Connected' })] }))] }), _jsxs(Box, { flexDirection: "column", flexShrink: 0, marginTop: 1, children: [deleteState.status === 'idle' && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, children: "Actions:" }), _jsx(Text, { children: " " }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { bold: true, color: navItem === 'tools' ? uiState.theme.text.accent : 'cyan', children: [navItem === 'tools' ? '▶ ' : ' ', "[T] Available Tools"] }), server.config.env && Object.keys(server.config.env).length > 0 && (_jsxs(Text, { bold: true, color: navItem === 'editKeys' ? uiState.theme.text.accent : 'yellow', children: [navItem === 'editKeys' ? '▶ ' : ' ', "[K] Edit API Keys"] })), server.config.disabled ? (_jsxs(Text, { bold: true, color: navItem === 'enable' ? uiState.theme.text.accent : 'green', children: [navItem === 'enable' ? '▶ ' : ' ', "[E] Enable Server"] })) : (_jsxs(Text, { bold: true, color: navItem === 'disable' ? uiState.theme.text.accent : 'gray', children: [navItem === 'disable' ? '▶ ' : ' ', "[D] Disable Server"] })), _jsxs(Text, { bold: true, color: navItem === 'delete' ? uiState.theme.text.accent : 'red', children: [navItem === 'delete' ? '▶ ' : ' ', "[X] Delete Server"] })] }), toggleState.status === 'toggling' && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "\u27F3 Updating server status..." }) }))] })), deleteState.status === 'confirm' && (_jsxs(_Fragment, { children: [_jsxs(Text, { bold: true, color: "red", children: ["Delete ", server.name, "?"] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { bold: true, color: deleteState.selection === 'yes' ? 'yellow' : 'white', children: [deleteState.selection === 'yes' ? '▶ ' : ' ', "Yes"] }), _jsxs(Text, { bold: true, color: deleteState.selection === 'no' ? 'yellow' : 'white', children: [deleteState.selection === 'no' ? '▶ ' : ' ', "No"] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "\u2191\u2193: Select | Enter: Confirm | Esc: Cancel" }) })] })), deleteState.status === 'deleting' && (_jsxs(_Fragment, { children: [_jsxs(Text, { bold: true, color: "red", children: ["Deleting ", server.name, "..."] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Please wait..." }) })] })), deleteState.status === 'success' && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, color: "green", children: "\u2713 Server Deleted Successfully!" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Enter to continue" }) })] })), deleteState.status === 'error' && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, color: "red", children: "\u2717 Deletion Failed" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: uiState.theme.status.error, children: deleteState.error }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Enter to dismiss" }) })] }))] })] }));
418
+ }
419
+ function MarketplaceContent({ activeColumn, onRefreshServers, height: _height = 20, onDetailViewChange, }) {
420
+ const { state: uiState } = useUI();
421
+ const { searchMarketplace } = useMCP();
422
+ const [searchQuery, setSearchQuery] = useState('');
423
+ const [servers, setServers] = useState([]);
424
+ const [selectedIndex, setSelectedIndex] = useState(0);
425
+ const [scrollOffset, setScrollOffset] = useState(0);
426
+ const [isLoading, setIsLoading] = useState(false);
427
+ const [isSearchFocused, setIsSearchFocused] = useState(false);
428
+ const [view, setView] = useState('list');
429
+ const [selectedServer, setSelectedServer] = useState(null);
430
+ const [detailNavItem, setDetailNavItem] = useState('exit');
431
+ const [installState, setInstallState] = useState({
432
+ status: 'idle',
433
+ selection: 'no',
434
+ });
435
+ // Notify parent when entering/exiting detail view
436
+ useEffect(() => {
437
+ onDetailViewChange(view === 'detail' || view === 'apikey');
438
+ }, [view, onDetailViewChange]);
439
+ // Fixed window size - display exactly 10 servers at a time
440
+ const windowSize = 10;
441
+ // Load initial servers
442
+ useEffect(() => {
443
+ const loadServers = async () => {
444
+ setIsLoading(true);
445
+ try {
446
+ const results = await searchMarketplace('');
447
+ setServers(results);
448
+ }
449
+ catch (err) {
450
+ console.error('Failed to load marketplace:', err);
451
+ }
452
+ finally {
453
+ setIsLoading(false);
454
+ }
455
+ };
456
+ loadServers();
457
+ }, [searchMarketplace]);
458
+ // Search when query changes
459
+ useEffect(() => {
460
+ const performSearch = async () => {
461
+ setIsLoading(true);
462
+ try {
463
+ const results = await searchMarketplace(searchQuery);
464
+ setServers(results);
465
+ setSelectedIndex(0);
466
+ setScrollOffset(0);
467
+ }
468
+ catch (err) {
469
+ console.error('Search failed:', err);
470
+ }
471
+ finally {
472
+ setIsLoading(false);
473
+ }
474
+ };
475
+ if (searchQuery) {
476
+ performSearch();
477
+ }
478
+ }, [searchQuery, searchMarketplace]);
479
+ // Auto-scroll to keep selected item visible (snap to server, not line)
480
+ useEffect(() => {
481
+ if (selectedIndex < scrollOffset) {
482
+ setScrollOffset(selectedIndex);
483
+ }
484
+ else if (selectedIndex >= scrollOffset + windowSize) {
485
+ setScrollOffset(selectedIndex - windowSize + 1);
486
+ }
487
+ }, [selectedIndex, scrollOffset, windowSize]);
488
+ // Get visible servers (only show what fits in the window)
489
+ const visibleServers = useMemo(() => {
490
+ return servers.slice(scrollOffset, scrollOffset + windowSize);
491
+ }, [servers, scrollOffset, windowSize]);
492
+ // Handle keyboard input when right column is active
493
+ useInput((input, key) => {
494
+ if (activeColumn !== 'right')
495
+ return;
496
+ // Handle install confirmation
497
+ if (installState.status === 'confirm') {
498
+ if (key.upArrow) {
499
+ setInstallState((prev) => ({ ...prev, selection: 'yes' }));
500
+ }
501
+ else if (key.downArrow) {
502
+ setInstallState((prev) => ({ ...prev, selection: 'no' }));
503
+ }
504
+ else if (key.return) {
505
+ if (installState.selection === 'yes' && selectedServer) {
506
+ // Start installation
507
+ setInstallState({ status: 'installing', selection: 'no' });
508
+ // Perform installation
509
+ (async () => {
510
+ try {
511
+ const { mcpMarketplace } = await import('../../../services/mcpMarketplace.js');
512
+ // Pass the full server object instead of just ID to avoid lookup issues
513
+ await mcpMarketplace.installServer(selectedServer, {});
514
+ setInstallState({ status: 'success', selection: 'no' });
515
+ }
516
+ catch (err) {
517
+ setInstallState({
518
+ status: 'error',
519
+ selection: 'no',
520
+ error: err instanceof Error ? err.message : 'Task Failed Successfully',
521
+ });
522
+ }
523
+ })();
524
+ }
525
+ else {
526
+ // Cancel
527
+ setInstallState({ status: 'idle', selection: 'no' });
528
+ }
529
+ }
530
+ else if (key.escape) {
531
+ setInstallState({ status: 'idle', selection: 'no' });
532
+ }
533
+ return;
534
+ }
535
+ // Handle success/error dismissal
536
+ if (installState.status === 'success' || installState.status === 'error') {
537
+ if (key.return || key.escape) {
538
+ if (installState.status === 'success') {
539
+ // Refresh servers list before going back
540
+ onRefreshServers()
541
+ .then(() => {
542
+ setInstallState({ status: 'idle', selection: 'no' });
543
+ // Go back to list after successful install
544
+ setView('list');
545
+ setSelectedServer(null);
546
+ setDetailNavItem('exit');
547
+ })
548
+ .catch((err) => {
549
+ console.error('Failed to refresh servers:', err);
550
+ setInstallState({ status: 'idle', selection: 'no' });
551
+ setView('list');
552
+ setSelectedServer(null);
553
+ setDetailNavItem('exit');
554
+ });
555
+ }
556
+ else {
557
+ // On error, go back to detail view to try again
558
+ setInstallState({ status: 'idle', selection: 'no' });
559
+ setView('detail');
560
+ }
561
+ }
562
+ return;
563
+ }
564
+ // Don't allow navigation during installation
565
+ if (installState.status === 'installing') {
566
+ return;
567
+ }
568
+ // Handle detail view navigation (Level 3)
569
+ if (view === 'detail') {
570
+ if (key.upArrow) {
571
+ setDetailNavItem('exit');
572
+ }
573
+ else if (key.downArrow) {
574
+ setDetailNavItem('install');
575
+ }
576
+ else if (key.return) {
577
+ if (detailNavItem === 'exit') {
578
+ // Back to list (Level 3 → Level 2)
579
+ setView('list');
580
+ setSelectedServer(null);
581
+ setDetailNavItem('exit');
582
+ }
583
+ else if (detailNavItem === 'install' && selectedServer) {
584
+ // Check if server requires API keys
585
+ const hasEnvVars = selectedServer.env && Object.keys(selectedServer.env).length > 0;
586
+ if (hasEnvVars) {
587
+ // Show API key input dialog
588
+ setView('apikey');
589
+ }
590
+ else {
591
+ // No API keys needed, show confirmation directly
592
+ setInstallState({ status: 'confirm', selection: 'no' });
593
+ }
594
+ }
595
+ }
596
+ else if (key.escape) {
597
+ // Back to list (Level 3 → Level 2)
598
+ setView('list');
599
+ setSelectedServer(null);
600
+ setDetailNavItem('exit');
601
+ }
602
+ return;
603
+ }
604
+ // Handle search input
605
+ if (isSearchFocused) {
606
+ if (key.backspace || key.delete) {
607
+ setSearchQuery((prev) => prev.slice(0, -1));
608
+ }
609
+ else if (key.return) {
610
+ setIsSearchFocused(false);
611
+ }
612
+ else if (input && !key.ctrl && !key.meta) {
613
+ setSearchQuery((prev) => prev + input);
614
+ }
615
+ return;
616
+ }
617
+ // / to focus search
618
+ if (input === '/') {
619
+ setIsSearchFocused(true);
620
+ return;
621
+ }
622
+ // Navigation - snap to server names (skip descriptions)
623
+ if (key.upArrow) {
624
+ setSelectedIndex((prev) => Math.max(0, prev - 1));
625
+ }
626
+ else if (key.downArrow) {
627
+ setSelectedIndex((prev) => Math.min(servers.length - 1, prev + 1));
628
+ }
629
+ else if (key.return && servers[selectedIndex]) {
630
+ // Show server details (Level 2 → Level 3)
631
+ setSelectedServer(servers[selectedIndex]);
632
+ setView('detail');
633
+ setDetailNavItem('exit');
634
+ }
635
+ }, { isActive: activeColumn === 'right' });
636
+ if (isLoading) {
637
+ return (_jsx(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", height: "100%", children: _jsx(LoadingSpinner, { message: "Loading marketplace...", spinnerType: "dots", color: uiState.theme.text.accent, centered: true, padded: true }) }));
638
+ }
639
+ const showScrollUp = scrollOffset > 0;
640
+ const showScrollDown = scrollOffset + windowSize < servers.length;
641
+ // Render API key input view
642
+ if (view === 'apikey' && selectedServer) {
643
+ return (_jsx(APIKeyInputDialog, { server: selectedServer, onInstall: async (envVars) => {
644
+ // Start installation with provided API keys
645
+ setInstallState({ status: 'installing', selection: 'no' });
646
+ try {
647
+ const { mcpMarketplace } = await import('../../../services/mcpMarketplace.js');
648
+ // Pass the full server object instead of just ID to avoid lookup issues
649
+ await mcpMarketplace.installServer(selectedServer, { env: envVars });
650
+ setInstallState({ status: 'success', selection: 'no' });
651
+ }
652
+ catch (err) {
653
+ setInstallState({
654
+ status: 'error',
655
+ selection: 'no',
656
+ error: err instanceof Error ? err.message : 'Task Failed Successfully',
657
+ });
658
+ }
659
+ }, onCancel: () => {
660
+ // Go back to detail view
661
+ setView('detail');
662
+ } }));
663
+ }
664
+ // Render detail view
665
+ if (view === 'detail' && selectedServer) {
666
+ return (_jsxs(Box, { flexDirection: "column", height: "100%", width: "100%", children: [_jsx(Box, { flexShrink: 0, justifyContent: "flex-end", children: _jsx(Text, { dimColor: true, children: "\u2191\u2193: Navigate | Enter: Select | Esc: Back" }) }), _jsx(Box, { flexShrink: 0, children: _jsxs(Text, { bold: true, color: detailNavItem === 'exit' ? uiState.theme.text.accent : 'white', children: [detailNavItem === 'exit' ? '▶ ' : ' ', "\u2190 Exit"] }) }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, overflow: "hidden", children: [_jsxs(Text, { bold: true, color: uiState.theme.text.accent, children: ["MCP Server: ", selectedServer.name] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Version:" }), " ", selectedServer.version || 'N/A'] }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Author:" }), " ", selectedServer.author || 'Unknown'] }), selectedServer.homepage && (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Homepage:" }), " ", _jsx(Text, { color: "cyan", children: selectedServer.homepage })] })), selectedServer.repository && (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: "GitHub Repository:" }), ' ', _jsx(Text, { color: "cyan", children: selectedServer.repository })] })), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Category:" }), " ", selectedServer.category || 'Utilities'] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Rating:" }), " ", '⭐'.repeat(Math.floor(selectedServer.rating)), " (", selectedServer.rating, "/5)"] }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "Description:" }), _jsx(Text, { wrap: "wrap", children: selectedServer.description }), _jsx(Text, { children: " " }), selectedServer.requirements.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, children: "Requirements:" }), selectedServer.requirements.map((req, idx) => (_jsxs(Text, { children: [" \u2022 ", req] }, idx))), _jsx(Text, { children: " " })] })), selectedServer.env && Object.keys(selectedServer.env).length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, color: "yellow", children: "\u26A0\uFE0F This server requires:" }), Object.keys(selectedServer.env).map((key) => (_jsxs(Text, { color: "yellow", children: [' ', "\u2022 ", key] }, key))), _jsx(Text, { children: " " }), _jsx(Text, { children: " " })] })), _jsxs(Text, { children: [_jsx(Text, { bold: true, children: "Command:" }), ' ', _jsxs(Text, { dimColor: true, children: [selectedServer.command, " ", selectedServer.args?.join(' ')] })] }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), selectedServer.env && Object.keys(selectedServer.env).length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, children: "API Keys:" }), _jsx(Text, { dimColor: true, children: " (Configure during installation)" }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " })] }))] }), _jsxs(Box, { flexDirection: "column", flexShrink: 0, marginTop: 1, children: [installState.status === 'idle' && (_jsxs(Text, { bold: true, color: detailNavItem === 'install' ? 'yellow' : 'green', children: [detailNavItem === 'install' ? '▶ ' : ' ', "[I] Install"] })), installState.status === 'confirm' && (_jsxs(_Fragment, { children: [_jsxs(Text, { bold: true, color: "cyan", children: ["Install ", selectedServer.name, "?"] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { bold: true, color: installState.selection === 'yes' ? 'yellow' : 'white', children: [installState.selection === 'yes' ? '▶ ' : ' ', "Yes"] }), _jsxs(Text, { bold: true, color: installState.selection === 'no' ? uiState.theme.text.accent : 'white', children: [installState.selection === 'no' ? '▶ ' : ' ', "No"] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "\u2191\u2193: Select | Enter: Confirm | Esc: Cancel" }) })] })), installState.status === 'installing' && (_jsxs(_Fragment, { children: [_jsxs(Text, { bold: true, color: "cyan", children: ["Installing ", selectedServer.name, "..."] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Please wait..." }) })] })), installState.status === 'success' && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, color: "green", children: "\u2713 Installation Successful!" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Enter to continue" }) })] })), installState.status === 'error' && (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, color: "red", children: "\u2717 Installation Failed" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: uiState.theme.status.error, children: installState.error }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Enter to dismiss" }) })] }))] })] }));
667
+ }
668
+ // Render list view
669
+ return (_jsxs(Box, { flexDirection: "column", height: "100%", width: "100%", children: [_jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [_jsx(Text, { bold: true, color: "cyan", children: "\uD83C\uDFEA MCP Marketplace" }), _jsx(Text, { dimColor: true, children: isSearchFocused
670
+ ? 'Type to search, Enter to finish'
671
+ : `↑↓: Navigate | Enter: View Details | /: Search | ${servers.length} servers` })] }), _jsx(Text, { children: " " }), _jsxs(Box, { flexShrink: 0, children: [_jsxs(Text, { bold: true, color: uiState.theme.text.accent, children: ["Search:", ' '] }), _jsxs(Text, { color: isSearchFocused ? 'yellow' : 'gray', children: [searchQuery || 'type / to search', isSearchFocused && _jsx(Text, { color: "yellow", children: "_" })] })] }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), showScrollUp && (_jsx(Box, { justifyContent: "center", flexShrink: 0, children: _jsx(Text, { color: "cyan", bold: true, children: "\u25B2 More above" }) })), _jsx(Box, { flexDirection: "column", flexGrow: 1, flexShrink: 1, overflow: "hidden", children: visibleServers.map((server, index) => {
672
+ const actualIndex = scrollOffset + index;
673
+ const isSelected = actualIndex === selectedIndex;
674
+ return (_jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [_jsxs(Text, { bold: true, color: isSelected ? 'yellow' : 'cyan', children: [isSelected ? '▶ ' : ' ', server.name, server.version ? ` v${server.version}` : ''] }), _jsxs(Text, { dimColor: true, children: [' ', server.description] }), _jsx(Text, { children: " " })] }, server.id));
675
+ }) }), showScrollDown && (_jsx(Box, { justifyContent: "center", flexShrink: 0, children: _jsx(Text, { color: "cyan", bold: true, children: "\u25BC More below" }) }))] }));
676
+ }
677
+ /**
678
+ * MCPTab Component
679
+ *
680
+ * Main tab component that orchestrates the MCP panel UI with two-column layout.
681
+ * Handles keyboard navigation, dialog management, and server operations.
682
+ */
683
+ export function MCPTab({ windowWidth, height }) {
684
+ return (_jsx(ErrorBoundary, { fallback: (error) => (_jsxs(Box, { flexDirection: "column", padding: 2, children: [_jsx(Box, { borderStyle: "round", borderColor: "red", paddingX: 2, paddingY: 1, children: _jsx(Text, { color: "red", bold: true, children: "\u26A0\uFE0F MCP Panel Error" }) }), _jsx(Box, { marginTop: 1, paddingLeft: 2, children: _jsx(Text, { dimColor: true, children: error.message }) }), _jsxs(Box, { marginTop: 2, children: [_jsx(Text, { dimColor: true, children: "The MCP panel encountered an error. Press " }), _jsx(Text, { bold: true, color: "cyan", children: "Esc or 0" }), _jsx(Text, { dimColor: true, children: " to return to main menu." })] })] })), children: _jsx(MCPTabContent, { windowWidth: windowWidth, height: height }) }));
685
+ }
686
+ /**
687
+ * MCPTab Content Component (wrapped by error boundary)
688
+ */
689
+ function MCPTabContent({ windowWidth, height }) {
690
+ const { state: uiState } = useUI();
691
+ const { isFocused, isActive, exitToNavBar } = useFocusManager();
692
+ const { stdout } = useStdout();
693
+ // Calculate absolute widths if windowWidth is provided
694
+ // Account for borders: each column has 2 chars for borders (left + right)
695
+ // Total border width = 4 chars (2 per column), but they share the middle border
696
+ // So effectively we need to subtract 4 chars total
697
+ const absoluteLeftWidth = windowWidth ? Math.floor(windowWidth * 0.3) : undefined;
698
+ const absoluteRightWidth = windowWidth && absoluteLeftWidth ? windowWidth - absoluteLeftWidth - 4 : undefined;
699
+ const { state, toggleServer, restartServer, configureServer, uninstallServer, refreshServers, clearError, subscribeToSystemMessages, } = useMCP();
700
+ // Check if this panel has focus (for navigation and dialogs)
701
+ const hasFocus = isFocused('mcp-panel');
702
+ // Check if we're in active mode (for state-modifying actions like toggle)
703
+ const _canModifyState = hasFocus && isActive();
704
+ // Get terminal height for calculating content area
705
+ const terminalHeight = (stdout?.rows || 24) - 1;
706
+ // Navigation state
707
+ const [selectedIndex, setSelectedIndex] = useState(0);
708
+ const [activeColumn, setActiveColumn] = useState('left');
709
+ const [scrollOffset, setScrollOffset] = useState(0);
710
+ const windowSize = 15; // Number of items visible in left column
711
+ // Track if we're in a detail view (Level 3) to prevent ESC from bubbling
712
+ const [isInDetailView, setIsInDetailView] = useState(false);
713
+ // Track initial view for server details (details or tools)
714
+ const [serverDetailInitialView, setServerDetailInitialView] = useState('details');
715
+ // Callback for child components to notify when entering/exiting detail views
716
+ const handleDetailViewChange = useCallback((isInDetail) => {
717
+ setIsInDetailView(isInDetail);
718
+ }, []);
719
+ // Dialog state
720
+ const [dialogState, setDialogState] = useState({ type: null });
721
+ // Status message for operations
722
+ const [statusMessage, setStatusMessage] = useState(null);
723
+ // System messages for errors and notifications
724
+ const [systemMessages, setSystemMessages] = useState([]);
725
+ // Subscribe to system messages from MCPContext
726
+ useEffect(() => {
727
+ const unsubscribe = subscribeToSystemMessages((messages) => {
728
+ setSystemMessages(messages);
729
+ });
730
+ return unsubscribe;
731
+ }, [subscribeToSystemMessages]);
732
+ // Build menu items for left column
733
+ const menuItems = useMemo(() => {
734
+ const items = [];
735
+ // Exit item
736
+ items.push({
737
+ type: 'exit',
738
+ label: 'Exit',
739
+ icon: '←',
740
+ });
741
+ // Marketplace item
742
+ items.push({
743
+ type: 'marketplace',
744
+ label: 'Marketplace',
745
+ icon: '🏪',
746
+ });
747
+ // Installed servers
748
+ const serverList = Array.from(state.servers.values());
749
+ serverList.forEach((server) => {
750
+ items.push({
751
+ type: 'server',
752
+ label: server.name,
753
+ icon: server.config.disabled ? '○' : '●',
754
+ server,
755
+ });
756
+ });
757
+ return items;
758
+ }, [state.servers]);
759
+ // Get visible items for windowed rendering
760
+ const visibleItems = useMemo(() => {
761
+ return menuItems.slice(scrollOffset, scrollOffset + windowSize);
762
+ }, [menuItems, scrollOffset, windowSize]);
763
+ // Get currently selected item
764
+ const selectedItem = useMemo(() => {
765
+ if (selectedIndex >= 0 && selectedIndex < menuItems.length) {
766
+ return menuItems[selectedIndex];
767
+ }
768
+ return null;
769
+ }, [menuItems, selectedIndex]);
770
+ // Reset server detail view when selection changes
771
+ useEffect(() => {
772
+ setServerDetailInitialView('details');
773
+ }, [selectedItem]);
774
+ // Navigation handlers
775
+ const handleNavigateUp = useCallback(() => {
776
+ if (activeColumn === 'left') {
777
+ setSelectedIndex((prev) => Math.max(0, prev - 1));
778
+ }
779
+ // TODO: Handle right column navigation when content supports it
780
+ }, [activeColumn]);
781
+ const handleNavigateDown = useCallback(() => {
782
+ if (activeColumn === 'left') {
783
+ setSelectedIndex((prev) => Math.min(menuItems.length - 1, prev + 1));
784
+ }
785
+ // TODO: Handle right column navigation when content supports it
786
+ }, [activeColumn, menuItems.length]);
787
+ const handleNavigateLeft = useCallback(() => {
788
+ setActiveColumn('left');
789
+ }, []);
790
+ const handleNavigateRight = useCallback(() => {
791
+ setActiveColumn('right');
792
+ }, []);
793
+ const handleSelect = useCallback(async () => {
794
+ if (!selectedItem)
795
+ return;
796
+ switch (selectedItem.type) {
797
+ case 'exit':
798
+ exitToNavBar();
799
+ break;
800
+ case 'marketplace':
801
+ // Don't open dialog, just stay selected to show marketplace in right column
802
+ // The right column will detect selectedItem.type === 'marketplace' and show content
803
+ break;
804
+ case 'server':
805
+ // Server selection just shows details in right column
806
+ // Enable/disable happens in the detail view, not here
807
+ break;
808
+ }
809
+ }, [selectedItem, exitToNavBar]);
810
+ // Auto-scroll to keep selected item visible
811
+ useEffect(() => {
812
+ if (selectedIndex < scrollOffset) {
813
+ setScrollOffset(selectedIndex);
814
+ }
815
+ else if (selectedIndex >= scrollOffset + windowSize) {
816
+ setScrollOffset(selectedIndex - windowSize + 1);
817
+ }
818
+ }, [selectedIndex, scrollOffset, windowSize]);
819
+ /**
820
+ * Close dialog handler
821
+ */
822
+ const handleCloseDialog = useCallback(() => {
823
+ setDialogState({ type: null });
824
+ }, []);
825
+ /**
826
+ * Render the appropriate dialog based on dialog state
827
+ */
828
+ const renderDialog = () => {
829
+ if (dialogState.type === null)
830
+ return null;
831
+ switch (dialogState.type) {
832
+ case 'configure':
833
+ if (!dialogState.serverName)
834
+ return null;
835
+ return (_jsx(DialogErrorBoundary, { onClose: handleCloseDialog, dialogName: "Server Configuration", children: _jsx(ServerConfigDialog, { serverName: dialogState.serverName, onClose: handleCloseDialog, onSave: async (config) => {
836
+ setStatusMessage('Saving configuration...');
837
+ await configureServer(dialogState.serverName, config);
838
+ setStatusMessage('Configuration saved successfully');
839
+ setTimeout(() => setStatusMessage(null), 3000);
840
+ handleCloseDialog();
841
+ } }) }));
842
+ case 'oauth':
843
+ if (!dialogState.serverName)
844
+ return null;
845
+ return (_jsx(DialogErrorBoundary, { onClose: handleCloseDialog, dialogName: "OAuth Configuration", children: _jsx(OAuthConfigDialog, { serverName: dialogState.serverName, onClose: handleCloseDialog }) }));
846
+ case 'health':
847
+ return (_jsx(DialogErrorBoundary, { onClose: handleCloseDialog, dialogName: "Health Monitor", children: _jsx(HealthMonitorDialog, { onClose: handleCloseDialog }) }));
848
+ case 'logs':
849
+ if (!dialogState.serverName)
850
+ return null;
851
+ return (_jsx(DialogErrorBoundary, { onClose: handleCloseDialog, dialogName: "Server Logs", children: _jsx(ServerLogsViewer, { serverName: dialogState.serverName, onClose: handleCloseDialog }) }));
852
+ case 'uninstall':
853
+ if (!dialogState.serverName)
854
+ return null;
855
+ return (_jsx(DialogErrorBoundary, { onClose: handleCloseDialog, dialogName: "Uninstall Confirmation", children: _jsx(UninstallConfirmDialog, { serverName: dialogState.serverName, onClose: handleCloseDialog, onConfirm: async () => {
856
+ const serverName = dialogState.serverName;
857
+ setStatusMessage(`Uninstalling ${serverName}...`);
858
+ await uninstallServer(serverName);
859
+ setStatusMessage(`${serverName} uninstalled successfully`);
860
+ setTimeout(() => setStatusMessage(null), 3000);
861
+ handleCloseDialog();
862
+ } }) }));
863
+ case 'help':
864
+ return _jsx(HelpOverlay, { onClose: handleCloseDialog, context: "main" });
865
+ default:
866
+ return null;
867
+ }
868
+ };
869
+ /**
870
+ * Handle keyboard navigation
871
+ *
872
+ * MCP Tab uses a 3-level hierarchy:
873
+ * - Level 1: Left column (menu/list)
874
+ * - Level 2: Right column (content area)
875
+ * - Level 3: Detail views (handled by child components via modal system)
876
+ */
877
+ useInput((input, key) => {
878
+ // Don't handle input during loading
879
+ if (state.isLoading) {
880
+ return;
881
+ }
882
+ // Handle error state input
883
+ if (state.error) {
884
+ if (key.return || key.escape || input === '0') {
885
+ // Clear error and return to main menu
886
+ clearError();
887
+ exitToNavBar();
888
+ }
889
+ return; // Don't process other inputs in error state
890
+ }
891
+ // Handle dialog keyboard input (Level 3+)
892
+ if (dialogState.type !== null) {
893
+ if (key.escape) {
894
+ handleCloseDialog();
895
+ }
896
+ else if (input === '?') {
897
+ setDialogState({ type: 'help' });
898
+ }
899
+ return;
900
+ }
901
+ // Handle ESC hierarchically:
902
+ // Level 2 (right column) → Level 1 (left column)
903
+ // Level 1 (left column) → Exit tab (bubble to global handler)
904
+ if (key.escape) {
905
+ // Don't handle ESC if we're in a detail view (Level 3) - let child handle it
906
+ if (isInDetailView) {
907
+ return;
908
+ }
909
+ if (activeColumn === 'right') {
910
+ // Go back to left column
911
+ setActiveColumn('left');
912
+ return; // Don't bubble - we handled it
913
+ }
914
+ // If in left column, allow ESC to bubble to exit the tab
915
+ return;
916
+ }
917
+ // Show help overlay on '?' key
918
+ if (input === '?') {
919
+ setDialogState({ type: 'help' });
920
+ return;
921
+ }
922
+ // Handle navigation
923
+ if (key.upArrow) {
924
+ handleNavigateUp();
925
+ }
926
+ else if (key.downArrow) {
927
+ handleNavigateDown();
928
+ }
929
+ else if (key.leftArrow) {
930
+ handleNavigateLeft();
931
+ }
932
+ else if (key.rightArrow) {
933
+ handleNavigateRight();
934
+ }
935
+ else if (key.return) {
936
+ handleSelect();
937
+ }
938
+ else if (input === '0') {
939
+ // '0' still works as shortcut to exit
940
+ exitToNavBar();
941
+ }
942
+ else if (input === 'r' || input === 'R') {
943
+ // Restart server
944
+ if (selectedItem?.type === 'server' && selectedItem.server) {
945
+ const server = selectedItem.server;
946
+ setStatusMessage(`Restarting ${server.name}...`);
947
+ restartServer(server.name)
948
+ .then(() => {
949
+ setStatusMessage(`${server.name} restarted successfully`);
950
+ setTimeout(() => setStatusMessage(null), 3000);
951
+ })
952
+ .catch((err) => {
953
+ setStatusMessage(`Failed to restart: ${err instanceof Error ? err.message : 'Unknown error'}`);
954
+ setTimeout(() => setStatusMessage(null), 5000);
955
+ });
956
+ }
957
+ }
958
+ else if (input === 'c' || input === 'C') {
959
+ // Configure server
960
+ if (selectedItem?.type === 'server' && selectedItem.server) {
961
+ setDialogState({ type: 'configure', serverName: selectedItem.server.name });
962
+ }
963
+ }
964
+ else if (input === 'u' || input === 'U') {
965
+ // Uninstall server
966
+ if (selectedItem?.type === 'server' && selectedItem.server) {
967
+ setDialogState({ type: 'uninstall', serverName: selectedItem.server.name });
968
+ }
969
+ }
970
+ else if (input === 't' || input === 'T') {
971
+ // Open tools view for selected server
972
+ if (selectedItem?.type === 'server' && selectedItem.server) {
973
+ setServerDetailInitialView('tools');
974
+ setActiveColumn('right');
975
+ }
976
+ }
977
+ else if (input === 'l' || input === 'L') {
978
+ // View logs
979
+ if (selectedItem?.type === 'server' && selectedItem.server) {
980
+ setDialogState({ type: 'logs', serverName: selectedItem.server.name });
981
+ }
982
+ }
983
+ else if (input === 'o' || input === 'O') {
984
+ // OAuth configuration
985
+ if (selectedItem?.type === 'server' && selectedItem.server) {
986
+ setDialogState({ type: 'oauth', serverName: selectedItem.server.name });
987
+ }
988
+ }
989
+ else if (input === 'h' || input === 'H') {
990
+ setDialogState({ type: 'health' });
991
+ }
992
+ }, { isActive: hasFocus });
993
+ // Note: Removed full-screen loading check - loading state now shown in left column
994
+ // This allows marketplace to remain accessible during server loading
995
+ // Error state with back navigation
996
+ if (state.error) {
997
+ return (_jsxs(Box, { flexDirection: "column", padding: 2, children: [_jsx(ErrorBanner, { message: state.error }), _jsxs(Box, { marginTop: 2, children: [_jsx(Text, { bold: true, color: uiState.theme.text.accent, children: "\u25B6 \u2190 Back" }), _jsx(Text, { dimColor: true, children: " - Press " }), _jsx(Text, { bold: true, color: "cyan", children: "Enter, Esc or 0" }), _jsx(Text, { dimColor: true, children: " to return to main menu" })] })] }));
998
+ }
999
+ return (_jsxs(Box, { flexDirection: "column", height: height ?? '100%', width: windowWidth, children: [_jsx(Box, { borderStyle: "single", borderColor: hasFocus ? uiState.theme.text.accent : uiState.theme.text.secondary, paddingX: 1, flexShrink: 0, children: _jsxs(Box, { justifyContent: "space-between", width: "100%", overflow: "hidden", children: [_jsx(Box, { flexShrink: 0, children: _jsx(Text, { bold: true, color: hasFocus ? uiState.theme.text.accent : uiState.theme.text.primary, children: "\uD83D\uDD0C MCP Servers" }) }), _jsx(Box, { flexShrink: 1, marginLeft: 1, children: _jsx(Text, { wrap: "truncate-end", color: hasFocus ? uiState.theme.text.primary : uiState.theme.text.secondary, children: "\u2191\u2193:Nav \u2190\u2192:Column Enter:Select 0/Esc:Exit" }) })] }) }), dialogState.type === null && (_jsxs(Box, { flexGrow: 1, overflow: "hidden", flexDirection: "row", width: "100%", children: [_jsxs(Box, { flexDirection: "column", width: absoluteLeftWidth ?? '30%', height: "100%", flexShrink: 0, borderStyle: "single", borderColor: hasFocus && activeColumn === 'left'
1000
+ ? uiState.theme.text.accent
1001
+ : uiState.theme.border.primary, paddingY: 1, children: [scrollOffset > 0 && (_jsxs(_Fragment, { children: [_jsx(Box, { justifyContent: "center", paddingX: 1, children: _jsx(Text, { color: uiState.theme.text.accent, bold: true, children: "\u25B2 More above" }) }), _jsx(Text, { children: " " })] })), _jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingX: 1, children: [visibleItems.map((item, index) => {
1002
+ const actualIndex = scrollOffset + index;
1003
+ const isSelected = hasFocus && activeColumn === 'left' && actualIndex === selectedIndex;
1004
+ // Render Exit item
1005
+ if (item.type === 'exit') {
1006
+ return (_jsx(Box, { flexDirection: "column", children: _jsxs(Text, { bold: isSelected, color: isSelected ? uiState.theme.text.accent : uiState.theme.text.primary, children: [item.icon, " ", item.label] }) }, "exit"));
1007
+ }
1008
+ // Render Marketplace item
1009
+ if (item.type === 'marketplace') {
1010
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { children: " " }), _jsx(Text, { children: " " }), _jsxs(Text, { bold: isSelected, color: isSelected ? 'yellow' : 'cyan', children: [item.icon, " ", item.label] })] }, "marketplace"));
1011
+ }
1012
+ return null;
1013
+ }), _jsx(Text, { children: " " }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, color: uiState.theme.text.accent, children: "\uD83D\uDCE6 Installed Servers" }), _jsx(Text, { children: " " }), state.isLoading && (_jsx(Box, { paddingLeft: 2, flexDirection: "column", children: _jsx(LoadingSpinner, { message: "Loading MCP servers...", spinnerType: "dots", color: "cyan", centered: false, padded: false }) })), !state.isLoading &&
1014
+ visibleItems.filter((item) => item.type === 'server').length === 0 ? (_jsx(Text, { dimColor: true, children: " No servers installed" })) : !state.isLoading ? (visibleItems.map((item, index) => {
1015
+ const actualIndex = scrollOffset + index;
1016
+ const isSelected = hasFocus && activeColumn === 'left' && actualIndex === selectedIndex;
1017
+ // Render Server item
1018
+ if (item.type === 'server' && item.server) {
1019
+ const phase = item.server.phase || 'stopped';
1020
+ const isDisabled = item.server.config.disabled;
1021
+ // Determine icon color based on phase
1022
+ let iconColor = 'gray';
1023
+ if (!isDisabled) {
1024
+ if (phase === 'connected') {
1025
+ iconColor = 'green';
1026
+ }
1027
+ else if (phase === 'starting' ||
1028
+ phase === 'connecting' ||
1029
+ phase === 'health-check') {
1030
+ iconColor = 'yellow';
1031
+ }
1032
+ else if (phase === 'unhealthy' || phase === 'error') {
1033
+ iconColor = 'red';
1034
+ }
1035
+ }
1036
+ // Determine status text and color based on phase
1037
+ let statusText = '○ Stopped';
1038
+ let statusColor = 'gray';
1039
+ if (isDisabled) {
1040
+ statusText = '○ Disabled';
1041
+ statusColor = 'gray';
1042
+ }
1043
+ else {
1044
+ switch (phase) {
1045
+ case 'starting':
1046
+ statusText = '⟳ Starting...';
1047
+ statusColor = 'yellow';
1048
+ break;
1049
+ case 'connecting':
1050
+ statusText = '⟳ Connecting...';
1051
+ statusColor = 'yellow';
1052
+ break;
1053
+ case 'health-check':
1054
+ statusText = '⟳ Checking health...';
1055
+ statusColor = 'yellow';
1056
+ break;
1057
+ case 'connected':
1058
+ statusText = '✓ Connected';
1059
+ statusColor = 'green';
1060
+ break;
1061
+ case 'unhealthy':
1062
+ statusText = '✗ Unhealthy';
1063
+ statusColor = 'red';
1064
+ break;
1065
+ case 'error':
1066
+ statusText = '✗ Connection failed';
1067
+ statusColor = 'red';
1068
+ break;
1069
+ default:
1070
+ statusText = '○ Stopped';
1071
+ statusColor = 'gray';
1072
+ }
1073
+ }
1074
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { bold: isSelected, color: isSelected
1075
+ ? uiState.theme.text.accent
1076
+ : isDisabled
1077
+ ? 'gray'
1078
+ : uiState.theme.text.primary, dimColor: isDisabled, children: [_jsx(Text, { color: iconColor, children: item.icon }), " ", item.label] }), _jsx(Box, { paddingLeft: 2, children: _jsx(Text, { dimColor: isDisabled, color: statusColor, children: statusText }) }), _jsx(Text, { children: " " })] }, item.server.name));
1079
+ }
1080
+ return null;
1081
+ })) : null] }), scrollOffset + windowSize < menuItems.length && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Box, { justifyContent: "center", paddingX: 1, children: _jsx(Text, { color: uiState.theme.text.accent, bold: true, children: "\u25BC More below" }) })] })), systemMessages.length > 0 && (_jsx(Box, { flexShrink: 0, marginTop: 1, children: _jsx(SystemMessages, { messages: systemMessages, onDismiss: (id) => {
1082
+ setSystemMessages((prev) => prev.filter((m) => m.id !== id));
1083
+ }, isActive: hasFocus && activeColumn === 'left' }) }))] }), _jsxs(Box, { flexDirection: "column", width: absoluteRightWidth ?? '70%', height: "100%", borderStyle: "single", borderColor: hasFocus && activeColumn === 'right'
1084
+ ? uiState.theme.text.accent
1085
+ : uiState.theme.border.primary, flexShrink: 0, paddingX: 1, paddingY: 1, children: [_jsx(Box, { flexShrink: 0, marginBottom: 1, borderStyle: "round", borderColor: "yellow", paddingX: 1, children: _jsx(Text, { color: "yellow", bold: true, children: "\u26A0\uFE0F MCP Servers are in pre-alpha stage - not fully implemented" }) }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, overflow: "hidden", children: [(!selectedItem || selectedItem?.type === 'exit') && (_jsxs(Box, { flexDirection: "column", width: "100%", overflow: "hidden", children: [_jsx(Text, {}), _jsx(Text, {}), _jsx(Text, {}), _jsx(Text, {}), _jsx(Text, { bold: true, color: uiState.theme.text.accent, wrap: "truncate-end", children: "\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550" }), _jsx(Text, {}), _jsx(Text, { bold: true, color: uiState.theme.text.accent, children: "MCP Registry - Marketplace" }), _jsx(Text, {}), _jsx(Text, { wrap: "wrap", children: "The MCP registry provides MCP clients with a list of MCP servers." }), _jsx(Text, {}), _jsx(Text, {}), _jsx(Text, { bold: true, color: uiState.theme.text.accent, children: "OLLM CLI use Official Open Source MCP Registry" }), _jsx(Text, {}), _jsx(Text, { wrap: "wrap", children: "MCP Registry: https://registry.modelcontextprotocol.io/" }), _jsx(Text, { wrap: "wrap", children: "MCP Registry Documentation: https://registry.modelcontextprotocol.io/docs" }), _jsx(Text, {}), _jsx(Text, {}), _jsx(Text, { color: uiState.theme.text.secondary, wrap: "truncate-end", children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }), _jsx(Text, {}), _jsx(Text, { bold: true, children: "Documentation:" }), _jsx(Text, {}), _jsxs(Text, { wrap: "wrap", children: ["\uD83D\uDCC4 ", _jsx(Text, { color: uiState.theme.text.accent, children: "Public-facing docs" }), " - Published on modelcontextprotocol.io"] }), _jsx(Text, {}), _jsxs(Text, { wrap: "wrap", children: ["\uD83C\uDFD7\uFE0F ", _jsx(Text, { color: uiState.theme.text.accent, children: "Design documentation" }), " - Architecture, vision, and roadmap"] }), _jsx(Text, {}), _jsxs(Text, { wrap: "wrap", children: ["\uD83D\uDCD6 ", _jsx(Text, { color: uiState.theme.text.accent, children: "Reference" }), " - Technical specifications"] }), _jsx(Text, {}), _jsxs(Text, { wrap: "wrap", children: ["\uD83D\uDD27 ", _jsx(Text, { color: uiState.theme.text.accent, children: "Contributing guides" }), " - How to contribute"] }), _jsx(Text, {}), _jsxs(Text, { wrap: "wrap", children: ["\uD83D\uDD12 ", _jsx(Text, { color: uiState.theme.text.accent, children: "Administration" }), " - Admin operations"] }), _jsx(Text, {}), _jsx(Text, { color: uiState.theme.text.secondary, wrap: "truncate-end", children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }), _jsx(Text, {}), _jsx(Text, { color: uiState.theme.text.secondary, dimColor: true, wrap: "wrap", children: "Press Enter to browse marketplace or \u2191\u2193 to navigate" }), _jsx(Text, {}), _jsx(Text, { bold: true, color: uiState.theme.text.accent, wrap: "truncate-end", children: "\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550" })] })), selectedItem?.type === 'marketplace' && (_jsx(MarketplaceContent, { activeColumn: activeColumn, height: terminalHeight, onRefreshServers: refreshServers, onDetailViewChange: handleDetailViewChange })), selectedItem?.type === 'server' && selectedItem.server && (_jsx(ServerDetailsContent, { server: selectedItem.server, activeColumn: activeColumn, initialView: serverDetailInitialView, onToggle: async () => {
1086
+ // Toggle server enabled/disabled in settings
1087
+ try {
1088
+ await toggleServer(selectedItem.server.name);
1089
+ }
1090
+ catch (err) {
1091
+ // Error is already set in MCPContext state, just log it
1092
+ console.error('Toggle failed:', err);
1093
+ }
1094
+ }, onDelete: async () => {
1095
+ // Permanently delete server from settings
1096
+ await uninstallServer(selectedItem.server.name);
1097
+ }, onRefreshServers: refreshServers })), !selectedItem && (_jsx(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", height: "100%", children: _jsx(Text, { color: uiState.theme.text.secondary, dimColor: true, children: "\uD83D\uDC46 Select an item to view details" }) }))] }), (statusMessage || state.operationsInProgress.size > 0) && (_jsx(Box, { flexShrink: 0, marginTop: 1, paddingX: 1, borderStyle: "single", borderColor: uiState.theme.border.primary, children: statusMessage ? (_jsx(Text, { color: uiState.theme.text.primary, children: statusMessage })) : (_jsx(Text, { color: uiState.theme.text.secondary, children: Array.from(state.operationsInProgress.entries())
1098
+ .map(([name, op]) => `${name}: ${op}...`)
1099
+ .join(' | ') })) }))] })] })), dialogState.type !== null && renderDialog()] }));
1100
+ }
1101
+ //# sourceMappingURL=MCPTab.js.map