dexto 1.1.10 → 1.2.0
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 +222 -84
- package/dist/agents/agent-registry.json +39 -1
- package/dist/agents/agent-template.yml +1 -1
- package/dist/agents/coding-agent/README.md +188 -0
- package/dist/agents/coding-agent/coding-agent.yml +203 -0
- package/dist/agents/database-agent/database-agent.yml +44 -2
- package/dist/agents/default-agent.yml +137 -13
- package/dist/agents/github-agent/github-agent.yml +42 -0
- package/dist/agents/image-editor-agent/image-editor-agent.yml +9 -2
- package/dist/agents/music-agent/README.md +1 -1
- package/dist/agents/music-agent/music-agent.yml +36 -2
- package/dist/agents/nano-banana-agent/nano-banana-agent.yml +35 -1
- package/dist/agents/podcast-agent/README.md +1 -1
- package/dist/agents/podcast-agent/podcast-agent.yml +37 -3
- package/dist/agents/product-name-researcher/product-name-researcher.yml +37 -1
- package/dist/agents/sora-video-agent/README.md +122 -0
- package/dist/agents/sora-video-agent/sora-video-agent.yml +98 -0
- package/dist/agents/talk2pdf-agent/talk2pdf-agent.yml +17 -2
- package/dist/agents/triage-demo/README.md +6 -6
- package/dist/agents/triage-demo/billing-agent.yml +1 -1
- package/dist/agents/triage-demo/escalation-agent.yml +1 -1
- package/dist/agents/triage-demo/product-info-agent.yml +1 -1
- package/dist/agents/triage-demo/technical-support-agent.yml +1 -1
- package/dist/agents/triage-demo/triage-agent.yml +16 -1
- package/dist/analytics/wrapper.d.ts.map +1 -1
- package/dist/analytics/wrapper.js +5 -3
- package/dist/api/a2a.d.ts +2 -2
- package/dist/api/a2a.d.ts.map +1 -1
- package/dist/api/a2a.js +3 -2
- package/dist/api/mcp/mcp_handler.d.ts +3 -3
- package/dist/api/mcp/mcp_handler.d.ts.map +1 -1
- package/dist/api/mcp/mcp_handler.js +7 -4
- package/dist/api/mcp/tool-aggregation-handler.d.ts.map +1 -1
- package/dist/api/mcp/tool-aggregation-handler.js +34 -42
- package/dist/api/memory/memory-handler.d.ts +18 -0
- package/dist/api/memory/memory-handler.d.ts.map +1 -0
- package/dist/api/memory/memory-handler.js +137 -0
- package/dist/api/middleware/errorHandler.d.ts.map +1 -1
- package/dist/api/middleware/errorHandler.js +2 -0
- package/dist/api/server.d.ts +2 -2
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +1129 -257
- package/dist/api/webhook-subscriber.d.ts.map +1 -1
- package/dist/api/webhook-subscriber.js +2 -1
- package/dist/api/websocket-subscriber.d.ts.map +1 -1
- package/dist/api/websocket-subscriber.js +67 -10
- package/dist/cli/cli-subscriber.d.ts +2 -1
- package/dist/cli/cli-subscriber.d.ts.map +1 -1
- package/dist/cli/cli-subscriber.js +11 -3
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +1 -0
- package/dist/cli/commands/install.d.ts +3 -3
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +223 -41
- package/dist/cli/commands/interactive-commands/model/model-commands.js +2 -2
- package/dist/cli/commands/interactive-commands/prompt-commands.d.ts +8 -1
- package/dist/cli/commands/interactive-commands/prompt-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/prompt-commands.js +252 -4
- package/dist/cli/commands/list-agents.d.ts.map +1 -1
- package/dist/cli/commands/list-agents.js +22 -3
- package/dist/cli/commands/setup.d.ts +4 -4
- package/dist/cli/commands/uninstall.d.ts +1 -1
- package/dist/cli/tool-confirmation/cli-confirmation-handler.d.ts +36 -7
- package/dist/cli/tool-confirmation/cli-confirmation-handler.d.ts.map +1 -1
- package/dist/cli/tool-confirmation/cli-confirmation-handler.js +314 -34
- package/dist/cli/utils/options.js +2 -2
- package/dist/index.js +117 -64
- package/dist/webui/.next/standalone/.next/static/chunks/419-6d449dcb2b056299.js +1 -0
- package/dist/webui/.next/standalone/.next/static/chunks/614-3519f8a6051e0088.js +1 -0
- package/dist/webui/.next/standalone/.next/static/chunks/656-5a9f6405badf66a8.js +25 -0
- package/dist/webui/.next/standalone/.next/static/chunks/765-755286dc586b1a51.js +1 -0
- package/dist/webui/.next/standalone/.next/static/chunks/804-f40df92a3adffcc0.js +1 -0
- package/dist/webui/.next/standalone/.next/static/chunks/854-232126f3c77e6c0b.js +1 -0
- package/dist/webui/.next/standalone/.next/static/chunks/app/chat/[sessionId]/page-a695b09e6bac5274.js +1 -0
- package/dist/webui/.next/standalone/.next/static/chunks/app/layout-f4a6ee5a028899d1.js +1 -0
- package/dist/webui/.next/standalone/.next/static/chunks/app/page-d1f127a0cac96246.js +1 -0
- package/dist/webui/.next/standalone/.next/static/chunks/app/playground/page-6f8d2abe76e51dfc.js +1 -0
- package/dist/webui/.next/standalone/.next/static/chunks/main-7decd42f62688419.js +1 -0
- package/dist/webui/.next/standalone/.next/static/chunks/{webpack-7c234e7e7e272295.js → webpack-7229fd0786f0483c.js} +1 -1
- package/dist/webui/.next/standalone/.next/static/css/c3c26ec984df1deb.css +1 -0
- package/dist/webui/.next/standalone/.next/static/css/de70bee13400563f.css +1 -0
- package/dist/webui/.next/standalone/.next/static/uqfH8SY_uhwdc0ZkpMwCO/_buildManifest.js +1 -0
- package/dist/webui/.next/standalone/package.json +7 -2
- package/dist/webui/.next/standalone/packages/webui/.next/BUILD_ID +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/app-build-manifest.json +30 -15
- package/dist/webui/.next/standalone/packages/webui/.next/app-path-routes-manifest.json +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/build-manifest.json +7 -7
- package/dist/webui/.next/standalone/packages/webui/.next/prerender-manifest.json +3 -3
- package/dist/webui/.next/standalone/packages/webui/.next/required-server-files.json +1 -11
- package/dist/webui/.next/standalone/packages/webui/.next/routes-manifest.json +11 -8
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/_not-found/page.js +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/chat/[sessionId]/page.js +2 -0
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/chat/[sessionId]/page.js.nft.json +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/chat/[sessionId]/page_client-reference-manifest.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/page.js +2 -11
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/page.js.nft.json +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/playground/page.js +4 -8
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/playground/page.js.nft.json +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/server/app/playground/page_client-reference-manifest.js +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/server/app-paths-manifest.json +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/1.js +12 -0
- package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/102.js +25 -0
- package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/383.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/{619.js → 426.js} +2 -2
- package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/43.js +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/985.js +5 -0
- package/dist/webui/.next/standalone/packages/webui/.next/server/middleware-build-manifest.js +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/server/pages/500.html +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/server/server-reference-manifest.json +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/419-6d449dcb2b056299.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/614-3519f8a6051e0088.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/656-5a9f6405badf66a8.js +25 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/765-755286dc586b1a51.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/804-f40df92a3adffcc0.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/854-232126f3c77e6c0b.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/chat/[sessionId]/page-a695b09e6bac5274.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/layout-f4a6ee5a028899d1.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/page-d1f127a0cac96246.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/playground/page-6f8d2abe76e51dfc.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/main-7decd42f62688419.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/{webpack-7c234e7e7e272295.js → webpack-7229fd0786f0483c.js} +1 -1
- package/dist/webui/.next/standalone/packages/webui/.next/static/css/c3c26ec984df1deb.css +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/css/de70bee13400563f.css +1 -0
- package/dist/webui/.next/standalone/packages/webui/.next/static/uqfH8SY_uhwdc0ZkpMwCO/_buildManifest.js +1 -0
- package/dist/webui/.next/standalone/packages/webui/package.json +11 -4
- package/dist/webui/.next/standalone/packages/webui/server.js +1 -1
- package/dist/webui/.next/static/chunks/419-6d449dcb2b056299.js +1 -0
- package/dist/webui/.next/static/chunks/614-3519f8a6051e0088.js +1 -0
- package/dist/webui/.next/static/chunks/656-5a9f6405badf66a8.js +25 -0
- package/dist/webui/.next/static/chunks/765-755286dc586b1a51.js +1 -0
- package/dist/webui/.next/static/chunks/804-f40df92a3adffcc0.js +1 -0
- package/dist/webui/.next/static/chunks/854-232126f3c77e6c0b.js +1 -0
- package/dist/webui/.next/static/chunks/app/chat/[sessionId]/page-a695b09e6bac5274.js +1 -0
- package/dist/webui/.next/static/chunks/app/layout-f4a6ee5a028899d1.js +1 -0
- package/dist/webui/.next/static/chunks/app/page-d1f127a0cac96246.js +1 -0
- package/dist/webui/.next/static/chunks/app/playground/page-6f8d2abe76e51dfc.js +1 -0
- package/dist/webui/.next/static/chunks/main-7decd42f62688419.js +1 -0
- package/dist/webui/.next/static/chunks/{webpack-7c234e7e7e272295.js → webpack-7229fd0786f0483c.js} +1 -1
- package/dist/webui/.next/static/css/c3c26ec984df1deb.css +1 -0
- package/dist/webui/.next/static/css/de70bee13400563f.css +1 -0
- package/dist/webui/.next/static/uqfH8SY_uhwdc0ZkpMwCO/_buildManifest.js +1 -0
- package/dist/webui/package.json +11 -4
- package/package.json +5 -4
- package/dist/webui/.next/standalone/.next/static/PvkEd_BO6ZXxX99T_gUvs/_buildManifest.js +0 -1
- package/dist/webui/.next/standalone/.next/static/chunks/179-78abc2eacbc41da9.js +0 -1
- package/dist/webui/.next/standalone/.next/static/chunks/442-b1916bec348454b3.js +0 -1
- package/dist/webui/.next/standalone/.next/static/chunks/544-c4a8f278ed1a25d7.js +0 -1
- package/dist/webui/.next/standalone/.next/static/chunks/854-2a6d5a5297a15d52.js +0 -1
- package/dist/webui/.next/standalone/.next/static/chunks/app/layout-dde711766eda096b.js +0 -1
- package/dist/webui/.next/standalone/.next/static/chunks/app/page-5e94d5a49dc718d0.js +0 -1
- package/dist/webui/.next/standalone/.next/static/chunks/app/playground/page-9ae40e0b219583e3.js +0 -1
- package/dist/webui/.next/standalone/.next/static/chunks/main-b65ece3506a2355c.js +0 -1
- package/dist/webui/.next/standalone/.next/static/css/045cc65741e38fbd.css +0 -3
- package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/549.js +0 -1
- package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/950.js +0 -5
- package/dist/webui/.next/standalone/packages/webui/.next/static/PvkEd_BO6ZXxX99T_gUvs/_buildManifest.js +0 -1
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/179-78abc2eacbc41da9.js +0 -1
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/442-b1916bec348454b3.js +0 -1
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/544-c4a8f278ed1a25d7.js +0 -1
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/854-2a6d5a5297a15d52.js +0 -1
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/layout-dde711766eda096b.js +0 -1
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/page-5e94d5a49dc718d0.js +0 -1
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/playground/page-9ae40e0b219583e3.js +0 -1
- package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/main-b65ece3506a2355c.js +0 -1
- package/dist/webui/.next/standalone/packages/webui/.next/static/css/045cc65741e38fbd.css +0 -3
- package/dist/webui/.next/static/PvkEd_BO6ZXxX99T_gUvs/_buildManifest.js +0 -1
- package/dist/webui/.next/static/chunks/179-78abc2eacbc41da9.js +0 -1
- package/dist/webui/.next/static/chunks/442-b1916bec348454b3.js +0 -1
- package/dist/webui/.next/static/chunks/544-c4a8f278ed1a25d7.js +0 -1
- package/dist/webui/.next/static/chunks/854-2a6d5a5297a15d52.js +0 -1
- package/dist/webui/.next/static/chunks/app/layout-dde711766eda096b.js +0 -1
- package/dist/webui/.next/static/chunks/app/page-5e94d5a49dc718d0.js +0 -1
- package/dist/webui/.next/static/chunks/app/playground/page-9ae40e0b219583e3.js +0 -1
- package/dist/webui/.next/static/chunks/main-b65ece3506a2355c.js +0 -1
- package/dist/webui/.next/static/css/045cc65741e38fbd.css +0 -3
- /package/dist/webui/.next/standalone/.next/static/{PvkEd_BO6ZXxX99T_gUvs → uqfH8SY_uhwdc0ZkpMwCO}/_ssgManifest.js +0 -0
- /package/dist/webui/.next/standalone/packages/webui/.next/static/{PvkEd_BO6ZXxX99T_gUvs → uqfH8SY_uhwdc0ZkpMwCO}/_ssgManifest.js +0 -0
- /package/dist/webui/.next/static/{PvkEd_BO6ZXxX99T_gUvs → uqfH8SY_uhwdc0ZkpMwCO}/_ssgManifest.js +0 -0
|
@@ -5,18 +5,21 @@
|
|
|
5
5
|
* These commands provide functionality for viewing and managing system prompts.
|
|
6
6
|
*
|
|
7
7
|
* Available Prompt Commands:
|
|
8
|
-
* - /
|
|
8
|
+
* - /sysprompt - Display the current system prompt
|
|
9
|
+
* - /prompts - List all available prompts (MCP + internal)
|
|
10
|
+
* - /<prompt-name> [args] - Direct prompt execution (auto-generated for each prompt)
|
|
9
11
|
*/
|
|
10
12
|
import chalk from 'chalk';
|
|
11
|
-
import { logger } from '@dexto/core';
|
|
13
|
+
import { logger, flattenPromptResult } from '@dexto/core';
|
|
14
|
+
// Avoid depending on core types to keep CLI typecheck independent of build
|
|
12
15
|
/**
|
|
13
16
|
* Prompt management commands
|
|
14
17
|
*/
|
|
15
18
|
export const promptCommands = [
|
|
16
19
|
{
|
|
17
|
-
name: '
|
|
20
|
+
name: 'sysprompt',
|
|
18
21
|
description: 'Display the current system prompt',
|
|
19
|
-
usage: '/
|
|
22
|
+
usage: '/sysprompt',
|
|
20
23
|
category: 'Prompt Management',
|
|
21
24
|
handler: async (args, agent) => {
|
|
22
25
|
try {
|
|
@@ -33,4 +36,249 @@ export const promptCommands = [
|
|
|
33
36
|
return true;
|
|
34
37
|
},
|
|
35
38
|
},
|
|
39
|
+
{
|
|
40
|
+
name: 'prompts',
|
|
41
|
+
description: 'List all available prompts (MCP + internal)',
|
|
42
|
+
usage: '/prompts',
|
|
43
|
+
category: 'Prompt Management',
|
|
44
|
+
handler: async (_args, agent) => {
|
|
45
|
+
try {
|
|
46
|
+
const prompts = await agent.listPrompts();
|
|
47
|
+
const promptNames = Object.keys(prompts || {});
|
|
48
|
+
if (promptNames.length === 0) {
|
|
49
|
+
console.log(chalk.yellow('\n⚠️ No prompts available'));
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
console.log(chalk.bold.green('\n📝 Available Prompts:\n'));
|
|
53
|
+
// Group by source
|
|
54
|
+
const mcpPrompts = [];
|
|
55
|
+
const filePrompts = [];
|
|
56
|
+
const starterPrompts = [];
|
|
57
|
+
const customPrompts = [];
|
|
58
|
+
for (const [name, info] of Object.entries(prompts)) {
|
|
59
|
+
if (info.source === 'mcp') {
|
|
60
|
+
mcpPrompts.push(name);
|
|
61
|
+
}
|
|
62
|
+
else if (info.source === 'file') {
|
|
63
|
+
filePrompts.push(name);
|
|
64
|
+
}
|
|
65
|
+
else if (info.source === 'starter') {
|
|
66
|
+
starterPrompts.push(name);
|
|
67
|
+
}
|
|
68
|
+
else if (info.source === 'custom') {
|
|
69
|
+
customPrompts.push(name);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (mcpPrompts.length > 0) {
|
|
73
|
+
console.log(chalk.cyan('🔗 MCP Prompts:'));
|
|
74
|
+
mcpPrompts.forEach((name) => {
|
|
75
|
+
const info = prompts[name];
|
|
76
|
+
if (info) {
|
|
77
|
+
// Only show title if it's different from name
|
|
78
|
+
const title = info.title && info.title !== name ? ` (${info.title})` : '';
|
|
79
|
+
const desc = info.description ? ` - ${info.description}` : '';
|
|
80
|
+
const args = info.arguments && info.arguments.length > 0
|
|
81
|
+
? ` [args: ${info.arguments
|
|
82
|
+
.map((a) => `${a.name}${a.required ? '*' : ''}`)
|
|
83
|
+
.join(', ')}]`
|
|
84
|
+
: '';
|
|
85
|
+
console.log(` ${chalk.blue(name)}${chalk.yellow(title)}${chalk.dim(desc)}${chalk.gray(args)}`);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
console.log();
|
|
89
|
+
}
|
|
90
|
+
if (filePrompts.length > 0) {
|
|
91
|
+
console.log(chalk.magenta('📁 File Prompts:'));
|
|
92
|
+
filePrompts.forEach((name) => {
|
|
93
|
+
const info = prompts[name];
|
|
94
|
+
if (info) {
|
|
95
|
+
// Only show title if it's different from name
|
|
96
|
+
const title = info.title && info.title !== name ? ` (${info.title})` : '';
|
|
97
|
+
const desc = info.description ? ` - ${info.description}` : '';
|
|
98
|
+
console.log(` ${chalk.blue(name)}${chalk.yellow(title)}${chalk.dim(desc)}`);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
console.log();
|
|
102
|
+
}
|
|
103
|
+
if (starterPrompts.length > 0) {
|
|
104
|
+
console.log(chalk.green('⭐ Starter Prompts:'));
|
|
105
|
+
starterPrompts.forEach((name) => {
|
|
106
|
+
const info = prompts[name];
|
|
107
|
+
if (info) {
|
|
108
|
+
// Only show title if it's different from name
|
|
109
|
+
const title = info.title && info.title !== name ? ` (${info.title})` : '';
|
|
110
|
+
const desc = info.description ? ` - ${info.description}` : '';
|
|
111
|
+
console.log(` ${chalk.blue(name)}${chalk.yellow(title)}${chalk.dim(desc)}`);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
console.log();
|
|
115
|
+
}
|
|
116
|
+
if (customPrompts.length > 0) {
|
|
117
|
+
console.log(chalk.greenBright('✨ Custom Prompts:'));
|
|
118
|
+
customPrompts.forEach((name) => {
|
|
119
|
+
const info = prompts[name];
|
|
120
|
+
if (info) {
|
|
121
|
+
// Only show title if it's different from name
|
|
122
|
+
const title = info.title && info.title !== name ? ` (${info.title})` : '';
|
|
123
|
+
const desc = info.description ? ` - ${info.description}` : '';
|
|
124
|
+
console.log(` ${chalk.blue(name)}${chalk.yellow(title)}${chalk.dim(desc)}`);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
console.log();
|
|
128
|
+
}
|
|
129
|
+
console.log(chalk.dim(`Total: ${promptNames.length} prompts`));
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
console.error(chalk.red(`Error listing prompts: ${error instanceof Error ? error.message : String(error)}`));
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
// TODO: (355) USER TO CHECK: Nit: rename to 'use prompt'?
|
|
140
|
+
// https://github.com/truffle-ai/dexto/pull/355#discussion_r2412938399
|
|
141
|
+
name: 'use',
|
|
142
|
+
description: 'Use a specific prompt with optional arguments',
|
|
143
|
+
usage: '/<prompt-name> [args]',
|
|
144
|
+
category: 'Prompt Management',
|
|
145
|
+
handler: async (args, agent) => {
|
|
146
|
+
try {
|
|
147
|
+
if (args.length === 0) {
|
|
148
|
+
console.log(chalk.red('❌ Please specify a prompt name'));
|
|
149
|
+
console.log(chalk.dim('Usage: /<prompt-name> [args]'));
|
|
150
|
+
console.log(chalk.dim('Example: /code-review language=javascript code="console.log(\'hello\')"'));
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
const promptName = args[0];
|
|
154
|
+
const promptArgs = args.slice(1);
|
|
155
|
+
// Check if prompt exists
|
|
156
|
+
if (!promptName || !(await agent.hasPrompt(promptName))) {
|
|
157
|
+
console.log(chalk.red(`❌ Prompt '${promptName}' not found`));
|
|
158
|
+
console.log(chalk.dim('Use /prompts to see available prompts'));
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
const { argMap, context } = splitPromptArguments(promptArgs);
|
|
162
|
+
console.log(chalk.cyan(`🤖 Using prompt: ${promptName}`));
|
|
163
|
+
if (Object.keys(argMap).length > 0) {
|
|
164
|
+
console.log(chalk.dim(`Arguments: ${JSON.stringify(argMap)}`));
|
|
165
|
+
}
|
|
166
|
+
if (context) {
|
|
167
|
+
console.log(chalk.dim(`Context: ${context}`));
|
|
168
|
+
}
|
|
169
|
+
const result = await agent.getPrompt(promptName, argMap);
|
|
170
|
+
const flattened = flattenPromptResult(result);
|
|
171
|
+
if (flattened.resourceUris.length > 0) {
|
|
172
|
+
console.log(chalk.dim(`Resources: ${flattened.resourceUris.map((uri) => `@<${uri}>`).join(', ')}`));
|
|
173
|
+
}
|
|
174
|
+
const finalText = appendContext(flattened.text, context);
|
|
175
|
+
if (finalText.trim()) {
|
|
176
|
+
await agent.run(finalText.trim());
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
console.log(chalk.yellow(`⚠️ Prompt '${promptName}' returned no content`));
|
|
180
|
+
}
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
185
|
+
logger.error(`Failed to use prompt: ${errorMessage}`);
|
|
186
|
+
if (errorMessage.includes('not found')) {
|
|
187
|
+
console.log(chalk.red(`❌ Prompt not found. Try running /prompts to see available prompts.`));
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
console.log(chalk.red(`❌ Error: ${errorMessage}`));
|
|
191
|
+
}
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
},
|
|
36
196
|
];
|
|
197
|
+
/**
|
|
198
|
+
* Create a dynamic command definition from a prompt
|
|
199
|
+
*/
|
|
200
|
+
function createPromptCommand(promptInfo) {
|
|
201
|
+
return {
|
|
202
|
+
name: promptInfo.name,
|
|
203
|
+
description: promptInfo.description || `Execute ${promptInfo.name} prompt`,
|
|
204
|
+
usage: `/${promptInfo.name} [context]`,
|
|
205
|
+
category: 'Dynamic Prompts',
|
|
206
|
+
handler: async (args, agent) => {
|
|
207
|
+
try {
|
|
208
|
+
const { argMap, context: contextString } = splitPromptArguments(args);
|
|
209
|
+
if (Object.keys(argMap).length > 0) {
|
|
210
|
+
console.log(chalk.cyan(`🤖 Executing prompt: ${promptInfo.name}`));
|
|
211
|
+
console.log(chalk.dim(`Explicit arguments: ${JSON.stringify(argMap)}`));
|
|
212
|
+
}
|
|
213
|
+
else if (contextString) {
|
|
214
|
+
console.log(chalk.cyan(`🤖 Executing prompt: ${promptInfo.name}`));
|
|
215
|
+
console.log(chalk.dim(`Context: ${contextString} (LLM will extrapolate template variables)`));
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
console.log(chalk.cyan(`🤖 Executing prompt: ${promptInfo.name}`));
|
|
219
|
+
console.log(chalk.dim('No arguments provided - LLM will extrapolate from context'));
|
|
220
|
+
}
|
|
221
|
+
const result = await agent.getPrompt(promptInfo.name, argMap);
|
|
222
|
+
const flattened = flattenPromptResult(result);
|
|
223
|
+
if (flattened.resourceUris.length > 0) {
|
|
224
|
+
console.log(chalk.dim(`Resources: ${flattened.resourceUris.map((uri) => `@<${uri}>`).join(', ')}`));
|
|
225
|
+
}
|
|
226
|
+
const finalText = appendContext(flattened.text, contextString);
|
|
227
|
+
if (finalText.trim()) {
|
|
228
|
+
await agent.run(finalText.trim());
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
console.log(chalk.yellow(`⚠️ Prompt '${promptInfo.name}' returned no content`));
|
|
232
|
+
}
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
237
|
+
logger.error(`Failed to execute prompt command '${promptInfo.name}': ${errorMessage}`);
|
|
238
|
+
console.log(chalk.red(`❌ Error executing prompt '${promptInfo.name}': ${errorMessage}`));
|
|
239
|
+
return true;
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Get all dynamic prompt commands based on available prompts
|
|
246
|
+
*/
|
|
247
|
+
export async function getDynamicPromptCommands(agent) {
|
|
248
|
+
try {
|
|
249
|
+
const prompts = await agent.listPrompts();
|
|
250
|
+
return Object.values(prompts).map(createPromptCommand);
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
logger.error(`Failed to get dynamic prompt commands: ${error instanceof Error ? error.message : String(error)}`);
|
|
254
|
+
return [];
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
function splitPromptArguments(args) {
|
|
258
|
+
const map = {};
|
|
259
|
+
const contextParts = [];
|
|
260
|
+
for (const arg of args) {
|
|
261
|
+
const equalsIndex = arg.indexOf('=');
|
|
262
|
+
if (equalsIndex > 0) {
|
|
263
|
+
const key = arg.slice(0, equalsIndex).trim();
|
|
264
|
+
const value = arg.slice(equalsIndex + 1);
|
|
265
|
+
if (key.length > 0) {
|
|
266
|
+
map[key] = value;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else if (arg.trim().length > 0) {
|
|
270
|
+
contextParts.push(arg);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
const context = contextParts.length > 0 ? contextParts.join(' ') : undefined;
|
|
274
|
+
return { argMap: map, context };
|
|
275
|
+
}
|
|
276
|
+
function appendContext(text, context) {
|
|
277
|
+
if (!context || context.trim().length === 0) {
|
|
278
|
+
return text ?? '';
|
|
279
|
+
}
|
|
280
|
+
if (!text || text.trim().length === 0) {
|
|
281
|
+
return context;
|
|
282
|
+
}
|
|
283
|
+
return `${text.trim()}\n\n${context}`;
|
|
284
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-agents.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list-agents.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,QAAA,MAAM,uBAAuB;;;;;;;;;;;;EAMhB,CAAC;AAEd,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAChF,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"list-agents.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list-agents.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,QAAA,MAAM,uBAAuB;;;;;;;;;;;;EAMhB,CAAC;AAEd,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAChF,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AA0HpF;;GAEG;AACH,wBAAsB,uBAAuB,CACzC,OAAO,EAAE,6BAA6B,GACvC,OAAO,CAAC,IAAI,CAAC,CAiIf"}
|
|
@@ -93,6 +93,7 @@ function getAvailableAgents() {
|
|
|
93
93
|
description: data.description,
|
|
94
94
|
author: data.author,
|
|
95
95
|
tags: data.tags,
|
|
96
|
+
type: data.type,
|
|
96
97
|
}))
|
|
97
98
|
.sort((a, b) => a.name.localeCompare(b.name));
|
|
98
99
|
}
|
|
@@ -150,9 +151,27 @@ export async function handleListAgentsCommand(options) {
|
|
|
150
151
|
// Show available agents (not installed)
|
|
151
152
|
if (showAvailable) {
|
|
152
153
|
const availableNotInstalled = availableAgents.filter((available) => !installedAgents.some((installed) => installed.name === available.name));
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
const builtinAgents = availableNotInstalled.filter((a) => a.type === 'builtin');
|
|
155
|
+
const customAgents = availableNotInstalled.filter((a) => a.type === 'custom');
|
|
156
|
+
if (builtinAgents.length > 0) {
|
|
157
|
+
console.log(chalk.blue('📋 Builtin Agents Available to Install:'));
|
|
158
|
+
for (const agent of builtinAgents) {
|
|
159
|
+
if (validated.verbose) {
|
|
160
|
+
console.log(` ${chalk.bold(agent.name)}`);
|
|
161
|
+
console.log(` ${chalk.gray(agent.description)}`);
|
|
162
|
+
console.log(` ${chalk.gray('Author:')} ${agent.author}`);
|
|
163
|
+
console.log(` ${chalk.gray('Tags:')} ${agent.tags.join(', ')}`);
|
|
164
|
+
console.log();
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
console.log(` • ${chalk.bold(agent.name)} - ${agent.description}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
console.log();
|
|
171
|
+
}
|
|
172
|
+
if (customAgents.length > 0) {
|
|
173
|
+
console.log(chalk.magenta('🔧 Custom Agents Available:'));
|
|
174
|
+
for (const agent of customAgents) {
|
|
156
175
|
if (validated.verbose) {
|
|
157
176
|
console.log(` ${chalk.bold(agent.name)}`);
|
|
158
177
|
console.log(` ${chalk.gray(agent.description)}`);
|
|
@@ -7,28 +7,28 @@ declare const SetupCommandSchema: z.ZodEffects<z.ZodObject<{
|
|
|
7
7
|
force: z.ZodDefault<z.ZodBoolean>;
|
|
8
8
|
}, "strict", z.ZodTypeAny, {
|
|
9
9
|
interactive: boolean;
|
|
10
|
-
defaultAgent: string;
|
|
11
10
|
force: boolean;
|
|
11
|
+
defaultAgent: string;
|
|
12
12
|
model?: string | undefined;
|
|
13
13
|
provider?: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | undefined;
|
|
14
14
|
}, {
|
|
15
15
|
interactive?: boolean | undefined;
|
|
16
16
|
model?: string | undefined;
|
|
17
17
|
provider?: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | undefined;
|
|
18
|
-
defaultAgent?: string | undefined;
|
|
19
18
|
force?: boolean | undefined;
|
|
19
|
+
defaultAgent?: string | undefined;
|
|
20
20
|
}>, {
|
|
21
21
|
interactive: boolean;
|
|
22
|
-
defaultAgent: string;
|
|
23
22
|
force: boolean;
|
|
23
|
+
defaultAgent: string;
|
|
24
24
|
model?: string | undefined;
|
|
25
25
|
provider?: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | undefined;
|
|
26
26
|
}, {
|
|
27
27
|
interactive?: boolean | undefined;
|
|
28
28
|
model?: string | undefined;
|
|
29
29
|
provider?: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | undefined;
|
|
30
|
-
defaultAgent?: string | undefined;
|
|
31
30
|
force?: boolean | undefined;
|
|
31
|
+
defaultAgent?: string | undefined;
|
|
32
32
|
}>;
|
|
33
33
|
export type CLISetupOptions = z.output<typeof SetupCommandSchema>;
|
|
34
34
|
export type CLISetupOptionsInput = z.input<typeof SetupCommandSchema>;
|
|
@@ -1,24 +1,53 @@
|
|
|
1
1
|
import { AgentEventBus } from '@dexto/core';
|
|
2
2
|
import { EventSubscriber } from '../../api/types.js';
|
|
3
3
|
/**
|
|
4
|
-
* CLI-specific subscriber for
|
|
5
|
-
* Implements EventSubscriber pattern to listen to AgentEventBus for
|
|
4
|
+
* CLI-specific subscriber for approval events
|
|
5
|
+
* Implements EventSubscriber pattern to listen to AgentEventBus for approval requests
|
|
6
6
|
*/
|
|
7
7
|
export declare class CLIToolConfirmationSubscriber implements EventSubscriber {
|
|
8
8
|
private agentEventBus?;
|
|
9
9
|
constructor();
|
|
10
10
|
/**
|
|
11
|
-
* Subscribe to
|
|
11
|
+
* Subscribe to approval events on the AgentEventBus
|
|
12
12
|
*/
|
|
13
13
|
subscribe(eventBus: AgentEventBus): void;
|
|
14
14
|
/**
|
|
15
|
-
* Handle
|
|
15
|
+
* Handle approval request events from the AgentEventBus
|
|
16
16
|
*/
|
|
17
|
-
private
|
|
17
|
+
private handleApprovalRequest;
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* Handle tool confirmation approval
|
|
20
20
|
*/
|
|
21
|
-
private
|
|
21
|
+
private handleToolConfirmation;
|
|
22
|
+
/**
|
|
23
|
+
* Handle elicitation approval (form-based input from MCP servers)
|
|
24
|
+
*/
|
|
25
|
+
private handleElicitation;
|
|
26
|
+
/**
|
|
27
|
+
* Collect form data based on JSON Schema
|
|
28
|
+
* Returns null if user cancels
|
|
29
|
+
*/
|
|
30
|
+
private collectFormData;
|
|
31
|
+
/**
|
|
32
|
+
* Collect string input from user
|
|
33
|
+
*/
|
|
34
|
+
private collectStringInput;
|
|
35
|
+
/**
|
|
36
|
+
* Collect boolean input from user (yes/no)
|
|
37
|
+
*/
|
|
38
|
+
private collectBooleanInput;
|
|
39
|
+
/**
|
|
40
|
+
* Collect number input from user
|
|
41
|
+
*/
|
|
42
|
+
private collectNumberInput;
|
|
43
|
+
/**
|
|
44
|
+
* Collect enum input from user (select from list)
|
|
45
|
+
*/
|
|
46
|
+
private collectEnumInput;
|
|
47
|
+
/**
|
|
48
|
+
* Send approval response via AgentEventBus
|
|
49
|
+
*/
|
|
50
|
+
private sendApprovalResponse;
|
|
22
51
|
/**
|
|
23
52
|
* Collect user input with arrow key navigation
|
|
24
53
|
* @returns Promise resolving to boolean (true for approve, false for deny)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-confirmation-handler.d.ts","sourceRoot":"","sources":["../../../src/cli/tool-confirmation/cli-confirmation-handler.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"cli-confirmation-handler.d.ts","sourceRoot":"","sources":["../../../src/cli/tool-confirmation/cli-confirmation-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;GAGG;AACH,qBAAa,6BAA8B,YAAW,eAAe;IACjE,OAAO,CAAC,aAAa,CAAC,CAAgB;;IAMtC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAKxC;;OAEG;YACW,qBAAqB;IAoCnC;;OAEG;YACW,sBAAsB;IA+CpC;;OAEG;YACW,iBAAiB;IAwE/B;;;OAGG;YACW,eAAe;IAuD7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuC1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgD3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsD1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4DxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA2F5B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,IAAI,IAAI;CAKlB"}
|