create-mercato-app 0.7.1-develop.7150.1.c1941e0c22 → 0.7.1-develop.7152.1.a69e92f9c9

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 (119) hide show
  1. package/agentic/shared/ai/harness/cases.json +4 -2
  2. package/dist/agentic/guides/module-facts.json +828 -149
  3. package/dist/agentic/guides/module-facts.v2.json +828 -149
  4. package/dist/agentic/guides/modules/ai_assistant/index.md +1 -1
  5. package/dist/agentic/guides/modules/api_docs/index.md +1 -1
  6. package/dist/agentic/guides/modules/api_keys/index.md +1 -1
  7. package/dist/agentic/guides/modules/attachments/index.md +1 -1
  8. package/dist/agentic/guides/modules/audit_logs/index.md +1 -1
  9. package/dist/agentic/guides/modules/auth/index.md +1 -1
  10. package/dist/agentic/guides/modules/business_rules/index.md +1 -1
  11. package/dist/agentic/guides/modules/catalog/index.md +1 -1
  12. package/dist/agentic/guides/modules/channel_apns/index.md +1 -1
  13. package/dist/agentic/guides/modules/channel_discord/index.md +1 -1
  14. package/dist/agentic/guides/modules/channel_expo/index.md +1 -1
  15. package/dist/agentic/guides/modules/channel_fcm/index.md +1 -1
  16. package/dist/agentic/guides/modules/channel_gmail/index.md +1 -1
  17. package/dist/agentic/guides/modules/channel_imap/index.md +1 -1
  18. package/dist/agentic/guides/modules/channel_resend/acl-features.md +12 -0
  19. package/dist/agentic/guides/modules/channel_resend/contribution-resolutions.md +11 -0
  20. package/dist/agentic/guides/modules/channel_resend/di-registrations-rich.md +12 -0
  21. package/dist/agentic/guides/modules/channel_resend/exact-override-targets.md +16 -0
  22. package/dist/agentic/guides/modules/channel_resend/index.md +18 -0
  23. package/dist/agentic/guides/modules/channel_resend/owned-contract-module-metadata.md +11 -0
  24. package/dist/agentic/guides/modules/channel_resend/setup.md +11 -0
  25. package/dist/agentic/guides/modules/channel_resend/umes-contributions.md +11 -0
  26. package/dist/agentic/guides/modules/channel_ses/acl-features.md +12 -0
  27. package/dist/agentic/guides/modules/channel_ses/contribution-resolutions.md +11 -0
  28. package/dist/agentic/guides/modules/channel_ses/di-registrations-rich.md +12 -0
  29. package/dist/agentic/guides/modules/channel_ses/exact-override-targets.md +16 -0
  30. package/dist/agentic/guides/modules/channel_ses/index.md +18 -0
  31. package/dist/agentic/guides/modules/channel_ses/owned-contract-module-metadata.md +11 -0
  32. package/dist/agentic/guides/modules/channel_ses/setup.md +11 -0
  33. package/dist/agentic/guides/modules/channel_ses/umes-contributions.md +11 -0
  34. package/dist/agentic/guides/modules/checkout/index.md +1 -1
  35. package/dist/agentic/guides/modules/communication_channels/di-registrations-rich.md +10 -9
  36. package/dist/agentic/guides/modules/communication_channels/exact-override-targets.md +12 -11
  37. package/dist/agentic/guides/modules/communication_channels/index.md +1 -1
  38. package/dist/agentic/guides/modules/communication_channels/setup.md +1 -1
  39. package/dist/agentic/guides/modules/configs/index.md +1 -1
  40. package/dist/agentic/guides/modules/content/index.md +1 -1
  41. package/dist/agentic/guides/modules/currencies/index.md +1 -1
  42. package/dist/agentic/guides/modules/customer_accounts/index.md +1 -1
  43. package/dist/agentic/guides/modules/customers/index.md +1 -1
  44. package/dist/agentic/guides/modules/dashboards/index.md +1 -1
  45. package/dist/agentic/guides/modules/data_sync/index.md +1 -1
  46. package/dist/agentic/guides/modules/design_system/index.md +1 -1
  47. package/dist/agentic/guides/modules/devices/index.md +1 -1
  48. package/dist/agentic/guides/modules/dictionaries/index.md +1 -1
  49. package/dist/agentic/guides/modules/directory/index.md +1 -1
  50. package/dist/agentic/guides/modules/documents/index.md +1 -1
  51. package/dist/agentic/guides/modules/entities/index.md +1 -1
  52. package/dist/agentic/guides/modules/eudr/index.md +1 -1
  53. package/dist/agentic/guides/modules/events/index.md +1 -1
  54. package/dist/agentic/guides/modules/feature_toggles/index.md +1 -1
  55. package/dist/agentic/guides/modules/gateway_stripe/index.md +1 -1
  56. package/dist/agentic/guides/modules/generators/index.md +1 -1
  57. package/dist/agentic/guides/modules/inbox_ops/index.md +1 -1
  58. package/dist/agentic/guides/modules/integrations/index.md +1 -1
  59. package/dist/agentic/guides/modules/messages/index.md +1 -1
  60. package/dist/agentic/guides/modules/notifications/index.md +1 -1
  61. package/dist/agentic/guides/modules/onboarding/index.md +1 -1
  62. package/dist/agentic/guides/modules/payment_gateways/index.md +1 -1
  63. package/dist/agentic/guides/modules/perspectives/index.md +1 -1
  64. package/dist/agentic/guides/modules/planner/index.md +1 -1
  65. package/dist/agentic/guides/modules/portal/index.md +1 -1
  66. package/dist/agentic/guides/modules/progress/index.md +1 -1
  67. package/dist/agentic/guides/modules/push_notifications/index.md +1 -1
  68. package/dist/agentic/guides/modules/query_index/index.md +1 -1
  69. package/dist/agentic/guides/modules/record_locks/index.md +1 -1
  70. package/dist/agentic/guides/modules/resources/index.md +1 -1
  71. package/dist/agentic/guides/modules/sales/index.md +1 -1
  72. package/dist/agentic/guides/modules/scheduler/index.md +1 -1
  73. package/dist/agentic/guides/modules/search/index.md +1 -1
  74. package/dist/agentic/guides/modules/security/index.md +1 -1
  75. package/dist/agentic/guides/modules/shipping_carriers/index.md +1 -1
  76. package/dist/agentic/guides/modules/sso/index.md +1 -1
  77. package/dist/agentic/guides/modules/staff/index.md +1 -1
  78. package/dist/agentic/guides/modules/storage_s3/index.md +1 -1
  79. package/dist/agentic/guides/modules/sync_akeneo/index.md +1 -1
  80. package/dist/agentic/guides/modules/sync_excel/index.md +1 -1
  81. package/dist/agentic/guides/modules/system_status_overlays/index.md +1 -1
  82. package/dist/agentic/guides/modules/translations/index.md +1 -1
  83. package/dist/agentic/guides/modules/warranty_claims/index.md +1 -1
  84. package/dist/agentic/guides/modules/webhooks/index.md +1 -1
  85. package/dist/agentic/guides/modules/wms/index.md +1 -1
  86. package/dist/agentic/guides/modules/workflows/index.md +1 -1
  87. package/dist/agentic/guides/reference-module-facts.json +1 -1
  88. package/dist/agentic/guides/upstream/manifest.json +1 -1
  89. package/dist/agentic/shared/ai/harness/cases.json +4 -2
  90. package/package.json +3 -3
  91. package/template/.env.example +46 -1
  92. package/template/package.json.template +2 -0
  93. package/template/scripts/dev-runtime-actions.mjs +99 -0
  94. package/template/scripts/dev-runtime-config.mjs +89 -0
  95. package/template/scripts/dev-runtime-diagnostics.mjs +292 -0
  96. package/template/scripts/dev-runtime-gateway.mjs +370 -0
  97. package/template/scripts/dev-runtime-probe.mjs +77 -0
  98. package/template/scripts/dev-runtime-state.mjs +571 -0
  99. package/template/scripts/dev-runtime-supervisor.mjs +268 -0
  100. package/template/scripts/dev-runtime.mjs +29 -0
  101. package/template/scripts/dev-splash-state.mjs +14 -0
  102. package/template/scripts/dev-splash.html +357 -2
  103. package/template/scripts/dev.mjs +396 -14
  104. package/template/src/app/__tests__/start-page-bootstrap.test.ts +34 -0
  105. package/template/src/app/api/dev-runtime/actions/[action]/route.ts +5 -0
  106. package/template/src/app/api/dev-runtime/diagnostics/route.ts +5 -0
  107. package/template/src/app/api/dev-runtime/logs/route.ts +5 -0
  108. package/template/src/app/api/dev-runtime/status/route.ts +5 -0
  109. package/template/src/app/api/healthz/__tests__/route.test.ts +3 -1
  110. package/template/src/app/global-error.tsx +7 -0
  111. package/template/src/app/layout.tsx +11 -0
  112. package/template/src/app/start/page.tsx +11 -1
  113. package/template/src/i18n/de.json +27 -0
  114. package/template/src/i18n/en.json +27 -0
  115. package/template/src/i18n/es.json +27 -0
  116. package/template/src/i18n/ko.json +27 -0
  117. package/template/src/i18n/pl.json +27 -0
  118. package/template/src/modules/example/__integration__/TC-START-001-onboarding-gate.spec.ts +33 -0
  119. package/template/src/modules.ts +2 -0
