@kalphq/cli 0.0.0-dev-20260513152102 → 0.0.0-dev-20260517015600

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 (75) hide show
  1. package/dist/{add-YZSIMRPC.js → add-5WUS5HGV.js} +16 -8
  2. package/dist/add-5WUS5HGV.js.map +1 -0
  3. package/dist/{agents-WYK6WNQP.js → agents-L22L47II.js} +3 -3
  4. package/dist/ai-7EBQF25Y.js +12 -0
  5. package/dist/ai-7EBQF25Y.js.map +1 -0
  6. package/dist/{chunk-IZXCZ3IA.js → chunk-4CPUJ537.js} +2 -2
  7. package/dist/chunk-5YUU3KLB.js +40 -0
  8. package/dist/chunk-5YUU3KLB.js.map +1 -0
  9. package/dist/chunk-7KVCCBPJ.js +139 -0
  10. package/dist/chunk-7KVCCBPJ.js.map +1 -0
  11. package/dist/{chunk-S3KAVLVM.js → chunk-D53K6UE6.js} +2 -2
  12. package/dist/chunk-D53K6UE6.js.map +1 -0
  13. package/dist/{chunk-4CEJYSJY.js → chunk-DLUULDXW.js} +12 -45
  14. package/dist/chunk-DLUULDXW.js.map +1 -0
  15. package/dist/chunk-DXNHT4HF.js +99 -0
  16. package/dist/chunk-DXNHT4HF.js.map +1 -0
  17. package/dist/{chunk-XVD3FFOJ.js → chunk-JXR6TPR5.js} +51 -72
  18. package/dist/chunk-JXR6TPR5.js.map +1 -0
  19. package/dist/chunk-LEKRFM4Q.js +49 -0
  20. package/dist/chunk-LEKRFM4Q.js.map +1 -0
  21. package/dist/chunk-QT2JFINP.js +99 -0
  22. package/dist/chunk-QT2JFINP.js.map +1 -0
  23. package/dist/{chunk-5SZMD7E6.js → chunk-TNNBTSDC.js} +2 -2
  24. package/dist/{chunk-5SZMD7E6.js.map → chunk-TNNBTSDC.js.map} +1 -1
  25. package/dist/{generate-JW2DMJ3W.js → chunk-ZX7TIQM7.js} +127 -120
  26. package/dist/chunk-ZX7TIQM7.js.map +1 -0
  27. package/dist/{create-UCJ77P62.js → create-ILPQCRA2.js} +2 -2
  28. package/dist/{delete-QPYVL4OU.js → delete-AJFAAGYJ.js} +9 -8
  29. package/dist/{delete-QPYVL4OU.js.map → delete-AJFAAGYJ.js.map} +1 -1
  30. package/dist/{delete-FIXMFFNZ.js → delete-IFVGULOA.js} +21 -13
  31. package/dist/delete-IFVGULOA.js.map +1 -0
  32. package/dist/{deploy-DRZZ3YRB.js → deploy-EWYNN3VU.js} +9 -6
  33. package/dist/{deploy-DRZZ3YRB.js.map → deploy-EWYNN3VU.js.map} +1 -1
  34. package/dist/{dev-5YY6W4WM.js → dev-3IEEUVYM.js} +66 -11
  35. package/dist/dev-3IEEUVYM.js.map +1 -0
  36. package/dist/generate-2MO7PZBT.js +69 -0
  37. package/dist/generate-2MO7PZBT.js.map +1 -0
  38. package/dist/generate-ODZUKTF2.js +146 -0
  39. package/dist/generate-ODZUKTF2.js.map +1 -0
  40. package/dist/index.js +32 -12
  41. package/dist/index.js.map +1 -1
  42. package/dist/{list-FKH4DWCF.js → list-BNQ34QG3.js} +6 -5
  43. package/dist/{list-FKH4DWCF.js.map → list-BNQ34QG3.js.map} +1 -1
  44. package/dist/{list-GZBBOFX5.js → list-WHYV5JZ4.js} +5 -4
  45. package/dist/{list-GZBBOFX5.js.map → list-WHYV5JZ4.js.map} +1 -1
  46. package/dist/{login-MGPA2VYV.js → login-BDLHS4HC.js} +13 -8
  47. package/dist/login-BDLHS4HC.js.map +1 -0
  48. package/dist/{mcp-DRMQYA7E.js → mcp-77OLNT5R.js} +2 -2
  49. package/dist/{pull-V7QJBVNZ.js → pull-CFDZS6VB.js} +8 -7
  50. package/dist/{pull-V7QJBVNZ.js.map → pull-CFDZS6VB.js.map} +1 -1
  51. package/dist/{push-P6CKRYT7.js → push-OL7562HM.js} +159 -47
  52. package/dist/push-OL7562HM.js.map +1 -0
  53. package/dist/runtime-template/studio/index.html +3 -0
  54. package/dist/{secrets-M43LLCTB.js → secrets-BPESLXMK.js} +6 -6
  55. package/dist/{sync-LTBH6DI5.js → sync-JJDODKMO.js} +8 -7
  56. package/dist/{sync-LTBH6DI5.js.map → sync-JJDODKMO.js.map} +1 -1
  57. package/package.json +5 -4
  58. package/dist/add-YZSIMRPC.js.map +0 -1
  59. package/dist/chunk-4CEJYSJY.js.map +0 -1
  60. package/dist/chunk-LPEV4QH2.js +0 -208
  61. package/dist/chunk-LPEV4QH2.js.map +0 -1
  62. package/dist/chunk-S3KAVLVM.js.map +0 -1
  63. package/dist/chunk-VCFH3R34.js +0 -103
  64. package/dist/chunk-VCFH3R34.js.map +0 -1
  65. package/dist/chunk-XVD3FFOJ.js.map +0 -1
  66. package/dist/delete-FIXMFFNZ.js.map +0 -1
  67. package/dist/dev-5YY6W4WM.js.map +0 -1
  68. package/dist/generate-JW2DMJ3W.js.map +0 -1
  69. package/dist/login-MGPA2VYV.js.map +0 -1
  70. package/dist/push-P6CKRYT7.js.map +0 -1
  71. /package/dist/{agents-WYK6WNQP.js.map → agents-L22L47II.js.map} +0 -0
  72. /package/dist/{chunk-IZXCZ3IA.js.map → chunk-4CPUJ537.js.map} +0 -0
  73. /package/dist/{create-UCJ77P62.js.map → create-ILPQCRA2.js.map} +0 -0
  74. /package/dist/{mcp-DRMQYA7E.js.map → mcp-77OLNT5R.js.map} +0 -0
  75. /package/dist/{secrets-M43LLCTB.js.map → secrets-BPESLXMK.js.map} +0 -0
@@ -5,15 +5,16 @@ import {
5
5
  } from "./chunk-YE2SFYAJ.js";
6
6
  import {
7
7
  resolveSecretsRuntimeConfigPath
8
- } from "./chunk-IZXCZ3IA.js";
8
+ } from "./chunk-4CPUJ537.js";
9
9
  import "./chunk-INB3LG6O.js";
10
- import "./chunk-XVD3FFOJ.js";
11
10
  import {
12
11
  requireAuth,
13
12
  resolveProvider
14
- } from "./chunk-S3KAVLVM.js";
13
+ } from "./chunk-D53K6UE6.js";
15
14
  import "./chunk-FO24J6XL.js";
15
+ import "./chunk-JXR6TPR5.js";
16
16
  import "./chunk-EXXTCGKR.js";
17
+ import "./chunk-LEKRFM4Q.js";
17
18
 
18
19
  // src/commands/secrets/list.ts
19
20
  import { defineCommand } from "citty";
