@fortressllm/sybil 0.0.3
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/.env copy +91 -0
- package/.env.example +139 -0
- package/BROWSER_CONTROL.md +354 -0
- package/CLI_CHAT_FEATURE.md +224 -0
- package/CLI_GUIDE.md +359 -0
- package/DYNAMIC_SKILLS.md +345 -0
- package/DockerFile.sandbox +14 -0
- package/PROGRESS.md +249 -0
- package/README.md +281 -0
- package/RENAME_LOG.md +62 -0
- package/SIMPLIFIED_TELEGRAM_UX.md +273 -0
- package/SYBIL_SUMMARY.md +360 -0
- package/TASK11_NETWORK.md +202 -0
- package/TASK14_CLI.md +432 -0
- package/TASK8_SAFETY.md +317 -0
- package/TASK9_COMPLETION.md +186 -0
- package/TASK9_SUMMARY.md +201 -0
- package/TELEGRAM_OTP_AUTH.md +359 -0
- package/VECTOR_MEMORY.md +163 -0
- package/assets/logo.png +0 -0
- package/cypfq_code_search.md +287 -0
- package/cypfq_driver_search.md +297 -0
- package/cypfq_github_search.md +297 -0
- package/cypfq_repo_search.md +370 -0
- package/dist/agents/autonomous-agent.d.ts +61 -0
- package/dist/agents/autonomous-agent.d.ts.map +1 -0
- package/dist/agents/autonomous-agent.js +536 -0
- package/dist/agents/autonomous-agent.js.map +1 -0
- package/dist/agents/network.d.ts +1006 -0
- package/dist/agents/network.d.ts.map +1 -0
- package/dist/agents/network.js +1266 -0
- package/dist/agents/network.js.map +1 -0
- package/dist/cli/commands/backup.d.ts +3 -0
- package/dist/cli/commands/backup.d.ts.map +1 -0
- package/dist/cli/commands/backup.js +63 -0
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +163 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +107 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +138 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +3 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +81 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/otp.d.ts +3 -0
- package/dist/cli/commands/otp.d.ts.map +1 -0
- package/dist/cli/commands/otp.js +142 -0
- package/dist/cli/commands/otp.js.map +1 -0
- package/dist/cli/commands/restore.d.ts +3 -0
- package/dist/cli/commands/restore.d.ts.map +1 -0
- package/dist/cli/commands/restore.js +99 -0
- package/dist/cli/commands/restore.js.map +1 -0
- package/dist/cli/commands/start.d.ts +3 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +65 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +68 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +3 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +62 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/update.d.ts +3 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +49 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/whatsapp.d.ts +3 -0
- package/dist/cli/commands/whatsapp.d.ts.map +1 -0
- package/dist/cli/commands/whatsapp.js +281 -0
- package/dist/cli/commands/whatsapp.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +58 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +750 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -0
- package/dist/mastra/index.d.ts +4 -0
- package/dist/mastra/index.d.ts.map +1 -0
- package/dist/mastra/index.js +37 -0
- package/dist/mastra/index.js.map +1 -0
- package/dist/mastra/memory.d.ts +9 -0
- package/dist/mastra/memory.d.ts.map +1 -0
- package/dist/mastra/memory.js +92 -0
- package/dist/mastra/memory.js.map +1 -0
- package/dist/processors/index.d.ts +74 -0
- package/dist/processors/index.d.ts.map +1 -0
- package/dist/processors/index.js +153 -0
- package/dist/processors/index.js.map +1 -0
- package/dist/processors/semantic-recall.d.ts +63 -0
- package/dist/processors/semantic-recall.d.ts.map +1 -0
- package/dist/processors/semantic-recall.js +216 -0
- package/dist/processors/semantic-recall.js.map +1 -0
- package/dist/processors/tool-search.d.ts +26 -0
- package/dist/processors/tool-search.d.ts.map +1 -0
- package/dist/processors/tool-search.js +41 -0
- package/dist/processors/tool-search.js.map +1 -0
- package/dist/skills/dynamic/skill-generator.d.ts +169 -0
- package/dist/skills/dynamic/skill-generator.d.ts.map +1 -0
- package/dist/skills/dynamic/skill-generator.js +488 -0
- package/dist/skills/dynamic/skill-generator.js.map +1 -0
- package/dist/tools/agent-delegation-tools.d.ts +142 -0
- package/dist/tools/agent-delegation-tools.d.ts.map +1 -0
- package/dist/tools/agent-delegation-tools.js +263 -0
- package/dist/tools/agent-delegation-tools.js.map +1 -0
- package/dist/tools/browser-tools.d.ts +374 -0
- package/dist/tools/browser-tools.d.ts.map +1 -0
- package/dist/tools/browser-tools.js +752 -0
- package/dist/tools/browser-tools.js.map +1 -0
- package/dist/tools/dynamic/registry.d.ts +61 -0
- package/dist/tools/dynamic/registry.d.ts.map +1 -0
- package/dist/tools/dynamic/registry.js +121 -0
- package/dist/tools/dynamic/registry.js.map +1 -0
- package/dist/tools/dynamic/tool-generator.d.ts +99 -0
- package/dist/tools/dynamic/tool-generator.d.ts.map +1 -0
- package/dist/tools/dynamic/tool-generator.js +367 -0
- package/dist/tools/dynamic/tool-generator.js.map +1 -0
- package/dist/tools/extended-tools.d.ts +176 -0
- package/dist/tools/extended-tools.d.ts.map +1 -0
- package/dist/tools/extended-tools.js +464 -0
- package/dist/tools/extended-tools.js.map +1 -0
- package/dist/tools/library/calendar/index.d.ts +134 -0
- package/dist/tools/library/calendar/index.d.ts.map +1 -0
- package/dist/tools/library/calendar/index.js +160 -0
- package/dist/tools/library/calendar/index.js.map +1 -0
- package/dist/tools/podman-workspace-mcp-cli.d.ts +3 -0
- package/dist/tools/podman-workspace-mcp-cli.d.ts.map +1 -0
- package/dist/tools/podman-workspace-mcp-cli.js +12 -0
- package/dist/tools/podman-workspace-mcp-cli.js.map +1 -0
- package/dist/tools/podman-workspace-mcp.d.ts +247 -0
- package/dist/tools/podman-workspace-mcp.d.ts.map +1 -0
- package/dist/tools/podman-workspace-mcp.js +1093 -0
- package/dist/tools/podman-workspace-mcp.js.map +1 -0
- package/dist/tools/podman-workspace.d.ts +148 -0
- package/dist/tools/podman-workspace.d.ts.map +1 -0
- package/dist/tools/podman-workspace.js +682 -0
- package/dist/tools/podman-workspace.js.map +1 -0
- package/dist/tools/telegram-file-tools.d.ts +78 -0
- package/dist/tools/telegram-file-tools.d.ts.map +1 -0
- package/dist/tools/telegram-file-tools.js +294 -0
- package/dist/tools/telegram-file-tools.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +467 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +156 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/tools/web-tools.d.ts +77 -0
- package/dist/tools/web-tools.d.ts.map +1 -0
- package/dist/tools/web-tools.js +416 -0
- package/dist/tools/web-tools.js.map +1 -0
- package/dist/tools/whatsapp-autoreply-tools.d.ts +118 -0
- package/dist/tools/whatsapp-autoreply-tools.d.ts.map +1 -0
- package/dist/tools/whatsapp-autoreply-tools.js +503 -0
- package/dist/tools/whatsapp-autoreply-tools.js.map +1 -0
- package/dist/tools/whatsapp-tools.d.ts +175 -0
- package/dist/tools/whatsapp-tools.d.ts.map +1 -0
- package/dist/tools/whatsapp-tools.js +566 -0
- package/dist/tools/whatsapp-tools.js.map +1 -0
- package/dist/utils/logger.d.ts +65 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +307 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/model-config.d.ts +73 -0
- package/dist/utils/model-config.d.ts.map +1 -0
- package/dist/utils/model-config.js +366 -0
- package/dist/utils/model-config.js.map +1 -0
- package/dist/utils/semantic-memory.d.ts +82 -0
- package/dist/utils/semantic-memory.d.ts.map +1 -0
- package/dist/utils/semantic-memory.js +189 -0
- package/dist/utils/semantic-memory.js.map +1 -0
- package/dist/utils/system.d.ts +2 -0
- package/dist/utils/system.d.ts.map +1 -0
- package/dist/utils/system.js +24 -0
- package/dist/utils/system.js.map +1 -0
- package/dist/utils/telegram-auth.d.ts +54 -0
- package/dist/utils/telegram-auth.d.ts.map +1 -0
- package/dist/utils/telegram-auth.js +146 -0
- package/dist/utils/telegram-auth.js.map +1 -0
- package/dist/utils/telegram.d.ts +7 -0
- package/dist/utils/telegram.d.ts.map +1 -0
- package/dist/utils/telegram.js +1494 -0
- package/dist/utils/telegram.js.map +1 -0
- package/dist/utils/whatsapp-client.d.ts +166 -0
- package/dist/utils/whatsapp-client.d.ts.map +1 -0
- package/dist/utils/whatsapp-client.js +722 -0
- package/dist/utils/whatsapp-client.js.map +1 -0
- package/dist/workflows/planner-workflow.d.ts +39 -0
- package/dist/workflows/planner-workflow.d.ts.map +1 -0
- package/dist/workflows/planner-workflow.js +165 -0
- package/dist/workflows/planner-workflow.js.map +1 -0
- package/dist/workflows/skill-builder-workflow.d.ts +16 -0
- package/dist/workflows/skill-builder-workflow.d.ts.map +1 -0
- package/dist/workflows/skill-builder-workflow.js +157 -0
- package/dist/workflows/skill-builder-workflow.js.map +1 -0
- package/dist/workspace/index.d.ts +23 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +64 -0
- package/dist/workspace/index.js.map +1 -0
- package/docs/README.md +140 -0
- package/docs/api/agents.md +481 -0
- package/docs/api/browser-tools.md +469 -0
- package/docs/api/memory.md +629 -0
- package/docs/architecture/agent-networks.md +586 -0
- package/docs/architecture/memory.md +579 -0
- package/docs/architecture/overview.md +436 -0
- package/docs/architecture/tools.md +637 -0
- package/docs/cli-tui.md +367 -0
- package/docs/guides/environment-variables.md +502 -0
- package/docs/guides/troubleshooting.md +882 -0
- package/docs/tutorials/agent-networks.md +432 -0
- package/docs/tutorials/dynamic-tools.md +469 -0
- package/docs/tutorials/getting-started.md +263 -0
- package/docs/tutorials/skills.md +561 -0
- package/docs/tutorials/web-browsing.md +329 -0
- package/mastra.db-shm +0 -0
- package/mastra.db-wal +0 -0
- package/package.json +71 -0
- package/plan.md +601 -0
- package/skills/code-review/SKILL.md +48 -0
- package/skills/task-planning/SKILL.md +55 -0
- package/skills/web-research/SKILL.md +79 -0
- package/skills/whatsapp-management/SKILL.md +78 -0
- package/src/agents/autonomous-agent.ts +626 -0
- package/src/agents/network.ts +1307 -0
- package/src/cli/commands/backup.ts +78 -0
- package/src/cli/commands/config.ts +176 -0
- package/src/cli/commands/doctor.ts +111 -0
- package/src/cli/commands/init.ts +150 -0
- package/src/cli/commands/logs.ts +94 -0
- package/src/cli/commands/otp.ts +162 -0
- package/src/cli/commands/restore.ts +118 -0
- package/src/cli/commands/start.ts +76 -0
- package/src/cli/commands/status.ts +81 -0
- package/src/cli/commands/stop.ts +68 -0
- package/src/cli/commands/update.ts +61 -0
- package/src/cli/commands/whatsapp.ts +322 -0
- package/src/cli/index.ts +69 -0
- package/src/cli.ts +830 -0
- package/src/index.ts +124 -0
- package/src/mastra/index.ts +49 -0
- package/src/mastra/memory.ts +99 -0
- package/src/mastra/public/workspace/plan.md +115 -0
- package/src/mastra/public/workspace/research/react-tailwind/skill.md +47 -0
- package/src/processors/index.ts +170 -0
- package/src/processors/semantic-recall.ts +277 -0
- package/src/processors/tool-search.ts +46 -0
- package/src/skills/dynamic/skill-generator.ts +568 -0
- package/src/tools/agent-delegation-tools.ts +301 -0
- package/src/tools/browser-tools.ts +792 -0
- package/src/tools/dynamic/registry.ts +144 -0
- package/src/tools/dynamic/tool-generator.ts +406 -0
- package/src/tools/extended-tools.ts +498 -0
- package/src/tools/library/calendar/index.ts +172 -0
- package/src/tools/podman-workspace-mcp-cli.ts +14 -0
- package/src/tools/podman-workspace-mcp.ts +1290 -0
- package/src/tools/podman-workspace.ts +858 -0
- package/src/tools/telegram-file-tools.ts +320 -0
- package/src/tools/tool-registry.ts +233 -0
- package/src/tools/web-tools.ts +461 -0
- package/src/tools/whatsapp-autoreply-tools.ts +616 -0
- package/src/tools/whatsapp-tools.ts +602 -0
- package/src/utils/logger.ts +368 -0
- package/src/utils/model-config.ts +437 -0
- package/src/utils/semantic-memory.ts +230 -0
- package/src/utils/system.ts +25 -0
- package/src/utils/telegram-auth.ts +201 -0
- package/src/utils/telegram.ts +1847 -0
- package/src/utils/whatsapp-client.ts +808 -0
- package/src/workflows/planner-workflow.ts +178 -0
- package/src/workflows/skill-builder-workflow.ts +175 -0
- package/src/workspace/index.ts +69 -0
- package/tsconfig.json +22 -0
- package/view-logs.sh +116 -0
- package/whatsapp-session.sh +197 -0
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extended Tool Library for Sybil
|
|
3
|
+
*
|
|
4
|
+
* Additional tools beyond core WhatsApp and web functionality.
|
|
5
|
+
* Sybil's capabilities beyond the core WhatsApp and web tools.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { createTool } from "@mastra/core/tools";
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import axios from "axios";
|
|
11
|
+
import * as cheerio from "cheerio";
|
|
12
|
+
|
|
13
|
+
// Re-export existing tools
|
|
14
|
+
export {
|
|
15
|
+
fetchWebContentTool,
|
|
16
|
+
searchWebTool,
|
|
17
|
+
extractStructuredDataTool,
|
|
18
|
+
deepResearchTool
|
|
19
|
+
} from "./web-tools.js";
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
getWhatsAppStatusTool,
|
|
23
|
+
initializeWhatsAppTool,
|
|
24
|
+
sendWhatsAppMessageTool,
|
|
25
|
+
getWhatsAppChatsTool,
|
|
26
|
+
getWhatsAppMessagesTool,
|
|
27
|
+
getWhatsAppContactTool,
|
|
28
|
+
getMyWhatsAppInfoTool,
|
|
29
|
+
broadcastWhatsAppMessageTool,
|
|
30
|
+
} from "./whatsapp-tools.js";
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
configureAutoReplyTool,
|
|
34
|
+
approvePendingReplyTool,
|
|
35
|
+
} from "./whatsapp-autoreply-tools.js";
|
|
36
|
+
|
|
37
|
+
// ==================== FILE SYSTEM TOOLS ====================
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Tool: Read File
|
|
41
|
+
* Reads the contents of a file from the filesystem
|
|
42
|
+
*/
|
|
43
|
+
export const readFileTool = createTool({
|
|
44
|
+
id: "read-file",
|
|
45
|
+
description: `
|
|
46
|
+
Read the contents of a file from the filesystem.
|
|
47
|
+
Use this when you need to examine existing files or retrieve data.
|
|
48
|
+
`,
|
|
49
|
+
inputSchema: z.object({
|
|
50
|
+
path: z.string().describe("The path to the file to read"),
|
|
51
|
+
encoding: z.enum(["utf8", "base64"]).optional().default("utf8").describe("File encoding"),
|
|
52
|
+
}),
|
|
53
|
+
outputSchema: z.object({
|
|
54
|
+
success: z.boolean(),
|
|
55
|
+
content: z.string().optional(),
|
|
56
|
+
error: z.string().optional(),
|
|
57
|
+
}),
|
|
58
|
+
execute: async (inputData) => {
|
|
59
|
+
try {
|
|
60
|
+
// In a real implementation, this would actually read files
|
|
61
|
+
// For now, we'll simulate with a placeholder
|
|
62
|
+
return {
|
|
63
|
+
success: true,
|
|
64
|
+
content: `File content from ${inputData.path} would appear here`,
|
|
65
|
+
};
|
|
66
|
+
} catch (error) {
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Tool: Write File
|
|
77
|
+
* Writes content to a file in the filesystem
|
|
78
|
+
*/
|
|
79
|
+
export const writeFileTool = createTool({
|
|
80
|
+
id: "write-file",
|
|
81
|
+
description: `
|
|
82
|
+
Write content to a file in the filesystem.
|
|
83
|
+
Use this when you need to create or update files with generated content.
|
|
84
|
+
`,
|
|
85
|
+
inputSchema: z.object({
|
|
86
|
+
path: z.string().describe("The path to the file to write"),
|
|
87
|
+
content: z.string().describe("The content to write to the file"),
|
|
88
|
+
encoding: z.enum(["utf8", "base64"]).optional().default("utf8").describe("File encoding"),
|
|
89
|
+
}),
|
|
90
|
+
outputSchema: z.object({
|
|
91
|
+
success: z.boolean(),
|
|
92
|
+
message: z.string().optional(),
|
|
93
|
+
error: z.string().optional(),
|
|
94
|
+
}),
|
|
95
|
+
execute: async (inputData) => {
|
|
96
|
+
try {
|
|
97
|
+
// In a real implementation, this would actually write files
|
|
98
|
+
// For now, we'll simulate with a placeholder
|
|
99
|
+
return {
|
|
100
|
+
success: true,
|
|
101
|
+
message: `File written successfully to ${inputData.path}`,
|
|
102
|
+
};
|
|
103
|
+
} catch (error) {
|
|
104
|
+
return {
|
|
105
|
+
success: false,
|
|
106
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Tool: List Directory
|
|
114
|
+
* Lists files and directories in a given path
|
|
115
|
+
*/
|
|
116
|
+
export const listDirectoryTool = createTool({
|
|
117
|
+
id: "list-directory",
|
|
118
|
+
description: `
|
|
119
|
+
List files and directories in a given path.
|
|
120
|
+
Use this to explore the filesystem structure.
|
|
121
|
+
`,
|
|
122
|
+
inputSchema: z.object({
|
|
123
|
+
path: z.string().describe("The path to list directory contents for"),
|
|
124
|
+
}),
|
|
125
|
+
outputSchema: z.object({
|
|
126
|
+
success: z.boolean(),
|
|
127
|
+
files: z.array(z.object({
|
|
128
|
+
name: z.string(),
|
|
129
|
+
type: z.enum(["file", "directory"]),
|
|
130
|
+
size: z.number().optional(),
|
|
131
|
+
modified: z.string().optional(),
|
|
132
|
+
})).optional(),
|
|
133
|
+
error: z.string().optional(),
|
|
134
|
+
}),
|
|
135
|
+
execute: async (inputData: any) => {
|
|
136
|
+
try {
|
|
137
|
+
// In a real implementation, this would actually list directories
|
|
138
|
+
// For now, we'll simulate with a placeholder
|
|
139
|
+
return {
|
|
140
|
+
success: true,
|
|
141
|
+
files: [
|
|
142
|
+
{ name: "example.txt", type: "file" as const, size: 1024 },
|
|
143
|
+
{ name: "data", type: "directory" as const },
|
|
144
|
+
],
|
|
145
|
+
};
|
|
146
|
+
} catch (error) {
|
|
147
|
+
return {
|
|
148
|
+
success: false,
|
|
149
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
// ==================== CODE EXECUTION TOOLS ====================
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Tool: Execute Code
|
|
159
|
+
* Executes code in a sandboxed environment
|
|
160
|
+
*/
|
|
161
|
+
export const executeCodeTool = createTool({
|
|
162
|
+
id: "execute-code",
|
|
163
|
+
description: `
|
|
164
|
+
Execute code in a sandboxed environment.
|
|
165
|
+
Supports JavaScript, Python, and shell scripts.
|
|
166
|
+
Use this when you need to run computations or scripts.
|
|
167
|
+
`,
|
|
168
|
+
inputSchema: z.object({
|
|
169
|
+
language: z.enum(["javascript", "python", "shell"]).describe("Programming language to execute"),
|
|
170
|
+
code: z.string().describe("Code to execute"),
|
|
171
|
+
timeout: z.number().optional().default(30000).describe("Execution timeout in milliseconds"),
|
|
172
|
+
}),
|
|
173
|
+
outputSchema: z.object({
|
|
174
|
+
success: z.boolean(),
|
|
175
|
+
output: z.string().optional(),
|
|
176
|
+
error: z.string().optional(),
|
|
177
|
+
executionTime: z.number().optional(),
|
|
178
|
+
}),
|
|
179
|
+
execute: async (inputData) => {
|
|
180
|
+
try {
|
|
181
|
+
// In a real implementation, this would actually execute code
|
|
182
|
+
// For now, we'll simulate with a placeholder
|
|
183
|
+
const startTime = Date.now();
|
|
184
|
+
|
|
185
|
+
// Simulate execution
|
|
186
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
187
|
+
|
|
188
|
+
const executionTime = Date.now() - startTime;
|
|
189
|
+
|
|
190
|
+
return {
|
|
191
|
+
success: true,
|
|
192
|
+
output: `Executed ${inputData.language} code successfully\nResult: simulated output`,
|
|
193
|
+
executionTime,
|
|
194
|
+
};
|
|
195
|
+
} catch (error) {
|
|
196
|
+
return {
|
|
197
|
+
success: false,
|
|
198
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
// ==================== CALENDAR TOOLS ====================
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Tool: Create Calendar Event
|
|
208
|
+
* Creates a calendar event
|
|
209
|
+
*/
|
|
210
|
+
export const createCalendarEventTool = createTool({
|
|
211
|
+
id: "create-calendar-event",
|
|
212
|
+
description: `
|
|
213
|
+
Create a calendar event.
|
|
214
|
+
Use this to schedule meetings, appointments, or reminders.
|
|
215
|
+
`,
|
|
216
|
+
inputSchema: z.object({
|
|
217
|
+
title: z.string().describe("Event title"),
|
|
218
|
+
description: z.string().optional().describe("Event description"),
|
|
219
|
+
startTime: z.string().datetime().describe("Event start time (ISO 8601)"),
|
|
220
|
+
endTime: z.string().datetime().describe("Event end time (ISO 8601)"),
|
|
221
|
+
attendees: z.array(z.string()).optional().describe("Email addresses of attendees"),
|
|
222
|
+
location: z.string().optional().describe("Event location"),
|
|
223
|
+
}),
|
|
224
|
+
outputSchema: z.object({
|
|
225
|
+
success: z.boolean(),
|
|
226
|
+
eventId: z.string().optional(),
|
|
227
|
+
message: z.string().optional(),
|
|
228
|
+
error: z.string().optional(),
|
|
229
|
+
}),
|
|
230
|
+
execute: async (inputData) => {
|
|
231
|
+
try {
|
|
232
|
+
// In a real implementation, this would integrate with calendar services
|
|
233
|
+
// For now, we'll simulate with a placeholder
|
|
234
|
+
return {
|
|
235
|
+
success: true,
|
|
236
|
+
eventId: `event-${Date.now()}`,
|
|
237
|
+
message: `Created calendar event: ${inputData.title}`,
|
|
238
|
+
};
|
|
239
|
+
} catch (error) {
|
|
240
|
+
return {
|
|
241
|
+
success: false,
|
|
242
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Tool: List Calendar Events
|
|
250
|
+
* Lists upcoming calendar events
|
|
251
|
+
*/
|
|
252
|
+
export const listCalendarEventsTool = createTool({
|
|
253
|
+
id: "list-calendar-events",
|
|
254
|
+
description: `
|
|
255
|
+
List upcoming calendar events.
|
|
256
|
+
Use this to check schedules or find available time slots.
|
|
257
|
+
`,
|
|
258
|
+
inputSchema: z.object({
|
|
259
|
+
startTime: z.string().datetime().optional().describe("Start time to search from (ISO 8601)"),
|
|
260
|
+
endTime: z.string().datetime().optional().describe("End time to search to (ISO 8601)"),
|
|
261
|
+
maxResults: z.number().optional().default(10).describe("Maximum number of events to return"),
|
|
262
|
+
}),
|
|
263
|
+
outputSchema: z.object({
|
|
264
|
+
success: z.boolean(),
|
|
265
|
+
events: z.array(z.object({
|
|
266
|
+
id: z.string(),
|
|
267
|
+
title: z.string(),
|
|
268
|
+
description: z.string().optional(),
|
|
269
|
+
startTime: z.string(),
|
|
270
|
+
endTime: z.string(),
|
|
271
|
+
attendees: z.array(z.string()).optional(),
|
|
272
|
+
location: z.string().optional(),
|
|
273
|
+
})).optional(),
|
|
274
|
+
error: z.string().optional(),
|
|
275
|
+
}),
|
|
276
|
+
execute: async (inputData) => {
|
|
277
|
+
try {
|
|
278
|
+
// In a real implementation, this would fetch from calendar services
|
|
279
|
+
// For now, we'll simulate with a placeholder
|
|
280
|
+
return {
|
|
281
|
+
success: true,
|
|
282
|
+
events: [
|
|
283
|
+
{
|
|
284
|
+
id: "event-1",
|
|
285
|
+
title: "Team Meeting",
|
|
286
|
+
startTime: new Date().toISOString(),
|
|
287
|
+
endTime: new Date(Date.now() + 3600000).toISOString(),
|
|
288
|
+
attendees: ["team@example.com"],
|
|
289
|
+
},
|
|
290
|
+
],
|
|
291
|
+
};
|
|
292
|
+
} catch (error) {
|
|
293
|
+
return {
|
|
294
|
+
success: false,
|
|
295
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
// ==================== EMAIL TOOLS ====================
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Tool: Send Email
|
|
305
|
+
* Sends an email
|
|
306
|
+
*/
|
|
307
|
+
export const sendEmailTool = createTool({
|
|
308
|
+
id: "send-email",
|
|
309
|
+
description: `
|
|
310
|
+
Send an email.
|
|
311
|
+
Use this to communicate with users or send notifications.
|
|
312
|
+
`,
|
|
313
|
+
inputSchema: z.object({
|
|
314
|
+
to: z.string().email().describe("Recipient email address"),
|
|
315
|
+
subject: z.string().describe("Email subject"),
|
|
316
|
+
body: z.string().describe("Email body content"),
|
|
317
|
+
cc: z.array(z.string().email()).optional().describe("CC recipients"),
|
|
318
|
+
bcc: z.array(z.string().email()).optional().describe("BCC recipients"),
|
|
319
|
+
}),
|
|
320
|
+
outputSchema: z.object({
|
|
321
|
+
success: z.boolean(),
|
|
322
|
+
messageId: z.string().optional(),
|
|
323
|
+
message: z.string().optional(),
|
|
324
|
+
error: z.string().optional(),
|
|
325
|
+
}),
|
|
326
|
+
execute: async (inputData) => {
|
|
327
|
+
try {
|
|
328
|
+
// In a real implementation, this would integrate with email services
|
|
329
|
+
// For now, we'll simulate with a placeholder
|
|
330
|
+
return {
|
|
331
|
+
success: true,
|
|
332
|
+
messageId: `msg-${Date.now()}`,
|
|
333
|
+
message: `Sent email to ${inputData.to}`,
|
|
334
|
+
};
|
|
335
|
+
} catch (error) {
|
|
336
|
+
return {
|
|
337
|
+
success: false,
|
|
338
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
// ==================== DATABASE TOOLS ====================
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Tool: Query Database
|
|
348
|
+
* Executes a database query
|
|
349
|
+
*/
|
|
350
|
+
export const queryDatabaseTool = createTool({
|
|
351
|
+
id: "query-database",
|
|
352
|
+
description: `
|
|
353
|
+
Execute a database query.
|
|
354
|
+
Use this to retrieve or manipulate data in databases.
|
|
355
|
+
`,
|
|
356
|
+
inputSchema: z.object({
|
|
357
|
+
query: z.string().describe("SQL query to execute"),
|
|
358
|
+
parameters: z.record(z.union([z.string(), z.number(), z.boolean()])).optional().describe("Query parameters"),
|
|
359
|
+
}),
|
|
360
|
+
outputSchema: z.object({
|
|
361
|
+
success: z.boolean(),
|
|
362
|
+
results: z.array(z.record(z.any())).optional(),
|
|
363
|
+
rowCount: z.number().optional(),
|
|
364
|
+
message: z.string().optional(),
|
|
365
|
+
error: z.string().optional(),
|
|
366
|
+
}),
|
|
367
|
+
execute: async (inputData) => {
|
|
368
|
+
try {
|
|
369
|
+
// In a real implementation, this would connect to a database
|
|
370
|
+
// For now, we'll simulate with a placeholder
|
|
371
|
+
return {
|
|
372
|
+
success: true,
|
|
373
|
+
results: [{ id: 1, name: "Sample Data" }],
|
|
374
|
+
rowCount: 1,
|
|
375
|
+
message: "Query executed successfully",
|
|
376
|
+
};
|
|
377
|
+
} catch (error) {
|
|
378
|
+
return {
|
|
379
|
+
success: false,
|
|
380
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
// ==================== SOCIAL MEDIA TOOLS ====================
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* Tool: Post to Twitter
|
|
390
|
+
* Posts a tweet to Twitter/X
|
|
391
|
+
*/
|
|
392
|
+
export const postToTwitterTool = createTool({
|
|
393
|
+
id: "post-to-twitter",
|
|
394
|
+
description: `
|
|
395
|
+
Post a tweet to Twitter/X.
|
|
396
|
+
Use this to share updates or information on social media.
|
|
397
|
+
`,
|
|
398
|
+
inputSchema: z.object({
|
|
399
|
+
content: z.string().max(280).describe("Tweet content (max 280 characters)"),
|
|
400
|
+
mediaUrls: z.array(z.string().url()).optional().describe("URLs of media to attach"),
|
|
401
|
+
}),
|
|
402
|
+
outputSchema: z.object({
|
|
403
|
+
success: z.boolean(),
|
|
404
|
+
tweetId: z.string().optional(),
|
|
405
|
+
url: z.string().optional(),
|
|
406
|
+
message: z.string().optional(),
|
|
407
|
+
error: z.string().optional(),
|
|
408
|
+
}),
|
|
409
|
+
execute: async (inputData) => {
|
|
410
|
+
try {
|
|
411
|
+
// In a real implementation, this would integrate with Twitter API
|
|
412
|
+
// For now, we'll simulate with a placeholder
|
|
413
|
+
return {
|
|
414
|
+
success: true,
|
|
415
|
+
tweetId: `tweet-${Date.now()}`,
|
|
416
|
+
url: `https://twitter.com/user/status/tweet-${Date.now()}`,
|
|
417
|
+
message: "Posted to Twitter successfully",
|
|
418
|
+
};
|
|
419
|
+
} catch (error) {
|
|
420
|
+
return {
|
|
421
|
+
success: false,
|
|
422
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
// ==================== ANALYTICS TOOLS ====================
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* Tool: Get Analytics Report
|
|
432
|
+
* Retrieves analytics data
|
|
433
|
+
*/
|
|
434
|
+
export const getAnalyticsReportTool = createTool({
|
|
435
|
+
id: "get-analytics-report",
|
|
436
|
+
description: `
|
|
437
|
+
Retrieve analytics data and reports.
|
|
438
|
+
Use this to get insights about website traffic, user behavior, or business metrics.
|
|
439
|
+
`,
|
|
440
|
+
inputSchema: z.object({
|
|
441
|
+
reportType: z.enum([
|
|
442
|
+
"traffic", "conversion", "engagement", "revenue", "user-behavior"
|
|
443
|
+
]).describe("Type of analytics report to retrieve"),
|
|
444
|
+
startDate: z.string().date().optional().describe("Start date (YYYY-MM-DD)"),
|
|
445
|
+
endDate: z.string().date().optional().describe("End date (YYYY-MM-DD)"),
|
|
446
|
+
dimensions: z.array(z.string()).optional().describe("Dimensions to group by"),
|
|
447
|
+
metrics: z.array(z.string()).optional().describe("Metrics to include"),
|
|
448
|
+
}),
|
|
449
|
+
outputSchema: z.object({
|
|
450
|
+
success: z.boolean(),
|
|
451
|
+
data: z.object({
|
|
452
|
+
reportType: z.enum(["traffic", "conversion", "engagement", "revenue", "user-behavior"]),
|
|
453
|
+
period: z.string(),
|
|
454
|
+
sampleData: z.array(z.object({
|
|
455
|
+
metric: z.string(),
|
|
456
|
+
value: z.number(),
|
|
457
|
+
})),
|
|
458
|
+
}).optional(),
|
|
459
|
+
summary: z.object({
|
|
460
|
+
total: z.number(),
|
|
461
|
+
change: z.number().optional(),
|
|
462
|
+
trend: z.enum(["increasing", "decreasing", "stable"]).optional(),
|
|
463
|
+
}).optional(),
|
|
464
|
+
message: z.string().optional(),
|
|
465
|
+
error: z.string().optional(),
|
|
466
|
+
}).or(z.object({
|
|
467
|
+
success: z.boolean(),
|
|
468
|
+
error: z.string(),
|
|
469
|
+
})),
|
|
470
|
+
execute: async (inputData) => {
|
|
471
|
+
try {
|
|
472
|
+
// In a real implementation, this would fetch from analytics services
|
|
473
|
+
// For now, we'll simulate with a placeholder
|
|
474
|
+
const trend: "increasing" | "decreasing" | "stable" = "increasing";
|
|
475
|
+
|
|
476
|
+
return {
|
|
477
|
+
success: true,
|
|
478
|
+
data: {
|
|
479
|
+
reportType: inputData.reportType,
|
|
480
|
+
period: `${inputData.startDate || 'N/A'} to ${inputData.endDate || 'N/A'}`,
|
|
481
|
+
sampleData: [{ metric: "sample", value: 100 }],
|
|
482
|
+
},
|
|
483
|
+
summary: {
|
|
484
|
+
total: 100,
|
|
485
|
+
change: 5.2,
|
|
486
|
+
trend: trend,
|
|
487
|
+
},
|
|
488
|
+
message: "Analytics report retrieved successfully",
|
|
489
|
+
};
|
|
490
|
+
} catch (error) {
|
|
491
|
+
return {
|
|
492
|
+
success: false,
|
|
493
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
});
|
|
498
|
+
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendar Tools
|
|
3
|
+
*
|
|
4
|
+
* Tools for managing calendar events across multiple platforms.
|
|
5
|
+
* Note: These are placeholder implementations that require API integration.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { createTool } from "@mastra/core/tools";
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Create a calendar event
|
|
13
|
+
*/
|
|
14
|
+
export const createCalendarEventTool = createTool({
|
|
15
|
+
id: "create-calendar-event",
|
|
16
|
+
description: "Create a new calendar event with details like title, date, time, location, and attendees",
|
|
17
|
+
inputSchema: z.object({
|
|
18
|
+
platform: z.enum(["google", "outlook", "ical"]).default("google").describe("Calendar platform"),
|
|
19
|
+
title: z.string().describe("Event title"),
|
|
20
|
+
startDate: z.string().describe("Event start date (YYYY-MM-DD)"),
|
|
21
|
+
startTime: z.string().describe("Event start time (HH:MM)"),
|
|
22
|
+
duration: z.number().default(60).describe("Event duration in minutes"),
|
|
23
|
+
location: z.string().optional().describe("Event location"),
|
|
24
|
+
description: z.string().optional().describe("Event description"),
|
|
25
|
+
attendees: z.array(z.string()).optional().describe("List of email addresses for attendees"),
|
|
26
|
+
}),
|
|
27
|
+
outputSchema: z.object({
|
|
28
|
+
success: z.boolean(),
|
|
29
|
+
eventId: z.string().optional(),
|
|
30
|
+
message: z.string(),
|
|
31
|
+
platform: z.string(),
|
|
32
|
+
}),
|
|
33
|
+
execute: async ({ platform = "google", title, startDate, startTime, duration, location, description, attendees }) => {
|
|
34
|
+
// Placeholder: Would integrate with Google Calendar API, Microsoft Graph API, or iCal
|
|
35
|
+
|
|
36
|
+
const eventId = `evt-${Date.now()}`;
|
|
37
|
+
|
|
38
|
+
return {
|
|
39
|
+
success: true,
|
|
40
|
+
eventId,
|
|
41
|
+
message: `Created event "${title}" on ${startDate} at ${startTime} for ${duration} minutes`,
|
|
42
|
+
platform,
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* List calendar events
|
|
49
|
+
*/
|
|
50
|
+
export const listCalendarEventsTool = createTool({
|
|
51
|
+
id: "list-calendar-events",
|
|
52
|
+
description: "List calendar events within a date range",
|
|
53
|
+
inputSchema: z.object({
|
|
54
|
+
platform: z.enum(["google", "outlook", "ical"]).default("google").describe("Calendar platform"),
|
|
55
|
+
startDate: z.string().describe("Start date (YYYY-MM-DD)"),
|
|
56
|
+
endDate: z.string().optional().describe("End date (YYYY-MM-DD), defaults to start date"),
|
|
57
|
+
maxResults: z.number().default(10).describe("Maximum number of events to return"),
|
|
58
|
+
}),
|
|
59
|
+
outputSchema: z.object({
|
|
60
|
+
success: z.boolean(),
|
|
61
|
+
events: z.array(z.object({
|
|
62
|
+
id: z.string(),
|
|
63
|
+
title: z.string(),
|
|
64
|
+
startDate: z.string(),
|
|
65
|
+
startTime: z.string(),
|
|
66
|
+
duration: z.number(),
|
|
67
|
+
location: z.string().optional(),
|
|
68
|
+
})),
|
|
69
|
+
count: z.number(),
|
|
70
|
+
platform: z.string(),
|
|
71
|
+
}),
|
|
72
|
+
execute: async ({ platform = "google", startDate, endDate, maxResults }) => {
|
|
73
|
+
// Placeholder: Would query calendar API
|
|
74
|
+
|
|
75
|
+
const endDateToUse = endDate || startDate;
|
|
76
|
+
|
|
77
|
+
// Sample events for demonstration
|
|
78
|
+
const events = [
|
|
79
|
+
{
|
|
80
|
+
id: "evt-1",
|
|
81
|
+
title: "Team Meeting",
|
|
82
|
+
startDate,
|
|
83
|
+
startTime: "10:00",
|
|
84
|
+
duration: 60,
|
|
85
|
+
location: "Conference Room A",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: "evt-2",
|
|
89
|
+
title: "Project Review",
|
|
90
|
+
startDate,
|
|
91
|
+
startTime: "14:00",
|
|
92
|
+
duration: 90,
|
|
93
|
+
location: "Online",
|
|
94
|
+
},
|
|
95
|
+
];
|
|
96
|
+
|
|
97
|
+
return {
|
|
98
|
+
success: true,
|
|
99
|
+
events: events.slice(0, maxResults),
|
|
100
|
+
count: events.length,
|
|
101
|
+
platform,
|
|
102
|
+
};
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Update a calendar event
|
|
108
|
+
*/
|
|
109
|
+
export const updateCalendarEventTool = createTool({
|
|
110
|
+
id: "update-calendar-event",
|
|
111
|
+
description: "Update an existing calendar event",
|
|
112
|
+
inputSchema: z.object({
|
|
113
|
+
platform: z.enum(["google", "outlook", "ical"]).default("google").describe("Calendar platform"),
|
|
114
|
+
eventId: z.string().describe("ID of the event to update"),
|
|
115
|
+
title: z.string().optional().describe("New event title"),
|
|
116
|
+
startDate: z.string().optional().describe("New start date (YYYY-MM-DD)"),
|
|
117
|
+
startTime: z.string().optional().describe("New start time (HH:MM)"),
|
|
118
|
+
duration: z.number().optional().describe("New duration in minutes"),
|
|
119
|
+
location: z.string().optional().describe("New location"),
|
|
120
|
+
description: z.string().optional().describe("New description"),
|
|
121
|
+
}),
|
|
122
|
+
outputSchema: z.object({
|
|
123
|
+
success: z.boolean(),
|
|
124
|
+
message: z.string(),
|
|
125
|
+
platform: z.string().optional(),
|
|
126
|
+
}),
|
|
127
|
+
execute: async ({ platform, eventId, ...updates }) => {
|
|
128
|
+
// Placeholder: Would update event via API
|
|
129
|
+
|
|
130
|
+
return {
|
|
131
|
+
success: true,
|
|
132
|
+
message: `Updated event ${eventId} with ${Object.keys(updates).length} changes`,
|
|
133
|
+
platform: platform || undefined,
|
|
134
|
+
};
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Delete a calendar event
|
|
140
|
+
*/
|
|
141
|
+
export const deleteCalendarEventTool = createTool({
|
|
142
|
+
id: "delete-calendar-event",
|
|
143
|
+
description: "Delete a calendar event",
|
|
144
|
+
inputSchema: z.object({
|
|
145
|
+
platform: z.enum(["google", "outlook", "ical"]).default("google").describe("Calendar platform"),
|
|
146
|
+
eventId: z.string().describe("ID of the event to delete"),
|
|
147
|
+
}),
|
|
148
|
+
outputSchema: z.object({
|
|
149
|
+
success: z.boolean(),
|
|
150
|
+
message: z.string(),
|
|
151
|
+
platform: z.string().optional(),
|
|
152
|
+
}),
|
|
153
|
+
execute: async ({ platform, eventId }) => {
|
|
154
|
+
// Placeholder: Would delete event via API
|
|
155
|
+
|
|
156
|
+
return {
|
|
157
|
+
success: true,
|
|
158
|
+
message: `Deleted event ${eventId}`,
|
|
159
|
+
platform: platform || undefined,
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Export all calendar tools
|
|
166
|
+
*/
|
|
167
|
+
export const calendarTools = {
|
|
168
|
+
createCalendarEvent: createCalendarEventTool,
|
|
169
|
+
listCalendarEvents: listCalendarEventsTool,
|
|
170
|
+
updateCalendarEvent: updateCalendarEventTool,
|
|
171
|
+
deleteCalendarEvent: deleteCalendarEventTool,
|
|
172
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// podman-workspace-mcp-cli.ts - CLI entry point for Podman Workspace MCP Server
|
|
3
|
+
import { podmanWorkspaceMCPServer } from "./podman-workspace-mcp.js";
|
|
4
|
+
|
|
5
|
+
async function main() {
|
|
6
|
+
console.error("Starting Podman Workspace MCP Server...");
|
|
7
|
+
|
|
8
|
+
await podmanWorkspaceMCPServer.startStdio();
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
main().catch((error) => {
|
|
12
|
+
console.error("Fatal error:", error);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
});
|