@theelena/sdk 0.0.0-stage → 0.1.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.
- package/README.md +209 -2
- package/dist/agent.d.ts +3048 -0
- package/dist/agent.js +1786 -0
- package/dist/agent.js.map +1 -0
- package/dist/index.d.ts +901 -0
- package/dist/index.js +1766 -0
- package/dist/index.js.map +1 -0
- package/dist/key-transport.d-Bopgxw9r.d.ts +1487 -0
- package/examples/storefront-smoke.ts +245 -0
- package/examples/storefront.ts +63 -0
- package/guides/external-agents.md +51 -0
- package/package.json +53 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/agent/index.ts","../../shared/src/agent-contracts/common.ts","../../shared/src/agent-contracts/access.ts","../../shared/src/agent-contracts/catalog.ts","../../shared/src/agent-contracts/operations.ts","../../shared/src/agent-contracts/public-connection.ts","../src/key-transport.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport * as contracts from '../../../shared/src/agent-contracts';\nimport {\n assertOptionKeys,\n createKeyTransport,\n ElenaAgentTransportError,\n explicitOrigin,\n jsonBody,\n pageQuery,\n parseWire,\n resourceId,\n type ElenaKeyPageQuery,\n type ElenaKeyRequestOptions,\n type ElenaKeyTransportOptions,\n} from '../key-transport';\n\nexport * from '../../../shared/src/agent-contracts';\nexport { ElenaAgentTransportError } from '../key-transport';\nexport type {\n ElenaKeyPageQuery,\n ElenaKeyRequestOptions,\n ElenaKeyTransportOptions,\n ElenaKeyTransportErrorCode,\n} from '../key-transport';\n\nfunction assertServerRuntime(): void {\n if (\n typeof window !== 'undefined' ||\n typeof document !== 'undefined' ||\n typeof process === 'undefined' ||\n typeof process.versions?.node !== 'string'\n ) {\n throw new Error('Elena agent client is server-only.');\n }\n}\nassertServerRuntime();\n\nexport interface ElenaAgentClientOptions extends ElenaKeyTransportOptions {\n agentKey: string;\n /** Required before consuming operation responses. Never inferred from the API origin. */\n staffOrigin?: string;\n}\n\nexport interface ElenaAgentClient {\n context: { get(options?: ElenaKeyRequestOptions): Promise<contracts.ElenaAgentContextV1> };\n catalog: {\n categories: {\n list(\n query?: ElenaKeyPageQuery,\n options?: ElenaKeyRequestOptions,\n ): Promise<contracts.ElenaAgentCategoryListV1>;\n get(\n id: string,\n options?: ElenaKeyRequestOptions,\n ): Promise<contracts.ElenaAgentCategoryResponseV1>;\n };\n products: {\n list(\n query?: ElenaKeyPageQuery,\n options?: ElenaKeyRequestOptions,\n ): Promise<contracts.ElenaAgentProductListV1>;\n get(\n id: string,\n options?: ElenaKeyRequestOptions,\n ): Promise<contracts.ElenaAgentProductResponseV1>;\n };\n };\n assets: {\n get(id: string, options?: ElenaKeyRequestOptions): Promise<contracts.ElenaAgentAssetV1>;\n };\n media: {\n stage(\n metadata: contracts.ElenaAgentMediaStageRequestV1,\n file: Blob,\n options?: ElenaKeyRequestOptions,\n ): Promise<contracts.ElenaAgentMediaStagedV1>;\n get(id: string, options?: ElenaKeyRequestOptions): Promise<contracts.ElenaAgentMediaStagedV1>;\n };\n imports: {\n preview(\n input: contracts.ElenaAgentImportPreviewRequestV1,\n options?: ElenaKeyRequestOptions,\n ): Promise<contracts.ElenaAgentImportPreviewV1>;\n get(id: string, options?: ElenaKeyRequestOptions): Promise<contracts.ElenaAgentImportPreviewV1>;\n };\n operations: {\n propose(\n input: contracts.ElenaAgentProposalRequestV1,\n options?: ElenaKeyRequestOptions,\n ): Promise<contracts.ElenaAgentOperationV1>;\n list(\n query?: ElenaKeyPageQuery,\n options?: ElenaKeyRequestOptions,\n ): Promise<contracts.ElenaAgentOperationListV1>;\n get(id: string, options?: ElenaKeyRequestOptions): Promise<contracts.ElenaAgentOperationV1>;\n apply(\n id: string,\n input: contracts.ElenaAgentApplyRequestV1,\n options?: ElenaKeyRequestOptions,\n ): Promise<contracts.ElenaAgentOperationV1>;\n };\n}\n\nexport function createElenaAgentClient(options: ElenaAgentClientOptions): ElenaAgentClient {\n assertServerRuntime();\n assertOptionKeys(options, [\n 'baseUrl',\n 'agentKey',\n 'staffOrigin',\n 'fetch',\n 'timeoutMs',\n 'maxRetries',\n 'testing',\n ]);\n if (!contracts.elenaAgentSecretSchema.safeParse(options.agentKey).success) {\n throw new ElenaAgentTransportError('CREDENTIAL_WRONG_FAMILY');\n }\n const { request } = createKeyTransport(options, 'x-elena-agent-key', options.agentKey);\n const staffOrigin =\n options.staffOrigin === undefined ? undefined : explicitOrigin(options.staffOrigin);\n const root = '/api/v1/agent';\n\n function requireStaffOrigin(): void {\n if (!staffOrigin) throw new ElenaAgentTransportError('ORIGIN_REJECTED');\n }\n\n function operationResponse(\n operation: contracts.ElenaAgentOperationV1,\n id?: string,\n hash?: string,\n ) {\n requireStaffOrigin();\n const approval = new URL(operation.approvalUrl);\n if (\n approval.origin !== staffOrigin ||\n approval.pathname !== `/agent-operations/${operation.operationId}` ||\n approval.search ||\n approval.hash ||\n (id !== undefined && operation.operationId !== id) ||\n (hash !== undefined && operation.payloadHash !== hash)\n ) {\n throw new ElenaAgentTransportError('INVALID_RESPONSE');\n }\n return operation;\n }\n\n async function getOperation(id: string, requestOptions?: ElenaKeyRequestOptions) {\n requireStaffOrigin();\n const expectedId = resourceId(id);\n return operationResponse(\n await request(\n `${root}/operations/${expectedId}`,\n contracts.elenaAgentOperationSchema,\n requestOptions,\n ),\n expectedId,\n );\n }\n\n return Object.freeze({\n context: Object.freeze({\n get: (options?: ElenaKeyRequestOptions) =>\n request(`${root}/context`, contracts.elenaAgentContextSchema, options),\n }),\n catalog: Object.freeze({\n categories: Object.freeze({\n list: (query?: ElenaKeyPageQuery, options?: ElenaKeyRequestOptions) =>\n request(\n `${root}/catalog/categories${pageQuery(query)}`,\n contracts.elenaAgentCategoryListSchema,\n options,\n ),\n get: async (id: string, options?: ElenaKeyRequestOptions) => {\n const expectedId = resourceId(id);\n const result = await request(\n `${root}/catalog/categories/${expectedId}`,\n contracts.elenaAgentCategoryResponseSchema,\n options,\n );\n if (result.category.id !== expectedId)\n throw new ElenaAgentTransportError('INVALID_RESPONSE');\n return result;\n },\n }),\n products: Object.freeze({\n list: (query?: ElenaKeyPageQuery, options?: ElenaKeyRequestOptions) =>\n request(\n `${root}/catalog/products${pageQuery(query)}`,\n contracts.elenaAgentProductListSchema,\n options,\n ),\n get: async (id: string, options?: ElenaKeyRequestOptions) => {\n const expectedId = resourceId(id);\n const result = await request(\n `${root}/catalog/products/${expectedId}`,\n contracts.elenaAgentProductResponseSchema,\n options,\n );\n if (result.product.id !== expectedId)\n throw new ElenaAgentTransportError('INVALID_RESPONSE');\n return result;\n },\n }),\n }),\n assets: Object.freeze({\n get: async (id: string, options?: ElenaKeyRequestOptions) => {\n const expectedId = resourceId(id);\n const result = await request(\n `${root}/assets/${expectedId}`,\n contracts.elenaAgentAssetSchema,\n options,\n );\n if (result.assetId !== expectedId) throw new ElenaAgentTransportError('INVALID_RESPONSE');\n return result;\n },\n }),\n media: Object.freeze({\n stage: async (\n input: contracts.ElenaAgentMediaStageRequestV1,\n file: Blob,\n options?: ElenaKeyRequestOptions,\n ) => {\n const metadata = parseWire(contracts.elenaAgentMediaStageRequestSchema, input);\n const requestOptions = options ?? {};\n assertOptionKeys(requestOptions, ['signal', 'timeoutMs']);\n const timeoutMs = requestOptions.timeoutMs ?? 120_000;\n if (\n !Number.isInteger(timeoutMs) ||\n timeoutMs < 1 ||\n timeoutMs > 300_000 ||\n (requestOptions.signal !== undefined && !(requestOptions.signal instanceof AbortSignal))\n ) {\n throw new ElenaAgentTransportError('INVALID_REQUEST');\n }\n if (requestOptions.signal?.aborted) throw new ElenaAgentTransportError('ABORTED');\n const deadline = Date.now() + timeoutMs;\n let readTimer: ReturnType<typeof setTimeout> | undefined;\n let readTimedOut = false;\n let onAbort: (() => void) | undefined;\n let snapshot: Blob;\n let hash: string;\n try {\n if (\n !(file instanceof Blob) ||\n file.size !== metadata.bytes ||\n file.type !== metadata.mimeType\n ) {\n throw new Error('Invalid media');\n }\n // Node 18-compatible race; bound both allocation (intrinsic Blob slice) and elapsed read time.\n // The slice removes overridable subclass methods before invoking the native byte reader.\n const boundedFile = Blob.prototype.slice.call(file, 0, metadata.bytes, metadata.mimeType);\n const reading = Blob.prototype.arrayBuffer.call(boundedFile) as Promise<ArrayBuffer>;\n const interrupted = new Promise<never>((_, reject) => {\n readTimer = setTimeout(() => {\n readTimedOut = true;\n reject(new Error('Read timeout'));\n }, timeoutMs);\n onAbort = () => reject(new Error('Read aborted'));\n requestOptions.signal?.addEventListener('abort', onAbort, { once: true });\n if (requestOptions.signal?.aborted) onAbort();\n });\n const bytes = await Promise.race([reading, interrupted]);\n if (bytes.byteLength !== metadata.bytes) throw new Error('Invalid media');\n hash = createHash('sha256').update(new Uint8Array(bytes)).digest('hex');\n if (hash !== metadata.sha256) throw new Error('Invalid media');\n snapshot = new Blob([bytes], { type: metadata.mimeType });\n } catch {\n throw new ElenaAgentTransportError(\n requestOptions.signal?.aborted\n ? 'ABORTED'\n : readTimedOut || Date.now() >= deadline\n ? 'TIMEOUT'\n : 'MEDIA_INVALID',\n );\n } finally {\n clearTimeout(readTimer);\n if (onAbort) requestOptions.signal?.removeEventListener('abort', onAbort);\n }\n const remainingMs = deadline - Date.now();\n if (remainingMs <= 0) throw new ElenaAgentTransportError('TIMEOUT');\n const result = await request(\n `${root}/media/stage`,\n contracts.elenaAgentMediaStagedSchema,\n { ...requestOptions, timeoutMs: remainingMs },\n () => {\n const form = new FormData();\n form.set('metadata', JSON.stringify(metadata));\n form.set('file', snapshot, metadata.fileName);\n return form;\n },\n true,\n );\n if (\n result.sha256 !== hash ||\n result.bytes !== metadata.bytes ||\n result.mimeType !== metadata.mimeType\n ) {\n throw new ElenaAgentTransportError('INVALID_RESPONSE');\n }\n return result;\n },\n get: async (id: string, options?: ElenaKeyRequestOptions) => {\n const expectedId = resourceId(id);\n const result = await request(\n `${root}/media/staged/${expectedId}`,\n contracts.elenaAgentMediaStagedSchema,\n options,\n );\n if (result.stagingId !== expectedId) throw new ElenaAgentTransportError('INVALID_RESPONSE');\n return result;\n },\n }),\n imports: Object.freeze({\n preview: async (\n input: contracts.ElenaAgentImportPreviewRequestV1,\n options?: ElenaKeyRequestOptions,\n ) => {\n const normalized = parseWire(contracts.elenaAgentImportPreviewRequestSchema, input);\n const refs = new Set(\n [...normalized.categories, ...normalized.items].map((item) => item.ref),\n );\n const result = await request(\n `${root}/imports/preview`,\n contracts.elenaAgentImportPreviewSchema,\n options,\n jsonBody(contracts.elenaAgentImportPreviewRequestSchema, normalized),\n );\n if (result.items.length !== refs.size || result.items.some((item) => !refs.has(item.ref))) {\n throw new ElenaAgentTransportError('INVALID_RESPONSE');\n }\n return result;\n },\n get: async (id: string, options?: ElenaKeyRequestOptions) => {\n const expectedId = resourceId(id);\n const result = await request(\n `${root}/imports/${expectedId}`,\n contracts.elenaAgentImportPreviewSchema,\n options,\n );\n if (result.importId !== expectedId) throw new ElenaAgentTransportError('INVALID_RESPONSE');\n return result;\n },\n }),\n operations: Object.freeze({\n propose: async (\n input: contracts.ElenaAgentProposalRequestV1,\n options?: ElenaKeyRequestOptions,\n ) => {\n requireStaffOrigin();\n return operationResponse(\n await request(\n `${root}/operations`,\n contracts.elenaAgentOperationSchema,\n options,\n jsonBody(contracts.elenaAgentProposalRequestSchema, input),\n ),\n );\n },\n list: async (query?: ElenaKeyPageQuery, options?: ElenaKeyRequestOptions) => {\n requireStaffOrigin();\n const result = await request(\n `${root}/operations${pageQuery(query)}`,\n contracts.elenaAgentOperationListSchema,\n options,\n );\n result.operations.forEach((operation) => operationResponse(operation));\n return result;\n },\n get: getOperation,\n apply: async (\n id: string,\n input: contracts.ElenaAgentApplyRequestV1,\n options?: ElenaKeyRequestOptions,\n ) => {\n requireStaffOrigin();\n const expectedId = resourceId(id);\n // Snapshot once before awaiting; retries and reconciliation share this exact identity.\n const normalized = parseWire(contracts.elenaAgentApplyRequestSchema, input);\n const body = jsonBody(contracts.elenaAgentApplyRequestSchema, normalized);\n const { payloadHash } = normalized;\n if (options?.signal?.aborted) throw new ElenaAgentTransportError('ABORTED');\n try {\n return operationResponse(\n await request(\n `${root}/operations/${expectedId}/apply`,\n contracts.elenaAgentOperationSchema,\n options,\n body,\n false,\n false,\n ),\n expectedId,\n payloadHash,\n );\n } catch (error) {\n if (\n !(error instanceof ElenaAgentTransportError) ||\n !['NETWORK_ERROR', 'TIMEOUT', 'ABORTED'].includes(error.code)\n )\n throw error;\n // Cancellation does not undo a sent mutation. Reconcile independently, never replay the POST blindly.\n try {\n const current = operationResponse(\n await getOperation(expectedId, { timeoutMs: 30_000 }),\n expectedId,\n payloadHash,\n );\n if (['applying', 'applied', 'partial', 'failed', 'cancelled'].includes(current.state))\n return current;\n } catch {\n /* Original safe error retains the ambiguity; callers may re-read status. */\n }\n throw error;\n }\n },\n }),\n });\n}\n","import { z } from 'zod';\n\nexport const ELENA_AGENT_CONTRACT_VERSION = '1' as const;\nexport const elenaAgentVersionSchema = z.literal(ELENA_AGENT_CONTRACT_VERSION);\nexport const elenaAgentIdSchema = z.uuid();\nexport const elenaAgentRevisionSchema = z.number().int().min(1).max(Number.MAX_SAFE_INTEGER);\nexport const elenaAgentTimestampSchema = z.iso.datetime();\nexport const elenaAgentHashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nexport const elenaAgentRefSchema = z.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,99}$/);\nexport const elenaAgentNameSchema = z.string().trim().min(1).max(160);\nexport const elenaAgentTextSchema = z.string().trim().min(1).max(2000);\nexport const elenaAgentCurrencySchema = z.literal('PEN');\n\n// Exact decimal(10,2) wire strings; never round, coerce, or pass through floats.\nexport const elenaAgentNonnegativeMoneySchema = z.string().regex(/^(0|[1-9]\\d{0,7})\\.\\d{2}$/);\nexport const elenaAgentMoneySchema = elenaAgentNonnegativeMoneySchema.refine(\n (value) => value !== '0.00',\n 'Product price must be greater than zero',\n);\n\nexport const ELENA_AGENT_LIMITS = Object.freeze({\n categoriesPerImport: 50,\n productsPerImport: 200,\n changesPerOperation: 200,\n publicationProducts: 200,\n galleryImages: 8,\n extraGroups: 10,\n optionsPerGroup: 30,\n jsonBytes: 1024 * 1024,\n mediaBytes: 10 * 1024 * 1024,\n stagedBytesPerRestaurant: 100 * 1024 * 1024,\n stagedFilesPerRestaurant: 20,\n openOperationsPerRestaurant: 20,\n openPreviewsPerRestaurant: 20,\n activeKeysPerFamily: 10,\n keyDefaultTtlSeconds: 30 * 24 * 60 * 60,\n keyMaxTtlSeconds: 90 * 24 * 60 * 60,\n pairingTtlSeconds: 600,\n pairingPollSeconds: 5,\n proposalTtlSeconds: 24 * 60 * 60,\n previewTtlSeconds: 24 * 60 * 60,\n stagingTtlSeconds: 48 * 60 * 60,\n applyWindowSeconds: 60 * 60,\n workerLeaseSeconds: 30,\n workerHeartbeatSeconds: 10,\n maxWorkerAttempts: 5,\n resultRetentionDays: 90,\n pageSize: 100,\n} as const);\n\nexport const elenaAgentErrorCodeSchema = z.enum([\n 'INVALID_REQUEST',\n 'UNSUPPORTED_VERSION',\n 'CREDENTIAL_REQUIRED',\n 'CREDENTIAL_INVALID',\n 'CREDENTIAL_EXPIRED',\n 'CREDENTIAL_REVOKED',\n 'CREDENTIAL_MIXED',\n 'CREDENTIAL_WRONG_FAMILY',\n 'OWNER_REQUIRED',\n 'ORIGIN_REJECTED',\n 'APPROVAL_REQUIRED',\n 'APPROVAL_REJECTED',\n 'APPROVAL_EXPIRED',\n 'APPROVAL_MISMATCH',\n 'SCOPE_REQUIRED',\n 'MODE_READ_ONLY',\n 'API_ACCESS_DISABLED',\n 'RESTAURANT_NOT_APPROVED',\n 'NOT_FOUND',\n 'VERSION_CONFLICT',\n 'IDEMPOTENCY_CONFLICT',\n 'INVALID_PRICE',\n 'UNCONFIRMED_DATA',\n 'REFERENCE_CONFLICT',\n 'MEDIA_INVALID',\n 'MEDIA_EXPIRED',\n 'QUOTA_EXCEEDED',\n 'RATE_LIMITED',\n 'PAIRING_PENDING',\n 'PAIRING_DENIED',\n 'PAIRING_EXPIRED',\n 'PAIRING_CONSUMED',\n 'OPERATION_TERMINAL',\n 'APPLY_WINDOW_EXPIRED',\n 'DEPENDENCY_FAILED',\n 'TEMPORARY_UNAVAILABLE',\n 'INTERNAL_ERROR',\n]);\nexport const elenaAgentErrorSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n error: z.strictObject({\n code: elenaAgentErrorCodeSchema,\n message: z.string().max(500),\n retryable: z.boolean(),\n requestId: elenaAgentRefSchema,\n retryAfterSeconds: z.number().int().min(1).max(3600).optional(),\n issues: z\n .array(\n z.strictObject({\n path: z.string().max(200),\n code: elenaAgentErrorCodeSchema,\n message: z.string().max(200),\n }),\n )\n .max(250)\n .optional(),\n }),\n});\nexport const elenaAgentPageQuerySchema = z.strictObject({\n version: elenaAgentVersionSchema,\n cursor: z\n .string()\n .regex(/^[a-zA-Z0-9_-]{1,512}$/)\n .optional(),\n limit: z.number().int().min(1).max(ELENA_AGENT_LIMITS.pageSize).default(50),\n});\nexport const elenaAgentEmptyRequestSchema = z.strictObject({ version: elenaAgentVersionSchema });\nexport const elenaAgentAckSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n ok: z.literal(true),\n});\n\nexport type ElenaAgentErrorCodeV1 = z.infer<typeof elenaAgentErrorCodeSchema>;\nexport type ElenaAgentErrorV1 = z.infer<typeof elenaAgentErrorSchema>;\nexport type ElenaAgentPageQueryV1 = z.infer<typeof elenaAgentPageQuerySchema>;\n","import { z } from 'zod';\nimport {\n ELENA_AGENT_LIMITS,\n elenaAgentCurrencySchema,\n elenaAgentIdSchema,\n elenaAgentNameSchema,\n elenaAgentRevisionSchema,\n elenaAgentTimestampSchema,\n elenaAgentVersionSchema,\n} from './common';\n\nexport const ELENA_AGENT_TRANSPORT = Object.freeze({\n agentPrefix: 'elena_sk_',\n agentHeader: 'x-elena-agent-key',\n agentPath: '/api/v1/agent',\n clientPrefix: 'elena_pk_',\n clientHeader: 'x-elena-client-key',\n clientPath: '/api/v1/public/sdk',\n ownerPath: '/api/v1/agent-access',\n} as const);\nexport const elenaAgentSecretSchema = z.string().regex(/^elena_sk_[A-Za-z0-9_-]{43}$/);\n// Public role, two unambiguous issuance representations. Manual values remain unchanged.\nexport const elenaManualClientKeySchema = z.string().regex(/^elena_pk_[A-Za-z0-9_-]{43}$/);\nexport const elenaManagedClientKeySchema = z\n .string()\n .max(160)\n .regex(\n /^elena_pk_m_[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\\.[1-9]\\d{0,15}\\.[A-Za-z0-9_-]{43}$/,\n );\nexport const elenaClientKeySchema = z.union([\n elenaManualClientKeySchema,\n elenaManagedClientKeySchema,\n]);\nexport const elenaAgentDeviceCodeSchema = z.string().regex(/^[A-Za-z0-9_-]{43}$/);\nexport const elenaAgentUserCodeSchema = z.string().regex(/^[A-HJ-NP-Z2-9]{4}-[A-HJ-NP-Z2-9]{4}$/);\nexport const elenaAgentModeSchema = z.enum(['read', 'mutate']);\nexport const elenaAgentScopeSchema = z.enum([\n 'catalog:read',\n 'catalog:write',\n 'catalog:publish',\n 'assets:read',\n 'assets:write',\n]);\nexport const elenaAgentScopesSchema = z\n .array(elenaAgentScopeSchema)\n .min(1)\n .max(5)\n .refine((scopes) => new Set(scopes).size === scopes.length, 'Duplicate scope')\n .refine((scopes) => scopes.includes('catalog:read'), 'catalog:read is mandatory');\nexport const elenaAgentActionSchema = z.enum([\n 'context.read',\n 'catalog.read',\n 'assets.read',\n 'assets.stage',\n 'operations.read',\n 'operations.propose',\n 'operations.apply',\n 'catalog.publish',\n]);\nexport const elenaAgentRestaurantSchema = z.strictObject({\n id: elenaAgentIdSchema,\n name: elenaAgentNameSchema,\n slug: z\n .string()\n .regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/)\n .max(100),\n currency: elenaAgentCurrencySchema,\n});\nconst keyTtl = z\n .number()\n .int()\n .min(3600)\n .max(ELENA_AGENT_LIMITS.keyMaxTtlSeconds)\n .default(ELENA_AGENT_LIMITS.keyDefaultTtlSeconds);\nexport const elenaAgentKeyCreateRequestSchema = z.discriminatedUnion('kind', [\n z.strictObject({\n version: elenaAgentVersionSchema,\n kind: z.literal('agent'),\n label: elenaAgentNameSchema,\n mode: elenaAgentModeSchema.default('read'),\n scopes: elenaAgentScopesSchema.default(['catalog:read', 'assets:read']),\n ttlSeconds: keyTtl,\n }),\n z.strictObject({\n version: elenaAgentVersionSchema,\n kind: z.literal('client'),\n label: elenaAgentNameSchema,\n ttlSeconds: keyTtl,\n }),\n]);\nexport const elenaAgentKeyPolicyRequestSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n expectedRevision: elenaAgentRevisionSchema,\n mode: elenaAgentModeSchema,\n scopes: elenaAgentScopesSchema,\n});\nexport const elenaAgentKeyRevokeRequestSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n expectedRevision: elenaAgentRevisionSchema,\n});\nexport const elenaAgentKeyReplaceRequestSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n expectedRevision: elenaAgentRevisionSchema,\n ttlSeconds: keyTtl,\n});\nconst keyMetadata = {\n id: elenaAgentIdSchema,\n label: elenaAgentNameSchema,\n displaySuffix: z.string().regex(/^[A-Za-z0-9_-]{6}$/),\n revision: elenaAgentRevisionSchema,\n status: z.enum(['active', 'revoked', 'expired']),\n createdAt: elenaAgentTimestampSchema,\n expiresAt: elenaAgentTimestampSchema,\n revokedAt: elenaAgentTimestampSchema.nullable(),\n lastUsedAt: elenaAgentTimestampSchema.nullable(),\n};\nexport const elenaAgentKeyMetadataSchema = z.discriminatedUnion('kind', [\n z.strictObject({\n ...keyMetadata,\n kind: z.literal('agent'),\n mode: elenaAgentModeSchema,\n scopes: elenaAgentScopesSchema,\n }),\n z.strictObject({ ...keyMetadata, kind: z.literal('client') }),\n]);\nexport const elenaAgentKeyListSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n keys: z.array(elenaAgentKeyMetadataSchema).max(20),\n});\nexport const elenaAgentKeyReceiptSchema = z.discriminatedUnion('kind', [\n z.strictObject({\n version: elenaAgentVersionSchema,\n kind: z.literal('agent'),\n key: elenaAgentKeyMetadataSchema.options[0],\n secret: elenaAgentSecretSchema,\n }),\n z.strictObject({\n version: elenaAgentVersionSchema,\n kind: z.literal('client'),\n key: elenaAgentKeyMetadataSchema.options[1],\n clientKey: elenaManualClientKeySchema,\n }),\n]);\nexport const elenaAgentKeyResponseSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n key: elenaAgentKeyMetadataSchema,\n});\n\n// Hosts must additionally pin these returned URLs to the explicitly configured origins.\nexport const elenaAgentHttpsUrlSchema = z\n .url({ protocol: /^https$/ })\n .max(2048)\n .refine(\n (value) => /^https:\\/\\/[^/?#@\\\\\\s]+(?:[/?#]|$)/.test(value),\n 'URL must not contain userinfo',\n );\n// Portable wire shape; consuming hosts enforce HTTPS outside development.\nexport const elenaAgentConnectionUrlSchema = z\n .url({ protocol: /^https?$/ })\n .max(2048)\n .refine(\n (value) => /^https?:\\/\\/[^/?#@\\\\\\s]+(?:[/?#]|$)/.test(value),\n 'URL must not contain userinfo',\n );\nexport const elenaAgentBaseUrlSchema = elenaAgentHttpsUrlSchema.refine(\n (value) => /^https:\\/\\/[^/?#@\\\\\\s]+\\/?$/.test(value),\n 'Base URL must be an explicit origin',\n);\nexport const elenaAgentConnectionOriginSchema = elenaAgentConnectionUrlSchema.refine(\n (value) => /^https?:\\/\\/[^/?#@\\\\\\s]+\\/?$/.test(value),\n 'Base URL must be an explicit origin',\n);\nexport const elenaAgentPairingStartRequestSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n label: elenaAgentNameSchema,\n});\nexport const elenaAgentPairingStartResponseSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n pairingId: elenaAgentIdSchema,\n deviceCode: elenaAgentDeviceCodeSchema,\n userCode: elenaAgentUserCodeSchema,\n verificationUrl: elenaAgentConnectionUrlSchema,\n expiresAt: elenaAgentTimestampSchema,\n intervalSeconds: z.literal(ELENA_AGENT_LIMITS.pairingPollSeconds),\n});\nexport const elenaAgentPairingPollRequestSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n deviceCode: elenaAgentDeviceCodeSchema,\n});\nexport const elenaAgentPairingReviewSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n label: elenaAgentNameSchema,\n userCode: elenaAgentUserCodeSchema,\n state: z.enum(['pending', 'approved', 'rejected', 'expired', 'consumed']),\n expiresAt: elenaAgentTimestampSchema,\n});\nexport const elenaAgentPairingDecisionRequestSchema = z.discriminatedUnion('decision', [\n z.strictObject({\n version: elenaAgentVersionSchema,\n userCode: elenaAgentUserCodeSchema,\n decision: z.literal('approve'),\n mode: elenaAgentModeSchema.default('read'),\n scopes: elenaAgentScopesSchema.default(['catalog:read', 'assets:read']),\n ttlSeconds: keyTtl,\n }),\n z.strictObject({\n version: elenaAgentVersionSchema,\n userCode: elenaAgentUserCodeSchema,\n decision: z.literal('reject'),\n }),\n]);\nexport const elenaAgentPairingPollResponseSchema = z.discriminatedUnion('status', [\n z.strictObject({\n version: elenaAgentVersionSchema,\n status: z.literal('pending'),\n expiresAt: elenaAgentTimestampSchema,\n intervalSeconds: z.literal(ELENA_AGENT_LIMITS.pairingPollSeconds),\n }),\n z.strictObject({\n version: elenaAgentVersionSchema,\n status: z.literal('delivered'),\n restaurant: elenaAgentRestaurantSchema,\n credential: elenaAgentKeyReceiptSchema.options[0],\n }),\n]);\nexport const elenaAgentContextSchema = z\n .strictObject({\n version: elenaAgentVersionSchema,\n restaurant: elenaAgentRestaurantSchema,\n principal: z.strictObject({\n kind: z.literal('agent'),\n credentialId: elenaAgentIdSchema,\n credentialRevision: elenaAgentRevisionSchema,\n mode: elenaAgentModeSchema,\n scopes: elenaAgentScopesSchema,\n expiresAt: elenaAgentTimestampSchema,\n }),\n capabilities: z.strictObject({\n apiAccess: z.literal(true),\n menu: z.literal(true),\n imports: z.boolean(),\n media: z.boolean(),\n publication: z.boolean(),\n }),\n actions: z\n .array(elenaAgentActionSchema)\n .min(1)\n .max(8)\n .refine((actions) => new Set(actions).size === actions.length, 'Duplicate action'),\n })\n .superRefine((value, ctx) => {\n const requiredScopes = {\n 'catalog.read': 'catalog:read',\n 'assets.read': 'assets:read',\n 'assets.stage': 'assets:write',\n 'operations.propose': 'catalog:write',\n 'operations.apply': 'catalog:write',\n 'catalog.publish': 'catalog:publish',\n } as const;\n const writes: Partial<Record<z.infer<typeof elenaAgentActionSchema>, true>> = {\n 'assets.stage': true,\n 'operations.propose': true,\n 'operations.apply': true,\n 'catalog.publish': true,\n };\n for (const action of value.actions) {\n if (value.principal.mode === 'read' && writes[action]) {\n ctx.addIssue({\n code: 'custom',\n path: ['actions'],\n message: 'Read mode cannot expose mutation actions',\n });\n }\n const scope = requiredScopes[action as keyof typeof requiredScopes];\n if (scope && !value.principal.scopes.includes(scope)) {\n ctx.addIssue({\n code: 'custom',\n path: ['actions'],\n message: 'Action exceeds granted scopes',\n });\n }\n }\n if (\n value.actions.includes('catalog.publish') &&\n !value.principal.scopes.includes('catalog:write')\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['actions'],\n message: 'Publication also requires catalog:write',\n });\n }\n const expectedCapabilities = {\n imports:\n value.actions.includes('operations.propose') && value.actions.includes('operations.apply'),\n media: value.actions.includes('assets.stage'),\n publication: value.actions.includes('catalog.publish'),\n };\n for (const capability of ['imports', 'media', 'publication'] as const) {\n if (value.capabilities[capability] !== expectedCapabilities[capability]) {\n ctx.addIssue({\n code: 'custom',\n path: ['capabilities', capability],\n message: 'Capability must match effective actions',\n });\n }\n }\n });\nexport const elenaClientContextSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n restaurant: elenaAgentRestaurantSchema,\n capabilities: z.strictObject({ menu: z.literal(true), assets: z.literal(true) }),\n});\n\nexport const elenaAgentCliAuthStatusSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n authenticated: z.boolean(),\n source: z.enum(['store', 'environment', 'none']),\n baseUrl: elenaAgentBaseUrlSchema.nullable(),\n credentialId: elenaAgentIdSchema.nullable(),\n restaurantId: elenaAgentIdSchema.nullable(),\n expiresAt: elenaAgentTimestampSchema.nullable(),\n});\nexport const elenaAgentCliLogoutSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n loggedOut: z.literal(true),\n remoteRevoked: z.literal(false),\n environmentCredentialPresent: z.boolean(),\n});\n\nexport type ElenaAgentScopeV1 = z.infer<typeof elenaAgentScopeSchema>;\nexport type ElenaAgentActionV1 = z.infer<typeof elenaAgentActionSchema>;\nexport type ElenaAgentKeyCreateRequestV1 = z.infer<typeof elenaAgentKeyCreateRequestSchema>;\nexport type ElenaAgentKeyPolicyRequestV1 = z.infer<typeof elenaAgentKeyPolicyRequestSchema>;\nexport type ElenaAgentKeyMetadataV1 = z.infer<typeof elenaAgentKeyMetadataSchema>;\nexport type ElenaAgentKeyReceiptV1 = z.infer<typeof elenaAgentKeyReceiptSchema>;\nexport type ElenaAgentPairingStartRequestV1 = z.infer<typeof elenaAgentPairingStartRequestSchema>;\nexport type ElenaAgentPairingStartResponseV1 = z.infer<typeof elenaAgentPairingStartResponseSchema>;\nexport type ElenaAgentPairingPollRequestV1 = z.infer<typeof elenaAgentPairingPollRequestSchema>;\nexport type ElenaAgentPairingPollResponseV1 = z.infer<typeof elenaAgentPairingPollResponseSchema>;\nexport type ElenaAgentPairingDecisionRequestV1 = z.infer<\n typeof elenaAgentPairingDecisionRequestSchema\n>;\nexport type ElenaAgentContextV1 = z.infer<typeof elenaAgentContextSchema>;\nexport type ElenaClientContextV1 = z.infer<typeof elenaClientContextSchema>;\nexport type ElenaAgentPairingReviewV1 = z.infer<typeof elenaAgentPairingReviewSchema>;\nexport type ElenaAgentKeyRevokeRequestV1 = z.infer<typeof elenaAgentKeyRevokeRequestSchema>;\nexport type ElenaAgentKeyReplaceRequestV1 = z.infer<typeof elenaAgentKeyReplaceRequestSchema>;\nexport type ElenaAgentKeyResponseV1 = z.infer<typeof elenaAgentKeyResponseSchema>;\nexport type ElenaAgentKeyListV1 = z.infer<typeof elenaAgentKeyListSchema>;\nexport type ElenaAgentCliAuthStatusV1 = z.infer<typeof elenaAgentCliAuthStatusSchema>;\nexport type ElenaAgentCliLogoutV1 = z.infer<typeof elenaAgentCliLogoutSchema>;\n","import { z } from 'zod';\nimport {\n ELENA_AGENT_LIMITS,\n elenaAgentHashSchema,\n elenaAgentIdSchema,\n elenaAgentMoneySchema,\n elenaAgentNameSchema,\n elenaAgentNonnegativeMoneySchema,\n elenaAgentRefSchema,\n elenaAgentRevisionSchema,\n elenaAgentTextSchema,\n elenaAgentTimestampSchema,\n elenaAgentVersionSchema,\n} from './common';\nimport { elenaAgentHttpsUrlSchema } from './access';\n\nexport const elenaAgentExistingTargetSchema = z.strictObject({\n kind: z.literal('id'),\n id: elenaAgentIdSchema,\n expectedVersion: elenaAgentRevisionSchema,\n});\nexport const elenaAgentExternalTargetSchema = z.strictObject({\n kind: z.literal('external'),\n namespace: elenaAgentRefSchema,\n key: elenaAgentRefSchema,\n expectedVersion: elenaAgentRevisionSchema.nullable(),\n});\nexport const elenaAgentTargetSchema = z.discriminatedUnion('kind', [\n elenaAgentExistingTargetSchema,\n elenaAgentExternalTargetSchema,\n]);\nexport const elenaAgentCategoryReferenceSchema = z.discriminatedUnion('kind', [\n elenaAgentExistingTargetSchema,\n z.strictObject({ kind: z.literal('ref'), ref: elenaAgentRefSchema }),\n]);\nexport const elenaAgentDescriptionSchema = z.discriminatedUnion('status', [\n z.strictObject({ status: z.literal('transcribed'), text: elenaAgentTextSchema }),\n z.strictObject({ status: z.literal('proposed'), text: elenaAgentTextSchema }),\n]);\nexport const elenaAgentConfirmedPriceSchema = z.strictObject({\n status: z.literal('confirmed'),\n amount: elenaAgentMoneySchema,\n basis: z.literal('operator'),\n});\nexport const elenaAgentDraftPriceSchema = z.discriminatedUnion('status', [\n elenaAgentConfirmedPriceSchema,\n z.strictObject({\n status: z.literal('unconfirmed'),\n reason: z.enum(['missing', 'illegible']),\n rawText: z.string().max(100).nullable(),\n }),\n]);\nexport const elenaAgentMediaReferenceSchema = z.discriminatedUnion('kind', [\n z.strictObject({\n kind: z.literal('existing'),\n assetId: elenaAgentIdSchema,\n sha256: elenaAgentHashSchema,\n }),\n z.strictObject({\n kind: z.literal('staged'),\n stagingId: elenaAgentIdSchema,\n sha256: elenaAgentHashSchema,\n }),\n]);\nexport const elenaAgentGallerySchema = z\n .array(elenaAgentMediaReferenceSchema)\n .max(ELENA_AGENT_LIMITS.galleryImages)\n .refine(\n (images) =>\n new Set(images.map((image) => (image.kind === 'existing' ? image.assetId : image.stagingId)))\n .size === images.length,\n 'Duplicate media reference',\n );\nexport const elenaAgentExtraOptionSchema = z.strictObject({\n name: elenaAgentNameSchema,\n additionalPrice: elenaAgentNonnegativeMoneySchema,\n order: z.number().int().min(0).max(1000),\n});\nexport const elenaAgentExtraGroupSchema = z\n .strictObject({\n name: elenaAgentNameSchema,\n required: z.boolean(),\n minSelections: z.number().int().min(0).max(ELENA_AGENT_LIMITS.optionsPerGroup),\n maxSelections: z.number().int().min(1).max(ELENA_AGENT_LIMITS.optionsPerGroup),\n order: z.number().int().min(0).max(1000),\n options: z.array(elenaAgentExtraOptionSchema).min(1).max(ELENA_AGENT_LIMITS.optionsPerGroup),\n })\n .superRefine((group, ctx) => {\n if (group.minSelections > group.maxSelections || group.maxSelections > group.options.length) {\n ctx.addIssue({\n code: 'custom',\n path: ['maxSelections'],\n message: 'Invalid selection bounds',\n });\n }\n if (\n (group.required && group.minSelections < 1) ||\n (!group.required && group.minSelections !== 0)\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['minSelections'],\n message: 'Required must match minimum selection count',\n });\n }\n if (\n new Set(\n group.options.map((option) => option.name.normalize('NFKC').trim().toLocaleLowerCase('es')),\n ).size !== group.options.length\n ) {\n ctx.addIssue({ code: 'custom', path: ['options'], message: 'Duplicate option name' });\n }\n });\nexport const elenaAgentExtrasSchema = z\n .strictObject({\n confirmed: z.literal(true),\n groups: z.array(elenaAgentExtraGroupSchema).max(ELENA_AGENT_LIMITS.extraGroups),\n })\n .refine(\n (extras) =>\n new Set(\n extras.groups.map((group) => group.name.normalize('NFKC').trim().toLocaleLowerCase('es')),\n ).size === extras.groups.length,\n 'Duplicate group name',\n );\nexport const elenaAgentCategoryDataSchema = z.strictObject({\n name: elenaAgentNameSchema,\n description: elenaAgentDescriptionSchema.nullable(),\n order: z.number().int().min(0).max(10000),\n});\nconst productFields = {\n type: z.literal('menu'),\n name: elenaAgentNameSchema,\n description: elenaAgentDescriptionSchema.nullable(),\n category: elenaAgentCategoryReferenceSchema,\n available: z.boolean(),\n images: elenaAgentGallerySchema,\n extras: elenaAgentExtrasSchema,\n};\nexport const elenaAgentProductDataSchema = z.strictObject({\n ...productFields,\n price: elenaAgentConfirmedPriceSchema,\n});\nexport const elenaAgentDraftProductDataSchema = z.strictObject({\n ...productFields,\n price: elenaAgentDraftPriceSchema,\n});\nexport const elenaAgentCategoryChangeSchema = z.strictObject({\n kind: z.literal('category.upsert'),\n ref: elenaAgentRefSchema,\n target: elenaAgentTargetSchema,\n data: elenaAgentCategoryDataSchema,\n});\nexport const elenaAgentProductChangeSchema = z.strictObject({\n kind: z.literal('product.upsert'),\n ref: elenaAgentRefSchema,\n target: elenaAgentTargetSchema,\n data: elenaAgentProductDataSchema,\n});\nexport const elenaAgentChangeSchema = z.discriminatedUnion('kind', [\n elenaAgentCategoryChangeSchema,\n elenaAgentProductChangeSchema,\n]);\n\nexport const elenaAgentCategorySchema = z.strictObject({\n id: elenaAgentIdSchema,\n revision: elenaAgentRevisionSchema,\n name: elenaAgentNameSchema,\n description: elenaAgentTextSchema.nullable(),\n order: z.number().int().min(0).max(10000),\n});\nexport const elenaAgentProductSchema = z.strictObject({\n id: elenaAgentIdSchema,\n revision: elenaAgentRevisionSchema,\n type: z.literal('menu'),\n name: elenaAgentNameSchema,\n basePrice: elenaAgentMoneySchema,\n description: elenaAgentTextSchema.nullable(),\n categoryId: elenaAgentIdSchema,\n available: z.boolean(),\n publishedToMenu: z.boolean(),\n isDraft: z.boolean(),\n images: z\n .array(z.strictObject({ assetId: elenaAgentIdSchema, sha256: elenaAgentHashSchema }))\n .max(ELENA_AGENT_LIMITS.galleryImages),\n /** Present on current native reads; optional only for retained v1 snapshots. */\n primaryImageId: elenaAgentIdSchema.nullable().optional(),\n extraGroups: z.array(elenaAgentExtraGroupSchema).max(ELENA_AGENT_LIMITS.extraGroups),\n});\nexport const elenaAgentCategoryListSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n categories: z.array(elenaAgentCategorySchema).max(ELENA_AGENT_LIMITS.pageSize),\n nextCursor: z\n .string()\n .regex(/^[a-zA-Z0-9_-]{1,512}$/)\n .nullable(),\n});\nexport const elenaAgentProductListSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n products: z.array(elenaAgentProductSchema).max(ELENA_AGENT_LIMITS.pageSize),\n nextCursor: z\n .string()\n .regex(/^[a-zA-Z0-9_-]{1,512}$/)\n .nullable(),\n});\nexport const elenaAgentProductResponseSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n product: elenaAgentProductSchema,\n /** Authoritative editing metadata; never infer primary image from gallery order. */\n editable: z.strictObject({\n restaurantId: elenaAgentIdSchema,\n productId: elenaAgentIdSchema,\n imageId: elenaAgentIdSchema.nullable(),\n categoryRevision: elenaAgentRevisionSchema,\n primaryImage: z.strictObject({ assetId: elenaAgentIdSchema, sha256: elenaAgentHashSchema }).nullable().optional(),\n imageEditorUrl: elenaAgentHttpsUrlSchema.optional(),\n }).optional(),\n});\nexport const elenaAgentCategoryResponseSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n category: elenaAgentCategorySchema,\n});\nexport const elenaAgentMediaStageRequestSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n idempotencyKey: elenaAgentRefSchema,\n fileName: z.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,119}\\.(?:jpg|jpeg|png|webp)$/),\n mimeType: z.enum(['image/jpeg', 'image/png', 'image/webp']),\n bytes: z.number().int().min(1).max(ELENA_AGENT_LIMITS.mediaBytes),\n sha256: elenaAgentHashSchema,\n});\nexport const elenaAgentMediaStagedSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n stagingId: elenaAgentIdSchema,\n sha256: elenaAgentHashSchema,\n mimeType: z.enum(['image/jpeg', 'image/png', 'image/webp']),\n bytes: z.number().int().min(1).max(ELENA_AGENT_LIMITS.mediaBytes),\n expiresAt: elenaAgentTimestampSchema,\n});\nexport const elenaAgentAssetSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n assetId: elenaAgentIdSchema,\n sha256: elenaAgentHashSchema,\n mimeType: z.enum(['image/jpeg', 'image/png', 'image/webp']),\n bytes: z.number().int().min(1).max(ELENA_AGENT_LIMITS.mediaBytes),\n});\n\n// Deliberately distinct from private product DTOs and from the unchanged slug API.\nexport const elenaClientAssetSchema = z.strictObject({\n assetId: elenaAgentIdSchema,\n url: elenaAgentHttpsUrlSchema,\n});\nexport const elenaClientCategorySchema = z.strictObject({\n id: elenaAgentIdSchema,\n name: elenaAgentNameSchema,\n description: elenaAgentTextSchema.nullable(),\n order: z.number().int().min(0).max(10000),\n});\nexport const elenaClientProductSchema = z.strictObject({\n id: elenaAgentIdSchema,\n type: z.literal('menu'),\n name: elenaAgentNameSchema,\n basePrice: elenaAgentMoneySchema,\n description: elenaAgentTextSchema.nullable(),\n categoryId: elenaAgentIdSchema,\n available: z.boolean(),\n images: z.array(elenaClientAssetSchema).max(ELENA_AGENT_LIMITS.galleryImages),\n extraGroups: z.array(elenaAgentExtraGroupSchema).max(ELENA_AGENT_LIMITS.extraGroups),\n});\nexport const elenaClientCatalogSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n categories: z.array(elenaClientCategorySchema).max(ELENA_AGENT_LIMITS.pageSize),\n products: z.array(elenaClientProductSchema).max(ELENA_AGENT_LIMITS.pageSize),\n nextCursor: z\n .string()\n .regex(/^[a-zA-Z0-9_-]{1,512}$/)\n .nullable(),\n});\nexport const elenaClientProductResponseSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n product: elenaClientProductSchema,\n});\nexport const elenaClientAssetResponseSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n asset: elenaClientAssetSchema,\n});\n\nexport type ElenaAgentTargetV1 = z.infer<typeof elenaAgentTargetSchema>;\nexport type ElenaAgentProductDataV1 = z.infer<typeof elenaAgentProductDataSchema>;\nexport type ElenaAgentCategoryDataV1 = z.infer<typeof elenaAgentCategoryDataSchema>;\nexport type ElenaAgentChangeV1 = z.infer<typeof elenaAgentChangeSchema>;\nexport type ElenaAgentProductV1 = z.infer<typeof elenaAgentProductSchema>;\nexport type ElenaAgentCategoryV1 = z.infer<typeof elenaAgentCategorySchema>;\nexport type ElenaAgentMediaStageRequestV1 = z.infer<typeof elenaAgentMediaStageRequestSchema>;\nexport type ElenaAgentMediaStagedV1 = z.infer<typeof elenaAgentMediaStagedSchema>;\nexport type ElenaAgentAssetV1 = z.infer<typeof elenaAgentAssetSchema>;\nexport type ElenaClientCatalogV1 = z.infer<typeof elenaClientCatalogSchema>;\nexport type ElenaClientProductV1 = z.infer<typeof elenaClientProductSchema>;\nexport type ElenaAgentCategoryListV1 = z.infer<typeof elenaAgentCategoryListSchema>;\nexport type ElenaAgentCategoryResponseV1 = z.infer<typeof elenaAgentCategoryResponseSchema>;\nexport type ElenaAgentProductListV1 = z.infer<typeof elenaAgentProductListSchema>;\nexport type ElenaAgentProductResponseV1 = z.infer<typeof elenaAgentProductResponseSchema>;\nexport type ElenaAgentMediaReferenceV1 = z.infer<typeof elenaAgentMediaReferenceSchema>;\nexport type ElenaAgentExtraGroupV1 = z.infer<typeof elenaAgentExtraGroupSchema>;\nexport type ElenaClientProductResponseV1 = z.infer<typeof elenaClientProductResponseSchema>;\nexport type ElenaClientAssetV1 = z.infer<typeof elenaClientAssetSchema>;\nexport type ElenaClientAssetResponseV1 = z.infer<typeof elenaClientAssetResponseSchema>;\n","import { z } from 'zod';\nimport {\n ELENA_AGENT_LIMITS,\n elenaAgentCurrencySchema,\n elenaAgentErrorCodeSchema,\n elenaAgentHashSchema,\n elenaAgentIdSchema,\n elenaAgentNameSchema,\n elenaAgentRefSchema,\n elenaAgentRevisionSchema,\n elenaAgentTimestampSchema,\n elenaAgentVersionSchema,\n} from './common';\nimport { elenaAgentConnectionUrlSchema } from './access';\nimport {\n elenaAgentCategoryChangeSchema,\n elenaAgentCategorySchema,\n elenaAgentChangeSchema,\n elenaAgentDescriptionSchema,\n elenaAgentDraftPriceSchema,\n elenaAgentDraftProductDataSchema,\n elenaAgentExistingTargetSchema,\n elenaAgentProductSchema,\n elenaAgentTargetSchema,\n} from './catalog';\n\n// Compare Zod-normalized wire values without depending on object key order or Node APIs.\nfunction normalizedValuesEqual(left: unknown, right: unknown): boolean {\n if (left === right) return true;\n if (Array.isArray(left) || Array.isArray(right)) {\n return (\n Array.isArray(left) &&\n Array.isArray(right) &&\n left.length === right.length &&\n left.every((value, index) => normalizedValuesEqual(value, right[index]))\n );\n }\n if (left === null || right === null || typeof left !== 'object' || typeof right !== 'object') {\n return false;\n }\n const leftRecord = left as Record<string, unknown>;\n const rightRecord = right as Record<string, unknown>;\n const keys = Object.keys(leftRecord);\n return (\n keys.length === Object.keys(rightRecord).length &&\n keys.every(\n (key) =>\n Object.prototype.hasOwnProperty.call(rightRecord, key) &&\n normalizedValuesEqual(leftRecord[key], rightRecord[key]),\n )\n );\n}\n\nexport const elenaAgentChangesSchema = z\n .array(elenaAgentChangeSchema)\n .min(1)\n .max(ELENA_AGENT_LIMITS.changesPerOperation)\n .superRefine((changes, ctx) => {\n const refs = new Set<string>();\n const targets = new Set<string>();\n const categoryRefs = new Set(\n changes.filter((change) => change.kind === 'category.upsert').map((change) => change.ref),\n );\n changes.forEach((change, index) => {\n const target =\n change.target.kind === 'id'\n ? `${change.kind}:id:${change.target.id}`\n : JSON.stringify([change.kind, 'external', change.target.namespace, change.target.key]);\n if (refs.has(change.ref) || targets.has(target)) {\n ctx.addIssue({ code: 'custom', path: [index], message: 'Duplicate ref or target' });\n }\n refs.add(change.ref);\n targets.add(target);\n if (\n change.kind === 'product.upsert' &&\n change.data.category.kind === 'ref' &&\n !categoryRefs.has(change.data.category.ref)\n ) {\n ctx.addIssue({\n code: 'custom',\n path: [index, 'data', 'category'],\n message: 'Unknown category ref',\n });\n }\n });\n });\nexport const elenaAgentPublicationPayloadSchema = z.strictObject({\n kind: z.literal('publication'),\n published: z.boolean(),\n products: z\n .array(elenaAgentExistingTargetSchema)\n .min(1)\n .max(ELENA_AGENT_LIMITS.publicationProducts)\n .refine(\n (products) => new Set(products.map((product) => product.id)).size === products.length,\n 'Duplicate product',\n ),\n});\nexport const elenaAgentOperationPayloadSchema = z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('catalog'), changes: elenaAgentChangesSchema }),\n elenaAgentPublicationPayloadSchema,\n z.strictObject({\n kind: z.literal('import'),\n importId: elenaAgentIdSchema,\n planHash: elenaAgentHashSchema,\n selectedRefs: z\n .array(elenaAgentRefSchema)\n .min(1)\n .max(ELENA_AGENT_LIMITS.productsPerImport + ELENA_AGENT_LIMITS.categoriesPerImport)\n .refine((refs) => new Set(refs).size === refs.length, 'Duplicate selected ref'),\n }),\n]);\nexport const elenaAgentProposalRequestSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n idempotencyKey: elenaAgentRefSchema,\n payload: elenaAgentOperationPayloadSchema,\n});\nexport const elenaAgentApplyRequestSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n expectedRevision: elenaAgentRevisionSchema,\n payloadHash: elenaAgentHashSchema,\n});\nexport const elenaAgentApprovalRequestSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n expectedRevision: elenaAgentRevisionSchema,\n payloadHash: elenaAgentHashSchema,\n decision: z.enum(['approve', 'reject']),\n});\nexport const elenaAgentBaseVersionSchema = z.strictObject({\n kind: z.enum(['category', 'product', 'credential']),\n id: elenaAgentIdSchema,\n revision: elenaAgentRevisionSchema,\n});\nexport const elenaAgentDiffSchema = z\n .discriminatedUnion('kind', [\n z.strictObject({\n kind: z.literal('category'),\n ref: elenaAgentRefSchema,\n before: elenaAgentCategorySchema.nullable(),\n after: elenaAgentCategoryChangeSchema,\n publicEffect: z.enum(['none', 'immediate_on_apply']),\n }),\n z.strictObject({\n kind: z.literal('product'),\n ref: elenaAgentRefSchema,\n before: elenaAgentProductSchema.nullable(),\n after: elenaAgentChangeSchema.options[1],\n publicEffect: z.enum(['none', 'immediate_on_apply']),\n }),\n z.strictObject({\n kind: z.literal('publication'),\n ref: elenaAgentRefSchema,\n productId: elenaAgentIdSchema,\n before: z.boolean(),\n after: z.boolean(),\n publicEffect: z.literal('immediate_on_apply'),\n }),\n ])\n .superRefine((diff, ctx) => {\n if (diff.kind === 'publication') {\n if (diff.ref !== `product:${diff.productId}`) {\n ctx.addIssue({\n code: 'custom',\n path: ['ref'],\n message: 'Publication ref must identify the exact product',\n });\n }\n return;\n }\n if (diff.ref !== diff.after.ref) {\n ctx.addIssue({ code: 'custom', path: ['ref'], message: 'Diff must identify its change' });\n }\n if (diff.kind === 'product') {\n const effect = diff.before?.publishedToMenu ? 'immediate_on_apply' : 'none';\n if (diff.publicEffect !== effect) {\n ctx.addIssue({\n code: 'custom',\n path: ['publicEffect'],\n message: 'Diff must disclose current public visibility',\n });\n }\n }\n });\nexport const elenaAgentItemErrorSchema = z.strictObject({\n code: elenaAgentErrorCodeSchema,\n message: z.string().max(500),\n retryable: z.boolean(),\n});\nexport const elenaAgentResultItemSchema = z.discriminatedUnion('status', [\n z.strictObject({\n ref: elenaAgentRefSchema,\n status: z.literal('applied'),\n resource: z.strictObject({\n kind: z.enum(['category', 'product']),\n id: elenaAgentIdSchema,\n revision: elenaAgentRevisionSchema,\n }),\n }),\n z.strictObject({\n ref: elenaAgentRefSchema,\n status: z.literal('skipped'),\n resource: z.strictObject({\n kind: z.enum(['category', 'product']),\n id: elenaAgentIdSchema,\n revision: elenaAgentRevisionSchema,\n }),\n }),\n z.strictObject({\n ref: elenaAgentRefSchema,\n status: z.literal('failed'),\n error: elenaAgentItemErrorSchema,\n }),\n z.strictObject({\n ref: elenaAgentRefSchema,\n status: z.literal('blocked'),\n error: elenaAgentItemErrorSchema,\n }),\n]);\nexport const elenaAgentOperationResultSchema = z\n .strictObject({\n completedAt: elenaAgentTimestampSchema,\n items: z.array(elenaAgentResultItemSchema).min(1).max(250),\n })\n .refine(\n (result) => new Set(result.items.map((item) => item.ref)).size === result.items.length,\n 'Duplicate result ref',\n );\nexport const elenaAgentOperationStateSchema = z.enum([\n 'pending',\n 'approved',\n 'rejected',\n 'expired',\n 'applying',\n 'applied',\n 'partial',\n 'failed',\n 'cancelled',\n]);\nexport const elenaAgentOperationSchema = z\n .strictObject({\n version: elenaAgentVersionSchema,\n operationId: elenaAgentIdSchema,\n revision: elenaAgentRevisionSchema,\n state: elenaAgentOperationStateSchema,\n restaurantId: elenaAgentIdSchema,\n credentialId: elenaAgentIdSchema,\n credentialRevision: elenaAgentRevisionSchema,\n payload: elenaAgentOperationPayloadSchema,\n payloadHash: elenaAgentHashSchema,\n baseVersions: z.array(elenaAgentBaseVersionSchema).max(501),\n diff: z.array(elenaAgentDiffSchema).max(250),\n approvalUrl: elenaAgentConnectionUrlSchema,\n createdAt: elenaAgentTimestampSchema,\n expiresAt: elenaAgentTimestampSchema,\n decision: z\n .strictObject({\n outcome: z.enum(['approved', 'rejected']),\n decidedAt: elenaAgentTimestampSchema,\n approverId: elenaAgentIdSchema,\n payloadHash: elenaAgentHashSchema,\n })\n .nullable(),\n applyDeadline: elenaAgentTimestampSchema.nullable(),\n result: elenaAgentOperationResultSchema.nullable(),\n })\n .superRefine((operation, ctx) => {\n const approvedRefs =\n operation.payload.kind === 'catalog'\n ? operation.payload.changes.map((change) => change.ref)\n : operation.payload.kind === 'import'\n ? operation.payload.selectedRefs\n : operation.payload.products.map((product) => `product:${product.id}`);\n if (\n operation.diff.some((diff) => !approvedRefs.includes(diff.ref)) ||\n new Set(operation.diff.map((diff) => diff.ref)).size !== operation.diff.length\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['diff'],\n message: 'Diff must be a unique subset of the exact approved selection',\n });\n }\n const payload = operation.payload;\n if (payload.kind === 'catalog') {\n const changes = new Map(payload.changes.map((change) => [change.ref, change]));\n operation.diff.forEach((diff, index) => {\n const change = changes.get(diff.ref);\n if (\n !change ||\n `${diff.kind}.upsert` !== change.kind ||\n !normalizedValuesEqual(diff.after, change)\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['diff', index],\n message: 'Catalog diff must match the exact normalized payload change',\n });\n }\n });\n } else if (payload.kind === 'publication') {\n const productIds = new Set(payload.products.map((product) => product.id));\n operation.diff.forEach((diff, index) => {\n if (\n diff.kind !== 'publication' ||\n !productIds.has(diff.productId) ||\n diff.after !== payload.published\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['diff', index],\n message: 'Publication diff must match the exact selected product and publication value',\n });\n }\n });\n }\n const finished = ['applied', 'partial', 'failed', 'cancelled'].includes(operation.state);\n if (finished !== (operation.result !== null)) {\n ctx.addIssue({\n code: 'custom',\n path: ['result'],\n message: 'Only executed terminal states carry a complete result',\n });\n }\n if (\n ['approved', 'applying', 'applied', 'partial', 'failed'].includes(operation.state) &&\n operation.decision?.outcome !== 'approved'\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['decision'],\n message: 'State requires owner approval',\n });\n }\n if (operation.state === 'rejected' && operation.decision?.outcome !== 'rejected') {\n ctx.addIssue({\n code: 'custom',\n path: ['decision'],\n message: 'Rejected state requires owner rejection',\n });\n }\n if (operation.state === 'pending' && operation.decision !== null) {\n ctx.addIssue({\n code: 'custom',\n path: ['decision'],\n message: 'Pending operation cannot have a decision',\n });\n }\n if (operation.decision && operation.decision.payloadHash !== operation.payloadHash) {\n ctx.addIssue({\n code: 'custom',\n path: ['decision', 'payloadHash'],\n message: 'Decision does not bind payload',\n });\n }\n if (operation.state === 'applying' && operation.applyDeadline === null) {\n ctx.addIssue({\n code: 'custom',\n path: ['applyDeadline'],\n message: 'Applying requires a deadline',\n });\n }\n if (operation.result) {\n if (\n operation.result.items.length !== approvedRefs.length ||\n operation.result.items.some((item) => !approvedRefs.includes(item.ref))\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['result'],\n message: 'Result must account for the exact approved selection',\n });\n }\n const success = operation.result.items.some(\n (item) => item.status === 'applied' || item.status === 'skipped',\n );\n const failure = operation.result.items.some(\n (item) => item.status === 'failed' || item.status === 'blocked',\n );\n if (\n (operation.state === 'applied' && failure) ||\n (operation.state === 'partial' && (!success || !failure)) ||\n (['failed', 'cancelled'].includes(operation.state) && success)\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['result'],\n message: 'Terminal state must describe actual effects',\n });\n }\n }\n });\nexport const elenaAgentOperationListSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n operations: z.array(elenaAgentOperationSchema).max(ELENA_AGENT_LIMITS.pageSize),\n nextCursor: z\n .string()\n .regex(/^[a-zA-Z0-9_-]{1,512}$/)\n .nullable(),\n});\n\nexport const elenaAgentImportSourceSchema = z.strictObject({\n kind: z.enum(['image', 'pdf', 'table', 'manual']),\n label: elenaAgentNameSchema,\n sha256: elenaAgentHashSchema.optional(),\n});\nexport const elenaAgentImportItemSchema = z.strictObject({\n ref: elenaAgentRefSchema,\n target: elenaAgentTargetSchema,\n data: elenaAgentDraftProductDataSchema,\n});\nexport const elenaAgentImportPreviewRequestSchema = z\n .strictObject({\n version: elenaAgentVersionSchema,\n idempotencyKey: elenaAgentRefSchema,\n currency: elenaAgentCurrencySchema,\n source: elenaAgentImportSourceSchema,\n categories: z.array(elenaAgentCategoryChangeSchema).max(ELENA_AGENT_LIMITS.categoriesPerImport),\n items: z.array(elenaAgentImportItemSchema).min(1).max(ELENA_AGENT_LIMITS.productsPerImport),\n })\n .superRefine((request, ctx) => {\n const refs = new Set<string>();\n const targets = new Set<string>();\n const categoryRefs = new Set(request.categories.map((category) => category.ref));\n const entries = [\n ...request.categories.map((entry) => ({ entry, kind: 'category' })),\n ...request.items.map((entry) => ({ entry, kind: 'product' })),\n ];\n for (const { entry, kind } of entries) {\n const identity =\n entry.target.kind === 'id'\n ? `${kind}:id:${entry.target.id}`\n : JSON.stringify([kind, 'external', entry.target.namespace, entry.target.key]);\n if (refs.has(entry.ref) || targets.has(identity)) {\n ctx.addIssue({ code: 'custom', message: 'Duplicate import ref or target' });\n }\n refs.add(entry.ref);\n targets.add(identity);\n }\n request.items.forEach((item, index) => {\n if (item.data.category.kind === 'ref' && !categoryRefs.has(item.data.category.ref)) {\n ctx.addIssue({\n code: 'custom',\n path: ['items', index, 'data', 'category'],\n message: 'Unknown category ref',\n });\n }\n });\n });\nexport const elenaAgentPreviewItemSchema = z\n .discriminatedUnion('classification', [\n z.strictObject({\n ref: elenaAgentRefSchema,\n classification: z.literal('create'),\n change: elenaAgentChangeSchema,\n diff: elenaAgentDiffSchema,\n }),\n z.strictObject({\n ref: elenaAgentRefSchema,\n classification: z.literal('update'),\n change: elenaAgentChangeSchema,\n diff: elenaAgentDiffSchema,\n }),\n z.strictObject({\n ref: elenaAgentRefSchema,\n classification: z.literal('skip'),\n resource: z.strictObject({\n kind: z.enum(['category', 'product']),\n id: elenaAgentIdSchema,\n revision: elenaAgentRevisionSchema,\n }),\n }),\n z.strictObject({\n ref: elenaAgentRefSchema,\n classification: z.literal('conflict'),\n issues: z.array(elenaAgentItemErrorSchema).min(1).max(20),\n }),\n z.strictObject({\n ref: elenaAgentRefSchema,\n classification: z.literal('invalid'),\n issues: z.array(elenaAgentItemErrorSchema).min(1).max(20),\n }),\n ])\n .superRefine((item, ctx) => {\n if (item.classification !== 'create' && item.classification !== 'update') return;\n const { change, diff } = item;\n if (item.ref !== change.ref || item.ref !== diff.ref) {\n ctx.addIssue({\n code: 'custom',\n path: ['ref'],\n message: 'Preview ref does not match change/diff',\n });\n }\n if (\n diff.kind === 'publication' ||\n `${diff.kind}.upsert` !== change.kind ||\n !normalizedValuesEqual(change, diff.after)\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['diff'],\n message: 'Preview diff must match the exact normalized change and resource kind',\n });\n }\n if (diff.kind === 'publication') return;\n if (item.classification === 'create') {\n if (\n change.target.kind !== 'external' ||\n change.target.expectedVersion !== null ||\n diff.before !== null\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['diff'],\n message: 'Create requires an absent external target and no previous resource',\n });\n }\n } else if (\n change.target.expectedVersion === null ||\n diff.before === null ||\n diff.before.revision !== change.target.expectedVersion ||\n (change.target.kind === 'id' && diff.before.id !== change.target.id)\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['diff'],\n message: 'Update requires the existing target resource with its exact expected revision',\n });\n }\n });\nexport const elenaAgentImportPreviewSchema = z\n .strictObject({\n version: elenaAgentVersionSchema,\n importId: elenaAgentIdSchema,\n planHash: elenaAgentHashSchema,\n createdAt: elenaAgentTimestampSchema,\n expiresAt: elenaAgentTimestampSchema,\n state: z.enum(['ready', 'expired']),\n currency: elenaAgentCurrencySchema,\n items: z.array(elenaAgentPreviewItemSchema).min(1).max(250),\n summary: z.strictObject({\n create: z.number().int().min(0).max(250),\n update: z.number().int().min(0).max(250),\n skip: z.number().int().min(0).max(250),\n conflict: z.number().int().min(0).max(250),\n invalid: z.number().int().min(0).max(250),\n }),\n })\n .superRefine((preview, ctx) => {\n if (new Set(preview.items.map((item) => item.ref)).size !== preview.items.length) {\n ctx.addIssue({ code: 'custom', path: ['items'], message: 'Duplicate preview ref' });\n }\n for (const classification of ['create', 'update', 'skip', 'conflict', 'invalid'] as const) {\n if (\n preview.summary[classification] !==\n preview.items.filter((item) => item.classification === classification).length\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['summary', classification],\n message: 'Summary does not match items',\n });\n }\n }\n });\n\nexport const elenaAgentCatalogSampleSchema = z\n .strictObject({\n version: elenaAgentVersionSchema,\n sample: z.literal(true),\n disclaimer: z.string().min(1).max(2000),\n source: z.strictObject({\n kind: z.literal('image'),\n label: z.string().min(1).max(2000),\n originalAvailable: z.literal(false),\n ocrAccuracyVerified: z.literal(false),\n }),\n confirmation: z.strictObject({\n status: z.literal('sample_only'),\n requiresOperatorReview: z.literal(true),\n currency: elenaAgentCurrencySchema,\n }),\n categories: z\n .array(z.strictObject({ ref: elenaAgentRefSchema, name: elenaAgentNameSchema }))\n .min(1)\n .max(50),\n items: z\n .array(\n z.strictObject({\n ref: elenaAgentRefSchema,\n categoryRef: elenaAgentRefSchema,\n name: elenaAgentNameSchema,\n price: z.discriminatedUnion('status', [\n elenaAgentDraftPriceSchema.options[0].extend({ basis: z.literal('sample') }),\n elenaAgentDraftPriceSchema.options[1],\n ]),\n description: elenaAgentDescriptionSchema.nullable(),\n }),\n )\n .min(1)\n .max(200),\n notes: z.array(z.string().min(1).max(2000)).min(1).max(30),\n })\n .superRefine((sample, ctx) => {\n const categoryRefs = new Set(sample.categories.map((category) => category.ref));\n const refs = [\n ...sample.categories.map((category) => category.ref),\n ...sample.items.map((item) => item.ref),\n ];\n if (new Set(refs).size !== refs.length)\n ctx.addIssue({ code: 'custom', message: 'Duplicate sample ref' });\n if (sample.items.some((item) => !categoryRefs.has(item.categoryRef))) {\n ctx.addIssue({ code: 'custom', path: ['items'], message: 'Unknown sample category' });\n }\n });\n\nexport type ElenaAgentProposalRequestV1 = z.infer<typeof elenaAgentProposalRequestSchema>;\nexport type ElenaAgentApplyRequestV1 = z.infer<typeof elenaAgentApplyRequestSchema>;\nexport type ElenaAgentApprovalRequestV1 = z.infer<typeof elenaAgentApprovalRequestSchema>;\nexport type ElenaAgentOperationV1 = z.infer<typeof elenaAgentOperationSchema>;\nexport type ElenaAgentOperationPayloadV1 = z.infer<typeof elenaAgentOperationPayloadSchema>;\nexport type ElenaAgentOperationResultV1 = z.infer<typeof elenaAgentOperationResultSchema>;\nexport type ElenaAgentImportPreviewRequestV1 = z.infer<typeof elenaAgentImportPreviewRequestSchema>;\nexport type ElenaAgentImportPreviewV1 = z.infer<typeof elenaAgentImportPreviewSchema>;\nexport type ElenaAgentPreviewItemV1 = z.infer<typeof elenaAgentPreviewItemSchema>;\nexport type ElenaAgentCatalogSampleV1 = z.infer<typeof elenaAgentCatalogSampleSchema>;\nexport type ElenaAgentDiffV1 = z.infer<typeof elenaAgentDiffSchema>;\nexport type ElenaAgentResultItemV1 = z.infer<typeof elenaAgentResultItemSchema>;\nexport type ElenaAgentOperationStateV1 = z.infer<typeof elenaAgentOperationStateSchema>;\nexport type ElenaAgentOperationListV1 = z.infer<typeof elenaAgentOperationListSchema>;\nexport type ElenaAgentImportItemV1 = z.infer<typeof elenaAgentImportItemSchema>;\n","import { z } from 'zod';\nimport {\n elenaAgentBaseUrlSchema,\n elenaClientContextSchema,\n elenaManagedClientKeySchema,\n} from './access';\nimport {\n ELENA_AGENT_LIMITS,\n elenaAgentRevisionSchema,\n elenaAgentTimestampSchema,\n elenaAgentVersionSchema,\n} from './common';\n\nexport const ELENA_PUBLIC_CONNECTION_DISCOVERY_ROOT = '/api/v1/public/catalog-connections';\nexport const elenaPublicConnectionSlugSchema = z\n .string()\n .min(1)\n .max(120)\n .regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/);\nconst ttl = z\n .number()\n .int()\n .min(3600)\n .max(ELENA_AGENT_LIMITS.keyMaxTtlSeconds)\n .default(ELENA_AGENT_LIMITS.keyDefaultTtlSeconds);\nconst mutation = {\n version: elenaAgentVersionSchema,\n // Zero asserts that no connection has ever been created for this restaurant.\n expectedRevision: z\n .number()\n .int()\n .min(0)\n .max(Number.MAX_SAFE_INTEGER - 1),\n};\nexport const elenaPublicConnectionMutationSchema = z.discriminatedUnion('action', [\n z.strictObject({ ...mutation, action: z.literal('enable'), ttlSeconds: ttl }),\n z.strictObject({ ...mutation, action: z.literal('renew'), ttlSeconds: ttl }),\n z.strictObject({ ...mutation, action: z.literal('disable') }),\n z.strictObject({ ...mutation, action: z.literal('revoke') }),\n]);\nexport const elenaPublicConnectionMetadataSchema = z.strictObject({\n revision: elenaAgentRevisionSchema,\n status: z.enum(['published', 'disabled', 'revoked']),\n expiresAt: elenaAgentTimestampSchema,\n});\nexport const elenaPublicConnectionManagementSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n publication: elenaPublicConnectionMetadataSchema.nullable(),\n});\nexport const elenaPublicConnectionSchema = z.strictObject({\n version: elenaAgentVersionSchema,\n apiOrigin: elenaAgentBaseUrlSchema,\n clientKey: elenaManagedClientKeySchema,\n publication: z.strictObject({\n revision: elenaAgentRevisionSchema,\n expiresAt: elenaAgentTimestampSchema,\n }),\n context: elenaClientContextSchema,\n});\nexport type ElenaPublicConnectionV1 = z.infer<typeof elenaPublicConnectionSchema>;\nexport type ElenaPublicConnectionMutationV1 = z.infer<typeof elenaPublicConnectionMutationSchema>;\nexport type ElenaPublicConnectionManagementV1 = z.infer<\n typeof elenaPublicConnectionManagementSchema\n>;\n","import {\n ELENA_AGENT_LIMITS,\n elenaAgentErrorSchema,\n elenaAgentIdSchema,\n elenaAgentPageQuerySchema,\n type ElenaAgentErrorCodeV1,\n type ElenaAgentPageQueryV1,\n} from '../../shared/src/agent-contracts/common';\nimport type { ElenaFetch } from './http-client';\n\nexport type ElenaKeyTransportErrorCode =\n | ElenaAgentErrorCodeV1\n | 'INVALID_RESPONSE'\n | 'NETWORK_ERROR'\n | 'TIMEOUT'\n | 'ABORTED'\n | 'REDIRECT_REJECTED';\n\n/** Intentionally never retains a raw response, request, rejected value, or cause. */\nexport class ElenaAgentTransportError extends Error {\n readonly name = 'ElenaAgentTransportError';\n constructor(\n readonly code: ElenaKeyTransportErrorCode,\n readonly status = 0,\n readonly retryable = false,\n readonly requestId: string | null = null,\n readonly retryAfterSeconds?: number,\n ) {\n super(`Elena request failed (${code}).`);\n }\n}\n\nexport interface ElenaKeyRequestOptions {\n signal?: AbortSignal;\n /** Total request budget, including response consumption and retry delays. */\n timeoutMs?: number;\n}\n\nexport interface ElenaKeyTransportOptions {\n baseUrl: string;\n fetch?: ElenaFetch;\n timeoutMs?: number;\n /** Zero, one, or two additional attempts; default two. */\n maxRetries?: number;\n /** Only loopback HTTP with an explicitly injected test fetch is accepted. */\n testing?: { allowHttp: true };\n}\n\nexport type ElenaKeyPageQuery = Omit<ElenaAgentPageQueryV1, 'limit'> & { limit?: number };\n\ntype Schema<T> = { safeParse: (value: unknown) => { success: true; data: T } | { success: false } };\n\nexport function parseWire<T>(schema: Schema<T>, value: unknown, response = false): T {\n let unsupportedVersion = false;\n try {\n if (value !== null && typeof value === 'object' && 'version' in value) {\n unsupportedVersion = value.version !== undefined && value.version !== '1';\n }\n const parsed = schema.safeParse(value);\n if (parsed.success) return parsed.data;\n } catch {\n /* Do not surface Zod input, getters, or exception messages. */\n }\n throw new ElenaAgentTransportError(\n unsupportedVersion ? 'UNSUPPORTED_VERSION' : response ? 'INVALID_RESPONSE' : 'INVALID_REQUEST',\n );\n}\n\nexport function assertOptionKeys(value: object, keys: readonly string[]): void {\n if (\n !value ||\n typeof value !== 'object' ||\n Object.keys(value).some((key) => !keys.includes(key))\n ) {\n throw new ElenaAgentTransportError('INVALID_REQUEST');\n }\n}\n\nexport function explicitOrigin(value: string, allowTestHttp = false): string {\n try {\n if (typeof value !== 'string' || !/^https?:\\/\\/[^/?#@\\\\\\s]+\\/?$/.test(value)) throw 0;\n if (/elena_(?:sk|pk)_/i.test(value)) throw 0;\n const url = new URL(value);\n const loopback = ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname);\n if (\n url.protocol !== 'https:' &&\n !(\n url.protocol === 'http:' &&\n ((typeof process !== 'undefined' && process.env.NODE_ENV === 'development') ||\n (allowTestHttp && loopback))\n )\n )\n throw 0;\n if (url.username || url.password || url.search || url.hash || url.pathname !== '/') throw 0;\n return url.origin;\n } catch {\n throw new ElenaAgentTransportError('ORIGIN_REJECTED');\n }\n}\n\nexport function resourceId(value: string): string {\n return parseWire(elenaAgentIdSchema, value);\n}\n\nexport function pageQuery(value: ElenaKeyPageQuery = { version: '1' }): string {\n const query = parseWire(elenaAgentPageQuerySchema, value);\n const params = new URLSearchParams({ version: query.version, limit: String(query.limit) });\n if (query.cursor !== undefined) params.set('cursor', query.cursor);\n return `?${params}`;\n}\n\nexport function jsonBody<T>(schema: Schema<T>, value: unknown): string {\n const text = JSON.stringify(parseWire(schema, value));\n if (new TextEncoder().encode(text).byteLength > ELENA_AGENT_LIMITS.jsonBytes) {\n throw new ElenaAgentTransportError('INVALID_REQUEST');\n }\n return text;\n}\n\nfunction timeoutValue(value: number): number {\n if (!Number.isInteger(value) || value < 1 || value > 300_000) {\n throw new ElenaAgentTransportError('INVALID_REQUEST');\n }\n return value;\n}\n\nconst privateCredential = /elena_sk_[A-Za-z0-9_-]{43}/;\nconst retryCodes: Partial<Record<ElenaAgentErrorCodeV1, true>> = {\n RATE_LIMITED: true,\n TEMPORARY_UNAVAILABLE: true,\n};\n\n/** Internal only: clients close over this transport; no credential-bearing fields are exported. */\nexport function createKeyTransport(\n options: ElenaKeyTransportOptions,\n header: 'x-elena-client-key' | 'x-elena-agent-key' | null,\n credential: string,\n) {\n if (options.testing !== undefined) {\n assertOptionKeys(options.testing, ['allowHttp']);\n if (options.testing.allowHttp !== true || !options.fetch) {\n throw new ElenaAgentTransportError('INVALID_REQUEST');\n }\n }\n const baseUrl = explicitOrigin(options.baseUrl, options.testing?.allowHttp === true);\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (typeof fetchImpl !== 'function') throw new ElenaAgentTransportError('INVALID_REQUEST');\n const defaultTimeout = timeoutValue(options.timeoutMs ?? 30_000);\n const retries = options.maxRetries ?? 2;\n if (!Number.isInteger(retries) || retries < 0 || retries > 2) {\n throw new ElenaAgentTransportError('INVALID_REQUEST');\n }\n\n async function request<T>(\n path: string,\n schema: Schema<T>,\n requestOptions: ElenaKeyRequestOptions = {},\n body?: string | (() => FormData),\n stage = false,\n retryAmbiguous = true,\n ): Promise<T> {\n assertOptionKeys(requestOptions, ['signal', 'timeoutMs']);\n if (\n privateCredential.test(path) ||\n (credential && path.includes(credential)) ||\n (typeof body === 'string' &&\n (privateCredential.test(body) || (credential && body.includes(credential))))\n ) {\n throw new ElenaAgentTransportError('INVALID_REQUEST');\n }\n if (requestOptions.signal !== undefined && !(requestOptions.signal instanceof AbortSignal)) {\n throw new ElenaAgentTransportError('INVALID_REQUEST');\n }\n const timeoutMs = timeoutValue(requestOptions.timeoutMs ?? (stage ? 120_000 : defaultTimeout));\n if (requestOptions.signal?.aborted) throw new ElenaAgentTransportError('ABORTED');\n const controller = new AbortController();\n let timedOut = false;\n const timer = setTimeout(() => {\n timedOut = true;\n controller.abort();\n }, timeoutMs);\n const onAbort = () => controller.abort();\n requestOptions.signal?.addEventListener('abort', onAbort, { once: true });\n const abortError = () => new ElenaAgentTransportError(timedOut ? 'TIMEOUT' : 'ABORTED');\n const deadline = Date.now() + timeoutMs;\n // Node 18 supports neither Promise.withResolvers nor a cancellation primitive for arbitrary fetches.\n // Race also bounds injected fetch implementations that ignore AbortSignal.\n const bounded = <V>(promise: Promise<V>): Promise<V> =>\n new Promise((resolve, reject) => {\n const abort = () => {\n cleanup();\n reject(abortError());\n };\n const cleanup = () => controller.signal.removeEventListener('abort', abort);\n if (controller.signal.aborted) {\n reject(abortError());\n return;\n }\n controller.signal.addEventListener('abort', abort, { once: true });\n promise.then(\n (value) => {\n cleanup();\n resolve(value);\n },\n (error: unknown) => {\n cleanup();\n reject(error);\n },\n );\n });\n const delay = (ms: number) =>\n new Promise<void>((resolve, reject) => {\n const abort = () => {\n clearTimeout(wait);\n controller.signal.removeEventListener('abort', abort);\n reject(abortError());\n };\n const wait = setTimeout(() => {\n controller.signal.removeEventListener('abort', abort);\n resolve();\n }, ms);\n controller.signal.addEventListener('abort', abort, { once: true });\n if (controller.signal.aborted) abort();\n });\n try {\n for (let attempt = 0; ; attempt++) {\n let failure: ElenaAgentTransportError;\n let retryDelay = 100 * 2 ** attempt;\n try {\n const headers = new Headers({ Accept: 'application/json' });\n if (header) headers.set(header, credential);\n if (typeof body === 'string') headers.set('Content-Type', 'application/json');\n const response = await bounded(\n Promise.resolve()\n .then(() => {\n if (controller.signal.aborted) throw abortError();\n return fetchImpl(`${baseUrl}${path}`, {\n method: body === undefined ? 'GET' : 'POST',\n headers,\n body: typeof body === 'function' ? body() : body,\n credentials: 'omit',\n redirect: 'error',\n referrerPolicy: 'no-referrer',\n cache: 'no-store',\n signal: controller.signal,\n });\n })\n .catch(() => {\n // The injected transport is an external boundary, even if it throws our error class.\n throw new ElenaAgentTransportError('NETWORK_ERROR', 0, retryAmbiguous);\n }),\n );\n if (response.redirected || (response.status >= 300 && response.status < 400)) {\n throw new ElenaAgentTransportError('REDIRECT_REJECTED', response.status);\n }\n if (response.url && new URL(response.url).origin !== baseUrl) {\n throw new ElenaAgentTransportError('ORIGIN_REJECTED');\n }\n const text = await bounded(\n Promise.resolve()\n .then(() => response.text())\n .catch(() => {\n throw new ElenaAgentTransportError('NETWORK_ERROR', 0, retryAmbiguous);\n }),\n );\n // Successful schemas contain human text too. Never return echoed credentials.\n if (privateCredential.test(text) || (credential && text.includes(credential))) {\n throw new ElenaAgentTransportError('INVALID_RESPONSE', response.status);\n }\n let payload: unknown;\n try {\n payload = JSON.parse(text);\n } catch {\n throw new ElenaAgentTransportError('INVALID_RESPONSE', response.status);\n }\n const decodedText = JSON.stringify(payload);\n if (\n privateCredential.test(decodedText) ||\n (credential && decodedText.includes(credential))\n ) {\n throw new ElenaAgentTransportError('INVALID_RESPONSE', response.status);\n }\n if (response.ok) return parseWire(schema, payload, true);\n const wire = parseWire(elenaAgentErrorSchema, payload, true).error;\n const retryable =\n retryCodes[wire.code] === true &&\n wire.retryable &&\n ((wire.code === 'RATE_LIMITED' && response.status === 429) ||\n (wire.code === 'TEMPORARY_UNAVAILABLE' && response.status === 503));\n failure = new ElenaAgentTransportError(\n wire.code,\n response.status,\n retryable,\n wire.requestId,\n wire.retryAfterSeconds,\n );\n const retryAfter = response.headers.get('retry-after');\n let headerDelay = 0;\n if (retryAfter !== null) {\n const seconds = /^\\d+$/.test(retryAfter)\n ? Number(retryAfter)\n : (Date.parse(retryAfter) - Date.now()) / 1000;\n // Never retry sooner when a server delay cannot be interpreted safely.\n if (!Number.isFinite(seconds) || seconds < 0 || seconds > 3600) {\n throw new ElenaAgentTransportError(\n wire.code,\n response.status,\n false,\n wire.requestId,\n wire.retryAfterSeconds,\n );\n }\n headerDelay = Math.ceil(seconds * 1000);\n }\n retryDelay = Math.max(retryDelay, headerDelay, (wire.retryAfterSeconds ?? 0) * 1000);\n } catch (error) {\n if (controller.signal.aborted) throw abortError();\n failure =\n error instanceof ElenaAgentTransportError\n ? error\n : new ElenaAgentTransportError('NETWORK_ERROR', 0, retryAmbiguous);\n }\n if (!failure.retryable || attempt >= retries || Date.now() + retryDelay >= deadline)\n throw failure;\n await delay(retryDelay);\n }\n } finally {\n clearTimeout(timer);\n requestOptions.signal?.removeEventListener('abort', onAbort);\n }\n }\n return { request };\n}\n"],"mappings":"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","names":["z","z","z","z","z","z","z","z","options"]}
|