@shareai-lab/kode 1.1.23-dev.1 → 1.1.23
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/README.md +18 -2
- package/README.zh-CN.md +14 -0
- package/dist/components/PromptInput.js +15 -2
- package/dist/components/PromptInput.js.map +2 -2
- package/dist/constants/models.js +1 -6
- package/dist/constants/models.js.map +2 -2
- package/dist/entrypoints/cli.js +17 -2
- package/dist/entrypoints/cli.js.map +2 -2
- package/dist/screens/Doctor.js +131 -10
- package/dist/screens/Doctor.js.map +2 -2
- package/dist/screens/REPL.js +3 -0
- package/dist/screens/REPL.js.map +2 -2
- package/dist/utils/autoUpdater.js +257 -8
- package/dist/utils/autoUpdater.js.map +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
# Kode - AI
|
|
2
|
-
|
|
1
|
+
# Kode - AI Assistant for Your Terminal
|
|
2
|
+
|
|
3
3
|
[](https://www.npmjs.com/package/@shareai-lab/kode)
|
|
4
4
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
5
5
|
[](https://agents.md)
|
|
@@ -23,6 +23,8 @@ This change reflects our belief that the future of software development is colla
|
|
|
23
23
|
**2025-08-29**: We've added Windows support! All Windows users can now run Kode using Git Bash, Unix subsystems, or WSL (Windows Subsystem for Linux) on their computers.
|
|
24
24
|
|
|
25
25
|
|
|
26
|
+
<img width="606" height="303" alt="image" src="https://github.com/user-attachments/assets/6cf50553-aacd-4241-a579-6e935b6c62b5" />
|
|
27
|
+
|
|
26
28
|
## 🤝 AGENTS.md Standard Support
|
|
27
29
|
|
|
28
30
|
**Kode proudly supports the [AGENTS.md standard protocol](https://agents.md) initiated by OpenAI** - a simple, open format for guiding programming agents that's used by 20k+ open source projects.
|
|
@@ -87,6 +89,20 @@ Our state-of-the-art completion system provides unparalleled coding assistance:
|
|
|
87
89
|
|
|
88
90
|
## Installation
|
|
89
91
|
|
|
92
|
+
### Recommended: Using Bun (Fastest)
|
|
93
|
+
|
|
94
|
+
First install Bun if you haven't already:
|
|
95
|
+
```bash
|
|
96
|
+
curl -fsSL https://bun.sh/install | bash
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Then install Kode:
|
|
100
|
+
```bash
|
|
101
|
+
bun add -g @shareai-lab/kode
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Alternative: Using npm
|
|
105
|
+
|
|
90
106
|
```bash
|
|
91
107
|
npm install -g @shareai-lab/kode
|
|
92
108
|
```
|
package/README.zh-CN.md
CHANGED
|
@@ -41,6 +41,20 @@ Kode 是一个强大的 AI 助手,运行在你的终端中。它能理解你
|
|
|
41
41
|
|
|
42
42
|
## 安装
|
|
43
43
|
|
|
44
|
+
### 推荐方式:使用 Bun(最快)
|
|
45
|
+
|
|
46
|
+
首先安装 Bun(如果尚未安装):
|
|
47
|
+
```bash
|
|
48
|
+
curl -fsSL https://bun.sh/install | bash
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
然后安装 Kode:
|
|
52
|
+
```bash
|
|
53
|
+
bun add -g @shareai-lab/kode
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 备选方式:使用 npm
|
|
57
|
+
|
|
44
58
|
```bash
|
|
45
59
|
npm install -g @shareai-lab/kode
|
|
46
60
|
```
|
|
@@ -8,6 +8,7 @@ import TextInput from "./TextInput.js";
|
|
|
8
8
|
import { memo, useCallback, useMemo, useState } from "react";
|
|
9
9
|
import { countTokens } from "../utils/tokens.js";
|
|
10
10
|
import { SentryErrorBoundary } from "./SentryErrorBoundary.js";
|
|
11
|
+
import { AutoUpdater } from "./AutoUpdater.js";
|
|
11
12
|
import { TokenWarning, WARNING_THRESHOLD } from "./TokenWarning.js";
|
|
12
13
|
import { useTerminalSize } from "../hooks/useTerminalSize.js";
|
|
13
14
|
import { getTheme } from "../utils/theme.js";
|
|
@@ -61,6 +62,8 @@ function PromptInput({
|
|
|
61
62
|
verbose,
|
|
62
63
|
messages,
|
|
63
64
|
setToolJSX,
|
|
65
|
+
onAutoUpdaterResult,
|
|
66
|
+
autoUpdaterResult,
|
|
64
67
|
tools,
|
|
65
68
|
input,
|
|
66
69
|
onInputChange,
|
|
@@ -76,6 +79,7 @@ function PromptInput({
|
|
|
76
79
|
readFileTimestamps,
|
|
77
80
|
onModelChange
|
|
78
81
|
}) {
|
|
82
|
+
const [isAutoUpdating, setIsAutoUpdating] = useState(false);
|
|
79
83
|
const [exitMessage, setExitMessage] = useState({ show: false });
|
|
80
84
|
const [message, setMessage] = useState({
|
|
81
85
|
show: false
|
|
@@ -452,7 +456,7 @@ function PromptInput({
|
|
|
452
456
|
},
|
|
453
457
|
"\xB7 # for AGENTS.md"
|
|
454
458
|
), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "\xB7 / for commands \xB7 shift+m to switch model \xB7 esc to undo"))),
|
|
455
|
-
/* @__PURE__ */ React.createElement(SentryErrorBoundary, { children: /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", gap: 1 }, !debug && tokenUsage < WARNING_THRESHOLD && /* @__PURE__ */ React.createElement(Text, { dimColor: true }, terminalSetup.isEnabled && isShiftEnterKeyBindingInstalled() ? "shift + \u23CE for newline" : "\\\u23CE for newline"), /* @__PURE__ */ React.createElement(TokenWarning, { tokenUsage })) })
|
|
459
|
+
/* @__PURE__ */ React.createElement(SentryErrorBoundary, { children: /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", gap: 1 }, !autoUpdaterResult && !isAutoUpdating && !debug && tokenUsage < WARNING_THRESHOLD && /* @__PURE__ */ React.createElement(Text, { dimColor: true }, terminalSetup.isEnabled && isShiftEnterKeyBindingInstalled() ? "shift + \u23CE for newline" : "\\\u23CE for newline"), /* @__PURE__ */ React.createElement(TokenWarning, { tokenUsage })) })
|
|
456
460
|
), suggestions.length > 0 && /* @__PURE__ */ React.createElement(
|
|
457
461
|
Box,
|
|
458
462
|
{
|
|
@@ -474,7 +478,16 @@ function PromptInput({
|
|
|
474
478
|
return "\u2192 insert reference \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close";
|
|
475
479
|
}
|
|
476
480
|
})()))),
|
|
477
|
-
/* @__PURE__ */ React.createElement(SentryErrorBoundary, { children: /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", gap: 1 }, /* @__PURE__ */ React.createElement(TokenWarning, { tokenUsage: countTokens(messages) })
|
|
481
|
+
/* @__PURE__ */ React.createElement(SentryErrorBoundary, { children: /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", gap: 1 }, /* @__PURE__ */ React.createElement(TokenWarning, { tokenUsage: countTokens(messages) }), /* @__PURE__ */ React.createElement(
|
|
482
|
+
AutoUpdater,
|
|
483
|
+
{
|
|
484
|
+
debug,
|
|
485
|
+
onAutoUpdaterResult,
|
|
486
|
+
autoUpdaterResult,
|
|
487
|
+
isUpdating: isAutoUpdating,
|
|
488
|
+
onChangeIsUpdating: setIsAutoUpdating
|
|
489
|
+
}
|
|
490
|
+
)) })
|
|
478
491
|
));
|
|
479
492
|
}
|
|
480
493
|
var PromptInput_default = memo(PromptInput);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/PromptInput.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Box, Text, useInput } from 'ink'\nimport { sample } from 'lodash-es'\nimport { getExampleCommands } from '../utils/exampleCommands'\nimport * as React from 'react'\nimport { type Message } from '../query'\nimport { processUserInput } from '../utils/messages'\nimport { useArrowKeyHistory } from '../hooks/useArrowKeyHistory'\nimport { useUnifiedCompletion } from '../hooks/useUnifiedCompletion'\nimport { addToHistory } from '../history'\nimport TextInput from './TextInput'\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react'\nimport { countTokens } from '../utils/tokens'\nimport { SentryErrorBoundary } from './SentryErrorBoundary'\nimport type { Command } from '../commands'\nimport type { SetToolJSXFn, Tool } from '../Tool'\nimport { TokenWarning, WARNING_THRESHOLD } from './TokenWarning'\nimport { useTerminalSize } from '../hooks/useTerminalSize'\nimport { getTheme } from '../utils/theme'\nimport { getModelManager, reloadModelManager } from '../utils/model'\nimport { saveGlobalConfig } from '../utils/config'\nimport { setTerminalTitle } from '../utils/terminal'\nimport terminalSetup, {\n isShiftEnterKeyBindingInstalled,\n handleHashCommand,\n} from '../commands/terminalSetup'\nimport { usePermissionContext } from '../context/PermissionContext'\n\n// Async function to interpret the '#' command input using AI\nasync function interpretHashCommand(input: string): Promise<string> {\n // Use the AI to interpret the input\n try {\n const { queryQuick } = await import('../services/claude')\n\n // Create a prompt for the model to interpret the hash command\n const systemPrompt = [\n \"You're helping the user structure notes that will be added to their KODING.md file.\",\n \"Format the user's input into a well-structured note that will be useful for later reference.\",\n 'Add appropriate markdown formatting, headings, bullet points, or other structural elements as needed.',\n 'The goal is to transform the raw note into something that will be more useful when reviewed later.',\n 'You should keep the original meaning but make the structure clear.',\n ]\n\n // Send the request to the AI\n const result = await queryQuick({\n systemPrompt,\n userPrompt: `Transform this note for KODING.md: ${input}`,\n })\n\n // Extract the content from the response\n if (typeof result.message.content === 'string') {\n return result.message.content\n } else if (Array.isArray(result.message.content)) {\n return result.message.content\n .filter(block => block.type === 'text')\n .map(block => (block.type === 'text' ? block.text : ''))\n .join('\\n')\n }\n\n return `# ${input}\\n\\n_Added on ${new Date().toLocaleString()}_`\n } catch (e) {\n // If interpretation fails, return the input with minimal formatting\n return `# ${input}\\n\\n_Added on ${new Date().toLocaleString()}_`\n }\n}\n\ntype Props = {\n commands: Command[]\n forkNumber: number\n messageLogName: string\n isDisabled: boolean\n isLoading: boolean\n onQuery: (\n newMessages: Message[],\n abortController?: AbortController,\n ) => Promise<void>\n debug: boolean\n verbose: boolean\n messages: Message[]\n setToolJSX: SetToolJSXFn\n tools: Tool[]\n input: string\n onInputChange: (value: string) => void\n mode: 'bash' | 'prompt' | 'koding'\n onModeChange: (mode: 'bash' | 'prompt' | 'koding') => void\n submitCount: number\n onSubmitCountChange: (updater: (prev: number) => number) => void\n setIsLoading: (isLoading: boolean) => void\n setAbortController: (abortController: AbortController | null) => void\n onShowMessageSelector: () => void\n setForkConvoWithMessagesOnTheNextRender: (\n forkConvoWithMessages: Message[],\n ) => void\n readFileTimestamps: { [filename: string]: number }\n abortController: AbortController | null\n onModelChange?: () => void\n}\n\nfunction getPastedTextPrompt(text: string): string {\n const newlineCount = (text.match(/\\r\\n|\\r|\\n/g) || []).length\n return `[Pasted text +${newlineCount} lines] `\n}\nfunction PromptInput({\n commands,\n forkNumber,\n messageLogName,\n isDisabled,\n isLoading,\n onQuery,\n debug,\n verbose,\n messages,\n setToolJSX,\n tools,\n input,\n onInputChange,\n mode,\n onModeChange,\n submitCount,\n onSubmitCountChange,\n setIsLoading,\n abortController,\n setAbortController,\n onShowMessageSelector,\n setForkConvoWithMessagesOnTheNextRender,\n readFileTimestamps,\n onModelChange,\n}: Props): React.ReactNode {\n const [exitMessage, setExitMessage] = useState<{\n show: boolean\n key?: string\n }>({ show: false })\n const [message, setMessage] = useState<{ show: boolean; text?: string }>({\n show: false,\n })\n const [modelSwitchMessage, setModelSwitchMessage] = useState<{\n show: boolean\n text?: string\n }>({\n show: false,\n })\n const [pastedImage, setPastedImage] = useState<string | null>(null)\n const [placeholder, setPlaceholder] = useState('')\n const [cursorOffset, setCursorOffset] = useState<number>(input.length)\n const [pastedText, setPastedText] = useState<string | null>(null)\n\n // Permission context for mode management\n const { cycleMode, currentMode } = usePermissionContext()\n\n // useEffect(() => {\n // getExampleCommands().then(commands => {\n // setPlaceholder(`Try \"${sample(commands)}\"`)\n // })\n // }, [])\n const { columns } = useTerminalSize()\n\n const commandWidth = useMemo(\n () => Math.max(...commands.map(cmd => cmd.userFacingName().length)) + 5,\n [commands],\n )\n\n // Unified completion system - one hook to rule them all (now with terminal behavior)\n const {\n suggestions,\n selectedIndex,\n isActive: completionActive,\n emptyDirMessage,\n } = useUnifiedCompletion({\n input,\n cursorOffset,\n onInputChange,\n setCursorOffset,\n commands,\n onSubmit,\n })\n\n // Get theme early for memoized rendering\n const theme = getTheme()\n\n // Memoized completion suggestions rendering - after useUnifiedCompletion\n const renderedSuggestions = useMemo(() => {\n if (suggestions.length === 0) return null\n\n return suggestions.map((suggestion, index) => {\n const isSelected = index === selectedIndex\n const isAgent = suggestion.type === 'agent'\n \n // Simple color logic without complex lookups\n const displayColor = isSelected \n ? theme.suggestion \n : (isAgent && suggestion.metadata?.color)\n ? suggestion.metadata.color\n : undefined\n \n return (\n <Box key={`${suggestion.type}-${suggestion.value}-${index}`} flexDirection=\"row\">\n <Text\n color={displayColor}\n dimColor={!isSelected && !displayColor}\n >\n {isSelected ? '\u25C6 ' : ' '}\n {suggestion.displayValue}\n </Text>\n </Box>\n )\n })\n }, [suggestions, selectedIndex, theme.suggestion])\n\n const onChange = useCallback(\n (value: string) => {\n if (value.startsWith('!')) {\n onModeChange('bash')\n return\n }\n if (value.startsWith('#')) {\n onModeChange('koding')\n return\n }\n onInputChange(value)\n },\n [onModeChange, onInputChange],\n )\n\n // Handle Shift+M model switching with enhanced debugging\n const handleQuickModelSwitch = useCallback(async () => {\n const modelManager = getModelManager()\n const currentTokens = countTokens(messages)\n\n // Get debug info for better error reporting\n const debugInfo = modelManager.getModelSwitchingDebugInfo()\n \n const switchResult = modelManager.switchToNextModel(currentTokens)\n\n if (switchResult.success && switchResult.modelName) {\n // Successful switch - use enhanced message from model manager\n onSubmitCountChange(prev => prev + 1)\n setModelSwitchMessage({\n show: true,\n text: switchResult.message || `\u2705 Switched to ${switchResult.modelName}`,\n })\n setTimeout(() => setModelSwitchMessage({ show: false }), 3000)\n } else if (switchResult.blocked && switchResult.message) {\n // Context overflow - show detailed message\n setModelSwitchMessage({\n show: true,\n text: switchResult.message,\n })\n setTimeout(() => setModelSwitchMessage({ show: false }), 5000)\n } else {\n // Enhanced error reporting with debug info \n let errorMessage = switchResult.message\n \n if (!errorMessage) {\n if (debugInfo.totalModels === 0) {\n errorMessage = '\u274C No models configured. Use /model to add models.'\n } else if (debugInfo.activeModels === 0) {\n errorMessage = `\u274C No active models (${debugInfo.totalModels} total, all inactive). Use /model to activate models.`\n } else if (debugInfo.activeModels === 1) {\n // Show ALL models including inactive ones for debugging\n const allModelNames = debugInfo.availableModels.map(m => `${m.name}${m.isActive ? '' : ' (inactive)'}`).join(', ')\n errorMessage = `\u26A0\uFE0F Only 1 active model out of ${debugInfo.totalModels} total models: ${allModelNames}. ALL configured models will be activated for switching.`\n } else {\n errorMessage = `\u274C Model switching failed (${debugInfo.activeModels} active, ${debugInfo.totalModels} total models available)`\n }\n }\n \n setModelSwitchMessage({\n show: true,\n text: errorMessage,\n })\n setTimeout(() => setModelSwitchMessage({ show: false }), 6000)\n }\n }, [onSubmitCountChange, messages])\n\n const { resetHistory, onHistoryUp, onHistoryDown } = useArrowKeyHistory(\n (value: string, mode: 'bash' | 'prompt' | 'koding') => {\n onChange(value)\n onModeChange(mode)\n },\n input,\n )\n\n // Only use history navigation when there are no suggestions\n const handleHistoryUp = () => {\n if (!completionActive) {\n onHistoryUp()\n }\n }\n\n const handleHistoryDown = () => {\n if (!completionActive) {\n onHistoryDown()\n }\n }\n\n async function onSubmit(input: string, isSubmittingSlashCommand = false) {\n // Special handling for \"put a verbose summary\" and similar action prompts in koding mode\n if (\n (mode === 'koding' || input.startsWith('#')) &&\n input.match(/^(#\\s*)?(put|create|generate|write|give|provide)/i)\n ) {\n try {\n // Store the original input for history\n const originalInput = input\n\n // Strip the # prefix if present\n const cleanInput = mode === 'koding' ? input : input.substring(1).trim()\n\n // Add to history and clear input field\n addToHistory(mode === 'koding' ? `#${input}` : input)\n onInputChange('')\n\n // Create additional context to inform Claude this is for KODING.md\n const kodingContext =\n 'The user is using Koding mode. Format your response as a comprehensive, well-structured document suitable for adding to AGENTS.md. Use proper markdown formatting with headings, lists, code blocks, etc. The response should be complete and ready to add to AGENTS.md documentation.'\n\n // Switch to prompt mode but tag the submission for later capture\n onModeChange('prompt')\n\n // \uD83D\uDD27 Fix Koding mode: clean up previous state\n if (abortController) {\n abortController.abort()\n }\n setIsLoading(false)\n await new Promise(resolve => setTimeout(resolve, 0))\n\n // Set loading state - AbortController now created in onQuery\n setIsLoading(true)\n\n // Process as a normal user input but with special handling\n const messages = await processUserInput(\n cleanInput,\n 'prompt', // Use prompt mode for processing\n setToolJSX,\n {\n options: {\n commands,\n forkNumber,\n messageLogName,\n tools,\n verbose,\n maxThinkingTokens: 0,\n // Add context flag for koding mode\n isKodingRequest: true,\n kodingContext,\n },\n messageId: undefined,\n abortController: abortController || new AbortController(), // Temporary controller, actual one created in onQuery\n readFileTimestamps,\n setForkConvoWithMessagesOnTheNextRender,\n },\n pastedImage ?? null,\n )\n\n // Send query and capture response\n if (messages.length) {\n await onQuery(messages)\n\n // After query completes, the last message should be Claude's response\n // We'll set up a one-time listener to capture and save Claude's response\n // This will be handled by the REPL component or message handler\n }\n\n return\n } catch (e) {\n // If something fails, log the error\n console.error('Error processing Koding request:', e)\n }\n }\n\n // If in koding mode or input starts with '#', interpret it using AI before appending to AGENTS.md\n else if (mode === 'koding' || input.startsWith('#')) {\n try {\n // Strip the # if we're in koding mode and the user didn't type it (since it's implied)\n const contentToInterpret =\n mode === 'koding' && !input.startsWith('#')\n ? input.trim()\n : input.substring(1).trim()\n\n const interpreted = await interpretHashCommand(contentToInterpret)\n handleHashCommand(interpreted)\n } catch (e) {\n // If interpretation fails, log the error\n }\n onInputChange('')\n addToHistory(mode === 'koding' ? `#${input}` : input)\n onModeChange('prompt')\n return\n }\n if (input === '') {\n return\n }\n if (isDisabled) {\n return\n }\n if (isLoading) {\n return\n }\n \n // Handle Enter key when completions are active\n // If there are suggestions showing, Enter should complete the selection, not send the message\n if (suggestions.length > 0 && completionActive) {\n // The completion is handled by useUnifiedCompletion hook\n // Just return to prevent message sending\n return\n }\n\n // Handle exit commands\n if (['exit', 'quit', ':q', ':q!', ':wq', ':wq!'].includes(input.trim())) {\n exit()\n }\n\n let finalInput = input\n if (pastedText) {\n // Create the prompt pattern that would have been used for this pasted text\n const pastedPrompt = getPastedTextPrompt(pastedText)\n if (finalInput.includes(pastedPrompt)) {\n finalInput = finalInput.replace(pastedPrompt, pastedText)\n } // otherwise, ignore the pastedText if the user has modified the prompt\n }\n onInputChange('')\n onModeChange('prompt')\n // Suggestions are now handled by unified completion\n setPastedImage(null)\n setPastedText(null)\n onSubmitCountChange(_ => _ + 1)\n\n setIsLoading(true)\n \n const newAbortController = new AbortController()\n setAbortController(newAbortController)\n\n const messages = await processUserInput(\n finalInput,\n mode,\n setToolJSX,\n {\n options: {\n commands,\n forkNumber,\n messageLogName,\n tools,\n verbose,\n maxThinkingTokens: 0,\n },\n messageId: undefined,\n abortController: newAbortController,\n readFileTimestamps,\n setForkConvoWithMessagesOnTheNextRender,\n },\n pastedImage ?? null,\n )\n\n if (messages.length) {\n onQuery(messages, newAbortController)\n } else {\n // Local JSX commands\n addToHistory(input)\n resetHistory()\n return\n }\n\n for (const message of messages) {\n if (message.type === 'user') {\n const inputToAdd = mode === 'bash' ? `!${input}` : input\n addToHistory(inputToAdd)\n resetHistory()\n }\n }\n }\n\n function onImagePaste(image: string) {\n onModeChange('prompt')\n setPastedImage(image)\n }\n\n function onTextPaste(rawText: string) {\n // Replace any \\r with \\n first to match useTextInput's conversion behavior\n const text = rawText.replace(/\\r/g, '\\n')\n\n // Get prompt with newline count\n const pastedPrompt = getPastedTextPrompt(text)\n\n // Update the input with a visual indicator that text has been pasted\n const newInput =\n input.slice(0, cursorOffset) + pastedPrompt + input.slice(cursorOffset)\n onInputChange(newInput)\n\n // Update cursor position to be after the inserted indicator\n setCursorOffset(cursorOffset + pastedPrompt.length)\n\n // Still set the pastedText state for actual submission\n setPastedText(text)\n }\n\n useInput((inputChar, key) => {\n // For bash mode, only exit when deleting the last character (which would be the '!' character)\n if (mode === 'bash' && (key.backspace || key.delete)) {\n // Check the current input state, not the inputChar parameter\n // If current input is empty, we're about to delete the '!' character, so exit bash mode\n if (input === '') {\n onModeChange('prompt')\n }\n return\n }\n \n // For koding mode, only exit when deleting the last character (which would be the '#' character)\n if (mode === 'koding' && (key.backspace || key.delete)) {\n // Check the current input state, not the inputChar parameter\n // If current input is empty, we're about to delete the '#' character, so exit koding mode\n if (input === '') {\n onModeChange('prompt')\n }\n return\n }\n \n // For other modes, keep the original behavior\n if (inputChar === '' && (key.escape || key.backspace || key.delete)) {\n onModeChange('prompt')\n }\n // esc is a little overloaded:\n // - when we're loading a response, it's used to cancel the request\n // - otherwise, it's used to show the message selector\n // - when double pressed, it's used to clear the input\n if (key.escape && messages.length > 0 && !input && !isLoading) {\n onShowMessageSelector()\n }\n\n // Shift+Tab for mode cycling (matching original Claude Code implementation)\n if (key.shift && key.tab) {\n cycleMode()\n return true // Explicitly handled\n }\n\n return false // Not handled, allow other hooks\n })\n\n // Handle special key combinations before character input\n const handleSpecialKey = useCallback((inputChar: string, key: any): boolean => {\n // Shift+M for model switching - intercept before character input\n if (key.shift && (inputChar === 'M' || inputChar === 'm')) {\n handleQuickModelSwitch()\n return true // Prevent character from being input\n }\n \n return false // Not handled, allow normal processing\n }, [handleQuickModelSwitch])\n\n const textInputColumns = useTerminalSize().columns - 6\n const tokenUsage = useMemo(() => countTokens(messages), [messages])\n\n // \uD83D\uDD27 Fix: Track model ID changes to detect external config updates\n const modelManager = getModelManager()\n const currentModelId = (modelManager.getModel('main') as any)?.id || null\n\n const modelInfo = useMemo(() => {\n // Force fresh ModelManager instance to detect config changes\n const freshModelManager = getModelManager()\n const currentModel = freshModelManager.getModel('main')\n if (!currentModel) {\n return null\n }\n\n return {\n name: currentModel.modelName, // \uD83D\uDD27 Fix: Use actual model name, not display name\n id: (currentModel as any).id, // \u6DFB\u52A0\u6A21\u578BID\u7528\u4E8E\u8C03\u8BD5\n provider: currentModel.provider, // \u6DFB\u52A0\u63D0\u4F9B\u5546\u4FE1\u606F\n contextLength: currentModel.contextLength,\n currentTokens: tokenUsage,\n }\n }, [tokenUsage, modelSwitchMessage.show, submitCount, currentModelId]) // Track model ID to detect config changes\n\n return (\n <Box flexDirection=\"column\">\n {/* Model info in top-right corner */}\n {modelInfo && (\n <Box justifyContent=\"flex-end\" marginBottom={1}>\n <Text dimColor>\n [{modelInfo.provider}] {modelInfo.name}:{' '}\n {Math.round(modelInfo.currentTokens / 1000)}k /{' '}\n {Math.round(modelInfo.contextLength / 1000)}k\n </Text>\n </Box>\n )}\n\n <Box\n alignItems=\"flex-start\"\n justifyContent=\"flex-start\"\n borderColor={\n mode === 'bash'\n ? theme.bashBorder\n : mode === 'koding'\n ? theme.noting\n : theme.secondaryBorder\n }\n borderDimColor\n borderStyle=\"round\"\n marginTop={1}\n width=\"100%\"\n >\n <Box\n alignItems=\"flex-start\"\n alignSelf=\"flex-start\"\n flexWrap=\"nowrap\"\n justifyContent=\"flex-start\"\n width={3}\n >\n {mode === 'bash' ? (\n <Text color={theme.bashBorder}> ! </Text>\n ) : mode === 'koding' ? (\n <Text color={theme.noting}> # </Text>\n ) : (\n <Text color={isLoading ? theme.secondaryText : undefined}>\n > \n </Text>\n )}\n </Box>\n <Box paddingRight={1}>\n <TextInput\n multiline\n onSubmit={onSubmit}\n onChange={onChange}\n value={input}\n onHistoryUp={handleHistoryUp}\n onHistoryDown={handleHistoryDown}\n onHistoryReset={() => resetHistory()}\n placeholder={submitCount > 0 ? undefined : placeholder}\n onExit={() => process.exit(0)}\n onExitMessage={(show, key) => setExitMessage({ show, key })}\n onMessage={(show, text) => setMessage({ show, text })}\n onImagePaste={onImagePaste}\n columns={textInputColumns}\n isDimmed={isDisabled || isLoading}\n disableCursorMovementForUpDownKeys={completionActive}\n cursorOffset={cursorOffset}\n onChangeCursorOffset={setCursorOffset}\n onPaste={onTextPaste}\n onSpecialKey={handleSpecialKey}\n />\n </Box>\n </Box>\n {!completionActive && suggestions.length === 0 && (\n <Box\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n paddingX={2}\n paddingY={0}\n >\n <Box justifyContent=\"flex-start\" gap={1}>\n {exitMessage.show ? (\n <Text dimColor>Press {exitMessage.key} again to exit</Text>\n ) : message.show ? (\n <Text dimColor>{message.text}</Text>\n ) : modelSwitchMessage.show ? (\n <Text color={theme.success}>{modelSwitchMessage.text}</Text>\n ) : (\n <>\n <Text\n color={mode === 'bash' ? theme.bashBorder : undefined}\n dimColor={mode !== 'bash'}\n >\n ! for bash mode\n </Text>\n <Text\n color={mode === 'koding' ? theme.noting : undefined}\n dimColor={mode !== 'koding'}\n >\n \u00B7 # for AGENTS.md\n </Text>\n <Text dimColor>\n \u00B7 / for commands \u00B7 shift+m to switch model \u00B7 esc to undo\n </Text>\n </>\n )}\n </Box>\n <SentryErrorBoundary children={\n <Box justifyContent=\"flex-end\" gap={1}>\n {!debug &&\n tokenUsage < WARNING_THRESHOLD && (\n <Text dimColor>\n {terminalSetup.isEnabled &&\n isShiftEnterKeyBindingInstalled()\n ? 'shift + \u23CE for newline'\n : '\\\\\u23CE for newline'}\n </Text>\n )}\n <TokenWarning tokenUsage={tokenUsage} />\n </Box>\n } />\n </Box>\n )}\n {/* Unified completion suggestions - optimized rendering */}\n {suggestions.length > 0 && (\n <Box\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n paddingX={2}\n paddingY={0}\n >\n <Box flexDirection=\"column\">\n {renderedSuggestions}\n \n {/* \u7B80\u6D01\u64CD\u4F5C\u63D0\u793A\u6846 */}\n <Box marginTop={1} paddingX={3} borderStyle=\"round\" borderColor=\"gray\">\n <Text dimColor={!emptyDirMessage} color={emptyDirMessage ? \"yellow\" : undefined}>\n {emptyDirMessage || (() => {\n const selected = suggestions[selectedIndex]\n if (!selected) {\n return '\u2191\u2193 navigate \u2022 \u2192 accept \u2022 Tab cycle \u2022 Esc close'\n }\n if (selected?.value.endsWith('/')) {\n return '\u2192 enter directory \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close'\n } else if (selected?.type === 'agent') {\n return '\u2192 select agent \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close'\n } else {\n return '\u2192 insert reference \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close'\n }\n })()}\n </Text>\n </Box>\n </Box>\n <SentryErrorBoundary children={\n <Box justifyContent=\"flex-end\" gap={1}>\n <TokenWarning tokenUsage={countTokens(messages)} />\n </Box>\n } />\n </Box>\n )}\n </Box>\n )\n}\n\nexport default memo(PromptInput)\n\nfunction exit(): never {\n setTerminalTitle('')\n process.exit(0)\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,KAAK,MAAM,gBAAgB;AAGpC,YAAY,WAAW;AAEvB,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AACnC,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAC7B,OAAO,eAAe;AACtB,SAAS,MAAM,aAAwB,SAAS,gBAAgB;AAChE,SAAS,mBAAmB;AAC5B,SAAS,2BAA2B;AAGpC,SAAS,cAAc,yBAAyB;AAChD,SAAS,uBAAuB;AAChC,SAAS,gBAAgB;AACzB,SAAS,uBAA2C;AAEpD,SAAS,wBAAwB;AACjC,OAAO;AAAA,EACL;AAAA,EACA;AAAA,OACK;AACP,SAAS,4BAA4B;AAGrC,eAAe,qBAAqB,OAAgC;AAElE,MAAI;AACF,UAAM,EAAE,WAAW,IAAI,MAAM,OAAO,oBAAoB;AAGxD,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAGA,UAAM,SAAS,MAAM,WAAW;AAAA,MAC9B;AAAA,MACA,YAAY,sCAAsC,KAAK;AAAA,IACzD,CAAC;AAGD,QAAI,OAAO,OAAO,QAAQ,YAAY,UAAU;AAC9C,aAAO,OAAO,QAAQ;AAAA,IACxB,WAAW,MAAM,QAAQ,OAAO,QAAQ,OAAO,GAAG;AAChD,aAAO,OAAO,QAAQ,QACnB,OAAO,WAAS,MAAM,SAAS,MAAM,EACrC,IAAI,WAAU,MAAM,SAAS,SAAS,MAAM,OAAO,EAAG,EACtD,KAAK,IAAI;AAAA,IACd;AAEA,WAAO,KAAK,KAAK;AAAA;AAAA,aAAiB,oBAAI,KAAK,GAAE,eAAe,CAAC;AAAA,EAC/D,SAAS,GAAG;AAEV,WAAO,KAAK,KAAK;AAAA;AAAA,aAAiB,oBAAI,KAAK,GAAE,eAAe,CAAC;AAAA,EAC/D;AACF;AAkCA,SAAS,oBAAoB,MAAsB;AACjD,QAAM,gBAAgB,KAAK,MAAM,aAAa,KAAK,CAAC,GAAG;AACvD,SAAO,iBAAiB,YAAY;AACtC;AACA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,QAAM,CAAC,aAAa,cAAc,IAAI,SAGnC,EAAE,MAAM,MAAM,CAAC;AAClB,QAAM,CAAC,SAAS,UAAU,IAAI,SAA2C;AAAA,IACvE,MAAM;AAAA,EACR,CAAC;AACD,QAAM,CAAC,oBAAoB,qBAAqB,IAAI,SAGjD;AAAA,IACD,MAAM;AAAA,EACR,CAAC;AACD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAwB,IAAI;AAClE,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,EAAE;AACjD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAiB,MAAM,MAAM;AACrE,QAAM,CAAC,YAAY,aAAa,IAAI,SAAwB,IAAI;AAGhE,QAAM,EAAE,WAAW,YAAY,IAAI,qBAAqB;AAOxD,QAAM,EAAE,QAAQ,IAAI,gBAAgB;AAEpC,QAAM,eAAe;AAAA,IACnB,MAAM,KAAK,IAAI,GAAG,SAAS,IAAI,SAAO,IAAI,eAAe,EAAE,MAAM,CAAC,IAAI;AAAA,IACtE,CAAC,QAAQ;AAAA,EACX;AAGA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,EACF,IAAI,qBAAqB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAGD,QAAM,QAAQ,SAAS;AAGvB,QAAM,sBAAsB,QAAQ,MAAM;AACxC,QAAI,YAAY,WAAW,EAAG,QAAO;AAErC,WAAO,YAAY,IAAI,CAAC,YAAY,UAAU;AAC5C,YAAM,aAAa,UAAU;AAC7B,YAAM,UAAU,WAAW,SAAS;AAGpC,YAAM,eAAe,aACjB,MAAM,aACL,WAAW,WAAW,UAAU,QAC/B,WAAW,SAAS,QACpB;AAEN,aACE,oCAAC,OAAI,KAAK,GAAG,WAAW,IAAI,IAAI,WAAW,KAAK,IAAI,KAAK,IAAI,eAAc,SACzE;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP,UAAU,CAAC,cAAc,CAAC;AAAA;AAAA,QAEzB,aAAa,YAAO;AAAA,QACpB,WAAW;AAAA,MACd,CACF;AAAA,IAEJ,CAAC;AAAA,EACH,GAAG,CAAC,aAAa,eAAe,MAAM,UAAU,CAAC;AAEjD,QAAM,WAAW;AAAA,IACf,CAAC,UAAkB;AACjB,UAAI,MAAM,WAAW,GAAG,GAAG;AACzB,qBAAa,MAAM;AACnB;AAAA,MACF;AACA,UAAI,MAAM,WAAW,GAAG,GAAG;AACzB,qBAAa,QAAQ;AACrB;AAAA,MACF;AACA,oBAAc,KAAK;AAAA,IACrB;AAAA,IACA,CAAC,cAAc,aAAa;AAAA,EAC9B;AAGA,QAAM,yBAAyB,YAAY,YAAY;AACrD,UAAMA,gBAAe,gBAAgB;AACrC,UAAM,gBAAgB,YAAY,QAAQ;AAG1C,UAAM,YAAYA,cAAa,2BAA2B;AAE1D,UAAM,eAAeA,cAAa,kBAAkB,aAAa;AAEjE,QAAI,aAAa,WAAW,aAAa,WAAW;AAElD,0BAAoB,UAAQ,OAAO,CAAC;AACpC,4BAAsB;AAAA,QACpB,MAAM;AAAA,QACN,MAAM,aAAa,WAAW,sBAAiB,aAAa,SAAS;AAAA,MACvE,CAAC;AACD,iBAAW,MAAM,sBAAsB,EAAE,MAAM,MAAM,CAAC,GAAG,GAAI;AAAA,IAC/D,WAAW,aAAa,WAAW,aAAa,SAAS;AAEvD,4BAAsB;AAAA,QACpB,MAAM;AAAA,QACN,MAAM,aAAa;AAAA,MACrB,CAAC;AACD,iBAAW,MAAM,sBAAsB,EAAE,MAAM,MAAM,CAAC,GAAG,GAAI;AAAA,IAC/D,OAAO;AAEL,UAAI,eAAe,aAAa;AAEhC,UAAI,CAAC,cAAc;AACjB,YAAI,UAAU,gBAAgB,GAAG;AAC/B,yBAAe;AAAA,QACjB,WAAW,UAAU,iBAAiB,GAAG;AACvC,yBAAe,4BAAuB,UAAU,WAAW;AAAA,QAC7D,WAAW,UAAU,iBAAiB,GAAG;AAEvC,gBAAM,gBAAgB,UAAU,gBAAgB,IAAI,OAAK,GAAG,EAAE,IAAI,GAAG,EAAE,WAAW,KAAK,aAAa,EAAE,EAAE,KAAK,IAAI;AACjH,yBAAe,2CAAiC,UAAU,WAAW,kBAAkB,aAAa;AAAA,QACtG,OAAO;AACL,yBAAe,kCAA6B,UAAU,YAAY,YAAY,UAAU,WAAW;AAAA,QACrG;AAAA,MACF;AAEA,4BAAsB;AAAA,QACpB,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC;AACD,iBAAW,MAAM,sBAAsB,EAAE,MAAM,MAAM,CAAC,GAAG,GAAI;AAAA,IAC/D;AAAA,EACF,GAAG,CAAC,qBAAqB,QAAQ,CAAC;AAElC,QAAM,EAAE,cAAc,aAAa,cAAc,IAAI;AAAA,IACnD,CAAC,OAAeC,UAAuC;AACrD,eAAS,KAAK;AACd,mBAAaA,KAAI;AAAA,IACnB;AAAA,IACA;AAAA,EACF;AAGA,QAAM,kBAAkB,MAAM;AAC5B,QAAI,CAAC,kBAAkB;AACrB,kBAAY;AAAA,IACd;AAAA,EACF;AAEA,QAAM,oBAAoB,MAAM;AAC9B,QAAI,CAAC,kBAAkB;AACrB,oBAAc;AAAA,IAChB;AAAA,EACF;AAEA,iBAAe,SAASC,QAAe,2BAA2B,OAAO;AAEvE,SACG,SAAS,YAAYA,OAAM,WAAW,GAAG,MAC1CA,OAAM,MAAM,mDAAmD,GAC/D;AACA,UAAI;AAEF,cAAM,gBAAgBA;AAGtB,cAAM,aAAa,SAAS,WAAWA,SAAQA,OAAM,UAAU,CAAC,EAAE,KAAK;AAGvE,qBAAa,SAAS,WAAW,IAAIA,MAAK,KAAKA,MAAK;AACpD,sBAAc,EAAE;AAGhB,cAAM,gBACJ;AAGF,qBAAa,QAAQ;AAGrB,YAAI,iBAAiB;AACnB,0BAAgB,MAAM;AAAA,QACxB;AACA,qBAAa,KAAK;AAClB,cAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,CAAC,CAAC;AAGnD,qBAAa,IAAI;AAGjB,cAAMC,YAAW,MAAM;AAAA,UACrB;AAAA,UACA;AAAA;AAAA,UACA;AAAA,UACA;AAAA,YACE,SAAS;AAAA,cACP;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,mBAAmB;AAAA;AAAA,cAEnB,iBAAiB;AAAA,cACjB;AAAA,YACF;AAAA,YACA,WAAW;AAAA,YACX,iBAAiB,mBAAmB,IAAI,gBAAgB;AAAA;AAAA,YACxD;AAAA,YACA;AAAA,UACF;AAAA,UACA,eAAe;AAAA,QACjB;AAGA,YAAIA,UAAS,QAAQ;AACnB,gBAAM,QAAQA,SAAQ;AAAA,QAKxB;AAEA;AAAA,MACF,SAAS,GAAG;AAEV,gBAAQ,MAAM,oCAAoC,CAAC;AAAA,MACrD;AAAA,IACF,WAGS,SAAS,YAAYD,OAAM,WAAW,GAAG,GAAG;AACnD,UAAI;AAEF,cAAM,qBACJ,SAAS,YAAY,CAACA,OAAM,WAAW,GAAG,IACtCA,OAAM,KAAK,IACXA,OAAM,UAAU,CAAC,EAAE,KAAK;AAE9B,cAAM,cAAc,MAAM,qBAAqB,kBAAkB;AACjE,0BAAkB,WAAW;AAAA,MAC/B,SAAS,GAAG;AAAA,MAEZ;AACA,oBAAc,EAAE;AAChB,mBAAa,SAAS,WAAW,IAAIA,MAAK,KAAKA,MAAK;AACpD,mBAAa,QAAQ;AACrB;AAAA,IACF;AACA,QAAIA,WAAU,IAAI;AAChB;AAAA,IACF;AACA,QAAI,YAAY;AACd;AAAA,IACF;AACA,QAAI,WAAW;AACb;AAAA,IACF;AAIA,QAAI,YAAY,SAAS,KAAK,kBAAkB;AAG9C;AAAA,IACF;AAGA,QAAI,CAAC,QAAQ,QAAQ,MAAM,OAAO,OAAO,MAAM,EAAE,SAASA,OAAM,KAAK,CAAC,GAAG;AACvE,WAAK;AAAA,IACP;AAEA,QAAI,aAAaA;AACjB,QAAI,YAAY;AAEd,YAAM,eAAe,oBAAoB,UAAU;AACnD,UAAI,WAAW,SAAS,YAAY,GAAG;AACrC,qBAAa,WAAW,QAAQ,cAAc,UAAU;AAAA,MAC1D;AAAA,IACF;AACA,kBAAc,EAAE;AAChB,iBAAa,QAAQ;AAErB,mBAAe,IAAI;AACnB,kBAAc,IAAI;AAClB,wBAAoB,OAAK,IAAI,CAAC;AAE9B,iBAAa,IAAI;AAEjB,UAAM,qBAAqB,IAAI,gBAAgB;AAC/C,uBAAmB,kBAAkB;AAErC,UAAMC,YAAW,MAAM;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,mBAAmB;AAAA,QACrB;AAAA,QACA,WAAW;AAAA,QACX,iBAAiB;AAAA,QACjB;AAAA,QACA;AAAA,MACF;AAAA,MACA,eAAe;AAAA,IACjB;AAEA,QAAIA,UAAS,QAAQ;AACnB,cAAQA,WAAU,kBAAkB;AAAA,IACtC,OAAO;AAEL,mBAAaD,MAAK;AAClB,mBAAa;AACb;AAAA,IACF;AAEA,eAAWE,YAAWD,WAAU;AAC9B,UAAIC,SAAQ,SAAS,QAAQ;AAC3B,cAAM,aAAa,SAAS,SAAS,IAAIF,MAAK,KAAKA;AACnD,qBAAa,UAAU;AACvB,qBAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAEA,WAAS,aAAa,OAAe;AACnC,iBAAa,QAAQ;AACrB,mBAAe,KAAK;AAAA,EACtB;AAEA,WAAS,YAAY,SAAiB;AAEpC,UAAM,OAAO,QAAQ,QAAQ,OAAO,IAAI;AAGxC,UAAM,eAAe,oBAAoB,IAAI;AAG7C,UAAM,WACJ,MAAM,MAAM,GAAG,YAAY,IAAI,eAAe,MAAM,MAAM,YAAY;AACxE,kBAAc,QAAQ;AAGtB,oBAAgB,eAAe,aAAa,MAAM;AAGlD,kBAAc,IAAI;AAAA,EACpB;AAEA,WAAS,CAAC,WAAW,QAAQ;AAE3B,QAAI,SAAS,WAAW,IAAI,aAAa,IAAI,SAAS;AAGpD,UAAI,UAAU,IAAI;AAChB,qBAAa,QAAQ;AAAA,MACvB;AACA;AAAA,IACF;AAGA,QAAI,SAAS,aAAa,IAAI,aAAa,IAAI,SAAS;AAGtD,UAAI,UAAU,IAAI;AAChB,qBAAa,QAAQ;AAAA,MACvB;AACA;AAAA,IACF;AAGA,QAAI,cAAc,OAAO,IAAI,UAAU,IAAI,aAAa,IAAI,SAAS;AACnE,mBAAa,QAAQ;AAAA,IACvB;AAKA,QAAI,IAAI,UAAU,SAAS,SAAS,KAAK,CAAC,SAAS,CAAC,WAAW;AAC7D,4BAAsB;AAAA,IACxB;AAGA,QAAI,IAAI,SAAS,IAAI,KAAK;AACxB,gBAAU;AACV,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,CAAC;AAGD,QAAM,mBAAmB,YAAY,CAAC,WAAmB,QAAsB;AAE7E,QAAI,IAAI,UAAU,cAAc,OAAO,cAAc,MAAM;AACzD,6BAAuB;AACvB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,sBAAsB,CAAC;AAE3B,QAAM,mBAAmB,gBAAgB,EAAE,UAAU;AACrD,QAAM,aAAa,QAAQ,MAAM,YAAY,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAGlE,QAAM,eAAe,gBAAgB;AACrC,QAAM,iBAAkB,aAAa,SAAS,MAAM,GAAW,MAAM;AAErE,QAAM,YAAY,QAAQ,MAAM;AAE9B,UAAM,oBAAoB,gBAAgB;AAC1C,UAAM,eAAe,kBAAkB,SAAS,MAAM;AACtD,QAAI,CAAC,cAAc;AACjB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,MACL,MAAM,aAAa;AAAA;AAAA,MACnB,IAAK,aAAqB;AAAA;AAAA,MAC1B,UAAU,aAAa;AAAA;AAAA,MACvB,eAAe,aAAa;AAAA,MAC5B,eAAe;AAAA,IACjB;AAAA,EACF,GAAG,CAAC,YAAY,mBAAmB,MAAM,aAAa,cAAc,CAAC;AAErE,SACE,oCAAC,OAAI,eAAc,YAEhB,aACC,oCAAC,OAAI,gBAAe,YAAW,cAAc,KAC3C,oCAAC,QAAK,UAAQ,QAAC,KACX,UAAU,UAAS,MAAG,UAAU,MAAK,KAAE,KACxC,KAAK,MAAM,UAAU,gBAAgB,GAAI,GAAE,OAAI,KAC/C,KAAK,MAAM,UAAU,gBAAgB,GAAI,GAAE,GAC9C,CACF,GAGF;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX,gBAAe;AAAA,MACf,aACE,SAAS,SACL,MAAM,aACN,SAAS,WACP,MAAM,SACN,MAAM;AAAA,MAEd,gBAAc;AAAA,MACd,aAAY;AAAA,MACZ,WAAW;AAAA,MACX,OAAM;AAAA;AAAA,IAEN;AAAA,MAAC;AAAA;AAAA,QACC,YAAW;AAAA,QACX,WAAU;AAAA,QACV,UAAS;AAAA,QACT,gBAAe;AAAA,QACf,OAAO;AAAA;AAAA,MAEN,SAAS,SACR,oCAAC,QAAK,OAAO,MAAM,cAAY,WAAa,IAC1C,SAAS,WACX,oCAAC,QAAK,OAAO,MAAM,UAAQ,WAAa,IAExC,oCAAC,QAAK,OAAO,YAAY,MAAM,gBAAgB,UAAW,WAE1D;AAAA,IAEJ;AAAA,IACA,oCAAC,OAAI,cAAc,KACjB;AAAA,MAAC;AAAA;AAAA,QACC,WAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,aAAa;AAAA,QACb,eAAe;AAAA,QACf,gBAAgB,MAAM,aAAa;AAAA,QACnC,aAAa,cAAc,IAAI,SAAY;AAAA,QAC3C,QAAQ,MAAM,QAAQ,KAAK,CAAC;AAAA,QAC5B,eAAe,CAAC,MAAM,QAAQ,eAAe,EAAE,MAAM,IAAI,CAAC;AAAA,QAC1D,WAAW,CAAC,MAAM,SAAS,WAAW,EAAE,MAAM,KAAK,CAAC;AAAA,QACpD;AAAA,QACA,SAAS;AAAA,QACT,UAAU,cAAc;AAAA,QACxB,oCAAoC;AAAA,QACpC;AAAA,QACA,sBAAsB;AAAA,QACtB,SAAS;AAAA,QACT,cAAc;AAAA;AAAA,IAChB,CACF;AAAA,EACF,GACC,CAAC,oBAAoB,YAAY,WAAW,KAC3C;AAAA,IAAC;AAAA;AAAA,MACC,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,UAAU;AAAA,MACV,UAAU;AAAA;AAAA,IAEV,oCAAC,OAAI,gBAAe,cAAa,KAAK,KACnC,YAAY,OACX,oCAAC,QAAK,UAAQ,QAAC,UAAO,YAAY,KAAI,gBAAc,IAClD,QAAQ,OACV,oCAAC,QAAK,UAAQ,QAAE,QAAQ,IAAK,IAC3B,mBAAmB,OACrB,oCAAC,QAAK,OAAO,MAAM,WAAU,mBAAmB,IAAK,IAErD,0DACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,SAAS,SAAS,MAAM,aAAa;AAAA,QAC5C,UAAU,SAAS;AAAA;AAAA,MACpB;AAAA,IAED,GACA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,SAAS,WAAW,MAAM,SAAS;AAAA,QAC1C,UAAU,SAAS;AAAA;AAAA,MACpB;AAAA,IAED,GACA,oCAAC,QAAK,UAAQ,QAAC,mEAEf,CACF,CAEJ;AAAA,IACA,oCAAC,uBAAoB,UACnB,oCAAC,OAAI,gBAAe,YAAW,KAAK,KACjC,CAAC,SACA,aAAa,qBACX,oCAAC,QAAK,UAAQ,QACX,cAAc,aACf,gCAAgC,IAC5B,+BACA,sBACN,GAEJ,oCAAC,gBAAa,YAAwB,CACxC,GACA;AAAA,EACJ,GAGD,YAAY,SAAS,KACpB;AAAA,IAAC;AAAA;AAAA,MACC,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,UAAU;AAAA,MACV,UAAU;AAAA;AAAA,IAEV,oCAAC,OAAI,eAAc,YAChB,qBAGD,oCAAC,OAAI,WAAW,GAAG,UAAU,GAAG,aAAY,SAAQ,aAAY,UAC9D,oCAAC,QAAK,UAAU,CAAC,iBAAiB,OAAO,kBAAkB,WAAW,UACnE,oBAAoB,MAAM;AACzB,YAAM,WAAW,YAAY,aAAa;AAC1C,UAAI,CAAC,UAAU;AACb,eAAO;AAAA,MACT;AACA,UAAI,UAAU,MAAM,SAAS,GAAG,GAAG;AACjC,eAAO;AAAA,MACT,WAAW,UAAU,SAAS,SAAS;AACrC,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF,GAAG,CACL,CACF,CACF;AAAA,IACA,oCAAC,uBAAoB,UACnB,oCAAC,OAAI,gBAAe,YAAW,KAAK,KAClC,oCAAC,gBAAa,YAAY,YAAY,QAAQ,GAAG,CACnD,GACA;AAAA,EACJ,CAEJ;AAEJ;AAEA,IAAO,sBAAQ,KAAK,WAAW;AAE/B,SAAS,OAAc;AACrB,mBAAiB,EAAE;AACnB,UAAQ,KAAK,CAAC;AAChB;",
|
|
4
|
+
"sourcesContent": ["import { Box, Text, useInput } from 'ink'\nimport { sample } from 'lodash-es'\nimport { getExampleCommands } from '../utils/exampleCommands'\nimport * as React from 'react'\nimport { type Message } from '../query'\nimport { processUserInput } from '../utils/messages'\nimport { useArrowKeyHistory } from '../hooks/useArrowKeyHistory'\nimport { useUnifiedCompletion } from '../hooks/useUnifiedCompletion'\nimport { addToHistory } from '../history'\nimport TextInput from './TextInput'\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react'\nimport { countTokens } from '../utils/tokens'\nimport { SentryErrorBoundary } from './SentryErrorBoundary'\nimport { AutoUpdater } from './AutoUpdater'\nimport type { AutoUpdaterResult } from '../utils/autoUpdater'\nimport type { Command } from '../commands'\nimport type { SetToolJSXFn, Tool } from '../Tool'\nimport { TokenWarning, WARNING_THRESHOLD } from './TokenWarning'\nimport { useTerminalSize } from '../hooks/useTerminalSize'\nimport { getTheme } from '../utils/theme'\nimport { getModelManager, reloadModelManager } from '../utils/model'\nimport { saveGlobalConfig } from '../utils/config'\nimport { setTerminalTitle } from '../utils/terminal'\nimport terminalSetup, {\n isShiftEnterKeyBindingInstalled,\n handleHashCommand,\n} from '../commands/terminalSetup'\nimport { usePermissionContext } from '../context/PermissionContext'\n\n// Async function to interpret the '#' command input using AI\nasync function interpretHashCommand(input: string): Promise<string> {\n // Use the AI to interpret the input\n try {\n const { queryQuick } = await import('../services/claude')\n\n // Create a prompt for the model to interpret the hash command\n const systemPrompt = [\n \"You're helping the user structure notes that will be added to their KODING.md file.\",\n \"Format the user's input into a well-structured note that will be useful for later reference.\",\n 'Add appropriate markdown formatting, headings, bullet points, or other structural elements as needed.',\n 'The goal is to transform the raw note into something that will be more useful when reviewed later.',\n 'You should keep the original meaning but make the structure clear.',\n ]\n\n // Send the request to the AI\n const result = await queryQuick({\n systemPrompt,\n userPrompt: `Transform this note for KODING.md: ${input}`,\n })\n\n // Extract the content from the response\n if (typeof result.message.content === 'string') {\n return result.message.content\n } else if (Array.isArray(result.message.content)) {\n return result.message.content\n .filter(block => block.type === 'text')\n .map(block => (block.type === 'text' ? block.text : ''))\n .join('\\n')\n }\n\n return `# ${input}\\n\\n_Added on ${new Date().toLocaleString()}_`\n } catch (e) {\n // If interpretation fails, return the input with minimal formatting\n return `# ${input}\\n\\n_Added on ${new Date().toLocaleString()}_`\n }\n}\n\ntype Props = {\n commands: Command[]\n forkNumber: number\n messageLogName: string\n isDisabled: boolean\n isLoading: boolean\n onQuery: (\n newMessages: Message[],\n abortController?: AbortController,\n ) => Promise<void>\n debug: boolean\n verbose: boolean\n messages: Message[]\n setToolJSX: SetToolJSXFn\n onAutoUpdaterResult: (result: AutoUpdaterResult) => void\n autoUpdaterResult: AutoUpdaterResult | null\n tools: Tool[]\n input: string\n onInputChange: (value: string) => void\n mode: 'bash' | 'prompt' | 'koding'\n onModeChange: (mode: 'bash' | 'prompt' | 'koding') => void\n submitCount: number\n onSubmitCountChange: (updater: (prev: number) => number) => void\n setIsLoading: (isLoading: boolean) => void\n setAbortController: (abortController: AbortController | null) => void\n onShowMessageSelector: () => void\n setForkConvoWithMessagesOnTheNextRender: (\n forkConvoWithMessages: Message[],\n ) => void\n readFileTimestamps: { [filename: string]: number }\n abortController: AbortController | null\n onModelChange?: () => void\n}\n\nfunction getPastedTextPrompt(text: string): string {\n const newlineCount = (text.match(/\\r\\n|\\r|\\n/g) || []).length\n return `[Pasted text +${newlineCount} lines] `\n}\nfunction PromptInput({\n commands,\n forkNumber,\n messageLogName,\n isDisabled,\n isLoading,\n onQuery,\n debug,\n verbose,\n messages,\n setToolJSX,\n onAutoUpdaterResult,\n autoUpdaterResult,\n tools,\n input,\n onInputChange,\n mode,\n onModeChange,\n submitCount,\n onSubmitCountChange,\n setIsLoading,\n abortController,\n setAbortController,\n onShowMessageSelector,\n setForkConvoWithMessagesOnTheNextRender,\n readFileTimestamps,\n onModelChange,\n}: Props): React.ReactNode {\n const [isAutoUpdating, setIsAutoUpdating] = useState(false)\n const [exitMessage, setExitMessage] = useState<{\n show: boolean\n key?: string\n }>({ show: false })\n const [message, setMessage] = useState<{ show: boolean; text?: string }>({\n show: false,\n })\n const [modelSwitchMessage, setModelSwitchMessage] = useState<{\n show: boolean\n text?: string\n }>({\n show: false,\n })\n const [pastedImage, setPastedImage] = useState<string | null>(null)\n const [placeholder, setPlaceholder] = useState('')\n const [cursorOffset, setCursorOffset] = useState<number>(input.length)\n const [pastedText, setPastedText] = useState<string | null>(null)\n\n // Permission context for mode management\n const { cycleMode, currentMode } = usePermissionContext()\n\n // useEffect(() => {\n // getExampleCommands().then(commands => {\n // setPlaceholder(`Try \"${sample(commands)}\"`)\n // })\n // }, [])\n const { columns } = useTerminalSize()\n\n const commandWidth = useMemo(\n () => Math.max(...commands.map(cmd => cmd.userFacingName().length)) + 5,\n [commands],\n )\n\n // Unified completion system - one hook to rule them all (now with terminal behavior)\n const {\n suggestions,\n selectedIndex,\n isActive: completionActive,\n emptyDirMessage,\n } = useUnifiedCompletion({\n input,\n cursorOffset,\n onInputChange,\n setCursorOffset,\n commands,\n onSubmit,\n })\n\n // Get theme early for memoized rendering\n const theme = getTheme()\n\n // Memoized completion suggestions rendering - after useUnifiedCompletion\n const renderedSuggestions = useMemo(() => {\n if (suggestions.length === 0) return null\n\n return suggestions.map((suggestion, index) => {\n const isSelected = index === selectedIndex\n const isAgent = suggestion.type === 'agent'\n \n // Simple color logic without complex lookups\n const displayColor = isSelected \n ? theme.suggestion \n : (isAgent && suggestion.metadata?.color)\n ? suggestion.metadata.color\n : undefined\n \n return (\n <Box key={`${suggestion.type}-${suggestion.value}-${index}`} flexDirection=\"row\">\n <Text\n color={displayColor}\n dimColor={!isSelected && !displayColor}\n >\n {isSelected ? '\u25C6 ' : ' '}\n {suggestion.displayValue}\n </Text>\n </Box>\n )\n })\n }, [suggestions, selectedIndex, theme.suggestion])\n\n const onChange = useCallback(\n (value: string) => {\n if (value.startsWith('!')) {\n onModeChange('bash')\n return\n }\n if (value.startsWith('#')) {\n onModeChange('koding')\n return\n }\n onInputChange(value)\n },\n [onModeChange, onInputChange],\n )\n\n // Handle Shift+M model switching with enhanced debugging\n const handleQuickModelSwitch = useCallback(async () => {\n const modelManager = getModelManager()\n const currentTokens = countTokens(messages)\n\n // Get debug info for better error reporting\n const debugInfo = modelManager.getModelSwitchingDebugInfo()\n \n const switchResult = modelManager.switchToNextModel(currentTokens)\n\n if (switchResult.success && switchResult.modelName) {\n // Successful switch - use enhanced message from model manager\n onSubmitCountChange(prev => prev + 1)\n setModelSwitchMessage({\n show: true,\n text: switchResult.message || `\u2705 Switched to ${switchResult.modelName}`,\n })\n setTimeout(() => setModelSwitchMessage({ show: false }), 3000)\n } else if (switchResult.blocked && switchResult.message) {\n // Context overflow - show detailed message\n setModelSwitchMessage({\n show: true,\n text: switchResult.message,\n })\n setTimeout(() => setModelSwitchMessage({ show: false }), 5000)\n } else {\n // Enhanced error reporting with debug info \n let errorMessage = switchResult.message\n \n if (!errorMessage) {\n if (debugInfo.totalModels === 0) {\n errorMessage = '\u274C No models configured. Use /model to add models.'\n } else if (debugInfo.activeModels === 0) {\n errorMessage = `\u274C No active models (${debugInfo.totalModels} total, all inactive). Use /model to activate models.`\n } else if (debugInfo.activeModels === 1) {\n // Show ALL models including inactive ones for debugging\n const allModelNames = debugInfo.availableModels.map(m => `${m.name}${m.isActive ? '' : ' (inactive)'}`).join(', ')\n errorMessage = `\u26A0\uFE0F Only 1 active model out of ${debugInfo.totalModels} total models: ${allModelNames}. ALL configured models will be activated for switching.`\n } else {\n errorMessage = `\u274C Model switching failed (${debugInfo.activeModels} active, ${debugInfo.totalModels} total models available)`\n }\n }\n \n setModelSwitchMessage({\n show: true,\n text: errorMessage,\n })\n setTimeout(() => setModelSwitchMessage({ show: false }), 6000)\n }\n }, [onSubmitCountChange, messages])\n\n const { resetHistory, onHistoryUp, onHistoryDown } = useArrowKeyHistory(\n (value: string, mode: 'bash' | 'prompt' | 'koding') => {\n onChange(value)\n onModeChange(mode)\n },\n input,\n )\n\n // Only use history navigation when there are no suggestions\n const handleHistoryUp = () => {\n if (!completionActive) {\n onHistoryUp()\n }\n }\n\n const handleHistoryDown = () => {\n if (!completionActive) {\n onHistoryDown()\n }\n }\n\n async function onSubmit(input: string, isSubmittingSlashCommand = false) {\n // Special handling for \"put a verbose summary\" and similar action prompts in koding mode\n if (\n (mode === 'koding' || input.startsWith('#')) &&\n input.match(/^(#\\s*)?(put|create|generate|write|give|provide)/i)\n ) {\n try {\n // Store the original input for history\n const originalInput = input\n\n // Strip the # prefix if present\n const cleanInput = mode === 'koding' ? input : input.substring(1).trim()\n\n // Add to history and clear input field\n addToHistory(mode === 'koding' ? `#${input}` : input)\n onInputChange('')\n\n // Create additional context to inform Claude this is for KODING.md\n const kodingContext =\n 'The user is using Koding mode. Format your response as a comprehensive, well-structured document suitable for adding to AGENTS.md. Use proper markdown formatting with headings, lists, code blocks, etc. The response should be complete and ready to add to AGENTS.md documentation.'\n\n // Switch to prompt mode but tag the submission for later capture\n onModeChange('prompt')\n\n // \uD83D\uDD27 Fix Koding mode: clean up previous state\n if (abortController) {\n abortController.abort()\n }\n setIsLoading(false)\n await new Promise(resolve => setTimeout(resolve, 0))\n\n // Set loading state - AbortController now created in onQuery\n setIsLoading(true)\n\n // Process as a normal user input but with special handling\n const messages = await processUserInput(\n cleanInput,\n 'prompt', // Use prompt mode for processing\n setToolJSX,\n {\n options: {\n commands,\n forkNumber,\n messageLogName,\n tools,\n verbose,\n maxThinkingTokens: 0,\n // Add context flag for koding mode\n isKodingRequest: true,\n kodingContext,\n },\n messageId: undefined,\n abortController: abortController || new AbortController(), // Temporary controller, actual one created in onQuery\n readFileTimestamps,\n setForkConvoWithMessagesOnTheNextRender,\n },\n pastedImage ?? null,\n )\n\n // Send query and capture response\n if (messages.length) {\n await onQuery(messages)\n\n // After query completes, the last message should be Claude's response\n // We'll set up a one-time listener to capture and save Claude's response\n // This will be handled by the REPL component or message handler\n }\n\n return\n } catch (e) {\n // If something fails, log the error\n console.error('Error processing Koding request:', e)\n }\n }\n\n // If in koding mode or input starts with '#', interpret it using AI before appending to AGENTS.md\n else if (mode === 'koding' || input.startsWith('#')) {\n try {\n // Strip the # if we're in koding mode and the user didn't type it (since it's implied)\n const contentToInterpret =\n mode === 'koding' && !input.startsWith('#')\n ? input.trim()\n : input.substring(1).trim()\n\n const interpreted = await interpretHashCommand(contentToInterpret)\n handleHashCommand(interpreted)\n } catch (e) {\n // If interpretation fails, log the error\n }\n onInputChange('')\n addToHistory(mode === 'koding' ? `#${input}` : input)\n onModeChange('prompt')\n return\n }\n if (input === '') {\n return\n }\n if (isDisabled) {\n return\n }\n if (isLoading) {\n return\n }\n \n // Handle Enter key when completions are active\n // If there are suggestions showing, Enter should complete the selection, not send the message\n if (suggestions.length > 0 && completionActive) {\n // The completion is handled by useUnifiedCompletion hook\n // Just return to prevent message sending\n return\n }\n\n // Handle exit commands\n if (['exit', 'quit', ':q', ':q!', ':wq', ':wq!'].includes(input.trim())) {\n exit()\n }\n\n let finalInput = input\n if (pastedText) {\n // Create the prompt pattern that would have been used for this pasted text\n const pastedPrompt = getPastedTextPrompt(pastedText)\n if (finalInput.includes(pastedPrompt)) {\n finalInput = finalInput.replace(pastedPrompt, pastedText)\n } // otherwise, ignore the pastedText if the user has modified the prompt\n }\n onInputChange('')\n onModeChange('prompt')\n // Suggestions are now handled by unified completion\n setPastedImage(null)\n setPastedText(null)\n onSubmitCountChange(_ => _ + 1)\n\n setIsLoading(true)\n \n const newAbortController = new AbortController()\n setAbortController(newAbortController)\n\n const messages = await processUserInput(\n finalInput,\n mode,\n setToolJSX,\n {\n options: {\n commands,\n forkNumber,\n messageLogName,\n tools,\n verbose,\n maxThinkingTokens: 0,\n },\n messageId: undefined,\n abortController: newAbortController,\n readFileTimestamps,\n setForkConvoWithMessagesOnTheNextRender,\n },\n pastedImage ?? null,\n )\n\n if (messages.length) {\n onQuery(messages, newAbortController)\n } else {\n // Local JSX commands\n addToHistory(input)\n resetHistory()\n return\n }\n\n for (const message of messages) {\n if (message.type === 'user') {\n const inputToAdd = mode === 'bash' ? `!${input}` : input\n addToHistory(inputToAdd)\n resetHistory()\n }\n }\n }\n\n function onImagePaste(image: string) {\n onModeChange('prompt')\n setPastedImage(image)\n }\n\n function onTextPaste(rawText: string) {\n // Replace any \\r with \\n first to match useTextInput's conversion behavior\n const text = rawText.replace(/\\r/g, '\\n')\n\n // Get prompt with newline count\n const pastedPrompt = getPastedTextPrompt(text)\n\n // Update the input with a visual indicator that text has been pasted\n const newInput =\n input.slice(0, cursorOffset) + pastedPrompt + input.slice(cursorOffset)\n onInputChange(newInput)\n\n // Update cursor position to be after the inserted indicator\n setCursorOffset(cursorOffset + pastedPrompt.length)\n\n // Still set the pastedText state for actual submission\n setPastedText(text)\n }\n\n useInput((inputChar, key) => {\n // For bash mode, only exit when deleting the last character (which would be the '!' character)\n if (mode === 'bash' && (key.backspace || key.delete)) {\n // Check the current input state, not the inputChar parameter\n // If current input is empty, we're about to delete the '!' character, so exit bash mode\n if (input === '') {\n onModeChange('prompt')\n }\n return\n }\n \n // For koding mode, only exit when deleting the last character (which would be the '#' character)\n if (mode === 'koding' && (key.backspace || key.delete)) {\n // Check the current input state, not the inputChar parameter\n // If current input is empty, we're about to delete the '#' character, so exit koding mode\n if (input === '') {\n onModeChange('prompt')\n }\n return\n }\n \n // For other modes, keep the original behavior\n if (inputChar === '' && (key.escape || key.backspace || key.delete)) {\n onModeChange('prompt')\n }\n // esc is a little overloaded:\n // - when we're loading a response, it's used to cancel the request\n // - otherwise, it's used to show the message selector\n // - when double pressed, it's used to clear the input\n if (key.escape && messages.length > 0 && !input && !isLoading) {\n onShowMessageSelector()\n }\n\n // Shift+Tab for mode cycling (matching original Claude Code implementation)\n if (key.shift && key.tab) {\n cycleMode()\n return true // Explicitly handled\n }\n\n return false // Not handled, allow other hooks\n })\n\n // Handle special key combinations before character input\n const handleSpecialKey = useCallback((inputChar: string, key: any): boolean => {\n // Shift+M for model switching - intercept before character input\n if (key.shift && (inputChar === 'M' || inputChar === 'm')) {\n handleQuickModelSwitch()\n return true // Prevent character from being input\n }\n \n return false // Not handled, allow normal processing\n }, [handleQuickModelSwitch])\n\n const textInputColumns = useTerminalSize().columns - 6\n const tokenUsage = useMemo(() => countTokens(messages), [messages])\n\n // \uD83D\uDD27 Fix: Track model ID changes to detect external config updates\n const modelManager = getModelManager()\n const currentModelId = (modelManager.getModel('main') as any)?.id || null\n\n const modelInfo = useMemo(() => {\n // Force fresh ModelManager instance to detect config changes\n const freshModelManager = getModelManager()\n const currentModel = freshModelManager.getModel('main')\n if (!currentModel) {\n return null\n }\n\n return {\n name: currentModel.modelName, // \uD83D\uDD27 Fix: Use actual model name, not display name\n id: (currentModel as any).id, // \u6DFB\u52A0\u6A21\u578BID\u7528\u4E8E\u8C03\u8BD5\n provider: currentModel.provider, // \u6DFB\u52A0\u63D0\u4F9B\u5546\u4FE1\u606F\n contextLength: currentModel.contextLength,\n currentTokens: tokenUsage,\n }\n }, [tokenUsage, modelSwitchMessage.show, submitCount, currentModelId]) // Track model ID to detect config changes\n\n return (\n <Box flexDirection=\"column\">\n {/* Model info in top-right corner */}\n {modelInfo && (\n <Box justifyContent=\"flex-end\" marginBottom={1}>\n <Text dimColor>\n [{modelInfo.provider}] {modelInfo.name}:{' '}\n {Math.round(modelInfo.currentTokens / 1000)}k /{' '}\n {Math.round(modelInfo.contextLength / 1000)}k\n </Text>\n </Box>\n )}\n\n <Box\n alignItems=\"flex-start\"\n justifyContent=\"flex-start\"\n borderColor={\n mode === 'bash'\n ? theme.bashBorder\n : mode === 'koding'\n ? theme.noting\n : theme.secondaryBorder\n }\n borderDimColor\n borderStyle=\"round\"\n marginTop={1}\n width=\"100%\"\n >\n <Box\n alignItems=\"flex-start\"\n alignSelf=\"flex-start\"\n flexWrap=\"nowrap\"\n justifyContent=\"flex-start\"\n width={3}\n >\n {mode === 'bash' ? (\n <Text color={theme.bashBorder}> ! </Text>\n ) : mode === 'koding' ? (\n <Text color={theme.noting}> # </Text>\n ) : (\n <Text color={isLoading ? theme.secondaryText : undefined}>\n > \n </Text>\n )}\n </Box>\n <Box paddingRight={1}>\n <TextInput\n multiline\n onSubmit={onSubmit}\n onChange={onChange}\n value={input}\n onHistoryUp={handleHistoryUp}\n onHistoryDown={handleHistoryDown}\n onHistoryReset={() => resetHistory()}\n placeholder={submitCount > 0 ? undefined : placeholder}\n onExit={() => process.exit(0)}\n onExitMessage={(show, key) => setExitMessage({ show, key })}\n onMessage={(show, text) => setMessage({ show, text })}\n onImagePaste={onImagePaste}\n columns={textInputColumns}\n isDimmed={isDisabled || isLoading}\n disableCursorMovementForUpDownKeys={completionActive}\n cursorOffset={cursorOffset}\n onChangeCursorOffset={setCursorOffset}\n onPaste={onTextPaste}\n onSpecialKey={handleSpecialKey}\n />\n </Box>\n </Box>\n {!completionActive && suggestions.length === 0 && (\n <Box\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n paddingX={2}\n paddingY={0}\n >\n <Box justifyContent=\"flex-start\" gap={1}>\n {exitMessage.show ? (\n <Text dimColor>Press {exitMessage.key} again to exit</Text>\n ) : message.show ? (\n <Text dimColor>{message.text}</Text>\n ) : modelSwitchMessage.show ? (\n <Text color={theme.success}>{modelSwitchMessage.text}</Text>\n ) : (\n <>\n <Text\n color={mode === 'bash' ? theme.bashBorder : undefined}\n dimColor={mode !== 'bash'}\n >\n ! for bash mode\n </Text>\n <Text\n color={mode === 'koding' ? theme.noting : undefined}\n dimColor={mode !== 'koding'}\n >\n \u00B7 # for AGENTS.md\n </Text>\n <Text dimColor>\n \u00B7 / for commands \u00B7 shift+m to switch model \u00B7 esc to undo\n </Text>\n </>\n )}\n </Box>\n <SentryErrorBoundary children={\n <Box justifyContent=\"flex-end\" gap={1}>\n {!autoUpdaterResult &&\n !isAutoUpdating &&\n !debug &&\n tokenUsage < WARNING_THRESHOLD && (\n <Text dimColor>\n {terminalSetup.isEnabled &&\n isShiftEnterKeyBindingInstalled()\n ? 'shift + \u23CE for newline'\n : '\\\\\u23CE for newline'}\n </Text>\n )}\n <TokenWarning tokenUsage={tokenUsage} />\n {/* <AutoUpdater\n debug={debug}\n onAutoUpdaterResult={onAutoUpdaterResult}\n autoUpdaterResult={autoUpdaterResult}\n isUpdating={isAutoUpdating}\n onChangeIsUpdating={setIsAutoUpdating}\n /> */}\n </Box>\n } />\n </Box>\n )}\n {/* Unified completion suggestions - optimized rendering */}\n {suggestions.length > 0 && (\n <Box\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n paddingX={2}\n paddingY={0}\n >\n <Box flexDirection=\"column\">\n {renderedSuggestions}\n \n {/* \u7B80\u6D01\u64CD\u4F5C\u63D0\u793A\u6846 */}\n <Box marginTop={1} paddingX={3} borderStyle=\"round\" borderColor=\"gray\">\n <Text dimColor={!emptyDirMessage} color={emptyDirMessage ? \"yellow\" : undefined}>\n {emptyDirMessage || (() => {\n const selected = suggestions[selectedIndex]\n if (!selected) {\n return '\u2191\u2193 navigate \u2022 \u2192 accept \u2022 Tab cycle \u2022 Esc close'\n }\n if (selected?.value.endsWith('/')) {\n return '\u2192 enter directory \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close'\n } else if (selected?.type === 'agent') {\n return '\u2192 select agent \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close'\n } else {\n return '\u2192 insert reference \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close'\n }\n })()}\n </Text>\n </Box>\n </Box>\n <SentryErrorBoundary children={\n <Box justifyContent=\"flex-end\" gap={1}>\n <TokenWarning tokenUsage={countTokens(messages)} />\n <AutoUpdater\n debug={debug}\n onAutoUpdaterResult={onAutoUpdaterResult}\n autoUpdaterResult={autoUpdaterResult}\n isUpdating={isAutoUpdating}\n onChangeIsUpdating={setIsAutoUpdating}\n />\n </Box>\n } />\n </Box>\n )}\n </Box>\n )\n}\n\nexport default memo(PromptInput)\n\nfunction exit(): never {\n setTerminalTitle('')\n process.exit(0)\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["modelManager", "mode", "input", "messages", "message"]
|
|
7
7
|
}
|
package/dist/constants/models.js
CHANGED
|
@@ -940,8 +940,7 @@ var models_default = {
|
|
|
940
940
|
],
|
|
941
941
|
"baidu-qianfan": [],
|
|
942
942
|
siliconflow: [],
|
|
943
|
-
ollama: []
|
|
944
|
-
burncloud: []
|
|
943
|
+
ollama: []
|
|
945
944
|
};
|
|
946
945
|
const providers = {
|
|
947
946
|
kimi: {
|
|
@@ -952,10 +951,6 @@ const providers = {
|
|
|
952
951
|
name: "Claude",
|
|
953
952
|
baseURL: "https://api.anthropic.com"
|
|
954
953
|
},
|
|
955
|
-
burncloud: {
|
|
956
|
-
name: "BurnCloud (All models)",
|
|
957
|
-
baseURL: "https://ai.burncloud.com/v1"
|
|
958
|
-
},
|
|
959
954
|
deepseek: {
|
|
960
955
|
name: "DeepSeek",
|
|
961
956
|
baseURL: "https://api.deepseek.com"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/constants/models.ts"],
|
|
4
|
-
"sourcesContent": ["export default {\n openai: [\n {\n model: 'gpt-4',\n max_tokens: 4096,\n max_input_tokens: 8192,\n max_output_tokens: 4096,\n input_cost_per_token: 0.00003,\n output_cost_per_token: 0.00006,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.0000025,\n output_cost_per_token: 0.00001,\n input_cost_per_token_batches: 0.00000125,\n output_cost_per_token_batches: 0.000005,\n cache_read_input_token_cost: 0.00000125,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4.5-preview',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.000075,\n output_cost_per_token: 0.00015,\n input_cost_per_token_batches: 0.0000375,\n output_cost_per_token_batches: 0.000075,\n cache_read_input_token_cost: 0.0000375,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4.5-preview-2025-02-27',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.000075,\n output_cost_per_token: 0.00015,\n input_cost_per_token_batches: 0.0000375,\n output_cost_per_token_batches: 0.000075,\n cache_read_input_token_cost: 0.0000375,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o-mini',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 1.5e-7,\n output_cost_per_token: 6e-7,\n input_cost_per_token_batches: 7.5e-8,\n output_cost_per_token_batches: 3e-7,\n cache_read_input_token_cost: 7.5e-8,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o-mini-2024-07-18',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 1.5e-7,\n output_cost_per_token: 6e-7,\n input_cost_per_token_batches: 7.5e-8,\n output_cost_per_token_batches: 3e-7,\n cache_read_input_token_cost: 7.5e-8,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'o1',\n max_tokens: 100000,\n max_input_tokens: 200000,\n max_output_tokens: 100000,\n input_cost_per_token: 0.000015,\n output_cost_per_token: 0.00006,\n cache_read_input_token_cost: 0.0000075,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n },\n {\n model: 'o3-mini',\n max_tokens: 100000,\n max_input_tokens: 200000,\n max_output_tokens: 100000,\n input_cost_per_token: 0.0000011,\n output_cost_per_token: 0.0000044,\n cache_read_input_token_cost: 5.5e-7,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: false,\n supports_vision: false,\n supports_prompt_caching: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n },\n {\n model: 'o3-mini-2025-01-31',\n max_tokens: 100000,\n max_input_tokens: 200000,\n max_output_tokens: 100000,\n input_cost_per_token: 0.0000011,\n output_cost_per_token: 0.0000044,\n cache_read_input_token_cost: 5.5e-7,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: false,\n supports_vision: false,\n supports_prompt_caching: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n },\n {\n model: 'o1-2024-12-17',\n max_tokens: 100000,\n max_input_tokens: 200000,\n max_output_tokens: 100000,\n input_cost_per_token: 0.000015,\n output_cost_per_token: 0.00006,\n cache_read_input_token_cost: 0.0000075,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n },\n {\n model: 'chatgpt-4o-latest',\n max_tokens: 4096,\n max_input_tokens: 128000,\n max_output_tokens: 4096,\n input_cost_per_token: 0.000005,\n output_cost_per_token: 0.000015,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o-2024-05-13',\n max_tokens: 4096,\n max_input_tokens: 128000,\n max_output_tokens: 4096,\n input_cost_per_token: 0.000005,\n output_cost_per_token: 0.000015,\n input_cost_per_token_batches: 0.0000025,\n output_cost_per_token_batches: 0.0000075,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o-2024-08-06',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.0000025,\n output_cost_per_token: 0.00001,\n input_cost_per_token_batches: 0.00000125,\n output_cost_per_token_batches: 0.000005,\n cache_read_input_token_cost: 0.00000125,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o-2024-11-20',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.0000025,\n output_cost_per_token: 0.00001,\n input_cost_per_token_batches: 0.00000125,\n output_cost_per_token_batches: 0.000005,\n cache_read_input_token_cost: 0.00000125,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4-turbo',\n max_tokens: 4096,\n max_input_tokens: 128000,\n max_output_tokens: 4096,\n input_cost_per_token: 0.00001,\n output_cost_per_token: 0.00003,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n // GPT-5 Models\n {\n model: 'gpt-5',\n max_tokens: 32768,\n max_input_tokens: 200000,\n max_output_tokens: 32768,\n input_cost_per_token: 0.00001,\n output_cost_per_token: 0.00005,\n cache_read_input_token_cost: 0.000005,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n supports_responses_api: true,\n supports_custom_tools: true,\n supports_allowed_tools: true,\n supports_verbosity_control: true,\n },\n {\n model: 'gpt-5-mini',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.000001,\n output_cost_per_token: 0.000005,\n cache_read_input_token_cost: 0.0000005,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n supports_responses_api: true,\n supports_custom_tools: true,\n supports_allowed_tools: true,\n supports_verbosity_control: true,\n },\n {\n model: 'gpt-5-nano',\n max_tokens: 8192,\n max_input_tokens: 64000,\n max_output_tokens: 8192,\n input_cost_per_token: 0.0000005,\n output_cost_per_token: 0.000002,\n cache_read_input_token_cost: 0.00000025,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: false,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n supports_responses_api: true,\n supports_custom_tools: true,\n supports_allowed_tools: true,\n supports_verbosity_control: true,\n },\n {\n model: 'gpt-5-chat-latest',\n max_tokens: 32768,\n max_input_tokens: 200000,\n max_output_tokens: 32768,\n input_cost_per_token: 0.00001,\n output_cost_per_token: 0.00005,\n cache_read_input_token_cost: 0.000005,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n supports_responses_api: false,\n supports_custom_tools: false,\n supports_allowed_tools: false,\n supports_verbosity_control: true,\n requires_chat_completions: true,\n },\n ],\n mistral: [\n {\n model: 'mistral-small',\n max_tokens: 8191,\n max_input_tokens: 32000,\n max_output_tokens: 8191,\n input_cost_per_token: 0.000001,\n output_cost_per_token: 0.000003,\n provider: 'mistral',\n supports_function_calling: true,\n mode: 'chat',\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n },\n {\n model: 'mistral-small-latest',\n max_tokens: 8191,\n max_input_tokens: 32000,\n max_output_tokens: 8191,\n input_cost_per_token: 0.000001,\n output_cost_per_token: 0.000003,\n provider: 'mistral',\n supports_function_calling: true,\n mode: 'chat',\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n },\n {\n model: 'mistral-large-latest',\n max_tokens: 128000,\n max_input_tokens: 128000,\n max_output_tokens: 128000,\n input_cost_per_token: 0.000002,\n output_cost_per_token: 0.000006,\n provider: 'mistral',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n },\n {\n model: 'open-mixtral-8x7b',\n max_tokens: 8191,\n max_input_tokens: 32000,\n max_output_tokens: 8191,\n input_cost_per_token: 7e-7,\n output_cost_per_token: 7e-7,\n provider: 'mistral',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n },\n {\n model: 'open-mixtral-8x22b',\n max_tokens: 8191,\n max_input_tokens: 65336,\n max_output_tokens: 8191,\n input_cost_per_token: 0.000002,\n output_cost_per_token: 0.000006,\n provider: 'mistral',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n },\n ],\n deepseek: [\n {\n model: 'deepseek-reasoner',\n max_tokens: 8192,\n max_input_tokens: 65536,\n max_output_tokens: 8192,\n input_cost_per_token: 5.5e-7,\n input_cost_per_token_cache_hit: 1.4e-7,\n output_cost_per_token: 0.00000219,\n provider: 'deepseek',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n supports_prompt_caching: true,\n },\n {\n model: 'deepseek-chat',\n max_tokens: 8192,\n max_input_tokens: 65536,\n max_output_tokens: 8192,\n input_cost_per_token: 2.7e-7,\n input_cost_per_token_cache_hit: 7e-8,\n cache_read_input_token_cost: 7e-8,\n cache_creation_input_token_cost: 0,\n output_cost_per_token: 0.0000011,\n provider: 'deepseek',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n supports_prompt_caching: true,\n },\n {\n model: 'deepseek-coder',\n max_tokens: 4096,\n max_input_tokens: 128000,\n max_output_tokens: 4096,\n input_cost_per_token: 1.4e-7,\n input_cost_per_token_cache_hit: 1.4e-8,\n output_cost_per_token: 2.8e-7,\n provider: 'deepseek',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n supports_prompt_caching: true,\n },\n ],\n xai: [\n {\n model: 'grok-beta',\n max_tokens: 131072,\n max_input_tokens: 131072,\n max_output_tokens: 131072,\n input_cost_per_token: 0.000005,\n output_cost_per_token: 0.000015,\n provider: 'xai',\n mode: 'chat',\n supports_function_calling: true,\n supports_vision: true,\n supports_tool_choice: true,\n },\n ],\n groq: [\n {\n model: 'llama-3.3-70b-versatile',\n max_tokens: 8192,\n max_input_tokens: 128000,\n max_output_tokens: 8192,\n input_cost_per_token: 5.9e-7,\n output_cost_per_token: 7.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama2-70b-4096',\n max_tokens: 4096,\n max_input_tokens: 4096,\n max_output_tokens: 4096,\n input_cost_per_token: 7e-7,\n output_cost_per_token: 8e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama3-8b-8192',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 5e-8,\n output_cost_per_token: 8e-8,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.2-1b-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 4e-8,\n output_cost_per_token: 4e-8,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.2-3b-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 6e-8,\n output_cost_per_token: 6e-8,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.2-11b-text-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 1.8e-7,\n output_cost_per_token: 1.8e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.2-90b-text-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 9e-7,\n output_cost_per_token: 9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama3-70b-8192',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 5.9e-7,\n output_cost_per_token: 7.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.1-8b-instant',\n max_tokens: 8000,\n max_input_tokens: 8000,\n max_output_tokens: 8000,\n input_cost_per_token: 5e-8,\n output_cost_per_token: 8e-8,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.1-70b-versatile',\n max_tokens: 8000,\n max_input_tokens: 8000,\n max_output_tokens: 8000,\n input_cost_per_token: 5.9e-7,\n output_cost_per_token: 7.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.1-405b-reasoning',\n max_tokens: 8000,\n max_input_tokens: 8000,\n max_output_tokens: 8000,\n input_cost_per_token: 5.9e-7,\n output_cost_per_token: 7.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'mixtral-8x7b-32768',\n max_tokens: 32768,\n max_input_tokens: 32768,\n max_output_tokens: 32768,\n input_cost_per_token: 2.4e-7,\n output_cost_per_token: 2.4e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'gemma-7b-it',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 7e-8,\n output_cost_per_token: 7e-8,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'gemma2-9b-it',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 2e-7,\n output_cost_per_token: 2e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama3-groq-70b-8192-tool-use-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 8.9e-7,\n output_cost_per_token: 8.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama3-groq-8b-8192-tool-use-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 1.9e-7,\n output_cost_per_token: 1.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n ],\n anthropic: [\n {\n model: 'claude-3-5-haiku-latest',\n max_tokens: 8192,\n max_input_tokens: 200000,\n max_output_tokens: 8192,\n input_cost_per_token: 0.0000008,\n output_cost_per_token: 0.000004,\n cache_creation_input_token_cost: 0.00000125,\n cache_read_input_token_cost: 1e-7,\n provider: 'anthropic',\n mode: 'chat',\n supports_function_calling: true,\n supports_vision: true,\n tool_use_system_prompt_tokens: 264,\n supports_assistant_prefill: true,\n supports_prompt_caching: true,\n supports_response_schema: true,\n deprecation_date: '2025-10-01',\n supports_tool_choice: true,\n },\n {\n model: 'claude-3-opus-latest',\n max_tokens: 4096,\n max_input_tokens: 200000,\n max_output_tokens: 4096,\n input_cost_per_token: 0.000015,\n output_cost_per_token: 0.000075,\n cache_creation_input_token_cost: 0.00001875,\n cache_read_input_token_cost: 0.0000015,\n provider: 'anthropic',\n mode: 'chat',\n supports_function_calling: true,\n supports_vision: true,\n tool_use_system_prompt_tokens: 395,\n supports_assistant_prefill: true,\n supports_prompt_caching: true,\n supports_response_schema: true,\n deprecation_date: '2025-03-01',\n supports_tool_choice: true,\n },\n {\n model: 'claude-3-7-sonnet-latest',\n max_tokens: 8192,\n max_input_tokens: 200000,\n max_output_tokens: 8192,\n input_cost_per_token: 0.000003,\n output_cost_per_token: 0.000015,\n cache_creation_input_token_cost: 0.00000375,\n cache_read_input_token_cost: 3e-7,\n provider: 'anthropic',\n mode: 'chat',\n supports_function_calling: true,\n supports_vision: true,\n tool_use_system_prompt_tokens: 159,\n supports_assistant_prefill: true,\n supports_prompt_caching: true,\n supports_response_schema: true,\n deprecation_date: '2025-06-01',\n supports_tool_choice: true,\n },\n ],\n gemini: [\n {\n model: 'gemini-2.0-flash',\n max_tokens: 8192,\n max_input_tokens: 1048576,\n max_output_tokens: 8192,\n max_images_per_prompt: 3000,\n max_videos_per_prompt: 10,\n max_video_length: 1,\n max_audio_length_hours: 8.4,\n max_audio_per_prompt: 1,\n max_pdf_size_mb: 30,\n input_cost_per_audio_token: 7e-7,\n input_cost_per_token: 0.0000001,\n output_cost_per_token: 0.0000004,\n provider: 'gemini',\n mode: 'chat',\n rpm: 10000,\n tpm: 10000000,\n supports_system_messages: true,\n supports_function_calling: true,\n supports_vision: true,\n supports_response_schema: true,\n supports_audio_output: true,\n supports_tool_choice: true,\n source: 'https://ai.google.dev/pricing#2_0flash',\n },\n {\n model: 'gemini-2.0-flash-lite',\n max_tokens: 8192,\n max_input_tokens: 1048576,\n max_output_tokens: 8192,\n max_images_per_prompt: 3000,\n max_videos_per_prompt: 10,\n max_video_length: 1,\n max_audio_length_hours: 8.4,\n max_audio_per_prompt: 1,\n max_pdf_size_mb: 30,\n input_cost_per_audio_token: 7.5e-8,\n input_cost_per_token: 0.000000075,\n output_cost_per_token: 0.0000003,\n provider: 'gemini',\n mode: 'chat',\n rpm: 60000,\n tpm: 10000000,\n supports_system_messages: true,\n supports_function_calling: true,\n supports_vision: true,\n supports_response_schema: true,\n supports_audio_output: false,\n supports_tool_choice: true,\n source:\n 'https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash-lite',\n },\n {\n model: 'gemini-2.0-flash-thinking-exp',\n max_tokens: 8192,\n max_input_tokens: 1048576,\n max_output_tokens: 8192,\n max_images_per_prompt: 3000,\n max_videos_per_prompt: 10,\n max_video_length: 1,\n max_audio_length_hours: 8.4,\n max_audio_per_prompt: 1,\n max_pdf_size_mb: 30,\n input_cost_per_image: 0,\n input_cost_per_video_per_second: 0,\n input_cost_per_audio_per_second: 0,\n input_cost_per_token: 0,\n input_cost_per_character: 0,\n input_cost_per_token_above_128k_tokens: 0,\n input_cost_per_character_above_128k_tokens: 0,\n input_cost_per_image_above_128k_tokens: 0,\n input_cost_per_video_per_second_above_128k_tokens: 0,\n input_cost_per_audio_per_second_above_128k_tokens: 0,\n output_cost_per_token: 0,\n output_cost_per_character: 0,\n output_cost_per_token_above_128k_tokens: 0,\n output_cost_per_character_above_128k_tokens: 0,\n provider: 'gemini',\n mode: 'chat',\n supports_system_messages: true,\n supports_function_calling: true,\n supports_vision: true,\n supports_response_schema: true,\n supports_audio_output: true,\n tpm: 4000000,\n rpm: 10,\n source:\n 'https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash',\n supports_tool_choice: true,\n },\n ],\n kimi: [\n {\n model: 'kimi-k2-0711-preview',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.000003,\n output_cost_per_token: 0.000015,\n provider: 'kimi',\n mode: 'chat',\n supports_function_calling: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n ],\n bigdream: [\n {\n model: 'claude-sonnet-4-20250514',\n max_tokens: 8192,\n max_input_tokens: 200000,\n max_output_tokens: 8192,\n input_cost_per_token: 0.000003,\n output_cost_per_token: 0.000015,\n provider: 'bigdream',\n mode: 'chat',\n supports_function_calling: true,\n supports_vision: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n supports_prompt_caching: true,\n },\n ],\n qwen: [],\n glm: [],\n minimax: [\n {\n model: 'abab6.5s-chat',\n max_tokens: 8192,\n max_input_tokens: 245760,\n max_output_tokens: 8192,\n input_cost_per_token: 0.000001,\n output_cost_per_token: 0.000003,\n provider: 'minimax',\n mode: 'chat',\n supports_function_calling: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'abab6.5g-chat',\n max_tokens: 8192,\n max_input_tokens: 245760,\n max_output_tokens: 8192,\n input_cost_per_token: 0.000002,\n output_cost_per_token: 0.000006,\n provider: 'minimax',\n mode: 'chat',\n supports_function_calling: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'abab5.5s-chat',\n max_tokens: 8192,\n max_input_tokens: 16384,\n max_output_tokens: 8192,\n input_cost_per_token: 0.0000005,\n output_cost_per_token: 0.000002,\n provider: 'minimax',\n mode: 'chat',\n supports_function_calling: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n ],\n 'baidu-qianfan': [],\n siliconflow: [],\n ollama: [],\n burncloud: [],\n}\n\nexport const providers = {\n kimi: {\n name: 'Kimi (Moonshot)',\n baseURL: 'https://api.moonshot.cn/v1',\n },\n anthropic: {\n name: 'Claude',\n baseURL: 'https://api.anthropic.com',\n },\n burncloud: {\n name: 'BurnCloud (All models)',\n baseURL: 'https://ai.burncloud.com/v1',\n },\n deepseek: {\n name: 'DeepSeek',\n baseURL: 'https://api.deepseek.com',\n },\n qwen: {\n name: 'Qwen (Alibaba)',\n baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n },\n openai: {\n name: 'OpenAI',\n baseURL: 'https://api.openai.com/v1',\n },\n ollama: {\n name: 'Ollama',\n baseURL: 'http://localhost:11434/v1',\n },\n gemini: {\n name: 'Gemini',\n baseURL: 'https://generativelanguage.googleapis.com/v1beta/openai',\n },\n bigdream: {\n name: 'BigDream',\n baseURL: 'https://api-key.info',\n },\n opendev: {\n name: 'OpenDev',\n baseURL: 'https://api.openai-next.com',\n },\n 'custom-openai': {\n name: 'Custom OpenAI-Compatible API',\n baseURL: '', // Will be configured by user\n },\n openrouter: {\n name: 'OpenRouter',\n baseURL: 'https://openrouter.ai/api/v1',\n },\n minimax: {\n name: 'MiniMax',\n baseURL: 'https://api.minimaxi.com/v1',\n },\n siliconflow: {\n name: 'SiliconFlow',\n baseURL: 'https://api.siliconflow.cn/v1',\n },\n glm: {\n name: 'GLM (Zhipu AI)',\n baseURL: 'https://open.bigmodel.cn/api/paas/v4',\n },\n 'baidu-qianfan': {\n name: 'Baidu Qianfan',\n baseURL: 'https://qianfan.baidubce.com/v2',\n },\n mistral: {\n name: 'Mistral',\n baseURL: 'https://api.mistral.ai/v1',\n },\n xai: {\n name: 'xAI',\n baseURL: 'https://api.x.ai/v1',\n },\n groq: {\n name: 'Groq',\n baseURL: 'https://api.groq.com/openai/v1',\n },\n azure: {\n name: 'Azure OpenAI',\n baseURL: '', // Will be dynamically constructed based on resource name\n },\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["export default {\n openai: [\n {\n model: 'gpt-4',\n max_tokens: 4096,\n max_input_tokens: 8192,\n max_output_tokens: 4096,\n input_cost_per_token: 0.00003,\n output_cost_per_token: 0.00006,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.0000025,\n output_cost_per_token: 0.00001,\n input_cost_per_token_batches: 0.00000125,\n output_cost_per_token_batches: 0.000005,\n cache_read_input_token_cost: 0.00000125,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4.5-preview',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.000075,\n output_cost_per_token: 0.00015,\n input_cost_per_token_batches: 0.0000375,\n output_cost_per_token_batches: 0.000075,\n cache_read_input_token_cost: 0.0000375,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4.5-preview-2025-02-27',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.000075,\n output_cost_per_token: 0.00015,\n input_cost_per_token_batches: 0.0000375,\n output_cost_per_token_batches: 0.000075,\n cache_read_input_token_cost: 0.0000375,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o-mini',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 1.5e-7,\n output_cost_per_token: 6e-7,\n input_cost_per_token_batches: 7.5e-8,\n output_cost_per_token_batches: 3e-7,\n cache_read_input_token_cost: 7.5e-8,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o-mini-2024-07-18',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 1.5e-7,\n output_cost_per_token: 6e-7,\n input_cost_per_token_batches: 7.5e-8,\n output_cost_per_token_batches: 3e-7,\n cache_read_input_token_cost: 7.5e-8,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'o1',\n max_tokens: 100000,\n max_input_tokens: 200000,\n max_output_tokens: 100000,\n input_cost_per_token: 0.000015,\n output_cost_per_token: 0.00006,\n cache_read_input_token_cost: 0.0000075,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n },\n {\n model: 'o3-mini',\n max_tokens: 100000,\n max_input_tokens: 200000,\n max_output_tokens: 100000,\n input_cost_per_token: 0.0000011,\n output_cost_per_token: 0.0000044,\n cache_read_input_token_cost: 5.5e-7,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: false,\n supports_vision: false,\n supports_prompt_caching: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n },\n {\n model: 'o3-mini-2025-01-31',\n max_tokens: 100000,\n max_input_tokens: 200000,\n max_output_tokens: 100000,\n input_cost_per_token: 0.0000011,\n output_cost_per_token: 0.0000044,\n cache_read_input_token_cost: 5.5e-7,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: false,\n supports_vision: false,\n supports_prompt_caching: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n },\n {\n model: 'o1-2024-12-17',\n max_tokens: 100000,\n max_input_tokens: 200000,\n max_output_tokens: 100000,\n input_cost_per_token: 0.000015,\n output_cost_per_token: 0.00006,\n cache_read_input_token_cost: 0.0000075,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n },\n {\n model: 'chatgpt-4o-latest',\n max_tokens: 4096,\n max_input_tokens: 128000,\n max_output_tokens: 4096,\n input_cost_per_token: 0.000005,\n output_cost_per_token: 0.000015,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o-2024-05-13',\n max_tokens: 4096,\n max_input_tokens: 128000,\n max_output_tokens: 4096,\n input_cost_per_token: 0.000005,\n output_cost_per_token: 0.000015,\n input_cost_per_token_batches: 0.0000025,\n output_cost_per_token_batches: 0.0000075,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o-2024-08-06',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.0000025,\n output_cost_per_token: 0.00001,\n input_cost_per_token_batches: 0.00000125,\n output_cost_per_token_batches: 0.000005,\n cache_read_input_token_cost: 0.00000125,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4o-2024-11-20',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.0000025,\n output_cost_per_token: 0.00001,\n input_cost_per_token_batches: 0.00000125,\n output_cost_per_token_batches: 0.000005,\n cache_read_input_token_cost: 0.00000125,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_response_schema: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'gpt-4-turbo',\n max_tokens: 4096,\n max_input_tokens: 128000,\n max_output_tokens: 4096,\n input_cost_per_token: 0.00001,\n output_cost_per_token: 0.00003,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n // GPT-5 Models\n {\n model: 'gpt-5',\n max_tokens: 32768,\n max_input_tokens: 200000,\n max_output_tokens: 32768,\n input_cost_per_token: 0.00001,\n output_cost_per_token: 0.00005,\n cache_read_input_token_cost: 0.000005,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n supports_responses_api: true,\n supports_custom_tools: true,\n supports_allowed_tools: true,\n supports_verbosity_control: true,\n },\n {\n model: 'gpt-5-mini',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.000001,\n output_cost_per_token: 0.000005,\n cache_read_input_token_cost: 0.0000005,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n supports_responses_api: true,\n supports_custom_tools: true,\n supports_allowed_tools: true,\n supports_verbosity_control: true,\n },\n {\n model: 'gpt-5-nano',\n max_tokens: 8192,\n max_input_tokens: 64000,\n max_output_tokens: 8192,\n input_cost_per_token: 0.0000005,\n output_cost_per_token: 0.000002,\n cache_read_input_token_cost: 0.00000025,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: false,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n supports_responses_api: true,\n supports_custom_tools: true,\n supports_allowed_tools: true,\n supports_verbosity_control: true,\n },\n {\n model: 'gpt-5-chat-latest',\n max_tokens: 32768,\n max_input_tokens: 200000,\n max_output_tokens: 32768,\n input_cost_per_token: 0.00001,\n output_cost_per_token: 0.00005,\n cache_read_input_token_cost: 0.000005,\n provider: 'openai',\n mode: 'chat',\n supports_function_calling: true,\n supports_parallel_function_calling: true,\n supports_vision: true,\n supports_prompt_caching: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n supports_reasoning_effort: true,\n supports_responses_api: false,\n supports_custom_tools: false,\n supports_allowed_tools: false,\n supports_verbosity_control: true,\n requires_chat_completions: true,\n },\n ],\n mistral: [\n {\n model: 'mistral-small',\n max_tokens: 8191,\n max_input_tokens: 32000,\n max_output_tokens: 8191,\n input_cost_per_token: 0.000001,\n output_cost_per_token: 0.000003,\n provider: 'mistral',\n supports_function_calling: true,\n mode: 'chat',\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n },\n {\n model: 'mistral-small-latest',\n max_tokens: 8191,\n max_input_tokens: 32000,\n max_output_tokens: 8191,\n input_cost_per_token: 0.000001,\n output_cost_per_token: 0.000003,\n provider: 'mistral',\n supports_function_calling: true,\n mode: 'chat',\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n },\n {\n model: 'mistral-large-latest',\n max_tokens: 128000,\n max_input_tokens: 128000,\n max_output_tokens: 128000,\n input_cost_per_token: 0.000002,\n output_cost_per_token: 0.000006,\n provider: 'mistral',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n },\n {\n model: 'open-mixtral-8x7b',\n max_tokens: 8191,\n max_input_tokens: 32000,\n max_output_tokens: 8191,\n input_cost_per_token: 7e-7,\n output_cost_per_token: 7e-7,\n provider: 'mistral',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n },\n {\n model: 'open-mixtral-8x22b',\n max_tokens: 8191,\n max_input_tokens: 65336,\n max_output_tokens: 8191,\n input_cost_per_token: 0.000002,\n output_cost_per_token: 0.000006,\n provider: 'mistral',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n },\n ],\n deepseek: [\n {\n model: 'deepseek-reasoner',\n max_tokens: 8192,\n max_input_tokens: 65536,\n max_output_tokens: 8192,\n input_cost_per_token: 5.5e-7,\n input_cost_per_token_cache_hit: 1.4e-7,\n output_cost_per_token: 0.00000219,\n provider: 'deepseek',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n supports_prompt_caching: true,\n },\n {\n model: 'deepseek-chat',\n max_tokens: 8192,\n max_input_tokens: 65536,\n max_output_tokens: 8192,\n input_cost_per_token: 2.7e-7,\n input_cost_per_token_cache_hit: 7e-8,\n cache_read_input_token_cost: 7e-8,\n cache_creation_input_token_cost: 0,\n output_cost_per_token: 0.0000011,\n provider: 'deepseek',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n supports_prompt_caching: true,\n },\n {\n model: 'deepseek-coder',\n max_tokens: 4096,\n max_input_tokens: 128000,\n max_output_tokens: 4096,\n input_cost_per_token: 1.4e-7,\n input_cost_per_token_cache_hit: 1.4e-8,\n output_cost_per_token: 2.8e-7,\n provider: 'deepseek',\n mode: 'chat',\n supports_function_calling: true,\n supports_assistant_prefill: true,\n supports_tool_choice: true,\n supports_prompt_caching: true,\n },\n ],\n xai: [\n {\n model: 'grok-beta',\n max_tokens: 131072,\n max_input_tokens: 131072,\n max_output_tokens: 131072,\n input_cost_per_token: 0.000005,\n output_cost_per_token: 0.000015,\n provider: 'xai',\n mode: 'chat',\n supports_function_calling: true,\n supports_vision: true,\n supports_tool_choice: true,\n },\n ],\n groq: [\n {\n model: 'llama-3.3-70b-versatile',\n max_tokens: 8192,\n max_input_tokens: 128000,\n max_output_tokens: 8192,\n input_cost_per_token: 5.9e-7,\n output_cost_per_token: 7.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama2-70b-4096',\n max_tokens: 4096,\n max_input_tokens: 4096,\n max_output_tokens: 4096,\n input_cost_per_token: 7e-7,\n output_cost_per_token: 8e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama3-8b-8192',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 5e-8,\n output_cost_per_token: 8e-8,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.2-1b-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 4e-8,\n output_cost_per_token: 4e-8,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.2-3b-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 6e-8,\n output_cost_per_token: 6e-8,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.2-11b-text-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 1.8e-7,\n output_cost_per_token: 1.8e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.2-90b-text-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 9e-7,\n output_cost_per_token: 9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama3-70b-8192',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 5.9e-7,\n output_cost_per_token: 7.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.1-8b-instant',\n max_tokens: 8000,\n max_input_tokens: 8000,\n max_output_tokens: 8000,\n input_cost_per_token: 5e-8,\n output_cost_per_token: 8e-8,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.1-70b-versatile',\n max_tokens: 8000,\n max_input_tokens: 8000,\n max_output_tokens: 8000,\n input_cost_per_token: 5.9e-7,\n output_cost_per_token: 7.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama-3.1-405b-reasoning',\n max_tokens: 8000,\n max_input_tokens: 8000,\n max_output_tokens: 8000,\n input_cost_per_token: 5.9e-7,\n output_cost_per_token: 7.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'mixtral-8x7b-32768',\n max_tokens: 32768,\n max_input_tokens: 32768,\n max_output_tokens: 32768,\n input_cost_per_token: 2.4e-7,\n output_cost_per_token: 2.4e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'gemma-7b-it',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 7e-8,\n output_cost_per_token: 7e-8,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'gemma2-9b-it',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 2e-7,\n output_cost_per_token: 2e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama3-groq-70b-8192-tool-use-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 8.9e-7,\n output_cost_per_token: 8.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n {\n model: 'llama3-groq-8b-8192-tool-use-preview',\n max_tokens: 8192,\n max_input_tokens: 8192,\n max_output_tokens: 8192,\n input_cost_per_token: 1.9e-7,\n output_cost_per_token: 1.9e-7,\n provider: 'groq',\n mode: 'chat',\n supports_function_calling: true,\n supports_response_schema: true,\n supports_tool_choice: true,\n },\n ],\n anthropic: [\n {\n model: 'claude-3-5-haiku-latest',\n max_tokens: 8192,\n max_input_tokens: 200000,\n max_output_tokens: 8192,\n input_cost_per_token: 0.0000008,\n output_cost_per_token: 0.000004,\n cache_creation_input_token_cost: 0.00000125,\n cache_read_input_token_cost: 1e-7,\n provider: 'anthropic',\n mode: 'chat',\n supports_function_calling: true,\n supports_vision: true,\n tool_use_system_prompt_tokens: 264,\n supports_assistant_prefill: true,\n supports_prompt_caching: true,\n supports_response_schema: true,\n deprecation_date: '2025-10-01',\n supports_tool_choice: true,\n },\n {\n model: 'claude-3-opus-latest',\n max_tokens: 4096,\n max_input_tokens: 200000,\n max_output_tokens: 4096,\n input_cost_per_token: 0.000015,\n output_cost_per_token: 0.000075,\n cache_creation_input_token_cost: 0.00001875,\n cache_read_input_token_cost: 0.0000015,\n provider: 'anthropic',\n mode: 'chat',\n supports_function_calling: true,\n supports_vision: true,\n tool_use_system_prompt_tokens: 395,\n supports_assistant_prefill: true,\n supports_prompt_caching: true,\n supports_response_schema: true,\n deprecation_date: '2025-03-01',\n supports_tool_choice: true,\n },\n {\n model: 'claude-3-7-sonnet-latest',\n max_tokens: 8192,\n max_input_tokens: 200000,\n max_output_tokens: 8192,\n input_cost_per_token: 0.000003,\n output_cost_per_token: 0.000015,\n cache_creation_input_token_cost: 0.00000375,\n cache_read_input_token_cost: 3e-7,\n provider: 'anthropic',\n mode: 'chat',\n supports_function_calling: true,\n supports_vision: true,\n tool_use_system_prompt_tokens: 159,\n supports_assistant_prefill: true,\n supports_prompt_caching: true,\n supports_response_schema: true,\n deprecation_date: '2025-06-01',\n supports_tool_choice: true,\n },\n ],\n gemini: [\n {\n model: 'gemini-2.0-flash',\n max_tokens: 8192,\n max_input_tokens: 1048576,\n max_output_tokens: 8192,\n max_images_per_prompt: 3000,\n max_videos_per_prompt: 10,\n max_video_length: 1,\n max_audio_length_hours: 8.4,\n max_audio_per_prompt: 1,\n max_pdf_size_mb: 30,\n input_cost_per_audio_token: 7e-7,\n input_cost_per_token: 0.0000001,\n output_cost_per_token: 0.0000004,\n provider: 'gemini',\n mode: 'chat',\n rpm: 10000,\n tpm: 10000000,\n supports_system_messages: true,\n supports_function_calling: true,\n supports_vision: true,\n supports_response_schema: true,\n supports_audio_output: true,\n supports_tool_choice: true,\n source: 'https://ai.google.dev/pricing#2_0flash',\n },\n {\n model: 'gemini-2.0-flash-lite',\n max_tokens: 8192,\n max_input_tokens: 1048576,\n max_output_tokens: 8192,\n max_images_per_prompt: 3000,\n max_videos_per_prompt: 10,\n max_video_length: 1,\n max_audio_length_hours: 8.4,\n max_audio_per_prompt: 1,\n max_pdf_size_mb: 30,\n input_cost_per_audio_token: 7.5e-8,\n input_cost_per_token: 0.000000075,\n output_cost_per_token: 0.0000003,\n provider: 'gemini',\n mode: 'chat',\n rpm: 60000,\n tpm: 10000000,\n supports_system_messages: true,\n supports_function_calling: true,\n supports_vision: true,\n supports_response_schema: true,\n supports_audio_output: false,\n supports_tool_choice: true,\n source:\n 'https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash-lite',\n },\n {\n model: 'gemini-2.0-flash-thinking-exp',\n max_tokens: 8192,\n max_input_tokens: 1048576,\n max_output_tokens: 8192,\n max_images_per_prompt: 3000,\n max_videos_per_prompt: 10,\n max_video_length: 1,\n max_audio_length_hours: 8.4,\n max_audio_per_prompt: 1,\n max_pdf_size_mb: 30,\n input_cost_per_image: 0,\n input_cost_per_video_per_second: 0,\n input_cost_per_audio_per_second: 0,\n input_cost_per_token: 0,\n input_cost_per_character: 0,\n input_cost_per_token_above_128k_tokens: 0,\n input_cost_per_character_above_128k_tokens: 0,\n input_cost_per_image_above_128k_tokens: 0,\n input_cost_per_video_per_second_above_128k_tokens: 0,\n input_cost_per_audio_per_second_above_128k_tokens: 0,\n output_cost_per_token: 0,\n output_cost_per_character: 0,\n output_cost_per_token_above_128k_tokens: 0,\n output_cost_per_character_above_128k_tokens: 0,\n provider: 'gemini',\n mode: 'chat',\n supports_system_messages: true,\n supports_function_calling: true,\n supports_vision: true,\n supports_response_schema: true,\n supports_audio_output: true,\n tpm: 4000000,\n rpm: 10,\n source:\n 'https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash',\n supports_tool_choice: true,\n },\n ],\n kimi: [\n {\n model: 'kimi-k2-0711-preview',\n max_tokens: 16384,\n max_input_tokens: 128000,\n max_output_tokens: 16384,\n input_cost_per_token: 0.000003,\n output_cost_per_token: 0.000015,\n provider: 'kimi',\n mode: 'chat',\n supports_function_calling: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n ],\n bigdream: [\n {\n model: 'claude-sonnet-4-20250514',\n max_tokens: 8192,\n max_input_tokens: 200000,\n max_output_tokens: 8192,\n input_cost_per_token: 0.000003,\n output_cost_per_token: 0.000015,\n provider: 'bigdream',\n mode: 'chat',\n supports_function_calling: true,\n supports_vision: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n supports_prompt_caching: true,\n },\n ],\n qwen: [],\n glm: [],\n minimax: [\n {\n model: 'abab6.5s-chat',\n max_tokens: 8192,\n max_input_tokens: 245760,\n max_output_tokens: 8192,\n input_cost_per_token: 0.000001,\n output_cost_per_token: 0.000003,\n provider: 'minimax',\n mode: 'chat',\n supports_function_calling: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'abab6.5g-chat',\n max_tokens: 8192,\n max_input_tokens: 245760,\n max_output_tokens: 8192,\n input_cost_per_token: 0.000002,\n output_cost_per_token: 0.000006,\n provider: 'minimax',\n mode: 'chat',\n supports_function_calling: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n {\n model: 'abab5.5s-chat',\n max_tokens: 8192,\n max_input_tokens: 16384,\n max_output_tokens: 8192,\n input_cost_per_token: 0.0000005,\n output_cost_per_token: 0.000002,\n provider: 'minimax',\n mode: 'chat',\n supports_function_calling: true,\n supports_system_messages: true,\n supports_tool_choice: true,\n },\n ],\n 'baidu-qianfan': [],\n siliconflow: [],\n ollama: [],\n}\n\nexport const providers = {\n kimi: {\n name: 'Kimi (Moonshot)',\n baseURL: 'https://api.moonshot.cn/v1',\n },\n anthropic: {\n name: 'Claude',\n baseURL: 'https://api.anthropic.com',\n },\n deepseek: {\n name: 'DeepSeek',\n baseURL: 'https://api.deepseek.com',\n },\n qwen: {\n name: 'Qwen (Alibaba)',\n baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n },\n openai: {\n name: 'OpenAI',\n baseURL: 'https://api.openai.com/v1',\n },\n ollama: {\n name: 'Ollama',\n baseURL: 'http://localhost:11434/v1',\n },\n gemini: {\n name: 'Gemini',\n baseURL: 'https://generativelanguage.googleapis.com/v1beta/openai',\n },\n bigdream: {\n name: 'BigDream',\n baseURL: 'https://api-key.info',\n },\n opendev: {\n name: 'OpenDev',\n baseURL: 'https://api.openai-next.com',\n },\n 'custom-openai': {\n name: 'Custom OpenAI-Compatible API',\n baseURL: '', // Will be configured by user\n },\n openrouter: {\n name: 'OpenRouter',\n baseURL: 'https://openrouter.ai/api/v1',\n },\n minimax: {\n name: 'MiniMax',\n baseURL: 'https://api.minimaxi.com/v1',\n },\n siliconflow: {\n name: 'SiliconFlow',\n baseURL: 'https://api.siliconflow.cn/v1',\n },\n glm: {\n name: 'GLM (Zhipu AI)',\n baseURL: 'https://open.bigmodel.cn/api/paas/v4',\n },\n 'baidu-qianfan': {\n name: 'Baidu Qianfan',\n baseURL: 'https://qianfan.baidubce.com/v2',\n },\n mistral: {\n name: 'Mistral',\n baseURL: 'https://api.mistral.ai/v1',\n },\n xai: {\n name: 'xAI',\n baseURL: 'https://api.x.ai/v1',\n },\n groq: {\n name: 'Groq',\n baseURL: 'https://api.groq.com/openai/v1',\n },\n azure: {\n name: 'Azure OpenAI',\n baseURL: '', // Will be dynamically constructed based on resource name\n },\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/entrypoints/cli.js
CHANGED
|
@@ -74,7 +74,11 @@ import {
|
|
|
74
74
|
import { handleMcprcServerApprovals } from "../services/mcpServerApproval.js";
|
|
75
75
|
import { logEvent } from "../services/statsig.js";
|
|
76
76
|
import { cursorShow } from "ansi-escapes";
|
|
77
|
-
import {
|
|
77
|
+
import {
|
|
78
|
+
getLatestVersion,
|
|
79
|
+
assertMinVersion,
|
|
80
|
+
getUpdateCommandSuggestions
|
|
81
|
+
} from "../utils/autoUpdater.js";
|
|
78
82
|
import { gt } from "semver";
|
|
79
83
|
import { CACHE_PATHS } from "../utils/log.js";
|
|
80
84
|
import { PersistentShell } from "../utils/PersistentShell.js";
|
|
@@ -191,6 +195,17 @@ async function setup(cwd2, safeMode) {
|
|
|
191
195
|
last_session_id: projectConfig.lastSessionId
|
|
192
196
|
});
|
|
193
197
|
}
|
|
198
|
+
const autoUpdaterStatus = globalConfig.autoUpdaterStatus ?? "not_configured";
|
|
199
|
+
if (autoUpdaterStatus === "not_configured") {
|
|
200
|
+
logEvent("tengu_setup_auto_updater_not_configured", {});
|
|
201
|
+
await new Promise((resolve) => {
|
|
202
|
+
;
|
|
203
|
+
(async () => {
|
|
204
|
+
const { render } = await import("ink");
|
|
205
|
+
render(/* @__PURE__ */ React.createElement(Doctor, { onDone: () => resolve() }));
|
|
206
|
+
})();
|
|
207
|
+
});
|
|
208
|
+
}
|
|
194
209
|
}
|
|
195
210
|
async function main() {
|
|
196
211
|
initDebugLogger();
|
|
@@ -854,7 +869,7 @@ ${commandList}`
|
|
|
854
869
|
resetMcpChoices();
|
|
855
870
|
});
|
|
856
871
|
}
|
|
857
|
-
program.command("doctor").description(`Check the health of your ${PRODUCT_NAME}
|
|
872
|
+
program.command("doctor").description(`Check the health of your ${PRODUCT_NAME} auto-updater`).action(async () => {
|
|
858
873
|
logEvent("tengu_doctor_command", {});
|
|
859
874
|
await new Promise((resolve) => {
|
|
860
875
|
;
|