agentdial 1.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.
Files changed (97) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +310 -0
  4. package/dist/adapters/discord.d.ts +24 -0
  5. package/dist/adapters/discord.d.ts.map +1 -0
  6. package/dist/adapters/discord.js +129 -0
  7. package/dist/adapters/discord.js.map +1 -0
  8. package/dist/adapters/email.d.ts +38 -0
  9. package/dist/adapters/email.d.ts.map +1 -0
  10. package/dist/adapters/email.js +187 -0
  11. package/dist/adapters/email.js.map +1 -0
  12. package/dist/adapters/index.d.ts +12 -0
  13. package/dist/adapters/index.d.ts.map +1 -0
  14. package/dist/adapters/index.js +36 -0
  15. package/dist/adapters/index.js.map +1 -0
  16. package/dist/adapters/slack.d.ts +27 -0
  17. package/dist/adapters/slack.d.ts.map +1 -0
  18. package/dist/adapters/slack.js +173 -0
  19. package/dist/adapters/slack.js.map +1 -0
  20. package/dist/adapters/telegram.d.ts +28 -0
  21. package/dist/adapters/telegram.d.ts.map +1 -0
  22. package/dist/adapters/telegram.js +155 -0
  23. package/dist/adapters/telegram.js.map +1 -0
  24. package/dist/adapters/twilio-sms.d.ts +36 -0
  25. package/dist/adapters/twilio-sms.d.ts.map +1 -0
  26. package/dist/adapters/twilio-sms.js +187 -0
  27. package/dist/adapters/twilio-sms.js.map +1 -0
  28. package/dist/adapters/twilio-whatsapp.d.ts +37 -0
  29. package/dist/adapters/twilio-whatsapp.d.ts.map +1 -0
  30. package/dist/adapters/twilio-whatsapp.js +188 -0
  31. package/dist/adapters/twilio-whatsapp.js.map +1 -0
  32. package/dist/adapters/types.d.ts +349 -0
  33. package/dist/adapters/types.d.ts.map +1 -0
  34. package/dist/adapters/types.js +82 -0
  35. package/dist/adapters/types.js.map +1 -0
  36. package/dist/adapters/voice.d.ts +54 -0
  37. package/dist/adapters/voice.d.ts.map +1 -0
  38. package/dist/adapters/voice.js +250 -0
  39. package/dist/adapters/voice.js.map +1 -0
  40. package/dist/commands/channels.d.ts +5 -0
  41. package/dist/commands/channels.d.ts.map +1 -0
  42. package/dist/commands/channels.js +188 -0
  43. package/dist/commands/channels.js.map +1 -0
  44. package/dist/commands/mcp-serve.d.ts +14 -0
  45. package/dist/commands/mcp-serve.d.ts.map +1 -0
  46. package/dist/commands/mcp-serve.js +479 -0
  47. package/dist/commands/mcp-serve.js.map +1 -0
  48. package/dist/commands/serve.d.ts +6 -0
  49. package/dist/commands/serve.d.ts.map +1 -0
  50. package/dist/commands/serve.js +128 -0
  51. package/dist/commands/serve.js.map +1 -0
  52. package/dist/commands/setup.d.ts +4 -0
  53. package/dist/commands/setup.d.ts.map +1 -0
  54. package/dist/commands/setup.js +174 -0
  55. package/dist/commands/setup.js.map +1 -0
  56. package/dist/commands/status.d.ts +4 -0
  57. package/dist/commands/status.d.ts.map +1 -0
  58. package/dist/commands/status.js +86 -0
  59. package/dist/commands/status.js.map +1 -0
  60. package/dist/commands/test.d.ts +5 -0
  61. package/dist/commands/test.d.ts.map +1 -0
  62. package/dist/commands/test.js +48 -0
  63. package/dist/commands/test.js.map +1 -0
  64. package/dist/commands/voice.d.ts +6 -0
  65. package/dist/commands/voice.d.ts.map +1 -0
  66. package/dist/commands/voice.js +192 -0
  67. package/dist/commands/voice.js.map +1 -0
  68. package/dist/index.d.ts +3 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +119 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/lib/config.d.ts +7 -0
  73. package/dist/lib/config.d.ts.map +1 -0
  74. package/dist/lib/config.js +36 -0
  75. package/dist/lib/config.js.map +1 -0
  76. package/dist/lib/constants.d.ts +13 -0
  77. package/dist/lib/constants.d.ts.map +1 -0
  78. package/dist/lib/constants.js +52 -0
  79. package/dist/lib/constants.js.map +1 -0
  80. package/dist/lib/credentials.d.ts +7 -0
  81. package/dist/lib/credentials.d.ts.map +1 -0
  82. package/dist/lib/credentials.js +61 -0
  83. package/dist/lib/credentials.js.map +1 -0
  84. package/dist/lib/gateway.d.ts +27 -0
  85. package/dist/lib/gateway.d.ts.map +1 -0
  86. package/dist/lib/gateway.js +103 -0
  87. package/dist/lib/gateway.js.map +1 -0
  88. package/dist/lib/identity.d.ts +5 -0
  89. package/dist/lib/identity.d.ts.map +1 -0
  90. package/dist/lib/identity.js +36 -0
  91. package/dist/lib/identity.js.map +1 -0
  92. package/dist/lib/ui.d.ts +12 -0
  93. package/dist/lib/ui.d.ts.map +1 -0
  94. package/dist/lib/ui.js +91 -0
  95. package/dist/lib/ui.js.map +1 -0
  96. package/package.json +95 -0
  97. package/templates/IDENTITY.md +59 -0
