@open-mercato/cli 0.6.8-develop.6917.1.af45bc96e2 → 0.6.8-develop.6924.1.a8d208fcdc

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 (64) hide show
  1. package/dist/agentic/guides/module-facts.json +112 -112
  2. package/dist/agentic/guides/modules/ai_assistant.md +1 -1
  3. package/dist/agentic/guides/modules/api_docs.md +1 -1
  4. package/dist/agentic/guides/modules/api_keys.md +1 -1
  5. package/dist/agentic/guides/modules/attachments.md +1 -1
  6. package/dist/agentic/guides/modules/audit_logs.md +1 -1
  7. package/dist/agentic/guides/modules/auth.md +1 -1
  8. package/dist/agentic/guides/modules/business_rules.md +1 -1
  9. package/dist/agentic/guides/modules/catalog.md +1 -1
  10. package/dist/agentic/guides/modules/channel_gmail.md +1 -1
  11. package/dist/agentic/guides/modules/channel_imap.md +1 -1
  12. package/dist/agentic/guides/modules/checkout.md +1 -1
  13. package/dist/agentic/guides/modules/communication_channels.md +1 -1
  14. package/dist/agentic/guides/modules/configs.md +1 -1
  15. package/dist/agentic/guides/modules/content.md +1 -1
  16. package/dist/agentic/guides/modules/currencies.md +1 -1
  17. package/dist/agentic/guides/modules/customer_accounts.md +1 -1
  18. package/dist/agentic/guides/modules/customers.md +1 -1
  19. package/dist/agentic/guides/modules/dashboards.md +1 -1
  20. package/dist/agentic/guides/modules/data_sync.md +1 -1
  21. package/dist/agentic/guides/modules/design_system.md +1 -1
  22. package/dist/agentic/guides/modules/dictionaries.md +1 -1
  23. package/dist/agentic/guides/modules/directory.md +1 -1
  24. package/dist/agentic/guides/modules/entities.md +1 -1
  25. package/dist/agentic/guides/modules/events.md +3 -3
  26. package/dist/agentic/guides/modules/feature_toggles.md +1 -1
  27. package/dist/agentic/guides/modules/gateway_stripe.md +1 -1
  28. package/dist/agentic/guides/modules/generators.md +1 -1
  29. package/dist/agentic/guides/modules/inbox_ops.md +1 -1
  30. package/dist/agentic/guides/modules/integrations.md +1 -1
  31. package/dist/agentic/guides/modules/messages.md +1 -1
  32. package/dist/agentic/guides/modules/notifications.md +1 -1
  33. package/dist/agentic/guides/modules/onboarding.md +1 -1
  34. package/dist/agentic/guides/modules/payment_gateways.md +1 -1
  35. package/dist/agentic/guides/modules/perspectives.md +1 -1
  36. package/dist/agentic/guides/modules/planner.md +1 -1
  37. package/dist/agentic/guides/modules/portal.md +1 -1
  38. package/dist/agentic/guides/modules/progress.md +1 -1
  39. package/dist/agentic/guides/modules/query_index.md +1 -1
  40. package/dist/agentic/guides/modules/record_locks.md +1 -1
  41. package/dist/agentic/guides/modules/resources.md +1 -1
  42. package/dist/agentic/guides/modules/sales.md +1 -1
  43. package/dist/agentic/guides/modules/scheduler.md +1 -1
  44. package/dist/agentic/guides/modules/search.md +1 -1
  45. package/dist/agentic/guides/modules/security.md +1 -1
  46. package/dist/agentic/guides/modules/shipping_carriers.md +1 -1
  47. package/dist/agentic/guides/modules/sso.md +1 -1
  48. package/dist/agentic/guides/modules/staff.md +1 -1
  49. package/dist/agentic/guides/modules/storage_s3.md +1 -1
  50. package/dist/agentic/guides/modules/sync_akeneo.md +1 -1
  51. package/dist/agentic/guides/modules/sync_excel.md +1 -1
  52. package/dist/agentic/guides/modules/system_status_overlays.md +1 -1
  53. package/dist/agentic/guides/modules/translations.md +1 -1
  54. package/dist/agentic/guides/modules/webhooks.md +1 -1
  55. package/dist/agentic/guides/modules/wms.md +1 -1
  56. package/dist/agentic/guides/modules/workflows.md +1 -1
  57. package/dist/agentic/guides/upstream/manifest.json +1 -1
  58. package/dist/agentic/shared/ai/review-checklist.md +1 -1
  59. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/module-surfaces.md +1 -1
  60. package/dist/lib/events-single-delivery.js +1 -1
  61. package/dist/lib/events-single-delivery.js.map +2 -2
  62. package/package.json +6 -6
  63. package/src/lib/__tests__/events-single-delivery.test.ts +17 -1
  64. package/src/lib/events-single-delivery.ts +14 -4
