@modainteract/moda-interact-shared 4.0.0 → 5.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 +34 -14
- package/dist/{chunk-QG2M5FDO.js → chunk-H7NE3H5R.js} +4 -5
- package/dist/chunk-H7NE3H5R.js.map +1 -0
- package/dist/{chunk-HR7T3UEW.js → chunk-NA76IPIW.js} +59 -75
- package/dist/chunk-NA76IPIW.js.map +1 -0
- package/dist/commerce/index.d.ts +7 -12
- package/dist/commerce/index.js +2 -6
- package/dist/commerce/index.js.map +1 -1
- package/dist/commerce/model/node.d.ts +2 -2
- package/dist/commerce/model/node.js +1 -1
- package/dist/commerce/runner/index.d.ts +3 -3
- package/dist/commerce/runner/index.js +3 -3
- package/dist/commerce/runner/index.js.map +1 -1
- package/dist/{response-rqk1DJFJ.d.ts → response-DUOmPh9C.d.ts} +32 -49
- package/dist/{types-BYjEnygI.d.ts → types-COI4ckJc.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/chunk-HR7T3UEW.js.map +0 -1
- package/dist/chunk-QG2M5FDO.js.map +0 -1
package/README.md
CHANGED
|
@@ -112,8 +112,8 @@ import { runCommerceTurn, type RunnerTool } from
|
|
|
112
112
|
| `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. |
|
|
113
113
|
| `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. |
|
|
114
114
|
| `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. |
|
|
115
|
-
| `CommerceConversationGrantSchema` | Persisted conversation permission snapshot. Background stores the resolved release, selected Capability keys and granted Tools
|
|
116
|
-
| `CommerceTurnIdentitySchema`, `CommerceAssertionSchema` |
|
|
115
|
+
| `CommerceConversationGrantSchema` | Persisted conversation permission snapshot. Background owns it and stores the resolved release, selected Capability keys and granted Tools for reuse on later turns. Empty Capability/Tool selections are valid. |
|
|
116
|
+
| `CommerceTurnIdentitySchema`, `CommerceAssertionSchema` | Background-owned turn identity and resolve/execute assertion shapes. These do not sign or verify JWT signatures; transport/authentication belongs to the services. |
|
|
117
117
|
| `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`. |
|
|
118
118
|
| `deduplicateTools` | Builds the granted-Tool union from one Tool descriptor per selected Capability while retaining deterministic Capability provenance. |
|
|
119
119
|
| `manifestMatchesGrant`, `currentlyGrantedTools` | Compare pinned selection and current availability. Do not replace signature, tenant, lease or persistence checks. |
|
|
@@ -121,6 +121,11 @@ import { runCommerceTurn, type RunnerTool } from
|
|
|
121
121
|
| `CommerceBasketSchema`, `CommerceProductSchema`, `CommerceOfferSchema`, `CommerceEvidenceSchema`, `CommerceAlternativeSchema` | Bounded commerce facts/evidence exchanged between services. Parsing does not prove external facts are true or current. |
|
|
122
122
|
| `CommerceToolResultSchema`, `commerceToolResultSchema` | Standard result envelope; the factory accepts a specific data schema. |
|
|
123
123
|
|
|
124
|
+
Background owns conversation, grant and turn state. MCP receives authenticated
|
|
125
|
+
shop identity and may forward only already accepted opaque adapter context, such
|
|
126
|
+
as `CommerceOutreachToolContextSchema`; it does not interpret that context as
|
|
127
|
+
conversation authority.
|
|
128
|
+
|
|
124
129
|
The direct release contract is Feature/Capability/Tool based. A selected Capability
|
|
125
130
|
contains exactly one `featureId` and one exact `toolDescriptor`; Feature behaviour
|
|
126
131
|
is carried separately and exactly once for each represented Feature. For example:
|
|
@@ -2388,20 +2393,34 @@ Type-only exports:
|
|
|
2388
2393
|
|
|
2389
2394
|
The existing `/commerce` entrypoint exports `CommerceCategoryCandidateSchema`,
|
|
2390
2395
|
`CommerceCategoryResolutionSchema`, `CommerceOptionalLookupUnavailableSchema`,
|
|
2391
|
-
`
|
|
2392
|
-
`CommerceProductRecommendationSelectionSchema`, with matching inferred types.
|
|
2396
|
+
and `CommerceProductRecommendationSelectionSchema`, with matching inferred types.
|
|
2393
2397
|
The product input/output dictionaries include category resolution and flat,
|
|
2394
2398
|
category-aware search. Recommendation selection contains identifiers and quantity,
|
|
2395
2399
|
not model-authored prices or savings; applicability and cross-field relationships
|
|
2396
2400
|
remain service policy.
|
|
2397
2401
|
|
|
2398
|
-
`CommerceBuiltInToolDescriptorSchema`, `CommerceBuiltInToolGrantSchema`,
|
|
2399
|
-
`commerceDiscountBuiltInDescriptors
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2402
|
+
`CommerceBuiltInToolDescriptorSchema`, `CommerceBuiltInToolGrantSchema`, and
|
|
2403
|
+
`commerceDiscountBuiltInDescriptors` define the two code-owned discount reads.
|
|
2404
|
+
Their durable identity is the canonical tool name and `definitionVersion`; the
|
|
2405
|
+
strict descriptor and grant schemas reject extra fields. Reading these exports
|
|
2406
|
+
needs no provider/database configuration.
|
|
2407
|
+
|
|
2408
|
+
The corrected built-in identities are exactly
|
|
2409
|
+
`commerce_get_discount_options@2.0.0` and
|
|
2410
|
+
`commerce_get_discount_details@2.0.0`. Their strict descriptor/grant schemas reject
|
|
2411
|
+
legacy `1.0.0`; the coordinated pre-production Database/consumer migration must
|
|
2412
|
+
finish before corrected consumers run. No legacy version union is supported.
|
|
2413
|
+
|
|
2414
|
+
Only discount offer `startsAt`/`endsAt` and discount condition-facts
|
|
2415
|
+
`observedAt`/`unavailableAt` use the internal Shared-owned UTC validator:
|
|
2416
|
+
`YYYY-MM-DDTHH:mm:ssZ` or `YYYY-MM-DDTHH:mm:ss.<digits>Z`, with one or more
|
|
2417
|
+
fractional digits when the fraction is present. Seconds and uppercase `T`/`Z`
|
|
2418
|
+
are required; Gregorian dates and clock ranges are validated, including leap-year
|
|
2419
|
+
rules. Minute-only times, numeric offsets, leap seconds, invalid calendar dates
|
|
2420
|
+
and surrounding whitespace are rejected. Values are validated without coercion
|
|
2421
|
+
or normalization. Existing nullability and offer start-before-end checks remain.
|
|
2422
|
+
The exported general `DateSchema` and all its non-discount uses are unchanged.
|
|
2423
|
+
This correction is independent of Zod's `z.iso.datetime` implementation.
|
|
2405
2424
|
|
|
2406
2425
|
Grants and runner descriptors now explicitly distinguish published identities
|
|
2407
2426
|
from `kind: "BUILT_IN"`. Built-ins have no fabricated tool/revision IDs or
|
|
@@ -2417,9 +2436,10 @@ inside `status: "OK"`; hard errors, stale turns and required referrals retain
|
|
|
2417
2436
|
their existing semantics. Details permit bounded nullable scalars and depth five;
|
|
2418
2437
|
input depth stays three and details payloads stay at 16KiB.
|
|
2419
2438
|
|
|
2420
|
-
|
|
2421
|
-
and consumer migrations in the separate release task
|
|
2422
|
-
not bump package metadata or publish
|
|
2439
|
+
The timestamp/version correction and prior identity cleanup require a coordinated
|
|
2440
|
+
breaking package publication and consumer migrations in the separate release task
|
|
2441
|
+
(ARCH-058-SHARED-006). This source change does not bump package metadata or publish
|
|
2442
|
+
to a registry.
|
|
2423
2443
|
|
|
2424
2444
|
Run `npm run test:product-discovery-contracts` for the focused contracts/runner
|
|
2425
2445
|
fixtures. To execute the actual Commerce-owned projector/publication integration,
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
isBuiltInTool,
|
|
7
7
|
isTrustedCommerceBuiltInDescriptor,
|
|
8
8
|
isTrustedCommerceBuiltInGrant
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-NA76IPIW.js";
|
|
10
10
|
import {
|
|
11
11
|
IdSchema
|
|
12
12
|
} from "./chunk-QVPEX7KY.js";
|
|
@@ -64,8 +64,7 @@ function deduplicateTools(capabilities, builtInTools = []) {
|
|
|
64
64
|
...builtInTools.map((tool) => ({
|
|
65
65
|
kind: "BUILT_IN",
|
|
66
66
|
toolName: tool.name,
|
|
67
|
-
definitionVersion: tool.definitionVersion
|
|
68
|
-
contractHash: tool.contractHash
|
|
67
|
+
definitionVersion: tool.definitionVersion
|
|
69
68
|
}))
|
|
70
69
|
]).sort((a, b) => a.toolName.localeCompare(b.toolName, "en"));
|
|
71
70
|
}
|
|
@@ -84,7 +83,7 @@ function manifestMatchesGrant(manifest, grant) {
|
|
|
84
83
|
var parseCommerceManifest = (raw) => CommerceManifestSchema.parse(raw);
|
|
85
84
|
function currentlyGrantedTools(grant, eligibleCapabilityKeys, enabledToolIds, allowedBuiltInTools = []) {
|
|
86
85
|
return grant.grantedTools.filter(
|
|
87
|
-
(t) => isBuiltInTool(t) ? isTrustedCommerceBuiltInGrant(t) && allowedBuiltInTools.some((descriptor) => isTrustedCommerceBuiltInDescriptor(descriptor) && descriptor.name === t.toolName && descriptor.definitionVersion === t.definitionVersion
|
|
86
|
+
(t) => isBuiltInTool(t) ? isTrustedCommerceBuiltInGrant(t) && allowedBuiltInTools.some((descriptor) => isTrustedCommerceBuiltInDescriptor(descriptor) && descriptor.name === t.toolName && descriptor.definitionVersion === t.definitionVersion) : enabledToolIds.has(t.toolId) && t.capabilityKeys.some((k) => eligibleCapabilityKeys.has(k))
|
|
88
87
|
);
|
|
89
88
|
}
|
|
90
89
|
|
|
@@ -95,4 +94,4 @@ export {
|
|
|
95
94
|
parseCommerceManifest,
|
|
96
95
|
currentlyGrantedTools
|
|
97
96
|
};
|
|
98
|
-
//# sourceMappingURL=chunk-
|
|
97
|
+
//# sourceMappingURL=chunk-H7NE3H5R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commerce/selection.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.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"],"mappings":"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","names":["f"]}
|
|
@@ -277,14 +277,12 @@ var CommerceBuiltInToolNameSchema = z3.enum([
|
|
|
277
277
|
var CommerceBuiltInToolGrantSchema = z3.strictObject({
|
|
278
278
|
kind: z3.enum(["BUILT_IN"]).meta({ maxLength: 8 }),
|
|
279
279
|
toolName: CommerceBuiltInToolNameSchema,
|
|
280
|
-
definitionVersion: z3.enum(["
|
|
281
|
-
contractHash: HashSchema
|
|
280
|
+
definitionVersion: z3.enum(["2.0.0"]).meta({ maxLength: 5 })
|
|
282
281
|
});
|
|
283
282
|
var CommerceBuiltInToolDescriptorSchema = z3.strictObject({
|
|
284
283
|
kind: z3.enum(["BUILT_IN"]).meta({ maxLength: 8 }),
|
|
285
284
|
name: CommerceBuiltInToolNameSchema,
|
|
286
|
-
definitionVersion: z3.enum(["
|
|
287
|
-
contractHash: HashSchema,
|
|
285
|
+
definitionVersion: z3.enum(["2.0.0"]).meta({ maxLength: 5 }),
|
|
288
286
|
description: z3.string().min(1).max(4096),
|
|
289
287
|
inputSchema: InputSchemaSchema
|
|
290
288
|
});
|
|
@@ -526,11 +524,45 @@ var POLICY_OPERATION_DESCRIPTORS = POLICY_OPERATIONS.map(
|
|
|
526
524
|
);
|
|
527
525
|
|
|
528
526
|
// src/commerce/built-in-tools.ts
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
527
|
+
function immutable(value) {
|
|
528
|
+
for (const child of Object.values(value))
|
|
529
|
+
if (child && typeof child === "object") immutable(child);
|
|
530
|
+
return Object.freeze(value);
|
|
531
|
+
}
|
|
532
|
+
var commerceDiscountBuiltInDescriptors = immutable([
|
|
533
|
+
{
|
|
534
|
+
kind: "BUILT_IN",
|
|
535
|
+
name: "commerce_get_discount_options",
|
|
536
|
+
definitionVersion: "2.0.0",
|
|
537
|
+
description: "Read the current shop's permitted discount options.",
|
|
538
|
+
inputSchema: {
|
|
539
|
+
type: "object",
|
|
540
|
+
properties: {
|
|
541
|
+
limit: { type: "integer", minimum: 1, maximum: 50 },
|
|
542
|
+
cursor: { type: ["string", "null"], maxLength: 2048 }
|
|
543
|
+
},
|
|
544
|
+
additionalProperties: false
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
kind: "BUILT_IN",
|
|
549
|
+
name: "commerce_get_discount_details",
|
|
550
|
+
definitionVersion: "2.0.0",
|
|
551
|
+
description: "Read details for a permitted discount in the current shop.",
|
|
552
|
+
inputSchema: {
|
|
553
|
+
type: "object",
|
|
554
|
+
properties: { offerId: { type: "string", minLength: 1, maxLength: 128 } },
|
|
555
|
+
required: ["offerId"],
|
|
556
|
+
additionalProperties: false
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
]);
|
|
560
|
+
function isTrustedCommerceBuiltInDescriptor(value) {
|
|
561
|
+
return commerceDiscountBuiltInDescriptors.some((expected) => canonicalJson(expected) === canonicalJson(value));
|
|
562
|
+
}
|
|
563
|
+
function isTrustedCommerceBuiltInGrant(value) {
|
|
564
|
+
return commerceDiscountBuiltInDescriptors.some((expected) => value.toolName === expected.name && value.definitionVersion === expected.definitionVersion);
|
|
565
|
+
}
|
|
534
566
|
|
|
535
567
|
// src/commerce/response.ts
|
|
536
568
|
import { z as z4 } from "zod";
|
|
@@ -709,6 +741,8 @@ function finalResponseToolSchema(definition) {
|
|
|
709
741
|
}
|
|
710
742
|
|
|
711
743
|
// src/commerce/schemas.ts
|
|
744
|
+
import { z as z5 } from "zod";
|
|
745
|
+
import { validRange } from "semver";
|
|
712
746
|
var CommerceTurnIdentitySchema = z5.strictObject({
|
|
713
747
|
contractVersion: ContractVersionSchema,
|
|
714
748
|
shopId: IdSchema,
|
|
@@ -798,7 +832,7 @@ var CommerceManifestSchema = z5.strictObject({
|
|
|
798
832
|
});
|
|
799
833
|
}
|
|
800
834
|
if (union.size + v.builtInTools.length !== v.grantedTools.length || !distinct(v.builtInTools.map((tool) => tool.name)) || v.builtInTools.some((tool) => !isTrustedCommerceBuiltInDescriptor(tool)) || v.grantedTools.some((t) => {
|
|
801
|
-
if (isBuiltInTool(t)) return !v.builtInTools.some((descriptor) => descriptor.name === t.toolName && descriptor.definitionVersion === t.definitionVersion &&
|
|
835
|
+
if (isBuiltInTool(t)) return !v.builtInTools.some((descriptor) => descriptor.name === t.toolName && descriptor.definitionVersion === t.definitionVersion && isTrustedCommerceBuiltInGrant(t));
|
|
802
836
|
const expected = union.get(t.toolId)?.tool;
|
|
803
837
|
return !expected || expected.toolRevisionId !== t.toolRevisionId || expected.toolName !== t.toolName || expected.definitionVersion !== t.definitionVersion || JSON.stringify([...new Set(expected.capabilityKeys)].sort()) !== JSON.stringify(t.capabilityKeys);
|
|
804
838
|
}))
|
|
@@ -886,13 +920,23 @@ var CommerceProductSchema = z5.strictObject({
|
|
|
886
920
|
saleEvidence: CommerceProductSaleEvidenceSchema.nullable().optional(),
|
|
887
921
|
observedAt: DateSchema
|
|
888
922
|
});
|
|
923
|
+
var discountUtcPattern = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.[0-9]+)?Z(?![\s\S])/;
|
|
924
|
+
var CommerceDiscountDateTimeSchema = z5.string().regex(discountUtcPattern).refine((value) => {
|
|
925
|
+
const match = discountUtcPattern.exec(value);
|
|
926
|
+
if (!match) return false;
|
|
927
|
+
const [year, month, day, hour, minute, second] = match.slice(1).map(Number);
|
|
928
|
+
if (month < 1 || month > 12 || hour > 23 || minute > 59 || second > 59) return false;
|
|
929
|
+
const leapYear = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
930
|
+
const daysInMonth = [31, leapYear ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
931
|
+
return day >= 1 && day <= daysInMonth[month - 1];
|
|
932
|
+
}, "Expected a valid UTC discount timestamp with seconds");
|
|
889
933
|
var CommerceOfferSchema = z5.strictObject({
|
|
890
934
|
offerId: IdSchema,
|
|
891
935
|
title: z5.string().min(1).max(512),
|
|
892
936
|
method: z5.enum(["AUTOMATIC", "CODE"]),
|
|
893
937
|
code: z5.string().min(1).max(128).nullable(),
|
|
894
|
-
startsAt:
|
|
895
|
-
endsAt:
|
|
938
|
+
startsAt: CommerceDiscountDateTimeSchema.nullable(),
|
|
939
|
+
endsAt: CommerceDiscountDateTimeSchema.nullable(),
|
|
896
940
|
support: z5.enum(["SUPPORTED", "UNSUPPORTED", "UNKNOWN"]),
|
|
897
941
|
reasonCodes: z5.array(z5.string().min(1).max(64)).max(16)
|
|
898
942
|
}).refine(
|
|
@@ -912,9 +956,9 @@ var CommerceDiscountCombinationFactsSchema = z5.strictObject({
|
|
|
912
956
|
var CommerceDiscountConditionFactsSchema = z5.strictObject({
|
|
913
957
|
provider: z5.enum(["SHOPIFY", "WOOCOMMERCE"]),
|
|
914
958
|
completeness: z5.enum(["COMPLETE", "PARTIAL", "UNKNOWN"]),
|
|
915
|
-
observedAt:
|
|
959
|
+
observedAt: CommerceDiscountDateTimeSchema,
|
|
916
960
|
providerStatus: z5.string().max(64),
|
|
917
|
-
unavailableAt:
|
|
961
|
+
unavailableAt: CommerceDiscountDateTimeSchema.nullable(),
|
|
918
962
|
discountKind: z5.enum([
|
|
919
963
|
"PERCENTAGE",
|
|
920
964
|
"FIXED_AMOUNT",
|
|
@@ -1065,12 +1109,6 @@ var CommerceOptionalLookupUnavailableSchema = z5.strictObject({
|
|
|
1065
1109
|
outcome: z5.enum(["UNAVAILABLE"]).meta({ maxLength: 11 }),
|
|
1066
1110
|
reasonCode: z5.enum(["TEMPORARY_UNAVAILABLE"]).meta({ maxLength: 21 })
|
|
1067
1111
|
});
|
|
1068
|
-
var CommerceConversationToolContextSchema = z5.strictObject({
|
|
1069
|
-
purpose: z5.enum(["CONVERSATION"]).meta({ maxLength: 12 }),
|
|
1070
|
-
conversationId: IdSchema,
|
|
1071
|
-
inboundVersion: z5.number().int().positive(),
|
|
1072
|
-
grantId: IdSchema.nullable()
|
|
1073
|
-
});
|
|
1074
1112
|
var CommerceProductRecommendationSelectionSchema = z5.strictObject({
|
|
1075
1113
|
productRecommendationVersion: z5.enum(["1"]).meta({ maxLength: 1 }).optional(),
|
|
1076
1114
|
productRecommendations: z5.array(z5.strictObject({
|
|
@@ -1213,58 +1251,6 @@ function productBelongsToDomain(product, verifiedDomain) {
|
|
|
1213
1251
|
}
|
|
1214
1252
|
}
|
|
1215
1253
|
|
|
1216
|
-
// src/commerce/built-in-tools.ts
|
|
1217
|
-
function immutable(value) {
|
|
1218
|
-
for (const child of Object.values(value))
|
|
1219
|
-
if (child && typeof child === "object") immutable(child);
|
|
1220
|
-
return Object.freeze(value);
|
|
1221
|
-
}
|
|
1222
|
-
var commerceDiscountBuiltInDescriptors = immutable([
|
|
1223
|
-
{
|
|
1224
|
-
kind: "BUILT_IN",
|
|
1225
|
-
name: "commerce_get_discount_options",
|
|
1226
|
-
definitionVersion: "1.0.0",
|
|
1227
|
-
contractHash: "a0a4a88c7920a25a31657a03761b6556419189aeab251261a58e2dfb83a3bdcb",
|
|
1228
|
-
description: "Read the current shop's permitted discount options.",
|
|
1229
|
-
inputSchema: {
|
|
1230
|
-
type: "object",
|
|
1231
|
-
properties: {
|
|
1232
|
-
limit: { type: "integer", minimum: 1, maximum: 50 },
|
|
1233
|
-
cursor: { type: ["string", "null"], maxLength: 2048 }
|
|
1234
|
-
},
|
|
1235
|
-
additionalProperties: false
|
|
1236
|
-
}
|
|
1237
|
-
},
|
|
1238
|
-
{
|
|
1239
|
-
kind: "BUILT_IN",
|
|
1240
|
-
name: "commerce_get_discount_details",
|
|
1241
|
-
definitionVersion: "1.0.0",
|
|
1242
|
-
contractHash: "776f6bc6ac1800c75744c2ffa7357f07a32be2b61309b1d71abf0493a2de316f",
|
|
1243
|
-
description: "Read details for a permitted discount in the current shop.",
|
|
1244
|
-
inputSchema: {
|
|
1245
|
-
type: "object",
|
|
1246
|
-
properties: { offerId: { type: "string", minLength: 1, maxLength: 128 } },
|
|
1247
|
-
required: ["offerId"],
|
|
1248
|
-
additionalProperties: false
|
|
1249
|
-
}
|
|
1250
|
-
}
|
|
1251
|
-
]);
|
|
1252
|
-
function commerceBuiltInToolContractPayload(descriptor) {
|
|
1253
|
-
return canonicalJson({
|
|
1254
|
-
name: descriptor.name,
|
|
1255
|
-
definitionVersion: descriptor.definitionVersion,
|
|
1256
|
-
description: descriptor.description,
|
|
1257
|
-
inputSchema: descriptor.inputSchema,
|
|
1258
|
-
outputSchema: z6.toJSONSchema(CommerceToolOutputs[descriptor.name], { io: "output", unrepresentable: "any" })
|
|
1259
|
-
});
|
|
1260
|
-
}
|
|
1261
|
-
function isTrustedCommerceBuiltInDescriptor(value) {
|
|
1262
|
-
return commerceDiscountBuiltInDescriptors.some((expected) => canonicalJson(expected) === canonicalJson(value));
|
|
1263
|
-
}
|
|
1264
|
-
function isTrustedCommerceBuiltInGrant(value) {
|
|
1265
|
-
return commerceDiscountBuiltInDescriptors.some((expected) => value.toolName === expected.name && value.definitionVersion === expected.definitionVersion && value.contractHash === expected.contractHash);
|
|
1266
|
-
}
|
|
1267
|
-
|
|
1268
1254
|
export {
|
|
1269
1255
|
MONEY_PATTERN,
|
|
1270
1256
|
safeName,
|
|
@@ -1318,7 +1304,6 @@ export {
|
|
|
1318
1304
|
CommerceToolRevisionIdentitySchema,
|
|
1319
1305
|
POLICY_OPERATION_DESCRIPTORS,
|
|
1320
1306
|
commerceDiscountBuiltInDescriptors,
|
|
1321
|
-
commerceBuiltInToolContractPayload,
|
|
1322
1307
|
isTrustedCommerceBuiltInDescriptor,
|
|
1323
1308
|
isTrustedCommerceBuiltInGrant,
|
|
1324
1309
|
CommerceResponseContractSchema,
|
|
@@ -1351,7 +1336,6 @@ export {
|
|
|
1351
1336
|
CommerceCategoryCandidateSchema,
|
|
1352
1337
|
CommerceCategoryResolutionSchema,
|
|
1353
1338
|
CommerceOptionalLookupUnavailableSchema,
|
|
1354
|
-
CommerceConversationToolContextSchema,
|
|
1355
1339
|
CommerceProductRecommendationSelectionSchema,
|
|
1356
1340
|
CommerceResponseDispositionSchema,
|
|
1357
1341
|
CommerceAnswerPresentationSelectionSchema,
|
|
@@ -1361,4 +1345,4 @@ export {
|
|
|
1361
1345
|
CommerceToolOutputs,
|
|
1362
1346
|
productBelongsToDomain
|
|
1363
1347
|
};
|
|
1364
|
-
//# sourceMappingURL=chunk-
|
|
1348
|
+
//# sourceMappingURL=chunk-NA76IPIW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commerce/subset.ts","../src/commerce/external.ts","../src/commerce/definitions.ts","../src/commerce/definition-size.ts","../src/commerce/built-in-tools.ts","../src/commerce/response.ts","../src/commerce/schemas.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { canonicalJson, jsonBytes } from \"./canonical-json\";\nexport type Json =\n null | boolean | number | string | Json[] | { [key: string]: Json };\nexport type SubsetSchema = {\n type: string | [string, \"null\"];\n description?: string;\n properties?: Record<string, SubsetSchema>;\n required?: string[];\n additionalProperties?: false;\n items?: SubsetSchema;\n enum?: Array<string | number | boolean | null>;\n minLength?: number;\n maxLength?: number;\n minimum?: number;\n maximum?: number;\n minItems?: number;\n maxItems?: number;\n pattern?: string;\n};\nexport const MONEY_PATTERN = \"^[0-9]{1,18}(\\\\.[0-9]{1,6})?$\";\nexport const safeName = (name: string) =>\n /^[A-Za-z][A-Za-z0-9_]{0,63}$/.test(name) &&\n ![\"__proto__\", \"prototype\", \"constructor\"].includes(name);\nexport const safePath = (path: string) =>\n path.length <= 256 && path.split(\".\").every(safeName);\nconst keywords = [\n \"type\",\n \"description\",\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"items\",\n \"enum\",\n \"minLength\",\n \"maxLength\",\n \"minimum\",\n \"maximum\",\n \"minItems\",\n \"maxItems\",\n];\nexport function validateSubset(\n value: unknown,\n mode: \"input\" | \"details\",\n): value is SubsetSchema {\n let propertyCount = 0;\n const maxDepth = mode === \"input\" ? 3 : 5;\n function walk(raw: unknown, depth: number): boolean {\n if (\n depth > maxDepth ||\n !raw ||\n typeof raw !== \"object\" ||\n Array.isArray(raw)\n )\n return false;\n const s = raw as SubsetSchema;\n if (\n Object.keys(s).some(\n (k) => !keywords.includes(k) && !(mode === \"input\" && k === \"pattern\"),\n )\n )\n return false;\n const nullable = Array.isArray(s.type);\n if (\n nullable &&\n (s.type.length !== 2 || s.type[1] !== \"null\" ||\n (mode === \"details\" && [\"object\", \"array\"].includes(s.type[0])))\n )\n return false;\n const type = typeof s.type === \"string\" ? s.type : s.type[0];\n if (\n ![\n \"object\",\n \"string\",\n \"integer\",\n \"boolean\",\n \"array\",\n ...(mode === \"details\" ? [\"number\"] : []),\n ].includes(type)\n )\n return false;\n if (\n s.description !== undefined &&\n (typeof s.description !== \"string\" || s.description.length > 1000)\n )\n return false;\n const specific: Record<string, string[]> = {\n object: [\"properties\", \"required\", \"additionalProperties\"],\n array: [\"items\", \"minItems\", \"maxItems\"],\n string: [\"minLength\", \"maxLength\", \"pattern\"],\n integer: [\"minimum\", \"maximum\"],\n number: [\"minimum\", \"maximum\"],\n boolean: [],\n };\n if (\n Object.keys(s).some(\n (k) =>\n ![\"type\", \"description\", \"enum\"].includes(k) &&\n !specific[type].includes(k),\n )\n )\n return false;\n if (\n s.enum !== undefined &&\n (!Array.isArray(s.enum) ||\n s.enum.length < 1 ||\n s.enum.length > (mode === \"input\" ? 32 : 20) ||\n new Set(s.enum.map((v) => canonicalJson(v))).size !== s.enum.length ||\n s.enum.some((v) =>\n v === null\n ? !nullable\n : typeof v !== (type === \"integer\" ? \"number\" : type) ||\n (type === \"integer\" && !Number.isSafeInteger(v)) ||\n typeof v === \"object\",\n ))\n )\n return false;\n for (const [lo, hi] of [\n [\"minLength\", \"maxLength\"],\n [\"minItems\", \"maxItems\"],\n [\"minimum\", \"maximum\"],\n ] as const) {\n if (\n s[lo] !== undefined &&\n (typeof s[lo] !== \"number\" || !Number.isFinite(s[lo]))\n )\n return false;\n if (\n s[hi] !== undefined &&\n (typeof s[hi] !== \"number\" || !Number.isFinite(s[hi]))\n )\n return false;\n if (\n lo !== \"minimum\" &&\n [s[lo], s[hi]].some(\n (v) => v !== undefined && (!Number.isSafeInteger(v) || v < 0),\n )\n )\n return false;\n if (s[lo] !== undefined && s[hi] !== undefined && s[lo]! > s[hi]!)\n return false;\n }\n if (type === \"string\")\n return (\n s.maxLength !== undefined &&\n s.maxLength <= 4096 &&\n (s.pattern === undefined || s.pattern === MONEY_PATTERN)\n );\n if (type === \"array\")\n return (\n s.maxItems !== undefined &&\n s.maxItems <= (mode === \"input\" ? 100 : 20) &&\n walk(s.items, depth + 1)\n );\n if (type === \"object\") {\n if (\n s.additionalProperties !== false ||\n !s.properties ||\n typeof s.properties !== \"object\" ||\n Array.isArray(s.properties)\n )\n return false;\n const names = Object.keys(s.properties);\n propertyCount += names.length;\n if (\n propertyCount > 32 ||\n names.some((n) => !safeName(n)) ||\n (s.required !== undefined &&\n (!Array.isArray(s.required) ||\n new Set(s.required).size !== s.required.length ||\n s.required.some((n) => !names.includes(n))))\n )\n return false;\n return Object.values(s.properties).every((child) =>\n walk(child, depth + 1),\n );\n }\n return true;\n }\n try {\n return (\n jsonBytes(value) <= 32768 &&\n walk(value, 1) &&\n (value as SubsetSchema).type === \"object\"\n );\n } catch {\n return false;\n }\n}\nexport const InputSchemaSchema = z.custom<SubsetSchema>((v) =>\n validateSubset(v, \"input\"),\n);\nexport const DetailsSchemaSchema = z.custom<SubsetSchema>((v) =>\n validateSubset(v, \"details\"),\n);\nexport function matchesSubset(schema: SubsetSchema, value: unknown): boolean {\n const nullable = Array.isArray(schema.type);\n const type = typeof schema.type === \"string\" ? schema.type : schema.type[0];\n if (value === null)\n return nullable && (!schema.enum || schema.enum.includes(null));\n if (schema.enum && !schema.enum.includes(value as never)) return false;\n if (type === \"string\")\n return (\n typeof value === \"string\" &&\n value.length >= (schema.minLength ?? 0) &&\n value.length <= schema.maxLength! &&\n (!schema.pattern || new RegExp(schema.pattern).test(value))\n );\n if (type === \"boolean\") return typeof value === \"boolean\";\n if (type === \"integer\" || type === \"number\")\n return (\n typeof value === \"number\" &&\n Number.isFinite(value) &&\n (type !== \"integer\" || Number.isSafeInteger(value)) &&\n value >= (schema.minimum ?? -Infinity) &&\n value <= (schema.maximum ?? Infinity)\n );\n if (type === \"array\")\n return (\n Array.isArray(value) &&\n value.length >= (schema.minItems ?? 0) &&\n value.length <= schema.maxItems! &&\n value.every((v) => matchesSubset(schema.items!, v))\n );\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const obj = value as Record<string, unknown>;\n return (\n Object.keys(obj).every((k) => Object.hasOwn(schema.properties!, k)) &&\n (schema.required ?? []).every((k) => Object.hasOwn(obj, k)) &&\n Object.entries(obj).every(([k, v]) =>\n matchesSubset(schema.properties![k], v),\n )\n );\n}\nexport function compileSubset(schema: SubsetSchema, mode: \"input\" | \"details\") {\n if (!validateSubset(schema, mode)) throw new TypeError(\"Unsupported schema\");\n return z.custom<Record<string, Json>>((value) => {\n try {\n return (\n jsonBytes(value) <= (mode === \"details\" ? 16384 : 131072) &&\n matchesSubset(schema, value)\n );\n } catch {\n return false;\n }\n });\n}\n","import { z } from \"zod\";\nimport { DateSchema, IdSchema } from \"./primitives\";\nimport { safeName, safePath } from \"./subset\";\nimport { jsonBytes } from \"./canonical-json\";\n\nconst utf8 = (value: string, maximum: number) => new TextEncoder().encode(value).length <= maximum;\nconst scalar = z.union([z.string().refine((value) => utf8(value, 2048)), z.number().finite(), z.boolean()]);\nexport const ExternalQueryValueSchema = scalar;\nconst scalarOrNull = z.union([scalar, z.null()]);\nconst record = <T extends z.ZodTypeAny>(item: T, max: number) => z.record(z.string().refine(safeName), item).refine((value) => Object.keys(value).length <= max);\n\nexport const ExternalQueryMappingSchema = z.union([\n z.strictObject({ input: z.string().refine(safeName), omitIfMissing: z.literal(true).optional() }),\n z.strictObject({ literal: scalar }),\n]);\nexport const ExternalQueryMappingsSchema = record(ExternalQueryMappingSchema, 32).superRefine((value, ctx) => {\n const reserved = /^(authorization|cookie|set-cookie|host|x-api-key|api_key|apikey|access_token|token|secret|password)$/i;\n for (const key of Object.keys(value)) if (reserved.test(key)) ctx.addIssue({ code: \"custom\", path: [key], message: \"Reserved query key\" });\n});\nexport const ExternalPathSchema = z.string().max(1024).refine((value) =>\n utf8(value, 1024) && /^\\/(?:[A-Za-z0-9._~-]+\\/)*[A-Za-z0-9._~-]*\\/?$/.test(value) &&\n !value.includes(\"//\") && !value.includes(\"%\") && !value.includes(\"\\\\\") &&\n !value.includes(\"?\") && !value.includes(\"#\") && !value.includes(\"{\") && !value.includes(\"}\") &&\n value.split(\"/\").every((segment) => segment !== \".\" && segment !== \"..\"),\n);\nconst mediaType = z.string().min(1).max(128).refine((value) => value === value.toLowerCase() && /^[a-z0-9!#$&^_.+-]+\\/[a-z0-9!#$&^_.+-]+$/.test(value));\nconst jsonMime = (value: string) => value === \"application/json\" || /^application\\/[a-z0-9!#$&^_.+-]+\\+json$/.test(value);\nconst textMime = (value: string) => /^text\\/[a-z0-9!#$&^_.+-]+$/.test(value) || value === \"application/xml\" || /^application\\/[a-z0-9!#$&^_.+-]+\\+xml$/.test(value) || jsonMime(value);\nexport const ExternalResponseFormatSchema = z.strictObject({ mode: z.enum([\"JSON\", \"TEXT\"]), mediaTypes: z.array(mediaType).min(1).max(8).refine((values) => new Set(values).size === values.length) }).refine((value) => value.mediaTypes.every(value.mode === \"JSON\" ? jsonMime : textMime));\nexport const FieldProjectionSchema = record(z.strictObject({ path: z.string().refine(safePath), omitIfMissing: z.literal(true).optional() }), 32).refine((value) => Object.keys(value).length >= 1);\nexport const ResponseFilterSchema = z.discriminatedUnion(\"op\", [\n z.strictObject({ path: z.string().refine(safePath), op: z.enum([\"EQ\", \"NE\", \"GT\", \"GTE\", \"LT\", \"LTE\", \"CONTAINS\", \"STARTS_WITH\"]), value: scalarOrNull }),\n z.strictObject({ path: z.string().refine(safePath), op: z.literal(\"IN\"), values: z.array(scalarOrNull).min(1).max(20) }),\n]);\nconst visualObject = z.strictObject({ kind: z.literal(\"OBJECT\"), fields: FieldProjectionSchema });\nconst visualList = z.strictObject({ kind: z.literal(\"LIST\"), fields: FieldProjectionSchema, filters: z.array(ResponseFilterSchema).max(8), sort: z.union([z.null(), z.strictObject({ path: z.string().refine(safePath), direction: z.enum([\"ASC\", \"DESC\"]) })]), limit: z.int().min(1).max(20) });\nexport const VisualResponseProcessingSchema = z.union([visualObject, visualList]);\nexport const ResponseProcessingSchema = z.union([VisualResponseProcessingSchema, z.strictObject({ kind: z.literal(\"JAVASCRIPT\"), runtimeVersion: z.literal(\"quickjs-sync.v1\"), source: z.string().min(1).refine((value) => utf8(value, 16384)) })]);\nexport const TransformResponseSchema = z.strictObject({ status: z.int().min(200).max(299), contentType: z.string().min(1).max(128), bodyText: z.string().refine((value) => utf8(value, 262144)), json: z.union([z.null(), z.json()]) });\nexport const TransformSampleSchema = z.strictObject({ status: z.int().min(200).max(299), contentType: z.string().min(1).max(128), bodyText: z.string().refine((value) => utf8(value, 262144)) }).refine((value) => jsonBytes(value) <= 524288);\nconst boundedValues = z.custom<Record<string, unknown>>((value) => {\n const visit = (node: unknown, depth: number): boolean =>\n depth <= 20 && (node === null || typeof node === \"string\" || typeof node === \"boolean\" || (typeof node === \"number\" && Number.isFinite(node)) ||\n (Array.isArray(node) && node.every((child) => visit(child, depth + 1))) ||\n (!!node && typeof node === \"object\" && !Array.isArray(node) && Object.getPrototypeOf(node) === Object.prototype && Object.entries(node).every(([key, child]) => ![\"__proto__\", \"prototype\", \"constructor\"].includes(key) && visit(child, depth + 1))));\n try { return !!value && typeof value === \"object\" && !Array.isArray(value) && visit(value, 1) && jsonBytes(value) <= 49152; } catch { return false; }\n});\nexport const ExternalHttpResultDataSchema = z.strictObject({ source: z.literal(\"EXTERNAL_HTTP\"), connectionRevisionId: IdSchema, observedAt: DateSchema, values: boundedValues });\nexport const ConnectionRevisionViewSchema = z.strictObject({ id: IdSchema, connectionId: IdSchema, revisionNumber: z.int().positive(), origin: z.string().min(1).max(2048), scope: z.enum([\"PLATFORM\", \"PER_SHOP\"]), authMode: z.enum([\"NONE\", \"BEARER\", \"API_KEY\"]), authHeader: z.string().min(1).max(128).nullable(), documentation: z.string().max(16000), createdAt: z.iso.datetime({ offset: false }) });\nexport const ConnectionViewSchema = z.strictObject({ id: IdSchema, key: z.string().regex(/^[a-z][a-z0-9_]{0,127}$/), displayName: z.string().min(1).max(255), description: z.string().max(4096), enabled: z.boolean(), editVersion: z.int().positive(), revisions: z.array(ConnectionRevisionViewSchema) });\nexport const CredentialStatusSchema = z.strictObject({ connectionRevisionId: IdSchema, shopId: IdSchema.nullable(), configured: z.boolean(), editVersion: z.int().positive().nullable(), updatedAt: z.iso.datetime({ offset: false }).nullable() });\nexport const ConnectionCommandSchema = z.strictObject({ operationId: IdSchema, reason: z.string().trim().min(1).max(1000) });\nexport const RevisionInputSchema = z.strictObject({ origin: z.string().min(1).max(2048), scope: z.enum([\"PLATFORM\", \"PER_SHOP\"]), authMode: z.enum([\"NONE\", \"BEARER\", \"API_KEY\"]), authHeader: z.string().min(1).max(128).nullable(), documentation: z.string().max(16000) });\nexport const ConnectionIssueSchema = z.strictObject({ path: z.string().max(256), message: z.string().min(1).max(512) });\nexport const ConnectionResultSchema = <T extends z.ZodType>(value: T) => z.discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"ok\"), value }),\n z.strictObject({ kind: z.literal(\"not-found\") }),\n z.strictObject({ kind: z.literal(\"forbidden\") }),\n z.strictObject({ kind: z.literal(\"unavailable\") }),\n z.strictObject({ kind: z.literal(\"invalid\"), issues: z.array(ConnectionIssueSchema).max(32) }),\n z.strictObject({ kind: z.literal(\"conflict\"), code: z.enum([\"STALE_CAS\", \"CONFLICTING_REPLAY\"]) }),\n]);\nexport type ExternalResponseFormat = z.infer<typeof ExternalResponseFormatSchema>;\nexport type FieldProjection = z.infer<typeof FieldProjectionSchema>;\nexport type ResponseFilter = z.infer<typeof ResponseFilterSchema>;\nexport type VisualResponseProcessing = z.infer<typeof VisualResponseProcessingSchema>;\nexport type ResponseProcessing = z.infer<typeof ResponseProcessingSchema>;\nexport type TransformResponse = z.infer<typeof TransformResponseSchema>;\nexport type TransformSample = z.infer<typeof TransformSampleSchema>;\nexport type ExternalHttpResultData = z.infer<typeof ExternalHttpResultDataSchema>;\nexport type ConnectionRevisionView = z.infer<typeof ConnectionRevisionViewSchema>;\nexport type ConnectionView = z.infer<typeof ConnectionViewSchema>;\nexport type CredentialStatus = z.infer<typeof CredentialStatusSchema>;\nexport type ConnectionCommand = z.infer<typeof ConnectionCommandSchema>;\nexport type RevisionInput = z.infer<typeof RevisionInputSchema>;\nexport type ConnectionResult<T> =\n | { kind: \"ok\"; value: T }\n | { kind: \"not-found\" | \"forbidden\" | \"unavailable\" }\n | { kind: \"invalid\"; issues: Array<z.infer<typeof ConnectionIssueSchema>> }\n | { kind: \"conflict\"; code: \"STALE_CAS\" | \"CONFLICTING_REPLAY\" };\nexport type VisualResponseProcessorInput = { source: unknown; processing: VisualResponseProcessing; limits: { maxResults: number; deadlineAt: number }; signal: AbortSignal };\nexport type VisualResponseProcessorResult = { ok: true; values: Record<string, unknown> } | { ok: false; code: \"INVALID_RESPONSE\" | \"DEADLINE\" | \"CANCELLED\" };\nexport type CodeResponseProcessorInput = { response: TransformResponse; processing: Extract<ResponseProcessing, { kind: \"JAVASCRIPT\" }>; limits: { maxResults: number; deadlineAt: number }; signal: AbortSignal };\nexport type CodeResponseProcessorResult = { ok: true; values: Record<string, unknown> } | { ok: false; code: \"INVALID_RESPONSE\" | \"DEADLINE\" | \"CANCELLED\" | \"THROTTLED\"; diagnostic?: { code: \"SYNTAX_ERROR\" | \"EXECUTION_ERROR\" | \"INVALID_OUTPUT\" | \"RESOURCE_LIMIT\" | \"RUNTIME_UNAVAILABLE\"; line: number | null; column: number | null } };\n","import { z } from \"zod\";\nimport { gt } from \"semver\";\nimport {\n boundedJson,\n ContractVersionSchema,\n IdSchema,\n SemverSchema,\n HashSchema,\n distinct,\n} from \"./primitives\";\nimport {\n InputSchemaSchema,\n DetailsSchemaSchema,\n safeName,\n safePath,\n type SubsetSchema,\n compileSubset,\n} from \"./subset\";\nimport { canonicalJson } from \"./canonical-json\";\nimport {\n definitionFitsStorage,\n DEFINITION_SIZE_MESSAGE,\n} from \"./definition-size\";\nimport {\n ExternalPathSchema,\n ExternalQueryMappingsSchema,\n ExternalQueryValueSchema,\n ExternalResponseFormatSchema,\n ResponseProcessingSchema,\n} from \"./external\";\nexport const ToolNameSchema = z\n .string()\n .regex(/^[a-z][a-z0-9_]{0,127}$/)\n .refine((n) => n !== \"finalResponse\");\nexport const PublishedGrantedToolSchema = z.strictObject({\n toolId: IdSchema,\n toolRevisionId: IdSchema,\n toolName: ToolNameSchema,\n definitionVersion: SemverSchema,\n capabilityKeys: z\n .array(IdSchema)\n .min(1)\n .max(32)\n .refine((v) => distinct(v) && v.join(\"\\0\") === [...v].sort().join(\"\\0\")),\n});\nexport const PublishedToolDescriptorSchema = z.strictObject({\n toolId: IdSchema,\n toolRevisionId: IdSchema,\n name: ToolNameSchema,\n definitionVersion: SemverSchema,\n description: z.string().min(1).max(4096),\n inputSchema: InputSchemaSchema,\n});\nexport const CommerceBuiltInToolNameSchema = z.enum([\n \"commerce_get_discount_options\", \"commerce_get_discount_details\",\n]).meta({maxLength: 29});\nexport const CommerceBuiltInToolGrantSchema = z.strictObject({\n kind: z.enum([\"BUILT_IN\"]).meta({maxLength: 8}),\n toolName: CommerceBuiltInToolNameSchema,\n definitionVersion: z.enum([\"2.0.0\"]).meta({maxLength: 5}),\n});\nexport const CommerceBuiltInToolDescriptorSchema = z.strictObject({\n kind: z.enum([\"BUILT_IN\"]).meta({maxLength: 8}),\n name: CommerceBuiltInToolNameSchema,\n definitionVersion: z.enum([\"2.0.0\"]).meta({maxLength: 5}),\n description: z.string().min(1).max(4096),\n inputSchema: InputSchemaSchema,\n});\nexport type PublishedGrantedTool = z.infer<typeof PublishedGrantedToolSchema>;\nexport type PublishedToolDescriptor = z.infer<typeof PublishedToolDescriptorSchema>;\nexport type CommerceBuiltInToolGrant = z.infer<typeof CommerceBuiltInToolGrantSchema>;\nexport type CommerceBuiltInToolDescriptor = z.infer<typeof CommerceBuiltInToolDescriptorSchema>;\nexport const GrantedToolSchema = z.union([PublishedGrantedToolSchema, CommerceBuiltInToolGrantSchema]);\nexport const ToolDescriptorSchema = z.union([PublishedToolDescriptorSchema, CommerceBuiltInToolDescriptorSchema]);\nexport const GrantedToolsSchema = z.array(GrantedToolSchema).max(32).refine(values => {\n const published = values.filter((value): value is PublishedGrantedTool => !(\"kind\" in value));\n return distinct(values.map(value => value.toolName)) && distinct(published.map(value => value.toolId));\n});\nexport const isBuiltInTool = <T extends GrantedTool | ToolDescriptor>(\n value: T,\n): value is Extract<T, {kind: \"BUILT_IN\"}> => \"kind\" in value && value.kind === \"BUILT_IN\";\n\nconst MappingSchema = z.union([\n z.strictObject({\n input: z.string().refine(safeName),\n omitIfMissing: z.literal(true).optional(),\n }),\n z.strictObject({ literal: boundedJson(8192) }),\n]);\nconst MappingsSchema = z\n .record(z.string().refine(safeName), MappingSchema)\n .refine((v) => Object.keys(v).length <= 32);\nexport const POLICY_OPERATIONS = [\n \"taxonomy.resolveCategories\",\n \"products.search\",\n \"products.get\",\n \"shipping.getInformation\",\n \"recovery.getBasket\",\n \"shopify.searchProducts\",\n \"discounts.getOptions\",\n \"discounts.evaluate\",\n \"products.findQualifying\",\n \"products.findSimilar\",\n] as const;\nexport const ExternalHttpExecutionSchema = z\n .strictObject({\n kind: z.literal(\"EXTERNAL_HTTP\"),\n executorVersion: z.literal(\"1.0.0\"),\n connectionRevisionId: IdSchema,\n method: z.literal(\"GET\"),\n path: ExternalPathSchema,\n query: ExternalQueryMappingsSchema,\n responseFormat: ExternalResponseFormatSchema,\n resultPath: z.string().refine((value) => value === \"\" || safePath(value)),\n responseProcessing: ResponseProcessingSchema,\n resultSchema: DetailsSchemaSchema,\n })\n .superRefine((value, ctx) => {\n if (value.responseProcessing.kind === \"JAVASCRIPT\" && value.resultPath !== \"\")\n ctx.addIssue({ code: \"custom\", path: [\"resultPath\"], message: \"JAVASCRIPT processing requires an empty resultPath\" });\n if (value.responseProcessing.kind !== \"JAVASCRIPT\" && value.responseFormat.mode !== \"JSON\")\n ctx.addIssue({ code: \"custom\", path: [\"responseFormat\", \"mode\"], message: \"Visual processing requires JSON\" });\n });\nexport const CommerceExecutionSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({\n kind: z.literal(\"SHOPIFY_STOREFRONT_QUERY\"),\n executorVersion: z.literal(\"1.0.0\"),\n apiVersion: z.literal(\"2026-07\"),\n schemaHash: HashSchema,\n document: z\n .string()\n .min(1)\n .refine((v) => new TextEncoder().encode(v).length <= 16384),\n operationName: z.string().refine(safeName),\n variables: MappingsSchema,\n resultPath: z.string().refine(safePath),\n }),\n z.strictObject({\n kind: z.literal(\"POLICY_OPERATION\"),\n operation: z.enum(POLICY_OPERATIONS),\n operationVersion: z.literal(\"1.0.0\"),\n arguments: MappingsSchema,\n }),\n ExternalHttpExecutionSchema,\n]);\nexport type ExternalHttpExecution = Extract<\n z.infer<typeof CommerceExecutionSchema>,\n { kind: \"EXTERNAL_HTTP\" }\n>;\nfunction tokensValid(text: string, root: \"result\" | \"item\") {\n if (/[<>]/.test(text)) return false;\n const residue = text.replace(/\\{\\{([^{}]+)\\}\\}/g, (_all, path: string) =>\n path.startsWith(root + \".\") && safePath(path.slice(root.length + 1))\n ? \"\"\n : \"{{invalid}}\",\n );\n return !residue.includes(\"{{\") && !residue.includes(\"}}\");\n}\nconst fixed = z\n .string()\n .max(4096)\n .refine((v) => !/[<>]|\\{\\{|\\}\\}/.test(v));\nexport const ResponseTemplateSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({\n kind: z.literal(\"text\"),\n text: z\n .string()\n .max(4096)\n .refine((v) => tokensValid(v, \"result\")),\n unavailable: fixed,\n }),\n z.strictObject({\n kind: z.literal(\"items\"),\n itemsPath: z.string().refine(safePath),\n item: z\n .string()\n .max(4096)\n .refine((v) => tokensValid(v, \"item\")),\n empty: fixed,\n unavailable: fixed,\n }),\n]);\nconst identity = {\n name: ToolNameSchema,\n definitionVersion: SemverSchema,\n description: z.string().min(1).max(4096),\n};\nconst forbiddenInput =\n /^(shopid|customerid|checkoutrecoveryid|conversationid|grantid|releaseid|token|accesstoken|domain|headers|url|graphql|document|authorization)$/i;\nconst forbiddenExternalInput = /^(authorization|cookie|set-cookie|host|x-api-key|api_key|apikey|access_token|token|secret|password)$/i;\nexport const CommerceToolDefinitionSchema = z\n .strictObject({\n ...identity,\n inputSchema: InputSchemaSchema,\n execution: CommerceExecutionSchema,\n responseTemplate: ResponseTemplateSchema,\n })\n .refine(definitionFitsStorage, { message: DEFINITION_SIZE_MESSAGE })\n .superRefine((d, ctx) => {\n const properties = d.inputSchema.properties!;\n const containsAuthority = (schema: SubsetSchema): boolean =>\n Object.entries(schema.properties ?? {}).some(\n ([name, child]) =>\n forbiddenInput.test(name) || containsAuthority(child),\n ) || !!(schema.items && containsAuthority(schema.items));\n if (containsAuthority(d.inputSchema))\n ctx.addIssue({\n code: \"custom\",\n message: \"Authority/credential inputs are forbidden\",\n });\n const mapping =\n d.execution.kind === \"POLICY_OPERATION\"\n ? d.execution.arguments\n : d.execution.kind === \"SHOPIFY_STOREFRONT_QUERY\"\n ? d.execution.variables\n : d.execution.query;\n for (const [name, m] of Object.entries(mapping))\n if (\"input\" in m && !Object.hasOwn(properties, m.input))\n ctx.addIssue({\n code: \"custom\",\n path: [\"execution\", name],\n message: \"Unknown mapped input\",\n });\n if (d.execution.kind === \"EXTERNAL_HTTP\")\n for (const [name, mapping] of Object.entries(d.execution.query))\n if (\"input\" in mapping) {\n const target = properties[mapping.input];\n const type = target && (Array.isArray(target.type) ? target.type[0] : target.type);\n if (forbiddenExternalInput.test(mapping.input) || ![\"string\", \"integer\", \"boolean\"].includes(type ?? \"\"))\n ctx.addIssue({ code: \"custom\", path: [\"execution\", \"query\", name], message: \"External mappings require a top-level scalar input\" });\n }\n });\nconst draftObject = boundedJson(65536).refine(\n (v) => !!v && typeof v === \"object\" && !Array.isArray(v),\n);\nexport const CommerceToolDraftDefinitionSchema = z\n .strictObject({\n ...identity,\n inputSchema: draftObject,\n execution: draftObject,\n responseTemplate: draftObject,\n })\n .refine(definitionFitsStorage, { message: DEFINITION_SIZE_MESSAGE });\nexport type CommerceToolDefinition = z.infer<\n typeof CommerceToolDefinitionSchema\n>;\nexport type CommerceToolDraftDefinition = z.infer<\n typeof CommerceToolDraftDefinitionSchema\n>;\nexport type GrantedTool = z.infer<typeof GrantedToolSchema>;\nexport type ToolDescriptor = z.infer<typeof ToolDescriptorSchema>;\n/** Commerce owns schema-backed GraphQL parsing, restrictions and output derivation. */\nexport interface CommerceDefinitionCompiler {\n compile(\n execution: CommerceToolDefinition[\"execution\"],\n input: SubsetSchema,\n ): {\n outputSchema: SubsetSchema;\n validateMappedArguments: (\n mapping: CommerceToolDefinition[\"execution\"],\n ) => boolean;\n };\n}\nfunction externalOutputSchema(execution: ExternalHttpExecution): SubsetSchema {\n return {\n type: \"object\",\n properties: { values: execution.resultSchema },\n required: [\"values\"],\n additionalProperties: false,\n };\n}\nfunction scalarSchema(schema: SubsetSchema | undefined) {\n const type = schema && (Array.isArray(schema.type) ? schema.type[0] : schema.type);\n return !!schema && [\"string\", \"integer\", \"number\", \"boolean\"].includes(type ?? \"\");\n}\nfunction visualPublicationCompatible(execution: ExternalHttpExecution) {\n if (execution.responseProcessing.kind === \"JAVASCRIPT\") return true;\n const processing = execution.responseProcessing;\n const schema = execution.resultSchema;\n if (processing.kind === \"LIST\") {\n const items = schema.properties?.items;\n if (!items || items.type !== \"array\" || !(schema.required ?? []).includes(\"items\")) return false;\n if (Object.keys(schema.properties ?? {}).some((name) => name !== \"items\")) return false;\n if (items.minItems !== undefined && items.minItems > 0) return false;\n if (items.maxItems !== undefined && items.maxItems < processing.limit) return false;\n }\n const output = processing.kind === \"OBJECT\"\n ? schema\n : schema.properties?.items?.items;\n if (!output || output.type !== \"object\" || !output.properties || output.additionalProperties !== false) return false;\n const fields = processing.fields;\n if (Object.keys(output.properties).some((name) => !Object.hasOwn(fields, name) || !scalarSchema(output.properties![name]))) return false;\n if (Object.keys(fields).some((name) => !Object.hasOwn(output.properties!, name))) return false;\n return (output.required ?? []).every((name) => !fields[name]?.omitIfMissing);\n}\nfunction at(schema: SubsetSchema, path: string) {\n let current: SubsetSchema | undefined = schema;\n for (const part of path.split(\".\")) current = current?.properties?.[part];\n return current;\n}\nexport function validateDefinitionForPublication(\n raw: unknown,\n compiler: CommerceDefinitionCompiler,\n) {\n const definition = CommerceToolDefinitionSchema.parse(raw);\n if (definition.execution.kind === \"EXTERNAL_HTTP\" && !visualPublicationCompatible(definition.execution))\n throw new TypeError(\"External visual projection is incompatible with resultSchema\");\n const compiled =\n definition.execution.kind === \"EXTERNAL_HTTP\"\n ? { outputSchema: externalOutputSchema(definition.execution), validateMappedArguments: () => true }\n : compiler.compile(definition.execution, definition.inputSchema);\n if (!compiled.validateMappedArguments(definition.execution))\n throw new TypeError(\"Invalid variable/operation mapping\");\n const template = definition.responseTemplate;\n const schema =\n template.kind === \"text\"\n ? compiled.outputSchema\n : at(compiled.outputSchema, template.itemsPath)?.items;\n if (!schema) throw new TypeError(\"Unknown template items path\");\n const text = template.kind === \"text\" ? template.text : template.item;\n for (const match of text.matchAll(/\\{\\{(?:result|item)\\.([^{}]+)\\}\\}/g)) {\n const target = at(schema, match[1]);\n const type =\n target && (Array.isArray(target.type) ? target.type[0] : target.type);\n if (!type || [\"object\", \"array\"].includes(type))\n throw new TypeError(\"Unknown or nonscalar template path\");\n }\n return definition;\n}\nexport function definitionToMcpDescriptor(definition: CommerceToolDefinition) {\n const d = CommerceToolDefinitionSchema.parse(definition);\n return {\n name: d.name,\n description: d.description,\n inputSchema: d.inputSchema,\n };\n}\nexport function mapToolArguments(\n definition: CommerceToolDefinition,\n raw: unknown,\n) {\n const input = compileSubset(definition.inputSchema, \"input\").parse(raw);\n const mapping =\n definition.execution.kind === \"POLICY_OPERATION\"\n ? definition.execution.arguments\n : definition.execution.kind === \"SHOPIFY_STOREFRONT_QUERY\"\n ? definition.execution.variables\n : definition.execution.query;\n const result: Record<string, unknown> = Object.create(null);\n for (const [key, m] of Object.entries(mapping)) {\n if (\"literal\" in m) result[key] = m.literal;\n else if (Object.hasOwn(input, m.input)) {\n const value = input[m.input];\n if (definition.execution.kind === \"EXTERNAL_HTTP\" && !ExternalQueryValueSchema.safeParse(value).success)\n throw new TypeError(\"Invalid external mapped scalar\");\n result[key] = value;\n }\n else if (!m.omitIfMissing) throw new TypeError(\"Missing mapped input\");\n }\n return result;\n}\nexport const toolHashInput = (definition: CommerceToolDefinition) => ({\n contractVersion: ContractVersionSchema.value,\n definition: CommerceToolDefinitionSchema.parse(definition),\n});\n/** Publication adapters supply the actual highest published version from persistence. */\nexport function validateDefinitionVersion(\n proposed: string,\n highestPublished: string | null,\n) {\n SemverSchema.parse(proposed);\n if (highestPublished === null) return proposed === \"1.0.0\";\n SemverSchema.parse(highestPublished);\n return gt(proposed, highestPublished);\n}\nexport const CommerceToolIdentitySchema = z.strictObject({\n id: IdSchema,\n name: ToolNameSchema,\n enabled: z.boolean(),\n});\nexport const CommerceToolRevisionIdentitySchema = z.strictObject({\n toolId: IdSchema,\n toolRevisionId: IdSchema,\n definitionVersion: SemverSchema,\n contentHash: HashSchema,\n});\nexport const POLICY_OPERATION_DESCRIPTORS = POLICY_OPERATIONS.map(\n (operation) => ({ operation, operationVersion: \"1.0.0\" as const }),\n);\n","import { canonicalJson } from \"./canonical-json\";\n\n/** Bytes of PostgreSQL jsonb::text for JSON.stringify-serialized values.\n * jsonb adds spaces after separators and expands exponent-form JSON numbers.\n * Key ordering changes no byte counts. This is not the canonical hash encoder.\n */\nexport function definitionStorageBytes(value: unknown): number {\n const normalized: unknown = JSON.parse(canonicalJson(value));\n const bytes = (s: string) => new TextEncoder().encode(s).length;\n function size(v: unknown): number {\n if (typeof v === \"number\") {\n const text = JSON.stringify(v);\n if (!text.includes(\"e\")) return text.length;\n const [coefficient, exponent] = text.split(\"e\");\n const sign = coefficient.startsWith(\"-\") ? 1 : 0;\n const unsigned = coefficient.slice(sign);\n const digits = unsigned.replace(\".\", \"\").length;\n const point =\n (unsigned.indexOf(\".\") < 0 ? unsigned.length : unsigned.indexOf(\".\")) +\n Number(exponent);\n return (\n sign +\n (point <= 0 ? 2 - point + digits : point >= digits ? point : digits + 1)\n );\n }\n if (Array.isArray(v))\n return (\n 2 +\n Math.max(0, v.length - 1) * 2 +\n v.reduce((sum, item) => sum + size(item), 0)\n );\n if (v && typeof v === \"object\") {\n const entries = Object.entries(v);\n return (\n 2 +\n Math.max(0, entries.length - 1) * 2 +\n entries.reduce(\n (sum, [key, item]) =>\n sum + bytes(JSON.stringify(key)) + 2 + size(item),\n 0,\n )\n );\n }\n return bytes(JSON.stringify(v));\n }\n return size(normalized);\n}\nexport const definitionFitsStorage = (value: unknown): boolean => {\n try {\n return definitionStorageBytes(value) <= 65536;\n } catch {\n return false;\n }\n};\nexport const DEFINITION_SIZE_MESSAGE =\n \"Definition exceeds the 65536-byte jsonb text limit\";\n","import { canonicalJson } from \"./canonical-json\";\nimport type { CommerceBuiltInToolDescriptor, CommerceBuiltInToolGrant } from \"./definitions\";\n\nfunction immutable<T extends object>(value: T): T {\n for (const child of Object.values(value))\n if (child && typeof child === \"object\") immutable(child);\n return Object.freeze(value);\n}\n\n/** Code-owned descriptors with stable name/version identities. */\nexport const commerceDiscountBuiltInDescriptors: readonly CommerceBuiltInToolDescriptor[] = immutable<CommerceBuiltInToolDescriptor[]>([\n {\n kind: \"BUILT_IN\", name: \"commerce_get_discount_options\", definitionVersion: \"2.0.0\",\n description: \"Read the current shop's permitted discount options.\",\n inputSchema: {\n type: \"object\", properties: {\n limit: {type: \"integer\", minimum: 1, maximum: 50},\n cursor: {type: [\"string\", \"null\"], maxLength: 2048},\n }, additionalProperties: false,\n },\n },\n {\n kind: \"BUILT_IN\", name: \"commerce_get_discount_details\", definitionVersion: \"2.0.0\",\n description: \"Read details for a permitted discount in the current shop.\",\n inputSchema: {\n type: \"object\", properties: {offerId: {type: \"string\", minLength: 1, maxLength: 128}},\n required: [\"offerId\"], additionalProperties: false,\n },\n },\n]);\n\nexport function isTrustedCommerceBuiltInDescriptor(value: CommerceBuiltInToolDescriptor): boolean {\n return commerceDiscountBuiltInDescriptors.some(expected => canonicalJson(expected) === canonicalJson(value));\n}\nexport function isTrustedCommerceBuiltInGrant(value: CommerceBuiltInToolGrant): boolean {\n return commerceDiscountBuiltInDescriptors.some(expected =>\n value.toolName === expected.name && value.definitionVersion === expected.definitionVersion);\n}\n","import { z } from \"zod\";\nimport { IdSchema, LanguageSchema } from \"./primitives\";\nimport { DetailsSchemaSchema, compileSubset, type Json } from \"./subset\";\nimport {\n jsonBytes,\n responseContractCanonicalJson,\n type Digest,\n} from \"./canonical-json\";\nimport { canonicaliseLanguageTag } from \"../internationalization\";\nexport const CommerceResponseContractSchema = z\n .strictObject({\n version: z.literal(\"response.v1\"),\n instructions: z.string().min(1).max(8000),\n detailsSchema: DetailsSchemaSchema,\n })\n .refine((v) => jsonBytes(v) <= 32768);\nexport type CommerceResponseContract = z.infer<\n typeof CommerceResponseContractSchema\n>;\nexport const EMPTY_RESPONSE_CONTRACT: CommerceResponseContract = {\n version: \"response.v1\",\n instructions:\n \"Write a concise, natural WhatsApp reply supported by the available facts. Return an empty details object.\",\n detailsSchema: {\n type: \"object\",\n properties: {},\n required: [],\n additionalProperties: false,\n },\n};\nexport const ReferralReasonSchema = z.enum([\n \"INSUFFICIENT_TOOLS\",\n \"UNVERIFIABLE_FACTS\",\n \"TOOL_UNAVAILABLE\",\n \"TOOL_REVOKED\",\n]);\n\nconst DetectedLanguageTagSchema = z\n .string()\n .min(1)\n .max(128)\n .transform((value, ctx) => {\n const canonical = canonicaliseLanguageTag(value);\n\n if (!canonical) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Invalid detected language tag\",\n });\n return z.NEVER;\n }\n\n return canonical;\n });\n\nexport const CommerceFinalResponseSchema = z\n .strictObject({\n answerKind: z.enum([\"ANSWER\", \"REFER_TO_STORE\"]),\n replyText: z.string().min(1).max(4096),\n referralReason: ReferralReasonSchema.nullable(),\n detectedLanguageTag: DetectedLanguageTagSchema.nullable(),\n detectedLanguageConfidence: z.number().min(0).max(1).nullable(),\n evidenceIds: z\n .array(IdSchema)\n .max(3)\n .refine((v) => new Set(v).size === v.length),\n details: z.record(z.string(), z.unknown()).refine((v) => {\n try {\n return jsonBytes(v) <= 16384;\n } catch {\n return false;\n }\n }),\n })\n .superRefine((value, ctx) => {\n\n if (value.answerKind === \"ANSWER\") {\n if (value.referralReason !== null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"referralReason\"],\n message: \"ANSWER must not include a referral reason\",\n });\n }\n }\n\n if (value.answerKind === \"REFER_TO_STORE\") {\n if (value.referralReason === null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"referralReason\"],\n message: \"REFER_TO_STORE requires a referral reason\",\n });\n }\n\n if (value.evidenceIds.length !== 0) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"evidenceIds\"],\n message: \"REFER_TO_STORE must not include evidence\",\n });\n }\n\n if (Object.keys(value.details).length !== 0) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"details\"],\n message: \"REFER_TO_STORE must not include details\",\n });\n }\n }\n });\nexport type CommerceFinalResponse = z.infer<typeof CommerceFinalResponseSchema>;\nexport function finalResponseSchema(definition: CommerceResponseContract) {\n const contract = CommerceResponseContractSchema.parse(definition);\n const details = compileSubset(contract.detailsSchema, \"details\");\n return CommerceFinalResponseSchema.refine(\n (v) =>\n v.answerKind === \"REFER_TO_STORE\" || details.safeParse(v.details).success,\n {\n path: [\"details\"],\n message: \"Details do not match pinned contract\",\n },\n );\n}\nexport function verifyResponseContract(\n definition: unknown,\n hash: string,\n digest: Digest,\n) {\n const parsed = CommerceResponseContractSchema.parse(definition);\n if (\n !/^[a-f0-9]{64}$/.test(hash) ||\n digest(responseContractCanonicalJson(parsed)) !== hash\n )\n throw new TypeError(\"Incompatible response contract\");\n return parsed;\n}\n/** JSON Schema branches retain the immutable envelope; only ANSWER details vary. */\nexport function finalResponseToolSchema(definition: CommerceResponseContract) {\n const contract = CommerceResponseContractSchema.parse(definition);\n const properties = {\n answerKind: { enum: [\"ANSWER\", \"REFER_TO_STORE\"] },\n replyText: { type: \"string\", minLength: 1, maxLength: 4096 },\n referralReason: {\n enum: [\n null,\n \"INSUFFICIENT_TOOLS\",\n \"UNVERIFIABLE_FACTS\",\n \"TOOL_UNAVAILABLE\",\n \"TOOL_REVOKED\",\n ],\n },\n detectedLanguageTag: { type: [\"string\", \"null\"], maxLength: 128 },\n detectedLanguageConfidence: {\n type: [\"number\", \"null\"],\n minimum: 0,\n maximum: 1,\n },\n evidenceIds: {\n type: \"array\",\n maxItems: 3,\n uniqueItems: true,\n items: { type: \"string\", maxLength: 128 },\n },\n details: { type: \"object\" },\n };\n return {\n type: \"object\",\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n allOf: [\n {\n oneOf: [\n {\n properties: {\n answerKind: { const: \"ANSWER\" },\n referralReason: { type: \"null\" },\n details: contract.detailsSchema,\n },\n },\n {\n properties: {\n answerKind: { const: \"REFER_TO_STORE\" },\n referralReason: { enum: ReferralReasonSchema.options },\n evidenceIds: { maxItems: 0 },\n details: {\n type: \"object\",\n properties: {},\n additionalProperties: false,\n },\n },\n },\n ],\n },\n {\n oneOf: [\n {\n properties: {\n detectedLanguageTag: { type: \"null\" },\n detectedLanguageConfidence: { type: \"null\" },\n },\n },\n {\n properties: {\n detectedLanguageTag: { type: \"string\" },\n detectedLanguageConfidence: { type: \"number\" },\n },\n },\n ],\n },\n ],\n } as unknown as Json;\n}\n","import { z } from \"zod\";\nimport { validRange } from \"semver\";\nimport {\n ContractVersionSchema as V,\n IdSchema as ID,\n SemverSchema,\n HashSchema,\n DateSchema,\n MoneySchema,\n CurrencySchema,\n distinct,\n boundedJson,\n} from \"./primitives\";\nimport { GrantedToolsSchema, PublishedToolDescriptorSchema, CommerceBuiltInToolDescriptorSchema, isBuiltInTool, type PublishedGrantedTool } from \"./definitions\";\nimport { isTrustedCommerceBuiltInDescriptor, isTrustedCommerceBuiltInGrant } from \"./built-in-tools\";\nimport { CommerceResponseContractSchema } from \"./response\";\nimport { canonicalJson, jsonBytes } from \"./canonical-json\";\nexport const CommerceTurnIdentitySchema = z.strictObject({\n contractVersion: V,\n shopId: ID,\n checkoutRecoveryId: ID,\n conversationId: ID,\n inboundVersion: z.number().int().positive(),\n});\nexport type CommerceTurnIdentity = z.infer<typeof CommerceTurnIdentitySchema>;\nexport const CommerceConversationGrantSchema = z\n .strictObject({\n id: ID,\n shopId: ID,\n conversationId: ID,\n initialInboundVersion: z.number().int().positive(),\n releaseId: ID,\n selectedCapabilityKeys: z\n .array(ID)\n .max(32)\n .refine(distinct),\n grantedTools: GrantedToolsSchema,\n runnerVersion: SemverSchema,\n createdAt: DateSchema,\n expiresAt: DateSchema.nullable(),\n })\n .superRefine((v, c) => {\n if (v.expiresAt && Date.parse(v.expiresAt) <= Date.parse(v.createdAt))\n c.addIssue({ code: \"custom\", message: \"Invalid grant retention date\" });\n if (\n jsonBytes(v.grantedTools) > 65536 ||\n jsonBytes(v.selectedCapabilityKeys) > 8192 ||\n v.grantedTools.some((t) =>\n isBuiltInTool(t) ? !isTrustedCommerceBuiltInGrant(t) : t.capabilityKeys.some((k) => !v.selectedCapabilityKeys.includes(k)),\n )\n )\n c.addIssue({ code: \"custom\", message: \"Unselected grant provenance\" });\n });\nexport type CommerceConversationGrant = z.infer<\n typeof CommerceConversationGrantSchema\n>;\nexport const CommerceManifestSchema = z\n .strictObject({\n contractVersion: V,\n releaseId: ID,\n runnerCompatibility: z\n .string()\n .min(1)\n .max(128)\n .refine((v) => !!validRange(v)),\n capabilities: z\n .array(\n z.strictObject({\n capabilityId: ID,\n key: ID,\n featureId: ID,\n position: z.number().int().nonnegative(),\n toolDescriptor: PublishedToolDescriptorSchema,\n }),\n )\n .max(32),\n featureBehaviours: z\n .array(\n z.strictObject({\n featureId: ID,\n behaviourPrompt: z.string().max(32000),\n }),\n )\n .max(32),\n selectedCapabilityKeys: z.array(ID).max(32).refine(distinct),\n builtInTools: z.array(CommerceBuiltInToolDescriptorSchema).max(2).default([]),\n grantedTools: GrantedToolsSchema,\n responseContract: CommerceResponseContractSchema,\n responseContractHash: HashSchema,\n })\n .superRefine((v, c) => {\n if (jsonBytes(v) > 262144)\n c.addIssue({ code: \"custom\", message: \"Manifest exceeds output limit\" });\n const keys = v.capabilities.map((x) => x.key);\n const capabilityIds = v.capabilities.map((x) => x.capabilityId);\n const representedFeatures = [...new Set(v.capabilities.map((x) => x.featureId))];\n const behaviourFeatureIds = v.featureBehaviours.map((x) => x.featureId);\n if (\n !distinct(keys) ||\n !distinct(capabilityIds) ||\n JSON.stringify(keys) !== JSON.stringify(v.selectedCapabilityKeys) ||\n v.capabilities.some(\n (x, i) => i > 0 && x.position <= v.capabilities[i - 1].position,\n ) ||\n !distinct(behaviourFeatureIds) ||\n JSON.stringify(representedFeatures) !== JSON.stringify(behaviourFeatureIds)\n )\n c.addIssue({\n code: \"custom\",\n message: \"Invalid capability ordering/selection\",\n });\n const union = new Map<\n string,\n { tool: PublishedGrantedTool; descriptor: string }\n >();\n for (const cap of v.capabilities) {\n const d = cap.toolDescriptor;\n const old = union.get(d.toolId);\n const descriptor = canonicalJson(d);\n if (old) {\n if (old.descriptor !== descriptor)\n c.addIssue({\n code: \"custom\",\n message: \"Conflicting tool revisions/descriptors\",\n });\n old.tool.capabilityKeys.push(cap.key);\n } else\n union.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 (\n union.size + v.builtInTools.length !== v.grantedTools.length ||\n !distinct(v.builtInTools.map(tool => tool.name)) ||\n v.builtInTools.some(tool => !isTrustedCommerceBuiltInDescriptor(tool)) ||\n v.grantedTools.some((t) => {\n if (isBuiltInTool(t)) return !v.builtInTools.some(descriptor =>\n descriptor.name === t.toolName && descriptor.definitionVersion === t.definitionVersion &&\n isTrustedCommerceBuiltInGrant(t));\n const expected = union.get(t.toolId)?.tool;\n return (\n !expected ||\n expected.toolRevisionId !== t.toolRevisionId ||\n expected.toolName !== t.toolName ||\n expected.definitionVersion !== t.definitionVersion ||\n JSON.stringify([...new Set(expected.capabilityKeys)].sort()) !==\n JSON.stringify(t.capabilityKeys)\n );\n })\n )\n c.addIssue({\n code: \"custom\",\n message: \"Grant must equal selected capability set\",\n });\n });\nexport type CommerceManifest = z.infer<typeof CommerceManifestSchema>;\nexport const CommerceReleaseIdentitySchema = z.strictObject({\n contractVersion: V,\n releaseId: ID,\n runnerCompatibility: z\n .string()\n .min(1)\n .max(128)\n .refine((v) => !!validRange(v)),\n});\nexport const CommerceResolveAssertionSchema = CommerceTurnIdentitySchema.extend(\n { purpose: z.literal(\"resolve\") },\n);\nexport const CommerceExecuteAssertionSchema = CommerceTurnIdentitySchema.extend(\n { purpose: z.literal(\"execute\"), grantId: ID, releaseId: ID },\n);\nexport const CommerceAssertionSchema = z.discriminatedUnion(\"purpose\", [\n CommerceResolveAssertionSchema,\n CommerceExecuteAssertionSchema,\n]);\nconst qty = z.number().int().min(1).max(999);\nexport const CommerceProposalSchema = z\n .strictObject({\n operations: z\n .array(\n z.discriminatedUnion(\"kind\", [\n z.strictObject({\n kind: z.literal(\"ADD\"),\n variantId: ID,\n quantity: qty,\n }),\n z.strictObject({\n kind: z.literal(\"REPLACE\"),\n lineId: ID,\n variantId: ID,\n quantity: qty,\n }),\n ]),\n )\n .min(1)\n .max(3),\n })\n .refine((v) =>\n distinct(\n v.operations.flatMap((o) => (o.kind === \"REPLACE\" ? [o.lineId] : [])),\n ),\n );\nexport const CommerceBasketSchema = z\n .strictObject({\n basketId: ID,\n source: z.enum([\"RECOVERY_SNAPSHOT\", \"PROPOSED\"]),\n observedAt: DateSchema,\n currency: CurrencySchema.nullable(),\n lines: z\n .array(\n z.strictObject({\n lineId: ID,\n productId: ID.nullable(),\n variantId: ID.nullable(),\n quantity: qty.nullable(),\n unitPrice: MoneySchema.nullable(),\n }),\n )\n .max(100),\n fingerprint: HashSchema,\n unknownFields: z.array(z.string().min(1).max(256)).max(128),\n })\n .refine((v) => distinct(v.lines.map((line) => line.lineId)));\nexport const CommerceProductSaleEvidenceSchema = z.strictObject({\n regularPrice: MoneySchema.nullable(),\n salePrice: MoneySchema.nullable(),\n observedAt: DateSchema,\n});\nexport type CommerceProductSaleEvidence =\n z.infer<typeof CommerceProductSaleEvidenceSchema>;\n\nexport const CommerceProductSchema = z.strictObject({\n productId: ID,\n variantId: ID.nullable(),\n title: z.string().min(1).max(512),\n url: z\n .url({ protocol: /^https$/ })\n .refine((v) => {\n const u = new URL(v);\n return !u.username && !u.password && !u.port;\n })\n .nullable(),\n available: z.boolean().nullable(),\n unitPrice: MoneySchema.nullable(),\n currency: CurrencySchema.nullable(),\n productType: z.string().max(512).nullable(),\n vendor: z.string().max(512).nullable(),\n categories: z.array(z.string()).optional(),\n categoryIds: z.array(ID).max(128).optional(),\n collectionIds: z.array(ID).max(128).optional(),\n imageUrl: z.string().nullable().optional(),\n saleEvidence: CommerceProductSaleEvidenceSchema.nullable().optional(),\n observedAt: DateSchema,\n});\n// Discount outputs own their UTC wire syntax; general DateSchema remains unchanged.\n// The final lookahead requires absolute end-of-input (unlike JavaScript's $).\nconst discountUtcPattern = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\\.[0-9]+)?Z(?![\\s\\S])/;\nconst CommerceDiscountDateTimeSchema = z.string().regex(discountUtcPattern).refine(value => {\n const match = discountUtcPattern.exec(value);\n if (!match) return false;\n const [year, month, day, hour, minute, second] = match.slice(1).map(Number);\n if (month < 1 || month > 12 || hour > 23 || minute > 59 || second > 59) return false;\n const leapYear = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n const daysInMonth = [31, leapYear ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n return day >= 1 && day <= daysInMonth[month - 1];\n}, \"Expected a valid UTC discount timestamp with seconds\");\n\nexport const CommerceOfferSchema = z\n .strictObject({\n offerId: ID,\n title: z.string().min(1).max(512),\n method: z.enum([\"AUTOMATIC\", \"CODE\"]),\n code: z.string().min(1).max(128).nullable(),\n startsAt: CommerceDiscountDateTimeSchema.nullable(),\n endsAt: CommerceDiscountDateTimeSchema.nullable(),\n support: z.enum([\"SUPPORTED\", \"UNSUPPORTED\", \"UNKNOWN\"]),\n reasonCodes: z.array(z.string().min(1).max(64)).max(16),\n })\n .refine(\n (v) =>\n (v.startsAt === null ||\n v.endsAt === null ||\n Date.parse(v.startsAt) < Date.parse(v.endsAt)) &&\n (v.method !== \"AUTOMATIC\" || v.code === null),\n );\nexport const CommerceDiscountCombinationFactsSchema = z.strictObject({\n discountClasses: z.array(z.enum([\"ORDER\", \"PRODUCT\", \"SHIPPING\"])).max(3).nullable(),\n shopifyPlus: z.boolean().nullable(),\n combinesWith: z.strictObject({\n orderDiscounts: z.boolean().nullable(),\n productDiscounts: z.boolean().nullable(),\n shippingDiscounts: z.boolean().nullable(),\n }).nullable(),\n discountTags: z.array(z.string().min(1).max(128)).max(64).nullable(),\n allowedSameLineProductTags: z.array(z.string().min(1).max(128)).max(64).nullable(),\n});\nexport type CommerceDiscountCombinationFacts = z.infer<\n typeof CommerceDiscountCombinationFactsSchema\n>;\nexport const CommerceDiscountConditionFactsSchema = z.strictObject({\n provider: z.enum([\"SHOPIFY\", \"WOOCOMMERCE\"]),\n completeness: z.enum([\"COMPLETE\", \"PARTIAL\", \"UNKNOWN\"]),\n observedAt: CommerceDiscountDateTimeSchema,\n providerStatus: z.string().max(64),\n unavailableAt: CommerceDiscountDateTimeSchema.nullable(),\n discountKind: z.enum([\n \"PERCENTAGE\",\n \"FIXED_AMOUNT\",\n \"FREE_SHIPPING\",\n \"BUY_X_GET_Y\",\n \"OTHER\",\n \"UNKNOWN\",\n ]),\n discountValue: MoneySchema.nullable(),\n discountCurrency: CurrencySchema.nullable(),\n targeting: z.strictObject({\n kind: z.enum([\n \"ALL\",\n \"PRODUCTS\",\n \"VARIANTS\",\n \"CATEGORIES\",\n \"COLLECTIONS\",\n \"MIXED\",\n \"UNKNOWN\",\n ]),\n includedProductIds: z.array(ID).max(128),\n includedVariantIds: z.array(ID).max(128),\n includedCategoryIds: z.array(ID).max(128),\n includedCollectionIds: z.array(ID).max(128),\n excludedProductIds: z.array(ID).max(128),\n excludedVariantIds: z.array(ID).max(128),\n excludedCategoryIds: z.array(ID).max(128),\n excludedCollectionIds: z.array(ID).max(128),\n }),\n minimumSubtotal: MoneySchema.nullable(),\n maximumSubtotal: MoneySchema.nullable(),\n subtotalRequirementCurrency: CurrencySchema.nullable(),\n minimumQuantity: z.number().int().nonnegative().nullable(),\n usageLimit: z.number().int().nonnegative().nullable(),\n usageCount: z.number().int().nonnegative().nullable(),\n perCustomerLimit: z.number().int().nonnegative().nullable(),\n customerScope: z.enum([\"ALL\", \"RESTRICTED\", \"UNKNOWN\"]),\n excludesSaleItems: z.boolean().nullable(),\n individualUse: z.boolean().nullable(),\n combination: CommerceDiscountCombinationFactsSchema,\n unrepresentedConditions: z.array(z.string().min(1).max(128)).max(24),\n});\nexport type CommerceDiscountConditionFacts = z.infer<\n typeof CommerceDiscountConditionFactsSchema\n>;\nexport const CommerceDiscountDetailsSchema = z.strictObject({\n offer: CommerceOfferSchema,\n facts: CommerceDiscountConditionFactsSchema,\n providerDiscountId: z.string().min(1).max(191).nullable(),\n});\nexport type CommerceDiscountDetails = z.infer<\n typeof CommerceDiscountDetailsSchema\n>;\nconst condition = z.strictObject({\n code: z.string().min(1).max(64),\n description: z.string().max(256),\n});\nexport const CommerceEvidenceSchema = z\n .strictObject({\n evidenceId: HashSchema,\n turn: CommerceTurnIdentitySchema,\n grantId: ID,\n releaseId: ID,\n offerId: ID,\n proposal: CommerceProposalSchema.nullable(),\n basketFingerprint: HashSchema,\n ruleFingerprint: HashSchema,\n evaluatedAt: DateSchema,\n expiresAt: DateSchema,\n outcome: z.enum([\n \"QUALIFIES_FOR_KNOWN_RULES\",\n \"DOES_NOT_QUALIFY\",\n \"UNKNOWN\",\n \"UNSUPPORTED\",\n ]),\n currency: CurrencySchema.nullable(),\n savings: MoneySchema.nullable(),\n resultingTotal: MoneySchema.nullable(),\n evaluatedConditions: z.array(condition).max(32),\n unresolvedConditions: z.array(condition).max(32),\n })\n .superRefine((v, c) => {\n if (Date.parse(v.expiresAt) - Date.parse(v.evaluatedAt) > 60000)\n c.addIssue({\n code: \"custom\",\n message: \"Evidence lifetime exceeds ceiling\",\n });\n if (\n v.outcome === \"QUALIFIES_FOR_KNOWN_RULES\" &&\n (v.unresolvedConditions.length ||\n Date.parse(v.expiresAt) <= Date.parse(v.evaluatedAt) ||\n v.currency === null ||\n v.savings === null ||\n v.resultingTotal === null)\n )\n c.addIssue({ code: \"custom\", message: \"Unsupported qualifying claim\" });\n });\nexport type CommerceEvidence = z.infer<typeof CommerceEvidenceSchema>;\nexport const CommerceAlternativeSchema = z\n .strictObject({\n product: CommerceProductSchema,\n proposal: CommerceProposalSchema,\n extraSpend: MoneySchema.nullable(),\n resultingTotal: MoneySchema.nullable(),\n currency: CurrencySchema.nullable(),\n evidence: CommerceEvidenceSchema.nullable(),\n similarityReasons: z.array(z.string().max(256)).max(3),\n })\n .refine((v) => v.product.available === true);\nexport const CommerceErrorCodeSchema = z.enum([\n \"INVALID_INPUT\",\n \"DENIED\",\n \"STALE_TURN\",\n \"NOT_FOUND\",\n \"UNAVAILABLE\",\n \"THROTTLED\",\n \"DEADLINE\",\n \"INCOMPATIBLE_VERSION\",\n]);\nexport function commerceToolResultSchema<T extends z.ZodType>(data: T) {\n return z.union([\n z.strictObject({\n contractVersion: V,\n status: z.literal(\"OK\"),\n data,\n renderedText: z.string().max(4096),\n }),\n z.strictObject({\n contractVersion: V,\n status: z.literal(\"ERROR\"),\n code: CommerceErrorCodeSchema,\n retryable: z.boolean(),\n renderedText: z.string().max(4096).optional(),\n }),\n ]);\n}\nexport const CommerceToolResultSchema = commerceToolResultSchema(\n boundedJson(262144),\n);\nexport type CommerceToolResult = z.infer<typeof CommerceToolResultSchema>;\nconst wireId = z.string().min(1).max(128);\nconst taxonomySource = z.enum([\"SHOPIFY_STANDARD_PRODUCT_TAXONOMY\"]).meta({maxLength: 33});\nexport const CommerceCategoryCandidateSchema = z.strictObject({\n categoryId: wireId,\n name: z.string().min(1).max(512),\n fullName: z.string().min(1).max(4096),\n parentId: wireId.nullable(),\n level: z.number().int().min(0).max(32),\n ancestorIds: z.array(wireId).max(32),\n distance: z.number().min(0).max(2),\n});\nexport type CommerceCategoryCandidate = z.infer<typeof CommerceCategoryCandidateSchema>;\nexport const CommerceCategoryResolutionSchema = z.union([\n z.strictObject({\n outcome: z.enum([\"CANDIDATES\", \"NO_CANDIDATES\"]).meta({maxLength: 13}),\n generationId: wireId,\n source: taxonomySource,\n taxonomyVersion: z.string().min(1).max(64),\n languageTag: z.string().min(1).max(35),\n candidates: z.array(CommerceCategoryCandidateSchema).max(10),\n }),\n z.strictObject({\n outcome: z.enum([\"UNAVAILABLE\"]).meta({maxLength: 11}),\n reasonCode: z.enum([\"NOT_READY\", \"TEMPORARY_UNAVAILABLE\"]).meta({maxLength: 21}),\n }),\n]);\nexport type CommerceCategoryResolution = z.infer<typeof CommerceCategoryResolutionSchema>;\nexport const CommerceOptionalLookupUnavailableSchema = z.strictObject({\n outcome: z.enum([\"UNAVAILABLE\"]).meta({maxLength: 11}),\n reasonCode: z.enum([\"TEMPORARY_UNAVAILABLE\"]).meta({maxLength: 21}),\n});\nexport type CommerceOptionalLookupUnavailable = z.infer<typeof CommerceOptionalLookupUnavailableSchema>;\nexport const CommerceProductRecommendationSelectionSchema = z.strictObject({\n productRecommendationVersion: z.enum([\"1\"]).meta({maxLength: 1}).optional(),\n productRecommendations: z.array(z.strictObject({\n scope: z.enum([\"PRODUCT_ONLY\", \"ADD_TO_BASKET\", \"REPLACE_BASKET_LINE\"]).meta({maxLength: 19}),\n basketLineId: wireId.nullable(),\n productId: wireId,\n variantId: wireId.nullable(),\n quantity: z.number().int().min(1).max(99),\n promotionKind: z.enum([\"NONE\", \"NATIVE_SALE\", \"DISCOUNT\"]).meta({maxLength: 11}),\n offerIds: z.array(wireId).max(3),\n })).min(1).max(3).optional(),\n});\nexport type CommerceProductRecommendationSelection = z.infer<typeof CommerceProductRecommendationSelectionSchema>;\nexport const CommerceResponseDispositionSchema = z.enum([\n \"STANDARD\", \"OUT_OF_SCOPE_REDIRECT\", \"SHIPPING_INFORMATION_UNVERIFIED\",\n]).meta({maxLength: 31});\nexport type CommerceResponseDisposition = z.infer<typeof CommerceResponseDispositionSchema>;\nexport const CommerceAnswerPresentationSelectionSchema = z.strictObject({\n responseDisposition: CommerceResponseDispositionSchema.optional(),\n shippingInformationSelection: z.strictObject({\n productId: wireId.nullable(),\n variantId: wireId.nullable(),\n }).optional(),\n});\nexport type CommerceAnswerPresentationSelection = z.infer<typeof CommerceAnswerPresentationSelectionSchema>;\nexport const CommerceShippingInformationInputSchema = z.strictObject({\n productId: wireId.nullable().default(null),\n variantId: wireId.nullable().default(null),\n});\nexport type CommerceShippingInformationInput = z.infer<typeof CommerceShippingInformationInputSchema>;\n// Relationships, current-shop ownership and policy UTF-8 budgets belong to the adapter.\nexport const CommerceShippingInformationSchema = z.strictObject({\n provider: z.enum([\"SHOPIFY\", \"WOOCOMMERCE\"]).meta({maxLength: 11}),\n observedAt: DateSchema,\n product: z.strictObject({\n status: z.enum([\"NOT_REQUESTED\", \"VARIANT_REQUIRED\", \"AVAILABLE\"]).meta({maxLength: 16}),\n productId: wireId.nullable(),\n variantId: wireId.nullable(),\n requiresShipping: z.boolean().nullable(),\n virtual: z.boolean().nullable(),\n weight: z.strictObject({\n value: z.number().min(0),\n unit: z.enum([\"GRAMS\", \"KILOGRAMS\", \"OUNCES\", \"POUNDS\"]).meta({maxLength: 9}).nullable(),\n }).nullable(),\n dimensions: z.strictObject({\n length: z.number().min(0).nullable(),\n width: z.number().min(0).nullable(),\n height: z.number().min(0).nullable(),\n unit: z.string().min(1).max(16).nullable(),\n }).nullable(),\n shippingClassId: wireId.nullable(),\n shippingClassSlug: z.string().min(1).max(512).nullable(),\n }),\n policy: z.strictObject({\n status: z.enum([\"AVAILABLE\", \"NOT_CONFIGURED\", \"SCOPE_NOT_GRANTED\", \"UNSUPPORTED\"]).meta({maxLength: 17}),\n trust: z.enum([\"UNTRUSTED_REFERENCE\"]).meta({maxLength: 19}),\n title: z.string().min(1).max(512).nullable(),\n bodyStatus: z.enum([\"AVAILABLE\", \"EMPTY\", \"TOO_LARGE\", \"NOT_AVAILABLE\"]).meta({maxLength: 13}),\n bodyHtml: z.string().min(1).max(8000).nullable(),\n url: z.url({protocol: /^https$/}).min(1).max(2048).nullable(),\n updatedAt: DateSchema.nullable(),\n }),\n});\nexport type CommerceShippingInformation = z.infer<typeof CommerceShippingInformationSchema>;\nconst limit = z.number().int().min(1).max(3).default(3);\nexport const CommerceToolInputs = {\n commerce_resolve_product_categories: z.strictObject({\n query: z.string().min(1).max(200),\n limit: z.number().int().min(1).max(10).default(5),\n }),\n commerce_get_shipping_information: CommerceShippingInformationInputSchema,\n commerce_get_basket: z.strictObject({}),\n commerce_search_products: z.strictObject({\n query: z.string().min(1).max(200).nullable().default(null),\n category: z.strictObject({\n system: z.enum([\"SHOPIFY_STANDARD_PRODUCT_TAXONOMY\", \"WOOCOMMERCE_PRODUCT_CATEGORY\"]).meta({maxLength: 33}),\n id: wireId,\n taxonomyVersion: z.string().min(1).max(64).nullable(),\n }).optional(),\n browse: z.boolean().default(false),\n maximumPrice: MoneySchema.optional(),\n availableOnly: z.boolean().default(true),\n limit: z.number().int().min(1).max(20).default(10),\n cursor: z.string().max(2048).nullable().default(null),\n }),\n commerce_get_product: z.strictObject({\n productId: ID,\n variantId: ID.nullable(),\n }),\n commerce_get_discount_options: z.strictObject({\n limit: z.number().int().min(1).max(50).default(20),\n cursor: z.string().max(2048).nullable().default(null),\n }),\n commerce_get_discount_details: z.strictObject({ offerId: ID }),\n commerce_evaluate_discount: z.strictObject({\n offerId: ID,\n proposal: CommerceProposalSchema.nullable(),\n }),\n commerce_find_qualifying_products: z.strictObject({\n offerId: ID,\n query: z.string().min(1).max(200).nullable(),\n limit,\n }),\n commerce_find_similar_products: z.strictObject({\n variantId: ID,\n offerId: ID.nullable(),\n limit,\n }),\n};\nconst alternatives = z.strictObject({\n alternatives: z.array(CommerceAlternativeSchema).max(3),\n truncated: z.boolean(),\n});\nexport const CommerceToolOutputs = {\n commerce_resolve_product_categories: CommerceCategoryResolutionSchema,\n commerce_get_shipping_information: CommerceShippingInformationSchema,\n commerce_get_basket: CommerceBasketSchema,\n commerce_search_products: z.strictObject({\n products: z.array(CommerceProductSchema).max(20),\n cursor: z.string().max(2048).nullable(),\n truncated: z.boolean(),\n }),\n commerce_get_product: z.strictObject({\n product: CommerceProductSchema.nullable(),\n }),\n commerce_get_discount_options: z.union([CommerceOptionalLookupUnavailableSchema, z.strictObject({\n mode: z.enum([\"NONE\", \"FIXED\", \"AI_BEST_APPLICABLE\"]),\n offers: z.array(CommerceOfferSchema).max(50),\n truncated: z.boolean(),\n cursor: z.string().max(2048).nullable().optional(),\n })]),\n commerce_get_discount_details: z.union([CommerceOptionalLookupUnavailableSchema, z.strictObject({\n details: CommerceDiscountDetailsSchema.nullable(),\n })]),\n commerce_evaluate_discount: CommerceEvidenceSchema,\n commerce_find_qualifying_products: alternatives,\n commerce_find_similar_products: alternatives,\n};\nexport function productBelongsToDomain(\n product: z.infer<typeof CommerceProductSchema>,\n verifiedDomain: string,\n) {\n try {\n return (\n product.url === null || new URL(product.url).hostname === verifiedDomain\n );\n } catch {\n return false;\n }\n}\n"],"mappings":"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","names":["z","z","z","z","mapping","z","z","z","z"]}
|