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