@kalphq/cli 0.1.0 → 0.2.0

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 (92) hide show
  1. package/dist/{add-UCN5EAL3.js → add-KRHLYYTO.js} +10 -37
  2. package/dist/add-KRHLYYTO.js.map +1 -0
  3. package/dist/chunk-INB3LG6O.js +25 -0
  4. package/dist/chunk-INB3LG6O.js.map +1 -0
  5. package/dist/chunk-MMS3GWBG.js +50 -0
  6. package/dist/chunk-MMS3GWBG.js.map +1 -0
  7. package/dist/{create-PENWHZ26.js → create-7J5R6OVF.js} +44 -35
  8. package/dist/create-7J5R6OVF.js.map +1 -0
  9. package/dist/{delete-6MKUQ3XK.js → delete-47ZP6XRB.js} +10 -27
  10. package/dist/delete-47ZP6XRB.js.map +1 -0
  11. package/dist/index.js +10 -11
  12. package/dist/index.js.map +1 -1
  13. package/dist/{link-YCIA4JJ3.js → link-WZQSR2TM.js} +1 -2
  14. package/dist/{link-YCIA4JJ3.js.map → link-WZQSR2TM.js.map} +1 -1
  15. package/dist/{list-BOE33VSI.js → list-3ZQIFUOT.js} +1 -2
  16. package/dist/list-3ZQIFUOT.js.map +1 -0
  17. package/dist/{login-22HHVS52.js → login-JYPWGL6P.js} +1 -2
  18. package/dist/login-JYPWGL6P.js.map +1 -0
  19. package/dist/{logout-OJM3VAOF.js → logout-V67DZZXO.js} +1 -2
  20. package/dist/{logout-OJM3VAOF.js.map → logout-V67DZZXO.js.map} +1 -1
  21. package/dist/push-RBTBXCP7.js +205 -0
  22. package/dist/push-RBTBXCP7.js.map +1 -0
  23. package/dist/{secrets-SIK6J5AF.js → secrets-KFMVBKJQ.js} +8 -5
  24. package/dist/secrets-KFMVBKJQ.js.map +1 -0
  25. package/dist/sync-YFM5P3IS.js +120 -0
  26. package/dist/sync-YFM5P3IS.js.map +1 -0
  27. package/package.json +5 -5
  28. package/dist/acorn-I3UGQPDC.js +0 -3132
  29. package/dist/acorn-I3UGQPDC.js.map +0 -1
  30. package/dist/add-UCN5EAL3.js.map +0 -1
  31. package/dist/agents/b2b-sales/signals/.gitkeep +0 -0
  32. package/dist/agents/b2b-sales/webhooks/.gitkeep +0 -0
  33. package/dist/agents/customer-support/signals/.gitkeep +0 -0
  34. package/dist/agents/customer-support/webhooks/.gitkeep +0 -0
  35. package/dist/agents/financial-agent/signals/.gitkeep +0 -0
  36. package/dist/agents/financial-agent/webhooks/.gitkeep +0 -0
  37. package/dist/agents/minimal/signals/.gitkeep +0 -0
  38. package/dist/agents/minimal/webhooks/.gitkeep +0 -0
  39. package/dist/angular-5QCYWYQS.js +0 -3032
  40. package/dist/angular-5QCYWYQS.js.map +0 -1
  41. package/dist/babel-VVMWCS4G.js +0 -7298
  42. package/dist/babel-VVMWCS4G.js.map +0 -1
  43. package/dist/chunk-2H7UOFLK.js +0 -11
  44. package/dist/chunk-2H7UOFLK.js.map +0 -1
  45. package/dist/chunk-EAMMDUE3.js +0 -298
  46. package/dist/chunk-EAMMDUE3.js.map +0 -1
  47. package/dist/chunk-MECZEYSU.js +0 -19963
  48. package/dist/chunk-MECZEYSU.js.map +0 -1
  49. package/dist/chunk-TPTPZH2W.js +0 -40
  50. package/dist/chunk-TPTPZH2W.js.map +0 -1
  51. package/dist/create-PENWHZ26.js.map +0 -1
  52. package/dist/delete-6MKUQ3XK.js.map +0 -1
  53. package/dist/estree-3QNQSWX3.js +0 -4614
  54. package/dist/estree-3QNQSWX3.js.map +0 -1
  55. package/dist/flow-CCY52CGJ.js +0 -27548
  56. package/dist/flow-CCY52CGJ.js.map +0 -1
  57. package/dist/glimmer-WEH5BTZ2.js +0 -2896
  58. package/dist/glimmer-WEH5BTZ2.js.map +0 -1
  59. package/dist/graphql-UERTLN2S.js +0 -1268
  60. package/dist/graphql-UERTLN2S.js.map +0 -1
  61. package/dist/html-2G7A573F.js +0 -2928
  62. package/dist/html-2G7A573F.js.map +0 -1
  63. package/dist/init-WOEW2QED.js +0 -73
  64. package/dist/init-WOEW2QED.js.map +0 -1
  65. package/dist/list-BOE33VSI.js.map +0 -1
  66. package/dist/login-22HHVS52.js.map +0 -1
  67. package/dist/markdown-XILCBMG4.js +0 -3553
  68. package/dist/markdown-XILCBMG4.js.map +0 -1
  69. package/dist/meriyah-THC5AUEQ.js +0 -2686
  70. package/dist/meriyah-THC5AUEQ.js.map +0 -1
  71. package/dist/migrate-GA7EHSDG.js +0 -80
  72. package/dist/migrate-GA7EHSDG.js.map +0 -1
  73. package/dist/postcss-WBGWHY5F.js +0 -5082
  74. package/dist/postcss-WBGWHY5F.js.map +0 -1
  75. package/dist/push-2B4NWFGC.js +0 -81
  76. package/dist/push-2B4NWFGC.js.map +0 -1
  77. package/dist/secrets-SIK6J5AF.js.map +0 -1
  78. package/dist/templates/agents/b2b-sales/signals/.gitkeep +0 -0
  79. package/dist/templates/agents/b2b-sales/webhooks/.gitkeep +0 -0
  80. package/dist/templates/agents/customer-support/signals/.gitkeep +0 -0
  81. package/dist/templates/agents/customer-support/webhooks/.gitkeep +0 -0
  82. package/dist/templates/agents/financial-agent/signals/.gitkeep +0 -0
  83. package/dist/templates/agents/financial-agent/webhooks/.gitkeep +0 -0
  84. package/dist/templates/agents/minimal/signals/.gitkeep +0 -0
  85. package/dist/templates/agents/minimal/webhooks/.gitkeep +0 -0
  86. package/dist/typescript-NS3CY6IL.js +0 -13205
  87. package/dist/typescript-NS3CY6IL.js.map +0 -1
  88. package/dist/yaml-2RE4A77K.js +0 -4226
  89. package/dist/yaml-2RE4A77K.js.map +0 -1
  90. package/templates/project/meta/snapshot.json +0 -1
  91. package/templates/project/package.json +0 -16
  92. package/templates/project/tsconfig.json +0 -14
