@modainteract/moda-interact-shared 5.7.0 → 5.9.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.
@@ -1,7 +1,7 @@
1
1
  import * as zod from 'zod';
2
2
  import { z } from 'zod';
3
3
  import { ModaSupportedLanguageTag, IcuMessageCatalogue, InternationalizationRuntime } from '../../internationalization.js';
4
- import { Y as CommerceShippingInformation, d as CommerceFinalResponse } from '../../response-DFDEw4K0.js';
4
+ import { Y as CommerceShippingInformation, d as CommerceFinalResponse } from '../../response-DD6HXT8s.js';
5
5
  import 'intl-messageformat';
6
6
 
7
7
  declare const CommerceVerifiedPresentationSchema: z.ZodObject<{
@@ -5,7 +5,7 @@ import {
5
5
  CommerceProductOptionsSchema,
6
6
  CommerceProductSchema,
7
7
  CommerceProductSelectedOptionsSchema
8
- } from "../../chunk-WF2BDUPZ.js";
8
+ } from "../../chunk-SW2AFMT7.js";
9
9
  import "../../chunk-GCCT2BDE.js";
10
10
  import {
11
11
  MODA_SUPPORTED_LANGUAGE_TAGS,
@@ -1,7 +1,7 @@
1
- import { a as RunnerDiagnostic, b as RunCommerceTurnInput, c as RunCommerceTurnResult } from '../../types-vIMrj5J4.js';
2
- export { C as CommerceModelInvoker, d as ModelCall, e as ModelRequest, M as ModelStep, f as RunnerDiagnosticReason, g as RunnerDiagnosticStage, h as RunnerErrorCode, i as RunnerTool } from '../../types-vIMrj5J4.js';
3
- import '../../product-context-Bh74WGOo.js';
4
- import '../../response-DFDEw4K0.js';
1
+ import { a as RunnerDiagnostic, b as RunCommerceTurnInput, c as RunCommerceTurnResult } from '../../types-BXeYmpeg.js';
2
+ export { C as CommerceModelInvoker, d as ModelCall, e as ModelRequest, M as ModelStep, f as RunnerDiagnosticReason, g as RunnerDiagnosticStage, h as RunnerErrorCode, i as RunnerTool } from '../../types-BXeYmpeg.js';
3
+ import '../../product-context-qfk6k9uk.js';
4
+ import '../../response-DD6HXT8s.js';
5
5
  import 'zod';
6
6
  import '../../types-B32wDMLO.js';
7
7
 
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  manifestMatchesGrant,
8
8
  mergeConversationProductContext
9
- } from "../../chunk-WK7QSBHJ.js";
9
+ } from "../../chunk-2XZVIWQZ.js";
10
10
  import {
11
11
  CommerceModelInvocationFailure,
12
12
  RunnerFailure,
@@ -28,7 +28,7 @@ import {
28
28
  finalResponseToolSchema,
29
29
  isBuiltInTool,
30
30
  verifyResponseContract
31
- } from "../../chunk-WF2BDUPZ.js";
31
+ } from "../../chunk-SW2AFMT7.js";
32
32
  import {
33
33
  LanguageSchema
34
34
  } from "../../chunk-GCCT2BDE.js";
@@ -1,4 +1,4 @@
1
- import { S as SubsetSchema, e as CommercePurposeOutputSchema, f as CommerceProductSchema } from './response-DFDEw4K0.js';
1
+ import { S as SubsetSchema, e as CommercePurposeOutputSchema, f as CommerceProductSchema } from './response-DD6HXT8s.js';
2
2
  import { z } from 'zod';
3
3
 
4
4
  declare const ToolNameSchema: z.ZodString;
@@ -909,6 +909,7 @@ declare const CommerceResponseDispositionSchema: z.ZodEnum<{
909
909
  OUT_OF_SCOPE_REDIRECT: "OUT_OF_SCOPE_REDIRECT";
910
910
  SHIPPING_INFORMATION_UNVERIFIED: "SHIPPING_INFORMATION_UNVERIFIED";
911
911
  PRODUCT_OPTIONS: "PRODUCT_OPTIONS";
912
+ PRODUCT_DETAILS: "PRODUCT_DETAILS";
912
913
  }>;
