@kilnai/cli 0.1.1

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/dist/commands/config.d.ts +3 -0
  2. package/dist/commands/config.d.ts.map +1 -0
  3. package/dist/commands/config.js +87 -0
  4. package/dist/commands/config.js.map +1 -0
  5. package/dist/commands/dev-watcher.d.ts +21 -0
  6. package/dist/commands/dev-watcher.d.ts.map +1 -0
  7. package/dist/commands/dev-watcher.js +48 -0
  8. package/dist/commands/dev-watcher.js.map +1 -0
  9. package/dist/commands/dev.d.ts +8 -0
  10. package/dist/commands/dev.d.ts.map +1 -0
  11. package/dist/commands/dev.js +60 -0
  12. package/dist/commands/dev.js.map +1 -0
  13. package/dist/commands/domain.d.ts +10 -0
  14. package/dist/commands/domain.d.ts.map +1 -0
  15. package/dist/commands/domain.js +274 -0
  16. package/dist/commands/domain.js.map +1 -0
  17. package/dist/commands/gateway.d.ts +2 -0
  18. package/dist/commands/gateway.d.ts.map +1 -0
  19. package/dist/commands/gateway.js +53 -0
  20. package/dist/commands/gateway.js.map +1 -0
  21. package/dist/commands/init-templates.d.ts +18 -0
  22. package/dist/commands/init-templates.d.ts.map +1 -0
  23. package/dist/commands/init-templates.js +118 -0
  24. package/dist/commands/init-templates.js.map +1 -0
  25. package/dist/commands/init.d.ts +21 -0
  26. package/dist/commands/init.d.ts.map +1 -0
  27. package/dist/commands/init.js +167 -0
  28. package/dist/commands/init.js.map +1 -0
  29. package/dist/commands/mcp-config.d.ts +3 -0
  30. package/dist/commands/mcp-config.d.ts.map +1 -0
  31. package/dist/commands/mcp-config.js +12 -0
  32. package/dist/commands/mcp-config.js.map +1 -0
  33. package/dist/commands/memory.d.ts +3 -0
  34. package/dist/commands/memory.d.ts.map +1 -0
  35. package/dist/commands/memory.js +51 -0
  36. package/dist/commands/memory.js.map +1 -0
  37. package/dist/commands/run.d.ts +10 -0
  38. package/dist/commands/run.d.ts.map +1 -0
  39. package/dist/commands/run.js +141 -0
  40. package/dist/commands/run.js.map +1 -0
  41. package/dist/commands/serve.d.ts +7 -0
  42. package/dist/commands/serve.d.ts.map +1 -0
  43. package/dist/commands/serve.js +24 -0
  44. package/dist/commands/serve.js.map +1 -0
  45. package/dist/commands/skill.d.ts +3 -0
  46. package/dist/commands/skill.d.ts.map +1 -0
  47. package/dist/commands/skill.js +101 -0
  48. package/dist/commands/skill.js.map +1 -0
  49. package/dist/commands/status.d.ts +3 -0
  50. package/dist/commands/status.d.ts.map +1 -0
  51. package/dist/commands/status.js +27 -0
  52. package/dist/commands/status.js.map +1 -0
  53. package/dist/config.d.ts +20 -0
  54. package/dist/config.d.ts.map +1 -0
  55. package/dist/config.js +2 -0
  56. package/dist/config.js.map +1 -0
  57. package/dist/formatters.d.ts +54 -0
  58. package/dist/formatters.d.ts.map +1 -0
  59. package/dist/formatters.js +214 -0
  60. package/dist/formatters.js.map +1 -0
  61. package/dist/index.d.ts +11 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +166 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/mcp/config-generator.d.ts +10 -0
  66. package/dist/mcp/config-generator.d.ts.map +1 -0
  67. package/dist/mcp/config-generator.js +49 -0
  68. package/dist/mcp/config-generator.js.map +1 -0
  69. package/dist/mcp/index.d.ts +26 -0
  70. package/dist/mcp/index.d.ts.map +1 -0
  71. package/dist/mcp/index.js +103 -0
  72. package/dist/mcp/index.js.map +1 -0
  73. package/dist/mcp/server.d.ts +36 -0
  74. package/dist/mcp/server.d.ts.map +1 -0
  75. package/dist/mcp/server.js +155 -0
  76. package/dist/mcp/server.js.map +1 -0
  77. package/dist/mcp/transports.d.ts +28 -0
  78. package/dist/mcp/transports.d.ts.map +1 -0
  79. package/dist/mcp/transports.js +96 -0
  80. package/dist/mcp/transports.js.map +1 -0
  81. package/dist/mcp-entry.d.ts +3 -0
  82. package/dist/mcp-entry.d.ts.map +1 -0
  83. package/dist/mcp-entry.js +24 -0
  84. package/dist/mcp-entry.js.map +1 -0
  85. package/dist/wrapper/claude-code-process.d.ts +52 -0
  86. package/dist/wrapper/claude-code-process.d.ts.map +1 -0
  87. package/dist/wrapper/claude-code-process.js +112 -0
  88. package/dist/wrapper/claude-code-process.js.map +1 -0
  89. package/dist/wrapper/index.d.ts +42 -0
  90. package/dist/wrapper/index.d.ts.map +1 -0
  91. package/dist/wrapper/index.js +9 -0
  92. package/dist/wrapper/index.js.map +1 -0
  93. package/dist/wrapper/session-manager.d.ts +26 -0
  94. package/dist/wrapper/session-manager.d.ts.map +1 -0
  95. package/dist/wrapper/session-manager.js +89 -0
  96. package/dist/wrapper/session-manager.js.map +1 -0
  97. package/package.json +53 -0