@@ -1,5 +1,5 @@
1
1
  # ai_assistant — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/ai-assistant 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/ai-assistant 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/ai-assistant/src/modules/ai_assistant](../../../node_modules/@open-mercato/ai-assistant/src/modules/ai_assistant)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # api_docs — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/api_docs](../../../node_modules/@open-mercato/core/src/modules/api_docs)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # api_keys — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/api_keys](../../../node_modules/@open-mercato/core/src/modules/api_keys)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # attachments — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/attachments](../../../node_modules/@open-mercato/core/src/modules/attachments)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # audit_logs — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/audit_logs](../../../node_modules/@open-mercato/core/src/modules/audit_logs)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # auth — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/auth](../../../node_modules/@open-mercato/core/src/modules/auth)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # business_rules — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/business_rules](../../../node_modules/@open-mercato/core/src/modules/business_rules)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # catalog — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/catalog](../../../node_modules/@open-mercato/core/src/modules/catalog)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # channel_gmail — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/channel-gmail 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/channel-gmail 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/channel-gmail/src/modules/channel_gmail](../../../node_modules/@open-mercato/channel-gmail/src/modules/channel_gmail)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # channel_imap — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/channel-imap 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/channel-imap 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/channel-imap/src/modules/channel_imap](../../../node_modules/@open-mercato/channel-imap/src/modules/channel_imap)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # checkout — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/checkout 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/checkout 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/checkout/src/modules/checkout](../../../node_modules/@open-mercato/checkout/src/modules/checkout)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # communication_channels — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/communication_channels](../../../node_modules/@open-mercato/core/src/modules/communication_channels)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # configs — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/configs](../../../node_modules/@open-mercato/core/src/modules/configs)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # content — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/content 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/content 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/content/src/modules/content](../../../node_modules/@open-mercato/content/src/modules/content)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # currencies — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/currencies](../../../node_modules/@open-mercato/core/src/modules/currencies)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # customer_accounts — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/customer_accounts](../../../node_modules/@open-mercato/core/src/modules/customer_accounts)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # customers — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/customers](../../../node_modules/@open-mercato/core/src/modules/customers)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # dashboards — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/dashboards](../../../node_modules/@open-mercato/core/src/modules/dashboards)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # data_sync — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/data_sync](../../../node_modules/@open-mercato/core/src/modules/data_sync)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # design_system — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/design_system](../../../node_modules/@open-mercato/core/src/modules/design_system)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # dictionaries — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/dictionaries](../../../node_modules/@open-mercato/core/src/modules/dictionaries)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # directory — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/directory](../../../node_modules/@open-mercato/core/src/modules/directory)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # entities — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/entities](../../../node_modules/@open-mercato/core/src/modules/entities)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # events — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/events 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/events 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/events/src/modules/events](../../../node_modules/@open-mercato/events/src/modules/events)
4
4
 
5
5
  ## Entities
@@ -81,7 +81,7 @@ _none_
81
81
 
82
82
  | Domain | Path / key | Supported modes | Referenced fact | Source |
83
83
  |---|---|---|---|---|
