@kalphq/cli 0.0.0-dev-20260416084549 → 0.0.0-dev-20260416090302

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.
@@ -22,10 +22,17 @@ async function ensureDirectory(path) {
22
22
  await mkdir(path, { recursive: true });
23
23
  }
24
24
  async function installDeps(cwd) {
25
- execSync("npx nci", {
26
- cwd,
27
- stdio: "pipe"
28
- });
25
+ try {
26
+ execSync("npx --no-install nci", {
27
+ cwd,
28
+ stdio: "pipe"
29
+ });
30
+ } catch {
31
+ execSync("npm install", {
32
+ cwd,
33
+ stdio: "pipe"
34
+ });
35
+ }
29
36
  }
30
37
 
31
38
  export {
@@ -34,4 +41,4 @@ export {
34
41
  ensureDirectory,
35
42
  installDeps
36
43
  };
37
- //# sourceMappingURL=chunk-LAKPXKSS.js.map
44
+ //# sourceMappingURL=chunk-Q455HC3P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/fs.ts"],"sourcesContent":["import { access, mkdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { execSync } from \"node:child_process\";\n\nexport async function isProjectInitialized(cwd: string): Promise<boolean> {\n try {\n await access(join(cwd, \"kalp.config.ts\"));\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function ensureConfig(cwd: string): Promise<void> {\n const initialized = await isProjectInitialized(cwd);\n if (!initialized) {\n throw new Error(\"kalp.config.ts not found\");\n }\n}\n\nexport async function ensureDirectory(path: string): Promise<void> {\n await mkdir(path, { recursive: true });\n}\n\nexport async function installDeps(cwd: string): Promise<void> {\n try {\n execSync(\"npx --no-install nci\", {\n cwd,\n stdio: \"pipe\",\n });\n } catch {\n execSync(\"npm install\", {\n cwd,\n stdio: \"pipe\",\n });\n }\n}\n"],"mappings":";;;AAAA,SAAS,QAAQ,aAAa;AAC9B,SAAS,YAAY;AACrB,SAAS,gBAAgB;AAEzB,eAAsB,qBAAqB,KAA+B;AACxE,MAAI;AACF,UAAM,OAAO,KAAK,KAAK,gBAAgB,CAAC;AACxC,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAsB,aAAa,KAA4B;AAC7D,QAAM,cAAc,MAAM,qBAAqB,GAAG;AAClD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AACF;AAEA,eAAsB,gBAAgB,MAA6B;AACjE,QAAM,MAAM,MAAM,EAAE,WAAW,KAAK,CAAC;AACvC;AAEA,eAAsB,YAAY,KAA4B;AAC5D,MAAI;AACF,aAAS,wBAAwB;AAAA,MAC/B;AAAA,MACA,OAAO;AAAA,IACT,CAAC;AAAA,EACH,QAAQ;AACN,aAAS,eAAe;AAAA,MACtB;AAAA,MACA,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  installDeps,
10
10
  isProjectInitialized
11
- } from "./chunk-LAKPXKSS.js";
11
+ } from "./chunk-Q455HC3P.js";
12
12
  import "./chunk-2H7UOFLK.js";
13
13
 
14
14
  // src/commands/create.ts
@@ -43,7 +43,11 @@ var create_default = defineCommand({
43
43
  await installDeps(cwd);
44
44
  s.stop("Dependencies installed");
45
45
  } catch {
46
- s.stop(pc.yellow("Install failed \u2014 run npx nci manually."));
46
+ s.stop(
47
+ pc.yellow(
48
+ "Install failed \u2014 run npx --no-install nci (or npm install) manually."
49
+ )
50
+ );
47
51
  }
48
52
  }
49
53
  s.start(`Scaffolding agent ${pc.cyan(agentAnswers.name)}`);