@@ -109,4 +110,4 @@ var list_default = defineCommand({
109
110
  export {
110
111
  list_default as default
111
112
  };
112
- //# sourceMappingURL=list-GZBBOFX5.js.map
113
+ //# sourceMappingURL=list-WHYV5JZ4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/secrets/list.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { requireAuth } from \"@/utils/auth\";\nimport { resolveProvider } from \"@/utils/providers\";\nimport {\n filterInternalSecrets,\n readLocalSecretsFromConfig,\n} from \"@/utils/secrets-config\";\nimport { resolveSecretsRuntimeConfigPath } from \"@/utils/secrets-runtime\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List remote runtime secrets\",\n },\n args: {\n includeInternal: {\n type: \"boolean\",\n description: \"Include internal Kalp runtime secrets (KALP_*)\",\n default: false,\n },\n help: {\n type: \"boolean\",\n alias: \"h\",\n description: \"Show help\",\n default: false,\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n\n if (args.help) {\n p.log.info(`${pc.bold(\"Usage\")}: kalp secrets list`);\n return;\n }\n\n p.intro(`${LOGO} ${pc.bold(\"kalp secrets list\")}`);\n\n await requireAuth().catch(() => {\n p.log.error(\"Not authenticated. Run `kalp login` first.\");\n process.exit(1);\n });\n\n const spinner = p.spinner();\n spinner.start(\"Loading remote secrets\");\n\n try {\n const configPath = await resolveSecretsRuntimeConfigPath(cwd);\n const provider = resolveProvider();\n const [remoteSecrets, localSecrets] = await Promise.all([\n provider.listSecrets({ cwd, configPath }),\n readLocalSecretsFromConfig(cwd),\n ]);\n\n const remoteNames = filterInternalSecrets(\n remoteSecrets.map((item) => item.name),\n args.includeInternal,\n ).sort((a, b) => a.localeCompare(b));\n const localUserSecrets = filterInternalSecrets(\n localSecrets,\n args.includeInternal,\n );\n const syncedCount = remoteNames.filter((name) =>\n localUserSecrets.includes(name),\n ).length;\n spinner.stop(`Found ${remoteNames.length} remote secrets`);\n\n if (remoteNames.length === 0) {\n p.log.info(pc.dim(\"No remote secrets found.\"));\n p.log.info(pc.dim(`Add one with ${pc.cyan(\"kalp secrets add -k KEY -v VALUE\")}`));\n p.outro(\"Done\");\n return;\n }\n\n p.log.info(pc.bold(\"Remote runtime secrets\"));\n for (const name of remoteNames) {\n const synced = localUserSecrets.includes(name);\n const icon = synced ? pc.green(\"✓\") : pc.yellow(\"○\");\n console.log(` ${icon} ${pc.cyan(name)}`);\n }\n\n if (syncedCount !== remoteNames.length) {\n const missingLocal = remoteNames.filter(\n (name) => !localUserSecrets.includes(name),\n );\n p.log.warn(\n `Missing in kalp.config.ts: ${missingLocal.map((name) => pc.cyan(name)).join(\", \")}`,\n );\n }\n\n const localOnly = localUserSecrets.filter(\n (name) => !remoteNames.includes(name),\n );\n if (localOnly.length > 0) {\n p.log.warn(\n `Local-only secrets (not remote): ${localOnly.map((name) => pc.cyan(name)).join(\", \")}`,\n );\n }\n\n p.outro(\"Done\");\n } catch (error) {\n spinner.stop(\"Failed to load secrets\");\n p.log.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n },\n});\n"],"mappings":"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","names":["spinner"]}
1
+ {"version":3,"sources":["../src/commands/secrets/list.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { requireAuth } from \"@/utils/auth\";\nimport { resolveProvider } from \"@/utils/providers\";\nimport {\n filterInternalSecrets,\n readLocalSecretsFromConfig,\n} from \"@/utils/secrets-config\";\nimport { resolveSecretsRuntimeConfigPath } from \"@/utils/secrets-runtime\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List remote runtime secrets\",\n },\n args: {\n includeInternal: {\n type: \"boolean\",\n description: \"Include internal Kalp runtime secrets (KALP_*)\",\n default: false,\n },\n help: {\n type: \"boolean\",\n alias: \"h\",\n description: \"Show help\",\n default: false,\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n\n if (args.help) {\n p.log.info(`${pc.bold(\"Usage\")}: kalp secrets list`);\n return;\n }\n\n p.intro(`${LOGO} ${pc.bold(\"kalp secrets list\")}`);\n\n await requireAuth().catch(() => {\n p.log.error(\"Not authenticated. Run `kalp login` first.\");\n process.exit(1);\n });\n\n const spinner = p.spinner();\n spinner.start(\"Loading remote secrets\");\n\n try {\n const configPath = await resolveSecretsRuntimeConfigPath(cwd);\n const provider = resolveProvider();\n const [remoteSecrets, localSecrets] = await Promise.all([\n provider.listSecrets({ cwd, configPath }),\n readLocalSecretsFromConfig(cwd),\n ]);\n\n const remoteNames = filterInternalSecrets(\n remoteSecrets.map((item) => item.name),\n args.includeInternal,\n ).sort((a, b) => a.localeCompare(b));\n const localUserSecrets = filterInternalSecrets(\n localSecrets,\n args.includeInternal,\n );\n const syncedCount = remoteNames.filter((name) =>\n localUserSecrets.includes(name),\n ).length;\n spinner.stop(`Found ${remoteNames.length} remote secrets`);\n\n if (remoteNames.length === 0) {\n p.log.info(pc.dim(\"No remote secrets found.\"));\n p.log.info(pc.dim(`Add one with ${pc.cyan(\"kalp secrets add -k KEY -v VALUE\")}`));\n p.outro(\"Done\");\n return;\n }\n\n p.log.info(pc.bold(\"Remote runtime secrets\"));\n for (const name of remoteNames) {\n const synced = localUserSecrets.includes(name);\n const icon = synced ? pc.green(\"✓\") : pc.yellow(\"○\");\n console.log(` ${icon} ${pc.cyan(name)}`);\n }\n\n if (syncedCount !== remoteNames.length) {\n const missingLocal = remoteNames.filter(\n (name) => !localUserSecrets.includes(name),\n );\n p.log.warn(\n `Missing in kalp.config.ts: ${missingLocal.map((name) => pc.cyan(name)).join(\", \")}`,\n );\n }\n\n const localOnly = localUserSecrets.filter(\n (name) => !remoteNames.includes(name),\n );\n if (localOnly.length > 0) {\n p.log.warn(\n `Local-only secrets (not remote): ${localOnly.map((name) => pc.cyan(name)).join(\", \")}`,\n );\n }\n\n p.outro(\"Done\");\n } catch (error) {\n spinner.stop(\"Failed to load secrets\");\n p.log.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n },\n});\n"],"mappings":"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","names":["spinner"]}
@@ -1,8 +1,12 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ promptDeployTarget,
4
+ showKalpCloudWaitlist
5
+ } from "./chunk-5YUU3KLB.js";
2
6
  import {
3
7
  resolveProvider,
4
8
  saveAuthConfig
5
- } from "./chunk-S3KAVLVM.js";
9
+ } from "./chunk-D53K6UE6.js";
6
10
  import "./chunk-FO24J6XL.js";
7
11
 
8
12
  // src/commands/login.ts
