@modainteract/moda-interact-shared 0.14.1 → 1.0.0

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/README.md CHANGED
@@ -17,6 +17,278 @@ Production services should use the exact package version selected by the
17
17
  corresponding Moda Interact architecture/release task rather than relying on a
18
18
  floating version.
19
19
 
20
+ ## Public entry points
21
+
22
+ This reference covers the source API at package version **0.13.1**. Prefer the
23
+ specific entry point for the contract you consume. Only paths listed in
24
+ `package.json` `exports` are public imports; a file under `src` or `dist` is not
25
+ necessarily a supported package subpath. Type-only exports require `import type`.
26
+
27
+ | Import suffix after `@modainteract/moda-interact-shared` | Use it for |
28
+ |---|---|
29
+ | (none) | Convenience re-exports of internationalization, billing, merchant communications, recovery policy and Shopify contracts only. |
30
+ | `/internationalization` | Language/country/currency/time-zone normalization, international context and ICU message catalogue validation/rendering. |
31
+ | `/billing` | Billing plan/usage contracts, provider-status normalization, subscription-reconciliation jobs, purchased-credit counters and deterministic billing identifiers. |
32
+ | `/recovery-policy` | Recovery offer modes and validation of an already-resolved effective recovery policy. Does not retrieve or decide merchant entitlements. |
33
+ | `/whatsapp` | Normalized inbound WhatsApp content/message schemas and parsers. Provider delivery statuses are in `/billing`. |
34
+ | `/merchant-communications` | Merchant communication and translation job contracts, constants and validation. |
35
+ | `/merchant-communications/node` | Node-only deterministic translation queue-job identifiers. |
36
+ | `/shopify` | Shopify commerce/recovery event schemas, parsers, event versions and shared queue contracts. |
37
+ | `/shopify/node` | Node-only hashed webhook, checkout, order, recovery and discount-sync job identifiers. |
38
+ | `/logging` | Structured logger, levels, redaction and bounded serialization, with logger/sink types. |
39
+ | `/logging/node` | Node logging bootstrap, configuration and flushing for process-owned destinations. |
40
+ | `/observability` | Lightweight active-trace and observed-span helpers using installed global providers. |
41
+ | `/observability/node` | Node OpenTelemetry initialization and lifecycle; import from process preload. |
42
+ | `/observability/bullmq` | BullMQ telemetry adapter and options. Use in Node queue/worker configuration. |
43
+ | `/observability/genai` | Conversation, agent and tool observation helpers with bounded metrics and span metadata. |
44
+ | `/testing/node` | Node-only disposable PostgreSQL/Redis test infrastructure and command helpers; not application startup or production provisioning. |
45
+ | `/commerce` | Commerce schemas, definitions, selection helpers, response validation, canonical hashing inputs and synthetic examples. |
46
+ | `/commerce/runner` | Dependency-injected Commerce turn runner and model/tool adapter types. |
47
+
48
+ The root entry does **not** re-export WhatsApp, Commerce, the runner, logging,
49
+ observability or Node helpers. Do not replace a documented subpath import with a
50
+ root import without checking its exports. `/node` entries and the BullMQ adapter
51
+ belong in server processes; keep them out of browser bundles.
52
+
53
+ The [complete export inventory](#complete-export-inventory) below includes runtime
54
+ values and TypeScript types for every public entry point. Existing logging,
55
+ observability and Shopify examples follow the Commerce guide.
56
+
57
+ ## Contract parsing and identifiers
58
+
59
+ Import the producer/consumer's matching schema, then validate untrusted input at
60
+ the boundary. A TypeScript type alone does not validate a received payload.
61
+
62
+ ```ts
63
+ import { NormalizedWhatsAppInboundMessageSchema } from
64
+ "@modainteract/moda-interact-shared/whatsapp";
65
+
66
+ // rawPayload is the normalized contract, not a raw Meta webhook body.
67
+ function acceptNormalizedMessage(rawPayload: unknown) {
68
+ const parsed = NormalizedWhatsAppInboundMessageSchema.safeParse(rawPayload);
69
+ if (!parsed.success) return { ok: false as const, issues: parsed.error.issues };
70
+ return { ok: true as const, message: parsed.data };
71
+ }
72
+ ```
73
+
74
+ Schemas expose Zod `parse` (throws on invalid input) and `safeParse` (discriminated
75
+ success/error result). Named `parse…` / `safeParse…` helpers are available only
76
+ where listed in the inventory. Producers and consumers must agree on the event
77
+ version; the existence of legacy and newer Shopify exports is not an instruction
78
+ to mix their shapes. Use the queue/job identifier helper for the particular
79
+ business operation, rather than treating all identifiers as interchangeable.
80
+
81
+ Internationalization provides normalization and message rendering, not the
82
+ application's decision about when to change a conversation language. Effective
83
+ recovery policy validation likewise does not load a merchant's current policy.
84
+
85
+ ## Commerce definitions, grants and execution
86
+
87
+ Commerce is exposed through two explicit imports:
88
+
89
+ ```ts
90
+ import {
91
+ CommerceToolDefinitionSchema,
92
+ CommerceManifestSchema,
93
+ CommerceConversationGrantSchema,
94
+ selectCapabilities,
95
+ deduplicateTools,
96
+ } from "@modainteract/moda-interact-shared/commerce";
97
+ import { runCommerceTurn, type RunnerTool } from
98
+ "@modainteract/moda-interact-shared/commerce/runner";
99
+ ```
100
+
101
+ ### Which structure goes where
102
+
103
+ | Structure / API | Meaning and owner |
104
+ |---|---|
105
+ | `CommerceToolDraftDefinitionSchema` | Allows structurally bounded incomplete Tool-authoring data. Passing it does not make a Tool draft publishable. |
106
+ | `CommerceToolDefinitionSchema` | Full Tool name, version, description, input schema, execution definition and response template. Stored/executed by Commerce. |
107
+ | `validateDefinitionForPublication` | Uses a supplied `CommerceDefinitionCompiler` to check the full definition, mapped arguments and response-template paths. Commerce supplies schema-backed compilation. |
108
+ | `ToolDescriptorSchema`, `definitionToMcpDescriptor` | Full versioned Tool descriptor versus the MCP-facing name/description/inputSchema projection. The server-only execution definition is not exposed as model instructions. |
109
+ | `CommerceManifestSchema` | Resolved immutable release contract. Each selected Capability identifies one Feature and one exact Tool descriptor; `featureBehaviours` contains one behaviour prompt for each represented Feature. Commerce provides the manifest; callers validate it. |
110
+ | `GrantedToolSchema`, `GrantedToolsSchema` | Pinned Tool identity, exact Tool revision, name/version and sorted originating Capability keys selected for a conversation. One Tool reused by several Capabilities is emitted once with all Capability provenance. |
111
+ | `CommerceConversationGrantSchema` | Persisted conversation permission snapshot. Background stores the resolved release, selected Capability keys and granted Tools and reuses them on later turns. Empty Capability/Tool selections are valid. |
112
+ | `CommerceTurnIdentitySchema`, `CommerceAssertionSchema` | Turn identity and resolve/execute assertion shapes. These do not sign or verify JWT signatures; transport/authentication belongs to the services. |
113
+ | `selectCapabilities` | Pure selection over ordinary Feature Capabilities plus caller-supplied Feature eligibility facts. There is no BASE/RECOVERY_POLICY Capability kind or mandatory `conversation_core`. |
114
+ | `deduplicateTools` | Builds the granted-Tool union from one Tool descriptor per selected Capability while retaining deterministic Capability provenance. |
115
+ | `manifestMatchesGrant`, `currentlyGrantedTools` | Compare pinned selection and current availability. Do not replace signature, tenant, lease or persistence checks. |
116
+ | `CommerceToolInputs`, `CommerceToolOutputs` | Named supported operation contracts; custom authored inputs still use the validated Tool definition's schema. |
117
+ | `CommerceBasketSchema`, `CommerceProductSchema`, `CommerceOfferSchema`, `CommerceEvidenceSchema`, `CommerceAlternativeSchema` | Bounded commerce facts/evidence exchanged between services. Parsing does not prove external facts are true or current. |
118
+ | `CommerceToolResultSchema`, `commerceToolResultSchema` | Standard result envelope; the factory accepts a specific data schema. |
119
+
120
+ The direct release contract is Feature/Capability/Tool based. A selected Capability
121
+ contains exactly one `featureId` and one exact `toolDescriptor`; Feature behaviour
122
+ is carried separately and exactly once for each represented Feature. For example:
123
+
124
+ ```ts
125
+ const manifest = CommerceManifestSchema.parse({
126
+ contractVersion: "commerce.v1",
127
+ releaseId: "release_123",
128
+ runnerCompatibility: "^1.0.0",
129
+ capabilities: [
130
+ {
131
+ capabilityId: "capability_product_read",
132
+ key: "product_read",
133
+ featureId: "feature_product_information",
134
+ position: 0,
135
+ toolDescriptor: {
136
+ toolId: "tool_product_read",
137
+ toolRevisionId: "tool_revision_7",
138
+ name: "read_product",
139
+ definitionVersion: "1.0.0",
140
+ description: "Read verified product information.",
141
+ inputSchema: {
142
+ type: "object",
143
+ properties: {},
144
+ required: [],
145
+ additionalProperties: false,
146
+ },
147
+ },
148
+ },
149
+ ],
150
+ featureBehaviours: [
151
+ {
152
+ featureId: "feature_product_information",
153
+ behaviourPrompt: "Use verified product information when answering.",
154
+ },
155
+ ],
156
+ selectedCapabilityKeys: ["product_read"],
157
+ grantedTools: [
158
+ {
159
+ toolId: "tool_product_read",
160
+ toolRevisionId: "tool_revision_7",
161
+ toolName: "read_product",
162
+ definitionVersion: "1.0.0",
163
+ capabilityKeys: ["product_read"],
164
+ },
165
+ ],
166
+ responseContract: {
167
+ version: "response.v1",
168
+ instructions: "Write a concise reply supported by verified facts.",
169
+ detailsSchema: {
170
+ type: "object",
171
+ properties: {},
172
+ required: [],
173
+ additionalProperties: false,
174
+ },
175
+ },
176
+ responseContractHash: "0".repeat(64),
177
+ });
178
+ ```
179
+
180
+ The identifiers and hash above are illustrative. Publication/manifest assembly must
181
+ prove that the Capability belongs to the Feature, the pinned Tool revision belongs
182
+ to the Tool and is published, and the Feature behaviour snapshot belongs to the
183
+ same immutable release. Shared schema parsing cannot prove those database
184
+ relationships.
185
+
186
+ The normal flow is:
187
+
188
+ 1. Commerce Studio associates an ordinary Feature Capability with one Tool; release
189
+ creation pins the exact published Tool revision and snapshots Feature behaviour.
190
+ 2. Commerce resolves eligible Feature Capabilities using authoritative merchant
191
+ facts and builds a manifest whose Capability entries are position ordered.
192
+ 3. `featureBehaviours` contains exactly one entry per represented Feature, ordered
193
+ by that Feature's first Capability position. Blank behaviour text is valid.
194
+ 4. Background receives the manifest and persists its `grantedTools`, release and
195
+ selected Capability keys in a conversation grant. Zero selected Capabilities
196
+ and zero granted Tools are valid.
197
+ 5. Background checks MCP descriptors against that manifest/grant and constructs
198
+ runtime `RunnerTool` adapters. The model chooses a Tool and supplies arguments;
199
+ the adapter forwards execution to Commerce.
200
+ 6. Later turns reuse the original grant. A new release cannot add Tools to that
201
+ conversation; current revocation may remove execution permission.
202
+
203
+ ### Turn runner integration
204
+
205
+ `RunnerTool` is an in-memory adapter, distinct from durable Capability/Tool
206
+ associations:
207
+
208
+ ```ts
209
+ import type { ToolDescriptor, GrantedTool, CommerceToolResult } from
210
+ "@modainteract/moda-interact-shared/commerce";
211
+
212
+ // Shape of the exported RunnerTool interface, shown for explanation.
213
+ type RunnerToolShape = {
214
+ descriptor: ToolDescriptor;
215
+ isAuthorized: (tool: GrantedTool, signal: AbortSignal) => Promise<boolean>;
216
+ execute: (
217
+ arguments_: Record<string, unknown>,
218
+ signal: AbortSignal,
219
+ ) => Promise<CommerceToolResult>;
220
+ extractEvidence?: (result: CommerceToolResult) => unknown[];
221
+ };
222
+ ```
223
+
224
+ Import `RunnerTool` rather than copying this explanatory shape. `runCommerceTurn`
225
+ takes `RunCommerceTurnInput`: turn, grant, manifest, host instructions, trusted
226
+ context, history, resolved language, abort signal and dependencies. Feature
227
+ behaviour is consumed from `manifest.featureBehaviours`; callers do not pass a
228
+ parallel Capability-prompt array. The host provides `model.invoke`, `tools`, `now`
229
+ and a canonical-string `digest` function. Optional budgets bound model steps,
230
+ remote calls, deadline and output tokens. The model adapter returns `ModelStep`
231
+ Tool calls and output-token usage; it does not send a WhatsApp message itself.
232
+
233
+ The return type is discriminated:
234
+
235
+ ```ts
236
+ import type { CommerceFinalResponse } from
237
+ "@modainteract/moda-interact-shared/commerce";
238
+ import type { RunnerErrorCode } from
239
+ "@modainteract/moda-interact-shared/commerce/runner";
240
+
241
+ // Shape of RunCommerceTurnResult, shown for explanation.
242
+ type TurnResultShape =
243
+ | { ok: true; result: CommerceFinalResponse;
244
+ usage: { modelSteps: number; remoteCalls: number } }
245
+ | { ok: false; error: { code: RunnerErrorCode; retryable: boolean } };
246
+ ```
247
+
248
+ The runner owns bounded orchestration, authorization callbacks and final-response
249
+ validation. It does not own an MCP HTTP client, a model SDK, Prisma, conversation
250
+ leases or WhatsApp delivery. Background owns those production adapters; preview
251
+ can inject isolated fixture/model adapters. Never replace an unavailable
252
+ production adapter with `example*` data.
253
+
254
+ `runnerVersion` describes runner compatibility independently of the npm package
255
+ version. `PLATFORM_INSTRUCTIONS` is the runner's fixed grounding, authorization,
256
+ language and finalization guidance. Feature behaviour, response guidance and other
257
+ authored release text cannot expand permissions or override those rules.
258
+
259
+ ### Response contracts and final responses
260
+
261
+ `CommerceResponseContractSchema` validates the release-owned
262
+ `{version: "response.v1", instructions, detailsSchema}` definition.
263
+ `EMPTY_RESPONSE_CONTRACT` is the empty-details baseline. Use the supported
264
+ `DetailsSchemaSchema` / `InputSchemaSchema` subset rather than assuming arbitrary
265
+ JSON Schema keywords are accepted; `validateSubset`, `matchesSubset` and
266
+ `compileSubset` expose the same subset validation/matching machinery.
267
+
268
+ `CommerceFinalResponseSchema` validates the fixed envelope: `answerKind`,
269
+ `replyText`, `referralReason`, `detectedLanguageTag`,
270
+ `detectedLanguageConfidence`, `evidenceIds` and `details`.
271
+ `finalResponseSchema(definition)` additionally validates the selected release's
272
+ details schema. `finalResponseToolSchema(definition)` produces the host-local
273
+ finalization Tool's input schema. `verifyResponseContract` checks the definition
274
+ against its hash using the caller's digest implementation.
275
+
276
+ An ANSWER requires null referral reason; a REFER_TO_STORE response requires the
277
+ appropriate reason, empty evidence IDs and empty details. Language detection
278
+ fields are either both null or a valid pair. Only reply text is customer-facing;
279
+ structured details never authorize actions or replace delivery/routing decisions.
280
+
281
+ Use `canonicalJson`, `responseContractCanonicalJson` and `toolHashInput` for their
282
+ specific canonicalization/hashing boundaries. Do not hash arbitrary object
283
+ serialization in place of these helpers. `mapToolArguments` maps validated authored
284
+ inputs/fixed values; it does not call Shopify. `POLICY_OPERATIONS` and
285
+ `POLICY_OPERATION_DESCRIPTORS` describe supported operation identities; actual
286
+ provider implementations remain in Commerce.
287
+
288
+ `exampleTool`, `exampleDefinition`, `exampleTurn`, `exampleManifest`,
289
+ `exampleGrant` and `exampleFinal` are synthetic fixtures for examples and tests,
290
+ not seeds for a merchant's production configuration.
291
+
20
292
  ## What this package owns
21
293
 
22
294
  The package contains code that genuinely belongs at a cross-service boundary,
@@ -35,6 +307,40 @@ including:
35
307
 
36
308
  The package deliberately keeps framework and runtime dependencies small.
37
309
 
310
+ ## Commerce contracts
311
+
312
+ The browser-safe Commerce contract entrypoint is:
313
+
314
+ ```ts
315
+ import {
316
+ CommerceToolDefinitionSchema,
317
+ ExternalHttpExecutionSchema,
318
+ ExternalHttpResultDataSchema,
319
+ ResponseProcessingSchema,
320
+ ConnectionViewSchema,
321
+ } from "@modainteract/moda-interact-shared/commerce";
322
+ ```
323
+
324
+ The public `/commerce` inventory includes the canonical JSON, subset, primitive,
325
+ definition, schema, response, selection, fixture and external contract exports.
326
+ External contracts include `ExternalQueryValueSchema`,
327
+ `ExternalQueryMappingSchema`, `ExternalQueryMappingsSchema`,
328
+ `ExternalPathSchema`, `ExternalResponseFormatSchema`,
329
+ `FieldProjectionSchema`, `ResponseFilterSchema`,
330
+ `VisualResponseProcessingSchema`, `ResponseProcessingSchema`,
331
+ `TransformResponseSchema`, `TransformSampleSchema`,
332
+ `ExternalHttpResultDataSchema`, `ConnectionRevisionViewSchema`,
333
+ `ConnectionViewSchema`, `CredentialStatusSchema`, `ConnectionCommandSchema`,
334
+ `RevisionInputSchema`, `ConnectionIssueSchema`, and `ConnectionResultSchema`,
335
+ plus their corresponding TypeScript types and the external execution,
336
+ publication, mapping and descriptor helpers from `definitions`.
337
+
338
+ The Node-only `/commerce/runner` entrypoint exports the Commerce runner version,
339
+ platform instructions, manifest/grant/result schemas, response-contract helpers,
340
+ and runner request/step/result types. It owns protocol validation helpers only;
341
+ provider transport, credentials, response processing and persistence remain in
342
+ their service-owned repositories.
343
+
38
344
  ## Node observability runtime
39
345
 
40
346
  The package provides a browser-safe semantic observability entry and a
@@ -883,3 +1189,1142 @@ capability and should therefore be released as a **minor** version increment.
883
1189
  Publishing the package and changing consuming services are coordinated tasks;
884
1190
  a consuming service must not assume an unpublished local shared export exists
885
1191
  in the npm artifact it installs.
1192
+
1193
+ ## Complete export inventory
1194
+ Enumerated from the TypeScript module exports for every `package.json` public
1195
+ entry point, including re-exports and type-only symbols. Source files are linked
1196
+ for exact signatures, fields, defaults and validation constraints. This inventory
1197
+ does not make internal modules into public import paths. When changing exports,
1198
+ update both the entry-point guide and this inventory.
1199
+
1200
+ <details>
1201
+ <summary>Package root — 182 exports</summary>
1202
+
1203
+ Import: `@modainteract/moda-interact-shared`.
1204
+
1205
+ From [src/billing.ts](src/billing.ts):
1206
+
1207
+ Runtime exports:
1208
+
1209
+ - `APP_PRICING_BILLING_PERIOD_DRAIN_WINDOW_MS`
1210
+ - `ARCH007_BILLING_CONTRACT_SCHEMA_VERSION`
1211
+ - `availablePurchasedRecoveryCredits`
1212
+ - `BILLING_PLAN_KINDS`
1213
+ - `BILLING_SUBSCRIPTION_RECONCILE_JOB_NAME`
1214
+ - `BILLING_SUBSCRIPTION_RECONCILE_QUEUE_NAME`
1215
+ - `BILLING_SUBSCRIPTION_RECONCILE_SCHEMA_VERSION`
1216
+ - `BILLING_SYSTEM_MESSAGE_CODES`
1217
+ - `BILLING_USAGE_METRICS`
1218
+ - `BillingPlanKindSchema`
1219
+ - `BillingSubscriptionReconcileJobSchema`
1220
+ - `BillingSystemMessageCodeSchema`
1221
+ - `BillingUsageMetricSchema`
1222
+ - `createBillingSubscriptionReconcileJobId`
1223
+ - `createMerchantBillingSystemSourceKey`
1224
+ - `createRecoveryIdempotencyKey`
1225
+ - `createShopifyUsageIdempotencyKey`
1226
+ - `deriveShopifyProviderContextIdentity`
1227
+ - `isSameShopifyPurchaseProviderContext`
1228
+ - `NormalizedWhatsAppStatusSchema`
1229
+ - `parseBillingSubscriptionReconcileJob`
1230
+ - `parseNormalizedWhatsAppStatus`
1231
+ - `safeParseBillingSubscriptionReconcileJob`
1232
+ - `safeParseNormalizedWhatsAppStatus`
1233
+ - `WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION`
1234
+ - `WHATSAPP_PROVIDER_STATUSES`
1235
+ - `WhatsAppProviderPricingMetadataSchema`
1236
+ - `WhatsAppProviderStatusSchema`
1237
+
1238
+ Type-only exports:
1239
+
1240
+ - `BillingPlanKind`
1241
+ - `BillingSubscriptionReconcileJob`
1242
+ - `BillingSystemMessageCode`
1243
+ - `BillingUsageMetric`
1244
+ - `NormalizedWhatsAppStatus`
1245
+ - `PurchasedRecoveryCreditCounterSnapshot`
1246
+ - `ShopifyCurrentProviderContext`
1247
+ - `ShopifyProviderContextIdentityInput`
1248
+ - `ShopifyPurchaseProviderContext`
1249
+ - `WhatsAppProviderPricingMetadata`
1250
+ - `WhatsAppProviderStatus`
1251
+
1252
+ From [src/internationalization.ts](src/internationalization.ts):
1253
+
1254
+ Runtime exports:
1255
+
1256
+ - `canonicaliseLanguageTag`
1257
+ - `CountryCodeSchema`
1258
+ - `createInternationalizationRuntime`
1259
+ - `CurrencyCodeSchema`
1260
+ - `InternationalContextSchema`
1261
+ - `LanguageSourceSchema`
1262
+ - `LanguageTagSchema`
1263
+ - `mergeInternationalContext`
1264
+ - `normalizeCountryCode`
1265
+ - `normalizeCurrencyCode`
1266
+ - `normalizeTimeZone`
1267
+ - `resolveLocaleDirection`
1268
+ - `TimeZoneIdSchema`
1269
+ - `validateIcuCatalogue`
1270
+
1271
+ Type-only exports:
1272
+
1273
+ - `CatalogueValidationOptions`
1274
+ - `CountryCode`
1275
+ - `CurrencyCode`
1276
+ - `IcuMessageCatalogue`
1277
+ - `IcuMessageValues`
1278
+ - `InternationalContext`
1279
+ - `InternationalizationRuntime`
1280
+ - `InternationalizationRuntimeOptions`
1281
+ - `LanguageSource`
1282
+ - `LanguageTag`
1283
+ - `TimeZoneId`
1284
+
1285
+ From [src/merchant-communications.ts](src/merchant-communications.ts):
1286
+
1287
+ Runtime exports:
1288
+
1289
+ - `AuthoredSupportBodySchema`
1290
+ - `countUnicodeGraphemes`
1291
+ - `MERCHANT_COMMUNICATIONS_JOB_NAMES`
1292
+ - `MERCHANT_COMMUNICATIONS_QUEUE_NAME`
1293
+ - `MERCHANT_COMMUNICATIONS_SCHEMA_VERSION`
1294
+ - `MerchantMessageTranslationContractSchema`
1295
+ - `MerchantMessageTranslationStatusSchema`
1296
+ - `MerchantSupportMessageContractSchema`
1297
+ - `MerchantSupportMessageKindSchema`
1298
+ - `MerchantSupportMessageStateSchema`
1299
+ - `MerchantTranslationBatchContractSchema`
1300
+ - `MerchantTranslationBatchStatusSchema`
1301
+ - `MerchantTranslationDirectionSchema`
1302
+ - `MerchantTranslationReconciliationRequestContractSchema`
1303
+ - `MerchantTranslationReconciliationScopeSchema`
1304
+ - `MerchantTranslationReconciliationStatusSchema`
1305
+ - `PLATFORM_SUPPORT_LANGUAGE_TAG`
1306
+ - `requiresMerchantTranslation`
1307
+ - `TranslatedSupportBodySchema`
1308
+ - `TranslationBatchPollJobSchema`
1309
+ - `TranslationBatchResultsJobSchema`
1310
+ - `TranslationBatchSubmitJobSchema`
1311
+ - `TranslationDispatchJobSchema`
1312
+ - `TranslationReconcileJobSchema`
1313
+
1314
+ Type-only exports:
1315
+
1316
+ - `MerchantMessageTranslationContract`
1317
+ - `MerchantMessageTranslationStatus`
1318
+ - `MerchantSupportMessageContract`
1319
+ - `MerchantSupportMessageKind`
1320
+ - `MerchantSupportMessageState`
1321
+ - `MerchantTranslationBatchContract`
1322
+ - `MerchantTranslationBatchStatus`
1323
+ - `MerchantTranslationDirection`
1324
+ - `MerchantTranslationReconciliationRequestContract`
1325
+ - `MerchantTranslationReconciliationScope`
1326
+ - `MerchantTranslationReconciliationStatus`
1327
+ - `TranslationBatchPollJob`
1328
+ - `TranslationBatchResultsJob`
1329
+ - `TranslationBatchSubmitJob`
1330
+ - `TranslationDispatchJob`
1331
+ - `TranslationReconcileJob`
1332
+
1333
+ From [src/recovery-policy.ts](src/recovery-policy.ts):
1334
+
1335
+ Runtime exports:
1336
+
1337
+ - `EffectiveRecoveryPolicySchema`
1338
+ - `parseEffectiveRecoveryPolicy`
1339
+ - `RECOVERY_OFFER_MODES`
1340
+ - `RecoveryOfferModeSchema`
1341
+ - `safeParseEffectiveRecoveryPolicy`
1342
+
1343
+ Type-only exports:
1344
+
1345
+ - `EffectiveRecoveryPolicy`
1346
+ - `RecoveryOfferMode`
1347
+
1348
+ From [src/shopify/common.schema.ts](src/shopify/common.schema.ts):
1349
+
1350
+ Runtime exports:
1351
+
1352
+ - `MAX_LINE_ITEMS`
1353
+ - `MAX_URL_LENGTH`
1354
+ - `ShopifyCheckoutLineItemSchema`
1355
+ - `ShopifyCheckoutLineItemsSchema`
1356
+ - `ShopifyCustomerReferenceSchema`
1357
+ - `ShopifyMoneySchema`
1358
+ - `ShopifyTenantSchema`
1359
+
1360
+ Type-only exports:
1361
+
1362
+ - `ShopifyCheckoutLineItem`
1363
+ - `ShopifyCustomerReference`
1364
+ - `ShopifyMoney`
1365
+ - `ShopifyTenant`
1366
+
1367
+ From [src/shopify/constants.ts](src/shopify/constants.ts):
1368
+
1369
+ Runtime exports:
1370
+
1371
+ - `SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION`
1372
+ - `SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1`
1373
+ - `SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2`
1374
+ - `SHOPIFY_COMMERCE_EVENT_TYPES`
1375
+ - `SHOPIFY_RECOVERY_EVENT_TYPES_V2`
1376
+ - `SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS`
1377
+
1378
+ From [src/shopify/queue-contracts.ts](src/shopify/queue-contracts.ts):
1379
+
1380
+ Runtime exports:
1381
+
1382
+ - `parseShopifyDiscountSyncJob`
1383
+ - `safeParseShopifyDiscountSyncJob`
1384
+ - `SHOPIFY_DISCOUNT_SYNC_REASONS`
1385
+ - `SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS`
1386
+ - `SHOPIFY_WEBHOOK_QUEUE_CONTRACTS`
1387
+ - `ShopifyDiscountSyncJobSchema`
1388
+ - `ShopifyDiscountSyncReasonSchema`
1389
+ - `ShopifyDiscountSyncWebhookTopicSchema`
1390
+
1391
+ Type-only exports:
1392
+
1393
+ - `ShopifyDiscountSyncJob`
1394
+
1395
+ From [src/shopify/v1/checkout-observed.schema.ts](src/shopify/v1/checkout-observed.schema.ts):
1396
+
1397
+ Runtime exports:
1398
+
1399
+ - `CheckoutObservedPayloadSchema`
1400
+
1401
+ Type-only exports:
1402
+
1403
+ - `CheckoutObservedPayload`
1404
+
1405
+ From [src/shopify/v1/commerce-event.schema.ts](src/shopify/v1/commerce-event.schema.ts):
1406
+
1407
+ Runtime exports:
1408
+
1409
+ - `createShopifyCommerceOrderingKey`
1410
+ - `createShopifyOrderOrderingKey`
1411
+ - `isCheckoutObservedEvent`
1412
+ - `isOrderCompletedEvent`
1413
+ - `parseShopifyCommerceEvent`
1414
+ - `safeParseShopifyCommerceEvent`
1415
+ - `ShopifyCheckoutObservedEventSchema`
1416
+ - `ShopifyCommerceEventSchema`
1417
+ - `ShopifyOrderCompletedEventSchema`
1418
+
1419
+ Type-only exports:
1420
+
1421
+ - `ShopifyCheckoutObservedEvent`
1422
+ - `ShopifyCommerceEvent`
1423
+ - `ShopifyCommerceEventType`
1424
+ - `ShopifyOrderCompletedEvent`
1425
+
1426
+ From [src/shopify/v1/order-completed.schema.ts](src/shopify/v1/order-completed.schema.ts):
1427
+
1428
+ Runtime exports:
1429
+
1430
+ - `OrderCompletedPayloadSchema`
1431
+
1432
+ Type-only exports:
1433
+
1434
+ - `OrderCompletedPayload`
1435
+
1436
+ From [src/shopify/v2/cart-activity.schema.ts](src/shopify/v2/cart-activity.schema.ts):
1437
+
1438
+ Runtime exports:
1439
+
1440
+ - `ShopifyCartActivityPayloadV2Schema`
1441
+
1442
+ Type-only exports:
1443
+
1444
+ - `ShopifyCartActivityPayloadV2`
1445
+
1446
+ From [src/shopify/v2/checkout-created.schema.ts](src/shopify/v2/checkout-created.schema.ts):
1447
+
1448
+ Runtime exports:
1449
+
1450
+ - `CheckoutCreatedPayloadV2Schema`
1451
+
1452
+ Type-only exports:
1453
+
1454
+ - `CheckoutCreatedPayloadV2`
1455
+
1456
+ From [src/shopify/v2/checkout-updated.schema.ts](src/shopify/v2/checkout-updated.schema.ts):
1457
+
1458
+ Runtime exports:
1459
+
1460
+ - `CheckoutUpdatedPayloadV2Schema`
1461
+
1462
+ Type-only exports:
1463
+
1464
+ - `CheckoutUpdatedPayloadV2`
1465
+
1466
+ From [src/shopify/v2/order-completed.schema.ts](src/shopify/v2/order-completed.schema.ts):
1467
+
1468
+ Runtime exports:
1469
+
1470
+ - `OrderCompletedPayloadV2Schema`
1471
+
1472
+ Type-only exports:
1473
+
1474
+ - `OrderCompletedPayloadV2`
1475
+
1476
+ From [src/shopify/v2/recovery-event.schema.ts](src/shopify/v2/recovery-event.schema.ts):
1477
+
1478
+ Runtime exports:
1479
+
1480
+ - `createShopifyCartActivityOrderingKey`
1481
+ - `createShopifyOrderCorrelationOrderingKey`
1482
+ - `createShopifyPendingRecoveryOrderingKey`
1483
+ - `isCartActivityEventV2`
1484
+ - `isCheckoutCreatedEventV2`
1485
+ - `isCheckoutUpdatedEventV2`
1486
+ - `isOrderCompletedEventV2`
1487
+ - `parseShopifyRecoveryEventV2`
1488
+ - `safeParseShopifyRecoveryEventV2`
1489
+ - `ShopifyCartActivityEventV2Schema`
1490
+ - `ShopifyCheckoutCreatedEventV2Schema`
1491
+ - `ShopifyCheckoutUpdatedEventV2Schema`
1492
+ - `ShopifyOrderCompletedEventV2Schema`
1493
+ - `ShopifyRecoveryEventV2Schema`
1494
+
1495
+ Type-only exports:
1496
+
1497
+ - `ShopifyCartActivityEventV2`
1498
+ - `ShopifyCheckoutCreatedEventV2`
1499
+ - `ShopifyCheckoutUpdatedEventV2`
1500
+ - `ShopifyOrderCompletedEventV2`
1501
+ - `ShopifyRecoveryEventTypeV2`
1502
+ - `ShopifyRecoveryEventV2`
1503
+
1504
+ </details>
1505
+
1506
+ <details>
1507
+ <summary>/internationalization — 25 exports</summary>
1508
+
1509
+ Import: `@modainteract/moda-interact-shared/internationalization`.
1510
+
1511
+ From [src/internationalization.ts](src/internationalization.ts):
1512
+
1513
+ Runtime exports:
1514
+
1515
+ - `canonicaliseLanguageTag`
1516
+ - `CountryCodeSchema`
1517
+ - `createInternationalizationRuntime`
1518
+ - `CurrencyCodeSchema`
1519
+ - `InternationalContextSchema`
1520
+ - `LanguageSourceSchema`
1521
+ - `LanguageTagSchema`
1522
+ - `mergeInternationalContext`
1523
+ - `normalizeCountryCode`
1524
+ - `normalizeCurrencyCode`
1525
+ - `normalizeTimeZone`
1526
+ - `resolveLocaleDirection`
1527
+ - `TimeZoneIdSchema`
1528
+ - `validateIcuCatalogue`
1529
+
1530
+ Type-only exports:
1531
+
1532
+ - `CatalogueValidationOptions`
1533
+ - `CountryCode`
1534
+ - `CurrencyCode`
1535
+ - `IcuMessageCatalogue`
1536
+ - `IcuMessageValues`
1537
+ - `InternationalContext`
1538
+ - `InternationalizationRuntime`
1539
+ - `InternationalizationRuntimeOptions`
1540
+ - `LanguageSource`
1541
+ - `LanguageTag`
1542
+ - `TimeZoneId`
1543
+
1544
+ </details>
1545
+
1546
+ <details>
1547
+ <summary>/billing — 39 exports</summary>
1548
+
1549
+ Import: `@modainteract/moda-interact-shared/billing`.
1550
+
1551
+ From [src/billing.ts](src/billing.ts):
1552
+
1553
+ Runtime exports:
1554
+
1555
+ - `APP_PRICING_BILLING_PERIOD_DRAIN_WINDOW_MS`
1556
+ - `ARCH007_BILLING_CONTRACT_SCHEMA_VERSION`
1557
+ - `availablePurchasedRecoveryCredits`
1558
+ - `BILLING_PLAN_KINDS`
1559
+ - `BILLING_SUBSCRIPTION_RECONCILE_JOB_NAME`
1560
+ - `BILLING_SUBSCRIPTION_RECONCILE_QUEUE_NAME`
1561
+ - `BILLING_SUBSCRIPTION_RECONCILE_SCHEMA_VERSION`
1562
+ - `BILLING_SYSTEM_MESSAGE_CODES`
1563
+ - `BILLING_USAGE_METRICS`
1564
+ - `BillingPlanKindSchema`
1565
+ - `BillingSubscriptionReconcileJobSchema`
1566
+ - `BillingSystemMessageCodeSchema`
1567
+ - `BillingUsageMetricSchema`
1568
+ - `createBillingSubscriptionReconcileJobId`
1569
+ - `createMerchantBillingSystemSourceKey`
1570
+ - `createRecoveryIdempotencyKey`
1571
+ - `createShopifyUsageIdempotencyKey`
1572
+ - `deriveShopifyProviderContextIdentity`
1573
+ - `isSameShopifyPurchaseProviderContext`
1574
+ - `NormalizedWhatsAppStatusSchema`
1575
+ - `parseBillingSubscriptionReconcileJob`
1576
+ - `parseNormalizedWhatsAppStatus`
1577
+ - `safeParseBillingSubscriptionReconcileJob`
1578
+ - `safeParseNormalizedWhatsAppStatus`
1579
+ - `WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION`
1580
+ - `WHATSAPP_PROVIDER_STATUSES`
1581
+ - `WhatsAppProviderPricingMetadataSchema`
1582
+ - `WhatsAppProviderStatusSchema`
1583
+
1584
+ Type-only exports:
1585
+
1586
+ - `BillingPlanKind`
1587
+ - `BillingSubscriptionReconcileJob`
1588
+ - `BillingSystemMessageCode`
1589
+ - `BillingUsageMetric`
1590
+ - `NormalizedWhatsAppStatus`
1591
+ - `PurchasedRecoveryCreditCounterSnapshot`
1592
+ - `ShopifyCurrentProviderContext`
1593
+ - `ShopifyProviderContextIdentityInput`
1594
+ - `ShopifyPurchaseProviderContext`
1595
+ - `WhatsAppProviderPricingMetadata`
1596
+ - `WhatsAppProviderStatus`
1597
+
1598
+ </details>
1599
+
1600
+ <details>
1601
+ <summary>/recovery-policy — 7 exports</summary>
1602
+
1603
+ Import: `@modainteract/moda-interact-shared/recovery-policy`.
1604
+
1605
+ From [src/recovery-policy.ts](src/recovery-policy.ts):
1606
+
1607
+ Runtime exports:
1608
+
1609
+ - `EffectiveRecoveryPolicySchema`
1610
+ - `parseEffectiveRecoveryPolicy`
1611
+ - `RECOVERY_OFFER_MODES`
1612
+ - `RecoveryOfferModeSchema`
1613
+ - `safeParseEffectiveRecoveryPolicy`
1614
+
1615
+ Type-only exports:
1616
+
1617
+ - `EffectiveRecoveryPolicy`
1618
+ - `RecoveryOfferMode`
1619
+
1620
+ </details>
1621
+
1622
+ <details>
1623
+ <summary>/whatsapp — 7 exports</summary>
1624
+
1625
+ Import: `@modainteract/moda-interact-shared/whatsapp`.
1626
+
1627
+ From [src/whatsapp.ts](src/whatsapp.ts):
1628
+
1629
+ Runtime exports:
1630
+
1631
+ - `NormalizedWhatsAppInboundMessageSchema`
1632
+ - `parseNormalizedWhatsAppInboundMessage`
1633
+ - `safeParseNormalizedWhatsAppInboundMessage`
1634
+ - `WHATSAPP_INBOUND_MESSAGE_SCHEMA_VERSION`
1635
+ - `WhatsAppInboundContentSchema`
1636
+
1637
+ Type-only exports:
1638
+
1639
+ - `NormalizedWhatsAppInboundMessage`
1640
+ - `WhatsAppInboundContent`
1641
+
1642
+ </details>
1643
+
1644
+ <details>
1645
+ <summary>/merchant-communications — 40 exports</summary>
1646
+
1647
+ Import: `@modainteract/moda-interact-shared/merchant-communications`.
1648
+
1649
+ From [src/merchant-communications.ts](src/merchant-communications.ts):
1650
+
1651
+ Runtime exports:
1652
+
1653
+ - `AuthoredSupportBodySchema`
1654
+ - `countUnicodeGraphemes`
1655
+ - `MERCHANT_COMMUNICATIONS_JOB_NAMES`
1656
+ - `MERCHANT_COMMUNICATIONS_QUEUE_NAME`
1657
+ - `MERCHANT_COMMUNICATIONS_SCHEMA_VERSION`
1658
+ - `MerchantMessageTranslationContractSchema`
1659
+ - `MerchantMessageTranslationStatusSchema`
1660
+ - `MerchantSupportMessageContractSchema`
1661
+ - `MerchantSupportMessageKindSchema`
1662
+ - `MerchantSupportMessageStateSchema`
1663
+ - `MerchantTranslationBatchContractSchema`
1664
+ - `MerchantTranslationBatchStatusSchema`
1665
+ - `MerchantTranslationDirectionSchema`
1666
+ - `MerchantTranslationReconciliationRequestContractSchema`
1667
+ - `MerchantTranslationReconciliationScopeSchema`
1668
+ - `MerchantTranslationReconciliationStatusSchema`
1669
+ - `PLATFORM_SUPPORT_LANGUAGE_TAG`
1670
+ - `requiresMerchantTranslation`
1671
+ - `TranslatedSupportBodySchema`
1672
+ - `TranslationBatchPollJobSchema`
1673
+ - `TranslationBatchResultsJobSchema`
1674
+ - `TranslationBatchSubmitJobSchema`
1675
+ - `TranslationDispatchJobSchema`
1676
+ - `TranslationReconcileJobSchema`
1677
+
1678
+ Type-only exports:
1679
+
1680
+ - `MerchantMessageTranslationContract`
1681
+ - `MerchantMessageTranslationStatus`
1682
+ - `MerchantSupportMessageContract`
1683
+ - `MerchantSupportMessageKind`
1684
+ - `MerchantSupportMessageState`
1685
+ - `MerchantTranslationBatchContract`
1686
+ - `MerchantTranslationBatchStatus`
1687
+ - `MerchantTranslationDirection`
1688
+ - `MerchantTranslationReconciliationRequestContract`
1689
+ - `MerchantTranslationReconciliationScope`
1690
+ - `MerchantTranslationReconciliationStatus`
1691
+ - `TranslationBatchPollJob`
1692
+ - `TranslationBatchResultsJob`
1693
+ - `TranslationBatchSubmitJob`
1694
+ - `TranslationDispatchJob`
1695
+ - `TranslationReconcileJob`
1696
+
1697
+ </details>
1698
+
1699
+ <details>
1700
+ <summary>/merchant-communications/node — 5 exports</summary>
1701
+
1702
+ Import: `@modainteract/moda-interact-shared/merchant-communications/node`.
1703
+
1704
+ From [src/merchant-communications.node.ts](src/merchant-communications.node.ts):
1705
+
1706
+ Runtime exports:
1707
+
1708
+ - `createTranslationBatchPollJobId`
1709
+ - `createTranslationBatchResultsJobId`
1710
+ - `createTranslationBatchSubmitJobId`
1711
+ - `createTranslationDispatchJobId`
1712
+ - `createTranslationReconcileJobId`
1713
+
1714
+ </details>
1715
+
1716
+ <details>
1717
+ <summary>/testing/node — 27 exports</summary>
1718
+
1719
+ Import: `@modainteract/moda-interact-shared/testing/node`.
1720
+
1721
+ From [src/testing/node.ts](src/testing/node.ts):
1722
+
1723
+ Runtime exports:
1724
+
1725
+ - `createCommandRunner`
1726
+ - `createDockerRunner`
1727
+ - `DEFAULT_COMMAND_TIMEOUT_MS`
1728
+ - `DEFAULT_DOCKER_COMMAND_TIMEOUT_MS`
1729
+ - `DEFAULT_HOST`
1730
+ - `DEFAULT_POLL_INTERVAL_MS`
1731
+ - `DEFAULT_POSTGRES_IMAGE`
1732
+ - `DEFAULT_POSTGRES_STARTUP_TIMEOUT_MS`
1733
+ - `DEFAULT_REDIS_IMAGE`
1734
+ - `DEFAULT_REDIS_STARTUP_TIMEOUT_MS`
1735
+ - `deployPrismaMigrations`
1736
+ - `EphemeralPostgres`
1737
+ - `EphemeralRedis`
1738
+ - `withDisposableIntegrationInfrastructure`
1739
+
1740
+ Type-only exports:
1741
+
1742
+ - `CommandOptions`
1743
+ - `CommandResult`
1744
+ - `CommandRunner`
1745
+ - `DisposableEnvironment`
1746
+ - `DisposableIntegrationCallback`
1747
+ - `DisposableIntegrationInfrastructure`
1748
+ - `DisposableIntegrationInfrastructureOptions`
1749
+ - `DockerRunner`
1750
+ - `EphemeralPostgresOptions`
1751
+ - `EphemeralRedisOptions`
1752
+ - `MigrationDeployOptions`
1753
+ - `PostgresConnectionDetails`
1754
+ - `RedisConnectionDetails`
1755
+
1756
+ </details>
1757
+
1758
+ <details>
1759
+ <summary>/shopify — 71 exports</summary>
1760
+
1761
+ Import: `@modainteract/moda-interact-shared/shopify`.
1762
+
1763
+ From [src/shopify/common.schema.ts](src/shopify/common.schema.ts):
1764
+
1765
+ Runtime exports:
1766
+
1767
+ - `MAX_LINE_ITEMS`
1768
+ - `MAX_URL_LENGTH`
1769
+ - `ShopifyCheckoutLineItemSchema`
1770
+ - `ShopifyCheckoutLineItemsSchema`
1771
+ - `ShopifyCustomerReferenceSchema`
1772
+ - `ShopifyMoneySchema`
1773
+ - `ShopifyTenantSchema`
1774
+
1775
+ Type-only exports:
1776
+
1777
+ - `ShopifyCheckoutLineItem`
1778
+ - `ShopifyCustomerReference`
1779
+ - `ShopifyMoney`
1780
+ - `ShopifyTenant`
1781
+
1782
+ From [src/shopify/constants.ts](src/shopify/constants.ts):
1783
+
1784
+ Runtime exports:
1785
+
1786
+ - `SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION`
1787
+ - `SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1`
1788
+ - `SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2`
1789
+ - `SHOPIFY_COMMERCE_EVENT_TYPES`
1790
+ - `SHOPIFY_RECOVERY_EVENT_TYPES_V2`
1791
+ - `SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS`
1792
+
1793
+ From [src/shopify/queue-contracts.ts](src/shopify/queue-contracts.ts):
1794
+
1795
+ Runtime exports:
1796
+
1797
+ - `parseShopifyDiscountSyncJob`
1798
+ - `safeParseShopifyDiscountSyncJob`
1799
+ - `SHOPIFY_DISCOUNT_SYNC_REASONS`
1800
+ - `SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS`
1801
+ - `SHOPIFY_WEBHOOK_QUEUE_CONTRACTS`
1802
+ - `ShopifyDiscountSyncJobSchema`
1803
+ - `ShopifyDiscountSyncReasonSchema`
1804
+ - `ShopifyDiscountSyncWebhookTopicSchema`
1805
+
1806
+ Type-only exports:
1807
+
1808
+ - `ShopifyDiscountSyncJob`
1809
+
1810
+ From [src/shopify/v1/checkout-observed.schema.ts](src/shopify/v1/checkout-observed.schema.ts):
1811
+
1812
+ Runtime exports:
1813
+
1814
+ - `CheckoutObservedPayloadSchema`
1815
+
1816
+ Type-only exports:
1817
+
1818
+ - `CheckoutObservedPayload`
1819
+
1820
+ From [src/shopify/v1/commerce-event.schema.ts](src/shopify/v1/commerce-event.schema.ts):
1821
+
1822
+ Runtime exports:
1823
+
1824
+ - `createShopifyCommerceOrderingKey`
1825
+ - `createShopifyOrderOrderingKey`
1826
+ - `isCheckoutObservedEvent`
1827
+ - `isOrderCompletedEvent`
1828
+ - `parseShopifyCommerceEvent`
1829
+ - `safeParseShopifyCommerceEvent`
1830
+ - `ShopifyCheckoutObservedEventSchema`
1831
+ - `ShopifyCommerceEventSchema`
1832
+ - `ShopifyOrderCompletedEventSchema`
1833
+
1834
+ Type-only exports:
1835
+
1836
+ - `ShopifyCheckoutObservedEvent`
1837
+ - `ShopifyCommerceEvent`
1838
+ - `ShopifyCommerceEventType`
1839
+ - `ShopifyOrderCompletedEvent`
1840
+
1841
+ From [src/shopify/v1/order-completed.schema.ts](src/shopify/v1/order-completed.schema.ts):
1842
+
1843
+ Runtime exports:
1844
+
1845
+ - `OrderCompletedPayloadSchema`
1846
+
1847
+ Type-only exports:
1848
+
1849
+ - `OrderCompletedPayload`
1850
+
1851
+ From [src/shopify/v2/cart-activity.schema.ts](src/shopify/v2/cart-activity.schema.ts):
1852
+
1853
+ Runtime exports:
1854
+
1855
+ - `ShopifyCartActivityPayloadV2Schema`
1856
+
1857
+ Type-only exports:
1858
+
1859
+ - `ShopifyCartActivityPayloadV2`
1860
+
1861
+ From [src/shopify/v2/checkout-created.schema.ts](src/shopify/v2/checkout-created.schema.ts):
1862
+
1863
+ Runtime exports:
1864
+
1865
+ - `CheckoutCreatedPayloadV2Schema`
1866
+
1867
+ Type-only exports:
1868
+
1869
+ - `CheckoutCreatedPayloadV2`
1870
+
1871
+ From [src/shopify/v2/checkout-updated.schema.ts](src/shopify/v2/checkout-updated.schema.ts):
1872
+
1873
+ Runtime exports:
1874
+
1875
+ - `CheckoutUpdatedPayloadV2Schema`
1876
+
1877
+ Type-only exports:
1878
+
1879
+ - `CheckoutUpdatedPayloadV2`
1880
+
1881
+ From [src/shopify/v2/order-completed.schema.ts](src/shopify/v2/order-completed.schema.ts):
1882
+
1883
+ Runtime exports:
1884
+
1885
+ - `OrderCompletedPayloadV2Schema`
1886
+
1887
+ Type-only exports:
1888
+
1889
+ - `OrderCompletedPayloadV2`
1890
+
1891
+ From [src/shopify/v2/recovery-event.schema.ts](src/shopify/v2/recovery-event.schema.ts):
1892
+
1893
+ Runtime exports:
1894
+
1895
+ - `createShopifyCartActivityOrderingKey`
1896
+ - `createShopifyOrderCorrelationOrderingKey`
1897
+ - `createShopifyPendingRecoveryOrderingKey`
1898
+ - `isCartActivityEventV2`
1899
+ - `isCheckoutCreatedEventV2`
1900
+ - `isCheckoutUpdatedEventV2`
1901
+ - `isOrderCompletedEventV2`
1902
+ - `parseShopifyRecoveryEventV2`
1903
+ - `safeParseShopifyRecoveryEventV2`
1904
+ - `ShopifyCartActivityEventV2Schema`
1905
+ - `ShopifyCheckoutCreatedEventV2Schema`
1906
+ - `ShopifyCheckoutUpdatedEventV2Schema`
1907
+ - `ShopifyOrderCompletedEventV2Schema`
1908
+ - `ShopifyRecoveryEventV2Schema`
1909
+
1910
+ Type-only exports:
1911
+
1912
+ - `ShopifyCartActivityEventV2`
1913
+ - `ShopifyCheckoutCreatedEventV2`
1914
+ - `ShopifyCheckoutUpdatedEventV2`
1915
+ - `ShopifyOrderCompletedEventV2`
1916
+ - `ShopifyRecoveryEventTypeV2`
1917
+ - `ShopifyRecoveryEventV2`
1918
+
1919
+ </details>
1920
+
1921
+ <details>
1922
+ <summary>/shopify/node — 5 exports</summary>
1923
+
1924
+ Import: `@modainteract/moda-interact-shared/shopify/node`.
1925
+
1926
+ From [src/shopify/node.ts](src/shopify/node.ts):
1927
+
1928
+ Runtime exports:
1929
+
1930
+ - `createPendingRecoveryCandidateJobId`
1931
+ - `createShopifyCheckoutJobId`
1932
+ - `createShopifyDiscountSyncJobId`
1933
+ - `createShopifyOrderJobId`
1934
+ - `createShopifyWebhookJobId`
1935
+
1936
+ </details>
1937
+
1938
+ <details>
1939
+ <summary>/logging — 15 exports</summary>
1940
+
1941
+ Import: `@modainteract/moda-interact-shared/logging`.
1942
+
1943
+ From [src/logging/logger.ts](src/logging/logger.ts):
1944
+
1945
+ Runtime exports:
1946
+
1947
+ - `createLogger`
1948
+
1949
+ From [src/logging/redaction.ts](src/logging/redaction.ts):
1950
+
1951
+ Runtime exports:
1952
+
1953
+ - `CIRCULAR`
1954
+ - `isSensitiveLogKey`
1955
+ - `LOG_VALUE_LIMITS`
1956
+ - `MAX_DEPTH_REACHED`
1957
+ - `REDACTED`
1958
+ - `sanitizeLogFields`
1959
+ - `TRUNCATED`
1960
+
1961
+ From [src/logging/types.ts](src/logging/types.ts):
1962
+
1963
+ Runtime exports:
1964
+
1965
+ - `LOG_LEVELS`
1966
+
1967
+ Type-only exports:
1968
+
1969
+ - `LogFields`
1970
+ - `LoggerOptions`
1971
+ - `LogLevel`
1972
+ - `LogRecord`
1973
+ - `LogSink`
1974
+ - `StructuredLogger`
1975
+
1976
+ </details>
1977
+
1978
+ <details>
1979
+ <summary>/logging/node — 10 exports</summary>
1980
+
1981
+ Import: `@modainteract/moda-interact-shared/logging/node`.
1982
+
1983
+ From [src/logging/node.ts](src/logging/node.ts):
1984
+
1985
+ Runtime exports:
1986
+
1987
+ - `getNodeOpenTelemetryLoggingRuntime`
1988
+ - `initNodeOpenTelemetryLogging`
1989
+ - `parseOtlpHeaders`
1990
+ - `resolveLogsEndpoint`
1991
+
1992
+ Type-only exports:
1993
+
1994
+ - `NodeOpenTelemetryLoggingOptions`
1995
+ - `NodeOpenTelemetryLoggingRuntime`
1996
+
1997
+ From [src/logging/node/loki.ts](src/logging/node/loki.ts):
1998
+
1999
+ Runtime exports:
2000
+
2001
+ - `getNodeLokiLoggingRuntime`
2002
+ - `initNodeLokiLogging`
2003
+
2004
+ Type-only exports:
2005
+
2006
+ - `NodeLokiLoggingOptions`
2007
+ - `NodeLokiLoggingRuntime`
2008
+
2009
+ </details>
2010
+
2011
+ <details>
2012
+ <summary>/observability — 4 exports</summary>
2013
+
2014
+ Import: `@modainteract/moda-interact-shared/observability`.
2015
+
2016
+ From [src/observability/index.ts](src/observability/index.ts):
2017
+
2018
+ Runtime exports:
2019
+
2020
+ - `getActiveTraceId`
2021
+ - `withObservedSpan`
2022
+
2023
+ Type-only exports:
2024
+
2025
+ - `ObservedSpanOptions`
2026
+ - `SpanExceptionMapper`
2027
+
2028
+ </details>
2029
+
2030
+ <details>
2031
+ <summary>/observability/node — 7 exports</summary>
2032
+
2033
+ Import: `@modainteract/moda-interact-shared/observability/node`.
2034
+
2035
+ From [src/observability/node.ts](src/observability/node.ts):
2036
+
2037
+ Runtime exports:
2038
+
2039
+ - `getNodeObservabilityRuntime`
2040
+ - `initNodeObservability`
2041
+ - `resolveDeploymentEnvironmentName`
2042
+ - `resolveSampler`
2043
+
2044
+ Type-only exports:
2045
+
2046
+ - `NodeInstrumentProfile`
2047
+ - `NodeObservabilityOptions`
2048
+ - `NodeObservabilityRuntime`
2049
+
2050
+ </details>
2051
+
2052
+ <details>
2053
+ <summary>/observability/bullmq — 2 exports</summary>
2054
+
2055
+ Import: `@modainteract/moda-interact-shared/observability/bullmq`.
2056
+
2057
+ From [src/observability/bullmq.ts](src/observability/bullmq.ts):
2058
+
2059
+ Runtime exports:
2060
+
2061
+ - `createBullMQTelemetry`
2062
+
2063
+ Type-only exports:
2064
+
2065
+ - `BullMQTelemetryOptions`
2066
+
2067
+ </details>
2068
+
2069
+ <details>
2070
+ <summary>/observability/genai — 7 exports</summary>
2071
+
2072
+ Import: `@modainteract/moda-interact-shared/observability/genai`.
2073
+
2074
+ From [src/observability/genai.ts](src/observability/genai.ts):
2075
+
2076
+ Runtime exports:
2077
+
2078
+ - `observeAgentInvocation`
2079
+ - `observeAgentTool`
2080
+ - `observeConversationTurn`
2081
+
2082
+ Type-only exports:
2083
+
2084
+ - `AgentObservation`
2085
+ - `GenAIObservationOptions`
2086
+
2087
+ From [src/observability/index.ts](src/observability/index.ts):
2088
+
2089
+ Type-only exports:
2090
+
2091
+ - `ObservedSpanOptions`
2092
+ - `SpanExceptionMapper`
2093
+
2094
+ </details>
2095
+
2096
+ <details>
2097
+ <summary>/commerce — 130 exports</summary>
2098
+
2099
+ Import: `@modainteract/moda-interact-shared/commerce`.
2100
+
2101
+ From [src/commerce/canonical-json.ts](src/commerce/canonical-json.ts):
2102
+
2103
+ Runtime exports:
2104
+
2105
+ - `canonicalJson`
2106
+ - `jsonBytes`
2107
+ - `responseContractCanonicalJson`
2108
+
2109
+ Type-only exports:
2110
+
2111
+ - `Digest`
2112
+
2113
+
2114
+ From [src/commerce/definitions.ts](src/commerce/definitions.ts):
2115
+
2116
+ Runtime exports:
2117
+
2118
+ - `ToolNameSchema`
2119
+ - `GrantedToolSchema`
2120
+ - `GrantedToolsSchema`
2121
+ - `ToolDescriptorSchema`
2122
+ - `POLICY_OPERATIONS`
2123
+ - `ExternalHttpExecutionSchema`
2124
+ - `CommerceExecutionSchema`
2125
+ - `ResponseTemplateSchema`
2126
+ - `CommerceToolDefinitionSchema`
2127
+ - `CommerceToolDraftDefinitionSchema`
2128
+ - `validateDefinitionForPublication`
2129
+ - `definitionToMcpDescriptor`
2130
+ - `mapToolArguments`
2131
+ - `toolHashInput`
2132
+ - `validateDefinitionVersion`
2133
+ - `CommerceToolIdentitySchema`
2134
+ - `CommerceToolRevisionIdentitySchema`
2135
+ - `POLICY_OPERATION_DESCRIPTORS`
2136
+
2137
+ Type-only exports:
2138
+
2139
+ - `ExternalHttpExecution`
2140
+ - `CommerceToolDefinition`
2141
+ - `CommerceToolDraftDefinition`
2142
+ - `GrantedTool`
2143
+ - `ToolDescriptor`
2144
+ - `CommerceDefinitionCompiler`
2145
+
2146
+
2147
+ From [src/commerce/external.ts](src/commerce/external.ts):
2148
+
2149
+ Runtime exports:
2150
+
2151
+ - `ExternalQueryValueSchema`
2152
+ - `ExternalQueryMappingSchema`
2153
+ - `ExternalQueryMappingsSchema`
2154
+ - `ExternalPathSchema`
2155
+ - `ExternalResponseFormatSchema`
2156
+ - `FieldProjectionSchema`
2157
+ - `ResponseFilterSchema`
2158
+ - `VisualResponseProcessingSchema`
2159
+ - `ResponseProcessingSchema`
2160
+ - `TransformResponseSchema`
2161
+ - `TransformSampleSchema`
2162
+ - `ExternalHttpResultDataSchema`
2163
+ - `ConnectionRevisionViewSchema`
2164
+ - `ConnectionViewSchema`
2165
+ - `CredentialStatusSchema`
2166
+ - `ConnectionCommandSchema`
2167
+ - `RevisionInputSchema`
2168
+ - `ConnectionIssueSchema`
2169
+ - `ConnectionResultSchema`
2170
+
2171
+ Type-only exports:
2172
+
2173
+ - `ExternalResponseFormat`
2174
+ - `FieldProjection`
2175
+ - `ResponseFilter`
2176
+ - `VisualResponseProcessing`
2177
+ - `ResponseProcessing`
2178
+ - `TransformResponse`
2179
+ - `TransformSample`
2180
+ - `ExternalHttpResultData`
2181
+ - `ConnectionRevisionView`
2182
+ - `ConnectionView`
2183
+ - `CredentialStatus`
2184
+ - `ConnectionCommand`
2185
+ - `RevisionInput`
2186
+ - `ConnectionResult`
2187
+ - `VisualResponseProcessorInput`
2188
+ - `VisualResponseProcessorResult`
2189
+ - `CodeResponseProcessorInput`
2190
+ - `CodeResponseProcessorResult`
2191
+
2192
+
2193
+ From [src/commerce/fixtures.ts](src/commerce/fixtures.ts):
2194
+
2195
+ Runtime exports:
2196
+
2197
+ - `exampleTool`
2198
+ - `exampleDefinition`
2199
+ - `exampleTurn`
2200
+ - `exampleManifest`
2201
+ - `exampleGrant`
2202
+ - `exampleFinal`
2203
+
2204
+
2205
+ From [src/commerce/primitives.ts](src/commerce/primitives.ts):
2206
+
2207
+ Runtime exports:
2208
+
2209
+ - `ContractVersionSchema`
2210
+ - `IdSchema`
2211
+ - `SemverSchema`
2212
+ - `HashSchema`
2213
+ - `DateSchema`
2214
+ - `MoneySchema`
2215
+ - `CurrencySchema`
2216
+ - `LanguageSchema`
2217
+ - `distinct`
2218
+ - `boundedJson`
2219
+
2220
+
2221
+ From [src/commerce/response.ts](src/commerce/response.ts):
2222
+
2223
+ Runtime exports:
2224
+
2225
+ - `CommerceResponseContractSchema`
2226
+ - `EMPTY_RESPONSE_CONTRACT`
2227
+ - `ReferralReasonSchema`
2228
+ - `CommerceFinalResponseSchema`
2229
+ - `finalResponseSchema`
2230
+ - `verifyResponseContract`
2231
+ - `finalResponseToolSchema`
2232
+
2233
+ Type-only exports:
2234
+
2235
+ - `CommerceResponseContract`
2236
+ - `CommerceFinalResponse`
2237
+
2238
+
2239
+ From [src/commerce/schemas.ts](src/commerce/schemas.ts):
2240
+
2241
+ Runtime exports:
2242
+
2243
+ - `CommerceTurnIdentitySchema`
2244
+ - `CommerceConversationGrantSchema`
2245
+ - `CommerceManifestSchema`
2246
+ - `CommerceReleaseIdentitySchema`
2247
+ - `CommerceResolveAssertionSchema`
2248
+ - `CommerceExecuteAssertionSchema`
2249
+ - `CommerceAssertionSchema`
2250
+ - `CommerceProposalSchema`
2251
+ - `CommerceBasketSchema`
2252
+ - `CommerceProductSchema`
2253
+ - `CommerceOfferSchema`
2254
+ - `CommerceEvidenceSchema`
2255
+ - `CommerceAlternativeSchema`
2256
+ - `CommerceErrorCodeSchema`
2257
+ - `commerceToolResultSchema`
2258
+ - `CommerceToolResultSchema`
2259
+ - `CommerceToolInputs`
2260
+ - `CommerceToolOutputs`
2261
+ - `productBelongsToDomain`
2262
+
2263
+ Type-only exports:
2264
+
2265
+ - `CommerceTurnIdentity`
2266
+ - `CommerceConversationGrant`
2267
+ - `CommerceManifest`
2268
+ - `CommerceEvidence`
2269
+ - `CommerceToolResult`
2270
+
2271
+
2272
+ From [src/commerce/selection.ts](src/commerce/selection.ts):
2273
+
2274
+ Runtime exports:
2275
+
2276
+ - `selectCapabilities`
2277
+ - `deduplicateTools`
2278
+ - `manifestMatchesGrant`
2279
+ - `parseCommerceManifest`
2280
+ - `currentlyGrantedTools`
2281
+
2282
+ Type-only exports:
2283
+
2284
+ - `FeatureFacts`
2285
+
2286
+
2287
+ From [src/commerce/subset.ts](src/commerce/subset.ts):
2288
+
2289
+ Runtime exports:
2290
+
2291
+ - `MONEY_PATTERN`
2292
+ - `safeName`
2293
+ - `safePath`
2294
+ - `validateSubset`
2295
+ - `InputSchemaSchema`
2296
+ - `DetailsSchemaSchema`
2297
+ - `matchesSubset`
2298
+ - `compileSubset`
2299
+
2300
+ Type-only exports:
2301
+
2302
+ - `Json`
2303
+ - `SubsetSchema`
2304
+
2305
+ </details>
2306
+
2307
+ <details>
2308
+ <summary>/commerce/runner — 10 exports</summary>
2309
+
2310
+ Import: `@modainteract/moda-interact-shared/commerce/runner`.
2311
+
2312
+ From [src/commerce/runner/index.ts](src/commerce/runner/index.ts):
2313
+
2314
+ Runtime exports:
2315
+
2316
+ - `PLATFORM_INSTRUCTIONS`
2317
+ - `runCommerceTurn`
2318
+ - `runnerVersion`
2319
+
2320
+ Type-only exports:
2321
+
2322
+ - `ModelCall`
2323
+ - `ModelRequest`
2324
+ - `ModelStep`
2325
+ - `RunCommerceTurnInput`
2326
+ - `RunCommerceTurnResult`
2327
+ - `RunnerErrorCode`
2328
+ - `RunnerTool`
2329
+
2330
+ </details>