@unifiedcommerce/core 0.0.1

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 (749) hide show
  1. package/dist/adapters/console-email.d.ts +23 -0
  2. package/dist/adapters/console-email.d.ts.map +1 -0
  3. package/dist/adapters/console-email.js +38 -0
  4. package/dist/auth/access.d.ts +101 -0
  5. package/dist/auth/access.d.ts.map +1 -0
  6. package/dist/auth/access.js +128 -0
  7. package/dist/auth/auth-schema.d.ts +1383 -0
  8. package/dist/auth/auth-schema.d.ts.map +1 -0
  9. package/dist/auth/auth-schema.js +117 -0
  10. package/dist/auth/middleware.d.ts +5 -0
  11. package/dist/auth/middleware.d.ts.map +1 -0
  12. package/dist/auth/middleware.js +91 -0
  13. package/dist/auth/org.d.ts +22 -0
  14. package/dist/auth/org.d.ts.map +1 -0
  15. package/dist/auth/org.js +36 -0
  16. package/dist/auth/permissions.d.ts +4 -0
  17. package/dist/auth/permissions.d.ts.map +1 -0
  18. package/dist/auth/permissions.js +24 -0
  19. package/dist/auth/pos.d.ts +3 -0
  20. package/dist/auth/pos.d.ts.map +1 -0
  21. package/dist/auth/pos.js +62 -0
  22. package/dist/auth/setup.d.ts +31 -0
  23. package/dist/auth/setup.d.ts.map +1 -0
  24. package/dist/auth/setup.js +106 -0
  25. package/dist/auth/system-actor.d.ts +7 -0
  26. package/dist/auth/system-actor.d.ts.map +1 -0
  27. package/dist/auth/system-actor.js +17 -0
  28. package/dist/auth/types.d.ts +11 -0
  29. package/dist/auth/types.d.ts.map +1 -0
  30. package/dist/auth/types.js +1 -0
  31. package/dist/config/defaults.d.ts +3 -0
  32. package/dist/config/defaults.d.ts.map +1 -0
  33. package/dist/config/defaults.js +80 -0
  34. package/dist/config/define-config.d.ts +9 -0
  35. package/dist/config/define-config.d.ts.map +1 -0
  36. package/dist/config/define-config.js +44 -0
  37. package/dist/config/types.d.ts +299 -0
  38. package/dist/config/types.d.ts.map +1 -0
  39. package/dist/config/types.js +1 -0
  40. package/dist/generated/plugin-manifest.d.ts +48 -0
  41. package/dist/generated/plugin-manifest.d.ts.map +1 -0
  42. package/dist/generated/plugin-manifest.js +20 -0
  43. package/dist/hooks/checkout-completion.d.ts +58 -0
  44. package/dist/hooks/checkout-completion.d.ts.map +1 -0
  45. package/dist/hooks/checkout-completion.js +137 -0
  46. package/dist/hooks/checkout.d.ts +99 -0
  47. package/dist/hooks/checkout.d.ts.map +1 -0
  48. package/dist/hooks/checkout.js +317 -0
  49. package/dist/hooks/order-emails.d.ts +16 -0
  50. package/dist/hooks/order-emails.d.ts.map +1 -0
  51. package/dist/hooks/order-emails.js +44 -0
  52. package/dist/index.d.ts +82 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +13381 -0
  55. package/dist/index.js.map +156 -0
  56. package/dist/interfaces/graphql/index.d.ts +4 -0
  57. package/dist/interfaces/graphql/index.d.ts.map +1 -0
  58. package/dist/interfaces/graphql/index.js +415 -0
  59. package/dist/interfaces/mcp/agent-prompt.d.ts +16 -0
  60. package/dist/interfaces/mcp/agent-prompt.d.ts.map +1 -0
  61. package/dist/interfaces/mcp/agent-prompt.js +172 -0
  62. package/dist/interfaces/mcp/context-enrichment.d.ts +39 -0
  63. package/dist/interfaces/mcp/context-enrichment.d.ts.map +1 -0
  64. package/dist/interfaces/mcp/context-enrichment.js +119 -0
  65. package/dist/interfaces/mcp/server.d.ts +7 -0
  66. package/dist/interfaces/mcp/server.d.ts.map +1 -0
  67. package/dist/interfaces/mcp/server.js +515 -0
  68. package/dist/interfaces/mcp/transport.d.ts +5 -0
  69. package/dist/interfaces/mcp/transport.d.ts.map +1 -0
  70. package/dist/interfaces/mcp/transport.js +52 -0
  71. package/dist/interfaces/rest/customer-portal.d.ts +5 -0
  72. package/dist/interfaces/rest/customer-portal.d.ts.map +1 -0
  73. package/dist/interfaces/rest/customer-portal.js +206 -0
  74. package/dist/interfaces/rest/index.d.ts +5 -0
  75. package/dist/interfaces/rest/index.d.ts.map +1 -0
  76. package/dist/interfaces/rest/index.js +68 -0
  77. package/dist/interfaces/rest/router.d.ts +164 -0
  78. package/dist/interfaces/rest/router.d.ts.map +1 -0
  79. package/dist/interfaces/rest/router.js +259 -0
  80. package/dist/interfaces/rest/routes/admin-jobs.d.ts +5 -0
  81. package/dist/interfaces/rest/routes/admin-jobs.d.ts.map +1 -0
  82. package/dist/interfaces/rest/routes/admin-jobs.js +48 -0
  83. package/dist/interfaces/rest/routes/audit.d.ts +5 -0
  84. package/dist/interfaces/rest/routes/audit.d.ts.map +1 -0
  85. package/dist/interfaces/rest/routes/audit.js +43 -0
  86. package/dist/interfaces/rest/routes/carts.d.ts +5 -0
  87. package/dist/interfaces/rest/routes/carts.d.ts.map +1 -0
  88. package/dist/interfaces/rest/routes/carts.js +55 -0
  89. package/dist/interfaces/rest/routes/catalog.d.ts +5 -0
  90. package/dist/interfaces/rest/routes/catalog.d.ts.map +1 -0
  91. package/dist/interfaces/rest/routes/catalog.js +256 -0
  92. package/dist/interfaces/rest/routes/checkout.d.ts +5 -0
  93. package/dist/interfaces/rest/routes/checkout.d.ts.map +1 -0
  94. package/dist/interfaces/rest/routes/checkout.js +216 -0
  95. package/dist/interfaces/rest/routes/inventory.d.ts +5 -0
  96. package/dist/interfaces/rest/routes/inventory.d.ts.map +1 -0
  97. package/dist/interfaces/rest/routes/inventory.js +59 -0
  98. package/dist/interfaces/rest/routes/media.d.ts +5 -0
  99. package/dist/interfaces/rest/routes/media.d.ts.map +1 -0
  100. package/dist/interfaces/rest/routes/media.js +65 -0
  101. package/dist/interfaces/rest/routes/orders.d.ts +5 -0
  102. package/dist/interfaces/rest/routes/orders.d.ts.map +1 -0
  103. package/dist/interfaces/rest/routes/orders.js +64 -0
  104. package/dist/interfaces/rest/routes/payments.d.ts +5 -0
  105. package/dist/interfaces/rest/routes/payments.d.ts.map +1 -0
  106. package/dist/interfaces/rest/routes/payments.js +45 -0
  107. package/dist/interfaces/rest/routes/pricing.d.ts +5 -0
  108. package/dist/interfaces/rest/routes/pricing.d.ts.map +1 -0
  109. package/dist/interfaces/rest/routes/pricing.js +48 -0
  110. package/dist/interfaces/rest/routes/promotions.d.ts +5 -0
  111. package/dist/interfaces/rest/routes/promotions.d.ts.map +1 -0
  112. package/dist/interfaces/rest/routes/promotions.js +75 -0
  113. package/dist/interfaces/rest/routes/search.d.ts +5 -0
  114. package/dist/interfaces/rest/routes/search.d.ts.map +1 -0
  115. package/dist/interfaces/rest/routes/search.js +60 -0
  116. package/dist/interfaces/rest/routes/webhooks.d.ts +5 -0
  117. package/dist/interfaces/rest/routes/webhooks.d.ts.map +1 -0
  118. package/dist/interfaces/rest/routes/webhooks.js +39 -0
  119. package/dist/interfaces/rest/schemas/admin-jobs.d.ts +327 -0
  120. package/dist/interfaces/rest/schemas/admin-jobs.d.ts.map +1 -0
  121. package/dist/interfaces/rest/schemas/admin-jobs.js +37 -0
  122. package/dist/interfaces/rest/schemas/audit.d.ts +59 -0
  123. package/dist/interfaces/rest/schemas/audit.d.ts.map +1 -0
  124. package/dist/interfaces/rest/schemas/audit.js +43 -0
  125. package/dist/interfaces/rest/schemas/carts.d.ts +1446 -0
  126. package/dist/interfaces/rest/schemas/carts.d.ts.map +1 -0
  127. package/dist/interfaces/rest/schemas/carts.js +109 -0
  128. package/dist/interfaces/rest/schemas/catalog.d.ts +5416 -0
  129. package/dist/interfaces/rest/schemas/catalog.d.ts.map +1 -0
  130. package/dist/interfaces/rest/schemas/catalog.js +397 -0
  131. package/dist/interfaces/rest/schemas/checkout.d.ts +160 -0
  132. package/dist/interfaces/rest/schemas/checkout.d.ts.map +1 -0
  133. package/dist/interfaces/rest/schemas/checkout.js +60 -0
  134. package/dist/interfaces/rest/schemas/customer-portal.d.ts +2197 -0
  135. package/dist/interfaces/rest/schemas/customer-portal.d.ts.map +1 -0
  136. package/dist/interfaces/rest/schemas/customer-portal.js +177 -0
  137. package/dist/interfaces/rest/schemas/inventory.d.ts +469 -0
  138. package/dist/interfaces/rest/schemas/inventory.d.ts.map +1 -0
  139. package/dist/interfaces/rest/schemas/inventory.js +128 -0
  140. package/dist/interfaces/rest/schemas/media.d.ts +303 -0
  141. package/dist/interfaces/rest/schemas/media.d.ts.map +1 -0
  142. package/dist/interfaces/rest/schemas/media.js +69 -0
  143. package/dist/interfaces/rest/schemas/orders.d.ts +1782 -0
  144. package/dist/interfaces/rest/schemas/orders.d.ts.map +1 -0
  145. package/dist/interfaces/rest/schemas/orders.js +93 -0
  146. package/dist/interfaces/rest/schemas/pricing.d.ts +256 -0
  147. package/dist/interfaces/rest/schemas/pricing.d.ts.map +1 -0
  148. package/dist/interfaces/rest/schemas/pricing.js +72 -0
  149. package/dist/interfaces/rest/schemas/promotions.d.ts +363 -0
  150. package/dist/interfaces/rest/schemas/promotions.d.ts.map +1 -0
  151. package/dist/interfaces/rest/schemas/promotions.js +98 -0
  152. package/dist/interfaces/rest/schemas/responses.d.ts +4062 -0
  153. package/dist/interfaces/rest/schemas/responses.d.ts.map +1 -0
  154. package/dist/interfaces/rest/schemas/responses.js +63 -0
  155. package/dist/interfaces/rest/schemas/search.d.ts +245 -0
  156. package/dist/interfaces/rest/schemas/search.d.ts.map +1 -0
  157. package/dist/interfaces/rest/schemas/search.js +55 -0
  158. package/dist/interfaces/rest/schemas/shared.d.ts +95 -0
  159. package/dist/interfaces/rest/schemas/shared.d.ts.map +1 -0
  160. package/dist/interfaces/rest/schemas/shared.js +51 -0
  161. package/dist/interfaces/rest/schemas/webhooks.d.ts +221 -0
  162. package/dist/interfaces/rest/schemas/webhooks.d.ts.map +1 -0
  163. package/dist/interfaces/rest/schemas/webhooks.js +62 -0
  164. package/dist/interfaces/rest/utils.d.ts +45 -0
  165. package/dist/interfaces/rest/utils.d.ts.map +1 -0
  166. package/dist/interfaces/rest/utils.js +71 -0
  167. package/dist/interfaces/rest/webhook-router.d.ts +41 -0
  168. package/dist/interfaces/rest/webhook-router.d.ts.map +1 -0
  169. package/dist/interfaces/rest/webhook-router.js +36 -0
  170. package/dist/kernel/compensation/executor.d.ts +21 -0
  171. package/dist/kernel/compensation/executor.d.ts.map +1 -0
  172. package/dist/kernel/compensation/executor.js +36 -0
  173. package/dist/kernel/compensation/types.d.ts +25 -0
  174. package/dist/kernel/compensation/types.d.ts.map +1 -0
  175. package/dist/kernel/compensation/types.js +1 -0
  176. package/dist/kernel/database/adapter.d.ts +10 -0
  177. package/dist/kernel/database/adapter.d.ts.map +1 -0
  178. package/dist/kernel/database/adapter.js +3 -0
  179. package/dist/kernel/database/drizzle-db.d.ts +49 -0
  180. package/dist/kernel/database/drizzle-db.d.ts.map +1 -0
  181. package/dist/kernel/database/drizzle-db.js +20 -0
  182. package/dist/kernel/database/migrate.d.ts +38 -0
  183. package/dist/kernel/database/migrate.d.ts.map +1 -0
  184. package/dist/kernel/database/migrate.js +61 -0
  185. package/dist/kernel/database/plugin-types.d.ts +32 -0
  186. package/dist/kernel/database/plugin-types.d.ts.map +1 -0
  187. package/dist/kernel/database/plugin-types.js +10 -0
  188. package/dist/kernel/database/schema.d.ts +24 -0
  189. package/dist/kernel/database/schema.d.ts.map +1 -0
  190. package/dist/kernel/database/schema.js +36 -0
  191. package/dist/kernel/database/scoped-db.d.ts +20 -0
  192. package/dist/kernel/database/scoped-db.d.ts.map +1 -0
  193. package/dist/kernel/database/scoped-db.js +62 -0
  194. package/dist/kernel/database/tx-context.d.ts +15 -0
  195. package/dist/kernel/database/tx-context.d.ts.map +1 -0
  196. package/dist/kernel/database/tx-context.js +19 -0
  197. package/dist/kernel/error-mapper.d.ts +3 -0
  198. package/dist/kernel/error-mapper.d.ts.map +1 -0
  199. package/dist/kernel/error-mapper.js +12 -0
  200. package/dist/kernel/errors.d.ts +38 -0
  201. package/dist/kernel/errors.d.ts.map +1 -0
  202. package/dist/kernel/errors.js +69 -0
  203. package/dist/kernel/factory/in-memory-repository-factory.d.ts +20 -0
  204. package/dist/kernel/factory/in-memory-repository-factory.d.ts.map +1 -0
  205. package/dist/kernel/factory/in-memory-repository-factory.js +83 -0
  206. package/dist/kernel/factory/repository-factory.d.ts +71 -0
  207. package/dist/kernel/factory/repository-factory.d.ts.map +1 -0
  208. package/dist/kernel/factory/repository-factory.js +136 -0
  209. package/dist/kernel/hooks/create-context.d.ts +25 -0
  210. package/dist/kernel/hooks/create-context.d.ts.map +1 -0
  211. package/dist/kernel/hooks/create-context.js +22 -0
  212. package/dist/kernel/hooks/executor.d.ts +12 -0
  213. package/dist/kernel/hooks/executor.d.ts.map +1 -0
  214. package/dist/kernel/hooks/executor.js +50 -0
  215. package/dist/kernel/hooks/registry.d.ts +28 -0
  216. package/dist/kernel/hooks/registry.d.ts.map +1 -0
  217. package/dist/kernel/hooks/registry.js +58 -0
  218. package/dist/kernel/hooks/types.d.ts +37 -0
  219. package/dist/kernel/hooks/types.d.ts.map +1 -0
  220. package/dist/kernel/hooks/types.js +1 -0
  221. package/dist/kernel/http-error.d.ts +30 -0
  222. package/dist/kernel/http-error.d.ts.map +1 -0
  223. package/dist/kernel/http-error.js +35 -0
  224. package/dist/kernel/jobs/adapter.d.ts +25 -0
  225. package/dist/kernel/jobs/adapter.d.ts.map +1 -0
  226. package/dist/kernel/jobs/adapter.js +9 -0
  227. package/dist/kernel/jobs/drizzle-adapter.d.ts +15 -0
  228. package/dist/kernel/jobs/drizzle-adapter.d.ts.map +1 -0
  229. package/dist/kernel/jobs/drizzle-adapter.js +42 -0
  230. package/dist/kernel/jobs/runner.d.ts +24 -0
  231. package/dist/kernel/jobs/runner.d.ts.map +1 -0
  232. package/dist/kernel/jobs/runner.js +114 -0
  233. package/dist/kernel/jobs/schema.d.ts +280 -0
  234. package/dist/kernel/jobs/schema.d.ts.map +1 -0
  235. package/dist/kernel/jobs/schema.js +37 -0
  236. package/dist/kernel/jobs/types.d.ts +30 -0
  237. package/dist/kernel/jobs/types.d.ts.map +1 -0
  238. package/dist/kernel/jobs/types.js +1 -0
  239. package/dist/kernel/local-api.d.ts +103 -0
  240. package/dist/kernel/local-api.d.ts.map +1 -0
  241. package/dist/kernel/local-api.js +87 -0
  242. package/dist/kernel/plugin/capability-registry.d.ts +9 -0
  243. package/dist/kernel/plugin/capability-registry.d.ts.map +1 -0
  244. package/dist/kernel/plugin/capability-registry.js +28 -0
  245. package/dist/kernel/plugin/dependency-graph.d.ts +6 -0
  246. package/dist/kernel/plugin/dependency-graph.d.ts.map +1 -0
  247. package/dist/kernel/plugin/dependency-graph.js +55 -0
  248. package/dist/kernel/plugin/manifest.d.ts +90 -0
  249. package/dist/kernel/plugin/manifest.d.ts.map +1 -0
  250. package/dist/kernel/plugin/manifest.js +140 -0
  251. package/dist/kernel/query/executor.d.ts +21 -0
  252. package/dist/kernel/query/executor.d.ts.map +1 -0
  253. package/dist/kernel/query/executor.js +128 -0
  254. package/dist/kernel/query/registry.d.ts +33 -0
  255. package/dist/kernel/query/registry.d.ts.map +1 -0
  256. package/dist/kernel/query/registry.js +20 -0
  257. package/dist/kernel/result.d.ts +36 -0
  258. package/dist/kernel/result.d.ts.map +1 -0
  259. package/dist/kernel/result.js +16 -0
  260. package/dist/kernel/schema/extra-columns.d.ts +23 -0
  261. package/dist/kernel/schema/extra-columns.d.ts.map +1 -0
  262. package/dist/kernel/schema/extra-columns.js +10 -0
  263. package/dist/kernel/service-registry.d.ts +109 -0
  264. package/dist/kernel/service-registry.d.ts.map +1 -0
  265. package/dist/kernel/service-registry.js +26 -0
  266. package/dist/kernel/service-timing.d.ts +25 -0
  267. package/dist/kernel/service-timing.d.ts.map +1 -0
  268. package/dist/kernel/service-timing.js +62 -0
  269. package/dist/kernel/state-machine/machine.d.ts +24 -0
  270. package/dist/kernel/state-machine/machine.d.ts.map +1 -0
  271. package/dist/kernel/state-machine/machine.js +70 -0
  272. package/dist/modules/analytics/cubes.d.ts +19 -0
  273. package/dist/modules/analytics/cubes.d.ts.map +1 -0
  274. package/dist/modules/analytics/cubes.js +187 -0
  275. package/dist/modules/analytics/drizzle-adapter.d.ts +13 -0
  276. package/dist/modules/analytics/drizzle-adapter.d.ts.map +1 -0
  277. package/dist/modules/analytics/drizzle-adapter.js +358 -0
  278. package/dist/modules/analytics/hooks.d.ts +13 -0
  279. package/dist/modules/analytics/hooks.d.ts.map +1 -0
  280. package/dist/modules/analytics/hooks.js +12 -0
  281. package/dist/modules/analytics/models.d.ts +14 -0
  282. package/dist/modules/analytics/models.d.ts.map +1 -0
  283. package/dist/modules/analytics/models.js +118 -0
  284. package/dist/modules/analytics/repository/index.d.ts +5 -0
  285. package/dist/modules/analytics/repository/index.d.ts.map +1 -0
  286. package/dist/modules/analytics/repository/index.js +1 -0
  287. package/dist/modules/analytics/service.d.ts +45 -0
  288. package/dist/modules/analytics/service.d.ts.map +1 -0
  289. package/dist/modules/analytics/service.js +196 -0
  290. package/dist/modules/analytics/types.d.ts +119 -0
  291. package/dist/modules/analytics/types.d.ts.map +1 -0
  292. package/dist/modules/analytics/types.js +25 -0
  293. package/dist/modules/audit/hooks.d.ts +7 -0
  294. package/dist/modules/audit/hooks.d.ts.map +1 -0
  295. package/dist/modules/audit/hooks.js +67 -0
  296. package/dist/modules/audit/schema.d.ts +178 -0
  297. package/dist/modules/audit/schema.d.ts.map +1 -0
  298. package/dist/modules/audit/schema.js +21 -0
  299. package/dist/modules/audit/service.d.ts +38 -0
  300. package/dist/modules/audit/service.d.ts.map +1 -0
  301. package/dist/modules/audit/service.js +109 -0
  302. package/dist/modules/cart/access.d.ts +11 -0
  303. package/dist/modules/cart/access.d.ts.map +1 -0
  304. package/dist/modules/cart/access.js +18 -0
  305. package/dist/modules/cart/matcher.d.ts +20 -0
  306. package/dist/modules/cart/matcher.d.ts.map +1 -0
  307. package/dist/modules/cart/matcher.js +2 -0
  308. package/dist/modules/cart/repository/in-memory.d.ts +30 -0
  309. package/dist/modules/cart/repository/in-memory.d.ts.map +1 -0
  310. package/dist/modules/cart/repository/in-memory.js +159 -0
  311. package/dist/modules/cart/repository/index.d.ts +45 -0
  312. package/dist/modules/cart/repository/index.d.ts.map +1 -0
  313. package/dist/modules/cart/repository/index.js +158 -0
  314. package/dist/modules/cart/schema.d.ts +359 -0
  315. package/dist/modules/cart/schema.d.ts.map +1 -0
  316. package/dist/modules/cart/schema.js +40 -0
  317. package/dist/modules/cart/schemas.d.ts +29 -0
  318. package/dist/modules/cart/schemas.d.ts.map +1 -0
  319. package/dist/modules/cart/schemas.js +14 -0
  320. package/dist/modules/cart/service.d.ts +63 -0
  321. package/dist/modules/cart/service.d.ts.map +1 -0
  322. package/dist/modules/cart/service.js +339 -0
  323. package/dist/modules/catalog/repository/in-memory.d.ts +82 -0
  324. package/dist/modules/catalog/repository/in-memory.d.ts.map +1 -0
  325. package/dist/modules/catalog/repository/in-memory.js +444 -0
  326. package/dist/modules/catalog/repository/index.d.ts +106 -0
  327. package/dist/modules/catalog/repository/index.d.ts.map +1 -0
  328. package/dist/modules/catalog/repository/index.js +455 -0
  329. package/dist/modules/catalog/schema.d.ts +1193 -0
  330. package/dist/modules/catalog/schema.d.ts.map +1 -0
  331. package/dist/modules/catalog/schema.js +149 -0
  332. package/dist/modules/catalog/schemas.d.ts +81 -0
  333. package/dist/modules/catalog/schemas.d.ts.map +1 -0
  334. package/dist/modules/catalog/schemas.js +62 -0
  335. package/dist/modules/catalog/service.d.ts +160 -0
  336. package/dist/modules/catalog/service.d.ts.map +1 -0
  337. package/dist/modules/catalog/service.js +759 -0
  338. package/dist/modules/customers/repository/in-memory.d.ts +37 -0
  339. package/dist/modules/customers/repository/in-memory.d.ts.map +1 -0
  340. package/dist/modules/customers/repository/in-memory.js +278 -0
  341. package/dist/modules/customers/repository/index.d.ts +47 -0
  342. package/dist/modules/customers/repository/index.d.ts.map +1 -0
  343. package/dist/modules/customers/repository/index.js +206 -0
  344. package/dist/modules/customers/schema.d.ts +560 -0
  345. package/dist/modules/customers/schema.d.ts.map +1 -0
  346. package/dist/modules/customers/schema.js +60 -0
  347. package/dist/modules/customers/service.d.ts +25 -0
  348. package/dist/modules/customers/service.d.ts.map +1 -0
  349. package/dist/modules/customers/service.js +91 -0
  350. package/dist/modules/fulfillment/repository/in-memory.d.ts +53 -0
  351. package/dist/modules/fulfillment/repository/in-memory.d.ts.map +1 -0
  352. package/dist/modules/fulfillment/repository/in-memory.js +327 -0
  353. package/dist/modules/fulfillment/repository/index.d.ts +63 -0
  354. package/dist/modules/fulfillment/repository/index.d.ts.map +1 -0
  355. package/dist/modules/fulfillment/repository/index.js +268 -0
  356. package/dist/modules/fulfillment/schema.d.ts +655 -0
  357. package/dist/modules/fulfillment/schema.d.ts.map +1 -0
  358. package/dist/modules/fulfillment/schema.js +83 -0
  359. package/dist/modules/fulfillment/service.d.ts +58 -0
  360. package/dist/modules/fulfillment/service.d.ts.map +1 -0
  361. package/dist/modules/fulfillment/service.js +338 -0
  362. package/dist/modules/fulfillment/types.d.ts +44 -0
  363. package/dist/modules/fulfillment/types.d.ts.map +1 -0
  364. package/dist/modules/fulfillment/types.js +1 -0
  365. package/dist/modules/inventory/repository/in-memory.d.ts +51 -0
  366. package/dist/modules/inventory/repository/in-memory.d.ts.map +1 -0
  367. package/dist/modules/inventory/repository/in-memory.js +281 -0
  368. package/dist/modules/inventory/repository/index.d.ts +81 -0
  369. package/dist/modules/inventory/repository/index.d.ts.map +1 -0
  370. package/dist/modules/inventory/repository/index.js +310 -0
  371. package/dist/modules/inventory/schema.d.ts +570 -0
  372. package/dist/modules/inventory/schema.d.ts.map +1 -0
  373. package/dist/modules/inventory/schema.js +69 -0
  374. package/dist/modules/inventory/schemas.d.ts +31 -0
  375. package/dist/modules/inventory/schemas.d.ts.map +1 -0
  376. package/dist/modules/inventory/schemas.js +28 -0
  377. package/dist/modules/inventory/service.d.ts +65 -0
  378. package/dist/modules/inventory/service.d.ts.map +1 -0
  379. package/dist/modules/inventory/service.js +271 -0
  380. package/dist/modules/media/adapter.d.ts +16 -0
  381. package/dist/modules/media/adapter.d.ts.map +1 -0
  382. package/dist/modules/media/adapter.js +1 -0
  383. package/dist/modules/media/repository/in-memory.d.ts +26 -0
  384. package/dist/modules/media/repository/in-memory.d.ts.map +1 -0
  385. package/dist/modules/media/repository/in-memory.js +145 -0
  386. package/dist/modules/media/repository/index.d.ts +35 -0
  387. package/dist/modules/media/repository/index.d.ts.map +1 -0
  388. package/dist/modules/media/repository/index.js +176 -0
  389. package/dist/modules/media/schema.d.ts +289 -0
  390. package/dist/modules/media/schema.d.ts.map +1 -0
  391. package/dist/modules/media/schema.js +35 -0
  392. package/dist/modules/media/service.d.ts +42 -0
  393. package/dist/modules/media/service.d.ts.map +1 -0
  394. package/dist/modules/media/service.js +89 -0
  395. package/dist/modules/orders/repository/in-memory.d.ts +40 -0
  396. package/dist/modules/orders/repository/in-memory.d.ts.map +1 -0
  397. package/dist/modules/orders/repository/in-memory.js +245 -0
  398. package/dist/modules/orders/repository/index.d.ts +48 -0
  399. package/dist/modules/orders/repository/index.d.ts.map +1 -0
  400. package/dist/modules/orders/repository/index.js +199 -0
  401. package/dist/modules/orders/schema.d.ts +672 -0
  402. package/dist/modules/orders/schema.d.ts.map +1 -0
  403. package/dist/modules/orders/schema.js +63 -0
  404. package/dist/modules/orders/service.d.ts +85 -0
  405. package/dist/modules/orders/service.d.ts.map +1 -0
  406. package/dist/modules/orders/service.js +313 -0
  407. package/dist/modules/orders/stale-order-cleanup.d.ts +27 -0
  408. package/dist/modules/orders/stale-order-cleanup.d.ts.map +1 -0
  409. package/dist/modules/orders/stale-order-cleanup.js +55 -0
  410. package/dist/modules/organization/service.d.ts +53 -0
  411. package/dist/modules/organization/service.d.ts.map +1 -0
  412. package/dist/modules/organization/service.js +151 -0
  413. package/dist/modules/payments/adapter.d.ts +42 -0
  414. package/dist/modules/payments/adapter.d.ts.map +1 -0
  415. package/dist/modules/payments/adapter.js +1 -0
  416. package/dist/modules/payments/repository/index.d.ts +5 -0
  417. package/dist/modules/payments/repository/index.d.ts.map +1 -0
  418. package/dist/modules/payments/repository/index.js +1 -0
  419. package/dist/modules/payments/service.d.ts +23 -0
  420. package/dist/modules/payments/service.d.ts.map +1 -0
  421. package/dist/modules/payments/service.js +72 -0
  422. package/dist/modules/pricing/repository/in-memory.d.ts +25 -0
  423. package/dist/modules/pricing/repository/in-memory.d.ts.map +1 -0
  424. package/dist/modules/pricing/repository/in-memory.js +288 -0
  425. package/dist/modules/pricing/repository/index.d.ts +34 -0
  426. package/dist/modules/pricing/repository/index.d.ts.map +1 -0
  427. package/dist/modules/pricing/repository/index.js +176 -0
  428. package/dist/modules/pricing/schema.d.ts +565 -0
  429. package/dist/modules/pricing/schema.d.ts.map +1 -0
  430. package/dist/modules/pricing/schema.js +57 -0
  431. package/dist/modules/pricing/schemas.d.ts +37 -0
  432. package/dist/modules/pricing/schemas.d.ts.map +1 -0
  433. package/dist/modules/pricing/schemas.js +30 -0
  434. package/dist/modules/pricing/service.d.ts +62 -0
  435. package/dist/modules/pricing/service.d.ts.map +1 -0
  436. package/dist/modules/pricing/service.js +308 -0
  437. package/dist/modules/promotions/repository/in-memory.d.ts +32 -0
  438. package/dist/modules/promotions/repository/in-memory.d.ts.map +1 -0
  439. package/dist/modules/promotions/repository/in-memory.js +227 -0
  440. package/dist/modules/promotions/repository/index.d.ts +41 -0
  441. package/dist/modules/promotions/repository/index.d.ts.map +1 -0
  442. package/dist/modules/promotions/repository/index.js +204 -0
  443. package/dist/modules/promotions/schema.d.ts +427 -0
  444. package/dist/modules/promotions/schema.d.ts.map +1 -0
  445. package/dist/modules/promotions/schema.js +52 -0
  446. package/dist/modules/promotions/schemas.d.ts +33 -0
  447. package/dist/modules/promotions/schemas.d.ts.map +1 -0
  448. package/dist/modules/promotions/schemas.js +32 -0
  449. package/dist/modules/promotions/service.d.ts +80 -0
  450. package/dist/modules/promotions/service.d.ts.map +1 -0
  451. package/dist/modules/promotions/service.js +347 -0
  452. package/dist/modules/search/adapter.d.ts +51 -0
  453. package/dist/modules/search/adapter.d.ts.map +1 -0
  454. package/dist/modules/search/adapter.js +1 -0
  455. package/dist/modules/search/hooks.d.ts +8 -0
  456. package/dist/modules/search/hooks.d.ts.map +1 -0
  457. package/dist/modules/search/hooks.js +6 -0
  458. package/dist/modules/search/repository/index.d.ts +5 -0
  459. package/dist/modules/search/repository/index.d.ts.map +1 -0
  460. package/dist/modules/search/repository/index.js +1 -0
  461. package/dist/modules/search/service.d.ts +24 -0
  462. package/dist/modules/search/service.d.ts.map +1 -0
  463. package/dist/modules/search/service.js +217 -0
  464. package/dist/modules/shipping/calculator.d.ts +42 -0
  465. package/dist/modules/shipping/calculator.d.ts.map +1 -0
  466. package/dist/modules/shipping/calculator.js +91 -0
  467. package/dist/modules/shipping/repository/index.d.ts +5 -0
  468. package/dist/modules/shipping/repository/index.d.ts.map +1 -0
  469. package/dist/modules/shipping/repository/index.js +1 -0
  470. package/dist/modules/shipping/service.d.ts +28 -0
  471. package/dist/modules/shipping/service.d.ts.map +1 -0
  472. package/dist/modules/shipping/service.js +20 -0
  473. package/dist/modules/tax/adapter.d.ts +58 -0
  474. package/dist/modules/tax/adapter.d.ts.map +1 -0
  475. package/dist/modules/tax/adapter.js +1 -0
  476. package/dist/modules/tax/repository/index.d.ts +5 -0
  477. package/dist/modules/tax/repository/index.d.ts.map +1 -0
  478. package/dist/modules/tax/repository/index.js +1 -0
  479. package/dist/modules/tax/service.d.ts +19 -0
  480. package/dist/modules/tax/service.d.ts.map +1 -0
  481. package/dist/modules/tax/service.js +34 -0
  482. package/dist/modules/webhooks/hook.d.ts +13 -0
  483. package/dist/modules/webhooks/hook.d.ts.map +1 -0
  484. package/dist/modules/webhooks/hook.js +29 -0
  485. package/dist/modules/webhooks/repository/in-memory.d.ts +31 -0
  486. package/dist/modules/webhooks/repository/in-memory.d.ts.map +1 -0
  487. package/dist/modules/webhooks/repository/in-memory.js +187 -0
  488. package/dist/modules/webhooks/repository/index.d.ts +40 -0
  489. package/dist/modules/webhooks/repository/index.d.ts.map +1 -0
  490. package/dist/modules/webhooks/repository/index.js +175 -0
  491. package/dist/modules/webhooks/schema.d.ts +404 -0
  492. package/dist/modules/webhooks/schema.d.ts.map +1 -0
  493. package/dist/modules/webhooks/schema.js +40 -0
  494. package/dist/modules/webhooks/service.d.ts +23 -0
  495. package/dist/modules/webhooks/service.d.ts.map +1 -0
  496. package/dist/modules/webhooks/service.js +92 -0
  497. package/dist/modules/webhooks/signing.d.ts +2 -0
  498. package/dist/modules/webhooks/signing.d.ts.map +1 -0
  499. package/dist/modules/webhooks/signing.js +5 -0
  500. package/dist/modules/webhooks/ssrf-guard.d.ts +19 -0
  501. package/dist/modules/webhooks/ssrf-guard.d.ts.map +1 -0
  502. package/dist/modules/webhooks/ssrf-guard.js +79 -0
  503. package/dist/modules/webhooks/tasks.d.ts +16 -0
  504. package/dist/modules/webhooks/tasks.d.ts.map +1 -0
  505. package/dist/modules/webhooks/tasks.js +35 -0
  506. package/dist/modules/webhooks/worker.d.ts +21 -0
  507. package/dist/modules/webhooks/worker.d.ts.map +1 -0
  508. package/dist/modules/webhooks/worker.js +113 -0
  509. package/dist/runtime/commerce.d.ts +110 -0
  510. package/dist/runtime/commerce.d.ts.map +1 -0
  511. package/dist/runtime/commerce.js +37 -0
  512. package/dist/runtime/kernel.d.ts +72 -0
  513. package/dist/runtime/kernel.d.ts.map +1 -0
  514. package/dist/runtime/kernel.js +298 -0
  515. package/dist/runtime/logger.d.ts +11 -0
  516. package/dist/runtime/logger.d.ts.map +1 -0
  517. package/dist/runtime/logger.js +32 -0
  518. package/dist/runtime/server.d.ts +28 -0
  519. package/dist/runtime/server.d.ts.map +1 -0
  520. package/dist/runtime/server.js +277 -0
  521. package/dist/runtime/shutdown.d.ts +15 -0
  522. package/dist/runtime/shutdown.d.ts.map +1 -0
  523. package/dist/runtime/shutdown.js +34 -0
  524. package/dist/runtime/state-manager.d.ts +14 -0
  525. package/dist/runtime/state-manager.d.ts.map +1 -0
  526. package/dist/runtime/state-manager.js +84 -0
  527. package/dist/runtime/state-repository.d.ts +13 -0
  528. package/dist/runtime/state-repository.d.ts.map +1 -0
  529. package/dist/runtime/state-repository.js +160 -0
  530. package/dist/runtime/state.d.ts +382 -0
  531. package/dist/runtime/state.d.ts.map +1 -0
  532. package/dist/runtime/state.js +37 -0
  533. package/dist/runtime/store.d.ts +382 -0
  534. package/dist/runtime/store.d.ts.map +1 -0
  535. package/dist/runtime/store.js +37 -0
  536. package/dist/test-utils/create-pglite-adapter.d.ts +32 -0
  537. package/dist/test-utils/create-pglite-adapter.d.ts.map +1 -0
  538. package/dist/test-utils/create-pglite-adapter.js +106 -0
  539. package/dist/test-utils/create-plugin-test-app.d.ts +50 -0
  540. package/dist/test-utils/create-plugin-test-app.d.ts.map +1 -0
  541. package/dist/test-utils/create-plugin-test-app.js +74 -0
  542. package/dist/test-utils/create-repository-test-harness.d.ts +8 -0
  543. package/dist/test-utils/create-repository-test-harness.d.ts.map +1 -0
  544. package/dist/test-utils/create-repository-test-harness.js +7 -0
  545. package/dist/test-utils/create-test-config.d.ts +18 -0
  546. package/dist/test-utils/create-test-config.d.ts.map +1 -0
  547. package/dist/test-utils/create-test-config.js +174 -0
  548. package/dist/test-utils/create-test-kernel.d.ts +3 -0
  549. package/dist/test-utils/create-test-kernel.d.ts.map +1 -0
  550. package/dist/test-utils/create-test-kernel.js +5 -0
  551. package/dist/test-utils/create-test-plugin-context.d.ts +42 -0
  552. package/dist/test-utils/create-test-plugin-context.d.ts.map +1 -0
  553. package/dist/test-utils/create-test-plugin-context.js +46 -0
  554. package/dist/test-utils/rest-api-test-utils.d.ts +64 -0
  555. package/dist/test-utils/rest-api-test-utils.d.ts.map +1 -0
  556. package/dist/test-utils/rest-api-test-utils.js +207 -0
  557. package/dist/test-utils/test-actors.d.ts +15 -0
  558. package/dist/test-utils/test-actors.d.ts.map +1 -0
  559. package/dist/test-utils/test-actors.js +57 -0
  560. package/dist/test-utils/typed-hooks.d.ts +43 -0
  561. package/dist/test-utils/typed-hooks.d.ts.map +1 -0
  562. package/dist/test-utils/typed-hooks.js +35 -0
  563. package/dist/tsconfig.tsbuildinfo +1 -0
  564. package/dist/types/commerce-types.d.ts +34 -0
  565. package/dist/types/commerce-types.d.ts.map +1 -0
  566. package/dist/types/commerce-types.js +1 -0
  567. package/dist/utils/id.d.ts +2 -0
  568. package/dist/utils/id.d.ts.map +1 -0
  569. package/dist/utils/id.js +3 -0
  570. package/dist/utils/logger.d.ts +3 -0
  571. package/dist/utils/logger.d.ts.map +1 -0
  572. package/dist/utils/logger.js +16 -0
  573. package/dist/utils/pagination.d.ts +11 -0
  574. package/dist/utils/pagination.d.ts.map +1 -0
  575. package/dist/utils/pagination.js +15 -0
  576. package/package.json +63 -0
  577. package/src/adapters/console-email.ts +43 -0
  578. package/src/auth/access.ts +187 -0
  579. package/src/auth/auth-schema.ts +131 -0
  580. package/src/auth/middleware.ts +115 -0
  581. package/src/auth/org.ts +41 -0
  582. package/src/auth/permissions.ts +28 -0
  583. package/src/auth/setup.ts +160 -0
  584. package/src/auth/system-actor.ts +19 -0
  585. package/src/auth/types.ts +10 -0
  586. package/src/config/defaults.ts +82 -0
  587. package/src/config/define-config.ts +53 -0
  588. package/src/config/types.ts +299 -0
  589. package/src/generated/plugin-capabilities.d.ts +20 -0
  590. package/src/generated/plugin-manifest.ts +23 -0
  591. package/src/generated/plugin-repositories.d.ts +20 -0
  592. package/src/hooks/checkout-completion.ts +262 -0
  593. package/src/hooks/checkout.ts +677 -0
  594. package/src/hooks/order-emails.ts +62 -0
  595. package/src/index.ts +214 -0
  596. package/src/interfaces/mcp/agent-prompt.ts +174 -0
  597. package/src/interfaces/mcp/context-enrichment.ts +177 -0
  598. package/src/interfaces/mcp/server.ts +617 -0
  599. package/src/interfaces/mcp/transport.ts +68 -0
  600. package/src/interfaces/rest/customer-portal.ts +299 -0
  601. package/src/interfaces/rest/index.ts +74 -0
  602. package/src/interfaces/rest/router.ts +334 -0
  603. package/src/interfaces/rest/routes/admin-jobs.ts +58 -0
  604. package/src/interfaces/rest/routes/audit.ts +50 -0
  605. package/src/interfaces/rest/routes/carts.ts +89 -0
  606. package/src/interfaces/rest/routes/catalog.ts +493 -0
  607. package/src/interfaces/rest/routes/checkout.ts +283 -0
  608. package/src/interfaces/rest/routes/inventory.ts +70 -0
  609. package/src/interfaces/rest/routes/media.ts +86 -0
  610. package/src/interfaces/rest/routes/orders.ts +78 -0
  611. package/src/interfaces/rest/routes/payments.ts +60 -0
  612. package/src/interfaces/rest/routes/pricing.ts +57 -0
  613. package/src/interfaces/rest/routes/promotions.ts +92 -0
  614. package/src/interfaces/rest/routes/search.ts +71 -0
  615. package/src/interfaces/rest/routes/webhooks.ts +46 -0
  616. package/src/interfaces/rest/schemas/admin-jobs.ts +40 -0
  617. package/src/interfaces/rest/schemas/audit.ts +46 -0
  618. package/src/interfaces/rest/schemas/carts.ts +125 -0
  619. package/src/interfaces/rest/schemas/catalog.ts +450 -0
  620. package/src/interfaces/rest/schemas/checkout.ts +66 -0
  621. package/src/interfaces/rest/schemas/customer-portal.ts +195 -0
  622. package/src/interfaces/rest/schemas/inventory.ts +138 -0
  623. package/src/interfaces/rest/schemas/media.ts +75 -0
  624. package/src/interfaces/rest/schemas/orders.ts +104 -0
  625. package/src/interfaces/rest/schemas/pricing.ts +80 -0
  626. package/src/interfaces/rest/schemas/promotions.ts +110 -0
  627. package/src/interfaces/rest/schemas/responses.ts +85 -0
  628. package/src/interfaces/rest/schemas/search.ts +58 -0
  629. package/src/interfaces/rest/schemas/shared.ts +62 -0
  630. package/src/interfaces/rest/schemas/webhooks.ts +68 -0
  631. package/src/interfaces/rest/utils.ts +104 -0
  632. package/src/interfaces/rest/webhook-router.ts +50 -0
  633. package/src/kernel/compensation/executor.ts +61 -0
  634. package/src/kernel/compensation/types.ts +26 -0
  635. package/src/kernel/database/adapter.ts +13 -0
  636. package/src/kernel/database/drizzle-db.ts +56 -0
  637. package/src/kernel/database/migrate.ts +76 -0
  638. package/src/kernel/database/plugin-types.ts +34 -0
  639. package/src/kernel/database/schema.ts +49 -0
  640. package/src/kernel/database/scoped-db.ts +68 -0
  641. package/src/kernel/database/tx-context.ts +46 -0
  642. package/src/kernel/error-mapper.ts +15 -0
  643. package/src/kernel/errors.ts +89 -0
  644. package/src/kernel/factory/repository-factory.ts +242 -0
  645. package/src/kernel/hooks/create-context.ts +43 -0
  646. package/src/kernel/hooks/executor.ts +88 -0
  647. package/src/kernel/hooks/registry.ts +74 -0
  648. package/src/kernel/hooks/types.ts +52 -0
  649. package/src/kernel/http-error.ts +44 -0
  650. package/src/kernel/jobs/adapter.ts +36 -0
  651. package/src/kernel/jobs/drizzle-adapter.ts +58 -0
  652. package/src/kernel/jobs/runner.ts +153 -0
  653. package/src/kernel/jobs/schema.ts +46 -0
  654. package/src/kernel/jobs/types.ts +30 -0
  655. package/src/kernel/local-api.ts +185 -0
  656. package/src/kernel/plugin/manifest.ts +253 -0
  657. package/src/kernel/query/executor.ts +184 -0
  658. package/src/kernel/query/registry.ts +46 -0
  659. package/src/kernel/result.ts +33 -0
  660. package/src/kernel/schema/extra-columns.ts +37 -0
  661. package/src/kernel/service-registry.ts +76 -0
  662. package/src/kernel/service-timing.ts +89 -0
  663. package/src/kernel/state-machine/machine.ts +101 -0
  664. package/src/modules/analytics/drizzle-adapter.ts +426 -0
  665. package/src/modules/analytics/hooks.ts +11 -0
  666. package/src/modules/analytics/models.ts +125 -0
  667. package/src/modules/analytics/repository/index.ts +6 -0
  668. package/src/modules/analytics/service.ts +245 -0
  669. package/src/modules/analytics/types.ts +180 -0
  670. package/src/modules/audit/hooks.ts +78 -0
  671. package/src/modules/audit/schema.ts +33 -0
  672. package/src/modules/audit/service.ts +151 -0
  673. package/src/modules/cart/access.ts +27 -0
  674. package/src/modules/cart/matcher.ts +26 -0
  675. package/src/modules/cart/repository/index.ts +234 -0
  676. package/src/modules/cart/schema.ts +42 -0
  677. package/src/modules/cart/schemas.ts +38 -0
  678. package/src/modules/cart/service.ts +541 -0
  679. package/src/modules/catalog/repository/index.ts +772 -0
  680. package/src/modules/catalog/schema.ts +203 -0
  681. package/src/modules/catalog/schemas.ts +104 -0
  682. package/src/modules/catalog/service.ts +1544 -0
  683. package/src/modules/customers/repository/index.ts +327 -0
  684. package/src/modules/customers/schema.ts +64 -0
  685. package/src/modules/customers/service.ts +171 -0
  686. package/src/modules/fulfillment/repository/index.ts +426 -0
  687. package/src/modules/fulfillment/schema.ts +101 -0
  688. package/src/modules/fulfillment/service.ts +555 -0
  689. package/src/modules/fulfillment/types.ts +59 -0
  690. package/src/modules/inventory/repository/index.ts +509 -0
  691. package/src/modules/inventory/schema.ts +94 -0
  692. package/src/modules/inventory/schemas.ts +38 -0
  693. package/src/modules/inventory/service.ts +490 -0
  694. package/src/modules/media/adapter.ts +17 -0
  695. package/src/modules/media/repository/index.ts +274 -0
  696. package/src/modules/media/schema.ts +41 -0
  697. package/src/modules/media/service.ts +151 -0
  698. package/src/modules/orders/repository/index.ts +287 -0
  699. package/src/modules/orders/schema.ts +66 -0
  700. package/src/modules/orders/service.ts +619 -0
  701. package/src/modules/orders/stale-order-cleanup.ts +76 -0
  702. package/src/modules/organization/service.ts +191 -0
  703. package/src/modules/payments/adapter.ts +47 -0
  704. package/src/modules/payments/repository/index.ts +6 -0
  705. package/src/modules/payments/service.ts +107 -0
  706. package/src/modules/pricing/repository/index.ts +291 -0
  707. package/src/modules/pricing/schema.ts +71 -0
  708. package/src/modules/pricing/schemas.ts +38 -0
  709. package/src/modules/pricing/service.ts +494 -0
  710. package/src/modules/promotions/repository/index.ts +325 -0
  711. package/src/modules/promotions/schema.ts +62 -0
  712. package/src/modules/promotions/schemas.ts +38 -0
  713. package/src/modules/promotions/service.ts +598 -0
  714. package/src/modules/search/adapter.ts +57 -0
  715. package/src/modules/search/hooks.ts +12 -0
  716. package/src/modules/search/repository/index.ts +6 -0
  717. package/src/modules/search/service.ts +315 -0
  718. package/src/modules/shipping/calculator.ts +188 -0
  719. package/src/modules/shipping/repository/index.ts +6 -0
  720. package/src/modules/shipping/service.ts +51 -0
  721. package/src/modules/tax/adapter.ts +60 -0
  722. package/src/modules/tax/repository/index.ts +6 -0
  723. package/src/modules/tax/service.ts +53 -0
  724. package/src/modules/webhooks/hook.ts +34 -0
  725. package/src/modules/webhooks/repository/index.ts +278 -0
  726. package/src/modules/webhooks/schema.ts +56 -0
  727. package/src/modules/webhooks/service.ts +117 -0
  728. package/src/modules/webhooks/signing.ts +6 -0
  729. package/src/modules/webhooks/ssrf-guard.ts +71 -0
  730. package/src/modules/webhooks/tasks.ts +52 -0
  731. package/src/modules/webhooks/worker.ts +134 -0
  732. package/src/runtime/commerce.ts +145 -0
  733. package/src/runtime/kernel.ts +419 -0
  734. package/src/runtime/logger.ts +36 -0
  735. package/src/runtime/server.ts +345 -0
  736. package/src/runtime/shutdown.ts +43 -0
  737. package/src/test-utils/create-pglite-adapter.ts +129 -0
  738. package/src/test-utils/create-plugin-test-app.ts +128 -0
  739. package/src/test-utils/create-repository-test-harness.ts +16 -0
  740. package/src/test-utils/create-test-config.ts +190 -0
  741. package/src/test-utils/create-test-kernel.ts +7 -0
  742. package/src/test-utils/create-test-plugin-context.ts +75 -0
  743. package/src/test-utils/rest-api-test-utils.ts +265 -0
  744. package/src/test-utils/test-actors.ts +62 -0
  745. package/src/test-utils/typed-hooks.ts +54 -0
  746. package/src/types/commerce-types.ts +34 -0
  747. package/src/utils/id.ts +3 -0
  748. package/src/utils/logger.ts +18 -0
  749. package/src/utils/pagination.ts +22 -0
