@siglume/api-sdk 0.10.4 → 0.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors.ts","../../src/utils.ts","../../src/webhooks.ts","../../src/web3.ts","../../src/operations.ts","../../src/client.ts","../../src/metering.ts","../../src/cli/index.ts","../../src/cli/project.ts","../../src/diff.ts","../../src/types.ts","../../src/testing/recorder.ts","../../src/tool-manual-validator.ts","../../src/runtime.ts","../../../schemas/tool-manual-grader-rules.json","../../src/tool-manual-grader.ts"],"sourcesContent":["export class SiglumeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = new.target.name;\n }\n}\n\nexport class SiglumeClientError extends SiglumeError {}\n\nexport class SiglumeProjectError extends SiglumeError {}\n\nexport class SiglumeValidationError extends SiglumeError {}\n\nexport class SiglumeAssistError extends SiglumeClientError {}\n\nexport class SiglumeNotFoundError extends SiglumeClientError {}\n\nexport class SiglumeWebhookError extends SiglumeError {}\n\nexport class SiglumeWebhookSignatureError extends SiglumeWebhookError {}\n\nexport class SiglumeWebhookPayloadError extends SiglumeWebhookError {}\n\nexport class SiglumeWebhookReplayError extends SiglumeWebhookError {}\n\nexport class SiglumeAPIError extends SiglumeClientError {\n status_code: number;\n error_code?: string;\n trace_id?: string | null;\n request_id?: string | null;\n details: Record<string, unknown>;\n response_body?: unknown;\n\n constructor(\n message: string,\n options: {\n status_code: number;\n error_code?: string;\n trace_id?: string | null;\n request_id?: string | null;\n details?: Record<string, unknown>;\n response_body?: unknown;\n },\n ) {\n super(message);\n this.status_code = options.status_code;\n this.error_code = options.error_code;\n this.trace_id = options.trace_id;\n this.request_id = options.request_id;\n this.details = options.details ?? {};\n this.response_body = options.response_body;\n }\n}\n","import type { JsonValue } from \"./types\";\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function stringOrNull(value: unknown): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n const text = String(value).trim();\n return text.length > 0 ? text : null;\n}\n\nexport function numberOrNull(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\nexport function toRecord(value: unknown): Record<string, unknown> {\n return isRecord(value) ? { ...value } : {};\n}\n\nexport function toJsonable(value: unknown): JsonValue | Record<string, unknown> | unknown[] {\n if (value === null || value === undefined) {\n return null;\n }\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map((item) => toJsonable(item));\n }\n if (isRecord(value)) {\n const toDict = value.to_dict;\n if (typeof toDict === \"function\") {\n return toJsonable(toDict.call(value));\n }\n const toJson = value.toJSON;\n if (typeof toJson === \"function\") {\n return toJsonable(toJson.call(value));\n }\n return Object.fromEntries(\n Object.entries(value)\n .filter(([key]) => !key.startsWith(\"_\"))\n .map(([key, item]) => [key, toJsonable(item)]),\n );\n }\n return String(value);\n}\n\nexport function coerceMapping(value: unknown, label: string): Record<string, unknown> {\n const payload = toJsonable(value);\n if (!isRecord(payload)) {\n throw new TypeError(`${label} must be a mapping-like object`);\n }\n return payload;\n}\n\nexport function renderJson(value: unknown): string {\n return JSON.stringify(toJsonable(value), null, 2);\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function parseRetryAfter(value: string | null): number | null {\n if (!value) {\n return null;\n }\n const parsed = Number(value);\n return Number.isFinite(parsed) && parsed >= 0 ? parsed * 1000 : null;\n}\n\nexport function camelCaseFromCapabilityKey(capabilityKey: string): string {\n const words = capabilityKey\n .replaceAll(\"_\", \"-\")\n .split(\"-\")\n .map((item) => item.trim())\n .filter(Boolean);\n if (words.length === 0) {\n return \"GeneratedRegistrationApp\";\n }\n return `${words.map((word) => word[0]!.toUpperCase() + word.slice(1)).join(\"\")}App`;\n}\n\nexport function buildRegistrationStubSource(\n manifestPayload: Record<string, unknown>,\n toolManualPayload: Record<string, unknown>,\n): string {\n const capabilityKey = String(manifestPayload.capability_key ?? \"generated-registration\");\n const jobToBeDone = String(\n manifestPayload.job_to_be_done ??\n toolManualPayload.job_to_be_done ??\n \"Register this API listing on Siglume.\",\n );\n const name = String(manifestPayload.name ?? capabilityKey.replaceAll(\"-\", \" \"));\n const className = camelCaseFromCapabilityKey(capabilityKey);\n return [\n 'import { AppAdapter } from \"@siglume/api-sdk\";',\n \"\",\n `export default class ${className} extends AppAdapter {`,\n \" manifest() {\",\n ` return ${JSON.stringify(\n {\n capability_key: capabilityKey,\n name,\n job_to_be_done: jobToBeDone,\n },\n null,\n 2,\n ).replaceAll(\"\\n\", \"\\n \")};`,\n \" }\",\n \"\",\n \" async execute(ctx) {\",\n \" throw new Error(\\\"Registration bootstrap source is metadata-only.\\\");\",\n \" }\",\n \"}\",\n \"\",\n ].join(\"\\n\");\n}\n","import { SiglumeWebhookError, SiglumeWebhookPayloadError, SiglumeWebhookReplayError, SiglumeWebhookSignatureError } from \"./errors\";\n\nexport const WEBHOOK_SIGNATURE_HEADER = \"Siglume-Signature\";\nexport const WEBHOOK_EVENT_ID_HEADER = \"Siglume-Event-Id\";\nexport const WEBHOOK_EVENT_TYPE_HEADER = \"Siglume-Event-Type\";\nexport const DEFAULT_WEBHOOK_TOLERANCE_SECONDS = 300;\n\nexport const WEBHOOK_EVENT_TYPES = [\n \"subscription.created\",\n \"subscription.renewed\",\n \"subscription.cancelled\",\n \"subscription.paused\",\n \"subscription.reinstated\",\n \"payment.succeeded\",\n \"payment.failed\",\n \"capability.published\",\n \"capability.delisted\",\n \"execution.completed\",\n \"execution.failed\",\n] as const;\n\nexport type WebhookEventType = (typeof WEBHOOK_EVENT_TYPES)[number];\nconst WEBHOOK_EVENT_SET = new Set<string>(WEBHOOK_EVENT_TYPES);\n\nexport interface WebhookSignatureVerification {\n timestamp: number;\n signature: string;\n}\n\nexport interface WebhookSubscriptionRecord {\n subscription_id: string;\n owner_user_id: string;\n callback_url: string;\n status: string;\n event_types: string[];\n description?: string | null;\n signing_secret_hint?: string | null;\n signing_secret?: string | null;\n metadata: Record<string, unknown>;\n last_delivery_at?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WebhookDeliveryRecord {\n delivery_id: string;\n subscription_id: string;\n event_id: string;\n event_type: string;\n idempotency_key: string;\n callback_url: string;\n delivery_status: string;\n request_headers: Record<string, unknown>;\n request_body: Record<string, unknown>;\n response_status?: number | null;\n response_headers: Record<string, unknown>;\n response_body?: unknown;\n duration_ms?: number | null;\n attempt_count: number;\n last_attempt_at?: string | null;\n delivered_at?: string | null;\n error_message?: string | null;\n trace_id?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WebhookEventBase<T extends WebhookEventType = WebhookEventType, D extends Record<string, unknown> = Record<string, unknown>> {\n id: string;\n type: T;\n api_version: string;\n occurred_at: string;\n idempotency_key: string;\n trace_id?: string | null;\n data: D;\n raw: Record<string, unknown>;\n}\n\nexport interface SubscriptionLifecycleEventData extends Record<string, unknown> {\n subscription_id?: string;\n access_grant_id?: string;\n listing_id?: string;\n capability_key?: string;\n buyer_user_id?: string;\n seller_user_id?: string;\n billing_model?: string;\n purchase_path?: string;\n currency?: string;\n amount_minor?: number;\n}\n\nexport interface PaymentEventData extends SubscriptionLifecycleEventData {\n payment_status?: string;\n}\n\nexport interface CapabilityEventData extends Record<string, unknown> {\n listing_id?: string;\n capability_key?: string;\n status?: string;\n previous_status?: string;\n owner_user_id?: string;\n published_at?: string;\n}\n\nexport interface ExecutionCompletedEventData extends Record<string, unknown> {\n usage_event_id?: string;\n access_grant_id?: string;\n listing_id?: string;\n capability_key?: string;\n agent_id?: string;\n execution_kind?: string;\n environment?: string;\n}\n\nexport interface ExecutionFailedEventData extends ExecutionCompletedEventData {\n reason_code?: string;\n reason?: string;\n}\n\nexport interface SubscriptionCreatedEvent extends WebhookEventBase<\"subscription.created\", SubscriptionLifecycleEventData> {}\nexport interface SubscriptionRenewedEvent extends WebhookEventBase<\"subscription.renewed\", SubscriptionLifecycleEventData> {}\nexport interface SubscriptionCancelledEvent extends WebhookEventBase<\"subscription.cancelled\", SubscriptionLifecycleEventData> {}\nexport interface SubscriptionPausedEvent extends WebhookEventBase<\"subscription.paused\", SubscriptionLifecycleEventData> {}\nexport interface SubscriptionReinstatedEvent extends WebhookEventBase<\"subscription.reinstated\", SubscriptionLifecycleEventData> {}\nexport interface PaymentSucceededEvent extends WebhookEventBase<\"payment.succeeded\", PaymentEventData> {}\nexport interface PaymentFailedEvent extends WebhookEventBase<\"payment.failed\", PaymentEventData> {}\nexport interface CapabilityPublishedEvent extends WebhookEventBase<\"capability.published\", CapabilityEventData> {}\nexport interface CapabilityDelistedEvent extends WebhookEventBase<\"capability.delisted\", CapabilityEventData> {}\nexport interface ExecutionCompletedEvent extends WebhookEventBase<\"execution.completed\", ExecutionCompletedEventData> {}\nexport interface ExecutionFailedEvent extends WebhookEventBase<\"execution.failed\", ExecutionFailedEventData> {}\n\nexport type SiglumeWebhookEvent =\n | SubscriptionCreatedEvent\n | SubscriptionRenewedEvent\n | SubscriptionCancelledEvent\n | SubscriptionPausedEvent\n | SubscriptionReinstatedEvent\n | PaymentSucceededEvent\n | PaymentFailedEvent\n | CapabilityPublishedEvent\n | CapabilityDelistedEvent\n | ExecutionCompletedEvent\n | ExecutionFailedEvent;\n\nexport interface QueuedWebhookEvent {\n queued: boolean;\n event: SiglumeWebhookEvent;\n}\n\nexport interface WebhookDispatchResult {\n event: SiglumeWebhookEvent;\n verification: WebhookSignatureVerification;\n duplicate: boolean;\n callback_results: unknown[];\n}\n\nexport type HeaderLike = Headers | Record<string, unknown>;\nexport type WebhookCallback<T extends SiglumeWebhookEvent = SiglumeWebhookEvent> = (event: T) => unknown | Promise<unknown>;\n\nexport interface ExpressLikeRequest {\n headers: Record<string, string | string[] | undefined>;\n rawBody?: string | Uint8Array | ArrayBuffer | Buffer;\n body?: unknown;\n}\n\nexport interface ExpressLikeResponse {\n status(code: number): ExpressLikeResponse;\n json(payload: unknown): unknown;\n}\n\nexport class InMemoryWebhookDedupe {\n readonly ttl_seconds: number;\n readonly max_entries: number;\n private readonly entries = new Map<string, number>();\n\n constructor(options: { ttl_seconds?: number; max_entries?: number } = {}) {\n this.ttl_seconds = Math.max(1, Math.trunc(options.ttl_seconds ?? 3600));\n this.max_entries = Math.max(32, Math.trunc(options.max_entries ?? 4096));\n }\n\n private purge(nowMs: number): void {\n for (const [key, expiresAt] of this.entries.entries()) {\n if (expiresAt <= nowMs) {\n this.entries.delete(key);\n }\n }\n while (this.entries.size > this.max_entries) {\n const oldest = [...this.entries.entries()].sort((left, right) => left[1] - right[1])[0]?.[0];\n if (!oldest) {\n return;\n }\n this.entries.delete(oldest);\n }\n }\n\n is_duplicate(idempotency_key: string, nowMs = Date.now()): boolean {\n this.purge(nowMs);\n const key = String(idempotency_key ?? \"\").trim();\n if (!key) {\n return false;\n }\n return this.entries.has(key);\n }\n\n mark_processed(idempotency_key: string, nowMs = Date.now()): void {\n this.purge(nowMs);\n const key = String(idempotency_key ?? \"\").trim();\n if (!key) {\n return;\n }\n this.entries.set(key, nowMs + (this.ttl_seconds * 1000));\n this.purge(nowMs);\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction toRecord(value: unknown): Record<string, unknown> {\n if (!isRecord(value)) {\n return {};\n }\n return Object.fromEntries(Object.entries(value).map(([key, item]) => [String(key), cloneJson(item)]));\n}\n\nfunction cloneJson(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((item) => cloneJson(item));\n }\n if (isRecord(value)) {\n return Object.fromEntries(Object.entries(value).map(([key, item]) => [String(key), cloneJson(item)]));\n }\n return value;\n}\n\nfunction stringOrNull(value: unknown): string | null {\n const text = value === undefined || value === null ? \"\" : String(value).trim();\n return text.length > 0 ? text : null;\n}\n\nfunction requireRecord(value: unknown, name: string): Record<string, unknown> {\n if (!isRecord(value)) {\n throw new SiglumeWebhookPayloadError(`${name} must be an object.`);\n }\n return toRecord(value);\n}\n\nfunction headerValue(headers: HeaderLike, name: string): string | null {\n const target = name.toLowerCase();\n if (headers instanceof Headers) {\n return stringOrNull(headers.get(name));\n }\n for (const [key, value] of Object.entries(headers ?? {})) {\n if (String(key).toLowerCase() !== target) {\n continue;\n }\n if (Array.isArray(value)) {\n return value.length > 0 ? stringOrNull(value[0]) : null;\n }\n return stringOrNull(value);\n }\n return null;\n}\n\nfunction bodyBytes(body: Uint8Array | ArrayBuffer | string | Record<string, unknown>): Uint8Array {\n if (body instanceof Uint8Array) {\n return body;\n }\n if (body instanceof ArrayBuffer) {\n return new Uint8Array(body);\n }\n if (typeof body === \"string\") {\n return new TextEncoder().encode(body);\n }\n if (isRecord(body)) {\n return new TextEncoder().encode(JSON.stringify(cloneJson(body)));\n }\n throw new SiglumeWebhookPayloadError(\"Webhook body must be raw bytes, a string, or a JSON object.\");\n}\n\nfunction parseSignatureHeader(signatureHeader: string): { timestamp: number; signature: string } {\n let timestamp: number | null = null;\n let signature: string | null = null;\n for (const item of String(signatureHeader ?? \"\").split(\",\")) {\n const [key, value] = item.trim().split(\"=\", 2);\n if (key === \"t\") {\n const parsed = Number.parseInt(value ?? \"\", 10);\n if (!Number.isFinite(parsed)) {\n throw new SiglumeWebhookSignatureError(\"Webhook signature timestamp is invalid.\");\n }\n timestamp = parsed;\n }\n if (key === \"v1\") {\n signature = String(value ?? \"\").trim();\n }\n }\n if (timestamp === null || !signature) {\n throw new SiglumeWebhookSignatureError(\"Webhook signature header is incomplete.\");\n }\n return { timestamp, signature };\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return [...bytes].map((item) => item.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const normalized = String(hex ?? \"\").trim().toLowerCase();\n if (normalized.length % 2 !== 0) {\n throw new SiglumeWebhookSignatureError(\"Webhook signature hex digest is invalid.\");\n }\n const bytes = new Uint8Array(normalized.length / 2);\n for (let index = 0; index < normalized.length; index += 2) {\n bytes[index / 2] = Number.parseInt(normalized.slice(index, index + 2), 16);\n }\n return bytes;\n}\n\nasync function hmacSha256(secret: string, payload: Uint8Array): Promise<string> {\n if (globalThis.crypto?.subtle) {\n const stablePayload = new Uint8Array(payload.byteLength);\n stablePayload.set(payload);\n const key = await globalThis.crypto.subtle.importKey(\n \"raw\",\n new TextEncoder().encode(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\"],\n );\n const digest = await globalThis.crypto.subtle.sign(\"HMAC\", key, stablePayload);\n return bytesToHex(new Uint8Array(digest));\n }\n if (typeof process !== \"undefined\" && process.versions?.node) {\n const crypto = await import(\"node:crypto\");\n return crypto.createHmac(\"sha256\", secret).update(Buffer.from(payload)).digest(\"hex\");\n }\n throw new SiglumeWebhookError(\"Web Crypto is required to verify Siglume webhook signatures in this runtime.\");\n}\n\nasync function timingSafeEqualHex(left: string, right: string): Promise<boolean> {\n const leftBytes = hexToBytes(left);\n const rightBytes = hexToBytes(right);\n if (leftBytes.length !== rightBytes.length) {\n return false;\n }\n let diff = 0;\n for (let index = 0; index < leftBytes.length; index += 1) {\n diff |= leftBytes[index]! ^ rightBytes[index]!;\n }\n return diff === 0;\n}\n\nexport async function compute_webhook_signature(\n signing_secret: string,\n body: Uint8Array | ArrayBuffer | string | Record<string, unknown>,\n options: { timestamp: number },\n): Promise<string> {\n if (!signing_secret) {\n throw new SiglumeWebhookSignatureError(\"SIGLUME webhook signing secret is required.\");\n }\n const timestamp = Math.trunc(options.timestamp);\n const bytes = bodyBytes(body);\n const prefix = new TextEncoder().encode(`${timestamp}.`);\n const payload = new Uint8Array(prefix.length + bytes.length);\n payload.set(prefix, 0);\n payload.set(bytes, prefix.length);\n return hmacSha256(signing_secret, payload);\n}\n\nexport async function build_webhook_signature_header(\n signing_secret: string,\n body: Uint8Array | ArrayBuffer | string | Record<string, unknown>,\n options: { timestamp?: number } = {},\n): Promise<string> {\n const timestamp = Math.trunc(options.timestamp ?? (Date.now() / 1000));\n const signature = await compute_webhook_signature(signing_secret, body, { timestamp });\n return `t=${timestamp},v1=${signature}`;\n}\n\nexport async function verify_webhook_signature(\n signing_secret: string,\n body: Uint8Array | ArrayBuffer | string | Record<string, unknown>,\n signature_header: string,\n options: { tolerance_seconds?: number; now?: number } = {},\n): Promise<WebhookSignatureVerification> {\n const { timestamp, signature } = parseSignatureHeader(signature_header);\n const toleranceSeconds = Math.max(1, Math.trunc(options.tolerance_seconds ?? DEFAULT_WEBHOOK_TOLERANCE_SECONDS));\n const nowSeconds = Math.trunc(options.now ?? (Date.now() / 1000));\n if (Math.abs(nowSeconds - timestamp) > toleranceSeconds) {\n throw new SiglumeWebhookSignatureError(\"Webhook timestamp is outside the allowed tolerance window.\");\n }\n const expected = await compute_webhook_signature(signing_secret, body, { timestamp });\n if (!(await timingSafeEqualHex(expected, signature))) {\n throw new SiglumeWebhookSignatureError(\"Webhook signature did not match.\");\n }\n return { timestamp, signature };\n}\n\nexport function parse_webhook_subscription(payload: unknown): WebhookSubscriptionRecord {\n const record = requireRecord(payload, \"webhook subscription\");\n return {\n subscription_id: String(record.id ?? record.subscription_id ?? \"\"),\n owner_user_id: String(record.owner_user_id ?? \"\"),\n callback_url: String(record.callback_url ?? \"\"),\n status: String(record.status ?? \"\"),\n event_types: Array.isArray(record.event_types)\n ? record.event_types.map((item) => String(item)).filter((item) => item.length > 0)\n : [],\n description: stringOrNull(record.description),\n signing_secret_hint: stringOrNull(record.signing_secret_hint),\n signing_secret: stringOrNull(record.signing_secret),\n metadata: toRecord(record.metadata),\n last_delivery_at: stringOrNull(record.last_delivery_at),\n created_at: stringOrNull(record.created_at),\n updated_at: stringOrNull(record.updated_at),\n raw: record,\n };\n}\n\nexport function parse_webhook_delivery(payload: unknown): WebhookDeliveryRecord {\n const record = requireRecord(payload, \"webhook delivery\");\n return {\n delivery_id: String(record.id ?? record.delivery_id ?? \"\"),\n subscription_id: String(record.subscription_id ?? \"\"),\n event_id: String(record.event_id ?? \"\"),\n event_type: String(record.event_type ?? \"\"),\n idempotency_key: String(record.idempotency_key ?? \"\"),\n callback_url: String(record.callback_url ?? \"\"),\n delivery_status: String(record.delivery_status ?? \"\"),\n request_headers: toRecord(record.request_headers),\n request_body: toRecord(record.request_body),\n response_status: typeof record.response_status === \"number\" ? record.response_status : null,\n response_headers: toRecord(record.response_headers),\n response_body: cloneJson(record.response_body),\n duration_ms: typeof record.duration_ms === \"number\" ? record.duration_ms : null,\n attempt_count: typeof record.attempt_count === \"number\" ? record.attempt_count : 0,\n last_attempt_at: stringOrNull(record.last_attempt_at),\n delivered_at: stringOrNull(record.delivered_at),\n error_message: stringOrNull(record.error_message),\n trace_id: stringOrNull(record.trace_id),\n created_at: stringOrNull(record.created_at),\n updated_at: stringOrNull(record.updated_at),\n raw: record,\n };\n}\n\nexport function parse_webhook_event(payload: unknown): SiglumeWebhookEvent {\n const record = requireRecord(payload, \"webhook event\");\n const eventType = String(record.type ?? \"\").trim();\n if (!WEBHOOK_EVENT_SET.has(eventType)) {\n throw new SiglumeWebhookPayloadError(`Unsupported webhook event type: ${eventType || \"<missing>\"}.`);\n }\n const event = {\n id: String(record.id ?? \"\"),\n type: eventType as WebhookEventType,\n api_version: String(record.api_version ?? \"\"),\n occurred_at: String(record.occurred_at ?? \"\"),\n idempotency_key: String(record.idempotency_key ?? record.id ?? \"\"),\n trace_id: stringOrNull(record.trace_id),\n data: toRecord(record.data),\n raw: record,\n } as SiglumeWebhookEvent;\n if (!event.id) {\n throw new SiglumeWebhookPayloadError(\"Webhook event id is required.\");\n }\n if (!event.api_version) {\n throw new SiglumeWebhookPayloadError(\"Webhook api_version is required.\");\n }\n if (!event.occurred_at) {\n throw new SiglumeWebhookPayloadError(\"Webhook occurred_at is required.\");\n }\n return event;\n}\n\nexport function parse_queued_webhook_event(payload: unknown): QueuedWebhookEvent {\n const record = requireRecord(payload, \"queued webhook event\");\n return {\n queued: Boolean(record.queued),\n event: parse_webhook_event(record.event),\n };\n}\n\nfunction eventBodyFromBytes(bytes: Uint8Array): SiglumeWebhookEvent {\n let parsed: unknown;\n try {\n parsed = JSON.parse(new TextDecoder().decode(bytes));\n } catch (error) {\n throw new SiglumeWebhookPayloadError(\"Webhook body must contain valid UTF-8 JSON.\");\n }\n return parse_webhook_event(parsed);\n}\n\nfunction rawBodyFromExpressRequest(request: ExpressLikeRequest): Uint8Array {\n const raw = request.rawBody;\n if (raw instanceof Uint8Array) {\n return raw;\n }\n if (raw instanceof ArrayBuffer) {\n return new Uint8Array(raw);\n }\n if (ArrayBuffer.isView(raw)) {\n return new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength);\n }\n if (typeof raw === \"string\") {\n return new TextEncoder().encode(raw);\n }\n if (typeof request.body === \"string\") {\n return new TextEncoder().encode(request.body);\n }\n if (isRecord(request.body)) {\n throw new SiglumeWebhookPayloadError(\n \"Express webhook handling requires req.rawBody (or a string body) so the signature can be verified against the original payload.\",\n );\n }\n throw new SiglumeWebhookPayloadError(\"Webhook request body is missing.\");\n}\n\nexport class WebhookHandler {\n readonly signing_secret: string;\n readonly tolerance_seconds: number;\n readonly deduper?: InMemoryWebhookDedupe;\n private readonly handlers = new Map<string, WebhookCallback[]>();\n\n constructor(options: {\n signing_secret: string;\n tolerance_seconds?: number;\n deduper?: InMemoryWebhookDedupe;\n }) {\n if (!options.signing_secret) {\n throw new SiglumeWebhookSignatureError(\"SIGLUME_WEBHOOK_SECRET is required.\");\n }\n this.signing_secret = options.signing_secret;\n this.tolerance_seconds = Math.max(1, Math.trunc(options.tolerance_seconds ?? DEFAULT_WEBHOOK_TOLERANCE_SECONDS));\n this.deduper = options.deduper;\n }\n\n on<T extends WebhookEventType | \"*\">(\n event_type: T,\n handler: T extends \"*\" ? WebhookCallback<SiglumeWebhookEvent> : WebhookCallback<Extract<SiglumeWebhookEvent, { type: T }>>,\n ): this {\n const normalized = String(event_type ?? \"\").trim();\n if (normalized !== \"*\" && !WEBHOOK_EVENT_SET.has(normalized)) {\n throw new SiglumeWebhookError(`Unsupported Siglume webhook event type: ${normalized}`);\n }\n const bucket = this.handlers.get(normalized) ?? [];\n bucket.push(handler as WebhookCallback);\n this.handlers.set(normalized, bucket);\n return this;\n }\n\n async verify(\n body: Uint8Array | ArrayBuffer | string | Record<string, unknown>,\n headers: HeaderLike,\n options: { now?: number } = {},\n ): Promise<{ event: SiglumeWebhookEvent; verification: WebhookSignatureVerification }> {\n const signatureHeader = headerValue(headers, WEBHOOK_SIGNATURE_HEADER);\n if (!signatureHeader) {\n throw new SiglumeWebhookSignatureError(\"Missing Siglume-Signature header.\");\n }\n const bytes = bodyBytes(body);\n const verification = await verify_webhook_signature(this.signing_secret, bytes, signatureHeader, {\n tolerance_seconds: this.tolerance_seconds,\n now: options.now,\n });\n const event = eventBodyFromBytes(bytes);\n const eventIdHeader = headerValue(headers, WEBHOOK_EVENT_ID_HEADER);\n const eventTypeHeader = headerValue(headers, WEBHOOK_EVENT_TYPE_HEADER);\n if (eventIdHeader && eventIdHeader !== event.id) {\n throw new SiglumeWebhookPayloadError(\"Siglume-Event-Id header did not match the webhook body.\");\n }\n if (eventTypeHeader && eventTypeHeader !== event.type) {\n throw new SiglumeWebhookPayloadError(\"Siglume-Event-Type header did not match the webhook body.\");\n }\n return { event, verification };\n }\n\n async dispatch(event: SiglumeWebhookEvent): Promise<unknown[]> {\n const callbacks = [...(this.handlers.get(\"*\") ?? []), ...(this.handlers.get(event.type) ?? [])];\n const results: unknown[] = [];\n for (const callback of callbacks) {\n results.push(await callback(event));\n }\n return results;\n }\n\n async handle(\n body: Uint8Array | ArrayBuffer | string | Record<string, unknown>,\n headers: HeaderLike,\n options: { now?: number } = {},\n ): Promise<WebhookDispatchResult> {\n const { event, verification } = await this.verify(body, headers, options);\n if (this.deduper?.is_duplicate(event.idempotency_key)) {\n return {\n event,\n verification,\n duplicate: true,\n callback_results: [],\n };\n }\n const callbackResults = await this.dispatch(event);\n this.deduper?.mark_processed(event.idempotency_key);\n return {\n event,\n verification,\n duplicate: false,\n callback_results: callbackResults,\n };\n }\n\n asExpressHandler() {\n return async (request: ExpressLikeRequest, response: ExpressLikeResponse): Promise<void> => {\n try {\n const result = await this.handle(rawBodyFromExpressRequest(request), request.headers);\n response.status(200).json({\n ok: true,\n duplicate: result.duplicate,\n event_id: result.event.id,\n event_type: result.event.type,\n });\n } catch (error) {\n if (error instanceof SiglumeWebhookSignatureError) {\n response.status(401).json({ ok: false, code: \"INVALID_SIGNATURE\", error: error.message });\n return;\n }\n if (error instanceof SiglumeWebhookReplayError) {\n response.status(409).json({ ok: false, code: \"DUPLICATE_EVENT\", error: error.message });\n return;\n }\n if (error instanceof SiglumeWebhookPayloadError || error instanceof SiglumeWebhookError) {\n response.status(400).json({ ok: false, code: \"INVALID_PAYLOAD\", error: error.message });\n return;\n }\n throw error;\n }\n };\n }\n}\n","import { isRecord, stringOrNull, toRecord } from \"./utils\";\n\nexport interface SettlementReceipt {\n receipt_id: string;\n chain_receipt_id?: string | null;\n tx_hash: string;\n user_operation_hash?: string | null;\n receipt_kind?: string | null;\n reference_type?: string | null;\n reference_id?: string | null;\n tx_status?: string | null;\n network: string;\n chain_id: number;\n block_number?: number | null;\n confirmations: number;\n finality_confirmations: number;\n submitted_hash?: string | null;\n tx_hash_is_placeholder: boolean;\n actual_gas_used?: number | null;\n actual_gas_cost_wei?: number | null;\n actual_gas_cost_pol?: string | null;\n last_status_checked_at?: string | null;\n submitted_at_iso?: string | null;\n confirmed_at_iso?: string | null;\n created_at_iso?: string | null;\n updated_at_iso?: string | null;\n payload: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface PolygonMandate {\n mandate_id: string;\n payer_wallet?: string | null;\n payee_wallet?: string | null;\n monthly_cap_minor: number;\n currency: string;\n network: string;\n cadence: string;\n purpose: string;\n status: string;\n retry_count: number;\n next_attempt_at_iso?: string | null;\n last_attempt_at_iso?: string | null;\n canceled_at_iso?: string | null;\n cancel_scheduled: boolean;\n cancel_scheduled_at_iso?: string | null;\n onchain_mandate_id?: number | null;\n idempotency_key?: string | null;\n display_currency?: string | null;\n chain_receipt?: SettlementReceipt | null;\n metadata: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface EmbeddedWalletCharge {\n tx_hash: string;\n user_operation_hash?: string | null;\n block_number?: number | null;\n gas_sponsored_by?: string | null;\n settlement_amount_minor?: number | null;\n platform_fee_minor?: number | null;\n developer_net_minor?: number | null;\n currency?: string | null;\n status?: string | null;\n receipt_id?: string | null;\n charge_ref?: string | null;\n period_key?: string | null;\n submitted_at_iso?: string | null;\n confirmed_at_iso?: string | null;\n receipt?: SettlementReceipt | null;\n approval?: Record<string, unknown> | null;\n finalization?: Record<string, unknown> | null;\n raw: Record<string, unknown>;\n}\n\nexport interface CrossCurrencyQuote {\n from_currency: string;\n to_currency: string;\n rate: number;\n expires_at_iso?: string | null;\n venue?: string | null;\n source_amount_minor: number;\n quoted_amount_minor: number;\n minimum_received_minor?: number | null;\n slippage_bps: number;\n fee_minor: number;\n fee_currency?: string | null;\n price_impact_bps: number;\n allowance_needed: boolean;\n allowance_spender?: string | null;\n actual_allowance_minor?: number | null;\n approve_transaction_request?: Record<string, unknown> | null;\n swap_transaction_request?: Record<string, unknown> | null;\n raw: Record<string, unknown>;\n}\n\nexport function parse_settlement_receipt(data: Record<string, unknown>): SettlementReceipt {\n const payload = toRecord(data.payload_jsonb);\n return {\n receipt_id: String(data.receipt_id ?? data.chain_receipt_id ?? \"\"),\n chain_receipt_id: stringOrNull(data.chain_receipt_id) ?? stringOrNull(data.receipt_id),\n tx_hash: String(data.tx_hash ?? \"\"),\n user_operation_hash: stringOrNull(data.user_operation_hash),\n receipt_kind: stringOrNull(data.receipt_kind),\n reference_type: stringOrNull(data.reference_type),\n reference_id: stringOrNull(data.reference_id),\n tx_status: stringOrNull(data.tx_status),\n network: String(data.network ?? \"polygon\"),\n chain_id: Number(data.chain_id ?? 137),\n block_number: numberOrNull(data.block_number),\n confirmations: Number(data.confirmations ?? 0),\n finality_confirmations: Number(data.finality_confirmations ?? 0),\n submitted_hash: stringOrNull(data.submitted_hash),\n tx_hash_is_placeholder: Boolean(data.tx_hash_is_placeholder ?? false),\n actual_gas_used: numberOrNull(data.actual_gas_used),\n actual_gas_cost_wei: numberOrNull(data.actual_gas_cost_wei),\n actual_gas_cost_pol: stringOrNull(data.actual_gas_cost_pol),\n last_status_checked_at: stringOrNull(data.last_status_checked_at),\n submitted_at_iso: stringOrNull(data.submitted_at),\n confirmed_at_iso: stringOrNull(data.confirmed_at),\n created_at_iso: stringOrNull(data.created_at),\n updated_at_iso: stringOrNull(data.updated_at),\n payload,\n raw: { ...data },\n };\n}\n\nexport function parse_polygon_mandate(data: Record<string, unknown>): PolygonMandate {\n const metadata = toRecord(data.metadata_jsonb);\n const transaction_request = toRecord(data.transaction_request);\n const approve_transaction_request = toRecord(data.approve_transaction_request);\n const chain_receipt = isRecord(data.chain_receipt) ? parse_settlement_receipt(data.chain_receipt) : null;\n return {\n mandate_id: String(data.mandate_id ?? data.payment_mandate_id ?? \"\"),\n payer_wallet:\n firstText(\n transaction_request.from_address,\n approve_transaction_request.from_address,\n metadata.wallet_address,\n metadata.smart_account_address,\n ) ?? null,\n payee_wallet: firstText(data.payee_ref, metadata.payee_wallet) ?? null,\n monthly_cap_minor: Number(data.max_amount_minor ?? 0),\n currency: firstText(data.token_symbol, data.display_currency, \"USDC\") ?? \"USDC\",\n network: String(data.network ?? \"polygon\"),\n cadence: String(data.cadence ?? \"monthly\"),\n purpose: String(data.purpose ?? \"subscription\"),\n status: String(data.status ?? \"active\"),\n retry_count: Number(data.retry_count ?? 0),\n next_attempt_at_iso: stringOrNull(data.next_attempt_at),\n last_attempt_at_iso: stringOrNull(data.last_attempt_at),\n canceled_at_iso: stringOrNull(data.canceled_at),\n cancel_scheduled: Boolean(metadata.cancel_scheduled) || Boolean(metadata.cancel_queue_required),\n cancel_scheduled_at_iso: stringOrNull(metadata.cancel_queue_requested_at),\n onchain_mandate_id: numberOrNull(metadata.onchain_mandate_id),\n idempotency_key: stringOrNull(data.idempotency_key),\n display_currency: stringOrNull(data.display_currency),\n chain_receipt,\n metadata,\n raw: { ...data },\n };\n}\n\nexport function parse_embedded_wallet_charge(\n data: Record<string, unknown> = {},\n options: { receipt?: SettlementReceipt | Record<string, unknown> | null } = {},\n): EmbeddedWalletCharge {\n const receipt = isSettlementReceipt(options.receipt)\n ? options.receipt\n : isRecord(options.receipt)\n ? parse_settlement_receipt(options.receipt)\n : options.receipt ?? (isRecord(data.receipt) ? parse_settlement_receipt(data.receipt) : null);\n const payload = receipt?.payload ?? {};\n const settlement_amount_minor = numberOrNull(data.gross_amount_minor)\n ?? numberOrNull(payload.gross_amount_minor)\n ?? numberOrNull(payload.amount_minor);\n const platform_fee_minor = numberOrNull(payload.platform_fee_minor) ?? numberOrNull(payload.fee_minor);\n const developer_net_minor = numberOrNull(payload.developer_net_minor)\n ?? (settlement_amount_minor !== null && platform_fee_minor !== null\n ? settlement_amount_minor - platform_fee_minor\n : null);\n return {\n tx_hash: firstText(data.tx_hash, receipt?.tx_hash) ?? \"\",\n user_operation_hash: firstText(receipt?.user_operation_hash, data.user_operation_hash) ?? null,\n block_number: receipt?.block_number ?? null,\n gas_sponsored_by: firstText(payload.gas_sponsored_by, payload.paymaster, \"platform\") ?? null,\n settlement_amount_minor,\n platform_fee_minor,\n developer_net_minor,\n currency: firstText(payload.token_symbol, payload.display_currency) ?? null,\n status: firstText(data.status, receipt?.tx_status) ?? null,\n receipt_id: receipt?.receipt_id ?? null,\n charge_ref: stringOrNull(data.charge_ref),\n period_key: stringOrNull(data.period_key),\n submitted_at_iso: receipt?.submitted_at_iso ?? null,\n confirmed_at_iso: receipt?.confirmed_at_iso ?? null,\n receipt,\n approval: isRecord(data.approval) ? { ...data.approval } : null,\n finalization: isRecord(data.finalization) ? { ...data.finalization } : null,\n raw: { ...data },\n };\n}\n\nexport function parse_cross_currency_quote(data: Record<string, unknown>): CrossCurrencyQuote {\n return {\n from_currency: String(data.sell_token ?? data.from_currency ?? \"\"),\n to_currency: String(data.buy_token ?? data.to_currency ?? \"\"),\n rate: Number(data.rate ?? 0),\n expires_at_iso: stringOrNull(data.quote_expires_at ?? data.expires_at_iso),\n venue: firstText(data.provider, data.venue) ?? null,\n source_amount_minor: Number(data.amount_minor ?? data.source_amount_minor ?? 0),\n quoted_amount_minor: Number(data.estimated_buy_minor ?? data.quoted_amount_minor ?? 0),\n minimum_received_minor: numberOrNull(data.minimum_buy_minor),\n slippage_bps: Number(data.slippage_bps ?? 0),\n fee_minor: Number(data.fee_minor ?? 0),\n fee_currency: firstText(data.fee_token, data.fee_currency) ?? null,\n price_impact_bps: Number(data.price_impact_bps ?? 0),\n allowance_needed: Boolean(data.allowance_needed ?? false),\n allowance_spender: stringOrNull(data.allowance_spender),\n actual_allowance_minor: numberOrNull(data.actual_allowance_minor),\n approve_transaction_request: isRecord(data.approve_transaction_request) ? { ...data.approve_transaction_request } : null,\n swap_transaction_request: isRecord(data.swap_transaction_request) ? { ...data.swap_transaction_request } : null,\n raw: { ...data },\n };\n}\n\nexport function simulate_polygon_mandate(options: {\n mandate_id: string;\n payer_wallet: string;\n payee_wallet: string;\n monthly_cap_minor: number;\n currency: string;\n status?: string;\n next_attempt_at_iso?: string | null;\n cancel_scheduled?: boolean;\n cadence?: string;\n purpose?: string;\n}): PolygonMandate {\n const metadata: Record<string, unknown> = {\n cancel_scheduled: Boolean(options.cancel_scheduled ?? false),\n payee_wallet: options.payee_wallet,\n };\n return {\n mandate_id: options.mandate_id,\n payer_wallet: options.payer_wallet,\n payee_wallet: options.payee_wallet,\n monthly_cap_minor: Math.trunc(options.monthly_cap_minor),\n currency: String(options.currency).toUpperCase(),\n network: \"polygon\",\n cadence: options.cadence ?? \"monthly\",\n purpose: options.purpose ?? \"subscription\",\n status: options.status ?? \"active\",\n retry_count: 0,\n next_attempt_at_iso: options.next_attempt_at_iso ?? \"2026-05-01T00:00:00Z\",\n cancel_scheduled: Boolean(options.cancel_scheduled ?? false),\n onchain_mandate_id: 1,\n metadata,\n raw: {\n mandate_id: options.mandate_id,\n payee_ref: options.payee_wallet,\n token_symbol: String(options.currency).toUpperCase(),\n max_amount_minor: Math.trunc(options.monthly_cap_minor),\n status: options.status ?? \"active\",\n next_attempt_at: options.next_attempt_at_iso ?? \"2026-05-01T00:00:00Z\",\n metadata_jsonb: metadata,\n },\n };\n}\n\nexport function simulate_embedded_wallet_charge(options: {\n mandate: PolygonMandate;\n amount_minor: number;\n tx_hash: string;\n user_operation_hash?: string | null;\n block_number?: number;\n gas_sponsored_by?: string;\n platform_fee_minor?: number;\n developer_net_minor?: number | null;\n}): EmbeddedWalletCharge {\n const settlement_amount_minor = Math.trunc(options.amount_minor);\n const platform_fee_minor = Math.trunc(options.platform_fee_minor ?? 0);\n const developer_net_minor = options.developer_net_minor == null\n ? settlement_amount_minor - platform_fee_minor\n : Math.trunc(options.developer_net_minor);\n const receipt: SettlementReceipt = {\n receipt_id: `chr_${options.mandate.mandate_id}`,\n chain_receipt_id: `chr_${options.mandate.mandate_id}`,\n tx_hash: options.tx_hash,\n user_operation_hash: stringOrNull(options.user_operation_hash),\n receipt_kind: \"mandate_charge_submitted\",\n reference_type: \"payment_mandate\",\n reference_id: options.mandate.mandate_id,\n tx_status: \"confirmed\",\n network: options.mandate.network,\n chain_id: 137,\n block_number: Math.trunc(options.block_number ?? 123456),\n confirmations: 12,\n finality_confirmations: 12,\n submitted_hash: stringOrNull(options.user_operation_hash) ?? options.tx_hash,\n tx_hash_is_placeholder: false,\n submitted_at_iso: \"2026-04-20T10:00:00Z\",\n confirmed_at_iso: \"2026-04-20T10:00:15Z\",\n payload: {\n gross_amount_minor: settlement_amount_minor,\n platform_fee_minor,\n developer_net_minor,\n token_symbol: options.mandate.currency,\n payee_wallet: options.mandate.payee_wallet,\n gas_sponsored_by: options.gas_sponsored_by ?? \"platform\",\n },\n raw: {},\n };\n return {\n tx_hash: options.tx_hash,\n user_operation_hash: stringOrNull(options.user_operation_hash),\n block_number: receipt.block_number,\n gas_sponsored_by: options.gas_sponsored_by ?? \"platform\",\n settlement_amount_minor,\n platform_fee_minor,\n developer_net_minor,\n currency: options.mandate.currency,\n status: \"confirmed\",\n receipt_id: receipt.receipt_id,\n charge_ref: `charge_${options.mandate.mandate_id}`,\n period_key: \"202604\",\n submitted_at_iso: receipt.submitted_at_iso,\n confirmed_at_iso: receipt.confirmed_at_iso,\n receipt,\n finalization: { await: { confirmed: true, attempts: 1 } },\n raw: {\n status: \"submitted\",\n tx_hash: options.tx_hash,\n user_operation_hash: options.user_operation_hash ?? null,\n gross_amount_minor: settlement_amount_minor,\n platform_fee_minor,\n developer_net_minor,\n },\n };\n}\n\nfunction numberOrNull(value: unknown): number | null {\n if (value === undefined || value === null || value === \"\") {\n return null;\n }\n const parsed = Number(value);\n return Number.isFinite(parsed) ? Math.trunc(parsed) : null;\n}\n\nfunction firstText(...values: unknown[]): string | null {\n for (const value of values) {\n const text = stringOrNull(value);\n if (text) {\n return text;\n }\n }\n return null;\n}\n\nfunction isSettlementReceipt(value: unknown): value is SettlementReceipt {\n return isRecord(value) && typeof value.receipt_id === \"string\" && isRecord(value.payload);\n}\n","export const DEFAULT_OPERATION_AGENT_ID = \"agt_owner_demo\";\n\nexport interface OperationMetadata {\n operation_key: string;\n summary: string;\n params_summary: string;\n page_href?: string | null;\n allowed_params: string[];\n required_params: string[];\n requires_params: boolean;\n param_types: Record<string, string>;\n permission_class: string;\n approval_mode: string;\n input_schema: Record<string, unknown>;\n output_schema: Record<string, unknown>;\n agent_id?: string | null;\n source: string;\n raw: Record<string, unknown>;\n}\n\nexport interface OperationExecution {\n agent_id: string;\n operation_key: string;\n message: string;\n action: string;\n result: Record<string, unknown>;\n // Fields below are v0.6 additions for the owner-operation execute\n // envelope. They are declared optional so that downstream consumers\n // with existing object literals or mocks (conforming to the pre-v0.6\n // shape) continue to type-check without having to pre-populate every\n // new field. SDK-internal factories still always set them; optional\n // is for external surface compatibility only.\n status?: string;\n approval_required?: boolean;\n intent_id?: string | null;\n approval_status?: string | null;\n approval_snapshot_hash?: string | null;\n action_payload?: Record<string, unknown>;\n safety?: Record<string, unknown>;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport function defaultOperationOutputSchema(): Record<string, unknown> {\n return {\n type: \"object\",\n properties: {\n summary: {\n type: \"string\",\n description: \"One-line summary of the first-party operation result.\",\n },\n action: {\n type: \"string\",\n description: \"Structured action label returned by Siglume.\",\n },\n result: {\n type: \"object\",\n description: \"Raw first-party operation payload returned by Siglume.\",\n },\n },\n required: [\"summary\", \"action\", \"result\"],\n additionalProperties: false,\n };\n}\n\nconst KNOWN_OPERATION_OVERRIDES: Record<string, Record<string, unknown>> = {\n \"owner.charter.get\": {\n summary: \"Read the current owner charter.\",\n params_summary: \"No parameters.\",\n page_href: \"/owner/charters\",\n allowed_params: [],\n required_params: [],\n requires_params: false,\n permission_class: \"read-only\",\n approval_mode: \"auto\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n \"owner.charter.update\": {\n summary: \"Update the owner charter.\",\n params_summary:\n \"Supports partial updates for role, goals, target_profile, qualification_criteria, success_metrics, and constraints.\",\n page_href: \"/owner/charters\",\n allowed_params: [\"role\", \"goals\", \"target_profile\", \"qualification_criteria\", \"success_metrics\", \"constraints\"],\n required_params: [\"goals\"],\n requires_params: true,\n param_types: {\n role: \"string\",\n goals: \"dict\",\n target_profile: \"dict\",\n qualification_criteria: \"dict\",\n success_metrics: \"dict\",\n constraints: \"dict\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n role: {\n type: \"string\",\n description: \"Updated owner role label, such as buyer or researcher.\",\n default: \"buyer\",\n },\n goals: {\n type: \"object\",\n description: \"Updated charter goals payload.\",\n properties: {\n charter_text: {\n type: \"string\",\n description: \"Human-readable charter text to store in the owner charter.\",\n default: \"Prefer explicit approvals for unusual purchases.\",\n },\n },\n required: [\"charter_text\"],\n additionalProperties: true,\n },\n target_profile: {\n type: \"object\",\n description: \"Optional target-profile constraints for the agent.\",\n default: {},\n },\n qualification_criteria: {\n type: \"object\",\n description: \"Optional qualification criteria for tasks the agent may accept.\",\n default: {},\n },\n success_metrics: {\n type: \"object\",\n description: \"Optional success metrics, such as approval_rate_floor.\",\n default: { approval_rate_floor: 0.8 },\n },\n constraints: {\n type: \"object\",\n description: \"Optional constraint payload applied to the charter.\",\n default: {},\n },\n },\n required: [\"goals\"],\n additionalProperties: false,\n },\n },\n \"owner.approval_policy.get\": {\n summary: \"Read the current owner approval policy.\",\n params_summary: \"No parameters.\",\n page_href: \"/owner/policies\",\n allowed_params: [],\n required_params: [],\n requires_params: false,\n permission_class: \"read-only\",\n approval_mode: \"auto\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n \"owner.approval_policy.update\": {\n summary: \"Update the owner approval policy.\",\n params_summary:\n \"Supports partial updates for auto_approve_below, always_require_approval_for, deny_if, approval_ttl_minutes, structured_only, merchant_allowlist, merchant_denylist, category_allowlist, category_denylist, and risk_policy.\",\n page_href: \"/owner/policies\",\n allowed_params: [\n \"auto_approve_below\",\n \"always_require_approval_for\",\n \"deny_if\",\n \"approval_ttl_minutes\",\n \"structured_only\",\n \"merchant_allowlist\",\n \"merchant_denylist\",\n \"category_allowlist\",\n \"category_denylist\",\n \"risk_policy\",\n ],\n required_params: [\"auto_approve_below\"],\n requires_params: true,\n param_types: {\n auto_approve_below: \"dict_int\",\n always_require_approval_for: \"list_str\",\n deny_if: \"dict\",\n approval_ttl_minutes: \"int\",\n structured_only: \"bool\",\n merchant_allowlist: \"list_str\",\n merchant_denylist: \"list_str\",\n category_allowlist: \"list_str\",\n category_denylist: \"list_str\",\n risk_policy: \"dict\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n auto_approve_below: {\n type: \"object\",\n description: \"Currency-to-threshold map for auto-approved actions in minor units.\",\n default: { JPY: 3000 },\n additionalProperties: { type: \"integer\" },\n },\n always_require_approval_for: {\n type: \"array\",\n description: \"Scopes that should always require approval.\",\n items: { type: \"string\" },\n default: [\"travel.booking\"],\n },\n deny_if: {\n type: \"object\",\n description: \"Risk filters that should deny execution.\",\n default: {},\n },\n approval_ttl_minutes: {\n type: \"integer\",\n description: \"Approval request time-to-live in minutes.\",\n default: 720,\n },\n structured_only: {\n type: \"boolean\",\n description: \"Require machine-structured action requests before approval.\",\n default: true,\n },\n merchant_allowlist: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n merchant_denylist: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n category_allowlist: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n category_denylist: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n risk_policy: {\n type: \"object\",\n description: \"Structured risk-policy payload.\",\n default: {},\n },\n },\n required: [\"auto_approve_below\"],\n additionalProperties: false,\n },\n },\n \"owner.budget.get\": {\n summary: \"Read the current delegated budget.\",\n params_summary: \"Optional currency parameter.\",\n page_href: \"/owner/budgets\",\n allowed_params: [\"currency\"],\n required_params: [],\n requires_params: false,\n param_types: { currency: \"string\" },\n permission_class: \"read-only\",\n approval_mode: \"auto\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n currency: {\n type: \"string\",\n description: \"Optional currency filter for the delegated-budget snapshot.\",\n default: \"JPY\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n \"owner.budget.update\": {\n summary: \"Update the delegated budget.\",\n params_summary:\n \"Supports partial updates for currency, period_limit_minor, per_order_limit_minor, auto_approve_below_minor, period_start, period_end, limits, and metadata.\",\n page_href: \"/owner/budgets\",\n allowed_params: [\n \"currency\",\n \"period_start\",\n \"period_end\",\n \"period_limit_minor\",\n \"per_order_limit_minor\",\n \"auto_approve_below_minor\",\n \"limits\",\n \"metadata\",\n ],\n required_params: [\"period_limit_minor\"],\n requires_params: true,\n param_types: {\n currency: \"string\",\n period_start: \"string\",\n period_end: \"string\",\n period_limit_minor: \"int\",\n per_order_limit_minor: \"int\",\n auto_approve_below_minor: \"int\",\n limits: \"dict\",\n metadata: \"dict\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n currency: {\n type: \"string\",\n description: \"Budget currency code.\",\n default: \"JPY\",\n },\n period_start: {\n type: \"string\",\n description: \"Optional RFC3339 start time for the budget window.\",\n default: \"2026-04-01T00:00:00Z\",\n },\n period_end: {\n type: \"string\",\n description: \"Optional RFC3339 end time for the budget window.\",\n default: \"2026-05-01T00:00:00Z\",\n },\n period_limit_minor: {\n type: \"integer\",\n description: \"Maximum delegated spend for the budget period in minor units.\",\n default: 50000,\n },\n per_order_limit_minor: {\n type: \"integer\",\n description: \"Maximum delegated spend per order in minor units.\",\n default: 12000,\n },\n auto_approve_below_minor: {\n type: \"integer\",\n description: \"Auto-approve threshold in minor units.\",\n default: 3000,\n },\n limits: {\n type: \"object\",\n description: \"Optional nested budget limits payload.\",\n default: {},\n },\n metadata: {\n type: \"object\",\n description: \"Optional metadata persisted with the delegated budget.\",\n default: { source: \"siglume_init\" },\n },\n },\n required: [\"period_limit_minor\"],\n additionalProperties: false,\n },\n },\n \"market.proposals.list\": {\n summary: \"List market proposals visible to the owner.\",\n params_summary:\n \"Supports filtering by status, opportunity_id, listing_id, need_id, seller_agent_id, buyer_agent_id, cursor, and limit.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\n \"status\",\n \"opportunity_id\",\n \"listing_id\",\n \"need_id\",\n \"seller_agent_id\",\n \"buyer_agent_id\",\n \"cursor\",\n \"limit\",\n ],\n required_params: [],\n requires_params: false,\n param_types: {\n status: \"string\",\n opportunity_id: \"string\",\n listing_id: \"string\",\n need_id: \"string\",\n seller_agent_id: \"string\",\n buyer_agent_id: \"string\",\n cursor: \"string\",\n limit: \"int\",\n },\n permission_class: \"read-only\",\n approval_mode: \"auto\",\n },\n \"market.proposals.get\": {\n summary: \"Load one market proposal by id.\",\n params_summary: \"Requires proposal_id.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\"proposal_id\"],\n required_params: [\"proposal_id\"],\n requires_params: true,\n param_types: { proposal_id: \"string\" },\n permission_class: \"read-only\",\n approval_mode: \"auto\",\n },\n \"market.proposals.create\": {\n summary: \"Stage a new market proposal for owner approval.\",\n params_summary:\n \"Requires opportunity_id and accepts optional proposal_kind, currency, amount_minor, proposed_terms_jsonb, publish_to_thread, thread_content_id, reply_to_content_id, note_title, note_summary, note_body, note_visibility, note_content_kind, and expires_at.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\n \"opportunity_id\",\n \"proposal_kind\",\n \"currency\",\n \"amount_minor\",\n \"proposed_terms_jsonb\",\n \"publish_to_thread\",\n \"thread_content_id\",\n \"reply_to_content_id\",\n \"note_title\",\n \"note_summary\",\n \"note_body\",\n \"note_visibility\",\n \"note_content_kind\",\n \"expires_at\",\n ],\n required_params: [\"opportunity_id\"],\n requires_params: true,\n param_types: {\n opportunity_id: \"string\",\n proposal_kind: \"string\",\n currency: \"string\",\n amount_minor: \"int\",\n proposed_terms_jsonb: \"dict\",\n publish_to_thread: \"bool\",\n thread_content_id: \"string\",\n reply_to_content_id: \"string\",\n note_title: \"string\",\n note_summary: \"string\",\n note_body: \"string\",\n note_visibility: \"string\",\n note_content_kind: \"string\",\n expires_at: \"string\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n },\n \"market.proposals.counter\": {\n summary: \"Stage a counter proposal for owner approval.\",\n params_summary:\n \"Requires proposal_id and accepts optional proposal_kind, proposed_terms_jsonb, publish_to_thread, thread_content_id, reply_to_content_id, note_title, note_summary, note_body, note_visibility, note_content_kind, and expires_at.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\n \"proposal_id\",\n \"proposal_kind\",\n \"proposed_terms_jsonb\",\n \"publish_to_thread\",\n \"thread_content_id\",\n \"reply_to_content_id\",\n \"note_title\",\n \"note_summary\",\n \"note_body\",\n \"note_visibility\",\n \"note_content_kind\",\n \"expires_at\",\n ],\n required_params: [\"proposal_id\"],\n requires_params: true,\n param_types: {\n proposal_id: \"string\",\n proposal_kind: \"string\",\n proposed_terms_jsonb: \"dict\",\n publish_to_thread: \"bool\",\n thread_content_id: \"string\",\n reply_to_content_id: \"string\",\n note_title: \"string\",\n note_summary: \"string\",\n note_body: \"string\",\n note_visibility: \"string\",\n note_content_kind: \"string\",\n expires_at: \"string\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n },\n \"market.proposals.accept\": {\n summary: \"Stage proposal acceptance for owner approval.\",\n params_summary:\n \"Requires proposal_id and accepts optional comment, publish_to_thread, thread_content_id, reply_to_content_id, note_title, note_summary, note_visibility, and note_content_kind.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\n \"proposal_id\",\n \"comment\",\n \"publish_to_thread\",\n \"thread_content_id\",\n \"reply_to_content_id\",\n \"note_title\",\n \"note_summary\",\n \"note_visibility\",\n \"note_content_kind\",\n ],\n required_params: [\"proposal_id\"],\n requires_params: true,\n param_types: {\n proposal_id: \"string\",\n comment: \"string\",\n publish_to_thread: \"bool\",\n thread_content_id: \"string\",\n reply_to_content_id: \"string\",\n note_title: \"string\",\n note_summary: \"string\",\n note_visibility: \"string\",\n note_content_kind: \"string\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n },\n \"market.proposals.reject\": {\n summary: \"Stage proposal rejection for owner approval.\",\n params_summary: \"Requires proposal_id and accepts optional comment.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\"proposal_id\", \"comment\"],\n required_params: [\"proposal_id\"],\n requires_params: true,\n param_types: {\n proposal_id: \"string\",\n comment: \"string\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n },\n};\n\nfunction stringValue(value: unknown): string {\n return String(value ?? \"\").trim();\n}\n\nfunction stringList(value: unknown): string[] {\n return Array.isArray(value) ? value.map((item) => stringValue(item)).filter((item) => item.length > 0) : [];\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? structuredClone(value as Record<string, unknown>)\n : {};\n}\n\nfunction inferPermissionClass(operation_key: string): string {\n const lowered = stringValue(operation_key).toLowerCase();\n if ([\n \".update\",\n \".create\",\n \".delete\",\n \".execute\",\n \".issue\",\n \".respond\",\n \".bind\",\n \".pause\",\n \".resume\",\n \".cancel\",\n \".counter\",\n \".accept\",\n \".reject\",\n \".publish\",\n \".delist\",\n ].some((token) => lowered.includes(token))) {\n return \"action\";\n }\n if ([\"payment\", \"mandate\", \"charge\", \"swap\", \"refund\"].some((token) => lowered.includes(token))) {\n return \"payment\";\n }\n return \"read-only\";\n}\n\nfunction approvalModeFor(permission_class: string): string {\n return permission_class === \"action\" || permission_class === \"payment\" ? \"always-ask\" : \"auto\";\n}\n\nfunction inferParamType(name: string): string {\n const normalized = stringValue(name).toLowerCase();\n if (normalized === \"structured_only\") {\n return \"bool\";\n }\n if ([\"limit\", \"approval_ttl_minutes\", \"period_limit_minor\", \"per_order_limit_minor\", \"auto_approve_below_minor\"].includes(normalized)) {\n return \"int\";\n }\n if (normalized.endsWith(\"_minor\") || normalized.endsWith(\"_minutes\") || normalized.endsWith(\"_seconds\")) {\n return \"int\";\n }\n if ([\n \"goals\",\n \"target_profile\",\n \"qualification_criteria\",\n \"success_metrics\",\n \"constraints\",\n \"deny_if\",\n \"risk_policy\",\n \"limits\",\n \"metadata\",\n \"payload\",\n \"projection\",\n ].includes(normalized)) {\n return \"dict\";\n }\n if ([\n \"always_require_approval_for\",\n \"merchant_allowlist\",\n \"merchant_denylist\",\n \"category_allowlist\",\n \"category_denylist\",\n \"required_connected_accounts\",\n ].includes(normalized)) {\n return \"list_str\";\n }\n if (normalized.startsWith(\"include_\")) {\n return \"bool\";\n }\n if (normalized === \"auto_approve_below\") {\n return \"dict_int\";\n }\n return \"string\";\n}\n\nfunction propertySchemaFor(name: string, paramType: string): Record<string, unknown> {\n const title = name.replaceAll(\"_\", \" \");\n if (paramType === \"int\") {\n return { type: \"integer\", description: `Operation parameter ${title}.` };\n }\n if (paramType === \"bool\") {\n return { type: \"boolean\", description: `Operation parameter ${title}.` };\n }\n if (paramType === \"dict\") {\n return { type: \"object\", description: `Operation parameter ${title}.`, default: {} };\n }\n if (paramType === \"dict_int\") {\n return {\n type: \"object\",\n description: `Operation parameter ${title}.`,\n default: {},\n additionalProperties: { type: \"integer\" },\n };\n }\n if (paramType === \"list_str\") {\n return {\n type: \"array\",\n description: `Operation parameter ${title}.`,\n items: { type: \"string\" },\n default: [],\n };\n }\n return { type: \"string\", description: `Operation parameter ${title}.` };\n}\n\nfunction buildInputSchema(\n agent_id: string | null,\n allowed_params: string[],\n required_params: string[],\n requires_params: boolean,\n param_types: Record<string, string>,\n): Record<string, unknown> {\n const properties: Record<string, unknown> = {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n ...(agent_id ? { default: agent_id } : {}),\n },\n };\n for (const name of allowed_params) {\n properties[name] = propertySchemaFor(name, param_types[name] ?? inferParamType(name));\n }\n let normalizedRequired = required_params.filter((name) => name in properties && name !== \"agent_id\");\n if (requires_params && normalizedRequired.length === 0) {\n const firstParam = allowed_params.find((name) => name in properties);\n if (firstParam) {\n normalizedRequired = [firstParam];\n }\n }\n return {\n type: \"object\",\n properties,\n required: normalizedRequired,\n additionalProperties: false,\n };\n}\n\nfunction defaultSummaryFor(operation_key: string): string {\n const normalized = stringValue(operation_key);\n if (normalized.endsWith(\".get\")) {\n return `Read ${normalized}.`;\n }\n if (normalized.endsWith(\".list\")) {\n return `List ${normalized}.`;\n }\n return `Run the ${normalized} first-party owner operation.`;\n}\n\nexport function defaultCapabilityKeyForOperation(operation_key: string): string {\n return `my-${stringValue(operation_key).replaceAll(\".\", \"-\").replaceAll(\"_\", \"-\")}-wrapper`;\n}\n\nexport function fallbackOperationCatalog(agent_id?: string | null): OperationMetadata[] {\n const resolvedAgentId = stringValue(agent_id) || DEFAULT_OPERATION_AGENT_ID;\n return Object.keys(KNOWN_OPERATION_OVERRIDES)\n .sort()\n .map((operation_key) => buildOperationMetadata({ name: operation_key }, { agent_id: resolvedAgentId, source: \"fallback\" }));\n}\n\nexport function buildOperationMetadata(\n payload: Record<string, unknown>,\n options: { agent_id?: string | null; source?: string } = {},\n): OperationMetadata {\n const raw = { ...payload };\n const operation_key = stringValue(raw.operation_key ?? raw.name);\n if (!operation_key) {\n throw new Error(\"operation_key is required\");\n }\n const override = KNOWN_OPERATION_OVERRIDES[operation_key] ?? {};\n const summary = stringValue(raw.summary) || stringValue(override.summary) || defaultSummaryFor(operation_key);\n const params_summary = stringValue(raw.params_summary ?? raw.params) || stringValue(override.params_summary);\n const allowed_params = stringList(raw.allowed_params).length > 0 ? stringList(raw.allowed_params) : stringList(override.allowed_params);\n const required_params = stringList(raw.required_params).length > 0 ? stringList(raw.required_params) : stringList(override.required_params);\n const requires_params = Boolean(raw.requires_params ?? override.requires_params);\n const param_types_source = Object.keys(recordValue(raw.param_types)).length > 0 ? recordValue(raw.param_types) : recordValue(override.param_types);\n const param_types: Record<string, string> = {};\n for (const [key, value] of Object.entries(param_types_source)) {\n const normalizedKey = String(key);\n const normalizedValue = stringValue(value);\n if (normalizedKey.length > 0 && normalizedValue.length > 0) {\n param_types[normalizedKey] = normalizedValue;\n }\n }\n const resolvedAgentId = stringValue(options.agent_id ?? raw.agent_id) || null;\n const permission_class = stringValue(raw.permission_class) || stringValue(override.permission_class) || inferPermissionClass(operation_key);\n const approval_mode = stringValue(raw.approval_mode) || stringValue(override.approval_mode) || approvalModeFor(permission_class);\n const input_schema = Object.keys(recordValue(raw.input_schema)).length > 0\n ? recordValue(raw.input_schema)\n : Object.keys(recordValue(override.input_schema)).length > 0\n ? recordValue(override.input_schema)\n : buildInputSchema(resolvedAgentId, allowed_params, required_params, requires_params, param_types);\n if (input_schema.properties && typeof input_schema.properties === \"object\" && !Array.isArray(input_schema.properties)) {\n const properties = input_schema.properties as Record<string, unknown>;\n const agentSchema = properties.agent_id;\n if (resolvedAgentId && agentSchema && typeof agentSchema === \"object\" && !Array.isArray(agentSchema)) {\n (agentSchema as Record<string, unknown>).default ??= resolvedAgentId;\n }\n }\n const output_schema = Object.keys(recordValue(raw.output_schema)).length > 0\n ? recordValue(raw.output_schema)\n : Object.keys(recordValue(override.output_schema)).length > 0\n ? recordValue(override.output_schema)\n : defaultOperationOutputSchema();\n return {\n operation_key,\n summary,\n params_summary,\n page_href: stringValue(raw.page_href) || stringValue(override.page_href) || null,\n allowed_params,\n required_params,\n requires_params,\n param_types,\n permission_class,\n approval_mode,\n input_schema,\n output_schema,\n agent_id: resolvedAgentId,\n source: options.source ?? \"live\",\n raw,\n };\n}\n","import type {\n AccessGrantRecord,\n AccountAlert,\n AccountContentDeleteResult,\n AccountContentPostResult,\n AccountDigest,\n AccountDigestSummary,\n AccountFeedbackSubmission,\n AccountPlan,\n AccountPlanCancellation,\n AccountPreferences,\n AccountWatchlist,\n AdsBilling,\n AdsBillingSettlement,\n AdsCampaignPostRecord,\n AdsCampaignRecord,\n AdsProfile,\n AgentCharter,\n AgentRecord,\n AgentThreadRecord,\n AgentTopicSubscription,\n AppListingRecord,\n AppManifest,\n ApprovalPolicy,\n BundleListingRecord,\n BundleMember,\n ConnectedAccountLifecycleResult,\n ConnectedAccountOAuthStart,\n AutoRegistrationReceipt,\n BillingPortalLink,\n BudgetPolicy,\n CapabilityBindingRecord,\n ConnectedAccountRecord,\n CursorPage,\n DeveloperPortalSummary,\n EnvelopeMeta,\n FavoriteAgent,\n FavoriteAgentMutation,\n GrantBindingResult,\n InstalledToolBindingPolicyRecord,\n InstalledToolConnectionReadiness,\n InstalledToolExecutionRecord,\n InstalledToolPolicyUpdateResult,\n InstalledToolReceiptRecord,\n InstalledToolReceiptStepRecord,\n InstalledToolRecord,\n MarketProposalActionResult,\n MarketProposalRecord,\n MarketNeedRecord,\n PartnerApiKeyHandle,\n PartnerApiKeyRecord,\n PartnerDashboard,\n PartnerUsage,\n NetworkClaimRecord,\n NetworkContentDetail,\n NetworkContentSummary,\n NetworkEvidenceRecord,\n NetworkRepliesPage,\n RegistrationConfirmation,\n RegistrationQuality,\n SandboxSession,\n PlanCheckoutSession,\n PlanWeb3Mandate,\n SupportCaseRecord,\n ToolManual,\n ToolManualIssue,\n ToolManualQualityReport,\n UsageEventRecord,\n WorksCategoryRecord,\n WorksOwnerDashboard,\n WorksOwnerDashboardAgent,\n WorksOwnerDashboardOrder,\n WorksOwnerDashboardPitch,\n WorksOwnerDashboardStats,\n WorksPosterDashboard,\n WorksPosterDashboardJob,\n WorksPosterDashboardOrder,\n WorksPosterDashboardStats,\n WorksRegistrationRecord,\n} from \"./types\";\nimport { SiglumeAPIError, SiglumeClientError, SiglumeNotFoundError } from \"./errors\";\nimport {\n type QueuedWebhookEvent,\n type WebhookDeliveryRecord,\n type WebhookSubscriptionRecord,\n parse_queued_webhook_event,\n parse_webhook_delivery,\n parse_webhook_subscription,\n} from \"./webhooks\";\nimport {\n type CrossCurrencyQuote,\n type EmbeddedWalletCharge,\n type PolygonMandate,\n type SettlementReceipt,\n parse_cross_currency_quote,\n parse_embedded_wallet_charge,\n parse_polygon_mandate,\n parse_settlement_receipt,\n} from \"./web3\";\nimport {\n type OperationExecution,\n type OperationMetadata,\n buildOperationMetadata,\n fallbackOperationCatalog,\n} from \"./operations\";\nimport {\n buildRegistrationStubSource,\n coerceMapping,\n isRecord,\n numberOrNull,\n parseRetryAfter,\n sleep,\n stringOrNull,\n toJsonable,\n toRecord,\n} from \"./utils\";\n\nexport const DEFAULT_SIGLUME_API_BASE = \"https://siglume.com/v1\";\nconst RETRYABLE_STATUS_CODES = new Set([429, 500, 502, 503, 504]);\n\ntype FetchLike = typeof fetch;\n\ntype RequestOptions = {\n params?: Record<string, string | number | boolean | undefined | null>;\n json_body?: Record<string, unknown>;\n headers?: Record<string, string>;\n};\n\nexport interface SiglumeClientOptions {\n api_key?: string;\n agent_key?: string;\n base_url?: string;\n timeout_ms?: number;\n max_retries?: number;\n fetch?: FetchLike;\n}\n\ntype PendingConfirmation = {\n manifest: Record<string, unknown>;\n tool_manual: Record<string, unknown>;\n input_form_spec: Record<string, unknown>;\n};\n\ntype RequestMetaTuple = [Record<string, unknown>, EnvelopeMeta];\ntype RequestAnyTuple = [unknown, EnvelopeMeta];\n\nexport interface SiglumeClientShape {\n auto_register(\n manifest: AppManifest | Record<string, unknown>,\n tool_manual: ToolManual | Record<string, unknown>,\n options?: {\n source_code?: string;\n source_url?: string;\n runtime_validation?: Record<string, unknown>;\n oauth_credentials?: Record<string, unknown> | unknown[];\n source_context?: Record<string, unknown>;\n input_form_spec?: Record<string, unknown>;\n },\n ): Promise<AutoRegistrationReceipt>;\n confirm_registration(\n listing_id: string,\n options?: { manifest?: AppManifest | Record<string, unknown>; tool_manual?: ToolManual | Record<string, unknown> },\n ): Promise<RegistrationConfirmation>;\n preview_quality_score(tool_manual: ToolManual | Record<string, unknown>): Promise<ToolManualQualityReport>;\n submit_review(listing_id: string): Promise<AppListingRecord>;\n list_my_listings(options?: { status?: string; limit?: number; cursor?: string }): Promise<CursorPage<AppListingRecord>>;\n get_listing(listing_id: string): Promise<AppListingRecord>;\n list_capabilities(options?: {\n mine?: boolean;\n status?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<AppListingRecord>>;\n // Capability bundles (v0.7 track 2)\n list_bundles(options?: {\n mine?: boolean;\n status?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<BundleListingRecord>>;\n get_bundle(bundle_id: string): Promise<BundleListingRecord>;\n create_bundle(input: {\n bundle_key: string;\n display_name: string;\n description?: string;\n category?: string;\n price_model?: string;\n price_value_minor?: number;\n currency?: string;\n jurisdiction?: string;\n metadata?: Record<string, unknown>;\n }): Promise<BundleListingRecord>;\n update_bundle(bundle_id: string, patch: {\n display_name?: string;\n description?: string;\n category?: string;\n price_model?: string;\n price_value_minor?: number;\n currency?: string;\n jurisdiction?: string;\n metadata?: Record<string, unknown>;\n }): Promise<BundleListingRecord>;\n add_bundle_capability(bundle_id: string, input: { capability_listing_id: string; position?: number }): Promise<BundleListingRecord>;\n remove_bundle_capability(bundle_id: string, capability_listing_id: string): Promise<BundleListingRecord>;\n submit_bundle_for_review(bundle_id: string): Promise<BundleListingRecord>;\n\n // Connected accounts (v0.7 track 3)\n start_connected_account_oauth(input: {\n listing_id: string;\n redirect_uri: string;\n scopes?: string[];\n account_role?: string;\n }): Promise<ConnectedAccountOAuthStart>;\n set_listing_oauth_credentials(\n listing_id: string,\n input: {\n provider_key: string;\n client_id: string;\n client_secret: string;\n authorize_url: string;\n token_url: string;\n revoke_url?: string;\n display_name?: string;\n scope_separator?: string;\n token_endpoint_auth?: string;\n pkce_required?: boolean;\n refresh_supported?: boolean;\n available_scopes?: string[];\n required_scopes?: string[];\n },\n ): Promise<Record<string, unknown>>;\n get_listing_oauth_credentials_status(listing_id: string): Promise<Record<string, unknown>>;\n complete_connected_account_oauth(input: { state: string; code: string }): Promise<Record<string, unknown>>;\n refresh_connected_account(account_id: string): Promise<ConnectedAccountLifecycleResult>;\n revoke_connected_account(account_id: string): Promise<ConnectedAccountLifecycleResult>;\n\n get_developer_portal(): Promise<DeveloperPortalSummary>;\n create_sandbox_session(options: { agent_id: string; capability_key: string }): Promise<SandboxSession>;\n get_usage(options?: {\n capability_key?: string;\n agent_id?: string;\n outcome?: string;\n environment?: string;\n period_key?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<UsageEventRecord>>;\n list_agents(options?: { query?: string; limit?: number }): Promise<AgentRecord[]>;\n list_operations(options?: { agent_id?: string; lang?: string }): Promise<OperationMetadata[]>;\n get_operation_metadata(operation_key: string, options?: { agent_id?: string; lang?: string }): Promise<OperationMetadata>;\n get_account_preferences(): Promise<AccountPreferences>;\n update_account_preferences(options: {\n language?: string;\n summary_depth?: string;\n notification_mode?: string;\n autonomy_level?: string;\n interest_profile?: Record<string, unknown>;\n consent_policy?: Record<string, unknown>;\n }): Promise<AccountPreferences>;\n get_account_plan(): Promise<AccountPlan>;\n start_plan_checkout(options: { target_tier: string; currency?: string }): Promise<PlanCheckoutSession>;\n open_plan_billing_portal(): Promise<BillingPortalLink>;\n cancel_account_plan(): Promise<AccountPlanCancellation>;\n create_plan_web3_mandate(options: { target_tier: string; currency?: string }): Promise<PlanWeb3Mandate>;\n cancel_plan_web3_mandate(): Promise<PlanWeb3Mandate>;\n get_account_watchlist(): Promise<AccountWatchlist>;\n update_account_watchlist(symbols: string[]): Promise<AccountWatchlist>;\n list_account_favorites(): Promise<FavoriteAgent[]>;\n add_account_favorite(agent_id: string): Promise<FavoriteAgentMutation>;\n remove_account_favorite(agent_id: string): Promise<FavoriteAgentMutation>;\n post_account_content_direct(text: string, options?: { lang?: string }): Promise<AccountContentPostResult>;\n delete_account_content(content_id: string): Promise<AccountContentDeleteResult>;\n list_account_digests(\n options?: { cursor?: string; limit?: number },\n ): Promise<CursorPage<AccountDigestSummary>>;\n get_account_digest(digest_id: string): Promise<AccountDigest>;\n list_account_alerts(\n options?: { cursor?: string; limit?: number },\n ): Promise<CursorPage<AccountAlert>>;\n get_account_alert(alert_id: string): Promise<AccountAlert>;\n submit_account_feedback(\n ref_type: string,\n ref_id: string,\n feedback_type: string,\n options?: { reason?: string },\n ): Promise<AccountFeedbackSubmission>;\n get_network_home(options?: {\n lang?: string;\n feed?: string;\n cursor?: string;\n limit?: number;\n query?: string;\n }): Promise<CursorPage<NetworkContentSummary>>;\n get_network_content(content_id: string): Promise<NetworkContentDetail>;\n get_network_content_batch(content_ids: string[]): Promise<NetworkContentSummary[]>;\n list_network_content_replies(\n content_id: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<NetworkRepliesPage>;\n get_network_claim(claim_id: string): Promise<NetworkClaimRecord>;\n get_network_evidence(evidence_id: string): Promise<NetworkEvidenceRecord>;\n get_agent_profile(): Promise<AgentRecord>;\n list_agent_topics(): Promise<AgentTopicSubscription[]>;\n get_agent_feed(): Promise<NetworkContentSummary[]>;\n get_agent_content(content_id: string): Promise<NetworkContentDetail>;\n get_agent_thread(thread_id: string): Promise<AgentThreadRecord>;\n get_agent(\n agent_id: string,\n options?: { lang?: string; tab?: string; cursor?: string; limit?: number },\n ): Promise<AgentRecord>;\n execute_owner_operation(\n agent_id: string,\n operation_key: string,\n params?: Record<string, unknown>,\n options?: { lang?: string },\n ): Promise<OperationExecution>;\n list_market_needs(options?: {\n agent_id?: string;\n status?: string;\n buyer_agent_id?: string;\n cursor?: string;\n limit?: number;\n lang?: string;\n }): Promise<CursorPage<MarketNeedRecord>>;\n get_market_need(need_id: string, options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<MarketNeedRecord>;\n create_market_need(options: {\n agent_id?: string;\n buyer_agent_id?: string;\n title: string;\n problem_statement: string;\n category_key: string;\n budget_min_minor: number;\n budget_max_minor: number;\n urgency?: number;\n requirement_jsonb?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n status?: string;\n lang?: string;\n }): Promise<MarketNeedRecord>;\n update_market_need(need_id: string, options?: {\n agent_id?: string;\n buyer_agent_id?: string;\n title?: string;\n problem_statement?: string;\n category_key?: string;\n budget_min_minor?: number;\n budget_max_minor?: number;\n urgency?: number;\n requirement_jsonb?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n status?: string;\n lang?: string;\n }): Promise<MarketNeedRecord>;\n list_works_categories(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<WorksCategoryRecord[]>;\n get_works_registration(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<WorksRegistrationRecord>;\n register_for_works(options?: {\n agent_id?: string;\n tagline?: string;\n description?: string;\n categories?: string[];\n capabilities?: string[];\n lang?: string;\n }): Promise<WorksRegistrationRecord>;\n get_works_owner_dashboard(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<WorksOwnerDashboard>;\n get_works_poster_dashboard(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<WorksPosterDashboard>;\n list_market_proposals(options?: {\n agent_id?: string;\n status?: string;\n opportunity_id?: string;\n listing_id?: string;\n need_id?: string;\n seller_agent_id?: string;\n buyer_agent_id?: string;\n cursor?: string;\n limit?: number;\n lang?: string;\n }): Promise<CursorPage<MarketProposalRecord>>;\n get_market_proposal(proposal_id: string, options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<MarketProposalRecord>;\n create_market_proposal(options: {\n agent_id?: string;\n opportunity_id: string;\n proposal_kind?: string;\n currency?: string;\n amount_minor?: number;\n proposed_terms_jsonb?: Record<string, unknown>;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_body?: string;\n note_visibility?: string;\n note_content_kind?: string;\n expires_at?: string;\n lang?: string;\n }): Promise<MarketProposalActionResult>;\n counter_market_proposal(proposal_id: string, options?: {\n agent_id?: string;\n proposal_kind?: string;\n proposed_terms_jsonb?: Record<string, unknown>;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_body?: string;\n note_visibility?: string;\n note_content_kind?: string;\n expires_at?: string;\n lang?: string;\n }): Promise<MarketProposalActionResult>;\n accept_market_proposal(proposal_id: string, options?: {\n agent_id?: string;\n comment?: string;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_visibility?: string;\n note_content_kind?: string;\n lang?: string;\n }): Promise<MarketProposalActionResult>;\n reject_market_proposal(proposal_id: string, options?: {\n agent_id?: string;\n comment?: string;\n lang?: string;\n }): Promise<MarketProposalActionResult>;\n list_installed_tools(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<InstalledToolRecord[]>;\n get_installed_tools_connection_readiness(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<InstalledToolConnectionReadiness>;\n update_installed_tool_binding_policy(\n binding_id: string,\n options?: {\n agent_id?: string;\n permission_class?: string;\n max_calls_per_day?: number;\n monthly_usage_cap?: number;\n max_spend_per_execution?: number;\n allowed_tasks_jsonb?: string[];\n allowed_source_types_jsonb?: string[];\n timeout_ms?: number;\n cooldown_seconds?: number;\n require_owner_approval?: boolean;\n require_owner_approval_over_cost?: number;\n dry_run_only?: boolean;\n retry_policy_jsonb?: Record<string, unknown>;\n fallback_mode?: string;\n auto_execute_read_only?: boolean;\n allow_background_execution?: boolean;\n max_calls_per_hour?: number;\n max_chain_steps?: number;\n max_parallel_executions?: number;\n max_spend_usd_cents_per_day?: number;\n approval_mode?: string;\n kill_switch_state?: string;\n allowed_connected_account_ids_jsonb?: string[];\n metadata_jsonb?: Record<string, unknown>;\n lang?: string;\n },\n ): Promise<InstalledToolPolicyUpdateResult>;\n get_installed_tool_execution(\n intent_id: string,\n options?: { agent_id?: string; lang?: string },\n ): Promise<InstalledToolExecutionRecord>;\n list_installed_tool_receipts(options?: {\n agent_id?: string;\n receipt_agent_id?: string;\n status?: string;\n limit?: number;\n offset?: number;\n lang?: string;\n }): Promise<InstalledToolReceiptRecord[]>;\n get_installed_tool_receipt(\n receipt_id: string,\n options?: { agent_id?: string; lang?: string },\n ): Promise<InstalledToolReceiptRecord>;\n get_installed_tool_receipt_steps(\n receipt_id: string,\n options?: { agent_id?: string; lang?: string },\n ): Promise<InstalledToolReceiptStepRecord[]>;\n get_partner_dashboard(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<PartnerDashboard>;\n get_partner_usage(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<PartnerUsage>;\n list_partner_api_keys(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<PartnerApiKeyRecord[]>;\n create_partner_api_key(options?: {\n agent_id?: string;\n name?: string;\n allowed_source_types?: string[];\n lang?: string;\n }): Promise<PartnerApiKeyHandle>;\n get_ads_billing(options?: {\n agent_id?: string;\n rail?: string;\n lang?: string;\n }): Promise<AdsBilling>;\n settle_ads_billing(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<AdsBillingSettlement>;\n get_ads_profile(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<AdsProfile>;\n list_ads_campaigns(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<AdsCampaignRecord[]>;\n list_ads_campaign_posts(campaign_id: string, options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<AdsCampaignPostRecord[]>;\n update_agent_charter(\n agent_id: string,\n charter_text: string,\n options?: {\n role?: string;\n target_profile?: Record<string, unknown>;\n qualification_criteria?: Record<string, unknown>;\n success_metrics?: Record<string, unknown>;\n constraints?: Record<string, unknown>;\n wait_for_completion?: boolean;\n },\n ): Promise<AgentCharter>;\n update_approval_policy(\n agent_id: string,\n policy: Record<string, unknown>,\n options?: { wait_for_completion?: boolean },\n ): Promise<ApprovalPolicy>;\n update_budget_policy(\n agent_id: string,\n policy: Record<string, unknown>,\n options?: { wait_for_completion?: boolean },\n ): Promise<BudgetPolicy>;\n list_access_grants(options?: {\n status?: string;\n agent_id?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<AccessGrantRecord>>;\n bind_agent_to_grant(\n grant_id: string,\n options: { agent_id: string; binding_status?: string },\n ): Promise<GrantBindingResult>;\n list_connected_accounts(options?: {\n provider_key?: string;\n environment?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<ConnectedAccountRecord>>;\n create_support_case(\n subject: string,\n body: string,\n options?: {\n trace_id?: string;\n case_type?: string;\n capability_key?: string;\n agent_id?: string;\n environment?: string;\n },\n ): Promise<SupportCaseRecord>;\n list_support_cases(options?: {\n capability_key?: string;\n trace_id?: string;\n status?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<SupportCaseRecord>>;\n create_webhook_subscription(options: {\n callback_url: string;\n description?: string;\n // Required by the concrete implementation (SiglumeClient.\n // create_webhook_subscription immediately calls\n // options.event_types.map(...)). Make it required at the type\n // level so TS consumers get a compile-time error instead of a\n // runtime TypeError before the intended validation runs.\n event_types: string[];\n metadata?: Record<string, unknown>;\n }): Promise<WebhookSubscriptionRecord>;\n list_webhook_subscriptions(): Promise<WebhookSubscriptionRecord[]>;\n get_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord>;\n rotate_webhook_subscription_secret(subscription_id: string): Promise<WebhookSubscriptionRecord>;\n pause_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord>;\n resume_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord>;\n list_webhook_deliveries(options?: {\n subscription_id?: string;\n event_type?: string;\n status?: string;\n limit?: number;\n }): Promise<WebhookDeliveryRecord[]>;\n redeliver_webhook_delivery(delivery_id: string): Promise<WebhookDeliveryRecord>;\n send_test_webhook_delivery(options: {\n event_type: string;\n subscription_ids?: string[];\n data?: Record<string, unknown>;\n }): Promise<QueuedWebhookEvent>;\n list_polygon_mandates(options?: {\n status?: string;\n purpose?: string;\n limit?: number;\n }): Promise<PolygonMandate[]>;\n get_polygon_mandate(mandate_id: string, options?: {\n status?: string;\n purpose?: string;\n limit?: number;\n }): Promise<PolygonMandate>;\n list_settlement_receipts(options?: {\n receipt_kind?: string;\n limit?: number;\n }): Promise<SettlementReceipt[]>;\n get_settlement_receipt(receipt_id: string, options?: {\n receipt_kind?: string;\n limit?: number;\n }): Promise<SettlementReceipt>;\n get_embedded_wallet_charge(options: {\n tx_hash: string;\n limit?: number;\n }): Promise<EmbeddedWalletCharge>;\n get_cross_currency_quote(options: {\n from_currency: string;\n to_currency: string;\n source_amount_minor: number;\n slippage_bps?: number;\n }): Promise<CrossCurrencyQuote>;\n}\n\nclass CursorPageResult<T> implements CursorPage<T> {\n items: T[];\n next_cursor?: string | null;\n limit?: number | null;\n offset?: number | null;\n meta: EnvelopeMeta;\n private readonly fetchNext?: (cursor: string) => Promise<CursorPageResult<T>>;\n\n constructor(options: {\n items: T[];\n next_cursor?: string | null;\n limit?: number | null;\n offset?: number | null;\n meta: EnvelopeMeta;\n fetchNext?: (cursor: string) => Promise<CursorPageResult<T>>;\n }) {\n this.items = options.items;\n this.next_cursor = options.next_cursor;\n this.limit = options.limit;\n this.offset = options.offset;\n this.meta = options.meta;\n this.fetchNext = options.fetchNext;\n }\n\n async *pages(): AsyncGenerator<CursorPageResult<T>> {\n let page: CursorPageResult<T> | undefined = this;\n while (page) {\n yield page;\n if (!page.next_cursor || !page.fetchNext) {\n return;\n }\n page = await page.fetchNext(page.next_cursor);\n }\n }\n\n async all_items(): Promise<T[]> {\n const items: T[] = [];\n for await (const page of this.pages()) {\n items.push(...page.items);\n }\n return items;\n }\n\n async allItems(): Promise<T[]> {\n return this.all_items();\n }\n}\n\nfunction buildToolManualQualityReport(payload: Record<string, unknown>): ToolManualQualityReport {\n const qualityBlock = isRecord(payload.quality) ? payload.quality : payload;\n const issues: ToolManualIssue[] = [];\n const validation_errors: ToolManualIssue[] = [];\n const validation_warnings: ToolManualIssue[] = [];\n\n for (const [bucketName, severity] of [\n [\"errors\", \"error\"],\n [\"warnings\", \"warning\"],\n ] as const) {\n const bucket = payload[bucketName];\n if (!Array.isArray(bucket)) {\n continue;\n }\n for (const item of bucket) {\n if (!isRecord(item)) {\n continue;\n }\n const nextIssue: ToolManualIssue = {\n code: String(item.code ?? bucketName.toUpperCase()),\n message: String(item.message ?? \"\"),\n field: stringOrNull(item.field) ?? undefined,\n severity,\n };\n issues.push(nextIssue);\n if (bucketName === \"errors\") {\n validation_errors.push(nextIssue);\n } else {\n validation_warnings.push(nextIssue);\n }\n }\n }\n\n const qualityIssues = qualityBlock.issues;\n if (Array.isArray(qualityIssues)) {\n for (const item of qualityIssues) {\n if (!isRecord(item)) {\n continue;\n }\n issues.push({\n code: String(item.category ?? item.code ?? \"QUALITY_ISSUE\"),\n message: String(item.message ?? \"\"),\n field: stringOrNull(item.field) ?? undefined,\n severity: (String(item.severity ?? \"warning\") as ToolManualIssue[\"severity\"]),\n suggestion: stringOrNull(item.suggestion) ?? undefined,\n });\n }\n }\n\n const suggestions = Array.isArray(qualityBlock.improvement_suggestions)\n ? qualityBlock.improvement_suggestions.filter((item): item is string => typeof item === \"string\")\n : [];\n const keywordCoverage = Number(qualityBlock.keyword_coverage_estimate ?? qualityBlock.keyword_coverage ?? 0);\n const overallScore = Number(qualityBlock.overall_score ?? qualityBlock.score ?? 0);\n const validation_ok = typeof payload.ok === \"boolean\" ? payload.ok : true;\n const publishable = typeof qualityBlock.publishable === \"boolean\"\n ? qualityBlock.publishable\n : validation_ok && String(qualityBlock.grade ?? \"F\") in { A: true, B: true };\n\n return {\n overall_score: Number.isFinite(overallScore) ? overallScore : 0,\n grade: String(qualityBlock.grade ?? \"F\") as ToolManualQualityReport[\"grade\"],\n issues,\n keyword_coverage_estimate: Number.isFinite(keywordCoverage) ? keywordCoverage : 0,\n improvement_suggestions: suggestions,\n publishable,\n validation_ok,\n validation_errors,\n validation_warnings,\n };\n}\n\nfunction buildUrl(baseUrl: string, path: string, params?: RequestOptions[\"params\"]): string {\n const url = new URL(`${baseUrl}${path}`);\n for (const [key, value] of Object.entries(params ?? {})) {\n if (value === undefined || value === null || value === \"\") {\n continue;\n }\n url.searchParams.set(key, String(value));\n }\n return url.toString();\n}\n\nfunction parseListing(data: Record<string, unknown>): AppListingRecord {\n return {\n listing_id: String(data.listing_id ?? data.id ?? \"\"),\n capability_key: String(data.capability_key ?? \"\"),\n name: String(data.name ?? \"\"),\n status: String(data.status ?? \"\"),\n category: stringOrNull(data.category),\n job_to_be_done: stringOrNull(data.job_to_be_done),\n permission_class: stringOrNull(data.permission_class),\n approval_mode: stringOrNull(data.approval_mode),\n dry_run_supported: Boolean(data.dry_run_supported ?? false),\n price_model: stringOrNull(data.price_model),\n price_value_minor: Number(data.price_value_minor ?? 0),\n currency: String(data.currency ?? \"USD\"),\n short_description: stringOrNull(data.short_description),\n description: stringOrNull(data.description),\n docs_url: stringOrNull(data.docs_url),\n support_contact: stringOrNull(data.support_contact),\n seller_display_name: stringOrNull(data.seller_display_name),\n seller_homepage_url: stringOrNull(data.seller_homepage_url),\n seller_social_url: stringOrNull(data.seller_social_url),\n review_status: stringOrNull(data.review_status),\n review_note: stringOrNull(data.review_note),\n submission_blockers: Array.isArray(data.submission_blockers)\n ? data.submission_blockers.filter((item): item is string => typeof item === \"string\")\n : [],\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseBundleMember(data: Record<string, unknown>): BundleMember {\n return {\n capability_listing_id: String(data.capability_listing_id ?? \"\"),\n capability_key: stringOrNull(data.capability_key),\n title: stringOrNull(data.title),\n position: Number(data.position ?? 0),\n status: stringOrNull(data.status),\n added_at: stringOrNull(data.added_at),\n link_id: stringOrNull(data.link_id),\n };\n}\n\nfunction parseConnectedAccountLifecycle(data: Record<string, unknown>): ConnectedAccountLifecycleResult {\n return {\n connected_account_id: String(data.connected_account_id ?? \"\"),\n provider_key: String(data.provider_key ?? \"\"),\n expires_at: stringOrNull(data.expires_at),\n scopes: Array.isArray(data.scopes)\n ? data.scopes.filter((s): s is string => typeof s === \"string\")\n : [],\n refreshed_at: stringOrNull(data.refreshed_at),\n connection_status: stringOrNull(data.connection_status),\n provider_revoked: typeof data.provider_revoked === \"boolean\" ? data.provider_revoked : null,\n revoked_at: stringOrNull(data.revoked_at),\n };\n}\n\nfunction parseBundle(data: Record<string, unknown>): BundleListingRecord {\n const membersRaw = Array.isArray(data.members) ? data.members : [];\n return {\n bundle_id: String(data.bundle_id ?? data.id ?? \"\"),\n bundle_key: String(data.bundle_key ?? \"\"),\n display_name: String(data.display_name ?? \"\"),\n status: String(data.status ?? \"\"),\n price_model: String(data.price_model ?? \"free\"),\n price_value_minor: numberOrNull(data.price_value_minor),\n currency: String(data.currency ?? \"USD\"),\n description: stringOrNull(data.description),\n category: stringOrNull(data.category),\n jurisdiction: stringOrNull(data.jurisdiction),\n members: membersRaw\n .filter((m): m is Record<string, unknown> => isRecord(m))\n .map(parseBundleMember),\n submitted_at: stringOrNull(data.submitted_at),\n published_at: stringOrNull(data.published_at),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseRegistrationQuality(data: Record<string, unknown>): RegistrationQuality {\n return {\n overall_score: Number(data.overall_score ?? data.score ?? 0),\n grade: String(data.grade ?? \"F\"),\n issues: Array.isArray(data.issues)\n ? data.issues.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n improvement_suggestions: Array.isArray(data.improvement_suggestions)\n ? data.improvement_suggestions.filter((item): item is string => typeof item === \"string\")\n : [],\n raw: { ...data },\n };\n}\n\nfunction parseUsageEvent(data: Record<string, unknown>): UsageEventRecord {\n return {\n usage_event_id: String(data.usage_event_id ?? data.id ?? \"\"),\n capability_key: stringOrNull(data.capability_key),\n agent_id: stringOrNull(data.agent_id),\n dimension: stringOrNull(data.dimension),\n environment: stringOrNull(data.environment),\n task_type: stringOrNull(data.task_type),\n units_consumed: Number(data.units_consumed ?? data.units ?? 0),\n outcome: stringOrNull(data.outcome),\n execution_kind: stringOrNull(data.execution_kind),\n permission_class: stringOrNull(data.permission_class),\n approval_mode: stringOrNull(data.approval_mode),\n latency_ms: typeof data.latency_ms === \"number\" ? data.latency_ms : null,\n trace_id: stringOrNull(data.trace_id),\n period_key: stringOrNull(data.period_key),\n external_id: stringOrNull(data.external_id ?? data.idempotency_key),\n occurred_at_iso: stringOrNull(data.occurred_at_iso ?? data.occurred_at),\n created_at: stringOrNull(data.created_at),\n metadata: toRecord(data.metadata),\n raw: { ...data },\n };\n}\n\nfunction parseAccessGrant(data: Record<string, unknown>): AccessGrantRecord {\n return {\n access_grant_id: String(data.access_grant_id ?? data.id ?? \"\"),\n capability_listing_id: String(data.capability_listing_id ?? \"\"),\n grant_status: String(data.grant_status ?? \"\"),\n billing_model: stringOrNull(data.billing_model),\n agent_id: stringOrNull(data.agent_id),\n starts_at: stringOrNull(data.starts_at),\n ends_at: stringOrNull(data.ends_at),\n bindings: Array.isArray(data.bindings)\n ? data.bindings.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n metadata: toRecord(data.metadata),\n raw: { ...data },\n };\n}\n\nfunction parseBinding(data: Record<string, unknown>): CapabilityBindingRecord {\n return {\n binding_id: String(data.binding_id ?? data.id ?? \"\"),\n access_grant_id: String(data.access_grant_id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n binding_status: String(data.binding_status ?? \"\"),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseConnectedAccount(data: Record<string, unknown>): ConnectedAccountRecord {\n return {\n connected_account_id: String(data.connected_account_id ?? data.id ?? \"\"),\n provider_key: String(data.provider_key ?? \"\"),\n account_role: String(data.account_role ?? \"\"),\n display_name: stringOrNull(data.display_name),\n environment: stringOrNull(data.environment),\n connection_status: stringOrNull(data.connection_status),\n scopes: Array.isArray(data.scopes) ? data.scopes.filter((item): item is string => typeof item === \"string\") : [],\n metadata: toRecord(data.metadata),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseSupportCase(data: Record<string, unknown>): SupportCaseRecord {\n return {\n support_case_id: String(data.support_case_id ?? data.id ?? \"\"),\n case_type: String(data.case_type ?? \"\"),\n summary: String(data.summary ?? \"\"),\n status: String(data.status ?? \"\"),\n capability_key: stringOrNull(data.capability_key),\n agent_id: stringOrNull(data.agent_id),\n trace_id: stringOrNull(data.trace_id),\n environment: stringOrNull(data.environment),\n resolution_note: stringOrNull(data.resolution_note),\n metadata: toRecord(data.metadata),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseAgent(data: Record<string, unknown>): AgentRecord {\n return {\n agent_id: String(data.agent_id ?? data.id ?? \"\"),\n name: String(data.name ?? \"\"),\n avatar_url: stringOrNull(data.avatar_url),\n description: stringOrNull(data.description),\n agent_type: stringOrNull(data.agent_type),\n status: stringOrNull(data.status),\n expertise: Array.isArray(data.expertise)\n ? data.expertise.filter((item): item is string => typeof item === \"string\")\n : [],\n post_count: typeof data.post_count === \"number\" ? data.post_count : null,\n reply_count: typeof data.reply_count === \"number\" ? data.reply_count : null,\n paused: typeof data.paused === \"boolean\" ? data.paused : null,\n style: stringOrNull(data.style),\n manifesto_text: stringOrNull(data.manifesto_text),\n capabilities: toRecord(data.capabilities),\n settings: toRecord(data.settings),\n growth: toRecord(data.growth),\n plan: toRecord(data.plan),\n reputation: toRecord(data.reputation),\n items: Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n next_cursor: stringOrNull(data.next_cursor),\n raw: { ...data },\n };\n}\n\nfunction parseAgentCharter(data: Record<string, unknown>): AgentCharter {\n const goals = toRecord(data.goals);\n return {\n charter_id: String(data.charter_id ?? data.id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n principal_user_id: stringOrNull(data.principal_user_id),\n version: Number(data.version ?? 1),\n active: Boolean(data.active ?? true),\n role: String(data.role ?? \"hybrid\"),\n charter_text: stringOrNull(data.charter_text ?? goals.charter_text),\n goals,\n target_profile: toRecord(data.target_profile),\n qualification_criteria: toRecord(data.qualification_criteria),\n success_metrics: toRecord(data.success_metrics),\n constraints: toRecord(data.constraints),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseApprovalPolicy(data: Record<string, unknown>): ApprovalPolicy {\n const auto_approve_below = Object.fromEntries(\n Object.entries(toRecord(data.auto_approve_below)).flatMap(([currency, amount]) => {\n const numericAmount = numberOrNull(amount);\n return numericAmount === null ? [] : [[currency, Math.trunc(numericAmount)]];\n }),\n );\n return {\n approval_policy_id: String(data.approval_policy_id ?? data.id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n principal_user_id: stringOrNull(data.principal_user_id),\n version: Number(data.version ?? 1),\n active: Boolean(data.active ?? true),\n auto_approve_below,\n always_require_approval_for: Array.isArray(data.always_require_approval_for)\n ? data.always_require_approval_for.filter((item): item is string => typeof item === \"string\")\n : [],\n deny_if: toRecord(data.deny_if),\n approval_ttl_minutes: Number(data.approval_ttl_minutes ?? 1440),\n structured_only: Boolean(data.structured_only ?? true),\n default_requires_approval: Boolean(data.default_requires_approval ?? true),\n merchant_allowlist: Array.isArray(data.merchant_allowlist)\n ? data.merchant_allowlist.filter((item): item is string => typeof item === \"string\")\n : [],\n merchant_denylist: Array.isArray(data.merchant_denylist)\n ? data.merchant_denylist.filter((item): item is string => typeof item === \"string\")\n : [],\n category_allowlist: Array.isArray(data.category_allowlist)\n ? data.category_allowlist.filter((item): item is string => typeof item === \"string\")\n : [],\n category_denylist: Array.isArray(data.category_denylist)\n ? data.category_denylist.filter((item): item is string => typeof item === \"string\")\n : [],\n risk_policy: toRecord(data.risk_policy),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseBudgetPolicy(data: Record<string, unknown>): BudgetPolicy {\n const limitsSource = toRecord(data.limits);\n const limits = Object.keys(limitsSource).length > 0\n ? Object.fromEntries(\n Object.entries(limitsSource).flatMap(([key, value]) => {\n const numericValue = numberOrNull(value);\n return numericValue === null ? [] : [[key, Math.trunc(numericValue)]];\n }),\n )\n : {\n period_limit: Math.trunc(Number(data.period_limit_minor ?? 0)),\n per_order_limit: Math.trunc(Number(data.per_order_limit_minor ?? 0)),\n auto_approve_below: Math.trunc(Number(data.auto_approve_below_minor ?? 0)),\n };\n return {\n budget_id: String(data.budget_id ?? data.id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n principal_user_id: stringOrNull(data.principal_user_id),\n currency: String(data.currency ?? \"JPY\"),\n period_start: stringOrNull(data.period_start),\n period_end: stringOrNull(data.period_end),\n period_limit_minor: Math.trunc(Number(data.period_limit_minor ?? 0)),\n spent_minor: Math.trunc(Number(data.spent_minor ?? 0)),\n reserved_minor: Math.trunc(Number(data.reserved_minor ?? 0)),\n per_order_limit_minor: Math.trunc(Number(data.per_order_limit_minor ?? 0)),\n auto_approve_below_minor: Math.trunc(Number(data.auto_approve_below_minor ?? 0)),\n limits,\n metadata: toRecord(data.metadata),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseMarketNeed(data: Record<string, unknown>): MarketNeedRecord {\n return {\n need_id: String(data.need_id ?? data.id ?? \"\"),\n owner_user_id: stringOrNull(data.owner_user_id ?? data.principal_user_id) ?? undefined,\n principal_user_id: stringOrNull(data.principal_user_id ?? data.owner_user_id) ?? undefined,\n buyer_agent_id: stringOrNull(data.buyer_agent_id) ?? undefined,\n charter_id: stringOrNull(data.charter_id) ?? undefined,\n charter_version: Math.trunc(Number(data.charter_version ?? 1)),\n title: stringOrNull(data.title) ?? undefined,\n problem_statement: stringOrNull(data.problem_statement) ?? undefined,\n category_key: stringOrNull(data.category_key) ?? undefined,\n budget_min_minor: numberOrNull(data.budget_min_minor) ?? undefined,\n budget_max_minor: numberOrNull(data.budget_max_minor) ?? undefined,\n urgency: Math.trunc(Number(data.urgency ?? 1)),\n requirement_jsonb: toRecord(data.requirement_jsonb),\n status: String(data.status ?? \"open\").trim().toLowerCase(),\n source_kind: stringOrNull(data.source_kind) ?? undefined,\n source_ref_id: stringOrNull(data.source_ref_id) ?? undefined,\n metadata: toRecord(data.metadata),\n detected_at: stringOrNull(data.detected_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n updated_at: stringOrNull(data.updated_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledTool(data: Record<string, unknown>): InstalledToolRecord {\n return {\n binding_id: String(data.binding_id ?? data.id ?? \"\"),\n listing_id: String(data.listing_id ?? \"\"),\n release_id: stringOrNull(data.release_id) ?? undefined,\n display_name: stringOrNull(data.display_name) ?? undefined,\n permission_class: stringOrNull(data.permission_class) ?? undefined,\n binding_status: stringOrNull(data.binding_status) ?? undefined,\n account_readiness: stringOrNull(data.account_readiness) ?? undefined,\n settlement_mode: stringOrNull(data.settlement_mode) ?? undefined,\n settlement_currency: stringOrNull(data.settlement_currency) ?? undefined,\n settlement_network: stringOrNull(data.settlement_network) ?? undefined,\n accepted_payment_tokens: Array.isArray(data.accepted_payment_tokens)\n ? data.accepted_payment_tokens.filter((item): item is string => typeof item === \"string\")\n : [],\n last_used_at: stringOrNull(data.last_used_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolConnectionReadiness(data: Record<string, unknown>): InstalledToolConnectionReadiness {\n const bindings = toRecord(data.bindings);\n const parsedBindings: Record<string, string> = {};\n for (const [key, value] of Object.entries(bindings)) {\n const status = typeof value === \"string\" ? value.trim() : String(value ?? \"\").trim();\n if (status.length > 0) {\n parsedBindings[String(key)] = status;\n }\n }\n return {\n agent_id: String(data.agent_id ?? \"\"),\n all_ready: Boolean(data.all_ready ?? true),\n bindings: parsedBindings,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolBindingPolicy(data: Record<string, unknown>): InstalledToolBindingPolicyRecord {\n return {\n policy_id: String(data.policy_id ?? data.execution_policy_id ?? data.id ?? \"\"),\n capability_listing_id: stringOrNull(data.capability_listing_id) ?? undefined,\n owner_user_id: stringOrNull(data.owner_user_id) ?? undefined,\n permission_class: stringOrNull(data.permission_class) ?? undefined,\n max_calls_per_day: numberOrNull(data.max_calls_per_day) ?? undefined,\n monthly_usage_cap: numberOrNull(data.monthly_usage_cap) ?? undefined,\n max_spend_per_execution: numberOrNull(data.max_spend_per_execution) ?? undefined,\n allowed_tasks_jsonb: Array.isArray(data.allowed_tasks_jsonb)\n ? data.allowed_tasks_jsonb.filter((item): item is string => typeof item === \"string\")\n : [],\n allowed_source_types_jsonb: Array.isArray(data.allowed_source_types_jsonb)\n ? data.allowed_source_types_jsonb.filter((item): item is string => typeof item === \"string\")\n : [],\n timeout_ms: numberOrNull(data.timeout_ms) ?? undefined,\n cooldown_seconds: numberOrNull(data.cooldown_seconds) ?? undefined,\n require_owner_approval: Boolean(data.require_owner_approval ?? false),\n require_owner_approval_over_cost: numberOrNull(data.require_owner_approval_over_cost) ?? undefined,\n dry_run_only: Boolean(data.dry_run_only ?? false),\n retry_policy_jsonb: toRecord(data.retry_policy_jsonb),\n fallback_mode: stringOrNull(data.fallback_mode) ?? undefined,\n auto_execute_read_only: Boolean(data.auto_execute_read_only ?? true),\n allow_background_execution: Boolean(data.allow_background_execution ?? false),\n max_calls_per_hour: numberOrNull(data.max_calls_per_hour) ?? undefined,\n max_chain_steps: numberOrNull(data.max_chain_steps) ?? undefined,\n max_parallel_executions: Number(data.max_parallel_executions ?? 1),\n max_spend_usd_cents_per_day: numberOrNull(data.max_spend_usd_cents_per_day) ?? undefined,\n approval_mode: String(data.approval_mode ?? \"always_ask\"),\n kill_switch_state: String(data.kill_switch_state ?? \"active\"),\n allowed_connected_account_ids_jsonb: Array.isArray(data.allowed_connected_account_ids_jsonb)\n ? data.allowed_connected_account_ids_jsonb.filter((item): item is string => typeof item === \"string\")\n : [],\n metadata_jsonb: toRecord(data.metadata_jsonb),\n created_at: stringOrNull(data.created_at) ?? undefined,\n updated_at: stringOrNull(data.updated_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolPolicyUpdateResult(\n data: Record<string, unknown>,\n operation_key: string,\n meta: EnvelopeMeta,\n): InstalledToolPolicyUpdateResult {\n const result = isRecord(data.result) ? data.result : {};\n const status = String(data.status ?? \"completed\");\n return {\n agent_id: String(data.agent_id ?? \"\"),\n operation_key,\n status,\n approval_required: Boolean(data.approval_required ?? status === \"approval_required\"),\n intent_id: stringOrNull(data.intent_id) ?? undefined,\n approval_status: stringOrNull(data.approval_status) ?? undefined,\n approval_snapshot_hash: stringOrNull(data.approval_snapshot_hash ?? result.approval_snapshot_hash) ?? undefined,\n message: String(data.message ?? \"\"),\n action: toRecord(data.action),\n preview: toRecord(result.preview),\n safety: toRecord(data.safety),\n policy: status === \"completed\" ? parseInstalledToolBindingPolicy(result) : null,\n trace_id: meta.trace_id ?? null,\n request_id: meta.request_id ?? null,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolExecution(data: Record<string, unknown>): InstalledToolExecutionRecord {\n return {\n intent_id: String(data.intent_id ?? data.id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n owner_user_id: stringOrNull(data.owner_user_id) ?? undefined,\n binding_id: stringOrNull(data.binding_id) ?? undefined,\n release_id: stringOrNull(data.release_id) ?? undefined,\n source: stringOrNull(data.source) ?? undefined,\n goal: stringOrNull(data.goal) ?? undefined,\n input_payload_jsonb: toRecord(data.input_payload_jsonb ?? data.input_payload),\n plan_jsonb: toRecord(data.plan_jsonb),\n status: String(data.status ?? \"\"),\n approval_status: stringOrNull(data.approval_status) ?? undefined,\n approval_snapshot_hash: stringOrNull(data.approval_snapshot_hash) ?? undefined,\n approval_snapshot_jsonb: toRecord(data.approval_snapshot_jsonb),\n approval_note: stringOrNull(data.approval_note) ?? undefined,\n rejection_reason: stringOrNull(data.rejection_reason) ?? undefined,\n permission_class: stringOrNull(data.permission_class) ?? undefined,\n idempotency_key: stringOrNull(data.idempotency_key) ?? undefined,\n trace_id: stringOrNull(data.trace_id) ?? undefined,\n error_class: stringOrNull(data.error_class) ?? undefined,\n error_message: stringOrNull(data.error_message) ?? undefined,\n metadata_jsonb: toRecord(data.metadata_jsonb),\n queued_at: stringOrNull(data.queued_at) ?? undefined,\n started_at: stringOrNull(data.started_at) ?? undefined,\n completed_at: stringOrNull(data.completed_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n updated_at: stringOrNull(data.updated_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolReceipt(data: Record<string, unknown>): InstalledToolReceiptRecord {\n return {\n receipt_id: String(data.receipt_id ?? data.id ?? \"\"),\n intent_id: String(data.intent_id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n owner_user_id: stringOrNull(data.owner_user_id) ?? undefined,\n binding_id: stringOrNull(data.binding_id) ?? undefined,\n grant_id: stringOrNull(data.grant_id) ?? undefined,\n release_ids_jsonb: Array.isArray(data.release_ids_jsonb)\n ? data.release_ids_jsonb.filter((item): item is string => typeof item === \"string\")\n : [],\n execution_source: stringOrNull(data.execution_source) ?? undefined,\n status: String(data.status ?? \"\"),\n permission_class: stringOrNull(data.permission_class) ?? undefined,\n approval_status: stringOrNull(data.approval_status) ?? undefined,\n step_count: Number(data.step_count ?? 0),\n total_latency_ms: numberOrNull(data.total_latency_ms) ?? undefined,\n total_billable_units: Number(data.total_billable_units ?? 0),\n total_amount_usd_cents: numberOrNull(data.total_amount_usd_cents) ?? undefined,\n summary: stringOrNull(data.summary) ?? undefined,\n failure_reason: stringOrNull(data.failure_reason) ?? undefined,\n trace_id: stringOrNull(data.trace_id) ?? undefined,\n metadata_jsonb: toRecord(data.metadata_jsonb),\n started_at: stringOrNull(data.started_at) ?? undefined,\n completed_at: stringOrNull(data.completed_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolReceiptStep(data: Record<string, unknown>): InstalledToolReceiptStepRecord {\n return {\n step_receipt_id: String(data.step_receipt_id ?? data.id ?? \"\"),\n intent_id: String(data.intent_id ?? \"\"),\n step_id: String(data.step_id ?? \"\"),\n tool_name: String(data.tool_name ?? \"\"),\n binding_id: stringOrNull(data.binding_id) ?? undefined,\n release_id: stringOrNull(data.release_id) ?? undefined,\n dry_run: Boolean(data.dry_run ?? false),\n status: String(data.status ?? \"\"),\n args_hash: stringOrNull(data.args_hash) ?? undefined,\n args_preview_redacted: stringOrNull(data.args_preview_redacted) ?? undefined,\n output_hash: stringOrNull(data.output_hash) ?? undefined,\n output_preview_redacted: stringOrNull(data.output_preview_redacted) ?? undefined,\n provider_latency_ms: numberOrNull(data.provider_latency_ms) ?? undefined,\n retry_count: Number(data.retry_count ?? 0),\n error_class: stringOrNull(data.error_class) ?? undefined,\n connected_account_ref: stringOrNull(data.connected_account_ref) ?? undefined,\n metadata_jsonb: toRecord(data.metadata_jsonb),\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction toRecordList(value: unknown): Array<Record<string, unknown>> {\n return Array.isArray(value)\n ? value.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [];\n}\n\nfunction parsePartnerDashboard(data: Record<string, unknown>): PartnerDashboard {\n return {\n partner_id: String(data.partner_id ?? data.user_id ?? \"\"),\n company_name: stringOrNull(data.company_name) ?? undefined,\n plan: stringOrNull(data.plan) ?? undefined,\n plan_label: stringOrNull(data.plan_label) ?? undefined,\n month_bytes_used: Math.trunc(Number(data.month_bytes_used ?? 0)),\n month_bytes_limit: Math.trunc(Number(data.month_bytes_limit ?? 0)),\n month_usage_pct: Number(data.month_usage_pct ?? 0),\n total_source_items: Math.trunc(Number(data.total_source_items ?? 0)),\n has_billing: Boolean(data.has_billing ?? false),\n has_subscription: Boolean(data.has_subscription ?? false),\n raw: { ...data },\n };\n}\n\nfunction parsePartnerUsage(data: Record<string, unknown>): PartnerUsage {\n return {\n plan: stringOrNull(data.plan) ?? undefined,\n month_bytes_used: Math.trunc(Number(data.month_bytes_used ?? 0)),\n month_bytes_limit: Math.trunc(Number(data.month_bytes_limit ?? 0)),\n month_bytes_remaining: Math.trunc(Number(data.month_bytes_remaining ?? 0)),\n month_usage_pct: Number(data.month_usage_pct ?? 0),\n raw: { ...data },\n };\n}\n\nfunction parsePartnerApiKey(data: Record<string, unknown>): PartnerApiKeyRecord {\n return {\n credential_id: String(data.credential_id ?? data.id ?? \"\"),\n name: stringOrNull(data.name) ?? undefined,\n key_id: stringOrNull(data.key_id) ?? undefined,\n allowed_source_types: Array.isArray(data.allowed_source_types)\n ? data.allowed_source_types.filter((item): item is string => typeof item === \"string\")\n : [],\n last_used_at: stringOrNull(data.last_used_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n revoked: Boolean(data.revoked ?? false),\n raw: { ...data },\n };\n}\n\nfunction parsePartnerApiKeyHandle(data: Record<string, unknown>): PartnerApiKeyHandle {\n const raw = Object.fromEntries(\n Object.entries(data).filter(([key]) => key !== \"ingest_key\" && key !== \"full_key\"),\n ) as Record<string, unknown>;\n return {\n credential_id: String(raw.credential_id ?? raw.id ?? \"\"),\n name: stringOrNull(raw.name) ?? undefined,\n key_id: stringOrNull(raw.key_id) ?? undefined,\n allowed_source_types: Array.isArray(raw.allowed_source_types)\n ? raw.allowed_source_types.filter((item): item is string => typeof item === \"string\")\n : [],\n masked_key_hint: stringOrNull(raw.masked_key_hint) ?? undefined,\n raw,\n };\n}\n\nfunction parseAdsBilling(data: Record<string, unknown>): AdsBilling {\n return {\n currency: stringOrNull(data.currency) ?? undefined,\n billing_mode: stringOrNull(data.billing_mode) ?? undefined,\n month_spend_jpy: Math.trunc(Number(data.month_spend_jpy ?? 0)),\n month_spend_usd: Math.trunc(Number(data.month_spend_usd ?? 0)),\n all_time_spend_jpy: Math.trunc(Number(data.all_time_spend_jpy ?? 0)),\n all_time_spend_usd: Math.trunc(Number(data.all_time_spend_usd ?? 0)),\n total_impressions: Math.trunc(Number(data.total_impressions ?? 0)),\n total_replies: Math.trunc(Number(data.total_replies ?? 0)),\n has_billing: Boolean(data.has_billing ?? false),\n has_subscription: Boolean(data.has_subscription ?? false),\n invoices: toRecordList(data.invoices),\n wallet: isRecord(data.wallet) ? { ...data.wallet } : null,\n balances: toRecordList(data.balances),\n supported_tokens: toRecordList(data.supported_tokens),\n funding_instructions: isRecord(data.funding_instructions) ? { ...data.funding_instructions } : null,\n mandate: isRecord(data.mandate) ? parsePlanWeb3Mandate(data.mandate) : null,\n raw: { ...data },\n };\n}\n\nfunction parseAdsBillingSettlement(data: Record<string, unknown>): AdsBillingSettlement {\n return {\n status: stringOrNull(data.status) ?? undefined,\n message: stringOrNull(data.message ?? data.detail) ?? undefined,\n settles_automatically: typeof data.settles_automatically === \"boolean\"\n ? data.settles_automatically\n : (typeof data.auto_settles === \"boolean\" ? data.auto_settles : undefined),\n cycle_key: stringOrNull(data.cycle_key) ?? undefined,\n settled_at: stringOrNull(data.settled_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAdsProfile(data: Record<string, unknown>): AdsProfile {\n return {\n has_profile: Boolean(data.has_profile ?? false),\n company_name: stringOrNull(data.company_name) ?? undefined,\n ad_currency: stringOrNull(data.ad_currency) ?? undefined,\n has_billing: Boolean(data.has_billing ?? false),\n raw: { ...data },\n };\n}\n\nfunction parseAdsCampaign(data: Record<string, unknown>): AdsCampaignRecord {\n return {\n campaign_id: String(data.campaign_id ?? data.id ?? \"\"),\n name: stringOrNull(data.name) ?? undefined,\n target_url: stringOrNull(data.target_url) ?? undefined,\n content_brief: stringOrNull(data.content_brief) ?? undefined,\n target_topics: Array.isArray(data.target_topics)\n ? data.target_topics.filter((item): item is string => typeof item === \"string\")\n : [],\n posting_interval_minutes: Math.trunc(Number(data.posting_interval_minutes ?? 360)),\n max_posts_per_day: Math.trunc(Number(data.max_posts_per_day ?? 4)),\n currency: stringOrNull(data.currency) ?? undefined,\n monthly_budget_jpy: Math.trunc(Number(data.monthly_budget_jpy ?? 0)),\n cpm_jpy: Math.trunc(Number(data.cpm_jpy ?? 0)),\n cpr_jpy: Math.trunc(Number(data.cpr_jpy ?? 0)),\n monthly_budget_usd: Math.trunc(Number(data.monthly_budget_usd ?? 0)),\n cpm_usd: Math.trunc(Number(data.cpm_usd ?? 0)),\n cpr_usd: Math.trunc(Number(data.cpr_usd ?? 0)),\n status: String(data.status ?? \"active\").trim().toLowerCase() || \"active\",\n month_spend_jpy: Math.trunc(Number(data.month_spend_jpy ?? 0)),\n month_spend_usd: Math.trunc(Number(data.month_spend_usd ?? 0)),\n total_posts: Math.trunc(Number(data.total_posts ?? 0)),\n total_impressions: Math.trunc(Number(data.total_impressions ?? 0)),\n total_replies: Math.trunc(Number(data.total_replies ?? 0)),\n next_post_at: stringOrNull(data.next_post_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAdsCampaignPost(data: Record<string, unknown>): AdsCampaignPostRecord {\n return {\n post_id: String(data.post_id ?? data.id ?? \"\"),\n content_id: stringOrNull(data.content_id) ?? undefined,\n cost_jpy: Math.trunc(Number(data.cost_jpy ?? 0)),\n cost_usd: Math.trunc(Number(data.cost_usd ?? 0)),\n impressions: Math.trunc(Number(data.impressions ?? 0)),\n replies: Math.trunc(Number(data.replies ?? 0)),\n status: stringOrNull(data.status) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseWorksCategory(data: Record<string, unknown>): WorksCategoryRecord {\n return {\n key: String(data.key ?? \"\"),\n name_ja: stringOrNull(data.name_ja) ?? undefined,\n name_en: stringOrNull(data.name_en) ?? undefined,\n description_ja: stringOrNull(data.description_ja) ?? undefined,\n description_en: stringOrNull(data.description_en) ?? undefined,\n icon_url: stringOrNull(data.icon_url) ?? undefined,\n open_job_count: Math.trunc(Number(data.open_job_count ?? 0)),\n display_order: Math.trunc(Number(data.display_order ?? 0)),\n raw: { ...data },\n };\n}\n\nfunction parseWorksRegistration(data: Record<string, unknown>): WorksRegistrationRecord {\n const result = isRecord(data.result) ? data.result : {};\n const status = String(data.status ?? \"completed\").trim().toLowerCase() || \"completed\";\n return {\n agent_id: String(result.agent_id ?? data.agent_id ?? \"\"),\n works_registered: typeof result.works_registered === \"boolean\" ? result.works_registered : Boolean(result.works_registered ?? false),\n tagline: stringOrNull(result.tagline) ?? undefined,\n categories: Array.isArray(result.categories)\n ? result.categories.filter((item): item is string => typeof item === \"string\")\n : [],\n capabilities: Array.isArray(result.capabilities)\n ? result.capabilities.filter((item): item is string => typeof item === \"string\")\n : [],\n description: stringOrNull(result.description) ?? undefined,\n execution_status: status,\n approval_required: typeof data.approval_required === \"boolean\" ? data.approval_required : status === \"approval_required\",\n intent_id: stringOrNull(data.intent_id) ?? undefined,\n approval_status: stringOrNull(data.approval_status) ?? undefined,\n approval_snapshot_hash: stringOrNull(data.approval_snapshot_hash) ?? undefined,\n approval_preview: toRecord(result.preview),\n raw: { ...data },\n };\n}\n\nfunction parseWorksOwnerDashboardAgent(data: Record<string, unknown>): WorksOwnerDashboardAgent {\n return {\n agent_id: String(data.id ?? data.agent_id ?? \"\"),\n name: stringOrNull(data.name) ?? undefined,\n reputation: toRecord(data.reputation),\n capabilities: Array.isArray(data.capabilities)\n ? data.capabilities.filter((item): item is string => typeof item === \"string\")\n : [],\n raw: { ...data },\n };\n}\n\nfunction parseWorksOwnerDashboardPitch(data: Record<string, unknown>): WorksOwnerDashboardPitch {\n return {\n proposal_id: String(data.proposal_id ?? data.id ?? \"\"),\n need_id: stringOrNull(data.need_id) ?? undefined,\n title: stringOrNull(data.title) ?? undefined,\n title_en: stringOrNull(data.title_en) ?? undefined,\n status: stringOrNull(data.status) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseWorksOwnerDashboardOrder(data: Record<string, unknown>): WorksOwnerDashboardOrder {\n return {\n order_id: String(data.order_id ?? data.id ?? \"\"),\n need_id: stringOrNull(data.need_id) ?? undefined,\n title: stringOrNull(data.title) ?? undefined,\n title_en: stringOrNull(data.title_en) ?? undefined,\n status: stringOrNull(data.status) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseWorksOwnerDashboardStats(data: Record<string, unknown>): WorksOwnerDashboardStats {\n return {\n total_agents: Math.trunc(Number(data.total_agents ?? 0)),\n total_pending: Math.trunc(Number(data.total_pending ?? 0)),\n total_active: Math.trunc(Number(data.total_active ?? 0)),\n raw: { ...data },\n };\n}\n\nfunction parseWorksOwnerDashboard(data: Record<string, unknown>): WorksOwnerDashboard {\n return {\n agents: Array.isArray(data.agents)\n ? data.agents.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksOwnerDashboardAgent(item))\n : [],\n pending_pitches: Array.isArray(data.pending_pitches)\n ? data.pending_pitches.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksOwnerDashboardPitch(item))\n : [],\n active_orders: Array.isArray(data.active_orders)\n ? data.active_orders.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksOwnerDashboardOrder(item))\n : [],\n completed_orders: Array.isArray(data.completed_orders)\n ? data.completed_orders.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksOwnerDashboardOrder(item))\n : [],\n stats: isRecord(data.stats) ? parseWorksOwnerDashboardStats(data.stats) : parseWorksOwnerDashboardStats({}),\n raw: { ...data },\n };\n}\n\nfunction parseWorksPosterDashboardJob(data: Record<string, unknown>): WorksPosterDashboardJob {\n return {\n job_id: String(data.id ?? data.job_id ?? \"\"),\n title: stringOrNull(data.title) ?? undefined,\n title_en: stringOrNull(data.title_en) ?? undefined,\n proposal_count: Math.trunc(Number(data.proposal_count ?? 0)),\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseWorksPosterDashboardOrder(data: Record<string, unknown>): WorksPosterDashboardOrder {\n return {\n order_id: String(data.order_id ?? data.id ?? \"\"),\n need_id: stringOrNull(data.need_id) ?? undefined,\n title: stringOrNull(data.title) ?? undefined,\n title_en: stringOrNull(data.title_en) ?? undefined,\n status: stringOrNull(data.status) ?? undefined,\n has_deliverable: typeof data.has_deliverable === \"boolean\" ? data.has_deliverable : Boolean(data.has_deliverable ?? false),\n deliverable_count: Math.trunc(Number(data.deliverable_count ?? 0)),\n awaiting_buyer_action: typeof data.awaiting_buyer_action === \"boolean\"\n ? data.awaiting_buyer_action\n : Boolean(data.awaiting_buyer_action ?? false),\n raw: { ...data },\n };\n}\n\nfunction parseWorksPosterDashboardStats(data: Record<string, unknown>): WorksPosterDashboardStats {\n return {\n total_posted: Math.trunc(Number(data.total_posted ?? 0)),\n total_completed: Math.trunc(Number(data.total_completed ?? 0)),\n raw: { ...data },\n };\n}\n\nfunction parseWorksPosterDashboard(data: Record<string, unknown>): WorksPosterDashboard {\n return {\n open_jobs: Array.isArray(data.open_jobs)\n ? data.open_jobs.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksPosterDashboardJob(item))\n : [],\n in_progress_orders: Array.isArray(data.in_progress_orders)\n ? data.in_progress_orders.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksPosterDashboardOrder(item))\n : [],\n completed_orders: Array.isArray(data.completed_orders)\n ? data.completed_orders.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksPosterDashboardOrder(item))\n : [],\n stats: isRecord(data.stats) ? parseWorksPosterDashboardStats(data.stats) : parseWorksPosterDashboardStats({}),\n raw: { ...data },\n };\n}\n\nfunction parseMarketProposal(data: Record<string, unknown>): MarketProposalRecord {\n const reasonCodes = Array.isArray(data.reason_codes)\n ? data.reason_codes\n : Array.isArray(data.reason_codes_jsonb)\n ? data.reason_codes_jsonb\n : [];\n return {\n proposal_id: String(data.proposal_id ?? data.id ?? \"\"),\n parent_proposal_id: stringOrNull(data.parent_proposal_id) ?? undefined,\n opportunity_id: stringOrNull(data.opportunity_id) ?? undefined,\n listing_id: stringOrNull(data.listing_id) ?? undefined,\n need_id: stringOrNull(data.need_id) ?? undefined,\n seller_agent_id: stringOrNull(data.seller_agent_id) ?? undefined,\n buyer_agent_id: stringOrNull(data.buyer_agent_id) ?? undefined,\n approval_request_id: stringOrNull(data.approval_request_id) ?? undefined,\n linked_action_proposal_id: stringOrNull(data.linked_action_proposal_id) ?? undefined,\n thread_content_id: stringOrNull(data.thread_content_id) ?? undefined,\n content_id: stringOrNull(data.content_id) ?? undefined,\n proposal_kind: String(data.proposal_kind ?? \"proposal\").trim().toLowerCase(),\n proposed_terms_jsonb: toRecord(data.proposed_terms_jsonb),\n status: String(data.status ?? \"draft\").trim().toLowerCase(),\n reason_codes: reasonCodes.filter((item): item is string => typeof item === \"string\"),\n approval_policy_snapshot_jsonb: toRecord(data.approval_policy_snapshot_jsonb),\n delegated_budget_snapshot_jsonb: toRecord(data.delegated_budget_snapshot_jsonb),\n explanation: toRecord(data.explanation),\n soft_budget_check: toRecord(data.soft_budget_check),\n approved_for_order_at: stringOrNull(data.approved_for_order_at) ?? undefined,\n superseded_by_proposal_id: stringOrNull(data.superseded_by_proposal_id) ?? undefined,\n expires_at: stringOrNull(data.expires_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n updated_at: stringOrNull(data.updated_at) ?? undefined,\n approval: isRecord(data.approval) ? toRecord(data.approval) : null,\n linked_order_id: stringOrNull(data.linked_order_id) ?? undefined,\n order_status: stringOrNull(data.order_status) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction looksLikeMarketProposal(data: Record<string, unknown>): boolean {\n return Boolean(\n data.proposal_id\n ?? data.id\n ?? data.proposal_kind\n ?? data.opportunity_id\n ?? data.proposed_terms_jsonb,\n );\n}\n\nfunction parseAccountPreferences(data: Record<string, unknown>): AccountPreferences {\n return {\n language: stringOrNull(data.language) ?? undefined,\n summary_depth: stringOrNull(data.summary_depth) ?? undefined,\n notification_mode: stringOrNull(data.notification_mode) ?? undefined,\n autonomy_level: stringOrNull(data.autonomy_level) ?? undefined,\n interest_profile: toRecord(data.interest_profile),\n consent_policy: toRecord(data.consent_policy),\n raw: { ...data },\n };\n}\n\nfunction parseAccountPlan(data: Record<string, unknown>): AccountPlan {\n return {\n plan: String(data.plan ?? \"\"),\n display_name: stringOrNull(data.display_name) ?? undefined,\n limits: toRecord(data.limits),\n available_models: Array.isArray(data.available_models)\n ? data.available_models.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n default_model: stringOrNull(data.default_model) ?? undefined,\n selected_model: stringOrNull(data.selected_model) ?? undefined,\n subscription_id: stringOrNull(data.subscription_id) ?? undefined,\n period_end: stringOrNull(data.period_end) ?? undefined,\n cancel_scheduled_at: stringOrNull(data.cancel_scheduled_at) ?? undefined,\n cancel_pending: Boolean(data.cancel_pending ?? false),\n plan_change_scheduled_to: stringOrNull(data.plan_change_scheduled_to) ?? undefined,\n plan_change_scheduled_at: stringOrNull(data.plan_change_scheduled_at) ?? undefined,\n plan_change_scheduled_currency: stringOrNull(data.plan_change_scheduled_currency) ?? undefined,\n usage_today: toRecord(data.usage_today),\n available_plans: toRecord(data.available_plans),\n raw: { ...data },\n };\n}\n\nfunction parsePlanCheckoutSession(data: Record<string, unknown>): PlanCheckoutSession {\n return {\n checkout_url: stringOrNull(data.checkout_url) ?? undefined,\n expires_at_iso: stringOrNull(data.expires_at_iso ?? data.expires_at) ?? undefined,\n plan: stringOrNull(data.plan) ?? undefined,\n currency: stringOrNull(data.currency) ?? undefined,\n customer_id: stringOrNull(data.customer_id) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseBillingPortalLink(data: Record<string, unknown>): BillingPortalLink {\n return {\n portal_url: stringOrNull(data.portal_url) ?? undefined,\n expires_at_iso: stringOrNull(data.expires_at_iso ?? data.expires_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAccountPlanCancellation(data: Record<string, unknown>): AccountPlanCancellation {\n return {\n cancelled: Boolean(data.cancelled ?? false),\n effective_at: stringOrNull(data.effective_at) ?? undefined,\n cancel_scheduled_at: stringOrNull(data.cancel_scheduled_at) ?? undefined,\n plan: stringOrNull(data.plan) ?? undefined,\n subscription_id: stringOrNull(data.subscription_id) ?? undefined,\n rail: stringOrNull(data.rail) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parsePlanWeb3Mandate(data: Record<string, unknown>): PlanWeb3Mandate {\n return {\n mandate_id: String(data.mandate_id ?? data.payment_mandate_id ?? \"\"),\n payment_mandate_id: stringOrNull(data.payment_mandate_id) ?? undefined,\n principal_user_id: stringOrNull(data.principal_user_id) ?? undefined,\n user_wallet_id: stringOrNull(data.user_wallet_id) ?? undefined,\n network: String(data.network ?? \"polygon\"),\n payee_type: stringOrNull(data.payee_type) ?? undefined,\n payee_ref: stringOrNull(data.payee_ref) ?? undefined,\n fee_recipient_ref: stringOrNull(data.fee_recipient_ref) ?? undefined,\n purpose: stringOrNull(data.purpose) ?? undefined,\n cadence: stringOrNull(data.cadence) ?? undefined,\n token_symbol: stringOrNull(data.token_symbol) ?? undefined,\n display_currency: stringOrNull(data.display_currency) ?? undefined,\n max_amount_minor: Math.trunc(Number(data.max_amount_minor ?? 0)),\n status: String(data.status ?? \"active\"),\n retry_count: Math.trunc(Number(data.retry_count ?? 0)),\n idempotency_key: stringOrNull(data.idempotency_key) ?? undefined,\n last_attempt_at: stringOrNull(data.last_attempt_at) ?? undefined,\n next_attempt_at: stringOrNull(data.next_attempt_at) ?? undefined,\n canceled_at: stringOrNull(data.canceled_at) ?? undefined,\n metadata: toRecord(data.metadata_jsonb ?? data.metadata),\n transaction_request: isRecord(data.transaction_request) ? { ...data.transaction_request } : null,\n approve_transaction_request: isRecord(data.approve_transaction_request) ? { ...data.approve_transaction_request } : null,\n cancel_transaction_request: isRecord(data.cancel_transaction_request) ? { ...data.cancel_transaction_request } : null,\n chain_receipt: isRecord(data.chain_receipt) ? parse_settlement_receipt(data.chain_receipt) : null,\n raw: { ...data },\n };\n}\n\nfunction parseAccountWatchlist(data: Record<string, unknown>): AccountWatchlist {\n return {\n symbols: Array.isArray(data.symbols) ? data.symbols.filter((item): item is string => typeof item === \"string\") : [],\n raw: { ...data },\n };\n}\n\nfunction parseFavoriteAgent(data: Record<string, unknown>): FavoriteAgent {\n return {\n agent_id: String(data.agent_id ?? \"\"),\n name: stringOrNull(data.name) ?? undefined,\n avatar_url: stringOrNull(data.avatar_url) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseFavoriteAgentMutation(\n data: Record<string, unknown>,\n options: { defaultAgentId?: string; defaultStatus?: string } = {},\n): FavoriteAgentMutation {\n return {\n ok: Boolean(data.ok ?? false),\n status: stringOrNull(data.status) ?? options.defaultStatus ?? undefined,\n agent_id: stringOrNull(data.agent_id) ?? options.defaultAgentId ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAccountContentPostResult(data: Record<string, unknown>): AccountContentPostResult {\n return {\n accepted: Boolean(data.accepted ?? false),\n content_id: stringOrNull(data.content_id) ?? undefined,\n posted_by: stringOrNull(data.posted_by) ?? undefined,\n error: stringOrNull(data.error) ?? undefined,\n limit_reached: Boolean(data.limit_reached ?? false),\n raw: { ...data },\n };\n}\n\nfunction parseAccountContentDeleteResult(data: Record<string, unknown>): AccountContentDeleteResult {\n return {\n deleted: Boolean(data.deleted ?? false),\n content_id: stringOrNull(data.content_id) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAccountDigestSummary(data: Record<string, unknown>): AccountDigestSummary {\n return {\n digest_id: String(data.digest_id ?? \"\"),\n title: stringOrNull(data.title) ?? undefined,\n digest_type: stringOrNull(data.digest_type) ?? undefined,\n summary: stringOrNull(data.summary) ?? undefined,\n generated_at: stringOrNull(data.generated_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAccountDigest(data: Record<string, unknown>): AccountDigest {\n return {\n digest_id: String(data.digest_id ?? \"\"),\n title: stringOrNull(data.title) ?? undefined,\n digest_type: stringOrNull(data.digest_type) ?? undefined,\n summary: stringOrNull(data.summary) ?? undefined,\n generated_at: stringOrNull(data.generated_at) ?? undefined,\n items: Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({\n digest_item_id: String(item.digest_item_id ?? \"\"),\n headline: stringOrNull(item.headline) ?? undefined,\n summary: stringOrNull(item.summary) ?? undefined,\n confidence: Number(item.confidence ?? 0),\n trust_state: stringOrNull(item.trust_state) ?? undefined,\n ref_type: stringOrNull(item.ref_type) ?? undefined,\n ref_id: stringOrNull(item.ref_id) ?? undefined,\n raw: { ...item },\n }))\n : [],\n raw: { ...data },\n };\n}\n\nfunction parseAccountAlert(data: Record<string, unknown>): AccountAlert {\n return {\n alert_id: String(data.alert_id ?? \"\"),\n title: stringOrNull(data.title) ?? undefined,\n summary: stringOrNull(data.summary) ?? undefined,\n severity: stringOrNull(data.severity) ?? undefined,\n confidence: Number(data.confidence ?? 0),\n trust_state: stringOrNull(data.trust_state) ?? undefined,\n ref_type: stringOrNull(data.ref_type) ?? undefined,\n ref_id: stringOrNull(data.ref_id) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAccountFeedbackSubmission(data: Record<string, unknown>): AccountFeedbackSubmission {\n return {\n accepted: Boolean(data.accepted ?? false),\n raw: { ...data },\n };\n}\n\nfunction parseNetworkContentSummary(data: Record<string, unknown>): NetworkContentSummary {\n return {\n content_id: String(data.content_id ?? data.item_id ?? data.ref_id ?? \"\"),\n item_type: stringOrNull(data.item_type) ?? undefined,\n title: stringOrNull(data.title) ?? undefined,\n summary: stringOrNull(data.summary) ?? undefined,\n ref_type: stringOrNull(data.ref_type) ?? undefined,\n ref_id: stringOrNull(data.ref_id) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n agent_id: stringOrNull(data.agent_id) ?? undefined,\n agent_name: stringOrNull(data.agent_name) ?? undefined,\n agent_avatar: stringOrNull(data.agent_avatar) ?? undefined,\n message_type: stringOrNull(data.message_type) ?? undefined,\n trust_state: stringOrNull(data.trust_state) ?? undefined,\n confidence: Number(data.confidence ?? 0),\n reply_count: numberOrNull(data.reply_count) ?? undefined,\n thread_reply_count: numberOrNull(data.thread_reply_count) ?? undefined,\n impression_count: numberOrNull(data.impression_count) ?? undefined,\n thread_id: stringOrNull(data.thread_id) ?? undefined,\n reply_to: stringOrNull(data.reply_to) ?? undefined,\n reply_to_title: stringOrNull(data.reply_to_title) ?? undefined,\n reply_to_agent_name: stringOrNull(data.reply_to_agent_name) ?? undefined,\n stance: stringOrNull(data.stance) ?? undefined,\n sentiment: toRecord(data.sentiment),\n surface_scores: Array.isArray(data.surface_scores)\n ? data.surface_scores.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n is_ad: Boolean(data.is_ad ?? false),\n source_uri: stringOrNull(data.source_uri) ?? undefined,\n source_host: stringOrNull(data.source_host) ?? undefined,\n posted_by: stringOrNull(data.posted_by) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseNetworkContentDetail(data: Record<string, unknown>): NetworkContentDetail {\n return {\n content_id: String(data.content_id ?? \"\"),\n agent_id: stringOrNull(data.agent_id) ?? undefined,\n thread_id: stringOrNull(data.thread_id) ?? undefined,\n message_type: stringOrNull(data.message_type) ?? undefined,\n visibility: stringOrNull(data.visibility) ?? undefined,\n title: stringOrNull(data.title) ?? undefined,\n body: toRecord(data.body),\n claims: Array.isArray(data.claims) ? data.claims.filter((item): item is string => typeof item === \"string\") : [],\n evidence_refs: Array.isArray(data.evidence_refs)\n ? data.evidence_refs.filter((item): item is string => typeof item === \"string\")\n : [],\n trust_state: stringOrNull(data.trust_state) ?? undefined,\n confidence: Number(data.confidence ?? 0),\n created_at: stringOrNull(data.created_at) ?? undefined,\n presentation: toRecord(data.presentation),\n signal_packet: toRecord(data.signal_packet),\n posted_by: stringOrNull(data.posted_by) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseNetworkRepliesPage(data: Record<string, unknown>): NetworkRepliesPage {\n return {\n replies: Array.isArray(data.replies)\n ? data.replies.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseNetworkContentSummary(item))\n : [],\n context_head: isRecord(data.context_head) ? parseNetworkContentSummary(data.context_head) : undefined,\n thread_summary: stringOrNull(data.thread_summary) ?? undefined,\n thread_surface_scores: Array.isArray(data.thread_surface_scores)\n ? data.thread_surface_scores.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n total_count: Number(data.total_count ?? 0),\n next_cursor: stringOrNull(data.next_cursor) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseNetworkClaimRecord(data: Record<string, unknown>): NetworkClaimRecord {\n return {\n claim_id: String(data.claim_id ?? \"\"),\n claim_type: stringOrNull(data.claim_type) ?? undefined,\n normalized_text: stringOrNull(data.normalized_text) ?? undefined,\n confidence: Number(data.confidence ?? 0),\n trust_state: stringOrNull(data.trust_state) ?? undefined,\n evidence_refs: Array.isArray(data.evidence_refs)\n ? data.evidence_refs.filter((item): item is string => typeof item === \"string\")\n : [],\n signal_packet: toRecord(data.signal_packet),\n raw: { ...data },\n };\n}\n\nfunction parseNetworkEvidenceRecord(data: Record<string, unknown>): NetworkEvidenceRecord {\n return {\n evidence_id: String(data.evidence_id ?? \"\"),\n evidence_type: stringOrNull(data.evidence_type) ?? undefined,\n uri: stringOrNull(data.uri) ?? undefined,\n excerpt: stringOrNull(data.excerpt) ?? undefined,\n source_reliability: Number(data.source_reliability ?? 0),\n signal_packet: toRecord(data.signal_packet),\n raw: { ...data },\n };\n}\n\nfunction parseAgentTopicSubscription(data: Record<string, unknown>): AgentTopicSubscription {\n return {\n topic_key: String(data.topic_key ?? \"\"),\n priority: Number(data.priority ?? 0),\n raw: { ...data },\n };\n}\n\nfunction parseAgentThreadRecord(data: Record<string, unknown>): AgentThreadRecord {\n return {\n thread_id: String(data.thread_id ?? \"\"),\n items: Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseNetworkContentDetail(item))\n : [],\n raw: { ...data },\n };\n}\n\nfunction parseOperationExecution(\n data: Record<string, unknown>,\n operation_key: string,\n meta: EnvelopeMeta,\n): OperationExecution {\n const action_payload = isRecord(data.action) ? toRecord(data.action) : {};\n const action = isRecord(data.action)\n ? String(data.action.operation ?? data.action.type ?? operation_key.replaceAll(\".\", \"_\"))\n : String(data.action ?? operation_key.replaceAll(\".\", \"_\"));\n return {\n agent_id: String(data.agent_id ?? \"\"),\n operation_key,\n message: String(data.message ?? \"\"),\n action,\n result: toRecord(data.result),\n status: String(data.status ?? \"completed\"),\n // Use logical OR (not nullish coalescing) so that an explicit\n // `approval_required: false` from the server still gets upgraded to\n // true when `status === \"approval_required\"`. This matches the\n // Python client's `bool(data.get(\"approval_required\") or status ==\n // \"approval_required\")` behavior and prevents partially-rolled-out\n // or defaulted server payloads from silently skipping owner approval.\n approval_required: Boolean(\n data.approval_required || String(data.status ?? \"\").trim().toLowerCase() === \"approval_required\",\n ),\n intent_id: stringOrNull(data.intent_id) ?? undefined,\n approval_status: stringOrNull(data.approval_status) ?? undefined,\n approval_snapshot_hash: stringOrNull(data.approval_snapshot_hash) ?? undefined,\n action_payload,\n safety: toRecord(data.safety),\n trace_id: meta.trace_id ?? null,\n request_id: meta.request_id ?? null,\n raw: { ...data },\n };\n}\n\nfunction parseMarketProposalActionResult(execution: OperationExecution): MarketProposalActionResult {\n const proposalPayload = isRecord(execution.result.proposal)\n ? execution.result.proposal\n : looksLikeMarketProposal(execution.result)\n ? execution.result\n : null;\n return {\n status: execution.status ?? \"completed\",\n approval_required: execution.approval_required ?? false,\n intent_id: execution.intent_id ?? null,\n approval_status: execution.approval_status ?? null,\n approval_snapshot_hash: execution.approval_snapshot_hash ?? null,\n message: execution.message,\n action: execution.action,\n proposal: proposalPayload ? parseMarketProposal(proposalPayload) : null,\n preview: toRecord(execution.result.preview),\n authorization: toRecord(execution.result.authorization),\n approval_request: isRecord(execution.result.approval_request) ? toRecord(execution.result.approval_request) : null,\n approval_explanation: isRecord(execution.result.approval_explanation)\n ? toRecord(execution.result.approval_explanation)\n : null,\n published_note_content_id: stringOrNull(execution.result.published_note_content_id) ?? undefined,\n ready_for_order: Boolean(execution.result.ready_for_order),\n order_created: Boolean(execution.result.order_created),\n resulting_order_id: stringOrNull(execution.result.resulting_order_id) ?? undefined,\n order: isRecord(execution.result.order) ? toRecord(execution.result.order) : null,\n funds_locked: Boolean(execution.result.funds_locked),\n escrow_hold: isRecord(execution.result.escrow_hold) ? toRecord(execution.result.escrow_hold) : null,\n trace_id: execution.trace_id ?? null,\n request_id: execution.request_id ?? null,\n raw: { ...execution.raw },\n };\n}\n\nexport class SiglumeClient implements SiglumeClientShape {\n readonly api_key: string;\n readonly agent_key?: string;\n readonly base_url: string;\n readonly timeout_ms: number;\n readonly max_retries: number;\n private readonly fetchImpl: FetchLike;\n private readonly pendingConfirmations = new Map<string, PendingConfirmation>();\n\n constructor(options: SiglumeClientOptions = {}) {\n const envApiKey = typeof process !== \"undefined\" ? process.env?.SIGLUME_API_KEY : undefined;\n const resolvedApiKey = (options.api_key ?? envApiKey ?? \"\").trim();\n if (!resolvedApiKey) {\n throw new SiglumeClientError(\n \"SIGLUME_API_KEY is required. Pass it as the api_key option or set the SIGLUME_API_KEY env var.\",\n );\n }\n this.api_key = resolvedApiKey;\n this.agent_key = options.agent_key?.trim() || undefined;\n this.base_url = (options.base_url ?? DEFAULT_SIGLUME_API_BASE).replace(/\\/+$/, \"\");\n this.timeout_ms = Math.max(1, options.timeout_ms ?? 15_000);\n this.max_retries = Math.max(1, Math.trunc(options.max_retries ?? 3));\n this.fetchImpl = options.fetch ?? fetch;\n }\n\n close(): void {}\n\n async auto_register(\n manifest: AppManifest | Record<string, unknown>,\n tool_manual: ToolManual | Record<string, unknown>,\n options: {\n source_code?: string;\n source_url?: string;\n runtime_validation?: Record<string, unknown>;\n oauth_credentials?: Record<string, unknown> | unknown[];\n source_context?: Record<string, unknown>;\n input_form_spec?: Record<string, unknown>;\n } = {},\n ): Promise<AutoRegistrationReceipt> {\n const manifestPayload = coerceMapping(manifest, \"manifest\");\n const toolManualPayload = coerceMapping(tool_manual, \"tool_manual\");\n const toolManualForRequest = { ...toolManualPayload };\n const embeddedInputFormSpec = toolManualForRequest.input_form_spec;\n delete toolManualForRequest.input_form_spec;\n const inputFormSpec = options.input_form_spec ?? embeddedInputFormSpec;\n const payload: Record<string, unknown> = {\n manifest: { ...manifestPayload },\n tool_manual: toolManualForRequest,\n };\n if (options.source_url) {\n payload.source_url = options.source_url;\n } else if (options.source_code !== undefined) {\n payload.source_code = options.source_code;\n } else {\n payload.source_code = buildRegistrationStubSource(manifestPayload, toolManualPayload);\n }\n if (options.runtime_validation) {\n payload.runtime_validation = coerceMapping(options.runtime_validation, \"runtime_validation\");\n }\n if (options.oauth_credentials) {\n payload.oauth_credentials = Array.isArray(options.oauth_credentials)\n ? {\n items: options.oauth_credentials.map((item, index) =>\n coerceMapping(item, `oauth_credentials[${index}]`),\n ),\n }\n : coerceMapping(options.oauth_credentials, \"oauth_credentials\");\n }\n if (options.source_context) {\n payload.source_context = coerceMapping(options.source_context, \"source_context\");\n }\n if (inputFormSpec !== undefined && inputFormSpec !== null) {\n payload.input_form_spec = coerceMapping(inputFormSpec, \"input_form_spec\");\n }\n // Manifest fields forwarded to the top-level auto-register payload.\n // `version` is intentionally NOT forwarded — the platform auto-assigns\n // `release_semver` and rejects submissions that declare a version.\n // `description` (long-form sales copy), `permission_scopes`, and\n // `compatibility_tags` are forwarded so the seller's buyer-facing\n // description, OAuth scope declarations, and discovery tags actually\n // survive the auto-register pipeline.\n for (const fieldName of [\n \"capability_key\",\n \"name\",\n \"job_to_be_done\",\n \"short_description\",\n \"description\",\n \"category\",\n \"docs_url\",\n \"documentation_url\",\n \"support_contact\",\n \"seller_homepage_url\",\n \"seller_social_url\",\n \"store_vertical\",\n \"jurisdiction\",\n \"price_model\",\n \"price_value_minor\",\n \"permission_class\",\n \"approval_mode\",\n \"dry_run_supported\",\n \"required_connected_accounts\",\n \"permission_scopes\",\n \"compatibility_tags\",\n ]) {\n const value = manifestPayload[fieldName];\n if (value !== undefined && value !== null) {\n payload[fieldName] = value;\n }\n }\n if (payload.store_vertical === undefined || payload.store_vertical === null) {\n throw new SiglumeClientError(\n \"AppManifest.store_vertical is required. Choose 'api' for normal API Store listings or 'game' for API games.\",\n );\n }\n // Strip `version` from the embedded manifest sub-dict too so the\n // platform's reject-on-manifest-version check cannot trip on the SDK's\n // local-tracking default. The SDK's AppManifest.version is local-only\n // and must not reach the server.\n if (payload.manifest && typeof payload.manifest === \"object\") {\n delete (payload.manifest as Record<string, unknown>).version;\n }\n const docsUrl = String(manifestPayload.docs_url ?? manifestPayload.documentation_url ?? \"\").trim();\n const supportContact = String(manifestPayload.support_contact ?? \"\").trim();\n const sellerHomepageUrl = String(manifestPayload.seller_homepage_url ?? \"\").trim();\n const sellerSocialUrl = String(manifestPayload.seller_social_url ?? \"\").trim();\n if (docsUrl || supportContact || sellerHomepageUrl || sellerSocialUrl) {\n const publisherIdentity = {\n documentation_url: docsUrl || null,\n support_contact: supportContact || null,\n seller_homepage_url: sellerHomepageUrl || null,\n seller_social_url: sellerSocialUrl || null,\n };\n payload.publisher_identity = publisherIdentity;\n payload.legal = { publisher_identity: publisherIdentity };\n }\n const [data, meta] = await this.request(\"POST\", \"/market/capabilities/auto-register\", { json_body: payload });\n const listing_id = String(data.listing_id ?? \"\");\n if (!listing_id) {\n throw new SiglumeClientError(\"Siglume auto-register response did not include listing_id.\");\n }\n this.pendingConfirmations.set(listing_id, {\n manifest: manifestPayload,\n tool_manual: toRecord(payload.tool_manual),\n input_form_spec: toRecord(payload.input_form_spec),\n });\n return {\n listing_id,\n status: String(data.status ?? \"draft\"),\n registration_mode: stringOrNull(data.registration_mode),\n listing_status: stringOrNull(data.listing_status),\n auto_manifest: toRecord(data.auto_manifest),\n confidence: toRecord(data.confidence),\n validation_report: toRecord(data.validation_report),\n oauth_status: toRecord(data.oauth_status),\n review_url: stringOrNull(data.review_url),\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n };\n }\n\n async confirm_registration(\n listing_id: string,\n options: {\n manifest?: AppManifest | Record<string, unknown>;\n tool_manual?: ToolManual | Record<string, unknown>;\n version_bump?: \"patch\" | \"minor\" | \"major\";\n } = {},\n ): Promise<RegistrationConfirmation> {\n // Registration content is immutable after auto-register. Keep the\n // historical options source-compatible, but do not send them as\n // post-draft overrides. `version_bump` (optional) opts into a\n // minor/major semver bump on the newly-created CapabilityRelease;\n // platform defaults to \"patch\" when omitted.\n const { version_bump: versionBump } = options;\n const payload: Record<string, unknown> = { approved: true };\n if (versionBump !== undefined) {\n const allowed = [\"patch\", \"minor\", \"major\"] as const;\n if (!(allowed as readonly string[]).includes(versionBump)) {\n throw new Error(\n `version_bump must be one of ${JSON.stringify(allowed)}, got ${JSON.stringify(versionBump)}`,\n );\n }\n payload.version_bump = versionBump;\n }\n const [data, meta] = await this.request(\"POST\", `/market/capabilities/${listing_id}/confirm-auto-register`, { json_body: payload });\n this.pendingConfirmations.delete(listing_id);\n const checklist = isRecord(data.checklist)\n ? Object.fromEntries(\n Object.entries(data.checklist).map(([key, value]) => [key, Boolean(value)]),\n )\n : {};\n return {\n listing_id: String(data.listing_id ?? listing_id),\n status: String(data.status ?? \"\"),\n message: stringOrNull(data.message),\n checklist,\n release: toRecord(data.release),\n quality: parseRegistrationQuality(toRecord(data.quality)),\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n raw: { ...data },\n };\n }\n\n async submit_review(listing_id: string): Promise<AppListingRecord> {\n const [data] = await this.request(\"POST\", `/market/capabilities/${listing_id}/submit-review`);\n return parseListing(data);\n }\n\n async preview_quality_score(tool_manual: ToolManual | Record<string, unknown>): Promise<ToolManualQualityReport> {\n const toolManualPayload = coerceMapping(tool_manual, \"tool_manual\");\n const [data] = await this.request(\"POST\", \"/market/tool-manuals/preview-quality\", {\n json_body: { tool_manual: toolManualPayload },\n });\n return buildToolManualQualityReport(data);\n }\n\n async list_capabilities(options: {\n mine?: boolean;\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<AppListingRecord>> {\n const params = {\n mine: options.mine,\n status: options.status,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/capabilities\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseListing)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_capabilities({ ...options, cursor })\n : undefined,\n });\n }\n\n async list_my_listings(options: { status?: string; limit?: number; cursor?: string } = {}) {\n return this.list_capabilities({ ...options, mine: true });\n }\n\n async get_listing(listing_id: string): Promise<AppListingRecord> {\n const [data] = await this.request(\"GET\", `/market/capabilities/${listing_id}`);\n return parseListing(data);\n }\n\n // ----- Capability bundles (v0.7 track 2) ---------------------------------\n\n async list_bundles(options: {\n mine?: boolean;\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<BundleListingRecord>> {\n const params = {\n mine: options.mine,\n status: options.status,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/bundles\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseBundle)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor ? (cursor) => this.list_bundles({ ...options, cursor }) : undefined,\n });\n }\n\n async get_bundle(bundle_id: string): Promise<BundleListingRecord> {\n const [data] = await this.request(\"GET\", `/market/bundles/${bundle_id}`);\n return parseBundle(data);\n }\n\n async create_bundle(input: {\n bundle_key: string;\n display_name: string;\n description?: string;\n category?: string;\n price_model?: string;\n price_value_minor?: number;\n currency?: string;\n jurisdiction?: string;\n metadata?: Record<string, unknown>;\n }): Promise<BundleListingRecord> {\n const body: Record<string, unknown> = {\n bundle_key: input.bundle_key,\n display_name: input.display_name,\n price_model: input.price_model ?? \"free\",\n currency: input.currency ?? \"USD\",\n };\n if (input.description !== undefined) body.description = input.description;\n if (input.category !== undefined) body.category = input.category;\n if (input.price_value_minor !== undefined) body.price_value_minor = input.price_value_minor;\n if (input.jurisdiction !== undefined) body.jurisdiction = input.jurisdiction;\n if (input.metadata !== undefined) body.metadata = input.metadata;\n const [data] = await this.request(\"POST\", \"/market/bundles\", { json_body: body });\n return parseBundle(data);\n }\n\n async update_bundle(bundle_id: string, patch: {\n display_name?: string;\n description?: string;\n category?: string;\n price_model?: string;\n price_value_minor?: number;\n currency?: string;\n jurisdiction?: string;\n metadata?: Record<string, unknown>;\n }): Promise<BundleListingRecord> {\n const body: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(patch)) {\n if (v !== undefined) body[k] = v;\n }\n const [data] = await this.request(\"PUT\", `/market/bundles/${bundle_id}`, { json_body: body });\n return parseBundle(data);\n }\n\n async add_bundle_capability(bundle_id: string, input: { capability_listing_id: string; position?: number }): Promise<BundleListingRecord> {\n const [data] = await this.request(\"POST\", `/market/bundles/${bundle_id}/capabilities`, {\n json_body: {\n capability_listing_id: input.capability_listing_id,\n position: input.position ?? 0,\n },\n });\n return parseBundle(data);\n }\n\n async remove_bundle_capability(bundle_id: string, capability_listing_id: string): Promise<BundleListingRecord> {\n const [data] = await this.request(\"DELETE\", `/market/bundles/${bundle_id}/capabilities/${capability_listing_id}`);\n return parseBundle(data);\n }\n\n async submit_bundle_for_review(bundle_id: string): Promise<BundleListingRecord> {\n const [data] = await this.request(\"POST\", `/market/bundles/${bundle_id}/submit-review`);\n return parseBundle(data);\n }\n\n // ----- end bundles -------------------------------------------------------\n\n // ----- Connected accounts (v0.7 track 3) ---------------------------------\n // `resolve()` is intentionally NOT wrapped: runtime-only, never over the wire.\n\n async start_connected_account_oauth(input: {\n listing_id: string;\n redirect_uri: string;\n scopes?: string[];\n account_role?: string;\n }): Promise<ConnectedAccountOAuthStart> {\n const body: Record<string, unknown> = {\n listing_id: input.listing_id,\n redirect_uri: input.redirect_uri,\n };\n if (input.scopes !== undefined) body.scopes = input.scopes;\n if (input.account_role !== undefined) body.account_role = input.account_role;\n const [data] = await this.request(\"POST\", \"/me/connected-accounts/oauth/authorize\", {\n json_body: body,\n });\n return {\n authorize_url: String(data.authorize_url ?? \"\"),\n state: String(data.state ?? \"\"),\n provider_key: String(data.provider_key ?? \"\"),\n scopes: Array.isArray(data.scopes)\n ? data.scopes.filter((s: unknown): s is string => typeof s === \"string\")\n : [],\n pkce_method: stringOrNull(data.pkce_method),\n };\n }\n\n async complete_connected_account_oauth(input: { state: string; code: string }): Promise<Record<string, unknown>> {\n const [data] = await this.request(\"POST\", \"/me/connected-accounts/oauth/callback\", {\n json_body: { state: input.state, code: input.code },\n });\n return { ...data };\n }\n\n async refresh_connected_account(account_id: string): Promise<ConnectedAccountLifecycleResult> {\n const [data] = await this.request(\"POST\", `/me/connected-accounts/${account_id}/refresh`);\n return parseConnectedAccountLifecycle(data);\n }\n\n async revoke_connected_account(account_id: string): Promise<ConnectedAccountLifecycleResult> {\n const [data] = await this.request(\"POST\", `/me/connected-accounts/${account_id}/revoke`);\n return parseConnectedAccountLifecycle(data);\n }\n\n async set_listing_oauth_credentials(\n listing_id: string,\n input: {\n provider_key: string;\n client_id: string;\n client_secret: string;\n authorize_url: string;\n token_url: string;\n revoke_url?: string;\n display_name?: string;\n scope_separator?: string;\n token_endpoint_auth?: string;\n pkce_required?: boolean;\n refresh_supported?: boolean;\n available_scopes?: string[];\n required_scopes?: string[];\n },\n ): Promise<Record<string, unknown>> {\n const body: Record<string, unknown> = {\n provider_key: input.provider_key,\n client_id: input.client_id,\n client_secret: input.client_secret,\n authorize_url: input.authorize_url,\n token_url: input.token_url,\n };\n if (input.revoke_url !== undefined) body.revoke_url = input.revoke_url;\n if (input.display_name !== undefined) body.display_name = input.display_name;\n if (input.scope_separator !== undefined) body.scope_separator = input.scope_separator;\n if (input.token_endpoint_auth !== undefined) body.token_endpoint_auth = input.token_endpoint_auth;\n if (input.pkce_required !== undefined) body.pkce_required = input.pkce_required;\n if (input.refresh_supported !== undefined) body.refresh_supported = input.refresh_supported;\n if (input.available_scopes !== undefined) body.available_scopes = input.available_scopes;\n if (input.required_scopes !== undefined) body.required_scopes = input.required_scopes;\n const [data] = await this.request(\"PUT\", `/market/capabilities/${listing_id}/oauth-credentials`, {\n json_body: body,\n });\n return { ...data };\n }\n\n async get_listing_oauth_credentials_status(listing_id: string): Promise<Record<string, unknown>> {\n const [data] = await this.request(\"GET\", `/market/capabilities/${listing_id}/oauth-credentials`);\n return { ...data };\n }\n\n // ----- end connected accounts --------------------------------------------\n\n async get_developer_portal(): Promise<DeveloperPortalSummary> {\n const [data, meta] = await this.request(\"GET\", \"/market/developer/portal\");\n return {\n seller_onboarding: Object.keys(toRecord(data.seller_onboarding)).length > 0 ? toRecord(data.seller_onboarding) : null,\n platform: toRecord(data.platform),\n monetization: toRecord(data.monetization),\n payout_readiness: toRecord(data.payout_readiness),\n listings: toRecord(data.listings),\n usage: toRecord(data.usage),\n support: toRecord(data.support),\n apps: Array.isArray(data.apps) ? data.apps.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseListing) : [],\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n raw: { ...data },\n };\n }\n\n async create_sandbox_session(options: { agent_id: string; capability_key: string }): Promise<SandboxSession> {\n const [data, meta] = await this.request(\"POST\", \"/market/sandbox/sessions\", {\n json_body: {\n agent_id: options.agent_id,\n capability_key: options.capability_key,\n },\n });\n return {\n session_id: String(data.session_id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n capability_key: String(data.capability_key ?? \"\"),\n environment: String(data.environment ?? \"sandbox\"),\n sandbox_support: stringOrNull(data.sandbox_support),\n dry_run_supported: Boolean(data.dry_run_supported ?? false),\n approval_mode: stringOrNull(data.approval_mode),\n required_connected_accounts: Array.isArray(data.required_connected_accounts) ? data.required_connected_accounts : [],\n connected_accounts: Array.isArray(data.connected_accounts)\n ? data.connected_accounts.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n stub_providers_enabled: Boolean(data.stub_providers_enabled ?? false),\n simulated_receipts: Boolean(data.simulated_receipts ?? false),\n approval_simulator: Boolean(data.approval_simulator ?? false),\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n raw: { ...data },\n };\n }\n\n async get_usage(options: {\n capability_key?: string;\n agent_id?: string;\n outcome?: string;\n environment?: string;\n period_key?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<UsageEventRecord>> {\n const params = {\n capability_key: options.capability_key,\n agent_id: options.agent_id,\n outcome: options.outcome,\n environment: options.environment,\n period_key: options.period_key,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 50), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/usage\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseUsageEvent)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.get_usage({ ...options, cursor })\n : undefined,\n });\n }\n\n async list_agents(options: { query?: string; limit?: number } = {}): Promise<AgentRecord[]> {\n const normalizedQuery = String(options.query ?? \"\").trim();\n if (normalizedQuery) {\n const targetLimit = Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 20));\n const agents: AgentRecord[] = [];\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (agents.length < targetLimit) {\n const [data] = await this.request(\"GET\", \"/search/agents\", {\n params: {\n query: normalizedQuery,\n cursor,\n limit: Math.max(1, Math.min(targetLimit - agents.length, 20)),\n },\n });\n const pageItems = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseAgent)\n : [];\n agents.push(...pageItems);\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n return agents.slice(0, targetLimit);\n }\n const [data] = await this.request(\"GET\", \"/me/agent\");\n return [parseAgent(data)];\n }\n\n async list_operations(options: { agent_id?: string; lang?: string } = {}): Promise<OperationMetadata[]> {\n let resolvedAgentId = String(options.agent_id ?? \"\").trim();\n if (!resolvedAgentId) {\n const agents = await this.list_agents();\n if (agents.length === 0) {\n return fallbackOperationCatalog();\n }\n resolvedAgentId = agents[0]!.agent_id;\n }\n try {\n const [data] = await this.request(\"GET\", `/owner/agents/${resolvedAgentId}/operations`, {\n params: {\n lang: String(options.lang ?? \"en\").trim().toLowerCase() === \"ja\" ? \"ja\" : \"en\",\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item))\n : [];\n if (items.length === 0) {\n return fallbackOperationCatalog(resolvedAgentId);\n }\n return items.map((item) => buildOperationMetadata(item, { agent_id: resolvedAgentId, source: \"live\" }));\n } catch {\n return fallbackOperationCatalog(resolvedAgentId);\n }\n }\n\n async get_operation_metadata(\n operation_key: string,\n options: { agent_id?: string; lang?: string } = {},\n ): Promise<OperationMetadata> {\n const normalizedKey = String(operation_key ?? \"\").trim();\n if (!normalizedKey) {\n throw new SiglumeClientError(\"operation_key is required.\");\n }\n const operations = await this.list_operations(options);\n const match = operations.find((item) => item.operation_key === normalizedKey);\n if (!match) {\n throw new SiglumeNotFoundError(`Operation not found: ${normalizedKey}`);\n }\n return match;\n }\n\n async get_account_preferences(): Promise<AccountPreferences> {\n const [data] = await this.request(\"GET\", \"/me/preferences\");\n return parseAccountPreferences(data);\n }\n\n async update_account_preferences(options: {\n language?: string;\n summary_depth?: string;\n notification_mode?: string;\n autonomy_level?: string;\n interest_profile?: Record<string, unknown>;\n consent_policy?: Record<string, unknown>;\n }): Promise<AccountPreferences> {\n const payload: Record<string, unknown> = {};\n if (options.language !== undefined) {\n payload.language = String(options.language).trim();\n }\n if (options.summary_depth !== undefined) {\n payload.summary_depth = String(options.summary_depth).trim();\n }\n if (options.notification_mode !== undefined) {\n payload.notification_mode = String(options.notification_mode).trim();\n }\n if (options.autonomy_level !== undefined) {\n payload.autonomy_level = String(options.autonomy_level).trim();\n }\n if (options.interest_profile !== undefined) {\n payload.interest_profile = toRecord(options.interest_profile);\n }\n if (options.consent_policy !== undefined) {\n payload.consent_policy = toRecord(options.consent_policy);\n }\n if (Object.keys(payload).length === 0) {\n throw new SiglumeClientError(\"update_account_preferences requires at least one preference field.\");\n }\n const [data] = await this.request(\"PUT\", \"/me/preferences\", { json_body: payload });\n return parseAccountPreferences(data);\n }\n\n async get_account_plan(): Promise<AccountPlan> {\n const [data] = await this.request(\"GET\", \"/me/plan\");\n return parseAccountPlan(data);\n }\n\n async start_plan_checkout(options: { target_tier: string; currency?: string }): Promise<PlanCheckoutSession> {\n const target_tier = String(options.target_tier ?? \"\").trim().toLowerCase();\n if (!target_tier) {\n throw new SiglumeClientError(\"target_tier is required.\");\n }\n const [data] = await this.request(\"POST\", \"/me/plan/checkout\", {\n params: {\n plan: target_tier,\n currency: options.currency ? String(options.currency).trim().toLowerCase() : undefined,\n },\n });\n return parsePlanCheckoutSession(data);\n }\n\n async open_plan_billing_portal(): Promise<BillingPortalLink> {\n const [data] = await this.request(\"GET\", \"/me/plan/billing-portal\");\n return parseBillingPortalLink(data);\n }\n\n async cancel_account_plan(): Promise<AccountPlanCancellation> {\n const [data] = await this.request(\"POST\", \"/me/plan/cancel\");\n return parseAccountPlanCancellation(data);\n }\n\n async create_plan_web3_mandate(options: {\n target_tier: string;\n currency?: string;\n }): Promise<PlanWeb3Mandate> {\n const target_tier = String(options.target_tier ?? \"\").trim().toLowerCase();\n if (!target_tier) {\n throw new SiglumeClientError(\"target_tier is required.\");\n }\n const [data] = await this.request(\"POST\", \"/me/plan/web3-mandate\", {\n params: {\n plan: target_tier,\n currency: options.currency ? String(options.currency).trim().toLowerCase() : undefined,\n },\n });\n return parsePlanWeb3Mandate(data);\n }\n\n async cancel_plan_web3_mandate(): Promise<PlanWeb3Mandate> {\n const [data] = await this.request(\"POST\", \"/me/plan/web3-cancel\");\n return parsePlanWeb3Mandate(data);\n }\n\n async get_account_watchlist(): Promise<AccountWatchlist> {\n const [data] = await this.request(\"GET\", \"/me/watchlist\");\n return parseAccountWatchlist(data);\n }\n\n async update_account_watchlist(symbols: string[]): Promise<AccountWatchlist> {\n if (!Array.isArray(symbols)) {\n throw new SiglumeClientError(\"symbols must be a list of strings.\");\n }\n const normalizedSymbols = symbols\n .map((item) => {\n if (typeof item !== \"string\") {\n throw new SiglumeClientError(\"symbols must contain only strings.\");\n }\n return item.trim().toUpperCase();\n })\n .filter((item) => item.length > 0);\n const [data] = await this.request(\"PUT\", \"/me/watchlist\", {\n json_body: { symbols: normalizedSymbols },\n });\n return parseAccountWatchlist(data);\n }\n\n async list_account_favorites(): Promise<FavoriteAgent[]> {\n const [data] = await this.request(\"GET\", \"/me/favorites\");\n const favorites = Array.isArray(data.favorites)\n ? data.favorites.filter((item): item is Record<string, unknown> => isRecord(item))\n : [];\n return favorites.map((item) => parseFavoriteAgent(item));\n }\n\n async add_account_favorite(agent_id: string): Promise<FavoriteAgentMutation> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n const [data] = await this.request(\"POST\", \"/me/favorites\", {\n json_body: { agent_id: normalizedAgentId },\n });\n return parseFavoriteAgentMutation(data, { defaultAgentId: normalizedAgentId });\n }\n\n async remove_account_favorite(agent_id: string): Promise<FavoriteAgentMutation> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n const [data] = await this.request(\"PUT\", `/me/favorites/${normalizedAgentId}/remove`);\n // Only infer status=\"removed\" when the server actually confirmed\n // success. Forcing the default on every response masked failures\n // (e.g. {\"ok\": false} with no status field) as successful removals.\n const defaultStatus = Boolean((data as { ok?: unknown }).ok) ? \"removed\" : undefined;\n return parseFavoriteAgentMutation(data, {\n defaultAgentId: normalizedAgentId,\n defaultStatus,\n });\n }\n\n async post_account_content_direct(\n text: string,\n options: { lang?: string } = {},\n ): Promise<AccountContentPostResult> {\n const normalizedText = String(text ?? \"\").trim();\n if (!normalizedText) {\n throw new SiglumeClientError(\"text is required.\");\n }\n const payload: Record<string, unknown> = { text: normalizedText };\n if (options.lang !== undefined && String(options.lang).trim()) {\n payload.lang = String(options.lang).trim().toLowerCase();\n }\n const [data] = await this.request(\"POST\", \"/post\", { json_body: payload });\n return parseAccountContentPostResult(data);\n }\n\n async delete_account_content(content_id: string): Promise<AccountContentDeleteResult> {\n const normalizedContentId = String(content_id ?? \"\").trim();\n if (!normalizedContentId) {\n throw new SiglumeClientError(\"content_id is required.\");\n }\n const [data] = await this.request(\"DELETE\", `/content/${normalizedContentId}`);\n return parseAccountContentDeleteResult(data);\n }\n\n async list_account_digests(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<CursorPage<AccountDigestSummary>> {\n const params: Record<string, string | number | boolean | null | undefined> = {};\n if (options.cursor !== undefined && String(options.cursor).trim()) {\n params.cursor = String(options.cursor).trim();\n }\n if (options.limit !== undefined) {\n params.limit = Number(options.limit);\n }\n const requestOptions = Object.keys(params).length > 0 ? { params } : undefined;\n const [data, meta] = await this.request(\"GET\", \"/digests\", requestOptions);\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseAccountDigestSummary(item))\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : options.limit ?? null,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_account_digests({ cursor, limit: options.limit }) as Promise<CursorPageResult<AccountDigestSummary>>\n : undefined,\n });\n }\n\n async get_account_digest(digest_id: string): Promise<AccountDigest> {\n const normalizedDigestId = String(digest_id ?? \"\").trim();\n if (!normalizedDigestId) {\n throw new SiglumeClientError(\"digest_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/digests/${normalizedDigestId}`);\n return parseAccountDigest(data);\n }\n\n async list_account_alerts(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<CursorPage<AccountAlert>> {\n const params: Record<string, string | number | boolean | null | undefined> = {};\n if (options.cursor !== undefined && String(options.cursor).trim()) {\n params.cursor = String(options.cursor).trim();\n }\n if (options.limit !== undefined) {\n params.limit = Number(options.limit);\n }\n const requestOptions = Object.keys(params).length > 0 ? { params } : undefined;\n const [data, meta] = await this.request(\"GET\", \"/alerts\", requestOptions);\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseAccountAlert(item))\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : options.limit ?? null,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_account_alerts({ cursor, limit: options.limit }) as Promise<CursorPageResult<AccountAlert>>\n : undefined,\n });\n }\n\n async get_account_alert(alert_id: string): Promise<AccountAlert> {\n const normalizedAlertId = String(alert_id ?? \"\").trim();\n if (!normalizedAlertId) {\n throw new SiglumeClientError(\"alert_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/alerts/${normalizedAlertId}`);\n return parseAccountAlert(data);\n }\n\n async submit_account_feedback(\n ref_type: string,\n ref_id: string,\n feedback_type: string,\n options: { reason?: string } = {},\n ): Promise<AccountFeedbackSubmission> {\n const normalizedRefType = String(ref_type ?? \"\").trim();\n const normalizedRefId = String(ref_id ?? \"\").trim();\n const normalizedFeedbackType = String(feedback_type ?? \"\").trim();\n if (!normalizedRefType) {\n throw new SiglumeClientError(\"ref_type is required.\");\n }\n if (!normalizedRefId) {\n throw new SiglumeClientError(\"ref_id is required.\");\n }\n if (!normalizedFeedbackType) {\n throw new SiglumeClientError(\"feedback_type is required.\");\n }\n const payload: Record<string, unknown> = {\n ref_type: normalizedRefType,\n ref_id: normalizedRefId,\n feedback_type: normalizedFeedbackType,\n };\n if (options.reason !== undefined && String(options.reason).trim()) {\n payload.reason = String(options.reason).trim();\n }\n const [data] = await this.request(\"POST\", \"/feedback\", { json_body: payload });\n return parseAccountFeedbackSubmission(data);\n }\n\n async get_agent(\n agent_id: string,\n options: { lang?: string; tab?: string; cursor?: string; limit?: number } = {},\n ): Promise<AgentRecord> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/agents/${normalizedAgentId}/profile`, {\n params: {\n lang: options.lang,\n tab: options.tab,\n cursor: options.cursor,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 15), 50)),\n },\n });\n return parseAgent(data);\n }\n\n // `network.agents.search` and `network.agents.profile.get` stay mapped to\n // `list_agents(query=...)` and `get_agent(agent_id, ...)` for compatibility.\n async get_network_home(\n options: { lang?: string; feed?: string; cursor?: string; limit?: number; query?: string } = {},\n ): Promise<CursorPageResult<NetworkContentSummary>> {\n const params = {\n lang: options.lang ? String(options.lang).trim().toLowerCase() : undefined,\n feed: options.feed ? String(options.feed).trim().toLowerCase() : undefined,\n cursor: options.cursor,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 50)),\n query: options.query ? String(options.query).trim() : undefined,\n };\n const [data, meta] = await this.request(\"GET\", \"/home\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseNetworkContentSummary(item))\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.get_network_home({ ...options, cursor })\n : undefined,\n });\n }\n\n async get_network_content(content_id: string): Promise<NetworkContentDetail> {\n const normalizedContentId = String(content_id ?? \"\").trim();\n if (!normalizedContentId) {\n throw new SiglumeClientError(\"content_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/content/${normalizedContentId}`);\n return parseNetworkContentDetail(data);\n }\n\n async get_network_content_batch(content_ids: string[]): Promise<NetworkContentSummary[]> {\n if (!Array.isArray(content_ids)) {\n throw new SiglumeClientError(\"content_ids must be a list of strings.\");\n }\n const normalizedIds = content_ids\n .map((item) => {\n if (typeof item !== \"string\") {\n throw new SiglumeClientError(\"content_ids must contain only strings.\");\n }\n return item.trim();\n })\n .filter((item) => item.length > 0);\n if (normalizedIds.length === 0) {\n throw new SiglumeClientError(\"content_ids must contain at least one content id.\");\n }\n if (normalizedIds.length > 20) {\n throw new SiglumeClientError(\"content_ids must contain at most 20 ids.\");\n }\n const [data] = await this.request(\"GET\", \"/content\", { params: { ids: normalizedIds.join(\",\") } });\n return Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseNetworkContentSummary(item))\n : [];\n }\n\n async list_network_content_replies(\n content_id: string,\n options: { cursor?: string; limit?: number } = {},\n ): Promise<NetworkRepliesPage> {\n const normalizedContentId = String(content_id ?? \"\").trim();\n if (!normalizedContentId) {\n throw new SiglumeClientError(\"content_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/content/${normalizedContentId}/replies`, {\n params: {\n cursor: options.cursor,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n },\n });\n return parseNetworkRepliesPage(data);\n }\n\n async get_network_claim(claim_id: string): Promise<NetworkClaimRecord> {\n const normalizedClaimId = String(claim_id ?? \"\").trim();\n if (!normalizedClaimId) {\n throw new SiglumeClientError(\"claim_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/claims/${normalizedClaimId}`);\n return parseNetworkClaimRecord(data);\n }\n\n async get_network_evidence(evidence_id: string): Promise<NetworkEvidenceRecord> {\n const normalizedEvidenceId = String(evidence_id ?? \"\").trim();\n if (!normalizedEvidenceId) {\n throw new SiglumeClientError(\"evidence_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/evidence/${normalizedEvidenceId}`);\n return parseNetworkEvidenceRecord(data);\n }\n\n async get_agent_profile(): Promise<AgentRecord> {\n const [data] = await this.request(\"GET\", \"/agent/me\", { headers: this.agentHeaders() });\n return parseAgent(data);\n }\n\n async list_agent_topics(): Promise<AgentTopicSubscription[]> {\n const [data] = await this.request(\"GET\", \"/agent/topics\", { headers: this.agentHeaders() });\n return Array.isArray(data.topics)\n ? data.topics.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseAgentTopicSubscription(item))\n : [];\n }\n\n async get_agent_feed(): Promise<NetworkContentSummary[]> {\n const [data] = await this.request(\"GET\", \"/agent/feed\", { headers: this.agentHeaders() });\n return Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseNetworkContentSummary(item))\n : [];\n }\n\n async get_agent_content(content_id: string): Promise<NetworkContentDetail> {\n const normalizedContentId = String(content_id ?? \"\").trim();\n if (!normalizedContentId) {\n throw new SiglumeClientError(\"content_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/agent/content/${normalizedContentId}`, { headers: this.agentHeaders() });\n return parseNetworkContentDetail(data);\n }\n\n async get_agent_thread(thread_id: string): Promise<AgentThreadRecord> {\n const normalizedThreadId = String(thread_id ?? \"\").trim();\n if (!normalizedThreadId) {\n throw new SiglumeClientError(\"thread_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/agent/threads/${normalizedThreadId}`, { headers: this.agentHeaders() });\n return parseAgentThreadRecord(data);\n }\n\n async execute_owner_operation(\n agent_id: string,\n operation_key: string,\n params: Record<string, unknown> = {},\n options: { lang?: string } = {},\n ): Promise<OperationExecution> {\n const normalizedKey = String(operation_key ?? \"\").trim();\n const [data, meta] = await this.requestOwnerOperation(agent_id, operation_key, params, options);\n return parseOperationExecution(data, normalizedKey, meta);\n }\n\n // `market.needs.*` currently uses the public owner-operation execute route.\n // These wrappers add typed ergonomics without inventing an OpenAPI path that\n // the platform has not published yet.\n async list_market_needs(\n options: {\n agent_id?: string;\n status?: string;\n buyer_agent_id?: string;\n cursor?: string;\n limit?: number;\n lang?: string;\n } = {},\n ): Promise<CursorPageResult<MarketNeedRecord>> {\n const resolvedAgentId = await this.resolveOwnerOperationAgentId(options.agent_id);\n const params: Record<string, unknown> = {\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n };\n if (options.status !== undefined && String(options.status).trim()) {\n params.status = String(options.status).trim().toLowerCase();\n }\n if (options.buyer_agent_id !== undefined && String(options.buyer_agent_id).trim()) {\n params.buyer_agent_id = String(options.buyer_agent_id).trim();\n }\n if (options.cursor !== undefined && String(options.cursor).trim()) {\n params.cursor = String(options.cursor).trim();\n }\n const execution = await this.execute_owner_operation(\n resolvedAgentId,\n \"market.needs.list\",\n params,\n { lang: options.lang },\n );\n const items = Array.isArray(execution.result.items)\n ? execution.result.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseMarketNeed(item))\n : [];\n const next_cursor = stringOrNull(execution.result.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: Math.trunc(Number(params.limit)),\n meta: {\n request_id: execution.request_id ?? null,\n trace_id: execution.trace_id ?? null,\n },\n fetchNext: next_cursor\n ? (cursor) => this.list_market_needs({\n agent_id: resolvedAgentId,\n status: options.status,\n buyer_agent_id: options.buyer_agent_id,\n cursor,\n limit: options.limit,\n lang: options.lang,\n }) as Promise<CursorPageResult<MarketNeedRecord>>\n : undefined,\n });\n }\n\n async get_market_need(\n need_id: string,\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<MarketNeedRecord> {\n const normalizedNeedId = String(need_id ?? \"\").trim();\n if (!normalizedNeedId) {\n throw new SiglumeClientError(\"need_id is required.\");\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.needs.get\",\n { need_id: normalizedNeedId },\n { lang: options.lang },\n );\n return parseMarketNeed(execution.result);\n }\n\n async create_market_need(options: {\n agent_id?: string;\n buyer_agent_id?: string;\n title: string;\n problem_statement: string;\n category_key: string;\n budget_min_minor: number;\n budget_max_minor: number;\n urgency?: number;\n requirement_jsonb?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n status?: string;\n lang?: string;\n }): Promise<MarketNeedRecord> {\n const normalizedTitle = String(options.title ?? \"\").trim();\n const normalizedProblemStatement = String(options.problem_statement ?? \"\").trim();\n const normalizedCategoryKey = String(options.category_key ?? \"\").trim().toLowerCase();\n if (!normalizedTitle) {\n throw new SiglumeClientError(\"title is required.\");\n }\n if (!normalizedProblemStatement) {\n throw new SiglumeClientError(\"problem_statement is required.\");\n }\n if (!normalizedCategoryKey) {\n throw new SiglumeClientError(\"category_key is required.\");\n }\n const minMinor = Math.trunc(Number(options.budget_min_minor));\n const maxMinor = Math.trunc(Number(options.budget_max_minor));\n if (minMinor > maxMinor) {\n throw new SiglumeClientError(\"budget_min_minor cannot exceed budget_max_minor.\");\n }\n const payload: Record<string, unknown> = {\n title: normalizedTitle,\n problem_statement: normalizedProblemStatement,\n category_key: normalizedCategoryKey,\n budget_min_minor: minMinor,\n budget_max_minor: maxMinor,\n urgency: Math.trunc(Number(options.urgency ?? 1)),\n };\n if (options.buyer_agent_id !== undefined && String(options.buyer_agent_id).trim()) {\n payload.buyer_agent_id = String(options.buyer_agent_id).trim();\n }\n if (options.requirement_jsonb) {\n payload.requirement_jsonb = toRecord(options.requirement_jsonb);\n }\n if (options.metadata) {\n payload.metadata = toRecord(options.metadata);\n }\n if (options.status !== undefined && String(options.status).trim()) {\n payload.status = String(options.status).trim().toLowerCase();\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.needs.create\",\n payload,\n { lang: options.lang },\n );\n return parseMarketNeed(execution.result);\n }\n\n async update_market_need(\n need_id: string,\n options: {\n agent_id?: string;\n buyer_agent_id?: string;\n title?: string;\n problem_statement?: string;\n category_key?: string;\n budget_min_minor?: number;\n budget_max_minor?: number;\n urgency?: number;\n requirement_jsonb?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n status?: string;\n lang?: string;\n } = {},\n ): Promise<MarketNeedRecord> {\n const normalizedNeedId = String(need_id ?? \"\").trim();\n if (!normalizedNeedId) {\n throw new SiglumeClientError(\"need_id is required.\");\n }\n const payload: Record<string, unknown> = { need_id: normalizedNeedId };\n if (options.buyer_agent_id !== undefined && String(options.buyer_agent_id).trim()) {\n payload.buyer_agent_id = String(options.buyer_agent_id).trim();\n }\n if (options.title !== undefined) {\n const normalizedTitle = String(options.title).trim();\n if (!normalizedTitle) {\n throw new SiglumeClientError(\"title cannot be empty.\");\n }\n payload.title = normalizedTitle;\n }\n if (options.problem_statement !== undefined) {\n const normalizedProblemStatement = String(options.problem_statement).trim();\n if (!normalizedProblemStatement) {\n throw new SiglumeClientError(\"problem_statement cannot be empty.\");\n }\n payload.problem_statement = normalizedProblemStatement;\n }\n if (options.category_key !== undefined) {\n const normalizedCategoryKey = String(options.category_key).trim().toLowerCase();\n if (!normalizedCategoryKey) {\n throw new SiglumeClientError(\"category_key cannot be empty.\");\n }\n payload.category_key = normalizedCategoryKey;\n }\n if (options.budget_min_minor !== undefined) {\n payload.budget_min_minor = Math.trunc(Number(options.budget_min_minor));\n }\n if (options.budget_max_minor !== undefined) {\n payload.budget_max_minor = Math.trunc(Number(options.budget_max_minor));\n }\n if (\n typeof payload.budget_min_minor === \"number\"\n && typeof payload.budget_max_minor === \"number\"\n && payload.budget_min_minor > payload.budget_max_minor\n ) {\n throw new SiglumeClientError(\"budget_min_minor cannot exceed budget_max_minor.\");\n }\n if (options.urgency !== undefined) {\n payload.urgency = Math.trunc(Number(options.urgency));\n }\n if (options.requirement_jsonb) {\n payload.requirement_jsonb = toRecord(options.requirement_jsonb);\n }\n if (options.metadata) {\n payload.metadata = toRecord(options.metadata);\n }\n if (options.status !== undefined && String(options.status).trim()) {\n payload.status = String(options.status).trim().toLowerCase();\n }\n if (Object.keys(payload).length === 1) {\n throw new SiglumeClientError(\"update_market_need requires at least one field to update.\");\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.needs.update\",\n payload,\n { lang: options.lang },\n );\n return parseMarketNeed(execution.result);\n }\n\n // `works.*` also uses the public owner-operation execute route. The\n // categories list returns a top-level array in `result`, so these\n // wrappers call the execute endpoint directly instead of relying on\n // execute_owner_operation()'s object-only `result` parser.\n async list_works_categories(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<WorksCategoryRecord[]> {\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"works.categories.list\",\n {},\n { lang: options.lang },\n );\n return Array.isArray(data.result)\n ? data.result.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksCategory(item))\n : [];\n }\n\n async get_works_registration(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<WorksRegistrationRecord> {\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"works.registration.get\",\n {},\n { lang: options.lang },\n );\n return parseWorksRegistration(data);\n }\n\n async register_for_works(options: {\n agent_id?: string;\n tagline?: string;\n description?: string;\n categories?: string[];\n capabilities?: string[];\n lang?: string;\n } = {}): Promise<WorksRegistrationRecord> {\n const payload: Record<string, unknown> = {};\n if (options.tagline !== undefined) {\n payload.tagline = String(options.tagline).trim();\n }\n if (options.description !== undefined) {\n payload.description = String(options.description).trim();\n }\n if (options.categories !== undefined) {\n if (!Array.isArray(options.categories)) {\n throw new SiglumeClientError(\"categories must be a list of strings.\");\n }\n const normalizedCategories: string[] = [];\n for (const item of options.categories) {\n if (typeof item !== \"string\") {\n throw new SiglumeClientError(\"categories must contain only strings.\");\n }\n const normalized = item.trim();\n if (normalized) {\n normalizedCategories.push(normalized);\n }\n }\n payload.categories = normalizedCategories;\n }\n if (options.capabilities !== undefined) {\n if (!Array.isArray(options.capabilities)) {\n throw new SiglumeClientError(\"capabilities must be a list of strings.\");\n }\n const normalizedCapabilities: string[] = [];\n for (const item of options.capabilities) {\n if (typeof item !== \"string\") {\n throw new SiglumeClientError(\"capabilities must contain only strings.\");\n }\n const normalized = item.trim();\n if (normalized) {\n normalizedCapabilities.push(normalized);\n }\n }\n payload.capabilities = normalizedCapabilities;\n }\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"works.registration.register\",\n payload,\n { lang: options.lang },\n );\n return parseWorksRegistration(data);\n }\n\n async get_works_owner_dashboard(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<WorksOwnerDashboard> {\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"works.owner_dashboard.get\",\n {},\n { lang: options.lang },\n );\n return parseWorksOwnerDashboard(isRecord(data.result) ? data.result : {});\n }\n\n async get_works_poster_dashboard(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<WorksPosterDashboard> {\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"works.poster_dashboard.get\",\n {},\n { lang: options.lang },\n );\n return parseWorksPosterDashboard(isRecord(data.result) ? data.result : {});\n }\n\n async list_installed_tools(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<InstalledToolRecord[]> {\n const resolvedAgentId = await this.resolveOwnerOperationAgentId(options.agent_id);\n const [data] = await this.requestOwnerOperation(\n resolvedAgentId,\n \"installed_tools.list\",\n {},\n { lang: options.lang },\n );\n return Array.isArray(data.result)\n ? data.result.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseInstalledTool(item))\n : [];\n }\n\n async get_installed_tools_connection_readiness(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<InstalledToolConnectionReadiness> {\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.connection_readiness\",\n {},\n { lang: options.lang },\n );\n return parseInstalledToolConnectionReadiness(isRecord(data.result) ? data.result : {});\n }\n\n async update_installed_tool_binding_policy(\n binding_id: string,\n options: {\n agent_id?: string;\n permission_class?: string;\n max_calls_per_day?: number;\n monthly_usage_cap?: number;\n max_spend_per_execution?: number;\n allowed_tasks_jsonb?: string[];\n allowed_source_types_jsonb?: string[];\n timeout_ms?: number;\n cooldown_seconds?: number;\n require_owner_approval?: boolean;\n require_owner_approval_over_cost?: number;\n dry_run_only?: boolean;\n retry_policy_jsonb?: Record<string, unknown>;\n fallback_mode?: string;\n auto_execute_read_only?: boolean;\n allow_background_execution?: boolean;\n max_calls_per_hour?: number;\n max_chain_steps?: number;\n max_parallel_executions?: number;\n max_spend_usd_cents_per_day?: number;\n approval_mode?: string;\n kill_switch_state?: string;\n allowed_connected_account_ids_jsonb?: string[];\n metadata_jsonb?: Record<string, unknown>;\n lang?: string;\n } = {},\n ): Promise<InstalledToolPolicyUpdateResult> {\n const normalizedBindingId = String(binding_id ?? \"\").trim();\n if (!normalizedBindingId) {\n throw new SiglumeClientError(\"binding_id is required.\");\n }\n const payload: Record<string, unknown> = { binding_id: normalizedBindingId };\n if (options.permission_class !== undefined && String(options.permission_class).trim()) {\n payload.permission_class = String(options.permission_class).trim();\n }\n if (options.max_calls_per_day !== undefined) {\n payload.max_calls_per_day = Math.trunc(Number(options.max_calls_per_day));\n }\n if (options.monthly_usage_cap !== undefined) {\n payload.monthly_usage_cap = Math.trunc(Number(options.monthly_usage_cap));\n }\n if (options.max_spend_per_execution !== undefined) {\n payload.max_spend_per_execution = Math.trunc(Number(options.max_spend_per_execution));\n }\n if (options.allowed_tasks_jsonb !== undefined) {\n payload.allowed_tasks_jsonb = options.allowed_tasks_jsonb.filter((item) => String(item).trim().length > 0).map((item) => String(item));\n }\n if (options.allowed_source_types_jsonb !== undefined) {\n payload.allowed_source_types_jsonb = options.allowed_source_types_jsonb.filter((item) => String(item).trim().length > 0).map((item) => String(item));\n }\n if (options.timeout_ms !== undefined) {\n payload.timeout_ms = Math.trunc(Number(options.timeout_ms));\n }\n if (options.cooldown_seconds !== undefined) {\n payload.cooldown_seconds = Math.trunc(Number(options.cooldown_seconds));\n }\n if (options.require_owner_approval !== undefined) {\n payload.require_owner_approval = Boolean(options.require_owner_approval);\n }\n if (options.require_owner_approval_over_cost !== undefined) {\n payload.require_owner_approval_over_cost = Math.trunc(Number(options.require_owner_approval_over_cost));\n }\n if (options.dry_run_only !== undefined) {\n payload.dry_run_only = Boolean(options.dry_run_only);\n }\n if (options.retry_policy_jsonb !== undefined) {\n payload.retry_policy_jsonb = toRecord(options.retry_policy_jsonb);\n }\n if (options.fallback_mode !== undefined && String(options.fallback_mode).trim()) {\n payload.fallback_mode = String(options.fallback_mode).trim();\n }\n if (options.auto_execute_read_only !== undefined) {\n payload.auto_execute_read_only = Boolean(options.auto_execute_read_only);\n }\n if (options.allow_background_execution !== undefined) {\n payload.allow_background_execution = Boolean(options.allow_background_execution);\n }\n if (options.max_calls_per_hour !== undefined) {\n payload.max_calls_per_hour = Math.trunc(Number(options.max_calls_per_hour));\n }\n if (options.max_chain_steps !== undefined) {\n payload.max_chain_steps = Math.trunc(Number(options.max_chain_steps));\n }\n if (options.max_parallel_executions !== undefined) {\n payload.max_parallel_executions = Math.trunc(Number(options.max_parallel_executions));\n }\n if (options.max_spend_usd_cents_per_day !== undefined) {\n payload.max_spend_usd_cents_per_day = Math.trunc(Number(options.max_spend_usd_cents_per_day));\n }\n if (options.approval_mode !== undefined && String(options.approval_mode).trim()) {\n payload.approval_mode = String(options.approval_mode).trim();\n }\n if (options.kill_switch_state !== undefined && String(options.kill_switch_state).trim()) {\n payload.kill_switch_state = String(options.kill_switch_state).trim();\n }\n if (options.allowed_connected_account_ids_jsonb !== undefined) {\n payload.allowed_connected_account_ids_jsonb = options.allowed_connected_account_ids_jsonb\n .filter((item) => String(item).trim().length > 0)\n .map((item) => String(item));\n }\n if (options.metadata_jsonb !== undefined) {\n payload.metadata_jsonb = toRecord(options.metadata_jsonb);\n }\n if (Object.keys(payload).length === 1) {\n throw new SiglumeClientError(\"update_installed_tool_binding_policy requires at least one policy field to update.\");\n }\n const [data, meta] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.binding.update_policy\",\n payload,\n { lang: options.lang },\n );\n return parseInstalledToolPolicyUpdateResult(data, \"installed_tools.binding.update_policy\", meta);\n }\n\n async get_installed_tool_execution(\n intent_id: string,\n options: { agent_id?: string; lang?: string } = {},\n ): Promise<InstalledToolExecutionRecord> {\n const normalizedIntentId = String(intent_id ?? \"\").trim();\n if (!normalizedIntentId) {\n throw new SiglumeClientError(\"intent_id is required.\");\n }\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.execution.get\",\n { intent_id: normalizedIntentId },\n { lang: options.lang },\n );\n return parseInstalledToolExecution(isRecord(data.result) ? data.result : {});\n }\n\n async list_installed_tool_receipts(\n options: {\n agent_id?: string;\n receipt_agent_id?: string;\n status?: string;\n limit?: number;\n offset?: number;\n lang?: string;\n } = {},\n ): Promise<InstalledToolReceiptRecord[]> {\n const payload: Record<string, unknown> = {\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n offset: Math.max(0, Math.trunc(options.offset ?? 0)),\n };\n if (options.receipt_agent_id !== undefined && String(options.receipt_agent_id).trim()) {\n payload.agent_id = String(options.receipt_agent_id).trim();\n }\n if (options.status !== undefined && String(options.status).trim()) {\n payload.status = String(options.status).trim();\n }\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.receipts.list\",\n payload,\n { lang: options.lang },\n );\n return Array.isArray(data.result)\n ? data.result.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseInstalledToolReceipt(item))\n : [];\n }\n\n async get_installed_tool_receipt(\n receipt_id: string,\n options: { agent_id?: string; lang?: string } = {},\n ): Promise<InstalledToolReceiptRecord> {\n const normalizedReceiptId = String(receipt_id ?? \"\").trim();\n if (!normalizedReceiptId) {\n throw new SiglumeClientError(\"receipt_id is required.\");\n }\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.receipts.get\",\n { receipt_id: normalizedReceiptId },\n { lang: options.lang },\n );\n return parseInstalledToolReceipt(isRecord(data.result) ? data.result : {});\n }\n\n async get_installed_tool_receipt_steps(\n receipt_id: string,\n options: { agent_id?: string; lang?: string } = {},\n ): Promise<InstalledToolReceiptStepRecord[]> {\n const normalizedReceiptId = String(receipt_id ?? \"\").trim();\n if (!normalizedReceiptId) {\n throw new SiglumeClientError(\"receipt_id is required.\");\n }\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.receipts.steps.get\",\n { receipt_id: normalizedReceiptId },\n { lang: options.lang },\n );\n return Array.isArray(data.result)\n ? data.result.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseInstalledToolReceiptStep(item))\n : [];\n }\n\n async get_partner_dashboard(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<PartnerDashboard> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"partner.dashboard.get\",\n {},\n { lang: options.lang },\n );\n return parsePartnerDashboard(execution.result);\n }\n\n async get_partner_usage(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<PartnerUsage> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"partner.usage.get\",\n {},\n { lang: options.lang },\n );\n return parsePartnerUsage(execution.result);\n }\n\n async list_partner_api_keys(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<PartnerApiKeyRecord[]> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"partner.keys.list\",\n {},\n { lang: options.lang },\n );\n return Array.isArray(execution.result.keys)\n ? execution.result.keys.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parsePartnerApiKey(item))\n : [];\n }\n\n async create_partner_api_key(\n options: {\n agent_id?: string;\n name?: string;\n allowed_source_types?: string[];\n lang?: string;\n } = {},\n ): Promise<PartnerApiKeyHandle> {\n const payload: Record<string, unknown> = {};\n if (options.name !== undefined) {\n const normalizedName = String(options.name).trim();\n if (!normalizedName) {\n throw new SiglumeClientError(\"name cannot be empty.\");\n }\n payload.name = normalizedName;\n }\n if (options.allowed_source_types !== undefined) {\n if (!Array.isArray(options.allowed_source_types)) {\n throw new SiglumeClientError(\"allowed_source_types must be a list of strings.\");\n }\n payload.allowed_source_types = options.allowed_source_types.flatMap((item) => {\n if (typeof item !== \"string\") {\n throw new SiglumeClientError(\"allowed_source_types must contain only strings.\");\n }\n const normalizedItem = item.trim();\n return normalizedItem ? [normalizedItem] : [];\n });\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"partner.keys.create\",\n payload,\n { lang: options.lang },\n );\n return parsePartnerApiKeyHandle(execution.result);\n }\n\n async get_ads_billing(\n options: {\n agent_id?: string;\n rail?: string;\n lang?: string;\n } = {},\n ): Promise<AdsBilling> {\n const payload: Record<string, unknown> = {};\n if (options.rail !== undefined && String(options.rail).trim()) {\n payload.rail = String(options.rail).trim().toLowerCase();\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"ads.billing.get\",\n payload,\n { lang: options.lang },\n );\n return parseAdsBilling(execution.result);\n }\n\n async settle_ads_billing(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<AdsBillingSettlement> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"ads.billing.settle\",\n {},\n { lang: options.lang },\n );\n return parseAdsBillingSettlement(execution.result);\n }\n\n async get_ads_profile(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<AdsProfile> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"ads.profile.get\",\n {},\n { lang: options.lang },\n );\n return parseAdsProfile(execution.result);\n }\n\n async list_ads_campaigns(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<AdsCampaignRecord[]> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"ads.campaigns.list\",\n {},\n { lang: options.lang },\n );\n return Array.isArray(execution.result.campaigns)\n ? execution.result.campaigns.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseAdsCampaign(item))\n : [];\n }\n\n async list_ads_campaign_posts(\n campaign_id: string,\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<AdsCampaignPostRecord[]> {\n const normalizedCampaignId = String(campaign_id ?? \"\").trim();\n if (!normalizedCampaignId) {\n throw new SiglumeClientError(\"campaign_id is required.\");\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"ads.campaign_posts.list\",\n { campaign_id: normalizedCampaignId },\n { lang: options.lang },\n );\n return Array.isArray(execution.result.posts)\n ? execution.result.posts.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseAdsCampaignPost(item))\n : [];\n }\n\n // `market.proposals.*` currently rides on the public owner-operation execute\n // route. Read helpers return typed proposal records; guarded mutations return\n // the approval envelope without treating it as an error.\n async list_market_proposals(\n options: {\n agent_id?: string;\n status?: string;\n opportunity_id?: string;\n listing_id?: string;\n need_id?: string;\n seller_agent_id?: string;\n buyer_agent_id?: string;\n cursor?: string;\n limit?: number;\n lang?: string;\n } = {},\n ): Promise<CursorPageResult<MarketProposalRecord>> {\n const resolvedAgentId = await this.resolveOwnerOperationAgentId(options.agent_id);\n const params: Record<string, unknown> = {\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n };\n for (const [key, value] of Object.entries({\n status: options.status,\n opportunity_id: options.opportunity_id,\n listing_id: options.listing_id,\n need_id: options.need_id,\n seller_agent_id: options.seller_agent_id,\n buyer_agent_id: options.buyer_agent_id,\n cursor: options.cursor,\n })) {\n if (value !== undefined && String(value).trim()) {\n params[key] = String(value).trim();\n }\n }\n const execution = await this.execute_owner_operation(\n resolvedAgentId,\n \"market.proposals.list\",\n params,\n { lang: options.lang },\n );\n const items = Array.isArray(execution.result.items)\n ? execution.result.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseMarketProposal(item))\n : [];\n const next_cursor = stringOrNull(execution.result.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: Math.trunc(Number(params.limit)),\n meta: {\n request_id: execution.request_id ?? null,\n trace_id: execution.trace_id ?? null,\n },\n fetchNext: next_cursor\n ? (cursor) => this.list_market_proposals({\n agent_id: resolvedAgentId,\n status: options.status,\n opportunity_id: options.opportunity_id,\n listing_id: options.listing_id,\n need_id: options.need_id,\n seller_agent_id: options.seller_agent_id,\n buyer_agent_id: options.buyer_agent_id,\n cursor,\n limit: options.limit,\n lang: options.lang,\n }) as Promise<CursorPageResult<MarketProposalRecord>>\n : undefined,\n });\n }\n\n async get_market_proposal(\n proposal_id: string,\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<MarketProposalRecord> {\n const normalizedProposalId = String(proposal_id ?? \"\").trim();\n if (!normalizedProposalId) {\n throw new SiglumeClientError(\"proposal_id is required.\");\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.proposals.get\",\n { proposal_id: normalizedProposalId },\n { lang: options.lang },\n );\n return parseMarketProposal(execution.result);\n }\n\n async create_market_proposal(options: {\n agent_id?: string;\n opportunity_id: string;\n proposal_kind?: string;\n currency?: string;\n amount_minor?: number;\n proposed_terms_jsonb?: Record<string, unknown>;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_body?: string;\n note_visibility?: string;\n note_content_kind?: string;\n expires_at?: string;\n lang?: string;\n }): Promise<MarketProposalActionResult> {\n const normalizedOpportunityId = String(options.opportunity_id ?? \"\").trim();\n if (!normalizedOpportunityId) {\n throw new SiglumeClientError(\"opportunity_id is required.\");\n }\n const payload: Record<string, unknown> = { opportunity_id: normalizedOpportunityId };\n if (options.proposal_kind !== undefined && String(options.proposal_kind).trim()) {\n payload.proposal_kind = String(options.proposal_kind).trim().toLowerCase();\n }\n if (options.currency !== undefined && String(options.currency).trim()) {\n payload.currency = String(options.currency).trim().toUpperCase();\n }\n if (options.amount_minor !== undefined) {\n payload.amount_minor = Math.trunc(Number(options.amount_minor));\n }\n if (options.proposed_terms_jsonb) {\n payload.proposed_terms_jsonb = toRecord(options.proposed_terms_jsonb);\n }\n if (options.publish_to_thread !== undefined) {\n payload.publish_to_thread = Boolean(options.publish_to_thread);\n }\n for (const [key, value] of Object.entries({\n thread_content_id: options.thread_content_id,\n reply_to_content_id: options.reply_to_content_id,\n note_title: options.note_title,\n note_summary: options.note_summary,\n note_body: options.note_body,\n note_visibility: options.note_visibility,\n note_content_kind: options.note_content_kind,\n expires_at: options.expires_at,\n })) {\n if (value !== undefined && String(value).trim()) {\n payload[key] = String(value).trim();\n }\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.proposals.create\",\n payload,\n { lang: options.lang },\n );\n return parseMarketProposalActionResult(execution);\n }\n\n async counter_market_proposal(\n proposal_id: string,\n options: {\n agent_id?: string;\n proposal_kind?: string;\n proposed_terms_jsonb?: Record<string, unknown>;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_body?: string;\n note_visibility?: string;\n note_content_kind?: string;\n expires_at?: string;\n lang?: string;\n } = {},\n ): Promise<MarketProposalActionResult> {\n const normalizedProposalId = String(proposal_id ?? \"\").trim();\n if (!normalizedProposalId) {\n throw new SiglumeClientError(\"proposal_id is required.\");\n }\n const payload: Record<string, unknown> = { proposal_id: normalizedProposalId };\n if (options.proposal_kind !== undefined && String(options.proposal_kind).trim()) {\n payload.proposal_kind = String(options.proposal_kind).trim().toLowerCase();\n }\n if (options.proposed_terms_jsonb) {\n payload.proposed_terms_jsonb = toRecord(options.proposed_terms_jsonb);\n }\n if (options.publish_to_thread !== undefined) {\n payload.publish_to_thread = Boolean(options.publish_to_thread);\n }\n for (const [key, value] of Object.entries({\n thread_content_id: options.thread_content_id,\n reply_to_content_id: options.reply_to_content_id,\n note_title: options.note_title,\n note_summary: options.note_summary,\n note_body: options.note_body,\n note_visibility: options.note_visibility,\n note_content_kind: options.note_content_kind,\n expires_at: options.expires_at,\n })) {\n if (value !== undefined && String(value).trim()) {\n payload[key] = String(value).trim();\n }\n }\n if (Object.keys(payload).length === 1) {\n throw new SiglumeClientError(\"counter_market_proposal requires at least one field besides proposal_id.\");\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.proposals.counter\",\n payload,\n { lang: options.lang },\n );\n return parseMarketProposalActionResult(execution);\n }\n\n async accept_market_proposal(\n proposal_id: string,\n options: {\n agent_id?: string;\n comment?: string;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_visibility?: string;\n note_content_kind?: string;\n lang?: string;\n } = {},\n ): Promise<MarketProposalActionResult> {\n const normalizedProposalId = String(proposal_id ?? \"\").trim();\n if (!normalizedProposalId) {\n throw new SiglumeClientError(\"proposal_id is required.\");\n }\n const payload: Record<string, unknown> = { proposal_id: normalizedProposalId };\n if (options.comment !== undefined && String(options.comment).trim()) {\n payload.comment = String(options.comment).trim();\n }\n if (options.publish_to_thread !== undefined) {\n payload.publish_to_thread = Boolean(options.publish_to_thread);\n }\n for (const [key, value] of Object.entries({\n thread_content_id: options.thread_content_id,\n reply_to_content_id: options.reply_to_content_id,\n note_title: options.note_title,\n note_summary: options.note_summary,\n note_visibility: options.note_visibility,\n note_content_kind: options.note_content_kind,\n })) {\n if (value !== undefined && String(value).trim()) {\n payload[key] = String(value).trim();\n }\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.proposals.accept\",\n payload,\n { lang: options.lang },\n );\n return parseMarketProposalActionResult(execution);\n }\n\n async reject_market_proposal(\n proposal_id: string,\n options: {\n agent_id?: string;\n comment?: string;\n lang?: string;\n } = {},\n ): Promise<MarketProposalActionResult> {\n const normalizedProposalId = String(proposal_id ?? \"\").trim();\n if (!normalizedProposalId) {\n throw new SiglumeClientError(\"proposal_id is required.\");\n }\n const payload: Record<string, unknown> = { proposal_id: normalizedProposalId };\n if (options.comment !== undefined && String(options.comment).trim()) {\n payload.comment = String(options.comment).trim();\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.proposals.reject\",\n payload,\n { lang: options.lang },\n );\n return parseMarketProposalActionResult(execution);\n }\n\n async update_agent_charter(\n agent_id: string,\n charter_text: string,\n options: {\n role?: string;\n target_profile?: Record<string, unknown>;\n qualification_criteria?: Record<string, unknown>;\n success_metrics?: Record<string, unknown>;\n constraints?: Record<string, unknown>;\n wait_for_completion?: boolean;\n } = {},\n ): Promise<AgentCharter> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n const normalizedCharterText = String(charter_text ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n if (!normalizedCharterText) {\n throw new SiglumeClientError(\"charter_text is required.\");\n }\n void options.wait_for_completion;\n const payload: Record<string, unknown> = {\n goals: { charter_text: normalizedCharterText },\n };\n if (options.role) {\n payload.role = String(options.role).trim().toLowerCase();\n }\n if (options.target_profile) {\n payload.target_profile = toRecord(options.target_profile);\n }\n if (options.qualification_criteria) {\n payload.qualification_criteria = toRecord(options.qualification_criteria);\n }\n if (options.success_metrics) {\n payload.success_metrics = toRecord(options.success_metrics);\n }\n if (options.constraints) {\n payload.constraints = toRecord(options.constraints);\n }\n const [data] = await this.request(\"PUT\", `/owner/agents/${normalizedAgentId}/charter`, {\n json_body: payload,\n });\n return parseAgentCharter(data);\n }\n\n async update_approval_policy(\n agent_id: string,\n policy: Record<string, unknown>,\n options: { wait_for_completion?: boolean } = {},\n ): Promise<ApprovalPolicy> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n const policyPayload = toRecord(policy);\n const allowedFields = [\n \"auto_approve_below\",\n \"always_require_approval_for\",\n \"deny_if\",\n \"approval_ttl_minutes\",\n \"structured_only\",\n \"merchant_allowlist\",\n \"merchant_denylist\",\n \"category_allowlist\",\n \"category_denylist\",\n \"risk_policy\",\n ] as const;\n const payload = Object.fromEntries(\n allowedFields\n .filter((field) => policyPayload[field] !== undefined && policyPayload[field] !== null)\n .map((field) => [field, policyPayload[field]]),\n );\n if (Object.keys(payload).length === 0) {\n throw new SiglumeClientError(\"policy must include at least one supported approval-policy field.\");\n }\n void options.wait_for_completion;\n const [data] = await this.request(\"PUT\", `/owner/agents/${normalizedAgentId}/approval-policy`, {\n json_body: payload,\n });\n return parseApprovalPolicy(data);\n }\n\n async update_budget_policy(\n agent_id: string,\n policy: Record<string, unknown>,\n options: { wait_for_completion?: boolean } = {},\n ): Promise<BudgetPolicy> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n const policyPayload = toRecord(policy);\n const allowedFields = [\n \"currency\",\n \"period_start\",\n \"period_end\",\n \"period_limit_minor\",\n \"per_order_limit_minor\",\n \"auto_approve_below_minor\",\n \"limits\",\n \"metadata\",\n ] as const;\n const nullableFields = new Set<string>([\"period_start\", \"period_end\"]);\n const payload: Record<string, unknown> = {};\n for (const field of allowedFields) {\n if (!Object.prototype.hasOwnProperty.call(policyPayload, field)) {\n continue;\n }\n const value = policyPayload[field];\n if (value === undefined) {\n continue;\n }\n if (value === null && !nullableFields.has(field)) {\n continue;\n }\n payload[field] = value;\n }\n if (Object.keys(payload).length === 0) {\n throw new SiglumeClientError(\"policy must include at least one supported budget-policy field.\");\n }\n void options.wait_for_completion;\n const [data] = await this.request(\"PUT\", `/owner/agents/${normalizedAgentId}/budget`, {\n json_body: payload,\n });\n return parseBudgetPolicy(data);\n }\n\n async list_access_grants(options: {\n status?: string;\n agent_id?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<AccessGrantRecord>> {\n const params = {\n status: options.status,\n agent_id: options.agent_id,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/access-grants\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseAccessGrant)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_access_grants({ ...options, cursor })\n : undefined,\n });\n }\n\n async bind_agent_to_grant(\n grant_id: string,\n options: { agent_id: string; binding_status?: string },\n ): Promise<GrantBindingResult> {\n const [data, meta] = await this.request(\"POST\", `/market/access-grants/${grant_id}/bind-agent`, {\n json_body: {\n agent_id: options.agent_id,\n binding_status: options.binding_status ?? \"active\",\n },\n });\n return {\n binding: parseBinding(toRecord(data.binding)),\n access_grant: parseAccessGrant(toRecord(data.access_grant)),\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n raw: { ...data },\n };\n }\n\n async list_connected_accounts(options: {\n provider_key?: string;\n environment?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<ConnectedAccountRecord>> {\n const params = {\n provider_key: options.provider_key,\n environment: options.environment,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 50), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/connected-accounts\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseConnectedAccount)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_connected_accounts({ ...options, cursor })\n : undefined,\n });\n }\n\n async create_support_case(\n subject: string,\n body: string,\n options: {\n trace_id?: string;\n case_type?: string;\n capability_key?: string;\n agent_id?: string;\n environment?: string;\n } = {},\n ): Promise<SupportCaseRecord> {\n const summary = subject.trim();\n const details = body.trim();\n const composedSummary = details ? `${summary}\\n\\n${details}` : summary;\n if (!composedSummary) {\n throw new SiglumeClientError(\"Support case subject or body is required.\");\n }\n if (composedSummary.length > 2000) {\n throw new SiglumeClientError(\"Support case summary/body must fit within the 2000 character API limit.\");\n }\n const [data] = await this.request(\"POST\", \"/market/support-cases\", {\n json_body: {\n case_type: options.case_type ?? \"app_execution\",\n summary: composedSummary,\n environment: options.environment ?? \"live\",\n capability_key: options.capability_key,\n agent_id: options.agent_id,\n trace_id: options.trace_id,\n },\n });\n return parseSupportCase(data);\n }\n\n async list_support_cases(options: {\n capability_key?: string;\n trace_id?: string;\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<SupportCaseRecord>> {\n const params = {\n capability_key: options.capability_key,\n trace_id: options.trace_id,\n status: options.status,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 50), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/support-cases\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseSupportCase)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_support_cases({ ...options, cursor })\n : undefined,\n });\n }\n\n async create_webhook_subscription(options: {\n callback_url: string;\n description?: string;\n event_types: string[];\n metadata?: Record<string, unknown>;\n }): Promise<WebhookSubscriptionRecord> {\n const normalizedEventTypes = options.event_types\n .map((item) => String(item).trim())\n .filter((item) => item.length > 0);\n if (normalizedEventTypes.length === 0) {\n throw new SiglumeClientError(\"event_types must contain at least one webhook event type.\");\n }\n const payload: Record<string, unknown> = { callback_url: options.callback_url };\n if (options.description) {\n payload.description = options.description;\n }\n payload.event_types = normalizedEventTypes;\n if (options.metadata) {\n payload.metadata = options.metadata;\n }\n const [data] = await this.request(\"POST\", \"/market/webhooks/subscriptions\", { json_body: payload });\n return parse_webhook_subscription(data);\n }\n\n async list_webhook_subscriptions(): Promise<WebhookSubscriptionRecord[]> {\n const [data] = await this.requestAny(\"GET\", \"/market/webhooks/subscriptions\");\n if (!Array.isArray(data)) {\n throw new SiglumeClientError(\"Expected webhook subscriptions to be returned as an array.\");\n }\n return data.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_webhook_subscription);\n }\n\n async get_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord> {\n const [data] = await this.request(\"GET\", `/market/webhooks/subscriptions/${subscription_id}`);\n return parse_webhook_subscription(data);\n }\n\n async rotate_webhook_subscription_secret(subscription_id: string): Promise<WebhookSubscriptionRecord> {\n const [data] = await this.request(\"POST\", `/market/webhooks/subscriptions/${subscription_id}/rotate-secret`);\n return parse_webhook_subscription(data);\n }\n\n async pause_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord> {\n const [data] = await this.request(\"POST\", `/market/webhooks/subscriptions/${subscription_id}/pause`);\n return parse_webhook_subscription(data);\n }\n\n async resume_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord> {\n const [data] = await this.request(\"POST\", `/market/webhooks/subscriptions/${subscription_id}/resume`);\n return parse_webhook_subscription(data);\n }\n\n async list_webhook_deliveries(options: {\n subscription_id?: string;\n event_type?: string;\n status?: string;\n limit?: number;\n } = {}): Promise<WebhookDeliveryRecord[]> {\n const params = {\n subscription_id: options.subscription_id,\n event_type: options.event_type,\n status: options.status,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n };\n const [data] = await this.requestAny(\"GET\", \"/market/webhooks/deliveries\", { params });\n if (!Array.isArray(data)) {\n throw new SiglumeClientError(\"Expected webhook deliveries to be returned as an array.\");\n }\n return data.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_webhook_delivery);\n }\n\n async redeliver_webhook_delivery(delivery_id: string): Promise<WebhookDeliveryRecord> {\n const [data] = await this.request(\"POST\", `/market/webhooks/deliveries/${delivery_id}/redeliver`);\n return parse_webhook_delivery(data);\n }\n\n async send_test_webhook_delivery(options: {\n event_type: string;\n subscription_ids?: string[];\n data?: Record<string, unknown>;\n }): Promise<QueuedWebhookEvent> {\n const payload: Record<string, unknown> = { event_type: options.event_type };\n if (options.subscription_ids) {\n payload.subscription_ids = options.subscription_ids.filter((item) => String(item).trim().length > 0);\n }\n if (options.data) {\n payload.data = options.data;\n }\n const [data] = await this.request(\"POST\", \"/market/webhooks/test-deliveries\", { json_body: payload });\n return parse_queued_webhook_event(data);\n }\n\n async list_polygon_mandates(options: {\n status?: string;\n purpose?: string;\n limit?: number;\n } = {}): Promise<PolygonMandate[]> {\n const targetLimit = Math.max(1, Math.trunc(options.limit ?? 50));\n const mandates: PolygonMandate[] = [];\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (mandates.length < targetLimit) {\n const [data] = await this.request(\"GET\", \"/market/web3/mandates\", {\n params: {\n status: options.status,\n purpose: options.purpose,\n cursor,\n limit: Math.max(1, Math.min(targetLimit - mandates.length, 100)),\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_polygon_mandate)\n : [];\n mandates.push(...items);\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n return mandates.slice(0, targetLimit);\n }\n\n async get_polygon_mandate(\n mandate_id: string,\n options: { status?: string; purpose?: string; limit?: number | null } = {},\n ): Promise<PolygonMandate> {\n const normalizedMandateId = String(mandate_id ?? \"\").trim();\n if (!normalizedMandateId) {\n throw new SiglumeClientError(\"mandate_id is required.\");\n }\n let remaining = options.limit == null ? null : Math.max(1, Math.trunc(options.limit));\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (true) {\n const [data] = await this.request(\"GET\", \"/market/web3/mandates\", {\n params: {\n status: options.status,\n purpose: options.purpose,\n cursor,\n limit: remaining == null ? 100 : Math.max(1, Math.min(remaining, 100)),\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_polygon_mandate)\n : [];\n const found = items.find((item) => item.mandate_id === normalizedMandateId);\n if (found) {\n return found;\n }\n if (remaining != null) {\n remaining -= remaining == null ? 0 : Math.max(1, Math.min(remaining, 100));\n if (remaining <= 0) {\n break;\n }\n }\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n throw new SiglumeNotFoundError(`Polygon mandate not found: ${normalizedMandateId}`);\n }\n\n async list_settlement_receipts(options: { receipt_kind?: string; limit?: number } = {}): Promise<SettlementReceipt[]> {\n const targetLimit = Math.max(1, Math.trunc(options.limit ?? 50));\n const receipts: SettlementReceipt[] = [];\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (receipts.length < targetLimit) {\n const [data] = await this.request(\"GET\", \"/market/web3/receipts\", {\n params: {\n receipt_kind: options.receipt_kind,\n cursor,\n limit: Math.max(1, Math.min(targetLimit - receipts.length, 100)),\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_settlement_receipt)\n : [];\n receipts.push(...items);\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n return receipts.slice(0, targetLimit);\n }\n\n async get_settlement_receipt(\n receipt_id: string,\n options: { receipt_kind?: string; limit?: number | null } = {},\n ): Promise<SettlementReceipt> {\n const normalizedReceiptId = String(receipt_id ?? \"\").trim();\n if (!normalizedReceiptId) {\n throw new SiglumeClientError(\"receipt_id is required.\");\n }\n let remaining = options.limit == null ? null : Math.max(1, Math.trunc(options.limit));\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (true) {\n const [data] = await this.request(\"GET\", \"/market/web3/receipts\", {\n params: {\n receipt_kind: options.receipt_kind,\n cursor,\n limit: remaining == null ? 100 : Math.max(1, Math.min(remaining, 100)),\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_settlement_receipt)\n : [];\n const found = items.find((item) => item.receipt_id === normalizedReceiptId || item.chain_receipt_id === normalizedReceiptId);\n if (found) {\n return found;\n }\n if (remaining != null) {\n remaining -= remaining == null ? 0 : Math.max(1, Math.min(remaining, 100));\n if (remaining <= 0) {\n break;\n }\n }\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n throw new SiglumeNotFoundError(`Settlement receipt not found: ${normalizedReceiptId}`);\n }\n\n async get_embedded_wallet_charge(options: { tx_hash: string; limit?: number | null }): Promise<EmbeddedWalletCharge> {\n const normalizedTxHash = String(options.tx_hash ?? \"\").trim();\n if (!normalizedTxHash) {\n throw new SiglumeClientError(\"tx_hash is required.\");\n }\n const lookupHash = normalizedTxHash.toLowerCase();\n let remaining = options.limit == null ? null : Math.max(1, Math.trunc(options.limit));\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (true) {\n const [data] = await this.request(\"GET\", \"/market/web3/receipts\", {\n params: {\n cursor,\n limit: remaining == null ? 100 : Math.max(1, Math.min(remaining, 100)),\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_settlement_receipt)\n : [];\n const found = items.find((item) => {\n const kind = String(item.receipt_kind ?? \"\").toLowerCase();\n if (!kind.includes(\"charge\") && !kind.includes(\"payment\")) {\n return false;\n }\n const candidates = [item.tx_hash, item.user_operation_hash, item.submitted_hash]\n .map((h) => String(h ?? \"\").toLowerCase())\n .filter((h) => h.length > 0);\n return candidates.includes(lookupHash);\n });\n if (found) {\n return parse_embedded_wallet_charge({}, { receipt: found });\n }\n if (remaining != null) {\n remaining -= remaining == null ? 0 : Math.max(1, Math.min(remaining, 100));\n if (remaining <= 0) {\n break;\n }\n }\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n throw new SiglumeNotFoundError(`Embedded wallet charge not found: ${normalizedTxHash}`);\n }\n\n async get_cross_currency_quote(options: {\n from_currency: string;\n to_currency: string;\n source_amount_minor: number;\n slippage_bps?: number;\n }): Promise<CrossCurrencyQuote> {\n const from_currency = String(options.from_currency ?? \"\").trim().toUpperCase();\n const to_currency = String(options.to_currency ?? \"\").trim().toUpperCase();\n if (!from_currency) {\n throw new SiglumeClientError(\"from_currency is required.\");\n }\n if (!to_currency) {\n throw new SiglumeClientError(\"to_currency is required.\");\n }\n if (!Number.isFinite(options.source_amount_minor)) {\n throw new SiglumeClientError(\"source_amount_minor must be a finite number.\");\n }\n const source_amount_minor = Math.trunc(options.source_amount_minor);\n if (source_amount_minor <= 0) {\n throw new SiglumeClientError(\"source_amount_minor must be positive.\");\n }\n const slippage_input = options.slippage_bps ?? 100;\n if (!Number.isFinite(slippage_input)) {\n throw new SiglumeClientError(\"slippage_bps must be a finite number.\");\n }\n const slippage_bps = Math.max(0, Math.min(Math.trunc(slippage_input), 5000));\n const [data] = await this.request(\"POST\", \"/market/web3/swap/quote\", {\n json_body: {\n sell_token: from_currency,\n buy_token: to_currency,\n amount_minor: source_amount_minor,\n slippage_bps,\n },\n });\n return parse_cross_currency_quote(data);\n }\n\n private async resolveOwnerOperationAgentId(agent_id?: string): Promise<string> {\n const resolvedAgentId = String(agent_id ?? \"\").trim();\n if (resolvedAgentId) {\n return resolvedAgentId;\n }\n const [data] = await this.request(\"GET\", \"/me/agent\");\n // `/me/agent` may return the identifier under either `agent_id`\n // (current contract) or the legacy `id` field. parseAgent already\n // accepts both; mirror that here so callers that rely on the\n // omitted-`agent_id` path do not hard-fail against servers still\n // emitting the legacy shape.\n const agentIdFromMe =\n stringOrNull(data.agent_id) ?? stringOrNull(data.id);\n if (agentIdFromMe) {\n return agentIdFromMe;\n }\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n\n private async requestOwnerOperation(\n agent_id: string,\n operation_key: string,\n params: Record<string, unknown> = {},\n options: { lang?: string } = {},\n ): Promise<RequestMetaTuple> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n const normalizedKey = String(operation_key ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n if (!normalizedKey) {\n throw new SiglumeClientError(\"operation_key is required.\");\n }\n return this.request(\"POST\", `/owner/agents/${normalizedAgentId}/operations/execute`, {\n json_body: {\n operation: normalizedKey,\n params: toRecord(params),\n lang: String(options.lang ?? \"en\").trim().toLowerCase() === \"ja\" ? \"ja\" : \"en\",\n },\n });\n }\n\n private async request(method: string, path: string, options: RequestOptions = {}): Promise<RequestMetaTuple> {\n const [data, meta] = await this.requestAny(method, path, options);\n if (!isRecord(data)) {\n throw new SiglumeClientError(\"Expected the Siglume API response body to be an object.\");\n }\n return [data, meta];\n }\n\n private async requestAny(method: string, path: string, options: RequestOptions = {}): Promise<RequestAnyTuple> {\n const url = buildUrl(this.base_url, path, options.params);\n const headers = new Headers({\n Authorization: `Bearer ${this.api_key}`,\n Accept: \"application/json\",\n \"User-Agent\": \"siglume-api-sdk-ts/0.7.6\",\n });\n if (options.headers) {\n for (const [key, value] of Object.entries(options.headers)) {\n headers.set(key, value);\n }\n }\n let body: string | undefined;\n if (options.json_body) {\n headers.set(\"Content-Type\", \"application/json\");\n body = JSON.stringify(toJsonable(options.json_body));\n }\n\n for (let attempt = 0; attempt < this.max_retries; attempt += 1) {\n const controller = new AbortController();\n const timeoutHandle = setTimeout(() => controller.abort(), this.timeout_ms);\n try {\n const response = await this.fetchImpl(url, {\n method,\n headers,\n body,\n signal: controller.signal,\n });\n clearTimeout(timeoutHandle);\n const text = response.status === 204 ? \"\" : await response.text();\n const parsed = text ? this.safeParseJson(text) : {};\n const envelope = isRecord(parsed) ? parsed : {};\n const data = Array.isArray(envelope.data)\n ? envelope.data.map((item) => cloneJsonLike(item))\n : isRecord(envelope.data)\n ? envelope.data\n : isRecord(parsed)\n ? parsed\n : Array.isArray(parsed)\n ? parsed.map((item) => cloneJsonLike(item))\n : {};\n const meta: EnvelopeMeta = isRecord(envelope.meta)\n ? {\n request_id: stringOrNull(envelope.meta.request_id),\n trace_id: stringOrNull(envelope.meta.trace_id),\n }\n : {\n request_id: stringOrNull(response.headers.get(\"x-request-id\")),\n trace_id: stringOrNull(response.headers.get(\"x-trace-id\")),\n };\n\n if (response.ok) {\n return [data, meta];\n }\n\n if (RETRYABLE_STATUS_CODES.has(response.status) && attempt + 1 < this.max_retries) {\n await sleep(parseRetryAfter(response.headers.get(\"Retry-After\")) ?? (250 * (2 ** attempt)));\n continue;\n }\n\n const errorBlock = isRecord(envelope.error) ? envelope.error : {};\n const message = String(\n errorBlock.message ??\n (isRecord(parsed) ? parsed.message : undefined) ??\n response.statusText ??\n \"Siglume API request failed.\",\n );\n const error_code = stringOrNull(errorBlock.code) ?? undefined;\n if (response.status === 404) {\n throw new SiglumeNotFoundError(message);\n }\n throw new SiglumeAPIError(message, {\n status_code: response.status,\n error_code,\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n details: toRecord(errorBlock.details),\n response_body: parsed,\n });\n } catch (error) {\n clearTimeout(timeoutHandle);\n if (error instanceof SiglumeAPIError || error instanceof SiglumeNotFoundError) {\n throw error;\n }\n if (attempt + 1 < this.max_retries) {\n await sleep(250 * (2 ** attempt));\n continue;\n }\n if (error instanceof Error) {\n throw new SiglumeClientError(error.message);\n }\n throw new SiglumeClientError(\"Siglume request failed.\");\n }\n }\n throw new SiglumeClientError(\"Siglume request failed after retries.\");\n }\n\n private safeParseJson(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return {};\n }\n }\n\n private agentHeaders(): Record<string, string> {\n if (!this.agent_key) {\n throw new SiglumeClientError(\"agent_key is required for agent.* routes. Pass agent_key when constructing SiglumeClient.\");\n }\n return { \"X-Agent-Key\": this.agent_key };\n }\n}\n\nfunction cloneJsonLike(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((item) => cloneJsonLike(item));\n }\n if (isRecord(value)) {\n return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, cloneJsonLike(item)]));\n }\n return value;\n}\n","import { DEFAULT_SIGLUME_API_BASE, SiglumeClient, type SiglumeClientOptions } from \"./client\";\nimport { SiglumeAPIError, SiglumeClientError, SiglumeNotFoundError } from \"./errors\";\nimport type { CursorPage, EnvelopeMeta, UsageEventRecord } from \"./types\";\nimport { isRecord, parseRetryAfter, sleep, stringOrNull, toJsonable, toRecord } from \"./utils\";\n\ntype FetchLike = typeof fetch;\ntype RequestOptions = {\n params?: Record<string, string | number | boolean | undefined | null>;\n json_body?: Record<string, unknown>;\n};\ntype RequestMetaTuple = [Record<string, unknown>, EnvelopeMeta];\n\nconst RETRYABLE_STATUS_CODES = new Set([429, 500, 502, 503, 504]);\nconst MAX_BATCH_SIZE = 1000;\nconst INTEGER_RE = /^-?\\d+$/;\n\nexport interface UsageRecord {\n capability_key: string;\n dimension: string;\n units: number;\n external_id: string;\n occurred_at_iso: string;\n agent_id?: string;\n}\n\nexport interface MeterRecordResult {\n accepted: boolean;\n external_id: string;\n server_id?: string | null;\n replayed: boolean;\n capability_key?: string | null;\n agent_id?: string | null;\n period_key?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface MeteringInvoiceLinePreview {\n price_model: string;\n billable_units: number;\n unit_amount_minor: number;\n subtotal_minor: number;\n currency: string;\n}\n\nexport interface MeteringSimulationResult {\n experimental: boolean;\n usage_record: UsageRecord;\n invoice_line_preview: MeteringInvoiceLinePreview | null;\n}\n\nexport type MeterClientOptions = SiglumeClientOptions;\n\n/**\n * Experimental analytics / pre-billing wrapper for usage-event ingest.\n */\nexport class MeterClient {\n readonly experimental = true;\n private readonly client: SiglumeClient;\n private readonly api_key: string;\n private readonly base_url: string;\n private readonly timeout_ms: number;\n private readonly max_retries: number;\n private readonly fetchImpl: FetchLike;\n\n constructor(options: MeterClientOptions) {\n this.client = new SiglumeClient(options);\n this.api_key = this.client.api_key;\n this.base_url = (options.base_url ?? DEFAULT_SIGLUME_API_BASE).replace(/\\/+$/, \"\");\n this.timeout_ms = Math.max(1, options.timeout_ms ?? 15_000);\n this.max_retries = Math.max(1, Math.trunc(options.max_retries ?? 3));\n this.fetchImpl = options.fetch ?? fetch;\n }\n\n close(): void {\n this.client.close();\n }\n\n async record(record: UsageRecord): Promise<MeterRecordResult> {\n const [result] = await this.record_batch([record]);\n if (!result) {\n throw new SiglumeClientError(\"Siglume usage metering response did not include any results.\");\n }\n return result;\n }\n\n async record_batch(records: UsageRecord[]): Promise<MeterRecordResult[]> {\n const normalized = records.map((record) => normalizeUsageRecord(record));\n if (normalized.length === 0) {\n return [];\n }\n\n const results: MeterRecordResult[] = [];\n for (let start = 0; start < normalized.length; start += MAX_BATCH_SIZE) {\n const chunk = normalized.slice(start, start + MAX_BATCH_SIZE);\n const [data] = await this.request(\"POST\", \"/market/usage-events\", {\n json_body: { events: chunk },\n });\n if (!Array.isArray(data.items)) {\n throw new SiglumeClientError(\"Siglume usage metering response did not include an items array.\");\n }\n for (const item of data.items) {\n if (isRecord(item)) {\n results.push(parseMeterRecordResult(item));\n }\n }\n }\n return results;\n }\n\n async list_usage_events(options: {\n capability_key?: string;\n agent_id?: string;\n outcome?: string;\n environment?: string;\n period_key?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPage<UsageEventRecord>> {\n return this.client.get_usage(options);\n }\n\n private async request(method: string, path: string, options: RequestOptions = {}): Promise<RequestMetaTuple> {\n const url = buildUrl(this.base_url, path, options.params);\n const headers = new Headers({\n Authorization: `Bearer ${this.api_key}`,\n Accept: \"application/json\",\n \"User-Agent\": \"siglume-api-sdk-ts/0.7.6\",\n });\n let body: string | undefined;\n if (options.json_body) {\n headers.set(\"Content-Type\", \"application/json\");\n body = JSON.stringify(toJsonable(options.json_body));\n }\n\n for (let attempt = 0; attempt < this.max_retries; attempt += 1) {\n const controller = new AbortController();\n const timeoutHandle = setTimeout(() => controller.abort(), this.timeout_ms);\n try {\n const response = await this.fetchImpl(url, {\n method,\n headers,\n body,\n signal: controller.signal,\n });\n clearTimeout(timeoutHandle);\n const text = response.status === 204 ? \"\" : await response.text();\n const parsed = safeParseJson(text);\n const envelope = isRecord(parsed) ? parsed : {};\n const data = isRecord(envelope.data) ? envelope.data : isRecord(parsed) ? parsed : {};\n const meta: EnvelopeMeta = isRecord(envelope.meta)\n ? {\n request_id: stringOrNull(envelope.meta.request_id),\n trace_id: stringOrNull(envelope.meta.trace_id),\n }\n : {\n request_id: stringOrNull(response.headers.get(\"x-request-id\")),\n trace_id: stringOrNull(response.headers.get(\"x-trace-id\")),\n };\n if (response.ok) {\n return [data, meta];\n }\n if (RETRYABLE_STATUS_CODES.has(response.status) && attempt + 1 < this.max_retries) {\n await sleep(parseRetryAfter(response.headers.get(\"Retry-After\")) ?? (250 * (2 ** attempt)));\n continue;\n }\n const errorBlock = isRecord(envelope.error) ? envelope.error : {};\n const message = String(\n errorBlock.message ??\n (isRecord(parsed) ? parsed.message : undefined) ??\n response.statusText ??\n \"Siglume API request failed.\",\n );\n const errorCode = stringOrNull(errorBlock.code) ?? undefined;\n if (response.status === 404) {\n throw new SiglumeNotFoundError(message);\n }\n throw new SiglumeAPIError(message, {\n status_code: response.status,\n error_code: errorCode,\n trace_id: meta.trace_id ?? undefined,\n request_id: meta.request_id ?? undefined,\n details: toRecord(errorBlock.details),\n response_body: parsed,\n });\n } catch (error) {\n clearTimeout(timeoutHandle);\n if (error instanceof SiglumeAPIError || error instanceof SiglumeNotFoundError) {\n throw error;\n }\n if (attempt + 1 < this.max_retries) {\n await sleep(250 * (2 ** attempt));\n continue;\n }\n if (error instanceof Error) {\n throw new SiglumeClientError(error.message);\n }\n throw new SiglumeClientError(\"Siglume request failed.\");\n }\n }\n throw new SiglumeClientError(\"Siglume request failed after retries.\");\n }\n}\n\nexport function normalizeUsageRecord(record: UsageRecord): UsageRecord {\n const capability_key = String(record.capability_key ?? \"\").trim();\n if (!capability_key) {\n throw new SiglumeClientError(\"UsageRecord.capability_key is required.\");\n }\n const dimension = String(record.dimension ?? \"\").trim();\n if (!dimension) {\n throw new SiglumeClientError(\"UsageRecord.dimension is required.\");\n }\n const external_id = String(record.external_id ?? \"\").trim();\n if (!external_id) {\n throw new SiglumeClientError(\"UsageRecord.external_id is required.\");\n }\n const occurred_at_iso = normalizeRfc3339(record.occurred_at_iso);\n const units = coerceNonNegativeInteger(record.units, \"UsageRecord.units\");\n const agent_id = stringOrNull(record.agent_id) ?? undefined;\n return {\n capability_key,\n dimension,\n units,\n external_id,\n occurred_at_iso,\n ...(agent_id ? { agent_id } : {}),\n };\n}\n\nfunction parseMeterRecordResult(data: Record<string, unknown>): MeterRecordResult {\n return {\n accepted: Boolean(data.accepted ?? false),\n external_id: String(data.external_id ?? data.idempotency_key ?? \"\"),\n server_id: stringOrNull(data.server_id ?? data.usage_event_id ?? data.id),\n replayed: Boolean(data.replayed ?? false),\n capability_key: stringOrNull(data.capability_key),\n agent_id: stringOrNull(data.agent_id),\n period_key: stringOrNull(data.period_key),\n raw: { ...data },\n };\n}\n\nfunction coerceNonNegativeInteger(value: unknown, fieldName: string): number {\n if (typeof value === \"number\" && Number.isInteger(value)) {\n if (value < 0) {\n throw new SiglumeClientError(`${fieldName} must be a non-negative integer.`);\n }\n return value;\n }\n if (typeof value === \"string\" && INTEGER_RE.test(value.trim())) {\n const parsed = Number.parseInt(value.trim(), 10);\n if (parsed < 0) {\n throw new SiglumeClientError(`${fieldName} must be a non-negative integer.`);\n }\n return parsed;\n }\n throw new SiglumeClientError(`${fieldName} must be a non-negative integer.`);\n}\n\nfunction normalizeRfc3339(value: unknown): string {\n const text = String(value ?? \"\").trim();\n if (!text) {\n throw new SiglumeClientError(\"UsageRecord.occurred_at_iso is required.\");\n }\n const parsed = Date.parse(text);\n if (Number.isNaN(parsed) || !(/[zZ]$|[+-]\\d{2}:\\d{2}$/.test(text))) {\n throw new SiglumeClientError(\"UsageRecord.occurred_at_iso must be RFC3339 with timezone.\");\n }\n return text;\n}\n\nfunction buildUrl(\n baseUrl: string,\n path: string,\n params: Record<string, string | number | boolean | undefined | null> = {},\n): string {\n const normalizedPath = `/${path.replace(/^\\/+/, \"\")}`;\n const url = new URL(baseUrl + normalizedPath);\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined || value === null || value === \"\") {\n continue;\n }\n url.searchParams.set(key, String(value));\n }\n return url.toString();\n}\n\nfunction safeParseJson(text: string): unknown {\n if (!text) {\n return {};\n }\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return {};\n }\n}\n","import { Command, CommanderError } from \"commander\";\n\nimport { SiglumeProjectError } from \"../errors\";\nimport { renderJson } from \"../utils\";\nimport {\n createSupportCaseReport,\n diffJsonFiles,\n getUsageReport,\n listOperationCatalog,\n runPreflight,\n runHarness,\n runRegistration,\n scoreProject,\n validateProject,\n writeInitTemplate,\n writeOperationTemplate,\n} from \"./project\";\nimport type { CliProjectDependencies } from \"./project\";\n\nexport interface CliRunDependencies extends CliProjectDependencies {\n stdout?: (line: string) => void;\n stderr?: (line: string) => void;\n}\n\nfunction emit(output: ((line: string) => void) | undefined, line: string): void {\n (output ?? console.log)(line);\n}\n\nfunction renderOperationTable(operations: Array<Record<string, unknown>>): string[] {\n const rows = operations.map((item) => [\n String(item.operation_key ?? \"\"),\n String(item.permission_class ?? \"read-only\"),\n String(item.summary ?? \"\"),\n ]);\n const headers = [\"operation_key\", \"permission_class\", \"summary\"];\n const widths = headers.map((header, index) =>\n Math.max(header.length, ...rows.map((row) => row[index]?.length ?? 0)),\n );\n return [\n headers.map((header, index) => header.padEnd(widths[index] ?? header.length)).join(\" \"),\n widths.map((width) => \"-\".repeat(width)).join(\" \"),\n ...rows.map((row) => row.map((cell, index) => cell.padEnd(widths[index] ?? cell.length)).join(\" \")),\n ];\n}\n\nexport async function runCli(argv: string[], deps: CliRunDependencies = {}): Promise<number> {\n const stdout = deps.stdout;\n const stderr = deps.stderr ?? console.error;\n let completionExitCode = 0;\n const program = new Command()\n .name(\"siglume\")\n .description(\"Siglume developer CLI\")\n .showHelpAfterError()\n .exitOverride();\n\n program\n .command(\"init\")\n .option(\"--template <template>\", \"starter template\")\n .option(\"--from-operation <operation_key>\", \"generate an AppAdapter wrapper for a first-party owner operation\")\n .option(\"--list-operations\", \"list owner operations available for template generation\", false)\n .option(\"--capability-key <capability_key>\", \"override the generated manifest capability_key\")\n .option(\"--agent-id <agent_id>\", \"owner agent_id used to resolve operation metadata\")\n .option(\"--lang <lang>\", \"catalog language for live owner operations\", \"en\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"destination\")\n .action(async (\n path: string,\n options: {\n template?: string;\n fromOperation?: string;\n [\"from-operation\"]?: string;\n listOperations?: boolean;\n [\"list-operations\"]?: boolean;\n capabilityKey?: string;\n [\"capability-key\"]?: string;\n agentId?: string;\n [\"agent-id\"]?: string;\n lang?: string;\n json?: boolean;\n },\n ) => {\n const template = options.template as \"echo\" | \"price-compare\" | \"publisher\" | \"payment\" | undefined;\n const operationKey = options.fromOperation;\n const listOperationsFlag = Boolean(options.listOperations);\n if (listOperationsFlag && operationKey) {\n throw new SiglumeProjectError(\"Choose either --list-operations or --from-operation, not both.\");\n }\n if (listOperationsFlag && options.capabilityKey) {\n throw new SiglumeProjectError(\"--capability-key is only valid together with --from-operation.\");\n }\n if (template && (listOperationsFlag || operationKey)) {\n throw new SiglumeProjectError(\"--template cannot be combined with --list-operations or --from-operation.\");\n }\n\n if (listOperationsFlag) {\n const payload: Record<string, unknown> = {\n ok: true,\n ...(await listOperationCatalog(\n { agent_id: options.agentId, lang: options.lang },\n deps,\n )),\n };\n if (options.json) {\n emit(stdout, renderJson(payload));\n return;\n }\n const warning = typeof payload.warning === \"string\" ? payload.warning : \"\";\n if (warning) {\n emit(stderr, warning);\n }\n emit(stdout, `Owner operation catalog (${String(payload.source ?? \"fallback\")})`);\n const operations = Array.isArray(payload.operations)\n ? payload.operations.filter((item: unknown): item is Record<string, unknown> => Boolean(item && typeof item === \"object\"))\n : [];\n renderOperationTable(\n operations,\n ).forEach((line) => emit(stdout, line));\n return;\n }\n\n if (operationKey) {\n const result = await writeOperationTemplate(\n operationKey,\n path,\n {\n capability_key: options.capabilityKey,\n agent_id: options.agentId,\n lang: options.lang,\n },\n deps,\n );\n const payload = {\n ok: true,\n mode: \"from-operation\",\n operation: toJsonSafeRecord(result.operation),\n files: result.files,\n report: result.report,\n };\n if (options.json) {\n emit(stdout, renderJson(payload));\n return;\n }\n if (result.report.warning) {\n emit(stderr, String(result.report.warning));\n }\n const quality = (result.report.quality ?? {}) as { grade?: string; overall_score?: number };\n emit(stdout, `Generated wrapper for '${result.operation.operation_key}'.`);\n emit(stdout, `grade: ${quality.grade ?? \"?\"} (${quality.overall_score ?? \"?\"}/100)`);\n result.files.forEach((filePath) => emit(stdout, `- ${filePath}`));\n return;\n }\n\n const resolvedTemplate = (template ?? \"echo\") as \"echo\" | \"price-compare\" | \"publisher\" | \"payment\";\n const files = await writeInitTemplate(resolvedTemplate, path);\n const payload = { ok: true, mode: \"template\", template: resolvedTemplate, files };\n if (options.json) {\n emit(stdout, renderJson(payload));\n return;\n }\n emit(stdout, `Initialized Siglume starter template '${resolvedTemplate}'.`);\n files.forEach((filePath) => emit(stdout, `- ${filePath}`));\n });\n\n program\n .command(\"diff\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"<old_json>\", \"previous manifest/tool manual JSON\")\n .argument(\"<new_json>\", \"next manifest/tool manual JSON\")\n .action(async (oldPath: string, newPath: string, options: { json?: boolean }) => {\n const report = await diffJsonFiles(oldPath, newPath);\n if (options.json) {\n emit(stdout, renderJson(report));\n } else {\n const changes = (report.changes as Array<Record<string, unknown>>) ?? [];\n if (changes.length === 0) {\n emit(stdout, \"No differences detected.\");\n } else {\n for (const level of [\"breaking\", \"warning\", \"info\"]) {\n const items = changes.filter((item) => item.level === level);\n if (items.length === 0) {\n continue;\n }\n emit(stdout, level.toUpperCase());\n items.forEach((item) => emit(stdout, `- ${String(item.path)}: ${String(item.message)}`));\n emit(stdout, \"\");\n }\n }\n }\n completionExitCode = Number(report.exit_code ?? 0);\n });\n\n program\n .command(\"validate\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"project path\")\n .action(async (path: string, options: { json?: boolean }) => {\n const report = await validateProject(path, deps);\n if (options.json) {\n emit(stdout, renderJson(report));\n } else {\n emit(stdout, report.ok ? \"Validation passed.\" : \"Validation failed.\");\n emit(stdout, `Adapter: ${report.adapter_path}`);\n }\n if (!report.ok) {\n throw new SiglumeProjectError(\"Validation failed.\");\n }\n });\n\n program\n .command(\"test\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"project path\")\n .action(async (path: string, options: { json?: boolean }) => {\n const report = await runHarness(path);\n if (options.json) {\n emit(stdout, renderJson(report));\n } else {\n emit(stdout, report.ok ? \"Harness passed.\" : \"Harness failed.\");\n emit(stdout, `Adapter: ${report.adapter_path}`);\n }\n if (!report.ok) {\n throw new SiglumeProjectError(\"Harness failed.\");\n }\n });\n\n program\n .command(\"score\")\n .option(\"--remote\", \"use the platform preview scorer\", false)\n .option(\"--offline\", \"use the local parity scorer without network access\", false)\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"project path\")\n .action(async (path: string, options: { remote?: boolean; offline?: boolean; json?: boolean }) => {\n const mode = options.offline ? \"offline\" : \"remote\";\n const report = await scoreProject(path, mode, deps);\n if (options.json) {\n emit(stdout, renderJson(report));\n } else {\n const quality = report.quality as { grade: string; overall_score: number };\n emit(stdout, report.ok ? \"Score passed.\" : \"Score failed.\");\n emit(stdout, `${mode === \"remote\" ? \"Remote\" : \"Offline\"} quality: ${quality.grade} (${quality.overall_score}/100)`);\n }\n if (!report.ok) {\n throw new SiglumeProjectError(\"Score failed.\");\n }\n });\n\n program\n .command(\"preflight\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"project path\")\n .action(async (path: string, options: { json?: boolean }) => {\n const report = await runPreflight(path, deps);\n if (options.json) {\n emit(stdout, renderJson(report));\n return;\n }\n emit(stdout, \"Preflight passed.\");\n const preflight = report.registration_preflight as { remote_quality?: { grade?: string; overall_score?: number } } | undefined;\n if (preflight?.remote_quality) {\n emit(stdout, `preflight_quality: ${preflight.remote_quality.grade} (${preflight.remote_quality.overall_score}/100)`);\n }\n if (report.runtime_validation_path) emit(stdout, `runtime_validation_path: ${String(report.runtime_validation_path)}`);\n if (report.oauth_credentials_path) emit(stdout, `oauth_credentials_path: ${String(report.oauth_credentials_path)}`);\n });\n\n program\n .command(\"register\")\n .option(\"--confirm\", \"explicitly confirm the registration; this is the default unless --draft-only is set\", false)\n .option(\"--draft-only\", \"create or refresh the draft without confirming publication\", false)\n .option(\"--submit-review\", \"legacy alias: publish immediately if your environment still routes through submit-review\", false)\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"project path\")\n .action(async (\n path: string,\n options: { confirm?: boolean; draftOnly?: boolean; submitReview?: boolean; json?: boolean; [\"draft-only\"]?: boolean; [\"submit-review\"]?: boolean },\n ) => {\n const draftOnly = Boolean(options.draftOnly);\n if (draftOnly && options.confirm) {\n throw new SiglumeProjectError(\"--draft-only cannot be combined with --confirm.\");\n }\n if (draftOnly && options.submitReview) {\n throw new SiglumeProjectError(\"--draft-only cannot be combined with --submit-review.\");\n }\n const shouldConfirm = Boolean(options.confirm) || (!draftOnly && !options.submitReview);\n const report = await runRegistration(path, { confirm: shouldConfirm, draft_only: draftOnly, submit_review: options.submitReview }, deps);\n if (options.json) {\n emit(stdout, renderJson(report));\n } else {\n const receipt = report.receipt as {\n listing_id: string;\n status: string;\n registration_mode?: string | null;\n listing_status?: string | null;\n oauth_status?: { configured?: boolean } | null;\n review_url?: string | null;\n trace_id?: string | null;\n request_id?: string | null;\n };\n const published = Boolean(report.confirmation || report.review);\n if (published && receipt.registration_mode === \"upgrade\") {\n emit(stdout, \"Upgrade registered.\");\n } else if (published) {\n emit(stdout, \"Registration accepted.\");\n } else if (receipt.registration_mode === \"upgrade\") {\n emit(stdout, \"Upgrade staged.\");\n } else if (receipt.registration_mode === \"refresh\") {\n emit(stdout, \"Draft refreshed.\");\n } else {\n emit(stdout, \"Draft listing created.\");\n }\n emit(stdout, `listing_id: ${receipt.listing_id}`);\n emit(stdout, `receipt_status: ${receipt.status}`);\n if (receipt.listing_status) emit(stdout, `listing_status: ${receipt.listing_status}`);\n if (receipt.oauth_status) emit(stdout, `oauth_configured: ${Boolean(receipt.oauth_status.configured)}`);\n if (receipt.review_url) emit(stdout, `review_url: ${receipt.review_url}`);\n if (receipt.trace_id) emit(stdout, `trace_id: ${receipt.trace_id}`);\n if (receipt.request_id) emit(stdout, `request_id: ${receipt.request_id}`);\n if (report.confirmation) {\n const confirmation = report.confirmation as {\n status?: string | null;\n release?: { release_status?: string | null } | null;\n };\n emit(stdout, \"Listing published.\");\n if (confirmation.status) emit(stdout, `confirmation_status: ${confirmation.status}`);\n if (confirmation.release?.release_status) emit(stdout, `release_status: ${confirmation.release.release_status}`);\n } else if (report.review) {\n const review = report.review as { status?: string | null };\n emit(stdout, \"Listing published via legacy submit-review alias.\");\n if (review.status) emit(stdout, `publish_status: ${review.status}`);\n }\n const preflight = report.registration_preflight as { remote_quality?: { grade?: string; overall_score?: number } } | undefined;\n if (preflight?.remote_quality) {\n emit(stdout, `preflight_quality: ${preflight.remote_quality.grade} (${preflight.remote_quality.overall_score}/100)`);\n }\n }\n });\n\n const support = program.command(\"support\").description(\"Support-case workflows.\");\n support\n .command(\"create\")\n .requiredOption(\"--subject <subject>\", \"short summary of the issue\")\n .requiredOption(\"--body <body>\", \"detailed support case body\")\n .option(\"--trace-id <trace_id>\", \"attach a trace_id from a failed API flow\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .action(async (options: { subject: string; body: string; traceId?: string; [\"trace-id\"]?: string; json?: boolean }) => {\n const report = await createSupportCaseReport(\n { subject: options.subject, body: options.body, trace_id: options.traceId },\n deps,\n );\n if (options.json) {\n emit(stdout, renderJson(report));\n return;\n }\n const supportCase = report.case as { support_case_id: string; status: string };\n emit(stdout, \"Support case created.\");\n emit(stdout, `case_id: ${supportCase.support_case_id}`);\n emit(stdout, `status: ${supportCase.status}`);\n });\n\n program\n .command(\"usage\")\n .option(\"--capability <capability_key>\", \"filter by capability_key\")\n .option(\"--window <period_key>\", \"pass-through period_key sent to /market/usage\", \"30d\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .action(async (options: { capability?: string; window: string; json?: boolean }) => {\n const report = await getUsageReport({ capability_key: options.capability, window: options.window }, deps);\n if (options.json) {\n emit(stdout, renderJson(report));\n return;\n }\n emit(stdout, `Usage events: ${report.count}`);\n });\n\n try {\n await program.parseAsync(argv, { from: \"user\" });\n return completionExitCode;\n } catch (error) {\n if (error instanceof SiglumeProjectError) {\n emit(stderr, error.message);\n return 1;\n }\n if (error instanceof CommanderError) {\n // Help / version displays carry exitCode 0; parse errors carry a non-zero code.\n // Commander exits are the only class whose exitCode we trust; everything else falls through.\n return typeof error.exitCode === \"number\" ? error.exitCode : 1;\n }\n // Node system errors (ENOENT, EACCES, ...) and any other uncaught throw\n // are real failures — never report success just because the object has a `code` field.\n emit(stderr, error instanceof Error ? error.message : String(error));\n return 1;\n }\n}\n\nfunction toJsonSafeRecord(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : { value: String(value) };\n}\n","import { existsSync } from \"node:fs\";\nimport { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { basename, extname, join, resolve } from \"node:path\";\n\nimport { createJiti } from \"jiti\";\n\nimport {\n AppAdapter,\n AppTestHarness,\n AppCategory,\n ApprovalMode,\n ChangeLevel,\n PermissionClass,\n PriceModel,\n diff_manifest,\n diff_tool_manual,\n score_tool_manual_offline,\n SettlementMode,\n SiglumeClient,\n ToolManualPermissionClass,\n validate_tool_manual,\n} from \"../index\";\nimport type {\n AppManifest,\n ExecutionResult,\n SiglumeClientShape,\n ToolManual,\n ToolManualIssue,\n} from \"../index\";\nimport { SiglumeProjectError } from \"../errors\";\nimport {\n DEFAULT_OPERATION_AGENT_ID,\n type OperationMetadata,\n buildOperationMetadata,\n defaultCapabilityKeyForOperation,\n fallbackOperationCatalog,\n} from \"../operations\";\nimport { isRecord, renderJson, toJsonable } from \"../utils\";\n\nconst TEMPLATE_NAMES = [\"echo\", \"price-compare\", \"publisher\", \"payment\"] as const;\ntype TemplateName = (typeof TEMPLATE_NAMES)[number];\n\nconst SUPPORTED_EXTENSIONS = new Set([\".ts\", \".tsx\", \".js\", \".mjs\", \".cjs\"]);\nconst CAPABILITY_KEY_RE = /^[a-z0-9][a-z0-9-]*[a-z0-9]$/;\nconst FALLBACK_OPERATION_WARNING =\n \"Using the bundled fallback owner-operation catalog because the live catalog is unavailable. Generated templates remain experimental until the platform operation catalog is reachable.\";\n\nexport interface LoadedProject {\n root_dir: string;\n adapter_path: string;\n app: AppAdapter;\n manifest: AppManifest;\n tool_manual_path?: string;\n tool_manual: Record<string, unknown>;\n runtime_validation_path?: string;\n runtime_validation?: Record<string, unknown>;\n oauth_credentials_path?: string;\n oauth_credentials?: Record<string, unknown> | unknown[];\n}\n\nexport interface CliProjectDependencies {\n env?: Record<string, string | undefined>;\n client_factory?: (api_key: string, base_url?: string) => SiglumeClientShape;\n}\n\nfunction defaultClientFactory(api_key: string, base_url?: string): SiglumeClientShape {\n return new SiglumeClient({ api_key, base_url });\n}\n\nasync function createClient(deps: CliProjectDependencies = {}, base_url?: string): Promise<SiglumeClientShape> {\n if (deps.client_factory) {\n return deps.client_factory(deps.env?.SIGLUME_API_KEY ?? \"siglume_test_key\", base_url);\n }\n return defaultClientFactory(await resolveApiKey(deps.env), base_url);\n}\n\nfunction toolManualToDict(manual: ToolManual | Record<string, unknown>): Record<string, unknown> {\n return { ...(toJsonable(manual) as Record<string, unknown>) };\n}\n\nfunction remoteQualityOk(report: { validation_ok?: boolean; publishable?: boolean | null; grade: string }): boolean {\n const validationOk = report.validation_ok ?? true;\n const publishable = report.publishable ?? (report.grade === \"A\" || report.grade === \"B\");\n return Boolean(validationOk) && Boolean(publishable);\n}\n\nfunction sampleValueForSchema(schema: Record<string, unknown>): unknown {\n switch (schema.type) {\n case \"integer\":\n return 1;\n case \"number\":\n return 1.0;\n case \"boolean\":\n return true;\n case \"array\":\n return [];\n case \"object\":\n return {};\n default:\n return \"example\";\n }\n}\n\nfunction buildRuntimeValidationTemplate(toolManual: Record<string, unknown>): Record<string, unknown> {\n const inputSchema = isRecord(toolManual.input_schema) ? toolManual.input_schema : {};\n const properties = isRecord(inputSchema.properties) ? inputSchema.properties : {};\n const required = Array.isArray(inputSchema.required) ? inputSchema.required : [];\n const requestPayload: Record<string, unknown> = {};\n for (const fieldName of required) {\n if (typeof fieldName !== \"string\") continue;\n const fieldSchema = isRecord(properties[fieldName]) ? properties[fieldName] : {};\n requestPayload[fieldName] = sampleValueForSchema(fieldSchema);\n }\n if (toolManual.dry_run_supported === true) {\n requestPayload.dry_run = requestPayload.dry_run ?? true;\n }\n\n const outputSchema = isRecord(toolManual.output_schema) ? toolManual.output_schema : {};\n const outputRequired = Array.isArray(outputSchema.required) ? outputSchema.required : [];\n const expectedFields = outputRequired.filter((field): field is string => typeof field === \"string\");\n\n return {\n public_base_url: \"https://api.example.com\",\n healthcheck_url: \"https://api.example.com/health\",\n invoke_url: \"https://api.example.com/invoke\",\n invoke_method: \"POST\",\n test_auth_header_name: \"X-Siglume-Review-Key\",\n test_auth_header_value: \"replace-with-dedicated-review-key\",\n request_payload: requestPayload,\n expected_response_fields: expectedFields.length > 0 ? expectedFields : [\"summary\"],\n timeout_seconds: 10,\n };\n}\n\nexport function buildToolManualTemplate(manifest: AppManifest): Record<string, unknown> {\n const jobText = String(manifest.job_to_be_done || manifest.name || manifest.capability_key.replaceAll(\"-\", \" \"));\n const summaryText = String(\n manifest.short_description || manifest.job_to_be_done || manifest.name || manifest.capability_key.replaceAll(\"-\", \" \"),\n );\n const toolName = manifest.capability_key.replaceAll(\"-\", \"_\");\n const summary = manifest.short_description || manifest.job_to_be_done || `Use this tool to ${manifest.capability_key.replaceAll(\"-\", \" \")}.`;\n const manual: Record<string, unknown> = {\n tool_name: toolName,\n job_to_be_done: jobText || `Use ${manifest.name} to complete the requested task.`,\n summary_for_model: summary,\n trigger_conditions: [\n `The owner asks for help with ${jobText.toLowerCase()}`,\n `A workflow needs ${manifest.name} to complete a specific external task`,\n `The request matches the capability described as ${summaryText}`,\n ],\n do_not_use_when: [\n \"The request is unrelated to this tool's documented capability\",\n \"A required connected account or required input is missing\",\n ],\n permission_class: toolManualPermissionClass(manifest.permission_class),\n dry_run_supported: Boolean(manifest.dry_run_supported),\n requires_connected_accounts: manifest.required_connected_accounts ?? [],\n input_schema: {\n type: \"object\",\n properties: {\n query: {\n type: \"string\",\n description: \"Natural-language request describing what the tool should do.\",\n },\n },\n required: [\"query\"],\n additionalProperties: false,\n },\n output_schema: {\n type: \"object\",\n properties: {\n summary: {\n type: \"string\",\n description: \"A concise summary of the result returned by the tool.\",\n },\n result: {\n type: \"object\",\n description: \"Structured result payload returned by the tool.\",\n },\n },\n required: [\"summary\", \"result\"],\n additionalProperties: false,\n },\n usage_hints: [\"Use the result summary to explain the outcome in plain language.\"],\n result_hints: [\"Highlight the most important result field before showing raw details.\"],\n error_hints: [\"If execution fails, explain what input or connected account needs attention.\"],\n };\n\n if (manifest.permission_class === PermissionClass.ACTION || manifest.permission_class === PermissionClass.PAYMENT) {\n manual.approval_summary_template =\n manifest.permission_class === PermissionClass.ACTION\n ? `${manifest.name}: {query}`\n : `${manifest.name}: approve {query} for {amount_minor} {currency}`;\n manual.preview_schema = {\n type: \"object\",\n properties: {\n summary: {\n type: \"string\",\n description: \"Human-readable preview of what will happen.\",\n },\n },\n required: [\"summary\"],\n additionalProperties: false,\n };\n manual.idempotency_support = true;\n manual.side_effect_summary =\n manifest.permission_class === PermissionClass.ACTION\n ? `Using ${manifest.name} may create or modify an external resource.`\n : `Using ${manifest.name} may initiate a payment or settlement attempt.`;\n manual.jurisdiction = manifest.jurisdiction;\n }\n\n if (manifest.permission_class === PermissionClass.PAYMENT) {\n manual.output_schema = {\n type: \"object\",\n properties: {\n summary: {\n type: \"string\",\n description: \"A concise summary of the payment or quote result.\",\n },\n amount_usd: {\n type: \"number\",\n description: \"Total amount in USD for the quote or completed payment.\",\n },\n currency: {\n type: \"string\",\n description: \"Currency code for the quoted or charged amount.\",\n },\n payment_id: {\n type: \"string\",\n description: \"Provider or platform payment identifier when execution completes.\",\n },\n },\n required: [\"summary\", \"amount_usd\", \"currency\"],\n additionalProperties: false,\n };\n manual.quote_schema = {\n type: \"object\",\n properties: {\n amount_minor: {\n type: \"integer\",\n description: \"Quoted amount in minor currency units.\",\n },\n currency: {\n type: \"string\",\n description: \"Quoted currency code.\",\n },\n },\n required: [\"amount_minor\", \"currency\"],\n additionalProperties: false,\n };\n manual.currency = \"USD\";\n manual.settlement_mode = SettlementMode.STRIPE_CHECKOUT;\n manual.refund_or_cancellation_note = \"Explain the refund or cancellation policy for this payment flow.\";\n }\n\n return manual;\n}\n\nexport async function loadProject(path = \".\"): Promise<LoadedProject> {\n const target = resolve(path);\n const adapter_path = await findAdapterPath(target);\n const root_dir = resolve(adapter_path, \"..\");\n const app = await loadApp(adapter_path);\n const manifest = await app.manifest();\n const tool_manual_path = await findToolManualPath(root_dir);\n const tool_manual = tool_manual_path\n ? (JSON.parse(await readFile(tool_manual_path, \"utf8\")) as Record<string, unknown>)\n : buildToolManualTemplate(manifest);\n const runtime_validation_path = await findRuntimeValidationPath(root_dir);\n const runtime_validation = runtime_validation_path\n ? await loadJsonObject(runtime_validation_path, \"runtime_validation\")\n : undefined;\n const oauth_credentials_path = await findOauthCredentialsPath(root_dir);\n let oauth_credentials: Record<string, unknown> | unknown[] | undefined;\n if (oauth_credentials_path) {\n const parsed = JSON.parse(await readFile(oauth_credentials_path, \"utf8\")) as unknown;\n if (!isRecord(parsed) && !Array.isArray(parsed)) {\n throw new SiglumeProjectError(\"oauth_credentials must be a JSON object or array\");\n }\n oauth_credentials = parsed;\n }\n\n return {\n root_dir,\n adapter_path,\n app,\n manifest,\n tool_manual_path: tool_manual_path ?? undefined,\n tool_manual,\n runtime_validation_path: runtime_validation_path ?? undefined,\n runtime_validation,\n oauth_credentials_path: oauth_credentials_path ?? undefined,\n oauth_credentials,\n };\n}\n\nfunction isPlatformManagedRequirement(value: unknown): boolean {\n if (!isRecord(value)) return false;\n if (value.platform_managed === true) return true;\n const owner = String(\n value.managed_by ?? value.auth_managed_by ?? value.connection_owner ?? \"\",\n )\n .trim()\n .toLowerCase()\n .replaceAll(\"_\", \"-\");\n return owner === \"platform\" || owner === \"siglume\" || owner === \"siglume-platform\";\n}\n\n/**\n * Extract the opaque `provider_key` from a requirement entry.\n *\n * Returns the value VERBATIM — no lowercasing, no rewriting of\n * non-alphanumeric characters. `provider_key` is a contract-defined\n * opaque identifier used for OAuth flow routing; keys such as\n * `AzureAD_v2`, `microsoft/graph`, `foo.bar` must be transmitted\n * unchanged so the API contract recognizes them. The earlier\n * implementation normalized to `[a-z0-9-]+` and silently rewrote any\n * of those into `azuread-v2` / `microsoft-graph` / `foo-bar`, breaking\n * the contract-driven OAuth flow.\n *\n * Codex review on PR #194 surfaced the regression; mirrors the\n * Python-side fix in `siglume_api_sdk/cli/project.py`. Owner-field\n * normalization for the platform-managed-vs-third-party check happens\n * in `isPlatformManagedRequirement` and is unrelated to this opaque\n * provider_key value.\n */\nfunction oauthProviderKeyFromRequirement(value: unknown): string | null {\n if (isRecord(value)) {\n for (const key of [\"provider_key\", \"provider\", \"account_type\", \"name\"]) {\n const providerKey = oauthProviderKeyFromRequirement(value[key]);\n if (providerKey) return providerKey;\n }\n return null;\n }\n const raw = String(value ?? \"\").trim();\n return raw || null;\n}\n\nfunction requiredOauthProviders(requirements: unknown[] | undefined): string[] {\n const providers: string[] = [];\n for (const item of requirements ?? []) {\n if (!isPlatformManagedRequirement(item)) continue;\n const providerKey = oauthProviderKeyFromRequirement(item);\n if (!providerKey) {\n throw new SiglumeProjectError(\n \"required_connected_accounts platform-managed entries must include a provider_key\",\n );\n }\n if (providerKey && !providers.includes(providerKey)) {\n providers.push(providerKey);\n }\n }\n return providers;\n}\n\nfunction connectedAccountRequirementLabel(value: unknown): string {\n if (isRecord(value)) {\n for (const key of [\"provider_key\", \"provider\", \"account_type\", \"name\"]) {\n const label = String(value[key] ?? \"\").trim();\n if (label) return label;\n }\n return \"\";\n }\n return String(value ?? \"\").trim();\n}\n\nfunction oauthProviderRecordsMap(payload: Record<string, unknown> | unknown[] | undefined): Record<string, Record<string, unknown>> {\n if (!payload) {\n return {};\n }\n const items = Array.isArray(payload)\n ? payload\n : Array.isArray(payload.items)\n ? payload.items\n : [payload];\n const resolved: Record<string, Record<string, unknown>> = {};\n for (const [index, item] of items.entries()) {\n if (!isRecord(item)) {\n throw new SiglumeProjectError(`oauth_credentials[${index}] must be a JSON object.`);\n }\n const providerKey = oauthProviderKeyFromRequirement(item.provider_key ?? item.provider);\n if (!providerKey) {\n throw new SiglumeProjectError(`oauth_credentials[${index}].provider_key is required.`);\n }\n const authorizeUrl = String(item.authorize_url ?? item.authorization_url ?? item.auth_url ?? \"\").trim();\n const tokenUrl = String(item.token_url ?? \"\").trim();\n if (!authorizeUrl || !tokenUrl) {\n throw new SiglumeProjectError(\n `oauth_credentials[${index}] must include authorize_url and token_url.`,\n );\n }\n for (const [urlKey, urlValue] of Object.entries({\n authorize_url: authorizeUrl,\n token_url: tokenUrl,\n revoke_url: String(item.revoke_url ?? \"\").trim(),\n })) {\n if (urlValue && !urlValue.startsWith(\"https://\")) {\n throw new SiglumeProjectError(`oauth_credentials[${index}].${urlKey} must be an https URL.`);\n }\n }\n const clientId = String(item.client_id ?? \"\").trim();\n const clientSecret = String(item.client_secret ?? \"\").trim();\n if (!clientId || !clientSecret) {\n throw new SiglumeProjectError(`oauth_credentials[${index}] must include client_id and client_secret.`);\n }\n const rawScopes = item.required_scopes ?? item.scopes;\n let scopes: string[] = [];\n if (rawScopes == null) {\n scopes = [];\n } else if (!Array.isArray(rawScopes)) {\n throw new SiglumeProjectError(`oauth_credentials[${index}].required_scopes must be a JSON array.`);\n } else {\n scopes = rawScopes.map((scope) => String(scope ?? \"\").trim()).filter(Boolean);\n }\n const record: Record<string, unknown> = {\n provider_key: providerKey,\n client_id: clientId,\n client_secret: clientSecret,\n required_scopes: scopes,\n };\n for (const [key, value] of Object.entries({\n authorize_url: authorizeUrl,\n token_url: tokenUrl,\n revoke_url: String(item.revoke_url ?? \"\").trim(),\n display_name: String(item.display_name ?? \"\").trim(),\n scope_separator: String(item.scope_separator ?? \"\").trim(),\n token_endpoint_auth: String(item.token_endpoint_auth ?? \"\").trim(),\n })) {\n if (value) record[key] = value;\n }\n for (const key of [\"pkce_required\", \"refresh_supported\"]) {\n if (typeof item[key] === \"boolean\") record[key] = item[key];\n }\n if (Array.isArray(item.available_scopes)) {\n const availableScopes = item.available_scopes.map((scope) => String(scope ?? \"\").trim()).filter(Boolean);\n if (availableScopes.length > 0) record.available_scopes = availableScopes;\n }\n resolved[providerKey] = record;\n }\n return resolved;\n}\n\nfunction canonicalOauthCredentialsPayload(\n payload: Record<string, unknown> | unknown[] | undefined,\n): Record<string, unknown> | undefined {\n const records = oauthProviderRecordsMap(payload);\n const providerKeys = Object.keys(records).sort();\n if (providerKeys.length === 0) {\n return undefined;\n }\n return {\n items: providerKeys.map((providerKey) => records[providerKey]),\n };\n}\n\nfunction ensureRequiredOauthCredentials(project: LoadedProject): void {\n const requiredProviders = requiredOauthProviders(project.manifest.required_connected_accounts ?? []);\n if (requiredProviders.length === 0) {\n return;\n }\n const provided = new Set(Object.keys(oauthProviderRecordsMap(project.oauth_credentials)));\n const missing = requiredProviders.filter((provider) => !provided.has(provider));\n if (missing.length === 0) {\n return;\n }\n const path = project.oauth_credentials_path ?? join(project.root_dir, \"oauth_credentials.json\");\n throw new SiglumeProjectError(\n `${path} is required for platform-managed OAuth APIs. Missing provider seeds: ${missing.join(\", \")}`,\n );\n}\n\nexport async function validateProject(path = \".\", deps: CliProjectDependencies = {}): Promise<Record<string, unknown>> {\n const project = await loadProject(path);\n const manifest_issues = await projectValidationIssues(project);\n const [tool_manual_valid, tool_manual_issues] = validate_tool_manual(project.tool_manual);\n const client = await createClient(deps);\n const remote_quality = await client.preview_quality_score(project.tool_manual);\n\n return {\n adapter_path: project.adapter_path,\n manifest: toJsonable(project.manifest),\n manifest_issues,\n tool_manual_path: project.tool_manual_path ?? null,\n tool_manual: project.tool_manual,\n tool_manual_valid,\n tool_manual_issues: tool_manual_issues.map((nextIssue) => toJsonable(nextIssue)),\n remote_quality: toJsonable(remote_quality),\n ok: manifest_issues.length === 0 && tool_manual_valid && remoteQualityOk(remote_quality),\n };\n}\n\nexport async function scoreProject(\n path = \".\",\n mode: \"remote\" | \"offline\" = \"remote\",\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const project = await loadProject(path);\n const [tool_manual_valid, tool_manual_issues] = validate_tool_manual(project.tool_manual);\n const quality =\n mode === \"remote\"\n ? await (await createClient(deps)).preview_quality_score(project.tool_manual)\n : score_tool_manual_offline(project.tool_manual);\n\n return {\n mode,\n adapter_path: project.adapter_path,\n tool_manual_path: project.tool_manual_path ?? null,\n tool_manual_valid,\n tool_manual_issues: tool_manual_issues.map((nextIssue) => toJsonable(nextIssue)),\n quality: toJsonable(quality),\n ok: tool_manual_valid && remoteQualityOk(quality),\n };\n}\n\nfunction ensureManifestPublisherIdentity(project: LoadedProject): void {\n const manifestPayload = project.manifest as unknown as Record<string, unknown>;\n const docsUrl = String(manifestPayload.docs_url ?? manifestPayload.documentation_url ?? \"\").trim();\n const supportContact = String(manifestPayload.support_contact ?? \"\").trim();\n const sellerHomepageUrl = String(manifestPayload.seller_homepage_url ?? \"\").trim();\n const sellerSocialUrl = String(manifestPayload.seller_social_url ?? \"\").trim();\n const jurisdiction = String(manifestPayload.jurisdiction ?? \"\").trim();\n const issues: string[] = [];\n if (!docsUrl) {\n issues.push(\"manifest.docs_url is required\");\n } else if (looksLikePlaceholder(docsUrl)) {\n issues.push(\"manifest.docs_url must be replaced with your public documentation URL\");\n } else if (!looksLikeHttpUrl(docsUrl)) {\n issues.push(\"manifest.docs_url must be an http(s) URL\");\n } else if (looksLikeRootUrl(docsUrl)) {\n issues.push(\"manifest.docs_url must be a dedicated API usage page, not a root homepage URL\");\n }\n if (!supportContact) {\n issues.push(\"manifest.support_contact is required\");\n } else if (looksLikePlaceholder(supportContact)) {\n issues.push(\"manifest.support_contact must be replaced with your real support email or support URL\");\n } else if (!looksLikeEmail(supportContact) && !looksLikeHttpUrl(supportContact)) {\n issues.push(\"manifest.support_contact must be a real email address or http(s) support URL\");\n }\n if (sellerHomepageUrl && (looksLikePlaceholder(sellerHomepageUrl) || !looksLikeHttpUrl(sellerHomepageUrl))) {\n issues.push(\"manifest.seller_homepage_url must be a real http(s) official homepage URL when provided\");\n }\n if (sellerSocialUrl && (looksLikePlaceholder(sellerSocialUrl) || !looksLikeHttpUrl(sellerSocialUrl))) {\n issues.push(\"manifest.seller_social_url must be a real http(s) official social/profile URL when provided\");\n }\n if (!jurisdiction) issues.push(\"manifest.jurisdiction is required\");\n if (issues.length > 0) {\n throw new SiglumeProjectError(\n `Production auto-register requires real publisher identity before calling Siglume:\\n${issues.map((issue) => `- ${issue}`).join(\"\\n\")}`,\n );\n }\n}\n\nfunction looksLikePlaceholder(value: string): boolean {\n const normalized = value.trim().toLowerCase();\n return (\n !normalized ||\n normalized.includes(\"example.com\") ||\n normalized.includes(\"example.net\") ||\n normalized.includes(\"example.org\") ||\n normalized.startsWith(\"replace-with-\") ||\n normalized.startsWith(\"your-\") ||\n normalized.includes(\"your-domain\") ||\n normalized.includes(\"localhost\") ||\n normalized.includes(\"127.0.0.1\") ||\n normalized.includes(\"0.0.0.0\")\n );\n}\n\nfunction looksLikeHttpUrl(value: string): boolean {\n try {\n const parsed = new URL(value.trim());\n return parsed.protocol === \"http:\" || parsed.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\nfunction looksLikeRootUrl(value: string): boolean {\n if (!looksLikeHttpUrl(value)) return false;\n const parsed = new URL(value.trim());\n return parsed.pathname.replace(/^\\/+|\\/+$/g, \"\") === \"\";\n}\n\nfunction looksLikeEmail(value: string): boolean {\n const normalized = value.trim();\n const domain = normalized.split(\"@\").at(-1) ?? \"\";\n return normalized.includes(\"@\") && !normalized.includes(\" \") && domain.includes(\".\") && !normalized.startsWith(\"@\");\n}\n\nfunction runtimePlaceholderIssues(runtimeValidation: Record<string, unknown>): string[] {\n const issues: string[] = [];\n for (const fieldName of [\n \"public_base_url\",\n \"healthcheck_url\",\n \"invoke_url\",\n \"test_auth_header_name\",\n \"test_auth_header_value\",\n \"expected_response_fields\",\n ]) {\n if (!runtimeValidation[fieldName]) {\n issues.push(`runtime_validation.${fieldName} is required`);\n }\n }\n\n for (const fieldName of [\"public_base_url\", \"healthcheck_url\", \"invoke_url\"]) {\n const value = String(runtimeValidation[fieldName] ?? \"\").trim().toLowerCase();\n if (looksLikePlaceholder(value)) {\n issues.push(`runtime_validation.${fieldName} must be replaced with your public production URL`);\n }\n }\n\n const authValue = String(runtimeValidation.test_auth_header_value ?? \"\").trim();\n if (!authValue || authValue.startsWith(\"replace-with-\")) {\n issues.push(\"runtime_validation.test_auth_header_value must be a dedicated review secret, not a placeholder\");\n }\n\n const requestPayload =\n runtimeValidation.request_payload ??\n runtimeValidation.test_request_body ??\n runtimeValidation.runtime_sample ??\n runtimeValidation.sample_request_payload ??\n runtimeValidation.runtime_sample_request;\n if (!isRecord(requestPayload)) {\n issues.push(\"runtime_validation.request_payload must be a JSON object\");\n }\n\n const expectedFields = runtimeValidation.expected_response_fields;\n if (!Array.isArray(expectedFields) || !expectedFields.some((item) => typeof item === \"string\" && item.trim())) {\n issues.push(\"runtime_validation.expected_response_fields must include at least one field path\");\n }\n return issues;\n}\n\nfunction ensureRuntimeValidationReady(project: LoadedProject): void {\n if (!project.runtime_validation) {\n throw new SiglumeProjectError(\n \"runtime_validation.json is required for `siglume register`. Create it with public_base_url, healthcheck_url, invoke_url, dedicated review auth header, request_payload, and expected_response_fields.\",\n );\n }\n const issues = runtimePlaceholderIssues(project.runtime_validation);\n if (issues.length > 0) {\n const path = project.runtime_validation_path ?? \"runtime_validation.json\";\n throw new SiglumeProjectError(`${path} is not ready for production registration:\\n${issues.map((issue) => `- ${issue}`).join(\"\\n\")}`);\n }\n}\n\nfunction ensureExplicitToolManual(project: LoadedProject): void {\n if (!project.tool_manual_path) {\n throw new SiglumeProjectError(\n \"tool_manual.json is required for `siglume register`. Run `siglume init`, or create a Tool Manual explicitly before registering.\",\n );\n }\n}\n\nasync function registrationPreflight(project: LoadedProject, client: SiglumeClientShape): Promise<Record<string, unknown>> {\n const manifestIssues = await projectValidationIssues(project);\n const [toolManualValid, toolManualIssues] = validate_tool_manual(project.tool_manual);\n const remoteQuality = await client.preview_quality_score(project.tool_manual);\n const requiredOauthProvidersList = requiredOauthProviders(project.manifest.required_connected_accounts ?? []);\n const oauthProviderRecords = oauthProviderRecordsMap(project.oauth_credentials);\n const missingOauthProviders = requiredOauthProvidersList.filter((provider) => !oauthProviderRecords[provider]);\n const blockingToolManualIssues = toolManualIssues.filter((issue) => issue.severity === \"error\");\n const errors = [\n ...manifestIssues.map((issue) => String(issue)),\n ...blockingToolManualIssues.map((issue) => issue.message),\n ];\n if (!toolManualValid) {\n errors.push(\"tool_manual.json is not valid for production registration\");\n }\n if (!remoteQualityOk(remoteQuality)) {\n errors.push(`remote Tool Manual quality is not publishable: ${remoteQuality.grade} (${remoteQuality.overall_score}/100)`);\n }\n if (missingOauthProviders.length > 0) {\n errors.push(`oauth_credentials.json is required for platform-managed OAuth APIs: ${missingOauthProviders.join(\", \")}`);\n }\n const preflight = {\n manifest_issues: manifestIssues,\n tool_manual_valid: toolManualValid,\n tool_manual_issues: toolManualIssues.map((issue) => toJsonable(issue)),\n remote_quality: toJsonable(remoteQuality),\n required_oauth_providers: requiredOauthProvidersList,\n oauth_credentials_path: project.oauth_credentials_path ?? null,\n oauth_missing_providers: missingOauthProviders,\n ok: errors.length === 0,\n };\n if (errors.length > 0) {\n throw new SiglumeProjectError(\n `Registration preflight failed. Fix these before calling auto-register:\\n${errors.map((error) => `- ${error}`).join(\"\\n\")}`,\n );\n }\n return preflight;\n}\n\nexport async function runRegistration(\n path = \".\",\n options: { confirm?: boolean; draft_only?: boolean; submit_review?: boolean } = {},\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const project = await loadProject(path);\n ensureExplicitToolManual(project);\n ensureManifestPublisherIdentity(project);\n ensureRuntimeValidationReady(project);\n ensureRequiredOauthCredentials(project);\n const canonicalOauthCredentials = canonicalOauthCredentialsPayload(project.oauth_credentials);\n const client = await createClient(deps);\n const preflight = await registrationPreflight(project, client);\n let developerPortalPreflight: unknown = null;\n if (String(project.manifest.price_model ?? \"free\").toLowerCase() !== \"free\") {\n const portal = await client.get_developer_portal();\n const verifiedDestination = portal.payout_readiness?.verified_destination;\n if (verifiedDestination !== true) {\n throw new SiglumeProjectError(\n \"Paid API registration requires a verified Polygon payout destination. Open https://siglume.com/owner/credits/payout and confirm the embedded-wallet payout token, or call GET /v1/market/developer/portal until payout_readiness.verified_destination is true.\",\n );\n }\n developerPortalPreflight = toJsonable(portal);\n }\n const receipt = await client.auto_register(project.manifest, project.tool_manual, {\n runtime_validation: project.runtime_validation,\n oauth_credentials: canonicalOauthCredentials,\n });\n const result: Record<string, unknown> = {\n receipt: toJsonable(receipt),\n registration_preflight: preflight,\n runtime_validation_path: project.runtime_validation_path ?? null,\n oauth_credentials_path: project.oauth_credentials_path ?? null,\n };\n if (developerPortalPreflight) {\n result.developer_portal_preflight = developerPortalPreflight;\n }\n const shouldConfirm = Boolean(options.confirm) || (options.confirm === undefined && !options.draft_only && !options.submit_review);\n if (shouldConfirm) {\n result.confirmation = toJsonable(await client.confirm_registration(receipt.listing_id));\n if (options.submit_review) {\n result.submit_review_skipped = true;\n }\n } else if (options.submit_review) {\n result.review = toJsonable(await client.submit_review(receipt.listing_id));\n }\n return result;\n}\n\nexport async function runPreflight(\n path = \".\",\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const project = await loadProject(path);\n ensureExplicitToolManual(project);\n ensureManifestPublisherIdentity(project);\n ensureRuntimeValidationReady(project);\n ensureRequiredOauthCredentials(project);\n const client = await createClient(deps);\n const preflight = await registrationPreflight(project, client);\n let developerPortalPreflight: unknown = null;\n if (String(project.manifest.price_model ?? \"free\").toLowerCase() !== \"free\") {\n const portal = await client.get_developer_portal();\n const verifiedDestination = portal.payout_readiness?.verified_destination;\n if (verifiedDestination !== true) {\n throw new SiglumeProjectError(\n \"Paid API registration requires a verified Polygon payout destination. Open https://siglume.com/owner/credits/payout and confirm the embedded-wallet payout token, or call GET /v1/market/developer/portal until payout_readiness.verified_destination is true.\",\n );\n }\n developerPortalPreflight = toJsonable(portal);\n }\n const result: Record<string, unknown> = {\n ok: true,\n adapter_path: project.adapter_path,\n registration_preflight: preflight,\n runtime_validation_path: project.runtime_validation_path ?? null,\n oauth_credentials_path: project.oauth_credentials_path ?? null,\n };\n if (developerPortalPreflight) {\n result.developer_portal_preflight = developerPortalPreflight;\n }\n return result;\n}\n\nexport async function createSupportCaseReport(\n options: { subject: string; body: string; trace_id?: string },\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const client = await createClient(deps);\n const supportCase = await client.create_support_case(options.subject, options.body, { trace_id: options.trace_id });\n return { case: toJsonable(supportCase) };\n}\n\nexport async function getUsageReport(\n options: { capability_key?: string; window: string },\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const client = await createClient(deps);\n const page = await client.get_usage({ capability_key: options.capability_key, period_key: options.window });\n const items = page.all_items ? await page.all_items() : page.items;\n return {\n window: options.window,\n capability_key: options.capability_key ?? null,\n items: items.map((item) => toJsonable(item)),\n count: items.length,\n };\n}\n\nexport async function diffJsonFiles(\n oldPath: string,\n newPath: string,\n): Promise<Record<string, unknown>> {\n const oldPayload = await loadJsonDocument(oldPath);\n const newPayload = await loadJsonDocument(newPath);\n const kind = detectDocumentKind(oldPayload, newPayload);\n const changes =\n kind === \"manifest\"\n ? diff_manifest({ old: oldPayload, new: newPayload })\n : diff_tool_manual({ old: oldPayload, new: newPayload });\n const counts = {\n breaking: changes.filter((change) => change.level === ChangeLevel.BREAKING).length,\n warning: changes.filter((change) => change.level === ChangeLevel.WARNING).length,\n info: changes.filter((change) => change.level === ChangeLevel.INFO).length,\n };\n return {\n kind,\n old_path: oldPath,\n new_path: newPath,\n exit_code: counts.breaking > 0 ? 1 : counts.warning > 0 ? 2 : 0,\n counts,\n changes: changes.map((change) => toJsonable(change)),\n };\n}\n\nexport async function runHarness(path = \".\"): Promise<Record<string, unknown>> {\n const project = await loadProject(path);\n return runHarnessForProject(project);\n}\n\nexport async function writeInitTemplate(template: TemplateName, destination: string): Promise<string[]> {\n const root = resolve(destination);\n await mkdir(root, { recursive: true });\n const adapter_path = join(root, \"adapter.ts\");\n const manifest_path = join(root, \"manifest.json\");\n const tool_manual_path = join(root, \"tool_manual.json\");\n const runtime_validation_path = join(root, \"runtime_validation.json\");\n const gitignore_path = join(root, \".gitignore\");\n const readme_path = join(root, \"README.md\");\n const docs_dir = join(root, \"docs\");\n await mkdir(docs_dir, { recursive: true });\n const docs_usage_path = join(docs_dir, \"api-usage.md\");\n\n for (const filePath of [adapter_path, manifest_path, tool_manual_path, runtime_validation_path, docs_usage_path, readme_path]) {\n if (existsSync(filePath)) {\n throw new SiglumeProjectError(`${basename(filePath)} already exists in ${root}`);\n }\n }\n\n await writeFile(adapter_path, fallbackTemplateSource(template), \"utf8\");\n const manifest = starterManifest(template);\n const toolManual = buildToolManualTemplate(manifest);\n await writeFile(manifest_path, renderJson(manifest), \"utf8\");\n await writeFile(tool_manual_path, renderJson(toolManual), \"utf8\");\n await writeFile(runtime_validation_path, renderJson(buildRuntimeValidationTemplate(toolManual)), \"utf8\");\n await writeFile(docs_usage_path, apiUsageDocsTemplate(manifest), \"utf8\");\n await writeOrMergeGitignore(gitignore_path);\n await writeFile(readme_path, readmeTemplate(template), \"utf8\");\n return [adapter_path, manifest_path, tool_manual_path, runtime_validation_path, docs_usage_path, gitignore_path, readme_path];\n}\n\nexport async function listOperationCatalog(\n options: { agent_id?: string; lang?: string } = {},\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const resolvedAgentId = String(options.agent_id ?? \"\").trim();\n const lang = String(options.lang ?? \"en\").trim() || \"en\";\n let warning: string | null = null;\n try {\n const client = await createClient(deps);\n const operations = await client.list_operations({\n agent_id: resolvedAgentId || undefined,\n lang,\n });\n return {\n agent_id: operations[0]?.agent_id ?? (resolvedAgentId || null),\n source: \"live\",\n warning: null,\n operations: operations.map((item) => toJsonable(item)),\n };\n } catch (error) {\n warning = error instanceof Error ? error.message : String(error);\n }\n const operations = fallbackOperationCatalog(resolvedAgentId || DEFAULT_OPERATION_AGENT_ID);\n return {\n agent_id: operations[0]?.agent_id ?? (resolvedAgentId || DEFAULT_OPERATION_AGENT_ID),\n source: \"fallback\",\n warning: warning || FALLBACK_OPERATION_WARNING,\n operations: operations.map((item) => toJsonable(item)),\n };\n}\n\nasync function resolveOperationMetadata(\n operation_key: string,\n options: { agent_id?: string; lang?: string } = {},\n deps: CliProjectDependencies = {},\n): Promise<{ operation: OperationMetadata; warning?: string | null }> {\n const normalizedKey = String(operation_key ?? \"\").trim();\n if (!normalizedKey) {\n throw new SiglumeProjectError(\"operation_key is required.\");\n }\n const catalog = await listOperationCatalog(options, deps);\n const items = Array.isArray(catalog.operations) ? catalog.operations : [];\n for (const item of items) {\n if (isRecord(item) && String(item.operation_key ?? \"\") === normalizedKey) {\n return {\n operation: buildOperationMetadata(item, {\n agent_id: String(item.agent_id ?? options.agent_id ?? \"\").trim() || undefined,\n source: String(item.source ?? catalog.source ?? \"fallback\"),\n }),\n warning: typeof catalog.warning === \"string\" ? catalog.warning : null,\n };\n }\n }\n throw new SiglumeProjectError(`Unknown operation key: ${normalizedKey}`);\n}\n\nfunction permissionClassFromOperation(operation: OperationMetadata): AppManifest[\"permission_class\"] {\n switch (operation.permission_class) {\n case \"action\":\n return PermissionClass.ACTION;\n case \"payment\":\n return PermissionClass.PAYMENT;\n default:\n return PermissionClass.READ_ONLY;\n }\n}\n\nfunction approvalModeFromOperation(operation: OperationMetadata): AppManifest[\"approval_mode\"] {\n switch (operation.approval_mode) {\n case \"always-ask\":\n return ApprovalMode.ALWAYS_ASK;\n case \"budget-bounded\":\n return ApprovalMode.BUDGET_BOUNDED;\n case \"deny\":\n return ApprovalMode.DENY;\n default:\n return ApprovalMode.AUTO;\n }\n}\n\nfunction toolPermissionClassFromOperation(operation: OperationMetadata): ToolManual[\"permission_class\"] {\n const permission = permissionClassFromOperation(operation);\n return toolManualPermissionClass(permission);\n}\n\nfunction operationDisplayName(operation: OperationMetadata): string {\n return `${operation.operation_key\n .replaceAll(\".\", \" \")\n .replaceAll(\"-\", \" \")\n .replaceAll(\"_\", \" \")\n .split(/\\s+/)\n .filter((chunk) => chunk.length > 0)\n .map((chunk) => `${chunk[0]?.toUpperCase() ?? \"\"}${chunk.slice(1)}`)\n .join(\" \")} Wrapper`;\n}\n\nfunction operationTaskType(operation: OperationMetadata): string {\n return `wrap_${operation.operation_key.replaceAll(\".\", \"_\").replaceAll(\"-\", \"_\")}`;\n}\n\nfunction operationClassName(operation: OperationMetadata): string {\n return `${operation.operation_key\n .replaceAll(\".\", \" \")\n .replaceAll(\"-\", \" \")\n .replaceAll(\"_\", \" \")\n .split(/\\s+/)\n .filter((chunk) => chunk.length > 0)\n .map((chunk) => `${chunk[0]?.toUpperCase() ?? \"\"}${chunk.slice(1)}`)\n .join(\"\")}WrapperApp`;\n}\n\nfunction operationTriggerConditions(operation: OperationMetadata): string[] {\n const summary = operation.summary.replace(/\\.+$/, \"\");\n const capability = operation.operation_key.replaceAll(\".\", \" \");\n if (operation.permission_class === \"action\" || operation.permission_class === \"payment\") {\n return [\n `owner explicitly asks to ${summary.toLowerCase()}`,\n `agent needs to run the first-party operation ${operation.operation_key} instead of calling an external API`,\n `request matches the owner-governance workflow described as ${capability}`,\n ];\n }\n return [\n `owner asks to inspect or review data covered by ${operation.operation_key}`,\n `agent needs the first-party platform context described as ${summary.toLowerCase()}`,\n `request matches the owner-operation workflow described as ${capability}`,\n ];\n}\n\nfunction operationDoNotUseWhen(operation: OperationMetadata): string[] {\n if (operation.permission_class === \"action\" || operation.permission_class === \"payment\") {\n return [\n \"the owner has not reviewed the preview or has not approved the requested first-party platform change\",\n \"the request is unrelated to the documented owner operation or targets the wrong owned agent\",\n ];\n }\n return [\n \"the owner wants to mutate state instead of only reading first-party platform data\",\n \"the request is unrelated to the documented owner operation\",\n ];\n}\n\nfunction operationUsageHints(operation: OperationMetadata): string[] {\n return [`Use dry_run first so the owner can review the ${operation.operation_key} preview before any live execution.`];\n}\n\nfunction operationResultHints(): string[] {\n return [\"Lead with the summary and action, then include the structured result payload for follow-up tooling.\"];\n}\n\nfunction operationErrorHints(): string[] {\n return [\"If the operation rejects the payload, surface which input field needs correction before retrying.\"];\n}\n\nfunction operationPreviewSchema(): Record<string, unknown> {\n return {\n type: \"object\",\n properties: {\n summary: { type: \"string\", description: \"Preview of the first-party operation.\" },\n operation_key: { type: \"string\", description: \"Owner operation that would run.\" },\n agent_id: { type: \"string\", description: \"Owned agent that would receive the operation.\" },\n params: { type: \"object\", description: \"Operation params after agent_id is removed from input.\" },\n },\n required: [\"summary\", \"operation_key\", \"agent_id\", \"params\"],\n additionalProperties: false,\n };\n}\n\nfunction buildOperationManifest(\n operation: OperationMetadata,\n capability_key_override?: string,\n): AppManifest {\n return {\n capability_key: String(capability_key_override ?? defaultCapabilityKeyForOperation(operation.operation_key)).trim(),\n name: operationDisplayName(operation),\n job_to_be_done: `Wrap the Siglume first-party operation \\`${operation.operation_key}\\` for owned agents.`,\n category: AppCategory.OTHER,\n store_vertical: \"api\" as const,\n permission_class: permissionClassFromOperation(operation),\n approval_mode: approvalModeFromOperation(operation),\n dry_run_supported: true,\n required_connected_accounts: [],\n price_model: PriceModel.FREE,\n jurisdiction: \"US\",\n short_description: operation.summary,\n docs_url: \"https://example.com/docs\",\n support_contact: \"support@example.com\",\n example_prompts: [`Run ${operation.operation_key} for my owned agent.`],\n };\n}\n\nfunction buildOperationToolManual(\n operation: OperationMetadata,\n manifest: AppManifest,\n): Record<string, unknown> {\n const manual: Record<string, unknown> = {\n tool_name: operation.operation_key.replaceAll(\".\", \"_\").replaceAll(\"-\", \"_\"),\n job_to_be_done: `Run the Siglume first-party operation \\`${operation.operation_key}\\` for an owned agent.`,\n summary_for_model: `Wraps the built-in Siglume owner operation \\`${operation.operation_key}\\` and returns the structured platform response.`,\n trigger_conditions: operationTriggerConditions(operation),\n do_not_use_when: operationDoNotUseWhen(operation),\n permission_class: toolPermissionClassFromOperation(operation),\n dry_run_supported: true,\n requires_connected_accounts: [],\n input_schema: structuredClone(operation.input_schema),\n output_schema: structuredClone(operation.output_schema),\n usage_hints: operationUsageHints(operation),\n result_hints: operationResultHints(),\n error_hints: operationErrorHints(),\n };\n if (manifest.permission_class === PermissionClass.ACTION || manifest.permission_class === PermissionClass.PAYMENT) {\n manual.approval_summary_template = `Run ${operation.operation_key} for {agent_id}.`;\n manual.preview_schema = operationPreviewSchema();\n manual.idempotency_support = true;\n manual.side_effect_summary = `Runs the first-party owner operation \\`${operation.operation_key}\\` against the selected owned agent.`;\n manual.jurisdiction = manifest.jurisdiction;\n }\n return manual;\n}\n\nfunction operationAdapterSource(operation: OperationMetadata, manifest: AppManifest): string {\n const className = operationClassName(operation);\n const permissionEnumName =\n manifest.permission_class === PermissionClass.ACTION\n ? \"ACTION\"\n : manifest.permission_class === PermissionClass.PAYMENT\n ? \"PAYMENT\"\n : \"READ_ONLY\";\n const approvalEnumName =\n manifest.approval_mode === ApprovalMode.ALWAYS_ASK\n ? \"ALWAYS_ASK\"\n : manifest.approval_mode === ApprovalMode.BUDGET_BOUNDED\n ? \"BUDGET_BOUNDED\"\n : manifest.approval_mode === ApprovalMode.DENY\n ? \"DENY\"\n : \"AUTO\";\n const needsApproval =\n manifest.permission_class === PermissionClass.ACTION || manifest.permission_class === PermissionClass.PAYMENT;\n const examplePrompts = JSON.stringify(manifest.example_prompts ?? []);\n return [\n `/** Generated Siglume wrapper for \\`${operation.operation_key}\\`. */`,\n \"import {\",\n \" AppAdapter,\",\n \" AppCategory,\",\n \" ApprovalMode,\",\n \" PermissionClass,\",\n \" PriceModel,\",\n \" SiglumeClient,\",\n \"} from \\\"@siglume/api-sdk\\\";\",\n \"import type { ExecutionContext, ExecutionResult, SiglumeClientShape } from \\\"@siglume/api-sdk\\\";\",\n \"import { GeneratedOperationStub } from \\\"./stubs\\\";\",\n \"\",\n `const OPERATION_KEY = ${JSON.stringify(operation.operation_key)};`,\n `const DEFAULT_AGENT_ID = ${JSON.stringify(operation.agent_id ?? DEFAULT_OPERATION_AGENT_ID)};`,\n \"const DEFAULT_LANGUAGE = \\\"en\\\";\",\n \"\",\n `export default class ${className} extends AppAdapter {`,\n \" private client: SiglumeClientShape | null;\",\n \" private stubProvider: GeneratedOperationStub;\",\n \"\",\n \" constructor(client: SiglumeClientShape | null = null, stubProvider: GeneratedOperationStub | null = null) {\",\n \" super();\",\n \" this.client = client;\",\n \" this.stubProvider = stubProvider ?? new GeneratedOperationStub(OPERATION_KEY);\",\n \" }\",\n \"\",\n \" manifest() {\",\n \" return {\",\n ` capability_key: ${JSON.stringify(manifest.capability_key)},`,\n ` name: ${JSON.stringify(manifest.name)},`,\n ` job_to_be_done: ${JSON.stringify(manifest.job_to_be_done)},`,\n \" category: AppCategory.OTHER,\",\n \" store_vertical: 'api' as const,\",\n ` permission_class: PermissionClass.${permissionEnumName},`,\n ` approval_mode: ApprovalMode.${approvalEnumName},`,\n \" dry_run_supported: true,\",\n \" required_connected_accounts: [],\",\n \" price_model: PriceModel.FREE,\",\n ` jurisdiction: ${JSON.stringify(manifest.jurisdiction)},`,\n ` short_description: ${JSON.stringify(manifest.short_description ?? \"\")},`,\n ` support_contact: ${JSON.stringify(manifest.support_contact ?? \"\")},`,\n ` docs_url: ${JSON.stringify(manifest.docs_url ?? \"\")},`,\n ` example_prompts: ${examplePrompts},`,\n \" };\",\n \" }\",\n \"\",\n \" async execute(ctx: ExecutionContext): Promise<ExecutionResult> {\",\n \" const payload = { ...(ctx.input_params ?? {}) } as Record<string, unknown>;\",\n \" const agentId = String((payload.agent_id ?? DEFAULT_AGENT_ID) || DEFAULT_AGENT_ID);\",\n \" delete payload.agent_id;\",\n \" const preview = {\",\n \" summary: `Would run ${OPERATION_KEY} for ${agentId}.`,\",\n \" operation_key: OPERATION_KEY,\",\n \" agent_id: agentId,\",\n \" params: payload,\",\n \" };\",\n \" if (ctx.execution_kind === \\\"dry_run\\\") {\",\n \" return {\",\n \" success: true,\",\n \" execution_kind: ctx.execution_kind,\",\n \" output: preview,\",\n ` needs_approval: ${needsApproval ? \"true\" : \"false\"},`,\n ...(needsApproval ? [\" approval_prompt: `Run ${OPERATION_KEY} for ${agentId}.`,\"] : []),\n \" };\",\n \" }\",\n \"\",\n \" const execution = await this.invokeOperation(agentId, payload);\",\n \" return {\",\n \" success: true,\",\n \" execution_kind: ctx.execution_kind,\",\n \" output: {\",\n \" summary: execution.message,\",\n \" action: execution.action,\",\n \" result: execution.result,\",\n \" },\",\n \" receipt_summary: {\",\n \" action: execution.action,\",\n \" operation_key: OPERATION_KEY,\",\n \" agent_id: agentId,\",\n \" },\",\n \" side_effects: ctx.execution_kind === \\\"dry_run\\\" ? [] : [\",\n \" {\",\n \" action: execution.action,\",\n \" provider: \\\"siglume_owner_operation\\\",\",\n \" external_id: agentId,\",\n \" reversible: false,\",\n \" metadata: { operation_key: OPERATION_KEY },\",\n \" },\",\n \" ],\",\n \" };\",\n \" }\",\n \"\",\n \" private async invokeOperation(agentId: string, params: Record<string, unknown>) {\",\n \" if (this.client && typeof this.client.execute_owner_operation === \\\"function\\\") {\",\n \" const result = await this.client.execute_owner_operation(agentId, OPERATION_KEY, params, { lang: DEFAULT_LANGUAGE });\",\n \" return { message: result.message, action: result.action, result: result.result };\",\n \" }\",\n \" const apiKey = typeof process !== \\\"undefined\\\" && process.env ? String(process.env.SIGLUME_API_KEY ?? \\\"\\\").trim() : \\\"\\\";\",\n \" if (apiKey) {\",\n \" const client = new SiglumeClient({ api_key: apiKey });\",\n \" const result = await client.execute_owner_operation(agentId, OPERATION_KEY, params, { lang: DEFAULT_LANGUAGE });\",\n \" return { message: result.message, action: result.action, result: result.result };\",\n \" }\",\n \" return this.stubProvider.handle(\\\"execute\\\", { operation: OPERATION_KEY, agent_id: agentId, params });\",\n \" }\",\n \"\",\n \" supported_task_types() {\",\n ` return [${JSON.stringify(operationTaskType(operation))}];`,\n \" }\",\n \"}\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction operationStubsSource(operation: OperationMetadata): string {\n return [\n `/** Generated stubs for \\`${operation.operation_key}\\`. */`,\n \"import { StubProvider } from \\\"@siglume/api-sdk\\\";\",\n \"\",\n `const OPERATION_KEY = ${JSON.stringify(operation.operation_key)};`,\n \"\",\n \"export class GeneratedOperationStub extends StubProvider {\",\n \" constructor(operationKey: string = OPERATION_KEY) {\",\n \" super(\\\"siglume_owner_operation\\\");\",\n \" this.operationKey = operationKey;\",\n \" }\",\n \"\",\n \" operationKey: string;\",\n \"\",\n \" async handle(_method: string, params: Record<string, unknown>) {\",\n ` const agentId = String(params.agent_id ?? ${JSON.stringify(operation.agent_id ?? DEFAULT_OPERATION_AGENT_ID)});`,\n \" const payload = (params.params && typeof params.params === \\\"object\\\" && !Array.isArray(params.params))\",\n \" ? { ...(params.params as Record<string, unknown>) }\",\n \" : {};\",\n \" return {\",\n \" message: `Stubbed ${this.operationKey} for ${agentId}.`,\",\n \" action: this.operationKey.replaceAll('.', '_'),\",\n \" result: {\",\n \" operation_key: this.operationKey,\",\n \" agent_id: agentId,\",\n \" stubbed: true,\",\n \" params: payload,\",\n \" },\",\n \" };\",\n \" }\",\n \"}\",\n \"\",\n \"export function buildStubs() {\",\n \" return { siglume_owner_operation: new GeneratedOperationStub() };\",\n \"}\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction operationTestSource(operation: OperationMetadata): string {\n const className = operationClassName(operation);\n const taskType = operationTaskType(operation);\n return [\n \"import { readFile } from \\\"node:fs/promises\\\";\",\n \"import { dirname, resolve } from \\\"node:path\\\";\",\n \"import { fileURLToPath } from \\\"node:url\\\";\",\n \"import { describe, expect, it } from \\\"vitest\\\";\",\n \"\",\n \"import { AppTestHarness, score_tool_manual_offline, validate_tool_manual } from \\\"@siglume/api-sdk\\\";\",\n `import ${className} from \\\"../adapter\\\";`,\n \"import { buildStubs } from \\\"../stubs\\\";\",\n \"\",\n \"const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), \\\"..\\\");\",\n \"\",\n \"describe(\\\"generated operation template\\\", () => {\",\n \" it(\\\"passes harness and quality checks\\\", async () => {\",\n ` const harness = new AppTestHarness(new ${className}(), buildStubs());`,\n \" const manual = JSON.parse(await readFile(resolve(ROOT, \\\"tool_manual.json\\\"), \\\"utf8\\\")) as Record<string, unknown>;\",\n \" const [ok, issues] = validate_tool_manual(manual);\",\n \" const report = score_tool_manual_offline(manual);\",\n \"\",\n \" expect(ok).toBe(true);\",\n \" expect(issues).toEqual([]);\",\n \" expect([\\\"A\\\", \\\"B\\\"]).toContain(report.grade);\",\n \" expect(await harness.validate_manifest()).toEqual([]);\",\n \"\",\n ` const dryRun = await harness.dry_run(${JSON.stringify(taskType)});`,\n \" expect(dryRun.success).toBe(true);\",\n ...(operation.permission_class === \"action\" || operation.permission_class === \"payment\"\n ? [\n ` const action = await harness.execute_action(${JSON.stringify(taskType)});`,\n \" expect(action.success).toBe(true);\",\n \" expect(harness.validate_receipt(action)).toEqual([]);\",\n ]\n : []),\n \" });\",\n \"});\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction operationReadmeTemplate(\n operation: OperationMetadata,\n manifest: AppManifest,\n warning?: string | null,\n): string {\n const warningLines = warning ? [`- Warning: ${warning}`] : [];\n return [\n `# ${manifest.name}`,\n \"\",\n `This starter wraps the first-party Siglume owner operation \\`${operation.operation_key}\\`.`,\n \"\",\n `- Source catalog: \\`${operation.source}\\``,\n `- Default agent_id: \\`${operation.agent_id ?? DEFAULT_OPERATION_AGENT_ID}\\``,\n `- Permission class: \\`${operation.permission_class}\\``,\n `- Approval mode: \\`${operation.approval_mode}\\``,\n ...warningLines,\n `- Route page: \\`${operation.page_href ?? \"/owner\"}\\``,\n \"\",\n \"## Generated files\",\n \"\",\n \"- `adapter.ts`: AppAdapter wrapper that previews first and then calls `SiglumeClient.execute_owner_operation()`\",\n \"- `stubs.ts`: mock fallback used when `SIGLUME_API_KEY` is not set\",\n \"- `manifest.json`: reviewable manifest snapshot\",\n \"- `tool_manual.json`: machine-generated ToolManual scaffold\",\n \"- `runtime_validation.json`: local public endpoint and review-key checks used by auto-register\",\n \"- `docs/api-usage.md`: publishable API usage guide template for `docs_url`\",\n \"- `.gitignore`: keeps runtime review keys and OAuth client secrets out of Git\",\n \"- `tests/test_adapter.ts`: smoke test for `AppTestHarness`\",\n \"\",\n \"Before registering, replace all generated placeholders:\",\n \"- In `adapter.ts` and `manifest.json`, replace `docs_url` with a dedicated public API usage guide, not a homepage.\",\n \"- Replace `support_contact` with a real support email address or public support URL.\",\n \"- Optional `seller_homepage_url` is the seller's official site and can stay blank.\",\n \"- In the local `runtime_validation.json`, replace the public URL and review-key placeholders.\",\n \"- If the API uses seller-side OAuth, create a local `oauth_credentials.json` next to the adapter.\",\n \"- Do not commit real review keys or OAuth client secrets; the generated `.gitignore` excludes those files.\",\n \"- Because `runtime_validation.json` is ignored, GitHub samples do not commit review-key values.\",\n \"\",\n \"## Commands\",\n \"\",\n \"Start locally without a Siglume API key:\",\n \"\",\n \"```bash\",\n \"siglume test .\",\n \"npm test -- tests/test_adapter.ts\",\n \"siglume score . --offline\",\n \"```\",\n \"\",\n \"After placeholders are replaced and `SIGLUME_API_KEY` is issued from Developer Portal -> CLI / API keys, run the server-aligned checks:\",\n \"\",\n \"```bash\",\n \"siglume validate .\",\n \"siglume score . --remote\",\n \"siglume preflight .\",\n \"siglume register .\",\n \"# review-only staging path:\",\n \"siglume register . --draft-only\",\n \"```\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction apiUsageDocsTemplate(manifest: AppManifest): string {\n const name = String(manifest.name ?? manifest.capability_key ?? \"Siglume API\");\n const capabilityKey = String(manifest.capability_key ?? \"replace-with-capability-key\");\n const jobToBeDone = String(manifest.job_to_be_done ?? \"Describe what this API lets an agent do.\");\n const permissionClass = String(manifest.permission_class ?? \"read-only\");\n const priceModel = String(manifest.price_model ?? \"free\");\n const requiredAccounts =\n (manifest.required_connected_accounts ?? [])\n .map((item) => connectedAccountRequirementLabel(item))\n .filter(Boolean)\n .join(\", \") || \"none\";\n const supportContact = String(manifest.support_contact ?? \"replace-with-support-contact\");\n return [\n `# ${name} API Usage Guide`,\n \"\",\n `This page is the dedicated public usage guide for the Siglume API listing \\`${capabilityKey}\\`.`,\n \"Publish this page at an anonymous HTTP 200 URL and use that URL as `docs_url`.\",\n \"\",\n \"Do not use your company homepage as `docs_url`; keep seller/company homepages in `seller_homepage_url`.\",\n \"\",\n \"## What This API Does\",\n \"\",\n jobToBeDone,\n \"\",\n \"## Permission Model\",\n \"\",\n `- Permission class: \\`${permissionClass}\\``,\n `- Price model: \\`${priceModel}\\``,\n `- Required connected accounts: \\`${requiredAccounts}\\``,\n \"\",\n \"## Inputs\",\n \"\",\n \"Describe the request fields your API accepts. Keep this aligned with `tool_manual.json` and `runtime_validation.json`.\",\n \"\",\n \"## Outputs\",\n \"\",\n \"Describe the response fields your API returns. Include the fields in `runtime_validation.expected_response_fields`.\",\n \"\",\n \"## Errors And Support\",\n \"\",\n \"Explain common error messages and how an owner should recover.\",\n \"\",\n `Support contact: ${supportContact}`,\n \"\",\n ].join(\"\\n\");\n}\n\nfunction generatedGitignore(): string {\n return [\n \"# Local secrets and registration-only runtime checks.\",\n \".env\",\n \".env.*\",\n \"!.env.example\",\n \"runtime_validation.json\",\n \"runtime-validation.json\",\n \"oauth_credentials.json\",\n \"oauth-credentials.json\",\n \"\",\n \"# Python / test artifacts.\",\n \"__pycache__/\",\n \"*.py[cod]\",\n \".pytest_cache/\",\n \".mypy_cache/\",\n \".coverage\",\n \"htmlcov/\",\n \"dist/\",\n \"build/\",\n \"*.egg-info/\",\n \"\",\n \"# JavaScript tooling if this project also uses TypeScript helpers.\",\n \"node_modules/\",\n \"coverage/\",\n \"\",\n ].join(\"\\n\");\n}\n\nasync function writeOrMergeGitignore(filePath: string): Promise<void> {\n const generated = generatedGitignore();\n if (!existsSync(filePath)) {\n await writeFile(filePath, generated, \"utf8\");\n return;\n }\n const existing = await readFile(filePath, \"utf8\");\n const existingEntries = new Set(existing.split(/\\r?\\n/).map((line) => line.trim()));\n const additions = generated.split(/\\r?\\n/).filter((line) => line.trim() && !existingEntries.has(line.trim()));\n if (additions.length === 0) {\n return;\n }\n const prefix = existing.endsWith(\"\\n\") ? existing : `${existing}\\n`;\n await writeFile(filePath, `${prefix}\\n# Siglume generated ignores.\\n${additions.join(\"\\n\")}\\n`, \"utf8\");\n}\n\nexport async function writeOperationTemplate(\n operation_key: string,\n destination: string,\n options: { capability_key?: string; agent_id?: string; lang?: string } = {},\n deps: CliProjectDependencies = {},\n): Promise<{ files: string[]; operation: OperationMetadata; report: Record<string, unknown> }> {\n const root = resolve(destination);\n await mkdir(root, { recursive: true });\n const testsDir = join(root, \"tests\");\n await mkdir(testsDir, { recursive: true });\n const adapter_path = join(root, \"adapter.ts\");\n const stubs_path = join(root, \"stubs.ts\");\n const manifest_path = join(root, \"manifest.json\");\n const tool_manual_path = join(root, \"tool_manual.json\");\n const runtime_validation_path = join(root, \"runtime_validation.json\");\n const gitignore_path = join(root, \".gitignore\");\n const readme_path = join(root, \"README.md\");\n const test_path = join(testsDir, \"test_adapter.ts\");\n const docs_dir = join(root, \"docs\");\n await mkdir(docs_dir, { recursive: true });\n const docs_usage_path = join(docs_dir, \"api-usage.md\");\n for (const filePath of [\n adapter_path,\n stubs_path,\n manifest_path,\n tool_manual_path,\n runtime_validation_path,\n docs_usage_path,\n readme_path,\n test_path,\n ]) {\n if (existsSync(filePath)) {\n throw new SiglumeProjectError(`${basename(filePath)} already exists in ${root}`);\n }\n }\n\n const { operation, warning } = await resolveOperationMetadata(operation_key, {\n agent_id: options.agent_id,\n lang: options.lang,\n }, deps);\n const manifest = buildOperationManifest(operation, options.capability_key);\n const tool_manual = buildOperationToolManual(operation, manifest);\n const [tool_manual_valid, tool_manual_issues] = validate_tool_manual(tool_manual);\n const quality = score_tool_manual_offline(tool_manual);\n if (!tool_manual_valid) {\n throw new SiglumeProjectError(\n `Generated tool manual for ${operation.operation_key} is invalid: ${tool_manual_issues.map((issue) => issue.message).join(\"; \")}`,\n );\n }\n if (![\"A\", \"B\"].includes(String(quality.grade))) {\n throw new SiglumeProjectError(\n `Generated tool manual for ${operation.operation_key} scored below publish bar: ${String(quality.grade)}`,\n );\n }\n\n await writeFile(adapter_path, operationAdapterSource(operation, manifest), \"utf8\");\n await writeFile(stubs_path, operationStubsSource(operation), \"utf8\");\n await writeFile(manifest_path, renderJson(manifest), \"utf8\");\n await writeFile(tool_manual_path, renderJson(tool_manual), \"utf8\");\n await writeFile(runtime_validation_path, renderJson(buildRuntimeValidationTemplate(tool_manual)), \"utf8\");\n await writeFile(docs_usage_path, apiUsageDocsTemplate(manifest), \"utf8\");\n await writeOrMergeGitignore(gitignore_path);\n await writeFile(readme_path, operationReadmeTemplate(operation, manifest, warning), \"utf8\");\n await writeFile(test_path, operationTestSource(operation), \"utf8\");\n return {\n files: [\n adapter_path,\n stubs_path,\n manifest_path,\n tool_manual_path,\n runtime_validation_path,\n docs_usage_path,\n gitignore_path,\n readme_path,\n test_path,\n ],\n operation,\n report: {\n tool_manual_valid,\n tool_manual_issues: (tool_manual_issues as ToolManualIssue[]).map((issue) => toJsonable(issue)),\n quality: toJsonable(quality),\n warning: warning ?? null,\n },\n };\n}\n\nasync function projectValidationIssues(project: LoadedProject): Promise<string[]> {\n const harness = new AppTestHarness(project.app);\n return harness.validate_manifest();\n}\n\nasync function runHarnessForProject(project: LoadedProject): Promise<Record<string, unknown>> {\n const harness = new AppTestHarness(project.app);\n const manifest_issues = await harness.validate_manifest();\n const health = await harness.health();\n const task_type = project.app.supported_task_types()[0] ?? \"default\";\n const sample_input = sampleInputFromSchema(project.tool_manual.input_schema);\n\n const checks: Array<Record<string, unknown>> = [\n {\n name: \"manifest_validation\",\n ok: manifest_issues.length === 0,\n details: manifest_issues,\n },\n {\n name: \"health\",\n ok: Boolean(health.healthy),\n details: { healthy: health.healthy, message: health.message ?? \"\" },\n },\n ];\n\n checks.push(executionCheck(\"dry_run\", await harness.dry_run(task_type, { input_params: sample_input }), harness));\n if (project.manifest.permission_class === PermissionClass.ACTION || project.manifest.permission_class === PermissionClass.PAYMENT) {\n checks.push(executionCheck(\"action\", await harness.execute_action(task_type, { input_params: sample_input }), harness));\n }\n if (project.manifest.permission_class === PermissionClass.PAYMENT) {\n checks.push(executionCheck(\"quote\", await harness.execute_quote(task_type, { input_params: sample_input }), harness));\n checks.push(executionCheck(\"payment\", await harness.execute_payment(task_type, { input_params: sample_input }), harness));\n }\n checks.push(\n executionCheck(\n \"missing_account_simulation\",\n await harness.simulate_connected_account_missing(task_type, { input_params: sample_input }),\n harness,\n ),\n );\n\n return {\n adapter_path: project.adapter_path,\n task_type,\n sample_input,\n checks,\n ok: checks.every((check) => check.ok),\n };\n}\n\nfunction executionCheck(name: string, result: ExecutionResult, harness: AppTestHarness): Record<string, unknown> {\n const receipt_issues = harness.validate_receipt(result);\n return {\n name,\n ok: Boolean(result.success) && receipt_issues.length === 0,\n details: {\n success: Boolean(result.success),\n execution_kind: result.execution_kind,\n receipt_issues,\n output: toJsonable(result.output ?? {}),\n },\n };\n}\n\nfunction toolManualPermissionClass(permission_class: AppManifest[\"permission_class\"]): ToolManual[\"permission_class\"] {\n switch (permission_class) {\n case PermissionClass.ACTION:\n return ToolManualPermissionClass.ACTION;\n case PermissionClass.PAYMENT:\n return ToolManualPermissionClass.PAYMENT;\n default:\n return ToolManualPermissionClass.READ_ONLY;\n }\n}\n\nasync function loadJsonDocument(path: string): Promise<Record<string, unknown>> {\n const payload = JSON.parse(await readFile(path, \"utf8\")) as unknown;\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) {\n throw new SiglumeProjectError(`${path} must contain a top-level JSON object.`);\n }\n return payload as Record<string, unknown>;\n}\n\nfunction detectDocumentKind(\n oldPayload: Record<string, unknown>,\n newPayload: Record<string, unknown>,\n): \"manifest\" | \"tool_manual\" {\n const oldKind = payloadKind(oldPayload);\n const newKind = payloadKind(newPayload);\n if (oldKind !== newKind) {\n throw new SiglumeProjectError(\"Both files must be the same document type (manifest or tool_manual).\");\n }\n if (!oldKind) {\n throw new SiglumeProjectError(\"Could not detect document type. Expected AppManifest or ToolManual JSON.\");\n }\n return oldKind;\n}\n\nfunction payloadKind(payload: Record<string, unknown>): \"manifest\" | \"tool_manual\" | null {\n // ToolManual takes precedence over AppManifest when both identity keys\n // are present: a manifest has no `tool_name` field, so the presence of\n // `tool_name` is a stronger signal. This avoids misclassifying a\n // ToolManual payload (that happens to carry capability_key metadata)\n // as a manifest, which would silently hide ToolManual-specific\n // breaking changes (e.g. input_schema.required additions).\n if (isToolManualPayload(payload)) {\n return \"tool_manual\";\n }\n if (isManifestPayload(payload)) {\n return \"manifest\";\n }\n return null;\n}\n\nfunction isManifestPayload(payload: Record<string, unknown>): boolean {\n // Identify AppManifest by its unique capability_key (format-checked).\n // Other fields have defaults in the dataclass shape, so requiring them\n // would reject legitimate minimal / legacy manifests; the diff engine\n // already normalizes missing defaults.\n const key = payload.capability_key;\n return typeof key === \"string\" && CAPABILITY_KEY_RE.test(key);\n}\n\nfunction isToolManualPayload(payload: Record<string, unknown>): boolean {\n // Identify ToolManual by tool_name. AppManifest has no tool_name field,\n // so this is unambiguous against manifests. Optional fields are not\n // required for discrimination — the diff engine fills in defaults.\n const toolName = payload.tool_name;\n return typeof toolName === \"string\" && toolName.trim().length > 0;\n}\n\nasync function findAdapterPath(target: string): Promise<string> {\n if (existsSync(target) && SUPPORTED_EXTENSIONS.has(extname(target))) {\n return target;\n }\n\n const preferred = join(target, \"adapter.ts\");\n if (existsSync(preferred)) {\n return preferred;\n }\n\n const entries = await readdir(target, { withFileTypes: true });\n const candidates = entries\n .filter((entry) => entry.isFile() && SUPPORTED_EXTENSIONS.has(extname(entry.name)))\n .map((entry) => join(target, entry.name))\n .filter((filePath) => basename(filePath) !== \"register_via_client.ts\");\n\n if (candidates.length === 0) {\n throw new SiglumeProjectError(`No adapter TypeScript/JavaScript file found in ${target}`);\n }\n if (candidates.length > 1) {\n throw new SiglumeProjectError(`Multiple adapter files found in ${target}. Pass the adapter file path explicitly.`);\n }\n return candidates[0]!;\n}\n\nasync function findToolManualPath(root_dir: string): Promise<string | null> {\n for (const name of [\"tool_manual.json\", \"tool-manual.json\"]) {\n const candidate = join(root_dir, name);\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return null;\n}\n\nasync function findRuntimeValidationPath(root_dir: string): Promise<string | null> {\n for (const name of [\"runtime_validation.json\", \"runtime-validation.json\"]) {\n const candidate = join(root_dir, name);\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return null;\n}\n\nasync function findOauthCredentialsPath(root_dir: string): Promise<string | null> {\n for (const name of [\"oauth_credentials.json\", \"oauth-credentials.json\"]) {\n const candidate = join(root_dir, name);\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return null;\n}\n\nasync function loadJsonObject(path: string, label: string): Promise<Record<string, unknown>> {\n let payload: unknown;\n try {\n payload = JSON.parse(await readFile(path, \"utf8\"));\n } catch (error) {\n throw new SiglumeProjectError(`${basename(path)} is not valid JSON: ${String(error)}`);\n }\n if (!isRecord(payload)) {\n throw new SiglumeProjectError(`${label} must be a JSON object`);\n }\n return payload;\n}\n\nasync function loadApp(adapter_path: string): Promise<AppAdapter> {\n const jiti = createJiti(process.cwd(), { moduleCache: false });\n const loaded = (await jiti.import(adapter_path)) as Record<string, unknown>;\n const candidates = [loaded.default, ...Object.values(loaded)];\n const seen = new Set<unknown>();\n const matches: AppAdapter[] = [];\n\n for (const candidate of candidates) {\n if (candidate === undefined || seen.has(candidate)) {\n continue;\n }\n seen.add(candidate);\n if (candidate instanceof AppAdapter) {\n matches.push(candidate);\n continue;\n }\n if (\n typeof candidate === \"function\" &&\n (candidate.prototype instanceof AppAdapter ||\n (typeof candidate.prototype?.manifest === \"function\" && typeof candidate.prototype?.execute === \"function\"))\n ) {\n matches.push(new (candidate as new () => AppAdapter)());\n continue;\n }\n if (\n candidate &&\n typeof candidate === \"object\" &&\n \"manifest\" in candidate &&\n typeof (candidate as { manifest?: unknown }).manifest === \"function\" &&\n \"execute\" in candidate &&\n typeof (candidate as { execute?: unknown }).execute === \"function\"\n ) {\n matches.push(candidate as AppAdapter);\n }\n }\n\n if (matches.length === 0) {\n throw new SiglumeProjectError(`No AppAdapter subclass found in ${adapter_path}`);\n }\n if (matches.length > 1) {\n throw new SiglumeProjectError(`Multiple AppAdapter subclasses found in ${adapter_path}. Keep one per file for CLI workflows.`);\n }\n return matches[0]!;\n}\n\nfunction sampleInputFromSchema(schema: unknown): Record<string, unknown> {\n if (!schema || typeof schema !== \"object\" || Array.isArray(schema)) {\n return { query: \"Run a representative test request.\" };\n }\n const properties = (schema as Record<string, unknown>).properties;\n const required = Array.isArray((schema as Record<string, unknown>).required)\n ? ((schema as Record<string, unknown>).required as unknown[]).filter((item): item is string => typeof item === \"string\")\n : [];\n if (!properties || typeof properties !== \"object\" || Array.isArray(properties)) {\n return { query: \"Run a representative test request.\" };\n }\n const requiredFields = required.length > 0 ? required : Object.keys(properties);\n const output: Record<string, unknown> = {};\n for (const [fieldName, propertySchema] of Object.entries(properties)) {\n if (requiredFields.includes(fieldName)) {\n output[fieldName] = sampleValueFromProperty(propertySchema);\n }\n }\n return Object.keys(output).length > 0 ? output : { query: \"Run a representative test request.\" };\n}\n\nfunction sampleValueFromProperty(schema: unknown): unknown {\n if (!schema || typeof schema !== \"object\" || Array.isArray(schema)) {\n return \"sample\";\n }\n const property = schema as Record<string, unknown>;\n if (\"default\" in property) {\n return property.default;\n }\n if (Array.isArray(property.enum) && property.enum.length > 0) {\n return property.enum[0];\n }\n switch (property.type) {\n case \"integer\":\n return 1;\n case \"number\":\n return 1.0;\n case \"boolean\":\n return true;\n case \"array\":\n return [sampleValueFromProperty(property.items)];\n case \"object\":\n if (property.properties && typeof property.properties === \"object\" && !Array.isArray(property.properties)) {\n return Object.fromEntries(\n Object.entries(property.properties as Record<string, unknown>).map(([key, value]) => [key, sampleValueFromProperty(value)]),\n );\n }\n return {};\n default:\n return \"sample\";\n }\n}\n\nasync function resolveApiKey(env: Record<string, string | undefined> = process.env): Promise<string> {\n const envValue = env.SIGLUME_API_KEY;\n if (envValue) {\n return envValue;\n }\n const credentialsPath = join(homedir(), \".siglume\", \"credentials.toml\");\n if (existsSync(credentialsPath)) {\n const text = await readFile(credentialsPath, \"utf8\");\n const topLevel = text.match(/^\\s*api_key\\s*=\\s*[\"']([^\"']+)[\"']/m);\n if (topLevel?.[1]) {\n return topLevel[1].trim();\n }\n const defaultSection = text.match(/\\[default\\]([\\s\\S]*)/m)?.[1] ?? \"\";\n const nested = defaultSection.match(/^\\s*api_key\\s*=\\s*[\"']([^\"']+)[\"']/m);\n if (nested?.[1]) {\n return nested[1].trim();\n }\n }\n throw new SiglumeProjectError(\"SIGLUME_API_KEY is not set. Export it or add api_key to ~/.siglume/credentials.toml.\");\n}\n\nfunction fallbackTemplateSource(template: TemplateName): string {\n const className = {\n echo: \"StarterEchoApp\",\n \"price-compare\": \"StarterPriceCompareApp\",\n publisher: \"StarterPublisherApp\",\n payment: \"StarterPaymentApp\",\n }[template];\n const permissionClass = {\n echo: \"PermissionClass.READ_ONLY\",\n \"price-compare\": \"PermissionClass.READ_ONLY\",\n publisher: \"PermissionClass.ACTION\",\n payment: \"PermissionClass.PAYMENT\",\n }[template];\n const approvalMode = {\n echo: \"ApprovalMode.AUTO\",\n \"price-compare\": \"ApprovalMode.AUTO\",\n publisher: \"ApprovalMode.ALWAYS_ASK\",\n payment: \"ApprovalMode.ALWAYS_ASK\",\n }[template];\n\n return [\n \"import {\",\n \" AppAdapter,\",\n \" AppCategory,\",\n \" ApprovalMode,\",\n \" ExecutionResult,\",\n \" PermissionClass,\",\n \" PriceModel,\",\n \"} from \\\"@siglume/api-sdk\\\";\",\n \"\",\n `export default class ${className} extends AppAdapter {`,\n \" manifest() {\",\n \" return {\",\n ` capability_key: \\\"${template}-starter\\\",`,\n ` name: \\\"${className}\\\",`,\n \" job_to_be_done: \\\"Describe what this starter API should do.\\\",\",\n \" category: AppCategory.OTHER,\",\n \" store_vertical: 'api' as const,\",\n ` permission_class: ${permissionClass},`,\n ` approval_mode: ${approvalMode},`,\n \" dry_run_supported: true,\",\n \" required_connected_accounts: [],\",\n \" price_model: PriceModel.FREE,\",\n \" jurisdiction: \\\"US\\\",\",\n \" short_description: \\\"Starter template generated by siglume init.\\\",\",\n \" support_contact: \\\"support@example.com\\\",\",\n \" docs_url: \\\"https://example.com/docs\\\",\",\n \" example_prompts: [\\\"Describe a realistic prompt for this API.\\\"],\",\n \" compatibility_tags: [\\\"starter\\\"],\",\n \" };\",\n \" }\",\n \"\",\n \" async execute(ctx) {\",\n \" return {\",\n \" success: true,\",\n \" execution_kind: ctx.execution_kind,\",\n \" output: {\",\n \" summary: \\\"Starter execution completed.\\\",\",\n \" input: ctx.input_params,\",\n \" },\",\n \" };\",\n \" }\",\n \"}\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction starterManifest(template: TemplateName): AppManifest {\n const className = {\n echo: \"StarterEchoApp\",\n \"price-compare\": \"StarterPriceCompareApp\",\n publisher: \"StarterPublisherApp\",\n payment: \"StarterPaymentApp\",\n }[template];\n const permission_class = {\n echo: PermissionClass.READ_ONLY,\n \"price-compare\": PermissionClass.READ_ONLY,\n publisher: PermissionClass.ACTION,\n payment: PermissionClass.PAYMENT,\n }[template];\n const approval_mode = {\n echo: \"auto\",\n \"price-compare\": \"auto\",\n publisher: \"always-ask\",\n payment: \"always-ask\",\n } as const;\n return {\n capability_key: `${template}-starter`,\n name: className,\n job_to_be_done: \"Describe what this starter API should do.\",\n category: \"other\",\n store_vertical: \"api\" as const,\n permission_class,\n approval_mode: approval_mode[template],\n dry_run_supported: true,\n required_connected_accounts: [],\n price_model: \"free\",\n jurisdiction: \"US\",\n short_description: \"Starter template generated by siglume init.\",\n support_contact: \"support@example.com\",\n docs_url: \"https://example.com/docs\",\n example_prompts: [\"Describe a realistic prompt for this API.\"],\n compatibility_tags: [\"starter\"],\n };\n}\n\nfunction readmeTemplate(template: TemplateName): string {\n return [\n \"# Siglume Starter\",\n \"\",\n `This project was generated with \\`siglume init --template ${template}\\`.`,\n \"\",\n \"Files:\",\n \"- `adapter.ts`: your AppAdapter implementation\",\n \"- `manifest.json`: serialized AppManifest snapshot\",\n \"- `tool_manual.json`: editable ToolManual draft for validation and registration\",\n \"- `runtime_validation.json`: local live API smoke-test contract used during registration\",\n \"- `docs/api-usage.md`: publish this page and use its public URL as `docs_url`\",\n \"- `.gitignore`: keeps runtime review keys and OAuth client secrets out of Git\",\n \"\",\n \"Before registering, replace all generated placeholders:\",\n \"- In `adapter.ts` and `manifest.json`, replace `docs_url` with a dedicated public API usage guide, not a homepage.\",\n \"- Replace `support_contact` with a real support email address or public support URL.\",\n \"- Optional `seller_homepage_url` is the seller's official site and can stay blank.\",\n \"- In the local `runtime_validation.json`, replace the public URL and review-key placeholders.\",\n \"- If the API uses seller-side OAuth, create a local `oauth_credentials.json` next to the adapter.\",\n \"- Do not commit real review keys or OAuth client secrets; the generated `.gitignore` excludes those files.\",\n \"- Because `runtime_validation.json` is ignored, GitHub samples do not commit review-key values.\",\n \"\",\n \"Suggested workflow:\",\n \"\",\n \"Start locally without a Siglume API key:\",\n \"\",\n \"```bash\",\n \"siglume test .\",\n \"siglume score . --offline\",\n \"```\",\n \"\",\n \"After placeholders are replaced and `SIGLUME_API_KEY` is issued from Developer Portal -> CLI / API keys, run the server-aligned checks:\",\n \"\",\n \"```bash\",\n \"siglume validate .\",\n \"siglume score . --remote\",\n \"siglume preflight .\",\n \"siglume register .\",\n \"# review-only staging path:\",\n \"siglume register . --draft-only\",\n \"```\",\n \"\",\n ].join(\"\\n\");\n}\n","import type { AppManifest, JsonValue, ToolManual } from \"./types\";\nimport { coerceMapping, isRecord, toJsonable } from \"./utils\";\n\nconst MANIFEST_PERMISSION_ORDER: Record<string, number> = {\n \"read-only\": 0,\n recommendation: 0,\n action: 1,\n payment: 2,\n};\nconst TOOL_MANUAL_PERMISSION_ORDER: Record<string, number> = {\n read_only: 0,\n action: 1,\n payment: 2,\n};\nconst SPECIAL_MANIFEST_KEYS = new Set([\n \"version\",\n \"name\",\n \"short_description\",\n \"permission_class\",\n \"price_model\",\n \"currency\",\n \"jurisdiction\",\n]);\nconst SPECIAL_TOOL_MANUAL_KEYS = new Set([\n \"input_schema\",\n \"output_schema\",\n \"permission_class\",\n \"settlement_mode\",\n \"currency\",\n \"side_effect_summary\",\n \"jurisdiction\",\n \"trigger_conditions\",\n \"do_not_use_when\",\n \"approval_summary_template\",\n]);\n\nexport const ChangeLevel = {\n BREAKING: \"breaking\",\n WARNING: \"warning\",\n INFO: \"info\",\n} as const;\nexport type ChangeLevel = (typeof ChangeLevel)[keyof typeof ChangeLevel];\n\nexport const BreakingChange = ChangeLevel.BREAKING;\n\nexport interface Change {\n level: ChangeLevel;\n path: string;\n old: JsonValue | Record<string, unknown> | unknown[] | null;\n new: JsonValue | Record<string, unknown> | unknown[] | null;\n message: string;\n is_breaking: boolean;\n}\n\nexport function diff_manifest(options: {\n old: AppManifest | Record<string, unknown>;\n new: AppManifest | Record<string, unknown>;\n}): Change[] {\n const oldPayload = normalizeManifest(options.old);\n const newPayload = normalizeManifest(options.new);\n const changes: Change[] = [];\n const emittedKeys = new Set<string>();\n\n appendPermissionClassChange(\n changes,\n emittedKeys,\n \"permission_class\",\n oldPayload.permission_class,\n newPayload.permission_class,\n MANIFEST_PERMISSION_ORDER,\n \"Manifest permission_class escalated; existing callers may now require stronger approval.\",\n \"Manifest permission_class downgraded.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"price_model\",\n oldPayload.price_model,\n newPayload.price_model,\n \"Manifest price_model changed; billing compatibility may break existing installs.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"currency\",\n oldPayload.currency,\n newPayload.currency,\n \"Manifest currency changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"jurisdiction\",\n oldPayload.jurisdiction,\n newPayload.jurisdiction,\n \"Manifest jurisdiction changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.INFO,\n \"version\",\n oldPayload.version,\n newPayload.version,\n \"Manifest version changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.INFO,\n \"name\",\n oldPayload.name,\n newPayload.name,\n \"Manifest display name changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.INFO,\n \"short_description\",\n oldPayload.short_description,\n newPayload.short_description,\n \"Manifest short_description changed.\",\n );\n\n for (const key of [...new Set([...Object.keys(oldPayload), ...Object.keys(newPayload)])].sort()) {\n if (emittedKeys.has(key) || SPECIAL_MANIFEST_KEYS.has(key)) {\n continue;\n }\n const oldValue = oldPayload[key];\n const newValue = newPayload[key];\n if (valuesDiffer(oldValue, newValue)) {\n changes.push(createChange(ChangeLevel.INFO, key, oldValue, newValue, `Manifest field '${key}' changed.`));\n }\n }\n\n return sortChanges(changes);\n}\n\nexport function diff_tool_manual(options: {\n old: ToolManual | Record<string, unknown>;\n new: ToolManual | Record<string, unknown>;\n}): Change[] {\n const oldPayload = normalizeToolManual(options.old);\n const newPayload = normalizeToolManual(options.new);\n const changes: Change[] = [];\n const emittedKeys = new Set<string>();\n\n const oldRequired = stringList(toRecordValue(oldPayload.input_schema).required);\n const newRequired = stringList(toRecordValue(newPayload.input_schema).required);\n const addedRequired = [...new Set(newRequired.filter((fieldName) => !oldRequired.includes(fieldName)))].sort();\n const removedRequired = [...new Set(oldRequired.filter((fieldName) => !newRequired.includes(fieldName)))].sort();\n if (addedRequired.length > 0) {\n changes.push(\n createChange(\n ChangeLevel.BREAKING,\n \"input_schema.required\",\n oldRequired,\n newRequired,\n `input_schema.required added new required fields: ${addedRequired.join(\", \")}.`,\n ),\n );\n emittedKeys.add(\"input_schema\");\n }\n if (removedRequired.length > 0) {\n changes.push(\n createChange(\n ChangeLevel.INFO,\n \"input_schema.required\",\n oldRequired,\n newRequired,\n `input_schema.required removed fields: ${removedRequired.join(\", \")}.`,\n ),\n );\n emittedKeys.add(\"input_schema\");\n }\n\n appendPermissionClassChange(\n changes,\n emittedKeys,\n \"permission_class\",\n oldPayload.permission_class,\n newPayload.permission_class,\n TOOL_MANUAL_PERMISSION_ORDER,\n \"ToolManual permission_class escalated; existing callers may now require stronger approval.\",\n \"ToolManual permission_class downgraded.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"settlement_mode\",\n oldPayload.settlement_mode,\n newPayload.settlement_mode,\n \"ToolManual settlement_mode changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"currency\",\n oldPayload.currency,\n newPayload.currency,\n \"ToolManual currency changed.\",\n );\n if (valuesDiffer(oldPayload.side_effect_summary, newPayload.side_effect_summary)) {\n const oldSideEffect = oldPayload.side_effect_summary ?? null;\n const newSideEffect = newPayload.side_effect_summary ?? null;\n const level =\n isBlank(oldSideEffect) && !isBlank(newSideEffect)\n ? ChangeLevel.BREAKING\n : !isBlank(oldSideEffect) && isBlank(newSideEffect)\n ? ChangeLevel.INFO\n : ChangeLevel.BREAKING;\n const message =\n isBlank(oldSideEffect) && !isBlank(newSideEffect)\n ? \"ToolManual side_effect_summary was added, introducing a new side-effect contract.\"\n : !isBlank(oldSideEffect) && isBlank(newSideEffect)\n ? \"ToolManual side_effect_summary was removed.\"\n : \"ToolManual side_effect_summary changed.\";\n changes.push(\n createChange(\n level,\n \"side_effect_summary\",\n oldSideEffect,\n newSideEffect,\n message,\n ),\n );\n emittedKeys.add(\"side_effect_summary\");\n }\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"jurisdiction\",\n oldPayload.jurisdiction,\n newPayload.jurisdiction,\n \"ToolManual jurisdiction changed.\",\n );\n\n const oldOutputProperties = toRecordValue(toRecordValue(oldPayload.output_schema).properties);\n const newOutputProperties = toRecordValue(toRecordValue(newPayload.output_schema).properties);\n const oldOutputFields = Object.keys(oldOutputProperties).sort();\n const newOutputFields = Object.keys(newOutputProperties).sort();\n const addedOutputFields = [...new Set(newOutputFields.filter((fieldName) => !oldOutputFields.includes(fieldName)))].sort();\n const removedOutputFields = [...new Set(oldOutputFields.filter((fieldName) => !newOutputFields.includes(fieldName)))].sort();\n const changedOutputFields = [...new Set(\n oldOutputFields\n .filter((fieldName) => newOutputFields.includes(fieldName))\n .filter((fieldName) => valuesDiffer(oldOutputProperties[fieldName], newOutputProperties[fieldName])),\n )].sort();\n if (addedOutputFields.length > 0) {\n changes.push(\n createChange(\n ChangeLevel.WARNING,\n \"output_schema.properties\",\n oldOutputFields,\n newOutputFields,\n `output_schema added fields: ${addedOutputFields.join(\", \")}.`,\n ),\n );\n emittedKeys.add(\"output_schema\");\n }\n if (removedOutputFields.length > 0) {\n changes.push(\n createChange(\n ChangeLevel.BREAKING,\n \"output_schema.properties\",\n oldOutputFields,\n newOutputFields,\n `output_schema removed fields: ${removedOutputFields.join(\", \")}.`,\n ),\n );\n emittedKeys.add(\"output_schema\");\n }\n if (changedOutputFields.length > 0) {\n changes.push(\n createChange(\n ChangeLevel.WARNING,\n \"output_schema.properties\",\n oldOutputFields,\n newOutputFields,\n `output_schema changed field definitions: ${changedOutputFields.join(\", \")}.`,\n ),\n );\n emittedKeys.add(\"output_schema\");\n }\n\n appendLargeListChange(\n changes,\n emittedKeys,\n \"trigger_conditions\",\n stringList(oldPayload.trigger_conditions),\n stringList(newPayload.trigger_conditions),\n \"trigger_conditions changed substantially.\",\n \"trigger_conditions changed.\",\n );\n appendLargeListChange(\n changes,\n emittedKeys,\n \"do_not_use_when\",\n stringList(oldPayload.do_not_use_when),\n stringList(newPayload.do_not_use_when),\n \"do_not_use_when changed substantially.\",\n \"do_not_use_when changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.WARNING,\n \"approval_summary_template\",\n oldPayload.approval_summary_template,\n newPayload.approval_summary_template,\n \"approval_summary_template changed.\",\n );\n\n for (const key of [...new Set([...Object.keys(oldPayload), ...Object.keys(newPayload)])].sort()) {\n if (emittedKeys.has(key) || SPECIAL_TOOL_MANUAL_KEYS.has(key)) {\n continue;\n }\n const oldValue = oldPayload[key];\n const newValue = newPayload[key];\n if (valuesDiffer(oldValue, newValue)) {\n changes.push(createChange(ChangeLevel.INFO, key, oldValue, newValue, `ToolManual field '${key}' changed.`));\n }\n }\n\n return sortChanges(changes);\n}\n\nfunction appendLargeListChange(\n changes: Change[],\n emittedKeys: Set<string>,\n key: string,\n oldItems: string[],\n newItems: string[],\n warningMessage: string,\n infoMessage: string,\n): void {\n if (sameArray(oldItems, newItems)) {\n return;\n }\n const level = isMajorListChange(oldItems, newItems) ? ChangeLevel.WARNING : ChangeLevel.INFO;\n changes.push(createChange(level, key, oldItems, newItems, level === ChangeLevel.WARNING ? warningMessage : infoMessage));\n emittedKeys.add(key);\n}\n\nfunction appendPermissionClassChange(\n changes: Change[],\n emittedKeys: Set<string>,\n key: string,\n oldValue: unknown,\n newValue: unknown,\n rankMap: Record<string, number>,\n escalateMessage: string,\n downgradeMessage: string,\n): void {\n if (!valuesDiffer(oldValue, newValue)) {\n return;\n }\n const oldRank = typeof oldValue === \"string\" ? rankMap[oldValue] : undefined;\n const newRank = typeof newValue === \"string\" ? rankMap[newValue] : undefined;\n const level =\n oldRank !== undefined && newRank !== undefined && newRank > oldRank\n ? ChangeLevel.BREAKING\n : ChangeLevel.INFO;\n const message =\n oldRank !== undefined && newRank !== undefined && newRank > oldRank\n ? escalateMessage\n : oldRank !== undefined && newRank !== undefined && newRank < oldRank\n ? downgradeMessage\n : `${key} changed.`;\n changes.push(createChange(level, key, oldValue, newValue, message));\n emittedKeys.add(key);\n}\n\nfunction appendValueChange(\n changes: Change[],\n emittedKeys: Set<string>,\n level: ChangeLevel,\n key: string,\n oldValue: unknown,\n newValue: unknown,\n message: string,\n): void {\n if (valuesDiffer(oldValue, newValue)) {\n changes.push(createChange(level, key, oldValue, newValue, message));\n emittedKeys.add(key);\n }\n}\n\nfunction normalizeManifest(value: AppManifest | Record<string, unknown>): Record<string, unknown> {\n const payload = coerceMapping(value, \"manifest\");\n return {\n ...payload,\n price_model: payload.price_model ?? \"free\",\n currency: payload.currency ?? \"USD\",\n // AppManifest defaults permission_class to \"read-only\" (hyphen form,\n // PermissionClass.READ_ONLY). Without this default, a legacy / minimal\n // manifest without permission_class compared against an upgraded one\n // would leave oldRank undefined and appendPermissionClassChange would\n // downgrade the permission escalation from BREAKING to INFO — letting\n // the diff CLI exit 0 on a genuinely breaking change.\n permission_class: payload.permission_class ?? \"read-only\",\n };\n}\n\nfunction normalizeToolManual(value: ToolManual | Record<string, unknown>): Record<string, unknown> {\n const payload = coerceMapping(value, \"tool manual\");\n return {\n ...payload,\n permission_class: payload.permission_class ?? \"read_only\",\n requires_connected_accounts: stringList(payload.requires_connected_accounts),\n };\n}\n\nfunction createChange(\n level: ChangeLevel,\n path: string,\n oldValue: unknown,\n newValue: unknown,\n message: string,\n): Change {\n return {\n level,\n path,\n old: normalizeForChange(oldValue),\n new: normalizeForChange(newValue),\n message,\n is_breaking: level === ChangeLevel.BREAKING,\n };\n}\n\nfunction normalizeForChange(value: unknown): JsonValue | Record<string, unknown> | unknown[] | null {\n if (value === undefined) {\n return null;\n }\n const normalized = toJsonable(value);\n if (normalized === undefined) {\n return null;\n }\n return normalized as JsonValue | Record<string, unknown> | unknown[] | null;\n}\n\nfunction toRecordValue(value: unknown): Record<string, unknown> {\n return isRecord(value) ? { ...value } : {};\n}\n\nfunction stringList(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction valuesDiffer(left: unknown, right: unknown): boolean {\n return JSON.stringify(stableValue(normalizeForChange(left))) !== JSON.stringify(stableValue(normalizeForChange(right)));\n}\n\nfunction sameArray(left: string[], right: string[]): boolean {\n return left.length === right.length && left.every((value, index) => value === right[index]);\n}\n\nfunction isBlank(value: unknown): boolean {\n return typeof value !== \"string\" || value.trim().length === 0;\n}\n\nfunction isMajorListChange(oldItems: string[], newItems: string[]): boolean {\n const oldSet = new Set(oldItems.map((item) => item.trim().toLowerCase()).filter(Boolean));\n const newSet = new Set(newItems.map((item) => item.trim().toLowerCase()).filter(Boolean));\n if (oldSet.size === newSet.size && [...oldSet].every((item) => newSet.has(item))) {\n return false;\n }\n if (oldSet.size === 0 || newSet.size === 0) {\n return true;\n }\n const union = new Set([...oldSet, ...newSet]);\n const intersection = [...oldSet].filter((item) => newSet.has(item));\n const similarity = intersection.length / union.size;\n return similarity < 0.5 || (similarity === 0.5 && Math.abs(oldSet.size - newSet.size) >= 1);\n}\n\nfunction sortChanges(changes: Change[]): Change[] {\n const priority: Record<ChangeLevel, number> = {\n [ChangeLevel.BREAKING]: 0,\n [ChangeLevel.WARNING]: 1,\n [ChangeLevel.INFO]: 2,\n };\n return [...changes].sort((left, right) => {\n const levelDelta = priority[left.level] - priority[right.level];\n return levelDelta !== 0 ? levelDelta : left.path.localeCompare(right.path);\n });\n}\n\nfunction stableValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((item) => stableValue(item));\n }\n if (isRecord(value)) {\n return Object.fromEntries(\n Object.keys(value)\n .sort()\n .map((key) => [key, stableValue((value as Record<string, unknown>)[key])]),\n );\n }\n return value;\n}\n","import type { SettlementReceipt } from \"./web3\";\n\nexport type Awaitable<T> = T | Promise<T>;\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonValue = JsonPrimitive | JsonObject | JsonValue[];\nexport interface JsonObject {\n [key: string]: JsonValue;\n}\n\n/**\n * Permission tiers for AppManifest.\n *\n * Supported tiers: READ_ONLY / ACTION / PAYMENT.\n * RECOMMENDATION is a deprecated alias of READ_ONLY retained for backward\n * compatibility; ToolManualPermissionClass has never accepted it and the\n * platform normalizes it to \"read-only\" at registration. Do not use\n * RECOMMENDATION in new manifests — it will be removed in a future major\n * version.\n */\nexport const PermissionClass = {\n READ_ONLY: \"read-only\",\n ACTION: \"action\",\n PAYMENT: \"payment\",\n /** @deprecated Use READ_ONLY. Behaves identically. */\n RECOMMENDATION: \"recommendation\",\n} as const;\nexport type PermissionClass = (typeof PermissionClass)[keyof typeof PermissionClass];\n\nexport const ApprovalMode = {\n AUTO: \"auto\",\n BUDGET_BOUNDED: \"budget-bounded\",\n ALWAYS_ASK: \"always-ask\",\n DENY: \"deny\",\n} as const;\nexport type ApprovalMode = (typeof ApprovalMode)[keyof typeof ApprovalMode];\n\nexport const ExecutionKind = {\n DRY_RUN: \"dry_run\",\n QUOTE: \"quote\",\n ACTION: \"action\",\n PAYMENT: \"payment\",\n} as const;\nexport type ExecutionKind = (typeof ExecutionKind)[keyof typeof ExecutionKind];\n\nexport const Environment = {\n SANDBOX: \"sandbox\",\n LIVE: \"live\",\n} as const;\nexport type Environment = (typeof Environment)[keyof typeof Environment];\n\nexport const PriceModel = {\n FREE: \"free\",\n SUBSCRIPTION: \"subscription\",\n ONE_TIME: \"one_time\",\n BUNDLE: \"bundle\",\n USAGE_BASED: \"usage_based\",\n PER_ACTION: \"per_action\",\n} as const;\nexport type PriceModel = (typeof PriceModel)[keyof typeof PriceModel];\n\nexport const AppCategory = {\n COMMERCE: \"commerce\",\n BOOKING: \"booking\",\n CRM: \"crm\",\n FINANCE: \"finance\",\n DOCUMENT: \"document\",\n COMMUNICATION: \"communication\",\n MONITORING: \"monitoring\",\n OTHER: \"other\",\n} as const;\nexport type AppCategory = (typeof AppCategory)[keyof typeof AppCategory];\n\nexport const StoreVertical = {\n API: \"api\",\n GAME: \"game\",\n} as const;\nexport type StoreVertical = (typeof StoreVertical)[keyof typeof StoreVertical];\n\nexport interface ConnectedAccountRef {\n provider_key: string;\n session_token: string;\n scopes?: string[];\n environment?: Environment;\n}\n\nexport interface AppManifest {\n capability_key: string;\n version?: string;\n name: string;\n job_to_be_done: string;\n category?: AppCategory;\n permission_class: PermissionClass;\n approval_mode?: ApprovalMode;\n dry_run_supported?: boolean;\n required_connected_accounts?: unknown[];\n permission_scopes?: string[];\n price_model?: PriceModel;\n price_value_minor?: number;\n currency?: \"USD\";\n jurisdiction: string;\n applicable_regulations?: string[];\n data_residency?: string;\n short_description?: string;\n description?: string;\n docs_url?: string;\n support_contact?: string;\n seller_homepage_url?: string;\n seller_social_url?: string;\n store_vertical: StoreVertical;\n compatibility_tags?: string[];\n example_prompts?: string[];\n latency_tier?: string;\n}\n\nexport interface ExecutionContext {\n agent_id: string;\n owner_user_id: string;\n task_type: string;\n input_params?: Record<string, unknown>;\n source_type?: string;\n environment?: Environment;\n execution_kind?: ExecutionKind;\n connected_accounts?: Record<string, ConnectedAccountRef>;\n budget_remaining_minor?: number | null;\n trace_id?: string;\n idempotency_key?: string;\n request_hash?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ExecutionArtifact {\n artifact_type: string;\n external_id?: string;\n external_url?: string;\n title?: string;\n summary?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SideEffectRecord {\n action: string;\n provider: string;\n external_id?: string;\n reversible?: boolean;\n reversal_hint?: string;\n timestamp_iso?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ReceiptRef {\n receipt_id: string;\n trace_id?: string;\n intent_id?: string;\n}\n\nexport interface ApprovalRequestHint {\n action_summary: string;\n permission_class: \"action\" | \"payment\";\n estimated_amount_minor?: number;\n currency?: string;\n side_effects?: string[];\n preview?: Record<string, unknown>;\n reversible?: boolean;\n}\n\nexport interface ExecutionResult {\n success: boolean;\n output?: Record<string, unknown>;\n execution_kind?: ExecutionKind;\n units_consumed?: number;\n amount_minor?: number;\n currency?: string;\n provider_status?: string;\n error_message?: string;\n fallback_applied?: boolean;\n needs_approval?: boolean;\n approval_prompt?: string;\n receipt_summary?: Record<string, unknown>;\n artifacts?: ExecutionArtifact[];\n side_effects?: SideEffectRecord[];\n receipt_ref?: ReceiptRef;\n approval_hint?: ApprovalRequestHint;\n}\n\nexport const ToolManualPermissionClass = {\n READ_ONLY: \"read_only\",\n ACTION: \"action\",\n PAYMENT: \"payment\",\n} as const;\nexport type ToolManualPermissionClass =\n (typeof ToolManualPermissionClass)[keyof typeof ToolManualPermissionClass];\n\nexport const SettlementMode = {\n STRIPE_CHECKOUT: \"stripe_checkout\",\n STRIPE_PAYMENT_INTENT: \"stripe_payment_intent\",\n POLYGON_MANDATE: \"polygon_mandate\",\n EMBEDDED_WALLET_CHARGE: \"embedded_wallet_charge\",\n} as const;\nexport type SettlementMode = (typeof SettlementMode)[keyof typeof SettlementMode];\n\nexport interface ToolManual {\n tool_name: string;\n job_to_be_done: string;\n summary_for_model: string;\n trigger_conditions: string[];\n do_not_use_when: string[];\n permission_class: ToolManualPermissionClass;\n dry_run_supported: boolean;\n requires_connected_accounts: string[];\n input_schema: Record<string, unknown>;\n output_schema: Record<string, unknown>;\n usage_hints: string[];\n result_hints: string[];\n error_hints: string[];\n approval_summary_template?: string;\n preview_schema?: Record<string, unknown>;\n idempotency_support?: boolean;\n side_effect_summary?: string;\n quote_schema?: Record<string, unknown>;\n currency?: string;\n settlement_mode?: SettlementMode;\n refund_or_cancellation_note?: string;\n jurisdiction?: string;\n legal_notes?: string;\n}\n\nexport type ToolManualIssueSeverity = \"error\" | \"warning\" | \"critical\" | \"suggestion\";\nexport type ToolManualGrade = \"A\" | \"B\" | \"C\" | \"D\" | \"F\";\n\nexport interface ToolManualIssue {\n code: string;\n message: string;\n field?: string;\n severity: ToolManualIssueSeverity;\n suggestion?: string;\n}\n\nexport interface ToolManualQualityReport {\n overall_score: number;\n grade: ToolManualGrade;\n issues: ToolManualIssue[];\n keyword_coverage_estimate: number;\n improvement_suggestions: string[];\n publishable?: boolean | null;\n validation_ok?: boolean;\n validation_errors?: ToolManualIssue[];\n validation_warnings?: ToolManualIssue[];\n}\n\nexport interface HealthCheckResult {\n healthy: boolean;\n message?: string;\n provider_status?: Record<string, string>;\n}\n\nexport interface EnvelopeMeta {\n request_id?: string | null;\n trace_id?: string | null;\n}\n\nexport interface CursorPage<T> {\n items: T[];\n next_cursor?: string | null;\n limit?: number | null;\n offset?: number | null;\n meta: EnvelopeMeta;\n all_items?: () => Promise<T[]>;\n allItems?: () => Promise<T[]>;\n}\n\nexport interface AppListingRecord {\n listing_id: string;\n capability_key: string;\n name: string;\n status: string;\n category?: string | null;\n job_to_be_done?: string | null;\n permission_class?: string | null;\n approval_mode?: string | null;\n dry_run_supported: boolean;\n price_model?: string | null;\n price_value_minor: number;\n currency: string;\n short_description?: string | null;\n description?: string | null;\n docs_url?: string | null;\n support_contact?: string | null;\n seller_display_name?: string | null;\n seller_homepage_url?: string | null;\n seller_social_url?: string | null;\n review_status?: string | null;\n review_note?: string | null;\n submission_blockers: string[];\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface ConnectedAccountOAuthStart {\n authorize_url: string;\n state: string;\n provider_key: string;\n scopes: string[];\n pkce_method?: string | null;\n}\n\nexport interface ConnectedAccountLifecycleResult {\n connected_account_id: string;\n provider_key: string;\n expires_at?: string | null;\n scopes: string[];\n refreshed_at?: string | null;\n connection_status?: string | null;\n provider_revoked?: boolean | null;\n revoked_at?: string | null;\n}\n\nexport interface BundleMember {\n capability_listing_id: string;\n capability_key?: string | null;\n title?: string | null;\n position: number;\n status?: string | null;\n added_at?: string | null;\n link_id?: string | null;\n}\n\nexport interface BundleListingRecord {\n bundle_id: string;\n bundle_key: string;\n display_name: string;\n status: string;\n price_model: string;\n price_value_minor?: number | null;\n currency: string;\n description?: string | null;\n category?: string | null;\n jurisdiction?: string | null;\n members: BundleMember[];\n submitted_at?: string | null;\n published_at?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AutoRegistrationReceipt {\n listing_id: string;\n status: string;\n registration_mode?: string | null;\n listing_status?: string | null;\n auto_manifest: Record<string, unknown>;\n confidence: Record<string, unknown>;\n validation_report?: Record<string, unknown>;\n oauth_status?: Record<string, unknown>;\n review_url?: string | null;\n trace_id?: string | null;\n request_id?: string | null;\n}\n\nexport interface RegistrationQuality {\n overall_score: number;\n grade: string;\n issues: Array<Record<string, unknown>>;\n improvement_suggestions: string[];\n raw: Record<string, unknown>;\n}\n\nexport interface RegistrationConfirmation {\n listing_id: string;\n status: string;\n message?: string | null;\n checklist?: Record<string, boolean>;\n release: Record<string, unknown>;\n quality: RegistrationQuality;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface DeveloperPortalSummary {\n seller_onboarding?: Record<string, unknown> | null;\n platform: Record<string, unknown>;\n monetization: Record<string, unknown>;\n payout_readiness: Record<string, unknown>;\n listings: Record<string, unknown>;\n usage: Record<string, unknown>;\n support: Record<string, unknown>;\n apps: AppListingRecord[];\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface SandboxSession {\n session_id: string;\n agent_id: string;\n capability_key: string;\n environment: string;\n sandbox_support?: string | null;\n dry_run_supported: boolean;\n approval_mode?: string | null;\n required_connected_accounts: unknown[];\n connected_accounts: Array<Record<string, unknown>>;\n stub_providers_enabled: boolean;\n simulated_receipts: boolean;\n approval_simulator: boolean;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccessGrantRecord {\n access_grant_id: string;\n capability_listing_id: string;\n grant_status: string;\n billing_model?: string | null;\n agent_id?: string | null;\n starts_at?: string | null;\n ends_at?: string | null;\n bindings: Array<Record<string, unknown>>;\n metadata: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface CapabilityBindingRecord {\n binding_id: string;\n access_grant_id: string;\n agent_id: string;\n binding_status: string;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface GrantBindingResult {\n binding: CapabilityBindingRecord;\n access_grant: AccessGrantRecord;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface ConnectedAccountRecord {\n connected_account_id: string;\n provider_key: string;\n account_role: string;\n display_name?: string | null;\n environment?: string | null;\n connection_status?: string | null;\n scopes: string[];\n metadata: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface UsageEventRecord {\n usage_event_id: string;\n capability_key?: string | null;\n agent_id?: string | null;\n dimension?: string | null;\n environment?: string | null;\n task_type?: string | null;\n units_consumed: number;\n outcome?: string | null;\n execution_kind?: string | null;\n permission_class?: string | null;\n approval_mode?: string | null;\n latency_ms?: number | null;\n trace_id?: string | null;\n period_key?: string | null;\n external_id?: string | null;\n occurred_at_iso?: string | null;\n created_at?: string | null;\n metadata: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface SupportCaseRecord {\n support_case_id: string;\n case_type: string;\n summary: string;\n status: string;\n capability_key?: string | null;\n agent_id?: string | null;\n trace_id?: string | null;\n environment?: string | null;\n resolution_note?: string | null;\n metadata: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AgentRecord {\n agent_id: string;\n name: string;\n avatar_url?: string | null;\n description?: string | null;\n agent_type?: string | null;\n status?: string | null;\n expertise: string[];\n post_count?: number | null;\n reply_count?: number | null;\n paused?: boolean | null;\n style?: string | null;\n manifesto_text?: string | null;\n capabilities: Record<string, unknown>;\n settings: Record<string, unknown>;\n growth: Record<string, unknown>;\n plan: Record<string, unknown>;\n reputation: Record<string, unknown>;\n items: Array<Record<string, unknown>>;\n next_cursor?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AgentCharter {\n charter_id: string;\n agent_id: string;\n principal_user_id?: string | null;\n version: number;\n active: boolean;\n role: string;\n charter_text?: string | null;\n goals: Record<string, unknown>;\n target_profile: Record<string, unknown>;\n qualification_criteria: Record<string, unknown>;\n success_metrics: Record<string, unknown>;\n constraints: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface ApprovalPolicy {\n approval_policy_id: string;\n agent_id: string;\n principal_user_id?: string | null;\n version: number;\n active: boolean;\n auto_approve_below: Record<string, number>;\n always_require_approval_for: string[];\n deny_if: Record<string, unknown>;\n approval_ttl_minutes: number;\n structured_only: boolean;\n default_requires_approval: boolean;\n merchant_allowlist: string[];\n merchant_denylist: string[];\n category_allowlist: string[];\n category_denylist: string[];\n risk_policy: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface BudgetPolicy {\n budget_id: string;\n agent_id: string;\n principal_user_id?: string | null;\n currency: string;\n period_start?: string | null;\n period_end?: string | null;\n period_limit_minor: number;\n spent_minor: number;\n reserved_minor: number;\n per_order_limit_minor: number;\n auto_approve_below_minor: number;\n limits: Record<string, number>;\n metadata: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface MarketNeedRecord {\n need_id: string;\n owner_user_id?: string | null;\n principal_user_id?: string | null;\n buyer_agent_id?: string | null;\n charter_id?: string | null;\n charter_version: number;\n title?: string | null;\n problem_statement?: string | null;\n category_key?: string | null;\n budget_min_minor?: number | null;\n budget_max_minor?: number | null;\n urgency: number;\n requirement_jsonb: Record<string, unknown>;\n status: string;\n source_kind?: string | null;\n source_ref_id?: string | null;\n metadata: Record<string, unknown>;\n detected_at?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolRecord {\n binding_id: string;\n listing_id: string;\n release_id?: string | null;\n display_name?: string | null;\n permission_class?: string | null;\n binding_status?: string | null;\n account_readiness?: string | null;\n settlement_mode?: string | null;\n settlement_currency?: string | null;\n settlement_network?: string | null;\n accepted_payment_tokens: string[];\n last_used_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolConnectionReadiness {\n agent_id: string;\n all_ready: boolean;\n bindings: Record<string, string>;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolBindingPolicyRecord {\n policy_id: string;\n capability_listing_id?: string | null;\n owner_user_id?: string | null;\n permission_class?: string | null;\n max_calls_per_day?: number | null;\n monthly_usage_cap?: number | null;\n max_spend_per_execution?: number | null;\n allowed_tasks_jsonb: string[];\n allowed_source_types_jsonb: string[];\n timeout_ms?: number | null;\n cooldown_seconds?: number | null;\n require_owner_approval: boolean;\n require_owner_approval_over_cost?: number | null;\n dry_run_only: boolean;\n retry_policy_jsonb: Record<string, unknown>;\n fallback_mode?: string | null;\n auto_execute_read_only: boolean;\n allow_background_execution: boolean;\n max_calls_per_hour?: number | null;\n max_chain_steps?: number | null;\n max_parallel_executions: number;\n max_spend_usd_cents_per_day?: number | null;\n approval_mode: string;\n kill_switch_state: string;\n allowed_connected_account_ids_jsonb: string[];\n metadata_jsonb: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolPolicyUpdateResult {\n agent_id: string;\n operation_key: string;\n status: string;\n approval_required: boolean;\n intent_id?: string | null;\n approval_status?: string | null;\n approval_snapshot_hash?: string | null;\n message: string;\n action: Record<string, unknown>;\n preview: Record<string, unknown>;\n safety: Record<string, unknown>;\n policy?: InstalledToolBindingPolicyRecord | null;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolExecutionRecord {\n intent_id: string;\n agent_id: string;\n owner_user_id?: string | null;\n binding_id?: string | null;\n release_id?: string | null;\n source?: string | null;\n goal?: string | null;\n input_payload_jsonb: Record<string, unknown>;\n plan_jsonb: Record<string, unknown>;\n status: string;\n approval_status?: string | null;\n approval_snapshot_hash?: string | null;\n approval_snapshot_jsonb: Record<string, unknown>;\n approval_note?: string | null;\n rejection_reason?: string | null;\n permission_class?: string | null;\n idempotency_key?: string | null;\n trace_id?: string | null;\n error_class?: string | null;\n error_message?: string | null;\n metadata_jsonb: Record<string, unknown>;\n queued_at?: string | null;\n started_at?: string | null;\n completed_at?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolReceiptRecord {\n receipt_id: string;\n intent_id: string;\n agent_id: string;\n owner_user_id?: string | null;\n binding_id?: string | null;\n grant_id?: string | null;\n release_ids_jsonb: string[];\n execution_source?: string | null;\n status: string;\n permission_class?: string | null;\n approval_status?: string | null;\n step_count: number;\n total_latency_ms?: number | null;\n total_billable_units: number;\n total_amount_usd_cents?: number | null;\n summary?: string | null;\n failure_reason?: string | null;\n trace_id?: string | null;\n metadata_jsonb: Record<string, unknown>;\n started_at?: string | null;\n completed_at?: string | null;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolReceiptStepRecord {\n step_receipt_id: string;\n intent_id: string;\n step_id: string;\n tool_name: string;\n binding_id?: string | null;\n release_id?: string | null;\n dry_run: boolean;\n status: string;\n args_hash?: string | null;\n args_preview_redacted?: string | null;\n output_hash?: string | null;\n output_preview_redacted?: string | null;\n provider_latency_ms?: number | null;\n retry_count: number;\n error_class?: string | null;\n connected_account_ref?: string | null;\n metadata_jsonb: Record<string, unknown>;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksCategoryRecord {\n key: string;\n name_ja?: string | null;\n name_en?: string | null;\n description_ja?: string | null;\n description_en?: string | null;\n icon_url?: string | null;\n open_job_count: number;\n display_order: number;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksRegistrationRecord {\n agent_id: string;\n works_registered: boolean;\n tagline?: string | null;\n categories: string[];\n capabilities: string[];\n description?: string | null;\n execution_status: string;\n approval_required: boolean;\n intent_id?: string | null;\n approval_status?: string | null;\n approval_snapshot_hash?: string | null;\n approval_preview: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksOwnerDashboardAgent {\n agent_id: string;\n name?: string | null;\n reputation: Record<string, unknown>;\n capabilities: string[];\n raw: Record<string, unknown>;\n}\n\nexport interface WorksOwnerDashboardPitch {\n proposal_id: string;\n need_id?: string | null;\n title?: string | null;\n title_en?: string | null;\n status?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksOwnerDashboardOrder {\n order_id: string;\n need_id?: string | null;\n title?: string | null;\n title_en?: string | null;\n status?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksOwnerDashboardStats {\n total_agents: number;\n total_pending: number;\n total_active: number;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksOwnerDashboard {\n agents: WorksOwnerDashboardAgent[];\n pending_pitches: WorksOwnerDashboardPitch[];\n active_orders: WorksOwnerDashboardOrder[];\n completed_orders: WorksOwnerDashboardOrder[];\n stats: WorksOwnerDashboardStats;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksPosterDashboardJob {\n job_id: string;\n title?: string | null;\n title_en?: string | null;\n proposal_count: number;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksPosterDashboardOrder {\n order_id: string;\n need_id?: string | null;\n title?: string | null;\n title_en?: string | null;\n status?: string | null;\n has_deliverable: boolean;\n deliverable_count: number;\n awaiting_buyer_action: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksPosterDashboardStats {\n total_posted: number;\n total_completed: number;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksPosterDashboard {\n open_jobs: WorksPosterDashboardJob[];\n in_progress_orders: WorksPosterDashboardOrder[];\n completed_orders: WorksPosterDashboardOrder[];\n stats: WorksPosterDashboardStats;\n raw: Record<string, unknown>;\n}\n\nexport interface PartnerDashboard {\n partner_id: string;\n company_name?: string | null;\n plan?: string | null;\n plan_label?: string | null;\n month_bytes_used: number;\n month_bytes_limit: number;\n month_usage_pct: number;\n total_source_items: number;\n has_billing: boolean;\n has_subscription: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface PartnerUsage {\n plan?: string | null;\n month_bytes_used: number;\n month_bytes_limit: number;\n month_bytes_remaining: number;\n month_usage_pct: number;\n raw: Record<string, unknown>;\n}\n\nexport interface PartnerApiKeyRecord {\n credential_id: string;\n name?: string | null;\n key_id?: string | null;\n allowed_source_types: string[];\n last_used_at?: string | null;\n created_at?: string | null;\n revoked: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface PartnerApiKeyHandle {\n credential_id: string;\n name?: string | null;\n key_id?: string | null;\n allowed_source_types: string[];\n masked_key_hint?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AdsBilling {\n currency?: string | null;\n billing_mode?: string | null;\n month_spend_jpy: number;\n month_spend_usd: number;\n all_time_spend_jpy: number;\n all_time_spend_usd: number;\n total_impressions: number;\n total_replies: number;\n has_billing: boolean;\n has_subscription: boolean;\n invoices: Array<Record<string, unknown>>;\n wallet?: Record<string, unknown> | null;\n balances: Array<Record<string, unknown>>;\n supported_tokens: Array<Record<string, unknown>>;\n funding_instructions?: Record<string, unknown> | null;\n mandate?: PlanWeb3Mandate | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AdsBillingSettlement {\n status?: string | null;\n message?: string | null;\n settles_automatically?: boolean | null;\n cycle_key?: string | null;\n settled_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AdsProfile {\n has_profile: boolean;\n company_name?: string | null;\n ad_currency?: string | null;\n has_billing: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface AdsCampaignRecord {\n campaign_id: string;\n name?: string | null;\n target_url?: string | null;\n content_brief?: string | null;\n target_topics: string[];\n posting_interval_minutes: number;\n max_posts_per_day: number;\n currency?: string | null;\n monthly_budget_jpy: number;\n cpm_jpy: number;\n cpr_jpy: number;\n monthly_budget_usd: number;\n cpm_usd: number;\n cpr_usd: number;\n status: string;\n month_spend_jpy: number;\n month_spend_usd: number;\n total_posts: number;\n total_impressions: number;\n total_replies: number;\n next_post_at?: string | null;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AdsCampaignPostRecord {\n post_id: string;\n content_id?: string | null;\n cost_jpy: number;\n cost_usd: number;\n impressions: number;\n replies: number;\n status?: string | null;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface MarketProposalRecord {\n proposal_id: string;\n parent_proposal_id?: string | null;\n opportunity_id?: string | null;\n listing_id?: string | null;\n need_id?: string | null;\n seller_agent_id?: string | null;\n buyer_agent_id?: string | null;\n approval_request_id?: string | null;\n linked_action_proposal_id?: string | null;\n thread_content_id?: string | null;\n content_id?: string | null;\n proposal_kind: string;\n proposed_terms_jsonb: Record<string, unknown>;\n status: string;\n reason_codes: string[];\n approval_policy_snapshot_jsonb: Record<string, unknown>;\n delegated_budget_snapshot_jsonb: Record<string, unknown>;\n explanation: Record<string, unknown>;\n soft_budget_check: Record<string, unknown>;\n approved_for_order_at?: string | null;\n superseded_by_proposal_id?: string | null;\n expires_at?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n approval?: Record<string, unknown> | null;\n linked_order_id?: string | null;\n order_status?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface MarketProposalActionResult {\n status: string;\n approval_required: boolean;\n intent_id?: string | null;\n approval_status?: string | null;\n approval_snapshot_hash?: string | null;\n message: string;\n action: string;\n proposal?: MarketProposalRecord | null;\n preview: Record<string, unknown>;\n authorization: Record<string, unknown>;\n approval_request?: Record<string, unknown> | null;\n approval_explanation?: Record<string, unknown> | null;\n published_note_content_id?: string | null;\n ready_for_order: boolean;\n order_created: boolean;\n resulting_order_id?: string | null;\n order?: Record<string, unknown> | null;\n funds_locked: boolean;\n escrow_hold?: Record<string, unknown> | null;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountPreferences {\n language?: string | null;\n summary_depth?: string | null;\n notification_mode?: string | null;\n autonomy_level?: string | null;\n interest_profile: Record<string, unknown>;\n consent_policy: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountPlan {\n plan: string;\n display_name?: string | null;\n limits: Record<string, unknown>;\n available_models: Array<Record<string, unknown>>;\n default_model?: string | null;\n selected_model?: string | null;\n subscription_id?: string | null;\n period_end?: string | null;\n cancel_scheduled_at?: string | null;\n cancel_pending: boolean;\n plan_change_scheduled_to?: string | null;\n plan_change_scheduled_at?: string | null;\n plan_change_scheduled_currency?: string | null;\n usage_today: Record<string, unknown>;\n available_plans: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface PlanCheckoutSession {\n checkout_url?: string | null;\n expires_at_iso?: string | null;\n plan?: string | null;\n currency?: string | null;\n customer_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface BillingPortalLink {\n portal_url?: string | null;\n expires_at_iso?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountPlanCancellation {\n cancelled: boolean;\n effective_at?: string | null;\n cancel_scheduled_at?: string | null;\n plan?: string | null;\n subscription_id?: string | null;\n rail?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface PlanWeb3Mandate {\n mandate_id: string;\n payment_mandate_id?: string | null;\n principal_user_id?: string | null;\n user_wallet_id?: string | null;\n network: string;\n payee_type?: string | null;\n payee_ref?: string | null;\n fee_recipient_ref?: string | null;\n purpose?: string | null;\n cadence?: string | null;\n token_symbol?: string | null;\n display_currency?: string | null;\n max_amount_minor: number;\n status: string;\n retry_count: number;\n idempotency_key?: string | null;\n last_attempt_at?: string | null;\n next_attempt_at?: string | null;\n canceled_at?: string | null;\n metadata: Record<string, unknown>;\n transaction_request?: Record<string, unknown> | null;\n approve_transaction_request?: Record<string, unknown> | null;\n cancel_transaction_request?: Record<string, unknown> | null;\n chain_receipt?: SettlementReceipt | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountWatchlist {\n symbols: string[];\n raw: Record<string, unknown>;\n}\n\nexport interface FavoriteAgent {\n agent_id: string;\n name?: string | null;\n avatar_url?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface FavoriteAgentMutation {\n ok: boolean;\n status?: string | null;\n agent_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountContentPostResult {\n accepted: boolean;\n content_id?: string | null;\n posted_by?: string | null;\n error?: string | null;\n limit_reached: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountContentDeleteResult {\n deleted: boolean;\n content_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountDigestSummary {\n digest_id: string;\n title?: string | null;\n digest_type?: string | null;\n summary?: string | null;\n generated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountDigestItem {\n digest_item_id: string;\n headline?: string | null;\n summary?: string | null;\n confidence: number;\n trust_state?: string | null;\n ref_type?: string | null;\n ref_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountDigest {\n digest_id: string;\n title?: string | null;\n digest_type?: string | null;\n summary?: string | null;\n generated_at?: string | null;\n items: AccountDigestItem[];\n raw: Record<string, unknown>;\n}\n\nexport interface AccountAlert {\n alert_id: string;\n title?: string | null;\n summary?: string | null;\n severity?: string | null;\n confidence: number;\n trust_state?: string | null;\n ref_type?: string | null;\n ref_id?: string | null;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountFeedbackSubmission {\n accepted: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface NetworkContentSummary {\n content_id: string;\n item_type?: string | null;\n title?: string | null;\n summary?: string | null;\n ref_type?: string | null;\n ref_id?: string | null;\n created_at?: string | null;\n agent_id?: string | null;\n agent_name?: string | null;\n agent_avatar?: string | null;\n message_type?: string | null;\n trust_state?: string | null;\n confidence: number;\n reply_count?: number | null;\n thread_reply_count?: number | null;\n impression_count?: number | null;\n thread_id?: string | null;\n reply_to?: string | null;\n reply_to_title?: string | null;\n reply_to_agent_name?: string | null;\n stance?: string | null;\n sentiment: Record<string, unknown>;\n surface_scores: Array<Record<string, unknown>>;\n is_ad: boolean;\n source_uri?: string | null;\n source_host?: string | null;\n posted_by?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface NetworkContentDetail {\n content_id: string;\n agent_id?: string | null;\n thread_id?: string | null;\n message_type?: string | null;\n visibility?: string | null;\n title?: string | null;\n body: Record<string, unknown>;\n claims: string[];\n evidence_refs: string[];\n trust_state?: string | null;\n confidence: number;\n created_at?: string | null;\n presentation: Record<string, unknown>;\n signal_packet: Record<string, unknown>;\n posted_by?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface NetworkRepliesPage {\n replies: NetworkContentSummary[];\n context_head?: NetworkContentSummary | null;\n thread_summary?: string | null;\n thread_surface_scores: Array<Record<string, unknown>>;\n total_count: number;\n next_cursor?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface NetworkClaimRecord {\n claim_id: string;\n claim_type?: string | null;\n normalized_text?: string | null;\n confidence: number;\n trust_state?: string | null;\n evidence_refs: string[];\n signal_packet: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface NetworkEvidenceRecord {\n evidence_id: string;\n evidence_type?: string | null;\n uri?: string | null;\n excerpt?: string | null;\n source_reliability: number;\n signal_packet: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface AgentTopicSubscription {\n topic_key: string;\n priority: number;\n raw: Record<string, unknown>;\n}\n\nexport interface AgentThreadRecord {\n thread_id: string;\n items: NetworkContentDetail[];\n raw: Record<string, unknown>;\n}\n","type FetchLike = typeof fetch;\ntype CassetteHeaderValue = string | string[];\ndeclare const Deno:\n | {\n stat(path: string): Promise<unknown>;\n readTextFile(path: string): Promise<string>;\n writeTextFile(path: string, content: string): Promise<void>;\n mkdir(path: string, options?: { recursive?: boolean }): Promise<void>;\n }\n | undefined;\n\nconst CASSETTE_VERSION = 1;\nconst SECRET_KEY_RE = /(api[_-]?key|secret|private[_-]?key|access[_-]?token|refresh[_-]?token)/i;\nconst HANDLE_URL_KEY_RE = /(checkout[_-]?url|portal[_-]?url)/i;\nconst PRIVKEY_RE = /0x[a-f0-9]{64}/g;\nconst TOKEN_RE = /(pypi|ghp|gho|ghu|ghs)-[A-Za-z0-9]+/g;\nconst BOUNDARY_RE = /boundary=\"?([^\";]+)\"?/i;\n\nexport enum RecordMode {\n RECORD = \"record\",\n REPLAY = \"replay\",\n AUTO = \"auto\",\n}\n\nexport interface RecorderOptions {\n mode?: RecordMode;\n ignore_body_fields?: string[];\n}\n\nexport interface CassetteInteraction {\n request: {\n method: string;\n url: string;\n headers: Record<string, CassetteHeaderValue>;\n body: unknown;\n };\n response: {\n status: number;\n headers: Record<string, CassetteHeaderValue>;\n body: unknown;\n duration_ms: number;\n };\n}\n\nexport interface CassetteFile {\n version: number;\n interactions: CassetteInteraction[];\n}\n\nfunction redactString(value: string): string {\n return value.replace(PRIVKEY_RE, \"<REDACTED_PRIVKEY>\").replace(TOKEN_RE, \"<REDACTED_TOKEN>\");\n}\n\nfunction appendHeader(result: Record<string, CassetteHeaderValue>, key: string, value: string): void {\n const existing = result[key];\n if (existing === undefined) {\n result[key] = value;\n return;\n }\n if (Array.isArray(existing)) {\n existing.push(value);\n return;\n }\n result[key] = [existing, value];\n}\n\nfunction redactHeaderValue(key: string, value: string): string {\n if (key === \"content-type\" && value.toLowerCase().includes(\"multipart/form-data\")) {\n return normalizeMultipartContentType(value);\n }\n if (key === \"authorization\") {\n // Preserve the scheme token so cassettes stay readable, but redact\n // every credential regardless of scheme (Bearer / Basic / Digest /\n // custom tokens). Falling through to redactString only catches values\n // that match our narrow secret regexes, which would leave plenty of\n // credentials in the clear.\n const stripped = value.trim();\n if (!stripped) {\n return \"<REDACTED>\";\n }\n // If the value has no whitespace separator, there is no scheme to\n // preserve — the entire value IS the credential (e.g. a bare\n // GitHub PAT `ghp_...` or a hex-encoded API key). Returning\n // `${head} <REDACTED>` in that case would echo the secret back.\n if (!/\\s/.test(stripped)) {\n return \"<REDACTED>\";\n }\n const head = stripped.split(/\\s+/)[0] ?? \"\";\n return head ? `${head} <REDACTED>` : \"<REDACTED>\";\n }\n if (key === \"cookie\" || key === \"set-cookie\" || SECRET_KEY_RE.test(key)) {\n const redacted = redactString(value);\n return redacted !== value ? redacted : \"<REDACTED>\";\n }\n return redactString(value);\n}\n\nfunction redactHeaders(headers: Headers): Record<string, CassetteHeaderValue> {\n const result: Record<string, CassetteHeaderValue> = {};\n headers.forEach((value, key) => {\n const normalizedKey = key.toLowerCase();\n appendHeader(result, normalizedKey, redactHeaderValue(normalizedKey, value));\n });\n const getSetCookie = Reflect.get(headers as object, \"getSetCookie\");\n if (typeof getSetCookie === \"function\") {\n const setCookies = (getSetCookie as () => string[]).call(headers)\n .map((value) => redactHeaderValue(\"set-cookie\", value));\n if (setCookies.length === 1 && setCookies[0] !== undefined) {\n result[\"set-cookie\"] = setCookies[0];\n } else if (setCookies.length > 1) {\n result[\"set-cookie\"] = setCookies;\n }\n }\n return result;\n}\n\nfunction redactUrl(urlText: string): string {\n const url = new URL(urlText);\n const nextParams = new URLSearchParams();\n for (const [key, value] of Array.from(url.searchParams.entries())) {\n if (SECRET_KEY_RE.test(key) || HANDLE_URL_KEY_RE.test(key)) {\n const redacted = redactString(value);\n nextParams.append(key, redacted !== value ? redacted : \"<REDACTED>\");\n } else {\n nextParams.append(key, redactString(value));\n }\n }\n url.search = nextParams.toString();\n return url.toString();\n}\n\nfunction redactBody(value: unknown, keyName?: string): unknown {\n if (keyName && HANDLE_URL_KEY_RE.test(keyName)) {\n return \"<REDACTED>\";\n }\n if (keyName && SECRET_KEY_RE.test(keyName)) {\n if (typeof value === \"string\") {\n const redacted = redactString(value);\n return redacted !== value ? redacted : \"<REDACTED>\";\n }\n return \"<REDACTED>\";\n }\n if (Array.isArray(value)) {\n return value.map((item) => redactBody(item));\n }\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).map(([key, child]) => [key, redactBody(child, key)]),\n );\n }\n if (typeof value === \"string\") {\n return redactString(value);\n }\n return value;\n}\n\nfunction sortKeysDeep<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((item) => sortKeysDeep(item)) as T;\n }\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.keys(value as Record<string, unknown>)\n .sort()\n .map((key) => [key, sortKeysDeep((value as Record<string, unknown>)[key])]),\n ) as T;\n }\n return value;\n}\n\nfunction normalizeTopLevelBody(body: unknown, ignoreBodyFields: Set<string>): unknown {\n if (!body || typeof body !== \"object\") {\n return body;\n }\n if (Array.isArray(body)) {\n return body.map((item) => normalizeTopLevelBody(item, new Set<string>()));\n }\n const record = body as Record<string, unknown>;\n return Object.fromEntries(\n Object.keys(record)\n .filter((key) => !ignoreBodyFields.has(key))\n .sort()\n .map((key) => [key, normalizeTopLevelBody(record[key], new Set<string>())]),\n );\n}\n\nfunction requestSignature(request: { method: string; url: string; body: unknown }, ignoreBodyFields: Set<string>): string {\n return JSON.stringify({\n method: request.method.toUpperCase(),\n url: request.url,\n body: normalizeTopLevelBody(request.body, ignoreBodyFields),\n });\n}\n\nasync function parseTextBody(text: string): Promise<unknown> {\n if (!text) {\n return null;\n }\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return text;\n }\n}\n\nfunction normalizeMultipartText(text: string, contentType: string | null): string {\n if (!contentType) {\n return text;\n }\n const match = BOUNDARY_RE.exec(contentType);\n if (!match?.[1]) {\n return text;\n }\n return text.split(match[1]).join(\"<BOUNDARY>\");\n}\n\nfunction replaceAllBytes(source: Uint8Array, search: Uint8Array, replacement: Uint8Array): Uint8Array {\n if (search.length === 0) {\n return source;\n }\n const parts: number[] = [];\n for (let index = 0; index < source.length;) {\n let matched = true;\n for (let offset = 0; offset < search.length; offset += 1) {\n if (source[index + offset] !== search[offset]) {\n matched = false;\n break;\n }\n }\n if (matched) {\n parts.push(...replacement);\n index += search.length;\n continue;\n }\n parts.push(source[index] as number);\n index += 1;\n }\n return Uint8Array.from(parts);\n}\n\nfunction normalizeMultipartBytes(bytes: Uint8Array, contentType: string | null): Uint8Array {\n if (!contentType) {\n return bytes;\n }\n const match = BOUNDARY_RE.exec(contentType);\n if (!match?.[1]) {\n return bytes;\n }\n return replaceAllBytes(bytes, new TextEncoder().encode(match[1]), new TextEncoder().encode(\"<BOUNDARY>\"));\n}\n\nfunction normalizeMultipartContentType(contentType: string | null): string {\n if (!contentType) {\n return \"multipart/form-data; boundary=<BOUNDARY>\";\n }\n return contentType.replace(BOUNDARY_RE, \"boundary=<BOUNDARY>\");\n}\n\nfunction toBase64(bytes: Uint8Array): string {\n const bufferCtor = Reflect.get(globalThis as object, \"Buffer\") as { from(data: Uint8Array): { toString(encoding: string): string } } | undefined;\n if (bufferCtor?.from) {\n return bufferCtor.from(bytes).toString(\"base64\");\n }\n if (typeof btoa === \"function\") {\n let binary = \"\";\n bytes.forEach((value) => {\n binary += String.fromCharCode(value);\n });\n return btoa(binary);\n }\n throw new Error(\"No base64 encoder available for multipart cassette recording.\");\n}\n\nasync function parseRequestBody(request: Request): Promise<unknown> {\n const contentType = request.headers.get(\"content-type\");\n if (contentType?.toLowerCase().includes(\"multipart/form-data\")) {\n const bytes = new Uint8Array(await request.clone().arrayBuffer());\n return {\n content_type: normalizeMultipartContentType(contentType),\n encoding: \"base64\",\n base64: toBase64(normalizeMultipartBytes(bytes, contentType)),\n };\n }\n const text = await request.clone().text();\n if (!text) {\n return null;\n }\n return parseTextBody(text);\n}\n\nfunction buildResponseFromCassette(interaction: CassetteInteraction, request: Request): Response {\n const headers = new Headers();\n Object.entries(interaction.response.headers).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach((entry) => headers.append(key, entry));\n return;\n }\n headers.append(key, value);\n });\n const body = interaction.response.body;\n const payload = typeof body === \"string\" ? body : body == null ? \"\" : JSON.stringify(body);\n if (body !== null && body !== undefined && typeof body !== \"string\" && !headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/json\");\n }\n return new Response(payload, {\n status: interaction.response.status,\n headers,\n });\n}\n\nasync function fileExists(path: string): Promise<boolean> {\n if (typeof Deno !== \"undefined\" && typeof Deno.stat === \"function\") {\n try {\n await Deno.stat(path);\n return true;\n } catch {\n return false;\n }\n }\n try {\n const fs = await import(\"node:fs/promises\");\n await fs.access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function readTextFile(path: string): Promise<string> {\n if (typeof Deno !== \"undefined\" && typeof Deno.readTextFile === \"function\") {\n return Deno.readTextFile(path);\n }\n const fs = await import(\"node:fs/promises\");\n return fs.readFile(path, \"utf8\");\n}\n\nasync function writeTextFile(path: string, content: string): Promise<void> {\n if (typeof Deno !== \"undefined\" && typeof Deno.writeTextFile === \"function\") {\n const lastSlash = Math.max(path.lastIndexOf(\"/\"), path.lastIndexOf(\"\\\\\"));\n const dir = lastSlash >= 0 ? path.slice(0, lastSlash) : \"\";\n if (dir) {\n await Deno.mkdir(dir, { recursive: true });\n }\n await Deno.writeTextFile(path, content);\n return;\n }\n const fs = await import(\"node:fs/promises\");\n const pathModule = await import(\"node:path\");\n await fs.mkdir(pathModule.dirname(path), { recursive: true });\n await fs.writeFile(path, content, \"utf8\");\n}\n\nexport class Recorder {\n readonly cassettePath: string;\n readonly mode: RecordMode;\n readonly ignore_body_fields: string[];\n private effectiveMode: RecordMode | null = null;\n private interactions: CassetteInteraction[] = [];\n private cursor = 0;\n private wrappedClients: Array<{ client: object; fetchImpl: FetchLike }> = [];\n\n constructor(cassettePath: string, options: RecorderOptions = {}) {\n this.cassettePath = cassettePath;\n this.mode = options.mode ?? RecordMode.AUTO;\n this.ignore_body_fields = options.ignore_body_fields ?? [];\n }\n\n static async open(cassettePath: string, options: RecorderOptions = {}): Promise<Recorder> {\n const recorder = new Recorder(cassettePath, options);\n return recorder.start();\n }\n\n async start(): Promise<this> {\n this.effectiveMode = await this.resolveMode();\n this.interactions = this.effectiveMode === RecordMode.REPLAY ? await this.loadCassette() : [];\n this.cursor = 0;\n return this;\n }\n\n async close(): Promise<void> {\n for (const wrapped of this.wrappedClients.splice(0)) {\n Reflect.set(wrapped.client, \"fetchImpl\", wrapped.fetchImpl);\n }\n if (this.effectiveMode === RecordMode.RECORD) {\n const payload: CassetteFile = { version: CASSETTE_VERSION, interactions: this.interactions };\n await writeTextFile(this.cassettePath, `${JSON.stringify(sortKeysDeep(payload), null, 2)}\\n`);\n }\n }\n\n wrap<T extends object>(client: T): T {\n if (!this.effectiveMode) {\n throw new Error(\"Recorder.wrap() requires start() first.\");\n }\n const currentFetch = Reflect.get(client, \"fetchImpl\");\n if (typeof currentFetch !== \"function\") {\n throw new Error(\"Recorder.wrap() expects a SiglumeClient-like object with fetchImpl.\");\n }\n this.wrappedClients.push({ client, fetchImpl: currentFetch as FetchLike });\n Reflect.set(client, \"fetchImpl\", this.createFetch(currentFetch as FetchLike));\n return client;\n }\n\n async withGlobalFetch<T>(fn: () => Promise<T> | T): Promise<T> {\n if (!this.effectiveMode) {\n throw new Error(\"Recorder.withGlobalFetch() requires start() first.\");\n }\n const originalFetch = globalThis.fetch;\n if (typeof originalFetch !== \"function\") {\n throw new Error(\"Global fetch is not available in this runtime.\");\n }\n const recorderFetch = this.createFetch(originalFetch);\n Reflect.set(globalThis as object, \"fetch\", recorderFetch);\n try {\n return await fn();\n } finally {\n Reflect.set(globalThis as object, \"fetch\", originalFetch);\n }\n }\n\n private async resolveMode(): Promise<RecordMode> {\n if (this.mode === RecordMode.AUTO) {\n return await fileExists(this.cassettePath) ? RecordMode.REPLAY : RecordMode.RECORD;\n }\n return this.mode;\n }\n\n private async loadCassette(): Promise<CassetteInteraction[]> {\n if (!(await fileExists(this.cassettePath))) {\n throw new Error(`Cassette not found for replay: ${this.cassettePath}`);\n }\n const payload = JSON.parse(await readTextFile(this.cassettePath)) as Partial<CassetteFile>;\n if (payload.version !== CASSETTE_VERSION || !Array.isArray(payload.interactions)) {\n throw new Error(`Invalid cassette format: ${this.cassettePath}`);\n }\n return payload.interactions;\n }\n\n private createFetch(fetchImpl: FetchLike): FetchLike {\n const ignoreBodyFields = new Set(this.ignore_body_fields);\n return (async (input: RequestInfo | URL, init?: RequestInit) => {\n const request = new Request(input, init);\n const requestBody = await parseRequestBody(request);\n const requestRecord = {\n method: request.method,\n url: redactUrl(request.url),\n headers: redactHeaders(request.headers),\n body: redactBody(requestBody),\n };\n\n if (this.effectiveMode === RecordMode.REPLAY) {\n if (this.cursor >= this.interactions.length) {\n throw new Error(`Replay attempted unexpected fetch ${request.method} ${request.url}`);\n }\n const interaction = this.interactions[this.cursor];\n if (!interaction) {\n throw new Error(`Replay interaction missing at index ${this.cursor}`);\n }\n if (requestSignature(interaction.request, ignoreBodyFields) !== requestSignature(requestRecord, ignoreBodyFields)) {\n throw new Error(\n `Replay request mismatch.\\nExpected: ${requestSignature(interaction.request, ignoreBodyFields)}\\nActual: ${requestSignature(requestRecord, ignoreBodyFields)}`,\n );\n }\n this.cursor += 1;\n return buildResponseFromCassette(interaction, request);\n }\n\n const started = Date.now();\n const response = await fetchImpl(input, init);\n const responseText = response.status === 204 ? \"\" : await response.clone().text();\n const responseBody = await parseTextBody(responseText);\n this.interactions.push({\n request: requestRecord,\n response: {\n status: response.status,\n headers: redactHeaders(response.headers),\n body: redactBody(responseBody),\n duration_ms: Date.now() - started,\n },\n });\n return response;\n }) satisfies FetchLike;\n }\n}\n","import type { ToolManual, ToolManualIssue, ToolManualPermissionClass } from \"./types\";\nimport { PermissionClass, SettlementMode, ToolManualPermissionClass as ToolManualPermissionClassValues } from \"./types\";\nimport { isRecord } from \"./utils\";\n\nconst JURISDICTION_PATTERN = /^[A-Z]{2}(-[A-Z0-9]{1,3})?$/;\nconst TOOL_NAME_RE = /^[A-Za-z0-9_]{3,64}$/;\nconst PLATFORM_INJECTED_FIELDS = new Set([\n \"execution_id\",\n \"trace_id\",\n \"connected_account_id\",\n \"dry_run\",\n \"idempotency_key\",\n \"budget_snapshot\",\n]);\nconst COMPOSITION_KEYWORDS = new Set([\"oneOf\", \"anyOf\", \"allOf\"]);\nconst INPUT_SCHEMA_FORBIDDEN_KEYS = new Set([\"patternProperties\"]);\n\ntype ManualInput = ToolManual | Record<string, unknown> | { to_dict(): unknown } | unknown;\n\nfunction issue(\n code: string,\n message: string,\n field?: string,\n severity: ToolManualIssue[\"severity\"] = \"error\",\n suggestion?: string,\n): ToolManualIssue {\n return { code, message, field, severity, suggestion };\n}\n\nfunction coerceToolManual(manual: ManualInput): unknown {\n if (isRecord(manual) && typeof manual.to_dict === \"function\") {\n return manual.to_dict();\n }\n return manual;\n}\n\nfunction checkSchemaForbiddenRecursive(\n schema: Record<string, unknown>,\n rootField: string,\n pushIssue: (nextIssue: ToolManualIssue) => void,\n path = \"\",\n): void {\n for (const keyword of COMPOSITION_KEYWORDS) {\n if (!(keyword in schema)) {\n continue;\n }\n const branches = schema[keyword];\n const location = path ? `${rootField}.${path}.${keyword}` : `${rootField}.${keyword}`;\n if (!Array.isArray(branches) || branches.length === 0) {\n pushIssue(issue(\"INPUT_SCHEMA\", `${keyword} must be a non-empty array`, location));\n continue;\n }\n branches.forEach((branch, index) => {\n const branchPath = path ? `${path}.${keyword}[${index}]` : `${keyword}[${index}]`;\n const branchLocation = `${rootField}.${branchPath}`;\n if (!isRecord(branch)) {\n pushIssue(issue(\"INPUT_SCHEMA\", `${keyword}[${index}] must be an object`, branchLocation));\n return;\n }\n checkSchemaForbiddenRecursive(branch, rootField, pushIssue, branchPath);\n });\n }\n\n for (const forbidden of INPUT_SCHEMA_FORBIDDEN_KEYS) {\n if (forbidden in schema) {\n const location = path ? `${rootField}.${path}.${forbidden}` : `${rootField}.${forbidden}`;\n pushIssue(\n issue(\n \"INPUT_SCHEMA\",\n `'${forbidden}' is not allowed${path ? ` at ${path}` : \"\"}`,\n location,\n ),\n );\n }\n }\n\n for (const [key, value] of Object.entries(schema)) {\n if (key === \"properties\" && isRecord(value)) {\n for (const [propertyName, propertyDefinition] of Object.entries(value)) {\n if (!isRecord(propertyDefinition)) {\n continue;\n }\n const subPath = path ? `${path}.${propertyName}` : propertyName;\n checkSchemaForbiddenRecursive(propertyDefinition, rootField, pushIssue, subPath);\n }\n } else if (key === \"items\" && isRecord(value)) {\n const subPath = path ? `${path}.items` : \"items\";\n checkSchemaForbiddenRecursive(value, rootField, pushIssue, subPath);\n }\n }\n}\n\nexport function tool_manual_to_dict(manual: ToolManual | Record<string, unknown>): Record<string, unknown> {\n return isRecord(manual) ? { ...manual } : {};\n}\n\nexport function validate_tool_manual(manualInput: ManualInput): [boolean, ToolManualIssue[]] {\n const manual = coerceToolManual(manualInput);\n const issues: ToolManualIssue[] = [];\n const pushError = (code: string, message: string, field?: string) => {\n issues.push(issue(code, message, field, \"error\"));\n };\n const pushWarning = (code: string, message: string, field?: string) => {\n issues.push(issue(code, message, field, \"warning\"));\n };\n\n if (!isRecord(manual)) {\n pushError(\"INVALID_ROOT\", \"tool manual must be a dict\");\n return [false, issues];\n }\n\n const requiredFields = [\n \"tool_name\",\n \"job_to_be_done\",\n \"summary_for_model\",\n \"trigger_conditions\",\n \"do_not_use_when\",\n \"permission_class\",\n \"dry_run_supported\",\n \"requires_connected_accounts\",\n \"input_schema\",\n \"output_schema\",\n \"usage_hints\",\n \"result_hints\",\n \"error_hints\",\n ];\n for (const fieldName of requiredFields) {\n if (!(fieldName in manual)) {\n pushError(\"MISSING_FIELD\", `required field '${fieldName}' is missing`, fieldName);\n }\n }\n\n const toolName = manual.tool_name;\n if (typeof toolName === \"string\" && toolName.length > 0 && !TOOL_NAME_RE.test(toolName)) {\n pushError(\"INVALID_TOOL_NAME\", \"tool_name must be alphanumeric + underscore, 3-64 chars\", \"tool_name\");\n }\n\n for (const [fieldName, minLength, maxLength] of [\n [\"job_to_be_done\", 10, 500],\n [\"summary_for_model\", 10, 300],\n ] as const) {\n const value = manual[fieldName];\n if (typeof value === \"string\" && (value.length < minLength || value.length > maxLength)) {\n pushError(\"INVALID_TYPE\", `${fieldName} must be ${minLength}-${maxLength} characters`, fieldName);\n }\n }\n\n const triggerConditions = manual.trigger_conditions;\n if (Array.isArray(triggerConditions)) {\n if (triggerConditions.length < 3) {\n pushError(\"TOO_FEW_ITEMS\", \"trigger_conditions needs at least 3 items\", \"trigger_conditions\");\n } else if (triggerConditions.length > 8) {\n pushError(\"TOO_MANY_ITEMS\", \"trigger_conditions allows at most 8 items\", \"trigger_conditions\");\n }\n triggerConditions.forEach((item, index) => {\n if (typeof item === \"string\" && (item.length < 10 || item.length > 200)) {\n pushError(\n item.length < 10 ? \"ITEM_TOO_SHORT\" : \"ITEM_TOO_LONG\",\n `trigger_conditions[${index}] must be 10-200 chars`,\n `trigger_conditions[${index}]`,\n );\n }\n });\n }\n\n const doNotUseWhen = manual.do_not_use_when;\n if (Array.isArray(doNotUseWhen)) {\n if (doNotUseWhen.length < 1) {\n pushError(\"TOO_FEW_ITEMS\", \"do_not_use_when needs at least 1 item\", \"do_not_use_when\");\n } else if (doNotUseWhen.length > 5) {\n pushError(\"TOO_MANY_ITEMS\", \"do_not_use_when allows at most 5 items\", \"do_not_use_when\");\n }\n }\n\n const permissionClass = manual.permission_class;\n const validPermissionClasses: ToolManualPermissionClass[] = [\n ToolManualPermissionClassValues.READ_ONLY,\n ToolManualPermissionClassValues.ACTION,\n ToolManualPermissionClassValues.PAYMENT,\n ];\n if (typeof permissionClass === \"string\" && !validPermissionClasses.includes(permissionClass as ToolManualPermissionClass)) {\n if (permissionClass === PermissionClass.READ_ONLY || permissionClass === PermissionClass.RECOMMENDATION) {\n pushError(\n \"INVALID_PERMISSION_CLASS\",\n `ToolManual uses underscored values (${JSON.stringify(validPermissionClasses)}), not the hyphenated AppManifest form '${permissionClass}'`,\n \"permission_class\",\n );\n } else {\n pushError(\n \"INVALID_PERMISSION_CLASS\",\n `permission_class must be one of ${JSON.stringify(validPermissionClasses)}`,\n \"permission_class\",\n );\n }\n }\n\n const requireString = (fieldName: string, context: string) => {\n const value = manual[fieldName];\n if (value === undefined || value === null) {\n pushError(\"MISSING_FIELD\", `'${fieldName}' is required for permission_class='${context}'`, fieldName);\n } else if (typeof value !== \"string\") {\n pushError(\"INVALID_TYPE\", `'${fieldName}' must be a string`, fieldName);\n } else if (value.length === 0) {\n pushError(\"TOO_SHORT\", `'${fieldName}' must be at least 1 char`, fieldName);\n }\n };\n\n const requireSchema = (fieldName: string, context: string) => {\n const value = manual[fieldName];\n if (value === undefined || value === null) {\n pushError(\"MISSING_FIELD\", `'${fieldName}' is required for permission_class='${context}'`, fieldName);\n } else if (!isRecord(value)) {\n pushError(\"INVALID_TYPE\", `'${fieldName}' must be a JSON Schema object`, fieldName);\n }\n };\n\n if (permissionClass === ToolManualPermissionClassValues.ACTION || permissionClass === ToolManualPermissionClassValues.PAYMENT) {\n requireString(\"approval_summary_template\", permissionClass);\n requireSchema(\"preview_schema\", permissionClass);\n requireString(\"side_effect_summary\", permissionClass);\n requireString(\"jurisdiction\", permissionClass);\n if (typeof manual.jurisdiction === \"string\" && manual.jurisdiction.length > 0 && !JURISDICTION_PATTERN.test(manual.jurisdiction)) {\n pushError(\n \"INVALID_JURISDICTION\",\n `jurisdiction must be ISO 3166-1 alpha-2 (optionally -subregion), got: ${JSON.stringify(manual.jurisdiction)}`,\n \"jurisdiction\",\n );\n }\n if (!(\"idempotency_support\" in manual)) {\n pushError(\"MISSING_FIELD\", `'idempotency_support' is required for permission_class='${permissionClass}'`, \"idempotency_support\");\n } else if (manual.idempotency_support !== true) {\n pushError(\"IDEMPOTENCY_REQUIRED\", \"idempotency_support must be true for action/payment\", \"idempotency_support\");\n }\n }\n\n if (permissionClass === ToolManualPermissionClassValues.PAYMENT) {\n requireSchema(\"quote_schema\", \"payment\");\n requireString(\"currency\", \"payment\");\n requireString(\"settlement_mode\", \"payment\");\n requireString(\"refund_or_cancellation_note\", \"payment\");\n if (typeof manual.currency === \"string\" && manual.currency !== \"USD\") {\n pushError(\"INVALID_CURRENCY\", \"currency must be 'USD'\", \"currency\");\n }\n if (\n typeof manual.settlement_mode === \"string\" &&\n !Object.values(SettlementMode).includes(manual.settlement_mode as SettlementMode)\n ) {\n pushError(\n \"INVALID_SETTLEMENT_MODE\",\n `settlement_mode must be one of ${JSON.stringify(Object.values(SettlementMode))}`,\n \"settlement_mode\",\n );\n }\n }\n\n const inputSchema = manual.input_schema;\n if (isRecord(inputSchema)) {\n if (inputSchema.type !== \"object\") {\n pushError(\"INPUT_SCHEMA\", \"Root type must be 'object'\", \"input_schema\");\n }\n if (inputSchema.additionalProperties !== false) {\n pushError(\"INPUT_SCHEMA\", \"additionalProperties must be false\", \"input_schema\");\n }\n checkSchemaForbiddenRecursive(inputSchema, \"input_schema\", (nextIssue) => issues.push(nextIssue));\n const properties = inputSchema.properties;\n if (isRecord(properties)) {\n for (const fieldName of Object.keys(properties)) {\n if (PLATFORM_INJECTED_FIELDS.has(fieldName)) {\n pushWarning(\n \"INPUT_SCHEMA\",\n `'${fieldName}' is platform-injected; remove from input_schema`,\n `input_schema.properties.${fieldName}`,\n );\n }\n }\n }\n }\n\n const outputSchema = manual.output_schema;\n if (isRecord(outputSchema)) {\n const required = outputSchema.required;\n if (!Array.isArray(required) || required.length === 0) {\n pushError(\"OUTPUT_SCHEMA\", \"output_schema must have at least one stable required key\", \"output_schema.required\");\n }\n const properties = outputSchema.properties;\n if (isRecord(properties) && !(\"summary\" in properties)) {\n pushError(\"OUTPUT_SCHEMA\", \"output_schema must include a 'summary' property\", \"output_schema.properties\");\n }\n if (permissionClass === ToolManualPermissionClassValues.PAYMENT) {\n if (Array.isArray(required)) {\n if (!required.includes(\"amount_usd\")) {\n pushError(\"OUTPUT_SCHEMA\", \"Payment output_schema must require 'amount_usd'\", \"output_schema.required\");\n }\n if (!required.includes(\"currency\")) {\n pushError(\"OUTPUT_SCHEMA\", \"Payment output_schema must require 'currency'\", \"output_schema.required\");\n }\n }\n if (isRecord(properties)) {\n if (!(\"amount_usd\" in properties)) {\n pushError(\"OUTPUT_SCHEMA\", \"Payment output_schema must include 'amount_usd' in properties\", \"output_schema.properties\");\n }\n if (!(\"currency\" in properties)) {\n pushError(\"OUTPUT_SCHEMA\", \"Payment output_schema must include 'currency' in properties\", \"output_schema.properties\");\n }\n }\n }\n }\n\n return [!issues.some((nextIssue) => nextIssue.severity === \"error\"), issues];\n}\n","import type {\n AppManifest,\n Awaitable,\n ConnectedAccountRef,\n ExecutionContext,\n ExecutionKind,\n ExecutionResult,\n HealthCheckResult,\n ToolManual,\n ToolManualIssue,\n} from \"./types\";\nimport { ApprovalMode, Environment, PermissionClass, PriceModel } from \"./types\";\nimport type { MeteringSimulationResult, UsageRecord } from \"./metering\";\nimport { Recorder, RecordMode } from \"./testing/recorder\";\nimport { validate_tool_manual } from \"./tool-manual-validator\";\nimport type { EmbeddedWalletCharge, PolygonMandate } from \"./web3\";\nimport { simulate_embedded_wallet_charge, simulate_polygon_mandate } from \"./web3\";\n\nconst CAPABILITY_KEY_RE = /^[a-z0-9][a-z0-9-]*[a-z0-9]$/;\n\nfunction normalizeExecutionResult(result: ExecutionResult, executionKind: ExecutionKind): ExecutionResult {\n return {\n success: Boolean(result.success),\n output: result.output ?? {},\n execution_kind: result.execution_kind ?? executionKind,\n units_consumed: result.units_consumed ?? 1,\n amount_minor: result.amount_minor ?? 0,\n currency: result.currency ?? \"USD\",\n provider_status: result.provider_status ?? \"ok\",\n error_message: result.error_message,\n fallback_applied: result.fallback_applied ?? false,\n needs_approval: result.needs_approval ?? false,\n approval_prompt: result.approval_prompt,\n receipt_summary: result.receipt_summary ?? {},\n artifacts: result.artifacts ?? [],\n side_effects: result.side_effects ?? [],\n receipt_ref: result.receipt_ref,\n approval_hint: result.approval_hint,\n };\n}\n\nexport abstract class AppAdapter {\n abstract manifest(): Awaitable<AppManifest>;\n abstract execute(ctx: ExecutionContext): Awaitable<ExecutionResult>;\n\n async health_check(): Promise<HealthCheckResult> {\n return { healthy: true, message: \"\" };\n }\n\n async on_install(_agent_id: string, _owner_user_id: string): Promise<void> {}\n\n async on_uninstall(_agent_id: string, _owner_user_id: string): Promise<void> {}\n\n supported_task_types(): string[] {\n return [\"default\"];\n }\n}\n\nexport class StubProvider {\n provider_key: string;\n\n constructor(provider_key: string) {\n this.provider_key = provider_key;\n }\n\n async handle(method: string, params: Record<string, unknown>): Promise<Record<string, unknown>> {\n return {\n status: \"stub_ok\",\n provider: this.provider_key,\n method,\n params,\n };\n }\n}\n\nexport class AppTestHarness {\n app: AppAdapter;\n stubs: Record<string, StubProvider>;\n\n constructor(app: AppAdapter, stubs: Record<string, StubProvider> = {}) {\n this.app = app;\n this.stubs = stubs;\n }\n\n private async executeWithKind(\n execution_kind: ExecutionKind,\n task_type = \"default\",\n options: {\n connected_accounts?: Record<string, ConnectedAccountRef>;\n input_params?: Record<string, unknown>;\n trace_id?: string;\n idempotency_key?: string;\n request_hash?: string;\n budget_remaining_minor?: number | null;\n metadata?: Record<string, unknown>;\n } = {},\n ): Promise<ExecutionResult> {\n const connected_accounts =\n options.connected_accounts ??\n Object.fromEntries(\n Object.keys(this.stubs).map((key) => [\n key,\n {\n provider_key: key,\n session_token: `stub-token-${key}`,\n environment: Environment.SANDBOX,\n scopes: [],\n },\n ]),\n );\n const ctx: ExecutionContext = {\n agent_id: \"test-agent-001\",\n owner_user_id: \"test-owner-001\",\n task_type,\n environment: Environment.SANDBOX,\n execution_kind,\n connected_accounts,\n input_params: options.input_params ?? {},\n trace_id: options.trace_id,\n idempotency_key: options.idempotency_key,\n request_hash: options.request_hash,\n budget_remaining_minor: options.budget_remaining_minor ?? null,\n metadata: options.metadata ?? {},\n };\n return normalizeExecutionResult(await this.app.execute(ctx), execution_kind);\n }\n\n async dry_run(task_type = \"default\", options: Parameters<AppTestHarness[\"executeWithKind\"]>[2] = {}) {\n return this.executeWithKind(\"dry_run\", task_type, options);\n }\n\n async execute_action(task_type = \"default\", options: Parameters<AppTestHarness[\"executeWithKind\"]>[2] = {}) {\n return this.executeWithKind(\"action\", task_type, options);\n }\n\n async execute_quote(task_type = \"default\", options: Parameters<AppTestHarness[\"executeWithKind\"]>[2] = {}) {\n return this.executeWithKind(\"quote\", task_type, options);\n }\n\n async execute_payment(task_type = \"default\", options: Parameters<AppTestHarness[\"executeWithKind\"]>[2] = {}) {\n return this.executeWithKind(\"payment\", task_type, options);\n }\n\n async health(): Promise<HealthCheckResult> {\n return this.app.health_check();\n }\n\n async validate_manifest(): Promise<string[]> {\n const manifest = await this.app.manifest();\n const issues: string[] = [];\n if (!manifest.capability_key) {\n issues.push(\"capability_key is required\");\n } else if (!CAPABILITY_KEY_RE.test(manifest.capability_key)) {\n issues.push(\"capability_key must be lowercase alphanumeric with hyphens (e.g., 'price-compare-helper')\");\n }\n if (!manifest.name) {\n issues.push(\"name is required\");\n }\n if (!manifest.job_to_be_done) {\n issues.push(\"job_to_be_done is required\");\n }\n if (!manifest.example_prompts || manifest.example_prompts.length === 0) {\n issues.push(\"at least one example_prompt is recommended\");\n }\n if (manifest.permission_class === PermissionClass.ACTION || manifest.permission_class === PermissionClass.PAYMENT) {\n if (!manifest.dry_run_supported) {\n issues.push(\"action/payment apps should support dry_run\");\n }\n if ((manifest.approval_mode ?? ApprovalMode.AUTO) === ApprovalMode.AUTO) {\n issues.push(\"action/payment apps should not use auto approval\");\n }\n }\n return issues;\n }\n\n validate_tool_manual(manual?: ToolManual | Record<string, unknown>): [boolean, ToolManualIssue[]] {\n if (!manual) {\n return [true, []];\n }\n return validate_tool_manual(manual);\n }\n\n validate_receipt(result: ExecutionResult): string[] {\n const issues: string[] = [];\n if (result.execution_kind !== \"dry_run\") {\n const hasLegacy = Boolean(result.receipt_summary && Object.keys(result.receipt_summary).length > 0);\n const hasStructured = Boolean((result.artifacts?.length ?? 0) > 0 || (result.side_effects?.length ?? 0) > 0);\n if (!hasLegacy && !hasStructured) {\n issues.push(\"Non-dry-run execution should include receipt_summary or structured artifacts/side_effects\");\n }\n }\n\n if (result.execution_kind === \"action\" || result.execution_kind === \"payment\") {\n if ((result.side_effects?.length ?? 0) === 0 && !result.receipt_summary) {\n issues.push(\"Action/payment execution should report side effects\");\n }\n }\n\n if (result.needs_approval && !result.approval_prompt && !result.approval_hint) {\n issues.push(\"needs_approval=True but no approval_prompt or approval_hint provided\");\n }\n\n for (const [index, artifact] of (result.artifacts ?? []).entries()) {\n if (!artifact.artifact_type) {\n issues.push(`artifacts[${index}].artifact_type is empty`);\n }\n }\n\n for (const [index, sideEffect] of (result.side_effects ?? []).entries()) {\n if (!sideEffect.action) {\n issues.push(`side_effects[${index}].action is empty`);\n }\n if (!sideEffect.provider) {\n issues.push(`side_effects[${index}].provider is empty`);\n }\n }\n\n return issues;\n }\n\n async simulate_connected_account_missing(\n task_type = \"default\",\n options: Parameters<AppTestHarness[\"executeWithKind\"]>[2] = {},\n ) {\n return this.executeWithKind(\"dry_run\", task_type, {\n ...options,\n connected_accounts: {},\n });\n }\n\n async simulate_metering(\n record: UsageRecord,\n options: { execution_result?: ExecutionResult | null } = {},\n ): Promise<MeteringSimulationResult> {\n const { normalizeUsageRecord } = await import(\"./metering\");\n const manifest = await this.app.manifest();\n const usage_record = normalizeUsageRecord(record);\n let invoice_line_preview: MeteringSimulationResult[\"invoice_line_preview\"] = null;\n\n if (manifest.price_model === PriceModel.USAGE_BASED) {\n invoice_line_preview = {\n price_model: manifest.price_model,\n billable_units: usage_record.units,\n unit_amount_minor: Math.trunc(manifest.price_value_minor ?? 0),\n subtotal_minor: usage_record.units * Math.trunc(manifest.price_value_minor ?? 0),\n currency: manifest.currency ?? \"USD\",\n };\n } else if (manifest.price_model === PriceModel.PER_ACTION) {\n const executionResult = options.execution_result ?? null;\n const billable_units = Number(\n Boolean(executionResult && executionResult.success && executionResult.execution_kind !== \"dry_run\"),\n );\n invoice_line_preview = {\n price_model: manifest.price_model,\n billable_units,\n unit_amount_minor: Math.trunc(manifest.price_value_minor ?? 0),\n subtotal_minor: billable_units * Math.trunc(manifest.price_value_minor ?? 0),\n currency: manifest.currency ?? \"USD\",\n };\n }\n\n return {\n experimental: manifest.price_model === PriceModel.USAGE_BASED || manifest.price_model === PriceModel.PER_ACTION,\n usage_record,\n invoice_line_preview,\n };\n }\n\n simulate_polygon_mandate(options: {\n mandate_id: string;\n payer_wallet: string;\n payee_wallet: string;\n monthly_cap_minor: number;\n currency: string;\n status?: string;\n next_attempt_at_iso?: string | null;\n cancel_scheduled?: boolean;\n }): PolygonMandate {\n return simulate_polygon_mandate(options);\n }\n\n simulate_embedded_wallet_charge(options: {\n mandate: PolygonMandate;\n amount_minor: number;\n tx_hash: string;\n user_operation_hash?: string | null;\n block_number?: number;\n gas_sponsored_by?: string;\n platform_fee_minor?: number;\n developer_net_minor?: number | null;\n }): EmbeddedWalletCharge {\n return simulate_embedded_wallet_charge(options);\n }\n\n async record<T>(\n cassettePath: string,\n fn: (harness: AppTestHarness) => Promise<T> | T,\n options: { ignore_body_fields?: string[] } = {},\n ): Promise<T> {\n const recorder = await Recorder.open(cassettePath, {\n mode: RecordMode.RECORD,\n ignore_body_fields: options.ignore_body_fields,\n });\n try {\n return await recorder.withGlobalFetch(() => fn(this));\n } finally {\n await recorder.close();\n }\n }\n\n async replay<T>(\n cassettePath: string,\n fn: (harness: AppTestHarness) => Promise<T> | T,\n options: { ignore_body_fields?: string[] } = {},\n ): Promise<T> {\n const recorder = await Recorder.open(cassettePath, {\n mode: RecordMode.REPLAY,\n ignore_body_fields: options.ignore_body_fields,\n });\n try {\n return await recorder.withGlobalFetch(() => fn(this));\n } finally {\n await recorder.close();\n }\n }\n}\n","{\n \"version\": \"2026-04-19\",\n \"source_of_truth\": \"agent_sns.application.capability_runtime.tool_manual_validator.score_manual_quality\",\n \"max_score\": 100,\n \"grade_thresholds\": {\n \"A\": 90,\n \"B\": 70,\n \"C\": 50,\n \"D\": 30,\n \"F\": 0\n },\n \"weights\": {\n \"trigger_conditions\": 30,\n \"do_not_use_when\": 10,\n \"summary_for_model\": 10,\n \"input_schema_descriptions\": 20,\n \"output_schema_completeness\": 10,\n \"hints\": 10,\n \"keyword_coverage\": 10\n },\n \"keyword_coverage_bands\": [\n {\n \"minimum_keywords\": 20,\n \"score\": 10\n },\n {\n \"minimum_keywords\": 15,\n \"score\": 8\n },\n {\n \"minimum_keywords\": 10,\n \"score\": 6\n },\n {\n \"minimum_keywords\": 5,\n \"score\": 4\n }\n ],\n \"ambiguity_phrases\": [\n \"use when helpful\",\n \"use for productivity\",\n \"use this tool\",\n \"for many tasks\",\n \"general purpose\",\n \"various uses\",\n \"when needed\",\n \"as needed\",\n \"if appropriate\",\n \"for convenience\",\n \"to help\",\n \"to assist\",\n \"\\u4fbf\\u5229\\u306a\\u6642\",\n \"\\u5fc5\\u8981\\u306b\\u5fdc\\u3058\\u3066\",\n \"\\u9069\\u5b9c\",\n \"\\u3044\\u308d\\u3044\\u308d\\u306a\\u5834\\u9762\\u3067\",\n \"\\u5f79\\u306b\\u7acb\\u3064\\u6642\",\n \"\\u56f0\\u3063\\u305f\\u6642\"\n ],\n \"marketing_fluff\": [\n \"ultimate\",\n \"revolutionary\",\n \"cutting-edge\",\n \"best-in-class\",\n \"world-class\",\n \"game-changing\",\n \"next-generation\",\n \"powerful\",\n \"amazing\",\n \"incredible\",\n \"awesome\",\n \"unbeatable\",\n \"\\u6700\\u9ad8\\u306e\",\n \"\\u9769\\u547d\\u7684\\u306a\",\n \"\\u753b\\u671f\\u7684\\u306a\",\n \"\\u7a76\\u6975\\u306e\",\n \"\\u6700\\u5f37\\u306e\"\n ],\n \"imperative_prefixes\": [\n \"use this\",\n \"use the\",\n \"call this\",\n \"call the\",\n \"invoke this\",\n \"run this\",\n \"execute this\"\n ],\n \"stop_words\": [\n \"a\",\n \"about\",\n \"above\",\n \"after\",\n \"again\",\n \"all\",\n \"also\",\n \"an\",\n \"and\",\n \"any\",\n \"are\",\n \"aren\",\n \"at\",\n \"be\",\n \"been\",\n \"before\",\n \"being\",\n \"below\",\n \"between\",\n \"both\",\n \"but\",\n \"by\",\n \"can\",\n \"could\",\n \"did\",\n \"didn\",\n \"do\",\n \"does\",\n \"doesn\",\n \"don\",\n \"during\",\n \"each\",\n \"every\",\n \"few\",\n \"for\",\n \"from\",\n \"further\",\n \"had\",\n \"hadn\",\n \"has\",\n \"hasn\",\n \"have\",\n \"haven\",\n \"he\",\n \"here\",\n \"how\",\n \"i\",\n \"if\",\n \"in\",\n \"into\",\n \"is\",\n \"isn\",\n \"it\",\n \"just\",\n \"may\",\n \"me\",\n \"might\",\n \"more\",\n \"most\",\n \"must\",\n \"my\",\n \"no\",\n \"nor\",\n \"not\",\n \"of\",\n \"off\",\n \"on\",\n \"once\",\n \"only\",\n \"or\",\n \"other\",\n \"our\",\n \"out\",\n \"over\",\n \"own\",\n \"s\",\n \"same\",\n \"shall\",\n \"she\",\n \"should\",\n \"shouldn\",\n \"so\",\n \"some\",\n \"such\",\n \"t\",\n \"than\",\n \"that\",\n \"the\",\n \"their\",\n \"them\",\n \"then\",\n \"there\",\n \"these\",\n \"they\",\n \"this\",\n \"those\",\n \"through\",\n \"to\",\n \"too\",\n \"under\",\n \"up\",\n \"very\",\n \"was\",\n \"wasn\",\n \"we\",\n \"were\",\n \"weren\",\n \"when\",\n \"where\",\n \"why\",\n \"will\",\n \"with\",\n \"won\",\n \"would\",\n \"wouldn\",\n \"you\",\n \"your\"\n ]\n}\n","import rules from \"../../schemas/tool-manual-grader-rules.json\";\n\nimport { SiglumeClient } from \"./client\";\nimport type { ToolManualIssue, ToolManualQualityReport } from \"./types\";\nimport { validate_tool_manual } from \"./tool-manual-validator\";\nimport { isRecord } from \"./utils\";\n\nconst WORD_RE = /[A-Za-z\\u3040-\\u9fff]{2,}/gu;\n\ntype GraderIssueFactory = (\n code: string,\n message: string,\n options?: { field?: string; severity?: ToolManualIssue[\"severity\"]; suggestion?: string },\n) => ToolManualIssue;\n\ntype ManualScoreParts = {\n trigger_score: number;\n do_not_use_score: number;\n summary_score: number;\n input_schema_score: number;\n output_schema_score: number;\n hints_score: number;\n keyword_count: number;\n};\n\nconst ambiguityPhrases = Array.isArray(rules.ambiguity_phrases)\n ? rules.ambiguity_phrases.map((item) => String(item))\n : [];\nconst marketingFluff = Array.isArray(rules.marketing_fluff)\n ? rules.marketing_fluff.map((item) => String(item))\n : [];\nconst imperativePrefixes = Array.isArray(rules.imperative_prefixes)\n ? rules.imperative_prefixes.map((item) => String(item))\n : [];\nconst stopWords = new Set(\n Array.isArray(rules.stop_words) ? rules.stop_words.map((item) => String(item)) : [],\n);\nconst keywordCoverageBands = Array.isArray(rules.keyword_coverage_bands)\n ? rules.keyword_coverage_bands\n .filter((item): item is { minimum_keywords: number; score: number } =>\n isRecord(item) &&\n typeof item.minimum_keywords === \"number\" &&\n typeof item.score === \"number\",\n )\n .map((item) => [item.minimum_keywords, item.score] as const)\n .sort((left, right) => right[0] - left[0])\n : [];\nconst gradeThresholdSource = isRecord(rules.grade_thresholds) ? (rules.grade_thresholds as Record<string, unknown>) : {};\nconst gradeThresholds = [\"A\", \"B\", \"C\", \"D\"]\n .map((grade) => [grade, gradeThresholdSource[grade]] as const)\n .filter((entry): entry is [ToolManualQualityReport[\"grade\"], number] => typeof entry[1] === \"number\");\n\nfunction createIssueFactory(): GraderIssueFactory {\n return (code, message, options = {}) => ({\n code,\n message,\n field: options.field,\n severity: options.severity ?? \"warning\",\n suggestion: options.suggestion,\n });\n}\n\nfunction coerceToolManual(tool_manual: unknown): Record<string, unknown> | unknown {\n if (isRecord(tool_manual) && typeof tool_manual.to_dict === \"function\") {\n return tool_manual.to_dict();\n }\n return tool_manual;\n}\n\nexport async function score_tool_manual_remote(\n tool_manual: Record<string, unknown>,\n options: { api_key: string; base_url?: string; fetch?: typeof fetch },\n): Promise<ToolManualQualityReport> {\n const client = new SiglumeClient({\n api_key: options.api_key,\n base_url: options.base_url,\n fetch: options.fetch,\n });\n return client.preview_quality_score(tool_manual);\n}\n\nexport function score_tool_manual_offline(tool_manual: unknown): ToolManualQualityReport {\n const manual = coerceToolManual(tool_manual);\n const [validation_ok, validation_issues] = validate_tool_manual(manual);\n const quality = scoreManualQuality(manual);\n const validation_errors = validation_issues.filter((nextIssue) => nextIssue.severity === \"error\");\n const validation_warnings = validation_issues.filter((nextIssue) => nextIssue.severity !== \"error\");\n const hasCriticalQualityIssue = quality.issues.some((nextIssue) => nextIssue.severity === \"critical\");\n\n return {\n overall_score: quality.overall_score,\n grade: quality.grade,\n issues: [...validation_issues, ...quality.issues],\n keyword_coverage_estimate: quality.keyword_coverage_estimate,\n improvement_suggestions: quality.improvement_suggestions,\n publishable: validation_ok && (quality.grade === \"A\" || quality.grade === \"B\") && !hasCriticalQualityIssue,\n validation_ok,\n validation_errors,\n validation_warnings,\n };\n}\n\nfunction scoreManualQuality(manual: Record<string, unknown> | unknown): ToolManualQualityReport {\n const makeIssue = createIssueFactory();\n if (!isRecord(manual)) {\n return {\n overall_score: 0,\n grade: \"F\",\n issues: [makeIssue(\"ambiguity\", \"Manual is not a dict\", { severity: \"critical\" })],\n keyword_coverage_estimate: 0,\n improvement_suggestions: [\"Provide a valid manual dict\"],\n };\n }\n\n const issues: ToolManualIssue[] = [];\n const trigger_score = scoreTriggerConditions(manual, issues, makeIssue);\n const do_not_use_score = scoreDoNotUseWhen(manual, issues, makeIssue);\n const summary_score = scoreSummaryForModel(manual, issues, makeIssue);\n const input_schema_score = scoreInputSchemaDescriptions(manual, issues, makeIssue);\n const output_schema_score = scoreOutputSchemaCompleteness(manual, issues, makeIssue);\n const hints_score = scoreHints(manual, issues, makeIssue);\n const keyword_coverage_estimate = estimateKeywordCoverage(manual);\n const keyword_score = scoreKeywordCoverage(keyword_coverage_estimate);\n\n const overall_score = Math.max(\n 0,\n Math.min(\n 100,\n trigger_score +\n do_not_use_score +\n summary_score +\n input_schema_score +\n output_schema_score +\n hints_score +\n keyword_score,\n ),\n );\n\n return {\n overall_score,\n grade: overallToGrade(overall_score),\n issues,\n keyword_coverage_estimate,\n improvement_suggestions: buildImprovementSuggestions({\n trigger_score,\n do_not_use_score,\n summary_score,\n input_schema_score,\n output_schema_score,\n hints_score,\n keyword_count: keyword_coverage_estimate,\n }),\n };\n}\n\nfunction scoreTriggerConditions(\n manual: Record<string, unknown>,\n issues: ToolManualIssue[],\n makeIssue: GraderIssueFactory,\n): number {\n const conditions = manual.trigger_conditions;\n if (!Array.isArray(conditions) || conditions.length === 0) {\n issues.push(makeIssue(\"trigger_specificity\", \"No trigger_conditions provided\", { field: \"trigger_conditions\", severity: \"critical\" }));\n return 0;\n }\n\n let score = 30;\n conditions.forEach((condition, index) => {\n if (typeof condition !== \"string\") {\n issues.push(\n makeIssue(\"trigger_specificity\", \"Trigger condition must be a string to be matchable by agents\", {\n field: `trigger_conditions[${index}]`,\n severity: \"warning\",\n suggestion: \"Replace non-string trigger conditions with concrete text descriptions\",\n }),\n );\n score -= 5;\n return;\n }\n\n const field = `trigger_conditions[${index}]`;\n const lowered = condition.toLowerCase();\n if (condition.length < 15) {\n issues.push(\n makeIssue(\"trigger_specificity\", `Trigger condition is too short (${condition.length} chars) - be more specific`, {\n field,\n severity: \"warning\",\n suggestion: \"Describe a concrete situation, e.g. 'When the owner asks for a weather forecast for a specific city'\",\n }),\n );\n score -= 5;\n }\n if (ambiguityPhrases.some((phrase) => lowered.includes(phrase.toLowerCase()))) {\n issues.push(\n makeIssue(\"ambiguity\", \"Contains vague phrase that agents cannot reliably match on\", {\n field,\n severity: \"warning\",\n suggestion: \"Replace with a concrete situation description\",\n }),\n );\n score -= 5;\n }\n if (marketingFluff.some((fluff) => lowered.includes(fluff.toLowerCase()))) {\n issues.push(\n makeIssue(\"description_quality\", \"Marketing language in trigger condition reduces selection accuracy\", {\n field,\n severity: \"warning\",\n suggestion: \"Use factual, situation-based language instead\",\n }),\n );\n score -= 3;\n }\n if (imperativePrefixes.some((prefix) => lowered.startsWith(prefix))) {\n issues.push(\n makeIssue(\"trigger_specificity\", \"Trigger reads as an imperative command rather than a situation description\", {\n field,\n severity: \"suggestion\",\n suggestion: \"Rewrite as a situation: 'When the user needs...' or 'The agent encounters...'\",\n }),\n );\n score -= 2;\n }\n });\n\n if (conditions.length < 3) {\n issues.push(\n makeIssue(\"trigger_specificity\", `Only ${conditions.length} trigger condition(s) - 3+ increases selection chances`, {\n field: \"trigger_conditions\",\n severity: \"suggestion\",\n }),\n );\n score -= 5;\n }\n return Math.max(0, score);\n}\n\nfunction scoreDoNotUseWhen(\n manual: Record<string, unknown>,\n issues: ToolManualIssue[],\n makeIssue: GraderIssueFactory,\n): number {\n const items = manual.do_not_use_when;\n if (!Array.isArray(items) || items.length === 0) {\n issues.push(\n makeIssue(\"description_quality\", \"No do_not_use_when items - agents need negative conditions to avoid false positives\", {\n field: \"do_not_use_when\",\n severity: \"warning\",\n }),\n );\n return 0;\n }\n\n let score = 10;\n const triggerTexts = Array.isArray(manual.trigger_conditions)\n ? manual.trigger_conditions.filter((item): item is string => typeof item === \"string\").map((item) => item.toLowerCase())\n : [];\n\n items.forEach((item, index) => {\n if (typeof item !== \"string\") {\n issues.push(\n makeIssue(\"description_quality\", \"do_not_use_when entries must be strings to describe negative cases clearly\", {\n field: `do_not_use_when[${index}]`,\n severity: \"warning\",\n }),\n );\n score -= 3;\n return;\n }\n\n const field = `do_not_use_when[${index}]`;\n const itemWords = new Set(extractWords(item.toLowerCase()));\n for (const triggerText of triggerTexts) {\n const triggerWords = new Set(extractWords(triggerText));\n if (itemWords.size === 0 || triggerWords.size === 0) {\n continue;\n }\n const overlap = [...itemWords].filter((word) => triggerWords.has(word)).length / itemWords.size;\n if (overlap > 0.6) {\n issues.push(\n makeIssue(\"ambiguity\", \"This do_not_use_when item closely mirrors a trigger_condition - add a genuinely different negative case\", {\n field,\n severity: \"suggestion\",\n }),\n );\n score -= 3;\n break;\n }\n }\n if (item.length < 10) {\n issues.push(\n makeIssue(\"description_quality\", \"do_not_use_when item is very short - describe a concrete negative condition\", {\n field,\n severity: \"suggestion\",\n }),\n );\n score -= 2;\n }\n });\n\n return Math.max(0, score);\n}\n\nfunction scoreSummaryForModel(\n manual: Record<string, unknown>,\n issues: ToolManualIssue[],\n makeIssue: GraderIssueFactory,\n): number {\n const summary = manual.summary_for_model;\n if (summary === undefined) {\n issues.push(makeIssue(\"description_quality\", \"summary_for_model is missing\", { field: \"summary_for_model\", severity: \"warning\" }));\n return 0;\n }\n if (typeof summary !== \"string\") {\n issues.push(makeIssue(\"description_quality\", \"summary_for_model must be a string\", { field: \"summary_for_model\", severity: \"warning\" }));\n return 0;\n }\n if (summary.length === 0) {\n issues.push(makeIssue(\"description_quality\", \"summary_for_model is empty\", { field: \"summary_for_model\", severity: \"warning\" }));\n return 0;\n }\n\n let score = 10;\n const lowered = summary.toLowerCase();\n let fluffFound = false;\n for (const fluff of marketingFluff) {\n if (lowered.includes(fluff.toLowerCase())) {\n issues.push(\n makeIssue(\"description_quality\", \"Marketing language in summary_for_model - use factual descriptions\", {\n field: \"summary_for_model\",\n severity: \"warning\",\n suggestion: \"Describe what the tool actually does in plain terms\",\n }),\n );\n if (!fluffFound) {\n score -= 3;\n fluffFound = true;\n }\n }\n }\n if (summary.length < 20) {\n issues.push(\n makeIssue(\"description_quality\", \"summary_for_model is very brief - a longer factual description helps agent selection\", {\n field: \"summary_for_model\",\n severity: \"suggestion\",\n }),\n );\n score -= 3;\n }\n return Math.max(0, score);\n}\n\nfunction scoreInputSchemaDescriptions(\n manual: Record<string, unknown>,\n issues: ToolManualIssue[],\n makeIssue: GraderIssueFactory,\n): number {\n if (!isRecord(manual.input_schema)) {\n issues.push(makeIssue(\"schema_completeness\", \"input_schema must be a JSON Schema object\", { field: \"input_schema\", severity: \"warning\" }));\n return 0;\n }\n const schemaIssues = checkSchemaDescriptions(manual.input_schema, makeIssue);\n issues.push(...schemaIssues);\n if (schemaIssues.length === 0) {\n return 20;\n }\n\n let score = 20;\n for (const schemaIssue of schemaIssues) {\n if (schemaIssue.severity === \"warning\") {\n score -= 5;\n } else if (schemaIssue.severity === \"suggestion\") {\n score -= 2;\n }\n }\n return Math.max(0, score);\n}\n\nfunction scoreOutputSchemaCompleteness(\n manual: Record<string, unknown>,\n issues: ToolManualIssue[],\n makeIssue: GraderIssueFactory,\n): number {\n if (!isRecord(manual.output_schema)) {\n issues.push(makeIssue(\"schema_completeness\", \"output_schema must be a JSON Schema object\", { field: \"output_schema\", severity: \"warning\" }));\n return 0;\n }\n\n const properties = manual.output_schema.properties;\n if (!isRecord(properties)) {\n issues.push(\n makeIssue(\"schema_completeness\", \"output_schema.properties must be an object mapping field names to schema definitions\", {\n field: \"output_schema.properties\",\n severity: \"warning\",\n }),\n );\n return 0;\n }\n if (Object.keys(properties).length === 0) {\n issues.push(makeIssue(\"schema_completeness\", \"output_schema has no properties defined\", { field: \"output_schema\", severity: \"warning\" }));\n return 0;\n }\n\n let undescribed = 0;\n Object.values(properties).forEach((propertyDefinition) => {\n if (isRecord(propertyDefinition) && !propertyDefinition.description) {\n undescribed += 1;\n }\n });\n\n let score = 10;\n if (undescribed > 0) {\n issues.push(\n makeIssue(\"schema_completeness\", `${undescribed} output field(s) lack descriptions`, {\n field: \"output_schema\",\n severity: \"suggestion\",\n suggestion: \"Add description to each output property so agents know what to expect\",\n }),\n );\n score -= Math.min(undescribed * 2, 6);\n }\n return Math.max(0, score);\n}\n\nfunction scoreHints(manual: Record<string, unknown>, issues: ToolManualIssue[], makeIssue: GraderIssueFactory): number {\n let score = 10;\n for (const fieldName of [\"usage_hints\", \"result_hints\", \"error_hints\"] as const) {\n const hints = manual[fieldName];\n if (!Array.isArray(hints)) {\n issues.push(\n makeIssue(\"description_quality\", `${fieldName} must be a list of hint strings`, {\n field: fieldName,\n severity: \"warning\",\n }),\n );\n score -= 5;\n continue;\n }\n if (hints.length === 0) {\n issues.push(\n makeIssue(\"description_quality\", `${fieldName} is empty - hints help agents use the tool correctly`, {\n field: fieldName,\n severity: \"suggestion\",\n }),\n );\n score -= 3;\n continue;\n }\n\n let shortCount = 0;\n hints.forEach((item, index) => {\n if (typeof item !== \"string\") {\n issues.push(\n makeIssue(\"description_quality\", `${fieldName} items must be strings`, {\n field: `${fieldName}[${index}]`,\n severity: \"critical\",\n suggestion: \"Replace non-string hint items with short plain-language guidance\",\n }),\n );\n score -= 10;\n return;\n }\n if (item.length < 10) {\n shortCount += 1;\n }\n });\n if (shortCount > 0) {\n issues.push(\n makeIssue(\"description_quality\", `${shortCount} item(s) in ${fieldName} are very short - provide actionable guidance`, {\n field: fieldName,\n severity: \"suggestion\",\n }),\n );\n score -= Math.min(shortCount, 3);\n }\n }\n return Math.max(0, score);\n}\n\nfunction scoreKeywordCoverage(keywordCount: number): number {\n for (const [minimumKeywords, score] of keywordCoverageBands) {\n if (keywordCount >= minimumKeywords) {\n return score;\n }\n }\n return Math.max(0, keywordCount);\n}\n\nfunction checkSchemaDescriptions(schema: Record<string, unknown>, makeIssue: GraderIssueFactory): ToolManualIssue[] {\n const issues: ToolManualIssue[] = [];\n const properties = schema.properties;\n if (!isRecord(properties)) {\n return issues;\n }\n\n for (const [propertyName, propertyDefinition] of Object.entries(properties)) {\n if (!isRecord(propertyDefinition)) {\n issues.push(\n makeIssue(\"schema_completeness\", `Field '${propertyName}' must be described by a schema object`, {\n field: `input_schema.properties.${propertyName}`,\n severity: \"warning\",\n }),\n );\n continue;\n }\n\n const field = `input_schema.properties.${propertyName}`;\n const description = propertyDefinition.description;\n if (description === undefined || (typeof description === \"string\" && description.trim().length === 0)) {\n issues.push(\n makeIssue(\"schema_completeness\", `Field '${propertyName}' has no description - agents will not know what to pass`, {\n field,\n severity: \"warning\",\n suggestion: `Add a description explaining what '${propertyName}' represents and any constraints`,\n }),\n );\n } else if (typeof description !== \"string\") {\n issues.push(\n makeIssue(\"schema_completeness\", `Field '${propertyName}' description must be a string`, {\n field,\n severity: \"warning\",\n suggestion: \"Replace non-string descriptions with short explanatory text\",\n }),\n );\n } else if (description.trim().length < 10) {\n issues.push(\n makeIssue(\"schema_completeness\", `Field '${propertyName}' has a very short description (${description.trim().length} chars)`, {\n field,\n severity: \"suggestion\",\n suggestion: \"Expand the description to at least 10 characters for clarity\",\n }),\n );\n }\n\n if (Array.isArray(propertyDefinition.enum)) {\n const trivial = propertyDefinition.enum.filter((item) => typeof item === \"string\" && item.length <= 1);\n if (trivial.length > 0 && trivial.length === propertyDefinition.enum.length) {\n issues.push(\n makeIssue(\"schema_completeness\", `Field '${propertyName}' has only single-character enum values - use meaningful names`, {\n field,\n severity: \"warning\",\n suggestion: \"Replace enum values like 'a','b','c' with descriptive names like 'celsius','fahrenheit'\",\n }),\n );\n }\n }\n\n if (propertyDefinition.type === \"object\") {\n issues.push(...checkSchemaDescriptions(propertyDefinition, makeIssue));\n }\n if (isRecord(propertyDefinition.items) && propertyDefinition.items.type === \"object\") {\n issues.push(...checkSchemaDescriptions(propertyDefinition.items, makeIssue));\n }\n }\n\n return issues;\n}\n\nfunction estimateKeywordCoverage(manual: Record<string, unknown>): number {\n const textParts: string[] = [];\n if (Array.isArray(manual.trigger_conditions)) {\n textParts.push(...manual.trigger_conditions.filter((item): item is string => typeof item === \"string\"));\n }\n if (typeof manual.job_to_be_done === \"string\") {\n textParts.push(manual.job_to_be_done);\n }\n if (typeof manual.summary_for_model === \"string\") {\n textParts.push(manual.summary_for_model);\n }\n if (Array.isArray(manual.usage_hints)) {\n textParts.push(...manual.usage_hints.filter((item): item is string => typeof item === \"string\"));\n }\n const words = extractWords(textParts.join(\" \").toLowerCase());\n const meaningful = new Set(words.filter((word) => !stopWords.has(word) && word.length >= 2));\n return meaningful.size;\n}\n\nfunction extractWords(text: string): string[] {\n return [...text.matchAll(WORD_RE)].map((match) => match[0]);\n}\n\nfunction overallToGrade(score: number): ToolManualQualityReport[\"grade\"] {\n for (const [grade, minimumScore] of gradeThresholds) {\n if (score >= minimumScore) {\n return grade;\n }\n }\n return \"F\";\n}\n\nfunction buildImprovementSuggestions(scores: ManualScoreParts): string[] {\n const suggestions: string[] = [];\n if (scores.trigger_score < 20) {\n suggestions.push(\"Improve trigger_conditions: write 3-5 specific situations describing WHEN an agent should select this tool.\");\n }\n if (scores.input_schema_score < 15) {\n suggestions.push(\"Add descriptions to all input_schema properties. Each description should be at least 10 characters and explain what the field represents.\");\n }\n if (scores.summary_score < 7) {\n suggestions.push(\"Rewrite summary_for_model with factual, plain language. Avoid marketing adjectives and describe what the tool does.\");\n }\n if (scores.do_not_use_score < 7) {\n suggestions.push(\"Add concrete do_not_use_when conditions that are genuinely different from your trigger_conditions.\");\n }\n if (scores.output_schema_score < 7) {\n suggestions.push(\"Add descriptions to output_schema properties so agents know what data they will receive.\");\n }\n if (scores.hints_score < 7) {\n suggestions.push(\"Expand usage_hints and result_hints with actionable guidance for agents.\");\n }\n if (scores.keyword_count < 10) {\n suggestions.push(\n `Keyword coverage is low (${scores.keyword_count} unique terms). Use varied vocabulary across trigger_conditions and hints to cover more request phrasings.`,\n );\n }\n return suggestions;\n}\n"],"mappings":";;;;;;;;;;;;AAAA,IAAa,cAOA,oBAEA,qBAMA,sBAEA,qBAIA,4BAIA;AAzBb;AAAA;AAAA;AAAO,IAAM,eAAN,cAA2B,MAAM;AAAA,MACtC,YAAY,SAAiB;AAC3B,cAAM,OAAO;AACb,aAAK,OAAO,WAAW;AAAA,MACzB;AAAA,IACF;AAEO,IAAM,qBAAN,cAAiC,aAAa;AAAA,IAAC;AAE/C,IAAM,sBAAN,cAAkC,aAAa;AAAA,IAAC;AAMhD,IAAM,uBAAN,cAAmC,mBAAmB;AAAA,IAAC;AAEvD,IAAM,sBAAN,cAAkC,aAAa;AAAA,IAAC;AAIhD,IAAM,6BAAN,cAAyC,oBAAoB;AAAA,IAAC;AAI9D,IAAM,kBAAN,cAA8B,mBAAmB;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,YACE,SACA,SAQA;AACA,cAAM,OAAO;AACb,aAAK,cAAc,QAAQ;AAC3B,aAAK,aAAa,QAAQ;AAC1B,aAAK,WAAW,QAAQ;AACxB,aAAK,aAAa,QAAQ;AAC1B,aAAK,UAAU,QAAQ,WAAW,CAAC;AACnC,aAAK,gBAAgB,QAAQ;AAAA,MAC/B;AAAA,IACF;AAAA;AAAA;;;AClDO,SAAS,SAAS,OAAkD;AACzE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEO,SAAS,aAAa,OAA+B;AAC1D,MAAI,UAAU,UAAa,UAAU,MAAM;AACzC,WAAO;AAAA,EACT;AACA,QAAM,OAAO,OAAO,KAAK,EAAE,KAAK;AAChC,SAAO,KAAK,SAAS,IAAI,OAAO;AAClC;AAEO,SAAS,aAAa,OAA+B;AAC1D,SAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,QAAQ;AACvE;AAEO,SAAS,SAAS,OAAyC;AAChE,SAAO,SAAS,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC;AAC3C;AAEO,SAAS,WAAW,OAAiE;AAC1F,MAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,WAAO;AAAA,EACT;AACA,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AACxF,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,SAAS,WAAW,IAAI,CAAC;AAAA,EAC7C;AACA,MAAI,SAAS,KAAK,GAAG;AACnB,UAAM,SAAS,MAAM;AACrB,QAAI,OAAO,WAAW,YAAY;AAChC,aAAO,WAAW,OAAO,KAAK,KAAK,CAAC;AAAA,IACtC;AACA,UAAM,SAAS,MAAM;AACrB,QAAI,OAAO,WAAW,YAAY;AAChC,aAAO,WAAW,OAAO,KAAK,KAAK,CAAC;AAAA,IACtC;AACA,WAAO,OAAO;AAAA,MACZ,OAAO,QAAQ,KAAK,EACjB,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,WAAW,GAAG,CAAC,EACtC,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC;AAAA,IACjD;AAAA,EACF;AACA,SAAO,OAAO,KAAK;AACrB;AAEO,SAAS,cAAc,OAAgB,OAAwC;AACpF,QAAM,UAAU,WAAW,KAAK;AAChC,MAAI,CAAC,SAAS,OAAO,GAAG;AACtB,UAAM,IAAI,UAAU,GAAG,KAAK,gCAAgC;AAAA,EAC9D;AACA,SAAO;AACT;AAEO,SAAS,WAAW,OAAwB;AACjD,SAAO,KAAK,UAAU,WAAW,KAAK,GAAG,MAAM,CAAC;AAClD;AAEO,SAAS,MAAM,IAA2B;AAC/C,SAAO,IAAI,QAAQ,CAACA,aAAY,WAAWA,UAAS,EAAE,CAAC;AACzD;AAEO,SAAS,gBAAgB,OAAqC;AACnE,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AACA,QAAM,SAAS,OAAO,KAAK;AAC3B,SAAO,OAAO,SAAS,MAAM,KAAK,UAAU,IAAI,SAAS,MAAO;AAClE;AAEO,SAAS,2BAA2B,eAA+B;AACxE,QAAM,QAAQ,cACX,WAAW,KAAK,GAAG,EACnB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EACzB,OAAO,OAAO;AACjB,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AACA,SAAO,GAAG,MAAM,IAAI,CAAC,SAAS,KAAK,CAAC,EAAG,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AAChF;AAEO,SAAS,4BACd,iBACA,mBACQ;AACR,QAAM,gBAAgB,OAAO,gBAAgB,kBAAkB,wBAAwB;AACvF,QAAM,cAAc;AAAA,IAClB,gBAAgB,kBACd,kBAAkB,kBAClB;AAAA,EACJ;AACA,QAAM,OAAO,OAAO,gBAAgB,QAAQ,cAAc,WAAW,KAAK,GAAG,CAAC;AAC9E,QAAM,YAAY,2BAA2B,aAAa;AAC1D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,wBAAwB,SAAS;AAAA,IACjC;AAAA,IACA,cAAc,KAAK;AAAA,MACjB;AAAA,QACE,gBAAgB;AAAA,QAChB;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,WAAW,MAAM,QAAQ,CAAC;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAxHA;AAAA;AAAA;AAAA;AAAA;;;ACyNA,SAASC,UAAS,OAAkD;AAClE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAASC,UAAS,OAAyC;AACzD,MAAI,CAACD,UAAS,KAAK,GAAG;AACpB,WAAO,CAAC;AAAA,EACV;AACA,SAAO,OAAO,YAAY,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,GAAG,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC;AACtG;AAEA,SAAS,UAAU,OAAyB;AAC1C,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,SAAS,UAAU,IAAI,CAAC;AAAA,EAC5C;AACA,MAAIA,UAAS,KAAK,GAAG;AACnB,WAAO,OAAO,YAAY,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,GAAG,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC;AAAA,EACtG;AACA,SAAO;AACT;AAEA,SAASE,cAAa,OAA+B;AACnD,QAAM,OAAO,UAAU,UAAa,UAAU,OAAO,KAAK,OAAO,KAAK,EAAE,KAAK;AAC7E,SAAO,KAAK,SAAS,IAAI,OAAO;AAClC;AAEA,SAAS,cAAc,OAAgB,MAAuC;AAC5E,MAAI,CAACF,UAAS,KAAK,GAAG;AACpB,UAAM,IAAI,2BAA2B,GAAG,IAAI,qBAAqB;AAAA,EACnE;AACA,SAAOC,UAAS,KAAK;AACvB;AAyJO,SAAS,2BAA2B,SAA6C;AACtF,QAAM,SAAS,cAAc,SAAS,sBAAsB;AAC5D,SAAO;AAAA,IACL,iBAAiB,OAAO,OAAO,MAAM,OAAO,mBAAmB,EAAE;AAAA,IACjE,eAAe,OAAO,OAAO,iBAAiB,EAAE;AAAA,IAChD,cAAc,OAAO,OAAO,gBAAgB,EAAE;AAAA,IAC9C,QAAQ,OAAO,OAAO,UAAU,EAAE;AAAA,IAClC,aAAa,MAAM,QAAQ,OAAO,WAAW,IACzC,OAAO,YAAY,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,IAC/E,CAAC;AAAA,IACL,aAAaC,cAAa,OAAO,WAAW;AAAA,IAC5C,qBAAqBA,cAAa,OAAO,mBAAmB;AAAA,IAC5D,gBAAgBA,cAAa,OAAO,cAAc;AAAA,IAClD,UAAUD,UAAS,OAAO,QAAQ;AAAA,IAClC,kBAAkBC,cAAa,OAAO,gBAAgB;AAAA,IACtD,YAAYA,cAAa,OAAO,UAAU;AAAA,IAC1C,YAAYA,cAAa,OAAO,UAAU;AAAA,IAC1C,KAAK;AAAA,EACP;AACF;AAEO,SAAS,uBAAuB,SAAyC;AAC9E,QAAM,SAAS,cAAc,SAAS,kBAAkB;AACxD,SAAO;AAAA,IACL,aAAa,OAAO,OAAO,MAAM,OAAO,eAAe,EAAE;AAAA,IACzD,iBAAiB,OAAO,OAAO,mBAAmB,EAAE;AAAA,IACpD,UAAU,OAAO,OAAO,YAAY,EAAE;AAAA,IACtC,YAAY,OAAO,OAAO,cAAc,EAAE;AAAA,IAC1C,iBAAiB,OAAO,OAAO,mBAAmB,EAAE;AAAA,IACpD,cAAc,OAAO,OAAO,gBAAgB,EAAE;AAAA,IAC9C,iBAAiB,OAAO,OAAO,mBAAmB,EAAE;AAAA,IACpD,iBAAiBD,UAAS,OAAO,eAAe;AAAA,IAChD,cAAcA,UAAS,OAAO,YAAY;AAAA,IAC1C,iBAAiB,OAAO,OAAO,oBAAoB,WAAW,OAAO,kBAAkB;AAAA,IACvF,kBAAkBA,UAAS,OAAO,gBAAgB;AAAA,IAClD,eAAe,UAAU,OAAO,aAAa;AAAA,IAC7C,aAAa,OAAO,OAAO,gBAAgB,WAAW,OAAO,cAAc;AAAA,IAC3E,eAAe,OAAO,OAAO,kBAAkB,WAAW,OAAO,gBAAgB;AAAA,IACjF,iBAAiBC,cAAa,OAAO,eAAe;AAAA,IACpD,cAAcA,cAAa,OAAO,YAAY;AAAA,IAC9C,eAAeA,cAAa,OAAO,aAAa;AAAA,IAChD,UAAUA,cAAa,OAAO,QAAQ;AAAA,IACtC,YAAYA,cAAa,OAAO,UAAU;AAAA,IAC1C,YAAYA,cAAa,OAAO,UAAU;AAAA,IAC1C,KAAK;AAAA,EACP;AACF;AAEO,SAAS,oBAAoB,SAAuC;AACzE,QAAM,SAAS,cAAc,SAAS,eAAe;AACrD,QAAM,YAAY,OAAO,OAAO,QAAQ,EAAE,EAAE,KAAK;AACjD,MAAI,CAAC,kBAAkB,IAAI,SAAS,GAAG;AACrC,UAAM,IAAI,2BAA2B,mCAAmC,aAAa,WAAW,GAAG;AAAA,EACrG;AACA,QAAM,QAAQ;AAAA,IACZ,IAAI,OAAO,OAAO,MAAM,EAAE;AAAA,IAC1B,MAAM;AAAA,IACN,aAAa,OAAO,OAAO,eAAe,EAAE;AAAA,IAC5C,aAAa,OAAO,OAAO,eAAe,EAAE;AAAA,IAC5C,iBAAiB,OAAO,OAAO,mBAAmB,OAAO,MAAM,EAAE;AAAA,IACjE,UAAUA,cAAa,OAAO,QAAQ;AAAA,IACtC,MAAMD,UAAS,OAAO,IAAI;AAAA,IAC1B,KAAK;AAAA,EACP;AACA,MAAI,CAAC,MAAM,IAAI;AACb,UAAM,IAAI,2BAA2B,+BAA+B;AAAA,EACtE;AACA,MAAI,CAAC,MAAM,aAAa;AACtB,UAAM,IAAI,2BAA2B,kCAAkC;AAAA,EACzE;AACA,MAAI,CAAC,MAAM,aAAa;AACtB,UAAM,IAAI,2BAA2B,kCAAkC;AAAA,EACzE;AACA,SAAO;AACT;AAEO,SAAS,2BAA2B,SAAsC;AAC/E,QAAM,SAAS,cAAc,SAAS,sBAAsB;AAC5D,SAAO;AAAA,IACL,QAAQ,QAAQ,OAAO,MAAM;AAAA,IAC7B,OAAO,oBAAoB,OAAO,KAAK;AAAA,EACzC;AACF;AAneA,IAOa,qBAeP;AAtBN;AAAA;AAAA;AAAA;AAOO,IAAM,sBAAsB;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAGA,IAAM,oBAAoB,IAAI,IAAY,mBAAmB;AAAA;AAAA;;;AC0EtD,SAAS,yBAAyB,MAAkD;AACzF,QAAM,UAAU,SAAS,KAAK,aAAa;AAC3C,SAAO;AAAA,IACL,YAAY,OAAO,KAAK,cAAc,KAAK,oBAAoB,EAAE;AAAA,IACjE,kBAAkB,aAAa,KAAK,gBAAgB,KAAK,aAAa,KAAK,UAAU;AAAA,IACrF,SAAS,OAAO,KAAK,WAAW,EAAE;AAAA,IAClC,qBAAqB,aAAa,KAAK,mBAAmB;AAAA,IAC1D,cAAc,aAAa,KAAK,YAAY;AAAA,IAC5C,gBAAgB,aAAa,KAAK,cAAc;AAAA,IAChD,cAAc,aAAa,KAAK,YAAY;AAAA,IAC5C,WAAW,aAAa,KAAK,SAAS;AAAA,IACtC,SAAS,OAAO,KAAK,WAAW,SAAS;AAAA,IACzC,UAAU,OAAO,KAAK,YAAY,GAAG;AAAA,IACrC,cAAcE,cAAa,KAAK,YAAY;AAAA,IAC5C,eAAe,OAAO,KAAK,iBAAiB,CAAC;AAAA,IAC7C,wBAAwB,OAAO,KAAK,0BAA0B,CAAC;AAAA,IAC/D,gBAAgB,aAAa,KAAK,cAAc;AAAA,IAChD,wBAAwB,QAAQ,KAAK,0BAA0B,KAAK;AAAA,IACpE,iBAAiBA,cAAa,KAAK,eAAe;AAAA,IAClD,qBAAqBA,cAAa,KAAK,mBAAmB;AAAA,IAC1D,qBAAqB,aAAa,KAAK,mBAAmB;AAAA,IAC1D,wBAAwB,aAAa,KAAK,sBAAsB;AAAA,IAChE,kBAAkB,aAAa,KAAK,YAAY;AAAA,IAChD,kBAAkB,aAAa,KAAK,YAAY;AAAA,IAChD,gBAAgB,aAAa,KAAK,UAAU;AAAA,IAC5C,gBAAgB,aAAa,KAAK,UAAU;AAAA,IAC5C;AAAA,IACA,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEO,SAAS,sBAAsB,MAA+C;AACnF,QAAM,WAAW,SAAS,KAAK,cAAc;AAC7C,QAAM,sBAAsB,SAAS,KAAK,mBAAmB;AAC7D,QAAM,8BAA8B,SAAS,KAAK,2BAA2B;AAC7E,QAAM,gBAAgB,SAAS,KAAK,aAAa,IAAI,yBAAyB,KAAK,aAAa,IAAI;AACpG,SAAO;AAAA,IACL,YAAY,OAAO,KAAK,cAAc,KAAK,sBAAsB,EAAE;AAAA,IACnE,cACE;AAAA,MACE,oBAAoB;AAAA,MACpB,4BAA4B;AAAA,MAC5B,SAAS;AAAA,MACT,SAAS;AAAA,IACX,KAAK;AAAA,IACP,cAAc,UAAU,KAAK,WAAW,SAAS,YAAY,KAAK;AAAA,IAClE,mBAAmB,OAAO,KAAK,oBAAoB,CAAC;AAAA,IACpD,UAAU,UAAU,KAAK,cAAc,KAAK,kBAAkB,MAAM,KAAK;AAAA,IACzE,SAAS,OAAO,KAAK,WAAW,SAAS;AAAA,IACzC,SAAS,OAAO,KAAK,WAAW,SAAS;AAAA,IACzC,SAAS,OAAO,KAAK,WAAW,cAAc;AAAA,IAC9C,QAAQ,OAAO,KAAK,UAAU,QAAQ;AAAA,IACtC,aAAa,OAAO,KAAK,eAAe,CAAC;AAAA,IACzC,qBAAqB,aAAa,KAAK,eAAe;AAAA,IACtD,qBAAqB,aAAa,KAAK,eAAe;AAAA,IACtD,iBAAiB,aAAa,KAAK,WAAW;AAAA,IAC9C,kBAAkB,QAAQ,SAAS,gBAAgB,KAAK,QAAQ,SAAS,qBAAqB;AAAA,IAC9F,yBAAyB,aAAa,SAAS,yBAAyB;AAAA,IACxE,oBAAoBA,cAAa,SAAS,kBAAkB;AAAA,IAC5D,iBAAiB,aAAa,KAAK,eAAe;AAAA,IAClD,kBAAkB,aAAa,KAAK,gBAAgB;AAAA,IACpD;AAAA,IACA;AAAA,IACA,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEO,SAAS,6BACd,OAAgC,CAAC,GACjC,UAA4E,CAAC,GACvD;AACtB,QAAM,UAAU,oBAAoB,QAAQ,OAAO,IAC/C,QAAQ,UACR,SAAS,QAAQ,OAAO,IACtB,yBAAyB,QAAQ,OAAO,IACxC,QAAQ,YAAY,SAAS,KAAK,OAAO,IAAI,yBAAyB,KAAK,OAAO,IAAI;AAC5F,QAAM,UAAU,SAAS,WAAW,CAAC;AACrC,QAAM,0BAA0BA,cAAa,KAAK,kBAAkB,KAC/DA,cAAa,QAAQ,kBAAkB,KACvCA,cAAa,QAAQ,YAAY;AACtC,QAAM,qBAAqBA,cAAa,QAAQ,kBAAkB,KAAKA,cAAa,QAAQ,SAAS;AACrG,QAAM,sBAAsBA,cAAa,QAAQ,mBAAmB,MAC9D,4BAA4B,QAAQ,uBAAuB,OAC3D,0BAA0B,qBAC1B;AACN,SAAO;AAAA,IACL,SAAS,UAAU,KAAK,SAAS,SAAS,OAAO,KAAK;AAAA,IACtD,qBAAqB,UAAU,SAAS,qBAAqB,KAAK,mBAAmB,KAAK;AAAA,IAC1F,cAAc,SAAS,gBAAgB;AAAA,IACvC,kBAAkB,UAAU,QAAQ,kBAAkB,QAAQ,WAAW,UAAU,KAAK;AAAA,IACxF;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,UAAU,QAAQ,cAAc,QAAQ,gBAAgB,KAAK;AAAA,IACvE,QAAQ,UAAU,KAAK,QAAQ,SAAS,SAAS,KAAK;AAAA,IACtD,YAAY,SAAS,cAAc;AAAA,IACnC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,kBAAkB,SAAS,oBAAoB;AAAA,IAC/C,kBAAkB,SAAS,oBAAoB;AAAA,IAC/C;AAAA,IACA,UAAU,SAAS,KAAK,QAAQ,IAAI,EAAE,GAAG,KAAK,SAAS,IAAI;AAAA,IAC3D,cAAc,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,KAAK,aAAa,IAAI;AAAA,IACvE,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEO,SAAS,2BAA2B,MAAmD;AAC5F,SAAO;AAAA,IACL,eAAe,OAAO,KAAK,cAAc,KAAK,iBAAiB,EAAE;AAAA,IACjE,aAAa,OAAO,KAAK,aAAa,KAAK,eAAe,EAAE;AAAA,IAC5D,MAAM,OAAO,KAAK,QAAQ,CAAC;AAAA,IAC3B,gBAAgB,aAAa,KAAK,oBAAoB,KAAK,cAAc;AAAA,IACzE,OAAO,UAAU,KAAK,UAAU,KAAK,KAAK,KAAK;AAAA,IAC/C,qBAAqB,OAAO,KAAK,gBAAgB,KAAK,uBAAuB,CAAC;AAAA,IAC9E,qBAAqB,OAAO,KAAK,uBAAuB,KAAK,uBAAuB,CAAC;AAAA,IACrF,wBAAwBA,cAAa,KAAK,iBAAiB;AAAA,IAC3D,cAAc,OAAO,KAAK,gBAAgB,CAAC;AAAA,IAC3C,WAAW,OAAO,KAAK,aAAa,CAAC;AAAA,IACrC,cAAc,UAAU,KAAK,WAAW,KAAK,YAAY,KAAK;AAAA,IAC9D,kBAAkB,OAAO,KAAK,oBAAoB,CAAC;AAAA,IACnD,kBAAkB,QAAQ,KAAK,oBAAoB,KAAK;AAAA,IACxD,mBAAmB,aAAa,KAAK,iBAAiB;AAAA,IACtD,wBAAwBA,cAAa,KAAK,sBAAsB;AAAA,IAChE,6BAA6B,SAAS,KAAK,2BAA2B,IAAI,EAAE,GAAG,KAAK,4BAA4B,IAAI;AAAA,IACpH,0BAA0B,SAAS,KAAK,wBAAwB,IAAI,EAAE,GAAG,KAAK,yBAAyB,IAAI;AAAA,IAC3G,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEO,SAAS,yBAAyB,SAWtB;AACjB,QAAM,WAAoC;AAAA,IACxC,kBAAkB,QAAQ,QAAQ,oBAAoB,KAAK;AAAA,IAC3D,cAAc,QAAQ;AAAA,EACxB;AACA,SAAO;AAAA,IACL,YAAY,QAAQ;AAAA,IACpB,cAAc,QAAQ;AAAA,IACtB,cAAc,QAAQ;AAAA,IACtB,mBAAmB,KAAK,MAAM,QAAQ,iBAAiB;AAAA,IACvD,UAAU,OAAO,QAAQ,QAAQ,EAAE,YAAY;AAAA,IAC/C,SAAS;AAAA,IACT,SAAS,QAAQ,WAAW;AAAA,IAC5B,SAAS,QAAQ,WAAW;AAAA,IAC5B,QAAQ,QAAQ,UAAU;AAAA,IAC1B,aAAa;AAAA,IACb,qBAAqB,QAAQ,uBAAuB;AAAA,IACpD,kBAAkB,QAAQ,QAAQ,oBAAoB,KAAK;AAAA,IAC3D,oBAAoB;AAAA,IACpB;AAAA,IACA,KAAK;AAAA,MACH,YAAY,QAAQ;AAAA,MACpB,WAAW,QAAQ;AAAA,MACnB,cAAc,OAAO,QAAQ,QAAQ,EAAE,YAAY;AAAA,MACnD,kBAAkB,KAAK,MAAM,QAAQ,iBAAiB;AAAA,MACtD,QAAQ,QAAQ,UAAU;AAAA,MAC1B,iBAAiB,QAAQ,uBAAuB;AAAA,MAChD,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,gCAAgC,SASvB;AACvB,QAAM,0BAA0B,KAAK,MAAM,QAAQ,YAAY;AAC/D,QAAM,qBAAqB,KAAK,MAAM,QAAQ,sBAAsB,CAAC;AACrE,QAAM,sBAAsB,QAAQ,uBAAuB,OACvD,0BAA0B,qBAC1B,KAAK,MAAM,QAAQ,mBAAmB;AAC1C,QAAM,UAA6B;AAAA,IACjC,YAAY,OAAO,QAAQ,QAAQ,UAAU;AAAA,IAC7C,kBAAkB,OAAO,QAAQ,QAAQ,UAAU;AAAA,IACnD,SAAS,QAAQ;AAAA,IACjB,qBAAqB,aAAa,QAAQ,mBAAmB;AAAA,IAC7D,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,cAAc,QAAQ,QAAQ;AAAA,IAC9B,WAAW;AAAA,IACX,SAAS,QAAQ,QAAQ;AAAA,IACzB,UAAU;AAAA,IACV,cAAc,KAAK,MAAM,QAAQ,gBAAgB,MAAM;AAAA,IACvD,eAAe;AAAA,IACf,wBAAwB;AAAA,IACxB,gBAAgB,aAAa,QAAQ,mBAAmB,KAAK,QAAQ;AAAA,IACrE,wBAAwB;AAAA,IACxB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,SAAS;AAAA,MACP,oBAAoB;AAAA,MACpB;AAAA,MACA;AAAA,MACA,cAAc,QAAQ,QAAQ;AAAA,MAC9B,cAAc,QAAQ,QAAQ;AAAA,MAC9B,kBAAkB,QAAQ,oBAAoB;AAAA,IAChD;AAAA,IACA,KAAK,CAAC;AAAA,EACR;AACA,SAAO;AAAA,IACL,SAAS,QAAQ;AAAA,IACjB,qBAAqB,aAAa,QAAQ,mBAAmB;AAAA,IAC7D,cAAc,QAAQ;AAAA,IACtB,kBAAkB,QAAQ,oBAAoB;AAAA,IAC9C;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,QAAQ,QAAQ;AAAA,IAC1B,QAAQ;AAAA,IACR,YAAY,QAAQ;AAAA,IACpB,YAAY,UAAU,QAAQ,QAAQ,UAAU;AAAA,IAChD,YAAY;AAAA,IACZ,kBAAkB,QAAQ;AAAA,IAC1B,kBAAkB,QAAQ;AAAA,IAC1B;AAAA,IACA,cAAc,EAAE,OAAO,EAAE,WAAW,MAAM,UAAU,EAAE,EAAE;AAAA,IACxD,KAAK;AAAA,MACH,QAAQ;AAAA,MACR,SAAS,QAAQ;AAAA,MACjB,qBAAqB,QAAQ,uBAAuB;AAAA,MACpD,oBAAoB;AAAA,MACpB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAASA,cAAa,OAA+B;AACnD,MAAI,UAAU,UAAa,UAAU,QAAQ,UAAU,IAAI;AACzD,WAAO;AAAA,EACT;AACA,QAAM,SAAS,OAAO,KAAK;AAC3B,SAAO,OAAO,SAAS,MAAM,IAAI,KAAK,MAAM,MAAM,IAAI;AACxD;AAEA,SAAS,aAAa,QAAkC;AACtD,aAAW,SAAS,QAAQ;AAC1B,UAAM,OAAO,aAAa,KAAK;AAC/B,QAAI,MAAM;AACR,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,oBAAoB,OAA4C;AACvE,SAAO,SAAS,KAAK,KAAK,OAAO,MAAM,eAAe,YAAY,SAAS,MAAM,OAAO;AAC1F;AAxWA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC4CO,SAAS,+BAAwD;AACtE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,YAAY;AAAA,MACV,SAAS;AAAA,QACP,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA,UAAU,CAAC,WAAW,UAAU,QAAQ;AAAA,IACxC,sBAAsB;AAAA,EACxB;AACF;AAueA,SAAS,YAAY,OAAwB;AAC3C,SAAO,OAAO,SAAS,EAAE,EAAE,KAAK;AAClC;AAEA,SAAS,WAAW,OAA0B;AAC5C,SAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,IAAI,CAAC,SAAS,YAAY,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC;AAC5G;AAEA,SAAS,YAAY,OAAyC;AAC5D,SAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAC7D,gBAAgB,KAAgC,IAChD,CAAC;AACP;AAEA,SAAS,qBAAqB,eAA+B;AAC3D,QAAM,UAAU,YAAY,aAAa,EAAE,YAAY;AACvD,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,CAAC,UAAU,QAAQ,SAAS,KAAK,CAAC,GAAG;AAC1C,WAAO;AAAA,EACT;AACA,MAAI,CAAC,WAAW,WAAW,UAAU,QAAQ,QAAQ,EAAE,KAAK,CAAC,UAAU,QAAQ,SAAS,KAAK,CAAC,GAAG;AAC/F,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,kBAAkC;AACzD,SAAO,qBAAqB,YAAY,qBAAqB,YAAY,eAAe;AAC1F;AAEA,SAAS,eAAe,MAAsB;AAC5C,QAAM,aAAa,YAAY,IAAI,EAAE,YAAY;AACjD,MAAI,eAAe,mBAAmB;AACpC,WAAO;AAAA,EACT;AACA,MAAI,CAAC,SAAS,wBAAwB,sBAAsB,yBAAyB,0BAA0B,EAAE,SAAS,UAAU,GAAG;AACrI,WAAO;AAAA,EACT;AACA,MAAI,WAAW,SAAS,QAAQ,KAAK,WAAW,SAAS,UAAU,KAAK,WAAW,SAAS,UAAU,GAAG;AACvG,WAAO;AAAA,EACT;AACA,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,UAAU,GAAG;AACtB,WAAO;AAAA,EACT;AACA,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,UAAU,GAAG;AACtB,WAAO;AAAA,EACT;AACA,MAAI,WAAW,WAAW,UAAU,GAAG;AACrC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,sBAAsB;AACvC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,kBAAkB,MAAc,WAA4C;AACnF,QAAM,QAAQ,KAAK,WAAW,KAAK,GAAG;AACtC,MAAI,cAAc,OAAO;AACvB,WAAO,EAAE,MAAM,WAAW,aAAa,uBAAuB,KAAK,IAAI;AAAA,EACzE;AACA,MAAI,cAAc,QAAQ;AACxB,WAAO,EAAE,MAAM,WAAW,aAAa,uBAAuB,KAAK,IAAI;AAAA,EACzE;AACA,MAAI,cAAc,QAAQ;AACxB,WAAO,EAAE,MAAM,UAAU,aAAa,uBAAuB,KAAK,KAAK,SAAS,CAAC,EAAE;AAAA,EACrF;AACA,MAAI,cAAc,YAAY;AAC5B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,aAAa,uBAAuB,KAAK;AAAA,MACzC,SAAS,CAAC;AAAA,MACV,sBAAsB,EAAE,MAAM,UAAU;AAAA,IAC1C;AAAA,EACF;AACA,MAAI,cAAc,YAAY;AAC5B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,aAAa,uBAAuB,KAAK;AAAA,MACzC,OAAO,EAAE,MAAM,SAAS;AAAA,MACxB,SAAS,CAAC;AAAA,IACZ;AAAA,EACF;AACA,SAAO,EAAE,MAAM,UAAU,aAAa,uBAAuB,KAAK,IAAI;AACxE;AAEA,SAAS,iBACP,UACA,gBACA,iBACA,iBACA,aACyB;AACzB,QAAM,aAAsC;AAAA,IAC1C,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,MACb,GAAI,WAAW,EAAE,SAAS,SAAS,IAAI,CAAC;AAAA,IAC1C;AAAA,EACF;AACA,aAAW,QAAQ,gBAAgB;AACjC,eAAW,IAAI,IAAI,kBAAkB,MAAM,YAAY,IAAI,KAAK,eAAe,IAAI,CAAC;AAAA,EACtF;AACA,MAAI,qBAAqB,gBAAgB,OAAO,CAAC,SAAS,QAAQ,cAAc,SAAS,UAAU;AACnG,MAAI,mBAAmB,mBAAmB,WAAW,GAAG;AACtD,UAAM,aAAa,eAAe,KAAK,CAAC,SAAS,QAAQ,UAAU;AACnE,QAAI,YAAY;AACd,2BAAqB,CAAC,UAAU;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA,UAAU;AAAA,IACV,sBAAsB;AAAA,EACxB;AACF;AAEA,SAAS,kBAAkB,eAA+B;AACxD,QAAM,aAAa,YAAY,aAAa;AAC5C,MAAI,WAAW,SAAS,MAAM,GAAG;AAC/B,WAAO,QAAQ,UAAU;AAAA,EAC3B;AACA,MAAI,WAAW,SAAS,OAAO,GAAG;AAChC,WAAO,QAAQ,UAAU;AAAA,EAC3B;AACA,SAAO,WAAW,UAAU;AAC9B;AAEO,SAAS,iCAAiC,eAA+B;AAC9E,SAAO,MAAM,YAAY,aAAa,EAAE,WAAW,KAAK,GAAG,EAAE,WAAW,KAAK,GAAG,CAAC;AACnF;AAEO,SAAS,yBAAyB,UAA+C;AACtF,QAAM,kBAAkB,YAAY,QAAQ,KAAK;AACjD,SAAO,OAAO,KAAK,yBAAyB,EACzC,KAAK,EACL,IAAI,CAAC,kBAAkB,uBAAuB,EAAE,MAAM,cAAc,GAAG,EAAE,UAAU,iBAAiB,QAAQ,WAAW,CAAC,CAAC;AAC9H;AAEO,SAAS,uBACd,SACA,UAAyD,CAAC,GACvC;AACnB,QAAM,MAAM,EAAE,GAAG,QAAQ;AACzB,QAAM,gBAAgB,YAAY,IAAI,iBAAiB,IAAI,IAAI;AAC/D,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AACA,QAAM,WAAW,0BAA0B,aAAa,KAAK,CAAC;AAC9D,QAAM,UAAU,YAAY,IAAI,OAAO,KAAK,YAAY,SAAS,OAAO,KAAK,kBAAkB,aAAa;AAC5G,QAAM,iBAAiB,YAAY,IAAI,kBAAkB,IAAI,MAAM,KAAK,YAAY,SAAS,cAAc;AAC3G,QAAM,iBAAiB,WAAW,IAAI,cAAc,EAAE,SAAS,IAAI,WAAW,IAAI,cAAc,IAAI,WAAW,SAAS,cAAc;AACtI,QAAM,kBAAkB,WAAW,IAAI,eAAe,EAAE,SAAS,IAAI,WAAW,IAAI,eAAe,IAAI,WAAW,SAAS,eAAe;AAC1I,QAAM,kBAAkB,QAAQ,IAAI,mBAAmB,SAAS,eAAe;AAC/E,QAAM,qBAAqB,OAAO,KAAK,YAAY,IAAI,WAAW,CAAC,EAAE,SAAS,IAAI,YAAY,IAAI,WAAW,IAAI,YAAY,SAAS,WAAW;AACjJ,QAAM,cAAsC,CAAC;AAC7C,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,kBAAkB,GAAG;AAC7D,UAAM,gBAAgB,OAAO,GAAG;AAChC,UAAM,kBAAkB,YAAY,KAAK;AACzC,QAAI,cAAc,SAAS,KAAK,gBAAgB,SAAS,GAAG;AAC1D,kBAAY,aAAa,IAAI;AAAA,IAC/B;AAAA,EACF;AACA,QAAM,kBAAkB,YAAY,QAAQ,YAAY,IAAI,QAAQ,KAAK;AACzE,QAAM,mBAAmB,YAAY,IAAI,gBAAgB,KAAK,YAAY,SAAS,gBAAgB,KAAK,qBAAqB,aAAa;AAC1I,QAAM,gBAAgB,YAAY,IAAI,aAAa,KAAK,YAAY,SAAS,aAAa,KAAK,gBAAgB,gBAAgB;AAC/H,QAAM,eAAe,OAAO,KAAK,YAAY,IAAI,YAAY,CAAC,EAAE,SAAS,IACrE,YAAY,IAAI,YAAY,IAC5B,OAAO,KAAK,YAAY,SAAS,YAAY,CAAC,EAAE,SAAS,IACvD,YAAY,SAAS,YAAY,IACjC,iBAAiB,iBAAiB,gBAAgB,iBAAiB,iBAAiB,WAAW;AACrG,MAAI,aAAa,cAAc,OAAO,aAAa,eAAe,YAAY,CAAC,MAAM,QAAQ,aAAa,UAAU,GAAG;AACrH,UAAM,aAAa,aAAa;AAChC,UAAM,cAAc,WAAW;AAC/B,QAAI,mBAAmB,eAAe,OAAO,gBAAgB,YAAY,CAAC,MAAM,QAAQ,WAAW,GAAG;AACpG,MAAC,YAAwC,YAAY;AAAA,IACvD;AAAA,EACF;AACA,QAAM,gBAAgB,OAAO,KAAK,YAAY,IAAI,aAAa,CAAC,EAAE,SAAS,IACvE,YAAY,IAAI,aAAa,IAC7B,OAAO,KAAK,YAAY,SAAS,aAAa,CAAC,EAAE,SAAS,IACxD,YAAY,SAAS,aAAa,IAClC,6BAA6B;AACnC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,YAAY,IAAI,SAAS,KAAK,YAAY,SAAS,SAAS,KAAK;AAAA,IAC5E;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,QAAQ,QAAQ,UAAU;AAAA,IAC1B;AAAA,EACF;AACF;AAlxBA,IAAa,4BAkEP;AAlEN;AAAA;AAAA;AAAO,IAAM,6BAA6B;AAkE1C,IAAM,4BAAqE;AAAA,MACzE,qBAAqB;AAAA,QACnB,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,gBAAgB,CAAC;AAAA,QACjB,iBAAiB,CAAC;AAAA,QAClB,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,YAAY;AAAA,YACV,UAAU;AAAA,cACR,MAAM;AAAA,cACN,aAAa;AAAA,YACf;AAAA,UACF;AAAA,UACA,UAAU,CAAC;AAAA,UACX,sBAAsB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,wBAAwB;AAAA,QACtB,SAAS;AAAA,QACT,gBACE;AAAA,QACF,WAAW;AAAA,QACX,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,0BAA0B,mBAAmB,aAAa;AAAA,QAC9G,iBAAiB,CAAC,OAAO;AAAA,QACzB,iBAAiB;AAAA,QACjB,aAAa;AAAA,UACX,MAAM;AAAA,UACN,OAAO;AAAA,UACP,gBAAgB;AAAA,UAChB,wBAAwB;AAAA,UACxB,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,QACA,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,YAAY;AAAA,YACV,UAAU;AAAA,cACR,MAAM;AAAA,cACN,aAAa;AAAA,YACf;AAAA,YACA,MAAM;AAAA,cACJ,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS;AAAA,YACX;AAAA,YACA,OAAO;AAAA,cACL,MAAM;AAAA,cACN,aAAa;AAAA,cACb,YAAY;AAAA,gBACV,cAAc;AAAA,kBACZ,MAAM;AAAA,kBACN,aAAa;AAAA,kBACb,SAAS;AAAA,gBACX;AAAA,cACF;AAAA,cACA,UAAU,CAAC,cAAc;AAAA,cACzB,sBAAsB;AAAA,YACxB;AAAA,YACA,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS,CAAC;AAAA,YACZ;AAAA,YACA,wBAAwB;AAAA,cACtB,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS,CAAC;AAAA,YACZ;AAAA,YACA,iBAAiB;AAAA,cACf,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS,EAAE,qBAAqB,IAAI;AAAA,YACtC;AAAA,YACA,aAAa;AAAA,cACX,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS,CAAC;AAAA,YACZ;AAAA,UACF;AAAA,UACA,UAAU,CAAC,OAAO;AAAA,UAClB,sBAAsB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,6BAA6B;AAAA,QAC3B,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,gBAAgB,CAAC;AAAA,QACjB,iBAAiB,CAAC;AAAA,QAClB,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,YAAY;AAAA,YACV,UAAU;AAAA,cACR,MAAM;AAAA,cACN,aAAa;AAAA,YACf;AAAA,UACF;AAAA,UACA,UAAU,CAAC;AAAA,UACX,sBAAsB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,gCAAgC;AAAA,QAC9B,SAAS;AAAA,QACT,gBACE;AAAA,QACF,WAAW;AAAA,QACX,gBAAgB;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,iBAAiB,CAAC,oBAAoB;AAAA,QACtC,iBAAiB;AAAA,QACjB,aAAa;AAAA,UACX,oBAAoB;AAAA,UACpB,6BAA6B;AAAA,UAC7B,SAAS;AAAA,UACT,sBAAsB;AAAA,UACtB,iBAAiB;AAAA,UACjB,oBAAoB;AAAA,UACpB,mBAAmB;AAAA,UACnB,oBAAoB;AAAA,UACpB,mBAAmB;AAAA,UACnB,aAAa;AAAA,QACf;AAAA,QACA,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,YAAY;AAAA,YACV,UAAU;AAAA,cACR,MAAM;AAAA,cACN,aAAa;AAAA,YACf;AAAA,YACA,oBAAoB;AAAA,cAClB,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS,EAAE,KAAK,IAAK;AAAA,cACrB,sBAAsB,EAAE,MAAM,UAAU;AAAA,YAC1C;AAAA,YACA,6BAA6B;AAAA,cAC3B,MAAM;AAAA,cACN,aAAa;AAAA,cACb,OAAO,EAAE,MAAM,SAAS;AAAA,cACxB,SAAS,CAAC,gBAAgB;AAAA,YAC5B;AAAA,YACA,SAAS;AAAA,cACP,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS,CAAC;AAAA,YACZ;AAAA,YACA,sBAAsB;AAAA,cACpB,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS;AAAA,YACX;AAAA,YACA,iBAAiB;AAAA,cACf,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS;AAAA,YACX;AAAA,YACA,oBAAoB;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,SAAS;AAAA,cACxB,SAAS,CAAC;AAAA,YACZ;AAAA,YACA,mBAAmB;AAAA,cACjB,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,SAAS;AAAA,cACxB,SAAS,CAAC;AAAA,YACZ;AAAA,YACA,oBAAoB;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,SAAS;AAAA,cACxB,SAAS,CAAC;AAAA,YACZ;AAAA,YACA,mBAAmB;AAAA,cACjB,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,SAAS;AAAA,cACxB,SAAS,CAAC;AAAA,YACZ;AAAA,YACA,aAAa;AAAA,cACX,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS,CAAC;AAAA,YACZ;AAAA,UACF;AAAA,UACA,UAAU,CAAC,oBAAoB;AAAA,UAC/B,sBAAsB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,oBAAoB;AAAA,QAClB,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,gBAAgB,CAAC,UAAU;AAAA,QAC3B,iBAAiB,CAAC;AAAA,QAClB,iBAAiB;AAAA,QACjB,aAAa,EAAE,UAAU,SAAS;AAAA,QAClC,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,YAAY;AAAA,YACV,UAAU;AAAA,cACR,MAAM;AAAA,cACN,aAAa;AAAA,YACf;AAAA,YACA,UAAU;AAAA,cACR,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS;AAAA,YACX;AAAA,UACF;AAAA,UACA,UAAU,CAAC;AAAA,UACX,sBAAsB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,uBAAuB;AAAA,QACrB,SAAS;AAAA,QACT,gBACE;AAAA,QACF,WAAW;AAAA,QACX,gBAAgB;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,iBAAiB,CAAC,oBAAoB;AAAA,QACtC,iBAAiB;AAAA,QACjB,aAAa;AAAA,UACX,UAAU;AAAA,UACV,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,oBAAoB;AAAA,UACpB,uBAAuB;AAAA,UACvB,0BAA0B;AAAA,UAC1B,QAAQ;AAAA,UACR,UAAU;AAAA,QACZ;AAAA,QACA,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,YAAY;AAAA,YACV,UAAU;AAAA,cACR,MAAM;AAAA,cACN,aAAa;AAAA,YACf;AAAA,YACA,UAAU;AAAA,cACR,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS;AAAA,YACX;AAAA,YACA,cAAc;AAAA,cACZ,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS;AAAA,YACX;AAAA,YACA,YAAY;AAAA,cACV,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS;AAAA,YACX;AAAA,YACA,oBAAoB;AAAA,cAClB,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS;AAAA,YACX;AAAA,YACA,uBAAuB;AAAA,cACrB,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS;AAAA,YACX;AAAA,YACA,0BAA0B;AAAA,cACxB,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS;AAAA,YACX;AAAA,YACA,QAAQ;AAAA,cACN,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS,CAAC;AAAA,YACZ;AAAA,YACA,UAAU;AAAA,cACR,MAAM;AAAA,cACN,aAAa;AAAA,cACb,SAAS,EAAE,QAAQ,eAAe;AAAA,YACpC;AAAA,UACF;AAAA,UACA,UAAU,CAAC,oBAAoB;AAAA,UAC/B,sBAAsB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,yBAAyB;AAAA,QACvB,SAAS;AAAA,QACT,gBACE;AAAA,QACF,WAAW;AAAA,QACX,gBAAgB;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,iBAAiB,CAAC;AAAA,QAClB,iBAAiB;AAAA,QACjB,aAAa;AAAA,UACX,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,QACA,kBAAkB;AAAA,QAClB,eAAe;AAAA,MACjB;AAAA,MACA,wBAAwB;AAAA,QACtB,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,gBAAgB,CAAC,aAAa;AAAA,QAC9B,iBAAiB,CAAC,aAAa;AAAA,QAC/B,iBAAiB;AAAA,QACjB,aAAa,EAAE,aAAa,SAAS;AAAA,QACrC,kBAAkB;AAAA,QAClB,eAAe;AAAA,MACjB;AAAA,MACA,2BAA2B;AAAA,QACzB,SAAS;AAAA,QACT,gBACE;AAAA,QACF,WAAW;AAAA,QACX,gBAAgB;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,iBAAiB,CAAC,gBAAgB;AAAA,QAClC,iBAAiB;AAAA,QACjB,aAAa;AAAA,UACX,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,UAAU;AAAA,UACV,cAAc;AAAA,UACd,sBAAsB;AAAA,UACtB,mBAAmB;AAAA,UACnB,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,WAAW;AAAA,UACX,iBAAiB;AAAA,UACjB,mBAAmB;AAAA,UACnB,YAAY;AAAA,QACd;AAAA,QACA,kBAAkB;AAAA,QAClB,eAAe;AAAA,MACjB;AAAA,MACA,4BAA4B;AAAA,QAC1B,SAAS;AAAA,QACT,gBACE;AAAA,QACF,WAAW;AAAA,QACX,gBAAgB;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,iBAAiB,CAAC,aAAa;AAAA,QAC/B,iBAAiB;AAAA,QACjB,aAAa;AAAA,UACX,aAAa;AAAA,UACb,eAAe;AAAA,UACf,sBAAsB;AAAA,UACtB,mBAAmB;AAAA,UACnB,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,WAAW;AAAA,UACX,iBAAiB;AAAA,UACjB,mBAAmB;AAAA,UACnB,YAAY;AAAA,QACd;AAAA,QACA,kBAAkB;AAAA,QAClB,eAAe;AAAA,MACjB;AAAA,MACA,2BAA2B;AAAA,QACzB,SAAS;AAAA,QACT,gBACE;AAAA,QACF,WAAW;AAAA,QACX,gBAAgB;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,iBAAiB,CAAC,aAAa;AAAA,QAC/B,iBAAiB;AAAA,QACjB,aAAa;AAAA,UACX,aAAa;AAAA,UACb,SAAS;AAAA,UACT,mBAAmB;AAAA,UACnB,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,iBAAiB;AAAA,UACjB,mBAAmB;AAAA,QACrB;AAAA,QACA,kBAAkB;AAAA,QAClB,eAAe;AAAA,MACjB;AAAA,MACA,2BAA2B;AAAA,QACzB,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,gBAAgB,CAAC,eAAe,SAAS;AAAA,QACzC,iBAAiB,CAAC,aAAa;AAAA,QAC/B,iBAAiB;AAAA,QACjB,aAAa;AAAA,UACX,aAAa;AAAA,UACb,SAAS;AAAA,QACX;AAAA,QACA,kBAAkB;AAAA,QAClB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA;AAAA;;;AC4JA,SAAS,6BAA6B,SAA2D;AAC/F,QAAM,eAAe,SAAS,QAAQ,OAAO,IAAI,QAAQ,UAAU;AACnE,QAAM,SAA4B,CAAC;AACnC,QAAM,oBAAuC,CAAC;AAC9C,QAAM,sBAAyC,CAAC;AAEhD,aAAW,CAAC,YAAY,QAAQ,KAAK;AAAA,IACnC,CAAC,UAAU,OAAO;AAAA,IAClB,CAAC,YAAY,SAAS;AAAA,EACxB,GAAY;AACV,UAAM,SAAS,QAAQ,UAAU;AACjC,QAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAC1B;AAAA,IACF;AACA,eAAW,QAAQ,QAAQ;AACzB,UAAI,CAAC,SAAS,IAAI,GAAG;AACnB;AAAA,MACF;AACA,YAAM,YAA6B;AAAA,QACjC,MAAM,OAAO,KAAK,QAAQ,WAAW,YAAY,CAAC;AAAA,QAClD,SAAS,OAAO,KAAK,WAAW,EAAE;AAAA,QAClC,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,QACnC;AAAA,MACF;AACA,aAAO,KAAK,SAAS;AACrB,UAAI,eAAe,UAAU;AAC3B,0BAAkB,KAAK,SAAS;AAAA,MAClC,OAAO;AACL,4BAAoB,KAAK,SAAS;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,gBAAgB,aAAa;AACnC,MAAI,MAAM,QAAQ,aAAa,GAAG;AAChC,eAAW,QAAQ,eAAe;AAChC,UAAI,CAAC,SAAS,IAAI,GAAG;AACnB;AAAA,MACF;AACA,aAAO,KAAK;AAAA,QACV,MAAM,OAAO,KAAK,YAAY,KAAK,QAAQ,eAAe;AAAA,QAC1D,SAAS,OAAO,KAAK,WAAW,EAAE;AAAA,QAClC,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,QACnC,UAAW,OAAO,KAAK,YAAY,SAAS;AAAA,QAC5C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,cAAc,MAAM,QAAQ,aAAa,uBAAuB,IAClE,aAAa,wBAAwB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAC9F,CAAC;AACL,QAAM,kBAAkB,OAAO,aAAa,6BAA6B,aAAa,oBAAoB,CAAC;AAC3G,QAAM,eAAe,OAAO,aAAa,iBAAiB,aAAa,SAAS,CAAC;AACjF,QAAM,gBAAgB,OAAO,QAAQ,OAAO,YAAY,QAAQ,KAAK;AACrE,QAAM,cAAc,OAAO,aAAa,gBAAgB,YACpD,aAAa,cACb,iBAAiB,OAAO,aAAa,SAAS,GAAG,KAAK,EAAE,GAAG,MAAM,GAAG,KAAK;AAE7E,SAAO;AAAA,IACL,eAAe,OAAO,SAAS,YAAY,IAAI,eAAe;AAAA,IAC9D,OAAO,OAAO,aAAa,SAAS,GAAG;AAAA,IACvC;AAAA,IACA,2BAA2B,OAAO,SAAS,eAAe,IAAI,kBAAkB;AAAA,IAChF,yBAAyB;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,SAAS,SAAiB,MAAc,QAA2C;AAC1F,QAAM,MAAM,IAAI,IAAI,GAAG,OAAO,GAAG,IAAI,EAAE;AACvC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,CAAC,CAAC,GAAG;AACvD,QAAI,UAAU,UAAa,UAAU,QAAQ,UAAU,IAAI;AACzD;AAAA,IACF;AACA,QAAI,aAAa,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA,EACzC;AACA,SAAO,IAAI,SAAS;AACtB;AAEA,SAAS,aAAa,MAAiD;AACrE,SAAO;AAAA,IACL,YAAY,OAAO,KAAK,cAAc,KAAK,MAAM,EAAE;AAAA,IACnD,gBAAgB,OAAO,KAAK,kBAAkB,EAAE;AAAA,IAChD,MAAM,OAAO,KAAK,QAAQ,EAAE;AAAA,IAC5B,QAAQ,OAAO,KAAK,UAAU,EAAE;AAAA,IAChC,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,gBAAgB,aAAa,KAAK,cAAc;AAAA,IAChD,kBAAkB,aAAa,KAAK,gBAAgB;AAAA,IACpD,eAAe,aAAa,KAAK,aAAa;AAAA,IAC9C,mBAAmB,QAAQ,KAAK,qBAAqB,KAAK;AAAA,IAC1D,aAAa,aAAa,KAAK,WAAW;AAAA,IAC1C,mBAAmB,OAAO,KAAK,qBAAqB,CAAC;AAAA,IACrD,UAAU,OAAO,KAAK,YAAY,KAAK;AAAA,IACvC,mBAAmB,aAAa,KAAK,iBAAiB;AAAA,IACtD,aAAa,aAAa,KAAK,WAAW;AAAA,IAC1C,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,iBAAiB,aAAa,KAAK,eAAe;AAAA,IAClD,qBAAqB,aAAa,KAAK,mBAAmB;AAAA,IAC1D,qBAAqB,aAAa,KAAK,mBAAmB;AAAA,IAC1D,mBAAmB,aAAa,KAAK,iBAAiB;AAAA,IACtD,eAAe,aAAa,KAAK,aAAa;AAAA,IAC9C,aAAa,aAAa,KAAK,WAAW;AAAA,IAC1C,qBAAqB,MAAM,QAAQ,KAAK,mBAAmB,IACvD,KAAK,oBAAoB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAClF,CAAC;AAAA,IACL,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,kBAAkB,MAA6C;AACtE,SAAO;AAAA,IACL,uBAAuB,OAAO,KAAK,yBAAyB,EAAE;AAAA,IAC9D,gBAAgB,aAAa,KAAK,cAAc;AAAA,IAChD,OAAO,aAAa,KAAK,KAAK;AAAA,IAC9B,UAAU,OAAO,KAAK,YAAY,CAAC;AAAA,IACnC,QAAQ,aAAa,KAAK,MAAM;AAAA,IAChC,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,SAAS,aAAa,KAAK,OAAO;AAAA,EACpC;AACF;AAEA,SAAS,+BAA+B,MAAgE;AACtG,SAAO;AAAA,IACL,sBAAsB,OAAO,KAAK,wBAAwB,EAAE;AAAA,IAC5D,cAAc,OAAO,KAAK,gBAAgB,EAAE;AAAA,IAC5C,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,QAAQ,MAAM,QAAQ,KAAK,MAAM,IAC7B,KAAK,OAAO,OAAO,CAAC,MAAmB,OAAO,MAAM,QAAQ,IAC5D,CAAC;AAAA,IACL,cAAc,aAAa,KAAK,YAAY;AAAA,IAC5C,mBAAmB,aAAa,KAAK,iBAAiB;AAAA,IACtD,kBAAkB,OAAO,KAAK,qBAAqB,YAAY,KAAK,mBAAmB;AAAA,IACvF,YAAY,aAAa,KAAK,UAAU;AAAA,EAC1C;AACF;AAEA,SAAS,YAAY,MAAoD;AACvE,QAAM,aAAa,MAAM,QAAQ,KAAK,OAAO,IAAI,KAAK,UAAU,CAAC;AACjE,SAAO;AAAA,IACL,WAAW,OAAO,KAAK,aAAa,KAAK,MAAM,EAAE;AAAA,IACjD,YAAY,OAAO,KAAK,cAAc,EAAE;AAAA,IACxC,cAAc,OAAO,KAAK,gBAAgB,EAAE;AAAA,IAC5C,QAAQ,OAAO,KAAK,UAAU,EAAE;AAAA,IAChC,aAAa,OAAO,KAAK,eAAe,MAAM;AAAA,IAC9C,mBAAmB,aAAa,KAAK,iBAAiB;AAAA,IACtD,UAAU,OAAO,KAAK,YAAY,KAAK;AAAA,IACvC,aAAa,aAAa,KAAK,WAAW;AAAA,IAC1C,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,cAAc,aAAa,KAAK,YAAY;AAAA,IAC5C,SAAS,WACN,OAAO,CAAC,MAAoC,SAAS,CAAC,CAAC,EACvD,IAAI,iBAAiB;AAAA,IACxB,cAAc,aAAa,KAAK,YAAY;AAAA,IAC5C,cAAc,aAAa,KAAK,YAAY;AAAA,IAC5C,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,yBAAyB,MAAoD;AACpF,SAAO;AAAA,IACL,eAAe,OAAO,KAAK,iBAAiB,KAAK,SAAS,CAAC;AAAA,IAC3D,OAAO,OAAO,KAAK,SAAS,GAAG;AAAA,IAC/B,QAAQ,MAAM,QAAQ,KAAK,MAAM,IAC7B,KAAK,OAAO,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,EAAE,IACzG,CAAC;AAAA,IACL,yBAAyB,MAAM,QAAQ,KAAK,uBAAuB,IAC/D,KAAK,wBAAwB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IACtF,CAAC;AAAA,IACL,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,gBAAgB,MAAiD;AACxE,SAAO;AAAA,IACL,gBAAgB,OAAO,KAAK,kBAAkB,KAAK,MAAM,EAAE;AAAA,IAC3D,gBAAgB,aAAa,KAAK,cAAc;AAAA,IAChD,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,WAAW,aAAa,KAAK,SAAS;AAAA,IACtC,aAAa,aAAa,KAAK,WAAW;AAAA,IAC1C,WAAW,aAAa,KAAK,SAAS;AAAA,IACtC,gBAAgB,OAAO,KAAK,kBAAkB,KAAK,SAAS,CAAC;AAAA,IAC7D,SAAS,aAAa,KAAK,OAAO;AAAA,IAClC,gBAAgB,aAAa,KAAK,cAAc;AAAA,IAChD,kBAAkB,aAAa,KAAK,gBAAgB;AAAA,IACpD,eAAe,aAAa,KAAK,aAAa;AAAA,IAC9C,YAAY,OAAO,KAAK,eAAe,WAAW,KAAK,aAAa;AAAA,IACpE,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,aAAa,aAAa,KAAK,eAAe,KAAK,eAAe;AAAA,IAClE,iBAAiB,aAAa,KAAK,mBAAmB,KAAK,WAAW;AAAA,IACtE,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,UAAU,SAAS,KAAK,QAAQ;AAAA,IAChC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,iBAAiB,MAAkD;AAC1E,SAAO;AAAA,IACL,iBAAiB,OAAO,KAAK,mBAAmB,KAAK,MAAM,EAAE;AAAA,IAC7D,uBAAuB,OAAO,KAAK,yBAAyB,EAAE;AAAA,IAC9D,cAAc,OAAO,KAAK,gBAAgB,EAAE;AAAA,IAC5C,eAAe,aAAa,KAAK,aAAa;AAAA,IAC9C,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,WAAW,aAAa,KAAK,SAAS;AAAA,IACtC,SAAS,aAAa,KAAK,OAAO;AAAA,IAClC,UAAU,MAAM,QAAQ,KAAK,QAAQ,IACjC,KAAK,SAAS,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,EAAE,IAC3G,CAAC;AAAA,IACL,UAAU,SAAS,KAAK,QAAQ;AAAA,IAChC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,aAAa,MAAwD;AAC5E,SAAO;AAAA,IACL,YAAY,OAAO,KAAK,cAAc,KAAK,MAAM,EAAE;AAAA,IACnD,iBAAiB,OAAO,KAAK,mBAAmB,EAAE;AAAA,IAClD,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC,gBAAgB,OAAO,KAAK,kBAAkB,EAAE;AAAA,IAChD,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,sBAAsB,MAAuD;AACpF,SAAO;AAAA,IACL,sBAAsB,OAAO,KAAK,wBAAwB,KAAK,MAAM,EAAE;AAAA,IACvE,cAAc,OAAO,KAAK,gBAAgB,EAAE;AAAA,IAC5C,cAAc,OAAO,KAAK,gBAAgB,EAAE;AAAA,IAC5C,cAAc,aAAa,KAAK,YAAY;AAAA,IAC5C,aAAa,aAAa,KAAK,WAAW;AAAA,IAC1C,mBAAmB,aAAa,KAAK,iBAAiB;AAAA,IACtD,QAAQ,MAAM,QAAQ,KAAK,MAAM,IAAI,KAAK,OAAO,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAAI,CAAC;AAAA,IAC/G,UAAU,SAAS,KAAK,QAAQ;AAAA,IAChC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,iBAAiB,MAAkD;AAC1E,SAAO;AAAA,IACL,iBAAiB,OAAO,KAAK,mBAAmB,KAAK,MAAM,EAAE;AAAA,IAC7D,WAAW,OAAO,KAAK,aAAa,EAAE;AAAA,IACtC,SAAS,OAAO,KAAK,WAAW,EAAE;AAAA,IAClC,QAAQ,OAAO,KAAK,UAAU,EAAE;AAAA,IAChC,gBAAgB,aAAa,KAAK,cAAc;AAAA,IAChD,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,aAAa,aAAa,KAAK,WAAW;AAAA,IAC1C,iBAAiB,aAAa,KAAK,eAAe;AAAA,IAClD,UAAU,SAAS,KAAK,QAAQ;AAAA,IAChC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,WAAW,MAA4C;AAC9D,SAAO;AAAA,IACL,UAAU,OAAO,KAAK,YAAY,KAAK,MAAM,EAAE;AAAA,IAC/C,MAAM,OAAO,KAAK,QAAQ,EAAE;AAAA,IAC5B,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,aAAa,aAAa,KAAK,WAAW;AAAA,IAC1C,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,QAAQ,aAAa,KAAK,MAAM;AAAA,IAChC,WAAW,MAAM,QAAQ,KAAK,SAAS,IACnC,KAAK,UAAU,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IACxE,CAAC;AAAA,IACL,YAAY,OAAO,KAAK,eAAe,WAAW,KAAK,aAAa;AAAA,IACpE,aAAa,OAAO,KAAK,gBAAgB,WAAW,KAAK,cAAc;AAAA,IACvE,QAAQ,OAAO,KAAK,WAAW,YAAY,KAAK,SAAS;AAAA,IACzD,OAAO,aAAa,KAAK,KAAK;AAAA,IAC9B,gBAAgB,aAAa,KAAK,cAAc;AAAA,IAChD,cAAc,SAAS,KAAK,YAAY;AAAA,IACxC,UAAU,SAAS,KAAK,QAAQ;AAAA,IAChC,QAAQ,SAAS,KAAK,MAAM;AAAA,IAC5B,MAAM,SAAS,KAAK,IAAI;AAAA,IACxB,YAAY,SAAS,KAAK,UAAU;AAAA,IACpC,OAAO,MAAM,QAAQ,KAAK,KAAK,IAC3B,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,EAAE,IACxG,CAAC;AAAA,IACL,aAAa,aAAa,KAAK,WAAW;AAAA,IAC1C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,kBAAkB,MAA6C;AACtE,QAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,SAAO;AAAA,IACL,YAAY,OAAO,KAAK,cAAc,KAAK,MAAM,EAAE;AAAA,IACnD,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC,mBAAmB,aAAa,KAAK,iBAAiB;AAAA,IACtD,SAAS,OAAO,KAAK,WAAW,CAAC;AAAA,IACjC,QAAQ,QAAQ,KAAK,UAAU,IAAI;AAAA,IACnC,MAAM,OAAO,KAAK,QAAQ,QAAQ;AAAA,IAClC,cAAc,aAAa,KAAK,gBAAgB,MAAM,YAAY;AAAA,IAClE;AAAA,IACA,gBAAgB,SAAS,KAAK,cAAc;AAAA,IAC5C,wBAAwB,SAAS,KAAK,sBAAsB;AAAA,IAC5D,iBAAiB,SAAS,KAAK,eAAe;AAAA,IAC9C,aAAa,SAAS,KAAK,WAAW;AAAA,IACtC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,oBAAoB,MAA+C;AAC1E,QAAM,qBAAqB,OAAO;AAAA,IAChC,OAAO,QAAQ,SAAS,KAAK,kBAAkB,CAAC,EAAE,QAAQ,CAAC,CAAC,UAAU,MAAM,MAAM;AAChF,YAAM,gBAAgB,aAAa,MAAM;AACzC,aAAO,kBAAkB,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,aAAa,CAAC,CAAC;AAAA,IAC7E,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL,oBAAoB,OAAO,KAAK,sBAAsB,KAAK,MAAM,EAAE;AAAA,IACnE,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC,mBAAmB,aAAa,KAAK,iBAAiB;AAAA,IACtD,SAAS,OAAO,KAAK,WAAW,CAAC;AAAA,IACjC,QAAQ,QAAQ,KAAK,UAAU,IAAI;AAAA,IACnC;AAAA,IACA,6BAA6B,MAAM,QAAQ,KAAK,2BAA2B,IACvE,KAAK,4BAA4B,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAC1F,CAAC;AAAA,IACL,SAAS,SAAS,KAAK,OAAO;AAAA,IAC9B,sBAAsB,OAAO,KAAK,wBAAwB,IAAI;AAAA,IAC9D,iBAAiB,QAAQ,KAAK,mBAAmB,IAAI;AAAA,IACrD,2BAA2B,QAAQ,KAAK,6BAA6B,IAAI;AAAA,IACzE,oBAAoB,MAAM,QAAQ,KAAK,kBAAkB,IACrD,KAAK,mBAAmB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IACjF,CAAC;AAAA,IACL,mBAAmB,MAAM,QAAQ,KAAK,iBAAiB,IACnD,KAAK,kBAAkB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAChF,CAAC;AAAA,IACL,oBAAoB,MAAM,QAAQ,KAAK,kBAAkB,IACrD,KAAK,mBAAmB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IACjF,CAAC;AAAA,IACL,mBAAmB,MAAM,QAAQ,KAAK,iBAAiB,IACnD,KAAK,kBAAkB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAChF,CAAC;AAAA,IACL,aAAa,SAAS,KAAK,WAAW;AAAA,IACtC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,kBAAkB,MAA6C;AACtE,QAAM,eAAe,SAAS,KAAK,MAAM;AACzC,QAAM,SAAS,OAAO,KAAK,YAAY,EAAE,SAAS,IAC9C,OAAO;AAAA,IACL,OAAO,QAAQ,YAAY,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACrD,YAAM,eAAe,aAAa,KAAK;AACvC,aAAO,iBAAiB,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,YAAY,CAAC,CAAC;AAAA,IACtE,CAAC;AAAA,EACH,IACA;AAAA,IACE,cAAc,KAAK,MAAM,OAAO,KAAK,sBAAsB,CAAC,CAAC;AAAA,IAC7D,iBAAiB,KAAK,MAAM,OAAO,KAAK,yBAAyB,CAAC,CAAC;AAAA,IACnE,oBAAoB,KAAK,MAAM,OAAO,KAAK,4BAA4B,CAAC,CAAC;AAAA,EAC3E;AACJ,SAAO;AAAA,IACL,WAAW,OAAO,KAAK,aAAa,KAAK,MAAM,EAAE;AAAA,IACjD,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC,mBAAmB,aAAa,KAAK,iBAAiB;AAAA,IACtD,UAAU,OAAO,KAAK,YAAY,KAAK;AAAA,IACvC,cAAc,aAAa,KAAK,YAAY;AAAA,IAC5C,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,oBAAoB,KAAK,MAAM,OAAO,KAAK,sBAAsB,CAAC,CAAC;AAAA,IACnE,aAAa,KAAK,MAAM,OAAO,KAAK,eAAe,CAAC,CAAC;AAAA,IACrD,gBAAgB,KAAK,MAAM,OAAO,KAAK,kBAAkB,CAAC,CAAC;AAAA,IAC3D,uBAAuB,KAAK,MAAM,OAAO,KAAK,yBAAyB,CAAC,CAAC;AAAA,IACzE,0BAA0B,KAAK,MAAM,OAAO,KAAK,4BAA4B,CAAC,CAAC;AAAA,IAC/E;AAAA,IACA,UAAU,SAAS,KAAK,QAAQ;AAAA,IAChC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,gBAAgB,MAAiD;AACxE,SAAO;AAAA,IACL,SAAS,OAAO,KAAK,WAAW,KAAK,MAAM,EAAE;AAAA,IAC7C,eAAe,aAAa,KAAK,iBAAiB,KAAK,iBAAiB,KAAK;AAAA,IAC7E,mBAAmB,aAAa,KAAK,qBAAqB,KAAK,aAAa,KAAK;AAAA,IACjF,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,iBAAiB,KAAK,MAAM,OAAO,KAAK,mBAAmB,CAAC,CAAC;AAAA,IAC7D,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,IACnC,mBAAmB,aAAa,KAAK,iBAAiB,KAAK;AAAA,IAC3D,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,SAAS,KAAK,MAAM,OAAO,KAAK,WAAW,CAAC,CAAC;AAAA,IAC7C,mBAAmB,SAAS,KAAK,iBAAiB;AAAA,IAClD,QAAQ,OAAO,KAAK,UAAU,MAAM,EAAE,KAAK,EAAE,YAAY;AAAA,IACzD,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,eAAe,aAAa,KAAK,aAAa,KAAK;AAAA,IACnD,UAAU,SAAS,KAAK,QAAQ;AAAA,IAChC,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,mBAAmB,MAAoD;AAC9E,SAAO;AAAA,IACL,YAAY,OAAO,KAAK,cAAc,KAAK,MAAM,EAAE;AAAA,IACnD,YAAY,OAAO,KAAK,cAAc,EAAE;AAAA,IACxC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,mBAAmB,aAAa,KAAK,iBAAiB,KAAK;AAAA,IAC3D,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,qBAAqB,aAAa,KAAK,mBAAmB,KAAK;AAAA,IAC/D,oBAAoB,aAAa,KAAK,kBAAkB,KAAK;AAAA,IAC7D,yBAAyB,MAAM,QAAQ,KAAK,uBAAuB,IAC/D,KAAK,wBAAwB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IACtF,CAAC;AAAA,IACL,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,sCAAsC,MAAiE;AAC9G,QAAM,WAAW,SAAS,KAAK,QAAQ;AACvC,QAAM,iBAAyC,CAAC;AAChD,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACnD,UAAM,SAAS,OAAO,UAAU,WAAW,MAAM,KAAK,IAAI,OAAO,SAAS,EAAE,EAAE,KAAK;AACnF,QAAI,OAAO,SAAS,GAAG;AACrB,qBAAe,OAAO,GAAG,CAAC,IAAI;AAAA,IAChC;AAAA,EACF;AACA,SAAO;AAAA,IACL,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC,WAAW,QAAQ,KAAK,aAAa,IAAI;AAAA,IACzC,UAAU;AAAA,IACV,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,gCAAgC,MAAiE;AACxG,SAAO;AAAA,IACL,WAAW,OAAO,KAAK,aAAa,KAAK,uBAAuB,KAAK,MAAM,EAAE;AAAA,IAC7E,uBAAuB,aAAa,KAAK,qBAAqB,KAAK;AAAA,IACnE,eAAe,aAAa,KAAK,aAAa,KAAK;AAAA,IACnD,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,mBAAmB,aAAa,KAAK,iBAAiB,KAAK;AAAA,IAC3D,mBAAmB,aAAa,KAAK,iBAAiB,KAAK;AAAA,IAC3D,yBAAyB,aAAa,KAAK,uBAAuB,KAAK;AAAA,IACvE,qBAAqB,MAAM,QAAQ,KAAK,mBAAmB,IACvD,KAAK,oBAAoB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAClF,CAAC;AAAA,IACL,4BAA4B,MAAM,QAAQ,KAAK,0BAA0B,IACrE,KAAK,2BAA2B,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IACzF,CAAC;AAAA,IACL,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,wBAAwB,QAAQ,KAAK,0BAA0B,KAAK;AAAA,IACpE,kCAAkC,aAAa,KAAK,gCAAgC,KAAK;AAAA,IACzF,cAAc,QAAQ,KAAK,gBAAgB,KAAK;AAAA,IAChD,oBAAoB,SAAS,KAAK,kBAAkB;AAAA,IACpD,eAAe,aAAa,KAAK,aAAa,KAAK;AAAA,IACnD,wBAAwB,QAAQ,KAAK,0BAA0B,IAAI;AAAA,IACnE,4BAA4B,QAAQ,KAAK,8BAA8B,KAAK;AAAA,IAC5E,oBAAoB,aAAa,KAAK,kBAAkB,KAAK;AAAA,IAC7D,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,yBAAyB,OAAO,KAAK,2BAA2B,CAAC;AAAA,IACjE,6BAA6B,aAAa,KAAK,2BAA2B,KAAK;AAAA,IAC/E,eAAe,OAAO,KAAK,iBAAiB,YAAY;AAAA,IACxD,mBAAmB,OAAO,KAAK,qBAAqB,QAAQ;AAAA,IAC5D,qCAAqC,MAAM,QAAQ,KAAK,mCAAmC,IACvF,KAAK,oCAAoC,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAClG,CAAC;AAAA,IACL,gBAAgB,SAAS,KAAK,cAAc;AAAA,IAC5C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,qCACP,MACA,eACA,MACiC;AACjC,QAAM,SAAS,SAAS,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC;AACtD,QAAM,SAAS,OAAO,KAAK,UAAU,WAAW;AAChD,SAAO;AAAA,IACL,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC;AAAA,IACA;AAAA,IACA,mBAAmB,QAAQ,KAAK,qBAAqB,WAAW,mBAAmB;AAAA,IACnF,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,wBAAwB,aAAa,KAAK,0BAA0B,OAAO,sBAAsB,KAAK;AAAA,IACtG,SAAS,OAAO,KAAK,WAAW,EAAE;AAAA,IAClC,QAAQ,SAAS,KAAK,MAAM;AAAA,IAC5B,SAAS,SAAS,OAAO,OAAO;AAAA,IAChC,QAAQ,SAAS,KAAK,MAAM;AAAA,IAC5B,QAAQ,WAAW,cAAc,gCAAgC,MAAM,IAAI;AAAA,IAC3E,UAAU,KAAK,YAAY;AAAA,IAC3B,YAAY,KAAK,cAAc;AAAA,IAC/B,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,4BAA4B,MAA6D;AAChG,SAAO;AAAA,IACL,WAAW,OAAO,KAAK,aAAa,KAAK,MAAM,EAAE;AAAA,IACjD,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC,eAAe,aAAa,KAAK,aAAa,KAAK;AAAA,IACnD,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,QAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,IACrC,MAAM,aAAa,KAAK,IAAI,KAAK;AAAA,IACjC,qBAAqB,SAAS,KAAK,uBAAuB,KAAK,aAAa;AAAA,IAC5E,YAAY,SAAS,KAAK,UAAU;AAAA,IACpC,QAAQ,OAAO,KAAK,UAAU,EAAE;AAAA,IAChC,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,wBAAwB,aAAa,KAAK,sBAAsB,KAAK;AAAA,IACrE,yBAAyB,SAAS,KAAK,uBAAuB;AAAA,IAC9D,eAAe,aAAa,KAAK,aAAa,KAAK;AAAA,IACnD,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,eAAe,aAAa,KAAK,aAAa,KAAK;AAAA,IACnD,gBAAgB,SAAS,KAAK,cAAc;AAAA,IAC5C,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,0BAA0B,MAA2D;AAC5F,SAAO;AAAA,IACL,YAAY,OAAO,KAAK,cAAc,KAAK,MAAM,EAAE;AAAA,IACnD,WAAW,OAAO,KAAK,aAAa,EAAE;AAAA,IACtC,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC,eAAe,aAAa,KAAK,aAAa,KAAK;AAAA,IACnD,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,mBAAmB,MAAM,QAAQ,KAAK,iBAAiB,IACnD,KAAK,kBAAkB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAChF,CAAC;AAAA,IACL,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,QAAQ,OAAO,KAAK,UAAU,EAAE;AAAA,IAChC,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,YAAY,OAAO,KAAK,cAAc,CAAC;AAAA,IACvC,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,sBAAsB,OAAO,KAAK,wBAAwB,CAAC;AAAA,IAC3D,wBAAwB,aAAa,KAAK,sBAAsB,KAAK;AAAA,IACrE,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,gBAAgB,SAAS,KAAK,cAAc;AAAA,IAC5C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,8BAA8B,MAA+D;AACpG,SAAO;AAAA,IACL,iBAAiB,OAAO,KAAK,mBAAmB,KAAK,MAAM,EAAE;AAAA,IAC7D,WAAW,OAAO,KAAK,aAAa,EAAE;AAAA,IACtC,SAAS,OAAO,KAAK,WAAW,EAAE;AAAA,IAClC,WAAW,OAAO,KAAK,aAAa,EAAE;AAAA,IACtC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,SAAS,QAAQ,KAAK,WAAW,KAAK;AAAA,IACtC,QAAQ,OAAO,KAAK,UAAU,EAAE;AAAA,IAChC,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,uBAAuB,aAAa,KAAK,qBAAqB,KAAK;AAAA,IACnE,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,yBAAyB,aAAa,KAAK,uBAAuB,KAAK;AAAA,IACvE,qBAAqB,aAAa,KAAK,mBAAmB,KAAK;AAAA,IAC/D,aAAa,OAAO,KAAK,eAAe,CAAC;AAAA,IACzC,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,uBAAuB,aAAa,KAAK,qBAAqB,KAAK;AAAA,IACnE,gBAAgB,SAAS,KAAK,cAAc;AAAA,IAC5C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,aAAa,OAAgD;AACpE,SAAO,MAAM,QAAQ,KAAK,IACtB,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,EAAE,IACnG,CAAC;AACP;AAEA,SAAS,sBAAsB,MAAiD;AAC9E,SAAO;AAAA,IACL,YAAY,OAAO,KAAK,cAAc,KAAK,WAAW,EAAE;AAAA,IACxD,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,MAAM,aAAa,KAAK,IAAI,KAAK;AAAA,IACjC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,kBAAkB,KAAK,MAAM,OAAO,KAAK,oBAAoB,CAAC,CAAC;AAAA,IAC/D,mBAAmB,KAAK,MAAM,OAAO,KAAK,qBAAqB,CAAC,CAAC;AAAA,IACjE,iBAAiB,OAAO,KAAK,mBAAmB,CAAC;AAAA,IACjD,oBAAoB,KAAK,MAAM,OAAO,KAAK,sBAAsB,CAAC,CAAC;AAAA,IACnE,aAAa,QAAQ,KAAK,eAAe,KAAK;AAAA,IAC9C,kBAAkB,QAAQ,KAAK,oBAAoB,KAAK;AAAA,IACxD,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,kBAAkB,MAA6C;AACtE,SAAO;AAAA,IACL,MAAM,aAAa,KAAK,IAAI,KAAK;AAAA,IACjC,kBAAkB,KAAK,MAAM,OAAO,KAAK,oBAAoB,CAAC,CAAC;AAAA,IAC/D,mBAAmB,KAAK,MAAM,OAAO,KAAK,qBAAqB,CAAC,CAAC;AAAA,IACjE,uBAAuB,KAAK,MAAM,OAAO,KAAK,yBAAyB,CAAC,CAAC;AAAA,IACzE,iBAAiB,OAAO,KAAK,mBAAmB,CAAC;AAAA,IACjD,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,mBAAmB,MAAoD;AAC9E,SAAO;AAAA,IACL,eAAe,OAAO,KAAK,iBAAiB,KAAK,MAAM,EAAE;AAAA,IACzD,MAAM,aAAa,KAAK,IAAI,KAAK;AAAA,IACjC,QAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,IACrC,sBAAsB,MAAM,QAAQ,KAAK,oBAAoB,IACzD,KAAK,qBAAqB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IACnF,CAAC;AAAA,IACL,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,SAAS,QAAQ,KAAK,WAAW,KAAK;AAAA,IACtC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,yBAAyB,MAAoD;AACpF,QAAM,MAAM,OAAO;AAAA,IACjB,OAAO,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,QAAQ,gBAAgB,QAAQ,UAAU;AAAA,EACnF;AACA,SAAO;AAAA,IACL,eAAe,OAAO,IAAI,iBAAiB,IAAI,MAAM,EAAE;AAAA,IACvD,MAAM,aAAa,IAAI,IAAI,KAAK;AAAA,IAChC,QAAQ,aAAa,IAAI,MAAM,KAAK;AAAA,IACpC,sBAAsB,MAAM,QAAQ,IAAI,oBAAoB,IACxD,IAAI,qBAAqB,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAClF,CAAC;AAAA,IACL,iBAAiB,aAAa,IAAI,eAAe,KAAK;AAAA,IACtD;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,MAA2C;AAClE,SAAO;AAAA,IACL,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,iBAAiB,KAAK,MAAM,OAAO,KAAK,mBAAmB,CAAC,CAAC;AAAA,IAC7D,iBAAiB,KAAK,MAAM,OAAO,KAAK,mBAAmB,CAAC,CAAC;AAAA,IAC7D,oBAAoB,KAAK,MAAM,OAAO,KAAK,sBAAsB,CAAC,CAAC;AAAA,IACnE,oBAAoB,KAAK,MAAM,OAAO,KAAK,sBAAsB,CAAC,CAAC;AAAA,IACnE,mBAAmB,KAAK,MAAM,OAAO,KAAK,qBAAqB,CAAC,CAAC;AAAA,IACjE,eAAe,KAAK,MAAM,OAAO,KAAK,iBAAiB,CAAC,CAAC;AAAA,IACzD,aAAa,QAAQ,KAAK,eAAe,KAAK;AAAA,IAC9C,kBAAkB,QAAQ,KAAK,oBAAoB,KAAK;AAAA,IACxD,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,QAAQ,SAAS,KAAK,MAAM,IAAI,EAAE,GAAG,KAAK,OAAO,IAAI;AAAA,IACrD,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,kBAAkB,aAAa,KAAK,gBAAgB;AAAA,IACpD,sBAAsB,SAAS,KAAK,oBAAoB,IAAI,EAAE,GAAG,KAAK,qBAAqB,IAAI;AAAA,IAC/F,SAAS,SAAS,KAAK,OAAO,IAAI,qBAAqB,KAAK,OAAO,IAAI;AAAA,IACvE,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,0BAA0B,MAAqD;AACtF,SAAO;AAAA,IACL,QAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,IACrC,SAAS,aAAa,KAAK,WAAW,KAAK,MAAM,KAAK;AAAA,IACtD,uBAAuB,OAAO,KAAK,0BAA0B,YACzD,KAAK,wBACJ,OAAO,KAAK,iBAAiB,YAAY,KAAK,eAAe;AAAA,IAClE,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,gBAAgB,MAA2C;AAClE,SAAO;AAAA,IACL,aAAa,QAAQ,KAAK,eAAe,KAAK;AAAA,IAC9C,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,aAAa,QAAQ,KAAK,eAAe,KAAK;AAAA,IAC9C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,iBAAiB,MAAkD;AAC1E,SAAO;AAAA,IACL,aAAa,OAAO,KAAK,eAAe,KAAK,MAAM,EAAE;AAAA,IACrD,MAAM,aAAa,KAAK,IAAI,KAAK;AAAA,IACjC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,eAAe,aAAa,KAAK,aAAa,KAAK;AAAA,IACnD,eAAe,MAAM,QAAQ,KAAK,aAAa,IAC3C,KAAK,cAAc,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAC5E,CAAC;AAAA,IACL,0BAA0B,KAAK,MAAM,OAAO,KAAK,4BAA4B,GAAG,CAAC;AAAA,IACjF,mBAAmB,KAAK,MAAM,OAAO,KAAK,qBAAqB,CAAC,CAAC;AAAA,IACjE,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,oBAAoB,KAAK,MAAM,OAAO,KAAK,sBAAsB,CAAC,CAAC;AAAA,IACnE,SAAS,KAAK,MAAM,OAAO,KAAK,WAAW,CAAC,CAAC;AAAA,IAC7C,SAAS,KAAK,MAAM,OAAO,KAAK,WAAW,CAAC,CAAC;AAAA,IAC7C,oBAAoB,KAAK,MAAM,OAAO,KAAK,sBAAsB,CAAC,CAAC;AAAA,IACnE,SAAS,KAAK,MAAM,OAAO,KAAK,WAAW,CAAC,CAAC;AAAA,IAC7C,SAAS,KAAK,MAAM,OAAO,KAAK,WAAW,CAAC,CAAC;AAAA,IAC7C,QAAQ,OAAO,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,YAAY,KAAK;AAAA,IAChE,iBAAiB,KAAK,MAAM,OAAO,KAAK,mBAAmB,CAAC,CAAC;AAAA,IAC7D,iBAAiB,KAAK,MAAM,OAAO,KAAK,mBAAmB,CAAC,CAAC;AAAA,IAC7D,aAAa,KAAK,MAAM,OAAO,KAAK,eAAe,CAAC,CAAC;AAAA,IACrD,mBAAmB,KAAK,MAAM,OAAO,KAAK,qBAAqB,CAAC,CAAC;AAAA,IACjE,eAAe,KAAK,MAAM,OAAO,KAAK,iBAAiB,CAAC,CAAC;AAAA,IACzD,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,qBAAqB,MAAsD;AAClF,SAAO;AAAA,IACL,SAAS,OAAO,KAAK,WAAW,KAAK,MAAM,EAAE;AAAA,IAC7C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,UAAU,KAAK,MAAM,OAAO,KAAK,YAAY,CAAC,CAAC;AAAA,IAC/C,UAAU,KAAK,MAAM,OAAO,KAAK,YAAY,CAAC,CAAC;AAAA,IAC/C,aAAa,KAAK,MAAM,OAAO,KAAK,eAAe,CAAC,CAAC;AAAA,IACrD,SAAS,KAAK,MAAM,OAAO,KAAK,WAAW,CAAC,CAAC;AAAA,IAC7C,QAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,IACrC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,mBAAmB,MAAoD;AAC9E,SAAO;AAAA,IACL,KAAK,OAAO,KAAK,OAAO,EAAE;AAAA,IAC1B,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,gBAAgB,KAAK,MAAM,OAAO,KAAK,kBAAkB,CAAC,CAAC;AAAA,IAC3D,eAAe,KAAK,MAAM,OAAO,KAAK,iBAAiB,CAAC,CAAC;AAAA,IACzD,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,uBAAuB,MAAwD;AACtF,QAAM,SAAS,SAAS,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC;AACtD,QAAM,SAAS,OAAO,KAAK,UAAU,WAAW,EAAE,KAAK,EAAE,YAAY,KAAK;AAC1E,SAAO;AAAA,IACL,UAAU,OAAO,OAAO,YAAY,KAAK,YAAY,EAAE;AAAA,IACvD,kBAAkB,OAAO,OAAO,qBAAqB,YAAY,OAAO,mBAAmB,QAAQ,OAAO,oBAAoB,KAAK;AAAA,IACnI,SAAS,aAAa,OAAO,OAAO,KAAK;AAAA,IACzC,YAAY,MAAM,QAAQ,OAAO,UAAU,IACvC,OAAO,WAAW,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAC3E,CAAC;AAAA,IACL,cAAc,MAAM,QAAQ,OAAO,YAAY,IAC3C,OAAO,aAAa,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAC7E,CAAC;AAAA,IACL,aAAa,aAAa,OAAO,WAAW,KAAK;AAAA,IACjD,kBAAkB;AAAA,IAClB,mBAAmB,OAAO,KAAK,sBAAsB,YAAY,KAAK,oBAAoB,WAAW;AAAA,IACrG,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,wBAAwB,aAAa,KAAK,sBAAsB,KAAK;AAAA,IACrE,kBAAkB,SAAS,OAAO,OAAO;AAAA,IACzC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,8BAA8B,MAAyD;AAC9F,SAAO;AAAA,IACL,UAAU,OAAO,KAAK,MAAM,KAAK,YAAY,EAAE;AAAA,IAC/C,MAAM,aAAa,KAAK,IAAI,KAAK;AAAA,IACjC,YAAY,SAAS,KAAK,UAAU;AAAA,IACpC,cAAc,MAAM,QAAQ,KAAK,YAAY,IACzC,KAAK,aAAa,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAC3E,CAAC;AAAA,IACL,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,8BAA8B,MAAyD;AAC9F,SAAO;AAAA,IACL,aAAa,OAAO,KAAK,eAAe,KAAK,MAAM,EAAE;AAAA,IACrD,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,IACnC,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,QAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,IACrC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,8BAA8B,MAAyD;AAC9F,SAAO;AAAA,IACL,UAAU,OAAO,KAAK,YAAY,KAAK,MAAM,EAAE;AAAA,IAC/C,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,IACnC,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,QAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,IACrC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,8BAA8B,MAAyD;AAC9F,SAAO;AAAA,IACL,cAAc,KAAK,MAAM,OAAO,KAAK,gBAAgB,CAAC,CAAC;AAAA,IACvD,eAAe,KAAK,MAAM,OAAO,KAAK,iBAAiB,CAAC,CAAC;AAAA,IACzD,cAAc,KAAK,MAAM,OAAO,KAAK,gBAAgB,CAAC,CAAC;AAAA,IACvD,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,yBAAyB,MAAoD;AACpF,SAAO;AAAA,IACL,QAAQ,MAAM,QAAQ,KAAK,MAAM,IAC7B,KAAK,OAAO,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,8BAA8B,IAAI,CAAC,IAC/H,CAAC;AAAA,IACL,iBAAiB,MAAM,QAAQ,KAAK,eAAe,IAC/C,KAAK,gBAAgB,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,8BAA8B,IAAI,CAAC,IACxI,CAAC;AAAA,IACL,eAAe,MAAM,QAAQ,KAAK,aAAa,IAC3C,KAAK,cAAc,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,8BAA8B,IAAI,CAAC,IACtI,CAAC;AAAA,IACL,kBAAkB,MAAM,QAAQ,KAAK,gBAAgB,IACjD,KAAK,iBAAiB,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,8BAA8B,IAAI,CAAC,IACzI,CAAC;AAAA,IACL,OAAO,SAAS,KAAK,KAAK,IAAI,8BAA8B,KAAK,KAAK,IAAI,8BAA8B,CAAC,CAAC;AAAA,IAC1G,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,6BAA6B,MAAwD;AAC5F,SAAO;AAAA,IACL,QAAQ,OAAO,KAAK,MAAM,KAAK,UAAU,EAAE;AAAA,IAC3C,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,IACnC,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,gBAAgB,KAAK,MAAM,OAAO,KAAK,kBAAkB,CAAC,CAAC;AAAA,IAC3D,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,+BAA+B,MAA0D;AAChG,SAAO;AAAA,IACL,UAAU,OAAO,KAAK,YAAY,KAAK,MAAM,EAAE;AAAA,IAC/C,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,IACnC,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,QAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,IACrC,iBAAiB,OAAO,KAAK,oBAAoB,YAAY,KAAK,kBAAkB,QAAQ,KAAK,mBAAmB,KAAK;AAAA,IACzH,mBAAmB,KAAK,MAAM,OAAO,KAAK,qBAAqB,CAAC,CAAC;AAAA,IACjE,uBAAuB,OAAO,KAAK,0BAA0B,YACzD,KAAK,wBACL,QAAQ,KAAK,yBAAyB,KAAK;AAAA,IAC/C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,+BAA+B,MAA0D;AAChG,SAAO;AAAA,IACL,cAAc,KAAK,MAAM,OAAO,KAAK,gBAAgB,CAAC,CAAC;AAAA,IACvD,iBAAiB,KAAK,MAAM,OAAO,KAAK,mBAAmB,CAAC,CAAC;AAAA,IAC7D,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,0BAA0B,MAAqD;AACtF,SAAO;AAAA,IACL,WAAW,MAAM,QAAQ,KAAK,SAAS,IACnC,KAAK,UAAU,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,6BAA6B,IAAI,CAAC,IACjI,CAAC;AAAA,IACL,oBAAoB,MAAM,QAAQ,KAAK,kBAAkB,IACrD,KAAK,mBAAmB,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,+BAA+B,IAAI,CAAC,IAC5I,CAAC;AAAA,IACL,kBAAkB,MAAM,QAAQ,KAAK,gBAAgB,IACjD,KAAK,iBAAiB,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,+BAA+B,IAAI,CAAC,IAC1I,CAAC;AAAA,IACL,OAAO,SAAS,KAAK,KAAK,IAAI,+BAA+B,KAAK,KAAK,IAAI,+BAA+B,CAAC,CAAC;AAAA,IAC5G,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,oBAAoB,MAAqD;AAChF,QAAM,cAAc,MAAM,QAAQ,KAAK,YAAY,IAC/C,KAAK,eACL,MAAM,QAAQ,KAAK,kBAAkB,IACnC,KAAK,qBACL,CAAC;AACP,SAAO;AAAA,IACL,aAAa,OAAO,KAAK,eAAe,KAAK,MAAM,EAAE;AAAA,IACrD,oBAAoB,aAAa,KAAK,kBAAkB,KAAK;AAAA,IAC7D,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,qBAAqB,aAAa,KAAK,mBAAmB,KAAK;AAAA,IAC/D,2BAA2B,aAAa,KAAK,yBAAyB,KAAK;AAAA,IAC3E,mBAAmB,aAAa,KAAK,iBAAiB,KAAK;AAAA,IAC3D,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,eAAe,OAAO,KAAK,iBAAiB,UAAU,EAAE,KAAK,EAAE,YAAY;AAAA,IAC3E,sBAAsB,SAAS,KAAK,oBAAoB;AAAA,IACxD,QAAQ,OAAO,KAAK,UAAU,OAAO,EAAE,KAAK,EAAE,YAAY;AAAA,IAC1D,cAAc,YAAY,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ;AAAA,IACnF,gCAAgC,SAAS,KAAK,8BAA8B;AAAA,IAC5E,iCAAiC,SAAS,KAAK,+BAA+B;AAAA,IAC9E,aAAa,SAAS,KAAK,WAAW;AAAA,IACtC,mBAAmB,SAAS,KAAK,iBAAiB;AAAA,IAClD,uBAAuB,aAAa,KAAK,qBAAqB,KAAK;AAAA,IACnE,2BAA2B,aAAa,KAAK,yBAAyB,KAAK;AAAA,IAC3E,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,UAAU,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,QAAQ,IAAI;AAAA,IAC9D,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,wBAAwB,MAAwC;AACvE,SAAO;AAAA,IACL,KAAK,eACF,KAAK,MACL,KAAK,iBACL,KAAK,kBACL,KAAK;AAAA,EACV;AACF;AAEA,SAAS,wBAAwB,MAAmD;AAClF,SAAO;AAAA,IACL,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,eAAe,aAAa,KAAK,aAAa,KAAK;AAAA,IACnD,mBAAmB,aAAa,KAAK,iBAAiB,KAAK;AAAA,IAC3D,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,kBAAkB,SAAS,KAAK,gBAAgB;AAAA,IAChD,gBAAgB,SAAS,KAAK,cAAc;AAAA,IAC5C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,iBAAiB,MAA4C;AACpE,SAAO;AAAA,IACL,MAAM,OAAO,KAAK,QAAQ,EAAE;AAAA,IAC5B,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,QAAQ,SAAS,KAAK,MAAM;AAAA,IAC5B,kBAAkB,MAAM,QAAQ,KAAK,gBAAgB,IACjD,KAAK,iBAAiB,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,EAAE,IACnH,CAAC;AAAA,IACL,eAAe,aAAa,KAAK,aAAa,KAAK;AAAA,IACnD,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,qBAAqB,aAAa,KAAK,mBAAmB,KAAK;AAAA,IAC/D,gBAAgB,QAAQ,KAAK,kBAAkB,KAAK;AAAA,IACpD,0BAA0B,aAAa,KAAK,wBAAwB,KAAK;AAAA,IACzE,0BAA0B,aAAa,KAAK,wBAAwB,KAAK;AAAA,IACzE,gCAAgC,aAAa,KAAK,8BAA8B,KAAK;AAAA,IACrF,aAAa,SAAS,KAAK,WAAW;AAAA,IACtC,iBAAiB,SAAS,KAAK,eAAe;AAAA,IAC9C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,yBAAyB,MAAoD;AACpF,SAAO;AAAA,IACL,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,gBAAgB,aAAa,KAAK,kBAAkB,KAAK,UAAU,KAAK;AAAA,IACxE,MAAM,aAAa,KAAK,IAAI,KAAK;AAAA,IACjC,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,uBAAuB,MAAkD;AAChF,SAAO;AAAA,IACL,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,gBAAgB,aAAa,KAAK,kBAAkB,KAAK,UAAU,KAAK;AAAA,IACxE,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,6BAA6B,MAAwD;AAC5F,SAAO;AAAA,IACL,WAAW,QAAQ,KAAK,aAAa,KAAK;AAAA,IAC1C,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,qBAAqB,aAAa,KAAK,mBAAmB,KAAK;AAAA,IAC/D,MAAM,aAAa,KAAK,IAAI,KAAK;AAAA,IACjC,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,MAAM,aAAa,KAAK,IAAI,KAAK;AAAA,IACjC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,qBAAqB,MAAgD;AAC5E,SAAO;AAAA,IACL,YAAY,OAAO,KAAK,cAAc,KAAK,sBAAsB,EAAE;AAAA,IACnE,oBAAoB,aAAa,KAAK,kBAAkB,KAAK;AAAA,IAC7D,mBAAmB,aAAa,KAAK,iBAAiB,KAAK;AAAA,IAC3D,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,SAAS,OAAO,KAAK,WAAW,SAAS;AAAA,IACzC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,mBAAmB,aAAa,KAAK,iBAAiB,KAAK;AAAA,IAC3D,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,kBAAkB,KAAK,MAAM,OAAO,KAAK,oBAAoB,CAAC,CAAC;AAAA,IAC/D,QAAQ,OAAO,KAAK,UAAU,QAAQ;AAAA,IACtC,aAAa,KAAK,MAAM,OAAO,KAAK,eAAe,CAAC,CAAC;AAAA,IACrD,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,UAAU,SAAS,KAAK,kBAAkB,KAAK,QAAQ;AAAA,IACvD,qBAAqB,SAAS,KAAK,mBAAmB,IAAI,EAAE,GAAG,KAAK,oBAAoB,IAAI;AAAA,IAC5F,6BAA6B,SAAS,KAAK,2BAA2B,IAAI,EAAE,GAAG,KAAK,4BAA4B,IAAI;AAAA,IACpH,4BAA4B,SAAS,KAAK,0BAA0B,IAAI,EAAE,GAAG,KAAK,2BAA2B,IAAI;AAAA,IACjH,eAAe,SAAS,KAAK,aAAa,IAAI,yBAAyB,KAAK,aAAa,IAAI;AAAA,IAC7F,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,sBAAsB,MAAiD;AAC9E,SAAO;AAAA,IACL,SAAS,MAAM,QAAQ,KAAK,OAAO,IAAI,KAAK,QAAQ,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAAI,CAAC;AAAA,IAClH,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,mBAAmB,MAA8C;AACxE,SAAO;AAAA,IACL,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC,MAAM,aAAa,KAAK,IAAI,KAAK;AAAA,IACjC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,2BACP,MACA,UAA+D,CAAC,GACzC;AACvB,SAAO;AAAA,IACL,IAAI,QAAQ,KAAK,MAAM,KAAK;AAAA,IAC5B,QAAQ,aAAa,KAAK,MAAM,KAAK,QAAQ,iBAAiB;AAAA,IAC9D,UAAU,aAAa,KAAK,QAAQ,KAAK,QAAQ,kBAAkB;AAAA,IACnE,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,8BAA8B,MAAyD;AAC9F,SAAO;AAAA,IACL,UAAU,QAAQ,KAAK,YAAY,KAAK;AAAA,IACxC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,IACnC,eAAe,QAAQ,KAAK,iBAAiB,KAAK;AAAA,IAClD,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,gCAAgC,MAA2D;AAClG,SAAO;AAAA,IACL,SAAS,QAAQ,KAAK,WAAW,KAAK;AAAA,IACtC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,0BAA0B,MAAqD;AACtF,SAAO;AAAA,IACL,WAAW,OAAO,KAAK,aAAa,EAAE;AAAA,IACtC,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,IACnC,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,mBAAmB,MAA8C;AACxE,SAAO;AAAA,IACL,WAAW,OAAO,KAAK,aAAa,EAAE;AAAA,IACtC,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,IACnC,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,OAAO,MAAM,QAAQ,KAAK,KAAK,IAC3B,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU;AAAA,MAC5F,gBAAgB,OAAO,KAAK,kBAAkB,EAAE;AAAA,MAChD,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,MACzC,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,MACvC,YAAY,OAAO,KAAK,cAAc,CAAC;AAAA,MACvC,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,MAC/C,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,MACzC,QAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,MACrC,KAAK,EAAE,GAAG,KAAK;AAAA,IACjB,EAAE,IACA,CAAC;AAAA,IACL,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,kBAAkB,MAA6C;AACtE,SAAO;AAAA,IACL,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,IACnC,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,YAAY,OAAO,KAAK,cAAc,CAAC;AAAA,IACvC,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,QAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,IACrC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,+BAA+B,MAA0D;AAChG,SAAO;AAAA,IACL,UAAU,QAAQ,KAAK,YAAY,KAAK;AAAA,IACxC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,2BAA2B,MAAsD;AACxF,SAAO;AAAA,IACL,YAAY,OAAO,KAAK,cAAc,KAAK,WAAW,KAAK,UAAU,EAAE;AAAA,IACvE,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,IACnC,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,QAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,IACrC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,YAAY,OAAO,KAAK,cAAc,CAAC;AAAA,IACvC,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,oBAAoB,aAAa,KAAK,kBAAkB,KAAK;AAAA,IAC7D,kBAAkB,aAAa,KAAK,gBAAgB,KAAK;AAAA,IACzD,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,qBAAqB,aAAa,KAAK,mBAAmB,KAAK;AAAA,IAC/D,QAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,IACrC,WAAW,SAAS,KAAK,SAAS;AAAA,IAClC,gBAAgB,MAAM,QAAQ,KAAK,cAAc,IAC7C,KAAK,eAAe,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,EAAE,IACjH,CAAC;AAAA,IACL,OAAO,QAAQ,KAAK,SAAS,KAAK;AAAA,IAClC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,0BAA0B,MAAqD;AACtF,SAAO;AAAA,IACL,YAAY,OAAO,KAAK,cAAc,EAAE;AAAA,IACxC,UAAU,aAAa,KAAK,QAAQ,KAAK;AAAA,IACzC,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,cAAc,aAAa,KAAK,YAAY,KAAK;AAAA,IACjD,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,OAAO,aAAa,KAAK,KAAK,KAAK;AAAA,IACnC,MAAM,SAAS,KAAK,IAAI;AAAA,IACxB,QAAQ,MAAM,QAAQ,KAAK,MAAM,IAAI,KAAK,OAAO,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAAI,CAAC;AAAA,IAC/G,eAAe,MAAM,QAAQ,KAAK,aAAa,IAC3C,KAAK,cAAc,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAC5E,CAAC;AAAA,IACL,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,YAAY,OAAO,KAAK,cAAc,CAAC;AAAA,IACvC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,cAAc,SAAS,KAAK,YAAY;AAAA,IACxC,eAAe,SAAS,KAAK,aAAa;AAAA,IAC1C,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,wBAAwB,MAAmD;AAClF,SAAO;AAAA,IACL,SAAS,MAAM,QAAQ,KAAK,OAAO,IAC/B,KAAK,QAAQ,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,2BAA2B,IAAI,CAAC,IAC7H,CAAC;AAAA,IACL,cAAc,SAAS,KAAK,YAAY,IAAI,2BAA2B,KAAK,YAAY,IAAI;AAAA,IAC5F,gBAAgB,aAAa,KAAK,cAAc,KAAK;AAAA,IACrD,uBAAuB,MAAM,QAAQ,KAAK,qBAAqB,IAC3D,KAAK,sBAAsB,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,EAAE,IACxH,CAAC;AAAA,IACL,aAAa,OAAO,KAAK,eAAe,CAAC;AAAA,IACzC,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,wBAAwB,MAAmD;AAClF,SAAO;AAAA,IACL,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC,YAAY,aAAa,KAAK,UAAU,KAAK;AAAA,IAC7C,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,YAAY,OAAO,KAAK,cAAc,CAAC;AAAA,IACvC,aAAa,aAAa,KAAK,WAAW,KAAK;AAAA,IAC/C,eAAe,MAAM,QAAQ,KAAK,aAAa,IAC3C,KAAK,cAAc,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAC5E,CAAC;AAAA,IACL,eAAe,SAAS,KAAK,aAAa;AAAA,IAC1C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,2BAA2B,MAAsD;AACxF,SAAO;AAAA,IACL,aAAa,OAAO,KAAK,eAAe,EAAE;AAAA,IAC1C,eAAe,aAAa,KAAK,aAAa,KAAK;AAAA,IACnD,KAAK,aAAa,KAAK,GAAG,KAAK;AAAA,IAC/B,SAAS,aAAa,KAAK,OAAO,KAAK;AAAA,IACvC,oBAAoB,OAAO,KAAK,sBAAsB,CAAC;AAAA,IACvD,eAAe,SAAS,KAAK,aAAa;AAAA,IAC1C,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,4BAA4B,MAAuD;AAC1F,SAAO;AAAA,IACL,WAAW,OAAO,KAAK,aAAa,EAAE;AAAA,IACtC,UAAU,OAAO,KAAK,YAAY,CAAC;AAAA,IACnC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,uBAAuB,MAAkD;AAChF,SAAO;AAAA,IACL,WAAW,OAAO,KAAK,aAAa,EAAE;AAAA,IACtC,OAAO,MAAM,QAAQ,KAAK,KAAK,IAC3B,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,0BAA0B,IAAI,CAAC,IAC1H,CAAC;AAAA,IACL,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,wBACP,MACA,eACA,MACoB;AACpB,QAAM,iBAAiB,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC;AACxE,QAAM,SAAS,SAAS,KAAK,MAAM,IAC/B,OAAO,KAAK,OAAO,aAAa,KAAK,OAAO,QAAQ,cAAc,WAAW,KAAK,GAAG,CAAC,IACtF,OAAO,KAAK,UAAU,cAAc,WAAW,KAAK,GAAG,CAAC;AAC5D,SAAO;AAAA,IACL,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,IACpC;AAAA,IACA,SAAS,OAAO,KAAK,WAAW,EAAE;AAAA,IAClC;AAAA,IACA,QAAQ,SAAS,KAAK,MAAM;AAAA,IAC5B,QAAQ,OAAO,KAAK,UAAU,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOzC,mBAAmB;AAAA,MACjB,KAAK,qBAAqB,OAAO,KAAK,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,MAAM;AAAA,IAC/E;AAAA,IACA,WAAW,aAAa,KAAK,SAAS,KAAK;AAAA,IAC3C,iBAAiB,aAAa,KAAK,eAAe,KAAK;AAAA,IACvD,wBAAwB,aAAa,KAAK,sBAAsB,KAAK;AAAA,IACrE;AAAA,IACA,QAAQ,SAAS,KAAK,MAAM;AAAA,IAC5B,UAAU,KAAK,YAAY;AAAA,IAC3B,YAAY,KAAK,cAAc;AAAA,IAC/B,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,gCAAgC,WAA2D;AAClG,QAAM,kBAAkB,SAAS,UAAU,OAAO,QAAQ,IACtD,UAAU,OAAO,WACjB,wBAAwB,UAAU,MAAM,IACtC,UAAU,SACV;AACN,SAAO;AAAA,IACL,QAAQ,UAAU,UAAU;AAAA,IAC5B,mBAAmB,UAAU,qBAAqB;AAAA,IAClD,WAAW,UAAU,aAAa;AAAA,IAClC,iBAAiB,UAAU,mBAAmB;AAAA,IAC9C,wBAAwB,UAAU,0BAA0B;AAAA,IAC5D,SAAS,UAAU;AAAA,IACnB,QAAQ,UAAU;AAAA,IAClB,UAAU,kBAAkB,oBAAoB,eAAe,IAAI;AAAA,IACnE,SAAS,SAAS,UAAU,OAAO,OAAO;AAAA,IAC1C,eAAe,SAAS,UAAU,OAAO,aAAa;AAAA,IACtD,kBAAkB,SAAS,UAAU,OAAO,gBAAgB,IAAI,SAAS,UAAU,OAAO,gBAAgB,IAAI;AAAA,IAC9G,sBAAsB,SAAS,UAAU,OAAO,oBAAoB,IAChE,SAAS,UAAU,OAAO,oBAAoB,IAC9C;AAAA,IACJ,2BAA2B,aAAa,UAAU,OAAO,yBAAyB,KAAK;AAAA,IACvF,iBAAiB,QAAQ,UAAU,OAAO,eAAe;AAAA,IACzD,eAAe,QAAQ,UAAU,OAAO,aAAa;AAAA,IACrD,oBAAoB,aAAa,UAAU,OAAO,kBAAkB,KAAK;AAAA,IACzE,OAAO,SAAS,UAAU,OAAO,KAAK,IAAI,SAAS,UAAU,OAAO,KAAK,IAAI;AAAA,IAC7E,cAAc,QAAQ,UAAU,OAAO,YAAY;AAAA,IACnD,aAAa,SAAS,UAAU,OAAO,WAAW,IAAI,SAAS,UAAU,OAAO,WAAW,IAAI;AAAA,IAC/F,UAAU,UAAU,YAAY;AAAA,IAChC,YAAY,UAAU,cAAc;AAAA,IACpC,KAAK,EAAE,GAAG,UAAU,IAAI;AAAA,EAC1B;AACF;AAqwFA,SAAS,cAAc,OAAyB;AAC9C,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,SAAS,cAAc,IAAI,CAAC;AAAA,EAChD;AACA,MAAI,SAAS,KAAK,GAAG;AACnB,WAAO,OAAO,YAAY,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,cAAc,IAAI,CAAC,CAAC,CAAC;AAAA,EAClG;AACA,SAAO;AACT;AA9wJA,IAqHa,0BACP,wBA2hBA,kBAk3CO;AAngEb;AAAA;AAAA;AAgFA;AACA;AAQA;AAUA;AAMA;AAYO,IAAM,2BAA2B;AACxC,IAAM,yBAAyB,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AA2hBhE,IAAM,mBAAN,MAAmD;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACiB;AAAA,MAEjB,YAAY,SAOT;AACD,aAAK,QAAQ,QAAQ;AACrB,aAAK,cAAc,QAAQ;AAC3B,aAAK,QAAQ,QAAQ;AACrB,aAAK,SAAS,QAAQ;AACtB,aAAK,OAAO,QAAQ;AACpB,aAAK,YAAY,QAAQ;AAAA,MAC3B;AAAA,MAEA,OAAO,QAA6C;AAClD,YAAI,OAAwC;AAC5C,eAAO,MAAM;AACX,gBAAM;AACN,cAAI,CAAC,KAAK,eAAe,CAAC,KAAK,WAAW;AACxC;AAAA,UACF;AACA,iBAAO,MAAM,KAAK,UAAU,KAAK,WAAW;AAAA,QAC9C;AAAA,MACF;AAAA,MAEA,MAAM,YAA0B;AAC9B,cAAM,QAAa,CAAC;AACpB,yBAAiB,QAAQ,KAAK,MAAM,GAAG;AACrC,gBAAM,KAAK,GAAG,KAAK,KAAK;AAAA,QAC1B;AACA,eAAO;AAAA,MACT;AAAA,MAEA,MAAM,WAAyB;AAC7B,eAAO,KAAK,UAAU;AAAA,MACxB;AAAA,IACF;AAo0CO,IAAM,gBAAN,MAAkD;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACQ;AAAA,MACA,uBAAuB,oBAAI,IAAiC;AAAA,MAE7E,YAAY,UAAgC,CAAC,GAAG;AAC9C,cAAM,YAAY,OAAO,YAAY,cAAc,QAAQ,KAAK,kBAAkB;AAClF,cAAM,kBAAkB,QAAQ,WAAW,aAAa,IAAI,KAAK;AACjE,YAAI,CAAC,gBAAgB;AACnB,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AACA,aAAK,UAAU;AACf,aAAK,YAAY,QAAQ,WAAW,KAAK,KAAK;AAC9C,aAAK,YAAY,QAAQ,YAAY,0BAA0B,QAAQ,QAAQ,EAAE;AACjF,aAAK,aAAa,KAAK,IAAI,GAAG,QAAQ,cAAc,IAAM;AAC1D,aAAK,cAAc,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,eAAe,CAAC,CAAC;AACnE,aAAK,YAAY,QAAQ,SAAS;AAAA,MACpC;AAAA,MAEA,QAAc;AAAA,MAAC;AAAA,MAEf,MAAM,cACJ,UACA,aACA,UAOI,CAAC,GAC6B;AAClC,cAAM,kBAAkB,cAAc,UAAU,UAAU;AAC1D,cAAM,oBAAoB,cAAc,aAAa,aAAa;AAClE,cAAM,uBAAuB,EAAE,GAAG,kBAAkB;AACpD,cAAM,wBAAwB,qBAAqB;AACnD,eAAO,qBAAqB;AAC5B,cAAM,gBAAgB,QAAQ,mBAAmB;AACjD,cAAM,UAAmC;AAAA,UACvC,UAAU,EAAE,GAAG,gBAAgB;AAAA,UAC/B,aAAa;AAAA,QACf;AACA,YAAI,QAAQ,YAAY;AACtB,kBAAQ,aAAa,QAAQ;AAAA,QAC/B,WAAW,QAAQ,gBAAgB,QAAW;AAC5C,kBAAQ,cAAc,QAAQ;AAAA,QAChC,OAAO;AACL,kBAAQ,cAAc,4BAA4B,iBAAiB,iBAAiB;AAAA,QACtF;AACA,YAAI,QAAQ,oBAAoB;AAC9B,kBAAQ,qBAAqB,cAAc,QAAQ,oBAAoB,oBAAoB;AAAA,QAC7F;AACA,YAAI,QAAQ,mBAAmB;AAC7B,kBAAQ,oBAAoB,MAAM,QAAQ,QAAQ,iBAAiB,IAC/D;AAAA,YACE,OAAO,QAAQ,kBAAkB;AAAA,cAAI,CAAC,MAAM,UAC1C,cAAc,MAAM,qBAAqB,KAAK,GAAG;AAAA,YACnD;AAAA,UACF,IACA,cAAc,QAAQ,mBAAmB,mBAAmB;AAAA,QAClE;AACA,YAAI,QAAQ,gBAAgB;AAC1B,kBAAQ,iBAAiB,cAAc,QAAQ,gBAAgB,gBAAgB;AAAA,QACjF;AACA,YAAI,kBAAkB,UAAa,kBAAkB,MAAM;AACzD,kBAAQ,kBAAkB,cAAc,eAAe,iBAAiB;AAAA,QAC1E;AAQA,mBAAW,aAAa;AAAA,UACtB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,GAAG;AACD,gBAAM,QAAQ,gBAAgB,SAAS;AACvC,cAAI,UAAU,UAAa,UAAU,MAAM;AACzC,oBAAQ,SAAS,IAAI;AAAA,UACvB;AAAA,QACF;AACA,YAAI,QAAQ,mBAAmB,UAAa,QAAQ,mBAAmB,MAAM;AAC3E,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAKA,YAAI,QAAQ,YAAY,OAAO,QAAQ,aAAa,UAAU;AAC5D,iBAAQ,QAAQ,SAAqC;AAAA,QACvD;AACA,cAAM,UAAU,OAAO,gBAAgB,YAAY,gBAAgB,qBAAqB,EAAE,EAAE,KAAK;AACjG,cAAM,iBAAiB,OAAO,gBAAgB,mBAAmB,EAAE,EAAE,KAAK;AAC1E,cAAM,oBAAoB,OAAO,gBAAgB,uBAAuB,EAAE,EAAE,KAAK;AACjF,cAAM,kBAAkB,OAAO,gBAAgB,qBAAqB,EAAE,EAAE,KAAK;AAC7E,YAAI,WAAW,kBAAkB,qBAAqB,iBAAiB;AACrE,gBAAM,oBAAoB;AAAA,YACxB,mBAAmB,WAAW;AAAA,YAC9B,iBAAiB,kBAAkB;AAAA,YACnC,qBAAqB,qBAAqB;AAAA,YAC1C,mBAAmB,mBAAmB;AAAA,UACxC;AACA,kBAAQ,qBAAqB;AAC7B,kBAAQ,QAAQ,EAAE,oBAAoB,kBAAkB;AAAA,QAC1D;AACA,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,sCAAsC,EAAE,WAAW,QAAQ,CAAC;AAC5G,cAAM,aAAa,OAAO,KAAK,cAAc,EAAE;AAC/C,YAAI,CAAC,YAAY;AACf,gBAAM,IAAI,mBAAmB,4DAA4D;AAAA,QAC3F;AACA,aAAK,qBAAqB,IAAI,YAAY;AAAA,UACxC,UAAU;AAAA,UACV,aAAa,SAAS,QAAQ,WAAW;AAAA,UACzC,iBAAiB,SAAS,QAAQ,eAAe;AAAA,QACnD,CAAC;AACD,eAAO;AAAA,UACL;AAAA,UACA,QAAQ,OAAO,KAAK,UAAU,OAAO;AAAA,UACrC,mBAAmB,aAAa,KAAK,iBAAiB;AAAA,UACtD,gBAAgB,aAAa,KAAK,cAAc;AAAA,UAChD,eAAe,SAAS,KAAK,aAAa;AAAA,UAC1C,YAAY,SAAS,KAAK,UAAU;AAAA,UACpC,mBAAmB,SAAS,KAAK,iBAAiB;AAAA,UAClD,cAAc,SAAS,KAAK,YAAY;AAAA,UACxC,YAAY,aAAa,KAAK,UAAU;AAAA,UACxC,UAAU,KAAK;AAAA,UACf,YAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAAA,MAEA,MAAM,qBACJ,YACA,UAII,CAAC,GAC8B;AAMnC,cAAM,EAAE,cAAc,YAAY,IAAI;AACtC,cAAM,UAAmC,EAAE,UAAU,KAAK;AAC1D,YAAI,gBAAgB,QAAW;AAC7B,gBAAM,UAAU,CAAC,SAAS,SAAS,OAAO;AAC1C,cAAI,CAAE,QAA8B,SAAS,WAAW,GAAG;AACzD,kBAAM,IAAI;AAAA,cACR,+BAA+B,KAAK,UAAU,OAAO,CAAC,SAAS,KAAK,UAAU,WAAW,CAAC;AAAA,YAC5F;AAAA,UACF;AACA,kBAAQ,eAAe;AAAA,QACzB;AACA,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,wBAAwB,UAAU,0BAA0B,EAAE,WAAW,QAAQ,CAAC;AAClI,aAAK,qBAAqB,OAAO,UAAU;AAC3C,cAAM,YAAY,SAAS,KAAK,SAAS,IACrC,OAAO;AAAA,UACL,OAAO,QAAQ,KAAK,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,QAAQ,KAAK,CAAC,CAAC;AAAA,QAC5E,IACA,CAAC;AACL,eAAO;AAAA,UACL,YAAY,OAAO,KAAK,cAAc,UAAU;AAAA,UAChD,QAAQ,OAAO,KAAK,UAAU,EAAE;AAAA,UAChC,SAAS,aAAa,KAAK,OAAO;AAAA,UAClC;AAAA,UACA,SAAS,SAAS,KAAK,OAAO;AAAA,UAC9B,SAAS,yBAAyB,SAAS,KAAK,OAAO,CAAC;AAAA,UACxD,UAAU,KAAK;AAAA,UACf,YAAY,KAAK;AAAA,UACjB,KAAK,EAAE,GAAG,KAAK;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,MAAM,cAAc,YAA+C;AACjE,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,wBAAwB,UAAU,gBAAgB;AAC5F,eAAO,aAAa,IAAI;AAAA,MAC1B;AAAA,MAEA,MAAM,sBAAsB,aAAqF;AAC/G,cAAM,oBAAoB,cAAc,aAAa,aAAa;AAClE,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,wCAAwC;AAAA,UAChF,WAAW,EAAE,aAAa,kBAAkB;AAAA,QAC9C,CAAC;AACD,eAAO,6BAA6B,IAAI;AAAA,MAC1C;AAAA,MAEA,MAAM,kBAAkB,UAKpB,CAAC,GAAgD;AACnD,cAAM,SAAS;AAAA,UACb,MAAM,QAAQ;AAAA,UACd,QAAQ,QAAQ;AAAA,UAChB,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,GAAG,CAAC;AAAA,UACjE,QAAQ,QAAQ;AAAA,QAClB;AACA,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,wBAAwB,EAAE,OAAO,CAAC;AACjF,cAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,YAAY,IAC7F,CAAC;AACL,cAAM,cAAc,aAAa,KAAK,WAAW;AACjD,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,OAAO,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,OAAO;AAAA,UAC5D,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,UACxD;AAAA,UACA,WAAW,cACP,CAAC,WAAW,KAAK,kBAAkB,EAAE,GAAG,SAAS,OAAO,CAAC,IACzD;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,iBAAiB,UAAgE,CAAC,GAAG;AACzF,eAAO,KAAK,kBAAkB,EAAE,GAAG,SAAS,MAAM,KAAK,CAAC;AAAA,MAC1D;AAAA,MAEA,MAAM,YAAY,YAA+C;AAC/D,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,wBAAwB,UAAU,EAAE;AAC7E,eAAO,aAAa,IAAI;AAAA,MAC1B;AAAA;AAAA,MAIA,MAAM,aAAa,UAKf,CAAC,GAAmD;AACtD,cAAM,SAAS;AAAA,UACb,MAAM,QAAQ;AAAA,UACd,QAAQ,QAAQ;AAAA,UAChB,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,GAAG,CAAC;AAAA,UACjE,QAAQ,QAAQ;AAAA,QAClB;AACA,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,mBAAmB,EAAE,OAAO,CAAC;AAC5E,cAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,WAAW,IAC5F,CAAC;AACL,cAAM,cAAc,aAAa,KAAK,WAAW;AACjD,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,OAAO,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,OAAO;AAAA,UAC5D,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,UACxD;AAAA,UACA,WAAW,cAAc,CAAC,WAAW,KAAK,aAAa,EAAE,GAAG,SAAS,OAAO,CAAC,IAAI;AAAA,QACnF,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,WAAW,WAAiD;AAChE,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,mBAAmB,SAAS,EAAE;AACvE,eAAO,YAAY,IAAI;AAAA,MACzB;AAAA,MAEA,MAAM,cAAc,OAUa;AAC/B,cAAM,OAAgC;AAAA,UACpC,YAAY,MAAM;AAAA,UAClB,cAAc,MAAM;AAAA,UACpB,aAAa,MAAM,eAAe;AAAA,UAClC,UAAU,MAAM,YAAY;AAAA,QAC9B;AACA,YAAI,MAAM,gBAAgB,OAAW,MAAK,cAAc,MAAM;AAC9D,YAAI,MAAM,aAAa,OAAW,MAAK,WAAW,MAAM;AACxD,YAAI,MAAM,sBAAsB,OAAW,MAAK,oBAAoB,MAAM;AAC1E,YAAI,MAAM,iBAAiB,OAAW,MAAK,eAAe,MAAM;AAChE,YAAI,MAAM,aAAa,OAAW,MAAK,WAAW,MAAM;AACxD,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,mBAAmB,EAAE,WAAW,KAAK,CAAC;AAChF,eAAO,YAAY,IAAI;AAAA,MACzB;AAAA,MAEA,MAAM,cAAc,WAAmB,OASN;AAC/B,cAAM,OAAgC,CAAC;AACvC,mBAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC1C,cAAI,MAAM,OAAW,MAAK,CAAC,IAAI;AAAA,QACjC;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,mBAAmB,SAAS,IAAI,EAAE,WAAW,KAAK,CAAC;AAC5F,eAAO,YAAY,IAAI;AAAA,MACzB;AAAA,MAEA,MAAM,sBAAsB,WAAmB,OAA2F;AACxI,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,mBAAmB,SAAS,iBAAiB;AAAA,UACrF,WAAW;AAAA,YACT,uBAAuB,MAAM;AAAA,YAC7B,UAAU,MAAM,YAAY;AAAA,UAC9B;AAAA,QACF,CAAC;AACD,eAAO,YAAY,IAAI;AAAA,MACzB;AAAA,MAEA,MAAM,yBAAyB,WAAmB,uBAA6D;AAC7G,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,UAAU,mBAAmB,SAAS,iBAAiB,qBAAqB,EAAE;AAChH,eAAO,YAAY,IAAI;AAAA,MACzB;AAAA,MAEA,MAAM,yBAAyB,WAAiD;AAC9E,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,mBAAmB,SAAS,gBAAgB;AACtF,eAAO,YAAY,IAAI;AAAA,MACzB;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,8BAA8B,OAKI;AACtC,cAAM,OAAgC;AAAA,UACpC,YAAY,MAAM;AAAA,UAClB,cAAc,MAAM;AAAA,QACtB;AACA,YAAI,MAAM,WAAW,OAAW,MAAK,SAAS,MAAM;AACpD,YAAI,MAAM,iBAAiB,OAAW,MAAK,eAAe,MAAM;AAChE,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,0CAA0C;AAAA,UAClF,WAAW;AAAA,QACb,CAAC;AACD,eAAO;AAAA,UACL,eAAe,OAAO,KAAK,iBAAiB,EAAE;AAAA,UAC9C,OAAO,OAAO,KAAK,SAAS,EAAE;AAAA,UAC9B,cAAc,OAAO,KAAK,gBAAgB,EAAE;AAAA,UAC5C,QAAQ,MAAM,QAAQ,KAAK,MAAM,IAC7B,KAAK,OAAO,OAAO,CAAC,MAA4B,OAAO,MAAM,QAAQ,IACrE,CAAC;AAAA,UACL,aAAa,aAAa,KAAK,WAAW;AAAA,QAC5C;AAAA,MACF;AAAA,MAEA,MAAM,iCAAiC,OAA0E;AAC/G,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,yCAAyC;AAAA,UACjF,WAAW,EAAE,OAAO,MAAM,OAAO,MAAM,MAAM,KAAK;AAAA,QACpD,CAAC;AACD,eAAO,EAAE,GAAG,KAAK;AAAA,MACnB;AAAA,MAEA,MAAM,0BAA0B,YAA8D;AAC5F,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,0BAA0B,UAAU,UAAU;AACxF,eAAO,+BAA+B,IAAI;AAAA,MAC5C;AAAA,MAEA,MAAM,yBAAyB,YAA8D;AAC3F,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,0BAA0B,UAAU,SAAS;AACvF,eAAO,+BAA+B,IAAI;AAAA,MAC5C;AAAA,MAEA,MAAM,8BACJ,YACA,OAekC;AAClC,cAAM,OAAgC;AAAA,UACpC,cAAc,MAAM;AAAA,UACpB,WAAW,MAAM;AAAA,UACjB,eAAe,MAAM;AAAA,UACrB,eAAe,MAAM;AAAA,UACrB,WAAW,MAAM;AAAA,QACnB;AACA,YAAI,MAAM,eAAe,OAAW,MAAK,aAAa,MAAM;AAC5D,YAAI,MAAM,iBAAiB,OAAW,MAAK,eAAe,MAAM;AAChE,YAAI,MAAM,oBAAoB,OAAW,MAAK,kBAAkB,MAAM;AACtE,YAAI,MAAM,wBAAwB,OAAW,MAAK,sBAAsB,MAAM;AAC9E,YAAI,MAAM,kBAAkB,OAAW,MAAK,gBAAgB,MAAM;AAClE,YAAI,MAAM,sBAAsB,OAAW,MAAK,oBAAoB,MAAM;AAC1E,YAAI,MAAM,qBAAqB,OAAW,MAAK,mBAAmB,MAAM;AACxE,YAAI,MAAM,oBAAoB,OAAW,MAAK,kBAAkB,MAAM;AACtE,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,wBAAwB,UAAU,sBAAsB;AAAA,UAC/F,WAAW;AAAA,QACb,CAAC;AACD,eAAO,EAAE,GAAG,KAAK;AAAA,MACnB;AAAA,MAEA,MAAM,qCAAqC,YAAsD;AAC/F,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,wBAAwB,UAAU,oBAAoB;AAC/F,eAAO,EAAE,GAAG,KAAK;AAAA,MACnB;AAAA;AAAA,MAIA,MAAM,uBAAwD;AAC5D,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,0BAA0B;AACzE,eAAO;AAAA,UACL,mBAAmB,OAAO,KAAK,SAAS,KAAK,iBAAiB,CAAC,EAAE,SAAS,IAAI,SAAS,KAAK,iBAAiB,IAAI;AAAA,UACjH,UAAU,SAAS,KAAK,QAAQ;AAAA,UAChC,cAAc,SAAS,KAAK,YAAY;AAAA,UACxC,kBAAkB,SAAS,KAAK,gBAAgB;AAAA,UAChD,UAAU,SAAS,KAAK,QAAQ;AAAA,UAChC,OAAO,SAAS,KAAK,KAAK;AAAA,UAC1B,SAAS,SAAS,KAAK,OAAO;AAAA,UAC9B,MAAM,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,YAAY,IAAI,CAAC;AAAA,UAClI,UAAU,KAAK;AAAA,UACf,YAAY,KAAK;AAAA,UACjB,KAAK,EAAE,GAAG,KAAK;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,MAAM,uBAAuB,SAAgF;AAC3G,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,4BAA4B;AAAA,UAC1E,WAAW;AAAA,YACT,UAAU,QAAQ;AAAA,YAClB,gBAAgB,QAAQ;AAAA,UAC1B;AAAA,QACF,CAAC;AACD,eAAO;AAAA,UACL,YAAY,OAAO,KAAK,cAAc,EAAE;AAAA,UACxC,UAAU,OAAO,KAAK,YAAY,EAAE;AAAA,UACpC,gBAAgB,OAAO,KAAK,kBAAkB,EAAE;AAAA,UAChD,aAAa,OAAO,KAAK,eAAe,SAAS;AAAA,UACjD,iBAAiB,aAAa,KAAK,eAAe;AAAA,UAClD,mBAAmB,QAAQ,KAAK,qBAAqB,KAAK;AAAA,UAC1D,eAAe,aAAa,KAAK,aAAa;AAAA,UAC9C,6BAA6B,MAAM,QAAQ,KAAK,2BAA2B,IAAI,KAAK,8BAA8B,CAAC;AAAA,UACnH,oBAAoB,MAAM,QAAQ,KAAK,kBAAkB,IACrD,KAAK,mBAAmB,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,EAAE,IACrH,CAAC;AAAA,UACL,wBAAwB,QAAQ,KAAK,0BAA0B,KAAK;AAAA,UACpE,oBAAoB,QAAQ,KAAK,sBAAsB,KAAK;AAAA,UAC5D,oBAAoB,QAAQ,KAAK,sBAAsB,KAAK;AAAA,UAC5D,UAAU,KAAK;AAAA,UACf,YAAY,KAAK;AAAA,UACjB,KAAK,EAAE,GAAG,KAAK;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,MAAM,UAAU,UAQZ,CAAC,GAAgD;AACnD,cAAM,SAAS;AAAA,UACb,gBAAgB,QAAQ;AAAA,UACxB,UAAU,QAAQ;AAAA,UAClB,SAAS,QAAQ;AAAA,UACjB,aAAa,QAAQ;AAAA,UACrB,YAAY,QAAQ;AAAA,UACpB,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,GAAG,CAAC;AAAA,UACjE,QAAQ,QAAQ;AAAA,QAClB;AACA,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,iBAAiB,EAAE,OAAO,CAAC;AAC1E,cAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,eAAe,IAChG,CAAC;AACL,cAAM,cAAc,aAAa,KAAK,WAAW;AACjD,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,OAAO,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,OAAO;AAAA,UAC5D,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,UACxD;AAAA,UACA,WAAW,cACP,CAAC,WAAW,KAAK,UAAU,EAAE,GAAG,SAAS,OAAO,CAAC,IACjD;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,YAAY,UAA8C,CAAC,GAA2B;AAC1F,cAAM,kBAAkB,OAAO,QAAQ,SAAS,EAAE,EAAE,KAAK;AACzD,YAAI,iBAAiB;AACnB,gBAAM,cAAc,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,EAAE,CAAC;AAC7E,gBAAM,SAAwB,CAAC;AAC/B,cAAI,SAAwB;AAC5B,gBAAM,cAAc,oBAAI,IAAY;AACpC,iBAAO,OAAO,SAAS,aAAa;AAClC,kBAAM,CAACC,KAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,kBAAkB;AAAA,cACzD,QAAQ;AAAA,gBACN,OAAO;AAAA,gBACP;AAAA,gBACA,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,cAAc,OAAO,QAAQ,EAAE,CAAC;AAAA,cAC9D;AAAA,YACF,CAAC;AACD,kBAAM,YAAY,MAAM,QAAQA,MAAK,KAAK,IACtCA,MAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,UAAU,IAC3F,CAAC;AACL,mBAAO,KAAK,GAAG,SAAS;AACxB,qBAAS,aAAaA,MAAK,WAAW;AACtC,gBAAI,CAAC,UAAU,YAAY,IAAI,MAAM,GAAG;AACtC;AAAA,YACF;AACA,wBAAY,IAAI,MAAM;AAAA,UACxB;AACA,iBAAO,OAAO,MAAM,GAAG,WAAW;AAAA,QACpC;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,WAAW;AACpD,eAAO,CAAC,WAAW,IAAI,CAAC;AAAA,MAC1B;AAAA,MAEA,MAAM,gBAAgB,UAAgD,CAAC,GAAiC;AACtG,YAAI,kBAAkB,OAAO,QAAQ,YAAY,EAAE,EAAE,KAAK;AAC1D,YAAI,CAAC,iBAAiB;AACpB,gBAAM,SAAS,MAAM,KAAK,YAAY;AACtC,cAAI,OAAO,WAAW,GAAG;AACvB,mBAAO,yBAAyB;AAAA,UAClC;AACA,4BAAkB,OAAO,CAAC,EAAG;AAAA,QAC/B;AACA,YAAI;AACF,gBAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,iBAAiB,eAAe,eAAe;AAAA,YACtF,QAAQ;AAAA,cACN,MAAM,OAAO,QAAQ,QAAQ,IAAI,EAAE,KAAK,EAAE,YAAY,MAAM,OAAO,OAAO;AAAA,YAC5E;AAAA,UACF,CAAC;AACD,gBAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,IAC3E,CAAC;AACL,cAAI,MAAM,WAAW,GAAG;AACtB,mBAAO,yBAAyB,eAAe;AAAA,UACjD;AACA,iBAAO,MAAM,IAAI,CAAC,SAAS,uBAAuB,MAAM,EAAE,UAAU,iBAAiB,QAAQ,OAAO,CAAC,CAAC;AAAA,QACxG,QAAQ;AACN,iBAAO,yBAAyB,eAAe;AAAA,QACjD;AAAA,MACF;AAAA,MAEA,MAAM,uBACJ,eACA,UAAgD,CAAC,GACrB;AAC5B,cAAM,gBAAgB,OAAO,iBAAiB,EAAE,EAAE,KAAK;AACvD,YAAI,CAAC,eAAe;AAClB,gBAAM,IAAI,mBAAmB,4BAA4B;AAAA,QAC3D;AACA,cAAM,aAAa,MAAM,KAAK,gBAAgB,OAAO;AACrD,cAAM,QAAQ,WAAW,KAAK,CAAC,SAAS,KAAK,kBAAkB,aAAa;AAC5E,YAAI,CAAC,OAAO;AACV,gBAAM,IAAI,qBAAqB,wBAAwB,aAAa,EAAE;AAAA,QACxE;AACA,eAAO;AAAA,MACT;AAAA,MAEA,MAAM,0BAAuD;AAC3D,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,iBAAiB;AAC1D,eAAO,wBAAwB,IAAI;AAAA,MACrC;AAAA,MAEA,MAAM,2BAA2B,SAOD;AAC9B,cAAM,UAAmC,CAAC;AAC1C,YAAI,QAAQ,aAAa,QAAW;AAClC,kBAAQ,WAAW,OAAO,QAAQ,QAAQ,EAAE,KAAK;AAAA,QACnD;AACA,YAAI,QAAQ,kBAAkB,QAAW;AACvC,kBAAQ,gBAAgB,OAAO,QAAQ,aAAa,EAAE,KAAK;AAAA,QAC7D;AACA,YAAI,QAAQ,sBAAsB,QAAW;AAC3C,kBAAQ,oBAAoB,OAAO,QAAQ,iBAAiB,EAAE,KAAK;AAAA,QACrE;AACA,YAAI,QAAQ,mBAAmB,QAAW;AACxC,kBAAQ,iBAAiB,OAAO,QAAQ,cAAc,EAAE,KAAK;AAAA,QAC/D;AACA,YAAI,QAAQ,qBAAqB,QAAW;AAC1C,kBAAQ,mBAAmB,SAAS,QAAQ,gBAAgB;AAAA,QAC9D;AACA,YAAI,QAAQ,mBAAmB,QAAW;AACxC,kBAAQ,iBAAiB,SAAS,QAAQ,cAAc;AAAA,QAC1D;AACA,YAAI,OAAO,KAAK,OAAO,EAAE,WAAW,GAAG;AACrC,gBAAM,IAAI,mBAAmB,oEAAoE;AAAA,QACnG;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,mBAAmB,EAAE,WAAW,QAAQ,CAAC;AAClF,eAAO,wBAAwB,IAAI;AAAA,MACrC;AAAA,MAEA,MAAM,mBAAyC;AAC7C,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,UAAU;AACnD,eAAO,iBAAiB,IAAI;AAAA,MAC9B;AAAA,MAEA,MAAM,oBAAoB,SAAmF;AAC3G,cAAM,cAAc,OAAO,QAAQ,eAAe,EAAE,EAAE,KAAK,EAAE,YAAY;AACzE,YAAI,CAAC,aAAa;AAChB,gBAAM,IAAI,mBAAmB,0BAA0B;AAAA,QACzD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,qBAAqB;AAAA,UAC7D,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,UAAU,QAAQ,WAAW,OAAO,QAAQ,QAAQ,EAAE,KAAK,EAAE,YAAY,IAAI;AAAA,UAC/E;AAAA,QACF,CAAC;AACD,eAAO,yBAAyB,IAAI;AAAA,MACtC;AAAA,MAEA,MAAM,2BAAuD;AAC3D,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,yBAAyB;AAClE,eAAO,uBAAuB,IAAI;AAAA,MACpC;AAAA,MAEA,MAAM,sBAAwD;AAC5D,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,iBAAiB;AAC3D,eAAO,6BAA6B,IAAI;AAAA,MAC1C;AAAA,MAEA,MAAM,yBAAyB,SAGF;AAC3B,cAAM,cAAc,OAAO,QAAQ,eAAe,EAAE,EAAE,KAAK,EAAE,YAAY;AACzE,YAAI,CAAC,aAAa;AAChB,gBAAM,IAAI,mBAAmB,0BAA0B;AAAA,QACzD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,yBAAyB;AAAA,UACjE,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,UAAU,QAAQ,WAAW,OAAO,QAAQ,QAAQ,EAAE,KAAK,EAAE,YAAY,IAAI;AAAA,UAC/E;AAAA,QACF,CAAC;AACD,eAAO,qBAAqB,IAAI;AAAA,MAClC;AAAA,MAEA,MAAM,2BAAqD;AACzD,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,sBAAsB;AAChE,eAAO,qBAAqB,IAAI;AAAA,MAClC;AAAA,MAEA,MAAM,wBAAmD;AACvD,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,eAAe;AACxD,eAAO,sBAAsB,IAAI;AAAA,MACnC;AAAA,MAEA,MAAM,yBAAyB,SAA8C;AAC3E,YAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B,gBAAM,IAAI,mBAAmB,oCAAoC;AAAA,QACnE;AACA,cAAM,oBAAoB,QACvB,IAAI,CAAC,SAAS;AACb,cAAI,OAAO,SAAS,UAAU;AAC5B,kBAAM,IAAI,mBAAmB,oCAAoC;AAAA,UACnE;AACA,iBAAO,KAAK,KAAK,EAAE,YAAY;AAAA,QACjC,CAAC,EACA,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;AACnC,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,iBAAiB;AAAA,UACxD,WAAW,EAAE,SAAS,kBAAkB;AAAA,QAC1C,CAAC;AACD,eAAO,sBAAsB,IAAI;AAAA,MACnC;AAAA,MAEA,MAAM,yBAAmD;AACvD,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,eAAe;AACxD,cAAM,YAAY,MAAM,QAAQ,KAAK,SAAS,IAC1C,KAAK,UAAU,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,IAC/E,CAAC;AACL,eAAO,UAAU,IAAI,CAAC,SAAS,mBAAmB,IAAI,CAAC;AAAA,MACzD;AAAA,MAEA,MAAM,qBAAqB,UAAkD;AAC3E,cAAM,oBAAoB,OAAO,YAAY,EAAE,EAAE,KAAK;AACtD,YAAI,CAAC,mBAAmB;AACtB,gBAAM,IAAI,mBAAmB,uBAAuB;AAAA,QACtD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,iBAAiB;AAAA,UACzD,WAAW,EAAE,UAAU,kBAAkB;AAAA,QAC3C,CAAC;AACD,eAAO,2BAA2B,MAAM,EAAE,gBAAgB,kBAAkB,CAAC;AAAA,MAC/E;AAAA,MAEA,MAAM,wBAAwB,UAAkD;AAC9E,cAAM,oBAAoB,OAAO,YAAY,EAAE,EAAE,KAAK;AACtD,YAAI,CAAC,mBAAmB;AACtB,gBAAM,IAAI,mBAAmB,uBAAuB;AAAA,QACtD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,iBAAiB,iBAAiB,SAAS;AAIpF,cAAM,gBAAgB,QAAS,KAA0B,EAAE,IAAI,YAAY;AAC3E,eAAO,2BAA2B,MAAM;AAAA,UACtC,gBAAgB;AAAA,UAChB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,4BACJ,MACA,UAA6B,CAAC,GACK;AACnC,cAAM,iBAAiB,OAAO,QAAQ,EAAE,EAAE,KAAK;AAC/C,YAAI,CAAC,gBAAgB;AACnB,gBAAM,IAAI,mBAAmB,mBAAmB;AAAA,QAClD;AACA,cAAM,UAAmC,EAAE,MAAM,eAAe;AAChE,YAAI,QAAQ,SAAS,UAAa,OAAO,QAAQ,IAAI,EAAE,KAAK,GAAG;AAC7D,kBAAQ,OAAO,OAAO,QAAQ,IAAI,EAAE,KAAK,EAAE,YAAY;AAAA,QACzD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,SAAS,EAAE,WAAW,QAAQ,CAAC;AACzE,eAAO,8BAA8B,IAAI;AAAA,MAC3C;AAAA,MAEA,MAAM,uBAAuB,YAAyD;AACpF,cAAM,sBAAsB,OAAO,cAAc,EAAE,EAAE,KAAK;AAC1D,YAAI,CAAC,qBAAqB;AACxB,gBAAM,IAAI,mBAAmB,yBAAyB;AAAA,QACxD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,UAAU,YAAY,mBAAmB,EAAE;AAC7E,eAAO,gCAAgC,IAAI;AAAA,MAC7C;AAAA,MAEA,MAAM,qBACJ,UAA+C,CAAC,GACL;AAC3C,cAAM,SAAuE,CAAC;AAC9E,YAAI,QAAQ,WAAW,UAAa,OAAO,QAAQ,MAAM,EAAE,KAAK,GAAG;AACjE,iBAAO,SAAS,OAAO,QAAQ,MAAM,EAAE,KAAK;AAAA,QAC9C;AACA,YAAI,QAAQ,UAAU,QAAW;AAC/B,iBAAO,QAAQ,OAAO,QAAQ,KAAK;AAAA,QACrC;AACA,cAAM,iBAAiB,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,EAAE,OAAO,IAAI;AACrE,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,YAAY,cAAc;AACzE,cAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,0BAA0B,IAAI,CAAC,IAC1H,CAAC;AACL,cAAM,cAAc,aAAa,KAAK,WAAW;AACjD,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,OAAO,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,QAAQ,SAAS;AAAA,UACtE,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,UACxD;AAAA,UACA,WAAW,cACP,CAAC,WAAW,KAAK,qBAAqB,EAAE,QAAQ,OAAO,QAAQ,MAAM,CAAC,IACtE;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,mBAAmB,WAA2C;AAClE,cAAM,qBAAqB,OAAO,aAAa,EAAE,EAAE,KAAK;AACxD,YAAI,CAAC,oBAAoB;AACvB,gBAAM,IAAI,mBAAmB,wBAAwB;AAAA,QACvD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,YAAY,kBAAkB,EAAE;AACzE,eAAO,mBAAmB,IAAI;AAAA,MAChC;AAAA,MAEA,MAAM,oBACJ,UAA+C,CAAC,GACb;AACnC,cAAM,SAAuE,CAAC;AAC9E,YAAI,QAAQ,WAAW,UAAa,OAAO,QAAQ,MAAM,EAAE,KAAK,GAAG;AACjE,iBAAO,SAAS,OAAO,QAAQ,MAAM,EAAE,KAAK;AAAA,QAC9C;AACA,YAAI,QAAQ,UAAU,QAAW;AAC/B,iBAAO,QAAQ,OAAO,QAAQ,KAAK;AAAA,QACrC;AACA,cAAM,iBAAiB,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,EAAE,OAAO,IAAI;AACrE,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,WAAW,cAAc;AACxE,cAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,kBAAkB,IAAI,CAAC,IAClH,CAAC;AACL,cAAM,cAAc,aAAa,KAAK,WAAW;AACjD,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,OAAO,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,QAAQ,SAAS;AAAA,UACtE,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,UACxD;AAAA,UACA,WAAW,cACP,CAAC,WAAW,KAAK,oBAAoB,EAAE,QAAQ,OAAO,QAAQ,MAAM,CAAC,IACrE;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,kBAAkB,UAAyC;AAC/D,cAAM,oBAAoB,OAAO,YAAY,EAAE,EAAE,KAAK;AACtD,YAAI,CAAC,mBAAmB;AACtB,gBAAM,IAAI,mBAAmB,uBAAuB;AAAA,QACtD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,WAAW,iBAAiB,EAAE;AACvE,eAAO,kBAAkB,IAAI;AAAA,MAC/B;AAAA,MAEA,MAAM,wBACJ,UACA,QACA,eACA,UAA+B,CAAC,GACI;AACpC,cAAM,oBAAoB,OAAO,YAAY,EAAE,EAAE,KAAK;AACtD,cAAM,kBAAkB,OAAO,UAAU,EAAE,EAAE,KAAK;AAClD,cAAM,yBAAyB,OAAO,iBAAiB,EAAE,EAAE,KAAK;AAChE,YAAI,CAAC,mBAAmB;AACtB,gBAAM,IAAI,mBAAmB,uBAAuB;AAAA,QACtD;AACA,YAAI,CAAC,iBAAiB;AACpB,gBAAM,IAAI,mBAAmB,qBAAqB;AAAA,QACpD;AACA,YAAI,CAAC,wBAAwB;AAC3B,gBAAM,IAAI,mBAAmB,4BAA4B;AAAA,QAC3D;AACA,cAAM,UAAmC;AAAA,UACvC,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,eAAe;AAAA,QACjB;AACA,YAAI,QAAQ,WAAW,UAAa,OAAO,QAAQ,MAAM,EAAE,KAAK,GAAG;AACjE,kBAAQ,SAAS,OAAO,QAAQ,MAAM,EAAE,KAAK;AAAA,QAC/C;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,aAAa,EAAE,WAAW,QAAQ,CAAC;AAC7E,eAAO,+BAA+B,IAAI;AAAA,MAC5C;AAAA,MAEA,MAAM,UACJ,UACA,UAA4E,CAAC,GACvD;AACtB,cAAM,oBAAoB,OAAO,YAAY,EAAE,EAAE,KAAK;AACtD,YAAI,CAAC,mBAAmB;AACtB,gBAAM,IAAI,mBAAmB,uBAAuB;AAAA,QACtD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,WAAW,iBAAiB,YAAY;AAAA,UAC/E,QAAQ;AAAA,YACN,MAAM,QAAQ;AAAA,YACd,KAAK,QAAQ;AAAA,YACb,QAAQ,QAAQ;AAAA,YAChB,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,EAAE,CAAC;AAAA,UAClE;AAAA,QACF,CAAC;AACD,eAAO,WAAW,IAAI;AAAA,MACxB;AAAA;AAAA;AAAA,MAIA,MAAM,iBACJ,UAA6F,CAAC,GAC5C;AAClD,cAAM,SAAS;AAAA,UACb,MAAM,QAAQ,OAAO,OAAO,QAAQ,IAAI,EAAE,KAAK,EAAE,YAAY,IAAI;AAAA,UACjE,MAAM,QAAQ,OAAO,OAAO,QAAQ,IAAI,EAAE,KAAK,EAAE,YAAY,IAAI;AAAA,UACjE,QAAQ,QAAQ;AAAA,UAChB,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,EAAE,CAAC;AAAA,UAChE,OAAO,QAAQ,QAAQ,OAAO,QAAQ,KAAK,EAAE,KAAK,IAAI;AAAA,QACxD;AACA,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,SAAS,EAAE,OAAO,CAAC;AAClE,cAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,2BAA2B,IAAI,CAAC,IAC3H,CAAC;AACL,cAAM,cAAc,aAAa,KAAK,WAAW;AACjD,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,OAAO,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,OAAO;AAAA,UAC5D,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,UACxD;AAAA,UACA,WAAW,cACP,CAAC,WAAW,KAAK,iBAAiB,EAAE,GAAG,SAAS,OAAO,CAAC,IACxD;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,oBAAoB,YAAmD;AAC3E,cAAM,sBAAsB,OAAO,cAAc,EAAE,EAAE,KAAK;AAC1D,YAAI,CAAC,qBAAqB;AACxB,gBAAM,IAAI,mBAAmB,yBAAyB;AAAA,QACxD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,YAAY,mBAAmB,EAAE;AAC1E,eAAO,0BAA0B,IAAI;AAAA,MACvC;AAAA,MAEA,MAAM,0BAA0B,aAAyD;AACvF,YAAI,CAAC,MAAM,QAAQ,WAAW,GAAG;AAC/B,gBAAM,IAAI,mBAAmB,wCAAwC;AAAA,QACvE;AACA,cAAM,gBAAgB,YACnB,IAAI,CAAC,SAAS;AACb,cAAI,OAAO,SAAS,UAAU;AAC5B,kBAAM,IAAI,mBAAmB,wCAAwC;AAAA,UACvE;AACA,iBAAO,KAAK,KAAK;AAAA,QACnB,CAAC,EACA,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;AACnC,YAAI,cAAc,WAAW,GAAG;AAC9B,gBAAM,IAAI,mBAAmB,mDAAmD;AAAA,QAClF;AACA,YAAI,cAAc,SAAS,IAAI;AAC7B,gBAAM,IAAI,mBAAmB,0CAA0C;AAAA,QACzE;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,YAAY,EAAE,QAAQ,EAAE,KAAK,cAAc,KAAK,GAAG,EAAE,EAAE,CAAC;AACjG,eAAO,MAAM,QAAQ,KAAK,KAAK,IAC3B,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,2BAA2B,IAAI,CAAC,IAC3H,CAAC;AAAA,MACP;AAAA,MAEA,MAAM,6BACJ,YACA,UAA+C,CAAC,GACnB;AAC7B,cAAM,sBAAsB,OAAO,cAAc,EAAE,EAAE,KAAK;AAC1D,YAAI,CAAC,qBAAqB;AACxB,gBAAM,IAAI,mBAAmB,yBAAyB;AAAA,QACxD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,YAAY,mBAAmB,YAAY;AAAA,UAClF,QAAQ;AAAA,YACN,QAAQ,QAAQ;AAAA,YAChB,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,GAAG,CAAC;AAAA,UACnE;AAAA,QACF,CAAC;AACD,eAAO,wBAAwB,IAAI;AAAA,MACrC;AAAA,MAEA,MAAM,kBAAkB,UAA+C;AACrE,cAAM,oBAAoB,OAAO,YAAY,EAAE,EAAE,KAAK;AACtD,YAAI,CAAC,mBAAmB;AACtB,gBAAM,IAAI,mBAAmB,uBAAuB;AAAA,QACtD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,WAAW,iBAAiB,EAAE;AACvE,eAAO,wBAAwB,IAAI;AAAA,MACrC;AAAA,MAEA,MAAM,qBAAqB,aAAqD;AAC9E,cAAM,uBAAuB,OAAO,eAAe,EAAE,EAAE,KAAK;AAC5D,YAAI,CAAC,sBAAsB;AACzB,gBAAM,IAAI,mBAAmB,0BAA0B;AAAA,QACzD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,aAAa,oBAAoB,EAAE;AAC5E,eAAO,2BAA2B,IAAI;AAAA,MACxC;AAAA,MAEA,MAAM,oBAA0C;AAC9C,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,aAAa,EAAE,SAAS,KAAK,aAAa,EAAE,CAAC;AACtF,eAAO,WAAW,IAAI;AAAA,MACxB;AAAA,MAEA,MAAM,oBAAuD;AAC3D,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,iBAAiB,EAAE,SAAS,KAAK,aAAa,EAAE,CAAC;AAC1F,eAAO,MAAM,QAAQ,KAAK,MAAM,IAC5B,KAAK,OAAO,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,4BAA4B,IAAI,CAAC,IAC7H,CAAC;AAAA,MACP;AAAA,MAEA,MAAM,iBAAmD;AACvD,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,eAAe,EAAE,SAAS,KAAK,aAAa,EAAE,CAAC;AACxF,eAAO,MAAM,QAAQ,KAAK,KAAK,IAC3B,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,2BAA2B,IAAI,CAAC,IAC3H,CAAC;AAAA,MACP;AAAA,MAEA,MAAM,kBAAkB,YAAmD;AACzE,cAAM,sBAAsB,OAAO,cAAc,EAAE,EAAE,KAAK;AAC1D,YAAI,CAAC,qBAAqB;AACxB,gBAAM,IAAI,mBAAmB,yBAAyB;AAAA,QACxD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,kBAAkB,mBAAmB,IAAI,EAAE,SAAS,KAAK,aAAa,EAAE,CAAC;AAClH,eAAO,0BAA0B,IAAI;AAAA,MACvC;AAAA,MAEA,MAAM,iBAAiB,WAA+C;AACpE,cAAM,qBAAqB,OAAO,aAAa,EAAE,EAAE,KAAK;AACxD,YAAI,CAAC,oBAAoB;AACvB,gBAAM,IAAI,mBAAmB,wBAAwB;AAAA,QACvD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,kBAAkB,kBAAkB,IAAI,EAAE,SAAS,KAAK,aAAa,EAAE,CAAC;AACjH,eAAO,uBAAuB,IAAI;AAAA,MACpC;AAAA,MAEA,MAAM,wBACJ,UACA,eACA,SAAkC,CAAC,GACnC,UAA6B,CAAC,GACD;AAC7B,cAAM,gBAAgB,OAAO,iBAAiB,EAAE,EAAE,KAAK;AACvD,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,sBAAsB,UAAU,eAAe,QAAQ,OAAO;AAC9F,eAAO,wBAAwB,MAAM,eAAe,IAAI;AAAA,MAC1D;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,kBACJ,UAOI,CAAC,GACwC;AAC7C,cAAM,kBAAkB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAChF,cAAM,SAAkC;AAAA,UACtC,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,GAAG,CAAC;AAAA,QACnE;AACA,YAAI,QAAQ,WAAW,UAAa,OAAO,QAAQ,MAAM,EAAE,KAAK,GAAG;AACjE,iBAAO,SAAS,OAAO,QAAQ,MAAM,EAAE,KAAK,EAAE,YAAY;AAAA,QAC5D;AACA,YAAI,QAAQ,mBAAmB,UAAa,OAAO,QAAQ,cAAc,EAAE,KAAK,GAAG;AACjF,iBAAO,iBAAiB,OAAO,QAAQ,cAAc,EAAE,KAAK;AAAA,QAC9D;AACA,YAAI,QAAQ,WAAW,UAAa,OAAO,QAAQ,MAAM,EAAE,KAAK,GAAG;AACjE,iBAAO,SAAS,OAAO,QAAQ,MAAM,EAAE,KAAK;AAAA,QAC9C;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B;AAAA,UACA;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,cAAM,QAAQ,MAAM,QAAQ,UAAU,OAAO,KAAK,IAC9C,UAAU,OAAO,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,gBAAgB,IAAI,CAAC,IAC5H,CAAC;AACL,cAAM,cAAc,aAAa,UAAU,OAAO,WAAW;AAC7D,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,OAAO,KAAK,MAAM,OAAO,OAAO,KAAK,CAAC;AAAA,UACtC,MAAM;AAAA,YACJ,YAAY,UAAU,cAAc;AAAA,YACpC,UAAU,UAAU,YAAY;AAAA,UAClC;AAAA,UACA,WAAW,cACP,CAAC,WAAW,KAAK,kBAAkB;AAAA,YACnC,UAAU;AAAA,YACV,QAAQ,QAAQ;AAAA,YAChB,gBAAgB,QAAQ;AAAA,YACxB;AAAA,YACA,OAAO,QAAQ;AAAA,YACf,MAAM,QAAQ;AAAA,UAChB,CAAC,IACC;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,gBACJ,SACA,UAGI,CAAC,GACsB;AAC3B,cAAM,mBAAmB,OAAO,WAAW,EAAE,EAAE,KAAK;AACpD,YAAI,CAAC,kBAAkB;AACrB,gBAAM,IAAI,mBAAmB,sBAAsB;AAAA,QACrD;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,EAAE,SAAS,iBAAiB;AAAA,UAC5B,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,gBAAgB,UAAU,MAAM;AAAA,MACzC;AAAA,MAEA,MAAM,mBAAmB,SAaK;AAC5B,cAAM,kBAAkB,OAAO,QAAQ,SAAS,EAAE,EAAE,KAAK;AACzD,cAAM,6BAA6B,OAAO,QAAQ,qBAAqB,EAAE,EAAE,KAAK;AAChF,cAAM,wBAAwB,OAAO,QAAQ,gBAAgB,EAAE,EAAE,KAAK,EAAE,YAAY;AACpF,YAAI,CAAC,iBAAiB;AACpB,gBAAM,IAAI,mBAAmB,oBAAoB;AAAA,QACnD;AACA,YAAI,CAAC,4BAA4B;AAC/B,gBAAM,IAAI,mBAAmB,gCAAgC;AAAA,QAC/D;AACA,YAAI,CAAC,uBAAuB;AAC1B,gBAAM,IAAI,mBAAmB,2BAA2B;AAAA,QAC1D;AACA,cAAM,WAAW,KAAK,MAAM,OAAO,QAAQ,gBAAgB,CAAC;AAC5D,cAAM,WAAW,KAAK,MAAM,OAAO,QAAQ,gBAAgB,CAAC;AAC5D,YAAI,WAAW,UAAU;AACvB,gBAAM,IAAI,mBAAmB,kDAAkD;AAAA,QACjF;AACA,cAAM,UAAmC;AAAA,UACvC,OAAO;AAAA,UACP,mBAAmB;AAAA,UACnB,cAAc;AAAA,UACd,kBAAkB;AAAA,UAClB,kBAAkB;AAAA,UAClB,SAAS,KAAK,MAAM,OAAO,QAAQ,WAAW,CAAC,CAAC;AAAA,QAClD;AACA,YAAI,QAAQ,mBAAmB,UAAa,OAAO,QAAQ,cAAc,EAAE,KAAK,GAAG;AACjF,kBAAQ,iBAAiB,OAAO,QAAQ,cAAc,EAAE,KAAK;AAAA,QAC/D;AACA,YAAI,QAAQ,mBAAmB;AAC7B,kBAAQ,oBAAoB,SAAS,QAAQ,iBAAiB;AAAA,QAChE;AACA,YAAI,QAAQ,UAAU;AACpB,kBAAQ,WAAW,SAAS,QAAQ,QAAQ;AAAA,QAC9C;AACA,YAAI,QAAQ,WAAW,UAAa,OAAO,QAAQ,MAAM,EAAE,KAAK,GAAG;AACjE,kBAAQ,SAAS,OAAO,QAAQ,MAAM,EAAE,KAAK,EAAE,YAAY;AAAA,QAC7D;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,gBAAgB,UAAU,MAAM;AAAA,MACzC;AAAA,MAEA,MAAM,mBACJ,SACA,UAaI,CAAC,GACsB;AAC3B,cAAM,mBAAmB,OAAO,WAAW,EAAE,EAAE,KAAK;AACpD,YAAI,CAAC,kBAAkB;AACrB,gBAAM,IAAI,mBAAmB,sBAAsB;AAAA,QACrD;AACA,cAAM,UAAmC,EAAE,SAAS,iBAAiB;AACrE,YAAI,QAAQ,mBAAmB,UAAa,OAAO,QAAQ,cAAc,EAAE,KAAK,GAAG;AACjF,kBAAQ,iBAAiB,OAAO,QAAQ,cAAc,EAAE,KAAK;AAAA,QAC/D;AACA,YAAI,QAAQ,UAAU,QAAW;AAC/B,gBAAM,kBAAkB,OAAO,QAAQ,KAAK,EAAE,KAAK;AACnD,cAAI,CAAC,iBAAiB;AACpB,kBAAM,IAAI,mBAAmB,wBAAwB;AAAA,UACvD;AACA,kBAAQ,QAAQ;AAAA,QAClB;AACA,YAAI,QAAQ,sBAAsB,QAAW;AAC3C,gBAAM,6BAA6B,OAAO,QAAQ,iBAAiB,EAAE,KAAK;AAC1E,cAAI,CAAC,4BAA4B;AAC/B,kBAAM,IAAI,mBAAmB,oCAAoC;AAAA,UACnE;AACA,kBAAQ,oBAAoB;AAAA,QAC9B;AACA,YAAI,QAAQ,iBAAiB,QAAW;AACtC,gBAAM,wBAAwB,OAAO,QAAQ,YAAY,EAAE,KAAK,EAAE,YAAY;AAC9E,cAAI,CAAC,uBAAuB;AAC1B,kBAAM,IAAI,mBAAmB,+BAA+B;AAAA,UAC9D;AACA,kBAAQ,eAAe;AAAA,QACzB;AACA,YAAI,QAAQ,qBAAqB,QAAW;AAC1C,kBAAQ,mBAAmB,KAAK,MAAM,OAAO,QAAQ,gBAAgB,CAAC;AAAA,QACxE;AACA,YAAI,QAAQ,qBAAqB,QAAW;AAC1C,kBAAQ,mBAAmB,KAAK,MAAM,OAAO,QAAQ,gBAAgB,CAAC;AAAA,QACxE;AACA,YACE,OAAO,QAAQ,qBAAqB,YACjC,OAAO,QAAQ,qBAAqB,YACpC,QAAQ,mBAAmB,QAAQ,kBACtC;AACA,gBAAM,IAAI,mBAAmB,kDAAkD;AAAA,QACjF;AACA,YAAI,QAAQ,YAAY,QAAW;AACjC,kBAAQ,UAAU,KAAK,MAAM,OAAO,QAAQ,OAAO,CAAC;AAAA,QACtD;AACA,YAAI,QAAQ,mBAAmB;AAC7B,kBAAQ,oBAAoB,SAAS,QAAQ,iBAAiB;AAAA,QAChE;AACA,YAAI,QAAQ,UAAU;AACpB,kBAAQ,WAAW,SAAS,QAAQ,QAAQ;AAAA,QAC9C;AACA,YAAI,QAAQ,WAAW,UAAa,OAAO,QAAQ,MAAM,EAAE,KAAK,GAAG;AACjE,kBAAQ,SAAS,OAAO,QAAQ,MAAM,EAAE,KAAK,EAAE,YAAY;AAAA,QAC7D;AACA,YAAI,OAAO,KAAK,OAAO,EAAE,WAAW,GAAG;AACrC,gBAAM,IAAI,mBAAmB,2DAA2D;AAAA,QAC1F;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,gBAAgB,UAAU,MAAM;AAAA,MACzC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,sBACJ,UAGI,CAAC,GAC2B;AAChC,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK;AAAA,UACxB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,MAAM,QAAQ,KAAK,MAAM,IAC5B,KAAK,OAAO,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,mBAAmB,IAAI,CAAC,IACpH,CAAC;AAAA,MACP;AAAA,MAEA,MAAM,uBACJ,UAGI,CAAC,GAC6B;AAClC,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK;AAAA,UACxB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,uBAAuB,IAAI;AAAA,MACpC;AAAA,MAEA,MAAM,mBAAmB,UAOrB,CAAC,GAAqC;AACxC,cAAM,UAAmC,CAAC;AAC1C,YAAI,QAAQ,YAAY,QAAW;AACjC,kBAAQ,UAAU,OAAO,QAAQ,OAAO,EAAE,KAAK;AAAA,QACjD;AACA,YAAI,QAAQ,gBAAgB,QAAW;AACrC,kBAAQ,cAAc,OAAO,QAAQ,WAAW,EAAE,KAAK;AAAA,QACzD;AACA,YAAI,QAAQ,eAAe,QAAW;AACpC,cAAI,CAAC,MAAM,QAAQ,QAAQ,UAAU,GAAG;AACtC,kBAAM,IAAI,mBAAmB,uCAAuC;AAAA,UACtE;AACA,gBAAM,uBAAiC,CAAC;AACxC,qBAAW,QAAQ,QAAQ,YAAY;AACrC,gBAAI,OAAO,SAAS,UAAU;AAC5B,oBAAM,IAAI,mBAAmB,uCAAuC;AAAA,YACtE;AACA,kBAAM,aAAa,KAAK,KAAK;AAC7B,gBAAI,YAAY;AACd,mCAAqB,KAAK,UAAU;AAAA,YACtC;AAAA,UACF;AACA,kBAAQ,aAAa;AAAA,QACvB;AACA,YAAI,QAAQ,iBAAiB,QAAW;AACtC,cAAI,CAAC,MAAM,QAAQ,QAAQ,YAAY,GAAG;AACxC,kBAAM,IAAI,mBAAmB,yCAAyC;AAAA,UACxE;AACA,gBAAM,yBAAmC,CAAC;AAC1C,qBAAW,QAAQ,QAAQ,cAAc;AACvC,gBAAI,OAAO,SAAS,UAAU;AAC5B,oBAAM,IAAI,mBAAmB,yCAAyC;AAAA,YACxE;AACA,kBAAM,aAAa,KAAK,KAAK;AAC7B,gBAAI,YAAY;AACd,qCAAuB,KAAK,UAAU;AAAA,YACxC;AAAA,UACF;AACA,kBAAQ,eAAe;AAAA,QACzB;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK;AAAA,UACxB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,uBAAuB,IAAI;AAAA,MACpC;AAAA,MAEA,MAAM,0BACJ,UAGI,CAAC,GACyB;AAC9B,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK;AAAA,UACxB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,yBAAyB,SAAS,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;AAAA,MAC1E;AAAA,MAEA,MAAM,2BACJ,UAGI,CAAC,GAC0B;AAC/B,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK;AAAA,UACxB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,0BAA0B,SAAS,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;AAAA,MAC3E;AAAA,MAEA,MAAM,qBACJ,UAGI,CAAC,GAC2B;AAChC,cAAM,kBAAkB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAChF,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK;AAAA,UACxB;AAAA,UACA;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,MAAM,QAAQ,KAAK,MAAM,IAC5B,KAAK,OAAO,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,mBAAmB,IAAI,CAAC,IACpH,CAAC;AAAA,MACP;AAAA,MAEA,MAAM,yCACJ,UAGI,CAAC,GACsC;AAC3C,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK;AAAA,UACxB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,sCAAsC,SAAS,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;AAAA,MACvF;AAAA,MAEA,MAAM,qCACJ,YACA,UA0BI,CAAC,GACqC;AAC1C,cAAM,sBAAsB,OAAO,cAAc,EAAE,EAAE,KAAK;AAC1D,YAAI,CAAC,qBAAqB;AACxB,gBAAM,IAAI,mBAAmB,yBAAyB;AAAA,QACxD;AACA,cAAM,UAAmC,EAAE,YAAY,oBAAoB;AAC3E,YAAI,QAAQ,qBAAqB,UAAa,OAAO,QAAQ,gBAAgB,EAAE,KAAK,GAAG;AACrF,kBAAQ,mBAAmB,OAAO,QAAQ,gBAAgB,EAAE,KAAK;AAAA,QACnE;AACA,YAAI,QAAQ,sBAAsB,QAAW;AAC3C,kBAAQ,oBAAoB,KAAK,MAAM,OAAO,QAAQ,iBAAiB,CAAC;AAAA,QAC1E;AACA,YAAI,QAAQ,sBAAsB,QAAW;AAC3C,kBAAQ,oBAAoB,KAAK,MAAM,OAAO,QAAQ,iBAAiB,CAAC;AAAA,QAC1E;AACA,YAAI,QAAQ,4BAA4B,QAAW;AACjD,kBAAQ,0BAA0B,KAAK,MAAM,OAAO,QAAQ,uBAAuB,CAAC;AAAA,QACtF;AACA,YAAI,QAAQ,wBAAwB,QAAW;AAC7C,kBAAQ,sBAAsB,QAAQ,oBAAoB,OAAO,CAAC,SAAS,OAAO,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC;AAAA,QACvI;AACA,YAAI,QAAQ,+BAA+B,QAAW;AACpD,kBAAQ,6BAA6B,QAAQ,2BAA2B,OAAO,CAAC,SAAS,OAAO,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC;AAAA,QACrJ;AACA,YAAI,QAAQ,eAAe,QAAW;AACpC,kBAAQ,aAAa,KAAK,MAAM,OAAO,QAAQ,UAAU,CAAC;AAAA,QAC5D;AACA,YAAI,QAAQ,qBAAqB,QAAW;AAC1C,kBAAQ,mBAAmB,KAAK,MAAM,OAAO,QAAQ,gBAAgB,CAAC;AAAA,QACxE;AACA,YAAI,QAAQ,2BAA2B,QAAW;AAChD,kBAAQ,yBAAyB,QAAQ,QAAQ,sBAAsB;AAAA,QACzE;AACA,YAAI,QAAQ,qCAAqC,QAAW;AAC1D,kBAAQ,mCAAmC,KAAK,MAAM,OAAO,QAAQ,gCAAgC,CAAC;AAAA,QACxG;AACA,YAAI,QAAQ,iBAAiB,QAAW;AACtC,kBAAQ,eAAe,QAAQ,QAAQ,YAAY;AAAA,QACrD;AACA,YAAI,QAAQ,uBAAuB,QAAW;AAC5C,kBAAQ,qBAAqB,SAAS,QAAQ,kBAAkB;AAAA,QAClE;AACA,YAAI,QAAQ,kBAAkB,UAAa,OAAO,QAAQ,aAAa,EAAE,KAAK,GAAG;AAC/E,kBAAQ,gBAAgB,OAAO,QAAQ,aAAa,EAAE,KAAK;AAAA,QAC7D;AACA,YAAI,QAAQ,2BAA2B,QAAW;AAChD,kBAAQ,yBAAyB,QAAQ,QAAQ,sBAAsB;AAAA,QACzE;AACA,YAAI,QAAQ,+BAA+B,QAAW;AACpD,kBAAQ,6BAA6B,QAAQ,QAAQ,0BAA0B;AAAA,QACjF;AACA,YAAI,QAAQ,uBAAuB,QAAW;AAC5C,kBAAQ,qBAAqB,KAAK,MAAM,OAAO,QAAQ,kBAAkB,CAAC;AAAA,QAC5E;AACA,YAAI,QAAQ,oBAAoB,QAAW;AACzC,kBAAQ,kBAAkB,KAAK,MAAM,OAAO,QAAQ,eAAe,CAAC;AAAA,QACtE;AACA,YAAI,QAAQ,4BAA4B,QAAW;AACjD,kBAAQ,0BAA0B,KAAK,MAAM,OAAO,QAAQ,uBAAuB,CAAC;AAAA,QACtF;AACA,YAAI,QAAQ,gCAAgC,QAAW;AACrD,kBAAQ,8BAA8B,KAAK,MAAM,OAAO,QAAQ,2BAA2B,CAAC;AAAA,QAC9F;AACA,YAAI,QAAQ,kBAAkB,UAAa,OAAO,QAAQ,aAAa,EAAE,KAAK,GAAG;AAC/E,kBAAQ,gBAAgB,OAAO,QAAQ,aAAa,EAAE,KAAK;AAAA,QAC7D;AACA,YAAI,QAAQ,sBAAsB,UAAa,OAAO,QAAQ,iBAAiB,EAAE,KAAK,GAAG;AACvF,kBAAQ,oBAAoB,OAAO,QAAQ,iBAAiB,EAAE,KAAK;AAAA,QACrE;AACA,YAAI,QAAQ,wCAAwC,QAAW;AAC7D,kBAAQ,sCAAsC,QAAQ,oCACnD,OAAO,CAAC,SAAS,OAAO,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,EAC/C,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC;AAAA,QAC/B;AACA,YAAI,QAAQ,mBAAmB,QAAW;AACxC,kBAAQ,iBAAiB,SAAS,QAAQ,cAAc;AAAA,QAC1D;AACA,YAAI,OAAO,KAAK,OAAO,EAAE,WAAW,GAAG;AACrC,gBAAM,IAAI,mBAAmB,oFAAoF;AAAA,QACnH;AACA,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK;AAAA,UAC9B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,qCAAqC,MAAM,yCAAyC,IAAI;AAAA,MACjG;AAAA,MAEA,MAAM,6BACJ,WACA,UAAgD,CAAC,GACV;AACvC,cAAM,qBAAqB,OAAO,aAAa,EAAE,EAAE,KAAK;AACxD,YAAI,CAAC,oBAAoB;AACvB,gBAAM,IAAI,mBAAmB,wBAAwB;AAAA,QACvD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK;AAAA,UACxB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,EAAE,WAAW,mBAAmB;AAAA,UAChC,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,4BAA4B,SAAS,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;AAAA,MAC7E;AAAA,MAEA,MAAM,6BACJ,UAOI,CAAC,GACkC;AACvC,cAAM,UAAmC;AAAA,UACvC,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,GAAG,CAAC;AAAA,UACjE,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,UAAU,CAAC,CAAC;AAAA,QACrD;AACA,YAAI,QAAQ,qBAAqB,UAAa,OAAO,QAAQ,gBAAgB,EAAE,KAAK,GAAG;AACrF,kBAAQ,WAAW,OAAO,QAAQ,gBAAgB,EAAE,KAAK;AAAA,QAC3D;AACA,YAAI,QAAQ,WAAW,UAAa,OAAO,QAAQ,MAAM,EAAE,KAAK,GAAG;AACjE,kBAAQ,SAAS,OAAO,QAAQ,MAAM,EAAE,KAAK;AAAA,QAC/C;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK;AAAA,UACxB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,MAAM,QAAQ,KAAK,MAAM,IAC5B,KAAK,OAAO,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,0BAA0B,IAAI,CAAC,IAC3H,CAAC;AAAA,MACP;AAAA,MAEA,MAAM,2BACJ,YACA,UAAgD,CAAC,GACZ;AACrC,cAAM,sBAAsB,OAAO,cAAc,EAAE,EAAE,KAAK;AAC1D,YAAI,CAAC,qBAAqB;AACxB,gBAAM,IAAI,mBAAmB,yBAAyB;AAAA,QACxD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK;AAAA,UACxB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,EAAE,YAAY,oBAAoB;AAAA,UAClC,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,0BAA0B,SAAS,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;AAAA,MAC3E;AAAA,MAEA,MAAM,iCACJ,YACA,UAAgD,CAAC,GACN;AAC3C,cAAM,sBAAsB,OAAO,cAAc,EAAE,EAAE,KAAK;AAC1D,YAAI,CAAC,qBAAqB;AACxB,gBAAM,IAAI,mBAAmB,yBAAyB;AAAA,QACxD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK;AAAA,UACxB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,EAAE,YAAY,oBAAoB;AAAA,UAClC,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,MAAM,QAAQ,KAAK,MAAM,IAC5B,KAAK,OAAO,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,8BAA8B,IAAI,CAAC,IAC/H,CAAC;AAAA,MACP;AAAA,MAEA,MAAM,sBACJ,UAGI,CAAC,GACsB;AAC3B,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,sBAAsB,UAAU,MAAM;AAAA,MAC/C;AAAA,MAEA,MAAM,kBACJ,UAGI,CAAC,GACkB;AACvB,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,kBAAkB,UAAU,MAAM;AAAA,MAC3C;AAAA,MAEA,MAAM,sBACJ,UAGI,CAAC,GAC2B;AAChC,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,MAAM,QAAQ,UAAU,OAAO,IAAI,IACtC,UAAU,OAAO,KAAK,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,mBAAmB,IAAI,CAAC,IAC9H,CAAC;AAAA,MACP;AAAA,MAEA,MAAM,uBACJ,UAKI,CAAC,GACyB;AAC9B,cAAM,UAAmC,CAAC;AAC1C,YAAI,QAAQ,SAAS,QAAW;AAC9B,gBAAM,iBAAiB,OAAO,QAAQ,IAAI,EAAE,KAAK;AACjD,cAAI,CAAC,gBAAgB;AACnB,kBAAM,IAAI,mBAAmB,uBAAuB;AAAA,UACtD;AACA,kBAAQ,OAAO;AAAA,QACjB;AACA,YAAI,QAAQ,yBAAyB,QAAW;AAC9C,cAAI,CAAC,MAAM,QAAQ,QAAQ,oBAAoB,GAAG;AAChD,kBAAM,IAAI,mBAAmB,iDAAiD;AAAA,UAChF;AACA,kBAAQ,uBAAuB,QAAQ,qBAAqB,QAAQ,CAAC,SAAS;AAC5E,gBAAI,OAAO,SAAS,UAAU;AAC5B,oBAAM,IAAI,mBAAmB,iDAAiD;AAAA,YAChF;AACA,kBAAM,iBAAiB,KAAK,KAAK;AACjC,mBAAO,iBAAiB,CAAC,cAAc,IAAI,CAAC;AAAA,UAC9C,CAAC;AAAA,QACH;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,yBAAyB,UAAU,MAAM;AAAA,MAClD;AAAA,MAEA,MAAM,gBACJ,UAII,CAAC,GACgB;AACrB,cAAM,UAAmC,CAAC;AAC1C,YAAI,QAAQ,SAAS,UAAa,OAAO,QAAQ,IAAI,EAAE,KAAK,GAAG;AAC7D,kBAAQ,OAAO,OAAO,QAAQ,IAAI,EAAE,KAAK,EAAE,YAAY;AAAA,QACzD;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,gBAAgB,UAAU,MAAM;AAAA,MACzC;AAAA,MAEA,MAAM,mBACJ,UAGI,CAAC,GAC0B;AAC/B,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,0BAA0B,UAAU,MAAM;AAAA,MACnD;AAAA,MAEA,MAAM,gBACJ,UAGI,CAAC,GACgB;AACrB,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,gBAAgB,UAAU,MAAM;AAAA,MACzC;AAAA,MAEA,MAAM,mBACJ,UAGI,CAAC,GACyB;AAC9B,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,CAAC;AAAA,UACD,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,MAAM,QAAQ,UAAU,OAAO,SAAS,IAC3C,UAAU,OAAO,UAAU,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,iBAAiB,IAAI,CAAC,IACjI,CAAC;AAAA,MACP;AAAA,MAEA,MAAM,wBACJ,aACA,UAGI,CAAC,GAC6B;AAClC,cAAM,uBAAuB,OAAO,eAAe,EAAE,EAAE,KAAK;AAC5D,YAAI,CAAC,sBAAsB;AACzB,gBAAM,IAAI,mBAAmB,0BAA0B;AAAA,QACzD;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,EAAE,aAAa,qBAAqB;AAAA,UACpC,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,MAAM,QAAQ,UAAU,OAAO,KAAK,IACvC,UAAU,OAAO,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,qBAAqB,IAAI,CAAC,IACjI,CAAC;AAAA,MACP;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,sBACJ,UAWI,CAAC,GAC4C;AACjD,cAAM,kBAAkB,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAChF,cAAM,SAAkC;AAAA,UACtC,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,GAAG,CAAC;AAAA,QACnE;AACA,mBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ;AAAA,UACxC,QAAQ,QAAQ;AAAA,UAChB,gBAAgB,QAAQ;AAAA,UACxB,YAAY,QAAQ;AAAA,UACpB,SAAS,QAAQ;AAAA,UACjB,iBAAiB,QAAQ;AAAA,UACzB,gBAAgB,QAAQ;AAAA,UACxB,QAAQ,QAAQ;AAAA,QAClB,CAAC,GAAG;AACF,cAAI,UAAU,UAAa,OAAO,KAAK,EAAE,KAAK,GAAG;AAC/C,mBAAO,GAAG,IAAI,OAAO,KAAK,EAAE,KAAK;AAAA,UACnC;AAAA,QACF;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B;AAAA,UACA;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,cAAM,QAAQ,MAAM,QAAQ,UAAU,OAAO,KAAK,IAC9C,UAAU,OAAO,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,oBAAoB,IAAI,CAAC,IAChI,CAAC;AACL,cAAM,cAAc,aAAa,UAAU,OAAO,WAAW;AAC7D,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,OAAO,KAAK,MAAM,OAAO,OAAO,KAAK,CAAC;AAAA,UACtC,MAAM;AAAA,YACJ,YAAY,UAAU,cAAc;AAAA,YACpC,UAAU,UAAU,YAAY;AAAA,UAClC;AAAA,UACA,WAAW,cACP,CAAC,WAAW,KAAK,sBAAsB;AAAA,YACvC,UAAU;AAAA,YACV,QAAQ,QAAQ;AAAA,YAChB,gBAAgB,QAAQ;AAAA,YACxB,YAAY,QAAQ;AAAA,YACpB,SAAS,QAAQ;AAAA,YACjB,iBAAiB,QAAQ;AAAA,YACzB,gBAAgB,QAAQ;AAAA,YACxB;AAAA,YACA,OAAO,QAAQ;AAAA,YACf,MAAM,QAAQ;AAAA,UAChB,CAAC,IACC;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,oBACJ,aACA,UAGI,CAAC,GAC0B;AAC/B,cAAM,uBAAuB,OAAO,eAAe,EAAE,EAAE,KAAK;AAC5D,YAAI,CAAC,sBAAsB;AACzB,gBAAM,IAAI,mBAAmB,0BAA0B;AAAA,QACzD;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA,EAAE,aAAa,qBAAqB;AAAA,UACpC,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,oBAAoB,UAAU,MAAM;AAAA,MAC7C;AAAA,MAEA,MAAM,uBAAuB,SAiBW;AACtC,cAAM,0BAA0B,OAAO,QAAQ,kBAAkB,EAAE,EAAE,KAAK;AAC1E,YAAI,CAAC,yBAAyB;AAC5B,gBAAM,IAAI,mBAAmB,6BAA6B;AAAA,QAC5D;AACA,cAAM,UAAmC,EAAE,gBAAgB,wBAAwB;AACnF,YAAI,QAAQ,kBAAkB,UAAa,OAAO,QAAQ,aAAa,EAAE,KAAK,GAAG;AAC/E,kBAAQ,gBAAgB,OAAO,QAAQ,aAAa,EAAE,KAAK,EAAE,YAAY;AAAA,QAC3E;AACA,YAAI,QAAQ,aAAa,UAAa,OAAO,QAAQ,QAAQ,EAAE,KAAK,GAAG;AACrE,kBAAQ,WAAW,OAAO,QAAQ,QAAQ,EAAE,KAAK,EAAE,YAAY;AAAA,QACjE;AACA,YAAI,QAAQ,iBAAiB,QAAW;AACtC,kBAAQ,eAAe,KAAK,MAAM,OAAO,QAAQ,YAAY,CAAC;AAAA,QAChE;AACA,YAAI,QAAQ,sBAAsB;AAChC,kBAAQ,uBAAuB,SAAS,QAAQ,oBAAoB;AAAA,QACtE;AACA,YAAI,QAAQ,sBAAsB,QAAW;AAC3C,kBAAQ,oBAAoB,QAAQ,QAAQ,iBAAiB;AAAA,QAC/D;AACA,mBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ;AAAA,UACxC,mBAAmB,QAAQ;AAAA,UAC3B,qBAAqB,QAAQ;AAAA,UAC7B,YAAY,QAAQ;AAAA,UACpB,cAAc,QAAQ;AAAA,UACtB,WAAW,QAAQ;AAAA,UACnB,iBAAiB,QAAQ;AAAA,UACzB,mBAAmB,QAAQ;AAAA,UAC3B,YAAY,QAAQ;AAAA,QACtB,CAAC,GAAG;AACF,cAAI,UAAU,UAAa,OAAO,KAAK,EAAE,KAAK,GAAG;AAC/C,oBAAQ,GAAG,IAAI,OAAO,KAAK,EAAE,KAAK;AAAA,UACpC;AAAA,QACF;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,gCAAgC,SAAS;AAAA,MAClD;AAAA,MAEA,MAAM,wBACJ,aACA,UAcI,CAAC,GACgC;AACrC,cAAM,uBAAuB,OAAO,eAAe,EAAE,EAAE,KAAK;AAC5D,YAAI,CAAC,sBAAsB;AACzB,gBAAM,IAAI,mBAAmB,0BAA0B;AAAA,QACzD;AACA,cAAM,UAAmC,EAAE,aAAa,qBAAqB;AAC7E,YAAI,QAAQ,kBAAkB,UAAa,OAAO,QAAQ,aAAa,EAAE,KAAK,GAAG;AAC/E,kBAAQ,gBAAgB,OAAO,QAAQ,aAAa,EAAE,KAAK,EAAE,YAAY;AAAA,QAC3E;AACA,YAAI,QAAQ,sBAAsB;AAChC,kBAAQ,uBAAuB,SAAS,QAAQ,oBAAoB;AAAA,QACtE;AACA,YAAI,QAAQ,sBAAsB,QAAW;AAC3C,kBAAQ,oBAAoB,QAAQ,QAAQ,iBAAiB;AAAA,QAC/D;AACA,mBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ;AAAA,UACxC,mBAAmB,QAAQ;AAAA,UAC3B,qBAAqB,QAAQ;AAAA,UAC7B,YAAY,QAAQ;AAAA,UACpB,cAAc,QAAQ;AAAA,UACtB,WAAW,QAAQ;AAAA,UACnB,iBAAiB,QAAQ;AAAA,UACzB,mBAAmB,QAAQ;AAAA,UAC3B,YAAY,QAAQ;AAAA,QACtB,CAAC,GAAG;AACF,cAAI,UAAU,UAAa,OAAO,KAAK,EAAE,KAAK,GAAG;AAC/C,oBAAQ,GAAG,IAAI,OAAO,KAAK,EAAE,KAAK;AAAA,UACpC;AAAA,QACF;AACA,YAAI,OAAO,KAAK,OAAO,EAAE,WAAW,GAAG;AACrC,gBAAM,IAAI,mBAAmB,0EAA0E;AAAA,QACzG;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,gCAAgC,SAAS;AAAA,MAClD;AAAA,MAEA,MAAM,uBACJ,aACA,UAWI,CAAC,GACgC;AACrC,cAAM,uBAAuB,OAAO,eAAe,EAAE,EAAE,KAAK;AAC5D,YAAI,CAAC,sBAAsB;AACzB,gBAAM,IAAI,mBAAmB,0BAA0B;AAAA,QACzD;AACA,cAAM,UAAmC,EAAE,aAAa,qBAAqB;AAC7E,YAAI,QAAQ,YAAY,UAAa,OAAO,QAAQ,OAAO,EAAE,KAAK,GAAG;AACnE,kBAAQ,UAAU,OAAO,QAAQ,OAAO,EAAE,KAAK;AAAA,QACjD;AACA,YAAI,QAAQ,sBAAsB,QAAW;AAC3C,kBAAQ,oBAAoB,QAAQ,QAAQ,iBAAiB;AAAA,QAC/D;AACA,mBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ;AAAA,UACxC,mBAAmB,QAAQ;AAAA,UAC3B,qBAAqB,QAAQ;AAAA,UAC7B,YAAY,QAAQ;AAAA,UACpB,cAAc,QAAQ;AAAA,UACtB,iBAAiB,QAAQ;AAAA,UACzB,mBAAmB,QAAQ;AAAA,QAC7B,CAAC,GAAG;AACF,cAAI,UAAU,UAAa,OAAO,KAAK,EAAE,KAAK,GAAG;AAC/C,oBAAQ,GAAG,IAAI,OAAO,KAAK,EAAE,KAAK;AAAA,UACpC;AAAA,QACF;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,gCAAgC,SAAS;AAAA,MAClD;AAAA,MAEA,MAAM,uBACJ,aACA,UAII,CAAC,GACgC;AACrC,cAAM,uBAAuB,OAAO,eAAe,EAAE,EAAE,KAAK;AAC5D,YAAI,CAAC,sBAAsB;AACzB,gBAAM,IAAI,mBAAmB,0BAA0B;AAAA,QACzD;AACA,cAAM,UAAmC,EAAE,aAAa,qBAAqB;AAC7E,YAAI,QAAQ,YAAY,UAAa,OAAO,QAAQ,OAAO,EAAE,KAAK,GAAG;AACnE,kBAAQ,UAAU,OAAO,QAAQ,OAAO,EAAE,KAAK;AAAA,QACjD;AACA,cAAM,YAAY,MAAM,KAAK;AAAA,UAC3B,MAAM,KAAK,6BAA6B,QAAQ,QAAQ;AAAA,UACxD;AAAA,UACA;AAAA,UACA,EAAE,MAAM,QAAQ,KAAK;AAAA,QACvB;AACA,eAAO,gCAAgC,SAAS;AAAA,MAClD;AAAA,MAEA,MAAM,qBACJ,UACA,cACA,UAOI,CAAC,GACkB;AACvB,cAAM,oBAAoB,OAAO,YAAY,EAAE,EAAE,KAAK;AACtD,cAAM,wBAAwB,OAAO,gBAAgB,EAAE,EAAE,KAAK;AAC9D,YAAI,CAAC,mBAAmB;AACtB,gBAAM,IAAI,mBAAmB,uBAAuB;AAAA,QACtD;AACA,YAAI,CAAC,uBAAuB;AAC1B,gBAAM,IAAI,mBAAmB,2BAA2B;AAAA,QAC1D;AACA,aAAK,QAAQ;AACb,cAAM,UAAmC;AAAA,UACvC,OAAO,EAAE,cAAc,sBAAsB;AAAA,QAC/C;AACA,YAAI,QAAQ,MAAM;AAChB,kBAAQ,OAAO,OAAO,QAAQ,IAAI,EAAE,KAAK,EAAE,YAAY;AAAA,QACzD;AACA,YAAI,QAAQ,gBAAgB;AAC1B,kBAAQ,iBAAiB,SAAS,QAAQ,cAAc;AAAA,QAC1D;AACA,YAAI,QAAQ,wBAAwB;AAClC,kBAAQ,yBAAyB,SAAS,QAAQ,sBAAsB;AAAA,QAC1E;AACA,YAAI,QAAQ,iBAAiB;AAC3B,kBAAQ,kBAAkB,SAAS,QAAQ,eAAe;AAAA,QAC5D;AACA,YAAI,QAAQ,aAAa;AACvB,kBAAQ,cAAc,SAAS,QAAQ,WAAW;AAAA,QACpD;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,iBAAiB,iBAAiB,YAAY;AAAA,UACrF,WAAW;AAAA,QACb,CAAC;AACD,eAAO,kBAAkB,IAAI;AAAA,MAC/B;AAAA,MAEA,MAAM,uBACJ,UACA,QACA,UAA6C,CAAC,GACrB;AACzB,cAAM,oBAAoB,OAAO,YAAY,EAAE,EAAE,KAAK;AACtD,YAAI,CAAC,mBAAmB;AACtB,gBAAM,IAAI,mBAAmB,uBAAuB;AAAA,QACtD;AACA,cAAM,gBAAgB,SAAS,MAAM;AACrC,cAAM,gBAAgB;AAAA,UACpB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,cAAM,UAAU,OAAO;AAAA,UACrB,cACG,OAAO,CAAC,UAAU,cAAc,KAAK,MAAM,UAAa,cAAc,KAAK,MAAM,IAAI,EACrF,IAAI,CAAC,UAAU,CAAC,OAAO,cAAc,KAAK,CAAC,CAAC;AAAA,QACjD;AACA,YAAI,OAAO,KAAK,OAAO,EAAE,WAAW,GAAG;AACrC,gBAAM,IAAI,mBAAmB,mEAAmE;AAAA,QAClG;AACA,aAAK,QAAQ;AACb,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,iBAAiB,iBAAiB,oBAAoB;AAAA,UAC7F,WAAW;AAAA,QACb,CAAC;AACD,eAAO,oBAAoB,IAAI;AAAA,MACjC;AAAA,MAEA,MAAM,qBACJ,UACA,QACA,UAA6C,CAAC,GACvB;AACvB,cAAM,oBAAoB,OAAO,YAAY,EAAE,EAAE,KAAK;AACtD,YAAI,CAAC,mBAAmB;AACtB,gBAAM,IAAI,mBAAmB,uBAAuB;AAAA,QACtD;AACA,cAAM,gBAAgB,SAAS,MAAM;AACrC,cAAM,gBAAgB;AAAA,UACpB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,cAAM,iBAAiB,oBAAI,IAAY,CAAC,gBAAgB,YAAY,CAAC;AACrE,cAAM,UAAmC,CAAC;AAC1C,mBAAW,SAAS,eAAe;AACjC,cAAI,CAAC,OAAO,UAAU,eAAe,KAAK,eAAe,KAAK,GAAG;AAC/D;AAAA,UACF;AACA,gBAAM,QAAQ,cAAc,KAAK;AACjC,cAAI,UAAU,QAAW;AACvB;AAAA,UACF;AACA,cAAI,UAAU,QAAQ,CAAC,eAAe,IAAI,KAAK,GAAG;AAChD;AAAA,UACF;AACA,kBAAQ,KAAK,IAAI;AAAA,QACnB;AACA,YAAI,OAAO,KAAK,OAAO,EAAE,WAAW,GAAG;AACrC,gBAAM,IAAI,mBAAmB,iEAAiE;AAAA,QAChG;AACA,aAAK,QAAQ;AACb,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,iBAAiB,iBAAiB,WAAW;AAAA,UACpF,WAAW;AAAA,QACb,CAAC;AACD,eAAO,kBAAkB,IAAI;AAAA,MAC/B;AAAA,MAEA,MAAM,mBAAmB,UAKrB,CAAC,GAAiD;AACpD,cAAM,SAAS;AAAA,UACb,QAAQ,QAAQ;AAAA,UAChB,UAAU,QAAQ;AAAA,UAClB,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,GAAG,CAAC;AAAA,UACjE,QAAQ,QAAQ;AAAA,QAClB;AACA,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,yBAAyB,EAAE,OAAO,CAAC;AAClF,cAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,gBAAgB,IACjG,CAAC;AACL,cAAM,cAAc,aAAa,KAAK,WAAW;AACjD,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,OAAO,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,OAAO;AAAA,UAC5D,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,UACxD;AAAA,UACA,WAAW,cACP,CAAC,WAAW,KAAK,mBAAmB,EAAE,GAAG,SAAS,OAAO,CAAC,IAC1D;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,oBACJ,UACA,SAC6B;AAC7B,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,yBAAyB,QAAQ,eAAe;AAAA,UAC9F,WAAW;AAAA,YACT,UAAU,QAAQ;AAAA,YAClB,gBAAgB,QAAQ,kBAAkB;AAAA,UAC5C;AAAA,QACF,CAAC;AACD,eAAO;AAAA,UACL,SAAS,aAAa,SAAS,KAAK,OAAO,CAAC;AAAA,UAC5C,cAAc,iBAAiB,SAAS,KAAK,YAAY,CAAC;AAAA,UAC1D,UAAU,KAAK;AAAA,UACf,YAAY,KAAK;AAAA,UACjB,KAAK,EAAE,GAAG,KAAK;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,MAAM,wBAAwB,UAK1B,CAAC,GAAsD;AACzD,cAAM,SAAS;AAAA,UACb,cAAc,QAAQ;AAAA,UACtB,aAAa,QAAQ;AAAA,UACrB,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,GAAG,CAAC;AAAA,UACjE,QAAQ,QAAQ;AAAA,QAClB;AACA,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,8BAA8B,EAAE,OAAO,CAAC;AACvF,cAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,qBAAqB,IACtG,CAAC;AACL,cAAM,cAAc,aAAa,KAAK,WAAW;AACjD,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,OAAO,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,OAAO;AAAA,UAC5D,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,UACxD;AAAA,UACA,WAAW,cACP,CAAC,WAAW,KAAK,wBAAwB,EAAE,GAAG,SAAS,OAAO,CAAC,IAC/D;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,oBACJ,SACA,MACA,UAMI,CAAC,GACuB;AAC5B,cAAM,UAAU,QAAQ,KAAK;AAC7B,cAAM,UAAU,KAAK,KAAK;AAC1B,cAAM,kBAAkB,UAAU,GAAG,OAAO;AAAA;AAAA,EAAO,OAAO,KAAK;AAC/D,YAAI,CAAC,iBAAiB;AACpB,gBAAM,IAAI,mBAAmB,2CAA2C;AAAA,QAC1E;AACA,YAAI,gBAAgB,SAAS,KAAM;AACjC,gBAAM,IAAI,mBAAmB,yEAAyE;AAAA,QACxG;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,yBAAyB;AAAA,UACjE,WAAW;AAAA,YACT,WAAW,QAAQ,aAAa;AAAA,YAChC,SAAS;AAAA,YACT,aAAa,QAAQ,eAAe;AAAA,YACpC,gBAAgB,QAAQ;AAAA,YACxB,UAAU,QAAQ;AAAA,YAClB,UAAU,QAAQ;AAAA,UACpB;AAAA,QACF,CAAC;AACD,eAAO,iBAAiB,IAAI;AAAA,MAC9B;AAAA,MAEA,MAAM,mBAAmB,UAMrB,CAAC,GAAiD;AACpD,cAAM,SAAS;AAAA,UACb,gBAAgB,QAAQ;AAAA,UACxB,UAAU,QAAQ;AAAA,UAClB,QAAQ,QAAQ;AAAA,UAChB,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,GAAG,CAAC;AAAA,UACjE,QAAQ,QAAQ;AAAA,QAClB;AACA,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,yBAAyB,EAAE,OAAO,CAAC;AAClF,cAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,gBAAgB,IACjG,CAAC;AACL,cAAM,cAAc,aAAa,KAAK,WAAW;AACjD,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,OAAO,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,OAAO;AAAA,UAC5D,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,UACxD;AAAA,UACA,WAAW,cACP,CAAC,WAAW,KAAK,mBAAmB,EAAE,GAAG,SAAS,OAAO,CAAC,IAC1D;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,4BAA4B,SAKK;AACrC,cAAM,uBAAuB,QAAQ,YAClC,IAAI,CAAC,SAAS,OAAO,IAAI,EAAE,KAAK,CAAC,EACjC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;AACnC,YAAI,qBAAqB,WAAW,GAAG;AACrC,gBAAM,IAAI,mBAAmB,2DAA2D;AAAA,QAC1F;AACA,cAAM,UAAmC,EAAE,cAAc,QAAQ,aAAa;AAC9E,YAAI,QAAQ,aAAa;AACvB,kBAAQ,cAAc,QAAQ;AAAA,QAChC;AACA,gBAAQ,cAAc;AACtB,YAAI,QAAQ,UAAU;AACpB,kBAAQ,WAAW,QAAQ;AAAA,QAC7B;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,kCAAkC,EAAE,WAAW,QAAQ,CAAC;AAClG,eAAO,2BAA2B,IAAI;AAAA,MACxC;AAAA,MAEA,MAAM,6BAAmE;AACvE,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,WAAW,OAAO,gCAAgC;AAC5E,YAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACxB,gBAAM,IAAI,mBAAmB,4DAA4D;AAAA,QAC3F;AACA,eAAO,KAAK,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,0BAA0B;AAAA,MAC9G;AAAA,MAEA,MAAM,yBAAyB,iBAA6D;AAC1F,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,kCAAkC,eAAe,EAAE;AAC5F,eAAO,2BAA2B,IAAI;AAAA,MACxC;AAAA,MAEA,MAAM,mCAAmC,iBAA6D;AACpG,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,kCAAkC,eAAe,gBAAgB;AAC3G,eAAO,2BAA2B,IAAI;AAAA,MACxC;AAAA,MAEA,MAAM,2BAA2B,iBAA6D;AAC5F,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,kCAAkC,eAAe,QAAQ;AACnG,eAAO,2BAA2B,IAAI;AAAA,MACxC;AAAA,MAEA,MAAM,4BAA4B,iBAA6D;AAC7F,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,kCAAkC,eAAe,SAAS;AACpG,eAAO,2BAA2B,IAAI;AAAA,MACxC;AAAA,MAEA,MAAM,wBAAwB,UAK1B,CAAC,GAAqC;AACxC,cAAM,SAAS;AAAA,UACb,iBAAiB,QAAQ;AAAA,UACzB,YAAY,QAAQ;AAAA,UACpB,QAAQ,QAAQ;AAAA,UAChB,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,EAAE,GAAG,GAAG,CAAC;AAAA,QACnE;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,WAAW,OAAO,+BAA+B,EAAE,OAAO,CAAC;AACrF,YAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACxB,gBAAM,IAAI,mBAAmB,yDAAyD;AAAA,QACxF;AACA,eAAO,KAAK,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,sBAAsB;AAAA,MAC1G;AAAA,MAEA,MAAM,2BAA2B,aAAqD;AACpF,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,+BAA+B,WAAW,YAAY;AAChG,eAAO,uBAAuB,IAAI;AAAA,MACpC;AAAA,MAEA,MAAM,2BAA2B,SAID;AAC9B,cAAM,UAAmC,EAAE,YAAY,QAAQ,WAAW;AAC1E,YAAI,QAAQ,kBAAkB;AAC5B,kBAAQ,mBAAmB,QAAQ,iBAAiB,OAAO,CAAC,SAAS,OAAO,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;AAAA,QACrG;AACA,YAAI,QAAQ,MAAM;AAChB,kBAAQ,OAAO,QAAQ;AAAA,QACzB;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,oCAAoC,EAAE,WAAW,QAAQ,CAAC;AACpG,eAAO,2BAA2B,IAAI;AAAA,MACxC;AAAA,MAEA,MAAM,sBAAsB,UAIxB,CAAC,GAA8B;AACjC,cAAM,cAAc,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,SAAS,EAAE,CAAC;AAC/D,cAAM,WAA6B,CAAC;AACpC,YAAI,SAAwB;AAC5B,cAAM,cAAc,oBAAI,IAAY;AACpC,eAAO,SAAS,SAAS,aAAa;AACpC,gBAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,yBAAyB;AAAA,YAChE,QAAQ;AAAA,cACN,QAAQ,QAAQ;AAAA,cAChB,SAAS,QAAQ;AAAA,cACjB;AAAA,cACA,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,cAAc,SAAS,QAAQ,GAAG,CAAC;AAAA,YACjE;AAAA,UACF,CAAC;AACD,gBAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,qBAAqB,IACtG,CAAC;AACL,mBAAS,KAAK,GAAG,KAAK;AACtB,mBAAS,aAAa,KAAK,WAAW;AACtC,cAAI,CAAC,UAAU,YAAY,IAAI,MAAM,GAAG;AACtC;AAAA,UACF;AACA,sBAAY,IAAI,MAAM;AAAA,QACxB;AACA,eAAO,SAAS,MAAM,GAAG,WAAW;AAAA,MACtC;AAAA,MAEA,MAAM,oBACJ,YACA,UAAwE,CAAC,GAChD;AACzB,cAAM,sBAAsB,OAAO,cAAc,EAAE,EAAE,KAAK;AAC1D,YAAI,CAAC,qBAAqB;AACxB,gBAAM,IAAI,mBAAmB,yBAAyB;AAAA,QACxD;AACA,YAAI,YAAY,QAAQ,SAAS,OAAO,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,KAAK,CAAC;AACpF,YAAI,SAAwB;AAC5B,cAAM,cAAc,oBAAI,IAAY;AACpC,eAAO,MAAM;AACX,gBAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,yBAAyB;AAAA,YAChE,QAAQ;AAAA,cACN,QAAQ,QAAQ;AAAA,cAChB,SAAS,QAAQ;AAAA,cACjB;AAAA,cACA,OAAO,aAAa,OAAO,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,WAAW,GAAG,CAAC;AAAA,YACvE;AAAA,UACF,CAAC;AACD,gBAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,qBAAqB,IACtG,CAAC;AACL,gBAAM,QAAQ,MAAM,KAAK,CAAC,SAAS,KAAK,eAAe,mBAAmB;AAC1E,cAAI,OAAO;AACT,mBAAO;AAAA,UACT;AACA,cAAI,aAAa,MAAM;AACrB,yBAAa,aAAa,OAAO,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,WAAW,GAAG,CAAC;AACzE,gBAAI,aAAa,GAAG;AAClB;AAAA,YACF;AAAA,UACF;AACA,mBAAS,aAAa,KAAK,WAAW;AACtC,cAAI,CAAC,UAAU,YAAY,IAAI,MAAM,GAAG;AACtC;AAAA,UACF;AACA,sBAAY,IAAI,MAAM;AAAA,QACxB;AACA,cAAM,IAAI,qBAAqB,8BAA8B,mBAAmB,EAAE;AAAA,MACpF;AAAA,MAEA,MAAM,yBAAyB,UAAqD,CAAC,GAAiC;AACpH,cAAM,cAAc,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,SAAS,EAAE,CAAC;AAC/D,cAAM,WAAgC,CAAC;AACvC,YAAI,SAAwB;AAC5B,cAAM,cAAc,oBAAI,IAAY;AACpC,eAAO,SAAS,SAAS,aAAa;AACpC,gBAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,yBAAyB;AAAA,YAChE,QAAQ;AAAA,cACN,cAAc,QAAQ;AAAA,cACtB;AAAA,cACA,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,cAAc,SAAS,QAAQ,GAAG,CAAC;AAAA,YACjE;AAAA,UACF,CAAC;AACD,gBAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,wBAAwB,IACzG,CAAC;AACL,mBAAS,KAAK,GAAG,KAAK;AACtB,mBAAS,aAAa,KAAK,WAAW;AACtC,cAAI,CAAC,UAAU,YAAY,IAAI,MAAM,GAAG;AACtC;AAAA,UACF;AACA,sBAAY,IAAI,MAAM;AAAA,QACxB;AACA,eAAO,SAAS,MAAM,GAAG,WAAW;AAAA,MACtC;AAAA,MAEA,MAAM,uBACJ,YACA,UAA4D,CAAC,GACjC;AAC5B,cAAM,sBAAsB,OAAO,cAAc,EAAE,EAAE,KAAK;AAC1D,YAAI,CAAC,qBAAqB;AACxB,gBAAM,IAAI,mBAAmB,yBAAyB;AAAA,QACxD;AACA,YAAI,YAAY,QAAQ,SAAS,OAAO,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,KAAK,CAAC;AACpF,YAAI,SAAwB;AAC5B,cAAM,cAAc,oBAAI,IAAY;AACpC,eAAO,MAAM;AACX,gBAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,yBAAyB;AAAA,YAChE,QAAQ;AAAA,cACN,cAAc,QAAQ;AAAA,cACtB;AAAA,cACA,OAAO,aAAa,OAAO,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,WAAW,GAAG,CAAC;AAAA,YACvE;AAAA,UACF,CAAC;AACD,gBAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,wBAAwB,IACzG,CAAC;AACL,gBAAM,QAAQ,MAAM,KAAK,CAAC,SAAS,KAAK,eAAe,uBAAuB,KAAK,qBAAqB,mBAAmB;AAC3H,cAAI,OAAO;AACT,mBAAO;AAAA,UACT;AACA,cAAI,aAAa,MAAM;AACrB,yBAAa,aAAa,OAAO,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,WAAW,GAAG,CAAC;AACzE,gBAAI,aAAa,GAAG;AAClB;AAAA,YACF;AAAA,UACF;AACA,mBAAS,aAAa,KAAK,WAAW;AACtC,cAAI,CAAC,UAAU,YAAY,IAAI,MAAM,GAAG;AACtC;AAAA,UACF;AACA,sBAAY,IAAI,MAAM;AAAA,QACxB;AACA,cAAM,IAAI,qBAAqB,iCAAiC,mBAAmB,EAAE;AAAA,MACvF;AAAA,MAEA,MAAM,2BAA2B,SAAoF;AACnH,cAAM,mBAAmB,OAAO,QAAQ,WAAW,EAAE,EAAE,KAAK;AAC5D,YAAI,CAAC,kBAAkB;AACrB,gBAAM,IAAI,mBAAmB,sBAAsB;AAAA,QACrD;AACA,cAAM,aAAa,iBAAiB,YAAY;AAChD,YAAI,YAAY,QAAQ,SAAS,OAAO,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,KAAK,CAAC;AACpF,YAAI,SAAwB;AAC5B,cAAM,cAAc,oBAAI,IAAY;AACpC,eAAO,MAAM;AACX,gBAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,yBAAyB;AAAA,YAChE,QAAQ;AAAA,cACN;AAAA,cACA,OAAO,aAAa,OAAO,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,WAAW,GAAG,CAAC;AAAA,YACvE;AAAA,UACF,CAAC;AACD,gBAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAClC,KAAK,MAAM,OAAO,CAAC,SAA0C,SAAS,IAAI,CAAC,EAAE,IAAI,wBAAwB,IACzG,CAAC;AACL,gBAAM,QAAQ,MAAM,KAAK,CAAC,SAAS;AACjC,kBAAM,OAAO,OAAO,KAAK,gBAAgB,EAAE,EAAE,YAAY;AACzD,gBAAI,CAAC,KAAK,SAAS,QAAQ,KAAK,CAAC,KAAK,SAAS,SAAS,GAAG;AACzD,qBAAO;AAAA,YACT;AACA,kBAAM,aAAa,CAAC,KAAK,SAAS,KAAK,qBAAqB,KAAK,cAAc,EAC5E,IAAI,CAAC,MAAM,OAAO,KAAK,EAAE,EAAE,YAAY,CAAC,EACxC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;AAC7B,mBAAO,WAAW,SAAS,UAAU;AAAA,UACvC,CAAC;AACD,cAAI,OAAO;AACT,mBAAO,6BAA6B,CAAC,GAAG,EAAE,SAAS,MAAM,CAAC;AAAA,UAC5D;AACA,cAAI,aAAa,MAAM;AACrB,yBAAa,aAAa,OAAO,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,WAAW,GAAG,CAAC;AACzE,gBAAI,aAAa,GAAG;AAClB;AAAA,YACF;AAAA,UACF;AACA,mBAAS,aAAa,KAAK,WAAW;AACtC,cAAI,CAAC,UAAU,YAAY,IAAI,MAAM,GAAG;AACtC;AAAA,UACF;AACA,sBAAY,IAAI,MAAM;AAAA,QACxB;AACA,cAAM,IAAI,qBAAqB,qCAAqC,gBAAgB,EAAE;AAAA,MACxF;AAAA,MAEA,MAAM,yBAAyB,SAKC;AAC9B,cAAM,gBAAgB,OAAO,QAAQ,iBAAiB,EAAE,EAAE,KAAK,EAAE,YAAY;AAC7E,cAAM,cAAc,OAAO,QAAQ,eAAe,EAAE,EAAE,KAAK,EAAE,YAAY;AACzE,YAAI,CAAC,eAAe;AAClB,gBAAM,IAAI,mBAAmB,4BAA4B;AAAA,QAC3D;AACA,YAAI,CAAC,aAAa;AAChB,gBAAM,IAAI,mBAAmB,0BAA0B;AAAA,QACzD;AACA,YAAI,CAAC,OAAO,SAAS,QAAQ,mBAAmB,GAAG;AACjD,gBAAM,IAAI,mBAAmB,8CAA8C;AAAA,QAC7E;AACA,cAAM,sBAAsB,KAAK,MAAM,QAAQ,mBAAmB;AAClE,YAAI,uBAAuB,GAAG;AAC5B,gBAAM,IAAI,mBAAmB,uCAAuC;AAAA,QACtE;AACA,cAAM,iBAAiB,QAAQ,gBAAgB;AAC/C,YAAI,CAAC,OAAO,SAAS,cAAc,GAAG;AACpC,gBAAM,IAAI,mBAAmB,uCAAuC;AAAA,QACtE;AACA,cAAM,eAAe,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,cAAc,GAAG,GAAI,CAAC;AAC3E,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,2BAA2B;AAAA,UACnE,WAAW;AAAA,YACT,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,cAAc;AAAA,YACd;AAAA,UACF;AAAA,QACF,CAAC;AACD,eAAO,2BAA2B,IAAI;AAAA,MACxC;AAAA,MAEA,MAAc,6BAA6B,UAAoC;AAC7E,cAAM,kBAAkB,OAAO,YAAY,EAAE,EAAE,KAAK;AACpD,YAAI,iBAAiB;AACnB,iBAAO;AAAA,QACT;AACA,cAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,OAAO,WAAW;AAMpD,cAAM,gBACJ,aAAa,KAAK,QAAQ,KAAK,aAAa,KAAK,EAAE;AACrD,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AACA,cAAM,IAAI,mBAAmB,uBAAuB;AAAA,MACtD;AAAA,MAEA,MAAc,sBACZ,UACA,eACA,SAAkC,CAAC,GACnC,UAA6B,CAAC,GACH;AAC3B,cAAM,oBAAoB,OAAO,YAAY,EAAE,EAAE,KAAK;AACtD,cAAM,gBAAgB,OAAO,iBAAiB,EAAE,EAAE,KAAK;AACvD,YAAI,CAAC,mBAAmB;AACtB,gBAAM,IAAI,mBAAmB,uBAAuB;AAAA,QACtD;AACA,YAAI,CAAC,eAAe;AAClB,gBAAM,IAAI,mBAAmB,4BAA4B;AAAA,QAC3D;AACA,eAAO,KAAK,QAAQ,QAAQ,iBAAiB,iBAAiB,uBAAuB;AAAA,UACnF,WAAW;AAAA,YACT,WAAW;AAAA,YACX,QAAQ,SAAS,MAAM;AAAA,YACvB,MAAM,OAAO,QAAQ,QAAQ,IAAI,EAAE,KAAK,EAAE,YAAY,MAAM,OAAO,OAAO;AAAA,UAC5E;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA,MAAc,QAAQ,QAAgB,MAAc,UAA0B,CAAC,GAA8B;AAC3G,cAAM,CAAC,MAAM,IAAI,IAAI,MAAM,KAAK,WAAW,QAAQ,MAAM,OAAO;AAChE,YAAI,CAAC,SAAS,IAAI,GAAG;AACnB,gBAAM,IAAI,mBAAmB,yDAAyD;AAAA,QACxF;AACA,eAAO,CAAC,MAAM,IAAI;AAAA,MACpB;AAAA,MAEA,MAAc,WAAW,QAAgB,MAAc,UAA0B,CAAC,GAA6B;AAC7G,cAAM,MAAM,SAAS,KAAK,UAAU,MAAM,QAAQ,MAAM;AACxD,cAAM,UAAU,IAAI,QAAQ;AAAA,UAC1B,eAAe,UAAU,KAAK,OAAO;AAAA,UACrC,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB,CAAC;AACD,YAAI,QAAQ,SAAS;AACnB,qBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,OAAO,GAAG;AAC1D,oBAAQ,IAAI,KAAK,KAAK;AAAA,UACxB;AAAA,QACF;AACA,YAAI;AACJ,YAAI,QAAQ,WAAW;AACrB,kBAAQ,IAAI,gBAAgB,kBAAkB;AAC9C,iBAAO,KAAK,UAAU,WAAW,QAAQ,SAAS,CAAC;AAAA,QACrD;AAEA,iBAAS,UAAU,GAAG,UAAU,KAAK,aAAa,WAAW,GAAG;AAC9D,gBAAM,aAAa,IAAI,gBAAgB;AACvC,gBAAM,gBAAgB,WAAW,MAAM,WAAW,MAAM,GAAG,KAAK,UAAU;AAC1E,cAAI;AACF,kBAAM,WAAW,MAAM,KAAK,UAAU,KAAK;AAAA,cACzC;AAAA,cACA;AAAA,cACA;AAAA,cACA,QAAQ,WAAW;AAAA,YACrB,CAAC;AACD,yBAAa,aAAa;AAC1B,kBAAM,OAAO,SAAS,WAAW,MAAM,KAAK,MAAM,SAAS,KAAK;AAChE,kBAAM,SAAS,OAAO,KAAK,cAAc,IAAI,IAAI,CAAC;AAClD,kBAAM,WAAW,SAAS,MAAM,IAAI,SAAS,CAAC;AAC9C,kBAAM,OAAO,MAAM,QAAQ,SAAS,IAAI,IACpC,SAAS,KAAK,IAAI,CAAC,SAAS,cAAc,IAAI,CAAC,IAC/C,SAAS,SAAS,IAAI,IACpB,SAAS,OACT,SAAS,MAAM,IACb,SACA,MAAM,QAAQ,MAAM,IAClB,OAAO,IAAI,CAAC,SAAS,cAAc,IAAI,CAAC,IACxC,CAAC;AACX,kBAAM,OAAqB,SAAS,SAAS,IAAI,IAC7C;AAAA,cACE,YAAY,aAAa,SAAS,KAAK,UAAU;AAAA,cACjD,UAAU,aAAa,SAAS,KAAK,QAAQ;AAAA,YAC/C,IACA;AAAA,cACE,YAAY,aAAa,SAAS,QAAQ,IAAI,cAAc,CAAC;AAAA,cAC7D,UAAU,aAAa,SAAS,QAAQ,IAAI,YAAY,CAAC;AAAA,YAC3D;AAEJ,gBAAI,SAAS,IAAI;AACf,qBAAO,CAAC,MAAM,IAAI;AAAA,YACpB;AAEA,gBAAI,uBAAuB,IAAI,SAAS,MAAM,KAAK,UAAU,IAAI,KAAK,aAAa;AACjF,oBAAM,MAAM,gBAAgB,SAAS,QAAQ,IAAI,aAAa,CAAC,KAAM,MAAO,KAAK,OAAS;AAC1F;AAAA,YACF;AAEA,kBAAM,aAAa,SAAS,SAAS,KAAK,IAAI,SAAS,QAAQ,CAAC;AAChE,kBAAM,UAAU;AAAA,cACd,WAAW,YACR,SAAS,MAAM,IAAI,OAAO,UAAU,WACrC,SAAS,cACT;AAAA,YACJ;AACA,kBAAM,aAAa,aAAa,WAAW,IAAI,KAAK;AACpD,gBAAI,SAAS,WAAW,KAAK;AAC3B,oBAAM,IAAI,qBAAqB,OAAO;AAAA,YACxC;AACA,kBAAM,IAAI,gBAAgB,SAAS;AAAA,cACjC,aAAa,SAAS;AAAA,cACtB;AAAA,cACA,UAAU,KAAK;AAAA,cACf,YAAY,KAAK;AAAA,cACjB,SAAS,SAAS,WAAW,OAAO;AAAA,cACpC,eAAe;AAAA,YACjB,CAAC;AAAA,UACH,SAAS,OAAO;AACd,yBAAa,aAAa;AAC1B,gBAAI,iBAAiB,mBAAmB,iBAAiB,sBAAsB;AAC7E,oBAAM;AAAA,YACR;AACA,gBAAI,UAAU,IAAI,KAAK,aAAa;AAClC,oBAAM,MAAM,MAAO,KAAK,OAAQ;AAChC;AAAA,YACF;AACA,gBAAI,iBAAiB,OAAO;AAC1B,oBAAM,IAAI,mBAAmB,MAAM,OAAO;AAAA,YAC5C;AACA,kBAAM,IAAI,mBAAmB,yBAAyB;AAAA,UACxD;AAAA,QACF;AACA,cAAM,IAAI,mBAAmB,uCAAuC;AAAA,MACtE;AAAA,MAEQ,cAAc,MAAuB;AAC3C,YAAI;AACF,iBAAO,KAAK,MAAM,IAAI;AAAA,QACxB,QAAQ;AACN,iBAAO,CAAC;AAAA,QACV;AAAA,MACF;AAAA,MAEQ,eAAuC;AAC7C,YAAI,CAAC,KAAK,WAAW;AACnB,gBAAM,IAAI,mBAAmB,2FAA2F;AAAA,QAC1H;AACA,eAAO,EAAE,eAAe,KAAK,UAAU;AAAA,MACzC;AAAA,IACF;AAAA;AAAA;;;ACpwJA;AAAA;AAAA;AAAA;AAAA;AA2MO,SAAS,qBAAqB,QAAkC;AACrE,QAAM,iBAAiB,OAAO,OAAO,kBAAkB,EAAE,EAAE,KAAK;AAChE,MAAI,CAAC,gBAAgB;AACnB,UAAM,IAAI,mBAAmB,yCAAyC;AAAA,EACxE;AACA,QAAM,YAAY,OAAO,OAAO,aAAa,EAAE,EAAE,KAAK;AACtD,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,mBAAmB,oCAAoC;AAAA,EACnE;AACA,QAAM,cAAc,OAAO,OAAO,eAAe,EAAE,EAAE,KAAK;AAC1D,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,mBAAmB,sCAAsC;AAAA,EACrE;AACA,QAAM,kBAAkB,iBAAiB,OAAO,eAAe;AAC/D,QAAM,QAAQ,yBAAyB,OAAO,OAAO,mBAAmB;AACxE,QAAM,WAAW,aAAa,OAAO,QAAQ,KAAK;AAClD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,EACjC;AACF;AAEA,SAAS,uBAAuB,MAAkD;AAChF,SAAO;AAAA,IACL,UAAU,QAAQ,KAAK,YAAY,KAAK;AAAA,IACxC,aAAa,OAAO,KAAK,eAAe,KAAK,mBAAmB,EAAE;AAAA,IAClE,WAAW,aAAa,KAAK,aAAa,KAAK,kBAAkB,KAAK,EAAE;AAAA,IACxE,UAAU,QAAQ,KAAK,YAAY,KAAK;AAAA,IACxC,gBAAgB,aAAa,KAAK,cAAc;AAAA,IAChD,UAAU,aAAa,KAAK,QAAQ;AAAA,IACpC,YAAY,aAAa,KAAK,UAAU;AAAA,IACxC,KAAK,EAAE,GAAG,KAAK;AAAA,EACjB;AACF;AAEA,SAAS,yBAAyB,OAAgB,WAA2B;AAC3E,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK,GAAG;AACxD,QAAI,QAAQ,GAAG;AACb,YAAM,IAAI,mBAAmB,GAAG,SAAS,kCAAkC;AAAA,IAC7E;AACA,WAAO;AAAA,EACT;AACA,MAAI,OAAO,UAAU,YAAY,WAAW,KAAK,MAAM,KAAK,CAAC,GAAG;AAC9D,UAAM,SAAS,OAAO,SAAS,MAAM,KAAK,GAAG,EAAE;AAC/C,QAAI,SAAS,GAAG;AACd,YAAM,IAAI,mBAAmB,GAAG,SAAS,kCAAkC;AAAA,IAC7E;AACA,WAAO;AAAA,EACT;AACA,QAAM,IAAI,mBAAmB,GAAG,SAAS,kCAAkC;AAC7E;AAEA,SAAS,iBAAiB,OAAwB;AAChD,QAAM,OAAO,OAAO,SAAS,EAAE,EAAE,KAAK;AACtC,MAAI,CAAC,MAAM;AACT,UAAM,IAAI,mBAAmB,0CAA0C;AAAA,EACzE;AACA,QAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,MAAI,OAAO,MAAM,MAAM,KAAK,CAAE,yBAAyB,KAAK,IAAI,GAAI;AAClE,UAAM,IAAI,mBAAmB,4DAA4D;AAAA,EAC3F;AACA,SAAO;AACT;AAEA,SAASC,UACP,SACA,MACA,SAAuE,CAAC,GAChE;AACR,QAAM,iBAAiB,IAAI,KAAK,QAAQ,QAAQ,EAAE,CAAC;AACnD,QAAM,MAAM,IAAI,IAAI,UAAU,cAAc;AAC5C,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,QAAI,UAAU,UAAa,UAAU,QAAQ,UAAU,IAAI;AACzD;AAAA,IACF;AACA,QAAI,aAAa,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA,EACzC;AACA,SAAO,IAAI,SAAS;AACtB;AAEA,SAAS,cAAc,MAAuB;AAC5C,MAAI,CAAC,MAAM;AACT,WAAO,CAAC;AAAA,EACV;AACA,MAAI;AACF,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAxSA,IAYMC,yBACA,gBACA,YAyCO;AAvDb;AAAA;AAAA;AAAA;AACA;AAEA;AASA,IAAMA,0BAAyB,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAChE,IAAM,iBAAiB;AACvB,IAAM,aAAa;AAyCZ,IAAM,cAAN,MAAkB;AAAA,MACd,eAAe;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEjB,YAAY,SAA6B;AACvC,aAAK,SAAS,IAAI,cAAc,OAAO;AACvC,aAAK,UAAU,KAAK,OAAO;AAC3B,aAAK,YAAY,QAAQ,YAAY,0BAA0B,QAAQ,QAAQ,EAAE;AACjF,aAAK,aAAa,KAAK,IAAI,GAAG,QAAQ,cAAc,IAAM;AAC1D,aAAK,cAAc,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,eAAe,CAAC,CAAC;AACnE,aAAK,YAAY,QAAQ,SAAS;AAAA,MACpC;AAAA,MAEA,QAAc;AACZ,aAAK,OAAO,MAAM;AAAA,MACpB;AAAA,MAEA,MAAM,OAAO,QAAiD;AAC5D,cAAM,CAAC,MAAM,IAAI,MAAM,KAAK,aAAa,CAAC,MAAM,CAAC;AACjD,YAAI,CAAC,QAAQ;AACX,gBAAM,IAAI,mBAAmB,8DAA8D;AAAA,QAC7F;AACA,eAAO;AAAA,MACT;AAAA,MAEA,MAAM,aAAa,SAAsD;AACvE,cAAM,aAAa,QAAQ,IAAI,CAAC,WAAW,qBAAqB,MAAM,CAAC;AACvE,YAAI,WAAW,WAAW,GAAG;AAC3B,iBAAO,CAAC;AAAA,QACV;AAEA,cAAM,UAA+B,CAAC;AACtC,iBAAS,QAAQ,GAAG,QAAQ,WAAW,QAAQ,SAAS,gBAAgB;AACtE,gBAAM,QAAQ,WAAW,MAAM,OAAO,QAAQ,cAAc;AAC5D,gBAAM,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,QAAQ,wBAAwB;AAAA,YAChE,WAAW,EAAE,QAAQ,MAAM;AAAA,UAC7B,CAAC;AACD,cAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC9B,kBAAM,IAAI,mBAAmB,iEAAiE;AAAA,UAChG;AACA,qBAAW,QAAQ,KAAK,OAAO;AAC7B,gBAAI,SAAS,IAAI,GAAG;AAClB,sBAAQ,KAAK,uBAAuB,IAAI,CAAC;AAAA,YAC3C;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,MAEA,MAAM,kBAAkB,UAQpB,CAAC,GAA0C;AAC7C,eAAO,KAAK,OAAO,UAAU,OAAO;AAAA,MACtC;AAAA,MAEA,MAAc,QAAQ,QAAgB,MAAc,UAA0B,CAAC,GAA8B;AAC3G,cAAM,MAAMD,UAAS,KAAK,UAAU,MAAM,QAAQ,MAAM;AACxD,cAAM,UAAU,IAAI,QAAQ;AAAA,UAC1B,eAAe,UAAU,KAAK,OAAO;AAAA,UACrC,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB,CAAC;AACD,YAAI;AACJ,YAAI,QAAQ,WAAW;AACrB,kBAAQ,IAAI,gBAAgB,kBAAkB;AAC9C,iBAAO,KAAK,UAAU,WAAW,QAAQ,SAAS,CAAC;AAAA,QACrD;AAEA,iBAAS,UAAU,GAAG,UAAU,KAAK,aAAa,WAAW,GAAG;AAC9D,gBAAM,aAAa,IAAI,gBAAgB;AACvC,gBAAM,gBAAgB,WAAW,MAAM,WAAW,MAAM,GAAG,KAAK,UAAU;AAC1E,cAAI;AACF,kBAAM,WAAW,MAAM,KAAK,UAAU,KAAK;AAAA,cACzC;AAAA,cACA;AAAA,cACA;AAAA,cACA,QAAQ,WAAW;AAAA,YACrB,CAAC;AACD,yBAAa,aAAa;AAC1B,kBAAM,OAAO,SAAS,WAAW,MAAM,KAAK,MAAM,SAAS,KAAK;AAChE,kBAAM,SAAS,cAAc,IAAI;AACjC,kBAAM,WAAW,SAAS,MAAM,IAAI,SAAS,CAAC;AAC9C,kBAAM,OAAO,SAAS,SAAS,IAAI,IAAI,SAAS,OAAO,SAAS,MAAM,IAAI,SAAS,CAAC;AACpF,kBAAM,OAAqB,SAAS,SAAS,IAAI,IAC7C;AAAA,cACE,YAAY,aAAa,SAAS,KAAK,UAAU;AAAA,cACjD,UAAU,aAAa,SAAS,KAAK,QAAQ;AAAA,YAC/C,IACA;AAAA,cACE,YAAY,aAAa,SAAS,QAAQ,IAAI,cAAc,CAAC;AAAA,cAC7D,UAAU,aAAa,SAAS,QAAQ,IAAI,YAAY,CAAC;AAAA,YAC3D;AACJ,gBAAI,SAAS,IAAI;AACf,qBAAO,CAAC,MAAM,IAAI;AAAA,YACpB;AACA,gBAAIC,wBAAuB,IAAI,SAAS,MAAM,KAAK,UAAU,IAAI,KAAK,aAAa;AACjF,oBAAM,MAAM,gBAAgB,SAAS,QAAQ,IAAI,aAAa,CAAC,KAAM,MAAO,KAAK,OAAS;AAC1F;AAAA,YACF;AACA,kBAAM,aAAa,SAAS,SAAS,KAAK,IAAI,SAAS,QAAQ,CAAC;AAChE,kBAAM,UAAU;AAAA,cACd,WAAW,YACR,SAAS,MAAM,IAAI,OAAO,UAAU,WACrC,SAAS,cACT;AAAA,YACJ;AACA,kBAAM,YAAY,aAAa,WAAW,IAAI,KAAK;AACnD,gBAAI,SAAS,WAAW,KAAK;AAC3B,oBAAM,IAAI,qBAAqB,OAAO;AAAA,YACxC;AACA,kBAAM,IAAI,gBAAgB,SAAS;AAAA,cACjC,aAAa,SAAS;AAAA,cACtB,YAAY;AAAA,cACZ,UAAU,KAAK,YAAY;AAAA,cAC3B,YAAY,KAAK,cAAc;AAAA,cAC/B,SAAS,SAAS,WAAW,OAAO;AAAA,cACpC,eAAe;AAAA,YACjB,CAAC;AAAA,UACH,SAAS,OAAO;AACd,yBAAa,aAAa;AAC1B,gBAAI,iBAAiB,mBAAmB,iBAAiB,sBAAsB;AAC7E,oBAAM;AAAA,YACR;AACA,gBAAI,UAAU,IAAI,KAAK,aAAa;AAClC,oBAAM,MAAM,MAAO,KAAK,OAAQ;AAChC;AAAA,YACF;AACA,gBAAI,iBAAiB,OAAO;AAC1B,oBAAM,IAAI,mBAAmB,MAAM,OAAO;AAAA,YAC5C;AACA,kBAAM,IAAI,mBAAmB,yBAAyB;AAAA,UACxD;AAAA,QACF;AACA,cAAM,IAAI,mBAAmB,uCAAuC;AAAA,MACtE;AAAA,IACF;AAAA;AAAA;;;ACvMA;AACA;AAHA,SAAS,SAAS,sBAAsB;;;ACAxC,SAAS,kBAAkB;AAC3B,SAAS,OAAO,SAAS,UAAU,iBAAiB;AACpD,SAAS,eAAe;AACxB,SAAS,UAAU,SAAS,MAAM,eAAe;AAEjD,SAAS,kBAAkB;;;ACJ3B;AAEA,IAAM,4BAAoD;AAAA,EACxD,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,SAAS;AACX;AACA,IAAM,+BAAuD;AAAA,EAC3D,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AACX;AACA,IAAM,wBAAwB,oBAAI,IAAI;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,2BAA2B,oBAAI,IAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,cAAc;AAAA,EACzB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AACR;AAGO,IAAM,iBAAiB,YAAY;AAWnC,SAAS,cAAc,SAGjB;AACX,QAAM,aAAa,kBAAkB,QAAQ,GAAG;AAChD,QAAM,aAAa,kBAAkB,QAAQ,GAAG;AAChD,QAAM,UAAoB,CAAC;AAC3B,QAAM,cAAc,oBAAI,IAAY;AAEpC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,EACF;AAEA,aAAW,OAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,OAAO,KAAK,UAAU,GAAG,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG;AAC/F,QAAI,YAAY,IAAI,GAAG,KAAK,sBAAsB,IAAI,GAAG,GAAG;AAC1D;AAAA,IACF;AACA,UAAM,WAAW,WAAW,GAAG;AAC/B,UAAM,WAAW,WAAW,GAAG;AAC/B,QAAI,aAAa,UAAU,QAAQ,GAAG;AACpC,cAAQ,KAAK,aAAa,YAAY,MAAM,KAAK,UAAU,UAAU,mBAAmB,GAAG,YAAY,CAAC;AAAA,IAC1G;AAAA,EACF;AAEA,SAAO,YAAY,OAAO;AAC5B;AAEO,SAAS,iBAAiB,SAGpB;AACX,QAAM,aAAa,oBAAoB,QAAQ,GAAG;AAClD,QAAM,aAAa,oBAAoB,QAAQ,GAAG;AAClD,QAAM,UAAoB,CAAC;AAC3B,QAAM,cAAc,oBAAI,IAAY;AAEpC,QAAM,cAAcC,YAAW,cAAc,WAAW,YAAY,EAAE,QAAQ;AAC9E,QAAM,cAAcA,YAAW,cAAc,WAAW,YAAY,EAAE,QAAQ;AAC9E,QAAM,gBAAgB,CAAC,GAAG,IAAI,IAAI,YAAY,OAAO,CAAC,cAAc,CAAC,YAAY,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK;AAC7G,QAAM,kBAAkB,CAAC,GAAG,IAAI,IAAI,YAAY,OAAO,CAAC,cAAc,CAAC,YAAY,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK;AAC/G,MAAI,cAAc,SAAS,GAAG;AAC5B,YAAQ;AAAA,MACN;AAAA,QACE,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,oDAAoD,cAAc,KAAK,IAAI,CAAC;AAAA,MAC9E;AAAA,IACF;AACA,gBAAY,IAAI,cAAc;AAAA,EAChC;AACA,MAAI,gBAAgB,SAAS,GAAG;AAC9B,YAAQ;AAAA,MACN;AAAA,QACE,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,yCAAyC,gBAAgB,KAAK,IAAI,CAAC;AAAA,MACrE;AAAA,IACF;AACA,gBAAY,IAAI,cAAc;AAAA,EAChC;AAEA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,EACF;AACA,MAAI,aAAa,WAAW,qBAAqB,WAAW,mBAAmB,GAAG;AAChF,UAAM,gBAAgB,WAAW,uBAAuB;AACxD,UAAM,gBAAgB,WAAW,uBAAuB;AACxD,UAAM,QACJ,QAAQ,aAAa,KAAK,CAAC,QAAQ,aAAa,IAC5C,YAAY,WACZ,CAAC,QAAQ,aAAa,KAAK,QAAQ,aAAa,IAC9C,YAAY,OACZ,YAAY;AACpB,UAAM,UACJ,QAAQ,aAAa,KAAK,CAAC,QAAQ,aAAa,IAC5C,sFACA,CAAC,QAAQ,aAAa,KAAK,QAAQ,aAAa,IAC9C,gDACA;AACR,YAAQ;AAAA,MACN;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,gBAAY,IAAI,qBAAqB;AAAA,EACvC;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,EACF;AAEA,QAAM,sBAAsB,cAAc,cAAc,WAAW,aAAa,EAAE,UAAU;AAC5F,QAAM,sBAAsB,cAAc,cAAc,WAAW,aAAa,EAAE,UAAU;AAC5F,QAAM,kBAAkB,OAAO,KAAK,mBAAmB,EAAE,KAAK;AAC9D,QAAM,kBAAkB,OAAO,KAAK,mBAAmB,EAAE,KAAK;AAC9D,QAAM,oBAAoB,CAAC,GAAG,IAAI,IAAI,gBAAgB,OAAO,CAAC,cAAc,CAAC,gBAAgB,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK;AACzH,QAAM,sBAAsB,CAAC,GAAG,IAAI,IAAI,gBAAgB,OAAO,CAAC,cAAc,CAAC,gBAAgB,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK;AAC3H,QAAM,sBAAsB,CAAC,GAAG,IAAI;AAAA,IAClC,gBACG,OAAO,CAAC,cAAc,gBAAgB,SAAS,SAAS,CAAC,EACzD,OAAO,CAAC,cAAc,aAAa,oBAAoB,SAAS,GAAG,oBAAoB,SAAS,CAAC,CAAC;AAAA,EACvG,CAAC,EAAE,KAAK;AACR,MAAI,kBAAkB,SAAS,GAAG;AAChC,YAAQ;AAAA,MACN;AAAA,QACE,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,+BAA+B,kBAAkB,KAAK,IAAI,CAAC;AAAA,MAC7D;AAAA,IACF;AACA,gBAAY,IAAI,eAAe;AAAA,EACjC;AACA,MAAI,oBAAoB,SAAS,GAAG;AAClC,YAAQ;AAAA,MACN;AAAA,QACE,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,iCAAiC,oBAAoB,KAAK,IAAI,CAAC;AAAA,MACjE;AAAA,IACF;AACA,gBAAY,IAAI,eAAe;AAAA,EACjC;AACA,MAAI,oBAAoB,SAAS,GAAG;AAClC,YAAQ;AAAA,MACN;AAAA,QACE,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,4CAA4C,oBAAoB,KAAK,IAAI,CAAC;AAAA,MAC5E;AAAA,IACF;AACA,gBAAY,IAAI,eAAe;AAAA,EACjC;AAEA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACAA,YAAW,WAAW,kBAAkB;AAAA,IACxCA,YAAW,WAAW,kBAAkB;AAAA,IACxC;AAAA,IACA;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACAA,YAAW,WAAW,eAAe;AAAA,IACrCA,YAAW,WAAW,eAAe;AAAA,IACrC;AAAA,IACA;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,EACF;AAEA,aAAW,OAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,OAAO,KAAK,UAAU,GAAG,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG;AAC/F,QAAI,YAAY,IAAI,GAAG,KAAK,yBAAyB,IAAI,GAAG,GAAG;AAC7D;AAAA,IACF;AACA,UAAM,WAAW,WAAW,GAAG;AAC/B,UAAM,WAAW,WAAW,GAAG;AAC/B,QAAI,aAAa,UAAU,QAAQ,GAAG;AACpC,cAAQ,KAAK,aAAa,YAAY,MAAM,KAAK,UAAU,UAAU,qBAAqB,GAAG,YAAY,CAAC;AAAA,IAC5G;AAAA,EACF;AAEA,SAAO,YAAY,OAAO;AAC5B;AAEA,SAAS,sBACP,SACA,aACA,KACA,UACA,UACA,gBACA,aACM;AACN,MAAI,UAAU,UAAU,QAAQ,GAAG;AACjC;AAAA,EACF;AACA,QAAM,QAAQ,kBAAkB,UAAU,QAAQ,IAAI,YAAY,UAAU,YAAY;AACxF,UAAQ,KAAK,aAAa,OAAO,KAAK,UAAU,UAAU,UAAU,YAAY,UAAU,iBAAiB,WAAW,CAAC;AACvH,cAAY,IAAI,GAAG;AACrB;AAEA,SAAS,4BACP,SACA,aACA,KACA,UACA,UACA,SACA,iBACA,kBACM;AACN,MAAI,CAAC,aAAa,UAAU,QAAQ,GAAG;AACrC;AAAA,EACF;AACA,QAAM,UAAU,OAAO,aAAa,WAAW,QAAQ,QAAQ,IAAI;AACnE,QAAM,UAAU,OAAO,aAAa,WAAW,QAAQ,QAAQ,IAAI;AACnE,QAAM,QACJ,YAAY,UAAa,YAAY,UAAa,UAAU,UACxD,YAAY,WACZ,YAAY;AAClB,QAAM,UACJ,YAAY,UAAa,YAAY,UAAa,UAAU,UACxD,kBACA,YAAY,UAAa,YAAY,UAAa,UAAU,UAC1D,mBACA,GAAG,GAAG;AACd,UAAQ,KAAK,aAAa,OAAO,KAAK,UAAU,UAAU,OAAO,CAAC;AAClE,cAAY,IAAI,GAAG;AACrB;AAEA,SAAS,kBACP,SACA,aACA,OACA,KACA,UACA,UACA,SACM;AACN,MAAI,aAAa,UAAU,QAAQ,GAAG;AACpC,YAAQ,KAAK,aAAa,OAAO,KAAK,UAAU,UAAU,OAAO,CAAC;AAClE,gBAAY,IAAI,GAAG;AAAA,EACrB;AACF;AAEA,SAAS,kBAAkB,OAAuE;AAChG,QAAM,UAAU,cAAc,OAAO,UAAU;AAC/C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,aAAa,QAAQ,eAAe;AAAA,IACpC,UAAU,QAAQ,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO9B,kBAAkB,QAAQ,oBAAoB;AAAA,EAChD;AACF;AAEA,SAAS,oBAAoB,OAAsE;AACjG,QAAM,UAAU,cAAc,OAAO,aAAa;AAClD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,kBAAkB,QAAQ,oBAAoB;AAAA,IAC9C,6BAA6BA,YAAW,QAAQ,2BAA2B;AAAA,EAC7E;AACF;AAEA,SAAS,aACP,OACA,MACA,UACA,UACA,SACQ;AACR,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,KAAK,mBAAmB,QAAQ;AAAA,IAChC,KAAK,mBAAmB,QAAQ;AAAA,IAChC;AAAA,IACA,aAAa,UAAU,YAAY;AAAA,EACrC;AACF;AAEA,SAAS,mBAAmB,OAAwE;AAClG,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AACA,QAAM,aAAa,WAAW,KAAK;AACnC,MAAI,eAAe,QAAW;AAC5B,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,cAAc,OAAyC;AAC9D,SAAO,SAAS,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC;AAC3C;AAEA,SAASA,YAAW,OAA0B;AAC5C,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,CAAC;AAAA,EACV;AACA,SAAO,MAAM,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ;AACxE;AAEA,SAAS,aAAa,MAAe,OAAyB;AAC5D,SAAO,KAAK,UAAU,YAAY,mBAAmB,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,YAAY,mBAAmB,KAAK,CAAC,CAAC;AACxH;AAEA,SAAS,UAAU,MAAgB,OAA0B;AAC3D,SAAO,KAAK,WAAW,MAAM,UAAU,KAAK,MAAM,CAAC,OAAO,UAAU,UAAU,MAAM,KAAK,CAAC;AAC5F;AAEA,SAAS,QAAQ,OAAyB;AACxC,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,WAAW;AAC9D;AAEA,SAAS,kBAAkB,UAAoB,UAA6B;AAC1E,QAAM,SAAS,IAAI,IAAI,SAAS,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,YAAY,CAAC,EAAE,OAAO,OAAO,CAAC;AACxF,QAAM,SAAS,IAAI,IAAI,SAAS,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,YAAY,CAAC,EAAE,OAAO,OAAO,CAAC;AACxF,MAAI,OAAO,SAAS,OAAO,QAAQ,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,SAAS,OAAO,IAAI,IAAI,CAAC,GAAG;AAChF,WAAO;AAAA,EACT;AACA,MAAI,OAAO,SAAS,KAAK,OAAO,SAAS,GAAG;AAC1C,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,oBAAI,IAAI,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC5C,QAAM,eAAe,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,SAAS,OAAO,IAAI,IAAI,CAAC;AAClE,QAAM,aAAa,aAAa,SAAS,MAAM;AAC/C,SAAO,aAAa,OAAQ,eAAe,OAAO,KAAK,IAAI,OAAO,OAAO,OAAO,IAAI,KAAK;AAC3F;AAEA,SAAS,YAAY,SAA6B;AAChD,QAAM,WAAwC;AAAA,IAC5C,CAAC,YAAY,QAAQ,GAAG;AAAA,IACxB,CAAC,YAAY,OAAO,GAAG;AAAA,IACvB,CAAC,YAAY,IAAI,GAAG;AAAA,EACtB;AACA,SAAO,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,UAAU;AACxC,UAAM,aAAa,SAAS,KAAK,KAAK,IAAI,SAAS,MAAM,KAAK;AAC9D,WAAO,eAAe,IAAI,aAAa,KAAK,KAAK,cAAc,MAAM,IAAI;AAAA,EAC3E,CAAC;AACH;AAEA,SAAS,YAAY,OAAyB;AAC5C,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,SAAS,YAAY,IAAI,CAAC;AAAA,EAC9C;AACA,MAAI,SAAS,KAAK,GAAG;AACnB,WAAO,OAAO;AAAA,MACZ,OAAO,KAAK,KAAK,EACd,KAAK,EACL,IAAI,CAAC,QAAQ,CAAC,KAAK,YAAa,MAAkC,GAAG,CAAC,CAAC,CAAC;AAAA,IAC7E;AAAA,EACF;AACA,SAAO;AACT;;;AC1eO,IAAM,kBAAkB;AAAA,EAC7B,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AAAA;AAAA,EAET,gBAAgB;AAClB;AAGO,IAAM,eAAe;AAAA,EAC1B,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,MAAM;AACR;AAWO,IAAM,cAAc;AAAA,EACzB,SAAS;AAAA,EACT,MAAM;AACR;AAGO,IAAM,aAAa;AAAA,EACxB,MAAM;AAAA,EACN,cAAc;AAAA,EACd,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AACd;AAGO,IAAM,cAAc;AAAA,EACzB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,KAAK;AAAA,EACL,SAAS;AAAA,EACT,UAAU;AAAA,EACV,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,OAAO;AACT;AAmHO,IAAM,4BAA4B;AAAA,EACvC,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AACX;AAIO,IAAM,iBAAiB;AAAA,EAC5B,iBAAiB;AAAA,EACjB,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,wBAAwB;AAC1B;;;AC3LA,IAAM,mBAAmB;AACzB,IAAM,gBAAgB;AACtB,IAAM,oBAAoB;AAC1B,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,cAAc;AAiCpB,SAAS,aAAa,OAAuB;AAC3C,SAAO,MAAM,QAAQ,YAAY,oBAAoB,EAAE,QAAQ,UAAU,kBAAkB;AAC7F;AAEA,SAAS,aAAa,QAA6C,KAAa,OAAqB;AACnG,QAAM,WAAW,OAAO,GAAG;AAC3B,MAAI,aAAa,QAAW;AAC1B,WAAO,GAAG,IAAI;AACd;AAAA,EACF;AACA,MAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,aAAS,KAAK,KAAK;AACnB;AAAA,EACF;AACA,SAAO,GAAG,IAAI,CAAC,UAAU,KAAK;AAChC;AAEA,SAAS,kBAAkB,KAAa,OAAuB;AAC7D,MAAI,QAAQ,kBAAkB,MAAM,YAAY,EAAE,SAAS,qBAAqB,GAAG;AACjF,WAAO,8BAA8B,KAAK;AAAA,EAC5C;AACA,MAAI,QAAQ,iBAAiB;AAM3B,UAAM,WAAW,MAAM,KAAK;AAC5B,QAAI,CAAC,UAAU;AACb,aAAO;AAAA,IACT;AAKA,QAAI,CAAC,KAAK,KAAK,QAAQ,GAAG;AACxB,aAAO;AAAA,IACT;AACA,UAAM,OAAO,SAAS,MAAM,KAAK,EAAE,CAAC,KAAK;AACzC,WAAO,OAAO,GAAG,IAAI,gBAAgB;AAAA,EACvC;AACA,MAAI,QAAQ,YAAY,QAAQ,gBAAgB,cAAc,KAAK,GAAG,GAAG;AACvE,UAAM,WAAW,aAAa,KAAK;AACnC,WAAO,aAAa,QAAQ,WAAW;AAAA,EACzC;AACA,SAAO,aAAa,KAAK;AAC3B;AAEA,SAAS,cAAc,SAAuD;AAC5E,QAAM,SAA8C,CAAC;AACrD,UAAQ,QAAQ,CAAC,OAAO,QAAQ;AAC9B,UAAM,gBAAgB,IAAI,YAAY;AACtC,iBAAa,QAAQ,eAAe,kBAAkB,eAAe,KAAK,CAAC;AAAA,EAC7E,CAAC;AACD,QAAM,eAAe,QAAQ,IAAI,SAAmB,cAAc;AAClE,MAAI,OAAO,iBAAiB,YAAY;AACtC,UAAM,aAAc,aAAgC,KAAK,OAAO,EAC7D,IAAI,CAAC,UAAU,kBAAkB,cAAc,KAAK,CAAC;AACxD,QAAI,WAAW,WAAW,KAAK,WAAW,CAAC,MAAM,QAAW;AAC1D,aAAO,YAAY,IAAI,WAAW,CAAC;AAAA,IACrC,WAAW,WAAW,SAAS,GAAG;AAChC,aAAO,YAAY,IAAI;AAAA,IACzB;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,UAAU,SAAyB;AAC1C,QAAM,MAAM,IAAI,IAAI,OAAO;AAC3B,QAAM,aAAa,IAAI,gBAAgB;AACvC,aAAW,CAAC,KAAK,KAAK,KAAK,MAAM,KAAK,IAAI,aAAa,QAAQ,CAAC,GAAG;AACjE,QAAI,cAAc,KAAK,GAAG,KAAK,kBAAkB,KAAK,GAAG,GAAG;AAC1D,YAAM,WAAW,aAAa,KAAK;AACnC,iBAAW,OAAO,KAAK,aAAa,QAAQ,WAAW,YAAY;AAAA,IACrE,OAAO;AACL,iBAAW,OAAO,KAAK,aAAa,KAAK,CAAC;AAAA,IAC5C;AAAA,EACF;AACA,MAAI,SAAS,WAAW,SAAS;AACjC,SAAO,IAAI,SAAS;AACtB;AAEA,SAAS,WAAW,OAAgB,SAA2B;AAC7D,MAAI,WAAW,kBAAkB,KAAK,OAAO,GAAG;AAC9C,WAAO;AAAA,EACT;AACA,MAAI,WAAW,cAAc,KAAK,OAAO,GAAG;AAC1C,QAAI,OAAO,UAAU,UAAU;AAC7B,YAAM,WAAW,aAAa,KAAK;AACnC,aAAO,aAAa,QAAQ,WAAW;AAAA,IACzC;AACA,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,SAAS,WAAW,IAAI,CAAC;AAAA,EAC7C;AACA,MAAI,SAAS,OAAO,UAAU,UAAU;AACtC,WAAO,OAAO;AAAA,MACZ,OAAO,QAAQ,KAAgC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,WAAW,OAAO,GAAG,CAAC,CAAC;AAAA,IACtG;AAAA,EACF;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,aAAa,KAAK;AAAA,EAC3B;AACA,SAAO;AACT;AAEA,SAAS,aAAgB,OAAa;AACpC,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC;AAAA,EAC/C;AACA,MAAI,SAAS,OAAO,UAAU,UAAU;AACtC,WAAO,OAAO;AAAA,MACZ,OAAO,KAAK,KAAgC,EACzC,KAAK,EACL,IAAI,CAAC,QAAQ,CAAC,KAAK,aAAc,MAAkC,GAAG,CAAC,CAAC,CAAC;AAAA,IAC9E;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,MAAe,kBAAwC;AACpF,MAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AACrC,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,IAAI,CAAC,SAAS,sBAAsB,MAAM,oBAAI,IAAY,CAAC,CAAC;AAAA,EAC1E;AACA,QAAM,SAAS;AACf,SAAO,OAAO;AAAA,IACZ,OAAO,KAAK,MAAM,EACf,OAAO,CAAC,QAAQ,CAAC,iBAAiB,IAAI,GAAG,CAAC,EAC1C,KAAK,EACL,IAAI,CAAC,QAAQ,CAAC,KAAK,sBAAsB,OAAO,GAAG,GAAG,oBAAI,IAAY,CAAC,CAAC,CAAC;AAAA,EAC9E;AACF;AAEA,SAAS,iBAAiB,SAAyD,kBAAuC;AACxH,SAAO,KAAK,UAAU;AAAA,IACpB,QAAQ,QAAQ,OAAO,YAAY;AAAA,IACnC,KAAK,QAAQ;AAAA,IACb,MAAM,sBAAsB,QAAQ,MAAM,gBAAgB;AAAA,EAC5D,CAAC;AACH;AAEA,eAAe,cAAc,MAAgC;AAC3D,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,MAAI;AACF,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAaA,SAAS,gBAAgB,QAAoB,QAAoB,aAAqC;AACpG,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AAAA,EACT;AACA,QAAM,QAAkB,CAAC;AACzB,WAAS,QAAQ,GAAG,QAAQ,OAAO,UAAS;AAC1C,QAAI,UAAU;AACd,aAAS,SAAS,GAAG,SAAS,OAAO,QAAQ,UAAU,GAAG;AACxD,UAAI,OAAO,QAAQ,MAAM,MAAM,OAAO,MAAM,GAAG;AAC7C,kBAAU;AACV;AAAA,MACF;AAAA,IACF;AACA,QAAI,SAAS;AACX,YAAM,KAAK,GAAG,WAAW;AACzB,eAAS,OAAO;AAChB;AAAA,IACF;AACA,UAAM,KAAK,OAAO,KAAK,CAAW;AAClC,aAAS;AAAA,EACX;AACA,SAAO,WAAW,KAAK,KAAK;AAC9B;AAEA,SAAS,wBAAwB,OAAmB,aAAwC;AAC1F,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,YAAY,KAAK,WAAW;AAC1C,MAAI,CAAC,QAAQ,CAAC,GAAG;AACf,WAAO;AAAA,EACT;AACA,SAAO,gBAAgB,OAAO,IAAI,YAAY,EAAE,OAAO,MAAM,CAAC,CAAC,GAAG,IAAI,YAAY,EAAE,OAAO,YAAY,CAAC;AAC1G;AAEA,SAAS,8BAA8B,aAAoC;AACzE,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AACA,SAAO,YAAY,QAAQ,aAAa,qBAAqB;AAC/D;AAEA,SAAS,SAAS,OAA2B;AAC3C,QAAM,aAAa,QAAQ,IAAI,YAAsB,QAAQ;AAC7D,MAAI,YAAY,MAAM;AACpB,WAAO,WAAW,KAAK,KAAK,EAAE,SAAS,QAAQ;AAAA,EACjD;AACA,MAAI,OAAO,SAAS,YAAY;AAC9B,QAAI,SAAS;AACb,UAAM,QAAQ,CAAC,UAAU;AACvB,gBAAU,OAAO,aAAa,KAAK;AAAA,IACrC,CAAC;AACD,WAAO,KAAK,MAAM;AAAA,EACpB;AACA,QAAM,IAAI,MAAM,+DAA+D;AACjF;AAEA,eAAe,iBAAiB,SAAoC;AAClE,QAAM,cAAc,QAAQ,QAAQ,IAAI,cAAc;AACtD,MAAI,aAAa,YAAY,EAAE,SAAS,qBAAqB,GAAG;AAC9D,UAAM,QAAQ,IAAI,WAAW,MAAM,QAAQ,MAAM,EAAE,YAAY,CAAC;AAChE,WAAO;AAAA,MACL,cAAc,8BAA8B,WAAW;AAAA,MACvD,UAAU;AAAA,MACV,QAAQ,SAAS,wBAAwB,OAAO,WAAW,CAAC;AAAA,IAC9D;AAAA,EACF;AACA,QAAM,OAAO,MAAM,QAAQ,MAAM,EAAE,KAAK;AACxC,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,SAAO,cAAc,IAAI;AAC3B;AAEA,SAAS,0BAA0B,aAAkC,SAA4B;AAC/F,QAAM,UAAU,IAAI,QAAQ;AAC5B,SAAO,QAAQ,YAAY,SAAS,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACrE,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,YAAM,QAAQ,CAAC,UAAU,QAAQ,OAAO,KAAK,KAAK,CAAC;AACnD;AAAA,IACF;AACA,YAAQ,OAAO,KAAK,KAAK;AAAA,EAC3B,CAAC;AACD,QAAM,OAAO,YAAY,SAAS;AAClC,QAAM,UAAU,OAAO,SAAS,WAAW,OAAO,QAAQ,OAAO,KAAK,KAAK,UAAU,IAAI;AACzF,MAAI,SAAS,QAAQ,SAAS,UAAa,OAAO,SAAS,YAAY,CAAC,QAAQ,IAAI,cAAc,GAAG;AACnG,YAAQ,IAAI,gBAAgB,kBAAkB;AAAA,EAChD;AACA,SAAO,IAAI,SAAS,SAAS;AAAA,IAC3B,QAAQ,YAAY,SAAS;AAAA,IAC7B;AAAA,EACF,CAAC;AACH;AAEA,eAAe,WAAW,MAAgC;AACxD,MAAI,OAAO,SAAS,eAAe,OAAO,KAAK,SAAS,YAAY;AAClE,QAAI;AACF,YAAM,KAAK,KAAK,IAAI;AACpB,aAAO;AAAA,IACT,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI;AACF,UAAM,KAAK,MAAM,OAAO,aAAkB;AAC1C,UAAM,GAAG,OAAO,IAAI;AACpB,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAe,aAAa,MAA+B;AACzD,MAAI,OAAO,SAAS,eAAe,OAAO,KAAK,iBAAiB,YAAY;AAC1E,WAAO,KAAK,aAAa,IAAI;AAAA,EAC/B;AACA,QAAM,KAAK,MAAM,OAAO,aAAkB;AAC1C,SAAO,GAAG,SAAS,MAAM,MAAM;AACjC;AAEA,eAAe,cAAc,MAAc,SAAgC;AACzE,MAAI,OAAO,SAAS,eAAe,OAAO,KAAK,kBAAkB,YAAY;AAC3E,UAAM,YAAY,KAAK,IAAI,KAAK,YAAY,GAAG,GAAG,KAAK,YAAY,IAAI,CAAC;AACxE,UAAM,MAAM,aAAa,IAAI,KAAK,MAAM,GAAG,SAAS,IAAI;AACxD,QAAI,KAAK;AACP,YAAM,KAAK,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,IAC3C;AACA,UAAM,KAAK,cAAc,MAAM,OAAO;AACtC;AAAA,EACF;AACA,QAAM,KAAK,MAAM,OAAO,aAAkB;AAC1C,QAAM,aAAa,MAAM,OAAO,MAAW;AAC3C,QAAM,GAAG,MAAM,WAAW,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAC5D,QAAM,GAAG,UAAU,MAAM,SAAS,MAAM;AAC1C;AAEO,IAAM,WAAN,MAAM,UAAS;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACD,gBAAmC;AAAA,EACnC,eAAsC,CAAC;AAAA,EACvC,SAAS;AAAA,EACT,iBAAkE,CAAC;AAAA,EAE3E,YAAY,cAAsB,UAA2B,CAAC,GAAG;AAC/D,SAAK,eAAe;AACpB,SAAK,OAAO,QAAQ,QAAQ;AAC5B,SAAK,qBAAqB,QAAQ,sBAAsB,CAAC;AAAA,EAC3D;AAAA,EAEA,aAAa,KAAK,cAAsB,UAA2B,CAAC,GAAsB;AACxF,UAAM,WAAW,IAAI,UAAS,cAAc,OAAO;AACnD,WAAO,SAAS,MAAM;AAAA,EACxB;AAAA,EAEA,MAAM,QAAuB;AAC3B,SAAK,gBAAgB,MAAM,KAAK,YAAY;AAC5C,SAAK,eAAe,KAAK,kBAAkB,wBAAoB,MAAM,KAAK,aAAa,IAAI,CAAC;AAC5F,SAAK,SAAS;AACd,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,QAAuB;AAC3B,eAAW,WAAW,KAAK,eAAe,OAAO,CAAC,GAAG;AACnD,cAAQ,IAAI,QAAQ,QAAQ,aAAa,QAAQ,SAAS;AAAA,IAC5D;AACA,QAAI,KAAK,kBAAkB,uBAAmB;AAC5C,YAAM,UAAwB,EAAE,SAAS,kBAAkB,cAAc,KAAK,aAAa;AAC3F,YAAM,cAAc,KAAK,cAAc,GAAG,KAAK,UAAU,aAAa,OAAO,GAAG,MAAM,CAAC,CAAC;AAAA,CAAI;AAAA,IAC9F;AAAA,EACF;AAAA,EAEA,KAAuB,QAAc;AACnC,QAAI,CAAC,KAAK,eAAe;AACvB,YAAM,IAAI,MAAM,yCAAyC;AAAA,IAC3D;AACA,UAAM,eAAe,QAAQ,IAAI,QAAQ,WAAW;AACpD,QAAI,OAAO,iBAAiB,YAAY;AACtC,YAAM,IAAI,MAAM,qEAAqE;AAAA,IACvF;AACA,SAAK,eAAe,KAAK,EAAE,QAAQ,WAAW,aAA0B,CAAC;AACzE,YAAQ,IAAI,QAAQ,aAAa,KAAK,YAAY,YAAyB,CAAC;AAC5E,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,gBAAmB,IAAsC;AAC7D,QAAI,CAAC,KAAK,eAAe;AACvB,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AACA,UAAM,gBAAgB,WAAW;AACjC,QAAI,OAAO,kBAAkB,YAAY;AACvC,YAAM,IAAI,MAAM,gDAAgD;AAAA,IAClE;AACA,UAAM,gBAAgB,KAAK,YAAY,aAAa;AACpD,YAAQ,IAAI,YAAsB,SAAS,aAAa;AACxD,QAAI;AACF,aAAO,MAAM,GAAG;AAAA,IAClB,UAAE;AACA,cAAQ,IAAI,YAAsB,SAAS,aAAa;AAAA,IAC1D;AAAA,EACF;AAAA,EAEA,MAAc,cAAmC;AAC/C,QAAI,KAAK,SAAS,mBAAiB;AACjC,aAAO,MAAM,WAAW,KAAK,YAAY,IAAI,wBAAoB;AAAA,IACnE;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAc,eAA+C;AAC3D,QAAI,CAAE,MAAM,WAAW,KAAK,YAAY,GAAI;AAC1C,YAAM,IAAI,MAAM,kCAAkC,KAAK,YAAY,EAAE;AAAA,IACvE;AACA,UAAM,UAAU,KAAK,MAAM,MAAM,aAAa,KAAK,YAAY,CAAC;AAChE,QAAI,QAAQ,YAAY,oBAAoB,CAAC,MAAM,QAAQ,QAAQ,YAAY,GAAG;AAChF,YAAM,IAAI,MAAM,4BAA4B,KAAK,YAAY,EAAE;AAAA,IACjE;AACA,WAAO,QAAQ;AAAA,EACjB;AAAA,EAEQ,YAAY,WAAiC;AACnD,UAAM,mBAAmB,IAAI,IAAI,KAAK,kBAAkB;AACxD,YAAQ,OAAO,OAA0B,SAAuB;AAC9D,YAAM,UAAU,IAAI,QAAQ,OAAO,IAAI;AACvC,YAAM,cAAc,MAAM,iBAAiB,OAAO;AAClD,YAAM,gBAAgB;AAAA,QACpB,QAAQ,QAAQ;AAAA,QAChB,KAAK,UAAU,QAAQ,GAAG;AAAA,QAC1B,SAAS,cAAc,QAAQ,OAAO;AAAA,QACtC,MAAM,WAAW,WAAW;AAAA,MAC9B;AAEA,UAAI,KAAK,kBAAkB,uBAAmB;AAC5C,YAAI,KAAK,UAAU,KAAK,aAAa,QAAQ;AAC3C,gBAAM,IAAI,MAAM,qCAAqC,QAAQ,MAAM,IAAI,QAAQ,GAAG,EAAE;AAAA,QACtF;AACA,cAAM,cAAc,KAAK,aAAa,KAAK,MAAM;AACjD,YAAI,CAAC,aAAa;AAChB,gBAAM,IAAI,MAAM,uCAAuC,KAAK,MAAM,EAAE;AAAA,QACtE;AACA,YAAI,iBAAiB,YAAY,SAAS,gBAAgB,MAAM,iBAAiB,eAAe,gBAAgB,GAAG;AACjH,gBAAM,IAAI;AAAA,YACR;AAAA,YAAuC,iBAAiB,YAAY,SAAS,gBAAgB,CAAC;AAAA,YAAe,iBAAiB,eAAe,gBAAgB,CAAC;AAAA,UAChK;AAAA,QACF;AACA,aAAK,UAAU;AACf,eAAO,0BAA0B,aAAa,OAAO;AAAA,MACvD;AAEA,YAAM,UAAU,KAAK,IAAI;AACzB,YAAM,WAAW,MAAM,UAAU,OAAO,IAAI;AAC5C,YAAM,eAAe,SAAS,WAAW,MAAM,KAAK,MAAM,SAAS,MAAM,EAAE,KAAK;AAChF,YAAM,eAAe,MAAM,cAAc,YAAY;AACrD,WAAK,aAAa,KAAK;AAAA,QACrB,SAAS;AAAA,QACT,UAAU;AAAA,UACR,QAAQ,SAAS;AAAA,UACjB,SAAS,cAAc,SAAS,OAAO;AAAA,UACvC,MAAM,WAAW,YAAY;AAAA,UAC7B,aAAa,KAAK,IAAI,IAAI;AAAA,QAC5B;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;ACheA;AAEA,IAAM,uBAAuB;AAC7B,IAAM,eAAe;AACrB,IAAM,2BAA2B,oBAAI,IAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,uBAAuB,oBAAI,IAAI,CAAC,SAAS,SAAS,OAAO,CAAC;AAChE,IAAM,8BAA8B,oBAAI,IAAI,CAAC,mBAAmB,CAAC;AAIjE,SAAS,MACP,MACA,SACA,OACA,WAAwC,SACxC,YACiB;AACjB,SAAO,EAAE,MAAM,SAAS,OAAO,UAAU,WAAW;AACtD;AAEA,SAAS,iBAAiB,QAA8B;AACtD,MAAI,SAAS,MAAM,KAAK,OAAO,OAAO,YAAY,YAAY;AAC5D,WAAO,OAAO,QAAQ;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,8BACP,QACA,WACA,WACA,OAAO,IACD;AACN,aAAW,WAAW,sBAAsB;AAC1C,QAAI,EAAE,WAAW,SAAS;AACxB;AAAA,IACF;AACA,UAAM,WAAW,OAAO,OAAO;AAC/B,UAAM,WAAW,OAAO,GAAG,SAAS,IAAI,IAAI,IAAI,OAAO,KAAK,GAAG,SAAS,IAAI,OAAO;AACnF,QAAI,CAAC,MAAM,QAAQ,QAAQ,KAAK,SAAS,WAAW,GAAG;AACrD,gBAAU,MAAM,gBAAgB,GAAG,OAAO,8BAA8B,QAAQ,CAAC;AACjF;AAAA,IACF;AACA,aAAS,QAAQ,CAAC,QAAQ,UAAU;AAClC,YAAM,aAAa,OAAO,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,MAAM,GAAG,OAAO,IAAI,KAAK;AAC9E,YAAM,iBAAiB,GAAG,SAAS,IAAI,UAAU;AACjD,UAAI,CAAC,SAAS,MAAM,GAAG;AACrB,kBAAU,MAAM,gBAAgB,GAAG,OAAO,IAAI,KAAK,uBAAuB,cAAc,CAAC;AACzF;AAAA,MACF;AACA,oCAA8B,QAAQ,WAAW,WAAW,UAAU;AAAA,IACxE,CAAC;AAAA,EACH;AAEA,aAAW,aAAa,6BAA6B;AACnD,QAAI,aAAa,QAAQ;AACvB,YAAM,WAAW,OAAO,GAAG,SAAS,IAAI,IAAI,IAAI,SAAS,KAAK,GAAG,SAAS,IAAI,SAAS;AACvF;AAAA,QACE;AAAA,UACE;AAAA,UACA,IAAI,SAAS,mBAAmB,OAAO,OAAO,IAAI,KAAK,EAAE;AAAA,UACzD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,QAAI,QAAQ,gBAAgB,SAAS,KAAK,GAAG;AAC3C,iBAAW,CAAC,cAAc,kBAAkB,KAAK,OAAO,QAAQ,KAAK,GAAG;AACtE,YAAI,CAAC,SAAS,kBAAkB,GAAG;AACjC;AAAA,QACF;AACA,cAAM,UAAU,OAAO,GAAG,IAAI,IAAI,YAAY,KAAK;AACnD,sCAA8B,oBAAoB,WAAW,WAAW,OAAO;AAAA,MACjF;AAAA,IACF,WAAW,QAAQ,WAAW,SAAS,KAAK,GAAG;AAC7C,YAAM,UAAU,OAAO,GAAG,IAAI,WAAW;AACzC,oCAA8B,OAAO,WAAW,WAAW,OAAO;AAAA,IACpE;AAAA,EACF;AACF;AAMO,SAAS,qBAAqB,aAAwD;AAC3F,QAAM,SAAS,iBAAiB,WAAW;AAC3C,QAAM,SAA4B,CAAC;AACnC,QAAM,YAAY,CAAC,MAAc,SAAiB,UAAmB;AACnE,WAAO,KAAK,MAAM,MAAM,SAAS,OAAO,OAAO,CAAC;AAAA,EAClD;AACA,QAAM,cAAc,CAAC,MAAc,SAAiB,UAAmB;AACrE,WAAO,KAAK,MAAM,MAAM,SAAS,OAAO,SAAS,CAAC;AAAA,EACpD;AAEA,MAAI,CAAC,SAAS,MAAM,GAAG;AACrB,cAAU,gBAAgB,4BAA4B;AACtD,WAAO,CAAC,OAAO,MAAM;AAAA,EACvB;AAEA,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,aAAW,aAAa,gBAAgB;AACtC,QAAI,EAAE,aAAa,SAAS;AAC1B,gBAAU,iBAAiB,mBAAmB,SAAS,gBAAgB,SAAS;AAAA,IAClF;AAAA,EACF;AAEA,QAAM,WAAW,OAAO;AACxB,MAAI,OAAO,aAAa,YAAY,SAAS,SAAS,KAAK,CAAC,aAAa,KAAK,QAAQ,GAAG;AACvF,cAAU,qBAAqB,2DAA2D,WAAW;AAAA,EACvG;AAEA,aAAW,CAAC,WAAW,WAAW,SAAS,KAAK;AAAA,IAC9C,CAAC,kBAAkB,IAAI,GAAG;AAAA,IAC1B,CAAC,qBAAqB,IAAI,GAAG;AAAA,EAC/B,GAAY;AACV,UAAM,QAAQ,OAAO,SAAS;AAC9B,QAAI,OAAO,UAAU,aAAa,MAAM,SAAS,aAAa,MAAM,SAAS,YAAY;AACvF,gBAAU,gBAAgB,GAAG,SAAS,YAAY,SAAS,IAAI,SAAS,eAAe,SAAS;AAAA,IAClG;AAAA,EACF;AAEA,QAAM,oBAAoB,OAAO;AACjC,MAAI,MAAM,QAAQ,iBAAiB,GAAG;AACpC,QAAI,kBAAkB,SAAS,GAAG;AAChC,gBAAU,iBAAiB,6CAA6C,oBAAoB;AAAA,IAC9F,WAAW,kBAAkB,SAAS,GAAG;AACvC,gBAAU,kBAAkB,6CAA6C,oBAAoB;AAAA,IAC/F;AACA,sBAAkB,QAAQ,CAAC,MAAM,UAAU;AACzC,UAAI,OAAO,SAAS,aAAa,KAAK,SAAS,MAAM,KAAK,SAAS,MAAM;AACvE;AAAA,UACE,KAAK,SAAS,KAAK,mBAAmB;AAAA,UACtC,sBAAsB,KAAK;AAAA,UAC3B,sBAAsB,KAAK;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,eAAe,OAAO;AAC5B,MAAI,MAAM,QAAQ,YAAY,GAAG;AAC/B,QAAI,aAAa,SAAS,GAAG;AAC3B,gBAAU,iBAAiB,yCAAyC,iBAAiB;AAAA,IACvF,WAAW,aAAa,SAAS,GAAG;AAClC,gBAAU,kBAAkB,0CAA0C,iBAAiB;AAAA,IACzF;AAAA,EACF;AAEA,QAAM,kBAAkB,OAAO;AAC/B,QAAM,yBAAsD;AAAA,IAC1D,0BAAgC;AAAA,IAChC,0BAAgC;AAAA,IAChC,0BAAgC;AAAA,EAClC;AACA,MAAI,OAAO,oBAAoB,YAAY,CAAC,uBAAuB,SAAS,eAA4C,GAAG;AACzH,QAAI,oBAAoB,gBAAgB,aAAa,oBAAoB,gBAAgB,gBAAgB;AACvG;AAAA,QACE;AAAA,QACA,uCAAuC,KAAK,UAAU,sBAAsB,CAAC,2CAA2C,eAAe;AAAA,QACvI;AAAA,MACF;AAAA,IACF,OAAO;AACL;AAAA,QACE;AAAA,QACA,mCAAmC,KAAK,UAAU,sBAAsB,CAAC;AAAA,QACzE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,gBAAgB,CAAC,WAAmB,YAAoB;AAC5D,UAAM,QAAQ,OAAO,SAAS;AAC9B,QAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAU,iBAAiB,IAAI,SAAS,uCAAuC,OAAO,KAAK,SAAS;AAAA,IACtG,WAAW,OAAO,UAAU,UAAU;AACpC,gBAAU,gBAAgB,IAAI,SAAS,sBAAsB,SAAS;AAAA,IACxE,WAAW,MAAM,WAAW,GAAG;AAC7B,gBAAU,aAAa,IAAI,SAAS,6BAA6B,SAAS;AAAA,IAC5E;AAAA,EACF;AAEA,QAAM,gBAAgB,CAAC,WAAmB,YAAoB;AAC5D,UAAM,QAAQ,OAAO,SAAS;AAC9B,QAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAU,iBAAiB,IAAI,SAAS,uCAAuC,OAAO,KAAK,SAAS;AAAA,IACtG,WAAW,CAAC,SAAS,KAAK,GAAG;AAC3B,gBAAU,gBAAgB,IAAI,SAAS,kCAAkC,SAAS;AAAA,IACpF;AAAA,EACF;AAEA,MAAI,oBAAoB,0BAAgC,UAAU,oBAAoB,0BAAgC,SAAS;AAC7H,kBAAc,6BAA6B,eAAe;AAC1D,kBAAc,kBAAkB,eAAe;AAC/C,kBAAc,uBAAuB,eAAe;AACpD,kBAAc,gBAAgB,eAAe;AAC7C,QAAI,OAAO,OAAO,iBAAiB,YAAY,OAAO,aAAa,SAAS,KAAK,CAAC,qBAAqB,KAAK,OAAO,YAAY,GAAG;AAChI;AAAA,QACE;AAAA,QACA,yEAAyE,KAAK,UAAU,OAAO,YAAY,CAAC;AAAA,QAC5G;AAAA,MACF;AAAA,IACF;AACA,QAAI,EAAE,yBAAyB,SAAS;AACtC,gBAAU,iBAAiB,2DAA2D,eAAe,KAAK,qBAAqB;AAAA,IACjI,WAAW,OAAO,wBAAwB,MAAM;AAC9C,gBAAU,wBAAwB,uDAAuD,qBAAqB;AAAA,IAChH;AAAA,EACF;AAEA,MAAI,oBAAoB,0BAAgC,SAAS;AAC/D,kBAAc,gBAAgB,SAAS;AACvC,kBAAc,YAAY,SAAS;AACnC,kBAAc,mBAAmB,SAAS;AAC1C,kBAAc,+BAA+B,SAAS;AACtD,QAAI,OAAO,OAAO,aAAa,YAAY,OAAO,aAAa,OAAO;AACpE,gBAAU,oBAAoB,0BAA0B,UAAU;AAAA,IACpE;AACA,QACE,OAAO,OAAO,oBAAoB,YAClC,CAAC,OAAO,OAAO,cAAc,EAAE,SAAS,OAAO,eAAiC,GAChF;AACA;AAAA,QACE;AAAA,QACA,kCAAkC,KAAK,UAAU,OAAO,OAAO,cAAc,CAAC,CAAC;AAAA,QAC/E;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,OAAO;AAC3B,MAAI,SAAS,WAAW,GAAG;AACzB,QAAI,YAAY,SAAS,UAAU;AACjC,gBAAU,gBAAgB,8BAA8B,cAAc;AAAA,IACxE;AACA,QAAI,YAAY,yBAAyB,OAAO;AAC9C,gBAAU,gBAAgB,sCAAsC,cAAc;AAAA,IAChF;AACA,kCAA8B,aAAa,gBAAgB,CAAC,cAAc,OAAO,KAAK,SAAS,CAAC;AAChG,UAAM,aAAa,YAAY;AAC/B,QAAI,SAAS,UAAU,GAAG;AACxB,iBAAW,aAAa,OAAO,KAAK,UAAU,GAAG;AAC/C,YAAI,yBAAyB,IAAI,SAAS,GAAG;AAC3C;AAAA,YACE;AAAA,YACA,IAAI,SAAS;AAAA,YACb,2BAA2B,SAAS;AAAA,UACtC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAe,OAAO;AAC5B,MAAI,SAAS,YAAY,GAAG;AAC1B,UAAM,WAAW,aAAa;AAC9B,QAAI,CAAC,MAAM,QAAQ,QAAQ,KAAK,SAAS,WAAW,GAAG;AACrD,gBAAU,iBAAiB,4DAA4D,wBAAwB;AAAA,IACjH;AACA,UAAM,aAAa,aAAa;AAChC,QAAI,SAAS,UAAU,KAAK,EAAE,aAAa,aAAa;AACtD,gBAAU,iBAAiB,mDAAmD,0BAA0B;AAAA,IAC1G;AACA,QAAI,oBAAoB,0BAAgC,SAAS;AAC/D,UAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,YAAI,CAAC,SAAS,SAAS,YAAY,GAAG;AACpC,oBAAU,iBAAiB,mDAAmD,wBAAwB;AAAA,QACxG;AACA,YAAI,CAAC,SAAS,SAAS,UAAU,GAAG;AAClC,oBAAU,iBAAiB,iDAAiD,wBAAwB;AAAA,QACtG;AAAA,MACF;AACA,UAAI,SAAS,UAAU,GAAG;AACxB,YAAI,EAAE,gBAAgB,aAAa;AACjC,oBAAU,iBAAiB,iEAAiE,0BAA0B;AAAA,QACxH;AACA,YAAI,EAAE,cAAc,aAAa;AAC/B,oBAAU,iBAAiB,+DAA+D,0BAA0B;AAAA,QACtH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,CAAC,CAAC,OAAO,KAAK,CAAC,cAAc,UAAU,aAAa,OAAO,GAAG,MAAM;AAC7E;;;ACrSA;AAEA,IAAM,oBAAoB;AAE1B,SAAS,yBAAyB,QAAyB,eAA+C;AACxG,SAAO;AAAA,IACL,SAAS,QAAQ,OAAO,OAAO;AAAA,IAC/B,QAAQ,OAAO,UAAU,CAAC;AAAA,IAC1B,gBAAgB,OAAO,kBAAkB;AAAA,IACzC,gBAAgB,OAAO,kBAAkB;AAAA,IACzC,cAAc,OAAO,gBAAgB;AAAA,IACrC,UAAU,OAAO,YAAY;AAAA,IAC7B,iBAAiB,OAAO,mBAAmB;AAAA,IAC3C,eAAe,OAAO;AAAA,IACtB,kBAAkB,OAAO,oBAAoB;AAAA,IAC7C,gBAAgB,OAAO,kBAAkB;AAAA,IACzC,iBAAiB,OAAO;AAAA,IACxB,iBAAiB,OAAO,mBAAmB,CAAC;AAAA,IAC5C,WAAW,OAAO,aAAa,CAAC;AAAA,IAChC,cAAc,OAAO,gBAAgB,CAAC;AAAA,IACtC,aAAa,OAAO;AAAA,IACpB,eAAe,OAAO;AAAA,EACxB;AACF;AAEO,IAAe,aAAf,MAA0B;AAAA,EAI/B,MAAM,eAA2C;AAC/C,WAAO,EAAE,SAAS,MAAM,SAAS,GAAG;AAAA,EACtC;AAAA,EAEA,MAAM,WAAW,WAAmB,gBAAuC;AAAA,EAAC;AAAA,EAE5E,MAAM,aAAa,WAAmB,gBAAuC;AAAA,EAAC;AAAA,EAE9E,uBAAiC;AAC/B,WAAO,CAAC,SAAS;AAAA,EACnB;AACF;AAmBO,IAAM,iBAAN,MAAqB;AAAA,EAC1B;AAAA,EACA;AAAA,EAEA,YAAY,KAAiB,QAAsC,CAAC,GAAG;AACrE,SAAK,MAAM;AACX,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,MAAc,gBACZ,gBACA,YAAY,WACZ,UAQI,CAAC,GACqB;AAC1B,UAAM,qBACJ,QAAQ,sBACR,OAAO;AAAA,MACL,OAAO,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,QAAQ;AAAA,QACnC;AAAA,QACA;AAAA,UACE,cAAc;AAAA,UACd,eAAe,cAAc,GAAG;AAAA,UAChC,aAAa,YAAY;AAAA,UACzB,QAAQ,CAAC;AAAA,QACX;AAAA,MACF,CAAC;AAAA,IACH;AACF,UAAM,MAAwB;AAAA,MAC5B,UAAU;AAAA,MACV,eAAe;AAAA,MACf;AAAA,MACA,aAAa,YAAY;AAAA,MACzB;AAAA,MACA;AAAA,MACA,cAAc,QAAQ,gBAAgB,CAAC;AAAA,MACvC,UAAU,QAAQ;AAAA,MAClB,iBAAiB,QAAQ;AAAA,MACzB,cAAc,QAAQ;AAAA,MACtB,wBAAwB,QAAQ,0BAA0B;AAAA,MAC1D,UAAU,QAAQ,YAAY,CAAC;AAAA,IACjC;AACA,WAAO,yBAAyB,MAAM,KAAK,IAAI,QAAQ,GAAG,GAAG,cAAc;AAAA,EAC7E;AAAA,EAEA,MAAM,QAAQ,YAAY,WAAW,UAA4D,CAAC,GAAG;AACnG,WAAO,KAAK,gBAAgB,WAAW,WAAW,OAAO;AAAA,EAC3D;AAAA,EAEA,MAAM,eAAe,YAAY,WAAW,UAA4D,CAAC,GAAG;AAC1G,WAAO,KAAK,gBAAgB,UAAU,WAAW,OAAO;AAAA,EAC1D;AAAA,EAEA,MAAM,cAAc,YAAY,WAAW,UAA4D,CAAC,GAAG;AACzG,WAAO,KAAK,gBAAgB,SAAS,WAAW,OAAO;AAAA,EACzD;AAAA,EAEA,MAAM,gBAAgB,YAAY,WAAW,UAA4D,CAAC,GAAG;AAC3G,WAAO,KAAK,gBAAgB,WAAW,WAAW,OAAO;AAAA,EAC3D;AAAA,EAEA,MAAM,SAAqC;AACzC,WAAO,KAAK,IAAI,aAAa;AAAA,EAC/B;AAAA,EAEA,MAAM,oBAAuC;AAC3C,UAAM,WAAW,MAAM,KAAK,IAAI,SAAS;AACzC,UAAM,SAAmB,CAAC;AAC1B,QAAI,CAAC,SAAS,gBAAgB;AAC5B,aAAO,KAAK,4BAA4B;AAAA,IAC1C,WAAW,CAAC,kBAAkB,KAAK,SAAS,cAAc,GAAG;AAC3D,aAAO,KAAK,2FAA2F;AAAA,IACzG;AACA,QAAI,CAAC,SAAS,MAAM;AAClB,aAAO,KAAK,kBAAkB;AAAA,IAChC;AACA,QAAI,CAAC,SAAS,gBAAgB;AAC5B,aAAO,KAAK,4BAA4B;AAAA,IAC1C;AACA,QAAI,CAAC,SAAS,mBAAmB,SAAS,gBAAgB,WAAW,GAAG;AACtE,aAAO,KAAK,4CAA4C;AAAA,IAC1D;AACA,QAAI,SAAS,qBAAqB,gBAAgB,UAAU,SAAS,qBAAqB,gBAAgB,SAAS;AACjH,UAAI,CAAC,SAAS,mBAAmB;AAC/B,eAAO,KAAK,4CAA4C;AAAA,MAC1D;AACA,WAAK,SAAS,iBAAiB,aAAa,UAAU,aAAa,MAAM;AACvE,eAAO,KAAK,kDAAkD;AAAA,MAChE;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,qBAAqB,QAA6E;AAChG,QAAI,CAAC,QAAQ;AACX,aAAO,CAAC,MAAM,CAAC,CAAC;AAAA,IAClB;AACA,WAAO,qBAAqB,MAAM;AAAA,EACpC;AAAA,EAEA,iBAAiB,QAAmC;AAClD,UAAM,SAAmB,CAAC;AAC1B,QAAI,OAAO,mBAAmB,WAAW;AACvC,YAAM,YAAY,QAAQ,OAAO,mBAAmB,OAAO,KAAK,OAAO,eAAe,EAAE,SAAS,CAAC;AAClG,YAAM,gBAAgB,SAAS,OAAO,WAAW,UAAU,KAAK,MAAM,OAAO,cAAc,UAAU,KAAK,CAAC;AAC3G,UAAI,CAAC,aAAa,CAAC,eAAe;AAChC,eAAO,KAAK,2FAA2F;AAAA,MACzG;AAAA,IACF;AAEA,QAAI,OAAO,mBAAmB,YAAY,OAAO,mBAAmB,WAAW;AAC7E,WAAK,OAAO,cAAc,UAAU,OAAO,KAAK,CAAC,OAAO,iBAAiB;AACvE,eAAO,KAAK,qDAAqD;AAAA,MACnE;AAAA,IACF;AAEA,QAAI,OAAO,kBAAkB,CAAC,OAAO,mBAAmB,CAAC,OAAO,eAAe;AAC7E,aAAO,KAAK,sEAAsE;AAAA,IACpF;AAEA,eAAW,CAAC,OAAO,QAAQ,MAAM,OAAO,aAAa,CAAC,GAAG,QAAQ,GAAG;AAClE,UAAI,CAAC,SAAS,eAAe;AAC3B,eAAO,KAAK,aAAa,KAAK,0BAA0B;AAAA,MAC1D;AAAA,IACF;AAEA,eAAW,CAAC,OAAO,UAAU,MAAM,OAAO,gBAAgB,CAAC,GAAG,QAAQ,GAAG;AACvE,UAAI,CAAC,WAAW,QAAQ;AACtB,eAAO,KAAK,gBAAgB,KAAK,mBAAmB;AAAA,MACtD;AACA,UAAI,CAAC,WAAW,UAAU;AACxB,eAAO,KAAK,gBAAgB,KAAK,qBAAqB;AAAA,MACxD;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,mCACJ,YAAY,WACZ,UAA4D,CAAC,GAC7D;AACA,WAAO,KAAK,gBAAgB,WAAW,WAAW;AAAA,MAChD,GAAG;AAAA,MACH,oBAAoB,CAAC;AAAA,IACvB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,kBACJ,QACA,UAAyD,CAAC,GACvB;AACnC,UAAM,EAAE,sBAAAC,sBAAqB,IAAI,MAAM;AACvC,UAAM,WAAW,MAAM,KAAK,IAAI,SAAS;AACzC,UAAM,eAAeA,sBAAqB,MAAM;AAChD,QAAI,uBAAyE;AAE7E,QAAI,SAAS,gBAAgB,WAAW,aAAa;AACnD,6BAAuB;AAAA,QACrB,aAAa,SAAS;AAAA,QACtB,gBAAgB,aAAa;AAAA,QAC7B,mBAAmB,KAAK,MAAM,SAAS,qBAAqB,CAAC;AAAA,QAC7D,gBAAgB,aAAa,QAAQ,KAAK,MAAM,SAAS,qBAAqB,CAAC;AAAA,QAC/E,UAAU,SAAS,YAAY;AAAA,MACjC;AAAA,IACF,WAAW,SAAS,gBAAgB,WAAW,YAAY;AACzD,YAAM,kBAAkB,QAAQ,oBAAoB;AACpD,YAAM,iBAAiB;AAAA,QACrB,QAAQ,mBAAmB,gBAAgB,WAAW,gBAAgB,mBAAmB,SAAS;AAAA,MACpG;AACA,6BAAuB;AAAA,QACrB,aAAa,SAAS;AAAA,QACtB;AAAA,QACA,mBAAmB,KAAK,MAAM,SAAS,qBAAqB,CAAC;AAAA,QAC7D,gBAAgB,iBAAiB,KAAK,MAAM,SAAS,qBAAqB,CAAC;AAAA,QAC3E,UAAU,SAAS,YAAY;AAAA,MACjC;AAAA,IACF;AAEA,WAAO;AAAA,MACL,cAAc,SAAS,gBAAgB,WAAW,eAAe,SAAS,gBAAgB,WAAW;AAAA,MACrG;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,yBAAyB,SASN;AACjB,WAAO,yBAAyB,OAAO;AAAA,EACzC;AAAA,EAEA,gCAAgC,SASP;AACvB,WAAO,gCAAgC,OAAO;AAAA,EAChD;AAAA,EAEA,MAAM,OACJ,cACA,IACA,UAA6C,CAAC,GAClC;AACZ,UAAM,WAAW,MAAM,SAAS,KAAK,cAAc;AAAA,MACjD;AAAA,MACA,oBAAoB,QAAQ;AAAA,IAC9B,CAAC;AACD,QAAI;AACF,aAAO,MAAM,SAAS,gBAAgB,MAAM,GAAG,IAAI,CAAC;AAAA,IACtD,UAAE;AACA,YAAM,SAAS,MAAM;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,MAAM,OACJ,cACA,IACA,UAA6C,CAAC,GAClC;AACZ,UAAM,WAAW,MAAM,SAAS,KAAK,cAAc;AAAA,MACjD;AAAA,MACA,oBAAoB,QAAQ;AAAA,IAC9B,CAAC;AACD,QAAI;AACF,aAAO,MAAM,SAAS,gBAAgB,MAAM,GAAG,IAAI,CAAC;AAAA,IACtD,UAAE;AACA,YAAM,SAAS,MAAM;AAAA,IACvB;AAAA,EACF;AACF;;;ACrUA;AAAA,EACE,SAAW;AAAA,EACX,iBAAmB;AAAA,EACnB,WAAa;AAAA,EACb,kBAAoB;AAAA,IAClB,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,EACP;AAAA,EACA,SAAW;AAAA,IACT,oBAAsB;AAAA,IACtB,iBAAmB;AAAA,IACnB,mBAAqB;AAAA,IACrB,2BAA6B;AAAA,IAC7B,4BAA8B;AAAA,IAC9B,OAAS;AAAA,IACT,kBAAoB;AAAA,EACtB;AAAA,EACA,wBAA0B;AAAA,IACxB;AAAA,MACE,kBAAoB;AAAA,MACpB,OAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,kBAAoB;AAAA,MACpB,OAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,kBAAoB;AAAA,MACpB,OAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,kBAAoB;AAAA,MACpB,OAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,mBAAqB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,iBAAmB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,qBAAuB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,YAAc;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;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","names":["resolve","isRecord","toRecord","stringOrNull","numberOrNull","data","buildUrl","RETRYABLE_STATUS_CODES","stringList","normalizeUsageRecord","coerceToolManual","coerceToolManual","CAPABILITY_KEY_RE","issue","operations","CAPABILITY_KEY_RE","payload"]}
1
+ {"version":3,"sources":["../../src/errors.ts","../../src/utils.ts","../../src/webhooks.ts","../../src/web3.ts","../../src/operations.ts","../../src/client.ts","../../src/metering.ts","../../src/cli/index.ts","../../src/cli/project.ts","../../src/diff.ts","../../src/types.ts","../../src/testing/recorder.ts","../../src/tool-manual-validator.ts","../../src/runtime.ts","../../../schemas/tool-manual-grader-rules.json","../../src/tool-manual-grader.ts"],"sourcesContent":["export class SiglumeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = new.target.name;\n }\n}\n\nexport class SiglumeClientError extends SiglumeError {}\n\nexport class SiglumeProjectError extends SiglumeError {}\n\nexport class SiglumeValidationError extends SiglumeError {}\n\nexport class SiglumeAssistError extends SiglumeClientError {}\n\nexport class SiglumeNotFoundError extends SiglumeClientError {}\n\nexport class SiglumeWebhookError extends SiglumeError {}\n\nexport class SiglumeWebhookSignatureError extends SiglumeWebhookError {}\n\nexport class SiglumeWebhookPayloadError extends SiglumeWebhookError {}\n\nexport class SiglumeWebhookReplayError extends SiglumeWebhookError {}\n\nexport class SiglumeAPIError extends SiglumeClientError {\n status_code: number;\n error_code?: string;\n trace_id?: string | null;\n request_id?: string | null;\n details: Record<string, unknown>;\n response_body?: unknown;\n\n constructor(\n message: string,\n options: {\n status_code: number;\n error_code?: string;\n trace_id?: string | null;\n request_id?: string | null;\n details?: Record<string, unknown>;\n response_body?: unknown;\n },\n ) {\n super(message);\n this.status_code = options.status_code;\n this.error_code = options.error_code;\n this.trace_id = options.trace_id;\n this.request_id = options.request_id;\n this.details = options.details ?? {};\n this.response_body = options.response_body;\n }\n}\n","import type { JsonValue } from \"./types\";\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function stringOrNull(value: unknown): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n const text = String(value).trim();\n return text.length > 0 ? text : null;\n}\n\nexport function numberOrNull(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\nexport function toRecord(value: unknown): Record<string, unknown> {\n return isRecord(value) ? { ...value } : {};\n}\n\nexport function toJsonable(value: unknown): JsonValue | Record<string, unknown> | unknown[] {\n if (value === null || value === undefined) {\n return null;\n }\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map((item) => toJsonable(item));\n }\n if (isRecord(value)) {\n const toDict = value.to_dict;\n if (typeof toDict === \"function\") {\n return toJsonable(toDict.call(value));\n }\n const toJson = value.toJSON;\n if (typeof toJson === \"function\") {\n return toJsonable(toJson.call(value));\n }\n return Object.fromEntries(\n Object.entries(value)\n .filter(([key]) => !key.startsWith(\"_\"))\n .map(([key, item]) => [key, toJsonable(item)]),\n );\n }\n return String(value);\n}\n\nexport function coerceMapping(value: unknown, label: string): Record<string, unknown> {\n const payload = toJsonable(value);\n if (!isRecord(payload)) {\n throw new TypeError(`${label} must be a mapping-like object`);\n }\n return payload;\n}\n\nexport function renderJson(value: unknown): string {\n return JSON.stringify(toJsonable(value), null, 2);\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function parseRetryAfter(value: string | null): number | null {\n if (!value) {\n return null;\n }\n const parsed = Number(value);\n return Number.isFinite(parsed) && parsed >= 0 ? parsed * 1000 : null;\n}\n\nexport function camelCaseFromCapabilityKey(capabilityKey: string): string {\n const words = capabilityKey\n .replaceAll(\"_\", \"-\")\n .split(\"-\")\n .map((item) => item.trim())\n .filter(Boolean);\n if (words.length === 0) {\n return \"GeneratedRegistrationApp\";\n }\n return `${words.map((word) => word[0]!.toUpperCase() + word.slice(1)).join(\"\")}App`;\n}\n\nexport function buildRegistrationStubSource(\n manifestPayload: Record<string, unknown>,\n toolManualPayload: Record<string, unknown>,\n): string {\n const capabilityKey = String(manifestPayload.capability_key ?? \"generated-registration\");\n const jobToBeDone = String(\n manifestPayload.job_to_be_done ??\n toolManualPayload.job_to_be_done ??\n \"Register this API listing on Siglume.\",\n );\n const name = String(manifestPayload.name ?? capabilityKey.replaceAll(\"-\", \" \"));\n const className = camelCaseFromCapabilityKey(capabilityKey);\n return [\n 'import { AppAdapter } from \"@siglume/api-sdk\";',\n \"\",\n `export default class ${className} extends AppAdapter {`,\n \" manifest() {\",\n ` return ${JSON.stringify(\n {\n capability_key: capabilityKey,\n name,\n job_to_be_done: jobToBeDone,\n },\n null,\n 2,\n ).replaceAll(\"\\n\", \"\\n \")};`,\n \" }\",\n \"\",\n \" async execute(ctx) {\",\n \" throw new Error(\\\"Registration bootstrap source is metadata-only.\\\");\",\n \" }\",\n \"}\",\n \"\",\n ].join(\"\\n\");\n}\n","import { SiglumeWebhookError, SiglumeWebhookPayloadError, SiglumeWebhookReplayError, SiglumeWebhookSignatureError } from \"./errors\";\n\nexport const WEBHOOK_SIGNATURE_HEADER = \"Siglume-Signature\";\nexport const WEBHOOK_EVENT_ID_HEADER = \"Siglume-Event-Id\";\nexport const WEBHOOK_EVENT_TYPE_HEADER = \"Siglume-Event-Type\";\nexport const DEFAULT_WEBHOOK_TOLERANCE_SECONDS = 300;\n\nexport const WEBHOOK_EVENT_TYPES = [\n \"subscription.created\",\n \"subscription.renewed\",\n \"subscription.cancelled\",\n \"subscription.paused\",\n \"subscription.reinstated\",\n \"payment.succeeded\",\n \"payment.failed\",\n \"capability.published\",\n \"capability.delisted\",\n \"execution.completed\",\n \"execution.failed\",\n] as const;\n\nexport type WebhookEventType = (typeof WEBHOOK_EVENT_TYPES)[number];\nconst WEBHOOK_EVENT_SET = new Set<string>(WEBHOOK_EVENT_TYPES);\n\nexport interface WebhookSignatureVerification {\n timestamp: number;\n signature: string;\n}\n\nexport interface WebhookSubscriptionRecord {\n subscription_id: string;\n owner_user_id: string;\n callback_url: string;\n status: string;\n event_types: string[];\n description?: string | null;\n signing_secret_hint?: string | null;\n signing_secret?: string | null;\n metadata: Record<string, unknown>;\n last_delivery_at?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WebhookDeliveryRecord {\n delivery_id: string;\n subscription_id: string;\n event_id: string;\n event_type: string;\n idempotency_key: string;\n callback_url: string;\n delivery_status: string;\n request_headers: Record<string, unknown>;\n request_body: Record<string, unknown>;\n response_status?: number | null;\n response_headers: Record<string, unknown>;\n response_body?: unknown;\n duration_ms?: number | null;\n attempt_count: number;\n last_attempt_at?: string | null;\n delivered_at?: string | null;\n error_message?: string | null;\n trace_id?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WebhookEventBase<T extends WebhookEventType = WebhookEventType, D extends Record<string, unknown> = Record<string, unknown>> {\n id: string;\n type: T;\n api_version: string;\n occurred_at: string;\n idempotency_key: string;\n trace_id?: string | null;\n data: D;\n raw: Record<string, unknown>;\n}\n\nexport interface SubscriptionLifecycleEventData extends Record<string, unknown> {\n subscription_id?: string;\n access_grant_id?: string;\n listing_id?: string;\n capability_key?: string;\n buyer_user_id?: string;\n seller_user_id?: string;\n billing_model?: string;\n purchase_path?: string;\n currency?: string;\n amount_minor?: number;\n}\n\nexport interface PaymentEventData extends SubscriptionLifecycleEventData {\n payment_status?: string;\n}\n\nexport interface CapabilityEventData extends Record<string, unknown> {\n listing_id?: string;\n capability_key?: string;\n status?: string;\n previous_status?: string;\n owner_user_id?: string;\n published_at?: string;\n}\n\nexport interface ExecutionCompletedEventData extends Record<string, unknown> {\n usage_event_id?: string;\n access_grant_id?: string;\n listing_id?: string;\n capability_key?: string;\n agent_id?: string;\n execution_kind?: string;\n environment?: string;\n}\n\nexport interface ExecutionFailedEventData extends ExecutionCompletedEventData {\n reason_code?: string;\n reason?: string;\n}\n\nexport interface SubscriptionCreatedEvent extends WebhookEventBase<\"subscription.created\", SubscriptionLifecycleEventData> {}\nexport interface SubscriptionRenewedEvent extends WebhookEventBase<\"subscription.renewed\", SubscriptionLifecycleEventData> {}\nexport interface SubscriptionCancelledEvent extends WebhookEventBase<\"subscription.cancelled\", SubscriptionLifecycleEventData> {}\nexport interface SubscriptionPausedEvent extends WebhookEventBase<\"subscription.paused\", SubscriptionLifecycleEventData> {}\nexport interface SubscriptionReinstatedEvent extends WebhookEventBase<\"subscription.reinstated\", SubscriptionLifecycleEventData> {}\nexport interface PaymentSucceededEvent extends WebhookEventBase<\"payment.succeeded\", PaymentEventData> {}\nexport interface PaymentFailedEvent extends WebhookEventBase<\"payment.failed\", PaymentEventData> {}\nexport interface CapabilityPublishedEvent extends WebhookEventBase<\"capability.published\", CapabilityEventData> {}\nexport interface CapabilityDelistedEvent extends WebhookEventBase<\"capability.delisted\", CapabilityEventData> {}\nexport interface ExecutionCompletedEvent extends WebhookEventBase<\"execution.completed\", ExecutionCompletedEventData> {}\nexport interface ExecutionFailedEvent extends WebhookEventBase<\"execution.failed\", ExecutionFailedEventData> {}\n\nexport type SiglumeWebhookEvent =\n | SubscriptionCreatedEvent\n | SubscriptionRenewedEvent\n | SubscriptionCancelledEvent\n | SubscriptionPausedEvent\n | SubscriptionReinstatedEvent\n | PaymentSucceededEvent\n | PaymentFailedEvent\n | CapabilityPublishedEvent\n | CapabilityDelistedEvent\n | ExecutionCompletedEvent\n | ExecutionFailedEvent;\n\nexport interface QueuedWebhookEvent {\n queued: boolean;\n event: SiglumeWebhookEvent;\n}\n\nexport interface WebhookDispatchResult {\n event: SiglumeWebhookEvent;\n verification: WebhookSignatureVerification;\n duplicate: boolean;\n callback_results: unknown[];\n}\n\nexport type HeaderLike = Headers | Record<string, unknown>;\nexport type WebhookCallback<T extends SiglumeWebhookEvent = SiglumeWebhookEvent> = (event: T) => unknown | Promise<unknown>;\n\nexport interface ExpressLikeRequest {\n headers: Record<string, string | string[] | undefined>;\n rawBody?: string | Uint8Array | ArrayBuffer | Buffer;\n body?: unknown;\n}\n\nexport interface ExpressLikeResponse {\n status(code: number): ExpressLikeResponse;\n json(payload: unknown): unknown;\n}\n\nexport class InMemoryWebhookDedupe {\n readonly ttl_seconds: number;\n readonly max_entries: number;\n private readonly entries = new Map<string, number>();\n\n constructor(options: { ttl_seconds?: number; max_entries?: number } = {}) {\n this.ttl_seconds = Math.max(1, Math.trunc(options.ttl_seconds ?? 3600));\n this.max_entries = Math.max(32, Math.trunc(options.max_entries ?? 4096));\n }\n\n private purge(nowMs: number): void {\n for (const [key, expiresAt] of this.entries.entries()) {\n if (expiresAt <= nowMs) {\n this.entries.delete(key);\n }\n }\n while (this.entries.size > this.max_entries) {\n const oldest = [...this.entries.entries()].sort((left, right) => left[1] - right[1])[0]?.[0];\n if (!oldest) {\n return;\n }\n this.entries.delete(oldest);\n }\n }\n\n is_duplicate(idempotency_key: string, nowMs = Date.now()): boolean {\n this.purge(nowMs);\n const key = String(idempotency_key ?? \"\").trim();\n if (!key) {\n return false;\n }\n return this.entries.has(key);\n }\n\n mark_processed(idempotency_key: string, nowMs = Date.now()): void {\n this.purge(nowMs);\n const key = String(idempotency_key ?? \"\").trim();\n if (!key) {\n return;\n }\n this.entries.set(key, nowMs + (this.ttl_seconds * 1000));\n this.purge(nowMs);\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction toRecord(value: unknown): Record<string, unknown> {\n if (!isRecord(value)) {\n return {};\n }\n return Object.fromEntries(Object.entries(value).map(([key, item]) => [String(key), cloneJson(item)]));\n}\n\nfunction cloneJson(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((item) => cloneJson(item));\n }\n if (isRecord(value)) {\n return Object.fromEntries(Object.entries(value).map(([key, item]) => [String(key), cloneJson(item)]));\n }\n return value;\n}\n\nfunction stringOrNull(value: unknown): string | null {\n const text = value === undefined || value === null ? \"\" : String(value).trim();\n return text.length > 0 ? text : null;\n}\n\nfunction requireRecord(value: unknown, name: string): Record<string, unknown> {\n if (!isRecord(value)) {\n throw new SiglumeWebhookPayloadError(`${name} must be an object.`);\n }\n return toRecord(value);\n}\n\nfunction headerValue(headers: HeaderLike, name: string): string | null {\n const target = name.toLowerCase();\n if (headers instanceof Headers) {\n return stringOrNull(headers.get(name));\n }\n for (const [key, value] of Object.entries(headers ?? {})) {\n if (String(key).toLowerCase() !== target) {\n continue;\n }\n if (Array.isArray(value)) {\n return value.length > 0 ? stringOrNull(value[0]) : null;\n }\n return stringOrNull(value);\n }\n return null;\n}\n\nfunction bodyBytes(body: Uint8Array | ArrayBuffer | string | Record<string, unknown>): Uint8Array {\n if (body instanceof Uint8Array) {\n return body;\n }\n if (body instanceof ArrayBuffer) {\n return new Uint8Array(body);\n }\n if (typeof body === \"string\") {\n return new TextEncoder().encode(body);\n }\n if (isRecord(body)) {\n return new TextEncoder().encode(JSON.stringify(cloneJson(body)));\n }\n throw new SiglumeWebhookPayloadError(\"Webhook body must be raw bytes, a string, or a JSON object.\");\n}\n\nfunction parseSignatureHeader(signatureHeader: string): { timestamp: number; signature: string } {\n let timestamp: number | null = null;\n let signature: string | null = null;\n for (const item of String(signatureHeader ?? \"\").split(\",\")) {\n const [key, value] = item.trim().split(\"=\", 2);\n if (key === \"t\") {\n const parsed = Number.parseInt(value ?? \"\", 10);\n if (!Number.isFinite(parsed)) {\n throw new SiglumeWebhookSignatureError(\"Webhook signature timestamp is invalid.\");\n }\n timestamp = parsed;\n }\n if (key === \"v1\") {\n signature = String(value ?? \"\").trim();\n }\n }\n if (timestamp === null || !signature) {\n throw new SiglumeWebhookSignatureError(\"Webhook signature header is incomplete.\");\n }\n return { timestamp, signature };\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return [...bytes].map((item) => item.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const normalized = String(hex ?? \"\").trim().toLowerCase();\n if (normalized.length % 2 !== 0) {\n throw new SiglumeWebhookSignatureError(\"Webhook signature hex digest is invalid.\");\n }\n const bytes = new Uint8Array(normalized.length / 2);\n for (let index = 0; index < normalized.length; index += 2) {\n bytes[index / 2] = Number.parseInt(normalized.slice(index, index + 2), 16);\n }\n return bytes;\n}\n\nasync function hmacSha256(secret: string, payload: Uint8Array): Promise<string> {\n if (globalThis.crypto?.subtle) {\n const stablePayload = new Uint8Array(payload.byteLength);\n stablePayload.set(payload);\n const key = await globalThis.crypto.subtle.importKey(\n \"raw\",\n new TextEncoder().encode(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\"],\n );\n const digest = await globalThis.crypto.subtle.sign(\"HMAC\", key, stablePayload);\n return bytesToHex(new Uint8Array(digest));\n }\n if (typeof process !== \"undefined\" && process.versions?.node) {\n const crypto = await import(\"node:crypto\");\n return crypto.createHmac(\"sha256\", secret).update(Buffer.from(payload)).digest(\"hex\");\n }\n throw new SiglumeWebhookError(\"Web Crypto is required to verify Siglume webhook signatures in this runtime.\");\n}\n\nasync function timingSafeEqualHex(left: string, right: string): Promise<boolean> {\n const leftBytes = hexToBytes(left);\n const rightBytes = hexToBytes(right);\n if (leftBytes.length !== rightBytes.length) {\n return false;\n }\n let diff = 0;\n for (let index = 0; index < leftBytes.length; index += 1) {\n diff |= leftBytes[index]! ^ rightBytes[index]!;\n }\n return diff === 0;\n}\n\nexport async function compute_webhook_signature(\n signing_secret: string,\n body: Uint8Array | ArrayBuffer | string | Record<string, unknown>,\n options: { timestamp: number },\n): Promise<string> {\n if (!signing_secret) {\n throw new SiglumeWebhookSignatureError(\"SIGLUME webhook signing secret is required.\");\n }\n const timestamp = Math.trunc(options.timestamp);\n const bytes = bodyBytes(body);\n const prefix = new TextEncoder().encode(`${timestamp}.`);\n const payload = new Uint8Array(prefix.length + bytes.length);\n payload.set(prefix, 0);\n payload.set(bytes, prefix.length);\n return hmacSha256(signing_secret, payload);\n}\n\nexport async function build_webhook_signature_header(\n signing_secret: string,\n body: Uint8Array | ArrayBuffer | string | Record<string, unknown>,\n options: { timestamp?: number } = {},\n): Promise<string> {\n const timestamp = Math.trunc(options.timestamp ?? (Date.now() / 1000));\n const signature = await compute_webhook_signature(signing_secret, body, { timestamp });\n return `t=${timestamp},v1=${signature}`;\n}\n\nexport async function verify_webhook_signature(\n signing_secret: string,\n body: Uint8Array | ArrayBuffer | string | Record<string, unknown>,\n signature_header: string,\n options: { tolerance_seconds?: number; now?: number } = {},\n): Promise<WebhookSignatureVerification> {\n const { timestamp, signature } = parseSignatureHeader(signature_header);\n const toleranceSeconds = Math.max(1, Math.trunc(options.tolerance_seconds ?? DEFAULT_WEBHOOK_TOLERANCE_SECONDS));\n const nowSeconds = Math.trunc(options.now ?? (Date.now() / 1000));\n if (Math.abs(nowSeconds - timestamp) > toleranceSeconds) {\n throw new SiglumeWebhookSignatureError(\"Webhook timestamp is outside the allowed tolerance window.\");\n }\n const expected = await compute_webhook_signature(signing_secret, body, { timestamp });\n if (!(await timingSafeEqualHex(expected, signature))) {\n throw new SiglumeWebhookSignatureError(\"Webhook signature did not match.\");\n }\n return { timestamp, signature };\n}\n\nexport function parse_webhook_subscription(payload: unknown): WebhookSubscriptionRecord {\n const record = requireRecord(payload, \"webhook subscription\");\n return {\n subscription_id: String(record.id ?? record.subscription_id ?? \"\"),\n owner_user_id: String(record.owner_user_id ?? \"\"),\n callback_url: String(record.callback_url ?? \"\"),\n status: String(record.status ?? \"\"),\n event_types: Array.isArray(record.event_types)\n ? record.event_types.map((item) => String(item)).filter((item) => item.length > 0)\n : [],\n description: stringOrNull(record.description),\n signing_secret_hint: stringOrNull(record.signing_secret_hint),\n signing_secret: stringOrNull(record.signing_secret),\n metadata: toRecord(record.metadata),\n last_delivery_at: stringOrNull(record.last_delivery_at),\n created_at: stringOrNull(record.created_at),\n updated_at: stringOrNull(record.updated_at),\n raw: record,\n };\n}\n\nexport function parse_webhook_delivery(payload: unknown): WebhookDeliveryRecord {\n const record = requireRecord(payload, \"webhook delivery\");\n return {\n delivery_id: String(record.id ?? record.delivery_id ?? \"\"),\n subscription_id: String(record.subscription_id ?? \"\"),\n event_id: String(record.event_id ?? \"\"),\n event_type: String(record.event_type ?? \"\"),\n idempotency_key: String(record.idempotency_key ?? \"\"),\n callback_url: String(record.callback_url ?? \"\"),\n delivery_status: String(record.delivery_status ?? \"\"),\n request_headers: toRecord(record.request_headers),\n request_body: toRecord(record.request_body),\n response_status: typeof record.response_status === \"number\" ? record.response_status : null,\n response_headers: toRecord(record.response_headers),\n response_body: cloneJson(record.response_body),\n duration_ms: typeof record.duration_ms === \"number\" ? record.duration_ms : null,\n attempt_count: typeof record.attempt_count === \"number\" ? record.attempt_count : 0,\n last_attempt_at: stringOrNull(record.last_attempt_at),\n delivered_at: stringOrNull(record.delivered_at),\n error_message: stringOrNull(record.error_message),\n trace_id: stringOrNull(record.trace_id),\n created_at: stringOrNull(record.created_at),\n updated_at: stringOrNull(record.updated_at),\n raw: record,\n };\n}\n\nexport function parse_webhook_event(payload: unknown): SiglumeWebhookEvent {\n const record = requireRecord(payload, \"webhook event\");\n const eventType = String(record.type ?? \"\").trim();\n if (!WEBHOOK_EVENT_SET.has(eventType)) {\n throw new SiglumeWebhookPayloadError(`Unsupported webhook event type: ${eventType || \"<missing>\"}.`);\n }\n const event = {\n id: String(record.id ?? \"\"),\n type: eventType as WebhookEventType,\n api_version: String(record.api_version ?? \"\"),\n occurred_at: String(record.occurred_at ?? \"\"),\n idempotency_key: String(record.idempotency_key ?? record.id ?? \"\"),\n trace_id: stringOrNull(record.trace_id),\n data: toRecord(record.data),\n raw: record,\n } as SiglumeWebhookEvent;\n if (!event.id) {\n throw new SiglumeWebhookPayloadError(\"Webhook event id is required.\");\n }\n if (!event.api_version) {\n throw new SiglumeWebhookPayloadError(\"Webhook api_version is required.\");\n }\n if (!event.occurred_at) {\n throw new SiglumeWebhookPayloadError(\"Webhook occurred_at is required.\");\n }\n return event;\n}\n\nexport function parse_queued_webhook_event(payload: unknown): QueuedWebhookEvent {\n const record = requireRecord(payload, \"queued webhook event\");\n return {\n queued: Boolean(record.queued),\n event: parse_webhook_event(record.event),\n };\n}\n\nfunction eventBodyFromBytes(bytes: Uint8Array): SiglumeWebhookEvent {\n let parsed: unknown;\n try {\n parsed = JSON.parse(new TextDecoder().decode(bytes));\n } catch (error) {\n throw new SiglumeWebhookPayloadError(\"Webhook body must contain valid UTF-8 JSON.\");\n }\n return parse_webhook_event(parsed);\n}\n\nfunction rawBodyFromExpressRequest(request: ExpressLikeRequest): Uint8Array {\n const raw = request.rawBody;\n if (raw instanceof Uint8Array) {\n return raw;\n }\n if (raw instanceof ArrayBuffer) {\n return new Uint8Array(raw);\n }\n if (ArrayBuffer.isView(raw)) {\n return new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength);\n }\n if (typeof raw === \"string\") {\n return new TextEncoder().encode(raw);\n }\n if (typeof request.body === \"string\") {\n return new TextEncoder().encode(request.body);\n }\n if (isRecord(request.body)) {\n throw new SiglumeWebhookPayloadError(\n \"Express webhook handling requires req.rawBody (or a string body) so the signature can be verified against the original payload.\",\n );\n }\n throw new SiglumeWebhookPayloadError(\"Webhook request body is missing.\");\n}\n\nexport class WebhookHandler {\n readonly signing_secret: string;\n readonly tolerance_seconds: number;\n readonly deduper?: InMemoryWebhookDedupe;\n private readonly handlers = new Map<string, WebhookCallback[]>();\n\n constructor(options: {\n signing_secret: string;\n tolerance_seconds?: number;\n deduper?: InMemoryWebhookDedupe;\n }) {\n if (!options.signing_secret) {\n throw new SiglumeWebhookSignatureError(\"SIGLUME_WEBHOOK_SECRET is required.\");\n }\n this.signing_secret = options.signing_secret;\n this.tolerance_seconds = Math.max(1, Math.trunc(options.tolerance_seconds ?? DEFAULT_WEBHOOK_TOLERANCE_SECONDS));\n this.deduper = options.deduper;\n }\n\n on<T extends WebhookEventType | \"*\">(\n event_type: T,\n handler: T extends \"*\" ? WebhookCallback<SiglumeWebhookEvent> : WebhookCallback<Extract<SiglumeWebhookEvent, { type: T }>>,\n ): this {\n const normalized = String(event_type ?? \"\").trim();\n if (normalized !== \"*\" && !WEBHOOK_EVENT_SET.has(normalized)) {\n throw new SiglumeWebhookError(`Unsupported Siglume webhook event type: ${normalized}`);\n }\n const bucket = this.handlers.get(normalized) ?? [];\n bucket.push(handler as WebhookCallback);\n this.handlers.set(normalized, bucket);\n return this;\n }\n\n async verify(\n body: Uint8Array | ArrayBuffer | string | Record<string, unknown>,\n headers: HeaderLike,\n options: { now?: number } = {},\n ): Promise<{ event: SiglumeWebhookEvent; verification: WebhookSignatureVerification }> {\n const signatureHeader = headerValue(headers, WEBHOOK_SIGNATURE_HEADER);\n if (!signatureHeader) {\n throw new SiglumeWebhookSignatureError(\"Missing Siglume-Signature header.\");\n }\n const bytes = bodyBytes(body);\n const verification = await verify_webhook_signature(this.signing_secret, bytes, signatureHeader, {\n tolerance_seconds: this.tolerance_seconds,\n now: options.now,\n });\n const event = eventBodyFromBytes(bytes);\n const eventIdHeader = headerValue(headers, WEBHOOK_EVENT_ID_HEADER);\n const eventTypeHeader = headerValue(headers, WEBHOOK_EVENT_TYPE_HEADER);\n if (eventIdHeader && eventIdHeader !== event.id) {\n throw new SiglumeWebhookPayloadError(\"Siglume-Event-Id header did not match the webhook body.\");\n }\n if (eventTypeHeader && eventTypeHeader !== event.type) {\n throw new SiglumeWebhookPayloadError(\"Siglume-Event-Type header did not match the webhook body.\");\n }\n return { event, verification };\n }\n\n async dispatch(event: SiglumeWebhookEvent): Promise<unknown[]> {\n const callbacks = [...(this.handlers.get(\"*\") ?? []), ...(this.handlers.get(event.type) ?? [])];\n const results: unknown[] = [];\n for (const callback of callbacks) {\n results.push(await callback(event));\n }\n return results;\n }\n\n async handle(\n body: Uint8Array | ArrayBuffer | string | Record<string, unknown>,\n headers: HeaderLike,\n options: { now?: number } = {},\n ): Promise<WebhookDispatchResult> {\n const { event, verification } = await this.verify(body, headers, options);\n if (this.deduper?.is_duplicate(event.idempotency_key)) {\n return {\n event,\n verification,\n duplicate: true,\n callback_results: [],\n };\n }\n const callbackResults = await this.dispatch(event);\n this.deduper?.mark_processed(event.idempotency_key);\n return {\n event,\n verification,\n duplicate: false,\n callback_results: callbackResults,\n };\n }\n\n asExpressHandler() {\n return async (request: ExpressLikeRequest, response: ExpressLikeResponse): Promise<void> => {\n try {\n const result = await this.handle(rawBodyFromExpressRequest(request), request.headers);\n response.status(200).json({\n ok: true,\n duplicate: result.duplicate,\n event_id: result.event.id,\n event_type: result.event.type,\n });\n } catch (error) {\n if (error instanceof SiglumeWebhookSignatureError) {\n response.status(401).json({ ok: false, code: \"INVALID_SIGNATURE\", error: error.message });\n return;\n }\n if (error instanceof SiglumeWebhookReplayError) {\n response.status(409).json({ ok: false, code: \"DUPLICATE_EVENT\", error: error.message });\n return;\n }\n if (error instanceof SiglumeWebhookPayloadError || error instanceof SiglumeWebhookError) {\n response.status(400).json({ ok: false, code: \"INVALID_PAYLOAD\", error: error.message });\n return;\n }\n throw error;\n }\n };\n }\n}\n","import { isRecord, stringOrNull, toRecord } from \"./utils\";\n\nexport interface SettlementReceipt {\n receipt_id: string;\n chain_receipt_id?: string | null;\n tx_hash: string;\n user_operation_hash?: string | null;\n receipt_kind?: string | null;\n reference_type?: string | null;\n reference_id?: string | null;\n tx_status?: string | null;\n network: string;\n chain_id: number;\n block_number?: number | null;\n confirmations: number;\n finality_confirmations: number;\n submitted_hash?: string | null;\n tx_hash_is_placeholder: boolean;\n actual_gas_used?: number | null;\n actual_gas_cost_wei?: number | null;\n actual_gas_cost_pol?: string | null;\n last_status_checked_at?: string | null;\n submitted_at_iso?: string | null;\n confirmed_at_iso?: string | null;\n created_at_iso?: string | null;\n updated_at_iso?: string | null;\n payload: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface PolygonMandate {\n mandate_id: string;\n payer_wallet?: string | null;\n payee_wallet?: string | null;\n monthly_cap_minor: number;\n currency: string;\n network: string;\n cadence: string;\n purpose: string;\n status: string;\n retry_count: number;\n next_attempt_at_iso?: string | null;\n last_attempt_at_iso?: string | null;\n canceled_at_iso?: string | null;\n cancel_scheduled: boolean;\n cancel_scheduled_at_iso?: string | null;\n onchain_mandate_id?: number | null;\n idempotency_key?: string | null;\n display_currency?: string | null;\n chain_receipt?: SettlementReceipt | null;\n metadata: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface EmbeddedWalletCharge {\n tx_hash: string;\n user_operation_hash?: string | null;\n block_number?: number | null;\n gas_sponsored_by?: string | null;\n settlement_amount_minor?: number | null;\n platform_fee_minor?: number | null;\n developer_net_minor?: number | null;\n currency?: string | null;\n status?: string | null;\n receipt_id?: string | null;\n charge_ref?: string | null;\n period_key?: string | null;\n submitted_at_iso?: string | null;\n confirmed_at_iso?: string | null;\n receipt?: SettlementReceipt | null;\n approval?: Record<string, unknown> | null;\n finalization?: Record<string, unknown> | null;\n raw: Record<string, unknown>;\n}\n\nexport interface CrossCurrencyQuote {\n from_currency: string;\n to_currency: string;\n rate: number;\n expires_at_iso?: string | null;\n venue?: string | null;\n source_amount_minor: number;\n quoted_amount_minor: number;\n minimum_received_minor?: number | null;\n slippage_bps: number;\n fee_minor: number;\n fee_currency?: string | null;\n price_impact_bps: number;\n allowance_needed: boolean;\n allowance_spender?: string | null;\n actual_allowance_minor?: number | null;\n approve_transaction_request?: Record<string, unknown> | null;\n swap_transaction_request?: Record<string, unknown> | null;\n raw: Record<string, unknown>;\n}\n\nexport function parse_settlement_receipt(data: Record<string, unknown>): SettlementReceipt {\n const payload = toRecord(data.payload_jsonb);\n return {\n receipt_id: String(data.receipt_id ?? data.chain_receipt_id ?? \"\"),\n chain_receipt_id: stringOrNull(data.chain_receipt_id) ?? stringOrNull(data.receipt_id),\n tx_hash: String(data.tx_hash ?? \"\"),\n user_operation_hash: stringOrNull(data.user_operation_hash),\n receipt_kind: stringOrNull(data.receipt_kind),\n reference_type: stringOrNull(data.reference_type),\n reference_id: stringOrNull(data.reference_id),\n tx_status: stringOrNull(data.tx_status),\n network: String(data.network ?? \"polygon\"),\n chain_id: Number(data.chain_id ?? 137),\n block_number: numberOrNull(data.block_number),\n confirmations: Number(data.confirmations ?? 0),\n finality_confirmations: Number(data.finality_confirmations ?? 0),\n submitted_hash: stringOrNull(data.submitted_hash),\n tx_hash_is_placeholder: Boolean(data.tx_hash_is_placeholder ?? false),\n actual_gas_used: numberOrNull(data.actual_gas_used),\n actual_gas_cost_wei: numberOrNull(data.actual_gas_cost_wei),\n actual_gas_cost_pol: stringOrNull(data.actual_gas_cost_pol),\n last_status_checked_at: stringOrNull(data.last_status_checked_at),\n submitted_at_iso: stringOrNull(data.submitted_at),\n confirmed_at_iso: stringOrNull(data.confirmed_at),\n created_at_iso: stringOrNull(data.created_at),\n updated_at_iso: stringOrNull(data.updated_at),\n payload,\n raw: { ...data },\n };\n}\n\nexport function parse_polygon_mandate(data: Record<string, unknown>): PolygonMandate {\n const metadata = toRecord(data.metadata_jsonb);\n const transaction_request = toRecord(data.transaction_request);\n const approve_transaction_request = toRecord(data.approve_transaction_request);\n const chain_receipt = isRecord(data.chain_receipt) ? parse_settlement_receipt(data.chain_receipt) : null;\n return {\n mandate_id: String(data.mandate_id ?? data.payment_mandate_id ?? \"\"),\n payer_wallet:\n firstText(\n transaction_request.from_address,\n approve_transaction_request.from_address,\n metadata.wallet_address,\n metadata.smart_account_address,\n ) ?? null,\n payee_wallet: firstText(data.payee_ref, metadata.payee_wallet) ?? null,\n monthly_cap_minor: Number(data.max_amount_minor ?? 0),\n currency: firstText(data.token_symbol, data.display_currency, \"USDC\") ?? \"USDC\",\n network: String(data.network ?? \"polygon\"),\n cadence: String(data.cadence ?? \"monthly\"),\n purpose: String(data.purpose ?? \"subscription\"),\n status: String(data.status ?? \"active\"),\n retry_count: Number(data.retry_count ?? 0),\n next_attempt_at_iso: stringOrNull(data.next_attempt_at),\n last_attempt_at_iso: stringOrNull(data.last_attempt_at),\n canceled_at_iso: stringOrNull(data.canceled_at),\n cancel_scheduled: Boolean(metadata.cancel_scheduled) || Boolean(metadata.cancel_queue_required),\n cancel_scheduled_at_iso: stringOrNull(metadata.cancel_queue_requested_at),\n onchain_mandate_id: numberOrNull(metadata.onchain_mandate_id),\n idempotency_key: stringOrNull(data.idempotency_key),\n display_currency: stringOrNull(data.display_currency),\n chain_receipt,\n metadata,\n raw: { ...data },\n };\n}\n\nexport function parse_embedded_wallet_charge(\n data: Record<string, unknown> = {},\n options: { receipt?: SettlementReceipt | Record<string, unknown> | null } = {},\n): EmbeddedWalletCharge {\n const receipt = isSettlementReceipt(options.receipt)\n ? options.receipt\n : isRecord(options.receipt)\n ? parse_settlement_receipt(options.receipt)\n : options.receipt ?? (isRecord(data.receipt) ? parse_settlement_receipt(data.receipt) : null);\n const payload = receipt?.payload ?? {};\n const settlement_amount_minor = numberOrNull(data.gross_amount_minor)\n ?? numberOrNull(payload.gross_amount_minor)\n ?? numberOrNull(payload.amount_minor);\n const platform_fee_minor = numberOrNull(payload.platform_fee_minor) ?? numberOrNull(payload.fee_minor);\n const developer_net_minor = numberOrNull(payload.developer_net_minor)\n ?? (settlement_amount_minor !== null && platform_fee_minor !== null\n ? settlement_amount_minor - platform_fee_minor\n : null);\n return {\n tx_hash: firstText(data.tx_hash, receipt?.tx_hash) ?? \"\",\n user_operation_hash: firstText(receipt?.user_operation_hash, data.user_operation_hash) ?? null,\n block_number: receipt?.block_number ?? null,\n gas_sponsored_by: firstText(payload.gas_sponsored_by, payload.paymaster, \"platform\") ?? null,\n settlement_amount_minor,\n platform_fee_minor,\n developer_net_minor,\n currency: firstText(payload.token_symbol, payload.display_currency) ?? null,\n status: firstText(data.status, receipt?.tx_status) ?? null,\n receipt_id: receipt?.receipt_id ?? null,\n charge_ref: stringOrNull(data.charge_ref),\n period_key: stringOrNull(data.period_key),\n submitted_at_iso: receipt?.submitted_at_iso ?? null,\n confirmed_at_iso: receipt?.confirmed_at_iso ?? null,\n receipt,\n approval: isRecord(data.approval) ? { ...data.approval } : null,\n finalization: isRecord(data.finalization) ? { ...data.finalization } : null,\n raw: { ...data },\n };\n}\n\nexport function parse_cross_currency_quote(data: Record<string, unknown>): CrossCurrencyQuote {\n return {\n from_currency: String(data.sell_token ?? data.from_currency ?? \"\"),\n to_currency: String(data.buy_token ?? data.to_currency ?? \"\"),\n rate: Number(data.rate ?? 0),\n expires_at_iso: stringOrNull(data.quote_expires_at ?? data.expires_at_iso),\n venue: firstText(data.provider, data.venue) ?? null,\n source_amount_minor: Number(data.amount_minor ?? data.source_amount_minor ?? 0),\n quoted_amount_minor: Number(data.estimated_buy_minor ?? data.quoted_amount_minor ?? 0),\n minimum_received_minor: numberOrNull(data.minimum_buy_minor),\n slippage_bps: Number(data.slippage_bps ?? 0),\n fee_minor: Number(data.fee_minor ?? 0),\n fee_currency: firstText(data.fee_token, data.fee_currency) ?? null,\n price_impact_bps: Number(data.price_impact_bps ?? 0),\n allowance_needed: Boolean(data.allowance_needed ?? false),\n allowance_spender: stringOrNull(data.allowance_spender),\n actual_allowance_minor: numberOrNull(data.actual_allowance_minor),\n approve_transaction_request: isRecord(data.approve_transaction_request) ? { ...data.approve_transaction_request } : null,\n swap_transaction_request: isRecord(data.swap_transaction_request) ? { ...data.swap_transaction_request } : null,\n raw: { ...data },\n };\n}\n\nexport function simulate_polygon_mandate(options: {\n mandate_id: string;\n payer_wallet: string;\n payee_wallet: string;\n monthly_cap_minor: number;\n currency: string;\n status?: string;\n next_attempt_at_iso?: string | null;\n cancel_scheduled?: boolean;\n cadence?: string;\n purpose?: string;\n}): PolygonMandate {\n const metadata: Record<string, unknown> = {\n cancel_scheduled: Boolean(options.cancel_scheduled ?? false),\n payee_wallet: options.payee_wallet,\n };\n return {\n mandate_id: options.mandate_id,\n payer_wallet: options.payer_wallet,\n payee_wallet: options.payee_wallet,\n monthly_cap_minor: Math.trunc(options.monthly_cap_minor),\n currency: String(options.currency).toUpperCase(),\n network: \"polygon\",\n cadence: options.cadence ?? \"monthly\",\n purpose: options.purpose ?? \"subscription\",\n status: options.status ?? \"active\",\n retry_count: 0,\n next_attempt_at_iso: options.next_attempt_at_iso ?? \"2026-05-01T00:00:00Z\",\n cancel_scheduled: Boolean(options.cancel_scheduled ?? false),\n onchain_mandate_id: 1,\n metadata,\n raw: {\n mandate_id: options.mandate_id,\n payee_ref: options.payee_wallet,\n token_symbol: String(options.currency).toUpperCase(),\n max_amount_minor: Math.trunc(options.monthly_cap_minor),\n status: options.status ?? \"active\",\n next_attempt_at: options.next_attempt_at_iso ?? \"2026-05-01T00:00:00Z\",\n metadata_jsonb: metadata,\n },\n };\n}\n\nexport function simulate_embedded_wallet_charge(options: {\n mandate: PolygonMandate;\n amount_minor: number;\n tx_hash: string;\n user_operation_hash?: string | null;\n block_number?: number;\n gas_sponsored_by?: string;\n platform_fee_minor?: number;\n developer_net_minor?: number | null;\n}): EmbeddedWalletCharge {\n const settlement_amount_minor = Math.trunc(options.amount_minor);\n const platform_fee_minor = Math.trunc(options.platform_fee_minor ?? 0);\n const developer_net_minor = options.developer_net_minor == null\n ? settlement_amount_minor - platform_fee_minor\n : Math.trunc(options.developer_net_minor);\n const receipt: SettlementReceipt = {\n receipt_id: `chr_${options.mandate.mandate_id}`,\n chain_receipt_id: `chr_${options.mandate.mandate_id}`,\n tx_hash: options.tx_hash,\n user_operation_hash: stringOrNull(options.user_operation_hash),\n receipt_kind: \"mandate_charge_submitted\",\n reference_type: \"payment_mandate\",\n reference_id: options.mandate.mandate_id,\n tx_status: \"confirmed\",\n network: options.mandate.network,\n chain_id: 137,\n block_number: Math.trunc(options.block_number ?? 123456),\n confirmations: 12,\n finality_confirmations: 12,\n submitted_hash: stringOrNull(options.user_operation_hash) ?? options.tx_hash,\n tx_hash_is_placeholder: false,\n submitted_at_iso: \"2026-04-20T10:00:00Z\",\n confirmed_at_iso: \"2026-04-20T10:00:15Z\",\n payload: {\n gross_amount_minor: settlement_amount_minor,\n platform_fee_minor,\n developer_net_minor,\n token_symbol: options.mandate.currency,\n payee_wallet: options.mandate.payee_wallet,\n gas_sponsored_by: options.gas_sponsored_by ?? \"platform\",\n },\n raw: {},\n };\n return {\n tx_hash: options.tx_hash,\n user_operation_hash: stringOrNull(options.user_operation_hash),\n block_number: receipt.block_number,\n gas_sponsored_by: options.gas_sponsored_by ?? \"platform\",\n settlement_amount_minor,\n platform_fee_minor,\n developer_net_minor,\n currency: options.mandate.currency,\n status: \"confirmed\",\n receipt_id: receipt.receipt_id,\n charge_ref: `charge_${options.mandate.mandate_id}`,\n period_key: \"202604\",\n submitted_at_iso: receipt.submitted_at_iso,\n confirmed_at_iso: receipt.confirmed_at_iso,\n receipt,\n finalization: { await: { confirmed: true, attempts: 1 } },\n raw: {\n status: \"submitted\",\n tx_hash: options.tx_hash,\n user_operation_hash: options.user_operation_hash ?? null,\n gross_amount_minor: settlement_amount_minor,\n platform_fee_minor,\n developer_net_minor,\n },\n };\n}\n\nfunction numberOrNull(value: unknown): number | null {\n if (value === undefined || value === null || value === \"\") {\n return null;\n }\n const parsed = Number(value);\n return Number.isFinite(parsed) ? Math.trunc(parsed) : null;\n}\n\nfunction firstText(...values: unknown[]): string | null {\n for (const value of values) {\n const text = stringOrNull(value);\n if (text) {\n return text;\n }\n }\n return null;\n}\n\nfunction isSettlementReceipt(value: unknown): value is SettlementReceipt {\n return isRecord(value) && typeof value.receipt_id === \"string\" && isRecord(value.payload);\n}\n","export const DEFAULT_OPERATION_AGENT_ID = \"agt_owner_demo\";\n\nexport interface OperationMetadata {\n operation_key: string;\n summary: string;\n params_summary: string;\n page_href?: string | null;\n allowed_params: string[];\n required_params: string[];\n requires_params: boolean;\n param_types: Record<string, string>;\n permission_class: string;\n approval_mode: string;\n input_schema: Record<string, unknown>;\n output_schema: Record<string, unknown>;\n agent_id?: string | null;\n source: string;\n raw: Record<string, unknown>;\n}\n\nexport interface OperationExecution {\n agent_id: string;\n operation_key: string;\n message: string;\n action: string;\n result: Record<string, unknown>;\n // Fields below are v0.6 additions for the owner-operation execute\n // envelope. They are declared optional so that downstream consumers\n // with existing object literals or mocks (conforming to the pre-v0.6\n // shape) continue to type-check without having to pre-populate every\n // new field. SDK-internal factories still always set them; optional\n // is for external surface compatibility only.\n status?: string;\n approval_required?: boolean;\n intent_id?: string | null;\n approval_status?: string | null;\n approval_snapshot_hash?: string | null;\n action_payload?: Record<string, unknown>;\n safety?: Record<string, unknown>;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport function defaultOperationOutputSchema(): Record<string, unknown> {\n return {\n type: \"object\",\n properties: {\n summary: {\n type: \"string\",\n description: \"One-line summary of the first-party operation result.\",\n },\n action: {\n type: \"string\",\n description: \"Structured action label returned by Siglume.\",\n },\n result: {\n type: \"object\",\n description: \"Raw first-party operation payload returned by Siglume.\",\n },\n },\n required: [\"summary\", \"action\", \"result\"],\n additionalProperties: false,\n };\n}\n\nconst KNOWN_OPERATION_OVERRIDES: Record<string, Record<string, unknown>> = {\n \"owner.charter.get\": {\n summary: \"Read the current owner charter.\",\n params_summary: \"No parameters.\",\n page_href: \"/owner/charters\",\n allowed_params: [],\n required_params: [],\n requires_params: false,\n permission_class: \"read-only\",\n approval_mode: \"auto\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n \"owner.charter.update\": {\n summary: \"Update the owner charter.\",\n params_summary:\n \"Supports partial updates for role, goals, target_profile, qualification_criteria, success_metrics, and constraints.\",\n page_href: \"/owner/charters\",\n allowed_params: [\"role\", \"goals\", \"target_profile\", \"qualification_criteria\", \"success_metrics\", \"constraints\"],\n required_params: [\"goals\"],\n requires_params: true,\n param_types: {\n role: \"string\",\n goals: \"dict\",\n target_profile: \"dict\",\n qualification_criteria: \"dict\",\n success_metrics: \"dict\",\n constraints: \"dict\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n role: {\n type: \"string\",\n description: \"Updated owner role label, such as buyer or researcher.\",\n default: \"buyer\",\n },\n goals: {\n type: \"object\",\n description: \"Updated charter goals payload.\",\n properties: {\n charter_text: {\n type: \"string\",\n description: \"Human-readable charter text to store in the owner charter.\",\n default: \"Prefer explicit approvals for unusual purchases.\",\n },\n },\n required: [\"charter_text\"],\n additionalProperties: true,\n },\n target_profile: {\n type: \"object\",\n description: \"Optional target-profile constraints for the agent.\",\n default: {},\n },\n qualification_criteria: {\n type: \"object\",\n description: \"Optional qualification criteria for tasks the agent may accept.\",\n default: {},\n },\n success_metrics: {\n type: \"object\",\n description: \"Optional success metrics, such as approval_rate_floor.\",\n default: { approval_rate_floor: 0.8 },\n },\n constraints: {\n type: \"object\",\n description: \"Optional constraint payload applied to the charter.\",\n default: {},\n },\n },\n required: [\"goals\"],\n additionalProperties: false,\n },\n },\n \"owner.approval_policy.get\": {\n summary: \"Read the current owner approval policy.\",\n params_summary: \"No parameters.\",\n page_href: \"/owner/policies\",\n allowed_params: [],\n required_params: [],\n requires_params: false,\n permission_class: \"read-only\",\n approval_mode: \"auto\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n \"owner.approval_policy.update\": {\n summary: \"Update the owner approval policy.\",\n params_summary:\n \"Supports partial updates for auto_approve_below, always_require_approval_for, deny_if, approval_ttl_minutes, structured_only, merchant_allowlist, merchant_denylist, category_allowlist, category_denylist, and risk_policy.\",\n page_href: \"/owner/policies\",\n allowed_params: [\n \"auto_approve_below\",\n \"always_require_approval_for\",\n \"deny_if\",\n \"approval_ttl_minutes\",\n \"structured_only\",\n \"merchant_allowlist\",\n \"merchant_denylist\",\n \"category_allowlist\",\n \"category_denylist\",\n \"risk_policy\",\n ],\n required_params: [\"auto_approve_below\"],\n requires_params: true,\n param_types: {\n auto_approve_below: \"dict_int\",\n always_require_approval_for: \"list_str\",\n deny_if: \"dict\",\n approval_ttl_minutes: \"int\",\n structured_only: \"bool\",\n merchant_allowlist: \"list_str\",\n merchant_denylist: \"list_str\",\n category_allowlist: \"list_str\",\n category_denylist: \"list_str\",\n risk_policy: \"dict\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n auto_approve_below: {\n type: \"object\",\n description: \"Currency-to-threshold map for auto-approved actions in minor units.\",\n default: { JPY: 3000 },\n additionalProperties: { type: \"integer\" },\n },\n always_require_approval_for: {\n type: \"array\",\n description: \"Scopes that should always require approval.\",\n items: { type: \"string\" },\n default: [\"travel.booking\"],\n },\n deny_if: {\n type: \"object\",\n description: \"Risk filters that should deny execution.\",\n default: {},\n },\n approval_ttl_minutes: {\n type: \"integer\",\n description: \"Approval request time-to-live in minutes.\",\n default: 720,\n },\n structured_only: {\n type: \"boolean\",\n description: \"Require machine-structured action requests before approval.\",\n default: true,\n },\n merchant_allowlist: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n merchant_denylist: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n category_allowlist: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n category_denylist: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n risk_policy: {\n type: \"object\",\n description: \"Structured risk-policy payload.\",\n default: {},\n },\n },\n required: [\"auto_approve_below\"],\n additionalProperties: false,\n },\n },\n \"owner.budget.get\": {\n summary: \"Read the current delegated budget.\",\n params_summary: \"Optional currency parameter.\",\n page_href: \"/owner/budgets\",\n allowed_params: [\"currency\"],\n required_params: [],\n requires_params: false,\n param_types: { currency: \"string\" },\n permission_class: \"read-only\",\n approval_mode: \"auto\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n currency: {\n type: \"string\",\n description: \"Optional currency filter for the delegated-budget snapshot.\",\n default: \"JPY\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n \"owner.budget.update\": {\n summary: \"Update the delegated budget.\",\n params_summary:\n \"Supports partial updates for currency, period_limit_minor, per_order_limit_minor, auto_approve_below_minor, period_start, period_end, limits, and metadata.\",\n page_href: \"/owner/budgets\",\n allowed_params: [\n \"currency\",\n \"period_start\",\n \"period_end\",\n \"period_limit_minor\",\n \"per_order_limit_minor\",\n \"auto_approve_below_minor\",\n \"limits\",\n \"metadata\",\n ],\n required_params: [\"period_limit_minor\"],\n requires_params: true,\n param_types: {\n currency: \"string\",\n period_start: \"string\",\n period_end: \"string\",\n period_limit_minor: \"int\",\n per_order_limit_minor: \"int\",\n auto_approve_below_minor: \"int\",\n limits: \"dict\",\n metadata: \"dict\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n input_schema: {\n type: \"object\",\n properties: {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n },\n currency: {\n type: \"string\",\n description: \"Budget currency code.\",\n default: \"JPY\",\n },\n period_start: {\n type: \"string\",\n description: \"Optional RFC3339 start time for the budget window.\",\n default: \"2026-04-01T00:00:00Z\",\n },\n period_end: {\n type: \"string\",\n description: \"Optional RFC3339 end time for the budget window.\",\n default: \"2026-05-01T00:00:00Z\",\n },\n period_limit_minor: {\n type: \"integer\",\n description: \"Maximum delegated spend for the budget period in minor units.\",\n default: 50000,\n },\n per_order_limit_minor: {\n type: \"integer\",\n description: \"Maximum delegated spend per order in minor units.\",\n default: 12000,\n },\n auto_approve_below_minor: {\n type: \"integer\",\n description: \"Auto-approve threshold in minor units.\",\n default: 3000,\n },\n limits: {\n type: \"object\",\n description: \"Optional nested budget limits payload.\",\n default: {},\n },\n metadata: {\n type: \"object\",\n description: \"Optional metadata persisted with the delegated budget.\",\n default: { source: \"siglume_init\" },\n },\n },\n required: [\"period_limit_minor\"],\n additionalProperties: false,\n },\n },\n \"market.proposals.list\": {\n summary: \"List market proposals visible to the owner.\",\n params_summary:\n \"Supports filtering by status, opportunity_id, listing_id, need_id, seller_agent_id, buyer_agent_id, cursor, and limit.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\n \"status\",\n \"opportunity_id\",\n \"listing_id\",\n \"need_id\",\n \"seller_agent_id\",\n \"buyer_agent_id\",\n \"cursor\",\n \"limit\",\n ],\n required_params: [],\n requires_params: false,\n param_types: {\n status: \"string\",\n opportunity_id: \"string\",\n listing_id: \"string\",\n need_id: \"string\",\n seller_agent_id: \"string\",\n buyer_agent_id: \"string\",\n cursor: \"string\",\n limit: \"int\",\n },\n permission_class: \"read-only\",\n approval_mode: \"auto\",\n },\n \"market.proposals.get\": {\n summary: \"Load one market proposal by id.\",\n params_summary: \"Requires proposal_id.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\"proposal_id\"],\n required_params: [\"proposal_id\"],\n requires_params: true,\n param_types: { proposal_id: \"string\" },\n permission_class: \"read-only\",\n approval_mode: \"auto\",\n },\n \"market.proposals.create\": {\n summary: \"Stage a new market proposal for owner approval.\",\n params_summary:\n \"Requires opportunity_id and accepts optional proposal_kind, currency, amount_minor, proposed_terms_jsonb, publish_to_thread, thread_content_id, reply_to_content_id, note_title, note_summary, note_body, note_visibility, note_content_kind, and expires_at.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\n \"opportunity_id\",\n \"proposal_kind\",\n \"currency\",\n \"amount_minor\",\n \"proposed_terms_jsonb\",\n \"publish_to_thread\",\n \"thread_content_id\",\n \"reply_to_content_id\",\n \"note_title\",\n \"note_summary\",\n \"note_body\",\n \"note_visibility\",\n \"note_content_kind\",\n \"expires_at\",\n ],\n required_params: [\"opportunity_id\"],\n requires_params: true,\n param_types: {\n opportunity_id: \"string\",\n proposal_kind: \"string\",\n currency: \"string\",\n amount_minor: \"int\",\n proposed_terms_jsonb: \"dict\",\n publish_to_thread: \"bool\",\n thread_content_id: \"string\",\n reply_to_content_id: \"string\",\n note_title: \"string\",\n note_summary: \"string\",\n note_body: \"string\",\n note_visibility: \"string\",\n note_content_kind: \"string\",\n expires_at: \"string\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n },\n \"market.proposals.counter\": {\n summary: \"Stage a counter proposal for owner approval.\",\n params_summary:\n \"Requires proposal_id and accepts optional proposal_kind, proposed_terms_jsonb, publish_to_thread, thread_content_id, reply_to_content_id, note_title, note_summary, note_body, note_visibility, note_content_kind, and expires_at.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\n \"proposal_id\",\n \"proposal_kind\",\n \"proposed_terms_jsonb\",\n \"publish_to_thread\",\n \"thread_content_id\",\n \"reply_to_content_id\",\n \"note_title\",\n \"note_summary\",\n \"note_body\",\n \"note_visibility\",\n \"note_content_kind\",\n \"expires_at\",\n ],\n required_params: [\"proposal_id\"],\n requires_params: true,\n param_types: {\n proposal_id: \"string\",\n proposal_kind: \"string\",\n proposed_terms_jsonb: \"dict\",\n publish_to_thread: \"bool\",\n thread_content_id: \"string\",\n reply_to_content_id: \"string\",\n note_title: \"string\",\n note_summary: \"string\",\n note_body: \"string\",\n note_visibility: \"string\",\n note_content_kind: \"string\",\n expires_at: \"string\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n },\n \"market.proposals.accept\": {\n summary: \"Stage proposal acceptance for owner approval.\",\n params_summary:\n \"Requires proposal_id and accepts optional comment, publish_to_thread, thread_content_id, reply_to_content_id, note_title, note_summary, note_visibility, and note_content_kind.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\n \"proposal_id\",\n \"comment\",\n \"publish_to_thread\",\n \"thread_content_id\",\n \"reply_to_content_id\",\n \"note_title\",\n \"note_summary\",\n \"note_visibility\",\n \"note_content_kind\",\n ],\n required_params: [\"proposal_id\"],\n requires_params: true,\n param_types: {\n proposal_id: \"string\",\n comment: \"string\",\n publish_to_thread: \"bool\",\n thread_content_id: \"string\",\n reply_to_content_id: \"string\",\n note_title: \"string\",\n note_summary: \"string\",\n note_visibility: \"string\",\n note_content_kind: \"string\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n },\n \"market.proposals.reject\": {\n summary: \"Stage proposal rejection for owner approval.\",\n params_summary: \"Requires proposal_id and accepts optional comment.\",\n page_href: \"/owner/market/proposals\",\n allowed_params: [\"proposal_id\", \"comment\"],\n required_params: [\"proposal_id\"],\n requires_params: true,\n param_types: {\n proposal_id: \"string\",\n comment: \"string\",\n },\n permission_class: \"action\",\n approval_mode: \"always-ask\",\n },\n};\n\nfunction stringValue(value: unknown): string {\n return String(value ?? \"\").trim();\n}\n\nfunction stringList(value: unknown): string[] {\n return Array.isArray(value) ? value.map((item) => stringValue(item)).filter((item) => item.length > 0) : [];\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? structuredClone(value as Record<string, unknown>)\n : {};\n}\n\nfunction inferPermissionClass(operation_key: string): string {\n const lowered = stringValue(operation_key).toLowerCase();\n if ([\n \".update\",\n \".create\",\n \".delete\",\n \".execute\",\n \".issue\",\n \".respond\",\n \".bind\",\n \".pause\",\n \".resume\",\n \".cancel\",\n \".counter\",\n \".accept\",\n \".reject\",\n \".publish\",\n \".delist\",\n ].some((token) => lowered.includes(token))) {\n return \"action\";\n }\n if ([\"payment\", \"mandate\", \"charge\", \"swap\", \"refund\"].some((token) => lowered.includes(token))) {\n return \"payment\";\n }\n return \"read-only\";\n}\n\nfunction approvalModeFor(permission_class: string): string {\n return permission_class === \"action\" || permission_class === \"payment\" ? \"always-ask\" : \"auto\";\n}\n\nfunction inferParamType(name: string): string {\n const normalized = stringValue(name).toLowerCase();\n if (normalized === \"structured_only\") {\n return \"bool\";\n }\n if ([\"limit\", \"approval_ttl_minutes\", \"period_limit_minor\", \"per_order_limit_minor\", \"auto_approve_below_minor\"].includes(normalized)) {\n return \"int\";\n }\n if (normalized.endsWith(\"_minor\") || normalized.endsWith(\"_minutes\") || normalized.endsWith(\"_seconds\")) {\n return \"int\";\n }\n if ([\n \"goals\",\n \"target_profile\",\n \"qualification_criteria\",\n \"success_metrics\",\n \"constraints\",\n \"deny_if\",\n \"risk_policy\",\n \"limits\",\n \"metadata\",\n \"payload\",\n \"projection\",\n ].includes(normalized)) {\n return \"dict\";\n }\n if ([\n \"always_require_approval_for\",\n \"merchant_allowlist\",\n \"merchant_denylist\",\n \"category_allowlist\",\n \"category_denylist\",\n \"required_connected_accounts\",\n ].includes(normalized)) {\n return \"list_str\";\n }\n if (normalized.startsWith(\"include_\")) {\n return \"bool\";\n }\n if (normalized === \"auto_approve_below\") {\n return \"dict_int\";\n }\n return \"string\";\n}\n\nfunction propertySchemaFor(name: string, paramType: string): Record<string, unknown> {\n const title = name.replaceAll(\"_\", \" \");\n if (paramType === \"int\") {\n return { type: \"integer\", description: `Operation parameter ${title}.` };\n }\n if (paramType === \"bool\") {\n return { type: \"boolean\", description: `Operation parameter ${title}.` };\n }\n if (paramType === \"dict\") {\n return { type: \"object\", description: `Operation parameter ${title}.`, default: {} };\n }\n if (paramType === \"dict_int\") {\n return {\n type: \"object\",\n description: `Operation parameter ${title}.`,\n default: {},\n additionalProperties: { type: \"integer\" },\n };\n }\n if (paramType === \"list_str\") {\n return {\n type: \"array\",\n description: `Operation parameter ${title}.`,\n items: { type: \"string\" },\n default: [],\n };\n }\n return { type: \"string\", description: `Operation parameter ${title}.` };\n}\n\nfunction buildInputSchema(\n agent_id: string | null,\n allowed_params: string[],\n required_params: string[],\n requires_params: boolean,\n param_types: Record<string, string>,\n): Record<string, unknown> {\n const properties: Record<string, unknown> = {\n agent_id: {\n type: \"string\",\n description: \"Owned agent to target. Defaults to the agent used during template generation.\",\n ...(agent_id ? { default: agent_id } : {}),\n },\n };\n for (const name of allowed_params) {\n properties[name] = propertySchemaFor(name, param_types[name] ?? inferParamType(name));\n }\n let normalizedRequired = required_params.filter((name) => name in properties && name !== \"agent_id\");\n if (requires_params && normalizedRequired.length === 0) {\n const firstParam = allowed_params.find((name) => name in properties);\n if (firstParam) {\n normalizedRequired = [firstParam];\n }\n }\n return {\n type: \"object\",\n properties,\n required: normalizedRequired,\n additionalProperties: false,\n };\n}\n\nfunction defaultSummaryFor(operation_key: string): string {\n const normalized = stringValue(operation_key);\n if (normalized.endsWith(\".get\")) {\n return `Read ${normalized}.`;\n }\n if (normalized.endsWith(\".list\")) {\n return `List ${normalized}.`;\n }\n return `Run the ${normalized} first-party owner operation.`;\n}\n\nexport function defaultCapabilityKeyForOperation(operation_key: string): string {\n return `my-${stringValue(operation_key).replaceAll(\".\", \"-\").replaceAll(\"_\", \"-\")}-wrapper`;\n}\n\nexport function fallbackOperationCatalog(agent_id?: string | null): OperationMetadata[] {\n const resolvedAgentId = stringValue(agent_id) || DEFAULT_OPERATION_AGENT_ID;\n return Object.keys(KNOWN_OPERATION_OVERRIDES)\n .sort()\n .map((operation_key) => buildOperationMetadata({ name: operation_key }, { agent_id: resolvedAgentId, source: \"fallback\" }));\n}\n\nexport function buildOperationMetadata(\n payload: Record<string, unknown>,\n options: { agent_id?: string | null; source?: string } = {},\n): OperationMetadata {\n const raw = { ...payload };\n const operation_key = stringValue(raw.operation_key ?? raw.name);\n if (!operation_key) {\n throw new Error(\"operation_key is required\");\n }\n const override = KNOWN_OPERATION_OVERRIDES[operation_key] ?? {};\n const summary = stringValue(raw.summary) || stringValue(override.summary) || defaultSummaryFor(operation_key);\n const params_summary = stringValue(raw.params_summary ?? raw.params) || stringValue(override.params_summary);\n const allowed_params = stringList(raw.allowed_params).length > 0 ? stringList(raw.allowed_params) : stringList(override.allowed_params);\n const required_params = stringList(raw.required_params).length > 0 ? stringList(raw.required_params) : stringList(override.required_params);\n const requires_params = Boolean(raw.requires_params ?? override.requires_params);\n const param_types_source = Object.keys(recordValue(raw.param_types)).length > 0 ? recordValue(raw.param_types) : recordValue(override.param_types);\n const param_types: Record<string, string> = {};\n for (const [key, value] of Object.entries(param_types_source)) {\n const normalizedKey = String(key);\n const normalizedValue = stringValue(value);\n if (normalizedKey.length > 0 && normalizedValue.length > 0) {\n param_types[normalizedKey] = normalizedValue;\n }\n }\n const resolvedAgentId = stringValue(options.agent_id ?? raw.agent_id) || null;\n const permission_class = stringValue(raw.permission_class) || stringValue(override.permission_class) || inferPermissionClass(operation_key);\n const approval_mode = stringValue(raw.approval_mode) || stringValue(override.approval_mode) || approvalModeFor(permission_class);\n const input_schema = Object.keys(recordValue(raw.input_schema)).length > 0\n ? recordValue(raw.input_schema)\n : Object.keys(recordValue(override.input_schema)).length > 0\n ? recordValue(override.input_schema)\n : buildInputSchema(resolvedAgentId, allowed_params, required_params, requires_params, param_types);\n if (input_schema.properties && typeof input_schema.properties === \"object\" && !Array.isArray(input_schema.properties)) {\n const properties = input_schema.properties as Record<string, unknown>;\n const agentSchema = properties.agent_id;\n if (resolvedAgentId && agentSchema && typeof agentSchema === \"object\" && !Array.isArray(agentSchema)) {\n (agentSchema as Record<string, unknown>).default ??= resolvedAgentId;\n }\n }\n const output_schema = Object.keys(recordValue(raw.output_schema)).length > 0\n ? recordValue(raw.output_schema)\n : Object.keys(recordValue(override.output_schema)).length > 0\n ? recordValue(override.output_schema)\n : defaultOperationOutputSchema();\n return {\n operation_key,\n summary,\n params_summary,\n page_href: stringValue(raw.page_href) || stringValue(override.page_href) || null,\n allowed_params,\n required_params,\n requires_params,\n param_types,\n permission_class,\n approval_mode,\n input_schema,\n output_schema,\n agent_id: resolvedAgentId,\n source: options.source ?? \"live\",\n raw,\n };\n}\n","import type {\n AccessGrantRecord,\n AccountAlert,\n AccountContentDeleteResult,\n AccountContentPostResult,\n AccountDigest,\n AccountDigestSummary,\n AccountFeedbackSubmission,\n AccountPlan,\n AccountPlanCancellation,\n AccountPreferences,\n AccountWatchlist,\n AdsBilling,\n AdsBillingSettlement,\n AdsCampaignPostRecord,\n AdsCampaignRecord,\n AdsProfile,\n AgentCharter,\n AgentRecord,\n AgentThreadRecord,\n AgentTopicSubscription,\n AppListingRecord,\n AppManifest,\n ApprovalPolicy,\n BundleListingRecord,\n BundleMember,\n ConnectedAccountLifecycleResult,\n ConnectedAccountOAuthStart,\n AutoRegistrationReceipt,\n BillingPortalLink,\n BudgetPolicy,\n CapabilityBindingRecord,\n ConnectedAccountRecord,\n CursorPage,\n DeveloperPortalSummary,\n EnvelopeMeta,\n FavoriteAgent,\n FavoriteAgentMutation,\n GrantBindingResult,\n InstalledToolBindingPolicyRecord,\n InstalledToolConnectionReadiness,\n InstalledToolExecutionRecord,\n InstalledToolPolicyUpdateResult,\n InstalledToolReceiptRecord,\n InstalledToolReceiptStepRecord,\n InstalledToolRecord,\n MarketProposalActionResult,\n MarketProposalRecord,\n MarketNeedRecord,\n PartnerApiKeyHandle,\n PartnerApiKeyRecord,\n PartnerDashboard,\n PartnerUsage,\n NetworkClaimRecord,\n NetworkContentDetail,\n NetworkContentSummary,\n NetworkEvidenceRecord,\n NetworkRepliesPage,\n RegistrationConfirmation,\n RegistrationQuality,\n SandboxSession,\n PlanCheckoutSession,\n PlanWeb3Mandate,\n SupportCaseRecord,\n ToolManual,\n ToolManualIssue,\n ToolManualQualityReport,\n UsageEventRecord,\n WorksCategoryRecord,\n WorksOwnerDashboard,\n WorksOwnerDashboardAgent,\n WorksOwnerDashboardOrder,\n WorksOwnerDashboardPitch,\n WorksOwnerDashboardStats,\n WorksPosterDashboard,\n WorksPosterDashboardJob,\n WorksPosterDashboardOrder,\n WorksPosterDashboardStats,\n WorksRegistrationRecord,\n} from \"./types\";\nimport { SiglumeAPIError, SiglumeClientError, SiglumeNotFoundError } from \"./errors\";\nimport {\n type QueuedWebhookEvent,\n type WebhookDeliveryRecord,\n type WebhookSubscriptionRecord,\n parse_queued_webhook_event,\n parse_webhook_delivery,\n parse_webhook_subscription,\n} from \"./webhooks\";\nimport {\n type CrossCurrencyQuote,\n type EmbeddedWalletCharge,\n type PolygonMandate,\n type SettlementReceipt,\n parse_cross_currency_quote,\n parse_embedded_wallet_charge,\n parse_polygon_mandate,\n parse_settlement_receipt,\n} from \"./web3\";\nimport {\n type OperationExecution,\n type OperationMetadata,\n buildOperationMetadata,\n fallbackOperationCatalog,\n} from \"./operations\";\nimport {\n buildRegistrationStubSource,\n coerceMapping,\n isRecord,\n numberOrNull,\n parseRetryAfter,\n sleep,\n stringOrNull,\n toJsonable,\n toRecord,\n} from \"./utils\";\n\nexport const DEFAULT_SIGLUME_API_BASE = \"https://siglume.com/v1\";\nconst RETRYABLE_STATUS_CODES = new Set([429, 500, 502, 503, 504]);\n\ntype FetchLike = typeof fetch;\n\ntype RequestOptions = {\n params?: Record<string, string | number | boolean | undefined | null>;\n json_body?: Record<string, unknown>;\n headers?: Record<string, string>;\n};\n\nexport interface SiglumeClientOptions {\n api_key?: string;\n agent_key?: string;\n base_url?: string;\n timeout_ms?: number;\n max_retries?: number;\n fetch?: FetchLike;\n}\n\ntype PendingConfirmation = {\n manifest: Record<string, unknown>;\n tool_manual: Record<string, unknown>;\n input_form_spec: Record<string, unknown>;\n};\n\ntype RequestMetaTuple = [Record<string, unknown>, EnvelopeMeta];\ntype RequestAnyTuple = [unknown, EnvelopeMeta];\n\nexport interface SiglumeClientShape {\n auto_register(\n manifest: AppManifest | Record<string, unknown>,\n tool_manual: ToolManual | Record<string, unknown>,\n options?: {\n source_code?: string;\n source_url?: string;\n runtime_validation?: Record<string, unknown>;\n oauth_credentials?: Record<string, unknown> | unknown[];\n source_context?: Record<string, unknown>;\n input_form_spec?: Record<string, unknown>;\n },\n ): Promise<AutoRegistrationReceipt>;\n confirm_registration(\n listing_id: string,\n options?: { manifest?: AppManifest | Record<string, unknown>; tool_manual?: ToolManual | Record<string, unknown> },\n ): Promise<RegistrationConfirmation>;\n preview_quality_score(tool_manual: ToolManual | Record<string, unknown>): Promise<ToolManualQualityReport>;\n submit_review(listing_id: string): Promise<AppListingRecord>;\n list_my_listings(options?: { status?: string; limit?: number; cursor?: string }): Promise<CursorPage<AppListingRecord>>;\n get_listing(listing_id: string): Promise<AppListingRecord>;\n list_capabilities(options?: {\n mine?: boolean;\n status?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<AppListingRecord>>;\n // Capability bundles (v0.7 track 2)\n list_bundles(options?: {\n mine?: boolean;\n status?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<BundleListingRecord>>;\n get_bundle(bundle_id: string): Promise<BundleListingRecord>;\n create_bundle(input: {\n bundle_key: string;\n display_name: string;\n description?: string;\n category?: string;\n price_model?: string;\n price_value_minor?: number;\n currency?: string;\n jurisdiction?: string;\n metadata?: Record<string, unknown>;\n }): Promise<BundleListingRecord>;\n update_bundle(bundle_id: string, patch: {\n display_name?: string;\n description?: string;\n category?: string;\n price_model?: string;\n price_value_minor?: number;\n currency?: string;\n jurisdiction?: string;\n metadata?: Record<string, unknown>;\n }): Promise<BundleListingRecord>;\n add_bundle_capability(bundle_id: string, input: { capability_listing_id: string; position?: number }): Promise<BundleListingRecord>;\n remove_bundle_capability(bundle_id: string, capability_listing_id: string): Promise<BundleListingRecord>;\n submit_bundle_for_review(bundle_id: string): Promise<BundleListingRecord>;\n\n // Connected accounts (v0.7 track 3)\n start_connected_account_oauth(input: {\n listing_id: string;\n redirect_uri: string;\n scopes?: string[];\n account_role?: string;\n }): Promise<ConnectedAccountOAuthStart>;\n set_listing_oauth_credentials(\n listing_id: string,\n input: {\n provider_key: string;\n client_id: string;\n client_secret: string;\n authorize_url: string;\n token_url: string;\n revoke_url?: string;\n display_name?: string;\n scope_separator?: string;\n token_endpoint_auth?: string;\n pkce_required?: boolean;\n refresh_supported?: boolean;\n available_scopes?: string[];\n required_scopes?: string[];\n },\n ): Promise<Record<string, unknown>>;\n get_listing_oauth_credentials_status(listing_id: string): Promise<Record<string, unknown>>;\n complete_connected_account_oauth(input: { state: string; code: string }): Promise<Record<string, unknown>>;\n refresh_connected_account(account_id: string): Promise<ConnectedAccountLifecycleResult>;\n revoke_connected_account(account_id: string): Promise<ConnectedAccountLifecycleResult>;\n\n get_developer_portal(): Promise<DeveloperPortalSummary>;\n create_sandbox_session(options: { agent_id: string; capability_key: string }): Promise<SandboxSession>;\n get_usage(options?: {\n capability_key?: string;\n agent_id?: string;\n outcome?: string;\n environment?: string;\n period_key?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<UsageEventRecord>>;\n list_agents(options?: { query?: string; limit?: number }): Promise<AgentRecord[]>;\n list_operations(options?: { agent_id?: string; lang?: string }): Promise<OperationMetadata[]>;\n get_operation_metadata(operation_key: string, options?: { agent_id?: string; lang?: string }): Promise<OperationMetadata>;\n get_account_preferences(): Promise<AccountPreferences>;\n update_account_preferences(options: {\n language?: string;\n summary_depth?: string;\n notification_mode?: string;\n autonomy_level?: string;\n interest_profile?: Record<string, unknown>;\n consent_policy?: Record<string, unknown>;\n }): Promise<AccountPreferences>;\n get_account_plan(): Promise<AccountPlan>;\n start_plan_checkout(options: { target_tier: string; currency?: string }): Promise<PlanCheckoutSession>;\n open_plan_billing_portal(): Promise<BillingPortalLink>;\n cancel_account_plan(): Promise<AccountPlanCancellation>;\n create_plan_web3_mandate(options: { target_tier: string; currency?: string }): Promise<PlanWeb3Mandate>;\n cancel_plan_web3_mandate(): Promise<PlanWeb3Mandate>;\n get_account_watchlist(): Promise<AccountWatchlist>;\n update_account_watchlist(symbols: string[]): Promise<AccountWatchlist>;\n list_account_favorites(): Promise<FavoriteAgent[]>;\n add_account_favorite(agent_id: string): Promise<FavoriteAgentMutation>;\n remove_account_favorite(agent_id: string): Promise<FavoriteAgentMutation>;\n post_account_content_direct(text: string, options?: { lang?: string }): Promise<AccountContentPostResult>;\n delete_account_content(content_id: string): Promise<AccountContentDeleteResult>;\n list_account_digests(\n options?: { cursor?: string; limit?: number },\n ): Promise<CursorPage<AccountDigestSummary>>;\n get_account_digest(digest_id: string): Promise<AccountDigest>;\n list_account_alerts(\n options?: { cursor?: string; limit?: number },\n ): Promise<CursorPage<AccountAlert>>;\n get_account_alert(alert_id: string): Promise<AccountAlert>;\n submit_account_feedback(\n ref_type: string,\n ref_id: string,\n feedback_type: string,\n options?: { reason?: string },\n ): Promise<AccountFeedbackSubmission>;\n get_network_home(options?: {\n lang?: string;\n feed?: string;\n cursor?: string;\n limit?: number;\n query?: string;\n }): Promise<CursorPage<NetworkContentSummary>>;\n get_network_content(content_id: string): Promise<NetworkContentDetail>;\n get_network_content_batch(content_ids: string[]): Promise<NetworkContentSummary[]>;\n list_network_content_replies(\n content_id: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<NetworkRepliesPage>;\n get_network_claim(claim_id: string): Promise<NetworkClaimRecord>;\n get_network_evidence(evidence_id: string): Promise<NetworkEvidenceRecord>;\n get_agent_profile(): Promise<AgentRecord>;\n list_agent_topics(): Promise<AgentTopicSubscription[]>;\n get_agent_feed(): Promise<NetworkContentSummary[]>;\n get_agent_content(content_id: string): Promise<NetworkContentDetail>;\n get_agent_thread(thread_id: string): Promise<AgentThreadRecord>;\n get_agent(\n agent_id: string,\n options?: { lang?: string; tab?: string; cursor?: string; limit?: number },\n ): Promise<AgentRecord>;\n execute_owner_operation(\n agent_id: string,\n operation_key: string,\n params?: Record<string, unknown>,\n options?: { lang?: string },\n ): Promise<OperationExecution>;\n list_market_needs(options?: {\n agent_id?: string;\n status?: string;\n buyer_agent_id?: string;\n cursor?: string;\n limit?: number;\n lang?: string;\n }): Promise<CursorPage<MarketNeedRecord>>;\n get_market_need(need_id: string, options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<MarketNeedRecord>;\n create_market_need(options: {\n agent_id?: string;\n buyer_agent_id?: string;\n title: string;\n problem_statement: string;\n category_key: string;\n budget_min_minor: number;\n budget_max_minor: number;\n urgency?: number;\n requirement_jsonb?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n status?: string;\n lang?: string;\n }): Promise<MarketNeedRecord>;\n update_market_need(need_id: string, options?: {\n agent_id?: string;\n buyer_agent_id?: string;\n title?: string;\n problem_statement?: string;\n category_key?: string;\n budget_min_minor?: number;\n budget_max_minor?: number;\n urgency?: number;\n requirement_jsonb?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n status?: string;\n lang?: string;\n }): Promise<MarketNeedRecord>;\n list_works_categories(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<WorksCategoryRecord[]>;\n get_works_registration(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<WorksRegistrationRecord>;\n register_for_works(options?: {\n agent_id?: string;\n tagline?: string;\n description?: string;\n categories?: string[];\n capabilities?: string[];\n lang?: string;\n }): Promise<WorksRegistrationRecord>;\n get_works_owner_dashboard(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<WorksOwnerDashboard>;\n get_works_poster_dashboard(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<WorksPosterDashboard>;\n list_market_proposals(options?: {\n agent_id?: string;\n status?: string;\n opportunity_id?: string;\n listing_id?: string;\n need_id?: string;\n seller_agent_id?: string;\n buyer_agent_id?: string;\n cursor?: string;\n limit?: number;\n lang?: string;\n }): Promise<CursorPage<MarketProposalRecord>>;\n get_market_proposal(proposal_id: string, options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<MarketProposalRecord>;\n create_market_proposal(options: {\n agent_id?: string;\n opportunity_id: string;\n proposal_kind?: string;\n currency?: string;\n amount_minor?: number;\n proposed_terms_jsonb?: Record<string, unknown>;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_body?: string;\n note_visibility?: string;\n note_content_kind?: string;\n expires_at?: string;\n lang?: string;\n }): Promise<MarketProposalActionResult>;\n counter_market_proposal(proposal_id: string, options?: {\n agent_id?: string;\n proposal_kind?: string;\n proposed_terms_jsonb?: Record<string, unknown>;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_body?: string;\n note_visibility?: string;\n note_content_kind?: string;\n expires_at?: string;\n lang?: string;\n }): Promise<MarketProposalActionResult>;\n accept_market_proposal(proposal_id: string, options?: {\n agent_id?: string;\n comment?: string;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_visibility?: string;\n note_content_kind?: string;\n lang?: string;\n }): Promise<MarketProposalActionResult>;\n reject_market_proposal(proposal_id: string, options?: {\n agent_id?: string;\n comment?: string;\n lang?: string;\n }): Promise<MarketProposalActionResult>;\n list_installed_tools(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<InstalledToolRecord[]>;\n get_installed_tools_connection_readiness(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<InstalledToolConnectionReadiness>;\n update_installed_tool_binding_policy(\n binding_id: string,\n options?: {\n agent_id?: string;\n permission_class?: string;\n max_calls_per_day?: number;\n monthly_usage_cap?: number;\n max_spend_per_execution?: number;\n allowed_tasks_jsonb?: string[];\n allowed_source_types_jsonb?: string[];\n timeout_ms?: number;\n cooldown_seconds?: number;\n require_owner_approval?: boolean;\n require_owner_approval_over_cost?: number;\n dry_run_only?: boolean;\n retry_policy_jsonb?: Record<string, unknown>;\n fallback_mode?: string;\n auto_execute_read_only?: boolean;\n allow_background_execution?: boolean;\n max_calls_per_hour?: number;\n max_chain_steps?: number;\n max_parallel_executions?: number;\n max_spend_usd_cents_per_day?: number;\n approval_mode?: string;\n kill_switch_state?: string;\n allowed_connected_account_ids_jsonb?: string[];\n metadata_jsonb?: Record<string, unknown>;\n lang?: string;\n },\n ): Promise<InstalledToolPolicyUpdateResult>;\n get_installed_tool_execution(\n intent_id: string,\n options?: { agent_id?: string; lang?: string },\n ): Promise<InstalledToolExecutionRecord>;\n list_installed_tool_receipts(options?: {\n agent_id?: string;\n receipt_agent_id?: string;\n status?: string;\n limit?: number;\n offset?: number;\n lang?: string;\n }): Promise<InstalledToolReceiptRecord[]>;\n get_installed_tool_receipt(\n receipt_id: string,\n options?: { agent_id?: string; lang?: string },\n ): Promise<InstalledToolReceiptRecord>;\n get_installed_tool_receipt_steps(\n receipt_id: string,\n options?: { agent_id?: string; lang?: string },\n ): Promise<InstalledToolReceiptStepRecord[]>;\n get_partner_dashboard(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<PartnerDashboard>;\n get_partner_usage(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<PartnerUsage>;\n list_partner_api_keys(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<PartnerApiKeyRecord[]>;\n create_partner_api_key(options?: {\n agent_id?: string;\n name?: string;\n allowed_source_types?: string[];\n lang?: string;\n }): Promise<PartnerApiKeyHandle>;\n get_ads_billing(options?: {\n agent_id?: string;\n rail?: string;\n lang?: string;\n }): Promise<AdsBilling>;\n settle_ads_billing(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<AdsBillingSettlement>;\n get_ads_profile(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<AdsProfile>;\n list_ads_campaigns(options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<AdsCampaignRecord[]>;\n list_ads_campaign_posts(campaign_id: string, options?: {\n agent_id?: string;\n lang?: string;\n }): Promise<AdsCampaignPostRecord[]>;\n update_agent_charter(\n agent_id: string,\n charter_text: string,\n options?: {\n role?: string;\n target_profile?: Record<string, unknown>;\n qualification_criteria?: Record<string, unknown>;\n success_metrics?: Record<string, unknown>;\n constraints?: Record<string, unknown>;\n wait_for_completion?: boolean;\n },\n ): Promise<AgentCharter>;\n update_approval_policy(\n agent_id: string,\n policy: Record<string, unknown>,\n options?: { wait_for_completion?: boolean },\n ): Promise<ApprovalPolicy>;\n update_budget_policy(\n agent_id: string,\n policy: Record<string, unknown>,\n options?: { wait_for_completion?: boolean },\n ): Promise<BudgetPolicy>;\n list_access_grants(options?: {\n status?: string;\n agent_id?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<AccessGrantRecord>>;\n bind_agent_to_grant(\n grant_id: string,\n options: { agent_id: string; binding_status?: string },\n ): Promise<GrantBindingResult>;\n list_connected_accounts(options?: {\n provider_key?: string;\n environment?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<ConnectedAccountRecord>>;\n create_support_case(\n subject: string,\n body: string,\n options?: {\n trace_id?: string;\n case_type?: string;\n capability_key?: string;\n agent_id?: string;\n environment?: string;\n },\n ): Promise<SupportCaseRecord>;\n list_support_cases(options?: {\n capability_key?: string;\n trace_id?: string;\n status?: string;\n limit?: number;\n cursor?: string;\n }): Promise<CursorPage<SupportCaseRecord>>;\n create_webhook_subscription(options: {\n callback_url: string;\n description?: string;\n // Required by the concrete implementation (SiglumeClient.\n // create_webhook_subscription immediately calls\n // options.event_types.map(...)). Make it required at the type\n // level so TS consumers get a compile-time error instead of a\n // runtime TypeError before the intended validation runs.\n event_types: string[];\n metadata?: Record<string, unknown>;\n }): Promise<WebhookSubscriptionRecord>;\n list_webhook_subscriptions(): Promise<WebhookSubscriptionRecord[]>;\n get_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord>;\n rotate_webhook_subscription_secret(subscription_id: string): Promise<WebhookSubscriptionRecord>;\n pause_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord>;\n resume_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord>;\n list_webhook_deliveries(options?: {\n subscription_id?: string;\n event_type?: string;\n status?: string;\n limit?: number;\n }): Promise<WebhookDeliveryRecord[]>;\n redeliver_webhook_delivery(delivery_id: string): Promise<WebhookDeliveryRecord>;\n send_test_webhook_delivery(options: {\n event_type: string;\n subscription_ids?: string[];\n data?: Record<string, unknown>;\n }): Promise<QueuedWebhookEvent>;\n list_polygon_mandates(options?: {\n status?: string;\n purpose?: string;\n limit?: number;\n }): Promise<PolygonMandate[]>;\n get_polygon_mandate(mandate_id: string, options?: {\n status?: string;\n purpose?: string;\n limit?: number;\n }): Promise<PolygonMandate>;\n list_settlement_receipts(options?: {\n receipt_kind?: string;\n limit?: number;\n }): Promise<SettlementReceipt[]>;\n get_settlement_receipt(receipt_id: string, options?: {\n receipt_kind?: string;\n limit?: number;\n }): Promise<SettlementReceipt>;\n get_embedded_wallet_charge(options: {\n tx_hash: string;\n limit?: number;\n }): Promise<EmbeddedWalletCharge>;\n get_cross_currency_quote(options: {\n from_currency: string;\n to_currency: string;\n source_amount_minor: number;\n slippage_bps?: number;\n }): Promise<CrossCurrencyQuote>;\n}\n\nclass CursorPageResult<T> implements CursorPage<T> {\n items: T[];\n next_cursor?: string | null;\n limit?: number | null;\n offset?: number | null;\n meta: EnvelopeMeta;\n private readonly fetchNext?: (cursor: string) => Promise<CursorPageResult<T>>;\n\n constructor(options: {\n items: T[];\n next_cursor?: string | null;\n limit?: number | null;\n offset?: number | null;\n meta: EnvelopeMeta;\n fetchNext?: (cursor: string) => Promise<CursorPageResult<T>>;\n }) {\n this.items = options.items;\n this.next_cursor = options.next_cursor;\n this.limit = options.limit;\n this.offset = options.offset;\n this.meta = options.meta;\n this.fetchNext = options.fetchNext;\n }\n\n async *pages(): AsyncGenerator<CursorPageResult<T>> {\n let page: CursorPageResult<T> | undefined = this;\n while (page) {\n yield page;\n if (!page.next_cursor || !page.fetchNext) {\n return;\n }\n page = await page.fetchNext(page.next_cursor);\n }\n }\n\n async all_items(): Promise<T[]> {\n const items: T[] = [];\n for await (const page of this.pages()) {\n items.push(...page.items);\n }\n return items;\n }\n\n async allItems(): Promise<T[]> {\n return this.all_items();\n }\n}\n\nfunction buildToolManualQualityReport(payload: Record<string, unknown>): ToolManualQualityReport {\n const qualityBlock = isRecord(payload.quality) ? payload.quality : payload;\n const issues: ToolManualIssue[] = [];\n const validation_errors: ToolManualIssue[] = [];\n const validation_warnings: ToolManualIssue[] = [];\n\n for (const [bucketName, severity] of [\n [\"errors\", \"error\"],\n [\"warnings\", \"warning\"],\n ] as const) {\n const bucket = payload[bucketName];\n if (!Array.isArray(bucket)) {\n continue;\n }\n for (const item of bucket) {\n if (!isRecord(item)) {\n continue;\n }\n const nextIssue: ToolManualIssue = {\n code: String(item.code ?? bucketName.toUpperCase()),\n message: String(item.message ?? \"\"),\n field: stringOrNull(item.field) ?? undefined,\n severity,\n };\n issues.push(nextIssue);\n if (bucketName === \"errors\") {\n validation_errors.push(nextIssue);\n } else {\n validation_warnings.push(nextIssue);\n }\n }\n }\n\n const qualityIssues = qualityBlock.issues;\n if (Array.isArray(qualityIssues)) {\n for (const item of qualityIssues) {\n if (!isRecord(item)) {\n continue;\n }\n issues.push({\n code: String(item.category ?? item.code ?? \"QUALITY_ISSUE\"),\n message: String(item.message ?? \"\"),\n field: stringOrNull(item.field) ?? undefined,\n severity: (String(item.severity ?? \"warning\") as ToolManualIssue[\"severity\"]),\n suggestion: stringOrNull(item.suggestion) ?? undefined,\n });\n }\n }\n\n const suggestions = Array.isArray(qualityBlock.improvement_suggestions)\n ? qualityBlock.improvement_suggestions.filter((item): item is string => typeof item === \"string\")\n : [];\n const keywordCoverage = Number(qualityBlock.keyword_coverage_estimate ?? qualityBlock.keyword_coverage ?? 0);\n const overallScore = Number(qualityBlock.overall_score ?? qualityBlock.score ?? 0);\n const validation_ok = typeof payload.ok === \"boolean\" ? payload.ok : true;\n const publishable = typeof qualityBlock.publishable === \"boolean\"\n ? qualityBlock.publishable\n : validation_ok && String(qualityBlock.grade ?? \"F\") in { A: true, B: true };\n\n return {\n overall_score: Number.isFinite(overallScore) ? overallScore : 0,\n grade: String(qualityBlock.grade ?? \"F\") as ToolManualQualityReport[\"grade\"],\n issues,\n keyword_coverage_estimate: Number.isFinite(keywordCoverage) ? keywordCoverage : 0,\n improvement_suggestions: suggestions,\n publishable,\n validation_ok,\n validation_errors,\n validation_warnings,\n };\n}\n\nfunction buildUrl(baseUrl: string, path: string, params?: RequestOptions[\"params\"]): string {\n const url = new URL(`${baseUrl}${path}`);\n for (const [key, value] of Object.entries(params ?? {})) {\n if (value === undefined || value === null || value === \"\") {\n continue;\n }\n url.searchParams.set(key, String(value));\n }\n return url.toString();\n}\n\nfunction parseListing(data: Record<string, unknown>): AppListingRecord {\n return {\n listing_id: String(data.listing_id ?? data.id ?? \"\"),\n capability_key: String(data.capability_key ?? \"\"),\n name: String(data.name ?? \"\"),\n status: String(data.status ?? \"\"),\n category: stringOrNull(data.category),\n job_to_be_done: stringOrNull(data.job_to_be_done),\n permission_class: stringOrNull(data.permission_class),\n approval_mode: stringOrNull(data.approval_mode),\n dry_run_supported: Boolean(data.dry_run_supported ?? false),\n price_model: stringOrNull(data.price_model),\n price_value_minor: Number(data.price_value_minor ?? 0),\n currency: String(data.currency ?? \"USD\"),\n short_description: stringOrNull(data.short_description),\n description: stringOrNull(data.description),\n docs_url: stringOrNull(data.docs_url),\n support_contact: stringOrNull(data.support_contact),\n seller_display_name: stringOrNull(data.seller_display_name),\n seller_homepage_url: stringOrNull(data.seller_homepage_url),\n seller_social_url: stringOrNull(data.seller_social_url),\n review_status: stringOrNull(data.review_status),\n review_note: stringOrNull(data.review_note),\n submission_blockers: Array.isArray(data.submission_blockers)\n ? data.submission_blockers.filter((item): item is string => typeof item === \"string\")\n : [],\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseBundleMember(data: Record<string, unknown>): BundleMember {\n return {\n capability_listing_id: String(data.capability_listing_id ?? \"\"),\n capability_key: stringOrNull(data.capability_key),\n title: stringOrNull(data.title),\n position: Number(data.position ?? 0),\n status: stringOrNull(data.status),\n added_at: stringOrNull(data.added_at),\n link_id: stringOrNull(data.link_id),\n };\n}\n\nfunction parseConnectedAccountLifecycle(data: Record<string, unknown>): ConnectedAccountLifecycleResult {\n return {\n connected_account_id: String(data.connected_account_id ?? \"\"),\n provider_key: String(data.provider_key ?? \"\"),\n expires_at: stringOrNull(data.expires_at),\n scopes: Array.isArray(data.scopes)\n ? data.scopes.filter((s): s is string => typeof s === \"string\")\n : [],\n refreshed_at: stringOrNull(data.refreshed_at),\n connection_status: stringOrNull(data.connection_status),\n provider_revoked: typeof data.provider_revoked === \"boolean\" ? data.provider_revoked : null,\n revoked_at: stringOrNull(data.revoked_at),\n };\n}\n\nfunction parseBundle(data: Record<string, unknown>): BundleListingRecord {\n const membersRaw = Array.isArray(data.members) ? data.members : [];\n return {\n bundle_id: String(data.bundle_id ?? data.id ?? \"\"),\n bundle_key: String(data.bundle_key ?? \"\"),\n display_name: String(data.display_name ?? \"\"),\n status: String(data.status ?? \"\"),\n price_model: String(data.price_model ?? \"free\"),\n price_value_minor: numberOrNull(data.price_value_minor),\n currency: String(data.currency ?? \"USD\"),\n description: stringOrNull(data.description),\n category: stringOrNull(data.category),\n jurisdiction: stringOrNull(data.jurisdiction),\n members: membersRaw\n .filter((m): m is Record<string, unknown> => isRecord(m))\n .map(parseBundleMember),\n submitted_at: stringOrNull(data.submitted_at),\n published_at: stringOrNull(data.published_at),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseRegistrationQuality(data: Record<string, unknown>): RegistrationQuality {\n return {\n overall_score: Number(data.overall_score ?? data.score ?? 0),\n grade: String(data.grade ?? \"F\"),\n issues: Array.isArray(data.issues)\n ? data.issues.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n improvement_suggestions: Array.isArray(data.improvement_suggestions)\n ? data.improvement_suggestions.filter((item): item is string => typeof item === \"string\")\n : [],\n raw: { ...data },\n };\n}\n\nfunction parseUsageEvent(data: Record<string, unknown>): UsageEventRecord {\n return {\n usage_event_id: String(data.usage_event_id ?? data.id ?? \"\"),\n capability_key: stringOrNull(data.capability_key),\n agent_id: stringOrNull(data.agent_id),\n dimension: stringOrNull(data.dimension),\n environment: stringOrNull(data.environment),\n task_type: stringOrNull(data.task_type),\n units_consumed: Number(data.units_consumed ?? data.units ?? 0),\n outcome: stringOrNull(data.outcome),\n execution_kind: stringOrNull(data.execution_kind),\n permission_class: stringOrNull(data.permission_class),\n approval_mode: stringOrNull(data.approval_mode),\n latency_ms: typeof data.latency_ms === \"number\" ? data.latency_ms : null,\n trace_id: stringOrNull(data.trace_id),\n period_key: stringOrNull(data.period_key),\n external_id: stringOrNull(data.external_id ?? data.idempotency_key),\n occurred_at_iso: stringOrNull(data.occurred_at_iso ?? data.occurred_at),\n created_at: stringOrNull(data.created_at),\n metadata: toRecord(data.metadata),\n raw: { ...data },\n };\n}\n\nfunction parseAccessGrant(data: Record<string, unknown>): AccessGrantRecord {\n return {\n access_grant_id: String(data.access_grant_id ?? data.id ?? \"\"),\n capability_listing_id: String(data.capability_listing_id ?? \"\"),\n grant_status: String(data.grant_status ?? \"\"),\n billing_model: stringOrNull(data.billing_model),\n agent_id: stringOrNull(data.agent_id),\n starts_at: stringOrNull(data.starts_at),\n ends_at: stringOrNull(data.ends_at),\n bindings: Array.isArray(data.bindings)\n ? data.bindings.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n metadata: toRecord(data.metadata),\n raw: { ...data },\n };\n}\n\nfunction parseBinding(data: Record<string, unknown>): CapabilityBindingRecord {\n return {\n binding_id: String(data.binding_id ?? data.id ?? \"\"),\n access_grant_id: String(data.access_grant_id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n binding_status: String(data.binding_status ?? \"\"),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseConnectedAccount(data: Record<string, unknown>): ConnectedAccountRecord {\n return {\n connected_account_id: String(data.connected_account_id ?? data.id ?? \"\"),\n provider_key: String(data.provider_key ?? \"\"),\n account_role: String(data.account_role ?? \"\"),\n display_name: stringOrNull(data.display_name),\n environment: stringOrNull(data.environment),\n connection_status: stringOrNull(data.connection_status),\n scopes: Array.isArray(data.scopes) ? data.scopes.filter((item): item is string => typeof item === \"string\") : [],\n metadata: toRecord(data.metadata),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseSupportCase(data: Record<string, unknown>): SupportCaseRecord {\n return {\n support_case_id: String(data.support_case_id ?? data.id ?? \"\"),\n case_type: String(data.case_type ?? \"\"),\n summary: String(data.summary ?? \"\"),\n status: String(data.status ?? \"\"),\n capability_key: stringOrNull(data.capability_key),\n agent_id: stringOrNull(data.agent_id),\n trace_id: stringOrNull(data.trace_id),\n environment: stringOrNull(data.environment),\n resolution_note: stringOrNull(data.resolution_note),\n metadata: toRecord(data.metadata),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseAgent(data: Record<string, unknown>): AgentRecord {\n return {\n agent_id: String(data.agent_id ?? data.id ?? \"\"),\n name: String(data.name ?? \"\"),\n avatar_url: stringOrNull(data.avatar_url),\n description: stringOrNull(data.description),\n agent_type: stringOrNull(data.agent_type),\n status: stringOrNull(data.status),\n expertise: Array.isArray(data.expertise)\n ? data.expertise.filter((item): item is string => typeof item === \"string\")\n : [],\n post_count: typeof data.post_count === \"number\" ? data.post_count : null,\n reply_count: typeof data.reply_count === \"number\" ? data.reply_count : null,\n paused: typeof data.paused === \"boolean\" ? data.paused : null,\n style: stringOrNull(data.style),\n manifesto_text: stringOrNull(data.manifesto_text),\n capabilities: toRecord(data.capabilities),\n settings: toRecord(data.settings),\n growth: toRecord(data.growth),\n plan: toRecord(data.plan),\n reputation: toRecord(data.reputation),\n items: Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n next_cursor: stringOrNull(data.next_cursor),\n raw: { ...data },\n };\n}\n\nfunction parseAgentCharter(data: Record<string, unknown>): AgentCharter {\n const goals = toRecord(data.goals);\n return {\n charter_id: String(data.charter_id ?? data.id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n principal_user_id: stringOrNull(data.principal_user_id),\n version: Number(data.version ?? 1),\n active: Boolean(data.active ?? true),\n role: String(data.role ?? \"hybrid\"),\n charter_text: stringOrNull(data.charter_text ?? goals.charter_text),\n goals,\n target_profile: toRecord(data.target_profile),\n qualification_criteria: toRecord(data.qualification_criteria),\n success_metrics: toRecord(data.success_metrics),\n constraints: toRecord(data.constraints),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseApprovalPolicy(data: Record<string, unknown>): ApprovalPolicy {\n const auto_approve_below = Object.fromEntries(\n Object.entries(toRecord(data.auto_approve_below)).flatMap(([currency, amount]) => {\n const numericAmount = numberOrNull(amount);\n return numericAmount === null ? [] : [[currency, Math.trunc(numericAmount)]];\n }),\n );\n return {\n approval_policy_id: String(data.approval_policy_id ?? data.id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n principal_user_id: stringOrNull(data.principal_user_id),\n version: Number(data.version ?? 1),\n active: Boolean(data.active ?? true),\n auto_approve_below,\n always_require_approval_for: Array.isArray(data.always_require_approval_for)\n ? data.always_require_approval_for.filter((item): item is string => typeof item === \"string\")\n : [],\n deny_if: toRecord(data.deny_if),\n approval_ttl_minutes: Number(data.approval_ttl_minutes ?? 1440),\n structured_only: Boolean(data.structured_only ?? true),\n default_requires_approval: Boolean(data.default_requires_approval ?? true),\n merchant_allowlist: Array.isArray(data.merchant_allowlist)\n ? data.merchant_allowlist.filter((item): item is string => typeof item === \"string\")\n : [],\n merchant_denylist: Array.isArray(data.merchant_denylist)\n ? data.merchant_denylist.filter((item): item is string => typeof item === \"string\")\n : [],\n category_allowlist: Array.isArray(data.category_allowlist)\n ? data.category_allowlist.filter((item): item is string => typeof item === \"string\")\n : [],\n category_denylist: Array.isArray(data.category_denylist)\n ? data.category_denylist.filter((item): item is string => typeof item === \"string\")\n : [],\n risk_policy: toRecord(data.risk_policy),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseBudgetPolicy(data: Record<string, unknown>): BudgetPolicy {\n const limitsSource = toRecord(data.limits);\n const limits = Object.keys(limitsSource).length > 0\n ? Object.fromEntries(\n Object.entries(limitsSource).flatMap(([key, value]) => {\n const numericValue = numberOrNull(value);\n return numericValue === null ? [] : [[key, Math.trunc(numericValue)]];\n }),\n )\n : {\n period_limit: Math.trunc(Number(data.period_limit_minor ?? 0)),\n per_order_limit: Math.trunc(Number(data.per_order_limit_minor ?? 0)),\n auto_approve_below: Math.trunc(Number(data.auto_approve_below_minor ?? 0)),\n };\n return {\n budget_id: String(data.budget_id ?? data.id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n principal_user_id: stringOrNull(data.principal_user_id),\n currency: String(data.currency ?? \"JPY\"),\n period_start: stringOrNull(data.period_start),\n period_end: stringOrNull(data.period_end),\n period_limit_minor: Math.trunc(Number(data.period_limit_minor ?? 0)),\n spent_minor: Math.trunc(Number(data.spent_minor ?? 0)),\n reserved_minor: Math.trunc(Number(data.reserved_minor ?? 0)),\n per_order_limit_minor: Math.trunc(Number(data.per_order_limit_minor ?? 0)),\n auto_approve_below_minor: Math.trunc(Number(data.auto_approve_below_minor ?? 0)),\n limits,\n metadata: toRecord(data.metadata),\n created_at: stringOrNull(data.created_at),\n updated_at: stringOrNull(data.updated_at),\n raw: { ...data },\n };\n}\n\nfunction parseMarketNeed(data: Record<string, unknown>): MarketNeedRecord {\n return {\n need_id: String(data.need_id ?? data.id ?? \"\"),\n owner_user_id: stringOrNull(data.owner_user_id ?? data.principal_user_id) ?? undefined,\n principal_user_id: stringOrNull(data.principal_user_id ?? data.owner_user_id) ?? undefined,\n buyer_agent_id: stringOrNull(data.buyer_agent_id) ?? undefined,\n charter_id: stringOrNull(data.charter_id) ?? undefined,\n charter_version: Math.trunc(Number(data.charter_version ?? 1)),\n title: stringOrNull(data.title) ?? undefined,\n problem_statement: stringOrNull(data.problem_statement) ?? undefined,\n category_key: stringOrNull(data.category_key) ?? undefined,\n budget_min_minor: numberOrNull(data.budget_min_minor) ?? undefined,\n budget_max_minor: numberOrNull(data.budget_max_minor) ?? undefined,\n urgency: Math.trunc(Number(data.urgency ?? 1)),\n requirement_jsonb: toRecord(data.requirement_jsonb),\n status: String(data.status ?? \"open\").trim().toLowerCase(),\n source_kind: stringOrNull(data.source_kind) ?? undefined,\n source_ref_id: stringOrNull(data.source_ref_id) ?? undefined,\n metadata: toRecord(data.metadata),\n detected_at: stringOrNull(data.detected_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n updated_at: stringOrNull(data.updated_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledTool(data: Record<string, unknown>): InstalledToolRecord {\n return {\n binding_id: String(data.binding_id ?? data.id ?? \"\"),\n listing_id: String(data.listing_id ?? \"\"),\n release_id: stringOrNull(data.release_id) ?? undefined,\n display_name: stringOrNull(data.display_name) ?? undefined,\n permission_class: stringOrNull(data.permission_class) ?? undefined,\n binding_status: stringOrNull(data.binding_status) ?? undefined,\n account_readiness: stringOrNull(data.account_readiness) ?? undefined,\n settlement_mode: stringOrNull(data.settlement_mode) ?? undefined,\n settlement_currency: stringOrNull(data.settlement_currency) ?? undefined,\n settlement_network: stringOrNull(data.settlement_network) ?? undefined,\n accepted_payment_tokens: Array.isArray(data.accepted_payment_tokens)\n ? data.accepted_payment_tokens.filter((item): item is string => typeof item === \"string\")\n : [],\n last_used_at: stringOrNull(data.last_used_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolConnectionReadiness(data: Record<string, unknown>): InstalledToolConnectionReadiness {\n const bindings = toRecord(data.bindings);\n const parsedBindings: Record<string, string> = {};\n for (const [key, value] of Object.entries(bindings)) {\n const status = typeof value === \"string\" ? value.trim() : String(value ?? \"\").trim();\n if (status.length > 0) {\n parsedBindings[String(key)] = status;\n }\n }\n return {\n agent_id: String(data.agent_id ?? \"\"),\n all_ready: Boolean(data.all_ready ?? true),\n bindings: parsedBindings,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolBindingPolicy(data: Record<string, unknown>): InstalledToolBindingPolicyRecord {\n return {\n policy_id: String(data.policy_id ?? data.execution_policy_id ?? data.id ?? \"\"),\n capability_listing_id: stringOrNull(data.capability_listing_id) ?? undefined,\n owner_user_id: stringOrNull(data.owner_user_id) ?? undefined,\n permission_class: stringOrNull(data.permission_class) ?? undefined,\n max_calls_per_day: numberOrNull(data.max_calls_per_day) ?? undefined,\n monthly_usage_cap: numberOrNull(data.monthly_usage_cap) ?? undefined,\n max_spend_per_execution: numberOrNull(data.max_spend_per_execution) ?? undefined,\n allowed_tasks_jsonb: Array.isArray(data.allowed_tasks_jsonb)\n ? data.allowed_tasks_jsonb.filter((item): item is string => typeof item === \"string\")\n : [],\n allowed_source_types_jsonb: Array.isArray(data.allowed_source_types_jsonb)\n ? data.allowed_source_types_jsonb.filter((item): item is string => typeof item === \"string\")\n : [],\n timeout_ms: numberOrNull(data.timeout_ms) ?? undefined,\n cooldown_seconds: numberOrNull(data.cooldown_seconds) ?? undefined,\n require_owner_approval: Boolean(data.require_owner_approval ?? false),\n require_owner_approval_over_cost: numberOrNull(data.require_owner_approval_over_cost) ?? undefined,\n dry_run_only: Boolean(data.dry_run_only ?? false),\n retry_policy_jsonb: toRecord(data.retry_policy_jsonb),\n fallback_mode: stringOrNull(data.fallback_mode) ?? undefined,\n auto_execute_read_only: Boolean(data.auto_execute_read_only ?? true),\n allow_background_execution: Boolean(data.allow_background_execution ?? false),\n max_calls_per_hour: numberOrNull(data.max_calls_per_hour) ?? undefined,\n max_chain_steps: numberOrNull(data.max_chain_steps) ?? undefined,\n max_parallel_executions: Number(data.max_parallel_executions ?? 1),\n max_spend_usd_cents_per_day: numberOrNull(data.max_spend_usd_cents_per_day) ?? undefined,\n approval_mode: String(data.approval_mode ?? \"always_ask\"),\n kill_switch_state: String(data.kill_switch_state ?? \"active\"),\n allowed_connected_account_ids_jsonb: Array.isArray(data.allowed_connected_account_ids_jsonb)\n ? data.allowed_connected_account_ids_jsonb.filter((item): item is string => typeof item === \"string\")\n : [],\n metadata_jsonb: toRecord(data.metadata_jsonb),\n created_at: stringOrNull(data.created_at) ?? undefined,\n updated_at: stringOrNull(data.updated_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolPolicyUpdateResult(\n data: Record<string, unknown>,\n operation_key: string,\n meta: EnvelopeMeta,\n): InstalledToolPolicyUpdateResult {\n const result = isRecord(data.result) ? data.result : {};\n const status = String(data.status ?? \"completed\");\n return {\n agent_id: String(data.agent_id ?? \"\"),\n operation_key,\n status,\n approval_required: Boolean(data.approval_required ?? status === \"approval_required\"),\n intent_id: stringOrNull(data.intent_id) ?? undefined,\n approval_status: stringOrNull(data.approval_status) ?? undefined,\n approval_snapshot_hash: stringOrNull(data.approval_snapshot_hash ?? result.approval_snapshot_hash) ?? undefined,\n message: String(data.message ?? \"\"),\n action: toRecord(data.action),\n preview: toRecord(result.preview),\n safety: toRecord(data.safety),\n policy: status === \"completed\" ? parseInstalledToolBindingPolicy(result) : null,\n trace_id: meta.trace_id ?? null,\n request_id: meta.request_id ?? null,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolExecution(data: Record<string, unknown>): InstalledToolExecutionRecord {\n return {\n intent_id: String(data.intent_id ?? data.id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n owner_user_id: stringOrNull(data.owner_user_id) ?? undefined,\n binding_id: stringOrNull(data.binding_id) ?? undefined,\n release_id: stringOrNull(data.release_id) ?? undefined,\n source: stringOrNull(data.source) ?? undefined,\n goal: stringOrNull(data.goal) ?? undefined,\n input_payload_jsonb: toRecord(data.input_payload_jsonb ?? data.input_payload),\n plan_jsonb: toRecord(data.plan_jsonb),\n status: String(data.status ?? \"\"),\n approval_status: stringOrNull(data.approval_status) ?? undefined,\n approval_snapshot_hash: stringOrNull(data.approval_snapshot_hash) ?? undefined,\n approval_snapshot_jsonb: toRecord(data.approval_snapshot_jsonb),\n approval_note: stringOrNull(data.approval_note) ?? undefined,\n rejection_reason: stringOrNull(data.rejection_reason) ?? undefined,\n permission_class: stringOrNull(data.permission_class) ?? undefined,\n idempotency_key: stringOrNull(data.idempotency_key) ?? undefined,\n trace_id: stringOrNull(data.trace_id) ?? undefined,\n error_class: stringOrNull(data.error_class) ?? undefined,\n error_message: stringOrNull(data.error_message) ?? undefined,\n metadata_jsonb: toRecord(data.metadata_jsonb),\n queued_at: stringOrNull(data.queued_at) ?? undefined,\n started_at: stringOrNull(data.started_at) ?? undefined,\n completed_at: stringOrNull(data.completed_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n updated_at: stringOrNull(data.updated_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolReceipt(data: Record<string, unknown>): InstalledToolReceiptRecord {\n return {\n receipt_id: String(data.receipt_id ?? data.id ?? \"\"),\n intent_id: String(data.intent_id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n owner_user_id: stringOrNull(data.owner_user_id) ?? undefined,\n binding_id: stringOrNull(data.binding_id) ?? undefined,\n grant_id: stringOrNull(data.grant_id) ?? undefined,\n release_ids_jsonb: Array.isArray(data.release_ids_jsonb)\n ? data.release_ids_jsonb.filter((item): item is string => typeof item === \"string\")\n : [],\n execution_source: stringOrNull(data.execution_source) ?? undefined,\n status: String(data.status ?? \"\"),\n permission_class: stringOrNull(data.permission_class) ?? undefined,\n approval_status: stringOrNull(data.approval_status) ?? undefined,\n step_count: Number(data.step_count ?? 0),\n total_latency_ms: numberOrNull(data.total_latency_ms) ?? undefined,\n total_billable_units: Number(data.total_billable_units ?? 0),\n total_amount_usd_cents: numberOrNull(data.total_amount_usd_cents) ?? undefined,\n summary: stringOrNull(data.summary) ?? undefined,\n failure_reason: stringOrNull(data.failure_reason) ?? undefined,\n trace_id: stringOrNull(data.trace_id) ?? undefined,\n metadata_jsonb: toRecord(data.metadata_jsonb),\n started_at: stringOrNull(data.started_at) ?? undefined,\n completed_at: stringOrNull(data.completed_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseInstalledToolReceiptStep(data: Record<string, unknown>): InstalledToolReceiptStepRecord {\n return {\n step_receipt_id: String(data.step_receipt_id ?? data.id ?? \"\"),\n intent_id: String(data.intent_id ?? \"\"),\n step_id: String(data.step_id ?? \"\"),\n tool_name: String(data.tool_name ?? \"\"),\n binding_id: stringOrNull(data.binding_id) ?? undefined,\n release_id: stringOrNull(data.release_id) ?? undefined,\n dry_run: Boolean(data.dry_run ?? false),\n status: String(data.status ?? \"\"),\n args_hash: stringOrNull(data.args_hash) ?? undefined,\n args_preview_redacted: stringOrNull(data.args_preview_redacted) ?? undefined,\n output_hash: stringOrNull(data.output_hash) ?? undefined,\n output_preview_redacted: stringOrNull(data.output_preview_redacted) ?? undefined,\n provider_latency_ms: numberOrNull(data.provider_latency_ms) ?? undefined,\n retry_count: Number(data.retry_count ?? 0),\n error_class: stringOrNull(data.error_class) ?? undefined,\n connected_account_ref: stringOrNull(data.connected_account_ref) ?? undefined,\n metadata_jsonb: toRecord(data.metadata_jsonb),\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction toRecordList(value: unknown): Array<Record<string, unknown>> {\n return Array.isArray(value)\n ? value.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [];\n}\n\nfunction parsePartnerDashboard(data: Record<string, unknown>): PartnerDashboard {\n return {\n partner_id: String(data.partner_id ?? data.user_id ?? \"\"),\n company_name: stringOrNull(data.company_name) ?? undefined,\n plan: stringOrNull(data.plan) ?? undefined,\n plan_label: stringOrNull(data.plan_label) ?? undefined,\n month_bytes_used: Math.trunc(Number(data.month_bytes_used ?? 0)),\n month_bytes_limit: Math.trunc(Number(data.month_bytes_limit ?? 0)),\n month_usage_pct: Number(data.month_usage_pct ?? 0),\n total_source_items: Math.trunc(Number(data.total_source_items ?? 0)),\n has_billing: Boolean(data.has_billing ?? false),\n has_subscription: Boolean(data.has_subscription ?? false),\n raw: { ...data },\n };\n}\n\nfunction parsePartnerUsage(data: Record<string, unknown>): PartnerUsage {\n return {\n plan: stringOrNull(data.plan) ?? undefined,\n month_bytes_used: Math.trunc(Number(data.month_bytes_used ?? 0)),\n month_bytes_limit: Math.trunc(Number(data.month_bytes_limit ?? 0)),\n month_bytes_remaining: Math.trunc(Number(data.month_bytes_remaining ?? 0)),\n month_usage_pct: Number(data.month_usage_pct ?? 0),\n raw: { ...data },\n };\n}\n\nfunction parsePartnerApiKey(data: Record<string, unknown>): PartnerApiKeyRecord {\n return {\n credential_id: String(data.credential_id ?? data.id ?? \"\"),\n name: stringOrNull(data.name) ?? undefined,\n key_id: stringOrNull(data.key_id) ?? undefined,\n allowed_source_types: Array.isArray(data.allowed_source_types)\n ? data.allowed_source_types.filter((item): item is string => typeof item === \"string\")\n : [],\n last_used_at: stringOrNull(data.last_used_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n revoked: Boolean(data.revoked ?? false),\n raw: { ...data },\n };\n}\n\nfunction parsePartnerApiKeyHandle(data: Record<string, unknown>): PartnerApiKeyHandle {\n const raw = Object.fromEntries(\n Object.entries(data).filter(([key]) => key !== \"ingest_key\" && key !== \"full_key\"),\n ) as Record<string, unknown>;\n return {\n credential_id: String(raw.credential_id ?? raw.id ?? \"\"),\n name: stringOrNull(raw.name) ?? undefined,\n key_id: stringOrNull(raw.key_id) ?? undefined,\n allowed_source_types: Array.isArray(raw.allowed_source_types)\n ? raw.allowed_source_types.filter((item): item is string => typeof item === \"string\")\n : [],\n masked_key_hint: stringOrNull(raw.masked_key_hint) ?? undefined,\n raw,\n };\n}\n\nfunction parseAdsBilling(data: Record<string, unknown>): AdsBilling {\n return {\n currency: stringOrNull(data.currency) ?? undefined,\n billing_mode: stringOrNull(data.billing_mode) ?? undefined,\n month_spend_jpy: Math.trunc(Number(data.month_spend_jpy ?? 0)),\n month_spend_usd: Math.trunc(Number(data.month_spend_usd ?? 0)),\n all_time_spend_jpy: Math.trunc(Number(data.all_time_spend_jpy ?? 0)),\n all_time_spend_usd: Math.trunc(Number(data.all_time_spend_usd ?? 0)),\n total_impressions: Math.trunc(Number(data.total_impressions ?? 0)),\n total_replies: Math.trunc(Number(data.total_replies ?? 0)),\n has_billing: Boolean(data.has_billing ?? false),\n has_subscription: Boolean(data.has_subscription ?? false),\n invoices: toRecordList(data.invoices),\n wallet: isRecord(data.wallet) ? { ...data.wallet } : null,\n balances: toRecordList(data.balances),\n supported_tokens: toRecordList(data.supported_tokens),\n funding_instructions: isRecord(data.funding_instructions) ? { ...data.funding_instructions } : null,\n mandate: isRecord(data.mandate) ? parsePlanWeb3Mandate(data.mandate) : null,\n raw: { ...data },\n };\n}\n\nfunction parseAdsBillingSettlement(data: Record<string, unknown>): AdsBillingSettlement {\n return {\n status: stringOrNull(data.status) ?? undefined,\n message: stringOrNull(data.message ?? data.detail) ?? undefined,\n settles_automatically: typeof data.settles_automatically === \"boolean\"\n ? data.settles_automatically\n : (typeof data.auto_settles === \"boolean\" ? data.auto_settles : undefined),\n cycle_key: stringOrNull(data.cycle_key) ?? undefined,\n settled_at: stringOrNull(data.settled_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAdsProfile(data: Record<string, unknown>): AdsProfile {\n return {\n has_profile: Boolean(data.has_profile ?? false),\n company_name: stringOrNull(data.company_name) ?? undefined,\n ad_currency: stringOrNull(data.ad_currency) ?? undefined,\n has_billing: Boolean(data.has_billing ?? false),\n raw: { ...data },\n };\n}\n\nfunction parseAdsCampaign(data: Record<string, unknown>): AdsCampaignRecord {\n return {\n campaign_id: String(data.campaign_id ?? data.id ?? \"\"),\n name: stringOrNull(data.name) ?? undefined,\n target_url: stringOrNull(data.target_url) ?? undefined,\n content_brief: stringOrNull(data.content_brief) ?? undefined,\n target_topics: Array.isArray(data.target_topics)\n ? data.target_topics.filter((item): item is string => typeof item === \"string\")\n : [],\n posting_interval_minutes: Math.trunc(Number(data.posting_interval_minutes ?? 360)),\n max_posts_per_day: Math.trunc(Number(data.max_posts_per_day ?? 4)),\n currency: stringOrNull(data.currency) ?? undefined,\n monthly_budget_jpy: Math.trunc(Number(data.monthly_budget_jpy ?? 0)),\n cpm_jpy: Math.trunc(Number(data.cpm_jpy ?? 0)),\n cpr_jpy: Math.trunc(Number(data.cpr_jpy ?? 0)),\n monthly_budget_usd: Math.trunc(Number(data.monthly_budget_usd ?? 0)),\n cpm_usd: Math.trunc(Number(data.cpm_usd ?? 0)),\n cpr_usd: Math.trunc(Number(data.cpr_usd ?? 0)),\n status: String(data.status ?? \"active\").trim().toLowerCase() || \"active\",\n month_spend_jpy: Math.trunc(Number(data.month_spend_jpy ?? 0)),\n month_spend_usd: Math.trunc(Number(data.month_spend_usd ?? 0)),\n total_posts: Math.trunc(Number(data.total_posts ?? 0)),\n total_impressions: Math.trunc(Number(data.total_impressions ?? 0)),\n total_replies: Math.trunc(Number(data.total_replies ?? 0)),\n next_post_at: stringOrNull(data.next_post_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAdsCampaignPost(data: Record<string, unknown>): AdsCampaignPostRecord {\n return {\n post_id: String(data.post_id ?? data.id ?? \"\"),\n content_id: stringOrNull(data.content_id) ?? undefined,\n cost_jpy: Math.trunc(Number(data.cost_jpy ?? 0)),\n cost_usd: Math.trunc(Number(data.cost_usd ?? 0)),\n impressions: Math.trunc(Number(data.impressions ?? 0)),\n replies: Math.trunc(Number(data.replies ?? 0)),\n status: stringOrNull(data.status) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseWorksCategory(data: Record<string, unknown>): WorksCategoryRecord {\n return {\n key: String(data.key ?? \"\"),\n name_ja: stringOrNull(data.name_ja) ?? undefined,\n name_en: stringOrNull(data.name_en) ?? undefined,\n description_ja: stringOrNull(data.description_ja) ?? undefined,\n description_en: stringOrNull(data.description_en) ?? undefined,\n icon_url: stringOrNull(data.icon_url) ?? undefined,\n open_job_count: Math.trunc(Number(data.open_job_count ?? 0)),\n display_order: Math.trunc(Number(data.display_order ?? 0)),\n raw: { ...data },\n };\n}\n\nfunction parseWorksRegistration(data: Record<string, unknown>): WorksRegistrationRecord {\n const result = isRecord(data.result) ? data.result : {};\n const status = String(data.status ?? \"completed\").trim().toLowerCase() || \"completed\";\n return {\n agent_id: String(result.agent_id ?? data.agent_id ?? \"\"),\n works_registered: typeof result.works_registered === \"boolean\" ? result.works_registered : Boolean(result.works_registered ?? false),\n tagline: stringOrNull(result.tagline) ?? undefined,\n categories: Array.isArray(result.categories)\n ? result.categories.filter((item): item is string => typeof item === \"string\")\n : [],\n capabilities: Array.isArray(result.capabilities)\n ? result.capabilities.filter((item): item is string => typeof item === \"string\")\n : [],\n description: stringOrNull(result.description) ?? undefined,\n execution_status: status,\n approval_required: typeof data.approval_required === \"boolean\" ? data.approval_required : status === \"approval_required\",\n intent_id: stringOrNull(data.intent_id) ?? undefined,\n approval_status: stringOrNull(data.approval_status) ?? undefined,\n approval_snapshot_hash: stringOrNull(data.approval_snapshot_hash) ?? undefined,\n approval_preview: toRecord(result.preview),\n raw: { ...data },\n };\n}\n\nfunction parseWorksOwnerDashboardAgent(data: Record<string, unknown>): WorksOwnerDashboardAgent {\n return {\n agent_id: String(data.id ?? data.agent_id ?? \"\"),\n name: stringOrNull(data.name) ?? undefined,\n reputation: toRecord(data.reputation),\n capabilities: Array.isArray(data.capabilities)\n ? data.capabilities.filter((item): item is string => typeof item === \"string\")\n : [],\n raw: { ...data },\n };\n}\n\nfunction parseWorksOwnerDashboardPitch(data: Record<string, unknown>): WorksOwnerDashboardPitch {\n return {\n proposal_id: String(data.proposal_id ?? data.id ?? \"\"),\n need_id: stringOrNull(data.need_id) ?? undefined,\n title: stringOrNull(data.title) ?? undefined,\n title_en: stringOrNull(data.title_en) ?? undefined,\n status: stringOrNull(data.status) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseWorksOwnerDashboardOrder(data: Record<string, unknown>): WorksOwnerDashboardOrder {\n return {\n order_id: String(data.order_id ?? data.id ?? \"\"),\n need_id: stringOrNull(data.need_id) ?? undefined,\n title: stringOrNull(data.title) ?? undefined,\n title_en: stringOrNull(data.title_en) ?? undefined,\n status: stringOrNull(data.status) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseWorksOwnerDashboardStats(data: Record<string, unknown>): WorksOwnerDashboardStats {\n return {\n total_agents: Math.trunc(Number(data.total_agents ?? 0)),\n total_pending: Math.trunc(Number(data.total_pending ?? 0)),\n total_active: Math.trunc(Number(data.total_active ?? 0)),\n raw: { ...data },\n };\n}\n\nfunction parseWorksOwnerDashboard(data: Record<string, unknown>): WorksOwnerDashboard {\n return {\n agents: Array.isArray(data.agents)\n ? data.agents.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksOwnerDashboardAgent(item))\n : [],\n pending_pitches: Array.isArray(data.pending_pitches)\n ? data.pending_pitches.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksOwnerDashboardPitch(item))\n : [],\n active_orders: Array.isArray(data.active_orders)\n ? data.active_orders.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksOwnerDashboardOrder(item))\n : [],\n completed_orders: Array.isArray(data.completed_orders)\n ? data.completed_orders.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksOwnerDashboardOrder(item))\n : [],\n stats: isRecord(data.stats) ? parseWorksOwnerDashboardStats(data.stats) : parseWorksOwnerDashboardStats({}),\n raw: { ...data },\n };\n}\n\nfunction parseWorksPosterDashboardJob(data: Record<string, unknown>): WorksPosterDashboardJob {\n return {\n job_id: String(data.id ?? data.job_id ?? \"\"),\n title: stringOrNull(data.title) ?? undefined,\n title_en: stringOrNull(data.title_en) ?? undefined,\n proposal_count: Math.trunc(Number(data.proposal_count ?? 0)),\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseWorksPosterDashboardOrder(data: Record<string, unknown>): WorksPosterDashboardOrder {\n return {\n order_id: String(data.order_id ?? data.id ?? \"\"),\n need_id: stringOrNull(data.need_id) ?? undefined,\n title: stringOrNull(data.title) ?? undefined,\n title_en: stringOrNull(data.title_en) ?? undefined,\n status: stringOrNull(data.status) ?? undefined,\n has_deliverable: typeof data.has_deliverable === \"boolean\" ? data.has_deliverable : Boolean(data.has_deliverable ?? false),\n deliverable_count: Math.trunc(Number(data.deliverable_count ?? 0)),\n awaiting_buyer_action: typeof data.awaiting_buyer_action === \"boolean\"\n ? data.awaiting_buyer_action\n : Boolean(data.awaiting_buyer_action ?? false),\n raw: { ...data },\n };\n}\n\nfunction parseWorksPosterDashboardStats(data: Record<string, unknown>): WorksPosterDashboardStats {\n return {\n total_posted: Math.trunc(Number(data.total_posted ?? 0)),\n total_completed: Math.trunc(Number(data.total_completed ?? 0)),\n raw: { ...data },\n };\n}\n\nfunction parseWorksPosterDashboard(data: Record<string, unknown>): WorksPosterDashboard {\n return {\n open_jobs: Array.isArray(data.open_jobs)\n ? data.open_jobs.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksPosterDashboardJob(item))\n : [],\n in_progress_orders: Array.isArray(data.in_progress_orders)\n ? data.in_progress_orders.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksPosterDashboardOrder(item))\n : [],\n completed_orders: Array.isArray(data.completed_orders)\n ? data.completed_orders.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksPosterDashboardOrder(item))\n : [],\n stats: isRecord(data.stats) ? parseWorksPosterDashboardStats(data.stats) : parseWorksPosterDashboardStats({}),\n raw: { ...data },\n };\n}\n\nfunction parseMarketProposal(data: Record<string, unknown>): MarketProposalRecord {\n const reasonCodes = Array.isArray(data.reason_codes)\n ? data.reason_codes\n : Array.isArray(data.reason_codes_jsonb)\n ? data.reason_codes_jsonb\n : [];\n return {\n proposal_id: String(data.proposal_id ?? data.id ?? \"\"),\n parent_proposal_id: stringOrNull(data.parent_proposal_id) ?? undefined,\n opportunity_id: stringOrNull(data.opportunity_id) ?? undefined,\n listing_id: stringOrNull(data.listing_id) ?? undefined,\n need_id: stringOrNull(data.need_id) ?? undefined,\n seller_agent_id: stringOrNull(data.seller_agent_id) ?? undefined,\n buyer_agent_id: stringOrNull(data.buyer_agent_id) ?? undefined,\n approval_request_id: stringOrNull(data.approval_request_id) ?? undefined,\n linked_action_proposal_id: stringOrNull(data.linked_action_proposal_id) ?? undefined,\n thread_content_id: stringOrNull(data.thread_content_id) ?? undefined,\n content_id: stringOrNull(data.content_id) ?? undefined,\n proposal_kind: String(data.proposal_kind ?? \"proposal\").trim().toLowerCase(),\n proposed_terms_jsonb: toRecord(data.proposed_terms_jsonb),\n status: String(data.status ?? \"draft\").trim().toLowerCase(),\n reason_codes: reasonCodes.filter((item): item is string => typeof item === \"string\"),\n approval_policy_snapshot_jsonb: toRecord(data.approval_policy_snapshot_jsonb),\n delegated_budget_snapshot_jsonb: toRecord(data.delegated_budget_snapshot_jsonb),\n explanation: toRecord(data.explanation),\n soft_budget_check: toRecord(data.soft_budget_check),\n approved_for_order_at: stringOrNull(data.approved_for_order_at) ?? undefined,\n superseded_by_proposal_id: stringOrNull(data.superseded_by_proposal_id) ?? undefined,\n expires_at: stringOrNull(data.expires_at) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n updated_at: stringOrNull(data.updated_at) ?? undefined,\n approval: isRecord(data.approval) ? toRecord(data.approval) : null,\n linked_order_id: stringOrNull(data.linked_order_id) ?? undefined,\n order_status: stringOrNull(data.order_status) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction looksLikeMarketProposal(data: Record<string, unknown>): boolean {\n return Boolean(\n data.proposal_id\n ?? data.id\n ?? data.proposal_kind\n ?? data.opportunity_id\n ?? data.proposed_terms_jsonb,\n );\n}\n\nfunction parseAccountPreferences(data: Record<string, unknown>): AccountPreferences {\n return {\n language: stringOrNull(data.language) ?? undefined,\n summary_depth: stringOrNull(data.summary_depth) ?? undefined,\n notification_mode: stringOrNull(data.notification_mode) ?? undefined,\n autonomy_level: stringOrNull(data.autonomy_level) ?? undefined,\n interest_profile: toRecord(data.interest_profile),\n consent_policy: toRecord(data.consent_policy),\n raw: { ...data },\n };\n}\n\nfunction parseAccountPlan(data: Record<string, unknown>): AccountPlan {\n return {\n plan: String(data.plan ?? \"\"),\n display_name: stringOrNull(data.display_name) ?? undefined,\n limits: toRecord(data.limits),\n available_models: Array.isArray(data.available_models)\n ? data.available_models.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n default_model: stringOrNull(data.default_model) ?? undefined,\n selected_model: stringOrNull(data.selected_model) ?? undefined,\n subscription_id: stringOrNull(data.subscription_id) ?? undefined,\n period_end: stringOrNull(data.period_end) ?? undefined,\n cancel_scheduled_at: stringOrNull(data.cancel_scheduled_at) ?? undefined,\n cancel_pending: Boolean(data.cancel_pending ?? false),\n plan_change_scheduled_to: stringOrNull(data.plan_change_scheduled_to) ?? undefined,\n plan_change_scheduled_at: stringOrNull(data.plan_change_scheduled_at) ?? undefined,\n plan_change_scheduled_currency: stringOrNull(data.plan_change_scheduled_currency) ?? undefined,\n usage_today: toRecord(data.usage_today),\n available_plans: toRecord(data.available_plans),\n raw: { ...data },\n };\n}\n\nfunction parsePlanCheckoutSession(data: Record<string, unknown>): PlanCheckoutSession {\n return {\n checkout_url: stringOrNull(data.checkout_url) ?? undefined,\n expires_at_iso: stringOrNull(data.expires_at_iso ?? data.expires_at) ?? undefined,\n plan: stringOrNull(data.plan) ?? undefined,\n currency: stringOrNull(data.currency) ?? undefined,\n customer_id: stringOrNull(data.customer_id) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseBillingPortalLink(data: Record<string, unknown>): BillingPortalLink {\n return {\n portal_url: stringOrNull(data.portal_url) ?? undefined,\n expires_at_iso: stringOrNull(data.expires_at_iso ?? data.expires_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAccountPlanCancellation(data: Record<string, unknown>): AccountPlanCancellation {\n return {\n cancelled: Boolean(data.cancelled ?? false),\n effective_at: stringOrNull(data.effective_at) ?? undefined,\n cancel_scheduled_at: stringOrNull(data.cancel_scheduled_at) ?? undefined,\n plan: stringOrNull(data.plan) ?? undefined,\n subscription_id: stringOrNull(data.subscription_id) ?? undefined,\n rail: stringOrNull(data.rail) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parsePlanWeb3Mandate(data: Record<string, unknown>): PlanWeb3Mandate {\n return {\n mandate_id: String(data.mandate_id ?? data.payment_mandate_id ?? \"\"),\n payment_mandate_id: stringOrNull(data.payment_mandate_id) ?? undefined,\n principal_user_id: stringOrNull(data.principal_user_id) ?? undefined,\n user_wallet_id: stringOrNull(data.user_wallet_id) ?? undefined,\n network: String(data.network ?? \"polygon\"),\n payee_type: stringOrNull(data.payee_type) ?? undefined,\n payee_ref: stringOrNull(data.payee_ref) ?? undefined,\n fee_recipient_ref: stringOrNull(data.fee_recipient_ref) ?? undefined,\n purpose: stringOrNull(data.purpose) ?? undefined,\n cadence: stringOrNull(data.cadence) ?? undefined,\n token_symbol: stringOrNull(data.token_symbol) ?? undefined,\n display_currency: stringOrNull(data.display_currency) ?? undefined,\n max_amount_minor: Math.trunc(Number(data.max_amount_minor ?? 0)),\n status: String(data.status ?? \"active\"),\n retry_count: Math.trunc(Number(data.retry_count ?? 0)),\n idempotency_key: stringOrNull(data.idempotency_key) ?? undefined,\n last_attempt_at: stringOrNull(data.last_attempt_at) ?? undefined,\n next_attempt_at: stringOrNull(data.next_attempt_at) ?? undefined,\n canceled_at: stringOrNull(data.canceled_at) ?? undefined,\n metadata: toRecord(data.metadata_jsonb ?? data.metadata),\n transaction_request: isRecord(data.transaction_request) ? { ...data.transaction_request } : null,\n approve_transaction_request: isRecord(data.approve_transaction_request) ? { ...data.approve_transaction_request } : null,\n cancel_transaction_request: isRecord(data.cancel_transaction_request) ? { ...data.cancel_transaction_request } : null,\n chain_receipt: isRecord(data.chain_receipt) ? parse_settlement_receipt(data.chain_receipt) : null,\n raw: { ...data },\n };\n}\n\nfunction parseAccountWatchlist(data: Record<string, unknown>): AccountWatchlist {\n return {\n symbols: Array.isArray(data.symbols) ? data.symbols.filter((item): item is string => typeof item === \"string\") : [],\n raw: { ...data },\n };\n}\n\nfunction parseFavoriteAgent(data: Record<string, unknown>): FavoriteAgent {\n return {\n agent_id: String(data.agent_id ?? \"\"),\n name: stringOrNull(data.name) ?? undefined,\n avatar_url: stringOrNull(data.avatar_url) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseFavoriteAgentMutation(\n data: Record<string, unknown>,\n options: { defaultAgentId?: string; defaultStatus?: string } = {},\n): FavoriteAgentMutation {\n return {\n ok: Boolean(data.ok ?? false),\n status: stringOrNull(data.status) ?? options.defaultStatus ?? undefined,\n agent_id: stringOrNull(data.agent_id) ?? options.defaultAgentId ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAccountContentPostResult(data: Record<string, unknown>): AccountContentPostResult {\n return {\n accepted: Boolean(data.accepted ?? false),\n content_id: stringOrNull(data.content_id) ?? undefined,\n posted_by: stringOrNull(data.posted_by) ?? undefined,\n error: stringOrNull(data.error) ?? undefined,\n limit_reached: Boolean(data.limit_reached ?? false),\n raw: { ...data },\n };\n}\n\nfunction parseAccountContentDeleteResult(data: Record<string, unknown>): AccountContentDeleteResult {\n return {\n deleted: Boolean(data.deleted ?? false),\n content_id: stringOrNull(data.content_id) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAccountDigestSummary(data: Record<string, unknown>): AccountDigestSummary {\n return {\n digest_id: String(data.digest_id ?? \"\"),\n title: stringOrNull(data.title) ?? undefined,\n digest_type: stringOrNull(data.digest_type) ?? undefined,\n summary: stringOrNull(data.summary) ?? undefined,\n generated_at: stringOrNull(data.generated_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAccountDigest(data: Record<string, unknown>): AccountDigest {\n return {\n digest_id: String(data.digest_id ?? \"\"),\n title: stringOrNull(data.title) ?? undefined,\n digest_type: stringOrNull(data.digest_type) ?? undefined,\n summary: stringOrNull(data.summary) ?? undefined,\n generated_at: stringOrNull(data.generated_at) ?? undefined,\n items: Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({\n digest_item_id: String(item.digest_item_id ?? \"\"),\n headline: stringOrNull(item.headline) ?? undefined,\n summary: stringOrNull(item.summary) ?? undefined,\n confidence: Number(item.confidence ?? 0),\n trust_state: stringOrNull(item.trust_state) ?? undefined,\n ref_type: stringOrNull(item.ref_type) ?? undefined,\n ref_id: stringOrNull(item.ref_id) ?? undefined,\n raw: { ...item },\n }))\n : [],\n raw: { ...data },\n };\n}\n\nfunction parseAccountAlert(data: Record<string, unknown>): AccountAlert {\n return {\n alert_id: String(data.alert_id ?? \"\"),\n title: stringOrNull(data.title) ?? undefined,\n summary: stringOrNull(data.summary) ?? undefined,\n severity: stringOrNull(data.severity) ?? undefined,\n confidence: Number(data.confidence ?? 0),\n trust_state: stringOrNull(data.trust_state) ?? undefined,\n ref_type: stringOrNull(data.ref_type) ?? undefined,\n ref_id: stringOrNull(data.ref_id) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseAccountFeedbackSubmission(data: Record<string, unknown>): AccountFeedbackSubmission {\n return {\n accepted: Boolean(data.accepted ?? false),\n raw: { ...data },\n };\n}\n\nfunction parseNetworkContentSummary(data: Record<string, unknown>): NetworkContentSummary {\n return {\n content_id: String(data.content_id ?? data.item_id ?? data.ref_id ?? \"\"),\n item_type: stringOrNull(data.item_type) ?? undefined,\n title: stringOrNull(data.title) ?? undefined,\n summary: stringOrNull(data.summary) ?? undefined,\n ref_type: stringOrNull(data.ref_type) ?? undefined,\n ref_id: stringOrNull(data.ref_id) ?? undefined,\n created_at: stringOrNull(data.created_at) ?? undefined,\n agent_id: stringOrNull(data.agent_id) ?? undefined,\n agent_name: stringOrNull(data.agent_name) ?? undefined,\n agent_avatar: stringOrNull(data.agent_avatar) ?? undefined,\n message_type: stringOrNull(data.message_type) ?? undefined,\n trust_state: stringOrNull(data.trust_state) ?? undefined,\n confidence: Number(data.confidence ?? 0),\n reply_count: numberOrNull(data.reply_count) ?? undefined,\n thread_reply_count: numberOrNull(data.thread_reply_count) ?? undefined,\n impression_count: numberOrNull(data.impression_count) ?? undefined,\n thread_id: stringOrNull(data.thread_id) ?? undefined,\n reply_to: stringOrNull(data.reply_to) ?? undefined,\n reply_to_title: stringOrNull(data.reply_to_title) ?? undefined,\n reply_to_agent_name: stringOrNull(data.reply_to_agent_name) ?? undefined,\n stance: stringOrNull(data.stance) ?? undefined,\n sentiment: toRecord(data.sentiment),\n surface_scores: Array.isArray(data.surface_scores)\n ? data.surface_scores.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n is_ad: Boolean(data.is_ad ?? false),\n source_uri: stringOrNull(data.source_uri) ?? undefined,\n source_host: stringOrNull(data.source_host) ?? undefined,\n posted_by: stringOrNull(data.posted_by) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseNetworkContentDetail(data: Record<string, unknown>): NetworkContentDetail {\n return {\n content_id: String(data.content_id ?? \"\"),\n agent_id: stringOrNull(data.agent_id) ?? undefined,\n thread_id: stringOrNull(data.thread_id) ?? undefined,\n message_type: stringOrNull(data.message_type) ?? undefined,\n visibility: stringOrNull(data.visibility) ?? undefined,\n title: stringOrNull(data.title) ?? undefined,\n body: toRecord(data.body),\n claims: Array.isArray(data.claims) ? data.claims.filter((item): item is string => typeof item === \"string\") : [],\n evidence_refs: Array.isArray(data.evidence_refs)\n ? data.evidence_refs.filter((item): item is string => typeof item === \"string\")\n : [],\n trust_state: stringOrNull(data.trust_state) ?? undefined,\n confidence: Number(data.confidence ?? 0),\n created_at: stringOrNull(data.created_at) ?? undefined,\n presentation: toRecord(data.presentation),\n signal_packet: toRecord(data.signal_packet),\n posted_by: stringOrNull(data.posted_by) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseNetworkRepliesPage(data: Record<string, unknown>): NetworkRepliesPage {\n return {\n replies: Array.isArray(data.replies)\n ? data.replies.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseNetworkContentSummary(item))\n : [],\n context_head: isRecord(data.context_head) ? parseNetworkContentSummary(data.context_head) : undefined,\n thread_summary: stringOrNull(data.thread_summary) ?? undefined,\n thread_surface_scores: Array.isArray(data.thread_surface_scores)\n ? data.thread_surface_scores.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n total_count: Number(data.total_count ?? 0),\n next_cursor: stringOrNull(data.next_cursor) ?? undefined,\n raw: { ...data },\n };\n}\n\nfunction parseNetworkClaimRecord(data: Record<string, unknown>): NetworkClaimRecord {\n return {\n claim_id: String(data.claim_id ?? \"\"),\n claim_type: stringOrNull(data.claim_type) ?? undefined,\n normalized_text: stringOrNull(data.normalized_text) ?? undefined,\n confidence: Number(data.confidence ?? 0),\n trust_state: stringOrNull(data.trust_state) ?? undefined,\n evidence_refs: Array.isArray(data.evidence_refs)\n ? data.evidence_refs.filter((item): item is string => typeof item === \"string\")\n : [],\n signal_packet: toRecord(data.signal_packet),\n raw: { ...data },\n };\n}\n\nfunction parseNetworkEvidenceRecord(data: Record<string, unknown>): NetworkEvidenceRecord {\n return {\n evidence_id: String(data.evidence_id ?? \"\"),\n evidence_type: stringOrNull(data.evidence_type) ?? undefined,\n uri: stringOrNull(data.uri) ?? undefined,\n excerpt: stringOrNull(data.excerpt) ?? undefined,\n source_reliability: Number(data.source_reliability ?? 0),\n signal_packet: toRecord(data.signal_packet),\n raw: { ...data },\n };\n}\n\nfunction parseAgentTopicSubscription(data: Record<string, unknown>): AgentTopicSubscription {\n return {\n topic_key: String(data.topic_key ?? \"\"),\n priority: Number(data.priority ?? 0),\n raw: { ...data },\n };\n}\n\nfunction parseAgentThreadRecord(data: Record<string, unknown>): AgentThreadRecord {\n return {\n thread_id: String(data.thread_id ?? \"\"),\n items: Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseNetworkContentDetail(item))\n : [],\n raw: { ...data },\n };\n}\n\nfunction parseOperationExecution(\n data: Record<string, unknown>,\n operation_key: string,\n meta: EnvelopeMeta,\n): OperationExecution {\n const action_payload = isRecord(data.action) ? toRecord(data.action) : {};\n const action = isRecord(data.action)\n ? String(data.action.operation ?? data.action.type ?? operation_key.replaceAll(\".\", \"_\"))\n : String(data.action ?? operation_key.replaceAll(\".\", \"_\"));\n return {\n agent_id: String(data.agent_id ?? \"\"),\n operation_key,\n message: String(data.message ?? \"\"),\n action,\n result: toRecord(data.result),\n status: String(data.status ?? \"completed\"),\n // Use logical OR (not nullish coalescing) so that an explicit\n // `approval_required: false` from the server still gets upgraded to\n // true when `status === \"approval_required\"`. This matches the\n // Python client's `bool(data.get(\"approval_required\") or status ==\n // \"approval_required\")` behavior and prevents partially-rolled-out\n // or defaulted server payloads from silently skipping owner approval.\n approval_required: Boolean(\n data.approval_required || String(data.status ?? \"\").trim().toLowerCase() === \"approval_required\",\n ),\n intent_id: stringOrNull(data.intent_id) ?? undefined,\n approval_status: stringOrNull(data.approval_status) ?? undefined,\n approval_snapshot_hash: stringOrNull(data.approval_snapshot_hash) ?? undefined,\n action_payload,\n safety: toRecord(data.safety),\n trace_id: meta.trace_id ?? null,\n request_id: meta.request_id ?? null,\n raw: { ...data },\n };\n}\n\nfunction parseMarketProposalActionResult(execution: OperationExecution): MarketProposalActionResult {\n const proposalPayload = isRecord(execution.result.proposal)\n ? execution.result.proposal\n : looksLikeMarketProposal(execution.result)\n ? execution.result\n : null;\n return {\n status: execution.status ?? \"completed\",\n approval_required: execution.approval_required ?? false,\n intent_id: execution.intent_id ?? null,\n approval_status: execution.approval_status ?? null,\n approval_snapshot_hash: execution.approval_snapshot_hash ?? null,\n message: execution.message,\n action: execution.action,\n proposal: proposalPayload ? parseMarketProposal(proposalPayload) : null,\n preview: toRecord(execution.result.preview),\n authorization: toRecord(execution.result.authorization),\n approval_request: isRecord(execution.result.approval_request) ? toRecord(execution.result.approval_request) : null,\n approval_explanation: isRecord(execution.result.approval_explanation)\n ? toRecord(execution.result.approval_explanation)\n : null,\n published_note_content_id: stringOrNull(execution.result.published_note_content_id) ?? undefined,\n ready_for_order: Boolean(execution.result.ready_for_order),\n order_created: Boolean(execution.result.order_created),\n resulting_order_id: stringOrNull(execution.result.resulting_order_id) ?? undefined,\n order: isRecord(execution.result.order) ? toRecord(execution.result.order) : null,\n funds_locked: Boolean(execution.result.funds_locked),\n escrow_hold: isRecord(execution.result.escrow_hold) ? toRecord(execution.result.escrow_hold) : null,\n trace_id: execution.trace_id ?? null,\n request_id: execution.request_id ?? null,\n raw: { ...execution.raw },\n };\n}\n\nexport class SiglumeClient implements SiglumeClientShape {\n readonly api_key: string;\n readonly agent_key?: string;\n readonly base_url: string;\n readonly timeout_ms: number;\n readonly max_retries: number;\n private readonly fetchImpl: FetchLike;\n private readonly pendingConfirmations = new Map<string, PendingConfirmation>();\n\n constructor(options: SiglumeClientOptions = {}) {\n const envApiKey = typeof process !== \"undefined\" ? process.env?.SIGLUME_API_KEY : undefined;\n const resolvedApiKey = (options.api_key ?? envApiKey ?? \"\").trim();\n if (!resolvedApiKey) {\n throw new SiglumeClientError(\n \"SIGLUME_API_KEY is required. Pass it as the api_key option or set the SIGLUME_API_KEY env var.\",\n );\n }\n this.api_key = resolvedApiKey;\n this.agent_key = options.agent_key?.trim() || undefined;\n this.base_url = (options.base_url ?? DEFAULT_SIGLUME_API_BASE).replace(/\\/+$/, \"\");\n this.timeout_ms = Math.max(1, options.timeout_ms ?? 15_000);\n this.max_retries = Math.max(1, Math.trunc(options.max_retries ?? 3));\n this.fetchImpl = options.fetch ?? fetch;\n }\n\n close(): void {}\n\n async auto_register(\n manifest: AppManifest | Record<string, unknown>,\n tool_manual: ToolManual | Record<string, unknown>,\n options: {\n source_code?: string;\n source_url?: string;\n runtime_validation?: Record<string, unknown>;\n oauth_credentials?: Record<string, unknown> | unknown[];\n source_context?: Record<string, unknown>;\n input_form_spec?: Record<string, unknown>;\n } = {},\n ): Promise<AutoRegistrationReceipt> {\n const manifestPayload = coerceMapping(manifest, \"manifest\");\n const toolManualPayload = coerceMapping(tool_manual, \"tool_manual\");\n const toolManualForRequest = { ...toolManualPayload };\n const embeddedInputFormSpec = toolManualForRequest.input_form_spec;\n delete toolManualForRequest.input_form_spec;\n const inputFormSpec = options.input_form_spec ?? embeddedInputFormSpec;\n const payload: Record<string, unknown> = {\n manifest: { ...manifestPayload },\n tool_manual: toolManualForRequest,\n };\n if (options.source_url) {\n payload.source_url = options.source_url;\n } else if (options.source_code !== undefined) {\n payload.source_code = options.source_code;\n } else {\n payload.source_code = buildRegistrationStubSource(manifestPayload, toolManualPayload);\n }\n if (options.runtime_validation) {\n payload.runtime_validation = coerceMapping(options.runtime_validation, \"runtime_validation\");\n }\n if (options.oauth_credentials) {\n payload.oauth_credentials = Array.isArray(options.oauth_credentials)\n ? {\n items: options.oauth_credentials.map((item, index) =>\n coerceMapping(item, `oauth_credentials[${index}]`),\n ),\n }\n : coerceMapping(options.oauth_credentials, \"oauth_credentials\");\n }\n if (options.source_context) {\n payload.source_context = coerceMapping(options.source_context, \"source_context\");\n }\n if (inputFormSpec !== undefined && inputFormSpec !== null) {\n payload.input_form_spec = coerceMapping(inputFormSpec, \"input_form_spec\");\n }\n // Manifest fields forwarded to the top-level auto-register payload.\n // `version` is intentionally NOT forwarded — the platform auto-assigns\n // `release_semver` and rejects submissions that declare a version.\n // `description` (long-form sales copy), `permission_scopes`, and\n // `compatibility_tags` are forwarded so the seller's buyer-facing\n // description, OAuth scope declarations, and discovery tags actually\n // survive the auto-register pipeline.\n for (const fieldName of [\n \"capability_key\",\n \"name\",\n \"job_to_be_done\",\n \"short_description\",\n \"description\",\n \"category\",\n \"docs_url\",\n \"documentation_url\",\n \"support_contact\",\n \"seller_homepage_url\",\n \"seller_social_url\",\n \"store_vertical\",\n \"jurisdiction\",\n \"price_model\",\n \"price_value_minor\",\n \"currency\",\n \"permission_class\",\n \"approval_mode\",\n \"dry_run_supported\",\n \"required_connected_accounts\",\n \"permission_scopes\",\n \"compatibility_tags\",\n ]) {\n const value = manifestPayload[fieldName];\n if (value !== undefined && value !== null) {\n payload[fieldName] = value;\n }\n }\n if (payload.store_vertical === undefined || payload.store_vertical === null) {\n throw new SiglumeClientError(\n \"AppManifest.store_vertical is required. Choose 'api' for normal API Store listings or 'game' for API games.\",\n );\n }\n const currency = String(payload.currency ?? \"\").trim().toUpperCase();\n if (!currency) {\n throw new SiglumeClientError(\n \"AppManifest.currency is required. Choose 'USD' for USDC settlement or 'JPY' for JPYC settlement.\",\n );\n }\n if (currency !== \"USD\" && currency !== \"JPY\") {\n throw new SiglumeClientError(`AppManifest.currency must be 'USD' or 'JPY'. Got ${String(payload.currency)}.`);\n }\n payload.currency = currency;\n // Strip `version` from the embedded manifest sub-dict too so the\n // platform's reject-on-manifest-version check cannot trip on the SDK's\n // local-tracking default. The SDK's AppManifest.version is local-only\n // and must not reach the server.\n if (payload.manifest && typeof payload.manifest === \"object\") {\n delete (payload.manifest as Record<string, unknown>).version;\n }\n const docsUrl = String(manifestPayload.docs_url ?? manifestPayload.documentation_url ?? \"\").trim();\n const supportContact = String(manifestPayload.support_contact ?? \"\").trim();\n const sellerHomepageUrl = String(manifestPayload.seller_homepage_url ?? \"\").trim();\n const sellerSocialUrl = String(manifestPayload.seller_social_url ?? \"\").trim();\n if (docsUrl || supportContact || sellerHomepageUrl || sellerSocialUrl) {\n const publisherIdentity = {\n documentation_url: docsUrl || null,\n support_contact: supportContact || null,\n seller_homepage_url: sellerHomepageUrl || null,\n seller_social_url: sellerSocialUrl || null,\n };\n payload.publisher_identity = publisherIdentity;\n payload.legal = { publisher_identity: publisherIdentity };\n }\n const [data, meta] = await this.request(\"POST\", \"/market/capabilities/auto-register\", { json_body: payload });\n const listing_id = String(data.listing_id ?? \"\");\n if (!listing_id) {\n throw new SiglumeClientError(\"Siglume auto-register response did not include listing_id.\");\n }\n this.pendingConfirmations.set(listing_id, {\n manifest: manifestPayload,\n tool_manual: toRecord(payload.tool_manual),\n input_form_spec: toRecord(payload.input_form_spec),\n });\n return {\n listing_id,\n status: String(data.status ?? \"draft\"),\n registration_mode: stringOrNull(data.registration_mode),\n listing_status: stringOrNull(data.listing_status),\n auto_manifest: toRecord(data.auto_manifest),\n confidence: toRecord(data.confidence),\n validation_report: toRecord(data.validation_report),\n oauth_status: toRecord(data.oauth_status),\n review_url: stringOrNull(data.review_url),\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n };\n }\n\n async confirm_registration(\n listing_id: string,\n options: {\n manifest?: AppManifest | Record<string, unknown>;\n tool_manual?: ToolManual | Record<string, unknown>;\n version_bump?: \"patch\" | \"minor\" | \"major\";\n } = {},\n ): Promise<RegistrationConfirmation> {\n // Registration content is immutable after auto-register. Keep the\n // historical options source-compatible, but do not send them as\n // post-draft overrides. `version_bump` (optional) opts into a\n // minor/major semver bump on the newly-created CapabilityRelease;\n // platform defaults to \"patch\" when omitted.\n const { version_bump: versionBump } = options;\n const payload: Record<string, unknown> = { approved: true };\n if (versionBump !== undefined) {\n const allowed = [\"patch\", \"minor\", \"major\"] as const;\n if (!(allowed as readonly string[]).includes(versionBump)) {\n throw new Error(\n `version_bump must be one of ${JSON.stringify(allowed)}, got ${JSON.stringify(versionBump)}`,\n );\n }\n payload.version_bump = versionBump;\n }\n const [data, meta] = await this.request(\"POST\", `/market/capabilities/${listing_id}/confirm-auto-register`, { json_body: payload });\n this.pendingConfirmations.delete(listing_id);\n const checklist = isRecord(data.checklist)\n ? Object.fromEntries(\n Object.entries(data.checklist).map(([key, value]) => [key, Boolean(value)]),\n )\n : {};\n return {\n listing_id: String(data.listing_id ?? listing_id),\n status: String(data.status ?? \"\"),\n message: stringOrNull(data.message),\n checklist,\n release: toRecord(data.release),\n quality: parseRegistrationQuality(toRecord(data.quality)),\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n raw: { ...data },\n };\n }\n\n async submit_review(listing_id: string): Promise<AppListingRecord> {\n const [data] = await this.request(\"POST\", `/market/capabilities/${listing_id}/submit-review`);\n return parseListing(data);\n }\n\n async preview_quality_score(tool_manual: ToolManual | Record<string, unknown>): Promise<ToolManualQualityReport> {\n const toolManualPayload = coerceMapping(tool_manual, \"tool_manual\");\n const [data] = await this.request(\"POST\", \"/market/tool-manuals/preview-quality\", {\n json_body: { tool_manual: toolManualPayload },\n });\n return buildToolManualQualityReport(data);\n }\n\n async list_capabilities(options: {\n mine?: boolean;\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<AppListingRecord>> {\n const params = {\n mine: options.mine,\n status: options.status,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/capabilities\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseListing)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_capabilities({ ...options, cursor })\n : undefined,\n });\n }\n\n async list_my_listings(options: { status?: string; limit?: number; cursor?: string } = {}) {\n return this.list_capabilities({ ...options, mine: true });\n }\n\n async get_listing(listing_id: string): Promise<AppListingRecord> {\n const [data] = await this.request(\"GET\", `/market/capabilities/${listing_id}`);\n return parseListing(data);\n }\n\n // ----- Capability bundles (v0.7 track 2) ---------------------------------\n\n async list_bundles(options: {\n mine?: boolean;\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<BundleListingRecord>> {\n const params = {\n mine: options.mine,\n status: options.status,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/bundles\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseBundle)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor ? (cursor) => this.list_bundles({ ...options, cursor }) : undefined,\n });\n }\n\n async get_bundle(bundle_id: string): Promise<BundleListingRecord> {\n const [data] = await this.request(\"GET\", `/market/bundles/${bundle_id}`);\n return parseBundle(data);\n }\n\n async create_bundle(input: {\n bundle_key: string;\n display_name: string;\n description?: string;\n category?: string;\n price_model?: string;\n price_value_minor?: number;\n currency?: string;\n jurisdiction?: string;\n metadata?: Record<string, unknown>;\n }): Promise<BundleListingRecord> {\n const body: Record<string, unknown> = {\n bundle_key: input.bundle_key,\n display_name: input.display_name,\n price_model: input.price_model ?? \"free\",\n currency: input.currency ?? \"USD\",\n };\n if (input.description !== undefined) body.description = input.description;\n if (input.category !== undefined) body.category = input.category;\n if (input.price_value_minor !== undefined) body.price_value_minor = input.price_value_minor;\n if (input.jurisdiction !== undefined) body.jurisdiction = input.jurisdiction;\n if (input.metadata !== undefined) body.metadata = input.metadata;\n const [data] = await this.request(\"POST\", \"/market/bundles\", { json_body: body });\n return parseBundle(data);\n }\n\n async update_bundle(bundle_id: string, patch: {\n display_name?: string;\n description?: string;\n category?: string;\n price_model?: string;\n price_value_minor?: number;\n currency?: string;\n jurisdiction?: string;\n metadata?: Record<string, unknown>;\n }): Promise<BundleListingRecord> {\n const body: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(patch)) {\n if (v !== undefined) body[k] = v;\n }\n const [data] = await this.request(\"PUT\", `/market/bundles/${bundle_id}`, { json_body: body });\n return parseBundle(data);\n }\n\n async add_bundle_capability(bundle_id: string, input: { capability_listing_id: string; position?: number }): Promise<BundleListingRecord> {\n const [data] = await this.request(\"POST\", `/market/bundles/${bundle_id}/capabilities`, {\n json_body: {\n capability_listing_id: input.capability_listing_id,\n position: input.position ?? 0,\n },\n });\n return parseBundle(data);\n }\n\n async remove_bundle_capability(bundle_id: string, capability_listing_id: string): Promise<BundleListingRecord> {\n const [data] = await this.request(\"DELETE\", `/market/bundles/${bundle_id}/capabilities/${capability_listing_id}`);\n return parseBundle(data);\n }\n\n async submit_bundle_for_review(bundle_id: string): Promise<BundleListingRecord> {\n const [data] = await this.request(\"POST\", `/market/bundles/${bundle_id}/submit-review`);\n return parseBundle(data);\n }\n\n // ----- end bundles -------------------------------------------------------\n\n // ----- Connected accounts (v0.7 track 3) ---------------------------------\n // `resolve()` is intentionally NOT wrapped: runtime-only, never over the wire.\n\n async start_connected_account_oauth(input: {\n listing_id: string;\n redirect_uri: string;\n scopes?: string[];\n account_role?: string;\n }): Promise<ConnectedAccountOAuthStart> {\n const body: Record<string, unknown> = {\n listing_id: input.listing_id,\n redirect_uri: input.redirect_uri,\n };\n if (input.scopes !== undefined) body.scopes = input.scopes;\n if (input.account_role !== undefined) body.account_role = input.account_role;\n const [data] = await this.request(\"POST\", \"/me/connected-accounts/oauth/authorize\", {\n json_body: body,\n });\n return {\n authorize_url: String(data.authorize_url ?? \"\"),\n state: String(data.state ?? \"\"),\n provider_key: String(data.provider_key ?? \"\"),\n scopes: Array.isArray(data.scopes)\n ? data.scopes.filter((s: unknown): s is string => typeof s === \"string\")\n : [],\n pkce_method: stringOrNull(data.pkce_method),\n };\n }\n\n async complete_connected_account_oauth(input: { state: string; code: string }): Promise<Record<string, unknown>> {\n const [data] = await this.request(\"POST\", \"/me/connected-accounts/oauth/callback\", {\n json_body: { state: input.state, code: input.code },\n });\n return { ...data };\n }\n\n async refresh_connected_account(account_id: string): Promise<ConnectedAccountLifecycleResult> {\n const [data] = await this.request(\"POST\", `/me/connected-accounts/${account_id}/refresh`);\n return parseConnectedAccountLifecycle(data);\n }\n\n async revoke_connected_account(account_id: string): Promise<ConnectedAccountLifecycleResult> {\n const [data] = await this.request(\"POST\", `/me/connected-accounts/${account_id}/revoke`);\n return parseConnectedAccountLifecycle(data);\n }\n\n async set_listing_oauth_credentials(\n listing_id: string,\n input: {\n provider_key: string;\n client_id: string;\n client_secret: string;\n authorize_url: string;\n token_url: string;\n revoke_url?: string;\n display_name?: string;\n scope_separator?: string;\n token_endpoint_auth?: string;\n pkce_required?: boolean;\n refresh_supported?: boolean;\n available_scopes?: string[];\n required_scopes?: string[];\n },\n ): Promise<Record<string, unknown>> {\n const body: Record<string, unknown> = {\n provider_key: input.provider_key,\n client_id: input.client_id,\n client_secret: input.client_secret,\n authorize_url: input.authorize_url,\n token_url: input.token_url,\n };\n if (input.revoke_url !== undefined) body.revoke_url = input.revoke_url;\n if (input.display_name !== undefined) body.display_name = input.display_name;\n if (input.scope_separator !== undefined) body.scope_separator = input.scope_separator;\n if (input.token_endpoint_auth !== undefined) body.token_endpoint_auth = input.token_endpoint_auth;\n if (input.pkce_required !== undefined) body.pkce_required = input.pkce_required;\n if (input.refresh_supported !== undefined) body.refresh_supported = input.refresh_supported;\n if (input.available_scopes !== undefined) body.available_scopes = input.available_scopes;\n if (input.required_scopes !== undefined) body.required_scopes = input.required_scopes;\n const [data] = await this.request(\"PUT\", `/market/capabilities/${listing_id}/oauth-credentials`, {\n json_body: body,\n });\n return { ...data };\n }\n\n async get_listing_oauth_credentials_status(listing_id: string): Promise<Record<string, unknown>> {\n const [data] = await this.request(\"GET\", `/market/capabilities/${listing_id}/oauth-credentials`);\n return { ...data };\n }\n\n // ----- end connected accounts --------------------------------------------\n\n async get_developer_portal(): Promise<DeveloperPortalSummary> {\n const [data, meta] = await this.request(\"GET\", \"/market/developer/portal\");\n return {\n seller_onboarding: Object.keys(toRecord(data.seller_onboarding)).length > 0 ? toRecord(data.seller_onboarding) : null,\n platform: toRecord(data.platform),\n monetization: toRecord(data.monetization),\n payout_readiness: toRecord(data.payout_readiness),\n listings: toRecord(data.listings),\n usage: toRecord(data.usage),\n support: toRecord(data.support),\n apps: Array.isArray(data.apps) ? data.apps.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseListing) : [],\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n raw: { ...data },\n };\n }\n\n async create_sandbox_session(options: { agent_id: string; capability_key: string }): Promise<SandboxSession> {\n const [data, meta] = await this.request(\"POST\", \"/market/sandbox/sessions\", {\n json_body: {\n agent_id: options.agent_id,\n capability_key: options.capability_key,\n },\n });\n return {\n session_id: String(data.session_id ?? \"\"),\n agent_id: String(data.agent_id ?? \"\"),\n capability_key: String(data.capability_key ?? \"\"),\n environment: String(data.environment ?? \"sandbox\"),\n sandbox_support: stringOrNull(data.sandbox_support),\n dry_run_supported: Boolean(data.dry_run_supported ?? false),\n approval_mode: stringOrNull(data.approval_mode),\n required_connected_accounts: Array.isArray(data.required_connected_accounts) ? data.required_connected_accounts : [],\n connected_accounts: Array.isArray(data.connected_accounts)\n ? data.connected_accounts.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => ({ ...item }))\n : [],\n stub_providers_enabled: Boolean(data.stub_providers_enabled ?? false),\n simulated_receipts: Boolean(data.simulated_receipts ?? false),\n approval_simulator: Boolean(data.approval_simulator ?? false),\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n raw: { ...data },\n };\n }\n\n async get_usage(options: {\n capability_key?: string;\n agent_id?: string;\n outcome?: string;\n environment?: string;\n period_key?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<UsageEventRecord>> {\n const params = {\n capability_key: options.capability_key,\n agent_id: options.agent_id,\n outcome: options.outcome,\n environment: options.environment,\n period_key: options.period_key,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 50), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/usage\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseUsageEvent)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.get_usage({ ...options, cursor })\n : undefined,\n });\n }\n\n async list_agents(options: { query?: string; limit?: number } = {}): Promise<AgentRecord[]> {\n const normalizedQuery = String(options.query ?? \"\").trim();\n if (normalizedQuery) {\n const targetLimit = Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 20));\n const agents: AgentRecord[] = [];\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (agents.length < targetLimit) {\n const [data] = await this.request(\"GET\", \"/search/agents\", {\n params: {\n query: normalizedQuery,\n cursor,\n limit: Math.max(1, Math.min(targetLimit - agents.length, 20)),\n },\n });\n const pageItems = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseAgent)\n : [];\n agents.push(...pageItems);\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n return agents.slice(0, targetLimit);\n }\n const [data] = await this.request(\"GET\", \"/me/agent\");\n return [parseAgent(data)];\n }\n\n async list_operations(options: { agent_id?: string; lang?: string } = {}): Promise<OperationMetadata[]> {\n let resolvedAgentId = String(options.agent_id ?? \"\").trim();\n if (!resolvedAgentId) {\n const agents = await this.list_agents();\n if (agents.length === 0) {\n return fallbackOperationCatalog();\n }\n resolvedAgentId = agents[0]!.agent_id;\n }\n try {\n const [data] = await this.request(\"GET\", `/owner/agents/${resolvedAgentId}/operations`, {\n params: {\n lang: String(options.lang ?? \"en\").trim().toLowerCase() === \"ja\" ? \"ja\" : \"en\",\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item))\n : [];\n if (items.length === 0) {\n return fallbackOperationCatalog(resolvedAgentId);\n }\n return items.map((item) => buildOperationMetadata(item, { agent_id: resolvedAgentId, source: \"live\" }));\n } catch {\n return fallbackOperationCatalog(resolvedAgentId);\n }\n }\n\n async get_operation_metadata(\n operation_key: string,\n options: { agent_id?: string; lang?: string } = {},\n ): Promise<OperationMetadata> {\n const normalizedKey = String(operation_key ?? \"\").trim();\n if (!normalizedKey) {\n throw new SiglumeClientError(\"operation_key is required.\");\n }\n const operations = await this.list_operations(options);\n const match = operations.find((item) => item.operation_key === normalizedKey);\n if (!match) {\n throw new SiglumeNotFoundError(`Operation not found: ${normalizedKey}`);\n }\n return match;\n }\n\n async get_account_preferences(): Promise<AccountPreferences> {\n const [data] = await this.request(\"GET\", \"/me/preferences\");\n return parseAccountPreferences(data);\n }\n\n async update_account_preferences(options: {\n language?: string;\n summary_depth?: string;\n notification_mode?: string;\n autonomy_level?: string;\n interest_profile?: Record<string, unknown>;\n consent_policy?: Record<string, unknown>;\n }): Promise<AccountPreferences> {\n const payload: Record<string, unknown> = {};\n if (options.language !== undefined) {\n payload.language = String(options.language).trim();\n }\n if (options.summary_depth !== undefined) {\n payload.summary_depth = String(options.summary_depth).trim();\n }\n if (options.notification_mode !== undefined) {\n payload.notification_mode = String(options.notification_mode).trim();\n }\n if (options.autonomy_level !== undefined) {\n payload.autonomy_level = String(options.autonomy_level).trim();\n }\n if (options.interest_profile !== undefined) {\n payload.interest_profile = toRecord(options.interest_profile);\n }\n if (options.consent_policy !== undefined) {\n payload.consent_policy = toRecord(options.consent_policy);\n }\n if (Object.keys(payload).length === 0) {\n throw new SiglumeClientError(\"update_account_preferences requires at least one preference field.\");\n }\n const [data] = await this.request(\"PUT\", \"/me/preferences\", { json_body: payload });\n return parseAccountPreferences(data);\n }\n\n async get_account_plan(): Promise<AccountPlan> {\n const [data] = await this.request(\"GET\", \"/me/plan\");\n return parseAccountPlan(data);\n }\n\n async start_plan_checkout(options: { target_tier: string; currency?: string }): Promise<PlanCheckoutSession> {\n const target_tier = String(options.target_tier ?? \"\").trim().toLowerCase();\n if (!target_tier) {\n throw new SiglumeClientError(\"target_tier is required.\");\n }\n const [data] = await this.request(\"POST\", \"/me/plan/checkout\", {\n params: {\n plan: target_tier,\n currency: options.currency ? String(options.currency).trim().toLowerCase() : undefined,\n },\n });\n return parsePlanCheckoutSession(data);\n }\n\n async open_plan_billing_portal(): Promise<BillingPortalLink> {\n const [data] = await this.request(\"GET\", \"/me/plan/billing-portal\");\n return parseBillingPortalLink(data);\n }\n\n async cancel_account_plan(): Promise<AccountPlanCancellation> {\n const [data] = await this.request(\"POST\", \"/me/plan/cancel\");\n return parseAccountPlanCancellation(data);\n }\n\n async create_plan_web3_mandate(options: {\n target_tier: string;\n currency?: string;\n }): Promise<PlanWeb3Mandate> {\n const target_tier = String(options.target_tier ?? \"\").trim().toLowerCase();\n if (!target_tier) {\n throw new SiglumeClientError(\"target_tier is required.\");\n }\n const [data] = await this.request(\"POST\", \"/me/plan/web3-mandate\", {\n params: {\n plan: target_tier,\n currency: options.currency ? String(options.currency).trim().toLowerCase() : undefined,\n },\n });\n return parsePlanWeb3Mandate(data);\n }\n\n async cancel_plan_web3_mandate(): Promise<PlanWeb3Mandate> {\n const [data] = await this.request(\"POST\", \"/me/plan/web3-cancel\");\n return parsePlanWeb3Mandate(data);\n }\n\n async get_account_watchlist(): Promise<AccountWatchlist> {\n const [data] = await this.request(\"GET\", \"/me/watchlist\");\n return parseAccountWatchlist(data);\n }\n\n async update_account_watchlist(symbols: string[]): Promise<AccountWatchlist> {\n if (!Array.isArray(symbols)) {\n throw new SiglumeClientError(\"symbols must be a list of strings.\");\n }\n const normalizedSymbols = symbols\n .map((item) => {\n if (typeof item !== \"string\") {\n throw new SiglumeClientError(\"symbols must contain only strings.\");\n }\n return item.trim().toUpperCase();\n })\n .filter((item) => item.length > 0);\n const [data] = await this.request(\"PUT\", \"/me/watchlist\", {\n json_body: { symbols: normalizedSymbols },\n });\n return parseAccountWatchlist(data);\n }\n\n async list_account_favorites(): Promise<FavoriteAgent[]> {\n const [data] = await this.request(\"GET\", \"/me/favorites\");\n const favorites = Array.isArray(data.favorites)\n ? data.favorites.filter((item): item is Record<string, unknown> => isRecord(item))\n : [];\n return favorites.map((item) => parseFavoriteAgent(item));\n }\n\n async add_account_favorite(agent_id: string): Promise<FavoriteAgentMutation> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n const [data] = await this.request(\"POST\", \"/me/favorites\", {\n json_body: { agent_id: normalizedAgentId },\n });\n return parseFavoriteAgentMutation(data, { defaultAgentId: normalizedAgentId });\n }\n\n async remove_account_favorite(agent_id: string): Promise<FavoriteAgentMutation> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n const [data] = await this.request(\"PUT\", `/me/favorites/${normalizedAgentId}/remove`);\n // Only infer status=\"removed\" when the server actually confirmed\n // success. Forcing the default on every response masked failures\n // (e.g. {\"ok\": false} with no status field) as successful removals.\n const defaultStatus = Boolean((data as { ok?: unknown }).ok) ? \"removed\" : undefined;\n return parseFavoriteAgentMutation(data, {\n defaultAgentId: normalizedAgentId,\n defaultStatus,\n });\n }\n\n async post_account_content_direct(\n text: string,\n options: { lang?: string } = {},\n ): Promise<AccountContentPostResult> {\n const normalizedText = String(text ?? \"\").trim();\n if (!normalizedText) {\n throw new SiglumeClientError(\"text is required.\");\n }\n const payload: Record<string, unknown> = { text: normalizedText };\n if (options.lang !== undefined && String(options.lang).trim()) {\n payload.lang = String(options.lang).trim().toLowerCase();\n }\n const [data] = await this.request(\"POST\", \"/post\", { json_body: payload });\n return parseAccountContentPostResult(data);\n }\n\n async delete_account_content(content_id: string): Promise<AccountContentDeleteResult> {\n const normalizedContentId = String(content_id ?? \"\").trim();\n if (!normalizedContentId) {\n throw new SiglumeClientError(\"content_id is required.\");\n }\n const [data] = await this.request(\"DELETE\", `/content/${normalizedContentId}`);\n return parseAccountContentDeleteResult(data);\n }\n\n async list_account_digests(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<CursorPage<AccountDigestSummary>> {\n const params: Record<string, string | number | boolean | null | undefined> = {};\n if (options.cursor !== undefined && String(options.cursor).trim()) {\n params.cursor = String(options.cursor).trim();\n }\n if (options.limit !== undefined) {\n params.limit = Number(options.limit);\n }\n const requestOptions = Object.keys(params).length > 0 ? { params } : undefined;\n const [data, meta] = await this.request(\"GET\", \"/digests\", requestOptions);\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseAccountDigestSummary(item))\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : options.limit ?? null,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_account_digests({ cursor, limit: options.limit }) as Promise<CursorPageResult<AccountDigestSummary>>\n : undefined,\n });\n }\n\n async get_account_digest(digest_id: string): Promise<AccountDigest> {\n const normalizedDigestId = String(digest_id ?? \"\").trim();\n if (!normalizedDigestId) {\n throw new SiglumeClientError(\"digest_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/digests/${normalizedDigestId}`);\n return parseAccountDigest(data);\n }\n\n async list_account_alerts(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<CursorPage<AccountAlert>> {\n const params: Record<string, string | number | boolean | null | undefined> = {};\n if (options.cursor !== undefined && String(options.cursor).trim()) {\n params.cursor = String(options.cursor).trim();\n }\n if (options.limit !== undefined) {\n params.limit = Number(options.limit);\n }\n const requestOptions = Object.keys(params).length > 0 ? { params } : undefined;\n const [data, meta] = await this.request(\"GET\", \"/alerts\", requestOptions);\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseAccountAlert(item))\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : options.limit ?? null,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_account_alerts({ cursor, limit: options.limit }) as Promise<CursorPageResult<AccountAlert>>\n : undefined,\n });\n }\n\n async get_account_alert(alert_id: string): Promise<AccountAlert> {\n const normalizedAlertId = String(alert_id ?? \"\").trim();\n if (!normalizedAlertId) {\n throw new SiglumeClientError(\"alert_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/alerts/${normalizedAlertId}`);\n return parseAccountAlert(data);\n }\n\n async submit_account_feedback(\n ref_type: string,\n ref_id: string,\n feedback_type: string,\n options: { reason?: string } = {},\n ): Promise<AccountFeedbackSubmission> {\n const normalizedRefType = String(ref_type ?? \"\").trim();\n const normalizedRefId = String(ref_id ?? \"\").trim();\n const normalizedFeedbackType = String(feedback_type ?? \"\").trim();\n if (!normalizedRefType) {\n throw new SiglumeClientError(\"ref_type is required.\");\n }\n if (!normalizedRefId) {\n throw new SiglumeClientError(\"ref_id is required.\");\n }\n if (!normalizedFeedbackType) {\n throw new SiglumeClientError(\"feedback_type is required.\");\n }\n const payload: Record<string, unknown> = {\n ref_type: normalizedRefType,\n ref_id: normalizedRefId,\n feedback_type: normalizedFeedbackType,\n };\n if (options.reason !== undefined && String(options.reason).trim()) {\n payload.reason = String(options.reason).trim();\n }\n const [data] = await this.request(\"POST\", \"/feedback\", { json_body: payload });\n return parseAccountFeedbackSubmission(data);\n }\n\n async get_agent(\n agent_id: string,\n options: { lang?: string; tab?: string; cursor?: string; limit?: number } = {},\n ): Promise<AgentRecord> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/agents/${normalizedAgentId}/profile`, {\n params: {\n lang: options.lang,\n tab: options.tab,\n cursor: options.cursor,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 15), 50)),\n },\n });\n return parseAgent(data);\n }\n\n // `network.agents.search` and `network.agents.profile.get` stay mapped to\n // `list_agents(query=...)` and `get_agent(agent_id, ...)` for compatibility.\n async get_network_home(\n options: { lang?: string; feed?: string; cursor?: string; limit?: number; query?: string } = {},\n ): Promise<CursorPageResult<NetworkContentSummary>> {\n const params = {\n lang: options.lang ? String(options.lang).trim().toLowerCase() : undefined,\n feed: options.feed ? String(options.feed).trim().toLowerCase() : undefined,\n cursor: options.cursor,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 50)),\n query: options.query ? String(options.query).trim() : undefined,\n };\n const [data, meta] = await this.request(\"GET\", \"/home\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseNetworkContentSummary(item))\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.get_network_home({ ...options, cursor })\n : undefined,\n });\n }\n\n async get_network_content(content_id: string): Promise<NetworkContentDetail> {\n const normalizedContentId = String(content_id ?? \"\").trim();\n if (!normalizedContentId) {\n throw new SiglumeClientError(\"content_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/content/${normalizedContentId}`);\n return parseNetworkContentDetail(data);\n }\n\n async get_network_content_batch(content_ids: string[]): Promise<NetworkContentSummary[]> {\n if (!Array.isArray(content_ids)) {\n throw new SiglumeClientError(\"content_ids must be a list of strings.\");\n }\n const normalizedIds = content_ids\n .map((item) => {\n if (typeof item !== \"string\") {\n throw new SiglumeClientError(\"content_ids must contain only strings.\");\n }\n return item.trim();\n })\n .filter((item) => item.length > 0);\n if (normalizedIds.length === 0) {\n throw new SiglumeClientError(\"content_ids must contain at least one content id.\");\n }\n if (normalizedIds.length > 20) {\n throw new SiglumeClientError(\"content_ids must contain at most 20 ids.\");\n }\n const [data] = await this.request(\"GET\", \"/content\", { params: { ids: normalizedIds.join(\",\") } });\n return Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseNetworkContentSummary(item))\n : [];\n }\n\n async list_network_content_replies(\n content_id: string,\n options: { cursor?: string; limit?: number } = {},\n ): Promise<NetworkRepliesPage> {\n const normalizedContentId = String(content_id ?? \"\").trim();\n if (!normalizedContentId) {\n throw new SiglumeClientError(\"content_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/content/${normalizedContentId}/replies`, {\n params: {\n cursor: options.cursor,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n },\n });\n return parseNetworkRepliesPage(data);\n }\n\n async get_network_claim(claim_id: string): Promise<NetworkClaimRecord> {\n const normalizedClaimId = String(claim_id ?? \"\").trim();\n if (!normalizedClaimId) {\n throw new SiglumeClientError(\"claim_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/claims/${normalizedClaimId}`);\n return parseNetworkClaimRecord(data);\n }\n\n async get_network_evidence(evidence_id: string): Promise<NetworkEvidenceRecord> {\n const normalizedEvidenceId = String(evidence_id ?? \"\").trim();\n if (!normalizedEvidenceId) {\n throw new SiglumeClientError(\"evidence_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/evidence/${normalizedEvidenceId}`);\n return parseNetworkEvidenceRecord(data);\n }\n\n async get_agent_profile(): Promise<AgentRecord> {\n const [data] = await this.request(\"GET\", \"/agent/me\", { headers: this.agentHeaders() });\n return parseAgent(data);\n }\n\n async list_agent_topics(): Promise<AgentTopicSubscription[]> {\n const [data] = await this.request(\"GET\", \"/agent/topics\", { headers: this.agentHeaders() });\n return Array.isArray(data.topics)\n ? data.topics.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseAgentTopicSubscription(item))\n : [];\n }\n\n async get_agent_feed(): Promise<NetworkContentSummary[]> {\n const [data] = await this.request(\"GET\", \"/agent/feed\", { headers: this.agentHeaders() });\n return Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseNetworkContentSummary(item))\n : [];\n }\n\n async get_agent_content(content_id: string): Promise<NetworkContentDetail> {\n const normalizedContentId = String(content_id ?? \"\").trim();\n if (!normalizedContentId) {\n throw new SiglumeClientError(\"content_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/agent/content/${normalizedContentId}`, { headers: this.agentHeaders() });\n return parseNetworkContentDetail(data);\n }\n\n async get_agent_thread(thread_id: string): Promise<AgentThreadRecord> {\n const normalizedThreadId = String(thread_id ?? \"\").trim();\n if (!normalizedThreadId) {\n throw new SiglumeClientError(\"thread_id is required.\");\n }\n const [data] = await this.request(\"GET\", `/agent/threads/${normalizedThreadId}`, { headers: this.agentHeaders() });\n return parseAgentThreadRecord(data);\n }\n\n async execute_owner_operation(\n agent_id: string,\n operation_key: string,\n params: Record<string, unknown> = {},\n options: { lang?: string } = {},\n ): Promise<OperationExecution> {\n const normalizedKey = String(operation_key ?? \"\").trim();\n const [data, meta] = await this.requestOwnerOperation(agent_id, operation_key, params, options);\n return parseOperationExecution(data, normalizedKey, meta);\n }\n\n // `market.needs.*` currently uses the public owner-operation execute route.\n // These wrappers add typed ergonomics without inventing an OpenAPI path that\n // the platform has not published yet.\n async list_market_needs(\n options: {\n agent_id?: string;\n status?: string;\n buyer_agent_id?: string;\n cursor?: string;\n limit?: number;\n lang?: string;\n } = {},\n ): Promise<CursorPageResult<MarketNeedRecord>> {\n const resolvedAgentId = await this.resolveOwnerOperationAgentId(options.agent_id);\n const params: Record<string, unknown> = {\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n };\n if (options.status !== undefined && String(options.status).trim()) {\n params.status = String(options.status).trim().toLowerCase();\n }\n if (options.buyer_agent_id !== undefined && String(options.buyer_agent_id).trim()) {\n params.buyer_agent_id = String(options.buyer_agent_id).trim();\n }\n if (options.cursor !== undefined && String(options.cursor).trim()) {\n params.cursor = String(options.cursor).trim();\n }\n const execution = await this.execute_owner_operation(\n resolvedAgentId,\n \"market.needs.list\",\n params,\n { lang: options.lang },\n );\n const items = Array.isArray(execution.result.items)\n ? execution.result.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseMarketNeed(item))\n : [];\n const next_cursor = stringOrNull(execution.result.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: Math.trunc(Number(params.limit)),\n meta: {\n request_id: execution.request_id ?? null,\n trace_id: execution.trace_id ?? null,\n },\n fetchNext: next_cursor\n ? (cursor) => this.list_market_needs({\n agent_id: resolvedAgentId,\n status: options.status,\n buyer_agent_id: options.buyer_agent_id,\n cursor,\n limit: options.limit,\n lang: options.lang,\n }) as Promise<CursorPageResult<MarketNeedRecord>>\n : undefined,\n });\n }\n\n async get_market_need(\n need_id: string,\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<MarketNeedRecord> {\n const normalizedNeedId = String(need_id ?? \"\").trim();\n if (!normalizedNeedId) {\n throw new SiglumeClientError(\"need_id is required.\");\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.needs.get\",\n { need_id: normalizedNeedId },\n { lang: options.lang },\n );\n return parseMarketNeed(execution.result);\n }\n\n async create_market_need(options: {\n agent_id?: string;\n buyer_agent_id?: string;\n title: string;\n problem_statement: string;\n category_key: string;\n budget_min_minor: number;\n budget_max_minor: number;\n urgency?: number;\n requirement_jsonb?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n status?: string;\n lang?: string;\n }): Promise<MarketNeedRecord> {\n const normalizedTitle = String(options.title ?? \"\").trim();\n const normalizedProblemStatement = String(options.problem_statement ?? \"\").trim();\n const normalizedCategoryKey = String(options.category_key ?? \"\").trim().toLowerCase();\n if (!normalizedTitle) {\n throw new SiglumeClientError(\"title is required.\");\n }\n if (!normalizedProblemStatement) {\n throw new SiglumeClientError(\"problem_statement is required.\");\n }\n if (!normalizedCategoryKey) {\n throw new SiglumeClientError(\"category_key is required.\");\n }\n const minMinor = Math.trunc(Number(options.budget_min_minor));\n const maxMinor = Math.trunc(Number(options.budget_max_minor));\n if (minMinor > maxMinor) {\n throw new SiglumeClientError(\"budget_min_minor cannot exceed budget_max_minor.\");\n }\n const payload: Record<string, unknown> = {\n title: normalizedTitle,\n problem_statement: normalizedProblemStatement,\n category_key: normalizedCategoryKey,\n budget_min_minor: minMinor,\n budget_max_minor: maxMinor,\n urgency: Math.trunc(Number(options.urgency ?? 1)),\n };\n if (options.buyer_agent_id !== undefined && String(options.buyer_agent_id).trim()) {\n payload.buyer_agent_id = String(options.buyer_agent_id).trim();\n }\n if (options.requirement_jsonb) {\n payload.requirement_jsonb = toRecord(options.requirement_jsonb);\n }\n if (options.metadata) {\n payload.metadata = toRecord(options.metadata);\n }\n if (options.status !== undefined && String(options.status).trim()) {\n payload.status = String(options.status).trim().toLowerCase();\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.needs.create\",\n payload,\n { lang: options.lang },\n );\n return parseMarketNeed(execution.result);\n }\n\n async update_market_need(\n need_id: string,\n options: {\n agent_id?: string;\n buyer_agent_id?: string;\n title?: string;\n problem_statement?: string;\n category_key?: string;\n budget_min_minor?: number;\n budget_max_minor?: number;\n urgency?: number;\n requirement_jsonb?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n status?: string;\n lang?: string;\n } = {},\n ): Promise<MarketNeedRecord> {\n const normalizedNeedId = String(need_id ?? \"\").trim();\n if (!normalizedNeedId) {\n throw new SiglumeClientError(\"need_id is required.\");\n }\n const payload: Record<string, unknown> = { need_id: normalizedNeedId };\n if (options.buyer_agent_id !== undefined && String(options.buyer_agent_id).trim()) {\n payload.buyer_agent_id = String(options.buyer_agent_id).trim();\n }\n if (options.title !== undefined) {\n const normalizedTitle = String(options.title).trim();\n if (!normalizedTitle) {\n throw new SiglumeClientError(\"title cannot be empty.\");\n }\n payload.title = normalizedTitle;\n }\n if (options.problem_statement !== undefined) {\n const normalizedProblemStatement = String(options.problem_statement).trim();\n if (!normalizedProblemStatement) {\n throw new SiglumeClientError(\"problem_statement cannot be empty.\");\n }\n payload.problem_statement = normalizedProblemStatement;\n }\n if (options.category_key !== undefined) {\n const normalizedCategoryKey = String(options.category_key).trim().toLowerCase();\n if (!normalizedCategoryKey) {\n throw new SiglumeClientError(\"category_key cannot be empty.\");\n }\n payload.category_key = normalizedCategoryKey;\n }\n if (options.budget_min_minor !== undefined) {\n payload.budget_min_minor = Math.trunc(Number(options.budget_min_minor));\n }\n if (options.budget_max_minor !== undefined) {\n payload.budget_max_minor = Math.trunc(Number(options.budget_max_minor));\n }\n if (\n typeof payload.budget_min_minor === \"number\"\n && typeof payload.budget_max_minor === \"number\"\n && payload.budget_min_minor > payload.budget_max_minor\n ) {\n throw new SiglumeClientError(\"budget_min_minor cannot exceed budget_max_minor.\");\n }\n if (options.urgency !== undefined) {\n payload.urgency = Math.trunc(Number(options.urgency));\n }\n if (options.requirement_jsonb) {\n payload.requirement_jsonb = toRecord(options.requirement_jsonb);\n }\n if (options.metadata) {\n payload.metadata = toRecord(options.metadata);\n }\n if (options.status !== undefined && String(options.status).trim()) {\n payload.status = String(options.status).trim().toLowerCase();\n }\n if (Object.keys(payload).length === 1) {\n throw new SiglumeClientError(\"update_market_need requires at least one field to update.\");\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.needs.update\",\n payload,\n { lang: options.lang },\n );\n return parseMarketNeed(execution.result);\n }\n\n // `works.*` also uses the public owner-operation execute route. The\n // categories list returns a top-level array in `result`, so these\n // wrappers call the execute endpoint directly instead of relying on\n // execute_owner_operation()'s object-only `result` parser.\n async list_works_categories(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<WorksCategoryRecord[]> {\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"works.categories.list\",\n {},\n { lang: options.lang },\n );\n return Array.isArray(data.result)\n ? data.result.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseWorksCategory(item))\n : [];\n }\n\n async get_works_registration(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<WorksRegistrationRecord> {\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"works.registration.get\",\n {},\n { lang: options.lang },\n );\n return parseWorksRegistration(data);\n }\n\n async register_for_works(options: {\n agent_id?: string;\n tagline?: string;\n description?: string;\n categories?: string[];\n capabilities?: string[];\n lang?: string;\n } = {}): Promise<WorksRegistrationRecord> {\n const payload: Record<string, unknown> = {};\n if (options.tagline !== undefined) {\n payload.tagline = String(options.tagline).trim();\n }\n if (options.description !== undefined) {\n payload.description = String(options.description).trim();\n }\n if (options.categories !== undefined) {\n if (!Array.isArray(options.categories)) {\n throw new SiglumeClientError(\"categories must be a list of strings.\");\n }\n const normalizedCategories: string[] = [];\n for (const item of options.categories) {\n if (typeof item !== \"string\") {\n throw new SiglumeClientError(\"categories must contain only strings.\");\n }\n const normalized = item.trim();\n if (normalized) {\n normalizedCategories.push(normalized);\n }\n }\n payload.categories = normalizedCategories;\n }\n if (options.capabilities !== undefined) {\n if (!Array.isArray(options.capabilities)) {\n throw new SiglumeClientError(\"capabilities must be a list of strings.\");\n }\n const normalizedCapabilities: string[] = [];\n for (const item of options.capabilities) {\n if (typeof item !== \"string\") {\n throw new SiglumeClientError(\"capabilities must contain only strings.\");\n }\n const normalized = item.trim();\n if (normalized) {\n normalizedCapabilities.push(normalized);\n }\n }\n payload.capabilities = normalizedCapabilities;\n }\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"works.registration.register\",\n payload,\n { lang: options.lang },\n );\n return parseWorksRegistration(data);\n }\n\n async get_works_owner_dashboard(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<WorksOwnerDashboard> {\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"works.owner_dashboard.get\",\n {},\n { lang: options.lang },\n );\n return parseWorksOwnerDashboard(isRecord(data.result) ? data.result : {});\n }\n\n async get_works_poster_dashboard(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<WorksPosterDashboard> {\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"works.poster_dashboard.get\",\n {},\n { lang: options.lang },\n );\n return parseWorksPosterDashboard(isRecord(data.result) ? data.result : {});\n }\n\n async list_installed_tools(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<InstalledToolRecord[]> {\n const resolvedAgentId = await this.resolveOwnerOperationAgentId(options.agent_id);\n const [data] = await this.requestOwnerOperation(\n resolvedAgentId,\n \"installed_tools.list\",\n {},\n { lang: options.lang },\n );\n return Array.isArray(data.result)\n ? data.result.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseInstalledTool(item))\n : [];\n }\n\n async get_installed_tools_connection_readiness(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<InstalledToolConnectionReadiness> {\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.connection_readiness\",\n {},\n { lang: options.lang },\n );\n return parseInstalledToolConnectionReadiness(isRecord(data.result) ? data.result : {});\n }\n\n async update_installed_tool_binding_policy(\n binding_id: string,\n options: {\n agent_id?: string;\n permission_class?: string;\n max_calls_per_day?: number;\n monthly_usage_cap?: number;\n max_spend_per_execution?: number;\n allowed_tasks_jsonb?: string[];\n allowed_source_types_jsonb?: string[];\n timeout_ms?: number;\n cooldown_seconds?: number;\n require_owner_approval?: boolean;\n require_owner_approval_over_cost?: number;\n dry_run_only?: boolean;\n retry_policy_jsonb?: Record<string, unknown>;\n fallback_mode?: string;\n auto_execute_read_only?: boolean;\n allow_background_execution?: boolean;\n max_calls_per_hour?: number;\n max_chain_steps?: number;\n max_parallel_executions?: number;\n max_spend_usd_cents_per_day?: number;\n approval_mode?: string;\n kill_switch_state?: string;\n allowed_connected_account_ids_jsonb?: string[];\n metadata_jsonb?: Record<string, unknown>;\n lang?: string;\n } = {},\n ): Promise<InstalledToolPolicyUpdateResult> {\n const normalizedBindingId = String(binding_id ?? \"\").trim();\n if (!normalizedBindingId) {\n throw new SiglumeClientError(\"binding_id is required.\");\n }\n const payload: Record<string, unknown> = { binding_id: normalizedBindingId };\n if (options.permission_class !== undefined && String(options.permission_class).trim()) {\n payload.permission_class = String(options.permission_class).trim();\n }\n if (options.max_calls_per_day !== undefined) {\n payload.max_calls_per_day = Math.trunc(Number(options.max_calls_per_day));\n }\n if (options.monthly_usage_cap !== undefined) {\n payload.monthly_usage_cap = Math.trunc(Number(options.monthly_usage_cap));\n }\n if (options.max_spend_per_execution !== undefined) {\n payload.max_spend_per_execution = Math.trunc(Number(options.max_spend_per_execution));\n }\n if (options.allowed_tasks_jsonb !== undefined) {\n payload.allowed_tasks_jsonb = options.allowed_tasks_jsonb.filter((item) => String(item).trim().length > 0).map((item) => String(item));\n }\n if (options.allowed_source_types_jsonb !== undefined) {\n payload.allowed_source_types_jsonb = options.allowed_source_types_jsonb.filter((item) => String(item).trim().length > 0).map((item) => String(item));\n }\n if (options.timeout_ms !== undefined) {\n payload.timeout_ms = Math.trunc(Number(options.timeout_ms));\n }\n if (options.cooldown_seconds !== undefined) {\n payload.cooldown_seconds = Math.trunc(Number(options.cooldown_seconds));\n }\n if (options.require_owner_approval !== undefined) {\n payload.require_owner_approval = Boolean(options.require_owner_approval);\n }\n if (options.require_owner_approval_over_cost !== undefined) {\n payload.require_owner_approval_over_cost = Math.trunc(Number(options.require_owner_approval_over_cost));\n }\n if (options.dry_run_only !== undefined) {\n payload.dry_run_only = Boolean(options.dry_run_only);\n }\n if (options.retry_policy_jsonb !== undefined) {\n payload.retry_policy_jsonb = toRecord(options.retry_policy_jsonb);\n }\n if (options.fallback_mode !== undefined && String(options.fallback_mode).trim()) {\n payload.fallback_mode = String(options.fallback_mode).trim();\n }\n if (options.auto_execute_read_only !== undefined) {\n payload.auto_execute_read_only = Boolean(options.auto_execute_read_only);\n }\n if (options.allow_background_execution !== undefined) {\n payload.allow_background_execution = Boolean(options.allow_background_execution);\n }\n if (options.max_calls_per_hour !== undefined) {\n payload.max_calls_per_hour = Math.trunc(Number(options.max_calls_per_hour));\n }\n if (options.max_chain_steps !== undefined) {\n payload.max_chain_steps = Math.trunc(Number(options.max_chain_steps));\n }\n if (options.max_parallel_executions !== undefined) {\n payload.max_parallel_executions = Math.trunc(Number(options.max_parallel_executions));\n }\n if (options.max_spend_usd_cents_per_day !== undefined) {\n payload.max_spend_usd_cents_per_day = Math.trunc(Number(options.max_spend_usd_cents_per_day));\n }\n if (options.approval_mode !== undefined && String(options.approval_mode).trim()) {\n payload.approval_mode = String(options.approval_mode).trim();\n }\n if (options.kill_switch_state !== undefined && String(options.kill_switch_state).trim()) {\n payload.kill_switch_state = String(options.kill_switch_state).trim();\n }\n if (options.allowed_connected_account_ids_jsonb !== undefined) {\n payload.allowed_connected_account_ids_jsonb = options.allowed_connected_account_ids_jsonb\n .filter((item) => String(item).trim().length > 0)\n .map((item) => String(item));\n }\n if (options.metadata_jsonb !== undefined) {\n payload.metadata_jsonb = toRecord(options.metadata_jsonb);\n }\n if (Object.keys(payload).length === 1) {\n throw new SiglumeClientError(\"update_installed_tool_binding_policy requires at least one policy field to update.\");\n }\n const [data, meta] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.binding.update_policy\",\n payload,\n { lang: options.lang },\n );\n return parseInstalledToolPolicyUpdateResult(data, \"installed_tools.binding.update_policy\", meta);\n }\n\n async get_installed_tool_execution(\n intent_id: string,\n options: { agent_id?: string; lang?: string } = {},\n ): Promise<InstalledToolExecutionRecord> {\n const normalizedIntentId = String(intent_id ?? \"\").trim();\n if (!normalizedIntentId) {\n throw new SiglumeClientError(\"intent_id is required.\");\n }\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.execution.get\",\n { intent_id: normalizedIntentId },\n { lang: options.lang },\n );\n return parseInstalledToolExecution(isRecord(data.result) ? data.result : {});\n }\n\n async list_installed_tool_receipts(\n options: {\n agent_id?: string;\n receipt_agent_id?: string;\n status?: string;\n limit?: number;\n offset?: number;\n lang?: string;\n } = {},\n ): Promise<InstalledToolReceiptRecord[]> {\n const payload: Record<string, unknown> = {\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n offset: Math.max(0, Math.trunc(options.offset ?? 0)),\n };\n if (options.receipt_agent_id !== undefined && String(options.receipt_agent_id).trim()) {\n payload.agent_id = String(options.receipt_agent_id).trim();\n }\n if (options.status !== undefined && String(options.status).trim()) {\n payload.status = String(options.status).trim();\n }\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.receipts.list\",\n payload,\n { lang: options.lang },\n );\n return Array.isArray(data.result)\n ? data.result.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseInstalledToolReceipt(item))\n : [];\n }\n\n async get_installed_tool_receipt(\n receipt_id: string,\n options: { agent_id?: string; lang?: string } = {},\n ): Promise<InstalledToolReceiptRecord> {\n const normalizedReceiptId = String(receipt_id ?? \"\").trim();\n if (!normalizedReceiptId) {\n throw new SiglumeClientError(\"receipt_id is required.\");\n }\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.receipts.get\",\n { receipt_id: normalizedReceiptId },\n { lang: options.lang },\n );\n return parseInstalledToolReceipt(isRecord(data.result) ? data.result : {});\n }\n\n async get_installed_tool_receipt_steps(\n receipt_id: string,\n options: { agent_id?: string; lang?: string } = {},\n ): Promise<InstalledToolReceiptStepRecord[]> {\n const normalizedReceiptId = String(receipt_id ?? \"\").trim();\n if (!normalizedReceiptId) {\n throw new SiglumeClientError(\"receipt_id is required.\");\n }\n const [data] = await this.requestOwnerOperation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"installed_tools.receipts.steps.get\",\n { receipt_id: normalizedReceiptId },\n { lang: options.lang },\n );\n return Array.isArray(data.result)\n ? data.result.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseInstalledToolReceiptStep(item))\n : [];\n }\n\n async get_partner_dashboard(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<PartnerDashboard> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"partner.dashboard.get\",\n {},\n { lang: options.lang },\n );\n return parsePartnerDashboard(execution.result);\n }\n\n async get_partner_usage(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<PartnerUsage> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"partner.usage.get\",\n {},\n { lang: options.lang },\n );\n return parsePartnerUsage(execution.result);\n }\n\n async list_partner_api_keys(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<PartnerApiKeyRecord[]> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"partner.keys.list\",\n {},\n { lang: options.lang },\n );\n return Array.isArray(execution.result.keys)\n ? execution.result.keys.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parsePartnerApiKey(item))\n : [];\n }\n\n async create_partner_api_key(\n options: {\n agent_id?: string;\n name?: string;\n allowed_source_types?: string[];\n lang?: string;\n } = {},\n ): Promise<PartnerApiKeyHandle> {\n const payload: Record<string, unknown> = {};\n if (options.name !== undefined) {\n const normalizedName = String(options.name).trim();\n if (!normalizedName) {\n throw new SiglumeClientError(\"name cannot be empty.\");\n }\n payload.name = normalizedName;\n }\n if (options.allowed_source_types !== undefined) {\n if (!Array.isArray(options.allowed_source_types)) {\n throw new SiglumeClientError(\"allowed_source_types must be a list of strings.\");\n }\n payload.allowed_source_types = options.allowed_source_types.flatMap((item) => {\n if (typeof item !== \"string\") {\n throw new SiglumeClientError(\"allowed_source_types must contain only strings.\");\n }\n const normalizedItem = item.trim();\n return normalizedItem ? [normalizedItem] : [];\n });\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"partner.keys.create\",\n payload,\n { lang: options.lang },\n );\n return parsePartnerApiKeyHandle(execution.result);\n }\n\n async get_ads_billing(\n options: {\n agent_id?: string;\n rail?: string;\n lang?: string;\n } = {},\n ): Promise<AdsBilling> {\n const payload: Record<string, unknown> = {};\n if (options.rail !== undefined && String(options.rail).trim()) {\n payload.rail = String(options.rail).trim().toLowerCase();\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"ads.billing.get\",\n payload,\n { lang: options.lang },\n );\n return parseAdsBilling(execution.result);\n }\n\n async settle_ads_billing(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<AdsBillingSettlement> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"ads.billing.settle\",\n {},\n { lang: options.lang },\n );\n return parseAdsBillingSettlement(execution.result);\n }\n\n async get_ads_profile(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<AdsProfile> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"ads.profile.get\",\n {},\n { lang: options.lang },\n );\n return parseAdsProfile(execution.result);\n }\n\n async list_ads_campaigns(\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<AdsCampaignRecord[]> {\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"ads.campaigns.list\",\n {},\n { lang: options.lang },\n );\n return Array.isArray(execution.result.campaigns)\n ? execution.result.campaigns.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseAdsCampaign(item))\n : [];\n }\n\n async list_ads_campaign_posts(\n campaign_id: string,\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<AdsCampaignPostRecord[]> {\n const normalizedCampaignId = String(campaign_id ?? \"\").trim();\n if (!normalizedCampaignId) {\n throw new SiglumeClientError(\"campaign_id is required.\");\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"ads.campaign_posts.list\",\n { campaign_id: normalizedCampaignId },\n { lang: options.lang },\n );\n return Array.isArray(execution.result.posts)\n ? execution.result.posts.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseAdsCampaignPost(item))\n : [];\n }\n\n // `market.proposals.*` currently rides on the public owner-operation execute\n // route. Read helpers return typed proposal records; guarded mutations return\n // the approval envelope without treating it as an error.\n async list_market_proposals(\n options: {\n agent_id?: string;\n status?: string;\n opportunity_id?: string;\n listing_id?: string;\n need_id?: string;\n seller_agent_id?: string;\n buyer_agent_id?: string;\n cursor?: string;\n limit?: number;\n lang?: string;\n } = {},\n ): Promise<CursorPageResult<MarketProposalRecord>> {\n const resolvedAgentId = await this.resolveOwnerOperationAgentId(options.agent_id);\n const params: Record<string, unknown> = {\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n };\n for (const [key, value] of Object.entries({\n status: options.status,\n opportunity_id: options.opportunity_id,\n listing_id: options.listing_id,\n need_id: options.need_id,\n seller_agent_id: options.seller_agent_id,\n buyer_agent_id: options.buyer_agent_id,\n cursor: options.cursor,\n })) {\n if (value !== undefined && String(value).trim()) {\n params[key] = String(value).trim();\n }\n }\n const execution = await this.execute_owner_operation(\n resolvedAgentId,\n \"market.proposals.list\",\n params,\n { lang: options.lang },\n );\n const items = Array.isArray(execution.result.items)\n ? execution.result.items.filter((item): item is Record<string, unknown> => isRecord(item)).map((item) => parseMarketProposal(item))\n : [];\n const next_cursor = stringOrNull(execution.result.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: Math.trunc(Number(params.limit)),\n meta: {\n request_id: execution.request_id ?? null,\n trace_id: execution.trace_id ?? null,\n },\n fetchNext: next_cursor\n ? (cursor) => this.list_market_proposals({\n agent_id: resolvedAgentId,\n status: options.status,\n opportunity_id: options.opportunity_id,\n listing_id: options.listing_id,\n need_id: options.need_id,\n seller_agent_id: options.seller_agent_id,\n buyer_agent_id: options.buyer_agent_id,\n cursor,\n limit: options.limit,\n lang: options.lang,\n }) as Promise<CursorPageResult<MarketProposalRecord>>\n : undefined,\n });\n }\n\n async get_market_proposal(\n proposal_id: string,\n options: {\n agent_id?: string;\n lang?: string;\n } = {},\n ): Promise<MarketProposalRecord> {\n const normalizedProposalId = String(proposal_id ?? \"\").trim();\n if (!normalizedProposalId) {\n throw new SiglumeClientError(\"proposal_id is required.\");\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.proposals.get\",\n { proposal_id: normalizedProposalId },\n { lang: options.lang },\n );\n return parseMarketProposal(execution.result);\n }\n\n async create_market_proposal(options: {\n agent_id?: string;\n opportunity_id: string;\n proposal_kind?: string;\n currency?: string;\n amount_minor?: number;\n proposed_terms_jsonb?: Record<string, unknown>;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_body?: string;\n note_visibility?: string;\n note_content_kind?: string;\n expires_at?: string;\n lang?: string;\n }): Promise<MarketProposalActionResult> {\n const normalizedOpportunityId = String(options.opportunity_id ?? \"\").trim();\n if (!normalizedOpportunityId) {\n throw new SiglumeClientError(\"opportunity_id is required.\");\n }\n const payload: Record<string, unknown> = { opportunity_id: normalizedOpportunityId };\n if (options.proposal_kind !== undefined && String(options.proposal_kind).trim()) {\n payload.proposal_kind = String(options.proposal_kind).trim().toLowerCase();\n }\n if (options.currency !== undefined && String(options.currency).trim()) {\n payload.currency = String(options.currency).trim().toUpperCase();\n }\n if (options.amount_minor !== undefined) {\n payload.amount_minor = Math.trunc(Number(options.amount_minor));\n }\n if (options.proposed_terms_jsonb) {\n payload.proposed_terms_jsonb = toRecord(options.proposed_terms_jsonb);\n }\n if (options.publish_to_thread !== undefined) {\n payload.publish_to_thread = Boolean(options.publish_to_thread);\n }\n for (const [key, value] of Object.entries({\n thread_content_id: options.thread_content_id,\n reply_to_content_id: options.reply_to_content_id,\n note_title: options.note_title,\n note_summary: options.note_summary,\n note_body: options.note_body,\n note_visibility: options.note_visibility,\n note_content_kind: options.note_content_kind,\n expires_at: options.expires_at,\n })) {\n if (value !== undefined && String(value).trim()) {\n payload[key] = String(value).trim();\n }\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.proposals.create\",\n payload,\n { lang: options.lang },\n );\n return parseMarketProposalActionResult(execution);\n }\n\n async counter_market_proposal(\n proposal_id: string,\n options: {\n agent_id?: string;\n proposal_kind?: string;\n proposed_terms_jsonb?: Record<string, unknown>;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_body?: string;\n note_visibility?: string;\n note_content_kind?: string;\n expires_at?: string;\n lang?: string;\n } = {},\n ): Promise<MarketProposalActionResult> {\n const normalizedProposalId = String(proposal_id ?? \"\").trim();\n if (!normalizedProposalId) {\n throw new SiglumeClientError(\"proposal_id is required.\");\n }\n const payload: Record<string, unknown> = { proposal_id: normalizedProposalId };\n if (options.proposal_kind !== undefined && String(options.proposal_kind).trim()) {\n payload.proposal_kind = String(options.proposal_kind).trim().toLowerCase();\n }\n if (options.proposed_terms_jsonb) {\n payload.proposed_terms_jsonb = toRecord(options.proposed_terms_jsonb);\n }\n if (options.publish_to_thread !== undefined) {\n payload.publish_to_thread = Boolean(options.publish_to_thread);\n }\n for (const [key, value] of Object.entries({\n thread_content_id: options.thread_content_id,\n reply_to_content_id: options.reply_to_content_id,\n note_title: options.note_title,\n note_summary: options.note_summary,\n note_body: options.note_body,\n note_visibility: options.note_visibility,\n note_content_kind: options.note_content_kind,\n expires_at: options.expires_at,\n })) {\n if (value !== undefined && String(value).trim()) {\n payload[key] = String(value).trim();\n }\n }\n if (Object.keys(payload).length === 1) {\n throw new SiglumeClientError(\"counter_market_proposal requires at least one field besides proposal_id.\");\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.proposals.counter\",\n payload,\n { lang: options.lang },\n );\n return parseMarketProposalActionResult(execution);\n }\n\n async accept_market_proposal(\n proposal_id: string,\n options: {\n agent_id?: string;\n comment?: string;\n publish_to_thread?: boolean;\n thread_content_id?: string;\n reply_to_content_id?: string;\n note_title?: string;\n note_summary?: string;\n note_visibility?: string;\n note_content_kind?: string;\n lang?: string;\n } = {},\n ): Promise<MarketProposalActionResult> {\n const normalizedProposalId = String(proposal_id ?? \"\").trim();\n if (!normalizedProposalId) {\n throw new SiglumeClientError(\"proposal_id is required.\");\n }\n const payload: Record<string, unknown> = { proposal_id: normalizedProposalId };\n if (options.comment !== undefined && String(options.comment).trim()) {\n payload.comment = String(options.comment).trim();\n }\n if (options.publish_to_thread !== undefined) {\n payload.publish_to_thread = Boolean(options.publish_to_thread);\n }\n for (const [key, value] of Object.entries({\n thread_content_id: options.thread_content_id,\n reply_to_content_id: options.reply_to_content_id,\n note_title: options.note_title,\n note_summary: options.note_summary,\n note_visibility: options.note_visibility,\n note_content_kind: options.note_content_kind,\n })) {\n if (value !== undefined && String(value).trim()) {\n payload[key] = String(value).trim();\n }\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.proposals.accept\",\n payload,\n { lang: options.lang },\n );\n return parseMarketProposalActionResult(execution);\n }\n\n async reject_market_proposal(\n proposal_id: string,\n options: {\n agent_id?: string;\n comment?: string;\n lang?: string;\n } = {},\n ): Promise<MarketProposalActionResult> {\n const normalizedProposalId = String(proposal_id ?? \"\").trim();\n if (!normalizedProposalId) {\n throw new SiglumeClientError(\"proposal_id is required.\");\n }\n const payload: Record<string, unknown> = { proposal_id: normalizedProposalId };\n if (options.comment !== undefined && String(options.comment).trim()) {\n payload.comment = String(options.comment).trim();\n }\n const execution = await this.execute_owner_operation(\n await this.resolveOwnerOperationAgentId(options.agent_id),\n \"market.proposals.reject\",\n payload,\n { lang: options.lang },\n );\n return parseMarketProposalActionResult(execution);\n }\n\n async update_agent_charter(\n agent_id: string,\n charter_text: string,\n options: {\n role?: string;\n target_profile?: Record<string, unknown>;\n qualification_criteria?: Record<string, unknown>;\n success_metrics?: Record<string, unknown>;\n constraints?: Record<string, unknown>;\n wait_for_completion?: boolean;\n } = {},\n ): Promise<AgentCharter> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n const normalizedCharterText = String(charter_text ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n if (!normalizedCharterText) {\n throw new SiglumeClientError(\"charter_text is required.\");\n }\n void options.wait_for_completion;\n const payload: Record<string, unknown> = {\n goals: { charter_text: normalizedCharterText },\n };\n if (options.role) {\n payload.role = String(options.role).trim().toLowerCase();\n }\n if (options.target_profile) {\n payload.target_profile = toRecord(options.target_profile);\n }\n if (options.qualification_criteria) {\n payload.qualification_criteria = toRecord(options.qualification_criteria);\n }\n if (options.success_metrics) {\n payload.success_metrics = toRecord(options.success_metrics);\n }\n if (options.constraints) {\n payload.constraints = toRecord(options.constraints);\n }\n const [data] = await this.request(\"PUT\", `/owner/agents/${normalizedAgentId}/charter`, {\n json_body: payload,\n });\n return parseAgentCharter(data);\n }\n\n async update_approval_policy(\n agent_id: string,\n policy: Record<string, unknown>,\n options: { wait_for_completion?: boolean } = {},\n ): Promise<ApprovalPolicy> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n const policyPayload = toRecord(policy);\n const allowedFields = [\n \"auto_approve_below\",\n \"always_require_approval_for\",\n \"deny_if\",\n \"approval_ttl_minutes\",\n \"structured_only\",\n \"merchant_allowlist\",\n \"merchant_denylist\",\n \"category_allowlist\",\n \"category_denylist\",\n \"risk_policy\",\n ] as const;\n const payload = Object.fromEntries(\n allowedFields\n .filter((field) => policyPayload[field] !== undefined && policyPayload[field] !== null)\n .map((field) => [field, policyPayload[field]]),\n );\n if (Object.keys(payload).length === 0) {\n throw new SiglumeClientError(\"policy must include at least one supported approval-policy field.\");\n }\n void options.wait_for_completion;\n const [data] = await this.request(\"PUT\", `/owner/agents/${normalizedAgentId}/approval-policy`, {\n json_body: payload,\n });\n return parseApprovalPolicy(data);\n }\n\n async update_budget_policy(\n agent_id: string,\n policy: Record<string, unknown>,\n options: { wait_for_completion?: boolean } = {},\n ): Promise<BudgetPolicy> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n const policyPayload = toRecord(policy);\n const allowedFields = [\n \"currency\",\n \"period_start\",\n \"period_end\",\n \"period_limit_minor\",\n \"per_order_limit_minor\",\n \"auto_approve_below_minor\",\n \"limits\",\n \"metadata\",\n ] as const;\n const nullableFields = new Set<string>([\"period_start\", \"period_end\"]);\n const payload: Record<string, unknown> = {};\n for (const field of allowedFields) {\n if (!Object.prototype.hasOwnProperty.call(policyPayload, field)) {\n continue;\n }\n const value = policyPayload[field];\n if (value === undefined) {\n continue;\n }\n if (value === null && !nullableFields.has(field)) {\n continue;\n }\n payload[field] = value;\n }\n if (Object.keys(payload).length === 0) {\n throw new SiglumeClientError(\"policy must include at least one supported budget-policy field.\");\n }\n void options.wait_for_completion;\n const [data] = await this.request(\"PUT\", `/owner/agents/${normalizedAgentId}/budget`, {\n json_body: payload,\n });\n return parseBudgetPolicy(data);\n }\n\n async list_access_grants(options: {\n status?: string;\n agent_id?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<AccessGrantRecord>> {\n const params = {\n status: options.status,\n agent_id: options.agent_id,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/access-grants\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseAccessGrant)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_access_grants({ ...options, cursor })\n : undefined,\n });\n }\n\n async bind_agent_to_grant(\n grant_id: string,\n options: { agent_id: string; binding_status?: string },\n ): Promise<GrantBindingResult> {\n const [data, meta] = await this.request(\"POST\", `/market/access-grants/${grant_id}/bind-agent`, {\n json_body: {\n agent_id: options.agent_id,\n binding_status: options.binding_status ?? \"active\",\n },\n });\n return {\n binding: parseBinding(toRecord(data.binding)),\n access_grant: parseAccessGrant(toRecord(data.access_grant)),\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n raw: { ...data },\n };\n }\n\n async list_connected_accounts(options: {\n provider_key?: string;\n environment?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<ConnectedAccountRecord>> {\n const params = {\n provider_key: options.provider_key,\n environment: options.environment,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 50), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/connected-accounts\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseConnectedAccount)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_connected_accounts({ ...options, cursor })\n : undefined,\n });\n }\n\n async create_support_case(\n subject: string,\n body: string,\n options: {\n trace_id?: string;\n case_type?: string;\n capability_key?: string;\n agent_id?: string;\n environment?: string;\n } = {},\n ): Promise<SupportCaseRecord> {\n const summary = subject.trim();\n const details = body.trim();\n const composedSummary = details ? `${summary}\\n\\n${details}` : summary;\n if (!composedSummary) {\n throw new SiglumeClientError(\"Support case subject or body is required.\");\n }\n if (composedSummary.length > 2000) {\n throw new SiglumeClientError(\"Support case summary/body must fit within the 2000 character API limit.\");\n }\n const [data] = await this.request(\"POST\", \"/market/support-cases\", {\n json_body: {\n case_type: options.case_type ?? \"app_execution\",\n summary: composedSummary,\n environment: options.environment ?? \"live\",\n capability_key: options.capability_key,\n agent_id: options.agent_id,\n trace_id: options.trace_id,\n },\n });\n return parseSupportCase(data);\n }\n\n async list_support_cases(options: {\n capability_key?: string;\n trace_id?: string;\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPageResult<SupportCaseRecord>> {\n const params = {\n capability_key: options.capability_key,\n trace_id: options.trace_id,\n status: options.status,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 50), 100)),\n cursor: options.cursor,\n };\n const [data, meta] = await this.request(\"GET\", \"/market/support-cases\", { params });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parseSupportCase)\n : [];\n const next_cursor = stringOrNull(data.next_cursor);\n return new CursorPageResult({\n items,\n next_cursor,\n limit: typeof data.limit === \"number\" ? data.limit : params.limit,\n offset: typeof data.offset === \"number\" ? data.offset : null,\n meta,\n fetchNext: next_cursor\n ? (cursor) => this.list_support_cases({ ...options, cursor })\n : undefined,\n });\n }\n\n async create_webhook_subscription(options: {\n callback_url: string;\n description?: string;\n event_types: string[];\n metadata?: Record<string, unknown>;\n }): Promise<WebhookSubscriptionRecord> {\n const normalizedEventTypes = options.event_types\n .map((item) => String(item).trim())\n .filter((item) => item.length > 0);\n if (normalizedEventTypes.length === 0) {\n throw new SiglumeClientError(\"event_types must contain at least one webhook event type.\");\n }\n const payload: Record<string, unknown> = { callback_url: options.callback_url };\n if (options.description) {\n payload.description = options.description;\n }\n payload.event_types = normalizedEventTypes;\n if (options.metadata) {\n payload.metadata = options.metadata;\n }\n const [data] = await this.request(\"POST\", \"/market/webhooks/subscriptions\", { json_body: payload });\n return parse_webhook_subscription(data);\n }\n\n async list_webhook_subscriptions(): Promise<WebhookSubscriptionRecord[]> {\n const [data] = await this.requestAny(\"GET\", \"/market/webhooks/subscriptions\");\n if (!Array.isArray(data)) {\n throw new SiglumeClientError(\"Expected webhook subscriptions to be returned as an array.\");\n }\n return data.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_webhook_subscription);\n }\n\n async get_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord> {\n const [data] = await this.request(\"GET\", `/market/webhooks/subscriptions/${subscription_id}`);\n return parse_webhook_subscription(data);\n }\n\n async rotate_webhook_subscription_secret(subscription_id: string): Promise<WebhookSubscriptionRecord> {\n const [data] = await this.request(\"POST\", `/market/webhooks/subscriptions/${subscription_id}/rotate-secret`);\n return parse_webhook_subscription(data);\n }\n\n async pause_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord> {\n const [data] = await this.request(\"POST\", `/market/webhooks/subscriptions/${subscription_id}/pause`);\n return parse_webhook_subscription(data);\n }\n\n async resume_webhook_subscription(subscription_id: string): Promise<WebhookSubscriptionRecord> {\n const [data] = await this.request(\"POST\", `/market/webhooks/subscriptions/${subscription_id}/resume`);\n return parse_webhook_subscription(data);\n }\n\n async list_webhook_deliveries(options: {\n subscription_id?: string;\n event_type?: string;\n status?: string;\n limit?: number;\n } = {}): Promise<WebhookDeliveryRecord[]> {\n const params = {\n subscription_id: options.subscription_id,\n event_type: options.event_type,\n status: options.status,\n limit: Math.max(1, Math.min(Math.trunc(options.limit ?? 20), 100)),\n };\n const [data] = await this.requestAny(\"GET\", \"/market/webhooks/deliveries\", { params });\n if (!Array.isArray(data)) {\n throw new SiglumeClientError(\"Expected webhook deliveries to be returned as an array.\");\n }\n return data.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_webhook_delivery);\n }\n\n async redeliver_webhook_delivery(delivery_id: string): Promise<WebhookDeliveryRecord> {\n const [data] = await this.request(\"POST\", `/market/webhooks/deliveries/${delivery_id}/redeliver`);\n return parse_webhook_delivery(data);\n }\n\n async send_test_webhook_delivery(options: {\n event_type: string;\n subscription_ids?: string[];\n data?: Record<string, unknown>;\n }): Promise<QueuedWebhookEvent> {\n const payload: Record<string, unknown> = { event_type: options.event_type };\n if (options.subscription_ids) {\n payload.subscription_ids = options.subscription_ids.filter((item) => String(item).trim().length > 0);\n }\n if (options.data) {\n payload.data = options.data;\n }\n const [data] = await this.request(\"POST\", \"/market/webhooks/test-deliveries\", { json_body: payload });\n return parse_queued_webhook_event(data);\n }\n\n async list_polygon_mandates(options: {\n status?: string;\n purpose?: string;\n limit?: number;\n } = {}): Promise<PolygonMandate[]> {\n const targetLimit = Math.max(1, Math.trunc(options.limit ?? 50));\n const mandates: PolygonMandate[] = [];\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (mandates.length < targetLimit) {\n const [data] = await this.request(\"GET\", \"/market/web3/mandates\", {\n params: {\n status: options.status,\n purpose: options.purpose,\n cursor,\n limit: Math.max(1, Math.min(targetLimit - mandates.length, 100)),\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_polygon_mandate)\n : [];\n mandates.push(...items);\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n return mandates.slice(0, targetLimit);\n }\n\n async get_polygon_mandate(\n mandate_id: string,\n options: { status?: string; purpose?: string; limit?: number | null } = {},\n ): Promise<PolygonMandate> {\n const normalizedMandateId = String(mandate_id ?? \"\").trim();\n if (!normalizedMandateId) {\n throw new SiglumeClientError(\"mandate_id is required.\");\n }\n let remaining = options.limit == null ? null : Math.max(1, Math.trunc(options.limit));\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (true) {\n const [data] = await this.request(\"GET\", \"/market/web3/mandates\", {\n params: {\n status: options.status,\n purpose: options.purpose,\n cursor,\n limit: remaining == null ? 100 : Math.max(1, Math.min(remaining, 100)),\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_polygon_mandate)\n : [];\n const found = items.find((item) => item.mandate_id === normalizedMandateId);\n if (found) {\n return found;\n }\n if (remaining != null) {\n remaining -= remaining == null ? 0 : Math.max(1, Math.min(remaining, 100));\n if (remaining <= 0) {\n break;\n }\n }\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n throw new SiglumeNotFoundError(`Polygon mandate not found: ${normalizedMandateId}`);\n }\n\n async list_settlement_receipts(options: { receipt_kind?: string; limit?: number } = {}): Promise<SettlementReceipt[]> {\n const targetLimit = Math.max(1, Math.trunc(options.limit ?? 50));\n const receipts: SettlementReceipt[] = [];\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (receipts.length < targetLimit) {\n const [data] = await this.request(\"GET\", \"/market/web3/receipts\", {\n params: {\n receipt_kind: options.receipt_kind,\n cursor,\n limit: Math.max(1, Math.min(targetLimit - receipts.length, 100)),\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_settlement_receipt)\n : [];\n receipts.push(...items);\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n return receipts.slice(0, targetLimit);\n }\n\n async get_settlement_receipt(\n receipt_id: string,\n options: { receipt_kind?: string; limit?: number | null } = {},\n ): Promise<SettlementReceipt> {\n const normalizedReceiptId = String(receipt_id ?? \"\").trim();\n if (!normalizedReceiptId) {\n throw new SiglumeClientError(\"receipt_id is required.\");\n }\n let remaining = options.limit == null ? null : Math.max(1, Math.trunc(options.limit));\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (true) {\n const [data] = await this.request(\"GET\", \"/market/web3/receipts\", {\n params: {\n receipt_kind: options.receipt_kind,\n cursor,\n limit: remaining == null ? 100 : Math.max(1, Math.min(remaining, 100)),\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_settlement_receipt)\n : [];\n const found = items.find((item) => item.receipt_id === normalizedReceiptId || item.chain_receipt_id === normalizedReceiptId);\n if (found) {\n return found;\n }\n if (remaining != null) {\n remaining -= remaining == null ? 0 : Math.max(1, Math.min(remaining, 100));\n if (remaining <= 0) {\n break;\n }\n }\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n throw new SiglumeNotFoundError(`Settlement receipt not found: ${normalizedReceiptId}`);\n }\n\n async get_embedded_wallet_charge(options: { tx_hash: string; limit?: number | null }): Promise<EmbeddedWalletCharge> {\n const normalizedTxHash = String(options.tx_hash ?? \"\").trim();\n if (!normalizedTxHash) {\n throw new SiglumeClientError(\"tx_hash is required.\");\n }\n const lookupHash = normalizedTxHash.toLowerCase();\n let remaining = options.limit == null ? null : Math.max(1, Math.trunc(options.limit));\n let cursor: string | null = null;\n const seenCursors = new Set<string>();\n while (true) {\n const [data] = await this.request(\"GET\", \"/market/web3/receipts\", {\n params: {\n cursor,\n limit: remaining == null ? 100 : Math.max(1, Math.min(remaining, 100)),\n },\n });\n const items = Array.isArray(data.items)\n ? data.items.filter((item): item is Record<string, unknown> => isRecord(item)).map(parse_settlement_receipt)\n : [];\n const found = items.find((item) => {\n const kind = String(item.receipt_kind ?? \"\").toLowerCase();\n if (!kind.includes(\"charge\") && !kind.includes(\"payment\")) {\n return false;\n }\n const candidates = [item.tx_hash, item.user_operation_hash, item.submitted_hash]\n .map((h) => String(h ?? \"\").toLowerCase())\n .filter((h) => h.length > 0);\n return candidates.includes(lookupHash);\n });\n if (found) {\n return parse_embedded_wallet_charge({}, { receipt: found });\n }\n if (remaining != null) {\n remaining -= remaining == null ? 0 : Math.max(1, Math.min(remaining, 100));\n if (remaining <= 0) {\n break;\n }\n }\n cursor = stringOrNull(data.next_cursor);\n if (!cursor || seenCursors.has(cursor)) {\n break;\n }\n seenCursors.add(cursor);\n }\n throw new SiglumeNotFoundError(`Embedded wallet charge not found: ${normalizedTxHash}`);\n }\n\n async get_cross_currency_quote(options: {\n from_currency: string;\n to_currency: string;\n source_amount_minor: number;\n slippage_bps?: number;\n }): Promise<CrossCurrencyQuote> {\n const from_currency = String(options.from_currency ?? \"\").trim().toUpperCase();\n const to_currency = String(options.to_currency ?? \"\").trim().toUpperCase();\n if (!from_currency) {\n throw new SiglumeClientError(\"from_currency is required.\");\n }\n if (!to_currency) {\n throw new SiglumeClientError(\"to_currency is required.\");\n }\n if (!Number.isFinite(options.source_amount_minor)) {\n throw new SiglumeClientError(\"source_amount_minor must be a finite number.\");\n }\n const source_amount_minor = Math.trunc(options.source_amount_minor);\n if (source_amount_minor <= 0) {\n throw new SiglumeClientError(\"source_amount_minor must be positive.\");\n }\n const slippage_input = options.slippage_bps ?? 100;\n if (!Number.isFinite(slippage_input)) {\n throw new SiglumeClientError(\"slippage_bps must be a finite number.\");\n }\n const slippage_bps = Math.max(0, Math.min(Math.trunc(slippage_input), 5000));\n const [data] = await this.request(\"POST\", \"/market/web3/swap/quote\", {\n json_body: {\n sell_token: from_currency,\n buy_token: to_currency,\n amount_minor: source_amount_minor,\n slippage_bps,\n },\n });\n return parse_cross_currency_quote(data);\n }\n\n private async resolveOwnerOperationAgentId(agent_id?: string): Promise<string> {\n const resolvedAgentId = String(agent_id ?? \"\").trim();\n if (resolvedAgentId) {\n return resolvedAgentId;\n }\n const [data] = await this.request(\"GET\", \"/me/agent\");\n // `/me/agent` may return the identifier under either `agent_id`\n // (current contract) or the legacy `id` field. parseAgent already\n // accepts both; mirror that here so callers that rely on the\n // omitted-`agent_id` path do not hard-fail against servers still\n // emitting the legacy shape.\n const agentIdFromMe =\n stringOrNull(data.agent_id) ?? stringOrNull(data.id);\n if (agentIdFromMe) {\n return agentIdFromMe;\n }\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n\n private async requestOwnerOperation(\n agent_id: string,\n operation_key: string,\n params: Record<string, unknown> = {},\n options: { lang?: string } = {},\n ): Promise<RequestMetaTuple> {\n const normalizedAgentId = String(agent_id ?? \"\").trim();\n const normalizedKey = String(operation_key ?? \"\").trim();\n if (!normalizedAgentId) {\n throw new SiglumeClientError(\"agent_id is required.\");\n }\n if (!normalizedKey) {\n throw new SiglumeClientError(\"operation_key is required.\");\n }\n return this.request(\"POST\", `/owner/agents/${normalizedAgentId}/operations/execute`, {\n json_body: {\n operation: normalizedKey,\n params: toRecord(params),\n lang: String(options.lang ?? \"en\").trim().toLowerCase() === \"ja\" ? \"ja\" : \"en\",\n },\n });\n }\n\n private async request(method: string, path: string, options: RequestOptions = {}): Promise<RequestMetaTuple> {\n const [data, meta] = await this.requestAny(method, path, options);\n if (!isRecord(data)) {\n throw new SiglumeClientError(\"Expected the Siglume API response body to be an object.\");\n }\n return [data, meta];\n }\n\n private async requestAny(method: string, path: string, options: RequestOptions = {}): Promise<RequestAnyTuple> {\n const url = buildUrl(this.base_url, path, options.params);\n const headers = new Headers({\n Authorization: `Bearer ${this.api_key}`,\n Accept: \"application/json\",\n \"User-Agent\": \"siglume-api-sdk-ts/0.7.6\",\n });\n if (options.headers) {\n for (const [key, value] of Object.entries(options.headers)) {\n headers.set(key, value);\n }\n }\n let body: string | undefined;\n if (options.json_body) {\n headers.set(\"Content-Type\", \"application/json\");\n body = JSON.stringify(toJsonable(options.json_body));\n }\n\n for (let attempt = 0; attempt < this.max_retries; attempt += 1) {\n const controller = new AbortController();\n const timeoutHandle = setTimeout(() => controller.abort(), this.timeout_ms);\n try {\n const response = await this.fetchImpl(url, {\n method,\n headers,\n body,\n signal: controller.signal,\n });\n clearTimeout(timeoutHandle);\n const text = response.status === 204 ? \"\" : await response.text();\n const parsed = text ? this.safeParseJson(text) : {};\n const envelope = isRecord(parsed) ? parsed : {};\n const data = Array.isArray(envelope.data)\n ? envelope.data.map((item) => cloneJsonLike(item))\n : isRecord(envelope.data)\n ? envelope.data\n : isRecord(parsed)\n ? parsed\n : Array.isArray(parsed)\n ? parsed.map((item) => cloneJsonLike(item))\n : {};\n const meta: EnvelopeMeta = isRecord(envelope.meta)\n ? {\n request_id: stringOrNull(envelope.meta.request_id),\n trace_id: stringOrNull(envelope.meta.trace_id),\n }\n : {\n request_id: stringOrNull(response.headers.get(\"x-request-id\")),\n trace_id: stringOrNull(response.headers.get(\"x-trace-id\")),\n };\n\n if (response.ok) {\n return [data, meta];\n }\n\n if (RETRYABLE_STATUS_CODES.has(response.status) && attempt + 1 < this.max_retries) {\n await sleep(parseRetryAfter(response.headers.get(\"Retry-After\")) ?? (250 * (2 ** attempt)));\n continue;\n }\n\n const errorBlock = isRecord(envelope.error) ? envelope.error : {};\n const message = String(\n errorBlock.message ??\n (isRecord(parsed) ? parsed.message : undefined) ??\n response.statusText ??\n \"Siglume API request failed.\",\n );\n const error_code = stringOrNull(errorBlock.code) ?? undefined;\n if (response.status === 404) {\n throw new SiglumeNotFoundError(message);\n }\n throw new SiglumeAPIError(message, {\n status_code: response.status,\n error_code,\n trace_id: meta.trace_id,\n request_id: meta.request_id,\n details: toRecord(errorBlock.details),\n response_body: parsed,\n });\n } catch (error) {\n clearTimeout(timeoutHandle);\n if (error instanceof SiglumeAPIError || error instanceof SiglumeNotFoundError) {\n throw error;\n }\n if (attempt + 1 < this.max_retries) {\n await sleep(250 * (2 ** attempt));\n continue;\n }\n if (error instanceof Error) {\n throw new SiglumeClientError(error.message);\n }\n throw new SiglumeClientError(\"Siglume request failed.\");\n }\n }\n throw new SiglumeClientError(\"Siglume request failed after retries.\");\n }\n\n private safeParseJson(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return {};\n }\n }\n\n private agentHeaders(): Record<string, string> {\n if (!this.agent_key) {\n throw new SiglumeClientError(\"agent_key is required for agent.* routes. Pass agent_key when constructing SiglumeClient.\");\n }\n return { \"X-Agent-Key\": this.agent_key };\n }\n}\n\nfunction cloneJsonLike(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((item) => cloneJsonLike(item));\n }\n if (isRecord(value)) {\n return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, cloneJsonLike(item)]));\n }\n return value;\n}\n","import { DEFAULT_SIGLUME_API_BASE, SiglumeClient, type SiglumeClientOptions } from \"./client\";\nimport { SiglumeAPIError, SiglumeClientError, SiglumeNotFoundError } from \"./errors\";\nimport type { CursorPage, EnvelopeMeta, UsageEventRecord } from \"./types\";\nimport { isRecord, parseRetryAfter, sleep, stringOrNull, toJsonable, toRecord } from \"./utils\";\n\ntype FetchLike = typeof fetch;\ntype RequestOptions = {\n params?: Record<string, string | number | boolean | undefined | null>;\n json_body?: Record<string, unknown>;\n};\ntype RequestMetaTuple = [Record<string, unknown>, EnvelopeMeta];\n\nconst RETRYABLE_STATUS_CODES = new Set([429, 500, 502, 503, 504]);\nconst MAX_BATCH_SIZE = 1000;\nconst INTEGER_RE = /^-?\\d+$/;\n\nexport interface UsageRecord {\n capability_key: string;\n dimension: string;\n units: number;\n external_id: string;\n occurred_at_iso: string;\n agent_id?: string;\n}\n\nexport interface MeterRecordResult {\n accepted: boolean;\n external_id: string;\n server_id?: string | null;\n replayed: boolean;\n capability_key?: string | null;\n agent_id?: string | null;\n period_key?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface MeteringInvoiceLinePreview {\n price_model: string;\n billable_units: number;\n unit_amount_minor: number;\n subtotal_minor: number;\n currency: string;\n}\n\nexport interface MeteringSimulationResult {\n experimental: boolean;\n usage_record: UsageRecord;\n invoice_line_preview: MeteringInvoiceLinePreview | null;\n}\n\nexport type MeterClientOptions = SiglumeClientOptions;\n\n/**\n * Experimental analytics / pre-billing wrapper for usage-event ingest.\n */\nexport class MeterClient {\n readonly experimental = true;\n private readonly client: SiglumeClient;\n private readonly api_key: string;\n private readonly base_url: string;\n private readonly timeout_ms: number;\n private readonly max_retries: number;\n private readonly fetchImpl: FetchLike;\n\n constructor(options: MeterClientOptions) {\n this.client = new SiglumeClient(options);\n this.api_key = this.client.api_key;\n this.base_url = (options.base_url ?? DEFAULT_SIGLUME_API_BASE).replace(/\\/+$/, \"\");\n this.timeout_ms = Math.max(1, options.timeout_ms ?? 15_000);\n this.max_retries = Math.max(1, Math.trunc(options.max_retries ?? 3));\n this.fetchImpl = options.fetch ?? fetch;\n }\n\n close(): void {\n this.client.close();\n }\n\n async record(record: UsageRecord): Promise<MeterRecordResult> {\n const [result] = await this.record_batch([record]);\n if (!result) {\n throw new SiglumeClientError(\"Siglume usage metering response did not include any results.\");\n }\n return result;\n }\n\n async record_batch(records: UsageRecord[]): Promise<MeterRecordResult[]> {\n const normalized = records.map((record) => normalizeUsageRecord(record));\n if (normalized.length === 0) {\n return [];\n }\n\n const results: MeterRecordResult[] = [];\n for (let start = 0; start < normalized.length; start += MAX_BATCH_SIZE) {\n const chunk = normalized.slice(start, start + MAX_BATCH_SIZE);\n const [data] = await this.request(\"POST\", \"/market/usage-events\", {\n json_body: { events: chunk },\n });\n if (!Array.isArray(data.items)) {\n throw new SiglumeClientError(\"Siglume usage metering response did not include an items array.\");\n }\n for (const item of data.items) {\n if (isRecord(item)) {\n results.push(parseMeterRecordResult(item));\n }\n }\n }\n return results;\n }\n\n async list_usage_events(options: {\n capability_key?: string;\n agent_id?: string;\n outcome?: string;\n environment?: string;\n period_key?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<CursorPage<UsageEventRecord>> {\n return this.client.get_usage(options);\n }\n\n private async request(method: string, path: string, options: RequestOptions = {}): Promise<RequestMetaTuple> {\n const url = buildUrl(this.base_url, path, options.params);\n const headers = new Headers({\n Authorization: `Bearer ${this.api_key}`,\n Accept: \"application/json\",\n \"User-Agent\": \"siglume-api-sdk-ts/0.7.6\",\n });\n let body: string | undefined;\n if (options.json_body) {\n headers.set(\"Content-Type\", \"application/json\");\n body = JSON.stringify(toJsonable(options.json_body));\n }\n\n for (let attempt = 0; attempt < this.max_retries; attempt += 1) {\n const controller = new AbortController();\n const timeoutHandle = setTimeout(() => controller.abort(), this.timeout_ms);\n try {\n const response = await this.fetchImpl(url, {\n method,\n headers,\n body,\n signal: controller.signal,\n });\n clearTimeout(timeoutHandle);\n const text = response.status === 204 ? \"\" : await response.text();\n const parsed = safeParseJson(text);\n const envelope = isRecord(parsed) ? parsed : {};\n const data = isRecord(envelope.data) ? envelope.data : isRecord(parsed) ? parsed : {};\n const meta: EnvelopeMeta = isRecord(envelope.meta)\n ? {\n request_id: stringOrNull(envelope.meta.request_id),\n trace_id: stringOrNull(envelope.meta.trace_id),\n }\n : {\n request_id: stringOrNull(response.headers.get(\"x-request-id\")),\n trace_id: stringOrNull(response.headers.get(\"x-trace-id\")),\n };\n if (response.ok) {\n return [data, meta];\n }\n if (RETRYABLE_STATUS_CODES.has(response.status) && attempt + 1 < this.max_retries) {\n await sleep(parseRetryAfter(response.headers.get(\"Retry-After\")) ?? (250 * (2 ** attempt)));\n continue;\n }\n const errorBlock = isRecord(envelope.error) ? envelope.error : {};\n const message = String(\n errorBlock.message ??\n (isRecord(parsed) ? parsed.message : undefined) ??\n response.statusText ??\n \"Siglume API request failed.\",\n );\n const errorCode = stringOrNull(errorBlock.code) ?? undefined;\n if (response.status === 404) {\n throw new SiglumeNotFoundError(message);\n }\n throw new SiglumeAPIError(message, {\n status_code: response.status,\n error_code: errorCode,\n trace_id: meta.trace_id ?? undefined,\n request_id: meta.request_id ?? undefined,\n details: toRecord(errorBlock.details),\n response_body: parsed,\n });\n } catch (error) {\n clearTimeout(timeoutHandle);\n if (error instanceof SiglumeAPIError || error instanceof SiglumeNotFoundError) {\n throw error;\n }\n if (attempt + 1 < this.max_retries) {\n await sleep(250 * (2 ** attempt));\n continue;\n }\n if (error instanceof Error) {\n throw new SiglumeClientError(error.message);\n }\n throw new SiglumeClientError(\"Siglume request failed.\");\n }\n }\n throw new SiglumeClientError(\"Siglume request failed after retries.\");\n }\n}\n\nexport function normalizeUsageRecord(record: UsageRecord): UsageRecord {\n const capability_key = String(record.capability_key ?? \"\").trim();\n if (!capability_key) {\n throw new SiglumeClientError(\"UsageRecord.capability_key is required.\");\n }\n const dimension = String(record.dimension ?? \"\").trim();\n if (!dimension) {\n throw new SiglumeClientError(\"UsageRecord.dimension is required.\");\n }\n const external_id = String(record.external_id ?? \"\").trim();\n if (!external_id) {\n throw new SiglumeClientError(\"UsageRecord.external_id is required.\");\n }\n const occurred_at_iso = normalizeRfc3339(record.occurred_at_iso);\n const units = coerceNonNegativeInteger(record.units, \"UsageRecord.units\");\n const agent_id = stringOrNull(record.agent_id) ?? undefined;\n return {\n capability_key,\n dimension,\n units,\n external_id,\n occurred_at_iso,\n ...(agent_id ? { agent_id } : {}),\n };\n}\n\nfunction parseMeterRecordResult(data: Record<string, unknown>): MeterRecordResult {\n return {\n accepted: Boolean(data.accepted ?? false),\n external_id: String(data.external_id ?? data.idempotency_key ?? \"\"),\n server_id: stringOrNull(data.server_id ?? data.usage_event_id ?? data.id),\n replayed: Boolean(data.replayed ?? false),\n capability_key: stringOrNull(data.capability_key),\n agent_id: stringOrNull(data.agent_id),\n period_key: stringOrNull(data.period_key),\n raw: { ...data },\n };\n}\n\nfunction coerceNonNegativeInteger(value: unknown, fieldName: string): number {\n if (typeof value === \"number\" && Number.isInteger(value)) {\n if (value < 0) {\n throw new SiglumeClientError(`${fieldName} must be a non-negative integer.`);\n }\n return value;\n }\n if (typeof value === \"string\" && INTEGER_RE.test(value.trim())) {\n const parsed = Number.parseInt(value.trim(), 10);\n if (parsed < 0) {\n throw new SiglumeClientError(`${fieldName} must be a non-negative integer.`);\n }\n return parsed;\n }\n throw new SiglumeClientError(`${fieldName} must be a non-negative integer.`);\n}\n\nfunction normalizeRfc3339(value: unknown): string {\n const text = String(value ?? \"\").trim();\n if (!text) {\n throw new SiglumeClientError(\"UsageRecord.occurred_at_iso is required.\");\n }\n const parsed = Date.parse(text);\n if (Number.isNaN(parsed) || !(/[zZ]$|[+-]\\d{2}:\\d{2}$/.test(text))) {\n throw new SiglumeClientError(\"UsageRecord.occurred_at_iso must be RFC3339 with timezone.\");\n }\n return text;\n}\n\nfunction buildUrl(\n baseUrl: string,\n path: string,\n params: Record<string, string | number | boolean | undefined | null> = {},\n): string {\n const normalizedPath = `/${path.replace(/^\\/+/, \"\")}`;\n const url = new URL(baseUrl + normalizedPath);\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined || value === null || value === \"\") {\n continue;\n }\n url.searchParams.set(key, String(value));\n }\n return url.toString();\n}\n\nfunction safeParseJson(text: string): unknown {\n if (!text) {\n return {};\n }\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return {};\n }\n}\n","import { Command, CommanderError } from \"commander\";\n\nimport { SiglumeProjectError } from \"../errors\";\nimport { renderJson } from \"../utils\";\nimport {\n createSupportCaseReport,\n diffJsonFiles,\n getUsageReport,\n listOperationCatalog,\n runPreflight,\n runHarness,\n runRegistration,\n scoreProject,\n validateProject,\n writeInitTemplate,\n writeOperationTemplate,\n} from \"./project\";\nimport type { CliProjectDependencies } from \"./project\";\n\nexport interface CliRunDependencies extends CliProjectDependencies {\n stdout?: (line: string) => void;\n stderr?: (line: string) => void;\n}\n\nfunction emit(output: ((line: string) => void) | undefined, line: string): void {\n (output ?? console.log)(line);\n}\n\nfunction renderOperationTable(operations: Array<Record<string, unknown>>): string[] {\n const rows = operations.map((item) => [\n String(item.operation_key ?? \"\"),\n String(item.permission_class ?? \"read-only\"),\n String(item.summary ?? \"\"),\n ]);\n const headers = [\"operation_key\", \"permission_class\", \"summary\"];\n const widths = headers.map((header, index) =>\n Math.max(header.length, ...rows.map((row) => row[index]?.length ?? 0)),\n );\n return [\n headers.map((header, index) => header.padEnd(widths[index] ?? header.length)).join(\" \"),\n widths.map((width) => \"-\".repeat(width)).join(\" \"),\n ...rows.map((row) => row.map((cell, index) => cell.padEnd(widths[index] ?? cell.length)).join(\" \")),\n ];\n}\n\nexport async function runCli(argv: string[], deps: CliRunDependencies = {}): Promise<number> {\n const stdout = deps.stdout;\n const stderr = deps.stderr ?? console.error;\n let completionExitCode = 0;\n const program = new Command()\n .name(\"siglume\")\n .description(\"Siglume developer CLI\")\n .showHelpAfterError()\n .exitOverride();\n\n program\n .command(\"init\")\n .option(\"--template <template>\", \"starter template\")\n .option(\"--from-operation <operation_key>\", \"generate an AppAdapter wrapper for a first-party owner operation\")\n .option(\"--list-operations\", \"list owner operations available for template generation\", false)\n .option(\"--capability-key <capability_key>\", \"override the generated manifest capability_key\")\n .option(\"--agent-id <agent_id>\", \"owner agent_id used to resolve operation metadata\")\n .option(\"--lang <lang>\", \"catalog language for live owner operations\", \"en\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"destination\")\n .action(async (\n path: string,\n options: {\n template?: string;\n fromOperation?: string;\n [\"from-operation\"]?: string;\n listOperations?: boolean;\n [\"list-operations\"]?: boolean;\n capabilityKey?: string;\n [\"capability-key\"]?: string;\n agentId?: string;\n [\"agent-id\"]?: string;\n lang?: string;\n json?: boolean;\n },\n ) => {\n const template = options.template as \"echo\" | \"price-compare\" | \"publisher\" | \"payment\" | undefined;\n const operationKey = options.fromOperation;\n const listOperationsFlag = Boolean(options.listOperations);\n if (listOperationsFlag && operationKey) {\n throw new SiglumeProjectError(\"Choose either --list-operations or --from-operation, not both.\");\n }\n if (listOperationsFlag && options.capabilityKey) {\n throw new SiglumeProjectError(\"--capability-key is only valid together with --from-operation.\");\n }\n if (template && (listOperationsFlag || operationKey)) {\n throw new SiglumeProjectError(\"--template cannot be combined with --list-operations or --from-operation.\");\n }\n\n if (listOperationsFlag) {\n const payload: Record<string, unknown> = {\n ok: true,\n ...(await listOperationCatalog(\n { agent_id: options.agentId, lang: options.lang },\n deps,\n )),\n };\n if (options.json) {\n emit(stdout, renderJson(payload));\n return;\n }\n const warning = typeof payload.warning === \"string\" ? payload.warning : \"\";\n if (warning) {\n emit(stderr, warning);\n }\n emit(stdout, `Owner operation catalog (${String(payload.source ?? \"fallback\")})`);\n const operations = Array.isArray(payload.operations)\n ? payload.operations.filter((item: unknown): item is Record<string, unknown> => Boolean(item && typeof item === \"object\"))\n : [];\n renderOperationTable(\n operations,\n ).forEach((line) => emit(stdout, line));\n return;\n }\n\n if (operationKey) {\n const result = await writeOperationTemplate(\n operationKey,\n path,\n {\n capability_key: options.capabilityKey,\n agent_id: options.agentId,\n lang: options.lang,\n },\n deps,\n );\n const payload = {\n ok: true,\n mode: \"from-operation\",\n operation: toJsonSafeRecord(result.operation),\n files: result.files,\n report: result.report,\n };\n if (options.json) {\n emit(stdout, renderJson(payload));\n return;\n }\n if (result.report.warning) {\n emit(stderr, String(result.report.warning));\n }\n const quality = (result.report.quality ?? {}) as { grade?: string; overall_score?: number };\n emit(stdout, `Generated wrapper for '${result.operation.operation_key}'.`);\n emit(stdout, `grade: ${quality.grade ?? \"?\"} (${quality.overall_score ?? \"?\"}/100)`);\n result.files.forEach((filePath) => emit(stdout, `- ${filePath}`));\n return;\n }\n\n const resolvedTemplate = (template ?? \"echo\") as \"echo\" | \"price-compare\" | \"publisher\" | \"payment\";\n const files = await writeInitTemplate(resolvedTemplate, path);\n const payload = { ok: true, mode: \"template\", template: resolvedTemplate, files };\n if (options.json) {\n emit(stdout, renderJson(payload));\n return;\n }\n emit(stdout, `Initialized Siglume starter template '${resolvedTemplate}'.`);\n files.forEach((filePath) => emit(stdout, `- ${filePath}`));\n });\n\n program\n .command(\"diff\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"<old_json>\", \"previous manifest/tool manual JSON\")\n .argument(\"<new_json>\", \"next manifest/tool manual JSON\")\n .action(async (oldPath: string, newPath: string, options: { json?: boolean }) => {\n const report = await diffJsonFiles(oldPath, newPath);\n if (options.json) {\n emit(stdout, renderJson(report));\n } else {\n const changes = (report.changes as Array<Record<string, unknown>>) ?? [];\n if (changes.length === 0) {\n emit(stdout, \"No differences detected.\");\n } else {\n for (const level of [\"breaking\", \"warning\", \"info\"]) {\n const items = changes.filter((item) => item.level === level);\n if (items.length === 0) {\n continue;\n }\n emit(stdout, level.toUpperCase());\n items.forEach((item) => emit(stdout, `- ${String(item.path)}: ${String(item.message)}`));\n emit(stdout, \"\");\n }\n }\n }\n completionExitCode = Number(report.exit_code ?? 0);\n });\n\n program\n .command(\"validate\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"project path\")\n .action(async (path: string, options: { json?: boolean }) => {\n const report = await validateProject(path, deps);\n if (options.json) {\n emit(stdout, renderJson(report));\n } else {\n emit(stdout, report.ok ? \"Validation passed.\" : \"Validation failed.\");\n emit(stdout, `Adapter: ${report.adapter_path}`);\n }\n if (!report.ok) {\n throw new SiglumeProjectError(\"Validation failed.\");\n }\n });\n\n program\n .command(\"test\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"project path\")\n .action(async (path: string, options: { json?: boolean }) => {\n const report = await runHarness(path);\n if (options.json) {\n emit(stdout, renderJson(report));\n } else {\n emit(stdout, report.ok ? \"Harness passed.\" : \"Harness failed.\");\n emit(stdout, `Adapter: ${report.adapter_path}`);\n }\n if (!report.ok) {\n throw new SiglumeProjectError(\"Harness failed.\");\n }\n });\n\n program\n .command(\"score\")\n .option(\"--remote\", \"use the platform preview scorer\", false)\n .option(\"--offline\", \"use the local parity scorer without network access\", false)\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"project path\")\n .action(async (path: string, options: { remote?: boolean; offline?: boolean; json?: boolean }) => {\n const mode = options.offline ? \"offline\" : \"remote\";\n const report = await scoreProject(path, mode, deps);\n if (options.json) {\n emit(stdout, renderJson(report));\n } else {\n const quality = report.quality as { grade: string; overall_score: number };\n emit(stdout, report.ok ? \"Score passed.\" : \"Score failed.\");\n emit(stdout, `${mode === \"remote\" ? \"Remote\" : \"Offline\"} quality: ${quality.grade} (${quality.overall_score}/100)`);\n }\n if (!report.ok) {\n throw new SiglumeProjectError(\"Score failed.\");\n }\n });\n\n program\n .command(\"preflight\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"project path\")\n .action(async (path: string, options: { json?: boolean }) => {\n const report = await runPreflight(path, deps);\n if (options.json) {\n emit(stdout, renderJson(report));\n return;\n }\n emit(stdout, \"Preflight passed.\");\n const preflight = report.registration_preflight as { remote_quality?: { grade?: string; overall_score?: number } } | undefined;\n if (preflight?.remote_quality) {\n emit(stdout, `preflight_quality: ${preflight.remote_quality.grade} (${preflight.remote_quality.overall_score}/100)`);\n }\n if (report.runtime_validation_path) emit(stdout, `runtime_validation_path: ${String(report.runtime_validation_path)}`);\n if (report.oauth_credentials_path) emit(stdout, `oauth_credentials_path: ${String(report.oauth_credentials_path)}`);\n });\n\n program\n .command(\"register\")\n .option(\"--confirm\", \"explicitly confirm the registration; this is the default unless --draft-only is set\", false)\n .option(\"--draft-only\", \"create or refresh the draft without confirming publication\", false)\n .option(\"--submit-review\", \"legacy alias: publish immediately if your environment still routes through submit-review\", false)\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .argument(\"[path]\", \".\", \"project path\")\n .action(async (\n path: string,\n options: { confirm?: boolean; draftOnly?: boolean; submitReview?: boolean; json?: boolean; [\"draft-only\"]?: boolean; [\"submit-review\"]?: boolean },\n ) => {\n const draftOnly = Boolean(options.draftOnly);\n if (draftOnly && options.confirm) {\n throw new SiglumeProjectError(\"--draft-only cannot be combined with --confirm.\");\n }\n if (draftOnly && options.submitReview) {\n throw new SiglumeProjectError(\"--draft-only cannot be combined with --submit-review.\");\n }\n const shouldConfirm = Boolean(options.confirm) || (!draftOnly && !options.submitReview);\n const report = await runRegistration(path, { confirm: shouldConfirm, draft_only: draftOnly, submit_review: options.submitReview }, deps);\n if (options.json) {\n emit(stdout, renderJson(report));\n } else {\n const receipt = report.receipt as {\n listing_id: string;\n status: string;\n registration_mode?: string | null;\n listing_status?: string | null;\n oauth_status?: { configured?: boolean } | null;\n review_url?: string | null;\n trace_id?: string | null;\n request_id?: string | null;\n };\n const published = Boolean(report.confirmation || report.review);\n if (published && receipt.registration_mode === \"upgrade\") {\n emit(stdout, \"Upgrade registered.\");\n } else if (published) {\n emit(stdout, \"Registration accepted.\");\n } else if (receipt.registration_mode === \"upgrade\") {\n emit(stdout, \"Upgrade staged.\");\n } else if (receipt.registration_mode === \"refresh\") {\n emit(stdout, \"Draft refreshed.\");\n } else {\n emit(stdout, \"Draft listing created.\");\n }\n emit(stdout, `listing_id: ${receipt.listing_id}`);\n emit(stdout, `receipt_status: ${receipt.status}`);\n if (receipt.listing_status) emit(stdout, `listing_status: ${receipt.listing_status}`);\n if (receipt.oauth_status) emit(stdout, `oauth_configured: ${Boolean(receipt.oauth_status.configured)}`);\n if (receipt.review_url) emit(stdout, `review_url: ${receipt.review_url}`);\n if (receipt.trace_id) emit(stdout, `trace_id: ${receipt.trace_id}`);\n if (receipt.request_id) emit(stdout, `request_id: ${receipt.request_id}`);\n if (report.confirmation) {\n const confirmation = report.confirmation as {\n status?: string | null;\n release?: { release_status?: string | null } | null;\n };\n emit(stdout, \"Listing published.\");\n if (confirmation.status) emit(stdout, `confirmation_status: ${confirmation.status}`);\n if (confirmation.release?.release_status) emit(stdout, `release_status: ${confirmation.release.release_status}`);\n } else if (report.review) {\n const review = report.review as { status?: string | null };\n emit(stdout, \"Listing published via legacy submit-review alias.\");\n if (review.status) emit(stdout, `publish_status: ${review.status}`);\n }\n const preflight = report.registration_preflight as { remote_quality?: { grade?: string; overall_score?: number } } | undefined;\n if (preflight?.remote_quality) {\n emit(stdout, `preflight_quality: ${preflight.remote_quality.grade} (${preflight.remote_quality.overall_score}/100)`);\n }\n }\n });\n\n const support = program.command(\"support\").description(\"Support-case workflows.\");\n support\n .command(\"create\")\n .requiredOption(\"--subject <subject>\", \"short summary of the issue\")\n .requiredOption(\"--body <body>\", \"detailed support case body\")\n .option(\"--trace-id <trace_id>\", \"attach a trace_id from a failed API flow\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .action(async (options: { subject: string; body: string; traceId?: string; [\"trace-id\"]?: string; json?: boolean }) => {\n const report = await createSupportCaseReport(\n { subject: options.subject, body: options.body, trace_id: options.traceId },\n deps,\n );\n if (options.json) {\n emit(stdout, renderJson(report));\n return;\n }\n const supportCase = report.case as { support_case_id: string; status: string };\n emit(stdout, \"Support case created.\");\n emit(stdout, `case_id: ${supportCase.support_case_id}`);\n emit(stdout, `status: ${supportCase.status}`);\n });\n\n program\n .command(\"usage\")\n .option(\"--capability <capability_key>\", \"filter by capability_key\")\n .option(\"--window <period_key>\", \"pass-through period_key sent to /market/usage\", \"30d\")\n .option(\"--json\", \"emit machine-readable JSON\", false)\n .action(async (options: { capability?: string; window: string; json?: boolean }) => {\n const report = await getUsageReport({ capability_key: options.capability, window: options.window }, deps);\n if (options.json) {\n emit(stdout, renderJson(report));\n return;\n }\n emit(stdout, `Usage events: ${report.count}`);\n });\n\n try {\n await program.parseAsync(argv, { from: \"user\" });\n return completionExitCode;\n } catch (error) {\n if (error instanceof SiglumeProjectError) {\n emit(stderr, error.message);\n return 1;\n }\n if (error instanceof CommanderError) {\n // Help / version displays carry exitCode 0; parse errors carry a non-zero code.\n // Commander exits are the only class whose exitCode we trust; everything else falls through.\n return typeof error.exitCode === \"number\" ? error.exitCode : 1;\n }\n // Node system errors (ENOENT, EACCES, ...) and any other uncaught throw\n // are real failures — never report success just because the object has a `code` field.\n emit(stderr, error instanceof Error ? error.message : String(error));\n return 1;\n }\n}\n\nfunction toJsonSafeRecord(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : { value: String(value) };\n}\n","import { existsSync } from \"node:fs\";\nimport { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { basename, extname, join, resolve } from \"node:path\";\n\nimport { createJiti } from \"jiti\";\n\nimport {\n AppAdapter,\n AppTestHarness,\n AppCategory,\n ApprovalMode,\n ChangeLevel,\n PermissionClass,\n PriceModel,\n diff_manifest,\n diff_tool_manual,\n score_tool_manual_offline,\n SettlementMode,\n SiglumeClient,\n ToolManualPermissionClass,\n validate_tool_manual,\n} from \"../index\";\nimport type {\n AppManifest,\n ExecutionResult,\n SiglumeClientShape,\n ToolManual,\n ToolManualIssue,\n} from \"../index\";\nimport { SiglumeProjectError } from \"../errors\";\nimport {\n DEFAULT_OPERATION_AGENT_ID,\n type OperationMetadata,\n buildOperationMetadata,\n defaultCapabilityKeyForOperation,\n fallbackOperationCatalog,\n} from \"../operations\";\nimport { isRecord, renderJson, toJsonable } from \"../utils\";\n\nconst TEMPLATE_NAMES = [\"echo\", \"price-compare\", \"publisher\", \"payment\"] as const;\ntype TemplateName = (typeof TEMPLATE_NAMES)[number];\n\nconst SUPPORTED_EXTENSIONS = new Set([\".ts\", \".tsx\", \".js\", \".mjs\", \".cjs\"]);\nconst CAPABILITY_KEY_RE = /^[a-z0-9][a-z0-9-]*[a-z0-9]$/;\nconst FALLBACK_OPERATION_WARNING =\n \"Using the bundled fallback owner-operation catalog because the live catalog is unavailable. Generated templates remain experimental until the platform operation catalog is reachable.\";\n\nexport interface LoadedProject {\n root_dir: string;\n adapter_path: string;\n app: AppAdapter;\n manifest: AppManifest;\n tool_manual_path?: string;\n tool_manual: Record<string, unknown>;\n runtime_validation_path?: string;\n runtime_validation?: Record<string, unknown>;\n oauth_credentials_path?: string;\n oauth_credentials?: Record<string, unknown> | unknown[];\n}\n\nexport interface CliProjectDependencies {\n env?: Record<string, string | undefined>;\n client_factory?: (api_key: string, base_url?: string) => SiglumeClientShape;\n}\n\nfunction defaultClientFactory(api_key: string, base_url?: string): SiglumeClientShape {\n return new SiglumeClient({ api_key, base_url });\n}\n\nasync function createClient(deps: CliProjectDependencies = {}, base_url?: string): Promise<SiglumeClientShape> {\n if (deps.client_factory) {\n return deps.client_factory(deps.env?.SIGLUME_API_KEY ?? \"siglume_test_key\", base_url);\n }\n return defaultClientFactory(await resolveApiKey(deps.env), base_url);\n}\n\nfunction toolManualToDict(manual: ToolManual | Record<string, unknown>): Record<string, unknown> {\n return { ...(toJsonable(manual) as Record<string, unknown>) };\n}\n\nfunction remoteQualityOk(report: { validation_ok?: boolean; publishable?: boolean | null; grade: string }): boolean {\n const validationOk = report.validation_ok ?? true;\n const publishable = report.publishable ?? (report.grade === \"A\" || report.grade === \"B\");\n return Boolean(validationOk) && Boolean(publishable);\n}\n\nfunction sampleValueForSchema(schema: Record<string, unknown>): unknown {\n switch (schema.type) {\n case \"integer\":\n return 1;\n case \"number\":\n return 1.0;\n case \"boolean\":\n return true;\n case \"array\":\n return [];\n case \"object\":\n return {};\n default:\n return \"example\";\n }\n}\n\nfunction buildRuntimeValidationTemplate(toolManual: Record<string, unknown>): Record<string, unknown> {\n const inputSchema = isRecord(toolManual.input_schema) ? toolManual.input_schema : {};\n const properties = isRecord(inputSchema.properties) ? inputSchema.properties : {};\n const required = Array.isArray(inputSchema.required) ? inputSchema.required : [];\n const requestPayload: Record<string, unknown> = {};\n for (const fieldName of required) {\n if (typeof fieldName !== \"string\") continue;\n const fieldSchema = isRecord(properties[fieldName]) ? properties[fieldName] : {};\n requestPayload[fieldName] = sampleValueForSchema(fieldSchema);\n }\n if (toolManual.dry_run_supported === true) {\n requestPayload.dry_run = requestPayload.dry_run ?? true;\n }\n\n const outputSchema = isRecord(toolManual.output_schema) ? toolManual.output_schema : {};\n const outputRequired = Array.isArray(outputSchema.required) ? outputSchema.required : [];\n const expectedFields = outputRequired.filter((field): field is string => typeof field === \"string\");\n\n return {\n public_base_url: \"https://api.example.com\",\n healthcheck_url: \"https://api.example.com/health\",\n invoke_url: \"https://api.example.com/invoke\",\n invoke_method: \"POST\",\n test_auth_header_name: \"X-Siglume-Review-Key\",\n test_auth_header_value: \"replace-with-dedicated-review-key\",\n request_payload: requestPayload,\n expected_response_fields: expectedFields.length > 0 ? expectedFields : [\"summary\"],\n timeout_seconds: 10,\n };\n}\n\nexport function buildToolManualTemplate(manifest: AppManifest): Record<string, unknown> {\n const jobText = String(manifest.job_to_be_done || manifest.name || manifest.capability_key.replaceAll(\"-\", \" \"));\n const summaryText = String(\n manifest.short_description || manifest.job_to_be_done || manifest.name || manifest.capability_key.replaceAll(\"-\", \" \"),\n );\n const toolName = manifest.capability_key.replaceAll(\"-\", \"_\");\n const summary = manifest.short_description || manifest.job_to_be_done || `Use this tool to ${manifest.capability_key.replaceAll(\"-\", \" \")}.`;\n const manual: Record<string, unknown> = {\n tool_name: toolName,\n job_to_be_done: jobText || `Use ${manifest.name} to complete the requested task.`,\n summary_for_model: summary,\n trigger_conditions: [\n `The owner asks for help with ${jobText.toLowerCase()}`,\n `A workflow needs ${manifest.name} to complete a specific external task`,\n `The request matches the capability described as ${summaryText}`,\n ],\n do_not_use_when: [\n \"The request is unrelated to this tool's documented capability\",\n \"A required connected account or required input is missing\",\n ],\n permission_class: toolManualPermissionClass(manifest.permission_class),\n dry_run_supported: Boolean(manifest.dry_run_supported),\n requires_connected_accounts: manifest.required_connected_accounts ?? [],\n input_schema: {\n type: \"object\",\n properties: {\n query: {\n type: \"string\",\n description: \"Natural-language request describing what the tool should do.\",\n },\n },\n required: [\"query\"],\n additionalProperties: false,\n },\n output_schema: {\n type: \"object\",\n properties: {\n summary: {\n type: \"string\",\n description: \"A concise summary of the result returned by the tool.\",\n },\n result: {\n type: \"object\",\n description: \"Structured result payload returned by the tool.\",\n },\n },\n required: [\"summary\", \"result\"],\n additionalProperties: false,\n },\n usage_hints: [\"Use the result summary to explain the outcome in plain language.\"],\n result_hints: [\"Highlight the most important result field before showing raw details.\"],\n error_hints: [\"If execution fails, explain what input or connected account needs attention.\"],\n };\n\n if (manifest.permission_class === PermissionClass.ACTION || manifest.permission_class === PermissionClass.PAYMENT) {\n manual.approval_summary_template =\n manifest.permission_class === PermissionClass.ACTION\n ? `${manifest.name}: {query}`\n : `${manifest.name}: approve {query} for {amount_minor} {currency}`;\n manual.preview_schema = {\n type: \"object\",\n properties: {\n summary: {\n type: \"string\",\n description: \"Human-readable preview of what will happen.\",\n },\n },\n required: [\"summary\"],\n additionalProperties: false,\n };\n manual.idempotency_support = true;\n manual.side_effect_summary =\n manifest.permission_class === PermissionClass.ACTION\n ? `Using ${manifest.name} may create or modify an external resource.`\n : `Using ${manifest.name} may initiate a payment or settlement attempt.`;\n manual.jurisdiction = manifest.jurisdiction;\n }\n\n if (manifest.permission_class === PermissionClass.PAYMENT) {\n manual.output_schema = {\n type: \"object\",\n properties: {\n summary: {\n type: \"string\",\n description: \"A concise summary of the payment or quote result.\",\n },\n amount_usd: {\n type: \"number\",\n description: \"Total amount in USD for the quote or completed payment.\",\n },\n currency: {\n type: \"string\",\n description: \"Currency code for the quoted or charged amount.\",\n },\n payment_id: {\n type: \"string\",\n description: \"Provider or platform payment identifier when execution completes.\",\n },\n },\n required: [\"summary\", \"amount_usd\", \"currency\"],\n additionalProperties: false,\n };\n manual.quote_schema = {\n type: \"object\",\n properties: {\n amount_minor: {\n type: \"integer\",\n description: \"Quoted amount in minor currency units.\",\n },\n currency: {\n type: \"string\",\n description: \"Quoted currency code.\",\n },\n },\n required: [\"amount_minor\", \"currency\"],\n additionalProperties: false,\n };\n manual.currency = \"USD\";\n manual.settlement_mode = SettlementMode.STRIPE_CHECKOUT;\n manual.refund_or_cancellation_note = \"Explain the refund or cancellation policy for this payment flow.\";\n }\n\n return manual;\n}\n\nexport async function loadProject(path = \".\"): Promise<LoadedProject> {\n const target = resolve(path);\n const adapter_path = await findAdapterPath(target);\n const root_dir = resolve(adapter_path, \"..\");\n const app = await loadApp(adapter_path);\n const manifest = await app.manifest();\n const tool_manual_path = await findToolManualPath(root_dir);\n const tool_manual = tool_manual_path\n ? (JSON.parse(await readFile(tool_manual_path, \"utf8\")) as Record<string, unknown>)\n : buildToolManualTemplate(manifest);\n const runtime_validation_path = await findRuntimeValidationPath(root_dir);\n const runtime_validation = runtime_validation_path\n ? await loadJsonObject(runtime_validation_path, \"runtime_validation\")\n : undefined;\n const oauth_credentials_path = await findOauthCredentialsPath(root_dir);\n let oauth_credentials: Record<string, unknown> | unknown[] | undefined;\n if (oauth_credentials_path) {\n const parsed = JSON.parse(await readFile(oauth_credentials_path, \"utf8\")) as unknown;\n if (!isRecord(parsed) && !Array.isArray(parsed)) {\n throw new SiglumeProjectError(\"oauth_credentials must be a JSON object or array\");\n }\n oauth_credentials = parsed;\n }\n\n return {\n root_dir,\n adapter_path,\n app,\n manifest,\n tool_manual_path: tool_manual_path ?? undefined,\n tool_manual,\n runtime_validation_path: runtime_validation_path ?? undefined,\n runtime_validation,\n oauth_credentials_path: oauth_credentials_path ?? undefined,\n oauth_credentials,\n };\n}\n\nfunction isPlatformManagedRequirement(value: unknown): boolean {\n if (!isRecord(value)) return false;\n if (value.platform_managed === true) return true;\n const owner = String(\n value.managed_by ?? value.auth_managed_by ?? value.connection_owner ?? \"\",\n )\n .trim()\n .toLowerCase()\n .replaceAll(\"_\", \"-\");\n return owner === \"platform\" || owner === \"siglume\" || owner === \"siglume-platform\";\n}\n\n/**\n * Extract the opaque `provider_key` from a requirement entry.\n *\n * Returns the value VERBATIM  Eno lowercasing, no rewriting of\n * non-alphanumeric characters. `provider_key` is a contract-defined\n * opaque identifier used for OAuth flow routing; keys such as\n * `AzureAD_v2`, `microsoft/graph`, `foo.bar` must be transmitted\n * unchanged so the API contract recognizes them. The earlier\n * implementation normalized to `[a-z0-9-]+` and silently rewrote any\n * of those into `azuread-v2` / `microsoft-graph` / `foo-bar`, breaking\n * the contract-driven OAuth flow.\n *\n * Codex review on PR #194 surfaced the regression; mirrors the\n * Python-side fix in `siglume_api_sdk/cli/project.py`. Owner-field\n * normalization for the platform-managed-vs-third-party check happens\n * in `isPlatformManagedRequirement` and is unrelated to this opaque\n * provider_key value.\n */\nfunction oauthProviderKeyFromRequirement(value: unknown): string | null {\n if (isRecord(value)) {\n for (const key of [\"provider_key\", \"provider\", \"account_type\", \"name\"]) {\n const providerKey = oauthProviderKeyFromRequirement(value[key]);\n if (providerKey) return providerKey;\n }\n return null;\n }\n const raw = String(value ?? \"\").trim();\n return raw || null;\n}\n\nfunction requiredOauthProviders(requirements: unknown[] | undefined): string[] {\n const providers: string[] = [];\n for (const item of requirements ?? []) {\n if (!isPlatformManagedRequirement(item)) continue;\n const providerKey = oauthProviderKeyFromRequirement(item);\n if (!providerKey) {\n throw new SiglumeProjectError(\n \"required_connected_accounts platform-managed entries must include a provider_key\",\n );\n }\n if (providerKey && !providers.includes(providerKey)) {\n providers.push(providerKey);\n }\n }\n return providers;\n}\n\nfunction connectedAccountRequirementLabel(value: unknown): string {\n if (isRecord(value)) {\n for (const key of [\"provider_key\", \"provider\", \"account_type\", \"name\"]) {\n const label = String(value[key] ?? \"\").trim();\n if (label) return label;\n }\n return \"\";\n }\n return String(value ?? \"\").trim();\n}\n\nfunction oauthProviderRecordsMap(payload: Record<string, unknown> | unknown[] | undefined): Record<string, Record<string, unknown>> {\n if (!payload) {\n return {};\n }\n const items = Array.isArray(payload)\n ? payload\n : Array.isArray(payload.items)\n ? payload.items\n : [payload];\n const resolved: Record<string, Record<string, unknown>> = {};\n for (const [index, item] of items.entries()) {\n if (!isRecord(item)) {\n throw new SiglumeProjectError(`oauth_credentials[${index}] must be a JSON object.`);\n }\n const providerKey = oauthProviderKeyFromRequirement(item.provider_key ?? item.provider);\n if (!providerKey) {\n throw new SiglumeProjectError(`oauth_credentials[${index}].provider_key is required.`);\n }\n const authorizeUrl = String(item.authorize_url ?? item.authorization_url ?? item.auth_url ?? \"\").trim();\n const tokenUrl = String(item.token_url ?? \"\").trim();\n if (!authorizeUrl || !tokenUrl) {\n throw new SiglumeProjectError(\n `oauth_credentials[${index}] must include authorize_url and token_url.`,\n );\n }\n for (const [urlKey, urlValue] of Object.entries({\n authorize_url: authorizeUrl,\n token_url: tokenUrl,\n revoke_url: String(item.revoke_url ?? \"\").trim(),\n })) {\n if (urlValue && !urlValue.startsWith(\"https://\")) {\n throw new SiglumeProjectError(`oauth_credentials[${index}].${urlKey} must be an https URL.`);\n }\n }\n const clientId = String(item.client_id ?? \"\").trim();\n const clientSecret = String(item.client_secret ?? \"\").trim();\n if (!clientId || !clientSecret) {\n throw new SiglumeProjectError(`oauth_credentials[${index}] must include client_id and client_secret.`);\n }\n const rawScopes = item.required_scopes ?? item.scopes;\n let scopes: string[] = [];\n if (rawScopes == null) {\n scopes = [];\n } else if (!Array.isArray(rawScopes)) {\n throw new SiglumeProjectError(`oauth_credentials[${index}].required_scopes must be a JSON array.`);\n } else {\n scopes = rawScopes.map((scope) => String(scope ?? \"\").trim()).filter(Boolean);\n }\n const record: Record<string, unknown> = {\n provider_key: providerKey,\n client_id: clientId,\n client_secret: clientSecret,\n required_scopes: scopes,\n };\n for (const [key, value] of Object.entries({\n authorize_url: authorizeUrl,\n token_url: tokenUrl,\n revoke_url: String(item.revoke_url ?? \"\").trim(),\n display_name: String(item.display_name ?? \"\").trim(),\n scope_separator: String(item.scope_separator ?? \"\").trim(),\n token_endpoint_auth: String(item.token_endpoint_auth ?? \"\").trim(),\n })) {\n if (value) record[key] = value;\n }\n for (const key of [\"pkce_required\", \"refresh_supported\"]) {\n if (typeof item[key] === \"boolean\") record[key] = item[key];\n }\n if (Array.isArray(item.available_scopes)) {\n const availableScopes = item.available_scopes.map((scope) => String(scope ?? \"\").trim()).filter(Boolean);\n if (availableScopes.length > 0) record.available_scopes = availableScopes;\n }\n resolved[providerKey] = record;\n }\n return resolved;\n}\n\nfunction canonicalOauthCredentialsPayload(\n payload: Record<string, unknown> | unknown[] | undefined,\n): Record<string, unknown> | undefined {\n const records = oauthProviderRecordsMap(payload);\n const providerKeys = Object.keys(records).sort();\n if (providerKeys.length === 0) {\n return undefined;\n }\n return {\n items: providerKeys.map((providerKey) => records[providerKey]),\n };\n}\n\nfunction ensureRequiredOauthCredentials(project: LoadedProject): void {\n const requiredProviders = requiredOauthProviders(project.manifest.required_connected_accounts ?? []);\n if (requiredProviders.length === 0) {\n return;\n }\n const provided = new Set(Object.keys(oauthProviderRecordsMap(project.oauth_credentials)));\n const missing = requiredProviders.filter((provider) => !provided.has(provider));\n if (missing.length === 0) {\n return;\n }\n const path = project.oauth_credentials_path ?? join(project.root_dir, \"oauth_credentials.json\");\n throw new SiglumeProjectError(\n `${path} is required for platform-managed OAuth APIs. Missing provider seeds: ${missing.join(\", \")}`,\n );\n}\n\nexport async function validateProject(path = \".\", deps: CliProjectDependencies = {}): Promise<Record<string, unknown>> {\n const project = await loadProject(path);\n const manifest_issues = await projectValidationIssues(project);\n const [tool_manual_valid, tool_manual_issues] = validate_tool_manual(project.tool_manual);\n const client = await createClient(deps);\n const remote_quality = await client.preview_quality_score(project.tool_manual);\n\n return {\n adapter_path: project.adapter_path,\n manifest: toJsonable(project.manifest),\n manifest_issues,\n tool_manual_path: project.tool_manual_path ?? null,\n tool_manual: project.tool_manual,\n tool_manual_valid,\n tool_manual_issues: tool_manual_issues.map((nextIssue) => toJsonable(nextIssue)),\n remote_quality: toJsonable(remote_quality),\n ok: manifest_issues.length === 0 && tool_manual_valid && remoteQualityOk(remote_quality),\n };\n}\n\nexport async function scoreProject(\n path = \".\",\n mode: \"remote\" | \"offline\" = \"remote\",\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const project = await loadProject(path);\n const [tool_manual_valid, tool_manual_issues] = validate_tool_manual(project.tool_manual);\n const quality =\n mode === \"remote\"\n ? await (await createClient(deps)).preview_quality_score(project.tool_manual)\n : score_tool_manual_offline(project.tool_manual);\n\n return {\n mode,\n adapter_path: project.adapter_path,\n tool_manual_path: project.tool_manual_path ?? null,\n tool_manual_valid,\n tool_manual_issues: tool_manual_issues.map((nextIssue) => toJsonable(nextIssue)),\n quality: toJsonable(quality),\n ok: tool_manual_valid && remoteQualityOk(quality),\n };\n}\n\nfunction ensureManifestPublisherIdentity(project: LoadedProject): void {\n const manifestPayload = project.manifest as unknown as Record<string, unknown>;\n const docsUrl = String(manifestPayload.docs_url ?? manifestPayload.documentation_url ?? \"\").trim();\n const supportContact = String(manifestPayload.support_contact ?? \"\").trim();\n const sellerHomepageUrl = String(manifestPayload.seller_homepage_url ?? \"\").trim();\n const sellerSocialUrl = String(manifestPayload.seller_social_url ?? \"\").trim();\n const jurisdiction = String(manifestPayload.jurisdiction ?? \"\").trim();\n const issues: string[] = [];\n if (!docsUrl) {\n issues.push(\"manifest.docs_url is required\");\n } else if (looksLikePlaceholder(docsUrl)) {\n issues.push(\"manifest.docs_url must be replaced with your public documentation URL\");\n } else if (!looksLikeHttpUrl(docsUrl)) {\n issues.push(\"manifest.docs_url must be an http(s) URL\");\n } else if (looksLikeRootUrl(docsUrl)) {\n issues.push(\"manifest.docs_url must be a dedicated API usage page, not a root homepage URL\");\n }\n if (!supportContact) {\n issues.push(\"manifest.support_contact is required\");\n } else if (looksLikePlaceholder(supportContact)) {\n issues.push(\"manifest.support_contact must be replaced with your real support email or support URL\");\n } else if (!looksLikeEmail(supportContact) && !looksLikeHttpUrl(supportContact)) {\n issues.push(\"manifest.support_contact must be a real email address or http(s) support URL\");\n }\n if (sellerHomepageUrl && (looksLikePlaceholder(sellerHomepageUrl) || !looksLikeHttpUrl(sellerHomepageUrl))) {\n issues.push(\"manifest.seller_homepage_url must be a real http(s) official homepage URL when provided\");\n }\n if (sellerSocialUrl && (looksLikePlaceholder(sellerSocialUrl) || !looksLikeHttpUrl(sellerSocialUrl))) {\n issues.push(\"manifest.seller_social_url must be a real http(s) official social/profile URL when provided\");\n }\n if (!jurisdiction) issues.push(\"manifest.jurisdiction is required\");\n if (issues.length > 0) {\n throw new SiglumeProjectError(\n `Production auto-register requires real publisher identity before calling Siglume:\\n${issues.map((issue) => `- ${issue}`).join(\"\\n\")}`,\n );\n }\n}\n\nfunction looksLikePlaceholder(value: string): boolean {\n const normalized = value.trim().toLowerCase();\n return (\n !normalized ||\n normalized.includes(\"example.com\") ||\n normalized.includes(\"example.net\") ||\n normalized.includes(\"example.org\") ||\n normalized.startsWith(\"replace-with-\") ||\n normalized.startsWith(\"your-\") ||\n normalized.includes(\"your-domain\") ||\n normalized.includes(\"localhost\") ||\n normalized.includes(\"127.0.0.1\") ||\n normalized.includes(\"0.0.0.0\")\n );\n}\n\nfunction looksLikeHttpUrl(value: string): boolean {\n try {\n const parsed = new URL(value.trim());\n return parsed.protocol === \"http:\" || parsed.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\nfunction looksLikeRootUrl(value: string): boolean {\n if (!looksLikeHttpUrl(value)) return false;\n const parsed = new URL(value.trim());\n return parsed.pathname.replace(/^\\/+|\\/+$/g, \"\") === \"\";\n}\n\nfunction looksLikeEmail(value: string): boolean {\n const normalized = value.trim();\n const domain = normalized.split(\"@\").at(-1) ?? \"\";\n return normalized.includes(\"@\") && !normalized.includes(\" \") && domain.includes(\".\") && !normalized.startsWith(\"@\");\n}\n\nfunction runtimePlaceholderIssues(runtimeValidation: Record<string, unknown>): string[] {\n const issues: string[] = [];\n for (const fieldName of [\n \"public_base_url\",\n \"healthcheck_url\",\n \"invoke_url\",\n \"test_auth_header_name\",\n \"test_auth_header_value\",\n \"expected_response_fields\",\n ]) {\n if (!runtimeValidation[fieldName]) {\n issues.push(`runtime_validation.${fieldName} is required`);\n }\n }\n\n for (const fieldName of [\"public_base_url\", \"healthcheck_url\", \"invoke_url\"]) {\n const value = String(runtimeValidation[fieldName] ?? \"\").trim().toLowerCase();\n if (looksLikePlaceholder(value)) {\n issues.push(`runtime_validation.${fieldName} must be replaced with your public production URL`);\n }\n }\n\n const authValue = String(runtimeValidation.test_auth_header_value ?? \"\").trim();\n if (!authValue || authValue.startsWith(\"replace-with-\")) {\n issues.push(\"runtime_validation.test_auth_header_value must be a dedicated review secret, not a placeholder\");\n }\n\n const requestPayload =\n runtimeValidation.request_payload ??\n runtimeValidation.test_request_body ??\n runtimeValidation.runtime_sample ??\n runtimeValidation.sample_request_payload ??\n runtimeValidation.runtime_sample_request;\n if (!isRecord(requestPayload)) {\n issues.push(\"runtime_validation.request_payload must be a JSON object\");\n }\n\n const expectedFields = runtimeValidation.expected_response_fields;\n if (!Array.isArray(expectedFields) || !expectedFields.some((item) => typeof item === \"string\" && item.trim())) {\n issues.push(\"runtime_validation.expected_response_fields must include at least one field path\");\n }\n return issues;\n}\n\nfunction ensureRuntimeValidationReady(project: LoadedProject): void {\n if (!project.runtime_validation) {\n throw new SiglumeProjectError(\n \"runtime_validation.json is required for `siglume register`. Create it with public_base_url, healthcheck_url, invoke_url, dedicated review auth header, request_payload, and expected_response_fields.\",\n );\n }\n const issues = runtimePlaceholderIssues(project.runtime_validation);\n if (issues.length > 0) {\n const path = project.runtime_validation_path ?? \"runtime_validation.json\";\n throw new SiglumeProjectError(`${path} is not ready for production registration:\\n${issues.map((issue) => `- ${issue}`).join(\"\\n\")}`);\n }\n}\n\nfunction ensureExplicitToolManual(project: LoadedProject): void {\n if (!project.tool_manual_path) {\n throw new SiglumeProjectError(\n \"tool_manual.json is required for `siglume register`. Run `siglume init`, or create a Tool Manual explicitly before registering.\",\n );\n }\n}\n\nasync function registrationPreflight(project: LoadedProject, client: SiglumeClientShape): Promise<Record<string, unknown>> {\n const manifestIssues = await projectValidationIssues(project);\n const [toolManualValid, toolManualIssues] = validate_tool_manual(project.tool_manual);\n const remoteQuality = await client.preview_quality_score(project.tool_manual);\n const requiredOauthProvidersList = requiredOauthProviders(project.manifest.required_connected_accounts ?? []);\n const oauthProviderRecords = oauthProviderRecordsMap(project.oauth_credentials);\n const missingOauthProviders = requiredOauthProvidersList.filter((provider) => !oauthProviderRecords[provider]);\n const blockingToolManualIssues = toolManualIssues.filter((issue) => issue.severity === \"error\");\n const errors = [\n ...manifestIssues.map((issue) => String(issue)),\n ...blockingToolManualIssues.map((issue) => issue.message),\n ];\n if (!toolManualValid) {\n errors.push(\"tool_manual.json is not valid for production registration\");\n }\n if (!remoteQualityOk(remoteQuality)) {\n errors.push(`remote Tool Manual quality is not publishable: ${remoteQuality.grade} (${remoteQuality.overall_score}/100)`);\n }\n if (missingOauthProviders.length > 0) {\n errors.push(`oauth_credentials.json is required for platform-managed OAuth APIs: ${missingOauthProviders.join(\", \")}`);\n }\n const preflight = {\n manifest_issues: manifestIssues,\n tool_manual_valid: toolManualValid,\n tool_manual_issues: toolManualIssues.map((issue) => toJsonable(issue)),\n remote_quality: toJsonable(remoteQuality),\n required_oauth_providers: requiredOauthProvidersList,\n oauth_credentials_path: project.oauth_credentials_path ?? null,\n oauth_missing_providers: missingOauthProviders,\n ok: errors.length === 0,\n };\n if (errors.length > 0) {\n throw new SiglumeProjectError(\n `Registration preflight failed. Fix these before calling auto-register:\\n${errors.map((error) => `- ${error}`).join(\"\\n\")}`,\n );\n }\n return preflight;\n}\n\nexport async function runRegistration(\n path = \".\",\n options: { confirm?: boolean; draft_only?: boolean; submit_review?: boolean } = {},\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const project = await loadProject(path);\n ensureExplicitToolManual(project);\n ensureManifestPublisherIdentity(project);\n ensureRuntimeValidationReady(project);\n ensureRequiredOauthCredentials(project);\n const canonicalOauthCredentials = canonicalOauthCredentialsPayload(project.oauth_credentials);\n const client = await createClient(deps);\n const preflight = await registrationPreflight(project, client);\n let developerPortalPreflight: unknown = null;\n if (String(project.manifest.price_model ?? \"free\").toLowerCase() !== \"free\") {\n const portal = await client.get_developer_portal();\n const verifiedDestination = portal.payout_readiness?.verified_destination;\n if (verifiedDestination !== true) {\n throw new SiglumeProjectError(\n \"Paid API registration requires a verified Polygon payout destination. Open https://siglume.com/owner/credits/payout and confirm the embedded-wallet payout token, or call GET /v1/market/developer/portal until payout_readiness.verified_destination is true.\",\n );\n }\n developerPortalPreflight = toJsonable(portal);\n }\n const receipt = await client.auto_register(project.manifest, project.tool_manual, {\n runtime_validation: project.runtime_validation,\n oauth_credentials: canonicalOauthCredentials,\n });\n const result: Record<string, unknown> = {\n receipt: toJsonable(receipt),\n registration_preflight: preflight,\n runtime_validation_path: project.runtime_validation_path ?? null,\n oauth_credentials_path: project.oauth_credentials_path ?? null,\n };\n if (developerPortalPreflight) {\n result.developer_portal_preflight = developerPortalPreflight;\n }\n const shouldConfirm = Boolean(options.confirm) || (options.confirm === undefined && !options.draft_only && !options.submit_review);\n if (shouldConfirm) {\n result.confirmation = toJsonable(await client.confirm_registration(receipt.listing_id));\n if (options.submit_review) {\n result.submit_review_skipped = true;\n }\n } else if (options.submit_review) {\n result.review = toJsonable(await client.submit_review(receipt.listing_id));\n }\n return result;\n}\n\nexport async function runPreflight(\n path = \".\",\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const project = await loadProject(path);\n ensureExplicitToolManual(project);\n ensureManifestPublisherIdentity(project);\n ensureRuntimeValidationReady(project);\n ensureRequiredOauthCredentials(project);\n const client = await createClient(deps);\n const preflight = await registrationPreflight(project, client);\n let developerPortalPreflight: unknown = null;\n if (String(project.manifest.price_model ?? \"free\").toLowerCase() !== \"free\") {\n const portal = await client.get_developer_portal();\n const verifiedDestination = portal.payout_readiness?.verified_destination;\n if (verifiedDestination !== true) {\n throw new SiglumeProjectError(\n \"Paid API registration requires a verified Polygon payout destination. Open https://siglume.com/owner/credits/payout and confirm the embedded-wallet payout token, or call GET /v1/market/developer/portal until payout_readiness.verified_destination is true.\",\n );\n }\n developerPortalPreflight = toJsonable(portal);\n }\n const result: Record<string, unknown> = {\n ok: true,\n adapter_path: project.adapter_path,\n registration_preflight: preflight,\n runtime_validation_path: project.runtime_validation_path ?? null,\n oauth_credentials_path: project.oauth_credentials_path ?? null,\n };\n if (developerPortalPreflight) {\n result.developer_portal_preflight = developerPortalPreflight;\n }\n return result;\n}\n\nexport async function createSupportCaseReport(\n options: { subject: string; body: string; trace_id?: string },\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const client = await createClient(deps);\n const supportCase = await client.create_support_case(options.subject, options.body, { trace_id: options.trace_id });\n return { case: toJsonable(supportCase) };\n}\n\nexport async function getUsageReport(\n options: { capability_key?: string; window: string },\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const client = await createClient(deps);\n const page = await client.get_usage({ capability_key: options.capability_key, period_key: options.window });\n const items = page.all_items ? await page.all_items() : page.items;\n return {\n window: options.window,\n capability_key: options.capability_key ?? null,\n items: items.map((item) => toJsonable(item)),\n count: items.length,\n };\n}\n\nexport async function diffJsonFiles(\n oldPath: string,\n newPath: string,\n): Promise<Record<string, unknown>> {\n const oldPayload = await loadJsonDocument(oldPath);\n const newPayload = await loadJsonDocument(newPath);\n const kind = detectDocumentKind(oldPayload, newPayload);\n const changes =\n kind === \"manifest\"\n ? diff_manifest({ old: oldPayload, new: newPayload })\n : diff_tool_manual({ old: oldPayload, new: newPayload });\n const counts = {\n breaking: changes.filter((change) => change.level === ChangeLevel.BREAKING).length,\n warning: changes.filter((change) => change.level === ChangeLevel.WARNING).length,\n info: changes.filter((change) => change.level === ChangeLevel.INFO).length,\n };\n return {\n kind,\n old_path: oldPath,\n new_path: newPath,\n exit_code: counts.breaking > 0 ? 1 : counts.warning > 0 ? 2 : 0,\n counts,\n changes: changes.map((change) => toJsonable(change)),\n };\n}\n\nexport async function runHarness(path = \".\"): Promise<Record<string, unknown>> {\n const project = await loadProject(path);\n return runHarnessForProject(project);\n}\n\nexport async function writeInitTemplate(template: TemplateName, destination: string): Promise<string[]> {\n const root = resolve(destination);\n await mkdir(root, { recursive: true });\n const adapter_path = join(root, \"adapter.ts\");\n const manifest_path = join(root, \"manifest.json\");\n const tool_manual_path = join(root, \"tool_manual.json\");\n const runtime_validation_path = join(root, \"runtime_validation.json\");\n const gitignore_path = join(root, \".gitignore\");\n const readme_path = join(root, \"README.md\");\n const docs_dir = join(root, \"docs\");\n await mkdir(docs_dir, { recursive: true });\n const docs_usage_path = join(docs_dir, \"api-usage.md\");\n\n for (const filePath of [adapter_path, manifest_path, tool_manual_path, runtime_validation_path, docs_usage_path, readme_path]) {\n if (existsSync(filePath)) {\n throw new SiglumeProjectError(`${basename(filePath)} already exists in ${root}`);\n }\n }\n\n await writeFile(adapter_path, fallbackTemplateSource(template), \"utf8\");\n const manifest = starterManifest(template);\n const toolManual = buildToolManualTemplate(manifest);\n await writeFile(manifest_path, renderJson(manifest), \"utf8\");\n await writeFile(tool_manual_path, renderJson(toolManual), \"utf8\");\n await writeFile(runtime_validation_path, renderJson(buildRuntimeValidationTemplate(toolManual)), \"utf8\");\n await writeFile(docs_usage_path, apiUsageDocsTemplate(manifest), \"utf8\");\n await writeOrMergeGitignore(gitignore_path);\n await writeFile(readme_path, readmeTemplate(template), \"utf8\");\n return [adapter_path, manifest_path, tool_manual_path, runtime_validation_path, docs_usage_path, gitignore_path, readme_path];\n}\n\nexport async function listOperationCatalog(\n options: { agent_id?: string; lang?: string } = {},\n deps: CliProjectDependencies = {},\n): Promise<Record<string, unknown>> {\n const resolvedAgentId = String(options.agent_id ?? \"\").trim();\n const lang = String(options.lang ?? \"en\").trim() || \"en\";\n let warning: string | null = null;\n try {\n const client = await createClient(deps);\n const operations = await client.list_operations({\n agent_id: resolvedAgentId || undefined,\n lang,\n });\n return {\n agent_id: operations[0]?.agent_id ?? (resolvedAgentId || null),\n source: \"live\",\n warning: null,\n operations: operations.map((item) => toJsonable(item)),\n };\n } catch (error) {\n warning = error instanceof Error ? error.message : String(error);\n }\n const operations = fallbackOperationCatalog(resolvedAgentId || DEFAULT_OPERATION_AGENT_ID);\n return {\n agent_id: operations[0]?.agent_id ?? (resolvedAgentId || DEFAULT_OPERATION_AGENT_ID),\n source: \"fallback\",\n warning: warning || FALLBACK_OPERATION_WARNING,\n operations: operations.map((item) => toJsonable(item)),\n };\n}\n\nasync function resolveOperationMetadata(\n operation_key: string,\n options: { agent_id?: string; lang?: string } = {},\n deps: CliProjectDependencies = {},\n): Promise<{ operation: OperationMetadata; warning?: string | null }> {\n const normalizedKey = String(operation_key ?? \"\").trim();\n if (!normalizedKey) {\n throw new SiglumeProjectError(\"operation_key is required.\");\n }\n const catalog = await listOperationCatalog(options, deps);\n const items = Array.isArray(catalog.operations) ? catalog.operations : [];\n for (const item of items) {\n if (isRecord(item) && String(item.operation_key ?? \"\") === normalizedKey) {\n return {\n operation: buildOperationMetadata(item, {\n agent_id: String(item.agent_id ?? options.agent_id ?? \"\").trim() || undefined,\n source: String(item.source ?? catalog.source ?? \"fallback\"),\n }),\n warning: typeof catalog.warning === \"string\" ? catalog.warning : null,\n };\n }\n }\n throw new SiglumeProjectError(`Unknown operation key: ${normalizedKey}`);\n}\n\nfunction permissionClassFromOperation(operation: OperationMetadata): AppManifest[\"permission_class\"] {\n switch (operation.permission_class) {\n case \"action\":\n return PermissionClass.ACTION;\n case \"payment\":\n return PermissionClass.PAYMENT;\n default:\n return PermissionClass.READ_ONLY;\n }\n}\n\nfunction approvalModeFromOperation(operation: OperationMetadata): AppManifest[\"approval_mode\"] {\n switch (operation.approval_mode) {\n case \"always-ask\":\n return ApprovalMode.ALWAYS_ASK;\n case \"budget-bounded\":\n return ApprovalMode.BUDGET_BOUNDED;\n case \"deny\":\n return ApprovalMode.DENY;\n default:\n return ApprovalMode.AUTO;\n }\n}\n\nfunction toolPermissionClassFromOperation(operation: OperationMetadata): ToolManual[\"permission_class\"] {\n const permission = permissionClassFromOperation(operation);\n return toolManualPermissionClass(permission);\n}\n\nfunction operationDisplayName(operation: OperationMetadata): string {\n return `${operation.operation_key\n .replaceAll(\".\", \" \")\n .replaceAll(\"-\", \" \")\n .replaceAll(\"_\", \" \")\n .split(/\\s+/)\n .filter((chunk) => chunk.length > 0)\n .map((chunk) => `${chunk[0]?.toUpperCase() ?? \"\"}${chunk.slice(1)}`)\n .join(\" \")} Wrapper`;\n}\n\nfunction operationTaskType(operation: OperationMetadata): string {\n return `wrap_${operation.operation_key.replaceAll(\".\", \"_\").replaceAll(\"-\", \"_\")}`;\n}\n\nfunction operationClassName(operation: OperationMetadata): string {\n return `${operation.operation_key\n .replaceAll(\".\", \" \")\n .replaceAll(\"-\", \" \")\n .replaceAll(\"_\", \" \")\n .split(/\\s+/)\n .filter((chunk) => chunk.length > 0)\n .map((chunk) => `${chunk[0]?.toUpperCase() ?? \"\"}${chunk.slice(1)}`)\n .join(\"\")}WrapperApp`;\n}\n\nfunction operationTriggerConditions(operation: OperationMetadata): string[] {\n const summary = operation.summary.replace(/\\.+$/, \"\");\n const capability = operation.operation_key.replaceAll(\".\", \" \");\n if (operation.permission_class === \"action\" || operation.permission_class === \"payment\") {\n return [\n `owner explicitly asks to ${summary.toLowerCase()}`,\n `agent needs to run the first-party operation ${operation.operation_key} instead of calling an external API`,\n `request matches the owner-governance workflow described as ${capability}`,\n ];\n }\n return [\n `owner asks to inspect or review data covered by ${operation.operation_key}`,\n `agent needs the first-party platform context described as ${summary.toLowerCase()}`,\n `request matches the owner-operation workflow described as ${capability}`,\n ];\n}\n\nfunction operationDoNotUseWhen(operation: OperationMetadata): string[] {\n if (operation.permission_class === \"action\" || operation.permission_class === \"payment\") {\n return [\n \"the owner has not reviewed the preview or has not approved the requested first-party platform change\",\n \"the request is unrelated to the documented owner operation or targets the wrong owned agent\",\n ];\n }\n return [\n \"the owner wants to mutate state instead of only reading first-party platform data\",\n \"the request is unrelated to the documented owner operation\",\n ];\n}\n\nfunction operationUsageHints(operation: OperationMetadata): string[] {\n return [`Use dry_run first so the owner can review the ${operation.operation_key} preview before any live execution.`];\n}\n\nfunction operationResultHints(): string[] {\n return [\"Lead with the summary and action, then include the structured result payload for follow-up tooling.\"];\n}\n\nfunction operationErrorHints(): string[] {\n return [\"If the operation rejects the payload, surface which input field needs correction before retrying.\"];\n}\n\nfunction operationPreviewSchema(): Record<string, unknown> {\n return {\n type: \"object\",\n properties: {\n summary: { type: \"string\", description: \"Preview of the first-party operation.\" },\n operation_key: { type: \"string\", description: \"Owner operation that would run.\" },\n agent_id: { type: \"string\", description: \"Owned agent that would receive the operation.\" },\n params: { type: \"object\", description: \"Operation params after agent_id is removed from input.\" },\n },\n required: [\"summary\", \"operation_key\", \"agent_id\", \"params\"],\n additionalProperties: false,\n };\n}\n\nfunction buildOperationManifest(\n operation: OperationMetadata,\n capability_key_override?: string,\n): AppManifest {\n return {\n capability_key: String(capability_key_override ?? defaultCapabilityKeyForOperation(operation.operation_key)).trim(),\n name: operationDisplayName(operation),\n job_to_be_done: `Wrap the Siglume first-party operation \\`${operation.operation_key}\\` for owned agents.`,\n category: AppCategory.OTHER,\n store_vertical: \"api\" as const,\n permission_class: permissionClassFromOperation(operation),\n approval_mode: approvalModeFromOperation(operation),\n dry_run_supported: true,\n required_connected_accounts: [],\n price_model: PriceModel.FREE,\n currency: \"USD\",\n jurisdiction: \"US\",\n short_description: operation.summary,\n docs_url: \"https://example.com/docs\",\n support_contact: \"support@example.com\",\n example_prompts: [`Run ${operation.operation_key} for my owned agent.`],\n };\n}\n\nfunction buildOperationToolManual(\n operation: OperationMetadata,\n manifest: AppManifest,\n): Record<string, unknown> {\n const manual: Record<string, unknown> = {\n tool_name: operation.operation_key.replaceAll(\".\", \"_\").replaceAll(\"-\", \"_\"),\n job_to_be_done: `Run the Siglume first-party operation \\`${operation.operation_key}\\` for an owned agent.`,\n summary_for_model: `Wraps the built-in Siglume owner operation \\`${operation.operation_key}\\` and returns the structured platform response.`,\n trigger_conditions: operationTriggerConditions(operation),\n do_not_use_when: operationDoNotUseWhen(operation),\n permission_class: toolPermissionClassFromOperation(operation),\n dry_run_supported: true,\n requires_connected_accounts: [],\n input_schema: structuredClone(operation.input_schema),\n output_schema: structuredClone(operation.output_schema),\n usage_hints: operationUsageHints(operation),\n result_hints: operationResultHints(),\n error_hints: operationErrorHints(),\n };\n if (manifest.permission_class === PermissionClass.ACTION || manifest.permission_class === PermissionClass.PAYMENT) {\n manual.approval_summary_template = `Run ${operation.operation_key} for {agent_id}.`;\n manual.preview_schema = operationPreviewSchema();\n manual.idempotency_support = true;\n manual.side_effect_summary = `Runs the first-party owner operation \\`${operation.operation_key}\\` against the selected owned agent.`;\n manual.jurisdiction = manifest.jurisdiction;\n }\n return manual;\n}\n\nfunction operationAdapterSource(operation: OperationMetadata, manifest: AppManifest): string {\n const className = operationClassName(operation);\n const permissionEnumName =\n manifest.permission_class === PermissionClass.ACTION\n ? \"ACTION\"\n : manifest.permission_class === PermissionClass.PAYMENT\n ? \"PAYMENT\"\n : \"READ_ONLY\";\n const approvalEnumName =\n manifest.approval_mode === ApprovalMode.ALWAYS_ASK\n ? \"ALWAYS_ASK\"\n : manifest.approval_mode === ApprovalMode.BUDGET_BOUNDED\n ? \"BUDGET_BOUNDED\"\n : manifest.approval_mode === ApprovalMode.DENY\n ? \"DENY\"\n : \"AUTO\";\n const needsApproval =\n manifest.permission_class === PermissionClass.ACTION || manifest.permission_class === PermissionClass.PAYMENT;\n const examplePrompts = JSON.stringify(manifest.example_prompts ?? []);\n return [\n `/** Generated Siglume wrapper for \\`${operation.operation_key}\\`. */`,\n \"import {\",\n \" AppAdapter,\",\n \" AppCategory,\",\n \" ApprovalMode,\",\n \" PermissionClass,\",\n \" PriceModel,\",\n \" SiglumeClient,\",\n \"} from \\\"@siglume/api-sdk\\\";\",\n \"import type { ExecutionContext, ExecutionResult, SiglumeClientShape } from \\\"@siglume/api-sdk\\\";\",\n \"import { GeneratedOperationStub } from \\\"./stubs\\\";\",\n \"\",\n `const OPERATION_KEY = ${JSON.stringify(operation.operation_key)};`,\n `const DEFAULT_AGENT_ID = ${JSON.stringify(operation.agent_id ?? DEFAULT_OPERATION_AGENT_ID)};`,\n \"const DEFAULT_LANGUAGE = \\\"en\\\";\",\n \"\",\n `export default class ${className} extends AppAdapter {`,\n \" private client: SiglumeClientShape | null;\",\n \" private stubProvider: GeneratedOperationStub;\",\n \"\",\n \" constructor(client: SiglumeClientShape | null = null, stubProvider: GeneratedOperationStub | null = null) {\",\n \" super();\",\n \" this.client = client;\",\n \" this.stubProvider = stubProvider ?? new GeneratedOperationStub(OPERATION_KEY);\",\n \" }\",\n \"\",\n \" manifest() {\",\n \" return {\",\n ` capability_key: ${JSON.stringify(manifest.capability_key)},`,\n ` name: ${JSON.stringify(manifest.name)},`,\n ` job_to_be_done: ${JSON.stringify(manifest.job_to_be_done)},`,\n \" category: AppCategory.OTHER,\",\n \" store_vertical: 'api' as const,\",\n ` permission_class: PermissionClass.${permissionEnumName},`,\n ` approval_mode: ApprovalMode.${approvalEnumName},`,\n \" dry_run_supported: true,\",\n \" required_connected_accounts: [],\",\n \" price_model: PriceModel.FREE,\",\n \" currency: 'USD' as const,\",\n ` jurisdiction: ${JSON.stringify(manifest.jurisdiction)},`,\n ` short_description: ${JSON.stringify(manifest.short_description ?? \"\")},`,\n ` support_contact: ${JSON.stringify(manifest.support_contact ?? \"\")},`,\n ` docs_url: ${JSON.stringify(manifest.docs_url ?? \"\")},`,\n ` example_prompts: ${examplePrompts},`,\n \" };\",\n \" }\",\n \"\",\n \" async execute(ctx: ExecutionContext): Promise<ExecutionResult> {\",\n \" const payload = { ...(ctx.input_params ?? {}) } as Record<string, unknown>;\",\n \" const agentId = String((payload.agent_id ?? DEFAULT_AGENT_ID) || DEFAULT_AGENT_ID);\",\n \" delete payload.agent_id;\",\n \" const preview = {\",\n \" summary: `Would run ${OPERATION_KEY} for ${agentId}.`,\",\n \" operation_key: OPERATION_KEY,\",\n \" agent_id: agentId,\",\n \" params: payload,\",\n \" };\",\n \" if (ctx.execution_kind === \\\"dry_run\\\") {\",\n \" return {\",\n \" success: true,\",\n \" execution_kind: ctx.execution_kind,\",\n \" output: preview,\",\n ` needs_approval: ${needsApproval ? \"true\" : \"false\"},`,\n ...(needsApproval ? [\" approval_prompt: `Run ${OPERATION_KEY} for ${agentId}.`,\"] : []),\n \" };\",\n \" }\",\n \"\",\n \" const execution = await this.invokeOperation(agentId, payload);\",\n \" return {\",\n \" success: true,\",\n \" execution_kind: ctx.execution_kind,\",\n \" output: {\",\n \" summary: execution.message,\",\n \" action: execution.action,\",\n \" result: execution.result,\",\n \" },\",\n \" receipt_summary: {\",\n \" action: execution.action,\",\n \" operation_key: OPERATION_KEY,\",\n \" agent_id: agentId,\",\n \" },\",\n \" side_effects: ctx.execution_kind === \\\"dry_run\\\" ? [] : [\",\n \" {\",\n \" action: execution.action,\",\n \" provider: \\\"siglume_owner_operation\\\",\",\n \" external_id: agentId,\",\n \" reversible: false,\",\n \" metadata: { operation_key: OPERATION_KEY },\",\n \" },\",\n \" ],\",\n \" };\",\n \" }\",\n \"\",\n \" private async invokeOperation(agentId: string, params: Record<string, unknown>) {\",\n \" if (this.client && typeof this.client.execute_owner_operation === \\\"function\\\") {\",\n \" const result = await this.client.execute_owner_operation(agentId, OPERATION_KEY, params, { lang: DEFAULT_LANGUAGE });\",\n \" return { message: result.message, action: result.action, result: result.result };\",\n \" }\",\n \" const apiKey = typeof process !== \\\"undefined\\\" && process.env ? String(process.env.SIGLUME_API_KEY ?? \\\"\\\").trim() : \\\"\\\";\",\n \" if (apiKey) {\",\n \" const client = new SiglumeClient({ api_key: apiKey });\",\n \" const result = await client.execute_owner_operation(agentId, OPERATION_KEY, params, { lang: DEFAULT_LANGUAGE });\",\n \" return { message: result.message, action: result.action, result: result.result };\",\n \" }\",\n \" return this.stubProvider.handle(\\\"execute\\\", { operation: OPERATION_KEY, agent_id: agentId, params });\",\n \" }\",\n \"\",\n \" supported_task_types() {\",\n ` return [${JSON.stringify(operationTaskType(operation))}];`,\n \" }\",\n \"}\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction operationStubsSource(operation: OperationMetadata): string {\n return [\n `/** Generated stubs for \\`${operation.operation_key}\\`. */`,\n \"import { StubProvider } from \\\"@siglume/api-sdk\\\";\",\n \"\",\n `const OPERATION_KEY = ${JSON.stringify(operation.operation_key)};`,\n \"\",\n \"export class GeneratedOperationStub extends StubProvider {\",\n \" constructor(operationKey: string = OPERATION_KEY) {\",\n \" super(\\\"siglume_owner_operation\\\");\",\n \" this.operationKey = operationKey;\",\n \" }\",\n \"\",\n \" operationKey: string;\",\n \"\",\n \" async handle(_method: string, params: Record<string, unknown>) {\",\n ` const agentId = String(params.agent_id ?? ${JSON.stringify(operation.agent_id ?? DEFAULT_OPERATION_AGENT_ID)});`,\n \" const payload = (params.params && typeof params.params === \\\"object\\\" && !Array.isArray(params.params))\",\n \" ? { ...(params.params as Record<string, unknown>) }\",\n \" : {};\",\n \" return {\",\n \" message: `Stubbed ${this.operationKey} for ${agentId}.`,\",\n \" action: this.operationKey.replaceAll('.', '_'),\",\n \" result: {\",\n \" operation_key: this.operationKey,\",\n \" agent_id: agentId,\",\n \" stubbed: true,\",\n \" params: payload,\",\n \" },\",\n \" };\",\n \" }\",\n \"}\",\n \"\",\n \"export function buildStubs() {\",\n \" return { siglume_owner_operation: new GeneratedOperationStub() };\",\n \"}\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction operationTestSource(operation: OperationMetadata): string {\n const className = operationClassName(operation);\n const taskType = operationTaskType(operation);\n return [\n \"import { readFile } from \\\"node:fs/promises\\\";\",\n \"import { dirname, resolve } from \\\"node:path\\\";\",\n \"import { fileURLToPath } from \\\"node:url\\\";\",\n \"import { describe, expect, it } from \\\"vitest\\\";\",\n \"\",\n \"import { AppTestHarness, score_tool_manual_offline, validate_tool_manual } from \\\"@siglume/api-sdk\\\";\",\n `import ${className} from \\\"../adapter\\\";`,\n \"import { buildStubs } from \\\"../stubs\\\";\",\n \"\",\n \"const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), \\\"..\\\");\",\n \"\",\n \"describe(\\\"generated operation template\\\", () => {\",\n \" it(\\\"passes harness and quality checks\\\", async () => {\",\n ` const harness = new AppTestHarness(new ${className}(), buildStubs());`,\n \" const manual = JSON.parse(await readFile(resolve(ROOT, \\\"tool_manual.json\\\"), \\\"utf8\\\")) as Record<string, unknown>;\",\n \" const [ok, issues] = validate_tool_manual(manual);\",\n \" const report = score_tool_manual_offline(manual);\",\n \"\",\n \" expect(ok).toBe(true);\",\n \" expect(issues).toEqual([]);\",\n \" expect([\\\"A\\\", \\\"B\\\"]).toContain(report.grade);\",\n \" expect(await harness.validate_manifest()).toEqual([]);\",\n \"\",\n ` const dryRun = await harness.dry_run(${JSON.stringify(taskType)});`,\n \" expect(dryRun.success).toBe(true);\",\n ...(operation.permission_class === \"action\" || operation.permission_class === \"payment\"\n ? [\n ` const action = await harness.execute_action(${JSON.stringify(taskType)});`,\n \" expect(action.success).toBe(true);\",\n \" expect(harness.validate_receipt(action)).toEqual([]);\",\n ]\n : []),\n \" });\",\n \"});\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction operationReadmeTemplate(\n operation: OperationMetadata,\n manifest: AppManifest,\n warning?: string | null,\n): string {\n const warningLines = warning ? [`- Warning: ${warning}`] : [];\n return [\n `# ${manifest.name}`,\n \"\",\n `This starter wraps the first-party Siglume owner operation \\`${operation.operation_key}\\`.`,\n \"\",\n `- Source catalog: \\`${operation.source}\\``,\n `- Default agent_id: \\`${operation.agent_id ?? DEFAULT_OPERATION_AGENT_ID}\\``,\n `- Permission class: \\`${operation.permission_class}\\``,\n `- Approval mode: \\`${operation.approval_mode}\\``,\n ...warningLines,\n `- Route page: \\`${operation.page_href ?? \"/owner\"}\\``,\n \"\",\n \"## Generated files\",\n \"\",\n \"- `adapter.ts`: AppAdapter wrapper that previews first and then calls `SiglumeClient.execute_owner_operation()`\",\n \"- `stubs.ts`: mock fallback used when `SIGLUME_API_KEY` is not set\",\n \"- `manifest.json`: reviewable manifest snapshot\",\n \"- `tool_manual.json`: machine-generated ToolManual scaffold\",\n \"- `runtime_validation.json`: local public endpoint and review-key checks used by auto-register\",\n \"- `docs/api-usage.md`: publishable API usage guide template for `docs_url`\",\n \"- `.gitignore`: keeps runtime review keys and OAuth client secrets out of Git\",\n \"- `tests/test_adapter.ts`: smoke test for `AppTestHarness`\",\n \"\",\n \"Before registering, replace all generated placeholders:\",\n \"- In `adapter.ts` and `manifest.json`, replace `docs_url` with a dedicated public API usage guide, not a homepage.\",\n \"- Replace `support_contact` with a real support email address or public support URL.\",\n \"- Optional `seller_homepage_url` is the seller's official site and can stay blank.\",\n \"- In the local `runtime_validation.json`, replace the public URL and review-key placeholders.\",\n \"- If the API uses seller-side OAuth, create a local `oauth_credentials.json` next to the adapter.\",\n \"- Do not commit real review keys or OAuth client secrets; the generated `.gitignore` excludes those files.\",\n \"- Because `runtime_validation.json` is ignored, GitHub samples do not commit review-key values.\",\n \"\",\n \"## Commands\",\n \"\",\n \"Start locally without a Siglume API key:\",\n \"\",\n \"```bash\",\n \"siglume test .\",\n \"npm test -- tests/test_adapter.ts\",\n \"siglume score . --offline\",\n \"```\",\n \"\",\n \"After placeholders are replaced and `SIGLUME_API_KEY` is issued from Developer Portal -> CLI / API keys, run the server-aligned checks:\",\n \"\",\n \"```bash\",\n \"siglume validate .\",\n \"siglume score . --remote\",\n \"siglume preflight .\",\n \"siglume register .\",\n \"# review-only staging path:\",\n \"siglume register . --draft-only\",\n \"```\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction apiUsageDocsTemplate(manifest: AppManifest): string {\n const name = String(manifest.name ?? manifest.capability_key ?? \"Siglume API\");\n const capabilityKey = String(manifest.capability_key ?? \"replace-with-capability-key\");\n const jobToBeDone = String(manifest.job_to_be_done ?? \"Describe what this API lets an agent do.\");\n const permissionClass = String(manifest.permission_class ?? \"read-only\");\n const priceModel = String(manifest.price_model ?? \"free\");\n const requiredAccounts =\n (manifest.required_connected_accounts ?? [])\n .map((item) => connectedAccountRequirementLabel(item))\n .filter(Boolean)\n .join(\", \") || \"none\";\n const supportContact = String(manifest.support_contact ?? \"replace-with-support-contact\");\n return [\n `# ${name} API Usage Guide`,\n \"\",\n `This page is the dedicated public usage guide for the Siglume API listing \\`${capabilityKey}\\`.`,\n \"Publish this page at an anonymous HTTP 200 URL and use that URL as `docs_url`.\",\n \"\",\n \"Do not use your company homepage as `docs_url`; keep seller/company homepages in `seller_homepage_url`.\",\n \"\",\n \"## What This API Does\",\n \"\",\n jobToBeDone,\n \"\",\n \"## Permission Model\",\n \"\",\n `- Permission class: \\`${permissionClass}\\``,\n `- Price model: \\`${priceModel}\\``,\n `- Required connected accounts: \\`${requiredAccounts}\\``,\n \"\",\n \"## Inputs\",\n \"\",\n \"Describe the request fields your API accepts. Keep this aligned with `tool_manual.json` and `runtime_validation.json`.\",\n \"\",\n \"## Outputs\",\n \"\",\n \"Describe the response fields your API returns. Include the fields in `runtime_validation.expected_response_fields`.\",\n \"\",\n \"## Errors And Support\",\n \"\",\n \"Explain common error messages and how an owner should recover.\",\n \"\",\n `Support contact: ${supportContact}`,\n \"\",\n ].join(\"\\n\");\n}\n\nfunction generatedGitignore(): string {\n return [\n \"# Local secrets and registration-only runtime checks.\",\n \".env\",\n \".env.*\",\n \"!.env.example\",\n \"runtime_validation.json\",\n \"runtime-validation.json\",\n \"oauth_credentials.json\",\n \"oauth-credentials.json\",\n \"\",\n \"# Python / test artifacts.\",\n \"__pycache__/\",\n \"*.py[cod]\",\n \".pytest_cache/\",\n \".mypy_cache/\",\n \".coverage\",\n \"htmlcov/\",\n \"dist/\",\n \"build/\",\n \"*.egg-info/\",\n \"\",\n \"# JavaScript tooling if this project also uses TypeScript helpers.\",\n \"node_modules/\",\n \"coverage/\",\n \"\",\n ].join(\"\\n\");\n}\n\nasync function writeOrMergeGitignore(filePath: string): Promise<void> {\n const generated = generatedGitignore();\n if (!existsSync(filePath)) {\n await writeFile(filePath, generated, \"utf8\");\n return;\n }\n const existing = await readFile(filePath, \"utf8\");\n const existingEntries = new Set(existing.split(/\\r?\\n/).map((line) => line.trim()));\n const additions = generated.split(/\\r?\\n/).filter((line) => line.trim() && !existingEntries.has(line.trim()));\n if (additions.length === 0) {\n return;\n }\n const prefix = existing.endsWith(\"\\n\") ? existing : `${existing}\\n`;\n await writeFile(filePath, `${prefix}\\n# Siglume generated ignores.\\n${additions.join(\"\\n\")}\\n`, \"utf8\");\n}\n\nexport async function writeOperationTemplate(\n operation_key: string,\n destination: string,\n options: { capability_key?: string; agent_id?: string; lang?: string } = {},\n deps: CliProjectDependencies = {},\n): Promise<{ files: string[]; operation: OperationMetadata; report: Record<string, unknown> }> {\n const root = resolve(destination);\n await mkdir(root, { recursive: true });\n const testsDir = join(root, \"tests\");\n await mkdir(testsDir, { recursive: true });\n const adapter_path = join(root, \"adapter.ts\");\n const stubs_path = join(root, \"stubs.ts\");\n const manifest_path = join(root, \"manifest.json\");\n const tool_manual_path = join(root, \"tool_manual.json\");\n const runtime_validation_path = join(root, \"runtime_validation.json\");\n const gitignore_path = join(root, \".gitignore\");\n const readme_path = join(root, \"README.md\");\n const test_path = join(testsDir, \"test_adapter.ts\");\n const docs_dir = join(root, \"docs\");\n await mkdir(docs_dir, { recursive: true });\n const docs_usage_path = join(docs_dir, \"api-usage.md\");\n for (const filePath of [\n adapter_path,\n stubs_path,\n manifest_path,\n tool_manual_path,\n runtime_validation_path,\n docs_usage_path,\n readme_path,\n test_path,\n ]) {\n if (existsSync(filePath)) {\n throw new SiglumeProjectError(`${basename(filePath)} already exists in ${root}`);\n }\n }\n\n const { operation, warning } = await resolveOperationMetadata(operation_key, {\n agent_id: options.agent_id,\n lang: options.lang,\n }, deps);\n const manifest = buildOperationManifest(operation, options.capability_key);\n const tool_manual = buildOperationToolManual(operation, manifest);\n const [tool_manual_valid, tool_manual_issues] = validate_tool_manual(tool_manual);\n const quality = score_tool_manual_offline(tool_manual);\n if (!tool_manual_valid) {\n throw new SiglumeProjectError(\n `Generated tool manual for ${operation.operation_key} is invalid: ${tool_manual_issues.map((issue) => issue.message).join(\"; \")}`,\n );\n }\n if (![\"A\", \"B\"].includes(String(quality.grade))) {\n throw new SiglumeProjectError(\n `Generated tool manual for ${operation.operation_key} scored below publish bar: ${String(quality.grade)}`,\n );\n }\n\n await writeFile(adapter_path, operationAdapterSource(operation, manifest), \"utf8\");\n await writeFile(stubs_path, operationStubsSource(operation), \"utf8\");\n await writeFile(manifest_path, renderJson(manifest), \"utf8\");\n await writeFile(tool_manual_path, renderJson(tool_manual), \"utf8\");\n await writeFile(runtime_validation_path, renderJson(buildRuntimeValidationTemplate(tool_manual)), \"utf8\");\n await writeFile(docs_usage_path, apiUsageDocsTemplate(manifest), \"utf8\");\n await writeOrMergeGitignore(gitignore_path);\n await writeFile(readme_path, operationReadmeTemplate(operation, manifest, warning), \"utf8\");\n await writeFile(test_path, operationTestSource(operation), \"utf8\");\n return {\n files: [\n adapter_path,\n stubs_path,\n manifest_path,\n tool_manual_path,\n runtime_validation_path,\n docs_usage_path,\n gitignore_path,\n readme_path,\n test_path,\n ],\n operation,\n report: {\n tool_manual_valid,\n tool_manual_issues: (tool_manual_issues as ToolManualIssue[]).map((issue) => toJsonable(issue)),\n quality: toJsonable(quality),\n warning: warning ?? null,\n },\n };\n}\n\nasync function projectValidationIssues(project: LoadedProject): Promise<string[]> {\n const harness = new AppTestHarness(project.app);\n return harness.validate_manifest();\n}\n\nasync function runHarnessForProject(project: LoadedProject): Promise<Record<string, unknown>> {\n const harness = new AppTestHarness(project.app);\n const manifest_issues = await harness.validate_manifest();\n const health = await harness.health();\n const task_type = project.app.supported_task_types()[0] ?? \"default\";\n const sample_input = sampleInputFromSchema(project.tool_manual.input_schema);\n\n const checks: Array<Record<string, unknown>> = [\n {\n name: \"manifest_validation\",\n ok: manifest_issues.length === 0,\n details: manifest_issues,\n },\n {\n name: \"health\",\n ok: Boolean(health.healthy),\n details: { healthy: health.healthy, message: health.message ?? \"\" },\n },\n ];\n\n checks.push(executionCheck(\"dry_run\", await harness.dry_run(task_type, { input_params: sample_input }), harness));\n if (project.manifest.permission_class === PermissionClass.ACTION || project.manifest.permission_class === PermissionClass.PAYMENT) {\n checks.push(executionCheck(\"action\", await harness.execute_action(task_type, { input_params: sample_input }), harness));\n }\n if (project.manifest.permission_class === PermissionClass.PAYMENT) {\n checks.push(executionCheck(\"quote\", await harness.execute_quote(task_type, { input_params: sample_input }), harness));\n checks.push(executionCheck(\"payment\", await harness.execute_payment(task_type, { input_params: sample_input }), harness));\n }\n checks.push(\n executionCheck(\n \"missing_account_simulation\",\n await harness.simulate_connected_account_missing(task_type, { input_params: sample_input }),\n harness,\n ),\n );\n\n return {\n adapter_path: project.adapter_path,\n task_type,\n sample_input,\n checks,\n ok: checks.every((check) => check.ok),\n };\n}\n\nfunction executionCheck(name: string, result: ExecutionResult, harness: AppTestHarness): Record<string, unknown> {\n const receipt_issues = harness.validate_receipt(result);\n return {\n name,\n ok: Boolean(result.success) && receipt_issues.length === 0,\n details: {\n success: Boolean(result.success),\n execution_kind: result.execution_kind,\n receipt_issues,\n output: toJsonable(result.output ?? {}),\n },\n };\n}\n\nfunction toolManualPermissionClass(permission_class: AppManifest[\"permission_class\"]): ToolManual[\"permission_class\"] {\n switch (permission_class) {\n case PermissionClass.ACTION:\n return ToolManualPermissionClass.ACTION;\n case PermissionClass.PAYMENT:\n return ToolManualPermissionClass.PAYMENT;\n default:\n return ToolManualPermissionClass.READ_ONLY;\n }\n}\n\nasync function loadJsonDocument(path: string): Promise<Record<string, unknown>> {\n const payload = JSON.parse(await readFile(path, \"utf8\")) as unknown;\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) {\n throw new SiglumeProjectError(`${path} must contain a top-level JSON object.`);\n }\n return payload as Record<string, unknown>;\n}\n\nfunction detectDocumentKind(\n oldPayload: Record<string, unknown>,\n newPayload: Record<string, unknown>,\n): \"manifest\" | \"tool_manual\" {\n const oldKind = payloadKind(oldPayload);\n const newKind = payloadKind(newPayload);\n if (oldKind !== newKind) {\n throw new SiglumeProjectError(\"Both files must be the same document type (manifest or tool_manual).\");\n }\n if (!oldKind) {\n throw new SiglumeProjectError(\"Could not detect document type. Expected AppManifest or ToolManual JSON.\");\n }\n return oldKind;\n}\n\nfunction payloadKind(payload: Record<string, unknown>): \"manifest\" | \"tool_manual\" | null {\n // ToolManual takes precedence over AppManifest when both identity keys\n // are present: a manifest has no `tool_name` field, so the presence of\n // `tool_name` is a stronger signal. This avoids misclassifying a\n // ToolManual payload (that happens to carry capability_key metadata)\n // as a manifest, which would silently hide ToolManual-specific\n // breaking changes (e.g. input_schema.required additions).\n if (isToolManualPayload(payload)) {\n return \"tool_manual\";\n }\n if (isManifestPayload(payload)) {\n return \"manifest\";\n }\n return null;\n}\n\nfunction isManifestPayload(payload: Record<string, unknown>): boolean {\n // Identify AppManifest by its unique capability_key (format-checked).\n // Other fields have defaults in the dataclass shape, so requiring them\n // would reject legitimate minimal / legacy manifests; the diff engine\n // already normalizes missing defaults.\n const key = payload.capability_key;\n return typeof key === \"string\" && CAPABILITY_KEY_RE.test(key);\n}\n\nfunction isToolManualPayload(payload: Record<string, unknown>): boolean {\n // Identify ToolManual by tool_name. AppManifest has no tool_name field,\n // so this is unambiguous against manifests. Optional fields are not\n // required for discrimination  Ethe diff engine fills in defaults.\n const toolName = payload.tool_name;\n return typeof toolName === \"string\" && toolName.trim().length > 0;\n}\n\nasync function findAdapterPath(target: string): Promise<string> {\n if (existsSync(target) && SUPPORTED_EXTENSIONS.has(extname(target))) {\n return target;\n }\n\n const preferred = join(target, \"adapter.ts\");\n if (existsSync(preferred)) {\n return preferred;\n }\n\n const entries = await readdir(target, { withFileTypes: true });\n const candidates = entries\n .filter((entry) => entry.isFile() && SUPPORTED_EXTENSIONS.has(extname(entry.name)))\n .map((entry) => join(target, entry.name))\n .filter((filePath) => basename(filePath) !== \"register_via_client.ts\");\n\n if (candidates.length === 0) {\n throw new SiglumeProjectError(`No adapter TypeScript/JavaScript file found in ${target}`);\n }\n if (candidates.length > 1) {\n throw new SiglumeProjectError(`Multiple adapter files found in ${target}. Pass the adapter file path explicitly.`);\n }\n return candidates[0]!;\n}\n\nasync function findToolManualPath(root_dir: string): Promise<string | null> {\n for (const name of [\"tool_manual.json\", \"tool-manual.json\"]) {\n const candidate = join(root_dir, name);\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return null;\n}\n\nasync function findRuntimeValidationPath(root_dir: string): Promise<string | null> {\n for (const name of [\"runtime_validation.json\", \"runtime-validation.json\"]) {\n const candidate = join(root_dir, name);\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return null;\n}\n\nasync function findOauthCredentialsPath(root_dir: string): Promise<string | null> {\n for (const name of [\"oauth_credentials.json\", \"oauth-credentials.json\"]) {\n const candidate = join(root_dir, name);\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return null;\n}\n\nasync function loadJsonObject(path: string, label: string): Promise<Record<string, unknown>> {\n let payload: unknown;\n try {\n payload = JSON.parse(await readFile(path, \"utf8\"));\n } catch (error) {\n throw new SiglumeProjectError(`${basename(path)} is not valid JSON: ${String(error)}`);\n }\n if (!isRecord(payload)) {\n throw new SiglumeProjectError(`${label} must be a JSON object`);\n }\n return payload;\n}\n\nasync function loadApp(adapter_path: string): Promise<AppAdapter> {\n const jiti = createJiti(process.cwd(), { moduleCache: false });\n const loaded = (await jiti.import(adapter_path)) as Record<string, unknown>;\n const candidates = [loaded.default, ...Object.values(loaded)];\n const seen = new Set<unknown>();\n const matches: AppAdapter[] = [];\n\n for (const candidate of candidates) {\n if (candidate === undefined || seen.has(candidate)) {\n continue;\n }\n seen.add(candidate);\n if (candidate instanceof AppAdapter) {\n matches.push(candidate);\n continue;\n }\n if (\n typeof candidate === \"function\" &&\n (candidate.prototype instanceof AppAdapter ||\n (typeof candidate.prototype?.manifest === \"function\" && typeof candidate.prototype?.execute === \"function\"))\n ) {\n matches.push(new (candidate as new () => AppAdapter)());\n continue;\n }\n if (\n candidate &&\n typeof candidate === \"object\" &&\n \"manifest\" in candidate &&\n typeof (candidate as { manifest?: unknown }).manifest === \"function\" &&\n \"execute\" in candidate &&\n typeof (candidate as { execute?: unknown }).execute === \"function\"\n ) {\n matches.push(candidate as AppAdapter);\n }\n }\n\n if (matches.length === 0) {\n throw new SiglumeProjectError(`No AppAdapter subclass found in ${adapter_path}`);\n }\n if (matches.length > 1) {\n throw new SiglumeProjectError(`Multiple AppAdapter subclasses found in ${adapter_path}. Keep one per file for CLI workflows.`);\n }\n return matches[0]!;\n}\n\nfunction sampleInputFromSchema(schema: unknown): Record<string, unknown> {\n if (!schema || typeof schema !== \"object\" || Array.isArray(schema)) {\n return { query: \"Run a representative test request.\" };\n }\n const properties = (schema as Record<string, unknown>).properties;\n const required = Array.isArray((schema as Record<string, unknown>).required)\n ? ((schema as Record<string, unknown>).required as unknown[]).filter((item): item is string => typeof item === \"string\")\n : [];\n if (!properties || typeof properties !== \"object\" || Array.isArray(properties)) {\n return { query: \"Run a representative test request.\" };\n }\n const requiredFields = required.length > 0 ? required : Object.keys(properties);\n const output: Record<string, unknown> = {};\n for (const [fieldName, propertySchema] of Object.entries(properties)) {\n if (requiredFields.includes(fieldName)) {\n output[fieldName] = sampleValueFromProperty(propertySchema);\n }\n }\n return Object.keys(output).length > 0 ? output : { query: \"Run a representative test request.\" };\n}\n\nfunction sampleValueFromProperty(schema: unknown): unknown {\n if (!schema || typeof schema !== \"object\" || Array.isArray(schema)) {\n return \"sample\";\n }\n const property = schema as Record<string, unknown>;\n if (\"default\" in property) {\n return property.default;\n }\n if (Array.isArray(property.enum) && property.enum.length > 0) {\n return property.enum[0];\n }\n switch (property.type) {\n case \"integer\":\n return 1;\n case \"number\":\n return 1.0;\n case \"boolean\":\n return true;\n case \"array\":\n return [sampleValueFromProperty(property.items)];\n case \"object\":\n if (property.properties && typeof property.properties === \"object\" && !Array.isArray(property.properties)) {\n return Object.fromEntries(\n Object.entries(property.properties as Record<string, unknown>).map(([key, value]) => [key, sampleValueFromProperty(value)]),\n );\n }\n return {};\n default:\n return \"sample\";\n }\n}\n\nasync function resolveApiKey(env: Record<string, string | undefined> = process.env): Promise<string> {\n const envValue = env.SIGLUME_API_KEY;\n if (envValue) {\n return envValue;\n }\n const credentialsPath = join(homedir(), \".siglume\", \"credentials.toml\");\n if (existsSync(credentialsPath)) {\n const text = await readFile(credentialsPath, \"utf8\");\n const topLevel = text.match(/^\\s*api_key\\s*=\\s*[\"']([^\"']+)[\"']/m);\n if (topLevel?.[1]) {\n return topLevel[1].trim();\n }\n const defaultSection = text.match(/\\[default\\]([\\s\\S]*)/m)?.[1] ?? \"\";\n const nested = defaultSection.match(/^\\s*api_key\\s*=\\s*[\"']([^\"']+)[\"']/m);\n if (nested?.[1]) {\n return nested[1].trim();\n }\n }\n throw new SiglumeProjectError(\"SIGLUME_API_KEY is not set. Export it or add api_key to ~/.siglume/credentials.toml.\");\n}\n\nfunction fallbackTemplateSource(template: TemplateName): string {\n const className = {\n echo: \"StarterEchoApp\",\n \"price-compare\": \"StarterPriceCompareApp\",\n publisher: \"StarterPublisherApp\",\n payment: \"StarterPaymentApp\",\n }[template];\n const permissionClass = {\n echo: \"PermissionClass.READ_ONLY\",\n \"price-compare\": \"PermissionClass.READ_ONLY\",\n publisher: \"PermissionClass.ACTION\",\n payment: \"PermissionClass.PAYMENT\",\n }[template];\n const approvalMode = {\n echo: \"ApprovalMode.AUTO\",\n \"price-compare\": \"ApprovalMode.AUTO\",\n publisher: \"ApprovalMode.ALWAYS_ASK\",\n payment: \"ApprovalMode.ALWAYS_ASK\",\n }[template];\n\n return [\n \"import {\",\n \" AppAdapter,\",\n \" AppCategory,\",\n \" ApprovalMode,\",\n \" ExecutionResult,\",\n \" PermissionClass,\",\n \" PriceModel,\",\n \"} from \\\"@siglume/api-sdk\\\";\",\n \"\",\n `export default class ${className} extends AppAdapter {`,\n \" manifest() {\",\n \" return {\",\n ` capability_key: \\\"${template}-starter\\\",`,\n ` name: \\\"${className}\\\",`,\n \" job_to_be_done: \\\"Describe what this starter API should do.\\\",\",\n \" category: AppCategory.OTHER,\",\n \" store_vertical: 'api' as const,\",\n ` permission_class: ${permissionClass},`,\n ` approval_mode: ${approvalMode},`,\n \" dry_run_supported: true,\",\n \" required_connected_accounts: [],\",\n \" price_model: PriceModel.FREE,\",\n \" currency: 'USD' as const,\",\n \" jurisdiction: \\\"US\\\",\",\n \" short_description: \\\"Starter template generated by siglume init.\\\",\",\n \" support_contact: \\\"support@example.com\\\",\",\n \" docs_url: \\\"https://example.com/docs\\\",\",\n \" example_prompts: [\\\"Describe a realistic prompt for this API.\\\"],\",\n \" compatibility_tags: [\\\"starter\\\"],\",\n \" };\",\n \" }\",\n \"\",\n \" async execute(ctx) {\",\n \" return {\",\n \" success: true,\",\n \" execution_kind: ctx.execution_kind,\",\n \" output: {\",\n \" summary: \\\"Starter execution completed.\\\",\",\n \" input: ctx.input_params,\",\n \" },\",\n \" };\",\n \" }\",\n \"}\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction starterManifest(template: TemplateName): AppManifest {\n const className = {\n echo: \"StarterEchoApp\",\n \"price-compare\": \"StarterPriceCompareApp\",\n publisher: \"StarterPublisherApp\",\n payment: \"StarterPaymentApp\",\n }[template];\n const permission_class = {\n echo: PermissionClass.READ_ONLY,\n \"price-compare\": PermissionClass.READ_ONLY,\n publisher: PermissionClass.ACTION,\n payment: PermissionClass.PAYMENT,\n }[template];\n const approval_mode = {\n echo: \"auto\",\n \"price-compare\": \"auto\",\n publisher: \"always-ask\",\n payment: \"always-ask\",\n } as const;\n return {\n capability_key: `${template}-starter`,\n name: className,\n job_to_be_done: \"Describe what this starter API should do.\",\n category: \"other\",\n store_vertical: \"api\" as const,\n permission_class,\n approval_mode: approval_mode[template],\n dry_run_supported: true,\n required_connected_accounts: [],\n price_model: \"free\",\n currency: \"USD\",\n jurisdiction: \"US\",\n short_description: \"Starter template generated by siglume init.\",\n support_contact: \"support@example.com\",\n docs_url: \"https://example.com/docs\",\n example_prompts: [\"Describe a realistic prompt for this API.\"],\n compatibility_tags: [\"starter\"],\n };\n}\n\nfunction readmeTemplate(template: TemplateName): string {\n return [\n \"# Siglume Starter\",\n \"\",\n `This project was generated with \\`siglume init --template ${template}\\`.`,\n \"\",\n \"Files:\",\n \"- `adapter.ts`: your AppAdapter implementation\",\n \"- `manifest.json`: serialized AppManifest snapshot\",\n \"- `tool_manual.json`: editable ToolManual draft for validation and registration\",\n \"- `runtime_validation.json`: local live API smoke-test contract used during registration\",\n \"- `docs/api-usage.md`: publish this page and use its public URL as `docs_url`\",\n \"- `.gitignore`: keeps runtime review keys and OAuth client secrets out of Git\",\n \"\",\n \"Before registering, replace all generated placeholders:\",\n \"- In `adapter.ts` and `manifest.json`, replace `docs_url` with a dedicated public API usage guide, not a homepage.\",\n \"- Replace `support_contact` with a real support email address or public support URL.\",\n \"- Optional `seller_homepage_url` is the seller's official site and can stay blank.\",\n \"- In the local `runtime_validation.json`, replace the public URL and review-key placeholders.\",\n \"- If the API uses seller-side OAuth, create a local `oauth_credentials.json` next to the adapter.\",\n \"- Do not commit real review keys or OAuth client secrets; the generated `.gitignore` excludes those files.\",\n \"- Because `runtime_validation.json` is ignored, GitHub samples do not commit review-key values.\",\n \"\",\n \"Suggested workflow:\",\n \"\",\n \"Start locally without a Siglume API key:\",\n \"\",\n \"```bash\",\n \"siglume test .\",\n \"siglume score . --offline\",\n \"```\",\n \"\",\n \"After placeholders are replaced and `SIGLUME_API_KEY` is issued from Developer Portal -> CLI / API keys, run the server-aligned checks:\",\n \"\",\n \"```bash\",\n \"siglume validate .\",\n \"siglume score . --remote\",\n \"siglume preflight .\",\n \"siglume register .\",\n \"# review-only staging path:\",\n \"siglume register . --draft-only\",\n \"```\",\n \"\",\n ].join(\"\\n\");\n}\n","import type { AppManifest, JsonValue, ToolManual } from \"./types\";\nimport { coerceMapping, isRecord, toJsonable } from \"./utils\";\n\nconst MANIFEST_PERMISSION_ORDER: Record<string, number> = {\n \"read-only\": 0,\n recommendation: 0,\n action: 1,\n payment: 2,\n};\nconst TOOL_MANUAL_PERMISSION_ORDER: Record<string, number> = {\n read_only: 0,\n action: 1,\n payment: 2,\n};\nconst SPECIAL_MANIFEST_KEYS = new Set([\n \"version\",\n \"name\",\n \"short_description\",\n \"permission_class\",\n \"price_model\",\n \"currency\",\n \"jurisdiction\",\n]);\nconst SPECIAL_TOOL_MANUAL_KEYS = new Set([\n \"input_schema\",\n \"output_schema\",\n \"permission_class\",\n \"settlement_mode\",\n \"currency\",\n \"side_effect_summary\",\n \"jurisdiction\",\n \"trigger_conditions\",\n \"do_not_use_when\",\n \"approval_summary_template\",\n]);\n\nexport const ChangeLevel = {\n BREAKING: \"breaking\",\n WARNING: \"warning\",\n INFO: \"info\",\n} as const;\nexport type ChangeLevel = (typeof ChangeLevel)[keyof typeof ChangeLevel];\n\nexport const BreakingChange = ChangeLevel.BREAKING;\n\nexport interface Change {\n level: ChangeLevel;\n path: string;\n old: JsonValue | Record<string, unknown> | unknown[] | null;\n new: JsonValue | Record<string, unknown> | unknown[] | null;\n message: string;\n is_breaking: boolean;\n}\n\nexport function diff_manifest(options: {\n old: AppManifest | Record<string, unknown>;\n new: AppManifest | Record<string, unknown>;\n}): Change[] {\n const oldPayload = normalizeManifest(options.old);\n const newPayload = normalizeManifest(options.new);\n const changes: Change[] = [];\n const emittedKeys = new Set<string>();\n\n appendPermissionClassChange(\n changes,\n emittedKeys,\n \"permission_class\",\n oldPayload.permission_class,\n newPayload.permission_class,\n MANIFEST_PERMISSION_ORDER,\n \"Manifest permission_class escalated; existing callers may now require stronger approval.\",\n \"Manifest permission_class downgraded.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"price_model\",\n oldPayload.price_model,\n newPayload.price_model,\n \"Manifest price_model changed; billing compatibility may break existing installs.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"currency\",\n oldPayload.currency,\n newPayload.currency,\n \"Manifest currency changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"jurisdiction\",\n oldPayload.jurisdiction,\n newPayload.jurisdiction,\n \"Manifest jurisdiction changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.INFO,\n \"version\",\n oldPayload.version,\n newPayload.version,\n \"Manifest version changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.INFO,\n \"name\",\n oldPayload.name,\n newPayload.name,\n \"Manifest display name changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.INFO,\n \"short_description\",\n oldPayload.short_description,\n newPayload.short_description,\n \"Manifest short_description changed.\",\n );\n\n for (const key of [...new Set([...Object.keys(oldPayload), ...Object.keys(newPayload)])].sort()) {\n if (emittedKeys.has(key) || SPECIAL_MANIFEST_KEYS.has(key)) {\n continue;\n }\n const oldValue = oldPayload[key];\n const newValue = newPayload[key];\n if (valuesDiffer(oldValue, newValue)) {\n changes.push(createChange(ChangeLevel.INFO, key, oldValue, newValue, `Manifest field '${key}' changed.`));\n }\n }\n\n return sortChanges(changes);\n}\n\nexport function diff_tool_manual(options: {\n old: ToolManual | Record<string, unknown>;\n new: ToolManual | Record<string, unknown>;\n}): Change[] {\n const oldPayload = normalizeToolManual(options.old);\n const newPayload = normalizeToolManual(options.new);\n const changes: Change[] = [];\n const emittedKeys = new Set<string>();\n\n const oldRequired = stringList(toRecordValue(oldPayload.input_schema).required);\n const newRequired = stringList(toRecordValue(newPayload.input_schema).required);\n const addedRequired = [...new Set(newRequired.filter((fieldName) => !oldRequired.includes(fieldName)))].sort();\n const removedRequired = [...new Set(oldRequired.filter((fieldName) => !newRequired.includes(fieldName)))].sort();\n if (addedRequired.length > 0) {\n changes.push(\n createChange(\n ChangeLevel.BREAKING,\n \"input_schema.required\",\n oldRequired,\n newRequired,\n `input_schema.required added new required fields: ${addedRequired.join(\", \")}.`,\n ),\n );\n emittedKeys.add(\"input_schema\");\n }\n if (removedRequired.length > 0) {\n changes.push(\n createChange(\n ChangeLevel.INFO,\n \"input_schema.required\",\n oldRequired,\n newRequired,\n `input_schema.required removed fields: ${removedRequired.join(\", \")}.`,\n ),\n );\n emittedKeys.add(\"input_schema\");\n }\n\n appendPermissionClassChange(\n changes,\n emittedKeys,\n \"permission_class\",\n oldPayload.permission_class,\n newPayload.permission_class,\n TOOL_MANUAL_PERMISSION_ORDER,\n \"ToolManual permission_class escalated; existing callers may now require stronger approval.\",\n \"ToolManual permission_class downgraded.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"settlement_mode\",\n oldPayload.settlement_mode,\n newPayload.settlement_mode,\n \"ToolManual settlement_mode changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"currency\",\n oldPayload.currency,\n newPayload.currency,\n \"ToolManual currency changed.\",\n );\n if (valuesDiffer(oldPayload.side_effect_summary, newPayload.side_effect_summary)) {\n const oldSideEffect = oldPayload.side_effect_summary ?? null;\n const newSideEffect = newPayload.side_effect_summary ?? null;\n const level =\n isBlank(oldSideEffect) && !isBlank(newSideEffect)\n ? ChangeLevel.BREAKING\n : !isBlank(oldSideEffect) && isBlank(newSideEffect)\n ? ChangeLevel.INFO\n : ChangeLevel.BREAKING;\n const message =\n isBlank(oldSideEffect) && !isBlank(newSideEffect)\n ? \"ToolManual side_effect_summary was added, introducing a new side-effect contract.\"\n : !isBlank(oldSideEffect) && isBlank(newSideEffect)\n ? \"ToolManual side_effect_summary was removed.\"\n : \"ToolManual side_effect_summary changed.\";\n changes.push(\n createChange(\n level,\n \"side_effect_summary\",\n oldSideEffect,\n newSideEffect,\n message,\n ),\n );\n emittedKeys.add(\"side_effect_summary\");\n }\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.BREAKING,\n \"jurisdiction\",\n oldPayload.jurisdiction,\n newPayload.jurisdiction,\n \"ToolManual jurisdiction changed.\",\n );\n\n const oldOutputProperties = toRecordValue(toRecordValue(oldPayload.output_schema).properties);\n const newOutputProperties = toRecordValue(toRecordValue(newPayload.output_schema).properties);\n const oldOutputFields = Object.keys(oldOutputProperties).sort();\n const newOutputFields = Object.keys(newOutputProperties).sort();\n const addedOutputFields = [...new Set(newOutputFields.filter((fieldName) => !oldOutputFields.includes(fieldName)))].sort();\n const removedOutputFields = [...new Set(oldOutputFields.filter((fieldName) => !newOutputFields.includes(fieldName)))].sort();\n const changedOutputFields = [...new Set(\n oldOutputFields\n .filter((fieldName) => newOutputFields.includes(fieldName))\n .filter((fieldName) => valuesDiffer(oldOutputProperties[fieldName], newOutputProperties[fieldName])),\n )].sort();\n if (addedOutputFields.length > 0) {\n changes.push(\n createChange(\n ChangeLevel.WARNING,\n \"output_schema.properties\",\n oldOutputFields,\n newOutputFields,\n `output_schema added fields: ${addedOutputFields.join(\", \")}.`,\n ),\n );\n emittedKeys.add(\"output_schema\");\n }\n if (removedOutputFields.length > 0) {\n changes.push(\n createChange(\n ChangeLevel.BREAKING,\n \"output_schema.properties\",\n oldOutputFields,\n newOutputFields,\n `output_schema removed fields: ${removedOutputFields.join(\", \")}.`,\n ),\n );\n emittedKeys.add(\"output_schema\");\n }\n if (changedOutputFields.length > 0) {\n changes.push(\n createChange(\n ChangeLevel.WARNING,\n \"output_schema.properties\",\n oldOutputFields,\n newOutputFields,\n `output_schema changed field definitions: ${changedOutputFields.join(\", \")}.`,\n ),\n );\n emittedKeys.add(\"output_schema\");\n }\n\n appendLargeListChange(\n changes,\n emittedKeys,\n \"trigger_conditions\",\n stringList(oldPayload.trigger_conditions),\n stringList(newPayload.trigger_conditions),\n \"trigger_conditions changed substantially.\",\n \"trigger_conditions changed.\",\n );\n appendLargeListChange(\n changes,\n emittedKeys,\n \"do_not_use_when\",\n stringList(oldPayload.do_not_use_when),\n stringList(newPayload.do_not_use_when),\n \"do_not_use_when changed substantially.\",\n \"do_not_use_when changed.\",\n );\n appendValueChange(\n changes,\n emittedKeys,\n ChangeLevel.WARNING,\n \"approval_summary_template\",\n oldPayload.approval_summary_template,\n newPayload.approval_summary_template,\n \"approval_summary_template changed.\",\n );\n\n for (const key of [...new Set([...Object.keys(oldPayload), ...Object.keys(newPayload)])].sort()) {\n if (emittedKeys.has(key) || SPECIAL_TOOL_MANUAL_KEYS.has(key)) {\n continue;\n }\n const oldValue = oldPayload[key];\n const newValue = newPayload[key];\n if (valuesDiffer(oldValue, newValue)) {\n changes.push(createChange(ChangeLevel.INFO, key, oldValue, newValue, `ToolManual field '${key}' changed.`));\n }\n }\n\n return sortChanges(changes);\n}\n\nfunction appendLargeListChange(\n changes: Change[],\n emittedKeys: Set<string>,\n key: string,\n oldItems: string[],\n newItems: string[],\n warningMessage: string,\n infoMessage: string,\n): void {\n if (sameArray(oldItems, newItems)) {\n return;\n }\n const level = isMajorListChange(oldItems, newItems) ? ChangeLevel.WARNING : ChangeLevel.INFO;\n changes.push(createChange(level, key, oldItems, newItems, level === ChangeLevel.WARNING ? warningMessage : infoMessage));\n emittedKeys.add(key);\n}\n\nfunction appendPermissionClassChange(\n changes: Change[],\n emittedKeys: Set<string>,\n key: string,\n oldValue: unknown,\n newValue: unknown,\n rankMap: Record<string, number>,\n escalateMessage: string,\n downgradeMessage: string,\n): void {\n if (!valuesDiffer(oldValue, newValue)) {\n return;\n }\n const oldRank = typeof oldValue === \"string\" ? rankMap[oldValue] : undefined;\n const newRank = typeof newValue === \"string\" ? rankMap[newValue] : undefined;\n const level =\n oldRank !== undefined && newRank !== undefined && newRank > oldRank\n ? ChangeLevel.BREAKING\n : ChangeLevel.INFO;\n const message =\n oldRank !== undefined && newRank !== undefined && newRank > oldRank\n ? escalateMessage\n : oldRank !== undefined && newRank !== undefined && newRank < oldRank\n ? downgradeMessage\n : `${key} changed.`;\n changes.push(createChange(level, key, oldValue, newValue, message));\n emittedKeys.add(key);\n}\n\nfunction appendValueChange(\n changes: Change[],\n emittedKeys: Set<string>,\n level: ChangeLevel,\n key: string,\n oldValue: unknown,\n newValue: unknown,\n message: string,\n): void {\n if (valuesDiffer(oldValue, newValue)) {\n changes.push(createChange(level, key, oldValue, newValue, message));\n emittedKeys.add(key);\n }\n}\n\nfunction normalizeManifest(value: AppManifest | Record<string, unknown>): Record<string, unknown> {\n const payload = coerceMapping(value, \"manifest\");\n return {\n ...payload,\n price_model: payload.price_model ?? \"free\",\n currency: payload.currency ?? \"USD\",\n // AppManifest defaults permission_class to \"read-only\" (hyphen form,\n // PermissionClass.READ_ONLY). Without this default, a legacy / minimal\n // manifest without permission_class compared against an upgraded one\n // would leave oldRank undefined and appendPermissionClassChange would\n // downgrade the permission escalation from BREAKING to INFO — letting\n // the diff CLI exit 0 on a genuinely breaking change.\n permission_class: payload.permission_class ?? \"read-only\",\n };\n}\n\nfunction normalizeToolManual(value: ToolManual | Record<string, unknown>): Record<string, unknown> {\n const payload = coerceMapping(value, \"tool manual\");\n return {\n ...payload,\n permission_class: payload.permission_class ?? \"read_only\",\n requires_connected_accounts: stringList(payload.requires_connected_accounts),\n };\n}\n\nfunction createChange(\n level: ChangeLevel,\n path: string,\n oldValue: unknown,\n newValue: unknown,\n message: string,\n): Change {\n return {\n level,\n path,\n old: normalizeForChange(oldValue),\n new: normalizeForChange(newValue),\n message,\n is_breaking: level === ChangeLevel.BREAKING,\n };\n}\n\nfunction normalizeForChange(value: unknown): JsonValue | Record<string, unknown> | unknown[] | null {\n if (value === undefined) {\n return null;\n }\n const normalized = toJsonable(value);\n if (normalized === undefined) {\n return null;\n }\n return normalized as JsonValue | Record<string, unknown> | unknown[] | null;\n}\n\nfunction toRecordValue(value: unknown): Record<string, unknown> {\n return isRecord(value) ? { ...value } : {};\n}\n\nfunction stringList(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction valuesDiffer(left: unknown, right: unknown): boolean {\n return JSON.stringify(stableValue(normalizeForChange(left))) !== JSON.stringify(stableValue(normalizeForChange(right)));\n}\n\nfunction sameArray(left: string[], right: string[]): boolean {\n return left.length === right.length && left.every((value, index) => value === right[index]);\n}\n\nfunction isBlank(value: unknown): boolean {\n return typeof value !== \"string\" || value.trim().length === 0;\n}\n\nfunction isMajorListChange(oldItems: string[], newItems: string[]): boolean {\n const oldSet = new Set(oldItems.map((item) => item.trim().toLowerCase()).filter(Boolean));\n const newSet = new Set(newItems.map((item) => item.trim().toLowerCase()).filter(Boolean));\n if (oldSet.size === newSet.size && [...oldSet].every((item) => newSet.has(item))) {\n return false;\n }\n if (oldSet.size === 0 || newSet.size === 0) {\n return true;\n }\n const union = new Set([...oldSet, ...newSet]);\n const intersection = [...oldSet].filter((item) => newSet.has(item));\n const similarity = intersection.length / union.size;\n return similarity < 0.5 || (similarity === 0.5 && Math.abs(oldSet.size - newSet.size) >= 1);\n}\n\nfunction sortChanges(changes: Change[]): Change[] {\n const priority: Record<ChangeLevel, number> = {\n [ChangeLevel.BREAKING]: 0,\n [ChangeLevel.WARNING]: 1,\n [ChangeLevel.INFO]: 2,\n };\n return [...changes].sort((left, right) => {\n const levelDelta = priority[left.level] - priority[right.level];\n return levelDelta !== 0 ? levelDelta : left.path.localeCompare(right.path);\n });\n}\n\nfunction stableValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((item) => stableValue(item));\n }\n if (isRecord(value)) {\n return Object.fromEntries(\n Object.keys(value)\n .sort()\n .map((key) => [key, stableValue((value as Record<string, unknown>)[key])]),\n );\n }\n return value;\n}\n","import type { SettlementReceipt } from \"./web3\";\n\nexport type Awaitable<T> = T | Promise<T>;\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonValue = JsonPrimitive | JsonObject | JsonValue[];\nexport interface JsonObject {\n [key: string]: JsonValue;\n}\n\n/**\n * Permission tiers for AppManifest.\n *\n * Supported tiers: READ_ONLY / ACTION / PAYMENT.\n * RECOMMENDATION is a deprecated alias of READ_ONLY retained for backward\n * compatibility; ToolManualPermissionClass has never accepted it and the\n * platform normalizes it to \"read-only\" at registration. Do not use\n * RECOMMENDATION in new manifests — it will be removed in a future major\n * version.\n */\nexport const PermissionClass = {\n READ_ONLY: \"read-only\",\n ACTION: \"action\",\n PAYMENT: \"payment\",\n /** @deprecated Use READ_ONLY. Behaves identically. */\n RECOMMENDATION: \"recommendation\",\n} as const;\nexport type PermissionClass = (typeof PermissionClass)[keyof typeof PermissionClass];\n\nexport const ApprovalMode = {\n AUTO: \"auto\",\n BUDGET_BOUNDED: \"budget-bounded\",\n ALWAYS_ASK: \"always-ask\",\n DENY: \"deny\",\n} as const;\nexport type ApprovalMode = (typeof ApprovalMode)[keyof typeof ApprovalMode];\n\nexport const ExecutionKind = {\n DRY_RUN: \"dry_run\",\n QUOTE: \"quote\",\n ACTION: \"action\",\n PAYMENT: \"payment\",\n} as const;\nexport type ExecutionKind = (typeof ExecutionKind)[keyof typeof ExecutionKind];\n\nexport const Environment = {\n SANDBOX: \"sandbox\",\n LIVE: \"live\",\n} as const;\nexport type Environment = (typeof Environment)[keyof typeof Environment];\n\nexport const PriceModel = {\n FREE: \"free\",\n SUBSCRIPTION: \"subscription\",\n ONE_TIME: \"one_time\",\n BUNDLE: \"bundle\",\n USAGE_BASED: \"usage_based\",\n PER_ACTION: \"per_action\",\n} as const;\nexport type PriceModel = (typeof PriceModel)[keyof typeof PriceModel];\n\nexport const AppCategory = {\n COMMERCE: \"commerce\",\n BOOKING: \"booking\",\n CRM: \"crm\",\n FINANCE: \"finance\",\n DOCUMENT: \"document\",\n COMMUNICATION: \"communication\",\n MONITORING: \"monitoring\",\n OTHER: \"other\",\n} as const;\nexport type AppCategory = (typeof AppCategory)[keyof typeof AppCategory];\n\nexport const StoreVertical = {\n API: \"api\",\n GAME: \"game\",\n} as const;\nexport type StoreVertical = (typeof StoreVertical)[keyof typeof StoreVertical];\n\nexport const ListingCurrency = {\n USD: \"USD\",\n JPY: \"JPY\",\n} as const;\nexport type ListingCurrency = (typeof ListingCurrency)[keyof typeof ListingCurrency];\n\nexport interface ConnectedAccountRef {\n provider_key: string;\n session_token: string;\n scopes?: string[];\n environment?: Environment;\n}\n\nexport interface AppManifest {\n capability_key: string;\n version?: string;\n name: string;\n job_to_be_done: string;\n category?: AppCategory;\n permission_class: PermissionClass;\n approval_mode?: ApprovalMode;\n dry_run_supported?: boolean;\n required_connected_accounts?: unknown[];\n permission_scopes?: string[];\n price_model?: PriceModel;\n price_value_minor?: number;\n currency: ListingCurrency;\n jurisdiction: string;\n applicable_regulations?: string[];\n data_residency?: string;\n short_description?: string;\n description?: string;\n docs_url?: string;\n support_contact?: string;\n seller_homepage_url?: string;\n seller_social_url?: string;\n store_vertical: StoreVertical;\n compatibility_tags?: string[];\n example_prompts?: string[];\n latency_tier?: string;\n}\n\nexport interface ExecutionContext {\n agent_id: string;\n owner_user_id: string;\n task_type: string;\n input_params?: Record<string, unknown>;\n source_type?: string;\n environment?: Environment;\n execution_kind?: ExecutionKind;\n connected_accounts?: Record<string, ConnectedAccountRef>;\n budget_remaining_minor?: number | null;\n trace_id?: string;\n idempotency_key?: string;\n request_hash?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ExecutionArtifact {\n artifact_type: string;\n external_id?: string;\n external_url?: string;\n title?: string;\n summary?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SideEffectRecord {\n action: string;\n provider: string;\n external_id?: string;\n reversible?: boolean;\n reversal_hint?: string;\n timestamp_iso?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ReceiptRef {\n receipt_id: string;\n trace_id?: string;\n intent_id?: string;\n}\n\nexport interface ApprovalRequestHint {\n action_summary: string;\n permission_class: \"action\" | \"payment\";\n estimated_amount_minor?: number;\n currency?: string;\n side_effects?: string[];\n preview?: Record<string, unknown>;\n reversible?: boolean;\n}\n\nexport interface ExecutionResult {\n success: boolean;\n output?: Record<string, unknown>;\n execution_kind?: ExecutionKind;\n units_consumed?: number;\n amount_minor?: number;\n currency?: string;\n provider_status?: string;\n error_message?: string;\n fallback_applied?: boolean;\n needs_approval?: boolean;\n approval_prompt?: string;\n receipt_summary?: Record<string, unknown>;\n artifacts?: ExecutionArtifact[];\n side_effects?: SideEffectRecord[];\n receipt_ref?: ReceiptRef;\n approval_hint?: ApprovalRequestHint;\n}\n\nexport const ToolManualPermissionClass = {\n READ_ONLY: \"read_only\",\n ACTION: \"action\",\n PAYMENT: \"payment\",\n} as const;\nexport type ToolManualPermissionClass =\n (typeof ToolManualPermissionClass)[keyof typeof ToolManualPermissionClass];\n\nexport const SettlementMode = {\n STRIPE_CHECKOUT: \"stripe_checkout\",\n STRIPE_PAYMENT_INTENT: \"stripe_payment_intent\",\n POLYGON_MANDATE: \"polygon_mandate\",\n EMBEDDED_WALLET_CHARGE: \"embedded_wallet_charge\",\n} as const;\nexport type SettlementMode = (typeof SettlementMode)[keyof typeof SettlementMode];\n\nexport interface ToolManual {\n tool_name: string;\n job_to_be_done: string;\n summary_for_model: string;\n trigger_conditions: string[];\n do_not_use_when: string[];\n permission_class: ToolManualPermissionClass;\n dry_run_supported: boolean;\n requires_connected_accounts: string[];\n input_schema: Record<string, unknown>;\n output_schema: Record<string, unknown>;\n usage_hints: string[];\n result_hints: string[];\n error_hints: string[];\n approval_summary_template?: string;\n preview_schema?: Record<string, unknown>;\n idempotency_support?: boolean;\n side_effect_summary?: string;\n quote_schema?: Record<string, unknown>;\n currency?: string;\n settlement_mode?: SettlementMode;\n refund_or_cancellation_note?: string;\n jurisdiction?: string;\n legal_notes?: string;\n}\n\nexport type ToolManualIssueSeverity = \"error\" | \"warning\" | \"critical\" | \"suggestion\";\nexport type ToolManualGrade = \"A\" | \"B\" | \"C\" | \"D\" | \"F\";\n\nexport interface ToolManualIssue {\n code: string;\n message: string;\n field?: string;\n severity: ToolManualIssueSeverity;\n suggestion?: string;\n}\n\nexport interface ToolManualQualityReport {\n overall_score: number;\n grade: ToolManualGrade;\n issues: ToolManualIssue[];\n keyword_coverage_estimate: number;\n improvement_suggestions: string[];\n publishable?: boolean | null;\n validation_ok?: boolean;\n validation_errors?: ToolManualIssue[];\n validation_warnings?: ToolManualIssue[];\n}\n\nexport interface HealthCheckResult {\n healthy: boolean;\n message?: string;\n provider_status?: Record<string, string>;\n}\n\nexport interface EnvelopeMeta {\n request_id?: string | null;\n trace_id?: string | null;\n}\n\nexport interface CursorPage<T> {\n items: T[];\n next_cursor?: string | null;\n limit?: number | null;\n offset?: number | null;\n meta: EnvelopeMeta;\n all_items?: () => Promise<T[]>;\n allItems?: () => Promise<T[]>;\n}\n\nexport interface AppListingRecord {\n listing_id: string;\n capability_key: string;\n name: string;\n status: string;\n category?: string | null;\n job_to_be_done?: string | null;\n permission_class?: string | null;\n approval_mode?: string | null;\n dry_run_supported: boolean;\n price_model?: string | null;\n price_value_minor: number;\n currency: string;\n short_description?: string | null;\n description?: string | null;\n docs_url?: string | null;\n support_contact?: string | null;\n seller_display_name?: string | null;\n seller_homepage_url?: string | null;\n seller_social_url?: string | null;\n review_status?: string | null;\n review_note?: string | null;\n submission_blockers: string[];\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface ConnectedAccountOAuthStart {\n authorize_url: string;\n state: string;\n provider_key: string;\n scopes: string[];\n pkce_method?: string | null;\n}\n\nexport interface ConnectedAccountLifecycleResult {\n connected_account_id: string;\n provider_key: string;\n expires_at?: string | null;\n scopes: string[];\n refreshed_at?: string | null;\n connection_status?: string | null;\n provider_revoked?: boolean | null;\n revoked_at?: string | null;\n}\n\nexport interface BundleMember {\n capability_listing_id: string;\n capability_key?: string | null;\n title?: string | null;\n position: number;\n status?: string | null;\n added_at?: string | null;\n link_id?: string | null;\n}\n\nexport interface BundleListingRecord {\n bundle_id: string;\n bundle_key: string;\n display_name: string;\n status: string;\n price_model: string;\n price_value_minor?: number | null;\n currency: string;\n description?: string | null;\n category?: string | null;\n jurisdiction?: string | null;\n members: BundleMember[];\n submitted_at?: string | null;\n published_at?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AutoRegistrationReceipt {\n listing_id: string;\n status: string;\n registration_mode?: string | null;\n listing_status?: string | null;\n auto_manifest: Record<string, unknown>;\n confidence: Record<string, unknown>;\n validation_report?: Record<string, unknown>;\n oauth_status?: Record<string, unknown>;\n review_url?: string | null;\n trace_id?: string | null;\n request_id?: string | null;\n}\n\nexport interface RegistrationQuality {\n overall_score: number;\n grade: string;\n issues: Array<Record<string, unknown>>;\n improvement_suggestions: string[];\n raw: Record<string, unknown>;\n}\n\nexport interface RegistrationConfirmation {\n listing_id: string;\n status: string;\n message?: string | null;\n checklist?: Record<string, boolean>;\n release: Record<string, unknown>;\n quality: RegistrationQuality;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface DeveloperPortalSummary {\n seller_onboarding?: Record<string, unknown> | null;\n platform: Record<string, unknown>;\n monetization: Record<string, unknown>;\n payout_readiness: Record<string, unknown>;\n listings: Record<string, unknown>;\n usage: Record<string, unknown>;\n support: Record<string, unknown>;\n apps: AppListingRecord[];\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface SandboxSession {\n session_id: string;\n agent_id: string;\n capability_key: string;\n environment: string;\n sandbox_support?: string | null;\n dry_run_supported: boolean;\n approval_mode?: string | null;\n required_connected_accounts: unknown[];\n connected_accounts: Array<Record<string, unknown>>;\n stub_providers_enabled: boolean;\n simulated_receipts: boolean;\n approval_simulator: boolean;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccessGrantRecord {\n access_grant_id: string;\n capability_listing_id: string;\n grant_status: string;\n billing_model?: string | null;\n agent_id?: string | null;\n starts_at?: string | null;\n ends_at?: string | null;\n bindings: Array<Record<string, unknown>>;\n metadata: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface CapabilityBindingRecord {\n binding_id: string;\n access_grant_id: string;\n agent_id: string;\n binding_status: string;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface GrantBindingResult {\n binding: CapabilityBindingRecord;\n access_grant: AccessGrantRecord;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface ConnectedAccountRecord {\n connected_account_id: string;\n provider_key: string;\n account_role: string;\n display_name?: string | null;\n environment?: string | null;\n connection_status?: string | null;\n scopes: string[];\n metadata: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface UsageEventRecord {\n usage_event_id: string;\n capability_key?: string | null;\n agent_id?: string | null;\n dimension?: string | null;\n environment?: string | null;\n task_type?: string | null;\n units_consumed: number;\n outcome?: string | null;\n execution_kind?: string | null;\n permission_class?: string | null;\n approval_mode?: string | null;\n latency_ms?: number | null;\n trace_id?: string | null;\n period_key?: string | null;\n external_id?: string | null;\n occurred_at_iso?: string | null;\n created_at?: string | null;\n metadata: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface SupportCaseRecord {\n support_case_id: string;\n case_type: string;\n summary: string;\n status: string;\n capability_key?: string | null;\n agent_id?: string | null;\n trace_id?: string | null;\n environment?: string | null;\n resolution_note?: string | null;\n metadata: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AgentRecord {\n agent_id: string;\n name: string;\n avatar_url?: string | null;\n description?: string | null;\n agent_type?: string | null;\n status?: string | null;\n expertise: string[];\n post_count?: number | null;\n reply_count?: number | null;\n paused?: boolean | null;\n style?: string | null;\n manifesto_text?: string | null;\n capabilities: Record<string, unknown>;\n settings: Record<string, unknown>;\n growth: Record<string, unknown>;\n plan: Record<string, unknown>;\n reputation: Record<string, unknown>;\n items: Array<Record<string, unknown>>;\n next_cursor?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AgentCharter {\n charter_id: string;\n agent_id: string;\n principal_user_id?: string | null;\n version: number;\n active: boolean;\n role: string;\n charter_text?: string | null;\n goals: Record<string, unknown>;\n target_profile: Record<string, unknown>;\n qualification_criteria: Record<string, unknown>;\n success_metrics: Record<string, unknown>;\n constraints: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface ApprovalPolicy {\n approval_policy_id: string;\n agent_id: string;\n principal_user_id?: string | null;\n version: number;\n active: boolean;\n auto_approve_below: Record<string, number>;\n always_require_approval_for: string[];\n deny_if: Record<string, unknown>;\n approval_ttl_minutes: number;\n structured_only: boolean;\n default_requires_approval: boolean;\n merchant_allowlist: string[];\n merchant_denylist: string[];\n category_allowlist: string[];\n category_denylist: string[];\n risk_policy: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface BudgetPolicy {\n budget_id: string;\n agent_id: string;\n principal_user_id?: string | null;\n currency: string;\n period_start?: string | null;\n period_end?: string | null;\n period_limit_minor: number;\n spent_minor: number;\n reserved_minor: number;\n per_order_limit_minor: number;\n auto_approve_below_minor: number;\n limits: Record<string, number>;\n metadata: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface MarketNeedRecord {\n need_id: string;\n owner_user_id?: string | null;\n principal_user_id?: string | null;\n buyer_agent_id?: string | null;\n charter_id?: string | null;\n charter_version: number;\n title?: string | null;\n problem_statement?: string | null;\n category_key?: string | null;\n budget_min_minor?: number | null;\n budget_max_minor?: number | null;\n urgency: number;\n requirement_jsonb: Record<string, unknown>;\n status: string;\n source_kind?: string | null;\n source_ref_id?: string | null;\n metadata: Record<string, unknown>;\n detected_at?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolRecord {\n binding_id: string;\n listing_id: string;\n release_id?: string | null;\n display_name?: string | null;\n permission_class?: string | null;\n binding_status?: string | null;\n account_readiness?: string | null;\n settlement_mode?: string | null;\n settlement_currency?: string | null;\n settlement_network?: string | null;\n accepted_payment_tokens: string[];\n last_used_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolConnectionReadiness {\n agent_id: string;\n all_ready: boolean;\n bindings: Record<string, string>;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolBindingPolicyRecord {\n policy_id: string;\n capability_listing_id?: string | null;\n owner_user_id?: string | null;\n permission_class?: string | null;\n max_calls_per_day?: number | null;\n monthly_usage_cap?: number | null;\n max_spend_per_execution?: number | null;\n allowed_tasks_jsonb: string[];\n allowed_source_types_jsonb: string[];\n timeout_ms?: number | null;\n cooldown_seconds?: number | null;\n require_owner_approval: boolean;\n require_owner_approval_over_cost?: number | null;\n dry_run_only: boolean;\n retry_policy_jsonb: Record<string, unknown>;\n fallback_mode?: string | null;\n auto_execute_read_only: boolean;\n allow_background_execution: boolean;\n max_calls_per_hour?: number | null;\n max_chain_steps?: number | null;\n max_parallel_executions: number;\n max_spend_usd_cents_per_day?: number | null;\n approval_mode: string;\n kill_switch_state: string;\n allowed_connected_account_ids_jsonb: string[];\n metadata_jsonb: Record<string, unknown>;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolPolicyUpdateResult {\n agent_id: string;\n operation_key: string;\n status: string;\n approval_required: boolean;\n intent_id?: string | null;\n approval_status?: string | null;\n approval_snapshot_hash?: string | null;\n message: string;\n action: Record<string, unknown>;\n preview: Record<string, unknown>;\n safety: Record<string, unknown>;\n policy?: InstalledToolBindingPolicyRecord | null;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolExecutionRecord {\n intent_id: string;\n agent_id: string;\n owner_user_id?: string | null;\n binding_id?: string | null;\n release_id?: string | null;\n source?: string | null;\n goal?: string | null;\n input_payload_jsonb: Record<string, unknown>;\n plan_jsonb: Record<string, unknown>;\n status: string;\n approval_status?: string | null;\n approval_snapshot_hash?: string | null;\n approval_snapshot_jsonb: Record<string, unknown>;\n approval_note?: string | null;\n rejection_reason?: string | null;\n permission_class?: string | null;\n idempotency_key?: string | null;\n trace_id?: string | null;\n error_class?: string | null;\n error_message?: string | null;\n metadata_jsonb: Record<string, unknown>;\n queued_at?: string | null;\n started_at?: string | null;\n completed_at?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolReceiptRecord {\n receipt_id: string;\n intent_id: string;\n agent_id: string;\n owner_user_id?: string | null;\n binding_id?: string | null;\n grant_id?: string | null;\n release_ids_jsonb: string[];\n execution_source?: string | null;\n status: string;\n permission_class?: string | null;\n approval_status?: string | null;\n step_count: number;\n total_latency_ms?: number | null;\n total_billable_units: number;\n total_amount_usd_cents?: number | null;\n summary?: string | null;\n failure_reason?: string | null;\n trace_id?: string | null;\n metadata_jsonb: Record<string, unknown>;\n started_at?: string | null;\n completed_at?: string | null;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface InstalledToolReceiptStepRecord {\n step_receipt_id: string;\n intent_id: string;\n step_id: string;\n tool_name: string;\n binding_id?: string | null;\n release_id?: string | null;\n dry_run: boolean;\n status: string;\n args_hash?: string | null;\n args_preview_redacted?: string | null;\n output_hash?: string | null;\n output_preview_redacted?: string | null;\n provider_latency_ms?: number | null;\n retry_count: number;\n error_class?: string | null;\n connected_account_ref?: string | null;\n metadata_jsonb: Record<string, unknown>;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksCategoryRecord {\n key: string;\n name_ja?: string | null;\n name_en?: string | null;\n description_ja?: string | null;\n description_en?: string | null;\n icon_url?: string | null;\n open_job_count: number;\n display_order: number;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksRegistrationRecord {\n agent_id: string;\n works_registered: boolean;\n tagline?: string | null;\n categories: string[];\n capabilities: string[];\n description?: string | null;\n execution_status: string;\n approval_required: boolean;\n intent_id?: string | null;\n approval_status?: string | null;\n approval_snapshot_hash?: string | null;\n approval_preview: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksOwnerDashboardAgent {\n agent_id: string;\n name?: string | null;\n reputation: Record<string, unknown>;\n capabilities: string[];\n raw: Record<string, unknown>;\n}\n\nexport interface WorksOwnerDashboardPitch {\n proposal_id: string;\n need_id?: string | null;\n title?: string | null;\n title_en?: string | null;\n status?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksOwnerDashboardOrder {\n order_id: string;\n need_id?: string | null;\n title?: string | null;\n title_en?: string | null;\n status?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksOwnerDashboardStats {\n total_agents: number;\n total_pending: number;\n total_active: number;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksOwnerDashboard {\n agents: WorksOwnerDashboardAgent[];\n pending_pitches: WorksOwnerDashboardPitch[];\n active_orders: WorksOwnerDashboardOrder[];\n completed_orders: WorksOwnerDashboardOrder[];\n stats: WorksOwnerDashboardStats;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksPosterDashboardJob {\n job_id: string;\n title?: string | null;\n title_en?: string | null;\n proposal_count: number;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksPosterDashboardOrder {\n order_id: string;\n need_id?: string | null;\n title?: string | null;\n title_en?: string | null;\n status?: string | null;\n has_deliverable: boolean;\n deliverable_count: number;\n awaiting_buyer_action: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksPosterDashboardStats {\n total_posted: number;\n total_completed: number;\n raw: Record<string, unknown>;\n}\n\nexport interface WorksPosterDashboard {\n open_jobs: WorksPosterDashboardJob[];\n in_progress_orders: WorksPosterDashboardOrder[];\n completed_orders: WorksPosterDashboardOrder[];\n stats: WorksPosterDashboardStats;\n raw: Record<string, unknown>;\n}\n\nexport interface PartnerDashboard {\n partner_id: string;\n company_name?: string | null;\n plan?: string | null;\n plan_label?: string | null;\n month_bytes_used: number;\n month_bytes_limit: number;\n month_usage_pct: number;\n total_source_items: number;\n has_billing: boolean;\n has_subscription: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface PartnerUsage {\n plan?: string | null;\n month_bytes_used: number;\n month_bytes_limit: number;\n month_bytes_remaining: number;\n month_usage_pct: number;\n raw: Record<string, unknown>;\n}\n\nexport interface PartnerApiKeyRecord {\n credential_id: string;\n name?: string | null;\n key_id?: string | null;\n allowed_source_types: string[];\n last_used_at?: string | null;\n created_at?: string | null;\n revoked: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface PartnerApiKeyHandle {\n credential_id: string;\n name?: string | null;\n key_id?: string | null;\n allowed_source_types: string[];\n masked_key_hint?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AdsBilling {\n currency?: string | null;\n billing_mode?: string | null;\n month_spend_jpy: number;\n month_spend_usd: number;\n all_time_spend_jpy: number;\n all_time_spend_usd: number;\n total_impressions: number;\n total_replies: number;\n has_billing: boolean;\n has_subscription: boolean;\n invoices: Array<Record<string, unknown>>;\n wallet?: Record<string, unknown> | null;\n balances: Array<Record<string, unknown>>;\n supported_tokens: Array<Record<string, unknown>>;\n funding_instructions?: Record<string, unknown> | null;\n mandate?: PlanWeb3Mandate | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AdsBillingSettlement {\n status?: string | null;\n message?: string | null;\n settles_automatically?: boolean | null;\n cycle_key?: string | null;\n settled_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AdsProfile {\n has_profile: boolean;\n company_name?: string | null;\n ad_currency?: string | null;\n has_billing: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface AdsCampaignRecord {\n campaign_id: string;\n name?: string | null;\n target_url?: string | null;\n content_brief?: string | null;\n target_topics: string[];\n posting_interval_minutes: number;\n max_posts_per_day: number;\n currency?: string | null;\n monthly_budget_jpy: number;\n cpm_jpy: number;\n cpr_jpy: number;\n monthly_budget_usd: number;\n cpm_usd: number;\n cpr_usd: number;\n status: string;\n month_spend_jpy: number;\n month_spend_usd: number;\n total_posts: number;\n total_impressions: number;\n total_replies: number;\n next_post_at?: string | null;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AdsCampaignPostRecord {\n post_id: string;\n content_id?: string | null;\n cost_jpy: number;\n cost_usd: number;\n impressions: number;\n replies: number;\n status?: string | null;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface MarketProposalRecord {\n proposal_id: string;\n parent_proposal_id?: string | null;\n opportunity_id?: string | null;\n listing_id?: string | null;\n need_id?: string | null;\n seller_agent_id?: string | null;\n buyer_agent_id?: string | null;\n approval_request_id?: string | null;\n linked_action_proposal_id?: string | null;\n thread_content_id?: string | null;\n content_id?: string | null;\n proposal_kind: string;\n proposed_terms_jsonb: Record<string, unknown>;\n status: string;\n reason_codes: string[];\n approval_policy_snapshot_jsonb: Record<string, unknown>;\n delegated_budget_snapshot_jsonb: Record<string, unknown>;\n explanation: Record<string, unknown>;\n soft_budget_check: Record<string, unknown>;\n approved_for_order_at?: string | null;\n superseded_by_proposal_id?: string | null;\n expires_at?: string | null;\n created_at?: string | null;\n updated_at?: string | null;\n approval?: Record<string, unknown> | null;\n linked_order_id?: string | null;\n order_status?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface MarketProposalActionResult {\n status: string;\n approval_required: boolean;\n intent_id?: string | null;\n approval_status?: string | null;\n approval_snapshot_hash?: string | null;\n message: string;\n action: string;\n proposal?: MarketProposalRecord | null;\n preview: Record<string, unknown>;\n authorization: Record<string, unknown>;\n approval_request?: Record<string, unknown> | null;\n approval_explanation?: Record<string, unknown> | null;\n published_note_content_id?: string | null;\n ready_for_order: boolean;\n order_created: boolean;\n resulting_order_id?: string | null;\n order?: Record<string, unknown> | null;\n funds_locked: boolean;\n escrow_hold?: Record<string, unknown> | null;\n trace_id?: string | null;\n request_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountPreferences {\n language?: string | null;\n summary_depth?: string | null;\n notification_mode?: string | null;\n autonomy_level?: string | null;\n interest_profile: Record<string, unknown>;\n consent_policy: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountPlan {\n plan: string;\n display_name?: string | null;\n limits: Record<string, unknown>;\n available_models: Array<Record<string, unknown>>;\n default_model?: string | null;\n selected_model?: string | null;\n subscription_id?: string | null;\n period_end?: string | null;\n cancel_scheduled_at?: string | null;\n cancel_pending: boolean;\n plan_change_scheduled_to?: string | null;\n plan_change_scheduled_at?: string | null;\n plan_change_scheduled_currency?: string | null;\n usage_today: Record<string, unknown>;\n available_plans: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface PlanCheckoutSession {\n checkout_url?: string | null;\n expires_at_iso?: string | null;\n plan?: string | null;\n currency?: string | null;\n customer_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface BillingPortalLink {\n portal_url?: string | null;\n expires_at_iso?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountPlanCancellation {\n cancelled: boolean;\n effective_at?: string | null;\n cancel_scheduled_at?: string | null;\n plan?: string | null;\n subscription_id?: string | null;\n rail?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface PlanWeb3Mandate {\n mandate_id: string;\n payment_mandate_id?: string | null;\n principal_user_id?: string | null;\n user_wallet_id?: string | null;\n network: string;\n payee_type?: string | null;\n payee_ref?: string | null;\n fee_recipient_ref?: string | null;\n purpose?: string | null;\n cadence?: string | null;\n token_symbol?: string | null;\n display_currency?: string | null;\n max_amount_minor: number;\n status: string;\n retry_count: number;\n idempotency_key?: string | null;\n last_attempt_at?: string | null;\n next_attempt_at?: string | null;\n canceled_at?: string | null;\n metadata: Record<string, unknown>;\n transaction_request?: Record<string, unknown> | null;\n approve_transaction_request?: Record<string, unknown> | null;\n cancel_transaction_request?: Record<string, unknown> | null;\n chain_receipt?: SettlementReceipt | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountWatchlist {\n symbols: string[];\n raw: Record<string, unknown>;\n}\n\nexport interface FavoriteAgent {\n agent_id: string;\n name?: string | null;\n avatar_url?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface FavoriteAgentMutation {\n ok: boolean;\n status?: string | null;\n agent_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountContentPostResult {\n accepted: boolean;\n content_id?: string | null;\n posted_by?: string | null;\n error?: string | null;\n limit_reached: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountContentDeleteResult {\n deleted: boolean;\n content_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountDigestSummary {\n digest_id: string;\n title?: string | null;\n digest_type?: string | null;\n summary?: string | null;\n generated_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountDigestItem {\n digest_item_id: string;\n headline?: string | null;\n summary?: string | null;\n confidence: number;\n trust_state?: string | null;\n ref_type?: string | null;\n ref_id?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountDigest {\n digest_id: string;\n title?: string | null;\n digest_type?: string | null;\n summary?: string | null;\n generated_at?: string | null;\n items: AccountDigestItem[];\n raw: Record<string, unknown>;\n}\n\nexport interface AccountAlert {\n alert_id: string;\n title?: string | null;\n summary?: string | null;\n severity?: string | null;\n confidence: number;\n trust_state?: string | null;\n ref_type?: string | null;\n ref_id?: string | null;\n created_at?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface AccountFeedbackSubmission {\n accepted: boolean;\n raw: Record<string, unknown>;\n}\n\nexport interface NetworkContentSummary {\n content_id: string;\n item_type?: string | null;\n title?: string | null;\n summary?: string | null;\n ref_type?: string | null;\n ref_id?: string | null;\n created_at?: string | null;\n agent_id?: string | null;\n agent_name?: string | null;\n agent_avatar?: string | null;\n message_type?: string | null;\n trust_state?: string | null;\n confidence: number;\n reply_count?: number | null;\n thread_reply_count?: number | null;\n impression_count?: number | null;\n thread_id?: string | null;\n reply_to?: string | null;\n reply_to_title?: string | null;\n reply_to_agent_name?: string | null;\n stance?: string | null;\n sentiment: Record<string, unknown>;\n surface_scores: Array<Record<string, unknown>>;\n is_ad: boolean;\n source_uri?: string | null;\n source_host?: string | null;\n posted_by?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface NetworkContentDetail {\n content_id: string;\n agent_id?: string | null;\n thread_id?: string | null;\n message_type?: string | null;\n visibility?: string | null;\n title?: string | null;\n body: Record<string, unknown>;\n claims: string[];\n evidence_refs: string[];\n trust_state?: string | null;\n confidence: number;\n created_at?: string | null;\n presentation: Record<string, unknown>;\n signal_packet: Record<string, unknown>;\n posted_by?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface NetworkRepliesPage {\n replies: NetworkContentSummary[];\n context_head?: NetworkContentSummary | null;\n thread_summary?: string | null;\n thread_surface_scores: Array<Record<string, unknown>>;\n total_count: number;\n next_cursor?: string | null;\n raw: Record<string, unknown>;\n}\n\nexport interface NetworkClaimRecord {\n claim_id: string;\n claim_type?: string | null;\n normalized_text?: string | null;\n confidence: number;\n trust_state?: string | null;\n evidence_refs: string[];\n signal_packet: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface NetworkEvidenceRecord {\n evidence_id: string;\n evidence_type?: string | null;\n uri?: string | null;\n excerpt?: string | null;\n source_reliability: number;\n signal_packet: Record<string, unknown>;\n raw: Record<string, unknown>;\n}\n\nexport interface AgentTopicSubscription {\n topic_key: string;\n priority: number;\n raw: Record<string, unknown>;\n}\n\nexport interface AgentThreadRecord {\n thread_id: string;\n items: NetworkContentDetail[];\n raw: Record<string, unknown>;\n}\n","type FetchLike = typeof fetch;\ntype CassetteHeaderValue = string | string[];\ndeclare const Deno:\n | {\n stat(path: string): Promise<unknown>;\n readTextFile(path: string): Promise<string>;\n writeTextFile(path: string, content: string): Promise<void>;\n mkdir(path: string, options?: { recursive?: boolean }): Promise<void>;\n }\n | undefined;\n\nconst CASSETTE_VERSION = 1;\nconst SECRET_KEY_RE = /(api[_-]?key|secret|private[_-]?key|access[_-]?token|refresh[_-]?token)/i;\nconst HANDLE_URL_KEY_RE = /(checkout[_-]?url|portal[_-]?url)/i;\nconst PRIVKEY_RE = /0x[a-f0-9]{64}/g;\nconst TOKEN_RE = /(pypi|ghp|gho|ghu|ghs)-[A-Za-z0-9]+/g;\nconst BOUNDARY_RE = /boundary=\"?([^\";]+)\"?/i;\n\nexport enum RecordMode {\n RECORD = \"record\",\n REPLAY = \"replay\",\n AUTO = \"auto\",\n}\n\nexport interface RecorderOptions {\n mode?: RecordMode;\n ignore_body_fields?: string[];\n}\n\nexport interface CassetteInteraction {\n request: {\n method: string;\n url: string;\n headers: Record<string, CassetteHeaderValue>;\n body: unknown;\n };\n response: {\n status: number;\n headers: Record<string, CassetteHeaderValue>;\n body: unknown;\n duration_ms: number;\n };\n}\n\nexport interface CassetteFile {\n version: number;\n interactions: CassetteInteraction[];\n}\n\nfunction redactString(value: string): string {\n return value.replace(PRIVKEY_RE, \"<REDACTED_PRIVKEY>\").replace(TOKEN_RE, \"<REDACTED_TOKEN>\");\n}\n\nfunction appendHeader(result: Record<string, CassetteHeaderValue>, key: string, value: string): void {\n const existing = result[key];\n if (existing === undefined) {\n result[key] = value;\n return;\n }\n if (Array.isArray(existing)) {\n existing.push(value);\n return;\n }\n result[key] = [existing, value];\n}\n\nfunction redactHeaderValue(key: string, value: string): string {\n if (key === \"content-type\" && value.toLowerCase().includes(\"multipart/form-data\")) {\n return normalizeMultipartContentType(value);\n }\n if (key === \"authorization\") {\n // Preserve the scheme token so cassettes stay readable, but redact\n // every credential regardless of scheme (Bearer / Basic / Digest /\n // custom tokens). Falling through to redactString only catches values\n // that match our narrow secret regexes, which would leave plenty of\n // credentials in the clear.\n const stripped = value.trim();\n if (!stripped) {\n return \"<REDACTED>\";\n }\n // If the value has no whitespace separator, there is no scheme to\n // preserve — the entire value IS the credential (e.g. a bare\n // GitHub PAT `ghp_...` or a hex-encoded API key). Returning\n // `${head} <REDACTED>` in that case would echo the secret back.\n if (!/\\s/.test(stripped)) {\n return \"<REDACTED>\";\n }\n const head = stripped.split(/\\s+/)[0] ?? \"\";\n return head ? `${head} <REDACTED>` : \"<REDACTED>\";\n }\n if (key === \"cookie\" || key === \"set-cookie\" || SECRET_KEY_RE.test(key)) {\n const redacted = redactString(value);\n return redacted !== value ? redacted : \"<REDACTED>\";\n }\n return redactString(value);\n}\n\nfunction redactHeaders(headers: Headers): Record<string, CassetteHeaderValue> {\n const result: Record<string, CassetteHeaderValue> = {};\n headers.forEach((value, key) => {\n const normalizedKey = key.toLowerCase();\n appendHeader(result, normalizedKey, redactHeaderValue(normalizedKey, value));\n });\n const getSetCookie = Reflect.get(headers as object, \"getSetCookie\");\n if (typeof getSetCookie === \"function\") {\n const setCookies = (getSetCookie as () => string[]).call(headers)\n .map((value) => redactHeaderValue(\"set-cookie\", value));\n if (setCookies.length === 1 && setCookies[0] !== undefined) {\n result[\"set-cookie\"] = setCookies[0];\n } else if (setCookies.length > 1) {\n result[\"set-cookie\"] = setCookies;\n }\n }\n return result;\n}\n\nfunction redactUrl(urlText: string): string {\n const url = new URL(urlText);\n const nextParams = new URLSearchParams();\n for (const [key, value] of Array.from(url.searchParams.entries())) {\n if (SECRET_KEY_RE.test(key) || HANDLE_URL_KEY_RE.test(key)) {\n const redacted = redactString(value);\n nextParams.append(key, redacted !== value ? redacted : \"<REDACTED>\");\n } else {\n nextParams.append(key, redactString(value));\n }\n }\n url.search = nextParams.toString();\n return url.toString();\n}\n\nfunction redactBody(value: unknown, keyName?: string): unknown {\n if (keyName && HANDLE_URL_KEY_RE.test(keyName)) {\n return \"<REDACTED>\";\n }\n if (keyName && SECRET_KEY_RE.test(keyName)) {\n if (typeof value === \"string\") {\n const redacted = redactString(value);\n return redacted !== value ? redacted : \"<REDACTED>\";\n }\n return \"<REDACTED>\";\n }\n if (Array.isArray(value)) {\n return value.map((item) => redactBody(item));\n }\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).map(([key, child]) => [key, redactBody(child, key)]),\n );\n }\n if (typeof value === \"string\") {\n return redactString(value);\n }\n return value;\n}\n\nfunction sortKeysDeep<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((item) => sortKeysDeep(item)) as T;\n }\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.keys(value as Record<string, unknown>)\n .sort()\n .map((key) => [key, sortKeysDeep((value as Record<string, unknown>)[key])]),\n ) as T;\n }\n return value;\n}\n\nfunction normalizeTopLevelBody(body: unknown, ignoreBodyFields: Set<string>): unknown {\n if (!body || typeof body !== \"object\") {\n return body;\n }\n if (Array.isArray(body)) {\n return body.map((item) => normalizeTopLevelBody(item, new Set<string>()));\n }\n const record = body as Record<string, unknown>;\n return Object.fromEntries(\n Object.keys(record)\n .filter((key) => !ignoreBodyFields.has(key))\n .sort()\n .map((key) => [key, normalizeTopLevelBody(record[key], new Set<string>())]),\n );\n}\n\nfunction requestSignature(request: { method: string; url: string; body: unknown }, ignoreBodyFields: Set<string>): string {\n return JSON.stringify({\n method: request.method.toUpperCase(),\n url: request.url,\n body: normalizeTopLevelBody(request.body, ignoreBodyFields),\n });\n}\n\nasync function parseTextBody(text: string): Promise<unknown> {\n if (!text) {\n return null;\n }\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return text;\n }\n}\n\nfunction normalizeMultipartText(text: string, contentType: string | null): string {\n if (!contentType) {\n return text;\n }\n const match = BOUNDARY_RE.exec(contentType);\n if (!match?.[1]) {\n return text;\n }\n return text.split(match[1]).join(\"<BOUNDARY>\");\n}\n\nfunction replaceAllBytes(source: Uint8Array, search: Uint8Array, replacement: Uint8Array): Uint8Array {\n if (search.length === 0) {\n return source;\n }\n const parts: number[] = [];\n for (let index = 0; index < source.length;) {\n let matched = true;\n for (let offset = 0; offset < search.length; offset += 1) {\n if (source[index + offset] !== search[offset]) {\n matched = false;\n break;\n }\n }\n if (matched) {\n parts.push(...replacement);\n index += search.length;\n continue;\n }\n parts.push(source[index] as number);\n index += 1;\n }\n return Uint8Array.from(parts);\n}\n\nfunction normalizeMultipartBytes(bytes: Uint8Array, contentType: string | null): Uint8Array {\n if (!contentType) {\n return bytes;\n }\n const match = BOUNDARY_RE.exec(contentType);\n if (!match?.[1]) {\n return bytes;\n }\n return replaceAllBytes(bytes, new TextEncoder().encode(match[1]), new TextEncoder().encode(\"<BOUNDARY>\"));\n}\n\nfunction normalizeMultipartContentType(contentType: string | null): string {\n if (!contentType) {\n return \"multipart/form-data; boundary=<BOUNDARY>\";\n }\n return contentType.replace(BOUNDARY_RE, \"boundary=<BOUNDARY>\");\n}\n\nfunction toBase64(bytes: Uint8Array): string {\n const bufferCtor = Reflect.get(globalThis as object, \"Buffer\") as { from(data: Uint8Array): { toString(encoding: string): string } } | undefined;\n if (bufferCtor?.from) {\n return bufferCtor.from(bytes).toString(\"base64\");\n }\n if (typeof btoa === \"function\") {\n let binary = \"\";\n bytes.forEach((value) => {\n binary += String.fromCharCode(value);\n });\n return btoa(binary);\n }\n throw new Error(\"No base64 encoder available for multipart cassette recording.\");\n}\n\nasync function parseRequestBody(request: Request): Promise<unknown> {\n const contentType = request.headers.get(\"content-type\");\n if (contentType?.toLowerCase().includes(\"multipart/form-data\")) {\n const bytes = new Uint8Array(await request.clone().arrayBuffer());\n return {\n content_type: normalizeMultipartContentType(contentType),\n encoding: \"base64\",\n base64: toBase64(normalizeMultipartBytes(bytes, contentType)),\n };\n }\n const text = await request.clone().text();\n if (!text) {\n return null;\n }\n return parseTextBody(text);\n}\n\nfunction buildResponseFromCassette(interaction: CassetteInteraction, request: Request): Response {\n const headers = new Headers();\n Object.entries(interaction.response.headers).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach((entry) => headers.append(key, entry));\n return;\n }\n headers.append(key, value);\n });\n const body = interaction.response.body;\n const payload = typeof body === \"string\" ? body : body == null ? \"\" : JSON.stringify(body);\n if (body !== null && body !== undefined && typeof body !== \"string\" && !headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/json\");\n }\n return new Response(payload, {\n status: interaction.response.status,\n headers,\n });\n}\n\nasync function fileExists(path: string): Promise<boolean> {\n if (typeof Deno !== \"undefined\" && typeof Deno.stat === \"function\") {\n try {\n await Deno.stat(path);\n return true;\n } catch {\n return false;\n }\n }\n try {\n const fs = await import(\"node:fs/promises\");\n await fs.access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function readTextFile(path: string): Promise<string> {\n if (typeof Deno !== \"undefined\" && typeof Deno.readTextFile === \"function\") {\n return Deno.readTextFile(path);\n }\n const fs = await import(\"node:fs/promises\");\n return fs.readFile(path, \"utf8\");\n}\n\nasync function writeTextFile(path: string, content: string): Promise<void> {\n if (typeof Deno !== \"undefined\" && typeof Deno.writeTextFile === \"function\") {\n const lastSlash = Math.max(path.lastIndexOf(\"/\"), path.lastIndexOf(\"\\\\\"));\n const dir = lastSlash >= 0 ? path.slice(0, lastSlash) : \"\";\n if (dir) {\n await Deno.mkdir(dir, { recursive: true });\n }\n await Deno.writeTextFile(path, content);\n return;\n }\n const fs = await import(\"node:fs/promises\");\n const pathModule = await import(\"node:path\");\n await fs.mkdir(pathModule.dirname(path), { recursive: true });\n await fs.writeFile(path, content, \"utf8\");\n}\n\nexport class Recorder {\n readonly cassettePath: string;\n readonly mode: RecordMode;\n readonly ignore_body_fields: string[];\n private effectiveMode: RecordMode | null = null;\n private interactions: CassetteInteraction[] = [];\n private cursor = 0;\n private wrappedClients: Array<{ client: object; fetchImpl: FetchLike }> = [];\n\n constructor(cassettePath: string, options: RecorderOptions = {}) {\n this.cassettePath = cassettePath;\n this.mode = options.mode ?? RecordMode.AUTO;\n this.ignore_body_fields = options.ignore_body_fields ?? [];\n }\n\n static async open(cassettePath: string, options: RecorderOptions = {}): Promise<Recorder> {\n const recorder = new Recorder(cassettePath, options);\n return recorder.start();\n }\n\n async start(): Promise<this> {\n this.effectiveMode = await this.resolveMode();\n this.interactions = this.effectiveMode === RecordMode.REPLAY ? await this.loadCassette() : [];\n this.cursor = 0;\n return this;\n }\n\n async close(): Promise<void> {\n for (const wrapped of this.wrappedClients.splice(0)) {\n Reflect.set(wrapped.client, \"fetchImpl\", wrapped.fetchImpl);\n }\n if (this.effectiveMode === RecordMode.RECORD) {\n const payload: CassetteFile = { version: CASSETTE_VERSION, interactions: this.interactions };\n await writeTextFile(this.cassettePath, `${JSON.stringify(sortKeysDeep(payload), null, 2)}\\n`);\n }\n }\n\n wrap<T extends object>(client: T): T {\n if (!this.effectiveMode) {\n throw new Error(\"Recorder.wrap() requires start() first.\");\n }\n const currentFetch = Reflect.get(client, \"fetchImpl\");\n if (typeof currentFetch !== \"function\") {\n throw new Error(\"Recorder.wrap() expects a SiglumeClient-like object with fetchImpl.\");\n }\n this.wrappedClients.push({ client, fetchImpl: currentFetch as FetchLike });\n Reflect.set(client, \"fetchImpl\", this.createFetch(currentFetch as FetchLike));\n return client;\n }\n\n async withGlobalFetch<T>(fn: () => Promise<T> | T): Promise<T> {\n if (!this.effectiveMode) {\n throw new Error(\"Recorder.withGlobalFetch() requires start() first.\");\n }\n const originalFetch = globalThis.fetch;\n if (typeof originalFetch !== \"function\") {\n throw new Error(\"Global fetch is not available in this runtime.\");\n }\n const recorderFetch = this.createFetch(originalFetch);\n Reflect.set(globalThis as object, \"fetch\", recorderFetch);\n try {\n return await fn();\n } finally {\n Reflect.set(globalThis as object, \"fetch\", originalFetch);\n }\n }\n\n private async resolveMode(): Promise<RecordMode> {\n if (this.mode === RecordMode.AUTO) {\n return await fileExists(this.cassettePath) ? RecordMode.REPLAY : RecordMode.RECORD;\n }\n return this.mode;\n }\n\n private async loadCassette(): Promise<CassetteInteraction[]> {\n if (!(await fileExists(this.cassettePath))) {\n throw new Error(`Cassette not found for replay: ${this.cassettePath}`);\n }\n const payload = JSON.parse(await readTextFile(this.cassettePath)) as Partial<CassetteFile>;\n if (payload.version !== CASSETTE_VERSION || !Array.isArray(payload.interactions)) {\n throw new Error(`Invalid cassette format: ${this.cassettePath}`);\n }\n return payload.interactions;\n }\n\n private createFetch(fetchImpl: FetchLike): FetchLike {\n const ignoreBodyFields = new Set(this.ignore_body_fields);\n return (async (input: RequestInfo | URL, init?: RequestInit) => {\n const request = new Request(input, init);\n const requestBody = await parseRequestBody(request);\n const requestRecord = {\n method: request.method,\n url: redactUrl(request.url),\n headers: redactHeaders(request.headers),\n body: redactBody(requestBody),\n };\n\n if (this.effectiveMode === RecordMode.REPLAY) {\n if (this.cursor >= this.interactions.length) {\n throw new Error(`Replay attempted unexpected fetch ${request.method} ${request.url}`);\n }\n const interaction = this.interactions[this.cursor];\n if (!interaction) {\n throw new Error(`Replay interaction missing at index ${this.cursor}`);\n }\n if (requestSignature(interaction.request, ignoreBodyFields) !== requestSignature(requestRecord, ignoreBodyFields)) {\n throw new Error(\n `Replay request mismatch.\\nExpected: ${requestSignature(interaction.request, ignoreBodyFields)}\\nActual: ${requestSignature(requestRecord, ignoreBodyFields)}`,\n );\n }\n this.cursor += 1;\n return buildResponseFromCassette(interaction, request);\n }\n\n const started = Date.now();\n const response = await fetchImpl(input, init);\n const responseText = response.status === 204 ? \"\" : await response.clone().text();\n const responseBody = await parseTextBody(responseText);\n this.interactions.push({\n request: requestRecord,\n response: {\n status: response.status,\n headers: redactHeaders(response.headers),\n body: redactBody(responseBody),\n duration_ms: Date.now() - started,\n },\n });\n return response;\n }) satisfies FetchLike;\n }\n}\n","import type { ToolManual, ToolManualIssue, ToolManualPermissionClass } from \"./types\";\nimport { PermissionClass, SettlementMode, ToolManualPermissionClass as ToolManualPermissionClassValues } from \"./types\";\nimport { isRecord } from \"./utils\";\n\nconst JURISDICTION_PATTERN = /^[A-Z]{2}(-[A-Z0-9]{1,3})?$/;\nconst TOOL_NAME_RE = /^[A-Za-z0-9_]{3,64}$/;\nconst PLATFORM_INJECTED_FIELDS = new Set([\n \"execution_id\",\n \"trace_id\",\n \"connected_account_id\",\n \"dry_run\",\n \"idempotency_key\",\n \"budget_snapshot\",\n]);\nconst COMPOSITION_KEYWORDS = new Set([\"oneOf\", \"anyOf\", \"allOf\"]);\nconst INPUT_SCHEMA_FORBIDDEN_KEYS = new Set([\"patternProperties\"]);\n\ntype ManualInput = ToolManual | Record<string, unknown> | { to_dict(): unknown } | unknown;\n\nfunction issue(\n code: string,\n message: string,\n field?: string,\n severity: ToolManualIssue[\"severity\"] = \"error\",\n suggestion?: string,\n): ToolManualIssue {\n return { code, message, field, severity, suggestion };\n}\n\nfunction coerceToolManual(manual: ManualInput): unknown {\n if (isRecord(manual) && typeof manual.to_dict === \"function\") {\n return manual.to_dict();\n }\n return manual;\n}\n\nfunction checkSchemaForbiddenRecursive(\n schema: Record<string, unknown>,\n rootField: string,\n pushIssue: (nextIssue: ToolManualIssue) => void,\n path = \"\",\n): void {\n for (const keyword of COMPOSITION_KEYWORDS) {\n if (!(keyword in schema)) {\n continue;\n }\n const branches = schema[keyword];\n const location = path ? `${rootField}.${path}.${keyword}` : `${rootField}.${keyword}`;\n if (!Array.isArray(branches) || branches.length === 0) {\n pushIssue(issue(\"INPUT_SCHEMA\", `${keyword} must be a non-empty array`, location));\n continue;\n }\n branches.forEach((branch, index) => {\n const branchPath = path ? `${path}.${keyword}[${index}]` : `${keyword}[${index}]`;\n const branchLocation = `${rootField}.${branchPath}`;\n if (!isRecord(branch)) {\n pushIssue(issue(\"INPUT_SCHEMA\", `${keyword}[${index}] must be an object`, branchLocation));\n return;\n }\n checkSchemaForbiddenRecursive(branch, rootField, pushIssue, branchPath);\n });\n }\n\n for (const forbidden of INPUT_SCHEMA_FORBIDDEN_KEYS) {\n if (forbidden in schema) {\n const location = path ? `${rootField}.${path}.${forbidden}` : `${rootField}.${forbidden}`;\n pushIssue(\n issue(\n \"INPUT_SCHEMA\",\n `'${forbidden}' is not allowed${path ? ` at ${path}` : \"\"}`,\n location,\n ),\n );\n }\n }\n\n for (const [key, value] of Object.entries(schema)) {\n if (key === \"properties\" && isRecord(value)) {\n for (const [propertyName, propertyDefinition] of Object.entries(value)) {\n if (!isRecord(propertyDefinition)) {\n continue;\n }\n const subPath = path ? `${path}.${propertyName}` : propertyName;\n checkSchemaForbiddenRecursive(propertyDefinition, rootField, pushIssue, subPath);\n }\n } else if (key === \"items\" && isRecord(value)) {\n const subPath = path ? `${path}.items` : \"items\";\n checkSchemaForbiddenRecursive(value, rootField, pushIssue, subPath);\n }\n }\n}\n\nexport function tool_manual_to_dict(manual: ToolManual | Record<string, unknown>): Record<string, unknown> {\n return isRecord(manual) ? { ...manual } : {};\n}\n\nexport function validate_tool_manual(manualInput: ManualInput): [boolean, ToolManualIssue[]] {\n const manual = coerceToolManual(manualInput);\n const issues: ToolManualIssue[] = [];\n const pushError = (code: string, message: string, field?: string) => {\n issues.push(issue(code, message, field, \"error\"));\n };\n const pushWarning = (code: string, message: string, field?: string) => {\n issues.push(issue(code, message, field, \"warning\"));\n };\n\n if (!isRecord(manual)) {\n pushError(\"INVALID_ROOT\", \"tool manual must be a dict\");\n return [false, issues];\n }\n\n const requiredFields = [\n \"tool_name\",\n \"job_to_be_done\",\n \"summary_for_model\",\n \"trigger_conditions\",\n \"do_not_use_when\",\n \"permission_class\",\n \"dry_run_supported\",\n \"requires_connected_accounts\",\n \"input_schema\",\n \"output_schema\",\n \"usage_hints\",\n \"result_hints\",\n \"error_hints\",\n ];\n for (const fieldName of requiredFields) {\n if (!(fieldName in manual)) {\n pushError(\"MISSING_FIELD\", `required field '${fieldName}' is missing`, fieldName);\n }\n }\n\n const toolName = manual.tool_name;\n if (typeof toolName === \"string\" && toolName.length > 0 && !TOOL_NAME_RE.test(toolName)) {\n pushError(\"INVALID_TOOL_NAME\", \"tool_name must be alphanumeric + underscore, 3-64 chars\", \"tool_name\");\n }\n\n for (const [fieldName, minLength, maxLength] of [\n [\"job_to_be_done\", 10, 500],\n [\"summary_for_model\", 10, 300],\n ] as const) {\n const value = manual[fieldName];\n if (typeof value === \"string\" && (value.length < minLength || value.length > maxLength)) {\n pushError(\"INVALID_TYPE\", `${fieldName} must be ${minLength}-${maxLength} characters`, fieldName);\n }\n }\n\n const triggerConditions = manual.trigger_conditions;\n if (Array.isArray(triggerConditions)) {\n if (triggerConditions.length < 3) {\n pushError(\"TOO_FEW_ITEMS\", \"trigger_conditions needs at least 3 items\", \"trigger_conditions\");\n } else if (triggerConditions.length > 8) {\n pushError(\"TOO_MANY_ITEMS\", \"trigger_conditions allows at most 8 items\", \"trigger_conditions\");\n }\n triggerConditions.forEach((item, index) => {\n if (typeof item === \"string\" && (item.length < 10 || item.length > 200)) {\n pushError(\n item.length < 10 ? \"ITEM_TOO_SHORT\" : \"ITEM_TOO_LONG\",\n `trigger_conditions[${index}] must be 10-200 chars`,\n `trigger_conditions[${index}]`,\n );\n }\n });\n }\n\n const doNotUseWhen = manual.do_not_use_when;\n if (Array.isArray(doNotUseWhen)) {\n if (doNotUseWhen.length < 1) {\n pushError(\"TOO_FEW_ITEMS\", \"do_not_use_when needs at least 1 item\", \"do_not_use_when\");\n } else if (doNotUseWhen.length > 5) {\n pushError(\"TOO_MANY_ITEMS\", \"do_not_use_when allows at most 5 items\", \"do_not_use_when\");\n }\n }\n\n const permissionClass = manual.permission_class;\n const validPermissionClasses: ToolManualPermissionClass[] = [\n ToolManualPermissionClassValues.READ_ONLY,\n ToolManualPermissionClassValues.ACTION,\n ToolManualPermissionClassValues.PAYMENT,\n ];\n if (typeof permissionClass === \"string\" && !validPermissionClasses.includes(permissionClass as ToolManualPermissionClass)) {\n if (permissionClass === PermissionClass.READ_ONLY || permissionClass === PermissionClass.RECOMMENDATION) {\n pushError(\n \"INVALID_PERMISSION_CLASS\",\n `ToolManual uses underscored values (${JSON.stringify(validPermissionClasses)}), not the hyphenated AppManifest form '${permissionClass}'`,\n \"permission_class\",\n );\n } else {\n pushError(\n \"INVALID_PERMISSION_CLASS\",\n `permission_class must be one of ${JSON.stringify(validPermissionClasses)}`,\n \"permission_class\",\n );\n }\n }\n\n const requireString = (fieldName: string, context: string) => {\n const value = manual[fieldName];\n if (value === undefined || value === null) {\n pushError(\"MISSING_FIELD\", `'${fieldName}' is required for permission_class='${context}'`, fieldName);\n } else if (typeof value !== \"string\") {\n pushError(\"INVALID_TYPE\", `'${fieldName}' must be a string`, fieldName);\n } else if (value.length === 0) {\n pushError(\"TOO_SHORT\", `'${fieldName}' must be at least 1 char`, fieldName);\n }\n };\n\n const requireSchema = (fieldName: string, context: string) => {\n const value = manual[fieldName];\n if (value === undefined || value === null) {\n pushError(\"MISSING_FIELD\", `'${fieldName}' is required for permission_class='${context}'`, fieldName);\n } else if (!isRecord(value)) {\n pushError(\"INVALID_TYPE\", `'${fieldName}' must be a JSON Schema object`, fieldName);\n }\n };\n\n if (permissionClass === ToolManualPermissionClassValues.ACTION || permissionClass === ToolManualPermissionClassValues.PAYMENT) {\n requireString(\"approval_summary_template\", permissionClass);\n requireSchema(\"preview_schema\", permissionClass);\n requireString(\"side_effect_summary\", permissionClass);\n requireString(\"jurisdiction\", permissionClass);\n if (typeof manual.jurisdiction === \"string\" && manual.jurisdiction.length > 0 && !JURISDICTION_PATTERN.test(manual.jurisdiction)) {\n pushError(\n \"INVALID_JURISDICTION\",\n `jurisdiction must be ISO 3166-1 alpha-2 (optionally -subregion), got: ${JSON.stringify(manual.jurisdiction)}`,\n \"jurisdiction\",\n );\n }\n if (!(\"idempotency_support\" in manual)) {\n pushError(\"MISSING_FIELD\", `'idempotency_support' is required for permission_class='${permissionClass}'`, \"idempotency_support\");\n } else if (manual.idempotency_support !== true) {\n pushError(\"IDEMPOTENCY_REQUIRED\", \"idempotency_support must be true for action/payment\", \"idempotency_support\");\n }\n }\n\n if (permissionClass === ToolManualPermissionClassValues.PAYMENT) {\n requireSchema(\"quote_schema\", \"payment\");\n requireString(\"currency\", \"payment\");\n requireString(\"settlement_mode\", \"payment\");\n requireString(\"refund_or_cancellation_note\", \"payment\");\n if (typeof manual.currency === \"string\" && manual.currency !== \"USD\") {\n pushError(\"INVALID_CURRENCY\", \"currency must be 'USD'\", \"currency\");\n }\n if (\n typeof manual.settlement_mode === \"string\" &&\n !Object.values(SettlementMode).includes(manual.settlement_mode as SettlementMode)\n ) {\n pushError(\n \"INVALID_SETTLEMENT_MODE\",\n `settlement_mode must be one of ${JSON.stringify(Object.values(SettlementMode))}`,\n \"settlement_mode\",\n );\n }\n }\n\n const inputSchema = manual.input_schema;\n if (isRecord(inputSchema)) {\n if (inputSchema.type !== \"object\") {\n pushError(\"INPUT_SCHEMA\", \"Root type must be 'object'\", \"input_schema\");\n }\n if (inputSchema.additionalProperties !== false) {\n pushError(\"INPUT_SCHEMA\", \"additionalProperties must be false\", \"input_schema\");\n }\n checkSchemaForbiddenRecursive(inputSchema, \"input_schema\", (nextIssue) => issues.push(nextIssue));\n const properties = inputSchema.properties;\n if (isRecord(properties)) {\n for (const fieldName of Object.keys(properties)) {\n if (PLATFORM_INJECTED_FIELDS.has(fieldName)) {\n pushWarning(\n \"INPUT_SCHEMA\",\n `'${fieldName}' is platform-injected; remove from input_schema`,\n `input_schema.properties.${fieldName}`,\n );\n }\n }\n }\n }\n\n const outputSchema = manual.output_schema;\n if (isRecord(outputSchema)) {\n const required = outputSchema.required;\n if (!Array.isArray(required) || required.length === 0) {\n pushError(\"OUTPUT_SCHEMA\", \"output_schema must have at least one stable required key\", \"output_schema.required\");\n }\n const properties = outputSchema.properties;\n if (isRecord(properties) && !(\"summary\" in properties)) {\n pushError(\"OUTPUT_SCHEMA\", \"output_schema must include a 'summary' property\", \"output_schema.properties\");\n }\n if (permissionClass === ToolManualPermissionClassValues.PAYMENT) {\n if (Array.isArray(required)) {\n if (!required.includes(\"amount_usd\")) {\n pushError(\"OUTPUT_SCHEMA\", \"Payment output_schema must require 'amount_usd'\", \"output_schema.required\");\n }\n if (!required.includes(\"currency\")) {\n pushError(\"OUTPUT_SCHEMA\", \"Payment output_schema must require 'currency'\", \"output_schema.required\");\n }\n }\n if (isRecord(properties)) {\n if (!(\"amount_usd\" in properties)) {\n pushError(\"OUTPUT_SCHEMA\", \"Payment output_schema must include 'amount_usd' in properties\", \"output_schema.properties\");\n }\n if (!(\"currency\" in properties)) {\n pushError(\"OUTPUT_SCHEMA\", \"Payment output_schema must include 'currency' in properties\", \"output_schema.properties\");\n }\n }\n }\n }\n\n return [!issues.some((nextIssue) => nextIssue.severity === \"error\"), issues];\n}\n","import type {\n AppManifest,\n Awaitable,\n ConnectedAccountRef,\n ExecutionContext,\n ExecutionKind,\n ExecutionResult,\n HealthCheckResult,\n ToolManual,\n ToolManualIssue,\n} from \"./types\";\nimport { ApprovalMode, Environment, PermissionClass, PriceModel } from \"./types\";\nimport type { MeteringSimulationResult, UsageRecord } from \"./metering\";\nimport { Recorder, RecordMode } from \"./testing/recorder\";\nimport { validate_tool_manual } from \"./tool-manual-validator\";\nimport type { EmbeddedWalletCharge, PolygonMandate } from \"./web3\";\nimport { simulate_embedded_wallet_charge, simulate_polygon_mandate } from \"./web3\";\n\nconst CAPABILITY_KEY_RE = /^[a-z0-9][a-z0-9-]*[a-z0-9]$/;\n\nfunction normalizeExecutionResult(result: ExecutionResult, executionKind: ExecutionKind): ExecutionResult {\n return {\n success: Boolean(result.success),\n output: result.output ?? {},\n execution_kind: result.execution_kind ?? executionKind,\n units_consumed: result.units_consumed ?? 1,\n amount_minor: result.amount_minor ?? 0,\n currency: result.currency ?? \"USD\",\n provider_status: result.provider_status ?? \"ok\",\n error_message: result.error_message,\n fallback_applied: result.fallback_applied ?? false,\n needs_approval: result.needs_approval ?? false,\n approval_prompt: result.approval_prompt,\n receipt_summary: result.receipt_summary ?? {},\n artifacts: result.artifacts ?? [],\n side_effects: result.side_effects ?? [],\n receipt_ref: result.receipt_ref,\n approval_hint: result.approval_hint,\n };\n}\n\nexport abstract class AppAdapter {\n abstract manifest(): Awaitable<AppManifest>;\n abstract execute(ctx: ExecutionContext): Awaitable<ExecutionResult>;\n\n async health_check(): Promise<HealthCheckResult> {\n return { healthy: true, message: \"\" };\n }\n\n async on_install(_agent_id: string, _owner_user_id: string): Promise<void> {}\n\n async on_uninstall(_agent_id: string, _owner_user_id: string): Promise<void> {}\n\n supported_task_types(): string[] {\n return [\"default\"];\n }\n}\n\nexport class StubProvider {\n provider_key: string;\n\n constructor(provider_key: string) {\n this.provider_key = provider_key;\n }\n\n async handle(method: string, params: Record<string, unknown>): Promise<Record<string, unknown>> {\n return {\n status: \"stub_ok\",\n provider: this.provider_key,\n method,\n params,\n };\n }\n}\n\nexport class AppTestHarness {\n app: AppAdapter;\n stubs: Record<string, StubProvider>;\n\n constructor(app: AppAdapter, stubs: Record<string, StubProvider> = {}) {\n this.app = app;\n this.stubs = stubs;\n }\n\n private async executeWithKind(\n execution_kind: ExecutionKind,\n task_type = \"default\",\n options: {\n connected_accounts?: Record<string, ConnectedAccountRef>;\n input_params?: Record<string, unknown>;\n trace_id?: string;\n idempotency_key?: string;\n request_hash?: string;\n budget_remaining_minor?: number | null;\n metadata?: Record<string, unknown>;\n } = {},\n ): Promise<ExecutionResult> {\n const connected_accounts =\n options.connected_accounts ??\n Object.fromEntries(\n Object.keys(this.stubs).map((key) => [\n key,\n {\n provider_key: key,\n session_token: `stub-token-${key}`,\n environment: Environment.SANDBOX,\n scopes: [],\n },\n ]),\n );\n const ctx: ExecutionContext = {\n agent_id: \"test-agent-001\",\n owner_user_id: \"test-owner-001\",\n task_type,\n environment: Environment.SANDBOX,\n execution_kind,\n connected_accounts,\n input_params: options.input_params ?? {},\n trace_id: options.trace_id,\n idempotency_key: options.idempotency_key,\n request_hash: options.request_hash,\n budget_remaining_minor: options.budget_remaining_minor ?? null,\n metadata: options.metadata ?? {},\n };\n return normalizeExecutionResult(await this.app.execute(ctx), execution_kind);\n }\n\n async dry_run(task_type = \"default\", options: Parameters<AppTestHarness[\"executeWithKind\"]>[2] = {}) {\n return this.executeWithKind(\"dry_run\", task_type, options);\n }\n\n async execute_action(task_type = \"default\", options: Parameters<AppTestHarness[\"executeWithKind\"]>[2] = {}) {\n return this.executeWithKind(\"action\", task_type, options);\n }\n\n async execute_quote(task_type = \"default\", options: Parameters<AppTestHarness[\"executeWithKind\"]>[2] = {}) {\n return this.executeWithKind(\"quote\", task_type, options);\n }\n\n async execute_payment(task_type = \"default\", options: Parameters<AppTestHarness[\"executeWithKind\"]>[2] = {}) {\n return this.executeWithKind(\"payment\", task_type, options);\n }\n\n async health(): Promise<HealthCheckResult> {\n return this.app.health_check();\n }\n\n async validate_manifest(): Promise<string[]> {\n const manifest = await this.app.manifest();\n const issues: string[] = [];\n if (!manifest.capability_key) {\n issues.push(\"capability_key is required\");\n } else if (!CAPABILITY_KEY_RE.test(manifest.capability_key)) {\n issues.push(\"capability_key must be lowercase alphanumeric with hyphens (e.g., 'price-compare-helper')\");\n }\n if (!manifest.name) {\n issues.push(\"name is required\");\n }\n if (!manifest.job_to_be_done) {\n issues.push(\"job_to_be_done is required\");\n }\n if (!manifest.example_prompts || manifest.example_prompts.length === 0) {\n issues.push(\"at least one example_prompt is recommended\");\n }\n if (manifest.permission_class === PermissionClass.ACTION || manifest.permission_class === PermissionClass.PAYMENT) {\n if (!manifest.dry_run_supported) {\n issues.push(\"action/payment apps should support dry_run\");\n }\n if ((manifest.approval_mode ?? ApprovalMode.AUTO) === ApprovalMode.AUTO) {\n issues.push(\"action/payment apps should not use auto approval\");\n }\n }\n return issues;\n }\n\n validate_tool_manual(manual?: ToolManual | Record<string, unknown>): [boolean, ToolManualIssue[]] {\n if (!manual) {\n return [true, []];\n }\n return validate_tool_manual(manual);\n }\n\n validate_receipt(result: ExecutionResult): string[] {\n const issues: string[] = [];\n if (result.execution_kind !== \"dry_run\") {\n const hasLegacy = Boolean(result.receipt_summary && Object.keys(result.receipt_summary).length > 0);\n const hasStructured = Boolean((result.artifacts?.length ?? 0) > 0 || (result.side_effects?.length ?? 0) > 0);\n if (!hasLegacy && !hasStructured) {\n issues.push(\"Non-dry-run execution should include receipt_summary or structured artifacts/side_effects\");\n }\n }\n\n if (result.execution_kind === \"action\" || result.execution_kind === \"payment\") {\n if ((result.side_effects?.length ?? 0) === 0 && !result.receipt_summary) {\n issues.push(\"Action/payment execution should report side effects\");\n }\n }\n\n if (result.needs_approval && !result.approval_prompt && !result.approval_hint) {\n issues.push(\"needs_approval=True but no approval_prompt or approval_hint provided\");\n }\n\n for (const [index, artifact] of (result.artifacts ?? []).entries()) {\n if (!artifact.artifact_type) {\n issues.push(`artifacts[${index}].artifact_type is empty`);\n }\n }\n\n for (const [index, sideEffect] of (result.side_effects ?? []).entries()) {\n if (!sideEffect.action) {\n issues.push(`side_effects[${index}].action is empty`);\n }\n if (!sideEffect.provider) {\n issues.push(`side_effects[${index}].provider is empty`);\n }\n }\n\n return issues;\n }\n\n async simulate_connected_account_missing(\n task_type = \"default\",\n options: Parameters<AppTestHarness[\"executeWithKind\"]>[2] = {},\n ) {\n return this.executeWithKind(\"dry_run\", task_type, {\n ...options,\n connected_accounts: {},\n });\n }\n\n async simulate_metering(\n record: UsageRecord,\n options: { execution_result?: ExecutionResult | null } = {},\n ): Promise<MeteringSimulationResult> {\n const { normalizeUsageRecord } = await import(\"./metering\");\n const manifest = await this.app.manifest();\n const usage_record = normalizeUsageRecord(record);\n let invoice_line_preview: MeteringSimulationResult[\"invoice_line_preview\"] = null;\n\n if (manifest.price_model === PriceModel.USAGE_BASED) {\n invoice_line_preview = {\n price_model: manifest.price_model,\n billable_units: usage_record.units,\n unit_amount_minor: Math.trunc(manifest.price_value_minor ?? 0),\n subtotal_minor: usage_record.units * Math.trunc(manifest.price_value_minor ?? 0),\n currency: manifest.currency ?? \"USD\",\n };\n } else if (manifest.price_model === PriceModel.PER_ACTION) {\n const executionResult = options.execution_result ?? null;\n const billable_units = Number(\n Boolean(executionResult && executionResult.success && executionResult.execution_kind !== \"dry_run\"),\n );\n invoice_line_preview = {\n price_model: manifest.price_model,\n billable_units,\n unit_amount_minor: Math.trunc(manifest.price_value_minor ?? 0),\n subtotal_minor: billable_units * Math.trunc(manifest.price_value_minor ?? 0),\n currency: manifest.currency ?? \"USD\",\n };\n }\n\n return {\n experimental: manifest.price_model === PriceModel.USAGE_BASED || manifest.price_model === PriceModel.PER_ACTION,\n usage_record,\n invoice_line_preview,\n };\n }\n\n simulate_polygon_mandate(options: {\n mandate_id: string;\n payer_wallet: string;\n payee_wallet: string;\n monthly_cap_minor: number;\n currency: string;\n status?: string;\n next_attempt_at_iso?: string | null;\n cancel_scheduled?: boolean;\n }): PolygonMandate {\n return simulate_polygon_mandate(options);\n }\n\n simulate_embedded_wallet_charge(options: {\n mandate: PolygonMandate;\n amount_minor: number;\n tx_hash: string;\n user_operation_hash?: string | null;\n block_number?: number;\n gas_sponsored_by?: string;\n platform_fee_minor?: number;\n developer_net_minor?: number | null;\n }): EmbeddedWalletCharge {\n return simulate_embedded_wallet_charge(options);\n }\n\n async record<T>(\n cassettePath: string,\n fn: (harness: AppTestHarness) => Promise<T> | T,\n options: { ignore_body_fields?: string[] } = {},\n ): Promise<T> {\n const recorder = await Recorder.open(cassettePath, {\n mode: RecordMode.RECORD,\n ignore_body_fields: options.ignore_body_fields,\n });\n try {\n return await recorder.withGlobalFetch(() => fn(this));\n } finally {\n await recorder.close();\n }\n }\n\n async replay<T>(\n cassettePath: string,\n fn: (harness: AppTestHarness) => Promise<T> | T,\n options: { ignore_body_fields?: string[] } = {},\n ): Promise<T> {\n const recorder = await Recorder.open(cassettePath, {\n mode: RecordMode.REPLAY,\n ignore_body_fields: options.ignore_body_fields,\n });\n try {\n return await recorder.withGlobalFetch(() => fn(this));\n } finally {\n await recorder.close();\n }\n }\n}\n","{\n \"version\": \"2026-04-19\",\n \"source_of_truth\": \"agent_sns.application.capability_runtime.tool_manual_validator.score_manual_quality\",\n \"max_score\": 100,\n \"grade_thresholds\": {\n \"A\": 90,\n \"B\": 70,\n \"C\": 50,\n \"D\": 30,\n \"F\": 0\n },\n \"weights\": {\n \"trigger_conditions\": 30,\n \"do_not_use_when\": 10,\n \"summary_for_model\": 10,\n \"input_schema_descriptions\": 20,\n \"output_schema_completeness\": 10,\n \"hints\": 10,\n \"keyword_coverage\": 10\n },\n \"keyword_coverage_bands\": [\n {\n \"minimum_keywords\": 20,\n \"score\": 10\n },\n {\n \"minimum_keywords\": 15,\n \"score\": 8\n },\n {\n \"minimum_keywords\": 10,\n \"score\": 6\n },\n {\n \"minimum_keywords\": 5,\n \"score\": 4\n }\n ],\n \"ambiguity_phrases\": [\n \"use when helpful\",\n \"use for productivity\",\n \"use this tool\",\n \"for many tasks\",\n \"general purpose\",\n \"various uses\",\n \"when needed\",\n \"as needed\",\n \"if appropriate\",\n \"for convenience\",\n \"to help\",\n \"to assist\",\n \"\\u4fbf\\u5229\\u306a\\u6642\",\n \"\\u5fc5\\u8981\\u306b\\u5fdc\\u3058\\u3066\",\n \"\\u9069\\u5b9c\",\n \"\\u3044\\u308d\\u3044\\u308d\\u306a\\u5834\\u9762\\u3067\",\n \"\\u5f79\\u306b\\u7acb\\u3064\\u6642\",\n \"\\u56f0\\u3063\\u305f\\u6642\"\n ],\n \"marketing_fluff\": [\n \"ultimate\",\n \"revolutionary\",\n \"cutting-edge\",\n \"best-in-class\",\n \"world-class\",\n \"game-changing\",\n \"next-generation\",\n \"powerful\",\n \"amazing\",\n \"incredible\",\n \"awesome\",\n \"unbeatable\",\n \"\\u6700\\u9ad8\\u306e\",\n \"\\u9769\\u547d\\u7684\\u306a\",\n \"\\u753b\\u671f\\u7684\\u306a\",\n \"\\u7a76\\u6975\\u306e\",\n \"\\u6700\\u5f37\\u306e\"\n ],\n \"imperative_prefixes\": [\n \"use this\",\n \"use the\",\n \"call this\",\n \"call the\",\n \"invoke this\",\n \"run this\",\n \"execute this\"\n ],\n \"stop_words\": [\n \"a\",\n \"about\",\n \"above\",\n \"after\",\n \"again\",\n \"all\",\n \"also\",\n \"an\",\n \"and\",\n \"any\",\n \"are\",\n \"aren\",\n \"at\",\n \"be\",\n \"been\",\n \"before\",\n \"being\",\n \"below\",\n \"between\",\n \"both\",\n \"but\",\n \"by\",\n \"can\",\n \"could\",\n \"did\",\n \"didn\",\n \"do\",\n \"does\",\n \"doesn\",\n \"don\",\n \"during\",\n \"each\",\n \"every\",\n \"few\",\n \"for\",\n \"from\",\n \"further\",\n \"had\",\n \"hadn\",\n \"has\",\n \"hasn\",\n \"have\",\n \"haven\",\n \"he\",\n \"here\",\n \"how\",\n \"i\",\n \"if\",\n \"in\",\n \"into\",\n \"is\",\n \"isn\",\n \"it\",\n \"just\",\n \"may\",\n \"me\",\n \"might\",\n \"more\",\n \"most\",\n \"must\",\n \"my\",\n \"no\",\n \"nor\",\n \"not\",\n \"of\",\n \"off\",\n \"on\",\n \"once\",\n \"only\",\n \"or\",\n \"other\",\n \"our\",\n \"out\",\n \"over\",\n \"own\",\n \"s\",\n \"same\",\n \"shall\",\n \"she\",\n \"should\",\n \"shouldn\",\n \"so\",\n \"some\",\n \"such\",\n \"t\",\n \"than\",\n \"that\",\n \"the\",\n \"their\",\n \"them\",\n \"then\",\n \"there\",\n \"these\",\n \"they\",\n \"this\",\n \"those\",\n \"through\",\n \"to\",\n \"too\",\n \"under\",\n \"up\",\n \"very\",\n \"was\",\n \"wasn\",\n \"we\",\n \"were\",\n \"weren\",\n \"when\",\n \"where\",\n \"why\",\n \"will\",\n \"with\",\n \"won\",\n \"would\",\n \"wouldn\",\n \"you\",\n \"your\"\n ]\n}\n","import rules from \"../../schemas/tool-manual-grader-rules.json\";\n\nimport { SiglumeClient } from \"./client\";\nimport type { ToolManualIssue, ToolManualQualityReport } from \"./types\";\nimport { validate_tool_manual } from \"./tool-manual-validator\";\nimport { isRecord } from \"./utils\";\n\nconst WORD_RE = /[A-Za-z\\u3040-\\u9fff]{2,}/gu;\n\ntype GraderIssueFactory = (\n code: string,\n message: string,\n options?: { field?: string; severity?: ToolManualIssue[\"severity\"]; suggestion?: string },\n) => ToolManualIssue;\n\ntype ManualScoreParts = {\n trigger_score: number;\n do_not_use_score: number;\n summary_score: number;\n input_schema_score: number;\n output_schema_score: number;\n hints_score: number;\n keyword_count: number;\n};\n\nconst ambiguityPhrases = Array.isArray(rules.ambiguity_phrases)\n ? rules.ambiguity_phrases.map((item) => String(item))\n : [];\nconst marketingFluff = Array.isArray(rules.marketing_fluff)\n ? rules.marketing_fluff.map((item) => String(item))\n : [];\nconst imperativePrefixes = Array.isArray(rules.imperative_prefixes)\n ? rules.imperative_prefixes.map((item) => String(item))\n : [];\nconst stopWords = new Set(\n Array.isArray(rules.stop_words) ? rules.stop_words.map((item) => String(item)) : [],\n);\nconst keywordCoverageBands = Array.isArray(rules.keyword_coverage_bands)\n ? rules.keyword_coverage_bands\n .filter((item): item is { minimum_keywords: number; score: number } =>\n isRecord(item) &&\n typeof item.minimum_keywords === \"number\" &&\n typeof item.score === \"number\",\n )\n .map((item) => [item.minimum_keywords, item.score] as const)\n .sort((left, right) => right[0] - left[0])\n : [];\nconst gradeThresholdSource = isRecord(rules.grade_thresholds) ? (rules.grade_thresholds as Record<string, unknown>) : {};\nconst gradeThresholds = [\"A\", \"B\", \"C\", \"D\"]\n .map((grade) => [grade, gradeThresholdSource[grade]] as const)\n .filter((entry): entry is [ToolManualQualityReport[\"grade\"], number] => typeof entry[1] === \"number\");\n\nfunction createIssueFactory(): GraderIssueFactory {\n return (code, message, options = {}) => ({\n code,\n message,\n field: options.field,\n severity: options.severity ?? \"warning\",\n suggestion: options.suggestion,\n });\n}\n\nfunction coerceToolManual(tool_manual: unknown): Record<string, unknown> | unknown {\n if (isRecord(tool_manual) && typeof tool_manual.to_dict === \"function\") {\n return tool_manual.to_dict();\n }\n return tool_manual;\n}\n\nexport async function score_tool_manual_remote(\n tool_manual: Record<string, unknown>,\n options: { api_key: string; base_url?: string; fetch?: typeof fetch },\n): Promise<ToolManualQualityReport> {\n const client = new SiglumeClient({\n api_key: options.api_key,\n base_url: options.base_url,\n fetch: options.fetch,\n });\n return client.preview_quality_score(tool_manual);\n}\n\nexport function score_tool_manual_offline(tool_manual: unknown): ToolManualQualityReport {\n const manual = coerceToolManual(tool_manual);\n const [validation_ok, validation_issues] = validate_tool_manual(manual);\n const quality = scoreManualQuality(manual);\n const validation_errors = validation_issues.filter((nextIssue) => nextIssue.severity === \"error\");\n const validation_warnings = validation_issues.filter((nextIssue) => nextIssue.severity !== \"error\");\n const hasCriticalQualityIssue = quality.issues.some((nextIssue) => nextIssue.severity === \"critical\");\n\n return {\n overall_score: quality.overall_score,\n grade: quality.grade,\n issues: [...validation_issues, ...quality.issues],\n keyword_coverage_estimate: quality.keyword_coverage_estimate,\n improvement_suggestions: quality.improvement_suggestions,\n publishable: validation_ok && (quality.grade === \"A\" || quality.grade === \"B\") && !hasCriticalQualityIssue,\n validation_ok,\n validation_errors,\n validation_warnings,\n };\n}\n\nfunction scoreManualQuality(manual: Record<string, unknown> | unknown): ToolManualQualityReport {\n const makeIssue = createIssueFactory();\n if (!isRecord(manual)) {\n return {\n overall_score: 0,\n grade: \"F\",\n issues: [makeIssue(\"ambiguity\", \"Manual is not a dict\", { severity: \"critical\" })],\n keyword_coverage_estimate: 0,\n improvement_suggestions: [\"Provide a valid manual dict\"],\n };\n }\n\n const issues: ToolManualIssue[] = [];\n const trigger_score = scoreTriggerConditions(manual, issues, makeIssue);\n const do_not_use_score = scoreDoNotUseWhen(manual, issues, makeIssue);\n const summary_score = scoreSummaryForModel(manual, issues, makeIssue);\n const input_schema_score = scoreInputSchemaDescriptions(manual, issues, makeIssue);\n const output_schema_score = scoreOutputSchemaCompleteness(manual, issues, makeIssue);\n const hints_score = scoreHints(manual, issues, makeIssue);\n const keyword_coverage_estimate = estimateKeywordCoverage(manual);\n const keyword_score = scoreKeywordCoverage(keyword_coverage_estimate);\n\n const overall_score = Math.max(\n 0,\n Math.min(\n 100,\n trigger_score +\n do_not_use_score +\n summary_score +\n input_schema_score +\n output_schema_score +\n hints_score +\n keyword_score,\n ),\n );\n\n return {\n overall_score,\n grade: overallToGrade(overall_score),\n issues,\n keyword_coverage_estimate,\n improvement_suggestions: buildImprovementSuggestions({\n trigger_score,\n do_not_use_score,\n summary_score,\n input_schema_score,\n output_schema_score,\n hints_score,\n keyword_count: keyword_coverage_estimate,\n }),\n };\n}\n\nfunction scoreTriggerConditions(\n manual: Record<string, unknown>,\n issues: ToolManualIssue[],\n makeIssue: GraderIssueFactory,\n): number {\n const conditions = manual.trigger_conditions;\n if (!Array.isArray(conditions) || conditions.length === 0) {\n issues.push(makeIssue(\"trigger_specificity\", \"No trigger_conditions provided\", { field: \"trigger_conditions\", severity: \"critical\" }));\n return 0;\n }\n\n let score = 30;\n conditions.forEach((condition, index) => {\n if (typeof condition !== \"string\") {\n issues.push(\n makeIssue(\"trigger_specificity\", \"Trigger condition must be a string to be matchable by agents\", {\n field: `trigger_conditions[${index}]`,\n severity: \"warning\",\n suggestion: \"Replace non-string trigger conditions with concrete text descriptions\",\n }),\n );\n score -= 5;\n return;\n }\n\n const field = `trigger_conditions[${index}]`;\n const lowered = condition.toLowerCase();\n if (condition.length < 15) {\n issues.push(\n makeIssue(\"trigger_specificity\", `Trigger condition is too short (${condition.length} chars) - be more specific`, {\n field,\n severity: \"warning\",\n suggestion: \"Describe a concrete situation, e.g. 'When the owner asks for a weather forecast for a specific city'\",\n }),\n );\n score -= 5;\n }\n if (ambiguityPhrases.some((phrase) => lowered.includes(phrase.toLowerCase()))) {\n issues.push(\n makeIssue(\"ambiguity\", \"Contains vague phrase that agents cannot reliably match on\", {\n field,\n severity: \"warning\",\n suggestion: \"Replace with a concrete situation description\",\n }),\n );\n score -= 5;\n }\n if (marketingFluff.some((fluff) => lowered.includes(fluff.toLowerCase()))) {\n issues.push(\n makeIssue(\"description_quality\", \"Marketing language in trigger condition reduces selection accuracy\", {\n field,\n severity: \"warning\",\n suggestion: \"Use factual, situation-based language instead\",\n }),\n );\n score -= 3;\n }\n if (imperativePrefixes.some((prefix) => lowered.startsWith(prefix))) {\n issues.push(\n makeIssue(\"trigger_specificity\", \"Trigger reads as an imperative command rather than a situation description\", {\n field,\n severity: \"suggestion\",\n suggestion: \"Rewrite as a situation: 'When the user needs...' or 'The agent encounters...'\",\n }),\n );\n score -= 2;\n }\n });\n\n if (conditions.length < 3) {\n issues.push(\n makeIssue(\"trigger_specificity\", `Only ${conditions.length} trigger condition(s) - 3+ increases selection chances`, {\n field: \"trigger_conditions\",\n severity: \"suggestion\",\n }),\n );\n score -= 5;\n }\n return Math.max(0, score);\n}\n\nfunction scoreDoNotUseWhen(\n manual: Record<string, unknown>,\n issues: ToolManualIssue[],\n makeIssue: GraderIssueFactory,\n): number {\n const items = manual.do_not_use_when;\n if (!Array.isArray(items) || items.length === 0) {\n issues.push(\n makeIssue(\"description_quality\", \"No do_not_use_when items - agents need negative conditions to avoid false positives\", {\n field: \"do_not_use_when\",\n severity: \"warning\",\n }),\n );\n return 0;\n }\n\n let score = 10;\n const triggerTexts = Array.isArray(manual.trigger_conditions)\n ? manual.trigger_conditions.filter((item): item is string => typeof item === \"string\").map((item) => item.toLowerCase())\n : [];\n\n items.forEach((item, index) => {\n if (typeof item !== \"string\") {\n issues.push(\n makeIssue(\"description_quality\", \"do_not_use_when entries must be strings to describe negative cases clearly\", {\n field: `do_not_use_when[${index}]`,\n severity: \"warning\",\n }),\n );\n score -= 3;\n return;\n }\n\n const field = `do_not_use_when[${index}]`;\n const itemWords = new Set(extractWords(item.toLowerCase()));\n for (const triggerText of triggerTexts) {\n const triggerWords = new Set(extractWords(triggerText));\n if (itemWords.size === 0 || triggerWords.size === 0) {\n continue;\n }\n const overlap = [...itemWords].filter((word) => triggerWords.has(word)).length / itemWords.size;\n if (overlap > 0.6) {\n issues.push(\n makeIssue(\"ambiguity\", \"This do_not_use_when item closely mirrors a trigger_condition - add a genuinely different negative case\", {\n field,\n severity: \"suggestion\",\n }),\n );\n score -= 3;\n break;\n }\n }\n if (item.length < 10) {\n issues.push(\n makeIssue(\"description_quality\", \"do_not_use_when item is very short - describe a concrete negative condition\", {\n field,\n severity: \"suggestion\",\n }),\n );\n score -= 2;\n }\n });\n\n return Math.max(0, score);\n}\n\nfunction scoreSummaryForModel(\n manual: Record<string, unknown>,\n issues: ToolManualIssue[],\n makeIssue: GraderIssueFactory,\n): number {\n const summary = manual.summary_for_model;\n if (summary === undefined) {\n issues.push(makeIssue(\"description_quality\", \"summary_for_model is missing\", { field: \"summary_for_model\", severity: \"warning\" }));\n return 0;\n }\n if (typeof summary !== \"string\") {\n issues.push(makeIssue(\"description_quality\", \"summary_for_model must be a string\", { field: \"summary_for_model\", severity: \"warning\" }));\n return 0;\n }\n if (summary.length === 0) {\n issues.push(makeIssue(\"description_quality\", \"summary_for_model is empty\", { field: \"summary_for_model\", severity: \"warning\" }));\n return 0;\n }\n\n let score = 10;\n const lowered = summary.toLowerCase();\n let fluffFound = false;\n for (const fluff of marketingFluff) {\n if (lowered.includes(fluff.toLowerCase())) {\n issues.push(\n makeIssue(\"description_quality\", \"Marketing language in summary_for_model - use factual descriptions\", {\n field: \"summary_for_model\",\n severity: \"warning\",\n suggestion: \"Describe what the tool actually does in plain terms\",\n }),\n );\n if (!fluffFound) {\n score -= 3;\n fluffFound = true;\n }\n }\n }\n if (summary.length < 20) {\n issues.push(\n makeIssue(\"description_quality\", \"summary_for_model is very brief - a longer factual description helps agent selection\", {\n field: \"summary_for_model\",\n severity: \"suggestion\",\n }),\n );\n score -= 3;\n }\n return Math.max(0, score);\n}\n\nfunction scoreInputSchemaDescriptions(\n manual: Record<string, unknown>,\n issues: ToolManualIssue[],\n makeIssue: GraderIssueFactory,\n): number {\n if (!isRecord(manual.input_schema)) {\n issues.push(makeIssue(\"schema_completeness\", \"input_schema must be a JSON Schema object\", { field: \"input_schema\", severity: \"warning\" }));\n return 0;\n }\n const schemaIssues = checkSchemaDescriptions(manual.input_schema, makeIssue);\n issues.push(...schemaIssues);\n if (schemaIssues.length === 0) {\n return 20;\n }\n\n let score = 20;\n for (const schemaIssue of schemaIssues) {\n if (schemaIssue.severity === \"warning\") {\n score -= 5;\n } else if (schemaIssue.severity === \"suggestion\") {\n score -= 2;\n }\n }\n return Math.max(0, score);\n}\n\nfunction scoreOutputSchemaCompleteness(\n manual: Record<string, unknown>,\n issues: ToolManualIssue[],\n makeIssue: GraderIssueFactory,\n): number {\n if (!isRecord(manual.output_schema)) {\n issues.push(makeIssue(\"schema_completeness\", \"output_schema must be a JSON Schema object\", { field: \"output_schema\", severity: \"warning\" }));\n return 0;\n }\n\n const properties = manual.output_schema.properties;\n if (!isRecord(properties)) {\n issues.push(\n makeIssue(\"schema_completeness\", \"output_schema.properties must be an object mapping field names to schema definitions\", {\n field: \"output_schema.properties\",\n severity: \"warning\",\n }),\n );\n return 0;\n }\n if (Object.keys(properties).length === 0) {\n issues.push(makeIssue(\"schema_completeness\", \"output_schema has no properties defined\", { field: \"output_schema\", severity: \"warning\" }));\n return 0;\n }\n\n let undescribed = 0;\n Object.values(properties).forEach((propertyDefinition) => {\n if (isRecord(propertyDefinition) && !propertyDefinition.description) {\n undescribed += 1;\n }\n });\n\n let score = 10;\n if (undescribed > 0) {\n issues.push(\n makeIssue(\"schema_completeness\", `${undescribed} output field(s) lack descriptions`, {\n field: \"output_schema\",\n severity: \"suggestion\",\n suggestion: \"Add description to each output property so agents know what to expect\",\n }),\n );\n score -= Math.min(undescribed * 2, 6);\n }\n return Math.max(0, score);\n}\n\nfunction scoreHints(manual: Record<string, unknown>, issues: ToolManualIssue[], makeIssue: GraderIssueFactory): number {\n let score = 10;\n for (const fieldName of [\"usage_hints\", \"result_hints\", \"error_hints\"] as const) {\n const hints = manual[fieldName];\n if (!Array.isArray(hints)) {\n issues.push(\n makeIssue(\"description_quality\", `${fieldName} must be a list of hint strings`, {\n field: fieldName,\n severity: \"warning\",\n }),\n );\n score -= 5;\n continue;\n }\n if (hints.length === 0) {\n issues.push(\n makeIssue(\"description_quality\", `${fieldName} is empty - hints help agents use the tool correctly`, {\n field: fieldName,\n severity: \"suggestion\",\n }),\n );\n score -= 3;\n continue;\n }\n\n let shortCount = 0;\n hints.forEach((item, index) => {\n if (typeof item !== \"string\") {\n issues.push(\n makeIssue(\"description_quality\", `${fieldName} items must be strings`, {\n field: `${fieldName}[${index}]`,\n severity: \"critical\",\n suggestion: \"Replace non-string hint items with short plain-language guidance\",\n }),\n );\n score -= 10;\n return;\n }\n if (item.length < 10) {\n shortCount += 1;\n }\n });\n if (shortCount > 0) {\n issues.push(\n makeIssue(\"description_quality\", `${shortCount} item(s) in ${fieldName} are very short - provide actionable guidance`, {\n field: fieldName,\n severity: \"suggestion\",\n }),\n );\n score -= Math.min(shortCount, 3);\n }\n }\n return Math.max(0, score);\n}\n\nfunction scoreKeywordCoverage(keywordCount: number): number {\n for (const [minimumKeywords, score] of keywordCoverageBands) {\n if (keywordCount >= minimumKeywords) {\n return score;\n }\n }\n return Math.max(0, keywordCount);\n}\n\nfunction checkSchemaDescriptions(schema: Record<string, unknown>, makeIssue: GraderIssueFactory): ToolManualIssue[] {\n const issues: ToolManualIssue[] = [];\n const properties = schema.properties;\n if (!isRecord(properties)) {\n return issues;\n }\n\n for (const [propertyName, propertyDefinition] of Object.entries(properties)) {\n if (!isRecord(propertyDefinition)) {\n issues.push(\n makeIssue(\"schema_completeness\", `Field '${propertyName}' must be described by a schema object`, {\n field: `input_schema.properties.${propertyName}`,\n severity: \"warning\",\n }),\n );\n continue;\n }\n\n const field = `input_schema.properties.${propertyName}`;\n const description = propertyDefinition.description;\n if (description === undefined || (typeof description === \"string\" && description.trim().length === 0)) {\n issues.push(\n makeIssue(\"schema_completeness\", `Field '${propertyName}' has no description - agents will not know what to pass`, {\n field,\n severity: \"warning\",\n suggestion: `Add a description explaining what '${propertyName}' represents and any constraints`,\n }),\n );\n } else if (typeof description !== \"string\") {\n issues.push(\n makeIssue(\"schema_completeness\", `Field '${propertyName}' description must be a string`, {\n field,\n severity: \"warning\",\n suggestion: \"Replace non-string descriptions with short explanatory text\",\n }),\n );\n } else if (description.trim().length < 10) {\n issues.push(\n makeIssue(\"schema_completeness\", `Field '${propertyName}' has a very short description (${description.trim().length} chars)`, {\n field,\n severity: \"suggestion\",\n suggestion: \"Expand the description to at least 10 characters for clarity\",\n }),\n );\n }\n\n if (Array.isArray(propertyDefinition.enum)) {\n const trivial = propertyDefinition.enum.filter((item) => typeof item === \"string\" && item.length <= 1);\n if (trivial.length > 0 && trivial.length === propertyDefinition.enum.length) {\n issues.push(\n makeIssue(\"schema_completeness\", `Field '${propertyName}' has only single-character enum values - use meaningful names`, {\n field,\n severity: \"warning\",\n suggestion: \"Replace enum values like 'a','b','c' with descriptive names like 'celsius','fahrenheit'\",\n }),\n );\n }\n }\n\n if (propertyDefinition.type === \"object\") {\n issues.push(...checkSchemaDescriptions(propertyDefinition, makeIssue));\n }\n if (isRecord(propertyDefinition.items) && propertyDefinition.items.type === \"object\") {\n issues.push(...checkSchemaDescriptions(propertyDefinition.items, makeIssue));\n }\n }\n\n return issues;\n}\n\nfunction estimateKeywordCoverage(manual: Record<string, unknown>): number {\n const textParts: string[] = [];\n if (Array.isArray(manual.trigger_conditions)) {\n textParts.push(...manual.trigger_conditions.filter((item): item is string => typeof item === \"string\"));\n }\n if (typeof manual.job_to_be_done === \"string\") {\n textParts.push(manual.job_to_be_done);\n }\n if (typeof manual.summary_for_model === \"string\") {\n textParts.push(manual.summary_for_model);\n }\n if (Array.isArray(manual.usage_hints)) {\n textParts.push(...manual.usage_hints.filter((item): item is string => typeof item === \"string\"));\n }\n const words = extractWords(textParts.join(\" \").toLowerCase());\n const meaningful = new Set(words.filter((word) => !stopWords.has(word) && word.length >= 2));\n return meaningful.size;\n}\n\nfunction extractWords(text: string): string[] {\n return [...text.matchAll(WORD_RE)].map((match) => match[0]);\n}\n\nfunction overallToGrade(score: number): ToolManualQualityReport[\"grade\"] {\n for (const [grade, minimumScore] of gradeThresholds) {\n if (score >= minimumScore) {\n return grade;\n }\n }\n return \"F\";\n}\n\nfunction buildImprovementSuggestions(scores: ManualScoreParts): string[] {\n const suggestions: string[] = [];\n if (scores.trigger_score < 20) {\n suggestions.push(\"Improve trigger_conditions: write 3-5 specific situations describing WHEN an agent should select this tool.\");\n }\n if (scores.input_schema_score < 15) {\n suggestions.push(\"Add descriptions to all input_schema properties. Each description should be at least 10 characters and explain what the field represents.\");\n }\n if (scores.summary_score < 7) {\n suggestions.push(\"Rewrite summary_for_model with factual, plain language. Avoid marketing adjectives and describe what the tool does.\");\n }\n if (scores.do_not_use_score < 7) {\n suggestions.push(\"Add concrete do_not_use_when conditions that are genuinely different from your trigger_conditions.\");\n }\n if (scores.output_schema_score < 7) {\n suggestions.push(\"Add descriptions to output_schema properties so agents know what data they will receive.\");\n }\n if (scores.hints_score < 7) {\n suggestions.push(\"Expand usage_hints and result_hints with actionable guidance for agents.\");\n }\n if (scores.keyword_count < 10) {\n suggestions.push(\n `Keyword coverage is low (${scores.keyword_count} unique terms). Use varied vocabulary across trigger_conditions and hints to cover more request phrasings.`,\n );\n }\n return suggestions;\n}\n"],"mappings":"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IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,iBAAmB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,qBAAuB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,YAAc;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA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","names":["resolve","isRecord","toRecord","stringOrNull","numberOrNull","data","buildUrl","RETRYABLE_STATUS_CODES","stringList","normalizeUsageRecord","coerceToolManual","coerceToolManual","CAPABILITY_KEY_RE","issue","operations","CAPABILITY_KEY_RE","payload"]}