@within-7/minto 0.1.5 → 0.1.7

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 (273) hide show
  1. package/dist/commands/agents/AgentsCommand.js +2342 -0
  2. package/dist/commands/agents/AgentsCommand.js.map +7 -0
  3. package/dist/commands/agents/constants.js +58 -0
  4. package/dist/commands/agents/constants.js.map +7 -0
  5. package/dist/commands/agents/index.js +37 -0
  6. package/dist/commands/agents/index.js.map +7 -0
  7. package/dist/commands/agents/types.js +10 -0
  8. package/dist/commands/agents/types.js.map +7 -0
  9. package/dist/commands/agents/utils/fileOperations.js +185 -0
  10. package/dist/commands/agents/utils/fileOperations.js.map +7 -0
  11. package/dist/commands/agents/utils/index.js +21 -0
  12. package/dist/commands/agents/utils/index.js.map +7 -0
  13. package/dist/commands/bug.js +2 -2
  14. package/dist/commands/bug.js.map +2 -2
  15. package/dist/commands/compact.js +5 -5
  16. package/dist/commands/compact.js.map +2 -2
  17. package/dist/commands/ctx_viz.js +55 -22
  18. package/dist/commands/ctx_viz.js.map +2 -2
  19. package/dist/commands/mcp-interactive.js +11 -11
  20. package/dist/commands/mcp-interactive.js.map +2 -2
  21. package/dist/commands/model.js +94 -32
  22. package/dist/commands/model.js.map +3 -3
  23. package/dist/commands/plugin/AddMarketplaceForm.js +49 -21
  24. package/dist/commands/plugin/AddMarketplaceForm.js.map +2 -2
  25. package/dist/commands/plugin/ConfirmDialog.js +38 -26
  26. package/dist/commands/plugin/ConfirmDialog.js.map +2 -2
  27. package/dist/commands/plugin/InstalledPluginsByMarketplace.js +24 -8
  28. package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +2 -2
  29. package/dist/commands/plugin/InstalledPluginsManager.js +3 -1
  30. package/dist/commands/plugin/InstalledPluginsManager.js.map +2 -2
  31. package/dist/commands/plugin/MainMenu.js +16 -7
  32. package/dist/commands/plugin/MainMenu.js.map +2 -2
  33. package/dist/commands/plugin/MarketplaceManager.js +84 -39
  34. package/dist/commands/plugin/MarketplaceManager.js.map +2 -2
  35. package/dist/commands/plugin/MarketplaceSelector.js +7 -3
  36. package/dist/commands/plugin/MarketplaceSelector.js.map +2 -2
  37. package/dist/commands/plugin/PlaceholderScreen.js +16 -2
  38. package/dist/commands/plugin/PlaceholderScreen.js.map +2 -2
  39. package/dist/commands/plugin/PluginBrowser.js +4 -2
  40. package/dist/commands/plugin/PluginBrowser.js.map +2 -2
  41. package/dist/commands/plugin/PluginDetailsInstall.js +12 -6
  42. package/dist/commands/plugin/PluginDetailsInstall.js.map +2 -2
  43. package/dist/commands/plugin/PluginDetailsManage.js +14 -5
  44. package/dist/commands/plugin/PluginDetailsManage.js.map +2 -2
  45. package/dist/commands/plugin/example-usage.js.map +2 -2
  46. package/dist/commands/plugin/utils.js.map +2 -2
  47. package/dist/commands/plugin.js +226 -46
  48. package/dist/commands/plugin.js.map +2 -2
  49. package/dist/commands/refreshCommands.js +6 -3
  50. package/dist/commands/refreshCommands.js.map +2 -2
  51. package/dist/commands/resume.js +2 -1
  52. package/dist/commands/resume.js.map +2 -2
  53. package/dist/commands/setup.js +19 -5
  54. package/dist/commands/setup.js.map +2 -2
  55. package/dist/commands/terminalSetup.js +2 -2
  56. package/dist/commands/terminalSetup.js.map +1 -1
  57. package/dist/commands.js +14 -30
  58. package/dist/commands.js.map +2 -2
  59. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +2 -2
  60. package/dist/components/AskUserQuestionDialog/QuestionView.js +10 -1
  61. package/dist/components/AskUserQuestionDialog/QuestionView.js.map +2 -2
  62. package/dist/components/BackgroundTasksPanel.js +5 -1
  63. package/dist/components/BackgroundTasksPanel.js.map +2 -2
  64. package/dist/components/Config.js +17 -4
  65. package/dist/components/Config.js.map +2 -2
  66. package/dist/components/ConsoleOAuthFlow.js.map +2 -2
  67. package/dist/components/CustomSelect/select-option.js +4 -1
  68. package/dist/components/CustomSelect/select-option.js.map +2 -2
  69. package/dist/components/Help.js +6 -8
  70. package/dist/components/Help.js.map +2 -2
  71. package/dist/components/Logo.js +1 -1
  72. package/dist/components/Logo.js.map +2 -2
  73. package/dist/components/ModelListManager.js.map +2 -2
  74. package/dist/components/ModelSelector/ModelSelector.js +2030 -0
  75. package/dist/components/ModelSelector/ModelSelector.js.map +7 -0
  76. package/dist/components/ModelSelector/ScreenContainer.js +27 -0
  77. package/dist/components/ModelSelector/ScreenContainer.js.map +7 -0
  78. package/dist/components/ModelSelector/constants.js +37 -0
  79. package/dist/components/ModelSelector/constants.js.map +7 -0
  80. package/dist/components/ModelSelector/hooks/index.js +5 -0
  81. package/dist/components/ModelSelector/hooks/index.js.map +7 -0
  82. package/dist/components/ModelSelector/hooks/useEscapeNavigation.js +21 -0
  83. package/dist/components/ModelSelector/hooks/useEscapeNavigation.js.map +7 -0
  84. package/dist/components/ModelSelector/index.js +17 -0
  85. package/dist/components/ModelSelector/index.js.map +7 -0
  86. package/dist/components/ModelSelector/types.js +1 -0
  87. package/dist/components/ModelSelector/types.js.map +7 -0
  88. package/dist/components/PressEnterToContinue.js +1 -1
  89. package/dist/components/PressEnterToContinue.js.map +2 -2
  90. package/dist/components/ProjectOnboarding.js +1 -1
  91. package/dist/components/ProjectOnboarding.js.map +2 -2
  92. package/dist/components/PromptInput.js +88 -37
  93. package/dist/components/PromptInput.js.map +2 -2
  94. package/dist/components/QuitSummary.js +17 -10
  95. package/dist/components/QuitSummary.js.map +2 -2
  96. package/dist/components/SentryErrorBoundary.js.map +2 -2
  97. package/dist/components/StreamingBashOutput.js.map +2 -2
  98. package/dist/components/StructuredDiff.js.map +2 -2
  99. package/dist/components/SubagentProgress.js.map +2 -2
  100. package/dist/components/TaskCard.js.map +2 -2
  101. package/dist/components/TextInput.js.map +1 -1
  102. package/dist/components/TodoItem.js.map +1 -1
  103. package/dist/components/binary-feedback/BinaryFeedbackOption.js +1 -3
  104. package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +2 -2
  105. package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +1 -1
  106. package/dist/components/messages/AssistantToolUseMessage.js +3 -1
  107. package/dist/components/messages/AssistantToolUseMessage.js.map +2 -2
  108. package/dist/components/messages/TaskProgressMessage.js.map +2 -2
  109. package/dist/components/messages/TaskToolMessage.js.map +2 -2
  110. package/dist/components/messages/UserToolResultMessage/utils.js.map +2 -2
  111. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +2 -2
  112. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +2 -2
  113. package/dist/components/permissions/hooks.js.map +2 -2
  114. package/dist/constants/modelCapabilities.js +1 -1
  115. package/dist/constants/modelCapabilities.js.map +2 -2
  116. package/dist/constants/prompts.js.map +1 -1
  117. package/dist/constants/timing.js +34 -0
  118. package/dist/constants/timing.js.map +7 -0
  119. package/dist/entrypoints/cli.js +128 -33
  120. package/dist/entrypoints/cli.js.map +3 -3
  121. package/dist/entrypoints/mcp.js +13 -18
  122. package/dist/entrypoints/mcp.js.map +2 -2
  123. package/dist/hooks/useCanUseTool.js.map +2 -2
  124. package/dist/hooks/useCancelRequest.js.map +1 -1
  125. package/dist/hooks/useHistorySearch.js.map +2 -2
  126. package/dist/hooks/useLogStartupTime.js.map +2 -2
  127. package/dist/hooks/usePermissionRequestLogging.js.map +2 -2
  128. package/dist/hooks/useTextInput.js.map +1 -1
  129. package/dist/hooks/useUnifiedCompletion.js +493 -394
  130. package/dist/hooks/useUnifiedCompletion.js.map +2 -2
  131. package/dist/index.js.map +2 -2
  132. package/dist/permissions.js +4 -7
  133. package/dist/permissions.js.map +2 -2
  134. package/dist/query.js +6 -1
  135. package/dist/query.js.map +2 -2
  136. package/dist/screens/REPL.js +72 -36
  137. package/dist/screens/REPL.js.map +2 -2
  138. package/dist/screens/ResumeConversation.js +2 -1
  139. package/dist/screens/ResumeConversation.js.map +2 -2
  140. package/dist/services/adapters/base.js.map +2 -2
  141. package/dist/services/adapters/chatCompletions.js.map +2 -2
  142. package/dist/services/adapters/responsesAPI.js +3 -1
  143. package/dist/services/adapters/responsesAPI.js.map +2 -2
  144. package/dist/services/claude.js +327 -328
  145. package/dist/services/claude.js.map +2 -2
  146. package/dist/services/customCommands.js +6 -1
  147. package/dist/services/customCommands.js.map +2 -2
  148. package/dist/services/fileFreshness.js.map +2 -2
  149. package/dist/services/gpt5ConnectionTest.js +20 -7
  150. package/dist/services/gpt5ConnectionTest.js.map +2 -2
  151. package/dist/services/hookExecutor.js +6 -12
  152. package/dist/services/hookExecutor.js.map +2 -2
  153. package/dist/services/mcpClient.js +29 -2
  154. package/dist/services/mcpClient.js.map +2 -2
  155. package/dist/services/mentionProcessor.js +23 -10
  156. package/dist/services/mentionProcessor.js.map +2 -2
  157. package/dist/services/modelAdapterFactory.js.map +2 -2
  158. package/dist/services/oauth.js.map +2 -2
  159. package/dist/services/openai.js +109 -72
  160. package/dist/services/openai.js.map +3 -3
  161. package/dist/services/responseStateManager.js.map +2 -2
  162. package/dist/services/systemReminder.js.map +2 -2
  163. package/dist/tools/ArchitectTool/ArchitectTool.js +10 -9
  164. package/dist/tools/ArchitectTool/ArchitectTool.js.map +2 -2
  165. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +14 -8
  166. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +2 -2
  167. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js +8 -1
  168. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +2 -2
  169. package/dist/tools/BashOutputTool/BashOutputTool.js.map +2 -2
  170. package/dist/tools/BashTool/BashTool.js.map +2 -2
  171. package/dist/tools/FileReadTool/FileReadTool.js +23 -4
  172. package/dist/tools/FileReadTool/FileReadTool.js.map +2 -2
  173. package/dist/tools/FileWriteTool/FileWriteTool.js.map +2 -2
  174. package/dist/tools/GlobTool/GlobTool.js +11 -2
  175. package/dist/tools/GlobTool/GlobTool.js.map +2 -2
  176. package/dist/tools/GrepTool/GrepTool.js +7 -5
  177. package/dist/tools/GrepTool/GrepTool.js.map +2 -2
  178. package/dist/tools/MCPTool/MCPTool.js +11 -12
  179. package/dist/tools/MCPTool/MCPTool.js.map +2 -2
  180. package/dist/tools/MultiEditTool/MultiEditTool.js +4 -1
  181. package/dist/tools/MultiEditTool/MultiEditTool.js.map +2 -2
  182. package/dist/tools/NotebookReadTool/NotebookReadTool.js +11 -5
  183. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +2 -2
  184. package/dist/tools/SkillTool/SkillTool.js +18 -6
  185. package/dist/tools/SkillTool/SkillTool.js.map +2 -2
  186. package/dist/tools/TaskTool/TaskTool.js +37 -51
  187. package/dist/tools/TaskTool/TaskTool.js.map +2 -2
  188. package/dist/tools/TaskTool/prompt.js.map +2 -2
  189. package/dist/tools/ThinkTool/ThinkTool.js +6 -1
  190. package/dist/tools/ThinkTool/ThinkTool.js.map +2 -2
  191. package/dist/tools/TodoWriteTool/TodoWriteTool.js +29 -5
  192. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +2 -2
  193. package/dist/tools/URLFetcherTool/URLFetcherTool.js +5 -2
  194. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +2 -2
  195. package/dist/tools/URLFetcherTool/cache.js +6 -3
  196. package/dist/tools/URLFetcherTool/cache.js.map +2 -2
  197. package/dist/tools/URLFetcherTool/htmlToMarkdown.js +3 -1
  198. package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +2 -2
  199. package/dist/tools/WebSearchTool/WebSearchTool.js +6 -1
  200. package/dist/tools/WebSearchTool/WebSearchTool.js.map +2 -2
  201. package/dist/tools/WebSearchTool/prompt.js.map +2 -2
  202. package/dist/tools/WebSearchTool/searchProviders.js +15 -6
  203. package/dist/tools/WebSearchTool/searchProviders.js.map +2 -2
  204. package/dist/tools.js +4 -1
  205. package/dist/tools.js.map +2 -2
  206. package/dist/types/core.js +1 -0
  207. package/dist/types/core.js.map +7 -0
  208. package/dist/types/hooks.js +1 -4
  209. package/dist/types/hooks.js.map +2 -2
  210. package/dist/types/marketplace.js +8 -2
  211. package/dist/types/marketplace.js.map +2 -2
  212. package/dist/types/plugin.js +9 -6
  213. package/dist/types/plugin.js.map +2 -2
  214. package/dist/utils/BackgroundShellManager.js +76 -10
  215. package/dist/utils/BackgroundShellManager.js.map +2 -2
  216. package/dist/utils/PersistentShell.js +7 -2
  217. package/dist/utils/PersistentShell.js.map +2 -2
  218. package/dist/utils/advancedFuzzyMatcher.js +4 -1
  219. package/dist/utils/advancedFuzzyMatcher.js.map +2 -2
  220. package/dist/utils/agentLoader.js +69 -35
  221. package/dist/utils/agentLoader.js.map +2 -2
  222. package/dist/utils/agentStorage.js.map +2 -2
  223. package/dist/utils/async.js +163 -0
  224. package/dist/utils/async.js.map +7 -0
  225. package/dist/utils/autoUpdater.js +8 -2
  226. package/dist/utils/autoUpdater.js.map +2 -2
  227. package/dist/utils/commands.js +23 -11
  228. package/dist/utils/commands.js.map +2 -2
  229. package/dist/utils/commonUnixCommands.js +3 -1
  230. package/dist/utils/commonUnixCommands.js.map +2 -2
  231. package/dist/utils/compressionMode.js.map +2 -2
  232. package/dist/utils/config.js +30 -14
  233. package/dist/utils/config.js.map +2 -2
  234. package/dist/utils/debugLogger.js.map +2 -2
  235. package/dist/utils/env.js.map +2 -2
  236. package/dist/utils/envConfig.js +82 -0
  237. package/dist/utils/envConfig.js.map +7 -0
  238. package/dist/utils/errorHandling.js +89 -0
  239. package/dist/utils/errorHandling.js.map +7 -0
  240. package/dist/utils/expertChatStorage.js.map +2 -2
  241. package/dist/utils/fuzzyMatcher.js +13 -7
  242. package/dist/utils/fuzzyMatcher.js.map +2 -2
  243. package/dist/utils/hookManager.js +14 -4
  244. package/dist/utils/hookManager.js.map +2 -2
  245. package/dist/utils/log.js.map +2 -2
  246. package/dist/utils/marketplaceManager.js +44 -9
  247. package/dist/utils/marketplaceManager.js.map +2 -2
  248. package/dist/utils/messageContextManager.js.map +1 -1
  249. package/dist/utils/messages.js +6 -3
  250. package/dist/utils/messages.js.map +2 -2
  251. package/dist/utils/model.js +3 -1
  252. package/dist/utils/model.js.map +2 -2
  253. package/dist/utils/pluginInstaller.js +3 -15
  254. package/dist/utils/pluginInstaller.js.map +2 -2
  255. package/dist/utils/pluginLoader.js +41 -13
  256. package/dist/utils/pluginLoader.js.map +2 -2
  257. package/dist/utils/pluginRegistry.js.map +2 -2
  258. package/dist/utils/pluginValidator.js +71 -49
  259. package/dist/utils/pluginValidator.js.map +2 -2
  260. package/dist/utils/ptyCompat.js.map +2 -2
  261. package/dist/utils/roundConverter.js.map +2 -2
  262. package/dist/utils/secureFile.js +43 -14
  263. package/dist/utils/secureFile.js.map +2 -2
  264. package/dist/utils/sessionState.js.map +2 -2
  265. package/dist/utils/skillLoader.js.map +2 -2
  266. package/dist/utils/teamConfig.js +7 -4
  267. package/dist/utils/teamConfig.js.map +2 -2
  268. package/dist/utils/theme.js.map +2 -2
  269. package/dist/utils/thinking.js.map +2 -2
  270. package/dist/utils/unaryLogging.js.map +2 -2
  271. package/dist/version.js +2 -2
  272. package/dist/version.js.map +1 -1
  273. package/package.json +5 -5
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/useLogStartupTime.ts"],
4
- "sourcesContent": ["import { useEffect } from 'react'\n \n\nexport function useLogStartupTime(): void {\n useEffect(() => {\n const startupTimeMs = Math.round(process.uptime() * 1000)\n }, [])\n}\n"],
5
- "mappings": "AAAA,SAAS,iBAAiB;AAGnB,SAAS,oBAA0B;AACxC,YAAU,MAAM;AACd,UAAM,gBAAgB,KAAK,MAAM,QAAQ,OAAO,IAAI,GAAI;AAAA,EAC1D,GAAG,CAAC,CAAC;AACP;",
4
+ "sourcesContent": ["import { useEffect } from 'react'\n\nexport function useLogStartupTime(): void {\n useEffect(() => {\n const startupTimeMs = Math.round(process.uptime() * 1000)\n }, [])\n}\n"],
5
+ "mappings": "AAAA,SAAS,iBAAiB;AAEnB,SAAS,oBAA0B;AACxC,YAAU,MAAM;AACd,UAAM,gBAAgB,KAAK,MAAM,QAAQ,OAAO,IAAI,GAAI;AAAA,EAC1D,GAAG,CAAC,CAAC;AACP;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/usePermissionRequestLogging.ts"],
4
- "sourcesContent": ["import { useEffect } from 'react'\n \nimport { logUnaryEvent, CompletionType } from '@utils/unaryLogging'\nimport { ToolUseConfirm } from '@components/permissions/PermissionRequest'\nimport { env } from '@utils/env'\n\nexport type UnaryEvent = {\n completion_type: CompletionType\n language_name: string | Promise<string>\n}\n\n/**\n * Logs permission request events via unary logging.\n * Can handle either a string or Promise<string> for language_name.\n */\nexport function usePermissionRequestLogging(\n toolUseConfirm: ToolUseConfirm,\n unaryEvent: UnaryEvent,\n): void {\n useEffect(() => {\n \n\n // Handle string or Promise language name\n const languagePromise = Promise.resolve(unaryEvent.language_name)\n\n // Log unary event once language is resolved\n languagePromise.then(language => {\n logUnaryEvent({\n completion_type: unaryEvent.completion_type,\n event: 'response',\n metadata: {\n language_name: language,\n message_id: toolUseConfirm.assistantMessage.message.id,\n platform: env.platform,\n },\n })\n })\n }, [toolUseConfirm, unaryEvent])\n}\n"],
5
- "mappings": "AAAA,SAAS,iBAAiB;AAE1B,SAAS,qBAAqC;AAE9C,SAAS,WAAW;AAWb,SAAS,4BACd,gBACA,YACM;AACN,YAAU,MAAM;AAId,UAAM,kBAAkB,QAAQ,QAAQ,WAAW,aAAa;AAGhE,oBAAgB,KAAK,cAAY;AAC/B,oBAAc;AAAA,QACZ,iBAAiB,WAAW;AAAA,QAC5B,OAAO;AAAA,QACP,UAAU;AAAA,UACR,eAAe;AAAA,UACf,YAAY,eAAe,iBAAiB,QAAQ;AAAA,UACpD,UAAU,IAAI;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH,GAAG,CAAC,gBAAgB,UAAU,CAAC;AACjC;",
4
+ "sourcesContent": ["import { useEffect } from 'react'\n\nimport { logUnaryEvent, CompletionType } from '@utils/unaryLogging'\nimport { ToolUseConfirm } from '@components/permissions/PermissionRequest'\nimport { env } from '@utils/env'\n\nexport type UnaryEvent = {\n completion_type: CompletionType\n language_name: string | Promise<string>\n}\n\n/**\n * Logs permission request events via unary logging.\n * Can handle either a string or Promise<string> for language_name.\n */\nexport function usePermissionRequestLogging(\n toolUseConfirm: ToolUseConfirm,\n unaryEvent: UnaryEvent,\n): void {\n useEffect(() => {\n // Handle string or Promise language name\n const languagePromise = Promise.resolve(unaryEvent.language_name)\n\n // Log unary event once language is resolved\n languagePromise.then(language => {\n logUnaryEvent({\n completion_type: unaryEvent.completion_type,\n event: 'response',\n metadata: {\n language_name: language,\n message_id: toolUseConfirm.assistantMessage.message.id,\n platform: env.platform,\n },\n })\n })\n }, [toolUseConfirm, unaryEvent])\n}\n"],
5
+ "mappings": "AAAA,SAAS,iBAAiB;AAE1B,SAAS,qBAAqC;AAE9C,SAAS,WAAW;AAWb,SAAS,4BACd,gBACA,YACM;AACN,YAAU,MAAM;AAEd,UAAM,kBAAkB,QAAQ,QAAQ,WAAW,aAAa;AAGhE,oBAAgB,KAAK,cAAY;AAC/B,oBAAc;AAAA,QACZ,iBAAiB,WAAW;AAAA,QAC5B,OAAO;AAAA,QACP,UAAU;AAAA,UACR,eAAe;AAAA,UACf,YAAY,eAAe,iBAAiB,QAAQ;AAAA,UACpD,UAAU,IAAI;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH,GAAG,CAAC,gBAAgB,UAAU,CAAC;AACjC;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/useTextInput.ts"],
4
- "sourcesContent": ["import { useState } from 'react'\nimport { type Key } from 'ink'\nimport { useDoublePress } from './useDoublePress'\nimport { Cursor } from '@utils/Cursor'\nimport {\n getImageFromClipboard,\n CLIPBOARD_ERROR_MESSAGE,\n} from '@utils/imagePaste'\n\nconst IMAGE_PLACEHOLDER = '[Image pasted]'\n\ntype MaybeCursor = void | Cursor\ntype InputHandler = (input: string) => MaybeCursor\ntype InputMapper = (input: string) => MaybeCursor\nfunction mapInput(input_map: Array<[string, InputHandler]>): InputMapper {\n return function (input: string): MaybeCursor {\n const handler = new Map(input_map).get(input) ?? (() => {})\n return handler(input)\n }\n}\n\ntype UseTextInputProps = {\n value: string\n onChange: (value: string) => void\n onSubmit?: (value: string) => void\n onExit?: () => void\n onExitMessage?: (show: boolean, key?: string) => void\n onMessage?: (show: boolean, message?: string) => void\n onHistoryUp?: () => void\n onHistoryDown?: () => void\n onHistoryReset?: () => void\n focus?: boolean\n mask?: string\n multiline?: boolean\n cursorChar: string\n highlightPastedText?: boolean\n invert: (text: string) => string\n themeText: (text: string) => string\n columns: number\n onImagePaste?: (base64Image: string) => void\n disableCursorMovementForUpDownKeys?: boolean\n externalOffset: number\n onOffsetChange: (offset: number) => void\n}\n\ntype UseTextInputResult = {\n renderedValue: string\n onInput: (input: string, key: Key) => void\n offset: number\n setOffset: (offset: number) => void\n}\n\nexport function useTextInput({\n value: originalValue,\n onChange,\n onSubmit,\n onExit,\n onExitMessage,\n onMessage,\n onHistoryUp,\n onHistoryDown,\n onHistoryReset,\n mask = '',\n multiline = false,\n cursorChar,\n invert,\n columns,\n onImagePaste,\n disableCursorMovementForUpDownKeys = false,\n externalOffset,\n onOffsetChange,\n}: UseTextInputProps): UseTextInputResult {\n const offset = externalOffset\n const setOffset = onOffsetChange\n const cursor = Cursor.fromText(originalValue, columns, offset)\n const [imagePasteErrorTimeout, setImagePasteErrorTimeout] =\n useState<NodeJS.Timeout | null>(null)\n\n function maybeClearImagePasteErrorTimeout() {\n if (!imagePasteErrorTimeout) {\n return\n }\n clearTimeout(imagePasteErrorTimeout)\n setImagePasteErrorTimeout(null)\n onMessage?.(false)\n }\n\n const handleCtrlC = useDoublePress(\n show => {\n maybeClearImagePasteErrorTimeout()\n onExitMessage?.(show, 'Ctrl-C')\n },\n () => onExit?.(),\n () => {\n if (originalValue) {\n onChange('')\n onHistoryReset?.()\n }\n },\n )\n\n // Keep Escape for clearing input\n const handleEscape = useDoublePress(\n show => {\n maybeClearImagePasteErrorTimeout()\n onMessage?.(!!originalValue && show, `Press Escape again to clear`)\n },\n () => {\n if (originalValue) {\n onChange('')\n }\n },\n )\n function clear() {\n return Cursor.fromText('', columns, 0)\n }\n\n const handleEmptyCtrlD = useDoublePress(\n show => onExitMessage?.(show, 'Ctrl-D'),\n () => onExit?.(),\n )\n\n function handleCtrlD(): MaybeCursor {\n maybeClearImagePasteErrorTimeout()\n if (cursor.text === '') {\n // When input is empty, handle double-press\n handleEmptyCtrlD()\n return cursor\n }\n // When input is not empty, delete forward like iPython\n return cursor.del()\n }\n\n function tryImagePaste() {\n const base64Image = getImageFromClipboard()\n if (base64Image === null) {\n if (process.platform !== 'darwin') {\n return cursor\n }\n onMessage?.(true, CLIPBOARD_ERROR_MESSAGE)\n maybeClearImagePasteErrorTimeout()\n setImagePasteErrorTimeout(\n setTimeout(() => {\n onMessage?.(false)\n }, 4000),\n )\n return cursor\n }\n\n onImagePaste?.(base64Image)\n return cursor.insert(IMAGE_PLACEHOLDER)\n }\n\n const handleCtrl = mapInput([\n ['a', () => cursor.startOfLine()],\n ['b', () => cursor.left()],\n ['c', handleCtrlC],\n ['d', handleCtrlD],\n ['e', () => cursor.endOfLine()],\n ['f', () => cursor.right()],\n [\n 'h',\n () => {\n maybeClearImagePasteErrorTimeout()\n return cursor.backspace()\n },\n ],\n ['j', () => cursor.insert('\\n')], // Ctrl+J: Raw newline (Phase 2)\n ['k', () => cursor.deleteToLineEnd()],\n ['l', () => clear()],\n ['n', () => downOrHistoryDown()],\n ['p', () => upOrHistoryUp()],\n ['u', () => cursor.deleteToLineStart()],\n ['v', tryImagePaste],\n ['w', () => cursor.deleteWordBefore()],\n ])\n\n const handleMeta = mapInput([\n ['b', () => cursor.prevWord()],\n ['f', () => cursor.nextWord()],\n ['d', () => cursor.deleteWordAfter()],\n ])\n\n function handleEnter(key: Key) {\n if (\n multiline &&\n cursor.offset > 0 &&\n cursor.text[cursor.offset - 1] === '\\\\'\n ) {\n return cursor.backspace().insert('\\n')\n }\n if (key.meta) {\n return cursor.insert('\\n')\n }\n onSubmit?.(originalValue)\n }\n\n function upOrHistoryUp() {\n if (disableCursorMovementForUpDownKeys) {\n onHistoryUp?.()\n return cursor\n }\n const cursorUp = cursor.up()\n if (cursorUp.equals(cursor)) {\n // already at beginning\n onHistoryUp?.()\n }\n return cursorUp\n }\n function downOrHistoryDown() {\n if (disableCursorMovementForUpDownKeys) {\n onHistoryDown?.()\n return cursor\n }\n const cursorDown = cursor.down()\n if (cursorDown.equals(cursor)) {\n onHistoryDown?.()\n }\n return cursorDown\n }\n\n function onInput(input: string, key: Key): void {\n if (key.tab) {\n return // Skip Tab key processing - let completion system handle it\n }\n \n // Direct handling for backspace or delete (which is being detected as delete)\n if (\n key.backspace ||\n key.delete ||\n input === '\\b' ||\n input === '\\x7f' ||\n input === '\\x08'\n ) {\n const nextCursor = cursor.backspace()\n if (!cursor.equals(nextCursor)) {\n setOffset(nextCursor.offset)\n if (cursor.text !== nextCursor.text) {\n onChange(nextCursor.text)\n }\n }\n return\n }\n\n const nextCursor = mapKey(key)(input)\n if (nextCursor) {\n if (!cursor.equals(nextCursor)) {\n setOffset(nextCursor.offset)\n if (cursor.text !== nextCursor.text) {\n onChange(nextCursor.text)\n }\n }\n }\n }\n\n function mapKey(key: Key): InputMapper {\n // Direct handling for backspace or delete\n if (key.backspace || key.delete) {\n maybeClearImagePasteErrorTimeout()\n return () => cursor.backspace()\n }\n\n switch (true) {\n case key.escape:\n return handleEscape\n case key.leftArrow && (key.ctrl || key.meta || ('fn' in key && key.fn)):\n return () => cursor.prevWord()\n case key.rightArrow && (key.ctrl || key.meta || ('fn' in key && key.fn)):\n return () => cursor.nextWord()\n case key.ctrl:\n return handleCtrl\n case 'home' in key && key.home:\n return () => cursor.startOfLine()\n case 'end' in key && key.end:\n return () => cursor.endOfLine()\n case key.pageDown:\n return () => cursor.endOfLine()\n case key.pageUp:\n return () => cursor.startOfLine()\n case key.meta:\n return handleMeta\n case key.return:\n return () => handleEnter(key)\n // Remove Tab handling - let completion system handle it\n case key.upArrow:\n return upOrHistoryUp\n case key.downArrow:\n return downOrHistoryDown\n case key.leftArrow:\n return () => cursor.left()\n case key.rightArrow:\n return () => cursor.right()\n }\n return function (input: string) {\n switch (true) {\n // Home key\n case input == '\\x1b[H' || input == '\\x1b[1~':\n return cursor.startOfLine()\n // End key\n case input == '\\x1b[F' || input == '\\x1b[4~':\n return cursor.endOfLine()\n // Handle backspace character explicitly - this is the key fix\n case input === '\\b' || input === '\\x7f' || input === '\\x08':\n maybeClearImagePasteErrorTimeout()\n return cursor.backspace()\n default:\n return cursor.insert(input.replace(/\\r/g, '\\n'))\n }\n }\n }\n\n return {\n onInput,\n renderedValue: cursor.render(cursorChar, mask, invert),\n offset,\n setOffset,\n }\n}\n"],
4
+ "sourcesContent": ["import { useState } from 'react'\nimport { type Key } from 'ink'\nimport { useDoublePress } from './useDoublePress'\nimport { Cursor } from '@utils/Cursor'\nimport {\n getImageFromClipboard,\n CLIPBOARD_ERROR_MESSAGE,\n} from '@utils/imagePaste'\n\nconst IMAGE_PLACEHOLDER = '[Image pasted]'\n\ntype MaybeCursor = void | Cursor\ntype InputHandler = (input: string) => MaybeCursor\ntype InputMapper = (input: string) => MaybeCursor\nfunction mapInput(input_map: Array<[string, InputHandler]>): InputMapper {\n return function (input: string): MaybeCursor {\n const handler = new Map(input_map).get(input) ?? (() => {})\n return handler(input)\n }\n}\n\ntype UseTextInputProps = {\n value: string\n onChange: (value: string) => void\n onSubmit?: (value: string) => void\n onExit?: () => void\n onExitMessage?: (show: boolean, key?: string) => void\n onMessage?: (show: boolean, message?: string) => void\n onHistoryUp?: () => void\n onHistoryDown?: () => void\n onHistoryReset?: () => void\n focus?: boolean\n mask?: string\n multiline?: boolean\n cursorChar: string\n highlightPastedText?: boolean\n invert: (text: string) => string\n themeText: (text: string) => string\n columns: number\n onImagePaste?: (base64Image: string) => void\n disableCursorMovementForUpDownKeys?: boolean\n externalOffset: number\n onOffsetChange: (offset: number) => void\n}\n\ntype UseTextInputResult = {\n renderedValue: string\n onInput: (input: string, key: Key) => void\n offset: number\n setOffset: (offset: number) => void\n}\n\nexport function useTextInput({\n value: originalValue,\n onChange,\n onSubmit,\n onExit,\n onExitMessage,\n onMessage,\n onHistoryUp,\n onHistoryDown,\n onHistoryReset,\n mask = '',\n multiline = false,\n cursorChar,\n invert,\n columns,\n onImagePaste,\n disableCursorMovementForUpDownKeys = false,\n externalOffset,\n onOffsetChange,\n}: UseTextInputProps): UseTextInputResult {\n const offset = externalOffset\n const setOffset = onOffsetChange\n const cursor = Cursor.fromText(originalValue, columns, offset)\n const [imagePasteErrorTimeout, setImagePasteErrorTimeout] =\n useState<NodeJS.Timeout | null>(null)\n\n function maybeClearImagePasteErrorTimeout() {\n if (!imagePasteErrorTimeout) {\n return\n }\n clearTimeout(imagePasteErrorTimeout)\n setImagePasteErrorTimeout(null)\n onMessage?.(false)\n }\n\n const handleCtrlC = useDoublePress(\n show => {\n maybeClearImagePasteErrorTimeout()\n onExitMessage?.(show, 'Ctrl-C')\n },\n () => onExit?.(),\n () => {\n if (originalValue) {\n onChange('')\n onHistoryReset?.()\n }\n },\n )\n\n // Keep Escape for clearing input\n const handleEscape = useDoublePress(\n show => {\n maybeClearImagePasteErrorTimeout()\n onMessage?.(!!originalValue && show, `Press Escape again to clear`)\n },\n () => {\n if (originalValue) {\n onChange('')\n }\n },\n )\n function clear() {\n return Cursor.fromText('', columns, 0)\n }\n\n const handleEmptyCtrlD = useDoublePress(\n show => onExitMessage?.(show, 'Ctrl-D'),\n () => onExit?.(),\n )\n\n function handleCtrlD(): MaybeCursor {\n maybeClearImagePasteErrorTimeout()\n if (cursor.text === '') {\n // When input is empty, handle double-press\n handleEmptyCtrlD()\n return cursor\n }\n // When input is not empty, delete forward like iPython\n return cursor.del()\n }\n\n function tryImagePaste() {\n const base64Image = getImageFromClipboard()\n if (base64Image === null) {\n if (process.platform !== 'darwin') {\n return cursor\n }\n onMessage?.(true, CLIPBOARD_ERROR_MESSAGE)\n maybeClearImagePasteErrorTimeout()\n setImagePasteErrorTimeout(\n setTimeout(() => {\n onMessage?.(false)\n }, 4000),\n )\n return cursor\n }\n\n onImagePaste?.(base64Image)\n return cursor.insert(IMAGE_PLACEHOLDER)\n }\n\n const handleCtrl = mapInput([\n ['a', () => cursor.startOfLine()],\n ['b', () => cursor.left()],\n ['c', handleCtrlC],\n ['d', handleCtrlD],\n ['e', () => cursor.endOfLine()],\n ['f', () => cursor.right()],\n [\n 'h',\n () => {\n maybeClearImagePasteErrorTimeout()\n return cursor.backspace()\n },\n ],\n ['j', () => cursor.insert('\\n')], // Ctrl+J: Raw newline (Phase 2)\n ['k', () => cursor.deleteToLineEnd()],\n ['l', () => clear()],\n ['n', () => downOrHistoryDown()],\n ['p', () => upOrHistoryUp()],\n ['u', () => cursor.deleteToLineStart()],\n ['v', tryImagePaste],\n ['w', () => cursor.deleteWordBefore()],\n ])\n\n const handleMeta = mapInput([\n ['b', () => cursor.prevWord()],\n ['f', () => cursor.nextWord()],\n ['d', () => cursor.deleteWordAfter()],\n ])\n\n function handleEnter(key: Key) {\n if (\n multiline &&\n cursor.offset > 0 &&\n cursor.text[cursor.offset - 1] === '\\\\'\n ) {\n return cursor.backspace().insert('\\n')\n }\n if (key.meta) {\n return cursor.insert('\\n')\n }\n onSubmit?.(originalValue)\n }\n\n function upOrHistoryUp() {\n if (disableCursorMovementForUpDownKeys) {\n onHistoryUp?.()\n return cursor\n }\n const cursorUp = cursor.up()\n if (cursorUp.equals(cursor)) {\n // already at beginning\n onHistoryUp?.()\n }\n return cursorUp\n }\n function downOrHistoryDown() {\n if (disableCursorMovementForUpDownKeys) {\n onHistoryDown?.()\n return cursor\n }\n const cursorDown = cursor.down()\n if (cursorDown.equals(cursor)) {\n onHistoryDown?.()\n }\n return cursorDown\n }\n\n function onInput(input: string, key: Key): void {\n if (key.tab) {\n return // Skip Tab key processing - let completion system handle it\n }\n\n // Direct handling for backspace or delete (which is being detected as delete)\n if (\n key.backspace ||\n key.delete ||\n input === '\\b' ||\n input === '\\x7f' ||\n input === '\\x08'\n ) {\n const nextCursor = cursor.backspace()\n if (!cursor.equals(nextCursor)) {\n setOffset(nextCursor.offset)\n if (cursor.text !== nextCursor.text) {\n onChange(nextCursor.text)\n }\n }\n return\n }\n\n const nextCursor = mapKey(key)(input)\n if (nextCursor) {\n if (!cursor.equals(nextCursor)) {\n setOffset(nextCursor.offset)\n if (cursor.text !== nextCursor.text) {\n onChange(nextCursor.text)\n }\n }\n }\n }\n\n function mapKey(key: Key): InputMapper {\n // Direct handling for backspace or delete\n if (key.backspace || key.delete) {\n maybeClearImagePasteErrorTimeout()\n return () => cursor.backspace()\n }\n\n switch (true) {\n case key.escape:\n return handleEscape\n case key.leftArrow && (key.ctrl || key.meta || ('fn' in key && key.fn)):\n return () => cursor.prevWord()\n case key.rightArrow && (key.ctrl || key.meta || ('fn' in key && key.fn)):\n return () => cursor.nextWord()\n case key.ctrl:\n return handleCtrl\n case 'home' in key && key.home:\n return () => cursor.startOfLine()\n case 'end' in key && key.end:\n return () => cursor.endOfLine()\n case key.pageDown:\n return () => cursor.endOfLine()\n case key.pageUp:\n return () => cursor.startOfLine()\n case key.meta:\n return handleMeta\n case key.return:\n return () => handleEnter(key)\n // Remove Tab handling - let completion system handle it\n case key.upArrow:\n return upOrHistoryUp\n case key.downArrow:\n return downOrHistoryDown\n case key.leftArrow:\n return () => cursor.left()\n case key.rightArrow:\n return () => cursor.right()\n }\n return function (input: string) {\n switch (true) {\n // Home key\n case input == '\\x1b[H' || input == '\\x1b[1~':\n return cursor.startOfLine()\n // End key\n case input == '\\x1b[F' || input == '\\x1b[4~':\n return cursor.endOfLine()\n // Handle backspace character explicitly - this is the key fix\n case input === '\\b' || input === '\\x7f' || input === '\\x08':\n maybeClearImagePasteErrorTimeout()\n return cursor.backspace()\n default:\n return cursor.insert(input.replace(/\\r/g, '\\n'))\n }\n }\n }\n\n return {\n onInput,\n renderedValue: cursor.render(cursorChar, mask, invert),\n offset,\n setOffset,\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["nextCursor"]
7
7
  }