@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,18 @@
1
+ export interface InitOptions {
2
+ readonly appName: string;
3
+ readonly domain: string;
4
+ readonly domainDisplayName: string;
5
+ readonly provider: string;
6
+ readonly channels: readonly string[];
7
+ readonly teamMode: string;
8
+ readonly qualityGates: readonly {
9
+ name: string;
10
+ command: string;
11
+ description: string;
12
+ }[];
13
+ }
14
+ /** Generate app.yaml content for the initialized project */
15
+ export declare function generateAppYaml(options: InitOptions): string;
16
+ /** Generate gateway.yaml content for the initialized project */
17
+ export declare function generateGatewayYaml(options: InitOptions): string;
18
+ //# sourceMappingURL=init-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-templates.d.ts","sourceRoot":"","sources":["../../src/commands/init-templates.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1F;AAcD,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAoF5D;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA2BhE"}
@@ -0,0 +1,118 @@
1
+ // init-templates.ts -- pure functions that generate YAML strings for kiln init
2
+ // No I/O -- all inputs are passed as parameters
3
+ const PROVIDER_DEFAULTS = {
4
+ anthropic: { model: "claude-sonnet-4-6", apiKeyEnv: "ANTHROPIC_API_KEY" },
5
+ openai: { model: "gpt-4o", apiKeyEnv: "OPENAI_API_KEY" },
6
+ deepseek: { model: "deepseek-chat", apiKeyEnv: "DEEPSEEK_API_KEY" },
7
+ ollama: { model: "llama3.2", apiKeyEnv: "" },
8
+ };
9
+ /** Generate app.yaml content for the initialized project */
10
+ export function generateAppYaml(options) {
11
+ const { appName, channels, qualityGates } = options;
12
+ const channelsLine = channels.join(", ");
13
+ const qualityGatesSection = qualityGates.length > 0
14
+ ? qualityGates
15
+ .map((g) => ` - name: ${g.name}\n command: "${g.command}"\n description: ${g.description}`)
16
+ .join("\n")
17
+ : " []";
18
+ return `# App configuration for ${appName}
19
+ # Generated by kiln init
20
+
21
+ name: ${appName}
22
+ channels: [${channelsLine}]
23
+
24
+ memory:
25
+ scopes: [user, "agent:planner", "agent:worker", "project:default"]
26
+ backend: sqlite+fts5
27
+ sync: git
28
+
29
+ router:
30
+ rules: []
31
+ fallback: main
32
+
33
+ teams:
34
+ main:
35
+ agents:
36
+ planner:
37
+ name: Planner
38
+ role: Planning Specialist
39
+ goal: Plan and design solutions with minimal complexity
40
+ tier: reasoning
41
+ tools: []
42
+ structured: true
43
+ worker:
44
+ name: Worker
45
+ role: Implementation Specialist
46
+ goal: Implement clean, well-tested code following conventions
47
+ tier: coding
48
+ tools:
49
+ - kiln_memory_save
50
+ - kiln_memory_recall
51
+ - kiln_memory_search
52
+ - kiln_cost_track
53
+ count: 2
54
+ sandbox: true
55
+
56
+ workflow:
57
+ phases: [analyze, research, architect, implement, verify, synthesize]
58
+ gates:
59
+ architect:
60
+ requires: [human_approval]
61
+ verify:
62
+ requires: [tests_pass]
63
+ maxIterations: 3
64
+
65
+ capabilities:
66
+ - name: kiln_init
67
+ description: Initialize a session with task and context
68
+ tags: [session]
69
+ - name: kiln_phase_start
70
+ description: Start a new phase in the workflow
71
+ tags: [orchestrator]
72
+ - name: kiln_memory_save
73
+ description: Save a new memory entry to scoped storage
74
+ tags: [memory]
75
+ - name: kiln_memory_recall
76
+ description: Recall memories by query with token budget
77
+ tags: [memory]
78
+ - name: kiln_memory_search
79
+ description: Full-text search across memory scopes
80
+ tags: [memory]
81
+ - name: kiln_cost_track
82
+ description: Track token usage and cost for an agent interaction
83
+ tags: [cost]
84
+ - name: kiln_cost_summary
85
+ description: Get cost breakdown by role and total
86
+ tags: [cost]
87
+
88
+ qualityGates:
89
+ ${qualityGatesSection}
90
+ `;
91
+ }
92
+ /** Generate gateway.yaml content for the initialized project */
93
+ export function generateGatewayYaml(options) {
94
+ const { appName, provider } = options;
95
+ const defaults = PROVIDER_DEFAULTS[provider] ?? PROVIDER_DEFAULTS["anthropic"];
96
+ const apiKeyLine = defaults.apiKeyEnv !== ""
97
+ ? ` apiKeyEnv: ${defaults.apiKeyEnv}`
98
+ : ` # no API key required for local models`;
99
+ return `# Gateway configuration
100
+ # Generated by kiln init
101
+
102
+ port: 4800
103
+
104
+ apps:
105
+ - name: ${appName}
106
+ path: ./app.yaml
107
+ channels:
108
+ - type: api
109
+ path: /api/${appName}
110
+ modeB:
111
+ runtime: provider-adapter
112
+ provider:
113
+ name: ${provider}
114
+ model: ${defaults.model}
115
+ ${apiKeyLine}
116
+ `;
117
+ }
118
+ //# sourceMappingURL=init-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-templates.js","sourceRoot":"","sources":["../../src/commands/init-templates.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gDAAgD;AAiBhD,MAAM,iBAAiB,GAAqC;IAC1D,SAAS,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,mBAAmB,EAAE;IACzE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE;IACxD,QAAQ,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE;IACnE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE;CAC7C,CAAC;AAEF,4DAA4D;AAC5D,MAAM,UAAU,eAAe,CAAC,OAAoB;IAClD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACpD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzC,MAAM,mBAAmB,GACvB,YAAY,CAAC,MAAM,GAAG,CAAC;QACrB,CAAC,CAAC,YAAY;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,OAAO,2BAA2B,CAAC,CAAC,WAAW,EAAE,CAAC;aAC7G,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,UAAU,CAAC;IAEjB,OAAO,2BAA2B,OAAO;;;QAGnC,OAAO;aACF,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEvB,mBAAmB;CACpB,CAAC;AACF,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,mBAAmB,CAAC,OAAoB;IACtD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,WAAW,CAAE,CAAC;IAEhF,MAAM,UAAU,GACd,QAAQ,CAAC,SAAS,KAAK,EAAE;QACvB,CAAC,CAAC,sBAAsB,QAAQ,CAAC,SAAS,EAAE;QAC5C,CAAC,CAAC,gDAAgD,CAAC;IAEvD,OAAO;;;;;;YAMG,OAAO;;;;qBAIE,OAAO;;;;gBAIZ,QAAQ;iBACP,QAAQ,CAAC,KAAK;EAC7B,UAAU;CACX,CAAC;AACF,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { KilnAppConfig } from "../config.js";
2
+ export interface ProjectConfig {
3
+ domain: string;
4
+ provider: string;
5
+ channels: string[];
6
+ teamMode: string;
7
+ requireApproval: boolean;
8
+ maxDepth: number;
9
+ parallelWorkers: number;
10
+ mode: string;
11
+ }
12
+ export interface InitFlags {
13
+ force?: boolean;
14
+ interactive?: boolean;
15
+ domain?: string;
16
+ provider?: string;
17
+ channels?: string;
18
+ teamMode?: string;
19
+ }
20
+ export declare function initCommand(appConfig: KilnAppConfig, projectPath?: string, flags?: InitFlags): Promise<ProjectConfig | null>;
21
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAaD,wBAAsB,WAAW,CAC/B,SAAS,EAAE,aAAa,EACxB,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,SAAS,GAChB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA2K/B"}
@@ -0,0 +1,167 @@
1
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, appendFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { createInterface } from "node:readline";
4
+ import { DomainRegistry } from "@kilnai/core";
5
+ import { generateAppYaml, generateGatewayYaml } from "./init-templates.js";
6
+ async function prompt(question, defaultVal) {
7
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
8
+ return new Promise((resolve) => {
9
+ const suffix = defaultVal ? ` [${defaultVal}]` : "";
10
+ rl.question(`${question}${suffix}: `, (answer) => {
11
+ rl.close();
12
+ resolve(answer.trim() || defaultVal || "");
13
+ });
14
+ });
15
+ }
16
+ export async function initCommand(appConfig, projectPath, flags) {
17
+ const root = projectPath ?? process.cwd();
18
+ const appDir = join(root, appConfig.dirName);
19
+ if (existsSync(appDir) && !flags?.force) {
20
+ console.log("Already initialized.");
21
+ return null;
22
+ }
23
+ // Determine whether to run interactively
24
+ const isInteractive = flags?.interactive !== false && process.stdin.isTTY === true;
25
+ // Load built-in domain kits + installed domains
26
+ const builtins = DomainRegistry.loadBuiltinDomains();
27
+ const registry = appConfig.createRegistry();
28
+ for (const d of builtins) {
29
+ registry.register(d);
30
+ }
31
+ registry.loadInstalledDomains(root);
32
+ const allDomains = registry.all();
33
+ const detected = registry.detect(root);
34
+ const detectedDomain = detected.length > 0 ? detected[0] : null;
35
+ let chosenDomainName;
36
+ let chosenProvider;
37
+ let chosenChannels;
38
+ let chosenTeamMode;
39
+ if (isInteractive) {
40
+ // Step 1: domain selection
41
+ if (detectedDomain) {
42
+ console.log(`\nDetected domain: ${detectedDomain.displayName} (${detectedDomain.name})`);
43
+ const confirm = await prompt("Use detected domain? (y/n)", "y");
44
+ if (confirm.toLowerCase() === "n") {
45
+ if (allDomains.length > 0) {
46
+ console.log("\nAvailable domains:");
47
+ for (let i = 0; i < allDomains.length; i++) {
48
+ console.log(` ${i + 1}. ${allDomains[i].displayName} (${allDomains[i].name})`);
49
+ }
50
+ const sel = await prompt(`Select domain (1-${allDomains.length})`, "1");
51
+ const idx = parseInt(sel, 10) - 1;
52
+ const selected = allDomains[Math.max(0, Math.min(idx, allDomains.length - 1))];
53
+ chosenDomainName = selected?.name ?? detectedDomain.name;
54
+ }
55
+ else {
56
+ chosenDomainName = detectedDomain.name;
57
+ }
58
+ }
59
+ else {
60
+ chosenDomainName = detectedDomain.name;
61
+ }
62
+ }
63
+ else if (allDomains.length > 0) {
64
+ console.log("\nNo domain detected. Available domains:");
65
+ for (let i = 0; i < allDomains.length; i++) {
66
+ console.log(` ${i + 1}. ${allDomains[i].displayName} (${allDomains[i].name})`);
67
+ }
68
+ const sel = await prompt(`Select domain (1-${allDomains.length})`, "1");
69
+ const idx = parseInt(sel, 10) - 1;
70
+ const selected = allDomains[Math.max(0, Math.min(idx, allDomains.length - 1))];
71
+ chosenDomainName = selected?.name ?? "generic";
72
+ }
73
+ else {
74
+ chosenDomainName = "generic";
75
+ }
76
+ // Step 2: provider
77
+ const providerAnswer = await prompt("Provider (anthropic/openai/deepseek/ollama)", "anthropic");
78
+ chosenProvider = providerAnswer || "anthropic";
79
+ // Step 3: channels
80
+ const channelsAnswer = await prompt("Channels (comma-separated: cli,web,api)", "cli,web");
81
+ chosenChannels = (channelsAnswer || "cli,web")
82
+ .split(",")
83
+ .map((c) => c.trim())
84
+ .filter(Boolean);
85
+ // Step 4: team mode
86
+ const teamModeAnswer = await prompt("Team mode (sequential/supervisor/swarm)", "sequential");
87
+ chosenTeamMode = teamModeAnswer || "sequential";
88
+ }
89
+ else {
90
+ // Non-interactive: use flags or defaults
91
+ if (flags?.domain) {
92
+ chosenDomainName = flags.domain;
93
+ }
94
+ else if (detectedDomain) {
95
+ chosenDomainName = detectedDomain.name;
96
+ }
97
+ else {
98
+ chosenDomainName = "generic";
99
+ }
100
+ chosenProvider = flags?.provider ?? "anthropic";
101
+ chosenChannels = flags?.channels
102
+ ? flags.channels.split(",").map((c) => c.trim()).filter(Boolean)
103
+ : ["cli", "web"];
104
+ chosenTeamMode = flags?.teamMode ?? "sequential";
105
+ }
106
+ // Resolve the chosen domain config for quality gates
107
+ const chosenDomainConfig = registry.get(chosenDomainName) ??
108
+ (detectedDomain?.name === chosenDomainName ? detectedDomain : null);
109
+ const qualityGates = chosenDomainConfig?.qualityGates ?? [];
110
+ // Create directories
111
+ mkdirSync(appDir, { recursive: true });
112
+ mkdirSync(join(appDir, "memory"), { recursive: true });
113
+ const config = {
114
+ domain: chosenDomainName,
115
+ provider: chosenProvider,
116
+ channels: chosenChannels,
117
+ teamMode: chosenTeamMode,
118
+ requireApproval: true,
119
+ maxDepth: 3,
120
+ parallelWorkers: 2,
121
+ mode: "api-key",
122
+ };
123
+ const initOptions = {
124
+ appName: appConfig.appName,
125
+ domain: chosenDomainName,
126
+ domainDisplayName: chosenDomainConfig?.displayName ?? chosenDomainName,
127
+ provider: chosenProvider,
128
+ channels: chosenChannels,
129
+ teamMode: chosenTeamMode,
130
+ qualityGates: qualityGates.map((g) => ({
131
+ name: g.name,
132
+ command: g.command,
133
+ description: g.description ?? g.name,
134
+ })),
135
+ };
136
+ writeFileSync(join(appDir, "config.json"), JSON.stringify(config, null, 2) + "\n");
137
+ writeFileSync(join(appDir, "app.yaml"), generateAppYaml(initOptions));
138
+ writeFileSync(join(appDir, "gateway.yaml"), generateGatewayYaml(initOptions));
139
+ // Update .gitignore
140
+ const gitignorePath = join(root, ".gitignore");
141
+ let existing = "";
142
+ if (existsSync(gitignorePath)) {
143
+ existing = readFileSync(gitignorePath, "utf-8");
144
+ }
145
+ const gitignoreEntries = [`${appConfig.dirName}/memory.db`, `${appConfig.dirName}/agents/`];
146
+ const toAppend = [];
147
+ for (const entry of gitignoreEntries) {
148
+ if (!existing.includes(entry)) {
149
+ toAppend.push(entry);
150
+ }
151
+ }
152
+ if (toAppend.length > 0) {
153
+ const suffix = existing.endsWith("\n") || existing === "" ? "" : "\n";
154
+ appendFileSync(gitignorePath, suffix + toAppend.join("\n") + "\n");
155
+ }
156
+ // Print summary
157
+ console.log(`Domain: ${chosenDomainConfig?.displayName ?? chosenDomainName}`);
158
+ if (qualityGates.length > 0) {
159
+ console.log("Gates: " + qualityGates.map((g) => g.name).join(", "));
160
+ }
161
+ console.log(`Provider: ${chosenProvider}`);
162
+ console.log(`Channels: ${chosenChannels.join(", ")}`);
163
+ const appLabel = appConfig.appName.charAt(0).toUpperCase() + appConfig.appName.slice(1);
164
+ console.log(`${appLabel} initialized.`);
165
+ return config;
166
+ }
167
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { KilnAppConfig } from "../config.js";
2
+ export declare function mcpConfigCommand(appConfig: KilnAppConfig, client?: string, transport?: string, port?: number): void;
3
+ //# sourceMappingURL=mcp-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,aAAa,EACxB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,IAAI,CAUN"}
@@ -0,0 +1,12 @@
1
+ import { generateConfig } from "../mcp/config-generator.js";
2
+ export function mcpConfigCommand(appConfig, client, transport, port) {
3
+ const config = {
4
+ client: client ?? "claude-code",
5
+ transport: transport ?? "stdio",
6
+ port,
7
+ mcpServerName: appConfig.mcpServerName,
8
+ appName: appConfig.appName,
9
+ };
10
+ console.log(generateConfig(config));
11
+ }
12
+ //# sourceMappingURL=mcp-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../src/commands/mcp-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,MAAM,4BAA4B,CAAC;AAG5E,MAAM,UAAU,gBAAgB,CAC9B,SAAwB,EACxB,MAAe,EACf,SAAkB,EAClB,IAAa;IAEb,MAAM,MAAM,GAAG;QACb,MAAM,EAAG,MAAoB,IAAI,aAAa;QAC9C,SAAS,EAAG,SAA6B,IAAI,OAAO;QACpD,IAAI;QACJ,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,OAAO,EAAE,SAAS,CAAC,OAAO;KAC3B,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { KilnAppConfig } from "../config.js";
2
+ export declare function memoryCommand(appConfig: KilnAppConfig, subcommand: string, _args: string[], projectPath?: string): void;
3
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI,CAkBN"}
@@ -0,0 +1,51 @@
1
+ import { existsSync, readdirSync, statSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ export function memoryCommand(appConfig, subcommand, _args, projectPath) {
4
+ const root = projectPath ?? process.cwd();
5
+ if (!subcommand) {
6
+ printMemoryHelp(appConfig);
7
+ return;
8
+ }
9
+ switch (subcommand) {
10
+ case "stats": {
11
+ printMemoryStats(appConfig, root);
12
+ break;
13
+ }
14
+ default:
15
+ console.log(`Unknown memory subcommand: ${subcommand}`);
16
+ printMemoryHelp(appConfig);
17
+ }
18
+ }
19
+ function printMemoryHelp(appConfig) {
20
+ console.log(`\nUsage: ${appConfig.appName} memory <subcommand>\n`);
21
+ console.log("Subcommands:");
22
+ console.log(" stats Show memory file counts and sizes");
23
+ console.log("");
24
+ }
25
+ function printMemoryStats(appConfig, root) {
26
+ const memoryDir = join(root, appConfig.dirName, "memory");
27
+ if (!existsSync(memoryDir)) {
28
+ console.log(`No memory directory found. Run '${appConfig.appName} init' first.`);
29
+ return;
30
+ }
31
+ const files = readdirSync(memoryDir);
32
+ let totalSize = 0;
33
+ for (const file of files) {
34
+ const stat = statSync(join(memoryDir, file));
35
+ totalSize += stat.size;
36
+ }
37
+ console.log("\nMemory Stats\n");
38
+ console.log(` Directory: ${appConfig.dirName}/memory/`);
39
+ console.log(` Files: ${files.length}`);
40
+ console.log(` Size: ${formatBytes(totalSize)}`);
41
+ console.log("");
42
+ }
43
+ function formatBytes(bytes) {
44
+ if (bytes === 0)
45
+ return "0 B";
46
+ const units = ["B", "KB", "MB", "GB"];
47
+ const i = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
48
+ const value = bytes / Math.pow(1024, i);
49
+ return `${value.toFixed(i === 0 ? 0 : 1)} ${units[i]}`;
50
+ }
51
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { SessionReport } from "../wrapper/index.js";
2
+ import type { KilnAppConfig } from "../config.js";
3
+ export interface RunFlags {
4
+ readonly apiKey?: string;
5
+ readonly provider?: string;
6
+ readonly dangerouslySkipPermissions?: boolean;
7
+ }
8
+ export declare function printReport(report: SessionReport, appName: string): void;
9
+ export declare function runCommand(appConfig: KilnAppConfig, task: string, flags: RunFlags): Promise<void>;
10
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAe,aAAa,EAAiB,MAAM,qBAAqB,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;CAC/C;AAgBD,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAexE;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA4HvG"}
@@ -0,0 +1,141 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { Orchestrator } from "@kilnai/core";
3
+ import { SessionManager } from "../wrapper/session-manager.js";
4
+ import { ClaudeSession } from "../wrapper/claude-code-process.js";
5
+ import { formatEvent } from "../formatters.js";
6
+ function resolveMode(flags) {
7
+ if (flags.apiKey && flags.provider)
8
+ return "byok";
9
+ return "api-key";
10
+ }
11
+ function buildConfig(flags, mode) {
12
+ return {
13
+ mode,
14
+ apiKey: flags.apiKey,
15
+ provider: flags.provider,
16
+ dangerouslySkipPermissions: flags.dangerouslySkipPermissions ?? false,
17
+ };
18
+ }
19
+ export function printReport(report, appName) {
20
+ const costParts = Object.entries(report.cost.byRole)
21
+ .map(([role, value]) => `${role}: $${value.toFixed(2)}`)
22
+ .join(", ");
23
+ const durationSec = (report.duration / 1000).toFixed(1);
24
+ const appLabel = appName.charAt(0).toUpperCase() + appName.slice(1);
25
+ console.log(`\n--- ${appLabel} Session Complete ---`);
26
+ console.log(`Task: ${report.task}`);
27
+ console.log(`Domain: ${report.domain}`);
28
+ console.log(`Phase: ${report.phaseReached}`);
29
+ console.log(`Cost: $${report.cost.total.toFixed(2)}${costParts ? ` (${costParts})` : ""}`);
30
+ console.log(`Duration: ${durationSec}s`);
31
+ console.log("");
32
+ }
33
+ export async function runCommand(appConfig, task, flags) {
34
+ if (!task.trim()) {
35
+ console.error(`Error: No task provided. Usage: ${appConfig.appName} run "your task here"`);
36
+ process.exit(1);
37
+ }
38
+ if (!flags.apiKey) {
39
+ console.error("Error: An API key is required. Anthropic's ToS prohibits OAuth/subscription credentials in third-party tools.\n" +
40
+ `Usage: ${appConfig.appName} run --api-key sk-ant-... "your task here"\n` +
41
+ ` or: ${appConfig.appName} run --provider openai --api-key sk-... "your task here"`);
42
+ process.exit(1);
43
+ }
44
+ const mode = resolveMode(flags);
45
+ const config = buildConfig(flags, mode);
46
+ const sessionId = randomUUID();
47
+ const manager = new SessionManager(config, appConfig);
48
+ let context;
49
+ try {
50
+ context = manager.prepare(task, process.cwd());
51
+ }
52
+ catch (err) {
53
+ console.error("Error: Failed to prepare session.", err instanceof Error ? err.message : err);
54
+ process.exit(1);
55
+ }
56
+ const orchestrator = new Orchestrator();
57
+ const appLabel = appConfig.appName.charAt(0).toUpperCase() + appConfig.appName.slice(1);
58
+ console.log(`${appLabel} session starting...`);
59
+ console.log(`Domain: ${context.domain.displayName}`);
60
+ console.log(`Mode: ${mode}`);
61
+ console.log("");
62
+ orchestrator.eventBus.onAny((event) => {
63
+ console.log(formatEvent(event));
64
+ });
65
+ // Build env
66
+ const env = {};
67
+ if (config.mode === "api-key" && config.apiKey) {
68
+ env.ANTHROPIC_API_KEY = config.apiKey;
69
+ }
70
+ if (config.mode === "byok" && config.provider && config.apiKey) {
71
+ env[`${config.provider.toUpperCase()}_API_KEY`] = config.apiKey;
72
+ }
73
+ const session = new ClaudeSession({
74
+ task,
75
+ systemPrompt: context.systemPrompt,
76
+ mcpServers: {
77
+ [appConfig.mcpServerName]: {
78
+ command: "bun",
79
+ args: ["run", context.mcpServerEntryPath],
80
+ },
81
+ },
82
+ cwd: process.cwd(),
83
+ env,
84
+ permissionMode: config.dangerouslySkipPermissions ? "bypassPermissions" : "default",
85
+ allowDangerouslySkipPermissions: config.dangerouslySkipPermissions,
86
+ });
87
+ // Print SDK messages to console
88
+ session.onMessage((msg) => {
89
+ switch (msg.type) {
90
+ case "system": {
91
+ const subtype = msg.subtype;
92
+ if (subtype === "init") {
93
+ const sysMsg = msg;
94
+ if (sysMsg.model)
95
+ console.log(`Model: ${sysMsg.model}`);
96
+ }
97
+ break;
98
+ }
99
+ case "assistant": {
100
+ const assMsg = msg;
101
+ if (assMsg.message?.content) {
102
+ for (const block of assMsg.message.content) {
103
+ if (block.type === "text" && block.text) {
104
+ process.stdout.write(block.text + "\n");
105
+ }
106
+ else if (block.type === "tool_use" && block.name) {
107
+ console.log(`[tool] ${block.name}`);
108
+ }
109
+ }
110
+ }
111
+ break;
112
+ }
113
+ case "result": {
114
+ const resultMsg = msg;
115
+ if (resultMsg.subtype === "success" && resultMsg.result) {
116
+ console.log("\n--- Result ---");
117
+ console.log(resultMsg.result);
118
+ }
119
+ break;
120
+ }
121
+ }
122
+ });
123
+ const shutdown = () => {
124
+ session.stop();
125
+ };
126
+ process.on("SIGINT", shutdown);
127
+ process.on("SIGTERM", shutdown);
128
+ try {
129
+ await session.start();
130
+ }
131
+ catch {
132
+ console.error("Error: Could not launch Claude Code. Make sure it is installed and available on your PATH.\n" +
133
+ "Install: npm install -g @anthropic-ai/claude-code");
134
+ process.exit(1);
135
+ }
136
+ process.off("SIGINT", shutdown);
137
+ process.off("SIGTERM", shutdown);
138
+ const report = manager.cleanup(sessionId);
139
+ printReport(report, appConfig.appName);
140
+ }
141
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { TransportType } from "../mcp/transports.js";
2
+ import type { KilnAppConfig } from "../config.js";
3
+ export declare function serveCommand(appConfig: KilnAppConfig, opts?: {
4
+ transport?: TransportType;
5
+ port?: number;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,wBAAsB,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE;IAClE,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBhB"}