@kalphq/cli 0.0.0-dev-20260420061515 → 0.0.0-dev-20260420063836

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.
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-6LLXGS2P.js";
5
5
  import {
6
6
  generateTypes
7
- } from "./chunk-W4ZIAVWI.js";
7
+ } from "./chunk-KD6MYE65.js";
8
8
  import "./chunk-2H7UOFLK.js";
9
9
 
10
10
  // src/commands/secrets/add.ts
@@ -134,4 +134,4 @@ var add_default = defineCommand({
134
134
  export {
135
135
  add_default as default
136
136
  };
137
- //# sourceMappingURL=add-LCDZNMNK.js.map
137
+ //# sourceMappingURL=add-TSWPTKEC.js.map
@@ -3,7 +3,7 @@ import {
3
3
  generateTypes,
4
4
  updateKalpDts,
5
5
  updateTsconfig
6
- } from "./chunk-W4ZIAVWI.js";
6
+ } from "./chunk-KD6MYE65.js";
7
7
  import {
8
8
  __export
9
9
  } from "./chunk-2H7UOFLK.js";
@@ -19952,4 +19952,4 @@ export {
19952
19952
  promptProjectName,
19953
19953
  promptAgentDetails
19954
19954
  };
19955
- //# sourceMappingURL=chunk-KI5J6MOO.js.map
19955
+ //# sourceMappingURL=chunk-BQOY6ZUE.js.map
@@ -6,8 +6,6 @@ import { join } from "path";
6
6
  import { access } from "fs/promises";
7
7
  var GENERATED_HEADER = `// \u{1F98B} Kalp Generated Types
8
8
  // This file is auto-generated. Do not edit manually.
9
- // Run \`kalp create\` or update kalp.config.ts to regenerate.
10
-
11
9
  `;
12
10
  function parseSecretsFromConfig(configContent) {
13
11
  const secretsMatch = configContent.match(/secrets:\s*\[([^\]]*)\]/);
@@ -50,10 +48,8 @@ async function updateKalpDts(cwd) {
50
48
  try {
51
49
  await access(kalpDtsPath);
52
50
  } catch {
53
- const content = `// Import SDK types
54
- import "@kalphq/sdk";
51
+ const content = `import "@kalphq/sdk";
55
52
 
56
- // Import generated types (auto-updated by \`kalp create\`)
57
53
  import type { RegisteredSecretKeys } from "./.kalp/types";
58
54
 
59
55
  declare module "@kalphq/sdk" {
@@ -69,10 +65,7 @@ declare module "@kalphq/sdk" {
69
65
  if (existingContent.includes("./.kalp/types")) {
70
66
  return;
71
67
  }
72
- const updatedContent = `// Import SDK types
73
- import "@kalphq/sdk";
74
-
75
- // Import generated types (auto-updated by \`kalp create\`)
68
+ const updatedContent = `import "@kalphq/sdk";
76
69
  import type { RegisteredSecretKeys } from "./.kalp/types";
77
70
 
78
71
  declare module "@kalphq/sdk" {
@@ -105,4 +98,4 @@ export {
105
98
  updateKalpDts,
106
99
  updateTsconfig
107
100
  };
108
- //# sourceMappingURL=chunk-W4ZIAVWI.js.map
101
+ //# sourceMappingURL=chunk-KD6MYE65.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/codegen.ts"],"sourcesContent":["import { readFile, writeFile, mkdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { access } from \"node:fs/promises\";\n\nconst GENERATED_HEADER = `// 🦋 Kalp Generated Types\n// This file is auto-generated. Do not edit manually.\n`;\n\n/**\n * Parse secrets from kalp.config.ts content using regex\n * Looks for: secrets: [\"KEY1\", \"KEY2\"] or secrets: []\n */\nfunction parseSecretsFromConfig(configContent: string): string[] | null {\n // Match secrets: [...] array\n const secretsMatch = configContent.match(/secrets:\\s*\\[([^\\]]*)\\]/);\n if (!secretsMatch) return null;\n\n const secretsArray = secretsMatch[1] ?? \"\";\n if (!secretsArray.trim()) return [];\n\n // Extract quoted strings from the array\n const secretMatches = secretsArray.match(/\"([^\"]+)\"/g);\n if (!secretMatches) return [];\n\n return secretMatches.map((match) => match.replace(/\"/g, \"\"));\n}\n\n/**\n * Generate types file based on secrets from kalp.config.ts\n */\nexport async function generateTypes(cwd: string): Promise<void> {\n const configPath = join(cwd, \"kalp.config.ts\");\n const kalpDir = join(cwd, \".kalp\");\n const typesPath = join(kalpDir, \"types.d.ts\");\n\n let secrets: string[] = [];\n\n try {\n const configContent = await readFile(configPath, \"utf-8\");\n const parsed = parseSecretsFromConfig(configContent);\n if (parsed !== null) {\n secrets = parsed;\n }\n } catch {\n // Config doesn't exist yet, use empty array\n secrets = [];\n }\n\n // Ensure .kalp directory exists\n try {\n await mkdir(kalpDir, { recursive: true });\n } catch {\n // Directory might already exist\n }\n\n // Generate the types content\n const secretsTuple =\n secrets.length > 0 ? `[${secrets.map((s) => `\"${s}\"`).join(\", \")}]` : \"[]\";\n\n const typesContent = `${GENERATED_HEADER}/**\n * Registered secrets from kalp.config.ts\n * @generated\n */\nexport type RegisteredSecretKeys = ${secretsTuple};\n`;\n\n await writeFile(typesPath, typesContent, \"utf-8\");\n}\n\n/**\n * Update kalp.d.ts to import and use generated types\n */\nexport async function updateKalpDts(cwd: string): Promise<void> {\n const kalpDtsPath = join(cwd, \"kalp.d.ts\");\n\n // Check if kalp.d.ts exists\n try {\n await access(kalpDtsPath);\n } catch {\n // Create new kalp.d.ts if it doesn't exist\n const content = `import \"@kalphq/sdk\";\n\nimport type { RegisteredSecretKeys } from \"./.kalp/types\";\n\ndeclare module \"@kalphq/sdk\" {\n interface SecretsRegistry {\n keys: RegisteredSecretKeys;\n }\n}\n`;\n await writeFile(kalpDtsPath, content, \"utf-8\");\n return;\n }\n\n // Read existing content\n const existingContent = await readFile(kalpDtsPath, \"utf-8\");\n\n // Check if it already imports from .kalp/types\n if (existingContent.includes(\"./.kalp/types\")) {\n // Already using generated types, no need to update\n return;\n }\n\n // Update to use generated types\n const updatedContent = `import \"@kalphq/sdk\";\nimport type { RegisteredSecretKeys } from \"./.kalp/types\";\n\ndeclare module \"@kalphq/sdk\" {\n interface SecretsRegistry {\n keys: RegisteredSecretKeys;\n }\n}\n`;\n\n await writeFile(kalpDtsPath, updatedContent, \"utf-8\");\n}\n\n/**\n * Ensure tsconfig.json includes .kalp/types.d.ts\n */\nexport async function updateTsconfig(cwd: string): Promise<void> {\n const tsconfigPath = join(cwd, \"tsconfig.json\");\n\n try {\n const content = await readFile(tsconfigPath, \"utf-8\");\n const config = JSON.parse(content);\n\n if (!config.include) {\n config.include = [];\n }\n\n const typesPath = \".kalp/types.d.ts\";\n if (!config.include.includes(typesPath)) {\n config.include.unshift(typesPath);\n await writeFile(tsconfigPath, JSON.stringify(config, null, 2), \"utf-8\");\n }\n } catch {}\n}\n"],"mappings":";;;AAAA,SAAS,UAAU,WAAW,aAAa;AAC3C,SAAS,YAAY;AACrB,SAAS,cAAc;AAEvB,IAAM,mBAAmB;AAAA;AAAA;AAQzB,SAAS,uBAAuB,eAAwC;AAEtE,QAAM,eAAe,cAAc,MAAM,yBAAyB;AAClE,MAAI,CAAC,aAAc,QAAO;AAE1B,QAAM,eAAe,aAAa,CAAC,KAAK;AACxC,MAAI,CAAC,aAAa,KAAK,EAAG,QAAO,CAAC;AAGlC,QAAM,gBAAgB,aAAa,MAAM,YAAY;AACrD,MAAI,CAAC,cAAe,QAAO,CAAC;AAE5B,SAAO,cAAc,IAAI,CAAC,UAAU,MAAM,QAAQ,MAAM,EAAE,CAAC;AAC7D;AAKA,eAAsB,cAAc,KAA4B;AAC9D,QAAM,aAAa,KAAK,KAAK,gBAAgB;AAC7C,QAAM,UAAU,KAAK,KAAK,OAAO;AACjC,QAAM,YAAY,KAAK,SAAS,YAAY;AAE5C,MAAI,UAAoB,CAAC;AAEzB,MAAI;AACF,UAAM,gBAAgB,MAAM,SAAS,YAAY,OAAO;AACxD,UAAM,SAAS,uBAAuB,aAAa;AACnD,QAAI,WAAW,MAAM;AACnB,gBAAU;AAAA,IACZ;AAAA,EACF,QAAQ;AAEN,cAAU,CAAC;AAAA,EACb;AAGA,MAAI;AACF,UAAM,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C,QAAQ;AAAA,EAER;AAGA,QAAM,eACJ,QAAQ,SAAS,IAAI,IAAI,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,MAAM;AAExE,QAAM,eAAe,GAAG,gBAAgB;AAAA;AAAA;AAAA;AAAA,qCAIL,YAAY;AAAA;AAG/C,QAAM,UAAU,WAAW,cAAc,OAAO;AAClD;AAKA,eAAsB,cAAc,KAA4B;AAC9D,QAAM,cAAc,KAAK,KAAK,WAAW;AAGzC,MAAI;AACF,UAAM,OAAO,WAAW;AAAA,EAC1B,QAAQ;AAEN,UAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUhB,UAAM,UAAU,aAAa,SAAS,OAAO;AAC7C;AAAA,EACF;AAGA,QAAM,kBAAkB,MAAM,SAAS,aAAa,OAAO;AAG3D,MAAI,gBAAgB,SAAS,eAAe,GAAG;AAE7C;AAAA,EACF;AAGA,QAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUvB,QAAM,UAAU,aAAa,gBAAgB,OAAO;AACtD;AAKA,eAAsB,eAAe,KAA4B;AAC/D,QAAM,eAAe,KAAK,KAAK,eAAe;AAE9C,MAAI;AACF,UAAM,UAAU,MAAM,SAAS,cAAc,OAAO;AACpD,UAAM,SAAS,KAAK,MAAM,OAAO;AAEjC,QAAI,CAAC,OAAO,SAAS;AACnB,aAAO,UAAU,CAAC;AAAA,IACpB;AAEA,UAAM,YAAY;AAClB,QAAI,CAAC,OAAO,QAAQ,SAAS,SAAS,GAAG;AACvC,aAAO,QAAQ,QAAQ,SAAS;AAChC,YAAM,UAAU,cAAc,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG,OAAO;AAAA,IACxE;AAAA,EACF,QAAQ;AAAA,EAAC;AACX;","names":[]}
@@ -4,12 +4,12 @@ import {
4
4
  promptProjectName,
5
5
  scaffoldAgent,
6
6
  scaffoldProject
7
- } from "./chunk-KI5J6MOO.js";
7
+ } from "./chunk-BQOY6ZUE.js";
8
8
  import {
9
9
  installDeps,
10
10
  isProjectInitialized
11
11
  } from "./chunk-TPTPZH2W.js";
12
- import "./chunk-W4ZIAVWI.js";
12
+ import "./chunk-KD6MYE65.js";
13
13
  import "./chunk-2H7UOFLK.js";
14
14
 
15
15
  // src/commands/create.ts
@@ -71,4 +71,4 @@ var create_default = defineCommand({
71
71
  export {
72
72
  create_default as default
73
73
  };
74
- //# sourceMappingURL=create-GQZGNPQ7.js.map
74
+ //# sourceMappingURL=create-2G3FCCZT.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-6LLXGS2P.js";
5
5
  import {
6
6
  generateTypes
7
- } from "./chunk-W4ZIAVWI.js";
7
+ } from "./chunk-KD6MYE65.js";
8
8
  import "./chunk-2H7UOFLK.js";
9
9
 
10
10
  // src/commands/secrets/delete.ts
@@ -140,4 +140,4 @@ var delete_default = defineCommand({
140
140
  export {
141
141
  delete_default as default
142
142
  };
143
- //# sourceMappingURL=delete-ZYPUY7GC.js.map
143
+ //# sourceMappingURL=delete-IDNFBWDW.js.map
package/dist/index.js CHANGED
@@ -4,6 +4,9 @@
4
4
  import { defineCommand, runMain } from "citty";
5
5
  import * as p from "@clack/prompts";
6
6
  import pc from "picocolors";
7
+ import { createRequire } from "module";
8
+ var require2 = createRequire(import.meta.url);
9
+ var pkg = require2("../package.json");
7
10
  var LOGO = "\u{1F98B}";
8
11
  var COMMANDS = [
9
12
  ["init", "Create a new Kalp project"],
@@ -28,7 +31,7 @@ function printHelp() {
28
31
  var main = defineCommand({
29
32
  meta: {
30
33
  name: "kalp",
31
- version: "0.0.1",
34
+ version: pkg.version,
32
35
  description: "\u{1F98B} Zero-config agent infrastructure"
33
36
  },
34
37
  args: {
@@ -40,12 +43,12 @@ var main = defineCommand({
40
43
  }
41
44
  },
42
45
  subCommands: {
43
- init: () => import("./init-LUNBE3EX.js").then((r) => r.default),
44
- create: () => import("./create-GQZGNPQ7.js").then((r) => r.default),
46
+ init: () => import("./init-2RJWFHB2.js").then((r) => r.default),
47
+ create: () => import("./create-2G3FCCZT.js").then((r) => r.default),
45
48
  migrate: () => import("./migrate-3PX52XLP.js").then((r) => r.default),
46
49
  push: () => import("./push-Q4WIPJV3.js").then((r) => r.default),
47
50
  link: () => import("./link-YCIA4JJ3.js").then((r) => r.default),
48
- secrets: () => import("./secrets-HTLXE6OC.js").then((r) => r.default),
51
+ secrets: () => import("./secrets-FHVISDYJ.js").then((r) => r.default),
49
52
  login: () => import("./login-SIKUBDGO.js").then((r) => r.default),
50
53
  logout: () => import("./logout-OJM3VAOF.js").then((r) => r.default)
51
54
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { defineCommand, runMain } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\n\nconst LOGO = \"🦋\";\n\nconst COMMANDS = [\n [\"init\", \"Create a new Kalp project\"],\n [\"create\", \"Add a new agent\"],\n [\"migrate\", \"Migrate agent schema\"],\n [\"push\", \"Push agent to Kalp\"],\n [\"link\", \"Link project to Kalp cloud\"],\n [\"secrets\", \"Manage secrets\"],\n [\"login\", \"Authenticate with Kalp\"],\n [\"logout\", \"Sign out from Kalp\"],\n] as const;\n\nfunction printHelp(): void {\n p.log.info(`${pc.bold(\"Usage\")}: kalp <command> [options]`);\n console.log(\"\");\n p.log.info(pc.bold(\"Commands\"));\n\n for (const [name, desc] of COMMANDS) {\n console.log(` ${pc.cyan(name.padEnd(10))}${desc}`);\n }\n\n console.log(\"\");\n p.log.info(`Run ${pc.cyan(\"kalp <command> --help\")} for more info.`);\n}\n\nconst main = defineCommand({\n meta: {\n name: \"kalp\",\n version: \"0.0.1\",\n description: \"🦋 Zero-config agent infrastructure\",\n },\n args: {\n help: {\n type: \"boolean\",\n alias: \"h\",\n description: \"Show help\",\n default: false,\n },\n },\n subCommands: {\n init: () => import(\"./commands/init\").then((r) => r.default),\n create: () => import(\"./commands/create\").then((r) => r.default),\n migrate: () => import(\"./commands/migrate\").then((r) => r.default),\n push: () => import(\"./commands/push\").then((r) => r.default),\n link: () => import(\"./commands/link\").then((r) => r.default),\n secrets: () => import(\"./commands/secrets\").then((r) => r.default),\n login: () => import(\"./commands/login\").then((r) => r.default),\n logout: () => import(\"./commands/logout\").then((r) => r.default),\n },\n run({ args }) {\n const firstArg = process.argv[2];\n\n if (args.help) {\n p.intro(`${LOGO} ${pc.bold(\"kalp\")}`);\n printHelp();\n p.outro(\"Happy coding 🦋\");\n return;\n }\n\n if (firstArg) {\n return;\n }\n\n p.intro(`${LOGO} ${pc.bold(\"kalp\")}`);\n printHelp();\n p.outro(\"Happy coding 🦋\");\n },\n});\n\nrunMain(main);\n"],"mappings":";;;AAAA,SAAS,eAAe,eAAe;AACvC,YAAY,OAAO;AACnB,OAAO,QAAQ;AAEf,IAAM,OAAO;AAEb,IAAM,WAAW;AAAA,EACf,CAAC,QAAQ,2BAA2B;AAAA,EACpC,CAAC,UAAU,iBAAiB;AAAA,EAC5B,CAAC,WAAW,sBAAsB;AAAA,EAClC,CAAC,QAAQ,oBAAoB;AAAA,EAC7B,CAAC,QAAQ,4BAA4B;AAAA,EACrC,CAAC,WAAW,gBAAgB;AAAA,EAC5B,CAAC,SAAS,wBAAwB;AAAA,EAClC,CAAC,UAAU,oBAAoB;AACjC;AAEA,SAAS,YAAkB;AACzB,EAAE,MAAI,KAAK,GAAG,GAAG,KAAK,OAAO,CAAC,4BAA4B;AAC1D,UAAQ,IAAI,EAAE;AACd,EAAE,MAAI,KAAK,GAAG,KAAK,UAAU,CAAC;AAE9B,aAAW,CAAC,MAAM,IAAI,KAAK,UAAU;AACnC,YAAQ,IAAI,KAAK,GAAG,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;AAAA,EACpD;AAEA,UAAQ,IAAI,EAAE;AACd,EAAE,MAAI,KAAK,OAAO,GAAG,KAAK,uBAAuB,CAAC,iBAAiB;AACrE;AAEA,IAAM,OAAO,cAAc;AAAA,EACzB,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,MAAM,MAAM,OAAO,oBAAiB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC3D,QAAQ,MAAM,OAAO,sBAAmB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC/D,SAAS,MAAM,OAAO,uBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IACjE,MAAM,MAAM,OAAO,oBAAiB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC3D,MAAM,MAAM,OAAO,oBAAiB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC3D,SAAS,MAAM,OAAO,uBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IACjE,OAAO,MAAM,OAAO,qBAAkB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC7D,QAAQ,MAAM,OAAO,sBAAmB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,EACjE;AAAA,EACA,IAAI,EAAE,KAAK,GAAG;AACZ,UAAM,WAAW,QAAQ,KAAK,CAAC;AAE/B,QAAI,KAAK,MAAM;AACb,MAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,MAAM,CAAC,EAAE;AACpC,gBAAU;AACV,MAAE,QAAM,wBAAiB;AACzB;AAAA,IACF;AAEA,QAAI,UAAU;AACZ;AAAA,IACF;AAEA,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,MAAM,CAAC,EAAE;AACpC,cAAU;AACV,IAAE,QAAM,wBAAiB;AAAA,EAC3B;AACF,CAAC;AAED,QAAQ,IAAI;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { defineCommand, runMain } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { createRequire } from \"node:module\";\n\nconst require = createRequire(import.meta.url);\nconst pkg = require(\"../package.json\");\n\nconst LOGO = \"🦋\";\n\nconst COMMANDS = [\n [\"init\", \"Create a new Kalp project\"],\n [\"create\", \"Add a new agent\"],\n [\"migrate\", \"Migrate agent schema\"],\n [\"push\", \"Push agent to Kalp\"],\n [\"link\", \"Link project to Kalp cloud\"],\n [\"secrets\", \"Manage secrets\"],\n [\"login\", \"Authenticate with Kalp\"],\n [\"logout\", \"Sign out from Kalp\"],\n] as const;\n\nfunction printHelp(): void {\n p.log.info(`${pc.bold(\"Usage\")}: kalp <command> [options]`);\n console.log(\"\");\n p.log.info(pc.bold(\"Commands\"));\n\n for (const [name, desc] of COMMANDS) {\n console.log(` ${pc.cyan(name.padEnd(10))}${desc}`);\n }\n\n console.log(\"\");\n p.log.info(`Run ${pc.cyan(\"kalp <command> --help\")} for more info.`);\n}\n\nconst main = defineCommand({\n meta: {\n name: \"kalp\",\n version: pkg.version,\n description: \"🦋 Zero-config agent infrastructure\",\n },\n args: {\n help: {\n type: \"boolean\",\n alias: \"h\",\n description: \"Show help\",\n default: false,\n },\n },\n subCommands: {\n init: () => import(\"./commands/init\").then((r) => r.default),\n create: () => import(\"./commands/create\").then((r) => r.default),\n migrate: () => import(\"./commands/migrate\").then((r) => r.default),\n push: () => import(\"./commands/push\").then((r) => r.default),\n link: () => import(\"./commands/link\").then((r) => r.default),\n secrets: () => import(\"./commands/secrets\").then((r) => r.default),\n login: () => import(\"./commands/login\").then((r) => r.default),\n logout: () => import(\"./commands/logout\").then((r) => r.default),\n },\n run({ args }) {\n const firstArg = process.argv[2];\n\n if (args.help) {\n p.intro(`${LOGO} ${pc.bold(\"kalp\")}`);\n printHelp();\n p.outro(\"Happy coding 🦋\");\n return;\n }\n\n if (firstArg) {\n return;\n }\n\n p.intro(`${LOGO} ${pc.bold(\"kalp\")}`);\n printHelp();\n p.outro(\"Happy coding 🦋\");\n },\n});\n\nrunMain(main);\n"],"mappings":";;;AAAA,SAAS,eAAe,eAAe;AACvC,YAAY,OAAO;AACnB,OAAO,QAAQ;AACf,SAAS,qBAAqB;AAE9B,IAAMA,WAAU,cAAc,YAAY,GAAG;AAC7C,IAAM,MAAMA,SAAQ,iBAAiB;AAErC,IAAM,OAAO;AAEb,IAAM,WAAW;AAAA,EACf,CAAC,QAAQ,2BAA2B;AAAA,EACpC,CAAC,UAAU,iBAAiB;AAAA,EAC5B,CAAC,WAAW,sBAAsB;AAAA,EAClC,CAAC,QAAQ,oBAAoB;AAAA,EAC7B,CAAC,QAAQ,4BAA4B;AAAA,EACrC,CAAC,WAAW,gBAAgB;AAAA,EAC5B,CAAC,SAAS,wBAAwB;AAAA,EAClC,CAAC,UAAU,oBAAoB;AACjC;AAEA,SAAS,YAAkB;AACzB,EAAE,MAAI,KAAK,GAAG,GAAG,KAAK,OAAO,CAAC,4BAA4B;AAC1D,UAAQ,IAAI,EAAE;AACd,EAAE,MAAI,KAAK,GAAG,KAAK,UAAU,CAAC;AAE9B,aAAW,CAAC,MAAM,IAAI,KAAK,UAAU;AACnC,YAAQ,IAAI,KAAK,GAAG,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;AAAA,EACpD;AAEA,UAAQ,IAAI,EAAE;AACd,EAAE,MAAI,KAAK,OAAO,GAAG,KAAK,uBAAuB,CAAC,iBAAiB;AACrE;AAEA,IAAM,OAAO,cAAc;AAAA,EACzB,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS,IAAI;AAAA,IACb,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,MAAM,MAAM,OAAO,oBAAiB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC3D,QAAQ,MAAM,OAAO,sBAAmB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC/D,SAAS,MAAM,OAAO,uBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IACjE,MAAM,MAAM,OAAO,oBAAiB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC3D,MAAM,MAAM,OAAO,oBAAiB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC3D,SAAS,MAAM,OAAO,uBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IACjE,OAAO,MAAM,OAAO,qBAAkB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC7D,QAAQ,MAAM,OAAO,sBAAmB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,EACjE;AAAA,EACA,IAAI,EAAE,KAAK,GAAG;AACZ,UAAM,WAAW,QAAQ,KAAK,CAAC;AAE/B,QAAI,KAAK,MAAM;AACb,MAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,MAAM,CAAC,EAAE;AACpC,gBAAU;AACV,MAAE,QAAM,wBAAiB;AACzB;AAAA,IACF;AAEA,QAAI,UAAU;AACZ;AAAA,IACF;AAEA,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,MAAM,CAAC,EAAE;AACpC,cAAU;AACV,IAAE,QAAM,wBAAiB;AAAA,EAC3B;AACF,CAAC;AAED,QAAQ,IAAI;","names":["require"]}
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  promptProjectName,
4
4
  scaffoldProject
5
- } from "./chunk-KI5J6MOO.js";
5
+ } from "./chunk-BQOY6ZUE.js";
6
6
  import {
7
7
  ensureDirectory,
8
8
  installDeps,
9
9
  isProjectInitialized
10
10
  } from "./chunk-TPTPZH2W.js";
11
- import "./chunk-W4ZIAVWI.js";
11
+ import "./chunk-KD6MYE65.js";
12
12
  import "./chunk-2H7UOFLK.js";
13
13
 
14
14
  // src/commands/init.ts
@@ -71,4 +71,4 @@ var init_default = defineCommand({
71
71
  export {
72
72
  init_default as default
73
73
  };
74
- //# sourceMappingURL=init-LUNBE3EX.js.map
74
+ //# sourceMappingURL=init-2RJWFHB2.js.map
@@ -21,9 +21,9 @@ var secrets_default = defineCommand({
21
21
  },
22
22
  subCommands: {
23
23
  list: () => import("./list-OKKHGKJA.js").then((r) => r.default),
24
- add: () => import("./add-LCDZNMNK.js").then((r) => r.default),
25
- delete: () => import("./delete-ZYPUY7GC.js").then((r) => r.default),
26
- sync: () => import("./sync-Y3YT5GCV.js").then((r) => r.default)
24
+ add: () => import("./add-TSWPTKEC.js").then((r) => r.default),
25
+ delete: () => import("./delete-IDNFBWDW.js").then((r) => r.default),
26
+ sync: () => import("./sync-2UR3KCWW.js").then((r) => r.default)
27
27
  },
28
28
  run({ args }) {
29
29
  if (!args.help) {
@@ -47,4 +47,4 @@ var secrets_default = defineCommand({
47
47
  export {
48
48
  secrets_default as default
49
49
  };
50
- //# sourceMappingURL=secrets-HTLXE6OC.js.map
50
+ //# sourceMappingURL=secrets-FHVISDYJ.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-6LLXGS2P.js";
5
5
  import {
6
6
  generateTypes
7
- } from "./chunk-W4ZIAVWI.js";
7
+ } from "./chunk-KD6MYE65.js";
8
8
  import "./chunk-2H7UOFLK.js";
9
9
 
10
10
  // src/commands/secrets/sync.ts
@@ -118,4 +118,4 @@ var sync_default = defineCommand({
118
118
  export {
119
119
  sync_default as default
120
120
  };
121
- //# sourceMappingURL=sync-Y3YT5GCV.js.map
121
+ //# sourceMappingURL=sync-2UR3KCWW.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kalphq/cli",
3
- "version": "0.0.0-dev-20260420061515",
3
+ "version": "0.0.0-dev-20260420063836",
4
4
  "description": "Zero-config CLI for deploying Kalp agents",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -24,7 +24,7 @@
24
24
  "picocolors": "1.1.1",
25
25
  "zod": "3.25.76",
26
26
  "zod-to-json-schema": "3.25.2",
27
- "@kalphq/sdk": "0.0.0-dev-20260420061515"
27
+ "@kalphq/sdk": "0.0.0-dev-20260420063836"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "^22.15.3",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/codegen.ts"],"sourcesContent":["import { readFile, writeFile, mkdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { access } from \"node:fs/promises\";\n\nconst GENERATED_HEADER = `// 🦋 Kalp Generated Types\n// This file is auto-generated. Do not edit manually.\n// Run \\`kalp create\\` or update kalp.config.ts to regenerate.\n\n`;\n\n/**\n * Parse secrets from kalp.config.ts content using regex\n * Looks for: secrets: [\"KEY1\", \"KEY2\"] or secrets: []\n */\nfunction parseSecretsFromConfig(configContent: string): string[] | null {\n // Match secrets: [...] array\n const secretsMatch = configContent.match(/secrets:\\s*\\[([^\\]]*)\\]/);\n if (!secretsMatch) return null;\n\n const secretsArray = secretsMatch[1] ?? \"\";\n if (!secretsArray.trim()) return [];\n\n // Extract quoted strings from the array\n const secretMatches = secretsArray.match(/\"([^\"]+)\"/g);\n if (!secretMatches) return [];\n\n return secretMatches.map((match) => match.replace(/\"/g, \"\"));\n}\n\n/**\n * Generate types file based on secrets from kalp.config.ts\n */\nexport async function generateTypes(cwd: string): Promise<void> {\n const configPath = join(cwd, \"kalp.config.ts\");\n const kalpDir = join(cwd, \".kalp\");\n const typesPath = join(kalpDir, \"types.d.ts\");\n\n let secrets: string[] = [];\n\n try {\n const configContent = await readFile(configPath, \"utf-8\");\n const parsed = parseSecretsFromConfig(configContent);\n if (parsed !== null) {\n secrets = parsed;\n }\n } catch {\n // Config doesn't exist yet, use empty array\n secrets = [];\n }\n\n // Ensure .kalp directory exists\n try {\n await mkdir(kalpDir, { recursive: true });\n } catch {\n // Directory might already exist\n }\n\n // Generate the types content\n const secretsTuple =\n secrets.length > 0 ? `[${secrets.map((s) => `\"${s}\"`).join(\", \")}]` : \"[]\";\n\n const typesContent = `${GENERATED_HEADER}/**\n * Registered secrets from kalp.config.ts\n * @generated\n */\nexport type RegisteredSecretKeys = ${secretsTuple};\n`;\n\n await writeFile(typesPath, typesContent, \"utf-8\");\n}\n\n/**\n * Update kalp.d.ts to import and use generated types\n */\nexport async function updateKalpDts(cwd: string): Promise<void> {\n const kalpDtsPath = join(cwd, \"kalp.d.ts\");\n\n // Check if kalp.d.ts exists\n try {\n await access(kalpDtsPath);\n } catch {\n // Create new kalp.d.ts if it doesn't exist\n const content = `// Import SDK types\nimport \"@kalphq/sdk\";\n\n// Import generated types (auto-updated by \\`kalp create\\`)\nimport type { RegisteredSecretKeys } from \"./.kalp/types\";\n\ndeclare module \"@kalphq/sdk\" {\n interface SecretsRegistry {\n keys: RegisteredSecretKeys;\n }\n}\n`;\n await writeFile(kalpDtsPath, content, \"utf-8\");\n return;\n }\n\n // Read existing content\n const existingContent = await readFile(kalpDtsPath, \"utf-8\");\n\n // Check if it already imports from .kalp/types\n if (existingContent.includes(\"./.kalp/types\")) {\n // Already using generated types, no need to update\n return;\n }\n\n // Update to use generated types\n const updatedContent = `// Import SDK types\nimport \"@kalphq/sdk\";\n\n// Import generated types (auto-updated by \\`kalp create\\`)\nimport type { RegisteredSecretKeys } from \"./.kalp/types\";\n\ndeclare module \"@kalphq/sdk\" {\n interface SecretsRegistry {\n keys: RegisteredSecretKeys;\n }\n}\n`;\n\n await writeFile(kalpDtsPath, updatedContent, \"utf-8\");\n}\n\n/**\n * Ensure tsconfig.json includes .kalp/types.d.ts\n */\nexport async function updateTsconfig(cwd: string): Promise<void> {\n const tsconfigPath = join(cwd, \"tsconfig.json\");\n\n try {\n const content = await readFile(tsconfigPath, \"utf-8\");\n const config = JSON.parse(content);\n\n if (!config.include) {\n config.include = [];\n }\n\n // Add .kalp/types.d.ts if not already present\n const typesPath = \".kalp/types.d.ts\";\n if (!config.include.includes(typesPath)) {\n // Add at the beginning to ensure it loads first\n config.include.unshift(typesPath);\n await writeFile(tsconfigPath, JSON.stringify(config, null, 2), \"utf-8\");\n }\n } catch {\n // tsconfig.json doesn't exist or can't be parsed, skip\n }\n}\n"],"mappings":";;;AAAA,SAAS,UAAU,WAAW,aAAa;AAC3C,SAAS,YAAY;AACrB,SAAS,cAAc;AAEvB,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAUzB,SAAS,uBAAuB,eAAwC;AAEtE,QAAM,eAAe,cAAc,MAAM,yBAAyB;AAClE,MAAI,CAAC,aAAc,QAAO;AAE1B,QAAM,eAAe,aAAa,CAAC,KAAK;AACxC,MAAI,CAAC,aAAa,KAAK,EAAG,QAAO,CAAC;AAGlC,QAAM,gBAAgB,aAAa,MAAM,YAAY;AACrD,MAAI,CAAC,cAAe,QAAO,CAAC;AAE5B,SAAO,cAAc,IAAI,CAAC,UAAU,MAAM,QAAQ,MAAM,EAAE,CAAC;AAC7D;AAKA,eAAsB,cAAc,KAA4B;AAC9D,QAAM,aAAa,KAAK,KAAK,gBAAgB;AAC7C,QAAM,UAAU,KAAK,KAAK,OAAO;AACjC,QAAM,YAAY,KAAK,SAAS,YAAY;AAE5C,MAAI,UAAoB,CAAC;AAEzB,MAAI;AACF,UAAM,gBAAgB,MAAM,SAAS,YAAY,OAAO;AACxD,UAAM,SAAS,uBAAuB,aAAa;AACnD,QAAI,WAAW,MAAM;AACnB,gBAAU;AAAA,IACZ;AAAA,EACF,QAAQ;AAEN,cAAU,CAAC;AAAA,EACb;AAGA,MAAI;AACF,UAAM,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C,QAAQ;AAAA,EAER;AAGA,QAAM,eACJ,QAAQ,SAAS,IAAI,IAAI,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,MAAM;AAExE,QAAM,eAAe,GAAG,gBAAgB;AAAA;AAAA;AAAA;AAAA,qCAIL,YAAY;AAAA;AAG/C,QAAM,UAAU,WAAW,cAAc,OAAO;AAClD;AAKA,eAAsB,cAAc,KAA4B;AAC9D,QAAM,cAAc,KAAK,KAAK,WAAW;AAGzC,MAAI;AACF,UAAM,OAAO,WAAW;AAAA,EAC1B,QAAQ;AAEN,UAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYhB,UAAM,UAAU,aAAa,SAAS,OAAO;AAC7C;AAAA,EACF;AAGA,QAAM,kBAAkB,MAAM,SAAS,aAAa,OAAO;AAG3D,MAAI,gBAAgB,SAAS,eAAe,GAAG;AAE7C;AAAA,EACF;AAGA,QAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAavB,QAAM,UAAU,aAAa,gBAAgB,OAAO;AACtD;AAKA,eAAsB,eAAe,KAA4B;AAC/D,QAAM,eAAe,KAAK,KAAK,eAAe;AAE9C,MAAI;AACF,UAAM,UAAU,MAAM,SAAS,cAAc,OAAO;AACpD,UAAM,SAAS,KAAK,MAAM,OAAO;AAEjC,QAAI,CAAC,OAAO,SAAS;AACnB,aAAO,UAAU,CAAC;AAAA,IACpB;AAGA,UAAM,YAAY;AAClB,QAAI,CAAC,OAAO,QAAQ,SAAS,SAAS,GAAG;AAEvC,aAAO,QAAQ,QAAQ,SAAS;AAChC,YAAM,UAAU,cAAc,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG,OAAO;AAAA,IACxE;AAAA,EACF,QAAQ;AAAA,EAER;AACF;","names":[]}