@kalphq/cli 0.0.0-dev-20260423042205 → 0.0.0-dev-20260423043255
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/index.js
CHANGED
|
@@ -42,7 +42,7 @@ var main = defineCommand({
|
|
|
42
42
|
},
|
|
43
43
|
subCommands: {
|
|
44
44
|
create: () => import("./create-7J5R6OVF.js").then((r) => r.default),
|
|
45
|
-
push: () => import("./push-
|
|
45
|
+
push: () => import("./push-JSUCSTUL.js").then((r) => r.default),
|
|
46
46
|
link: () => import("./link-WZQSR2TM.js").then((r) => r.default),
|
|
47
47
|
secrets: () => import("./secrets-KFMVBKJQ.js").then((r) => r.default),
|
|
48
48
|
login: () => import("./login-JYPWGL6P.js").then((r) => r.default),
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
// src/commands/push.ts
|
|
7
7
|
import { access as access2 } from "fs/promises";
|
|
8
8
|
import { join as join4 } from "path";
|
|
9
|
+
import { createRequire } from "module";
|
|
9
10
|
import { defineCommand } from "citty";
|
|
10
11
|
import * as p from "@clack/prompts";
|
|
11
12
|
import pc from "picocolors";
|
|
@@ -306,46 +307,25 @@ async function readAgentManifest(params) {
|
|
|
306
307
|
|
|
307
308
|
// src/commands/push.ts
|
|
308
309
|
var LOGO = "\u{1F98B}";
|
|
309
|
-
var
|
|
310
|
+
var require2 = createRequire(import.meta.url);
|
|
311
|
+
var CLI_VERSION = require2("@kalphq/cli/package.json").version;
|
|
312
|
+
var IS_DEV_VERSION = CLI_VERSION.includes("dev");
|
|
313
|
+
var CLOUD_API = process.env.KALP_CLOUD_URL || (IS_DEV_VERSION ? "http://localhost:3000" : "https://app.usekalp.com");
|
|
310
314
|
function formatBytes(bytes) {
|
|
311
315
|
if (bytes < 1024) return `${bytes} B`;
|
|
312
316
|
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
313
317
|
}
|
|
314
|
-
function printPushResult(agentName, hash, handlers
|
|
318
|
+
function printPushResult(agentName, hash, handlers) {
|
|
315
319
|
const div = pc.dim("\u2500".repeat(48));
|
|
320
|
+
const handlerCount = Object.keys(handlers).length;
|
|
321
|
+
const totalSize = Object.values(handlers).reduce((sum, h) => sum + h.size, 0);
|
|
316
322
|
console.log("\n" + div);
|
|
317
323
|
console.log(pc.green("\u2714 Deployed"));
|
|
318
324
|
console.log("");
|
|
319
|
-
console.log(
|
|
320
|
-
console.log(
|
|
321
|
-
|
|
322
|
-
for (const [name, h] of Object.entries(handlers)) {
|
|
323
|
-
const padded = name.padEnd(28);
|
|
324
|
-
console.log(` ${pc.dim(padded)} ${formatBytes(h.size)}`);
|
|
325
|
-
}
|
|
326
|
-
const allCaps = [...new Set(analysis.flatMap((a) => a.capabilities))];
|
|
327
|
-
if (allCaps.length > 0) {
|
|
328
|
-
console.log("");
|
|
329
|
-
console.log(`${pc.bold("capabilities:")}`);
|
|
330
|
-
console.log(` ${pc.cyan(allCaps.join(", "))}`);
|
|
331
|
-
}
|
|
332
|
-
const allWarnings = analysis.flatMap(
|
|
333
|
-
(a) => a.warnings.map((w) => `${w} in ${a.name}`)
|
|
334
|
-
);
|
|
335
|
-
if (allWarnings.length > 0) {
|
|
336
|
-
console.log("");
|
|
337
|
-
console.log(pc.yellow("\u26A0 warnings:"));
|
|
338
|
-
for (const w of allWarnings) {
|
|
339
|
-
console.log(` ${pc.yellow(w)}`);
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
const allBlockers = analysis.flatMap(
|
|
343
|
-
(a) => a.blockers.map((b) => `${b} in ${a.name}`)
|
|
325
|
+
console.log(` ${pc.bold(agentName)} ${pc.dim(hash.slice(0, 7))}...`);
|
|
326
|
+
console.log(
|
|
327
|
+
` ${pc.dim(String(handlerCount))} handlers \xB7 ${formatBytes(totalSize)}`
|
|
344
328
|
);
|
|
345
|
-
if (allBlockers.length === 0) {
|
|
346
|
-
console.log("");
|
|
347
|
-
console.log(pc.green("\u2714 blockers: none"));
|
|
348
|
-
}
|
|
349
329
|
console.log(div + "\n");
|
|
350
330
|
}
|
|
351
331
|
function printPushError(phase, errors, blockers) {
|
|
@@ -421,12 +401,12 @@ var push_default = defineCommand({
|
|
|
421
401
|
process.exit(1);
|
|
422
402
|
}
|
|
423
403
|
s.stop(pc.green("Pushed successfully"));
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
p.outro(`${LOGO} ${pc.green("Agent
|
|
404
|
+
printPushResult(agentName, hash, manifest.handlers);
|
|
405
|
+
const dashboardUrl = `${CLOUD_API}/a/${agentName}`;
|
|
406
|
+
p.outro(`${LOGO} ${pc.green("Agent live at")} ${pc.cyan(dashboardUrl)}`);
|
|
427
407
|
}
|
|
428
408
|
});
|
|
429
409
|
export {
|
|
430
410
|
push_default as default
|
|
431
411
|
};
|
|
432
|
-
//# sourceMappingURL=push-
|
|
412
|
+
//# sourceMappingURL=push-JSUCSTUL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/push.ts","../src/utils/manifest/index.ts","../src/utils/manifest/build.ts","../src/utils/manifest/handlers.ts","../src/utils/ir/hashIR.ts"],"sourcesContent":["import { access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { ensureConfig } from \"@/utils/fs\";\nimport { readAgentManifest, computePushHash } from \"@/utils/manifest\";\n\nconst LOGO = \"🦋\";\n\n// Auto-detect cloud URL based on CLI version\nconst require = createRequire(import.meta.url);\nconst CLI_VERSION: string = require(\"@kalphq/cli/package.json\").version;\nconst IS_DEV_VERSION = CLI_VERSION.includes(\"dev\");\nconst CLOUD_API =\n process.env.KALP_CLOUD_URL ||\n (IS_DEV_VERSION ? \"http://localhost:3000\" : \"https://app.usekalp.com\");\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n return `${(bytes / 1024).toFixed(1)} KB`;\n}\n\nfunction printPushResult(\n agentName: string,\n hash: string,\n handlers: Record<string, { size: number }>,\n) {\n const div = pc.dim(\"─\".repeat(48));\n const handlerCount = Object.keys(handlers).length;\n const totalSize = Object.values(handlers).reduce((sum, h) => sum + h.size, 0);\n\n console.log(\"\\n\" + div);\n console.log(pc.green(\"✔ Deployed\"));\n console.log(\"\");\n console.log(` ${pc.bold(agentName)} ${pc.dim(hash.slice(0, 7))}...`);\n console.log(\n ` ${pc.dim(String(handlerCount))} handlers · ${formatBytes(totalSize)}`,\n );\n console.log(div + \"\\n\");\n}\n\nfunction printPushError(phase: string, errors: string[], blockers?: string[]) {\n const div = pc.dim(\"─\".repeat(48));\n console.log(\"\\n\" + div);\n if (phase === \"ir\") {\n for (const e of errors) console.log(pc.red(`✘ invalid IR: ${e}`));\n } else if (phase === \"bindings\") {\n for (const e of errors) console.log(pc.red(`✘ handler missing: ${e}`));\n } else if (phase === \"analysis\" && blockers) {\n for (const b of blockers) console.log(pc.red(`✘ blockers found: ${b}`));\n } else {\n for (const e of errors) console.log(pc.red(`✘ ${e}`));\n }\n console.log(div + \"\\n\");\n}\n\nexport default defineCommand({\n meta: { name: \"push\", description: \"Push agent to Kalp cloud\" },\n args: {\n agent: {\n type: \"string\",\n alias: \"a\",\n description: \"Agent name to push\",\n required: false,\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n const agentName = args.agent;\n\n p.intro(`${LOGO} ${pc.bold(\"kalp push\")}`);\n\n if (!agentName) {\n p.log.error(`Missing required flag ${pc.cyan(\"-a <agent-name>\")}`);\n process.exit(1);\n }\n\n try {\n await ensureConfig(cwd);\n } catch {\n p.log.error(`${pc.cyan(\"kalp.config.ts\")} not found`);\n process.exit(1);\n }\n\n const agentPath = join(cwd, \"agents\", agentName, \"index.ts\");\n try {\n await access(agentPath);\n } catch {\n p.log.error(`Agent ${pc.cyan(agentName)} not found`);\n process.exit(1);\n }\n\n const s = p.spinner();\n s.start(`Compiling ${pc.cyan(agentName)}`);\n\n const manifest = await readAgentManifest({ cwd, agentName });\n const hash = computePushHash(manifest.ir, manifest.handlers);\n\n s.stop(\n `Compiled ${pc.cyan(agentName)} — ${Object.keys(manifest.handlers).length} handlers`,\n );\n s.start(`Pushing to cloud`);\n\n const response = await fetch(`${CLOUD_API}/api/agents/push`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n agentName,\n ir: manifest.ir,\n hash,\n bundle: { handlers: manifest.handlers },\n }),\n });\n\n const body = (await response.json().catch(() => null)) as Record<\n string,\n unknown\n > | null;\n\n if (!response.ok) {\n s.stop(pc.red(\"Push failed\"));\n const phase = (body?.phase as string) ?? \"unknown\";\n const errors = (body?.errors as string[]) ?? [`HTTP ${response.status}`];\n const blockers = body?.blockers as string[] | undefined;\n printPushError(phase, errors, blockers);\n process.exit(1);\n }\n\n s.stop(pc.green(\"Pushed successfully\"));\n printPushResult(agentName, hash, manifest.handlers);\n\n const dashboardUrl = `${CLOUD_API}/a/${agentName}`;\n p.outro(`${LOGO} ${pc.green(\"Agent live at\")} ${pc.cyan(dashboardUrl)}`);\n },\n});\n","import { access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { compileAgent } from \"@kalphq/compiler\";\nimport { loadAgentModule, cleanupTempDir } from \"@/utils/manifest/build\";\nimport { extractHandlers } from \"@/utils/manifest/handlers\";\nimport type { AgentManifestV2 } from \"@/utils/manifest/types\";\nexport type {\n AgentManifestV2,\n LoadedAgentModule,\n} from \"@/utils/manifest/types\";\nexport type { HandlerMap, HandlerEntry } from \"@/utils/manifest/handlers\";\nexport { asRecord, asString, asArray } from \"@/utils/manifest/types\";\nexport { loadAgentModule, cleanupTempDir } from \"@/utils/manifest/build\";\nexport { extractHandlers } from \"@/utils/manifest/handlers\";\nexport { getManifestHash } from \"@/utils/manifest/hash\";\nexport { getIRHash, computePushHash } from \"@/utils/ir/hashIR\";\n\nexport async function readAgentManifest(params: {\n cwd: string;\n agentName: string;\n}): Promise<AgentManifestV2> {\n const { cwd, agentName } = params;\n const agentPath = join(cwd, \"agents\", agentName, \"index.ts\");\n await access(agentPath);\n\n let tempDir: string | undefined;\n\n try {\n const loaded = await loadAgentModule(agentPath, cwd);\n tempDir = loaded.tempDir;\n\n const [ir, handlers] = await Promise.all([\n compileAgent(loaded.agent),\n extractHandlers(agentPath, loaded.agent, cwd),\n ]);\n\n return {\n format: \"kalp-agent-manifest\",\n schemaVersion: 2,\n codeHash: loaded.codeHash,\n ir,\n handlers,\n metadata: {\n generatedAt: new Date().toISOString(),\n },\n };\n } finally {\n if (tempDir) {\n await cleanupTempDir(tempDir);\n }\n }\n}\n","import { existsSync } from \"node:fs\";\nimport { mkdtemp, readFile, rm } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { build } from \"esbuild\";\nimport type { LoadedAgentModule } from \"@/utils/manifest/types\";\n\nasync function getHash(payload: string): Promise<string> {\n const { createHash } = await import(\"node:crypto\");\n return createHash(\"sha256\").update(payload).digest(\"hex\");\n}\n\nexport async function loadAgentModule(\n agentPath: string,\n cwd: string,\n): Promise<LoadedAgentModule> {\n const tempDir = await mkdtemp(join(cwd, \".kalp-temp-\"));\n const outFile = join(tempDir, \"agent.manifest.mjs\");\n\n await build({\n entryPoints: [agentPath],\n outfile: outFile,\n bundle: true,\n format: \"esm\",\n platform: \"node\",\n target: \"node18\",\n logLevel: \"silent\",\n packages: \"external\",\n plugins: [\n {\n name: \"relative-js-to-ts\",\n setup(buildCtx) {\n buildCtx.onResolve({ filter: /^\\.\\/.*\\.js$/ }, (args) => {\n const resolved = resolve(args.resolveDir, args.path);\n if (existsSync(resolved)) {\n return { path: resolved };\n }\n\n const tsPath = resolved.replace(/\\.js$/, \".ts\");\n if (existsSync(tsPath)) {\n return { path: tsPath };\n }\n\n const tsxPath = resolved.replace(/\\.js$/, \".tsx\");\n if (existsSync(tsxPath)) {\n return { path: tsxPath };\n }\n\n return null;\n });\n },\n },\n {\n name: \"tsconfig-paths\",\n setup(buildCtx) {\n buildCtx.onResolve({ filter: /^@\\// }, (args) => {\n const withoutPrefix = args.path.replace(/^@\\//, \"\");\n const resolved = resolve(cwd, withoutPrefix);\n\n if (existsSync(resolved)) {\n return { path: resolved };\n }\n\n const tsPath = resolved + \".ts\";\n if (existsSync(tsPath)) {\n return { path: tsPath };\n }\n\n const tsxPath = resolved + \".tsx\";\n if (existsSync(tsxPath)) {\n return { path: tsxPath };\n }\n\n const indexTsPath = join(resolved, \"index.ts\");\n if (existsSync(indexTsPath)) {\n return { path: indexTsPath };\n }\n\n return null;\n });\n },\n },\n ],\n });\n\n const loaded = (await import(\n `${pathToFileURL(outFile).href}?t=${Date.now()}`\n )) as { default?: unknown };\n\n const bundledCode = await readFile(outFile, \"utf-8\");\n const codeHash = await getHash(bundledCode);\n\n return {\n agent: loaded.default,\n tempDir,\n codeHash,\n };\n}\n\nexport async function cleanupTempDir(tempDir: string): Promise<void> {\n await rm(tempDir, { recursive: true, force: true });\n}\n","import { existsSync } from \"node:fs\";\nimport { mkdtemp, rm, writeFile } from \"node:fs/promises\";\nimport { createHash } from \"node:crypto\";\nimport { basename, join, resolve } from \"node:path\";\nimport { build } from \"esbuild\";\n\nexport interface HandlerEntry {\n name: string;\n code: string;\n hash: string;\n size: number;\n}\n\nexport type HandlerMap = Record<string, HandlerEntry>;\n\nfunction sha256(content: string): string {\n return createHash(\"sha256\").update(content).digest(\"hex\");\n}\n\nconst asRecord = (v: unknown): Record<string, unknown> | undefined =>\n v != null && typeof v === \"object\" && !Array.isArray(v)\n ? (v as Record<string, unknown>)\n : undefined;\n\nconst asString = (v: unknown): string | undefined =>\n typeof v === \"string\" ? v : undefined;\n\nconst asArray = (v: unknown): unknown[] => (Array.isArray(v) ? v : []);\n\ninterface WrapperSpec {\n name: string;\n code: string;\n}\n\nfunction buildWrappers(agentPath: string, agentConfig: unknown): WrapperSpec[] {\n const raw = asRecord(agentConfig);\n if (!raw) return [];\n\n const wrappers: WrapperSpec[] = [];\n const escapedPath = agentPath.replace(/\\\\/g, \"/\");\n\n if (raw.onMessage != null) {\n wrappers.push({\n name: \"onMessage\",\n code: `import agent from \"${escapedPath}\";\\nexport default agent.onMessage;\\n`,\n });\n }\n\n if (raw.onInit != null) {\n wrappers.push({\n name: \"onInit\",\n code: `import agent from \"${escapedPath}\";\\nexport default agent.onInit;\\n`,\n });\n }\n\n if (raw.onTick != null) {\n wrappers.push({\n name: \"onTick\",\n code: `import agent from \"${escapedPath}\";\\nexport default agent.onTick;\\n`,\n });\n }\n\n for (const step of asArray(raw.steps)) {\n const rec = asRecord(step);\n const id = rec ? asString(rec.id) : undefined;\n if (!id) continue;\n const safeName = `steps.${id}`;\n wrappers.push({\n name: safeName,\n code: `import agent from \"${escapedPath}\";\\nconst _s = Array.isArray(agent.steps) ? agent.steps.find((s) => s.id === \"${id}\") : null;\\nexport default _s?.run ?? null;\\n`,\n });\n }\n\n for (const tool of asArray(raw.tools)) {\n const rec = asRecord(tool);\n const id = rec ? asString(rec.id) : undefined;\n if (!id) continue;\n const safeName = `tools.${id}`;\n wrappers.push({\n name: safeName,\n code: `import agent from \"${escapedPath}\";\\nconst _t = Array.isArray(agent.tools) ? agent.tools.find((t) => t.id === \"${id}\") : null;\\nexport default _t?.execute ?? null;\\n`,\n });\n }\n\n for (const flow of asArray(raw.flows)) {\n const rec = asRecord(flow);\n if (!rec) continue;\n for (const fs of asArray(rec.steps)) {\n const frec = asRecord(fs);\n const id = frec ? asString(frec.id) : undefined;\n if (!id) continue;\n const safeName = `steps.${id}`;\n if (wrappers.some((w) => w.name === safeName)) continue;\n wrappers.push({\n name: safeName,\n code: `import agent from \"${escapedPath}\";\\nconst _s = Array.isArray(agent.steps) ? agent.steps.find((s) => s.id === \"${id}\") : null;\\nexport default _s?.run ?? null;\\n`,\n });\n }\n }\n\n return wrappers;\n}\n\nfunction makePlugins(cwd: string) {\n return [\n {\n name: \"relative-js-to-ts\",\n setup(buildCtx: any) {\n buildCtx.onResolve({ filter: /^\\.\\/.*\\.js$/ }, (args: any) => {\n const resolved = resolve(args.resolveDir, args.path);\n if (existsSync(resolved)) return { path: resolved };\n const tsPath = resolved.replace(/\\.js$/, \".ts\");\n if (existsSync(tsPath)) return { path: tsPath };\n const tsxPath = resolved.replace(/\\.js$/, \".tsx\");\n if (existsSync(tsxPath)) return { path: tsxPath };\n return null;\n });\n },\n },\n {\n name: \"tsconfig-paths\",\n setup(buildCtx: any) {\n buildCtx.onResolve({ filter: /^@\\// }, (args: any) => {\n const withoutPrefix = args.path.replace(/^@\\//, \"\");\n const resolved = resolve(cwd, withoutPrefix);\n if (existsSync(resolved)) return { path: resolved };\n const tsPath = resolved + \".ts\";\n if (existsSync(tsPath)) return { path: tsPath };\n const tsxPath = resolved + \".tsx\";\n if (existsSync(tsxPath)) return { path: tsxPath };\n const indexTsPath = join(resolved, \"index.ts\");\n if (existsSync(indexTsPath)) return { path: indexTsPath };\n return null;\n });\n },\n },\n ];\n}\n\nexport async function extractHandlers(\n agentPath: string,\n agentConfig: unknown,\n cwd: string,\n): Promise<HandlerMap> {\n const wrappers = buildWrappers(agentPath, agentConfig);\n if (wrappers.length === 0) return {};\n\n const tempDir = await mkdtemp(join(cwd, \".kalp-handlers-\"));\n\n try {\n const entryPoints: Record<string, string> = {};\n\n for (const wrapper of wrappers) {\n const safeFileName = wrapper.name.replace(/\\./g, \"_\") + \".ts\";\n const wrapperPath = join(tempDir, safeFileName);\n await writeFile(wrapperPath, wrapper.code, \"utf-8\");\n entryPoints[wrapper.name] = wrapperPath;\n }\n\n const result = await build({\n entryPoints,\n bundle: true,\n outdir: tempDir,\n format: \"esm\",\n platform: \"browser\",\n target: \"es2020\",\n logLevel: \"silent\",\n packages: \"external\",\n splitting: false,\n write: false,\n plugins: makePlugins(cwd),\n });\n\n const handlerMap: HandlerMap = {};\n\n for (const outputFile of result.outputFiles) {\n const fileName = basename(outputFile.path, \".js\");\n const wrapper = wrappers.find((w) => w.name === fileName);\n if (!wrapper) continue;\n\n const code = outputFile.text;\n handlerMap[wrapper.name] = {\n name: wrapper.name,\n code,\n hash: sha256(code),\n size: outputFile.contents.byteLength,\n };\n }\n\n return handlerMap;\n } finally {\n await rm(tempDir, { recursive: true, force: true });\n }\n}\n","import type { IRGraph } from \"@kalphq/sdk\";\nimport { createHash } from \"crypto\";\nimport stableStringify from \"json-stable-stringify\";\nimport type { HandlerMap } from \"@/utils/manifest/handlers\";\n\nexport function getIRHash(ir: IRGraph): string {\n return createHash(\"sha256\")\n .update(stableStringify(ir) ?? JSON.stringify(ir))\n .digest(\"hex\");\n}\n\nexport function computePushHash(ir: IRGraph, handlers: HandlerMap): string {\n const sortedHandlerHashes = Object.keys(handlers)\n .sort()\n .map((k) => handlers[k]!.hash)\n .join(\"|\");\n const bundleHash = createHash(\"sha256\")\n .update(sortedHandlerHashes)\n .digest(\"hex\");\n const payload =\n stableStringify({ ir, bundleHash }) ?? JSON.stringify({ ir, bundleHash });\n return createHash(\"sha256\").update(payload).digest(\"hex\");\n}\n"],"mappings":"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","names":["access","join","join","createHash","existsSync","mkdtemp","rm","join","resolve","build","createHash","createHash","join","require","join","access"]}
|
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-20260423043255",
|
|
4
4
|
"description": "Zero-config CLI for deploying Kalp agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"json-stable-stringify": "1.3.0",
|
|
24
24
|
"picocolors": "1.1.1",
|
|
25
25
|
"zod": "3.25.76",
|
|
26
|
-
"@kalphq/project": "0.0.0-dev-
|
|
27
|
-
"@kalphq/compiler": "0.0.0-dev-
|
|
28
|
-
"@kalphq/sdk": "0.0.0-dev-
|
|
26
|
+
"@kalphq/project": "0.0.0-dev-20260423043255",
|
|
27
|
+
"@kalphq/compiler": "0.0.0-dev-20260423043255",
|
|
28
|
+
"@kalphq/sdk": "0.0.0-dev-20260423043255"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/json-stable-stringify": "1.2.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/push.ts","../src/utils/manifest/index.ts","../src/utils/manifest/build.ts","../src/utils/manifest/handlers.ts","../src/utils/ir/hashIR.ts"],"sourcesContent":["import { access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { ensureConfig } from \"@/utils/fs\";\nimport { readAgentManifest, computePushHash } from \"@/utils/manifest\";\n\nconst LOGO = \"🦋\";\nconst CLOUD_API = process.env.KALP_CLOUD_URL || \"http://localhost:3000\";\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n return `${(bytes / 1024).toFixed(1)} KB`;\n}\n\nfunction printPushResult(\n agentName: string,\n hash: string,\n handlers: Record<string, { size: number }>,\n analysis: Array<{\n name: string;\n capabilities: string[];\n warnings: string[];\n blockers: string[];\n }>,\n) {\n const div = pc.dim(\"─\".repeat(48));\n console.log(\"\\n\" + div);\n console.log(pc.green(\"✔ Deployed\"));\n console.log(\"\");\n console.log(`${pc.bold(\"agent:\")} ${agentName}`);\n console.log(`${pc.bold(\"hash:\")} ${hash.slice(0, 16)}...`);\n console.log(`${pc.bold(\"handlers:\")} ${Object.keys(handlers).length}`);\n\n for (const [name, h] of Object.entries(handlers)) {\n const padded = name.padEnd(28);\n console.log(` ${pc.dim(padded)} ${formatBytes(h.size)}`);\n }\n\n const allCaps = [...new Set(analysis.flatMap((a) => a.capabilities))];\n if (allCaps.length > 0) {\n console.log(\"\");\n console.log(`${pc.bold(\"capabilities:\")}`);\n console.log(` ${pc.cyan(allCaps.join(\", \"))}`);\n }\n\n const allWarnings = analysis.flatMap((a) =>\n a.warnings.map((w) => `${w} in ${a.name}`),\n );\n if (allWarnings.length > 0) {\n console.log(\"\");\n console.log(pc.yellow(\"⚠ warnings:\"));\n for (const w of allWarnings) {\n console.log(` ${pc.yellow(w)}`);\n }\n }\n\n const allBlockers = analysis.flatMap((a) =>\n a.blockers.map((b) => `${b} in ${a.name}`),\n );\n if (allBlockers.length === 0) {\n console.log(\"\");\n console.log(pc.green(\"✔ blockers: none\"));\n }\n\n console.log(div + \"\\n\");\n}\n\nfunction printPushError(phase: string, errors: string[], blockers?: string[]) {\n const div = pc.dim(\"─\".repeat(48));\n console.log(\"\\n\" + div);\n if (phase === \"ir\") {\n for (const e of errors) console.log(pc.red(`✘ invalid IR: ${e}`));\n } else if (phase === \"bindings\") {\n for (const e of errors) console.log(pc.red(`✘ handler missing: ${e}`));\n } else if (phase === \"analysis\" && blockers) {\n for (const b of blockers) console.log(pc.red(`✘ blockers found: ${b}`));\n } else {\n for (const e of errors) console.log(pc.red(`✘ ${e}`));\n }\n console.log(div + \"\\n\");\n}\n\nexport default defineCommand({\n meta: { name: \"push\", description: \"Push agent to Kalp cloud\" },\n args: {\n agent: {\n type: \"string\",\n alias: \"a\",\n description: \"Agent name to push\",\n required: false,\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n const agentName = args.agent;\n\n p.intro(`${LOGO} ${pc.bold(\"kalp push\")}`);\n\n if (!agentName) {\n p.log.error(`Missing required flag ${pc.cyan(\"-a <agent-name>\")}`);\n process.exit(1);\n }\n\n try {\n await ensureConfig(cwd);\n } catch {\n p.log.error(`${pc.cyan(\"kalp.config.ts\")} not found`);\n process.exit(1);\n }\n\n const agentPath = join(cwd, \"agents\", agentName, \"index.ts\");\n try {\n await access(agentPath);\n } catch {\n p.log.error(`Agent ${pc.cyan(agentName)} not found`);\n process.exit(1);\n }\n\n const s = p.spinner();\n s.start(`Compiling ${pc.cyan(agentName)}`);\n\n const manifest = await readAgentManifest({ cwd, agentName });\n const hash = computePushHash(manifest.ir, manifest.handlers);\n\n s.stop(\n `Compiled ${pc.cyan(agentName)} — ${Object.keys(manifest.handlers).length} handlers`,\n );\n s.start(`Pushing to cloud`);\n\n const response = await fetch(`${CLOUD_API}/api/agents/push`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n agentName,\n ir: manifest.ir,\n hash,\n bundle: { handlers: manifest.handlers },\n }),\n });\n\n const body = (await response.json().catch(() => null)) as Record<\n string,\n unknown\n > | null;\n\n if (!response.ok) {\n s.stop(pc.red(\"Push failed\"));\n const phase = (body?.phase as string) ?? \"unknown\";\n const errors = (body?.errors as string[]) ?? [`HTTP ${response.status}`];\n const blockers = body?.blockers as string[] | undefined;\n printPushError(phase, errors, blockers);\n process.exit(1);\n }\n\n s.stop(pc.green(\"Pushed successfully\"));\n\n const analysis =\n (body?.analysis as Array<{\n name: string;\n capabilities: string[];\n warnings: string[];\n blockers: string[];\n }>) ?? [];\n printPushResult(agentName, hash, manifest.handlers, analysis);\n\n p.outro(`${LOGO} ${pc.green(\"Agent pushed to cloud\")}`);\n },\n});\n","import { access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { compileAgent } from \"@kalphq/compiler\";\nimport { loadAgentModule, cleanupTempDir } from \"@/utils/manifest/build\";\nimport { extractHandlers } from \"@/utils/manifest/handlers\";\nimport type { AgentManifestV2 } from \"@/utils/manifest/types\";\nexport type {\n AgentManifestV2,\n LoadedAgentModule,\n} from \"@/utils/manifest/types\";\nexport type { HandlerMap, HandlerEntry } from \"@/utils/manifest/handlers\";\nexport { asRecord, asString, asArray } from \"@/utils/manifest/types\";\nexport { loadAgentModule, cleanupTempDir } from \"@/utils/manifest/build\";\nexport { extractHandlers } from \"@/utils/manifest/handlers\";\nexport { getManifestHash } from \"@/utils/manifest/hash\";\nexport { getIRHash, computePushHash } from \"@/utils/ir/hashIR\";\n\nexport async function readAgentManifest(params: {\n cwd: string;\n agentName: string;\n}): Promise<AgentManifestV2> {\n const { cwd, agentName } = params;\n const agentPath = join(cwd, \"agents\", agentName, \"index.ts\");\n await access(agentPath);\n\n let tempDir: string | undefined;\n\n try {\n const loaded = await loadAgentModule(agentPath, cwd);\n tempDir = loaded.tempDir;\n\n const [ir, handlers] = await Promise.all([\n compileAgent(loaded.agent),\n extractHandlers(agentPath, loaded.agent, cwd),\n ]);\n\n return {\n format: \"kalp-agent-manifest\",\n schemaVersion: 2,\n codeHash: loaded.codeHash,\n ir,\n handlers,\n metadata: {\n generatedAt: new Date().toISOString(),\n },\n };\n } finally {\n if (tempDir) {\n await cleanupTempDir(tempDir);\n }\n }\n}\n","import { existsSync } from \"node:fs\";\nimport { mkdtemp, readFile, rm } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { build } from \"esbuild\";\nimport type { LoadedAgentModule } from \"@/utils/manifest/types\";\n\nasync function getHash(payload: string): Promise<string> {\n const { createHash } = await import(\"node:crypto\");\n return createHash(\"sha256\").update(payload).digest(\"hex\");\n}\n\nexport async function loadAgentModule(\n agentPath: string,\n cwd: string,\n): Promise<LoadedAgentModule> {\n const tempDir = await mkdtemp(join(cwd, \".kalp-temp-\"));\n const outFile = join(tempDir, \"agent.manifest.mjs\");\n\n await build({\n entryPoints: [agentPath],\n outfile: outFile,\n bundle: true,\n format: \"esm\",\n platform: \"node\",\n target: \"node18\",\n logLevel: \"silent\",\n packages: \"external\",\n plugins: [\n {\n name: \"relative-js-to-ts\",\n setup(buildCtx) {\n buildCtx.onResolve({ filter: /^\\.\\/.*\\.js$/ }, (args) => {\n const resolved = resolve(args.resolveDir, args.path);\n if (existsSync(resolved)) {\n return { path: resolved };\n }\n\n const tsPath = resolved.replace(/\\.js$/, \".ts\");\n if (existsSync(tsPath)) {\n return { path: tsPath };\n }\n\n const tsxPath = resolved.replace(/\\.js$/, \".tsx\");\n if (existsSync(tsxPath)) {\n return { path: tsxPath };\n }\n\n return null;\n });\n },\n },\n {\n name: \"tsconfig-paths\",\n setup(buildCtx) {\n buildCtx.onResolve({ filter: /^@\\// }, (args) => {\n const withoutPrefix = args.path.replace(/^@\\//, \"\");\n const resolved = resolve(cwd, withoutPrefix);\n\n if (existsSync(resolved)) {\n return { path: resolved };\n }\n\n const tsPath = resolved + \".ts\";\n if (existsSync(tsPath)) {\n return { path: tsPath };\n }\n\n const tsxPath = resolved + \".tsx\";\n if (existsSync(tsxPath)) {\n return { path: tsxPath };\n }\n\n const indexTsPath = join(resolved, \"index.ts\");\n if (existsSync(indexTsPath)) {\n return { path: indexTsPath };\n }\n\n return null;\n });\n },\n },\n ],\n });\n\n const loaded = (await import(\n `${pathToFileURL(outFile).href}?t=${Date.now()}`\n )) as { default?: unknown };\n\n const bundledCode = await readFile(outFile, \"utf-8\");\n const codeHash = await getHash(bundledCode);\n\n return {\n agent: loaded.default,\n tempDir,\n codeHash,\n };\n}\n\nexport async function cleanupTempDir(tempDir: string): Promise<void> {\n await rm(tempDir, { recursive: true, force: true });\n}\n","import { existsSync } from \"node:fs\";\nimport { mkdtemp, rm, writeFile } from \"node:fs/promises\";\nimport { createHash } from \"node:crypto\";\nimport { basename, join, resolve } from \"node:path\";\nimport { build } from \"esbuild\";\n\nexport interface HandlerEntry {\n name: string;\n code: string;\n hash: string;\n size: number;\n}\n\nexport type HandlerMap = Record<string, HandlerEntry>;\n\nfunction sha256(content: string): string {\n return createHash(\"sha256\").update(content).digest(\"hex\");\n}\n\nconst asRecord = (v: unknown): Record<string, unknown> | undefined =>\n v != null && typeof v === \"object\" && !Array.isArray(v)\n ? (v as Record<string, unknown>)\n : undefined;\n\nconst asString = (v: unknown): string | undefined =>\n typeof v === \"string\" ? v : undefined;\n\nconst asArray = (v: unknown): unknown[] => (Array.isArray(v) ? v : []);\n\ninterface WrapperSpec {\n name: string;\n code: string;\n}\n\nfunction buildWrappers(agentPath: string, agentConfig: unknown): WrapperSpec[] {\n const raw = asRecord(agentConfig);\n if (!raw) return [];\n\n const wrappers: WrapperSpec[] = [];\n const escapedPath = agentPath.replace(/\\\\/g, \"/\");\n\n if (raw.onMessage != null) {\n wrappers.push({\n name: \"onMessage\",\n code: `import agent from \"${escapedPath}\";\\nexport default agent.onMessage;\\n`,\n });\n }\n\n if (raw.onInit != null) {\n wrappers.push({\n name: \"onInit\",\n code: `import agent from \"${escapedPath}\";\\nexport default agent.onInit;\\n`,\n });\n }\n\n if (raw.onTick != null) {\n wrappers.push({\n name: \"onTick\",\n code: `import agent from \"${escapedPath}\";\\nexport default agent.onTick;\\n`,\n });\n }\n\n for (const step of asArray(raw.steps)) {\n const rec = asRecord(step);\n const id = rec ? asString(rec.id) : undefined;\n if (!id) continue;\n const safeName = `steps.${id}`;\n wrappers.push({\n name: safeName,\n code: `import agent from \"${escapedPath}\";\\nconst _s = Array.isArray(agent.steps) ? agent.steps.find((s) => s.id === \"${id}\") : null;\\nexport default _s?.run ?? null;\\n`,\n });\n }\n\n for (const tool of asArray(raw.tools)) {\n const rec = asRecord(tool);\n const id = rec ? asString(rec.id) : undefined;\n if (!id) continue;\n const safeName = `tools.${id}`;\n wrappers.push({\n name: safeName,\n code: `import agent from \"${escapedPath}\";\\nconst _t = Array.isArray(agent.tools) ? agent.tools.find((t) => t.id === \"${id}\") : null;\\nexport default _t?.execute ?? null;\\n`,\n });\n }\n\n for (const flow of asArray(raw.flows)) {\n const rec = asRecord(flow);\n if (!rec) continue;\n for (const fs of asArray(rec.steps)) {\n const frec = asRecord(fs);\n const id = frec ? asString(frec.id) : undefined;\n if (!id) continue;\n const safeName = `steps.${id}`;\n if (wrappers.some((w) => w.name === safeName)) continue;\n wrappers.push({\n name: safeName,\n code: `import agent from \"${escapedPath}\";\\nconst _s = Array.isArray(agent.steps) ? agent.steps.find((s) => s.id === \"${id}\") : null;\\nexport default _s?.run ?? null;\\n`,\n });\n }\n }\n\n return wrappers;\n}\n\nfunction makePlugins(cwd: string) {\n return [\n {\n name: \"relative-js-to-ts\",\n setup(buildCtx: any) {\n buildCtx.onResolve({ filter: /^\\.\\/.*\\.js$/ }, (args: any) => {\n const resolved = resolve(args.resolveDir, args.path);\n if (existsSync(resolved)) return { path: resolved };\n const tsPath = resolved.replace(/\\.js$/, \".ts\");\n if (existsSync(tsPath)) return { path: tsPath };\n const tsxPath = resolved.replace(/\\.js$/, \".tsx\");\n if (existsSync(tsxPath)) return { path: tsxPath };\n return null;\n });\n },\n },\n {\n name: \"tsconfig-paths\",\n setup(buildCtx: any) {\n buildCtx.onResolve({ filter: /^@\\// }, (args: any) => {\n const withoutPrefix = args.path.replace(/^@\\//, \"\");\n const resolved = resolve(cwd, withoutPrefix);\n if (existsSync(resolved)) return { path: resolved };\n const tsPath = resolved + \".ts\";\n if (existsSync(tsPath)) return { path: tsPath };\n const tsxPath = resolved + \".tsx\";\n if (existsSync(tsxPath)) return { path: tsxPath };\n const indexTsPath = join(resolved, \"index.ts\");\n if (existsSync(indexTsPath)) return { path: indexTsPath };\n return null;\n });\n },\n },\n ];\n}\n\nexport async function extractHandlers(\n agentPath: string,\n agentConfig: unknown,\n cwd: string,\n): Promise<HandlerMap> {\n const wrappers = buildWrappers(agentPath, agentConfig);\n if (wrappers.length === 0) return {};\n\n const tempDir = await mkdtemp(join(cwd, \".kalp-handlers-\"));\n\n try {\n const entryPoints: Record<string, string> = {};\n\n for (const wrapper of wrappers) {\n const safeFileName = wrapper.name.replace(/\\./g, \"_\") + \".ts\";\n const wrapperPath = join(tempDir, safeFileName);\n await writeFile(wrapperPath, wrapper.code, \"utf-8\");\n entryPoints[wrapper.name] = wrapperPath;\n }\n\n const result = await build({\n entryPoints,\n bundle: true,\n outdir: tempDir,\n format: \"esm\",\n platform: \"browser\",\n target: \"es2020\",\n logLevel: \"silent\",\n packages: \"external\",\n splitting: false,\n write: false,\n plugins: makePlugins(cwd),\n });\n\n const handlerMap: HandlerMap = {};\n\n for (const outputFile of result.outputFiles) {\n const fileName = basename(outputFile.path, \".js\");\n const wrapper = wrappers.find((w) => w.name === fileName);\n if (!wrapper) continue;\n\n const code = outputFile.text;\n handlerMap[wrapper.name] = {\n name: wrapper.name,\n code,\n hash: sha256(code),\n size: outputFile.contents.byteLength,\n };\n }\n\n return handlerMap;\n } finally {\n await rm(tempDir, { recursive: true, force: true });\n }\n}\n","import type { IRGraph } from \"@kalphq/sdk\";\nimport { createHash } from \"crypto\";\nimport stableStringify from \"json-stable-stringify\";\nimport type { HandlerMap } from \"@/utils/manifest/handlers\";\n\nexport function getIRHash(ir: IRGraph): string {\n return createHash(\"sha256\")\n .update(stableStringify(ir) ?? JSON.stringify(ir))\n .digest(\"hex\");\n}\n\nexport function computePushHash(ir: IRGraph, handlers: HandlerMap): string {\n const sortedHandlerHashes = Object.keys(handlers)\n .sort()\n .map((k) => handlers[k]!.hash)\n .join(\"|\");\n const bundleHash = createHash(\"sha256\")\n .update(sortedHandlerHashes)\n .digest(\"hex\");\n const payload =\n stableStringify({ ir, bundleHash }) ?? JSON.stringify({ ir, bundleHash });\n return createHash(\"sha256\").update(payload).digest(\"hex\");\n}\n"],"mappings":"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","names":["access","join","join","createHash","existsSync","mkdtemp","rm","join","resolve","build","createHash","createHash","join","join","access"]}
|