@open-mercato/cli 0.9.0 → 0.9.1-develop.7462.1.94c09f158f
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.
- package/.turbo/turbo-build.log +3 -1
- package/dist/agentic/guides/customers-calendar.md +57 -0
- package/dist/agentic/guides/extensions.md +2 -0
- package/dist/agentic/guides/module-facts.json +671 -157
- package/dist/agentic/guides/module-facts.v2.json +671 -157
- package/dist/agentic/guides/modules/agent_orchestrator/index.md +1 -1
- package/dist/agentic/guides/modules/ai_assistant/index.md +1 -1
- package/dist/agentic/guides/modules/api_docs/index.md +1 -1
- package/dist/agentic/guides/modules/api_keys/index.md +1 -1
- package/dist/agentic/guides/modules/attachments/index.md +1 -1
- package/dist/agentic/guides/modules/audit_logs/index.md +1 -1
- package/dist/agentic/guides/modules/auth/index.md +1 -1
- package/dist/agentic/guides/modules/availability/index.md +1 -1
- package/dist/agentic/guides/modules/business_rules/index.md +1 -1
- package/dist/agentic/guides/modules/catalog/index.md +1 -1
- package/dist/agentic/guides/modules/channel_apns/index.md +1 -1
- package/dist/agentic/guides/modules/channel_discord/index.md +1 -1
- package/dist/agentic/guides/modules/channel_expo/index.md +1 -1
- package/dist/agentic/guides/modules/channel_fcm/index.md +1 -1
- package/dist/agentic/guides/modules/channel_gmail/index.md +1 -1
- package/dist/agentic/guides/modules/channel_imap/index.md +1 -1
- package/dist/agentic/guides/modules/channel_resend/index.md +1 -1
- package/dist/agentic/guides/modules/channel_ses/index.md +1 -1
- package/dist/agentic/guides/modules/checkout/index.md +1 -1
- package/dist/agentic/guides/modules/communication_channels/index.md +1 -1
- package/dist/agentic/guides/modules/configs/index.md +1 -1
- package/dist/agentic/guides/modules/content/index.md +1 -1
- package/dist/agentic/guides/modules/currencies/index.md +1 -1
- package/dist/agentic/guides/modules/customer_accounts/index.md +1 -1
- package/dist/agentic/guides/modules/customer_groups/index.md +1 -1
- package/dist/agentic/guides/modules/customers/active-extension-bindings.md +1 -1
- package/dist/agentic/guides/modules/customers/di-registrations-rich.md +5 -3
- package/dist/agentic/guides/modules/customers/exact-override-targets.md +5 -3
- package/dist/agentic/guides/modules/customers/index.md +2 -2
- package/dist/agentic/guides/modules/customers/umes-hosts.md +2 -0
- package/dist/agentic/guides/modules/dashboards/index.md +1 -1
- package/dist/agentic/guides/modules/data_sync/index.md +1 -1
- package/dist/agentic/guides/modules/design_system/index.md +1 -1
- package/dist/agentic/guides/modules/devices/index.md +1 -1
- package/dist/agentic/guides/modules/dictionaries/index.md +1 -1
- package/dist/agentic/guides/modules/directory/index.md +1 -1
- package/dist/agentic/guides/modules/documents/index.md +1 -1
- package/dist/agentic/guides/modules/entities/index.md +1 -1
- package/dist/agentic/guides/modules/eudr/index.md +1 -1
- package/dist/agentic/guides/modules/events/index.md +1 -1
- package/dist/agentic/guides/modules/feature_toggles/index.md +1 -1
- package/dist/agentic/guides/modules/forms/index.md +1 -1
- package/dist/agentic/guides/modules/gateway_stripe/index.md +1 -1
- package/dist/agentic/guides/modules/gateway_tpay/acl-features.md +12 -0
- package/dist/agentic/guides/modules/gateway_tpay/cli-commands.md +12 -0
- package/dist/agentic/guides/modules/gateway_tpay/contribution-resolutions.md +12 -0
- package/dist/agentic/guides/modules/gateway_tpay/di-registrations-rich.md +11 -0
- package/dist/agentic/guides/modules/gateway_tpay/exact-override-targets.md +17 -0
- package/dist/agentic/guides/modules/gateway_tpay/index.md +19 -0
- package/dist/agentic/guides/modules/gateway_tpay/owned-contract-module-metadata.md +11 -0
- package/dist/agentic/guides/modules/gateway_tpay/setup.md +11 -0
- package/dist/agentic/guides/modules/gateway_tpay/umes-contributions.md +12 -0
- package/dist/agentic/guides/modules/generators/index.md +1 -1
- package/dist/agentic/guides/modules/inbox_ops/index.md +1 -1
- package/dist/agentic/guides/modules/integrations/index.md +1 -1
- package/dist/agentic/guides/modules/messages/index.md +1 -1
- package/dist/agentic/guides/modules/notifications/index.md +1 -1
- package/dist/agentic/guides/modules/onboarding/index.md +1 -1
- package/dist/agentic/guides/modules/payment_gateways/index.md +1 -1
- package/dist/agentic/guides/modules/perspectives/index.md +1 -1
- package/dist/agentic/guides/modules/phone_calls/index.md +1 -1
- package/dist/agentic/guides/modules/planner/index.md +1 -1
- package/dist/agentic/guides/modules/portal/index.md +1 -1
- package/dist/agentic/guides/modules/progress/index.md +1 -1
- package/dist/agentic/guides/modules/push_notifications/index.md +1 -1
- package/dist/agentic/guides/modules/query_index/index.md +1 -1
- package/dist/agentic/guides/modules/record_locks/index.md +1 -1
- package/dist/agentic/guides/modules/resources/index.md +1 -1
- package/dist/agentic/guides/modules/sales/index.md +1 -1
- package/dist/agentic/guides/modules/scheduler/exact-override-targets.md +1 -1
- package/dist/agentic/guides/modules/scheduler/index.md +1 -1
- package/dist/agentic/guides/modules/scheduler/workers.md +1 -1
- package/dist/agentic/guides/modules/search/index.md +1 -1
- package/dist/agentic/guides/modules/security/index.md +1 -1
- package/dist/agentic/guides/modules/seeds/index.md +1 -1
- package/dist/agentic/guides/modules/shipping_carriers/index.md +1 -1
- package/dist/agentic/guides/modules/sso/index.md +1 -1
- package/dist/agentic/guides/modules/staff/index.md +1 -1
- package/dist/agentic/guides/modules/storage_s3/index.md +1 -1
- package/dist/agentic/guides/modules/sync_akeneo/index.md +1 -1
- package/dist/agentic/guides/modules/sync_excel/index.md +1 -1
- package/dist/agentic/guides/modules/system_status_overlays/index.md +1 -1
- package/dist/agentic/guides/modules/telemetry/index.md +1 -1
- package/dist/agentic/guides/modules/tillio/index.md +1 -1
- package/dist/agentic/guides/modules/translations/index.md +1 -1
- package/dist/agentic/guides/modules/warranty_claims/index.md +1 -1
- package/dist/agentic/guides/modules/webhooks/index.md +1 -1
- package/dist/agentic/guides/modules/wms/index.md +1 -1
- package/dist/agentic/guides/modules/workflows/index.md +1 -1
- package/dist/agentic/guides/reference-module-facts.json +269 -25
- package/dist/agentic/guides/reference-modules/example/active-extension-bindings.md +1 -0
- package/dist/agentic/guides/reference-modules/example/contribution-resolutions.md +7 -4
- package/dist/agentic/guides/reference-modules/example/di-registrations-rich.md +3 -2
- package/dist/agentic/guides/reference-modules/example/di-service-tokens.md +1 -1
- package/dist/agentic/guides/reference-modules/example/exact-override-targets.md +10 -6
- package/dist/agentic/guides/reference-modules/example/index.md +4 -4
- package/dist/agentic/guides/reference-modules/example/umes-contributions.md +8 -5
- package/dist/agentic/guides/upstream/BACKWARD_COMPATIBILITY.md +1 -0
- package/dist/agentic/guides/upstream/manifest.json +2 -2
- package/dist/agentic/shared/ai/harness/README.md +4 -2
- package/dist/agentic/shared/ai/harness/RELEASE.md +4 -4
- package/dist/agentic/shared/ai/harness/cases.json +292 -34
- package/dist/agentic/shared/ai/harness/cases.schema.json +4 -4
- package/dist/agentic/shared/ai/harness/design-system-inventory.json +63 -3
- package/dist/agentic/shared/ai/harness/source-link-inventory.json +316 -8
- package/dist/agentic/shared/ai/harness/validators.json +1 -1
- package/dist/agentic/shared/ai/skills/om-integration-builder/references/provider-families.md +1 -1
- package/package.json +9 -8
package/.turbo/turbo-build.log
CHANGED
|
@@ -46,6 +46,7 @@ Copied create-app/agentic/ → dist/agentic.staging/
|
|
|
46
46
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for perspectives
|
|
47
47
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for phone_calls
|
|
48
48
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for planner
|
|
49
|
+
Generated 75 module fact-sheets → dist/agentic.staging/guides/modules/
|
|
49
50
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for portal
|
|
50
51
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for progress
|
|
51
52
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for push_notifications
|
|
@@ -64,12 +65,12 @@ Copied create-app/agentic/ → dist/agentic.staging/
|
|
|
64
65
|
[module-facts] searchConfig entityId is not statically resolvable: /home/runner/work/open-mercato/open-mercato/packages/documents/src/modules/documents/search.ts:92
|
|
65
66
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for agent_orchestrator
|
|
66
67
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for record_locks
|
|
67
|
-
Generated 74 module fact-sheets → dist/agentic.staging/guides/modules/
|
|
68
68
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for security
|
|
69
69
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for sso
|
|
70
70
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for system_status_overlays
|
|
71
71
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for events
|
|
72
72
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for gateway_stripe
|
|
73
|
+
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for gateway_tpay
|
|
73
74
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for onboarding
|
|
74
75
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for scheduler
|
|
75
76
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for search
|
|
@@ -148,6 +149,7 @@ Generated 74 module fact-sheets → dist/agentic.staging/guides/modules/
|
|
|
148
149
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for system_status_overlays
|
|
149
150
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for events
|
|
150
151
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for gateway_stripe
|
|
152
|
+
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for gateway_tpay
|
|
151
153
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for onboarding
|
|
152
154
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for scheduler
|
|
153
155
|
[module-facts] module registry unavailable (registryPath not provided); API route auth omitted for search
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Customers calendar event types
|
|
2
|
+
|
|
3
|
+
Use this guide after `.ai/guides/modules/customers/index.md` when adding, removing, or modifying calendar event types. Calendar behavior belongs to Customers and app-owned contributions. Keep framework packages read-only; generic CrudForm, InjectionSpot, widget loading, and module overrides must remain independent of calendar business rules.
|
|
4
|
+
|
|
5
|
+
## Exact reference implementation
|
|
6
|
+
|
|
7
|
+
- [Customers definitions, schemas, and registry operations](../../node_modules/@open-mercato/core/src/modules/customers/calendar-event-types.ts)
|
|
8
|
+
- [Customers server catalog resolution](../../node_modules/@open-mercato/core/src/modules/customers/lib/calendar/eventTypeResolver.ts)
|
|
9
|
+
- [Customers editor](../../node_modules/@open-mercato/core/src/modules/customers/components/calendar/CalendarEventEditor.tsx)
|
|
10
|
+
- [Example adds Visit and optionally patches Meeting](../../src/modules/example/widgets/injection/calendar-visit/widget.ts)
|
|
11
|
+
- [Example injection bindings](../../src/modules/example/widgets/injection-table.ts)
|
|
12
|
+
- [Example Visit lifecycle widget](../../src/modules/example/widgets/injection/visit-availability/widget.ts)
|
|
13
|
+
- [Example optional availability checks](../../src/modules/example/lib/visitAvailability.ts)
|
|
14
|
+
- [Example Visit panel and dependency warnings](../../src/modules/example/components/VisitPanel.tsx)
|
|
15
|
+
- [Example server validation](../../src/modules/example/commands/interceptors.ts)
|
|
16
|
+
- [Example server availability guard](../../src/modules/example/lib/visitAvailabilityGuard.ts)
|
|
17
|
+
- [Example server DI registration](../../src/modules/example/di.ts)
|
|
18
|
+
|
|
19
|
+
The shipped example is disabled by default. Read and adapt its connected files into your own `src/modules/<id>/`; enable your own module in `src/modules.ts`. Do not modify the canonical teaching example merely to customize an app.
|
|
20
|
+
|
|
21
|
+
## Add a type
|
|
22
|
+
|
|
23
|
+
Export an ordinary injection widget typed as `CalendarEventTypeWidget` from `@open-mercato/core/modules/customers/calendar-event-types`. Include stable `metadata.id`, `Widget: () => null`, and `eventTypes: [definition]`. Bind the widget to `calendar:customers.event-types` in your module's `widgets/injection-table.ts`. Use the example's injection-table shape; retain enabled-module and feature gates.
|
|
24
|
+
|
|
25
|
+
A definition has a stable lowercase `key`, fallback `label`, translated `labelKey`, optional `icon`, `color`, `panelKey`, and a complete `behavior`. Set `schemaVersion: 1`, a supported `baseKind`, `selectable`, `order`, every `fields` switch, and `customFieldsetIds`. The `baseKind` selects the existing Customers persistence behavior; a new type does not require a duplicate customer event entity. Visit uses `baseKind: 'event'` and `panelKey: 'example.visit'`. Keep validation, custom fields, and panel selection inside the owning business module.
|
|
26
|
+
|
|
27
|
+
An empty `customFieldsetIds` preserves unrestricted legacy custom fields; it does not hide every field. Supply a non-empty list to restrict the editor to those fieldsets. Preserve shipped field behavior when adapting a definition, including `endTime: true` for Call and Task.
|
|
28
|
+
|
|
29
|
+
## Remove, replace, or patch a type
|
|
30
|
+
|
|
31
|
+
In your own app module, use `eventTypeOverrides: { note: null }` to remove a type from the selectable catalog. This is an app-owned customization; it is not part of the shipped Example declaration. A non-null override supplies a complete replacement definition accepted by the Customers schema. For a targeted modification, add an `eventTypePatches` entry with `targetEventTypeKey`, then explicit operations such as `replaceLabelKey`, `replaceFields`, `replaceSelectable`, `replaceCustomFieldsetIds`, `appendCustomFieldsetIds`, or `deleteCustomFieldsetIds`. The example changes Meeting's translated label with `replaceLabelKey`. The shipped example preserves all six baseline types with either flag value. Only its Meeting patch is an opt-in demonstration controlled by `OM_EXAMPLE_CALENDAR_DEMO_OVERRIDES`; the default is false. Visit sets `adminConfigurable: false`, so its extension behavior remains code-owned.
|
|
32
|
+
|
|
33
|
+
Removing a type is a catalog tombstone, not deletion of existing activities or tasks. Preserve historical fallback when opening records whose type is tombstoned, unknown, or contributed by a disabled module. Test existing records as well as the create selector, and do not silently migrate their stable type keys.
|
|
34
|
+
|
|
35
|
+
For server-owned programmatic contributions, resolve Customers' `calendarEventTypeRegistry` through DI. Its `upsert`, `replace`, `patch`, `remove`, and `removeSource` operations carry provenance; follow the exact installed signatures and keep source cleanup deterministic. The example's `di.ts` softly resolves this service and registers the same widget definitions and patches for API and worker execution. Follow that module registrar when adapting the client declaration: registering a browser widget alone does not register server contributions. Keep dependency resolution optional and do not add a global calendar dispatcher or calendar properties to shared override or widget metadata contracts.
|
|
36
|
+
|
|
37
|
+
## Optional staff and resources
|
|
38
|
+
|
|
39
|
+
Staff and resources are optional integrations. Do not statically import their entities or implementations into an app module that must work without those packages. Resolve optional services or query by scoped entity IDs only after confirming the module is enabled. If staff or resources are unavailable, show a translated warning, skip only their unavailable checks, and keep the Visit panel and ordinary Customers calendar operational. An installed and enabled dependency still enforces its normal authorization, scope, and availability validation. A denied or failed check must not be treated as a missing module.
|
|
40
|
+
|
|
41
|
+
Visit reports each selected staff member or resource by display name and distinguishes missing schedules or intervals outside working hours from an existing booking (`example.calendar.visitAvailability.booked`). Booking checks include overlapping Customers interactions of every event type, including recurrence occurrences, in the authorized tenant and organization. Use half-open intervals: touching boundaries do not overlap. Canceled and deleted interactions do not reserve subjects. On edit, pass the validated current `excludeInteractionId` to preview; the command guard excludes that same existing interaction automatically, while retaining other collisions. Preview and rejected writes return the blocked subject names and reason keys without disclosing other event titles or IDs. Booking reads and recurrence expansion are bounded; failed, incomplete, or unsupported booking checks fail closed rather than reporting an available subject. These guards protect Visit scheduling against bookings from any type; they do not impose Visit rules on other event-type writes.
|
|
42
|
+
|
|
43
|
+
The availability widget must gate its handlers to Visit itself; UI visibility alone does not gate mutation hooks. Keep matching server validation in API/command interceptors so direct calls enforce the same rules. Preserve tenant/organization scope, optimistic locking, guarded mutations, and the read/save/reload round trip.
|
|
44
|
+
|
|
45
|
+
## Event timezones and recurring availability
|
|
46
|
+
|
|
47
|
+
Every calendar event editor exposes an IANA timezone selector. Keep its `timezone` in form values when wrapping the standard panel; use the Customers wall-time helpers to convert its local date/time into the `scheduledAt` instant. The API accepts optional nullable `timezone`, validates explicit IANA names, and returns it on reads. Persist the chosen zone and restore it on edit. Legacy records with a null zone retain browser-local interpretation. Weekly event recurrence with an explicit zone preserves the event-local wall time across daylight-saving changes; reject nonexistent local times rather than shifting them silently. When a local time occurs twice during a fall-back transition, conversion chooses the earlier instant.
|
|
48
|
+
|
|
49
|
+
The Visit example wraps the original Customers panel, preserving its datepicker, time selects, recipient/resource pickers, and two-column layout. Add availability feedback around `Original`; do not duplicate the editor fields or import its private components. The preview must convert values in the selected event timezone, independently of the browser timezone, and match the server's persisted interval.
|
|
50
|
+
|
|
51
|
+
Planner timezone interpretation is explicit: Visit calls `plannerAvailabilityService.getMergedAvailabilityWindows` with `respectTimezone: true` and `weeklyScheduleTemplate: true`. The second option applies only to unbounded weekly schedules. Staff/resource weekly editors store the next matching weekday as `DTSTART`; treat that date as a weekday/time anchor rather than an effective start date. For example, a Tuesday 09:00–13:00 Warsaw template anchored on October 6 also covers September 29, 09:15–12:00 Warsaw. Preserve one-off date overrides and count-bounded recurrence start dates. Existing callers that omit these options retain their previous UTC/DTSTART semantics.
|
|
52
|
+
|
|
53
|
+
Availability reads translate an auth `userId` to the active staff member `id` before querying planner `subjectType: 'member'`; these IDs are different. Scope checks to the interaction or parent customer's authorized organization, not merely the selected UI organization. A title-only edit need not revalidate its saved assignments; changing the interval or subjects must run the fresh check.
|
|
54
|
+
|
|
55
|
+
## Validation
|
|
56
|
+
|
|
57
|
+
Run `yarn generate` after adding injection files, then the smallest relevant typecheck and tests. Cover add/replace/patch/remove order, translated labels, custom fieldsets, historical fallback, Visit-only hooks, direct API validation, disabled staff, disabled resources, both absent, and enabled-but-denied dependencies, staff/resource weekly and one-off availability, selected-zone round trips, daylight-saving recurrence, and title-only edits after schedule removal. The harness regression is `OMH-238`; shared components and installed package files are outside the app's writable scope.
|
|
@@ -22,6 +22,8 @@ Add every other match too: `backend-ui` + `om-backend-ui-design` when authoring,
|
|
|
22
22
|
|
|
23
23
|
## Mechanism Selector
|
|
24
24
|
|
|
25
|
+
For Customers calendar event types, follow the [Customers calendar guide](customers-calendar.md) and its exact app example links. It owns add/remove/patch behavior and optional staff/resources coupling.
|
|
26
|
+
|
|
25
27
|
| Goal | Mechanism | App module file |
|
|
26
28
|
|---|---|---|
|
|
27
29
|
| Add computed/read data | Response enricher | `data/enrichers.ts` |
|