@open-mercato/cli 0.6.7 → 0.6.8-canary.320.1.bf889f49e4

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 (335) hide show
  1. package/.turbo/turbo-build.log +77 -4
  2. package/AGENTS.md +6 -1
  3. package/build.mjs +68 -11
  4. package/dist/agentic/claude-code/hooks/entity-migration-check.ts +32 -88
  5. package/dist/agentic/codex/enforcement-rules.md +2 -16
  6. package/dist/agentic/cursor/hooks/entity-migration-check.mjs +19 -50
  7. package/dist/agentic/cursor/rules/entity-guard.mdc +9 -21
  8. package/dist/agentic/cursor/rules/generated-guard.mdc +3 -5
  9. package/dist/agentic/cursor/rules/open-mercato.mdc +3 -29
  10. package/dist/agentic/guides/ai-workflows.md +76 -0
  11. package/dist/agentic/guides/architecture.md +107 -0
  12. package/dist/agentic/guides/backend-ui.md +86 -0
  13. package/dist/agentic/guides/contracts.md +92 -0
  14. package/dist/agentic/guides/extensions.md +121 -0
  15. package/dist/agentic/guides/framework-extension-points.md +36 -0
  16. package/dist/agentic/guides/integrations.md +81 -0
  17. package/dist/agentic/guides/module-facts.json +116757 -3951
  18. package/dist/agentic/guides/module-system.md +12 -127
  19. package/dist/agentic/guides/modules/ai_assistant.md +227 -28
  20. package/dist/agentic/guides/modules/api_docs.md +58 -2
  21. package/dist/agentic/guides/modules/api_keys.md +92 -7
  22. package/dist/agentic/guides/modules/attachments.md +119 -14
  23. package/dist/agentic/guides/modules/audit_logs.md +131 -10
  24. package/dist/agentic/guides/modules/auth.md +276 -33
  25. package/dist/agentic/guides/modules/business_rules.md +149 -14
  26. package/dist/agentic/guides/modules/catalog.md +482 -43
  27. package/dist/agentic/guides/modules/channel_gmail.md +82 -3
  28. package/dist/agentic/guides/modules/channel_imap.md +82 -3
  29. package/dist/agentic/guides/modules/checkout.md +305 -27
  30. package/dist/agentic/guides/modules/communication_channels.md +315 -33
  31. package/dist/agentic/guides/modules/configs.md +104 -8
  32. package/dist/agentic/guides/modules/content.md +57 -2
  33. package/dist/agentic/guides/modules/currencies.md +152 -17
  34. package/dist/agentic/guides/modules/customer_accounts.md +387 -45
  35. package/dist/agentic/guides/modules/customers.md +746 -85
  36. package/dist/agentic/guides/modules/dashboards.md +155 -10
  37. package/dist/agentic/guides/modules/data_sync.md +149 -16
  38. package/dist/agentic/guides/modules/design_system.md +102 -0
  39. package/dist/agentic/guides/modules/dictionaries.md +107 -12
  40. package/dist/agentic/guides/modules/directory.md +148 -15
  41. package/dist/agentic/guides/modules/entities.md +145 -13
  42. package/dist/agentic/guides/modules/events.md +59 -2
  43. package/dist/agentic/guides/modules/feature_toggles.md +119 -9
  44. package/dist/agentic/guides/modules/gateway_stripe.md +92 -4
  45. package/dist/agentic/guides/modules/generators.md +45 -2
  46. package/dist/agentic/guides/modules/inbox_ops.md +207 -27
  47. package/dist/agentic/guides/modules/integrations.md +149 -16
  48. package/dist/agentic/guides/modules/messages.md +223 -24
  49. package/dist/agentic/guides/modules/notifications.md +96 -8
  50. package/dist/agentic/guides/modules/onboarding.md +77 -6
  51. package/dist/agentic/guides/modules/payment_gateways.md +168 -21
  52. package/dist/agentic/guides/modules/perspectives.md +77 -7
  53. package/dist/agentic/guides/modules/planner.md +136 -18
  54. package/dist/agentic/guides/modules/portal.md +93 -2
  55. package/dist/agentic/guides/modules/progress.md +104 -14
  56. package/dist/agentic/guides/modules/query_index.md +154 -15
  57. package/dist/agentic/guides/modules/record_locks.md +206 -21
  58. package/dist/agentic/guides/modules/resources.md +197 -30
  59. package/dist/agentic/guides/modules/sales.md +687 -84
  60. package/dist/agentic/guides/modules/scheduler.md +133 -14
  61. package/dist/agentic/guides/modules/search.md +170 -6
  62. package/dist/agentic/guides/modules/security.md +294 -35
  63. package/dist/agentic/guides/modules/shipping_carriers.md +134 -18
  64. package/dist/agentic/guides/modules/sso.md +151 -26
  65. package/dist/agentic/guides/modules/staff.md +372 -57
  66. package/dist/agentic/guides/modules/storage_s3.md +95 -5
  67. package/dist/agentic/guides/modules/sync_akeneo.md +85 -3
  68. package/dist/agentic/guides/modules/sync_excel.md +75 -6
  69. package/dist/agentic/guides/modules/system_status_overlays.md +60 -2
  70. package/dist/agentic/guides/modules/translations.md +104 -10
  71. package/dist/agentic/guides/modules/webhooks.md +203 -24
  72. package/dist/agentic/guides/modules/wms.md +469 -47
  73. package/dist/agentic/guides/modules/workflows.md +302 -43
  74. package/dist/agentic/guides/reference-module-facts.json +6942 -0
  75. package/dist/agentic/guides/reference-modules/example.md +462 -0
  76. package/dist/agentic/guides/spec-delivery.md +56 -0
  77. package/dist/agentic/guides/testing-debugging.md +80 -0
  78. package/dist/agentic/guides/upstream/AGENTS.md +300 -0
  79. package/dist/agentic/guides/upstream/BACKWARD_COMPATIBILITY.md +334 -0
  80. package/dist/agentic/guides/upstream/manifest.json +8 -0
  81. package/dist/agentic/shared/AGENTS.md.template +120 -311
  82. package/dist/agentic/shared/ai/agentic.config.json +2 -0
  83. package/dist/agentic/shared/ai/harness/README.md +50 -0
  84. package/dist/agentic/shared/ai/harness/RELEASE.md +59 -0
  85. package/dist/agentic/shared/ai/harness/cases.json +20596 -0
  86. package/dist/agentic/shared/ai/harness/cases.schema.json +196 -0
  87. package/dist/agentic/shared/ai/harness/design-system-inventory.json +6326 -0
  88. package/dist/agentic/shared/ai/harness/fixtures/index.json +51 -0
  89. package/dist/agentic/shared/ai/harness/fixtures/seeds.json +166 -0
  90. package/dist/agentic/shared/ai/harness/generated-code-review-policy.md +21 -0
  91. package/dist/agentic/shared/ai/harness/generated-code-review-response.schema.json +96 -0
  92. package/dist/agentic/shared/ai/harness/generated-code-review-result.schema.json +172 -0
  93. package/dist/agentic/shared/ai/harness/knowledge-change.schema.json +228 -0
  94. package/dist/agentic/shared/ai/harness/release-matrix.json +163 -0
  95. package/dist/agentic/shared/ai/harness/release-result.schema.json +219 -0
  96. package/dist/agentic/shared/ai/harness/result.schema.json +136 -0
  97. package/dist/agentic/shared/ai/harness/routing-response.schema.json +22 -0
  98. package/dist/agentic/shared/ai/harness/source-link-inventory.json +1706 -0
  99. package/dist/agentic/shared/ai/harness/target-validation-result.schema.json +73 -0
  100. package/dist/agentic/shared/ai/harness/validators.json +82 -0
  101. package/dist/agentic/shared/ai/harness/writable-ast-oracles.mjs +2121 -0
  102. package/dist/agentic/shared/ai/harness/writable-behavior-oracles.mjs +1096 -0
  103. package/dist/agentic/shared/ai/harness/writable-spec-oracles.mjs +602 -0
  104. package/dist/agentic/shared/ai/lessons/_template.md +16 -0
  105. package/dist/agentic/shared/ai/lessons.md +26 -3
  106. package/dist/agentic/shared/ai/review-checklist.md +36 -0
  107. package/dist/agentic/shared/ai/skills/om-auto-implement-spec/SKILL.md +21 -0
  108. package/dist/agentic/shared/ai/skills/om-auto-review-pr/SKILL.md +4 -0
  109. package/dist/agentic/shared/ai/skills/om-auto-upgrade-0.6.6-to-0.6.7/SKILL.md +98 -0
  110. package/dist/agentic/shared/ai/skills/om-backend-ui-design/SKILL.md +21 -241
  111. package/dist/agentic/shared/ai/skills/om-backend-ui-design/references/crud-surfaces.md +31 -0
  112. package/dist/agentic/shared/ai/skills/om-backend-ui-design/references/frontend-and-design-system.md +53 -0
  113. package/dist/agentic/shared/ai/skills/om-backend-ui-design/references/page-and-navigation.md +15 -0
  114. package/dist/agentic/shared/ai/skills/om-backend-ui-design/references/quality-states.md +11 -0
  115. package/dist/agentic/shared/ai/skills/om-build-workflow/SKILL.md +30 -0
  116. package/dist/agentic/shared/ai/skills/om-build-workflow/references/activity-contracts.md +12 -0
  117. package/dist/agentic/shared/ai/skills/om-build-workflow/references/durability-and-progress.md +13 -0
  118. package/dist/agentic/shared/ai/skills/om-build-workflow/references/workflow-design.md +14 -0
  119. package/dist/agentic/shared/ai/skills/om-create-ai-agent/SKILL.md +28 -0
  120. package/dist/agentic/shared/ai/skills/om-create-ai-agent/references/attachments-and-overrides.md +12 -0
  121. package/dist/agentic/shared/ai/skills/om-create-ai-agent/references/module-agents-and-tools.md +22 -0
  122. package/dist/agentic/shared/ai/skills/om-create-ai-agent/references/orchestrator-agents.md +12 -0
  123. package/dist/agentic/shared/ai/skills/om-create-ai-agent/references/surface-selector.md +19 -0
  124. package/dist/agentic/shared/ai/skills/om-data-model-design/SKILL.md +17 -601
  125. package/dist/agentic/shared/ai/skills/om-data-model-design/references/integrity-and-concurrency.md +21 -0
  126. package/dist/agentic/shared/ai/skills/om-data-model-design/references/migration-workflow.md +15 -0
  127. package/dist/agentic/shared/ai/skills/om-data-model-design/references/schema-design.md +16 -0
  128. package/dist/agentic/shared/ai/skills/om-data-model-design/references/sensitive-data.md +10 -0
  129. package/dist/agentic/shared/ai/skills/om-eject-and-customize/SKILL.md +15 -310
  130. package/dist/agentic/shared/ai/skills/om-eject-and-customize/references/decision-and-procedure.md +19 -0
  131. package/dist/agentic/shared/ai/skills/om-evolve-harness/SKILL.md +31 -0
  132. package/dist/agentic/shared/ai/skills/om-evolve-harness/references/case-template.md +100 -0
  133. package/dist/agentic/shared/ai/skills/om-evolve-harness/references/case-workflow.md +16 -0
  134. package/dist/agentic/shared/ai/skills/om-evolve-harness/references/knowledge-change.md +133 -0
  135. package/dist/agentic/shared/ai/skills/om-evolve-harness/references/owner-selection.md +17 -0
  136. package/dist/agentic/shared/ai/skills/om-framework-context/SKILL.md +25 -0
  137. package/dist/agentic/shared/ai/skills/om-framework-context/references/resolver-procedure.md +11 -0
  138. package/dist/agentic/shared/ai/skills/om-framework-context/references/skew-and-escalation.md +13 -0
  139. package/dist/agentic/shared/ai/skills/om-help/SKILL.md +15 -97
  140. package/dist/agentic/shared/ai/skills/om-help/references/delivery-workflows.md +18 -0
  141. package/dist/agentic/shared/ai/skills/om-help/references/task-families.md +20 -0
  142. package/dist/agentic/shared/ai/skills/om-implement-spec/SKILL.md +33 -152
  143. package/dist/agentic/shared/ai/skills/om-implement-spec/references/phases-and-gates.md +33 -0
  144. package/dist/agentic/shared/ai/skills/om-implement-spec/references/planning-and-progress.md +40 -0
  145. package/dist/agentic/shared/ai/skills/om-implement-spec/references/report-templates.md +27 -0
  146. package/dist/agentic/shared/ai/skills/om-implement-spec/references/spec-resolution.md +24 -0
  147. package/dist/agentic/shared/ai/skills/om-integration-builder/SKILL.md +25 -708
  148. package/dist/agentic/shared/ai/skills/om-integration-builder/references/package-and-activation.md +16 -0
  149. package/dist/agentic/shared/ai/skills/om-integration-builder/references/provider-families.md +25 -0
  150. package/dist/agentic/shared/ai/skills/om-integration-builder/references/security-and-reliability.md +15 -0
  151. package/dist/agentic/shared/ai/skills/om-integration-builder/references/sync-and-files.md +12 -0
  152. package/dist/agentic/shared/ai/skills/om-judge-agent-session/SKILL.md +34 -0
  153. package/dist/agentic/shared/ai/skills/om-judge-agent-session/agents/openai.yaml +4 -0
  154. package/dist/agentic/shared/ai/skills/om-judge-agent-session/references/agentic-setup.md +11 -0
  155. package/dist/agentic/shared/ai/skills/om-judge-agent-session/references/input-normalization.md +31 -0
  156. package/dist/agentic/shared/ai/skills/om-judge-agent-session/references/judge-workflow.md +39 -0
  157. package/dist/agentic/shared/ai/skills/om-judge-agent-session/references/report-template.md +43 -0
  158. package/dist/agentic/shared/ai/skills/om-judge-agent-session/references/rules.md +11 -0
  159. package/dist/agentic/shared/ai/skills/om-module-scaffold/SKILL.md +20 -820
  160. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/api-and-domain.md +32 -0
  161. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/business-one-shot-blueprints.md +172 -0
  162. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/data-and-migrations.md +14 -0
  163. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/discovery-surface-catalog.md +83 -0
  164. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/module-surfaces.md +40 -0
  165. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/planning.md +11 -0
  166. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/runtime-cache-and-queues.md +22 -0
  167. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/verification.md +13 -0
  168. package/dist/agentic/shared/ai/skills/om-share-this-session/SKILL.md +41 -0
  169. package/dist/agentic/shared/ai/skills/om-share-this-session/references/agentic-setup.md +19 -0
  170. package/dist/agentic/shared/ai/skills/om-share-this-session/references/bundle-preparation.md +44 -0
  171. package/dist/agentic/shared/ai/skills/om-share-this-session/references/consent-and-review.md +39 -0
  172. package/dist/agentic/shared/ai/skills/om-share-this-session/references/publication.md +20 -0
  173. package/dist/agentic/shared/ai/skills/om-share-this-session/references/report-templates.md +57 -0
  174. package/dist/agentic/shared/ai/skills/om-share-this-session/references/rules.md +11 -0
  175. package/dist/agentic/shared/ai/skills/om-share-this-session/scripts/prepare-share-bundle.mjs +486 -0
  176. package/dist/agentic/shared/ai/skills/om-system-extension/SKILL.md +20 -843
  177. package/dist/agentic/shared/ai/skills/om-system-extension/references/extension-branches.md +42 -0
  178. package/dist/agentic/shared/ai/skills/om-system-extension/references/mechanism-selector.md +27 -0
  179. package/dist/agentic/shared/ai/skills/om-system-extension/references/read-write-roundtrip.md +13 -0
  180. package/dist/agentic/shared/ai/skills/om-system-extension/references/unified-overrides.md +43 -0
  181. package/dist/agentic/shared/ai/skills/om-system-extension/references/verification.md +11 -0
  182. package/dist/agentic/shared/ai/skills/om-trim-unused-modules/SKILL.md +15 -63
  183. package/dist/agentic/shared/ai/skills/om-trim-unused-modules/references/dependency-and-redirect.md +15 -0
  184. package/dist/agentic/shared/ai/skills/om-troubleshooter/SKILL.md +17 -467
  185. package/dist/agentic/shared/ai/skills/om-troubleshooter/references/diagnosis-map.md +29 -0
  186. package/dist/agentic/shared/ai/skills/om-troubleshooter/references/regression-oracles.md +14 -0
  187. package/dist/agentic/shared/ai/skills/tiers.json +143 -21
  188. package/dist/agentic/shared/ai/skills/tiers.schema.json +52 -40
  189. package/dist/agentic/shared/ai/specs/2026-08-06-reference-module-activation.md +248 -0
  190. package/dist/agentic/shared/ai/specs/README.md +4 -3
  191. package/dist/agentic/shared/ai/specs/SPEC-000-template.md +226 -10
  192. package/dist/agentic/shared/ai/trackers/github.md +108 -4
  193. package/dist/agentic/shared/scripts/agent-harness-tool-server.mjs +224 -0
  194. package/dist/agentic/shared/scripts/check-lessons.mjs +178 -0
  195. package/dist/agentic/shared/scripts/evaluate-agent-harness.mjs +3812 -0
  196. package/dist/agentic/shared/scripts/execution-sandbox.mjs +329 -0
  197. package/dist/agentic/shared/scripts/framework-context.mjs +888 -0
  198. package/dist/agentic/shared/scripts/install-skills.mjs +1029 -0
  199. package/dist/agentic/shared/scripts/install-skills.sh +4 -694
  200. package/dist/agentic/shared/scripts/prepare-agent-harness-fixture.mjs +222 -0
  201. package/dist/agentic/shared/scripts/run-agent-harness-release.mjs +1774 -0
  202. package/dist/agentic/shared/scripts/validate-knowledge-change.mjs +1172 -0
  203. package/dist/bin.js +32 -34
  204. package/dist/bin.js.map +2 -2
  205. package/dist/lib/__integration__/TC-INT-008.spec.js +88 -8
  206. package/dist/lib/__integration__/TC-INT-008.spec.js.map +2 -2
  207. package/dist/lib/agentic-init.js +13 -3
  208. package/dist/lib/agentic-init.js.map +2 -2
  209. package/dist/lib/agentic-setup.js +434 -186
  210. package/dist/lib/agentic-setup.js.map +2 -2
  211. package/dist/lib/cli-bootstrap-mode.js +32 -0
  212. package/dist/lib/cli-bootstrap-mode.js.map +7 -0
  213. package/dist/lib/dev-supervisor-manifest.js +105 -0
  214. package/dist/lib/dev-supervisor-manifest.js.map +7 -0
  215. package/dist/lib/generate-watch-events.js +15 -0
  216. package/dist/lib/generate-watch-events.js.map +2 -2
  217. package/dist/lib/generators/entity-ids.js +11 -24
  218. package/dist/lib/generators/entity-ids.js.map +2 -2
  219. package/dist/lib/generators/extensions/injection-widgets.js +20 -0
  220. package/dist/lib/generators/extensions/injection-widgets.js.map +2 -2
  221. package/dist/lib/generators/module-di.js +10 -23
  222. package/dist/lib/generators/module-di.js.map +2 -2
  223. package/dist/lib/generators/module-entities.js +10 -23
  224. package/dist/lib/generators/module-entities.js.map +2 -2
  225. package/dist/lib/generators/module-extension-facts.js +1882 -0
  226. package/dist/lib/generators/module-extension-facts.js.map +7 -0
  227. package/dist/lib/generators/module-fact-sources.js +70 -0
  228. package/dist/lib/generators/module-fact-sources.js.map +7 -0
  229. package/dist/lib/generators/module-facts-discovery.js +64 -7
  230. package/dist/lib/generators/module-facts-discovery.js.map +2 -2
  231. package/dist/lib/generators/module-facts.js +1913 -52
  232. package/dist/lib/generators/module-facts.js.map +3 -3
  233. package/dist/lib/generators/module-override-targets.js +712 -0
  234. package/dist/lib/generators/module-override-targets.js.map +7 -0
  235. package/dist/lib/generators/module-registry.js +405 -36
  236. package/dist/lib/generators/module-registry.js.map +2 -2
  237. package/dist/lib/generators/route-manifest-shards.js +170 -0
  238. package/dist/lib/generators/route-manifest-shards.js.map +7 -0
  239. package/dist/lib/in-process-generate-watcher.js +12 -3
  240. package/dist/lib/in-process-generate-watcher.js.map +2 -2
  241. package/dist/lib/load-env.js +24 -0
  242. package/dist/lib/load-env.js.map +7 -0
  243. package/dist/lib/queue-worker-supervisor.js.map +2 -2
  244. package/dist/lib/resolver.js +28 -3
  245. package/dist/lib/resolver.js.map +2 -2
  246. package/dist/lib/telemetry-init.js +358 -0
  247. package/dist/lib/telemetry-init.js.map +7 -0
  248. package/dist/lib/testing/integration.js +5 -2
  249. package/dist/lib/testing/integration.js.map +2 -2
  250. package/dist/lib/utils.js +15 -8
  251. package/dist/lib/utils.js.map +2 -2
  252. package/dist/mercato.js +35 -9
  253. package/dist/mercato.js.map +2 -2
  254. package/package.json +13 -11
  255. package/src/__tests__/mercato.test.ts +144 -0
  256. package/src/bin.ts +60 -42
  257. package/src/lib/__integration__/TC-INT-008.spec.ts +107 -9
  258. package/src/lib/__tests__/agentic-init.test.ts +41 -5
  259. package/src/lib/__tests__/agentic-setup.ownership.test.ts +386 -0
  260. package/src/lib/__tests__/cli-bootstrap-mode.test.ts +22 -0
  261. package/src/lib/__tests__/content-stable-writes.test.ts +74 -0
  262. package/src/lib/__tests__/dev-supervisor-manifest.test.ts +131 -0
  263. package/src/lib/__tests__/generate-watch-events.test.ts +76 -0
  264. package/src/lib/__tests__/in-process-generate-watcher.test.ts +52 -1
  265. package/src/lib/__tests__/injection-widget-id-validation.test.ts +184 -0
  266. package/src/lib/__tests__/load-env.test.ts +65 -0
  267. package/src/lib/__tests__/queue-worker-supervisor.test.ts +33 -0
  268. package/src/lib/__tests__/resolver.enterprise.test.ts +50 -0
  269. package/src/lib/__tests__/telemetry-init.test.ts +298 -0
  270. package/src/lib/agentic-init.ts +15 -3
  271. package/src/lib/agentic-setup.ts +573 -222
  272. package/src/lib/cli-bootstrap-mode.ts +31 -0
  273. package/src/lib/dev-supervisor-manifest.ts +142 -0
  274. package/src/lib/generate-watch-events.ts +14 -0
  275. package/src/lib/generators/__tests__/activation-adapter-coverage.test.ts +92 -0
  276. package/src/lib/generators/__tests__/entity-ids.test.ts +32 -0
  277. package/src/lib/generators/__tests__/helpers/override-target-diagnostic-fixtures.ts +150 -0
  278. package/src/lib/generators/__tests__/module-extension-activations.test.ts +762 -0
  279. package/src/lib/generators/__tests__/module-extension-facts.test.ts +603 -0
  280. package/src/lib/generators/__tests__/module-facts.bc-guard.test.ts +139 -2
  281. package/src/lib/generators/__tests__/module-facts.computed-di-token.test.ts +88 -0
  282. package/src/lib/generators/__tests__/module-facts.customers.fixture.test.ts +1 -0
  283. package/src/lib/generators/__tests__/module-facts.discovery.test.ts +54 -10
  284. package/src/lib/generators/__tests__/module-facts.example-fact-coverage.test.ts +414 -0
  285. package/src/lib/generators/__tests__/module-facts.extension-hosts.test.ts +108 -0
  286. package/src/lib/generators/__tests__/module-facts.local-reference.test.ts +393 -0
  287. package/src/lib/generators/__tests__/module-facts.owned-contracts.test.ts +561 -0
  288. package/src/lib/generators/__tests__/module-facts.search-entity-id.test.ts +151 -0
  289. package/src/lib/generators/__tests__/module-facts.source-links.test.ts +160 -0
  290. package/src/lib/generators/__tests__/module-override-targets.diagnostic-wiring.test.ts +92 -0
  291. package/src/lib/generators/__tests__/module-override-targets.roundtrip.test.ts +149 -0
  292. package/src/lib/generators/__tests__/module-override-targets.test.ts +328 -0
  293. package/src/lib/generators/__tests__/module-override-targets.unknown-mode.test.ts +117 -0
  294. package/src/lib/generators/__tests__/module-subset.test.ts +266 -0
  295. package/src/lib/generators/__tests__/output-snapshots.test.ts +3 -3
  296. package/src/lib/generators/__tests__/route-manifest-shards.test.ts +62 -0
  297. package/src/lib/generators/entity-ids.ts +10 -26
  298. package/src/lib/generators/extensions/injection-widgets.ts +51 -0
  299. package/src/lib/generators/module-di.ts +9 -25
  300. package/src/lib/generators/module-entities.ts +9 -25
  301. package/src/lib/generators/module-extension-facts.ts +2472 -0
  302. package/src/lib/generators/module-fact-sources.ts +108 -0
  303. package/src/lib/generators/module-facts-discovery.ts +104 -7
  304. package/src/lib/generators/module-facts.ts +2747 -138
  305. package/src/lib/generators/module-override-targets.ts +907 -0
  306. package/src/lib/generators/module-registry.ts +448 -35
  307. package/src/lib/generators/route-manifest-shards.ts +146 -0
  308. package/src/lib/in-process-generate-watcher.ts +13 -4
  309. package/src/lib/load-env.ts +30 -0
  310. package/src/lib/queue-worker-supervisor.ts +7 -2
  311. package/src/lib/resolver.ts +34 -3
  312. package/src/lib/telemetry-init.ts +461 -0
  313. package/src/lib/testing/__tests__/integration.test.ts +4 -0
  314. package/src/lib/testing/integration.ts +5 -2
  315. package/src/lib/utils.ts +24 -16
  316. package/src/mercato.ts +46 -9
  317. package/dist/agentic/guides/cache.md +0 -45
  318. package/dist/agentic/guides/core.md +0 -453
  319. package/dist/agentic/guides/events.md +0 -117
  320. package/dist/agentic/guides/queue.md +0 -53
  321. package/dist/agentic/guides/search.md +0 -115
  322. package/dist/agentic/guides/shared.md +0 -108
  323. package/dist/agentic/guides/ui.md +0 -347
  324. package/dist/agentic/shared/ai/skills/om-auto-continue-pr-loop/SKILL.md +0 -27
  325. package/dist/agentic/shared/ai/skills/om-auto-create-pr-loop/SKILL.md +0 -27
  326. package/dist/agentic/shared/ai/skills/om-backend-ui-design/references/ui-components.md +0 -260
  327. package/dist/agentic/shared/ai/skills/om-data-model-design/references/mikro-orm-cheatsheet.md +0 -146
  328. package/dist/agentic/shared/ai/skills/om-help/references/skills-catalog.md +0 -84
  329. package/dist/agentic/shared/ai/skills/om-help/references/workflow-sequences.md +0 -193
  330. package/dist/agentic/shared/ai/skills/om-integration-builder/STANDALONE.md +0 -34
  331. package/dist/agentic/shared/ai/skills/om-integration-builder/references/adapter-contracts.md +0 -762
  332. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/naming-conventions.md +0 -50
  333. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/navigation-patterns.md +0 -97
  334. package/dist/agentic/shared/ai/skills/om-system-extension/references/extension-contracts.md +0 -271
  335. package/dist/agentic/shared/ai/skills/om-troubleshooter/references/diagnostic-commands.md +0 -101