@@ -0,0 +1,205 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ ensureConfig
4
+ } from "./chunk-INB3LG6O.js";
5
+
6
+ // src/commands/push.ts
7
+ import { access as access2 } from "fs/promises";
8
+ import { join as join3 } from "path";
9
+ import { defineCommand } from "citty";
10
+ import * as p from "@clack/prompts";
11
+ import pc from "picocolors";
12
+
13
+ // src/utils/manifest/index.ts
14
+ import { access } from "fs/promises";
15
+ import { join as join2 } from "path";
16
+ import { compileAgent } from "@kalphq/compiler";
17
+
18
+ // src/utils/manifest/build.ts
19
+ import { existsSync } from "fs";
20
+ import { mkdtemp, readFile, rm } from "fs/promises";
21
+ import { basename, join, resolve } from "path";
22
+ import { pathToFileURL } from "url";
23
+ import { build } from "esbuild";
24
+ async function getHash(payload) {
25
+ const { createHash: createHash2 } = await import("crypto");
26
+ return createHash2("sha256").update(payload).digest("hex");
27
+ }
28
+ async function loadAgentModule(agentPath, cwd) {
29
+ const tempDir = await mkdtemp(join(cwd, ".kalp-temp-"));
30
+ const outFile = join(tempDir, "agent.manifest.mjs");
31
+ await build({
32
+ entryPoints: [agentPath],
33
+ outfile: outFile,
34
+ bundle: true,
35
+ format: "esm",
36
+ platform: "node",
37
+ target: "node18",
38
+ logLevel: "silent",
39
+ packages: "external",
40
+ plugins: [
41
+ {
42
+ name: "relative-js-to-ts",
43
+ setup(buildCtx) {
44
+ buildCtx.onResolve({ filter: /^\.\/.*\.js$/ }, (args) => {
45
+ const resolved = resolve(args.resolveDir, args.path);
46
+ if (existsSync(resolved)) {
47
+ return { path: resolved };
48
+ }
49
+ const tsPath = resolved.replace(/\.js$/, ".ts");
50
+ if (existsSync(tsPath)) {
51
+ return { path: tsPath };
52
+ }
53
+ const tsxPath = resolved.replace(/\.js$/, ".tsx");
54
+ if (existsSync(tsxPath)) {
55
+ return { path: tsxPath };
56
+ }
57
+ return null;
58
+ });
59
+ }
60
+ },
61
+ {
62
+ name: "tsconfig-paths",
63
+ setup(buildCtx) {
64
+ buildCtx.onResolve({ filter: /^@\// }, (args) => {
65
+ const withoutPrefix = args.path.replace(/^@\//, "");
66
+ const resolved = resolve(cwd, withoutPrefix);
67
+ if (existsSync(resolved)) {
68
+ return { path: resolved };
69
+ }
70
+ const tsPath = resolved + ".ts";
71
+ if (existsSync(tsPath)) {
72
+ return { path: tsPath };
73
+ }
74
+ const tsxPath = resolved + ".tsx";
75
+ if (existsSync(tsxPath)) {
76
+ return { path: tsxPath };
77
+ }
78
+ const indexTsPath = join(resolved, "index.ts");
79
+ if (existsSync(indexTsPath)) {
80
+ return { path: indexTsPath };
81
+ }
82
+ return null;
83
+ });
84
+ }
85
+ }
86
+ ]
87
+ });
88
+ const loaded = await import(`${pathToFileURL(outFile).href}?t=${Date.now()}`);
89
+ const bundledCode = await readFile(outFile, "utf-8");
90
+ const codeHash = await getHash(bundledCode);
91
+ return {
92
+ agent: loaded.default,
93
+ entry: basename(outFile),
94
+ tempDir,
95
+ codeHash
96
+ };
97
+ }
98
+ async function cleanupTempDir(tempDir) {
99
+ await rm(tempDir, { recursive: true, force: true });
100
+ }
101
+
102
+ // src/utils/ir/hashIR.ts
103
+ import { createHash } from "crypto";
104
+ function getIRHash(ir) {
105
+ return createHash("sha256").update(JSON.stringify(ir)).digest("hex");
106
+ }
107
+
108
+ // src/utils/manifest/index.ts
109
+ async function readAgentManifest(params) {
110
+ const { cwd, agentName } = params;
111
+ const agentPath = join2(cwd, "agents", agentName, "index.ts");
112
+ await access(agentPath);
113
+ let tempDir;
114
+ try {
115
+ const loaded = await loadAgentModule(agentPath, cwd);
116
+ tempDir = loaded.tempDir;
117
+ const ir = await compileAgent(loaded.agent);
118
+ return {
119
+ format: "kalp-agent-manifest",
120
+ schemaVersion: 2,
121
+ codeHash: loaded.codeHash,
122
+ ir,
123
+ bundle: {
124
+ entry: loaded.entry,
125
+ hash: loaded.codeHash
126
+ },
127
+ metadata: {
128
+ generatedAt: (/* @__PURE__ */ new Date()).toISOString()
129
+ }
130
+ };
131
+ } finally {
132
+ if (tempDir) {
133
+ await cleanupTempDir(tempDir);
134
+ }
135
+ }
136
+ }
137
+
138
+ // src/commands/push.ts
139
+ var LOGO = "\u{1F98B}";
140
+ var CLOUD_API = process.env.KALP_CLOUD_URL || "http://localhost:3000";
141
+ var push_default = defineCommand({
142
+ meta: { name: "push", description: "Push agent to Kalp cloud" },
143
+ args: {
144
+ agent: {
145
+ type: "string",
146
+ alias: "a",
147
+ description: "Agent name to push",
148
+ required: false
149
+ }
150
+ },
151
+ async run({ args }) {
152
+ const cwd = process.cwd();
153
+ const agentName = args.agent;
154
+ p.intro(`${LOGO} ${pc.bold("kalp push")}`);
155
+ if (!agentName) {
156
+ p.log.error(`Missing required flag ${pc.cyan("-a <agent-name>")}`);
157
+ process.exit(1);
158
+ }
159
+ try {
160
+ await ensureConfig(cwd);
161
+ } catch {
162
+ p.log.error(`${pc.cyan("kalp.config.ts")} not found`);
163
+ process.exit(1);
164
+ }
165
+ const agentPath = join3(cwd, "agents", agentName, "index.ts");
166
+ try {
167
+ await access2(agentPath);
168
+ } catch {
169
+ p.log.error(`Agent ${pc.cyan(agentName)} not found`);
170
+ process.exit(1);
171
+ }
172
+ const s = p.spinner();
173
+ s.start(`Compiling ${pc.cyan(agentName)}`);
174
+ const manifest = await readAgentManifest({ cwd, agentName });
175
+ const hash = getIRHash(manifest.ir);
176
+ s.stop(`Compiled ${pc.cyan(agentName)}`);
177
+ s.start(`Pushing to cloud`);
178
+ const response = await fetch(`${CLOUD_API}/api/agents/push`, {
179
+ method: "POST",
180
+ headers: { "Content-Type": "application/json" },
181
+ body: JSON.stringify({
182
+ agentName,
183
+ ir: manifest.ir,
184
+ hash
185
+ })
186
+ });
187
+ if (!response.ok) {
188
+ s.stop(pc.red("Push failed"));
189
+ p.log.error(`Cloud error: ${response.status}`);
190
+ process.exit(1);
191
+ }
192
+ s.stop(pc.green("Pushed successfully"));
193
+ console.log("\n" + pc.dim("\u2500".repeat(50)));
194
+ console.log(pc.cyan("\u2714 deployed"));
195
+ console.log("");
196
+ console.log(`${pc.bold("agent:")} ${agentName}`);
197
+ console.log(`${pc.bold("hash:")} ${hash}`);
198
+ console.log(pc.dim("\u2500".repeat(50)) + "\n");
199
+ p.outro(`${LOGO} ${pc.green("Agent pushed to cloud")}`);
200
+ }
201
+ });
202
+ export {
203
+ push_default as default
204
+ };
205
+ //# sourceMappingURL=push-RBTBXCP7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/push.ts","../src/utils/manifest/index.ts","../src/utils/manifest/build.ts","../src/utils/ir/hashIR.ts"],"sourcesContent":["import { access } 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 { readAgentManifest, getIRHash } from \"@/utils/manifest\";\n\nconst LOGO = \"🦋\";\nconst CLOUD_API = process.env.KALP_CLOUD_URL || \"http://localhost:3000\";\n\nexport default defineCommand({\n meta: { name: \"push\", description: \"Push agent to Kalp cloud\" },\n args: {\n agent: {\n type: \"string\",\n alias: \"a\",\n description: \"Agent name to push\",\n required: false,\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n const agentName = args.agent;\n\n p.intro(`${LOGO} ${pc.bold(\"kalp push\")}`);\n\n if (!agentName) {\n p.log.error(`Missing required flag ${pc.cyan(\"-a <agent-name>\")}`);\n process.exit(1);\n }\n\n try {\n await ensureConfig(cwd);\n } catch {\n p.log.error(`${pc.cyan(\"kalp.config.ts\")} not found`);\n process.exit(1);\n }\n\n const agentPath = join(cwd, \"agents\", agentName, \"index.ts\");\n try {\n await access(agentPath);\n } catch {\n p.log.error(`Agent ${pc.cyan(agentName)} not found`);\n process.exit(1);\n }\n\n const s = p.spinner();\n s.start(`Compiling ${pc.cyan(agentName)}`);\n\n const manifest = await readAgentManifest({ cwd, agentName });\n const hash = getIRHash(manifest.ir);\n\n s.stop(`Compiled ${pc.cyan(agentName)}`);\n s.start(`Pushing to cloud`);\n\n const response = await fetch(`${CLOUD_API}/api/agents/push`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n agentName,\n ir: manifest.ir,\n hash,\n }),\n });\n\n if (!response.ok) {\n s.stop(pc.red(\"Push failed\"));\n p.log.error(`Cloud error: ${response.status}`);\n process.exit(1);\n }\n\n s.stop(pc.green(\"Pushed successfully\"));\n\n console.log(\"\\n\" + pc.dim(\"─\".repeat(50)));\n console.log(pc.cyan(\"✔ deployed\"));\n console.log(\"\");\n console.log(`${pc.bold(\"agent:\")} ${agentName}`);\n console.log(`${pc.bold(\"hash:\")} ${hash}`);\n console.log(pc.dim(\"─\".repeat(50)) + \"\\n\");\n\n p.outro(`${LOGO} ${pc.green(\"Agent pushed to cloud\")}`);\n },\n});\n","import { access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { compileAgent } from \"@kalphq/compiler\";\nimport { loadAgentModule, cleanupTempDir } from \"@/utils/manifest/build\";\nimport type { AgentManifestV2 } from \"@/utils/manifest/types\";\n\nexport type {\n AgentManifestV2,\n LoadedAgentModule,\n} from \"@/utils/manifest/types\";\n\nexport { asRecord, asString, asArray } from \"@/utils/manifest/types\";\n\nexport { loadAgentModule, cleanupTempDir } from \"@/utils/manifest/build\";\n\nexport { getManifestHash } from \"@/utils/manifest/hash\";\n\nexport { getIRHash } from \"@/utils/ir/hashIR\";\n\nexport async function readAgentManifest(params: {\n cwd: string;\n agentName: string;\n}): Promise<AgentManifestV2> {\n const { cwd, agentName } = params;\n const agentPath = join(cwd, \"agents\", agentName, \"index.ts\");\n await access(agentPath);\n\n let tempDir: string | undefined;\n\n try {\n const loaded = await loadAgentModule(agentPath, cwd);\n tempDir = loaded.tempDir;\n\n const ir = await compileAgent(loaded.agent);\n\n return {\n format: \"kalp-agent-manifest\",\n schemaVersion: 2,\n codeHash: loaded.codeHash,\n ir,\n bundle: {\n entry: loaded.entry,\n hash: loaded.codeHash,\n },\n metadata: {\n generatedAt: new Date().toISOString(),\n },\n };\n } finally {\n if (tempDir) {\n await cleanupTempDir(tempDir);\n }\n }\n}\n","import { existsSync } from \"node:fs\";\nimport { mkdtemp, readFile, rm } from \"node:fs/promises\";\nimport { basename, join, resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { build } from \"esbuild\";\nimport type { LoadedAgentModule } from \"@/utils/manifest/types\";\n\nasync function getHash(payload: string): Promise<string> {\n const { createHash } = await import(\"node:crypto\");\n return createHash(\"sha256\").update(payload).digest(\"hex\");\n}\n\nexport async function loadAgentModule(\n agentPath: string,\n cwd: string,\n): Promise<LoadedAgentModule> {\n const tempDir = await mkdtemp(join(cwd, \".kalp-temp-\"));\n const outFile = join(tempDir, \"agent.manifest.mjs\");\n\n await build({\n entryPoints: [agentPath],\n outfile: outFile,\n bundle: true,\n format: \"esm\",\n platform: \"node\",\n target: \"node18\",\n logLevel: \"silent\",\n packages: \"external\",\n plugins: [\n {\n name: \"relative-js-to-ts\",\n setup(buildCtx) {\n buildCtx.onResolve({ filter: /^\\.\\/.*\\.js$/ }, (args) => {\n const resolved = resolve(args.resolveDir, args.path);\n if (existsSync(resolved)) {\n return { path: resolved };\n }\n\n const tsPath = resolved.replace(/\\.js$/, \".ts\");\n if (existsSync(tsPath)) {\n return { path: tsPath };\n }\n\n const tsxPath = resolved.replace(/\\.js$/, \".tsx\");\n if (existsSync(tsxPath)) {\n return { path: tsxPath };\n }\n\n return null;\n });\n },\n },\n {\n name: \"tsconfig-paths\",\n setup(buildCtx) {\n buildCtx.onResolve({ filter: /^@\\// }, (args) => {\n const withoutPrefix = args.path.replace(/^@\\//, \"\");\n const resolved = resolve(cwd, withoutPrefix);\n\n if (existsSync(resolved)) {\n return { path: resolved };\n }\n\n const tsPath = resolved + \".ts\";\n if (existsSync(tsPath)) {\n return { path: tsPath };\n }\n\n const tsxPath = resolved + \".tsx\";\n if (existsSync(tsxPath)) {\n return { path: tsxPath };\n }\n\n const indexTsPath = join(resolved, \"index.ts\");\n if (existsSync(indexTsPath)) {\n return { path: indexTsPath };\n }\n\n return null;\n });\n },\n },\n ],\n });\n\n const loaded = (await import(\n `${pathToFileURL(outFile).href}?t=${Date.now()}`\n )) as { default?: unknown };\n\n const bundledCode = await readFile(outFile, \"utf-8\");\n const codeHash = await getHash(bundledCode);\n\n return {\n agent: loaded.default,\n entry: basename(outFile),\n tempDir,\n codeHash,\n };\n}\n\nexport async function cleanupTempDir(tempDir: string): Promise<void> {\n await rm(tempDir, { recursive: true, force: true });\n}\n","import type { IRGraph } from \"@kalphq/sdk\";\nimport { createHash } from \"crypto\";\n\nexport function getIRHash(ir: IRGraph): string {\n return createHash(\"sha256\")\n .update(JSON.stringify(ir))\n .digest(\"hex\");\n}\n"],"mappings":"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","names":["access","join","join","createHash","join","join","access"]}
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import "./chunk-2H7UOFLK.js";
3
2
 
4
3
  // src/commands/secrets/index.ts
5
4
  import { defineCommand } from "citty";
@@ -20,9 +19,10 @@ var secrets_default = defineCommand({
20
19
  }
21
20
  },
22
21
  subCommands: {
23
- list: () => import("./list-BOE33VSI.js").then((r) => r.default),
24
- add: () => import("./add-UCN5EAL3.js").then((r) => r.default),
25
- delete: () => import("./delete-6MKUQ3XK.js").then((r) => r.default)
22
+ list: () => import("./list-3ZQIFUOT.js").then((r) => r.default),
23
+ add: () => import("./add-KRHLYYTO.js").then((r) => r.default),
24
+ delete: () => import("./delete-47ZP6XRB.js").then((r) => r.default),
25
+ sync: () => import("./sync-YFM5P3IS.js").then((r) => r.default)
26
26
  },
27
27
  run({ args }) {
28
28
  if (!args.help) {
@@ -33,6 +33,9 @@ var secrets_default = defineCommand({
33
33
  p.log.message(` ${pc.cyan("list")} List secrets from Kalp Cloud`);
34
34
  p.log.message(` ${pc.cyan("add")} Add a secret to Kalp Cloud`);
35
35
  p.log.message(` ${pc.cyan("delete")} Delete a secret from Kalp Cloud`);
36
+ p.log.message(
37
+ ` ${pc.cyan("sync")} Sync secrets from Kalp Cloud to local config`
38
+ );
36
39
  p.log.message("");
37
40
  p.log.message(
38
41
  `Run ${pc.cyan("kalp secrets <subcommand> --help")} for more info.`
@@ -43,4 +46,4 @@ var secrets_default = defineCommand({
43
46
  export {
44
47
  secrets_default as default
45
48
  };
46
- //# sourceMappingURL=secrets-SIK6J5AF.js.map
49
+ //# sourceMappingURL=secrets-KFMVBKJQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/secrets/index.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: {\n name: \"secrets\",\n description: \"Manage Kalp Cloud secrets\",\n },\n args: {\n help: {\n type: \"boolean\",\n alias: \"h\",\n description: \"Show help\",\n default: false,\n },\n },\n subCommands: {\n list: () => import(\"./list\").then((r) => r.default),\n add: () => import(\"./add\").then((r) => r.default),\n delete: () => import(\"./delete\").then((r) => r.default),\n sync: () => import(\"./sync\").then((r) => r.default),\n },\n run({ args }) {\n if (!args.help) {\n return;\n }\n\n p.intro(`${LOGO} ${pc.bold(\"kalp secrets\")}`);\n p.log.message(pc.bold(\"Available subcommands:\"));\n p.log.message(` ${pc.cyan(\"list\")} List secrets from Kalp Cloud`);\n p.log.message(` ${pc.cyan(\"add\")} Add a secret to Kalp Cloud`);\n p.log.message(` ${pc.cyan(\"delete\")} Delete a secret from Kalp Cloud`);\n p.log.message(\n ` ${pc.cyan(\"sync\")} Sync secrets from Kalp Cloud to local config`,\n );\n p.log.message(\"\");\n p.log.message(\n `Run ${pc.cyan(\"kalp secrets <subcommand> --help\")} for more info.`,\n );\n p.outro(pc.dim(\"Done\"));\n },\n});\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AAEf,IAAM,OAAO;AAEb,IAAO,kBAAQ,cAAc;AAAA,EAC3B,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,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,oBAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAClD,KAAK,MAAM,OAAO,mBAAO,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAChD,QAAQ,MAAM,OAAO,sBAAU,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IACtD,MAAM,MAAM,OAAO,oBAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,EACpD;AAAA,EACA,IAAI,EAAE,KAAK,GAAG;AACZ,QAAI,CAAC,KAAK,MAAM;AACd;AAAA,IACF;AAEA,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,cAAc,CAAC,EAAE;AAC5C,IAAE,MAAI,QAAQ,GAAG,KAAK,wBAAwB,CAAC;AAC/C,IAAE,MAAI,QAAQ,KAAK,GAAG,KAAK,MAAM,CAAC,iCAAiC;AACnE,IAAE,MAAI,QAAQ,KAAK,GAAG,KAAK,KAAK,CAAC,gCAAgC;AACjE,IAAE,MAAI,QAAQ,KAAK,GAAG,KAAK,QAAQ,CAAC,kCAAkC;AACtE,IAAE,MAAI;AAAA,MACJ,KAAK,GAAG,KAAK,MAAM,CAAC;AAAA,IACtB;AACA,IAAE,MAAI,QAAQ,EAAE;AAChB,IAAE,MAAI;AAAA,MACJ,OAAO,GAAG,KAAK,kCAAkC,CAAC;AAAA,IACpD;AACA,IAAE,QAAM,GAAG,IAAI,MAAM,CAAC;AAAA,EACxB;AACF,CAAC;","names":[]}
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ generateTypes
4
+ } from "./chunk-MMS3GWBG.js";
5
+ import {
6
+ getAuthToken
7
+ } from "./chunk-6LLXGS2P.js";
8
+
9
+ // src/commands/secrets/sync.ts
10
+ import { defineCommand } from "citty";
11
+ import * as p from "@clack/prompts";
12
+ import pc from "picocolors";
13
+ import { readFile, writeFile } from "fs/promises";
14
+ import { join } from "path";
15
+ var LOGO = "\u{1F98B}";
16
+ async function fetchSecretsFromCloud() {
17
+ console.log(pc.dim("[Simulated] Fetching secrets from Kalp Cloud..."));
18
+ return [
19
+ { key: "STRIPE_SECRET_KEY", createdAt: "2024-01-15T10:30:00Z" },
20
+ { key: "OPENAI_API_KEY", createdAt: "2024-01-16T14:20:00Z" }
21
+ ];
22
+ }
23
+ async function replaceSecretsInConfig(cwd, secrets) {
24
+ const configPath = join(cwd, "kalp.config.ts");
25
+ let content;
26
+ try {
27
+ content = await readFile(configPath, "utf-8");
28
+ } catch {
29
+ content = `import { defineConfig } from "@kalphq/sdk";
30
+
31
+ export default defineConfig({
32
+ secrets: [],
33
+ });
34
+ `;
35
+ }
36
+ const secretsArray = secrets.length > 0 ? secrets.map((s) => `"${s}"`).join(", ") : "";
37
+ const newArray = `secrets: [${secretsArray}]`;
38
+ if (content.match(/secrets:\s*\[([^\]]*)\]/)) {
39
+ content = content.replace(/secrets:\s*\[([^\]]*)\]/, newArray);
40
+ } else {
41
+ content = content.replace(
42
+ /defineConfig\({/,
43
+ `defineConfig({
44
+ secrets: [${secretsArray}],`
45
+ );
46
+ }
47
+ await writeFile(configPath, content, "utf-8");
48
+ }
49
+ var sync_default = defineCommand({
50
+ meta: {
51
+ name: "sync",
52
+ description: "Sync secrets from Kalp Cloud to local config"
53
+ },
54
+ async run() {
55
+ const cwd = process.cwd();
56
+ p.intro(`${LOGO} ${pc.bold("kalp secrets sync")}`);
57
+ const token = await getAuthToken();
58
+ if (!token) {
59
+ p.log.error("Not authenticated. Run 'kalp login' first.");
60
+ process.exit(1);
61
+ }
62
+ const s = p.spinner();
63
+ try {
64
+ s.start("Fetching secrets from Kalp Cloud");
65
+ const cloudSecrets = await fetchSecretsFromCloud();
66
+ s.stop(`Found ${pc.cyan(String(cloudSecrets.length))} secrets in cloud`);
67
+ if (cloudSecrets.length === 0) {
68
+ p.log.warn("No secrets found in Kalp Cloud");
69
+ const shouldClear = await p.confirm({
70
+ message: "Clear local secrets config?",
71
+ initialValue: false
72
+ });
73
+ if (p.isCancel(shouldClear) || !shouldClear) {
74
+ p.outro("Cancelled");
75
+ return;
76
+ }
77
+ s.start("Clearing local secrets");
78
+ await replaceSecretsInConfig(cwd, []);
79
+ await generateTypes(cwd);
80
+ s.stop("Local secrets cleared");
81
+ p.outro("Done");
82
+ return;
83
+ }
84
+ p.log.info(pc.bold("Secrets to sync:"));
85
+ for (const secret of cloudSecrets) {
86
+ console.log(` ${pc.dim("\u2022")} ${pc.cyan(secret.key)}`);
87
+ }
88
+ const confirm2 = await p.confirm({
89
+ message: `Replace local secrets with ${cloudSecrets.length} secrets from cloud?`,
90
+ initialValue: true
91
+ });
92
+ if (p.isCancel(confirm2) || !confirm2) {
93
+ p.outro("Cancelled");
94
+ return;
95
+ }
96
+ s.start("Updating local config");
97
+ const secretKeys = cloudSecrets.map((s2) => s2.key);
98
+ await replaceSecretsInConfig(cwd, secretKeys);
99
+ s.stop("Config updated");
100
+ s.start("Regenerating types");
101
+ await generateTypes(cwd);
102
+ s.stop("Types regenerated");
103
+ p.log.success(pc.green(`Synced ${cloudSecrets.length} secrets`));
104
+ p.outro("Done");
105
+ } catch (error) {
106
+ s.stop("Sync failed");
107
+ p.log.error(
108
+ pc.red(
109
+ `Error: ${error instanceof Error ? error.message : String(error)}`
110
+ )
111
+ );
112
+ p.outro("Failed");
113
+ process.exit(1);
114
+ }
115
+ }
116
+ });
117
+ export {
118
+ sync_default as default
119
+ };
120
+ //# sourceMappingURL=sync-YFM5P3IS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/secrets/sync.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { getAuthToken } from \"@/utils/auth\";\nimport { generateTypes } from \"@/utils/codegen\";\n\nconst LOGO = \"🦋\";\n\ninterface SecretFromCloud {\n key: string;\n createdAt: string;\n}\n\nasync function fetchSecretsFromCloud(): Promise<SecretFromCloud[]> {\n // TODO: Implement real API call to Kalp Cloud\n console.log(pc.dim(\"[Simulated] Fetching secrets from Kalp Cloud...\"));\n // Simulated response - in real implementation, this would call the API\n return [\n { key: \"STRIPE_SECRET_KEY\", createdAt: \"2024-01-15T10:30:00Z\" },\n { key: \"OPENAI_API_KEY\", createdAt: \"2024-01-16T14:20:00Z\" },\n ];\n}\n\nasync function replaceSecretsInConfig(\n cwd: string,\n secrets: string[],\n): Promise<void> {\n const configPath = join(cwd, \"kalp.config.ts\");\n let content: string;\n\n try {\n content = await readFile(configPath, \"utf-8\");\n } catch {\n // Create new config if doesn't exist\n content = `import { defineConfig } from \"@kalphq/sdk\";\n\nexport default defineConfig({\n secrets: [],\n});\n`;\n }\n\n // Replace secrets array with new ones\n const secretsArray =\n secrets.length > 0 ? secrets.map((s) => `\"${s}\"`).join(\", \") : \"\";\n\n const newArray = `secrets: [${secretsArray}]`;\n\n // Check if config has secrets array\n if (content.match(/secrets:\\s*\\[([^\\]]*)\\]/)) {\n content = content.replace(/secrets:\\s*\\[([^\\]]*)\\]/, newArray);\n } else {\n // Add secrets array if not present\n content = content.replace(\n /defineConfig\\({/,\n `defineConfig({\\n secrets: [${secretsArray}],`,\n );\n }\n\n await writeFile(configPath, content, \"utf-8\");\n}\n\nexport default defineCommand({\n meta: {\n name: \"sync\",\n description: \"Sync secrets from Kalp Cloud to local config\",\n },\n async run() {\n const cwd = process.cwd();\n\n p.intro(`${LOGO} ${pc.bold(\"kalp secrets sync\")}`);\n\n // Check authentication\n const token = await getAuthToken();\n if (!token) {\n p.log.error(\"Not authenticated. Run 'kalp login' first.\");\n process.exit(1);\n }\n\n const s = p.spinner();\n\n try {\n s.start(\"Fetching secrets from Kalp Cloud\");\n const cloudSecrets = await fetchSecretsFromCloud();\n s.stop(`Found ${pc.cyan(String(cloudSecrets.length))} secrets in cloud`);\n\n if (cloudSecrets.length === 0) {\n p.log.warn(\"No secrets found in Kalp Cloud\");\n\n const shouldClear = await p.confirm({\n message: \"Clear local secrets config?\",\n initialValue: false,\n });\n\n if (p.isCancel(shouldClear) || !shouldClear) {\n p.outro(\"Cancelled\");\n return;\n }\n\n s.start(\"Clearing local secrets\");\n await replaceSecretsInConfig(cwd, []);\n await generateTypes(cwd);\n s.stop(\"Local secrets cleared\");\n p.outro(\"Done\");\n return;\n }\n\n // Show secrets that will be synced\n p.log.info(pc.bold(\"Secrets to sync:\"));\n for (const secret of cloudSecrets) {\n console.log(` ${pc.dim(\"•\")} ${pc.cyan(secret.key)}`);\n }\n\n const confirm = await p.confirm({\n message: `Replace local secrets with ${cloudSecrets.length} secrets from cloud?`,\n initialValue: true,\n });\n\n if (p.isCancel(confirm) || !confirm) {\n p.outro(\"Cancelled\");\n return;\n }\n\n s.start(\"Updating local config\");\n const secretKeys = cloudSecrets.map((s) => s.key);\n await replaceSecretsInConfig(cwd, secretKeys);\n s.stop(\"Config updated\");\n\n s.start(\"Regenerating types\");\n await generateTypes(cwd);\n s.stop(\"Types regenerated\");\n\n p.log.success(pc.green(`Synced ${cloudSecrets.length} secrets`));\n p.outro(\"Done\");\n } catch (error) {\n s.stop(\"Sync failed\");\n p.log.error(\n pc.red(\n `Error: ${error instanceof Error ? error.message : String(error)}`,\n ),\n );\n p.outro(\"Failed\");\n process.exit(1);\n }\n },\n});\n"],"mappings":"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","names":["confirm","s"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kalphq/cli",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Zero-config CLI for deploying Kalp agents",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -10,8 +10,7 @@
10
10
  },
11
11
  "main": "./dist/index.js",
12
12
  "files": [
13
- "dist",
14
- "templates"
13
+ "dist"
15
14
  ],
16
15
  "publishConfig": {
17
16
  "access": "public"
@@ -23,8 +22,9 @@
23
22
  "esbuild": "0.25.0",
24
23
  "picocolors": "1.1.1",
25
24
  "zod": "3.25.76",
26
- "zod-to-json-schema": "3.25.2",
27
- "@kalphq/sdk": "0.2.0"
25
+ "@kalphq/project": "0.1.1",
26
+ "@kalphq/compiler": "0.1.0",
27
+ "@kalphq/sdk": "0.3.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "^22.15.3",