package/dist/index.js ADDED
@@ -0,0 +1,166 @@
1
+ #!/usr/bin/env bun
2
+ export { ClaudeSession } from "./wrapper/claude-code-process.js";
3
+ export { SessionManager } from "./wrapper/session-manager.js";
4
+ export { KilnMcpServer, KILN_TOOLS } from "./mcp/index.js";
5
+ export async function createCli(config) {
6
+ const args = process.argv.slice(2);
7
+ const command = args[0];
8
+ const COMMANDS = {
9
+ init: `Initialize ${config.appName} in the current project (--force, --non-interactive, --domain, --provider, --channels, --team-mode)`,
10
+ run: "Start a CLI-only coding session with Claude Code",
11
+ status: "Show current phase, tasks, and costs",
12
+ memory: "Browse and search memory layers",
13
+ config: "Edit domain config and provider settings",
14
+ serve: `Start ${config.appName} MCP server (used by Claude Code)`,
15
+ "mcp-config": "Generate MCP client configuration JSON",
16
+ domain: "Manage domain packages (install, list, search, info, remove)",
17
+ gateway: "Start persistent Gateway (multi-app hosting)",
18
+ dev: "Start development mode with hot-reload and event streaming (--playground)",
19
+ skill: "Manage skills (list, install, publish)",
20
+ };
21
+ function printHelp() {
22
+ console.log(`\n${capitalize(config.appName)} -- ${config.description}\n`);
23
+ console.log(`Usage: ${config.appName} [command] [options]\n`);
24
+ console.log("Commands:");
25
+ for (const [cmd, desc] of Object.entries(COMMANDS)) {
26
+ console.log(` ${cmd.padEnd(12)} ${desc}`);
27
+ }
28
+ console.log("\nOptions:");
29
+ console.log(" --api-key Anthropic API key (required for Mode A)");
30
+ console.log(" --provider LLM provider (claude, openai, deepseek)");
31
+ console.log(" --port Port override (dev/gateway)");
32
+ console.log(" --playground Open Studio in browser (dev mode)");
33
+ console.log(`\nRun '${config.appName} <command> --help' for command-specific help.\n`);
34
+ }
35
+ if (!command) {
36
+ const { devCommand } = await import("./commands/dev.js");
37
+ await devCommand(config, {});
38
+ return;
39
+ }
40
+ if (command === "--help" || command === "-h") {
41
+ printHelp();
42
+ process.exit(0);
43
+ }
44
+ if (command === "--version" || command === "-v") {
45
+ console.log(`${config.appName} ${config.version}`);
46
+ process.exit(0);
47
+ }
48
+ if (!(command in COMMANDS)) {
49
+ console.error(`Unknown command: ${command}`);
50
+ printHelp();
51
+ process.exit(1);
52
+ }
53
+ if (command === "init") {
54
+ const { initCommand } = await import("./commands/init.js");
55
+ await initCommand(config, process.cwd(), {
56
+ force: args.includes("--force"),
57
+ interactive: !args.includes("--non-interactive"),
58
+ domain: findFlag(args, "--domain"),
59
+ provider: findFlag(args, "--provider"),
60
+ channels: findFlag(args, "--channels"),
61
+ teamMode: findFlag(args, "--team-mode"),
62
+ });
63
+ return;
64
+ }
65
+ if (command === "serve") {
66
+ const { serveCommand } = await import("./commands/serve.js");
67
+ await serveCommand(config);
68
+ return;
69
+ }
70
+ if (command === "run") {
71
+ const { task, flags } = parseRunArgs(args.slice(1));
72
+ const { runCommand } = await import("./commands/run.js");
73
+ await runCommand(config, task, flags);
74
+ return;
75
+ }
76
+ if (command === "status") {
77
+ const { statusCommand } = await import("./commands/status.js");
78
+ statusCommand(config);
79
+ return;
80
+ }
81
+ if (command === "memory") {
82
+ const { memoryCommand } = await import("./commands/memory.js");
83
+ memoryCommand(config, args[1] ?? "", args.slice(2));
84
+ return;
85
+ }
86
+ if (command === "config") {
87
+ const { configCommand } = await import("./commands/config.js");
88
+ configCommand(config, args[1] ?? "", args.slice(2));
89
+ return;
90
+ }
91
+ if (command === "mcp-config") {
92
+ const { mcpConfigCommand } = await import("./commands/mcp-config.js");
93
+ const client = args[1];
94
+ const transport = args.find(a => a.startsWith("--transport="))?.split("=")[1];
95
+ const port = args.find(a => a.startsWith("--port="))?.split("=")[1];
96
+ mcpConfigCommand(config, client, transport, port ? parseInt(port, 10) : undefined);
97
+ return;
98
+ }
99
+ if (command === "domain") {
100
+ const { domainCommand } = await import("./commands/domain.js");
101
+ await domainCommand(config, args[1] ?? "", args.slice(2));
102
+ return;
103
+ }
104
+ if (command === "gateway") {
105
+ const { gatewayCommand } = await import("./commands/gateway.js");
106
+ await gatewayCommand(args.slice(1));
107
+ return;
108
+ }
109
+ if (command === "dev") {
110
+ const { devCommand } = await import("./commands/dev.js");
111
+ const port = parsePort(args);
112
+ const configPath = findFlag(args, "--config");
113
+ const playground = args.includes("--playground");
114
+ await devCommand(config, { port, configPath, playground });
115
+ return;
116
+ }
117
+ if (command === "skill") {
118
+ const { skillCommand } = await import("./commands/skill.js");
119
+ await skillCommand(config, args[1] ?? "", args.slice(2));
120
+ return;
121
+ }
122
+ }
123
+ function findFlag(args, flag) {
124
+ const idx = args.indexOf(flag);
125
+ if (idx >= 0 && idx + 1 < args.length)
126
+ return args[idx + 1];
127
+ return undefined;
128
+ }
129
+ function capitalize(s) {
130
+ return s.charAt(0).toUpperCase() + s.slice(1);
131
+ }
132
+ function parsePort(args) {
133
+ const portIdx = args.indexOf("--port");
134
+ if (portIdx >= 0 && portIdx + 1 < args.length) {
135
+ const parsed = parseInt(args[portIdx + 1], 10);
136
+ if (!Number.isNaN(parsed) && parsed > 0)
137
+ return parsed;
138
+ }
139
+ return 4800;
140
+ }
141
+ function parseRunArgs(rawArgs) {
142
+ const flags = {};
143
+ const taskParts = [];
144
+ let i = 0;
145
+ while (i < rawArgs.length) {
146
+ const arg = rawArgs[i];
147
+ if (arg === "--api-key" && i + 1 < rawArgs.length) {
148
+ flags.apiKey = rawArgs[i + 1];
149
+ i += 2;
150
+ }
151
+ else if (arg === "--provider" && i + 1 < rawArgs.length) {
152
+ flags.provider = rawArgs[i + 1];
153
+ i += 2;
154
+ }
155
+ else if (arg === "--dangerously-skip-permissions") {
156
+ flags.dangerouslySkipPermissions = true;
157
+ i += 1;
158
+ }
159
+ else {
160
+ taskParts.push(arg);
161
+ i += 1;
162
+ }
163
+ }
164
+ return { task: taskParts.join(" "), flags };
165
+ }
166
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type McpClient = "claude-code" | "cursor" | "generic";
2
+ export interface McpClientConfig {
3
+ readonly client: McpClient;
4
+ readonly transport: "stdio" | "sse";
5
+ readonly port?: number;
6
+ readonly mcpServerName: string;
7
+ readonly appName: string;
8
+ }
9
+ export declare function generateConfig(config: McpClientConfig): string;
10
+ //# sourceMappingURL=config-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-generator.d.ts","sourceRoot":"","sources":["../../src/mcp/config-generator.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAmD9D"}
@@ -0,0 +1,49 @@
1
+ export function generateConfig(config) {
2
+ const serverName = config.mcpServerName;
3
+ const mcpBin = `${config.appName}-mcp`;
4
+ if (config.client === "claude-code" && config.transport === "stdio") {
5
+ return JSON.stringify({
6
+ mcpServers: {
7
+ [serverName]: {
8
+ command: mcpBin,
9
+ args: [],
10
+ env: {},
11
+ },
12
+ },
13
+ }, null, 2);
14
+ }
15
+ if (config.client === "cursor" && config.transport === "stdio") {
16
+ return JSON.stringify({
17
+ mcpServers: {
18
+ [serverName]: {
19
+ command: mcpBin,
20
+ args: [],
21
+ transportType: "stdio",
22
+ },
23
+ },
24
+ }, null, 2);
25
+ }
26
+ // Generic or SSE
27
+ const port = config.port ?? 3001;
28
+ if (config.transport === "sse") {
29
+ return JSON.stringify({
30
+ mcpServers: {
31
+ [serverName]: {
32
+ url: `http://localhost:${port}/sse`,
33
+ transportType: "sse",
34
+ },
35
+ },
36
+ }, null, 2);
37
+ }
38
+ // Generic stdio
39
+ return JSON.stringify({
40
+ mcpServers: {
41
+ [serverName]: {
42
+ command: mcpBin,
43
+ args: [],
44
+ transportType: "stdio",
45
+ },
46
+ },
47
+ }, null, 2);
48
+ }
49
+ //# sourceMappingURL=config-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-generator.js","sourceRoot":"","sources":["../../src/mcp/config-generator.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC;IACxC,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,MAAM,CAAC;IAEvC,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,UAAU,EAAE;gBACV,CAAC,UAAU,CAAC,EAAE;oBACZ,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,EAAE;oBACR,GAAG,EAAE,EAAE;iBACR;aACF;SACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,UAAU,EAAE;gBACV,CAAC,UAAU,CAAC,EAAE;oBACZ,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,EAAE;oBACR,aAAa,EAAE,OAAO;iBACvB;aACF;SACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAED,iBAAiB;IACjB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;IACjC,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,UAAU,EAAE;gBACV,CAAC,UAAU,CAAC,EAAE;oBACZ,GAAG,EAAE,oBAAoB,IAAI,MAAM;oBACnC,aAAa,EAAE,KAAK;iBACrB;aACF;SACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAED,gBAAgB;IAChB,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,UAAU,EAAE;YACV,CAAC,UAAU,CAAC,EAAE;gBACZ,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,EAAE;gBACR,aAAa,EAAE,OAAO;aACvB;SACF;KACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Kiln MCP Server -- exposes memory, phases, and cost tools
3
+ * to Claude Code (or any MCP client) during an active session.
4
+ */
5
+ /** MCP tool names exposed by Kiln */
6
+ export type KilnTool = "kiln_init" | "kiln_phase_start" | "kiln_memory_save" | "kiln_memory_recall" | "kiln_memory_search" | "kiln_cost_track" | "kiln_cost_summary";
7
+ /** MCP tool registration */
8
+ export interface McpToolDefinition {
9
+ readonly name: KilnTool;
10
+ readonly description: string;
11
+ readonly inputSchema: Record<string, unknown>;
12
+ readonly annotations?: {
13
+ readonly readOnlyHint?: boolean;
14
+ readonly destructiveHint?: boolean;
15
+ readonly idempotentHint?: boolean;
16
+ };
17
+ }
18
+ /** All tools the MCP server exposes */
19
+ export declare const KILN_TOOLS: readonly McpToolDefinition[];
20
+ export { KilnMcpServer } from "./server.js";
21
+ export type { McpServerInfo } from "./server.js";
22
+ export type { TransportType, TransportConfig, TransportResult } from "./transports.js";
23
+ export { createStdioTransport, createSSETransport } from "./transports.js";
24
+ export { generateConfig } from "./config-generator.js";
25
+ export type { McpClient, McpClientConfig } from "./config-generator.js";
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qCAAqC;AACrC,MAAM,MAAM,QAAQ,GAChB,WAAW,GACX,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,GACjB,mBAAmB,CAAC;AAExB,4BAA4B;AAC5B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;KACnC,CAAC;CACH;AAED,uCAAuC;AACvC,eAAO,MAAM,UAAU,EAAE,SAAS,iBAAiB,EA0EzC,CAAC;AAEX,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Kiln MCP Server -- exposes memory, phases, and cost tools
3
+ * to Claude Code (or any MCP client) during an active session.
4
+ */
5
+ /** All tools the MCP server exposes */
6
+ export const KILN_TOOLS = [
7
+ {
8
+ name: "kiln_init",
9
+ description: "Initialize a Kiln session. Returns the session ID and current orchestrator status.",
10
+ inputSchema: { type: "object", properties: {} },
11
+ annotations: { readOnlyHint: true },
12
+ },
13
+ {
14
+ name: "kiln_phase_start",
15
+ description: "Advance the orchestrator to the next phase. Returns the new phase name.",
16
+ inputSchema: { type: "object", properties: {} },
17
+ },
18
+ {
19
+ name: "kiln_memory_save",
20
+ description: "Save an insight, pattern, or decision to persistent memory. The agent decides what is worth saving.",
21
+ inputSchema: {
22
+ type: "object",
23
+ properties: {
24
+ content: { type: "string", description: "The insight or pattern to save" },
25
+ layer: { type: "string", enum: ["user", "agent", "project"], description: "Which memory layer to save to" },
26
+ tags: { type: "array", items: { type: "string" }, description: "Tags for categorization" },
27
+ },
28
+ required: ["content", "layer"],
29
+ },
30
+ annotations: { destructiveHint: false, idempotentHint: false },
31
+ },
32
+ {
33
+ name: "kiln_memory_recall",
34
+ description: "Retrieve relevant memories for the current task. Searches all 3 layers with progressive disclosure.",
35
+ inputSchema: {
36
+ type: "object",
37
+ properties: {
38
+ query: { type: "string", description: "What to search for" },
39
+ layer: { type: "string", enum: ["user", "agent", "project", "all"], description: "Which layer(s) to search" },
40
+ limit: { type: "number", description: "Max results to return" },
41
+ },
42
+ required: ["query"],
43
+ },
44
+ annotations: { readOnlyHint: true },
45
+ },
46
+ {
47
+ name: "kiln_memory_search",
48
+ description: "Full-text search across all memory layers. Returns matching entries ranked by relevance.",
49
+ inputSchema: {
50
+ type: "object",
51
+ properties: {
52
+ query: { type: "string", description: "Search query" },
53
+ limit: { type: "number", description: "Max results to return" },
54
+ },
55
+ required: ["query"],
56
+ },
57
+ annotations: { readOnlyHint: true },
58
+ },
59
+ {
60
+ name: "kiln_cost_track",
61
+ description: "Record token usage for a specific agent role.",
62
+ inputSchema: {
63
+ type: "object",
64
+ properties: {
65
+ role: { type: "string", description: "Agent role (e.g. architect, worker, optimizer)" },
66
+ model: { type: "string", description: "Model identifier for cost calculation" },
67
+ inputTokens: { type: "number" },
68
+ outputTokens: { type: "number" },
69
+ cacheReadTokens: { type: "number" },
70
+ },
71
+ required: ["role", "model", "inputTokens", "outputTokens"],
72
+ },
73
+ },
74
+ {
75
+ name: "kiln_cost_summary",
76
+ description: "Get the current cost breakdown by role.",
77
+ inputSchema: { type: "object", properties: {} },
78
+ annotations: { readOnlyHint: true },
79
+ },
80
+ ];
81
+ export { KilnMcpServer } from "./server.js";
82
+ export { createStdioTransport, createSSETransport } from "./transports.js";
83
+ export { generateConfig } from "./config-generator.js";
84
+ /**
85
+ * When run directly by Claude Code (via MCP config), start a stdio MCP server.
86
+ * This is the entry point that Claude Code spawns as a subprocess.
87
+ */
88
+ if (import.meta.main) {
89
+ const { Orchestrator } = await import("@kilnai/core");
90
+ const { KilnMcpServer } = await import("./server.js");
91
+ const orchestrator = new Orchestrator();
92
+ const server = new KilnMcpServer(orchestrator);
93
+ console.error("[kiln-mcp] Starting stdio MCP server...");
94
+ try {
95
+ await server.start({ type: "stdio" });
96
+ console.error("[kiln-mcp] MCP server connected via stdio");
97
+ }
98
+ catch (err) {
99
+ console.error("[kiln-mcp] Failed to start MCP server:", err);
100
+ process.exit(1);
101
+ }
102
+ }
103
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ import type { Orchestrator, MemoryManager } from "@kilnai/core";
3
+ import { type KilnTool } from "./index.js";
4
+ import { type TransportConfig } from "./transports.js";
5
+ type ToolHandler = (args: Record<string, unknown>) => CallToolResult | Promise<CallToolResult>;
6
+ /** MCP server identity passed to the MCP protocol handshake. */
7
+ export interface McpServerInfo {
8
+ readonly name: string;
9
+ readonly version: string;
10
+ }
11
+ /**
12
+ * MCP server exposing 7 Kiln tools via stdio or SSE transport.
13
+ * Bridges the MCP protocol to the Orchestrator.
14
+ */
15
+ export declare class KilnMcpServer {
16
+ private readonly orchestrator;
17
+ private _mcpServer;
18
+ private _httpServer;
19
+ private readonly _handlers;
20
+ private readonly _memoryManager;
21
+ private readonly _serverInfo;
22
+ constructor(orchestrator: Orchestrator, memoryManager?: MemoryManager, serverInfo?: McpServerInfo);
23
+ /** Start listening on the configured transport. */
24
+ start(config?: TransportConfig): Promise<void>;
25
+ /** Graceful shutdown. */
26
+ stop(): Promise<void>;
27
+ /** Get a tool handler by name (for testing without stdio). */
28
+ getHandler(toolName: KilnTool): ToolHandler | undefined;
29
+ /** All registered tool names. */
30
+ get toolNames(): readonly KilnTool[];
31
+ private _createMcpServer;
32
+ private _registerToolsOn;
33
+ private _buildHandlers;
34
+ }
35
+ export {};
36
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAe,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAM/F,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,aAAa;IAQtB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAP/B,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;gBAGzB,YAAY,EAAE,YAAY,EAC3C,aAAa,CAAC,EAAE,aAAa,EAC7B,UAAU,CAAC,EAAE,aAAa;IAO5B,mDAAmD;IAC7C,KAAK,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBpD,yBAAyB;IACnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B,8DAA8D;IAC9D,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS;IAIvD,iCAAiC;IACjC,IAAI,SAAS,IAAI,SAAS,QAAQ,EAAE,CAEnC;IAED,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;CAsFvB"}
@@ -0,0 +1,155 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { KILN_TOOLS } from "./index.js";
4
+ import { createStdioTransport, createSSETransport, } from "./transports.js";
5
+ function jsonResult(data) {
6
+ return { content: [{ type: "text", text: JSON.stringify(data) }] };
7
+ }
8
+ /**
9
+ * MCP server exposing 7 Kiln tools via stdio or SSE transport.
10
+ * Bridges the MCP protocol to the Orchestrator.
11
+ */
12
+ export class KilnMcpServer {
13
+ orchestrator;
14
+ _mcpServer = null;
15
+ _httpServer = null;
16
+ _handlers;
17
+ _memoryManager;
18
+ _serverInfo;
19
+ constructor(orchestrator, memoryManager, serverInfo) {
20
+ this.orchestrator = orchestrator;
21
+ this._memoryManager = memoryManager ?? null;
22
+ this._serverInfo = serverInfo ?? { name: "kiln", version: "0.2.1" };
23
+ this._handlers = this._buildHandlers();
24
+ }
25
+ /** Start listening on the configured transport. */
26
+ async start(config) {
27
+ const transportType = config?.type ?? "stdio";
28
+ if (transportType === "sse") {
29
+ const result = createSSETransport(config?.port);
30
+ this._httpServer = result.httpServer;
31
+ // Each SSE client gets its own McpServer instance sharing the same handlers
32
+ result.attachServerFactory(() => {
33
+ const server = this._createMcpServer();
34
+ this._registerToolsOn(server);
35
+ return server;
36
+ });
37
+ return;
38
+ }
39
+ // stdio (default)
40
+ this._mcpServer = this._createMcpServer();
41
+ this._registerToolsOn(this._mcpServer);
42
+ const result = createStdioTransport();
43
+ await this._mcpServer.connect(result.transport);
44
+ }
45
+ /** Graceful shutdown. */
46
+ async stop() {
47
+ if (this._httpServer) {
48
+ await new Promise((resolve) => {
49
+ this._httpServer.close(() => resolve());
50
+ });
51
+ this._httpServer = null;
52
+ }
53
+ if (this._mcpServer) {
54
+ await this._mcpServer.close();
55
+ this._mcpServer = null;
56
+ }
57
+ }
58
+ /** Get a tool handler by name (for testing without stdio). */
59
+ getHandler(toolName) {
60
+ return this._handlers.get(toolName);
61
+ }
62
+ /** All registered tool names. */
63
+ get toolNames() {
64
+ return [...this._handlers.keys()];
65
+ }
66
+ _createMcpServer() {
67
+ return new McpServer({ name: this._serverInfo.name, version: this._serverInfo.version }, { capabilities: { tools: {} } });
68
+ }
69
+ _registerToolsOn(server) {
70
+ for (const tool of KILN_TOOLS) {
71
+ const handler = this._handlers.get(tool.name);
72
+ if (!handler)
73
+ continue;
74
+ server.registerTool(tool.name, {
75
+ description: tool.description,
76
+ annotations: tool.annotations,
77
+ }, async (args) => {
78
+ return handler(args);
79
+ });
80
+ }
81
+ }
82
+ _buildHandlers() {
83
+ const handlers = new Map();
84
+ handlers.set("kiln_init", () => jsonResult({
85
+ sessionId: this.orchestrator.sessionId,
86
+ status: this.orchestrator.status,
87
+ }));
88
+ handlers.set("kiln_phase_start", () => {
89
+ const result = this.orchestrator.advancePhase();
90
+ // advancePhase can return Phase | Promise<Phase | null> | null
91
+ // For sync results, return immediately
92
+ if (result instanceof Promise) {
93
+ return result.then((phase) => jsonResult({ phase, advanced: phase !== null }));
94
+ }
95
+ return jsonResult({ phase: result, advanced: result !== null });
96
+ });
97
+ handlers.set("kiln_memory_save", async (args) => {
98
+ if (!this._memoryManager) {
99
+ return jsonResult({ saved: true, id: randomUUID() });
100
+ }
101
+ const content = args["content"] ?? "";
102
+ const layer = args["layer"] ?? "project";
103
+ const tags = args["tags"] ?? [];
104
+ const id = await this._memoryManager.save({ content, layer, tags });
105
+ return jsonResult({ saved: true, id });
106
+ });
107
+ handlers.set("kiln_memory_recall", async (args) => {
108
+ if (!this._memoryManager) {
109
+ return jsonResult({ results: [] });
110
+ }
111
+ const query = args["query"] ?? "";
112
+ const tokenBudget = args["limit"] ?? 2000;
113
+ const text = await this._memoryManager.recall(query, tokenBudget);
114
+ return jsonResult({ results: text });
115
+ });
116
+ handlers.set("kiln_memory_search", async (args) => {
117
+ if (!this._memoryManager) {
118
+ return jsonResult({ results: [] });
119
+ }
120
+ const query = args["query"] ?? "";
121
+ const layer = args["layer"];
122
+ const limit = args["limit"];
123
+ const results = layer
124
+ ? await this._memoryManager.searchByLayer(query, layer, limit)
125
+ : await this._memoryManager.search(query, limit);
126
+ return jsonResult({
127
+ results: results.map((r) => ({
128
+ id: r.entry.id,
129
+ content: r.entry.content,
130
+ layer: r.entry.layer,
131
+ score: r.score,
132
+ snippet: r.snippet,
133
+ tags: r.entry.tags,
134
+ })),
135
+ });
136
+ });
137
+ handlers.set("kiln_cost_track", (args) => {
138
+ const role = args["role"];
139
+ const model = args["model"] ?? "unknown";
140
+ const inputTokens = args["inputTokens"] ?? 0;
141
+ const outputTokens = args["outputTokens"] ?? 0;
142
+ const cacheReadTokens = args["cacheReadTokens"] ?? 0;
143
+ this.orchestrator.recordUsage(role, model, {
144
+ inputTokens,
145
+ outputTokens,
146
+ cacheReadTokens,
147
+ cacheWriteTokens: 0,
148
+ });
149
+ return jsonResult({ recorded: true });
150
+ });
151
+ handlers.set("kiln_cost_summary", () => jsonResult(this.orchestrator.costSummary));
152
+ return handlers;
153
+ }
154
+ }
155
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GAEnB,MAAM,iBAAiB,CAAC;AAIzB,SAAS,UAAU,CAAC,IAAa;IAC/B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACrE,CAAC;AAQD;;;GAGG;AACH,MAAM,OAAO,aAAa;IAQL;IAPX,UAAU,GAAqB,IAAI,CAAC;IACpC,WAAW,GAAkB,IAAI,CAAC;IACzB,SAAS,CAA6B;IACtC,cAAc,CAAuB;IACrC,WAAW,CAAgB;IAE5C,YACmB,YAA0B,EAC3C,aAA6B,EAC7B,UAA0B;QAFT,iBAAY,GAAZ,YAAY,CAAc;QAI3C,IAAI,CAAC,cAAc,GAAG,aAAa,IAAI,IAAI,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QACpE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACzC,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,KAAK,CAAC,MAAwB;QAClC,MAAM,aAAa,GAAG,MAAM,EAAE,IAAI,IAAI,OAAO,CAAC;QAE9C,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;YAErC,4EAA4E;YAC5E,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE;gBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACvC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC9B,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,UAAU,CAAC,QAAkB;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,iCAAiC;IACjC,IAAI,SAAS;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,SAAS,CAClB,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAClE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,MAAiB;QACxC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,EAAE,KAAK,EAAE,IAA6B,EAAE,EAAE;gBACzC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;QAElD,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAC7B,UAAU,CAAC;YACT,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;YACtC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;SACjC,CAAC,CACH,CAAC;QAEF,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,EAAE;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YAChD,+DAA+D;YAC/D,uCAAuC;YACvC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;YACjF,CAAC;YACD,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzB,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,OAAO,GAAI,IAAI,CAAC,SAAS,CAAY,IAAI,EAAE,CAAC;YAClD,MAAM,KAAK,GAAI,IAAI,CAAC,OAAO,CAAiB,IAAI,SAAS,CAAC;YAC1D,MAAM,IAAI,GAAI,IAAI,CAAC,MAAM,CAAc,IAAI,EAAE,CAAC;YAC9C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzB,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,KAAK,GAAI,IAAI,CAAC,OAAO,CAAY,IAAI,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAI,IAAI,CAAC,OAAO,CAAY,IAAI,IAAI,CAAC;YACtD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAClE,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzB,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,KAAK,GAAI,IAAI,CAAC,OAAO,CAAY,IAAI,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAA4B,CAAC;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAuB,CAAC;YAClD,MAAM,OAAO,GAAG,KAAK;gBACnB,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;gBAC9D,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,UAAU,CAAC;gBAChB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC3B,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;oBACd,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO;oBACxB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK;oBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;iBACnB,CAAC,CAAC;aACJ,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAW,CAAC;YACpC,MAAM,KAAK,GAAI,IAAI,CAAC,OAAO,CAAY,IAAI,SAAS,CAAC;YACrD,MAAM,WAAW,GAAI,IAAI,CAAC,aAAa,CAAY,IAAI,CAAC,CAAC;YACzD,MAAM,YAAY,GAAI,IAAI,CAAC,cAAc,CAAY,IAAI,CAAC,CAAC;YAC3D,MAAM,eAAe,GAAI,IAAI,CAAC,iBAAiB,CAAY,IAAI,CAAC,CAAC;YAEjE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;gBACzC,WAAW;gBACX,YAAY;gBACZ,eAAe;gBACf,gBAAgB,EAAE,CAAC;aACpB,CAAC,CAAC;YAEH,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,CACrC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAC1C,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
@@ -0,0 +1,28 @@
1
+ import { type Server } from "node:http";
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ export type TransportType = "stdio" | "sse";
5
+ export interface TransportConfig {
6
+ readonly type: TransportType;
7
+ readonly port?: number;
8
+ }
9
+ export interface StdioTransportResult {
10
+ readonly type: "stdio";
11
+ readonly transport: StdioServerTransport;
12
+ }
13
+ export interface SSETransportResult {
14
+ readonly type: "sse";
15
+ readonly httpServer: Server;
16
+ /**
17
+ * Attach an MCP server factory so each SSE client connection
18
+ * gets its own McpServer instance with tools registered.
19
+ *
20
+ * SSEServerTransport requires a live ServerResponse at construction,
21
+ * so transports are created per-connection, not upfront.
22
+ */
23
+ readonly attachServerFactory: (factory: () => McpServer) => void;
24
+ }
25
+ export type TransportResult = StdioTransportResult | SSETransportResult;
26
+ export declare function createStdioTransport(): StdioTransportResult;
27
+ export declare function createSSETransport(port?: number): SSETransportResult;
28
+ //# sourceMappingURL=transports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../../src/mcp/transports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiD,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,SAAS,KAAK,IAAI,CAAC;CAClE;AAED,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAExE,wBAAgB,oBAAoB,IAAI,oBAAoB,CAE3D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAa,GAAG,kBAAkB,CA2F1E"}