@slashfi/agents-sdk 0.18.0 → 0.19.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/cli.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * agents-sdk CLI
4
+ *
5
+ * Unified command-line interface for the agents SDK.
6
+ *
7
+ * Commands:
8
+ * codegen - Generate agent definitions from an MCP server
9
+ * use - Execute a tool on a codegenned agent
10
+ *
11
+ * @example
12
+ * ```bash
13
+ * # Generate from MCP server
14
+ * agents-sdk codegen --server 'npx @mcp/notion' --name notion --out ./agents/@notion
15
+ *
16
+ * # Use a tool
17
+ * agents-sdk use notion search_pages '{"query": "hello"}'
18
+ *
19
+ * # List tools on a codegenned agent
20
+ * agents-sdk use notion --list
21
+ * ```
22
+ */
23
+ export {};
24
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;GAoBG"}
package/dist/cli.js ADDED
@@ -0,0 +1,234 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * agents-sdk CLI
4
+ *
5
+ * Unified command-line interface for the agents SDK.
6
+ *
7
+ * Commands:
8
+ * codegen - Generate agent definitions from an MCP server
9
+ * use - Execute a tool on a codegenned agent
10
+ *
11
+ * @example
12
+ * ```bash
13
+ * # Generate from MCP server
14
+ * agents-sdk codegen --server 'npx @mcp/notion' --name notion --out ./agents/@notion
15
+ *
16
+ * # Use a tool
17
+ * agents-sdk use notion search_pages '{"query": "hello"}'
18
+ *
19
+ * # List tools on a codegenned agent
20
+ * agents-sdk use notion --list
21
+ * ```
22
+ */
23
+ import { resolve, join } from "node:path";
24
+ import { existsSync, readdirSync } from "node:fs";
25
+ import { codegen, useAgent, listAgentTools } from "./codegen.js";
26
+ const args = process.argv.slice(2);
27
+ const command = args[0];
28
+ // ============================================
29
+ // Helpers
30
+ // ============================================
31
+ function parseFlag(args, flag) {
32
+ const idx = args.indexOf(flag);
33
+ if (idx === -1 || idx + 1 >= args.length)
34
+ return undefined;
35
+ return args[idx + 1];
36
+ }
37
+ function hasFlag(args, flag) {
38
+ return args.includes(flag);
39
+ }
40
+ /** Default directory for codegenned agents */
41
+ function getAgentsDir() {
42
+ return resolve(process.env.AGENTS_SDK_DIR ?? "./agents");
43
+ }
44
+ /** Find an agent directory by name */
45
+ function findAgentDir(name) {
46
+ const agentsDir = getAgentsDir();
47
+ // Try exact path first
48
+ const exactPath = resolve(name);
49
+ if (existsSync(join(exactPath, ".codegen-manifest.json"))) {
50
+ return exactPath;
51
+ }
52
+ // Try under agents dir with @ prefix
53
+ const withAt = join(agentsDir, `@${name}`);
54
+ if (existsSync(join(withAt, ".codegen-manifest.json"))) {
55
+ return withAt;
56
+ }
57
+ // Try under agents dir without @ prefix
58
+ const withoutAt = join(agentsDir, name);
59
+ if (existsSync(join(withoutAt, ".codegen-manifest.json"))) {
60
+ return withoutAt;
61
+ }
62
+ return null;
63
+ }
64
+ function printUsage() {
65
+ console.log(`agents-sdk - SDK for building AI agents
66
+
67
+ Usage:
68
+ agents-sdk codegen [options] Generate agent from MCP server
69
+ agents-sdk use <agent> [options] Execute a tool on a generated agent
70
+ agents-sdk list List all generated agents
71
+
72
+ Codegen options:
73
+ --server <source> MCP server (command string or URL)
74
+ --name <name> Agent name (default: derived from server)
75
+ --out <dir> Output directory (default: ./agents/@<name>)
76
+ --path <path> Agent path override
77
+ --no-cli Skip CLI generation
78
+ --no-types Skip TypeScript interface generation
79
+ --visibility <level> Agent visibility (public|internal|private)
80
+
81
+ Use options:
82
+ agents-sdk use <agent> <tool> [params_json]
83
+ agents-sdk use <agent> --list List tools on the agent
84
+
85
+ Examples:
86
+ agents-sdk codegen --server 'npx @mcp/notion' --name notion
87
+ agents-sdk use notion search_pages '{"query": "hello"}'
88
+ agents-sdk use notion --list
89
+ `);
90
+ }
91
+ // ============================================
92
+ // Commands
93
+ // ============================================
94
+ async function runCodegen(args) {
95
+ const server = parseFlag(args, "--server");
96
+ const name = parseFlag(args, "--name");
97
+ const outDir = parseFlag(args, "--out");
98
+ const agentPath = parseFlag(args, "--path");
99
+ const visibility = parseFlag(args, "--visibility");
100
+ const noCli = hasFlag(args, "--no-cli");
101
+ const noTypes = hasFlag(args, "--no-types");
102
+ if (!server) {
103
+ console.error("Error: --server is required.\n" +
104
+ " Example: agents-sdk codegen --server 'npx @mcp/notion' --name notion");
105
+ process.exit(1);
106
+ }
107
+ const resolvedOutDir = outDir ??
108
+ join(getAgentsDir(), `@${(name ?? "mcp-agent").toLowerCase().replace(/[^a-z0-9-]/g, "-")}`);
109
+ console.log(`Connecting to MCP server: ${server}`);
110
+ console.log(`Output: ${resolvedOutDir}\n`);
111
+ try {
112
+ const result = await codegen({
113
+ server,
114
+ outDir: resolvedOutDir,
115
+ agentPath,
116
+ name,
117
+ cli: !noCli,
118
+ types: !noTypes,
119
+ visibility,
120
+ });
121
+ console.log(`\x1b[32m\u2713\x1b[0m Generated ${result.toolCount} tools from ${result.serverInfo.name ?? "MCP server"}`);
122
+ console.log(`\nFiles:`);
123
+ for (const f of result.files) {
124
+ console.log(` ${f}`);
125
+ }
126
+ console.log(`\nUse: agents-sdk use ${name ?? result.serverInfo.name ?? "<agent>"} --list`);
127
+ }
128
+ catch (err) {
129
+ console.error(`\x1b[31mError:\x1b[0m ${err instanceof Error ? err.message : String(err)}`);
130
+ process.exit(1);
131
+ }
132
+ }
133
+ async function runUse(args) {
134
+ const agentName = args[1];
135
+ if (!agentName) {
136
+ console.error("Error: agent name required.\n" +
137
+ " Example: agents-sdk use notion search_pages '{...}'");
138
+ process.exit(1);
139
+ }
140
+ const agentDir = findAgentDir(agentName);
141
+ if (!agentDir) {
142
+ console.error(`Error: No generated agent '${agentName}' found.\n` +
143
+ ` Looked in: ${getAgentsDir()}\n` +
144
+ ` Run: agents-sdk codegen --server '...' --name ${agentName}`);
145
+ process.exit(1);
146
+ }
147
+ // --list: show available tools
148
+ if (hasFlag(args, "--list")) {
149
+ const tools = listAgentTools(agentDir);
150
+ console.log(`Tools for ${agentName}:\n`);
151
+ for (const t of tools) {
152
+ console.log(` ${t.name.padEnd(30)} ${t.description ?? ""}`);
153
+ }
154
+ return;
155
+ }
156
+ const toolName = args[2];
157
+ if (!toolName) {
158
+ console.error(`Error: tool name required.\n` +
159
+ ` Example: agents-sdk use ${agentName} <tool> [params]\n` +
160
+ ` List tools: agents-sdk use ${agentName} --list`);
161
+ process.exit(1);
162
+ }
163
+ const paramsStr = args[3];
164
+ const params = paramsStr ? JSON.parse(paramsStr) : {};
165
+ try {
166
+ const result = await useAgent({
167
+ agentDir,
168
+ tool: toolName,
169
+ params,
170
+ });
171
+ console.log(JSON.stringify(result, null, 2));
172
+ }
173
+ catch (err) {
174
+ console.error(`\x1b[31mError:\x1b[0m ${err instanceof Error ? err.message : String(err)}`);
175
+ process.exit(1);
176
+ }
177
+ }
178
+ function runList() {
179
+ const agentsDir = getAgentsDir();
180
+ if (!existsSync(agentsDir)) {
181
+ console.log("No generated agents found.");
182
+ return;
183
+ }
184
+ const entries = readdirSync(agentsDir);
185
+ const agents = [];
186
+ for (const entry of entries) {
187
+ const manifestPath = join(agentsDir, entry, ".codegen-manifest.json");
188
+ if (existsSync(manifestPath)) {
189
+ try {
190
+ const manifest = JSON.parse(require("node:fs").readFileSync(manifestPath, "utf-8"));
191
+ agents.push({
192
+ name: manifest.agentPath,
193
+ tools: manifest.tools.length,
194
+ server: manifest.serverInfo.name,
195
+ });
196
+ }
197
+ catch {
198
+ agents.push({ name: entry, tools: 0 });
199
+ }
200
+ }
201
+ }
202
+ if (agents.length === 0) {
203
+ console.log("No generated agents found.");
204
+ return;
205
+ }
206
+ console.log("Generated agents:\n");
207
+ for (const a of agents) {
208
+ console.log(` ${a.name.padEnd(25)} ${String(a.tools).padEnd(5)} tools${a.server ? ` (${a.server})` : ""}`);
209
+ }
210
+ }
211
+ // ============================================
212
+ // Main
213
+ // ============================================
214
+ switch (command) {
215
+ case "codegen":
216
+ await runCodegen(args);
217
+ break;
218
+ case "use":
219
+ await runUse(args);
220
+ break;
221
+ case "list":
222
+ runList();
223
+ break;
224
+ case "--help":
225
+ case "-h":
226
+ case undefined:
227
+ printUsage();
228
+ break;
229
+ default:
230
+ console.error(`Unknown command: ${command}`);
231
+ printUsage();
232
+ process.exit(1);
233
+ }
234
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * MCP Codegen
3
+ *
4
+ * Connects to any MCP server, introspects its tools via `tools/list`,
5
+ * and generates readable agent-definition source files.
6
+ *
7
+ * Supports three transport modes:
8
+ * - stdio: spawn a process (e.g., `npx @modelcontextprotocol/server-notion`)
9
+ * - sse: connect to an SSE endpoint
10
+ * - http: connect to an HTTP JSON-RPC endpoint
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { codegen } from '@slashfi/agents-sdk';
15
+ *
16
+ * await codegen({
17
+ * server: 'npx @modelcontextprotocol/server-notion',
18
+ * outDir: './generated/notion',
19
+ * agentPath: '@notion',
20
+ * });
21
+ * ```
22
+ *
23
+ * @example CLI
24
+ * ```bash
25
+ * agents-sdk codegen --server 'npx @mcp/notion' --name notion
26
+ * agents-sdk use notion search_pages '{"query": "hello"}'
27
+ * agents-sdk use notion --list
28
+ * ```
29
+ */
30
+ import type { JsonSchema } from "./types.js";
31
+ /** MCP tool definition as returned by tools/list */
32
+ export interface McpToolDefinition {
33
+ name: string;
34
+ description?: string;
35
+ inputSchema?: JsonSchema;
36
+ }
37
+ /** MCP server info from initialize response */
38
+ export interface McpServerInfo {
39
+ name?: string;
40
+ version?: string;
41
+ protocolVersion?: string;
42
+ }
43
+ /** Transport for communicating with an MCP server */
44
+ export interface McpTransport {
45
+ send(method: string, params?: Record<string, unknown>): Promise<unknown>;
46
+ /** Send a JSON-RPC notification (no id, no response expected) */
47
+ notify(method: string, params?: Record<string, unknown>): Promise<void>;
48
+ close(): Promise<void>;
49
+ }
50
+ /** Server source — string command, URL, or explicit config */
51
+ export type ServerSource = string | {
52
+ command: string;
53
+ args?: string[];
54
+ env?: Record<string, string>;
55
+ } | {
56
+ url: string;
57
+ headers?: Record<string, string>;
58
+ } | {
59
+ spawn: string;
60
+ args?: string[];
61
+ env?: Record<string, string>;
62
+ port?: number;
63
+ endpoint?: string;
64
+ };
65
+ /** Options for the codegen function */
66
+ export interface CodegenOptions {
67
+ /** MCP server source — command string, URL, or config object */
68
+ server: ServerSource;
69
+ /** Output directory for generated files */
70
+ outDir: string;
71
+ /** Agent path override (default: derived from server name) */
72
+ agentPath?: string;
73
+ /** Agent display name */
74
+ name?: string;
75
+ /** SDK import path (default: '@slashfi/agents-sdk') */
76
+ sdkImport?: string;
77
+ /** Whether to generate a CLI entrypoint (default: true) */
78
+ cli?: boolean;
79
+ /** Whether to generate TypeScript interfaces from schemas (default: true) */
80
+ types?: boolean;
81
+ /** Visibility for the generated agent (default: 'public') */
82
+ visibility?: "public" | "internal" | "private";
83
+ }
84
+ /** Result of codegen */
85
+ export interface CodegenResult {
86
+ /** Path to the output directory */
87
+ outDir: string;
88
+ /** Server info from the MCP initialize handshake */
89
+ serverInfo: McpServerInfo;
90
+ /** Number of tools generated */
91
+ toolCount: number;
92
+ /** Names of generated tool files */
93
+ toolFiles: string[];
94
+ /** All generated file paths */
95
+ files: string[];
96
+ }
97
+ /** Manifest stored in outDir for `agents-sdk use` */
98
+ export interface CodegenManifest {
99
+ agentPath: string;
100
+ serverSource: ServerSource;
101
+ serverInfo: McpServerInfo;
102
+ tools: {
103
+ name: string;
104
+ description?: string;
105
+ }[];
106
+ generatedAt: string;
107
+ }
108
+ /**
109
+ * Connect to an MCP server, introspect its tools, and generate
110
+ * agent-definition source files.
111
+ */
112
+ export declare function codegen(options: CodegenOptions): Promise<CodegenResult>;
113
+ /**
114
+ * Execute a tool on a previously codegenned agent by reconnecting
115
+ * to the MCP server and calling the tool.
116
+ */
117
+ export declare function useAgent(options: {
118
+ /** Path to the generated agent directory (contains .codegen-manifest.json) */
119
+ agentDir: string;
120
+ /** Tool name to execute */
121
+ tool: string;
122
+ /** Tool parameters */
123
+ params?: Record<string, unknown>;
124
+ }): Promise<unknown>;
125
+ /**
126
+ * List tools available on a codegenned agent.
127
+ */
128
+ export declare function listAgentTools(agentDir: string): CodegenManifest["tools"];
129
+ //# sourceMappingURL=codegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}