@mantajs/core 0.1.7 → 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 (566) hide show
  1. package/dist/adapters/auth-mock.d.ts +44 -0
  2. package/dist/adapters/auth-mock.d.ts.map +1 -0
  3. package/dist/adapters/auth-mock.js +160 -0
  4. package/dist/adapters/auth-mock.js.map +1 -0
  5. package/dist/adapters/cache-memory.d.ts +11 -0
  6. package/dist/adapters/cache-memory.d.ts.map +1 -0
  7. package/dist/adapters/cache-memory.js +32 -0
  8. package/dist/adapters/cache-memory.js.map +1 -0
  9. package/dist/adapters/database-memory.d.ts +24 -0
  10. package/dist/adapters/database-memory.d.ts.map +1 -0
  11. package/dist/adapters/database-memory.js +141 -0
  12. package/dist/adapters/database-memory.js.map +1 -0
  13. package/dist/adapters/eventbus-memory.d.ts +37 -0
  14. package/dist/adapters/eventbus-memory.d.ts.map +1 -0
  15. package/dist/adapters/eventbus-memory.js +166 -0
  16. package/dist/adapters/eventbus-memory.js.map +1 -0
  17. package/dist/adapters/file-memory.d.ts +24 -0
  18. package/dist/adapters/file-memory.d.ts.map +1 -0
  19. package/dist/adapters/file-memory.js +77 -0
  20. package/dist/adapters/file-memory.js.map +1 -0
  21. package/dist/adapters/http-memory.d.ts +23 -0
  22. package/dist/adapters/http-memory.d.ts.map +1 -0
  23. package/dist/adapters/http-memory.js +149 -0
  24. package/dist/adapters/http-memory.js.map +1 -0
  25. package/dist/adapters/index.d.ts +14 -0
  26. package/dist/adapters/index.d.ts.map +1 -0
  27. package/dist/adapters/index.js +15 -0
  28. package/dist/adapters/index.js.map +1 -0
  29. package/dist/adapters/job-scheduler-memory.d.ts +20 -0
  30. package/dist/adapters/job-scheduler-memory.d.ts.map +1 -0
  31. package/dist/adapters/job-scheduler-memory.js +103 -0
  32. package/dist/adapters/job-scheduler-memory.js.map +1 -0
  33. package/dist/adapters/locking-memory.d.ts +20 -0
  34. package/dist/adapters/locking-memory.d.ts.map +1 -0
  35. package/dist/adapters/locking-memory.js +85 -0
  36. package/dist/adapters/locking-memory.js.map +1 -0
  37. package/dist/adapters/logger-test.d.ts +30 -0
  38. package/dist/adapters/logger-test.d.ts.map +1 -0
  39. package/dist/adapters/logger-test.js +77 -0
  40. package/dist/adapters/logger-test.js.map +1 -0
  41. package/dist/adapters/notification-memory.d.ts +27 -0
  42. package/dist/adapters/notification-memory.d.ts.map +1 -0
  43. package/dist/adapters/notification-memory.js +69 -0
  44. package/dist/adapters/notification-memory.js.map +1 -0
  45. package/dist/adapters/relational-query-memory.d.ts +47 -0
  46. package/dist/adapters/relational-query-memory.d.ts.map +1 -0
  47. package/dist/adapters/relational-query-memory.js +263 -0
  48. package/dist/adapters/relational-query-memory.js.map +1 -0
  49. package/dist/adapters/repository-factory-memory.d.ts +17 -0
  50. package/dist/adapters/repository-factory-memory.d.ts.map +1 -0
  51. package/dist/adapters/repository-factory-memory.js +32 -0
  52. package/dist/adapters/repository-factory-memory.js.map +1 -0
  53. package/dist/adapters/repository-memory.d.ts +30 -0
  54. package/dist/adapters/repository-memory.d.ts.map +1 -0
  55. package/dist/adapters/repository-memory.js +183 -0
  56. package/dist/adapters/repository-memory.js.map +1 -0
  57. package/dist/ai/index.d.ts +53 -0
  58. package/dist/ai/index.d.ts.map +1 -0
  59. package/dist/ai/index.js +48 -0
  60. package/dist/ai/index.js.map +1 -0
  61. package/dist/app/index.d.ts +97 -0
  62. package/dist/app/index.d.ts.map +1 -0
  63. package/dist/app/index.js +217 -0
  64. package/dist/app/index.js.map +1 -0
  65. package/dist/app/request-context.d.ts +35 -0
  66. package/dist/app/request-context.d.ts.map +1 -0
  67. package/dist/app/request-context.js +32 -0
  68. package/dist/app/request-context.js.map +1 -0
  69. package/dist/auth/auth-module-service.d.ts +62 -0
  70. package/dist/auth/auth-module-service.d.ts.map +1 -0
  71. package/dist/auth/auth-module-service.js +210 -0
  72. package/dist/auth/auth-module-service.js.map +1 -0
  73. package/dist/auth/index.d.ts +7 -0
  74. package/dist/auth/index.d.ts.map +1 -0
  75. package/dist/auth/index.js +5 -0
  76. package/dist/auth/index.js.map +1 -0
  77. package/dist/auth/middleware.d.ts +19 -0
  78. package/dist/auth/middleware.d.ts.map +1 -0
  79. package/dist/auth/middleware.js +61 -0
  80. package/dist/auth/middleware.js.map +1 -0
  81. package/dist/auth/models/auth-identity.d.ts +11 -0
  82. package/dist/auth/models/auth-identity.d.ts.map +1 -0
  83. package/dist/auth/models/auth-identity.js +12 -0
  84. package/dist/auth/models/auth-identity.js.map +1 -0
  85. package/dist/auth/providers/emailpass.d.ts +7 -0
  86. package/dist/auth/providers/emailpass.d.ts.map +1 -0
  87. package/dist/auth/providers/emailpass.js +94 -0
  88. package/dist/auth/providers/emailpass.js.map +1 -0
  89. package/dist/auth/providers/types.d.ts +66 -0
  90. package/dist/auth/providers/types.d.ts.map +1 -0
  91. package/dist/auth/providers/types.js +3 -0
  92. package/dist/auth/providers/types.js.map +1 -0
  93. package/dist/auth/types.d.ts +36 -0
  94. package/dist/auth/types.d.ts.map +1 -0
  95. package/dist/auth/types.js +3 -0
  96. package/dist/auth/types.js.map +1 -0
  97. package/dist/command/define-command-graph.d.ts +63 -0
  98. package/dist/command/define-command-graph.d.ts.map +1 -0
  99. package/dist/command/define-command-graph.js +80 -0
  100. package/dist/command/define-command-graph.js.map +1 -0
  101. package/dist/command/dml-to-zod.d.ts +34 -0
  102. package/dist/command/dml-to-zod.d.ts.map +1 -0
  103. package/dist/command/dml-to-zod.js +140 -0
  104. package/dist/command/dml-to-zod.js.map +1 -0
  105. package/dist/command/generate-entity-commands.d.ts +68 -0
  106. package/dist/command/generate-entity-commands.d.ts.map +1 -0
  107. package/dist/command/generate-entity-commands.js +350 -0
  108. package/dist/command/generate-entity-commands.js.map +1 -0
  109. package/dist/command/index.d.ts +54 -0
  110. package/dist/command/index.d.ts.map +1 -0
  111. package/dist/command/index.js +338 -0
  112. package/dist/command/index.js.map +1 -0
  113. package/dist/command/types.d.ts +131 -0
  114. package/dist/command/types.d.ts.map +1 -0
  115. package/dist/command/types.js +2 -0
  116. package/dist/command/types.js.map +1 -0
  117. package/dist/config/built-in-presets.d.ts +20 -0
  118. package/dist/config/built-in-presets.d.ts.map +1 -0
  119. package/dist/config/built-in-presets.js +70 -0
  120. package/dist/config/built-in-presets.js.map +1 -0
  121. package/dist/config/config-manager.d.ts +117 -0
  122. package/dist/config/config-manager.d.ts.map +1 -0
  123. package/dist/config/config-manager.js +245 -0
  124. package/dist/config/config-manager.js.map +1 -0
  125. package/dist/config/define-config.d.ts +20 -0
  126. package/dist/config/define-config.d.ts.map +1 -0
  127. package/dist/config/define-config.js +64 -0
  128. package/dist/config/define-config.js.map +1 -0
  129. package/dist/config/feature-flags.d.ts +48 -0
  130. package/dist/config/feature-flags.d.ts.map +1 -0
  131. package/dist/config/feature-flags.js +97 -0
  132. package/dist/config/feature-flags.js.map +1 -0
  133. package/dist/config/index.d.ts +9 -0
  134. package/dist/config/index.d.ts.map +1 -0
  135. package/dist/config/index.js +8 -0
  136. package/dist/config/index.js.map +1 -0
  137. package/dist/config/presets.d.ts +38 -0
  138. package/dist/config/presets.d.ts.map +1 -0
  139. package/dist/config/presets.js +29 -0
  140. package/dist/config/presets.js.map +1 -0
  141. package/dist/config/types.d.ts +707 -0
  142. package/dist/config/types.d.ts.map +1 -0
  143. package/dist/config/types.js +112 -0
  144. package/dist/config/types.js.map +1 -0
  145. package/dist/context/index.d.ts +95 -0
  146. package/dist/context/index.d.ts.map +1 -0
  147. package/dist/context/index.js +26 -0
  148. package/dist/context/index.js.map +1 -0
  149. package/dist/context/registry.d.ts +32 -0
  150. package/dist/context/registry.d.ts.map +1 -0
  151. package/dist/context/registry.js +142 -0
  152. package/dist/context/registry.js.map +1 -0
  153. package/dist/db/index.d.ts +2 -0
  154. package/dist/db/index.d.ts.map +1 -0
  155. package/dist/db/index.js +4 -0
  156. package/dist/db/index.js.map +1 -0
  157. package/dist/db/schema.d.ts +839 -0
  158. package/dist/db/schema.d.ts.map +1 -0
  159. package/dist/db/schema.js +106 -0
  160. package/dist/db/schema.js.map +1 -0
  161. package/dist/dml/entity.d.ts +132 -0
  162. package/dist/dml/entity.d.ts.map +1 -0
  163. package/dist/dml/entity.js +110 -0
  164. package/dist/dml/entity.js.map +1 -0
  165. package/dist/dml/from-zod.d.ts +13 -0
  166. package/dist/dml/from-zod.d.ts.map +1 -0
  167. package/dist/dml/from-zod.js +81 -0
  168. package/dist/dml/from-zod.js.map +1 -0
  169. package/dist/dml/generator/index.d.ts +62 -0
  170. package/dist/dml/generator/index.d.ts.map +1 -0
  171. package/dist/dml/generator/index.js +208 -0
  172. package/dist/dml/generator/index.js.map +1 -0
  173. package/dist/dml/index.d.ts +11 -0
  174. package/dist/dml/index.d.ts.map +1 -0
  175. package/dist/dml/index.js +13 -0
  176. package/dist/dml/index.js.map +1 -0
  177. package/dist/dml/infer.d.ts +36 -0
  178. package/dist/dml/infer.d.ts.map +1 -0
  179. package/dist/dml/infer.js +5 -0
  180. package/dist/dml/infer.js.map +1 -0
  181. package/dist/dml/model.d.ts +58 -0
  182. package/dist/dml/model.d.ts.map +1 -0
  183. package/dist/dml/model.js +95 -0
  184. package/dist/dml/model.js.map +1 -0
  185. package/dist/dml/modifiers.d.ts +9 -0
  186. package/dist/dml/modifiers.d.ts.map +1 -0
  187. package/dist/dml/modifiers.js +25 -0
  188. package/dist/dml/modifiers.js.map +1 -0
  189. package/dist/dml/properties/array.d.ts +7 -0
  190. package/dist/dml/properties/array.d.ts.map +1 -0
  191. package/dist/dml/properties/array.js +5 -0
  192. package/dist/dml/properties/array.js.map +1 -0
  193. package/dist/dml/properties/autoincrement.d.ts +7 -0
  194. package/dist/dml/properties/autoincrement.d.ts.map +1 -0
  195. package/dist/dml/properties/autoincrement.js +5 -0
  196. package/dist/dml/properties/autoincrement.js.map +1 -0
  197. package/dist/dml/properties/base.d.ts +124 -0
  198. package/dist/dml/properties/base.d.ts.map +1 -0
  199. package/dist/dml/properties/base.js +76 -0
  200. package/dist/dml/properties/base.js.map +1 -0
  201. package/dist/dml/properties/big-number.d.ts +7 -0
  202. package/dist/dml/properties/big-number.d.ts.map +1 -0
  203. package/dist/dml/properties/big-number.js +5 -0
  204. package/dist/dml/properties/big-number.js.map +1 -0
  205. package/dist/dml/properties/boolean.d.ts +7 -0
  206. package/dist/dml/properties/boolean.d.ts.map +1 -0
  207. package/dist/dml/properties/boolean.js +5 -0
  208. package/dist/dml/properties/boolean.js.map +1 -0
  209. package/dist/dml/properties/computed.d.ts +9 -0
  210. package/dist/dml/properties/computed.d.ts.map +1 -0
  211. package/dist/dml/properties/computed.js +22 -0
  212. package/dist/dml/properties/computed.js.map +1 -0
  213. package/dist/dml/properties/date-time.d.ts +7 -0
  214. package/dist/dml/properties/date-time.d.ts.map +1 -0
  215. package/dist/dml/properties/date-time.js +5 -0
  216. package/dist/dml/properties/date-time.js.map +1 -0
  217. package/dist/dml/properties/enum.d.ts +12 -0
  218. package/dist/dml/properties/enum.d.ts.map +1 -0
  219. package/dist/dml/properties/enum.js +14 -0
  220. package/dist/dml/properties/enum.js.map +1 -0
  221. package/dist/dml/properties/float.d.ts +7 -0
  222. package/dist/dml/properties/float.d.ts.map +1 -0
  223. package/dist/dml/properties/float.js +5 -0
  224. package/dist/dml/properties/float.js.map +1 -0
  225. package/dist/dml/properties/index.d.ts +15 -0
  226. package/dist/dml/properties/index.d.ts.map +1 -0
  227. package/dist/dml/properties/index.js +15 -0
  228. package/dist/dml/properties/index.js.map +1 -0
  229. package/dist/dml/properties/json.d.ts +7 -0
  230. package/dist/dml/properties/json.d.ts.map +1 -0
  231. package/dist/dml/properties/json.js +6 -0
  232. package/dist/dml/properties/json.js.map +1 -0
  233. package/dist/dml/properties/nullable.d.ts +23 -0
  234. package/dist/dml/properties/nullable.d.ts.map +1 -0
  235. package/dist/dml/properties/nullable.js +46 -0
  236. package/dist/dml/properties/nullable.js.map +1 -0
  237. package/dist/dml/properties/number.d.ts +10 -0
  238. package/dist/dml/properties/number.d.ts.map +1 -0
  239. package/dist/dml/properties/number.js +13 -0
  240. package/dist/dml/properties/number.js.map +1 -0
  241. package/dist/dml/properties/primary-key.d.ts +14 -0
  242. package/dist/dml/properties/primary-key.d.ts.map +1 -0
  243. package/dist/dml/properties/primary-key.js +23 -0
  244. package/dist/dml/properties/primary-key.js.map +1 -0
  245. package/dist/dml/properties/text.d.ts +15 -0
  246. package/dist/dml/properties/text.d.ts.map +1 -0
  247. package/dist/dml/properties/text.js +19 -0
  248. package/dist/dml/properties/text.js.map +1 -0
  249. package/dist/dml/relations/belongs-to.d.ts +20 -0
  250. package/dist/dml/relations/belongs-to.d.ts.map +1 -0
  251. package/dist/dml/relations/belongs-to.js +29 -0
  252. package/dist/dml/relations/belongs-to.js.map +1 -0
  253. package/dist/dml/relations/has-many.d.ts +16 -0
  254. package/dist/dml/relations/has-many.d.ts.map +1 -0
  255. package/dist/dml/relations/has-many.js +25 -0
  256. package/dist/dml/relations/has-many.js.map +1 -0
  257. package/dist/dml/relations/has-one.d.ts +26 -0
  258. package/dist/dml/relations/has-one.d.ts.map +1 -0
  259. package/dist/dml/relations/has-one.js +46 -0
  260. package/dist/dml/relations/has-one.js.map +1 -0
  261. package/dist/dml/relations/many-to-many.d.ts +9 -0
  262. package/dist/dml/relations/many-to-many.d.ts.map +1 -0
  263. package/dist/dml/relations/many-to-many.js +11 -0
  264. package/dist/dml/relations/many-to-many.js.map +1 -0
  265. package/dist/errors/manta-error.d.ts +68 -0
  266. package/dist/errors/manta-error.d.ts.map +1 -0
  267. package/dist/errors/manta-error.js +80 -0
  268. package/dist/errors/manta-error.js.map +1 -0
  269. package/dist/events/index.d.ts +3 -0
  270. package/dist/events/index.d.ts.map +1 -0
  271. package/dist/events/index.js +3 -0
  272. package/dist/events/index.js.map +1 -0
  273. package/dist/events/message-aggregator.d.ts +25 -0
  274. package/dist/events/message-aggregator.d.ts.map +1 -0
  275. package/dist/events/message-aggregator.js +35 -0
  276. package/dist/events/message-aggregator.js.map +1 -0
  277. package/dist/events/types.d.ts +42 -0
  278. package/dist/events/types.d.ts.map +1 -0
  279. package/dist/events/types.js +3 -0
  280. package/dist/events/types.js.map +1 -0
  281. package/dist/index.d.ts +55 -0
  282. package/dist/index.d.ts.map +1 -0
  283. package/dist/index.js +53 -0
  284. package/dist/index.js.map +1 -0
  285. package/dist/job/index.d.ts +52 -0
  286. package/dist/job/index.d.ts.map +1 -0
  287. package/dist/job/index.js +31 -0
  288. package/dist/job/index.js.map +1 -0
  289. package/dist/link/index.d.ts +97 -0
  290. package/dist/link/index.d.ts.map +1 -0
  291. package/dist/link/index.js +185 -0
  292. package/dist/link/index.js.map +1 -0
  293. package/dist/middleware/define-middleware.d.ts +54 -0
  294. package/dist/middleware/define-middleware.d.ts.map +1 -0
  295. package/dist/middleware/define-middleware.js +40 -0
  296. package/dist/middleware/define-middleware.js.map +1 -0
  297. package/dist/middleware/index.d.ts +56 -0
  298. package/dist/middleware/index.d.ts.map +1 -0
  299. package/dist/middleware/index.js +50 -0
  300. package/dist/middleware/index.js.map +1 -0
  301. package/dist/module/index.d.ts +56 -0
  302. package/dist/module/index.d.ts.map +1 -0
  303. package/dist/module/index.js +52 -0
  304. package/dist/module/index.js.map +1 -0
  305. package/dist/module/versioning.d.ts +27 -0
  306. package/dist/module/versioning.d.ts.map +1 -0
  307. package/dist/module/versioning.js +64 -0
  308. package/dist/module/versioning.js.map +1 -0
  309. package/dist/naming.d.ts +39 -0
  310. package/dist/naming.d.ts.map +1 -0
  311. package/dist/naming.js +95 -0
  312. package/dist/naming.js.map +1 -0
  313. package/dist/ports/analytics.d.ts +7 -0
  314. package/dist/ports/analytics.d.ts.map +1 -0
  315. package/dist/ports/analytics.js +3 -0
  316. package/dist/ports/analytics.js.map +1 -0
  317. package/dist/ports/auth.d.ts +27 -0
  318. package/dist/ports/auth.d.ts.map +1 -0
  319. package/dist/ports/auth.js +3 -0
  320. package/dist/ports/auth.js.map +1 -0
  321. package/dist/ports/cache.d.ts +35 -0
  322. package/dist/ports/cache.d.ts.map +1 -0
  323. package/dist/ports/cache.js +3 -0
  324. package/dist/ports/cache.js.map +1 -0
  325. package/dist/ports/database.d.ts +40 -0
  326. package/dist/ports/database.d.ts.map +1 -0
  327. package/dist/ports/database.js +3 -0
  328. package/dist/ports/database.js.map +1 -0
  329. package/dist/ports/event-bus.d.ts +85 -0
  330. package/dist/ports/event-bus.d.ts.map +1 -0
  331. package/dist/ports/event-bus.js +3 -0
  332. package/dist/ports/event-bus.js.map +1 -0
  333. package/dist/ports/file.d.ts +62 -0
  334. package/dist/ports/file.d.ts.map +1 -0
  335. package/dist/ports/file.js +3 -0
  336. package/dist/ports/file.js.map +1 -0
  337. package/dist/ports/http.d.ts +20 -0
  338. package/dist/ports/http.d.ts.map +1 -0
  339. package/dist/ports/http.js +3 -0
  340. package/dist/ports/http.js.map +1 -0
  341. package/dist/ports/in-memory-progress-channel.d.ts +9 -0
  342. package/dist/ports/in-memory-progress-channel.d.ts.map +1 -0
  343. package/dist/ports/in-memory-progress-channel.js +19 -0
  344. package/dist/ports/in-memory-progress-channel.js.map +1 -0
  345. package/dist/ports/in-memory-queue.d.ts +24 -0
  346. package/dist/ports/in-memory-queue.d.ts.map +1 -0
  347. package/dist/ports/in-memory-queue.js +63 -0
  348. package/dist/ports/in-memory-queue.js.map +1 -0
  349. package/dist/ports/index.d.ts +27 -0
  350. package/dist/ports/index.d.ts.map +1 -0
  351. package/dist/ports/index.js +6 -0
  352. package/dist/ports/index.js.map +1 -0
  353. package/dist/ports/job-scheduler.d.ts +42 -0
  354. package/dist/ports/job-scheduler.d.ts.map +1 -0
  355. package/dist/ports/job-scheduler.js +3 -0
  356. package/dist/ports/job-scheduler.js.map +1 -0
  357. package/dist/ports/locking.d.ts +43 -0
  358. package/dist/ports/locking.d.ts.map +1 -0
  359. package/dist/ports/locking.js +3 -0
  360. package/dist/ports/locking.js.map +1 -0
  361. package/dist/ports/logger.d.ts +65 -0
  362. package/dist/ports/logger.d.ts.map +1 -0
  363. package/dist/ports/logger.js +3 -0
  364. package/dist/ports/logger.js.map +1 -0
  365. package/dist/ports/notification.d.ts +71 -0
  366. package/dist/ports/notification.d.ts.map +1 -0
  367. package/dist/ports/notification.js +3 -0
  368. package/dist/ports/notification.js.map +1 -0
  369. package/dist/ports/progress-channel.d.ts +46 -0
  370. package/dist/ports/progress-channel.d.ts.map +1 -0
  371. package/dist/ports/progress-channel.js +6 -0
  372. package/dist/ports/progress-channel.js.map +1 -0
  373. package/dist/ports/queue.d.ts +21 -0
  374. package/dist/ports/queue.d.ts.map +1 -0
  375. package/dist/ports/queue.js +15 -0
  376. package/dist/ports/queue.js.map +1 -0
  377. package/dist/ports/relational-query.d.ts +37 -0
  378. package/dist/ports/relational-query.d.ts.map +1 -0
  379. package/dist/ports/relational-query.js +3 -0
  380. package/dist/ports/relational-query.js.map +1 -0
  381. package/dist/ports/repository-factory.d.ts +21 -0
  382. package/dist/ports/repository-factory.d.ts.map +1 -0
  383. package/dist/ports/repository-factory.js +4 -0
  384. package/dist/ports/repository-factory.js.map +1 -0
  385. package/dist/ports/repository.d.ts +73 -0
  386. package/dist/ports/repository.d.ts.map +1 -0
  387. package/dist/ports/repository.js +3 -0
  388. package/dist/ports/repository.js.map +1 -0
  389. package/dist/ports/schema-generator.d.ts +15 -0
  390. package/dist/ports/schema-generator.d.ts.map +1 -0
  391. package/dist/ports/schema-generator.js +4 -0
  392. package/dist/ports/schema-generator.js.map +1 -0
  393. package/dist/ports/search.d.ts +7 -0
  394. package/dist/ports/search.d.ts.map +1 -0
  395. package/dist/ports/search.js +3 -0
  396. package/dist/ports/search.js.map +1 -0
  397. package/dist/ports/types.d.ts +112 -0
  398. package/dist/ports/types.d.ts.map +1 -0
  399. package/dist/ports/types.js +26 -0
  400. package/dist/ports/types.js.map +1 -0
  401. package/dist/ports/workflow-store.d.ts +111 -0
  402. package/dist/ports/workflow-store.d.ts.map +1 -0
  403. package/dist/ports/workflow-store.js +5 -0
  404. package/dist/ports/workflow-store.js.map +1 -0
  405. package/dist/query/define-query-graph.d.ts +55 -0
  406. package/dist/query/define-query-graph.d.ts.map +1 -0
  407. package/dist/query/define-query-graph.js +59 -0
  408. package/dist/query/define-query-graph.js.map +1 -0
  409. package/dist/query/define-query.d.ts +79 -0
  410. package/dist/query/define-query.d.ts.map +1 -0
  411. package/dist/query/define-query.js +77 -0
  412. package/dist/query/define-query.js.map +1 -0
  413. package/dist/query/extend-query-graph.d.ts +36 -0
  414. package/dist/query/extend-query-graph.d.ts.map +1 -0
  415. package/dist/query/extend-query-graph.js +34 -0
  416. package/dist/query/extend-query-graph.js.map +1 -0
  417. package/dist/query/index.d.ts +181 -0
  418. package/dist/query/index.d.ts.map +1 -0
  419. package/dist/query/index.js +288 -0
  420. package/dist/query/index.js.map +1 -0
  421. package/dist/service/define.d.ts +97 -0
  422. package/dist/service/define.d.ts.map +1 -0
  423. package/dist/service/define.js +45 -0
  424. package/dist/service/define.js.map +1 -0
  425. package/dist/service/index.d.ts +52 -0
  426. package/dist/service/index.d.ts.map +1 -0
  427. package/dist/service/index.js +281 -0
  428. package/dist/service/index.js.map +1 -0
  429. package/dist/service/instantiate.d.ts +15 -0
  430. package/dist/service/instantiate.d.ts.map +1 -0
  431. package/dist/service/instantiate.js +143 -0
  432. package/dist/service/instantiate.js.map +1 -0
  433. package/dist/service/snapshot-repository.d.ts +31 -0
  434. package/dist/service/snapshot-repository.d.ts.map +1 -0
  435. package/dist/service/snapshot-repository.js +114 -0
  436. package/dist/service/snapshot-repository.js.map +1 -0
  437. package/dist/service/types.d.ts +39 -0
  438. package/dist/service/types.d.ts.map +1 -0
  439. package/dist/service/types.js +3 -0
  440. package/dist/service/types.js.map +1 -0
  441. package/dist/strict-mode/index.d.ts +42 -0
  442. package/dist/strict-mode/index.d.ts.map +1 -0
  443. package/dist/strict-mode/index.js +84 -0
  444. package/dist/strict-mode/index.js.map +1 -0
  445. package/dist/subscriber/index.d.ts +117 -0
  446. package/dist/subscriber/index.d.ts.map +1 -0
  447. package/dist/subscriber/index.js +76 -0
  448. package/dist/subscriber/index.js.map +1 -0
  449. package/dist/testing/relational-query-suite.d.ts +22 -0
  450. package/dist/testing/relational-query-suite.d.ts.map +1 -0
  451. package/dist/testing/relational-query-suite.js +233 -0
  452. package/dist/testing/relational-query-suite.js.map +1 -0
  453. package/dist/user/auto-routes.d.ts +32 -0
  454. package/dist/user/auto-routes.d.ts.map +1 -0
  455. package/dist/user/auto-routes.js +424 -0
  456. package/dist/user/auto-routes.js.map +1 -0
  457. package/dist/user/define-user.d.ts +54 -0
  458. package/dist/user/define-user.d.ts.map +1 -0
  459. package/dist/user/define-user.js +103 -0
  460. package/dist/user/define-user.js.map +1 -0
  461. package/dist/user/index.d.ts +7 -0
  462. package/dist/user/index.d.ts.map +1 -0
  463. package/dist/user/index.js +5 -0
  464. package/dist/user/index.js.map +1 -0
  465. package/dist/user/models/user.d.ts +15 -0
  466. package/dist/user/models/user.d.ts.map +1 -0
  467. package/dist/user/models/user.js +16 -0
  468. package/dist/user/models/user.js.map +1 -0
  469. package/dist/user/user-module-service.d.ts +55 -0
  470. package/dist/user/user-module-service.d.ts.map +1 -0
  471. package/dist/user/user-module-service.js +100 -0
  472. package/dist/user/user-module-service.js.map +1 -0
  473. package/dist/workflows/ai-step.d.ts +2 -0
  474. package/dist/workflows/ai-step.d.ts.map +1 -0
  475. package/dist/workflows/ai-step.js +54 -0
  476. package/dist/workflows/ai-step.js.map +1 -0
  477. package/dist/workflows/create-step.d.ts +16 -0
  478. package/dist/workflows/create-step.d.ts.map +1 -0
  479. package/dist/workflows/create-step.js +194 -0
  480. package/dist/workflows/create-step.js.map +1 -0
  481. package/dist/workflows/create-workflow.d.ts +16 -0
  482. package/dist/workflows/create-workflow.d.ts.map +1 -0
  483. package/dist/workflows/create-workflow.js +21 -0
  484. package/dist/workflows/create-workflow.js.map +1 -0
  485. package/dist/workflows/define-workflow.d.ts +55 -0
  486. package/dist/workflows/define-workflow.d.ts.map +1 -0
  487. package/dist/workflows/define-workflow.js +72 -0
  488. package/dist/workflows/define-workflow.js.map +1 -0
  489. package/dist/workflows/emit-event-step.d.ts +17 -0
  490. package/dist/workflows/emit-event-step.d.ts.map +1 -0
  491. package/dist/workflows/emit-event-step.js +46 -0
  492. package/dist/workflows/emit-event-step.js.map +1 -0
  493. package/dist/workflows/for-each.d.ts +6 -0
  494. package/dist/workflows/for-each.d.ts.map +1 -0
  495. package/dist/workflows/for-each.js +79 -0
  496. package/dist/workflows/for-each.js.map +1 -0
  497. package/dist/workflows/index.d.ts +15 -0
  498. package/dist/workflows/index.d.ts.map +1 -0
  499. package/dist/workflows/index.js +12 -0
  500. package/dist/workflows/index.js.map +1 -0
  501. package/dist/workflows/manager.d.ts +99 -0
  502. package/dist/workflows/manager.d.ts.map +1 -0
  503. package/dist/workflows/manager.js +450 -0
  504. package/dist/workflows/manager.js.map +1 -0
  505. package/dist/workflows/orphan-reaper.d.ts +50 -0
  506. package/dist/workflows/orphan-reaper.d.ts.map +1 -0
  507. package/dist/workflows/orphan-reaper.js +69 -0
  508. package/dist/workflows/orphan-reaper.js.map +1 -0
  509. package/dist/workflows/progress-helper.d.ts +20 -0
  510. package/dist/workflows/progress-helper.d.ts.map +1 -0
  511. package/dist/workflows/progress-helper.js +48 -0
  512. package/dist/workflows/progress-helper.js.map +1 -0
  513. package/dist/workflows/step.d.ts +103 -0
  514. package/dist/workflows/step.d.ts.map +1 -0
  515. package/dist/workflows/step.js +949 -0
  516. package/dist/workflows/step.js.map +1 -0
  517. package/dist/workflows/types.d.ts +215 -0
  518. package/dist/workflows/types.d.ts.map +1 -0
  519. package/dist/workflows/types.js +9 -0
  520. package/dist/workflows/types.js.map +1 -0
  521. package/dist/workflows/yield.d.ts +12 -0
  522. package/dist/workflows/yield.d.ts.map +1 -0
  523. package/dist/workflows/yield.js +29 -0
  524. package/dist/workflows/yield.js.map +1 -0
  525. package/docs/00-overview.md +254 -0
  526. package/docs/01-getting-started.md +224 -0
  527. package/docs/02-models.md +163 -0
  528. package/docs/03-services.md +208 -0
  529. package/docs/04-users.md +165 -0
  530. package/docs/05-commands.md +501 -0
  531. package/docs/06-queries.md +342 -0
  532. package/docs/07-events.md +248 -0
  533. package/docs/08-links.md +182 -0
  534. package/docs/09-agents.md +142 -0
  535. package/docs/10-spa.md +327 -0
  536. package/docs/11-config.md +481 -0
  537. package/docs/12-constraints.md +183 -0
  538. package/docs/13-testing.md +345 -0
  539. package/docs/14-adapters.md +204 -0
  540. package/docs/15-hosts.md +163 -0
  541. package/docs/16-reference.md +274 -0
  542. package/docs/17-dashboard.md +619 -0
  543. package/docs/AGENT.md +501 -0
  544. package/package.json +49 -52
  545. package/.medusa/server/src/admin/index.js +0 -5493
  546. package/.medusa/server/src/admin/index.mjs +0 -5491
  547. package/.medusa/server/src/api/admin/companies/[id]/route.js +0 -39
  548. package/.medusa/server/src/api/admin/companies/middlewares.js +0 -41
  549. package/.medusa/server/src/api/admin/companies/route.js +0 -37
  550. package/.medusa/server/src/api/admin/companies/validators.js +0 -29
  551. package/.medusa/server/src/api/admin/employees/middlewares.js +0 -15
  552. package/.medusa/server/src/api/admin/employees/route.js +0 -21
  553. package/.medusa/server/src/api/middlewares.js +0 -9
  554. package/.medusa/server/src/index.js +0 -5
  555. package/.medusa/server/src/modules/company/index.js +0 -13
  556. package/.medusa/server/src/modules/company/migrations/Migration20260126141741.js +0 -26
  557. package/.medusa/server/src/modules/company/models/company.js +0 -24
  558. package/.medusa/server/src/modules/company/models/employee.js +0 -15
  559. package/.medusa/server/src/modules/company/models/index.js +0 -11
  560. package/.medusa/server/src/modules/company/service.js +0 -11
  561. package/.medusa/server/src/workflows/create-company.js +0 -10
  562. package/.medusa/server/src/workflows/delete-company.js +0 -10
  563. package/.medusa/server/src/workflows/steps/create-company.js +0 -16
  564. package/.medusa/server/src/workflows/steps/delete-company.js +0 -30
  565. package/.medusa/server/src/workflows/steps/update-company.js +0 -30
  566. package/.medusa/server/src/workflows/update-company.js +0 -10
