@kalphq/cli 0.0.0-dev-20260420003114 → 0.0.0-dev-20260420023057
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/add-5NOYFTJV.js +133 -0
- package/dist/add-5NOYFTJV.js.map +1 -0
- package/dist/{manifest-LKYALPCB.js → build-SUIPVJO6.js} +18 -20
- package/dist/build-SUIPVJO6.js.map +1 -0
- package/dist/chunk-6LLXGS2P.js +25 -0
- package/dist/chunk-6LLXGS2P.js.map +1 -0
- package/dist/{chunk-INMLAVHJ.js → chunk-CJCIZDCF.js} +105 -24
- package/dist/chunk-CJCIZDCF.js.map +1 -0
- package/dist/{chunk-DOHVZBJO.js → chunk-HD5FT7T6.js} +43 -5
- package/dist/chunk-HD5FT7T6.js.map +1 -0
- package/dist/{create-LCVZRFEF.js → create-RSQEKCI6.js} +5 -8
- package/dist/{create-LCVZRFEF.js.map → create-RSQEKCI6.js.map} +1 -1
- package/dist/delete-ZJB2JGAL.js +136 -0
- package/dist/delete-ZJB2JGAL.js.map +1 -0
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/{init-VMOFA2AV.js → init-CUBJEWPE.js} +3 -5
- package/dist/init-CUBJEWPE.js.map +1 -0
- package/dist/list-BOE33VSI.js +120 -0
- package/dist/list-BOE33VSI.js.map +1 -0
- package/dist/{push-RUUHE6RW.js → push-L3BXB6OC.js} +13 -15
- package/dist/push-L3BXB6OC.js.map +1 -0
- package/dist/secrets-3SKCSAGD.js +33 -0
- package/dist/secrets-3SKCSAGD.js.map +1 -0
- package/package.json +2 -2
- package/dist/chunk-DOHVZBJO.js.map +0 -1
- package/dist/chunk-INMLAVHJ.js.map +0 -1
- package/dist/init-VMOFA2AV.js.map +0 -1
- package/dist/manifest-LKYALPCB.js.map +0 -1
- package/dist/push-RUUHE6RW.js.map +0 -1
- package/dist/skill-IGGMF5GR.js +0 -346
- package/dist/skill-IGGMF5GR.js.map +0 -1
- package/templates/project/agents/.gitkeep +0 -0
- package/templates/project/meta/manifests/.gitkeep +0 -1
- package/templates/project/meta/skills/.gitkeep +0 -1
- package/templates/project/meta/skills/applied.json +0 -4
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
promptProjectName,
|
|
5
5
|
scaffoldAgent,
|
|
6
6
|
scaffoldProject
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-HD5FT7T6.js";
|
|
8
8
|
import {
|
|
9
9
|
installDeps,
|
|
10
10
|
isProjectInitialized
|
|
@@ -38,7 +38,7 @@ var create_default = defineCommand({
|
|
|
38
38
|
s.start("Creating project structure");
|
|
39
39
|
await scaffoldProject({ projectName, targetDir: cwd });
|
|
40
40
|
s.stop("Project structure created");
|
|
41
|
-
s.start("Installing
|
|
41
|
+
s.start("Installing Dependencies");
|
|
42
42
|
try {
|
|
43
43
|
await installDeps(cwd);
|
|
44
44
|
s.stop("Dependencies installed");
|
|
@@ -61,14 +61,11 @@ var create_default = defineCommand({
|
|
|
61
61
|
`${pc.dim("\u2022")} ${pc.cyan(`agents/${agentAnswers.name}/index.ts`)}`,
|
|
62
62
|
`${pc.dim("\u2022")} ${pc.cyan(`agents/${agentAnswers.name}/steps/`)}`,
|
|
63
63
|
`${pc.dim("\u2022")} ${pc.cyan(`agents/${agentAnswers.name}/tools/`)}`,
|
|
64
|
-
`${pc.dim("\u2022")} ${pc.cyan(`agents/${agentAnswers.name}/
|
|
64
|
+
`${pc.dim("\u2022")} ${pc.cyan(`agents/${agentAnswers.name}/routes/`)}`,
|
|
65
|
+
`${pc.dim("\u2022")} ${pc.cyan(`agents/${agentAnswers.name}/flows/`)}`
|
|
65
66
|
].join("\n"),
|
|
66
67
|
"Created"
|
|
67
68
|
);
|
|
68
|
-
p.log.info(pc.bold("Next"));
|
|
69
|
-
p.log.info(
|
|
70
|
-
`Run ${pc.cyan(`kalp skill add -a ${agentAnswers.name} -s chat-core`)} to bootstrap capabilities.`
|
|
71
|
-
);
|
|
72
69
|
p.outro(
|
|
73
70
|
`${LOGO} ${pc.green(`Agent ${pc.bold(agentAnswers.name)} is ready.`)}`
|
|
74
71
|
);
|
|
@@ -77,4 +74,4 @@ var create_default = defineCommand({
|
|
|
77
74
|
export {
|
|
78
75
|
create_default as default
|
|
79
76
|
};
|
|
80
|
-
//# sourceMappingURL=create-
|
|
77
|
+
//# sourceMappingURL=create-RSQEKCI6.js.map
|
|
@@ -1 +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
|
|
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 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 `${pc.dim(\"•\")} ${pc.cyan(`agents/${agentAnswers.name}/routes/`)}`,\n `${pc.dim(\"•\")} ${pc.cyan(`agents/${agentAnswers.name}/flows/`)}`,\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;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,QAC/D,GAAG,GAAG,IAAI,QAAG,CAAC,IAAI,GAAG,KAAK,UAAU,aAAa,IAAI,UAAU,CAAC;AAAA,QAChE,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":[]}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
getAuthToken
|
|
4
|
+
} from "./chunk-6LLXGS2P.js";
|
|
5
|
+
import "./chunk-2H7UOFLK.js";
|
|
6
|
+
|
|
7
|
+
// src/commands/secrets/delete.ts
|
|
8
|
+
import { defineCommand } from "citty";
|
|
9
|
+
import * as p from "@clack/prompts";
|
|
10
|
+
import pc from "picocolors";
|
|
11
|
+
import { readFile, writeFile } from "fs/promises";
|
|
12
|
+
import { join } from "path";
|
|
13
|
+
var LOGO = "\u{1F98B}";
|
|
14
|
+
async function fetchSecretsFromCloud() {
|
|
15
|
+
return [{ key: "STRIPE_SECRET_KEY" }, { key: "OPENAI_API_KEY" }];
|
|
16
|
+
}
|
|
17
|
+
async function deleteSecretFromCloud(key) {
|
|
18
|
+
console.log(pc.dim(`[Simulated] Deleting secret ${key} from Kalp Cloud...`));
|
|
19
|
+
}
|
|
20
|
+
async function removeSecretFromLocalConfig(cwd, key) {
|
|
21
|
+
const configPath = join(cwd, "kalp.config.ts");
|
|
22
|
+
let content;
|
|
23
|
+
try {
|
|
24
|
+
content = await readFile(configPath, "utf-8");
|
|
25
|
+
} catch {
|
|
26
|
+
throw new Error("kalp.config.ts not found. Run `kalp init` first.");
|
|
27
|
+
}
|
|
28
|
+
const regex = new RegExp(`["']${key}["']`);
|
|
29
|
+
if (!regex.test(content)) {
|
|
30
|
+
throw new Error(`Secret ${key} not found in local config`);
|
|
31
|
+
}
|
|
32
|
+
const match = content.match(/secrets:\s*\[([^\]]*)\]/);
|
|
33
|
+
if (!match) {
|
|
34
|
+
throw new Error("Could not find secrets array in kalp.config.ts");
|
|
35
|
+
}
|
|
36
|
+
const currentArray = match[1];
|
|
37
|
+
if (!currentArray) {
|
|
38
|
+
throw new Error("Secrets array is empty in kalp.config.ts");
|
|
39
|
+
}
|
|
40
|
+
let newArray = currentArray.replace(new RegExp(`["']${key}["']\\s*,?\\s*`), "").trim();
|
|
41
|
+
newArray = newArray.replace(/,\s*$/, "");
|
|
42
|
+
content = content.replace(
|
|
43
|
+
/secrets:\s*\[([^\]]*)\]/,
|
|
44
|
+
`secrets: [${newArray}]`
|
|
45
|
+
);
|
|
46
|
+
await writeFile(configPath, content, "utf-8");
|
|
47
|
+
}
|
|
48
|
+
var delete_default = defineCommand({
|
|
49
|
+
meta: {
|
|
50
|
+
name: "delete",
|
|
51
|
+
description: "Delete a secret from Kalp Cloud and local config"
|
|
52
|
+
},
|
|
53
|
+
args: {
|
|
54
|
+
key: {
|
|
55
|
+
type: "string",
|
|
56
|
+
alias: "k",
|
|
57
|
+
description: "Secret key name to delete"
|
|
58
|
+
},
|
|
59
|
+
help: {
|
|
60
|
+
type: "boolean",
|
|
61
|
+
alias: "h",
|
|
62
|
+
description: "Show help",
|
|
63
|
+
default: false
|
|
64
|
+
},
|
|
65
|
+
yes: {
|
|
66
|
+
type: "boolean",
|
|
67
|
+
alias: "y",
|
|
68
|
+
description: "Skip confirmation",
|
|
69
|
+
default: false
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
async run({ args }) {
|
|
73
|
+
const cwd = process.cwd();
|
|
74
|
+
if (args.help) {
|
|
75
|
+
p.log.info(`${pc.bold("Usage")}: kalp secrets delete -k <key>`);
|
|
76
|
+
p.log.info(pc.dim("Example: kalp secrets delete -k STRIPE_SECRET_KEY"));
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
p.intro(`${LOGO} ${pc.bold("kalp secrets delete")}`);
|
|
80
|
+
const token = await getAuthToken();
|
|
81
|
+
if (!token) {
|
|
82
|
+
p.log.warn(pc.yellow("Not logged in. Run `kalp login` first."));
|
|
83
|
+
p.outro("Authentication required");
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
let key = args.key;
|
|
87
|
+
if (!key) {
|
|
88
|
+
const secrets = await fetchSecretsFromCloud();
|
|
89
|
+
if (secrets.length === 0) {
|
|
90
|
+
p.log.info(pc.dim("No secrets found in Kalp Cloud."));
|
|
91
|
+
p.outro("Nothing to delete");
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const selected = await p.select({
|
|
95
|
+
message: "Select a secret to delete",
|
|
96
|
+
options: secrets.map((s2) => ({ value: s2.key, label: s2.key }))
|
|
97
|
+
});
|
|
98
|
+
if (p.isCancel(selected)) {
|
|
99
|
+
p.outro("Cancelled");
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
key = selected;
|
|
103
|
+
}
|
|
104
|
+
if (!args.yes) {
|
|
105
|
+
const confirm2 = await p.confirm({
|
|
106
|
+
message: `Are you sure you want to delete ${pc.cyan(key)}? This action cannot be undone.`,
|
|
107
|
+
initialValue: false
|
|
108
|
+
});
|
|
109
|
+
if (p.isCancel(confirm2) || !confirm2) {
|
|
110
|
+
p.outro("Cancelled");
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const s = p.spinner();
|
|
115
|
+
s.start(`Deleting ${pc.cyan(key)}...`);
|
|
116
|
+
try {
|
|
117
|
+
await deleteSecretFromCloud(key);
|
|
118
|
+
await removeSecretFromLocalConfig(cwd, key);
|
|
119
|
+
s.stop(`Secret ${pc.cyan(key)} deleted successfully`);
|
|
120
|
+
p.outro("Done");
|
|
121
|
+
} catch (error) {
|
|
122
|
+
s.stop("Failed to delete secret");
|
|
123
|
+
p.log.error(
|
|
124
|
+
pc.red(
|
|
125
|
+
`Error: ${error instanceof Error ? error.message : String(error)}`
|
|
126
|
+
)
|
|
127
|
+
);
|
|
128
|
+
p.outro("Failed");
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
export {
|
|
134
|
+
delete_default as default
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=delete-ZJB2JGAL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/secrets/delete.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { getAuthToken } from \"../../utils/auth.js\";\n\nconst LOGO = \"🦋\";\n\ninterface CloudSecret {\n key: string;\n}\n\nasync function fetchSecretsFromCloud(): Promise<CloudSecret[]> {\n // TODO: Implement real API call to Kalp Cloud\n return [{ key: \"STRIPE_SECRET_KEY\" }, { key: \"OPENAI_API_KEY\" }];\n}\n\nasync function deleteSecretFromCloud(key: string): Promise<void> {\n // TODO: Implement real API call to Kalp Cloud\n console.log(pc.dim(`[Simulated] Deleting secret ${key} from Kalp Cloud...`));\n}\n\nasync function removeSecretFromLocalConfig(\n cwd: string,\n key: string,\n): Promise<void> {\n const configPath = join(cwd, \"kalp.config.ts\");\n let content: string;\n\n try {\n content = await readFile(configPath, \"utf-8\");\n } catch {\n throw new Error(\"kalp.config.ts not found. Run `kalp init` first.\");\n }\n\n // Check if key exists\n const regex = new RegExp(`[\"']${key}[\"']`);\n if (!regex.test(content)) {\n // Key not in local config, that's ok\n throw new Error(`Secret ${key} not found in local config`);\n }\n\n // Remove secret from array\n const match = content.match(/secrets:\\s*\\[([^\\]]*)\\]/);\n\n if (!match) {\n throw new Error(\"Could not find secrets array in kalp.config.ts\");\n }\n\n const currentArray = match[1];\n if (!currentArray) {\n throw new Error(\"Secrets array is empty in kalp.config.ts\");\n }\n\n // Remove the key and clean up commas\n let newArray = currentArray\n .replace(new RegExp(`[\"']${key}[\"']\\\\s*,?\\\\s*`), \"\")\n .trim();\n // Remove trailing comma if any\n newArray = newArray.replace(/,\\s*$/, \"\");\n\n content = content.replace(\n /secrets:\\s*\\[([^\\]]*)\\]/,\n `secrets: [${newArray}]`,\n );\n\n await writeFile(configPath, content, \"utf-8\");\n}\n\nexport default defineCommand({\n meta: {\n name: \"delete\",\n description: \"Delete a secret from Kalp Cloud and local config\",\n },\n args: {\n key: {\n type: \"string\",\n alias: \"k\",\n description: \"Secret key name to delete\",\n },\n help: {\n type: \"boolean\",\n alias: \"h\",\n description: \"Show help\",\n default: false,\n },\n yes: {\n type: \"boolean\",\n alias: \"y\",\n description: \"Skip confirmation\",\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 delete -k <key>`);\n p.log.info(pc.dim(\"Example: kalp secrets delete -k STRIPE_SECRET_KEY\"));\n return;\n }\n\n p.intro(`${LOGO} ${pc.bold(\"kalp secrets delete\")}`);\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 let key = args.key;\n\n // Interactive selection if not provided\n if (!key) {\n const secrets = await fetchSecretsFromCloud();\n if (secrets.length === 0) {\n p.log.info(pc.dim(\"No secrets found in Kalp Cloud.\"));\n p.outro(\"Nothing to delete\");\n return;\n }\n\n const selected = await p.select({\n message: \"Select a secret to delete\",\n options: secrets.map((s) => ({ value: s.key, label: s.key })),\n });\n\n if (p.isCancel(selected)) {\n p.outro(\"Cancelled\");\n return;\n }\n\n key = selected as string;\n }\n\n // Confirmation unless --yes flag\n if (!args.yes) {\n const confirm = await p.confirm({\n message: `Are you sure you want to delete ${pc.cyan(key)}? This action cannot be undone.`,\n initialValue: false,\n });\n\n if (p.isCancel(confirm) || !confirm) {\n p.outro(\"Cancelled\");\n return;\n }\n }\n\n const s = p.spinner();\n s.start(`Deleting ${pc.cyan(key)}...`);\n\n try {\n // Delete from cloud (simulated)\n await deleteSecretFromCloud(key);\n\n // Remove from local config\n await removeSecretFromLocalConfig(cwd, key);\n\n s.stop(`Secret ${pc.cyan(key)} deleted successfully`);\n p.outro(\"Done\");\n } catch (error) {\n s.stop(\"Failed to delete secret\");\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","confirm"]}
|
package/dist/index.js
CHANGED
|
@@ -8,10 +8,10 @@ var LOGO = "\u{1F98B}";
|
|
|
8
8
|
var COMMANDS = [
|
|
9
9
|
["init", "Create a new Kalp project"],
|
|
10
10
|
["create", "Add a new agent"],
|
|
11
|
-
["
|
|
12
|
-
["manifest", "Generate versioned agent manifest"],
|
|
11
|
+
["build", "Build agent manifest (DSL -> IR JSON)"],
|
|
13
12
|
["push", "Push agent to Kalp"],
|
|
14
13
|
["link", "Link project to Kalp cloud"],
|
|
14
|
+
["secrets", "Manage secrets"],
|
|
15
15
|
["login", "Authenticate with Kalp"],
|
|
16
16
|
["logout", "Sign out from Kalp"]
|
|
17
17
|
];
|
|
@@ -40,12 +40,12 @@ var main = defineCommand({
|
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
subCommands: {
|
|
43
|
-
init: () => import("./init-
|
|
44
|
-
create: () => import("./create-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
push: () => import("./push-RUUHE6RW.js").then((r) => r.default),
|
|
43
|
+
init: () => import("./init-CUBJEWPE.js").then((r) => r.default),
|
|
44
|
+
create: () => import("./create-RSQEKCI6.js").then((r) => r.default),
|
|
45
|
+
build: () => import("./build-SUIPVJO6.js").then((r) => r.default),
|
|
46
|
+
push: () => import("./push-L3BXB6OC.js").then((r) => r.default),
|
|
48
47
|
link: () => import("./link-YKDZ7Y6K.js").then((r) => r.default),
|
|
48
|
+
secrets: () => import("./secrets-3SKCSAGD.js").then((r) => r.default),
|
|
49
49
|
login: () => import("./login-LBEXP7ET.js").then((r) => r.default),
|
|
50
50
|
logout: () => import("./logout-S3PV4WE7.js").then((r) => r.default)
|
|
51
51
|
},
|
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 COMMANDS = [\n [\"init\", \"Create a new Kalp project\"],\n [\"create\", \"Add a new agent\"],\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 COMMANDS = [\n [\"init\", \"Create a new Kalp project\"],\n [\"create\", \"Add a new agent\"],\n [\"build\", \"Build agent manifest (DSL -> IR JSON)\"],\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 build: () => import(\"./commands/build.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,SAAS,uCAAuC;AAAA,EACjD,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,OAAO,MAAM,OAAO,qBAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IAChE,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":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
promptProjectName,
|
|
4
4
|
scaffoldProject
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-HD5FT7T6.js";
|
|
6
6
|
import {
|
|
7
7
|
ensureDirectory,
|
|
8
8
|
installDeps,
|
|
@@ -42,7 +42,7 @@ var init_default = defineCommand({
|
|
|
42
42
|
s.start("Creating project structure");
|
|
43
43
|
await scaffoldProject({ projectName, targetDir });
|
|
44
44
|
s.stop("Project structure created");
|
|
45
|
-
s.start("Installing
|
|
45
|
+
s.start("Installing Dependencies");
|
|
46
46
|
try {
|
|
47
47
|
await installDeps(targetDir);
|
|
48
48
|
s.stop("Dependencies installed");
|
|
@@ -55,8 +55,6 @@ var init_default = defineCommand({
|
|
|
55
55
|
p.log.info(pc.dim(msg.split("\n")[0] ?? "Unknown error"));
|
|
56
56
|
}
|
|
57
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
58
|
p.log.info(`${pc.cyan("agents/")} \u2014 your agents live here`);
|
|
61
59
|
console.log("");
|
|
62
60
|
p.log.info(pc.bold("Next"));
|
|
@@ -72,4 +70,4 @@ var init_default = defineCommand({
|
|
|
72
70
|
export {
|
|
73
71
|
init_default as default
|
|
74
72
|
};
|
|
75
|
-
//# sourceMappingURL=init-
|
|
73
|
+
//# sourceMappingURL=init-CUBJEWPE.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,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"]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} from "./chunk-INMLAVHJ.js";
|
|
3
|
+
readLatestVersionedManifest
|
|
4
|
+
} from "./chunk-CJCIZDCF.js";
|
|
6
5
|
import {
|
|
7
6
|
ensureConfig
|
|
8
7
|
} from "./chunk-Q455HC3P.js";
|
|
@@ -51,19 +50,18 @@ var push_default = defineCommand({
|
|
|
51
50
|
process.exit(1);
|
|
52
51
|
}
|
|
53
52
|
const s = p.spinner();
|
|
54
|
-
s.start(`
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
p.log.info(pc.dim(msg.split("\n")[0] ?? "Unknown error"));
|
|
53
|
+
s.start(`Loading latest build for ${pc.cyan(agentName)}`);
|
|
54
|
+
const version = await readLatestVersionedManifest({ cwd, agentName }).catch(
|
|
55
|
+
() => null
|
|
56
|
+
);
|
|
57
|
+
if (!version) {
|
|
58
|
+
s.stop(pc.red("No built manifest found"));
|
|
59
|
+
p.log.info(
|
|
60
|
+
pc.dim(`Run ${pc.cyan(`kalp build -a ${agentName}`)} before pushing.`)
|
|
61
|
+
);
|
|
64
62
|
process.exit(1);
|
|
65
63
|
}
|
|
66
|
-
s.stop(`
|
|
64
|
+
s.stop(`Using build ${pc.cyan(version.versionId)}`);
|
|
67
65
|
console.log("\n" + pc.dim("\u2500".repeat(50)));
|
|
68
66
|
console.log(pc.cyan("Agent Manifest (JSON):"));
|
|
69
67
|
console.log(pc.dim("\u2500".repeat(50)));
|
|
@@ -78,4 +76,4 @@ var push_default = defineCommand({
|
|
|
78
76
|
export {
|
|
79
77
|
push_default as default
|
|
80
78
|
};
|
|
81
|
-
//# sourceMappingURL=push-
|
|
79
|
+
//# sourceMappingURL=push-L3BXB6OC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/push.ts"],"sourcesContent":["import { access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { ensureConfig } from \"../utils/fs.js\";\nimport { readLatestVersionedManifest } from \"../utils/manifest.js\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: { name: \"push\", description: \"Push an agent to Kalp (preview mode)\" },\n args: {\n agent: {\n type: \"string\",\n alias: \"a\",\n description: \"Agent name to push\",\n required: false,\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n\n p.intro(`${LOGO} ${pc.bold(\"kalp push\")}`);\n\n // ── Validate agent name ─────────────────────────────────────────────────\n const agentName = args.agent;\n if (!agentName) {\n p.log.error(`Missing required flag ${pc.cyan(\"-a <agent-name>\")}`);\n p.outro(pc.dim(`Example: ${pc.cyan(\"kalp push -a my-agent\")}`));\n process.exit(1);\n }\n\n // ── Validate kalp.config.ts exists ─────────────────────────────────────\n try {\n await ensureConfig(cwd);\n } catch {\n p.log.error(`${pc.cyan(\"kalp.config.ts\")} not found`);\n p.outro(pc.dim(`Run ${pc.cyan(\"kalp init\")} first.`));\n process.exit(1);\n }\n\n // ── Find agent ──────────────────────────────────────────────────────────\n const agentPath = join(cwd, \"agents\", agentName, \"index.ts\");\n try {\n await access(agentPath);\n } catch {\n p.log.error(\n `Agent ${pc.cyan(agentName)} not found at ${pc.cyan(`agents/${agentName}/index.ts`)}`,\n );\n process.exit(1);\n }\n\n const s = p.spinner();\n s.start(`Loading latest build for ${pc.cyan(agentName)}`);\n\n const version = await readLatestVersionedManifest({ cwd, agentName }).catch(\n () => null,\n );\n\n if (!version) {\n s.stop(pc.red(\"No built manifest found\"));\n p.log.info(\n pc.dim(`Run ${pc.cyan(`kalp build -a ${agentName}`)} before pushing.`),\n );\n process.exit(1);\n }\n\n s.stop(`Using build ${pc.cyan(version.versionId)}`);\n\n // ── Output JSON ─────────────────────────────────────────────────────────\n console.log(\"\\n\" + pc.dim(\"─\".repeat(50)));\n console.log(pc.cyan(\"Agent Manifest (JSON):\"));\n console.log(pc.dim(\"─\".repeat(50)));\n console.log(JSON.stringify(version, null, 2));\n console.log(pc.dim(\"─\".repeat(50)) + \"\\n\");\n p.log.info(`${pc.cyan(\"Saved\")}: ${version.outputPath}`);\n\n p.outro(\n `${LOGO} ${pc.green(\"Manifest ready\")} ${pc.dim(\"— versioned in meta/manifests\")}`,\n );\n },\n});\n"],"mappings":";;;;;;;;;;AAAA,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AAIf,IAAM,OAAO;AAEb,IAAO,eAAQ,cAAc;AAAA,EAC3B,MAAM,EAAE,MAAM,QAAQ,aAAa,uCAAuC;AAAA,EAC1E,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,UAAM,MAAM,QAAQ,IAAI;AAExB,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,WAAW,CAAC,EAAE;AAGzC,UAAM,YAAY,KAAK;AACvB,QAAI,CAAC,WAAW;AACd,MAAE,MAAI,MAAM,yBAAyB,GAAG,KAAK,iBAAiB,CAAC,EAAE;AACjE,MAAE,QAAM,GAAG,IAAI,YAAY,GAAG,KAAK,uBAAuB,CAAC,EAAE,CAAC;AAC9D,cAAQ,KAAK,CAAC;AAAA,IAChB;AAGA,QAAI;AACF,YAAM,aAAa,GAAG;AAAA,IACxB,QAAQ;AACN,MAAE,MAAI,MAAM,GAAG,GAAG,KAAK,gBAAgB,CAAC,YAAY;AACpD,MAAE,QAAM,GAAG,IAAI,OAAO,GAAG,KAAK,WAAW,CAAC,SAAS,CAAC;AACpD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAGA,UAAM,YAAY,KAAK,KAAK,UAAU,WAAW,UAAU;AAC3D,QAAI;AACF,YAAM,OAAO,SAAS;AAAA,IACxB,QAAQ;AACN,MAAE,MAAI;AAAA,QACJ,SAAS,GAAG,KAAK,SAAS,CAAC,iBAAiB,GAAG,KAAK,UAAU,SAAS,WAAW,CAAC;AAAA,MACrF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,IAAM,UAAQ;AACpB,MAAE,MAAM,4BAA4B,GAAG,KAAK,SAAS,CAAC,EAAE;AAExD,UAAM,UAAU,MAAM,4BAA4B,EAAE,KAAK,UAAU,CAAC,EAAE;AAAA,MACpE,MAAM;AAAA,IACR;AAEA,QAAI,CAAC,SAAS;AACZ,QAAE,KAAK,GAAG,IAAI,yBAAyB,CAAC;AACxC,MAAE,MAAI;AAAA,QACJ,GAAG,IAAI,OAAO,GAAG,KAAK,iBAAiB,SAAS,EAAE,CAAC,kBAAkB;AAAA,MACvE;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,MAAE,KAAK,eAAe,GAAG,KAAK,QAAQ,SAAS,CAAC,EAAE;AAGlD,YAAQ,IAAI,OAAO,GAAG,IAAI,SAAI,OAAO,EAAE,CAAC,CAAC;AACzC,YAAQ,IAAI,GAAG,KAAK,wBAAwB,CAAC;AAC7C,YAAQ,IAAI,GAAG,IAAI,SAAI,OAAO,EAAE,CAAC,CAAC;AAClC,YAAQ,IAAI,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAC5C,YAAQ,IAAI,GAAG,IAAI,SAAI,OAAO,EAAE,CAAC,IAAI,IAAI;AACzC,IAAE,MAAI,KAAK,GAAG,GAAG,KAAK,OAAO,CAAC,KAAK,QAAQ,UAAU,EAAE;AAEvD,IAAE;AAAA,MACA,GAAG,IAAI,IAAI,GAAG,MAAM,gBAAgB,CAAC,IAAI,GAAG,IAAI,oCAA+B,CAAC;AAAA,IAClF;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import "./chunk-2H7UOFLK.js";
|
|
3
|
+
|
|
4
|
+
// src/commands/secrets/index.ts
|
|
5
|
+
import { defineCommand } from "citty";
|
|
6
|
+
import * as p from "@clack/prompts";
|
|
7
|
+
import pc from "picocolors";
|
|
8
|
+
var LOGO = "\u{1F98B}";
|
|
9
|
+
var secrets_default = defineCommand({
|
|
10
|
+
meta: {
|
|
11
|
+
name: "secrets",
|
|
12
|
+
description: "Manage Kalp Cloud secrets"
|
|
13
|
+
},
|
|
14
|
+
subCommands: {
|
|
15
|
+
list: () => import("./list-BOE33VSI.js").then((r) => r.default),
|
|
16
|
+
add: () => import("./add-5NOYFTJV.js").then((r) => r.default),
|
|
17
|
+
delete: () => import("./delete-ZJB2JGAL.js").then((r) => r.default)
|
|
18
|
+
},
|
|
19
|
+
run() {
|
|
20
|
+
p.intro(`${LOGO} ${pc.bold("kalp secrets")}`);
|
|
21
|
+
p.log.info(pc.bold("Subcommands:"));
|
|
22
|
+
console.log(` ${pc.cyan("list")} List secrets from Kalp Cloud`);
|
|
23
|
+
console.log(` ${pc.cyan("add")} Add a secret to Kalp Cloud`);
|
|
24
|
+
console.log(` ${pc.cyan("delete")} Delete a secret from Kalp Cloud`);
|
|
25
|
+
console.log("");
|
|
26
|
+
p.log.info(`Run ${pc.cyan("kalp secrets <subcommand> --help")} for more info.`);
|
|
27
|
+
p.outro("");
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
export {
|
|
31
|
+
secrets_default as default
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=secrets-3SKCSAGD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/secrets/index.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\n\nconst LOGO = \"🦋\";\n\nexport default defineCommand({\n meta: {\n name: \"secrets\",\n description: \"Manage Kalp Cloud secrets\",\n },\n subCommands: {\n list: () => import(\"./list.js\").then((r) => r.default),\n add: () => import(\"./add.js\").then((r) => r.default),\n delete: () => import(\"./delete.js\").then((r) => r.default),\n },\n run() {\n p.intro(`${LOGO} ${pc.bold(\"kalp secrets\")}`);\n p.log.info(pc.bold(\"Subcommands:\"));\n console.log(` ${pc.cyan(\"list\")} List secrets from Kalp Cloud`);\n console.log(` ${pc.cyan(\"add\")} Add a secret to Kalp Cloud`);\n console.log(` ${pc.cyan(\"delete\")} Delete a secret from Kalp Cloud`);\n console.log(\"\");\n p.log.info(`Run ${pc.cyan(\"kalp secrets <subcommand> --help\")} for more info.`);\n p.outro(\"\");\n },\n});\n"],"mappings":";;;;AAAA,SAAS,qBAAqB;AAC9B,YAAY,OAAO;AACnB,OAAO,QAAQ;AAEf,IAAM,OAAO;AAEb,IAAO,kBAAQ,cAAc;AAAA,EAC3B,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,aAAa;AAAA,IACX,MAAM,MAAM,OAAO,oBAAW,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IACrD,KAAK,MAAM,OAAO,mBAAU,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,IACnD,QAAQ,MAAM,OAAO,sBAAa,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,EAC3D;AAAA,EACA,MAAM;AACJ,IAAE,QAAM,GAAG,IAAI,IAAI,GAAG,KAAK,cAAc,CAAC,EAAE;AAC5C,IAAE,MAAI,KAAK,GAAG,KAAK,cAAc,CAAC;AAClC,YAAQ,IAAI,KAAK,GAAG,KAAK,MAAM,CAAC,kCAAkC;AAClE,YAAQ,IAAI,KAAK,GAAG,KAAK,KAAK,CAAC,iCAAiC;AAChE,YAAQ,IAAI,KAAK,GAAG,KAAK,QAAQ,CAAC,mCAAmC;AACrE,YAAQ,IAAI,EAAE;AACd,IAAE,MAAI,KAAK,OAAO,GAAG,KAAK,kCAAkC,CAAC,iBAAiB;AAC9E,IAAE,QAAM,EAAE;AAAA,EACZ;AACF,CAAC;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kalphq/cli",
|
|
3
|
-
"version": "0.0.0-dev-
|
|
3
|
+
"version": "0.0.0-dev-20260420023057",
|
|
4
4
|
"description": "Zero-config CLI for deploying Kalp agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"picocolors": "1.1.1",
|
|
25
25
|
"zod": "3.25.76",
|
|
26
26
|
"zod-to-json-schema": "3.25.2",
|
|
27
|
-
"@kalphq/sdk": "0.0.0-dev-
|
|
27
|
+
"@kalphq/sdk": "0.0.0-dev-20260420023057"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "^22.15.3",
|