dexto 1.5.5 → 1.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/dist/agents/agent-template.yml +1 -1
- package/dist/agents/coding-agent/coding-agent.yml +17 -2
- package/dist/agents/coding-agent/skills/code-review.md +46 -0
- package/dist/agents/explore-agent/explore-agent.yml +2 -0
- package/dist/agents/podcast-agent/podcast-agent.yml +1 -1
- package/dist/analytics/events.d.ts +1 -1
- package/dist/analytics/events.d.ts.map +1 -1
- package/dist/api/server-hono.d.ts.map +1 -1
- package/dist/api/server-hono.js +55 -10
- package/dist/cli/assets/dexto-logo.svg +31 -0
- package/dist/cli/auth/api-client.d.ts +49 -0
- package/dist/cli/auth/api-client.d.ts.map +1 -0
- package/dist/cli/auth/api-client.js +127 -0
- package/dist/cli/auth/constants.d.ts +23 -0
- package/dist/cli/auth/constants.d.ts.map +1 -0
- package/dist/cli/auth/constants.js +24 -0
- package/dist/cli/auth/index.d.ts +5 -0
- package/dist/cli/auth/index.d.ts.map +1 -0
- package/dist/cli/auth/index.js +6 -0
- package/dist/cli/auth/oauth.d.ts +26 -0
- package/dist/cli/auth/oauth.d.ts.map +1 -0
- package/dist/cli/auth/oauth.js +327 -0
- package/dist/cli/auth/service.d.ts +20 -0
- package/dist/cli/auth/service.d.ts.map +1 -0
- package/dist/cli/auth/service.js +147 -0
- package/dist/cli/commands/auth/index.d.ts +4 -0
- package/dist/cli/commands/auth/index.d.ts.map +1 -0
- package/dist/cli/commands/auth/index.js +4 -0
- package/dist/cli/commands/auth/login.d.ts +9 -0
- package/dist/cli/commands/auth/login.d.ts.map +1 -0
- package/dist/cli/commands/auth/login.js +255 -0
- package/dist/cli/commands/auth/logout.d.ts +5 -0
- package/dist/cli/commands/auth/logout.d.ts.map +1 -0
- package/dist/cli/commands/auth/logout.js +51 -0
- package/dist/cli/commands/auth/status.d.ts +2 -0
- package/dist/cli/commands/auth/status.d.ts.map +1 -0
- package/dist/cli/commands/auth/status.js +22 -0
- package/dist/cli/commands/billing/index.d.ts +2 -0
- package/dist/cli/commands/billing/index.d.ts.map +1 -0
- package/dist/cli/commands/billing/index.js +2 -0
- package/dist/cli/commands/billing/status.d.ts +6 -0
- package/dist/cli/commands/billing/status.d.ts.map +1 -0
- package/dist/cli/commands/billing/status.js +60 -0
- package/dist/cli/commands/index.d.ts +4 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +9 -0
- package/dist/cli/commands/interactive-commands/auth/index.d.ts +12 -0
- package/dist/cli/commands/interactive-commands/auth/index.d.ts.map +1 -0
- package/dist/cli/commands/interactive-commands/auth/index.js +20 -0
- package/dist/cli/commands/interactive-commands/command-parser.d.ts +5 -0
- package/dist/cli/commands/interactive-commands/command-parser.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/command-parser.js +6 -0
- package/dist/cli/commands/interactive-commands/commands.d.ts +1 -0
- package/dist/cli/commands/interactive-commands/commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/commands.js +10 -0
- package/dist/cli/commands/interactive-commands/export/index.d.ts +13 -0
- package/dist/cli/commands/interactive-commands/export/index.d.ts.map +1 -0
- package/dist/cli/commands/interactive-commands/export/index.js +21 -0
- package/dist/cli/commands/interactive-commands/general-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/general-commands.js +1 -0
- package/dist/cli/commands/interactive-commands/mcp/index.d.ts +2 -2
- package/dist/cli/commands/interactive-commands/mcp/index.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/mcp/index.js +4 -7
- package/dist/cli/commands/interactive-commands/model/index.d.ts +2 -2
- package/dist/cli/commands/interactive-commands/model/index.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/model/index.js +4 -7
- package/dist/cli/commands/interactive-commands/plugin/index.d.ts +13 -0
- package/dist/cli/commands/interactive-commands/plugin/index.d.ts.map +1 -0
- package/dist/cli/commands/interactive-commands/plugin/index.js +18 -0
- package/dist/cli/commands/interactive-commands/prompt-commands.d.ts +3 -1
- package/dist/cli/commands/interactive-commands/prompt-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/prompt-commands.js +72 -36
- package/dist/cli/commands/interactive-commands/system/system-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/system/system-commands.js +2 -3
- package/dist/cli/commands/plugin.d.ts +161 -0
- package/dist/cli/commands/plugin.d.ts.map +1 -0
- package/dist/cli/commands/plugin.js +376 -0
- package/dist/cli/commands/setup.d.ts +9 -9
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +325 -37
- package/dist/cli/commands/sync-agents.d.ts +44 -0
- package/dist/cli/commands/sync-agents.d.ts.map +1 -0
- package/dist/cli/commands/sync-agents.js +483 -0
- package/dist/cli/ink-cli/InkCLIRefactored.d.ts +14 -1
- package/dist/cli/ink-cli/InkCLIRefactored.d.ts.map +1 -1
- package/dist/cli/ink-cli/InkCLIRefactored.js +8 -2
- package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts +1 -1
- package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/ApprovalPrompt.js +80 -12
- package/dist/cli/ink-cli/components/Footer.d.ts +2 -1
- package/dist/cli/ink-cli/components/Footer.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/Footer.js +6 -2
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.js +15 -7
- package/dist/cli/ink-cli/components/StatusBar.d.ts +9 -1
- package/dist/cli/ink-cli/components/StatusBar.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/StatusBar.js +17 -5
- package/dist/cli/ink-cli/components/TodoPanel.d.ts +11 -8
- package/dist/cli/ink-cli/components/TodoPanel.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/TodoPanel.js +38 -36
- package/dist/cli/ink-cli/components/chat/Header.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/chat/Header.js +1 -1
- package/dist/cli/ink-cli/components/chat/MessageItem.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/chat/MessageItem.js +14 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +1 -1
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.js +16 -4
- package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/modes/StaticCLI.js +4 -1
- package/dist/cli/ink-cli/components/overlays/ExportWizard.d.ts +22 -0
- package/dist/cli/ink-cli/components/overlays/ExportWizard.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/ExportWizard.js +308 -0
- package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts +1 -0
- package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +31 -20
- package/dist/cli/ink-cli/components/overlays/MarketplaceAddPrompt.d.ts +20 -0
- package/dist/cli/ink-cli/components/overlays/MarketplaceAddPrompt.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/MarketplaceAddPrompt.js +81 -0
- package/dist/cli/ink-cli/components/overlays/MarketplaceBrowser.d.ts +31 -0
- package/dist/cli/ink-cli/components/overlays/MarketplaceBrowser.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/MarketplaceBrowser.js +297 -0
- package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.js +7 -1
- package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts +1 -1
- package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/McpServerActions.js +9 -0
- package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/McpServerList.js +9 -2
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.js +15 -2
- package/dist/cli/ink-cli/components/overlays/PluginActions.d.ts +27 -0
- package/dist/cli/ink-cli/components/overlays/PluginActions.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/PluginActions.js +66 -0
- package/dist/cli/ink-cli/components/overlays/PluginList.d.ts +21 -0
- package/dist/cli/ink-cli/components/overlays/PluginList.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/PluginList.js +70 -0
- package/dist/cli/ink-cli/components/overlays/PluginManager.d.ts +21 -0
- package/dist/cli/ink-cli/components/overlays/PluginManager.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/PluginManager.js +63 -0
- package/dist/cli/ink-cli/components/overlays/PromptList.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/PromptList.js +4 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.d.ts +2 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.js +61 -2
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts +4 -2
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.js +4 -4
- package/dist/cli/ink-cli/constants/tips.js +2 -2
- package/dist/cli/ink-cli/containers/InputContainer.d.ts.map +1 -1
- package/dist/cli/ink-cli/containers/InputContainer.js +31 -3
- package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +1 -1
- package/dist/cli/ink-cli/containers/OverlayContainer.js +260 -11
- package/dist/cli/ink-cli/hooks/index.d.ts +1 -0
- package/dist/cli/ink-cli/hooks/index.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/index.js +1 -0
- package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/useCLIState.js +3 -0
- package/dist/cli/ink-cli/hooks/useGitBranch.d.ts +13 -0
- package/dist/cli/ink-cli/hooks/useGitBranch.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useGitBranch.js +35 -0
- package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/useInputOrchestrator.js +50 -6
- package/dist/cli/ink-cli/services/processStream.d.ts.map +1 -1
- package/dist/cli/ink-cli/services/processStream.js +42 -10
- package/dist/cli/ink-cli/state/initialState.d.ts.map +1 -1
- package/dist/cli/ink-cli/state/initialState.js +3 -0
- package/dist/cli/ink-cli/state/types.d.ts +16 -1
- package/dist/cli/ink-cli/state/types.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/commandOverlays.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/commandOverlays.js +2 -0
- package/dist/cli/ink-cli/utils/messageFormatting.d.ts +14 -1
- package/dist/cli/ink-cli/utils/messageFormatting.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/messageFormatting.js +68 -8
- package/dist/cli/ink-cli/utils/toolUtils.d.ts +11 -0
- package/dist/cli/ink-cli/utils/toolUtils.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/toolUtils.js +17 -0
- package/dist/cli/mcp/index.d.ts +8 -0
- package/dist/cli/mcp/index.d.ts.map +1 -0
- package/dist/cli/mcp/index.js +7 -0
- package/dist/cli/mcp/oauth-factory.d.ts +6 -0
- package/dist/cli/mcp/oauth-factory.d.ts.map +1 -0
- package/dist/cli/mcp/oauth-factory.js +25 -0
- package/dist/cli/mcp/oauth-provider.d.ts +10 -0
- package/dist/cli/mcp/oauth-provider.d.ts.map +1 -0
- package/dist/cli/mcp/oauth-provider.js +77 -0
- package/dist/cli/mcp/oauth-redirect.d.ts +3 -0
- package/dist/cli/mcp/oauth-redirect.d.ts.map +1 -0
- package/dist/cli/mcp/oauth-redirect.js +4 -0
- package/dist/cli/mcp/oauth-server.d.ts +2 -0
- package/dist/cli/mcp/oauth-server.d.ts.map +1 -0
- package/dist/cli/mcp/oauth-server.js +70 -0
- package/dist/cli/mcp/oauth-store.d.ts +10 -0
- package/dist/cli/mcp/oauth-store.d.ts.map +1 -0
- package/dist/cli/mcp/oauth-store.js +27 -0
- package/dist/cli/mcp/oauth-ui.d.ts +2 -0
- package/dist/cli/mcp/oauth-ui.d.ts.map +1 -0
- package/dist/cli/mcp/oauth-ui.js +12 -0
- package/dist/cli/mcp/oauth-utils.d.ts +2 -0
- package/dist/cli/mcp/oauth-utils.d.ts.map +1 -0
- package/dist/cli/mcp/oauth-utils.js +17 -0
- package/dist/cli/utils/api-key-setup.d.ts.map +1 -1
- package/dist/cli/utils/api-key-setup.js +13 -90
- package/dist/cli/utils/api-key-verification.d.ts.map +1 -1
- package/dist/cli/utils/api-key-verification.js +36 -0
- package/dist/cli/utils/config-validation.d.ts +3 -1
- package/dist/cli/utils/config-validation.d.ts.map +1 -1
- package/dist/cli/utils/config-validation.js +42 -19
- package/dist/cli/utils/dexto-auth-check.d.ts +53 -0
- package/dist/cli/utils/dexto-auth-check.d.ts.map +1 -0
- package/dist/cli/utils/dexto-auth-check.js +104 -0
- package/dist/cli/utils/dexto-setup.d.ts +8 -0
- package/dist/cli/utils/dexto-setup.d.ts.map +1 -0
- package/dist/cli/utils/dexto-setup.js +17 -0
- package/dist/cli/utils/options.d.ts.map +1 -1
- package/dist/cli/utils/options.js +5 -1
- package/dist/cli/utils/provider-setup.d.ts +4 -0
- package/dist/cli/utils/provider-setup.d.ts.map +1 -1
- package/dist/cli/utils/provider-setup.js +20 -0
- package/dist/cli/utils/version-check.d.ts +45 -0
- package/dist/cli/utils/version-check.d.ts.map +1 -0
- package/dist/cli/utils/version-check.js +195 -0
- package/dist/config/cli-overrides.d.ts +17 -8
- package/dist/config/cli-overrides.d.ts.map +1 -1
- package/dist/config/cli-overrides.js +36 -22
- package/dist/config/effective-llm.d.ts +123 -0
- package/dist/config/effective-llm.d.ts.map +1 -0
- package/dist/config/effective-llm.js +171 -0
- package/dist/index.js +451 -126
- package/dist/webui/assets/index-C9JXwpvo.css +1 -0
- package/dist/webui/assets/{index-DVQWNLpT.js → index-Dl3mj53P.js} +217 -217
- package/dist/webui/index.html +2 -2
- package/package.json +9 -8
- package/dist/webui/assets/index-BglIVTSG.css +0 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* PluginList Component
|
|
4
|
+
* Clean table-like view of installed plugins
|
|
5
|
+
*/
|
|
6
|
+
import { useState, useEffect, forwardRef, useRef, useImperativeHandle, useMemo, } from 'react';
|
|
7
|
+
import { Box, Text } from 'ink';
|
|
8
|
+
import { listInstalledPlugins } from '@dexto/agent-management';
|
|
9
|
+
import { BaseSelector } from '../base/BaseSelector.js';
|
|
10
|
+
/**
|
|
11
|
+
* Plugin list overlay - shows installed plugins in clean table format
|
|
12
|
+
*/
|
|
13
|
+
const PluginList = forwardRef(function PluginList({ isVisible, onPluginSelect, onClose }, ref) {
|
|
14
|
+
const baseSelectorRef = useRef(null);
|
|
15
|
+
// Forward handleInput to BaseSelector
|
|
16
|
+
useImperativeHandle(ref, () => ({
|
|
17
|
+
handleInput: (input, key) => {
|
|
18
|
+
return baseSelectorRef.current?.handleInput(input, key) ?? false;
|
|
19
|
+
},
|
|
20
|
+
}), []);
|
|
21
|
+
const [plugins, setPlugins] = useState([]);
|
|
22
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
23
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
24
|
+
// Load plugins when visible
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (isVisible) {
|
|
27
|
+
setIsLoading(true);
|
|
28
|
+
try {
|
|
29
|
+
const installedPlugins = listInstalledPlugins();
|
|
30
|
+
setPlugins(installedPlugins);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
setPlugins([]);
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
setIsLoading(false);
|
|
37
|
+
setSelectedIndex(0);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}, [isVisible]);
|
|
41
|
+
// Build list items with back option
|
|
42
|
+
const items = useMemo(() => {
|
|
43
|
+
const list = [{ type: 'back' }];
|
|
44
|
+
list.push(...plugins.map((plugin) => ({ type: 'plugin', plugin })));
|
|
45
|
+
return list;
|
|
46
|
+
}, [plugins]);
|
|
47
|
+
// Format item for display - clean single line with optional details
|
|
48
|
+
const formatItem = (item, isSelected) => {
|
|
49
|
+
if (item.type === 'back') {
|
|
50
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? 'cyan' : 'gray', children: isSelected ? '▸ ' : ' ' }), _jsx(Text, { color: "gray", children: "\u2190 " }), _jsx(Text, { color: isSelected ? 'white' : 'gray', children: "Back to menu" })] }));
|
|
51
|
+
}
|
|
52
|
+
const plugin = item.plugin;
|
|
53
|
+
const version = plugin.version || 'unknown';
|
|
54
|
+
const scopeBadge = plugin.scope ? ` [${plugin.scope}]` : '';
|
|
55
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? 'cyan' : 'gray', children: isSelected ? '▸ ' : ' ' }), _jsx(Text, { color: isSelected ? 'white' : 'gray', children: "\uD83D\uDCE6 " }), _jsx(Text, { color: isSelected ? 'cyan' : 'white', bold: isSelected, children: plugin.name }), _jsxs(Text, { color: "gray", dimColor: true, children: ["@", version] }), scopeBadge && (_jsx(Text, { color: "yellow", dimColor: true, children: scopeBadge }))] }), isSelected && plugin.description && (_jsx(Box, { marginLeft: 4, children: _jsx(Text, { color: "gray", children: plugin.description }) })), isSelected && (_jsx(Box, { marginLeft: 4, children: _jsx(Text, { color: "gray", dimColor: true, children: plugin.path }) }))] }));
|
|
56
|
+
};
|
|
57
|
+
// Handle selection
|
|
58
|
+
const handleSelect = (item) => {
|
|
59
|
+
if (item.type === 'back') {
|
|
60
|
+
onClose();
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
onPluginSelect(item.plugin);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const pluginCount = plugins.length;
|
|
67
|
+
const title = pluginCount > 0 ? `Installed Plugins (${pluginCount})` : 'Installed Plugins';
|
|
68
|
+
return (_jsx(BaseSelector, { ref: baseSelectorRef, items: items, isVisible: isVisible, isLoading: isLoading, selectedIndex: selectedIndex, onSelectIndex: setSelectedIndex, onSelect: handleSelect, onClose: onClose, formatItem: formatItem, title: title, borderColor: "cyan", emptyMessage: "No plugins installed. Browse the marketplace to find plugins." }));
|
|
69
|
+
});
|
|
70
|
+
export default PluginList;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PluginManager Component
|
|
3
|
+
* Main menu for plugin management - clean, minimal interface
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import type { Key } from '../../hooks/useInputOrchestrator.js';
|
|
7
|
+
export type PluginAction = 'list' | 'marketplace' | 'back';
|
|
8
|
+
interface PluginManagerProps {
|
|
9
|
+
isVisible: boolean;
|
|
10
|
+
onAction: (action: PluginAction) => void;
|
|
11
|
+
onClose: () => void;
|
|
12
|
+
}
|
|
13
|
+
export interface PluginManagerHandle {
|
|
14
|
+
handleInput: (input: string, key: Key) => boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Plugin manager overlay - main menu for plugin management
|
|
18
|
+
*/
|
|
19
|
+
declare const PluginManager: React.ForwardRefExoticComponent<PluginManagerProps & React.RefAttributes<PluginManagerHandle>>;
|
|
20
|
+
export default PluginManager;
|
|
21
|
+
//# sourceMappingURL=PluginManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../../../../src/cli/ink-cli/components/overlays/PluginManager.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAuE,MAAM,OAAO,CAAC;AAE5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAG/D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;AAE3D,UAAU,kBAAkB;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AA8BD;;GAEG;AACH,QAAA,MAAM,aAAa,gGAwEjB,CAAC;AAEH,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* PluginManager Component
|
|
4
|
+
* Main menu for plugin management - clean, minimal interface
|
|
5
|
+
*/
|
|
6
|
+
import { useState, useEffect, forwardRef, useRef, useImperativeHandle } from 'react';
|
|
7
|
+
import { Box, Text } from 'ink';
|
|
8
|
+
import { BaseSelector } from '../base/BaseSelector.js';
|
|
9
|
+
const PLUGIN_OPTIONS = [
|
|
10
|
+
{
|
|
11
|
+
action: 'list',
|
|
12
|
+
label: 'Installed Plugins',
|
|
13
|
+
hint: 'View, manage, uninstall',
|
|
14
|
+
icon: '📦',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
action: 'marketplace',
|
|
18
|
+
label: 'Browse Marketplace',
|
|
19
|
+
hint: 'Find and install plugins',
|
|
20
|
+
icon: '🛒',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
action: 'back',
|
|
24
|
+
label: 'Back',
|
|
25
|
+
hint: '',
|
|
26
|
+
icon: '←',
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* Plugin manager overlay - main menu for plugin management
|
|
31
|
+
*/
|
|
32
|
+
const PluginManager = forwardRef(function PluginManager({ isVisible, onAction, onClose }, ref) {
|
|
33
|
+
const baseSelectorRef = useRef(null);
|
|
34
|
+
// Forward handleInput to BaseSelector
|
|
35
|
+
useImperativeHandle(ref, () => ({
|
|
36
|
+
handleInput: (input, key) => {
|
|
37
|
+
return baseSelectorRef.current?.handleInput(input, key) ?? false;
|
|
38
|
+
},
|
|
39
|
+
}), []);
|
|
40
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
41
|
+
// Reset selection when becoming visible
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
if (isVisible) {
|
|
44
|
+
setSelectedIndex(0);
|
|
45
|
+
}
|
|
46
|
+
}, [isVisible]);
|
|
47
|
+
// Format option for display - clean single line
|
|
48
|
+
const formatItem = (option, isSelected) => {
|
|
49
|
+
const isBack = option.action === 'back';
|
|
50
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? 'cyan' : 'gray', children: isSelected ? '▸ ' : ' ' }), _jsxs(Text, { color: isBack ? 'gray' : isSelected ? 'white' : 'gray', children: [option.icon, " "] }), _jsx(Text, { color: isBack ? 'gray' : isSelected ? 'cyan' : 'white', bold: isSelected, children: option.label }), option.hint && (_jsxs(Text, { color: "gray", dimColor: true, children: [' ', "\u2014 ", option.hint] }))] }));
|
|
51
|
+
};
|
|
52
|
+
// Handle selection
|
|
53
|
+
const handleSelect = (option) => {
|
|
54
|
+
if (option.action === 'back') {
|
|
55
|
+
onClose();
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
onAction(option.action);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
return (_jsx(BaseSelector, { ref: baseSelectorRef, items: PLUGIN_OPTIONS, isVisible: isVisible, isLoading: false, selectedIndex: selectedIndex, onSelectIndex: setSelectedIndex, onSelect: handleSelect, onClose: onClose, formatItem: formatItem, title: "Plugins", borderColor: "magenta", emptyMessage: "No options available" }));
|
|
62
|
+
});
|
|
63
|
+
export default PluginManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptList.d.ts","sourceRoot":"","sources":["../../../../../src/cli/ink-cli/components/overlays/PromptList.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAEhC,UAAU,eAAe;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7C,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAuCD;;GAEG;AACH,QAAA,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"PromptList.d.ts","sourceRoot":"","sources":["../../../../../src/cli/ink-cli/components/overlays/PromptList.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAEhC,UAAU,eAAe;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7C,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAuCD;;GAEG;AACH,QAAA,MAAM,UAAU,0FAqKd,CAAC;AAEH,eAAe,UAAU,CAAC"}
|
|
@@ -115,7 +115,10 @@ const PromptList = forwardRef(function PromptList({ isVisible, onAction, onLoadI
|
|
|
115
115
|
// Prompt item
|
|
116
116
|
const prompt = item.prompt;
|
|
117
117
|
const displayName = prompt.displayName || prompt.name;
|
|
118
|
-
|
|
118
|
+
// For plugin skills, use namespace (plugin name) as source
|
|
119
|
+
const metadata = prompt.metadata;
|
|
120
|
+
const effectiveSource = metadata?.namespace ? String(metadata.namespace) : prompt.source;
|
|
121
|
+
const sourceInfo = getSourceIndicator(effectiveSource);
|
|
119
122
|
const isShared = isSharedPrompt(prompt);
|
|
120
123
|
const sourceLabel = isShared ? 'shared' : sourceInfo.label;
|
|
121
124
|
return (_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? 'cyan' : 'white', bold: isSelected, children: displayName }), prompt.title && _jsxs(Text, { color: "gray", children: [" - ", prompt.title] }), _jsxs(Text, { color: sourceInfo.color, children: [" (", sourceLabel, ")"] })] }));
|
|
@@ -20,8 +20,9 @@ export declare function getProviderConfig(provider: CustomModelProvider): Provid
|
|
|
20
20
|
export declare function getProviderLabel(provider: CustomModelProvider): string;
|
|
21
21
|
/**
|
|
22
22
|
* Get all available provider types.
|
|
23
|
+
* Filters out 'dexto' when the feature flag is disabled.
|
|
23
24
|
*/
|
|
24
|
-
export declare function getAvailableProviders():
|
|
25
|
+
export declare function getAvailableProviders(): CustomModelProvider[];
|
|
25
26
|
/**
|
|
26
27
|
* Check if a provider has async validation.
|
|
27
28
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-config.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAe,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAQhF,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AA4D7D;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,mBAAmB,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"provider-config.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAe,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAQhF,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AA4D7D;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAybxE,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,cAAc,CAE/E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAGtE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,mBAAmB,EAAE,CAG7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAEzE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACpC,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Provider configuration registry for the CustomModelWizard.
|
|
3
3
|
* Each provider has its own config with display name, description, steps, and model builder.
|
|
4
4
|
*/
|
|
5
|
-
import { CUSTOM_MODEL_PROVIDERS } from '@dexto/agent-management';
|
|
5
|
+
import { CUSTOM_MODEL_PROVIDERS, isDextoAuthEnabled } from '@dexto/agent-management';
|
|
6
6
|
import { lookupOpenRouterModel, refreshOpenRouterModelCache, getLocalModelById, isReasoningCapableModel, } from '@dexto/core';
|
|
7
7
|
import { validators } from './types.js';
|
|
8
8
|
import * as fs from 'fs';
|
|
@@ -423,6 +423,63 @@ export const PROVIDER_CONFIGS = {
|
|
|
423
423
|
docsUrl: 'https://docs.dexto.ai/docs/guides/supported-llm-providers#google-vertex-ai',
|
|
424
424
|
},
|
|
425
425
|
},
|
|
426
|
+
dexto: {
|
|
427
|
+
displayName: 'Dexto',
|
|
428
|
+
description: 'Access 100+ models with Dexto credits',
|
|
429
|
+
steps: [
|
|
430
|
+
{
|
|
431
|
+
field: 'name',
|
|
432
|
+
label: 'Model ID (OpenRouter format)',
|
|
433
|
+
placeholder: 'e.g., anthropic/claude-sonnet-4.5, openai/gpt-5.2',
|
|
434
|
+
required: true,
|
|
435
|
+
validate: validators.slashFormat,
|
|
436
|
+
},
|
|
437
|
+
{ ...DISPLAY_NAME_STEP, placeholder: 'e.g., Claude 4.5 Sonnet via Dexto' },
|
|
438
|
+
REASONING_EFFORT_STEP,
|
|
439
|
+
// No API key step - Dexto uses OAuth login (DEXTO_API_KEY from auth.json)
|
|
440
|
+
],
|
|
441
|
+
buildModel: (values, provider) => {
|
|
442
|
+
const model = {
|
|
443
|
+
name: values.name || '',
|
|
444
|
+
provider,
|
|
445
|
+
};
|
|
446
|
+
if (values.displayName?.trim()) {
|
|
447
|
+
model.displayName = values.displayName.trim();
|
|
448
|
+
}
|
|
449
|
+
if (values.reasoningEffort?.trim()) {
|
|
450
|
+
model.reasoningEffort =
|
|
451
|
+
values.reasoningEffort.toLowerCase();
|
|
452
|
+
}
|
|
453
|
+
return model;
|
|
454
|
+
},
|
|
455
|
+
asyncValidation: {
|
|
456
|
+
field: 'name',
|
|
457
|
+
validate: async (modelId) => {
|
|
458
|
+
// Reuse OpenRouter validation since Dexto uses OpenRouter model IDs
|
|
459
|
+
let status = lookupOpenRouterModel(modelId);
|
|
460
|
+
// If cache is stale/empty, try to refresh
|
|
461
|
+
if (status === 'unknown') {
|
|
462
|
+
try {
|
|
463
|
+
await refreshOpenRouterModelCache();
|
|
464
|
+
status = lookupOpenRouterModel(modelId);
|
|
465
|
+
}
|
|
466
|
+
catch {
|
|
467
|
+
// Network failed - allow the model (graceful degradation)
|
|
468
|
+
return null;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
if (status === 'invalid') {
|
|
472
|
+
return `Model '${modelId}' not found. Dexto uses OpenRouter model IDs - check https://openrouter.ai/models`;
|
|
473
|
+
}
|
|
474
|
+
return null;
|
|
475
|
+
},
|
|
476
|
+
},
|
|
477
|
+
setupInfo: {
|
|
478
|
+
title: 'Dexto Setup',
|
|
479
|
+
description: 'Add OpenRouter-format models that use your Dexto credits. Requires login: run `dexto login` first.',
|
|
480
|
+
docsUrl: 'https://openrouter.ai/models',
|
|
481
|
+
},
|
|
482
|
+
},
|
|
426
483
|
};
|
|
427
484
|
/**
|
|
428
485
|
* Get provider config by provider type.
|
|
@@ -440,9 +497,11 @@ export function getProviderLabel(provider) {
|
|
|
440
497
|
}
|
|
441
498
|
/**
|
|
442
499
|
* Get all available provider types.
|
|
500
|
+
* Filters out 'dexto' when the feature flag is disabled.
|
|
443
501
|
*/
|
|
444
502
|
export function getAvailableProviders() {
|
|
445
|
-
|
|
503
|
+
const dextoEnabled = isDextoAuthEnabled();
|
|
504
|
+
return CUSTOM_MODEL_PROVIDERS.filter((provider) => provider !== 'dexto' || dextoEnabled);
|
|
446
505
|
}
|
|
447
506
|
/**
|
|
448
507
|
* Check if a provider has async validation.
|
|
@@ -18,11 +18,13 @@ interface DiffPreviewProps {
|
|
|
18
18
|
export declare function DiffPreview({ data, headerType }: DiffPreviewProps): import("react/jsx-runtime").JSX.Element;
|
|
19
19
|
interface CreateFilePreviewProps {
|
|
20
20
|
data: FileDisplayData;
|
|
21
|
+
/** Custom header text (defaults to "Create file") */
|
|
22
|
+
header?: string;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
|
-
* Preview for write_file (new file creation)
|
|
25
|
+
* Preview for write_file (new file creation) or plan review
|
|
24
26
|
* Shows full file content with line numbers, white text
|
|
25
27
|
*/
|
|
26
|
-
export declare function CreateFilePreview({ data }: CreateFilePreviewProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export declare function CreateFilePreview({ data, header }: CreateFilePreviewProps): import("react/jsx-runtime").JSX.Element;
|
|
27
29
|
export {};
|
|
28
30
|
//# sourceMappingURL=FilePreviewRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilePreviewRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/cli/ink-cli/components/renderers/FilePreviewRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgBpE,UAAU,gBAAgB;IACtB,IAAI,EAAE,eAAe,CAAC;IACtB,mDAAmD;IACnD,UAAU,EAAE,MAAM,GAAG,WAAW,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,gBAAgB,2CAiGjE;AAMD,UAAU,sBAAsB;IAC5B,IAAI,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"FilePreviewRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/cli/ink-cli/components/renderers/FilePreviewRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgBpE,UAAU,gBAAgB;IACtB,IAAI,EAAE,eAAe,CAAC;IACtB,mDAAmD;IACnD,UAAU,EAAE,MAAM,GAAG,WAAW,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,gBAAgB,2CAiGjE;AAMD,UAAU,sBAAsB;IAC5B,IAAI,EAAE,eAAe,CAAC;IACtB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAsB,EAAE,EAAE,sBAAsB,2CAoDzF"}
|
|
@@ -51,16 +51,16 @@ export function DiffPreview({ data, headerType }) {
|
|
|
51
51
|
})] })] }));
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
|
-
* Preview for write_file (new file creation)
|
|
54
|
+
* Preview for write_file (new file creation) or plan review
|
|
55
55
|
* Shows full file content with line numbers, white text
|
|
56
56
|
*/
|
|
57
|
-
export function CreateFilePreview({ data }) {
|
|
57
|
+
export function CreateFilePreview({ data, header = 'Create file' }) {
|
|
58
58
|
const { path, content, lineCount } = data;
|
|
59
59
|
if (!content) {
|
|
60
60
|
// Fallback if content not provided
|
|
61
|
-
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 0, children: _jsx(Text, { color: "cyan", bold: true, children:
|
|
61
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 0, children: _jsx(Text, { color: "cyan", bold: true, children: header }) }), _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, children: [_jsx(Text, { children: makeRelativePath(path) }), lineCount && _jsxs(Text, { color: "gray", children: [lineCount, " lines"] })] })] }));
|
|
62
62
|
}
|
|
63
63
|
const lines = content.split('\n');
|
|
64
64
|
const lineNumWidth = getLineNumWidth(lines.length);
|
|
65
|
-
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 0, children: _jsx(Text, { color: "cyan", bold: true, children:
|
|
65
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 0, children: _jsx(Text, { color: "cyan", bold: true, children: header }) }), _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, children: [_jsx(Box, { marginBottom: 0, children: _jsx(Text, { children: makeRelativePath(path) }) }), lines.map((line, index) => (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: formatLineNum(index + 1, lineNumWidth) }), _jsxs(Text, { children: [' ', line] })] }, index)))] })] }));
|
|
66
66
|
}
|
|
@@ -31,13 +31,13 @@ export const tips = [
|
|
|
31
31
|
'Press Escape to close overlays and menus…',
|
|
32
32
|
'Use Up/Down arrows to navigate command history…',
|
|
33
33
|
'Press Enter to submit your message…',
|
|
34
|
-
'Press Ctrl+T to
|
|
34
|
+
'Press Ctrl+T to show/hide the task list…',
|
|
35
35
|
'Press Ctrl+R to search previous prompts…',
|
|
36
36
|
'Press Shift+Enter to insert a new line…',
|
|
37
37
|
// Feature tips
|
|
38
38
|
'Start with ! to run bash commands directly…',
|
|
39
39
|
'Paste copied images with Ctrl+V…',
|
|
40
|
-
'Large pastes are automatically collapsed - press Ctrl+
|
|
40
|
+
'Large pastes are automatically collapsed - press Ctrl+P to toggle…',
|
|
41
41
|
'Use @ to reference files and resources…',
|
|
42
42
|
'Type / to see available slash commands…',
|
|
43
43
|
'MCP servers extend dexto with custom tools…',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputContainer.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/containers/InputContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAA0E,MAAM,OAAO,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAoC,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAiB,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EACR,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EAGZ,QAAQ,EACX,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAMtE,qDAAqD;AACrD,MAAM,WAAW,oBAAoB;IACjC,yEAAyE;IACzE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,UAAU,mBAAmB;IACzB,yCAAyC;IACzC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,8CAA8C;IAC9C,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,2DAA2D;IAC3D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,mEAAmE;IACnE,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,iFAAiF;IACjF,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,iCAAiC;IACjC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACzE,8EAA8E;IAC9E,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,yEAAyE;IACzE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,sEAAsE;IACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC;IACtD,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"InputContainer.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/containers/InputContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAA0E,MAAM,OAAO,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAoC,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAiB,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EACR,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EAGZ,QAAQ,EACX,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAMtE,qDAAqD;AACrD,MAAM,WAAW,oBAAoB;IACjC,yEAAyE;IACzE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,UAAU,mBAAmB;IACzB,yCAAyC;IACzC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,8CAA8C;IAC9C,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,2DAA2D;IAC3D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,mEAAmE;IACnE,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,iFAAiF;IACjF,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,iCAAiC;IACjC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACzE,8EAA8E;IAC9E,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,yEAAyE;IACzE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,sEAAsE;IACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC;IACtD,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,kGA6tB1B,CAAC"}
|
|
@@ -461,11 +461,35 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
|
|
|
461
461
|
const isFirstMessage = !metadata || metadata.messageCount <= 0;
|
|
462
462
|
// Build content with images if any
|
|
463
463
|
let content;
|
|
464
|
+
// Plan mode injection: prepend plan skill content on first message
|
|
465
|
+
// The <plan-mode> tags are filtered out by the message renderer so users
|
|
466
|
+
// don't see the instructions, but the LLM receives them.
|
|
467
|
+
//
|
|
468
|
+
// TODO: Consider dropping <plan-mode> content after plan is approved/disabled.
|
|
469
|
+
// Edge case: user may still need access to plan tools after approval for
|
|
470
|
+
// progress tracking (checking off tasks). Current approach keeps it simple
|
|
471
|
+
// by letting the content remain in context - it's not re-injected, just
|
|
472
|
+
// stays from the first message.
|
|
473
|
+
let messageText = trimmed;
|
|
474
|
+
if (ui.planModeActive && !ui.planModeInitialized) {
|
|
475
|
+
try {
|
|
476
|
+
const planSkill = await agent.resolvePrompt('plan', {});
|
|
477
|
+
if (planSkill.text) {
|
|
478
|
+
messageText = `<plan-mode>\n${planSkill.text}\n</plan-mode>\n\n${trimmed}`;
|
|
479
|
+
// Mark plan mode as initialized after injection
|
|
480
|
+
setUi((prev) => ({ ...prev, planModeInitialized: true }));
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
catch {
|
|
484
|
+
// Plan skill not found - continue without injection
|
|
485
|
+
// This can happen if the plan-tools plugin is not enabled
|
|
486
|
+
}
|
|
487
|
+
}
|
|
464
488
|
if (pendingImages.length > 0) {
|
|
465
489
|
// Build multimodal content parts
|
|
466
490
|
const parts = [];
|
|
467
|
-
// Add text part first
|
|
468
|
-
parts.push({ type: 'text', text:
|
|
491
|
+
// Add text part first (with potential plan-mode injection)
|
|
492
|
+
parts.push({ type: 'text', text: messageText });
|
|
469
493
|
// Add image parts
|
|
470
494
|
for (const img of pendingImages) {
|
|
471
495
|
parts.push({
|
|
@@ -477,7 +501,7 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
|
|
|
477
501
|
content = parts;
|
|
478
502
|
}
|
|
479
503
|
else {
|
|
480
|
-
content =
|
|
504
|
+
content = messageText;
|
|
481
505
|
}
|
|
482
506
|
// Get current LLM config for analytics
|
|
483
507
|
const llmConfig = agent.getCurrentLLMConfig();
|
|
@@ -549,6 +573,8 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
|
|
|
549
573
|
inputService,
|
|
550
574
|
ui.isProcessing,
|
|
551
575
|
ui.activeOverlay,
|
|
576
|
+
ui.planModeActive,
|
|
577
|
+
ui.planModeInitialized,
|
|
552
578
|
session.id,
|
|
553
579
|
useStreaming,
|
|
554
580
|
soundService,
|
|
@@ -564,6 +590,8 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
|
|
|
564
590
|
'tool-browser',
|
|
565
591
|
'prompt-add-wizard',
|
|
566
592
|
'model-selector',
|
|
593
|
+
'export-wizard',
|
|
594
|
+
'marketplace-add',
|
|
567
595
|
];
|
|
568
596
|
const hasOverlayWithOwnInput = overlaysWithOwnInput.includes(ui.activeOverlay);
|
|
569
597
|
const isHistorySearchActive = ui.historySearch.isActive;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayContainer.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/containers/OverlayContainer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAyE,MAAM,OAAO,CAAC;AAE9F,OAAO,KAAK,EAAE,UAAU,EAAmD,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAGH,KAAK,eAAe,EACvB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"OverlayContainer.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/containers/OverlayContainer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAyE,MAAM,OAAO,CAAC;AAE9F,OAAO,KAAK,EAAE,UAAU,EAAmD,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAGH,KAAK,eAAe,EACvB,MAAM,iCAAiC,CAAC;AAiGzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAK3D,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,qBAAqB;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,sGAgzE5B,CAAC"}
|