@@ -1,5 +1,5 @@
1
1
  # feature_toggles — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/feature_toggles
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # gateway_stripe — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/gateway-stripe 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/gateway-stripe 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/gateway-stripe/src/modules/gateway_stripe
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # generators — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/shared 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/shared 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/shared/src/modules/generators
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # inbox_ops — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/inbox_ops
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # integrations — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/integrations
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # messages — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/messages
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # notifications — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/notifications
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # onboarding — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/onboarding 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/onboarding 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/onboarding/src/modules/onboarding
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # payment_gateways — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/payment_gateways
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # perspectives — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/perspectives
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # planner — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/planner
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # portal — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/portal
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # progress — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/progress
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # push_notifications — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/push_notifications
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # query_index — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/query_index
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # record_locks — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/enterprise 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/enterprise 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/enterprise/src/modules/record_locks
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # resources — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/resources
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # sales — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/sales
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # scheduler — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/scheduler 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/scheduler 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/scheduler/src/modules/scheduler
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # search — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/search 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/search 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/search/src/modules/search
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # security — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/enterprise 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/enterprise 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/enterprise/src/modules/security
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # shipping_carriers — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/shipping_carriers
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # sso — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/enterprise 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/enterprise 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/enterprise/src/modules/sso
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # staff — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/staff
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # storage_s3 — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/storage-s3 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/storage-s3 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/storage-s3/src/modules/storage_s3
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # sync_akeneo — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/sync-akeneo 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/sync-akeneo 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/sync-akeneo/src/modules/sync_akeneo
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # sync_excel — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/sync_excel
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # system_status_overlays — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/enterprise 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/enterprise 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/enterprise/src/modules/system_status_overlays
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # translations — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/translations
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # warranty_claims — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/warranty_claims
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # webhooks — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/webhooks 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/webhooks 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/webhooks/src/modules/webhooks
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # wms — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/wms
4
4
 
