mistagent 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +14 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/src/api/auth.d.ts +7 -0
  6. package/dist/src/api/auth.d.ts.map +1 -0
  7. package/dist/src/api/auth.js +16 -0
  8. package/dist/src/api/auth.js.map +1 -0
  9. package/dist/src/api/chat.d.ts +8 -0
  10. package/dist/src/api/chat.d.ts.map +1 -0
  11. package/dist/src/api/chat.js +14 -0
  12. package/dist/src/api/chat.js.map +1 -0
  13. package/dist/src/api/client.d.ts +22 -0
  14. package/dist/src/api/client.d.ts.map +1 -0
  15. package/dist/src/api/client.js +140 -0
  16. package/dist/src/api/client.js.map +1 -0
  17. package/dist/src/api/commands.d.ts +8 -0
  18. package/dist/src/api/commands.d.ts.map +1 -0
  19. package/dist/src/api/commands.js +13 -0
  20. package/dist/src/api/commands.js.map +1 -0
  21. package/dist/src/api/models.d.ts +9 -0
  22. package/dist/src/api/models.d.ts.map +1 -0
  23. package/dist/src/api/models.js +13 -0
  24. package/dist/src/api/models.js.map +1 -0
  25. package/dist/src/api/sessions.d.ts +25 -0
  26. package/dist/src/api/sessions.d.ts.map +1 -0
  27. package/dist/src/api/sessions.js +26 -0
  28. package/dist/src/api/sessions.js.map +1 -0
  29. package/dist/src/api/tools.d.ts +7 -0
  30. package/dist/src/api/tools.d.ts.map +1 -0
  31. package/dist/src/api/tools.js +8 -0
  32. package/dist/src/api/tools.js.map +1 -0
  33. package/dist/src/components/App.d.ts +22 -0
  34. package/dist/src/components/App.d.ts.map +1 -0
  35. package/dist/src/components/App.js +61 -0
  36. package/dist/src/components/App.js.map +1 -0
  37. package/dist/src/components/AppLayout.d.ts +8 -0
  38. package/dist/src/components/AppLayout.d.ts.map +1 -0
  39. package/dist/src/components/AppLayout.js +18 -0
  40. package/dist/src/components/AppLayout.js.map +1 -0
  41. package/dist/src/components/Composer.d.ts +8 -0
  42. package/dist/src/components/Composer.d.ts.map +1 -0
  43. package/dist/src/components/Composer.js +294 -0
  44. package/dist/src/components/Composer.js.map +1 -0
  45. package/dist/src/components/Footer.d.ts +10 -0
  46. package/dist/src/components/Footer.d.ts.map +1 -0
  47. package/dist/src/components/Footer.js +34 -0
  48. package/dist/src/components/Footer.js.map +1 -0
  49. package/dist/src/components/Header.d.ts +3 -0
  50. package/dist/src/components/Header.d.ts.map +1 -0
  51. package/dist/src/components/Header.js +99 -0
  52. package/dist/src/components/Header.js.map +1 -0
  53. package/dist/src/components/HistoryItemDisplay.d.ts +8 -0
  54. package/dist/src/components/HistoryItemDisplay.d.ts.map +1 -0
  55. package/dist/src/components/HistoryItemDisplay.js +32 -0
  56. package/dist/src/components/HistoryItemDisplay.js.map +1 -0
  57. package/dist/src/components/InputPrompt.d.ts +11 -0
  58. package/dist/src/components/InputPrompt.d.ts.map +1 -0
  59. package/dist/src/components/InputPrompt.js +12 -0
  60. package/dist/src/components/InputPrompt.js.map +1 -0
  61. package/dist/src/components/LoadingIndicator.d.ts +8 -0
  62. package/dist/src/components/LoadingIndicator.d.ts.map +1 -0
  63. package/dist/src/components/LoadingIndicator.js +17 -0
  64. package/dist/src/components/LoadingIndicator.js.map +1 -0
  65. package/dist/src/components/LoginPrompt.d.ts +8 -0
  66. package/dist/src/components/LoginPrompt.d.ts.map +1 -0
  67. package/dist/src/components/LoginPrompt.js +76 -0
  68. package/dist/src/components/LoginPrompt.js.map +1 -0
  69. package/dist/src/components/MainContent.d.ts +3 -0
  70. package/dist/src/components/MainContent.d.ts.map +1 -0
  71. package/dist/src/components/MainContent.js +22 -0
  72. package/dist/src/components/MainContent.js.map +1 -0
  73. package/dist/src/components/ModelPicker.d.ts +3 -0
  74. package/dist/src/components/ModelPicker.d.ts.map +1 -0
  75. package/dist/src/components/ModelPicker.js +119 -0
  76. package/dist/src/components/ModelPicker.js.map +1 -0
  77. package/dist/src/components/MultiLineInput.d.ts +19 -0
  78. package/dist/src/components/MultiLineInput.d.ts.map +1 -0
  79. package/dist/src/components/MultiLineInput.js +108 -0
  80. package/dist/src/components/MultiLineInput.js.map +1 -0
  81. package/dist/src/components/SessionPicker.d.ts +3 -0
  82. package/dist/src/components/SessionPicker.d.ts.map +1 -0
  83. package/dist/src/components/SessionPicker.js +131 -0
  84. package/dist/src/components/SessionPicker.js.map +1 -0
  85. package/dist/src/components/SuggestionsDisplay.d.ts +16 -0
  86. package/dist/src/components/SuggestionsDisplay.d.ts.map +1 -0
  87. package/dist/src/components/SuggestionsDisplay.js +34 -0
  88. package/dist/src/components/SuggestionsDisplay.js.map +1 -0
  89. package/dist/src/components/messages/AssistantMessage.d.ts +8 -0
  90. package/dist/src/components/messages/AssistantMessage.d.ts.map +1 -0
  91. package/dist/src/components/messages/AssistantMessage.js +9 -0
  92. package/dist/src/components/messages/AssistantMessage.js.map +1 -0
  93. package/dist/src/components/messages/CommandResult.d.ts +8 -0
  94. package/dist/src/components/messages/CommandResult.d.ts.map +1 -0
  95. package/dist/src/components/messages/CommandResult.js +7 -0
  96. package/dist/src/components/messages/CommandResult.js.map +1 -0
  97. package/dist/src/components/messages/ErrorMessage.d.ts +7 -0
  98. package/dist/src/components/messages/ErrorMessage.d.ts.map +1 -0
  99. package/dist/src/components/messages/ErrorMessage.js +7 -0
  100. package/dist/src/components/messages/ErrorMessage.js.map +1 -0
  101. package/dist/src/components/messages/InfoMessage.d.ts +9 -0
  102. package/dist/src/components/messages/InfoMessage.d.ts.map +1 -0
  103. package/dist/src/components/messages/InfoMessage.js +8 -0
  104. package/dist/src/components/messages/InfoMessage.js.map +1 -0
  105. package/dist/src/components/messages/ModelMessage.d.ts +8 -0
  106. package/dist/src/components/messages/ModelMessage.d.ts.map +1 -0
  107. package/dist/src/components/messages/ModelMessage.js +7 -0
  108. package/dist/src/components/messages/ModelMessage.js.map +1 -0
  109. package/dist/src/components/messages/SessionMessage.d.ts +8 -0
  110. package/dist/src/components/messages/SessionMessage.d.ts.map +1 -0
  111. package/dist/src/components/messages/SessionMessage.js +12 -0
  112. package/dist/src/components/messages/SessionMessage.js.map +1 -0
  113. package/dist/src/components/messages/ToolCallMessage.d.ts +9 -0
  114. package/dist/src/components/messages/ToolCallMessage.d.ts.map +1 -0
  115. package/dist/src/components/messages/ToolCallMessage.js +14 -0
  116. package/dist/src/components/messages/ToolCallMessage.js.map +1 -0
  117. package/dist/src/components/messages/UserMessage.d.ts +7 -0
  118. package/dist/src/components/messages/UserMessage.d.ts.map +1 -0
  119. package/dist/src/components/messages/UserMessage.js +9 -0
  120. package/dist/src/components/messages/UserMessage.js.map +1 -0
  121. package/dist/src/components/shared/HorizontalLine.d.ts +11 -0
  122. package/dist/src/components/shared/HorizontalLine.d.ts.map +1 -0
  123. package/dist/src/components/shared/HorizontalLine.js +10 -0
  124. package/dist/src/components/shared/HorizontalLine.js.map +1 -0
  125. package/dist/src/components/shared/MarkdownRenderer.d.ts +7 -0
  126. package/dist/src/components/shared/MarkdownRenderer.d.ts.map +1 -0
  127. package/dist/src/components/shared/MarkdownRenderer.js +33 -0
  128. package/dist/src/components/shared/MarkdownRenderer.js.map +1 -0
  129. package/dist/src/components/shared/Spinner.d.ts +8 -0
  130. package/dist/src/components/shared/Spinner.d.ts.map +1 -0
  131. package/dist/src/components/shared/Spinner.js +7 -0
  132. package/dist/src/components/shared/Spinner.js.map +1 -0
  133. package/dist/src/components/shared/TextInput.d.ts +10 -0
  134. package/dist/src/components/shared/TextInput.d.ts.map +1 -0
  135. package/dist/src/components/shared/TextInput.js +110 -0
  136. package/dist/src/components/shared/TextInput.js.map +1 -0
  137. package/dist/src/contexts/AppContext.d.ts +21 -0
  138. package/dist/src/contexts/AppContext.d.ts.map +1 -0
  139. package/dist/src/contexts/AppContext.js +16 -0
  140. package/dist/src/contexts/AppContext.js.map +1 -0
  141. package/dist/src/contexts/ChatContext.d.ts +68 -0
  142. package/dist/src/contexts/ChatContext.d.ts.map +1 -0
  143. package/dist/src/contexts/ChatContext.js +158 -0
  144. package/dist/src/contexts/ChatContext.js.map +1 -0
  145. package/dist/src/contexts/KeypressContext.d.ts +47 -0
  146. package/dist/src/contexts/KeypressContext.d.ts.map +1 -0
  147. package/dist/src/contexts/KeypressContext.js +792 -0
  148. package/dist/src/contexts/KeypressContext.js.map +1 -0
  149. package/dist/src/contexts/ModelContext.d.ts +20 -0
  150. package/dist/src/contexts/ModelContext.d.ts.map +1 -0
  151. package/dist/src/contexts/ModelContext.js +42 -0
  152. package/dist/src/contexts/ModelContext.js.map +1 -0
  153. package/dist/src/contexts/PasteContext.d.ts +8 -0
  154. package/dist/src/contexts/PasteContext.d.ts.map +1 -0
  155. package/dist/src/contexts/PasteContext.js +12 -0
  156. package/dist/src/contexts/PasteContext.js.map +1 -0
  157. package/dist/src/contexts/SessionContext.d.ts +19 -0
  158. package/dist/src/contexts/SessionContext.d.ts.map +1 -0
  159. package/dist/src/contexts/SessionContext.js +56 -0
  160. package/dist/src/contexts/SessionContext.js.map +1 -0
  161. package/dist/src/contexts/UIContext.d.ts +15 -0
  162. package/dist/src/contexts/UIContext.d.ts.map +1 -0
  163. package/dist/src/contexts/UIContext.js +16 -0
  164. package/dist/src/contexts/UIContext.js.map +1 -0
  165. package/dist/src/hooks/useChat.d.ts +11 -0
  166. package/dist/src/hooks/useChat.d.ts.map +1 -0
  167. package/dist/src/hooks/useChat.js +146 -0
  168. package/dist/src/hooks/useChat.js.map +1 -0
  169. package/dist/src/hooks/useFileCompletion.d.ts +8 -0
  170. package/dist/src/hooks/useFileCompletion.d.ts.map +1 -0
  171. package/dist/src/hooks/useFileCompletion.js +75 -0
  172. package/dist/src/hooks/useFileCompletion.js.map +1 -0
  173. package/dist/src/hooks/useInputHistory.d.ts +6 -0
  174. package/dist/src/hooks/useInputHistory.d.ts.map +1 -0
  175. package/dist/src/hooks/useInputHistory.js +46 -0
  176. package/dist/src/hooks/useInputHistory.js.map +1 -0
  177. package/dist/src/hooks/useKeypress.d.ts +16 -0
  178. package/dist/src/hooks/useKeypress.d.ts.map +1 -0
  179. package/dist/src/hooks/useKeypress.js +23 -0
  180. package/dist/src/hooks/useKeypress.js.map +1 -0
  181. package/dist/src/hooks/useLoadingIndicator.d.ts +5 -0
  182. package/dist/src/hooks/useLoadingIndicator.d.ts.map +1 -0
  183. package/dist/src/hooks/useLoadingIndicator.js +31 -0
  184. package/dist/src/hooks/useLoadingIndicator.js.map +1 -0
  185. package/dist/src/hooks/useMultiLineInput.d.ts +37 -0
  186. package/dist/src/hooks/useMultiLineInput.d.ts.map +1 -0
  187. package/dist/src/hooks/useMultiLineInput.js +202 -0
  188. package/dist/src/hooks/useMultiLineInput.js.map +1 -0
  189. package/dist/src/hooks/usePasteBuffer.d.ts +10 -0
  190. package/dist/src/hooks/usePasteBuffer.d.ts.map +1 -0
  191. package/dist/src/hooks/usePasteBuffer.js +90 -0
  192. package/dist/src/hooks/usePasteBuffer.js.map +1 -0
  193. package/dist/src/hooks/useSlashCommand.d.ts +6 -0
  194. package/dist/src/hooks/useSlashCommand.d.ts.map +1 -0
  195. package/dist/src/hooks/useSlashCommand.js +198 -0
  196. package/dist/src/hooks/useSlashCommand.js.map +1 -0
  197. package/dist/src/hooks/useStdinInterceptor.d.ts +2 -0
  198. package/dist/src/hooks/useStdinInterceptor.d.ts.map +1 -0
  199. package/dist/src/hooks/useStdinInterceptor.js +85 -0
  200. package/dist/src/hooks/useStdinInterceptor.js.map +1 -0
  201. package/dist/src/hooks/useSymbolCompletion.d.ts +10 -0
  202. package/dist/src/hooks/useSymbolCompletion.d.ts.map +1 -0
  203. package/dist/src/hooks/useSymbolCompletion.js +65 -0
  204. package/dist/src/hooks/useSymbolCompletion.js.map +1 -0
  205. package/dist/src/hooks/useTextBuffer.d.ts +37 -0
  206. package/dist/src/hooks/useTextBuffer.d.ts.map +1 -0
  207. package/dist/src/hooks/useTextBuffer.js +627 -0
  208. package/dist/src/hooks/useTextBuffer.js.map +1 -0
  209. package/dist/src/main.d.ts +2 -0
  210. package/dist/src/main.d.ts.map +1 -0
  211. package/dist/src/main.js +152 -0
  212. package/dist/src/main.js.map +1 -0
  213. package/dist/src/tools/code-analyzer/config/ignore-service.d.ts +2 -0
  214. package/dist/src/tools/code-analyzer/config/ignore-service.d.ts.map +1 -0
  215. package/dist/src/tools/code-analyzer/config/ignore-service.js +209 -0
  216. package/dist/src/tools/code-analyzer/config/ignore-service.js.map +1 -0
  217. package/dist/src/tools/code-analyzer/config/supported-languages.d.ts +13 -0
  218. package/dist/src/tools/code-analyzer/config/supported-languages.d.ts.map +1 -0
  219. package/dist/src/tools/code-analyzer/config/supported-languages.js +17 -0
  220. package/dist/src/tools/code-analyzer/config/supported-languages.js.map +1 -0
  221. package/dist/src/tools/code-analyzer/core/graph/graph.d.ts +3 -0
  222. package/dist/src/tools/code-analyzer/core/graph/graph.d.ts.map +1 -0
  223. package/dist/src/tools/code-analyzer/core/graph/graph.js +67 -0
  224. package/dist/src/tools/code-analyzer/core/graph/graph.js.map +1 -0
  225. package/dist/src/tools/code-analyzer/core/graph/types.d.ts +62 -0
  226. package/dist/src/tools/code-analyzer/core/graph/types.d.ts.map +1 -0
  227. package/dist/src/tools/code-analyzer/core/graph/types.js +2 -0
  228. package/dist/src/tools/code-analyzer/core/graph/types.js.map +1 -0
  229. package/dist/src/tools/code-analyzer/core/ingestion/ast-cache.d.ts +12 -0
  230. package/dist/src/tools/code-analyzer/core/ingestion/ast-cache.d.ts.map +1 -0
  231. package/dist/src/tools/code-analyzer/core/ingestion/ast-cache.js +35 -0
  232. package/dist/src/tools/code-analyzer/core/ingestion/ast-cache.js.map +1 -0
  233. package/dist/src/tools/code-analyzer/core/ingestion/call-processor.d.ts +16 -0
  234. package/dist/src/tools/code-analyzer/core/ingestion/call-processor.d.ts.map +1 -0
  235. package/dist/src/tools/code-analyzer/core/ingestion/call-processor.js +328 -0
  236. package/dist/src/tools/code-analyzer/core/ingestion/call-processor.js.map +1 -0
  237. package/dist/src/tools/code-analyzer/core/ingestion/community-processor.d.ts +40 -0
  238. package/dist/src/tools/code-analyzer/core/ingestion/community-processor.d.ts.map +1 -0
  239. package/dist/src/tools/code-analyzer/core/ingestion/community-processor.js +328 -0
  240. package/dist/src/tools/code-analyzer/core/ingestion/community-processor.js.map +1 -0
  241. package/dist/src/tools/code-analyzer/core/ingestion/entry-point-scoring.d.ts +40 -0
  242. package/dist/src/tools/code-analyzer/core/ingestion/entry-point-scoring.d.ts.map +1 -0
  243. package/dist/src/tools/code-analyzer/core/ingestion/entry-point-scoring.js +236 -0
  244. package/dist/src/tools/code-analyzer/core/ingestion/entry-point-scoring.js.map +1 -0
  245. package/dist/src/tools/code-analyzer/core/ingestion/filesystem-walker.d.ts +29 -0
  246. package/dist/src/tools/code-analyzer/core/ingestion/filesystem-walker.d.ts.map +1 -0
  247. package/dist/src/tools/code-analyzer/core/ingestion/filesystem-walker.js +81 -0
  248. package/dist/src/tools/code-analyzer/core/ingestion/filesystem-walker.js.map +1 -0
  249. package/dist/src/tools/code-analyzer/core/ingestion/framework-detection.d.ts +39 -0
  250. package/dist/src/tools/code-analyzer/core/ingestion/framework-detection.d.ts.map +1 -0
  251. package/dist/src/tools/code-analyzer/core/ingestion/framework-detection.js +184 -0
  252. package/dist/src/tools/code-analyzer/core/ingestion/framework-detection.js.map +1 -0
  253. package/dist/src/tools/code-analyzer/core/ingestion/heritage-processor.d.ts +21 -0
  254. package/dist/src/tools/code-analyzer/core/ingestion/heritage-processor.d.ts.map +1 -0
  255. package/dist/src/tools/code-analyzer/core/ingestion/heritage-processor.js +198 -0
  256. package/dist/src/tools/code-analyzer/core/ingestion/heritage-processor.js.map +1 -0
  257. package/dist/src/tools/code-analyzer/core/ingestion/import-processor.d.ts +39 -0
  258. package/dist/src/tools/code-analyzer/core/ingestion/import-processor.d.ts.map +1 -0
  259. package/dist/src/tools/code-analyzer/core/ingestion/import-processor.js +791 -0
  260. package/dist/src/tools/code-analyzer/core/ingestion/import-processor.js.map +1 -0
  261. package/dist/src/tools/code-analyzer/core/ingestion/parsing-processor.d.ts +16 -0
  262. package/dist/src/tools/code-analyzer/core/ingestion/parsing-processor.d.ts.map +1 -0
  263. package/dist/src/tools/code-analyzer/core/ingestion/parsing-processor.js +296 -0
  264. package/dist/src/tools/code-analyzer/core/ingestion/parsing-processor.js.map +1 -0
  265. package/dist/src/tools/code-analyzer/core/ingestion/pipeline.d.ts +3 -0
  266. package/dist/src/tools/code-analyzer/core/ingestion/pipeline.d.ts.map +1 -0
  267. package/dist/src/tools/code-analyzer/core/ingestion/pipeline.js +309 -0
  268. package/dist/src/tools/code-analyzer/core/ingestion/pipeline.js.map +1 -0
  269. package/dist/src/tools/code-analyzer/core/ingestion/process-processor.d.ts +52 -0
  270. package/dist/src/tools/code-analyzer/core/ingestion/process-processor.d.ts.map +1 -0
  271. package/dist/src/tools/code-analyzer/core/ingestion/process-processor.js +310 -0
  272. package/dist/src/tools/code-analyzer/core/ingestion/process-processor.js.map +1 -0
  273. package/dist/src/tools/code-analyzer/core/ingestion/structure-processor.d.ts +3 -0
  274. package/dist/src/tools/code-analyzer/core/ingestion/structure-processor.d.ts.map +1 -0
  275. package/dist/src/tools/code-analyzer/core/ingestion/structure-processor.js +37 -0
  276. package/dist/src/tools/code-analyzer/core/ingestion/structure-processor.js.map +1 -0
  277. package/dist/src/tools/code-analyzer/core/ingestion/symbol-table.d.ts +34 -0
  278. package/dist/src/tools/code-analyzer/core/ingestion/symbol-table.d.ts.map +1 -0
  279. package/dist/src/tools/code-analyzer/core/ingestion/symbol-table.js +39 -0
  280. package/dist/src/tools/code-analyzer/core/ingestion/symbol-table.js.map +1 -0
  281. package/dist/src/tools/code-analyzer/core/ingestion/tree-sitter-queries.d.ts +13 -0
  282. package/dist/src/tools/code-analyzer/core/ingestion/tree-sitter-queries.d.ts.map +1 -0
  283. package/dist/src/tools/code-analyzer/core/ingestion/tree-sitter-queries.js +355 -0
  284. package/dist/src/tools/code-analyzer/core/ingestion/tree-sitter-queries.js.map +1 -0
  285. package/dist/src/tools/code-analyzer/core/ingestion/utils.d.ts +11 -0
  286. package/dist/src/tools/code-analyzer/core/ingestion/utils.d.ts.map +1 -0
  287. package/dist/src/tools/code-analyzer/core/ingestion/utils.js +48 -0
  288. package/dist/src/tools/code-analyzer/core/ingestion/utils.js.map +1 -0
  289. package/dist/src/tools/code-analyzer/core/ingestion/workers/parse-worker.d.ts +59 -0
  290. package/dist/src/tools/code-analyzer/core/ingestion/workers/parse-worker.d.ts.map +1 -0
  291. package/dist/src/tools/code-analyzer/core/ingestion/workers/parse-worker.js +538 -0
  292. package/dist/src/tools/code-analyzer/core/ingestion/workers/parse-worker.js.map +1 -0
  293. package/dist/src/tools/code-analyzer/core/ingestion/workers/worker-pool.d.ts +17 -0
  294. package/dist/src/tools/code-analyzer/core/ingestion/workers/worker-pool.d.ts.map +1 -0
  295. package/dist/src/tools/code-analyzer/core/ingestion/workers/worker-pool.js +121 -0
  296. package/dist/src/tools/code-analyzer/core/ingestion/workers/worker-pool.js.map +1 -0
  297. package/dist/src/tools/code-analyzer/core/tree-sitter/parser-loader.d.ts +5 -0
  298. package/dist/src/tools/code-analyzer/core/tree-sitter/parser-loader.d.ts.map +1 -0
  299. package/dist/src/tools/code-analyzer/core/tree-sitter/parser-loader.js +45 -0
  300. package/dist/src/tools/code-analyzer/core/tree-sitter/parser-loader.js.map +1 -0
  301. package/dist/src/tools/code-analyzer/index.d.ts +17 -0
  302. package/dist/src/tools/code-analyzer/index.d.ts.map +1 -0
  303. package/dist/src/tools/code-analyzer/index.js +15 -0
  304. package/dist/src/tools/code-analyzer/index.js.map +1 -0
  305. package/dist/src/tools/code-analyzer/lib/utils.d.ts +2 -0
  306. package/dist/src/tools/code-analyzer/lib/utils.d.ts.map +1 -0
  307. package/dist/src/tools/code-analyzer/lib/utils.js +4 -0
  308. package/dist/src/tools/code-analyzer/lib/utils.js.map +1 -0
  309. package/dist/src/tools/code-analyzer/types/pipeline.d.ts +33 -0
  310. package/dist/src/tools/code-analyzer/types/pipeline.d.ts.map +1 -0
  311. package/dist/src/tools/code-analyzer/types/pipeline.js +19 -0
  312. package/dist/src/tools/code-analyzer/types/pipeline.js.map +1 -0
  313. package/dist/src/types/api.d.ts +124 -0
  314. package/dist/src/types/api.d.ts.map +1 -0
  315. package/dist/src/types/api.js +3 -0
  316. package/dist/src/types/api.js.map +1 -0
  317. package/dist/src/types/history.d.ts +49 -0
  318. package/dist/src/types/history.d.ts.map +1 -0
  319. package/dist/src/types/history.js +10 -0
  320. package/dist/src/types/history.js.map +1 -0
  321. package/dist/src/utils/colors.d.ts +40 -0
  322. package/dist/src/utils/colors.d.ts.map +1 -0
  323. package/dist/src/utils/colors.js +48 -0
  324. package/dist/src/utils/colors.js.map +1 -0
  325. package/dist/src/utils/config.d.ts +13 -0
  326. package/dist/src/utils/config.d.ts.map +1 -0
  327. package/dist/src/utils/config.js +74 -0
  328. package/dist/src/utils/config.js.map +1 -0
  329. package/dist/src/utils/constants.d.ts +8 -0
  330. package/dist/src/utils/constants.d.ts.map +1 -0
  331. package/dist/src/utils/constants.js +48 -0
  332. package/dist/src/utils/constants.js.map +1 -0
  333. package/dist/src/utils/fileRef.d.ts +26 -0
  334. package/dist/src/utils/fileRef.d.ts.map +1 -0
  335. package/dist/src/utils/fileRef.js +305 -0
  336. package/dist/src/utils/fileRef.js.map +1 -0
  337. package/dist/src/utils/formatters.d.ts +4 -0
  338. package/dist/src/utils/formatters.d.ts.map +1 -0
  339. package/dist/src/utils/formatters.js +18 -0
  340. package/dist/src/utils/formatters.js.map +1 -0
  341. package/dist/src/utils/pasteTransform.d.ts +37 -0
  342. package/dist/src/utils/pasteTransform.d.ts.map +1 -0
  343. package/dist/src/utils/pasteTransform.js +161 -0
  344. package/dist/src/utils/pasteTransform.js.map +1 -0
  345. package/dist/src/utils/pasteUtils.d.ts +7 -0
  346. package/dist/src/utils/pasteUtils.d.ts.map +1 -0
  347. package/dist/src/utils/pasteUtils.js +33 -0
  348. package/dist/src/utils/pasteUtils.js.map +1 -0
  349. package/dist/src/utils/textUtils.d.ts +25 -0
  350. package/dist/src/utils/textUtils.d.ts.map +1 -0
  351. package/dist/src/utils/textUtils.js +107 -0
  352. package/dist/src/utils/textUtils.js.map +1 -0
  353. package/package.json +71 -0
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface LoginPromptProps {
3
+ onLogin: (username: string, password: string) => Promise<void>;
4
+ error?: string | null;
5
+ }
6
+ export declare const LoginPrompt: React.FC<LoginPromptProps>;
7
+ export {};
8
+ //# sourceMappingURL=LoginPrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginPrompt.d.ts","sourceRoot":"","sources":["../../../src/components/LoginPrompt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAYhE,UAAU,gBAAgB;IACxB,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AA2ED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAuIlD,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback, useEffect } from 'react';
3
+ import { Box, Text } from 'ink';
4
+ import { palette } from '../utils/colors.js';
5
+ import { BANNER_LINES, BANNER_GRADIENT, MASCOT_LINES, VERSION, } from '../utils/constants.js';
6
+ import { useKeypressContext, KeypressPriority } from '../contexts/KeypressContext.js';
7
+ // ── Spinner ──────────────────────────────────────────────
8
+ const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
9
+ const Spinner = ({ label }) => {
10
+ const [frame, setFrame] = useState(0);
11
+ useEffect(() => {
12
+ const id = setInterval(() => setFrame((f) => (f + 1) % SPINNER_FRAMES.length), 80);
13
+ return () => clearInterval(id);
14
+ }, []);
15
+ return (_jsxs(Text, { color: palette.primary, children: [SPINNER_FRAMES[frame], " ", _jsx(Text, { color: palette.textMuted, children: label })] }));
16
+ };
17
+ // ── SimpleInput ──────────────────────────────────────────
18
+ const SimpleInput = ({ value, onChange, onSubmit, mask, placeholder }) => {
19
+ const { subscribe, unsubscribe } = useKeypressContext();
20
+ const handler = useCallback((key) => {
21
+ if (key.name === 'return' && !key.shift) {
22
+ onSubmit(value);
23
+ return true;
24
+ }
25
+ if (key.name === 'backspace') {
26
+ onChange(value.slice(0, -1));
27
+ return true;
28
+ }
29
+ if (key.ctrl && key.name === 'u') {
30
+ onChange('');
31
+ return true;
32
+ }
33
+ if (key.insertable && key.sequence.length > 0 && !key.ctrl && !key.alt && !key.cmd) {
34
+ onChange(value + key.sequence);
35
+ return true;
36
+ }
37
+ return false;
38
+ }, [value, onChange, onSubmit]);
39
+ useEffect(() => {
40
+ subscribe(handler, KeypressPriority.High);
41
+ return () => unsubscribe(handler);
42
+ }, [handler, subscribe, unsubscribe]);
43
+ const display = mask ? mask.repeat(value.length) : value;
44
+ const showPlaceholder = value.length === 0 && placeholder;
45
+ return (_jsxs(Text, { children: [showPlaceholder ? (_jsx(Text, { color: palette.textDim, children: placeholder })) : (_jsx(Text, { children: display })), _jsx(Text, { inverse: true, color: palette.primary, children: ' ' })] }));
46
+ };
47
+ // ── LoginPrompt ──────────────────────────────────────────
48
+ export const LoginPrompt = ({ onLogin, error, }) => {
49
+ const [step, setStep] = useState('username');
50
+ const [username, setUsername] = useState('');
51
+ const [password, setPassword] = useState('');
52
+ const [isLoading, setIsLoading] = useState(false);
53
+ const handleUsernameSubmit = useCallback((val) => {
54
+ if (val.trim()) {
55
+ setUsername(val.trim());
56
+ setStep('password');
57
+ }
58
+ }, []);
59
+ const handlePasswordSubmit = useCallback(async (val) => {
60
+ if (val.trim()) {
61
+ setPassword(val.trim());
62
+ setIsLoading(true);
63
+ try {
64
+ await onLogin(username, val.trim());
65
+ }
66
+ catch {
67
+ setIsLoading(false);
68
+ setStep('username');
69
+ setUsername('');
70
+ setPassword('');
71
+ }
72
+ }
73
+ }, [onLogin, username]);
74
+ return (_jsxs(Box, { flexDirection: "column", alignItems: "center", padding: 1, children: [_jsxs(Box, { marginBottom: 1, gap: 2, children: [_jsxs(Box, { flexDirection: "column", children: [BANNER_LINES.map((line, i) => (_jsx(Text, { color: BANNER_GRADIENT[i] ?? BANNER_GRADIENT[0], children: line }, i))), _jsx(Text, { color: palette.textDim, children: ' Agent v' + VERSION })] }), _jsx(Box, { flexDirection: "column", justifyContent: "center", children: MASCOT_LINES.map((line, i) => (_jsx(Text, { color: BANNER_GRADIENT[Math.min(i, BANNER_GRADIENT.length - 1)], children: line }, i))) })] }), _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: error ? palette.error : palette.brand2, paddingX: 3, paddingY: 1, width: 44, children: [_jsx(Box, { justifyContent: "center", marginBottom: 1, children: _jsxs(Text, { color: palette.brand2, bold: true, children: ['🔐 ', "Authentication Required"] }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: palette.borderAccent, children: '─'.repeat(36) }) }), error && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: palette.error, bold: true, children: [' ✗ ', error] }) })), isLoading ? (_jsx(Box, { justifyContent: "center", paddingY: 1, children: _jsx(Spinner, { label: "Authenticating..." }) })) : step === 'username' ? (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: palette.primary, bold: true, children: ' ❯ ' }), _jsx(Text, { color: palette.textMuted, children: "Username " }), _jsx(SimpleInput, { value: username, onChange: setUsername, onSubmit: handleUsernameSubmit, placeholder: "enter username" })] }), _jsxs(Box, { children: [_jsx(Text, { color: palette.textDim, children: ' ○ ' }), _jsx(Text, { color: palette.textDim, children: "Password" })] })] })) : (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: palette.success, children: ' ✓ ' }), _jsx(Text, { color: palette.textDim, children: "Username " }), _jsx(Text, { children: username })] }), _jsxs(Box, { children: [_jsx(Text, { color: palette.primary, bold: true, children: ' ❯ ' }), _jsx(Text, { color: palette.textMuted, children: "Password " }), _jsx(SimpleInput, { value: password, onChange: setPassword, onSubmit: handlePasswordSubmit, mask: "\u2022", placeholder: "enter password" })] })] })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: palette.borderAccent, children: '─'.repeat(36) }) }), _jsx(Box, { justifyContent: "center", marginTop: 1, children: _jsxs(Text, { color: palette.textDim, dimColor: true, children: ["Press ", _jsx(Text, { color: palette.textMuted, children: "Enter" }), " to continue"] }) })] })] }));
75
+ };
76
+ //# sourceMappingURL=LoginPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginPrompt.js","sourceRoot":"","sources":["../../../src/components/LoginPrompt.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const MainContent: React.FC;
3
+ //# sourceMappingURL=MainContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MainContent.d.ts","sourceRoot":"","sources":["../../../src/components/MainContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAWvC,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAqC/B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { Static, Box } from 'ink';
4
+ import { useChatState, StreamingState } from '../contexts/ChatContext.js';
5
+ import { HistoryItemDisplay } from './HistoryItemDisplay.js';
6
+ import { AssistantMessage } from './messages/AssistantMessage.js';
7
+ import { Header } from './Header.js';
8
+ // Stable sentinel object — always the first item so <Static> renders
9
+ // the Header once, and subsequent history items are appended after it.
10
+ const HEADER_SENTINEL = { __header: true, id: '__header__' };
11
+ export const MainContent = () => {
12
+ const { history, pendingContent, streamingState, sessionVersion } = useChatState();
13
+ // Always keep the sentinel at index 0 so Static.length grows correctly.
14
+ const staticItems = useMemo(() => [HEADER_SENTINEL, ...history], [history]);
15
+ return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsx(Static, { items: staticItems, children: (item) => {
16
+ if ('__header' in item) {
17
+ return (_jsx(Box, { children: _jsx(Header, {}) }, "__header__"));
18
+ }
19
+ return (_jsx(Box, { paddingX: 1, children: _jsx(HistoryItemDisplay, { item: item }) }, item.id));
20
+ } }, sessionVersion), streamingState !== StreamingState.Idle && (_jsx(Box, { paddingX: 1, children: _jsx(AssistantMessage, { text: pendingContent, isPending: true }) }))] }));
21
+ };
22
+ //# sourceMappingURL=MainContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MainContent.js","sourceRoot":"","sources":["../../../src/components/MainContent.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qEAAqE;AACrE,uEAAuE;AACvE,MAAM,eAAe,GAAG,EAAE,QAAQ,EAAE,IAAa,EAAE,EAAE,EAAE,YAAY,EAAW,CAAC;AAE/E,MAAM,CAAC,MAAM,WAAW,GAAa,GAAG,EAAE;IACxC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CAAC;IAEnF,wEAAwE;IACxE,MAAM,WAAW,GAAG,OAAO,CACzB,GAAG,EAAE,CAAC,CAAC,eAAe,EAAE,GAAG,OAAO,CAAC,EACnC,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aAGrC,KAAC,MAAM,IAAsB,KAAK,EAAE,WAAW,YAC5C,CAAC,IAAI,EAAE,EAAE;oBACR,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;wBACvB,OAAO,CACL,KAAC,GAAG,cACF,KAAC,MAAM,KAAG,IADH,YAAY,CAEf,CACP,CAAC;oBACJ,CAAC;oBACD,OAAO,CACL,KAAC,GAAG,IAAe,QAAQ,EAAE,CAAC,YAC5B,KAAC,kBAAkB,IAAC,IAAI,EAAE,IAAI,GAAI,IAD1B,IAAI,CAAC,EAAE,CAEX,CACP,CAAC;gBACJ,CAAC,IAdU,cAAc,CAelB,EAER,cAAc,KAAK,cAAc,CAAC,IAAI,IAAI,CACzC,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,KAAC,gBAAgB,IAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,GAAI,GACvD,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const ModelPicker: React.FC;
3
+ //# sourceMappingURL=ModelPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelPicker.d.ts","sourceRoot":"","sources":["../../../src/components/ModelPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAWhE,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EA+N/B,CAAC"}
@@ -0,0 +1,119 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect, useCallback } from 'react';
3
+ import { Box, Text } from 'ink';
4
+ import { useUIActions, useUIState } from '../contexts/UIContext.js';
5
+ import { useModelState, useModelActions } from '../contexts/ModelContext.js';
6
+ import { useChatDispatch } from '../contexts/ChatContext.js';
7
+ import { useKeypress, KeypressPriority } from '../hooks/useKeypress.js';
8
+ import { palette } from '../utils/colors.js';
9
+ const MAX_VISIBLE = 10;
10
+ export const ModelPicker = () => {
11
+ const [activeIndex, setActiveIndex] = useState(0);
12
+ const [isSwitching, setIsSwitching] = useState(false);
13
+ const { terminalWidth } = useUIState();
14
+ const { closeDialog } = useUIActions();
15
+ const { models, currentModel } = useModelState();
16
+ const { switchModel, refreshModels } = useModelActions();
17
+ const dispatch = useChatDispatch();
18
+ // Refresh models on mount
19
+ useEffect(() => {
20
+ refreshModels();
21
+ }, [refreshModels]);
22
+ // Set initial active index to current model
23
+ useEffect(() => {
24
+ if (currentModel && models.length > 0) {
25
+ const idx = models.findIndex((m) => m.name === currentModel.model);
26
+ if (idx >= 0)
27
+ setActiveIndex(idx);
28
+ }
29
+ }, [models, currentModel]);
30
+ const handleSelect = async (model) => {
31
+ // If already current, just close
32
+ if (currentModel && model.name === currentModel.model) {
33
+ closeDialog();
34
+ return;
35
+ }
36
+ setIsSwitching(true);
37
+ try {
38
+ const provider = model.provider || currentModel?.provider || 'default';
39
+ await switchModel(provider, model.name);
40
+ dispatch({
41
+ type: 'ADD_ITEM',
42
+ item: {
43
+ type: 'model',
44
+ provider,
45
+ model: model.name,
46
+ },
47
+ });
48
+ }
49
+ catch (err) {
50
+ dispatch({
51
+ type: 'ADD_ITEM',
52
+ item: {
53
+ type: 'error',
54
+ text: `Failed to switch model: ${err instanceof Error ? err.message : String(err)}`,
55
+ },
56
+ });
57
+ }
58
+ finally {
59
+ setIsSwitching(false);
60
+ closeDialog();
61
+ }
62
+ };
63
+ const handleKeypress = useCallback((key) => {
64
+ if (isSwitching)
65
+ return true;
66
+ if (key.name === 'escape' || (key.ctrl && key.name === 'c')) {
67
+ closeDialog();
68
+ return true;
69
+ }
70
+ if (models.length === 0)
71
+ return true;
72
+ if (key.name === 'up') {
73
+ setActiveIndex((prev) => (prev <= 0 ? models.length - 1 : prev - 1));
74
+ return true;
75
+ }
76
+ if (key.name === 'down') {
77
+ setActiveIndex((prev) => (prev >= models.length - 1 ? 0 : prev + 1));
78
+ return true;
79
+ }
80
+ if (key.name === 'return') {
81
+ const selected = models[activeIndex];
82
+ if (selected) {
83
+ handleSelect(selected);
84
+ }
85
+ return true;
86
+ }
87
+ return true; // Consume all keys while dialog is open
88
+ }, [isSwitching, closeDialog, models, activeIndex, handleSelect]);
89
+ useKeypress(handleKeypress, { isActive: true, priority: KeypressPriority.High });
90
+ const boxWidth = Math.min(terminalWidth - 4, 70);
91
+ // No models available — show current model info
92
+ if (models.length === 0) {
93
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: palette.accent, paddingX: 2, paddingY: 1, width: boxWidth, children: [_jsx(Text, { color: palette.accent, bold: true, children: "Current Model" }), currentModel ? (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: palette.text, children: currentModel.model }), _jsxs(Text, { color: palette.textDim, children: [' ', "(", currentModel.provider, ")"] })] })) : (_jsx(Text, { color: palette.textMuted, children: "No model configured" })), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: palette.textDim, children: ["No other models available. Press ", _jsx(Text, { color: palette.primary, bold: true, children: "Esc" }), " to close"] }) })] }));
94
+ }
95
+ // Scroll window
96
+ const visibleCount = Math.min(models.length, MAX_VISIBLE);
97
+ let startIndex = 0;
98
+ if (activeIndex >= visibleCount) {
99
+ startIndex = activeIndex - visibleCount + 1;
100
+ }
101
+ const endIndex = startIndex + visibleCount;
102
+ const visibleModels = models.slice(startIndex, endIndex);
103
+ // Column width for model name
104
+ const maxNameLen = Math.max(...models.map((m) => m.display_name.length || m.name.length));
105
+ const nameColWidth = Math.min(maxNameLen + 2, Math.floor(boxWidth * 0.4));
106
+ return (_jsxs(Box, { flexDirection: "column", width: boxWidth, children: [_jsxs(Box, { borderStyle: "round", borderColor: palette.accent, flexDirection: "column", paddingX: 1, children: [_jsxs(Box, { justifyContent: "space-between", marginBottom: 1, children: [_jsxs(Text, { color: palette.accent, bold: true, children: ["Select Model (", models.length, ")"] }), _jsx(Text, { color: palette.textDim, children: "Esc to close" })] }), startIndex > 0 && (_jsx(Text, { color: palette.textDim, children: ' ▲ more' })), visibleModels.map((model, index) => {
107
+ const originalIndex = startIndex + index;
108
+ const isActive = originalIndex === activeIndex;
109
+ const isCurrent = currentModel?.model === model.name;
110
+ const displayName = model.display_name || model.name;
111
+ const descMaxLen = Math.max(0, boxWidth - nameColWidth - 8);
112
+ let desc = model.description || '';
113
+ if (desc.length > descMaxLen) {
114
+ desc = desc.slice(0, descMaxLen - 1) + '…';
115
+ }
116
+ return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: isActive ? palette.accent : palette.textDim, children: isActive ? '▸ ' : ' ' }), _jsx(Box, { width: nameColWidth, children: _jsx(Text, { color: isActive ? palette.accent : palette.text, bold: isActive, children: displayName }) }), _jsx(Text, { color: isActive ? palette.text : palette.textDim, children: desc }), isCurrent && (_jsx(Text, { color: palette.success, children: " *" }))] }, model.name));
117
+ }), endIndex < models.length && (_jsx(Text, { color: palette.textDim, children: ' ▼ more' })), models.length > MAX_VISIBLE && (_jsxs(Text, { color: palette.textDim, children: [' ', "(", activeIndex + 1, "/", models.length, ")"] }))] }), _jsx(Box, { paddingX: 2, children: _jsxs(Text, { color: palette.textDim, children: [_jsx(Text, { color: palette.primary, bold: true, children: "\u2191\u2193" }), ' navigate ', _jsx(Text, { color: palette.primary, bold: true, children: "Enter" }), ' select ', _jsx(Text, { color: palette.primary, bold: true, children: "Esc" }), ' cancel'] }) }), isSwitching && (_jsx(Box, { paddingX: 2, children: _jsx(Text, { color: palette.warning, children: "Switching model..." }) }))] }));
118
+ };
119
+ //# sourceMappingURL=ModelPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelPicker.js","sourceRoot":"","sources":["../../../src/components/ModelPicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ interface MultiLineInputProps {
2
+ value: string;
3
+ onChange: (value: string) => void;
4
+ onSubmit: (value: string) => void;
5
+ placeholder?: string;
6
+ focus?: boolean;
7
+ showCursor?: boolean;
8
+ }
9
+ /**
10
+ * Multi-line text input for Ink.
11
+ *
12
+ * - Enter → submit
13
+ * - Shift+Enter → insert newline (requires kitty keyboard protocol)
14
+ * - Alt+Enter → insert newline (fallback for legacy terminals)
15
+ * - Backspace / Delete / Left / Right work across lines
16
+ */
17
+ declare function MultiLineInput({ value: originalValue, placeholder, focus, showCursor, onChange, onSubmit, }: MultiLineInputProps): import("react/jsx-runtime").JSX.Element;
18
+ export default MultiLineInput;
19
+ //# sourceMappingURL=MultiLineInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiLineInput.d.ts","sourceRoot":"","sources":["../../../src/components/MultiLineInput.tsx"],"names":[],"mappings":"AAIA,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,iBAAS,cAAc,CAAC,EACtB,KAAK,EAAE,aAAa,EACpB,WAAgB,EAChB,KAAY,EACZ,UAAiB,EACjB,QAAQ,EACR,QAAQ,GACT,EAAE,mBAAmB,2CAuHrB;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect, useRef } from 'react';
3
+ import { Box, Text, useInput } from 'ink';
4
+ import chalk from 'chalk';
5
+ /**
6
+ * Multi-line text input for Ink.
7
+ *
8
+ * - Enter → submit
9
+ * - Shift+Enter → insert newline (requires kitty keyboard protocol)
10
+ * - Alt+Enter → insert newline (fallback for legacy terminals)
11
+ * - Backspace / Delete / Left / Right work across lines
12
+ */
13
+ function MultiLineInput({ value: originalValue, placeholder = '', focus = true, showCursor = true, onChange, onSubmit, }) {
14
+ const [cursorOffset, setCursorOffset] = useState(originalValue.length);
15
+ // Keep cursor within bounds when value changes externally
16
+ useEffect(() => {
17
+ setCursorOffset((prev) => Math.min(prev, originalValue.length));
18
+ }, [originalValue]);
19
+ // Ref so useInput always reads the latest cursor
20
+ const cursorRef = useRef(cursorOffset);
21
+ cursorRef.current = cursorOffset;
22
+ const valueRef = useRef(originalValue);
23
+ valueRef.current = originalValue;
24
+ useInput((input, key) => {
25
+ // Ignore keys handled by Composer (arrows, Ctrl+C, Tab)
26
+ if (key.upArrow || key.downArrow || (key.ctrl && input === 'c') || key.tab || (key.shift && key.tab)) {
27
+ return;
28
+ }
29
+ const val = valueRef.current;
30
+ const cur = cursorRef.current;
31
+ // --- newline insertion: Shift+Enter or Alt+Enter ---
32
+ if (key.return && (key.shift || key.meta)) {
33
+ const next = val.slice(0, cur) + '\n' + val.slice(cur);
34
+ setCursorOffset(cur + 1);
35
+ onChange(next);
36
+ return;
37
+ }
38
+ // --- plain Enter → submit ---
39
+ if (key.return) {
40
+ onSubmit(val);
41
+ return;
42
+ }
43
+ let nextCursor = cur;
44
+ let nextValue = val;
45
+ if (key.leftArrow) {
46
+ if (showCursor)
47
+ nextCursor = Math.max(0, cur - 1);
48
+ }
49
+ else if (key.rightArrow) {
50
+ if (showCursor)
51
+ nextCursor = Math.min(val.length, cur + 1);
52
+ }
53
+ else if (key.backspace || key.delete) {
54
+ if (cur > 0) {
55
+ nextValue = val.slice(0, cur - 1) + val.slice(cur);
56
+ nextCursor = cur - 1;
57
+ }
58
+ }
59
+ else if (input) {
60
+ nextValue = val.slice(0, cur) + input + val.slice(cur);
61
+ nextCursor = cur + input.length;
62
+ }
63
+ nextCursor = Math.max(0, Math.min(nextCursor, nextValue.length));
64
+ setCursorOffset(nextCursor);
65
+ if (nextValue !== val) {
66
+ onChange(nextValue);
67
+ }
68
+ }, { isActive: focus });
69
+ // ── Rendering ──
70
+ if (!originalValue && placeholder) {
71
+ if (showCursor && focus) {
72
+ return (_jsx(Text, { children: placeholder.length > 0
73
+ ? chalk.inverse(placeholder[0]) + chalk.grey(placeholder.slice(1))
74
+ : chalk.inverse(' ') }));
75
+ }
76
+ return _jsx(Text, { children: chalk.grey(placeholder) });
77
+ }
78
+ const lines = originalValue.split('\n');
79
+ const renderedLines = [];
80
+ let charsSoFar = 0;
81
+ for (let lineIdx = 0; lineIdx < lines.length; lineIdx++) {
82
+ const line = lines[lineIdx];
83
+ let rendered = '';
84
+ if (showCursor && focus) {
85
+ for (let i = 0; i < line.length; i++) {
86
+ const globalPos = charsSoFar + i;
87
+ rendered += globalPos === cursorOffset ? chalk.inverse(line[i]) : line[i];
88
+ }
89
+ // Cursor at end of line
90
+ const endPos = charsSoFar + line.length;
91
+ if (cursorOffset === endPos) {
92
+ rendered += chalk.inverse(' ');
93
+ }
94
+ }
95
+ else {
96
+ rendered = line;
97
+ }
98
+ renderedLines.push(rendered);
99
+ charsSoFar += line.length + 1; // +1 for the '\n'
100
+ }
101
+ // Multi-line: render each line in its own <Text> within a vertical <Box>
102
+ if (lines.length > 1) {
103
+ return (_jsx(Box, { flexDirection: "column", children: renderedLines.map((line, i) => (_jsx(Text, { children: line || ' ' }, i))) }));
104
+ }
105
+ return _jsx(Text, { children: renderedLines[0] });
106
+ }
107
+ export default MultiLineInput;
108
+ //# sourceMappingURL=MultiLineInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiLineInput.js","sourceRoot":"","sources":["../../../src/components/MultiLineInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const SessionPicker: React.FC;
3
+ //# sourceMappingURL=SessionPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionPicker.d.ts","sourceRoot":"","sources":["../../../src/components/SessionPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAehE,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAsOjC,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect, useCallback } from 'react';
3
+ import { Box, Text } from 'ink';
4
+ import { useUIActions, useUIState } from '../contexts/UIContext.js';
5
+ import { useSessionState, useSessionActions } from '../contexts/SessionContext.js';
6
+ import { useChatDispatch, useChatState } from '../contexts/ChatContext.js';
7
+ import { sessionsApi } from '../api/sessions.js';
8
+ import { nextHistoryId } from '../types/history.js';
9
+ import { useKeypress, KeypressPriority } from '../hooks/useKeypress.js';
10
+ import { palette } from '../utils/colors.js';
11
+ const MAX_VISIBLE = 12;
12
+ export const SessionPicker = () => {
13
+ const [activeIndex, setActiveIndex] = useState(0);
14
+ const [isLoading, setIsLoading] = useState(false);
15
+ const { terminalWidth, terminalHeight } = useUIState();
16
+ const { closeDialog } = useUIActions();
17
+ const { sessions, isLoading: sessionsLoading } = useSessionState();
18
+ const { refreshSessions } = useSessionActions();
19
+ const dispatch = useChatDispatch();
20
+ const { threadId: currentThreadId } = useChatState();
21
+ // Refresh sessions on mount
22
+ useEffect(() => {
23
+ refreshSessions();
24
+ }, [refreshSessions]);
25
+ const handleSelect = async (session) => {
26
+ // Don't switch to the same session
27
+ if (session.thread_id === currentThreadId) {
28
+ closeDialog();
29
+ return;
30
+ }
31
+ setIsLoading(true);
32
+ try {
33
+ // Fetch session history from API
34
+ const res = await sessionsApi.getHistory(session.thread_id);
35
+ const historyItems = res.history.map((msg) => ({
36
+ id: nextHistoryId(),
37
+ type: msg.type,
38
+ text: msg.content,
39
+ }));
40
+ // Add a "switched" marker at the end
41
+ historyItems.push({
42
+ id: nextHistoryId(),
43
+ type: 'session',
44
+ title: session.title || 'Untitled',
45
+ action: 'switched',
46
+ });
47
+ // Atomically switch session (increments sessionVersion to re-mount Static)
48
+ dispatch({
49
+ type: 'SWITCH_SESSION',
50
+ threadId: session.thread_id,
51
+ title: session.title,
52
+ items: historyItems,
53
+ });
54
+ }
55
+ catch (err) {
56
+ dispatch({
57
+ type: 'ADD_ITEM',
58
+ item: {
59
+ type: 'error',
60
+ text: `Failed to load session: ${err instanceof Error ? err.message : String(err)}`,
61
+ },
62
+ });
63
+ }
64
+ finally {
65
+ setIsLoading(false);
66
+ closeDialog();
67
+ }
68
+ };
69
+ const handleKeypress = useCallback((key) => {
70
+ if (isLoading)
71
+ return true;
72
+ if (key.name === 'escape' || (key.ctrl && key.name === 'c')) {
73
+ closeDialog();
74
+ return true;
75
+ }
76
+ if (key.name === 'up') {
77
+ setActiveIndex((prev) => (prev <= 0 ? sessions.length - 1 : prev - 1));
78
+ return true;
79
+ }
80
+ if (key.name === 'down') {
81
+ setActiveIndex((prev) => (prev >= sessions.length - 1 ? 0 : prev + 1));
82
+ return true;
83
+ }
84
+ if (key.name === 'return') {
85
+ const selected = sessions[activeIndex];
86
+ if (selected) {
87
+ handleSelect(selected);
88
+ }
89
+ return true;
90
+ }
91
+ return true; // Consume all keys while dialog is open
92
+ }, [isLoading, closeDialog, sessions, activeIndex, handleSelect]);
93
+ useKeypress(handleKeypress, { isActive: true, priority: KeypressPriority.High });
94
+ // Scroll window
95
+ const visibleCount = Math.min(sessions.length, MAX_VISIBLE);
96
+ let startIndex = 0;
97
+ if (activeIndex >= visibleCount) {
98
+ startIndex = activeIndex - visibleCount + 1;
99
+ }
100
+ const endIndex = startIndex + visibleCount;
101
+ const visibleSessions = sessions.slice(startIndex, endIndex);
102
+ const boxWidth = Math.min(terminalWidth - 4, 80);
103
+ if (sessionsLoading && sessions.length === 0) {
104
+ return (_jsx(Box, { flexDirection: "column", borderStyle: "round", borderColor: palette.accent, paddingX: 2, paddingY: 1, width: boxWidth, children: _jsx(Text, { color: palette.textMuted, children: "Loading sessions..." }) }));
105
+ }
106
+ if (sessions.length === 0) {
107
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: palette.accent, paddingX: 2, paddingY: 1, width: boxWidth, children: [_jsx(Text, { color: palette.textMuted, children: "No sessions found." }), _jsx(Text, { color: palette.textDim, children: "Press Esc to close" })] }));
108
+ }
109
+ return (_jsxs(Box, { flexDirection: "column", width: boxWidth, children: [_jsxs(Box, { borderStyle: "round", borderColor: palette.accent, flexDirection: "column", paddingX: 1, children: [_jsxs(Box, { justifyContent: "space-between", marginBottom: 1, children: [_jsxs(Text, { color: palette.accent, bold: true, children: ["Session History (", sessions.length, ")"] }), _jsx(Text, { color: palette.textDim, children: "Esc to close" })] }), startIndex > 0 && (_jsx(Text, { color: palette.textDim, children: ' ▲ more' })), visibleSessions.map((session, index) => {
110
+ const originalIndex = startIndex + index;
111
+ const isActive = originalIndex === activeIndex;
112
+ const isCurrent = session.thread_id === currentThreadId;
113
+ const date = new Date(session.last_activity);
114
+ const timeStr = date.toLocaleString('zh-CN', {
115
+ month: '2-digit',
116
+ day: '2-digit',
117
+ hour: '2-digit',
118
+ minute: '2-digit',
119
+ });
120
+ const title = session.title || 'New Chat';
121
+ const msgCount = session.message_count ?? 0;
122
+ const idShort = session.thread_id.substring(0, 8);
123
+ // Truncate title to fit
124
+ const maxTitleLen = boxWidth - 36;
125
+ const displayTitle = title.length > maxTitleLen
126
+ ? title.slice(0, maxTitleLen - 1) + '…'
127
+ : title;
128
+ return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: isActive ? palette.accent : palette.textDim, children: isActive ? '▸ ' : ' ' }), _jsxs(Text, { color: palette.textDim, children: [timeStr, " "] }), _jsx(Text, { color: isActive ? palette.accent : palette.text, bold: isActive, children: displayTitle }), _jsxs(Text, { color: palette.textDim, children: [' ', "(", msgCount, ")"] }), isCurrent && (_jsx(Text, { color: palette.success, children: " *" }))] }, session.thread_id));
129
+ }), endIndex < sessions.length && (_jsx(Text, { color: palette.textDim, children: ' ▼ more' })), sessions.length > MAX_VISIBLE && (_jsxs(Text, { color: palette.textDim, children: [' ', "(", activeIndex + 1, "/", sessions.length, ")"] }))] }), _jsx(Box, { paddingX: 2, children: _jsxs(Text, { color: palette.textDim, children: [_jsx(Text, { color: palette.primary, bold: true, children: "\u2191\u2193" }), " navigate", _jsx(Text, { color: palette.primary, bold: true, children: "Enter" }), " switch", _jsx(Text, { color: palette.primary, bold: true, children: "Esc" }), " cancel"] }) }), isLoading && (_jsx(Box, { paddingX: 2, children: _jsx(Text, { color: palette.warning, children: "Loading session..." }) }))] }));
130
+ };
131
+ //# sourceMappingURL=SessionPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionPicker.js","sourceRoot":"","sources":["../../../src/components/SessionPicker.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,MAAM,CAAC,MAAM,aAAa,GAAa,GAAG,EAAE;IAC1C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IACvD,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAAC;IACvC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAAC;IACnE,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,YAAY,EAAE,CAAC;IAErD,4BAA4B;IAC5B,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,EAAE,CAAC;IACpB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,YAAY,GAAG,KAAK,EAAE,OAAoB,EAAE,EAAE;QAClD,mCAAmC;QACnC,IAAI,OAAO,CAAC,SAAS,KAAK,eAAe,EAAE,CAAC;YAC1C,WAAW,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC5D,MAAM,YAAY,GAAkB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC5D,EAAE,EAAE,aAAa,EAAE;gBACnB,IAAI,EAAE,GAAG,CAAC,IAA4B;gBACtC,IAAI,EAAE,GAAG,CAAC,OAAO;aAClB,CAAC,CAAC,CAAC;YAEJ,qCAAqC;YACrC,YAAY,CAAC,IAAI,CAAC;gBAChB,EAAE,EAAE,aAAa,EAAE;gBACnB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,UAAU;gBAClC,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;YAEH,2EAA2E;YAC3E,QAAQ,CAAC;gBACP,IAAI,EAAE,gBAAgB;gBACtB,QAAQ,EAAE,OAAO,CAAC,SAAS;gBAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,YAAY;aACpB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC;gBACP,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;iBACpF;aACF,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,GAAQ,EAAkB,EAAE;QAC3B,IAAI,SAAS;YAAE,OAAO,IAAI,CAAC;QAE3B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5D,WAAW,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACtB,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,QAAQ,EAAE,CAAC;gBACb,YAAY,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,wCAAwC;IACvD,CAAC,EACD,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAC9D,CAAC;IAEF,WAAW,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjF,gBAAgB;IAChB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;QAChC,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;IAC3C,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjD,IAAI,eAAe,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,CACL,KAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,OAAO,CAAC,MAAM,EAC3B,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,QAAQ,YAEf,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,SAAS,oCAA4B,GACtD,CACP,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,OAAO,CAAC,MAAM,EAC3B,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,QAAQ,aAEf,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,SAAS,mCAA2B,EACzD,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,mCAA2B,IACnD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAE,QAAQ,aACzC,MAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,OAAO,CAAC,MAAM,EAC3B,aAAa,EAAC,QAAQ,EACtB,QAAQ,EAAE,CAAC,aAEX,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,EAAC,YAAY,EAAE,CAAC,aACjD,MAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,wCACb,QAAQ,CAAC,MAAM,SAC5B,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,6BAErB,IACH,EAEL,UAAU,GAAG,CAAC,IAAI,CACjB,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,YAAG,UAAU,GAAQ,CAClD,EAEA,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;wBACtC,MAAM,aAAa,GAAG,UAAU,GAAG,KAAK,CAAC;wBACzC,MAAM,QAAQ,GAAG,aAAa,KAAK,WAAW,CAAC;wBAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,eAAe,CAAC;wBAExD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;wBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;4BAC3C,KAAK,EAAE,SAAS;4BAChB,GAAG,EAAE,SAAS;4BACd,IAAI,EAAE,SAAS;4BACf,MAAM,EAAE,SAAS;yBAClB,CAAC,CAAC;wBAEH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC;wBAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;wBAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAElD,wBAAwB;wBACxB,MAAM,WAAW,GAAG,QAAQ,GAAG,EAAE,CAAC;wBAClC,MAAM,YAAY,GAChB,KAAK,CAAC,MAAM,GAAG,WAAW;4BACxB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG;4BACvC,CAAC,CAAC,KAAK,CAAC;wBAEZ,OAAO,CACL,MAAC,GAAG,IAAyB,aAAa,EAAC,KAAK,aAC9C,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,YACrD,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAClB,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,aAAG,OAAO,SAAS,EAC/C,KAAC,IAAI,IACH,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAC/C,IAAI,EAAE,QAAQ,YAEb,YAAY,GACR,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,aACzB,GAAG,OAAG,QAAQ,SACV,EACN,SAAS,IAAI,CACZ,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,mBAAW,CACxC,KAhBO,OAAO,CAAC,SAAS,CAiBrB,CACP,CAAC;oBACJ,CAAC,CAAC,EAED,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAC7B,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,YAAG,UAAU,GAAQ,CAClD,EAEA,QAAQ,CAAC,MAAM,GAAG,WAAW,IAAI,CAChC,MAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,aACzB,IAAI,OAAG,WAAW,GAAG,CAAC,OAAG,QAAQ,CAAC,MAAM,SACpC,CACR,IACG,EAEN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,MAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,aAC1B,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,mCAAU,eAC5C,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,4BAAa,aAC/C,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,0BAAW,eACxC,GACH,EAEL,SAAS,IAAI,CACZ,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,OAAO,mCAA2B,GACnD,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export declare const MAX_SUGGESTIONS_TO_SHOW = 6;
3
+ /** Unified suggestion item for both "/" commands and "@" file references */
4
+ export interface SuggestionItem {
5
+ name: string;
6
+ description: string;
7
+ prefix: string;
8
+ icon?: string;
9
+ }
10
+ export interface SuggestionsDisplayProps {
11
+ suggestions: SuggestionItem[];
12
+ activeIndex: number;
13
+ width: number;
14
+ }
15
+ export declare const SuggestionsDisplay: React.FC<SuggestionsDisplayProps>;
16
+ //# sourceMappingURL=SuggestionsDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuggestionsDisplay.d.ts","sourceRoot":"","sources":["../../../src/components/SuggestionsDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA+DhE,CAAC"}