@kalphq/cli 0.0.0-dev-20260421194335 → 0.0.0-dev-20260422050211
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-TSWPTKEC.js → add-KRHLYYTO.js} +7 -6
- package/dist/add-KRHLYYTO.js.map +1 -0
- package/dist/chunk-INB3LG6O.js +25 -0
- package/dist/chunk-INB3LG6O.js.map +1 -0
- package/dist/{chunk-KD6MYE65.js → chunk-MMS3GWBG.js} +2 -53
- package/dist/{chunk-KD6MYE65.js.map → chunk-MMS3GWBG.js.map} +1 -1
- package/dist/{create-M4XZB5C4.js → create-7J5R6OVF.js} +44 -36
- package/dist/create-7J5R6OVF.js.map +1 -0
- package/dist/{delete-IDNFBWDW.js → delete-47ZP6XRB.js} +7 -6
- package/dist/delete-47ZP6XRB.js.map +1 -0
- package/dist/index.js +6 -10
- package/dist/index.js.map +1 -1
- package/dist/{link-YCIA4JJ3.js → link-WZQSR2TM.js} +1 -2
- package/dist/{link-YCIA4JJ3.js.map → link-WZQSR2TM.js.map} +1 -1
- package/dist/{list-OKKHGKJA.js → list-3ZQIFUOT.js} +1 -2
- package/dist/{list-OKKHGKJA.js.map → list-3ZQIFUOT.js.map} +1 -1
- package/dist/{login-SIKUBDGO.js → login-JYPWGL6P.js} +1 -2
- package/dist/{login-SIKUBDGO.js.map → login-JYPWGL6P.js.map} +1 -1
- package/dist/{logout-OJM3VAOF.js → logout-V67DZZXO.js} +1 -2
- package/dist/{logout-OJM3VAOF.js.map → logout-V67DZZXO.js.map} +1 -1
- package/dist/push-RBTBXCP7.js +205 -0
- package/dist/push-RBTBXCP7.js.map +1 -0
- package/dist/{secrets-FHVISDYJ.js → secrets-KFMVBKJQ.js} +5 -6
- package/dist/{secrets-FHVISDYJ.js.map → secrets-KFMVBKJQ.js.map} +1 -1
- package/dist/{sync-2UR3KCWW.js → sync-YFM5P3IS.js} +4 -5
- package/dist/{sync-2UR3KCWW.js.map → sync-YFM5P3IS.js.map} +1 -1
- package/package.json +5 -5
- package/dist/acorn-I3UGQPDC.js +0 -3132
- package/dist/acorn-I3UGQPDC.js.map +0 -1
- package/dist/add-TSWPTKEC.js.map +0 -1
- package/dist/angular-5QCYWYQS.js +0 -3032
- package/dist/angular-5QCYWYQS.js.map +0 -1
- package/dist/babel-VVMWCS4G.js +0 -7298
- package/dist/babel-VVMWCS4G.js.map +0 -1
- package/dist/chunk-2H7UOFLK.js +0 -11
- package/dist/chunk-2H7UOFLK.js.map +0 -1
- package/dist/chunk-S3GDDAMX.js +0 -455
- package/dist/chunk-S3GDDAMX.js.map +0 -1
- package/dist/chunk-TPTPZH2W.js +0 -40
- package/dist/chunk-TPTPZH2W.js.map +0 -1
- package/dist/chunk-ZC6AEFXW.js +0 -19955
- package/dist/chunk-ZC6AEFXW.js.map +0 -1
- package/dist/create-M4XZB5C4.js.map +0 -1
- package/dist/delete-IDNFBWDW.js.map +0 -1
- package/dist/estree-3QNQSWX3.js +0 -4614
- package/dist/estree-3QNQSWX3.js.map +0 -1
- package/dist/flow-CCY52CGJ.js +0 -27548
- package/dist/flow-CCY52CGJ.js.map +0 -1
- package/dist/glimmer-WEH5BTZ2.js +0 -2896
- package/dist/glimmer-WEH5BTZ2.js.map +0 -1
- package/dist/graphql-UERTLN2S.js +0 -1268
- package/dist/graphql-UERTLN2S.js.map +0 -1
- package/dist/html-2G7A573F.js +0 -2928
- package/dist/html-2G7A573F.js.map +0 -1
- package/dist/init-HZE6TJJU.js +0 -74
- package/dist/init-HZE6TJJU.js.map +0 -1
- package/dist/markdown-XILCBMG4.js +0 -3553
- package/dist/markdown-XILCBMG4.js.map +0 -1
- package/dist/meriyah-THC5AUEQ.js +0 -2686
- package/dist/meriyah-THC5AUEQ.js.map +0 -1
- package/dist/migrate-ET4ZIJEX.js +0 -94
- package/dist/migrate-ET4ZIJEX.js.map +0 -1
- package/dist/postcss-WBGWHY5F.js +0 -5082
- package/dist/postcss-WBGWHY5F.js.map +0 -1
- package/dist/push-BYCTNMMF.js +0 -81
- package/dist/push-BYCTNMMF.js.map +0 -1
- package/dist/typescript-NS3CY6IL.js +0 -13205
- package/dist/typescript-NS3CY6IL.js.map +0 -1
- package/dist/yaml-2RE4A77K.js +0 -4226
- package/dist/yaml-2RE4A77K.js.map +0 -1
- package/templates/project/meta/snapshot.json +0 -1
- package/templates/project/package.json +0 -16
- package/templates/project/tsconfig.json +0 -18
package/dist/chunk-2H7UOFLK.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __export = (target, all) => {
|
|
4
|
-
for (var name in all)
|
|
5
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
__export
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=chunk-2H7UOFLK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/chunk-S3GDDAMX.js
DELETED
|
@@ -1,455 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
// src/utils/manifest/hash.ts
|
|
4
|
-
var ADJECTIVES = [
|
|
5
|
-
"ancient",
|
|
6
|
-
"bold",
|
|
7
|
-
"brave",
|
|
8
|
-
"bright",
|
|
9
|
-
"calm",
|
|
10
|
-
"cool",
|
|
11
|
-
"cosmic",
|
|
12
|
-
"crimson",
|
|
13
|
-
"curious",
|
|
14
|
-
"daring",
|
|
15
|
-
"divine",
|
|
16
|
-
"eager",
|
|
17
|
-
"elegant",
|
|
18
|
-
"fierce",
|
|
19
|
-
"gentle",
|
|
20
|
-
"golden",
|
|
21
|
-
"gracious",
|
|
22
|
-
"happy",
|
|
23
|
-
"honest",
|
|
24
|
-
"humble",
|
|
25
|
-
"jolly",
|
|
26
|
-
"joyful",
|
|
27
|
-
"kind",
|
|
28
|
-
"lively",
|
|
29
|
-
"lucky",
|
|
30
|
-
"magic",
|
|
31
|
-
"mighty",
|
|
32
|
-
"modern",
|
|
33
|
-
"noble",
|
|
34
|
-
"peaceful",
|
|
35
|
-
"polished",
|
|
36
|
-
"proud",
|
|
37
|
-
"quick",
|
|
38
|
-
"quiet",
|
|
39
|
-
"radiant",
|
|
40
|
-
"rapid",
|
|
41
|
-
"royal",
|
|
42
|
-
"serene",
|
|
43
|
-
"shiny",
|
|
44
|
-
"silent",
|
|
45
|
-
"sleek",
|
|
46
|
-
"swift",
|
|
47
|
-
"tender",
|
|
48
|
-
"timely",
|
|
49
|
-
"trusting",
|
|
50
|
-
"vivid",
|
|
51
|
-
"warm",
|
|
52
|
-
"wild",
|
|
53
|
-
"wise",
|
|
54
|
-
"witty",
|
|
55
|
-
"zesty"
|
|
56
|
-
];
|
|
57
|
-
var NOUNS = [
|
|
58
|
-
"arrow",
|
|
59
|
-
"aurora",
|
|
60
|
-
"breeze",
|
|
61
|
-
"canyon",
|
|
62
|
-
"comet",
|
|
63
|
-
"crystal",
|
|
64
|
-
"dawn",
|
|
65
|
-
"diamond",
|
|
66
|
-
"dragon",
|
|
67
|
-
"dream",
|
|
68
|
-
"eagle",
|
|
69
|
-
"echo",
|
|
70
|
-
"falcon",
|
|
71
|
-
"flame",
|
|
72
|
-
"forest",
|
|
73
|
-
"galaxy",
|
|
74
|
-
"garden",
|
|
75
|
-
"harbor",
|
|
76
|
-
"harmony",
|
|
77
|
-
"horizon",
|
|
78
|
-
"island",
|
|
79
|
-
"journey",
|
|
80
|
-
"lagoon",
|
|
81
|
-
"meadow",
|
|
82
|
-
"miracle",
|
|
83
|
-
"moon",
|
|
84
|
-
"mountain",
|
|
85
|
-
"nebula",
|
|
86
|
-
"ocean",
|
|
87
|
-
"orchard",
|
|
88
|
-
"phoenix",
|
|
89
|
-
"pioneer",
|
|
90
|
-
"prairie",
|
|
91
|
-
"quasar",
|
|
92
|
-
"rainbow",
|
|
93
|
-
"rapids",
|
|
94
|
-
"river",
|
|
95
|
-
"shadow",
|
|
96
|
-
"silence",
|
|
97
|
-
"sky",
|
|
98
|
-
"solar",
|
|
99
|
-
"star",
|
|
100
|
-
"storm",
|
|
101
|
-
"summit",
|
|
102
|
-
"sunrise",
|
|
103
|
-
"sunset",
|
|
104
|
-
"thunder",
|
|
105
|
-
"tide",
|
|
106
|
-
"valley",
|
|
107
|
-
"voyage",
|
|
108
|
-
"waterfall",
|
|
109
|
-
"wave",
|
|
110
|
-
"wildflower",
|
|
111
|
-
"wisdom",
|
|
112
|
-
"zenith"
|
|
113
|
-
];
|
|
114
|
-
function getRandomElement(arr) {
|
|
115
|
-
return arr[Math.floor(Math.random() * arr.length)];
|
|
116
|
-
}
|
|
117
|
-
function createVersionId(version) {
|
|
118
|
-
const adjective = getRandomElement(ADJECTIVES);
|
|
119
|
-
const noun = getRandomElement(NOUNS);
|
|
120
|
-
const versionStr = version.toString().padStart(4, "0");
|
|
121
|
-
return `${versionStr}_${adjective}_${noun}`;
|
|
122
|
-
}
|
|
123
|
-
function getManifestHash(manifest) {
|
|
124
|
-
return manifest.codeHash;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// src/utils/manifest/io.ts
|
|
128
|
-
import { mkdir, readdir, readFile, writeFile } from "fs/promises";
|
|
129
|
-
import { join } from "path";
|
|
130
|
-
function isManifestVersionFile(fileName) {
|
|
131
|
-
return fileName.endsWith(".json");
|
|
132
|
-
}
|
|
133
|
-
async function readManifestVersionFile(filePath) {
|
|
134
|
-
try {
|
|
135
|
-
const src = await readFile(filePath, "utf-8");
|
|
136
|
-
return JSON.parse(src);
|
|
137
|
-
} catch {
|
|
138
|
-
return null;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
async function readSnapshot(snapshotPath) {
|
|
142
|
-
try {
|
|
143
|
-
const src = await readFile(snapshotPath, "utf-8");
|
|
144
|
-
return JSON.parse(src);
|
|
145
|
-
} catch {
|
|
146
|
-
return {};
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
async function writeVersionedManifest(params) {
|
|
150
|
-
const { cwd, agentName, manifest } = params;
|
|
151
|
-
const agentMetaDir = join(cwd, "meta", "migrations", agentName);
|
|
152
|
-
await mkdir(agentMetaDir, { recursive: true });
|
|
153
|
-
const files = await readdir(agentMetaDir);
|
|
154
|
-
const versionFiles = files.filter(isManifestVersionFile);
|
|
155
|
-
const existingRecords = (await Promise.all(
|
|
156
|
-
versionFiles.map(
|
|
157
|
-
(file) => readManifestVersionFile(join(agentMetaDir, file))
|
|
158
|
-
)
|
|
159
|
-
)).filter((record2) => record2 !== null);
|
|
160
|
-
const latestVersion = existingRecords.map((record2) => record2.version).sort((a, b) => a - b).at(-1) ?? 0;
|
|
161
|
-
const nextVersion = latestVersion + 1;
|
|
162
|
-
const generatedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
163
|
-
const versionId = createVersionId(nextVersion);
|
|
164
|
-
const record = {
|
|
165
|
-
version: nextVersion,
|
|
166
|
-
versionId,
|
|
167
|
-
hash: getManifestHash(manifest),
|
|
168
|
-
generatedAt,
|
|
169
|
-
immutable: true,
|
|
170
|
-
manifest
|
|
171
|
-
};
|
|
172
|
-
const versionFile = join(agentMetaDir, `${versionId}.json`);
|
|
173
|
-
await writeFile(versionFile, JSON.stringify(record, null, 2) + "\n", "utf-8");
|
|
174
|
-
const snapshotPath = join(cwd, "meta", "snapshot.json");
|
|
175
|
-
const snapshot = await readSnapshot(snapshotPath);
|
|
176
|
-
const prev = snapshot[agentName] ?? { latest: "", versions: [] };
|
|
177
|
-
const versions = prev.versions.includes(versionId) ? prev.versions : [...prev.versions, versionId];
|
|
178
|
-
snapshot[agentName] = { latest: versionId, versions };
|
|
179
|
-
await writeFile(
|
|
180
|
-
snapshotPath,
|
|
181
|
-
JSON.stringify(snapshot, null, 2) + "\n",
|
|
182
|
-
"utf-8"
|
|
183
|
-
);
|
|
184
|
-
return {
|
|
185
|
-
...record,
|
|
186
|
-
outputPath: versionFile
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
async function readLatestVersionedManifest(params) {
|
|
190
|
-
const { cwd, agentName } = params;
|
|
191
|
-
const agentMetaDir = join(cwd, "meta", "migrations", agentName);
|
|
192
|
-
const snapshotPath = join(cwd, "meta", "snapshot.json");
|
|
193
|
-
const snapshot = await readSnapshot(snapshotPath);
|
|
194
|
-
const agentEntry = snapshot[agentName];
|
|
195
|
-
if (agentEntry?.latest) {
|
|
196
|
-
const latestFile = join(agentMetaDir, `${agentEntry.latest}.json`);
|
|
197
|
-
const latest = await readManifestVersionFile(latestFile);
|
|
198
|
-
if (latest) {
|
|
199
|
-
return {
|
|
200
|
-
...latest,
|
|
201
|
-
outputPath: latestFile
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
const files = await readdir(agentMetaDir).catch(() => []);
|
|
206
|
-
const records = (await Promise.all(
|
|
207
|
-
files.filter(isManifestVersionFile).map((file) => readManifestVersionFile(join(agentMetaDir, file)))
|
|
208
|
-
)).filter((record) => record !== null);
|
|
209
|
-
if (records.length === 0) {
|
|
210
|
-
return null;
|
|
211
|
-
}
|
|
212
|
-
const newest = records.sort((a, b) => b.version - a.version)[0] ?? null;
|
|
213
|
-
if (!newest) {
|
|
214
|
-
return null;
|
|
215
|
-
}
|
|
216
|
-
return {
|
|
217
|
-
...newest,
|
|
218
|
-
outputPath: join(agentMetaDir, `${newest.versionId}.json`)
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// src/utils/manifest/types.ts
|
|
223
|
-
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
224
|
-
function asRecord(value) {
|
|
225
|
-
return typeof value === "object" && value !== null ? value : {};
|
|
226
|
-
}
|
|
227
|
-
function asString(value) {
|
|
228
|
-
return typeof value === "string" ? value : void 0;
|
|
229
|
-
}
|
|
230
|
-
function asArray(value) {
|
|
231
|
-
return Array.isArray(value) ? value : [];
|
|
232
|
-
}
|
|
233
|
-
function toJsonSchema(schema, name) {
|
|
234
|
-
try {
|
|
235
|
-
return zodToJsonSchema(schema, name);
|
|
236
|
-
} catch {
|
|
237
|
-
return null;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
// src/utils/manifest/serialize.ts
|
|
242
|
-
function serializeSystemPrompt(systemPrompt) {
|
|
243
|
-
if (typeof systemPrompt === "string") {
|
|
244
|
-
return { type: "static", value: systemPrompt };
|
|
245
|
-
}
|
|
246
|
-
if (typeof systemPrompt === "function") {
|
|
247
|
-
return { type: "dynamic" };
|
|
248
|
-
}
|
|
249
|
-
return { type: "none" };
|
|
250
|
-
}
|
|
251
|
-
function serializeSteps(steps) {
|
|
252
|
-
return steps.map((step, index) => {
|
|
253
|
-
const item = asRecord(step);
|
|
254
|
-
return {
|
|
255
|
-
id: asString(item.id) ?? `step_${index + 1}`,
|
|
256
|
-
order: index + 1,
|
|
257
|
-
description: asString(item.description) ?? "",
|
|
258
|
-
inputSchema: toJsonSchema(item.input, `step_${index + 1}_input`),
|
|
259
|
-
outputSchema: toJsonSchema(item.output, `step_${index + 1}_output`)
|
|
260
|
-
};
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
function serializeTools(tools) {
|
|
264
|
-
return tools.map((tool, index) => {
|
|
265
|
-
const item = asRecord(tool);
|
|
266
|
-
return {
|
|
267
|
-
id: asString(item.id) ?? `tool_${index + 1}`,
|
|
268
|
-
order: index + 1,
|
|
269
|
-
description: asString(item.description) ?? "",
|
|
270
|
-
inputSchema: toJsonSchema(item.input, `tool_${index + 1}_input`)
|
|
271
|
-
};
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
function serializeRoutes(routes) {
|
|
275
|
-
return routes.map((route, index) => {
|
|
276
|
-
const item = asRecord(route);
|
|
277
|
-
return {
|
|
278
|
-
id: asString(item.id) ?? `route_${index + 1}`,
|
|
279
|
-
order: index + 1,
|
|
280
|
-
method: asString(item.method) ?? "GET",
|
|
281
|
-
path: asString(item.path) ?? "/",
|
|
282
|
-
inputSchema: toJsonSchema(item.input, `route_${index + 1}_input`)
|
|
283
|
-
};
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
function serializeFlows(flows, stepIds) {
|
|
287
|
-
return flows.map((flow, index) => {
|
|
288
|
-
const item = asRecord(flow);
|
|
289
|
-
const steps = asArray(item.steps).map((s, stepIndex) => {
|
|
290
|
-
const step = asRecord(s);
|
|
291
|
-
const stepId = asString(step.id) ?? `step_${stepIndex + 1}`;
|
|
292
|
-
return {
|
|
293
|
-
order: stepIndex + 1,
|
|
294
|
-
stepId,
|
|
295
|
-
existsInAgentSteps: stepIds.has(stepId)
|
|
296
|
-
};
|
|
297
|
-
});
|
|
298
|
-
return {
|
|
299
|
-
id: asString(item.id) ?? `flow_${index + 1}`,
|
|
300
|
-
order: index + 1,
|
|
301
|
-
description: asString(item.description) ?? "",
|
|
302
|
-
steps
|
|
303
|
-
};
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
// src/utils/manifest/build.ts
|
|
308
|
-
import { existsSync } from "fs";
|
|
309
|
-
import { mkdtemp, readFile as readFile2, rm } from "fs/promises";
|
|
310
|
-
import { join as join2, resolve } from "path";
|
|
311
|
-
import { pathToFileURL } from "url";
|
|
312
|
-
import { build } from "esbuild";
|
|
313
|
-
async function getHash(payload) {
|
|
314
|
-
const { createHash } = await import("crypto");
|
|
315
|
-
return createHash("sha256").update(payload).digest("hex");
|
|
316
|
-
}
|
|
317
|
-
async function loadAgentModule(agentPath, cwd) {
|
|
318
|
-
const tempDir = await mkdtemp(join2(cwd, ".kalp-manifest-"));
|
|
319
|
-
const outFile = join2(tempDir, "agent.manifest.mjs");
|
|
320
|
-
await build({
|
|
321
|
-
entryPoints: [agentPath],
|
|
322
|
-
outfile: outFile,
|
|
323
|
-
bundle: true,
|
|
324
|
-
format: "esm",
|
|
325
|
-
platform: "node",
|
|
326
|
-
target: "node18",
|
|
327
|
-
logLevel: "silent",
|
|
328
|
-
packages: "external",
|
|
329
|
-
plugins: [
|
|
330
|
-
{
|
|
331
|
-
name: "relative-js-to-ts",
|
|
332
|
-
setup(buildCtx) {
|
|
333
|
-
buildCtx.onResolve({ filter: /^\.\/.*\.js$/ }, (args) => {
|
|
334
|
-
const resolved = resolve(args.resolveDir, args.path);
|
|
335
|
-
if (existsSync(resolved)) {
|
|
336
|
-
return { path: resolved };
|
|
337
|
-
}
|
|
338
|
-
const tsPath = resolved.replace(/\.js$/, ".ts");
|
|
339
|
-
if (existsSync(tsPath)) {
|
|
340
|
-
return { path: tsPath };
|
|
341
|
-
}
|
|
342
|
-
const tsxPath = resolved.replace(/\.js$/, ".tsx");
|
|
343
|
-
if (existsSync(tsxPath)) {
|
|
344
|
-
return { path: tsxPath };
|
|
345
|
-
}
|
|
346
|
-
return null;
|
|
347
|
-
});
|
|
348
|
-
}
|
|
349
|
-
},
|
|
350
|
-
{
|
|
351
|
-
name: "tsconfig-paths",
|
|
352
|
-
setup(buildCtx) {
|
|
353
|
-
buildCtx.onResolve({ filter: /^@\// }, (args) => {
|
|
354
|
-
const withoutPrefix = args.path.replace(/^@\//, "");
|
|
355
|
-
const resolved = resolve(cwd, withoutPrefix);
|
|
356
|
-
if (existsSync(resolved)) {
|
|
357
|
-
return { path: resolved };
|
|
358
|
-
}
|
|
359
|
-
const tsPath = resolved + ".ts";
|
|
360
|
-
if (existsSync(tsPath)) {
|
|
361
|
-
return { path: tsPath };
|
|
362
|
-
}
|
|
363
|
-
const tsxPath = resolved + ".tsx";
|
|
364
|
-
if (existsSync(tsxPath)) {
|
|
365
|
-
return { path: tsxPath };
|
|
366
|
-
}
|
|
367
|
-
const indexTsPath = join2(resolved, "index.ts");
|
|
368
|
-
if (existsSync(indexTsPath)) {
|
|
369
|
-
return { path: indexTsPath };
|
|
370
|
-
}
|
|
371
|
-
return null;
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
]
|
|
376
|
-
});
|
|
377
|
-
const loaded = await import(`${pathToFileURL(outFile).href}?t=${Date.now()}`);
|
|
378
|
-
const bundledCode = await readFile2(outFile, "utf-8");
|
|
379
|
-
const codeHash = await getHash(bundledCode);
|
|
380
|
-
return {
|
|
381
|
-
agent: loaded.default,
|
|
382
|
-
tempDir,
|
|
383
|
-
codeHash
|
|
384
|
-
};
|
|
385
|
-
}
|
|
386
|
-
async function cleanupTempDir(tempDir) {
|
|
387
|
-
await rm(tempDir, { recursive: true, force: true });
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
// src/utils/manifest/index.ts
|
|
391
|
-
import { access } from "fs/promises";
|
|
392
|
-
import { join as join3 } from "path";
|
|
393
|
-
async function readAgentManifest(params) {
|
|
394
|
-
const { cwd, agentName } = params;
|
|
395
|
-
const agentPath = join3(cwd, "agents", agentName, "index.ts");
|
|
396
|
-
await access(agentPath);
|
|
397
|
-
let tempDir;
|
|
398
|
-
try {
|
|
399
|
-
const loaded = await loadAgentModule(agentPath, cwd);
|
|
400
|
-
tempDir = loaded.tempDir;
|
|
401
|
-
const agent = asRecord(loaded.agent);
|
|
402
|
-
const steps = serializeSteps(asArray(agent.steps));
|
|
403
|
-
const tools = serializeTools(asArray(agent.tools));
|
|
404
|
-
const routes = serializeRoutes(asArray(agent.routes));
|
|
405
|
-
const stepIds = new Set(steps.map((step) => step.id));
|
|
406
|
-
const flows = serializeFlows(asArray(agent.flows), stepIds);
|
|
407
|
-
return {
|
|
408
|
-
format: "kalp-agent-manifest",
|
|
409
|
-
schemaVersion: 1,
|
|
410
|
-
generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
411
|
-
codeHash: loaded.codeHash,
|
|
412
|
-
agent: {
|
|
413
|
-
id: asString(agent.id),
|
|
414
|
-
name: asString(agent.name) ?? agentName,
|
|
415
|
-
description: asString(agent.description) ?? "",
|
|
416
|
-
systemPrompt: serializeSystemPrompt(agent.systemPrompt),
|
|
417
|
-
lifecycle: {
|
|
418
|
-
onInit: typeof agent.onInit === "function",
|
|
419
|
-
onMessage: typeof agent.onMessage === "function",
|
|
420
|
-
onTick: typeof agent.onTick === "function"
|
|
421
|
-
},
|
|
422
|
-
actions: {
|
|
423
|
-
ai: true,
|
|
424
|
-
wait: true,
|
|
425
|
-
fetch: true,
|
|
426
|
-
runStep: true,
|
|
427
|
-
callTool: true,
|
|
428
|
-
runFlow: true
|
|
429
|
-
},
|
|
430
|
-
steps,
|
|
431
|
-
tools,
|
|
432
|
-
routes,
|
|
433
|
-
flows,
|
|
434
|
-
execution: {
|
|
435
|
-
stepOrder: steps.map((step) => step.id),
|
|
436
|
-
toolOrder: tools.map((tool) => tool.id),
|
|
437
|
-
routeOrder: routes.map((route) => route.id),
|
|
438
|
-
flowOrder: flows.map((flow) => flow.id)
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
};
|
|
442
|
-
} finally {
|
|
443
|
-
if (tempDir) {
|
|
444
|
-
await cleanupTempDir(tempDir);
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
export {
|
|
450
|
-
getManifestHash,
|
|
451
|
-
writeVersionedManifest,
|
|
452
|
-
readLatestVersionedManifest,
|
|
453
|
-
readAgentManifest
|
|
454
|
-
};
|
|
455
|
-
//# sourceMappingURL=chunk-S3GDDAMX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/manifest/hash.ts","../src/utils/manifest/io.ts","../src/utils/manifest/types.ts","../src/utils/manifest/serialize.ts","../src/utils/manifest/build.ts","../src/utils/manifest/index.ts"],"sourcesContent":["import type { AgentManifestV1 } from \"@/utils/manifest/types\";\n\n// Fantasy adjectives for migration names (like Drizzle)\nconst ADJECTIVES = [\n \"ancient\",\n \"bold\",\n \"brave\",\n \"bright\",\n \"calm\",\n \"cool\",\n \"cosmic\",\n \"crimson\",\n \"curious\",\n \"daring\",\n \"divine\",\n \"eager\",\n \"elegant\",\n \"fierce\",\n \"gentle\",\n \"golden\",\n \"gracious\",\n \"happy\",\n \"honest\",\n \"humble\",\n \"jolly\",\n \"joyful\",\n \"kind\",\n \"lively\",\n \"lucky\",\n \"magic\",\n \"mighty\",\n \"modern\",\n \"noble\",\n \"peaceful\",\n \"polished\",\n \"proud\",\n \"quick\",\n \"quiet\",\n \"radiant\",\n \"rapid\",\n \"royal\",\n \"serene\",\n \"shiny\",\n \"silent\",\n \"sleek\",\n \"swift\",\n \"tender\",\n \"timely\",\n \"trusting\",\n \"vivid\",\n \"warm\",\n \"wild\",\n \"wise\",\n \"witty\",\n \"zesty\",\n] as const;\n\n// Fantasy nouns for migration names\nconst NOUNS = [\n \"arrow\",\n \"aurora\",\n \"breeze\",\n \"canyon\",\n \"comet\",\n \"crystal\",\n \"dawn\",\n \"diamond\",\n \"dragon\",\n \"dream\",\n \"eagle\",\n \"echo\",\n \"falcon\",\n \"flame\",\n \"forest\",\n \"galaxy\",\n \"garden\",\n \"harbor\",\n \"harmony\",\n \"horizon\",\n \"island\",\n \"journey\",\n \"lagoon\",\n \"meadow\",\n \"miracle\",\n \"moon\",\n \"mountain\",\n \"nebula\",\n \"ocean\",\n \"orchard\",\n \"phoenix\",\n \"pioneer\",\n \"prairie\",\n \"quasar\",\n \"rainbow\",\n \"rapids\",\n \"river\",\n \"shadow\",\n \"silence\",\n \"sky\",\n \"solar\",\n \"star\",\n \"storm\",\n \"summit\",\n \"sunrise\",\n \"sunset\",\n \"thunder\",\n \"tide\",\n \"valley\",\n \"voyage\",\n \"waterfall\",\n \"wave\",\n \"wildflower\",\n \"wisdom\",\n \"zenith\",\n] as const;\n\nfunction getRandomElement<T extends readonly string[]>(arr: T): T[number] {\n return arr[Math.floor(Math.random() * arr.length)] as T[number];\n}\n\nexport function createVersionId(version: number): string {\n const adjective = getRandomElement(ADJECTIVES);\n const noun = getRandomElement(NOUNS);\n const versionStr = version.toString().padStart(4, \"0\");\n return `${versionStr}_${adjective}_${noun}`;\n}\n\nexport function getManifestHash(manifest: AgentManifestV1): string {\n return manifest.codeHash;\n}\n","import { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { ManifestVersionRecord, ManifestRegistryEntry } from \"./types\";\nimport { createVersionId, getManifestHash } from \"./hash\";\nimport type { AgentManifestV1 } from \"./types\";\n\nfunction isManifestVersionFile(fileName: string): boolean {\n return fileName.endsWith(\".json\");\n}\n\nasync function readManifestVersionFile(\n filePath: string,\n): Promise<ManifestVersionRecord | null> {\n try {\n const src = await readFile(filePath, \"utf-8\");\n return JSON.parse(src) as ManifestVersionRecord;\n } catch {\n return null;\n }\n}\n\nasync function readSnapshot(\n snapshotPath: string,\n): Promise<Record<string, ManifestRegistryEntry>> {\n try {\n const src = await readFile(snapshotPath, \"utf-8\");\n return JSON.parse(src) as Record<string, ManifestRegistryEntry>;\n } catch {\n return {};\n }\n}\n\nexport async function writeVersionedManifest(params: {\n cwd: string;\n agentName: string;\n manifest: AgentManifestV1;\n}): Promise<ManifestVersionRecord & { outputPath: string }> {\n const { cwd, agentName, manifest } = params;\n const agentMetaDir = join(cwd, \"meta\", \"migrations\", agentName);\n await mkdir(agentMetaDir, { recursive: true });\n\n const files = await readdir(agentMetaDir);\n const versionFiles = files.filter(isManifestVersionFile);\n const existingRecords = (\n await Promise.all(\n versionFiles.map((file) =>\n readManifestVersionFile(join(agentMetaDir, file)),\n ),\n )\n ).filter((record): record is ManifestVersionRecord => record !== null);\n\n const latestVersion =\n existingRecords\n .map((record) => record.version)\n .sort((a, b) => a - b)\n .at(-1) ?? 0;\n const nextVersion = latestVersion + 1;\n\n const generatedAt = new Date().toISOString();\n const versionId = createVersionId(nextVersion);\n const record: ManifestVersionRecord = {\n version: nextVersion,\n versionId,\n hash: getManifestHash(manifest),\n generatedAt,\n immutable: true,\n manifest,\n };\n\n const versionFile = join(agentMetaDir, `${versionId}.json`);\n await writeFile(versionFile, JSON.stringify(record, null, 2) + \"\\n\", \"utf-8\");\n\n const snapshotPath = join(cwd, \"meta\", \"snapshot.json\");\n const snapshot = await readSnapshot(snapshotPath);\n const prev = snapshot[agentName] ?? { latest: \"\", versions: [] };\n const versions = prev.versions.includes(versionId)\n ? prev.versions\n : [...prev.versions, versionId];\n snapshot[agentName] = { latest: versionId, versions };\n await writeFile(\n snapshotPath,\n JSON.stringify(snapshot, null, 2) + \"\\n\",\n \"utf-8\",\n );\n\n return {\n ...record,\n outputPath: versionFile,\n };\n}\n\nexport async function readLatestVersionedManifest(params: {\n cwd: string;\n agentName: string;\n}): Promise<(ManifestVersionRecord & { outputPath: string }) | null> {\n const { cwd, agentName } = params;\n const agentMetaDir = join(cwd, \"meta\", \"migrations\", agentName);\n const snapshotPath = join(cwd, \"meta\", \"snapshot.json\");\n\n const snapshot = await readSnapshot(snapshotPath);\n const agentEntry = snapshot[agentName];\n\n if (agentEntry?.latest) {\n const latestFile = join(agentMetaDir, `${agentEntry.latest}.json`);\n const latest = await readManifestVersionFile(latestFile);\n if (latest) {\n return {\n ...latest,\n outputPath: latestFile,\n };\n }\n }\n\n const files = await readdir(agentMetaDir).catch(() => [] as string[]);\n const records = (\n await Promise.all(\n files\n .filter(isManifestVersionFile)\n .map((file) => readManifestVersionFile(join(agentMetaDir, file))),\n )\n ).filter((record): record is ManifestVersionRecord => record !== null);\n\n if (records.length === 0) {\n return null;\n }\n\n const newest = records.sort((a, b) => b.version - a.version)[0] ?? null;\n if (!newest) {\n return null;\n }\n\n return {\n ...newest,\n outputPath: join(agentMetaDir, `${newest.versionId}.json`),\n };\n}\n","import type { ZodTypeAny } from \"zod\";\nimport { zodToJsonSchema } from \"zod-to-json-schema\";\n\nexport interface AgentManifestV1 {\n format: \"kalp-agent-manifest\";\n schemaVersion: 1;\n generatedAt: string;\n codeHash: string;\n agent: {\n id?: string;\n name: string;\n description: string;\n systemPrompt:\n | { type: \"static\"; value: string }\n | { type: \"dynamic\" }\n | { type: \"none\" };\n lifecycle: {\n onInit: boolean;\n onMessage: boolean;\n onTick: boolean;\n };\n actions: {\n ai: boolean;\n wait: boolean;\n fetch: boolean;\n runStep: boolean;\n callTool: boolean;\n runFlow: boolean;\n };\n steps: Array<{\n id: string;\n order: number;\n description: string;\n inputSchema: Record<string, unknown> | null;\n outputSchema: Record<string, unknown> | null;\n }>;\n tools: Array<{\n id: string;\n order: number;\n description: string;\n inputSchema: Record<string, unknown> | null;\n }>;\n routes: Array<{\n id: string;\n order: number;\n method: string;\n path: string;\n inputSchema: Record<string, unknown> | null;\n }>;\n flows: Array<{\n id: string;\n order: number;\n description: string;\n steps: Array<{\n order: number;\n stepId: string;\n existsInAgentSteps: boolean;\n }>;\n }>;\n execution: {\n stepOrder: string[];\n toolOrder: string[];\n routeOrder: string[];\n flowOrder: string[];\n };\n };\n}\n\nexport interface ManifestVersionRecord {\n version: number;\n versionId: string;\n hash: string;\n generatedAt: string;\n immutable: true;\n manifest: AgentManifestV1;\n}\n\nexport interface ManifestRegistryEntry {\n latest: string;\n versions: string[];\n}\n\nexport interface LoadedAgentModule {\n agent: unknown;\n tempDir: string;\n}\n\nexport interface AgentItemWithInput {\n id?: unknown;\n description?: unknown;\n input?: unknown;\n}\n\nexport interface AgentStepItem extends AgentItemWithInput {\n output?: unknown;\n}\n\nexport interface AgentRouteItem extends AgentItemWithInput {\n method?: unknown;\n path?: unknown;\n}\n\nexport interface AgentFlowItem {\n id?: unknown;\n description?: unknown;\n steps?: unknown;\n}\n\nexport function asRecord(value: unknown): Record<string, unknown> {\n return typeof value === \"object\" && value !== null\n ? (value as Record<string, unknown>)\n : {};\n}\n\nexport function asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport function asArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\n\nexport function toJsonSchema(\n schema: unknown,\n name: string,\n): Record<string, unknown> | null {\n try {\n return zodToJsonSchema(schema as ZodTypeAny, name) as Record<\n string,\n unknown\n >;\n } catch {\n return null;\n }\n}\n","import type {\n AgentManifestV1,\n AgentStepItem,\n AgentItemWithInput,\n AgentRouteItem,\n AgentFlowItem,\n} from \"@/utils/manifest/types\";\nimport {\n asRecord,\n asString,\n asArray,\n toJsonSchema,\n} from \"@/utils/manifest/types\";\n\nexport function serializeSystemPrompt(\n systemPrompt: unknown,\n): AgentManifestV1[\"agent\"][\"systemPrompt\"] {\n if (typeof systemPrompt === \"string\") {\n return { type: \"static\", value: systemPrompt };\n }\n\n if (typeof systemPrompt === \"function\") {\n return { type: \"dynamic\" };\n }\n\n return { type: \"none\" };\n}\n\nexport function serializeSteps(\n steps: unknown[],\n): AgentManifestV1[\"agent\"][\"steps\"] {\n return steps.map((step, index) => {\n const item = asRecord(step) as AgentStepItem;\n return {\n id: asString(item.id) ?? `step_${index + 1}`,\n order: index + 1,\n description: asString(item.description) ?? \"\",\n inputSchema: toJsonSchema(item.input, `step_${index + 1}_input`),\n outputSchema: toJsonSchema(item.output, `step_${index + 1}_output`),\n };\n });\n}\n\nexport function serializeTools(\n tools: unknown[],\n): AgentManifestV1[\"agent\"][\"tools\"] {\n return tools.map((tool, index) => {\n const item = asRecord(tool) as AgentItemWithInput;\n return {\n id: asString(item.id) ?? `tool_${index + 1}`,\n order: index + 1,\n description: asString(item.description) ?? \"\",\n inputSchema: toJsonSchema(item.input, `tool_${index + 1}_input`),\n };\n });\n}\n\nexport function serializeRoutes(\n routes: unknown[],\n): AgentManifestV1[\"agent\"][\"routes\"] {\n return routes.map((route, index) => {\n const item = asRecord(route) as AgentRouteItem;\n return {\n id: asString(item.id) ?? `route_${index + 1}`,\n order: index + 1,\n method: asString(item.method) ?? \"GET\",\n path: asString(item.path) ?? \"/\",\n inputSchema: toJsonSchema(item.input, `route_${index + 1}_input`),\n };\n });\n}\n\nexport function serializeFlows(\n flows: unknown[],\n stepIds: Set<string>,\n): AgentManifestV1[\"agent\"][\"flows\"] {\n return flows.map((flow, index) => {\n const item = asRecord(flow) as AgentFlowItem;\n const steps = asArray(item.steps).map((s, stepIndex) => {\n const step = asRecord(s);\n const stepId = asString(step.id) ?? `step_${stepIndex + 1}`;\n return {\n order: stepIndex + 1,\n stepId,\n existsInAgentSteps: stepIds.has(stepId),\n };\n });\n\n return {\n id: asString(item.id) ?? `flow_${index + 1}`,\n order: index + 1,\n description: asString(item.description) ?? \"\",\n steps,\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 & { codeHash: string }> {\n const tempDir = await mkdtemp(join(cwd, \".kalp-manifest-\"));\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","export type {\n AgentManifestV1,\n ManifestVersionRecord,\n ManifestRegistryEntry,\n LoadedAgentModule,\n AgentItemWithInput,\n AgentStepItem,\n AgentRouteItem,\n AgentFlowItem,\n} from \"@/utils/manifest/types\";\n\nexport {\n asRecord,\n asString,\n asArray,\n toJsonSchema,\n} from \"@/utils/manifest/types\";\n\nexport {\n serializeSystemPrompt,\n serializeSteps,\n serializeTools,\n serializeRoutes,\n serializeFlows,\n} from \"@/utils/manifest/serialize\";\n\nexport { loadAgentModule, cleanupTempDir } from \"@/utils/manifest/build\";\n\nexport { createVersionId, getManifestHash } from \"@/utils/manifest/hash\";\n\nexport {\n writeVersionedManifest,\n readLatestVersionedManifest,\n} from \"@/utils/manifest/io\";\n\n// Main function to read agent manifest\nimport { access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { loadAgentModule, cleanupTempDir } from \"@/utils/manifest/build\";\nimport {\n serializeSystemPrompt,\n serializeSteps,\n serializeTools,\n serializeRoutes,\n serializeFlows,\n} from \"@/utils/manifest/serialize\";\nimport {\n asRecord,\n asString,\n asArray,\n type AgentManifestV1,\n} from \"@/utils/manifest/types\";\n\nexport async function readAgentManifest(params: {\n cwd: string;\n agentName: string;\n}): Promise<AgentManifestV1> {\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 const agent = asRecord(loaded.agent);\n const steps = serializeSteps(asArray(agent.steps));\n const tools = serializeTools(asArray(agent.tools));\n const routes = serializeRoutes(asArray(agent.routes));\n const stepIds = new Set(steps.map((step) => step.id));\n const flows = serializeFlows(asArray(agent.flows), stepIds);\n\n return {\n format: \"kalp-agent-manifest\",\n schemaVersion: 1,\n generatedAt: new Date().toISOString(),\n codeHash: loaded.codeHash,\n agent: {\n id: asString(agent.id),\n name: asString(agent.name) ?? agentName,\n description: asString(agent.description) ?? \"\",\n systemPrompt: serializeSystemPrompt(agent.systemPrompt),\n lifecycle: {\n onInit: typeof agent.onInit === \"function\",\n onMessage: typeof agent.onMessage === \"function\",\n onTick: typeof agent.onTick === \"function\",\n },\n actions: {\n ai: true,\n wait: true,\n fetch: true,\n runStep: true,\n callTool: true,\n runFlow: true,\n },\n steps,\n tools,\n routes,\n flows,\n execution: {\n stepOrder: steps.map((step) => step.id),\n toolOrder: tools.map((tool) => tool.id),\n routeOrder: routes.map((route) => route.id),\n flowOrder: flows.map((flow) => flow.id),\n },\n },\n };\n } finally {\n if (tempDir) {\n await cleanupTempDir(tempDir);\n }\n }\n}\n"],"mappings":";;;AAGA,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,IAAM,QAAQ;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,iBAA8C,KAAmB;AACxE,SAAO,IAAI,KAAK,MAAM,KAAK,OAAO,IAAI,IAAI,MAAM,CAAC;AACnD;AAEO,SAAS,gBAAgB,SAAyB;AACvD,QAAM,YAAY,iBAAiB,UAAU;AAC7C,QAAM,OAAO,iBAAiB,KAAK;AACnC,QAAM,aAAa,QAAQ,SAAS,EAAE,SAAS,GAAG,GAAG;AACrD,SAAO,GAAG,UAAU,IAAI,SAAS,IAAI,IAAI;AAC3C;AAEO,SAAS,gBAAgB,UAAmC;AACjE,SAAO,SAAS;AAClB;;;ACjIA,SAAS,OAAO,SAAS,UAAU,iBAAiB;AACpD,SAAS,YAAY;AAKrB,SAAS,sBAAsB,UAA2B;AACxD,SAAO,SAAS,SAAS,OAAO;AAClC;AAEA,eAAe,wBACb,UACuC;AACvC,MAAI;AACF,UAAM,MAAM,MAAM,SAAS,UAAU,OAAO;AAC5C,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAe,aACb,cACgD;AAChD,MAAI;AACF,UAAM,MAAM,MAAM,SAAS,cAAc,OAAO;AAChD,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEA,eAAsB,uBAAuB,QAIe;AAC1D,QAAM,EAAE,KAAK,WAAW,SAAS,IAAI;AACrC,QAAM,eAAe,KAAK,KAAK,QAAQ,cAAc,SAAS;AAC9D,QAAM,MAAM,cAAc,EAAE,WAAW,KAAK,CAAC;AAE7C,QAAM,QAAQ,MAAM,QAAQ,YAAY;AACxC,QAAM,eAAe,MAAM,OAAO,qBAAqB;AACvD,QAAM,mBACJ,MAAM,QAAQ;AAAA,IACZ,aAAa;AAAA,MAAI,CAAC,SAChB,wBAAwB,KAAK,cAAc,IAAI,CAAC;AAAA,IAClD;AAAA,EACF,GACA,OAAO,CAACA,YAA4CA,YAAW,IAAI;AAErE,QAAM,gBACJ,gBACG,IAAI,CAACA,YAAWA,QAAO,OAAO,EAC9B,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,EACpB,GAAG,EAAE,KAAK;AACf,QAAM,cAAc,gBAAgB;AAEpC,QAAM,eAAc,oBAAI,KAAK,GAAE,YAAY;AAC3C,QAAM,YAAY,gBAAgB,WAAW;AAC7C,QAAM,SAAgC;AAAA,IACpC,SAAS;AAAA,IACT;AAAA,IACA,MAAM,gBAAgB,QAAQ;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,IACX;AAAA,EACF;AAEA,QAAM,cAAc,KAAK,cAAc,GAAG,SAAS,OAAO;AAC1D,QAAM,UAAU,aAAa,KAAK,UAAU,QAAQ,MAAM,CAAC,IAAI,MAAM,OAAO;AAE5E,QAAM,eAAe,KAAK,KAAK,QAAQ,eAAe;AACtD,QAAM,WAAW,MAAM,aAAa,YAAY;AAChD,QAAM,OAAO,SAAS,SAAS,KAAK,EAAE,QAAQ,IAAI,UAAU,CAAC,EAAE;AAC/D,QAAM,WAAW,KAAK,SAAS,SAAS,SAAS,IAC7C,KAAK,WACL,CAAC,GAAG,KAAK,UAAU,SAAS;AAChC,WAAS,SAAS,IAAI,EAAE,QAAQ,WAAW,SAAS;AACpD,QAAM;AAAA,IACJ;AAAA,IACA,KAAK,UAAU,UAAU,MAAM,CAAC,IAAI;AAAA,IACpC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,YAAY;AAAA,EACd;AACF;AAEA,eAAsB,4BAA4B,QAGmB;AACnE,QAAM,EAAE,KAAK,UAAU,IAAI;AAC3B,QAAM,eAAe,KAAK,KAAK,QAAQ,cAAc,SAAS;AAC9D,QAAM,eAAe,KAAK,KAAK,QAAQ,eAAe;AAEtD,QAAM,WAAW,MAAM,aAAa,YAAY;AAChD,QAAM,aAAa,SAAS,SAAS;AAErC,MAAI,YAAY,QAAQ;AACtB,UAAM,aAAa,KAAK,cAAc,GAAG,WAAW,MAAM,OAAO;AACjE,UAAM,SAAS,MAAM,wBAAwB,UAAU;AACvD,QAAI,QAAQ;AACV,aAAO;AAAA,QACL,GAAG;AAAA,QACH,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,MAAM,QAAQ,YAAY,EAAE,MAAM,MAAM,CAAC,CAAa;AACpE,QAAM,WACJ,MAAM,QAAQ;AAAA,IACZ,MACG,OAAO,qBAAqB,EAC5B,IAAI,CAAC,SAAS,wBAAwB,KAAK,cAAc,IAAI,CAAC,CAAC;AAAA,EACpE,GACA,OAAO,CAAC,WAA4C,WAAW,IAAI;AAErE,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,QAAQ,KAAK,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,KAAK;AACnE,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,YAAY,KAAK,cAAc,GAAG,OAAO,SAAS,OAAO;AAAA,EAC3D;AACF;;;ACtIA,SAAS,uBAAuB;AA2GzB,SAAS,SAAS,OAAyC;AAChE,SAAO,OAAO,UAAU,YAAY,UAAU,OACzC,QACD,CAAC;AACP;AAEO,SAAS,SAAS,OAAoC;AAC3D,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AAEO,SAAS,QAAQ,OAA2B;AACjD,SAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC;AACzC;AAEO,SAAS,aACd,QACA,MACgC;AAChC,MAAI;AACF,WAAO,gBAAgB,QAAsB,IAAI;AAAA,EAInD,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;ACxHO,SAAS,sBACd,cAC0C;AAC1C,MAAI,OAAO,iBAAiB,UAAU;AACpC,WAAO,EAAE,MAAM,UAAU,OAAO,aAAa;AAAA,EAC/C;AAEA,MAAI,OAAO,iBAAiB,YAAY;AACtC,WAAO,EAAE,MAAM,UAAU;AAAA,EAC3B;AAEA,SAAO,EAAE,MAAM,OAAO;AACxB;AAEO,SAAS,eACd,OACmC;AACnC,SAAO,MAAM,IAAI,CAAC,MAAM,UAAU;AAChC,UAAM,OAAO,SAAS,IAAI;AAC1B,WAAO;AAAA,MACL,IAAI,SAAS,KAAK,EAAE,KAAK,QAAQ,QAAQ,CAAC;AAAA,MAC1C,OAAO,QAAQ;AAAA,MACf,aAAa,SAAS,KAAK,WAAW,KAAK;AAAA,MAC3C,aAAa,aAAa,KAAK,OAAO,QAAQ,QAAQ,CAAC,QAAQ;AAAA,MAC/D,cAAc,aAAa,KAAK,QAAQ,QAAQ,QAAQ,CAAC,SAAS;AAAA,IACpE;AAAA,EACF,CAAC;AACH;AAEO,SAAS,eACd,OACmC;AACnC,SAAO,MAAM,IAAI,CAAC,MAAM,UAAU;AAChC,UAAM,OAAO,SAAS,IAAI;AAC1B,WAAO;AAAA,MACL,IAAI,SAAS,KAAK,EAAE,KAAK,QAAQ,QAAQ,CAAC;AAAA,MAC1C,OAAO,QAAQ;AAAA,MACf,aAAa,SAAS,KAAK,WAAW,KAAK;AAAA,MAC3C,aAAa,aAAa,KAAK,OAAO,QAAQ,QAAQ,CAAC,QAAQ;AAAA,IACjE;AAAA,EACF,CAAC;AACH;AAEO,SAAS,gBACd,QACoC;AACpC,SAAO,OAAO,IAAI,CAAC,OAAO,UAAU;AAClC,UAAM,OAAO,SAAS,KAAK;AAC3B,WAAO;AAAA,MACL,IAAI,SAAS,KAAK,EAAE,KAAK,SAAS,QAAQ,CAAC;AAAA,MAC3C,OAAO,QAAQ;AAAA,MACf,QAAQ,SAAS,KAAK,MAAM,KAAK;AAAA,MACjC,MAAM,SAAS,KAAK,IAAI,KAAK;AAAA,MAC7B,aAAa,aAAa,KAAK,OAAO,SAAS,QAAQ,CAAC,QAAQ;AAAA,IAClE;AAAA,EACF,CAAC;AACH;AAEO,SAAS,eACd,OACA,SACmC;AACnC,SAAO,MAAM,IAAI,CAAC,MAAM,UAAU;AAChC,UAAM,OAAO,SAAS,IAAI;AAC1B,UAAM,QAAQ,QAAQ,KAAK,KAAK,EAAE,IAAI,CAAC,GAAG,cAAc;AACtD,YAAM,OAAO,SAAS,CAAC;AACvB,YAAM,SAAS,SAAS,KAAK,EAAE,KAAK,QAAQ,YAAY,CAAC;AACzD,aAAO;AAAA,QACL,OAAO,YAAY;AAAA,QACnB;AAAA,QACA,oBAAoB,QAAQ,IAAI,MAAM;AAAA,MACxC;AAAA,IACF,CAAC;AAED,WAAO;AAAA,MACL,IAAI,SAAS,KAAK,EAAE,KAAK,QAAQ,QAAQ,CAAC;AAAA,MAC1C,OAAO,QAAQ;AAAA,MACf,aAAa,SAAS,KAAK,WAAW,KAAK;AAAA,MAC3C;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AC/FA,SAAS,kBAAkB;AAC3B,SAAS,SAAS,YAAAC,WAAU,UAAU;AACtC,SAAS,QAAAC,OAAM,eAAe;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,aAAa;AAGtB,eAAe,QAAQ,SAAkC;AACvD,QAAM,EAAE,WAAW,IAAI,MAAM,OAAO,QAAa;AACjD,SAAO,WAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAC1D;AAEA,eAAsB,gBACpB,WACA,KACmD;AACnD,QAAM,UAAU,MAAM,QAAQA,MAAK,KAAK,iBAAiB,CAAC;AAC1D,QAAM,UAAUA,MAAK,SAAS,oBAAoB;AAElD,QAAM,MAAM;AAAA,IACV,aAAa,CAAC,SAAS;AAAA,IACvB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM,UAAU;AACd,mBAAS,UAAU,EAAE,QAAQ,eAAe,GAAG,CAAC,SAAS;AACvD,kBAAM,WAAW,QAAQ,KAAK,YAAY,KAAK,IAAI;AACnD,gBAAI,WAAW,QAAQ,GAAG;AACxB,qBAAO,EAAE,MAAM,SAAS;AAAA,YAC1B;AAEA,kBAAM,SAAS,SAAS,QAAQ,SAAS,KAAK;AAC9C,gBAAI,WAAW,MAAM,GAAG;AACtB,qBAAO,EAAE,MAAM,OAAO;AAAA,YACxB;AAEA,kBAAM,UAAU,SAAS,QAAQ,SAAS,MAAM;AAChD,gBAAI,WAAW,OAAO,GAAG;AACvB,qBAAO,EAAE,MAAM,QAAQ;AAAA,YACzB;AAEA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,UAAU;AACd,mBAAS,UAAU,EAAE,QAAQ,OAAO,GAAG,CAAC,SAAS;AAC/C,kBAAM,gBAAgB,KAAK,KAAK,QAAQ,QAAQ,EAAE;AAClD,kBAAM,WAAW,QAAQ,KAAK,aAAa;AAE3C,gBAAI,WAAW,QAAQ,GAAG;AACxB,qBAAO,EAAE,MAAM,SAAS;AAAA,YAC1B;AAEA,kBAAM,SAAS,WAAW;AAC1B,gBAAI,WAAW,MAAM,GAAG;AACtB,qBAAO,EAAE,MAAM,OAAO;AAAA,YACxB;AAEA,kBAAM,UAAU,WAAW;AAC3B,gBAAI,WAAW,OAAO,GAAG;AACvB,qBAAO,EAAE,MAAM,QAAQ;AAAA,YACzB;AAEA,kBAAM,cAAcA,MAAK,UAAU,UAAU;AAC7C,gBAAI,WAAW,WAAW,GAAG;AAC3B,qBAAO,EAAE,MAAM,YAAY;AAAA,YAC7B;AAEA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,SAAU,MAAM,OACpB,GAAG,cAAc,OAAO,EAAE,IAAI,MAAM,KAAK,IAAI,CAAC;AAGhD,QAAM,cAAc,MAAMD,UAAS,SAAS,OAAO;AACnD,QAAM,WAAW,MAAM,QAAQ,WAAW;AAE1C,SAAO;AAAA,IACL,OAAO,OAAO;AAAA,IACd;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAsB,eAAe,SAAgC;AACnE,QAAM,GAAG,SAAS,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AACpD;;;ACjEA,SAAS,cAAc;AACvB,SAAS,QAAAE,aAAY;AAgBrB,eAAsB,kBAAkB,QAGX;AAC3B,QAAM,EAAE,KAAK,UAAU,IAAI;AAC3B,QAAM,YAAYC,MAAK,KAAK,UAAU,WAAW,UAAU;AAC3D,QAAM,OAAO,SAAS;AAEtB,MAAI;AAEJ,MAAI;AACF,UAAM,SAAS,MAAM,gBAAgB,WAAW,GAAG;AACnD,cAAU,OAAO;AACjB,UAAM,QAAQ,SAAS,OAAO,KAAK;AACnC,UAAM,QAAQ,eAAe,QAAQ,MAAM,KAAK,CAAC;AACjD,UAAM,QAAQ,eAAe,QAAQ,MAAM,KAAK,CAAC;AACjD,UAAM,SAAS,gBAAgB,QAAQ,MAAM,MAAM,CAAC;AACpD,UAAM,UAAU,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC;AACpD,UAAM,QAAQ,eAAe,QAAQ,MAAM,KAAK,GAAG,OAAO;AAE1D,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,cAAa,oBAAI,KAAK,GAAE,YAAY;AAAA,MACpC,UAAU,OAAO;AAAA,MACjB,OAAO;AAAA,QACL,IAAI,SAAS,MAAM,EAAE;AAAA,QACrB,MAAM,SAAS,MAAM,IAAI,KAAK;AAAA,QAC9B,aAAa,SAAS,MAAM,WAAW,KAAK;AAAA,QAC5C,cAAc,sBAAsB,MAAM,YAAY;AAAA,QACtD,WAAW;AAAA,UACT,QAAQ,OAAO,MAAM,WAAW;AAAA,UAChC,WAAW,OAAO,MAAM,cAAc;AAAA,UACtC,QAAQ,OAAO,MAAM,WAAW;AAAA,QAClC;AAAA,QACA,SAAS;AAAA,UACP,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAU;AAAA,UACV,SAAS;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,UACT,WAAW,MAAM,IAAI,CAAC,SAAS,KAAK,EAAE;AAAA,UACtC,WAAW,MAAM,IAAI,CAAC,SAAS,KAAK,EAAE;AAAA,UACtC,YAAY,OAAO,IAAI,CAAC,UAAU,MAAM,EAAE;AAAA,UAC1C,WAAW,MAAM,IAAI,CAAC,SAAS,KAAK,EAAE;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAAA,EACF,UAAE;AACA,QAAI,SAAS;AACX,YAAM,eAAe,OAAO;AAAA,IAC9B;AAAA,EACF;AACF;","names":["record","readFile","join","join","join"]}
|
package/dist/chunk-TPTPZH2W.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
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 { exec } from "child_process";
|
|
7
|
-
import { promisify } from "util";
|
|
8
|
-
var execAsync = promisify(exec);
|
|
9
|
-
async function isProjectInitialized(cwd) {
|
|
10
|
-
try {
|
|
11
|
-
await access(join(cwd, "kalp.config.ts"));
|
|
12
|
-
return true;
|
|
13
|
-
} catch {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
async function ensureConfig(cwd) {
|
|
18
|
-
const initialized = await isProjectInitialized(cwd);
|
|
19
|
-
if (!initialized) {
|
|
20
|
-
throw new Error("kalp.config.ts not found");
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
async function ensureDirectory(path) {
|
|
24
|
-
await mkdir(path, { recursive: true });
|
|
25
|
-
}
|
|
26
|
-
async function installDeps(cwd) {
|
|
27
|
-
try {
|
|
28
|
-
await execAsync("npx --no-install nci", { cwd });
|
|
29
|
-
} catch {
|
|
30
|
-
await execAsync("npm install", { cwd });
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export {
|
|
35
|
-
isProjectInitialized,
|
|
36
|
-
ensureConfig,
|
|
37
|
-
ensureDirectory,
|
|
38
|
-
installDeps
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=chunk-TPTPZH2W.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/fs.ts"],"sourcesContent":["import { access, mkdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { exec } from \"node:child_process\";\nimport { promisify } from \"node:util\";\n\nconst execAsync = promisify(exec);\n\nexport async function isProjectInitialized(cwd: string): Promise<boolean> {\n try {\n await access(join(cwd, \"kalp.config.ts\"));\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function ensureConfig(cwd: string): Promise<void> {\n const initialized = await isProjectInitialized(cwd);\n if (!initialized) {\n throw new Error(\"kalp.config.ts not found\");\n }\n}\n\nexport async function ensureDirectory(path: string): Promise<void> {\n await mkdir(path, { recursive: true });\n}\n\nexport async function installDeps(cwd: string): Promise<void> {\n try {\n await execAsync(\"npx --no-install nci\", { cwd });\n } catch {\n await execAsync(\"npm install\", { cwd });\n }\n}\n"],"mappings":";;;AAAA,SAAS,QAAQ,aAAa;AAC9B,SAAS,YAAY;AACrB,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAE1B,IAAM,YAAY,UAAU,IAAI;AAEhC,eAAsB,qBAAqB,KAA+B;AACxE,MAAI;AACF,UAAM,OAAO,KAAK,KAAK,gBAAgB,CAAC;AACxC,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAsB,aAAa,KAA4B;AAC7D,QAAM,cAAc,MAAM,qBAAqB,GAAG;AAClD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AACF;AAEA,eAAsB,gBAAgB,MAA6B;AACjE,QAAM,MAAM,MAAM,EAAE,WAAW,KAAK,CAAC;AACvC;AAEA,eAAsB,YAAY,KAA4B;AAC5D,MAAI;AACF,UAAM,UAAU,wBAAwB,EAAE,IAAI,CAAC;AAAA,EACjD,QAAQ;AACN,UAAM,UAAU,eAAe,EAAE,IAAI,CAAC;AAAA,EACxC;AACF;","names":[]}
|