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,627 @@
1
+ import { useReducer, useMemo, useState, useEffect, useCallback } from 'react';
2
+ import { wrapLine, findPrevWordBoundary, findNextWordBoundary, cpLen, cpSlice } from '../utils/textUtils.js';
3
+ import { isLargePaste, generatePlaceholder, expandPlaceholders } from '../utils/pasteUtils.js';
4
+ function calculateVisualLayout(lines, viewportWidth) {
5
+ const visualLines = [];
6
+ const visualToLogicalMap = [];
7
+ for (let logicalRow = 0; logicalRow < lines.length; logicalRow++) {
8
+ const line = lines[logicalRow];
9
+ const wrapped = wrapLine(line, viewportWidth);
10
+ let startCol = 0;
11
+ for (const wl of wrapped) {
12
+ visualLines.push(wl);
13
+ visualToLogicalMap.push([logicalRow, startCol]);
14
+ startCol += cpLen(wl);
15
+ }
16
+ }
17
+ return { visualLines, visualToLogicalMap };
18
+ }
19
+ function logicalToVisualCursor(layout, cursorRow, cursorCol) {
20
+ // Find the visual line that contains [cursorRow, cursorCol]
21
+ let lastMatchIdx = 0;
22
+ for (let i = 0; i < layout.visualToLogicalMap.length; i++) {
23
+ const [lr, sc] = layout.visualToLogicalMap[i];
24
+ if (lr === cursorRow && sc <= cursorCol) {
25
+ lastMatchIdx = i;
26
+ }
27
+ if (lr > cursorRow)
28
+ break;
29
+ }
30
+ const [, startCol] = layout.visualToLogicalMap[lastMatchIdx];
31
+ return [lastMatchIdx, cursorCol - startCol];
32
+ }
33
+ function visualToLogicalCursor(layout, visualRow, visualCol) {
34
+ const clamped = Math.max(0, Math.min(visualRow, layout.visualToLogicalMap.length - 1));
35
+ const [logicalRow, startCol] = layout.visualToLogicalMap[clamped];
36
+ const lineLen = cpLen(layout.visualLines[clamped] ?? '');
37
+ const col = Math.min(visualCol, lineLen);
38
+ return [logicalRow, startCol + col];
39
+ }
40
+ // ── Undo helpers ──────────────────────────────────────
41
+ const UNDO_LIMIT = 100;
42
+ function pushUndo(state) {
43
+ const entry = {
44
+ lines: [...state.lines],
45
+ cursorRow: state.cursorRow,
46
+ cursorCol: state.cursorCol,
47
+ pastedContent: { ...state.pastedContent },
48
+ };
49
+ const stack = [...state.undoStack, entry];
50
+ if (stack.length > UNDO_LIMIT)
51
+ stack.shift();
52
+ return { ...state, undoStack: stack, redoStack: [] };
53
+ }
54
+ // ── Reducer ──────────────────────────────────────────
55
+ function clampCursor(lines, row, col) {
56
+ const r = Math.max(0, Math.min(row, lines.length - 1));
57
+ const maxCol = cpLen(lines[r] ?? '');
58
+ const c = Math.max(0, Math.min(col, maxCol));
59
+ return [r, c];
60
+ }
61
+ function textBufferReducer(state, action) {
62
+ const line = (r) => state.lines[r] ?? '';
63
+ const lineLen = (r) => cpLen(line(r));
64
+ switch (action.type) {
65
+ case 'insert': {
66
+ // Normalize \r\n and lone \r to \n (handles Windows-style line endings in pastes)
67
+ const text = action.payload.replace(/\r\n?/g, '\n');
68
+ if (!text)
69
+ return state;
70
+ // Check if this is a large paste — generate placeholder
71
+ if (action.isPaste && isLargePaste(text)) {
72
+ const placeholder = generatePlaceholder(text, state.pastedContent);
73
+ const nextState = pushUndo(state);
74
+ const newPastedContent = { ...nextState.pastedContent, [placeholder]: text };
75
+ // Insert the placeholder instead of the actual text
76
+ const currentLine = line(state.cursorRow);
77
+ const before = cpSlice(currentLine, 0, state.cursorCol);
78
+ const after = cpSlice(currentLine, state.cursorCol);
79
+ const newLines = [...nextState.lines];
80
+ newLines[state.cursorRow] = before + placeholder + after;
81
+ const newCol = state.cursorCol + cpLen(placeholder);
82
+ return {
83
+ ...nextState,
84
+ lines: newLines,
85
+ cursorRow: state.cursorRow,
86
+ cursorCol: newCol,
87
+ preferredCol: null,
88
+ pastedContent: newPastedContent,
89
+ };
90
+ }
91
+ const nextState = pushUndo(state);
92
+ const insertLines = text.split('\n');
93
+ const currentLine = line(state.cursorRow);
94
+ const before = cpSlice(currentLine, 0, state.cursorCol);
95
+ const after = cpSlice(currentLine, state.cursorCol);
96
+ const newLines = [...nextState.lines];
97
+ if (insertLines.length === 1) {
98
+ // Single-line insert
99
+ newLines[state.cursorRow] = before + insertLines[0] + after;
100
+ return {
101
+ ...nextState,
102
+ lines: newLines,
103
+ cursorRow: state.cursorRow,
104
+ cursorCol: state.cursorCol + cpLen(insertLines[0]),
105
+ preferredCol: null,
106
+ };
107
+ }
108
+ // Multi-line insert
109
+ const firstLine = before + insertLines[0];
110
+ const lastLine = insertLines[insertLines.length - 1] + after;
111
+ const middleLines = insertLines.slice(1, -1);
112
+ newLines.splice(state.cursorRow, 1, firstLine, ...middleLines, lastLine);
113
+ const newRow = state.cursorRow + insertLines.length - 1;
114
+ const newCol = cpLen(insertLines[insertLines.length - 1]);
115
+ return {
116
+ ...nextState,
117
+ lines: newLines,
118
+ cursorRow: newRow,
119
+ cursorCol: newCol,
120
+ preferredCol: null,
121
+ };
122
+ }
123
+ case 'set_text': {
124
+ const nextState = pushUndo(state);
125
+ const newContentLines = action.payload.replace(/\r\n?/g, '\n').split('\n');
126
+ const lines = newContentLines.length === 0 ? [''] : newContentLines;
127
+ let newRow;
128
+ let newCol;
129
+ if (action.cursorPosition === 'start') {
130
+ newRow = 0;
131
+ newCol = 0;
132
+ }
133
+ else {
134
+ // Default to 'end'
135
+ newRow = lines.length - 1;
136
+ newCol = cpLen(lines[newRow] ?? '');
137
+ }
138
+ return {
139
+ ...nextState,
140
+ lines,
141
+ cursorRow: newRow,
142
+ cursorCol: newCol,
143
+ preferredCol: null,
144
+ };
145
+ }
146
+ case 'backspace': {
147
+ if (state.cursorCol === 0 && state.cursorRow === 0)
148
+ return state;
149
+ const nextState = pushUndo(state);
150
+ const newLines = [...nextState.lines];
151
+ if (state.cursorCol === 0) {
152
+ // Join with previous line
153
+ const prevLine = line(state.cursorRow - 1);
154
+ const curLine = line(state.cursorRow);
155
+ const newCol = cpLen(prevLine);
156
+ newLines[state.cursorRow - 1] = prevLine + curLine;
157
+ newLines.splice(state.cursorRow, 1);
158
+ return {
159
+ ...nextState,
160
+ lines: newLines,
161
+ cursorRow: state.cursorRow - 1,
162
+ cursorCol: newCol,
163
+ preferredCol: null,
164
+ };
165
+ }
166
+ // Delete character before cursor
167
+ const currentLine = line(state.cursorRow);
168
+ newLines[state.cursorRow] =
169
+ cpSlice(currentLine, 0, state.cursorCol - 1) + cpSlice(currentLine, state.cursorCol);
170
+ return {
171
+ ...nextState,
172
+ lines: newLines,
173
+ cursorCol: state.cursorCol - 1,
174
+ preferredCol: null,
175
+ };
176
+ }
177
+ case 'delete': {
178
+ const currentLine = line(state.cursorRow);
179
+ if (state.cursorCol >= cpLen(currentLine) && state.cursorRow >= state.lines.length - 1) {
180
+ return state;
181
+ }
182
+ const nextState = pushUndo(state);
183
+ const newLines = [...nextState.lines];
184
+ if (state.cursorCol >= cpLen(currentLine)) {
185
+ // Join with next line
186
+ const nextLine = line(state.cursorRow + 1);
187
+ newLines[state.cursorRow] = currentLine + nextLine;
188
+ newLines.splice(state.cursorRow + 1, 1);
189
+ return { ...nextState, lines: newLines, preferredCol: null };
190
+ }
191
+ // Delete character at cursor
192
+ newLines[state.cursorRow] =
193
+ cpSlice(currentLine, 0, state.cursorCol) + cpSlice(currentLine, state.cursorCol + 1);
194
+ return { ...nextState, lines: newLines, preferredCol: null };
195
+ }
196
+ case 'newline': {
197
+ const nextState = pushUndo(state);
198
+ const currentLine = line(state.cursorRow);
199
+ const before = cpSlice(currentLine, 0, state.cursorCol);
200
+ const after = cpSlice(currentLine, state.cursorCol);
201
+ const newLines = [...nextState.lines];
202
+ newLines.splice(state.cursorRow, 1, before, after);
203
+ return {
204
+ ...nextState,
205
+ lines: newLines,
206
+ cursorRow: state.cursorRow + 1,
207
+ cursorCol: 0,
208
+ preferredCol: null,
209
+ };
210
+ }
211
+ case 'enter_key': {
212
+ // Reducer decides: if backslash before cursor → newline; otherwise → signal submit
213
+ const currentLine = line(state.cursorRow);
214
+ const charBefore = state.cursorCol > 0
215
+ ? cpSlice(currentLine, state.cursorCol - 1, state.cursorCol)
216
+ : '';
217
+ if (charBefore === '\\') {
218
+ // Atomic: remove trailing backslash + insert newline
219
+ const nextState = pushUndo(state);
220
+ const withoutBackslash = cpSlice(currentLine, 0, state.cursorCol - 1) + cpSlice(currentLine, state.cursorCol);
221
+ const splitCol = state.cursorCol - 1;
222
+ const before = cpSlice(withoutBackslash, 0, splitCol);
223
+ const after = cpSlice(withoutBackslash, splitCol);
224
+ const newLines = [...nextState.lines];
225
+ newLines.splice(state.cursorRow, 1, before, after);
226
+ return {
227
+ ...nextState,
228
+ lines: newLines,
229
+ cursorRow: state.cursorRow + 1,
230
+ cursorCol: 0,
231
+ preferredCol: null,
232
+ pendingSubmit: false,
233
+ };
234
+ }
235
+ // No backslash — signal that Composer should submit
236
+ return { ...state, pendingSubmit: true };
237
+ }
238
+ case 'consume_submit': {
239
+ return { ...state, pendingSubmit: false };
240
+ }
241
+ case 'move': {
242
+ const { dir } = action;
243
+ switch (dir) {
244
+ case 'left': {
245
+ if (state.cursorCol > 0) {
246
+ return { ...state, cursorCol: state.cursorCol - 1, preferredCol: null };
247
+ }
248
+ if (state.cursorRow > 0) {
249
+ return {
250
+ ...state,
251
+ cursorRow: state.cursorRow - 1,
252
+ cursorCol: lineLen(state.cursorRow - 1),
253
+ preferredCol: null,
254
+ };
255
+ }
256
+ return state;
257
+ }
258
+ case 'right': {
259
+ if (state.cursorCol < lineLen(state.cursorRow)) {
260
+ return { ...state, cursorCol: state.cursorCol + 1, preferredCol: null };
261
+ }
262
+ if (state.cursorRow < state.lines.length - 1) {
263
+ return {
264
+ ...state,
265
+ cursorRow: state.cursorRow + 1,
266
+ cursorCol: 0,
267
+ preferredCol: null,
268
+ };
269
+ }
270
+ return state;
271
+ }
272
+ case 'up': {
273
+ // Use visual layout for up/down movement
274
+ const layout = calculateVisualLayout(state.lines, state.viewportWidth);
275
+ const [vRow, vCol] = logicalToVisualCursor(layout, state.cursorRow, state.cursorCol);
276
+ if (vRow === 0)
277
+ return state; // Already at first visual line
278
+ const targetCol = state.preferredCol ?? vCol;
279
+ const [newRow, newCol] = visualToLogicalCursor(layout, vRow - 1, targetCol);
280
+ return {
281
+ ...state,
282
+ cursorRow: newRow,
283
+ cursorCol: newCol,
284
+ preferredCol: state.preferredCol ?? vCol,
285
+ };
286
+ }
287
+ case 'down': {
288
+ const layout = calculateVisualLayout(state.lines, state.viewportWidth);
289
+ const [vRow, vCol] = logicalToVisualCursor(layout, state.cursorRow, state.cursorCol);
290
+ if (vRow >= layout.visualLines.length - 1)
291
+ return state; // Already at last visual line
292
+ const targetCol = state.preferredCol ?? vCol;
293
+ const [newRow, newCol] = visualToLogicalCursor(layout, vRow + 1, targetCol);
294
+ return {
295
+ ...state,
296
+ cursorRow: newRow,
297
+ cursorCol: newCol,
298
+ preferredCol: state.preferredCol ?? vCol,
299
+ };
300
+ }
301
+ case 'home': {
302
+ return { ...state, cursorCol: 0, preferredCol: null };
303
+ }
304
+ case 'end': {
305
+ return { ...state, cursorCol: lineLen(state.cursorRow), preferredCol: null };
306
+ }
307
+ case 'wordLeft': {
308
+ const currentLine = line(state.cursorRow);
309
+ if (state.cursorCol > 0) {
310
+ const newCol = findPrevWordBoundary(currentLine, state.cursorCol);
311
+ return { ...state, cursorCol: newCol, preferredCol: null };
312
+ }
313
+ if (state.cursorRow > 0) {
314
+ return {
315
+ ...state,
316
+ cursorRow: state.cursorRow - 1,
317
+ cursorCol: lineLen(state.cursorRow - 1),
318
+ preferredCol: null,
319
+ };
320
+ }
321
+ return state;
322
+ }
323
+ case 'wordRight': {
324
+ const currentLine = line(state.cursorRow);
325
+ if (state.cursorCol < cpLen(currentLine)) {
326
+ const newCol = findNextWordBoundary(currentLine, state.cursorCol);
327
+ return { ...state, cursorCol: newCol, preferredCol: null };
328
+ }
329
+ if (state.cursorRow < state.lines.length - 1) {
330
+ return {
331
+ ...state,
332
+ cursorRow: state.cursorRow + 1,
333
+ cursorCol: 0,
334
+ preferredCol: null,
335
+ };
336
+ }
337
+ return state;
338
+ }
339
+ }
340
+ return state;
341
+ }
342
+ case 'delete_word_left': {
343
+ if (state.cursorCol === 0 && state.cursorRow === 0)
344
+ return state;
345
+ const nextState = pushUndo(state);
346
+ if (state.cursorCol === 0) {
347
+ // Join with previous line (same as backspace at start)
348
+ const newLines = [...nextState.lines];
349
+ const prevLine = line(state.cursorRow - 1);
350
+ const curLine = line(state.cursorRow);
351
+ const newCol = cpLen(prevLine);
352
+ newLines[state.cursorRow - 1] = prevLine + curLine;
353
+ newLines.splice(state.cursorRow, 1);
354
+ return {
355
+ ...nextState,
356
+ lines: newLines,
357
+ cursorRow: state.cursorRow - 1,
358
+ cursorCol: newCol,
359
+ preferredCol: null,
360
+ };
361
+ }
362
+ const currentLine = line(state.cursorRow);
363
+ const boundary = findPrevWordBoundary(currentLine, state.cursorCol);
364
+ const newLine = cpSlice(currentLine, 0, boundary) + cpSlice(currentLine, state.cursorCol);
365
+ const newLines = [...nextState.lines];
366
+ newLines[state.cursorRow] = newLine;
367
+ return {
368
+ ...nextState,
369
+ lines: newLines,
370
+ cursorCol: boundary,
371
+ preferredCol: null,
372
+ };
373
+ }
374
+ case 'kill_line_right': {
375
+ const currentLine = line(state.cursorRow);
376
+ if (state.cursorCol >= cpLen(currentLine)) {
377
+ // At end of line — join with next line
378
+ if (state.cursorRow >= state.lines.length - 1)
379
+ return state;
380
+ const nextState = pushUndo(state);
381
+ const newLines = [...nextState.lines];
382
+ const nextLine = line(state.cursorRow + 1);
383
+ newLines[state.cursorRow] = currentLine + nextLine;
384
+ newLines.splice(state.cursorRow + 1, 1);
385
+ return { ...nextState, lines: newLines, preferredCol: null };
386
+ }
387
+ const nextState = pushUndo(state);
388
+ const newLines = [...nextState.lines];
389
+ newLines[state.cursorRow] = cpSlice(currentLine, 0, state.cursorCol);
390
+ return { ...nextState, lines: newLines, preferredCol: null };
391
+ }
392
+ case 'undo': {
393
+ if (state.undoStack.length === 0)
394
+ return state;
395
+ const entry = state.undoStack[state.undoStack.length - 1];
396
+ const redoEntry = {
397
+ lines: [...state.lines],
398
+ cursorRow: state.cursorRow,
399
+ cursorCol: state.cursorCol,
400
+ pastedContent: { ...state.pastedContent },
401
+ };
402
+ return {
403
+ ...state,
404
+ lines: entry.lines,
405
+ cursorRow: entry.cursorRow,
406
+ cursorCol: entry.cursorCol,
407
+ pastedContent: entry.pastedContent,
408
+ undoStack: state.undoStack.slice(0, -1),
409
+ redoStack: [...state.redoStack, redoEntry],
410
+ preferredCol: null,
411
+ };
412
+ }
413
+ case 'redo': {
414
+ if (state.redoStack.length === 0)
415
+ return state;
416
+ const entry = state.redoStack[state.redoStack.length - 1];
417
+ const undoEntry = {
418
+ lines: [...state.lines],
419
+ cursorRow: state.cursorRow,
420
+ cursorCol: state.cursorCol,
421
+ pastedContent: { ...state.pastedContent },
422
+ };
423
+ return {
424
+ ...state,
425
+ lines: entry.lines,
426
+ cursorRow: entry.cursorRow,
427
+ cursorCol: entry.cursorCol,
428
+ pastedContent: entry.pastedContent,
429
+ redoStack: state.redoStack.slice(0, -1),
430
+ undoStack: [...state.undoStack, undoEntry],
431
+ preferredCol: null,
432
+ };
433
+ }
434
+ case 'set_viewport': {
435
+ return {
436
+ ...state,
437
+ viewportWidth: action.width,
438
+ viewportHeight: action.height,
439
+ };
440
+ }
441
+ case 'clear_pastes': {
442
+ return { ...state, pastedContent: {} };
443
+ }
444
+ }
445
+ return state;
446
+ }
447
+ export function useTextBuffer({ viewportWidth, viewportHeight }) {
448
+ const initialState = {
449
+ lines: [''],
450
+ cursorRow: 0,
451
+ cursorCol: 0,
452
+ preferredCol: null,
453
+ undoStack: [],
454
+ redoStack: [],
455
+ viewportWidth,
456
+ viewportHeight,
457
+ pastedContent: {},
458
+ pendingSubmit: false,
459
+ };
460
+ const [state, dispatch] = useReducer(textBufferReducer, initialState);
461
+ // Update viewport when dimensions change
462
+ useEffect(() => {
463
+ dispatch({ type: 'set_viewport', width: viewportWidth, height: viewportHeight });
464
+ }, [viewportWidth, viewportHeight]);
465
+ // Compute visual layout
466
+ const layout = useMemo(() => calculateVisualLayout(state.lines, state.viewportWidth), [state.lines, state.viewportWidth]);
467
+ const visualCursor = useMemo(() => logicalToVisualCursor(layout, state.cursorRow, state.cursorCol), [layout, state.cursorRow, state.cursorCol]);
468
+ // Scrolling
469
+ const [scrollRow, setScrollRow] = useState(0);
470
+ useEffect(() => {
471
+ const totalLines = layout.visualLines.length;
472
+ const maxScroll = Math.max(0, totalLines - state.viewportHeight);
473
+ let newScroll = scrollRow;
474
+ if (visualCursor[0] < scrollRow) {
475
+ newScroll = visualCursor[0];
476
+ }
477
+ else if (visualCursor[0] >= scrollRow + state.viewportHeight) {
478
+ newScroll = visualCursor[0] - state.viewportHeight + 1;
479
+ }
480
+ newScroll = Math.max(0, Math.min(newScroll, maxScroll));
481
+ if (newScroll !== scrollRow) {
482
+ setScrollRow(newScroll);
483
+ }
484
+ }, [visualCursor, scrollRow, state.viewportHeight, layout.visualLines.length]);
485
+ const viewportVisualLines = useMemo(() => layout.visualLines.slice(scrollRow, scrollRow + state.viewportHeight), [layout.visualLines, scrollRow, state.viewportHeight]);
486
+ const text = useMemo(() => state.lines.join('\n'), [state.lines]);
487
+ // Actions
488
+ const setText = useCallback((t, cursorPosition) => {
489
+ dispatch({ type: 'set_text', payload: t, cursorPosition });
490
+ }, []);
491
+ const insert = useCallback((ch, opts) => {
492
+ dispatch({ type: 'insert', payload: ch, isPaste: opts?.paste });
493
+ }, []);
494
+ const newline = useCallback(() => dispatch({ type: 'newline' }), []);
495
+ const backspace = useCallback(() => dispatch({ type: 'backspace' }), []);
496
+ const del = useCallback(() => dispatch({ type: 'delete' }), []);
497
+ const move = useCallback((dir) => dispatch({ type: 'move', dir }), []);
498
+ const deleteWordLeft = useCallback(() => dispatch({ type: 'delete_word_left' }), []);
499
+ const killLineRight = useCallback(() => dispatch({ type: 'kill_line_right' }), []);
500
+ const undo = useCallback(() => dispatch({ type: 'undo' }), []);
501
+ const redo = useCallback(() => dispatch({ type: 'redo' }), []);
502
+ const clearPastes = useCallback(() => dispatch({ type: 'clear_pastes' }), []);
503
+ const consumeSubmit = useCallback(() => dispatch({ type: 'consume_submit' }), []);
504
+ const expandAllPastes = useCallback((t) => expandPlaceholders(t, state.pastedContent), [state.pastedContent]);
505
+ const setViewport = useCallback((w, h) => dispatch({ type: 'set_viewport', width: w, height: h }), []);
506
+ const handleInput = useCallback((key) => {
507
+ // ── Paste event → insert (with placeholder for large pastes) ──
508
+ if (key.name === 'paste') {
509
+ dispatch({ type: 'insert', payload: key.sequence, isPaste: true });
510
+ return;
511
+ }
512
+ // ── Shift+Enter → newline ──
513
+ if (key.name === 'return' && key.shift) {
514
+ dispatch({ type: 'newline' });
515
+ return;
516
+ }
517
+ // ── Ctrl+Enter or Ctrl+J → newline ──
518
+ if ((key.name === 'return' && key.ctrl) || (key.ctrl && key.name === 'j')) {
519
+ dispatch({ type: 'newline' });
520
+ return;
521
+ }
522
+ // ── Enter key ──
523
+ if (key.name === 'return') {
524
+ dispatch({ type: 'enter_key' });
525
+ return;
526
+ }
527
+ // Escape / Tab → not handled by buffer
528
+ if (key.name === 'escape' || key.name === 'tab')
529
+ return;
530
+ // Ctrl combos
531
+ if (key.ctrl) {
532
+ switch (key.name) {
533
+ case 'a':
534
+ dispatch({ type: 'move', dir: 'home' });
535
+ return;
536
+ case 'e':
537
+ dispatch({ type: 'move', dir: 'end' });
538
+ return;
539
+ case 'k':
540
+ dispatch({ type: 'kill_line_right' });
541
+ return;
542
+ case 'w':
543
+ dispatch({ type: 'delete_word_left' });
544
+ return;
545
+ case 'z':
546
+ dispatch({ type: 'undo' });
547
+ return;
548
+ case 'y':
549
+ dispatch({ type: 'redo' });
550
+ return;
551
+ }
552
+ return;
553
+ }
554
+ // Backspace
555
+ if (key.name === 'backspace') {
556
+ if (key.alt) {
557
+ dispatch({ type: 'delete_word_left' });
558
+ }
559
+ else {
560
+ dispatch({ type: 'backspace' });
561
+ }
562
+ return;
563
+ }
564
+ // Delete
565
+ if (key.name === 'delete') {
566
+ dispatch({ type: 'delete' });
567
+ return;
568
+ }
569
+ // Home / End
570
+ if (key.name === 'home') {
571
+ dispatch({ type: 'move', dir: 'home' });
572
+ return;
573
+ }
574
+ if (key.name === 'end') {
575
+ dispatch({ type: 'move', dir: 'end' });
576
+ return;
577
+ }
578
+ // Arrow keys
579
+ if (key.name === 'left') {
580
+ dispatch({ type: 'move', dir: key.alt ? 'wordLeft' : 'left' });
581
+ return;
582
+ }
583
+ if (key.name === 'right') {
584
+ dispatch({ type: 'move', dir: key.alt ? 'wordRight' : 'right' });
585
+ return;
586
+ }
587
+ if (key.name === 'up') {
588
+ dispatch({ type: 'move', dir: 'up' });
589
+ return;
590
+ }
591
+ if (key.name === 'down') {
592
+ dispatch({ type: 'move', dir: 'down' });
593
+ return;
594
+ }
595
+ // Printable characters
596
+ if (key.insertable && key.sequence.length > 0) {
597
+ dispatch({ type: 'insert', payload: key.sequence });
598
+ }
599
+ }, []);
600
+ return {
601
+ text,
602
+ lines: state.lines,
603
+ cursor: [state.cursorRow, state.cursorCol],
604
+ allVisualLines: layout.visualLines,
605
+ viewportVisualLines,
606
+ visualCursor: [visualCursor[0] - scrollRow, visualCursor[1]],
607
+ visualScrollRow: scrollRow,
608
+ pastedContent: state.pastedContent,
609
+ pendingSubmit: state.pendingSubmit,
610
+ setText,
611
+ insert,
612
+ newline,
613
+ backspace,
614
+ del,
615
+ move,
616
+ deleteWordLeft,
617
+ killLineRight,
618
+ undo,
619
+ redo,
620
+ expandAllPastes,
621
+ clearPastes,
622
+ consumeSubmit,
623
+ setViewport,
624
+ handleInput,
625
+ };
626
+ }
627
+ //# sourceMappingURL=useTextBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTextBuffer.js","sourceRoot":"","sources":["../../../src/hooks/useTextBuffer.ts"],"names":[],"mappings":"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"}