@@ -69,4 +73,4 @@ var create_default = defineCommand({
69
73
  export {
70
74
  create_default as default
71
75
  };
72
- //# sourceMappingURL=create-T76IFYRP.js.map
76
+ //# sourceMappingURL=create-XJURMQC4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/create.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { scaffoldProject, scaffoldAgent } from \"../scaffold.js\";\nimport { installDeps, isProjectInitialized } from \"../utils/fs.js\";\nimport { promptAgentDetails, promptProjectName } from \"../utils/ui.js\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: { name: \"create\", description: \"Add a new agent to the project\" },\n async run() {\n const cwd = process.cwd();\n\n p.intro(`${LOGO} ${pc.bold(\"kalp create\")}`);\n\n // ── Check if project is initialized ─────────────────────────────────\n const needsInit = !(await isProjectInitialized(cwd));\n\n // ── Init phase (inline — one unified timeline) ───────────────────────\n let projectName: string | undefined;\n if (needsInit) {\n p.log.warn(\n `No ${pc.cyan(\"kalp.config.ts\")} found — initializing project first.`,\n );\n projectName = await promptProjectName({\n message: \"Project name?\",\n placeholder: \"my-project\",\n });\n }\n\n // ── Agent prompts ────────────────────────────────────────────────────\n const agentAnswers = await promptAgentDetails();\n\n const s = p.spinner();\n\n // ── Scaffold project if needed ───────────────────────────────────────\n if (needsInit && projectName) {\n s.start(\"Creating project structure\");\n await scaffoldProject({ projectName, targetDir: cwd });\n s.stop(\"Project structure created\");\n\n s.start(\"Installing dependencies\");\n try {\n await installDeps(cwd);\n s.stop(\"Dependencies installed\");\n } catch {\n s.stop(\n pc.yellow(\n \"Install failed — run npx --no-install nci (or npm install) manually.\",\n ),\n );\n }\n }\n\n // ── Scaffold agent ───────────────────────────────────────────────────\n s.start(`Scaffolding agent ${pc.cyan(agentAnswers.name)}`);\n await scaffoldAgent({\n agentName: agentAnswers.name,\n templateId: agentAnswers.templateId,\n cwd,\n });\n s.stop(\"Agent created\");\n\n p.note(\n [\n `${pc.dim(\"•\")} ${pc.cyan(`agents/${agentAnswers.name}/index.ts`)}`,\n `${pc.dim(\"•\")} ${pc.cyan(`agents/${agentAnswers.name}/steps/`)}`,\n `${pc.dim(\"•\")} ${pc.cyan(`agents/${agentAnswers.name}/tools/`)}`,\n ].join(\"\\n\"),\n \"Created\",\n );\n\n p.outro(\n `${LOGO} ${pc.green(`Agent ${pc.bold(agentAnswers.name)} is ready.`)}`,\n );\n },\n});\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AAKf,IAAM,OAAO;AAEb,IAAO,iBAAQ,cAAc;AAAA,EAC3B,MAAM,EAAE,MAAM,UAAU,aAAa,iCAAiC;AAAA,EACtE,MAAM,MAAM;AACV,UAAM,MAAM,QAAQ,IAAI;AAExB,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,aAAa,CAAC,EAAE;AAG3C,UAAM,YAAY,CAAE,MAAM,qBAAqB,GAAG;AAGlD,QAAI;AACJ,QAAI,WAAW;AACb,MAAE,MAAI;AAAA,QACJ,MAAM,GAAG,KAAK,gBAAgB,CAAC;AAAA,MACjC;AACA,oBAAc,MAAM,kBAAkB;AAAA,QACpC,SAAS;AAAA,QACT,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAGA,UAAM,eAAe,MAAM,mBAAmB;AAE9C,UAAM,IAAM,UAAQ;AAGpB,QAAI,aAAa,aAAa;AAC5B,QAAE,MAAM,4BAA4B;AACpC,YAAM,gBAAgB,EAAE,aAAa,WAAW,IAAI,CAAC;AACrD,QAAE,KAAK,2BAA2B;AAElC,QAAE,MAAM,yBAAyB;AACjC,UAAI;AACF,cAAM,YAAY,GAAG;AACrB,UAAE,KAAK,wBAAwB;AAAA,MACjC,QAAQ;AACN,UAAE;AAAA,UACA,GAAG;AAAA,YACD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,MAAE,MAAM,qBAAqB,GAAG,KAAK,aAAa,IAAI,CAAC,EAAE;AACzD,UAAM,cAAc;AAAA,MAClB,WAAW,aAAa;AAAA,MACxB,YAAY,aAAa;AAAA,MACzB;AAAA,IACF,CAAC;AACD,MAAE,KAAK,eAAe;AAEtB,IAAE;AAAA,MACA;AAAA,QACE,GAAG,GAAG,IAAI,QAAG,CAAC,IAAI,GAAG,KAAK,UAAU,aAAa,IAAI,WAAW,CAAC;AAAA,QACjE,GAAG,GAAG,IAAI,QAAG,CAAC,IAAI,GAAG,KAAK,UAAU,aAAa,IAAI,SAAS,CAAC;AAAA,QAC/D,GAAG,GAAG,IAAI,QAAG,CAAC,IAAI,GAAG,KAAK,UAAU,aAAa,IAAI,SAAS,CAAC;AAAA,MACjE,EAAE,KAAK,IAAI;AAAA,MACX;AAAA,IACF;AAEA,IAAE;AAAA,MACA,GAAG,IAAI,IAAI,GAAG,MAAM,SAAS,GAAG,KAAK,aAAa,IAAI,CAAC,YAAY,CAAC;AAAA,IACtE;AAAA,EACF;AACF,CAAC;","names":[]}
package/dist/index.js CHANGED
@@ -5,6 +5,24 @@ import { defineCommand, runMain } from "citty";
5
5
  import * as p from "@clack/prompts";
6
6
  import pc from "picocolors";
7
7
  var LOGO = "\u{1F98B}";
8
+ var COMMANDS = [
9
+ ["init", "Create a new Kalp project"],
10
+ ["create", "Add a new agent"],
11
+ ["push", "Push agent to Kalp"],
12
+ ["link", "Link project to Kalp cloud"],
13
+ ["login", "Authenticate with Kalp"],
14
+ ["logout", "Sign out from Kalp"]
15
+ ];
16
+ function printHelp() {
17
+ p.log.info(`${pc.bold("Usage")}: kalp <command> [options]`);
18
+ console.log("");
19
+ p.log.info(pc.bold("Commands"));
20
+ for (const [name, desc] of COMMANDS) {
21
+ console.log(` ${pc.cyan(name.padEnd(10))}${desc}`);
22
+ }
23
+ console.log("");
24
+ p.log.info(`Run ${pc.cyan("kalp <command> --help")} for more info.`);
25
+ }
8
26
  var main = defineCommand({
9
27
  meta: {
10
28
  name: "kalp",
@@ -20,51 +38,27 @@ var main = defineCommand({
20
38
  }
21
39
  },
22
40
  subCommands: {
23
- init: () => import("./init-SDITDMG6.js").then((r) => r.default),
24
- create: () => import("./create-T76IFYRP.js").then((r) => r.default),
25
- push: () => import("./push-YFAB7TWQ.js").then((r) => r.default),
41
+ init: () => import("./init-K7EASUMM.js").then((r) => r.default),
42
+ create: () => import("./create-XJURMQC4.js").then((r) => r.default),
43
+ push: () => import("./push-N67OPGCD.js").then((r) => r.default),
26
44
  link: () => import("./link-YKDZ7Y6K.js").then((r) => r.default),
27
45
  login: () => import("./login-LBEXP7ET.js").then((r) => r.default),
28
46
  logout: () => import("./logout-S3PV4WE7.js").then((r) => r.default)
29
47
  },
30
48
  run({ args }) {
49
+ const firstArg = process.argv[2];
31
50
  if (args.help) {
32
51
  p.intro(`${LOGO} ${pc.bold("kalp")}`);
33
- p.note(
34
- [
35
- `${pc.dim("Available commands:")}`,
36
- ``,
37
- ` ${pc.cyan("kalp init")} ${pc.dim("\u2014 Create a new Kalp project")}`,
38
- ` ${pc.cyan("kalp create")} ${pc.dim("\u2014 Add a new agent")}`,
39
- ` ${pc.cyan("kalp push")} ${pc.dim("\u2014 Push agent to Kalp")}`,
40
- ` ${pc.cyan("kalp link")} ${pc.dim("\u2014 Link project to Kalp cloud")}`,
41
- ` ${pc.cyan("kalp login")} ${pc.dim("\u2014 Authenticate with Kalp")}`,
42
- ` ${pc.cyan("kalp logout")} ${pc.dim("\u2014 Sign out from Kalp")}`,
43
- ``,
44
- `${pc.dim("Run")} ${pc.cyan("kalp <command> --help")} ${pc.dim("for more info.")}`
45
- ].join("\n"),
46
- "Commands"
47
- );
48
- p.outro(pc.dim("Happy coding \u{1F98B}"));
52
+ printHelp();
53
+ p.outro("Happy coding \u{1F98B}");
54
+ return;
55
+ }
56
+ if (firstArg) {
49
57
  return;
50
58
  }
51
59
  p.intro(`${LOGO} ${pc.bold("kalp")}`);
52
- p.note(
53
- [
54
- `${pc.dim("Available commands:")}`,
55
- ``,
56
- ` ${pc.cyan("kalp init")} ${pc.dim("\u2014 Create a new Kalp project")}`,
57
- ` ${pc.cyan("kalp create")} ${pc.dim("\u2014 Add a new agent")}`,
58
- ` ${pc.cyan("kalp push")} ${pc.dim("\u2014 Push agent to Kalp")}`,
59
- ` ${pc.cyan("kalp link")} ${pc.dim("\u2014 Link project to Kalp cloud")}`,
60
- ` ${pc.cyan("kalp login")} ${pc.dim("\u2014 Authenticate with Kalp")}`,
61
- ` ${pc.cyan("kalp logout")} ${pc.dim("\u2014 Sign out from Kalp")}`,
62
- ``,
63
- `${pc.dim("Run")} ${pc.cyan("kalp <command> --help")} ${pc.dim("for more info.")}`
64
- ].join("\n"),
65
- "Commands"
66
- );
67
- p.outro(pc.dim("Happy coding \u{1F98B}"));
60
+ printHelp();
61
+ p.outro("Happy coding \u{1F98B}");
68
62
  }
69
63
  });
70
64
  runMain(main);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { defineCommand, runMain } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\n\nconst LOGO = \"🦋\";\n\nconst 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 push: () => import(\"./commands/push.js\").then((r) => r.default),\n link: () => import(\"./commands/link.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 if (args.help) {\n p.intro(`${LOGO} ${pc.bold(\"kalp\")}`);\n p.note(\n [\n `${pc.dim(\"Available commands:\")}`,\n ``,\n ` ${pc.cyan(\"kalp init\")} ${pc.dim(\"— Create a new Kalp project\")}`,\n ` ${pc.cyan(\"kalp create\")} ${pc.dim(\"— Add a new agent\")}`,\n ` ${pc.cyan(\"kalp push\")} ${pc.dim(\"— Push agent to Kalp\")}`,\n ` ${pc.cyan(\"kalp link\")} ${pc.dim(\"— Link project to Kalp cloud\")}`,\n ` ${pc.cyan(\"kalp login\")} ${pc.dim(\"— Authenticate with Kalp\")}`,\n ` ${pc.cyan(\"kalp logout\")} ${pc.dim(\"— Sign out from Kalp\")}`,\n ``,\n `${pc.dim(\"Run\")} ${pc.cyan(\"kalp <command> --help\")} ${pc.dim(\"for more info.\")}`,\n ].join(\"\\n\"),\n \"Commands\",\n );\n p.outro(pc.dim(\"Happy coding 🦋\"));\n return;\n }\n // Default: show commands (same as help)\n p.intro(`${LOGO} ${pc.bold(\"kalp\")}`);\n p.note(\n [\n `${pc.dim(\"Available commands:\")}`,\n ``,\n ` ${pc.cyan(\"kalp init\")} ${pc.dim(\"— Create a new Kalp project\")}`,\n ` ${pc.cyan(\"kalp create\")} ${pc.dim(\"— Add a new agent\")}`,\n ` ${pc.cyan(\"kalp push\")} ${pc.dim(\"— Push agent to Kalp\")}`,\n ` ${pc.cyan(\"kalp link\")} ${pc.dim(\"— Link project to Kalp cloud\")}`,\n ` ${pc.cyan(\"kalp login\")} ${pc.dim(\"— Authenticate with Kalp\")}`,\n ` ${pc.cyan(\"kalp logout\")} ${pc.dim(\"— Sign out from Kalp\")}`,\n ``,\n `${pc.dim(\"Run\")} ${pc.cyan(\"kalp <command> --help\")} ${pc.dim(\"for more info.\")}`,\n ].join(\"\\n\"),\n \"Commands\",\n );\n p.outro(pc.dim(\"Happy coding 🦋\"));\n },\n});\n\nrunMain(main);\n"],"mappings":"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","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 [\"push\", \"Push agent to Kalp\"],\n [\"link\", \"Link project to Kalp cloud\"],\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 push: () => import(\"./commands/push.js\").then((r) => r.default),\n link: () => import(\"./commands/link.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 // Default: show commands (same as help)\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,QAAQ,oBAAoB;AAAA,EAC7B,CAAC,QAAQ,4BAA4B;AAAA,EACrC,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,MAAM,MAAM,OAAO,oBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC9D,MAAM,MAAM,OAAO,oBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAC9D,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;AAGA,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,MAAM,CAAC,EAAE;AACpC,cAAU;AACV,IAAE,QAAM,wBAAiB;AAAA,EAC3B;AACF,CAAC;AAED,QAAQ,IAAI;","names":[]}
@@ -7,7 +7,7 @@ import {
7
7
  ensureDirectory,
8
8
  installDeps,
9
9
  isProjectInitialized
10
- } from "./chunk-LAKPXKSS.js";
10
+ } from "./chunk-Q455HC3P.js";
11
11
  import "./chunk-2H7UOFLK.js";
