@mantajs/cli 0.2.0-beta.0

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 (282) hide show
  1. package/bin/manta.mjs +20 -0
  2. package/bin/manta.ts +13 -0
  3. package/dist/admin/generate-admin-config.d.ts +8 -0
  4. package/dist/admin/generate-admin-config.d.ts.map +1 -0
  5. package/dist/admin/generate-admin-config.js +127 -0
  6. package/dist/admin/generate-admin-config.js.map +1 -0
  7. package/dist/ai/chat-handler.d.ts +10 -0
  8. package/dist/ai/chat-handler.d.ts.map +1 -0
  9. package/dist/ai/chat-handler.js +1353 -0
  10. package/dist/ai/chat-handler.js.map +1 -0
  11. package/dist/bootstrap/boot.d.ts +25 -0
  12. package/dist/bootstrap/boot.d.ts.map +1 -0
  13. package/dist/bootstrap/boot.js +344 -0
  14. package/dist/bootstrap/boot.js.map +1 -0
  15. package/dist/bootstrap/bootstrap-app.d.ts +71 -0
  16. package/dist/bootstrap/bootstrap-app.d.ts.map +1 -0
  17. package/dist/bootstrap/bootstrap-app.js +308 -0
  18. package/dist/bootstrap/bootstrap-app.js.map +1 -0
  19. package/dist/bootstrap/bootstrap-context.d.ts +76 -0
  20. package/dist/bootstrap/bootstrap-context.d.ts.map +1 -0
  21. package/dist/bootstrap/bootstrap-context.js +4 -0
  22. package/dist/bootstrap/bootstrap-context.js.map +1 -0
  23. package/dist/bootstrap/bootstrap-helpers.d.ts +71 -0
  24. package/dist/bootstrap/bootstrap-helpers.d.ts.map +1 -0
  25. package/dist/bootstrap/bootstrap-helpers.js +373 -0
  26. package/dist/bootstrap/bootstrap-helpers.js.map +1 -0
  27. package/dist/bootstrap/generate-types.d.ts +7 -0
  28. package/dist/bootstrap/generate-types.d.ts.map +1 -0
  29. package/dist/bootstrap/generate-types.js +832 -0
  30. package/dist/bootstrap/generate-types.js.map +1 -0
  31. package/dist/bootstrap/phases/assemble/index.d.ts +5 -0
  32. package/dist/bootstrap/phases/assemble/index.d.ts.map +1 -0
  33. package/dist/bootstrap/phases/assemble/index.js +5 -0
  34. package/dist/bootstrap/phases/assemble/index.js.map +1 -0
  35. package/dist/bootstrap/phases/assemble/load-links.d.ts +3 -0
  36. package/dist/bootstrap/phases/assemble/load-links.d.ts.map +1 -0
  37. package/dist/bootstrap/phases/assemble/load-links.js +160 -0
  38. package/dist/bootstrap/phases/assemble/load-links.js.map +1 -0
  39. package/dist/bootstrap/phases/assemble/load-modules.d.ts +3 -0
  40. package/dist/bootstrap/phases/assemble/load-modules.d.ts.map +1 -0
  41. package/dist/bootstrap/phases/assemble/load-modules.js +163 -0
  42. package/dist/bootstrap/phases/assemble/load-modules.js.map +1 -0
  43. package/dist/bootstrap/phases/assemble/load-resources.d.ts +3 -0
  44. package/dist/bootstrap/phases/assemble/load-resources.d.ts.map +1 -0
  45. package/dist/bootstrap/phases/assemble/load-resources.js +270 -0
  46. package/dist/bootstrap/phases/assemble/load-resources.js.map +1 -0
  47. package/dist/bootstrap/phases/assemble/wire-commands.d.ts +3 -0
  48. package/dist/bootstrap/phases/assemble/wire-commands.d.ts.map +1 -0
  49. package/dist/bootstrap/phases/assemble/wire-commands.js +408 -0
  50. package/dist/bootstrap/phases/assemble/wire-commands.js.map +1 -0
  51. package/dist/bootstrap/phases/assemble-modules.d.ts +3 -0
  52. package/dist/bootstrap/phases/assemble-modules.d.ts.map +1 -0
  53. package/dist/bootstrap/phases/assemble-modules.js +14 -0
  54. package/dist/bootstrap/phases/assemble-modules.js.map +1 -0
  55. package/dist/bootstrap/phases/build-app.d.ts +3 -0
  56. package/dist/bootstrap/phases/build-app.d.ts.map +1 -0
  57. package/dist/bootstrap/phases/build-app.js +15 -0
  58. package/dist/bootstrap/phases/build-app.js.map +1 -0
  59. package/dist/bootstrap/phases/discover-resources.d.ts +3 -0
  60. package/dist/bootstrap/phases/discover-resources.d.ts.map +1 -0
  61. package/dist/bootstrap/phases/discover-resources.js +60 -0
  62. package/dist/bootstrap/phases/discover-resources.js.map +1 -0
  63. package/dist/bootstrap/phases/index.d.ts +7 -0
  64. package/dist/bootstrap/phases/index.d.ts.map +1 -0
  65. package/dist/bootstrap/phases/index.js +7 -0
  66. package/dist/bootstrap/phases/index.js.map +1 -0
  67. package/dist/bootstrap/phases/init-infra.d.ts +3 -0
  68. package/dist/bootstrap/phases/init-infra.d.ts.map +1 -0
  69. package/dist/bootstrap/phases/init-infra.js +193 -0
  70. package/dist/bootstrap/phases/init-infra.js.map +1 -0
  71. package/dist/bootstrap/phases/seed-dev-users.d.ts +3 -0
  72. package/dist/bootstrap/phases/seed-dev-users.d.ts.map +1 -0
  73. package/dist/bootstrap/phases/seed-dev-users.js +93 -0
  74. package/dist/bootstrap/phases/seed-dev-users.js.map +1 -0
  75. package/dist/bootstrap/phases/wire/auth-helpers.d.ts +12 -0
  76. package/dist/bootstrap/phases/wire/auth-helpers.d.ts.map +1 -0
  77. package/dist/bootstrap/phases/wire/auth-helpers.js +25 -0
  78. package/dist/bootstrap/phases/wire/auth-helpers.js.map +1 -0
  79. package/dist/bootstrap/phases/wire/contexts/context-registry.d.ts +4 -0
  80. package/dist/bootstrap/phases/wire/contexts/context-registry.d.ts.map +1 -0
  81. package/dist/bootstrap/phases/wire/contexts/context-registry.js +96 -0
  82. package/dist/bootstrap/phases/wire/contexts/context-registry.js.map +1 -0
  83. package/dist/bootstrap/phases/wire/contexts/cqrs-routes.d.ts +3 -0
  84. package/dist/bootstrap/phases/wire/contexts/cqrs-routes.d.ts.map +1 -0
  85. package/dist/bootstrap/phases/wire/contexts/cqrs-routes.js +138 -0
  86. package/dist/bootstrap/phases/wire/contexts/cqrs-routes.js.map +1 -0
  87. package/dist/bootstrap/phases/wire/contexts/index.d.ts +6 -0
  88. package/dist/bootstrap/phases/wire/contexts/index.d.ts.map +1 -0
  89. package/dist/bootstrap/phases/wire/contexts/index.js +6 -0
  90. package/dist/bootstrap/phases/wire/contexts/index.js.map +1 -0
  91. package/dist/bootstrap/phases/wire/contexts/query-endpoints.d.ts +3 -0
  92. package/dist/bootstrap/phases/wire/contexts/query-endpoints.d.ts.map +1 -0
  93. package/dist/bootstrap/phases/wire/contexts/query-endpoints.js +116 -0
  94. package/dist/bootstrap/phases/wire/contexts/query-endpoints.js.map +1 -0
  95. package/dist/bootstrap/phases/wire/contexts/spa-warnings.d.ts +3 -0
  96. package/dist/bootstrap/phases/wire/contexts/spa-warnings.d.ts.map +1 -0
  97. package/dist/bootstrap/phases/wire/contexts/spa-warnings.js +17 -0
  98. package/dist/bootstrap/phases/wire/contexts/spa-warnings.js.map +1 -0
  99. package/dist/bootstrap/phases/wire/contexts/user-routes.d.ts +3 -0
  100. package/dist/bootstrap/phases/wire/contexts/user-routes.d.ts.map +1 -0
  101. package/dist/bootstrap/phases/wire/contexts/user-routes.js +83 -0
  102. package/dist/bootstrap/phases/wire/contexts/user-routes.js.map +1 -0
  103. package/dist/bootstrap/phases/wire/index.d.ts +5 -0
  104. package/dist/bootstrap/phases/wire/index.d.ts.map +1 -0
  105. package/dist/bootstrap/phases/wire/index.js +5 -0
  106. package/dist/bootstrap/phases/wire/index.js.map +1 -0
  107. package/dist/bootstrap/phases/wire/wire-adapter.d.ts +12 -0
  108. package/dist/bootstrap/phases/wire/wire-adapter.d.ts.map +1 -0
  109. package/dist/bootstrap/phases/wire/wire-adapter.js +156 -0
  110. package/dist/bootstrap/phases/wire/wire-adapter.js.map +1 -0
  111. package/dist/bootstrap/phases/wire/wire-auth.d.ts +3 -0
  112. package/dist/bootstrap/phases/wire/wire-auth.d.ts.map +1 -0
  113. package/dist/bootstrap/phases/wire/wire-auth.js +46 -0
  114. package/dist/bootstrap/phases/wire/wire-auth.js.map +1 -0
  115. package/dist/bootstrap/phases/wire/wire-contexts.d.ts +3 -0
  116. package/dist/bootstrap/phases/wire/wire-contexts.d.ts.map +1 -0
  117. package/dist/bootstrap/phases/wire/wire-contexts.js +15 -0
  118. package/dist/bootstrap/phases/wire/wire-contexts.js.map +1 -0
  119. package/dist/bootstrap/phases/wire/wire-cron-routes.d.ts +3 -0
  120. package/dist/bootstrap/phases/wire/wire-cron-routes.d.ts.map +1 -0
  121. package/dist/bootstrap/phases/wire/wire-cron-routes.js +102 -0
  122. package/dist/bootstrap/phases/wire/wire-cron-routes.js.map +1 -0
  123. package/dist/bootstrap/phases/wire/wire-extras.d.ts +3 -0
  124. package/dist/bootstrap/phases/wire/wire-extras.d.ts.map +1 -0
  125. package/dist/bootstrap/phases/wire/wire-extras.js +305 -0
  126. package/dist/bootstrap/phases/wire/wire-extras.js.map +1 -0
  127. package/dist/bootstrap/phases/wire/wire-workflow-routes.d.ts +3 -0
  128. package/dist/bootstrap/phases/wire/wire-workflow-routes.d.ts.map +1 -0
  129. package/dist/bootstrap/phases/wire/wire-workflow-routes.js +212 -0
  130. package/dist/bootstrap/phases/wire/wire-workflow-routes.js.map +1 -0
  131. package/dist/bootstrap/phases/wire-http.d.ts +3 -0
  132. package/dist/bootstrap/phases/wire-http.d.ts.map +1 -0
  133. package/dist/bootstrap/phases/wire-http.js +10 -0
  134. package/dist/bootstrap/phases/wire-http.js.map +1 -0
  135. package/dist/bootstrap/validate-generated-ts.d.ts +6 -0
  136. package/dist/bootstrap/validate-generated-ts.d.ts.map +1 -0
  137. package/dist/bootstrap/validate-generated-ts.js +26 -0
  138. package/dist/bootstrap/validate-generated-ts.js.map +1 -0
  139. package/dist/build/generate-manifest.d.ts +10 -0
  140. package/dist/build/generate-manifest.d.ts.map +1 -0
  141. package/dist/build/generate-manifest.js +138 -0
  142. package/dist/build/generate-manifest.js.map +1 -0
  143. package/dist/cli.d.ts +3 -0
  144. package/dist/cli.d.ts.map +1 -0
  145. package/dist/cli.js +421 -0
  146. package/dist/cli.js.map +1 -0
  147. package/dist/commands/build.d.ts +21 -0
  148. package/dist/commands/build.d.ts.map +1 -0
  149. package/dist/commands/build.js +399 -0
  150. package/dist/commands/build.js.map +1 -0
  151. package/dist/commands/db/create.d.ts +17 -0
  152. package/dist/commands/db/create.d.ts.map +1 -0
  153. package/dist/commands/db/create.js +94 -0
  154. package/dist/commands/db/create.js.map +1 -0
  155. package/dist/commands/db/diff.d.ts +39 -0
  156. package/dist/commands/db/diff.d.ts.map +1 -0
  157. package/dist/commands/db/diff.js +81 -0
  158. package/dist/commands/db/diff.js.map +1 -0
  159. package/dist/commands/db/generate.d.ts +58 -0
  160. package/dist/commands/db/generate.d.ts.map +1 -0
  161. package/dist/commands/db/generate.js +138 -0
  162. package/dist/commands/db/generate.js.map +1 -0
  163. package/dist/commands/db/migrate.d.ts +29 -0
  164. package/dist/commands/db/migrate.d.ts.map +1 -0
  165. package/dist/commands/db/migrate.js +118 -0
  166. package/dist/commands/db/migrate.js.map +1 -0
  167. package/dist/commands/db/pg-deps.d.ts +30 -0
  168. package/dist/commands/db/pg-deps.d.ts.map +1 -0
  169. package/dist/commands/db/pg-deps.js +178 -0
  170. package/dist/commands/db/pg-deps.js.map +1 -0
  171. package/dist/commands/db/rollback.d.ts +21 -0
  172. package/dist/commands/db/rollback.d.ts.map +1 -0
  173. package/dist/commands/db/rollback.js +85 -0
  174. package/dist/commands/db/rollback.js.map +1 -0
  175. package/dist/commands/db/types.d.ts +113 -0
  176. package/dist/commands/db/types.d.ts.map +1 -0
  177. package/dist/commands/db/types.js +4 -0
  178. package/dist/commands/db/types.js.map +1 -0
  179. package/dist/commands/dev.d.ts +12 -0
  180. package/dist/commands/dev.d.ts.map +1 -0
  181. package/dist/commands/dev.js +79 -0
  182. package/dist/commands/dev.js.map +1 -0
  183. package/dist/commands/exec.d.ts +21 -0
  184. package/dist/commands/exec.d.ts.map +1 -0
  185. package/dist/commands/exec.js +148 -0
  186. package/dist/commands/exec.js.map +1 -0
  187. package/dist/commands/generate.d.ts +11 -0
  188. package/dist/commands/generate.d.ts.map +1 -0
  189. package/dist/commands/generate.js +19 -0
  190. package/dist/commands/generate.js.map +1 -0
  191. package/dist/commands/init.d.ts +14 -0
  192. package/dist/commands/init.d.ts.map +1 -0
  193. package/dist/commands/init.js +476 -0
  194. package/dist/commands/init.js.map +1 -0
  195. package/dist/commands/start.d.ts +15 -0
  196. package/dist/commands/start.d.ts.map +1 -0
  197. package/dist/commands/start.js +121 -0
  198. package/dist/commands/start.js.map +1 -0
  199. package/dist/commands/user.d.ts +19 -0
  200. package/dist/commands/user.d.ts.map +1 -0
  201. package/dist/commands/user.js +125 -0
  202. package/dist/commands/user.js.map +1 -0
  203. package/dist/config/load-config.d.ts +23 -0
  204. package/dist/config/load-config.d.ts.map +1 -0
  205. package/dist/config/load-config.js +105 -0
  206. package/dist/config/load-config.js.map +1 -0
  207. package/dist/config/load-env.d.ts +11 -0
  208. package/dist/config/load-env.d.ts.map +1 -0
  209. package/dist/config/load-env.js +61 -0
  210. package/dist/config/load-env.js.map +1 -0
  211. package/dist/config/resolve-adapters.d.ts +23 -0
  212. package/dist/config/resolve-adapters.d.ts.map +1 -0
  213. package/dist/config/resolve-adapters.js +96 -0
  214. package/dist/config/resolve-adapters.js.map +1 -0
  215. package/dist/index.d.ts +18 -0
  216. package/dist/index.d.ts.map +1 -0
  217. package/dist/index.js +19 -0
  218. package/dist/index.js.map +1 -0
  219. package/dist/jiti.d.ts +2 -0
  220. package/dist/jiti.d.ts.map +1 -0
  221. package/dist/jiti.js +2 -0
  222. package/dist/jiti.js.map +1 -0
  223. package/dist/openapi/generate-spec.d.ts +56 -0
  224. package/dist/openapi/generate-spec.d.ts.map +1 -0
  225. package/dist/openapi/generate-spec.js +491 -0
  226. package/dist/openapi/generate-spec.js.map +1 -0
  227. package/dist/openapi/index.d.ts +4 -0
  228. package/dist/openapi/index.d.ts.map +1 -0
  229. package/dist/openapi/index.js +3 -0
  230. package/dist/openapi/index.js.map +1 -0
  231. package/dist/openapi/swagger-html.d.ts +2 -0
  232. package/dist/openapi/swagger-html.d.ts.map +1 -0
  233. package/dist/openapi/swagger-html.js +29 -0
  234. package/dist/openapi/swagger-html.js.map +1 -0
  235. package/dist/plugins/merge-resources.d.ts +18 -0
  236. package/dist/plugins/merge-resources.d.ts.map +1 -0
  237. package/dist/plugins/merge-resources.js +76 -0
  238. package/dist/plugins/merge-resources.js.map +1 -0
  239. package/dist/plugins/resolve-plugins.d.ts +14 -0
  240. package/dist/plugins/resolve-plugins.d.ts.map +1 -0
  241. package/dist/plugins/resolve-plugins.js +73 -0
  242. package/dist/plugins/resolve-plugins.js.map +1 -0
  243. package/dist/resource-loader.d.ts +151 -0
  244. package/dist/resource-loader.d.ts.map +1 -0
  245. package/dist/resource-loader.js +456 -0
  246. package/dist/resource-loader.js.map +1 -0
  247. package/dist/route-discovery.d.ts +33 -0
  248. package/dist/route-discovery.d.ts.map +1 -0
  249. package/dist/route-discovery.js +69 -0
  250. package/dist/route-discovery.js.map +1 -0
  251. package/dist/server-bootstrap.d.ts +38 -0
  252. package/dist/server-bootstrap.d.ts.map +1 -0
  253. package/dist/server-bootstrap.js +21 -0
  254. package/dist/server-bootstrap.js.map +1 -0
  255. package/dist/spa/generate-spa.d.ts +15 -0
  256. package/dist/spa/generate-spa.d.ts.map +1 -0
  257. package/dist/spa/generate-spa.js +357 -0
  258. package/dist/spa/generate-spa.js.map +1 -0
  259. package/dist/templates/agent/nextjs.md +129 -0
  260. package/dist/templates/agent/nuxt.md +98 -0
  261. package/dist/templates/agent/standalone.md +498 -0
  262. package/dist/types.d.ts +145 -0
  263. package/dist/types.d.ts.map +1 -0
  264. package/dist/types.js +3 -0
  265. package/dist/types.js.map +1 -0
  266. package/dist/utils/colors.d.ts +7 -0
  267. package/dist/utils/colors.d.ts.map +1 -0
  268. package/dist/utils/colors.js +8 -0
  269. package/dist/utils/colors.js.map +1 -0
  270. package/dist/utils/logger.d.ts +10 -0
  271. package/dist/utils/logger.d.ts.map +1 -0
  272. package/dist/utils/logger.js +27 -0
  273. package/dist/utils/logger.js.map +1 -0
  274. package/dist/utils/prompts.d.ts +6 -0
  275. package/dist/utils/prompts.d.ts.map +1 -0
  276. package/dist/utils/prompts.js +28 -0
  277. package/dist/utils/prompts.js.map +1 -0
  278. package/dist/utils/spinner.d.ts +7 -0
  279. package/dist/utils/spinner.d.ts.map +1 -0
  280. package/dist/utils/spinner.js +20 -0
  281. package/dist/utils/spinner.js.map +1 -0
  282. package/package.json +80 -0
