@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,373 @@
1
+ // bootstrap-helpers.ts — Pure helper functions extracted from bootstrap-app.ts
2
+ // These functions are standalone (explicit params, no closures over bootstrap locals).
3
+ export function isDmlEntity(value) {
4
+ return (typeof value === 'object' &&
5
+ value !== null &&
6
+ 'name' in value &&
7
+ 'schema' in value &&
8
+ typeof value.name === 'string');
9
+ }
10
+ // ── Service class introspection type guard ────────────────────────
11
+ export function hasModelObjects(cls) {
12
+ return typeof cls === 'function' && '$modelObjects' in cls;
13
+ }
14
+ // ====================================================================
15
+ // Helpers (internal)
16
+ // ====================================================================
17
+ /**
18
+ * Entity name → table export name convention.
19
+ * Product → products, InventoryItem → inventoryItems
20
+ */
21
+ export function entityToTableKey(entityName) {
22
+ const name = entityName.charAt(0).toLowerCase() + entityName.slice(1);
23
+ if (name.endsWith('s') || name.endsWith('x') || name.endsWith('ch') || name.endsWith('sh'))
24
+ return `${name}es`;
25
+ if (name.endsWith('y') && !/[aeiou]y$/i.test(name))
26
+ return `${name.slice(0, -1)}ies`;
27
+ return `${name}s`;
28
+ }
29
+ export function tryInstantiateService(ServiceClass, infraMap, repoFactory) {
30
+ try {
31
+ // Detect createService() classes — they have $modelObjects set by the framework
32
+ const modelObjects = hasModelObjects(ServiceClass) ? ServiceClass.$modelObjects : undefined;
33
+ if (modelObjects) {
34
+ const firstEntry = Object.entries(modelObjects)[0];
35
+ if (firstEntry) {
36
+ const entityName = isDmlEntity(firstEntry[1]) ? firstEntry[1].name : firstEntry[0];
37
+ try {
38
+ const repo = repoFactory.createRepository(entityToTableKey(entityName));
39
+ return new ServiceClass({ baseRepository: repo });
40
+ }
41
+ catch {
42
+ // Table not registered — fall through to other instantiation strategies
43
+ }
44
+ }
45
+ }
46
+ if (ServiceClass.length === 0)
47
+ return new ServiceClass();
48
+ const name = ServiceClass.name || '';
49
+ if (name === 'FileService' || name === 'FileModuleService') {
50
+ const file = infraMap.get('IFilePort');
51
+ if (file)
52
+ return new ServiceClass(file);
53
+ }
54
+ const portKeys = ['IFilePort', 'IDatabasePort', 'ILoggerPort', 'IEventBusPort', 'ICachePort'];
55
+ for (const key of portKeys) {
56
+ const port = infraMap.get(key);
57
+ if (port) {
58
+ try {
59
+ return new ServiceClass(port);
60
+ }
61
+ catch { }
62
+ }
63
+ }
64
+ return null;
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ /**
71
+ * Generate .manta/types.ts — module augmentation for typed step proxy.
72
+ * Scans discovered modules, finds DML entities, writes the type file.
73
+ */
74
+ export async function generateMantaTypes(cwd, modules, doImport, logger) {
75
+ const { existsSync, mkdirSync, writeFileSync } = await import('node:fs');
76
+ const { resolve, relative } = await import('node:path');
77
+ const mantaDir = resolve(cwd, '.manta', 'types');
78
+ if (!existsSync(mantaDir))
79
+ mkdirSync(mantaDir, { recursive: true });
80
+ // Collect entity info: module name → { entityExportName, entityName, relativePath }
81
+ const entries = [];
82
+ for (const modInfo of modules) {
83
+ for (const entity of modInfo.entities) {
84
+ try {
85
+ const mod = await doImport(entity.modelPath);
86
+ for (const [exportName, value] of Object.entries(mod)) {
87
+ if (isDmlEntity(value) && typeof value.getOptions === 'function') {
88
+ entries.push({
89
+ moduleName: modInfo.name,
90
+ entityExportName: exportName,
91
+ entityName: value.name,
92
+ modulePath: entity.modelPath,
93
+ });
94
+ }
95
+ }
96
+ }
97
+ catch {
98
+ // Entity model may not export DML entities
99
+ }
100
+ }
101
+ }
102
+ if (entries.length === 0)
103
+ return;
104
+ // Build the type file
105
+ const lines = [
106
+ '// Auto-generated by manta dev — DO NOT EDIT',
107
+ '// This file provides typed step.product.create(), step.inventoryItem.create(), etc.',
108
+ '// Regenerated on every boot when modules change.',
109
+ '',
110
+ ];
111
+ // Import statements
112
+ for (const entry of entries) {
113
+ const relPath = relative(mantaDir, entry.modulePath).replace(/\.ts$/, '');
114
+ lines.push(`import type { ${entry.entityExportName} } from '${relPath}'`);
115
+ }
116
+ lines.push('');
117
+ lines.push("declare module '@mantajs/core' {");
118
+ lines.push(' interface MantaEntities {');
119
+ for (const entry of entries) {
120
+ lines.push(` ${entry.moduleName}: typeof ${entry.entityExportName}`);
121
+ }
122
+ lines.push(' }');
123
+ lines.push('}');
124
+ lines.push('');
125
+ const typesPath = resolve(mantaDir, 'types.ts');
126
+ writeFileSync(typesPath, lines.join('\n'));
127
+ logger.info(`[codegen] .manta/types.ts generated (${entries.length} entities)`);
128
+ }
129
+ // ── Framework schema migration system ─────────────────────────────────
130
+ //
131
+ // Bump FRAMEWORK_SCHEMA_VERSION whenever `applyFrameworkDdl` changes in a way
132
+ // that requires an existing deployment to re-run DDL. Stored in the
133
+ // `manta_schema_versions` table; gates whether migrations run at boot.
134
+ // Bumping it triggers one (and only one) re-application per deployment.
135
+ export const FRAMEWORK_SCHEMA_VERSION = 1;
136
+ // Hard cap on how long migrations may run at boot. Cold-start budgets on
137
+ // serverless (Vercel) are tight — we never want framework schema work to
138
+ // be the reason a lambda times out. Caller receives a timeout error after
139
+ // this window and can decide whether to continue booting.
140
+ const MIGRATION_TIMEOUT_MS = 8_000;
141
+ // Advisory lock key — arbitrary int64 unique to Manta. `pg_advisory_xact_lock`
142
+ // serializes parallel boots so exactly one process applies migrations at a
143
+ // time. Auto-released on COMMIT/ROLLBACK.
144
+ const MIGRATION_LOCK_KEY = 0x4d414e544101n; // 'MANTA' + version byte
145
+ function withTimeout(p, ms, label) {
146
+ let timer;
147
+ const timeout = new Promise((_resolve, reject) => {
148
+ timer = setTimeout(() => reject(new Error(`${label} timed out after ${ms}ms`)), ms);
149
+ });
150
+ return Promise.race([p, timeout]).finally(() => {
151
+ if (timer)
152
+ clearTimeout(timer);
153
+ });
154
+ }
155
+ /**
156
+ * Ensure Manta's framework-internal schema is at FRAMEWORK_SCHEMA_VERSION.
157
+ *
158
+ * Safe to call unconditionally on every boot (dev, prod, serverless). A
159
+ * Postgres advisory transaction lock serializes concurrent boots, and a
160
+ * version table means only the first boot of a new deploy runs DDL;
161
+ * subsequent boots read a single row and return.
162
+ *
163
+ * The whole operation is bounded by `MIGRATION_TIMEOUT_MS` so a misbehaving
164
+ * pooler or lock never blocks a serverless cold start indefinitely. The
165
+ * caller is expected to try/catch around this call and continue booting on
166
+ * error — framework-dependent endpoints will fail loudly on first access,
167
+ * which is strictly better than taking the whole app down.
168
+ *
169
+ * Framework tables are Manta-owned; the user never writes to them. That's
170
+ * why we manage them here rather than via `manta db:*`, which is the
171
+ * app-level migration surface.
172
+ */
173
+ export async function ensureFrameworkSchema(sql, logger) {
174
+ const pg = sql;
175
+ // 1. Meta table — CREATE IF NOT EXISTS is atomic in Postgres; safe if
176
+ // multiple boots race here before the lock is acquired.
177
+ await withTimeout(pg `
178
+ CREATE TABLE IF NOT EXISTS manta_schema_versions (
179
+ name TEXT PRIMARY KEY,
180
+ version INTEGER NOT NULL,
181
+ applied_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
182
+ )
183
+ `, MIGRATION_TIMEOUT_MS, '[manta-schema] meta table');
184
+ // 2. Acquire lock + version-gate + apply DDL in a single transaction.
185
+ // pg_advisory_xact_lock blocks until peers release; the lock auto-releases
186
+ // at COMMIT/ROLLBACK so we don't track it ourselves.
187
+ await withTimeout(pg.begin(async (tx) => {
188
+ const txPg = tx;
189
+ await txPg `SELECT pg_advisory_xact_lock(${MIGRATION_LOCK_KEY})`;
190
+ const rows = (await txPg `
191
+ SELECT version FROM manta_schema_versions WHERE name = 'framework'
192
+ `);
193
+ const current = rows[0]?.version ?? 0;
194
+ if (current >= FRAMEWORK_SCHEMA_VERSION) {
195
+ logger.info(`[manta-schema] framework v${current} — up to date`);
196
+ return;
197
+ }
198
+ logger.info(`[manta-schema] migrating framework v${current} → v${FRAMEWORK_SCHEMA_VERSION}`);
199
+ await applyFrameworkDdl(txPg);
200
+ await txPg `
201
+ INSERT INTO manta_schema_versions (name, version)
202
+ VALUES ('framework', ${FRAMEWORK_SCHEMA_VERSION})
203
+ ON CONFLICT (name) DO UPDATE
204
+ SET version = EXCLUDED.version,
205
+ applied_at = NOW()
206
+ `;
207
+ logger.info(`[manta-schema] framework v${FRAMEWORK_SCHEMA_VERSION} applied`);
208
+ }), MIGRATION_TIMEOUT_MS, '[manta-schema] migration transaction');
209
+ }
210
+ /**
211
+ * Framework DDL — applied in version order. All statements idempotent
212
+ * (IF NOT EXISTS / IF EXISTS) so a partial failure + retry remains safe.
213
+ */
214
+ async function applyFrameworkDdl(pg) {
215
+ await pg `CREATE TABLE IF NOT EXISTS stats (key TEXT PRIMARY KEY, value INTEGER NOT NULL DEFAULT 0)`;
216
+ await pg `CREATE TABLE IF NOT EXISTS workflow_checkpoints (id SERIAL PRIMARY KEY, transaction_id TEXT NOT NULL, step_id TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'pending', data JSONB DEFAULT '{}', error TEXT, created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ DEFAULT NOW(), UNIQUE(transaction_id, step_id))`;
217
+ await pg `CREATE INDEX IF NOT EXISTS idx_wf_checkpoints_tx ON workflow_checkpoints(transaction_id)`;
218
+ await pg `CREATE TABLE IF NOT EXISTS workflow_executions (transaction_id TEXT PRIMARY KEY, workflow_name TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'running', input JSONB DEFAULT '{}', result JSONB, error TEXT, started_at TIMESTAMPTZ DEFAULT NOW(), completed_at TIMESTAMPTZ)`;
219
+ await pg `CREATE TABLE IF NOT EXISTS events (id SERIAL PRIMARY KEY, event_name TEXT NOT NULL, data JSONB DEFAULT '{}', metadata JSONB DEFAULT '{}', status TEXT NOT NULL DEFAULT 'pending', attempts INTEGER DEFAULT 0, max_attempts INTEGER DEFAULT 3, last_error TEXT, created_at TIMESTAMPTZ DEFAULT NOW(), processed_at TIMESTAMPTZ)`;
220
+ await pg `CREATE TABLE IF NOT EXISTS job_executions (id SERIAL PRIMARY KEY, job_name TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'running', result JSONB, error TEXT, duration_ms INTEGER, started_at TIMESTAMPTZ DEFAULT NOW(), completed_at TIMESTAMPTZ)`;
221
+ await pg `CREATE TABLE IF NOT EXISTS cron_heartbeats (id SERIAL PRIMARY KEY, job_name TEXT NOT NULL, message TEXT, executed_at TIMESTAMPTZ NOT NULL DEFAULT NOW())`;
222
+ }
223
+ /**
224
+ * @deprecated Use `ensureFrameworkSchema` instead. Kept as an alias so
225
+ * existing call sites (init-infra, tests, the Neon adapter
226
+ * comment) don't break.
227
+ */
228
+ export async function ensureFrameworkTables(sql, logger) {
229
+ await ensureFrameworkSchema(sql, logger);
230
+ }
231
+ /** DML type → SQL type mapping */
232
+ export const DML_TO_SQL = {
233
+ id: 'TEXT PRIMARY KEY',
234
+ text: 'TEXT',
235
+ number: 'INTEGER',
236
+ boolean: 'BOOLEAN',
237
+ float: 'REAL',
238
+ bigNumber: 'NUMERIC',
239
+ serial: 'SERIAL',
240
+ dateTime: 'TIMESTAMPTZ',
241
+ json: 'JSONB',
242
+ enum: 'TEXT',
243
+ array: 'JSONB',
244
+ };
245
+ /**
246
+ * Auto-create tables from discovered DML entities + links.
247
+ * No hardcoded application tables — everything comes from defineModel() and defineLink().
248
+ */
249
+ export async function ensureEntityTables(sql, entities, links, logger) {
250
+ const pg = sql;
251
+ for (const entity of entities) {
252
+ const _tableName = entityToTableKey(entity.name)
253
+ .replace(/([A-Z])/g, '_$1')
254
+ .toLowerCase()
255
+ .replace(/^_/, '');
256
+ // Convert camelCase to snake_case for table name
257
+ const snakeTable = entity.name.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();
258
+ const finalTable = snakeTable.endsWith('s') || snakeTable.endsWith('x') || snakeTable.endsWith('ch') || snakeTable.endsWith('sh')
259
+ ? `${snakeTable}es`
260
+ : snakeTable.endsWith('y') && !/[aeiou]y$/i.test(snakeTable)
261
+ ? `${snakeTable.slice(0, -1)}ies`
262
+ : `${snakeTable}s`;
263
+ const columns = ['id TEXT PRIMARY KEY'];
264
+ for (const [fieldName, value] of Object.entries(entity.schema)) {
265
+ const v = value;
266
+ if (v?.__dmlRelation === true)
267
+ continue;
268
+ if (typeof v?.parse !== 'function')
269
+ continue;
270
+ const meta = v.parse(fieldName);
271
+ if (meta.computed)
272
+ continue;
273
+ const dataType = meta.dataType;
274
+ const sqlType = DML_TO_SQL[dataType?.name ?? ''] ?? 'TEXT';
275
+ const notNull = !meta.nullable ? ' NOT NULL' : '';
276
+ let defaultClause = '';
277
+ if (meta.defaultValue !== undefined) {
278
+ if (typeof meta.defaultValue === 'string') {
279
+ const escaped = meta.defaultValue.replace(/'/g, "''");
280
+ defaultClause = ` DEFAULT '${escaped}'`;
281
+ }
282
+ else {
283
+ defaultClause = ` DEFAULT ${meta.defaultValue}`;
284
+ }
285
+ }
286
+ const uniqueClause = meta.unique ? ' UNIQUE' : '';
287
+ columns.push(`${fieldName} ${sqlType}${notNull}${defaultClause}${uniqueClause}`);
288
+ }
289
+ // Implicit columns — only add if not already defined by the schema
290
+ const definedColumns = new Set(columns.map((c) => c.split(' ')[0].toLowerCase()));
291
+ if (!definedColumns.has('metadata'))
292
+ columns.push("metadata JSONB DEFAULT '{}'");
293
+ if (!definedColumns.has('created_at'))
294
+ columns.push('created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()');
295
+ if (!definedColumns.has('updated_at'))
296
+ columns.push('updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()');
297
+ if (!definedColumns.has('deleted_at'))
298
+ columns.push('deleted_at TIMESTAMPTZ');
299
+ const ddl = `CREATE TABLE IF NOT EXISTS ${finalTable} (${columns.join(', ')})`;
300
+ try {
301
+ await pg.unsafe(ddl);
302
+ logger.info(` Table: ${finalTable} (auto-generated from ${entity.name})`);
303
+ }
304
+ catch (err) {
305
+ // Table may already exist with different schema — skip
306
+ logger.warn(` Table ${finalTable}: ${err.message}`);
307
+ }
308
+ // Add missing columns to existing tables (ALTER TABLE ADD COLUMN IF NOT EXISTS)
309
+ for (const col of columns) {
310
+ if (col.startsWith('id '))
311
+ continue; // skip primary key
312
+ const colName = col.split(' ')[0];
313
+ const colDef = col.slice(colName.length + 1);
314
+ try {
315
+ await pg.unsafe(`ALTER TABLE ${finalTable} ADD COLUMN IF NOT EXISTS ${colName} ${colDef}`);
316
+ }
317
+ catch {
318
+ // Column already exists or other non-critical error — skip
319
+ }
320
+ }
321
+ }
322
+ // Create link pivot tables
323
+ for (const link of links) {
324
+ // Build extra column DDL fragments from defineLink() extraColumns
325
+ const extraColDefs = [];
326
+ if (link.extraColumns) {
327
+ for (const [fieldName, fieldValue] of Object.entries(link.extraColumns)) {
328
+ const v = fieldValue;
329
+ if (typeof v?.parse === 'function') {
330
+ const meta = v.parse(fieldName);
331
+ const dataType = meta.dataType;
332
+ const sqlType = DML_TO_SQL[dataType?.name ?? ''] ?? 'TEXT';
333
+ const notNull = !meta.nullable ? ' NOT NULL' : '';
334
+ let defaultClause = '';
335
+ if (meta.defaultValue !== undefined) {
336
+ if (typeof meta.defaultValue === 'string') {
337
+ const escaped = meta.defaultValue.replace(/'/g, "''");
338
+ defaultClause = ` DEFAULT '${escaped}'`;
339
+ }
340
+ else {
341
+ defaultClause = ` DEFAULT ${meta.defaultValue}`;
342
+ }
343
+ }
344
+ extraColDefs.push(`${fieldName} ${sqlType}${notNull}${defaultClause}`);
345
+ }
346
+ else {
347
+ extraColDefs.push(`${fieldName} TEXT`);
348
+ }
349
+ }
350
+ }
351
+ const extraColSql = extraColDefs.length > 0 ? `, ${extraColDefs.join(', ')}` : '';
352
+ const ddl = `CREATE TABLE IF NOT EXISTS ${link.tableName} (id TEXT PRIMARY KEY, ${link.leftFk} TEXT NOT NULL, ${link.rightFk} TEXT NOT NULL, created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ DEFAULT NOW(), deleted_at TIMESTAMPTZ${extraColSql})`;
353
+ try {
354
+ await pg.unsafe(ddl);
355
+ logger.info(` Link table: ${link.tableName} (auto-generated)`);
356
+ }
357
+ catch (err) {
358
+ logger.warn(` Link table ${link.tableName}: ${err.message}`);
359
+ }
360
+ // Add missing extra columns to existing link tables (ALTER TABLE ADD COLUMN IF NOT EXISTS)
361
+ for (const colDef of extraColDefs) {
362
+ const colName = colDef.split(' ')[0];
363
+ const colRest = colDef.slice(colName.length + 1);
364
+ try {
365
+ await pg.unsafe(`ALTER TABLE ${link.tableName} ADD COLUMN IF NOT EXISTS ${colName} ${colRest}`);
366
+ }
367
+ catch {
368
+ // Column already exists or other non-critical error — skip
369
+ }
370
+ }
371
+ }
372
+ }
373
+ //# sourceMappingURL=bootstrap-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap-helpers.js","sourceRoot":"","sources":["../../src/bootstrap/bootstrap-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Scan src/ for modules, commands, subscribers and generate typed declarations.
3
+ *
4
+ * Generates a single file: .manta/generated.d.ts
5
+ */
6
+ export declare function generateTypesFromModules(cwd: string): Promise<void>;
7
+ //# sourceMappingURL=generate-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-types.d.ts","sourceRoot":"","sources":["../../src/bootstrap/generate-types.ts"],"names":[],"mappings":"AAoUA;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0fzE"}