12
12
 
13
13
  // src/commands/init.ts
@@ -50,28 +50,26 @@ var init_default = defineCommand({
50
50
  const msg = err instanceof Error ? err.message : String(err);
51
51
  s.stop(pc.yellow("Install failed"));
52
52
  p.log.warn(
53
- `Run ${pc.cyan("npx nci")} manually in ${isCurrentDir ? "this directory" : projectInputName + "/"}`
53
+ `Run ${pc.cyan("npx --no-install nci")} (or ${pc.cyan("npm install")}) manually in ${isCurrentDir ? "this directory" : projectInputName + "/"}`
54
54
  );
55
55
  p.log.info(pc.dim(msg.split("\n")[0] ?? "Unknown error"));
56
56
  }
57
- const cdHint = isCurrentDir ? "" : ` 1. ${pc.cyan(`cd ${projectInputName}`)}
58
- `;
59
- const nextStep = isCurrentDir ? "1" : "2";
60
- p.note(
61
- [
62
- `${pc.dim("\u2022")} ${pc.cyan("kalp.config.ts")} ${pc.dim("\u2014 project config")}`,
63
- `${pc.dim("\u2022")} ${pc.cyan("package.json")} ${pc.dim("\u2014 dependencies")}`,
64
- `${pc.dim("\u2022")} ${pc.cyan("agents/")} ${pc.dim("\u2014 your agents live here")}`,
65
- ``,
66
- `${pc.dim("Next:")}`,
67
- `${cdHint} ${nextStep}. ${pc.cyan("kalp create")} ${pc.dim("\u2014 add your first agent")}`
68
- ].join("\n"),
69
- "You're ready \u{1F98B}"
70
- );
57
+ p.log.success("Project scaffolded");
58
+ p.log.info(`${pc.cyan("kalp.config.ts")} \u2014 project config`);
59
+ p.log.info(`${pc.cyan("package.json")} \u2014 dependencies`);
60
+ p.log.info(`${pc.cyan("agents/")} \u2014 your agents live here`);
61
+ console.log("");
62
+ p.log.info(pc.bold("Next"));
63
+ if (!isCurrentDir) {
64
+ p.log.info(`1. ${pc.cyan(`cd ${projectInputName}`)}`);
65
+ p.log.info(`2. ${pc.cyan("kalp create")} \u2014 add your first agent`);
66
+ } else {
67
+ p.log.info(`1. ${pc.cyan("kalp create")} \u2014 add your first agent`);
68
+ }
71
69
  p.outro(pc.green("Kalp initialized successfully."));
72
70
  }
