@kalphq/cli 0.0.0-dev-20260416063606 → 0.0.0-dev-20260416083945
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.
- package/dist/{chunk-FBVCQTQN.js → chunk-AME2JH3Z.js} +90 -7
- package/dist/chunk-AME2JH3Z.js.map +1 -0
- package/dist/chunk-LAKPXKSS.js +37 -0
- package/dist/chunk-LAKPXKSS.js.map +1 -0
- package/dist/create-445EVHYA.js +71 -0
- package/dist/create-445EVHYA.js.map +1 -0
- package/dist/index.js +56 -3
- package/dist/index.js.map +1 -1
- package/dist/{init-FLJXMJQZ.js → init-O7CMWTZ6.js} +23 -36
- package/dist/init-O7CMWTZ6.js.map +1 -0
- package/dist/link-V3ZDZKDE.js +22 -0
- package/dist/link-V3ZDZKDE.js.map +1 -0
- package/dist/login-NLTYFJL7.js +26 -0
- package/dist/login-NLTYFJL7.js.map +1 -0
- package/dist/logout-6ZYZGGVI.js +26 -0
- package/dist/logout-6ZYZGGVI.js.map +1 -0
- package/dist/push-RUBMCAYR.js +103 -0
- package/dist/push-RUBMCAYR.js.map +1 -0
- package/package.json +5 -3
- package/templates/agents/b2b-sales/index.ts +32 -3
- package/templates/agents/b2b-sales/signals/deal-won.ts +31 -0
- package/templates/agents/b2b-sales/signals/hot-lead-alert.ts +29 -0
- package/templates/agents/b2b-sales/steps/qualify-prospect.ts +50 -0
- package/templates/agents/b2b-sales/tools/send-slack-notification.ts +26 -0
- package/templates/agents/b2b-sales/webhooks/crm-inbound.ts +27 -0
- package/templates/agents/b2b-sales/webhooks/stripe-payment.ts +27 -0
- package/templates/agents/customer-support/index.ts +37 -5
- package/templates/agents/customer-support/signals/escalation-needed.ts +28 -0
- package/templates/agents/customer-support/signals/ticket-resolved.ts +29 -0
- package/templates/agents/customer-support/steps/escalate-ticket.ts +53 -0
- package/templates/agents/customer-support/tools/create-jira-issue.ts +30 -0
- package/templates/agents/customer-support/webhooks/slack-escalation.ts +27 -0
- package/templates/agents/customer-support/webhooks/zendesk-ticket.ts +29 -0
- package/templates/agents/financial-agent/index.ts +24 -2
- package/templates/agents/financial-agent/signals/market-alert.ts +31 -0
- package/templates/agents/financial-agent/signals/portfolio-rebalance.ts +27 -0
- package/templates/agents/financial-agent/steps/rebalance-check.ts +55 -0
- package/templates/agents/financial-agent/tools/send-email-alert.ts +31 -0
- package/templates/agents/financial-agent/webhooks/exchange-webhook.ts +33 -0
- package/templates/agents/financial-agent/webhooks/tradingview-alert.ts +30 -0
- package/templates/agents/minimal/index.ts +10 -2
- package/templates/agents/minimal/signals/error-alert.ts +26 -0
- package/templates/agents/minimal/signals/task-complete.ts +25 -0
- package/templates/agents/minimal/steps/transform-data.ts +32 -0
- package/templates/agents/minimal/tools/http-request.ts +26 -0
- package/templates/agents/minimal/webhooks/generic-inbound.ts +25 -0
- package/templates/agents/minimal/webhooks/health-check.ts +23 -0
- package/dist/build-2V4OQ3G3.js +0 -122
- package/dist/build-2V4OQ3G3.js.map +0 -1
- package/dist/chunk-FBVCQTQN.js.map +0 -1
- package/dist/create-AMCRXGOA.js +0 -116
- package/dist/create-AMCRXGOA.js.map +0 -1
- package/dist/init-FLJXMJQZ.js.map +0 -1
- package/templates/agents/b2b-sales/signals/.gitkeep +0 -0
- package/templates/agents/b2b-sales/webhooks/.gitkeep +0 -0
- package/templates/agents/customer-support/signals/.gitkeep +0 -0
- package/templates/agents/customer-support/webhooks/.gitkeep +0 -0
- package/templates/agents/financial-agent/signals/.gitkeep +0 -0
- package/templates/agents/financial-agent/webhooks/.gitkeep +0 -0
- package/templates/agents/minimal/signals/.gitkeep +0 -0
- package/templates/agents/minimal/webhooks/.gitkeep +0 -0
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
+
// src/scaffold.ts
|
|
4
|
+
import { writeFile, readFile, readdir, cp } from "fs/promises";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
import { join, dirname } from "path";
|
|
7
|
+
import { format } from "prettier";
|
|
8
|
+
|
|
3
9
|
// src/templates/index.ts
|
|
4
10
|
var TEMPLATES = [
|
|
5
11
|
{
|
|
@@ -32,12 +38,25 @@ function getTemplateMeta(id) {
|
|
|
32
38
|
}
|
|
33
39
|
|
|
34
40
|
// src/scaffold.ts
|
|
35
|
-
import { writeFile, readFile, readdir, cp } from "fs/promises";
|
|
36
|
-
import { fileURLToPath } from "url";
|
|
37
|
-
import { join, dirname } from "path";
|
|
38
41
|
var __filename = fileURLToPath(import.meta.url);
|
|
39
42
|
var __dirname = dirname(__filename);
|
|
40
43
|
var TEMPLATES_DIR = join(__dirname, "..", "templates");
|
|
44
|
+
async function formatGeneratedFile(filePath, content) {
|
|
45
|
+
if (!filePath.endsWith(".ts") && !filePath.endsWith(".tsx")) {
|
|
46
|
+
return content;
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
return await format(content, {
|
|
50
|
+
parser: "typescript",
|
|
51
|
+
semi: true,
|
|
52
|
+
singleQuote: false,
|
|
53
|
+
trailingComma: "all",
|
|
54
|
+
printWidth: 80
|
|
55
|
+
});
|
|
56
|
+
} catch {
|
|
57
|
+
return content;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
41
60
|
async function replacePlaceholders(dir, map) {
|
|
42
61
|
const entries = await readdir(dir, { withFileTypes: true });
|
|
43
62
|
for (const entry of entries) {
|
|
@@ -54,7 +73,10 @@ async function replacePlaceholders(dir, map) {
|
|
|
54
73
|
changed = true;
|
|
55
74
|
}
|
|
56
75
|
}
|
|
57
|
-
if (changed)
|
|
76
|
+
if (changed) {
|
|
77
|
+
const formatted = await formatGeneratedFile(fp, src);
|
|
78
|
+
await writeFile(fp, formatted, "utf-8");
|
|
79
|
+
}
|
|
58
80
|
} catch {
|
|
59
81
|
}
|
|
60
82
|
}
|
|
@@ -100,9 +122,70 @@ async function scaffoldAgent(opts) {
|
|
|
100
122
|
}
|
|
101
123
|
}
|
|
102
124
|
|
|
125
|
+
// src/utils/ui.ts
|
|
126
|
+
import * as p from "@clack/prompts";
|
|
127
|
+
import pc from "picocolors";
|
|
128
|
+
async function promptProjectName(opts) {
|
|
129
|
+
const message = opts?.message ?? "Project name?";
|
|
130
|
+
const placeholder = opts?.placeholder ?? "my-project";
|
|
131
|
+
const allowCurrentDir = opts?.allowCurrentDir ?? false;
|
|
132
|
+
const answer = await p.text({
|
|
133
|
+
message,
|
|
134
|
+
placeholder,
|
|
135
|
+
validate: (v) => {
|
|
136
|
+
const value = v.trim();
|
|
137
|
+
if (!value) return "Project name is required.";
|
|
138
|
+
if (allowCurrentDir && value === ".") return;
|
|
139
|
+
if (!/^[a-z0-9-]+$/.test(value)) {
|
|
140
|
+
return allowCurrentDir ? "Use lowercase letters, numbers, and dashes only (or . for current directory)." : "Use lowercase letters, numbers, and dashes only.";
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
if (p.isCancel(answer)) {
|
|
145
|
+
p.cancel("Cancelled.");
|
|
146
|
+
process.exit(0);
|
|
147
|
+
}
|
|
148
|
+
return answer.trim();
|
|
149
|
+
}
|
|
150
|
+
async function promptAgentDetails() {
|
|
151
|
+
const answers = await p.group(
|
|
152
|
+
{
|
|
153
|
+
name: () => p.text({
|
|
154
|
+
message: "Agent name?",
|
|
155
|
+
placeholder: "my-agent",
|
|
156
|
+
validate: (v) => {
|
|
157
|
+
if (!v.trim()) return "Agent name is required.";
|
|
158
|
+
if (!/^[a-z0-9-]+$/.test(v)) {
|
|
159
|
+
return "Use lowercase letters, numbers, and dashes only.";
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}),
|
|
163
|
+
template: () => p.select({
|
|
164
|
+
message: "Choose a template",
|
|
165
|
+
options: TEMPLATES.map((t) => ({
|
|
166
|
+
value: t.id,
|
|
167
|
+
label: t.label,
|
|
168
|
+
hint: pc.dim(t.hint)
|
|
169
|
+
}))
|
|
170
|
+
})
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
onCancel: () => {
|
|
174
|
+
p.cancel("Cancelled.");
|
|
175
|
+
process.exit(0);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
);
|
|
179
|
+
return {
|
|
180
|
+
name: answers.name,
|
|
181
|
+
templateId: answers.template
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
|
|
103
185
|
export {
|
|
104
|
-
TEMPLATES,
|
|
105
186
|
scaffoldProject,
|
|
106
|
-
scaffoldAgent
|
|
187
|
+
scaffoldAgent,
|
|
188
|
+
promptProjectName,
|
|
189
|
+
promptAgentDetails
|
|
107
190
|
};
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
191
|
+
//# sourceMappingURL=chunk-AME2JH3Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/scaffold.ts","../src/templates/index.ts","../src/utils/ui.ts"],"sourcesContent":["import { writeFile, readFile, readdir, cp } from \"node:fs/promises\";\nimport { fileURLToPath } from \"node:url\";\nimport { join, dirname } from \"node:path\";\nimport { format } from \"prettier\";\nimport { getTemplateMeta, type TemplateId } from \"./templates/index.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nexport const TEMPLATES_DIR = join(__dirname, \"..\", \"templates\");\n\nasync function formatGeneratedFile(\n filePath: string,\n content: string,\n): Promise<string> {\n if (!filePath.endsWith(\".ts\") && !filePath.endsWith(\".tsx\")) {\n return content;\n }\n\n try {\n return await format(content, {\n parser: \"typescript\",\n semi: true,\n singleQuote: false,\n trailingComma: \"all\",\n printWidth: 80,\n });\n } catch {\n return content;\n }\n}\n\nasync function replacePlaceholders(\n dir: string,\n map: Record<string, string>,\n): Promise<void> {\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fp = join(dir, entry.name);\n if (entry.isDirectory()) {\n await replacePlaceholders(fp, map);\n } else if (entry.isFile() && entry.name !== \".gitkeep\") {\n try {\n let src = await readFile(fp, \"utf-8\");\n let changed = false;\n for (const [from, to] of Object.entries(map)) {\n if (src.includes(from)) {\n src = src.replaceAll(from, to);\n changed = true;\n }\n }\n if (changed) {\n const formatted = await formatGeneratedFile(fp, src);\n await writeFile(fp, formatted, \"utf-8\");\n }\n } catch {\n // binary file — skip\n }\n }\n }\n}\n\nexport async function scaffoldProject(opts: {\n projectName: string;\n targetDir: string;\n}): Promise<void> {\n const { projectName, targetDir } = opts;\n\n // ── Copy project template (flat) to target directory ──────────────────\n await cp(join(TEMPLATES_DIR, \"project\"), targetDir, {\n recursive: true,\n force: true,\n });\n\n // ── kalp.config.ts ────────────────────────────────────────────────────\n const kalpConfig = `import { defineConfig } from \"@kalphq/sdk\";\n\nexport default defineConfig({\n projectId: \"${projectName}\",\n secrets: [],\n});\n`;\n await writeFile(join(targetDir, \"kalp.config.ts\"), kalpConfig, \"utf-8\");\n\n // ── Replace placeholders across the whole target ──────────────────────\n await replacePlaceholders(targetDir, { __PROJECT_NAME__: projectName });\n}\n\nexport async function scaffoldAgent(opts: {\n agentName: string;\n templateId: TemplateId;\n cwd: string;\n}): Promise<void> {\n const { agentName, templateId, cwd } = opts;\n const meta = getTemplateMeta(templateId);\n const agentDir = join(cwd, \"agents\", agentName);\n\n // ── Agent files via fs.cp ─────────────────────────────────────────────\n await cp(join(TEMPLATES_DIR, \"agents\", templateId), agentDir, {\n recursive: true,\n force: true,\n });\n await replacePlaceholders(agentDir, { __AGENT_NAME__: agentName });\n\n // ── .env at root (append missing secrets) ─────────────────────────────\n if (meta.secrets.length > 0) {\n const envPath = join(cwd, \".env\");\n let envExisting = \"\";\n try {\n envExisting = await readFile(envPath, \"utf-8\");\n } catch {\n // doesn't exist yet\n }\n const toAdd = meta.secrets\n .filter((s) => !envExisting.includes(s))\n .map((s) => `${s}=`)\n .join(\"\\n\");\n if (toAdd) {\n const content = envExisting\n ? envExisting.trimEnd() + \"\\n\" + toAdd + \"\\n\"\n : toAdd + \"\\n\";\n await writeFile(envPath, content, \"utf-8\");\n }\n }\n}\n","export type TemplateId =\n | \"customer-support\"\n | \"b2b-sales\"\n | \"financial-agent\"\n | \"minimal\";\n\nexport interface TemplateMeta {\n id: TemplateId;\n label: string;\n hint: string;\n secrets: string[];\n}\n\nexport interface TemplateFile {\n path: string;\n content: string;\n}\n\nexport interface Template {\n id: TemplateId;\n secrets: string[];\n files: (agent: string) => TemplateFile[];\n}\n\nexport const TEMPLATES: TemplateMeta[] = [\n {\n id: \"customer-support\",\n label: \"Customer Support\",\n hint: \"ticket routing, escalation, knowledge base\",\n secrets: [\"OPENAI_API_KEY\"],\n },\n {\n id: \"b2b-sales\",\n label: \"B2B Sales Outreach\",\n hint: \"CRM enrichment, lead scoring\",\n secrets: [\"OPENAI_API_KEY\", \"CRM_API_KEY\"],\n },\n {\n id: \"financial-agent\",\n label: \"Financial Agent\",\n hint: \"market signals, portfolio analysis\",\n secrets: [\"OPENAI_API_KEY\", \"MARKET_DATA_API_KEY\"],\n },\n {\n id: \"minimal\",\n label: \"Minimal Skeleton\",\n hint: \"bare structure, start from scratch\",\n secrets: [],\n },\n];\n\nexport function getTemplateMeta(id: TemplateId): TemplateMeta {\n return TEMPLATES.find((t) => t.id === id)!;\n}\n","import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { TEMPLATES, type TemplateId } from \"../templates/index.js\";\n\nexport async function promptProjectName(opts?: {\n message?: string;\n placeholder?: string;\n allowCurrentDir?: boolean;\n}): Promise<string> {\n const message = opts?.message ?? \"Project name?\";\n const placeholder = opts?.placeholder ?? \"my-project\";\n const allowCurrentDir = opts?.allowCurrentDir ?? false;\n\n const answer = await p.text({\n message,\n placeholder,\n validate: (v) => {\n const value = v.trim();\n if (!value) return \"Project name is required.\";\n if (allowCurrentDir && value === \".\") return;\n if (!/^[a-z0-9-]+$/.test(value)) {\n return allowCurrentDir\n ? \"Use lowercase letters, numbers, and dashes only (or . for current directory).\"\n : \"Use lowercase letters, numbers, and dashes only.\";\n }\n },\n });\n\n if (p.isCancel(answer)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n\n return answer.trim();\n}\n\nexport async function promptAgentDetails(): Promise<{\n name: string;\n templateId: TemplateId;\n}> {\n const answers = await p.group(\n {\n name: () =>\n p.text({\n message: \"Agent name?\",\n placeholder: \"my-agent\",\n validate: (v) => {\n if (!v.trim()) return \"Agent name is required.\";\n if (!/^[a-z0-9-]+$/.test(v)) {\n return \"Use lowercase letters, numbers, and dashes only.\";\n }\n },\n }),\n template: () =>\n p.select<TemplateId>({\n message: \"Choose a template\",\n options: TEMPLATES.map((t) => ({\n value: t.id,\n label: t.label,\n hint: pc.dim(t.hint),\n })),\n }),\n },\n {\n onCancel: () => {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n },\n },\n );\n\n return {\n name: answers.name,\n templateId: answers.template as TemplateId,\n };\n}\n"],"mappings":";;;AAAA,SAAS,WAAW,UAAU,SAAS,UAAU;AACjD,SAAS,qBAAqB;AAC9B,SAAS,MAAM,eAAe;AAC9B,SAAS,cAAc;;;ACqBhB,IAAM,YAA4B;AAAA,EACvC;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS,CAAC,gBAAgB;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS,CAAC,kBAAkB,aAAa;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS,CAAC,kBAAkB,qBAAqB;AAAA,EACnD;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,EACZ;AACF;AAEO,SAAS,gBAAgB,IAA8B;AAC5D,SAAO,UAAU,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE;AAC1C;;;AD/CA,IAAM,aAAa,cAAc,YAAY,GAAG;AAChD,IAAM,YAAY,QAAQ,UAAU;AAE7B,IAAM,gBAAgB,KAAK,WAAW,MAAM,WAAW;AAE9D,eAAe,oBACb,UACA,SACiB;AACjB,MAAI,CAAC,SAAS,SAAS,KAAK,KAAK,CAAC,SAAS,SAAS,MAAM,GAAG;AAC3D,WAAO;AAAA,EACT;AAEA,MAAI;AACF,WAAO,MAAM,OAAO,SAAS;AAAA,MAC3B,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,MACb,eAAe;AAAA,MACf,YAAY;AAAA,IACd,CAAC;AAAA,EACH,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAe,oBACb,KACA,KACe;AACf,QAAM,UAAU,MAAM,QAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAC1D,aAAW,SAAS,SAAS;AAC3B,UAAM,KAAK,KAAK,KAAK,MAAM,IAAI;AAC/B,QAAI,MAAM,YAAY,GAAG;AACvB,YAAM,oBAAoB,IAAI,GAAG;AAAA,IACnC,WAAW,MAAM,OAAO,KAAK,MAAM,SAAS,YAAY;AACtD,UAAI;AACF,YAAI,MAAM,MAAM,SAAS,IAAI,OAAO;AACpC,YAAI,UAAU;AACd,mBAAW,CAAC,MAAM,EAAE,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC5C,cAAI,IAAI,SAAS,IAAI,GAAG;AACtB,kBAAM,IAAI,WAAW,MAAM,EAAE;AAC7B,sBAAU;AAAA,UACZ;AAAA,QACF;AACA,YAAI,SAAS;AACX,gBAAM,YAAY,MAAM,oBAAoB,IAAI,GAAG;AACnD,gBAAM,UAAU,IAAI,WAAW,OAAO;AAAA,QACxC;AAAA,MACF,QAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAsB,gBAAgB,MAGpB;AAChB,QAAM,EAAE,aAAa,UAAU,IAAI;AAGnC,QAAM,GAAG,KAAK,eAAe,SAAS,GAAG,WAAW;AAAA,IAClD,WAAW;AAAA,IACX,OAAO;AAAA,EACT,CAAC;AAGD,QAAM,aAAa;AAAA;AAAA;AAAA,gBAGL,WAAW;AAAA;AAAA;AAAA;AAIzB,QAAM,UAAU,KAAK,WAAW,gBAAgB,GAAG,YAAY,OAAO;AAGtE,QAAM,oBAAoB,WAAW,EAAE,kBAAkB,YAAY,CAAC;AACxE;AAEA,eAAsB,cAAc,MAIlB;AAChB,QAAM,EAAE,WAAW,YAAY,IAAI,IAAI;AACvC,QAAM,OAAO,gBAAgB,UAAU;AACvC,QAAM,WAAW,KAAK,KAAK,UAAU,SAAS;AAG9C,QAAM,GAAG,KAAK,eAAe,UAAU,UAAU,GAAG,UAAU;AAAA,IAC5D,WAAW;AAAA,IACX,OAAO;AAAA,EACT,CAAC;AACD,QAAM,oBAAoB,UAAU,EAAE,gBAAgB,UAAU,CAAC;AAGjE,MAAI,KAAK,QAAQ,SAAS,GAAG;AAC3B,UAAM,UAAU,KAAK,KAAK,MAAM;AAChC,QAAI,cAAc;AAClB,QAAI;AACF,oBAAc,MAAM,SAAS,SAAS,OAAO;AAAA,IAC/C,QAAQ;AAAA,IAER;AACA,UAAM,QAAQ,KAAK,QAChB,OAAO,CAAC,MAAM,CAAC,YAAY,SAAS,CAAC,CAAC,EACtC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAClB,KAAK,IAAI;AACZ,QAAI,OAAO;AACT,YAAM,UAAU,cACZ,YAAY,QAAQ,IAAI,OAAO,QAAQ,OACvC,QAAQ;AACZ,YAAM,UAAU,SAAS,SAAS,OAAO;AAAA,IAC3C;AAAA,EACF;AACF;;;AE5HA,YAAY,OAAO;AACnB,OAAO,QAAQ;AAGf,eAAsB,kBAAkB,MAIpB;AAClB,QAAM,UAAU,MAAM,WAAW;AACjC,QAAM,cAAc,MAAM,eAAe;AACzC,QAAM,kBAAkB,MAAM,mBAAmB;AAEjD,QAAM,SAAS,MAAQ,OAAK;AAAA,IAC1B;AAAA,IACA;AAAA,IACA,UAAU,CAAC,MAAM;AACf,YAAM,QAAQ,EAAE,KAAK;AACrB,UAAI,CAAC,MAAO,QAAO;AACnB,UAAI,mBAAmB,UAAU,IAAK;AACtC,UAAI,CAAC,eAAe,KAAK,KAAK,GAAG;AAC/B,eAAO,kBACH,kFACA;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAC;AAED,MAAM,WAAS,MAAM,GAAG;AACtB,IAAE,SAAO,YAAY;AACrB,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,SAAO,OAAO,KAAK;AACrB;AAEA,eAAsB,qBAGnB;AACD,QAAM,UAAU,MAAQ;AAAA,IACtB;AAAA,MACE,MAAM,MACF,OAAK;AAAA,QACL,SAAS;AAAA,QACT,aAAa;AAAA,QACb,UAAU,CAAC,MAAM;AACf,cAAI,CAAC,EAAE,KAAK,EAAG,QAAO;AACtB,cAAI,CAAC,eAAe,KAAK,CAAC,GAAG;AAC3B,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF,CAAC;AAAA,MACH,UAAU,MACN,SAAmB;AAAA,QACnB,SAAS;AAAA,QACT,SAAS,UAAU,IAAI,CAAC,OAAO;AAAA,UAC7B,OAAO,EAAE;AAAA,UACT,OAAO,EAAE;AAAA,UACT,MAAM,GAAG,IAAI,EAAE,IAAI;AAAA,QACrB,EAAE;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,IACA;AAAA,MACE,UAAU,MAAM;AACd,QAAE,SAAO,YAAY;AACrB,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,YAAY,QAAQ;AAAA,EACtB;AACF;","names":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/utils/fs.ts
|
|
4
|
+
import { access, mkdir } from "fs/promises";
|
|
5
|
+
import { join } from "path";
|
|
6
|
+
import { execSync } from "child_process";
|
|
7
|
+
async function isProjectInitialized(cwd) {
|
|
8
|
+
try {
|
|
9
|
+
await access(join(cwd, "kalp.config.ts"));
|
|
10
|
+
return true;
|
|
11
|
+
} catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
async function ensureConfig(cwd) {
|
|
16
|
+
const initialized = await isProjectInitialized(cwd);
|
|
17
|
+
if (!initialized) {
|
|
18
|
+
throw new Error("kalp.config.ts not found");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async function ensureDirectory(path) {
|
|
22
|
+
await mkdir(path, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
async function installDeps(cwd) {
|
|
25
|
+
execSync("npx nci", {
|
|
26
|
+
cwd,
|
|
27
|
+
stdio: "pipe"
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export {
|
|
32
|
+
isProjectInitialized,
|
|
33
|
+
ensureConfig,
|
|
34
|
+
ensureDirectory,
|
|
35
|
+
installDeps
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=chunk-LAKPXKSS.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 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":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
promptAgentDetails,
|
|
4
|
+
promptProjectName,
|
|
5
|
+
scaffoldAgent,
|
|
6
|
+
scaffoldProject
|
|
7
|
+
} from "./chunk-AME2JH3Z.js";
|
|
8
|
+
import {
|
|
9
|
+
installDeps,
|
|
10
|
+
isProjectInitialized
|
|
11
|
+
} from "./chunk-LAKPXKSS.js";
|
|
12
|
+
|
|
13
|
+
// src/commands/create.ts
|
|
14
|
+
import { defineCommand } from "citty";
|
|
15
|
+
import * as p from "@clack/prompts";
|
|
16
|
+
import pc from "picocolors";
|
|
17
|
+
var LOGO = "\u{1F98B}";
|
|
18
|
+
var create_default = defineCommand({
|
|
19
|
+
meta: { name: "create", description: "Add a new agent to the project" },
|
|
20
|
+
async run() {
|
|
21
|
+
const cwd = process.cwd();
|
|
22
|
+
p.intro(`${LOGO} ${pc.bold("kalp create")}`);
|
|
23
|
+
const needsInit = !await isProjectInitialized(cwd);
|
|
24
|
+
let projectName;
|
|
25
|
+
if (needsInit) {
|
|
26
|
+
p.log.warn(
|
|
27
|
+
`No ${pc.cyan("kalp.config.ts")} found \u2014 initializing project first.`
|
|
28
|
+
);
|
|
29
|
+
projectName = await promptProjectName({
|
|
30
|
+
message: "Project name?",
|
|
31
|
+
placeholder: "my-project"
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const agentAnswers = await promptAgentDetails();
|
|
35
|
+
const s = p.spinner();
|
|
36
|
+
if (needsInit && projectName) {
|
|
37
|
+
s.start("Creating project structure");
|
|
38
|
+
await scaffoldProject({ projectName, targetDir: cwd });
|
|
39
|
+
s.stop("Project structure created");
|
|
40
|
+
s.start("Installing dependencies");
|
|
41
|
+
try {
|
|
42
|
+
await installDeps(cwd);
|
|
43
|
+
s.stop("Dependencies installed");
|
|
44
|
+
} catch {
|
|
45
|
+
s.stop(pc.yellow("Install failed \u2014 run npx nci manually."));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
s.start(`Scaffolding agent ${pc.cyan(agentAnswers.name)}`);
|
|
49
|
+
await scaffoldAgent({
|
|
50
|
+
agentName: agentAnswers.name,
|
|
51
|
+
templateId: agentAnswers.templateId,
|
|
52
|
+
cwd
|
|
53
|
+
});
|
|
54
|
+
s.stop("Agent created");
|
|
55
|
+
p.note(
|
|
56
|
+
[
|
|
57
|
+
`${pc.dim("\u2022")} ${pc.cyan(`agents/${agentAnswers.name}/index.ts`)}`,
|
|
58
|
+
`${pc.dim("\u2022")} ${pc.cyan(`agents/${agentAnswers.name}/steps/`)}`,
|
|
59
|
+
`${pc.dim("\u2022")} ${pc.cyan(`agents/${agentAnswers.name}/tools/`)}`
|
|
60
|
+
].join("\n"),
|
|
61
|
+
"Created"
|
|
62
|
+
);
|
|
63
|
+
p.outro(
|
|
64
|
+
`${LOGO} ${pc.green(`Agent ${pc.bold(agentAnswers.name)} is ready.`)}`
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
export {
|
|
69
|
+
create_default as default
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=create-445EVHYA.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(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":[]}
|
package/dist/index.js
CHANGED
|
@@ -2,16 +2,69 @@
|
|
|
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}";
|
|
5
8
|
var main = defineCommand({
|
|
6
9
|
meta: {
|
|
7
10
|
name: "kalp",
|
|
8
11
|
version: "0.0.1",
|
|
9
12
|
description: "\u{1F98B} Zero-config agent infrastructure"
|
|
10
13
|
},
|
|
14
|
+
args: {
|
|
15
|
+
help: {
|
|
16
|
+
type: "boolean",
|
|
17
|
+
alias: "h",
|
|
18
|
+
description: "Show help",
|
|
19
|
+
default: false
|
|
20
|
+
}
|
|
21
|
+
},
|
|
11
22
|
subCommands: {
|
|
12
|
-
init: () => import("./init-
|
|
13
|
-
create: () => import("./create-
|
|
14
|
-
|
|
23
|
+
init: () => import("./init-O7CMWTZ6.js").then((r) => r.default),
|
|
24
|
+
create: () => import("./create-445EVHYA.js").then((r) => r.default),
|
|
25
|
+
push: () => import("./push-RUBMCAYR.js").then((r) => r.default),
|
|
26
|
+
link: () => import("./link-V3ZDZKDE.js").then((r) => r.default),
|
|
27
|
+
login: () => import("./login-NLTYFJL7.js").then((r) => r.default),
|
|
28
|
+
logout: () => import("./logout-6ZYZGGVI.js").then((r) => r.default)
|
|
29
|
+
},
|
|
30
|
+
run({ args }) {
|
|
31
|
+
if (args.help) {
|
|
32
|
+
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}"));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
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}"));
|
|
15
68
|
}
|
|
16
69
|
});
|
|
17
70
|
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
|
|
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,12 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
+
promptProjectName,
|
|
3
4
|
scaffoldProject
|
|
4
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-AME2JH3Z.js";
|
|
6
|
+
import {
|
|
7
|
+
ensureDirectory,
|
|
8
|
+
installDeps,
|
|
9
|
+
isProjectInitialized
|
|
10
|
+
} from "./chunk-LAKPXKSS.js";
|
|
5
11
|
|
|
6
12
|
// src/commands/init.ts
|
|
7
|
-
import {
|
|
8
|
-
import { access, mkdir } from "fs/promises";
|
|
9
|
-
import { execSync } from "child_process";
|
|
13
|
+
import { resolve, basename } from "path";
|
|
10
14
|
import { defineCommand } from "citty";
|
|
11
15
|
import * as p from "@clack/prompts";
|
|
12
16
|
import pc from "picocolors";
|
|
@@ -16,39 +20,22 @@ var init_default = defineCommand({
|
|
|
16
20
|
async run() {
|
|
17
21
|
const cwd = process.cwd();
|
|
18
22
|
p.intro(`${LOGO} ${pc.bold("kalp init")}`);
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return "Use lowercase letters, numbers, and dashes only (or . for current directory).";
|
|
29
|
-
}
|
|
30
|
-
})
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
onCancel: () => {
|
|
34
|
-
p.cancel("Setup cancelled.");
|
|
35
|
-
process.exit(0);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
const isCurrentDir = answers.name.trim() === ".";
|
|
40
|
-
const targetDir = isCurrentDir ? cwd : resolve(cwd, answers.name);
|
|
41
|
-
const projectName = isCurrentDir ? basename(cwd) : answers.name;
|
|
42
|
-
try {
|
|
43
|
-
await access(join(targetDir, "kalp.config.ts"));
|
|
23
|
+
const projectInputName = await promptProjectName({
|
|
24
|
+
message: "What is the name of your project?",
|
|
25
|
+
placeholder: "my-agent",
|
|
26
|
+
allowCurrentDir: true
|
|
27
|
+
});
|
|
28
|
+
const isCurrentDir = projectInputName === ".";
|
|
29
|
+
const targetDir = isCurrentDir ? cwd : resolve(cwd, projectInputName);
|
|
30
|
+
const projectName = isCurrentDir ? basename(cwd) : projectInputName;
|
|
31
|
+
if (await isProjectInitialized(targetDir)) {
|
|
44
32
|
p.log.error(
|
|
45
|
-
`${pc.cyan("kalp.config.ts")} already exists in
|
|
33
|
+
`${pc.cyan("kalp.config.ts")} already exists in this directory. Run ${pc.cyan("kalp create")} to add an agent.`
|
|
46
34
|
);
|
|
47
35
|
process.exit(1);
|
|
48
|
-
} catch {
|
|
49
36
|
}
|
|
50
37
|
if (!isCurrentDir) {
|
|
51
|
-
await
|
|
38
|
+
await ensureDirectory(targetDir);
|
|
52
39
|
}
|
|
53
40
|
const s = p.spinner();
|
|
54
41
|
s.start("Creating project structure");
|
|
@@ -56,17 +43,17 @@ var init_default = defineCommand({
|
|
|
56
43
|
s.stop("Project structure created");
|
|
57
44
|
s.start("Installing dependencies");
|
|
58
45
|
try {
|
|
59
|
-
|
|
46
|
+
await installDeps(targetDir);
|
|
60
47
|
s.stop("Dependencies installed");
|
|
61
48
|
} catch (err) {
|
|
62
49
|
const msg = err instanceof Error ? err.message : String(err);
|
|
63
50
|
s.stop(pc.yellow("Install failed"));
|
|
64
51
|
p.log.warn(
|
|
65
|
-
`Run ${pc.cyan("
|
|
52
|
+
`Run ${pc.cyan("npx nci")} manually in ${isCurrentDir ? "this directory" : projectInputName + "/"}`
|
|
66
53
|
);
|
|
67
54
|
p.log.info(pc.dim(msg.split("\n")[0] ?? "Unknown error"));
|
|
68
55
|
}
|
|
69
|
-
const cdHint = isCurrentDir ? "" : ` 1. ${pc.cyan(`cd ${
|
|
56
|
+
const cdHint = isCurrentDir ? "" : ` 1. ${pc.cyan(`cd ${projectInputName}`)}
|
|
70
57
|
`;
|
|
71
58
|
const nextStep = isCurrentDir ? "1" : "2";
|
|
72
59
|
p.note(
|
|
@@ -86,4 +73,4 @@ var init_default = defineCommand({
|
|
|
86
73
|
export {
|
|
87
74
|
init_default as default
|
|
88
75
|
};
|
|
89
|
-
//# sourceMappingURL=init-
|
|
76
|
+
//# sourceMappingURL=init-O7CMWTZ6.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 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":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/commands/link.ts
|
|
4
|
+
import { defineCommand } from "citty";
|
|
5
|
+
import * as p from "@clack/prompts";
|
|
6
|
+
import pc from "picocolors";
|
|
7
|
+
var LOGO = "\u{1F98B}";
|
|
8
|
+
var link_default = defineCommand({
|
|
9
|
+
meta: { name: "link", description: "Link project to Kalp cloud" },
|
|
10
|
+
async run() {
|
|
11
|
+
p.intro(`${LOGO} ${pc.bold("kalp link")}`);
|
|
12
|
+
p.note(
|
|
13
|
+
["This command will link your local project to the Kalp cloud.", "", pc.dim("Coming soon...")].join("\n"),
|
|
14
|
+
"Link"
|
|
15
|
+
);
|
|
16
|
+
p.outro(pc.dim("Run kalp login first to authenticate."));
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
export {
|
|
20
|
+
link_default as default
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=link-V3ZDZKDE.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\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: { name: \"link\", description: \"Link project to Kalp cloud\" },\n async run() {\n p.intro(`${LOGO} ${pc.bold(\"kalp link\")}`);\n p.note(\n [\"This command will link your local project to the Kalp cloud.\", \"\", pc.dim(\"Coming soon...\")].join(\"\\n\"),\n \"Link\",\n );\n p.outro(pc.dim(\"Run kalp login first to authenticate.\"));\n },\n});\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AAEf,IAAM,OAAO;AAEb,IAAO,eAAQ,cAAc;AAAA,EAC3B,MAAM,EAAE,MAAM,QAAQ,aAAa,6BAA6B;AAAA,EAChE,MAAM,MAAM;AACV,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,WAAW,CAAC,EAAE;AACzC,IAAE;AAAA,MACA,CAAC,gEAAgE,IAAI,GAAG,IAAI,gBAAgB,CAAC,EAAE,KAAK,IAAI;AAAA,MACxG;AAAA,IACF;AACA,IAAE,QAAM,GAAG,IAAI,uCAAuC,CAAC;AAAA,EACzD;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/commands/login.ts
|
|
4
|
+
import { defineCommand } from "citty";
|
|
5
|
+
import * as p from "@clack/prompts";
|
|
6
|
+
import pc from "picocolors";
|
|
7
|
+
var LOGO = "\u{1F98B}";
|
|
8
|
+
var login_default = defineCommand({
|
|
9
|
+
meta: { name: "login", description: "Authenticate with Kalp" },
|
|
10
|
+
async run() {
|
|
11
|
+
p.intro(`${LOGO} ${pc.bold("kalp login")}`);
|
|
12
|
+
p.note(
|
|
13
|
+
[
|
|
14
|
+
"This command will open a browser to authenticate with Kalp.",
|
|
15
|
+
"",
|
|
16
|
+
pc.dim("Coming soon...")
|
|
17
|
+
].join("\n"),
|
|
18
|
+
"Login"
|
|
19
|
+
);
|
|
20
|
+
p.outro(pc.dim("Authentication flow not yet implemented."));
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
export {
|
|
24
|
+
login_default as default
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=login-NLTYFJL7.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\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: { name: \"login\", description: \"Authenticate with Kalp\" },\n async run() {\n p.intro(`${LOGO} ${pc.bold(\"kalp login\")}`);\n p.note(\n [\n \"This command will open a browser to authenticate with Kalp.\",\n \"\",\n pc.dim(\"Coming soon...\"),\n ].join(\"\\n\"),\n \"Login\",\n );\n p.outro(pc.dim(\"Authentication flow not yet implemented.\"));\n },\n});\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AAEf,IAAM,OAAO;AAEb,IAAO,gBAAQ,cAAc;AAAA,EAC3B,MAAM,EAAE,MAAM,SAAS,aAAa,yBAAyB;AAAA,EAC7D,MAAM,MAAM;AACV,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,YAAY,CAAC,EAAE;AAC1C,IAAE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA,GAAG,IAAI,gBAAgB;AAAA,MACzB,EAAE,KAAK,IAAI;AAAA,MACX;AAAA,IACF;AACA,IAAE,QAAM,GAAG,IAAI,0CAA0C,CAAC;AAAA,EAC5D;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/commands/logout.ts
|
|
4
|
+
import { defineCommand } from "citty";
|
|
5
|
+
import * as p from "@clack/prompts";
|
|
6
|
+
import pc from "picocolors";
|
|
7
|
+
var LOGO = "\u{1F98B}";
|
|
8
|
+
var logout_default = defineCommand({
|
|
9
|
+
meta: { name: "logout", description: "Sign out from Kalp" },
|
|
10
|
+
async run() {
|
|
11
|
+
p.intro(`${LOGO} ${pc.bold("kalp logout")}`);
|
|
12
|
+
p.note(
|
|
13
|
+
[
|
|
14
|
+
"This command will clear your local Kalp credentials.",
|
|
15
|
+
"",
|
|
16
|
+
pc.dim("Coming soon...")
|
|
17
|
+
].join("\n"),
|
|
18
|
+
"Logout"
|
|
19
|
+
);
|
|
20
|
+
p.outro(pc.dim("No credentials stored."));
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
export {
|
|
24
|
+
logout_default as default
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=logout-6ZYZGGVI.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\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: { name: \"logout\", description: \"Sign out from Kalp\" },\n async run() {\n p.intro(`${LOGO} ${pc.bold(\"kalp logout\")}`);\n p.note(\n [\n \"This command will clear your local Kalp credentials.\",\n \"\",\n pc.dim(\"Coming soon...\"),\n ].join(\"\\n\"),\n \"Logout\",\n );\n p.outro(pc.dim(\"No credentials stored.\"));\n },\n});\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AAEf,IAAM,OAAO;AAEb,IAAO,iBAAQ,cAAc;AAAA,EAC3B,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB;AAAA,EAC1D,MAAM,MAAM;AACV,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,aAAa,CAAC,EAAE;AAC3C,IAAE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA,GAAG,IAAI,gBAAgB;AAAA,MACzB,EAAE,KAAK,IAAI;AAAA,MACX;AAAA,IACF;AACA,IAAE,QAAM,GAAG,IAAI,wBAAwB,CAAC;AAAA,EAC1C;AACF,CAAC;","names":[]}
|