@@ -14,15 +18,16 @@ var login_default = defineCommand({
14
18
  meta: { name: "login", description: "Sign in to remote runtime" },
15
19
  async run() {
16
20
  p.intro(`${LOGO} ${pc.bold("kalp login")}`);
17
- const provider = resolveProvider();
18
- const proceed = await p.confirm({
19
- message: "Sign in to remote runtime now?",
20
- initialValue: true
21
- });
22
- if (p.isCancel(proceed) || !proceed) {
21
+ const target = await promptDeployTarget("Where do you want to sign in?");
22
+ if (!target) {
23
23
  p.outro("Cancelled");
24
24
  return;
25
25
  }
26
+ if (target === "kalp-cloud") {
27
+ showKalpCloudWaitlist();
28
+ return;
29
+ }
30
+ const provider = resolveProvider();
26
31
  const s = p.spinner();
27
32
  s.start("Opening sign-in flow");
28
33
  try {
@@ -56,4 +61,4 @@ var login_default = defineCommand({
56
61
  export {
57
62
  login_default as default
58
63
  };
59
- //# sourceMappingURL=login-MGPA2VYV.js.map
64
+ //# sourceMappingURL=login-BDLHS4HC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/login.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport {\n saveAuthConfig,\n type AuthConfig,\n} from \"@/utils/auth\";\nimport { resolveProvider } from \"@/utils/providers\";\nimport { promptDeployTarget, showKalpCloudWaitlist } from \"@/utils/deploy-target\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: { name: \"login\", description: \"Sign in to remote runtime\" },\n async run() {\n p.intro(`${LOGO} ${pc.bold(\"kalp login\")}`);\n\n const target = await promptDeployTarget(\"Where do you want to sign in?\");\n if (!target) {\n p.outro(\"Cancelled\");\n return;\n }\n\n if (target === \"kalp-cloud\") {\n showKalpCloudWaitlist();\n return;\n }\n\n const provider = resolveProvider();\n\n const s = p.spinner();\n s.start(\"Opening sign-in flow\");\n\n try {\n await provider.login();\n } catch {\n s.stop(pc.red(\"Sign-in failed\"));\n process.exit(1);\n }\n\n s.stop(\"Sign-in complete\");\n s.start(\"Reading runtime identity\");\n const identity = await provider.whoami();\n const accountId = identity?.accountId;\n const email = identity?.email;\n\n if (!accountId || !email) {\n s.stop(pc.red(\"Could not resolve account identity from wrangler whoami\"));\n process.exit(1);\n }\n\n const authConfig: AuthConfig = {\n provider: \"cloudflare\",\n accountId,\n email,\n expiresAt: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(),\n };\n\n await saveAuthConfig(authConfig);\n\n s.stop(\"Authentication saved\");\n p.log.success(`Logged in as ${pc.cyan(authConfig.email)}`);\n p.note(`Workspace ID: ${pc.cyan(authConfig.accountId)}`, \"Runtime\");\n p.outro(pc.green(\"Ready to deploy your agents\"));\n },\n});\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AAQf,IAAM,OAAO;AAEb,IAAO,gBAAQ,cAAc;AAAA,EAC3B,MAAM,EAAE,MAAM,SAAS,aAAa,4BAA4B;AAAA,EAChE,MAAM,MAAM;AACV,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,YAAY,CAAC,EAAE;AAE1C,UAAM,SAAS,MAAM,mBAAmB,+BAA+B;AACvE,QAAI,CAAC,QAAQ;AACX,MAAE,QAAM,WAAW;AACnB;AAAA,IACF;AAEA,QAAI,WAAW,cAAc;AAC3B,4BAAsB;AACtB;AAAA,IACF;AAEA,UAAM,WAAW,gBAAgB;AAEjC,UAAM,IAAM,UAAQ;AACpB,MAAE,MAAM,sBAAsB;AAE9B,QAAI;AACF,YAAM,SAAS,MAAM;AAAA,IACvB,QAAQ;AACN,QAAE,KAAK,GAAG,IAAI,gBAAgB,CAAC;AAC/B,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,MAAE,KAAK,kBAAkB;AACzB,MAAE,MAAM,0BAA0B;AAClC,UAAM,WAAW,MAAM,SAAS,OAAO;AACvC,UAAM,YAAY,UAAU;AAC5B,UAAM,QAAQ,UAAU;AAExB,QAAI,CAAC,aAAa,CAAC,OAAO;AACxB,QAAE,KAAK,GAAG,IAAI,yDAAyD,CAAC;AACxE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,aAAyB;AAAA,MAC7B,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,WAAW,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAI,EAAE,YAAY;AAAA,IACzE;AAEA,UAAM,eAAe,UAAU;AAE/B,MAAE,KAAK,sBAAsB;AAC7B,IAAE,MAAI,QAAQ,gBAAgB,GAAG,KAAK,WAAW,KAAK,CAAC,EAAE;AACzD,IAAE,OAAK,iBAAiB,GAAG,KAAK,WAAW,SAAS,CAAC,IAAI,SAAS;AAClE,IAAE,QAAM,GAAG,MAAM,6BAA6B,CAAC;AAAA,EACjD;AACF,CAAC;","names":[]}
@@ -19,7 +19,7 @@ var mcp_default = defineCommand({
19
19
  }
20
20
  },
21
21
  subCommands: {
22
- generate: () => import("./generate-JW2DMJ3W.js").then((r) => r.default)
22
+ generate: () => import("./generate-2MO7PZBT.js").then((r) => r.default)
23
23
  },
24
24
  run({ args }) {
25
25
  const subcommand = process.argv[3];
@@ -36,4 +36,4 @@ var mcp_default = defineCommand({
36
36
  export {
37
37
  mcp_default as default
38
38
  };
39
- //# sourceMappingURL=mcp-DRMQYA7E.js.map
39
+ //# sourceMappingURL=mcp-77OLNT5R.js.map
@@ -1,24 +1,25 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- generateTypes
4
- } from "./chunk-LPEV4QH2.js";
5
2
  import {
6
3
  filterInternalSecrets,
7
4
  mergeSecrets,
8
5
  readLocalSecretsFromConfig,
9
6
  writeLocalSecretsToConfig
10
7
  } from "./chunk-YE2SFYAJ.js";
8
+ import {
9
+ generateTypes
10
+ } from "./chunk-DXNHT4HF.js";
11
11
  import {
12
12
  resolveSecretsRuntimeConfigPath
13
- } from "./chunk-IZXCZ3IA.js";
13
+ } from "./chunk-4CPUJ537.js";
14
14
  import "./chunk-INB3LG6O.js";
15
- import "./chunk-XVD3FFOJ.js";
16
15
  import {
17
16
  requireAuth,
18
17
  resolveProvider
19
- } from "./chunk-S3KAVLVM.js";
18
+ } from "./chunk-D53K6UE6.js";
20
19
  import "./chunk-FO24J6XL.js";
20
+ import "./chunk-JXR6TPR5.js";
21
21
  import "./chunk-EXXTCGKR.js";
22
+ import "./chunk-LEKRFM4Q.js";
22
23
 
23
24
  // src/commands/secrets/pull.ts
24
25
  import { defineCommand } from "citty";
@@ -80,4 +81,4 @@ var pull_default = defineCommand({
80
81
  export {
81
82
  pull_default as default
82
83
  };
83
- //# sourceMappingURL=pull-V7QJBVNZ.js.map
84
+ //# sourceMappingURL=pull-CFDZS6VB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/secrets/pull.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { requireAuth } from \"@/utils/auth\";\nimport { generateTypes } from \"@/utils/codegen\";\nimport { resolveProvider } from \"@/utils/providers\";\nimport {\n filterInternalSecrets,\n mergeSecrets,\n readLocalSecretsFromConfig,\n writeLocalSecretsToConfig,\n} from \"@/utils/secrets-config\";\nimport { resolveSecretsRuntimeConfigPath } from \"@/utils/secrets-runtime\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: {\n name: \"pull\",\n description: \"Pull remote secrets into local kalp.config.ts\",\n },\n args: {\n includeInternal: {\n type: \"boolean\",\n description: \"Include internal Kalp runtime secrets (KALP_*)\",\n default: false,\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n\n p.intro(`${LOGO} ${pc.bold(\"kalp secrets pull\")}`);\n\n await requireAuth().catch(() => {\n p.log.error(\"Not authenticated. Run `kalp login` first.\");\n process.exit(1);\n });\n\n const spinner = p.spinner();\n spinner.start(\"Reading remote secrets\");\n\n try {\n const configPath = await resolveSecretsRuntimeConfigPath(cwd);\n const provider = resolveProvider();\n const [remoteSecrets, localSecrets] = await Promise.all([\n provider.listSecrets({ cwd, configPath }),\n readLocalSecretsFromConfig(cwd),\n ]);\n\n const remoteNames = filterInternalSecrets(\n remoteSecrets.map((secret) => secret.name),\n args.includeInternal,\n );\n const merged = mergeSecrets(localSecrets, remoteNames);\n const added = merged.filter((name) => !localSecrets.includes(name));\n\n await writeLocalSecretsToConfig(cwd, merged);\n await generateTypes(cwd);\n\n spinner.stop(`Pulled ${remoteNames.length} remote secrets`);\n if (added.length > 0) {\n p.log.success(\n `Added to local config: ${added.map((name) => pc.cyan(name)).join(\", \")}`,\n );\n } else {\n p.log.info(pc.dim(\"Local config already up to date.\"));\n }\n p.outro(\"Done\");\n } catch (error) {\n spinner.stop(\"Pull failed\");\n p.log.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AAYf,IAAM,OAAO;AAEb,IAAO,eAAQ,cAAc;AAAA,EAC3B,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,UAAM,MAAM,QAAQ,IAAI;AAExB,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,mBAAmB,CAAC,EAAE;AAEjD,UAAM,YAAY,EAAE,MAAM,MAAM;AAC9B,MAAE,MAAI,MAAM,4CAA4C;AACxD,cAAQ,KAAK,CAAC;AAAA,IAChB,CAAC;AAED,UAAMA,WAAY,UAAQ;AAC1B,IAAAA,SAAQ,MAAM,wBAAwB;AAEtC,QAAI;AACF,YAAM,aAAa,MAAM,gCAAgC,GAAG;AAC5D,YAAM,WAAW,gBAAgB;AACjC,YAAM,CAAC,eAAe,YAAY,IAAI,MAAM,QAAQ,IAAI;AAAA,QACtD,SAAS,YAAY,EAAE,KAAK,WAAW,CAAC;AAAA,QACxC,2BAA2B,GAAG;AAAA,MAChC,CAAC;AAED,YAAM,cAAc;AAAA,QAClB,cAAc,IAAI,CAAC,WAAW,OAAO,IAAI;AAAA,QACzC,KAAK;AAAA,MACP;AACA,YAAM,SAAS,aAAa,cAAc,WAAW;AACrD,YAAM,QAAQ,OAAO,OAAO,CAAC,SAAS,CAAC,aAAa,SAAS,IAAI,CAAC;AAElE,YAAM,0BAA0B,KAAK,MAAM;AAC3C,YAAM,cAAc,GAAG;AAEvB,MAAAA,SAAQ,KAAK,UAAU,YAAY,MAAM,iBAAiB;AAC1D,UAAI,MAAM,SAAS,GAAG;AACpB,QAAE,MAAI;AAAA,UACJ,0BAA0B,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,QACzE;AAAA,MACF,OAAO;AACL,QAAE,MAAI,KAAK,GAAG,IAAI,kCAAkC,CAAC;AAAA,MACvD;AACA,MAAE,QAAM,MAAM;AAAA,IAChB,SAAS,OAAO;AACd,MAAAA,SAAQ,KAAK,aAAa;AAC1B,MAAE,MAAI,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAClE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF,CAAC;","names":["spinner"]}
1
+ {"version":3,"sources":["../src/commands/secrets/pull.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { requireAuth } from \"@/utils/auth\";\nimport { generateTypes } from \"@/utils/codegen\";\nimport { resolveProvider } from \"@/utils/providers\";\nimport {\n filterInternalSecrets,\n mergeSecrets,\n readLocalSecretsFromConfig,\n writeLocalSecretsToConfig,\n} from \"@/utils/secrets-config\";\nimport { resolveSecretsRuntimeConfigPath } from \"@/utils/secrets-runtime\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: {\n name: \"pull\",\n description: \"Pull remote secrets into local kalp.config.ts\",\n },\n args: {\n includeInternal: {\n type: \"boolean\",\n description: \"Include internal Kalp runtime secrets (KALP_*)\",\n default: false,\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n\n p.intro(`${LOGO} ${pc.bold(\"kalp secrets pull\")}`);\n\n await requireAuth().catch(() => {\n p.log.error(\"Not authenticated. Run `kalp login` first.\");\n process.exit(1);\n });\n\n const spinner = p.spinner();\n spinner.start(\"Reading remote secrets\");\n\n try {\n const configPath = await resolveSecretsRuntimeConfigPath(cwd);\n const provider = resolveProvider();\n const [remoteSecrets, localSecrets] = await Promise.all([\n provider.listSecrets({ cwd, configPath }),\n readLocalSecretsFromConfig(cwd),\n ]);\n\n const remoteNames = filterInternalSecrets(\n remoteSecrets.map((secret) => secret.name),\n args.includeInternal,\n );\n const merged = mergeSecrets(localSecrets, remoteNames);\n const added = merged.filter((name) => !localSecrets.includes(name));\n\n await writeLocalSecretsToConfig(cwd, merged);\n await generateTypes(cwd);\n\n spinner.stop(`Pulled ${remoteNames.length} remote secrets`);\n if (added.length > 0) {\n p.log.success(\n `Added to local config: ${added.map((name) => pc.cyan(name)).join(\", \")}`,\n );\n } else {\n p.log.info(pc.dim(\"Local config already up to date.\"));\n }\n p.outro(\"Done\");\n } catch (error) {\n spinner.stop(\"Pull failed\");\n p.log.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AAYf,IAAM,OAAO;AAEb,IAAO,eAAQ,cAAc;AAAA,EAC3B,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,UAAM,MAAM,QAAQ,IAAI;AAExB,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,mBAAmB,CAAC,EAAE;AAEjD,UAAM,YAAY,EAAE,MAAM,MAAM;AAC9B,MAAE,MAAI,MAAM,4CAA4C;AACxD,cAAQ,KAAK,CAAC;AAAA,IAChB,CAAC;AAED,UAAMA,WAAY,UAAQ;AAC1B,IAAAA,SAAQ,MAAM,wBAAwB;AAEtC,QAAI;AACF,YAAM,aAAa,MAAM,gCAAgC,GAAG;AAC5D,YAAM,WAAW,gBAAgB;AACjC,YAAM,CAAC,eAAe,YAAY,IAAI,MAAM,QAAQ,IAAI;AAAA,QACtD,SAAS,YAAY,EAAE,KAAK,WAAW,CAAC;AAAA,QACxC,2BAA2B,GAAG;AAAA,MAChC,CAAC;AAED,YAAM,cAAc;AAAA,QAClB,cAAc,IAAI,CAAC,WAAW,OAAO,IAAI;AAAA,QACzC,KAAK;AAAA,MACP;AACA,YAAM,SAAS,aAAa,cAAc,WAAW;AACrD,YAAM,QAAQ,OAAO,OAAO,CAAC,SAAS,CAAC,aAAa,SAAS,IAAI,CAAC;AAElE,YAAM,0BAA0B,KAAK,MAAM;AAC3C,YAAM,cAAc,GAAG;AAEvB,MAAAA,SAAQ,KAAK,UAAU,YAAY,MAAM,iBAAiB;AAC1D,UAAI,MAAM,SAAS,GAAG;AACpB,QAAE,MAAI;AAAA,UACJ,0BAA0B,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,QACzE;AAAA,MACF,OAAO;AACL,QAAE,MAAI,KAAK,GAAG,IAAI,kCAAkC,CAAC;AAAA,MACvD;AACA,MAAE,QAAM,MAAM;AAAA,IAChB,SAAS,OAAO;AACd,MAAAA,SAAQ,KAAK,aAAa;AAC1B,MAAE,MAAI,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAClE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF,CAAC;","names":["spinner"]}
@@ -3,31 +3,39 @@ import {
3
3
  computePushHash,
4
4
  readAgentManifest,
5
5
  validateCompiledIR
6
- } from "./chunk-VCFH3R34.js";
6
+ } from "./chunk-7KVCCBPJ.js";
7
+ import {
8
+ collectMcpSecretRequirements
9
+ } from "./chunk-QT2JFINP.js";
10
+ import {
11
+ runInitialDeploy
12
+ } from "./chunk-DLUULDXW.js";
7
13
  import {
8
14
  promptDeployTarget,
9
- runInitialDeploy,
10
15
  showKalpCloudWaitlist
11
- } from "./chunk-4CEJYSJY.js";
16
+ } from "./chunk-5YUU3KLB.js";
12
17
  import "./chunk-NV2IZ4XM.js";
13
18
  import {
14
19
  generateTypes
15
- } from "./chunk-LPEV4QH2.js";
20
+ } from "./chunk-DXNHT4HF.js";
16
21
  import {
17
22
  ensureConfig
18
23
  } from "./chunk-INB3LG6O.js";
24
+ import {
25
+ requireAuth,
26
+ resolveProvider
27
+ } from "./chunk-D53K6UE6.js";
28
+ import "./chunk-FO24J6XL.js";
19
29
  import {
20
30
  materializeRuntime,
21
31
  readLocalAgentNames,
22
32
  readProjectState,
23
33
  writeProjectState
24
- } from "./chunk-XVD3FFOJ.js";
34
+ } from "./chunk-JXR6TPR5.js";
25
35
  import {
26
- requireAuth,
27
- resolveProvider
28
- } from "./chunk-S3KAVLVM.js";
29
- import "./chunk-FO24J6XL.js";
30
- import "./chunk-EXXTCGKR.js";
36
+ loadProjectConfig
37
+ } from "./chunk-EXXTCGKR.js";
38
+ import "./chunk-LEKRFM4Q.js";
31
39
 
32
40
  // src/commands/push.ts
33
41
  import { access, mkdir as mkdir2, rm, writeFile as writeFile2 } from "fs/promises";
@@ -40,13 +48,39 @@ import pc from "picocolors";
40
48
  import { mkdir, writeFile } from "fs/promises";
41
49
  import { join } from "path";
42
50
  async function exportCompiledIrForDebug(params) {
43
- const { cwd, agentName, ir } = params;
44
- const outDir = join(cwd, ".kalp", "exports", agentName);
45
- await mkdir(outDir, { recursive: true });
46
- const outputPath = join(outDir, "ir.json");
47
- await writeFile(outputPath, `${JSON.stringify(ir, null, 2)}
48
- `, "utf-8");
49
- return outputPath;
51
+ const { cwd, agentName, manifest } = params;
52
+ const outDir = join(cwd, ".kalp", "exports", agentName, "artifacts");
53
+ const bundlesDir = join(outDir, "targets", "default", "bundles");
54
+ await mkdir(bundlesDir, { recursive: true });
55
+ await writeFile(
56
+ join(outDir, "artifact-manifest.json"),
57
+ `${JSON.stringify(manifest.artifactManifest, null, 2)}
58
+ `,
59
+ "utf-8"
60
+ );
61
+ await writeFile(
62
+ join(outDir, "semantic-ir.json"),
63
+ `${JSON.stringify(manifest.semanticIr, null, 2)}
64
+ `,
65
+ "utf-8"
66
+ );
67
+ await writeFile(
68
+ join(outDir, "schemas.json"),
69
+ `${JSON.stringify(manifest.schemas, null, 2)}
70
+ `,
71
+ "utf-8"
72
+ );
73
+ await writeFile(
74
+ join(outDir, "bundle-manifest.json"),
75
+ `${JSON.stringify(manifest.bundleManifest, null, 2)}
76
+ `,
77
+ "utf-8"
78
+ );
79
+ for (const [bundleHash, bundle] of Object.entries(manifest.bundles)) {
80
+ const fileName = bundle.file.split("/").pop() ?? `${bundleHash}.js`;
81
+ await writeFile(join(bundlesDir, fileName), bundle.code, "utf-8");
82
+ }
83
+ return outDir;
50
84
  }
51
85
 
52
86
  // src/commands/push.ts
@@ -151,12 +185,19 @@ async function pruneStaleRemoteAgents(params) {
151
185
  }).then(() => true).catch(() => false);
152
186
  if (latestDeleted) deletedKeys += 1;
153
187
  for (const hash of hashes) {
154
- const deleted = await provider.deleteValue({
188
+ const artifactKeys = await provider.listKeys({
155
189
  cwd,
156
190
  configPath: wranglerConfigPath,
157
- key: `${entry.name}:${hash}`
158
- }).then(() => true).catch(() => false);
159
- if (deleted) deletedKeys += 1;
191
+ prefix: `${entry.name}:${hash}:`
192
+ }).catch(() => []);
193
+ for (const artifactKey of artifactKeys) {
194
+ const deleted = await provider.deleteValue({
195
+ cwd,
196
+ configPath: wranglerConfigPath,
197
+ key: artifactKey.name
198
+ }).then(() => true).catch(() => false);
199
+ if (deleted) deletedKeys += 1;
200
+ }
160
201
  }
161
202
  }
162
203
  const filtered = remoteEntries.filter((entry) => localSet.has(entry.name));
@@ -176,20 +217,60 @@ async function mergeRemoteAgentIndexEntry(params) {
176
217
  await writeRemoteAgentsIndex(cwd, wranglerConfigPath, merged);
177
218
  }
178
219
  async function pushRemoteManifest(params) {
179
- const { cwd, wranglerConfigPath, agentName, hash, ir } = params;
180
- const manifestKey = `${agentName}:${hash}`;
220
+ const { cwd, wranglerConfigPath, agentName, hash, manifest } = params;
181
221
  const latestKey = `${agentName}:latest`;
182
- const manifestPath = join2(cwd, ".kalp", `${agentName}-${hash}.json`);
183
- await mkdir2(join2(cwd, ".kalp"), { recursive: true });
184
- await writeFile2(manifestPath, JSON.stringify(ir), "utf-8");
222
+ const artifactsDir = join2(cwd, ".kalp", `${agentName}-${hash}-artifacts`);
223
+ await mkdir2(artifactsDir, { recursive: true });
224
+ const artifactManifestPath = join2(artifactsDir, "artifact-manifest.json");
225
+ const semanticIrPath = join2(artifactsDir, "semantic-ir.json");
226
+ const schemasPath = join2(artifactsDir, "schemas.json");
227
+ const bundleManifestPath = join2(artifactsDir, "bundle-manifest.json");
228
+ await writeFile2(
229
+ artifactManifestPath,
230
+ JSON.stringify(manifest.artifactManifest),
231
+ "utf-8"
232
+ );
233
+ await writeFile2(semanticIrPath, JSON.stringify(manifest.semanticIr), "utf-8");
234
+ await writeFile2(schemasPath, JSON.stringify(manifest.schemas), "utf-8");
235
+ await writeFile2(
236
+ bundleManifestPath,
237
+ JSON.stringify(manifest.bundleManifest),
238
+ "utf-8"
239
+ );
185
240
  const provider = resolveProvider();
186
241
  try {
187
242
  await provider.putManifest({
188
243
  cwd,
189
244
  configPath: wranglerConfigPath,
190
- key: manifestKey,
191
- jsonPath: manifestPath
245
+ key: `${agentName}:${hash}:artifact-manifest`,
246
+ jsonPath: artifactManifestPath
247
+ });
248
+ await provider.putManifest({
249
+ cwd,
250
+ configPath: wranglerConfigPath,
251
+ key: `${agentName}:${hash}:semantic-ir`,
252
+ jsonPath: semanticIrPath
253
+ });
254
+ await provider.putManifest({
255
+ cwd,
256
+ configPath: wranglerConfigPath,
257
+ key: `${agentName}:${hash}:schemas`,
258
+ jsonPath: schemasPath
259
+ });
260
+ await provider.putManifest({
261
+ cwd,
262
+ configPath: wranglerConfigPath,
263
+ key: `${agentName}:${hash}:bundle-manifest`,
264
+ jsonPath: bundleManifestPath
192
265
  });
266
+ for (const [bundleHash, bundle] of Object.entries(manifest.bundles)) {
267
+ await provider.putValue({
268
+ cwd,
269
+ configPath: wranglerConfigPath,
270
+ key: `${agentName}:${hash}:bundle:${bundleHash}`,
271
+ value: bundle.code
272
+ });
273
+ }
193
274
  await provider.putValue({
194
275
  cwd,
195
276
  configPath: wranglerConfigPath,
@@ -197,7 +278,7 @@ async function pushRemoteManifest(params) {
197
278
  value: hash
198
279
  });
199
280
  } finally {
200
- await rm(manifestPath, { force: true });
281
+ await rm(artifactsDir, { recursive: true, force: true });
201
282
  }
202
283
  }
203
284
  var push_default = defineCommand({
@@ -214,6 +295,12 @@ var push_default = defineCommand({
214
295
  description: "Update only local runtime snapshot and state",
215
296
  required: false,
216
297
  default: false
298
+ },
299
+ strictSecrets: {
300
+ type: "boolean",
301
+ description: "Fail if required MCP secrets are missing from remote runtime",
302
+ required: false,
303
+ default: false
217
304
  }
218
305
  },
219
306
  async run({ args }) {
@@ -271,6 +358,37 @@ var push_default = defineCommand({
271
358
  state.deployedAt = (/* @__PURE__ */ new Date()).toISOString();
272
359
  }
273
360
  runtime = await materializeRuntime(cwd, { mode: "remote" });
361
+ const { raw: config } = await loadProjectConfig(cwd);
362
+ const requiredMcpSecrets = collectMcpSecretRequirements(
363
+ config
364
+ );
365
+ if (requiredMcpSecrets.length > 0) {
366
+ const provider = resolveProvider();
367
+ const remoteSecrets = await provider.listSecrets({ cwd, configPath: runtime.wranglerConfigPath }).catch(() => []);
368
+ const remoteSecretNames = new Set(remoteSecrets.map((s) => s.name));
369
+ const missing = requiredMcpSecrets.filter(
370
+ (s) => !remoteSecretNames.has(s)
371
+ );
372
+ if (missing.length > 0) {
373
+ p.log.warn(
374
+ `${pc.yellow("\u26A0\uFE0F Missing MCP secrets detected in remote runtime:")}
375
+ ` + missing.map((m) => ` - ${pc.bold(m)}`).join("\n")
376
+ );
377
+ if (args.strictSecrets) {
378
+ p.log.error(
379
+ pc.red(
380
+ "Push aborted due to missing required secrets (--strict-secrets is enabled)."
381
+ )
382
+ );
383
+ process.exit(1);
384
+ }
385
+ p.log.info(
386
+ pc.dim(
387
+ "Deployment will continue. You can add them later with `kalp secrets add`."
388
+ )
389
+ );
390
+ }
391
+ }
274
392
  if (isBulkPush) {
275
393
  const currentIndex = await readRemoteAgentsIndex(
276
394
  cwd,
@@ -300,10 +418,10 @@ var push_default = defineCommand({
300
418
  try {
301
419
  spinner2.start(`Compiling ${pc.cyan(agentName)}`);
302
420
  const manifest = await readAgentManifest({ cwd, agentName });
303
- const hash = computePushHash(manifest.ir);
421
+ const hash = computePushHash(manifest);
304
422
  const validation = validateCompiledIR({
305
423
  agentName,
306
- ir: manifest.ir,
424
+ manifest,
307
425
  hash
308
426
  });
309
427
  if (!validation.ok) {
@@ -320,13 +438,15 @@ var push_default = defineCommand({
320
438
  continue;
321
439
  }
322
440
  if (target === "remote") {
323
- spinner2.message(`Uploading agent ${pc.cyan(agentName)} to remote runtime`);
441
+ spinner2.message(
442
+ `Uploading agent ${pc.cyan(agentName)} to remote runtime`
443
+ );
324
444
  await pushRemoteManifest({
325
445
  cwd,
326
446
  wranglerConfigPath: runtime.wranglerConfigPath,
327
447
  agentName,
328
448
  hash,
329
- ir: manifest.ir
449
+ manifest
330
450
  });
331
451
  }
332
452
  agentState.currentVersion = Math.max(0, agentState.currentVersion) + 1;
@@ -345,8 +465,8 @@ var push_default = defineCommand({
345
465
  versionNumber: agentState.currentVersion,
346
466
  updatedAt: agentState.lastPushedAt,
347
467
  workerUrl: agentState.workerUrl,
348
- label: manifest.ir.metadata?.label,
349
- tags: manifest.ir.metadata?.tags
468
+ label: manifest.semanticIr.agent?.label,
469
+ tags: manifest.semanticIr.agent?.tags
350
470
  };
351
471
  await mergeRemoteAgentIndexEntry({
352
472
  cwd,
@@ -354,17 +474,16 @@ var push_default = defineCommand({
354
474
  entry: nextEntry
355
475
  });
356
476
  }
357
- const bundles = manifest.ir.bundles || {};
358
477
  await exportCompiledIrForDebug({
359
478
  cwd,
360
479
  agentName,
361
- ir: manifest.ir
480
+ manifest
362
481
  });
363
- const totalSize = Object.values(bundles).reduce(
482
+ const totalSize = Object.values(manifest.bundles).reduce(
364
483
  (sum, bundle) => sum + Buffer.byteLength(bundle.code),
365
484
  0
366
485
  );
367
- const handlerCount = Object.keys(bundles).length;
486
+ const handlerCount = Object.keys(manifest.bundles).length;
368
487
  spinner2.stop(
369
488
  `${pc.bold(agentName)} pushed ${pc.dim(`(v${agentState.currentVersion})`)} \xB7 ${handlerCount} handlers \xB7 ${formatBytes(totalSize)}`
370
489
  );
@@ -382,13 +501,6 @@ var push_default = defineCommand({
382
501
  `Successfully pushed ${result.pushed} agents. ${result.skipped} omitted (no changes). ${result.failed} failed.`,
383
502
  target === "local" ? "Local push" : "Remote push"
384
503
  );
385
- if (target === "remote" && result.pushed > 0) {
386
- p.log.info(
387
- pc.dim(
388
- "Changes propagating to remote Studio (eventual consistency, up to ~60s)."
389
- )
390
- );
391
- }
392
504
  if (failures.length > 0) {
393
505
  for (const failure of failures) {
394
506
  p.log.error(failure);
@@ -402,4 +514,4 @@ var push_default = defineCommand({
402
514
  export {
403
515
  push_default as default
404
516
  };
405
- //# sourceMappingURL=push-P6CKRYT7.js.map
517
+ //# sourceMappingURL=push-OL7562HM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/push.ts","../src/utils/ir/export.ts"],"sourcesContent":["import { access, mkdir, rm, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { ensureConfig } from \"@/utils/fs\";\nimport { generateTypes } from \"@/utils/codegen\";\nimport { readAgentManifest, computePushHash } from \"@/utils/manifest\";\nimport type { AgentManifestV3 } from \"@/utils/manifest\";\nimport { requireAuth } from \"@/utils/auth\";\nimport { runInitialDeploy } from \"@/utils/deploy\";\nimport {\n type ProjectAgentState,\n type ProjectState,\n readProjectState,\n writeProjectState,\n} from \"@/utils/project-state\";\nimport { validateCompiledIR } from \"@/utils/validate\";\nimport { materializeRuntime, readLocalAgentNames } from \"@/utils/runtime\";\nimport { resolveProvider } from \"@/utils/providers\";\nimport { exportCompiledIrForDebug } from \"@/utils/ir/export\";\nimport {\n promptDeployTarget,\n showKalpCloudWaitlist,\n} from \"@/utils/deploy-target\";\nimport { loadProjectConfig } from \"@/utils/project-config\";\nimport {\n collectMcpSecretRequirements,\n type KalpProjectConfig,\n} from \"@kalphq/sdk\";\n\nconst LOGO = \"🦋\";\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n return `${(bytes / 1024).toFixed(1)} KB`;\n}\n\nfunction createInitialState(): ProjectState {\n return {\n workerUrl: null,\n deployedAt: null,\n accountId: null,\n studioCredentialsFingerprint: null,\n serviceKeyFingerprint: null,\n agents: {},\n };\n}\n\nfunction ensureAgentState(\n state: ProjectState,\n agentName: string,\n localPath: string,\n): ProjectAgentState {\n const existing = state.agents[agentName];\n if (existing) {\n existing.localPath = localPath;\n return existing;\n }\n\n const created: ProjectAgentState = {\n currentHash: null,\n currentVersion: 0,\n lastLocalHash: null,\n lastRemoteHash: null,\n lastPushedAt: null,\n localPath,\n workerUrl: state.workerUrl\n ? `${state.workerUrl.replace(/\\/$/, \"\")}/a/${agentName}`\n : null,\n };\n state.agents[agentName] = created;\n return created;\n}\n\ntype PushTarget = \"local\" | \"remote\";\n\ninterface PushResult {\n pushed: number;\n skipped: number;\n failed: number;\n}\n\ninterface RemoteAgentIndexEntry {\n name: string;\n hash: string;\n version: string | null;\n versionNumber: number | null;\n updatedAt: string;\n workerUrl: string | null;\n label?: string;\n tags?: string[];\n}\n\ninterface PruneResult {\n removedAgents: string[];\n deletedKeys: number;\n}\n\nasync function readRemoteAgentsIndex(\n cwd: string,\n wranglerConfigPath: string,\n): Promise<RemoteAgentIndexEntry[]> {\n const provider = resolveProvider();\n const output = await provider\n .getValue({\n cwd,\n configPath: wranglerConfigPath,\n key: \"agents:index\",\n })\n .catch(() => null);\n if (!output) return [];\n try {\n const parsed = JSON.parse(output) as unknown;\n if (!Array.isArray(parsed)) return [];\n return parsed as RemoteAgentIndexEntry[];\n } catch {\n return [];\n }\n}\n\nasync function writeRemoteAgentsIndex(\n cwd: string,\n wranglerConfigPath: string,\n entries: RemoteAgentIndexEntry[],\n): Promise<void> {\n const path = join(cwd, \".kalp\", \"agents-index.json\");\n await writeFile(path, JSON.stringify(entries, null, 2), \"utf-8\");\n const provider = resolveProvider();\n try {\n await provider.putManifest({\n cwd,\n configPath: wranglerConfigPath,\n key: \"agents:index\",\n jsonPath: path,\n });\n } finally {\n await rm(path, { force: true });\n }\n}\n\nasync function pruneStaleRemoteAgents(params: {\n cwd: string;\n wranglerConfigPath: string;\n remoteEntries: RemoteAgentIndexEntry[];\n localAgentNames: string[];\n}): Promise<PruneResult> {\n const { cwd, wranglerConfigPath, remoteEntries, localAgentNames } = params;\n const localSet = new Set(localAgentNames);\n const staleEntries = remoteEntries.filter(\n (entry) => !localSet.has(entry.name),\n );\n\n if (staleEntries.length === 0) {\n return { removedAgents: [], deletedKeys: 0 };\n }\n\n const preview = staleEntries\n .slice(0, 3)\n .map((entry) => entry.name)\n .join(\", \");\n const suffix =\n staleEntries.length > 3 ? ` and ${staleEntries.length - 3} more` : \"\";\n const confirmation = await p.confirm({\n message: `Found ${staleEntries.length} stale remote agents that no longer exist locally (e.g., ${pc.cyan(preview)}${suffix}). Do you want to prune them from the remote runtime?`,\n initialValue: true,\n });\n\n if (p.isCancel(confirmation)) {\n p.outro(\"Cancelled\");\n process.exit(0);\n }\n\n if (!confirmation) {\n return { removedAgents: [], deletedKeys: 0 };\n }\n\n const provider = resolveProvider();\n let deletedKeys = 0;\n\n for (const entry of staleEntries) {\n const latestKey = `${entry.name}:latest`;\n const latestHash = await provider\n .getValue({ cwd, configPath: wranglerConfigPath, key: latestKey })\n .catch(() => null);\n\n const hashes = new Set<string>();\n if (entry.hash) hashes.add(entry.hash);\n if (latestHash) hashes.add(latestHash);\n\n const latestDeleted = await provider\n .deleteValue({\n cwd,\n configPath: wranglerConfigPath,\n key: latestKey,\n })\n .then(() => true)\n .catch(() => false);\n if (latestDeleted) deletedKeys += 1;\n\n for (const hash of hashes) {\n const artifactKeys = await provider\n .listKeys({\n cwd,\n configPath: wranglerConfigPath,\n prefix: `${entry.name}:${hash}:`,\n })\n .catch(() => []);\n\n for (const artifactKey of artifactKeys) {\n const deleted = await provider\n .deleteValue({\n cwd,\n configPath: wranglerConfigPath,\n key: artifactKey.name,\n })\n .then(() => true)\n .catch(() => false);\n if (deleted) deletedKeys += 1;\n }\n }\n }\n\n const filtered = remoteEntries.filter((entry) => localSet.has(entry.name));\n await writeRemoteAgentsIndex(cwd, wranglerConfigPath, filtered);\n\n return {\n removedAgents: staleEntries\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b)),\n deletedKeys,\n };\n}\n\nasync function mergeRemoteAgentIndexEntry(params: {\n cwd: string;\n wranglerConfigPath: string;\n entry: RemoteAgentIndexEntry;\n}): Promise<void> {\n const { cwd, wranglerConfigPath, entry } = params;\n const currentIndex = await readRemoteAgentsIndex(cwd, wranglerConfigPath);\n const merged = [\n ...currentIndex.filter((existing) => existing.name !== entry.name),\n entry,\n ].sort((a, b) => a.name.localeCompare(b.name));\n\n await writeRemoteAgentsIndex(cwd, wranglerConfigPath, merged);\n}\n\nasync function pushRemoteManifest(params: {\n cwd: string;\n wranglerConfigPath: string;\n agentName: string;\n hash: string;\n manifest: AgentManifestV3;\n}): Promise<void> {\n const { cwd, wranglerConfigPath, agentName, hash, manifest } = params;\n const latestKey = `${agentName}:latest`;\n const artifactsDir = join(cwd, \".kalp\", `${agentName}-${hash}-artifacts`);\n await mkdir(artifactsDir, { recursive: true });\n\n const artifactManifestPath = join(artifactsDir, \"artifact-manifest.json\");\n const semanticIrPath = join(artifactsDir, \"semantic-ir.json\");\n const schemasPath = join(artifactsDir, \"schemas.json\");\n const bundleManifestPath = join(artifactsDir, \"bundle-manifest.json\");\n\n await writeFile(\n artifactManifestPath,\n JSON.stringify(manifest.artifactManifest),\n \"utf-8\",\n );\n await writeFile(semanticIrPath, JSON.stringify(manifest.semanticIr), \"utf-8\");\n await writeFile(schemasPath, JSON.stringify(manifest.schemas), \"utf-8\");\n await writeFile(\n bundleManifestPath,\n JSON.stringify(manifest.bundleManifest),\n \"utf-8\",\n );\n\n const provider = resolveProvider();\n try {\n await provider.putManifest({\n cwd,\n configPath: wranglerConfigPath,\n key: `${agentName}:${hash}:artifact-manifest`,\n jsonPath: artifactManifestPath,\n });\n await provider.putManifest({\n cwd,\n configPath: wranglerConfigPath,\n key: `${agentName}:${hash}:semantic-ir`,\n jsonPath: semanticIrPath,\n });\n await provider.putManifest({\n cwd,\n configPath: wranglerConfigPath,\n key: `${agentName}:${hash}:schemas`,\n jsonPath: schemasPath,\n });\n await provider.putManifest({\n cwd,\n configPath: wranglerConfigPath,\n key: `${agentName}:${hash}:bundle-manifest`,\n jsonPath: bundleManifestPath,\n });\n\n for (const [bundleHash, bundle] of Object.entries(manifest.bundles)) {\n await provider.putValue({\n cwd,\n configPath: wranglerConfigPath,\n key: `${agentName}:${hash}:bundle:${bundleHash}`,\n value: bundle.code,\n });\n }\n\n await provider.putValue({\n cwd,\n configPath: wranglerConfigPath,\n key: latestKey,\n value: hash,\n });\n } finally {\n await rm(artifactsDir, { recursive: true, force: true });\n }\n}\n\nexport default defineCommand({\n meta: { name: \"push\", description: \"Upload updated agents\" },\n args: {\n agent: {\n type: \"string\",\n alias: \"a\",\n description: \"Agent name to push\",\n required: false,\n },\n local: {\n type: \"boolean\",\n description: \"Update only local runtime snapshot and state\",\n required: false,\n default: false,\n },\n strictSecrets: {\n type: \"boolean\",\n description:\n \"Fail if required MCP secrets are missing from remote runtime\",\n required: false,\n default: false,\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n const target: PushTarget = args.local ? \"local\" : \"remote\";\n const isBulkPush = !args.agent;\n\n p.intro(`${LOGO} ${pc.bold(\"kalp push\")}`);\n\n await ensureConfig(cwd).catch(() => {\n p.log.error(`${pc.cyan(\"kalp.config.ts\")} not found`);\n process.exit(1);\n });\n await generateTypes(cwd);\n\n const availableAgents = await readLocalAgentNames(cwd);\n if (availableAgents.length === 0) {\n p.log.error(\"No local agents found in ./agents\");\n process.exit(1);\n }\n\n let selectedAgents: string[] = [];\n if (args.agent) {\n if (!availableAgents.includes(args.agent)) {\n p.log.error(`Agent ${pc.cyan(args.agent)} not found`);\n process.exit(1);\n }\n selectedAgents = [args.agent];\n } else {\n selectedAgents = availableAgents;\n }\n\n let state = (await readProjectState(cwd)) ?? createInitialState();\n let runtime = await materializeRuntime(cwd, { mode: target });\n\n if (target === \"remote\") {\n await requireAuth().catch(() => {\n p.log.error(\"Not authenticated. Run `kalp login` first.\");\n process.exit(1);\n });\n\n if (!state.workerUrl) {\n const target = await promptDeployTarget(\n \"No remote runtime detected yet. Where do you want to deploy?\",\n );\n if (!target) {\n p.outro(\"Cancelled\");\n return;\n }\n if (target === \"kalp-cloud\") {\n showKalpCloudWaitlist();\n p.outro(pc.green(\"Got it — you'll hear from us soon.\"));\n return;\n }\n const s = p.spinner();\n s.start(\"Running initial deploy\");\n const deploy = await runInitialDeploy(cwd);\n s.stop(\"Initial deploy completed\");\n state = (await readProjectState(cwd)) ?? createInitialState();\n state.workerUrl = deploy.workerUrl;\n state.accountId = deploy.accountId;\n state.deployedAt = new Date().toISOString();\n }\n\n runtime = await materializeRuntime(cwd, { mode: \"remote\" });\n\n // Validate MCP Secrets\n const { raw: config } = await loadProjectConfig(cwd);\n const requiredMcpSecrets = collectMcpSecretRequirements(\n config as unknown as KalpProjectConfig,\n );\n if (requiredMcpSecrets.length > 0) {\n const provider = resolveProvider();\n const remoteSecrets = await provider\n .listSecrets({ cwd, configPath: runtime.wranglerConfigPath })\n .catch(() => []);\n const remoteSecretNames = new Set(remoteSecrets.map((s) => s.name));\n const missing = requiredMcpSecrets.filter(\n (s) => !remoteSecretNames.has(s),\n );\n\n if (missing.length > 0) {\n p.log.warn(\n `${pc.yellow(\"⚠️ Missing MCP secrets detected in remote runtime:\")}\\n` +\n missing.map((m) => ` - ${pc.bold(m)}`).join(\"\\n\"),\n );\n if (args.strictSecrets) {\n p.log.error(\n pc.red(\n \"Push aborted due to missing required secrets (--strict-secrets is enabled).\",\n ),\n );\n process.exit(1);\n }\n p.log.info(\n pc.dim(\n \"Deployment will continue. You can add them later with `kalp secrets add`.\",\n ),\n );\n }\n }\n\n if (isBulkPush) {\n const currentIndex = await readRemoteAgentsIndex(\n cwd,\n runtime.wranglerConfigPath,\n );\n const prune = await pruneStaleRemoteAgents({\n cwd,\n wranglerConfigPath: runtime.wranglerConfigPath,\n remoteEntries: currentIndex,\n localAgentNames: availableAgents,\n });\n\n if (prune.removedAgents.length > 0) {\n p.log.info(\n `Pruned stale remote agents: ${pc.cyan(prune.removedAgents.join(\", \"))} ${pc.dim(`(${prune.deletedKeys} keys cleaned)`)}`,\n );\n }\n }\n }\n\n const spinner = p.spinner();\n const result: PushResult = { pushed: 0, skipped: 0, failed: 0 };\n const failures: string[] = [];\n\n for (const agentName of selectedAgents) {\n const agentPath = join(cwd, \"agents\", agentName, \"index.ts\");\n await access(agentPath).catch(() => {\n failures.push(`${agentName}: missing ${agentPath}`);\n });\n\n try {\n spinner.start(`Compiling ${pc.cyan(agentName)}`);\n const manifest = await readAgentManifest({ cwd, agentName });\n const hash = computePushHash(manifest);\n const validation = validateCompiledIR({\n agentName,\n manifest,\n hash,\n });\n if (!validation.ok) {\n const details = (validation.errors ?? []).join(\" | \");\n throw new Error(\n `validation failed (${validation.phase})${details ? `: ${details}` : \"\"}`,\n );\n }\n\n const agentState = ensureAgentState(state, agentName, agentPath);\n const previousHash =\n target === \"local\"\n ? agentState.lastLocalHash\n : agentState.lastRemoteHash;\n\n if (previousHash === hash) {\n result.skipped += 1;\n spinner.stop(`Skipped ${pc.cyan(agentName)} (no changes)`);\n continue;\n }\n\n if (target === \"remote\") {\n spinner.message(\n `Uploading agent ${pc.cyan(agentName)} to remote runtime`,\n );\n await pushRemoteManifest({\n cwd,\n wranglerConfigPath: runtime.wranglerConfigPath,\n agentName,\n hash,\n manifest,\n });\n }\n\n agentState.currentVersion = Math.max(0, agentState.currentVersion) + 1;\n agentState.currentHash = hash;\n agentState.lastPushedAt = new Date().toISOString();\n agentState.workerUrl =\n state.workerUrl && target === \"remote\"\n ? `${state.workerUrl.replace(/\\/$/, \"\")}/a/${agentName}`\n : agentState.workerUrl;\n\n if (target === \"local\") {\n agentState.lastLocalHash = hash;\n } else {\n agentState.lastRemoteHash = hash;\n agentState.lastLocalHash = hash;\n\n const nextEntry: RemoteAgentIndexEntry = {\n name: agentName,\n hash,\n version: `v${agentState.currentVersion}`,\n versionNumber: agentState.currentVersion,\n updatedAt: agentState.lastPushedAt,\n workerUrl: agentState.workerUrl,\n label: manifest.semanticIr.agent?.label,\n tags: manifest.semanticIr.agent?.tags,\n };\n await mergeRemoteAgentIndexEntry({\n cwd,\n wranglerConfigPath: runtime.wranglerConfigPath,\n entry: nextEntry,\n });\n }\n\n await exportCompiledIrForDebug({\n cwd,\n agentName,\n manifest,\n });\n const totalSize = Object.values(manifest.bundles).reduce(\n (sum, bundle) => sum + Buffer.byteLength(bundle.code),\n 0,\n );\n const handlerCount = Object.keys(manifest.bundles).length;\n spinner.stop(\n `${pc.bold(agentName)} pushed ${pc.dim(`(v${agentState.currentVersion})`)} · ${handlerCount} handlers · ${formatBytes(totalSize)}`,\n );\n result.pushed += 1;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n failures.push(`${agentName}: ${message}`);\n spinner.stop(`Failed ${pc.cyan(agentName)}`);\n result.failed += 1;\n }\n }\n\n await writeProjectState(cwd, state);\n await materializeRuntime(cwd, { mode: target });\n\n p.note(\n `Successfully pushed ${result.pushed} agents. ${result.skipped} omitted (no changes). ${result.failed} failed.`,\n target === \"local\" ? \"Local push\" : \"Remote push\",\n );\n\n\n if (failures.length > 0) {\n for (const failure of failures) {\n p.log.error(failure);\n }\n p.outro(`${LOGO} ${pc.red(\"Push completed with failures\")}`);\n process.exit(1);\n }\n\n p.outro(`${LOGO} ${pc.green(\"Push complete\")}`);\n },\n});\n","import { mkdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { AgentManifestV3 } from \"@/utils/manifest/types\";\n\nexport async function exportCompiledIrForDebug(params: {\n cwd: string;\n agentName: string;\n manifest: AgentManifestV3;\n}): Promise<string> {\n const { cwd, agentName, manifest } = params;\n const outDir = join(cwd, \".kalp\", \"exports\", agentName, \"artifacts\");\n const bundlesDir = join(outDir, \"targets\", \"default\", \"bundles\");\n\n await mkdir(bundlesDir, { recursive: true });\n\n await writeFile(\n join(outDir, \"artifact-manifest.json\"),\n `${JSON.stringify(manifest.artifactManifest, null, 2)}\\n`,\n \"utf-8\",\n );\n await writeFile(\n join(outDir, \"semantic-ir.json\"),\n `${JSON.stringify(manifest.semanticIr, null, 2)}\\n`,\n \"utf-8\",\n );\n await writeFile(\n join(outDir, \"schemas.json\"),\n `${JSON.stringify(manifest.schemas, null, 2)}\\n`,\n \"utf-8\",\n );\n await writeFile(\n join(outDir, \"bundle-manifest.json\"),\n `${JSON.stringify(manifest.bundleManifest, null, 2)}\\n`,\n \"utf-8\",\n );\n\n for (const [bundleHash, bundle] of Object.entries(manifest.bundles)) {\n const fileName = bundle.file.split(\"/\").pop() ?? `${bundleHash}.js`;\n await writeFile(join(bundlesDir, fileName), bundle.code, \"utf-8\");\n }\n\n return outDir;\n}\n\n"],"mappings":"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","names":["mkdir","writeFile","join","join","writeFile","mkdir","target","spinner"]}
@@ -4,6 +4,9 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Kalp Studio</title>
7
+ <link rel="icon" type="image/x-icon" href="/studio/favicon.ico" />
8
+ <link rel="apple-touch-icon" href="/studio/logo192.png" />
9
+ <link rel="manifest" href="/studio/manifest.json" />
7
10
  <script type="module" crossorigin src="/studio/assets/index-ByIyj_1b.js"></script>
8
11
  <link rel="stylesheet" crossorigin href="/studio/assets/index-DhTweWW0.css">
9
12
  </head>
@@ -19,11 +19,11 @@ var secrets_default = defineCommand({
19
19
  }
20
20
  },
21
21
  subCommands: {
22
- list: () => import("./list-GZBBOFX5.js").then((r) => r.default),
23
- add: () => import("./add-YZSIMRPC.js").then((r) => r.default),
24
- delete: () => import("./delete-FIXMFFNZ.js").then((r) => r.default),
25
- sync: () => import("./sync-LTBH6DI5.js").then((r) => r.default),
26
- pull: () => import("./pull-V7QJBVNZ.js").then((r) => r.default)
22
+ list: () => import("./list-WHYV5JZ4.js").then((r) => r.default),
23
+ add: () => import("./add-5WUS5HGV.js").then((r) => r.default),
24
+ delete: () => import("./delete-IFVGULOA.js").then((r) => r.default),
25
+ sync: () => import("./sync-JJDODKMO.js").then((r) => r.default),
26
+ pull: () => import("./pull-CFDZS6VB.js").then((r) => r.default)
27
27
  },
28
28
  run({ args }) {
29
29
  if (!args.help) {
@@ -50,4 +50,4 @@ var secrets_default = defineCommand({
50
50
  export {
51
51
  secrets_default as default
52
52
  };
53
- //# sourceMappingURL=secrets-M43LLCTB.js.map
53
+ //# sourceMappingURL=secrets-BPESLXMK.js.map