913
914
  type CommerceResponseDisposition = z.infer<typeof CommerceResponseDispositionSchema>;
914
915
  declare const CommerceAnswerPresentationSelectionSchema: z.ZodObject<{
@@ -916,11 +917,16 @@ declare const CommerceAnswerPresentationSelectionSchema: z.ZodObject<{
916
917
  productId: z.ZodString;
917
918
  variantId: z.ZodNullable<z.ZodString>;
918
919
  }, z.core.$strict>>>;
920
+ productDetailSelections: z.ZodOptional<z.ZodArray<z.ZodObject<{
921
+ productId: z.ZodString;
922
+ variantId: z.ZodNullable<z.ZodString>;
923
+ }, z.core.$strict>>>;
919
924
  responseDisposition: z.ZodOptional<z.ZodEnum<{
920
925
  STANDARD: "STANDARD";
921
926
  OUT_OF_SCOPE_REDIRECT: "OUT_OF_SCOPE_REDIRECT";
922
927
  SHIPPING_INFORMATION_UNVERIFIED: "SHIPPING_INFORMATION_UNVERIFIED";
923
928
  PRODUCT_OPTIONS: "PRODUCT_OPTIONS";
929
+ PRODUCT_DETAILS: "PRODUCT_DETAILS";
924
930
  }>>;
925
931
  shippingInformationSelection: z.ZodOptional<z.ZodObject<{
926
932
  productId: z.ZodNullable<z.ZodString>;
@@ -1761,4 +1767,4 @@ declare function verifyResponseContract(definition: unknown, hash: string, diges
1761
1767
  /** JSON Schema branches retain the immutable envelope; only ANSWER details vary. */
1762
1768
  declare function finalResponseToolSchema(definition: CommerceResponseContract): Json;
1763
1769
 
1764
- export { CommerceShippingInformationSchema as $, CommerceExecuteAssertionSchema as A, CommerceFinalResponseSchema as B, type CommerceTurnIdentity as C, type Digest as D, CommerceManifestSchema as E, CommerceOfferSchema as F, type CommerceOptionalLookupUnavailable as G, CommerceOptionalLookupUnavailableSchema as H, type CommerceProduct as I, CommerceProductOptionsSchema as J, type CommerceProductRecommendationSelection as K, CommerceProductRecommendationSelectionSchema as L, type CommerceProductSaleEvidence as M, CommerceProductSaleEvidenceSchema as N, CommerceProductSelectedOptionsSchema as O, CommerceProposalSchema as P, CommercePurposeOutputSchemaSchema as Q, CommerceReleaseIdentitySchema as R, type SubsetSchema as S, CommerceResolveAssertionSchema as T, type CommerceResponseContract as U, CommerceResponseContractSchema as V, type CommerceResponseDisposition as W, CommerceResponseDispositionSchema as X, type CommerceShippingInformation as Y, type CommerceShippingInformationInput as Z, CommerceShippingInformationInputSchema as _, type CommerceConversationGrant as a, CommerceToolOutputs as a0, CommerceToolResultSchema as a1, CommerceTurnIdentitySchema as a2, DetailsSchemaSchema as a3, EMPTY_RESPONSE_CONTRACT as a4, InputSchemaSchema as a5, type Json as a6, MONEY_PATTERN as a7, ReferralReasonSchema as a8, canonicalJson as a9, commerceToolResultSchema as aa, compileCommercePurposeOutputSchema as ab, compileSubset as ac, finalResponseSchema as ad, finalResponseToolSchema as ae, jsonBytes as af, matchesSubset as ag, normalizeCommerceProductOptions as ah, normalizeCommerceProductSelectedOptions as ai, productBelongsToDomain as aj, responseContractCanonicalJson as ak, safeName as al, safePath as am, validateCommercePurposeOutputSchema as an, validateSubset as ao, verifyResponseContract as ap, type CommerceManifest as b, type CommerceToolResult as c, type CommerceFinalResponse as d, type CommercePurposeOutputSchema as e, CommerceProductSchema as f, CommerceToolInputs as g, CommerceAlternativeSchema as h, type CommerceAnswerPresentationSelection as i, CommerceAnswerPresentationSelectionSchema as j, CommerceAssertionSchema as k, CommerceBasketSchema as l, type CommerceCategoryCandidate as m, CommerceCategoryCandidateSchema as n, type CommerceCategoryResolution as o, CommerceCategoryResolutionSchema as p, CommerceConversationGrantSchema as q, type CommerceDiscountCombinationFacts as r, CommerceDiscountCombinationFactsSchema as s, type CommerceDiscountConditionFacts as t, CommerceDiscountConditionFactsSchema as u, type CommerceDiscountDetails as v, CommerceDiscountDetailsSchema as w, CommerceErrorCodeSchema as x, type CommerceEvidence as y, CommerceEvidenceSchema as z };
1770
+ export { CommerceShippingInformationSchema as $, CommerceExecuteAssertionSchema as A, CommerceFinalResponseSchema as B, type CommerceTurnIdentity as C, type Digest as D, CommerceManifestSchema as E, CommerceOfferSchema as F, type CommerceOptionalLookupUnavailable as G, CommerceOptionalLookupUnavailableSchema as H, type CommerceProduct as I, CommerceProductOptionsSchema as J, type CommerceProductRecommendationSelection as K, CommerceProductRecommendationSelectionSchema as L, type CommerceProductSaleEvidence as M, CommerceProductSaleEvidenceSchema as N, CommerceProductSelectedOptionsSchema as O, CommerceProposalSchema as P, CommercePurposeOutputSchemaSchema as Q, CommerceReleaseIdentitySchema as R, type SubsetSchema as S, CommerceResolveAssertionSchema as T, type CommerceResponseContract as U, CommerceResponseContractSchema as V, type CommerceResponseDisposition as W, CommerceResponseDispositionSchema as X, type CommerceShippingInformation as Y, type CommerceShippingInformationInput as Z, CommerceShippingInformationInputSchema as _, type CommerceConversationGrant as a, CommerceToolOutputs as a0, CommerceToolResultSchema as a1, CommerceTurnIdentitySchema as a2, DetailsSchemaSchema as a3, EMPTY_RESPONSE_CONTRACT as a4, InputSchemaSchema as a5, type Json as a6, MONEY_PATTERN as a7, ReferralReasonSchema as a8, canonicalJson as a9, commerceToolResultSchema as aa, compileCommercePurposeOutputSchema as ab, compileSubset as ac, finalResponseSchema as ad, finalResponseToolSchema as ae, jsonBytes as af, matchesSubset as ag, normalizeCommerceProductOptions as ah, normalizeCommerceProductSelectedOptions as ai, productBelongsToDomain as aj, responseContractCanonicalJson as ak, safeName as al, safePath as am, validateCommercePurposeOutputSchema as an, validateSubset as ao, verifyResponseContract as ap, type CommerceManifest as b, type CommerceToolResult as c, type CommerceFinalResponse as d, type CommercePurposeOutputSchema as e, CommerceProductSchema as f, CommerceToolInputs as g, type CommerceAnswerPresentationSelection as h, CommerceAlternativeSchema as i, CommerceAnswerPresentationSelectionSchema as j, CommerceAssertionSchema as k, CommerceBasketSchema as l, type CommerceCategoryCandidate as m, CommerceCategoryCandidateSchema as n, type CommerceCategoryResolution as o, CommerceCategoryResolutionSchema as p, CommerceConversationGrantSchema as q, type CommerceDiscountCombinationFacts as r, CommerceDiscountCombinationFactsSchema as s, type CommerceDiscountConditionFacts as t, CommerceDiscountConditionFactsSchema as u, type CommerceDiscountDetails as v, CommerceDiscountDetailsSchema as w, CommerceErrorCodeSchema as x, type CommerceEvidence as y, CommerceEvidenceSchema as z };
@@ -1,5 +1,5 @@
1
- import { C as CommerceExecutionPurpose, a as CommerceConversationProductContext, T as ToolDescriptor, G as GrantedTool } from './product-context-Bh74WGOo.js';
2
- import { C as CommerceTurnIdentity, a as CommerceConversationGrant, b as CommerceManifest, c as CommerceToolResult, D as Digest, d as CommerceFinalResponse } from './response-DFDEw4K0.js';
1
+ import { C as CommerceExecutionPurpose, a as CommerceConversationProductContext, T as ToolDescriptor, G as GrantedTool } from './product-context-qfk6k9uk.js';
2
+ import { C as CommerceTurnIdentity, a as CommerceConversationGrant, b as CommerceManifest, c as CommerceToolResult, D as Digest, d as CommerceFinalResponse } from './response-DD6HXT8s.js';
3
3
  import { S as StructuredLogger } from './types-B32wDMLO.js';
4
4
 
5
5
  /** Finite, non-customer-facing failure taxonomy for Commerce hosts and logs. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modainteract/moda-interact-shared",
3
- "version": "5.7.0",
3
+ "version": "5.9.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commerce/selection.ts","../src/commerce/product-context.ts"],"sourcesContent":["import { IdSchema } from \"./primitives\";\nimport {\n type CommerceManifest,\n CommerceManifestSchema,\n type CommerceConversationGrant,\n CommerceConversationGrantSchema,\n} from \"./schemas\";\nimport { GrantedToolsSchema, PublishedToolDescriptorSchema, type GrantedTool, type PublishedGrantedTool, type PublishedToolDescriptor, type CommerceBuiltInToolDescriptor, isBuiltInTool } from \"./definitions\";\nimport { isTrustedCommerceBuiltInDescriptor, isTrustedCommerceBuiltInGrant } from \"./built-in-tools\";\nimport { canonicalJson } from \"./canonical-json\";\nexport type FeatureFacts = {\n id: string;\n active: boolean;\n planMappingEnabled: boolean;\n mode: \"ALWAYS_ENABLED\" | \"MERCHANT_OPT_IN\";\n preferenceEnabled: boolean | null;\n};\nexport function selectCapabilities(\n candidates: Array<{\n key: string;\n featureId: string;\n enabled: boolean;\n position: number;\n }>,\n facts: {\n features: FeatureFacts[];\n },\n) {\n for (const candidate of candidates) {\n IdSchema.parse(candidate.key);\n IdSchema.parse(candidate.featureId);\n if (!Number.isSafeInteger(candidate.position) || candidate.position < 0)\n throw new TypeError(\"Invalid capability position\");\n }\n const selected = candidates\n .filter((c) => {\n if (!c.enabled) return false;\n const f = facts.features.find((f) => f.id === c.featureId);\n return (\n !!f &&\n f.active &&\n f.planMappingEnabled &&\n (f.mode === \"ALWAYS_ENABLED\" || f.preferenceEnabled === true)\n );\n })\n .sort((a, b) => a.position - b.position);\n if (\n new Set(selected.map((c) => c.key)).size !== selected.length ||\n new Set(selected.map((c) => c.position)).size !== selected.length\n )\n throw new TypeError(\"Duplicate release membership\");\n return selected.map((c) => c.key);\n}\nexport function deduplicateTools(\n capabilities: Array<{ key: string; toolDescriptor: PublishedToolDescriptor }>,\n builtInTools: readonly CommerceBuiltInToolDescriptor[] = [],\n): GrantedTool[] {\n const byId = new Map<string, { tool: PublishedGrantedTool; descriptor: string }>();\n const names = new Map<string, string>();\n for (const cap of capabilities) {\n const d = PublishedToolDescriptorSchema.parse(cap.toolDescriptor);\n const previous = byId.get(d.toolId);\n const descriptor = canonicalJson(d);\n if (\n (previous && previous.descriptor !== descriptor) ||\n (names.has(d.name) && names.get(d.name) !== d.toolId)\n )\n throw new TypeError(\"Conflicting tool association\");\n names.set(d.name, d.toolId);\n if (previous)\n previous.tool.capabilityKeys = [\n ...new Set([...previous.tool.capabilityKeys, cap.key]),\n ].sort();\n else\n byId.set(d.toolId, {\n descriptor,\n tool: {\n toolId: d.toolId,\n toolRevisionId: d.toolRevisionId,\n toolName: d.name,\n definitionVersion: d.definitionVersion,\n capabilityKeys: [cap.key],\n },\n });\n }\n if (builtInTools.some(tool => !isTrustedCommerceBuiltInDescriptor(tool)))\n throw new TypeError(\"Untrusted built-in descriptor\");\n return GrantedToolsSchema.parse([\n ...[...byId.values()].map(value => value.tool),\n ...builtInTools.map(tool => ({\n kind: \"BUILT_IN\" as const, toolName: tool.name,\n definitionVersion: tool.definitionVersion,\n })),\n ]).sort((a, b) => a.toolName.localeCompare(b.toolName, \"en\"));\n}\nexport function manifestMatchesGrant(\n manifest: CommerceManifest,\n grant: CommerceConversationGrant,\n) {\n if (!CommerceManifestSchema.safeParse(manifest).success || !CommerceConversationGrantSchema.safeParse(grant).success) return false;\n return (\n manifest.releaseId === grant.releaseId &&\n canonicalJson(manifest.purposeProfile ?? null) === canonicalJson(grant.purposeProfile ?? null) &&\n canonicalJson(manifest.selectedCapabilityKeys) ===\n canonicalJson(grant.selectedCapabilityKeys) &&\n canonicalJson(\n [...manifest.grantedTools].sort((a, b) =>\n a.toolName.localeCompare(b.toolName),\n ),\n ) ===\n canonicalJson(\n [...grant.grantedTools].sort((a, b) =>\n a.toolName.localeCompare(b.toolName),\n ),\n )\n );\n}\nexport const parseCommerceManifest = (raw: unknown) =>\n CommerceManifestSchema.parse(raw);\nexport function currentlyGrantedTools(\n grant: CommerceConversationGrant,\n eligibleCapabilityKeys: ReadonlySet<string>,\n enabledToolIds: ReadonlySet<string>,\n allowedBuiltInTools: readonly CommerceBuiltInToolDescriptor[] = [],\n) {\n return grant.grantedTools.filter(\n (t) =>\n isBuiltInTool(t)\n ? isTrustedCommerceBuiltInGrant(t) && allowedBuiltInTools.some(descriptor =>\n isTrustedCommerceBuiltInDescriptor(descriptor) && descriptor.name === t.toolName &&\n descriptor.definitionVersion === t.definitionVersion)\n : enabledToolIds.has(t.toolId) && t.capabilityKeys.some((k) => eligibleCapabilityKeys.has(k)),\n );\n}\n","import { z } from \"zod\";\nimport { CommerceProductSchema } from \"./schemas.js\";\nconst id = z.string().min(1).max(128);\nconst date = z.iso.datetime({offset:false});\nexport const CommerceConversationProductContextSchema = z.strictObject({schemaVersion:z.literal(1),shopId:id,conversationId:id,platform:z.enum([\"SHOPIFY\",\"WOOCOMMERCE\"]),references:z.array(z.strictObject({productId:id,variantId:id.nullable(),title:z.string().min(1).max(512),observedAt:date})).max(20),updatedAt:date}).superRefine((v,c)=>{\n const valid=(value:string,kind:string)=>v.platform === \"SHOPIFY\" ? new RegExp(`^gid://shopify/${kind}/[1-9][0-9]*$`).test(value) : /^[1-9][0-9]*$/.test(value) && Number.isSafeInteger(Number(value));\n if(v.references.some(r=>!valid(r.productId,\"Product\")||(r.variantId!==null&&!valid(r.variantId,\"ProductVariant\")))||new TextEncoder().encode(JSON.stringify(v)).length>32768)c.addIssue({code:\"custom\",message:\"Invalid product context\"});\n});\nexport type CommerceConversationProductContext = z.infer<typeof CommerceConversationProductContextSchema>;\nexport type CommerceProductObservation = {toolName:string;products:z.infer<typeof CommerceProductSchema>[];observedAt:string};\nexport type CommerceProductContextIdentity = {shopId:string;conversationId:string;platform:\"SHOPIFY\"|\"WOOCOMMERCE\";now:number};\nexport function mergeConversationProductContext(previous:CommerceConversationProductContext|null,observations:readonly CommerceProductObservation[],identity:CommerceProductContextIdentity):CommerceConversationProductContext {\n id.parse(identity.shopId);id.parse(identity.conversationId);z.enum([\"SHOPIFY\",\"WOOCOMMERCE\"]).parse(identity.platform);if(!Number.isFinite(identity.now))throw new Error(\"PRODUCT_CONTEXT_TIME_INVALID\");\n let admitted=false;\n if(previous){previous=CommerceConversationProductContextSchema.parse(previous);if(previous.shopId!==identity.shopId||previous.conversationId!==identity.conversationId||previous.platform!==identity.platform)throw new Error(\"PRODUCT_CONTEXT_IDENTITY_MISMATCH\");}\n const fresh=(time:string)=>Number.isFinite(Date.parse(time))&&Date.parse(time)<=identity.now&&Date.parse(time)>=identity.now-86400000;\n const entries=new Map<string,CommerceConversationProductContext[\"references\"][number]>();\n const add=(r:CommerceConversationProductContext[\"references\"][number])=>{if(!fresh(r.observedAt))return;const key=JSON.stringify([r.productId,r.variantId]);const old=entries.get(key);if(!old||Date.parse(r.observedAt)>=Date.parse(old.observedAt))entries.set(key,r);};\n if(previous&&fresh(previous.updatedAt))previous.references.forEach(add);\n for(const o of observations){if(![\"commerce_search_products\",\"commerce_get_product\"].includes(o.toolName)||!fresh(o.observedAt))continue;for(const raw of o.products){const p=CommerceProductSchema.parse(raw);admitted=true;add({productId:p.productId,variantId:p.variantId,title:p.title,observedAt:o.observedAt});}}\n const references=[...entries.values()].sort((a,b)=>Date.parse(b.observedAt)-Date.parse(a.observedAt)||(a.productId<b.productId?-1:a.productId>b.productId?1:0)||((a.variantId??\"\")<(b.variantId??\"\")?-1:(a.variantId??\"\")>(b.variantId??\"\")?1:0)).slice(0,20);\n const result={schemaVersion:1 as const,shopId:identity.shopId,conversationId:identity.conversationId,platform:identity.platform,references,updatedAt:admitted?new Date(identity.now).toISOString():previous&&fresh(previous.updatedAt)?previous.updatedAt:new Date(identity.now).toISOString()};\n while(references.length&&new TextEncoder().encode(JSON.stringify(result)).length>32768)references.pop();\n return CommerceConversationProductContextSchema.parse(result);\n}\nexport function resolveConversationProductReference(context:CommerceConversationProductContext,reference:{productId?:string;variantId?:string|null;title?:string}):{kind:\"MATCH\";productId:string;variantId:string|null}|{kind:\"AMBIGUOUS\"}|{kind:\"MISSING\"}{\n const parsed=CommerceConversationProductContextSchema.parse(context);\n const matches=parsed.references.filter(r=>(reference.productId!==undefined?r.productId===reference.productId:reference.title!==undefined&&r.title.trim().toLowerCase()===reference.title.trim().toLowerCase())&&(reference.variantId===undefined||r.variantId===reference.variantId));\n const unique=[...new Map(matches.map(r=>[JSON.stringify([r.productId,r.variantId]),r])).values()];return unique.length===1?{kind:\"MATCH\",productId:unique[0]!.productId,variantId:unique[0]!.variantId}:unique.length>1?{kind:\"AMBIGUOUS\"}:{kind:\"MISSING\"};\n}\n"],"mappings":"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","names":["f"]}