@kalphq/cli 0.0.2 → 0.1.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 (93) hide show
  1. package/dist/acorn-I3UGQPDC.js +3132 -0
  2. package/dist/acorn-I3UGQPDC.js.map +1 -0
  3. package/dist/add-UCN5EAL3.js +165 -0
  4. package/dist/add-UCN5EAL3.js.map +1 -0
  5. package/dist/angular-5QCYWYQS.js +3032 -0
  6. package/dist/angular-5QCYWYQS.js.map +1 -0
  7. package/dist/babel-VVMWCS4G.js +7298 -0
  8. package/dist/babel-VVMWCS4G.js.map +1 -0
  9. package/dist/chunk-2H7UOFLK.js +11 -0
  10. package/dist/chunk-2H7UOFLK.js.map +1 -0
  11. package/dist/chunk-6LLXGS2P.js +25 -0
  12. package/dist/chunk-6LLXGS2P.js.map +1 -0
  13. package/dist/chunk-EAMMDUE3.js +298 -0
  14. package/dist/chunk-EAMMDUE3.js.map +1 -0
  15. package/dist/chunk-MECZEYSU.js +19963 -0
  16. package/dist/chunk-MECZEYSU.js.map +1 -0
  17. package/dist/chunk-TPTPZH2W.js +40 -0
  18. package/dist/chunk-TPTPZH2W.js.map +1 -0
  19. package/dist/create-PENWHZ26.js +73 -0
  20. package/dist/create-PENWHZ26.js.map +1 -0
  21. package/dist/delete-6MKUQ3XK.js +161 -0
  22. package/dist/delete-6MKUQ3XK.js.map +1 -0
  23. package/dist/estree-3QNQSWX3.js +4614 -0
  24. package/dist/estree-3QNQSWX3.js.map +1 -0
  25. package/dist/flow-CCY52CGJ.js +27548 -0
  26. package/dist/flow-CCY52CGJ.js.map +1 -0
  27. package/dist/glimmer-WEH5BTZ2.js +2896 -0
  28. package/dist/glimmer-WEH5BTZ2.js.map +1 -0
  29. package/dist/graphql-UERTLN2S.js +1268 -0
  30. package/dist/graphql-UERTLN2S.js.map +1 -0
  31. package/dist/html-2G7A573F.js +2928 -0
  32. package/dist/html-2G7A573F.js.map +1 -0
  33. package/dist/index.js +54 -3
  34. package/dist/index.js.map +1 -1
  35. package/dist/init-WOEW2QED.js +73 -0
  36. package/dist/init-WOEW2QED.js.map +1 -0
  37. package/dist/link-YCIA4JJ3.js +37 -0
  38. package/dist/link-YCIA4JJ3.js.map +1 -0
  39. package/dist/list-BOE33VSI.js +120 -0
  40. package/dist/list-BOE33VSI.js.map +1 -0
  41. package/dist/login-22HHVS52.js +39 -0
  42. package/dist/login-22HHVS52.js.map +1 -0
  43. package/dist/logout-OJM3VAOF.js +32 -0
  44. package/dist/logout-OJM3VAOF.js.map +1 -0
  45. package/dist/markdown-XILCBMG4.js +3553 -0
  46. package/dist/markdown-XILCBMG4.js.map +1 -0
  47. package/dist/meriyah-THC5AUEQ.js +2686 -0
  48. package/dist/meriyah-THC5AUEQ.js.map +1 -0
  49. package/dist/migrate-GA7EHSDG.js +80 -0
  50. package/dist/migrate-GA7EHSDG.js.map +1 -0
  51. package/dist/postcss-WBGWHY5F.js +5082 -0
  52. package/dist/postcss-WBGWHY5F.js.map +1 -0
  53. package/dist/push-2B4NWFGC.js +81 -0
  54. package/dist/push-2B4NWFGC.js.map +1 -0
  55. package/dist/secrets-SIK6J5AF.js +46 -0
  56. package/dist/secrets-SIK6J5AF.js.map +1 -0
  57. package/dist/typescript-NS3CY6IL.js +13205 -0
  58. package/dist/typescript-NS3CY6IL.js.map +1 -0
  59. package/dist/yaml-2RE4A77K.js +4226 -0
  60. package/dist/yaml-2RE4A77K.js.map +1 -0
  61. package/package.json +9 -9
  62. package/templates/project/meta/snapshot.json +1 -0
  63. package/templates/project/package.json +3 -0
  64. package/templates/project/tsconfig.json +1 -1
  65. package/dist/build-ZMN2247N.js +0 -121
  66. package/dist/build-ZMN2247N.js.map +0 -1
  67. package/dist/chunk-BO2MEQKM.js +0 -121
  68. package/dist/chunk-BO2MEQKM.js.map +0 -1
  69. package/dist/create-ZNKKOQLH.js +0 -118
  70. package/dist/create-ZNKKOQLH.js.map +0 -1
  71. package/dist/init-7FSWWKI5.js +0 -66
  72. package/dist/init-7FSWWKI5.js.map +0 -1
  73. package/templates/agents/b2b-sales/index.ts +0 -28
  74. package/templates/agents/b2b-sales/signals/.gitkeep +0 -0
  75. package/templates/agents/b2b-sales/steps/score-lead.ts +0 -24
  76. package/templates/agents/b2b-sales/tools/enrich-company.ts +0 -17
  77. package/templates/agents/b2b-sales/webhooks/.gitkeep +0 -0
  78. package/templates/agents/customer-support/index.ts +0 -28
  79. package/templates/agents/customer-support/signals/.gitkeep +0 -0
  80. package/templates/agents/customer-support/steps/classify-ticket.ts +0 -22
  81. package/templates/agents/customer-support/tools/search-kb.ts +0 -13
  82. package/templates/agents/customer-support/webhooks/.gitkeep +0 -0
  83. package/templates/agents/financial-agent/index.ts +0 -28
  84. package/templates/agents/financial-agent/signals/.gitkeep +0 -0
  85. package/templates/agents/financial-agent/steps/analyze-signal.ts +0 -26
  86. package/templates/agents/financial-agent/tools/fetch-market-data.ts +0 -13
  87. package/templates/agents/financial-agent/webhooks/.gitkeep +0 -0
  88. package/templates/agents/minimal/index.ts +0 -16
  89. package/templates/agents/minimal/signals/.gitkeep +0 -0
  90. package/templates/agents/minimal/steps/example-step.ts +0 -13
  91. package/templates/agents/minimal/tools/example-tool.ts +0 -13
  92. package/templates/agents/minimal/webhooks/.gitkeep +0 -0
  93. package/templates/project/meta/deployed.json +0 -1
