@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
@@ -0,0 +1,96 @@
1
+ import { createServer } from "node:http";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
4
+ export function createStdioTransport() {
5
+ return { type: "stdio", transport: new StdioServerTransport() };
6
+ }
7
+ export function createSSETransport(port = 3001) {
8
+ const transports = new Map();
9
+ let serverFactory = null;
10
+ const httpServer = createServer(async (req, res) => {
11
+ const url = new URL(req.url ?? "/", `http://localhost:${port}`);
12
+ if (req.method === "GET" && url.pathname === "/sse") {
13
+ if (!serverFactory) {
14
+ res.writeHead(503, { "Content-Type": "text/plain" });
15
+ res.end("Server not ready");
16
+ return;
17
+ }
18
+ try {
19
+ const transport = new SSEServerTransport("/message", res);
20
+ const sessionId = transport.sessionId;
21
+ transports.set(sessionId, transport);
22
+ transport.onclose = () => {
23
+ transports.delete(sessionId);
24
+ };
25
+ const mcpServer = serverFactory();
26
+ await mcpServer.connect(transport);
27
+ }
28
+ catch (error) {
29
+ if (!res.headersSent) {
30
+ res.writeHead(500, { "Content-Type": "text/plain" });
31
+ res.end("Error establishing SSE stream");
32
+ }
33
+ }
34
+ return;
35
+ }
36
+ if (req.method === "POST" && url.pathname === "/message") {
37
+ const sessionId = url.searchParams.get("sessionId");
38
+ if (!sessionId) {
39
+ res.writeHead(400, { "Content-Type": "text/plain" });
40
+ res.end("Missing sessionId parameter");
41
+ return;
42
+ }
43
+ const transport = transports.get(sessionId);
44
+ if (!transport) {
45
+ res.writeHead(404, { "Content-Type": "text/plain" });
46
+ res.end("Session not found");
47
+ return;
48
+ }
49
+ try {
50
+ // Read the request body
51
+ const body = await readBody(req);
52
+ const parsed = JSON.parse(body);
53
+ await transport.handlePostMessage(req, res, parsed);
54
+ }
55
+ catch (error) {
56
+ if (!res.headersSent) {
57
+ res.writeHead(500, { "Content-Type": "text/plain" });
58
+ res.end("Error handling message");
59
+ }
60
+ }
61
+ return;
62
+ }
63
+ // Health check
64
+ if (req.method === "GET" && url.pathname === "/health") {
65
+ res.writeHead(200, { "Content-Type": "application/json" });
66
+ res.end(JSON.stringify({ status: "ok", sessions: transports.size }));
67
+ return;
68
+ }
69
+ res.writeHead(404, { "Content-Type": "text/plain" });
70
+ res.end("Not found");
71
+ });
72
+ httpServer.listen(port);
73
+ // On server close, clean up all transports
74
+ httpServer.on("close", () => {
75
+ for (const transport of transports.values()) {
76
+ transport.close().catch(() => { });
77
+ }
78
+ transports.clear();
79
+ });
80
+ return {
81
+ type: "sse",
82
+ httpServer,
83
+ attachServerFactory: (factory) => {
84
+ serverFactory = factory;
85
+ },
86
+ };
87
+ }
88
+ function readBody(req) {
89
+ return new Promise((resolve, reject) => {
90
+ const chunks = [];
91
+ req.on("data", (chunk) => chunks.push(chunk));
92
+ req.on("end", () => resolve(Buffer.concat(chunks).toString("utf-8")));
93
+ req.on("error", reject);
94
+ });
95
+ }
96
+ //# sourceMappingURL=transports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/mcp/transports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ export {};
3
+ //# sourceMappingURL=mcp-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-entry.d.ts","sourceRoot":"","sources":["../src/mcp-entry.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env bun
2
+ import { serveCommand } from "./commands/serve.js";
3
+ // Default minimal config for standalone MCP server usage
4
+ const defaultAppConfig = {
5
+ appName: "kiln",
6
+ dirName: ".kiln",
7
+ version: "0.1.0",
8
+ description: "Kiln AI orchestration engine",
9
+ createRegistry: () => {
10
+ throw new Error("createRegistry not configured for standalone MCP server");
11
+ },
12
+ buildSystemPrompt: () => {
13
+ throw new Error("buildSystemPrompt not configured for standalone MCP server");
14
+ },
15
+ mcpServerName: "kiln",
16
+ };
17
+ const args = process.argv.slice(2);
18
+ const transportArg = args.find(a => a.startsWith("--transport="))?.split("=")[1];
19
+ const portArg = args.find(a => a.startsWith("--port="))?.split("=")[1];
20
+ await serveCommand(defaultAppConfig, {
21
+ transport: transportArg ?? "stdio",
22
+ port: portArg ? parseInt(portArg, 10) : undefined,
23
+ });
24
+ //# sourceMappingURL=mcp-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-entry.js","sourceRoot":"","sources":["../src/mcp-entry.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,yDAAyD;AACzD,MAAM,gBAAgB,GAAkB;IACtC,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,8BAA8B;IAC3C,cAAc,EAAE,GAAG,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,iBAAiB,EAAE,GAAG,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,aAAa,EAAE,MAAM;CACtB,CAAC;AAEF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE,MAAM,YAAY,CAAC,gBAAgB,EAAE;IACnC,SAAS,EAAG,YAA8B,IAAI,OAAO;IACrD,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;CAClD,CAAC,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Claude Code session using the official Agent SDK.
3
+ *
4
+ * Replaces the previous subprocess approach that failed due to
5
+ * Claude Code requiring a TTY. The SDK handles subprocess lifecycle
6
+ * internally via its `query()` function.
7
+ *
8
+ * See: https://github.com/anthropics/claude-code/issues/771
9
+ */
10
+ type SDKMessage = import("@anthropic-ai/claude-agent-sdk").SDKMessage;
11
+ type Options = import("@anthropic-ai/claude-agent-sdk").Options;
12
+ type MessageHandler = (message: SDKMessage) => void;
13
+ type ExitHandler = (exitCode: number, costUsd: number) => void;
14
+ /** Configuration for a Claude Code SDK session. */
15
+ export interface ClaudeSessionConfig {
16
+ readonly task: string;
17
+ readonly systemPrompt: string;
18
+ readonly mcpServers?: Options["mcpServers"];
19
+ readonly cwd: string;
20
+ readonly env?: Record<string, string>;
21
+ readonly permissionMode?: "default" | "acceptEdits" | "bypassPermissions";
22
+ readonly allowDangerouslySkipPermissions?: boolean;
23
+ }
24
+ /**
25
+ * Wraps the Claude Agent SDK `query()` function with an event-based API.
26
+ *
27
+ * Usage:
28
+ * const session = new ClaudeSession(config);
29
+ * session.onMessage((msg) => { ... });
30
+ * session.onExit((code, cost) => { ... });
31
+ * await session.start();
32
+ */
33
+ export declare class ClaudeSession {
34
+ private readonly config;
35
+ private queryInstance;
36
+ private abortController;
37
+ private readonly messageHandlers;
38
+ private readonly exitHandlers;
39
+ private _isRunning;
40
+ constructor(config: ClaudeSessionConfig);
41
+ /** Start the SDK query. Resolves when the session ends. */
42
+ start(): Promise<void>;
43
+ /** Stop the session by aborting and closing the SDK query. */
44
+ stop(): void;
45
+ get isRunning(): boolean;
46
+ /** Register callback for each SDK message. */
47
+ onMessage(handler: MessageHandler): void;
48
+ /** Register callback for when the session ends. */
49
+ onExit(handler: ExitHandler): void;
50
+ }
51
+ export {};
52
+ //# sourceMappingURL=claude-code-process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-process.d.ts","sourceRoot":"","sources":["../../src/wrapper/claude-code-process.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,KAAK,UAAU,GAAG,OAAO,gCAAgC,EAAE,UAAU,CAAC;AACtE,KAAK,OAAO,GAAG,OAAO,gCAAgC,EAAE,OAAO,CAAC;AAGhE,KAAK,cAAc,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;AACpD,KAAK,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAE/D,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,mBAAmB,CAAC;IAC1E,QAAQ,CAAC,+BAA+B,CAAC,EAAE,OAAO,CAAC;CACpD;AAED;;;;;;;;GAQG;AACH,qBAAa,aAAa;IAOZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,UAAU,CAAS;gBAEE,MAAM,EAAE,mBAAmB;IAExD,2DAA2D;IACrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+D5B,8DAA8D;IAC9D,IAAI,IAAI,IAAI;IAWZ,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,8CAA8C;IAC9C,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIxC,mDAAmD;IACnD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;CAGnC"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Claude Code session using the official Agent SDK.
3
+ *
4
+ * Replaces the previous subprocess approach that failed due to
5
+ * Claude Code requiring a TTY. The SDK handles subprocess lifecycle
6
+ * internally via its `query()` function.
7
+ *
8
+ * See: https://github.com/anthropics/claude-code/issues/771
9
+ */
10
+ /**
11
+ * Wraps the Claude Agent SDK `query()` function with an event-based API.
12
+ *
13
+ * Usage:
14
+ * const session = new ClaudeSession(config);
15
+ * session.onMessage((msg) => { ... });
16
+ * session.onExit((code, cost) => { ... });
17
+ * await session.start();
18
+ */
19
+ export class ClaudeSession {
20
+ config;
21
+ queryInstance = null;
22
+ abortController = null;
23
+ messageHandlers = [];
24
+ exitHandlers = [];
25
+ _isRunning = false;
26
+ constructor(config) {
27
+ this.config = config;
28
+ }
29
+ /** Start the SDK query. Resolves when the session ends. */
30
+ async start() {
31
+ const { query } = await import("@anthropic-ai/claude-agent-sdk");
32
+ this._isRunning = true;
33
+ this.abortController = new AbortController();
34
+ const env = { ...process.env };
35
+ if (this.config.env) {
36
+ Object.assign(env, this.config.env);
37
+ }
38
+ const options = {
39
+ abortController: this.abortController,
40
+ systemPrompt: {
41
+ type: "preset",
42
+ preset: "claude_code",
43
+ append: this.config.systemPrompt,
44
+ },
45
+ mcpServers: this.config.mcpServers,
46
+ cwd: this.config.cwd,
47
+ env,
48
+ includePartialMessages: false,
49
+ permissionMode: this.config.permissionMode ?? "default",
50
+ allowDangerouslySkipPermissions: this.config.allowDangerouslySkipPermissions,
51
+ settingSources: ["project"],
52
+ stderr: (data) => {
53
+ console.error(`[claude:stderr] ${data.trimEnd()}`);
54
+ },
55
+ };
56
+ const queryInstance = query({
57
+ prompt: this.config.task,
58
+ options,
59
+ });
60
+ this.queryInstance = queryInstance;
61
+ let totalCostUsd = 0;
62
+ try {
63
+ for await (const message of queryInstance) {
64
+ for (const handler of this.messageHandlers) {
65
+ try {
66
+ handler(message);
67
+ }
68
+ catch (err) {
69
+ console.error("[claude:session] handler error:", err);
70
+ }
71
+ }
72
+ if (message.type === "result") {
73
+ totalCostUsd = message.total_cost_usd;
74
+ }
75
+ }
76
+ this._isRunning = false;
77
+ for (const handler of this.exitHandlers) {
78
+ handler(0, totalCostUsd);
79
+ }
80
+ }
81
+ catch (err) {
82
+ this._isRunning = false;
83
+ console.error("[claude:session] error:", err);
84
+ for (const handler of this.exitHandlers) {
85
+ handler(1, totalCostUsd);
86
+ }
87
+ }
88
+ }
89
+ /** Stop the session by aborting and closing the SDK query. */
90
+ stop() {
91
+ if (this.abortController) {
92
+ this.abortController.abort();
93
+ this.abortController = null;
94
+ }
95
+ if (this.queryInstance) {
96
+ this.queryInstance.close();
97
+ this.queryInstance = null;
98
+ }
99
+ }
100
+ get isRunning() {
101
+ return this._isRunning;
102
+ }
103
+ /** Register callback for each SDK message. */
104
+ onMessage(handler) {
105
+ this.messageHandlers.push(handler);
106
+ }
107
+ /** Register callback for when the session ends. */
108
+ onExit(handler) {
109
+ this.exitHandlers.push(handler);
110
+ }
111
+ }
112
+ //# sourceMappingURL=claude-code-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-process.js","sourceRoot":"","sources":["../../src/wrapper/claude-code-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Kiln Wrapper -- orchestrates the lifecycle around Claude Code sessions.
3
+ * Pre-session: detect stack, load memory, build system prompt, configure MCP.
4
+ * During: Claude Code runs with Kiln MCP tools available.
5
+ * Post-session: save memory, generate report, sync to git.
6
+ */
7
+ import type { DomainConfig } from "@kilnai/core";
8
+ /** Session mode determines how Claude Code is launched */
9
+ export type SessionMode = "api-key" | "byok";
10
+ /** Pre-session context built by the wrapper */
11
+ export interface SessionContext {
12
+ readonly mode: SessionMode;
13
+ readonly domain: DomainConfig;
14
+ readonly systemPrompt: string;
15
+ readonly mcpServerEntryPath: string;
16
+ readonly workingDirectory: string;
17
+ readonly task: string;
18
+ }
19
+ /** Post-session report generated by the wrapper */
20
+ export interface SessionReport {
21
+ readonly sessionId: string;
22
+ readonly task: string;
23
+ readonly domain: string;
24
+ readonly phaseReached: string;
25
+ readonly cost: {
26
+ readonly total: number;
27
+ readonly byRole: Record<string, number>;
28
+ };
29
+ readonly duration: number;
30
+ }
31
+ /** Wrapper configuration */
32
+ export interface WrapperConfig {
33
+ readonly mode: SessionMode;
34
+ readonly apiKey?: string;
35
+ readonly provider?: string;
36
+ readonly dangerouslySkipPermissions: boolean;
37
+ }
38
+ export { ClaudeSession } from "./claude-code-process.js";
39
+ export type { ClaudeSessionConfig } from "./claude-code-process.js";
40
+ export { SessionManager } from "./session-manager.js";
41
+ export type { KilnAppConfig, SystemPromptOptions } from "../config.js";
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wrapper/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,0DAA0D;AAC1D,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,MAAM,CAAC;AAEX,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACzC,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,4BAA4B;AAC5B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;CAC9C;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Kiln Wrapper -- orchestrates the lifecycle around Claude Code sessions.
3
+ * Pre-session: detect stack, load memory, build system prompt, configure MCP.
4
+ * During: Claude Code runs with Kiln MCP tools available.
5
+ * Post-session: save memory, generate report, sync to git.
6
+ */
7
+ export { ClaudeSession } from "./claude-code-process.js";
8
+ export { SessionManager } from "./session-manager.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wrapper/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwCH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { WrapperConfig, SessionContext, SessionReport } from "./index.js";
2
+ import type { KilnAppConfig } from "../config.js";
3
+ /**
4
+ * Manages the full session lifecycle: prepare -> cleanup.
5
+ *
6
+ * The `launch` step is handled by `ClaudeSession` (SDK-based),
7
+ * so this class only handles pre-session setup and post-session reporting.
8
+ */
9
+ export declare class SessionManager {
10
+ private readonly wrapperConfig;
11
+ private readonly appConfig;
12
+ private orchestrator;
13
+ private domain;
14
+ private sessionStartTime;
15
+ constructor(wrapperConfig: WrapperConfig, appConfig: KilnAppConfig);
16
+ /**
17
+ * Pre-session setup: detect domain, build system prompt, resolve MCP entry path.
18
+ * Returns a SessionContext with all fields populated.
19
+ */
20
+ prepare(task: string, projectPath: string, memorySnapshot?: string): SessionContext;
21
+ /**
22
+ * Post-session cleanup: build report.
23
+ */
24
+ cleanup(sessionId: string): SessionReport;
25
+ }
26
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/wrapper/session-manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,gBAAgB,CAAuB;gBAEnC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa;IAKlE;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,cAAc;IAiCnF;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;CAyB1C"}
@@ -0,0 +1,89 @@
1
+ import { dirname, join } from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import { Orchestrator } from "@kilnai/core";
4
+ import { MODEL_PRICING } from "@kilnai/core";
5
+ /**
6
+ * Manages the full session lifecycle: prepare -> cleanup.
7
+ *
8
+ * The `launch` step is handled by `ClaudeSession` (SDK-based),
9
+ * so this class only handles pre-session setup and post-session reporting.
10
+ */
11
+ export class SessionManager {
12
+ wrapperConfig;
13
+ appConfig;
14
+ orchestrator = null;
15
+ domain = null;
16
+ sessionStartTime = null;
17
+ constructor(wrapperConfig, appConfig) {
18
+ this.wrapperConfig = wrapperConfig;
19
+ this.appConfig = appConfig;
20
+ }
21
+ /**
22
+ * Pre-session setup: detect domain, build system prompt, resolve MCP entry path.
23
+ * Returns a SessionContext with all fields populated.
24
+ */
25
+ prepare(task, projectPath, memorySnapshot) {
26
+ const registry = this.appConfig.createRegistry();
27
+ registry.loadInstalledDomains(projectPath);
28
+ this.domain = registry.detectAndMerge(projectPath);
29
+ const systemPrompt = this.appConfig.buildSystemPrompt({
30
+ task,
31
+ domain: this.domain,
32
+ memorySnapshot,
33
+ projectPath,
34
+ });
35
+ // Resolve the MCP server entry script path (for SDK stdio transport).
36
+ // Uses .js extension so the path is valid in both dev (bun runs .js) and
37
+ // published npm packages (only .js exists in dist/).
38
+ const mcpServerEntryPath = join(dirname(fileURLToPath(import.meta.url)), "..", "mcp", "index.js");
39
+ this.orchestrator = new Orchestrator();
40
+ this.sessionStartTime = Date.now();
41
+ return {
42
+ mode: this.wrapperConfig.mode,
43
+ domain: this.domain,
44
+ systemPrompt,
45
+ mcpServerEntryPath,
46
+ workingDirectory: projectPath,
47
+ task,
48
+ };
49
+ }
50
+ /**
51
+ * Post-session cleanup: build report.
52
+ */
53
+ cleanup(sessionId) {
54
+ const duration = this.sessionStartTime
55
+ ? Date.now() - this.sessionStartTime
56
+ : 0;
57
+ const costSummary = this.orchestrator?.costSummary;
58
+ const byRole = {};
59
+ if (costSummary) {
60
+ for (const [role, usage] of Object.entries(costSummary.byRole)) {
61
+ byRole[role] = computeRoleCostUsd(usage);
62
+ }
63
+ }
64
+ return {
65
+ sessionId,
66
+ task: this.orchestrator?.task ?? "",
67
+ domain: this.domain?.displayName ?? "Unknown",
68
+ phaseReached: this.orchestrator?.currentPhase ?? "analyze",
69
+ cost: {
70
+ total: costSummary?.totalCostUsd ?? 0,
71
+ byRole,
72
+ },
73
+ duration,
74
+ };
75
+ }
76
+ }
77
+ /** Compute USD cost for a single role usage entry */
78
+ function computeRoleCostUsd(usage) {
79
+ const pricing = MODEL_PRICING.get(usage.model);
80
+ if (!pricing)
81
+ return 0;
82
+ const uncachedInput = Math.max(0, usage.inputTokens - usage.cacheReadTokens - usage.cacheWriteTokens);
83
+ return ((uncachedInput * pricing.inputRate +
84
+ usage.outputTokens * pricing.outputRate +
85
+ usage.cacheReadTokens * pricing.inputRate * pricing.cacheReadMultiplier +
86
+ usage.cacheWriteTokens * pricing.inputRate * pricing.cacheWriteMultiplier) /
87
+ 1_000_000);
88
+ }
89
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/wrapper/session-manager.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@kilnai/cli",
3
+ "version": "0.1.1",
4
+ "description": "CLI and MCP server for Kiln AI orchestration engine",
5
+ "type": "module",
6
+ "bin": {
7
+ "kiln": "./dist/index.js"
8
+ },
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "types": "./dist/index.d.ts",
16
+ "files": [
17
+ "dist",
18
+ "README.md"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "typecheck": "tsc --noEmit",
23
+ "test": "vitest run"
24
+ },
25
+ "license": "MIT",
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "https://github.com/sequelcore/kiln.git",
29
+ "directory": "packages/cli"
30
+ },
31
+ "homepage": "https://github.com/sequelcore/kiln/tree/main/packages/cli",
32
+ "keywords": [
33
+ "ai",
34
+ "cli",
35
+ "mcp",
36
+ "claude-code",
37
+ "orchestration"
38
+ ],
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "dependencies": {
43
+ "@anthropic-ai/claude-agent-sdk": "^0.2.45",
44
+ "@modelcontextprotocol/sdk": "^1.26.0"
45
+ },
46
+ "peerDependencies": {
47
+ "@kilnai/core": "^0.1.1",
48
+ "@kilnai/runtime": "^0.1.1"
49
+ },
50
+ "devDependencies": {
51
+ "yaml": "^2.8.2"
52
+ }
53
+ }