@@ -0,0 +1,4 @@
1
+ import { Hono } from "hono";
2
+ import type { Kernel } from "../../runtime/kernel";
3
+ export declare function createGraphQLHandler(kernel: Kernel): Hono<any, import("hono/types").BlankSchema, "/">;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/graphql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAydnD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,oDAYlD"}
@@ -0,0 +1,415 @@
1
+ import { Hono } from "hono";
2
+ import { createSchema, createYoga } from "graphql-yoga";
3
+ import { applyPromotionCodes, authorizePayment, calculateShipping, calculateTax, checkInventoryAvailability, resolveCurrentPrices, validateCartNotEmpty, validatePaymentMethod, } from "../../hooks/checkout";
4
+ import { makeId } from "../../utils/id";
5
+ import { runAfterHooks, runBeforeHooks } from "../../kernel/hooks/executor";
6
+ function getGraphQLActor(kernel) {
7
+ const base = kernel.getMCPActor();
8
+ return {
9
+ ...base,
10
+ permissions: Array.from(new Set([
11
+ ...base.permissions,
12
+ "catalog:create",
13
+ "catalog:update",
14
+ "catalog:read",
15
+ "cart:create",
16
+ "cart:update",
17
+ "orders:create",
18
+ "orders:read",
19
+ "orders:update",
20
+ "inventory:read",
21
+ ])),
22
+ };
23
+ }
24
+ function toIso(value) {
25
+ if (!value)
26
+ return null;
27
+ const date = value instanceof Date ? value : new Date(String(value));
28
+ return Number.isNaN(date.getTime()) ? null : date.toISOString();
29
+ }
30
+ function gqlFieldName(name) {
31
+ const normalized = name.replace(/[^A-Za-z0-9_]/g, "_");
32
+ return /^[A-Za-z_]/.test(normalized) ? normalized : `f_${normalized}`;
33
+ }
34
+ function buildEntityCustomFieldMap(kernel) {
35
+ const seen = new Set();
36
+ const output = [];
37
+ for (const entityConfig of Object.values(kernel.config.entities ?? {})) {
38
+ for (const field of entityConfig.fields) {
39
+ if (seen.has(field.name))
40
+ continue;
41
+ seen.add(field.name);
42
+ const gqlType = field.type === "number"
43
+ ? "Float"
44
+ : field.type === "boolean"
45
+ ? "Boolean"
46
+ : "String";
47
+ output.push({
48
+ sourceName: field.name,
49
+ gqlName: gqlFieldName(field.name),
50
+ gqlType,
51
+ });
52
+ }
53
+ }
54
+ return output;
55
+ }
56
+ function buildSchema(kernel) {
57
+ const customFields = buildEntityCustomFieldMap(kernel);
58
+ const customFieldSDL = customFields.map((field) => `${field.gqlName}: ${field.gqlType}`).join("\n ");
59
+ const typeDefs = /* GraphQL */ `
60
+ type Query {
61
+ entity(idOrSlug: String!): Entity
62
+ entities(type: String, status: String, page: Int, limit: Int): EntityList!
63
+ cart(id: ID!): Cart
64
+ order(id: ID, orderNumber: String): Order
65
+ orders(page: Int, limit: Int, status: String): OrderList!
66
+ }
67
+
68
+ type Mutation {
69
+ createEntity(type: String!, slug: String!, title: String!, description: String, basePrice: Int): Entity
70
+ updateEntity(id: ID!, slug: String, status: String, isVisible: Boolean): Entity
71
+ addToCart(cartId: ID!, entityId: ID!, variantId: ID, quantity: Int): Cart
72
+ checkout(
73
+ cartId: ID!
74
+ paymentMethodId: String!
75
+ customerId: String
76
+ customerGroupIds: [String!]
77
+ promotionCodes: [String!]
78
+ currency: String
79
+ ): Order
80
+ }
81
+
82
+ type Pagination {
83
+ page: Int!
84
+ limit: Int!
85
+ totalItems: Int!
86
+ totalPages: Int!
87
+ hasNext: Boolean!
88
+ hasPrev: Boolean!
89
+ }
90
+
91
+ type EntityList {
92
+ items: [Entity!]!
93
+ pagination: Pagination!
94
+ }
95
+
96
+ type OrderList {
97
+ items: [Order!]!
98
+ pagination: Pagination!
99
+ }
100
+
101
+ type Entity {
102
+ id: ID!
103
+ type: String!
104
+ slug: String!
105
+ status: String!
106
+ isVisible: Boolean!
107
+ metadata: String
108
+ createdAt: String!
109
+ updatedAt: String!
110
+ publishedAt: String
111
+ ${customFieldSDL}
112
+ }
113
+
114
+ type CartLineItem {
115
+ id: ID!
116
+ entityId: ID!
117
+ variantId: ID
118
+ quantity: Int!
119
+ unitPriceSnapshot: Int!
120
+ currency: String!
121
+ addedAt: String!
122
+ }
123
+
124
+ type Cart {
125
+ id: ID!
126
+ customerId: String
127
+ status: String!
128
+ currency: String!
129
+ createdAt: String!
130
+ updatedAt: String!
131
+ expiresAt: String!
132
+ lineItems: [CartLineItem!]!
133
+ }
134
+
135
+ type OrderLineItem {
136
+ id: ID!
137
+ orderId: ID!
138
+ entityId: ID!
139
+ entityType: String!
140
+ variantId: ID
141
+ sku: String
142
+ title: String!
143
+ quantity: Int!
144
+ unitPrice: Int!
145
+ totalPrice: Int!
146
+ taxAmount: Int!
147
+ discountAmount: Int!
148
+ fulfillmentStatus: String!
149
+ }
150
+
151
+ type Order {
152
+ id: ID!
153
+ orderNumber: String!
154
+ customerId: String
155
+ status: String!
156
+ currency: String!
157
+ subtotal: Int!
158
+ taxTotal: Int!
159
+ shippingTotal: Int!
160
+ discountTotal: Int!
161
+ grandTotal: Int!
162
+ placedAt: String!
163
+ fulfilledAt: String
164
+ cancelledAt: String
165
+ lineItems: [OrderLineItem!]!
166
+ }
167
+ `;
168
+ const customFieldResolvers = Object.fromEntries(customFields.map((field) => [
169
+ field.gqlName,
170
+ (entity) => {
171
+ const values = kernel.store.customFields.get(entity.id) ?? [];
172
+ const hit = values.find((item) => item.fieldName === field.sourceName);
173
+ if (!hit)
174
+ return null;
175
+ if (field.gqlType === "Float")
176
+ return Number(hit.value);
177
+ if (field.gqlType === "Boolean")
178
+ return Boolean(hit.value);
179
+ return String(hit.value);
180
+ },
181
+ ]));
182
+ const resolvers = {
183
+ Query: {
184
+ entity: async (_root, args) => {
185
+ const result = args.idOrSlug.includes("-")
186
+ ? await kernel.services.catalog.getById(args.idOrSlug)
187
+ : await kernel.services.catalog.getBySlug(args.idOrSlug);
188
+ return result.ok ? result.value : null;
189
+ },
190
+ entities: async (_root, args) => {
191
+ const result = await kernel.services.catalog.list({
192
+ filter: {
193
+ ...(args.type !== undefined ? { type: args.type } : {}),
194
+ ...(args.status !== undefined ? { status: args.status } : {}),
195
+ },
196
+ pagination: {
197
+ page: args.page ?? 1,
198
+ limit: args.limit ?? 20,
199
+ },
200
+ });
201
+ if (!result.ok) {
202
+ return {
203
+ items: [],
204
+ pagination: {
205
+ page: args.page ?? 1,
206
+ limit: args.limit ?? 20,
207
+ totalItems: 0,
208
+ totalPages: 0,
209
+ hasNext: false,
210
+ hasPrev: false,
211
+ },
212
+ };
213
+ }
214
+ return result.value;
215
+ },
216
+ cart: async (_root, args) => {
217
+ const result = await kernel.services.cart.getById(args.id);
218
+ return result.ok ? result.value : null;
219
+ },
220
+ order: async (_root, args) => {
221
+ const actor = getGraphQLActor(kernel);
222
+ if (args.id) {
223
+ const result = await kernel.services.orders.getById(args.id, actor);
224
+ return result.ok ? result.value : null;
225
+ }
226
+ if (args.orderNumber) {
227
+ const result = await kernel.services.orders.getByNumber(args.orderNumber, actor);
228
+ return result.ok ? result.value : null;
229
+ }
230
+ return null;
231
+ },
232
+ orders: async (_root, args) => {
233
+ const actor = getGraphQLActor(kernel);
234
+ const result = await kernel.services.orders.list({
235
+ page: args.page ?? 1,
236
+ limit: args.limit ?? 20,
237
+ ...(args.status !== undefined ? { status: args.status } : {}),
238
+ }, actor);
239
+ if (!result.ok) {
240
+ return {
241
+ items: [],
242
+ pagination: {
243
+ page: args.page ?? 1,
244
+ limit: args.limit ?? 20,
245
+ totalItems: 0,
246
+ totalPages: 0,
247
+ hasNext: false,
248
+ hasPrev: false,
249
+ },
250
+ };
251
+ }
252
+ return result.value;
253
+ },
254
+ },
255
+ Mutation: {
256
+ createEntity: async (_root, args) => {
257
+ const actor = getGraphQLActor(kernel);
258
+ const result = await kernel.services.catalog.create({
259
+ type: args.type,
260
+ slug: args.slug,
261
+ attributes: {
262
+ title: args.title,
263
+ ...(args.description !== undefined ? { description: args.description } : {}),
264
+ },
265
+ metadata: {
266
+ ...(args.basePrice !== undefined ? { basePrice: args.basePrice } : {}),
267
+ },
268
+ }, actor);
269
+ return result.ok ? result.value : null;
270
+ },
271
+ updateEntity: async (_root, args) => {
272
+ const actor = getGraphQLActor(kernel);
273
+ const result = await kernel.services.catalog.update(args.id, {
274
+ ...(args.slug !== undefined ? { slug: args.slug } : {}),
275
+ ...(args.status !== undefined ? { status: args.status } : {}),
276
+ ...(args.isVisible !== undefined ? { isVisible: args.isVisible } : {}),
277
+ }, actor);
278
+ return result.ok ? result.value : null;
279
+ },
280
+ addToCart: async (_root, args) => {
281
+ const actor = getGraphQLActor(kernel);
282
+ const added = await kernel.services.cart.addItem({
283
+ cartId: args.cartId,
284
+ entityId: args.entityId,
285
+ quantity: args.quantity ?? 1,
286
+ ...(args.variantId !== undefined ? { variantId: args.variantId } : {}),
287
+ }, actor);
288
+ if (!added.ok)
289
+ return null;
290
+ const cart = await kernel.services.cart.getById(args.cartId);
291
+ return cart.ok ? cart.value : null;
292
+ },
293
+ checkout: async (_root, args) => {
294
+ const actor = getGraphQLActor(kernel);
295
+ const checkoutData = {
296
+ checkoutId: makeId(),
297
+ cartId: args.cartId,
298
+ currency: args.currency ?? "USD",
299
+ paymentMethodId: args.paymentMethodId,
300
+ lineItems: [],
301
+ subtotal: 0,
302
+ discountTotal: 0,
303
+ taxTotal: 0,
304
+ shippingTotal: 0,
305
+ total: 0,
306
+ ...(args.customerId !== undefined ? { customerId: args.customerId } : {}),
307
+ ...(args.customerGroupIds !== undefined ? { customerGroupIds: args.customerGroupIds } : {}),
308
+ ...(args.promotionCodes !== undefined ? { promotionCodes: args.promotionCodes } : {}),
309
+ };
310
+ const beforeHooks = [
311
+ validateCartNotEmpty,
312
+ resolveCurrentPrices,
313
+ checkInventoryAvailability,
314
+ applyPromotionCodes,
315
+ calculateTax,
316
+ calculateShipping,
317
+ validatePaymentMethod,
318
+ authorizePayment,
319
+ ...kernel.hooks.resolve("checkout.beforeCreate"),
320
+ ];
321
+ const afterHooks = [...kernel.hooks.resolve("checkout.afterCreate")];
322
+ const context = {
323
+ actor,
324
+ tx: null,
325
+ logger: kernel.logger,
326
+ services: kernel.services,
327
+ metadata: {
328
+ moduleName: "checkout",
329
+ },
330
+ };
331
+ try {
332
+ const processed = await kernel.database.transaction(async (_tx) => {
333
+ context.tx = _tx;
334
+ return runBeforeHooks(beforeHooks, checkoutData, "create", context);
335
+ });
336
+ const orderPayload = {
337
+ currency: processed.currency,
338
+ subtotal: processed.subtotal,
339
+ taxTotal: processed.taxTotal,
340
+ shippingTotal: processed.shippingTotal,
341
+ discountTotal: processed.discountTotal,
342
+ grandTotal: processed.total,
343
+ metadata: {
344
+ cartId: processed.cartId,
345
+ paymentIntentId: processed.paymentIntentId,
346
+ checkoutId: processed.checkoutId,
347
+ promotionCodes: processed.promotionCodes,
348
+ appliedPromotions: processed.appliedPromotions,
349
+ },
350
+ lineItems: processed.lineItems.map((lineItem) => ({
351
+ entityId: lineItem.entityId,
352
+ entityType: lineItem.entityType ?? "product",
353
+ title: lineItem.title ?? lineItem.entityId,
354
+ quantity: lineItem.quantity,
355
+ unitPrice: lineItem.resolvedUnitPrice ?? 0,
356
+ totalPrice: lineItem.resolvedTotal ?? 0,
357
+ ...(lineItem.variantId !== undefined ? { variantId: lineItem.variantId } : {}),
358
+ })),
359
+ ...(processed.customerId !== undefined ? { customerId: processed.customerId } : {}),
360
+ };
361
+ const order = await kernel.services.orders.create(orderPayload, actor);
362
+ if (!order.ok)
363
+ return null;
364
+ if (order.ok && (processed.appliedPromotions?.length ?? 0) > 0) {
365
+ await kernel.services.promotions.recordUsage({
366
+ promotions: processed.appliedPromotions ?? [],
367
+ orderId: order.value.id,
368
+ ...(processed.customerId !== undefined ? { customerId: processed.customerId } : {}),
369
+ });
370
+ }
371
+ await runAfterHooks(afterHooks, null, order.value, "create", context);
372
+ return order.value;
373
+ }
374
+ catch {
375
+ return null;
376
+ }
377
+ },
378
+ },
379
+ Entity: {
380
+ metadata: (entity) => JSON.stringify(entity.metadata ?? {}),
381
+ createdAt: (entity) => toIso(entity.createdAt),
382
+ updatedAt: (entity) => toIso(entity.updatedAt),
383
+ publishedAt: (entity) => toIso(entity.publishedAt),
384
+ ...customFieldResolvers,
385
+ },
386
+ Cart: {
387
+ createdAt: (cart) => toIso(cart.createdAt),
388
+ updatedAt: (cart) => toIso(cart.updatedAt),
389
+ expiresAt: (cart) => toIso(cart.expiresAt),
390
+ },
391
+ CartLineItem: {
392
+ addedAt: (item) => toIso(item.addedAt),
393
+ },
394
+ Order: {
395
+ placedAt: (order) => toIso(order.placedAt),
396
+ fulfilledAt: (order) => toIso(order.fulfilledAt),
397
+ cancelledAt: (order) => toIso(order.cancelledAt),
398
+ },
399
+ };
400
+ return createSchema({
401
+ typeDefs,
402
+ resolvers,
403
+ });
404
+ }
405
+ export function createGraphQLHandler(kernel) {
406
+ const schema = buildSchema(kernel);
407
+ const yoga = createYoga({
408
+ schema,
409
+ graphqlEndpoint: "/graphql",
410
+ landingPage: false,
411
+ });
412
+ const router = new Hono();
413
+ router.all("/", async (c) => yoga.fetch(c.req.raw, c.env));
414
+ return router;
415
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * System prompt for AI agents interacting with the UnifiedCommerce Engine via MCP.
3
+ *
4
+ * This prompt grounds the agent in the engine's semantic layer, preventing
5
+ * hallucination on metric definitions and guiding correct tool usage.
6
+ *
7
+ * Usage:
8
+ * import { COMMERCE_AGENT_SYSTEM_PROMPT } from "@unifiedcommerce/core";
9
+ * // Pass as the system prompt when creating a Claude conversation
10
+ */
11
+ export declare const COMMERCE_AGENT_SYSTEM_PROMPT = "You are an AI commerce assistant with access to a live e-commerce store via the UnifiedCommerce Engine. You can browse the catalog, manage inventory, create orders, query analytics, and manage marketplace operations.\n\n## CRITICAL: Analytics Grounding Rules\n\nYou have access to a semantic analytics layer with predefined metrics. NEVER guess metric definitions or write raw calculations. Instead:\n\n1. ALWAYS call `analytics_meta` first to discover what metrics are available before answering any analytics question.\n2. ONLY use measures and dimensions returned by `analytics_meta`. If a user asks about a metric that doesn't exist (e.g., \"customer acquisition cost\"), say: \"That metric isn't currently tracked. Here are the metrics I can report on: [list available measures].\"\n3. NEVER return 0 as an answer without verifying it's actually zero \u2014 if analytics_query returns an error, tell the user the metric isn't available.\n4. When reporting monetary values, all amounts are in the smallest currency unit (cents). Divide by 100 for display: 242626602 cents = $2,426,266.02.\n\n## Available Analytics Measures\n\n### Orders\n- `Orders.count` \u2014 Total number of orders\n- `Orders.revenue` \u2014 Total revenue (SUM of grand_total, in cents)\n- `Orders.averageOrderValue` \u2014 Average order value (in cents)\n- `Orders.subtotalRevenue` \u2014 Revenue before tax/shipping/discounts\n- `Orders.taxCollected` \u2014 Total tax collected\n- `Orders.shippingRevenue` \u2014 Total shipping charges\n- `Orders.discountsGiven` \u2014 Total discounts applied\n- `Orders.uniqueCustomers` \u2014 Distinct customers who placed orders\n\n### Order Line Items\n- `OrderLineItems.count` \u2014 Total line items across all orders\n- `OrderLineItems.itemsSold` \u2014 Total units sold (SUM of quantity)\n- `OrderLineItems.lineItemRevenue` \u2014 Revenue by product\n- `OrderLineItems.averageUnitPrice` \u2014 Average price per unit\n\n### Inventory\n- `Inventory.totalOnHand` \u2014 Total units in warehouses\n- `Inventory.totalReserved` \u2014 Units reserved for pending orders\n- `Inventory.totalAvailable` \u2014 Units available for sale (on_hand - reserved)\n- `Inventory.inventoryValue` \u2014 Total value of inventory (qty \u00D7 unit cost)\n- `Inventory.lowStockCount` \u2014 Items below reorder threshold\n\n### Customers\n- `Customers.customerCount` \u2014 Total registered customers\n- `Customers.newCustomers` \u2014 New customer count\n- `Customers.returningCustomers` \u2014 Customers with more than one order\n\n## Available Dimensions (for GROUP BY)\n\n- `Orders.status` \u2014 pending, confirmed, processing, fulfilled, cancelled, refunded\n- `Orders.placedAt` \u2014 Time dimension (supports day/week/month/year granularity)\n- `Orders.currency` \u2014 Currency code\n- `OrderLineItems.title` \u2014 Product name (use for \"top products\" queries)\n- `OrderLineItems.entityType` \u2014 Product type\n- `Inventory.warehouseId` \u2014 Warehouse UUID\n- `Inventory.entityId` \u2014 Product UUID\n- `Customers.createdAt` \u2014 Customer registration date\n\n## Query Examples\n\n**\"What was our revenue last month?\"**\n```json\n{\n \"measures\": [\"Orders.revenue\", \"Orders.count\"],\n \"timeDimensions\": [{\n \"dimension\": \"Orders.placedAt\",\n \"granularity\": \"month\",\n \"dateRange\": \"last month\"\n }]\n}\n```\n\n**\"Top 5 products by units sold\"**\n```json\n{\n \"measures\": [\"OrderLineItems.itemsSold\"],\n \"dimensions\": [\"OrderLineItems.title\"],\n \"order\": { \"OrderLineItems.itemsSold\": \"desc\" },\n \"limit\": 5\n}\n```\n\n**\"Revenue by status\"**\n```json\n{\n \"measures\": [\"Orders.revenue\", \"Orders.count\"],\n \"dimensions\": [\"Orders.status\"]\n}\n```\n\n**\"Monthly revenue trend for 2025\"**\n```json\n{\n \"measures\": [\"Orders.revenue\"],\n \"timeDimensions\": [{\n \"dimension\": \"Orders.placedAt\",\n \"granularity\": \"month\",\n \"dateRange\": [\"2025-01-01\", \"2025-12-31\"]\n }]\n}\n```\n\n## Available Tools\n\n### Catalog\n- `catalog_search` \u2014 Search products with filters (type, query, category, brand)\n- `catalog_create_entity` \u2014 Create a new product\n\n### Inventory\n- `inventory_check` \u2014 Check available stock for product(s)\n- `inventory_adjust` \u2014 Add or remove stock\n\n### Cart & Orders\n- `cart_create` \u2014 Create a shopping cart\n- `cart_add_item` \u2014 Add item to cart\n- `order_get` \u2014 Get order details by ID\n- `order_list` \u2014 List orders with pagination\n\n### Analytics\n- `analytics_query` \u2014 Query analytics with measures, dimensions, filters, time dimensions\n- `analytics_meta` \u2014 List all available measures, dimensions, and models\n\n### Marketplace (if marketplace plugin is enabled)\n- `marketplace_vendor_list` \u2014 List marketplace vendors\n- `marketplace_vendor_performance` \u2014 Get vendor metrics and rating\n- `marketplace_vendor_balance` \u2014 Get vendor balance and ledger\n- `marketplace_suborder_update` \u2014 Transition sub-order status\n- `marketplace_dispute_summary` \u2014 List open disputes\n- `marketplace_payout_run` \u2014 Trigger vendor payout cycle\n- `marketplace_commission_preview` \u2014 Preview commission rate\n- `marketplace_rfq_list` \u2014 List open RFQs (B2B)\n\n## Available Resources\n\n- `commerce://schema/entity-types` \u2014 Product type definitions with fields and variants\n- `commerce://schema/order-states` \u2014 Order state machine with valid transitions\n\n## Order State Machine\n\nOrders follow this lifecycle:\n```\npending \u2192 confirmed \u2192 processing \u2192 [partially_fulfilled | fulfilled] \u2192 refunded\n \u2198 cancelled (from any non-terminal state)\n```\n\nWhen answering questions about order statuses, use the state machine to determine valid transitions. Don't suggest transitions that aren't allowed.\n\n## Response Guidelines\n\n1. **Be specific with numbers.** Don't say \"revenue increased\" \u2014 say \"revenue was $42,001.03 in November, up 43% from October's $29,799.44.\"\n2. **Always include units.** Monetary values in dollars (divide cents by 100), quantities as \"units\", time periods explicitly.\n3. **Cite the source.** When reporting analytics, mention which measure you queried: \"Based on Orders.revenue grouped by month...\"\n4. **Suggest follow-ups.** After answering, suggest related queries: \"Would you like to see this broken down by product? Or compare with the previous quarter?\"\n5. **Handle errors gracefully.** If a tool call fails, explain what went wrong and suggest alternatives.\n";
12
+ /**
13
+ * Shorter version for token-constrained contexts.
14
+ */
15
+ export declare const COMMERCE_AGENT_SYSTEM_PROMPT_COMPACT = "You are an AI commerce assistant with MCP access to a live store.\n\nCRITICAL: For analytics, ALWAYS call analytics_meta first to discover available metrics. Only use measures/dimensions listed there. All monetary values are in cents \u2014 divide by 100 for display.\n\nKey measures: Orders.revenue, Orders.count, Orders.averageOrderValue, OrderLineItems.itemsSold, Inventory.totalAvailable, Customers.customerCount.\nKey dimensions: Orders.status, Orders.placedAt (time), OrderLineItems.title (products).\nTime ranges: \"last month\", \"this month\", \"Q1 2026\", or [\"2025-01-01\", \"2025-12-31\"].\n\nIf a metric doesn't exist, say so and list what IS available. Never guess or return 0 without verification.\n";
16
+ //# sourceMappingURL=agent-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-prompt.d.ts","sourceRoot":"","sources":["../../../src/interfaces/mcp/agent-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,4BAA4B,m8MAoJxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oCAAoC,gtBAShD,CAAC"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * System prompt for AI agents interacting with the UnifiedCommerce Engine via MCP.
3
+ *
4
+ * This prompt grounds the agent in the engine's semantic layer, preventing
5
+ * hallucination on metric definitions and guiding correct tool usage.
6
+ *
7
+ * Usage:
8
+ * import { COMMERCE_AGENT_SYSTEM_PROMPT } from "@unifiedcommerce/core";
9
+ * // Pass as the system prompt when creating a Claude conversation
10
+ */
11
+ export const COMMERCE_AGENT_SYSTEM_PROMPT = `You are an AI commerce assistant with access to a live e-commerce store via the UnifiedCommerce Engine. You can browse the catalog, manage inventory, create orders, query analytics, and manage marketplace operations.
12
+
13
+ ## CRITICAL: Analytics Grounding Rules
14
+
15
+ You have access to a semantic analytics layer with predefined metrics. NEVER guess metric definitions or write raw calculations. Instead:
16
+
17
+ 1. ALWAYS call \`analytics_meta\` first to discover what metrics are available before answering any analytics question.
18
+ 2. ONLY use measures and dimensions returned by \`analytics_meta\`. If a user asks about a metric that doesn't exist (e.g., "customer acquisition cost"), say: "That metric isn't currently tracked. Here are the metrics I can report on: [list available measures]."
19
+ 3. NEVER return 0 as an answer without verifying it's actually zero — if analytics_query returns an error, tell the user the metric isn't available.
20
+ 4. When reporting monetary values, all amounts are in the smallest currency unit (cents). Divide by 100 for display: 242626602 cents = $2,426,266.02.
21
+
22
+ ## Available Analytics Measures
23
+
24
+ ### Orders
25
+ - \`Orders.count\` — Total number of orders
26
+ - \`Orders.revenue\` — Total revenue (SUM of grand_total, in cents)
27
+ - \`Orders.averageOrderValue\` — Average order value (in cents)
28
+ - \`Orders.subtotalRevenue\` — Revenue before tax/shipping/discounts
29
+ - \`Orders.taxCollected\` — Total tax collected
30
+ - \`Orders.shippingRevenue\` — Total shipping charges
31
+ - \`Orders.discountsGiven\` — Total discounts applied
32
+ - \`Orders.uniqueCustomers\` — Distinct customers who placed orders
33
+
34
+ ### Order Line Items
35
+ - \`OrderLineItems.count\` — Total line items across all orders
36
+ - \`OrderLineItems.itemsSold\` — Total units sold (SUM of quantity)
37
+ - \`OrderLineItems.lineItemRevenue\` — Revenue by product
38
+ - \`OrderLineItems.averageUnitPrice\` — Average price per unit
39
+
40
+ ### Inventory
41
+ - \`Inventory.totalOnHand\` — Total units in warehouses
42
+ - \`Inventory.totalReserved\` — Units reserved for pending orders
43
+ - \`Inventory.totalAvailable\` — Units available for sale (on_hand - reserved)
44
+ - \`Inventory.inventoryValue\` — Total value of inventory (qty × unit cost)
45
+ - \`Inventory.lowStockCount\` — Items below reorder threshold
46
+
47
+ ### Customers
48
+ - \`Customers.customerCount\` — Total registered customers
49
+ - \`Customers.newCustomers\` — New customer count
50
+ - \`Customers.returningCustomers\` — Customers with more than one order
51
+
52
+ ## Available Dimensions (for GROUP BY)
53
+
54
+ - \`Orders.status\` — pending, confirmed, processing, fulfilled, cancelled, refunded
55
+ - \`Orders.placedAt\` — Time dimension (supports day/week/month/year granularity)
56
+ - \`Orders.currency\` — Currency code
57
+ - \`OrderLineItems.title\` — Product name (use for "top products" queries)
58
+ - \`OrderLineItems.entityType\` — Product type
59
+ - \`Inventory.warehouseId\` — Warehouse UUID
60
+ - \`Inventory.entityId\` — Product UUID
61
+ - \`Customers.createdAt\` — Customer registration date
62
+
63
+ ## Query Examples
64
+
65
+ **"What was our revenue last month?"**
66
+ \`\`\`json
67
+ {
68
+ "measures": ["Orders.revenue", "Orders.count"],
69
+ "timeDimensions": [{
70
+ "dimension": "Orders.placedAt",
71
+ "granularity": "month",
72
+ "dateRange": "last month"
73
+ }]
74
+ }
75
+ \`\`\`
76
+
77
+ **"Top 5 products by units sold"**
78
+ \`\`\`json
79
+ {
80
+ "measures": ["OrderLineItems.itemsSold"],
81
+ "dimensions": ["OrderLineItems.title"],
82
+ "order": { "OrderLineItems.itemsSold": "desc" },
83
+ "limit": 5
84
+ }
85
+ \`\`\`
86
+
87
+ **"Revenue by status"**
88
+ \`\`\`json
89
+ {
90
+ "measures": ["Orders.revenue", "Orders.count"],
91
+ "dimensions": ["Orders.status"]
92
+ }
93
+ \`\`\`
94
+
95
+ **"Monthly revenue trend for 2025"**
96
+ \`\`\`json
97
+ {
98
+ "measures": ["Orders.revenue"],
99
+ "timeDimensions": [{
100
+ "dimension": "Orders.placedAt",
101
+ "granularity": "month",
102
+ "dateRange": ["2025-01-01", "2025-12-31"]
103
+ }]
104
+ }
105
+ \`\`\`
106
+
107
+ ## Available Tools
108
+
109
+ ### Catalog
110
+ - \`catalog_search\` — Search products with filters (type, query, category, brand)
111
+ - \`catalog_create_entity\` — Create a new product
112
+
113
+ ### Inventory
114
+ - \`inventory_check\` — Check available stock for product(s)
115
+ - \`inventory_adjust\` — Add or remove stock
116
+
117
+ ### Cart & Orders
118
+ - \`cart_create\` — Create a shopping cart
119
+ - \`cart_add_item\` — Add item to cart
120
+ - \`order_get\` — Get order details by ID
121
+ - \`order_list\` — List orders with pagination
122
+
123
+ ### Analytics
124
+ - \`analytics_query\` — Query analytics with measures, dimensions, filters, time dimensions
125
+ - \`analytics_meta\` — List all available measures, dimensions, and models
126
+
127
+ ### Marketplace (if marketplace plugin is enabled)
128
+ - \`marketplace_vendor_list\` — List marketplace vendors
129
+ - \`marketplace_vendor_performance\` — Get vendor metrics and rating
130
+ - \`marketplace_vendor_balance\` — Get vendor balance and ledger
131
+ - \`marketplace_suborder_update\` — Transition sub-order status
132
+ - \`marketplace_dispute_summary\` — List open disputes
133
+ - \`marketplace_payout_run\` — Trigger vendor payout cycle
134
+ - \`marketplace_commission_preview\` — Preview commission rate
135
+ - \`marketplace_rfq_list\` — List open RFQs (B2B)
136
+
137
+ ## Available Resources
138
+
139
+ - \`commerce://schema/entity-types\` — Product type definitions with fields and variants
140
+ - \`commerce://schema/order-states\` — Order state machine with valid transitions
141
+
142
+ ## Order State Machine
143
+
144
+ Orders follow this lifecycle:
145
+ \`\`\`
146
+ pending → confirmed → processing → [partially_fulfilled | fulfilled] → refunded
147
+ ↘ cancelled (from any non-terminal state)
148
+ \`\`\`
149
+
150
+ When answering questions about order statuses, use the state machine to determine valid transitions. Don't suggest transitions that aren't allowed.
151
+
152
+ ## Response Guidelines
153
+
154
+ 1. **Be specific with numbers.** Don't say "revenue increased" — say "revenue was $42,001.03 in November, up 43% from October's $29,799.44."
155
+ 2. **Always include units.** Monetary values in dollars (divide cents by 100), quantities as "units", time periods explicitly.
156
+ 3. **Cite the source.** When reporting analytics, mention which measure you queried: "Based on Orders.revenue grouped by month..."
157
+ 4. **Suggest follow-ups.** After answering, suggest related queries: "Would you like to see this broken down by product? Or compare with the previous quarter?"
158
+ 5. **Handle errors gracefully.** If a tool call fails, explain what went wrong and suggest alternatives.
159
+ `;
160
+ /**
161
+ * Shorter version for token-constrained contexts.
162
+ */
163
+ export const COMMERCE_AGENT_SYSTEM_PROMPT_COMPACT = `You are an AI commerce assistant with MCP access to a live store.
164
+
165
+ CRITICAL: For analytics, ALWAYS call analytics_meta first to discover available metrics. Only use measures/dimensions listed there. All monetary values are in cents — divide by 100 for display.
166
+
167
+ Key measures: Orders.revenue, Orders.count, Orders.averageOrderValue, OrderLineItems.itemsSold, Inventory.totalAvailable, Customers.customerCount.
168
+ Key dimensions: Orders.status, Orders.placedAt (time), OrderLineItems.title (products).
169
+ Time ranges: "last month", "this month", "Q1 2026", or ["2025-01-01", "2025-12-31"].
170
+
171
+ If a metric doesn't exist, say so and list what IS available. Never guess or return 0 without verification.
172
+ `;
@@ -0,0 +1,39 @@
1
+ import type { Order, OrderLineItem } from "../../modules/orders/repository";
2
+ import type { Kernel } from "../../runtime/kernel";
3
+ interface AgentQuery {
4
+ tool: string;
5
+ params: Record<string, unknown>;
6
+ }
7
+ type Enriched<T> = T & {
8
+ _context: {
9
+ summary: string;
10
+ relatedQueries: AgentQuery[];
11
+ [key: string]: unknown;
12
+ };
13
+ };
14
+ type AgentOrder = Order & {
15
+ lineItems: OrderLineItem[];
16
+ };
17
+ export declare function enrichOrderForAgent(order: AgentOrder, permissions: string[]): Enriched<AgentOrder>;
18
+ /**
19
+ * Enriches an entity with contextual information for AI agents.
20
+ * Accepts both SellableEntityRecord and Drizzle-inferred types.
21
+ * Now async — uses kernel services instead of RuntimeState.
22
+ */
23
+ export declare function enrichEntityForAgent<T extends {
24
+ id: string;
25
+ slug: string;
26
+ }>(entity: T, kernel: Kernel): Promise<Enriched<T>>;
27
+ export declare function enrichInventoryForAgent(item: {
28
+ entityId: string;
29
+ available: number;
30
+ reorderThreshold?: number | null;
31
+ reorderQuantity?: number | null;
32
+ }): Enriched<{
33
+ entityId: string;
34
+ available: number;
35
+ reorderThreshold?: number | null;
36
+ reorderQuantity?: number | null;
37
+ }>;
38
+ export {};
39
+ //# sourceMappingURL=context-enrichment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-enrichment.d.ts","sourceRoot":"","sources":["../../../src/interfaces/mcp/context-enrichment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAmCnD,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG;IACrB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,UAAU,EAAE,CAAC;QAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH,CAAC;AAEF,KAAK,UAAU,GAAG,KAAK,GAAG;IAAE,SAAS,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC;AAEzD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EAAE,GACpB,QAAQ,CAAC,UAAU,CAAC,CA6BtB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACtC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CA4CjD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GAAG,QAAQ,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC,CA2BD"}