package/dist/index.js CHANGED
@@ -2,16 +2,67 @@
2
2
 
3
3
  // src/index.ts
4
4
  import { defineCommand, runMain } from "citty";
5
+ import * as p from "@clack/prompts";
6
+ import pc from "picocolors";
7
+ var LOGO = "\u{1F98B}";
8
+ var COMMANDS = [
9
+ ["init", "Create a new Kalp project"],
10
+ ["create", "Add a new agent"],
11
+ ["migrate", "Migrate agent schema"],
12
+ ["push", "Push agent to Kalp"],
13
+ ["link", "Link project to Kalp cloud"],
14
+ ["secrets", "Manage secrets"],
15
+ ["login", "Authenticate with Kalp"],
16
+ ["logout", "Sign out from Kalp"]
17
+ ];
18
+ function printHelp() {
19
+ p.log.info(`${pc.bold("Usage")}: kalp <command> [options]`);
20
+ console.log("");
21
+ p.log.info(pc.bold("Commands"));
22
+ for (const [name, desc] of COMMANDS) {
23
+ console.log(` ${pc.cyan(name.padEnd(10))}${desc}`);
24
+ }
25
+ console.log("");
26
+ p.log.info(`Run ${pc.cyan("kalp <command> --help")} for more info.`);
27
+ }
5
28
  var main = defineCommand({
6
29
  meta: {
7
30
  name: "kalp",
8
31
  version: "0.0.1",
9
32
  description: "\u{1F98B} Zero-config agent infrastructure"
10
33
  },
34
+ args: {
35
+ help: {
36
+ type: "boolean",
37
+ alias: "h",
38
+ description: "Show help",
39
+ default: false
40
+ }
41
+ },
11
42
  subCommands: {
12
- init: () => import("./init-7FSWWKI5.js").then((r) => r.default),
13
- create: () => import("./create-ZNKKOQLH.js").then((r) => r.default),
14
- build: () => import("./build-ZMN2247N.js").then((r) => r.default)
43
+ init: () => import("./init-WOEW2QED.js").then((r) => r.default),
44
+ create: () => import("./create-PENWHZ26.js").then((r) => r.default),
45
+ migrate: () => import("./migrate-GA7EHSDG.js").then((r) => r.default),
46
+ push: () => import("./push-2B4NWFGC.js").then((r) => r.default),
47
+ link: () => import("./link-YCIA4JJ3.js").then((r) => r.default),
48
+ secrets: () => import("./secrets-SIK6J5AF.js").then((r) => r.default),
49
+ login: () => import("./login-22HHVS52.js").then((r) => r.default),
50
+ logout: () => import("./logout-OJM3VAOF.js").then((r) => r.default)
51
+ },
52
+ run({ args }) {
53
+ const firstArg = process.argv[2];
54
+ if (args.help) {
55
+ p.intro(`${LOGO} ${pc.bold("kalp")}`);
56
+ printHelp();
57
+ p.outro("Happy coding \u{1F98B}");
58
+ return;
59
+ }
60
+ if (firstArg) {
61
+ return;
62
+ }
63
+ p.intro(`${LOGO} ${pc.bold("kalp")}`);
64
+ printHelp();
65
+ p.outro("Happy coding \u{1F98B}");
15
66
  }
16
67
  });
