@meetploy/agent-sdk 0.0.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/dist/tools.js ADDED
@@ -0,0 +1,328 @@
1
+ import { saveWorkspace } from "./workspace.js";
2
+ const memorySetTool = {
3
+ type: "function",
4
+ function: {
5
+ name: "memory_set",
6
+ description: "Store a piece of information about the user for future conversations. Use this to remember preferences, names, configurations, etc.",
7
+ parameters: {
8
+ type: "object",
9
+ properties: {
10
+ key: {
11
+ type: "string",
12
+ description: "The key to store the memory under (e.g., 'name', 'language', 'timezone')",
13
+ },
14
+ value: { type: "string", description: "The value to remember" },
15
+ secret: {
16
+ type: "boolean",
17
+ description: "Whether this is sensitive data that should be hidden in debug output. Default: false",
18
+ },
19
+ },
20
+ required: ["key", "value"],
21
+ },
22
+ },
23
+ };
24
+ const memoryGetTool = {
25
+ type: "function",
26
+ function: {
27
+ name: "memory_get",
28
+ description: "Retrieve a stored memory about the user.",
29
+ parameters: {
30
+ type: "object",
31
+ properties: {
32
+ key: { type: "string", description: "The key to look up" },
33
+ },
34
+ required: ["key"],
35
+ },
36
+ },
37
+ };
38
+ const memoryDeleteTool = {
39
+ type: "function",
40
+ function: {
41
+ name: "memory_delete",
42
+ description: "Delete a stored memory.",
43
+ parameters: {
44
+ type: "object",
45
+ properties: {
46
+ key: { type: "string", description: "The key to delete" },
47
+ },
48
+ required: ["key"],
49
+ },
50
+ },
51
+ };
52
+ const memoryListTool = {
53
+ type: "function",
54
+ function: {
55
+ name: "memory_list",
56
+ description: "List all stored memory keys for the user.",
57
+ parameters: { type: "object", properties: {} },
58
+ },
59
+ };
60
+ const artifactCreateTool = {
61
+ type: "function",
62
+ function: {
63
+ name: "artifact_create",
64
+ description: "Create a file artifact and send it to the user. Use for code, documents, data exports, etc.",
65
+ parameters: {
66
+ type: "object",
67
+ properties: {
68
+ filename: { type: "string", description: "Name of the file to create" },
69
+ content: { type: "string", description: "The file contents" },
70
+ caption: {
71
+ type: "string",
72
+ description: "Optional message to send with the file",
73
+ },
74
+ },
75
+ required: ["filename", "content"],
76
+ },
77
+ },
78
+ };
79
+ const scheduleTaskTool = {
80
+ type: "function",
81
+ function: {
82
+ name: "schedule_task",
83
+ description: "Schedule a task to run at a future time. The agent will be invoked with the task description at the scheduled time.",
84
+ parameters: {
85
+ type: "object",
86
+ properties: {
87
+ description: {
88
+ type: "string",
89
+ description: "What the agent should do when the task fires",
90
+ },
91
+ delayMs: {
92
+ type: "number",
93
+ description: "Delay in milliseconds from now",
94
+ },
95
+ recurring: {
96
+ type: "boolean",
97
+ description: "Whether this task should repeat. Default: false",
98
+ },
99
+ intervalMs: {
100
+ type: "number",
101
+ description: "Interval in ms for recurring tasks",
102
+ },
103
+ },
104
+ required: ["description", "delayMs"],
105
+ },
106
+ },
107
+ };
108
+ const mcpCallToolTool = {
109
+ type: "function",
110
+ function: {
111
+ name: "mcp_call_tool",
112
+ description: "Call a tool provided by an installed MCP server.",
113
+ parameters: {
114
+ type: "object",
115
+ properties: {
116
+ serverName: { type: "string", description: "Name of the MCP server" },
117
+ toolName: { type: "string", description: "Name of the tool to call" },
118
+ arguments: {
119
+ type: "object",
120
+ description: "Arguments to pass to the tool",
121
+ },
122
+ },
123
+ required: ["serverName", "toolName"],
124
+ },
125
+ },
126
+ };
127
+ export function buildOpenAITools(config, features, mcpServers) {
128
+ const tools = [];
129
+ if (features.memory !== false) {
130
+ tools.push(memorySetTool, memoryGetTool, memoryDeleteTool, memoryListTool);
131
+ }
132
+ if (features.artifacts !== false) {
133
+ tools.push(artifactCreateTool);
134
+ }
135
+ if (features.scheduling !== false) {
136
+ tools.push(scheduleTaskTool);
137
+ }
138
+ if (features.mcp !== false && mcpServers.length > 0) {
139
+ tools.push(mcpCallToolTool);
140
+ }
141
+ if (config.tools) {
142
+ for (const tool of config.tools) {
143
+ tools.push({
144
+ type: "function",
145
+ function: {
146
+ name: tool.name,
147
+ description: tool.description,
148
+ parameters: tool.parameters,
149
+ },
150
+ });
151
+ }
152
+ }
153
+ return tools;
154
+ }
155
+ export async function executeTool(toolName, args, ctx) {
156
+ const { workspace } = ctx;
157
+ function buildHookContext() {
158
+ return {
159
+ userId: workspace.userId,
160
+ chatId: workspace.chatId,
161
+ env: ctx.env,
162
+ state: ctx.state,
163
+ execute: async (name, toolArgs) => {
164
+ const result = await executeTool(name, toolArgs, ctx);
165
+ return result.output;
166
+ },
167
+ };
168
+ }
169
+ switch (toolName) {
170
+ case "memory_set": {
171
+ const key = args.key;
172
+ const value = args.value;
173
+ const secret = args.secret ?? false;
174
+ const entry = { value, secret, createdAt: Date.now() };
175
+ workspace.memory[key] = entry;
176
+ await saveWorkspace(ctx.state, workspace);
177
+ if (ctx.hooks?.onMemorySet) {
178
+ await ctx.hooks.onMemorySet(buildHookContext(), key, secret);
179
+ }
180
+ return { output: `Stored memory: ${key}`, workspace };
181
+ }
182
+ case "memory_get": {
183
+ const key = args.key;
184
+ if (!(key in workspace.memory)) {
185
+ return { output: `No memory found for key: ${key}`, workspace };
186
+ }
187
+ return { output: workspace.memory[key].value, workspace };
188
+ }
189
+ case "memory_delete": {
190
+ const key = args.key;
191
+ const existed = key in workspace.memory;
192
+ delete workspace.memory[key];
193
+ await saveWorkspace(ctx.state, workspace);
194
+ if (existed && ctx.hooks?.onMemoryDelete) {
195
+ await ctx.hooks.onMemoryDelete(buildHookContext(), key);
196
+ }
197
+ return {
198
+ output: existed
199
+ ? `Deleted memory: ${key}`
200
+ : `No memory found for key: ${key}`,
201
+ workspace,
202
+ };
203
+ }
204
+ case "memory_list": {
205
+ const keys = Object.keys(workspace.memory);
206
+ if (keys.length === 0) {
207
+ return { output: "No memories stored.", workspace };
208
+ }
209
+ return { output: `Stored memories: ${keys.join(", ")}`, workspace };
210
+ }
211
+ case "artifact_create": {
212
+ const filename = args.filename;
213
+ const content = args.content;
214
+ const caption = args.caption;
215
+ const fileKey = `${workspace.userId}/${filename}`;
216
+ await ctx.env.FILES.put(fileKey, content, {
217
+ contentType: "application/octet-stream",
218
+ });
219
+ await ctx.messenger.sendDocument(workspace.chatId, filename, content, caption);
220
+ if (ctx.hooks?.onArtifactCreated) {
221
+ await ctx.hooks.onArtifactCreated(buildHookContext(), filename, content);
222
+ }
223
+ return { output: `Created and sent artifact: ${filename}`, workspace };
224
+ }
225
+ case "schedule_task": {
226
+ const description = args.description;
227
+ const delayMs = args.delayMs;
228
+ const recurring = args.recurring ?? false;
229
+ const intervalMs = args.intervalMs;
230
+ const taskId = `task_${workspace.userId}_${String(Date.now())}`;
231
+ const scheduledTime = Date.now() + delayMs;
232
+ const task = {
233
+ id: taskId,
234
+ description,
235
+ scheduledTime,
236
+ recurring,
237
+ intervalMs,
238
+ };
239
+ await ctx.env.SCHEDULER.set(taskId, scheduledTime, {
240
+ payload: {
241
+ userId: workspace.userId,
242
+ chatId: workspace.chatId,
243
+ platform: workspace.platform,
244
+ description,
245
+ },
246
+ intervalMs: recurring ? intervalMs : undefined,
247
+ });
248
+ if (ctx.hooks?.onTaskScheduled) {
249
+ await ctx.hooks.onTaskScheduled(buildHookContext(), task);
250
+ }
251
+ return {
252
+ output: `Scheduled task "${description}" for ${new Date(scheduledTime).toISOString()}`,
253
+ workspace,
254
+ };
255
+ }
256
+ case "mcp_call_tool": {
257
+ const serverName = args.serverName;
258
+ const toolNameArg = args.toolName;
259
+ const toolArgs = args.arguments ?? {};
260
+ const server = workspace.mcpServers.find((s) => s.name === serverName);
261
+ if (!server) {
262
+ return { output: `MCP server not found: ${serverName}`, workspace };
263
+ }
264
+ const tool = server.tools.find((t) => t.name === toolNameArg);
265
+ if (!tool) {
266
+ return {
267
+ output: `Tool "${toolNameArg}" not found on server "${serverName}"`,
268
+ workspace,
269
+ };
270
+ }
271
+ const response = await fetch(`${server.url}/call`, {
272
+ method: "POST",
273
+ headers: { "Content-Type": "application/json" },
274
+ body: JSON.stringify({ tool: toolNameArg, arguments: toolArgs }),
275
+ });
276
+ if (!response.ok) {
277
+ return {
278
+ output: `MCP call failed: ${String(response.status)} ${response.statusText}`,
279
+ workspace,
280
+ };
281
+ }
282
+ const result = await response.text();
283
+ return { output: result, workspace };
284
+ }
285
+ default: {
286
+ const customTool = ctx.customTools.find((t) => t.name === toolName);
287
+ if (customTool) {
288
+ const toolCtx = {
289
+ userId: workspace.userId,
290
+ chatId: workspace.chatId,
291
+ env: ctx.env,
292
+ state: ctx.state,
293
+ messenger: ctx.messenger,
294
+ };
295
+ const output = await customTool.execute(args, toolCtx);
296
+ return { output, workspace };
297
+ }
298
+ return { output: `Unknown tool: ${toolName}`, workspace };
299
+ }
300
+ }
301
+ }
302
+ export function listAllToolNames(config, features, mcpServers) {
303
+ const names = [];
304
+ if (features.memory !== false) {
305
+ names.push("memory_set", "memory_get", "memory_delete", "memory_list");
306
+ }
307
+ if (features.artifacts !== false) {
308
+ names.push("artifact_create");
309
+ }
310
+ if (features.scheduling !== false) {
311
+ names.push("schedule_task");
312
+ }
313
+ if (features.mcp !== false && mcpServers.length > 0) {
314
+ names.push("mcp_call_tool");
315
+ }
316
+ for (const server of mcpServers) {
317
+ for (const tool of server.tools) {
318
+ names.push(`${server.name}/${tool.name}`);
319
+ }
320
+ }
321
+ if (config.tools) {
322
+ for (const tool of config.tools) {
323
+ names.push(tool.name);
324
+ }
325
+ }
326
+ return names;
327
+ }
328
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ import type { FileStorageBinding, Ploy, StateBinding, TimerBinding, WorkflowBinding } from "@meetploy/types";
2
+ export interface PloyEnv {
3
+ AI_URL: string;
4
+ AI_TOKEN: string;
5
+ STATE: StateBinding;
6
+ FILES: FileStorageBinding;
7
+ AGENT_WORKFLOW: WorkflowBinding;
8
+ SCHEDULER: TimerBinding;
9
+ vars: Record<string, string>;
10
+ }
11
+ export interface Messenger {
12
+ sendMessage: (chatId: string, text: string) => Promise<void>;
13
+ sendDocument: (chatId: string, filename: string, content: string | Uint8Array, caption?: string) => Promise<void>;
14
+ sendTypingIndicator: (chatId: string) => Promise<void>;
15
+ }
16
+ export interface ToolContext {
17
+ userId: string;
18
+ chatId: string;
19
+ env: PloyEnv;
20
+ state: StateManager;
21
+ messenger: Messenger;
22
+ }
23
+ export interface ToolDefinition<TArgs = Record<string, unknown>> {
24
+ name: string;
25
+ description: string;
26
+ parameters: Record<string, unknown>;
27
+ execute: (args: TArgs, ctx: ToolContext) => Promise<string>;
28
+ }
29
+ interface JsonTypeMap {
30
+ string: string;
31
+ number: number;
32
+ integer: number;
33
+ boolean: boolean;
34
+ object: Record<string, unknown>;
35
+ array: unknown[];
36
+ }
37
+ type InferPropertyType<T> = T extends {
38
+ type: infer U extends keyof JsonTypeMap;
39
+ } ? JsonTypeMap[U] : unknown;
40
+ type RequiredKeys<T> = T extends {
41
+ required: readonly (infer R)[];
42
+ } ? R extends string ? R : never : never;
43
+ type Simplify<T> = {
44
+ [K in keyof T]: T[K];
45
+ } & {};
46
+ export type InferSchemaArgs<T> = T extends {
47
+ properties: infer P extends Record<string, unknown>;
48
+ } ? Simplify<{
49
+ [K in keyof P as K extends RequiredKeys<T> ? K : never]: InferPropertyType<P[K]>;
50
+ } & {
51
+ [K in keyof P as K extends RequiredKeys<T> ? never : K]?: InferPropertyType<P[K]>;
52
+ }> : Record<string, unknown>;
53
+ export interface ToolParams {
54
+ type: "object";
55
+ properties: Record<string, {
56
+ type: string;
57
+ }>;
58
+ required?: readonly string[];
59
+ }
60
+ export interface FeatureFlags {
61
+ memory?: boolean;
62
+ artifacts?: boolean;
63
+ scheduling?: boolean;
64
+ mcp?: boolean;
65
+ }
66
+ export interface ScheduledTask {
67
+ id: string;
68
+ description: string;
69
+ scheduledTime: number;
70
+ recurring: boolean;
71
+ intervalMs?: number;
72
+ }
73
+ export interface HookContext {
74
+ userId: string;
75
+ chatId: string;
76
+ env: PloyEnv;
77
+ state: StateManager;
78
+ execute: (toolName: string, args: Record<string, unknown>) => Promise<string>;
79
+ }
80
+ export interface AgentHooks {
81
+ onMemorySet?: (ctx: HookContext, key: string, secret: boolean) => Promise<void>;
82
+ onMemoryDelete?: (ctx: HookContext, key: string) => Promise<void>;
83
+ onArtifactCreated?: (ctx: HookContext, filename: string, content: string) => Promise<void>;
84
+ onTaskScheduled?: (ctx: HookContext, task: ScheduledTask) => Promise<void>;
85
+ onRunComplete?: (ctx: HookContext, response: string) => Promise<void>;
86
+ onRunError?: (ctx: HookContext, error: Error) => Promise<void>;
87
+ }
88
+ export interface HandleMessageParams {
89
+ userId: string;
90
+ chatId: string;
91
+ platform: string;
92
+ text: string;
93
+ messenger: Messenger;
94
+ }
95
+ export interface AgentCommands {
96
+ reset: (userId: string, chatId: string) => Promise<string>;
97
+ debug: (userId: string, chatId: string) => Promise<string>;
98
+ installMcp: (userId: string, chatId: string, url: string) => Promise<string>;
99
+ uninstallMcp: (userId: string, name: string) => Promise<string>;
100
+ listTools: (userId: string) => Promise<string>;
101
+ }
102
+ export interface StateManager {
103
+ get: (key: string) => Promise<string | null>;
104
+ set: (key: string, value: string) => Promise<void>;
105
+ delete: (key: string) => Promise<void>;
106
+ getJSON: <T>(key: string) => Promise<T | null>;
107
+ setJSON: (key: string, value: unknown) => Promise<void>;
108
+ }
109
+ export interface AgentContext {
110
+ handleMessage: (params: HandleMessageParams) => Promise<void>;
111
+ commands: AgentCommands;
112
+ state: StateManager;
113
+ env: PloyEnv;
114
+ }
115
+ export interface AgentConfig {
116
+ model?: string;
117
+ systemPrompt: string | ((userId: string) => string | Promise<string>);
118
+ features?: FeatureFlags;
119
+ tools?: ToolDefinition<any>[];
120
+ handle: (req: Request, env: PloyEnv, agent: AgentContext) => Response | Promise<Response>;
121
+ hooks?: AgentHooks;
122
+ maxSteps?: number;
123
+ }
124
+ export interface OpenAITool {
125
+ type: "function";
126
+ function: {
127
+ name: string;
128
+ description: string;
129
+ parameters: Record<string, unknown>;
130
+ };
131
+ }
132
+ export interface ChatMessage {
133
+ role: "system" | "user" | "assistant" | "tool";
134
+ content: string | null;
135
+ tool_calls?: ToolCall[];
136
+ tool_call_id?: string;
137
+ name?: string;
138
+ }
139
+ export interface ToolCall {
140
+ id: string;
141
+ type: "function";
142
+ function: {
143
+ name: string;
144
+ arguments: string;
145
+ };
146
+ }
147
+ export interface Workspace {
148
+ userId: string;
149
+ chatId: string;
150
+ platform: string;
151
+ messages: ChatMessage[];
152
+ memory: Record<string, MemoryEntry>;
153
+ mcpServers: McpServer[];
154
+ debugMode: boolean;
155
+ activeRunId: string | null;
156
+ queue: QueuedMessage[];
157
+ }
158
+ export interface MemoryEntry {
159
+ value: string;
160
+ secret: boolean;
161
+ createdAt: number;
162
+ }
163
+ export interface McpServer {
164
+ name: string;
165
+ url: string;
166
+ tools: McpServerTool[];
167
+ }
168
+ export interface McpServerTool {
169
+ name: string;
170
+ description: string;
171
+ parameters: Record<string, unknown>;
172
+ }
173
+ export interface QueuedMessage {
174
+ text: string;
175
+ timestamp: number;
176
+ }
177
+ export interface AgentRunInput {
178
+ userId: string;
179
+ chatId: string;
180
+ platform: string;
181
+ text: string;
182
+ }
183
+ export type AgentExport = Ploy<PloyEnv>;
184
+ export {};
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { AgentConfig, AgentRunInput, PloyEnv } from "./types.js";
2
+ import type { WorkflowContext } from "@meetploy/types";
3
+ export declare function createAgentWorkflow(config: AgentConfig): (ctx: WorkflowContext<PloyEnv, AgentRunInput>) => Promise<void>;