@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,408 @@
1
+ // Phase 3d: Wire command callables + relational query + QueryService.
2
+ import { buildDrizzleRelations, DrizzleRelationalQuery, generateIntraModuleRelations, generateLinkRelations, } from '@mantajs/adapter-database-pg';
3
+ import { getRegisteredLinks, InMemoryQueueAdapter, MantaError, parseDmlEntity, QueryService, toCamel, WorkflowManager, } from '@mantajs/core';
4
+ import { entityToTableKey, isDmlEntity } from '../../bootstrap-helpers';
5
+ export async function wireCommands(ctx, appRef) {
6
+ const { logger, db, infraMap, repoFactory, builder, resources, doImport } = ctx;
7
+ const generatedTables = ctx.generatedTables;
8
+ const entityCommandRegistry = ctx.entityCommandRegistry;
9
+ const explicitCommandNames = ctx.explicitCommandNames;
10
+ const queryExtensions = ctx.queryExtensions;
11
+ const userDefinitions = ctx.userDefinitions;
12
+ // [11b] Wire command callables (with WorkflowManager — uses deferred appRef)
13
+ const cmdRegistry = builder.getCommandRegistry();
14
+ ctx.cmdRegistry = cmdRegistry;
15
+ if (cmdRegistry) {
16
+ const wfStorageInstance = infraMap.get('IWorkflowStoragePort');
17
+ const wfStoreInstance = infraMap.get('IWorkflowStorePort');
18
+ const progressChannelInstance = infraMap.get('IProgressChannelPort');
19
+ // Queue adapter for serverless continuations (WORKFLOW_PROGRESS addendum —
20
+ // ctx.yield). Resolution order:
21
+ // 1. Explicit `IQueuePort` registered by init-infra (future QStash wiring)
22
+ // 2. `InMemoryQueueAdapter` fallback — fire-and-forget fetch to self,
23
+ // fine for a long-running Node host, NOT for serverless cold-starts
24
+ // (messages are lost if the process dies).
25
+ // Stash it on ctx so wire-workflow-routes.ts can re-use the same adapter
26
+ // for the `/resume` handler.
27
+ // Queue resolution:
28
+ // 1. explicit IQueuePort registered by init-infra (e.g. user-wired)
29
+ // 2. QStash if QSTASH_TOKEN + QSTASH_URL are set (prod / Vercel Upstash integration)
30
+ // 3. InMemoryQueueAdapter fallback (dev / long-running Node)
31
+ let queueInstance = infraMap.get('IQueuePort');
32
+ if (!queueInstance && process.env.QSTASH_TOKEN && process.env.QSTASH_URL) {
33
+ try {
34
+ const { QStashQueueAdapter } = await import('@mantajs/adapter-queue-qstash');
35
+ queueInstance = new QStashQueueAdapter({
36
+ url: process.env.QSTASH_URL,
37
+ token: process.env.QSTASH_TOKEN,
38
+ logger: {
39
+ warn: (m) => logger.warn(m),
40
+ error: (m, err) => logger.error(m, err),
41
+ },
42
+ });
43
+ logger.info('[workflow] Queue adapter: QStash (Upstash)');
44
+ }
45
+ catch (err) {
46
+ logger.warn(`[workflow] QStash adapter failed to load: ${err.message} — falling back to in-memory`);
47
+ }
48
+ }
49
+ if (!queueInstance) {
50
+ queueInstance = new InMemoryQueueAdapter({
51
+ logger: {
52
+ warn: (m) => logger.warn(m),
53
+ error: (m, err) => logger.error(m, err),
54
+ },
55
+ });
56
+ logger.info('[workflow] Queue adapter: InMemoryQueueAdapter (dev / no QStash configured)');
57
+ }
58
+ const baseUrl = process.env.MANTA_BASE_URL ?? (process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : '');
59
+ const resumeEndpoint = (runId) => `${baseUrl}/api/admin/_workflow/${runId}/resume`;
60
+ // Serverless time budget: on Vercel Hobby a function caps at 10s, so we
61
+ // give steps 7s before they should yield (3s safety for TCP + response).
62
+ // Detect Vercel via env; leave undefined otherwise so long-running Node
63
+ // hosts don't force steps to yield unnecessarily.
64
+ const stepBudgetMs = process.env.VERCEL ? 7_000 : undefined;
65
+ ctx.workflowQueue = queueInstance;
66
+ ctx.workflowResumeEndpoint = resumeEndpoint;
67
+ ctx.workflowStepBudgetMs = stepBudgetMs;
68
+ // 300ms short-circuit: the callable awaits the workflow up to 300ms. If it
69
+ // finishes fast → return the inline envelope. Otherwise → return
70
+ // { runId, status: 'running' } immediately while the workflow continues in
71
+ // the background. See WORKFLOW_PROGRESS.md §6.1.
72
+ const SHORT_CIRCUIT_MS = 300;
73
+ for (const entry of cmdRegistry.list()) {
74
+ builder.registerCommandCallable(entry.name, async (input, httpCtx) => {
75
+ let parsed;
76
+ try {
77
+ parsed = entry.inputSchema.parse(input);
78
+ }
79
+ catch (err) {
80
+ throw MantaError.wrap(err, `command:${entry.name}`);
81
+ }
82
+ // Pre-generate the runId so we can surface it in the async branch
83
+ // without awaiting the full run. WorkflowRunOptions already supports
84
+ // a caller-supplied transactionId.
85
+ const runId = `tx_${crypto.randomUUID().replace(/-/g, '')}`;
86
+ const wm = new WorkflowManager(appRef.current, {
87
+ storage: wfStorageInstance,
88
+ store: wfStoreInstance,
89
+ progressChannel: progressChannelInstance,
90
+ queue: queueInstance,
91
+ resumeEndpoint,
92
+ stepBudgetMs,
93
+ });
94
+ wm.register({ name: `cmd:${entry.name}`, fn: entry.workflow });
95
+ const runPromise = wm.run(`cmd:${entry.name}`, {
96
+ input: parsed,
97
+ transactionId: runId,
98
+ ...(httpCtx ? { __httpCtx: httpCtx } : {}),
99
+ });
100
+ // Race the workflow against a 300ms timer. The host process stays
101
+ // alive (nitro / node long-running) so the background continuation
102
+ // can finish after the callable returns.
103
+ let timer = null;
104
+ const raced = await Promise.race([
105
+ runPromise
106
+ .then((value) => ({ __kind: 'inline', value }))
107
+ .catch((err) => {
108
+ return { __kind: 'error', err };
109
+ }),
110
+ new Promise((resolve) => {
111
+ timer = setTimeout(() => resolve({ __kind: 'async' }), SHORT_CIRCUIT_MS);
112
+ }),
113
+ ]);
114
+ if (timer)
115
+ clearTimeout(timer);
116
+ if (raced.__kind === 'error') {
117
+ throw MantaError.wrap(raced.err, `command:${entry.name}`);
118
+ }
119
+ if (raced.__kind === 'inline') {
120
+ return { status: 'succeeded', result: raced.value.result, runId };
121
+ }
122
+ // Timer won — schedule background continuation. Errors are logged
123
+ // (terminal state is already written to the durable store by
124
+ // WorkflowManager). Swallow here to avoid unhandled rejections.
125
+ runPromise.catch((err) => {
126
+ try {
127
+ logger.warn(`[workflow:cmd:${entry.name}] background run failed: ${err?.message ?? err}`);
128
+ }
129
+ catch {
130
+ /* logger may be disposed on shutdown */
131
+ }
132
+ });
133
+ return { runId, status: 'running' };
134
+ });
135
+ }
136
+ logger.info(`Commands: ${cmdRegistry.list().length} registered`);
137
+ }
138
+ // [11c] Wire entity command callables — direct service call, NO WorkflowManager
139
+ let entityCmdCount = 0;
140
+ for (const [cmdName, entityCmd] of entityCommandRegistry.entries()) {
141
+ if (explicitCommandNames.has(cmdName)) {
142
+ logger.info(` Entity command skipped (overridden): ${cmdName}`);
143
+ continue;
144
+ }
145
+ builder.registerCommandCallable(cmdName, async (input, _httpCtx) => {
146
+ const parsed = entityCmd.input.parse(input);
147
+ try {
148
+ return await entityCmd.workflow(parsed, {
149
+ app: appRef.current,
150
+ });
151
+ }
152
+ catch (err) {
153
+ throw MantaError.wrap(err, `entity-command:${cmdName}`);
154
+ }
155
+ });
156
+ entityCmdCount++;
157
+ }
158
+ if (entityCmdCount > 0) {
159
+ logger.info(`Entity commands: ${entityCmdCount} auto-generated`);
160
+ }
161
+ // [12] Wire up IRelationalQueryPort for native SQL JOINs. Both DrizzlePgAdapter
162
+ // (local dev) and NeonDrizzleAdapter (Vercel prod) expose `setSchema()` — the
163
+ // duck-typing guard keeps @mantajs/cli free of a hard dep on adapter-database-neon.
164
+ try {
165
+ if (db && typeof db.setSchema === 'function') {
166
+ let frameworkTables = {};
167
+ try {
168
+ frameworkTables = await import('@mantajs/core/db');
169
+ }
170
+ catch {
171
+ /* no db schema exports */
172
+ }
173
+ const allTables = { ...frameworkTables };
174
+ const seenTableObjects = new Map();
175
+ for (const [key, table] of generatedTables) {
176
+ const existing = seenTableObjects.get(table);
177
+ if (existing) {
178
+ if (!key.includes('_') && existing.includes('_')) {
179
+ delete allTables[existing];
180
+ allTables[key] = table;
181
+ seenTableObjects.set(table, key);
182
+ }
183
+ }
184
+ else {
185
+ allTables[key] = table;
186
+ seenTableObjects.set(table, key);
187
+ }
188
+ }
189
+ const entityInputs = [];
190
+ for (const modInfo of resources.modules) {
191
+ for (const entity of modInfo.entities) {
192
+ try {
193
+ const mod = await doImport(entity.modelPath);
194
+ for (const [_key, value] of Object.entries(mod)) {
195
+ if (isDmlEntity(value) && typeof value.getOptions === 'function') {
196
+ const opts = value.getOptions();
197
+ if (opts.external === true)
198
+ continue;
199
+ const parsed = parseDmlEntity(value);
200
+ if (parsed.relations && parsed.relations.length > 0) {
201
+ entityInputs.push({
202
+ entityName: parsed.name,
203
+ tableName: `${parsed.name.toLowerCase()}s`,
204
+ relations: parsed.relations,
205
+ });
206
+ }
207
+ }
208
+ }
209
+ }
210
+ catch {
211
+ // Entity model may not export DML entities — skip silently
212
+ }
213
+ }
214
+ }
215
+ const intraDefs = generateIntraModuleRelations(entityInputs);
216
+ const linkDefs = generateLinkRelations(getRegisteredLinks());
217
+ const allDefs = [...intraDefs, ...linkDefs];
218
+ const drizzleRelations = buildDrizzleRelations(allDefs, allTables);
219
+ const fullSchema = { ...allTables, ...drizzleRelations };
220
+ db.setSchema(fullSchema);
221
+ // Build relation alias map
222
+ const getLinks2 = getRegisteredLinks;
223
+ const relationAliases = new Map();
224
+ const toCamelAlias = (s) => s.replace(/[_-]([a-z])/g, (_, c) => c.toUpperCase());
225
+ const pluralizeAlias = (s) => {
226
+ if (s.endsWith('s') || s.endsWith('x') || s.endsWith('ch') || s.endsWith('sh'))
227
+ return `${s}es`;
228
+ if (s.endsWith('y') && !/[aeiou]y$/i.test(s))
229
+ return `${s.slice(0, -1)}ies`;
230
+ return `${s}s`;
231
+ };
232
+ for (const link of getLinks2()) {
233
+ const leftCamel = link.leftEntity;
234
+ const rightCamel = link.rightEntity;
235
+ const pivotCamel = toCamelAlias(link.tableName);
236
+ const isManyToMany = link.cardinality === 'M:N';
237
+ const extraCols = link.extraColumns ? Object.keys(link.extraColumns) : undefined;
238
+ const leftNorm = leftCamel.replace(/[_\s-]/g, '').toLowerCase();
239
+ const rightNorm = rightCamel.replace(/[_\s-]/g, '').toLowerCase();
240
+ const leftIsMany = isManyToMany || link.cascadeRight;
241
+ const rightIsMany = isManyToMany || link.cascadeLeft;
242
+ const leftAliases = relationAliases.get(leftNorm) ?? {};
243
+ const rightAliasName = rightIsMany ? pluralizeAlias(rightCamel) : rightCamel;
244
+ const rightAliasEntry = { pivot: pivotCamel, through: rightCamel, extraColumns: extraCols };
245
+ leftAliases[rightAliasName] = rightAliasEntry;
246
+ relationAliases.set(leftNorm, leftAliases);
247
+ const rightAliases = relationAliases.get(rightNorm) ?? {};
248
+ const leftAliasName = leftIsMany ? pluralizeAlias(leftCamel) : leftCamel;
249
+ const leftAliasEntry = { pivot: pivotCamel, through: leftCamel, extraColumns: extraCols };
250
+ rightAliases[leftAliasName] = leftAliasEntry;
251
+ relationAliases.set(rightNorm, rightAliases);
252
+ }
253
+ logger.info(`Relation aliases: ${[...relationAliases.entries()].map(([e, a]) => `${e}: ${JSON.stringify(a)}`).join(', ')}`);
254
+ const rqAdapter = new DrizzleRelationalQuery(db.getClient(), {
255
+ relationAliases,
256
+ logger,
257
+ });
258
+ builder.registerInfra('IRelationalQueryPort', rqAdapter);
259
+ logger.info(`IRelationalQueryPort → DrizzleRelationalQuery (${allDefs.length} relations, native SQL JOINs)`);
260
+ }
261
+ }
262
+ catch (err) {
263
+ logger.warn(`Failed to wire IRelationalQueryPort: ${err instanceof Error ? err.message : String(err)}`);
264
+ }
265
+ // [12e] Create and register QueryService for defineQueryGraph() support
266
+ try {
267
+ const queryService = new QueryService();
268
+ // Wire relational query for native SQL JOINs
269
+ try {
270
+ // biome-ignore lint/suspicious/noExplicitAny: accessing private builder state
271
+ const rqPort = builder._extraResolve?.get('IRelationalQueryPort');
272
+ if (rqPort) {
273
+ queryService.registerRelationalQuery(rqPort);
274
+ logger.info('QueryService: relational query wired for dotted field paths');
275
+ }
276
+ }
277
+ catch {
278
+ /* IRelationalQueryPort not available */
279
+ }
280
+ // Register a resolver per module entity
281
+ for (const mod of resources.modules) {
282
+ for (const entity of mod.entities) {
283
+ const toCamelName = toCamel;
284
+ const entityPascal = entity.name
285
+ .split('-')
286
+ .map((s) => s.charAt(0).toUpperCase() + s.slice(1))
287
+ .join('');
288
+ const entityCamel = toCamelName(entityPascal);
289
+ const repoKey = entityToTableKey(entityPascal);
290
+ queryService.registerResolver(entityCamel, async (config) => {
291
+ try {
292
+ const repo = repoFactory.createRepository(repoKey);
293
+ const order = config.sort
294
+ ? Object.fromEntries(Object.entries(config.sort).map(([k, v]) => [k, v.toUpperCase()]))
295
+ : undefined;
296
+ return repo.find({
297
+ where: config.filters,
298
+ limit: config.pagination?.limit,
299
+ offset: config.pagination?.offset,
300
+ order: order,
301
+ });
302
+ }
303
+ catch {
304
+ return [];
305
+ }
306
+ });
307
+ // Extract searchable fields from DML schema
308
+ try {
309
+ const mod = await doImport(entity.modelPath);
310
+ const dmlEntity = Object.values(mod).find((v) => v?.name && v?.schema);
311
+ if (dmlEntity?.schema) {
312
+ const searchableFields = [];
313
+ for (const [key, prop] of Object.entries(dmlEntity.schema)) {
314
+ const meta = typeof prop.parse === 'function' ? prop.parse(key) : null;
315
+ if (meta?.searchable)
316
+ searchableFields.push(key);
317
+ }
318
+ if (searchableFields.length > 0) {
319
+ queryService.registerSearchableFields(entityCamel, searchableFields);
320
+ }
321
+ }
322
+ }
323
+ catch {
324
+ /* schema extraction failed, searchable not available for this entity */
325
+ }
326
+ }
327
+ }
328
+ // Register resolvers for link/pivot tables
329
+ for (const link of [...resources.links, ...resources.modules.flatMap((m) => m.intraLinks)]) {
330
+ try {
331
+ const mod = await doImport(link.path);
332
+ // biome-ignore lint/suspicious/noExplicitAny: link def shape varies
333
+ const linkDef = (mod.default ?? mod);
334
+ if (linkDef?.tableName) {
335
+ const pivotName = linkDef.tableName.replace(/-/g, '_');
336
+ queryService.registerResolver(pivotName, async (config) => {
337
+ try {
338
+ const repo = repoFactory.createRepository(pivotName);
339
+ return repo.find({
340
+ where: config.filters,
341
+ limit: config.pagination?.limit,
342
+ offset: config.pagination?.offset,
343
+ });
344
+ }
345
+ catch {
346
+ return [];
347
+ }
348
+ });
349
+ }
350
+ }
351
+ catch {
352
+ /* link not importable */
353
+ }
354
+ }
355
+ // Register resolvers for user models
356
+ for (const userDef of userDefinitions) {
357
+ const entityLower = userDef.contextName.toLowerCase();
358
+ const tableName = `${entityLower}s`;
359
+ queryService.registerResolver(entityLower, async (config) => {
360
+ try {
361
+ const repo = repoFactory.createRepository(tableName);
362
+ const order = config.sort
363
+ ? Object.fromEntries(Object.entries(config.sort).map(([k, v]) => [k, v.toUpperCase()]))
364
+ : undefined;
365
+ return repo.find({
366
+ where: config.filters,
367
+ limit: config.pagination?.limit,
368
+ offset: config.pagination?.offset,
369
+ order: order,
370
+ });
371
+ }
372
+ catch {
373
+ return [];
374
+ }
375
+ });
376
+ // Extract searchable fields from user model DML schema
377
+ try {
378
+ const dmlModel = userDef.def.model;
379
+ if (dmlModel?.schema) {
380
+ const searchableFields = [];
381
+ for (const [key, prop] of Object.entries(dmlModel.schema)) {
382
+ const meta = typeof prop.parse === 'function' ? prop.parse(key) : null;
383
+ if (meta?.searchable)
384
+ searchableFields.push(key);
385
+ }
386
+ if (searchableFields.length > 0) {
387
+ queryService.registerSearchableFields(entityLower, searchableFields);
388
+ logger.info(` Searchable fields for ${entityLower}: ${searchableFields.join(', ')}`);
389
+ }
390
+ }
391
+ }
392
+ catch {
393
+ /* schema extraction failed */
394
+ }
395
+ }
396
+ // Wire the query graph extensions discovered from modules/{name}/queries/*.ts
397
+ for (const ext of queryExtensions) {
398
+ queryService.registerExtension(ext);
399
+ }
400
+ builder.registerInfra('queryService', queryService);
401
+ const totalResolvers = resources.modules.reduce((n, m) => n + m.entities.length, 0) + userDefinitions.length;
402
+ logger.info(`QueryService registered (${totalResolvers} entity resolvers${queryExtensions.length > 0 ? `, ${queryExtensions.length} extension(s)` : ''})`);
403
+ }
404
+ catch (err) {
405
+ logger.warn(`Failed to create QueryService: ${err instanceof Error ? err.message : String(err)}`);
406
+ }
407
+ }
408
+ //# sourceMappingURL=wire-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-commands.js","sourceRoot":"","sources":["../../../../src/bootstrap/phases/assemble/wire-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AppRef, BootstrapContext } from '../bootstrap-context';
2
+ export declare function assembleModules(ctx: BootstrapContext, appRef: AppRef): Promise<void>;
3
+ //# sourceMappingURL=assemble-modules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assemble-modules.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/phases/assemble-modules.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAGpE,wBAAsB,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY1F"}
@@ -0,0 +1,14 @@
1
+ // Phase 3: Assemble modules — thin orchestrator.
2
+ // Delegates to sub-phases in order: load modules → load links → load resources → wire commands.
3
+ import { loadLinks, loadModules, loadResources, wireCommands } from './assemble';
4
+ export async function assembleModules(ctx, appRef) {
5
+ // [7] DML entity discovery, table generation, service instantiation.
6
+ await loadModules(ctx, appRef);
7
+ // [7a-7g] Links, pivot tables, entity/link command generation.
8
+ await loadLinks(ctx, appRef);
9
+ // [8-12d] Workflows, subscribers, jobs, agents, commands, queries, user definitions.
10
+ await loadResources(ctx, appRef);
11
+ // [11b-12e] Command callables, relational query, QueryService.
12
+ await wireCommands(ctx, appRef);
13
+ }
14
+ //# sourceMappingURL=assemble-modules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assemble-modules.js","sourceRoot":"","sources":["../../../src/bootstrap/phases/assemble-modules.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,gGAAgG;AAGhG,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEhF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAqB,EAAE,MAAc;IACzE,qEAAqE;IACrE,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAE9B,+DAA+D;IAC/D,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAE5B,qFAAqF;IACrF,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAEhC,+DAA+D;IAC/D,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;AACjC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AppRef, BootstrapContext } from '../bootstrap-context';
2
+ export declare function buildApp(ctx: BootstrapContext, appRef: AppRef): Promise<void>;
3
+ //# sourceMappingURL=build-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-app.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/phases/build-app.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEpE,wBAAsB,QAAQ,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAanF"}
@@ -0,0 +1,15 @@
1
+ // Phase 4: Build the final immutable MantaApp and wire extension context.
2
+ export async function buildApp(ctx, appRef) {
3
+ const { builder, logger } = ctx;
4
+ // Build the final immutable app
5
+ appRef.current = builder.build();
6
+ // Wire the extension context on the QueryService (so extension resolvers can access `app`).
7
+ try {
8
+ const qs = appRef.current.resolve('queryService');
9
+ qs.setExtensionContext(appRef.current, logger);
10
+ }
11
+ catch {
12
+ /* no queryService or no extensions */
13
+ }
14
+ }
15
+ //# sourceMappingURL=build-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-app.js","sourceRoot":"","sources":["../../../src/bootstrap/phases/build-app.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAI1E,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAqB,EAAE,MAAc;IAClE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAE/B,gCAAgC;IAChC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA;IAEhC,4FAA4F;IAC5F,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,CAAC,OAAQ,CAAC,OAAO,CAAuC,cAAc,CAAC,CAAA;QACxF,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAQ,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BootstrapContext } from '../bootstrap-context';
2
+ export declare function discoverResourcesPhase(ctx: BootstrapContext): Promise<void>;
3
+ //# sourceMappingURL=discover-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover-resources.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/phases/discover-resources.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCjF"}
@@ -0,0 +1,60 @@
1
+ // Phase 2: Discover resources — app + plugins (Nuxt Layers style).
2
+ export async function discoverResourcesPhase(ctx) {
3
+ const { logger, options, config, cwd } = ctx;
4
+ // When preloadedResources is provided (from build-time manifest), skip ALL filesystem
5
+ // discovery and plugin resolution.
6
+ let resources;
7
+ let resolvedPlugins = [];
8
+ if (options.preloadedResources) {
9
+ logger.info('Using pre-loaded resources (build-time manifest)');
10
+ resources = options.preloadedResources;
11
+ // Merge plugin resources into the main resources (modules, commands, queries, etc.)
12
+ if (options.preloadedPluginResources?.length) {
13
+ resources = mergePreloadedResources([...options.preloadedPluginResources.map((p) => p.resources), resources]);
14
+ logger.info(` Plugins (preloaded): ${options.preloadedPluginResources.map((p) => p.name).join(', ')}`);
15
+ }
16
+ }
17
+ else {
18
+ logger.info('Discovering resources...');
19
+ const { discoverResources } = await import('../../resource-loader');
20
+ const { resolvePlugins } = await import('../../plugins/resolve-plugins');
21
+ const { mergePluginResources } = await import('../../plugins/merge-resources');
22
+ resolvedPlugins = resolvePlugins(config, cwd);
23
+ if (resolvedPlugins.length > 0) {
24
+ logger.info(` Plugins: ${resolvedPlugins.map((p) => p.name).join(', ')}`);
25
+ }
26
+ const appResources = await discoverResources(cwd);
27
+ resources = await mergePluginResources(resolvedPlugins, appResources);
28
+ }
29
+ ctx.resources = resources;
30
+ ctx.resolvedPlugins = resolvedPlugins;
31
+ // [6b] Pre-load table generation utilities
32
+ const { generatePgTableFromDml, generateLinkPgTable } = await import('@mantajs/adapter-database-pg');
33
+ ctx.generatePgTableFromDml = generatePgTableFromDml;
34
+ ctx.generateLinkPgTable = generateLinkPgTable;
35
+ }
36
+ function mergePreloadedResources(layers) {
37
+ return {
38
+ modules: deduplicateBy(layers.flatMap((l) => l.modules), (m) => m.name),
39
+ subscribers: deduplicateBy(layers.flatMap((l) => l.subscribers), (s) => s.id),
40
+ workflows: deduplicateBy(layers.flatMap((l) => l.workflows), (w) => w.id),
41
+ jobs: deduplicateBy(layers.flatMap((l) => l.jobs), (j) => j.id),
42
+ links: deduplicateBy(layers.flatMap((l) => l.links), (l) => l.id),
43
+ commands: deduplicateBy(layers.flatMap((l) => l.commands), (c) => `${c.context ?? ''}:${c.id}`),
44
+ queries: deduplicateBy(layers.flatMap((l) => l.queries), (q) => `${q.context}:${q.id}`),
45
+ users: deduplicateBy(layers.flatMap((l) => l.users), (u) => u.contextName),
46
+ contexts: deduplicateBy(layers.flatMap((l) => l.contexts), (c) => c.id),
47
+ agents: deduplicateBy(layers.flatMap((l) => l.agents), (a) => a.id),
48
+ spas: deduplicateBy(layers.flatMap((l) => l.spas), (s) => s.name),
49
+ contextMiddlewares: deduplicateBy(layers.flatMap((l) => l.contextMiddlewares), (m) => m.context),
50
+ middlewares: layers.reduceRight((acc, layer) => acc ?? layer.middlewares, null),
51
+ };
52
+ }
53
+ function deduplicateBy(items, keyFn) {
54
+ const map = new Map();
55
+ for (const item of items) {
56
+ map.set(keyFn(item), item);
57
+ }
58
+ return Array.from(map.values());
59
+ }
60
+ //# sourceMappingURL=discover-resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover-resources.js","sourceRoot":"","sources":["../../../src/bootstrap/phases/discover-resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { assembleModules } from './assemble-modules';
2
+ export { buildApp } from './build-app';
3
+ export { discoverResourcesPhase } from './discover-resources';
4
+ export { initializeInfra } from './init-infra';
5
+ export { seedDevUsers } from './seed-dev-users';
6
+ export { wireHttpEndpoints } from './wire-http';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/phases/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,7 @@
1
+ export { assembleModules } from './assemble-modules';
2
+ export { buildApp } from './build-app';
3
+ export { discoverResourcesPhase } from './discover-resources';
4
+ export { initializeInfra } from './init-infra';
5
+ export { seedDevUsers } from './seed-dev-users';
6
+ export { wireHttpEndpoints } from './wire-http';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bootstrap/phases/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { AppRef, BootstrapContext } from '../bootstrap-context';
2
+ export declare function initializeInfra(ctx: BootstrapContext, _appRef: AppRef): Promise<void>;
3
+ //# sourceMappingURL=init-infra.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-infra.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/phases/init-infra.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AA6BpE,wBAAsB,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiI3F"}