@modainteract/moda-interact-shared 0.14.0 → 0.14.1

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.
@@ -222,6 +222,7 @@ var boundedJson = (bytes) => z2.unknown().refine((v) => {
222
222
  import { z as z3 } from "zod";
223
223
  var utf8 = (value, maximum) => new TextEncoder().encode(value).length <= maximum;
224
224
  var scalar = z3.union([z3.string().refine((value) => utf8(value, 2048)), z3.number().finite(), z3.boolean()]);
225
+ var ExternalQueryValueSchema = scalar;
225
226
  var scalarOrNull = z3.union([scalar, z3.null()]);
226
227
  var record = (item, max) => z3.record(z3.string().refine(safeName), item).refine((value) => Object.keys(value).length <= max);
227
228
  var ExternalQueryMappingSchema = z3.union([
@@ -233,10 +234,12 @@ var ExternalQueryMappingsSchema = record(ExternalQueryMappingSchema, 32).superRe
233
234
  for (const key of Object.keys(value)) if (reserved.test(key)) ctx.addIssue({ code: "custom", path: [key], message: "Reserved query key" });
234
235
  });
235
236
  var ExternalPathSchema = z3.string().max(1024).refine(
236
- (value) => utf8(value, 1024) && /^\/(?:[A-Za-z0-9._~-]+\/)*[A-Za-z0-9._~-]*\/?$/.test(value) && !value.includes("//") && !value.includes("%") && !value.includes("\\") && !value.includes("?") && !value.includes("#") && !value.includes("{") && !value.includes("}")
237
+ (value) => utf8(value, 1024) && /^\/(?:[A-Za-z0-9._~-]+\/)*[A-Za-z0-9._~-]*\/?$/.test(value) && !value.includes("//") && !value.includes("%") && !value.includes("\\") && !value.includes("?") && !value.includes("#") && !value.includes("{") && !value.includes("}") && value.split("/").every((segment) => segment !== "." && segment !== "..")
237
238
  );
238
239
  var mediaType = z3.string().min(1).max(128).refine((value) => value === value.toLowerCase() && /^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+$/.test(value));
239
- var ExternalResponseFormatSchema = z3.strictObject({ mode: z3.enum(["JSON", "TEXT"]), mediaTypes: z3.array(mediaType).min(1).max(8).refine((values) => new Set(values).size === values.length) });
240
+ var jsonMime = (value) => value === "application/json" || /^application\/[a-z0-9!#$&^_.+-]+\+json$/.test(value);
241
+ var textMime = (value) => /^text\/[a-z0-9!#$&^_.+-]+$/.test(value) || value === "application/xml" || /^application\/[a-z0-9!#$&^_.+-]+\+xml$/.test(value) || jsonMime(value);
242
+ var ExternalResponseFormatSchema = z3.strictObject({ mode: z3.enum(["JSON", "TEXT"]), mediaTypes: z3.array(mediaType).min(1).max(8).refine((values) => new Set(values).size === values.length) }).refine((value) => value.mediaTypes.every(value.mode === "JSON" ? jsonMime : textMime));
240
243
  var FieldProjectionSchema = record(z3.strictObject({ path: z3.string().refine(safePath), omitIfMissing: z3.literal(true).optional() }), 32).refine((value) => Object.keys(value).length >= 1);
241
244
  var ResponseFilterSchema = z3.discriminatedUnion("op", [
242
245
  z3.strictObject({ path: z3.string().refine(safePath), op: z3.enum(["EQ", "NE", "GT", "GTE", "LT", "LTE", "CONTAINS", "STARTS_WITH"]), value: scalarOrNull }),
@@ -248,6 +251,15 @@ var VisualResponseProcessingSchema = z3.union([visualObject, visualList]);
248
251
  var ResponseProcessingSchema = z3.union([VisualResponseProcessingSchema, z3.strictObject({ kind: z3.literal("JAVASCRIPT"), runtimeVersion: z3.literal("quickjs-sync.v1"), source: z3.string().min(1).refine((value) => utf8(value, 16384)) })]);
249
252
  var TransformResponseSchema = z3.strictObject({ status: z3.int().min(200).max(299), contentType: z3.string().min(1).max(128), bodyText: z3.string().refine((value) => utf8(value, 262144)), json: z3.union([z3.null(), z3.json()]) });
250
253
  var TransformSampleSchema = z3.strictObject({ status: z3.int().min(200).max(299), contentType: z3.string().min(1).max(128), bodyText: z3.string().refine((value) => utf8(value, 262144)) }).refine((value) => jsonBytes(value) <= 524288);
254
+ var boundedValues = z3.custom((value) => {
255
+ const visit = (node, depth) => depth <= 20 && (node === null || typeof node === "string" || typeof node === "boolean" || typeof node === "number" && Number.isFinite(node) || Array.isArray(node) && node.every((child) => visit(child, depth + 1)) || !!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)));
256
+ try {
257
+ return !!value && typeof value === "object" && !Array.isArray(value) && visit(value, 1) && jsonBytes(value) <= 49152;
258
+ } catch {
259
+ return false;
260
+ }
261
+ });
262
+ var ExternalHttpResultDataSchema = z3.strictObject({ source: z3.literal("EXTERNAL_HTTP"), connectionRevisionId: IdSchema, observedAt: DateSchema, values: boundedValues });
251
263
  var ConnectionRevisionViewSchema = z3.strictObject({ id: IdSchema, connectionId: IdSchema, revisionNumber: z3.int().positive(), origin: z3.string().min(1).max(2048), scope: z3.enum(["PLATFORM", "PER_SHOP"]), authMode: z3.enum(["NONE", "BEARER", "API_KEY"]), authHeader: z3.string().min(1).max(128).nullable(), documentation: z3.string().max(16e3), createdAt: z3.iso.datetime({ offset: false }) });
252
264
  var ConnectionViewSchema = z3.strictObject({ id: IdSchema, key: z3.string().regex(/^[a-z][a-z0-9_]{0,127}$/), displayName: z3.string().min(1).max(255), description: z3.string().max(4096), enabled: z3.boolean(), editVersion: z3.int().positive(), revisions: z3.array(ConnectionRevisionViewSchema) });
253
265
  var CredentialStatusSchema = z3.strictObject({ connectionRevisionId: IdSchema, shopId: IdSchema.nullable(), configured: z3.boolean(), editVersion: z3.int().positive().nullable(), updatedAt: z3.iso.datetime({ offset: false }).nullable() });
@@ -410,6 +422,7 @@ var identity = {
410
422
  description: z4.string().min(1).max(4096)
411
423
  };
412
424
  var forbiddenInput = /^(shopid|customerid|checkoutrecoveryid|conversationid|grantid|releaseid|token|accesstoken|domain|headers|url|graphql|document|authorization)$/i;
425
+ var forbiddenExternalInput = /^(authorization|cookie|set-cookie|host|x-api-key|api_key|apikey|access_token|token|secret|password)$/i;
413
426
  var CommerceToolDefinitionSchema = z4.strictObject({
414
427
  ...identity,
415
428
  inputSchema: InputSchemaSchema,
@@ -438,7 +451,7 @@ var CommerceToolDefinitionSchema = z4.strictObject({
438
451
  if ("input" in mapping2) {
439
452
  const target = properties[mapping2.input];
440
453
  const type = target && (Array.isArray(target.type) ? target.type[0] : target.type);
441
- if (!["string", "integer", "boolean"].includes(type ?? ""))
454
+ if (forbiddenExternalInput.test(mapping2.input) || !["string", "integer", "boolean"].includes(type ?? ""))
442
455
  ctx.addIssue({ code: "custom", path: ["execution", "query", name], message: "External mappings require a top-level scalar input" });
443
456
  }
444
457
  }
@@ -460,6 +473,22 @@ function externalOutputSchema(execution) {
460
473
  additionalProperties: false
461
474
  };
462
475
  }
476
+ function scalarSchema(schema) {
477
+ const type = schema && (Array.isArray(schema.type) ? schema.type[0] : schema.type);
478
+ return !!schema && ["string", "integer", "number", "boolean"].includes(type ?? "");
479
+ }
480
+ function visualPublicationCompatible(execution) {
481
+ if (execution.responseProcessing.kind === "JAVASCRIPT") return true;
482
+ const processing = execution.responseProcessing;
483
+ const schema = execution.resultSchema;
484
+ if (processing.kind === "LIST" && (!schema.properties?.items || schema.properties.items.type !== "array" || !(schema.required ?? []).includes("items"))) return false;
485
+ const output = processing.kind === "OBJECT" ? schema : schema.properties?.items?.items;
486
+ if (!output || output.type !== "object" || !output.properties || output.additionalProperties !== false) return false;
487
+ const fields = processing.fields;
488
+ if (Object.keys(output.properties).some((name) => !Object.hasOwn(fields, name) || !scalarSchema(output.properties[name]))) return false;
489
+ if (Object.keys(fields).some((name) => !Object.hasOwn(output.properties, name))) return false;
490
+ return (output.required ?? []).every((name) => !fields[name]?.omitIfMissing);
491
+ }
463
492
  function at(schema, path) {
464
493
  let current = schema;
465
494
  for (const part of path.split(".")) current = current?.properties?.[part];
@@ -467,6 +496,8 @@ function at(schema, path) {
467
496
  }
468
497
  function validateDefinitionForPublication(raw, compiler) {
469
498
  const definition = CommerceToolDefinitionSchema.parse(raw);
499
+ if (definition.execution.kind === "EXTERNAL_HTTP" && !visualPublicationCompatible(definition.execution))
500
+ throw new TypeError("External visual projection is incompatible with resultSchema");
470
501
  const compiled = definition.execution.kind === "EXTERNAL_HTTP" ? { outputSchema: externalOutputSchema(definition.execution), validateMappedArguments: () => true } : compiler.compile(definition.execution, definition.inputSchema);
471
502
  if (!compiled.validateMappedArguments(definition.execution))
472
503
  throw new TypeError("Invalid variable/operation mapping");
@@ -496,8 +527,12 @@ function mapToolArguments(definition, raw) {
496
527
  const result = /* @__PURE__ */ Object.create(null);
497
528
  for (const [key, m] of Object.entries(mapping)) {
498
529
  if ("literal" in m) result[key] = m.literal;
499
- else if (Object.hasOwn(input, m.input)) result[key] = input[m.input];
500
- else if (!m.omitIfMissing) throw new TypeError("Missing mapped input");
530
+ else if (Object.hasOwn(input, m.input)) {
531
+ const value = input[m.input];
532
+ if (definition.execution.kind === "EXTERNAL_HTTP" && !ExternalQueryValueSchema.safeParse(value).success)
533
+ throw new TypeError("Invalid external mapped scalar");
534
+ result[key] = value;
535
+ } else if (!m.omitIfMissing) throw new TypeError("Missing mapped input");
501
536
  }
502
537
  return result;
503
538
  }
@@ -1086,6 +1121,7 @@ export {
1086
1121
  LanguageSchema,
1087
1122
  distinct,
1088
1123
  boundedJson,
1124
+ ExternalQueryValueSchema,
1089
1125
  ExternalQueryMappingSchema,
1090
1126
  ExternalQueryMappingsSchema,
1091
1127
  ExternalPathSchema,
@@ -1096,6 +1132,7 @@ export {
1096
1132
  ResponseProcessingSchema,
1097
1133
  TransformResponseSchema,
1098
1134
  TransformSampleSchema,
1135
+ ExternalHttpResultDataSchema,
1099
1136
  ConnectionRevisionViewSchema,
1100
1137
  ConnectionViewSchema,
1101
1138
  CredentialStatusSchema,
@@ -1158,4 +1195,4 @@ export {
1158
1195
  parseCommerceManifest,
1159
1196
  currentlyGrantedTools
1160
1197
  };
1161
- //# sourceMappingURL=chunk-GLNBHQKH.js.map
1198
+ //# sourceMappingURL=chunk-WVQWQFVR.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: { maxSearchResults: 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: { maxSearchResults: 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 ToolBindingSchema = z.strictObject({\n toolId: IdSchema,\n toolRevisionId: IdSchema,\n});\nexport const ToolBindingsSchema = z\n .array(ToolBindingSchema)\n .max(32)\n .refine((v) => distinct(v.map((x) => x.toolId)));\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\" && (!schema.properties?.items || schema.properties.items.type !== \"array\" || !(schema.required ?? []).includes(\"items\"))) return false;\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});\nexport function capabilityHashInput(\n promptTemplate: string,\n configuration: unknown,\n toolBindings: unknown,\n) {\n if (!promptTemplate.trim() || promptTemplate.length > 32000)\n throw new TypeError(\"Invalid capability prompt\");\n return {\n contractVersion: ContractVersionSchema.value,\n promptTemplate,\n configuration,\n toolBindings: ToolBindingsSchema.parse(toolBindings).sort((a, b) =>\n a.toolId < b.toolId ? -1 : 1,\n ),\n };\n}\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 .min(1)\n .max(32)\n .refine((v) => distinct(v) && v.includes(\"conversation_core\")),\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 CommerceConfigurationSchema = z.strictObject({\n maxRecommendations: z.number().int().min(1).max(3).optional(),\n maxSearchResults: z.number().int().min(1).max(20).optional(),\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 key: ID,\n revisionId: ID,\n position: z.number().int().nonnegative(),\n promptName: z.string().min(1).max(512),\n configuration: CommerceConfigurationSchema,\n toolDescriptors: z.array(ToolDescriptorSchema).max(32),\n }),\n )\n .min(1)\n .max(32),\n selectedCapabilityKeys: z.array(ID).min(1).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 if (\n !distinct(keys) ||\n !keys.includes(\"conversation_core\") ||\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 )\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 if (\n cap.promptName !==\n `commerce/${v.releaseId}/${cap.key}/${cap.revisionId}`\n )\n c.addIssue({ code: \"custom\", message: \"Prompt identity mismatch\" });\n for (const d of cap.toolDescriptors) {\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 }\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 binding union\",\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 { z } from \"zod\";\nimport { 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 const CommerceCapabilityBindingSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({\n kind: z.literal(\"BASE\"),\n key: z.literal(\"conversation_core\"),\n }),\n z.strictObject({\n kind: z.literal(\"FEATURE\"),\n key: IdSchema,\n featureId: IdSchema,\n }),\n z.strictObject({\n kind: z.literal(\"RECOVERY_POLICY\"),\n key: z.literal(\"discount_assistance\"),\n }),\n]);\nexport type CommerceCapabilityBinding = z.infer<\n typeof CommerceCapabilityBindingSchema\n>;\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 binding: CommerceCapabilityBinding;\n enabled: boolean;\n position: number;\n }>,\n facts: {\n features: FeatureFacts[];\n offerMode: \"NONE\" | \"FIXED\" | \"AI_BEST_APPLICABLE\" | null;\n },\n) {\n const selected = candidates\n .filter((c) => {\n const b = CommerceCapabilityBindingSchema.parse(c.binding);\n if (!c.enabled) return false;\n if (b.kind === \"BASE\") return true;\n if (b.kind === \"RECOVERY_POLICY\")\n return (\n facts.offerMode === \"FIXED\" ||\n facts.offerMode === \"AI_BEST_APPLICABLE\"\n );\n const f = facts.features.find((f) => f.id === b.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 (!selected.some((c) => c.binding.kind === \"BASE\"))\n throw new TypeError(\"Base capability unavailable\");\n if (\n new Set(selected.map((c) => c.binding.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.binding.key);\n}\nexport function deduplicateTools(\n capabilities: Array<{ key: string; toolDescriptors: 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 for (const d of cap.toolDescriptors) {\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","z","z","f"]}
@@ -90,6 +90,7 @@ declare function currentlyGrantedTools(grant: CommerceConversationGrant, eligibl
90
90
  capabilityKeys: string[];
91
91
  }[];
92
92
 
93
+ declare const ExternalQueryValueSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
93
94
  declare const ExternalQueryMappingSchema: z.ZodUnion<readonly [z.ZodObject<{
94
95
  input: z.ZodString;
95
96
  omitIfMissing: z.ZodOptional<z.ZodLiteral<true>>;
@@ -225,6 +226,12 @@ declare const TransformSampleSchema: z.ZodObject<{
225
226
  contentType: z.ZodString;
226
227
  bodyText: z.ZodString;
227
228
  }, z.core.$strict>;
229
+ declare const ExternalHttpResultDataSchema: z.ZodObject<{
230
+ source: z.ZodLiteral<"EXTERNAL_HTTP">;
231
+ connectionRevisionId: z.ZodString;
232
+ observedAt: z.ZodISODateTime;
233
+ values: z.ZodCustom<Record<string, unknown>, Record<string, unknown>>;
234
+ }, z.core.$strict>;
228
235
  declare const ConnectionRevisionViewSchema: z.ZodObject<{
229
236
  id: z.ZodString;
230
237
  connectionId: z.ZodString;
@@ -327,6 +334,7 @@ type VisualResponseProcessing = z.infer<typeof VisualResponseProcessingSchema>;
327
334
  type ResponseProcessing = z.infer<typeof ResponseProcessingSchema>;
328
335
  type TransformResponse = z.infer<typeof TransformResponseSchema>;
329
336
  type TransformSample = z.infer<typeof TransformSampleSchema>;
337
+ type ExternalHttpResultData = z.infer<typeof ExternalHttpResultDataSchema>;
330
338
  type ConnectionRevisionView = z.infer<typeof ConnectionRevisionViewSchema>;
331
339
  type ConnectionView = z.infer<typeof ConnectionViewSchema>;
332
340
  type CredentialStatus = z.infer<typeof CredentialStatusSchema>;
@@ -393,4 +401,4 @@ declare function exampleManifest(digest: Digest, withTool?: boolean): CommerceMa
393
401
  declare function exampleGrant(manifest: CommerceManifest): CommerceConversationGrant;
394
402
  declare const exampleFinal: CommerceFinalResponse;
395
403
 
396
- export { type CodeResponseProcessorInput, type CodeResponseProcessorResult, type CommerceCapabilityBinding, CommerceCapabilityBindingSchema, CommerceConversationGrant, CommerceFinalResponse, CommerceManifest, CommerceToolDefinition, CommerceTurnIdentity, type ConnectionCommand, ConnectionCommandSchema, ConnectionIssueSchema, type ConnectionResult, ConnectionResultSchema, type ConnectionRevisionView, ConnectionRevisionViewSchema, type ConnectionView, ConnectionViewSchema, ContractVersionSchema, type CredentialStatus, CredentialStatusSchema, CurrencySchema, DateSchema, Digest, ExternalPathSchema, ExternalQueryMappingSchema, ExternalQueryMappingsSchema, type ExternalResponseFormat, ExternalResponseFormatSchema, type FeatureFacts, type FieldProjection, FieldProjectionSchema, GrantedTool, HashSchema, IdSchema, LanguageSchema, MoneySchema, type ResponseFilter, ResponseFilterSchema, type ResponseProcessing, ResponseProcessingSchema, type RevisionInput, RevisionInputSchema, SemverSchema, SubsetSchema, ToolDescriptor, type TransformResponse, TransformResponseSchema, type TransformSample, TransformSampleSchema, type VisualResponseProcessing, VisualResponseProcessingSchema, type VisualResponseProcessorInput, type VisualResponseProcessorResult, boundedJson, currentlyGrantedTools, deduplicateTools, distinct, exampleDefinition, exampleFinal, exampleGrant, exampleManifest, exampleTool, exampleTurn, manifestMatchesGrant, parseCommerceManifest, selectCapabilities };
404
+ export { type CodeResponseProcessorInput, type CodeResponseProcessorResult, type CommerceCapabilityBinding, CommerceCapabilityBindingSchema, CommerceConversationGrant, CommerceFinalResponse, CommerceManifest, CommerceToolDefinition, CommerceTurnIdentity, type ConnectionCommand, ConnectionCommandSchema, ConnectionIssueSchema, type ConnectionResult, ConnectionResultSchema, type ConnectionRevisionView, ConnectionRevisionViewSchema, type ConnectionView, ConnectionViewSchema, ContractVersionSchema, type CredentialStatus, CredentialStatusSchema, CurrencySchema, DateSchema, Digest, type ExternalHttpResultData, ExternalHttpResultDataSchema, ExternalPathSchema, ExternalQueryMappingSchema, ExternalQueryMappingsSchema, ExternalQueryValueSchema, type ExternalResponseFormat, ExternalResponseFormatSchema, type FeatureFacts, type FieldProjection, FieldProjectionSchema, GrantedTool, HashSchema, IdSchema, LanguageSchema, MoneySchema, type ResponseFilter, ResponseFilterSchema, type ResponseProcessing, ResponseProcessingSchema, type RevisionInput, RevisionInputSchema, SemverSchema, SubsetSchema, ToolDescriptor, type TransformResponse, TransformResponseSchema, type TransformSample, TransformSampleSchema, type VisualResponseProcessing, VisualResponseProcessingSchema, type VisualResponseProcessorInput, type VisualResponseProcessorResult, boundedJson, currentlyGrantedTools, deduplicateTools, distinct, exampleDefinition, exampleFinal, exampleGrant, exampleManifest, exampleTool, exampleTurn, manifestMatchesGrant, parseCommerceManifest, selectCapabilities };
@@ -37,9 +37,11 @@ import {
37
37
  DetailsSchemaSchema,
38
38
  EMPTY_RESPONSE_CONTRACT,
39
39
  ExternalHttpExecutionSchema,
40
+ ExternalHttpResultDataSchema,
40
41
  ExternalPathSchema,
41
42
  ExternalQueryMappingSchema,
42
43
  ExternalQueryMappingsSchema,
44
+ ExternalQueryValueSchema,
43
45
  ExternalResponseFormatSchema,
44
46
  FieldProjectionSchema,
45
47
  GrantedToolSchema,
@@ -91,7 +93,7 @@ import {
91
93
  validateDefinitionVersion,
92
94
  validateSubset,
93
95
  verifyResponseContract
94
- } from "../chunk-GLNBHQKH.js";
96
+ } from "../chunk-WVQWQFVR.js";
95
97
  import "../chunk-B6Y3QQLI.js";
96
98
 
97
99
  // src/commerce/fixtures.ts
@@ -230,9 +232,11 @@ export {
230
232
  DetailsSchemaSchema,
231
233
  EMPTY_RESPONSE_CONTRACT,
232
234
  ExternalHttpExecutionSchema,
235
+ ExternalHttpResultDataSchema,
233
236
  ExternalPathSchema,
234
237
  ExternalQueryMappingSchema,
235
238
  ExternalQueryMappingsSchema,
239
+ ExternalQueryValueSchema,
236
240
  ExternalResponseFormatSchema,
237
241
  FieldProjectionSchema,
238
242
  GrantedToolSchema,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commerce/fixtures.ts"],"sourcesContent":["/** Synthetic examples; no provider identity, schema artifact or publication claim. */\nimport type {\n CommerceManifest,\n CommerceConversationGrant,\n CommerceTurnIdentity,\n} from \"./schemas\";\nimport {\n EMPTY_RESPONSE_CONTRACT,\n type CommerceFinalResponse,\n} from \"./response\";\nimport type { Digest } from \"./canonical-json\";\nimport { responseContractCanonicalJson } from \"./canonical-json\";\nimport type { ToolDescriptor, CommerceToolDefinition } from \"./definitions\";\nexport const exampleTool: ToolDescriptor = {\n toolId: \"tool-fixture\",\n toolRevisionId: \"revision-fixture\",\n name: \"never_seeded_catalogue_facts\",\n definitionVersion: \"1.0.0\",\n description: \"Read synthetic catalogue facts.\",\n inputSchema: {\n type: \"object\",\n properties: { handle: { type: \"string\", minLength: 1, maxLength: 255 } },\n required: [\"handle\"],\n additionalProperties: false,\n },\n};\nexport const exampleDefinition: CommerceToolDefinition = {\n name: exampleTool.name,\n definitionVersion: \"1.0.0\",\n description: exampleTool.description,\n inputSchema: exampleTool.inputSchema,\n execution: {\n kind: \"SHOPIFY_STOREFRONT_QUERY\",\n executorVersion: \"1.0.0\",\n apiVersion: \"2026-07\",\n schemaHash: \"a\".repeat(64),\n document:\n \"query ProductDetails($handle: String!) { product(handle: $handle) { title description } }\",\n operationName: \"ProductDetails\",\n variables: { handle: { input: \"handle\" } },\n resultPath: \"product\",\n },\n responseTemplate: {\n kind: \"text\",\n text: \"{{result.values.title}}: {{result.values.description}}\",\n unavailable: \"Product details could not be verified.\",\n },\n};\nexport const exampleTurn: CommerceTurnIdentity = {\n contractVersion: \"commerce.v1\",\n shopId: \"shop-fixture\",\n checkoutRecoveryId: \"recovery-fixture\",\n conversationId: \"conversation-fixture\",\n inboundVersion: 1,\n};\nexport function exampleManifest(\n digest: Digest,\n withTool = false,\n): CommerceManifest {\n const capabilities = [\n {\n key: \"conversation_core\",\n revisionId: \"core-revision\",\n position: 0,\n promptName: \"commerce/release-fixture/conversation_core/core-revision\",\n configuration: {},\n toolDescriptors: withTool ? [structuredClone(exampleTool)] : [],\n },\n ];\n return {\n contractVersion: \"commerce.v1\",\n releaseId: \"release-fixture\",\n runnerCompatibility: \"^1.0.0\",\n capabilities,\n selectedCapabilityKeys: [\"conversation_core\"],\n grantedTools: withTool\n ? [\n {\n toolId: exampleTool.toolId,\n toolRevisionId: exampleTool.toolRevisionId,\n toolName: exampleTool.name,\n definitionVersion: \"1.0.0\",\n capabilityKeys: [\"conversation_core\"],\n },\n ]\n : [],\n responseContract: structuredClone(EMPTY_RESPONSE_CONTRACT),\n responseContractHash: digest(\n responseContractCanonicalJson(EMPTY_RESPONSE_CONTRACT),\n ),\n };\n}\nexport function exampleGrant(\n manifest: CommerceManifest,\n): CommerceConversationGrant {\n return {\n id: \"grant-fixture\",\n shopId: exampleTurn.shopId,\n conversationId: exampleTurn.conversationId,\n initialInboundVersion: 1,\n releaseId: manifest.releaseId,\n selectedCapabilityKeys: [...manifest.selectedCapabilityKeys],\n grantedTools: structuredClone(manifest.grantedTools),\n runnerVersion: \"1.0.0\",\n createdAt: \"2026-09-20T00:00:00.000Z\",\n expiresAt: null,\n };\n}\nexport const exampleFinal: CommerceFinalResponse = {\n answerKind: \"REFER_TO_STORE\",\n replyText:\n \"I cannot verify that information. Please contact the store directly.\",\n referralReason: \"INSUFFICIENT_TOOLS\",\n detectedLanguageTag: null,\n detectedLanguageConfidence: null,\n evidenceIds: [],\n details: {},\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,IAAM,cAA8B;AAAA,EACzC,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,aAAa;AAAA,EACb,aAAa;AAAA,IACX,MAAM;AAAA,IACN,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,WAAW,GAAG,WAAW,IAAI,EAAE;AAAA,IACvE,UAAU,CAAC,QAAQ;AAAA,IACnB,sBAAsB;AAAA,EACxB;AACF;AACO,IAAM,oBAA4C;AAAA,EACvD,MAAM,YAAY;AAAA,EAClB,mBAAmB;AAAA,EACnB,aAAa,YAAY;AAAA,EACzB,aAAa,YAAY;AAAA,EACzB,WAAW;AAAA,IACT,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,YAAY,IAAI,OAAO,EAAE;AAAA,IACzB,UACE;AAAA,IACF,eAAe;AAAA,IACf,WAAW,EAAE,QAAQ,EAAE,OAAO,SAAS,EAAE;AAAA,IACzC,YAAY;AAAA,EACd;AAAA,EACA,kBAAkB;AAAA,IAChB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AACF;AACO,IAAM,cAAoC;AAAA,EAC/C,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,gBAAgB;AAClB;AACO,SAAS,gBACd,QACA,WAAW,OACO;AAClB,QAAM,eAAe;AAAA,IACnB;AAAA,MACE,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,eAAe,CAAC;AAAA,MAChB,iBAAiB,WAAW,CAAC,gBAAgB,WAAW,CAAC,IAAI,CAAC;AAAA,IAChE;AAAA,EACF;AACA,SAAO;AAAA,IACL,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,qBAAqB;AAAA,IACrB;AAAA,IACA,wBAAwB,CAAC,mBAAmB;AAAA,IAC5C,cAAc,WACV;AAAA,MACE;AAAA,QACE,QAAQ,YAAY;AAAA,QACpB,gBAAgB,YAAY;AAAA,QAC5B,UAAU,YAAY;AAAA,QACtB,mBAAmB;AAAA,QACnB,gBAAgB,CAAC,mBAAmB;AAAA,MACtC;AAAA,IACF,IACA,CAAC;AAAA,IACL,kBAAkB,gBAAgB,uBAAuB;AAAA,IACzD,sBAAsB;AAAA,MACpB,8BAA8B,uBAAuB;AAAA,IACvD;AAAA,EACF;AACF;AACO,SAAS,aACd,UAC2B;AAC3B,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ,YAAY;AAAA,IACpB,gBAAgB,YAAY;AAAA,IAC5B,uBAAuB;AAAA,IACvB,WAAW,SAAS;AAAA,IACpB,wBAAwB,CAAC,GAAG,SAAS,sBAAsB;AAAA,IAC3D,cAAc,gBAAgB,SAAS,YAAY;AAAA,IACnD,eAAe;AAAA,IACf,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AACF;AACO,IAAM,eAAsC;AAAA,EACjD,YAAY;AAAA,EACZ,WACE;AAAA,EACF,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,4BAA4B;AAAA,EAC5B,aAAa,CAAC;AAAA,EACd,SAAS,CAAC;AACZ;","names":[]}
1
+ {"version":3,"sources":["../../src/commerce/fixtures.ts"],"sourcesContent":["/** Synthetic examples; no provider identity, schema artifact or publication claim. */\nimport type {\n CommerceManifest,\n CommerceConversationGrant,\n CommerceTurnIdentity,\n} from \"./schemas\";\nimport {\n EMPTY_RESPONSE_CONTRACT,\n type CommerceFinalResponse,\n} from \"./response\";\nimport type { Digest } from \"./canonical-json\";\nimport { responseContractCanonicalJson } from \"./canonical-json\";\nimport type { ToolDescriptor, CommerceToolDefinition } from \"./definitions\";\nexport const exampleTool: ToolDescriptor = {\n toolId: \"tool-fixture\",\n toolRevisionId: \"revision-fixture\",\n name: \"never_seeded_catalogue_facts\",\n definitionVersion: \"1.0.0\",\n description: \"Read synthetic catalogue facts.\",\n inputSchema: {\n type: \"object\",\n properties: { handle: { type: \"string\", minLength: 1, maxLength: 255 } },\n required: [\"handle\"],\n additionalProperties: false,\n },\n};\nexport const exampleDefinition: CommerceToolDefinition = {\n name: exampleTool.name,\n definitionVersion: \"1.0.0\",\n description: exampleTool.description,\n inputSchema: exampleTool.inputSchema,\n execution: {\n kind: \"SHOPIFY_STOREFRONT_QUERY\",\n executorVersion: \"1.0.0\",\n apiVersion: \"2026-07\",\n schemaHash: \"a\".repeat(64),\n document:\n \"query ProductDetails($handle: String!) { product(handle: $handle) { title description } }\",\n operationName: \"ProductDetails\",\n variables: { handle: { input: \"handle\" } },\n resultPath: \"product\",\n },\n responseTemplate: {\n kind: \"text\",\n text: \"{{result.values.title}}: {{result.values.description}}\",\n unavailable: \"Product details could not be verified.\",\n },\n};\nexport const exampleTurn: CommerceTurnIdentity = {\n contractVersion: \"commerce.v1\",\n shopId: \"shop-fixture\",\n checkoutRecoveryId: \"recovery-fixture\",\n conversationId: \"conversation-fixture\",\n inboundVersion: 1,\n};\nexport function exampleManifest(\n digest: Digest,\n withTool = false,\n): CommerceManifest {\n const capabilities = [\n {\n key: \"conversation_core\",\n revisionId: \"core-revision\",\n position: 0,\n promptName: \"commerce/release-fixture/conversation_core/core-revision\",\n configuration: {},\n toolDescriptors: withTool ? [structuredClone(exampleTool)] : [],\n },\n ];\n return {\n contractVersion: \"commerce.v1\",\n releaseId: \"release-fixture\",\n runnerCompatibility: \"^1.0.0\",\n capabilities,\n selectedCapabilityKeys: [\"conversation_core\"],\n grantedTools: withTool\n ? [\n {\n toolId: exampleTool.toolId,\n toolRevisionId: exampleTool.toolRevisionId,\n toolName: exampleTool.name,\n definitionVersion: \"1.0.0\",\n capabilityKeys: [\"conversation_core\"],\n },\n ]\n : [],\n responseContract: structuredClone(EMPTY_RESPONSE_CONTRACT),\n responseContractHash: digest(\n responseContractCanonicalJson(EMPTY_RESPONSE_CONTRACT),\n ),\n };\n}\nexport function exampleGrant(\n manifest: CommerceManifest,\n): CommerceConversationGrant {\n return {\n id: \"grant-fixture\",\n shopId: exampleTurn.shopId,\n conversationId: exampleTurn.conversationId,\n initialInboundVersion: 1,\n releaseId: manifest.releaseId,\n selectedCapabilityKeys: [...manifest.selectedCapabilityKeys],\n grantedTools: structuredClone(manifest.grantedTools),\n runnerVersion: \"1.0.0\",\n createdAt: \"2026-09-20T00:00:00.000Z\",\n expiresAt: null,\n };\n}\nexport const exampleFinal: CommerceFinalResponse = {\n answerKind: \"REFER_TO_STORE\",\n replyText:\n \"I cannot verify that information. Please contact the store directly.\",\n referralReason: \"INSUFFICIENT_TOOLS\",\n detectedLanguageTag: null,\n detectedLanguageConfidence: null,\n evidenceIds: [],\n details: {},\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,IAAM,cAA8B;AAAA,EACzC,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,aAAa;AAAA,EACb,aAAa;AAAA,IACX,MAAM;AAAA,IACN,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,WAAW,GAAG,WAAW,IAAI,EAAE;AAAA,IACvE,UAAU,CAAC,QAAQ;AAAA,IACnB,sBAAsB;AAAA,EACxB;AACF;AACO,IAAM,oBAA4C;AAAA,EACvD,MAAM,YAAY;AAAA,EAClB,mBAAmB;AAAA,EACnB,aAAa,YAAY;AAAA,EACzB,aAAa,YAAY;AAAA,EACzB,WAAW;AAAA,IACT,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,YAAY,IAAI,OAAO,EAAE;AAAA,IACzB,UACE;AAAA,IACF,eAAe;AAAA,IACf,WAAW,EAAE,QAAQ,EAAE,OAAO,SAAS,EAAE;AAAA,IACzC,YAAY;AAAA,EACd;AAAA,EACA,kBAAkB;AAAA,IAChB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AACF;AACO,IAAM,cAAoC;AAAA,EAC/C,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,gBAAgB;AAClB;AACO,SAAS,gBACd,QACA,WAAW,OACO;AAClB,QAAM,eAAe;AAAA,IACnB;AAAA,MACE,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,eAAe,CAAC;AAAA,MAChB,iBAAiB,WAAW,CAAC,gBAAgB,WAAW,CAAC,IAAI,CAAC;AAAA,IAChE;AAAA,EACF;AACA,SAAO;AAAA,IACL,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,qBAAqB;AAAA,IACrB;AAAA,IACA,wBAAwB,CAAC,mBAAmB;AAAA,IAC5C,cAAc,WACV;AAAA,MACE;AAAA,QACE,QAAQ,YAAY;AAAA,QACpB,gBAAgB,YAAY;AAAA,QAC5B,UAAU,YAAY;AAAA,QACtB,mBAAmB;AAAA,QACnB,gBAAgB,CAAC,mBAAmB;AAAA,MACtC;AAAA,IACF,IACA,CAAC;AAAA,IACL,kBAAkB,gBAAgB,uBAAuB;AAAA,IACzD,sBAAsB;AAAA,MACpB,8BAA8B,uBAAuB;AAAA,IACvD;AAAA,EACF;AACF;AACO,SAAS,aACd,UAC2B;AAC3B,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ,YAAY;AAAA,IACpB,gBAAgB,YAAY;AAAA,IAC5B,uBAAuB;AAAA,IACvB,WAAW,SAAS;AAAA,IACpB,wBAAwB,CAAC,GAAG,SAAS,sBAAsB;AAAA,IAC3D,cAAc,gBAAgB,SAAS,YAAY;AAAA,IACnD,eAAe;AAAA,IACf,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AACF;AACO,IAAM,eAAsC;AAAA,EACjD,YAAY;AAAA,EACZ,WACE;AAAA,EACF,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,4BAA4B;AAAA,EAC5B,aAAa,CAAC;AAAA,EACd,SAAS,CAAC;AACZ;","names":[]}
@@ -12,7 +12,7 @@ import {
12
12
  jsonBytes,
13
13
  manifestMatchesGrant,
14
14
  verifyResponseContract
15
- } from "../../chunk-GLNBHQKH.js";
15
+ } from "../../chunk-WVQWQFVR.js";
16
16
  import {
17
17
  LanguageSourceSchema
18
18
  } from "../../chunk-B6Y3QQLI.js";
@@ -2,9 +2,9 @@ import { z } from 'zod';
2
2
  import { PrimitiveType } from 'intl-messageformat';
3
3
 
4
4
  declare const LanguageSourceSchema: z.ZodEnum<{
5
- shopify: "shopify";
6
5
  "customer-explicit": "customer-explicit";
7
6
  detected: "detected";
7
+ shopify: "shopify";
8
8
  "merchant-default": "merchant-default";
9
9
  "platform-default": "platform-default";
10
10
  }>;
@@ -20,9 +20,9 @@ declare const TimeZoneIdSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, st
20
20
  declare const InternationalContextSchema: z.ZodObject<{
21
21
  languageTag: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
22
22
  languageSource: z.ZodNullable<z.ZodEnum<{
23
- shopify: "shopify";
24
23
  "customer-explicit": "customer-explicit";
25
24
  detected: "detected";
25
+ shopify: "shopify";
26
26
  "merchant-default": "merchant-default";
27
27
  "platform-default": "platform-default";
28
28
  }>>;
@@ -384,9 +384,9 @@ declare const ShopifyCheckoutCreatedEventV2Schema: z.ZodObject<{
384
384
  internationalContext: z.ZodOptional<z.ZodObject<{
385
385
  languageTag: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
386
386
  languageSource: z.ZodNullable<z.ZodEnum<{
387
- shopify: "shopify";
388
387
  "customer-explicit": "customer-explicit";
389
388
  detected: "detected";
389
+ shopify: "shopify";
390
390
  "merchant-default": "merchant-default";
391
391
  "platform-default": "platform-default";
392
392
  }>>;
@@ -421,9 +421,9 @@ declare const ShopifyCartActivityEventV2Schema: z.ZodObject<{
421
421
  internationalContext: z.ZodOptional<z.ZodObject<{
422
422
  languageTag: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
423
423
  languageSource: z.ZodNullable<z.ZodEnum<{
424
- shopify: "shopify";
425
424
  "customer-explicit": "customer-explicit";
426
425
  detected: "detected";
426
+ shopify: "shopify";
427
427
  "merchant-default": "merchant-default";
428
428
  "platform-default": "platform-default";
429
429
  }>>;
@@ -456,9 +456,9 @@ declare const ShopifyCheckoutUpdatedEventV2Schema: z.ZodObject<{
456
456
  internationalContext: z.ZodOptional<z.ZodObject<{
457
457
  languageTag: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
458
458
  languageSource: z.ZodNullable<z.ZodEnum<{
459
- shopify: "shopify";
460
459
  "customer-explicit": "customer-explicit";
461
460
  detected: "detected";
461
+ shopify: "shopify";
462
462
  "merchant-default": "merchant-default";
463
463
  "platform-default": "platform-default";
464
464
  }>>;
@@ -490,9 +490,9 @@ declare const ShopifyOrderCompletedEventV2Schema: z.ZodObject<{
490
490
  internationalContext: z.ZodOptional<z.ZodObject<{
491
491
  languageTag: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
492
492
  languageSource: z.ZodNullable<z.ZodEnum<{
493
- shopify: "shopify";
494
493
  "customer-explicit": "customer-explicit";
495
494
  detected: "detected";
495
+ shopify: "shopify";
496
496
  "merchant-default": "merchant-default";
497
497
  "platform-default": "platform-default";
498
498
  }>>;
@@ -527,9 +527,9 @@ declare const ShopifyRecoveryEventV2Schema: z.ZodDiscriminatedUnion<[z.ZodObject
527
527
  internationalContext: z.ZodOptional<z.ZodObject<{
528
528
  languageTag: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
529
529
  languageSource: z.ZodNullable<z.ZodEnum<{
530
- shopify: "shopify";
531
530
  "customer-explicit": "customer-explicit";
532
531
  detected: "detected";
532
+ shopify: "shopify";
533
533
  "merchant-default": "merchant-default";
534
534
  "platform-default": "platform-default";
535
535
  }>>;
@@ -560,9 +560,9 @@ declare const ShopifyRecoveryEventV2Schema: z.ZodDiscriminatedUnion<[z.ZodObject
560
560
  internationalContext: z.ZodOptional<z.ZodObject<{
561
561
  languageTag: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
562
562
  languageSource: z.ZodNullable<z.ZodEnum<{
563
- shopify: "shopify";
564
563
  "customer-explicit": "customer-explicit";
565
564
  detected: "detected";
565
+ shopify: "shopify";
566
566
  "merchant-default": "merchant-default";
567
567
  "platform-default": "platform-default";
568
568
  }>>;
@@ -595,9 +595,9 @@ declare const ShopifyRecoveryEventV2Schema: z.ZodDiscriminatedUnion<[z.ZodObject
595
595
  internationalContext: z.ZodOptional<z.ZodObject<{
596
596
  languageTag: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
597
597
  languageSource: z.ZodNullable<z.ZodEnum<{
598
- shopify: "shopify";
599
598
  "customer-explicit": "customer-explicit";
600
599
  detected: "detected";
600
+ shopify: "shopify";
601
601
  "merchant-default": "merchant-default";
602
602
  "platform-default": "platform-default";
603
603
  }>>;
@@ -627,9 +627,9 @@ declare const ShopifyRecoveryEventV2Schema: z.ZodDiscriminatedUnion<[z.ZodObject
627
627
  internationalContext: z.ZodOptional<z.ZodObject<{
628
628
  languageTag: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
629
629
  languageSource: z.ZodNullable<z.ZodEnum<{
630
- shopify: "shopify";
631
630
  "customer-explicit": "customer-explicit";
632
631
  detected: "detected";
632
+ shopify: "shopify";
633
633
  "merchant-default": "merchant-default";
634
634
  "platform-default": "platform-default";
635
635
  }>>;
@@ -672,7 +672,7 @@ declare function safeParseShopifyRecoveryEventV2(input: unknown): z.ZodSafeParse
672
672
  };
673
673
  internationalContext?: {
674
674
  languageTag: string | null;
675
- languageSource: "shopify" | "customer-explicit" | "detected" | "merchant-default" | "platform-default" | null;
675
+ languageSource: "customer-explicit" | "detected" | "shopify" | "merchant-default" | "platform-default" | null;
676
676
  countryCode: string | null;
677
677
  currencyCode: string | null;
678
678
  timeZone: string | null;
@@ -699,7 +699,7 @@ declare function safeParseShopifyRecoveryEventV2(input: unknown): z.ZodSafeParse
699
699
  };
700
700
  internationalContext?: {
701
701
  languageTag: string | null;
702
- languageSource: "shopify" | "customer-explicit" | "detected" | "merchant-default" | "platform-default" | null;
702
+ languageSource: "customer-explicit" | "detected" | "shopify" | "merchant-default" | "platform-default" | null;
703
703
  countryCode: string | null;
704
704
  currencyCode: string | null;
705
705
  timeZone: string | null;
@@ -725,7 +725,7 @@ declare function safeParseShopifyRecoveryEventV2(input: unknown): z.ZodSafeParse
725
725
  };
726
726
  internationalContext?: {
727
727
  languageTag: string | null;
728
- languageSource: "shopify" | "customer-explicit" | "detected" | "merchant-default" | "platform-default" | null;
728
+ languageSource: "customer-explicit" | "detected" | "shopify" | "merchant-default" | "platform-default" | null;
729
729
  countryCode: string | null;
730
730
  currencyCode: string | null;
731
731
  timeZone: string | null;
@@ -754,7 +754,7 @@ declare function safeParseShopifyRecoveryEventV2(input: unknown): z.ZodSafeParse
754
754
  };
755
755
  internationalContext?: {
756
756
  languageTag: string | null;
757
- languageSource: "shopify" | "customer-explicit" | "detected" | "merchant-default" | "platform-default" | null;
757
+ languageSource: "customer-explicit" | "detected" | "shopify" | "merchant-default" | "platform-default" | null;
758
758
  countryCode: string | null;
759
759
  currencyCode: string | null;
760
760
  timeZone: string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modainteract/moda-interact-shared",
3
- "version": "0.14.0",
3
+ "version": "0.14.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commerce/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 { 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()]);\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);\nconst mediaType = z.string().min(1).max(128).refine((value) => value === value.toLowerCase() && /^[a-z0-9!#$&^_.+-]+\\/[a-z0-9!#$&^_.+-]+$/.test(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) });\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);\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 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: { maxSearchResults: 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: { maxSearchResults: 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 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 ToolBindingSchema = z.strictObject({\n toolId: IdSchema,\n toolRevisionId: IdSchema,\n});\nexport const ToolBindingsSchema = z\n .array(ToolBindingSchema)\n .max(32)\n .refine((v) => distinct(v.map((x) => x.toolId)));\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;\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 (![\"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 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 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)) result[key] = input[m.input];\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});\nexport function capabilityHashInput(\n promptTemplate: string,\n configuration: unknown,\n toolBindings: unknown,\n) {\n if (!promptTemplate.trim() || promptTemplate.length > 32000)\n throw new TypeError(\"Invalid capability prompt\");\n return {\n contractVersion: ContractVersionSchema.value,\n promptTemplate,\n configuration,\n toolBindings: ToolBindingsSchema.parse(toolBindings).sort((a, b) =>\n a.toolId < b.toolId ? -1 : 1,\n ),\n };\n}\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 .min(1)\n .max(32)\n .refine((v) => distinct(v) && v.includes(\"conversation_core\")),\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 CommerceConfigurationSchema = z.strictObject({\n maxRecommendations: z.number().int().min(1).max(3).optional(),\n maxSearchResults: z.number().int().min(1).max(20).optional(),\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 key: ID,\n revisionId: ID,\n position: z.number().int().nonnegative(),\n promptName: z.string().min(1).max(512),\n configuration: CommerceConfigurationSchema,\n toolDescriptors: z.array(ToolDescriptorSchema).max(32),\n }),\n )\n .min(1)\n .max(32),\n selectedCapabilityKeys: z.array(ID).min(1).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 if (\n !distinct(keys) ||\n !keys.includes(\"conversation_core\") ||\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 )\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 if (\n cap.promptName !==\n `commerce/${v.releaseId}/${cap.key}/${cap.revisionId}`\n )\n c.addIssue({ code: \"custom\", message: \"Prompt identity mismatch\" });\n for (const d of cap.toolDescriptors) {\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 }\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 binding union\",\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 { z } from \"zod\";\nimport { 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 const CommerceCapabilityBindingSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({\n kind: z.literal(\"BASE\"),\n key: z.literal(\"conversation_core\"),\n }),\n z.strictObject({\n kind: z.literal(\"FEATURE\"),\n key: IdSchema,\n featureId: IdSchema,\n }),\n z.strictObject({\n kind: z.literal(\"RECOVERY_POLICY\"),\n key: z.literal(\"discount_assistance\"),\n }),\n]);\nexport type CommerceCapabilityBinding = z.infer<\n typeof CommerceCapabilityBindingSchema\n>;\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 binding: CommerceCapabilityBinding;\n enabled: boolean;\n position: number;\n }>,\n facts: {\n features: FeatureFacts[];\n offerMode: \"NONE\" | \"FIXED\" | \"AI_BEST_APPLICABLE\" | null;\n },\n) {\n const selected = candidates\n .filter((c) => {\n const b = CommerceCapabilityBindingSchema.parse(c.binding);\n if (!c.enabled) return false;\n if (b.kind === \"BASE\") return true;\n if (b.kind === \"RECOVERY_POLICY\")\n return (\n facts.offerMode === \"FIXED\" ||\n facts.offerMode === \"AI_BEST_APPLICABLE\"\n );\n const f = facts.features.find((f) => f.id === b.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 (!selected.some((c) => c.binding.kind === \"BASE\"))\n throw new TypeError(\"Base capability unavailable\");\n if (\n new Set(selected.map((c) => c.binding.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.binding.key);\n}\nexport function deduplicateTools(\n capabilities: Array<{ key: string; toolDescriptors: 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 for (const d of cap.toolDescriptors) {\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","z","z","f"]}