17
68
  runMain(main);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { defineCommand, runMain } from \"citty\";\n\nconst main = defineCommand({\n meta: {\n name: \"kalp\",\n version: \"0.0.1\",\n description: \"🦋 Zero-config agent infrastructure\",\n },\n subCommands: {\n init: () => import(\"./commands/init.js\").then((r) => r.default),\n create: () => import(\"./commands/create.js\").then((r) => r.default),\n build: () => import(\"./commands/build.js\").then((r) => r.default),\n },\n});\n\nrunMain(main);\n"],"mappings":";;;AAAA,SAAS,eAAe,eAAe;AAEvC,IAAM,OAAO,cAAc;AAAA,EACzB,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AAAA,EACA,aAAa;AAAA,IACX,MAAM,MAAM,OAAO,oBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC9D,QAAQ,MAAM,OAAO,sBAAsB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAClE,OAAO,MAAM,OAAO,qBAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,EAClE;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\";\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.js\").then((r) => r.default),\n create: () => import(\"./commands/create.js\").then((r) => r.default),\n migrate: () => import(\"./commands/migrate.js\").then((r) => r.default),\n push: () => import(\"./commands/push.js\").then((r) => r.default),\n link: () => import(\"./commands/link.js\").then((r) => r.default),\n secrets: () => import(\"./commands/secrets/index.js\").then((r) => r.default),\n login: () => import(\"./commands/login.js\").then((r) => r.default),\n logout: () => import(\"./commands/logout.js\").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,oBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC9D,QAAQ,MAAM,OAAO,sBAAsB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAClE,SAAS,MAAM,OAAO,uBAAuB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IACpE,MAAM,MAAM,OAAO,oBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC9D,MAAM,MAAM,OAAO,oBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC9D,SAAS,MAAM,OAAO,uBAA6B,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC1E,OAAO,MAAM,OAAO,qBAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAChE,QAAQ,MAAM,OAAO,sBAAsB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,EACpE;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":[]}
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ promptProjectName,
4
+ scaffoldProject
5
+ } from "./chunk-MECZEYSU.js";
6
+ import {
7
+ ensureDirectory,
8
+ installDeps,
9
+ isProjectInitialized
10
+ } from "./chunk-TPTPZH2W.js";
11
+ import "./chunk-2H7UOFLK.js";
12
+
13
+ // src/commands/init.ts
14
+ import { resolve, basename } from "path";
15
+ import { defineCommand } from "citty";
16
+ import * as p from "@clack/prompts";
17
+ import pc from "picocolors";
18
+ var LOGO = "\u{1F98B}";
19
+ var init_default = defineCommand({
20
+ meta: { name: "init", description: "Scaffold a new Kalp project" },
21
+ async run() {
22
+ const cwd = process.cwd();
23
+ p.intro(`${LOGO} ${pc.bold("kalp init")}`);
24
+ const projectInputName = await promptProjectName({
25
+ message: "What is the name of your project?",
26
+ placeholder: "my-agent",
27
+ allowCurrentDir: true
28
+ });
29
+ const isCurrentDir = projectInputName === ".";
30
+ const targetDir = isCurrentDir ? cwd : resolve(cwd, projectInputName);
31
+ const projectName = isCurrentDir ? basename(cwd) : projectInputName;
32
+ if (await isProjectInitialized(targetDir)) {
33
+ p.log.error(
34
+ `${pc.cyan("kalp.config.ts")} already exists in this directory. Run ${pc.cyan("kalp create")} to add an agent.`
35
+ );
36
+ process.exit(1);
37
+ }
38
+ if (!isCurrentDir) {
39
+ await ensureDirectory(targetDir);
40
+ }
41
+ const s = p.spinner();
42
+ s.start("Creating project structure");
43
+ await scaffoldProject({ projectName, targetDir });
44
+ s.stop("Project structure created");
45
+ s.start("Installing Dependencies");
46
+ try {
47
+ await installDeps(targetDir);
48
+ s.stop("Dependencies installed");
49
+ } catch (err) {
50
+ const msg = err instanceof Error ? err.message : String(err);
51
+ s.stop(pc.yellow("Install failed"));
52
+ p.log.warn(
53
+ `Run ${pc.cyan("npx --no-install nci")} (or ${pc.cyan("npm install")}) manually in ${isCurrentDir ? "this directory" : projectInputName + "/"}`
54
+ );
55
+ p.log.info(pc.dim(msg.split("\n")[0] ?? "Unknown error"));
56
+ }
57
+ p.log.success("Project scaffolded");
58
+ p.log.info(`${pc.cyan("agents/")} \u2014 your agents live here`);
59
+ console.log("");
60
+ p.log.info(pc.bold("Next"));
61
+ if (!isCurrentDir) {
62
+ p.log.info(`1. ${pc.cyan(`cd ${projectInputName}`)}`);
63
+ p.log.info(`2. ${pc.cyan("kalp create")} \u2014 add your first agent`);
64
+ } else {
65
+ p.log.info(`1. ${pc.cyan("kalp create")} \u2014 add your first agent`);
66
+ }
67
+ p.outro(pc.green("Kalp initialized successfully."));
68
+ }
69
+ });
70
+ export {
71
+ init_default as default
72
+ };
73
+ //# sourceMappingURL=init-WOEW2QED.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/init.ts"],"sourcesContent":["import { resolve, basename } from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { scaffoldProject } from \"../scaffold.js\";\nimport { promptProjectName } from \"../utils/ui.js\";\nimport {\n ensureDirectory,\n installDeps,\n isProjectInitialized,\n} from \"../utils/fs.js\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: { name: \"init\", description: \"Scaffold a new Kalp project\" },\n async run() {\n const cwd = process.cwd();\n\n p.intro(`${LOGO} ${pc.bold(\"kalp init\")}`);\n\n const projectInputName = await promptProjectName({\n message: \"What is the name of your project?\",\n placeholder: \"my-agent\",\n allowCurrentDir: true,\n });\n\n const isCurrentDir = projectInputName === \".\";\n const targetDir = isCurrentDir ? cwd : resolve(cwd, projectInputName);\n const projectName = isCurrentDir ? basename(cwd) : projectInputName;\n\n // ── Guard: already initialized ───────────────────────────────────────\n if (await isProjectInitialized(targetDir)) {\n p.log.error(\n `${pc.cyan(\"kalp.config.ts\")} already exists in this directory. Run ${pc.cyan(\"kalp create\")} to add an agent.`,\n );\n process.exit(1);\n }\n\n // ── Create target directory if needed ─────────────────────────────────\n if (!isCurrentDir) {\n await ensureDirectory(targetDir);\n }\n\n const s = p.spinner();\n\n s.start(\"Creating project structure\");\n await scaffoldProject({ projectName, targetDir });\n s.stop(\"Project structure created\");\n\n s.start(\"Installing Dependencies\");\n try {\n await installDeps(targetDir);\n s.stop(\"Dependencies installed\");\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n s.stop(pc.yellow(\"Install failed\"));\n p.log.warn(\n `Run ${pc.cyan(\"npx --no-install nci\")} (or ${pc.cyan(\"npm install\")}) manually in ${isCurrentDir ? \"this directory\" : projectInputName + \"/\"}`,\n );\n p.log.info(pc.dim(msg.split(\"\\n\")[0] ?? \"Unknown error\"));\n }\n\n p.log.success(\"Project scaffolded\");\n p.log.info(`${pc.cyan(\"agents/\")} — your agents live here`);\n console.log(\"\");\n p.log.info(pc.bold(\"Next\"));\n if (!isCurrentDir) {\n p.log.info(`1. ${pc.cyan(`cd ${projectInputName}`)}`);\n p.log.info(`2. ${pc.cyan(\"kalp create\")} — add your first agent`);\n } else {\n p.log.info(`1. ${pc.cyan(\"kalp create\")} — add your first agent`);\n }\n\n p.outro(pc.green(\"Kalp initialized successfully.\"));\n },\n});\n"],"mappings":";;;;;;;;;;;;;AAAA,SAAS,SAAS,gBAAgB;AAClC,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AASf,IAAM,OAAO;AAEb,IAAO,eAAQ,cAAc;AAAA,EAC3B,MAAM,EAAE,MAAM,QAAQ,aAAa,8BAA8B;AAAA,EACjE,MAAM,MAAM;AACV,UAAM,MAAM,QAAQ,IAAI;AAExB,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,WAAW,CAAC,EAAE;AAEzC,UAAM,mBAAmB,MAAM,kBAAkB;AAAA,MAC/C,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB;AAAA,IACnB,CAAC;AAED,UAAM,eAAe,qBAAqB;AAC1C,UAAM,YAAY,eAAe,MAAM,QAAQ,KAAK,gBAAgB;AACpE,UAAM,cAAc,eAAe,SAAS,GAAG,IAAI;AAGnD,QAAI,MAAM,qBAAqB,SAAS,GAAG;AACzC,MAAE,MAAI;AAAA,QACJ,GAAG,GAAG,KAAK,gBAAgB,CAAC,0CAA0C,GAAG,KAAK,aAAa,CAAC;AAAA,MAC9F;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAGA,QAAI,CAAC,cAAc;AACjB,YAAM,gBAAgB,SAAS;AAAA,IACjC;AAEA,UAAM,IAAM,UAAQ;AAEpB,MAAE,MAAM,4BAA4B;AACpC,UAAM,gBAAgB,EAAE,aAAa,UAAU,CAAC;AAChD,MAAE,KAAK,2BAA2B;AAElC,MAAE,MAAM,yBAAyB;AACjC,QAAI;AACF,YAAM,YAAY,SAAS;AAC3B,QAAE,KAAK,wBAAwB;AAAA,IACjC,SAAS,KAAK;AACZ,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,QAAE,KAAK,GAAG,OAAO,gBAAgB,CAAC;AAClC,MAAE,MAAI;AAAA,QACJ,OAAO,GAAG,KAAK,sBAAsB,CAAC,QAAQ,GAAG,KAAK,aAAa,CAAC,iBAAiB,eAAe,mBAAmB,mBAAmB,GAAG;AAAA,MAC/I;AACA,MAAE,MAAI,KAAK,GAAG,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC,KAAK,eAAe,CAAC;AAAA,IAC1D;AAEA,IAAE,MAAI,QAAQ,oBAAoB;AAClC,IAAE,MAAI,KAAK,GAAG,GAAG,KAAK,SAAS,CAAC,+BAA0B;AAC1D,YAAQ,IAAI,EAAE;AACd,IAAE,MAAI,KAAK,GAAG,KAAK,MAAM,CAAC;AAC1B,QAAI,CAAC,cAAc;AACjB,MAAE,MAAI,KAAK,MAAM,GAAG,KAAK,MAAM,gBAAgB,EAAE,CAAC,EAAE;AACpD,MAAE,MAAI,KAAK,MAAM,GAAG,KAAK,aAAa,CAAC,8BAAyB;AAAA,IAClE,OAAO;AACL,MAAE,MAAI,KAAK,MAAM,GAAG,KAAK,aAAa,CAAC,8BAAyB;AAAA,IAClE;AAEA,IAAE,QAAM,GAAG,MAAM,gCAAgC,CAAC;AAAA,EACpD;AACF,CAAC;","names":[]}
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+ import "./chunk-2H7UOFLK.js";
3
+
4
+ // src/commands/link.ts
5
+ import { defineCommand } from "citty";
6
+ import * as p from "@clack/prompts";
7
+ import pc from "picocolors";
8
+ import { mkdir, writeFile } from "fs/promises";
9
+ import { join } from "path";
10
+ var LOGO = "\u{1F98B}";
11
+ var link_default = defineCommand({
12
+ meta: { name: "link", description: "Link project to Kalp cloud" },
13
+ async run() {
14
+ const cwd = process.cwd();
15
+ p.intro(`${LOGO} ${pc.bold("kalp link")}`);
16
+ const s = p.spinner();
17
+ s.start("Linking to workspace");
18
+ const tempDir = join(cwd, ".temp");
19
+ await mkdir(tempDir, { recursive: true });
20
+ const workspaceConfig = {
21
+ workspaceId: "mock-workspace-id",
22
+ linkedAt: (/* @__PURE__ */ new Date()).toISOString(),
23
+ projectPath: cwd
24
+ };
25
+ await writeFile(
26
+ join(tempDir, "workspace.json"),
27
+ JSON.stringify(workspaceConfig, null, 2),
28
+ "utf-8"
29
+ );
30
+ s.stop("Workspace linked");
31
+ p.outro(pc.green("Project linked to Kalp Cloud"));
32
+ }
33
+ });
34
+ export {
35
+ link_default as default
36
+ };
37
+ //# sourceMappingURL=link-YCIA4JJ3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/link.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: { name: \"link\", description: \"Link project to Kalp cloud\" },\n async run() {\n const cwd = process.cwd();\n\n p.intro(`${LOGO} ${pc.bold(\"kalp link\")}`);\n\n const s = p.spinner();\n s.start(\"Linking to workspace\");\n\n // Create .temp directory and workspace config (project local)\n const tempDir = join(cwd, \".temp\");\n await mkdir(tempDir, { recursive: true });\n\n // TODO: Get actual workspace ID from API after login\n const workspaceConfig = {\n workspaceId: \"mock-workspace-id\",\n linkedAt: new Date().toISOString(),\n projectPath: cwd,\n };\n\n await writeFile(\n join(tempDir, \"workspace.json\"),\n JSON.stringify(workspaceConfig, null, 2),\n \"utf-8\",\n );\n\n s.stop(\"Workspace linked\");\n p.outro(pc.green(\"Project linked to Kalp Cloud\"));\n },\n});\n"],"mappings":";;;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AACf,SAAS,OAAO,iBAAiB;AACjC,SAAS,YAAY;AAErB,IAAM,OAAO;AAEb,IAAO,eAAQ,cAAc;AAAA,EAC3B,MAAM,EAAE,MAAM,QAAQ,aAAa,6BAA6B;AAAA,EAChE,MAAM,MAAM;AACV,UAAM,MAAM,QAAQ,IAAI;AAExB,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,WAAW,CAAC,EAAE;AAEzC,UAAM,IAAM,UAAQ;AACpB,MAAE,MAAM,sBAAsB;AAG9B,UAAM,UAAU,KAAK,KAAK,OAAO;AACjC,UAAM,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAGxC,UAAM,kBAAkB;AAAA,MACtB,aAAa;AAAA,MACb,WAAU,oBAAI,KAAK,GAAE,YAAY;AAAA,MACjC,aAAa;AAAA,IACf;AAEA,UAAM;AAAA,MACJ,KAAK,SAAS,gBAAgB;AAAA,MAC9B,KAAK,UAAU,iBAAiB,MAAM,CAAC;AAAA,MACvC;AAAA,IACF;AAEA,MAAE,KAAK,kBAAkB;AACzB,IAAE,QAAM,GAAG,MAAM,8BAA8B,CAAC;AAAA,EAClD;AACF,CAAC;","names":[]}
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ getAuthToken
4
+ } from "./chunk-6LLXGS2P.js";
5
+ import "./chunk-2H7UOFLK.js";
6
+
7
+ // src/commands/secrets/list.ts
8
+ import { defineCommand } from "citty";
9
+ import * as p from "@clack/prompts";
10
+ import pc from "picocolors";
11
+ import { readFile } from "fs/promises";
12
+ import { join } from "path";
13
+ var LOGO = "\u{1F98B}";
14
+ async function fetchSecretsFromCloud() {
15
+ return [
16
+ { key: "STRIPE_SECRET_KEY", createdAt: "2024-01-15T10:30:00Z" },
17
+ { key: "OPENAI_API_KEY", createdAt: "2024-01-16T14:22:00Z" }
18
+ ];
19
+ }
20
+ async function readLocalSecrets(cwd) {
21
+ try {
22
+ const configPath = join(cwd, "kalp.config.ts");
23
+ const content = await readFile(configPath, "utf-8");
24
+ const match = content.match(/secrets:\s*\[([^\]]*)\]/);
25
+ if (!match) return [];
26
+ const secretsStr = match[1];
27
+ const secrets = [];
28
+ const regex = /["']([^"']+)["']/g;
29
+ if (!secretsStr) {
30
+ return [];
31
+ }
32
+ let m;
33
+ while ((m = regex.exec(secretsStr)) !== null) {
34
+ if (m[1]) {
35
+ secrets.push(m[1]);
36
+ }
37
+ }
38
+ return secrets;
39
+ } catch {
40
+ return [];
41
+ }
42
+ }
43
+ var list_default = defineCommand({
44
+ meta: {
45
+ name: "list",
46
+ description: "List all secrets from Kalp Cloud"
47
+ },
48
+ args: {
49
+ help: {
50
+ type: "boolean",
51
+ alias: "h",
52
+ description: "Show help",
53
+ default: false
54
+ }
55
+ },
56
+ async run({ args }) {
57
+ const cwd = process.cwd();
58
+ if (args.help) {
59
+ p.log.info(`${pc.bold("Usage")}: kalp secrets list`);
60
+ return;
61
+ }
62
+ p.intro(`${LOGO} ${pc.bold("kalp secrets list")}`);
63
+ const token = await getAuthToken();
64
+ if (!token) {
65
+ p.log.warn(pc.yellow("Not logged in. Run `kalp login` first."));
66
+ p.outro("Authentication required");
67
+ return;
68
+ }
69
+ const s = p.spinner();
70
+ s.start("Fetching secrets from Kalp Cloud...");
71
+ try {
72
+ const [cloudSecrets, localSecrets] = await Promise.all([
73
+ fetchSecretsFromCloud(),
74
+ readLocalSecrets(cwd)
75
+ ]);
76
+ s.stop(`Found ${cloudSecrets.length} secrets`);
77
+ if (cloudSecrets.length === 0) {
78
+ p.log.info(pc.dim("No secrets found in Kalp Cloud."));
79
+ p.log.info(pc.dim(`Add secrets with: ${pc.cyan("kalp secrets add")}`));
80
+ } else {
81
+ console.log("");
82
+ p.log.info(pc.bold("Cloud Secrets:"));
83
+ for (const secret of cloudSecrets) {
84
+ const isSynced = localSecrets.includes(secret.key);
85
+ const syncIcon = isSynced ? pc.green("\u2713") : pc.yellow("\u25CB");
86
+ console.log(
87
+ ` ${syncIcon} ${pc.cyan(secret.key)} ${pc.dim(`(${secret.createdAt})`)}`
88
+ );
89
+ }
90
+ if (localSecrets.length > 0) {
91
+ const unsynced = localSecrets.filter(
92
+ (k) => !cloudSecrets.some((s2) => s2.key === k)
93
+ );
94
+ if (unsynced.length > 0) {
95
+ console.log("");
96
+ p.log.warn(
97
+ pc.yellow(
98
+ `Local-only secrets (not synced): ${unsynced.join(", ")}`
99
+ )
100
+ );
101
+ }
102
+ }
103
+ }
104
+ p.outro("Done");
105
+ } catch (error) {
106
+ s.stop("Failed to fetch secrets");
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
+ list_default as default
119
+ };
120
+ //# sourceMappingURL=list-BOE33VSI.js.map
@@ -0,0 +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 { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { getAuthToken } from \"../../utils/auth.js\";\n\nconst LOGO = \"🦋\";\n\ninterface CloudSecret {\n key: string;\n createdAt: string;\n}\n\nasync function fetchSecretsFromCloud(): Promise<CloudSecret[]> {\n return [\n { key: \"STRIPE_SECRET_KEY\", createdAt: \"2024-01-15T10:30:00Z\" },\n { key: \"OPENAI_API_KEY\", createdAt: \"2024-01-16T14:22:00Z\" },\n ];\n}\n\nasync function readLocalSecrets(cwd: string): Promise<string[]> {\n try {\n const configPath = join(cwd, \"kalp.config.ts\");\n const content = await readFile(configPath, \"utf-8\");\n // Extract secrets array from config\n const match = content.match(/secrets:\\s*\\[([^\\]]*)\\]/);\n if (!match) return [];\n const secretsStr = match[1];\n // Extract quoted strings\n const secrets: string[] = [];\n const regex = /[\"']([^\"']+)[\"']/g;\n\n if (!secretsStr) {\n return [];\n }\n\n let m: RegExpExecArray | null;\n while ((m = regex.exec(secretsStr)) !== null) {\n if (m[1]) {\n secrets.push(m[1]);\n }\n }\n return secrets;\n } catch {\n return [];\n }\n}\n\nexport default defineCommand({\n meta: {\n name: \"list\",\n description: \"List all secrets from Kalp Cloud\",\n },\n args: {\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 const token = await getAuthToken();\n if (!token) {\n p.log.warn(pc.yellow(\"Not logged in. Run `kalp login` first.\"));\n p.outro(\"Authentication required\");\n return;\n }\n\n const s = p.spinner();\n s.start(\"Fetching secrets from Kalp Cloud...\");\n\n try {\n const [cloudSecrets, localSecrets] = await Promise.all([\n fetchSecretsFromCloud(),\n readLocalSecrets(cwd),\n ]);\n\n s.stop(`Found ${cloudSecrets.length} secrets`);\n\n if (cloudSecrets.length === 0) {\n p.log.info(pc.dim(\"No secrets found in Kalp Cloud.\"));\n p.log.info(pc.dim(`Add secrets with: ${pc.cyan(\"kalp secrets add\")}`));\n } else {\n console.log(\"\");\n p.log.info(pc.bold(\"Cloud Secrets:\"));\n for (const secret of cloudSecrets) {\n const isSynced = localSecrets.includes(secret.key);\n const syncIcon = isSynced ? pc.green(\"✓\") : pc.yellow(\"○\");\n console.log(\n ` ${syncIcon} ${pc.cyan(secret.key)} ${pc.dim(`(${secret.createdAt})`)}`,\n );\n }\n\n if (localSecrets.length > 0) {\n const unsynced = localSecrets.filter(\n (k) => !cloudSecrets.some((s) => s.key === k),\n );\n if (unsynced.length > 0) {\n console.log(\"\");\n p.log.warn(\n pc.yellow(\n `Local-only secrets (not synced): ${unsynced.join(\", \")}`,\n ),\n );\n }\n }\n }\n\n p.outro(\"Done\");\n } catch (error) {\n s.stop(\"Failed to fetch secrets\");\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":["s"]}
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+ import "./chunk-2H7UOFLK.js";
3
+
4
+ // src/commands/login.ts
5
+ import { defineCommand } from "citty";
6
+ import * as p from "@clack/prompts";
7
+ import pc from "picocolors";
8
+ import { mkdir, writeFile } from "fs/promises";
9
+ import { join } from "path";
10
+ import { homedir } from "os";
11
+ var LOGO = "\u{1F98B}";
12
+ var login_default = defineCommand({
13
+ meta: { name: "login", description: "Authenticate with Kalp" },
14
+ async run() {
15
+ const home = homedir();
16
+ p.intro(`${LOGO} ${pc.bold("kalp login")}`);
17
+ const s = p.spinner();
18
+ s.start("Authenticating...");
19
+ const kalpDir = join(home, ".kalp");
20
+ await mkdir(kalpDir, { recursive: true });
21
+ const authData = {
22
+ token: "mock-token-" + Date.now(),
23
+ email: "user@example.com",
24
+ expiresAt: new Date(Date.now() + 30 * 24 * 60 * 60 * 1e3).toISOString()
25
+ };
26
+ await writeFile(
27
+ join(kalpDir, "auth.json"),
28
+ JSON.stringify(authData, null, 2),
29
+ "utf-8"
30
+ );
31
+ s.stop("Authenticated successfully");
32
+ p.log.success(`Logged in as ${pc.cyan(authData.email)}`);
33
+ p.outro(pc.green("Ready to use Kalp Cloud"));
34
+ }
35
+ });
36
+ export {
37
+ login_default as default
38
+ };
39
+ //# sourceMappingURL=login-22HHVS52.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 { mkdir, writeFile, rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: { name: \"login\", description: \"Authenticate with Kalp\" },\n async run() {\n const home = homedir();\n\n p.intro(`${LOGO} ${pc.bold(\"kalp login\")}`);\n\n const s = p.spinner();\n s.start(\"Authenticating...\");\n\n // Create ~/.kalp directory (global user config)\n const kalpDir = join(home, \".kalp\");\n await mkdir(kalpDir, { recursive: true });\n\n // Create mock auth.json\n const authData = {\n token: \"mock-token-\" + Date.now(),\n email: \"user@example.com\",\n expiresAt: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(),\n };\n\n await writeFile(\n join(kalpDir, \"auth.json\"),\n JSON.stringify(authData, null, 2),\n \"utf-8\",\n );\n\n s.stop(\"Authenticated successfully\");\n p.log.success(`Logged in as ${pc.cyan(authData.email)}`);\n p.outro(pc.green(\"Ready to use Kalp Cloud\"));\n },\n});\n"],"mappings":";;;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AACf,SAAS,OAAO,iBAAqB;AACrC,SAAS,YAAY;AACrB,SAAS,eAAe;AAExB,IAAM,OAAO;AAEb,IAAO,gBAAQ,cAAc;AAAA,EAC3B,MAAM,EAAE,MAAM,SAAS,aAAa,yBAAyB;AAAA,EAC7D,MAAM,MAAM;AACV,UAAM,OAAO,QAAQ;AAErB,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,YAAY,CAAC,EAAE;AAE1C,UAAM,IAAM,UAAQ;AACpB,MAAE,MAAM,mBAAmB;AAG3B,UAAM,UAAU,KAAK,MAAM,OAAO;AAClC,UAAM,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAGxC,UAAM,WAAW;AAAA,MACf,OAAO,gBAAgB,KAAK,IAAI;AAAA,MAChC,OAAO;AAAA,MACP,WAAW,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAI,EAAE,YAAY;AAAA,IACzE;AAEA,UAAM;AAAA,MACJ,KAAK,SAAS,WAAW;AAAA,MACzB,KAAK,UAAU,UAAU,MAAM,CAAC;AAAA,MAChC;AAAA,IACF;AAEA,MAAE,KAAK,4BAA4B;AACnC,IAAE,MAAI,QAAQ,gBAAgB,GAAG,KAAK,SAAS,KAAK,CAAC,EAAE;AACvD,IAAE,QAAM,GAAG,MAAM,yBAAyB,CAAC;AAAA,EAC7C;AACF,CAAC;","names":[]}
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+ import "./chunk-2H7UOFLK.js";
3
+
4
+ // src/commands/logout.ts
5
+ import { defineCommand } from "citty";
6
+ import * as p from "@clack/prompts";
7
+ import pc from "picocolors";
8
+ import { rm } from "fs/promises";
9
+ import { join } from "path";
10
+ import { homedir } from "os";
11
+ var LOGO = "\u{1F98B}";
12
+ var logout_default = defineCommand({
13
+ meta: { name: "logout", description: "Sign out from Kalp" },
14
+ async run() {
15
+ const home = homedir();
16
+ p.intro(`${LOGO} ${pc.bold("kalp logout")}`);
17
+ const s = p.spinner();
18
+ s.start("Signing out...");
19
+ try {
20
+ await rm(join(home, ".kalp", "auth.json"), { force: true });
21
+ s.stop("Signed out successfully");
22
+ p.outro(pc.green("Logged out from Kalp"));
23
+ } catch {
24
+ s.stop("Nothing to do");
25
+ p.outro(pc.dim("No active session found"));
26
+ }
27
+ }
28
+ });
29
+ export {
30
+ logout_default as default
31
+ };
32
+ //# sourceMappingURL=logout-OJM3VAOF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/logout.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: { name: \"logout\", description: \"Sign out from Kalp\" },\n async run() {\n const home = homedir();\n\n p.intro(`${LOGO} ${pc.bold(\"kalp logout\")}`);\n\n const s = p.spinner();\n s.start(\"Signing out...\");\n\n try {\n await rm(join(home, \".kalp\", \"auth.json\"), { force: true });\n s.stop(\"Signed out successfully\");\n p.outro(pc.green(\"Logged out from Kalp\"));\n } catch {\n s.stop(\"Nothing to do\");\n p.outro(pc.dim(\"No active session found\"));\n }\n },\n});\n"],"mappings":";;;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AACf,SAAS,UAAU;AACnB,SAAS,YAAY;AACrB,SAAS,eAAe;AAExB,IAAM,OAAO;AAEb,IAAO,iBAAQ,cAAc;AAAA,EAC3B,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB;AAAA,EAC1D,MAAM,MAAM;AACV,UAAM,OAAO,QAAQ;AAErB,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,aAAa,CAAC,EAAE;AAE3C,UAAM,IAAM,UAAQ;AACpB,MAAE,MAAM,gBAAgB;AAExB,QAAI;AACF,YAAM,GAAG,KAAK,MAAM,SAAS,WAAW,GAAG,EAAE,OAAO,KAAK,CAAC;AAC1D,QAAE,KAAK,yBAAyB;AAChC,MAAE,QAAM,GAAG,MAAM,sBAAsB,CAAC;AAAA,IAC1C,QAAQ;AACN,QAAE,KAAK,eAAe;AACtB,MAAE,QAAM,GAAG,IAAI,yBAAyB,CAAC;AAAA,IAC3C;AAAA,EACF;AACF,CAAC;","names":[]}