@open-mercato/cli 0.6.8-develop.7065.1.b7b351a126 → 0.6.8-develop.7067.1.82e9867ea1

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 (77) hide show
  1. package/dist/agentic/guides/module-facts.json +201 -131
  2. package/dist/agentic/guides/module-facts.v2.json +201 -131
  3. package/dist/agentic/guides/modules/ai_assistant/index.md +1 -1
  4. package/dist/agentic/guides/modules/api_docs/index.md +1 -1
  5. package/dist/agentic/guides/modules/api_keys/index.md +1 -1
  6. package/dist/agentic/guides/modules/attachments/index.md +1 -1
  7. package/dist/agentic/guides/modules/audit_logs/index.md +1 -1
  8. package/dist/agentic/guides/modules/auth/index.md +1 -1
  9. package/dist/agentic/guides/modules/business_rules/index.md +1 -1
  10. package/dist/agentic/guides/modules/catalog/index.md +1 -1
  11. package/dist/agentic/guides/modules/channel_apns/index.md +1 -1
  12. package/dist/agentic/guides/modules/channel_expo/index.md +1 -1
  13. package/dist/agentic/guides/modules/channel_fcm/index.md +1 -1
  14. package/dist/agentic/guides/modules/channel_gmail/index.md +1 -1
  15. package/dist/agentic/guides/modules/channel_imap/index.md +1 -1
  16. package/dist/agentic/guides/modules/checkout/index.md +1 -1
  17. package/dist/agentic/guides/modules/communication_channels/index.md +1 -1
  18. package/dist/agentic/guides/modules/configs/index.md +1 -1
  19. package/dist/agentic/guides/modules/content/index.md +1 -1
  20. package/dist/agentic/guides/modules/currencies/index.md +1 -1
  21. package/dist/agentic/guides/modules/customer_accounts/index.md +1 -1
  22. package/dist/agentic/guides/modules/customers/index.md +1 -1
  23. package/dist/agentic/guides/modules/dashboards/index.md +1 -1
  24. package/dist/agentic/guides/modules/data_sync/index.md +1 -1
  25. package/dist/agentic/guides/modules/design_system/index.md +1 -1
  26. package/dist/agentic/guides/modules/devices/index.md +1 -1
  27. package/dist/agentic/guides/modules/dictionaries/index.md +1 -1
  28. package/dist/agentic/guides/modules/directory/index.md +1 -1
  29. package/dist/agentic/guides/modules/documents/index.md +1 -1
  30. package/dist/agentic/guides/modules/entities/index.md +1 -1
  31. package/dist/agentic/guides/modules/eudr/index.md +1 -1
  32. package/dist/agentic/guides/modules/events/index.md +1 -1
  33. package/dist/agentic/guides/modules/feature_toggles/index.md +1 -1
  34. package/dist/agentic/guides/modules/gateway_stripe/exact-override-targets.md +1 -1
  35. package/dist/agentic/guides/modules/gateway_stripe/index.md +1 -1
  36. package/dist/agentic/guides/modules/gateway_stripe/workers.md +1 -1
  37. package/dist/agentic/guides/modules/generators/index.md +1 -1
  38. package/dist/agentic/guides/modules/inbox_ops/index.md +1 -1
  39. package/dist/agentic/guides/modules/integrations/index.md +1 -1
  40. package/dist/agentic/guides/modules/messages/index.md +1 -1
  41. package/dist/agentic/guides/modules/notifications/index.md +1 -1
  42. package/dist/agentic/guides/modules/onboarding/index.md +1 -1
  43. package/dist/agentic/guides/modules/payment_gateways/index.md +1 -1
  44. package/dist/agentic/guides/modules/perspectives/index.md +1 -1
  45. package/dist/agentic/guides/modules/planner/index.md +1 -1
  46. package/dist/agentic/guides/modules/portal/index.md +1 -1
  47. package/dist/agentic/guides/modules/progress/index.md +1 -1
  48. package/dist/agentic/guides/modules/push_notifications/index.md +1 -1
  49. package/dist/agentic/guides/modules/query_index/index.md +1 -1
  50. package/dist/agentic/guides/modules/record_locks/index.md +1 -1
  51. package/dist/agentic/guides/modules/resources/index.md +1 -1
  52. package/dist/agentic/guides/modules/sales/index.md +1 -1
  53. package/dist/agentic/guides/modules/scheduler/cli-commands.md +1 -0
  54. package/dist/agentic/guides/modules/scheduler/exact-override-targets.md +3 -1
  55. package/dist/agentic/guides/modules/scheduler/index.md +2 -2
  56. package/dist/agentic/guides/modules/scheduler/workers.md +2 -1
  57. package/dist/agentic/guides/modules/search/index.md +1 -1
  58. package/dist/agentic/guides/modules/security/index.md +1 -1
  59. package/dist/agentic/guides/modules/shipping_carriers/index.md +1 -1
  60. package/dist/agentic/guides/modules/sso/index.md +1 -1
  61. package/dist/agentic/guides/modules/staff/index.md +1 -1
  62. package/dist/agentic/guides/modules/storage_s3/index.md +1 -1
  63. package/dist/agentic/guides/modules/sync_akeneo/index.md +1 -1
  64. package/dist/agentic/guides/modules/sync_excel/index.md +1 -1
  65. package/dist/agentic/guides/modules/system_status_overlays/index.md +1 -1
  66. package/dist/agentic/guides/modules/translations/index.md +1 -1
  67. package/dist/agentic/guides/modules/warranty_claims/index.md +1 -1
  68. package/dist/agentic/guides/modules/webhooks/index.md +1 -1
  69. package/dist/agentic/guides/modules/wms/index.md +1 -1
  70. package/dist/agentic/guides/modules/workflows/index.md +1 -1
  71. package/dist/agentic/guides/reference-module-facts.json +1 -1
  72. package/dist/agentic/guides/upstream/manifest.json +1 -1
  73. package/dist/lib/generators/module-registry.js +9 -0
  74. package/dist/lib/generators/module-registry.js.map +2 -2
  75. package/package.json +6 -6
  76. package/src/lib/generators/__tests__/structural-contracts.test.ts +4 -0
  77. package/src/lib/generators/module-registry.ts +13 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-mercato/cli",