73
71
  });
74
72
  export {
75
73
  init_default as default
76
74
  };
77
- //# sourceMappingURL=init-SDITDMG6.js.map
75
+ //# sourceMappingURL=init-K7EASUMM.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(\"kalp.config.ts\")} — project config`);\n p.log.info(`${pc.cyan(\"package.json\")} — dependencies`);\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,gBAAgB,CAAC,wBAAmB;AAC1D,IAAE,MAAI,KAAK,GAAG,GAAG,KAAK,cAAc,CAAC,sBAAiB;AACtD,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":[]}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ensureConfig
4
- } from "./chunk-LAKPXKSS.js";
4
+ } from "./chunk-Q455HC3P.js";
5
5
  import "./chunk-2H7UOFLK.js";
6
6
 
7
7
  // src/commands/push.ts
@@ -101,4 +101,4 @@ var push_default = defineCommand({
101
101
  export {
102
102
  push_default as default
103
103
  };
104
- //# sourceMappingURL=push-YFAB7TWQ.js.map
104
+ //# sourceMappingURL=push-N67OPGCD.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kalphq/cli",
3
- "version": "0.0.0-dev-20260416084549",
3
+ "version": "0.0.0-dev-20260416090302",
4
4
  "description": "Zero-config CLI for deploying Kalp agents",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -17,14 +17,13 @@
17
17
  "access": "public"
18
18
  },
19
19
  "dependencies": {
20
+ "@antfu/ni": "^24.4.0",
20
21
  "@clack/prompts": "^0.9.1",
21
22
  "citty": "^0.1.6",
22
23
  "esbuild": "^0.25.0",
23
- "giget": "^1.2.3",
24
- "nypm": "^0.3.12",
25
24
  "picocolors": "^1.1.1",
26
25
  "zod": "^3.25.76",
27
- "@kalphq/sdk": "0.0.0-dev-20260416084549"
26
+ "@kalphq/sdk": "0.0.0-dev-20260416090302"
28
27
  },
29
28
  "devDependencies": {
30
29
  "@types/node": "^22.15.3",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/fs.ts"],"sourcesContent":["import { access, mkdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { execSync } from \"node:child_process\";\n\nexport async function isProjectInitialized(cwd: string): Promise<boolean> {\n try {\n await access(join(cwd, \"kalp.config.ts\"));\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function ensureConfig(cwd: string): Promise<void> {\n const initialized = await isProjectInitialized(cwd);\n if (!initialized) {\n throw new Error(\"kalp.config.ts not found\");\n }\n}\n\nexport async function ensureDirectory(path: string): Promise<void> {\n await mkdir(path, { recursive: true });\n}\n\nexport async function installDeps(cwd: string): Promise<void> {\n execSync(\"npx nci\", {\n cwd,\n stdio: \"pipe\",\n });\n}\n"],"mappings":";;;AAAA,SAAS,QAAQ,aAAa;AAC9B,SAAS,YAAY;AACrB,SAAS,gBAAgB;AAEzB,eAAsB,qBAAqB,KAA+B;AACxE,MAAI;AACF,UAAM,OAAO,KAAK,KAAK,gBAAgB,CAAC;AACxC,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAsB,aAAa,KAA4B;AAC7D,QAAM,cAAc,MAAM,qBAAqB,GAAG;AAClD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AACF;AAEA,eAAsB,gBAAgB,MAA6B;AACjE,QAAM,MAAM,MAAM,EAAE,WAAW,KAAK,CAAC;AACvC;AAEA,eAAsB,YAAY,KAA4B;AAC5D,WAAS,WAAW;AAAA,IAClB;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AACH;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/create.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { scaffoldProject, scaffoldAgent } from \"../scaffold.js\";\nimport { installDeps, isProjectInitialized } from \"../utils/fs.js\";\nimport { promptAgentDetails, promptProjectName } from \"../utils/ui.js\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: { name: \"create\", description: \"Add a new agent to the project\" },\n async run() {\n const cwd = process.cwd();\n\n p.intro(`${LOGO} ${pc.bold(\"kalp create\")}`);\n\n // ── Check if project is initialized ─────────────────────────────────\n const needsInit = !(await isProjectInitialized(cwd));\n\n // ── Init phase (inline — one unified timeline) ───────────────────────\n let projectName: string | undefined;\n if (needsInit) {\n p.log.warn(\n `No ${pc.cyan(\"kalp.config.ts\")} found — initializing project first.`,\n );\n projectName = await promptProjectName({\n message: \"Project name?\",\n placeholder: \"my-project\",\n });\n }\n\n // ── Agent prompts ────────────────────────────────────────────────────\n const agentAnswers = await promptAgentDetails();\n\n const s = p.spinner();\n\n // ── Scaffold project if needed ───────────────────────────────────────\n if (needsInit && projectName) {\n s.start(\"Creating project structure\");\n await scaffoldProject({ projectName, targetDir: cwd });\n s.stop(\"Project structure created\");\n\n s.start(\"Installing dependencies\");\n try {\n await installDeps(cwd);\n s.stop(\"Dependencies installed\");\n } catch {\n s.stop(pc.yellow(\"Install failed — run npx nci manually.\"));\n }\n }\n\n // ── Scaffold agent ───────────────────────────────────────────────────\n s.start(`Scaffolding agent ${pc.cyan(agentAnswers.name)}`);\n await scaffoldAgent({\n agentName: agentAnswers.name,\n templateId: agentAnswers.templateId,\n cwd,\n });\n s.stop(\"Agent created\");\n\n p.note(\n [\n `${pc.dim(\"•\")} ${pc.cyan(`agents/${agentAnswers.name}/index.ts`)}`,\n `${pc.dim(\"•\")} ${pc.cyan(`agents/${agentAnswers.name}/steps/`)}`,\n `${pc.dim(\"•\")} ${pc.cyan(`agents/${agentAnswers.name}/tools/`)}`,\n ].join(\"\\n\"),\n \"Created\",\n );\n\n p.outro(\n `${LOGO} ${pc.green(`Agent ${pc.bold(agentAnswers.name)} is ready.`)}`,\n );\n },\n});\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AAKf,IAAM,OAAO;AAEb,IAAO,iBAAQ,cAAc;AAAA,EAC3B,MAAM,EAAE,MAAM,UAAU,aAAa,iCAAiC;AAAA,EACtE,MAAM,MAAM;AACV,UAAM,MAAM,QAAQ,IAAI;AAExB,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,aAAa,CAAC,EAAE;AAG3C,UAAM,YAAY,CAAE,MAAM,qBAAqB,GAAG;AAGlD,QAAI;AACJ,QAAI,WAAW;AACb,MAAE,MAAI;AAAA,QACJ,MAAM,GAAG,KAAK,gBAAgB,CAAC;AAAA,MACjC;AACA,oBAAc,MAAM,kBAAkB;AAAA,QACpC,SAAS;AAAA,QACT,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAGA,UAAM,eAAe,MAAM,mBAAmB;AAE9C,UAAM,IAAM,UAAQ;AAGpB,QAAI,aAAa,aAAa;AAC5B,QAAE,MAAM,4BAA4B;AACpC,YAAM,gBAAgB,EAAE,aAAa,WAAW,IAAI,CAAC;AACrD,QAAE,KAAK,2BAA2B;AAElC,QAAE,MAAM,yBAAyB;AACjC,UAAI;AACF,cAAM,YAAY,GAAG;AACrB,UAAE,KAAK,wBAAwB;AAAA,MACjC,QAAQ;AACN,UAAE,KAAK,GAAG,OAAO,6CAAwC,CAAC;AAAA,MAC5D;AAAA,IACF;AAGA,MAAE,MAAM,qBAAqB,GAAG,KAAK,aAAa,IAAI,CAAC,EAAE;AACzD,UAAM,cAAc;AAAA,MAClB,WAAW,aAAa;AAAA,MACxB,YAAY,aAAa;AAAA,MACzB;AAAA,IACF,CAAC;AACD,MAAE,KAAK,eAAe;AAEtB,IAAE;AAAA,MACA;AAAA,QACE,GAAG,GAAG,IAAI,QAAG,CAAC,IAAI,GAAG,KAAK,UAAU,aAAa,IAAI,WAAW,CAAC;AAAA,QACjE,GAAG,GAAG,IAAI,QAAG,CAAC,IAAI,GAAG,KAAK,UAAU,aAAa,IAAI,SAAS,CAAC;AAAA,QAC/D,GAAG,GAAG,IAAI,QAAG,CAAC,IAAI,GAAG,KAAK,UAAU,aAAa,IAAI,SAAS,CAAC;AAAA,MACjE,EAAE,KAAK,IAAI;AAAA,MACX;AAAA,IACF;AAEA,IAAE;AAAA,MACA,GAAG,IAAI,IAAI,GAAG,MAAM,SAAS,GAAG,KAAK,aAAa,IAAI,CAAC,YAAY,CAAC;AAAA,IACtE;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -1 +0,0 @@
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 nci\")} manually in ${isCurrentDir ? \"this directory\" : projectInputName + \"/\"}`,\n );\n p.log.info(pc.dim(msg.split(\"\\n\")[0] ?? \"Unknown error\"));\n }\n\n const cdHint = isCurrentDir\n ? \"\"\n : ` 1. ${pc.cyan(`cd ${projectInputName}`)}\\n`;\n const nextStep = isCurrentDir ? \"1\" : \"2\";\n\n p.note(\n [\n `${pc.dim(\"•\")} ${pc.cyan(\"kalp.config.ts\")} ${pc.dim(\"— project config\")}`,\n `${pc.dim(\"•\")} ${pc.cyan(\"package.json\")} ${pc.dim(\"— dependencies\")}`,\n `${pc.dim(\"•\")} ${pc.cyan(\"agents/\")} ${pc.dim(\"— your agents live here\")}`,\n ``,\n `${pc.dim(\"Next:\")}`,\n `${cdHint} ${nextStep}. ${pc.cyan(\"kalp create\")} ${pc.dim(\"— add your first agent\")}`,\n ].join(\"\\n\"),\n \"You're ready 🦋\",\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,SAAS,CAAC,gBAAgB,eAAe,mBAAmB,mBAAmB,GAAG;AAAA,MACnG;AACA,MAAE,MAAI,KAAK,GAAG,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC,KAAK,eAAe,CAAC;AAAA,IAC1D;AAEA,UAAM,SAAS,eACX,KACA,QAAQ,GAAG,KAAK,MAAM,gBAAgB,EAAE,CAAC;AAAA;AAC7C,UAAM,WAAW,eAAe,MAAM;AAEtC,IAAE;AAAA,MACA;AAAA,QACE,GAAG,GAAG,IAAI,QAAG,CAAC,IAAI,GAAG,KAAK,gBAAgB,CAAC,IAAI,GAAG,IAAI,uBAAkB,CAAC;AAAA,QACzE,GAAG,GAAG,IAAI,QAAG,CAAC,IAAI,GAAG,KAAK,cAAc,CAAC,IAAI,GAAG,IAAI,qBAAgB,CAAC;AAAA,QACrE,GAAG,GAAG,IAAI,QAAG,CAAC,IAAI,GAAG,KAAK,SAAS,CAAC,IAAI,GAAG,IAAI,8BAAyB,CAAC;AAAA,QACzE;AAAA,QACA,GAAG,GAAG,IAAI,OAAO,CAAC;AAAA,QAClB,GAAG,MAAM,KAAK,QAAQ,KAAK,GAAG,KAAK,aAAa,CAAC,IAAI,GAAG,IAAI,6BAAwB,CAAC;AAAA,MACvF,EAAE,KAAK,IAAI;AAAA,MACX;AAAA,IACF;AAEA,IAAE,QAAM,GAAG,MAAM,gCAAgC,CAAC;AAAA,EACpD;AACF,CAAC;","names":[]}