@within-7/minto 0.3.6 → 0.3.10
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/{cli.js → cli.cjs} +25 -23
- package/dist/commands/agents/AgentsCommand.js +459 -655
- package/dist/commands/agents/AgentsCommand.js.map +2 -2
- package/dist/commands/agents/types.js +1 -0
- package/dist/commands/agents/types.js.map +2 -2
- package/dist/commands/agents/utils/fileOperations.js +96 -36
- package/dist/commands/agents/utils/fileOperations.js.map +3 -3
- package/dist/commands/agents/utils/index.js +3 -1
- package/dist/commands/agents/utils/index.js.map +2 -2
- package/dist/commands/context.js +54 -23
- package/dist/commands/context.js.map +2 -2
- package/dist/commands/export.js +673 -93
- package/dist/commands/export.js.map +2 -2
- package/dist/commands/language.js +110 -0
- package/dist/commands/language.js.map +7 -0
- package/dist/commands/mcp-interactive.js +419 -217
- package/dist/commands/mcp-interactive.js.map +2 -2
- package/dist/commands/model.js +415 -66
- package/dist/commands/model.js.map +2 -2
- package/dist/commands/new.js +56 -0
- package/dist/commands/new.js.map +7 -0
- package/dist/commands/permissions.js +75 -49
- package/dist/commands/permissions.js.map +2 -2
- package/dist/commands/plugin.js +882 -185
- package/dist/commands/plugin.js.map +3 -3
- package/dist/commands/resume.js +251 -16
- package/dist/commands/resume.js.map +2 -2
- package/dist/commands/sandbox.js +168 -70
- package/dist/commands/sandbox.js.map +2 -2
- package/dist/commands/sessions.js +224 -0
- package/dist/commands/sessions.js.map +7 -0
- package/dist/commands/setup.js +596 -109
- package/dist/commands/setup.js.map +2 -2
- package/dist/commands/stats.js +292 -0
- package/dist/commands/stats.js.map +7 -0
- package/dist/commands/status.js +75 -7
- package/dist/commands/status.js.map +2 -2
- package/dist/commands/undo.js +154 -180
- package/dist/commands/undo.js.map +2 -2
- package/dist/commands.js +6 -0
- package/dist/commands.js.map +2 -2
- package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js +3 -2
- package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +2 -2
- package/dist/components/Config.js +9 -8
- package/dist/components/Config.js.map +2 -2
- package/dist/components/HeaderBar.js +2 -1
- package/dist/components/HeaderBar.js.map +2 -2
- package/dist/components/Help.js +166 -32
- package/dist/components/Help.js.map +2 -2
- package/dist/components/HotkeyHelpPanel.js +46 -44
- package/dist/components/HotkeyHelpPanel.js.map +2 -2
- package/dist/components/InfoPanel/InfoPanel.js +123 -0
- package/dist/components/InfoPanel/InfoPanel.js.map +7 -0
- package/dist/components/InfoPanel/index.js +5 -0
- package/dist/components/InfoPanel/index.js.map +7 -0
- package/dist/components/InfoPanel/types.js +1 -0
- package/dist/components/InfoPanel/types.js.map +7 -0
- package/dist/components/Logo.js +5 -2
- package/dist/components/Logo.js.map +2 -2
- package/dist/components/MCPServerApprovalDialog.js +6 -5
- package/dist/components/MCPServerApprovalDialog.js.map +2 -2
- package/dist/components/MCPServerMultiselectDialog.js +5 -4
- package/dist/components/MCPServerMultiselectDialog.js.map +2 -2
- package/dist/components/MessageSelector.js +4 -3
- package/dist/components/MessageSelector.js.map +2 -2
- package/dist/components/ModelConfig.js +13 -12
- package/dist/components/ModelConfig.js.map +2 -2
- package/dist/components/ModelListManager.js +4 -3
- package/dist/components/ModelListManager.js.map +2 -2
- package/dist/components/ModelSelector/BrandTextInput.js +43 -0
- package/dist/components/ModelSelector/BrandTextInput.js.map +7 -0
- package/dist/components/ModelSelector/ModelSelector.js +419 -501
- package/dist/components/ModelSelector/ModelSelector.js.map +2 -2
- package/dist/components/ModelSelector/WizardContainer.js +45 -0
- package/dist/components/ModelSelector/WizardContainer.js.map +7 -0
- package/dist/components/ModelSelector/index.js +1 -3
- package/dist/components/ModelSelector/index.js.map +2 -2
- package/dist/components/PromptInput.js +77 -44
- package/dist/components/PromptInput.js.map +2 -2
- package/dist/components/SensitiveFileWarning.js +12 -8
- package/dist/components/SensitiveFileWarning.js.map +2 -2
- package/dist/components/SimpleSelector/SimpleSelector.js +154 -0
- package/dist/components/SimpleSelector/SimpleSelector.js.map +7 -0
- package/dist/components/SimpleSelector/index.js +5 -0
- package/dist/components/SimpleSelector/index.js.map +7 -0
- package/dist/components/SimpleSelector/types.js +1 -0
- package/dist/components/SimpleSelector/types.js.map +7 -0
- package/dist/components/StatusOverlayContent.js +21 -0
- package/dist/components/StatusOverlayContent.js.map +7 -0
- package/dist/components/TabbedListView/ScrollableList.js +117 -0
- package/dist/components/TabbedListView/ScrollableList.js.map +7 -0
- package/dist/components/TabbedListView/SearchInput.js +23 -0
- package/dist/components/TabbedListView/SearchInput.js.map +7 -0
- package/dist/components/TabbedListView/TabBar.js +20 -0
- package/dist/components/TabbedListView/TabBar.js.map +7 -0
- package/dist/components/TabbedListView/TabbedListView.js +246 -0
- package/dist/components/TabbedListView/TabbedListView.js.map +7 -0
- package/dist/components/TabbedListView/index.js +11 -0
- package/dist/components/TabbedListView/index.js.map +7 -0
- package/dist/components/TabbedListView/types.js +1 -0
- package/dist/components/TabbedListView/types.js.map +7 -0
- package/dist/components/TodoChangeBlock.js +6 -5
- package/dist/components/TodoChangeBlock.js.map +3 -3
- package/dist/components/TodoPanel.js +6 -3
- package/dist/components/TodoPanel.js.map +3 -3
- package/dist/components/TrustDialog.js +6 -5
- package/dist/components/TrustDialog.js.map +2 -2
- package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +2 -1
- package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +2 -2
- package/dist/constants/macros.js +1 -1
- package/dist/constants/macros.js.map +1 -1
- package/dist/constants/product.js +2 -2
- package/dist/constants/product.js.map +1 -1
- package/dist/constants/prompts.js +17 -0
- package/dist/constants/prompts.js.map +2 -2
- package/dist/constants/toolInputExamples.js +5 -1
- package/dist/constants/toolInputExamples.js.map +2 -2
- package/dist/core/backupHook.js +29 -0
- package/dist/core/backupHook.js.map +7 -0
- package/dist/core/config/defaults.js +8 -2
- package/dist/core/config/defaults.js.map +2 -2
- package/dist/core/config/schema.js +14 -2
- package/dist/core/config/schema.js.map +2 -2
- package/dist/core/costTracker.js +0 -16
- package/dist/core/costTracker.js.map +2 -2
- package/dist/core/tokenStatsManager.js +5 -0
- package/dist/core/tokenStatsManager.js.map +2 -2
- package/dist/cost-tracker.js +0 -16
- package/dist/cost-tracker.js.map +2 -2
- package/dist/entrypoints/bootstrap.js +56 -0
- package/dist/entrypoints/bootstrap.js.map +7 -0
- package/dist/entrypoints/cli.js +164 -23
- package/dist/entrypoints/cli.js.map +3 -3
- package/dist/history.js +75 -15
- package/dist/history.js.map +2 -2
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.js.map +2 -2
- package/dist/i18n/locales/en.js +582 -1
- package/dist/i18n/locales/en.js.map +2 -2
- package/dist/i18n/locales/zh-CN.js +582 -1
- package/dist/i18n/locales/zh-CN.js.map +2 -2
- package/dist/i18n/types.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +2 -2
- package/dist/messages.js +11 -0
- package/dist/messages.js.map +2 -2
- package/dist/permissions.js.map +2 -2
- package/dist/query.js +9 -0
- package/dist/query.js.map +2 -2
- package/dist/screens/REPL.js +45 -7
- package/dist/screens/REPL.js.map +2 -2
- package/dist/services/customCommands.js +44 -16
- package/dist/services/customCommands.js.map +2 -2
- package/dist/services/plugins/lspServers.js +1 -1
- package/dist/services/plugins/lspServers.js.map +2 -2
- package/dist/services/plugins/pluginRuntime.js +2 -1
- package/dist/services/plugins/pluginRuntime.js.map +2 -2
- package/dist/services/plugins/pluginValidation.js +10 -3
- package/dist/services/plugins/pluginValidation.js.map +2 -2
- package/dist/services/plugins/skillMarketplace.js +16 -8
- package/dist/services/plugins/skillMarketplace.js.map +2 -2
- package/dist/services/systemReminder.js +17 -6
- package/dist/services/systemReminder.js.map +2 -2
- package/dist/tools/FileEditTool/FileEditTool.js +7 -0
- package/dist/tools/FileEditTool/FileEditTool.js.map +2 -2
- package/dist/tools/FileWriteTool/FileWriteTool.js +7 -0
- package/dist/tools/FileWriteTool/FileWriteTool.js.map +2 -2
- package/dist/tools/MultiEditTool/MultiEditTool.js +7 -0
- package/dist/tools/MultiEditTool/MultiEditTool.js.map +2 -2
- package/dist/tools/NotebookEditTool/NotebookEditTool.js +2 -0
- package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +2 -2
- package/dist/tools/TaskTool/TaskTool.js +179 -1
- package/dist/tools/TaskTool/TaskTool.js.map +2 -2
- package/dist/tools/TodoWriteTool/prompt.js +21 -0
- package/dist/tools/TodoWriteTool/prompt.js.map +2 -2
- package/dist/tools/URLFetcherTool/prompt.js +14 -9
- package/dist/tools/URLFetcherTool/prompt.js.map +2 -2
- package/dist/tools/WebSearchTool/prompt.js +12 -6
- package/dist/tools/WebSearchTool/prompt.js.map +2 -2
- package/dist/types/PermissionMode.js +30 -1
- package/dist/types/PermissionMode.js.map +2 -2
- package/dist/types/plugin.js +2 -4
- package/dist/types/plugin.js.map +2 -2
- package/dist/utils/agentHookExecutor.js +103 -0
- package/dist/utils/agentHookExecutor.js.map +7 -0
- package/dist/utils/agentLoader.js +272 -32
- package/dist/utils/agentLoader.js.map +2 -2
- package/dist/utils/agentMemory.js +134 -0
- package/dist/utils/agentMemory.js.map +7 -0
- package/dist/utils/claudeCodeSync.js +439 -0
- package/dist/utils/claudeCodeSync.js.map +7 -0
- package/dist/utils/config.js +52 -24
- package/dist/utils/config.js.map +2 -2
- package/dist/utils/configPaths.js +199 -0
- package/dist/utils/configPaths.js.map +7 -0
- package/dist/utils/execFileNoThrow.js +2 -1
- package/dist/utils/execFileNoThrow.js.map +2 -2
- package/dist/utils/historyManager.js +234 -0
- package/dist/utils/historyManager.js.map +7 -0
- package/dist/utils/marketplaceManager.js +80 -43
- package/dist/utils/marketplaceManager.js.map +2 -2
- package/dist/utils/messages.js +13 -8
- package/dist/utils/messages.js.map +2 -2
- package/dist/utils/migration/index.js +37 -0
- package/dist/utils/migration/index.js.map +7 -0
- package/dist/utils/migration/migrateHistory.js +273 -0
- package/dist/utils/migration/migrateHistory.js.map +7 -0
- package/dist/utils/migration/migrateTodos.js +323 -0
- package/dist/utils/migration/migrateTodos.js.map +7 -0
- package/dist/utils/pasteCache.js +309 -0
- package/dist/utils/pasteCache.js.map +7 -0
- package/dist/utils/pluginInstaller.js +34 -24
- package/dist/utils/pluginInstaller.js.map +2 -2
- package/dist/utils/pluginLoader.js +54 -28
- package/dist/utils/pluginLoader.js.map +2 -2
- package/dist/utils/repoFetcher.js +110 -0
- package/dist/utils/repoFetcher.js.map +7 -0
- package/dist/utils/sessionIndex.js +192 -0
- package/dist/utils/sessionIndex.js.map +7 -0
- package/dist/utils/sessionTracker.js +170 -0
- package/dist/utils/sessionTracker.js.map +7 -0
- package/dist/utils/skillLoader.js +103 -5
- package/dist/utils/skillLoader.js.map +2 -2
- package/dist/utils/stats.js +417 -0
- package/dist/utils/stats.js.map +7 -0
- package/dist/utils/stringSubstitution.js +106 -0
- package/dist/utils/stringSubstitution.js.map +7 -0
- package/dist/utils/teamConfig.js +156 -14
- package/dist/utils/teamConfig.js.map +2 -2
- package/dist/utils/terminal.js +1 -1
- package/dist/utils/terminal.js.map +2 -2
- package/dist/utils/todoStorage.js +51 -19
- package/dist/utils/todoStorage.js.map +2 -2
- package/dist/utils/tooling/safeRender.js.map +2 -2
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +71 -28
- package/scripts/{postinstall.js → postinstall.cjs} +1 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import { BRAND_GRADIENT, SEMANTIC_COLORS } from "../../constants/colors.js";
|
|
4
|
+
function WizardContainer({
|
|
5
|
+
title,
|
|
6
|
+
subtitle,
|
|
7
|
+
children,
|
|
8
|
+
footer
|
|
9
|
+
}) {
|
|
10
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", width: "100%" }, /* @__PURE__ */ React.createElement(
|
|
11
|
+
Box,
|
|
12
|
+
{
|
|
13
|
+
borderTop: true,
|
|
14
|
+
borderBottom: false,
|
|
15
|
+
borderLeft: false,
|
|
16
|
+
borderRight: false,
|
|
17
|
+
borderColor: BRAND_GRADIENT.START,
|
|
18
|
+
borderStyle: "single",
|
|
19
|
+
width: "100%",
|
|
20
|
+
paddingX: 1,
|
|
21
|
+
flexDirection: "column"
|
|
22
|
+
},
|
|
23
|
+
/* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, "\u25C6"), /* @__PURE__ */ React.createElement(Text, { bold: true, color: SEMANTIC_COLORS.secondary }, " ", title), subtitle && /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", subtitle))
|
|
24
|
+
), /* @__PURE__ */ React.createElement(
|
|
25
|
+
Box,
|
|
26
|
+
{
|
|
27
|
+
flexDirection: "column",
|
|
28
|
+
borderTop: false,
|
|
29
|
+
borderBottom: true,
|
|
30
|
+
borderLeft: false,
|
|
31
|
+
borderRight: false,
|
|
32
|
+
borderColor: BRAND_GRADIENT.START,
|
|
33
|
+
borderStyle: "single",
|
|
34
|
+
width: "100%",
|
|
35
|
+
paddingX: 1,
|
|
36
|
+
paddingY: 1
|
|
37
|
+
},
|
|
38
|
+
children,
|
|
39
|
+
footer && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, typeof footer === "string" ? /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.muted }, footer) : footer)
|
|
40
|
+
));
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
WizardContainer
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=WizardContainer.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/ModelSelector/WizardContainer.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * WizardContainer Component\n *\n * Brand-consistent wizard frame replacing the old ScreenContainer.\n * Uses BRAND_GRADIENT.START top/bottom single borders with \u25C6 diamond title.\n * Matches the visual pattern from SimpleSelector and InfoPanel.\n *\n * Visual pattern:\n * \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 (BRAND_GRADIENT.START border)\n * \u25C6 Title subtitle\n *\n * [children content]\n *\n * Footer hint text\n * \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 (BRAND_GRADIENT.START border)\n */\n\nimport React from 'react'\nimport { Box, Text } from 'ink'\nimport { BRAND_GRADIENT, SEMANTIC_COLORS } from '@constants/colors'\n\ntype WizardContainerProps = React.PropsWithChildren<{\n title: string\n subtitle?: string\n footer?: React.ReactNode\n}>\n\nexport function WizardContainer({\n title,\n subtitle,\n children,\n footer,\n}: WizardContainerProps) {\n return (\n <Box flexDirection=\"column\" width=\"100%\">\n {/* Header bar with top border */}\n <Box\n borderTop={true}\n borderBottom={false}\n borderLeft={false}\n borderRight={false}\n borderColor={BRAND_GRADIENT.START}\n borderStyle=\"single\"\n width=\"100%\"\n paddingX={1}\n flexDirection=\"column\"\n >\n {/* Title with brand color */}\n <Box>\n <Text color={BRAND_GRADIENT.START}>{'\\u25C6'}</Text>\n <Text bold color={SEMANTIC_COLORS.secondary}>\n {' '}\n {title}\n </Text>\n {subtitle && (\n <Text color={SEMANTIC_COLORS.dim}>\n {' '}\n {subtitle}\n </Text>\n )}\n </Box>\n </Box>\n\n {/* Content container with bottom border */}\n <Box\n flexDirection=\"column\"\n borderTop={false}\n borderBottom={true}\n borderLeft={false}\n borderRight={false}\n borderColor={BRAND_GRADIENT.START}\n borderStyle=\"single\"\n width=\"100%\"\n paddingX={1}\n paddingY={1}\n >\n {children}\n\n {/* Footer Hint */}\n {footer && (\n <Box marginTop={1}>\n {typeof footer === 'string' ? (\n <Text color={SEMANTIC_COLORS.muted}>{footer}</Text>\n ) : (\n footer\n )}\n </Box>\n )}\n </Box>\n </Box>\n )\n}\n"],
|
|
5
|
+
"mappings": "AAiBA,OAAO,WAAW;AAClB,SAAS,KAAK,YAAY;AAC1B,SAAS,gBAAgB,uBAAuB;AAQzC,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,SACE,oCAAC,OAAI,eAAc,UAAS,OAAM,UAEhC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,aAAa,eAAe;AAAA,MAC5B,aAAY;AAAA,MACZ,OAAM;AAAA,MACN,UAAU;AAAA,MACV,eAAc;AAAA;AAAA,IAGd,oCAAC,WACC,oCAAC,QAAK,OAAO,eAAe,SAAQ,QAAS,GAC7C,oCAAC,QAAK,MAAI,MAAC,OAAO,gBAAgB,aAC/B,KACA,KACH,GACC,YACC,oCAAC,QAAK,OAAO,gBAAgB,OAC1B,MACA,QACH,CAEJ;AAAA,EACF,GAGA;AAAA,IAAC;AAAA;AAAA,MACC,eAAc;AAAA,MACd,WAAW;AAAA,MACX,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,aAAa,eAAe;AAAA,MAC5B,aAAY;AAAA,MACZ,OAAM;AAAA,MACN,UAAU;AAAA,MACV,UAAU;AAAA;AAAA,IAET;AAAA,IAGA,UACC,oCAAC,OAAI,WAAW,KACb,OAAO,WAAW,WACjB,oCAAC,QAAK,OAAO,gBAAgB,SAAQ,MAAO,IAE5C,MAEJ;AAAA,EAEJ,CACF;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -5,13 +5,11 @@ import {
|
|
|
5
5
|
MAX_TOKENS_OPTIONS,
|
|
6
6
|
DEFAULT_MAX_TOKENS
|
|
7
7
|
} from "./constants.js";
|
|
8
|
-
import { ScreenContainer } from "./ScreenContainer.js";
|
|
9
8
|
export {
|
|
10
9
|
CONTEXT_LENGTH_OPTIONS,
|
|
11
10
|
DEFAULT_CONTEXT_LENGTH,
|
|
12
11
|
DEFAULT_MAX_TOKENS,
|
|
13
12
|
MAX_TOKENS_OPTIONS,
|
|
14
|
-
ModelSelector
|
|
15
|
-
ScreenContainer
|
|
13
|
+
ModelSelector
|
|
16
14
|
};
|
|
17
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/ModelSelector/index.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * ModelSelector Component\n *\n *
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/**\n * ModelSelector Component\n *\n * Comprehensive model configuration wizard with brand-consistent UI.\n *\n * Structure:\n * - ModelSelector.tsx - Main component with business logic and screen routing\n * - WizardContainer.tsx - Brand-consistent wizard frame\n * - BrandTextInput.tsx - Standardized text input wrapper\n * - types.ts - Type definitions\n * - constants.ts - Configuration constants\n */\n\nexport { ModelSelector } from './ModelSelector'\n\nexport type {\n ModelSelectorProps,\n ModelInfo,\n ScreenType,\n ReasoningEffortOption,\n ContextLengthOption,\n MaxTokensOption,\n ExitState,\n} from './types'\n\nexport {\n CONTEXT_LENGTH_OPTIONS,\n DEFAULT_CONTEXT_LENGTH,\n MAX_TOKENS_OPTIONS,\n DEFAULT_MAX_TOKENS,\n} from './constants'\n"],
|
|
5
|
+
"mappings": "AAaA,SAAS,qBAAqB;AAY9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -5,6 +5,10 @@ import { useArrowKeyHistory } from "../hooks/useArrowKeyHistory.js";
|
|
|
5
5
|
import { useUnifiedCompletion } from "../hooks/useUnifiedCompletion.js";
|
|
6
6
|
import { useHistorySearch } from "../hooks/useHistorySearch.js";
|
|
7
7
|
import { addToHistory, getHistory } from "../history.js";
|
|
8
|
+
import {
|
|
9
|
+
cachePaste,
|
|
10
|
+
createPlaceholder
|
|
11
|
+
} from "../utils/pasteCache.js";
|
|
8
12
|
import TextInput from "./TextInput.js";
|
|
9
13
|
import { HistorySearchOverlay } from "./HistorySearchOverlay.js";
|
|
10
14
|
import {
|
|
@@ -33,6 +37,7 @@ import { usePermissionContext } from "../context/PermissionContext.js";
|
|
|
33
37
|
import { getHookManager } from "../utils/hookManager.js";
|
|
34
38
|
import { debug as debugLogger } from "../utils/debugLogger.js";
|
|
35
39
|
import { PROJECT_FILE } from "../constants/product.js";
|
|
40
|
+
import { t } from "../i18n/index.js";
|
|
36
41
|
async function interpretHashCommand(input) {
|
|
37
42
|
try {
|
|
38
43
|
const { queryQuick } = await import("../services/claude.js");
|
|
@@ -101,7 +106,9 @@ function PromptInput({
|
|
|
101
106
|
queuedPrompts = [],
|
|
102
107
|
onQueuePrompt,
|
|
103
108
|
onPopQueuedPrompt,
|
|
104
|
-
onInterrupt
|
|
109
|
+
onInterrupt,
|
|
110
|
+
isOverlayActive = false,
|
|
111
|
+
unmount
|
|
105
112
|
}) {
|
|
106
113
|
const [exitMessage, setExitMessage] = useState({ show: false });
|
|
107
114
|
const [message, setMessage] = useState({
|
|
@@ -338,7 +345,9 @@ function PromptInput({
|
|
|
338
345
|
abortController: abortController || new AbortController(),
|
|
339
346
|
// Temporary controller, actual one created in onQuery
|
|
340
347
|
readFileTimestamps,
|
|
341
|
-
setForkConvoWithMessagesOnTheNextRender
|
|
348
|
+
setForkConvoWithMessagesOnTheNextRender,
|
|
349
|
+
unmount: unmount || (() => {
|
|
350
|
+
})
|
|
342
351
|
},
|
|
343
352
|
pastedImage ?? null
|
|
344
353
|
);
|
|
@@ -427,7 +436,9 @@ function PromptInput({
|
|
|
427
436
|
messageId: void 0,
|
|
428
437
|
abortController: newAbortController,
|
|
429
438
|
readFileTimestamps,
|
|
430
|
-
setForkConvoWithMessagesOnTheNextRender
|
|
439
|
+
setForkConvoWithMessagesOnTheNextRender,
|
|
440
|
+
unmount: unmount || (() => {
|
|
441
|
+
})
|
|
431
442
|
},
|
|
432
443
|
pastedImage ?? null
|
|
433
444
|
);
|
|
@@ -452,7 +463,17 @@ function PromptInput({
|
|
|
452
463
|
}
|
|
453
464
|
function onTextPaste(rawText) {
|
|
454
465
|
const text = rawText.replace(/\r/g, "\n");
|
|
455
|
-
const
|
|
466
|
+
const cacheEntry = cachePaste(text);
|
|
467
|
+
let pastedPrompt;
|
|
468
|
+
if (cacheEntry) {
|
|
469
|
+
pastedPrompt = createPlaceholder(cacheEntry);
|
|
470
|
+
debugLogger.trace("PASTE_CACHED", {
|
|
471
|
+
length: text.length,
|
|
472
|
+
hash: cacheEntry.hash.slice(0, 8)
|
|
473
|
+
});
|
|
474
|
+
} else {
|
|
475
|
+
pastedPrompt = getPastedTextPrompt(text);
|
|
476
|
+
}
|
|
456
477
|
const newInput = input.slice(0, cursorOffset) + pastedPrompt + input.slice(cursorOffset);
|
|
457
478
|
onInputChange(newInput);
|
|
458
479
|
setCursorOffset(cursorOffset + pastedPrompt.length);
|
|
@@ -469,15 +490,18 @@ function PromptInput({
|
|
|
469
490
|
setIsLoading(false);
|
|
470
491
|
setHotkeyMessage({
|
|
471
492
|
show: true,
|
|
472
|
-
text: "
|
|
493
|
+
text: t("prompts.interruptedCtrlC")
|
|
473
494
|
});
|
|
474
495
|
setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
|
|
475
496
|
} else if (input.length > 0) {
|
|
476
497
|
onInputChange("");
|
|
477
|
-
setHotkeyMessage({ show: true, text: "
|
|
498
|
+
setHotkeyMessage({ show: true, text: t("prompts.inputCleared") });
|
|
478
499
|
setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
|
|
479
500
|
} else {
|
|
480
|
-
setHotkeyMessage({
|
|
501
|
+
setHotkeyMessage({
|
|
502
|
+
show: true,
|
|
503
|
+
text: t("prompts.pressCtrlDToExit")
|
|
504
|
+
});
|
|
481
505
|
setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
|
|
482
506
|
}
|
|
483
507
|
return true;
|
|
@@ -485,7 +509,10 @@ function PromptInput({
|
|
|
485
509
|
if (key.ctrl && inputChar === "d") {
|
|
486
510
|
if (input.length > 0) {
|
|
487
511
|
onInputChange("");
|
|
488
|
-
setHotkeyMessage({
|
|
512
|
+
setHotkeyMessage({
|
|
513
|
+
show: true,
|
|
514
|
+
text: t("prompts.inputClearedCtrlD")
|
|
515
|
+
});
|
|
489
516
|
setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
|
|
490
517
|
return true;
|
|
491
518
|
}
|
|
@@ -494,12 +521,15 @@ function PromptInput({
|
|
|
494
521
|
const timer = setTimeout(() => setCtrlDCount(0), 1e3);
|
|
495
522
|
setCtrlDTimer(timer);
|
|
496
523
|
if (ctrlDCount >= 1) {
|
|
497
|
-
setHotkeyMessage({
|
|
524
|
+
setHotkeyMessage({
|
|
525
|
+
show: true,
|
|
526
|
+
text: t("prompts.exitingGracefully")
|
|
527
|
+
});
|
|
498
528
|
setTimeout(() => exit(), 500);
|
|
499
529
|
} else {
|
|
500
530
|
setHotkeyMessage({
|
|
501
531
|
show: true,
|
|
502
|
-
text: "
|
|
532
|
+
text: t("prompts.pressCtrlDAgain")
|
|
503
533
|
});
|
|
504
534
|
setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
|
|
505
535
|
}
|
|
@@ -507,7 +537,7 @@ function PromptInput({
|
|
|
507
537
|
}
|
|
508
538
|
if (key.ctrl && inputChar === "l") {
|
|
509
539
|
clearScreen();
|
|
510
|
-
setHotkeyMessage({ show: true, text: "
|
|
540
|
+
setHotkeyMessage({ show: true, text: t("prompts.screenCleared") });
|
|
511
541
|
setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
|
|
512
542
|
return true;
|
|
513
543
|
}
|
|
@@ -533,7 +563,7 @@ function PromptInput({
|
|
|
533
563
|
onToggleTodoPanel();
|
|
534
564
|
setHotkeyMessage({
|
|
535
565
|
show: true,
|
|
536
|
-
text: "
|
|
566
|
+
text: t("prompts.todoPanelToggled")
|
|
537
567
|
});
|
|
538
568
|
setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
|
|
539
569
|
}
|
|
@@ -543,7 +573,7 @@ function PromptInput({
|
|
|
543
573
|
if (!input || input.trim().length === 0) {
|
|
544
574
|
setHotkeyMessage({
|
|
545
575
|
show: true,
|
|
546
|
-
text: "
|
|
576
|
+
text: t("prompts.typeCommandFirst")
|
|
547
577
|
});
|
|
548
578
|
setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
|
|
549
579
|
return true;
|
|
@@ -551,7 +581,7 @@ function PromptInput({
|
|
|
551
581
|
if (mode === "bash") {
|
|
552
582
|
setHotkeyMessage({
|
|
553
583
|
show: true,
|
|
554
|
-
text: "
|
|
584
|
+
text: t("prompts.executingBash")
|
|
555
585
|
});
|
|
556
586
|
setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
|
|
557
587
|
onSubmit(input);
|
|
@@ -659,7 +689,7 @@ function PromptInput({
|
|
|
659
689
|
});
|
|
660
690
|
setMessage({
|
|
661
691
|
show: true,
|
|
662
|
-
text:
|
|
692
|
+
text: newThinking ? t("prompts.thinkingModeEnabled") : t("prompts.thinkingModeDisabled")
|
|
663
693
|
});
|
|
664
694
|
setTimeout(() => setMessage({ show: false }), 2e3);
|
|
665
695
|
return true;
|
|
@@ -670,11 +700,11 @@ function PromptInput({
|
|
|
670
700
|
}
|
|
671
701
|
return false;
|
|
672
702
|
},
|
|
673
|
-
{ isActive: !isBackgroundPanelOpen && !fallbackMode }
|
|
703
|
+
{ isActive: !isBackgroundPanelOpen && !fallbackMode && !isOverlayActive }
|
|
674
704
|
);
|
|
675
705
|
const handleSpecialKey = useCallback(
|
|
676
706
|
(inputChar, key) => {
|
|
677
|
-
if (key.shift && (inputChar === "M" || inputChar === "m")) {
|
|
707
|
+
if (key.shift && (inputChar === "M" || inputChar === "m") && input.length === 0) {
|
|
678
708
|
handleQuickModelSwitch();
|
|
679
709
|
return true;
|
|
680
710
|
}
|
|
@@ -688,14 +718,17 @@ function PromptInput({
|
|
|
688
718
|
setEscCount(0);
|
|
689
719
|
if (input.length > 0) {
|
|
690
720
|
onInputChange("");
|
|
691
|
-
setHotkeyMessage({
|
|
721
|
+
setHotkeyMessage({
|
|
722
|
+
show: true,
|
|
723
|
+
text: t("prompts.inputClearedEscEsc")
|
|
724
|
+
});
|
|
692
725
|
setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
|
|
693
726
|
return true;
|
|
694
727
|
} else if (isLoading && onInterrupt) {
|
|
695
728
|
onInterrupt();
|
|
696
729
|
setHotkeyMessage({
|
|
697
730
|
show: true,
|
|
698
|
-
text: "
|
|
731
|
+
text: t("prompts.interruptedEscEsc")
|
|
699
732
|
});
|
|
700
733
|
setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
|
|
701
734
|
return true;
|
|
@@ -704,12 +737,12 @@ function PromptInput({
|
|
|
704
737
|
if (input.length > 0) {
|
|
705
738
|
setHotkeyMessage({
|
|
706
739
|
show: true,
|
|
707
|
-
text: "
|
|
740
|
+
text: t("prompts.pressEscAgainClear")
|
|
708
741
|
});
|
|
709
742
|
} else if (isLoading) {
|
|
710
743
|
setHotkeyMessage({
|
|
711
744
|
show: true,
|
|
712
|
-
text: "
|
|
745
|
+
text: t("prompts.pressEscAgainInterrupt")
|
|
713
746
|
});
|
|
714
747
|
}
|
|
715
748
|
setTimeout(() => setHotkeyMessage({ show: false }), 1500);
|
|
@@ -748,7 +781,7 @@ function PromptInput({
|
|
|
748
781
|
currentTokens: tokenUsage
|
|
749
782
|
};
|
|
750
783
|
}, [tokenUsage, modelSwitchMessage.show, submitCount, currentModelId]);
|
|
751
|
-
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, fallbackMode && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.running }, "
|
|
784
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, fallbackMode && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.running }, t("prompts.limitedInputMode")), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "(", t("prompts.limitedInputModeDetail"), ")")), showHotkeyHelp && /* @__PURE__ */ React.createElement(
|
|
752
785
|
HotkeyHelpPanel,
|
|
753
786
|
{
|
|
754
787
|
isVisible: showHotkeyHelp,
|
|
@@ -761,7 +794,7 @@ function PromptInput({
|
|
|
761
794
|
results: historySearch.filteredResults,
|
|
762
795
|
selectedIndex: historySearch.selectedIndex
|
|
763
796
|
}
|
|
764
|
-
), modelInfo && /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, "\u25C6"), " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, modelInfo.name), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "\xB7 ", Math.round(modelInfo.currentTokens / 1e3), "k /", " ", Math.round(modelInfo.contextLength / 1e3), "k"))), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginTop: 1 }, /* @__PURE__ */ React.createElement(Box, { paddingLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\u2500\u2500
|
|
797
|
+
), modelInfo && /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, "\u25C6"), " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, modelInfo.name), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "\xB7 ", Math.round(modelInfo.currentTokens / 1e3), "k /", " ", Math.round(modelInfo.contextLength / 1e3), "k"))), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginTop: 1 }, /* @__PURE__ */ React.createElement(Box, { paddingLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\u2500\u2500 ", t("ui.hints.queued"), " (", queuedPrompts.length, ")"), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "\xB7 ", t("ui.hints.willRunAfter"), " \xB7", " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, "\u2191"), " ", t("ui.hints.toEdit"), " \u2500\u2500")), queuedPrompts.map((prompt, index) => /* @__PURE__ */ React.createElement(Box, { key: index, paddingLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, "\u25C7 "), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, prompt.length > 60 ? prompt.slice(0, 60) + "..." : prompt)))), /* @__PURE__ */ React.createElement(
|
|
765
798
|
Box,
|
|
766
799
|
{
|
|
767
800
|
alignItems: "flex-start",
|
|
@@ -770,7 +803,7 @@ function PromptInput({
|
|
|
770
803
|
borderBottom: true,
|
|
771
804
|
borderLeft: false,
|
|
772
805
|
borderRight: false,
|
|
773
|
-
borderColor: mode === "bash" ? SEMANTIC_COLORS.running : mode === "koding" ? SEMANTIC_COLORS.info : BRAND_GRADIENT.START,
|
|
806
|
+
borderColor: isOverlayActive ? SEMANTIC_COLORS.muted : mode === "bash" ? SEMANTIC_COLORS.running : mode === "koding" ? SEMANTIC_COLORS.info : BRAND_GRADIENT.START,
|
|
774
807
|
borderDimColor: false,
|
|
775
808
|
borderStyle: "single",
|
|
776
809
|
marginTop: queuedPrompts.length > 0 ? 0 : 1,
|
|
@@ -788,8 +821,8 @@ function PromptInput({
|
|
|
788
821
|
mode === "bash" ? /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.running }, "\xA0!\xA0") : mode === "koding" ? /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.info }, "\xA0#\xA0") : /* @__PURE__ */ React.createElement(
|
|
789
822
|
Text,
|
|
790
823
|
{
|
|
791
|
-
color: isLoading ? SEMANTIC_COLORS.dim : BRAND_GRADIENT.START,
|
|
792
|
-
bold:
|
|
824
|
+
color: isOverlayActive ? SEMANTIC_COLORS.muted : isLoading ? SEMANTIC_COLORS.dim : BRAND_GRADIENT.START,
|
|
825
|
+
bold: !isOverlayActive
|
|
793
826
|
},
|
|
794
827
|
"\xA0\u276F\xA0"
|
|
795
828
|
)
|
|
@@ -798,7 +831,7 @@ function PromptInput({
|
|
|
798
831
|
TextInput,
|
|
799
832
|
{
|
|
800
833
|
multiline: true,
|
|
801
|
-
focus: !isBackgroundPanelOpen && (!isLoading || !!onQueuePrompt),
|
|
834
|
+
focus: !isBackgroundPanelOpen && !isOverlayActive && (!isLoading || !!onQueuePrompt),
|
|
802
835
|
onSubmit,
|
|
803
836
|
onChange,
|
|
804
837
|
value: input,
|
|
@@ -827,7 +860,7 @@ function PromptInput({
|
|
|
827
860
|
paddingX: 2,
|
|
828
861
|
paddingY: 0
|
|
829
862
|
},
|
|
830
|
-
/* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-start", gap: 1 }, exitMessage.show ? /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "
|
|
863
|
+
/* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-start", gap: 1 }, exitMessage.show ? /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, t("prompts.pressCtrlDAgain")) : message.show ? /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, message.text) : hotkeyMessage.show ? /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, hotkeyMessage.text) : modelSwitchMessage.show ? /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, modelSwitchMessage.text) : verbose ? (
|
|
831
864
|
// Verbose mode: full static hints (商务用户友好) - 使用品牌配色
|
|
832
865
|
/* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
833
866
|
Text,
|
|
@@ -842,7 +875,7 @@ function PromptInput({
|
|
|
842
875
|
"!"
|
|
843
876
|
),
|
|
844
877
|
" ",
|
|
845
|
-
"
|
|
878
|
+
t("ui.hints.executeCommand")
|
|
846
879
|
), /* @__PURE__ */ React.createElement(
|
|
847
880
|
Text,
|
|
848
881
|
{
|
|
@@ -858,8 +891,8 @@ function PromptInput({
|
|
|
858
891
|
"#"
|
|
859
892
|
),
|
|
860
893
|
" ",
|
|
861
|
-
"
|
|
862
|
-
), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "\xB7 ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, "/"), "
|
|
894
|
+
t("ui.hints.recordNote")
|
|
895
|
+
), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "\xB7 ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, "/"), " ", t("ui.hints.featureMenu"), " \xB7", " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, "ctrl+?"), " ", t("common.help")), backgroundShellCount > 0 && /* @__PURE__ */ React.createElement(
|
|
863
896
|
Text,
|
|
864
897
|
{
|
|
865
898
|
color: backgroundIndicatorFocused ? BRAND_GRADIENT.START : BRAND_GRADIENT.MIDDLE,
|
|
@@ -867,10 +900,10 @@ function PromptInput({
|
|
|
867
900
|
},
|
|
868
901
|
"\xB7 ",
|
|
869
902
|
backgroundIndicatorFocused ? "\u25BA " : "",
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\xB7 \u{1F4CB} ", queuedPrompts.length, " queued"))
|
|
903
|
+
t("ui.hints.backgroundTasks", {
|
|
904
|
+
count: backgroundShellCount
|
|
905
|
+
})
|
|
906
|
+
), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\xB7 \u{1F4CB} ", queuedPrompts.length, " ", t("ui.hints.queued")))
|
|
874
907
|
) : (
|
|
875
908
|
// Normal mode: context-aware hints with 0.1.7 style
|
|
876
909
|
/* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ContextAwareHints, { context: inputContext, compact: true }), backgroundShellCount > 0 && /* @__PURE__ */ React.createElement(
|
|
@@ -881,15 +914,15 @@ function PromptInput({
|
|
|
881
914
|
},
|
|
882
915
|
"\u2502 ",
|
|
883
916
|
backgroundIndicatorFocused ? "\u25BA " : "",
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\u2502 \u{1F4CB} ", queuedPrompts.length, " queued"), isLoading && onQueuePrompt && queuedPrompts.length === 0 && /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "\u2502
|
|
917
|
+
t("ui.hints.backgroundTasks", {
|
|
918
|
+
count: backgroundShellCount
|
|
919
|
+
})
|
|
920
|
+
), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\u2502 \u{1F4CB} ", queuedPrompts.length, " ", t("ui.hints.queued")), isLoading && onQueuePrompt && queuedPrompts.length === 0 && /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "\u2502 ", t("ui.hints.typeToQueue")))
|
|
888
921
|
)),
|
|
889
922
|
/* @__PURE__ */ React.createElement(
|
|
890
923
|
SentryErrorBoundary,
|
|
891
924
|
{
|
|
892
|
-
children: /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", gap: 1 }, !debug && tokenUsage < WARNING_THRESHOLD && /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, terminalSetup.isEnabled && isShiftEnterKeyBindingInstalled() ? "shift + \u23CE" : "\\\u23CE"), " ", "
|
|
925
|
+
children: /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", gap: 1 }, !debug && tokenUsage < WARNING_THRESHOLD && /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, terminalSetup.isEnabled && isShiftEnterKeyBindingInstalled() ? "shift + \u23CE" : "\\\u23CE"), " ", t("ui.hints.forNewline")), /* @__PURE__ */ React.createElement(TokenWarning, { tokenUsage }))
|
|
893
926
|
}
|
|
894
927
|
)
|
|
895
928
|
), suggestions.length > 0 && /* @__PURE__ */ React.createElement(
|
|
@@ -917,14 +950,14 @@ function PromptInput({
|
|
|
917
950
|
const selected = suggestions[selectedIndex];
|
|
918
951
|
const positionInfo = suggestions.length > 1 ? `[${selectedIndex + 1}/${suggestions.length}] ` : "";
|
|
919
952
|
if (!selected) {
|
|
920
|
-
return `${positionInfo}
|
|
953
|
+
return `${positionInfo}${t("ui.hints.completion.navigate")}`;
|
|
921
954
|
}
|
|
922
955
|
if (selected?.value.endsWith("/")) {
|
|
923
|
-
return `${positionInfo}
|
|
956
|
+
return `${positionInfo}${t("ui.hints.completion.enterDirectory")}`;
|
|
924
957
|
} else if (selected?.type === "agent") {
|
|
925
|
-
return `${positionInfo}
|
|
958
|
+
return `${positionInfo}${t("ui.hints.completion.selectAgent")}`;
|
|
926
959
|
} else {
|
|
927
|
-
return `${positionInfo}
|
|
960
|
+
return `${positionInfo}${t("ui.hints.completion.insertReference")}`;
|
|
928
961
|
}
|
|
929
962
|
})()
|
|
930
963
|
)
|