3
- "version": "0.6.8-develop.7065.1.b7b351a126",
3
+ "version": "0.6.8-develop.7067.1.82e9867ea1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -60,9 +60,9 @@
60
60
  "@mikro-orm/decorators": "^7.1.8",
61
61
  "@mikro-orm/migrations": "^7.1.8",
62
62
  "@mikro-orm/postgresql": "^7.1.8",
63
- "@open-mercato/queue": "0.6.8-develop.7065.1.b7b351a126",
64
- "@open-mercato/shared": "0.6.8-develop.7065.1.b7b351a126",
65
- "@open-mercato/telemetry": "0.6.8-develop.7065.1.b7b351a126",
63
+ "@open-mercato/queue": "0.6.8-develop.7067.1.82e9867ea1",
64
+ "@open-mercato/shared": "0.6.8-develop.7067.1.82e9867ea1",
65
+ "@open-mercato/telemetry": "0.6.8-develop.7067.1.82e9867ea1",
66
66
  "cross-spawn": "^7.0.6",
67
67
  "pg": "8.22.0",
68
68
  "semver": "^7.8.5",
@@ -73,10 +73,10 @@
73
73
  "typescript-js": "npm:typescript@6.0.3"
74
74
  },
75
75
  "peerDependencies": {
76
- "@open-mercato/shared": "0.6.8-develop.7065.1.b7b351a126"
76
+ "@open-mercato/shared": "0.6.8-develop.7067.1.82e9867ea1"
77
77
  },
