@praveencs/agent 0.9.29 → 0.10.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 +55 -9
- package/ROADMAP.md +42 -50
- package/agent-skills/README.md +192 -0
- package/agent-skills/plugins/aws/plugin.json +22 -0
- package/agent-skills/plugins/aws/skills/aws-manager.md +17 -0
- package/agent-skills/plugins/aws/tools/aws.js +152 -0
- package/agent-skills/plugins/discord/plugin.json +22 -0
- package/agent-skills/plugins/discord/skills/discord-manager.md +15 -0
- package/agent-skills/plugins/discord/tools/discord.js +150 -0
- package/agent-skills/plugins/docker/plugin.json +21 -0
- package/agent-skills/plugins/docker/skills/docker-manager.md +15 -0
- package/agent-skills/plugins/docker/tools/docker.js +135 -0
- package/agent-skills/plugins/firebase/plugin.json +22 -0
- package/agent-skills/plugins/firebase/skills/firebase-manager.md +14 -0
- package/agent-skills/plugins/firebase/tools/firebase.js +157 -0
- package/agent-skills/plugins/github/plugin.json +23 -0
- package/agent-skills/plugins/github/skills/github-manager.md +15 -0
- package/agent-skills/plugins/github/tools/github.js +133 -0
- package/agent-skills/plugins/huggingface/plugin.json +22 -0
- package/agent-skills/plugins/huggingface/skills/huggingface-manager.md +16 -0
- package/agent-skills/plugins/huggingface/tools/huggingface.js +149 -0
- package/agent-skills/plugins/linear/plugin.json +22 -0
- package/agent-skills/plugins/linear/skills/linear-manager.md +16 -0
- package/agent-skills/plugins/linear/tools/linear.js +199 -0
- package/agent-skills/plugins/mongodb/plugin.json +21 -0
- package/agent-skills/plugins/mongodb/skills/mongodb-manager.md +14 -0
- package/agent-skills/plugins/mongodb/tools/mongodb.js +123 -0
- package/agent-skills/plugins/notion/plugin.json +22 -0
- package/agent-skills/plugins/notion/skills/notion-manager.md +16 -0
- package/agent-skills/plugins/notion/tools/notion.js +158 -0
- package/agent-skills/plugins/openai/plugin.json +23 -0
- package/agent-skills/plugins/openai/skills/openai-manager.md +15 -0
- package/agent-skills/plugins/openai/tools/openai.js +137 -0
- package/agent-skills/plugins/resend/plugin.json +21 -0
- package/agent-skills/plugins/resend/skills/resend-manager.md +15 -0
- package/agent-skills/plugins/resend/tools/resend.js +102 -0
- package/agent-skills/plugins/slack/plugin.json +22 -0
- package/agent-skills/plugins/slack/skills/slack-manager.md +15 -0
- package/agent-skills/plugins/slack/tools/slack.js +168 -0
- package/agent-skills/plugins/stripe/plugin.json +22 -0
- package/agent-skills/plugins/stripe/skills/stripe-manager.md +16 -0
- package/agent-skills/plugins/stripe/tools/stripe.js +174 -0
- package/agent-skills/plugins/supabase/plugin.json +22 -0
- package/agent-skills/plugins/supabase/skills/supabase-manager.md +16 -0
- package/agent-skills/plugins/supabase/tools/supabase.js +153 -0
- package/agent-skills/plugins/telegram/plugin.json +21 -0
- package/agent-skills/plugins/telegram/skills/telegram-manager.md +14 -0
- package/agent-skills/plugins/telegram/tools/telegram.js +131 -0
- package/agent-skills/plugins/vercel/plugin.json +22 -0
- package/agent-skills/plugins/vercel/skills/vercel-manager.md +15 -0
- package/agent-skills/plugins/vercel/tools/vercel.js +145 -0
- package/agent-skills/registry.json +675 -0
- package/agent-skills/skills/api-tester/prompt.md +27 -0
- package/agent-skills/skills/api-tester/skill.json +16 -0
- package/agent-skills/skills/backup/prompt.md +12 -0
- package/agent-skills/skills/backup/skill.json +1 -0
- package/agent-skills/skills/code-review/prompt.md +29 -0
- package/agent-skills/skills/code-review/skill.json +18 -0
- package/agent-skills/skills/create-note/prompt.md +21 -0
- package/agent-skills/skills/create-note/skill.json +15 -0
- package/agent-skills/skills/cron-scheduler/prompt.md +25 -0
- package/agent-skills/skills/cron-scheduler/skill.json +1 -0
- package/agent-skills/skills/db-query/prompt.md +12 -0
- package/agent-skills/skills/db-query/skill.json +1 -0
- package/agent-skills/skills/docker-deploy/prompt.md +21 -0
- package/agent-skills/skills/docker-deploy/skill.json +16 -0
- package/agent-skills/skills/file-organizer/prompt.md +32 -0
- package/agent-skills/skills/file-organizer/skill.json +19 -0
- package/agent-skills/skills/git-commit/prompt.md +21 -0
- package/agent-skills/skills/git-commit/skill.json +17 -0
- package/agent-skills/skills/log-analyzer/prompt.md +16 -0
- package/agent-skills/skills/log-analyzer/skill.json +1 -0
- package/agent-skills/skills/npm-publish/prompt.md +24 -0
- package/agent-skills/skills/npm-publish/skill.json +20 -0
- package/agent-skills/skills/open-vscode/prompt.md +8 -0
- package/agent-skills/skills/open-vscode/skill.json +15 -0
- package/agent-skills/skills/project-scaffold/prompt.md +43 -0
- package/agent-skills/skills/project-scaffold/skill.json +17 -0
- package/agent-skills/skills/send-email/prompt.md +19 -0
- package/agent-skills/skills/send-email/send.js +60 -0
- package/agent-skills/skills/send-email/skill.json +16 -0
- package/agent-skills/skills/system-monitor/prompt.md +27 -0
- package/agent-skills/skills/system-monitor/skill.json +15 -0
- package/agent-skills/skills/web-search/prompt.md +26 -0
- package/agent-skills/skills/web-search/skill.json +16 -0
- package/dist/src/cli/commands/desktop.d.ts +3 -0
- package/dist/src/cli/commands/desktop.d.ts.map +1 -0
- package/dist/src/cli/commands/desktop.js +80 -0
- package/dist/src/cli/commands/desktop.js.map +1 -0
- package/dist/src/cli/commands/multimodal.d.ts +3 -0
- package/dist/src/cli/commands/multimodal.d.ts.map +1 -0
- package/dist/src/cli/commands/multimodal.js +78 -0
- package/dist/src/cli/commands/multimodal.js.map +1 -0
- package/dist/src/cli/commands/plugins.d.ts.map +1 -1
- package/dist/src/cli/commands/plugins.js +63 -12
- package/dist/src/cli/commands/plugins.js.map +1 -1
- package/dist/src/cli/commands/sandbox.d.ts +3 -0
- package/dist/src/cli/commands/sandbox.d.ts.map +1 -0
- package/dist/src/cli/commands/sandbox.js +89 -0
- package/dist/src/cli/commands/sandbox.js.map +1 -0
- package/dist/src/cli/commands/skills.d.ts.map +1 -1
- package/dist/src/cli/commands/skills.js +52 -121
- package/dist/src/cli/commands/skills.js.map +1 -1
- package/dist/src/cli/commands/swarm.d.ts +3 -0
- package/dist/src/cli/commands/swarm.d.ts.map +1 -0
- package/dist/src/cli/commands/swarm.js +120 -0
- package/dist/src/cli/commands/swarm.js.map +1 -0
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +8 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/config/defaults.d.ts.map +1 -1
- package/dist/src/config/defaults.js +42 -0
- package/dist/src/config/defaults.js.map +1 -1
- package/dist/src/config/loader.d.ts +4 -0
- package/dist/src/config/loader.d.ts.map +1 -1
- package/dist/src/config/loader.js +27 -6
- package/dist/src/config/loader.js.map +1 -1
- package/dist/src/config/schema.d.ts +261 -0
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +58 -0
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/desktop/engine.d.ts +42 -0
- package/dist/src/desktop/engine.d.ts.map +1 -0
- package/dist/src/desktop/engine.js +77 -0
- package/dist/src/desktop/engine.js.map +1 -0
- package/dist/src/desktop/index.d.ts +6 -0
- package/dist/src/desktop/index.d.ts.map +1 -0
- package/dist/src/desktop/index.js +6 -0
- package/dist/src/desktop/index.js.map +1 -0
- package/dist/src/desktop/input.d.ts +20 -0
- package/dist/src/desktop/input.d.ts.map +1 -0
- package/dist/src/desktop/input.js +160 -0
- package/dist/src/desktop/input.js.map +1 -0
- package/dist/src/desktop/screen.d.ts +17 -0
- package/dist/src/desktop/screen.d.ts.map +1 -0
- package/dist/src/desktop/screen.js +120 -0
- package/dist/src/desktop/screen.js.map +1 -0
- package/dist/src/desktop/types.d.ts +50 -0
- package/dist/src/desktop/types.d.ts.map +1 -0
- package/dist/src/desktop/types.js +10 -0
- package/dist/src/desktop/types.js.map +1 -0
- package/dist/src/hub/lockfile.d.ts +29 -0
- package/dist/src/hub/lockfile.d.ts.map +1 -0
- package/dist/src/hub/lockfile.js +72 -0
- package/dist/src/hub/lockfile.js.map +1 -0
- package/dist/src/hub/publisher.d.ts +13 -0
- package/dist/src/hub/publisher.d.ts.map +1 -0
- package/dist/src/hub/publisher.js +159 -0
- package/dist/src/hub/publisher.js.map +1 -0
- package/dist/src/hub/registry.d.ts +40 -0
- package/dist/src/hub/registry.d.ts.map +1 -0
- package/dist/src/hub/registry.js +123 -0
- package/dist/src/hub/registry.js.map +1 -0
- package/dist/src/multimodal/engine.d.ts +33 -0
- package/dist/src/multimodal/engine.d.ts.map +1 -0
- package/dist/src/multimodal/engine.js +63 -0
- package/dist/src/multimodal/engine.js.map +1 -0
- package/dist/src/multimodal/index.d.ts +7 -0
- package/dist/src/multimodal/index.d.ts.map +1 -0
- package/dist/src/multimodal/index.js +7 -0
- package/dist/src/multimodal/index.js.map +1 -0
- package/dist/src/multimodal/tts.d.ts +11 -0
- package/dist/src/multimodal/tts.d.ts.map +1 -0
- package/dist/src/multimodal/tts.js +48 -0
- package/dist/src/multimodal/tts.js.map +1 -0
- package/dist/src/multimodal/types.d.ts +55 -0
- package/dist/src/multimodal/types.d.ts.map +1 -0
- package/dist/src/multimodal/types.js +20 -0
- package/dist/src/multimodal/types.js.map +1 -0
- package/dist/src/multimodal/vision.d.ts +15 -0
- package/dist/src/multimodal/vision.d.ts.map +1 -0
- package/dist/src/multimodal/vision.js +98 -0
- package/dist/src/multimodal/vision.js.map +1 -0
- package/dist/src/multimodal/voice.d.ts +11 -0
- package/dist/src/multimodal/voice.d.ts.map +1 -0
- package/dist/src/multimodal/voice.js +43 -0
- package/dist/src/multimodal/voice.js.map +1 -0
- package/dist/src/plans/types.d.ts +18 -18
- package/dist/src/plugins/loader.d.ts.map +1 -1
- package/dist/src/plugins/loader.js +10 -0
- package/dist/src/plugins/loader.js.map +1 -1
- package/dist/src/sandbox/docker.d.ts +42 -0
- package/dist/src/sandbox/docker.d.ts.map +1 -0
- package/dist/src/sandbox/docker.js +131 -0
- package/dist/src/sandbox/docker.js.map +1 -0
- package/dist/src/sandbox/engine.d.ts +50 -0
- package/dist/src/sandbox/engine.d.ts.map +1 -0
- package/dist/src/sandbox/engine.js +133 -0
- package/dist/src/sandbox/engine.js.map +1 -0
- package/dist/src/sandbox/index.d.ts +5 -0
- package/dist/src/sandbox/index.d.ts.map +1 -0
- package/dist/src/sandbox/index.js +5 -0
- package/dist/src/sandbox/index.js.map +1 -0
- package/dist/src/sandbox/types.d.ts +41 -0
- package/dist/src/sandbox/types.d.ts.map +1 -0
- package/dist/src/sandbox/types.js +12 -0
- package/dist/src/sandbox/types.js.map +1 -0
- package/dist/src/scripts/types.d.ts +2 -2
- package/dist/src/server/app.d.ts.map +1 -1
- package/dist/src/server/app.js +133 -0
- package/dist/src/server/app.js.map +1 -1
- package/dist/src/skills/loader.d.ts.map +1 -1
- package/dist/src/skills/loader.js +10 -0
- package/dist/src/skills/loader.js.map +1 -1
- package/dist/src/swarm/bus.d.ts +27 -0
- package/dist/src/swarm/bus.d.ts.map +1 -0
- package/dist/src/swarm/bus.js +64 -0
- package/dist/src/swarm/bus.js.map +1 -0
- package/dist/src/swarm/index.d.ts +6 -0
- package/dist/src/swarm/index.d.ts.map +1 -0
- package/dist/src/swarm/index.js +6 -0
- package/dist/src/swarm/index.js.map +1 -0
- package/dist/src/swarm/orchestrator.d.ts +79 -0
- package/dist/src/swarm/orchestrator.d.ts.map +1 -0
- package/dist/src/swarm/orchestrator.js +271 -0
- package/dist/src/swarm/orchestrator.js.map +1 -0
- package/dist/src/swarm/roles.d.ts +18 -0
- package/dist/src/swarm/roles.d.ts.map +1 -0
- package/dist/src/swarm/roles.js +83 -0
- package/dist/src/swarm/roles.js.map +1 -0
- package/dist/src/swarm/types.d.ts +58 -0
- package/dist/src/swarm/types.d.ts.map +1 -0
- package/dist/src/swarm/types.js +10 -0
- package/dist/src/swarm/types.js.map +1 -0
- package/dist/src/tools/core/cmd.d.ts.map +1 -1
- package/dist/src/tools/core/cmd.js +28 -0
- package/dist/src/tools/core/cmd.js.map +1 -1
- package/dist/src/utils/paths.d.ts +4 -4
- package/dist/src/utils/paths.d.ts.map +1 -1
- package/dist/src/utils/paths.js +8 -8
- package/dist/src/utils/paths.js.map +1 -1
- package/docs/DOCUMENTATION.md +137 -0
- package/package.json +4 -2
- package/studio/README.md +73 -0
- package/studio/eslint.config.js +23 -0
- package/studio/index.html +13 -0
- package/studio/package-lock.json +4350 -0
- package/studio/package.json +44 -0
- package/studio/postcss.config.js +6 -0
- package/studio/public/vite.svg +1 -0
- package/studio/src/App.tsx +243 -0
- package/studio/src/assets/react.svg +1 -0
- package/studio/src/components/Capabilities.tsx +80 -0
- package/studio/src/components/CommandsManager.tsx +94 -0
- package/studio/src/components/CostDashboard.tsx +182 -0
- package/studio/src/components/CredentialCapture.tsx +196 -0
- package/studio/src/components/CredentialsManager.tsx +257 -0
- package/studio/src/components/DaemonPanel.tsx +91 -0
- package/studio/src/components/DesktopPanel.tsx +118 -0
- package/studio/src/components/GoalTemplates.tsx +190 -0
- package/studio/src/components/GoalsPanel.tsx +235 -0
- package/studio/src/components/MemoryExplorer.tsx +152 -0
- package/studio/src/components/MultimodalPanel.tsx +150 -0
- package/studio/src/components/NotificationsPanel.tsx +175 -0
- package/studio/src/components/PluginsManager.tsx +60 -0
- package/studio/src/components/SandboxPanel.tsx +118 -0
- package/studio/src/components/ScriptsManager.tsx +269 -0
- package/studio/src/components/SkillsManager.tsx +123 -0
- package/studio/src/components/SwarmPanel.tsx +149 -0
- package/studio/src/components/TaskStreaming.tsx +189 -0
- package/studio/src/components/Terminal.tsx +200 -0
- package/studio/src/index.css +51 -0
- package/studio/src/main.tsx +13 -0
- package/studio/tailwind.config.js +47 -0
- package/studio/tsconfig.app.json +28 -0
- package/studio/tsconfig.json +7 -0
- package/studio/tsconfig.node.json +26 -0
- package/studio/vite.config.ts +7 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram Bot API automation tool.
|
|
3
|
+
*/
|
|
4
|
+
export async function execute(params) {
|
|
5
|
+
const { action, ...args } = params;
|
|
6
|
+
const token = process.env.TELEGRAM_BOT_TOKEN;
|
|
7
|
+
|
|
8
|
+
if (!token) {
|
|
9
|
+
throw new Error('TELEGRAM_BOT_TOKEN is not set. Create a bot via @BotFather on Telegram.');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
async function tgFetch(method, body = {}) {
|
|
13
|
+
const res = await fetch(`https://api.telegram.org/bot${token}/${method}`, {
|
|
14
|
+
method: 'POST',
|
|
15
|
+
headers: { 'Content-Type': 'application/json' },
|
|
16
|
+
body: JSON.stringify(body)
|
|
17
|
+
});
|
|
18
|
+
const data = await res.json();
|
|
19
|
+
if (!data.ok) throw new Error(`Telegram API Error: ${data.description}`);
|
|
20
|
+
return data.result;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
switch (action) {
|
|
25
|
+
case 'send_message':
|
|
26
|
+
return await tgFetch('sendMessage', {
|
|
27
|
+
chat_id: args.chat_id,
|
|
28
|
+
text: args.text,
|
|
29
|
+
parse_mode: args.parse_mode || 'HTML',
|
|
30
|
+
reply_to_message_id: args.reply_to
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
case 'send_photo':
|
|
34
|
+
return await tgFetch('sendPhoto', {
|
|
35
|
+
chat_id: args.chat_id,
|
|
36
|
+
photo: args.photo,
|
|
37
|
+
caption: args.caption
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
case 'send_document':
|
|
41
|
+
return await tgFetch('sendDocument', {
|
|
42
|
+
chat_id: args.chat_id,
|
|
43
|
+
document: args.document,
|
|
44
|
+
caption: args.caption
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
case 'edit_message':
|
|
48
|
+
return await tgFetch('editMessageText', {
|
|
49
|
+
chat_id: args.chat_id,
|
|
50
|
+
message_id: args.message_id,
|
|
51
|
+
text: args.text,
|
|
52
|
+
parse_mode: args.parse_mode || 'HTML'
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
case 'delete_message':
|
|
56
|
+
return await tgFetch('deleteMessage', {
|
|
57
|
+
chat_id: args.chat_id,
|
|
58
|
+
message_id: args.message_id
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
case 'get_updates':
|
|
62
|
+
return await tgFetch('getUpdates', {
|
|
63
|
+
limit: args.limit || 10,
|
|
64
|
+
offset: args.offset
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
case 'get_me':
|
|
68
|
+
return await tgFetch('getMe');
|
|
69
|
+
|
|
70
|
+
case 'get_chat':
|
|
71
|
+
return await tgFetch('getChat', { chat_id: args.chat_id });
|
|
72
|
+
|
|
73
|
+
case 'get_chat_members':
|
|
74
|
+
return await tgFetch('getChatMemberCount', { chat_id: args.chat_id });
|
|
75
|
+
|
|
76
|
+
case 'create_poll':
|
|
77
|
+
return await tgFetch('sendPoll', {
|
|
78
|
+
chat_id: args.chat_id,
|
|
79
|
+
question: args.question,
|
|
80
|
+
options: args.options,
|
|
81
|
+
is_anonymous: args.is_anonymous !== false
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
case 'pin_message':
|
|
85
|
+
return await tgFetch('pinChatMessage', {
|
|
86
|
+
chat_id: args.chat_id,
|
|
87
|
+
message_id: args.message_id
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
case 'set_chat_title':
|
|
91
|
+
return await tgFetch('setChatTitle', {
|
|
92
|
+
chat_id: args.chat_id,
|
|
93
|
+
title: args.title
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
default:
|
|
97
|
+
throw new Error(`Unknown action: ${action}`);
|
|
98
|
+
}
|
|
99
|
+
} catch (err) {
|
|
100
|
+
return { error: err.message, stack: err.stack };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export const definition = {
|
|
105
|
+
name: 'telegram',
|
|
106
|
+
description: 'Send messages, photos, documents, polls, and manage Telegram groups via the Bot API. Requires TELEGRAM_BOT_TOKEN.',
|
|
107
|
+
parameters: {
|
|
108
|
+
type: 'object',
|
|
109
|
+
required: ['action'],
|
|
110
|
+
properties: {
|
|
111
|
+
action: {
|
|
112
|
+
type: 'string',
|
|
113
|
+
enum: ['send_message', 'send_photo', 'send_document', 'edit_message', 'delete_message', 'get_updates', 'get_me', 'get_chat', 'get_chat_members', 'create_poll', 'pin_message', 'set_chat_title']
|
|
114
|
+
},
|
|
115
|
+
chat_id: { type: 'string', description: 'Chat/group/channel ID' },
|
|
116
|
+
text: { type: 'string', description: 'Message text (supports HTML formatting)' },
|
|
117
|
+
photo: { type: 'string', description: 'Photo URL or file_id' },
|
|
118
|
+
document: { type: 'string', description: 'Document URL or file_id' },
|
|
119
|
+
caption: { type: 'string', description: 'Caption for photos/documents' },
|
|
120
|
+
message_id: { type: 'number', description: 'Message ID for edit/delete/pin' },
|
|
121
|
+
reply_to: { type: 'number', description: 'Message ID to reply to' },
|
|
122
|
+
parse_mode: { type: 'string', description: 'Parse mode: HTML or MarkdownV2' },
|
|
123
|
+
question: { type: 'string', description: 'Poll question' },
|
|
124
|
+
options: { type: 'array', items: { type: 'string' }, description: 'Poll answer options' },
|
|
125
|
+
is_anonymous: { type: 'boolean', description: 'Whether poll is anonymous' },
|
|
126
|
+
title: { type: 'string', description: 'Chat title' },
|
|
127
|
+
limit: { type: 'number', description: 'Max results' },
|
|
128
|
+
offset: { type: 'number', description: 'Update offset for pagination' }
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "vercel",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Deploy projects, manage domains, view deployment logs, and manage environment variables on Vercel.",
|
|
5
|
+
"author": "Praveen",
|
|
6
|
+
"category": "DevOps & Cloud",
|
|
7
|
+
"tags": [
|
|
8
|
+
"vercel",
|
|
9
|
+
"deploy",
|
|
10
|
+
"hosting",
|
|
11
|
+
"frontend",
|
|
12
|
+
"serverless"
|
|
13
|
+
],
|
|
14
|
+
"exports": {
|
|
15
|
+
"tools": [
|
|
16
|
+
"tools/vercel.js"
|
|
17
|
+
],
|
|
18
|
+
"skills": [
|
|
19
|
+
"skills/vercel-manager.md"
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Vercel Manager
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
This skill enables you to deploy projects, manage domains, configure environment variables, and monitor deployments on Vercel.
|
|
5
|
+
|
|
6
|
+
## Instructions
|
|
7
|
+
1. To deploy or redeploy, use `action: "redeploy"` with the `project` name and optionally a `deployment_id` to redeploy from.
|
|
8
|
+
2. To create a new Vercel project linked to a GitHub repo, use `action: "create_project"` with `name` and `repo` (format: `"owner/repo"`).
|
|
9
|
+
3. To add environment variables, use `action: "add_env"` with `project`, `key`, and `value`. By default, variables are encrypted and available in all environments (production, preview, development).
|
|
10
|
+
4. To check deployment status, use `action: "list_deployments"` with the `project` name. The most recent deployment will be first.
|
|
11
|
+
5. To view build logs, use `action: "get_deployment_events"` with the `deployment_id`.
|
|
12
|
+
6. If the tool returns an authentication error, the user needs to export `VERCEL_TOKEN`. They can create one at https://vercel.com/account/tokens.
|
|
13
|
+
|
|
14
|
+
## Input Variables
|
|
15
|
+
{{input}}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel automation tool.
|
|
3
|
+
* Provides deployment, domain, and project management via the Vercel REST API.
|
|
4
|
+
*/
|
|
5
|
+
export async function execute(params) {
|
|
6
|
+
const { action, ...args } = params;
|
|
7
|
+
const token = process.env.VERCEL_TOKEN;
|
|
8
|
+
|
|
9
|
+
if (!token) {
|
|
10
|
+
throw new Error('VERCEL_TOKEN environment variable is not set. Create a token at https://vercel.com/account/tokens');
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const headers = {
|
|
14
|
+
'Content-Type': 'application/json',
|
|
15
|
+
'Authorization': `Bearer ${token}`
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
async function vercelFetch(method, endpoint, body = null) {
|
|
19
|
+
const teamId = args.teamId ? `?teamId=${args.teamId}` : '';
|
|
20
|
+
const url = `https://api.vercel.com${endpoint}${teamId}`;
|
|
21
|
+
const options = { method, headers };
|
|
22
|
+
if (body) options.body = JSON.stringify(body);
|
|
23
|
+
|
|
24
|
+
const res = await fetch(url, options);
|
|
25
|
+
if (res.status === 204) return { success: true };
|
|
26
|
+
|
|
27
|
+
const data = await res.json();
|
|
28
|
+
if (!res.ok) {
|
|
29
|
+
throw new Error(`Vercel API Error (${res.status}): ${JSON.stringify(data.error || data)}`);
|
|
30
|
+
}
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
try {
|
|
35
|
+
switch (action) {
|
|
36
|
+
// --- PROJECTS ---
|
|
37
|
+
case 'list_projects':
|
|
38
|
+
return await vercelFetch('GET', `/v9/projects?limit=${args.limit || 20}`);
|
|
39
|
+
|
|
40
|
+
case 'get_project':
|
|
41
|
+
return await vercelFetch('GET', `/v9/projects/${args.project}`);
|
|
42
|
+
|
|
43
|
+
case 'create_project':
|
|
44
|
+
return await vercelFetch('POST', '/v10/projects', {
|
|
45
|
+
name: args.name,
|
|
46
|
+
framework: args.framework || null,
|
|
47
|
+
gitRepository: args.repo ? {
|
|
48
|
+
type: 'github',
|
|
49
|
+
repo: args.repo
|
|
50
|
+
} : undefined
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
case 'delete_project':
|
|
54
|
+
return await vercelFetch('DELETE', `/v9/projects/${args.project}`);
|
|
55
|
+
|
|
56
|
+
// --- DEPLOYMENTS ---
|
|
57
|
+
case 'list_deployments':
|
|
58
|
+
return await vercelFetch('GET', `/v6/deployments?projectId=${args.project}&limit=${args.limit || 10}`);
|
|
59
|
+
|
|
60
|
+
case 'get_deployment':
|
|
61
|
+
return await vercelFetch('GET', `/v13/deployments/${args.deployment_id}`);
|
|
62
|
+
|
|
63
|
+
case 'redeploy':
|
|
64
|
+
return await vercelFetch('POST', `/v13/deployments`, {
|
|
65
|
+
name: args.project,
|
|
66
|
+
target: args.target || 'production',
|
|
67
|
+
deploymentId: args.deployment_id
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
case 'cancel_deployment':
|
|
71
|
+
return await vercelFetch('PATCH', `/v12/deployments/${args.deployment_id}/cancel`);
|
|
72
|
+
|
|
73
|
+
// --- DOMAINS ---
|
|
74
|
+
case 'list_domains':
|
|
75
|
+
return await vercelFetch('GET', `/v5/domains?limit=${args.limit || 20}`);
|
|
76
|
+
|
|
77
|
+
case 'add_domain':
|
|
78
|
+
return await vercelFetch('POST', `/v10/projects/${args.project}/domains`, {
|
|
79
|
+
name: args.domain
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
case 'remove_domain':
|
|
83
|
+
return await vercelFetch('DELETE', `/v9/projects/${args.project}/domains/${args.domain}`);
|
|
84
|
+
|
|
85
|
+
// --- ENVIRONMENT VARIABLES ---
|
|
86
|
+
case 'list_env':
|
|
87
|
+
return await vercelFetch('GET', `/v9/projects/${args.project}/env`);
|
|
88
|
+
|
|
89
|
+
case 'add_env':
|
|
90
|
+
return await vercelFetch('POST', `/v10/projects/${args.project}/env`, {
|
|
91
|
+
key: args.key,
|
|
92
|
+
value: args.value,
|
|
93
|
+
type: args.type || 'encrypted',
|
|
94
|
+
target: args.target || ['production', 'preview', 'development']
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
case 'remove_env':
|
|
98
|
+
return await vercelFetch('DELETE', `/v9/projects/${args.project}/env/${args.env_id}`);
|
|
99
|
+
|
|
100
|
+
// --- LOGS ---
|
|
101
|
+
case 'get_deployment_events':
|
|
102
|
+
return await vercelFetch('GET', `/v3/deployments/${args.deployment_id}/events`);
|
|
103
|
+
|
|
104
|
+
default:
|
|
105
|
+
throw new Error(`Unknown action: ${action}`);
|
|
106
|
+
}
|
|
107
|
+
} catch (err) {
|
|
108
|
+
return { error: err.message, stack: err.stack };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export const definition = {
|
|
113
|
+
name: 'vercel',
|
|
114
|
+
description: 'Manage Vercel deployments, projects, domains, and environment variables. Requires VERCEL_TOKEN.',
|
|
115
|
+
parameters: {
|
|
116
|
+
type: 'object',
|
|
117
|
+
required: ['action'],
|
|
118
|
+
properties: {
|
|
119
|
+
action: {
|
|
120
|
+
type: 'string',
|
|
121
|
+
description: 'The Vercel operation to perform',
|
|
122
|
+
enum: [
|
|
123
|
+
'list_projects', 'get_project', 'create_project', 'delete_project',
|
|
124
|
+
'list_deployments', 'get_deployment', 'redeploy', 'cancel_deployment',
|
|
125
|
+
'list_domains', 'add_domain', 'remove_domain',
|
|
126
|
+
'list_env', 'add_env', 'remove_env',
|
|
127
|
+
'get_deployment_events'
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
project: { type: 'string', description: 'Project name or ID' },
|
|
131
|
+
name: { type: 'string', description: 'Name for new project' },
|
|
132
|
+
framework: { type: 'string', description: 'Framework preset (nextjs, vite, nuxtjs, etc.)' },
|
|
133
|
+
repo: { type: 'string', description: 'GitHub repo in "owner/repo" format' },
|
|
134
|
+
deployment_id: { type: 'string', description: 'Deployment ID' },
|
|
135
|
+
target: { type: 'string', description: 'Deployment target: production or preview' },
|
|
136
|
+
domain: { type: 'string', description: 'Domain name (e.g., myapp.com)' },
|
|
137
|
+
key: { type: 'string', description: 'Env variable key' },
|
|
138
|
+
value: { type: 'string', description: 'Env variable value' },
|
|
139
|
+
type: { type: 'string', description: 'Env var type: encrypted, plain, secret, system' },
|
|
140
|
+
env_id: { type: 'string', description: 'Environment variable ID (for removal)' },
|
|
141
|
+
teamId: { type: 'string', description: 'Vercel team ID (optional)' },
|
|
142
|
+
limit: { type: 'number', description: 'Max results to return' }
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
};
|