@modainteract/moda-interact-shared 0.14.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1445 -0
- package/dist/{chunk-WVQWQFVR.js → chunk-QP5QNAO7.js} +78 -109
- package/dist/chunk-QP5QNAO7.js.map +1 -0
- package/dist/commerce/index.d.ts +16 -28
- package/dist/commerce/index.js +11 -23
- package/dist/commerce/index.js.map +1 -1
- package/dist/commerce/runner/index.d.ts +1 -5
- package/dist/commerce/runner/index.js +4 -9
- package/dist/commerce/runner/index.js.map +1 -1
- package/dist/{response-D3LgdEbH.d.ts → response-DyBuflfX.d.ts} +9 -30
- package/package.json +1 -1
- package/dist/chunk-WVQWQFVR.js.map +0 -1
|
@@ -318,11 +318,6 @@ var DEFINITION_SIZE_MESSAGE = "Definition exceeds the 65536-byte jsonb text limi
|
|
|
318
318
|
|
|
319
319
|
// src/commerce/definitions.ts
|
|
320
320
|
var ToolNameSchema = z4.string().regex(/^[a-z][a-z0-9_]{0,127}$/).refine((n) => n !== "finalResponse");
|
|
321
|
-
var ToolBindingSchema = z4.strictObject({
|
|
322
|
-
toolId: IdSchema,
|
|
323
|
-
toolRevisionId: IdSchema
|
|
324
|
-
});
|
|
325
|
-
var ToolBindingsSchema = z4.array(ToolBindingSchema).max(32).refine((v) => distinct(v.map((x) => x.toolId)));
|
|
326
321
|
var GrantedToolSchema = z4.strictObject({
|
|
327
322
|
toolId: IdSchema,
|
|
328
323
|
toolRevisionId: IdSchema,
|
|
@@ -481,7 +476,13 @@ function visualPublicationCompatible(execution) {
|
|
|
481
476
|
if (execution.responseProcessing.kind === "JAVASCRIPT") return true;
|
|
482
477
|
const processing = execution.responseProcessing;
|
|
483
478
|
const schema = execution.resultSchema;
|
|
484
|
-
if (processing.kind === "LIST"
|
|
479
|
+
if (processing.kind === "LIST") {
|
|
480
|
+
const items = schema.properties?.items;
|
|
481
|
+
if (!items || items.type !== "array" || !(schema.required ?? []).includes("items")) return false;
|
|
482
|
+
if (Object.keys(schema.properties ?? {}).some((name) => name !== "items")) return false;
|
|
483
|
+
if (items.minItems !== void 0 && items.minItems > 0) return false;
|
|
484
|
+
if (items.maxItems !== void 0 && items.maxItems < processing.limit) return false;
|
|
485
|
+
}
|
|
485
486
|
const output = processing.kind === "OBJECT" ? schema : schema.properties?.items?.items;
|
|
486
487
|
if (!output || output.type !== "object" || !output.properties || output.additionalProperties !== false) return false;
|
|
487
488
|
const fields = processing.fields;
|
|
@@ -540,18 +541,6 @@ var toolHashInput = (definition) => ({
|
|
|
540
541
|
contractVersion: ContractVersionSchema.value,
|
|
541
542
|
definition: CommerceToolDefinitionSchema.parse(definition)
|
|
542
543
|
});
|
|
543
|
-
function capabilityHashInput(promptTemplate, configuration, toolBindings) {
|
|
544
|
-
if (!promptTemplate.trim() || promptTemplate.length > 32e3)
|
|
545
|
-
throw new TypeError("Invalid capability prompt");
|
|
546
|
-
return {
|
|
547
|
-
contractVersion: ContractVersionSchema.value,
|
|
548
|
-
promptTemplate,
|
|
549
|
-
configuration,
|
|
550
|
-
toolBindings: ToolBindingsSchema.parse(toolBindings).sort(
|
|
551
|
-
(a, b) => a.toolId < b.toolId ? -1 : 1
|
|
552
|
-
)
|
|
553
|
-
};
|
|
554
|
-
}
|
|
555
544
|
function validateDefinitionVersion(proposed, highestPublished) {
|
|
556
545
|
SemverSchema.parse(proposed);
|
|
557
546
|
if (highestPublished === null) return proposed === "1.0.0";
|
|
@@ -729,7 +718,7 @@ var CommerceConversationGrantSchema = z6.strictObject({
|
|
|
729
718
|
conversationId: IdSchema,
|
|
730
719
|
initialInboundVersion: z6.number().int().positive(),
|
|
731
720
|
releaseId: IdSchema,
|
|
732
|
-
selectedCapabilityKeys: z6.array(IdSchema).
|
|
721
|
+
selectedCapabilityKeys: z6.array(IdSchema).max(32).refine(distinct),
|
|
733
722
|
grantedTools: GrantedToolsSchema,
|
|
734
723
|
runnerVersion: SemverSchema,
|
|
735
724
|
createdAt: DateSchema,
|
|
@@ -742,25 +731,26 @@ var CommerceConversationGrantSchema = z6.strictObject({
|
|
|
742
731
|
))
|
|
743
732
|
c.addIssue({ code: "custom", message: "Unselected grant provenance" });
|
|
744
733
|
});
|
|
745
|
-
var CommerceConfigurationSchema = z6.strictObject({
|
|
746
|
-
maxRecommendations: z6.number().int().min(1).max(3).optional(),
|
|
747
|
-
maxSearchResults: z6.number().int().min(1).max(20).optional()
|
|
748
|
-
});
|
|
749
734
|
var CommerceManifestSchema = z6.strictObject({
|
|
750
735
|
contractVersion: ContractVersionSchema,
|
|
751
736
|
releaseId: IdSchema,
|
|
752
737
|
runnerCompatibility: z6.string().min(1).max(128).refine((v) => !!validRange(v)),
|
|
753
738
|
capabilities: z6.array(
|
|
754
739
|
z6.strictObject({
|
|
740
|
+
capabilityId: IdSchema,
|
|
755
741
|
key: IdSchema,
|
|
756
|
-
|
|
742
|
+
featureId: IdSchema,
|
|
757
743
|
position: z6.number().int().nonnegative(),
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
744
|
+
toolDescriptor: ToolDescriptorSchema
|
|
745
|
+
})
|
|
746
|
+
).max(32),
|
|
747
|
+
featureBehaviours: z6.array(
|
|
748
|
+
z6.strictObject({
|
|
749
|
+
featureId: IdSchema,
|
|
750
|
+
behaviourPrompt: z6.string().max(32e3)
|
|
761
751
|
})
|
|
762
|
-
).
|
|
763
|
-
selectedCapabilityKeys: z6.array(IdSchema).
|
|
752
|
+
).max(32),
|
|
753
|
+
selectedCapabilityKeys: z6.array(IdSchema).max(32).refine(distinct),
|
|
764
754
|
grantedTools: GrantedToolsSchema,
|
|
765
755
|
responseContract: CommerceResponseContractSchema,
|
|
766
756
|
responseContractHash: HashSchema
|
|
@@ -768,39 +758,39 @@ var CommerceManifestSchema = z6.strictObject({
|
|
|
768
758
|
if (jsonBytes(v) > 262144)
|
|
769
759
|
c.addIssue({ code: "custom", message: "Manifest exceeds output limit" });
|
|
770
760
|
const keys = v.capabilities.map((x) => x.key);
|
|
771
|
-
|
|
761
|
+
const capabilityIds = v.capabilities.map((x) => x.capabilityId);
|
|
762
|
+
const representedFeatures = [...new Set(v.capabilities.map((x) => x.featureId))];
|
|
763
|
+
const behaviourFeatureIds = v.featureBehaviours.map((x) => x.featureId);
|
|
764
|
+
if (!distinct(keys) || !distinct(capabilityIds) || JSON.stringify(keys) !== JSON.stringify(v.selectedCapabilityKeys) || v.capabilities.some(
|
|
772
765
|
(x, i) => i > 0 && x.position <= v.capabilities[i - 1].position
|
|
773
|
-
))
|
|
766
|
+
) || !distinct(behaviourFeatureIds) || JSON.stringify(representedFeatures) !== JSON.stringify(behaviourFeatureIds))
|
|
774
767
|
c.addIssue({
|
|
775
768
|
code: "custom",
|
|
776
769
|
message: "Invalid capability ordering/selection"
|
|
777
770
|
});
|
|
778
771
|
const union = /* @__PURE__ */ new Map();
|
|
779
772
|
for (const cap of v.capabilities) {
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
code: "custom",
|
|
789
|
-
message: "Conflicting tool revisions/descriptors"
|
|
790
|
-
});
|
|
791
|
-
old.tool.capabilityKeys.push(cap.key);
|
|
792
|
-
} else
|
|
793
|
-
union.set(d.toolId, {
|
|
794
|
-
descriptor,
|
|
795
|
-
tool: {
|
|
796
|
-
toolId: d.toolId,
|
|
797
|
-
toolRevisionId: d.toolRevisionId,
|
|
798
|
-
toolName: d.name,
|
|
799
|
-
definitionVersion: d.definitionVersion,
|
|
800
|
-
capabilityKeys: [cap.key]
|
|
801
|
-
}
|
|
773
|
+
const d = cap.toolDescriptor;
|
|
774
|
+
const old = union.get(d.toolId);
|
|
775
|
+
const descriptor = canonicalJson(d);
|
|
776
|
+
if (old) {
|
|
777
|
+
if (old.descriptor !== descriptor)
|
|
778
|
+
c.addIssue({
|
|
779
|
+
code: "custom",
|
|
780
|
+
message: "Conflicting tool revisions/descriptors"
|
|
802
781
|
});
|
|
803
|
-
|
|
782
|
+
old.tool.capabilityKeys.push(cap.key);
|
|
783
|
+
} else
|
|
784
|
+
union.set(d.toolId, {
|
|
785
|
+
descriptor,
|
|
786
|
+
tool: {
|
|
787
|
+
toolId: d.toolId,
|
|
788
|
+
toolRevisionId: d.toolRevisionId,
|
|
789
|
+
toolName: d.name,
|
|
790
|
+
definitionVersion: d.definitionVersion,
|
|
791
|
+
capabilityKeys: [cap.key]
|
|
792
|
+
}
|
|
793
|
+
});
|
|
804
794
|
}
|
|
805
795
|
if (union.size !== v.grantedTools.length || v.grantedTools.some((t) => {
|
|
806
796
|
const expected = union.get(t.toolId)?.tool;
|
|
@@ -808,7 +798,7 @@ var CommerceManifestSchema = z6.strictObject({
|
|
|
808
798
|
}))
|
|
809
799
|
c.addIssue({
|
|
810
800
|
code: "custom",
|
|
811
|
-
message: "Grant must equal selected
|
|
801
|
+
message: "Grant must equal selected capability set"
|
|
812
802
|
});
|
|
813
803
|
});
|
|
814
804
|
var CommerceReleaseIdentitySchema = z6.strictObject({
|
|
@@ -1021,64 +1011,48 @@ function productBelongsToDomain(product, verifiedDomain) {
|
|
|
1021
1011
|
}
|
|
1022
1012
|
|
|
1023
1013
|
// src/commerce/selection.ts
|
|
1024
|
-
import { z as z7 } from "zod";
|
|
1025
|
-
var CommerceCapabilityBindingSchema = z7.discriminatedUnion("kind", [
|
|
1026
|
-
z7.strictObject({
|
|
1027
|
-
kind: z7.literal("BASE"),
|
|
1028
|
-
key: z7.literal("conversation_core")
|
|
1029
|
-
}),
|
|
1030
|
-
z7.strictObject({
|
|
1031
|
-
kind: z7.literal("FEATURE"),
|
|
1032
|
-
key: IdSchema,
|
|
1033
|
-
featureId: IdSchema
|
|
1034
|
-
}),
|
|
1035
|
-
z7.strictObject({
|
|
1036
|
-
kind: z7.literal("RECOVERY_POLICY"),
|
|
1037
|
-
key: z7.literal("discount_assistance")
|
|
1038
|
-
})
|
|
1039
|
-
]);
|
|
1040
1014
|
function selectCapabilities(candidates, facts) {
|
|
1015
|
+
for (const candidate of candidates) {
|
|
1016
|
+
IdSchema.parse(candidate.key);
|
|
1017
|
+
IdSchema.parse(candidate.featureId);
|
|
1018
|
+
if (!Number.isSafeInteger(candidate.position) || candidate.position < 0)
|
|
1019
|
+
throw new TypeError("Invalid capability position");
|
|
1020
|
+
}
|
|
1041
1021
|
const selected = candidates.filter((c) => {
|
|
1042
|
-
const b = CommerceCapabilityBindingSchema.parse(c.binding);
|
|
1043
1022
|
if (!c.enabled) return false;
|
|
1044
|
-
|
|
1045
|
-
if (b.kind === "RECOVERY_POLICY")
|
|
1046
|
-
return facts.offerMode === "FIXED" || facts.offerMode === "AI_BEST_APPLICABLE";
|
|
1047
|
-
const f = facts.features.find((f2) => f2.id === b.featureId);
|
|
1023
|
+
const f = facts.features.find((f2) => f2.id === c.featureId);
|
|
1048
1024
|
return !!f && f.active && f.planMappingEnabled && (f.mode === "ALWAYS_ENABLED" || f.preferenceEnabled === true);
|
|
1049
1025
|
}).sort((a, b) => a.position - b.position);
|
|
1050
|
-
if (
|
|
1051
|
-
throw new TypeError("Base capability unavailable");
|
|
1052
|
-
if (new Set(selected.map((c) => c.binding.key)).size !== selected.length || new Set(selected.map((c) => c.position)).size !== selected.length)
|
|
1026
|
+
if (new Set(selected.map((c) => c.key)).size !== selected.length || new Set(selected.map((c) => c.position)).size !== selected.length)
|
|
1053
1027
|
throw new TypeError("Duplicate release membership");
|
|
1054
|
-
return selected.map((c) => c.
|
|
1028
|
+
return selected.map((c) => c.key);
|
|
1055
1029
|
}
|
|
1056
1030
|
function deduplicateTools(capabilities) {
|
|
1057
1031
|
const byId = /* @__PURE__ */ new Map();
|
|
1058
1032
|
const names = /* @__PURE__ */ new Map();
|
|
1059
|
-
for (const cap of capabilities)
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1033
|
+
for (const cap of capabilities) {
|
|
1034
|
+
const d = cap.toolDescriptor;
|
|
1035
|
+
const previous = byId.get(d.toolId);
|
|
1036
|
+
const descriptor = canonicalJson(d);
|
|
1037
|
+
if (previous && previous.descriptor !== descriptor || names.has(d.name) && names.get(d.name) !== d.toolId)
|
|
1038
|
+
throw new TypeError("Conflicting tool association");
|
|
1039
|
+
names.set(d.name, d.toolId);
|
|
1040
|
+
if (previous)
|
|
1041
|
+
previous.tool.capabilityKeys = [
|
|
1042
|
+
.../* @__PURE__ */ new Set([...previous.tool.capabilityKeys, cap.key])
|
|
1043
|
+
].sort();
|
|
1044
|
+
else
|
|
1045
|
+
byId.set(d.toolId, {
|
|
1046
|
+
descriptor,
|
|
1047
|
+
tool: {
|
|
1048
|
+
toolId: d.toolId,
|
|
1049
|
+
toolRevisionId: d.toolRevisionId,
|
|
1050
|
+
toolName: d.name,
|
|
1051
|
+
definitionVersion: d.definitionVersion,
|
|
1052
|
+
capabilityKeys: [cap.key]
|
|
1053
|
+
}
|
|
1054
|
+
});
|
|
1055
|
+
}
|
|
1082
1056
|
return [...byId.values()].map((v) => v.tool).sort((a, b) => a.toolName.localeCompare(b.toolName, "en"));
|
|
1083
1057
|
}
|
|
1084
1058
|
function manifestMatchesGrant(manifest, grant) {
|
|
@@ -1141,8 +1115,6 @@ export {
|
|
|
1141
1115
|
ConnectionIssueSchema,
|
|
1142
1116
|
ConnectionResultSchema,
|
|
1143
1117
|
ToolNameSchema,
|
|
1144
|
-
ToolBindingSchema,
|
|
1145
|
-
ToolBindingsSchema,
|
|
1146
1118
|
GrantedToolSchema,
|
|
1147
1119
|
GrantedToolsSchema,
|
|
1148
1120
|
ToolDescriptorSchema,
|
|
@@ -1156,7 +1128,6 @@ export {
|
|
|
1156
1128
|
definitionToMcpDescriptor,
|
|
1157
1129
|
mapToolArguments,
|
|
1158
1130
|
toolHashInput,
|
|
1159
|
-
capabilityHashInput,
|
|
1160
1131
|
validateDefinitionVersion,
|
|
1161
1132
|
CommerceToolIdentitySchema,
|
|
1162
1133
|
CommerceToolRevisionIdentitySchema,
|
|
@@ -1170,7 +1141,6 @@ export {
|
|
|
1170
1141
|
finalResponseToolSchema,
|
|
1171
1142
|
CommerceTurnIdentitySchema,
|
|
1172
1143
|
CommerceConversationGrantSchema,
|
|
1173
|
-
CommerceConfigurationSchema,
|
|
1174
1144
|
CommerceManifestSchema,
|
|
1175
1145
|
CommerceReleaseIdentitySchema,
|
|
1176
1146
|
CommerceResolveAssertionSchema,
|
|
@@ -1188,11 +1158,10 @@ export {
|
|
|
1188
1158
|
CommerceToolInputs,
|
|
1189
1159
|
CommerceToolOutputs,
|
|
1190
1160
|
productBelongsToDomain,
|
|
1191
|
-
CommerceCapabilityBindingSchema,
|
|
1192
1161
|
selectCapabilities,
|
|
1193
1162
|
deduplicateTools,
|
|
1194
1163
|
manifestMatchesGrant,
|
|
1195
1164
|
parseCommerceManifest,
|
|
1196
1165
|
currentlyGrantedTools
|
|
1197
1166
|
};
|
|
1198
|
-
//# sourceMappingURL=chunk-
|
|
1167
|
+
//# sourceMappingURL=chunk-QP5QNAO7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commerce/canonical-json.ts","../src/commerce/subset.ts","../src/commerce/primitives.ts","../src/commerce/external.ts","../src/commerce/definitions.ts","../src/commerce/definition-size.ts","../src/commerce/response.ts","../src/commerce/schemas.ts","../src/commerce/selection.ts"],"sourcesContent":["/** Bounded canonical JSON. No credentials, hashing runtime or provider access. */\nexport function canonicalJson(\n value: unknown,\n order: \"codepoint\" | \"utf16\" = \"codepoint\",\n): string {\n const seen = new Set<object>();\n const compare = (a: string, b: string) => {\n const aa = Array.from(a, (c) => c.codePointAt(0)!);\n const bb = Array.from(b, (c) => c.codePointAt(0)!);\n for (let i = 0; i < Math.min(aa.length, bb.length); i++)\n if (aa[i] !== bb[i]) return aa[i] - bb[i];\n return aa.length - bb.length;\n };\n function visit(v: unknown, depth: number): string {\n if (depth > 32) throw new TypeError(\"JSON depth exceeded\");\n if (v === null) return \"null\";\n if (typeof v === \"string\") {\n if (/\\p{Surrogate}/u.test(v)) throw new TypeError(\"Invalid Unicode\");\n return JSON.stringify(v);\n }\n if (typeof v === \"boolean\") return String(v);\n if (typeof v === \"number\" && Number.isFinite(v)) return JSON.stringify(v);\n if (typeof v !== \"object\" || !v || seen.has(v))\n throw new TypeError(\"Invalid JSON\");\n if (\n !Array.isArray(v) &&\n Object.getPrototypeOf(v) !== Object.prototype &&\n Object.getPrototypeOf(v) !== null\n )\n throw new TypeError(\"Invalid JSON object\");\n seen.add(v);\n let result: string;\n if (Array.isArray(v)) {\n if (Object.keys(v).length !== v.length)\n throw new TypeError(\"Sparse or extended array\");\n result = \"[\" + v.map((item) => visit(item, depth + 1)).join(\",\") + \"]\";\n } else {\n const keys = Object.keys(v).sort(\n order === \"codepoint\" ? compare : undefined,\n );\n result =\n \"{\" +\n keys\n .map(\n (k) =>\n visit(k, depth + 1) +\n \":\" +\n visit((v as Record<string, unknown>)[k], depth + 1),\n )\n .join(\",\") +\n \"}\";\n }\n seen.delete(v);\n return result;\n }\n return visit(value, 0);\n}\nexport const jsonBytes = (value: unknown) =>\n new TextEncoder().encode(canonicalJson(value)).length;\n/** RFC8785 sorts UTF-16 code units; JSON.stringify supplies ECMAScript number serialization. */\nexport const responseContractCanonicalJson = (value: unknown) =>\n canonicalJson(value, \"utf16\");\nexport type Digest = (canonical: string) => string;\n","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 : 4;\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 (mode !== \"input\" || s.type.length !== 2 || s.type[1] !== \"null\")\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 {\n canonicaliseLanguageTag,\n normalizeCurrencyCode,\n} from \"../internationalization\";\nimport { jsonBytes } from \"./canonical-json\";\nexport const ContractVersionSchema = z.literal(\"commerce.v1\");\nexport const IdSchema = z\n .string()\n .min(1)\n .max(128)\n .refine(\n (v) =>\n v.trim() === v &&\n ![\"standalone\", \"product-only\", \"unknown-shop\"].includes(v),\n );\nexport const SemverSchema = z\n .string()\n .max(64)\n .regex(/^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$/);\nexport const HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nexport const DateSchema = z.iso.datetime({ offset: false });\nexport const MoneySchema = z.string().regex(/^[0-9]{1,18}(\\.[0-9]{1,6})?$/);\nexport const CurrencySchema = z.string().refine((v) => {\n try {\n return normalizeCurrencyCode(v) === v;\n } catch {\n return false;\n }\n});\nexport const LanguageSchema = z\n .string()\n .max(128)\n .refine((v) => {\n try {\n return canonicaliseLanguageTag(v) === v;\n } catch {\n return false;\n }\n });\nexport const distinct = <T>(values: T[]) =>\n new Set(values).size === values.length;\nexport const boundedJson = (bytes: number) =>\n z.unknown().refine((v) => {\n try {\n return jsonBytes(v) <= bytes;\n } catch {\n return false;\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 GrantedToolSchema = 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 GrantedToolsSchema = z\n .array(GrantedToolSchema)\n .max(32)\n .refine(\n (v) =>\n distinct(v.map((x) => x.toolId)) && distinct(v.map((x) => x.toolName)),\n );\nexport const ToolDescriptorSchema = 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});\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 \"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 { 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\";\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]);\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: LanguageSchema.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((v, ctx) => {\n if (\n (v.detectedLanguageTag === null) !==\n (v.detectedLanguageConfidence === null)\n )\n ctx.addIssue({\n code: \"custom\",\n message: \"Language metadata must be a complete pair\",\n });\n if (\n v.answerKind === \"ANSWER\"\n ? v.referralReason !== null\n : v.referralReason === null ||\n v.evidenceIds.length > 0 ||\n Object.keys(v.details).length > 0\n )\n ctx.addIssue({\n code: \"custom\",\n message: \"Invalid answer/referral envelope\",\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 { message: \"Details do not match pinned contract\" },\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, ToolDescriptorSchema } from \"./definitions\";\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 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: ToolDescriptorSchema,\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 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: (typeof v.grantedTools)[number]; 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.grantedTools.length ||\n v.grantedTools.some((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 CommerceProductSchema = z.strictObject({\n productId: ID,\n variantId: ID,\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 observedAt: DateSchema,\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: DateSchema.nullable(),\n endsAt: DateSchema.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 );\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 limit = z.number().int().min(1).max(3).default(3);\nexport const CommerceToolInputs = {\n commerce_get_basket: z.strictObject({}),\n commerce_search_products: z.strictObject({\n query: z.string().min(1).max(200),\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_discount_options: z.strictObject({}),\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_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_discount_options: z.strictObject({\n mode: z.enum([\"NONE\", \"FIXED\", \"AI_BEST_APPLICABLE\"]),\n offers: z.array(CommerceOfferSchema).max(50),\n truncated: z.boolean(),\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","import { IdSchema } from \"./primitives\";\nimport {\n type CommerceManifest,\n CommerceManifestSchema,\n type CommerceConversationGrant,\n} from \"./schemas\";\nimport { type GrantedTool, type ToolDescriptor } from \"./definitions\";\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: ToolDescriptor }>,\n): GrantedTool[] {\n const byId = new Map<string, { tool: GrantedTool; descriptor: string }>();\n const names = new Map<string, string>();\n for (const cap of capabilities) {\n const d = 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 return [...byId.values()]\n .map((v) => v.tool)\n .sort((a, b) => a.toolName.localeCompare(b.toolName, \"en\"));\n}\nexport function manifestMatchesGrant(\n manifest: CommerceManifest,\n grant: CommerceConversationGrant,\n) {\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.toolId.localeCompare(b.toolId),\n ),\n ) ===\n canonicalJson(\n [...grant.grantedTools].sort((a, b) =>\n a.toolId.localeCompare(b.toolId),\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) {\n return grant.grantedTools.filter(\n (t) =>\n enabledToolIds.has(t.toolId) &&\n t.capabilityKeys.some((k) => eligibleCapabilityKeys.has(k)),\n );\n}\n"],"mappings":"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","names":["z","z","z","z","z","z","mapping","z","z","z","z","f"]}
|