5
5
  ## Sections
@@ -1,5 +1,5 @@
1
1
  # workflows — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.7.1-develop.7150.1.c1941e0c22; core 0.7.1-develop.7150.1.c1941e0c22 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.7.1-develop.7152.1.a69e92f9c9; core 0.7.1-develop.7152.1.a69e92f9c9 — R1 staleness stamp -->
3
3
  Source root: node_modules/@open-mercato/core/src/modules/workflows
4
4
 
5
5
  ## Sections
@@ -1185,7 +1185,7 @@
1185
1185
  "facts": {
1186
1186
  "title": "Example Module",
1187
1187
  "description": "Demonstrates pages, APIs, entities and DI.",
1188
- "coreVersion": "0.7.1-develop.7150.1.c1941e0c22",
1188
+ "coreVersion": "0.7.1-develop.7152.1.a69e92f9c9",
1189
1189
  "sourcePackage": null,
1190
1190
  "sourceVersion": null,
1191
1191
  "sourceRoot": "src/modules/example",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 1,
3
- "generator": "create-mercato-app@0.7.1-develop.7150.1.c1941e0c22",
3
+ "generator": "create-mercato-app@0.7.1-develop.7152.1.a69e92f9c9",
4
4
  "files": {
5
5
  "AGENTS.md": "1f54610cebc4fd7e42b56d1c18859edc7ed7d3165c9af72c4530b6feaf76e457",
6
6
  "BACKWARD_COMPATIBILITY.md": "b2e5b812cd677d610787e37be079ef1e686cce171a9b11b0278ff7f0fb34ba2b"
@@ -3055,7 +3055,7 @@
3055
3055
  "mode": "one-shot",
3056
3056
  "evaluationKind": "routing",
3057
3057
  "risk": "high",
3058
- "prompt": "In a freshly scaffolded standalone Open Mercato app, first distinguish outbound transactional email from a connected Gmail/IMAP mailbox, then build the selected app-local provider with encrypted credentials, health, retry, redacted structured createLogger logs, and activation. A mailbox must use the installed communication_channels module and canonical ChannelAdapter contract with integration.ts hub metadata plus DI/setup registration, following installed channel_gmail/channel_imap precedent; transactional delivery must not pretend to be a mailbox adapter. Do not invent a packages workspace; separately published packaging requires an explicit reuse decision. Generated module facts are sufficient for routing; invoke framework context during implementation only after naming one missing exact-version symbol.",
3058
+ "prompt": "In a freshly scaffolded standalone Open Mercato app, first distinguish outbound transactional email from a connected Gmail/IMAP mailbox and inspect the installed Resend/SES provider facts before proposing app-local code. Reuse an installed transactional provider when it matches; otherwise build the selected app-local provider with encrypted credentials, health, retry, redacted structured createLogger logs, and activation. A mailbox must use the installed communication_channels module and canonical ChannelAdapter contract with integration.ts hub metadata plus DI/setup registration, following installed channel_gmail/channel_imap precedent; transactional delivery must not pretend to be a mailbox adapter. Do not invent a packages workspace; separately published packaging requires an explicit reuse decision. Generated module facts are sufficient for routing; invoke framework context during implementation only after naming one missing exact-version symbol.",
3059
3059
  "tags": [
3060
3060
  "integration",
3061
3061
  "encrypted-credentials",
@@ -3089,7 +3089,9 @@
3089
3089
  ".ai/skills/om-integration-builder/SKILL.md",
3090
3090
  ".ai/guides/modules/communication_channels/index.md",
3091
3091
  ".ai/guides/modules/channel_gmail/index.md",
3092
- ".ai/guides/modules/channel_imap/index.md"
3092
+ ".ai/guides/modules/channel_imap/index.md",
3093
+ ".ai/guides/modules/channel_resend/index.md",
3094
+ ".ai/guides/modules/channel_ses/index.md"
3093
3095
  ],
3094
3096
  "allowedExtra": [
3095
3097
  ".ai/guides/modules/integrations/index.md",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-mercato-app",
3
- "version": "0.7.1-develop.7150.1.c1941e0c22",
3
+ "version": "0.7.1-develop.7152.1.a69e92f9c9",
4
4
  "type": "module",
5
5
  "description": "Create a new Open Mercato application",
6
6
  "main": "./dist/index.js",
@@ -28,8 +28,8 @@
28
28
  "ts-morph": "^28.0.0"
29
29
  },
30
30
  "devDependencies": {
31
- "@open-mercato/cli": "0.7.1-develop.7150.1.c1941e0c22",
32
- "@open-mercato/shared": "0.7.1-develop.7150.1.c1941e0c22",
31
+ "@open-mercato/cli": "0.7.1-develop.7152.1.a69e92f9c9",
32
+ "@open-mercato/shared": "0.7.1-develop.7152.1.a69e92f9c9",
33
33
  "@types/node": "^26.1.2",
34
34
  "esbuild": "^0.28.1",
35
35
  "tsx": "^4.23.1",
@@ -41,8 +41,26 @@ NEXTAUTH_SECRET=
41
41
  # or
42
42
  # EVENTS_REDIS_URL=redis://localhost:6379
43
43
 
44
- # Email provider (optional)
44
+ # Outbound system email provider (communications hub)
45
+ # A provider key alone seeds nothing: the env preset also needs a from-address from
46
+ # NOTIFICATIONS_EMAIL_FROM / EMAIL_FROM / ADMIN_EMAIL further down this file. With the key but no
47
+ # from-address the app logs a warning and sends no mail.
48
+ # SYSTEM_EMAIL_PROVIDER=resend
45
49
  # RESEND_API_KEY=
50
+ #
51
+ # Amazon SES outbound email. Only the region, sender and configuration set are per tenant — the AWS
52
+ # identity itself comes from this instance's default AWS credential chain (AWS_ACCESS_KEY_ID /
53
+ # AWS_SECRET_ACCESS_KEY below, or the container's IAM role), so every tenant sends from one AWS
54
+ # account. Use Resend when each tenant must bring its own provider account.
55
+ # SYSTEM_EMAIL_PROVIDER=ses
56
+ # AWS_SES_REGION=eu-west-2
57
+ # AWS_REGION=eu-west-2
58
+ # AWS_SES_CONFIGURATION_SET=
59
+ #
60
+ # Optional: pin every tenant-scoped send to one communication channel id instead of resolving the
61
+ # tenant's own. The channel must belong to the sending organization or be tenant-wide
62
+ # (organization_id IS NULL); a pinned channel never falls back to the env credentials above.
63
+ # SYSTEM_EMAIL_CHANNEL_ID=
46
64
 
47
65
  # Public URL used in emails and onboarding flows
48
66
  APP_URL=http://localhost:3000
@@ -244,6 +262,33 @@ AUTO_SPAWN_WORKERS=true
244
262
  # OM_WATCH_PACKAGES=core,ui,shared # used when OM_WATCH_SCOPE=env
245
263
  # OM_WATCH_POPULAR_LIMIT=6 # cap for OM_WATCH_SCOPE=popular
246
264
 
265
+ # Dev runtime diagnostics (development only; never enabled in a production build).
266
+ # The `yarn dev` supervisor collects process, log, warmup, probe and browser
267
+ # signals into one structured runtime state, shows it on the dev splash, and
268
+ # mirrors it into an in-app banner through a token-protected local bridge.
269
+ # OM_DEV_RUNTIME_MODE direct|proxy. `direct` (default) keeps the existing
270
+ # topology: Next.js owns the public port and the splash
271
+ # runs on OM_DEV_SPLASH_PORT. `proxy` puts an opt-in
272
+ # local gateway on the public port instead.
273
+ # OM_DEV_UPSTREAM_PORT Internal port for the managed Next.js runtime in proxy
274
+ # mode. Defaults to an auto-selected free loopback port;
275
+ # must not equal the public application port.
276
+ # OM_DEV_RUNTIME_MODE=direct
277
+ # OM_DEV_UPSTREAM_PORT=3111
278
+ #
279
+ # Continuous post-READY health probe against the local `/api/healthz` contract.
280
+ # The probe never re-runs the login warmup and never logs a success.
281
+ # OM_DEV_RUNTIME_PROBE_INTERVAL_MS=5000
282
+ # OM_DEV_RUNTIME_PROBE_TIMEOUT_MS=1500 # must be lower than the interval
283
+ # OM_DEV_RUNTIME_PROBE_FAILURE_THRESHOLD=3 # consecutive failures -> degraded
284
+ # OM_DEV_RUNTIME_PROBE_RECOVERY_THRESHOLD=2 # consecutive successes -> ready
285
+ #
286
+ # Collection and presentation toggles. Both follow the dev splash by default and
287
+ # stay off in CI. Turning diagnostics off also disables the in-app banner, and
288
+ # with it the dev-only status/diagnostics/recovery-action routes.
289
+ # OM_DEV_RUNTIME_DIAGNOSTICS=true
290
+ # OM_DEV_RUNTIME_BANNER=true
291
+
247
292
  # Base directory for local file-backed queues (default: ./.mercato/queue)
248
293
  QUEUE_BASE_DIR=./.mercato/queue
249
294
 
@@ -59,6 +59,8 @@
59
59
  "@open-mercato/channel-apns": "{{PACKAGE_VERSION}}",
60
60
  "@open-mercato/channel-expo": "{{PACKAGE_VERSION}}",
61
61
  "@open-mercato/channel-fcm": "{{PACKAGE_VERSION}}",
62
+ "@open-mercato/channel-resend": "{{PACKAGE_VERSION}}",
63
+ "@open-mercato/channel-ses": "{{PACKAGE_VERSION}}",
62
64
  "@open-mercato/checkout": "{{PACKAGE_VERSION}}",
63
65
  "@open-mercato/cli": "{{PACKAGE_VERSION}}",
64
66
  "@open-mercato/content": "{{PACKAGE_VERSION}}",
@@ -0,0 +1,99 @@
1
+ import { RUNTIME_RECOVERY_ACTIONS } from './dev-runtime-state.mjs'
2
+
3
+ export const DEFAULT_ACTION_TIMEOUT_MS = 10 * 60 * 1000
4
+ export const MAX_ACTION_OUTPUT_LINES = 40
5
+
6
+ function conflict(code, message, status = 409) {
7
+ return { ok: false, status, code, message }
8
+ }
9
+
10
+ /**
11
+ * Runs the fixed recovery allowlist against handlers the supervisor already
12
+ * owns. User input selects an enum member and nothing else: it can never name a
13
+ * binary, append a flag, or change a working directory.
14
+ *
15
+ * Exactly one mutating action may run per generation, and a completion from an
16
+ * older generation can never overwrite the current state.
17
+ */
18
+ export function createDevRuntimeActionRunner(options = {}) {
19
+ const handlers = options.handlers ?? {}
20
+ const state = options.state
21
+ const now = typeof options.now === 'function' ? options.now : () => new Date()
22
+ const timeoutMs = Number.isInteger(options.timeoutMs) ? options.timeoutMs : DEFAULT_ACTION_TIMEOUT_MS
23
+ const logger = options.logger ?? console
24
+
25
+ let sequence = 0
26
+ let active = null
27
+
28
+ function describeActive() {
29
+ return active ? { ...active } : null
30
+ }
31
+
32
+ async function run(action) {
33
+ if (!RUNTIME_RECOVERY_ACTIONS.includes(action)) {
34
+ return { ok: false, status: 400, code: 'unknown_action', message: 'Unknown recovery action.' }
35
+ }
36
+ if (!state) {
37
+ return conflict('supervisor_unavailable', 'The supervisor is no longer available.', 503)
38
+ }
39
+ const handler = handlers[action]
40
+ if (typeof handler !== 'function') {
41
+ return conflict('action_unsupported', `The "${action}" action is not available in this runtime mode.`, 503)
42
+ }
43
+ if (active) {
44
+ return conflict('action_busy', `The "${active.action}" action is still running.`)
45
+ }
46
+
47
+ const generation = state.getGeneration()
48
+ sequence += 1
49
+ const actionId = `${generation}-${sequence}`
50
+ active = { actionId, action, generation, startedAt: now().toISOString() }
51
+ state.beginRecovery(action)
52
+
53
+ // The await chain is intentionally detached: the caller gets a 202 while the
54
+ // action keeps running under the supervisor's lifecycle.
55
+ void (async () => {
56
+ let exitCode = 1
57
+ try {
58
+ exitCode = await withTimeout(handler(), timeoutMs)
59
+ } catch (error) {
60
+ logger?.error?.(`❌ Dev runtime action "${action}" failed: ${error instanceof Error ? error.message : String(error)}`)
61
+ state.recordSignal({
62
+ source: 'process',
63
+ generation,
64
+ code: 'recovery_action_failed',
65
+ title: 'Recovery action failed',
66
+ detail: `The "${action}" action did not complete successfully`,
67
+ message: error instanceof Error ? error.message : String(error),
68
+ failureStage: `Recovery: ${action}`,
69
+ })
70
+ } finally {
71
+ active = null
72
+ // A stale completion must not clear a recovery that a newer generation
73
+ // started.
74
+ state.completeRecovery(Number.isInteger(exitCode) ? exitCode : 1, { generation })
75
+ }
76
+ })()
77
+
78
+ return { ok: true, actionId, generation }
79
+ }
80
+
81
+ return { run, describeActive, isBusy: () => active !== null }
82
+ }
83
+
84
+ function withTimeout(promise, timeoutMs) {
85
+ return new Promise((resolve, reject) => {
86
+ const timer = setTimeout(() => reject(new Error(`recovery action timed out after ${timeoutMs}ms`)), timeoutMs)
87
+ timer.unref?.()
88
+ Promise.resolve(promise).then(
89
+ (value) => {
90
+ clearTimeout(timer)
91
+ resolve(value)
92
+ },
93
+ (error) => {
94
+ clearTimeout(timer)
95
+ reject(error)
96
+ },
97
+ )
98
+ })
99
+ }
@@ -0,0 +1,89 @@
1
+ export const DEFAULT_PROBE_INTERVAL_MS = 5000
2
+ export const DEFAULT_PROBE_TIMEOUT_MS = 1500
3
+ export const DEFAULT_PROBE_FAILURE_THRESHOLD = 3
4
+ export const DEFAULT_PROBE_RECOVERY_THRESHOLD = 2
5
+
6
+ export class DevRuntimeConfigError extends Error {
7
+ constructor(message) {
8
+ super(message)
9
+ this.name = 'DevRuntimeConfigError'
10
+ }
11
+ }
12
+
13
+ function readRawEnv(env, key) {
14
+ const raw = env?.[key]
15
+ if (typeof raw !== 'string') return ''
16
+ return raw.trim()
17
+ }
18
+
19
+ function parseBoundedInteger(env, key, fallback, { min = 1, max = Number.MAX_SAFE_INTEGER } = {}) {
20
+ const raw = readRawEnv(env, key)
21
+ if (!raw) return fallback
22
+ const parsed = Number(raw)
23
+ if (!Number.isInteger(parsed) || parsed < min || parsed > max) {
24
+ throw new DevRuntimeConfigError(`${key} must be an integer between ${min} and ${max}; received "${raw}".`)
25
+ }
26
+ return parsed
27
+ }
28
+
29
+ function parseEnabledFlag(env, key, fallback) {
30
+ const raw = readRawEnv(env, key).toLowerCase()
31
+ if (!raw) return fallback
32
+ if (['1', 'true', 'on', 'yes', 'enabled'].includes(raw)) return true
33
+ if (['0', 'false', 'off', 'no', 'disabled'].includes(raw)) return false
34
+ throw new DevRuntimeConfigError(`${key} must be a boolean flag; received "${raw}".`)
35
+ }
36
+
37
+ export function resolveDevRuntimeMode(env = process.env) {
38
+ const raw = readRawEnv(env, 'OM_DEV_RUNTIME_MODE').toLowerCase()
39
+ if (!raw) return 'direct'
40
+ if (raw === 'direct' || raw === 'proxy') return raw
41
+ throw new DevRuntimeConfigError(`OM_DEV_RUNTIME_MODE must be "direct" or "proxy"; received "${raw}".`)
42
+ }
43
+
44
+ export function resolveUpstreamPort(env = process.env, publicPort = null) {
45
+ const raw = readRawEnv(env, 'OM_DEV_UPSTREAM_PORT')
46
+ if (!raw) return null
47
+ const parsed = Number(raw)
48
+ if (!Number.isInteger(parsed) || parsed < 1 || parsed > 65535) {
49
+ throw new DevRuntimeConfigError(`OM_DEV_UPSTREAM_PORT must be an integer between 1 and 65535; received "${raw}".`)
50
+ }
51
+ if (Number.isInteger(publicPort) && parsed === publicPort) {
52
+ throw new DevRuntimeConfigError(`OM_DEV_UPSTREAM_PORT (${parsed}) must not equal the public application port.`)
53
+ }
54
+ return parsed
55
+ }
56
+
57
+ export function resolveProbeConfig(env = process.env) {
58
+ const intervalMs = parseBoundedInteger(env, 'OM_DEV_RUNTIME_PROBE_INTERVAL_MS', DEFAULT_PROBE_INTERVAL_MS, { min: 250, max: 600_000 })
59
+ const timeoutMs = parseBoundedInteger(env, 'OM_DEV_RUNTIME_PROBE_TIMEOUT_MS', DEFAULT_PROBE_TIMEOUT_MS, { min: 100, max: 600_000 })
60
+ if (timeoutMs >= intervalMs) {
61
+ throw new DevRuntimeConfigError(`OM_DEV_RUNTIME_PROBE_TIMEOUT_MS (${timeoutMs}) must be less than OM_DEV_RUNTIME_PROBE_INTERVAL_MS (${intervalMs}).`)
62
+ }
63
+ return {
64
+ intervalMs,
65
+ timeoutMs,
66
+ failureThreshold: parseBoundedInteger(env, 'OM_DEV_RUNTIME_PROBE_FAILURE_THRESHOLD', DEFAULT_PROBE_FAILURE_THRESHOLD, { min: 1, max: 100 }),
67
+ recoveryThreshold: parseBoundedInteger(env, 'OM_DEV_RUNTIME_PROBE_RECOVERY_THRESHOLD', DEFAULT_PROBE_RECOVERY_THRESHOLD, { min: 1, max: 100 }),
68
+ }
69
+ }
70
+
71
+ // Diagnostics follow the dev splash: enabled when the splash is enabled and the
72
+ // process is not a CI run, unless explicitly overridden.
73
+ export function resolveDiagnosticsConfig(env = process.env, { splashEnabled = true } = {}) {
74
+ const defaultEnabled = splashEnabled && env?.CI !== 'true'
75
+ const diagnosticsEnabled = parseEnabledFlag(env, 'OM_DEV_RUNTIME_DIAGNOSTICS', defaultEnabled)
76
+ return {
77
+ diagnosticsEnabled,
78
+ bannerEnabled: parseEnabledFlag(env, 'OM_DEV_RUNTIME_BANNER', diagnosticsEnabled) && diagnosticsEnabled,
79
+ }
80
+ }
81
+
82
+ export function resolveDevRuntimeConfig(env = process.env, { splashEnabled = true, publicPort = null } = {}) {
83
+ return {
84
+ mode: resolveDevRuntimeMode(env),
85
+ upstreamPort: resolveUpstreamPort(env, publicPort),
86
+ probe: resolveProbeConfig(env),
87
+ ...resolveDiagnosticsConfig(env, { splashEnabled }),
88
+ }
89
+ }