@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.
Files changed (271) hide show
  1. package/dist/auth-4FW6GCLG.js +26 -0
  2. package/dist/auth-4FW6GCLG.js.map +6 -0
  3. package/dist/bin.js +27 -3
  4. package/dist/bin.js.map +6 -1
  5. package/dist/chunk-46IJPEID.js +30 -0
  6. package/dist/chunk-46IJPEID.js.map +6 -0
  7. package/dist/chunk-4D6ORNXY.js +24404 -0
  8. package/dist/chunk-4D6ORNXY.js.map +6 -0
  9. package/dist/chunk-64IM6G4Z.js +341 -0
  10. package/dist/chunk-64IM6G4Z.js.map +6 -0
  11. package/dist/{package-local-runtime-source.js → chunk-64XN367G.js} +373 -52
  12. package/dist/chunk-64XN367G.js.map +6 -0
  13. package/dist/chunk-6XQP5SWX.js +26 -0
  14. package/dist/chunk-6XQP5SWX.js.map +6 -0
  15. package/dist/chunk-75RZUXQL.js +62 -0
  16. package/dist/chunk-75RZUXQL.js.map +6 -0
  17. package/dist/chunk-BISUL7CE.js +106 -0
  18. package/dist/chunk-BISUL7CE.js.map +6 -0
  19. package/dist/chunk-BPGY4IE7.js +57 -0
  20. package/dist/chunk-BPGY4IE7.js.map +6 -0
  21. package/dist/chunk-CASGRYOF.js +21 -0
  22. package/dist/chunk-CASGRYOF.js.map +6 -0
  23. package/dist/chunk-CWWHR4FH.js +19 -0
  24. package/dist/chunk-CWWHR4FH.js.map +6 -0
  25. package/dist/chunk-D55XPY3T.js +1382 -0
  26. package/dist/chunk-D55XPY3T.js.map +6 -0
  27. package/dist/chunk-EOCV74B2.js +948 -0
  28. package/dist/chunk-EOCV74B2.js.map +6 -0
  29. package/dist/chunk-FBVNFWR6.js +437 -0
  30. package/dist/chunk-FBVNFWR6.js.map +6 -0
  31. package/dist/chunk-G4YN6XP5.js +14 -0
  32. package/dist/chunk-G4YN6XP5.js.map +6 -0
  33. package/dist/chunk-G6LJWROP.js +18 -0
  34. package/dist/chunk-G6LJWROP.js.map +6 -0
  35. package/dist/chunk-IHP6PV6X.js +49 -0
  36. package/dist/chunk-IHP6PV6X.js.map +6 -0
  37. package/dist/chunk-JWEFKKAD.js +24 -0
  38. package/dist/chunk-JWEFKKAD.js.map +6 -0
  39. package/dist/chunk-LWNB26KO.js +147 -0
  40. package/dist/chunk-LWNB26KO.js.map +6 -0
  41. package/dist/chunk-OVGXPRSY.js +20 -0
  42. package/dist/chunk-OVGXPRSY.js.map +6 -0
  43. package/dist/chunk-PDWCKWQF.js +453 -0
  44. package/dist/chunk-PDWCKWQF.js.map +6 -0
  45. package/dist/chunk-QHBCP4OB.js +44 -0
  46. package/dist/chunk-QHBCP4OB.js.map +6 -0
  47. package/dist/chunk-R4IUV5P5.js +664 -0
  48. package/dist/chunk-R4IUV5P5.js.map +6 -0
  49. package/dist/chunk-RM34N3KI.js +525 -0
  50. package/dist/chunk-RM34N3KI.js.map +6 -0
  51. package/dist/chunk-RTWUNV76.js +309 -0
  52. package/dist/chunk-RTWUNV76.js.map +6 -0
  53. package/dist/chunk-SMURF26I.js +23 -0
  54. package/dist/chunk-SMURF26I.js.map +6 -0
  55. package/dist/chunk-SXHULGL4.js +426 -0
  56. package/dist/chunk-SXHULGL4.js.map +6 -0
  57. package/dist/chunk-TIL35OWA.js +1959 -0
  58. package/dist/chunk-TIL35OWA.js.map +6 -0
  59. package/dist/chunk-VQS5YSCI.js +54 -0
  60. package/dist/chunk-VQS5YSCI.js.map +6 -0
  61. package/dist/chunk-XDCOWU5R.js +696 -0
  62. package/dist/chunk-XDCOWU5R.js.map +6 -0
  63. package/dist/chunk-XOPPGRUP.js +605 -0
  64. package/dist/chunk-XOPPGRUP.js.map +6 -0
  65. package/dist/cli.js +74 -1500
  66. package/dist/cli.js.map +6 -1
  67. package/dist/dev/dev-watcher.d.ts +5 -1
  68. package/dist/dev-command-3LX234N6.js +4900 -0
  69. package/dist/dev-command-3LX234N6.js.map +6 -0
  70. package/dist/git-credential-FUE3JE3T.js +163 -0
  71. package/dist/git-credential-FUE3JE3T.js.map +6 -0
  72. package/dist/install-ZML2TCDG.js +10694 -0
  73. package/dist/install-ZML2TCDG.js.map +6 -0
  74. package/dist/local-execute-SZV6XN4T.js +368 -0
  75. package/dist/local-execute-SZV6XN4T.js.map +6 -0
  76. package/dist/local-package-run-2TMCAZZ2.js +23 -0
  77. package/dist/local-package-run-2TMCAZZ2.js.map +6 -0
  78. package/dist/mcp-G2AWTIXR.js +21 -0
  79. package/dist/mcp-G2AWTIXR.js.map +6 -0
  80. package/dist/mock-dep-resolve-TVABDNR7.js +52 -0
  81. package/dist/mock-dep-resolve-TVABDNR7.js.map +6 -0
  82. package/dist/mock-fetch-gateway-B5TFGGQS.js +34 -0
  83. package/dist/mock-fetch-gateway-B5TFGGQS.js.map +6 -0
  84. package/dist/mock-local-deps-5SZT3PWT.js +197 -0
  85. package/dist/mock-local-deps-5SZT3PWT.js.map +6 -0
  86. package/dist/mock-server-SV2IKC4I.js +21 -0
  87. package/dist/mock-server-SV2IKC4I.js.map +6 -0
  88. package/dist/open-api-client-DVVMLY7P.js +42 -0
  89. package/dist/open-api-client-DVVMLY7P.js.map +6 -0
  90. package/dist/org-X7B5BI4R.js +132 -0
  91. package/dist/org-X7B5BI4R.js.map +6 -0
  92. package/dist/package-manifest-QH2RU64C.js +14 -0
  93. package/dist/package-manifest-QH2RU64C.js.map +6 -0
  94. package/dist/remote-execute-QMQDVHOY.js +110 -0
  95. package/dist/remote-execute-QMQDVHOY.js.map +6 -0
  96. package/dist/setup-git-5KCUBYPB.js +88 -0
  97. package/dist/setup-git-5KCUBYPB.js.map +6 -0
  98. package/dist/skill-ENPATRIW.js +43 -0
  99. package/dist/skill-ENPATRIW.js.map +6 -0
  100. package/dist/store-WTMRH527.js +48 -0
  101. package/dist/store-WTMRH527.js.map +6 -0
  102. package/dist/structured-error-C65GQ53Z.js +13 -0
  103. package/dist/structured-error-C65GQ53Z.js.map +6 -0
  104. package/dist/target-3QHY7JT4.js +45 -0
  105. package/dist/target-3QHY7JT4.js.map +6 -0
  106. package/dist/webapi-NTVP4BO3.js +2482 -0
  107. package/dist/webapi-NTVP4BO3.js.map +6 -0
  108. package/package.json +8 -8
  109. package/dist/add-mcp-install.js +0 -59
  110. package/dist/add-mcp-install.js.map +0 -1
  111. package/dist/api-token-store.js +0 -120
  112. package/dist/api-token-store.js.map +0 -1
  113. package/dist/api-token.js +0 -238
  114. package/dist/api-token.js.map +0 -1
  115. package/dist/auth-bootstrap.js +0 -373
  116. package/dist/auth-bootstrap.js.map +0 -1
  117. package/dist/auth.js +0 -386
  118. package/dist/auth.js.map +0 -1
  119. package/dist/capability-proxy.js +0 -527
  120. package/dist/capability-proxy.js.map +0 -1
  121. package/dist/credential-call-map.js +0 -155
  122. package/dist/credential-call-map.js.map +0 -1
  123. package/dist/credential-client-runtime-source.js +0 -9
  124. package/dist/credential-client-runtime-source.js.map +0 -1
  125. package/dist/credentialed-fetch-scan.js +0 -98
  126. package/dist/credentialed-fetch-scan.js.map +0 -1
  127. package/dist/defaults.js +0 -34
  128. package/dist/defaults.js.map +0 -1
  129. package/dist/detect-running-hosts.js +0 -13
  130. package/dist/detect-running-hosts.js.map +0 -1
  131. package/dist/dev/dev-assets.js +0 -202
  132. package/dist/dev/dev-assets.js.map +0 -1
  133. package/dist/dev/dev-bundler.js +0 -65
  134. package/dist/dev/dev-bundler.js.map +0 -1
  135. package/dist/dev/dev-events.js +0 -94
  136. package/dist/dev/dev-events.js.map +0 -1
  137. package/dist/dev/dev-port.js +0 -80
  138. package/dist/dev/dev-port.js.map +0 -1
  139. package/dist/dev/dev-protocol.js +0 -14
  140. package/dist/dev/dev-protocol.js.map +0 -1
  141. package/dist/dev/dev-registry.js +0 -95
  142. package/dist/dev/dev-registry.js.map +0 -1
  143. package/dist/dev/dev-watcher.js +0 -156
  144. package/dist/dev/dev-watcher.js.map +0 -1
  145. package/dist/dev/error-page.js +0 -64
  146. package/dist/dev/error-page.js.map +0 -1
  147. package/dist/dev/live-reload.js +0 -148
  148. package/dist/dev/live-reload.js.map +0 -1
  149. package/dist/dev/prebuild.js +0 -102
  150. package/dist/dev/prebuild.js.map +0 -1
  151. package/dist/dev/process-reaper.js +0 -151
  152. package/dist/dev/process-reaper.js.map +0 -1
  153. package/dist/dev/stack-trace.js +0 -56
  154. package/dist/dev/stack-trace.js.map +0 -1
  155. package/dist/dev/workerd-process.js +0 -118
  156. package/dist/dev/workerd-process.js.map +0 -1
  157. package/dist/dev-command.js +0 -672
  158. package/dist/dev-command.js.map +0 -1
  159. package/dist/discover-login-identity.js +0 -77
  160. package/dist/discover-login-identity.js.map +0 -1
  161. package/dist/discover-org.js +0 -62
  162. package/dist/discover-org.js.map +0 -1
  163. package/dist/git-credential.js +0 -147
  164. package/dist/git-credential.js.map +0 -1
  165. package/dist/help.js +0 -333
  166. package/dist/help.js.map +0 -1
  167. package/dist/host-catalog.js +0 -427
  168. package/dist/host-catalog.js.map +0 -1
  169. package/dist/host-config.js +0 -80
  170. package/dist/host-config.js.map +0 -1
  171. package/dist/http-error-body.js +0 -35
  172. package/dist/http-error-body.js.map +0 -1
  173. package/dist/install-hosts.js +0 -328
  174. package/dist/install-hosts.js.map +0 -1
  175. package/dist/install.js +0 -120
  176. package/dist/install.js.map +0 -1
  177. package/dist/invoke-passthrough.js +0 -60
  178. package/dist/invoke-passthrough.js.map +0 -1
  179. package/dist/local-bundle.js +0 -200
  180. package/dist/local-bundle.js.map +0 -1
  181. package/dist/local-execute-auth.js +0 -53
  182. package/dist/local-execute-auth.js.map +0 -1
  183. package/dist/local-execute.js +0 -338
  184. package/dist/local-execute.js.map +0 -1
  185. package/dist/local-gateway-fetch-forward.js +0 -135
  186. package/dist/local-gateway-fetch-forward.js.map +0 -1
  187. package/dist/local-host-runtime-surface.js +0 -75
  188. package/dist/local-host-runtime-surface.js.map +0 -1
  189. package/dist/local-package-graph.js +0 -405
  190. package/dist/local-package-graph.js.map +0 -1
  191. package/dist/local-package-run.js +0 -307
  192. package/dist/local-package-run.js.map +0 -1
  193. package/dist/local-runtime-bridge.js +0 -132
  194. package/dist/local-runtime-bridge.js.map +0 -1
  195. package/dist/local-runtime-source.js +0 -541
  196. package/dist/local-runtime-source.js.map +0 -1
  197. package/dist/login-callback-assets.js +0 -10
  198. package/dist/login-callback-assets.js.map +0 -1
  199. package/dist/login-callback-page.js +0 -362
  200. package/dist/login-callback-page.js.map +0 -1
  201. package/dist/mcp.js +0 -134
  202. package/dist/mcp.js.map +0 -1
  203. package/dist/mock/ensure-msw.js +0 -215
  204. package/dist/mock/ensure-msw.js.map +0 -1
  205. package/dist/mock/install-mock-fetch-shim.js +0 -36
  206. package/dist/mock/install-mock-fetch-shim.js.map +0 -1
  207. package/dist/mock/load-package-mocks.js +0 -136
  208. package/dist/mock/load-package-mocks.js.map +0 -1
  209. package/dist/mock/mock-fetch-gateway.js +0 -343
  210. package/dist/mock/mock-fetch-gateway.js.map +0 -1
  211. package/dist/mock/mock-gateway-fetch-shim.js +0 -104
  212. package/dist/mock/mock-gateway-fetch-shim.js.map +0 -1
  213. package/dist/mock/mock-server.js +0 -499
  214. package/dist/mock/mock-server.js.map +0 -1
  215. package/dist/mock/mock-storage.js +0 -186
  216. package/dist/mock/mock-storage.js.map +0 -1
  217. package/dist/mock/mock-supported.js +0 -63
  218. package/dist/mock/mock-supported.js.map +0 -1
  219. package/dist/mock-dep-resolve.js +0 -47
  220. package/dist/mock-dep-resolve.js.map +0 -1
  221. package/dist/mock-local-deps.js +0 -207
  222. package/dist/mock-local-deps.js.map +0 -1
  223. package/dist/network-error.js +0 -11
  224. package/dist/network-error.js.map +0 -1
  225. package/dist/node-engine.js +0 -21
  226. package/dist/node-engine.js.map +0 -1
  227. package/dist/oauth-provider.js +0 -107
  228. package/dist/oauth-provider.js.map +0 -1
  229. package/dist/onboarding-prompt.js +0 -15
  230. package/dist/onboarding-prompt.js.map +0 -1
  231. package/dist/open-api-client.js +0 -432
  232. package/dist/open-api-client.js.map +0 -1
  233. package/dist/open-url.js +0 -21
  234. package/dist/open-url.js.map +0 -1
  235. package/dist/org-resolve.js +0 -16
  236. package/dist/org-resolve.js.map +0 -1
  237. package/dist/org-slug.js +0 -11
  238. package/dist/org-slug.js.map +0 -1
  239. package/dist/org.js +0 -100
  240. package/dist/org.js.map +0 -1
  241. package/dist/package-app-dev.js +0 -905
  242. package/dist/package-app-dev.js.map +0 -1
  243. package/dist/package-collaborators.js +0 -179
  244. package/dist/package-collaborators.js.map +0 -1
  245. package/dist/package-info.js +0 -19
  246. package/dist/package-info.js.map +0 -1
  247. package/dist/package-local-runtime-source.js.map +0 -1
  248. package/dist/package-manifest.js +0 -364
  249. package/dist/package-manifest.js.map +0 -1
  250. package/dist/process-info.js +0 -14
  251. package/dist/process-info.js.map +0 -1
  252. package/dist/redact.js +0 -16
  253. package/dist/redact.js.map +0 -1
  254. package/dist/remote-execute.js +0 -108
  255. package/dist/remote-execute.js.map +0 -1
  256. package/dist/setup-git.js +0 -676
  257. package/dist/setup-git.js.map +0 -1
  258. package/dist/skill.js +0 -35
  259. package/dist/skill.js.map +0 -1
  260. package/dist/store.js +0 -597
  261. package/dist/store.js.map +0 -1
  262. package/dist/structured-error.js +0 -57
  263. package/dist/structured-error.js.map +0 -1
  264. package/dist/target.js +0 -52
  265. package/dist/target.js.map +0 -1
  266. package/dist/tool-result.js +0 -19
  267. package/dist/tool-result.js.map +0 -1
  268. package/dist/which.js +0 -22
  269. package/dist/which.js.map +0 -1
  270. package/dist/workerd-binary.js +0 -98
  271. 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
+ }