@within-7/minto 0.1.4 → 0.1.6
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.
- package/dist/commands/agents/AgentsCommand.js +2342 -0
- package/dist/commands/agents/AgentsCommand.js.map +7 -0
- package/dist/commands/agents/constants.js +58 -0
- package/dist/commands/agents/constants.js.map +7 -0
- package/dist/commands/agents/index.js +37 -0
- package/dist/commands/agents/index.js.map +7 -0
- package/dist/commands/agents/types.js +10 -0
- package/dist/commands/agents/types.js.map +7 -0
- package/dist/commands/agents/utils/fileOperations.js +185 -0
- package/dist/commands/agents/utils/fileOperations.js.map +7 -0
- package/dist/commands/agents/utils/index.js +21 -0
- package/dist/commands/agents/utils/index.js.map +7 -0
- package/dist/commands/bug.js +2 -2
- package/dist/commands/bug.js.map +2 -2
- package/dist/commands/compact.js +5 -5
- package/dist/commands/compact.js.map +2 -2
- package/dist/commands/ctx_viz.js +55 -22
- package/dist/commands/ctx_viz.js.map +2 -2
- package/dist/commands/mcp-interactive.js +11 -11
- package/dist/commands/mcp-interactive.js.map +2 -2
- package/dist/commands/model.js +94 -32
- package/dist/commands/model.js.map +3 -3
- package/dist/commands/plugin/AddMarketplaceForm.js +49 -21
- package/dist/commands/plugin/AddMarketplaceForm.js.map +2 -2
- package/dist/commands/plugin/ConfirmDialog.js +38 -26
- package/dist/commands/plugin/ConfirmDialog.js.map +2 -2
- package/dist/commands/plugin/InstalledPluginsByMarketplace.js +24 -8
- package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +2 -2
- package/dist/commands/plugin/InstalledPluginsManager.js +3 -1
- package/dist/commands/plugin/InstalledPluginsManager.js.map +2 -2
- package/dist/commands/plugin/MainMenu.js +16 -7
- package/dist/commands/plugin/MainMenu.js.map +2 -2
- package/dist/commands/plugin/MarketplaceManager.js +84 -39
- package/dist/commands/plugin/MarketplaceManager.js.map +2 -2
- package/dist/commands/plugin/MarketplaceSelector.js +7 -3
- package/dist/commands/plugin/MarketplaceSelector.js.map +2 -2
- package/dist/commands/plugin/PlaceholderScreen.js +16 -2
- package/dist/commands/plugin/PlaceholderScreen.js.map +2 -2
- package/dist/commands/plugin/PluginBrowser.js +4 -2
- package/dist/commands/plugin/PluginBrowser.js.map +2 -2
- package/dist/commands/plugin/PluginDetailsInstall.js +12 -6
- package/dist/commands/plugin/PluginDetailsInstall.js.map +2 -2
- package/dist/commands/plugin/PluginDetailsManage.js +14 -5
- package/dist/commands/plugin/PluginDetailsManage.js.map +2 -2
- package/dist/commands/plugin/example-usage.js.map +2 -2
- package/dist/commands/plugin/utils.js.map +2 -2
- package/dist/commands/plugin.js +226 -46
- package/dist/commands/plugin.js.map +2 -2
- package/dist/commands/refreshCommands.js +6 -3
- package/dist/commands/refreshCommands.js.map +2 -2
- package/dist/commands/resume.js +2 -1
- package/dist/commands/resume.js.map +2 -2
- package/dist/commands/setup.js +19 -5
- package/dist/commands/setup.js.map +2 -2
- package/dist/commands/terminalSetup.js +2 -2
- package/dist/commands/terminalSetup.js.map +1 -1
- package/dist/commands.js +14 -30
- package/dist/commands.js.map +2 -2
- package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +2 -2
- package/dist/components/AskUserQuestionDialog/QuestionView.js +10 -1
- package/dist/components/AskUserQuestionDialog/QuestionView.js.map +2 -2
- package/dist/components/BackgroundTasksPanel.js +5 -1
- package/dist/components/BackgroundTasksPanel.js.map +2 -2
- package/dist/components/Config.js +17 -4
- package/dist/components/Config.js.map +2 -2
- package/dist/components/ConsoleOAuthFlow.js.map +2 -2
- package/dist/components/CustomSelect/select-option.js +4 -1
- package/dist/components/CustomSelect/select-option.js.map +2 -2
- package/dist/components/Help.js +6 -8
- package/dist/components/Help.js.map +2 -2
- package/dist/components/Logo.js +1 -1
- package/dist/components/Logo.js.map +2 -2
- package/dist/components/ModelListManager.js.map +2 -2
- package/dist/components/ModelSelector/ModelSelector.js +2030 -0
- package/dist/components/ModelSelector/ModelSelector.js.map +7 -0
- package/dist/components/ModelSelector/ScreenContainer.js +27 -0
- package/dist/components/ModelSelector/ScreenContainer.js.map +7 -0
- package/dist/components/ModelSelector/constants.js +37 -0
- package/dist/components/ModelSelector/constants.js.map +7 -0
- package/dist/components/ModelSelector/hooks/index.js +5 -0
- package/dist/components/ModelSelector/hooks/index.js.map +7 -0
- package/dist/components/ModelSelector/hooks/useEscapeNavigation.js +21 -0
- package/dist/components/ModelSelector/hooks/useEscapeNavigation.js.map +7 -0
- package/dist/components/ModelSelector/index.js +17 -0
- package/dist/components/ModelSelector/index.js.map +7 -0
- package/dist/components/ModelSelector/types.js +1 -0
- package/dist/components/ModelSelector/types.js.map +7 -0
- package/dist/components/PressEnterToContinue.js +1 -1
- package/dist/components/PressEnterToContinue.js.map +2 -2
- package/dist/components/ProjectOnboarding.js +1 -1
- package/dist/components/ProjectOnboarding.js.map +2 -2
- package/dist/components/PromptInput.js +88 -37
- package/dist/components/PromptInput.js.map +2 -2
- package/dist/components/QuitSummary.js +17 -10
- package/dist/components/QuitSummary.js.map +2 -2
- package/dist/components/SentryErrorBoundary.js.map +2 -2
- package/dist/components/StreamingBashOutput.js.map +2 -2
- package/dist/components/StructuredDiff.js.map +2 -2
- package/dist/components/SubagentProgress.js.map +2 -2
- package/dist/components/TaskCard.js.map +2 -2
- package/dist/components/TextInput.js.map +1 -1
- package/dist/components/TodoItem.js.map +1 -1
- package/dist/components/binary-feedback/BinaryFeedbackOption.js +1 -3
- package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +2 -2
- package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +1 -1
- package/dist/components/messages/AssistantToolUseMessage.js +3 -1
- package/dist/components/messages/AssistantToolUseMessage.js.map +2 -2
- package/dist/components/messages/TaskProgressMessage.js.map +2 -2
- package/dist/components/messages/TaskToolMessage.js.map +2 -2
- package/dist/components/messages/UserToolResultMessage/utils.js.map +2 -2
- package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +2 -2
- package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +2 -2
- package/dist/components/permissions/hooks.js.map +2 -2
- package/dist/constants/modelCapabilities.js +1 -1
- package/dist/constants/modelCapabilities.js.map +2 -2
- package/dist/constants/prompts.js.map +1 -1
- package/dist/constants/timing.js +34 -0
- package/dist/constants/timing.js.map +7 -0
- package/dist/entrypoints/cli.js +128 -33
- package/dist/entrypoints/cli.js.map +3 -3
- package/dist/entrypoints/mcp.js +13 -18
- package/dist/entrypoints/mcp.js.map +2 -2
- package/dist/hooks/useCanUseTool.js.map +2 -2
- package/dist/hooks/useCancelRequest.js.map +1 -1
- package/dist/hooks/useHistorySearch.js.map +2 -2
- package/dist/hooks/useLogStartupTime.js.map +2 -2
- package/dist/hooks/usePermissionRequestLogging.js.map +2 -2
- package/dist/hooks/useTextInput.js.map +1 -1
- package/dist/hooks/useUnifiedCompletion.js +493 -394
- package/dist/hooks/useUnifiedCompletion.js.map +2 -2
- package/dist/index.js.map +2 -2
- package/dist/permissions.js +4 -7
- package/dist/permissions.js.map +2 -2
- package/dist/query.js +6 -1
- package/dist/query.js.map +2 -2
- package/dist/screens/REPL.js +72 -36
- package/dist/screens/REPL.js.map +2 -2
- package/dist/screens/ResumeConversation.js +2 -1
- package/dist/screens/ResumeConversation.js.map +2 -2
- package/dist/services/adapters/base.js.map +2 -2
- package/dist/services/adapters/chatCompletions.js.map +2 -2
- package/dist/services/adapters/responsesAPI.js +3 -1
- package/dist/services/adapters/responsesAPI.js.map +2 -2
- package/dist/services/claude.js +327 -328
- package/dist/services/claude.js.map +2 -2
- package/dist/services/customCommands.js +6 -1
- package/dist/services/customCommands.js.map +2 -2
- package/dist/services/fileFreshness.js.map +2 -2
- package/dist/services/gpt5ConnectionTest.js +20 -7
- package/dist/services/gpt5ConnectionTest.js.map +2 -2
- package/dist/services/hookExecutor.js +6 -12
- package/dist/services/hookExecutor.js.map +2 -2
- package/dist/services/mcpClient.js +29 -2
- package/dist/services/mcpClient.js.map +2 -2
- package/dist/services/mentionProcessor.js +23 -10
- package/dist/services/mentionProcessor.js.map +2 -2
- package/dist/services/modelAdapterFactory.js.map +2 -2
- package/dist/services/oauth.js.map +2 -2
- package/dist/services/openai.js +109 -72
- package/dist/services/openai.js.map +3 -3
- package/dist/services/responseStateManager.js.map +2 -2
- package/dist/services/systemReminder.js.map +2 -2
- package/dist/tools/ArchitectTool/ArchitectTool.js.map +1 -1
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +14 -8
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +2 -2
- package/dist/tools/BashOutputTool/BashOutputTool.js.map +2 -2
- package/dist/tools/BashTool/BashTool.js.map +2 -2
- package/dist/tools/FileReadTool/FileReadTool.js.map +1 -1
- package/dist/tools/FileWriteTool/FileWriteTool.js.map +2 -2
- package/dist/tools/GrepTool/GrepTool.js +1 -4
- package/dist/tools/GrepTool/GrepTool.js.map +2 -2
- package/dist/tools/MultiEditTool/MultiEditTool.js +4 -1
- package/dist/tools/MultiEditTool/MultiEditTool.js.map +2 -2
- package/dist/tools/NotebookReadTool/NotebookReadTool.js +3 -1
- package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +2 -2
- package/dist/tools/SkillTool/SkillTool.js +12 -6
- package/dist/tools/SkillTool/SkillTool.js.map +2 -2
- package/dist/tools/TaskTool/TaskTool.js +14 -5
- package/dist/tools/TaskTool/TaskTool.js.map +2 -2
- package/dist/tools/TaskTool/prompt.js.map +2 -2
- package/dist/tools/ThinkTool/ThinkTool.js +6 -1
- package/dist/tools/ThinkTool/ThinkTool.js.map +2 -2
- package/dist/tools/TodoWriteTool/TodoWriteTool.js +23 -3
- package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +2 -2
- package/dist/tools/URLFetcherTool/URLFetcherTool.js +2 -2
- package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +2 -2
- package/dist/tools/URLFetcherTool/cache.js +6 -3
- package/dist/tools/URLFetcherTool/cache.js.map +2 -2
- package/dist/tools/URLFetcherTool/htmlToMarkdown.js +3 -1
- package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +2 -2
- package/dist/tools/WebSearchTool/WebSearchTool.js.map +2 -2
- package/dist/tools/WebSearchTool/prompt.js.map +2 -2
- package/dist/tools/WebSearchTool/searchProviders.js +15 -6
- package/dist/tools/WebSearchTool/searchProviders.js.map +2 -2
- package/dist/tools.js +4 -1
- package/dist/tools.js.map +2 -2
- package/dist/types/core.js +1 -0
- package/dist/types/core.js.map +7 -0
- package/dist/types/hooks.js +1 -4
- package/dist/types/hooks.js.map +2 -2
- package/dist/types/marketplace.js +8 -2
- package/dist/types/marketplace.js.map +2 -2
- package/dist/types/plugin.js +9 -6
- package/dist/types/plugin.js.map +2 -2
- package/dist/utils/BackgroundShellManager.js +76 -10
- package/dist/utils/BackgroundShellManager.js.map +2 -2
- package/dist/utils/PersistentShell.js +7 -2
- package/dist/utils/PersistentShell.js.map +2 -2
- package/dist/utils/advancedFuzzyMatcher.js +4 -1
- package/dist/utils/advancedFuzzyMatcher.js.map +2 -2
- package/dist/utils/agentLoader.js +69 -35
- package/dist/utils/agentLoader.js.map +2 -2
- package/dist/utils/agentStorage.js.map +2 -2
- package/dist/utils/async.js +163 -0
- package/dist/utils/async.js.map +7 -0
- package/dist/utils/autoUpdater.js +8 -2
- package/dist/utils/autoUpdater.js.map +2 -2
- package/dist/utils/commands.js +23 -11
- package/dist/utils/commands.js.map +2 -2
- package/dist/utils/commonUnixCommands.js +3 -1
- package/dist/utils/commonUnixCommands.js.map +2 -2
- package/dist/utils/compressionMode.js.map +2 -2
- package/dist/utils/config.js +30 -14
- package/dist/utils/config.js.map +2 -2
- package/dist/utils/debugLogger.js.map +2 -2
- package/dist/utils/env.js.map +2 -2
- package/dist/utils/envConfig.js +82 -0
- package/dist/utils/envConfig.js.map +7 -0
- package/dist/utils/errorHandling.js +89 -0
- package/dist/utils/errorHandling.js.map +7 -0
- package/dist/utils/expertChatStorage.js.map +2 -2
- package/dist/utils/fuzzyMatcher.js +13 -7
- package/dist/utils/fuzzyMatcher.js.map +2 -2
- package/dist/utils/hookManager.js +14 -4
- package/dist/utils/hookManager.js.map +2 -2
- package/dist/utils/log.js.map +2 -2
- package/dist/utils/marketplaceManager.js +44 -9
- package/dist/utils/marketplaceManager.js.map +2 -2
- package/dist/utils/messageContextManager.js.map +1 -1
- package/dist/utils/messages.js +6 -3
- package/dist/utils/messages.js.map +2 -2
- package/dist/utils/model.js +3 -1
- package/dist/utils/model.js.map +2 -2
- package/dist/utils/pluginInstaller.js +3 -15
- package/dist/utils/pluginInstaller.js.map +2 -2
- package/dist/utils/pluginLoader.js +41 -13
- package/dist/utils/pluginLoader.js.map +2 -2
- package/dist/utils/pluginRegistry.js.map +2 -2
- package/dist/utils/pluginValidator.js +71 -49
- package/dist/utils/pluginValidator.js.map +2 -2
- package/dist/utils/ptyCompat.js.map +2 -2
- package/dist/utils/roundConverter.js.map +2 -2
- package/dist/utils/secureFile.js +43 -14
- package/dist/utils/secureFile.js.map +2 -2
- package/dist/utils/sessionState.js.map +2 -2
- package/dist/utils/skillLoader.js.map +2 -2
- package/dist/utils/teamConfig.js +7 -4
- package/dist/utils/teamConfig.js.map +2 -2
- package/dist/utils/theme.js.map +2 -2
- package/dist/utils/thinking.js.map +2 -2
- package/dist/utils/unaryLogging.js.map +2 -2
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- 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
|
|
5
|
-
"mappings": "AAAA,SAAS,iBAAiB;
|
|
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
|
|
5
|
-
"mappings": "AAAA,SAAS,iBAAiB;AAE1B,SAAS,qBAAqC;AAE9C,SAAS,WAAW;AAWb,SAAS,4BACd,gBACA,YACM;AACN,YAAU,MAAM;
|
|
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
|
|
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
|
}
|