package/docs/AGENT.md ADDED
@@ -0,0 +1,501 @@
1
+ # Manta — AI Agent Instructions
2
+
3
+ You are working in a **standalone Manta project**. Manta is a filesystem-first framework with an integrated database. You write models, services, commands, queries, and the framework generates HTTP API, auth, admin dashboard, AI tools, and OpenAPI documentation automatically.
4
+
5
+ ## Architecture
6
+
7
+ **Filesystem-first**: The structure of your folders IS your configuration. No routing files, no module registration. The framework scans and wires everything at boot.
8
+
9
+ **CQRS**: Commands = mutations (write), Queries = reads. Commands are compensable workflows. Queries use the Query Graph for cross-module joins.
10
+
11
+ **1 entity = 1 service**: Each entity has its own service. A service mutates ONE entity only. Cross-entity mutations go in commands.
12
+
13
+ **Constraint as Convention**: The framework prevents mistakes structurally. Services only receive their repository. Compensation is automatic via snapshots.
14
+
15
+ ## The primitives
16
+
17
+ All `define*` functions are **globals** — zero imports needed:
18
+
19
+ | Function | Purpose | Location |
20
+ |----------|---------|----------|
21
+ | `defineModel()` | Entity schema (DML) | `src/modules/{mod}/entities/{entity}/model.ts` |
22
+ | `defineService()` | Custom mutations per entity | `src/modules/{mod}/entities/{entity}/service.ts` |
23
+ | `defineCommand()` | Compensable workflow (= API endpoint) | `src/commands/{context}/{name}.ts` |
24
+ | `defineWorkflow()` | Intra-module workflow (business logic) | `src/modules/{mod}/workflows/{name}.ts` |
25
+ | `defineQuery()` | Read endpoint (CQRS read side) | `src/queries/{context}/{name}.ts` |
26
+ | `defineQueryGraph()` | Expose query graph to frontend | `src/queries/{context}/graph.ts` |
27
+ | `extendQueryGraph()` | Resolver for external entities (PostHog, Stripe…) | `src/modules/{mod}/queries/graph.ts` |
28
+ | `defineSubscriber()` | Event reaction | `src/subscribers/{name}.ts` |
29
+ | `defineJob()` | Scheduled cron (dispatches commands) | `src/jobs/{name}.ts` |
30
+ | `defineLink()` | Relation (intra-module or cross-module) | `src/links/` or `src/modules/{mod}/links/` |
31
+ | `defineAgent()` | Typed AI step (LLM call) | `src/agents/{name}.ts` |
32
+ | `defineUserModel()` | Augmented defineModel with auth | `src/modules/{mod}/entities/{entity}/model.ts` |
33
+ | `defineMiddleware()` | Override per-context auth middleware | `src/middleware/{context}.ts` |
34
+ | `defineConfig()` | App configuration | `manta.config.ts` |
35
+ | `definePreset()` | Adapter preset (dev/prod) | Config or package |
36
+
37
+ Helpers: `field.*` (property types), `many()` (cardinality), `listParams()` / `retrieveParams()` (query input helpers), `fromZodSchema()` (convert a Zod schema into DML fields, typically for external models).
38
+
39
+ > **Note:** Relations between entities are defined exclusively with `defineLink()`. There is no `field.relation()`, `belongsTo()`, `hasMany()`, or `hasOne()` API.
40
+
41
+ ## Project structure
42
+
43
+ ```
44
+ src/
45
+ ├── modules/ # Business logic (filesystem = module)
46
+ │ ├── catalog/
47
+ │ │ ├── entities/
48
+ │ │ │ ├── product/
49
+ │ │ │ │ ├── model.ts # defineModel('Product', { ... })
50
+ │ │ │ │ └── service.ts # defineService('product', ({ db }) => ({ ... }))
51
+ │ │ │ └── category/
52
+ │ │ │ └── model.ts
53
+ │ │ ├── links/
54
+ │ │ │ └── product-category.ts # defineLink (intra-module)
55
+ │ │ └── workflows/
56
+ │ │ └── categorize-product.ts # defineWorkflow (scoped, no auth)
57
+ │ ├── inventory/
58
+ │ │ └── entities/
59
+ │ │ └── inventory-item/
60
+ │ │ └── model.ts
61
+ │ └── admin/
62
+ │ └── entities/
63
+ │ └── admin/
64
+ │ └── model.ts # defineUserModel('admin', { role: field.enum([...]) })
65
+
66
+ ├── commands/ # Mutations (context = folder name)
67
+ │ ├── admin/
68
+ │ │ ├── create-product.ts # → POST /api/admin/command/create-product
69
+ │ │ └── bulk-import.ts
70
+ │ └── store/
71
+ │ └── place-order.ts # → POST /api/store/command/place-order
72
+
73
+ ├── queries/ # Reads (context = folder name)
74
+ │ ├── admin/
75
+ │ │ ├── list-products.ts # → GET /api/admin/list-products
76
+ │ │ └── graph.ts # defineQueryGraph('*') → POST /api/admin/graph
77
+ │ └── store/
78
+ │ ├── get-catalog.ts # → GET /api/store/get-catalog
79
+ │ └── graph.ts # defineQueryGraph({ product: true, order: (auth) => ... })
80
+
81
+ ├── subscribers/ # Event reactions
82
+ │ └── product-created.ts
83
+ ├── jobs/ # Cron tasks (dispatch commands)
84
+ │ └── cleanup-drafts.ts
85
+ ├── links/ # Cross-module relations
86
+ │ └── product-inventory.ts
87
+ ├── agents/ # AI agents
88
+ │ └── categorize-product.ts
89
+ ├── middleware/ # Per-context auth overrides (optional)
90
+ │ └── admin.ts
91
+ ├── spa/ # Single Page Applications (auto-detected)
92
+ │ ├── admin/
93
+ │ │ └── pages/
94
+ │ │ ├── page.tsx # → /admin/
95
+ │ │ └── products/
96
+ │ │ └── page.tsx # → /admin/products
97
+ │ └── vendor/
98
+ │ └── pages/
99
+ │ └── page.tsx
100
+ └── manta.config.ts
101
+ ```
102
+
103
+ ## How things work
104
+
105
+ ### defineModel — Data entities
106
+
107
+ ```typescript
108
+ // src/modules/catalog/entities/product/model.ts
109
+ export default defineModel('Product', {
110
+ title: field.text(),
111
+ description: field.text().nullable(),
112
+ price: field.bigNumber(),
113
+ status: field.enum(['draft', 'active', 'archived']).default('draft'),
114
+ sku: field.text().unique(),
115
+ })
116
+ ```
117
+
118
+ Auto-generates: database table, TypeScript types, CRUD service methods.
119
+
120
+ ### defineService — Custom mutations
121
+
122
+ ```typescript
123
+ // src/modules/catalog/entities/product/service.ts
124
+ export default defineService('product', ({ db }) => ({
125
+ activate: async (id: string) => {
126
+ await db.update({ id, status: 'active' })
127
+ },
128
+ }))
129
+ ```
130
+
131
+ - First arg: entity name (string, autocompletes from codegen)
132
+ - Factory receives `{ db, log }` — db is a typed repository, log is ILoggerPort
133
+ - Auto-generated CRUD: `createProducts()`, `listProducts()`, `retrieveProduct()`, `updateProducts()`, `deleteProducts()`, `softDeleteProducts()`, `restoreProducts()`
134
+ - Compensation is automatic via repository snapshots
135
+
136
+ ### defineCommand — Compensable workflows
137
+
138
+ ```typescript
139
+ // src/commands/admin/create-product.ts
140
+ export default defineCommand({
141
+ name: 'create-product',
142
+ description: 'Create a product with initial inventory',
143
+ input: z.object({
144
+ title: z.string(),
145
+ sku: z.string(),
146
+ price: z.number(),
147
+ }),
148
+ workflow: async (input, { step, log, auth, headers }) => {
149
+ const product = await step.service.catalog.create({
150
+ title: input.title,
151
+ sku: input.sku,
152
+ price: input.price,
153
+ })
154
+ await step.emit('product.created', { id: product.id, sku: input.sku })
155
+ return product
156
+ },
157
+ })
158
+ ```
159
+
160
+ - Folder = context: `commands/admin/` → `POST /api/admin/command/create-product`
161
+ - `step.service.MODULE.METHOD()` — auto-compensated
162
+ - `step.command.NAME()` — sub-command
163
+ - `step.workflow.MODULE.NAME()` — call a module workflow
164
+ - `step.agent.NAME()` — AI call (checkpointed)
165
+ - `step.action('name', { invoke, compensate })` — external action
166
+ - `step.emit('event', data)` — fire event
167
+ - `step.link(a, b)` — link entities
168
+ - `auth` — authenticated user (`{ id, type, email }`) or null
169
+ - `headers` — raw request headers (for custom context like `x-property-id`)
170
+
171
+ ### defineWorkflow — Intra-module business logic
172
+
173
+ ```typescript
174
+ // src/modules/catalog/workflows/categorize-product.ts
175
+ export default defineWorkflow({
176
+ name: 'categorize-product',
177
+ input: z.object({
178
+ productId: z.string(),
179
+ categoryId: z.string(),
180
+ }),
181
+ workflow: async (input, { step, log }) => {
182
+ const product = await step.service.catalog.retrieveProduct(input.productId)
183
+ await step.service.catalog.update(input.productId, { category_id: input.categoryId })
184
+ log.info(`Product ${product.id} categorized`)
185
+ return { productId: product.id }
186
+ },
187
+ })
188
+ ```
189
+
190
+ - Scoped to the module: can only call `step.service.MODULE.*` for its own module's entities
191
+ - Receives `{ step, log }` — NO `auth`, NO `headers` (pure business logic)
192
+ - Has compensation (same step proxy as commands)
193
+ - Called from commands via `step.workflow.MODULE.NAME(input)`
194
+ - NOT an HTTP endpoint — only callable as a sub-workflow from commands
195
+
196
+ ### defineQuery — Read endpoints
197
+
198
+ ```typescript
199
+ // src/queries/admin/list-products.ts
200
+ export default defineQuery({
201
+ name: 'list-products',
202
+ description: 'List products with filtering',
203
+ input: z.object({
204
+ status: z.string().optional(),
205
+ ...listParams(), // adds limit, offset, sort, order, search
206
+ }),
207
+ handler: async (input, { query, log, auth, headers }) => {
208
+ return query.graph({
209
+ entity: 'product',
210
+ filters: input.status ? { status: input.status } : undefined,
211
+ pagination: { take: input.limit, skip: input.offset },
212
+ })
213
+ },
214
+ })
215
+ ```
216
+
217
+ - Handler receives `{ query, log, auth, headers }` — NO `app` (forced to use query graph)
218
+ - `query.graph()` for cross-module joins
219
+ - `listParams()` helper adds standard pagination/sort/search fields
220
+ - `retrieveParams()` helper adds `{ id, fields }` for single entity lookups
221
+ - Relation field syntax: use `fields: ['*', 'relation.*']` to eagerly load related entities (e.g., `fields: ['*', 'addresses.*']`). For M:N links with extraColumns, pivot columns are merged into each target entity.
222
+ - `relPagination`: paginate relation results independently, e.g., `relPagination: { orders: { take: 5, skip: 0 } }`
223
+
224
+ ### defineQueryGraph — Expose query graph to frontend
225
+
226
+ ```typescript
227
+ // src/queries/admin/graph.ts — full access (admin/AI)
228
+ export default defineQueryGraph('*')
229
+
230
+ // src/queries/store/graph.ts — scoped access with row-level filtering
231
+ export default defineQueryGraph({
232
+ product: true, // all products
233
+ category: true, // all categories
234
+ order: (auth) => ({ customer_id: auth.id }), // only MY orders
235
+ customer: (auth) => ({ id: auth.id }), // only MY profile
236
+ })
237
+ ```
238
+
239
+ - `'*'` = wildcard, all entities, all rows (admin/AI use case)
240
+ - `true` = all rows for this entity
241
+ - `(auth) => filters` = row-level filter applied automatically
242
+ - Not listed = not accessible (403)
243
+ - Creates `POST /api/{context}/graph` endpoint
244
+ - Frontend uses `useGraphQuery()` from `@mantajs/sdk`
245
+
246
+ ### External entities — .external() + extendQueryGraph()
247
+
248
+ Use `.external()` on a model when the data lives in a third-party system (PostHog, Stripe, Shopify…). Manta keeps the entity visible to the query graph, AI tools, and `defineLink()`, but does NOT create a table, migration, or CRUD service.
249
+
250
+ ```typescript
251
+ // src/modules/posthog/entities/posthog-event/model.ts
252
+ export default defineModel('PostHogEvent', {
253
+ id: field.text().primaryKey(),
254
+ event: field.text(),
255
+ distinct_id: field.text(),
256
+ timestamp: field.dateTime(),
257
+ properties: field.json(),
258
+ }).external()
259
+
260
+ // Shortcut: build the field map from a Zod schema (e.g. generated from an SDK)
261
+ // export default defineModel('PostHogEvent', fromZodSchema(postHogEventSchema)).external()
262
+ ```
263
+
264
+ Every module that owns external entities MUST register a resolver via `extendQueryGraph()` in `src/modules/{mod}/queries/graph.ts`:
265
+
266
+ ```typescript
267
+ // src/modules/posthog/queries/graph.ts
268
+ export default extendQueryGraph({
269
+ owns: ['PostHogEvent', 'PostHogPerson'],
270
+ async resolve(query, { app, logger }) {
271
+ // Translate the Manta GraphQueryConfig into a call to the external backend
272
+ return await fetchFromPostHog(query)
273
+ },
274
+ supportedFilters: {
275
+ PostHogEvent: ['distinct_id', 'event', 'timestamp'],
276
+ },
277
+ })
278
+ ```
279
+
280
+ - `owns` — entity names this module resolves (must match `defineModel` names).
281
+ - `resolve` — receives the Manta query graph config, returns normalized rows shaped like the model's schema.
282
+ - `supportedFilters` (optional) — whitelist accepted filters; unsupported filters throw a clear error.
283
+ - The engine hydrates relations transparently: joining a local `product` to a `PostHogEvent` via `defineLink()` will trigger one DB query + one resolver call.
284
+
285
+ ### defineSubscriber — Event reactions
286
+
287
+ ```typescript
288
+ // src/subscribers/product-created.ts
289
+ export default defineSubscriber('product.created', async (event, { command, log }) => {
290
+ await command.initializeInventory({ productId: event.data.id })
291
+ })
292
+ ```
293
+
294
+ - Handler receives `(event, { command, log })` — can ONLY dispatch commands
295
+ - Event names autocomplete from codegen (MantaEventMap)
296
+ - `makeIdempotent(cache, handler)` for at-least-once deduplication
297
+
298
+ ### defineJob — Scheduled tasks
299
+
300
+ ```typescript
301
+ // src/jobs/cleanup-drafts.ts
302
+ export default defineJob('cleanup-drafts', '0 3 * * *', async ({ command, log }) => {
303
+ await command.cleanupDraftProducts({ olderThanDays: 30 })
304
+ })
305
+ ```
306
+
307
+ - Same `{ command, log }` scope as subscribers — forces command dispatch
308
+ - Cron syntax for schedule
309
+ - Also accepts object form: `defineJob({ name, schedule, handler })`
310
+
311
+ ### defineLink — Relations (unified API)
312
+
313
+ ```typescript
314
+ // src/links/product-inventory.ts (cross-module — always creates pivot table)
315
+ export default defineLink('product', many('inventory_item'))
316
+
317
+ // src/modules/catalog/links/product-category.ts (intra-module — 1:N creates FK directly)
318
+ export default defineLink('product', many('category'))
319
+ ```
320
+
321
+ - ONE API for all relations: cross-module and intra-module
322
+ - Cross-module (`src/links/`): always creates pivot tables
323
+ - Intra-module (`src/modules/{mod}/links/`): 1:1 and 1:N create FK directly, M:N creates pivot
324
+ - `many()` wraps for 1:N or M:N cardinality
325
+ - Cascade is automatic
326
+ - Extra columns on pivot: `defineLink('customer', many('address'), { type: field.text(), is_default: field.boolean().default(false) })` — extra columns are added to the pivot table schema, included in auto-generated link commands, and merged into target entities when using relation field syntax in queries
327
+
328
+ ### defineUserModel — Augmented defineModel with auth
329
+
330
+ Use instead of `defineModel()` when an entity represents a user that can log in.
331
+ Place it in `model.ts` like any other entity — it IS a model, with auth on top.
332
+
333
+ ```typescript
334
+ // src/modules/admin/entities/admin/model.ts
335
+ export default defineUserModel('admin', {
336
+ role: field.enum(['super_admin', 'editor', 'viewer']),
337
+ })
338
+
339
+ // src/modules/customer/entities/customer/model.ts
340
+ export default defineUserModel('customer', {
341
+ company_name: field.text().nullable(),
342
+ phone: field.text().nullable(),
343
+ has_account: field.boolean().default(false),
344
+ })
345
+ ```
346
+
347
+ **The entity works like any defineModel** — has a service, links, workflows, appears in the query graph. **In addition, the framework auto-generates:**
348
+
349
+ Tables: `admin_user`, `admin_invite`
350
+
351
+ Auth routes (on `/api/admin/`):
352
+ - `POST /login` (public) — returns JWT with `{ id, type: 'admin' }`
353
+ - `DELETE /logout` (public) — blacklists token
354
+ - `POST /refresh` (public) — refresh token
355
+ - `POST /forgot-password` (public) — reset flow
356
+ - `POST /reset-password` (public) — confirm reset
357
+ - `POST /accept-invite` (public) — accept invitation
358
+
359
+ Protected routes (JWT required, `type === 'admin'`):
360
+ - `GET /me` — current user
361
+ - `GET /users` — list users
362
+ - `POST /create-user`, `POST /update-user`, `POST /delete-user`
363
+ - `POST /create-invite`, `POST /refresh-invite`
364
+
365
+ Middleware: all `/api/admin/*` routes verify JWT + `type === 'admin'`
366
+
367
+ Override: create `src/commands/admin/login.ts` to replace auto-generated login.
368
+ Override: create `src/middleware/admin.ts` to replace auto-generated middleware.
369
+
370
+ Dev seed: `admin@manta.local` / `admin` created automatically in dev mode.
371
+
372
+ ### defineAgent — AI steps
373
+
374
+ ```typescript
375
+ // src/agents/categorize-product.ts
376
+ export default defineAgent({
377
+ name: 'categorize-product',
378
+ description: 'Categorize a product into a department',
379
+ input: z.object({ title: z.string() }),
380
+ output: z.object({ category: z.enum(['electronics', 'clothing', 'food', 'other']) }),
381
+ instructions: (input) => `Categorize this product: "${input.title}"`,
382
+ })
383
+ ```
384
+
385
+ Used in commands via `step.agent.categorizeProduct(input)`. Checkpointed — if the workflow crashes after the agent step, result is recovered.
386
+
387
+ ### SPA — Single Page Applications
388
+
389
+ SPAs are auto-detected from `src/spa/{name}/`. No boilerplate needed.
390
+
391
+ ```
392
+ src/spa/admin/
393
+ └── pages/
394
+ ├── page.tsx # → /admin/
395
+ └── products/
396
+ └── page.tsx # → /admin/products
397
+ ```
398
+
399
+ Defaults: `@mantajs/dashboard` (shell) + `@mantajs/ui` (preset). Override in config:
400
+
401
+ ```typescript
402
+ // manta.config.ts
403
+ export default defineConfig({
404
+ spa: {
405
+ admin: { preset: '@mantajs/ui-preset-dark' }, // change theme
406
+ vendor: { dashboard: null }, // no shell, custom SPA
407
+ },
408
+ })
409
+ ```
410
+
411
+ ### SDK — Frontend hooks
412
+
413
+ ```typescript
414
+ import { useCommand, useQuery, useGraphQuery, useAuth } from '@mantajs/sdk'
415
+
416
+ // Commands (autocomplete from MantaGeneratedCommands)
417
+ const createProduct = useCommand('create-product')
418
+ await createProduct.mutateAsync({ title: 'Widget', sku: 'W-001' })
419
+
420
+ // Named queries (autocomplete from MantaGeneratedQueries)
421
+ const { data } = useQuery('list-products', { status: 'active', limit: 10 })
422
+
423
+ // Graph queries (only if defineQueryGraph exists for context)
424
+ const { data } = useGraphQuery({ entity: 'product', relations: ['inventory_item'] })
425
+
426
+ // Auth
427
+ const { login, logout, me, isAuthenticated } = useAuth()
428
+ ```
429
+
430
+ ### Auth context
431
+
432
+ Commands and queries receive `auth` and `headers`:
433
+
434
+ ```typescript
435
+ // auth.id — user ID (from admin_user.id, customer_user.id, etc.)
436
+ // auth.type — context type ('admin', 'customer')
437
+ // auth.email — user email
438
+ // headers['x-property-id'] — custom headers
439
+ ```
440
+
441
+ `auth` is null on public routes. JWT is signed and verified — cannot be tampered with.
442
+
443
+ ## Critical rules
444
+
445
+ 1. **No API routes** — Define commands + queries. The framework generates endpoints from filesystem structure.
446
+ 2. **1 entity = 1 service** — Each entity gets `model.ts` + optional `service.ts`. Services receive ONLY their entity's repository.
447
+ 3. **defineWorkflow for intra-module logic** — Workflows in `src/modules/X/workflows/` orchestrate multiple entities within the same module. They receive `{ step, log }` (no auth).
448
+ 4. **defineCommand for cross-module + HTTP** — Commands in `src/commands/` orchestrate any module and receive `{ step, log, auth, headers }`.
449
+ 5. **Commands call workflows** — Use `step.workflow.MODULE.NAME(input)` to invoke module workflows from commands.
450
+ 6. **Subscribers dispatch commands** — They receive `(event, { command, log })`, not direct service access.
451
+ 7. **Jobs dispatch commands** — They receive `{ command, log }`, same scope as subscribers.
452
+ 8. **No cross-module imports** — Modules cannot import from other modules. Use links.
453
+ 9. **No field.relation()** — Relations are defined ONLY via `defineLink()`. No `belongsTo`, `hasMany`, `hasOne`.
454
+ 10. **Events are at-least-once** — Use `makeIdempotent()` if duplicate processing is a problem.
455
+ 11. **Entity names are PascalCase** — `Product`, `BlogPost`, `InventoryItem`.
456
+ 12. **defineUserModel instead of defineModel** — When an entity represents a user that can log in, use `defineUserModel()` instead of `defineModel()`. It works like a model but adds auth routes, middleware, and invites.
457
+ 13. **Query graph for reads** — In defineQuery, use `query.graph()`. No direct service access.
458
+ 14. **External entities need a resolver** — Any `defineModel(...).external()` MUST be paired with `extendQueryGraph({ owns: [...], resolve })` in the same module, otherwise queries on that entity fail.
459
+
460
+ ## Auto-generated from your code
461
+
462
+ | Your code | Framework generates |
463
+ |-----------|-------------------|
464
+ | `defineModel('Product', {...})` | DB table, TypeScript types, CRUD methods |
465
+ | `defineModel('Ext', {...}).external()` | Entity registry entry only — NO table, NO migration, NO CRUD service |
466
+ | `extendQueryGraph({ owns, resolve })` | Routes queries on owned external entities to the module's resolver |
467
+ | `defineService('product', ...)` | Custom service methods with auto-compensation |
468
+ | `defineCommand({ name: 'create-product', ... })` | `POST /api/{ctx}/command/create-product` |
469
+ | `defineQuery({ name: 'list-products', ... })` | `GET /api/{ctx}/list-products` |
470
+ | `defineQueryGraph('*')` | `POST /api/{ctx}/graph` |
471
+ | `defineUserModel('admin', {...})` | Table, auth routes, middleware, invite system, dev seed |
472
+ | `defineSubscriber('event', handler)` | Event subscription with typed data |
473
+ | `defineWorkflow({ name, input, workflow })` | Intra-module compensable workflow (no HTTP endpoint) |
474
+ | `defineLink('product', many('item'))` | FK (intra-module) or pivot table (cross-module) |
475
+ | `src/spa/admin/pages/*.tsx` | SPA with routing, dashboard shell, Vite build |
476
+
477
+ ## Documentation
478
+
479
+ Complete framework documentation is in `node_modules/@mantajs/core/docs/`:
480
+
481
+ | Doc | Content |
482
+ |-----|---------|
483
+ | [00-overview](node_modules/@mantajs/core/docs/00-overview.md) | Philosophy, mental model |
484
+ | [01-getting-started](node_modules/@mantajs/core/docs/01-getting-started.md) | Create a project from scratch |
485
+ | [02-models](node_modules/@mantajs/core/docs/02-models.md) | defineModel() — properties, modifiers |
486
+ | [03-services](node_modules/@mantajs/core/docs/03-services.md) | defineService() — CRUD, compensation, typed repo |
487
+ | [04-users](node_modules/@mantajs/core/docs/04-users.md) | defineUserModel() — auth, CRUD, invites, middleware |
488
+ | [05-commands](node_modules/@mantajs/core/docs/05-commands.md) | defineCommand() — workflows, steps, compensation |
489
+ | [06-queries](node_modules/@mantajs/core/docs/06-queries.md) | defineQuery() + defineQueryGraph() |
490
+ | [07-events](node_modules/@mantajs/core/docs/07-events.md) | defineSubscriber() + defineJob() + defineWorkflow() |
491
+ | [08-links](node_modules/@mantajs/core/docs/08-links.md) | defineLink() — unified relation API (FK or pivot) |
492
+ | [09-agents](node_modules/@mantajs/core/docs/09-agents.md) | defineAgent() — AI steps, checkpointing |
493
+ | [10-spa](node_modules/@mantajs/core/docs/10-spa.md) | SPA system, dashboard, SDK |
494
+ | [11-config](node_modules/@mantajs/core/docs/11-config.md) | defineConfig(), CLI, presets |
495
+ | [12-constraints](node_modules/@mantajs/core/docs/12-constraints.md) | Validations, error messages |
496
+ | [13-testing](node_modules/@mantajs/core/docs/13-testing.md) | Testing guide |
497
+ | [14-adapters](node_modules/@mantajs/core/docs/14-adapters.md) | Custom adapters |
498
+ | [15-hosts](node_modules/@mantajs/core/docs/15-hosts.md) | Custom hosts |
499
+ | [16-reference](node_modules/@mantajs/core/docs/16-reference.md) | API reference |
500
+
501
+ **Read the relevant doc BEFORE writing code.** When in doubt, check [04-commands.md](node_modules/@mantajs/core/docs/04-commands.md) for workflow patterns.
package/package.json CHANGED
@@ -1,59 +1,56 @@
1
1
  {
2
2
  "name": "@mantajs/core",
3
- "version": "0.1.7",
4
- "description": "B2B plugin for Medusa with Company and Employee management",
5
- "author": "MANTAJS",
6
- "license": "MIT",
7
- "files": [
8
- ".medusa/server"
9
- ],
3
+ "version": "0.2.0-beta.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
10
7
  "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ },
13
+ "./auth": {
14
+ "types": "./dist/auth/index.d.ts",
15
+ "import": "./dist/auth/index.js",
16
+ "default": "./dist/auth/index.js"
17
+ },
18
+ "./ports": {
19
+ "types": "./dist/ports/index.d.ts",
20
+ "import": "./dist/ports/index.js",
21
+ "default": "./dist/ports/index.js"
22
+ },
23
+ "./errors": {
24
+ "types": "./dist/errors/manta-error.d.ts",
25
+ "import": "./dist/errors/manta-error.js",
26
+ "default": "./dist/errors/manta-error.js"
27
+ },
28
+ "./db": {
29
+ "types": "./dist/db/index.d.ts",
30
+ "import": "./dist/db/index.js",
31
+ "default": "./dist/db/index.js"
32
+ },
33
+ "./testing/relational-query-suite": {
34
+ "types": "./dist/testing/relational-query-suite.d.ts",
35
+ "import": "./dist/testing/relational-query-suite.js",
36
+ "default": "./dist/testing/relational-query-suite.js"
37
+ },
11
38
  "./package.json": "./package.json",
12
- "./workflows": "./.medusa/server/src/workflows/index.js",
13
- "./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
14
- "./modules/*": "./.medusa/server/src/modules/*/index.js",
15
- "./providers/*": "./.medusa/server/src/providers/*/index.js",
16
- "./*": "./.medusa/server/src/*.js",
17
- "./admin": {
18
- "import": "./.medusa/server/src/admin/index.mjs",
19
- "require": "./.medusa/server/src/admin/index.js",
20
- "default": "./.medusa/server/src/admin/index.js"
21
- }
39
+ "./docs/*": "./docs/*"
22
40
  },