84
- | workers | `overrides.workers["events:workers:events.worker"]` | disable-replace | ownedContracts.worker:events:workers:events.worker | [node_modules/@open-mercato/events/src/modules/events/workers/events.worker.ts:14](../../../node_modules/@open-mercato/events/src/modules/events/workers/events.worker.ts#L14) |
84
+ | workers | `overrides.workers["events:workers:events.worker"]` | disable-replace | ownedContracts.worker:events:workers:events.worker | [node_modules/@open-mercato/events/src/modules/events/workers/events.worker.ts:15](../../../node_modules/@open-mercato/events/src/modules/events/workers/events.worker.ts#L15) |
85
85
 
86
86
  ## Owned contract — module metadata
87
87
 
@@ -93,4 +93,4 @@ _none_
93
93
 
94
94
  | ID | Metadata | Source |
95
95
  |---|---|---|
96
- | events:workers:events.worker | queue=events | [node_modules/@open-mercato/events/src/modules/events/workers/events.worker.ts:14](../../../node_modules/@open-mercato/events/src/modules/events/workers/events.worker.ts#L14) |
96
+ | events:workers:events.worker | queue=events | [node_modules/@open-mercato/events/src/modules/events/workers/events.worker.ts:15](../../../node_modules/@open-mercato/events/src/modules/events/workers/events.worker.ts#L15) |
@@ -1,5 +1,5 @@
1
1
  # feature_toggles — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/feature_toggles](../../../node_modules/@open-mercato/core/src/modules/feature_toggles)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # gateway_stripe — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/gateway-stripe 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/gateway-stripe 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/gateway-stripe/src/modules/gateway_stripe](../../../node_modules/@open-mercato/gateway-stripe/src/modules/gateway_stripe)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # generators — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/shared 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/shared 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/shared/src/modules/generators](../../../node_modules/@open-mercato/shared/src/modules/generators)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # inbox_ops — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/inbox_ops](../../../node_modules/@open-mercato/core/src/modules/inbox_ops)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # integrations — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/integrations](../../../node_modules/@open-mercato/core/src/modules/integrations)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # messages — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/messages](../../../node_modules/@open-mercato/core/src/modules/messages)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # notifications — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/notifications](../../../node_modules/@open-mercato/core/src/modules/notifications)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # onboarding — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/onboarding 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/onboarding 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/onboarding/src/modules/onboarding](../../../node_modules/@open-mercato/onboarding/src/modules/onboarding)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # payment_gateways — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/payment_gateways](../../../node_modules/@open-mercato/core/src/modules/payment_gateways)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # perspectives — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/perspectives](../../../node_modules/@open-mercato/core/src/modules/perspectives)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # planner — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/planner](../../../node_modules/@open-mercato/core/src/modules/planner)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # portal — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/portal](../../../node_modules/@open-mercato/core/src/modules/portal)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # progress — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/progress](../../../node_modules/@open-mercato/core/src/modules/progress)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # query_index — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/query_index](../../../node_modules/@open-mercato/core/src/modules/query_index)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # record_locks — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/enterprise 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/enterprise 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/enterprise/src/modules/record_locks](../../../node_modules/@open-mercato/enterprise/src/modules/record_locks)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # resources — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/resources](../../../node_modules/@open-mercato/core/src/modules/resources)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # sales — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/sales](../../../node_modules/@open-mercato/core/src/modules/sales)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # scheduler — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/scheduler 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/scheduler 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/scheduler/src/modules/scheduler](../../../node_modules/@open-mercato/scheduler/src/modules/scheduler)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # search — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/search 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/search 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/search/src/modules/search](../../../node_modules/@open-mercato/search/src/modules/search)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # security — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/enterprise 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/enterprise 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/enterprise/src/modules/security](../../../node_modules/@open-mercato/enterprise/src/modules/security)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # shipping_carriers — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/shipping_carriers](../../../node_modules/@open-mercato/core/src/modules/shipping_carriers)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # sso — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/enterprise 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/enterprise 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/enterprise/src/modules/sso](../../../node_modules/@open-mercato/enterprise/src/modules/sso)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # staff — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/staff](../../../node_modules/@open-mercato/core/src/modules/staff)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # storage_s3 — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/storage-s3 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/storage-s3 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/storage-s3/src/modules/storage_s3](../../../node_modules/@open-mercato/storage-s3/src/modules/storage_s3)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # sync_akeneo — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/sync-akeneo 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/sync-akeneo 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/sync-akeneo/src/modules/sync_akeneo](../../../node_modules/@open-mercato/sync-akeneo/src/modules/sync_akeneo)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # sync_excel — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/sync_excel](../../../node_modules/@open-mercato/core/src/modules/sync_excel)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # system_status_overlays — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/enterprise 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/enterprise 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/enterprise/src/modules/system_status_overlays](../../../node_modules/@open-mercato/enterprise/src/modules/system_status_overlays)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # translations — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/translations](../../../node_modules/@open-mercato/core/src/modules/translations)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # webhooks — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/webhooks 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/webhooks 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/webhooks/src/modules/webhooks](../../../node_modules/@open-mercato/webhooks/src/modules/webhooks)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # wms — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/wms](../../../node_modules/@open-mercato/core/src/modules/wms)
4
4
 
5
5
  ## Entities
@@ -1,5 +1,5 @@
1
1
  # workflows — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.8-develop.6917.1.af45bc96e2; core 0.6.8-develop.6917.1.af45bc96e2 — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc; core 0.6.8-develop.6924.1.a8d208fcdc — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/workflows](../../../node_modules/@open-mercato/core/src/modules/workflows)
4
4
 
5
5
  ## Entities
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 1,
3
- "generator": "@open-mercato/cli@0.6.8-develop.6917.1.af45bc96e2",
3
+ "generator": "@open-mercato/cli@0.6.8-develop.6924.1.a8d208fcdc",
4
4
  "files": {
5
5
  "AGENTS.md": "b781066684c8b92ef1e1fc7114252cd29a7a546a70eea6f30ddecf4ad35f578c",
6
6
  "BACKWARD_COMPATIBILITY.md": "968ac7ab472dd58fe69cd3f9720e90d0a6f14d1faa2bf92544c5b3ee0e78f9fb"
@@ -23,7 +23,7 @@ Apply this checklist in addition to the installed `om-code-review` checklist whe
23
23
  ## Encryption, custom fields, search, and extension hosts
24
24
 
25
25
  - Sensitive fields are declared in `defaultEncryptionMaps`. Reads use `findWithDecryption`, `findOneWithDecryption`, or `findAndCountWithDecryption` with both scoped query filters and the decryption scope; responses, logs, events, exports, cache keys, and indexes do not expose ciphertext or plaintext secrets.
26
- - Equality lookup uses an explicitly approved hash-only sibling populated by `TenantDataEncryptionService`; direct queries use `lookupHashCandidates(value)` from `@open-mercato/shared/lib/encryption/aes` (or `hashForLookup(value)` only where the installed write contract requires one keyed value), never raw SHA-256 for low-entropy PII. New or changed encryption maps have isolated runtime evidence that reconciliation registered the map and the real write path stored ciphertext. `search.ts` uses a stable entity ID and safe `fieldPolicy`; searchable CRUD writes index after commit, bulk paths reindex deterministically, vector sources have `checksumSource`, token results have `formatResult`, and tests do not wait with arbitrary sleeps.
26
+ - Equality lookup uses an explicitly approved hash-only sibling populated by `TenantDataEncryptionService`; direct queries use `lookupHashCandidates(value)` from `@open-mercato/shared/lib/encryption/aes` (or `hashForLookup(value)` only where the installed write contract requires one keyed value), never raw SHA-256 for low-entropy PII. New or changed encryption maps have isolated runtime evidence that reconciliation registered the map and the real write path stored ciphertext. `search.ts` uses a stable entity ID, safe `fieldPolicy`, and `aclFeatures` naming the owning module's view feature(s) so global search can authorize reads per entity; searchable CRUD writes index after commit, bulk paths reindex deterministically, vector sources have `checksumSource`, token results have `formatResult`, and tests do not wait with arbitrary sleeps.
27
27
  - `CrudForm` uses shared helpers, `initialValues.updatedAt`, localized fields/groups/errors, `collectCustomFieldValues`/`entityIds`, explicit null clearing, and conflict surfacing. `DataTable` owns pagination/loading/empty/error/export and uses stable column/action/row-action IDs plus `extensionTableId`.
28
28
  - An intentional extensible API host declares an aligned colon-form `enrichers` entity ID. UI injection spots, widgets, interceptors, guards, enrichers, component handles, and menu entries keep stable IDs and demonstrate the complete render/read/save/reload/clear or execute/undo path they claim to support.
29
29
  - When AI behavior is requested, use the installed AI framework's discovered agent/tool surfaces rather than a bespoke model client. Tools declare non-empty feature gates, validate inputs, remove transport-only session tokens, handle expired sessions, return serializable data, and route mutations through the same scoped commands, confirmation, optimistic-lock, audit, undo, and post-commit contracts as the API/UI.
@@ -9,7 +9,7 @@ Load only the rows the brief requires.
9
9
  | ACL/setup | Declare stable resource features such as `<module>.<resources>.view`/`manage` and dependencies as the named `export const features = [...]` in `acl.ts`, followed by `export default features`; generated registry code expects both exports. Export `setup: ModuleSetupConfig = { defaultRoleFeatures, ... }` (plus default when useful) from `setup.ts`; do not rename the `features` export or export `defaultRoleFeatures` as a disconnected top-level map. Keep tenant/default/example seeds idempotent and run ACL sync. |
10
10
  | Events | `events.ts` imports `createModuleEvents` from `@open-mercato/shared/modules/events`, declares `const events = [{ id, label, category: 'crud' }] as const` (`category` is `crud`, `lifecycle`, `system`, or `custom`), then exports `createModuleEvents({ moduleId, events })`. It receives one options object, not positional module/event arguments. Use typed stable past-tense IDs before emission and idempotent subscribers; do not invent a shared `lib/events` entrypoint. |
11
11
  | Worker/progress | Load `runtime-cache-and-queues.md`; use discovered metadata, scoped/idempotent payloads, bounded concurrency/retry, command writes, and `ProgressJob`. |
12
- | Search | `search.ts` imports `SearchModuleConfig`/`SearchBuildContext`/`SearchIndexSource`/`SearchResultPresenter` from `@open-mercato/shared/modules/search` and exports `searchConfig`. Its stable colon-form entity uses the exact `entityId` key and declares `fieldPolicy: { searchable: [...], excluded: [...] }`; sensitive values remain excluded and only approved hash siblings support exact lookup. `buildSource(ctx)` returns `{ text: string[], presenter, checksumSource: { record: ctx.record, customFields: ctx.customFields } }`; `formatResult(ctx)` independently derives its presenter from `ctx.record`, and `resolveUrl(ctx)` reads the ID from `ctx.record.id`. `SearchResultPresenter` permits only `title`/`subtitle`/`icon`/`badge` and has no `metadata`; indexed structured values belong in `SearchIndexSource.fields`. CRUD uses `indexer: { entityType }`; bulk writes use the SearchIndexer reindex path. Do not invent `entityType` in `search.ts`, `ctx.presenter`, `ctx.id`, `convergenceKey`, `result`, per-field policy keys, `body`, or `href` aliases. Tests prove delete/reindex deterministic convergence without sleeps. |
12
+ | Search | `search.ts` imports `SearchModuleConfig`/`SearchBuildContext`/`SearchIndexSource`/`SearchResultPresenter` from `@open-mercato/shared/modules/search` and exports `searchConfig`. Its stable colon-form entity uses the exact `entityId` key and declares `fieldPolicy: { searchable: [...], excluded: [...] }`; sensitive values remain excluded and only approved hash siblings support exact lookup. `buildSource(ctx)` returns `{ text: string[], presenter, checksumSource: { record: ctx.record, customFields: ctx.customFields } }`; `formatResult(ctx)` independently derives its presenter from `ctx.record`, and `resolveUrl(ctx)` reads the ID from `ctx.record.id`. Every entity declares `aclFeatures` naming the owning module's view feature(s) — global search and the search AI tools fail closed, so an entity without it is invisible to every non-superadmin. `SearchResultPresenter` permits only `title`/`subtitle`/`icon`/`badge` and has no `metadata`; indexed structured values belong in `SearchIndexSource.fields`. CRUD uses `indexer: { entityType }`; bulk writes use the SearchIndexer reindex path. Do not invent `entityType` in `search.ts`, `ctx.presenter`, `ctx.id`, `convergenceKey`, `result`, per-field policy keys, `body`, or `href` aliases. Tests prove delete/reindex deterministic convergence without sleeps. |
13
13
  | Cache | Load `runtime-cache-and-queues.md`; use the DI cache, tenant/org/entity tags, and post-commit invalidation including undo/sub-resource paths. |
14
14
  | Notifications | type, renderer, subscriber/handler, ACL, client reactive behavior when needed. |
15
15
  | CLI | discovered command, scoped inputs, compiled-package test. |
@@ -9,7 +9,7 @@ function reconcileEventsSingleDelivery(env, autoSpawnWorkersMode) {
9
9
  if (workersAvailable) return { effective: true };
10
10
  return {
11
11
  effective: false,
12
- warning: `[events] ${EVENTS_SINGLE_DELIVERY_ENV} is on (default) but this process auto-spawns no events worker (AUTO_SPAWN_WORKERS=off) and ${EVENTS_EXTERNAL_WORKER_ENV} is not set. Persistent subscribers would be skipped inline with nothing to drain the queue, silently dropping notifications, queued emails, and indexing. Falling back to legacy inline dual-dispatch for safety. To keep single-delivery, run an events worker (\`mercato queue worker events\`) and set ${EVENTS_EXTERNAL_WORKER_ENV}=true, or enable AUTO_SPAWN_WORKERS.`
12
+ warning: `[events] ${EVENTS_SINGLE_DELIVERY_ENV} is on (default) but this process auto-spawns no events worker (AUTO_SPAWN_WORKERS=off) and ${EVENTS_EXTERNAL_WORKER_ENV} is not set. Persistent subscribers would be skipped inline with nothing to drain the queue, silently dropping notifications, queued emails, and indexing. Running them inline instead, on the caller's request path. Delivery stays exactly-once: the queued job is stamped so an events worker that does drain the queue skips it. To move this work off the request path, run an events worker (\`mercato queue worker events\`) and set ${EVENTS_EXTERNAL_WORKER_ENV}=true, or enable AUTO_SPAWN_WORKERS.`
13
13
  };
14
14
  }
15
15
  function applyEventsSingleDeliveryGuard(args) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/events-single-delivery.ts"],
4
- "sourcesContent": ["import { parseBooleanWithDefault } from '@open-mercato/shared/lib/boolean'\nimport type { AutoSpawnWorkersMode } from './auto-spawn-workers'\n\n// Keep these env names in sync with the runtime source of truth,\n// `@open-mercato/events/single-delivery`. The CLI cannot import the events\n// package (no dependency edge), so the reconcile logic is mirrored here for the\n// server-bootstrap guard only; the bus and worker own the runtime behavior.\nconst EVENTS_SINGLE_DELIVERY_ENV = 'OM_EVENTS_SINGLE_DELIVERY'\nconst EVENTS_EXTERNAL_WORKER_ENV = 'OM_EVENTS_EXTERNAL_WORKER'\n\ntype EnvSource = NodeJS.ProcessEnv | Record<string, string | undefined>\n\nexport type SingleDeliveryReconciliation = {\n effective: boolean\n warning?: string\n}\n\n/**\n * Server-bootstrap guard for the default-on single-delivery dispatch.\n *\n * With single-delivery on, persistent subscribers are skipped inline and ONLY\n * the events worker dispatches them. A process that runs NO events worker\n * (auto-spawn off and no acknowledged external worker) would skip those\n * subscribers with nothing to drain the queue \u2014 silently dropping notifications,\n * queued emails, and indexing. This fails safe by disabling single-delivery for\n * such a process (back to inline dual-dispatch) and returning a loud warning.\n *\n * Transient worker downtime is NOT this guard's concern: the durable queue holds\n * the job until a worker returns. Only the \"no worker at all\" config is guarded.\n */\nexport function reconcileEventsSingleDelivery(\n env: EnvSource,\n autoSpawnWorkersMode: AutoSpawnWorkersMode,\n): SingleDeliveryReconciliation {\n const requested = parseBooleanWithDefault(env[EVENTS_SINGLE_DELIVERY_ENV], true)\n if (!requested) return { effective: false }\n const externalWorker = parseBooleanWithDefault(env[EVENTS_EXTERNAL_WORKER_ENV], false)\n const workersAvailable = autoSpawnWorkersMode !== 'off' || externalWorker\n if (workersAvailable) return { effective: true }\n return {\n effective: false,\n warning:\n `[events] ${EVENTS_SINGLE_DELIVERY_ENV} is on (default) but this process auto-spawns no events worker ` +\n `(AUTO_SPAWN_WORKERS=off) and ${EVENTS_EXTERNAL_WORKER_ENV} is not set. Persistent subscribers would be ` +\n `skipped inline with nothing to drain the queue, silently dropping notifications, queued emails, and ` +\n `indexing. Falling back to legacy inline dual-dispatch for safety. To keep single-delivery, run an events ` +\n `worker (\\`mercato queue worker events\\`) and set ${EVENTS_EXTERNAL_WORKER_ENV}=true, or enable ` +\n `AUTO_SPAWN_WORKERS.`,\n }\n}\n\n/**\n * Applies {@link reconcileEventsSingleDelivery} and writes the effective value\n * into both the current process env (for the in-process app/bus) and the spawned\n * worker/child env (so a child worker reads the same value the bus does). Logs\n * the warning once when single-delivery is disabled for safety.\n */\nexport function applyEventsSingleDeliveryGuard(args: {\n processEnv: NodeJS.ProcessEnv\n runtimeEnv: NodeJS.ProcessEnv\n autoSpawnWorkersMode: AutoSpawnWorkersMode\n}): SingleDeliveryReconciliation {\n const result = reconcileEventsSingleDelivery(args.processEnv, args.autoSpawnWorkersMode)\n if (result.warning) console.error(result.warning)\n const value = result.effective ? 'true' : 'false'\n args.processEnv[EVENTS_SINGLE_DELIVERY_ENV] = value\n args.runtimeEnv[EVENTS_SINGLE_DELIVERY_ENV] = value\n return result\n}\n"],
5
- "mappings": "AAAA,SAAS,+BAA+B;AAOxC,MAAM,6BAA6B;AACnC,MAAM,6BAA6B;AAsB5B,SAAS,8BACd,KACA,sBAC8B;AAC9B,QAAM,YAAY,wBAAwB,IAAI,0BAA0B,GAAG,IAAI;AAC/E,MAAI,CAAC,UAAW,QAAO,EAAE,WAAW,MAAM;AAC1C,QAAM,iBAAiB,wBAAwB,IAAI,0BAA0B,GAAG,KAAK;AACrF,QAAM,mBAAmB,yBAAyB,SAAS;AAC3D,MAAI,iBAAkB,QAAO,EAAE,WAAW,KAAK;AAC/C,SAAO;AAAA,IACL,WAAW;AAAA,IACX,SACE,YAAY,0BAA0B,+FACN,0BAA0B,8SAGN,0BAA0B;AAAA,EAElF;AACF;AAQO,SAAS,+BAA+B,MAId;AAC/B,QAAM,SAAS,8BAA8B,KAAK,YAAY,KAAK,oBAAoB;AACvF,MAAI,OAAO,QAAS,SAAQ,MAAM,OAAO,OAAO;AAChD,QAAM,QAAQ,OAAO,YAAY,SAAS;AAC1C,OAAK,WAAW,0BAA0B,IAAI;AAC9C,OAAK,WAAW,0BAA0B,IAAI;AAC9C,SAAO;AACT;",
4
+ "sourcesContent": ["import { parseBooleanWithDefault } from '@open-mercato/shared/lib/boolean'\nimport type { AutoSpawnWorkersMode } from './auto-spawn-workers'\n\n// Keep these env names in sync with the runtime source of truth,\n// `@open-mercato/events/single-delivery`. The CLI cannot import the events\n// package (no dependency edge), so the reconcile logic is mirrored here for the\n// server-bootstrap guard only; the bus and worker own the runtime behavior.\n//\n// This guard is the ONLY place that reconciles the flag against worker\n// availability. The event bus deliberately does not: the queue is durable, so a\n// persistent emit with no worker yet is delayed rather than lost, and delivering\n// inline instead would move the work onto the caller's request path. Only this\n// bootstrap knows for a fact that the process it is launching runs no worker, so\n// only it rewrites the value - into both envs below, so the app and any spawned\n// child agree.\nconst EVENTS_SINGLE_DELIVERY_ENV = 'OM_EVENTS_SINGLE_DELIVERY'\nconst EVENTS_EXTERNAL_WORKER_ENV = 'OM_EVENTS_EXTERNAL_WORKER'\n\ntype EnvSource = NodeJS.ProcessEnv | Record<string, string | undefined>\n\nexport type SingleDeliveryReconciliation = {\n effective: boolean\n warning?: string\n}\n\n/**\n * Server-bootstrap guard for the default-on single-delivery dispatch.\n *\n * With single-delivery on, persistent subscribers are skipped inline and ONLY\n * the events worker dispatches them. A process that runs NO events worker\n * (auto-spawn off and no acknowledged external worker) would skip those\n * subscribers with nothing to drain the queue \u2014 silently dropping notifications,\n * queued emails, and indexing. This fails safe by disabling single-delivery for\n * such a process (persistent subscribers run inline instead) and returning a loud\n * warning. The bus stamps the queued job, so the inline run stays exactly-once.\n *\n * Transient worker downtime is NOT this guard's concern: the durable queue holds\n * the job until a worker returns. Only the \"no worker at all\" config is guarded.\n */\nexport function reconcileEventsSingleDelivery(\n env: EnvSource,\n autoSpawnWorkersMode: AutoSpawnWorkersMode,\n): SingleDeliveryReconciliation {\n const requested = parseBooleanWithDefault(env[EVENTS_SINGLE_DELIVERY_ENV], true)\n if (!requested) return { effective: false }\n const externalWorker = parseBooleanWithDefault(env[EVENTS_EXTERNAL_WORKER_ENV], false)\n const workersAvailable = autoSpawnWorkersMode !== 'off' || externalWorker\n if (workersAvailable) return { effective: true }\n return {\n effective: false,\n warning:\n `[events] ${EVENTS_SINGLE_DELIVERY_ENV} is on (default) but this process auto-spawns no events worker ` +\n `(AUTO_SPAWN_WORKERS=off) and ${EVENTS_EXTERNAL_WORKER_ENV} is not set. Persistent subscribers would be ` +\n `skipped inline with nothing to drain the queue, silently dropping notifications, queued emails, and ` +\n `indexing. Running them inline instead, on the caller's request path. Delivery stays exactly-once: the ` +\n `queued job is stamped so an events worker that does drain the queue skips it. To move this work off the ` +\n `request path, run an events worker (\\`mercato queue worker events\\`) and set ` +\n `${EVENTS_EXTERNAL_WORKER_ENV}=true, or enable AUTO_SPAWN_WORKERS.`,\n }\n}\n\n/**\n * Applies {@link reconcileEventsSingleDelivery} and writes the effective value\n * into both the current process env (for the in-process app/bus) and the spawned\n * worker/child env (so a child worker reads the same value the bus does). Logs\n * the warning once when single-delivery is disabled for safety.\n */\nexport function applyEventsSingleDeliveryGuard(args: {\n processEnv: NodeJS.ProcessEnv\n runtimeEnv: NodeJS.ProcessEnv\n autoSpawnWorkersMode: AutoSpawnWorkersMode\n}): SingleDeliveryReconciliation {\n const result = reconcileEventsSingleDelivery(args.processEnv, args.autoSpawnWorkersMode)\n if (result.warning) console.error(result.warning)\n const value = result.effective ? 'true' : 'false'\n args.processEnv[EVENTS_SINGLE_DELIVERY_ENV] = value\n args.runtimeEnv[EVENTS_SINGLE_DELIVERY_ENV] = value\n return result\n}\n"],
5
+ "mappings": "AAAA,SAAS,+BAA+B;AAexC,MAAM,6BAA6B;AACnC,MAAM,6BAA6B;AAuB5B,SAAS,8BACd,KACA,sBAC8B;AAC9B,QAAM,YAAY,wBAAwB,IAAI,0BAA0B,GAAG,IAAI;AAC/E,MAAI,CAAC,UAAW,QAAO,EAAE,WAAW,MAAM;AAC1C,QAAM,iBAAiB,wBAAwB,IAAI,0BAA0B,GAAG,KAAK;AACrF,QAAM,mBAAmB,yBAAyB,SAAS;AAC3D,MAAI,iBAAkB,QAAO,EAAE,WAAW,KAAK;AAC/C,SAAO;AAAA,IACL,WAAW;AAAA,IACX,SACE,YAAY,0BAA0B,+FACN,0BAA0B,+aAKvD,0BAA0B;AAAA,EACjC;AACF;AAQO,SAAS,+BAA+B,MAId;AAC/B,QAAM,SAAS,8BAA8B,KAAK,YAAY,KAAK,oBAAoB;AACvF,MAAI,OAAO,QAAS,SAAQ,MAAM,OAAO,OAAO;AAChD,QAAM,QAAQ,OAAO,YAAY,SAAS;AAC1C,OAAK,WAAW,0BAA0B,IAAI;AAC9C,OAAK,WAAW,0BAA0B,IAAI;AAC9C,SAAO;AACT;",
6
6
  "names": []
7
7
  }