dexto 1.5.8 → 1.6.1
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 +3 -3
- package/dist/agents/agent-template.yml +2 -2
- package/dist/agents/coding-agent/README.md +10 -10
- package/dist/agents/coding-agent/coding-agent.yml +84 -83
- package/dist/agents/default-agent.yml +32 -47
- package/dist/agents/explore-agent/explore-agent.yml +3 -6
- package/dist/agents/image-editor-agent/image-editor-agent.yml +1 -1
- package/dist/agents/nano-banana-agent/nano-banana-agent.yml +1 -1
- package/dist/agents/podcast-agent/podcast-agent.yml +1 -1
- package/dist/agents/product-name-researcher/product-name-researcher.yml +1 -1
- package/dist/agents/sora-video-agent/sora-video-agent.yml +4 -6
- package/dist/agents/triage-demo/triage-agent.yml +1 -1
- package/dist/analytics/events.d.ts +1 -1
- package/dist/analytics/events.d.ts.map +1 -1
- package/dist/api/mcp/tool-aggregation-handler.d.ts +2 -2
- package/dist/api/server-hono.d.ts +2 -2
- package/dist/api/server-hono.d.ts.map +1 -1
- package/dist/api/server-hono.js +37 -60
- package/dist/cli/approval/cli-approval-handler.d.ts +10 -3
- package/dist/cli/approval/cli-approval-handler.d.ts.map +1 -1
- package/dist/cli/approval/cli-approval-handler.js +1 -1
- package/dist/cli/assets/sounds/SOURCES.md +35 -0
- package/dist/cli/assets/sounds/boot.wav +0 -0
- package/dist/cli/assets/sounds/chime.wav +0 -0
- package/dist/cli/assets/sounds/coin.wav +0 -0
- package/dist/cli/assets/sounds/confirm.wav +0 -0
- package/dist/cli/assets/sounds/levelup.wav +0 -0
- package/dist/cli/assets/sounds/ping.wav +0 -0
- package/dist/cli/assets/sounds/powerup.wav +0 -0
- package/dist/cli/assets/sounds/startup.wav +0 -0
- package/dist/cli/assets/sounds/success.wav +0 -0
- package/dist/cli/assets/sounds/treasure.wav +0 -0
- package/dist/cli/assets/sounds/win.wav +0 -0
- package/dist/cli/commands/create-app.d.ts +1 -11
- package/dist/cli/commands/create-app.d.ts.map +1 -1
- package/dist/cli/commands/create-app.js +21 -545
- package/dist/cli/commands/create-image.d.ts.map +1 -1
- package/dist/cli/commands/create-image.js +54 -53
- package/dist/cli/commands/image.d.ts +52 -0
- package/dist/cli/commands/image.d.ts.map +1 -0
- package/dist/cli/commands/image.js +118 -0
- package/dist/cli/commands/index.d.ts +2 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +3 -1
- package/dist/cli/commands/init-app.d.ts +4 -8
- package/dist/cli/commands/init-app.d.ts.map +1 -1
- package/dist/cli/commands/init-app.js +37 -161
- package/dist/cli/commands/interactive-commands/command-parser.d.ts +2 -0
- package/dist/cli/commands/interactive-commands/command-parser.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/commands.d.ts +1 -1
- package/dist/cli/commands/interactive-commands/commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/commands.js +2 -2
- package/dist/cli/commands/interactive-commands/exit-handler.d.ts +12 -0
- package/dist/cli/commands/interactive-commands/exit-handler.d.ts.map +1 -0
- package/dist/cli/commands/interactive-commands/exit-handler.js +20 -0
- package/dist/cli/commands/interactive-commands/exit-stats.d.ts +24 -0
- package/dist/cli/commands/interactive-commands/exit-stats.d.ts.map +1 -0
- package/dist/cli/commands/interactive-commands/exit-stats.js +17 -0
- package/dist/cli/commands/interactive-commands/general-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/general-commands.js +55 -5
- package/dist/cli/commands/interactive-commands/prompt-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/prompt-commands.js +14 -74
- package/dist/cli/commands/interactive-commands/session/index.d.ts +2 -1
- package/dist/cli/commands/interactive-commands/session/index.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/session/index.js +2 -1
- package/dist/cli/commands/interactive-commands/session/session-commands.d.ts +2 -2
- package/dist/cli/commands/interactive-commands/session/session-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/session/session-commands.js +2 -4
- package/dist/cli/commands/interactive-commands/system/system-commands.d.ts +1 -13
- package/dist/cli/commands/interactive-commands/system/system-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/system/system-commands.js +52 -83
- package/dist/cli/commands/plugin.d.ts +4 -4
- package/dist/cli/commands/sync-agents.d.ts +2 -12
- package/dist/cli/commands/sync-agents.d.ts.map +1 -1
- package/dist/cli/commands/sync-agents.js +2 -50
- package/dist/cli/ink-cli/InkCLIRefactored.d.ts +7 -1
- package/dist/cli/ink-cli/InkCLIRefactored.d.ts.map +1 -1
- package/dist/cli/ink-cli/InkCLIRefactored.js +138 -27
- package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts +2 -2
- package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/ApprovalPrompt.js +85 -30
- package/dist/cli/ink-cli/components/BackgroundTasksPanel.js +1 -1
- package/dist/cli/ink-cli/components/ElicitationForm.d.ts +5 -3
- package/dist/cli/ink-cli/components/ElicitationForm.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/ElicitationForm.js +414 -180
- package/dist/cli/ink-cli/components/Footer.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/Footer.js +1 -2
- package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/ResourceAutocomplete.js +20 -11
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.js +47 -67
- package/dist/cli/ink-cli/components/StatusBar.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/StatusBar.js +20 -10
- package/dist/cli/ink-cli/components/TodoPanel.js +1 -1
- package/dist/cli/ink-cli/components/base/BaseSelector.d.ts +2 -1
- package/dist/cli/ink-cli/components/base/BaseSelector.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/base/BaseSelector.js +37 -27
- 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 +3 -1
- package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/chat/ToolIcon.js +5 -15
- package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.js +1 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +1 -1
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts +3 -1
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.js +5 -3
- package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts +3 -1
- package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/modes/StaticCLI.js +10 -3
- package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.d.ts +13 -0
- package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.js +60 -0
- package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +1 -1
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.js +213 -100
- package/dist/cli/ink-cli/components/overlays/PromptList.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/PromptList.js +12 -16
- package/dist/cli/ink-cli/components/overlays/SoundsSelector.d.ts +21 -0
- package/dist/cli/ink-cli/components/overlays/SoundsSelector.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/SoundsSelector.js +566 -0
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts +1 -1
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.js +100 -45
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.js +8 -13
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts +3 -3
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.js +6 -5
- package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts +3 -1
- package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/renderers/FileRenderer.js +18 -7
- package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/renderers/ShellRenderer.js +7 -17
- package/dist/cli/ink-cli/components/renderers/index.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/renderers/index.js +1 -1
- package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.d.ts +7 -0
- package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.js +8 -0
- package/dist/cli/ink-cli/components/shared/HintBar.d.ts +6 -0
- package/dist/cli/ink-cli/components/shared/HintBar.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/shared/HintBar.js +6 -0
- package/dist/cli/ink-cli/constants/spinnerFrames.d.ts +2 -0
- package/dist/cli/ink-cli/constants/spinnerFrames.d.ts.map +1 -0
- package/dist/cli/ink-cli/constants/spinnerFrames.js +1 -0
- package/dist/cli/ink-cli/constants/tips.d.ts.map +1 -1
- package/dist/cli/ink-cli/constants/tips.js +2 -1
- package/dist/cli/ink-cli/containers/InputContainer.d.ts +4 -0
- package/dist/cli/ink-cli/containers/InputContainer.d.ts.map +1 -1
- package/dist/cli/ink-cli/containers/InputContainer.js +47 -21
- package/dist/cli/ink-cli/containers/OverlayContainer.d.ts +2 -0
- package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +1 -1
- package/dist/cli/ink-cli/containers/OverlayContainer.js +101 -40
- package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/useAgentEvents.js +15 -16
- package/dist/cli/ink-cli/hooks/useAnimationTick.d.ts +11 -0
- package/dist/cli/ink-cli/hooks/useAnimationTick.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useAnimationTick.js +54 -0
- package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/useCLIState.js +1 -0
- package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/useTokenCounter.js +7 -4
- package/dist/cli/ink-cli/services/CommandService.d.ts +1 -1
- package/dist/cli/ink-cli/services/CommandService.d.ts.map +1 -1
- package/dist/cli/ink-cli/services/CommandService.js +2 -2
- package/dist/cli/ink-cli/services/processStream.d.ts +2 -2
- package/dist/cli/ink-cli/services/processStream.d.ts.map +1 -1
- package/dist/cli/ink-cli/services/processStream.js +27 -19
- package/dist/cli/ink-cli/state/initialState.d.ts.map +1 -1
- package/dist/cli/ink-cli/state/initialState.js +1 -0
- package/dist/cli/ink-cli/state/types.d.ts +15 -3
- 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 +1 -0
- package/dist/cli/ink-cli/utils/elicitationSchema.d.ts +11 -0
- package/dist/cli/ink-cli/utils/elicitationSchema.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/elicitationSchema.js +80 -0
- package/dist/cli/ink-cli/utils/index.d.ts +1 -1
- package/dist/cli/ink-cli/utils/index.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/index.js +1 -1
- package/dist/cli/ink-cli/utils/messageFormatting.d.ts +10 -19
- package/dist/cli/ink-cli/utils/messageFormatting.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/messageFormatting.js +43 -262
- package/dist/cli/ink-cli/utils/overlayPresentation.d.ts +19 -0
- package/dist/cli/ink-cli/utils/overlayPresentation.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/overlayPresentation.js +33 -0
- package/dist/cli/ink-cli/utils/overlaySizing.d.ts +19 -0
- package/dist/cli/ink-cli/utils/overlaySizing.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/overlaySizing.js +11 -0
- package/dist/cli/ink-cli/utils/soundNotification.d.ts +19 -13
- package/dist/cli/ink-cli/utils/soundNotification.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/soundNotification.js +120 -97
- package/dist/cli/ink-cli/utils/toolUtils.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/toolUtils.js +2 -9
- package/dist/cli/utils/config-validation.d.ts +11 -11
- package/dist/cli/utils/config-validation.d.ts.map +1 -1
- package/dist/cli/utils/config-validation.js +56 -290
- package/dist/cli/utils/image-store.d.ts +16 -0
- package/dist/cli/utils/image-store.d.ts.map +1 -0
- package/dist/cli/utils/image-store.js +289 -0
- package/dist/cli/utils/scaffolding-utils.d.ts +5 -0
- package/dist/cli/utils/scaffolding-utils.d.ts.map +1 -1
- package/dist/cli/utils/scaffolding-utils.js +46 -4
- package/dist/cli/utils/template-engine.d.ts +28 -16
- package/dist/cli/utils/template-engine.d.ts.map +1 -1
- package/dist/cli/utils/template-engine.js +339 -479
- package/dist/config/cli-overrides.d.ts +4 -3
- package/dist/config/cli-overrides.d.ts.map +1 -1
- package/dist/config/cli-overrides.js +7 -9
- package/dist/index-main.d.ts +2 -0
- package/dist/index-main.d.ts.map +1 -0
- package/dist/index-main.js +1554 -0
- package/dist/index.js +2 -1589
- package/dist/utils/session-logger-factory.d.ts +3 -0
- package/dist/utils/session-logger-factory.d.ts.map +1 -0
- package/dist/utils/session-logger-factory.js +34 -0
- package/dist/webui/assets/{index-Cz2z7NQ8.js → index-CKhumsZA.js} +231 -231
- package/dist/webui/index.html +1 -1
- package/package.json +11 -8
- package/dist/cli/cli-subscriber.d.ts +0 -45
- package/dist/cli/cli-subscriber.d.ts.map +0 -1
- package/dist/cli/cli-subscriber.js +0 -204
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
* - /prompts - List all available prompts (MCP + internal)
|
|
10
10
|
* - /<prompt-name> [args] - Direct prompt execution (auto-generated for each prompt)
|
|
11
11
|
*/
|
|
12
|
-
import chalk from 'chalk';
|
|
13
12
|
import { formatForInkCli } from './utils/format-output.js';
|
|
14
13
|
import { createSendMessageMarker } from '../../ink-cli/services/index.js';
|
|
15
14
|
// Avoid depending on core types to keep CLI typecheck independent of build
|
|
@@ -51,7 +50,6 @@ export const promptCommands = [
|
|
|
51
50
|
const promptNames = Object.keys(prompts || {});
|
|
52
51
|
if (promptNames.length === 0) {
|
|
53
52
|
const output = '\n⚠️ No prompts available';
|
|
54
|
-
console.log(chalk.rgb(255, 165, 0)(output));
|
|
55
53
|
return formatForInkCli(output);
|
|
56
54
|
}
|
|
57
55
|
// Build output string
|
|
@@ -117,59 +115,10 @@ export const promptCommands = [
|
|
|
117
115
|
}
|
|
118
116
|
outputLines.push(`Total: ${promptNames.length} prompts`);
|
|
119
117
|
const output = outputLines.join('\n');
|
|
120
|
-
// Log for regular CLI (with chalk formatting)
|
|
121
|
-
console.log(chalk.bold.green('\n📝 Available Prompts:\n'));
|
|
122
|
-
if (mcpPrompts.length > 0) {
|
|
123
|
-
console.log(chalk.cyan('🔗 MCP Prompts:'));
|
|
124
|
-
mcpPrompts.forEach((name) => {
|
|
125
|
-
const info = prompts[name];
|
|
126
|
-
if (info) {
|
|
127
|
-
const displayName = info.displayName || name;
|
|
128
|
-
const title = info.title && info.title !== displayName ? ` (${info.title})` : '';
|
|
129
|
-
const desc = info.description ? ` - ${info.description}` : '';
|
|
130
|
-
const args = info.arguments && info.arguments.length > 0
|
|
131
|
-
? ` [args: ${info.arguments
|
|
132
|
-
.map((a) => `${a.name}${a.required ? '*' : ''}`)
|
|
133
|
-
.join(', ')}]`
|
|
134
|
-
: '';
|
|
135
|
-
console.log(` ${chalk.blue(displayName)}${chalk.rgb(255, 165, 0)(title)}${chalk.gray(desc)}${chalk.gray(args)}`);
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
console.log();
|
|
139
|
-
}
|
|
140
|
-
if (configPrompts.length > 0) {
|
|
141
|
-
console.log(chalk.cyan('📋 Config Prompts:'));
|
|
142
|
-
configPrompts.forEach((name) => {
|
|
143
|
-
const info = prompts[name];
|
|
144
|
-
if (info) {
|
|
145
|
-
const displayName = info.displayName || name;
|
|
146
|
-
const title = info.title && info.title !== displayName ? ` (${info.title})` : '';
|
|
147
|
-
const desc = info.description ? ` - ${info.description}` : '';
|
|
148
|
-
console.log(` ${chalk.blue(displayName)}${chalk.rgb(255, 165, 0)(title)}${chalk.gray(desc)}`);
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
console.log();
|
|
152
|
-
}
|
|
153
|
-
if (customPrompts.length > 0) {
|
|
154
|
-
console.log(chalk.greenBright('✨ Custom Prompts:'));
|
|
155
|
-
customPrompts.forEach((name) => {
|
|
156
|
-
const info = prompts[name];
|
|
157
|
-
if (info) {
|
|
158
|
-
const displayName = info.displayName || name;
|
|
159
|
-
const title = info.title && info.title !== displayName ? ` (${info.title})` : '';
|
|
160
|
-
const desc = info.description ? ` - ${info.description}` : '';
|
|
161
|
-
console.log(` ${chalk.blue(displayName)}${chalk.rgb(255, 165, 0)(title)}${chalk.gray(desc)}`);
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
console.log();
|
|
165
|
-
}
|
|
166
|
-
console.log(chalk.gray(`Total: ${promptNames.length} prompts`));
|
|
167
|
-
console.log(chalk.gray('💡 Use /<prompt-name> to execute a prompt directly\n'));
|
|
168
118
|
return formatForInkCli(output);
|
|
169
119
|
}
|
|
170
120
|
catch (error) {
|
|
171
121
|
const errorMsg = `Error listing prompts: ${error instanceof Error ? error.message : String(error)}`;
|
|
172
|
-
console.error(chalk.red(`❌ ${errorMsg}`));
|
|
173
122
|
return formatForInkCli(`❌ ${errorMsg}`);
|
|
174
123
|
}
|
|
175
124
|
},
|
|
@@ -212,39 +161,31 @@ function createPromptCommand(promptInfo) {
|
|
|
212
161
|
if (ctx.sessionId) {
|
|
213
162
|
// Apply model override if specified
|
|
214
163
|
if (result.model) {
|
|
215
|
-
console.log(chalk.gray(`🔄 Switching model to '${result.model}' for this prompt`));
|
|
216
164
|
try {
|
|
217
165
|
await agent.switchLLM({ model: result.model }, ctx.sessionId);
|
|
218
166
|
}
|
|
219
167
|
catch (modelError) {
|
|
220
|
-
|
|
168
|
+
agent.logger.warn('Failed to switch model for prompt override', {
|
|
169
|
+
model: result.model,
|
|
170
|
+
error: modelError instanceof Error
|
|
171
|
+
? modelError.message
|
|
172
|
+
: String(modelError),
|
|
173
|
+
});
|
|
221
174
|
}
|
|
222
175
|
}
|
|
223
176
|
// Apply auto-approve tools if specified
|
|
224
177
|
// These tools will skip confirmation prompts during skill execution
|
|
225
178
|
if (result.allowedTools && result.allowedTools.length > 0) {
|
|
226
|
-
const displayTools = result.allowedTools.map((tool) => {
|
|
227
|
-
if (tool.startsWith('custom--')) {
|
|
228
|
-
return tool.replace(/^custom--/, '');
|
|
229
|
-
}
|
|
230
|
-
if (tool.startsWith('mcp--')) {
|
|
231
|
-
const trimmed = tool.replace(/^mcp--/, '');
|
|
232
|
-
const [server, ...rest] = trimmed.split('--');
|
|
233
|
-
if (server && rest.length > 0) {
|
|
234
|
-
return `${server}/${rest.join('--')}`;
|
|
235
|
-
}
|
|
236
|
-
return trimmed;
|
|
237
|
-
}
|
|
238
|
-
return tool;
|
|
239
|
-
});
|
|
240
|
-
console.log(chalk.gray(`🔓 Auto-approving tools: ${displayTools.join(', ')}`));
|
|
241
179
|
try {
|
|
242
|
-
agent.toolManager.setSessionAutoApproveTools(ctx.sessionId, result.allowedTools
|
|
243
|
-
? `mcp--${tool}`
|
|
244
|
-
: tool));
|
|
180
|
+
agent.toolManager.setSessionAutoApproveTools(ctx.sessionId, result.allowedTools);
|
|
245
181
|
}
|
|
246
182
|
catch (toolError) {
|
|
247
|
-
|
|
183
|
+
agent.logger.warn('Failed to set auto-approve tools for prompt', {
|
|
184
|
+
tools: result.allowedTools,
|
|
185
|
+
error: toolError instanceof Error
|
|
186
|
+
? toolError.message
|
|
187
|
+
: String(toolError),
|
|
188
|
+
});
|
|
248
189
|
}
|
|
249
190
|
}
|
|
250
191
|
}
|
|
@@ -260,7 +201,7 @@ function createPromptCommand(promptInfo) {
|
|
|
260
201
|
Execute the fork skill: ${commandName}
|
|
261
202
|
${taskContext ? `Task context: ${taskContext}` : ''}
|
|
262
203
|
|
|
263
|
-
Call the
|
|
204
|
+
Call the invoke_skill tool immediately with:
|
|
264
205
|
- skill: "${skillName}"
|
|
265
206
|
${taskContext ? `- taskContext: "${taskContext}"` : ''}
|
|
266
207
|
</skill-invocation>`;
|
|
@@ -290,7 +231,6 @@ ${finalText.trim()}`;
|
|
|
290
231
|
}
|
|
291
232
|
else {
|
|
292
233
|
const warningMsg = `⚠️ Prompt '${commandName}' returned no content`;
|
|
293
|
-
console.log(chalk.rgb(255, 165, 0)(warningMsg));
|
|
294
234
|
return formatForInkCli(warningMsg);
|
|
295
235
|
}
|
|
296
236
|
}
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* - resumeCommand: Shows interactive session selector
|
|
10
10
|
* - renameCommand: Rename the current session
|
|
11
11
|
*
|
|
12
|
-
* Note: For
|
|
12
|
+
* Note: For non-interactive session subcommands (list, history, delete),
|
|
13
|
+
* see src/cli/commands/session-commands.ts
|
|
13
14
|
*/
|
|
14
15
|
export { searchCommand, resumeCommand, renameCommand } from './session-commands.js';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/interactive-commands/session/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/interactive-commands/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* - resumeCommand: Shows interactive session selector
|
|
10
10
|
* - renameCommand: Rename the current session
|
|
11
11
|
*
|
|
12
|
-
* Note: For
|
|
12
|
+
* Note: For non-interactive session subcommands (list, history, delete),
|
|
13
|
+
* see src/cli/commands/session-commands.ts
|
|
13
14
|
*/
|
|
14
15
|
export { searchCommand, resumeCommand, renameCommand } from './session-commands.js';
|
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
* - search: Opens interactive search overlay
|
|
10
10
|
* - rename: Rename the current session
|
|
11
11
|
*
|
|
12
|
-
* Note: For
|
|
12
|
+
* Note: For non-interactive session subcommands (list, history, delete),
|
|
13
13
|
* see src/cli/commands/session-commands.ts
|
|
14
14
|
*/
|
|
15
15
|
import type { CommandDefinition } from '../command-parser.js';
|
|
16
16
|
/**
|
|
17
17
|
* Resume command - shows interactive session selector
|
|
18
18
|
* Note: In interactive CLI, this always shows the selector (args ignored)
|
|
19
|
-
*
|
|
19
|
+
* Tip: To start the interactive CLI directly in a session, use `dexto --resume <sessionId>`.
|
|
20
20
|
*/
|
|
21
21
|
export declare const resumeCommand: CommandDefinition;
|
|
22
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-commands.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/interactive-commands/session/session-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"session-commands.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/interactive-commands/session/session-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,iBAqB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,iBAc3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,iBAa3B,CAAC"}
|
|
@@ -9,14 +9,13 @@
|
|
|
9
9
|
* - search: Opens interactive search overlay
|
|
10
10
|
* - rename: Rename the current session
|
|
11
11
|
*
|
|
12
|
-
* Note: For
|
|
12
|
+
* Note: For non-interactive session subcommands (list, history, delete),
|
|
13
13
|
* see src/cli/commands/session-commands.ts
|
|
14
14
|
*/
|
|
15
|
-
import chalk from 'chalk';
|
|
16
15
|
/**
|
|
17
16
|
* Resume command - shows interactive session selector
|
|
18
17
|
* Note: In interactive CLI, this always shows the selector (args ignored)
|
|
19
|
-
*
|
|
18
|
+
* Tip: To start the interactive CLI directly in a session, use `dexto --resume <sessionId>`.
|
|
20
19
|
*/
|
|
21
20
|
export const resumeCommand = {
|
|
22
21
|
name: 'resume',
|
|
@@ -32,7 +31,6 @@ export const resumeCommand = {
|
|
|
32
31
|
'📋 Resume Session',
|
|
33
32
|
'\nType /resume to show the session selector\n',
|
|
34
33
|
].join('\n');
|
|
35
|
-
console.log(chalk.blue(helpText));
|
|
36
34
|
return helpText;
|
|
37
35
|
},
|
|
38
36
|
};
|
|
@@ -1,16 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* System Commands Module
|
|
3
|
-
*
|
|
4
|
-
* This module defines system-level slash commands for the Dexto CLI interface.
|
|
5
|
-
* These commands provide system configuration, logging, and statistics functionality.
|
|
6
|
-
*
|
|
7
|
-
* Available System Commands:
|
|
8
|
-
* - /log [level] - Set or view log level
|
|
9
|
-
* - /config - Show current configuration
|
|
10
|
-
* - /stats - Show system statistics
|
|
11
|
-
* - /stream - Toggle streaming mode for LLM responses
|
|
12
|
-
*/
|
|
13
|
-
import type { CommandDefinition } from '../command-parser.js';
|
|
1
|
+
import { type CommandDefinition } from '../command-parser.js';
|
|
14
2
|
/**
|
|
15
3
|
* System commands for configuration and monitoring
|
|
16
4
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-commands.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/interactive-commands/system/system-commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"system-commands.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/interactive-commands/system/system-commands.ts"],"names":[],"mappings":"AAaA,OAAO,EAEH,KAAK,iBAAiB,EAGzB,MAAM,sBAAsB,CAAC;AAmB9B;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,iBAAiB,EAuN7C,CAAC"}
|
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
* System Commands Module
|
|
3
|
-
*
|
|
4
|
-
* This module defines system-level slash commands for the Dexto CLI interface.
|
|
5
|
-
* These commands provide system configuration, logging, and statistics functionality.
|
|
6
|
-
*
|
|
7
|
-
* Available System Commands:
|
|
8
|
-
* - /log [level] - Set or view log level
|
|
9
|
-
* - /config - Show current configuration
|
|
10
|
-
* - /stats - Show system statistics
|
|
11
|
-
* - /stream - Toggle streaming mode for LLM responses
|
|
12
|
-
*/
|
|
13
|
-
import chalk from 'chalk';
|
|
14
|
-
import { logger } from '@dexto/core';
|
|
1
|
+
import { overlayOnlyHandler, } from '../command-parser.js';
|
|
15
2
|
import { formatForInkCli } from '../utils/format-output.js';
|
|
16
3
|
import { CommandOutputHelper } from '../utils/command-output.js';
|
|
4
|
+
const validLevels = [
|
|
5
|
+
'error',
|
|
6
|
+
'warn',
|
|
7
|
+
'info',
|
|
8
|
+
'debug',
|
|
9
|
+
'silly',
|
|
10
|
+
];
|
|
11
|
+
const validLevelSet = new Set(validLevels);
|
|
12
|
+
const isLogLevel = (value) => validLevelSet.has(value);
|
|
17
13
|
/**
|
|
18
14
|
* System commands for configuration and monitoring
|
|
19
15
|
*/
|
|
@@ -24,50 +20,38 @@ export const systemCommands = [
|
|
|
24
20
|
usage: '/log [level]',
|
|
25
21
|
category: 'System',
|
|
26
22
|
aliases: [],
|
|
27
|
-
handler: async (args,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
23
|
+
handler: async (args, agent, ctx) => {
|
|
24
|
+
try {
|
|
25
|
+
const level = args[0];
|
|
26
|
+
if (!level) {
|
|
27
|
+
const currentLevel = agent.logger.getLevel();
|
|
28
|
+
const logFile = agent.logger.getLogFilePath();
|
|
29
|
+
const styledData = {
|
|
30
|
+
currentLevel,
|
|
31
|
+
logFile,
|
|
32
|
+
availableLevels: [...validLevels],
|
|
33
|
+
};
|
|
34
|
+
const fallbackLines = [
|
|
35
|
+
'Logging Configuration:',
|
|
36
|
+
` Current level: ${currentLevel}`,
|
|
37
|
+
logFile ? ` Log file: ${logFile}` : '',
|
|
38
|
+
` Available levels: ${validLevels.join(', ')}`,
|
|
39
|
+
' Use /log <level> to change level',
|
|
40
|
+
].filter(Boolean);
|
|
41
|
+
return CommandOutputHelper.styled('log-config', styledData, fallbackLines.join('\n'));
|
|
42
|
+
}
|
|
43
|
+
if (isLogLevel(level)) {
|
|
44
|
+
await agent.setLogLevel(level, ctx.sessionId ? { sessionId: ctx.sessionId } : undefined);
|
|
45
|
+
return formatForInkCli(`✅ Log level set to ${level}`);
|
|
38
46
|
}
|
|
39
|
-
console.log(chalk.gray('\n Available levels (from least to most verbose):'));
|
|
40
|
-
validLevels.forEach((lvl) => {
|
|
41
|
-
const isCurrent = lvl === currentLevel;
|
|
42
|
-
const marker = isCurrent ? chalk.green('▶') : ' ';
|
|
43
|
-
const levelText = isCurrent ? chalk.green.bold(lvl) : chalk.gray(lvl);
|
|
44
|
-
console.log(` ${marker} ${levelText}`);
|
|
45
|
-
});
|
|
46
|
-
console.log(chalk.gray('\n 💡 Use /log <level> to change level (e.g., /log debug)\n'));
|
|
47
|
-
const output = [
|
|
48
|
-
'\n📊 Logging Configuration:',
|
|
49
|
-
`Current level: ${currentLevel}`,
|
|
50
|
-
logFilePath ? `Log file: ${logFilePath}` : '',
|
|
51
|
-
'\nAvailable levels: error, warn, info, http, verbose, debug, silly',
|
|
52
|
-
'💡 Use /log <level> to change level',
|
|
53
|
-
]
|
|
54
|
-
.filter(Boolean)
|
|
55
|
-
.join('\n');
|
|
56
|
-
return formatForInkCli(output);
|
|
57
|
-
}
|
|
58
|
-
if (validLevels.includes(level)) {
|
|
59
|
-
logger.setLevel(level);
|
|
60
|
-
logger.info(`Log level set to ${level}`, null, 'green');
|
|
61
|
-
console.log(chalk.green(`✅ Log level changed to: ${chalk.bold(level)}`));
|
|
62
|
-
const output = `✅ Log level set to ${level}`;
|
|
63
|
-
return formatForInkCli(output);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
47
|
const errorMsg = `❌ Invalid log level: ${level}\nValid levels: ${validLevels.join(', ')}`;
|
|
67
|
-
console.log(chalk.red(`❌ Invalid log level: ${chalk.bold(level)}`));
|
|
68
|
-
console.log(chalk.gray(`Valid levels: ${validLevels.join(', ')}`));
|
|
69
48
|
return formatForInkCli(errorMsg);
|
|
70
49
|
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
const errorMsg = `Failed to update log level: ${error instanceof Error ? error.message : String(error)}`;
|
|
52
|
+
agent.logger.error(errorMsg);
|
|
53
|
+
return formatForInkCli(`❌ ${errorMsg}`);
|
|
54
|
+
}
|
|
71
55
|
},
|
|
72
56
|
},
|
|
73
57
|
{
|
|
@@ -75,35 +59,12 @@ export const systemCommands = [
|
|
|
75
59
|
description: 'Show current configuration',
|
|
76
60
|
usage: '/config',
|
|
77
61
|
category: 'System',
|
|
78
|
-
handler: async (_args, agent,
|
|
62
|
+
handler: async (_args, agent, ctx) => {
|
|
79
63
|
try {
|
|
80
64
|
const config = agent.getEffectiveConfig();
|
|
81
65
|
const servers = Object.keys(config.mcpServers || {});
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
try {
|
|
85
|
-
configFilePath = agent.getAgentFilePath();
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
// No config file path available
|
|
89
|
-
}
|
|
90
|
-
// Get enabled plugins
|
|
91
|
-
const pluginsEnabled = [];
|
|
92
|
-
if (config.plugins) {
|
|
93
|
-
// Check built-in plugins
|
|
94
|
-
if (config.plugins.contentPolicy?.enabled) {
|
|
95
|
-
pluginsEnabled.push('contentPolicy');
|
|
96
|
-
}
|
|
97
|
-
if (config.plugins.responseSanitizer?.enabled) {
|
|
98
|
-
pluginsEnabled.push('responseSanitizer');
|
|
99
|
-
}
|
|
100
|
-
// Check custom plugins
|
|
101
|
-
for (const plugin of config.plugins.custom || []) {
|
|
102
|
-
if (plugin.enabled) {
|
|
103
|
-
pluginsEnabled.push(plugin.name);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
66
|
+
const hooksEnabled = agent.services.hookManager.getHookNames();
|
|
67
|
+
const configFilePath = ctx.configFilePath ?? null;
|
|
107
68
|
// Build styled data
|
|
108
69
|
const styledData = {
|
|
109
70
|
configFilePath,
|
|
@@ -111,24 +72,25 @@ export const systemCommands = [
|
|
|
111
72
|
model: config.llm.model,
|
|
112
73
|
maxTokens: config.llm.maxOutputTokens ?? null,
|
|
113
74
|
temperature: config.llm.temperature ?? null,
|
|
114
|
-
|
|
75
|
+
permissionsMode: config.permissions.mode,
|
|
115
76
|
maxSessions: config.sessions?.maxSessions?.toString() || 'Default',
|
|
116
77
|
sessionTTL: config.sessions?.sessionTTL
|
|
117
78
|
? `${config.sessions.sessionTTL / 1000}s`
|
|
118
79
|
: 'Default',
|
|
119
80
|
mcpServers: servers,
|
|
120
81
|
promptsCount: config.prompts?.length || 0,
|
|
121
|
-
|
|
82
|
+
hooksEnabled,
|
|
122
83
|
};
|
|
123
84
|
// Build fallback text (no console.log - interferes with Ink rendering)
|
|
124
85
|
const fallbackLines = [
|
|
125
86
|
'Configuration:',
|
|
126
87
|
configFilePath ? ` Config: ${configFilePath}` : '',
|
|
127
88
|
` LLM: ${config.llm.provider} / ${config.llm.model}`,
|
|
128
|
-
`
|
|
89
|
+
` Permissions: ${styledData.permissionsMode}`,
|
|
129
90
|
` Sessions: max=${styledData.maxSessions}, ttl=${styledData.sessionTTL}`,
|
|
130
91
|
` MCP Servers: ${servers.length > 0 ? servers.join(', ') : 'none'}`,
|
|
131
92
|
` Prompts: ${styledData.promptsCount}`,
|
|
93
|
+
` Hooks: ${hooksEnabled.length > 0 ? hooksEnabled.join(', ') : 'none'}`,
|
|
132
94
|
].filter(Boolean);
|
|
133
95
|
return CommandOutputHelper.styled('config', styledData, fallbackLines.join('\n'));
|
|
134
96
|
}
|
|
@@ -216,4 +178,11 @@ export const systemCommands = [
|
|
|
216
178
|
return true;
|
|
217
179
|
},
|
|
218
180
|
},
|
|
181
|
+
{
|
|
182
|
+
name: 'sounds',
|
|
183
|
+
description: 'Configure sound notifications',
|
|
184
|
+
usage: '/sounds',
|
|
185
|
+
category: 'System',
|
|
186
|
+
handler: overlayOnlyHandler,
|
|
187
|
+
},
|
|
219
188
|
];
|
|
@@ -22,11 +22,11 @@ declare const PluginInstallCommandSchema: z.ZodObject<{
|
|
|
22
22
|
}, "strict", z.ZodTypeAny, {
|
|
23
23
|
path: string;
|
|
24
24
|
force: boolean;
|
|
25
|
-
scope: "local" | "
|
|
25
|
+
scope: "local" | "project" | "user";
|
|
26
26
|
}, {
|
|
27
27
|
path: string;
|
|
28
28
|
force?: boolean | undefined;
|
|
29
|
-
scope?: "local" | "
|
|
29
|
+
scope?: "local" | "project" | "user" | undefined;
|
|
30
30
|
}>;
|
|
31
31
|
declare const PluginUninstallCommandSchema: z.ZodObject<{
|
|
32
32
|
name: z.ZodString;
|
|
@@ -79,12 +79,12 @@ declare const MarketplaceInstallCommandSchema: z.ZodObject<{
|
|
|
79
79
|
force: z.ZodDefault<z.ZodBoolean>;
|
|
80
80
|
}, "strict", z.ZodTypeAny, {
|
|
81
81
|
force: boolean;
|
|
82
|
-
scope: "local" | "
|
|
82
|
+
scope: "local" | "project" | "user";
|
|
83
83
|
plugin: string;
|
|
84
84
|
}, {
|
|
85
85
|
plugin: string;
|
|
86
86
|
force?: boolean | undefined;
|
|
87
|
-
scope?: "local" | "
|
|
87
|
+
scope?: "local" | "project" | "user" | undefined;
|
|
88
88
|
}>;
|
|
89
89
|
export type PluginListCommandOptions = z.output<typeof PluginListCommandSchema>;
|
|
90
90
|
export type PluginListCommandOptionsInput = z.input<typeof PluginListCommandSchema>;
|
|
@@ -9,25 +9,15 @@ export interface SyncAgentsCommandOptions {
|
|
|
9
9
|
/** Minimal output - used when called from startup prompt */
|
|
10
10
|
quiet?: boolean;
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Mark sync as dismissed for current version
|
|
14
|
-
*/
|
|
15
|
-
export declare function markSyncDismissed(currentVersion: string): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Clear sync dismissed state (called after successful sync)
|
|
18
|
-
*/
|
|
19
|
-
export declare function clearSyncDismissed(): Promise<void>;
|
|
20
12
|
/**
|
|
21
13
|
* Quick check if any installed agents have updates available
|
|
22
14
|
*
|
|
23
15
|
* Used at CLI startup to prompt for sync without full command output.
|
|
24
|
-
* Returns true if at least one installed agent differs from bundled
|
|
25
|
-
* AND the user hasn't dismissed the prompt for this version.
|
|
16
|
+
* Returns true if at least one installed agent differs from bundled.
|
|
26
17
|
*
|
|
27
|
-
* @param currentVersion Current CLI version to check dismissal state
|
|
28
18
|
* @returns true if should prompt for sync
|
|
29
19
|
*/
|
|
30
|
-
export declare function shouldPromptForSync(
|
|
20
|
+
export declare function shouldPromptForSync(): Promise<boolean>;
|
|
31
21
|
/**
|
|
32
22
|
* Main handler for the sync-agents command
|
|
33
23
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-agents.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sync-agents.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mCAAmC;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"sync-agents.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sync-agents.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mCAAmC;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AA6LD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAyB5D;AAoDD;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiO9F"}
|
|
@@ -160,64 +160,16 @@ async function getAgentStatus(agentId, agentEntry) {
|
|
|
160
160
|
};
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
-
// Store sync dismissed state in cache directory
|
|
164
|
-
const SYNC_DISMISSED_PATH = getDextoGlobalPath('cache', 'sync-dismissed.json');
|
|
165
|
-
/**
|
|
166
|
-
* Check if sync was dismissed for current version
|
|
167
|
-
*/
|
|
168
|
-
async function wasSyncDismissed(currentVersion) {
|
|
169
|
-
try {
|
|
170
|
-
const content = await fs.readFile(SYNC_DISMISSED_PATH, 'utf-8');
|
|
171
|
-
const data = JSON.parse(content);
|
|
172
|
-
return data.version === currentVersion;
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
logger.debug(`Could not read sync dismissed state: ${error instanceof Error ? error.message : String(error)}`);
|
|
176
|
-
return false;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Mark sync as dismissed for current version
|
|
181
|
-
*/
|
|
182
|
-
export async function markSyncDismissed(currentVersion) {
|
|
183
|
-
try {
|
|
184
|
-
await fs.mkdir(path.dirname(SYNC_DISMISSED_PATH), { recursive: true });
|
|
185
|
-
await fs.writeFile(SYNC_DISMISSED_PATH, JSON.stringify({ version: currentVersion }));
|
|
186
|
-
}
|
|
187
|
-
catch (error) {
|
|
188
|
-
logger.debug(`Could not save sync dismissed state: ${error instanceof Error ? error.message : String(error)}`);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Clear sync dismissed state (called after successful sync)
|
|
193
|
-
*/
|
|
194
|
-
export async function clearSyncDismissed() {
|
|
195
|
-
try {
|
|
196
|
-
await fs.unlink(SYNC_DISMISSED_PATH);
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
// File might not exist - only log if it's a different error
|
|
200
|
-
if (error.code !== 'ENOENT') {
|
|
201
|
-
logger.debug(`Could not clear sync dismissed state: ${error instanceof Error ? error.message : String(error)}`);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
163
|
/**
|
|
206
164
|
* Quick check if any installed agents have updates available
|
|
207
165
|
*
|
|
208
166
|
* Used at CLI startup to prompt for sync without full command output.
|
|
209
|
-
* Returns true if at least one installed agent differs from bundled
|
|
210
|
-
* AND the user hasn't dismissed the prompt for this version.
|
|
167
|
+
* Returns true if at least one installed agent differs from bundled.
|
|
211
168
|
*
|
|
212
|
-
* @param currentVersion Current CLI version to check dismissal state
|
|
213
169
|
* @returns true if should prompt for sync
|
|
214
170
|
*/
|
|
215
|
-
export async function shouldPromptForSync(
|
|
171
|
+
export async function shouldPromptForSync() {
|
|
216
172
|
try {
|
|
217
|
-
// Check if user already dismissed for this version
|
|
218
|
-
if (await wasSyncDismissed(currentVersion)) {
|
|
219
|
-
return false;
|
|
220
|
-
}
|
|
221
173
|
const bundledAgents = loadBundledRegistryAgents();
|
|
222
174
|
const installedAgentIds = await getInstalledAgentIds();
|
|
223
175
|
for (const agentId of installedAgentIds) {
|
|
@@ -13,8 +13,10 @@ import type { SoundNotificationService } from './utils/soundNotification.js';
|
|
|
13
13
|
interface InkCLIProps {
|
|
14
14
|
agent: DextoAgent;
|
|
15
15
|
initialSessionId: string | null;
|
|
16
|
+
initialPrompt?: string | undefined;
|
|
16
17
|
startupInfo: StartupInfo;
|
|
17
18
|
soundService: SoundNotificationService | null;
|
|
19
|
+
configFilePath: string | null;
|
|
18
20
|
}
|
|
19
21
|
/**
|
|
20
22
|
* Modern CLI interface using React Ink
|
|
@@ -24,7 +26,7 @@ interface InkCLIProps {
|
|
|
24
26
|
* - KeypressProvider for unified keyboard input
|
|
25
27
|
* - MouseProvider (only in alternate buffer mode)
|
|
26
28
|
*/
|
|
27
|
-
export declare function InkCLIRefactored({ agent, initialSessionId, startupInfo, soundService, }: InkCLIProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export declare function InkCLIRefactored({ agent, initialSessionId, initialPrompt, startupInfo, soundService, configFilePath, }: InkCLIProps): import("react/jsx-runtime").JSX.Element;
|
|
28
30
|
/**
|
|
29
31
|
* Options for starting the Ink CLI
|
|
30
32
|
*/
|
|
@@ -37,6 +39,10 @@ export interface InkCLIOptions {
|
|
|
37
39
|
} | undefined;
|
|
38
40
|
/** True if installed agents differ from bundled and user should sync */
|
|
39
41
|
needsAgentSync?: boolean | undefined;
|
|
42
|
+
/** Source agent config file path (if available) */
|
|
43
|
+
configFilePath?: string | null | undefined;
|
|
44
|
+
/** If provided, auto-submits this prompt once the UI is ready */
|
|
45
|
+
initialPrompt?: string | undefined;
|
|
40
46
|
}
|
|
41
47
|
/**
|
|
42
48
|
* Start the modern Ink-based CLI
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InkCLIRefactored.d.ts","sourceRoot":"","sources":["../../../src/cli/ink-cli/InkCLIRefactored.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAWpD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"InkCLIRefactored.d.ts","sourceRoot":"","sources":["../../../src/cli/ink-cli/InkCLIRefactored.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAWpD,OAAO,KAAK,EAAe,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAuB1F,UAAU,WAAW;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC9C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAwDD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAC7B,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,GACjB,EAAE,WAAW,2CAkBb;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,kDAAkD;IAClD,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACpF,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACvC,KAAK,EAAE,UAAU,EACjB,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,OAAO,GAAE,aAAkB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA+Qf"}
|