@@ -0,0 +1,3 @@
1
+ import type { AppRef, BootstrapContext } from '../../bootstrap-context';
2
+ export declare function wireCronRoutes(ctx: BootstrapContext, appRef: AppRef): Promise<void>;
3
+ //# sourceMappingURL=wire-cron-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-cron-routes.d.ts","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/wire-cron-routes.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAEvE,wBAAsB,cAAc,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFzF"}
@@ -0,0 +1,102 @@
1
+ // Framework-owned HTTP catch-all for scheduled jobs.
2
+ //
3
+ // `defineJob(name, schedule, handler)` registers user jobs into the
4
+ // IJobSchedulerPort at boot. To trigger them on serverless platforms
5
+ // (Vercel Cron, Cloudflare Cron Triggers, etc.) we expose a single
6
+ // HTTP route that dispatches by job name:
7
+ //
8
+ // GET|POST /api/crons/:name → scheduler.runJob(name)
9
+ //
10
+ // Auth: when `CRON_SECRET` is set, the request must carry
11
+ // `Authorization: Bearer <CRON_SECRET>`. Vercel Cron auto-injects this
12
+ // header on every cron invocation when the project has a CRON_SECRET
13
+ // env var configured. When the secret is absent we accept all callers
14
+ // and emit a single warn at boot — fine for `manta dev`, refused in
15
+ // `manta build --preset vercel` deployments where it should always be
16
+ // configured.
17
+ //
18
+ // The handler is framework-owned; user apps get this for free without
19
+ // touching `src/api/`. The route must NOT be context-scoped (no JWT
20
+ // admin auth) — it's meant to be called by the scheduler trigger, not
21
+ // a logged-in user.
22
+ export async function wireCronRoutes(ctx, appRef) {
23
+ const { logger, adapter } = ctx;
24
+ function parseJobName(req) {
25
+ const url = new URL(req.url, 'http://localhost');
26
+ const segments = url.pathname.split('/').filter(Boolean);
27
+ const idx = segments.indexOf('crons');
28
+ if (idx < 0 || idx + 1 >= segments.length)
29
+ return null;
30
+ const name = segments[idx + 1];
31
+ return name && name.length > 0 ? decodeURIComponent(name) : null;
32
+ }
33
+ function resolveScheduler() {
34
+ try {
35
+ return appRef.current.resolve('IJobSchedulerPort');
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ /**
42
+ * Validate the Bearer token against `CRON_SECRET`.
43
+ * Returns `null` on success, or a Response (401) on failure.
44
+ * When `CRON_SECRET` is unset we accept everything (dev mode); a
45
+ * separate warn was logged at boot.
46
+ */
47
+ function checkAuth(req) {
48
+ const secret = process.env.CRON_SECRET;
49
+ if (!secret)
50
+ return null; // dev / unconfigured
51
+ const authHeader = req.headers.get('authorization') ?? '';
52
+ const expected = `Bearer ${secret}`;
53
+ if (authHeader !== expected) {
54
+ return Response.json({ type: 'UNAUTHORIZED', message: 'invalid CRON_SECRET' }, { status: 401 });
55
+ }
56
+ return null;
57
+ }
58
+ async function handle(req) {
59
+ const authError = checkAuth(req);
60
+ if (authError)
61
+ return authError;
62
+ const name = parseJobName(req);
63
+ if (!name) {
64
+ return Response.json({ type: 'INVALID_DATA', message: 'job name is required in URL' }, { status: 400 });
65
+ }
66
+ const scheduler = resolveScheduler();
67
+ if (!scheduler) {
68
+ return Response.json({ type: 'NOT_IMPLEMENTED', message: 'IJobSchedulerPort is not configured' }, { status: 501 });
69
+ }
70
+ const startMs = Date.now();
71
+ try {
72
+ const result = await scheduler.runJob(name);
73
+ // Prefer wall-clock since the registered handler currently hard-codes
74
+ // duration_ms:0 in load-resources (deferred WP-F15).
75
+ const duration_ms = result.duration_ms || Date.now() - startMs;
76
+ const errMsg = result.error?.message;
77
+ const code = result.status === 'failure' ? 500 : 200;
78
+ const body = { status: result.status, duration_ms };
79
+ if (errMsg)
80
+ body.error = errMsg;
81
+ // Surface handler return value (sync result counts, etc.) so cron callers
82
+ // can verify a no-op vs an actual sync without inspecting server logs.
83
+ if (result.data !== undefined) {
84
+ body.data = result.data;
85
+ }
86
+ return Response.json(body, { status: code });
87
+ }
88
+ catch (err) {
89
+ const message = err instanceof Error ? err.message : String(err);
90
+ // Unknown job name → 404, anything else → 500
91
+ const isUnknown = message.startsWith('Job "') && message.includes('not registered');
92
+ return Response.json({ type: isUnknown ? 'NOT_FOUND' : 'UNEXPECTED_STATE', message, duration_ms: Date.now() - startMs }, { status: isUnknown ? 404 : 500 });
93
+ }
94
+ }
95
+ adapter.registerRoute('GET', '/api/crons/:name', handle);
96
+ adapter.registerRoute('POST', '/api/crons/:name', handle);
97
+ if (!process.env.CRON_SECRET) {
98
+ logger.warn('[crons] CRON_SECRET is not set — /api/crons/:name accepts unauthenticated requests');
99
+ }
100
+ logger.info('[crons] Framework route: GET|POST /api/crons/:name (auth: Bearer CRON_SECRET)');
101
+ }
102
+ //# sourceMappingURL=wire-cron-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-cron-routes.js","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/wire-cron-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AppRef, BootstrapContext } from '../../bootstrap-context';
2
+ export declare function wireExtras(ctx: BootstrapContext, appRef: AppRef): Promise<void>;
3
+ //# sourceMappingURL=wire-extras.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-extras.d.ts","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/wire-extras.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAKvE,wBAAsB,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4VrF"}
@@ -0,0 +1,305 @@
1
+ // Phase 5d: AI chat + PostHog HogQL relay + dashboard registry + custom/module API routes + OpenAPI.
2
+ // Covers [14] AI + dashboard registry, [14b-14c] custom + module API routes, [15] OpenAPI spec + Swagger.
3
+ import { getRequestBody } from '../../../server-bootstrap';
4
+ import { isDmlEntity } from '../../bootstrap-helpers';
5
+ import { wireCronRoutes } from './wire-cron-routes';
6
+ import { wireWorkflowRoutes } from './wire-workflow-routes';
7
+ export async function wireExtras(ctx, appRef) {
8
+ const { logger, resources, cwd, config, doImport, entityRegistry, loadedLinks, cmdRegistry, resolvedPlugins, adapter, contextRegistry, options, } = ctx;
9
+ // [14] AI + Dashboard registry
10
+ let aiEnabled = false;
11
+ const aiProvider = process.env.MANTA_AI_PROVIDER || 'anthropic';
12
+ const aiKeyEnv = aiProvider === 'openai'
13
+ ? 'OPENAI_API_KEY'
14
+ : aiProvider === 'google'
15
+ ? 'GOOGLE_GENERATIVE_AI_API_KEY'
16
+ : aiProvider === 'mistral'
17
+ ? 'MISTRAL_API_KEY'
18
+ : 'ANTHROPIC_API_KEY';
19
+ if (process.env[aiKeyEnv]) {
20
+ try {
21
+ const { createAiChatHandler } = await import('../../../ai/chat-handler');
22
+ const allEntityNames = Array.from(entityRegistry.keys()).map((k) => k.toLowerCase());
23
+ const discoveredModuleNames = [...new Set([...resources.modules.map((m) => m.name), ...allEntityNames])];
24
+ const aiLinkGraph = loadedLinks
25
+ .filter((l) => !l.isDirectFk)
26
+ .map((l) => ({
27
+ left: l.leftEntity.toLowerCase(),
28
+ right: l.rightEntity.toLowerCase(),
29
+ pivot: l.tableName,
30
+ cardinality: l.cardinality,
31
+ }));
32
+ const aiHandler = createAiChatHandler(appRef.current, discoveredModuleNames, aiLinkGraph);
33
+ adapter.registerRoute('POST', '/api/admin/ai/chat', aiHandler);
34
+ aiEnabled = true;
35
+ logger.info('[ai] AI chat endpoint registered: POST /api/admin/ai/chat');
36
+ }
37
+ catch (err) {
38
+ logger.warn(`[ai] AI chat not available: ${err.message}`);
39
+ }
40
+ }
41
+ else {
42
+ logger.info(`[ai] AI disabled (${aiKeyEnv} not set)`);
43
+ }
44
+ // ── PostHog HogQL relay endpoint ───────────────────────────────────────
45
+ if (process.env.POSTHOG_API_KEY) {
46
+ adapter.registerRoute('POST', '/api/admin/posthog/hogql', async (req) => {
47
+ try {
48
+ const body = await getRequestBody(req);
49
+ const raw = typeof body.query === 'string' ? body.query.trim() : '';
50
+ if (!raw) {
51
+ return Response.json({ type: 'INVALID_DATA', message: 'query is required' }, { status: 400 });
52
+ }
53
+ if (!/^(with|select)\b/i.test(raw)) {
54
+ return Response.json({
55
+ type: 'INVALID_DATA',
56
+ message: 'Only SELECT or WITH…SELECT queries are allowed. This endpoint is read-only.',
57
+ }, { status: 400 });
58
+ }
59
+ const host = process.env.POSTHOG_HOST ?? 'https://eu.i.posthog.com';
60
+ const key = process.env.POSTHOG_API_KEY;
61
+ const res = await fetch(`${host}/api/projects/@current/query/`, {
62
+ method: 'POST',
63
+ headers: { Authorization: `Bearer ${key}`, 'Content-Type': 'application/json' },
64
+ body: JSON.stringify({ query: { kind: 'HogQLQuery', query: raw } }),
65
+ });
66
+ if (!res.ok) {
67
+ const text = await res.text();
68
+ return Response.json({ type: 'UNEXPECTED_STATE', message: `PostHog HogQL ${res.status}`, detail: text }, { status: 502 });
69
+ }
70
+ const data = (await res.json());
71
+ if (!data.results || !data.columns) {
72
+ return Response.json({ data: { columns: [], rows: [], rowCount: 0 } });
73
+ }
74
+ const rows = data.results.slice(0, 500).map((row) => {
75
+ const obj = {};
76
+ data.columns?.forEach((col, idx) => {
77
+ obj[col] = row[idx];
78
+ });
79
+ return obj;
80
+ });
81
+ return Response.json({
82
+ data: {
83
+ columns: data.columns,
84
+ rows,
85
+ rowCount: data.results.length,
86
+ truncated: data.results.length > 500,
87
+ },
88
+ });
89
+ }
90
+ catch (err) {
91
+ return Response.json({ type: 'UNEXPECTED_STATE', message: err.message }, { status: 500 });
92
+ }
93
+ });
94
+ logger.info('[posthog] HogQL relay endpoint registered: POST /api/admin/posthog/hogql');
95
+ }
96
+ // GET /api/admin/registry — dashboard config
97
+ let adminRegistry = { pages: {}, components: {}, navigation: [] };
98
+ if (!options.preloadedResources) {
99
+ try {
100
+ const { existsSync } = await import('node:fs');
101
+ const { resolve: resolvePath } = await import('node:path');
102
+ const registryPath = resolvePath(cwd, 'src', 'admin', 'registry.ts');
103
+ if (existsSync(registryPath)) {
104
+ const mod = await doImport(registryPath);
105
+ adminRegistry = (mod.default ?? mod);
106
+ logger.info('[dashboard] Registry loaded from src/admin/registry.ts');
107
+ }
108
+ }
109
+ catch (err) {
110
+ logger.warn(`[dashboard] Failed to load registry: ${err.message}`);
111
+ }
112
+ }
113
+ // Auto-generate navigation from discovered modules if registry has none.
114
+ // URL segments use the raw on-disk directory name (kebab-friendly).
115
+ const navItems = adminRegistry.navigation;
116
+ if (navItems.length === 0 && resources.modules.length > 0) {
117
+ for (const mod of resources.modules) {
118
+ const label = mod.dirName.charAt(0).toUpperCase() + mod.dirName.slice(1);
119
+ const subItems = mod.entities.map((e) => ({
120
+ label: e.name.replace(/([A-Z])/g, ' $1').trim(),
121
+ to: `/${mod.dirName}/${e.name
122
+ .toLowerCase()
123
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
124
+ .toLowerCase()}`,
125
+ }));
126
+ navItems.push({
127
+ icon: 'Users',
128
+ label,
129
+ to: `/${mod.dirName}`,
130
+ items: subItems.length > 1 ? subItems : [],
131
+ });
132
+ }
133
+ logger.info(`[dashboard] Auto-generated navigation (${navItems.length} entries from modules)`);
134
+ }
135
+ adapter.registerRoute('GET', '/api/admin/registry', async () => {
136
+ return Response.json({
137
+ ...adminRegistry,
138
+ endpoints: {
139
+ query: '/api/admin/query',
140
+ command: '/api/admin/command',
141
+ tools: '/api/admin/tools',
142
+ },
143
+ ai: { enabled: aiEnabled },
144
+ });
145
+ });
146
+ // Framework-owned workflow introspection endpoints (GET/DELETE /_workflow/:id)
147
+ await wireWorkflowRoutes(ctx, appRef);
148
+ // Framework-owned cron HTTP catch-all (GET|POST /api/crons/:name)
149
+ await wireCronRoutes(ctx, appRef);
150
+ // [14b] Register custom API routes (plugins + local src/api/)
151
+ {
152
+ const apiRoutes = options.preloadedResources
153
+ ? []
154
+ : await (async () => {
155
+ const { mergePluginApiRoutes } = await import('../../../plugins/merge-resources');
156
+ // Pass the jiti-backed loader so route files (and their transitive
157
+ // `@mantajs/core` / local imports) resolve like the rest of the app.
158
+ // A raw native import() here can't load directory-style TS source.
159
+ return mergePluginApiRoutes(resolvedPlugins, cwd, doImport);
160
+ })();
161
+ for (const route of apiRoutes) {
162
+ const mod = await doImport(route.file);
163
+ const handler = mod[route.exportName];
164
+ if (typeof handler !== 'function')
165
+ continue;
166
+ adapter.registerRoute(route.method, route.path, async (req) => {
167
+ const mantaReq = req;
168
+ if (!mantaReq.app)
169
+ Object.defineProperty(mantaReq, 'app', { value: appRef.current, enumerable: true, configurable: true });
170
+ if (!mantaReq.scope)
171
+ Object.defineProperty(mantaReq, 'scope', {
172
+ value: { resolve: (k) => appRef.current.resolve(k) },
173
+ enumerable: true,
174
+ configurable: true,
175
+ });
176
+ // Expose the real auth stack to application routes (custom auth endpoints
177
+ // such as self-service signup / SSO callbacks). Request-scoped, additive.
178
+ if (!mantaReq.authService && ctx.authService)
179
+ Object.defineProperty(mantaReq, 'authService', {
180
+ value: ctx.authService,
181
+ enumerable: true,
182
+ configurable: true,
183
+ });
184
+ if (!mantaReq.jwtSecret && ctx.jwtSecret)
185
+ Object.defineProperty(mantaReq, 'jwtSecret', {
186
+ value: ctx.jwtSecret,
187
+ enumerable: true,
188
+ configurable: true,
189
+ });
190
+ return handler(mantaReq);
191
+ });
192
+ logger.info(` Route: ${route.method} ${route.path}`);
193
+ }
194
+ if (apiRoutes.length > 0) {
195
+ logger.info(`[api] ${apiRoutes.length} custom route(s) registered`);
196
+ }
197
+ }
198
+ // [14c] Register intra-module API routes
199
+ {
200
+ const HTTP_METHODS = new Set(['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD']);
201
+ let moduleRouteCount = 0;
202
+ for (const modInfo of resources.modules) {
203
+ for (const routeInfo of modInfo.apiRoutes) {
204
+ try {
205
+ const mod = await doImport(routeInfo.file);
206
+ const segments = routeInfo.relativePath
207
+ ? routeInfo.relativePath
208
+ .split('/')
209
+ .map((seg) => {
210
+ if (seg.startsWith('[...') && seg.endsWith(']'))
211
+ return '**';
212
+ if (seg.startsWith('[') && seg.endsWith(']'))
213
+ return `:${seg.slice(1, -1)}`;
214
+ return seg;
215
+ })
216
+ .join('/')
217
+ : '';
218
+ const urlPath = segments ? `/api/${modInfo.dirName}/${segments}` : `/api/${modInfo.dirName}`;
219
+ for (const exportName of Object.keys(mod)) {
220
+ if (!HTTP_METHODS.has(exportName))
221
+ continue;
222
+ const handler = mod[exportName];
223
+ if (typeof handler !== 'function')
224
+ continue;
225
+ adapter.registerRoute(exportName, urlPath, async (req) => {
226
+ const mantaReq = req;
227
+ if (!mantaReq.app)
228
+ Object.defineProperty(mantaReq, 'app', { value: appRef.current, enumerable: true, configurable: true });
229
+ if (!mantaReq.scope)
230
+ Object.defineProperty(mantaReq, 'scope', {
231
+ value: { resolve: (k) => appRef.current.resolve(k) },
232
+ enumerable: true,
233
+ configurable: true,
234
+ });
235
+ return handler(mantaReq);
236
+ });
237
+ logger.info(` Route: ${exportName} ${urlPath} (module: ${modInfo.dirName})`);
238
+ moduleRouteCount++;
239
+ }
240
+ }
241
+ catch (err) {
242
+ logger.warn(`Failed to load module route '${modInfo.dirName}/${routeInfo.relativePath}': ${err instanceof Error ? err.message : String(err)}`);
243
+ }
244
+ }
245
+ }
246
+ if (moduleRouteCount > 0) {
247
+ logger.info(`[api] ${moduleRouteCount} module route(s) registered`);
248
+ }
249
+ }
250
+ // [15] OpenAPI spec + Swagger UI
251
+ try {
252
+ const { generateOpenApiSpec, parseDmlEntityFields } = await import('../../../openapi/generate-spec');
253
+ const { getSwaggerHtml } = await import('../../../openapi/swagger-html');
254
+ const openApiEntities = [];
255
+ for (const modInfo of resources.modules) {
256
+ try {
257
+ const mod = await doImport(modInfo.path);
258
+ for (const value of Object.values(mod)) {
259
+ if (isDmlEntity(value) && typeof value.getOptions === 'function') {
260
+ openApiEntities.push({
261
+ name: value.name,
262
+ moduleName: modInfo.name,
263
+ fields: parseDmlEntityFields(value.schema),
264
+ });
265
+ }
266
+ }
267
+ }
268
+ catch {
269
+ /* skip modules that fail to import */
270
+ }
271
+ }
272
+ const openApiCommands = cmdRegistry
273
+ ? cmdRegistry.list().map((entry) => ({
274
+ name: entry.name,
275
+ description: entry.description,
276
+ inputSchema: entry.inputSchema,
277
+ }))
278
+ : [];
279
+ const staticRoutes = [];
280
+ const primaryContext = contextRegistry.list()[0];
281
+ const openApiBasePath = primaryContext?.basePath ?? '/api';
282
+ const configRecord = config;
283
+ adapter.registerRoute('GET', '/api/openapi.json', async () => {
284
+ const spec = generateOpenApiSpec({
285
+ title: configRecord.name ?? 'Manta API',
286
+ version: configRecord.version ?? '1.0.0',
287
+ description: configRecord.description,
288
+ basePath: openApiBasePath,
289
+ commands: openApiCommands,
290
+ entities: openApiEntities,
291
+ routes: staticRoutes.length > 0 ? staticRoutes : undefined,
292
+ });
293
+ return Response.json(spec);
294
+ });
295
+ adapter.registerRoute('GET', '/api/docs', async () => {
296
+ const html = getSwaggerHtml('/api/openapi.json');
297
+ return new Response(html, { headers: { 'Content-Type': 'text/html' } });
298
+ });
299
+ logger.info('[openapi] Swagger UI: GET /api/docs | OpenAPI spec: GET /api/openapi.json');
300
+ }
301
+ catch (err) {
302
+ logger.warn(`[openapi] Failed to register OpenAPI routes: ${err.message}`);
303
+ }
304
+ }
305
+ //# sourceMappingURL=wire-extras.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-extras.js","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/wire-extras.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,0GAA0G;AAE1G,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAqB,EAAE,MAAc;IACpE,MAAM,EACJ,MAAM,EACN,SAAS,EACT,GAAG,EACH,MAAM,EACN,QAAQ,EACR,cAAc,EACd,WAAW,EACX,WAAW,EACX,eAAe,EACf,OAAO,EACP,eAAe,EACf,OAAO,GACR,GAAG,GAAG,CAAA;IAEP,+BAA+B;IAC/B,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,WAAW,CAAA;IAC/D,MAAM,QAAQ,GACZ,UAAU,KAAK,QAAQ;QACrB,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,UAAU,KAAK,QAAQ;YACvB,CAAC,CAAC,8BAA8B;YAChC,CAAC,CAAC,UAAU,KAAK,SAAS;gBACxB,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,mBAAmB,CAAA;IAE7B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACxE,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;YACpF,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;YAC7G,MAAM,WAAW,GAAG,WAAW;iBAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAA8B,CAAC,UAAU,CAAC;iBAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACX,IAAI,EAAG,CAA4B,CAAC,UAAU,CAAC,WAAW,EAAE;gBAC5D,KAAK,EAAG,CAA6B,CAAC,WAAW,CAAC,WAAW,EAAE;gBAC/D,KAAK,EAAG,CAA2B,CAAC,SAAS;gBAC7C,WAAW,EAAG,CAA6B,CAAC,WAAW;aACxD,CAAC,CAAC,CAAA;YACL,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAQ,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAA;YAC1F,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAA;YAC9D,SAAS,GAAG,IAAI,CAAA;YAChB,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;QAC1E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,+BAAgC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QACtE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,qBAAqB,QAAQ,WAAW,CAAC,CAAA;IACvD,CAAC;IAED,0EAA0E;IAC1E,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,0BAA0B,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;YAC/E,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAqB,GAAG,CAAC,CAAA;gBAC1D,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBACnE,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;gBAC/F,CAAC;gBACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnC,OAAO,QAAQ,CAAC,IAAI,CAClB;wBACE,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE,6EAA6E;qBACvF,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;gBACH,CAAC;gBACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,0BAA0B,CAAA;gBACnE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;gBACvC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,+BAA+B,EAAE;oBAC9D,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/E,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;iBACpE,CAAC,CAAA;gBACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;oBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;oBAC7B,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,iBAAiB,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAClF,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;gBACH,CAAC;gBACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAI7B,CAAA;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;gBACxE,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBAClD,MAAM,GAAG,GAA4B,EAAE,CAAA;oBACvC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;wBACjC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;oBACrB,CAAC,CAAC,CAAA;oBACF,OAAO,GAAG,CAAA;gBACZ,CAAC,CAAC,CAAA;gBACF,OAAO,QAAQ,CAAC,IAAI,CAAC;oBACnB,IAAI,EAAE;wBACJ,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,IAAI;wBACJ,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;wBAC7B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG;qBACrC;iBACF,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YACtG,CAAC;QACH,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAA;IACzF,CAAC;IAED,6CAA6C;IAC7C,IAAI,aAAa,GAA4B,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;IAC1F,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;YAC9C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YAC1D,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;YACpE,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAA;gBACxC,aAAa,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAA4B,CAAA;gBAC/D,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;YACvE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,wCAAyC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QAC/E,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,QAAQ,GAAG,aAAa,CAAC,UAA4C,CAAA;IAC3E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACxE,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAC7C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE;gBAC/C,EAAE,EAAE,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI;qBAC1B,WAAW,EAAE;qBACb,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;qBACnC,WAAW,EAAE,EAAE;aACnB,CAAC,CAAC,CAAA;YACH,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,OAAO;gBACb,KAAK;gBACL,EAAE,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE;gBACrB,KAAK,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;aAC3C,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,0CAA0C,QAAQ,CAAC,MAAM,wBAAwB,CAAC,CAAA;IAChG,CAAC;IAED,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,qBAAqB,EAAE,KAAK,IAAI,EAAE;QAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC;YACnB,GAAG,aAAa;YAChB,SAAS,EAAE;gBACT,KAAK,EAAE,kBAAkB;gBACzB,OAAO,EAAE,oBAAoB;gBAC7B,KAAK,EAAE,kBAAkB;aAC1B;YACD,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;SAC3B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,+EAA+E;IAC/E,MAAM,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAErC,kEAAkE;IAClE,MAAM,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAEjC,8DAA8D;IAC9D,CAAC;QACC,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB;YAC1C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAA;gBACjF,mEAAmE;gBACnE,qEAAqE;gBACrE,mEAAmE;gBACnE,OAAO,oBAAoB,CAAC,eAAe,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;YAC7D,CAAC,CAAC,EAAE,CAAA;QACR,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAmD,CAAA;YACvF,IAAI,OAAO,OAAO,KAAK,UAAU;gBAAE,SAAQ;YAE3C,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;gBACrE,MAAM,QAAQ,GAAG,GAMhB,CAAA;gBACD,IAAI,CAAC,QAAQ,CAAC,GAAG;oBACf,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,OAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC1G,IAAI,CAAC,QAAQ,CAAC,KAAK;oBACjB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;wBACvC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAI,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,OAAQ,CAAC,OAAO,CAAI,CAAC,CAAC,EAAE;wBACnE,UAAU,EAAE,IAAI;wBAChB,YAAY,EAAE,IAAI;qBACnB,CAAC,CAAA;gBACJ,0EAA0E;gBAC1E,0EAA0E;gBAC1E,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW;oBAC1C,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE;wBAC7C,KAAK,EAAE,GAAG,CAAC,WAAW;wBACtB,UAAU,EAAE,IAAI;wBAChB,YAAY,EAAE,IAAI;qBACnB,CAAC,CAAA;gBACJ,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS;oBACtC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE;wBAC3C,KAAK,EAAE,GAAG,CAAC,SAAS;wBACpB,UAAU,EAAE,IAAI;wBAChB,YAAY,EAAE,IAAI;qBACnB,CAAC,CAAA;gBACJ,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC1B,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACvD,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,6BAA6B,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,CAAC;QACC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;QAC1F,IAAI,gBAAgB,GAAG,CAAC,CAAA;QACxB,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACxC,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC1C,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;oBAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY;wBACrC,CAAC,CAAC,SAAS,CAAC,YAAY;6BACnB,KAAK,CAAC,GAAG,CAAC;6BACV,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE;4BACnB,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;gCAAE,OAAO,IAAI,CAAA;4BAC5D,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;gCAAE,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;4BAC3E,OAAO,GAAG,CAAA;wBACZ,CAAC,CAAC;6BACD,IAAI,CAAC,GAAG,CAAC;wBACd,CAAC,CAAC,EAAE,CAAA;oBACN,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAA;oBAE5F,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;4BAAE,SAAQ;wBAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAmD,CAAA;wBACjF,IAAI,OAAO,OAAO,KAAK,UAAU;4BAAE,SAAQ;wBAE3C,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;4BAChE,MAAM,QAAQ,GAAG,GAAmD,CAAA;4BACpE,IAAI,CAAC,QAAQ,CAAC,GAAG;gCACf,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,OAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;4BAC1G,IAAI,CAAC,QAAQ,CAAC,KAAK;gCACjB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;oCACvC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAI,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,OAAQ,CAAC,OAAO,CAAI,CAAC,CAAC,EAAE;oCACnE,UAAU,EAAE,IAAI;oCAChB,YAAY,EAAE,IAAI;iCACnB,CAAC,CAAA;4BACJ,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAA;wBAC1B,CAAC,CAAC,CAAA;wBACF,MAAM,CAAC,IAAI,CAAC,YAAY,UAAU,IAAI,OAAO,aAAa,OAAO,CAAC,OAAO,GAAG,CAAC,CAAA;wBAC7E,gBAAgB,EAAE,CAAA;oBACpB,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CACT,gCAAgC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,YAAY,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAClI,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,SAAS,gBAAgB,6BAA6B,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAA;QACpG,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAA;QAExE,MAAM,eAAe,GAIhB,EAAE,CAAA;QACP,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACxC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvC,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;wBACjE,eAAe,CAAC,IAAI,CAAC;4BACnB,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,UAAU,EAAE,OAAO,CAAC,IAAI;4BACxB,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;yBAC3C,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sCAAsC;YACxC,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,WAAW;YACjC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;YACL,CAAC,CAAC,EAAE,CAAA;QAEN,MAAM,YAAY,GAMb,EAAE,CAAA;QAEP,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAChD,MAAM,eAAe,GAAG,cAAc,EAAE,QAAQ,IAAI,MAAM,CAAA;QAE1D,MAAM,YAAY,GAAG,MAAiC,CAAA;QACtD,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,IAAI,GAAG,mBAAmB,CAAC;gBAC/B,KAAK,EAAG,YAAY,CAAC,IAA2B,IAAI,WAAW;gBAC/D,OAAO,EAAG,YAAY,CAAC,OAA8B,IAAI,OAAO;gBAChE,WAAW,EAAE,YAAY,CAAC,WAAiC;gBAC3D,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,eAAe;gBACzB,MAAM,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;aAC3D,CAAC,CAAA;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,IAAI,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAA;YAChD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAA;IAC1F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,gDAAiD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;IACvF,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AppRef, BootstrapContext } from '../../bootstrap-context';
2
+ export declare function wireWorkflowRoutes(ctx: BootstrapContext, appRef: AppRef): Promise<void>;
3
+ //# sourceMappingURL=wire-workflow-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-workflow-routes.d.ts","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/wire-workflow-routes.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAEvE,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiO7F"}