@@ -1,117 +0,0 @@
1
- # Events Package — Standalone Developer Guide
2
-
3
- `@open-mercato/events` provides event-driven communication between modules. Use events for side effects — never direct module-to-module function calls.
4
-
5
- ## Declaring Events
6
-
7
- Every module that emits events MUST declare them in `events.ts`:
8
-
9
- ```typescript
10
- import { createModuleEvents } from '@open-mercato/shared/modules/events'
11
-
12
- const events = [
13
- { id: 'my_mod.item.created', label: 'Item Created', entity: 'item', category: 'crud' },
14
- { id: 'my_mod.item.updated', label: 'Item Updated', entity: 'item', category: 'crud' },
15
- { id: 'my_mod.item.deleted', label: 'Item Deleted', entity: 'item', category: 'crud' },
16
- ] as const
17
-
18
- export const eventsConfig = createModuleEvents({ moduleId: 'my_mod', events })
19
- export const emitMyModEvent = eventsConfig.emit
20
- export default eventsConfig
21
- ```
22
-
23
- MUST use `as const` — provides compile-time safety. Run `yarn generate` after adding.
24
-
25
- ### Event ID Convention
26
-
27
- Format: `module.entity.action` (singular entity, past tense action, dots as separators).
28
-
29
- ## Adding Subscribers
30
-
31
- Create subscriber files in `src/modules/<module>/subscribers/`:
32
-
33
- ```typescript
34
- // subscribers/item-created-notify.ts
35
- export const metadata = {
36
- event: 'my_mod.item.created',
37
- persistent: true, // survives restarts, retried on failure
38
- id: 'item-created-notify',
39
- }
40
-
41
- export default async function handler(payload, ctx) {
42
- // One side effect per subscriber
43
- }
44
- ```
45
-
46
- Run `yarn generate` after adding.
47
-
48
- ## Subscription Types
49
-
50
- | Type | Use for | Behavior |
51
- |------|---------|----------|
52
- | Ephemeral (`persistent: false`) | Real-time UI updates, cache invalidation | In-memory, no retry, lost on restart |
53
- | Persistent (`persistent: true`) | Notifications, indexing, audit logging | Queue-backed, retried on failure |
54
-
55
- Persistent subscribers MUST be idempotent — they may be retried.
56
-
57
- ## DOM Event Bridge (Browser Events via SSE)
58
-
59
- Stream server-side events to the browser for real-time UI updates.
60
-
61
- ### Enable on Events
62
-
63
- Add `clientBroadcast: true` to event declarations:
64
-
65
- ```typescript
66
- const events = [
67
- { id: 'my_mod.item.created', label: 'Created', category: 'crud', clientBroadcast: true },
68
- ] as const
69
- ```
70
-
71
- ### Consume in Components
72
-
73
- ```typescript
74
- import { useAppEvent } from '@open-mercato/ui/backend/injection/useAppEvent'
75
-
76
- // Wildcard: all events from a module
77
- useAppEvent('my_mod.*', (event) => {
78
- // event.id, event.payload — refresh data, show notification
79
- }, [])
80
-
81
- // Exact match
82
- useAppEvent('my_mod.item.created', (event) => {
83
- reloadItems()
84
- }, [reloadItems])
85
- ```
86
-
87
- ### Track Long-Running Operations
88
-
89
- ```typescript
90
- import { useOperationProgress } from '@open-mercato/ui/backend/injection/useOperationProgress'
91
-
92
- const progress = useOperationProgress('my_mod.import.*')
93
- // progress.status: 'idle' | 'running' | 'completed' | 'failed'
94
- // progress.progress: 0-100
95
- ```
96
-
97
- ### SSE Audience Filtering
98
-
99
- Events are server-filtered before SSE delivery by:
100
- - `tenantId` (must match)
101
- - `organizationId` / `organizationIds` (must match selected org)
102
- - `recipientUserId` / `recipientUserIds` (must include user)
103
- - `recipientRoleId` / `recipientRoleIds` (must intersect roles)
104
-
105
- Missing `tenantId` in payload = no delivery.
106
-
107
- ## Queue Integration
108
-
109
- | Queue strategy | Ephemeral | Persistent |
110
- |----------------|-----------|------------|
111
- | `local` (dev) | In-process | `.mercato/queue/` filesystem |
112
- | `async` (prod) | In-process | BullMQ (Redis-backed) |
113
-
114
- For production, start the event worker:
115
- ```bash
116
- yarn mercato events worker event-processing --concurrency=5
117
- ```
@@ -1,53 +0,0 @@
1
- # Queue Package — Standalone Developer Guide
2
-
3
- `@open-mercato/queue` provides background job processing. MUST NOT implement custom job queues or polling loops.
4
-
5
- ## Strategy Selection
6
-
7
- | Strategy | When | Config |
8
- |----------|------|--------|
9
- | Local | Development — processes from `.mercato/queue/` | `QUEUE_STRATEGY=local` |
10
- | BullMQ | Production — Redis-backed with retries | `QUEUE_STRATEGY=async` |
11
-
12
- ## Adding a Worker
13
-
14
- Create `src/modules/<module>/workers/<name>.ts`:
15
-
16
- ```typescript
17
- export const metadata = {
18
- queue: 'my-queue',
19
- id: 'my-worker',
20
- concurrency: 5,
21
- }
22
-
23
- export default async function handler(job) {
24
- // MUST be idempotent — jobs may be retried on failure
25
- // Check state before mutating
26
- }
27
- ```
28
-
29
- Run `yarn generate` after adding.
30
-
31
- ## Concurrency Guidelines
32
-
33
- | Worker type | Concurrency | Rationale |
34
- |-------------|-------------|-----------|
35
- | I/O-bound (API calls, email) | 5–10 | Network latency allows parallelism |
36
- | CPU-bound (calculations) | 1–2 | Avoid blocking event loop |
37
- | Database-heavy (bulk writes) | 3–5 | Balance with connection pool |
38
-
39
- Max concurrency: 20.
40
-
41
- ## MUST Rules
42
-
43
- 1. **MUST make workers idempotent** — duplicate execution MUST NOT corrupt data
44
- 2. **MUST export `metadata`** with `{ queue, id?, concurrency? }`
45
- 3. **MUST test with both strategies** (`local` and `async`)
46
-
47
- ## Running Workers (Production)
48
-
49
- ```bash
50
- yarn mercato <module> worker <queue-name> --concurrency=5
51
- ```
52
-
53
- Development: local strategy auto-processes from `.mercato/queue/`.
@@ -1,115 +0,0 @@
1
- # Search Package — Standalone Developer Guide
2
-
3
- `@open-mercato/search` provides fulltext, vector, and token-based search. Configure search for your entities via `search.ts` in your module.
4
-
5
- ## Strategy Overview
6
-
7
- | Strategy | Backend | Use when |
8
- |----------|---------|----------|
9
- | **Fulltext** | Meilisearch | Fast, typo-tolerant search (names, titles, descriptions) |
10
- | **Vector** | OpenAI / Ollama | Semantic, meaning-based search ("find customers interested in X") |
11
- | **Tokens** | PostgreSQL | Baseline keyword search, always available, no external services |
12
-
13
- Strategies auto-degrade when their backend is not configured.
14
-
15
- ## Adding Search to a Module
16
-
17
- Create `src/modules/<module>/search.ts`:
18
-
19
- ```typescript
20
- import type { SearchModuleConfig, SearchBuildContext } from '@open-mercato/shared/modules/search'
21
-
22
- export const searchConfig: SearchModuleConfig = {
23
- entities: [{
24
- entityId: 'my_module:my_entity', // MUST match entity registry
25
- priority: 10,
26
-
27
- // Fulltext: control field indexing
28
- fieldPolicy: {
29
- searchable: ['name', 'description'],
30
- hashOnly: ['email', 'phone'], // exact match only
31
- excluded: ['password', 'api_key'], // never indexed
32
- },
33
-
34
- // Vector: generate text for embeddings
35
- buildSource: async (ctx: SearchBuildContext) => ({
36
- text: [`Name: ${ctx.record.name}`, `Description: ${ctx.record.description}`],
37
- presenter: { title: ctx.record.name, subtitle: ctx.record.status, icon: 'lucide:file', badge: 'Item' },
38
- links: [{ href: `/backend/my-module/${ctx.record.id}`, label: 'View', kind: 'primary' }],
39
- checksumSource: { record: ctx.record, customFields: ctx.customFields },
40
- }),
41
-
42
- // Tokens: format at search time
43
- formatResult: async (ctx: SearchBuildContext) => ({
44
- title: ctx.record.name ?? 'Unknown',
45
- subtitle: ctx.record.status,
46
- icon: 'lucide:file',
47
- badge: 'Item',
48
- }),
49
-
50
- resolveUrl: async (ctx) => `/backend/my-module/${ctx.record.id}`,
51
- }],
52
- }
53
- export default searchConfig
54
- ```
55
-
56
- Run `yarn generate` after creating the file.
57
-
58
- ## MUST Rules
59
-
60
- 1. **MUST create `search.ts`** for every module with searchable entities
61
- 2. **MUST define `fieldPolicy.excluded`** for sensitive fields (passwords, tokens, SSNs)
62
- 3. **MUST define `formatResult`** for every entity using the tokens strategy
63
- 4. **MUST include `checksumSource`** in every `buildSource` return value
64
- 5. **MUST NOT** include encrypted/sensitive fields in `buildSource` text
65
- 6. **MUST NOT** use raw `fetch` against search API — use `apiCall`/`apiCallOrThrow`
66
-
67
- ## Auto-Indexing
68
-
69
- When CRUD routes have `indexer: { entityType }`, the search module automatically subscribes to entity CRUD events and indexes/removes records. No manual indexing code needed.
70
-
71
- ## CLI Commands
72
-
73
- ```bash
74
- yarn mercato search status # Check strategies and connectivity
75
- yarn mercato search query -q "term" --tenant <id> # Run a search
76
- yarn mercato search reindex --tenant <id> # Reindex all entities
77
- yarn mercato search reindex --entity my_module:my_entity --tenant <id> # Reindex specific entity
78
- yarn mercato search test-meilisearch # Test Meilisearch connection
79
- ```
80
-
81
- ## Environment Variables
82
-
83
- | Variable | Purpose |
84
- |----------|---------|
85
- | `MEILISEARCH_HOST` | Meilisearch URL (enables fulltext) |
86
- | `MEILISEARCH_API_KEY` | Meilisearch auth key |
87
- | `OPENAI_API_KEY` | OpenAI API key (enables vector search) |
88
- | `OM_SEARCH_DEBUG` | Enable verbose debug logging |
89
-
90
- ## Programmatic Search via DI
91
-
92
- ```typescript
93
- const searchService = container.resolve('searchService')
94
- const results = await searchService.search('query', {
95
- tenantId: 'tenant-123',
96
- limit: 20,
97
- strategies: ['fulltext', 'vector'],
98
- })
99
- ```
100
-
101
- ## SearchBuildContext
102
-
103
- Both `buildSource` and `formatResult` receive this context:
104
-
105
- ```typescript
106
- interface SearchBuildContext {
107
- record: Record<string, unknown> // The database record
108
- customFields: Record<string, unknown> // Custom fields (without cf: prefix)
109
- tenantId?: string | null
110
- organizationId?: string | null
111
- queryEngine?: QueryEngine // For loading related entities
112
- }
113
- ```
114
-
115
- Use `queryEngine` to load parent/related entities for richer presenter data.
@@ -1,108 +0,0 @@
1
- # Shared Package — Standalone Developer Guide
2
-
3
- `@open-mercato/shared` provides cross-cutting utilities, types, and DSL helpers. Import from here for infrastructure concerns — never from `@open-mercato/core`.
4
-
5
- ## Import Map
6
-
7
- | Need | Import |
8
- |------|--------|
9
- | Client-side translations | `import { useT } from '@open-mercato/shared/lib/i18n/context'` |
10
- | Server-side translations | `import { resolveTranslations } from '@open-mercato/shared/lib/i18n/server'` |
11
- | Encrypted queries | `import { findWithDecryption, findOneWithDecryption } from '@open-mercato/shared/lib/encryption/find'` |
12
- | Boolean parsing | `import { parseBooleanToken, parseBooleanWithDefault } from '@open-mercato/shared/lib/boolean'` |
13
- | Command pattern | `import { registerCommand } from '@open-mercato/shared/lib/commands'` |
14
- | Safe entity flush | `import { withAtomicFlush } from '@open-mercato/shared/lib/commands/flush'` |
15
- | Data/Query engine types | `import type { DataEngine, QueryEngine } from '@open-mercato/shared/lib/data/engine'` |
16
- | CRUD multi-ID filtering | `import { parseIdsParam, mergeIdFilter } from '@open-mercato/shared/lib/crud/ids'` |
17
- | CRUD OpenAPI factory | `import { createCrudOpenApiFactory } from '@open-mercato/shared/lib/openapi/crud'` |
18
- | Scoped API payloads | `import { withScopedPayload } from '@open-mercato/shared/lib/api/scoped'` |
19
- | DI setup (Awilix) | `import { ... } from '@open-mercato/shared/lib/di'` |
20
- | Custom field helpers | `import { splitCustomFieldPayload, normalizeCustomFieldValues } from '@open-mercato/shared/lib/custom-fields'` |
21
- | DSL helpers | `import { defineLink, entityId, cf } from '@open-mercato/shared/modules/dsl'` |
22
- | Event declarations | `import { createModuleEvents } from '@open-mercato/shared/modules/events'` |
23
- | Module setup types | `import type { ModuleSetupConfig } from '@open-mercato/shared/modules/setup'` |
24
- | Search config types | `import type { SearchModuleConfig } from '@open-mercato/shared/modules/search'` |
25
- | Widget injection position | `import { InjectionPosition } from '@open-mercato/shared/modules/widgets/injection-position'` |
26
- | API interceptor types | `import type { ApiInterceptor } from '@open-mercato/shared/lib/crud/api-interceptor'` |
27
- | Response enricher types | `import type { ResponseEnricher } from '@open-mercato/shared/lib/crud/response-enricher'` |
28
- | Broadcast event check | `import { isBroadcastEvent } from '@open-mercato/shared/modules/events'` |
29
-
30
- ## i18n — All User-Facing Strings
31
-
32
- Never hard-code user-facing text. Use locale files and translation helpers.
33
-
34
- ```typescript
35
- // Client-side (React components)
36
- const t = useT()
37
- return <span>{t('my_module.labels.title')}</span>
38
-
39
- // Server-side (API routes, commands)
40
- const { t } = await resolveTranslations()
41
- const label = t('my_module.labels.title')
42
- ```
43
-
44
- Add translations to `i18n/<locale>.json` files in your module.
45
-
46
- ## Encryption — Query Encrypted Entities
47
-
48
- MUST use these instead of raw `em.find`/`em.findOne` when the entity may contain encrypted fields:
49
-
50
- ```typescript
51
- const results = await findWithDecryption(em, 'Entity', filter, { tenantId, organizationId })
52
- const record = await findOneWithDecryption(em, 'Entity', filter, { tenantId, organizationId })
53
- ```
54
-
55
- ## Boolean Parsing
56
-
57
- For env vars and query params, never use `=== 'true'`:
58
-
59
- ```typescript
60
- const isEnabled = parseBooleanToken(process.env.MY_FLAG) // true | false | undefined
61
- const withDefault = parseBooleanWithDefault(query.active, true) // defaults to true
62
- ```
63
-
64
- ## Safe Entity Flush
65
-
66
- When a command mutates entities across phases that include queries on the same `EntityManager`, use `withAtomicFlush` to prevent silent data loss:
67
-
68
- ```typescript
69
- import { withAtomicFlush } from '@open-mercato/shared/lib/commands/flush'
70
-
71
- await withAtomicFlush(em, [
72
- () => { record.name = 'New'; record.status = 'active' },
73
- () => syncEntityTags(em, record, tags), // internal em.find() won't lose changes
74
- ], { transaction: true })
75
-
76
- // Side effects AFTER the atomic flush
77
- await emitCrudSideEffects({ ... })
78
- ```
79
-
80
- **Never** run `em.find`/`em.findOne` between scalar mutations and `em.flush()` without `withAtomicFlush`.
81
-
82
- ## CRUD Multi-ID Filtering
83
-
84
- Filter list APIs by multiple IDs using `?ids=uuid1,uuid2`:
85
-
86
- ```typescript
87
- import { parseIdsParam, mergeIdFilter } from '@open-mercato/shared/lib/crud/ids'
88
- const ids = parseIdsParam(query.ids) // string[] | undefined
89
- const filter = mergeIdFilter(existingFilter, ids) // intersects with existing id filter
90
- ```
91
-
92
- ## Custom Field Helpers
93
-
94
- When your entity uses custom fields:
95
-
96
- ```typescript
97
- import { splitCustomFieldPayload, normalizeCustomFieldValues, normalizeCustomFieldResponse }
98
- from '@open-mercato/shared/lib/custom-fields'
99
-
100
- // In create/update: split cf:* fields from standard fields
101
- const { standard, custom } = splitCustomFieldPayload(body)
102
-
103
- // Normalize for storage
104
- const normalized = normalizeCustomFieldValues(custom, fieldDefinitions)
105
-
106
- // Normalize for API response
107
- const response = normalizeCustomFieldResponse(record, customFields)
108
- ```