23
- "keywords": [
24
- "medusa",
25
- "plugin",
26
- "medusa-plugin-other",
27
- "medusa-plugin",
28
- "medusa-v2",
29
- "b2b"
30
- ],
31
- "scripts": {
32
- "build": "medusa plugin:build",
33
- "dev": "medusa plugin:develop",
34
- "prepublishOnly": "npm run build"
41
+ "dependencies": {
42
+ "drizzle-orm": "^0.35.0",
43
+ "zod": "^3.23.0"
35
44
  },
36
- "devDependencies": {
37
- "@medusajs/admin-sdk": "2.13.1",
38
- "@medusajs/cli": "2.13.1",
39
- "@medusajs/framework": "2.13.1",
40
- "@medusajs/icons": "2.13.1",
41
- "@medusajs/medusa": "2.13.1",
42
- "@medusajs/test-utils": "2.13.1",
43
- "@medusajs/ui": "4.1.0",
44
- "@swc/core": "^1.7.28",
45
- "@types/node": "^20.0.0",
46
- "@types/react": "^18.3.3",
47
- "@types/react-dom": "^18.3.0",
48
- "prop-types": "^15.8.1",
49
- "react": "^18.2.0",
50
- "react-dom": "^18.2.0",
51
- "ts-node": "^10.9.2",
52
- "typescript": "^5.6.2",
53
- "vite": "^5.4.14",
54
- "yalc": "^1.0.0-pre.53"
45
+ "optionalDependencies": {
46
+ "ai": "^4.0.0",
47
+ "@ai-sdk/anthropic": "^1.0.0",
48
+ "@ai-sdk/openai": "^3.0.0",
49
+ "@ai-sdk/google": "^3.0.0",
50
+ "@ai-sdk/mistral": "^3.0.0"
55
51
  },
56
- "engines": {
57
- "node": ">=20"
58
- }
59
- }
52
+ "files": [
53
+ "dist",
54
+ "docs"
55
+ ]
56
+ }