78
78
  "devDependencies": {
79
- "@open-mercato/shared": "0.6.8-develop.7065.1.b7b351a126",
79
+ "@open-mercato/shared": "0.6.8-develop.7067.1.82e9867ea1",
80
80
  "@types/jest": "^30.0.0",
81
81
  "jest": "^30.4.2",
82
82
  "ts-jest": "^29.4.12"
@@ -186,6 +186,7 @@ function scaffoldFixture(): ModuleEntry[] {
186
186
  touchFile(pkgModulePath('orders', 'subscribers', 'on-created.ts'), "export const metadata = { event: 'orders.order.created', persistent: true }\nexport default async function handler() {}\n")
187
187
  touchFile(pkgModulePath('orders', 'subscribers', 'on-payment.ts'), "export const metadata = { event: 'payments.payment.completed', persistent: true }\nexport default async function handler() {}\n")
188
188
  touchFile(pkgModulePath('orders', 'workers', 'sync-job.ts'), "export const metadata = { queue: 'orders.sync', concurrency: 2 }\nexport default async function handler() {}\n")
189
+ touchFile(pkgModulePath('orders', 'workers', 'safe-job.ts'), "export const metadata = { queue: 'orders.safe', schedulerSafe: true }\nexport default async function handler() {}\n")
189
190
  touchFile(pkgModulePath('orders', 'widgets', 'dashboard', 'revenue', 'widget.tsx'), 'export default function RevenueWidget() { return null }\n')
190
191
  touchFile(pkgModulePath('orders', 'widgets', 'injection', 'sidebar', 'widget.tsx'), 'export default function SidebarWidget() { return null }\n')
191
192
  touchFile(pkgModulePath('orders', 'widgets', 'injection-table.ts'), `export const injectionTable = {\n 'crud-form:orders:sales_order:fields': [{ widgetId: 'orders.sidebar', kind: 'section', priority: 50 }],\n}\nexport default injectionTable\n`)
@@ -1265,6 +1266,9 @@ describe('modules.bootstrap.generated.ts', () => {
1265
1266
  expect(content).toContain('orders.order.created')
1266
1267
  expect(content).toContain('setup:')
1267
1268
  expect(content).toContain('features:')
1269
+ // worker metadata flags must survive into the registry the server registers
1270
+ expect(content).toContain("queue: \"orders.safe\"")
1271
+ expect(content).toContain('schedulerSafe: true')
1268
1272
 
1269
1273
  expect(content).not.toContain('frontendRoutes:')
1270
1274
  expect(content).not.toContain('backendRoutes:')
@@ -246,6 +246,8 @@ type SerializableWorkerMetadata = {
246
246
  id?: string
247
247
  queue?: string
248
248
  concurrency?: number
249
+ schedulerSafe?: boolean
250
+ schedulerRequiredFeatures?: string[]
249
251
  lockDuration?: number
250
252
  maxStalledCount?: number
251
253
  /**
@@ -1913,6 +1915,13 @@ function normalizeWorkerMetadata(raw: unknown): SerializableWorkerMetadata | nul
1913
1915
  if (typeof source.lockDuration === 'number') normalized.lockDuration = source.lockDuration
1914
1916
  if (typeof source.maxStalledCount === 'number') normalized.maxStalledCount = source.maxStalledCount
1915
1917
  if (typeof source.onJobAbandoned === 'function') normalized.hasJobAbandonedHook = true
1918
+ if (source.schedulerSafe === true) normalized.schedulerSafe = true
1919
+ if (Array.isArray(source.schedulerRequiredFeatures)) {
1920
+ const features = source.schedulerRequiredFeatures.filter(
1921
+ (feature): feature is string => typeof feature === 'string' && feature.length > 0,
1922
+ )
1923
+ if (features.length > 0) normalized.schedulerRequiredFeatures = features
1924
+ }
1916
1925
  return Object.keys(normalized).length > 0 ? normalized : null
1917
1926
  }
1918
1927
 
@@ -3206,6 +3215,10 @@ function processWorkersAst(discovered: DiscoveredWorker[]): WriterFunction[] {
3206
3215
  { name: 'id', value: workerId },
3207
3216
  { name: 'queue', value: metadata.queue },
3208
3217
  { name: 'concurrency', value: metadata.concurrency ?? 1 },
3218
+ ...(metadata.schedulerSafe === true ? [{ name: 'schedulerSafe', value: true }] : []),
3219
+ ...(metadata.schedulerRequiredFeatures
3220
+ ? [{ name: 'schedulerRequiredFeatures', value: arrayLiteral(metadata.schedulerRequiredFeatures, writeValue) }]
3221
+ : []),
3209
3222
  ...(metadata.lockDuration === undefined ? [] : [{ name: 'lockDuration', value: metadata.lockDuration }]),
3210
3223
  ...(metadata.maxStalledCount === undefined ? [] : [{ name: 'maxStalledCount', value: metadata.maxStalledCount }]),
3211
3224
  ...(metadata.hasJobAbandonedHook