{"version":3,"sources":["../../../src/config/defaults.ts","../../../src/errors/config-error.ts","../../../src/config/chain.ts","../../../gen/emit.ts","../../../src/errors/http-error.ts","../../../src/core/msgpack.ts","../../../src/core/http.ts","../../../src/core/stream.ts","../../../src/builders/query-results.ts","../../../src/helpers/condition-normalizer.ts","../../../src/helpers/candidate-condition.ts","../../../src/helpers/candidate-search.ts","../../../src/helpers/search-options.ts","../../../src/builders/cascade-relationship-builder.ts","../../../src/helpers/schema-diff.ts","../../../src/helpers/query-formatters.ts","../../../src/impl/onyx-core.ts","../../../src/impl/onyx.ts","../../../gen/generate.ts","../../../gen/cli/generate.ts"],"names":["changed","mask","columns","rows","resolveConfig","DEFAULTS","process","isTypesFilePath"],"mappings":"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","file":"generate.cjs","sourcesContent":["// filename: src/config/defaults.ts\nexport const DEFAULT_BASE_URL = 'https://api.onyx.dev';\nexport const DEFAULT_AI_BASE_URL = 'https://ai.onyx.dev';\nexport const DEFAULT_AI_MODEL = 'onyx';\n\nexport const sanitizeBaseUrl = (u: string): string => u.replace(/\\/+$/, '');\n","// filename: src/errors/config-error.ts\nexport class OnyxConfigError extends Error {\n  readonly name = 'OnyxConfigError';\n  constructor(message: string) {\n    super(message);\n  }\n}","// filename: src/config/chain.ts\nimport {\n  DEFAULT_BASE_URL,\n  DEFAULT_AI_BASE_URL,\n  DEFAULT_AI_MODEL,\n  sanitizeBaseUrl,\n} from './defaults';\nimport { OnyxConfigError } from '../errors/config-error';\nimport type { OnyxConfig } from '../types/public';\nimport type { FetchImpl } from '../types/common';\nimport type { ConfigSourceInfo, ResolvedConfig } from './types';\n\nconst gProcess = (globalThis as {\n  process?: {\n    versions?: { node?: string };\n    env?: Record<string, string | undefined>;\n    stderr?: { write?: (s: string) => void };\n    cwd?: () => string;\n  };\n}).process;\nconst isNode = !!gProcess?.versions?.node;\n\n// Optional debug logger — enable with ONYX_DEBUG=true (Node only)\nconst dbg = (...args: unknown[]): void => {\n  if (gProcess?.env?.ONYX_DEBUG == \"true\") {\n    const fmt = (v: unknown): string => {\n      if (typeof v === 'string') return v;\n      try {\n        return JSON.stringify(v);\n      } catch {\n        return String(v);\n      }\n    };\n    gProcess.stderr?.write?.(`[onyx-config] ${args.map(fmt).join(' ')}\\n`);\n  }\n};\n\nfunction dropUndefined<T extends object>(obj: Partial<T> | undefined): Partial<T> {\n  if (!obj) return {};\n  const out: Record<string, unknown> = {};\n  for (const [k, v] of Object.entries(obj)) {\n    if (v !== undefined) out[k] = v;\n  }\n  return out as Partial<T>;\n}\n\n// Lazy import helper to hide Node-only modules from bundlers\nasync function nodeImport<T>(spec: string): Promise<T> {\n  return import(/* @vite-ignore */ spec) as Promise<T>;\n}\n\nfunction readEnv(targetId?: string): Partial<OnyxConfig> {\n  if (!gProcess?.env) return {};\n  const env = gProcess.env;\n  const pick = (...keys: string[]): string | undefined => {\n    for (const k of keys) {\n      const v = env[k];\n      if (typeof v === 'string') {\n        const cleaned = v.replace(/[\\r\\n]+/g, '').trim();\n        if (cleaned !== '') return cleaned;\n      }\n    }\n    return undefined;\n  };\n\n  const envId = pick('ONYX_DATABASE_ID');\n  if (targetId && envId !== targetId) return {};\n  const res = dropUndefined<OnyxConfig>({\n    baseUrl: pick('ONYX_DATABASE_BASE_URL'),\n    aiBaseUrl: pick('ONYX_AI_BASE_URL'),\n    defaultModel: pick('ONYX_DEFAULT_MODEL'),\n    databaseId: envId,\n    apiKey: pick('ONYX_DATABASE_API_KEY'),\n    apiSecret: pick('ONYX_DATABASE_API_SECRET'),\n  });\n  if (Object.keys(res).length === 0) return {};\n  dbg('env:', mask(res));\n  return res;\n}\n\nasync function readProjectFile(databaseId?: string): Promise<{ config: Partial<OnyxConfig>; path?: string }> {\n  if (!isNode) return { config: {} };\n  const fs = await nodeImport<typeof import('node:fs/promises')>('node:fs/promises');\n  const path = await nodeImport<typeof import('node:path')>('node:path');\n  const cwd = gProcess?.cwd?.() ?? '.';\n\n  const tryRead = async (p: string): Promise<{ config: Partial<OnyxConfig>; path: string }> => {\n    const txt = await fs.readFile(p, 'utf8');\n    const sanitized = txt.replace(/[\\r\\n]+/g, '');\n    const json = dropUndefined<OnyxConfig>(JSON.parse(sanitized) as Partial<OnyxConfig>);\n    dbg('project file:', p, '→', mask(json));\n    return { config: json, path: p };\n  };\n\n  if (databaseId) {\n    const specific = path.resolve(cwd, `onyx-database-${databaseId}.json`);\n    try {\n      return await tryRead(specific);\n    } catch {\n      dbg('project file not found:', specific);\n    }\n  }\n\n  const fallback = path.resolve(cwd, 'onyx-database.json');\n  try {\n    return await tryRead(fallback);\n  } catch {\n    dbg('project file not found:', fallback);\n    return { config: {} };\n  }\n}\n\nasync function readHomeProfile(databaseId?: string): Promise<{ config: Partial<OnyxConfig>; path?: string }> {\n  if (!isNode) return { config: {} };\n  const fs = await nodeImport<typeof import('node:fs/promises')>('node:fs/promises');\n  const os = await nodeImport<typeof import('node:os')>('node:os');\n  const path = await nodeImport<typeof import('node:path')>('node:path');\n\n  const home = os.homedir();\n  const dir = path.join(home, '.onyx');\n\n  const fileExists = async (p: string): Promise<boolean> => {\n    try {\n      await fs.access(p);\n      return true;\n    } catch {\n      return false;\n    }\n  };\n  const readProfile = async (p: string): Promise<{ config: Partial<OnyxConfig>; path: string }> => {\n    try {\n      const txt = await fs.readFile(p, 'utf8');\n      const sanitized = txt.replace(/[\\r\\n]+/g, '');\n      const json = dropUndefined<OnyxConfig>(JSON.parse(sanitized) as Partial<OnyxConfig>);\n      dbg('home profile used:', p, '→', mask(json));\n      return { config: json, path: p };\n    } catch (e: unknown) {\n      const msg = e instanceof Error ? e.message : String(e);\n      throw new OnyxConfigError(`Failed to read ${p}: ${msg}`);\n    }\n  };\n\n  if (databaseId) {\n    const specific = `${dir}/onyx-database-${databaseId}.json`;\n    if (await fileExists(specific)) return readProfile(specific);\n    dbg('no specific profile:', specific);\n  }\n\n  const defaultInDir = `${dir}/onyx-database.json`;\n  if (await fileExists(defaultInDir)) return readProfile(defaultInDir);\n  dbg('no default profile in dir:', defaultInDir);\n\n  const defaultInHome = `${home}/onyx-database.json`;\n  if (await fileExists(defaultInHome)) return readProfile(defaultInHome);\n  dbg('no home-root fallback:', defaultInHome);\n\n  if (!(await fileExists(dir))) {\n    dbg('~/.onyx does not exist:', dir);\n    return { config: {} };\n  }\n  const files = await fs.readdir(dir).catch(() => []);\n  const matches = files.filter(f => f.startsWith('onyx-database-') && f.endsWith('.json'));\n  if (matches.length === 1) {\n    const only = `${dir}/${matches[0]}`;\n    return readProfile(only);\n  }\n  if (matches.length > 1) {\n    throw new OnyxConfigError(\n      'Multiple ~/.onyx/onyx-database-*.json profiles found. Specify databaseId via env or provide ./onyx-database.json.'\n    );\n  }\n\n  dbg('no usable home profiles found in', dir);\n  return { config: {} };\n}\n\nasync function readConfigPath(p: string): Promise<{ config: Partial<OnyxConfig>; path?: string }> {\n  if (!isNode) return { config: {} };\n  const fs = await nodeImport<typeof import('node:fs/promises')>('node:fs/promises');\n  const path = await nodeImport<typeof import('node:path')>('node:path');\n  const cwd = gProcess?.cwd?.() ?? '.';\n  const resolved = path.isAbsolute(p) ? p : path.resolve(cwd, p);\n  try {\n    const txt = await fs.readFile(resolved, 'utf8');\n    const sanitized = txt.replace(/[\\r\\n]+/g, '');\n    const json = dropUndefined<OnyxConfig>(JSON.parse(sanitized) as Partial<OnyxConfig>);\n    dbg('config path:', resolved, '→', mask(json));\n    return { config: json, path: resolved };\n  } catch (e: unknown) {\n    const msg = e instanceof Error ? e.message : String(e);\n    throw new OnyxConfigError(`Failed to read ${resolved}: ${msg}`);\n  }\n}\n\n/**\n * Resolve configuration using precedence:\n *   explicit config (highest) >\n *   env vars >\n *   ONYX_CONFIG_PATH file >\n *   project file >\n *   home profile\n */\nexport async function resolveConfig(input?: OnyxConfig): Promise<ResolvedConfig> {\n  const configPath = gProcess?.env?.ONYX_CONFIG_PATH;\n  const env = readEnv(input?.databaseId);\n\n  let cfgPath: Partial<OnyxConfig> = {};\n  if (configPath) {\n    const cfgRes = await readConfigPath(configPath);\n    cfgPath = cfgRes.config;\n  }\n\n  const targetId = input?.databaseId ?? env.databaseId ?? cfgPath.databaseId;\n\n  let haveDbId = !!(input?.databaseId ?? env.databaseId ?? cfgPath.databaseId);\n  let haveApiKey = !!(input?.apiKey ?? env.apiKey ?? cfgPath.apiKey);\n  let haveApiSecret = !!(input?.apiSecret ?? env.apiSecret ?? cfgPath.apiSecret);\n\n  let project: Partial<OnyxConfig> = {};\n  if (!(haveDbId && haveApiKey && haveApiSecret)) {\n    const projRes = await readProjectFile(targetId);\n    project = projRes.config;\n    if (project.databaseId) haveDbId = true;\n    if (project.apiKey) haveApiKey = true;\n    if (project.apiSecret) haveApiSecret = true;\n  }\n\n  let home: Partial<OnyxConfig> = {};\n  if (!(haveDbId && haveApiKey && haveApiSecret)) {\n    const homeRes = await readHomeProfile(targetId);\n    home = homeRes.config;\n  }\n\n  const merged: Partial<OnyxConfig> = {\n    baseUrl: DEFAULT_BASE_URL,\n    aiBaseUrl: DEFAULT_AI_BASE_URL,\n    defaultModel: DEFAULT_AI_MODEL,\n    ...dropUndefined<OnyxConfig>(home),\n    ...dropUndefined<OnyxConfig>(project),\n    ...dropUndefined<OnyxConfig>(cfgPath),\n    ...dropUndefined<OnyxConfig>(env),\n    ...dropUndefined<OnyxConfig>(input),\n  };\n\n  dbg('merged (pre-validate):', mask(merged));\n\n  const baseUrl = sanitizeBaseUrl(merged.baseUrl ?? DEFAULT_BASE_URL);\n  const aiBaseUrl = sanitizeBaseUrl(merged.aiBaseUrl ?? DEFAULT_AI_BASE_URL);\n  const defaultModel =\n    typeof merged.defaultModel === 'string' && merged.defaultModel.trim()\n      ? merged.defaultModel.trim()\n      : DEFAULT_AI_MODEL;\n  const databaseId = merged.databaseId ?? '';\n  const apiKey = merged.apiKey ?? '';\n  const apiSecret = merged.apiSecret ?? '';\n  const wireFormat = merged.wireFormat ?? 'msgpack';\n  if (wireFormat !== 'json' && wireFormat !== 'msgpack') {\n    throw new OnyxConfigError('wireFormat must be either json or msgpack');\n  }\n  const gfetch = (globalThis as { fetch?: FetchImpl }).fetch;\n  const fetchImpl: FetchImpl =\n    merged.fetch ??\n    (typeof gfetch === 'function'\n      ? (u, i) => gfetch(u, i)\n      : async () => {\n          throw new OnyxConfigError('No fetch available; provide OnyxConfig.fetch');\n        });\n\n  const retryConfig =\n    input?.retry ??\n    env.retry ??\n    cfgPath.retry ??\n    project.retry ??\n    home.retry ??\n    {};\n  const retryEnabled = retryConfig.enabled ?? true;\n  const maxRetries = retryConfig.maxRetries ?? 3;\n  const retryInitialDelayMs = retryConfig.initialDelayMs ?? 300;\n\n  const missing: string[] = [];\n  if (!apiKey) missing.push('apiKey');\n  if (!apiSecret) missing.push('apiSecret');\n  if (missing.length) {\n    dbg('validation failed. merged:', mask(merged));\n    const sources = [\n      'env',\n      configPath ?? 'env ONYX_CONFIG_PATH',\n      ...(isNode\n        ? [\n            './onyx-database-<databaseId>.json',\n            './onyx-database.json',\n            '~/.onyx/onyx-database-<databaseId>.json',\n            '~/.onyx/onyx-database.json',\n            '~/onyx-database.json',\n          ]\n        : []),\n      'explicit config',\n    ];\n    throw new OnyxConfigError(\n      `Missing required config: ${missing.join(', ')}. Sources: ${sources.join(', ')}`,\n    );\n  }\n\n  const resolved: ResolvedConfig = {\n    baseUrl,\n    aiBaseUrl,\n    defaultModel,\n    databaseId,\n    apiKey,\n    apiSecret,\n    fetch: fetchImpl,\n    wireFormat,\n    retryEnabled,\n    maxRetries,\n    retryInitialDelayMs,\n  };\n  const source = {\n    databaseId: input?.databaseId\n      ? 'explicit config'\n      : env.databaseId\n      ? 'env'\n      : cfgPath.databaseId\n      ? 'env ONYX_CONFIG_PATH'\n      : project.databaseId\n      ? 'project file'\n      : home.databaseId\n      ? 'home profile'\n      : 'unknown',\n    aiBaseUrl: input?.aiBaseUrl\n      ? 'explicit config'\n      : env.aiBaseUrl\n      ? 'env'\n      : cfgPath.aiBaseUrl\n      ? 'env ONYX_CONFIG_PATH'\n      : project.aiBaseUrl\n      ? 'project file'\n      : home.aiBaseUrl\n      ? 'home profile'\n      : 'default',\n    defaultModel: input?.defaultModel\n      ? 'explicit config'\n      : env.defaultModel\n      ? 'env'\n      : cfgPath.defaultModel\n      ? 'env ONYX_CONFIG_PATH'\n      : project.defaultModel\n      ? 'project file'\n      : home.defaultModel\n      ? 'home profile'\n      : 'default',\n    apiKey: input?.apiKey\n      ? 'explicit config'\n      : env.apiKey\n      ? 'env'\n      : cfgPath.apiKey\n      ? 'env ONYX_CONFIG_PATH'\n      : project.apiKey\n      ? 'project file'\n      : home.apiKey\n      ? 'home profile'\n      : 'unknown',\n    apiSecret: input?.apiSecret\n      ? 'explicit config'\n      : env.apiSecret\n      ? 'env'\n      : cfgPath.apiSecret\n      ? 'env ONYX_CONFIG_PATH'\n      : project.apiSecret\n      ? 'project file'\n      : home.apiSecret\n      ? 'home profile'\n      : 'unknown',\n  };\n  dbg('credential source:', JSON.stringify(source));\n  dbg('resolved:', mask(resolved));\n  return resolved;\n}\n\nexport async function resolveConfigWithSource(\n  input?: OnyxConfig,\n): Promise<ResolvedConfig & { sources: ConfigSourceInfo }> {\n  const configPathEnv = gProcess?.env?.ONYX_CONFIG_PATH;\n  const env = readEnv(input?.databaseId);\n  const cfgPathRes = configPathEnv ? await readConfigPath(configPathEnv) : { config: {} };\n  const cfgPath = cfgPathRes.config;\n  const projectRes = await readProjectFile(input?.databaseId ?? env.databaseId ?? cfgPath.databaseId);\n  const project = projectRes.config;\n  const homeRes = await readHomeProfile(input?.databaseId ?? env.databaseId ?? cfgPath.databaseId);\n  const home = homeRes.config;\n\n  const base = await resolveConfig(input);\n  const sources: ConfigSourceInfo = {\n    baseUrl: input?.baseUrl\n      ? 'explicit config'\n      : env.baseUrl\n      ? 'env'\n      : cfgPath.baseUrl\n      ? 'env ONYX_CONFIG_PATH'\n      : project.baseUrl\n      ? 'project file'\n      : home.baseUrl\n      ? 'home profile'\n      : 'default',\n    aiBaseUrl: input?.aiBaseUrl\n      ? 'explicit config'\n      : env.aiBaseUrl\n      ? 'env'\n      : cfgPath.aiBaseUrl\n      ? 'env ONYX_CONFIG_PATH'\n      : project.aiBaseUrl\n      ? 'project file'\n      : home.aiBaseUrl\n      ? 'home profile'\n      : 'default',\n    defaultModel: input?.defaultModel\n      ? 'explicit config'\n      : env.defaultModel\n      ? 'env'\n      : cfgPath.defaultModel\n      ? 'env ONYX_CONFIG_PATH'\n      : project.defaultModel\n      ? 'project file'\n      : home.defaultModel\n      ? 'home profile'\n      : 'default',\n    databaseId: input?.databaseId\n      ? 'explicit config'\n      : env.databaseId\n      ? 'env'\n      : cfgPath.databaseId\n      ? 'env ONYX_CONFIG_PATH'\n      : project.databaseId\n      ? 'project file'\n      : home.databaseId\n      ? 'home profile'\n      : 'unknown',\n    apiKey: input?.apiKey\n      ? 'explicit config'\n      : env.apiKey\n      ? 'env'\n      : cfgPath.apiKey\n      ? 'env ONYX_CONFIG_PATH'\n      : project.apiKey\n      ? 'project file'\n      : home.apiKey\n      ? 'home profile'\n      : 'unknown',\n    apiSecret: input?.apiSecret\n      ? 'explicit config'\n      : env.apiSecret\n      ? 'env'\n      : cfgPath.apiSecret\n      ? 'env ONYX_CONFIG_PATH'\n      : project.apiSecret\n      ? 'project file'\n      : home.apiSecret\n      ? 'home profile'\n      : 'unknown',\n    configPath: cfgPathRes.path,\n    projectFile: projectRes.path,\n    homeProfile: homeRes.path,\n  };\n\n  return { ...base, sources };\n}\n\n// Redacts secrets for debug logging\nfunction mask<T extends object>(obj: T | undefined): T | undefined {\n  if (!obj) return obj;\n  const clone = { ...(obj as Record<string, unknown>) } as Record<string, unknown>;\n  if (typeof clone.apiKey === 'string') clone.apiKey = '***';\n  if (typeof clone.apiSecret === 'string') clone.apiSecret = '***';\n  return clone as unknown as T;\n}\n","// filename: gen/emit.ts\nexport type OnyxAttributeType =\n  | 'String'\n  | 'Int'\n  | 'Boolean'\n  | 'Timestamp'\n  | 'EmbeddedList'\n  | 'EmbeddedObject';\n\nexport type OnyxAttribute = Readonly<{\n  name: string;\n  type: OnyxAttributeType;\n  isNullable: boolean;\n}>;\n\nexport type OnyxTable = Readonly<{\n  name: string;\n  attributes: readonly OnyxAttribute[];\n}>;\n\nexport type OnyxIntrospection = Readonly<{\n  tables: readonly OnyxTable[];\n}>;\n\nexport type OptionalStrategy = 'non-null' | 'nullable' | 'none';\n\nexport type EmitOptions = Readonly<{\n  /** Exported schema mapping type name. */\n  schemaTypeName?: string;\n  /** How to represent Timestamp attributes. Default: 'date'. */\n  timestampMode?: 'string' | 'date' | 'number';\n  /** Prefix added to each generated model/interface name. Example: 'Onyx' -> OnyxVodItem */\n  modelNamePrefix?: string;\n  /**\n   * Where to use the TypeScript optional property modifier `?`.\n   *  - 'non-null' (default): add `?` on non-nullable fields (isNullable === false)\n   *  - 'nullable'          : add `?` on nullable fields (isNullable === true)\n   *  - 'none'              : never add `?`\n   */\n  optionalStrategy?: OptionalStrategy;\n}>;\n\nconst DEFAULTS: Required<EmitOptions> = {\n  schemaTypeName: 'OnyxSchema',\n  timestampMode: 'date',\n  modelNamePrefix: '',\n  optionalStrategy: 'non-null',\n};\n\nfunction isValidIdentifier(name: string): boolean {\n  return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name);\n}\n\nfunction toPascalCase(raw: string): string {\n  const cleaned = String(raw).replace(/[^A-Za-z0-9]+/g, ' ');\n  const pc = cleaned\n    .trim()\n    .split(/\\s+/)\n    .filter(Boolean)\n    .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\n    .join('');\n  return pc.length === 0 ? 'Table' : (/^[0-9]/.test(pc) ? `T${pc}` : pc);\n}\n\nfunction tsTypeFor(\n  attrType: OnyxAttributeType,\n  timestampMode: 'string' | 'date' | 'number',\n): string {\n  switch (attrType) {\n    case 'String':\n      return 'string';\n    case 'Int':\n      return 'number';\n    case 'Boolean':\n      return 'boolean';\n    case 'Timestamp':\n      return timestampMode === 'date'\n        ? 'Date'\n        : timestampMode === 'number'\n        ? 'number'\n        : 'string';\n    case 'EmbeddedList':\n      return 'any[]';\n    case 'EmbeddedObject':\n      return 'any';\n    default:\n      return 'any';\n  }\n}\n\nfunction propertyLine(\n  attr: OnyxAttribute,\n  timestampMode: 'string' | 'date' | 'number',\n  optionalStrategy: OptionalStrategy,\n): string {\n  const key = isValidIdentifier(attr.name) ? attr.name : JSON.stringify(attr.name);\n\n  // Decide whether to mark the property as optional (with '?')\n  const makeOptional =\n    optionalStrategy === 'non-null'\n      ? !attr.isNullable\n      : optionalStrategy === 'nullable'\n      ? attr.isNullable\n      : false;\n\n  const t = tsTypeFor(attr.type, timestampMode);\n  const nullableUnion = attr.isNullable ? ' | null' : '';\n\n  return `  ${key}${makeOptional ? '?' : ''}: ${t}${nullableUnion};`;\n}\n\nexport function emitTypes(schema: OnyxIntrospection, options?: EmitOptions): string {\n  const opts = { ...DEFAULTS, ...(options ?? {}) };\n\n  // Track used enum keys to avoid collisions\n  const usedEnumKeys = new Set<string>();\n  const makeEnumKey = (raw: string): string => {\n    const base = toPascalCase(raw);\n    let key = base;\n    let i = 2;\n    while (usedEnumKeys.has(key)) {\n      key = `${base}_${i++}`;\n    }\n    usedEnumKeys.add(key);\n    return key;\n  };\n\n  const lines: string[] = [];\n  lines.push(`// AUTO-GENERATED BY onyx-gen. DO NOT EDIT.`);\n  lines.push('');\n\n  // Per-table interfaces\n  for (const t of schema.tables) {\n    const typeName = `${opts.modelNamePrefix}${toPascalCase(t.name)}`;\n    lines.push(`export interface ${typeName} {`);\n    for (const a of t.attributes) {\n      lines.push(propertyLine(a, opts.timestampMode, opts.optionalStrategy));\n    }\n    lines.push('  [key: string]: any;');\n    lines.push('}');\n    lines.push('');\n  }\n\n  // Schema mapping\n  lines.push(`export type ${opts.schemaTypeName} = {`);\n  for (const t of schema.tables) {\n    const key = isValidIdentifier(t.name) ? t.name : JSON.stringify(t.name);\n    const modelName = `${opts.modelNamePrefix}${toPascalCase(t.name)}`;\n    lines.push(`  ${key}: ${modelName};`);\n  }\n  lines.push('};');\n  lines.push('');\n\n  // Convenience alias so consumers can always `import { Schema }`\n  if (opts.schemaTypeName !== 'Schema') {\n    lines.push(`export type Schema = ${opts.schemaTypeName};`);\n  }\n  lines.push(`export const Schema = {} as ${opts.schemaTypeName};`);\n  lines.push('');\n\n  // Tables enum (for IDE suggestions & safer table refs)\n  lines.push('export enum tables {');\n  for (const t of schema.tables) {\n    const enumKey = makeEnumKey(t.name); // safe TS identifier\n    const enumVal = JSON.stringify(t.name); // preserve original table name\n    lines.push(`  ${enumKey} = ${enumVal},`);\n  }\n  lines.push('}');\n  lines.push('');\n\n  return lines.join('\\n');\n}\n","// filename: src/errors/http-error.ts\nexport class OnyxHttpError extends Error {\n  readonly name = 'OnyxHttpError';\n  readonly status: number;\n  readonly statusText: string;\n  readonly body: unknown;\n  readonly rawBody: string;\n\n  constructor(message: string, status: number, statusText: string, body: unknown, rawBody: string) {\n    super(message);\n    this.status = status;\n    this.statusText = statusText;\n    this.body = body;\n    this.rawBody = rawBody;\n  }\n\n  toJSON(): Record<string, unknown> {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      statusText: this.statusText,\n      body: this.body,\n      rawBody: this.rawBody,\n      stack: this.stack,\n    };\n  }\n\n  [Symbol.for('nodejs.util.inspect.custom')](): Record<string, unknown> {\n    return this.toJSON();\n  }\n}","// filename: src/core/msgpack.ts\n\n/** MessagePack media type used by the Onyx entity protocol. */\nexport const MESSAGEPACK_MEDIA_TYPE = 'application/vnd.msgpack';\nexport const MESSAGEPACK_ACCEPT = `${MESSAGEPACK_MEDIA_TYPE}, application/json;q=0.9`;\n\nconst MAX_NESTING_DEPTH = 128;\nconst MAX_CONTAINER_LENGTH = 1_000_000;\nconst MAX_VALUE_COUNT = 2_000_000;\nconst MAX_STRING_BYTES = 16 * 1024 * 1024;\nconst MAX_MESSAGE_BYTES = 64 * 1024 * 1024;\nconst MIN_SIGNED_INT64 = -0x8000000000000000n;\nconst MAX_SIGNED_INT64 = 0x7fffffffffffffffn;\nconst MIN_SAFE_INTEGER_BIGINT = BigInt(Number.MIN_SAFE_INTEGER);\nconst MAX_SAFE_INTEGER_BIGINT = BigInt(Number.MAX_SAFE_INTEGER);\n\nconst utf8Encoder = new TextEncoder();\nconst utf8Decoder = new TextDecoder('utf-8', { fatal: true });\n\nfunction assertMessageSize(size: number, subject: 'value' | 'payload'): void {\n  if (size > MAX_MESSAGE_BYTES) {\n    throw new MessagePackError(`MessagePack ${subject} exceeds ${MAX_MESSAGE_BYTES} bytes`);\n  }\n}\n\nexport class MessagePackError extends Error {\n  readonly name = 'MessagePackError';\n\n  constructor(\n    message: string,\n    readonly code: 'invalid' | 'truncated' = 'invalid',\n  ) {\n    super(message);\n  }\n}\n\nclass ByteWriter {\n  private bytes = new Uint8Array(256);\n  private view = new DataView(this.bytes.buffer);\n  private offset = 0;\n\n  finish(): Uint8Array {\n    return this.bytes.slice(0, this.offset);\n  }\n\n  writeByte(value: number): void {\n    this.reserve(1);\n    this.bytes[this.offset++] = value;\n  }\n\n  writeBytes(value: Uint8Array): void {\n    this.reserve(value.byteLength);\n    this.bytes.set(value, this.offset);\n    this.offset += value.byteLength;\n  }\n\n  writeUint16(value: number): void {\n    this.reserve(2);\n    this.view.setUint16(this.offset, value);\n    this.offset += 2;\n  }\n\n  writeUint32(value: number): void {\n    this.reserve(4);\n    this.view.setUint32(this.offset, value);\n    this.offset += 4;\n  }\n\n  writeInt8(value: number): void {\n    this.reserve(1);\n    this.view.setInt8(this.offset, value);\n    this.offset += 1;\n  }\n\n  writeInt16(value: number): void {\n    this.reserve(2);\n    this.view.setInt16(this.offset, value);\n    this.offset += 2;\n  }\n\n  writeInt32(value: number): void {\n    this.reserve(4);\n    this.view.setInt32(this.offset, value);\n    this.offset += 4;\n  }\n\n  writeUint64(value: bigint): void {\n    this.reserve(8);\n    this.view.setBigUint64(this.offset, value);\n    this.offset += 8;\n  }\n\n  writeInt64(value: bigint): void {\n    this.reserve(8);\n    this.view.setBigInt64(this.offset, value);\n    this.offset += 8;\n  }\n\n  writeFloat64(value: number): void {\n    this.reserve(8);\n    this.view.setFloat64(this.offset, value);\n    this.offset += 8;\n  }\n\n  private reserve(additional: number): void {\n    const required = this.offset + additional;\n    assertMessageSize(required, 'value');\n    if (required <= this.bytes.byteLength) return;\n\n    let capacity = this.bytes.byteLength;\n    while (capacity < required) {\n      capacity = Math.min(MAX_MESSAGE_BYTES, capacity * 2);\n    }\n    const next = new Uint8Array(capacity);\n    next.set(this.bytes);\n    this.bytes = next;\n    this.view = new DataView(next.buffer);\n  }\n}\n\nclass Encoder {\n  private readonly writer = new ByteWriter();\n  private readonly activeContainers = new WeakSet<object>();\n  private valueCount = 0;\n\n  encode(value: unknown): Uint8Array {\n    this.writeValue(value, 0);\n    return this.writer.finish();\n  }\n\n  private countValue(): void {\n    this.valueCount += 1;\n    if (this.valueCount > MAX_VALUE_COUNT) {\n      throw new MessagePackError(`MessagePack value exceeds ${MAX_VALUE_COUNT} items`);\n    }\n  }\n\n  private writeValue(value: unknown, depth: number): void {\n    if (depth > MAX_NESTING_DEPTH) {\n      throw new MessagePackError(`MessagePack nesting exceeds ${MAX_NESTING_DEPTH} levels`);\n    }\n    this.countValue();\n    if (value === null) {\n      this.writer.writeByte(0xc0);\n      return;\n    }\n    if (typeof value === 'boolean') {\n      this.writer.writeByte(value ? 0xc3 : 0xc2);\n      return;\n    }\n    if (typeof value === 'number') {\n      this.writeNumber(value);\n      return;\n    }\n    if (typeof value === 'bigint') {\n      this.writeBigInt(value);\n      return;\n    }\n    if (typeof value === 'string') {\n      this.writeString(value);\n      return;\n    }\n    if (Array.isArray(value)) {\n      this.writeArray(value, depth);\n      return;\n    }\n    if (typeof value === 'object') {\n      this.writeMap(value as Record<string, unknown>, depth);\n      return;\n    }\n    throw new MessagePackError(`Unsupported MessagePack value: ${typeof value}`);\n  }\n\n  private writeNumber(value: number): void {\n    if (!Number.isFinite(value)) {\n      this.writer.writeByte(0xc0);\n      return;\n    }\n    if (!Number.isInteger(value)) {\n      this.writer.writeByte(0xcb);\n      this.writer.writeFloat64(value);\n      return;\n    }\n    if (!Number.isSafeInteger(value)) {\n      throw new MessagePackError('MessagePack integers must be JavaScript safe integers');\n    }\n    if (value >= 0) {\n      if (value <= 0x7f) {\n        this.writer.writeByte(value);\n      } else if (value <= 0xff) {\n        this.writer.writeByte(0xcc);\n        this.writer.writeByte(value);\n      } else if (value <= 0xffff) {\n        this.writer.writeByte(0xcd);\n        this.writer.writeUint16(value);\n      } else if (value <= 0xffffffff) {\n        this.writer.writeByte(0xce);\n        this.writer.writeUint32(value);\n      } else {\n        this.writer.writeByte(0xcf);\n        this.writer.writeUint64(BigInt(value));\n      }\n      return;\n    }\n    if (value >= -32) {\n      this.writer.writeByte(0x100 + value);\n    } else if (value >= -0x80) {\n      this.writer.writeByte(0xd0);\n      this.writer.writeInt8(value);\n    } else if (value >= -0x8000) {\n      this.writer.writeByte(0xd1);\n      this.writer.writeInt16(value);\n    } else if (value >= -0x80000000) {\n      this.writer.writeByte(0xd2);\n      this.writer.writeInt32(value);\n    } else {\n      this.writer.writeByte(0xd3);\n      this.writer.writeInt64(BigInt(value));\n    }\n  }\n\n  private writeBigInt(value: bigint): void {\n    if (value < MIN_SIGNED_INT64 || value > MAX_SIGNED_INT64) {\n      throw new MessagePackError('MessagePack integers must fit in a signed 64-bit value');\n    }\n    if (value >= MIN_SAFE_INTEGER_BIGINT && value <= MAX_SAFE_INTEGER_BIGINT) {\n      this.writeNumber(Number(value));\n      return;\n    }\n    if (value >= 0n) {\n      this.writer.writeByte(0xcf);\n      this.writer.writeUint64(value);\n    } else {\n      this.writer.writeByte(0xd3);\n      this.writer.writeInt64(value);\n    }\n  }\n\n  private writeString(value: string): void {\n    const bytes = utf8Encoder.encode(value);\n    const length = bytes.byteLength;\n    if (length > MAX_STRING_BYTES) {\n      throw new MessagePackError(`MessagePack string exceeds ${MAX_STRING_BYTES} bytes`);\n    }\n    if (length <= 31) {\n      this.writer.writeByte(0xa0 | length);\n    } else if (length <= 0xff) {\n      this.writer.writeByte(0xd9);\n      this.writer.writeByte(length);\n    } else if (length <= 0xffff) {\n      this.writer.writeByte(0xda);\n      this.writer.writeUint16(length);\n    } else {\n      this.writer.writeByte(0xdb);\n      this.writer.writeUint32(length);\n    }\n    this.writer.writeBytes(bytes);\n  }\n\n  private writeArray(value: unknown[], depth: number): void {\n    this.assertContainer(value, value.length);\n    this.writeArrayHeader(value.length);\n    this.activeContainers.add(value);\n    try {\n      for (const item of value) {\n        if (\n          typeof item === 'undefined' ||\n          typeof item === 'function' ||\n          typeof item === 'symbol'\n        ) {\n          this.writeValue(null, depth + 1);\n        } else {\n          this.writeValue(item, depth + 1);\n        }\n      }\n    } finally {\n      this.activeContainers.delete(value);\n    }\n  }\n\n  private writeMap(value: Record<string, unknown>, depth: number): void {\n    const prototype = Object.getPrototypeOf(value) as object | null;\n    if (prototype !== Object.prototype && prototype !== null) {\n      throw new MessagePackError('MessagePack maps must be plain objects');\n    }\n    const entries = Object.entries(value).filter(([, item]) => {\n      const type = typeof item;\n      return type !== 'undefined' && type !== 'function' && type !== 'symbol';\n    });\n    this.assertContainer(value, entries.length);\n    this.writeMapHeader(entries.length);\n    this.activeContainers.add(value);\n    try {\n      for (const [key, item] of entries) {\n        this.countValue();\n        this.writeString(key);\n        this.writeValue(item, depth + 1);\n      }\n    } finally {\n      this.activeContainers.delete(value);\n    }\n  }\n\n  private assertContainer(value: object, length: number): void {\n    if (length > MAX_CONTAINER_LENGTH) {\n      throw new MessagePackError(`MessagePack container exceeds ${MAX_CONTAINER_LENGTH} items`);\n    }\n    if (this.activeContainers.has(value)) {\n      throw new MessagePackError('MessagePack values cannot contain circular references');\n    }\n  }\n\n  private writeArrayHeader(length: number): void {\n    if (length <= 15) {\n      this.writer.writeByte(0x90 | length);\n    } else if (length <= 0xffff) {\n      this.writer.writeByte(0xdc);\n      this.writer.writeUint16(length);\n    } else {\n      this.writer.writeByte(0xdd);\n      this.writer.writeUint32(length);\n    }\n  }\n\n  private writeMapHeader(length: number): void {\n    if (length <= 15) {\n      this.writer.writeByte(0x80 | length);\n    } else if (length <= 0xffff) {\n      this.writer.writeByte(0xde);\n      this.writer.writeUint16(length);\n    } else {\n      this.writer.writeByte(0xdf);\n      this.writer.writeUint32(length);\n    }\n  }\n}\n\nclass Decoder {\n  private readonly view: DataView;\n  private offset = 0;\n  private valueCount = 0;\n\n  constructor(\n    private readonly bytes: Uint8Array,\n    enforceTotalLength = true,\n  ) {\n    if (enforceTotalLength) assertMessageSize(bytes.byteLength, 'payload');\n    this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n  }\n\n  decode(): unknown {\n    if (this.bytes.byteLength === 0) throw new MessagePackError('MessagePack payload is empty');\n    const { value: result } = this.decodePrefix();\n    if (this.offset !== this.bytes.byteLength) {\n      throw new MessagePackError('MessagePack payload contains trailing data');\n    }\n    return result;\n  }\n\n  decodePrefix(): { value: unknown; bytesRead: number } {\n    const value = this.readValue(0);\n    return { value, bytesRead: this.offset };\n  }\n\n  private readValue(depth: number): unknown {\n    if (depth > MAX_NESTING_DEPTH) {\n      throw new MessagePackError(`MessagePack nesting exceeds ${MAX_NESTING_DEPTH} levels`);\n    }\n    this.valueCount += 1;\n    if (this.valueCount > MAX_VALUE_COUNT) {\n      throw new MessagePackError(`MessagePack payload exceeds ${MAX_VALUE_COUNT} items`);\n    }\n    const prefix = this.readByte();\n    if (prefix <= 0x7f) return prefix;\n    if (prefix >= 0xe0) return prefix - 0x100;\n    if ((prefix & 0xe0) === 0xa0) return this.readString(prefix & 0x1f);\n    if ((prefix & 0xf0) === 0x90) return this.readArray(prefix & 0x0f, depth);\n    if ((prefix & 0xf0) === 0x80) return this.readMap(prefix & 0x0f, depth);\n\n    switch (prefix) {\n      case 0xc0:\n        return null;\n      case 0xc2:\n        return false;\n      case 0xc3:\n        return true;\n      case 0xca:\n        return this.assertFinite(this.readFloat32());\n      case 0xcb:\n        return this.assertFinite(this.readFloat64());\n      case 0xcc:\n        return this.readByte();\n      case 0xcd:\n        return this.readUint16();\n      case 0xce:\n        return this.readUint32();\n      case 0xcf:\n        return this.decodeInteger(this.readUint64(), true);\n      case 0xd0:\n        return this.readInt8();\n      case 0xd1:\n        return this.readInt16();\n      case 0xd2:\n        return this.readInt32();\n      case 0xd3:\n        return this.decodeInteger(this.readInt64(), false);\n      case 0xd9:\n        return this.readString(this.readByte());\n      case 0xda:\n        return this.readString(this.readUint16());\n      case 0xdb:\n        return this.readString(this.readUint32());\n      case 0xdc:\n        return this.readArray(this.readUint16(), depth);\n      case 0xdd:\n        return this.readArray(this.readUint32(), depth);\n      case 0xde:\n        return this.readMap(this.readUint16(), depth);\n      case 0xdf:\n        return this.readMap(this.readUint32(), depth);\n      case 0xc1:\n        throw new MessagePackError('MessagePack payload contains the reserved 0xc1 marker');\n      case 0xc4:\n      case 0xc5:\n      case 0xc6:\n        throw new MessagePackError('MessagePack binary values are not supported');\n      case 0xc7:\n      case 0xc8:\n      case 0xc9:\n      case 0xd4:\n      case 0xd5:\n      case 0xd6:\n      case 0xd7:\n      case 0xd8:\n        throw new MessagePackError('MessagePack extension values are not supported');\n      // Every possible byte marker is handled above.\n      /* istanbul ignore next */\n      /* v8 ignore next 2 */\n      default:\n        throw new MessagePackError(`Unsupported MessagePack marker 0x${prefix.toString(16)}`);\n    }\n  }\n\n  private readArray(length: number, depth: number): unknown[] {\n    this.assertContainer(length);\n    const result: unknown[] = [];\n    for (let index = 0; index < length; index += 1) {\n      result.push(this.readValue(depth + 1));\n    }\n    return result;\n  }\n\n  private readMap(length: number, depth: number): Record<string, unknown> {\n    this.assertContainer(length);\n    const result: Record<string, unknown> = {};\n    const keys = new Set<string>();\n    for (let index = 0; index < length; index += 1) {\n      const key = this.readValue(depth + 1);\n      if (typeof key !== 'string') {\n        throw new MessagePackError('MessagePack map keys must be strings');\n      }\n      if (keys.has(key)) {\n        throw new MessagePackError(`MessagePack map contains duplicate key: ${key}`);\n      }\n      keys.add(key);\n      const value = this.readValue(depth + 1);\n      if (key === '__proto__') {\n        Object.defineProperty(result, key, {\n          value,\n          enumerable: true,\n          configurable: true,\n          writable: true,\n        });\n      } else {\n        result[key] = value;\n      }\n    }\n    return result;\n  }\n\n  private assertContainer(length: number): void {\n    if (length > MAX_CONTAINER_LENGTH) {\n      throw new MessagePackError(`MessagePack container exceeds ${MAX_CONTAINER_LENGTH} items`);\n    }\n  }\n\n  private readString(length: number): string {\n    if (length > MAX_STRING_BYTES) {\n      throw new MessagePackError(`MessagePack string exceeds ${MAX_STRING_BYTES} bytes`);\n    }\n    const bytes = this.readBytes(length);\n    try {\n      return utf8Decoder.decode(bytes);\n    } catch {\n      throw new MessagePackError('MessagePack string contains invalid UTF-8');\n    }\n  }\n\n  private assertFinite(value: number): number {\n    if (!Number.isFinite(value)) {\n      throw new MessagePackError('MessagePack numbers must be finite');\n    }\n    return value;\n  }\n\n  private decodeInteger(value: bigint, unsigned: boolean): number | bigint {\n    if (unsigned && value > MAX_SIGNED_INT64) {\n      throw new MessagePackError('MessagePack integers must fit in a signed 64-bit value');\n    }\n    return value >= MIN_SAFE_INTEGER_BIGINT && value <= MAX_SAFE_INTEGER_BIGINT\n      ? Number(value)\n      : value;\n  }\n\n  private readByte(): number {\n    this.ensureAvailable(1);\n    return this.bytes[this.offset++];\n  }\n\n  private readBytes(length: number): Uint8Array {\n    this.ensureAvailable(length);\n    const value = this.bytes.subarray(this.offset, this.offset + length);\n    this.offset += length;\n    return value;\n  }\n\n  private readUint16(): number {\n    this.ensureAvailable(2);\n    const value = this.view.getUint16(this.offset);\n    this.offset += 2;\n    return value;\n  }\n\n  private readUint32(): number {\n    this.ensureAvailable(4);\n    const value = this.view.getUint32(this.offset);\n    this.offset += 4;\n    return value;\n  }\n\n  private readUint64(): bigint {\n    this.ensureAvailable(8);\n    const value = this.view.getBigUint64(this.offset);\n    this.offset += 8;\n    return value;\n  }\n\n  private readInt8(): number {\n    this.ensureAvailable(1);\n    const value = this.view.getInt8(this.offset);\n    this.offset += 1;\n    return value;\n  }\n\n  private readInt16(): number {\n    this.ensureAvailable(2);\n    const value = this.view.getInt16(this.offset);\n    this.offset += 2;\n    return value;\n  }\n\n  private readInt32(): number {\n    this.ensureAvailable(4);\n    const value = this.view.getInt32(this.offset);\n    this.offset += 4;\n    return value;\n  }\n\n  private readInt64(): bigint {\n    this.ensureAvailable(8);\n    const value = this.view.getBigInt64(this.offset);\n    this.offset += 8;\n    return value;\n  }\n\n  private readFloat32(): number {\n    this.ensureAvailable(4);\n    const value = this.view.getFloat32(this.offset);\n    this.offset += 4;\n    return value;\n  }\n\n  private readFloat64(): number {\n    this.ensureAvailable(8);\n    const value = this.view.getFloat64(this.offset);\n    this.offset += 8;\n    return value;\n  }\n\n  private ensureAvailable(length: number): void {\n    assertMessageSize(this.offset + length, 'value');\n    if (this.offset + length > this.bytes.byteLength) {\n      throw new MessagePackError('MessagePack payload is truncated', 'truncated');\n    }\n  }\n}\n\n/** Encodes one complete JSON-compatible value as MessagePack. */\nexport function encodeMessagePack(value: unknown): Uint8Array {\n  return new Encoder().encode(value);\n}\n\n/** Decodes one complete MessagePack value and rejects trailing bytes. */\nexport function decodeMessagePack(bytes: Uint8Array): unknown {\n  return new Decoder(bytes).decode();\n}\n\n/** Decodes the first value in a buffer for concatenated MessagePack streams. */\nexport function decodeMessagePackPrefix(\n  bytes: Uint8Array,\n): { value: unknown; bytesRead: number } {\n  return new Decoder(bytes, false).decodePrefix();\n}\n\n/** Returns true only for the negotiated Onyx MessagePack media type. */\nexport function isMessagePackContentType(contentType: string): boolean {\n  return contentType.split(';', 1)[0].trim().toLowerCase() === MESSAGEPACK_MEDIA_TYPE;\n}\n","// filename: src/core/http.ts\nimport { OnyxHttpError } from '../errors/http-error';\nimport { OnyxConfigError } from '../errors/config-error';\nimport type { FetchImpl } from '../types/common';\nimport type { WireFormat } from '../types/public';\nimport {\n  decodeMessagePack,\n  encodeMessagePack,\n  isMessagePackContentType,\n  MESSAGEPACK_ACCEPT,\n  MESSAGEPACK_MEDIA_TYPE,\n} from './msgpack';\n\nexport function parseJsonAllowNaN(txt: string): unknown {\n  try {\n    return JSON.parse(txt);\n  } catch {\n    const fixed = txt.replace(/(:\\s*)(NaN|Infinity|-Infinity)(\\s*[,}])/g, '$1null$3');\n    return JSON.parse(fixed);\n  }\n}\n\nfunction stringifyBigIntSafe(value: unknown): string | undefined {\n  return JSON.stringify(value, (_key, item: unknown) =>\n    typeof item === 'bigint' ? `${item}n` : item,\n  );\n}\n\nexport interface HttpClientOptions {\n  baseUrl: string;\n  apiKey: string;\n  apiSecret: string;\n  fetchImpl?: FetchImpl;\n  defaultHeaders?: Record<string, string>;\n  requestLoggingEnabled?: boolean;\n  responseLoggingEnabled?: boolean;\n  retryEnabled?: boolean;\n  maxRetries?: number;\n  retryInitialDelayMs?: number;\n  wireFormat?: WireFormat;\n}\n\nexport class HttpClient {\n  private readonly baseUrl: string;\n  private readonly apiKey: string;\n  private readonly apiSecret: string;\n  private readonly fetchImpl: FetchImpl;\n  private readonly defaults: Record<string, string>;\n  private readonly requestLoggingEnabled: boolean;\n  private readonly responseLoggingEnabled: boolean;\n  private readonly retryEnabled: boolean;\n  private readonly maxRetries: number;\n  private readonly retryInitialDelayMs: number;\n  private readonly wireFormat: WireFormat;\n  private readonly shouldRetry: (method: string, path: string) => boolean;\n\n  private static parseRetryAfter(header: string | null): number | null {\n    if (!header) return null;\n    const trimmed = header.trim();\n    if (trimmed === '') return null;\n    const seconds = Number(trimmed);\n    if (Number.isFinite(seconds)) {\n      return Math.max(0, seconds * 1000);\n    }\n    const dateMs = Date.parse(trimmed);\n    if (!Number.isNaN(dateMs)) {\n      const now = Date.now();\n      return Math.max(0, dateMs - now);\n    }\n    return null;\n  }\n\n  constructor(opts: HttpClientOptions) {\n    if (!opts.baseUrl || opts.baseUrl.trim() === '') {\n      throw new OnyxConfigError('baseUrl is required');\n    }\n    try {\n      // ensure baseUrl has protocol; URL constructor will throw otherwise\n      new URL(opts.baseUrl);\n    } catch {\n      throw new OnyxConfigError('baseUrl must include protocol, e.g. https://');\n    }\n    this.baseUrl = opts.baseUrl.replace(/\\/+$/, '');\n    this.apiKey = opts.apiKey;\n    this.apiSecret = opts.apiSecret;\n    const gfetch = (globalThis as { fetch?: FetchImpl }).fetch;\n    if (opts.fetchImpl) {\n      this.fetchImpl = opts.fetchImpl;\n    } else if (typeof gfetch === 'function') {\n      this.fetchImpl = (url, init) => gfetch(url, init);\n    } else {\n      throw new Error('global fetch is not available; provide OnyxConfig.fetch');\n    }\n    this.defaults = Object.assign({}, opts.defaultHeaders);\n    const envDebug =\n      (globalThis as { process?: { env?: Record<string, string | undefined> } }).process\n        ?.env?.ONYX_DEBUG === 'true';\n    this.requestLoggingEnabled = !!opts.requestLoggingEnabled || envDebug;\n    this.responseLoggingEnabled = !!opts.responseLoggingEnabled || envDebug;\n    this.retryEnabled = opts.retryEnabled ?? true;\n    this.maxRetries = Math.max(0, opts.maxRetries ?? 2);\n    this.retryInitialDelayMs = Math.max(0, opts.retryInitialDelayMs ?? 100);\n    this.wireFormat = opts.wireFormat ?? 'msgpack';\n    if (this.wireFormat !== 'json' && this.wireFormat !== 'msgpack') {\n      throw new OnyxConfigError('wireFormat must be either json or msgpack');\n    }\n    this.shouldRetry = (method: string, path: string) =>\n      method === 'GET' || path.startsWith('/query/');\n  }\n\n  headers(extra?: Record<string, string>): Record<string, string> {\n    const extras = { ...(extra ?? {}) };\n    delete extras['x-onyx-key'];\n    delete extras['x-onyx-secret'];\n    return {\n      'x-onyx-key': this.apiKey,\n      'x-onyx-secret': this.apiSecret,\n      'Accept': 'application/json',\n      'Content-Type': 'application/json',\n      ...this.defaults,\n      ...extras,\n    };\n  }\n\n  async request<T = unknown>(\n    method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n    path: string,\n    body?: unknown,\n    extraHeaders?: Record<string, string>\n  ): Promise<T> {\n    return this.requestWithWireFormat<T>(method, path, body, extraHeaders, 'json');\n  }\n\n  /** Sends a request using the configured entity wire format. */\n  async requestEntity<T = unknown>(\n    method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n    path: string,\n    body?: unknown,\n    extraHeaders?: Record<string, string>,\n  ): Promise<T> {\n    return this.requestWithWireFormat<T>(method, path, body, extraHeaders, this.wireFormat);\n  }\n\n  private async requestWithWireFormat<T>(\n    method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n    path: string,\n    body: unknown,\n    extraHeaders: Record<string, string> | undefined,\n    wireFormat: WireFormat,\n  ): Promise<T> {\n    if (!path.startsWith('/')) {\n      throw new OnyxConfigError('path must start with /');\n    }\n    const url = `${this.baseUrl}${path}`;\n    const headers = this.headers({\n      ...(method === 'DELETE' ? { Prefer: 'return=representation' } : {}),\n      ...(extraHeaders ?? {}),\n      ...(wireFormat === 'msgpack'\n        ? { Accept: MESSAGEPACK_ACCEPT, 'Content-Type': MESSAGEPACK_MEDIA_TYPE }\n        : {}),\n    });\n    const hasExplicitContentType =\n      (extraHeaders && 'Content-Type' in extraHeaders) ||\n      Object.prototype.hasOwnProperty.call(this.defaults, 'Content-Type');\n    if (body == null && (wireFormat === 'msgpack' || !hasExplicitContentType)) {\n      delete headers['Content-Type'];\n    }\n    if (this.requestLoggingEnabled) {\n      console.log(`${method} ${url}`);\n      if (body != null) {\n        const logBody =\n          typeof body === 'string'\n            ? body\n            : wireFormat === 'msgpack'\n              ? stringifyBigIntSafe(body)\n              : JSON.stringify(body);\n        console.log(logBody);\n      }\n      const headerLog = { ...headers, 'x-onyx-secret': '[REDACTED]' };\n      console.log('Headers:', headerLog);\n    }\n    const payload =\n      body == null\n        ? undefined\n        : wireFormat === 'msgpack'\n          ? encodeMessagePack(body)\n          : typeof body === 'string'\n            ? body\n            : JSON.stringify(body);\n    const init = {\n      method,\n      headers,\n      body: payload,\n    };\n\n    // Retries are limited to GET requests to avoid replaying mutations.\n    const canRetry = this.retryEnabled && this.shouldRetry(method, path);\n    const maxAttempts = canRetry ? this.maxRetries + 1 : 1;\n    for (let attempt = 0; attempt < maxAttempts; attempt++) {\n      try {\n        const res = await this.fetchImpl(url, init);\n        const contentType = res.headers.get('Content-Type') || '';\n        let raw: string;\n        let data: unknown;\n        if (isMessagePackContentType(contentType)) {\n          if (typeof res.arrayBuffer !== 'function') {\n            throw new Error('MessagePack response requires FetchResponse.arrayBuffer()');\n          }\n          const bytes = new Uint8Array(await res.arrayBuffer());\n          raw = bytes.byteLength === 0 ? '' : `<MessagePack ${bytes.byteLength} bytes>`;\n          data = bytes.byteLength === 0 ? '' : decodeMessagePack(bytes);\n        } else {\n          raw = await res.text();\n          const isJson =\n            raw.trim().length > 0 &&\n            (contentType.includes('application/json') || /^[\\[{]/.test(raw.trim()));\n          data = isJson ? parseJsonAllowNaN(raw) : raw;\n        }\n        if (this.responseLoggingEnabled) {\n          const statusLine = `${res.status} ${res.statusText}`.trim();\n          console.log(statusLine);\n          const isMessagePack = isMessagePackContentType(contentType);\n          if (raw.trim().length > 0) {\n            if (isMessagePack) {\n              console.log(stringifyBigIntSafe(data));\n            } else {\n              console.log(raw);\n            }\n          }\n        }\n        if (!res.ok) {\n          const msg =\n            typeof data === 'object' &&\n            data !== null &&\n            'error' in data &&\n            typeof (data as { error?: { message?: unknown } }).error?.message === 'string'\n              ? String((data as { error: { message: unknown } }).error.message)\n              : `${res.status} ${res.statusText}`;\n          if (canRetry && res.status >= 500 && attempt + 1 < maxAttempts) {\n            const serverRetry = HttpClient.parseRetryAfter(res.headers.get('retry-after'));\n            const backoff = this.retryInitialDelayMs * 2 ** attempt;\n            const delay = serverRetry ?? backoff;\n            await new Promise((r) => setTimeout(r, delay));\n            continue;\n          }\n          throw new OnyxHttpError(msg, res.status, res.statusText, data, raw);\n        }\n        return data as T;\n      } catch (err) {\n        const retryable =\n          canRetry && (!(err instanceof OnyxHttpError) || err.status >= 500);\n        if (attempt + 1 < maxAttempts && retryable) {\n          const delay = this.retryInitialDelayMs * 2 ** attempt;\n          await new Promise((r) => setTimeout(r, delay));\n          continue;\n        }\n        throw err;\n      }\n    }\n    // unreachable but satisfies TypeScript\n    throw new Error('Request failed after retries');\n  }\n}\n","// filename: src/core/stream.ts\nimport type { FetchImpl, StreamAction } from '../types/common';\nimport { OnyxHttpError } from '../errors/http-error';\nimport { parseJsonAllowNaN } from './http';\nimport {\n  decodeMessagePack,\n  decodeMessagePackPrefix,\n  isMessagePackContentType,\n  MessagePackError,\n} from './msgpack';\n\nconst debug = (...args: unknown[]): void => {\n  if ((globalThis as { process?: { env?: Record<string, string | undefined> } }).process?.env?.ONYX_STREAM_DEBUG == \"true\")\n    console.log('[onyx-stream]', ...args);\n};\n\nexport interface StreamHandlers<T = unknown> {\n  onItemAdded?: (entity: T) => void;\n  onItemUpdated?: (entity: T) => void;\n  onItemDeleted?: (entity: T) => void;\n  onItem?: (entity: T | null, action: StreamAction) => void;\n}\n\ninterface StreamReader {\n  cancel(): void;\n  read(): Promise<{ done: boolean; value?: Uint8Array }>;\n}\n\ninterface StreamBody {\n  getReader(): StreamReader;\n}\n\nfunction dispatchStreamValue<T>(obj: unknown, handlers: StreamHandlers<T>): void {\n  const event = obj as {\n    action?: string;\n    event?: string;\n    type?: string;\n    eventType?: string;\n    changeType?: string;\n    entity?: T | null;\n  };\n  const action = (\n    event.action ?? event.event ?? event.type ?? event.eventType ?? event.changeType\n  )?.toUpperCase();\n  const entity = event.entity;\n  if (\n    action === 'CREATE' ||\n    action === 'CREATED' ||\n    action === 'ADDED' ||\n    action === 'ADD' ||\n    action === 'INSERT' ||\n    action === 'INSERTED'\n  ) {\n    handlers.onItemAdded?.(entity as T);\n  } else if (action === 'UPDATE' || action === 'UPDATED') {\n    handlers.onItemUpdated?.(entity as T);\n  } else if (\n    action === 'DELETE' ||\n    action === 'DELETED' ||\n    action === 'REMOVE' ||\n    action === 'REMOVED'\n  ) {\n    handlers.onItemDeleted?.(entity as T);\n  }\n  const canonical =\n    action === 'ADDED' ||\n    action === 'ADD' ||\n    action === 'CREATE' ||\n    action === 'CREATED' ||\n    action === 'INSERT' ||\n    action === 'INSERTED'\n      ? 'CREATE'\n      : action === 'UPDATED' || action === 'UPDATE'\n        ? 'UPDATE'\n        : action === 'DELETED' ||\n            action === 'DELETE' ||\n            action === 'REMOVE' ||\n            action === 'REMOVED'\n          ? 'DELETE'\n          : action;\n  if (canonical && canonical !== 'KEEP_ALIVE') {\n    handlers.onItem?.(entity ?? null, canonical as StreamAction);\n  }\n  debug('dispatch', canonical, entity);\n}\n\nfunction processJsonLine<T>(line: string, handlers: StreamHandlers<T>): void {\n  const trimmed = line.trim();\n  debug('line', trimmed);\n  if (!trimmed || trimmed.startsWith(':')) return;\n  const jsonLine = trimmed.startsWith('data:') ? trimmed.slice(5).trim() : trimmed;\n  let value: unknown;\n  try {\n    value = parseJsonAllowNaN(jsonLine);\n  } catch {\n    // Ignore malformed lines and continue consuming the stream.\n    return;\n  }\n  dispatchStreamValue(value, handlers);\n}\n\nexport async function openJsonLinesStream<T = unknown>(\n  fetchImpl: FetchImpl,\n  url: string,\n  init: { method?: string; headers?: Record<string, string>; body?: string } = {},\n  handlers: StreamHandlers<T> = {},\n): Promise<{ cancel: () => void }> {\n  const decoder = new TextDecoder('utf-8');\n  let buffer = '';\n  let canceled = false;\n  let currentReader: StreamReader | null = null;\n  let retryCount = 0;\n  const maxRetries = 4;\n\n  const processLine = (line: string): void => {\n    processJsonLine(line, handlers);\n  };\n\n  const connect = async (): Promise<void> => {\n    if (canceled) return;\n    debug('connecting', url);\n    try {\n      const res = await fetchImpl(url, {\n        method: init.method ?? 'PUT',\n        headers: init.headers ?? {},\n        body: init.body,\n      });\n      debug('response', res.status, res.statusText);\n      if (!res.ok) {\n        const raw = await res.text();\n        let parsed: unknown = raw;\n        try { parsed = parseJsonAllowNaN(raw); } catch { /* ignore */ }\n        debug('non-ok', res.status);\n        throw new OnyxHttpError(`${res.status} ${res.statusText}`, res.status, res.statusText, parsed, raw);\n      }\n      const body = (res as { body?: StreamBody }).body;\n      if (!body || typeof body.getReader !== 'function') {\n        debug('no reader');\n        return;\n      }\n      currentReader = body.getReader();\n      debug('connected');\n      retryCount = 0;\n      pump();\n    } catch (err) {\n      debug('connect error', err);\n      if (canceled) return;\n      if (retryCount >= maxRetries) return;\n      const delay = Math.min(1000 * 2 ** retryCount, 30000);\n      retryCount++;\n      await new Promise((resolve) => setTimeout(resolve, delay));\n      void connect();\n    }\n  };\n\n  const pump = (): void => {\n    if (canceled || !currentReader) return;\n    currentReader\n      .read()\n      .then(({ done, value }) => {\n        if (canceled) return;\n        debug('chunk', { done, length: value?.length ?? 0 });\n        if (done) {\n          debug('done');\n          void connect();\n          return;\n        }\n        buffer += decoder.decode(value, { stream: true });\n        const lines = buffer.split('\\n');\n        buffer = lines.pop() ?? '';\n        for (const line of lines) processLine(line);\n        pump();\n      })\n      .catch((err) => {\n        debug('pump error', err);\n        if (!canceled) void connect();\n      });\n  };\n\n  await connect();\n\n  return {\n    cancel() {\n      if (canceled) return;\n      canceled = true;\n      try { currentReader?.cancel(); } catch { /* ignore */ }\n    }\n  };\n}\n\n/**\n * Opens an entity stream whose successful response is either concatenated,\n * self-delimiting MessagePack values or a JSON-lines fallback.\n */\nexport async function openMessagePackStream<T = unknown>(\n  fetchImpl: FetchImpl,\n  url: string,\n  init: { method?: string; headers?: Record<string, string>; body?: Uint8Array } = {},\n  handlers: StreamHandlers<T> = {},\n): Promise<{ cancel: () => void }> {\n  let binaryBuffer = new Uint8Array(256);\n  let binaryLength = 0;\n  let textBuffer = '';\n  let textDecoder = new TextDecoder('utf-8');\n  let binaryResponse = true;\n  let canceled = false;\n  let currentReader: StreamReader | null = null;\n  let retryCount = 0;\n  const maxRetries = 4;\n\n  const processBinaryChunk = (chunk: Uint8Array): void => {\n    const required = binaryLength + chunk.byteLength;\n    if (required > binaryBuffer.byteLength) {\n      let capacity = binaryBuffer.byteLength;\n      while (capacity < required) capacity *= 2;\n      const expanded = new Uint8Array(capacity);\n      expanded.set(binaryBuffer.subarray(0, binaryLength));\n      binaryBuffer = expanded;\n    }\n    binaryBuffer.set(chunk, binaryLength);\n    binaryLength = required;\n\n    let consumed = 0;\n    while (consumed < binaryLength) {\n      try {\n        const frame = decodeMessagePackPrefix(binaryBuffer.subarray(consumed, binaryLength));\n        consumed += frame.bytesRead;\n        // The server may send an initial nil frame to flush intermediary buffers.\n        if (frame.value !== null) dispatchStreamValue(frame.value, handlers);\n      } catch (error) {\n        if (error instanceof MessagePackError && error.code === 'truncated') break;\n        throw error;\n      }\n    }\n    if (consumed > 0) {\n      binaryBuffer.copyWithin(0, consumed, binaryLength);\n      binaryLength -= consumed;\n    }\n  };\n\n  const processTextChunk = (chunk: Uint8Array): void => {\n    textBuffer += textDecoder.decode(chunk, { stream: true });\n    const lines = textBuffer.split('\\n');\n    textBuffer = lines.pop() ?? '';\n    for (const line of lines) processJsonLine(line, handlers);\n  };\n\n  const connect = async (): Promise<void> => {\n    if (canceled) return;\n    debug('connecting', url);\n    try {\n      const res = await fetchImpl(url, {\n        method: init.method ?? 'PUT',\n        headers: init.headers ?? {},\n        body: init.body,\n      });\n      debug('response', res.status, res.statusText);\n      const contentType = res.headers.get('Content-Type') ?? '';\n      if (!res.ok) {\n        let parsed: unknown;\n        let raw: string;\n        if (isMessagePackContentType(contentType)) {\n          if (typeof res.arrayBuffer !== 'function') {\n            throw new Error('MessagePack response requires FetchResponse.arrayBuffer()');\n          }\n          const bytes = new Uint8Array(await res.arrayBuffer());\n          parsed = bytes.byteLength === 0 ? '' : decodeMessagePack(bytes);\n          raw = bytes.byteLength === 0 ? '' : `<MessagePack ${bytes.byteLength} bytes>`;\n        } else {\n          raw = await res.text();\n          parsed = raw;\n          try {\n            parsed = parseJsonAllowNaN(raw);\n          } catch {\n            // Preserve non-JSON error text.\n          }\n        }\n        debug('non-ok', res.status);\n        throw new OnyxHttpError(\n          `${res.status} ${res.statusText}`,\n          res.status,\n          res.statusText,\n          parsed,\n          raw,\n        );\n      }\n      const body = (res as { body?: StreamBody }).body;\n      if (!body || typeof body.getReader !== 'function') {\n        debug('no reader');\n        return;\n      }\n      binaryResponse = isMessagePackContentType(contentType);\n      binaryBuffer = new Uint8Array(256);\n      binaryLength = 0;\n      textBuffer = '';\n      textDecoder = new TextDecoder('utf-8');\n      currentReader = body.getReader();\n      debug('connected', binaryResponse ? 'msgpack' : 'json');\n      retryCount = 0;\n      pump();\n    } catch (error) {\n      debug('connect error', error);\n      if (canceled) return;\n      if (retryCount >= maxRetries) return;\n      const delay = Math.min(1000 * 2 ** retryCount, 30000);\n      retryCount += 1;\n      await new Promise((resolve) => setTimeout(resolve, delay));\n      void connect();\n    }\n  };\n\n  const pump = (): void => {\n    if (canceled || !currentReader) return;\n    currentReader\n      .read()\n      .then(({ done, value }) => {\n        if (canceled) return;\n        debug('chunk', { done, length: value?.length ?? 0 });\n        if (done) {\n          debug('done');\n          void connect();\n          return;\n        }\n        if (value) {\n          if (binaryResponse) processBinaryChunk(value);\n          else processTextChunk(value);\n        }\n        pump();\n      })\n      .catch((error) => {\n        debug('pump error', error);\n        if (!canceled) void connect();\n      });\n  };\n\n  await connect();\n\n  return {\n    cancel() {\n      if (canceled) return;\n      canceled = true;\n      try {\n        currentReader?.cancel();\n      } catch {\n        // Ignore cancellation failures.\n      }\n    },\n  };\n}\n","/**\n * Array-like container for paginated query results. Provides helper methods\n * to traverse and aggregate records across pages.\n *\n * @example\n * ```ts\n * const results = new QueryResults(users, nextToken, fetchNext);\n * const firstUser = results.first();\n * ```\n */\nexport type QueryResultsPromise<T> = Promise<QueryResults<T>> & {\n  [K in keyof QueryResults<T> as QueryResults<T>[K] extends (...args: any[]) => any ? K : never]:\n    QueryResults<T>[K] extends (...args: infer P) => infer R ? (...args: P) => Promise<Awaited<R>> : never;\n};\n\nexport class QueryResults<T> extends Array<T> {\n  /** Token for the next page of results or null. */\n  nextPage: string | null;\n  private readonly fetcher?: (token: string) => Promise<QueryResults<T>>;\n\n  /**\n    * @param records - Records in the current page.\n    * @param nextPage - Token representing the next page.\n    * @param fetcher - Function used to fetch the next page when needed.\n    * @example\n    * ```ts\n    * const results = new QueryResults(users, token, t => fetchMore(t));\n    * ```\n    */\n  constructor(\n    records: Iterable<T> | ArrayLike<T> | T | null | undefined,\n    nextPage: string | null,\n    fetcher?: (token: string) => Promise<QueryResults<T>>,\n  ) {\n    const items: T[] = (() => {\n      if (records == null) return [];\n      if (Array.isArray(records)) return records;\n      if (typeof (records as any)[Symbol.iterator] === 'function') {\n        return Array.from(records as Iterable<T>);\n      }\n      if (typeof (records as any).length === 'number') {\n        return Array.from(records as ArrayLike<T>);\n      }\n      return [records as T];\n    })();\n\n    super(...items);\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.nextPage = nextPage;\n    this.fetcher = fetcher;\n  }\n\n  /**\n   * Returns the first record in the result set.\n   * @throws Error if the result set is empty.\n   * @example\n   * ```ts\n   * const user = results.first();\n   * ```\n   */\n  first(): T {\n    if (this.length === 0) throw new Error('QueryResults is empty');\n    return this[0];\n  }\n\n  /**\n   * Returns the first record or `null` if the result set is empty.\n   * @example\n   * ```ts\n   * const user = results.firstOrNull();\n   * ```\n   */\n  firstOrNull(): T | null {\n    return this.length > 0 ? this[0] : null;\n  }\n\n  /**\n   * Checks whether the current page has no records.\n   * @example\n   * ```ts\n   * if (results.isEmpty()) console.log('no data');\n   * ```\n   */\n  isEmpty(): boolean {\n    return this.length === 0;\n  }\n\n  /**\n   * Number of records on the current page.\n   * @example\n   * ```ts\n   * console.log(results.size());\n   * ```\n   */\n  size(): number {\n    return this.length;\n  }\n\n  /**\n   * Iterates over each record on the current page only.\n   * @param action - Function to invoke for each record.\n   * @param thisArg - Optional `this` binding for the callback.\n   * @example\n   * ```ts\n   * results.forEachOnPage(u => console.log(u.id));\n   * ```\n   */\n  forEachOnPage(\n    action: (item: T, index: number, array: QueryResults<T>) => void,\n    thisArg?: unknown,\n  ): void {\n    super.forEach((value, index) => {\n      action.call(thisArg as any, value, index, this);\n    });\n  }\n\n  /**\n   * Iterates over every record across all pages sequentially.\n   * @param action - Function executed for each record. Returning `false`\n   *                 stops iteration early.\n   * @param thisArg - Optional `this` binding for the callback.\n   * @example\n   * ```ts\n   * await results.forEach(u => {\n   *   console.log(u.id);\n   * });\n   * ```\n   */\n  override forEach(action: (item: T, index: number, array: T[]) => void, thisArg?: unknown): Promise<void> {\n    let index = 0;\n    return this.forEachAll(async item => {\n      const result = await (action as any).call(thisArg as any, item, index, this);\n      index += 1;\n      return result as boolean | void;\n    });\n  }\n\n  /**\n   * Iterates over every record across all pages sequentially.\n   * @param action - Function executed for each record. Returning `false`\n   *                 stops iteration early.\n   * @example\n   * ```ts\n   * await results.forEachAll(u => {\n   *   if (u.disabled) return false;\n   * });\n   * ```\n   */\n  async forEachAll(action: (item: T) => boolean | void | Promise<boolean | void>): Promise<void> {\n    await this.forEachPage(async records => {\n      for (const r of records) {\n        const res = await action(r);\n        if (res === false) return false;\n      }\n      return true;\n    });\n  }\n\n  /**\n   * Iterates page by page across the result set.\n   * @param action - Function invoked with each page of records. Returning\n   *                 `false` stops iteration.\n   * @example\n   * ```ts\n   * await results.forEachPage(page => {\n   *   console.log(page.length);\n   * });\n   * ```\n   */\n  async forEachPage(action: (records: T[]) => boolean | void | Promise<boolean | void>): Promise<void> {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    let page: QueryResults<T> | null = this;\n    while (page) {\n      const cont = await action(Array.from(page));\n      if (cont === false) return;\n      if (page.nextPage && page.fetcher) {\n        page = await page.fetcher(page.nextPage);\n      } else {\n        page = null;\n      }\n    }\n  }\n\n  /**\n   * Collects all records from every page into a single array.\n   * @returns All records.\n   * @example\n   * ```ts\n   * const allUsers = await results.getAllRecords();\n   * ```\n   */\n  async getAllRecords(): Promise<T[]> {\n    const all: T[] = [];\n    await this.forEachPage(records => {\n      all.push(...records);\n    });\n    return all;\n  }\n\n  /**\n   * Filters all records using the provided predicate.\n   * @param predicate - Function used to test each record.\n   * @example\n   * ```ts\n   * const enabled = await results.filterAll(u => u.enabled);\n   * ```\n   */\n  async filterAll(predicate: (record: T) => boolean): Promise<T[]> {\n    const all = await this.getAllRecords();\n    return all.filter(predicate);\n  }\n\n  /**\n   * Maps all records using the provided transform.\n   * @param transform - Mapping function.\n   * @example\n   * ```ts\n   * const names = await results.mapAll(u => u.name);\n   * ```\n   */\n  async mapAll<R>(transform: (record: T) => R): Promise<R[]> {\n    const all = await this.getAllRecords();\n    return all.map(transform);\n  }\n\n  /**\n   * Extracts values for a field across all records.\n   * @param field - Name of the field to pluck.\n   * @example\n   * ```ts\n   * const ids = await results.values('id');\n   * ```\n   */\n  // @ts-expect-error overriding Array#values\n  async values<K extends keyof T>(field: K): Promise<Array<T[K]>> {\n    const all = await this.getAllRecords();\n    return all.map(r => r[field]);\n  }\n\n  /**\n   * Maximum value produced by the selector across all records.\n   * @param selector - Function extracting a numeric value.\n   * @example\n   * ```ts\n   * const maxAge = await results.maxOfDouble(u => u.age);\n   * ```\n   */\n  async maxOfDouble(selector: (record: T) => number): Promise<number> {\n    const all = await this.getAllRecords();\n    return all.reduce((max, r) => Math.max(max, selector(r)), -Infinity);\n  }\n\n  /**\n   * Minimum value produced by the selector across all records.\n   * @param selector - Function extracting a numeric value.\n   * @example\n   * ```ts\n   * const minAge = await results.minOfDouble(u => u.age);\n   * ```\n   */\n  async minOfDouble(selector: (record: T) => number): Promise<number> {\n    const all = await this.getAllRecords();\n    return all.reduce((min, r) => Math.min(min, selector(r)), Infinity);\n  }\n\n  /**\n   * Sum of values produced by the selector across all records.\n   * @param selector - Function extracting a numeric value.\n   * @example\n   * ```ts\n   * const total = await results.sumOfDouble(u => u.score);\n   * ```\n   */\n  async sumOfDouble(selector: (record: T) => number): Promise<number> {\n    const all = await this.getAllRecords();\n    return all.reduce((sum, r) => sum + selector(r), 0);\n  }\n\n  /**\n   * Maximum float value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async maxOfFloat(selector: (record: T) => number): Promise<number> {\n    return this.maxOfDouble(selector);\n  }\n  /**\n   * Minimum float value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async minOfFloat(selector: (record: T) => number): Promise<number> {\n    return this.minOfDouble(selector);\n  }\n  /**\n   * Sum of float values from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async sumOfFloat(selector: (record: T) => number): Promise<number> {\n    return this.sumOfDouble(selector);\n  }\n  /**\n   * Maximum integer value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async maxOfInt(selector: (record: T) => number): Promise<number> {\n    return this.maxOfDouble(selector);\n  }\n  /**\n   * Minimum integer value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async minOfInt(selector: (record: T) => number): Promise<number> {\n    return this.minOfDouble(selector);\n  }\n  /**\n   * Sum of integer values from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async sumOfInt(selector: (record: T) => number): Promise<number> {\n    return this.sumOfDouble(selector);\n  }\n  /**\n   * Maximum long value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async maxOfLong(selector: (record: T) => number): Promise<number> {\n    return this.maxOfDouble(selector);\n  }\n  /**\n   * Minimum long value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async minOfLong(selector: (record: T) => number): Promise<number> {\n    return this.minOfDouble(selector);\n  }\n  /**\n   * Sum of long values from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async sumOfLong(selector: (record: T) => number): Promise<number> {\n    return this.sumOfDouble(selector);\n  }\n\n  /**\n   * Sum of bigint values from the selector.\n   * @param selector - Function extracting a bigint value.\n   * @example\n   * ```ts\n   * const total = await results.sumOfBigInt(u => u.balance);\n   * ```\n   */\n  async sumOfBigInt(selector: (record: T) => bigint): Promise<bigint> {\n    const all = await this.getAllRecords();\n    return all.reduce((sum, r) => sum + selector(r), 0n);\n  }\n\n  /**\n   * Executes an action for each page in parallel.\n   * @param action - Function executed for each record concurrently.\n   * @example\n   * ```ts\n   * await results.forEachPageParallel(async u => sendEmail(u));\n   * ```\n   */\n  async forEachPageParallel(action: (item: T) => void | Promise<void>): Promise<void> {\n    await this.forEachPage(records => Promise.all(records.map(action)).then(() => true));\n  }\n}\n\nexport default QueryResults;\n","import type { QueryCondition } from '../types/protocol';\n\ntype QueryBuilderLike = { toSerializableQueryObject: () => unknown };\n\nfunction isQueryBuilderLike(value: unknown): value is QueryBuilderLike {\n  return !!value && typeof (value as QueryBuilderLike).toSerializableQueryObject === 'function';\n}\n\nfunction normalizeCriteriaValue(value: unknown): { value: unknown; changed: boolean } {\n  if (Array.isArray(value)) {\n    let changed = false;\n    const normalized = value.map((item) => {\n      const result = normalizeCriteriaValue(item);\n      if (result.changed) changed = true;\n      return result.value;\n    });\n    if (!changed) {\n      for (let i = 0; i < normalized.length; i += 1) {\n        if (normalized[i] !== value[i]) {\n          changed = true;\n          break;\n        }\n      }\n    }\n    return { value: changed ? normalized : value, changed };\n  }\n  if (isQueryBuilderLike(value)) {\n    return { value: value.toSerializableQueryObject(), changed: true };\n  }\n  return { value, changed: false };\n}\n\nfunction normalizeConditionInternal(condition: QueryCondition): QueryCondition {\n  if (condition.conditionType === 'SingleCondition') {\n    const { value, changed } = normalizeCriteriaValue(condition.criteria.value);\n    if (!changed) return condition;\n    return {\n      ...condition,\n      criteria: { ...condition.criteria, value },\n    };\n  }\n  let changed = false;\n  const normalizedConditions = condition.conditions.map((child) => {\n    const normalized = normalizeConditionInternal(child);\n    if (normalized !== child) changed = true;\n    return normalized;\n  });\n  if (!changed) return condition;\n  return { ...condition, conditions: normalizedConditions };\n}\n\nexport function normalizeCondition(condition: QueryCondition | null): QueryCondition | null {\n  if (!condition) return condition;\n  return normalizeConditionInternal(condition);\n}\n","import type { QueryCondition } from '../types/protocol';\nimport type { QueryCriteriaOperator } from '../types/common';\n\nconst SOLE_ROOT_CANDIDATE_OPERATORS = new Set<QueryCriteriaOperator>([\n  'SEARCH_CANDIDATES',\n  'HNSW_CANDIDATES',\n]);\n\nconst READ_ONLY_SEARCH_OPERATORS = new Set<QueryCriteriaOperator>([\n  ...SOLE_ROOT_CANDIDATE_OPERATORS,\n  'CANDIDATES',\n  'SEARCH',\n]);\n\nfunction matchingOperator(\n  condition: QueryCondition,\n  operators: ReadonlySet<QueryCriteriaOperator>,\n): QueryCriteriaOperator | null {\n  if (condition.conditionType === 'SingleCondition') {\n    return operators.has(condition.criteria.operator)\n      ? condition.criteria.operator\n      : null;\n  }\n  for (const child of condition.conditions) {\n    const operator = matchingOperator(child, operators);\n    if (operator !== null) return operator;\n  }\n  return null;\n}\n\ninterface FullTextSearchSummary {\n  searchCount: number;\n  fullTextCriteriaCount: number;\n  invalidSearchTargetCount: number;\n}\n\nfunction summarizeFullTextSearch(condition: QueryCondition): FullTextSearchSummary {\n  if (condition.conditionType === 'SingleCondition') {\n    return {\n      searchCount: condition.criteria.operator === 'SEARCH' ? 1 : 0,\n      fullTextCriteriaCount: condition.criteria.field === '__full_text__' ? 1 : 0,\n      invalidSearchTargetCount:\n        condition.criteria.operator === 'SEARCH' && condition.criteria.field !== '__full_text__'\n          ? 1\n          : 0,\n    };\n  }\n\n  return condition.conditions.reduce<FullTextSearchSummary>(\n    (summary, child) => {\n      const childSummary = summarizeFullTextSearch(child);\n      summary.searchCount += childSummary.searchCount;\n      summary.fullTextCriteriaCount += childSummary.fullTextCriteriaCount;\n      summary.invalidSearchTargetCount += childSummary.invalidSearchTargetCount;\n      return summary;\n    },\n    { searchCount: 0, fullTextCriteriaCount: 0, invalidSearchTargetCount: 0 },\n  );\n}\n\nfunction countOperator(condition: QueryCondition, operator: QueryCriteriaOperator): number {\n  if (condition.conditionType === 'SingleCondition') {\n    return condition.criteria.operator === operator ? 1 : 0;\n  }\n  return condition.conditions.reduce(\n    (count, child) => count + countOperator(child, operator),\n    0,\n  );\n}\n\nfunction isConjunction(condition: QueryCondition): boolean {\n  return condition.conditionType === 'SingleCondition' || (\n    condition.operator === 'AND' && condition.conditions.every(isConjunction)\n  );\n}\n\nfunction assertCandidateTreeIsValid(condition: QueryCondition): void {\n  const soleRootOperator = matchingOperator(condition, SOLE_ROOT_CANDIDATE_OPERATORS);\n  if (soleRootOperator !== null && condition.conditionType !== 'SingleCondition') {\n    throw new Error(`${soleRootOperator} must be the sole root criterion`);\n  }\n\n  const approximateCandidateCount = countOperator(condition, 'CANDIDATES');\n  if (approximateCandidateCount > 1) {\n    throw new Error('A query may contain only one CANDIDATES criterion');\n  }\n  if (approximateCandidateCount === 1 && !isConjunction(condition)) {\n    throw new Error('CANDIDATES can be combined only with non-negated AND predicates');\n  }\n}\n\n/** Validate a prospective composition containing a bounded candidate operator. */\nexport function assertCandidateConditionIsComposable(\n  existing: QueryCondition | null,\n  incoming: QueryCondition,\n  operator: 'AND' | 'OR' = 'AND',\n): void {\n  const prospective: QueryCondition = existing === null\n    ? incoming\n    : { conditionType: 'CompoundCondition', operator, conditions: [existing, incoming] };\n  assertCandidateTreeIsValid(prospective);\n}\n\n/**\n * A high-level SEARCH can coexist with ordinary structured filters, but it is\n * the only full-text predicate allowed in the tree and may appear at most once.\n */\nexport function assertSearchConditionIsComposable(\n  existing: QueryCondition | null,\n  incoming: QueryCondition,\n): void {\n  const existingSummary = existing === null\n    ? { searchCount: 0, fullTextCriteriaCount: 0, invalidSearchTargetCount: 0 }\n    : summarizeFullTextSearch(existing);\n  const incomingSummary = summarizeFullTextSearch(incoming);\n  if (existingSummary.invalidSearchTargetCount + incomingSummary.invalidSearchTargetCount > 0) {\n    throw new Error('SEARCH must target __full_text__');\n  }\n  const searchCount = existingSummary.searchCount + incomingSummary.searchCount;\n\n  if (searchCount > 1) {\n    throw new Error('SEARCH may appear at most once in a query');\n  }\n\n  const fullTextCriteriaCount =\n    existingSummary.fullTextCriteriaCount + incomingSummary.fullTextCriteriaCount;\n  if (searchCount === 1 && fullTextCriteriaCount > 1) {\n    throw new Error('SEARCH cannot be combined with another __full_text__ criterion');\n  }\n}\n\n/** Reject update/delete execution for the core's read-only candidate plans. */\nexport function assertCandidateConditionIsReadOnly(condition: QueryCondition | null): void {\n  if (condition === null) return;\n  const operator = matchingOperator(condition, READ_ONLY_SEARCH_OPERATORS);\n  if (operator !== null) {\n    if (operator === 'SEARCH') {\n      throw new Error('SEARCH is a read-only search operation');\n    }\n    throw new Error(`${operator} is a read-only approximate admission operation`);\n  }\n}\n\n/** Reject high-level and candidate-admission plans from live query streams. */\nexport function assertSearchConditionSupportsStreaming(condition: QueryCondition | null): void {\n  if (condition === null) return;\n  const operator = matchingOperator(condition, READ_ONLY_SEARCH_OPERATORS);\n  if (operator !== null) {\n    throw new Error(`${operator} cannot be used with live query streams`);\n  }\n}\n","import type {\n  ApproximateIndexCandidateQuery,\n  HnswSearchQuery,\n  HnswSearchQueryInput,\n  Int64WireInput,\n  SemanticVectorSignature,\n  SemanticVectorSignatureInput,\n  VectorSearchQuery,\n  VectorSearchQueryInput,\n} from '../types/common';\n\nexport const HNSW_QUERY_FORMAT_VERSION = 1 as const;\nexport const DEFAULT_HNSW_CANDIDATES = 1_000;\nexport const DEFAULT_HNSW_EF_SEARCH = 1_000;\nexport const MAX_HNSW_CANDIDATES = 5_000;\nexport const MAX_HNSW_EF_SEARCH = 20_000;\nexport const MAX_HNSW_VECTOR_DIMENSION = 16_384;\n\nexport const DEFAULT_APPROXIMATE_INDEX_CANDIDATES = 1_000;\nexport const MAX_APPROXIMATE_INDEX_CANDIDATES = 5_000;\nexport const MAX_APPROXIMATE_INDEX_ROUTE_VALUES = 5_000;\nexport const MAX_VECTOR_SEARCH_CANDIDATES = 5_000;\n\nconst SIGNED_INT64_MIN = -(1n << 63n);\nconst SIGNED_INT64_MAX = (1n << 63n) - 1n;\nconst UINT64_MAX = (1n << 64n) - 1n;\nconst INT32_MAX = 2_147_483_647;\nconst SEMANTIC_BAND_COUNT = 4;\n\nfunction requireInteger(value: number, field: string): void {\n  if (!Number.isInteger(value)) throw new TypeError(`${field} must be an integer`);\n}\n\nfunction requireFinite(value: number, field: string): void {\n  if (!Number.isFinite(value)) throw new TypeError(`${field} must be finite`);\n}\n\nfunction finiteFloat32(value: number, field: string): number {\n  requireFinite(value, field);\n  const rounded = Math.fround(value);\n  if (!Number.isFinite(rounded)) {\n    throw new RangeError(`${field} must be finite in the server Float32 domain`);\n  }\n  return rounded;\n}\n\nfunction signedInt64(value: Int64WireInput, field: string): string {\n  let parsed: bigint;\n  if (typeof value === 'number') {\n    if (!Number.isSafeInteger(value)) {\n      throw new TypeError(`${field} numbers must be safe integers; use a string or bigint`);\n    }\n    parsed = BigInt(value);\n  } else if (typeof value === 'bigint') {\n    parsed = value;\n  } else if (typeof value === 'string') {\n    const text = value.trim();\n    if (!/^-?\\d+$/.test(text)) {\n      throw new TypeError(`${field} must be a signed decimal 64-bit value`);\n    }\n    parsed = BigInt(text);\n  } else {\n    throw new TypeError(`${field} must be a signed decimal 64-bit value`);\n  }\n  if (parsed < SIGNED_INT64_MIN || parsed > SIGNED_INT64_MAX) {\n    throw new RangeError(`${field} exceeds the signed 64-bit range`);\n  }\n  return parsed.toString();\n}\n\nfunction semanticWord(value: Int64WireInput, field: string): bigint {\n  let parsed: bigint;\n  if (typeof value === 'number') {\n    if (!Number.isSafeInteger(value)) {\n      throw new TypeError(`${field} numbers must be safe integers; use a string or bigint`);\n    }\n    parsed = BigInt(value);\n  } else if (typeof value === 'bigint') {\n    parsed = value;\n  } else if (typeof value === 'string') {\n    const text = value.trim();\n    const unsignedHex = text.startsWith('0x') || text.startsWith('0X')\n      ? text.slice(2)\n      : /[a-f]/i.test(text)\n        ? text\n        : null;\n    if (unsignedHex !== null) {\n      if (!/^[0-9a-f]+$/i.test(unsignedHex)) {\n        throw new TypeError(`${field} must be signed decimal or unsigned hexadecimal`);\n      }\n      parsed = BigInt(`0x${unsignedHex}`);\n      if (parsed > UINT64_MAX) throw new RangeError(`${field} exceeds 64 bits`);\n      return parsed;\n    }\n    if (!/^-?\\d+$/.test(text)) {\n      throw new TypeError(`${field} must be signed decimal or unsigned hexadecimal`);\n    }\n    parsed = BigInt(text);\n  } else {\n    throw new TypeError(`${field} must be signed decimal or unsigned hexadecimal`);\n  }\n  if (parsed < SIGNED_INT64_MIN || parsed > SIGNED_INT64_MAX) {\n    throw new RangeError(`${field} exceeds the signed 64-bit range`);\n  }\n  return BigInt.asUintN(64, parsed);\n}\n\nfunction wireWord(value: bigint): string {\n  return `0x${BigInt.asUintN(64, value).toString(16).padStart(16, '0')}`;\n}\n\nfunction expectedSemanticBands(words: readonly bigint[]): bigint[] {\n  const bitCount = words.length * 64;\n  const bandBits = bitCount / SEMANTIC_BAND_COUNT;\n  const mask = (1n << BigInt(bandBits)) - 1n;\n  const packed = words.reduce(\n    (value, word, index) => value | (word << BigInt(index * 64)),\n    0n,\n  );\n  return Array.from({ length: SEMANTIC_BAND_COUNT }, (_, index) =>\n    (packed >> BigInt(index * bandBits)) & mask,\n  );\n}\n\n/** Validate and canonicalize one lossless semantic routing signature. */\nexport function semanticVectorSignature(\n  input: SemanticVectorSignatureInput | SemanticVectorSignature,\n): SemanticVectorSignature {\n  const calibrationId = signedInt64(input.calibrationId, 'calibrationId');\n  if (calibrationId === '0') throw new RangeError('calibrationId must be non-zero');\n  requireInteger(input.bucketId, 'bucketId');\n  if (input.bucketId < 0 || input.bucketId > INT32_MAX) {\n    throw new RangeError(`bucketId must be between 0 and ${INT32_MAX}`);\n  }\n\n  const cells = [...input.cells];\n  const cellCounts = [...input.cellCounts];\n  if (cells.length === 0) throw new RangeError('at least one product cell is required');\n  if (cells.length !== cellCounts.length) {\n    throw new RangeError('cellCounts must contain one cardinality per product cell');\n  }\n  let packedBucket = 0;\n  let bucketSpace = 1;\n  cells.forEach((cell, index) => {\n    const count = cellCounts[index];\n    requireInteger(cell, `cells[${index}]`);\n    requireInteger(count, `cellCounts[${index}]`);\n    if (count < 2) throw new RangeError(`cellCounts[${index}] must be at least 2`);\n    if (cell < 0 || cell >= count) throw new RangeError(`cells[${index}] is outside its cell count`);\n    bucketSpace *= count;\n    if (!Number.isSafeInteger(bucketSpace) || bucketSpace > 2_147_483_647) {\n      throw new RangeError('product-cell space exceeds the supported Int bucket domain');\n    }\n    packedBucket = packedBucket * count + cell;\n  });\n  if (input.bucketId !== packedBucket) {\n    throw new RangeError('bucketId does not match the mixed-radix product cells');\n  }\n\n  if (input.fingerprint.length < 1 || input.fingerprint.length > 4) {\n    throw new RangeError('fingerprint must contain between 1 and 4 64-bit words');\n  }\n  const fingerprintWords = input.fingerprint.map((word, index) =>\n    semanticWord(word, `fingerprint[${index}]`),\n  );\n  const expectedBands = expectedSemanticBands(fingerprintWords);\n  const suppliedBands = input.bands?.map((band, index) => semanticWord(band, `bands[${index}]`));\n  if (suppliedBands && suppliedBands.length !== SEMANTIC_BAND_COUNT) {\n    throw new RangeError('bands must contain exactly four values');\n  }\n  if (suppliedBands?.some((band, index) => band !== expectedBands[index])) {\n    throw new RangeError('bands do not represent four equal portions of the fingerprint');\n  }\n\n  const boundaryConfidence = input.boundaryConfidence ?? 0;\n  const floatBoundaryConfidence = finiteFloat32(boundaryConfidence, 'boundaryConfidence');\n  if (floatBoundaryConfidence < 0 || floatBoundaryConfidence > 1) {\n    throw new RangeError('boundaryConfidence must be between 0 and 1');\n  }\n  return {\n    calibrationId,\n    bucketId: input.bucketId,\n    cells,\n    cellCounts,\n    fingerprint: fingerprintWords.map(wireWord),\n    bands: expectedBands.map(wireWord),\n    boundaryConfidence,\n  };\n}\n\n/** Validate and canonicalize a native lexical, semantic, or hybrid search value. */\nexport function vectorSearchQuery(input: VectorSearchQueryInput): VectorSearchQuery {\n  const text = input.text ?? null;\n  if (text !== null && (typeof text !== 'string' || text.trim().length === 0)) {\n    throw new TypeError('text must be non-blank when supplied');\n  }\n  const semantic = input.semantic ? semanticVectorSignature(input.semantic) : null;\n  if (text === null && semantic === null) {\n    throw new RangeError('VectorSearchQuery must contain text and/or a semantic signature');\n  }\n  const minScore = input.minScore ?? null;\n  if (minScore !== null) finiteFloat32(minScore, 'minScore');\n  const nearbyBucketRadius = input.nearbyBucketRadius ?? 1;\n  requireInteger(nearbyBucketRadius, 'nearbyBucketRadius');\n  if (nearbyBucketRadius < 0 || nearbyBucketRadius > INT32_MAX) {\n    throw new RangeError(`nearbyBucketRadius must be between 0 and ${INT32_MAX}`);\n  }\n  const maxCandidates = input.maxCandidates ?? 1_000;\n  requireInteger(maxCandidates, 'maxCandidates');\n  if (maxCandidates < 1 || maxCandidates > MAX_VECTOR_SEARCH_CANDIDATES) {\n    throw new RangeError(`maxCandidates must be between 1 and ${MAX_VECTOR_SEARCH_CANDIDATES}`);\n  }\n  const requireAllTerms = input.requireAllTerms ?? true;\n  if (typeof requireAllTerms !== 'boolean') throw new TypeError('requireAllTerms must be boolean');\n  return { text, semantic, minScore, nearbyBucketRadius, maxCandidates, requireAllTerms };\n}\n\n/** Validate and canonicalize a bounded native-HNSW candidate request. */\nexport function hnswSearchQuery(input: HnswSearchQueryInput): HnswSearchQuery {\n  const formatVersion = input.formatVersion ?? HNSW_QUERY_FORMAT_VERSION;\n  if (formatVersion !== HNSW_QUERY_FORMAT_VERSION) {\n    throw new RangeError(\n      `Unsupported HNSW query formatVersion ${formatVersion}; expected ${HNSW_QUERY_FORMAT_VERSION}`,\n    );\n  }\n  const calibrationId = signedInt64(input.calibrationId, 'HNSW calibrationId');\n  if (calibrationId === '0') throw new RangeError('HNSW calibrationId must be non-zero');\n  const vector = [...input.vector];\n  if (vector.length < 1 || vector.length > MAX_HNSW_VECTOR_DIMENSION) {\n    throw new RangeError(`HNSW vector dimensions must be between 1 and ${MAX_HNSW_VECTOR_DIMENSION}`);\n  }\n  let squaredMagnitude = 0;\n  vector.forEach((value, index) => {\n    const floatValue = finiteFloat32(value, `HNSW vector[${index}]`);\n    squaredMagnitude += floatValue * floatValue;\n  });\n  if (!Number.isFinite(squaredMagnitude) || squaredMagnitude <= 0) {\n    throw new RangeError('HNSW vector must have a non-zero finite norm');\n  }\n  const maxCandidates = input.maxCandidates ?? DEFAULT_HNSW_CANDIDATES;\n  requireInteger(maxCandidates, 'HNSW maxCandidates');\n  if (maxCandidates < 1 || maxCandidates > MAX_HNSW_CANDIDATES) {\n    throw new RangeError(`HNSW maxCandidates must be between 1 and ${MAX_HNSW_CANDIDATES}`);\n  }\n  const efSearch = input.efSearch ?? Math.max(DEFAULT_HNSW_EF_SEARCH, maxCandidates);\n  requireInteger(efSearch, 'HNSW efSearch');\n  if (efSearch < maxCandidates || efSearch > MAX_HNSW_EF_SEARCH) {\n    throw new RangeError(\n      `HNSW efSearch must be between maxCandidates and ${MAX_HNSW_EF_SEARCH}`,\n    );\n  }\n  const minScore = input.minScore ?? null;\n  if (minScore !== null) {\n    const floatMinScore = finiteFloat32(minScore, 'HNSW minScore');\n    if (floatMinScore < -1 || floatMinScore > 1) {\n      throw new RangeError('HNSW minScore must be between -1 and 1');\n    }\n  }\n  return {\n    calibrationId,\n    vector,\n    maxCandidates,\n    efSearch,\n    minScore,\n    formatVersion: HNSW_QUERY_FORMAT_VERSION,\n  };\n}\n\n/** Validate and canonicalize one bounded ordinary-index candidate route. */\nexport function approximateIndexCandidateQuery(\n  valueOrValues: unknown | readonly unknown[],\n  maxCandidates = DEFAULT_APPROXIMATE_INDEX_CANDIDATES,\n): ApproximateIndexCandidateQuery {\n  requireInteger(maxCandidates, 'maxCandidates');\n  if (maxCandidates < 1 || maxCandidates > MAX_APPROXIMATE_INDEX_CANDIDATES) {\n    throw new RangeError(\n      `maxCandidates must be between 1 and ${MAX_APPROXIMATE_INDEX_CANDIDATES}`,\n    );\n  }\n  const values = Array.isArray(valueOrValues) ? [...valueOrValues] : [valueOrValues];\n  if (values.length === 0) {\n    throw new RangeError('Approximate index candidates require at least one route value');\n  }\n  if (values.length > MAX_APPROXIMATE_INDEX_ROUTE_VALUES) {\n    throw new RangeError(\n      `Approximate index candidate routes cannot exceed ${MAX_APPROXIMATE_INDEX_ROUTE_VALUES} values`,\n    );\n  }\n  if (values.some(value => value === null || value === undefined)) {\n    throw new TypeError('Approximate index candidate route values cannot be null');\n  }\n  return { values, maxCandidates };\n}\n","import type { SearchMatch, SearchMode, SearchOptions } from '../types/common';\n\nconst SEARCH_MODES = new Set<SearchMode>(['lexical', 'semantic', 'hybrid']);\nconst SEARCH_MATCHES = new Set<SearchMatch>(['all', 'any']);\nconst SEARCH_OPTION_KEYS = new Set(['mode', 'match', 'minScore', 'maxCandidates']);\n\nexport interface SearchCriteriaValue {\n  text: string;\n  mode: SearchMode;\n  match: SearchMatch;\n  minScore: number | null;\n  maxCandidates: number;\n}\n\n/** Validate and canonicalize the high-level search wire value. */\nexport function searchCriteriaValue(text: string, options: SearchOptions): SearchCriteriaValue {\n  if (typeof text !== 'string' || text.trim().length === 0) {\n    throw new TypeError('search text must be non-blank');\n  }\n  if (\n    options === null ||\n    typeof options !== 'object' ||\n    Array.isArray(options) ||\n    Object.getPrototypeOf(options) !== Object.prototype\n  ) {\n    throw new TypeError('search options must be a plain object');\n  }\n  const unknownKey = Object.keys(options).find(key => !SEARCH_OPTION_KEYS.has(key));\n  if (unknownKey !== undefined) {\n    throw new TypeError(`unsupported search option: ${unknownKey}`);\n  }\n  for (const key of ['mode', 'match', 'maxCandidates'] as const) {\n    if (Object.prototype.hasOwnProperty.call(options, key) && options[key] === null) {\n      throw new TypeError(`search ${key} cannot be null`);\n    }\n  }\n  const mode = options.mode ?? 'hybrid';\n  if (!SEARCH_MODES.has(mode)) {\n    throw new TypeError('search mode must be lexical, semantic, or hybrid');\n  }\n\n  const match = options.match ?? 'any';\n  if (!SEARCH_MATCHES.has(match)) {\n    throw new TypeError('search match must be all or any');\n  }\n\n  const minScore = options.minScore ?? null;\n  if (minScore !== null && (!Number.isFinite(minScore) || minScore < 0 || minScore > 1)) {\n    throw new RangeError('search minScore must be a finite number between 0 and 1');\n  }\n\n  const maxCandidates = options.maxCandidates ?? 1_000;\n  const minCandidates = mode === 'hybrid' ? 2 : 1;\n  if (\n    !Number.isInteger(maxCandidates) ||\n    maxCandidates < minCandidates ||\n    maxCandidates > 5_000\n  ) {\n    throw new RangeError(\n      `search maxCandidates must be an integer between ${minCandidates} and 5000 for ${mode} mode`,\n    );\n  }\n\n  return { text, mode, match, minScore, maxCandidates };\n}\n","// filename: src/builders/cascade-relationship-builder.ts\nimport type { ICascadeRelationshipBuilder } from '../types/builders';\n\n/**\n * Builder for constructing cascade relationship strings like\n * `programs:StreamingProgram(channelId, id)`.\n */\nexport class CascadeRelationshipBuilder implements ICascadeRelationshipBuilder {\n  private graphName?: string;\n  private typeName?: string;\n  private target?: string;\n\n  /**\n   * Set the graph name component.\n   *\n   * @param name Graph name or namespace.\n   * @example\n   * ```ts\n   * builder.graph('programs');\n   * ```\n   */\n  graph(name: string): ICascadeRelationshipBuilder {\n    this.graphName = name;\n    return this;\n  }\n\n  /**\n   * Set the graph type component.\n   *\n   * @param type Graph type to target.\n   * @example\n   * ```ts\n   * builder.graphType('StreamingProgram');\n   * ```\n   */\n  graphType(type: string): ICascadeRelationshipBuilder {\n    this.typeName = type;\n    return this;\n  }\n\n  /**\n   * Set the target field for the relationship.\n   *\n   * @param field Target field name.\n   * @example\n   * ```ts\n   * builder.targetField('channelId');\n   * ```\n   */\n  targetField(field: string): ICascadeRelationshipBuilder {\n    this.target = field;\n    return this;\n  }\n\n  /**\n   * Produce the cascade relationship string using the provided source field.\n   *\n   * @param field Source field name.\n   * @example\n   * ```ts\n   * const rel = builder\n   *   .graph('programs')\n   *   .graphType('StreamingProgram')\n   *   .targetField('channelId')\n   *   .sourceField('id');\n   * // rel === 'programs:StreamingProgram(channelId, id)'\n   * ```\n   */\n  sourceField(field: string): string {\n    if (!this.graphName || !this.typeName || !this.target) {\n      throw new Error('Cascade relationship requires graph, type, target, and source fields');\n    }\n    return `${this.graphName}:${this.typeName}(${this.target}, ${field})`;\n  }\n}\n\nexport default CascadeRelationshipBuilder;\n","/* c8 ignore start */\n// filename: src/helpers/schema-diff.ts\nimport type {\n  SchemaAttribute,\n  SchemaDiff,\n  SchemaEntity,\n  SchemaEntityType,\n  SchemaIdentifier,\n  SchemaIndex,\n  SchemaResolver,\n  SchemaRevision,\n  SchemaSearchSupport,\n  SchemaTableDiff,\n  SchemaTrigger,\n  SchemaUpsertRequest,\n} from '../types/public';\n\ntype SchemaLike =\n  | SchemaRevision\n  | SchemaUpsertRequest\n  | { tables?: Array<{ name: string; attributes?: SchemaAttribute[] }> };\n\ntype AttributeChange = SchemaTableDiff['attributes'] extends infer T\n  ? T extends { changed: Array<infer C> }\n    ? C\n    : never\n  : never;\ntype IndexChange = SchemaTableDiff['indexes'] extends infer T\n  ? T extends { changed: Array<infer C> }\n    ? C\n    : never\n  : never;\ntype ResolverChange = SchemaTableDiff['resolvers'] extends infer T\n  ? T extends { changed: Array<infer C> }\n    ? C\n    : never\n  : never;\ntype TriggerChange = SchemaTableDiff['triggers'] extends infer T\n  ? T extends { changed: Array<infer C> }\n    ? C\n    : never\n  : never;\n\nfunction mapByName<T extends { name: string }>(items?: T[]): Map<string, T> {\n  const map = new Map<string, T>();\n  for (const item of items ?? []) {\n    if (!item?.name) continue;\n    map.set(item.name, item);\n  }\n  return map;\n}\n\nfunction normalizeEntities(schema: SchemaLike): SchemaEntity[] {\n  if (Array.isArray((schema as SchemaRevision).entities)) {\n    return (schema as SchemaRevision).entities ?? [];\n  }\n  const tables = (schema as { tables?: Array<{ name: string; attributes?: SchemaAttribute[] }> }).tables;\n  if (!Array.isArray(tables)) return [];\n  return tables.map((table) => ({\n    name: table.name,\n    attributes: table.attributes ?? [],\n  }));\n}\n\nfunction normalizePartition(partition?: string): string {\n  if (partition == null) return '';\n  const trimmed = partition.trim();\n  return trimmed;\n}\n\nfunction normalizeEntityType(type?: SchemaEntityType): SchemaEntityType {\n  return type ?? 'DEFAULT';\n}\n\nfunction normalizeSearchSupport(searchSupport?: SchemaSearchSupport): SchemaSearchSupport {\n  return searchSupport ?? 'BOTH';\n}\n\nfunction identifiersEqual(a?: SchemaIdentifier, b?: SchemaIdentifier): boolean {\n  if (!a && !b) return true;\n  if (!a || !b) return false;\n  return a.name === b.name && a.generator === b.generator && a.type === b.type;\n}\n\nfunction diffAttributes(apiAttrs?: SchemaAttribute[], localAttrs?: SchemaAttribute[]): SchemaTableDiff['attributes'] | null {\n  const apiMap = mapByName(apiAttrs);\n  const localMap = mapByName(localAttrs);\n  const added: SchemaAttribute[] = [];\n  const removed: string[] = [];\n  const changed: AttributeChange[] = [];\n\n  for (const [name, local] of localMap.entries()) {\n    if (!apiMap.has(name)) {\n      added.push(local);\n      continue;\n    }\n    const api = apiMap.get(name)!;\n    const apiNull = Boolean(api.isNullable);\n    const localNull = Boolean(local.isNullable);\n    if (api.type !== local.type || apiNull !== localNull) {\n      changed.push({\n        name,\n        from: { type: api.type, isNullable: apiNull },\n        to: { type: local.type, isNullable: localNull },\n      });\n    }\n  }\n\n  for (const name of apiMap.keys()) {\n    if (!localMap.has(name)) removed.push(name);\n  }\n\n  added.sort((a, b) => a.name.localeCompare(b.name));\n  removed.sort();\n  changed.sort((a, b) => a.name.localeCompare(b.name));\n\n  if (!added.length && !removed.length && !changed.length) return null;\n  return { added, removed, changed };\n}\n\nfunction diffIndexes(apiIndexes?: SchemaIndex[], localIndexes?: SchemaIndex[]): SchemaTableDiff['indexes'] | null {\n  const apiMap = mapByName(apiIndexes);\n  const localMap = mapByName(localIndexes);\n  const added: SchemaIndex[] = [];\n  const removed: string[] = [];\n  const changed: IndexChange[] = [];\n\n  for (const [name, local] of localMap.entries()) {\n    if (!apiMap.has(name)) {\n      added.push(local);\n      continue;\n    }\n    const api = apiMap.get(name)!;\n    const apiType = api.type ?? 'DEFAULT';\n    const localType = local.type ?? 'DEFAULT';\n    const apiScore = api.minimumScore;\n    const localScore = local.minimumScore;\n    if (apiType !== localType || apiScore !== localScore) {\n      changed.push({ name, from: api, to: local });\n    }\n  }\n\n  for (const name of apiMap.keys()) {\n    if (!localMap.has(name)) removed.push(name);\n  }\n\n  added.sort((a, b) => a.name.localeCompare(b.name));\n  removed.sort();\n  changed.sort((a, b) => a.name.localeCompare(b.name));\n\n  if (!added.length && !removed.length && !changed.length) return null;\n  return { added, removed, changed };\n}\n\nfunction diffResolvers(apiResolvers?: SchemaResolver[], localResolvers?: SchemaResolver[]): SchemaTableDiff['resolvers'] | null {\n  const apiMap = mapByName(apiResolvers);\n  const localMap = mapByName(localResolvers);\n  const added: SchemaResolver[] = [];\n  const removed: string[] = [];\n  const changed: ResolverChange[] = [];\n\n  for (const [name, local] of localMap.entries()) {\n    if (!apiMap.has(name)) {\n      added.push(local);\n      continue;\n    }\n    const api = apiMap.get(name)!;\n    if (api.resolver !== local.resolver) {\n      changed.push({ name, from: api, to: local });\n    }\n  }\n\n  for (const name of apiMap.keys()) {\n    if (!localMap.has(name)) removed.push(name);\n  }\n\n  added.sort((a, b) => a.name.localeCompare(b.name));\n  removed.sort();\n  changed.sort((a, b) => a.name.localeCompare(b.name));\n\n  if (!added.length && !removed.length && !changed.length) return null;\n  return { added, removed, changed };\n}\n\nfunction diffTriggers(apiTriggers?: SchemaTrigger[], localTriggers?: SchemaTrigger[]): SchemaTableDiff['triggers'] | null {\n  const apiMap = mapByName(apiTriggers);\n  const localMap = mapByName(localTriggers);\n  const added: SchemaTrigger[] = [];\n  const removed: string[] = [];\n  const changed: TriggerChange[] = [];\n\n  for (const [name, local] of localMap.entries()) {\n    if (!apiMap.has(name)) {\n      added.push(local);\n      continue;\n    }\n    const api = apiMap.get(name)!;\n    if (api.event !== local.event || api.trigger !== local.trigger) {\n      changed.push({ name, from: api, to: local });\n    }\n  }\n\n  for (const name of apiMap.keys()) {\n    if (!localMap.has(name)) removed.push(name);\n  }\n\n  added.sort((a, b) => a.name.localeCompare(b.name));\n  removed.sort();\n  changed.sort((a, b) => a.name.localeCompare(b.name));\n\n  if (!added.length && !removed.length && !changed.length) return null;\n  return { added, removed, changed };\n}\n\nexport function computeSchemaDiff(apiSchema: SchemaRevision, localSchema: SchemaUpsertRequest): SchemaDiff {\n  const apiEntities = normalizeEntities(apiSchema);\n  const localEntities = normalizeEntities(localSchema);\n\n  const apiMap = mapByName(apiEntities);\n  const localMap = mapByName(localEntities);\n\n  const newTables: string[] = [];\n  const removedTables: string[] = [];\n  const changedTables: SchemaTableDiff[] = [];\n\n  for (const [name, localEntity] of localMap.entries()) {\n    if (!apiMap.has(name)) {\n      newTables.push(name);\n      continue;\n    }\n    const apiEntity = apiMap.get(name)!;\n    const tableDiff: SchemaTableDiff = { name };\n    const typeFrom = normalizeEntityType(apiEntity.type);\n    const typeTo = normalizeEntityType(localEntity.type);\n    if (typeFrom !== typeTo) {\n      tableDiff.type = { from: typeFrom, to: typeTo };\n    }\n\n    if (typeFrom === 'SEARCHABLE' || typeTo === 'SEARCHABLE') {\n      const searchSupportFrom = normalizeSearchSupport(apiEntity.searchSupport);\n      const searchSupportTo = normalizeSearchSupport(localEntity.searchSupport);\n      if (searchSupportFrom !== searchSupportTo) {\n        tableDiff.searchSupport = { from: searchSupportFrom, to: searchSupportTo };\n      }\n    }\n\n    const partitionFrom = normalizePartition(apiEntity.partition);\n    const partitionTo = normalizePartition(localEntity.partition);\n    if (partitionFrom !== partitionTo) {\n      tableDiff.partition = { from: partitionFrom || null, to: partitionTo || null };\n    }\n\n    if (!identifiersEqual(apiEntity.identifier, localEntity.identifier)) {\n      tableDiff.identifier = {\n        from: apiEntity.identifier ?? null,\n        to: localEntity.identifier ?? null,\n      };\n    }\n\n    const attrs = diffAttributes(apiEntity.attributes, localEntity.attributes);\n    if (attrs) tableDiff.attributes = attrs;\n\n    const indexes = diffIndexes(apiEntity.indexes, localEntity.indexes);\n    if (indexes) tableDiff.indexes = indexes;\n\n    const resolvers = diffResolvers(apiEntity.resolvers, localEntity.resolvers);\n    if (resolvers) tableDiff.resolvers = resolvers;\n\n    const triggers = diffTriggers(apiEntity.triggers, localEntity.triggers);\n    if (triggers) tableDiff.triggers = triggers;\n\n    const hasChange =\n      tableDiff.type ||\n      tableDiff.searchSupport ||\n      tableDiff.partition ||\n      tableDiff.identifier ||\n      tableDiff.attributes ||\n      tableDiff.indexes ||\n      tableDiff.resolvers ||\n      tableDiff.triggers;\n\n    if (hasChange) {\n      changedTables.push(tableDiff);\n    }\n  }\n\n  for (const name of apiMap.keys()) {\n    if (!localMap.has(name)) removedTables.push(name);\n  }\n\n  newTables.sort();\n  removedTables.sort();\n  changedTables.sort((a, b) => a.name.localeCompare(b.name));\n\n  return { newTables, removedTables, changedTables };\n}\n\nfunction isScalar(value: unknown): value is string | number | boolean | null | undefined | Date {\n  return (\n    value == null ||\n    value instanceof Date ||\n    typeof value === 'string' ||\n    typeof value === 'number' ||\n    typeof value === 'boolean'\n  );\n}\n\nfunction formatScalar(value: string | number | boolean | null | undefined | Date): string {\n  if (value === null || value === undefined) return 'null';\n  if (value instanceof Date) return JSON.stringify(value.toISOString());\n  if (typeof value === 'string') return JSON.stringify(value);\n  return String(value);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return !!value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date);\n}\n\nfunction toYamlLines(value: unknown, indent = 0): string[] {\n  const pad = ' '.repeat(indent);\n  if (Array.isArray(value)) {\n    if (!value.length) return [`${pad}[]`];\n    const lines: string[] = [];\n    for (const item of value) {\n      if (isScalar(item)) {\n        lines.push(`${pad}- ${formatScalar(item)}`);\n        continue;\n      }\n      const nested = toYamlLines(item, indent + 2);\n      const [first, ...rest] = nested;\n      lines.push(`${pad}- ${first ? first.trimStart() : '{}'}`);\n      for (const line of rest) lines.push(line);\n    }\n    return lines;\n  }\n\n  if (isRecord(value)) {\n    const entries = Object.entries(value).filter(([, v]) => v !== undefined);\n    if (!entries.length) return [`${pad}{}`];\n    const lines: string[] = [];\n    for (const [key, val] of entries) {\n      if (Array.isArray(val) && val.length === 0) {\n        lines.push(`${pad}${key}: []`);\n        continue;\n      }\n      if (isScalar(val)) {\n        lines.push(`${pad}${key}: ${formatScalar(val)}`);\n      } else {\n        lines.push(`${pad}${key}:`);\n        lines.push(...toYamlLines(val, indent + 2));\n      }\n    }\n    return lines;\n  }\n\n  /* v8 ignore next */\n  return [`${pad}${formatScalar(value as string | number | boolean | null | undefined)}`];\n}\n\nfunction pruneTableDiff(table: SchemaTableDiff): SchemaTableDiff | null {\n  const pruned: SchemaTableDiff = { name: table.name };\n  if (table.type && table.type.from !== table.type.to) {\n    pruned.type = table.type;\n  }\n  if (table.searchSupport && table.searchSupport.from !== table.searchSupport.to) {\n    pruned.searchSupport = table.searchSupport;\n  }\n  if (table.partition && (table.partition.from !== table.partition.to)) {\n    pruned.partition = table.partition;\n  }\n  if (table.identifier && !identifiersEqual(table.identifier.from ?? undefined, table.identifier.to ?? undefined)) {\n    pruned.identifier = table.identifier;\n  }\n  if (table.attributes) {\n    const { added = [], removed = [], changed = [] } = table.attributes;\n    if (added.length || removed.length || changed.length) {\n      pruned.attributes = { added, removed, changed };\n    }\n  }\n  if (table.indexes) {\n    const { added = [], removed = [], changed = [] } = table.indexes;\n    if (added.length || removed.length || changed.length) {\n      pruned.indexes = { added, removed, changed };\n    }\n  }\n  if (table.resolvers) {\n    const { added = [], removed = [], changed = [] } = table.resolvers;\n    if (added.length || removed.length || changed.length) {\n      pruned.resolvers = { added, removed, changed };\n    }\n  }\n  if (table.triggers) {\n    const { added = [], removed = [], changed = [] } = table.triggers;\n    if (added.length || removed.length || changed.length) {\n      pruned.triggers = { added, removed, changed };\n    }\n  }\n\n  const hasChange =\n    pruned.type ||\n    pruned.searchSupport ||\n    pruned.partition ||\n    pruned.identifier ||\n    (pruned.attributes && (pruned.attributes.added.length || pruned.attributes.removed.length || pruned.attributes.changed.length)) ||\n    (pruned.indexes && (pruned.indexes.added.length || pruned.indexes.removed.length || pruned.indexes.changed.length)) ||\n    (pruned.resolvers && (pruned.resolvers.added.length || pruned.resolvers.removed.length || pruned.resolvers.changed.length)) ||\n    (pruned.triggers && (pruned.triggers.added.length || pruned.triggers.removed.length || pruned.triggers.changed.length));\n\n  return hasChange ? pruned : null;\n}\n\nexport function formatSchemaDiff(diff: SchemaDiff, filePath?: string): string {\n  const hasChanges = diff.newTables.length || diff.removedTables.length || diff.changedTables.length;\n  if (!hasChanges) {\n    return `No differences found between API schema and ${filePath ?? 'local schema'}.\\n`;\n  }\n\n  const header = filePath ? `# Diff between API schema and ${filePath}\\n` : '# Schema diff';\n  const prunedTables = diff.changedTables\n    .map(pruneTableDiff)\n    .filter((t): t is SchemaTableDiff => Boolean(t));\n\n  const yamlObject: SchemaDiff = {\n    newTables: [...diff.newTables],\n    removedTables: [...diff.removedTables],\n    changedTables: prunedTables,\n  };\n\n  const bodyLines = toYamlLines(yamlObject);\n  return `${header}\\n${bodyLines.join('\\n')}\\n`;\n}\n\n// Exported for targeted test coverage only.\nexport const __schemaDiffTestUtils = { toYamlLines };\n/* c8 ignore stop */\n","import type {\n  CsvFormatOptions,\n  JsonFormatOptions,\n  TableFormatOptions,\n  TreeFormatOptions,\n} from '../types/formatters';\n\ntype QueryRecord = Record<string, unknown>;\ntype FlatRow = Record<string, unknown>;\n\nconst DEFAULT_TABLE_OPTIONS: Required<TableFormatOptions> = {\n  headers: true,\n  maxColumnWidth: 80,\n  flattenNestedObjects: false,\n  nestedSeparator: '.',\n  nullValue: '',\n};\n\nconst DEFAULT_TREE_OPTIONS: Required<TreeFormatOptions> = {\n  rootLabel: 'results',\n  keyField: '',\n  includeRoot: true,\n  maxDepth: Number.POSITIVE_INFINITY,\n  nullValue: '',\n};\n\nconst DEFAULT_CSV_OPTIONS: Required<CsvFormatOptions> = {\n  headers: true,\n  delimiter: ',',\n  quote: '\"',\n  escape: '\"',\n  newline: '\\n',\n  flattenNestedObjects: true,\n  nestedSeparator: '.',\n  nullValue: '',\n};\n\nconst DEFAULT_JSON_OPTIONS: Required<JsonFormatOptions> = {\n  pretty: true,\n  indent: 2,\n};\n\nfunction isDate(value: unknown): value is Date {\n  return value instanceof Date;\n}\n\nfunction isRecord(value: unknown): value is QueryRecord {\n  return value !== null && typeof value === 'object' && !Array.isArray(value) && !isDate(value);\n}\n\nfunction normalizeRecord(value: unknown): QueryRecord {\n  if (isRecord(value)) {\n    return value;\n  }\n  return { value };\n}\n\nfunction normalizeScalar(value: unknown, nullValue: string): string {\n  if (value == null) return nullValue;\n  if (isDate(value)) return value.toISOString();\n  if (typeof value === 'string') return value;\n  if (typeof value === 'bigint') return value.toString();\n  if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n  return JSON.stringify(value);\n}\n\nfunction inlineValue(value: unknown, nullValue: string): string {\n  if (value == null) return nullValue;\n  if (isDate(value)) return value.toISOString();\n  if (Array.isArray(value)) {\n    return value.length === 0\n      ? '[]'\n      : `[${value.map(entry => inlineValue(entry, nullValue)).join(', ')}]`;\n  }\n  if (isRecord(value)) {\n    const entries = Object.entries(value);\n    if (entries.length === 0) return '{}';\n    return entries\n      .map(([key, entry]) => `${key}=${inlineValue(entry, nullValue)}`)\n      .join(', ');\n  }\n  if (typeof value === 'bigint') return value.toString();\n  return String(value);\n}\n\nfunction escapeTableCell(value: string): string {\n  return value\n    .replace(/\\r/g, '\\\\r')\n    .replace(/\\n/g, '\\\\n');\n}\n\nfunction truncate(value: string, maxWidth: number): string {\n  if (maxWidth < 1) return '';\n  if (value.length <= maxWidth) return value;\n  if (maxWidth <= 3) return '.'.repeat(maxWidth);\n  return `${value.slice(0, Math.max(0, maxWidth - 3))}...`;\n}\n\nfunction padRight(value: string, width: number): string {\n  if (value.length >= width) return value;\n  return value + ' '.repeat(width - value.length);\n}\n\nfunction flattenValue(\n  value: unknown,\n  separator: string,\n  prefix: string,\n  out: FlatRow,\n): void {\n  if (isRecord(value)) {\n    const entries = Object.entries(value);\n    if (entries.length === 0) {\n      out[prefix] = {};\n      return;\n    }\n    for (const [key, entry] of entries) {\n      const path = prefix ? `${prefix}${separator}${key}` : key;\n      flattenValue(entry, separator, path, out);\n    }\n    return;\n  }\n  if (Array.isArray(value)) {\n    if (value.length === 0) {\n      out[prefix] = [];\n      return;\n    }\n    value.forEach((entry, index) => {\n      const path = prefix ? `${prefix}${separator}${index}` : String(index);\n      flattenValue(entry, separator, path, out);\n    });\n    return;\n  }\n  out[prefix] = value;\n}\n\nfunction toFlatRow(record: QueryRecord, separator: string): FlatRow {\n  const out: FlatRow = {};\n  for (const [key, value] of Object.entries(record)) {\n    flattenValue(value, separator, key, out);\n  }\n  return out;\n}\n\nfunction discoveredColumns(rows: FlatRow[]): string[] {\n  const columns: string[] = [];\n  const seen = new Set<string>();\n  for (const row of rows) {\n    for (const key of Object.keys(row)) {\n      if (!seen.has(key)) {\n        seen.add(key);\n        columns.push(key);\n      }\n    }\n  }\n  return columns;\n}\n\nfunction orderColumns(\n  discovered: string[],\n  preferred: string[] | undefined,\n  flattenNestedObjects: boolean,\n  separator: string,\n): string[] {\n  if (!preferred || preferred.length === 0) return discovered;\n\n  const ordered: string[] = [];\n  const seen = new Set<string>();\n  const addColumn = (column: string): void => {\n    if (!seen.has(column)) {\n      seen.add(column);\n      ordered.push(column);\n    }\n  };\n\n  for (const field of preferred) {\n    if (flattenNestedObjects) {\n      let matched = false;\n      for (const column of discovered) {\n        if (column === field || column.startsWith(`${field}${separator}`)) {\n          addColumn(column);\n          matched = true;\n        }\n      }\n      if (!matched) {\n        addColumn(field);\n      }\n      continue;\n    }\n    addColumn(field);\n  }\n\n  for (const column of discovered) {\n    addColumn(column);\n  }\n\n  return ordered;\n}\n\nfunction normalizeTableRows(\n  records: unknown[],\n  preferredColumns: string[] | undefined,\n  options: Required<TableFormatOptions>,\n): { columns: string[]; rows: string[][] } {\n  const normalized = records.map(normalizeRecord);\n  if (options.flattenNestedObjects) {\n    const flatRows = normalized.map(record => toFlatRow(record, options.nestedSeparator));\n    const columns = orderColumns(\n      discoveredColumns(flatRows),\n      preferredColumns,\n      true,\n      options.nestedSeparator,\n    );\n    const rows = flatRows.map(row => columns.map(column => escapeTableCell(truncate(\n      inlineValue(row[column], options.nullValue),\n      options.maxColumnWidth,\n    ))));\n    return { columns, rows };\n  }\n\n  const topLevelRows = normalized.map(record => ({ ...record }));\n  const columns = orderColumns(\n    discoveredColumns(topLevelRows),\n    preferredColumns,\n    false,\n    options.nestedSeparator,\n  );\n  const rows = topLevelRows.map(row => columns.map(column => escapeTableCell(truncate(\n    inlineValue(row[column], options.nullValue),\n    options.maxColumnWidth,\n  ))));\n  return { columns, rows };\n}\n\nexport function formatQueryResultsAsTable(\n  records: unknown[],\n  options?: TableFormatOptions,\n  preferredColumns?: string[],\n): string {\n  const final = { ...DEFAULT_TABLE_OPTIONS, ...options };\n  const { columns, rows } = normalizeTableRows(records, preferredColumns, final);\n  if (columns.length === 0) return '';\n\n  const headerCells = columns.map(column => truncate(column, final.maxColumnWidth));\n  const widths = columns.map((_, index) => {\n    const headerWidth = final.headers ? headerCells[index].length : 0;\n    const rowWidth = rows.reduce((max, row) => Math.max(max, row[index].length), 0);\n    return Math.max(headerWidth, rowWidth);\n  });\n\n  const border = (left: string, join: string, right: string): string =>\n    `${left}${widths.map(width => '─'.repeat(width + 2)).join(join)}${right}`;\n  const renderRow = (cells: string[]): string =>\n    `│ ${cells.map((cell, index) => padRight(cell, widths[index])).join(' │ ')} │`;\n\n  const lines: string[] = [border('┌', '┬', '┐')];\n  if (final.headers) {\n    lines.push(renderRow(headerCells));\n    lines.push(border('├', '┼', '┤'));\n  }\n  for (const row of rows) {\n    lines.push(renderRow(row));\n  }\n  lines.push(border('└', '┴', '┘'));\n  return lines.join('\\n');\n}\n\nfunction encodeCsvCell(value: string, options: Required<CsvFormatOptions>): string {\n  const escapedQuote = `${options.escape}${options.quote}`;\n  const escaped = value.split(options.quote).join(escapedQuote);\n  const needsQuoting = escaped.includes(options.delimiter)\n    || escaped.includes(options.quote)\n    || escaped.includes('\\n')\n    || escaped.includes('\\r');\n  if (!needsQuoting) return escaped;\n  return `${options.quote}${escaped}${options.quote}`;\n}\n\nfunction normalizeCsvRows(\n  records: unknown[],\n  preferredColumns: string[] | undefined,\n  options: Required<CsvFormatOptions>,\n): { columns: string[]; rows: string[][] } {\n  const normalized = records.map(normalizeRecord);\n  if (options.flattenNestedObjects) {\n    const flatRows = normalized.map(record => toFlatRow(record, options.nestedSeparator));\n    const columns = orderColumns(\n      discoveredColumns(flatRows),\n      preferredColumns,\n      true,\n      options.nestedSeparator,\n    );\n    const rows = flatRows.map(row => columns.map(column => normalizeScalar(row[column], options.nullValue)));\n    return { columns, rows };\n  }\n\n  const topLevelRows = normalized.map(record => ({ ...record }));\n  const columns = orderColumns(\n    discoveredColumns(topLevelRows),\n    preferredColumns,\n    false,\n    options.nestedSeparator,\n  );\n  const rows = topLevelRows.map(row => columns.map(column => inlineValue(row[column], options.nullValue)));\n  return { columns, rows };\n}\n\nexport function formatQueryResultsAsCsv(\n  records: unknown[],\n  options?: CsvFormatOptions,\n  preferredColumns?: string[],\n): string {\n  const final = { ...DEFAULT_CSV_OPTIONS, ...options };\n  const { columns, rows } = normalizeCsvRows(records, preferredColumns, final);\n  const lines: string[] = [];\n\n  if (final.headers && columns.length > 0) {\n    lines.push(columns.map(column => encodeCsvCell(column, final)).join(final.delimiter));\n  }\n\n  for (const row of rows) {\n    lines.push(row.map(cell => encodeCsvCell(cell, final)).join(final.delimiter));\n  }\n\n  return lines.join(final.newline);\n}\n\nfunction normalizeJsonValue(value: unknown): unknown {\n  if (value === undefined) return null;\n  if (value === null) return null;\n  if (isDate(value)) return value.toISOString();\n  if (typeof value === 'bigint') return value.toString();\n  if (Array.isArray(value)) return value.map(entry => normalizeJsonValue(entry));\n  if (isRecord(value)) {\n    const out: Record<string, unknown> = {};\n    for (const [key, entry] of Object.entries(value)) {\n      out[key] = normalizeJsonValue(entry);\n    }\n    return out;\n  }\n  return value;\n}\n\nexport function formatQueryResultsAsJson(records: unknown[], options?: JsonFormatOptions): string {\n  const final = { ...DEFAULT_JSON_OPTIONS, ...options };\n  const normalized = records.map(record => normalizeJsonValue(normalizeRecord(record)));\n  return final.pretty\n    ? JSON.stringify(normalized, null, final.indent)\n    : JSON.stringify(normalized);\n}\n\ninterface TreeNode {\n  label: string;\n  children?: TreeNode[];\n}\n\nfunction findDefaultTreeKeyField(record: QueryRecord): string | undefined {\n  for (const candidate of ['code', 'id', 'name']) {\n    if (candidate in record) return candidate;\n  }\n  const keys = Object.keys(record);\n  return keys.length > 0 ? keys[0] : undefined;\n}\n\nfunction buildTreeNodesFromValue(\n  value: QueryRecord | unknown[],\n  options: Required<TreeFormatOptions>,\n  depth: number,\n): TreeNode[] {\n  if (depth >= options.maxDepth) {\n    return [{ label: inlineValue(value, options.nullValue) }];\n  }\n  if (Array.isArray(value)) {\n    return value.map((entry, index) => {\n      if (!isRecord(entry) && !Array.isArray(entry)) {\n        return { label: `[${index}]: ${inlineValue(entry, options.nullValue)}` };\n      }\n      return {\n        label: `[${index}]`,\n        children: buildTreeNodesFromValue(entry, options, depth + 1),\n      };\n    });\n  }\n  return Object.entries(value).map(([key, entry]) => {\n    if (isRecord(entry) || Array.isArray(entry)) {\n      if (depth + 1 >= options.maxDepth) {\n        return { label: `${key}: ${inlineValue(entry, options.nullValue)}` };\n      }\n      return {\n        label: key,\n        children: buildTreeNodesFromValue(entry, options, depth + 1),\n      };\n    }\n    return { label: `${key}: ${inlineValue(entry, options.nullValue)}` };\n  });\n}\n\nfunction buildRecordTreeNode(\n  record: QueryRecord,\n  index: number,\n  options: Required<TreeFormatOptions>,\n): TreeNode {\n  const keyField = options.keyField || findDefaultTreeKeyField(record);\n  const entries = Object.entries(record);\n  if (!keyField || !(keyField in record)) {\n    return {\n      label: `row ${index + 1}`,\n      children: buildTreeNodesFromValue(record, options, 0),\n    };\n  }\n\n  const labelValue = inlineValue(record[keyField], options.nullValue);\n  const childEntries = entries.filter(([key]) => key !== keyField);\n  return {\n    label: labelValue,\n    children: childEntries.length > 0\n      ? childEntries.map(([key, value]) => {\n        if (isRecord(value) || Array.isArray(value)) {\n          if (1 > options.maxDepth) {\n            return { label: `${key}: ${inlineValue(value, options.nullValue)}` };\n          }\n          return {\n            label: key,\n            children: buildTreeNodesFromValue(value, options, 1),\n          };\n        }\n        return { label: `${key}: ${inlineValue(value, options.nullValue)}` };\n      })\n      : undefined,\n  };\n}\n\nfunction renderTreeNodes(nodes: TreeNode[], prefix = ''): string[] {\n  const lines: string[] = [];\n  nodes.forEach((node, index) => {\n    const isLast = index === nodes.length - 1;\n    const branch = isLast ? '└─ ' : '├─ ';\n    lines.push(`${prefix}${branch}${node.label}`);\n    if (node.children && node.children.length > 0) {\n      const childPrefix = `${prefix}${isLast ? '   ' : '│  '}`;\n      lines.push(...renderTreeNodes(node.children, childPrefix));\n    }\n  });\n  return lines;\n}\n\nexport function formatQueryResultsAsTree(records: unknown[], options?: TreeFormatOptions): string {\n  const final = { ...DEFAULT_TREE_OPTIONS, ...options };\n  const nodes = records.map((record, index) => buildRecordTreeNode(normalizeRecord(record), index, final));\n  if (!final.includeRoot) {\n    return renderTreeNodes(nodes).join('\\n');\n  }\n  const lines = [final.rootLabel];\n  if (nodes.length > 0) {\n    lines.push(...renderTreeNodes(nodes));\n  }\n  return lines.join('\\n');\n}\n\nexport interface QueryPageLike<T> {\n  records?: T[] | null;\n  nextPage?: string | null;\n}\n\nexport async function collectAllQueryRecords<T>(\n  getPage: (nextPage?: string) => Promise<QueryPageLike<T>>,\n  initialNextPage?: string,\n): Promise<T[]> {\n  const records: T[] = [];\n  let nextPage = initialNextPage;\n\n  while (true) {\n    const page = await getPage(nextPage);\n    if (Array.isArray(page.records)) {\n      records.push(...page.records);\n    }\n    if (!page.nextPage) break;\n    nextPage = page.nextPage;\n  }\n\n  return records;\n}\n","// filename: src/impl/onyx-core.ts\nimport type { ResolvedConfig } from '../config/types';\nimport { DEFAULT_AI_MODEL } from '../config/defaults';\nimport { HttpClient, parseJsonAllowNaN } from '../core/http';\nimport { openJsonLinesStream, openMessagePackStream } from '../core/stream';\nimport { encodeMessagePack, MESSAGEPACK_ACCEPT, MESSAGEPACK_MEDIA_TYPE } from '../core/msgpack';\n\nimport type {\n  OnyxFacade,\n  IOnyxDatabase,\n  OnyxConfig,\n  WireFormat,\n  AiChatOptions,\n  AiClient,\n  AiChatClient,\n  AiChatCompletionRequest,\n  AiChatCompletionResponse,\n  AiChatCompletionChunk,\n  AiChatCompletionStream,\n  AiModelsResponse,\n  AiModel,\n  AiScriptApprovalRequest,\n  AiScriptApprovalResponse,\n  AiRequestOptions,\n  FullTextSearchResult,\n  PublishedModelPredictionInputs,\n  PublishedModelPredictionResponse,\n} from '../types/public';\nimport type {\n  ConditionInput,\n  IQueryBuilder,\n  ISaveBuilder,\n  ICascadeBuilder,\n  IConditionBuilder,\n  ICascadeRelationshipBuilder,\n} from '../types/builders';\nimport { QueryResults, QueryResultsPromise } from '../builders/query-results';\nimport type {\n  QueryCriteria,\n  QueryCondition,\n  SelectQuery,\n  UpdateQuery,\n  QueryPage,\n} from '../types/protocol';\nimport type {\n  ApproximateSearchOptions,\n  HnswSearchQueryInput,\n  SearchOptions,\n  Sort,\n  StreamAction,\n  OnyxDocument,\n  FetchImpl,\n  VectorSearchQueryInput,\n} from '../types/common';\nimport { normalizeCondition } from '../helpers/condition-normalizer';\nimport {\n  assertCandidateConditionIsReadOnly,\n  assertCandidateConditionIsComposable,\n  assertSearchConditionIsComposable,\n  assertSearchConditionSupportsStreaming,\n} from '../helpers/candidate-condition';\nimport {\n  approximateIndexCandidateQuery,\n  hnswSearchQuery,\n  vectorSearchQuery,\n} from '../helpers/candidate-search';\nimport { searchCriteriaValue } from '../helpers/search-options';\nimport type {\n  SchemaDiff,\n  SchemaEntity,\n  SchemaHistoryEntry,\n  SchemaRevision,\n  SchemaUpsertRequest,\n  SchemaValidationResult,\n  SecretMetadata,\n  SecretRecord,\n  SecretsListResponse,\n  SecretSaveRequest,\n} from '../types/public';\nimport { CascadeRelationshipBuilder } from '../builders/cascade-relationship-builder';\nimport { OnyxHttpError } from '../errors/http-error';\nimport { computeSchemaDiff } from '../helpers/schema-diff';\nimport {\n  collectAllQueryRecords,\n  formatQueryResultsAsCsv,\n  formatQueryResultsAsJson,\n  formatQueryResultsAsTable,\n  formatQueryResultsAsTree,\n} from '../helpers/query-formatters';\nimport type {\n  CsvFormatOptions,\n  JsonFormatOptions,\n  TableFormatOptions,\n  TreeFormatOptions,\n} from '../types/formatters';\n\nexport type ResolveConfig = (config?: OnyxConfig) => Promise<ResolvedConfig>;\n\nconst DEFAULT_CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n\n/** -------------------------\n * Internal helpers\n * --------------------------*/\nfunction toSingleCondition(criteria: QueryCriteria): QueryCondition {\n  return { conditionType: 'SingleCondition', criteria };\n}\n\nfunction flattenStrings(values: Array<string | string[]>): string[] {\n  const flat: string[] = [];\n  for (const value of values) {\n    if (Array.isArray(value)) {\n      flat.push(...value);\n    } else if (typeof value === 'string') {\n      flat.push(value);\n    }\n  }\n  return flat;\n}\n\nfunction toCondition(input: ConditionInput): QueryCondition {\n  if (typeof (input as IConditionBuilder).toCondition === 'function') {\n    return (input as IConditionBuilder).toCondition();\n  }\n  if (\n    input &&\n    ((input as QueryCondition).conditionType === 'SingleCondition' ||\n      (input as QueryCondition).conditionType === 'CompoundCondition')\n  ) {\n    return input as QueryCondition;\n  }\n  const c = input as QueryCriteria;\n  if (c && typeof c.field === 'string' && typeof c.operator === 'string') {\n    return toSingleCondition(c);\n  }\n  throw new Error('Invalid condition passed to builder.');\n}\n\ntype SecretMetadataPayload = Omit<SecretMetadata, 'updatedAt'> & { updatedAt: string | Date };\ntype SecretRecordPayload = Omit<SecretRecord, 'updatedAt'> & { updatedAt: string | Date };\ntype SchemaRevisionPayload = Omit<SchemaRevision, 'meta'> & {\n  meta?: {\n    revisionId?: string;\n    createdAt?: string | Date;\n    publishedAt?: string | Date;\n  };\n  createdAt?: string | Date;\n  publishedAt?: string | Date;\n  revisionId?: string;\n};\ntype SchemaRevisionPayloadWithEntityText = SchemaRevisionPayload & { entityText?: unknown };\ntype SchemaValidationPayload = SchemaValidationResult & { schema?: SchemaRevisionPayload };\ntype SchemaValidationPayloadWithEntityText = SchemaValidationPayload & {\n  schema?: SchemaRevisionPayloadWithEntityText;\n};\n\nfunction serializeDates(value: unknown): unknown {\n  if (value instanceof Date) return value.toISOString();\n  if (Array.isArray(value)) return value.map(serializeDates);\n  if (value && typeof value === 'object') {\n    const out: Record<string, unknown> = {};\n    for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n      out[k] = serializeDates(v);\n    }\n    return out;\n  }\n  return value;\n}\n\nfunction stripEntityText<T extends Record<string, unknown>>(input: T): Omit<T, 'entityText'> {\n  const { entityText, ...rest } = input;\n  void entityText;\n  return rest;\n}\n\nfunction normalizeSecretMetadata(input: SecretMetadataPayload): SecretMetadata {\n  return { ...input, updatedAt: new Date(input.updatedAt) };\n}\n\nfunction normalizeSecretRecord(input: SecretRecordPayload): SecretRecord {\n  return { ...input, updatedAt: new Date(input.updatedAt) };\n}\n\nfunction normalizeDate(value?: string | Date): Date | undefined {\n  if (value == null) return undefined;\n  if (value instanceof Date) return value;\n  const ts = new Date(value);\n  return Number.isNaN(ts.getTime()) ? undefined : ts;\n}\n\nfunction normalizeSchemaRevision(\n  input: SchemaRevisionPayloadWithEntityText,\n  fallbackDatabaseId: string,\n): SchemaRevision {\n  const {\n    meta,\n    createdAt,\n    publishedAt,\n    revisionId,\n    entityText,\n    databaseId,\n    entities,\n    revisionDescription,\n    ...rest\n  } = input;\n  void entityText;\n  const dbId = typeof databaseId === 'string' ? databaseId : fallbackDatabaseId;\n  const entityList = Array.isArray(entities) ? (entities as SchemaEntity[]) : [];\n  const revisionDesc = typeof revisionDescription === 'string' ? revisionDescription : undefined;\n  const mergedMeta = {\n    revisionId: meta?.revisionId ?? revisionId,\n    createdAt: normalizeDate(meta?.createdAt ?? createdAt),\n    publishedAt: normalizeDate(meta?.publishedAt ?? publishedAt),\n  };\n  const cleanedMeta =\n    mergedMeta.revisionId || mergedMeta.createdAt || mergedMeta.publishedAt ? mergedMeta : undefined;\n  return {\n    databaseId: dbId,\n    revisionDescription: revisionDesc,\n    entities: entityList,\n    meta: cleanedMeta,\n    ...rest,\n  };\n}\n\n/** -------------------------\n * Onyx Database Implementation\n * --------------------------*/\nclass OnyxDatabaseImpl<Schema = Record<string, unknown>> implements IOnyxDatabase<Schema> {\n  private readonly cfgPromise: Promise<ResolvedConfig>;\n  private resolved: ResolvedConfig | null = null;\n  private http: HttpClient | null = null;\n  private aiHttp: HttpClient | null = null;\n  private readonly streams = new Set<{ cancel: () => void }>();\n  private readonly requestLoggingEnabled: boolean;\n  private readonly responseLoggingEnabled: boolean;\n  private readonly defaultPartition: string | undefined;\n  readonly ai: AiClient;\n\n  constructor(\n    config: OnyxConfig | undefined,\n    resolveConfigWithCache: (config?: OnyxConfig) => Promise<ResolvedConfig>,\n  ) {\n    // Defer resolution; keeps init() synchronous\n    this.requestLoggingEnabled = !!config?.requestLoggingEnabled;\n    this.responseLoggingEnabled = !!config?.responseLoggingEnabled;\n    this.defaultPartition = config?.partition;\n    this.cfgPromise = resolveConfigWithCache(config);\n    this.ai = this.createAiFacade();\n  }\n\n  private async resolveConfig(): Promise<ResolvedConfig> {\n    if (!this.resolved) {\n      this.resolved = await this.cfgPromise;\n    }\n    return this.resolved;\n  }\n\n  private async ensureClient(): Promise<{\n    http: HttpClient;\n    fetchImpl: FetchImpl;\n    baseUrl: string;\n    databaseId: string;\n    defaultModel: string;\n    wireFormat: WireFormat;\n  }> {\n    const cfg = await this.resolveConfig();\n    if (!this.http) {\n      this.http = new HttpClient({\n        baseUrl: cfg.baseUrl,\n        apiKey: cfg.apiKey,\n        apiSecret: cfg.apiSecret,\n        fetchImpl: cfg.fetch,\n        requestLoggingEnabled: this.requestLoggingEnabled,\n        responseLoggingEnabled: this.responseLoggingEnabled,\n        retryEnabled: cfg.retryEnabled,\n        maxRetries: cfg.maxRetries,\n        retryInitialDelayMs: cfg.retryInitialDelayMs,\n        wireFormat: cfg.wireFormat,\n      });\n    }\n    return {\n      http: this.http,\n      fetchImpl: cfg.fetch,\n      baseUrl: cfg.baseUrl,\n      databaseId: cfg.databaseId,\n      defaultModel: cfg.defaultModel ?? DEFAULT_AI_MODEL,\n      wireFormat: cfg.wireFormat,\n    };\n  }\n\n  private async ensureAiClient(): Promise<{\n    http: HttpClient;\n    fetchImpl: FetchImpl;\n    aiBaseUrl: string;\n    databaseId: string;\n    defaultModel: string;\n  }> {\n    const cfg = await this.resolveConfig();\n    if (!this.aiHttp) {\n      this.aiHttp = new HttpClient({\n        baseUrl: cfg.aiBaseUrl,\n        apiKey: cfg.apiKey,\n        apiSecret: cfg.apiSecret,\n        fetchImpl: cfg.fetch,\n        requestLoggingEnabled: this.requestLoggingEnabled,\n        responseLoggingEnabled: this.responseLoggingEnabled,\n        retryEnabled: cfg.retryEnabled,\n        maxRetries: cfg.maxRetries,\n        retryInitialDelayMs: cfg.retryInitialDelayMs,\n      });\n    }\n    return {\n      http: this.aiHttp,\n      fetchImpl: cfg.fetch,\n      aiBaseUrl: cfg.aiBaseUrl,\n      databaseId: cfg.databaseId,\n      defaultModel: cfg.defaultModel ?? DEFAULT_AI_MODEL,\n    };\n  }\n\n  private registerStream(handle: { cancel: () => void }): { cancel: () => void } {\n    this.streams.add(handle);\n    return {\n      cancel: () => {\n        try {\n          handle.cancel();\n        } finally {\n          this.streams.delete(handle);\n        }\n      },\n    };\n  }\n\n  private createAiFacade(): AiClient {\n    const chat = ((contentOrRequest: string | AiChatCompletionRequest, options?: AiChatOptions) => {\n      if (typeof contentOrRequest === 'string') {\n        return this.chatWithContent(contentOrRequest, options);\n      }\n      return this.getAiChatClient().create(contentOrRequest, options);\n    }) as AiClient['chat'];\n    return {\n      chat,\n      chatClient: () => this.getAiChatClient(),\n      getModels: () => this.getModels(),\n      getModel: (modelId) => this.getModel(modelId),\n      requestScriptApproval: (input) => this.requestScriptApproval(input),\n    };\n  }\n\n  getRequestLoggingEnabled(): boolean {\n    return this.requestLoggingEnabled;\n  }\n\n  getResponseLoggingEnabled(): boolean {\n    return this.responseLoggingEnabled;\n  }\n\n  /** -------- IOnyxDatabase -------- */\n\n  private getAiChatClient(): AiChatClient {\n    return new AiChatClientImpl(\n      () => this.ensureAiClient(),\n      (handle) => this.registerStream(handle),\n      () => this.requestLoggingEnabled,\n      () => this.responseLoggingEnabled,\n    );\n  }\n\n  private async chatWithContent(\n    content: string,\n    options?: AiChatOptions,\n  ): Promise<string | AiChatCompletionResponse | AiChatCompletionStream> {\n    const { defaultModel } = await this.ensureAiClient();\n    const stream = options?.stream ?? false;\n    const request: AiChatCompletionRequest = {\n      model: options?.model ?? defaultModel,\n      messages: [{ role: options?.role ?? 'user', content }],\n      stream,\n    };\n    if (options && 'temperature' in options) {\n      request.temperature = options.temperature ?? null;\n    }\n    const result = await this.getAiChatClient().create(request, options);\n    if (stream) return result;\n    if (options?.raw) return result;\n    const first = (result as AiChatCompletionResponse).choices?.[0]?.message?.content;\n    if (typeof first === 'string' && first.trim().length > 0) {\n      return first;\n    }\n    throw new Error('Chat completion response is missing message content');\n  }\n\n  chat(\n    content: string,\n    options?: AiChatOptions & { stream?: false; raw?: false | undefined },\n  ): Promise<string>;\n  chat(\n    content: string,\n    options: AiChatOptions & { stream: true },\n  ): Promise<AiChatCompletionStream>;\n  chat(\n    content: string,\n    options: AiChatOptions & { raw: true },\n  ): Promise<AiChatCompletionResponse | AiChatCompletionStream>;\n  chat(): AiChatClient;\n  chat(\n    content?: string,\n    options?: AiChatOptions,\n  ): AiChatClient | Promise<string | AiChatCompletionResponse | AiChatCompletionStream> {\n    if (typeof content === 'string') {\n      return this.chatWithContent(content, options);\n    }\n    return this.getAiChatClient();\n  }\n\n  async getModels(): Promise<AiModelsResponse> {\n    const { http } = await this.ensureAiClient();\n    return http.request<AiModelsResponse>('GET', '/v1/models');\n  }\n\n  async getModel(modelId: string): Promise<AiModel> {\n    const { http } = await this.ensureAiClient();\n    const path = `/v1/models/${encodeURIComponent(modelId)}`;\n    return http.request<AiModel>('GET', path);\n  }\n\n  async requestScriptApproval(input: AiScriptApprovalRequest): Promise<AiScriptApprovalResponse> {\n    const { http } = await this.ensureAiClient();\n    return http.request<AiScriptApprovalResponse>('POST', '/api/script-approvals', input);\n  }\n\n  async predict(\n    publishedModelId: string,\n    inputs: PublishedModelPredictionInputs,\n  ): Promise<PublishedModelPredictionResponse> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/data/${encodeURIComponent(\n      databaseId,\n    )}/model-builder/published-model/${encodeURIComponent(publishedModelId)}/predict`;\n    return http.request<PublishedModelPredictionResponse>(\n      'POST',\n      path,\n      serializeDates({ inputs }),\n    );\n  }\n\n  async predictFromScript(\n    publishedModelId: string,\n    scriptId: string,\n    scriptParameters: Record<string, string> = {},\n  ): Promise<PublishedModelPredictionResponse> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/data/${encodeURIComponent(\n      databaseId,\n    )}/model-builder/published-model/${encodeURIComponent(publishedModelId)}/predict/script`;\n    return http.request<PublishedModelPredictionResponse>('POST', path, {\n      scriptId,\n      scriptParameters,\n    });\n  }\n\n  from<Table extends keyof Schema & string>(table: Table): IQueryBuilder<Schema[Table]> {\n    return new QueryBuilderImpl<Schema[Table], Schema>(this, String(table), this.defaultPartition);\n  }\n\n  select(...fields: Array<string | string[]>): IQueryBuilder<Record<string, unknown>> {\n    const qb = new QueryBuilderImpl<Record<string, unknown>, Schema>(\n      this,\n      null,\n      this.defaultPartition,\n    );\n    qb.select(...fields);\n    return qb;\n  }\n\n  search(\n    queryText: string,\n    minScore?: number | null,\n  ): IQueryBuilder<Record<string, unknown>>;\n  search(\n    queryText: string,\n    options: SearchOptions,\n  ): IQueryBuilder<FullTextSearchResult>;\n  search(\n    queryText: string,\n    minScoreOrOptions?: number | null | SearchOptions,\n  ): IQueryBuilder<any> {\n    if (typeof queryText !== 'string') {\n      throw new TypeError('Database-wide search requires text as its first argument');\n    }\n    const qb = new QueryBuilderImpl<Record<string, unknown>, Schema>(\n      this,\n      'ALL',\n      undefined,\n    );\n    return typeof minScoreOrOptions === 'object' && minScoreOrOptions !== null\n      ? qb.search(queryText, minScoreOrOptions)\n      : qb.search(queryText, minScoreOrOptions);\n  }\n\n  cascade(...relationships: Array<string | string[]>): ICascadeBuilder<Schema> {\n    const cb = new CascadeBuilderImpl<Schema>(this);\n    return cb.cascade(...relationships);\n  }\n\n  cascadeBuilder(): ICascadeRelationshipBuilder {\n    return new CascadeRelationshipBuilder();\n  }\n\n  // Overload: builder form\n  save<Table extends keyof Schema & string>(table: Table): ISaveBuilder<Schema[Table]>;\n  // Overload: direct form\n  save<Table extends keyof Schema & string>(\n    table: Table,\n    entityOrEntities: Partial<Schema[Table]> | Array<Partial<Schema[Table]>>,\n    options?: { relationships?: string[] },\n  ): Promise<unknown>;\n  // Impl\n  save(\n    table: string,\n    entityOrEntities?: unknown,\n    options?: { relationships?: string[] },\n  ): ISaveBuilder<unknown> | Promise<unknown> {\n    if (arguments.length === 1) {\n      return new SaveBuilderImpl<unknown, Schema>(this, table);\n    }\n    return this._saveInternal(table, entityOrEntities as unknown, options);\n  }\n\n  async batchSave<Table extends keyof Schema & string>(\n    table: Table,\n    entities: Array<Partial<Schema[Table]>>,\n    batchSize = 1000,\n    options?: { relationships?: string[] },\n  ): Promise<void> {\n    for (let i = 0; i < entities.length; i += batchSize) {\n      const chunk = entities.slice(i, i + batchSize);\n      if (chunk.length) {\n        await this._saveInternal(String(table), chunk, options);\n      }\n    }\n  }\n\n  async findById<Table extends keyof Schema & string, T = Schema[Table]>(\n    table: Table,\n    primaryKey: string,\n    options?: { partition?: string; resolvers?: string[] },\n  ): Promise<T | null> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    const partition = options?.partition ?? this.defaultPartition;\n    if (partition) params.append('partition', partition);\n    if (options?.resolvers?.length) params.append('resolvers', options.resolvers.join(','));\n\n    const path = `/data/${encodeURIComponent(databaseId)}/${encodeURIComponent(\n      String(table),\n    )}/${encodeURIComponent(primaryKey)}${params.toString() ? `?${params.toString()}` : ''}`;\n    try {\n      return await http.requestEntity<T>('GET', path);\n    } catch (err) {\n      if (err instanceof OnyxHttpError && err.status === 404) return null;\n      throw err;\n    }\n  }\n\n  async delete<Table extends keyof Schema & string>(\n    table: Table,\n    primaryKey: string,\n    options?: { partition?: string; relationships?: string[] },\n  ): Promise<boolean> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    const partition = options?.partition ?? this.defaultPartition;\n    if (partition) params.append('partition', partition);\n    if (options?.relationships?.length) {\n      params.append('relationships', options.relationships.map(encodeURIComponent).join(','));\n    }\n    const path = `/data/${encodeURIComponent(databaseId)}/${encodeURIComponent(\n      table,\n    )}/${encodeURIComponent(primaryKey)}${params.toString() ? `?${params.toString()}` : ''}`;\n    await http.requestEntity<unknown>('DELETE', path);\n    return true;\n  }\n\n  async saveDocument(doc: OnyxDocument): Promise<unknown> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/data/${encodeURIComponent(databaseId)}/document`;\n    return http.request('PUT', path, serializeDates(doc));\n  }\n\n  async getDocument(\n    documentId: string,\n    options?: { width?: number; height?: number },\n  ): Promise<unknown> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    if (options?.width != null) params.append('width', String(options.width));\n    if (options?.height != null) params.append('height', String(options.height));\n    const path = `/data/${encodeURIComponent(databaseId)}/document/${encodeURIComponent(\n      documentId,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    return http.request('GET', path);\n  }\n\n  async deleteDocument(documentId: string): Promise<unknown> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/data/${encodeURIComponent(databaseId)}/document/${encodeURIComponent(\n      documentId,\n    )}`;\n    return http.request('DELETE', path);\n  }\n\n  async getSchema(options?: { tables?: string | string[] }): Promise<SchemaRevision> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    const tables = options?.tables;\n    const tableList = Array.isArray(tables)\n      ? tables\n      : typeof tables === 'string'\n        ? tables.split(',')\n        : [];\n    const normalizedTables = tableList.map((t) => t.trim()).filter(Boolean);\n    if (normalizedTables.length) {\n      params.append('tables', normalizedTables.map(encodeURIComponent).join(','));\n    }\n    const path = `/schemas/${encodeURIComponent(databaseId)}${\n      params.size ? `?${params.toString()}` : ''\n    }`;\n    const res = await http.request<SchemaRevisionPayloadWithEntityText>('GET', path);\n    return normalizeSchemaRevision(res, databaseId);\n  }\n\n  async getSchemaHistory(): Promise<SchemaHistoryEntry[]> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/schemas/history/${encodeURIComponent(databaseId)}`;\n    const res = await http.request<SchemaRevisionPayloadWithEntityText[]>('GET', path);\n    return Array.isArray(res) ? res.map((entry) => normalizeSchemaRevision(entry, databaseId)) : [];\n  }\n\n  async diffSchema(localSchema: SchemaUpsertRequest): Promise<SchemaDiff> {\n    const apiSchema = await this.getSchema();\n    return computeSchemaDiff(apiSchema, localSchema);\n  }\n\n  async updateSchema(\n    schema: SchemaUpsertRequest,\n    options?: { publish?: boolean },\n  ): Promise<SchemaRevision> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    if (options?.publish) params.append('publish', 'true');\n    const path = `/schemas/${encodeURIComponent(databaseId)}${\n      params.size ? `?${params.toString()}` : ''\n    }`;\n    const body = stripEntityText({ ...schema, databaseId: schema.databaseId ?? databaseId });\n    const res = await http.request<SchemaRevisionPayloadWithEntityText>(\n      'PUT',\n      path,\n      serializeDates(body),\n    );\n    return normalizeSchemaRevision(res, databaseId);\n  }\n\n  async validateSchema(schema: SchemaUpsertRequest): Promise<SchemaValidationResult> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/schemas/${encodeURIComponent(databaseId)}/validate`;\n    const body = stripEntityText({ ...schema, databaseId: schema.databaseId ?? databaseId });\n    const res = await http.request<SchemaValidationPayloadWithEntityText>(\n      'POST',\n      path,\n      serializeDates(body),\n    );\n    const normalizedSchema = res.schema\n      ? normalizeSchemaRevision(res.schema, databaseId)\n      : undefined;\n    return {\n      ...res,\n      valid: res.valid ?? true,\n      schema: normalizedSchema,\n    };\n  }\n\n  async listSecrets(): Promise<SecretsListResponse> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/database/${encodeURIComponent(databaseId)}/secret`;\n    const response = await http.request<SecretsListResponse & { records: SecretMetadataPayload[] }>(\n      'GET',\n      path,\n      undefined,\n      { 'Content-Type': 'application/json' },\n    );\n    const records = (response.records ?? []).map(normalizeSecretMetadata);\n    return {\n      ...response,\n      records,\n      meta: response.meta ?? { totalRecords: records.length },\n    };\n  }\n\n  async getSecret(key: string): Promise<SecretRecord> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/database/${encodeURIComponent(databaseId)}/secret/${encodeURIComponent(key)}`;\n    const record = await http.request<SecretRecordPayload>('GET', path, undefined, {\n      'Content-Type': 'application/json',\n    });\n    return normalizeSecretRecord(record);\n  }\n\n  async putSecret(key: string, input: SecretSaveRequest): Promise<SecretMetadata> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/database/${encodeURIComponent(databaseId)}/secret/${encodeURIComponent(key)}`;\n    const response = await http.request<SecretMetadataPayload>('PUT', path, serializeDates(input));\n    return normalizeSecretMetadata(response);\n  }\n\n  async deleteSecret(key: string): Promise<{ key: string }> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/database/${encodeURIComponent(databaseId)}/secret/${encodeURIComponent(key)}`;\n    const response = await http.request<{ key?: string } | { success?: boolean } | undefined>(\n      'DELETE',\n      path,\n    );\n    const deletedKey =\n      response && typeof response === 'object' && 'key' in response\n        ? (response as { key?: string }).key\n        : undefined;\n    return { key: deletedKey ?? key };\n  }\n\n  close(): void {\n    for (const h of Array.from(this.streams)) {\n      try {\n        h.cancel();\n      } catch {\n        /* ignore */\n      } finally {\n        this.streams.delete(h);\n      }\n    }\n  }\n\n  /** -------- internal helpers used by builders -------- */\n\n  async _count(table: string, select: SelectQuery, partition?: string): Promise<number> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    const p = table === 'ALL' ? undefined : partition ?? this.defaultPartition;\n    if (p) params.append('partition', p);\n    const path = `/data/${encodeURIComponent(databaseId)}/query/count/${encodeURIComponent(\n      table,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    return http.requestEntity<number>('PUT', path, serializeDates(select));\n  }\n\n  async _queryPage<T>(\n    table: string,\n    select: SelectQuery,\n    opts: { pageSize?: number; nextPage?: string; partition?: string } = {},\n  ): Promise<QueryPage<T>> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    if (opts.pageSize != null) params.append('pageSize', String(opts.pageSize));\n    if (opts.nextPage) params.append('nextPage', opts.nextPage);\n    const p = table === 'ALL' ? undefined : opts.partition ?? this.defaultPartition;\n    if (p) params.append('partition', p);\n    const path = `/data/${encodeURIComponent(databaseId)}/query/${encodeURIComponent(\n      table,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    return http.requestEntity<QueryPage<T>>('PUT', path, serializeDates(select));\n  }\n\n  async _update(table: string, update: UpdateQuery, partition?: string): Promise<unknown> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    const p = table === 'ALL' ? undefined : partition ?? this.defaultPartition;\n    if (p) params.append('partition', p);\n    const path = `/data/${encodeURIComponent(databaseId)}/query/update/${encodeURIComponent(\n      table,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    return http.requestEntity('PUT', path, serializeDates(update));\n  }\n\n  async _deleteByQuery(table: string, select: SelectQuery, partition?: string): Promise<number> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    const p = table === 'ALL' ? undefined : partition ?? this.defaultPartition;\n    if (p) params.append('partition', p);\n    const path = `/data/${encodeURIComponent(databaseId)}/query/delete/${encodeURIComponent(\n      table,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    return http.requestEntity<number>('PUT', path, serializeDates(select));\n  }\n\n  async _stream<T>(\n    table: string,\n    select: SelectQuery,\n    includeQueryResults: boolean,\n    keepAlive: boolean,\n    handlers: {\n      onItemAdded?: (e: T) => void;\n      onItemUpdated?: (e: T) => void;\n      onItemDeleted?: (e: T) => void;\n      onItem?: (e: T | null, a: StreamAction) => void;\n    },\n  ): Promise<{ cancel: () => void }> {\n    const { http, baseUrl, databaseId, fetchImpl, wireFormat } = await this.ensureClient();\n    const params = new URLSearchParams();\n    if (includeQueryResults) params.append('includeQueryResults', 'true');\n    if (keepAlive) params.append('keepAlive', 'true');\n\n    const url = `${baseUrl}/data/${encodeURIComponent(databaseId)}/query/stream/${encodeURIComponent(\n      table,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    const serializedSelect = serializeDates(select);\n    const handle =\n      wireFormat === 'msgpack'\n        ? await openMessagePackStream<T>(\n            fetchImpl,\n            url,\n            {\n              method: 'PUT',\n              headers: http.headers({\n                Accept: MESSAGEPACK_ACCEPT,\n                'Content-Type': MESSAGEPACK_MEDIA_TYPE,\n              }),\n              body: encodeMessagePack(serializedSelect),\n            },\n            handlers,\n          )\n        : await openJsonLinesStream<T>(\n            fetchImpl,\n            url,\n            {\n              method: 'PUT',\n              headers: http.headers({\n                Accept: 'application/x-ndjson',\n                'Content-Type': 'application/json',\n              }),\n              body: JSON.stringify(serializedSelect),\n            },\n            handlers,\n          );\n    return this.registerStream(handle);\n  }\n\n  async _saveInternal(\n    table: string,\n    entityOrEntities: unknown,\n    options?: { relationships?: string[] },\n  ): Promise<unknown> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    if (options?.relationships?.length) {\n      params.append('relationships', options.relationships.map(encodeURIComponent).join(','));\n    }\n    const path = `/data/${encodeURIComponent(databaseId)}/${encodeURIComponent(table)}${\n      params.toString() ? `?${params.toString()}` : ''\n    }`;\n    return http.requestEntity('PUT', path, serializeDates(entityOrEntities));\n  }\n}\n\n/** -------------------------\n * QueryBuilder Implementation\n * --------------------------*/\nclass QueryBuilderImpl<T = unknown, S = Record<string, unknown>> implements IQueryBuilder<T> {\n  private readonly db: OnyxDatabaseImpl<S>;\n  private tableName: string | null;\n\n  private fields: string[] | null = null;\n  private resolvers: string[] | null = null;\n  private conditions: QueryCondition | null = null;\n  private sort: Sort[] | null = null;\n  private limitValue: number | null = null;\n  private distinctValue = false;\n  private groupByValues: string[] | null = null;\n  private partitionValue: string | undefined;\n\n  private pageSizeValue: number | null = null;\n  private nextPageValue: string | null = null;\n\n  private mode: 'select' | 'update' = 'select';\n  private updates: Partial<T> | null = null;\n\n  private onItemAddedListener: ((e: T) => void) | null = null;\n  private onItemUpdatedListener: ((e: T) => void) | null = null;\n  private onItemDeletedListener: ((e: T) => void) | null = null;\n  private onItemListener: ((e: T | null, a: StreamAction) => void) | null = null;\n\n  constructor(db: OnyxDatabaseImpl<S>, table: string | null, partition?: string) {\n    this.db = db;\n    this.tableName = table;\n    this.partitionValue = partition;\n  }\n\n  private ensureTable(): string {\n    if (!this.tableName) throw new Error('Table is not defined. Call from(<table>) first.');\n    return this.tableName;\n  }\n\n  private serializableConditions(): QueryCondition | null {\n    return normalizeCondition(this.conditions);\n  }\n\n  private toSelectQuery(): SelectQuery {\n    return {\n      type: 'SelectQuery',\n      table: this.tableName,\n      fields: this.fields,\n      conditions: this.serializableConditions(),\n      sort: this.sort,\n      limit: this.limitValue,\n      distinct: this.distinctValue,\n      groupBy: this.groupByValues,\n      partition: this.partitionValue ?? null,\n      resolvers: this.resolvers,\n    };\n  }\n\n  private toUpdateQuery(): UpdateQuery {\n    assertCandidateConditionIsReadOnly(this.conditions);\n    return {\n      type: 'UpdateQuery',\n      conditions: this.serializableConditions(),\n      updates: this.updates ?? {},\n      sort: this.sort,\n      limit: this.limitValue,\n      partition: this.partitionValue ?? null,\n    };\n  }\n\n  private async getAllRecordsForFormatting(): Promise<T[]> {\n    if (this.mode !== 'select') throw new Error('Formatting is only applicable in select mode.');\n    const table = this.ensureTable();\n    const select = this.toSelectQuery();\n    const pageSize = this.pageSizeValue ?? undefined;\n    const initialNextPage = this.nextPageValue ?? undefined;\n    return collectAllQueryRecords<T>((nextPage?: string) => (\n      this.db._queryPage<T>(table, select, {\n        pageSize,\n        nextPage,\n        partition: this.partitionValue,\n      })\n    ), initialNextPage);\n  }\n\n  private toSerializableQueryObject(): (SelectQuery | UpdateQuery) & { table: string } {\n    const table = this.ensureTable();\n    const payload = this.mode === 'update' ? this.toUpdateQuery() : this.toSelectQuery();\n    return { ...payload, table };\n  }\n\n  from(table: string): IQueryBuilder<T> {\n    this.tableName = table;\n    return this;\n  }\n\n  select(...fields: Array<string | string[]>): IQueryBuilder<T> {\n    const flat = flattenStrings(fields);\n    this.fields = flat.length > 0 ? flat : null;\n    return this;\n  }\n\n  resolve(...values: Array<string | string[]>): IQueryBuilder<T> {\n    const flat = flattenStrings(values);\n    this.resolvers = flat.length > 0 ? flat : null;\n    return this;\n  }\n\n  search(queryText: string, minScore?: number | null): IQueryBuilder<T>;\n  search(queryText: string, options: SearchOptions): IQueryBuilder<T>;\n  search(searchQuery: VectorSearchQueryInput): IQueryBuilder<T>;\n  search(\n    queryTextOrSearch: string | VectorSearchQueryInput,\n    minScoreOrOptions?: number | null | SearchOptions,\n  ): IQueryBuilder<T> {\n    if (\n      typeof queryTextOrSearch === 'string' &&\n      typeof minScoreOrOptions === 'object' &&\n      minScoreOrOptions !== null\n    ) {\n      return this.and({\n        field: '__full_text__',\n        operator: 'SEARCH',\n        value: searchCriteriaValue(queryTextOrSearch, minScoreOrOptions),\n      });\n    }\n    const value = typeof queryTextOrSearch === 'string'\n      ? { queryText: queryTextOrSearch, minScore: minScoreOrOptions ?? null }\n      : vectorSearchQuery(queryTextOrSearch);\n    return this.and({\n      field: '__full_text__',\n      operator: 'MATCHES',\n      value,\n    });\n  }\n\n  approximateSearch(searchQuery: VectorSearchQueryInput): IQueryBuilder<T>;\n  approximateSearch(queryText: string, options?: ApproximateSearchOptions): IQueryBuilder<T>;\n  approximateSearch(\n    queryTextOrSearch: string | VectorSearchQueryInput,\n    options: ApproximateSearchOptions = {},\n  ): IQueryBuilder<T> {\n    if (this.conditions !== null) throw new Error('SEARCH_CANDIDATES must be the sole root criterion');\n    const searchQuery = vectorSearchQuery(\n      typeof queryTextOrSearch === 'string'\n        ? { text: queryTextOrSearch, ...options }\n        : queryTextOrSearch,\n    );\n    if (searchQuery.text === null || searchQuery.semantic !== null) {\n      throw new Error('SEARCH_CANDIDATES supports text-only VectorSearchQuery values');\n    }\n    this.conditions = toSingleCondition({\n      field: '__full_text__',\n      operator: 'SEARCH_CANDIDATES',\n      value: searchQuery,\n    });\n    return this;\n  }\n\n  hnswCandidates(searchQuery: HnswSearchQueryInput): IQueryBuilder<T> {\n    if (this.conditions !== null) throw new Error('HNSW_CANDIDATES must be the sole root criterion');\n    this.conditions = toSingleCondition({\n      field: '__full_text__',\n      operator: 'HNSW_CANDIDATES',\n      value: hnswSearchQuery(searchQuery),\n    });\n    return this;\n  }\n\n  /** @deprecated Prefer `where(approximateCandidates(...))`. */\n  approximateCandidates(\n    attribute: string,\n    valueOrValues: unknown | readonly unknown[],\n    maxCandidates?: number,\n  ): IQueryBuilder<T> {\n    if (attribute.trim().length === 0) throw new TypeError('candidate attribute must not be blank');\n    return this.and({\n      field: attribute,\n      operator: 'CANDIDATES',\n      value: approximateIndexCandidateQuery(valueOrValues, maxCandidates),\n    });\n  }\n\n  where(condition: ConditionInput): IQueryBuilder<T> {\n    const c = toCondition(condition);\n    assertCandidateConditionIsComposable(this.conditions, c, 'AND');\n    assertSearchConditionIsComposable(this.conditions, c);\n    if (!this.conditions) {\n      this.conditions = c;\n    } else {\n      this.conditions = {\n        conditionType: 'CompoundCondition',\n        operator: 'AND',\n        conditions: [this.conditions, c],\n      };\n    }\n    return this;\n  }\n\n  and(condition: ConditionInput): IQueryBuilder<T> {\n    const c = toCondition(condition);\n    assertCandidateConditionIsComposable(this.conditions, c, 'AND');\n    assertSearchConditionIsComposable(this.conditions, c);\n    if (!this.conditions) {\n      this.conditions = c;\n    } else if (\n      this.conditions.conditionType === 'CompoundCondition' &&\n      this.conditions.operator === 'AND'\n    ) {\n      this.conditions.conditions.push(c);\n    } else {\n      this.conditions = {\n        conditionType: 'CompoundCondition',\n        operator: 'AND',\n        conditions: [this.conditions, c],\n      };\n    }\n    return this;\n  }\n\n  or(condition: ConditionInput): IQueryBuilder<T> {\n    const c = toCondition(condition);\n    assertCandidateConditionIsComposable(this.conditions, c, 'OR');\n    assertSearchConditionIsComposable(this.conditions, c);\n    if (!this.conditions) {\n      this.conditions = c;\n    } else if (\n      this.conditions.conditionType === 'CompoundCondition' &&\n      this.conditions.operator === 'OR'\n    ) {\n      this.conditions.conditions.push(c);\n    } else {\n      this.conditions = {\n        conditionType: 'CompoundCondition',\n        operator: 'OR',\n        conditions: [this.conditions, c],\n      };\n    }\n    return this;\n  }\n\n  orderBy(...sorts: Sort[]): IQueryBuilder<T> {\n    this.sort = sorts;\n    return this;\n  }\n\n  groupBy(...fields: string[]): IQueryBuilder<T> {\n    this.groupByValues = fields.length ? fields : null;\n    return this;\n  }\n\n  distinct(): IQueryBuilder<T> {\n    this.distinctValue = true;\n    return this;\n  }\n\n  limit(n: number): IQueryBuilder<T> {\n    this.limitValue = n;\n    return this;\n  }\n\n  inPartition(partition: string): IQueryBuilder<T> {\n    this.partitionValue = partition;\n    return this;\n  }\n\n  pageSize(n: number): IQueryBuilder<T> {\n    this.pageSizeValue = n;\n    return this;\n  }\n\n  nextPage(token: string): IQueryBuilder<T> {\n    this.nextPageValue = token;\n    return this;\n  }\n\n  setUpdates(updates: Partial<T>): IQueryBuilder<T> {\n    assertCandidateConditionIsReadOnly(this.conditions);\n    this.mode = 'update';\n    this.updates = updates;\n    return this;\n  }\n\n  async count(): Promise<number> {\n    if (this.mode !== 'select') throw new Error('Cannot call count() in update mode.');\n    const table = this.ensureTable();\n    return this.db._count(table, this.toSelectQuery(), this.partitionValue);\n  }\n\n  async page(\n    options: { pageSize?: number; nextPage?: string } = {},\n  ): Promise<{ records: T[]; nextPage?: string | null }> {\n    if (this.mode !== 'select') throw new Error('Cannot call page() in update mode.');\n    const table = this.ensureTable();\n    const final = {\n      pageSize: this.pageSizeValue ?? options.pageSize,\n      nextPage: this.nextPageValue ?? options.nextPage,\n      partition: this.partitionValue,\n    };\n    return this.db._queryPage<T>(table, this.toSelectQuery(), final);\n  }\n\n  list(options: {\n    pageSize?: number;\n    nextPage?: string;\n  } = {}): QueryResultsPromise<T> {\n    const size = this.pageSizeValue ?? options.pageSize;\n    const pgPromise = this.page(options).then(pg => {\n      const fetcher = (token: string) => this.nextPage(token).list({ pageSize: size });\n      return new QueryResults<T>(Array.isArray(pg.records) ? pg.records : [], pg.nextPage ?? null, fetcher);\n    });\n    for (const m of Object.getOwnPropertyNames(QueryResults.prototype) as string[]) {\n      if (m === 'constructor') continue;\n      (pgPromise as any)[m] = (...args: any[]) => pgPromise.then(res => (res as any)[m](...args));\n    }\n    return pgPromise as QueryResultsPromise<T>;\n  }\n\n  async firstOrNull(): Promise<T | null> {\n    if (this.mode !== 'select') throw new Error('Cannot call firstOrNull() in update mode.');\n    this.limitValue = 1;\n    const pg = await this.page();\n    return Array.isArray(pg.records) && pg.records.length > 0 ? pg.records[0] : null;\n  }\n\n  async one(): Promise<T | null> {\n    return this.firstOrNull();\n  }\n\n  async table(options?: TableFormatOptions): Promise<string> {\n    return formatQueryResultsAsTable(\n      await this.getAllRecordsForFormatting(),\n      options,\n      this.fields ?? undefined,\n    );\n  }\n\n  async tree(options?: TreeFormatOptions): Promise<string> {\n    return formatQueryResultsAsTree(await this.getAllRecordsForFormatting(), options);\n  }\n\n  async csv(options?: CsvFormatOptions): Promise<string> {\n    return formatQueryResultsAsCsv(\n      await this.getAllRecordsForFormatting(),\n      options,\n      this.fields ?? undefined,\n    );\n  }\n\n  async json(options?: JsonFormatOptions): Promise<string> {\n    return formatQueryResultsAsJson(await this.getAllRecordsForFormatting(), options);\n  }\n\n  async delete(): Promise<number> {\n    if (this.mode !== 'select') throw new Error('delete() is only applicable in select mode.');\n    assertCandidateConditionIsReadOnly(this.conditions);\n    const table = this.ensureTable();\n    return this.db._deleteByQuery(table, this.toSelectQuery(), this.partitionValue);\n  }\n\n  async update(): Promise<unknown> {\n    if (this.mode !== 'update') throw new Error('Call setUpdates(...) before update().');\n    const table = this.ensureTable();\n    const update = this.toUpdateQuery();\n    return this.db._update(table, update, this.partitionValue);\n  }\n\n  onItemAdded(listener: (entity: T) => void): IQueryBuilder<T> {\n    this.onItemAddedListener = listener;\n    return this;\n  }\n\n  onItemUpdated(listener: (entity: T) => void): IQueryBuilder<T> {\n    this.onItemUpdatedListener = listener;\n    return this;\n  }\n\n  onItemDeleted(listener: (entity: T) => void): IQueryBuilder<T> {\n    this.onItemDeletedListener = listener;\n    return this;\n  }\n\n  onItem(listener: (entity: T | null, action: StreamAction) => void): IQueryBuilder<T> {\n    this.onItemListener = listener;\n    return this;\n  }\n\n  async streamEventsOnly(keepAlive = true): Promise<{ cancel: () => void }> {\n    return this.stream(false, keepAlive);\n  }\n\n  async streamWithQueryResults(keepAlive = false): Promise<{ cancel: () => void }> {\n    return this.stream(true, keepAlive);\n  }\n\n  async stream(includeQueryResults = true, keepAlive = false): Promise<{ cancel: () => void }> {\n    if (this.mode !== 'select') throw new Error('Streaming is only applicable in select mode.');\n    assertSearchConditionSupportsStreaming(this.conditions);\n    const table = this.ensureTable();\n    return this.db._stream<T>(table, this.toSelectQuery(), includeQueryResults, keepAlive, {\n      onItemAdded: this.onItemAddedListener ?? undefined,\n      onItemUpdated: this.onItemUpdatedListener ?? undefined,\n      onItemDeleted: this.onItemDeletedListener ?? undefined,\n      onItem: this.onItemListener ?? undefined,\n    });\n  }\n}\n\n/** -------------------------\n * SaveBuilder Implementation\n * --------------------------*/\nclass SaveBuilderImpl<T = unknown, S = Record<string, unknown>> implements ISaveBuilder<T> {\n  private readonly db: OnyxDatabaseImpl<S>;\n  private readonly table: string;\n  private relationships: string[] | null = null;\n\n  constructor(db: OnyxDatabaseImpl<S>, table: string) {\n    this.db = db;\n    this.table = table;\n  }\n\n  cascade(...relationships: Array<string | string[]>): ISaveBuilder<T> {\n    this.relationships = relationships.flat();\n    return this;\n  }\n\n  one(entity: Partial<T>): Promise<unknown> {\n    const opts = this.relationships ? { relationships: this.relationships } : undefined;\n    return this.db._saveInternal(this.table, entity, opts);\n  }\n\n  many(entities: Array<Partial<T>>): Promise<unknown> {\n    const opts = this.relationships ? { relationships: this.relationships } : undefined;\n    return this.db._saveInternal(this.table, entities, opts);\n  }\n}\n\n/** -------------------------\n * CascadeBuilder Implementation\n * --------------------------*/\nclass CascadeBuilderImpl<Schema = Record<string, unknown>>\n  implements ICascadeBuilder<Schema>\n{\n  private readonly db: OnyxDatabaseImpl<Schema>;\n  private rels: string[] | null = null;\n\n  constructor(db: OnyxDatabaseImpl<Schema>) {\n    this.db = db;\n  }\n\n  cascade(...relationships: Array<string | string[]>): ICascadeBuilder<Schema> {\n    this.rels = relationships.flat();\n    return this;\n  }\n\n  save<Table extends keyof Schema & string>(\n    table: Table,\n    entityOrEntities: Partial<Schema[Table]> | Array<Partial<Schema[Table]>>,\n  ): Promise<unknown> {\n    const opts = this.rels ? { relationships: this.rels } : undefined;\n    return this.db._saveInternal(String(table), entityOrEntities, opts);\n  }\n\n  delete<Table extends keyof Schema & string>(\n    table: Table,\n    primaryKey: string,\n  ): Promise<boolean> {\n    const opts = this.rels ? { relationships: this.rels } : undefined;\n    return this.db.delete(table, primaryKey, opts);\n  }\n}\n\ntype ReadableStreamReader = {\n  read(): Promise<{ done: boolean; value?: Uint8Array }>;\n  cancel?: (reason?: unknown) => void;\n};\n\ntype ReadableStreamLike = {\n  getReader(): ReadableStreamReader;\n};\n\nclass AiChatClientImpl implements AiChatClient {\n  constructor(\n    private readonly resolveAiClient: () => Promise<{\n      http: HttpClient;\n      fetchImpl: FetchImpl;\n      aiBaseUrl: string;\n      databaseId: string;\n      defaultModel: string;\n    }>,\n    private readonly registerStream: (handle: { cancel: () => void }) => { cancel: () => void },\n    private readonly requestLoggingEnabled: () => boolean,\n    private readonly responseLoggingEnabled: () => boolean,\n  ) {}\n\n  private normalizeEventData(rawEvent: string): string | null {\n    const lines = rawEvent.split('\\n');\n    const dataLines: string[] = [];\n    for (const line of lines) {\n      const trimmed = line.trim();\n      if (!trimmed || trimmed.startsWith(':')) continue;\n      if (trimmed.startsWith('data:')) {\n        dataLines.push(trimmed.slice(5).trim());\n      } else {\n        dataLines.push(trimmed);\n      }\n    }\n    if (!dataLines.length) return null;\n    const joined = dataLines.join('\\n').trim();\n    return joined.length > 0 ? joined : null;\n  }\n\n  private logRequest(url: string, body: unknown, headers: Record<string, string>): void {\n    if (!this.requestLoggingEnabled()) return;\n    console.log(`POST ${url}`);\n    if (body != null) {\n      const serialized = typeof body === 'string' ? body : JSON.stringify(body);\n      console.log(serialized);\n    }\n    const headerLog = { ...headers };\n    if (headerLog['x-onyx-secret']) headerLog['x-onyx-secret'] = '[REDACTED]';\n    console.log('Headers:', headerLog);\n  }\n\n  private logResponse(status: number, statusText: string, raw?: string): void {\n    if (!this.responseLoggingEnabled()) return;\n    const statusLine = `${status} ${statusText}`.trim();\n    console.log(statusLine);\n    if (raw && raw.trim().length > 0) {\n      console.log(raw);\n    }\n  }\n\n  private toOnyxError(\n    status: number,\n    statusText: string,\n    raw: string,\n  ): OnyxHttpError {\n    let parsed: unknown = raw;\n    try {\n      parsed = parseJsonAllowNaN(raw);\n    } catch {\n      /* ignore */\n    }\n    const message =\n      typeof parsed === 'object' &&\n      parsed !== null &&\n      'error' in parsed &&\n      typeof (parsed as { error?: { message?: unknown } }).error === 'object' &&\n      typeof (parsed as { error?: { message?: unknown } }).error?.message === 'string'\n        ? String((parsed as { error: { message: unknown } }).error.message)\n        : `${status} ${statusText}`;\n    return new OnyxHttpError(message, status, statusText, parsed, raw);\n  }\n\n  create(\n    request: AiChatCompletionRequest & { stream?: false },\n    options?: AiRequestOptions,\n  ): Promise<AiChatCompletionResponse>;\n  create(\n    request: AiChatCompletionRequest & { stream: true },\n    options?: AiRequestOptions,\n  ): Promise<AiChatCompletionStream>;\n  async create(\n    request: AiChatCompletionRequest,\n    options?: AiRequestOptions,\n  ): Promise<AiChatCompletionResponse | AiChatCompletionStream> {\n    const body = { ...request, stream: !!request.stream };\n    const { http, fetchImpl, aiBaseUrl, databaseId } = await this.resolveAiClient();\n    const params = new URLSearchParams();\n    const scopedDb = options?.databaseId ?? databaseId;\n    if (scopedDb) params.append('databaseId', scopedDb);\n    const path = `/v1/chat/completions${params.size ? `?${params.toString()}` : ''}`;\n\n    if (!body.stream) {\n      return http.request<AiChatCompletionResponse>('POST', path, body);\n    }\n\n    const url = `${aiBaseUrl}${path}`;\n    const headers = http.headers({ Accept: 'text/event-stream' });\n    this.logRequest(url, body, headers);\n    const res = await fetchImpl(url, {\n      method: 'POST',\n      headers,\n      body: JSON.stringify(body),\n    });\n\n    if (!res.ok) {\n      const raw = await res.text();\n      this.logResponse(res.status, res.statusText, raw);\n      throw this.toOnyxError(res.status, res.statusText, raw);\n    }\n    this.logResponse(res.status, res.statusText);\n\n    const bodyStream = (res as { body?: unknown }).body;\n    const reader =\n      bodyStream && typeof (bodyStream as { getReader?: unknown }).getReader === 'function'\n        ? (bodyStream as ReadableStreamLike).getReader()\n        : null;\n    if (!reader) {\n      throw new OnyxHttpError(\n        'Streaming response body is not readable',\n        res.status,\n        res.statusText,\n        null,\n        '',\n      );\n    }\n\n    let canceled = false;\n    const handle = {\n      cancel: () => {\n        if (canceled) return;\n        canceled = true;\n        try {\n          reader.cancel?.();\n        } catch {\n          /* ignore */\n        }\n      },\n    };\n    const registered = this.registerStream(handle);\n    const normalizeEvent = (rawEvent: string): string | null => this.normalizeEventData(rawEvent);\n\n    const stream: AiChatCompletionStream = {\n      async *[Symbol.asyncIterator](): AsyncIterator<AiChatCompletionChunk> {\n        const decoder = new TextDecoder('utf-8');\n        let buffer = '';\n        try {\n          while (!canceled) {\n            const { done, value } = await reader.read();\n            if (done) break;\n            if (value) {\n              buffer += decoder.decode(value, { stream: true });\n            }\n            let splitIndex = buffer.indexOf('\\n\\n');\n            while (splitIndex !== -1) {\n              const rawEvent = buffer.slice(0, splitIndex);\n              buffer = buffer.slice(splitIndex + 2);\n              const data = normalizeEvent(rawEvent);\n              if (data === '[DONE]') return;\n              if (data) {\n                try {\n                  yield parseJsonAllowNaN(data) as AiChatCompletionChunk;\n                } catch {\n                  /* ignore parse errors */\n                }\n              }\n              splitIndex = buffer.indexOf('\\n\\n');\n            }\n          }\n          buffer += decoder.decode();\n          const remaining = buffer.trim();\n          if (remaining && remaining !== '[DONE]') {\n            const data = normalizeEvent(remaining);\n            if (data && data !== '[DONE]') {\n              try {\n                yield parseJsonAllowNaN(data) as AiChatCompletionChunk;\n              } catch {\n                /* ignore */\n              }\n            }\n          }\n        } finally {\n          registered.cancel();\n        }\n      },\n      cancel() {\n        registered.cancel();\n      },\n    };\n\n    return stream;\n  }\n}\n\n/** -------------------------\n * Facade export\n * --------------------------*/\nexport function createOnyxFacade(resolveConfig: ResolveConfig): OnyxFacade {\n  const cachedCfgs = new Map<string, { promise: Promise<ResolvedConfig>; expires: number }>();\n\n  const cacheKey = (\n    databaseId?: string,\n    apiKey?: string,\n    wireFormat: OnyxConfig['wireFormat'] = 'msgpack',\n  ): string | null => {\n    const id = typeof databaseId === 'string' && databaseId.trim() !== '' ? databaseId.trim() : null;\n    const key = typeof apiKey === 'string' && apiKey.trim() !== '' ? apiKey.trim() : null;\n    return id && key ? `${id}-${key}-${wireFormat ?? 'msgpack'}` : null;\n  };\n\n  function resolveConfigWithCache(config?: OnyxConfig): Promise<ResolvedConfig> {\n    const ttl = config?.ttl ?? DEFAULT_CACHE_TTL;\n    const now = Date.now();\n    const hintKey =\n      cacheKey(config?.databaseId, config?.apiKey, config?.wireFormat) ??\n      `__default__-${config?.wireFormat ?? 'msgpack'}`;\n\n    const existing = cachedCfgs.get(hintKey);\n    if (existing && existing.expires > now) {\n      return existing.promise;\n    }\n    if (existing) cachedCfgs.delete(hintKey);\n\n    const { ttl: _ttl, requestLoggingEnabled: _reqLog, responseLoggingEnabled: _resLog, ...rest } = config ?? {};\n    void _ttl;\n    void _reqLog;\n    void _resLog;\n    const expires = now + ttl;\n\n    const promise = resolveConfig(rest).then((resolved) => {\n      const resolvedKey =\n        cacheKey(resolved.databaseId, resolved.apiKey, resolved.wireFormat) ?? hintKey;\n      const nextExpires = Date.now() + ttl;\n      cachedCfgs.set(resolvedKey, { promise, expires: nextExpires });\n      if (resolvedKey !== hintKey) {\n        const stale = cachedCfgs.get(hintKey);\n        if (stale && stale.promise === promise) cachedCfgs.delete(hintKey);\n      }\n      return resolved;\n    });\n\n    cachedCfgs.set(hintKey, { promise, expires });\n    return promise;\n  }\n\n  function clearCacheConfig(): void {\n    cachedCfgs.clear();\n  }\n\n  return {\n    init<Schema = Record<string, unknown>>(config?: OnyxConfig): IOnyxDatabase<Schema> {\n      return new OnyxDatabaseImpl<Schema>(config, resolveConfigWithCache);\n    },\n    clearCacheConfig,\n  };\n}\n","// filename: src/impl/onyx.ts\nimport * as chain from '../config/chain';\nimport { createOnyxFacade } from './onyx-core';\n\nexport const onyx = createOnyxFacade((config) => chain.resolveConfig(config));\n","// filename: gen/generate.ts\nimport process from 'node:process';\nimport { resolveConfig, type ResolvedConfig } from '../src/config/chain';\nimport { emitTypes, type OnyxIntrospection, type EmitOptions, type OptionalStrategy } from './emit';\nimport { onyx } from '../src';\nimport type { SchemaEntity } from '../src/types/public';\n\nexport interface GenerateOptions {\n  /** Where to read schema from. */\n  source?: 'auto' | 'api' | 'file';\n  /** When source=file, filesystem path to schema JSON. */\n  schemaPath?: string;\n\n  /**\n   * Output base filename (without extension). Default: \"onyx.schema\".\n   * Used only when writing into a directory (see `typesOutDir`).\n   */\n  outBaseName?: string;\n\n  /**\n   * Types output directory (when writing into a directory).\n   * Back-compat alias: `outDir`.\n   * Note: if no output is provided, default output is \"./onyx/types.ts\".\n   */\n  typesOutDir?: string | string[];\n\n  /**\n   * Write the generated types to THIS EXACT FILE (absolute or relative path).\n   * If provided and points to a \".ts\" file, this takes precedence over `typesOutDir`.\n   * Example: \"./onyx/types.ts\"\n   * Note: if no output is provided, default output is \"./onyx/types.ts\".\n   */\n  typesOutFile?: string | string[];\n\n  /**\n   * JSON output directory (only used when `emitJson: true`).\n   * Default: same as `typesOutDir` or the directory of `typesOutFile` (if set).\n   */\n  jsonOutDir?: string;\n\n  /**\n   * Emit a copy of the schema JSON alongside the TS file.\n   * Default: false (do not copy schema).\n   */\n  emitJson?: boolean;\n\n  /** Overwrite existing files. Default: true. */\n  overwrite?: boolean;\n\n  /** Timestamp representation for TS types. Default: \"date\". */\n  timestampMode?: EmitOptions['timestampMode'];\n\n  /** Exported schema type name. Default: \"OnyxSchema\". */\n  schemaTypeName?: string;\n\n  /** Prefix for model/interface names. Example: \"Onyx\" -> OnyxVodItem. Default: \"\" */\n  prefix?: string;\n\n  /**\n   * Optional property strategy. Default: \"non-null\" (add `?` to non-null fields).\n   * Other values: \"nullable\", \"none\".\n   */\n  optional?: OptionalStrategy;\n\n  /** Optional candidate API paths (overrides defaults). Must start with \"/\". */\n  apiPaths?: string[];\n\n  /** Quiet logs. Default: false. */\n  quiet?: boolean;\n\n  /** @deprecated Legacy single outDir; still accepted to avoid breaking scripts. */\n  outDir?: string | string[];\n}\n\nconst DEFAULT_SCHEMA_PATH = './onyx.schema.json';\nconst DEFAULT_TYPES_OUT = './onyx/types.ts';\n\nconst DEFAULTS: Required<\n  Omit<\n    GenerateOptions,\n    | 'schemaPath'\n    | 'apiPaths'\n    | 'typesOutDir'\n    | 'jsonOutDir'\n    | 'outDir'\n    | 'prefix'\n    | 'typesOutFile'\n  >\n> = {\n  source: 'file',\n  outBaseName: 'onyx.schema',\n  emitJson: false,\n  overwrite: true,\n  timestampMode: 'date',\n  schemaTypeName: 'OnyxSchema',\n  optional: 'non-null',\n  quiet: false,\n};\n\nfunction toArray(val?: string | string[]): string[] {\n  if (!val) return [];\n  return Array.isArray(val) ? val : [val];\n}\n\nfunction isTypesFilePath(p?: string): boolean {\n  if (!p) return false;\n  return (\n    p.endsWith('.ts') ||\n    p.endsWith('.mts') ||\n    p.endsWith('.cts') ||\n    p.endsWith('.d.ts') ||\n    p.endsWith('.d.mts') ||\n    p.endsWith('.d.cts')\n  );\n}\n\nasync function readFileJson<T = unknown>(path: string): Promise<T> {\n  const fs = await import('node:fs/promises');\n  const txt = await fs.readFile(path, 'utf8');\n  return JSON.parse(txt) as T;\n}\n\nasync function ensureDir(dir: string): Promise<void> {\n  const fs = await import('node:fs/promises');\n  await fs.mkdir(dir, { recursive: true });\n}\n\nasync function writeFile(path: string, data: string, overwrite: boolean): Promise<void> {\n  const fs = await import('node:fs/promises');\n  if (!overwrite) {\n    try {\n      await fs.access(path);\n      throw new Error(`Refusing to overwrite existing file: ${path}`);\n    } catch {\n      /* not exists -> ok */\n    }\n  }\n  await fs.writeFile(path, data, 'utf8');\n}\n\nfunction isIntrospection(x: unknown): x is OnyxIntrospection {\n  return !!x && typeof x === 'object' && Array.isArray((x as { tables?: unknown }).tables);\n}\n\nfunction normalizeAttributeType(\n  raw: unknown,\n): OnyxIntrospection['tables'][number]['attributes'][number]['type'] {\n  const t = typeof raw === 'string' ? raw : '';\n  switch (t) {\n    case 'String':\n      return 'String';\n    case 'Boolean':\n      return 'Boolean';\n    case 'Timestamp':\n      return 'Timestamp';\n    case 'EmbeddedList':\n      return 'EmbeddedList';\n    case 'EmbeddedObject':\n      return 'EmbeddedObject';\n    case 'Int':\n    case 'Byte':\n    case 'Short':\n    case 'Float':\n    case 'Double':\n    case 'Long':\n      return 'Int';\n    default:\n      return 'EmbeddedObject';\n  }\n}\n\nfunction toOnyxIntrospectionFromEntities(entities: SchemaEntity[]): OnyxIntrospection {\n  return {\n    tables: entities.map((entity) => ({\n      name: entity.name,\n      attributes: (entity.attributes ?? []).map((attr) => ({\n        name: attr.name,\n        type: normalizeAttributeType(attr.type),\n        isNullable: Boolean(attr.isNullable),\n      })),\n    })),\n  };\n}\n\nfunction normalizeIntrospection(raw: unknown): OnyxIntrospection {\n  if (isIntrospection(raw)) return raw;\n  const entities = (raw as { entities?: unknown }).entities;\n  if (Array.isArray(entities)) {\n    return toOnyxIntrospectionFromEntities(entities as SchemaEntity[]);\n  }\n  throw new Error('Invalid schema: missing \"tables\" array.');\n}\n\nasync function fetchSchemaFromApi(config: ResolvedConfig): Promise<OnyxIntrospection> {\n  const db = onyx.init({\n    baseUrl: config.baseUrl,\n    ...(config.databaseId ? { databaseId: config.databaseId } : {}),\n    apiKey: config.apiKey,\n    apiSecret: config.apiSecret,\n    fetch: config.fetch,\n  });\n  const schema = await db.getSchema();\n  return normalizeIntrospection(schema);\n}\n\n/**\n * Programmatic codegen entry.\n * Returns the absolute paths of the generated files.\n */\nexport async function generateTypes(\n  options?: GenerateOptions,\n): Promise<{\n  typesPath: string;\n  jsonPath?: string;\n  typesPaths: string[];\n  jsonPaths?: string[];\n}> {\n  const path = await import('node:path');\n  const opts = { ...DEFAULTS, ...(options ?? {}) };\n\n  const resolvedSchemaPath =\n    opts.schemaPath ?? (opts.source === 'file' ? DEFAULT_SCHEMA_PATH : undefined);\n\n  let schemaInput: unknown | null = null;\n\n  if (opts.source === 'file' || (opts.source === 'auto' && resolvedSchemaPath)) {\n    if (!resolvedSchemaPath) throw new Error('schemaPath is required when source=\"file\"');\n    if (!opts.quiet)\n      process.stderr.write(`[onyx-gen] reading schema from file: ${resolvedSchemaPath}\\n`);\n    schemaInput = await readFileJson<unknown>(resolvedSchemaPath);\n  }\n\n  if (!schemaInput) {\n    if (opts.source === 'file') throw new Error('Failed to read schema from file');\n    const cfg = await resolveConfig({});\n    if (!opts.quiet) {\n      const target = cfg.databaseId ? `db ${cfg.databaseId}` : 'default database context';\n      process.stderr.write(`[onyx-gen] fetching schema from API for ${target}\\n`);\n    }\n    schemaInput = await fetchSchemaFromApi(cfg);\n  }\n\n  const schema = normalizeIntrospection(schemaInput);\n\n  const outTargets = [\n    ...toArray(opts.typesOutFile),\n    ...toArray(opts.typesOutDir),\n    ...toArray(opts.outDir),\n  ]\n    .map((p) => p.trim())\n    .filter(Boolean);\n\n  if (outTargets.length === 0) {\n    outTargets.push(DEFAULT_TYPES_OUT);\n  }\n\n  type OutputTarget = { typesPath: string; typesDirAbs: string; jsonBaseName: string };\n  const outputs: OutputTarget[] = outTargets.map((target) => {\n    const outIsFile = isTypesFilePath(target);\n    const typesPath = outIsFile\n      ? path.resolve(process.cwd(), target)\n      : path.join(path.resolve(process.cwd(), target), `${opts.outBaseName}.ts`);\n    const typesDirAbs = outIsFile ? path.dirname(typesPath) : path.resolve(process.cwd(), target);\n    const jsonBaseName = outIsFile ? path.basename(typesPath, path.extname(typesPath)) : opts.outBaseName;\n    return { typesPath, typesDirAbs, jsonBaseName };\n  });\n\n  const types = emitTypes(schema, {\n    schemaTypeName: opts.schemaTypeName,\n    timestampMode: opts.timestampMode,\n    modelNamePrefix: opts.prefix ?? '',\n    optionalStrategy: opts.optional,\n  });\n  const typesPaths: string[] = [];\n  for (const out of outputs) {\n    await ensureDir(out.typesDirAbs);\n    await writeFile(out.typesPath, `${types}\\n`, opts.overwrite);\n    typesPaths.push(out.typesPath);\n  }\n\n  let jsonPaths: string[] | undefined;\n  if (opts.emitJson) {\n    const jsonPretty = JSON.stringify(schema, null, 2);\n    jsonPaths = [];\n    for (const out of outputs) {\n      const jsonOutDirAbs = path.resolve(process.cwd(), opts.jsonOutDir ?? out.typesDirAbs);\n      await ensureDir(jsonOutDirAbs);\n      const jsonPath = path.join(jsonOutDirAbs, `${out.jsonBaseName}.json`);\n      await writeFile(jsonPath, `${jsonPretty}\\n`, opts.overwrite);\n      jsonPaths.push(jsonPath);\n    }\n  }\n\n  if (!opts.quiet) {\n    for (const p of typesPaths) {\n      process.stderr.write(`[onyx-gen] wrote ${p}\\n`);\n    }\n    if (jsonPaths) {\n      for (const jp of jsonPaths) {\n        process.stderr.write(`[onyx-gen] wrote ${jp}\\n`);\n      }\n    }\n  }\n\n  return { typesPath: typesPaths[0], jsonPath: jsonPaths?.[0], typesPaths, jsonPaths };\n}\n","#!/usr/bin/env node\n// filename: gen/cli/generate.ts\nimport process from 'node:process';\nimport { generateTypes, type GenerateOptions } from '../generate';\n\nfunction isTypesFilePath(p?: string): boolean {\n  if (!p) return false;\n  return (\n    p.endsWith('.ts') ||\n    p.endsWith('.mts') ||\n    p.endsWith('.cts') ||\n    p.endsWith('.d.ts') ||\n    p.endsWith('.d.mts') ||\n    p.endsWith('.d.cts')\n  );\n}\n\ntype OutCollector = {\n  typesOutFile?: string | string[];\n  typesOutDir?: string | string[];\n};\n\nfunction appendVal(current: string | string[] | undefined, val: string): string | string[] {\n  if (!current) return val;\n  return Array.isArray(current) ? [...current, val] : [current, val];\n}\n\nfunction addOut(\n  opts: OutCollector,\n  raw: string | undefined,\n  forceFile = false,\n): OutCollector {\n  if (!raw) throw new Error('Missing value for output flag');\n  const parts = raw.split(',').map((p) => p.trim()).filter(Boolean);\n  for (const val of parts) {\n    if (forceFile || isTypesFilePath(val)) {\n      opts.typesOutFile = appendVal(opts.typesOutFile, val);\n    } else {\n      opts.typesOutDir = appendVal(opts.typesOutDir, val);\n    }\n  }\n  return opts;\n}\n\nfunction parseArgs(argv: string[]): GenerateOptions {\n  const opts: GenerateOptions = {};\n  const next = (i: number) => argv[i + 1];\n\n  for (let i = 2; i < argv.length; i++) {\n    const a = argv[i];\n    switch (a) {\n      case '--out':\n      case '--outDir': { // legacy alias\n        addOut(opts, next(i));\n        i++;\n        break;\n      }\n      case '--types-out':\n      case '--typesOut': {\n        addOut(opts, next(i));\n        i++;\n        break;\n      }\n      case '--types-file':\n      case '--typesFile': {\n        addOut(opts, next(i), true);\n        i++;\n        break;\n      }\n      case '--json-out':\n      case '--jsonOut':\n        opts.jsonOutDir = next(i);\n        i++;\n        break;\n      case '--base':\n      case '--baseName':\n        opts.outBaseName = next(i);\n        i++;\n        break;\n      case '--schema':\n        opts.schemaPath = next(i);\n        i++;\n        break;\n      case '--source': {\n        const v = (next(i) ?? '').toLowerCase();\n        if (v === 'api' || v === 'file' || v === 'auto') opts.source = v as GenerateOptions['source'];\n        else throw new Error(`Invalid --source: ${v}`);\n        i++;\n        break;\n      }\n      case '--timestamps': {\n        const v = (next(i) ?? '').toLowerCase();\n        if (v === 'string' || v === 'date' || v === 'number') opts.timestampMode = v as GenerateOptions['timestampMode'];\n        else throw new Error(`Invalid --timestamps: ${v}`);\n        i++;\n        break;\n      }\n      case '--name':\n      case '--schemaTypeName':\n        opts.schemaTypeName = next(i);\n        i++;\n        break;\n      case '--prefix':\n        opts.prefix = next(i);\n        i++;\n        break;\n      case '--optional': {\n        const v = (next(i) ?? '').toLowerCase();\n        if (v === 'non-null' || v === 'nonnull' || v === 'nonull') {\n          opts.optional = 'non-null';\n        } else if (v === 'nullable') {\n          opts.optional = 'nullable';\n        } else if (v === 'none') {\n          opts.optional = 'none';\n        } else {\n          throw new Error(`Invalid --optional: ${v} (use non-null|nullable|none)`);\n        }\n        i++;\n        break;\n      }\n      case '--emit-json':\n        opts.emitJson = true;\n        break;\n      case '--no-emit-json':\n        opts.emitJson = false;\n        break;\n      case '--api-path': {\n        const v = next(i);\n        if (!v || !v.startsWith('/')) throw new Error(`--api-path must start with \"/\": ${v}`);\n        if (!opts.apiPaths) opts.apiPaths = [];\n        opts.apiPaths.push(v);\n        i++;\n        break;\n      }\n      case '--overwrite':\n        opts.overwrite = true;\n        break;\n      case '--no-overwrite':\n        opts.overwrite = false;\n        break;\n      case '-q':\n      case '--quiet':\n        opts.quiet = true;\n        break;\n      case '-h':\n      case '--help':\n        printHelp();\n        process.exit(0);\n        break;\n      default:\n        if (a.startsWith('-')) throw new Error(`Unknown option: ${a}`);\n        break;\n    }\n  }\n  return opts;\n}\n\nfunction printHelp(): void {\n  process.stdout.write(`onyx-gen — Generate Onyx schema TypeScript types\n\nUsage:\n  onyx-gen [options]\n\nOutput selection:\n  --out <path[,path2,...]>         If a value ends with \".ts\", writes exactly to that file.\n                                   Otherwise treats it as a directory. Comma-separate or repeat to\n                                   write multiple outputs. Default: ./onyx/types.ts\n  --types-out <dir|file>[,more]    Same as --out (file-or-dir).\n  --types-file <file.ts>[,more]    Explicit file output(s).\n  --base, --baseName <name>        Base filename (without ext) when writing to a directory (default: onyx.schema)\n  --json-out <dir>                 JSON output directory (used only with --emit-json)\n\nSource selection:\n  --source <auto|api|file>         Where to get schema (default: file)\n  --schema <path>                  Path to schema JSON when --source=file (default: ./onyx.schema.json)\n\nType emission:\n  --timestamps <string|date|number>  Timestamp representation in types (default: date)\n  --name, --schemaTypeName <T>       Exported schema type name (default: OnyxSchema)\n  --prefix <Prefix>                  Prefix to prepend to generated model names (default: none)\n  --optional <non-null|nullable|none>\n                                     Where to add '?' optional props (default: non-null)\n\nOther:\n  --emit-json / --no-emit-json     Emit schema JSON copy (default: no-emit-json)\n  --api-path <path>                Candidate API path to fetch schema; can be repeated\n  --overwrite / --no-overwrite     Overwrite existing files (default: overwrite)\n  -q, --quiet                      Suppress logs\n  -h, --help                       Show this help\n\nNotes:\n  • Running with no flags defaults to: --source file --schema ./onyx.schema.json --out ./onyx/types.ts\n  • Env/config for --source=api uses the same resolver as onyx.init()\n    (env vars, ./onyx-database.json, ~/.onyx/onyx-database-<id>.json, etc.).\n`);\n}\n\n(async () => {\n  try {\n    const opts = parseArgs(process.argv);\n    await generateTypes(opts);\n  } catch (e: unknown) {\n    const msg = e instanceof Error ? e.message : String(e);\n    process.stderr.write(`onyx-gen: ${msg}\\n`);\n    process.exit(1);\n  }\n})();\n"]}