@@ -0,0 +1,479 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * AgentDial MCP Server
4
+ *
5
+ * Exposes agentdial operations as MCP tools so Claude Code sessions
6
+ * can manage agent identity, channels, and the gateway programmatically.
7
+ *
8
+ * Usage:
9
+ * claude mcp add agentdial -- npx agentdial mcp-serve
10
+ * OR
11
+ * node dist/commands/mcp-serve.js
12
+ */
13
+ import { existsSync } from "node:fs";
14
+ import { resolve } from "node:path";
15
+ import { loadConfig, updateConfig } from "../lib/config.js";
16
+ import { parseIdentity, writeIdentity } from "../lib/identity.js";
17
+ import { saveCredential, listCredentials, listConfiguredChannels, } from "../lib/credentials.js";
18
+ import { ChannelTypeSchema } from "../adapters/types.js";
19
+ import { VERSION, DEFAULT_IDENTITY_FILE, SUPPORTED_CHANNELS, FREE_CHANNELS, CHANNEL_DISPLAY_NAMES, CHANNEL_SETUP_TIMES, } from "../lib/constants.js";
20
+ // ── Tool Definitions ──
21
+ const TOOLS = [
22
+ {
23
+ name: "identity_status",
24
+ description: "Get the agent's current identity from IDENTITY.md — name, tagline, version, enabled channels, and gateway config.",
25
+ inputSchema: { type: "object", properties: {} },
26
+ },
27
+ {
28
+ name: "identity_setup",
29
+ description: "Create or update the agent's IDENTITY.md file with name, tagline, and optional agent URL.",
30
+ inputSchema: {
31
+ type: "object",
32
+ properties: {
33
+ name: { type: "string", description: "Agent name" },
34
+ tagline: { type: "string", description: "Agent tagline / description" },
35
+ agent_url: {
36
+ type: "string",
37
+ description: "Backend URL the gateway forwards messages to",
38
+ },
39
+ },
40
+ required: ["name"],
41
+ },
42
+ },
43
+ {
44
+ name: "channel_add",
45
+ description: "Add and enable a communication channel. Optionally provide credentials as key-value pairs.",
46
+ inputSchema: {
47
+ type: "object",
48
+ properties: {
49
+ channel: {
50
+ type: "string",
51
+ description: `Channel name: ${SUPPORTED_CHANNELS.join(", ")}`,
52
+ },
53
+ credentials: {
54
+ type: "object",
55
+ description: "Credential key-value pairs (e.g. {bot_token: '...'}). Keys depend on channel.",
56
+ additionalProperties: { type: "string" },
57
+ },
58
+ },
59
+ required: ["channel"],
60
+ },
61
+ },
62
+ {
63
+ name: "channel_remove",
64
+ description: "Disable a previously configured channel.",
65
+ inputSchema: {
66
+ type: "object",
67
+ properties: {
68
+ channel: {
69
+ type: "string",
70
+ description: "Channel to remove / disable",
71
+ },
72
+ },
73
+ required: ["channel"],
74
+ },
75
+ },
76
+ {
77
+ name: "channel_test",
78
+ description: "Test a specific channel's credentials, or test all configured channels if no channel specified.",
79
+ inputSchema: {
80
+ type: "object",
81
+ properties: {
82
+ channel: {
83
+ type: "string",
84
+ description: "Channel to test (omit to test all)",
85
+ },
86
+ },
87
+ },
88
+ },
89
+ {
90
+ name: "channel_list",
91
+ description: "List all supported channels with their configuration status, cost, and setup time.",
92
+ inputSchema: { type: "object", properties: {} },
93
+ },
94
+ {
95
+ name: "gateway_start",
96
+ description: "Start the agentdial gateway HTTP server on a given port. Requires an agent_url to forward messages to.",
97
+ inputSchema: {
98
+ type: "object",
99
+ properties: {
100
+ port: {
101
+ type: "number",
102
+ description: "Port to listen on (default: 3141)",
103
+ default: 3141,
104
+ },
105
+ agent_url: {
106
+ type: "string",
107
+ description: "Agent backend URL to forward messages to",
108
+ },
109
+ },
110
+ },
111
+ },
112
+ {
113
+ name: "gateway_stop",
114
+ description: "Stop the running gateway server.",
115
+ inputSchema: { type: "object", properties: {} },
116
+ },
117
+ ];
118
+ // ── Gateway State ──
119
+ let gatewayServer = null;
120
+ let gatewayPort = null;
121
+ // ── Tool Handlers ──
122
+ async function handleToolCall(name, args) {
123
+ try {
124
+ switch (name) {
125
+ case "identity_status":
126
+ return await handleIdentityStatus();
127
+ case "identity_setup":
128
+ return await handleIdentitySetup(args);
129
+ case "channel_add":
130
+ return await handleChannelAdd(args);
131
+ case "channel_remove":
132
+ return await handleChannelRemove(args);
133
+ case "channel_test":
134
+ return await handleChannelTest(args);
135
+ case "channel_list":
136
+ return await handleChannelList();
137
+ case "gateway_start":
138
+ return await handleGatewayStart(args);
139
+ case "gateway_stop":
140
+ return handleGatewayStop();
141
+ default:
142
+ return text(`Unknown tool: ${name}`);
143
+ }
144
+ }
145
+ catch (err) {
146
+ const msg = err instanceof Error ? err.message : String(err);
147
+ return text(`ERROR: ${msg}`);
148
+ }
149
+ }
150
+ function text(content) {
151
+ return { content: [{ type: "text", text: content }] };
152
+ }
153
+ function validateChannel(raw) {
154
+ const result = ChannelTypeSchema.safeParse(raw);
155
+ if (!result.success) {
156
+ throw new Error(`Unknown channel: ${String(raw)}. Supported: ${SUPPORTED_CHANNELS.join(", ")}`);
157
+ }
158
+ return result.data;
159
+ }
160
+ // ── identity_status ──
161
+ async function handleIdentityStatus() {
162
+ const config = await loadConfig();
163
+ const identityPath = resolve(config.identityFile);
164
+ const configured = await listConfiguredChannels();
165
+ const output = {
166
+ identity_file: identityPath,
167
+ identity_exists: existsSync(identityPath),
168
+ configured_channels: configured,
169
+ gateway: {
170
+ port: config.gatewayPort,
171
+ agent_url: config.agentUrl ?? null,
172
+ running: gatewayServer !== null,
173
+ running_port: gatewayPort,
174
+ },
175
+ };
176
+ if (existsSync(identityPath)) {
177
+ try {
178
+ const identity = await parseIdentity(identityPath);
179
+ output.name = identity.name;
180
+ output.tagline = identity.tagline ?? null;
181
+ output.version = identity.version;
182
+ output.agent_url = identity.agent_url ?? config.agentUrl ?? null;
183
+ const channels = identity.channels ?? {};
184
+ output.identity_channels = Object.entries(channels).map(([ch, cfg]) => ({
185
+ channel: ch,
186
+ enabled: cfg.enabled,
187
+ handle: cfg.handle ?? null,
188
+ }));
189
+ }
190
+ catch (err) {
191
+ output.identity_error =
192
+ err instanceof Error ? err.message : "Parse error";
193
+ }
194
+ }
195
+ return text(JSON.stringify(output, null, 2));
196
+ }
197
+ // ── identity_setup ──
198
+ async function handleIdentitySetup(args) {
199
+ const name = args["name"];
200
+ if (!name)
201
+ throw new Error("name is required");
202
+ const tagline = args["tagline"] ?? undefined;
203
+ const agentUrl = args["agent_url"] ?? undefined;
204
+ const config = await loadConfig();
205
+ const identityPath = resolve(config.identityFile ?? DEFAULT_IDENTITY_FILE);
206
+ await writeIdentity(identityPath, {
207
+ name,
208
+ tagline,
209
+ version: "1.0.0",
210
+ agent_url: agentUrl,
211
+ });
212
+ if (agentUrl) {
213
+ await updateConfig({ agentUrl });
214
+ }
215
+ return text(`Identity created: ${name}${tagline ? ` — "${tagline}"` : ""}\nFile: ${identityPath}`);
216
+ }
217
+ // ── channel_add ──
218
+ async function handleChannelAdd(args) {
219
+ const channel = validateChannel(args["channel"]);
220
+ const creds = args["credentials"] ?? {};
221
+ // Save credentials
222
+ for (const [key, value] of Object.entries(creds)) {
223
+ await saveCredential(channel, key, value);
224
+ }
225
+ // Enable channel in config
226
+ const config = await loadConfig();
227
+ const channels = config.channels ?? {};
228
+ channels[channel] = { channel, enabled: true };
229
+ await updateConfig({ channels });
230
+ const credCount = Object.keys(creds).length;
231
+ const isFree = FREE_CHANNELS.has(channel);
232
+ return text([
233
+ `Channel added: ${CHANNEL_DISPLAY_NAMES[channel] ?? channel}`,
234
+ `Status: enabled`,
235
+ `Cost: ${isFree ? "free" : "paid API required"}`,
236
+ `Setup time: ${CHANNEL_SETUP_TIMES[channel] ?? "unknown"}`,
237
+ credCount > 0
238
+ ? `Credentials saved: ${credCount} key(s)`
239
+ : "No credentials provided — add them before connecting.",
240
+ ].join("\n"));
241
+ }
242
+ // ── channel_remove ──
243
+ async function handleChannelRemove(args) {
244
+ const channel = validateChannel(args["channel"]);
245
+ const config = await loadConfig();
246
+ const channels = config.channels ?? {};
247
+ if (!channels[channel]) {
248
+ return text(`Channel ${channel} is not configured.`);
249
+ }
250
+ channels[channel] = { ...channels[channel], channel, enabled: false };
251
+ await updateConfig({ channels });
252
+ return text(`Channel ${channel} disabled.`);
253
+ }
254
+ // ── channel_test ──
255
+ async function handleChannelTest(args) {
256
+ const rawChannel = args["channel"];
257
+ if (rawChannel) {
258
+ const channel = validateChannel(rawChannel);
259
+ const creds = await listCredentials(channel);
260
+ return text([
261
+ `Channel: ${CHANNEL_DISPLAY_NAMES[channel] ?? channel}`,
262
+ `Credentials: ${creds.length > 0 ? creds.join(", ") : "none"}`,
263
+ `Status: ${creds.length > 0 ? "credentials present" : "missing credentials"}`,
264
+ ].join("\n"));
265
+ }
266
+ // Test all
267
+ const configured = await listConfiguredChannels();
268
+ if (configured.length === 0) {
269
+ return text("No channels configured. Use channel_add first.");
270
+ }
271
+ const lines = [];
272
+ for (const ch of configured) {
273
+ const creds = await listCredentials(ch);
274
+ const status = creds.length > 0 ? `OK (${creds.length} keys)` : "MISSING";
275
+ lines.push(`${CHANNEL_DISPLAY_NAMES[ch] ?? ch}: ${status}`);
276
+ }
277
+ return text(lines.join("\n"));
278
+ }
279
+ // ── channel_list ──
280
+ async function handleChannelList() {
281
+ const configured = await listConfiguredChannels();
282
+ const config = await loadConfig();
283
+ const channelConfigs = config.channels ?? {};
284
+ const rows = SUPPORTED_CHANNELS.map((ch) => {
285
+ const isConfigured = configured.includes(ch);
286
+ const isEnabled = channelConfigs[ch]?.enabled ?? false;
287
+ const isFree = FREE_CHANNELS.has(ch);
288
+ const status = isEnabled
289
+ ? "enabled"
290
+ : isConfigured
291
+ ? "disabled"
292
+ : "not configured";
293
+ return {
294
+ channel: ch,
295
+ display_name: CHANNEL_DISPLAY_NAMES[ch] ?? ch,
296
+ status,
297
+ cost: isFree ? "free" : "paid",
298
+ setup_time: CHANNEL_SETUP_TIMES[ch] ?? "unknown",
299
+ };
300
+ });
301
+ return text(JSON.stringify(rows, null, 2));
302
+ }
303
+ // ── gateway_start ──
304
+ async function handleGatewayStart(args) {
305
+ if (gatewayServer) {
306
+ return text(`Gateway already running on port ${String(gatewayPort)}`);
307
+ }
308
+ const port = args["port"] ?? 3141;
309
+ const agentUrl = args["agent_url"];
310
+ if (agentUrl) {
311
+ await updateConfig({ agentUrl });
312
+ }
313
+ const config = await loadConfig();
314
+ const finalAgentUrl = agentUrl ?? config.agentUrl;
315
+ if (!finalAgentUrl) {
316
+ return text("ERROR: No agent_url configured. Provide agent_url param or set it via identity_setup.");
317
+ }
318
+ const { createServer } = await import("node:http");
319
+ const { normalizeMessage, routeMessage, formatResponse } = await import("../lib/gateway.js");
320
+ const { GatewayMessageSchema, ChannelTypeSchema: CTS } = await import("../adapters/types.js");
321
+ return new Promise((resolvePromise) => {
322
+ const server = createServer(async (req, res) => {
323
+ res.setHeader("Access-Control-Allow-Origin", "*");
324
+ res.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
325
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type");
326
+ if (req.method === "OPTIONS") {
327
+ res.writeHead(204);
328
+ res.end();
329
+ return;
330
+ }
331
+ if (req.url === "/health" && req.method === "GET") {
332
+ res.writeHead(200, { "Content-Type": "application/json" });
333
+ res.end(JSON.stringify({ status: "ok", agentUrl: finalAgentUrl, port }));
334
+ return;
335
+ }
336
+ const webhookMatch = req.url?.match(/^\/webhook\/(\w+)$/);
337
+ if (webhookMatch && req.method === "POST") {
338
+ const chResult = CTS.safeParse(webhookMatch[1]);
339
+ if (!chResult.success) {
340
+ res.writeHead(400, { "Content-Type": "application/json" });
341
+ res.end(JSON.stringify({ error: "Unknown channel" }));
342
+ return;
343
+ }
344
+ try {
345
+ const body = await readBody(req);
346
+ const raw = JSON.parse(body);
347
+ const msg = normalizeMessage(raw, chResult.data);
348
+ const response = await routeMessage(msg, finalAgentUrl);
349
+ const formatted = formatResponse(response, chResult.data);
350
+ res.writeHead(200, { "Content-Type": "application/json" });
351
+ res.end(JSON.stringify(formatted.payload));
352
+ }
353
+ catch (err) {
354
+ res.writeHead(500, { "Content-Type": "application/json" });
355
+ res.end(JSON.stringify({
356
+ error: err instanceof Error ? err.message : String(err),
357
+ }));
358
+ }
359
+ return;
360
+ }
361
+ if (req.url === "/message" && req.method === "POST") {
362
+ try {
363
+ const body = await readBody(req);
364
+ const msg = GatewayMessageSchema.parse(JSON.parse(body));
365
+ const response = await routeMessage(msg, finalAgentUrl);
366
+ res.writeHead(200, { "Content-Type": "application/json" });
367
+ res.end(JSON.stringify(response));
368
+ }
369
+ catch (err) {
370
+ res.writeHead(400, { "Content-Type": "application/json" });
371
+ res.end(JSON.stringify({
372
+ error: err instanceof Error ? err.message : String(err),
373
+ }));
374
+ }
375
+ return;
376
+ }
377
+ res.writeHead(404, { "Content-Type": "application/json" });
378
+ res.end(JSON.stringify({ error: "Not found" }));
379
+ });
380
+ server.listen(port, () => {
381
+ gatewayServer = server;
382
+ gatewayPort = port;
383
+ resolvePromise(text(`Gateway started on http://localhost:${String(port)}\nAgent URL: ${finalAgentUrl}\nEndpoints: POST /message, POST /webhook/:channel, GET /health`));
384
+ });
385
+ server.on("error", (err) => {
386
+ resolvePromise(text(`ERROR starting gateway: ${err.message}`));
387
+ });
388
+ });
389
+ }
390
+ function readBody(req) {
391
+ return new Promise((resolve, reject) => {
392
+ const chunks = [];
393
+ req.on("data", (chunk) => chunks.push(chunk));
394
+ req.on("end", () => resolve(Buffer.concat(chunks).toString("utf-8")));
395
+ req.on("error", reject);
396
+ });
397
+ }
398
+ // ── gateway_stop ──
399
+ function handleGatewayStop() {
400
+ if (!gatewayServer) {
401
+ return text("Gateway is not running.");
402
+ }
403
+ gatewayServer.close();
404
+ const port = gatewayPort;
405
+ gatewayServer = null;
406
+ gatewayPort = null;
407
+ return text(`Gateway stopped (was on port ${String(port)}).`);
408
+ }
409
+ // ── MCP stdio Transport ──
410
+ let buffer = "";
411
+ process.stdin.setEncoding("utf-8");
412
+ process.stdin.on("data", (chunk) => {
413
+ buffer += chunk;
414
+ const lines = buffer.split("\n");
415
+ buffer = lines.pop() ?? "";
416
+ for (const line of lines) {
417
+ const trimmed = line.trim();
418
+ if (!trimmed)
419
+ continue;
420
+ try {
421
+ const request = JSON.parse(trimmed);
422
+ void handleRequest(request).then((response) => {
423
+ if (response) {
424
+ process.stdout.write(JSON.stringify(response) + "\n");
425
+ }
426
+ });
427
+ }
428
+ catch {
429
+ // Skip malformed messages
430
+ }
431
+ }
432
+ });
433
+ async function handleRequest(request) {
434
+ switch (request.method) {
435
+ case "initialize":
436
+ return {
437
+ jsonrpc: "2.0",
438
+ id: request.id,
439
+ result: {
440
+ protocolVersion: "2024-11-05",
441
+ capabilities: { tools: {} },
442
+ serverInfo: { name: "agentdial", version: VERSION },
443
+ },
444
+ };
445
+ case "notifications/initialized":
446
+ return null;
447
+ case "tools/list":
448
+ return {
449
+ jsonrpc: "2.0",
450
+ id: request.id,
451
+ result: { tools: TOOLS },
452
+ };
453
+ case "tools/call": {
454
+ const params = request.params;
455
+ const toolResult = await handleToolCall(params.name, params.arguments ?? {});
456
+ return {
457
+ jsonrpc: "2.0",
458
+ id: request.id,
459
+ result: toolResult,
460
+ };
461
+ }
462
+ case "ping":
463
+ return { jsonrpc: "2.0", id: request.id, result: {} };
464
+ default:
465
+ return {
466
+ jsonrpc: "2.0",
467
+ id: request.id,
468
+ error: { code: -32601, message: `Unknown method: ${request.method}` },
469
+ };
470
+ }
471
+ }
472
+ // ── Public Export (for CLI) ──
473
+ export async function cmdMcpServe() {
474
+ // Server is started by stdin listener above. This function is the CLI entry
475
+ // point — it just needs to exist so the import works. The stdin handler
476
+ // activates as soon as the module loads.
477
+ process.stderr.write(`[agentdial-mcp] Server started. ${String(TOOLS.length)} tools available.\n`);
478
+ }
479
+ //# sourceMappingURL=mcp-serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-serve.js","sourceRoot":"","sources":["../../src/commands/mcp-serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function cmdServe(opts: {
2
+ port: string;
3
+ agentUrl?: string;
4
+ file?: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAeA,wBAAsB,QAAQ,CAAC,IAAI,EAAE;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAoHhB"}
@@ -0,0 +1,128 @@
1
+ import { createServer } from "node:http";
2
+ import { resolve } from "node:path";
3
+ import { existsSync } from "node:fs";
4
+ import { loadConfig, updateConfig } from "../lib/config.js";
5
+ import { parseIdentity } from "../lib/identity.js";
6
+ import { normalizeMessage, routeMessage, formatResponse, } from "../lib/gateway.js";
7
+ import { banner, heading, success, error, info, warn } from "../lib/ui.js";
8
+ import { DEFAULT_IDENTITY_FILE } from "../lib/constants.js";
9
+ import { GatewayMessageSchema, ChannelTypeSchema } from "../adapters/types.js";
10
+ export async function cmdServe(opts) {
11
+ banner();
12
+ heading("Starting Gateway Server");
13
+ const port = parseInt(opts.port, 10);
14
+ if (isNaN(port) || port < 1 || port > 65535) {
15
+ error(`Invalid port: ${opts.port}`);
16
+ return;
17
+ }
18
+ const config = await loadConfig();
19
+ const agentUrl = opts.agentUrl ?? config.agentUrl;
20
+ if (!agentUrl) {
21
+ error("No agent URL. Use --agent-url or set agent_url in IDENTITY.md.");
22
+ return;
23
+ }
24
+ if (opts.agentUrl) {
25
+ await updateConfig({ agentUrl: opts.agentUrl });
26
+ }
27
+ const identityPath = resolve(opts.file ?? config.identityFile ?? DEFAULT_IDENTITY_FILE);
28
+ if (existsSync(identityPath)) {
29
+ try {
30
+ const identity = await parseIdentity(identityPath);
31
+ success(`Identity loaded: ${identity.name}`);
32
+ }
33
+ catch {
34
+ warn("Could not parse IDENTITY.md — running without identity context.");
35
+ }
36
+ }
37
+ const server = createServer(async (req, res) => {
38
+ // CORS headers
39
+ res.setHeader("Access-Control-Allow-Origin", "*");
40
+ res.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
41
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type");
42
+ if (req.method === "OPTIONS") {
43
+ res.writeHead(204);
44
+ res.end();
45
+ return;
46
+ }
47
+ // Health check
48
+ if (req.url === "/health" && req.method === "GET") {
49
+ res.writeHead(200, { "Content-Type": "application/json" });
50
+ res.end(JSON.stringify({ status: "ok", agentUrl }));
51
+ return;
52
+ }
53
+ // Webhook endpoint: POST /webhook/:channel
54
+ const webhookMatch = req.url?.match(/^\/webhook\/(\w+)$/);
55
+ if (webhookMatch && req.method === "POST") {
56
+ const channelResult = ChannelTypeSchema.safeParse(webhookMatch[1]);
57
+ if (!channelResult.success) {
58
+ res.writeHead(400, { "Content-Type": "application/json" });
59
+ res.end(JSON.stringify({ error: "Unknown channel" }));
60
+ return;
61
+ }
62
+ const channel = channelResult.data;
63
+ try {
64
+ const body = await readBody(req);
65
+ const raw = JSON.parse(body);
66
+ const msg = normalizeMessage(raw, channel);
67
+ const response = await routeMessage(msg, agentUrl);
68
+ const formatted = formatResponse(response, channel);
69
+ res.writeHead(200, { "Content-Type": "application/json" });
70
+ res.end(JSON.stringify(formatted.payload));
71
+ }
72
+ catch (err) {
73
+ const errMsg = err instanceof Error ? err.message : String(err);
74
+ const status = errMsg === "Payload Too Large" ? 413 : 500;
75
+ res.writeHead(status, { "Content-Type": "application/json" });
76
+ res.end(JSON.stringify({ error: errMsg }));
77
+ }
78
+ return;
79
+ }
80
+ // Gateway endpoint: POST /message
81
+ if (req.url === "/message" && req.method === "POST") {
82
+ try {
83
+ const body = await readBody(req);
84
+ const raw = JSON.parse(body);
85
+ const msg = GatewayMessageSchema.parse(raw);
86
+ const response = await routeMessage(msg, agentUrl);
87
+ res.writeHead(200, { "Content-Type": "application/json" });
88
+ res.end(JSON.stringify(response));
89
+ }
90
+ catch (err) {
91
+ const errMsg = err instanceof Error ? err.message : String(err);
92
+ const status = errMsg === "Payload Too Large" ? 413 : 400;
93
+ res.writeHead(status, { "Content-Type": "application/json" });
94
+ res.end(JSON.stringify({ error: errMsg }));
95
+ }
96
+ return;
97
+ }
98
+ res.writeHead(404, { "Content-Type": "application/json" });
99
+ res.end(JSON.stringify({ error: "Not found" }));
100
+ });
101
+ server.listen(port, () => {
102
+ success(`Gateway running on http://localhost:${String(port)}`);
103
+ info(`Agent URL: ${agentUrl}`);
104
+ info("Endpoints:");
105
+ info(` POST /message — Send a normalized GatewayMessage`);
106
+ info(` POST /webhook/:channel — Channel-specific webhook`);
107
+ info(` GET /health — Health check`);
108
+ });
109
+ }
110
+ const MAX_BODY_BYTES = 1_048_576; // 1 MB
111
+ function readBody(req) {
112
+ return new Promise((resolve, reject) => {
113
+ const chunks = [];
114
+ let totalBytes = 0;
115
+ req.on("data", (chunk) => {
116
+ totalBytes += chunk.length;
117
+ if (totalBytes > MAX_BODY_BYTES) {
118
+ req.destroy();
119
+ reject(new Error("Payload Too Large"));
120
+ return;
121
+ }
122
+ chunks.push(chunk);
123
+ });
124
+ req.on("end", () => resolve(Buffer.concat(chunks).toString("utf-8")));
125
+ req.on("error", reject);
126
+ });
127
+ }
128
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function cmdSetup(opts: {
2
+ file?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AA0EA,wBAAsB,QAAQ,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgLrE"}