@kodycodes/cli 1.26.1 → 1.26.3
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/auth-4FW6GCLG.js +26 -0
- package/dist/auth-4FW6GCLG.js.map +6 -0
- package/dist/bin.js +27 -3
- package/dist/bin.js.map +6 -1
- package/dist/chunk-46IJPEID.js +30 -0
- package/dist/chunk-46IJPEID.js.map +6 -0
- package/dist/chunk-4D6ORNXY.js +24404 -0
- package/dist/chunk-4D6ORNXY.js.map +6 -0
- package/dist/chunk-64IM6G4Z.js +341 -0
- package/dist/chunk-64IM6G4Z.js.map +6 -0
- package/dist/{package-local-runtime-source.js → chunk-64XN367G.js} +373 -52
- package/dist/chunk-64XN367G.js.map +6 -0
- package/dist/chunk-6XQP5SWX.js +26 -0
- package/dist/chunk-6XQP5SWX.js.map +6 -0
- package/dist/chunk-75RZUXQL.js +62 -0
- package/dist/chunk-75RZUXQL.js.map +6 -0
- package/dist/chunk-BISUL7CE.js +106 -0
- package/dist/chunk-BISUL7CE.js.map +6 -0
- package/dist/chunk-BPGY4IE7.js +57 -0
- package/dist/chunk-BPGY4IE7.js.map +6 -0
- package/dist/chunk-CASGRYOF.js +21 -0
- package/dist/chunk-CASGRYOF.js.map +6 -0
- package/dist/chunk-CWWHR4FH.js +19 -0
- package/dist/chunk-CWWHR4FH.js.map +6 -0
- package/dist/chunk-D55XPY3T.js +1382 -0
- package/dist/chunk-D55XPY3T.js.map +6 -0
- package/dist/chunk-EOCV74B2.js +948 -0
- package/dist/chunk-EOCV74B2.js.map +6 -0
- package/dist/chunk-FBVNFWR6.js +437 -0
- package/dist/chunk-FBVNFWR6.js.map +6 -0
- package/dist/chunk-G4YN6XP5.js +14 -0
- package/dist/chunk-G4YN6XP5.js.map +6 -0
- package/dist/chunk-G6LJWROP.js +18 -0
- package/dist/chunk-G6LJWROP.js.map +6 -0
- package/dist/chunk-IHP6PV6X.js +49 -0
- package/dist/chunk-IHP6PV6X.js.map +6 -0
- package/dist/chunk-JWEFKKAD.js +24 -0
- package/dist/chunk-JWEFKKAD.js.map +6 -0
- package/dist/chunk-LWNB26KO.js +147 -0
- package/dist/chunk-LWNB26KO.js.map +6 -0
- package/dist/chunk-OVGXPRSY.js +20 -0
- package/dist/chunk-OVGXPRSY.js.map +6 -0
- package/dist/chunk-PDWCKWQF.js +453 -0
- package/dist/chunk-PDWCKWQF.js.map +6 -0
- package/dist/chunk-QHBCP4OB.js +44 -0
- package/dist/chunk-QHBCP4OB.js.map +6 -0
- package/dist/chunk-R4IUV5P5.js +664 -0
- package/dist/chunk-R4IUV5P5.js.map +6 -0
- package/dist/chunk-RM34N3KI.js +525 -0
- package/dist/chunk-RM34N3KI.js.map +6 -0
- package/dist/chunk-RTWUNV76.js +309 -0
- package/dist/chunk-RTWUNV76.js.map +6 -0
- package/dist/chunk-SMURF26I.js +23 -0
- package/dist/chunk-SMURF26I.js.map +6 -0
- package/dist/chunk-SXHULGL4.js +426 -0
- package/dist/chunk-SXHULGL4.js.map +6 -0
- package/dist/chunk-TIL35OWA.js +1959 -0
- package/dist/chunk-TIL35OWA.js.map +6 -0
- package/dist/chunk-VQS5YSCI.js +54 -0
- package/dist/chunk-VQS5YSCI.js.map +6 -0
- package/dist/chunk-XDCOWU5R.js +696 -0
- package/dist/chunk-XDCOWU5R.js.map +6 -0
- package/dist/chunk-XOPPGRUP.js +605 -0
- package/dist/chunk-XOPPGRUP.js.map +6 -0
- package/dist/cli.js +74 -1500
- package/dist/cli.js.map +6 -1
- package/dist/dev/dev-watcher.d.ts +5 -1
- package/dist/dev-command-3LX234N6.js +4900 -0
- package/dist/dev-command-3LX234N6.js.map +6 -0
- package/dist/git-credential-FUE3JE3T.js +163 -0
- package/dist/git-credential-FUE3JE3T.js.map +6 -0
- package/dist/install-ZML2TCDG.js +10694 -0
- package/dist/install-ZML2TCDG.js.map +6 -0
- package/dist/local-execute-SZV6XN4T.js +368 -0
- package/dist/local-execute-SZV6XN4T.js.map +6 -0
- package/dist/local-package-run-2TMCAZZ2.js +23 -0
- package/dist/local-package-run-2TMCAZZ2.js.map +6 -0
- package/dist/mcp-G2AWTIXR.js +21 -0
- package/dist/mcp-G2AWTIXR.js.map +6 -0
- package/dist/mock-dep-resolve-TVABDNR7.js +52 -0
- package/dist/mock-dep-resolve-TVABDNR7.js.map +6 -0
- package/dist/mock-fetch-gateway-B5TFGGQS.js +34 -0
- package/dist/mock-fetch-gateway-B5TFGGQS.js.map +6 -0
- package/dist/mock-local-deps-5SZT3PWT.js +197 -0
- package/dist/mock-local-deps-5SZT3PWT.js.map +6 -0
- package/dist/mock-server-SV2IKC4I.js +21 -0
- package/dist/mock-server-SV2IKC4I.js.map +6 -0
- package/dist/open-api-client-DVVMLY7P.js +42 -0
- package/dist/open-api-client-DVVMLY7P.js.map +6 -0
- package/dist/org-X7B5BI4R.js +132 -0
- package/dist/org-X7B5BI4R.js.map +6 -0
- package/dist/package-manifest-QH2RU64C.js +14 -0
- package/dist/package-manifest-QH2RU64C.js.map +6 -0
- package/dist/remote-execute-QMQDVHOY.js +110 -0
- package/dist/remote-execute-QMQDVHOY.js.map +6 -0
- package/dist/setup-git-5KCUBYPB.js +88 -0
- package/dist/setup-git-5KCUBYPB.js.map +6 -0
- package/dist/skill-ENPATRIW.js +43 -0
- package/dist/skill-ENPATRIW.js.map +6 -0
- package/dist/store-WTMRH527.js +48 -0
- package/dist/store-WTMRH527.js.map +6 -0
- package/dist/structured-error-C65GQ53Z.js +13 -0
- package/dist/structured-error-C65GQ53Z.js.map +6 -0
- package/dist/target-3QHY7JT4.js +45 -0
- package/dist/target-3QHY7JT4.js.map +6 -0
- package/dist/webapi-NTVP4BO3.js +2482 -0
- package/dist/webapi-NTVP4BO3.js.map +6 -0
- package/package.json +8 -8
- package/dist/add-mcp-install.js +0 -59
- package/dist/add-mcp-install.js.map +0 -1
- package/dist/api-token-store.js +0 -120
- package/dist/api-token-store.js.map +0 -1
- package/dist/api-token.js +0 -238
- package/dist/api-token.js.map +0 -1
- package/dist/auth-bootstrap.js +0 -373
- package/dist/auth-bootstrap.js.map +0 -1
- package/dist/auth.js +0 -386
- package/dist/auth.js.map +0 -1
- package/dist/capability-proxy.js +0 -527
- package/dist/capability-proxy.js.map +0 -1
- package/dist/credential-call-map.js +0 -155
- package/dist/credential-call-map.js.map +0 -1
- package/dist/credential-client-runtime-source.js +0 -9
- package/dist/credential-client-runtime-source.js.map +0 -1
- package/dist/credentialed-fetch-scan.js +0 -98
- package/dist/credentialed-fetch-scan.js.map +0 -1
- package/dist/defaults.js +0 -34
- package/dist/defaults.js.map +0 -1
- package/dist/detect-running-hosts.js +0 -13
- package/dist/detect-running-hosts.js.map +0 -1
- package/dist/dev/dev-assets.js +0 -202
- package/dist/dev/dev-assets.js.map +0 -1
- package/dist/dev/dev-bundler.js +0 -65
- package/dist/dev/dev-bundler.js.map +0 -1
- package/dist/dev/dev-events.js +0 -94
- package/dist/dev/dev-events.js.map +0 -1
- package/dist/dev/dev-port.js +0 -80
- package/dist/dev/dev-port.js.map +0 -1
- package/dist/dev/dev-protocol.js +0 -14
- package/dist/dev/dev-protocol.js.map +0 -1
- package/dist/dev/dev-registry.js +0 -95
- package/dist/dev/dev-registry.js.map +0 -1
- package/dist/dev/dev-watcher.js +0 -156
- package/dist/dev/dev-watcher.js.map +0 -1
- package/dist/dev/error-page.js +0 -64
- package/dist/dev/error-page.js.map +0 -1
- package/dist/dev/live-reload.js +0 -148
- package/dist/dev/live-reload.js.map +0 -1
- package/dist/dev/prebuild.js +0 -102
- package/dist/dev/prebuild.js.map +0 -1
- package/dist/dev/process-reaper.js +0 -151
- package/dist/dev/process-reaper.js.map +0 -1
- package/dist/dev/stack-trace.js +0 -56
- package/dist/dev/stack-trace.js.map +0 -1
- package/dist/dev/workerd-process.js +0 -118
- package/dist/dev/workerd-process.js.map +0 -1
- package/dist/dev-command.js +0 -672
- package/dist/dev-command.js.map +0 -1
- package/dist/discover-login-identity.js +0 -77
- package/dist/discover-login-identity.js.map +0 -1
- package/dist/discover-org.js +0 -62
- package/dist/discover-org.js.map +0 -1
- package/dist/git-credential.js +0 -147
- package/dist/git-credential.js.map +0 -1
- package/dist/help.js +0 -333
- package/dist/help.js.map +0 -1
- package/dist/host-catalog.js +0 -427
- package/dist/host-catalog.js.map +0 -1
- package/dist/host-config.js +0 -80
- package/dist/host-config.js.map +0 -1
- package/dist/http-error-body.js +0 -35
- package/dist/http-error-body.js.map +0 -1
- package/dist/install-hosts.js +0 -328
- package/dist/install-hosts.js.map +0 -1
- package/dist/install.js +0 -120
- package/dist/install.js.map +0 -1
- package/dist/invoke-passthrough.js +0 -60
- package/dist/invoke-passthrough.js.map +0 -1
- package/dist/local-bundle.js +0 -200
- package/dist/local-bundle.js.map +0 -1
- package/dist/local-execute-auth.js +0 -53
- package/dist/local-execute-auth.js.map +0 -1
- package/dist/local-execute.js +0 -338
- package/dist/local-execute.js.map +0 -1
- package/dist/local-gateway-fetch-forward.js +0 -135
- package/dist/local-gateway-fetch-forward.js.map +0 -1
- package/dist/local-host-runtime-surface.js +0 -75
- package/dist/local-host-runtime-surface.js.map +0 -1
- package/dist/local-package-graph.js +0 -405
- package/dist/local-package-graph.js.map +0 -1
- package/dist/local-package-run.js +0 -307
- package/dist/local-package-run.js.map +0 -1
- package/dist/local-runtime-bridge.js +0 -132
- package/dist/local-runtime-bridge.js.map +0 -1
- package/dist/local-runtime-source.js +0 -541
- package/dist/local-runtime-source.js.map +0 -1
- package/dist/login-callback-assets.js +0 -10
- package/dist/login-callback-assets.js.map +0 -1
- package/dist/login-callback-page.js +0 -362
- package/dist/login-callback-page.js.map +0 -1
- package/dist/mcp.js +0 -134
- package/dist/mcp.js.map +0 -1
- package/dist/mock/ensure-msw.js +0 -215
- package/dist/mock/ensure-msw.js.map +0 -1
- package/dist/mock/install-mock-fetch-shim.js +0 -36
- package/dist/mock/install-mock-fetch-shim.js.map +0 -1
- package/dist/mock/load-package-mocks.js +0 -136
- package/dist/mock/load-package-mocks.js.map +0 -1
- package/dist/mock/mock-fetch-gateway.js +0 -343
- package/dist/mock/mock-fetch-gateway.js.map +0 -1
- package/dist/mock/mock-gateway-fetch-shim.js +0 -104
- package/dist/mock/mock-gateway-fetch-shim.js.map +0 -1
- package/dist/mock/mock-server.js +0 -499
- package/dist/mock/mock-server.js.map +0 -1
- package/dist/mock/mock-storage.js +0 -186
- package/dist/mock/mock-storage.js.map +0 -1
- package/dist/mock/mock-supported.js +0 -63
- package/dist/mock/mock-supported.js.map +0 -1
- package/dist/mock-dep-resolve.js +0 -47
- package/dist/mock-dep-resolve.js.map +0 -1
- package/dist/mock-local-deps.js +0 -207
- package/dist/mock-local-deps.js.map +0 -1
- package/dist/network-error.js +0 -11
- package/dist/network-error.js.map +0 -1
- package/dist/node-engine.js +0 -21
- package/dist/node-engine.js.map +0 -1
- package/dist/oauth-provider.js +0 -107
- package/dist/oauth-provider.js.map +0 -1
- package/dist/onboarding-prompt.js +0 -15
- package/dist/onboarding-prompt.js.map +0 -1
- package/dist/open-api-client.js +0 -432
- package/dist/open-api-client.js.map +0 -1
- package/dist/open-url.js +0 -21
- package/dist/open-url.js.map +0 -1
- package/dist/org-resolve.js +0 -16
- package/dist/org-resolve.js.map +0 -1
- package/dist/org-slug.js +0 -11
- package/dist/org-slug.js.map +0 -1
- package/dist/org.js +0 -100
- package/dist/org.js.map +0 -1
- package/dist/package-app-dev.js +0 -905
- package/dist/package-app-dev.js.map +0 -1
- package/dist/package-collaborators.js +0 -179
- package/dist/package-collaborators.js.map +0 -1
- package/dist/package-info.js +0 -19
- package/dist/package-info.js.map +0 -1
- package/dist/package-local-runtime-source.js.map +0 -1
- package/dist/package-manifest.js +0 -364
- package/dist/package-manifest.js.map +0 -1
- package/dist/process-info.js +0 -14
- package/dist/process-info.js.map +0 -1
- package/dist/redact.js +0 -16
- package/dist/redact.js.map +0 -1
- package/dist/remote-execute.js +0 -108
- package/dist/remote-execute.js.map +0 -1
- package/dist/setup-git.js +0 -676
- package/dist/setup-git.js.map +0 -1
- package/dist/skill.js +0 -35
- package/dist/skill.js.map +0 -1
- package/dist/store.js +0 -597
- package/dist/store.js.map +0 -1
- package/dist/structured-error.js +0 -57
- package/dist/structured-error.js.map +0 -1
- package/dist/target.js +0 -52
- package/dist/target.js.map +0 -1
- package/dist/tool-result.js +0 -19
- package/dist/tool-result.js.map +0 -1
- package/dist/which.js +0 -22
- package/dist/which.js.map +0 -1
- package/dist/workerd-binary.js +0 -98
- package/dist/workerd-binary.js.map +0 -1
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
StructuredCliError
|
|
4
|
+
} from "./chunk-BPGY4IE7.js";
|
|
5
|
+
|
|
6
|
+
// src/package-manifest.ts
|
|
7
|
+
import { readFile } from "node:fs/promises";
|
|
8
|
+
import { dirname, join, resolve } from "node:path";
|
|
9
|
+
async function loadPackageManifest(cwd = process.cwd()) {
|
|
10
|
+
const packageJsonPath = await findPackageJson(cwd);
|
|
11
|
+
const root = dirname(packageJsonPath);
|
|
12
|
+
let raw;
|
|
13
|
+
try {
|
|
14
|
+
raw = JSON.parse(await readFile(packageJsonPath, "utf8"));
|
|
15
|
+
} catch (error) {
|
|
16
|
+
throw new StructuredCliError({
|
|
17
|
+
code: "package_manifest_invalid",
|
|
18
|
+
message: `Could not read package.json at ${packageJsonPath}.`,
|
|
19
|
+
where: packageJsonPath,
|
|
20
|
+
fix: "Run `kody dev` from a package directory with a valid package.json.",
|
|
21
|
+
details: { cause: error instanceof Error ? error.message : String(error) }
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
|
|
25
|
+
throw new StructuredCliError({
|
|
26
|
+
code: "package_manifest_invalid",
|
|
27
|
+
message: "package.json must be a JSON object.",
|
|
28
|
+
where: packageJsonPath
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
const pkg = raw;
|
|
32
|
+
const name = typeof pkg.name === "string" ? pkg.name : "";
|
|
33
|
+
const kody = asRecord(pkg.kody) ?? {};
|
|
34
|
+
const kodyId = typeof kody.id === "string" && kody.id.trim() ? kody.id.trim() : name.includes("/") ? name.slice(name.lastIndexOf("/") + 1) : name || "local-package";
|
|
35
|
+
const exportsField = normalizeExports(pkg.exports);
|
|
36
|
+
const app = parseApp(kody.app, packageJsonPath);
|
|
37
|
+
const dev = parseDev(kody.dev, packageJsonPath);
|
|
38
|
+
const jobs = parseJobs(kody.jobs, packageJsonPath);
|
|
39
|
+
const webhooks = parseWebhooks(kody.webhooks, packageJsonPath);
|
|
40
|
+
const subscriptions = parseSubscriptions(kody.subscriptions, packageJsonPath);
|
|
41
|
+
return {
|
|
42
|
+
packageJsonPath,
|
|
43
|
+
root,
|
|
44
|
+
name: name || `@local/${kodyId}`,
|
|
45
|
+
kodyId,
|
|
46
|
+
description: typeof kody.description === "string" ? kody.description : void 0,
|
|
47
|
+
exports: exportsField,
|
|
48
|
+
app,
|
|
49
|
+
dev,
|
|
50
|
+
jobs,
|
|
51
|
+
webhooks,
|
|
52
|
+
subscriptions
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
async function findPackageJson(start) {
|
|
56
|
+
let dir = resolve(start);
|
|
57
|
+
for (; ; ) {
|
|
58
|
+
const candidate = join(dir, "package.json");
|
|
59
|
+
try {
|
|
60
|
+
await readFile(candidate);
|
|
61
|
+
return candidate;
|
|
62
|
+
} catch {
|
|
63
|
+
const parent = dirname(dir);
|
|
64
|
+
if (parent === dir) {
|
|
65
|
+
throw new StructuredCliError({
|
|
66
|
+
code: "package_manifest_invalid",
|
|
67
|
+
message: `No package.json found from ${start}.`,
|
|
68
|
+
fix: "cd into a Kody package directory (one with package.json and a kody block)."
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
dir = parent;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function normalizeExports(exportsField) {
|
|
76
|
+
const out = {};
|
|
77
|
+
if (typeof exportsField === "string") {
|
|
78
|
+
out["."] = exportsField;
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
if (!exportsField || typeof exportsField !== "object" || Array.isArray(exportsField)) {
|
|
82
|
+
return out;
|
|
83
|
+
}
|
|
84
|
+
for (const [key, value] of Object.entries(exportsField)) {
|
|
85
|
+
if (typeof value === "string") {
|
|
86
|
+
out[key] = value;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
90
|
+
const cond = value;
|
|
91
|
+
const pick = typeof cond.default === "string" && cond.default || typeof cond.import === "string" && cond.import || typeof cond.require === "string" && cond.require;
|
|
92
|
+
if (pick) out[key] = pick;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return out;
|
|
96
|
+
}
|
|
97
|
+
function parseApp(raw, where) {
|
|
98
|
+
if (raw === void 0 || raw === null) return void 0;
|
|
99
|
+
const record = asRecord(raw);
|
|
100
|
+
if (!record || typeof record.entry !== "string" || !record.entry.trim()) {
|
|
101
|
+
throw new StructuredCliError({
|
|
102
|
+
code: "package_manifest_invalid",
|
|
103
|
+
message: "kody.app.entry must be a non-empty string path.",
|
|
104
|
+
where,
|
|
105
|
+
fix: 'Set `"kody": { "app": { "entry": "./app/router.ts" } }` in package.json.'
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
let client;
|
|
109
|
+
let clientExternals;
|
|
110
|
+
if (record.client !== void 0 && record.client !== null) {
|
|
111
|
+
if (typeof record.client === "string") {
|
|
112
|
+
if (!record.client.trim()) {
|
|
113
|
+
throw new StructuredCliError({
|
|
114
|
+
code: "package_manifest_invalid",
|
|
115
|
+
message: "kody.app.client must be a non-empty string path or { entry, externals? }.",
|
|
116
|
+
where,
|
|
117
|
+
fix: 'Set `"client": "./app/client.ts"` or `"client": { "entry": "./app/client.ts" }`.'
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
client = record.client;
|
|
121
|
+
} else {
|
|
122
|
+
const clientRecord = asRecord(record.client);
|
|
123
|
+
if (!clientRecord || typeof clientRecord.entry !== "string" || !clientRecord.entry.trim()) {
|
|
124
|
+
throw new StructuredCliError({
|
|
125
|
+
code: "package_manifest_invalid",
|
|
126
|
+
message: "kody.app.client.entry must be a non-empty string path.",
|
|
127
|
+
where,
|
|
128
|
+
fix: 'Set `"client": { "entry": "./app/client.ts", "externals": ["preact"] }`.'
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
client = clientRecord.entry;
|
|
132
|
+
clientExternals = Array.isArray(clientRecord.externals) ? clientRecord.externals.filter((item) => typeof item === "string") : void 0;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
entry: record.entry,
|
|
137
|
+
client,
|
|
138
|
+
...clientExternals?.length ? { clientExternals } : {},
|
|
139
|
+
assets: typeof record.assets === "string" ? record.assets : void 0
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function parseDev(raw, where) {
|
|
143
|
+
if (raw === void 0 || raw === null) return { ignore: [] };
|
|
144
|
+
const record = asRecord(raw);
|
|
145
|
+
if (!record) {
|
|
146
|
+
throw new StructuredCliError({
|
|
147
|
+
code: "package_manifest_invalid",
|
|
148
|
+
message: "kody.dev must be an object.",
|
|
149
|
+
where,
|
|
150
|
+
fix: 'Use `"kody": { "dev": { "prebuild": "node scripts/build-assets.mjs", "ignore": ["public/generated"] } }`.'
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
if (record.prebuild !== void 0 && (typeof record.prebuild !== "string" || !record.prebuild.trim())) {
|
|
154
|
+
throw new StructuredCliError({
|
|
155
|
+
code: "package_manifest_invalid",
|
|
156
|
+
message: "kody.dev.prebuild must be a non-empty shell command string.",
|
|
157
|
+
where
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
if (record.ignore !== void 0 && (!Array.isArray(record.ignore) || !record.ignore.every((item) => typeof item === "string"))) {
|
|
161
|
+
throw new StructuredCliError({
|
|
162
|
+
code: "package_manifest_invalid",
|
|
163
|
+
message: "kody.dev.ignore must be an array of root-relative path prefixes.",
|
|
164
|
+
where
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
...typeof record.prebuild === "string" ? { prebuild: record.prebuild.trim() } : {},
|
|
169
|
+
ignore: record.ignore ?? []
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
function parseJobs(raw, where) {
|
|
173
|
+
if (raw === void 0 || raw === null) return {};
|
|
174
|
+
const record = asRecord(raw);
|
|
175
|
+
if (!record) {
|
|
176
|
+
throw new StructuredCliError({
|
|
177
|
+
code: "package_manifest_invalid",
|
|
178
|
+
message: "kody.jobs must be an object.",
|
|
179
|
+
where
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
const out = {};
|
|
183
|
+
for (const [name, value] of Object.entries(record)) {
|
|
184
|
+
const job = asRecord(value);
|
|
185
|
+
if (!job || typeof job.entry !== "string" || !job.entry.trim()) {
|
|
186
|
+
throw new StructuredCliError({
|
|
187
|
+
code: "package_manifest_invalid",
|
|
188
|
+
message: `kody.jobs.${name} requires a non-empty entry string.`,
|
|
189
|
+
where,
|
|
190
|
+
fix: 'Set `"entry": "./jobs/hourly.ts"` (and a schedule string or `{ "type": "cron", "expression": "\u2026" }`).'
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
const schedule = parseJobSchedule(job.schedule, name, where);
|
|
194
|
+
out[name] = {
|
|
195
|
+
entry: job.entry,
|
|
196
|
+
schedule: schedule.normalized,
|
|
197
|
+
scheduleRaw: schedule.raw,
|
|
198
|
+
timezone: typeof job.timezone === "string" ? job.timezone : void 0,
|
|
199
|
+
enabled: typeof job.enabled === "boolean" ? job.enabled : void 0
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return out;
|
|
203
|
+
}
|
|
204
|
+
function parseJobSchedule(raw, jobName, where) {
|
|
205
|
+
if (typeof raw === "string" && raw.trim()) {
|
|
206
|
+
return { normalized: raw.trim(), raw: raw.trim() };
|
|
207
|
+
}
|
|
208
|
+
const record = asRecord(raw);
|
|
209
|
+
if (record && typeof record.type === "string" && record.type.trim() && typeof record.expression === "string" && record.expression.trim()) {
|
|
210
|
+
const expression = record.expression.trim();
|
|
211
|
+
return {
|
|
212
|
+
normalized: expression,
|
|
213
|
+
raw: {
|
|
214
|
+
...record,
|
|
215
|
+
type: record.type.trim(),
|
|
216
|
+
expression
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
throw new StructuredCliError({
|
|
221
|
+
code: "package_manifest_invalid",
|
|
222
|
+
message: `kody.jobs.${jobName} requires a schedule string or { type, expression } object.`,
|
|
223
|
+
where,
|
|
224
|
+
fix: 'Use `"schedule": "0 * * * *"` or `"schedule": { "type": "cron", "expression": "0 * * * *" }` (prod accepts both).'
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
function parseWebhooks(raw, where) {
|
|
228
|
+
if (raw === void 0 || raw === null) return {};
|
|
229
|
+
if (Array.isArray(raw)) {
|
|
230
|
+
const out2 = {};
|
|
231
|
+
for (const item of raw) {
|
|
232
|
+
const webhook = asRecord(item);
|
|
233
|
+
if (!webhook || typeof webhook.name !== "string" || typeof webhook.export !== "string") {
|
|
234
|
+
throw new StructuredCliError({
|
|
235
|
+
code: "package_manifest_invalid",
|
|
236
|
+
message: "Each kody.webhooks[] entry needs name and export.",
|
|
237
|
+
where
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
out2[webhook.name] = {
|
|
241
|
+
export: webhook.export,
|
|
242
|
+
description: typeof webhook.description === "string" ? webhook.description : void 0,
|
|
243
|
+
inputMode: webhook.inputMode === "params" ? "params" : "request"
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
return out2;
|
|
247
|
+
}
|
|
248
|
+
const record = asRecord(raw);
|
|
249
|
+
if (!record) {
|
|
250
|
+
throw new StructuredCliError({
|
|
251
|
+
code: "package_manifest_invalid",
|
|
252
|
+
message: "kody.webhooks must be an object or array.",
|
|
253
|
+
where
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
const out = {};
|
|
257
|
+
for (const [name, value] of Object.entries(record)) {
|
|
258
|
+
const webhook = asRecord(value);
|
|
259
|
+
if (!webhook || typeof webhook.export !== "string") {
|
|
260
|
+
throw new StructuredCliError({
|
|
261
|
+
code: "package_manifest_invalid",
|
|
262
|
+
message: `kody.webhooks.${name} requires an export string.`,
|
|
263
|
+
where
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
out[name] = {
|
|
267
|
+
export: webhook.export,
|
|
268
|
+
description: typeof webhook.description === "string" ? webhook.description : void 0,
|
|
269
|
+
inputMode: webhook.inputMode === "params" ? "params" : "request"
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
return out;
|
|
273
|
+
}
|
|
274
|
+
function parseSubscriptions(raw, where) {
|
|
275
|
+
if (raw === void 0 || raw === null) return {};
|
|
276
|
+
const record = asRecord(raw);
|
|
277
|
+
if (!record) {
|
|
278
|
+
throw new StructuredCliError({
|
|
279
|
+
code: "package_manifest_invalid",
|
|
280
|
+
message: "kody.subscriptions must be an object keyed by event topic.",
|
|
281
|
+
where
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
const out = {};
|
|
285
|
+
for (const [topic, value] of Object.entries(record)) {
|
|
286
|
+
const sub = asRecord(value);
|
|
287
|
+
if (!sub || typeof sub.handler !== "string") {
|
|
288
|
+
throw new StructuredCliError({
|
|
289
|
+
code: "package_manifest_invalid",
|
|
290
|
+
message: `kody.subscriptions[${JSON.stringify(topic)}] requires a handler path.`,
|
|
291
|
+
where
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
out[topic] = {
|
|
295
|
+
handler: sub.handler,
|
|
296
|
+
description: typeof sub.description === "string" ? sub.description : void 0,
|
|
297
|
+
filters: sub.filters
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
return out;
|
|
301
|
+
}
|
|
302
|
+
function asRecord(value) {
|
|
303
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return null;
|
|
304
|
+
return value;
|
|
305
|
+
}
|
|
306
|
+
function resolvePackagePath(manifest, relativePath) {
|
|
307
|
+
return resolve(manifest.root, relativePath);
|
|
308
|
+
}
|
|
309
|
+
function resolveExportModulePath(manifest, exportRef, options = {}) {
|
|
310
|
+
const trimmed = exportRef.trim();
|
|
311
|
+
if (!trimmed) {
|
|
312
|
+
throw new StructuredCliError({
|
|
313
|
+
code: "dev_surface_missing",
|
|
314
|
+
message: "Export reference is empty.",
|
|
315
|
+
fix: "Pass an export key from package.json#exports (e.g. `.` or `./on-user-deleted`)."
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
if (trimmed in manifest.exports) {
|
|
319
|
+
return resolvePackagePath(manifest, manifest.exports[trimmed]);
|
|
320
|
+
}
|
|
321
|
+
const withDot = trimmed.startsWith("./") ? trimmed : `./${trimmed}`;
|
|
322
|
+
if (withDot in manifest.exports) {
|
|
323
|
+
return resolvePackagePath(manifest, manifest.exports[withDot]);
|
|
324
|
+
}
|
|
325
|
+
if (!options.exportsOnly && (trimmed.startsWith(".") || trimmed.startsWith("/"))) {
|
|
326
|
+
return resolvePackagePath(manifest, trimmed);
|
|
327
|
+
}
|
|
328
|
+
throw new StructuredCliError({
|
|
329
|
+
code: "dev_surface_missing",
|
|
330
|
+
message: `No package export ${JSON.stringify(trimmed)}.`,
|
|
331
|
+
where: manifest.packageJsonPath,
|
|
332
|
+
fix: `Known exports: ${Object.keys(manifest.exports).join(", ") || "(none)"}.`
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export {
|
|
337
|
+
loadPackageManifest,
|
|
338
|
+
resolvePackagePath,
|
|
339
|
+
resolveExportModulePath
|
|
340
|
+
};
|
|
341
|
+
//# sourceMappingURL=chunk-64IM6G4Z.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/package-manifest.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["out"]
|
|
6
|
+
}
|