@query-farm/vgi 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arguments/argument-spec.d.ts +7 -0
- package/dist/functions/aggregate.d.ts +8 -0
- package/dist/functions/table.d.ts +8 -0
- package/dist/index.js +78 -6
- package/dist/index.js.map +7 -7
- package/dist/worker-cf-entry.js +217 -138
- package/dist/worker-cf-entry.js.map +8 -8
- package/package.json +1 -1
- package/src/arguments/argument-spec.ts +68 -0
- package/src/functions/aggregate.ts +13 -1
- package/src/functions/scalar.ts +31 -2
- package/src/functions/table.ts +17 -1
- package/src/protocol/handlers/aggregate.ts +12 -2
package/dist/index.js.map
CHANGED
|
@@ -19,17 +19,17 @@
|
|
|
19
19
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Public facade. Internal vgi-typescript code imports Arrow operations\n// from here; the active backend is selected at module-resolution time\n// via the `#arrow-impl` subpath in package.json's `imports` field.\n//\n// Selection conditions:\n// workerd / worker / browser -> impl-flechette (Cloudflare Workers, etc.)\n// default -> impl-arrowjs (Bun worker, Node)\n\n// Backend-agnostic types (defined in this package, satisfied structurally\n// by both arrow-js and flechette native values).\nexport type {\n VgiTypeId,\n VgiDataType,\n VgiField,\n VgiSchema,\n VgiColumn,\n VgiColumnData,\n VgiBatch,\n VgiBackendInfo,\n TaggedUnion,\n} from \"./types.js\";\n\n// Backend-agnostic predicates.\nexport {\n TypeId,\n isNull,\n isInt,\n isFloat,\n isBinary,\n isUtf8,\n isBool,\n isDecimal,\n isDate,\n isTime,\n isTimestamp,\n isInterval,\n isList,\n isStruct,\n isUnion,\n isFixedSizeBinary,\n isFixedSizeList,\n isMap,\n isDuration,\n isDictionary,\n isBatch,\n} from \"./predicates.js\";\n\n// Active backend's surface (IPC, build, iterate, utilities).\nexport {\n backend,\n // batch utilities\n emptyBatch, batchFromRows, batchFromColumns, columnFromArray,\n iterRows, batchToScalarDict, batchToSecretDict, safeNumber, decodeDictValue,\n filterBatch, projectSchema, projectBatch,\n // canonical single-value read (backend-agnostic, lossless)\n readCanonicalValue,\n // IPC\n serializeSchema, deserializeSchema, serializeBatch, deserializeBatch,\n // Column statistics\n buildStatisticsBatch,\n} from \"#arrow-impl\";\n\nexport type { ColumnStatistics } from \"#arrow-impl\";\n\n// Type factories — exported from the TYPED facade layer (schema-types.ts) so\n// every factory carries a PRECISE nominal static descriptor (Date32Type,\n// TimestampType<'us'>, StructType<...>, …). Runtime values are identical to the\n// backend factories; the typed layer only refines the static return type, which\n// is what makes the rich/raw value mapping (RichValue/RawValue/ValueFor) and\n// the statically-typed define* author API work. Both backends report the same\n// static types from here.\nexport {\n schema, field,\n nullType, bool,\n int, int8, int16, int32, int64,\n uint8, uint16, uint32, uint64,\n float16, float32, float64,\n utf8, binary, fixedSizeBinary,\n decimal, decimal128, decimal256,\n date, dateDay, dateMillisecond,\n time, timeSecond, timeMillisecond, timeMicrosecond, timeNanosecond,\n timestamp, duration, interval,\n timestampSeconds, timestampMillis, timestampMicros, timestampNanos,\n durationSeconds, durationMillis, durationMicros, durationNanos,\n list, fixedSizeList, struct, map,\n dictionary,\n union, sparseUnion, denseUnion,\n TimeUnit, DateUnit, IntervalUnit, UnionMode,\n} from \"./schema-types.js\";\n\n// Precise nominal type descriptors (the static face of the factory returns).\nexport type {\n NullDescriptor,\n BoolType,\n IntType, Int8Type, Int16Type, Int32Type, Int64Type,\n Uint8Type, Uint16Type, Uint32Type, Uint64Type,\n FloatType, Utf8Type, LargeUtf8Type, BinaryType, LargeBinaryType,\n FixedSizeBinaryType, DecimalType,\n Date32Type, Date64Type, Time32Type, Time64Type,\n TimestampType, DurationType, IntervalType,\n ListType, FixedSizeListType, StructType, MapType, DictionaryType, UnionType,\n TypedField, TUnit,\n} from \"./codec/type-descriptors.js\";\n\n// Rich/raw value mapping.\nexport type { RichValue, RawValue, ValueFor, Repr } from \"./codec/repr.js\";\n\n// Codec registry (single value rich<->canonical<->raw converters for manual use).\nexport { codecFor } from \"./codec/registry.js\";\nexport type { Codec } from \"./codec/registry.js\";\n\n// Branded raw scalar types + validating constructors / unwrappers.\nexport type {\n Branded,\n Date32, Date64Ms,\n Time32S, Time32Ms, Time64Us, Time64Ns,\n TimestampSeconds, TimestampMillis, TimestampMicros, TimestampNanos,\n DurationSeconds, DurationMillis, DurationMicros, DurationNanos,\n UnscaledDecimal, Int64 as Int64Raw, Uint64 as Uint64Raw,\n} from \"./codec/branded.js\";\nexport {\n asDate32, asDate64Ms,\n asTime32S, asTime32Ms, asTime64Us, asTime64Ns,\n asTimestampSeconds, asTimestampMillis, asTimestampMicros, asTimestampNanos,\n asDurationSeconds, asDurationMillis, asDurationMicros, asDurationNanos,\n asUnscaledDecimal, asInt64, asUint64,\n fromBranded, fromBrandedNumber, fromBrandedBigInt,\n} from \"./codec/branded.js\";\n",
|
|
20
20
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Cloudflare Durable Object storage for VGI function state.\n//\n// Port of vgi-python's vgi/function_storage_cf_do.py. Talks the Cloudflare\n// Worker + Durable Object's unified state_* / queue_* protocol\n// (vgi-cloudflare-durable-object-storage/src/index.ts). Every request carries\n// the per-attach `shard_key` (set via forShard); destructive ops carry a fresh\n// 32-hex `attempt_id`. The DO is single-threaded SQLite, so ops are atomic.\n//\n// Usage:\n// Set `VGI_WORKER_SHARED_STORAGE=cloudflare-do` plus `VGI_CF_DO_URL`.\n// Optionally set `VGI_CF_DO_TOKEN` for bearer auth.\n\nimport type { FunctionStorage } from \"./storage.js\";\nimport { UnknownInvocationError } from \"./storage.js\";\n\n/** Minimal fetch signature satisfied by both the global `fetch` and a\n * Cloudflare service-binding Fetcher (`env.<BINDING>`). */\nexport type FetchLike = (\n input: string,\n init?: { method?: string; headers?: Record<string, string>; body?: string },\n) => Promise<Response>;\n\n// Namespaces under the unified state_* table for the legacy worker/queue\n// families the DO no longer has dedicated endpoints for.\nconst NS_WORKER = new TextEncoder().encode(\"worker\");\n\nexport class FunctionStorageCfDo implements FunctionStorage {\n private readonly _baseUrl: string;\n private readonly _token: string | null;\n /** Per-attach routing key (att-<hex uuid>); \"\" until pinned via forShard. */\n private readonly _shardKey: string;\n /** Fetch implementation. Defaults to the global `fetch`; pass a Cloudflare\n * service-binding Fetcher (env.<BINDING>) when the storage worker lives on\n * the same account/zone — a same-zone public-URL fetch is rejected (CF\n * error 1042), but a service binding routes worker-to-worker directly. */\n private readonly _fetch: FetchLike;\n\n constructor(opts: {\n url: string;\n token?: string | null;\n shardKey?: string;\n fetch?: FetchLike;\n }) {\n // Strip trailing slash so endpoint paths can be appended unconditionally.\n this._baseUrl = opts.url.replace(/\\/+$/, \"\");\n this._token = opts.token ?? null;\n this._shardKey = opts.shardKey ?? \"\";\n this._fetch = opts.fetch ?? ((input, init) => fetch(input as any, init));\n }\n\n /** Build an instance from environment variables. */\n static fromEnv(): FunctionStorageCfDo {\n const url = process.env.VGI_CF_DO_URL;\n if (!url) {\n throw new Error(\n \"VGI_CF_DO_URL environment variable is required when \" +\n \"VGI_WORKER_SHARED_STORAGE=cloudflare-do\",\n );\n }\n return new FunctionStorageCfDo({\n url,\n token: process.env.VGI_CF_DO_TOKEN || null,\n });\n }\n\n /**\n * Return a view of this backend pinned to one shard key, so callers can route\n * per logical ATTACH. Shares the URL/token; only the shard key differs.\n */\n forShard(shardKey: string): FunctionStorageCfDo {\n return new FunctionStorageCfDo({\n url: this._baseUrl,\n token: this._token,\n shardKey,\n fetch: this._fetch,\n });\n }\n\n // --- Worker state → ns=worker, key = int64(worker_id) ---\n\n async workerPut(executionId: Uint8Array, workerId: number, state: Uint8Array): Promise<void> {\n await this._statePutMany(executionId, NS_WORKER, [[int64Key(workerId), state]]);\n }\n\n async workerCollect(executionId: Uint8Array): Promise<Uint8Array[]> {\n const rows = await this._statePaged(\"state_drain\", executionId, NS_WORKER, newAttemptId());\n return rows.map(([, v]) => v);\n }\n\n async workerScan(executionId: Uint8Array): Promise<Array<[number, Uint8Array]>> {\n const rows = await this._statePaged(\"state_scan\", executionId, NS_WORKER, null);\n return rows.map(([k, v]) => [int64FromKey(k), v]);\n }\n\n // --- Work queue ---\n\n async queuePush(executionId: Uint8Array, items: Uint8Array[]): Promise<number> {\n const data = await this._post<{ count: number }>(\"queue_push\", {\n execution_id: bytesToB64(executionId),\n items: items.map(bytesToB64),\n attempt_id: newAttemptId(),\n });\n return Number(data.count);\n }\n\n async queuePop(executionId: Uint8Array): Promise<Uint8Array | null> {\n const data = await this._post<{ item: string | null }>(\"queue_pop\", {\n execution_id: bytesToB64(executionId),\n attempt_id: newAttemptId(),\n });\n return data.item ? b64ToBytes(data.item) : null;\n }\n\n async queueClear(executionId: Uint8Array): Promise<number> {\n const data = await this._post<{ cleared: number }>(\"queue_clear\", {\n execution_id: bytesToB64(executionId),\n attempt_id: newAttemptId(),\n });\n return Number(data.cleared);\n }\n\n // --- Namespaced key/value state ---\n\n async stateGet(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array): Promise<Uint8Array | null> {\n const data = await this._post<{ rows: Array<{ value: string } | null> }>(\"state_get_many\", {\n scope_id: bytesToB64(scopeId),\n ns: bytesToB64(ns),\n keys: [bytesToB64(key)],\n });\n const row = (data.rows ?? [])[0];\n return row ? b64ToBytes(row.value) : null;\n }\n\n async statePut(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, value: Uint8Array): Promise<void> {\n await this._statePutMany(scopeId, ns, [[key, value]]);\n }\n\n // --- Append-only log ---\n\n async stateAppend(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, item: Uint8Array): Promise<number> {\n const data = await this._post<{ ordinal: number }>(\"state_append\", {\n scope_id: bytesToB64(scopeId),\n ns: bytesToB64(ns),\n key: bytesToB64(key),\n item: bytesToB64(item),\n attempt_id: newAttemptId(),\n });\n return Number(data.ordinal);\n }\n\n async stateLogScan(\n scopeId: Uint8Array,\n ns: Uint8Array,\n key: Uint8Array,\n afterId: number = -1,\n limit: number | null = null,\n ): Promise<Array<[number, Uint8Array]>> {\n const body: Record<string, unknown> = {\n scope_id: bytesToB64(scopeId),\n ns: bytesToB64(ns),\n key: bytesToB64(key),\n after_id: afterId,\n };\n if (limit != null && limit > 0) body.limit = limit;\n const data = await this._post<{ rows: Array<{ id: number; value: string }> }>(\"state_log_scan\", body);\n return (data.rows ?? []).map((r) => [Number(r.id), b64ToBytes(r.value)]);\n }\n\n async executionClear(scopeId: Uint8Array): Promise<number> {\n const data = await this._post<{ deleted: number }>(\"execution_clear\", {\n scope_id: bytesToB64(scopeId),\n attempt_id: newAttemptId(),\n });\n return Number(data.deleted);\n }\n\n // --- unified state_* helpers ---\n\n private async _statePutMany(\n scopeId: Uint8Array,\n ns: Uint8Array,\n items: Array<[Uint8Array, Uint8Array]>,\n ): Promise<void> {\n await this._post(\"state_put_many\", {\n scope_id: bytesToB64(scopeId),\n ns: bytesToB64(ns),\n items: items.map(([k, v]) => ({ key: bytesToB64(k), value: bytesToB64(v) })),\n attempt_id: newAttemptId(),\n });\n }\n\n /** Drive state_scan / state_drain across pages. attemptId is null for scan. */\n private async _statePaged(\n endpoint: string,\n scopeId: Uint8Array,\n ns: Uint8Array,\n attemptId: string | null,\n ): Promise<Array<[Uint8Array, Uint8Array]>> {\n const out: Array<[Uint8Array, Uint8Array]> = [];\n let afterKey: string | undefined;\n for (;;) {\n const body: Record<string, unknown> = { scope_id: bytesToB64(scopeId), ns: bytesToB64(ns) };\n if (afterKey != null) body.after_key = afterKey;\n if (attemptId != null) body.attempt_id = attemptId;\n const data = await this._post<{ rows: Array<{ key: string; value: string }>; next_after?: string }>(\n endpoint,\n body,\n );\n for (const r of data.rows ?? []) out.push([b64ToBytes(r.key), b64ToBytes(r.value)]);\n if (!data.next_after) break;\n afterKey = data.next_after;\n }\n return out;\n }\n\n // --- HTTP plumbing ---\n\n private async _post<T = Record<string, unknown>>(\n endpoint: string,\n body: Record<string, unknown>,\n ): Promise<T> {\n const url = `${this._baseUrl}/${endpoint}`;\n const headers: Record<string, string> = { \"Content-Type\": \"application/json\" };\n if (this._token) headers[\"Authorization\"] = `Bearer ${this._token}`;\n // The Worker routes on shard_key (idFromName) and rejects requests without\n // one — always splice it in.\n const payload = JSON.stringify({ ...body, shard_key: this._shardKey });\n\n let lastErr: unknown;\n // One retry on transport-level failures, matching the python client.\n for (let attempt = 0; attempt < 2; attempt++) {\n let resp: Response;\n try {\n resp = await this._fetch(url, { method: \"POST\", headers, body: payload });\n } catch (err) {\n lastErr = err;\n continue;\n }\n\n let data: any;\n try {\n data = await resp.json();\n } catch {\n if (!resp.ok) {\n throw new Error(`CF DO storage error ${resp.status} on ${endpoint}: <non-json body>`);\n }\n return {} as T;\n }\n\n if (resp.status === 404 && data?.error === \"unknown_invocation\") {\n throw new UnknownInvocationError(\n data.message ??\n \"Invocation is not registered. Call queuePush first to register the invocation.\",\n );\n }\n if (resp.status === 401) {\n throw new Error(`Authentication failed: ${data?.error ?? \"unauthorized\"}`);\n }\n if (!resp.ok) {\n throw new Error(`CF DO storage error ${resp.status} on ${endpoint}: ${JSON.stringify(data)}`);\n }\n return data as T;\n }\n throw lastErr instanceof Error\n ? lastErr\n : new Error(`CF DO storage transport error on ${endpoint}: ${String(lastErr)}`);\n }\n}\n\n/** Fresh 32-char lowercase-hex idempotency token (the DO's attempt_id shape). */\nfunction newAttemptId(): string {\n const b = new Uint8Array(16);\n crypto.getRandomValues(b);\n let s = \"\";\n for (let i = 0; i < 16; i++) s += b[i].toString(16).padStart(2, \"0\");\n return s;\n}\n\n/** Encode an int64 worker/group id as an 8-byte big-endian state key. */\nfunction int64Key(v: number): Uint8Array {\n const b = new Uint8Array(8);\n new DataView(b.buffer).setBigInt64(0, BigInt(v), false);\n return b;\n}\n\nfunction int64FromKey(b: Uint8Array): number {\n if (b.length !== 8) return 0;\n return Number(new DataView(b.buffer, b.byteOffset, 8).getBigInt64(0, false));\n}\n\nfunction bytesToB64(buf: Uint8Array): string {\n let binary = \"\";\n for (let i = 0; i < buf.length; i++) binary += String.fromCharCode(buf[i]);\n return btoa(binary);\n}\n\nfunction b64ToBytes(b64: string): Uint8Array {\n const binary = atob(b64);\n const out = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) out[i] = binary.charCodeAt(i);\n return out;\n}\n",
|
|
21
21
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Storage for VGI function state.\n// Provides shared state across worker processes for distributed execution.\n// Port of vgi-python's vgi/function_storage.py.\n//\n// The interface is async so HTTP-backed implementations (Cloudflare DO,\n// Azure SQL, etc.) can use fetch/network drivers without sync hacks.\n// FunctionStorageSqlite wraps bun:sqlite's sync calls in resolved promises.\n\n// FunctionStorageSqlite is the only thing in this module that needs Bun + node:*\n// modules. Workers (Cloudflare workerd / browsers) should use\n// FunctionStorageCfDo (HTTP-backed) instead — they never reach this class.\n// We resolve all node:* and bun:* dependencies through indirect string\n// variables that esbuild can't trace statically, so workerd bundles cleanly\n// without nodejs_compat polyfills for paths we never run.\ntype Database = any;\nconst _BUN_SQLITE_MOD = \"bun:sqlite\";\nconst _NODE_OS_MOD = \"node:os\";\nconst _NODE_PATH_MOD = \"node:path\";\nconst _NODE_FS_MOD = \"node:fs\";\nlet _Database: any = null;\nfunction _req(): any {\n const req: any = (import.meta as any).require ?? (globalThis as any).require ?? null;\n if (!req) {\n throw new Error(\n \"FunctionStorageSqlite requires Node.js or Bun (bun:sqlite + node:os/path/fs). \" +\n \"Use FunctionStorageCfDo on non-Bun runtimes.\",\n );\n }\n return req;\n}\nfunction _loadDatabase(): any {\n if (_Database) return _Database;\n try {\n _Database = _req()(_BUN_SQLITE_MOD).Database;\n return _Database;\n } catch (e: any) {\n throw new Error(\n `FunctionStorageSqlite: failed to load bun:sqlite — ${e?.message ?? e}`,\n );\n }\n}\nfunction _loadNodeIo(): {\n homedir: () => string;\n platform: () => string;\n join: (...parts: string[]) => string;\n mkdirSync: (path: string, opts?: any) => void;\n} {\n const r = _req();\n return {\n homedir: r(_NODE_OS_MOD).homedir,\n platform: r(_NODE_OS_MOD).platform,\n join: r(_NODE_PATH_MOD).join,\n mkdirSync: r(_NODE_FS_MOD).mkdirSync,\n };\n}\n\n// ============================================================================\n// Errors\n// ============================================================================\n\nexport class UnknownInvocationError extends Error {\n constructor(message?: string | Uint8Array) {\n let text: string;\n if (message instanceof Uint8Array) {\n text =\n `Invocation ${hexEncode(message)} is not registered. ` +\n \"Call queuePush first to register the invocation.\";\n } else {\n text =\n message ??\n \"Invocation is not registered. Call queuePush first to register the invocation.\";\n }\n super(text);\n this.name = \"UnknownInvocationError\";\n }\n}\n\nfunction hexEncode(buf: Uint8Array): string {\n return Array.from(buf, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n// ============================================================================\n// FunctionStorage interface\n// ============================================================================\n\nexport interface FunctionStorage {\n workerPut(executionId: Uint8Array, workerId: number, state: Uint8Array): Promise<void>;\n workerCollect(executionId: Uint8Array): Promise<Uint8Array[]>;\n workerScan(executionId: Uint8Array): Promise<Array<[number, Uint8Array]>>;\n queuePush(executionId: Uint8Array, items: Uint8Array[]): Promise<number>;\n queuePop(executionId: Uint8Array): Promise<Uint8Array | null>;\n queueClear(executionId: Uint8Array): Promise<number>;\n // --- Namespaced key/value state (scoped by execution_id) ---\n stateGet(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array): Promise<Uint8Array | null>;\n statePut(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, value: Uint8Array): Promise<void>;\n // --- Append-only log (scoped by execution_id) ---\n stateAppend(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, item: Uint8Array): Promise<number>;\n stateLogScan(\n scopeId: Uint8Array,\n ns: Uint8Array,\n key: Uint8Array,\n afterId?: number,\n limit?: number | null,\n ): Promise<Array<[number, Uint8Array]>>;\n /** Wipe all state + log rows for a scope across every namespace. */\n executionClear(scopeId: Uint8Array): Promise<number>;\n /** Optional cleanup hook. Implementations holding a connection should release it here. */\n close?(): Promise<void> | void;\n}\n\n// FrameworkNS — namespaces the framework itself uses (mirrors Python's\n// FrameworkNS enum). User code picks its own arbitrary namespace bytes.\nexport const FrameworkNS = {\n BUFFERING_INIT: textBytes(\"_vgi/buffering_init\"),\n STREAMING_FINALIZE: textBytes(\"_vgi/streaming_finalize\"),\n} as const;\n\nfunction textBytes(s: string): Uint8Array {\n return new TextEncoder().encode(s);\n}\n\n/** Encode an int as 8-byte little-endian, matching Python's pack_int_key. */\nexport function packIntKey(i: number | bigint): Uint8Array {\n const buf = new ArrayBuffer(8);\n new DataView(buf).setBigInt64(0, BigInt(i), true);\n return new Uint8Array(buf);\n}\n\n// ============================================================================\n// FunctionStorageSqlite\n// ============================================================================\n\nfunction getDefaultDbPath(): string {\n // VGI_WORKER_SQLITE_PATH=\":memory:\" picks an in-process backend used by\n // single-process test fixtures (notably the HTTP server fixture) to avoid\n // per-op WAL fsync cost. Mirrors vgi-python's same env var.\n const override = process.env.VGI_WORKER_SQLITE_PATH;\n if (override) return override;\n const { homedir, platform, join, mkdirSync } = _loadNodeIo();\n const home = homedir();\n const stateDir =\n platform() === \"darwin\"\n ? join(home, \"Library\", \"Application Support\", \"vgi\")\n : join(home, \".local\", \"state\", \"vgi\");\n mkdirSync(stateDir, { recursive: true });\n return join(stateDir, \"vgi_storage.db\");\n}\n\n// Worker state rides the unified function_state table under a reserved\n// namespace, keyed by the worker/process id (8-byte big-endian) — exactly the\n// mapping the Cloudflare DO client uses, so both backends share one schema.\nconst NS_WORKER = new TextEncoder().encode(\"worker\");\n\n/** Encode an int64 worker id as an 8-byte big-endian state key. */\nfunction int64Key(v: number): Uint8Array {\n const b = new Uint8Array(8);\n new DataView(b.buffer).setBigInt64(0, BigInt(v), false);\n return b;\n}\n\nfunction int64FromKey(b: Uint8Array): number {\n if (b.length !== 8) return 0;\n return Number(new DataView(b.buffer, b.byteOffset, 8).getBigInt64(0, false));\n}\n\nexport class FunctionStorageSqlite implements FunctionStorage {\n readonly dbPath: string;\n private _db: Database;\n\n constructor(dbPath?: string) {\n this.dbPath = dbPath ?? getDefaultDbPath();\n // Persistent connection for the lifetime of this storage instance.\n // Bun is single-threaded, so one connection is the analogue of\n // Python's per-thread persistent connection. WAL still coordinates\n // writes across processes via file locking.\n const Db = _loadDatabase();\n this._db = new Db(this.dbPath);\n this._db.exec(\"PRAGMA journal_mode=WAL\");\n this._db.exec(\"PRAGMA synchronous=NORMAL\");\n this._db.exec(\"PRAGMA busy_timeout=30000\");\n this._db.exec(\"PRAGMA temp_store=MEMORY\");\n this._db.exec(\"PRAGMA cache_size=-65536\");\n this._ensureTables();\n }\n\n close(): void {\n this._db.close();\n }\n\n private _ensureTables(): void {\n const db = this._db;\n // Self-heal an older on-disk DB to the unified minimal schema. The local\n // SQLite tier carries none of the DO's HTTP idempotency machinery and no\n // created_at, so drop any table left over with those columns; all of this\n // is ephemeral in-progress state, so dropping + recreating is safe.\n for (const [table, staleCol] of [\n [\"function_state\", \"created_at\"],\n [\"function_state_log\", \"created_at\"],\n [\"work_queue\", \"created_at\"],\n ] as const) {\n const info = db.prepare(`PRAGMA table_info(${table})`).all() as Array<{ name: string }>;\n if (info.some((row) => row.name === staleCol)) {\n db.exec(`DROP TABLE IF EXISTS ${table}`);\n }\n }\n // Tables eliminated by the unified schema: worker collect now rides\n // function_state (ns=worker), and the queue carries no registration.\n for (const dead of [\"global_state_storage\", \"worker_state\", \"invocation_registry\", \"init_storage\"]) {\n db.exec(`DROP TABLE IF EXISTS ${dead}`);\n }\n\n // Unified schema — the same three tables every backend uses (the Durable\n // Object adds an HTTP-idempotency column layer on top).\n db.exec(`\n CREATE TABLE IF NOT EXISTS work_queue (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n execution_id BLOB NOT NULL,\n work_item BLOB NOT NULL\n )\n `);\n db.exec(`\n CREATE INDEX IF NOT EXISTS idx_work_queue_execution\n ON work_queue(execution_id, id)\n `);\n // Composite-key K/V over (scope_id, ns, key): the single home for\n // per-execution / per-transaction / per-group / per-worker state.\n db.exec(`\n CREATE TABLE IF NOT EXISTS function_state (\n scope_id BLOB NOT NULL,\n ns BLOB NOT NULL,\n key BLOB NOT NULL,\n value BLOB NOT NULL,\n PRIMARY KEY (scope_id, ns, key)\n )\n `);\n // Append-only log keyed by (scope, ns, key); the AUTOINCREMENT id is the\n // globally-monotonic scan cursor.\n db.exec(`\n CREATE TABLE IF NOT EXISTS function_state_log (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n scope_id BLOB NOT NULL,\n ns BLOB NOT NULL,\n key BLOB NOT NULL,\n value BLOB NOT NULL\n )\n `);\n db.exec(`\n CREATE INDEX IF NOT EXISTS idx_function_state_log_lookup\n ON function_state_log(scope_id, ns, key, id)\n `);\n }\n\n async stateGet(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array): Promise<Uint8Array | null> {\n const row = this._db\n .prepare(\"SELECT value FROM function_state WHERE scope_id = ? AND ns = ? AND key = ?\")\n .get(bufferArg(scopeId), bufferArg(ns), bufferArg(key)) as { value: Uint8Array } | null;\n return row ? new Uint8Array(row.value) : null;\n }\n\n async statePut(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, value: Uint8Array): Promise<void> {\n this._db\n .prepare(\n \"INSERT OR REPLACE INTO function_state (scope_id, ns, key, value) VALUES (?, ?, ?, ?)\",\n )\n .run(bufferArg(scopeId), bufferArg(ns), bufferArg(key), bufferArg(value));\n }\n\n async stateAppend(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, item: Uint8Array): Promise<number> {\n const res = this._db\n .prepare(\"INSERT INTO function_state_log (scope_id, ns, key, value) VALUES (?, ?, ?, ?)\")\n .run(bufferArg(scopeId), bufferArg(ns), bufferArg(key), bufferArg(item));\n return Number(res.lastInsertRowid);\n }\n\n async stateLogScan(\n scopeId: Uint8Array,\n ns: Uint8Array,\n key: Uint8Array,\n afterId: number = -1,\n limit: number | null = null,\n ): Promise<Array<[number, Uint8Array]>> {\n let sql =\n \"SELECT id, value FROM function_state_log \" +\n \"WHERE scope_id = ? AND ns = ? AND key = ? AND id > ? ORDER BY id ASC\";\n const args: any[] = [bufferArg(scopeId), bufferArg(ns), bufferArg(key), afterId];\n if (limit != null) {\n sql += \" LIMIT ?\";\n args.push(limit);\n }\n const rows = this._db.prepare(sql).all(...args) as Array<{ id: number; value: Uint8Array }>;\n return rows.map((r) => [Number(r.id), new Uint8Array(r.value)]);\n }\n\n async executionClear(scopeId: Uint8Array): Promise<number> {\n const eid = bufferArg(scopeId);\n let total = 0;\n total += (this._db.prepare(\"DELETE FROM function_state WHERE scope_id = ?\").run(eid).changes as number);\n total += (this._db.prepare(\"DELETE FROM function_state_log WHERE scope_id = ?\").run(eid).changes as number);\n return total;\n }\n\n // Worker state rides function_state under ns=worker, keyed by worker id.\n\n async workerPut(\n executionId: Uint8Array,\n workerId: number,\n state: Uint8Array\n ): Promise<void> {\n this._db\n .prepare(\n \"INSERT OR REPLACE INTO function_state (scope_id, ns, key, value) VALUES (?, ?, ?, ?)\"\n )\n .run(bufferArg(executionId), bufferArg(NS_WORKER), bufferArg(int64Key(workerId)), bufferArg(state));\n }\n\n async workerCollect(executionId: Uint8Array): Promise<Uint8Array[]> {\n const rows = this._db\n .prepare(\n \"DELETE FROM function_state WHERE scope_id = ? AND ns = ? RETURNING value\"\n )\n .all(bufferArg(executionId), bufferArg(NS_WORKER)) as Array<{ value: Uint8Array }>;\n return rows.map((row) => new Uint8Array(row.value));\n }\n\n async workerScan(executionId: Uint8Array): Promise<Array<[number, Uint8Array]>> {\n const rows = this._db\n .prepare(\n \"SELECT key, value FROM function_state WHERE scope_id = ? AND ns = ?\"\n )\n .all(bufferArg(executionId), bufferArg(NS_WORKER)) as Array<{\n key: Uint8Array;\n value: Uint8Array;\n }>;\n return rows.map((row) => [int64FromKey(new Uint8Array(row.key)), new Uint8Array(row.value)]);\n }\n\n async queuePush(executionId: Uint8Array, items: Uint8Array[]): Promise<number> {\n const eidBuf = bufferArg(executionId);\n this._db.exec(\"BEGIN\");\n try {\n const insert = this._db.prepare(\n \"INSERT INTO work_queue (execution_id, work_item) VALUES (?, ?)\"\n );\n for (const item of items) {\n insert.run(eidBuf, bufferArg(item));\n }\n this._db.exec(\"COMMIT\");\n } catch (e) {\n this._db.exec(\"ROLLBACK\");\n throw e;\n }\n return items.length;\n }\n\n async queuePop(executionId: Uint8Array): Promise<Uint8Array | null> {\n // No registration: an empty or never-pushed queue both return null,\n // matching the Durable Object.\n const row = this._db\n .prepare(\n \"DELETE FROM work_queue WHERE id = (\" +\n \" SELECT id FROM work_queue WHERE execution_id = ? ORDER BY id ASC LIMIT 1\" +\n \") RETURNING work_item\"\n )\n .get(bufferArg(executionId)) as { work_item: Uint8Array } | null;\n\n return row ? new Uint8Array(row.work_item) : null;\n }\n\n async queueClear(executionId: Uint8Array): Promise<number> {\n return this._db\n .prepare(\"DELETE FROM work_queue WHERE execution_id = ?\")\n .run(bufferArg(executionId)).changes;\n }\n}\n\n// ============================================================================\n// BoundStorage\n// ============================================================================\n\nexport class BoundStorage {\n private _base: FunctionStorage;\n private _executionId: Uint8Array;\n\n constructor(storage: FunctionStorage, executionId: Uint8Array) {\n this._base = storage;\n this._executionId = executionId;\n }\n\n put(state: Uint8Array): Promise<void> {\n return this._base.workerPut(this._executionId, process.pid, state);\n }\n\n collect(): Promise<Uint8Array[]> {\n return this._base.workerCollect(this._executionId);\n }\n\n workerScan(): Promise<Array<[number, Uint8Array]>> {\n return this._base.workerScan(this._executionId);\n }\n\n queuePush(items: Uint8Array[]): Promise<number> {\n return this._base.queuePush(this._executionId, items);\n }\n\n queuePop(): Promise<Uint8Array | null> {\n return this._base.queuePop(this._executionId);\n }\n\n queueClear(): Promise<number> {\n return this._base.queueClear(this._executionId);\n }\n\n stateGet(ns: Uint8Array, key: Uint8Array): Promise<Uint8Array | null> {\n return this._base.stateGet(this._executionId, ns, key);\n }\n\n statePut(ns: Uint8Array, key: Uint8Array, value: Uint8Array): Promise<void> {\n return this._base.statePut(this._executionId, ns, key, value);\n }\n\n stateAppend(ns: Uint8Array, key: Uint8Array, item: Uint8Array): Promise<number> {\n return this._base.stateAppend(this._executionId, ns, key, item);\n }\n\n stateLogScan(\n ns: Uint8Array,\n key: Uint8Array,\n afterId: number = -1,\n limit: number | null = null,\n ): Promise<Array<[number, Uint8Array]>> {\n return this._base.stateLogScan(this._executionId, ns, key, afterId, limit);\n }\n\n executionClear(): Promise<number> {\n return this._base.executionClear(this._executionId);\n }\n\n static packIntKey(i: number | bigint): Uint8Array {\n return packIntKey(i);\n }\n}\n\n// ============================================================================\n// Backend factory + lazy default storage\n// ============================================================================\n\n/**\n * Resolve the FunctionStorage backend from environment variables.\n *\n * Mirrors vgi-python's `_resolve_storage` in `vgi/function.py`.\n *\n * `VGI_WORKER_SHARED_STORAGE` selects the backend (default: `sqlite`):\n * - `memory` — `FunctionStorageSqlite` at `:memory:`. Process-local\n * with no cross-process coordination — single-process\n * deployments only. Ignores `VGI_WORKER_SQLITE_PATH`.\n * - `sqlite` — `FunctionStorageSqlite`. Honors `VGI_WORKER_SQLITE_PATH`\n * (including `:memory:`).\n * - `cloudflare-do` — `FunctionStorageCfDo`. Requires `VGI_CF_DO_URL`;\n * optional `VGI_CF_DO_TOKEN` for bearer auth.\n */\nexport function resolveStorageFromEnv(): FunctionStorage {\n const backend = (process.env.VGI_WORKER_SHARED_STORAGE ?? \"sqlite\").toLowerCase();\n if (backend === \"memory\") {\n return new FunctionStorageSqlite(\":memory:\");\n }\n if (backend === \"sqlite\") {\n return new FunctionStorageSqlite();\n }\n if (backend === \"cloudflare-do\") {\n // Lazy require to avoid loading the CF client when sqlite is in use.\n const { FunctionStorageCfDo } = require(\"./storage-cf-do.js\") as typeof import(\"./storage-cf-do.js\");\n return FunctionStorageCfDo.fromEnv();\n }\n throw new Error(\n `Unknown VGI_WORKER_SHARED_STORAGE backend: '${backend}'. Supported: 'memory', 'sqlite', 'cloudflare-do'.`,\n );\n}\n\n// Module-level proxy that lazy-resolves the configured backend on first use.\n// Importing this module no longer opens a SQLite connection — that happens\n// the first time anyone touches a storage method. Matches Python's\n// _DefaultStorageDescriptor lazy attribute pattern.\nlet _resolved: FunctionStorage | null = null;\nfunction getDefaultStorage(): FunctionStorage {\n if (_resolved == null) _resolved = resolveStorageFromEnv();\n return _resolved;\n}\n\n/**\n * Override the default backend used by the `storage` singleton. Call once at\n * worker startup to inject a pre-built backend that env-driven selection can't\n * construct — notably a `FunctionStorageCfDo` wired to a Cloudflare\n * service-binding Fetcher (the binding lives on `env`, not `process.env`, and a\n * same-zone public-URL fetch is rejected with CF error 1042). Takes precedence\n * over `VGI_WORKER_SHARED_STORAGE`.\n */\nexport function setStorage(impl: FunctionStorage): void {\n _resolved = impl;\n}\n\n/** Default FunctionStorage instance. Backend is selected via env on first access. */\nexport const storage: FunctionStorage = new Proxy(\n {} as FunctionStorage,\n {\n get(_t, prop, _r) {\n const inst = getDefaultStorage() as any;\n const v = inst[prop];\n return typeof v === \"function\" ? v.bind(inst) : v;\n },\n },\n);\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/** bun:sqlite needs Buffer for blob params */\nfunction bufferArg(data: Uint8Array): Buffer {\n return Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n}\n",
|
|
22
|
-
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Scalar function implementation.\n// Scalar functions receive columnar input and produce a single output column\n// with 1:1 row mapping.\n\nimport {\n type VgiSchema,\n type VgiField,\n type VgiBatch,\n type VgiDataType,\n type ValueFor,\n type Repr,\n schema as makeSchema,\n field,\n nullType,\n isNull,\n isBatch,\n} from \"../arrow/index.js\";\nimport type { OutputCollector, AuthContext } from \"@query-farm/vgi-rpc\";\nimport {\n FunctionType,\n FunctionStability,\n NullHandling,\n DEFAULT_MAX_WORKERS,\n} from \"../types.js\";\nimport { RowCountMismatchError } from \"../errors.js\";\nimport type {\n BindRequest,\n BindResponse,\n InitRequest,\n GlobalInitResponse,\n} from \"../protocol/types.js\";\nimport type {\n VgiFunction,\n FunctionMeta,\n StreamHandlers,\n FunctionExample,\n} from \"./types.js\";\nimport type { ArgumentSpec } from \"../arguments/argument-spec.js\";\nimport { argumentSpecsToSchema, constraintSpecFields } from \"../arguments/argument-spec.js\";\nimport { batchToScalarDict, batchToSecretDict, batchFromColumns, projectBatch, safeNumber } from \"../util/arrow/index.js\";\n\n// ============================================================================\n// Scalar Bind Parameters\n// ============================================================================\n\nexport interface ScalarBindParameters {\n /** Constant argument values (resolved at bind time) */\n constArgs: Record<string, any>;\n /** Schema of all arguments including columnar params */\n argumentsSchema: VgiSchema;\n /** Settings from DuckDB */\n settings: Record<string, any>;\n /** Secrets from DuckDB */\n secrets: Record<string, Record<string, any>>;\n /** Original bind request — exposes attach_opaque_data, transaction_opaque_data, function_type, etc. */\n bindCall: BindRequest;\n}\n\n// ============================================================================\n// Functional API\n// ============================================================================\n\n/** Ordered parameter definition for scalar functions. */\nexport interface ScalarParameterDef {\n name: string;\n type: VgiDataType;\n /** If true, this is a constant parameter (scalar value resolved at bind time). */\n const?: boolean;\n /** If true, this parameter accepts variable number of arguments. */\n varargs?: boolean;\n /** Human-readable per-argument description (surfaced as `vgi_doc`). */\n doc?: string;\n // Discovery-facing validation constraints (surfaced via\n // `vgi_function_arguments()`). All optional; see `ArgumentConstraints`.\n /** Closed set of allowed values (surfaced as `vgi_choices`). */\n choices?: readonly unknown[];\n /** Inclusive lower bound, `>=` (folded into `vgi_range`). */\n ge?: number;\n /** Inclusive upper bound, `<=` (folded into `vgi_range`). */\n le?: number;\n /** Exclusive lower bound, `>` (folded into `vgi_range`). */\n gt?: number;\n /** Exclusive upper bound, `<` (folded into `vgi_range`). */\n lt?: number;\n /** Regex the value must match (surfaced as `vgi_pattern`). */\n pattern?: string;\n /** Default value (surfaced as `vgi_default`, JSON-encoded). */\n default?: unknown;\n}\n\n/**\n * The typed compute row for a scalar function: one property per declared\n * columnar param, valued in the representation (`rich` / `raw`) selected by the\n * function's `repr`. (Provided as a convenience type for authors who build rows\n * out of the input batch.)\n */\nexport type ScalarComputeRow<\n P extends Record<string, VgiDataType>,\n M extends Repr,\n> = { [K in keyof P]: ValueFor<P[K], M> | null };\n\n/** A single output value for a scalar function under representation `M`. */\nexport type ScalarOutputValue<R extends VgiDataType, M extends Repr> =\n ValueFor<R, M> | null;\n\n/**\n * Accepted compute return shapes: an array (or iterable) of output values in\n * the declared representation, or a pre-built VgiBatch. The representation is\n * enforced statically — returning a `Date` under `repr: 'raw'` (which expects a\n * branded `Date32`/`Date64Ms`), or a branded value under `repr: 'rich'` (which\n * expects a `Date`), is a COMPILE error.\n */\nexport type ScalarComputeResult<R extends VgiDataType, M extends Repr> =\n | Array<ScalarOutputValue<R, M>>\n | Iterable<ScalarOutputValue<R, M>>\n | VgiBatch;\n\nexport interface ScalarFunctionConfig<\n P extends Record<string, VgiDataType> = Record<string, VgiDataType>,\n R extends VgiDataType = VgiDataType,\n M extends Repr = \"rich\",\n> {\n name: string;\n description?: string;\n /** Columnar params (receive Arrow arrays at process time) */\n params?: P;\n /** Constant params (receive scalar values resolved at bind time) */\n constParams?: Record<string, VgiDataType>;\n /**\n * Per-argument descriptions keyed by param name, surfaced as `vgi_doc` field\n * metadata (and via the extension's `vgi_function_arguments()`). Applies to\n * `params` and `constParams`; for the ordered `parameters` list use each\n * entry's `doc` field instead.\n */\n argDocs?: Record<string, string>;\n /**\n * Ordered parameter list. When provided, overrides `params` and `constParams`.\n * Use this when parameters need non-default ordering (e.g. const, param, const).\n */\n parameters?: ScalarParameterDef[];\n /** Output type (static) */\n returns?: R;\n /** Dynamic output type at bind time */\n outputType?: (params: ScalarBindParameters) => VgiDataType | Promise<VgiDataType>;\n /**\n * Value representation for compute I/O. `'rich'` (default) uses JS `Date` for\n * date32/date64 and plain number/bigint elsewhere. `'raw'` uses the branded\n * unit-carrying aliases (Date32, TimestampMicros, UnscaledDecimal, …). The\n * choice flows into compute()'s statically-checked return type and selects\n * the runtime converter used to build the output column.\n */\n repr?: M;\n /**\n * Process: receives the columnar input batch + const values, returns the\n * output column as an array/iterable of values (statically typed from\n * `returns` and `repr`) or a pre-built VgiBatch.\n */\n compute: (\n batch: VgiBatch,\n consts: Record<string, any>,\n info: {\n settings: Record<string, any>;\n secrets: Record<string, Record<string, any>>;\n auth: AuthContext;\n }\n // NoInfer pins R/M from `returns`/`repr` so the compute return type is\n // CHECKED against them rather than widening them to fit a wrong value.\n ) => ScalarComputeResult<NoInfer<R>, NoInfer<M>>;\n // Metadata\n stability?: FunctionStability;\n nullHandling?: NullHandling;\n examples?: FunctionExample[];\n categories?: string[];\n tags?: Record<string, string>;\n maxWorkers?: number;\n requiredSettings?: string[];\n requiredSecrets?: string[];\n}\n\nexport function defineScalarFunction<\n P extends Record<string, VgiDataType> = Record<string, VgiDataType>,\n R extends VgiDataType = VgiDataType,\n M extends Repr = \"rich\",\n>(config: ScalarFunctionConfig<P, R, M>): VgiFunction {\n const repr: Repr = config.repr ?? \"rich\";\n // Build argument specs\n const specs: ArgumentSpec[] = [];\n\n if (config.parameters) {\n // Ordered parameter list — supports arbitrary interleaving of const/non-const\n for (const [idx, p] of config.parameters.entries()) {\n const isAny = isNull(p.type);\n specs.push({\n name: p.name,\n position: idx,\n arrowType: isAny ? nullType() : p.type,\n isAnyType: isAny,\n isConst: p.const,\n isVarargs: p.varargs,\n doc: p.doc,\n ...constraintSpecFields(p),\n });\n }\n } else {\n // Legacy: params first, then constParams\n let posIdx = 0;\n\n if (config.params) {\n for (const [name, type] of Object.entries(config.params)) {\n const isAny = isNull(type);\n specs.push({\n name,\n position: posIdx++,\n arrowType: isAny ? nullType() : type,\n isAnyType: isAny,\n doc: config.argDocs?.[name],\n });\n }\n }\n\n if (config.constParams) {\n for (const [name, type] of Object.entries(config.constParams)) {\n specs.push({\n name,\n position: posIdx++,\n arrowType: type,\n isConst: true,\n doc: config.argDocs?.[name],\n });\n }\n }\n }\n\n const meta: FunctionMeta = {\n name: config.name,\n description: config.description,\n stability: config.stability,\n nullHandling: config.nullHandling,\n examples: config.examples,\n categories: config.categories,\n tags: config.tags,\n maxWorkers: config.maxWorkers,\n requiredSettings: config.requiredSettings,\n requiredSecrets: config.requiredSecrets,\n };\n\n // Default output schema for catalog registration.\n // Static returns: use the declared type.\n // Dynamic outputType: use null with vgi:any metadata (matches Python convention).\n const defaultOutputSchema = config.returns\n ? makeSchema([field(\"result\", config.returns, true)])\n : makeSchema([field(\"result\", nullType(), true, new Map([[\"vgi:any\", \"true\"]]))]);\n\n return {\n kind: \"scalar\",\n meta,\n argumentSpecs: specs,\n defaultOutputSchema,\n\n async bind(request: BindRequest): Promise<BindResponse> {\n const settings = batchToScalarDict(request.settings);\n const secrets = batchToSecretDict(request.secrets);\n\n // Extract constant args from the Arguments.\n // DuckDB only sends const arg values in Arguments (column args are in inputSchema).\n // Arguments are indexed sequentially (0, 1, ...) for const args only.\n const constArgs: Record<string, any> = {};\n {\n let constIdx = 0;\n for (const spec of specs) {\n if (spec.isConst) {\n constArgs[spec.name] = request.arguments.get(constIdx, undefined);\n constIdx++;\n }\n }\n }\n\n // Determine output type\n let outputType: VgiDataType;\n if (config.outputType) {\n outputType = await config.outputType({\n constArgs,\n argumentsSchema: request.input_schema ?? makeSchema([]),\n settings,\n secrets,\n bindCall: request,\n });\n } else if (config.returns) {\n outputType = config.returns;\n } else {\n throw new Error(\n `Scalar function '${config.name}' must specify either 'returns' or 'outputType'`\n );\n }\n\n const outputSchema = makeSchema([\n field(\"result\", outputType, true),\n ]);\n\n return { output_schema: outputSchema, opaque_data: null };\n },\n\n globalInit(request: InitRequest): GlobalInitResponse {\n const executionId = new Uint8Array(16);\n crypto.getRandomValues(executionId);\n return {\n max_workers: config.maxWorkers ?? DEFAULT_MAX_WORKERS,\n execution_id: executionId,\n opaque_data: null,\n };\n },\n\n createStreamHandlers(\n request: InitRequest,\n response: GlobalInitResponse\n ): StreamHandlers {\n const outputSchema = request.output_schema;\n const settings = batchToScalarDict(request.bind_call.settings);\n const secrets = batchToSecretDict(request.bind_call.secrets);\n\n // Extract const args (DuckDB only sends const values, indexed sequentially)\n const constArgs: Record<string, any> = {};\n let constIdx = 0;\n for (const spec of specs) {\n if (spec.isConst) {\n constArgs[spec.name] = request.bind_call.arguments.get(constIdx, undefined);\n constIdx++;\n }\n }\n\n const inputSchema = request.bind_call.input_schema;\n\n return {\n outputSchema,\n inputSchema: inputSchema ?? undefined,\n exchangeInit: () => ({}),\n exchangeFn: (state: any, input: VgiBatch, out: OutputCollector) => {\n const result = config.compute(input as any, constArgs, { settings, secrets, auth: out.auth });\n\n // Build output batch\n let outputBatch: VgiBatch;\n if (isBatch(result)) {\n outputBatch = result as VgiBatch;\n } else if (Array.isArray(result)) {\n // Array of values -> single column. Route through batchFromColumns\n // so complex types (Decimal, BigInt-backed Timestamp/Duration,\n // List, Map, Struct) are built via our buildColumnData. The `repr`\n // selects raw<->canonical (branded) vs rich<->canonical conversion.\n const fieldName = outputSchema.fields[0].name;\n outputBatch = batchFromColumns({ [fieldName]: result }, outputSchema, repr);\n } else {\n // User returned an Arrow Vector / typed-array-shaped column. Iterate\n // it into a JS array and re-route through batchFromColumns. Adds an\n // O(n) copy but matches both backends' contract.\n const fieldName = outputSchema.fields[0].name;\n outputBatch = batchFromColumns({ [fieldName]: [...(result as Iterable<any>)] }, outputSchema, repr);\n }\n\n // Validate row count\n if (outputBatch.numRows !== input.numRows) {\n throw new RowCountMismatchError(\n input.numRows,\n outputBatch.numRows\n );\n }\n\n out.emit(outputBatch);\n },\n };\n },\n };\n}\n",
|
|
22
|
+
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Scalar function implementation.\n// Scalar functions receive columnar input and produce a single output column\n// with 1:1 row mapping.\n\nimport {\n type VgiSchema,\n type VgiField,\n type VgiBatch,\n type VgiDataType,\n type ValueFor,\n type Repr,\n schema as makeSchema,\n field,\n nullType,\n isNull,\n isBatch,\n} from \"../arrow/index.js\";\nimport type { OutputCollector, AuthContext } from \"@query-farm/vgi-rpc\";\nimport {\n FunctionType,\n FunctionStability,\n NullHandling,\n DEFAULT_MAX_WORKERS,\n} from \"../types.js\";\nimport { RowCountMismatchError } from \"../errors.js\";\nimport type {\n BindRequest,\n BindResponse,\n InitRequest,\n GlobalInitResponse,\n} from \"../protocol/types.js\";\nimport type {\n VgiFunction,\n FunctionMeta,\n StreamHandlers,\n FunctionExample,\n} from \"./types.js\";\nimport type { ArgumentSpec } from \"../arguments/argument-spec.js\";\nimport {\n argumentSpecsToSchema,\n constraintSpecFields,\n validateConstConstraints,\n type ArgumentConstraints,\n} from \"../arguments/argument-spec.js\";\nimport { batchToScalarDict, batchToSecretDict, batchFromColumns, projectBatch, safeNumber } from \"../util/arrow/index.js\";\n\n// ============================================================================\n// Scalar Bind Parameters\n// ============================================================================\n\nexport interface ScalarBindParameters {\n /** Constant argument values (resolved at bind time) */\n constArgs: Record<string, any>;\n /** Schema of all arguments including columnar params */\n argumentsSchema: VgiSchema;\n /** Settings from DuckDB */\n settings: Record<string, any>;\n /** Secrets from DuckDB */\n secrets: Record<string, Record<string, any>>;\n /** Original bind request — exposes attach_opaque_data, transaction_opaque_data, function_type, etc. */\n bindCall: BindRequest;\n}\n\n// ============================================================================\n// Functional API\n// ============================================================================\n\n/** Ordered parameter definition for scalar functions. */\nexport interface ScalarParameterDef {\n name: string;\n type: VgiDataType;\n /** If true, this is a constant parameter (scalar value resolved at bind time). */\n const?: boolean;\n /** If true, this parameter accepts variable number of arguments. */\n varargs?: boolean;\n /** Human-readable per-argument description (surfaced as `vgi_doc`). */\n doc?: string;\n // Discovery-facing validation constraints (surfaced via\n // `vgi_function_arguments()`). All optional; see `ArgumentConstraints`.\n /** Closed set of allowed values (surfaced as `vgi_choices`). */\n choices?: readonly unknown[];\n /** Inclusive lower bound, `>=` (folded into `vgi_range`). */\n ge?: number;\n /** Inclusive upper bound, `<=` (folded into `vgi_range`). */\n le?: number;\n /** Exclusive lower bound, `>` (folded into `vgi_range`). */\n gt?: number;\n /** Exclusive upper bound, `<` (folded into `vgi_range`). */\n lt?: number;\n /** Regex the value must match (surfaced as `vgi_pattern`). */\n pattern?: string;\n /** Default value (surfaced as `vgi_default`, JSON-encoded). */\n default?: unknown;\n}\n\n/**\n * The typed compute row for a scalar function: one property per declared\n * columnar param, valued in the representation (`rich` / `raw`) selected by the\n * function's `repr`. (Provided as a convenience type for authors who build rows\n * out of the input batch.)\n */\nexport type ScalarComputeRow<\n P extends Record<string, VgiDataType>,\n M extends Repr,\n> = { [K in keyof P]: ValueFor<P[K], M> | null };\n\n/** A single output value for a scalar function under representation `M`. */\nexport type ScalarOutputValue<R extends VgiDataType, M extends Repr> =\n ValueFor<R, M> | null;\n\n/**\n * Accepted compute return shapes: an array (or iterable) of output values in\n * the declared representation, or a pre-built VgiBatch. The representation is\n * enforced statically — returning a `Date` under `repr: 'raw'` (which expects a\n * branded `Date32`/`Date64Ms`), or a branded value under `repr: 'rich'` (which\n * expects a `Date`), is a COMPILE error.\n */\nexport type ScalarComputeResult<R extends VgiDataType, M extends Repr> =\n | Array<ScalarOutputValue<R, M>>\n | Iterable<ScalarOutputValue<R, M>>\n | VgiBatch;\n\nexport interface ScalarFunctionConfig<\n P extends Record<string, VgiDataType> = Record<string, VgiDataType>,\n R extends VgiDataType = VgiDataType,\n M extends Repr = \"rich\",\n> {\n name: string;\n description?: string;\n /** Columnar params (receive Arrow arrays at process time) */\n params?: P;\n /** Constant params (receive scalar values resolved at bind time) */\n constParams?: Record<string, VgiDataType>;\n /**\n * Per-argument descriptions keyed by param name, surfaced as `vgi_doc` field\n * metadata (and via the extension's `vgi_function_arguments()`). Applies to\n * `params` and `constParams`; for the ordered `parameters` list use each\n * entry's `doc` field instead.\n */\n argDocs?: Record<string, string>;\n /**\n * Ordered parameter list. When provided, overrides `params` and `constParams`.\n * Use this when parameters need non-default ordering (e.g. const, param, const).\n */\n parameters?: ScalarParameterDef[];\n /** Output type (static) */\n returns?: R;\n /** Dynamic output type at bind time */\n outputType?: (params: ScalarBindParameters) => VgiDataType | Promise<VgiDataType>;\n /**\n * Value representation for compute I/O. `'rich'` (default) uses JS `Date` for\n * date32/date64 and plain number/bigint elsewhere. `'raw'` uses the branded\n * unit-carrying aliases (Date32, TimestampMicros, UnscaledDecimal, …). The\n * choice flows into compute()'s statically-checked return type and selects\n * the runtime converter used to build the output column.\n */\n repr?: M;\n /**\n * Process: receives the columnar input batch + const values, returns the\n * output column as an array/iterable of values (statically typed from\n * `returns` and `repr`) or a pre-built VgiBatch.\n */\n compute: (\n batch: VgiBatch,\n consts: Record<string, any>,\n info: {\n settings: Record<string, any>;\n secrets: Record<string, Record<string, any>>;\n auth: AuthContext;\n }\n // NoInfer pins R/M from `returns`/`repr` so the compute return type is\n // CHECKED against them rather than widening them to fit a wrong value.\n ) => ScalarComputeResult<NoInfer<R>, NoInfer<M>>;\n // Metadata\n stability?: FunctionStability;\n nullHandling?: NullHandling;\n examples?: FunctionExample[];\n categories?: string[];\n tags?: Record<string, string>;\n maxWorkers?: number;\n requiredSettings?: string[];\n requiredSecrets?: string[];\n}\n\nexport function defineScalarFunction<\n P extends Record<string, VgiDataType> = Record<string, VgiDataType>,\n R extends VgiDataType = VgiDataType,\n M extends Repr = \"rich\",\n>(config: ScalarFunctionConfig<P, R, M>): VgiFunction {\n const repr: Repr = config.repr ?? \"rich\";\n // Build argument specs\n const specs: ArgumentSpec[] = [];\n\n if (config.parameters) {\n // Ordered parameter list — supports arbitrary interleaving of const/non-const\n for (const [idx, p] of config.parameters.entries()) {\n const isAny = isNull(p.type);\n specs.push({\n name: p.name,\n position: idx,\n arrowType: isAny ? nullType() : p.type,\n isAnyType: isAny,\n isConst: p.const,\n isVarargs: p.varargs,\n doc: p.doc,\n ...constraintSpecFields(p),\n });\n }\n } else {\n // Legacy: params first, then constParams\n let posIdx = 0;\n\n if (config.params) {\n for (const [name, type] of Object.entries(config.params)) {\n const isAny = isNull(type);\n specs.push({\n name,\n position: posIdx++,\n arrowType: isAny ? nullType() : type,\n isAnyType: isAny,\n doc: config.argDocs?.[name],\n });\n }\n }\n\n if (config.constParams) {\n for (const [name, type] of Object.entries(config.constParams)) {\n specs.push({\n name,\n position: posIdx++,\n arrowType: type,\n isConst: true,\n doc: config.argDocs?.[name],\n });\n }\n }\n }\n\n // Raw const-arg constraints for bind-time enforcement, keyed by arg name.\n // Only the ordered `parameters` API carries constraints (the legacy\n // params/constParams path does not), so only its const params appear here.\n const constConstraints = new Map<string, ArgumentConstraints>();\n if (config.parameters) {\n for (const p of config.parameters) {\n if (\n p.const &&\n (p.choices !== undefined ||\n p.ge !== undefined ||\n p.le !== undefined ||\n p.gt !== undefined ||\n p.lt !== undefined ||\n p.pattern !== undefined)\n ) {\n constConstraints.set(p.name, p);\n }\n }\n }\n\n const meta: FunctionMeta = {\n name: config.name,\n description: config.description,\n stability: config.stability,\n nullHandling: config.nullHandling,\n examples: config.examples,\n categories: config.categories,\n tags: config.tags,\n maxWorkers: config.maxWorkers,\n requiredSettings: config.requiredSettings,\n requiredSecrets: config.requiredSecrets,\n };\n\n // Default output schema for catalog registration.\n // Static returns: use the declared type.\n // Dynamic outputType: use null with vgi:any metadata (matches Python convention).\n const defaultOutputSchema = config.returns\n ? makeSchema([field(\"result\", config.returns, true)])\n : makeSchema([field(\"result\", nullType(), true, new Map([[\"vgi:any\", \"true\"]]))]);\n\n return {\n kind: \"scalar\",\n meta,\n argumentSpecs: specs,\n defaultOutputSchema,\n\n async bind(request: BindRequest): Promise<BindResponse> {\n const settings = batchToScalarDict(request.settings);\n const secrets = batchToSecretDict(request.secrets);\n\n // Extract constant args from the Arguments.\n // DuckDB only sends const arg values in Arguments (column args are in inputSchema).\n // Arguments are indexed sequentially (0, 1, ...) for const args only.\n const constArgs: Record<string, any> = {};\n {\n let constIdx = 0;\n for (const spec of specs) {\n if (spec.isConst) {\n const value = request.arguments.get(constIdx, undefined);\n constArgs[spec.name] = value;\n // Enforce declared const-arg constraints at bind (choices/range/pattern).\n const constraints = constConstraints.get(spec.name);\n if (constraints) validateConstConstraints(spec.name, constraints, value);\n constIdx++;\n }\n }\n }\n\n // Determine output type\n let outputType: VgiDataType;\n if (config.outputType) {\n outputType = await config.outputType({\n constArgs,\n argumentsSchema: request.input_schema ?? makeSchema([]),\n settings,\n secrets,\n bindCall: request,\n });\n } else if (config.returns) {\n outputType = config.returns;\n } else {\n throw new Error(\n `Scalar function '${config.name}' must specify either 'returns' or 'outputType'`\n );\n }\n\n const outputSchema = makeSchema([\n field(\"result\", outputType, true),\n ]);\n\n return { output_schema: outputSchema, opaque_data: null };\n },\n\n globalInit(request: InitRequest): GlobalInitResponse {\n const executionId = new Uint8Array(16);\n crypto.getRandomValues(executionId);\n return {\n max_workers: config.maxWorkers ?? DEFAULT_MAX_WORKERS,\n execution_id: executionId,\n opaque_data: null,\n };\n },\n\n createStreamHandlers(\n request: InitRequest,\n response: GlobalInitResponse\n ): StreamHandlers {\n const outputSchema = request.output_schema;\n const settings = batchToScalarDict(request.bind_call.settings);\n const secrets = batchToSecretDict(request.bind_call.secrets);\n\n // Extract const args (DuckDB only sends const values, indexed sequentially)\n const constArgs: Record<string, any> = {};\n let constIdx = 0;\n for (const spec of specs) {\n if (spec.isConst) {\n constArgs[spec.name] = request.bind_call.arguments.get(constIdx, undefined);\n constIdx++;\n }\n }\n\n const inputSchema = request.bind_call.input_schema;\n\n return {\n outputSchema,\n inputSchema: inputSchema ?? undefined,\n exchangeInit: () => ({}),\n exchangeFn: (state: any, input: VgiBatch, out: OutputCollector) => {\n const result = config.compute(input as any, constArgs, { settings, secrets, auth: out.auth });\n\n // Build output batch\n let outputBatch: VgiBatch;\n if (isBatch(result)) {\n outputBatch = result as VgiBatch;\n } else if (Array.isArray(result)) {\n // Array of values -> single column. Route through batchFromColumns\n // so complex types (Decimal, BigInt-backed Timestamp/Duration,\n // List, Map, Struct) are built via our buildColumnData. The `repr`\n // selects raw<->canonical (branded) vs rich<->canonical conversion.\n const fieldName = outputSchema.fields[0].name;\n outputBatch = batchFromColumns({ [fieldName]: result }, outputSchema, repr);\n } else {\n // User returned an Arrow Vector / typed-array-shaped column. Iterate\n // it into a JS array and re-route through batchFromColumns. Adds an\n // O(n) copy but matches both backends' contract.\n const fieldName = outputSchema.fields[0].name;\n outputBatch = batchFromColumns({ [fieldName]: [...(result as Iterable<any>)] }, outputSchema, repr);\n }\n\n // Validate row count\n if (outputBatch.numRows !== input.numRows) {\n throw new RowCountMismatchError(\n input.numRows,\n outputBatch.numRows\n );\n }\n\n out.emit(outputBatch);\n },\n };\n },\n };\n}\n",
|
|
23
23
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// VGI core types - enums and constants matching Python wire format exactly.\n\nexport enum FunctionType {\n SCALAR = \"scalar\",\n TABLE = \"table\",\n AGGREGATE = \"aggregate\",\n}\n\nexport enum FunctionStability {\n CONSISTENT = \"CONSISTENT\",\n VOLATILE = \"VOLATILE\",\n CONSISTENT_WITHIN_QUERY = \"CONSISTENT_WITHIN_QUERY\",\n}\n\nexport enum NullHandling {\n DEFAULT = \"DEFAULT\",\n SPECIAL = \"SPECIAL\",\n}\n\nexport enum OrderPreservation {\n /** Output rows are in same order as input rows (DuckDB INSERTION_ORDER). */\n PRESERVES_ORDER = \"PRESERVES_ORDER\",\n /** Output order is undefined; may be reordered (DuckDB NO_ORDER). */\n NO_ORDER_GUARANTEE = \"NO_ORDER_GUARANTEE\",\n /** Output is in a fixed mandatory order; DuckDB serialises the pipeline\n * (single worker) to preserve it (DuckDB FIXED_ORDER). */\n FIXED_ORDER = \"FIXED_ORDER\",\n}\n\nexport enum OrderDependence {\n ORDER_DEPENDENT = \"ORDER_DEPENDENT\",\n NOT_ORDER_DEPENDENT = \"NOT_ORDER_DEPENDENT\",\n}\n\nexport enum DistinctDependence {\n DISTINCT_DEPENDENT = \"DISTINCT_DEPENDENT\",\n NOT_DISTINCT_DEPENDENT = \"NOT_DISTINCT_DEPENDENT\",\n}\n\nexport enum TableInOutPhase {\n INPUT = \"INPUT\",\n FINALIZE = \"FINALIZE\",\n // Sink+Source (TableBufferingFunction) init phases. TABLE_BUFFERING is the\n // sink-side init (persist init metadata so any pool worker can serve\n // process/combine); TABLE_BUFFERING_FINALIZE is the per-finalize_state_id\n // Source-stream init.\n TABLE_BUFFERING = \"TABLE_BUFFERING\",\n TABLE_BUFFERING_FINALIZE = \"TABLE_BUFFERING_FINALIZE\",\n}\n\n// Arrow schema metadata keys (must match Python exactly - bytes in Python, strings in TS)\nexport const VGI_ARG_KEY = \"vgi_arg\";\nexport const VGI_ARG_NAMED = \"named\";\nexport const VGI_TYPE_KEY = \"vgi_type\";\nexport const VGI_TYPE_TABLE = \"table\";\nexport const VGI_TYPE_ANY = \"any\";\nexport const VGI_VARARGS_KEY = \"vgi_varargs\";\nexport const VGI_VARARGS_TRUE = \"true\";\nexport const VGI_CONST_KEY = \"vgi_const\";\nexport const VGI_CONST_TRUE = \"true\";\n// Per-argument description (UTF-8; presence-only). `vgi_doc_*` prefix reserved.\nexport const VGI_DOC_KEY = \"vgi_doc\";\n\n// Per-argument constraint metadata for agent discovery. All presence-only\n// (omitted when absent) and value-encoded as UTF-8 so the surfaced column type\n// stays uniform regardless of the arg's value type:\n// vgi_default — JSON scalar (the arg's default value; optional args only)\n// vgi_choices — JSON array (the closed set of allowed values)\n// vgi_range — interval notation built from ge/le/gt/lt (e.g. \"[0, 100]\",\n// \"(0, +inf)\", \"[1, 10)\"); a discovery surface, not raw bounds\n// vgi_pattern — raw regex the value must match (open set)\n// Kept byte-for-byte in sync with the C++ reader and the Python/other SDKs.\nexport const VGI_DEFAULT_KEY = \"vgi_default\";\nexport const VGI_CHOICES_KEY = \"vgi_choices\";\nexport const VGI_RANGE_KEY = \"vgi_range\";\nexport const VGI_PATTERN_KEY = \"vgi_pattern\";\n\nexport interface TableCardinality {\n estimate: number | null;\n max: number | null;\n}\n\n// Default max workers (matches Python DEFAULT_MAX_WORKERS = 99999)\nexport const DEFAULT_MAX_WORKERS = 99999;\n",
|
|
24
24
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// VGI-specific error classes.\n\nexport class VgiError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"VgiError\";\n }\n}\n\nexport class RowCountMismatchError extends VgiError {\n constructor(expected: number, actual: number) {\n super(\n `Scalar function output row count (${actual}) does not match ` +\n `input row count (${expected})`\n );\n this.name = \"RowCountMismatchError\";\n }\n}\n\nexport class FunctionNotFoundError extends VgiError {\n constructor(name: string, available?: string[]) {\n super(`Unknown function '${name}'`);\n this.name = \"FunctionNotFoundError\";\n }\n}\n\nexport class CatalogReadOnlyError extends VgiError {\n constructor(operation: string) {\n super(`catalog is read-only: ${operation} is not supported`);\n this.name = \"CatalogReadOnlyError\";\n }\n}\n\nexport class CatalogNotFoundError extends VgiError {\n constructor(entity: string, name: string) {\n super(`${entity} '${name}' not found`);\n this.name = \"CatalogNotFoundError\";\n }\n}\n\nexport class CatalogAlreadyExistsError extends VgiError {\n constructor(entity: string, name: string) {\n super(`${entity} '${name}' already exists`);\n this.name = \"CatalogAlreadyExistsError\";\n }\n}\n\nexport class ArgumentValidationError extends VgiError {\n constructor(message: string) {\n super(message);\n this.name = \"ArgumentValidationError\";\n }\n}\n\nexport class NoCatalogError extends VgiError {\n constructor() {\n super(\"No catalog is configured for this worker\");\n this.name = \"NoCatalogError\";\n }\n}\n",
|
|
25
|
-
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// ArgumentSpec: converts function argument definitions to Arrow schema with VGI metadata keys.\n// Must produce byte-identical schemas to Python's argument_specs_to_schema().\n\nimport { type VgiSchema, schema as schema_, type VgiField, field as field_, type VgiDataType, nullType, deserializeBatch } from \"../arrow/index.js\";\nimport {\n VGI_ARG_KEY,\n VGI_ARG_NAMED,\n VGI_TYPE_KEY,\n VGI_TYPE_TABLE,\n VGI_TYPE_ANY,\n VGI_VARARGS_KEY,\n VGI_VARARGS_TRUE,\n VGI_CONST_KEY,\n VGI_CONST_TRUE,\n VGI_DOC_KEY,\n VGI_DEFAULT_KEY,\n VGI_CHOICES_KEY,\n VGI_RANGE_KEY,\n VGI_PATTERN_KEY,\n} from \"../types.js\";\n\nexport interface ArgumentSpec {\n name: string;\n position: number | string;\n arrowType: VgiDataType;\n isTableInput?: boolean;\n isAnyType?: boolean;\n isVarargs?: boolean;\n isConst?: boolean;\n doc?: string;\n /**\n * Discovery-facing constraint metadata, pre-encoded to their surfaced UTF-8\n * forms (presence-only — `undefined` means the constraint is absent and the\n * corresponding field-metadata key is omitted entirely). Mirrors Python's\n * `ArgumentSpec.default_json` / `choices_json` / `range_notation` / `pattern`\n * so `argumentSpecsToSchema`/`schemaToArgumentSpecs` round-trip symmetrically.\n */\n defaultJson?: string;\n choicesJson?: string;\n rangeNotation?: string;\n pattern?: string;\n}\n\n/**\n * Raw per-argument constraint declarations, as authored on a function's\n * argument descriptor. Encoded into the pre-computed {@link ArgumentSpec}\n * constraint fields via {@link constraintSpecFields}.\n */\nexport interface ArgumentConstraints {\n /** Closed set of allowed values (JSON-encoded into `vgi_choices`). */\n choices?: readonly unknown[];\n /** Inclusive lower bound (`>=`). */\n ge?: number;\n /** Inclusive upper bound (`<=`). */\n le?: number;\n /** Exclusive lower bound (`>`). */\n gt?: number;\n /** Exclusive upper bound (`<`). */\n lt?: number;\n /** Regex the value must match (surfaced as `vgi_pattern`, as-is). */\n pattern?: string;\n /** Default value (JSON-encoded into `vgi_default`); optional args only. */\n default?: unknown;\n}\n\n/** `JSON.stringify`, falling back to the value's string form when unserializable. */\nfunction safeJson(value: unknown): string {\n try {\n const encoded = JSON.stringify(value);\n // JSON.stringify returns undefined for functions/symbols/undefined.\n if (encoded === undefined) {\n return JSON.stringify(String(value));\n }\n return encoded;\n } catch {\n return JSON.stringify(String(value));\n }\n}\n\n/**\n * Build interval notation from an argument's numeric bounds.\n *\n * Inclusive bounds (`ge`/`le`) render as square brackets, exclusive bounds\n * (`gt`/`lt`) as parentheses, and an open side as `-inf`/`+inf`. Returns\n * `undefined` when the argument has no numeric bound at all.\n *\n * Examples: `ge=0,le=10` -> `\"[0, 10]\"`; `gt=0` -> `\"(0, +inf)\"`;\n * `ge=1,lt=10` -> `\"[1, 10)\"`.\n */\nexport function formatRange(\n ge?: number,\n le?: number,\n gt?: number,\n lt?: number,\n): string | undefined {\n if (ge === undefined && le === undefined && gt === undefined && lt === undefined) {\n return undefined;\n }\n let low: string;\n if (gt !== undefined) {\n low = `(${gt}`;\n } else if (ge !== undefined) {\n low = `[${ge}`;\n } else {\n low = \"(-inf\";\n }\n let high: string;\n if (lt !== undefined) {\n high = `${lt})`;\n } else if (le !== undefined) {\n high = `${le}]`;\n } else {\n high = \"+inf)\";\n }\n return `${low}, ${high}`;\n}\n\n/**\n * Encode raw {@link ArgumentConstraints} into the pre-computed constraint\n * fields of an {@link ArgumentSpec} (presence-only — absent constraints yield\n * no field). Mirrors Python's `_constraint_kwargs`.\n */\nexport function constraintSpecFields(\n constraints: ArgumentConstraints | undefined,\n): Pick<ArgumentSpec, \"defaultJson\" | \"choicesJson\" | \"rangeNotation\" | \"pattern\"> {\n const fields: Pick<\n ArgumentSpec,\n \"defaultJson\" | \"choicesJson\" | \"rangeNotation\" | \"pattern\"\n > = {};\n if (constraints === undefined) return fields;\n\n if (\"default\" in constraints && constraints.default !== undefined) {\n fields.defaultJson = safeJson(constraints.default);\n }\n if (constraints.choices !== undefined) {\n fields.choicesJson = safeJson([...constraints.choices]);\n }\n const range = formatRange(\n constraints.ge,\n constraints.le,\n constraints.gt,\n constraints.lt,\n );\n if (range !== undefined) {\n fields.rangeNotation = range;\n }\n if (constraints.pattern !== undefined) {\n fields.pattern = constraints.pattern;\n }\n return fields;\n}\n\nfunction argumentSpecSortKey(spec: ArgumentSpec): [number, number | string] {\n if (typeof spec.position === \"number\") {\n return [0, spec.position];\n }\n return [1, spec.position];\n}\n\n/**\n * Convert ArgumentSpecs to an Arrow Schema with VGI metadata keys.\n * Positional arguments come first (in order), named arguments follow.\n */\nexport function argumentSpecsToSchema(specs: ArgumentSpec[]): VgiSchema {\n const sorted = [...specs].sort((a, b) => {\n const ka = argumentSpecSortKey(a);\n const kb = argumentSpecSortKey(b);\n if (ka[0] !== kb[0]) return ka[0] - kb[0];\n if (typeof ka[1] === \"number\" && typeof kb[1] === \"number\") {\n return ka[1] - kb[1];\n }\n return String(ka[1]).localeCompare(String(kb[1]));\n });\n\n const fields: VgiField[] = [];\n for (const spec of sorted) {\n const metadata: Map<string, string> = new Map();\n\n if (typeof spec.position === \"string\") {\n metadata.set(VGI_ARG_KEY, VGI_ARG_NAMED);\n }\n\n if (spec.isTableInput) {\n metadata.set(VGI_TYPE_KEY, VGI_TYPE_TABLE);\n } else if (spec.isAnyType) {\n metadata.set(VGI_TYPE_KEY, VGI_TYPE_ANY);\n }\n\n if (spec.isVarargs) {\n metadata.set(VGI_VARARGS_KEY, VGI_VARARGS_TRUE);\n }\n\n if (spec.isConst) {\n metadata.set(VGI_CONST_KEY, VGI_CONST_TRUE);\n }\n\n // Per-argument description (UTF-8; presence-only — omit when empty).\n if (spec.doc) {\n metadata.set(VGI_DOC_KEY, spec.doc);\n }\n\n // Per-argument constraint metadata (presence-only; already value-encoded).\n if (spec.defaultJson !== undefined) {\n metadata.set(VGI_DEFAULT_KEY, spec.defaultJson);\n }\n if (spec.choicesJson !== undefined) {\n metadata.set(VGI_CHOICES_KEY, spec.choicesJson);\n }\n if (spec.rangeNotation !== undefined) {\n metadata.set(VGI_RANGE_KEY, spec.rangeNotation);\n }\n if (spec.pattern !== undefined) {\n metadata.set(VGI_PATTERN_KEY, spec.pattern);\n }\n\n const field = field_(\n spec.name,\n spec.arrowType,\n true,\n metadata.size > 0 ? metadata : undefined\n );\n fields.push(field);\n }\n\n return schema_(fields);\n}\n\n// =============================================================================\n// Macro Argument Schemas\n// =============================================================================\n\n/**\n * Build a macro `arguments_schema` describing macro parameters.\n *\n * Mirrors the function `arguments_schema` mechanism: one Arrow field per macro\n * parameter, in `parameters` order, each nullable. The per-parameter\n * description is carried via the same `vgi_doc` field-metadata key functions use\n * (UTF-8, presence-only — the key is omitted entirely when there is no doc). A\n * parameter's field type is the type of its default value when one is known\n * (decoded from `parameterDefaultValues`, a one-row RecordBatch serialized as\n * IPC bytes), else `nullType()`.\n *\n * @param parameters Ordered list of macro parameter names.\n * @param parameterDefaultValues Optional one-row RecordBatch (IPC bytes) whose\n * columns are parameter names with typed default values; used to infer each\n * parameter's field type.\n * @param parameterDocs Optional mapping of parameter name to description. Empty\n * or missing descriptions yield no `vgi_doc` metadata on the field.\n * @returns Arrow schema with one nullable field per parameter, in order.\n */\nexport function macroArgumentsSchema(\n parameters: string[],\n parameterDefaultValues?: Uint8Array | null,\n parameterDocs?: Record<string, string>,\n): VgiSchema {\n const docs = parameterDocs ?? {};\n\n // Map parameter name -> Arrow type from the typed default values, if any.\n const defaultTypes: Map<string, VgiDataType> = new Map();\n if (parameterDefaultValues && parameterDefaultValues.length > 0) {\n const batch = deserializeBatch(parameterDefaultValues);\n for (const f of batch.schema.fields) {\n defaultTypes.set(f.name, f.type);\n }\n }\n\n const fields: VgiField[] = [];\n for (const name of parameters) {\n const metadata: Map<string, string> = new Map();\n const doc = docs[name];\n if (doc) {\n metadata.set(VGI_DOC_KEY, doc);\n }\n const fieldType = defaultTypes.get(name) ?? nullType();\n fields.push(field_(name, fieldType, true, metadata.size > 0 ? metadata : undefined));\n }\n\n return schema_(fields);\n}\n\n/**\n * Extract per-parameter descriptions from a macro `arguments_schema`.\n *\n * Inverse of {@link macroArgumentsSchema}'s `vgi_doc` handling: reads the\n * `vgi_doc` field metadata (UTF-8) for each field. Fields without the key\n * (undocumented) are omitted from the result.\n *\n * @param schema A macro `arguments_schema` (one field per parameter).\n * @returns Mapping of parameter name to description, for documented parameters only.\n */\nexport function macroParameterDocsFromSchema(schema: VgiSchema): Record<string, string> {\n const docs: Record<string, string> = {};\n for (const field of schema.fields) {\n const doc = field.metadata.get(VGI_DOC_KEY);\n if (doc) {\n docs[field.name] = doc;\n }\n }\n return docs;\n}\n\n/**\n * Convert an Arrow Schema back to ArgumentSpecs.\n */\nexport function schemaToArgumentSpecs(schema: VgiSchema): ArgumentSpec[] {\n const specs: ArgumentSpec[] = [];\n let positionIndex = 0;\n\n for (const field of schema.fields) {\n const metadata = field.metadata;\n\n const isNamed = metadata.get(VGI_ARG_KEY) === VGI_ARG_NAMED;\n const position: number | string = isNamed\n ? field.name\n : positionIndex++;\n\n const vgiType = metadata.get(VGI_TYPE_KEY);\n const isTableInput = vgiType === VGI_TYPE_TABLE;\n const isAnyType = vgiType === VGI_TYPE_ANY;\n const isVarargs = metadata.get(VGI_VARARGS_KEY) === VGI_VARARGS_TRUE;\n const isConst = metadata.get(VGI_CONST_KEY) === VGI_CONST_TRUE;\n const doc = metadata.get(VGI_DOC_KEY) ?? \"\";\n\n // Per-argument constraint metadata (absent key -> undefined).\n const defaultJson = metadata.get(VGI_DEFAULT_KEY);\n const choicesJson = metadata.get(VGI_CHOICES_KEY);\n const rangeNotation = metadata.get(VGI_RANGE_KEY);\n const pattern = metadata.get(VGI_PATTERN_KEY);\n\n specs.push({\n name: field.name,\n position,\n arrowType: field.type,\n isTableInput,\n isAnyType,\n isVarargs,\n isConst,\n doc,\n defaultJson,\n choicesJson,\n rangeNotation,\n pattern,\n });\n }\n\n return specs;\n}\n",
|
|
25
|
+
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// ArgumentSpec: converts function argument definitions to Arrow schema with VGI metadata keys.\n// Must produce byte-identical schemas to Python's argument_specs_to_schema().\n\nimport { type VgiSchema, schema as schema_, type VgiField, field as field_, type VgiDataType, nullType, deserializeBatch } from \"../arrow/index.js\";\nimport {\n VGI_ARG_KEY,\n VGI_ARG_NAMED,\n VGI_TYPE_KEY,\n VGI_TYPE_TABLE,\n VGI_TYPE_ANY,\n VGI_VARARGS_KEY,\n VGI_VARARGS_TRUE,\n VGI_CONST_KEY,\n VGI_CONST_TRUE,\n VGI_DOC_KEY,\n VGI_DEFAULT_KEY,\n VGI_CHOICES_KEY,\n VGI_RANGE_KEY,\n VGI_PATTERN_KEY,\n} from \"../types.js\";\nimport { ArgumentValidationError } from \"../errors.js\";\n\nexport interface ArgumentSpec {\n name: string;\n position: number | string;\n arrowType: VgiDataType;\n isTableInput?: boolean;\n isAnyType?: boolean;\n isVarargs?: boolean;\n isConst?: boolean;\n doc?: string;\n /**\n * Discovery-facing constraint metadata, pre-encoded to their surfaced UTF-8\n * forms (presence-only — `undefined` means the constraint is absent and the\n * corresponding field-metadata key is omitted entirely). Mirrors Python's\n * `ArgumentSpec.default_json` / `choices_json` / `range_notation` / `pattern`\n * so `argumentSpecsToSchema`/`schemaToArgumentSpecs` round-trip symmetrically.\n */\n defaultJson?: string;\n choicesJson?: string;\n rangeNotation?: string;\n pattern?: string;\n}\n\n/**\n * Raw per-argument constraint declarations, as authored on a function's\n * argument descriptor. Encoded into the pre-computed {@link ArgumentSpec}\n * constraint fields via {@link constraintSpecFields}.\n */\nexport interface ArgumentConstraints {\n /** Closed set of allowed values (JSON-encoded into `vgi_choices`). */\n choices?: readonly unknown[];\n /** Inclusive lower bound (`>=`). */\n ge?: number;\n /** Inclusive upper bound (`<=`). */\n le?: number;\n /** Exclusive lower bound (`>`). */\n gt?: number;\n /** Exclusive upper bound (`<`). */\n lt?: number;\n /** Regex the value must match (surfaced as `vgi_pattern`, as-is). */\n pattern?: string;\n /** Default value (JSON-encoded into `vgi_default`); optional args only. */\n default?: unknown;\n}\n\n/** `JSON.stringify`, falling back to the value's string form when unserializable. */\nfunction safeJson(value: unknown): string {\n try {\n const encoded = JSON.stringify(value);\n // JSON.stringify returns undefined for functions/symbols/undefined.\n if (encoded === undefined) {\n return JSON.stringify(String(value));\n }\n return encoded;\n } catch {\n return JSON.stringify(String(value));\n }\n}\n\n/**\n * Build interval notation from an argument's numeric bounds.\n *\n * Inclusive bounds (`ge`/`le`) render as square brackets, exclusive bounds\n * (`gt`/`lt`) as parentheses, and an open side as `-inf`/`+inf`. Returns\n * `undefined` when the argument has no numeric bound at all.\n *\n * Examples: `ge=0,le=10` -> `\"[0, 10]\"`; `gt=0` -> `\"(0, +inf)\"`;\n * `ge=1,lt=10` -> `\"[1, 10)\"`.\n */\nexport function formatRange(\n ge?: number,\n le?: number,\n gt?: number,\n lt?: number,\n): string | undefined {\n if (ge === undefined && le === undefined && gt === undefined && lt === undefined) {\n return undefined;\n }\n let low: string;\n if (gt !== undefined) {\n low = `(${gt}`;\n } else if (ge !== undefined) {\n low = `[${ge}`;\n } else {\n low = \"(-inf\";\n }\n let high: string;\n if (lt !== undefined) {\n high = `${lt})`;\n } else if (le !== undefined) {\n high = `${le}]`;\n } else {\n high = \"+inf)\";\n }\n return `${low}, ${high}`;\n}\n\n/**\n * Encode raw {@link ArgumentConstraints} into the pre-computed constraint\n * fields of an {@link ArgumentSpec} (presence-only — absent constraints yield\n * no field). Mirrors Python's `_constraint_kwargs`.\n */\nexport function constraintSpecFields(\n constraints: ArgumentConstraints | undefined,\n): Pick<ArgumentSpec, \"defaultJson\" | \"choicesJson\" | \"rangeNotation\" | \"pattern\"> {\n const fields: Pick<\n ArgumentSpec,\n \"defaultJson\" | \"choicesJson\" | \"rangeNotation\" | \"pattern\"\n > = {};\n if (constraints === undefined) return fields;\n\n if (\"default\" in constraints && constraints.default !== undefined) {\n fields.defaultJson = safeJson(constraints.default);\n }\n if (constraints.choices !== undefined) {\n fields.choicesJson = safeJson([...constraints.choices]);\n }\n const range = formatRange(\n constraints.ge,\n constraints.le,\n constraints.gt,\n constraints.lt,\n );\n if (range !== undefined) {\n fields.rangeNotation = range;\n }\n if (constraints.pattern !== undefined) {\n fields.pattern = constraints.pattern;\n }\n return fields;\n}\n\n/** Coerce a numeric const value (number or int64 `bigint`) to `number`. */\nfunction toNumber(value: unknown): number | undefined {\n if (typeof value === \"number\") return value;\n if (typeof value === \"bigint\") return Number(value);\n return undefined;\n}\n\n/** Equality for a choice comparison, coercing numeric/bigint operands. */\nfunction choiceEquals(choice: unknown, value: unknown): boolean {\n const cn = toNumber(choice);\n const vn = toNumber(value);\n if (cn !== undefined && vn !== undefined) return cn === vn;\n return choice === value;\n}\n\n/**\n * Enforce a bind-time const value against its declared {@link ArgumentConstraints},\n * throwing {@link ArgumentValidationError} on violation. Mirrors the Python SDK's\n * `Arg._validate`: numeric range (`ge`/`le`/`gt`/`lt`), closed choice set, and\n * regex `pattern`. A `null`/`undefined` value skips its value constraints.\n */\nexport function validateConstConstraints(\n name: string,\n constraints: ArgumentConstraints,\n value: unknown,\n): void {\n if (value === null || value === undefined) return;\n\n const num = toNumber(value);\n if (num !== undefined) {\n if (constraints.ge !== undefined && num < constraints.ge) {\n throw new ArgumentValidationError(`argument '${name}' must be >= ${constraints.ge}`);\n }\n if (constraints.le !== undefined && num > constraints.le) {\n throw new ArgumentValidationError(`argument '${name}' must be <= ${constraints.le}`);\n }\n if (constraints.gt !== undefined && num <= constraints.gt) {\n throw new ArgumentValidationError(`argument '${name}' must be > ${constraints.gt}`);\n }\n if (constraints.lt !== undefined && num >= constraints.lt) {\n throw new ArgumentValidationError(`argument '${name}' must be < ${constraints.lt}`);\n }\n }\n\n if (constraints.choices !== undefined && constraints.choices.length > 0) {\n if (!constraints.choices.some((c) => choiceEquals(c, value))) {\n throw new ArgumentValidationError(\n `argument '${name}' must be one of ${JSON.stringify([...constraints.choices])}`,\n );\n }\n }\n\n if (constraints.pattern !== undefined && typeof value === \"string\") {\n let re: RegExp | undefined;\n try {\n re = new RegExp(constraints.pattern);\n } catch {\n re = undefined; // an invalid declared regex must not reject the caller\n }\n if (re !== undefined && !re.test(value)) {\n throw new ArgumentValidationError(\n `argument '${name}' must match pattern ${JSON.stringify(constraints.pattern)}`,\n );\n }\n }\n}\n\nfunction argumentSpecSortKey(spec: ArgumentSpec): [number, number | string] {\n if (typeof spec.position === \"number\") {\n return [0, spec.position];\n }\n return [1, spec.position];\n}\n\n/**\n * Convert ArgumentSpecs to an Arrow Schema with VGI metadata keys.\n * Positional arguments come first (in order), named arguments follow.\n */\nexport function argumentSpecsToSchema(specs: ArgumentSpec[]): VgiSchema {\n const sorted = [...specs].sort((a, b) => {\n const ka = argumentSpecSortKey(a);\n const kb = argumentSpecSortKey(b);\n if (ka[0] !== kb[0]) return ka[0] - kb[0];\n if (typeof ka[1] === \"number\" && typeof kb[1] === \"number\") {\n return ka[1] - kb[1];\n }\n return String(ka[1]).localeCompare(String(kb[1]));\n });\n\n const fields: VgiField[] = [];\n for (const spec of sorted) {\n const metadata: Map<string, string> = new Map();\n\n if (typeof spec.position === \"string\") {\n metadata.set(VGI_ARG_KEY, VGI_ARG_NAMED);\n }\n\n if (spec.isTableInput) {\n metadata.set(VGI_TYPE_KEY, VGI_TYPE_TABLE);\n } else if (spec.isAnyType) {\n metadata.set(VGI_TYPE_KEY, VGI_TYPE_ANY);\n }\n\n if (spec.isVarargs) {\n metadata.set(VGI_VARARGS_KEY, VGI_VARARGS_TRUE);\n }\n\n if (spec.isConst) {\n metadata.set(VGI_CONST_KEY, VGI_CONST_TRUE);\n }\n\n // Per-argument description (UTF-8; presence-only — omit when empty).\n if (spec.doc) {\n metadata.set(VGI_DOC_KEY, spec.doc);\n }\n\n // Per-argument constraint metadata (presence-only; already value-encoded).\n if (spec.defaultJson !== undefined) {\n metadata.set(VGI_DEFAULT_KEY, spec.defaultJson);\n }\n if (spec.choicesJson !== undefined) {\n metadata.set(VGI_CHOICES_KEY, spec.choicesJson);\n }\n if (spec.rangeNotation !== undefined) {\n metadata.set(VGI_RANGE_KEY, spec.rangeNotation);\n }\n if (spec.pattern !== undefined) {\n metadata.set(VGI_PATTERN_KEY, spec.pattern);\n }\n\n const field = field_(\n spec.name,\n spec.arrowType,\n true,\n metadata.size > 0 ? metadata : undefined\n );\n fields.push(field);\n }\n\n return schema_(fields);\n}\n\n// =============================================================================\n// Macro Argument Schemas\n// =============================================================================\n\n/**\n * Build a macro `arguments_schema` describing macro parameters.\n *\n * Mirrors the function `arguments_schema` mechanism: one Arrow field per macro\n * parameter, in `parameters` order, each nullable. The per-parameter\n * description is carried via the same `vgi_doc` field-metadata key functions use\n * (UTF-8, presence-only — the key is omitted entirely when there is no doc). A\n * parameter's field type is the type of its default value when one is known\n * (decoded from `parameterDefaultValues`, a one-row RecordBatch serialized as\n * IPC bytes), else `nullType()`.\n *\n * @param parameters Ordered list of macro parameter names.\n * @param parameterDefaultValues Optional one-row RecordBatch (IPC bytes) whose\n * columns are parameter names with typed default values; used to infer each\n * parameter's field type.\n * @param parameterDocs Optional mapping of parameter name to description. Empty\n * or missing descriptions yield no `vgi_doc` metadata on the field.\n * @returns Arrow schema with one nullable field per parameter, in order.\n */\nexport function macroArgumentsSchema(\n parameters: string[],\n parameterDefaultValues?: Uint8Array | null,\n parameterDocs?: Record<string, string>,\n): VgiSchema {\n const docs = parameterDocs ?? {};\n\n // Map parameter name -> Arrow type from the typed default values, if any.\n const defaultTypes: Map<string, VgiDataType> = new Map();\n if (parameterDefaultValues && parameterDefaultValues.length > 0) {\n const batch = deserializeBatch(parameterDefaultValues);\n for (const f of batch.schema.fields) {\n defaultTypes.set(f.name, f.type);\n }\n }\n\n const fields: VgiField[] = [];\n for (const name of parameters) {\n const metadata: Map<string, string> = new Map();\n const doc = docs[name];\n if (doc) {\n metadata.set(VGI_DOC_KEY, doc);\n }\n const fieldType = defaultTypes.get(name) ?? nullType();\n fields.push(field_(name, fieldType, true, metadata.size > 0 ? metadata : undefined));\n }\n\n return schema_(fields);\n}\n\n/**\n * Extract per-parameter descriptions from a macro `arguments_schema`.\n *\n * Inverse of {@link macroArgumentsSchema}'s `vgi_doc` handling: reads the\n * `vgi_doc` field metadata (UTF-8) for each field. Fields without the key\n * (undocumented) are omitted from the result.\n *\n * @param schema A macro `arguments_schema` (one field per parameter).\n * @returns Mapping of parameter name to description, for documented parameters only.\n */\nexport function macroParameterDocsFromSchema(schema: VgiSchema): Record<string, string> {\n const docs: Record<string, string> = {};\n for (const field of schema.fields) {\n const doc = field.metadata.get(VGI_DOC_KEY);\n if (doc) {\n docs[field.name] = doc;\n }\n }\n return docs;\n}\n\n/**\n * Convert an Arrow Schema back to ArgumentSpecs.\n */\nexport function schemaToArgumentSpecs(schema: VgiSchema): ArgumentSpec[] {\n const specs: ArgumentSpec[] = [];\n let positionIndex = 0;\n\n for (const field of schema.fields) {\n const metadata = field.metadata;\n\n const isNamed = metadata.get(VGI_ARG_KEY) === VGI_ARG_NAMED;\n const position: number | string = isNamed\n ? field.name\n : positionIndex++;\n\n const vgiType = metadata.get(VGI_TYPE_KEY);\n const isTableInput = vgiType === VGI_TYPE_TABLE;\n const isAnyType = vgiType === VGI_TYPE_ANY;\n const isVarargs = metadata.get(VGI_VARARGS_KEY) === VGI_VARARGS_TRUE;\n const isConst = metadata.get(VGI_CONST_KEY) === VGI_CONST_TRUE;\n const doc = metadata.get(VGI_DOC_KEY) ?? \"\";\n\n // Per-argument constraint metadata (absent key -> undefined).\n const defaultJson = metadata.get(VGI_DEFAULT_KEY);\n const choicesJson = metadata.get(VGI_CHOICES_KEY);\n const rangeNotation = metadata.get(VGI_RANGE_KEY);\n const pattern = metadata.get(VGI_PATTERN_KEY);\n\n specs.push({\n name: field.name,\n position,\n arrowType: field.type,\n isTableInput,\n isAnyType,\n isVarargs,\n isConst,\n doc,\n defaultJson,\n choicesJson,\n rangeNotation,\n pattern,\n });\n }\n\n return specs;\n}\n",
|
|
26
26
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Back-compat shim. Arrow utilities have moved to src/arrow/ (the backend\n// facade). This file is kept so existing imports of `../util/arrow/index.js`\n// continue to work during step 2 of the facade migration. Once all callers\n// have switched to `../arrow/index.js`, this file can be deleted.\n\nexport {\n emptyBatch,\n batchFromRows,\n batchFromColumns,\n iterRows,\n batchToScalarDict,\n batchToSecretDict,\n safeNumber,\n decodeDictValue,\n filterBatch,\n projectSchema,\n projectBatch,\n serializeSchema,\n deserializeSchema,\n serializeBatch,\n deserializeBatch,\n} from \"../../arrow/index.js\";\n",
|
|
27
|
-
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Table function implementation.\n// Table functions produce output batches from arguments (no streaming input).\n\nimport {\n type VgiSchema,\n type VgiBatch,\n type VgiDataType,\n isBatch,\n isNull,\n nullType,\n deserializeBatch,\n readCanonicalValue,\n} from \"../arrow/index.js\";\nimport { codecFor } from \"../arrow/codec/registry.js\";\nimport type { OutputCollector } from \"@query-farm/vgi-rpc\";\nimport { DEFAULT_MAX_WORKERS } from \"../types.js\";\nimport type {\n BindRequest,\n BindResponse,\n InitRequest,\n GlobalInitResponse,\n TableFunctionCardinalityRequest,\n TableCardinality,\n} from \"../protocol/types.js\";\nimport type {\n VgiFunction,\n FunctionMeta,\n StreamHandlers,\n FunctionExample,\n} from \"./types.js\";\nimport type { ArgumentSpec } from \"../arguments/argument-spec.js\";\nimport { batchToScalarDict, batchToSecretDict, projectSchema, safeNumber } from \"../util/arrow/index.js\";\nimport {\n buildJoinKeysLookup,\n deserializeFilters,\n FilteringOutputCollector,\n type PushdownFilters,\n} from \"../filter-pushdown/index.js\";\nimport type { ColumnStatistics } from \"../util/statistics.js\";\nimport {\n FunctionStability,\n type NullHandling,\n type OrderPreservation,\n type OrderDependence,\n type DistinctDependence,\n} from \"../types.js\";\nimport { BoundStorage, storage as globalStorage } from \"./storage.js\";\n\n// Base64-decode a string into raw bytes. Used to unpack the dynamic filter\n// update DuckDB attaches to each tick batch's custom metadata.\nfunction base64Decode(s: string): Uint8Array {\n const bin = (globalThis as any).atob ? (globalThis as any).atob(s) : Buffer.from(s, \"base64\").toString(\"binary\");\n const out = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);\n return out;\n}\n\n// Read the first RecordBatch from an Arrow IPC stream buffer. Returns null if\n// the stream has no batches.\nfunction deserializeFilterBatch(bytes: Uint8Array): VgiBatch | null {\n if (!bytes || bytes.length === 0) return null;\n const batch = deserializeBatch(bytes);\n return batch.numRows === 0 && batch.schema.fields.length === 0 ? null : batch;\n}\n\n// Wrap an OutputCollector so each emitted RecordBatch is projected-by-name\n// to the bound outputSchema before forwarding. Lenient: workers can emit\n// over-wide batches (full declared schema) and the framework drops the\n// columns DuckDB didn't ask for. Field name mismatches yield null columns\n// rather than wrong-position reads. Field types must already match.\nfunction makeProjectingCollector(inner: OutputCollector, targetSchema: VgiSchema): OutputCollector {\n // Single-pass guard: don't project when a batch already matches.\n function alreadyMatches(batch: VgiBatch): boolean {\n if (batch.schema.fields.length !== targetSchema.fields.length) return false;\n for (let i = 0; i < targetSchema.fields.length; i++) {\n if (batch.schema.fields[i].name !== targetSchema.fields[i].name) return false;\n }\n return true;\n }\n function project(batch: VgiBatch): VgiBatch {\n if (alreadyMatches(batch)) return batch;\n const { batchFromColumns } = require(\"../arrow/index.js\");\n const cols: Record<string, any[]> = {};\n for (const f of targetSchema.fields) {\n const src = batch.getChild(f.name);\n if (src) {\n // Canonical read -> rich so the rebuild goes through the codec path\n // (backend-agnostic, lossless) rather than the raw `.get(i)`.\n const type = f.type as VgiDataType;\n const codec = codecFor(type);\n const arr: any[] = [];\n for (let i = 0; i < batch.numRows; i++) {\n arr.push(codec.canonicalToRich(readCanonicalValue(type, src, i)));\n }\n cols[f.name] = arr;\n } else {\n cols[f.name] = new Array(batch.numRows).fill(null);\n }\n }\n return batchFromColumns(cols, targetSchema);\n }\n return new Proxy(inner, {\n get(target, prop, receiver) {\n if (prop === \"emit\") {\n return function (this: OutputCollector, batchOrColumns: VgiBatch | Record<string, any[]>, metadata?: Map<string, string>) {\n if (isBatch(batchOrColumns)) {\n return (target as any).emit(project(batchOrColumns), metadata);\n }\n // Object form: vgi-rpc itself converts to a batch via outputSchema,\n // and the user passed columns by name — already aligned.\n return (target as any).emit(batchOrColumns, metadata);\n };\n }\n const v = Reflect.get(target, prop, receiver);\n return typeof v === \"function\" ? v.bind(target) : v;\n },\n });\n}\n\n// ============================================================================\n// Table function parameter bundles\n// ============================================================================\n\nexport interface TableBindParams<TArgs = Record<string, any>> {\n args: TArgs;\n bindCall: BindRequest;\n settings: Record<string, any>;\n secrets: Record<string, Record<string, any>>;\n resolvedSecretsProvided: boolean;\n}\n\nexport interface TableProcessParams<TArgs = Record<string, any>> {\n args: TArgs;\n initCall: InitRequest;\n initResponse: GlobalInitResponse;\n outputSchema: VgiSchema;\n settings: Record<string, any>;\n secrets: Record<string, Record<string, any>>;\n pushdownFilters?: PushdownFilters;\n storage?: BoundStorage;\n /**\n * AT (TIMESTAMP|VERSION) clause for this scan, or `undefined` when the scan\n * has no AT clause. Carried on the per-scan bind embedded in the init request\n * (`initCall.bind_call.at_unit` / `.at_value`), so function-backed tables can\n * read time travel at init alongside their pushdown filters. Mirrors\n * vgi-python's `ProcessParams.at_unit` / `.at_value`. See `BindRequest.at_unit`.\n */\n atUnit?: string;\n atValue?: string;\n}\n\n// ============================================================================\n// Functional API\n// ============================================================================\n\nexport interface TableFunctionConfig<\n TArgs = Record<string, any>,\n TState = null,\n> {\n name: string;\n description?: string;\n /** Argument schema (positional args) */\n args?: Record<string, VgiDataType>;\n /** Argument docs */\n argDocs?: Record<string, string>;\n /** Argument defaults */\n argDefaults?: Record<string, any>;\n /** Names of args that accept variable number of arguments */\n varargs?: string[];\n /** Bind: return output schema. May be async — handlers `await` the result. */\n onBind: (params: TableBindParams<TArgs>) =>\n | {\n outputSchema: VgiSchema;\n opaqueData?: Uint8Array;\n lookupSecretTypes?: string[];\n lookupScopes?: string[];\n lookupNames?: string[];\n }\n | Promise<{\n outputSchema: VgiSchema;\n opaqueData?: Uint8Array;\n lookupSecretTypes?: string[];\n lookupScopes?: string[];\n lookupNames?: string[];\n }>;\n /** Init (optional). May be async — common when storage is HTTP-backed. */\n onInit?: (params: {\n args: TArgs;\n initCall: InitRequest;\n outputSchema: VgiSchema;\n executionId: Uint8Array;\n storage: BoundStorage;\n }) => GlobalInitResponse | Promise<GlobalInitResponse>;\n /** State factory */\n initialState?: (params: TableProcessParams<TArgs>) => TState;\n /** Process: emit batches via out, call out.finish() when done */\n process: (\n params: TableProcessParams<TArgs>,\n state: TState,\n out: OutputCollector\n ) => void | Promise<void>;\n /** Cardinality hints */\n cardinality?: (params: TableBindParams<TArgs>) => TableCardinality | Promise<TableCardinality>;\n /**\n * Per-column statistics for the function's output. Returned to DuckDB via\n * the `table_function_statistics` RPC; the optimizer uses min/max to\n * eliminate impossible filters at plan time (folding scans to\n * EMPTY_RESULT). Return `null` or an empty array when bounds are unknown.\n */\n statistics?: (params: TableBindParams<TArgs>) => ColumnStatistics[] | null;\n /**\n * Per-execution diagnostics surfaced under EXPLAIN ANALYZE. DuckDB calls\n * this once per parallel scan thread at pipeline FinishSource via the\n * `table_function_dynamic_to_string` RPC. Return ordered key→value\n * strings; the C++ extension merges these with the intrinsic keys\n * (Function, Rows Read, Threads). The framework provides a BoundStorage\n * keyed by the global execution_id so process() can persist counters\n * that this callback then reads back — see profiling_demo for the\n * canonical pattern.\n */\n dynamicToString?: (\n params: TableBindParams<TArgs>,\n executionId: Uint8Array,\n storage: BoundStorage,\n ) => Record<string, string> | Promise<Record<string, string>>;\n // Metadata\n projectionPushdown?: boolean;\n filterPushdown?: boolean;\n samplingPushdown?: boolean;\n /** Opt in to DuckDB's late-materialization SEMI-join rewrite; requires a\n * UNIQUE, snapshot-stable rowid column. FunctionInfo.late_materialization. */\n lateMaterialization?: boolean;\n supportedExpressionFilters?: string[];\n autoApplyFilters?: boolean;\n stability?: FunctionStability;\n examples?: FunctionExample[];\n categories?: string[];\n tags?: Record<string, string>;\n maxWorkers?: number;\n requiredSettings?: string[];\n requiredSecrets?: string[];\n /** Row-order preservation behavior; flows to DuckDB's\n * TableFunction::order_preservation_type. */\n preservesOrder?: OrderPreservation;\n nullHandling?: NullHandling;\n orderDependent?: OrderDependence;\n distinctDependent?: DistinctDependence;\n /** Emit per-batch `vgi_batch_index`; FunctionInfo.supports_batch_index. */\n supportsBatchIndex?: boolean;\n /** Hive-style partition-columns mode; FunctionInfo.partition_kind. */\n partitionKind?: \"NOT_PARTITIONED\" | \"SINGLE_VALUE_PARTITIONS\" | \"OVERLAPPING_PARTITIONS\" | \"DISJOINT_PARTITIONS\";\n}\n\nexport function defineTableFunction<\n TArgs = Record<string, any>,\n TState = null,\n>(config: TableFunctionConfig<TArgs, TState>): VgiFunction {\n // Build argument specs\n const specs: ArgumentSpec[] = [];\n let posIdx = 0;\n\n if (config.args) {\n const varargsSet = new Set(config.varargs ?? []);\n for (const [name, type] of Object.entries(config.args)) {\n const isAny = isNull(type);\n const hasDefault = config.argDefaults?.[name] !== undefined;\n specs.push({\n name,\n // Args with defaults are named (string position), others are positional\n position: hasDefault ? name : posIdx++,\n arrowType: isAny ? nullType() : type,\n isAnyType: isAny,\n isVarargs: varargsSet.has(name),\n doc: config.argDocs?.[name],\n });\n }\n }\n\n const meta: FunctionMeta = {\n name: config.name,\n description: config.description,\n stability: config.stability,\n projectionPushdown: config.projectionPushdown,\n filterPushdown: config.filterPushdown,\n samplingPushdown: config.samplingPushdown,\n lateMaterialization: config.lateMaterialization,\n supportedExpressionFilters: config.supportedExpressionFilters,\n autoApplyFilters: config.autoApplyFilters,\n examples: config.examples,\n categories: config.categories,\n tags: config.tags,\n maxWorkers: config.maxWorkers,\n requiredSettings: config.requiredSettings,\n requiredSecrets: config.requiredSecrets,\n preservesOrder: config.preservesOrder,\n nullHandling: config.nullHandling,\n orderDependent: config.orderDependent,\n distinctDependent: config.distinctDependent,\n supportsBatchIndex: config.supportsBatchIndex,\n partitionKind: config.partitionKind,\n };\n\n function extractArgs(request: BindRequest): TArgs {\n const args: Record<string, any> = {};\n for (const spec of specs) {\n const defaultVal =\n config.argDefaults?.[spec.name] !== undefined\n ? config.argDefaults[spec.name]\n : undefined;\n let val: any;\n try {\n val = request.arguments.get(spec.position, defaultVal);\n } catch {\n // Fallback: try by name (for scan function tables where DuckDB\n // converts positional args to named args)\n val = request.arguments.get(spec.name, defaultVal);\n }\n // Arrow Int64 values come through as BigInt — coerce to number\n if (typeof val === \"bigint\") val = safeNumber(val);\n args[spec.name] = val;\n }\n return args as TArgs;\n }\n\n return {\n kind: \"table\",\n meta,\n argumentSpecs: specs,\n\n async bind(request: BindRequest): Promise<BindResponse> {\n const args = extractArgs(request);\n const settings = batchToScalarDict(request.settings);\n const secrets = batchToSecretDict(request.secrets);\n const result = await config.onBind({\n args, bindCall: request, settings, secrets,\n resolvedSecretsProvided: request.resolved_secrets_provided ?? false,\n });\n return {\n output_schema: result.outputSchema,\n opaque_data: result.opaqueData ?? null,\n lookup_secret_types: result.lookupSecretTypes,\n lookup_scopes: result.lookupScopes,\n lookup_names: result.lookupNames,\n };\n },\n\n async globalInit(request: InitRequest): Promise<GlobalInitResponse> {\n const executionId = new Uint8Array(16);\n crypto.getRandomValues(executionId);\n\n if (request.execution_id) {\n // Secondary init - reuse execution ID\n return {\n max_workers: config.maxWorkers ?? 1,\n execution_id: request.execution_id,\n opaque_data: null,\n };\n }\n\n if (config.onInit) {\n const args = extractArgs(request.bind_call);\n const boundStorage = new BoundStorage(globalStorage, executionId);\n return await config.onInit({\n args,\n initCall: request,\n outputSchema: request.output_schema,\n executionId,\n storage: boundStorage,\n });\n }\n\n return {\n max_workers: config.maxWorkers ?? 1,\n execution_id: executionId,\n opaque_data: null,\n };\n },\n\n createStreamHandlers(\n request: InitRequest,\n response: GlobalInitResponse\n ): StreamHandlers {\n const args = extractArgs(request.bind_call);\n const settings = batchToScalarDict(request.bind_call.settings);\n const secrets = batchToSecretDict(request.bind_call.secrets);\n\n // Apply projection pushdown only if the function supports it\n const projIds = request.projection_ids && meta.projectionPushdown\n ? request.projection_ids\n : null;\n const outputSchema = projIds\n ? projectSchema(projIds, request.output_schema)\n : request.output_schema;\n\n // Deserialize pushdown filters. Pass a join-keys column lookup so that\n // filters DuckDB promoted to join_keys (IN/OR lists, etc.) are\n // materialized as InFilters rather than silently dropped.\n const joinKeysLookup = buildJoinKeysLookup(request.join_keys);\n const pushdownFilters = request.pushdown_filters\n ? deserializeFilters(request.pushdown_filters, joinKeysLookup)\n : undefined;\n\n const boundStorage = new BoundStorage(globalStorage, response.execution_id);\n\n const processParams: TableProcessParams<TArgs> = {\n args,\n initCall: request,\n initResponse: response,\n outputSchema,\n settings,\n secrets,\n pushdownFilters,\n storage: boundStorage,\n atUnit: request.bind_call.at_unit ?? undefined,\n atValue: request.bind_call.at_value ?? undefined,\n };\n\n const state = config.initialState\n ? config.initialState(processParams)\n : (null as TState);\n\n return {\n outputSchema,\n producerInit: () => ({ state, processParams }),\n onTick: (\n pState: { state: TState; processParams: TableProcessParams<TArgs> },\n tickMetadata: Map<string, string> | undefined,\n ) => {\n // Dynamic filter pushdown: DuckDB's Top-N optimizer tightens filters\n // between ticks and serializes the current filter into the tick\n // batch's custom metadata under `vgi_pushdown_filters` (base64 of a\n // filter IPC stream). Decode and overwrite the current pushdown\n // filters so process() sees the updated value.\n if (!tickMetadata) return;\n const encoded = tickMetadata.get(\"vgi_pushdown_filters\");\n if (!encoded) return;\n try {\n const bytes = base64Decode(encoded);\n const filterBatch = deserializeFilterBatch(bytes);\n if (filterBatch) {\n const updated = deserializeFilters(filterBatch, joinKeysLookup);\n pState.processParams.pushdownFilters = updated;\n }\n } catch {\n // Malformed dynamic-filter update: keep the previous filter. Not\n // fatal — this is a best-effort optimization hint from DuckDB.\n }\n },\n producerFn: async (\n pState: { state: TState; processParams: TableProcessParams<TArgs> },\n out: OutputCollector\n ) => {\n const current = pState.processParams.pushdownFilters;\n // Auto-project: workers may emit a batch with the function's full\n // declared schema even when DuckDB only requested a subset. Wrap\n // the OutputCollector so each emit() projects-by-name to the\n // bound outputSchema. Lenient: absent fields become null columns.\n let wrappedOut: OutputCollector =\n outputSchema && projIds\n ? makeProjectingCollector(out, outputSchema)\n : out;\n if (config.autoApplyFilters && current) {\n wrappedOut = new FilteringOutputCollector(wrappedOut, current) as unknown as OutputCollector;\n }\n await config.process(pState.processParams, pState.state, wrappedOut);\n },\n };\n },\n\n cardinality: config.cardinality\n ? (request: TableFunctionCardinalityRequest) => {\n const args = extractArgs(request.bind_call);\n const settings = batchToScalarDict(request.bind_call.settings);\n const secrets = batchToSecretDict(request.bind_call.secrets);\n return config.cardinality!({\n args,\n bindCall: request.bind_call,\n settings,\n secrets,\n resolvedSecretsProvided: request.bind_call.resolved_secrets_provided ?? false,\n });\n }\n : undefined,\n\n statistics: config.statistics\n ? (request: TableFunctionCardinalityRequest) => {\n const args = extractArgs(request.bind_call);\n const settings = batchToScalarDict(request.bind_call.settings);\n const secrets = batchToSecretDict(request.bind_call.secrets);\n return config.statistics!({\n args,\n bindCall: request.bind_call,\n settings,\n secrets,\n resolvedSecretsProvided: request.bind_call.resolved_secrets_provided ?? false,\n });\n }\n : undefined,\n\n dynamicToString: config.dynamicToString\n ? (request) => {\n const args = extractArgs(request.bindCall);\n const settings = batchToScalarDict(request.bindCall.settings);\n const secrets = batchToSecretDict(request.bindCall.secrets);\n const storage = new BoundStorage(globalStorage, request.globalExecutionId);\n return config.dynamicToString!(\n {\n args,\n bindCall: request.bindCall,\n settings,\n secrets,\n resolvedSecretsProvided: request.bindCall.resolved_secrets_provided ?? false,\n },\n request.globalExecutionId,\n storage,\n );\n }\n : undefined,\n };\n}\n",
|
|
27
|
+
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Table function implementation.\n// Table functions produce output batches from arguments (no streaming input).\n\nimport {\n type VgiSchema,\n type VgiBatch,\n type VgiDataType,\n isBatch,\n isNull,\n nullType,\n deserializeBatch,\n readCanonicalValue,\n} from \"../arrow/index.js\";\nimport { codecFor } from \"../arrow/codec/registry.js\";\nimport type { OutputCollector } from \"@query-farm/vgi-rpc\";\nimport { DEFAULT_MAX_WORKERS } from \"../types.js\";\nimport type {\n BindRequest,\n BindResponse,\n InitRequest,\n GlobalInitResponse,\n TableFunctionCardinalityRequest,\n TableCardinality,\n} from \"../protocol/types.js\";\nimport type {\n VgiFunction,\n FunctionMeta,\n StreamHandlers,\n FunctionExample,\n} from \"./types.js\";\nimport {\n constraintSpecFields,\n validateConstConstraints,\n type ArgumentSpec,\n type ArgumentConstraints,\n} from \"../arguments/argument-spec.js\";\nimport { batchToScalarDict, batchToSecretDict, projectSchema, safeNumber } from \"../util/arrow/index.js\";\nimport {\n buildJoinKeysLookup,\n deserializeFilters,\n FilteringOutputCollector,\n type PushdownFilters,\n} from \"../filter-pushdown/index.js\";\nimport type { ColumnStatistics } from \"../util/statistics.js\";\nimport {\n FunctionStability,\n type NullHandling,\n type OrderPreservation,\n type OrderDependence,\n type DistinctDependence,\n} from \"../types.js\";\nimport { BoundStorage, storage as globalStorage } from \"./storage.js\";\n\n// Base64-decode a string into raw bytes. Used to unpack the dynamic filter\n// update DuckDB attaches to each tick batch's custom metadata.\nfunction base64Decode(s: string): Uint8Array {\n const bin = (globalThis as any).atob ? (globalThis as any).atob(s) : Buffer.from(s, \"base64\").toString(\"binary\");\n const out = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);\n return out;\n}\n\n// Read the first RecordBatch from an Arrow IPC stream buffer. Returns null if\n// the stream has no batches.\nfunction deserializeFilterBatch(bytes: Uint8Array): VgiBatch | null {\n if (!bytes || bytes.length === 0) return null;\n const batch = deserializeBatch(bytes);\n return batch.numRows === 0 && batch.schema.fields.length === 0 ? null : batch;\n}\n\n// Wrap an OutputCollector so each emitted RecordBatch is projected-by-name\n// to the bound outputSchema before forwarding. Lenient: workers can emit\n// over-wide batches (full declared schema) and the framework drops the\n// columns DuckDB didn't ask for. Field name mismatches yield null columns\n// rather than wrong-position reads. Field types must already match.\nfunction makeProjectingCollector(inner: OutputCollector, targetSchema: VgiSchema): OutputCollector {\n // Single-pass guard: don't project when a batch already matches.\n function alreadyMatches(batch: VgiBatch): boolean {\n if (batch.schema.fields.length !== targetSchema.fields.length) return false;\n for (let i = 0; i < targetSchema.fields.length; i++) {\n if (batch.schema.fields[i].name !== targetSchema.fields[i].name) return false;\n }\n return true;\n }\n function project(batch: VgiBatch): VgiBatch {\n if (alreadyMatches(batch)) return batch;\n const { batchFromColumns } = require(\"../arrow/index.js\");\n const cols: Record<string, any[]> = {};\n for (const f of targetSchema.fields) {\n const src = batch.getChild(f.name);\n if (src) {\n // Canonical read -> rich so the rebuild goes through the codec path\n // (backend-agnostic, lossless) rather than the raw `.get(i)`.\n const type = f.type as VgiDataType;\n const codec = codecFor(type);\n const arr: any[] = [];\n for (let i = 0; i < batch.numRows; i++) {\n arr.push(codec.canonicalToRich(readCanonicalValue(type, src, i)));\n }\n cols[f.name] = arr;\n } else {\n cols[f.name] = new Array(batch.numRows).fill(null);\n }\n }\n return batchFromColumns(cols, targetSchema);\n }\n return new Proxy(inner, {\n get(target, prop, receiver) {\n if (prop === \"emit\") {\n return function (this: OutputCollector, batchOrColumns: VgiBatch | Record<string, any[]>, metadata?: Map<string, string>) {\n if (isBatch(batchOrColumns)) {\n return (target as any).emit(project(batchOrColumns), metadata);\n }\n // Object form: vgi-rpc itself converts to a batch via outputSchema,\n // and the user passed columns by name — already aligned.\n return (target as any).emit(batchOrColumns, metadata);\n };\n }\n const v = Reflect.get(target, prop, receiver);\n return typeof v === \"function\" ? v.bind(target) : v;\n },\n });\n}\n\n// ============================================================================\n// Table function parameter bundles\n// ============================================================================\n\nexport interface TableBindParams<TArgs = Record<string, any>> {\n args: TArgs;\n bindCall: BindRequest;\n settings: Record<string, any>;\n secrets: Record<string, Record<string, any>>;\n resolvedSecretsProvided: boolean;\n}\n\nexport interface TableProcessParams<TArgs = Record<string, any>> {\n args: TArgs;\n initCall: InitRequest;\n initResponse: GlobalInitResponse;\n outputSchema: VgiSchema;\n settings: Record<string, any>;\n secrets: Record<string, Record<string, any>>;\n pushdownFilters?: PushdownFilters;\n storage?: BoundStorage;\n /**\n * AT (TIMESTAMP|VERSION) clause for this scan, or `undefined` when the scan\n * has no AT clause. Carried on the per-scan bind embedded in the init request\n * (`initCall.bind_call.at_unit` / `.at_value`), so function-backed tables can\n * read time travel at init alongside their pushdown filters. Mirrors\n * vgi-python's `ProcessParams.at_unit` / `.at_value`. See `BindRequest.at_unit`.\n */\n atUnit?: string;\n atValue?: string;\n}\n\n// ============================================================================\n// Functional API\n// ============================================================================\n\nexport interface TableFunctionConfig<\n TArgs = Record<string, any>,\n TState = null,\n> {\n name: string;\n description?: string;\n /** Argument schema (positional args) */\n args?: Record<string, VgiDataType>;\n /** Argument docs */\n argDocs?: Record<string, string>;\n /** Argument defaults */\n argDefaults?: Record<string, any>;\n /**\n * Per-argument discovery constraints (choices / ge / le / gt / lt / pattern),\n * keyed by argument name. Surfaced via `vgi_function_arguments()` for agent\n * discovery AND enforced at bind: a value violating a declared constraint\n * fails the bind with an ArgumentValidationError.\n */\n argConstraints?: Record<string, ArgumentConstraints>;\n /** Names of args that accept variable number of arguments */\n varargs?: string[];\n /** Bind: return output schema. May be async — handlers `await` the result. */\n onBind: (params: TableBindParams<TArgs>) =>\n | {\n outputSchema: VgiSchema;\n opaqueData?: Uint8Array;\n lookupSecretTypes?: string[];\n lookupScopes?: string[];\n lookupNames?: string[];\n }\n | Promise<{\n outputSchema: VgiSchema;\n opaqueData?: Uint8Array;\n lookupSecretTypes?: string[];\n lookupScopes?: string[];\n lookupNames?: string[];\n }>;\n /** Init (optional). May be async — common when storage is HTTP-backed. */\n onInit?: (params: {\n args: TArgs;\n initCall: InitRequest;\n outputSchema: VgiSchema;\n executionId: Uint8Array;\n storage: BoundStorage;\n }) => GlobalInitResponse | Promise<GlobalInitResponse>;\n /** State factory */\n initialState?: (params: TableProcessParams<TArgs>) => TState;\n /** Process: emit batches via out, call out.finish() when done */\n process: (\n params: TableProcessParams<TArgs>,\n state: TState,\n out: OutputCollector\n ) => void | Promise<void>;\n /** Cardinality hints */\n cardinality?: (params: TableBindParams<TArgs>) => TableCardinality | Promise<TableCardinality>;\n /**\n * Per-column statistics for the function's output. Returned to DuckDB via\n * the `table_function_statistics` RPC; the optimizer uses min/max to\n * eliminate impossible filters at plan time (folding scans to\n * EMPTY_RESULT). Return `null` or an empty array when bounds are unknown.\n */\n statistics?: (params: TableBindParams<TArgs>) => ColumnStatistics[] | null;\n /**\n * Per-execution diagnostics surfaced under EXPLAIN ANALYZE. DuckDB calls\n * this once per parallel scan thread at pipeline FinishSource via the\n * `table_function_dynamic_to_string` RPC. Return ordered key→value\n * strings; the C++ extension merges these with the intrinsic keys\n * (Function, Rows Read, Threads). The framework provides a BoundStorage\n * keyed by the global execution_id so process() can persist counters\n * that this callback then reads back — see profiling_demo for the\n * canonical pattern.\n */\n dynamicToString?: (\n params: TableBindParams<TArgs>,\n executionId: Uint8Array,\n storage: BoundStorage,\n ) => Record<string, string> | Promise<Record<string, string>>;\n // Metadata\n projectionPushdown?: boolean;\n filterPushdown?: boolean;\n samplingPushdown?: boolean;\n /** Opt in to DuckDB's late-materialization SEMI-join rewrite; requires a\n * UNIQUE, snapshot-stable rowid column. FunctionInfo.late_materialization. */\n lateMaterialization?: boolean;\n supportedExpressionFilters?: string[];\n autoApplyFilters?: boolean;\n stability?: FunctionStability;\n examples?: FunctionExample[];\n categories?: string[];\n tags?: Record<string, string>;\n maxWorkers?: number;\n requiredSettings?: string[];\n requiredSecrets?: string[];\n /** Row-order preservation behavior; flows to DuckDB's\n * TableFunction::order_preservation_type. */\n preservesOrder?: OrderPreservation;\n nullHandling?: NullHandling;\n orderDependent?: OrderDependence;\n distinctDependent?: DistinctDependence;\n /** Emit per-batch `vgi_batch_index`; FunctionInfo.supports_batch_index. */\n supportsBatchIndex?: boolean;\n /** Hive-style partition-columns mode; FunctionInfo.partition_kind. */\n partitionKind?: \"NOT_PARTITIONED\" | \"SINGLE_VALUE_PARTITIONS\" | \"OVERLAPPING_PARTITIONS\" | \"DISJOINT_PARTITIONS\";\n}\n\nexport function defineTableFunction<\n TArgs = Record<string, any>,\n TState = null,\n>(config: TableFunctionConfig<TArgs, TState>): VgiFunction {\n // Build argument specs\n const specs: ArgumentSpec[] = [];\n let posIdx = 0;\n\n if (config.args) {\n const varargsSet = new Set(config.varargs ?? []);\n for (const [name, type] of Object.entries(config.args)) {\n const isAny = isNull(type);\n const hasDefault = config.argDefaults?.[name] !== undefined;\n specs.push({\n name,\n // Args with defaults are named (string position), others are positional\n position: hasDefault ? name : posIdx++,\n arrowType: isAny ? nullType() : type,\n isAnyType: isAny,\n isVarargs: varargsSet.has(name),\n doc: config.argDocs?.[name],\n ...constraintSpecFields(config.argConstraints?.[name]),\n });\n }\n }\n\n const meta: FunctionMeta = {\n name: config.name,\n description: config.description,\n stability: config.stability,\n projectionPushdown: config.projectionPushdown,\n filterPushdown: config.filterPushdown,\n samplingPushdown: config.samplingPushdown,\n lateMaterialization: config.lateMaterialization,\n supportedExpressionFilters: config.supportedExpressionFilters,\n autoApplyFilters: config.autoApplyFilters,\n examples: config.examples,\n categories: config.categories,\n tags: config.tags,\n maxWorkers: config.maxWorkers,\n requiredSettings: config.requiredSettings,\n requiredSecrets: config.requiredSecrets,\n preservesOrder: config.preservesOrder,\n nullHandling: config.nullHandling,\n orderDependent: config.orderDependent,\n distinctDependent: config.distinctDependent,\n supportsBatchIndex: config.supportsBatchIndex,\n partitionKind: config.partitionKind,\n };\n\n function extractArgs(request: BindRequest): TArgs {\n const args: Record<string, any> = {};\n for (const spec of specs) {\n const defaultVal =\n config.argDefaults?.[spec.name] !== undefined\n ? config.argDefaults[spec.name]\n : undefined;\n let val: any;\n try {\n val = request.arguments.get(spec.position, defaultVal);\n } catch {\n // Fallback: try by name (for scan function tables where DuckDB\n // converts positional args to named args)\n val = request.arguments.get(spec.name, defaultVal);\n }\n // Arrow Int64 values come through as BigInt — coerce to number\n if (typeof val === \"bigint\") val = safeNumber(val);\n // Enforce declared constraints at bind (table args are all bind-time).\n const constraints = config.argConstraints?.[spec.name];\n if (constraints) validateConstConstraints(spec.name, constraints, val);\n args[spec.name] = val;\n }\n return args as TArgs;\n }\n\n return {\n kind: \"table\",\n meta,\n argumentSpecs: specs,\n\n async bind(request: BindRequest): Promise<BindResponse> {\n const args = extractArgs(request);\n const settings = batchToScalarDict(request.settings);\n const secrets = batchToSecretDict(request.secrets);\n const result = await config.onBind({\n args, bindCall: request, settings, secrets,\n resolvedSecretsProvided: request.resolved_secrets_provided ?? false,\n });\n return {\n output_schema: result.outputSchema,\n opaque_data: result.opaqueData ?? null,\n lookup_secret_types: result.lookupSecretTypes,\n lookup_scopes: result.lookupScopes,\n lookup_names: result.lookupNames,\n };\n },\n\n async globalInit(request: InitRequest): Promise<GlobalInitResponse> {\n const executionId = new Uint8Array(16);\n crypto.getRandomValues(executionId);\n\n if (request.execution_id) {\n // Secondary init - reuse execution ID\n return {\n max_workers: config.maxWorkers ?? 1,\n execution_id: request.execution_id,\n opaque_data: null,\n };\n }\n\n if (config.onInit) {\n const args = extractArgs(request.bind_call);\n const boundStorage = new BoundStorage(globalStorage, executionId);\n return await config.onInit({\n args,\n initCall: request,\n outputSchema: request.output_schema,\n executionId,\n storage: boundStorage,\n });\n }\n\n return {\n max_workers: config.maxWorkers ?? 1,\n execution_id: executionId,\n opaque_data: null,\n };\n },\n\n createStreamHandlers(\n request: InitRequest,\n response: GlobalInitResponse\n ): StreamHandlers {\n const args = extractArgs(request.bind_call);\n const settings = batchToScalarDict(request.bind_call.settings);\n const secrets = batchToSecretDict(request.bind_call.secrets);\n\n // Apply projection pushdown only if the function supports it\n const projIds = request.projection_ids && meta.projectionPushdown\n ? request.projection_ids\n : null;\n const outputSchema = projIds\n ? projectSchema(projIds, request.output_schema)\n : request.output_schema;\n\n // Deserialize pushdown filters. Pass a join-keys column lookup so that\n // filters DuckDB promoted to join_keys (IN/OR lists, etc.) are\n // materialized as InFilters rather than silently dropped.\n const joinKeysLookup = buildJoinKeysLookup(request.join_keys);\n const pushdownFilters = request.pushdown_filters\n ? deserializeFilters(request.pushdown_filters, joinKeysLookup)\n : undefined;\n\n const boundStorage = new BoundStorage(globalStorage, response.execution_id);\n\n const processParams: TableProcessParams<TArgs> = {\n args,\n initCall: request,\n initResponse: response,\n outputSchema,\n settings,\n secrets,\n pushdownFilters,\n storage: boundStorage,\n atUnit: request.bind_call.at_unit ?? undefined,\n atValue: request.bind_call.at_value ?? undefined,\n };\n\n const state = config.initialState\n ? config.initialState(processParams)\n : (null as TState);\n\n return {\n outputSchema,\n producerInit: () => ({ state, processParams }),\n onTick: (\n pState: { state: TState; processParams: TableProcessParams<TArgs> },\n tickMetadata: Map<string, string> | undefined,\n ) => {\n // Dynamic filter pushdown: DuckDB's Top-N optimizer tightens filters\n // between ticks and serializes the current filter into the tick\n // batch's custom metadata under `vgi_pushdown_filters` (base64 of a\n // filter IPC stream). Decode and overwrite the current pushdown\n // filters so process() sees the updated value.\n if (!tickMetadata) return;\n const encoded = tickMetadata.get(\"vgi_pushdown_filters\");\n if (!encoded) return;\n try {\n const bytes = base64Decode(encoded);\n const filterBatch = deserializeFilterBatch(bytes);\n if (filterBatch) {\n const updated = deserializeFilters(filterBatch, joinKeysLookup);\n pState.processParams.pushdownFilters = updated;\n }\n } catch {\n // Malformed dynamic-filter update: keep the previous filter. Not\n // fatal — this is a best-effort optimization hint from DuckDB.\n }\n },\n producerFn: async (\n pState: { state: TState; processParams: TableProcessParams<TArgs> },\n out: OutputCollector\n ) => {\n const current = pState.processParams.pushdownFilters;\n // Auto-project: workers may emit a batch with the function's full\n // declared schema even when DuckDB only requested a subset. Wrap\n // the OutputCollector so each emit() projects-by-name to the\n // bound outputSchema. Lenient: absent fields become null columns.\n let wrappedOut: OutputCollector =\n outputSchema && projIds\n ? makeProjectingCollector(out, outputSchema)\n : out;\n if (config.autoApplyFilters && current) {\n wrappedOut = new FilteringOutputCollector(wrappedOut, current) as unknown as OutputCollector;\n }\n await config.process(pState.processParams, pState.state, wrappedOut);\n },\n };\n },\n\n cardinality: config.cardinality\n ? (request: TableFunctionCardinalityRequest) => {\n const args = extractArgs(request.bind_call);\n const settings = batchToScalarDict(request.bind_call.settings);\n const secrets = batchToSecretDict(request.bind_call.secrets);\n return config.cardinality!({\n args,\n bindCall: request.bind_call,\n settings,\n secrets,\n resolvedSecretsProvided: request.bind_call.resolved_secrets_provided ?? false,\n });\n }\n : undefined,\n\n statistics: config.statistics\n ? (request: TableFunctionCardinalityRequest) => {\n const args = extractArgs(request.bind_call);\n const settings = batchToScalarDict(request.bind_call.settings);\n const secrets = batchToSecretDict(request.bind_call.secrets);\n return config.statistics!({\n args,\n bindCall: request.bind_call,\n settings,\n secrets,\n resolvedSecretsProvided: request.bind_call.resolved_secrets_provided ?? false,\n });\n }\n : undefined,\n\n dynamicToString: config.dynamicToString\n ? (request) => {\n const args = extractArgs(request.bindCall);\n const settings = batchToScalarDict(request.bindCall.settings);\n const secrets = batchToSecretDict(request.bindCall.secrets);\n const storage = new BoundStorage(globalStorage, request.globalExecutionId);\n return config.dynamicToString!(\n {\n args,\n bindCall: request.bindCall,\n settings,\n secrets,\n resolvedSecretsProvided: request.bindCall.resolved_secrets_provided ?? false,\n },\n request.globalExecutionId,\n storage,\n );\n }\n : undefined,\n };\n}\n",
|
|
28
28
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Filter pushdown type definitions.\n\nexport enum ComparisonOp {\n EQ = \"eq\",\n NE = \"ne\",\n GT = \"gt\",\n GE = \"ge\",\n LT = \"lt\",\n LE = \"le\",\n}\n\nexport interface ConstantFilter {\n type: \"constant\";\n columnName: string;\n columnIndex: number;\n op: ComparisonOp;\n value: any;\n}\n\nexport interface IsNullFilter {\n type: \"is_null\";\n columnName: string;\n columnIndex: number;\n}\n\nexport interface IsNotNullFilter {\n type: \"is_not_null\";\n columnName: string;\n columnIndex: number;\n}\n\nexport interface InFilter {\n type: \"in\";\n columnName: string;\n columnIndex: number;\n values: Set<any>;\n}\n\nexport interface AndFilter {\n type: \"and\";\n columnName: string;\n columnIndex: number;\n children: Filter[];\n}\n\nexport interface OrFilter {\n type: \"or\";\n columnName: string;\n columnIndex: number;\n children: Filter[];\n}\n\nexport interface StructFilter {\n type: \"struct\";\n columnName: string;\n columnIndex: number;\n childIndex: number;\n childName: string;\n childFilter: Filter;\n}\n\nexport type Filter =\n | ConstantFilter\n | IsNullFilter\n | IsNotNullFilter\n | InFilter\n | AndFilter\n | OrFilter\n | StructFilter\n | ExpressionFilter;\n\n/**\n * Expression-tree filter. The expr is a parsed AST; evaluation matches\n * DuckDB's semantics for the function names the table function advertises in\n * `supportedExpressionFilters` (e.g. list_contains, starts_with, contains,\n * &&/st_intersects_extent for spatial).\n */\nexport interface ExpressionFilter {\n type: \"expression\";\n columnName: string;\n columnIndex: number;\n expr: ExprNode;\n}\n\nexport type ExprNode =\n | { expr_type: \"column_ref\"; index: number }\n | { expr_type: \"constant\"; value: any }\n | { expr_type: \"function\"; function_name: string; children: ExprNode[] }\n | { expr_type: \"comparison\"; op: ComparisonOp; left: ExprNode; right: ExprNode }\n | { expr_type: \"conjunction\"; conjunction_type: \"and\" | \"or\"; children: ExprNode[] };\n",
|
|
29
29
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Filter pushdown evaluation: row-by-row predicate evaluation against\n// Arrow RecordBatches, plus the PushdownFilters class that owns a parsed\n// filter set and applies it to batches.\n\nimport {\n type VgiBatch,\n type VgiSchema,\n type VgiDataType,\n schema,\n readCanonicalValue,\n} from \"../arrow/index.js\";\nimport { batchFromColumns, filterBatch } from \"../util/arrow/index.js\";\nimport { codecFor } from \"../arrow/codec/registry.js\";\nimport {\n ComparisonOp,\n type AndFilter,\n type ConstantFilter,\n type ExpressionFilter,\n type ExprNode,\n type Filter,\n type InFilter,\n type IsNotNullFilter,\n type IsNullFilter,\n type OrFilter,\n type StructFilter,\n} from \"./types.js\";\n\n// ============================================================================\n// Comparison helpers\n// ============================================================================\n\nfunction compare(a: any, b: any, op: ComparisonOp): boolean {\n switch (op) {\n case ComparisonOp.EQ: return a === b;\n case ComparisonOp.NE: return a !== b;\n case ComparisonOp.GT: return a > b;\n case ComparisonOp.GE: return a >= b;\n case ComparisonOp.LT: return a < b;\n case ComparisonOp.LE: return a <= b;\n }\n}\n\n/**\n * Read a column cell at `index` in CANONICAL form (the same representation the\n * filter literals are deserialized into — see deserialize.ts `getValue`). Going\n * through the per-backend canonical reader makes this work on BOTH Arrow\n * backends (arrow-js's `col.get` and flechette's `col.at` are not interchange-\n * able) and guarantees temporal/decimal cells and literals compare like-for-\n * like (e.g. timestamp -> bigint on both sides). `colIndex` resolves the field\n * type from the batch schema.\n */\nfunction readCell(batch: VgiBatch, colIndex: number, index: number): any {\n const col = batch.getChildAt(colIndex);\n if (!col) return null;\n const type = batch.schema.fields[colIndex].type as unknown as VgiDataType;\n return readCanonicalValue(type, col, index);\n}\n\n// ============================================================================\n// Filter evaluation (row-by-row)\n// ============================================================================\n\nfunction evaluateFilter(\n filter: Filter,\n batch: VgiBatch,\n mask: Uint8Array,\n): void {\n switch (filter.type) {\n case \"constant\":\n evaluateConstant(filter, batch, mask);\n break;\n case \"is_null\":\n evaluateIsNull(filter, batch, mask);\n break;\n case \"is_not_null\":\n evaluateIsNotNull(filter, batch, mask);\n break;\n case \"in\":\n evaluateIn(filter, batch, mask);\n break;\n case \"and\":\n evaluateAnd(filter, batch, mask);\n break;\n case \"or\":\n evaluateOr(filter, batch, mask);\n break;\n case \"struct\":\n evaluateStruct(filter, batch, mask);\n break;\n case \"expression\":\n evaluateExpression(filter, batch, mask);\n break;\n }\n}\n\n// Recursively evaluate an expression AST against a row of the batch, returning\n// the scalar value it produces. column_ref reads from the batch using the\n// caller-supplied remap (DuckDB rewrites column refs inside an ExpressionFilter\n// so index=0 means \"this filter's column\"); constant returns its pre-resolved\n// JS value; function dispatches on function_name; comparison/conjunction\n// combine children.\nfunction evaluateExpr(\n node: ExprNode,\n batch: VgiBatch,\n rowIndex: number,\n colRefToBatchIndex: (index: number) => number,\n): any {\n switch (node.expr_type) {\n case \"column_ref\":\n return readCell(batch, colRefToBatchIndex(node.index), rowIndex);\n case \"constant\":\n return node.value;\n case \"function\":\n return evalFunction(\n node.function_name,\n node.children.map((c) => evaluateExpr(c, batch, rowIndex, colRefToBatchIndex)),\n );\n case \"comparison\": {\n const left = evaluateExpr(node.left, batch, rowIndex, colRefToBatchIndex);\n const right = evaluateExpr(node.right, batch, rowIndex, colRefToBatchIndex);\n if (left == null || right == null) return null;\n return compare(left, right, node.op);\n }\n case \"conjunction\": {\n if (node.conjunction_type === \"and\") {\n for (const c of node.children) {\n const v = evaluateExpr(c, batch, rowIndex, colRefToBatchIndex);\n if (v !== true) return v === false ? false : null;\n }\n return true;\n }\n let sawNull = false;\n for (const c of node.children) {\n const v = evaluateExpr(c, batch, rowIndex, colRefToBatchIndex);\n if (v === true) return true;\n if (v == null) sawNull = true;\n }\n return sawNull ? null : false;\n }\n }\n}\n\n// Dispatch DuckDB scalar-function names we support as pushdown filters.\n// Return null for any missing argument (SQL three-valued logic).\nfunction evalFunction(name: string, args: any[]): any {\n if (args.some((a) => a == null)) return null;\n switch (name) {\n case \"list_contains\":\n case \"array_contains\": {\n // args[0] is an Arrow ListVector row (iterable), args[1] is the needle.\n const [list, needle] = args;\n if (!list || typeof list[Symbol.iterator] !== \"function\") return false;\n for (const v of list) {\n if (v === needle) return true;\n }\n return false;\n }\n case \"starts_with\":\n case \"prefix\": {\n const [hay, needle] = args;\n return typeof hay === \"string\" && typeof needle === \"string\"\n ? hay.startsWith(needle) : false;\n }\n case \"contains\": {\n const [hay, needle] = args;\n return typeof hay === \"string\" && typeof needle === \"string\"\n ? hay.includes(needle) : false;\n }\n case \"&&\":\n case \"st_intersects_extent\": {\n // Bounding-box intersection between two WKB geometries. Parses each\n // geometry's XY bbox and checks for overlap in both dimensions.\n const [a, b] = args;\n const ba = wkbBBox(a);\n const bb = wkbBBox(b);\n if (!ba || !bb) return false;\n return !(ba.maxX < bb.minX || ba.minX > bb.maxX ||\n ba.maxY < bb.minY || ba.minY > bb.maxY);\n }\n default:\n // Unsupported functions shouldn't make it past the C++-side\n // `ExpressionTreeIsSupported` gate, but be defensive: evaluate to null\n // so the row is filtered out conservatively rather than silently\n // producing wrong results.\n return null;\n }\n}\n\n// Parse the XY bounding box of a WKB geometry. Supports Point and Polygon for\n// ST_MakeEnvelope output; extend as new geometry kinds are needed.\nfunction wkbBBox(bytes: any): { minX: number; minY: number; maxX: number; maxY: number } | null {\n if (!(bytes instanceof Uint8Array)) return null;\n if (bytes.length < 5) return null;\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const le = view.getUint8(0) === 1;\n const type = view.getUint32(1, le);\n // Point (type=1): 21 bytes total (5 header + 8+8 coords)\n if (type === 1 && bytes.length >= 21) {\n const x = view.getFloat64(5, le);\n const y = view.getFloat64(13, le);\n return { minX: x, minY: y, maxX: x, maxY: y };\n }\n // Polygon (type=3): used by ST_MakeEnvelope. One ring, 4 points, close.\n // Header 5 + num_rings 4 + num_points 4 + 4*16 coord bytes = 81 bytes.\n if (type === 3 && bytes.length >= 81) {\n const numRings = view.getUint32(5, le);\n if (numRings < 1) return null;\n const numPoints = view.getUint32(9, le);\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n let off = 13;\n for (let i = 0; i < numPoints && off + 16 <= bytes.length; i++, off += 16) {\n const x = view.getFloat64(off, le);\n const y = view.getFloat64(off + 8, le);\n if (x < minX) minX = x;\n if (x > maxX) maxX = x;\n if (y < minY) minY = y;\n if (y > maxY) maxY = y;\n }\n if (minX === Infinity) return null;\n return { minX, minY, maxX, maxY };\n }\n return null;\n}\n\nfunction evaluateExpression(\n filter: ExpressionFilter,\n batch: VgiBatch,\n mask: Uint8Array,\n): void {\n const n = batch.numRows;\n // DuckDB's FilterSerializer rewrites bound references inside an\n // ExpressionFilter so that column_ref index 0 refers to the filter's own\n // column (see ReplaceWithBoundReference in DuckDB's optimizer). Higher\n // indices on the same filter aren't produced — the filter is always\n // scoped to a single column in the outer batch — so we map every\n // column_ref back to `filter.columnIndex` by name, resolving through the\n // current batch in case projection reordered columns.\n const colName = filter.columnName;\n let targetIdx = batch.schema.fields.findIndex((f) => f.name === colName);\n if (targetIdx < 0) targetIdx = filter.columnIndex;\n const colRef = (_nodeIndex: number) => targetIdx;\n for (let i = 0; i < n; i++) {\n if (!mask[i]) continue;\n const v = evaluateExpr(filter.expr, batch, i, colRef);\n mask[i] = v === true ? 1 : 0;\n }\n}\n\nfunction evaluateConstant(\n filter: ConstantFilter,\n batch: VgiBatch,\n mask: Uint8Array,\n): void {\n const n = batch.numRows;\n for (let i = 0; i < n; i++) {\n if (!mask[i]) continue;\n const cell = readCell(batch, filter.columnIndex, i);\n if (cell === null) {\n mask[i] = 0;\n } else {\n mask[i] = compare(cell, filter.value, filter.op) ? 1 : 0;\n }\n }\n}\n\nfunction evaluateIsNull(\n filter: IsNullFilter,\n batch: VgiBatch,\n mask: Uint8Array,\n): void {\n const n = batch.numRows;\n for (let i = 0; i < n; i++) {\n if (!mask[i]) continue;\n mask[i] = (readCell(batch, filter.columnIndex, i) !== null) ? 0 : 1;\n }\n}\n\nfunction evaluateIsNotNull(\n filter: IsNotNullFilter,\n batch: VgiBatch,\n mask: Uint8Array,\n): void {\n const n = batch.numRows;\n for (let i = 0; i < n; i++) {\n if (!mask[i]) continue;\n mask[i] = (readCell(batch, filter.columnIndex, i) !== null) ? 1 : 0;\n }\n}\n\nfunction evaluateIn(\n filter: InFilter,\n batch: VgiBatch,\n mask: Uint8Array,\n): void {\n const n = batch.numRows;\n for (let i = 0; i < n; i++) {\n if (!mask[i]) continue;\n const cell = readCell(batch, filter.columnIndex, i);\n if (cell === null) {\n mask[i] = 0;\n } else {\n mask[i] = filter.values.has(cell) ? 1 : 0;\n }\n }\n}\n\nfunction evaluateAnd(\n filter: AndFilter,\n batch: VgiBatch,\n mask: Uint8Array,\n): void {\n // AND: start with all-pass, then narrow with each child\n const n = batch.numRows;\n const childMask = new Uint8Array(n);\n\n for (const child of filter.children) {\n childMask.fill(1);\n evaluateFilter(child, batch, childMask);\n for (let i = 0; i < n; i++) {\n mask[i] &= childMask[i];\n }\n }\n}\n\nfunction evaluateOr(\n filter: OrFilter,\n batch: VgiBatch,\n mask: Uint8Array,\n): void {\n // OR: start with all-fail, then widen with each child\n const n = batch.numRows;\n const result = new Uint8Array(n); // all zeros\n const childMask = new Uint8Array(n);\n\n for (const child of filter.children) {\n childMask.fill(1);\n evaluateFilter(child, batch, childMask);\n for (let i = 0; i < n; i++) {\n result[i] |= childMask[i];\n }\n }\n\n // Combine with incoming mask\n for (let i = 0; i < n; i++) {\n mask[i] &= result[i];\n }\n}\n\nfunction evaluateStruct(\n filter: StructFilter,\n batch: VgiBatch,\n mask: Uint8Array,\n): void {\n const structType = batch.schema.fields[filter.columnIndex].type as unknown as VgiDataType;\n const childField = (structType as any).children?.[filter.childIndex];\n if (!childField) {\n // Child field not found — fail all rows\n mask.fill(0);\n return;\n }\n const childType = childField.type as VgiDataType;\n\n // Read the struct column in canonical form (backend-agnostic), pull out the\n // target child's canonical value per row, and rebuild a single-column child\n // batch via batchFromColumns (which re-runs canonical writes). Filter literals\n // are compared in canonical form too (see deserialize.ts), so the child column\n // cells and literals stay in matching representations across both backends.\n const childCanonical = Array.from({ length: batch.numRows }, (_, i) => {\n const structVal = readCell(batch, filter.columnIndex, i) as Record<string, unknown> | null;\n return structVal == null ? null : (structVal[childField.name] ?? null);\n });\n // batchFromColumns expects RICH values; map canonical -> rich for the child.\n const childCodec = codecFor(childType);\n const childRich = childCanonical.map((v) => childCodec.canonicalToRich(v));\n\n const childSchema = schema([\n (structType as any).children[filter.childIndex],\n ]);\n const childBatch = batchFromColumns(\n { [filter.childName]: childRich },\n childSchema,\n );\n\n // Remap child filter's columnIndex to 0 for the wrapper batch\n const remapped = { ...filter.childFilter, columnIndex: 0 };\n evaluateFilter(remapped, childBatch, mask);\n}\n\n// ============================================================================\n// SQL formatting\n// ============================================================================\n\nconst OP_SYMBOLS: Record<ComparisonOp, string> = {\n [ComparisonOp.EQ]: \"=\",\n [ComparisonOp.NE]: \"!=\",\n [ComparisonOp.GT]: \">\",\n [ComparisonOp.GE]: \">=\",\n [ComparisonOp.LT]: \"<\",\n [ComparisonOp.LE]: \"<=\",\n};\n\nfunction formatValue(v: any): string {\n if (typeof v === \"string\") return `'${v}'`;\n if (typeof v === \"bigint\") return String(v);\n return String(v);\n}\n\nfunction filterToSql(f: Filter): string {\n const col = f.columnName;\n\n switch (f.type) {\n case \"constant\":\n return `${col} ${OP_SYMBOLS[f.op]} ${formatValue(f.value)}`;\n case \"is_null\":\n return `${col} IS NULL`;\n case \"is_not_null\":\n return `${col} IS NOT NULL`;\n case \"in\": {\n // Match Python's repr: summarize large lists as `N values`, otherwise\n // render each element. Threshold matches vgi-python's InFilter.__repr__.\n const size = f.values.size;\n if (size > 20) {\n return `${col} IN (${size} values)`;\n }\n const vals = [...f.values].map(formatValue).join(\", \");\n return `${col} IN (${vals})`;\n }\n case \"and\": {\n const parts = f.children.map(filterToSql);\n return `(${parts.join(\" AND \")})`;\n }\n case \"or\": {\n const parts = f.children.map(filterToSql);\n return `(${parts.join(\" OR \")})`;\n }\n case \"struct\": {\n const nested = `${f.columnName}.${f.childName}`;\n const remapped = { ...f.childFilter, columnName: nested };\n return filterToSql(remapped);\n }\n case \"expression\":\n // Expression filters don't have a natural SQL rendering here — the\n // tree came from DuckDB's bound-expression serializer. Use a generic\n // placeholder so debug output stays readable.\n return `${f.columnName} MATCHES (expression)`;\n }\n}\n\n// ============================================================================\n// PushdownFilters\n// ============================================================================\n\nexport class PushdownFilters {\n constructor(\n readonly filters: Filter[],\n readonly version: string,\n ) {}\n\n /** Convert filters to a human-readable SQL-like string. */\n toSql(): string {\n if (this.filters.length === 0) return \"\";\n return this.filters.map(filterToSql).join(\" AND \");\n }\n\n /** Evaluate filters against a batch, returning a Uint8Array mask (0=fail, 1=pass). */\n evaluate(batch: VgiBatch): Uint8Array {\n const n = batch.numRows;\n const mask = new Uint8Array(n);\n mask.fill(1);\n\n for (const filter of this.filters) {\n evaluateFilter(filter, batch, mask);\n }\n\n return mask;\n }\n\n /** Apply filters to a batch, returning only passing rows. */\n apply(batch: VgiBatch): VgiBatch {\n if (batch.numRows === 0 || this.filters.length === 0) return batch;\n\n const mask = this.evaluate(batch);\n // filterBatch rebuilds via the codec/canonical path (backend-agnostic,\n // lossless), including its own all-pass / all-fail fast paths.\n return filterBatch(batch, mask);\n }\n\n /**\n * The set of column names referenced by the pushed-down filters, sorted\n * ascending. Descends one level into AndFilter children (DuckDB pushes\n * `col IN (...) AND col>=min` as a single AndFilter), consistent with\n * `getColumnValues` / `hasFilterForColumn`. Mirrors the cross-language\n * `filtered_columns` accessor (vgi-python / vgi-go / vgi-rust).\n */\n filteredColumns(): string[] {\n const cols = new Set<string>();\n for (const f of this.filters) {\n if (f.type === \"and\") {\n for (const c of f.children) cols.add(c.columnName);\n } else {\n cols.add(f.columnName);\n }\n }\n return Array.from(cols).sort();\n }\n\n /**\n * Whether any pushed-down filter references `columnName`. Mirrors the\n * cross-language `has_filter_for_column` accessor.\n */\n hasFilterForColumn(columnName: string): boolean {\n return this.collectColumnFilters(columnName).length > 0;\n }\n\n /**\n * Discrete values a column could take, from equality (`=`) or `IN` filters.\n * Useful for partition pruning (resolve the key set up front, fetch only\n * those keys). Returns null when the predicate is not enumerable — no\n * filter, a bare range, or an OR with a non-discrete branch.\n *\n * Mirrors vgi-python's `PushdownFilters.get_column_values`: descends one\n * level into an AndFilter (DuckDB pushes `col IN (...) AND col>=min AND\n * col<=max` as a single AndFilter from a semi-join), and unions OR branches\n * only when every branch pins the column to discrete values.\n */\n getColumnValues(columnName: string): any[] | null {\n for (const f of this.collectColumnFilters(columnName)) {\n if (f.type === \"constant\" && f.op === ComparisonOp.EQ) {\n return [f.value];\n } else if (f.type === \"in\") {\n return Array.from(f.values);\n } else if (f.type === \"or\") {\n const union = this.orDiscreteValues(f, columnName);\n if (union !== null) return union;\n }\n }\n return null;\n }\n\n /**\n * Union of discrete values for `columnName` across all OR branches, iff every\n * child constrains it to discrete values (`=` or `IN`); otherwise null (the\n * column could take any value through a non-discrete branch). Returning one\n * branch's values would be an unsafe subset.\n */\n private orDiscreteValues(orFilter: OrFilter, columnName: string): any[] | null {\n const values: any[] = [];\n for (const child of orFilter.children) {\n if (child.columnName !== columnName) return null;\n if (child.type === \"constant\" && child.op === ComparisonOp.EQ) {\n values.push(child.value);\n } else if (child.type === \"in\") {\n for (const v of child.values) values.push(v);\n } else {\n return null;\n }\n }\n if (values.length === 0) return null;\n // Deduplicate, preserving first-seen order for stable output.\n const seen = new Set<any>();\n const deduped: any[] = [];\n for (const v of values) {\n if (!seen.has(v)) {\n seen.add(v);\n deduped.push(v);\n }\n }\n return deduped;\n }\n\n /**\n * Collect filters for a column from the top level and direct AND children\n * (one level of descent, consistent with the Python accessor). Deeply nested\n * AND/AND is not traversed.\n */\n private collectColumnFilters(columnName: string): Filter[] {\n const result: Filter[] = [];\n for (const f of this.filters) {\n if (f.columnName !== columnName) continue;\n if (f.type === \"and\") {\n for (const c of f.children) {\n if (c.columnName === columnName) result.push(c);\n }\n } else {\n result.push(f);\n }\n }\n return result;\n }\n}\n",
|
|
30
30
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Deserialize pushdown filters from the wire format (Arrow RecordBatch with\n// JSON specs in column 0 and value-ref scalars in columns 1+).\n\nimport { type VgiBatch, type VgiDataType, readCanonicalValue } from \"../arrow/index.js\";\nimport { ComparisonOp, type ExprNode, type Filter } from \"./types.js\";\nimport { PushdownFilters } from \"./evaluate.js\";\n\nfunction parseFilter(\n spec: any,\n getValue: (ref: number) => any,\n getJoinKeysColumn?: (columnName: string) => any[] | null,\n): Filter | null {\n const columnName: string = spec.column_name ?? \"\";\n const columnIndex: number = spec.column_index ?? 0;\n\n switch (spec.type) {\n case \"constant\":\n return {\n type: \"constant\",\n columnName,\n columnIndex,\n op: spec.op as ComparisonOp,\n value: getValue(spec.value_ref),\n };\n\n case \"is_null\":\n return { type: \"is_null\", columnName, columnIndex };\n\n case \"is_not_null\":\n return { type: \"is_not_null\", columnName, columnIndex };\n\n case \"in\": {\n const listScalar = getValue(spec.value_ref);\n // listScalar is an Arrow list value — extract elements into a Set\n const values = new Set<any>();\n if (listScalar && typeof listScalar[Symbol.iterator] === \"function\") {\n for (const v of listScalar) {\n values.add(v);\n }\n } else if (Array.isArray(listScalar)) {\n for (const v of listScalar) {\n values.add(v);\n }\n }\n return { type: \"in\", columnName, columnIndex, values };\n }\n\n case \"and\": {\n // AND: drop unparseable children; the remaining ones still filter correctly\n // (conjunction is weaker with fewer children, which is safe — extra rows\n // pass but DuckDB re-filters client-side).\n const andChildren = (spec.children ?? [])\n .map((c: any) => parseFilter(c, getValue, getJoinKeysColumn))\n .filter((f: Filter | null): f is Filter => f !== null);\n if (andChildren.length === 0) return null;\n return { type: \"and\", columnName, columnIndex, children: andChildren };\n }\n\n case \"or\": {\n // OR: dropping a child would strengthen the filter (fewer rows pass),\n // which is unsafe. If any child fails to parse, drop the whole OR.\n const orChildren: Filter[] = [];\n for (const c of spec.children ?? []) {\n const parsed = parseFilter(c, getValue, getJoinKeysColumn);\n if (parsed === null) return null;\n orChildren.push(parsed);\n }\n return { type: \"or\", columnName, columnIndex, children: orChildren };\n }\n\n case \"struct\": {\n const childFilter = parseFilter(spec.child_filter, getValue, getJoinKeysColumn);\n if (childFilter === null) return null;\n return {\n type: \"struct\",\n columnName,\n columnIndex,\n childIndex: spec.child_index ?? 0,\n childName: spec.child_name ?? \"\",\n childFilter,\n };\n }\n\n case \"join_keys\": {\n // vgi-python `FilterType.JOIN_KEYS`. DuckDB's dynamic_or_filter\n // optimizer can promote IN / OR lists or join-predicate pushdowns into\n // this shape. Look the keys_column up in the init request's join_keys\n // batches and materialize as an InFilter. If no callback or no batch\n // matches, fall through as null (graceful degradation).\n const keysColumn: string = spec.keys_column ?? \"\";\n if (!getJoinKeysColumn) return null;\n const values = getJoinKeysColumn(keysColumn);\n if (values === null) return null;\n const set = new Set<any>(values);\n return { type: \"in\", columnName, columnIndex, values: set };\n }\n\n case \"expression\": {\n // Parse the serialized expression tree (DuckDB bound-expression → JSON\n // emitted by FilterSerializer::SerializeExpression in C++). The tree\n // may reference constants by `value_ref` — resolve those now so the\n // evaluator sees plain JS values.\n const expr = parseExprNode(spec.expr, getValue);\n if (!expr) return null;\n return { type: \"expression\", columnName, columnIndex, expr };\n }\n\n default:\n throw new Error(`Unknown filter type: ${spec.type}`);\n }\n}\n\n/**\n * Build a getJoinKeysColumn lookup from an InitRequest's `joinKeys` batches.\n * Each batch typically has a single column whose name is the join-keys column\n * referenced by `spec.keys_column` on a join_keys filter.\n */\nexport function buildJoinKeysLookup(\n joinKeyBatches: VgiBatch[],\n): (columnName: string) => any[] | null {\n const index = new Map<string, any[]>();\n for (const batch of joinKeyBatches) {\n for (const field of batch.schema.fields) {\n const col = batch.getChild(field.name);\n if (!col) continue;\n const type = field.type as unknown as VgiDataType;\n const values: any[] = [];\n for (let i = 0; i < batch.numRows; i++) {\n // Canonical read so join keys match the column cells they filter\n // against (built via readCanonicalValue in evaluate.ts).\n values.push(readCanonicalValue(type, col, i));\n }\n index.set(field.name, values);\n }\n }\n return (name: string) => index.get(name) ?? null;\n}\n\n// Parse a serialized expression subtree. Returns null if the shape doesn't\n// look like one we can evaluate (unknown expr_type); the caller skips the\n// whole filter in that case, which is equivalent to not pushing it down.\nfunction parseExprNode(\n spec: any,\n getValue: (ref: number) => any,\n): ExprNode | null {\n if (!spec || typeof spec !== \"object\") return null;\n switch (spec.expr_type) {\n case \"column_ref\":\n return { expr_type: \"column_ref\", index: Number(spec.index ?? 0) };\n case \"constant\":\n return { expr_type: \"constant\", value: getValue(Number(spec.value_ref)) };\n case \"function\": {\n const kids: ExprNode[] = [];\n for (const c of spec.children ?? []) {\n const k = parseExprNode(c, getValue);\n if (!k) return null;\n kids.push(k);\n }\n return { expr_type: \"function\", function_name: String(spec.function_name ?? \"\"), children: kids };\n }\n case \"comparison\": {\n const left = parseExprNode(spec.left, getValue);\n const right = parseExprNode(spec.right, getValue);\n if (!left || !right) return null;\n return {\n expr_type: \"comparison\",\n op: opFromString(spec.op),\n left,\n right,\n };\n }\n case \"conjunction\": {\n const kids: ExprNode[] = [];\n for (const c of spec.children ?? []) {\n const k = parseExprNode(c, getValue);\n if (!k) return null;\n kids.push(k);\n }\n return {\n expr_type: \"conjunction\",\n conjunction_type: spec.conjunction_type === \"or\" ? \"or\" : \"and\",\n children: kids,\n };\n }\n default:\n return null;\n }\n}\n\nfunction opFromString(s: string): ComparisonOp {\n switch (s) {\n case \"eq\": case \"==\": return ComparisonOp.EQ;\n case \"ne\": case \"!=\": return ComparisonOp.NE;\n case \"gt\": case \">\": return ComparisonOp.GT;\n case \"ge\": case \">=\": return ComparisonOp.GE;\n case \"lt\": case \"<\": return ComparisonOp.LT;\n case \"le\": case \"<=\": return ComparisonOp.LE;\n default: return ComparisonOp.EQ;\n }\n}\n\n/**\n * Deserialize pushdown filters from an Arrow RecordBatch.\n *\n * Wire format:\n * - Column 0: UTF8 — JSON array of filter specs. Field metadata: vgi_filter_version: \"1\"\n * - Columns 1+: Scalar values referenced by value_ref → column N+1\n */\nexport function deserializeFilters(\n batch: VgiBatch,\n getJoinKeysColumn?: (columnName: string) => any[] | null,\n): PushdownFilters {\n // Validate version\n const field0 = batch.schema.fields[0];\n const version = field0.metadata?.get(\"vgi_filter_version\");\n if (!version) {\n throw new Error(\n \"Filter batch missing vgi_filter_version metadata on field 0\",\n );\n }\n if (version !== \"1\") {\n throw new Error(`Unsupported filter version: ${version}`);\n }\n\n // Parse JSON filter specs from column 0, row 0\n const jsonCol = batch.getChildAt(0)!;\n const jsonStr = jsonCol.get(0) as string;\n let specs: any[];\n try {\n specs = JSON.parse(jsonStr);\n } catch (e) {\n throw new Error(`Failed to parse filter JSON: ${e}`);\n }\n\n // Value resolver: value_ref N → column N+1, row 0. Read through the canonical\n // reader so filter literals land in the SAME representation as the column\n // cells they're compared against (e.g. timestamp -> bigint on both backends),\n // and so it works on flechette (no arrow-js `.get()`).\n const getValue = (ref: number): any => {\n const col = batch.getChildAt(ref + 1);\n if (!col) {\n throw new Error(`Filter value_ref ${ref} references non-existent column ${ref + 1}`);\n }\n const type = batch.schema.fields[ref + 1].type as unknown as VgiDataType;\n return readCanonicalValue(type, col, 0);\n };\n\n const filters = specs\n .map((spec) => parseFilter(spec, getValue, getJoinKeysColumn))\n .filter((f): f is Filter => f !== null);\n return new PushdownFilters(filters, version);\n}\n",
|
|
31
31
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// FilteringOutputCollector — wraps an OutputCollector and applies pushdown\n// filters to every emitted batch — plus human-readable formatters used in\n// debug logs.\n\nimport { type VgiBatch, type VgiSchema, isBatch } from \"../arrow/index.js\";\nimport type { OutputCollector } from \"@query-farm/vgi-rpc\";\nimport { batchFromColumns } from \"../util/arrow/index.js\";\nimport { ComparisonOp, type ExprNode, type Filter } from \"./types.js\";\nimport { PushdownFilters } from \"./evaluate.js\";\n\n/**\n * Format pushdown filters as a human-readable SQL-like string.\n * Returns \"(none)\" when no filters exist.\n */\nexport function formatPushedFilters(filters: PushdownFilters | undefined): string {\n if (!filters || filters.filters.length === 0) return \"(none)\";\n const sql = filters.toSql();\n return sql || \"(none)\";\n}\n\n/**\n * Format pushdown filters using Python-style `repr()` — e.g.\n * `PushdownFilters([ConstantFilter(n < 4999)])`. Matches vgi-python's\n * `_format_pushed_filters_safe` output so tests that pattern-match the\n * repr (e.g. `dynamic_filter` checking for `ConstantFilter(n <`) work\n * identically across workers.\n */\nexport function reprPushedFilters(filters: PushdownFilters | undefined): string {\n if (!filters || filters.filters.length === 0) return \"(none)\";\n const parts = filters.filters.map(reprFilter);\n return `PushdownFilters([${parts.join(\", \")}])`;\n}\n\nfunction opSymbol(op: ComparisonOp): string {\n switch (op) {\n case ComparisonOp.EQ: return \"==\";\n case ComparisonOp.NE: return \"!=\";\n case ComparisonOp.GT: return \">\";\n case ComparisonOp.GE: return \">=\";\n case ComparisonOp.LT: return \"<\";\n case ComparisonOp.LE: return \"<=\";\n }\n}\n\nfunction reprFilter(f: Filter): string {\n switch (f.type) {\n case \"constant\":\n return `ConstantFilter(${f.columnName} ${opSymbol(f.op)} ${reprValue(f.value)})`;\n case \"is_null\":\n return `IsNullFilter(${f.columnName} IS NULL)`;\n case \"is_not_null\":\n return `IsNotNullFilter(${f.columnName} IS NOT NULL)`;\n case \"in\": {\n const values = [...f.values];\n const preview = values.length > 5\n ? `${JSON.stringify(values.slice(0, 3))}...(${values.length} total)`\n : JSON.stringify(values);\n return `InFilter(${f.columnName} IN ${preview})`;\n }\n case \"and\": {\n const kids = f.children.map(reprFilter).join(\" AND \");\n return `AndFilter(${kids})`;\n }\n case \"or\": {\n const kids = f.children.map(reprFilter).join(\" OR \");\n return `OrFilter(${kids})`;\n }\n case \"struct\":\n return `StructFilter(${f.columnName}.${f.childName}: ${reprFilter(f.childFilter)})`;\n case \"expression\":\n return `ExpressionFilter(${f.columnName}: ${reprExpr(f.expr)})`;\n }\n}\n\nfunction reprExpr(e: ExprNode): string {\n switch (e.expr_type) {\n case \"column_ref\": return `col#${e.index}`;\n case \"constant\": return reprValue(e.value);\n case \"function\": return `${e.function_name}(${e.children.map(reprExpr).join(\", \")})`;\n case \"comparison\": return `(${reprExpr(e.left)} ${opSymbol(e.op)} ${reprExpr(e.right)})`;\n case \"conjunction\":\n return `(${e.children.map(reprExpr).join(e.conjunction_type === \"and\" ? \" AND \" : \" OR \")})`;\n }\n}\n\nfunction reprValue(v: any): string {\n if (typeof v === \"string\") return JSON.stringify(v);\n if (typeof v === \"bigint\") return String(v);\n if (v === null || v === undefined) return \"null\";\n return String(v);\n}\n\n/**\n * Wraps an OutputCollector to automatically apply pushdown filters\n * to every emitted batch.\n */\nexport class FilteringOutputCollector {\n constructor(\n private inner: OutputCollector,\n private filters: PushdownFilters,\n ) {}\n\n get outputSchema(): VgiSchema {\n return this.inner.outputSchema;\n }\n\n get finished(): boolean {\n return this.inner.finished;\n }\n\n emit(batch: VgiBatch, metadata?: Map<string, string>): void;\n emit(columns: Record<string, any[]>): void;\n emit(\n batchOrColumns: VgiBatch | Record<string, any[]>,\n metadata?: Map<string, string>,\n ): void {\n let batch: VgiBatch;\n if (isBatch(batchOrColumns)) {\n batch = batchOrColumns;\n } else {\n batch = batchFromColumns(batchOrColumns as Record<string, any[]>, this.inner.outputSchema as any);\n }\n const filtered = this.filters.apply(batch as any);\n this.inner.emit(filtered as any, metadata);\n }\n\n emitRow(values: Record<string, any>): void {\n const columns: Record<string, any[]> = {};\n for (const [key, value] of Object.entries(values)) {\n columns[key] = [value];\n }\n this.emit(columns);\n }\n\n finish(): void {\n this.inner.finish();\n }\n\n clientLog(\n level: string,\n message: string,\n extra?: Record<string, string>,\n ): void {\n this.inner.clientLog(level, message, extra);\n }\n}\n",
|
|
32
|
-
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Aggregate function framework — mirrors vgi-python's vgi/aggregate_function.py\n// protocol at the wire level. Per-execution state lives in an in-memory store\n// keyed by (execution_id, group_id); fine for subprocess workers and for\n// single-instance HTTP. Multi-host HTTP deployments would need a pluggable\n// state backend (same tradeoff Python's FunctionStorage wraps).\n//\n// DuckDB drives the lifecycle via five unary RPCs:\n//\n// aggregate_bind → resolve output schema + allocate execution_id\n// aggregate_update → fold rows into per-group state\n// aggregate_combine → merge parallel-build states\n// aggregate_finalize → emit one result row per group_id\n// aggregate_destructor → free states (best-effort; see Python worker.py)\n\nimport { type VgiSchema, schema, type VgiField, field, type VgiBatch, type VgiDataType, nullType, isNull } from \"../arrow/index.js\";\nimport type { Arguments } from \"../arguments/arguments.js\";\nimport type { ArgumentSpec } from \"../arguments/argument-spec.js\";\nimport type {\n FunctionMeta,\n VgiFunction,\n} from \"./types.js\";\nimport { DEFAULT_MAX_WORKERS } from \"../types.js\";\nimport type { FunctionExample } from \"./types.js\";\n// Aggregate state persistence uses node:fs/path/os to spill per-group state to\n// disk under VGI_AGG_STATE_DIR. Workers (Cloudflare workerd / browsers)\n// don't define aggregate functions in the first place, so we resolve the\n// node:* modules through indirect string variables that esbuild can't trace.\n// The bundle stays clean even without nodejs_compat polyfills.\nconst _NODE_FS_MOD = \"node:fs\";\nconst _NODE_PATH_MOD = \"node:path\";\nconst _NODE_OS_MOD = \"node:os\";\nfunction _aggReq(): any {\n const req: any = (import.meta as any).require ?? (globalThis as any).require ?? null;\n if (!req) {\n throw new Error(\n \"Aggregate state persistence requires Node.js or Bun (node:fs/path/os).\",\n );\n }\n return req;\n}\nconst fs: any = new Proxy({} as any, {\n get: (_t, prop) => (_aggReq()(_NODE_FS_MOD) as any)[prop],\n});\nconst path: any = new Proxy({} as any, {\n get: (_t, prop) => (_aggReq()(_NODE_PATH_MOD) as any)[prop],\n});\nconst os: any = new Proxy({} as any, {\n get: (_t, prop) => (_aggReq()(_NODE_OS_MOD) as any)[prop],\n});\n\n// Column name DuckDB prepends to every aggregate_update batch. One entry per\n// input row; the value identifies which group the row belongs to.\nexport const GROUP_COLUMN_NAME = \"__vgi_group_id\";\n\nexport interface AggregateBindParams<TArgs = Record<string, any>> {\n args: TArgs;\n arguments: Arguments;\n inputSchema: VgiSchema | null;\n settings: Record<string, any>;\n secrets: Record<string, Record<string, any>>;\n}\n\nexport interface AggregateUpdateParams<TArgs = Record<string, any>, TState = any> {\n states: Map<bigint, TState>;\n groupIds: bigint[];\n columns: any[]; // arrow Vectors per declared param\n args: TArgs;\n /**\n * Get-or-initialize accessor for per-group state. Call this inside the loop\n * only when the row actually contributes to the aggregate — skipping it\n * (e.g. on NULL input under NullHandling.DEFAULT) leaves `states` without\n * an entry for the group, so finalize() can return SQL NULL for that\n * group (matches vgi-python's \"state absent = NULL\" semantics for\n * SUM/AVG/MIN/MAX over zero non-null rows).\n */\n ensureState: (gid: bigint) => TState;\n}\n\nexport interface AggregateFinalizeParams<TArgs = Record<string, any>, TState = any> {\n groupIds: bigint[];\n states: Map<bigint, TState | null>;\n outputSchema: VgiSchema;\n args: TArgs;\n}\n\nexport interface AggregateFunctionConfig<TArgs = Record<string, any>, TState = any> {\n name: string;\n description?: string;\n /**\n * Map of positional argument name → Arrow type. Passed through to DuckDB\n * function registration. Use `null` (untyped) for varargs placeholders.\n */\n args?: Record<string, VgiDataType>;\n /**\n * Names of args that accept a variable number of column arguments. DuckDB\n * treats these as varargs of the declared Arrow type; at call time the\n * function may receive 1..N columns of that type. update() sees all of\n * them as consecutive entries in `columns`.\n */\n varargs?: string[];\n /**\n * Names of args whose value is constant (known at bind time) and must be\n * folded away by DuckDB before reaching update(). The value arrives in\n * `bindParams.args[name]`; it is NOT passed as an input column in the\n * update batch. Use for aggregates parameterized by a literal (e.g.\n * percentile=0.5 in vgi_percentile).\n */\n constParams?: string[];\n /**\n * Arrow type of the aggregate's output (one value per group). DuckDB uses\n * this to build the result column type at bind time. May be overridden\n * at bind time by `onBind` (returning a different Arrow type) for\n * aggregates whose return type depends on the input column type\n * (e.g. vgi_generic_sum: BIGINT input → BIGINT output, DOUBLE → DOUBLE).\n */\n outputType: VgiDataType;\n /**\n * Optional bind-time hook for dynamic output types. Receives the bind\n * parameters (including input_schema) and returns the Arrow type to\n * advertise for this invocation. Defaults to returning `config.outputType`.\n */\n onBind?: (params: AggregateBindParams<TArgs>) => VgiDataType | Promise<VgiDataType>;\n /** Optional per-arg default values (positional only here). */\n argDefaults?: Record<string, any>;\n\n initialState: (params: AggregateBindParams<TArgs>) => TState;\n /**\n * Fold a batch of input rows into the provided per-group state map.\n * Implementations mutate `states` in place. `groupIds[i]` identifies which\n * group row i belongs to; `columns[k][i]` is the value for the kth declared\n * column argument at row i.\n */\n update: (params: AggregateUpdateParams<TArgs, TState>) => void;\n combine: (source: TState, target: TState, params: AggregateBindParams<TArgs>) => TState;\n /** Must return a single-column RecordBatch with `groupIds.length` rows. */\n finalize: (params: AggregateFinalizeParams<TArgs, TState>) => VgiBatch;\n\n examples?: FunctionExample[];\n categories?: string[];\n /** Arbitrary function-level tags surfaced into duckdb_functions().tags. */\n tags?: Record<string, string>;\n nullHandling?: \"DEFAULT\" | \"SPECIAL\";\n /**\n * DuckDB secret types this aggregate needs. Advertised on the catalog's\n * `required_secrets` so the C++ extension pre-resolves matching secrets and\n * delivers their VALUES on the aggregate_bind request (keyed by secret name).\n * The secret is read at bind time only — update/combine/finalize receive an\n * empty ResolvedSecrets. Mirrors vgi-python's `Secret()` annotation on an\n * aggregate `on_bind`.\n */\n requiredSecrets?: string[];\n}\n\n// Per-execution state registry. Value = (gid → state) + bind context.\n//\n// Under DuckDB's parallel aggregate with worker pooling, aggregate_* RPCs for\n// the same execution_id can land on different worker processes — so state\n// needs to live in a place all workers can reach. We use a filesystem-backed\n// store (one directory per execution_id, one JSON file per group_id) with\n// atomic rename-on-write. Fine for subprocess transport and for\n// single-instance HTTP; multi-host HTTP would need a shared path or a\n// swap-in network backend. Override with VGI_AGG_STATE_DIR.\n//\n// In-memory cache sits in front of the filesystem to keep single-process\n// workloads fast — writes go to disk, reads prefer cache, and getExecutionState\n// lazily reconstructs from disk when a different worker's exec is requested.\n\ntype StateMap = Map<bigint, any>;\n\ninterface ExecEntry {\n states: StateMap;\n bindArgs: Arguments;\n bindParams: AggregateBindParams<any>;\n loaded: Set<bigint>; // gids fetched from disk (so we don't refetch in same call)\n}\n\nconst stateStore = new Map<string, ExecEntry>();\n\n// Custom JSON codec: BigInt ↔ {\"__bigint__\":\"…\"}. Keep the encoder/decoder\n// centralized so aggregate state classes with int64 fields (CountState,\n// SumState, etc.) round-trip without extra wiring.\nfunction jsonReplacer(_: string, v: any): any {\n if (typeof v === \"bigint\") return { __bigint__: v.toString() };\n return v;\n}\nfunction jsonReviver(_: string, v: any): any {\n if (v && typeof v === \"object\" && typeof (v as any).__bigint__ === \"string\") {\n return BigInt((v as any).__bigint__);\n }\n return v;\n}\n\nfunction stateDirRoot(): string {\n return process.env.VGI_AGG_STATE_DIR ?? path.join(os.tmpdir(), \"vgi-agg\");\n}\n\nfunction execDir(execHex: string): string {\n return path.join(stateDirRoot(), execHex);\n}\n\nfunction execKey(executionId: Uint8Array): string {\n let s = \"\";\n for (const b of executionId) s += b.toString(16).padStart(2, \"0\");\n return s;\n}\n\n// Atomic write: write to tmp then rename. Avoids partial reads from another\n// worker mid-update. Node's fs.renameSync is atomic on POSIX for same FS.\nfunction atomicWriteJson(filePath: string, value: any): void {\n const tmp = filePath + \".tmp.\" + process.pid + \".\" + Math.random().toString(36).slice(2);\n const parent = path.dirname(filePath);\n fs.mkdirSync(parent, { recursive: true });\n fs.writeFileSync(tmp, JSON.stringify(value, jsonReplacer));\n fs.renameSync(tmp, filePath);\n}\n\nfunction tryReadJson(filePath: string): any | undefined {\n try {\n const text = fs.readFileSync(filePath, \"utf8\");\n return JSON.parse(text, jsonReviver);\n } catch (e: any) {\n if (e?.code === \"ENOENT\") return undefined;\n throw e;\n }\n}\n\n/**\n * Fetch the execution context — bind args/params + states for requested gids.\n * On cache miss, tries to reconstruct from on-disk files written by a\n * sibling worker. Returns undefined if the exec never existed anywhere.\n * `requestedGids` (optional) tells us which group states to pre-load.\n */\nexport function getExecutionState(\n executionId: Uint8Array,\n requestedGids?: Iterable<bigint>,\n): ExecEntry | undefined {\n const key = execKey(executionId);\n let entry = stateStore.get(key);\n if (!entry) {\n // Try to reconstruct bind context from disk.\n const ctx = tryReadJson(path.join(execDir(key), \"context.json\"));\n if (!ctx) return undefined;\n // Restore bindParams + args from the serialized context. args is kept\n // only as a plain dict; the Arguments instance isn't needed after bind.\n entry = {\n states: new Map(),\n bindArgs: ctx.bindArgs, // placeholder — Arguments instance is only needed during bind\n bindParams: ctx.bindParams,\n loaded: new Set(),\n };\n stateStore.set(key, entry);\n }\n if (requestedGids) {\n // Always re-read from disk each RPC. A sibling worker may have just\n // written a newer value for this gid; relying on our in-memory cache\n // would overwrite their update on our next persist (read-modify-write\n // race). File I/O per-RPC is cheap compared to the RPC overhead.\n for (const gid of requestedGids) {\n const stateFile = path.join(execDir(key), gid.toString() + \".json\");\n const s = tryReadJson(stateFile);\n if (s !== undefined) {\n entry.states.set(gid, s);\n } else {\n entry.states.delete(gid);\n }\n entry.loaded.add(gid);\n }\n }\n return entry;\n}\n\nexport function setExecutionState(\n executionId: Uint8Array,\n entry: Omit<ExecEntry, \"loaded\">,\n): void {\n const key = execKey(executionId);\n stateStore.set(key, { ...entry, loaded: new Set() });\n // Persist bind context so sibling workers can reconstruct it on demand.\n atomicWriteJson(path.join(execDir(key), \"context.json\"), {\n bindParams: entry.bindParams,\n // bindArgs is a live Arguments instance; stash its args map separately\n // if needed for future state-dependent behavior. Workers reading the\n // context receive `bindParams.args` which is what update/finalize use.\n });\n}\n\n/**\n * Persist the given group states to disk so sibling workers can pick them up.\n * Deletes the on-disk entry when the in-memory state was removed (gid no\n * longer present in states map).\n */\nexport function persistGroupStates(\n executionId: Uint8Array,\n gids: Iterable<bigint>,\n): void {\n const key = execKey(executionId);\n const entry = stateStore.get(key);\n if (!entry) return;\n for (const gid of gids) {\n const stateFile = path.join(execDir(key), gid.toString() + \".json\");\n if (entry.states.has(gid)) {\n atomicWriteJson(stateFile, entry.states.get(gid));\n } else {\n try { fs.unlinkSync(stateFile); } catch { /* already gone */ }\n }\n entry.loaded.add(gid);\n }\n}\n\nexport function deleteExecutionState(executionId: Uint8Array): void {\n const key = execKey(executionId);\n stateStore.delete(key);\n try { fs.rmSync(execDir(key), { recursive: true, force: true }); } catch { /* best-effort */ }\n}\n\n/**\n * Declare an aggregate function. The returned VgiFunction has `kind:\n * \"aggregate\"` plus a `config` handle the dispatch layer uses to drive the\n * aggregate_* RPCs; the scalar/table-function code paths ignore it.\n */\nexport function defineAggregate<TArgs = Record<string, any>, TState = any>(\n config: AggregateFunctionConfig<TArgs, TState>,\n): VgiFunction & { aggregateConfig: AggregateFunctionConfig<TArgs, TState> } {\n const specs: ArgumentSpec[] = [];\n let posIdx = 0;\n const varargsSet = new Set(config.varargs ?? []);\n const constSet = new Set(config.constParams ?? []);\n if (config.args) {\n for (const [name, type] of Object.entries(config.args)) {\n const hasDefault = config.argDefaults?.[name] !== undefined;\n const isConst = constSet.has(name);\n const isAnyType = isNull(type);\n // Const params are always positional at the SQL call-site — a default\n // value just means \"the user may omit it and we'll use the default\",\n // not \"rename to a named kwarg\". Non-const args with defaults become\n // named (matches table-function behavior).\n specs.push({\n name,\n position: isConst || !hasDefault ? posIdx++ : name,\n arrowType: isAnyType ? nullType() : type,\n isAnyType,\n isVarargs: varargsSet.has(name),\n isConst,\n });\n }\n }\n\n const meta: FunctionMeta = {\n name: config.name,\n description: config.description,\n examples: config.examples,\n categories: config.categories,\n tags: config.tags,\n nullHandling: config.nullHandling as any,\n requiredSecrets: config.requiredSecrets,\n };\n\n // The normal VgiFunction methods (bind/globalInit/createStreamHandlers) are\n // never invoked for aggregates — the dispatch layer routes aggregate_* RPCs\n // through the separate aggregate_* handler. Provide stubs that throw so\n // misrouted calls surface loudly rather than silently hanging.\n // Catalog output schema: single \"result\" column. Advertise config.outputType\n // when it's a real type (anything other than Null) — onBind may still override\n // at bind time, but for the catalog listing we prefer the static declaration\n // so duckdb_functions() shows a meaningful return type. Aggregates whose\n // return type genuinely depends on input set outputType: nullType() to\n // advertise ANY explicitly.\n const isAnyType = isNull(config.outputType);\n const defaultOutputSchema = isAnyType\n ? schema([field(\"result\", nullType(), true, new Map([[\"vgi:any\", \"true\"]]))])\n : schema([field(\"result\", config.outputType, true)]);\n\n return {\n kind: \"aggregate\" as any,\n meta,\n argumentSpecs: specs,\n defaultOutputSchema,\n bind: () => { throw new Error(`aggregate '${config.name}' received bind() — should be routed through aggregate_bind`); },\n globalInit: () => { throw new Error(`aggregate '${config.name}' received globalInit() — should be routed through aggregate_bind`); },\n createStreamHandlers: () => { throw new Error(`aggregate '${config.name}' is unary — no stream handlers`); },\n aggregateConfig: config,\n } as VgiFunction & { aggregateConfig: AggregateFunctionConfig<TArgs, TState> };\n}\n",
|
|
32
|
+
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Aggregate function framework — mirrors vgi-python's vgi/aggregate_function.py\n// protocol at the wire level. Per-execution state lives in an in-memory store\n// keyed by (execution_id, group_id); fine for subprocess workers and for\n// single-instance HTTP. Multi-host HTTP deployments would need a pluggable\n// state backend (same tradeoff Python's FunctionStorage wraps).\n//\n// DuckDB drives the lifecycle via five unary RPCs:\n//\n// aggregate_bind → resolve output schema + allocate execution_id\n// aggregate_update → fold rows into per-group state\n// aggregate_combine → merge parallel-build states\n// aggregate_finalize → emit one result row per group_id\n// aggregate_destructor → free states (best-effort; see Python worker.py)\n\nimport { type VgiSchema, schema, type VgiField, field, type VgiBatch, type VgiDataType, nullType, isNull } from \"../arrow/index.js\";\nimport type { Arguments } from \"../arguments/arguments.js\";\nimport {\n constraintSpecFields,\n type ArgumentSpec,\n type ArgumentConstraints,\n} from \"../arguments/argument-spec.js\";\nimport type {\n FunctionMeta,\n VgiFunction,\n} from \"./types.js\";\nimport { DEFAULT_MAX_WORKERS } from \"../types.js\";\nimport type { FunctionExample } from \"./types.js\";\n// Aggregate state persistence uses node:fs/path/os to spill per-group state to\n// disk under VGI_AGG_STATE_DIR. Workers (Cloudflare workerd / browsers)\n// don't define aggregate functions in the first place, so we resolve the\n// node:* modules through indirect string variables that esbuild can't trace.\n// The bundle stays clean even without nodejs_compat polyfills.\nconst _NODE_FS_MOD = \"node:fs\";\nconst _NODE_PATH_MOD = \"node:path\";\nconst _NODE_OS_MOD = \"node:os\";\nfunction _aggReq(): any {\n const req: any = (import.meta as any).require ?? (globalThis as any).require ?? null;\n if (!req) {\n throw new Error(\n \"Aggregate state persistence requires Node.js or Bun (node:fs/path/os).\",\n );\n }\n return req;\n}\nconst fs: any = new Proxy({} as any, {\n get: (_t, prop) => (_aggReq()(_NODE_FS_MOD) as any)[prop],\n});\nconst path: any = new Proxy({} as any, {\n get: (_t, prop) => (_aggReq()(_NODE_PATH_MOD) as any)[prop],\n});\nconst os: any = new Proxy({} as any, {\n get: (_t, prop) => (_aggReq()(_NODE_OS_MOD) as any)[prop],\n});\n\n// Column name DuckDB prepends to every aggregate_update batch. One entry per\n// input row; the value identifies which group the row belongs to.\nexport const GROUP_COLUMN_NAME = \"__vgi_group_id\";\n\nexport interface AggregateBindParams<TArgs = Record<string, any>> {\n args: TArgs;\n arguments: Arguments;\n inputSchema: VgiSchema | null;\n settings: Record<string, any>;\n secrets: Record<string, Record<string, any>>;\n}\n\nexport interface AggregateUpdateParams<TArgs = Record<string, any>, TState = any> {\n states: Map<bigint, TState>;\n groupIds: bigint[];\n columns: any[]; // arrow Vectors per declared param\n args: TArgs;\n /**\n * Get-or-initialize accessor for per-group state. Call this inside the loop\n * only when the row actually contributes to the aggregate — skipping it\n * (e.g. on NULL input under NullHandling.DEFAULT) leaves `states` without\n * an entry for the group, so finalize() can return SQL NULL for that\n * group (matches vgi-python's \"state absent = NULL\" semantics for\n * SUM/AVG/MIN/MAX over zero non-null rows).\n */\n ensureState: (gid: bigint) => TState;\n}\n\nexport interface AggregateFinalizeParams<TArgs = Record<string, any>, TState = any> {\n groupIds: bigint[];\n states: Map<bigint, TState | null>;\n outputSchema: VgiSchema;\n args: TArgs;\n}\n\nexport interface AggregateFunctionConfig<TArgs = Record<string, any>, TState = any> {\n name: string;\n description?: string;\n /**\n * Map of positional argument name → Arrow type. Passed through to DuckDB\n * function registration. Use `null` (untyped) for varargs placeholders.\n */\n args?: Record<string, VgiDataType>;\n /**\n * Names of args that accept a variable number of column arguments. DuckDB\n * treats these as varargs of the declared Arrow type; at call time the\n * function may receive 1..N columns of that type. update() sees all of\n * them as consecutive entries in `columns`.\n */\n varargs?: string[];\n /**\n * Names of args whose value is constant (known at bind time) and must be\n * folded away by DuckDB before reaching update(). The value arrives in\n * `bindParams.args[name]`; it is NOT passed as an input column in the\n * update batch. Use for aggregates parameterized by a literal (e.g.\n * percentile=0.5 in vgi_percentile).\n */\n constParams?: string[];\n /**\n * Arrow type of the aggregate's output (one value per group). DuckDB uses\n * this to build the result column type at bind time. May be overridden\n * at bind time by `onBind` (returning a different Arrow type) for\n * aggregates whose return type depends on the input column type\n * (e.g. vgi_generic_sum: BIGINT input → BIGINT output, DOUBLE → DOUBLE).\n */\n outputType: VgiDataType;\n /**\n * Optional bind-time hook for dynamic output types. Receives the bind\n * parameters (including input_schema) and returns the Arrow type to\n * advertise for this invocation. Defaults to returning `config.outputType`.\n */\n onBind?: (params: AggregateBindParams<TArgs>) => VgiDataType | Promise<VgiDataType>;\n /** Optional per-arg default values (positional only here). */\n argDefaults?: Record<string, any>;\n /**\n * Per-argument discovery constraints (choices / ge / le / gt / lt / pattern),\n * keyed by argument name. Surfaced via `vgi_function_arguments()` and enforced\n * at aggregate_bind for const params: a value violating a declared constraint\n * fails the bind with an ArgumentValidationError.\n */\n argConstraints?: Record<string, ArgumentConstraints>;\n\n initialState: (params: AggregateBindParams<TArgs>) => TState;\n /**\n * Fold a batch of input rows into the provided per-group state map.\n * Implementations mutate `states` in place. `groupIds[i]` identifies which\n * group row i belongs to; `columns[k][i]` is the value for the kth declared\n * column argument at row i.\n */\n update: (params: AggregateUpdateParams<TArgs, TState>) => void;\n combine: (source: TState, target: TState, params: AggregateBindParams<TArgs>) => TState;\n /** Must return a single-column RecordBatch with `groupIds.length` rows. */\n finalize: (params: AggregateFinalizeParams<TArgs, TState>) => VgiBatch;\n\n examples?: FunctionExample[];\n categories?: string[];\n /** Arbitrary function-level tags surfaced into duckdb_functions().tags. */\n tags?: Record<string, string>;\n nullHandling?: \"DEFAULT\" | \"SPECIAL\";\n /**\n * DuckDB secret types this aggregate needs. Advertised on the catalog's\n * `required_secrets` so the C++ extension pre-resolves matching secrets and\n * delivers their VALUES on the aggregate_bind request (keyed by secret name).\n * The secret is read at bind time only — update/combine/finalize receive an\n * empty ResolvedSecrets. Mirrors vgi-python's `Secret()` annotation on an\n * aggregate `on_bind`.\n */\n requiredSecrets?: string[];\n}\n\n// Per-execution state registry. Value = (gid → state) + bind context.\n//\n// Under DuckDB's parallel aggregate with worker pooling, aggregate_* RPCs for\n// the same execution_id can land on different worker processes — so state\n// needs to live in a place all workers can reach. We use a filesystem-backed\n// store (one directory per execution_id, one JSON file per group_id) with\n// atomic rename-on-write. Fine for subprocess transport and for\n// single-instance HTTP; multi-host HTTP would need a shared path or a\n// swap-in network backend. Override with VGI_AGG_STATE_DIR.\n//\n// In-memory cache sits in front of the filesystem to keep single-process\n// workloads fast — writes go to disk, reads prefer cache, and getExecutionState\n// lazily reconstructs from disk when a different worker's exec is requested.\n\ntype StateMap = Map<bigint, any>;\n\ninterface ExecEntry {\n states: StateMap;\n bindArgs: Arguments;\n bindParams: AggregateBindParams<any>;\n loaded: Set<bigint>; // gids fetched from disk (so we don't refetch in same call)\n}\n\nconst stateStore = new Map<string, ExecEntry>();\n\n// Custom JSON codec: BigInt ↔ {\"__bigint__\":\"…\"}. Keep the encoder/decoder\n// centralized so aggregate state classes with int64 fields (CountState,\n// SumState, etc.) round-trip without extra wiring.\nfunction jsonReplacer(_: string, v: any): any {\n if (typeof v === \"bigint\") return { __bigint__: v.toString() };\n return v;\n}\nfunction jsonReviver(_: string, v: any): any {\n if (v && typeof v === \"object\" && typeof (v as any).__bigint__ === \"string\") {\n return BigInt((v as any).__bigint__);\n }\n return v;\n}\n\nfunction stateDirRoot(): string {\n return process.env.VGI_AGG_STATE_DIR ?? path.join(os.tmpdir(), \"vgi-agg\");\n}\n\nfunction execDir(execHex: string): string {\n return path.join(stateDirRoot(), execHex);\n}\n\nfunction execKey(executionId: Uint8Array): string {\n let s = \"\";\n for (const b of executionId) s += b.toString(16).padStart(2, \"0\");\n return s;\n}\n\n// Atomic write: write to tmp then rename. Avoids partial reads from another\n// worker mid-update. Node's fs.renameSync is atomic on POSIX for same FS.\nfunction atomicWriteJson(filePath: string, value: any): void {\n const tmp = filePath + \".tmp.\" + process.pid + \".\" + Math.random().toString(36).slice(2);\n const parent = path.dirname(filePath);\n fs.mkdirSync(parent, { recursive: true });\n fs.writeFileSync(tmp, JSON.stringify(value, jsonReplacer));\n fs.renameSync(tmp, filePath);\n}\n\nfunction tryReadJson(filePath: string): any | undefined {\n try {\n const text = fs.readFileSync(filePath, \"utf8\");\n return JSON.parse(text, jsonReviver);\n } catch (e: any) {\n if (e?.code === \"ENOENT\") return undefined;\n throw e;\n }\n}\n\n/**\n * Fetch the execution context — bind args/params + states for requested gids.\n * On cache miss, tries to reconstruct from on-disk files written by a\n * sibling worker. Returns undefined if the exec never existed anywhere.\n * `requestedGids` (optional) tells us which group states to pre-load.\n */\nexport function getExecutionState(\n executionId: Uint8Array,\n requestedGids?: Iterable<bigint>,\n): ExecEntry | undefined {\n const key = execKey(executionId);\n let entry = stateStore.get(key);\n if (!entry) {\n // Try to reconstruct bind context from disk.\n const ctx = tryReadJson(path.join(execDir(key), \"context.json\"));\n if (!ctx) return undefined;\n // Restore bindParams + args from the serialized context. args is kept\n // only as a plain dict; the Arguments instance isn't needed after bind.\n entry = {\n states: new Map(),\n bindArgs: ctx.bindArgs, // placeholder — Arguments instance is only needed during bind\n bindParams: ctx.bindParams,\n loaded: new Set(),\n };\n stateStore.set(key, entry);\n }\n if (requestedGids) {\n // Always re-read from disk each RPC. A sibling worker may have just\n // written a newer value for this gid; relying on our in-memory cache\n // would overwrite their update on our next persist (read-modify-write\n // race). File I/O per-RPC is cheap compared to the RPC overhead.\n for (const gid of requestedGids) {\n const stateFile = path.join(execDir(key), gid.toString() + \".json\");\n const s = tryReadJson(stateFile);\n if (s !== undefined) {\n entry.states.set(gid, s);\n } else {\n entry.states.delete(gid);\n }\n entry.loaded.add(gid);\n }\n }\n return entry;\n}\n\nexport function setExecutionState(\n executionId: Uint8Array,\n entry: Omit<ExecEntry, \"loaded\">,\n): void {\n const key = execKey(executionId);\n stateStore.set(key, { ...entry, loaded: new Set() });\n // Persist bind context so sibling workers can reconstruct it on demand.\n atomicWriteJson(path.join(execDir(key), \"context.json\"), {\n bindParams: entry.bindParams,\n // bindArgs is a live Arguments instance; stash its args map separately\n // if needed for future state-dependent behavior. Workers reading the\n // context receive `bindParams.args` which is what update/finalize use.\n });\n}\n\n/**\n * Persist the given group states to disk so sibling workers can pick them up.\n * Deletes the on-disk entry when the in-memory state was removed (gid no\n * longer present in states map).\n */\nexport function persistGroupStates(\n executionId: Uint8Array,\n gids: Iterable<bigint>,\n): void {\n const key = execKey(executionId);\n const entry = stateStore.get(key);\n if (!entry) return;\n for (const gid of gids) {\n const stateFile = path.join(execDir(key), gid.toString() + \".json\");\n if (entry.states.has(gid)) {\n atomicWriteJson(stateFile, entry.states.get(gid));\n } else {\n try { fs.unlinkSync(stateFile); } catch { /* already gone */ }\n }\n entry.loaded.add(gid);\n }\n}\n\nexport function deleteExecutionState(executionId: Uint8Array): void {\n const key = execKey(executionId);\n stateStore.delete(key);\n try { fs.rmSync(execDir(key), { recursive: true, force: true }); } catch { /* best-effort */ }\n}\n\n/**\n * Declare an aggregate function. The returned VgiFunction has `kind:\n * \"aggregate\"` plus a `config` handle the dispatch layer uses to drive the\n * aggregate_* RPCs; the scalar/table-function code paths ignore it.\n */\nexport function defineAggregate<TArgs = Record<string, any>, TState = any>(\n config: AggregateFunctionConfig<TArgs, TState>,\n): VgiFunction & { aggregateConfig: AggregateFunctionConfig<TArgs, TState> } {\n const specs: ArgumentSpec[] = [];\n let posIdx = 0;\n const varargsSet = new Set(config.varargs ?? []);\n const constSet = new Set(config.constParams ?? []);\n if (config.args) {\n for (const [name, type] of Object.entries(config.args)) {\n const hasDefault = config.argDefaults?.[name] !== undefined;\n const isConst = constSet.has(name);\n const isAnyType = isNull(type);\n // Const params are always positional at the SQL call-site — a default\n // value just means \"the user may omit it and we'll use the default\",\n // not \"rename to a named kwarg\". Non-const args with defaults become\n // named (matches table-function behavior).\n specs.push({\n name,\n position: isConst || !hasDefault ? posIdx++ : name,\n arrowType: isAnyType ? nullType() : type,\n isAnyType,\n isVarargs: varargsSet.has(name),\n isConst,\n ...constraintSpecFields(config.argConstraints?.[name]),\n });\n }\n }\n\n const meta: FunctionMeta = {\n name: config.name,\n description: config.description,\n examples: config.examples,\n categories: config.categories,\n tags: config.tags,\n nullHandling: config.nullHandling as any,\n requiredSecrets: config.requiredSecrets,\n };\n\n // The normal VgiFunction methods (bind/globalInit/createStreamHandlers) are\n // never invoked for aggregates — the dispatch layer routes aggregate_* RPCs\n // through the separate aggregate_* handler. Provide stubs that throw so\n // misrouted calls surface loudly rather than silently hanging.\n // Catalog output schema: single \"result\" column. Advertise config.outputType\n // when it's a real type (anything other than Null) — onBind may still override\n // at bind time, but for the catalog listing we prefer the static declaration\n // so duckdb_functions() shows a meaningful return type. Aggregates whose\n // return type genuinely depends on input set outputType: nullType() to\n // advertise ANY explicitly.\n const isAnyType = isNull(config.outputType);\n const defaultOutputSchema = isAnyType\n ? schema([field(\"result\", nullType(), true, new Map([[\"vgi:any\", \"true\"]]))])\n : schema([field(\"result\", config.outputType, true)]);\n\n return {\n kind: \"aggregate\" as any,\n meta,\n argumentSpecs: specs,\n defaultOutputSchema,\n bind: () => { throw new Error(`aggregate '${config.name}' received bind() — should be routed through aggregate_bind`); },\n globalInit: () => { throw new Error(`aggregate '${config.name}' received globalInit() — should be routed through aggregate_bind`); },\n createStreamHandlers: () => { throw new Error(`aggregate '${config.name}' is unary — no stream handlers`); },\n aggregateConfig: config,\n } as VgiFunction & { aggregateConfig: AggregateFunctionConfig<TArgs, TState> };\n}\n",
|
|
33
33
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Table In-Out function implementation.\n// Two-phase: INPUT phase receives and transforms batches,\n// FINALIZE phase emits final results.\n\nimport { type VgiSchema, schema, type VgiField, type VgiDataType, type VgiBatch, nullType } from \"../arrow/index.js\";\nimport type { OutputCollector } from \"@query-farm/vgi-rpc\";\nimport { DEFAULT_MAX_WORKERS, TableInOutPhase } from \"../types.js\";\nimport type {\n BindRequest,\n BindResponse,\n InitRequest,\n GlobalInitResponse,\n} from \"../protocol/types.js\";\nimport type {\n VgiFunction,\n FunctionMeta,\n StreamHandlers,\n FunctionExample,\n} from \"./types.js\";\nimport type { ArgumentSpec } from \"../arguments/argument-spec.js\";\nimport { batchToScalarDict, batchToSecretDict, projectSchema, projectBatch, emptyBatch } from \"../util/arrow/index.js\";\nimport {\n buildJoinKeysLookup,\n deserializeFilters,\n FilteringOutputCollector,\n type PushdownFilters,\n} from \"../filter-pushdown/index.js\";\nimport { FunctionStability } from \"../types.js\";\nimport { BoundStorage, storage as defaultStorage } from \"./storage.js\";\nimport { serializeUserState, deserializeUserState } from \"../protocol/state-serializer.js\";\n\n// ============================================================================\n// Table In-Out parameter bundles (reuse table function's)\n// ============================================================================\n\nexport interface TableInOutBindParams<TArgs = Record<string, any>> {\n args: TArgs;\n bindCall: BindRequest;\n settings: Record<string, any>;\n secrets: Record<string, Record<string, any>>;\n}\n\nexport interface TableInOutProcessParams<TArgs = Record<string, any>> {\n args: TArgs;\n initCall: InitRequest;\n initResponse: GlobalInitResponse;\n outputSchema: VgiSchema;\n settings: Record<string, any>;\n secrets: Record<string, Record<string, any>>;\n pushdownFilters?: PushdownFilters;\n /** Shared storage for cross-phase and cross-worker data (SQLite-backed). */\n storage: BoundStorage;\n}\n\n// ============================================================================\n// Functional API\n// ============================================================================\n\nexport interface TableInOutConfig<\n TArgs = Record<string, any>,\n TState = null,\n> {\n name: string;\n description?: string;\n args?: Record<string, VgiDataType>;\n /** Named arguments (optional, DuckDB passes by name) */\n namedArgs?: Record<string, VgiDataType>;\n /** Argument defaults */\n argDefaults?: Record<string, any>;\n /** Bind: default passes through input schema. May be async. */\n onBind?: (params: TableInOutBindParams<TArgs>) =>\n | { outputSchema: VgiSchema; opaqueData?: Uint8Array }\n | Promise<{ outputSchema: VgiSchema; opaqueData?: Uint8Array }>;\n onInit?: (params: {\n args: TArgs;\n initCall: InitRequest;\n outputSchema: VgiSchema;\n executionId: Uint8Array;\n }) => GlobalInitResponse | Promise<GlobalInitResponse>;\n initialState?: (params: TableInOutProcessParams<TArgs>) => TState;\n /** Process: transform input batch, emit output via out */\n process?: (\n params: TableInOutProcessParams<TArgs>,\n state: TState,\n batch: VgiBatch,\n out: OutputCollector\n ) => void | Promise<void>;\n /** Finalize: emit final batches after all input processed.\n * Receives all worker states collected from storage (matches Python's finish(params, states)). */\n finalize?: (\n params: TableInOutProcessParams<TArgs>,\n states: TState[]\n ) => VgiBatch[] | Promise<VgiBatch[]>;\n // Metadata\n projectionPushdown?: boolean;\n filterPushdown?: boolean;\n autoApplyFilters?: boolean;\n stability?: FunctionStability;\n examples?: FunctionExample[];\n categories?: string[];\n tags?: Record<string, string>;\n maxWorkers?: number;\n requiredSettings?: string[];\n requiredSecrets?: string[];\n}\n\nexport function defineTableInOutFunction<\n TArgs = Record<string, any>,\n TState = null,\n>(config: TableInOutConfig<TArgs, TState>): VgiFunction {\n\n // Build argument specs\n const specs: ArgumentSpec[] = [];\n let posIdx = 0;\n\n // Positional args come before the table input\n if (config.args) {\n for (const [name, type] of Object.entries(config.args)) {\n specs.push({\n name,\n position: posIdx++,\n arrowType: type,\n });\n }\n }\n\n // Table-in-out always has a table input (after positional args)\n specs.push({\n name: \"data\",\n position: posIdx++,\n arrowType: nullType(),\n isTableInput: true,\n });\n\n if (config.namedArgs) {\n for (const [name, type] of Object.entries(config.namedArgs)) {\n specs.push({\n name,\n position: name, // string position = named arg\n arrowType: type,\n });\n }\n }\n\n const meta: FunctionMeta = {\n name: config.name,\n description: config.description,\n stability: config.stability,\n projectionPushdown: config.projectionPushdown,\n filterPushdown: config.filterPushdown,\n autoApplyFilters: config.autoApplyFilters,\n examples: config.examples,\n categories: config.categories,\n tags: config.tags,\n maxWorkers: config.maxWorkers,\n requiredSettings: config.requiredSettings,\n requiredSecrets: config.requiredSecrets,\n hasFinalize: !!config.finalize,\n };\n\n function extractArgs(request: BindRequest): TArgs {\n const args: Record<string, any> = {};\n for (const spec of specs) {\n if (spec.isTableInput) continue;\n const defaultVal =\n config.argDefaults?.[spec.name] !== undefined\n ? config.argDefaults[spec.name]\n : undefined;\n // For named args, position is a string (the arg name)\n let val = request.arguments.get(spec.position, defaultVal);\n // Arrow Int64 values come through as BigInt — coerce to number\n if (typeof val === \"bigint\") val = Number(val);\n args[spec.name] = val;\n }\n return args as TArgs;\n }\n\n return {\n kind: \"table_in_out\",\n meta,\n argumentSpecs: specs,\n\n async bind(request: BindRequest): Promise<BindResponse> {\n if (config.onBind) {\n const args = extractArgs(request);\n const settings = batchToScalarDict(request.settings);\n const secrets = batchToSecretDict(request.secrets);\n const result = await config.onBind({\n args,\n bindCall: request,\n settings,\n secrets,\n });\n return {\n output_schema: result.outputSchema,\n opaque_data: result.opaqueData ?? null,\n };\n }\n // Default: pass through input schema\n return {\n output_schema: request.input_schema ?? schema([]),\n opaque_data: null,\n };\n },\n\n async globalInit(request: InitRequest): Promise<GlobalInitResponse> {\n const executionId = new Uint8Array(16);\n crypto.getRandomValues(executionId);\n\n if (request.execution_id) {\n return {\n max_workers: DEFAULT_MAX_WORKERS,\n execution_id: request.execution_id,\n opaque_data: null,\n };\n }\n\n if (config.onInit) {\n const args = extractArgs(request.bind_call);\n return await config.onInit({\n args,\n initCall: request,\n outputSchema: request.output_schema,\n executionId,\n });\n }\n\n return {\n max_workers: config.maxWorkers ?? 1,\n execution_id: executionId,\n opaque_data: null,\n };\n },\n\n createStreamHandlers(\n request: InitRequest,\n response: GlobalInitResponse,\n accumulatedState?: any,\n ): StreamHandlers {\n const args = extractArgs(request.bind_call);\n const settings = batchToScalarDict(request.bind_call.settings);\n const secrets = batchToSecretDict(request.bind_call.secrets);\n\n // Apply projection pushdown only if the function supports it\n const projIds = request.projection_ids && meta.projectionPushdown\n ? request.projection_ids\n : null;\n const outputSchema = projIds\n ? projectSchema(projIds, request.output_schema)\n : request.output_schema;\n\n // Deserialize pushdown filters. Pass a join-keys column lookup so that\n // filters DuckDB promoted to join_keys (IN/OR lists, etc.) are\n // materialized as InFilters rather than silently dropped.\n const joinKeysLookup = buildJoinKeysLookup(request.join_keys);\n const pushdownFilters = request.pushdown_filters\n ? deserializeFilters(request.pushdown_filters, joinKeysLookup)\n : undefined;\n\n // Create BoundStorage for cross-phase/cross-worker data sharing\n const boundStorage = new BoundStorage(\n defaultStorage,\n response.execution_id ?? new Uint8Array(16),\n );\n\n const processParams: TableInOutProcessParams<TArgs> = {\n args,\n initCall: request,\n initResponse: response,\n outputSchema,\n settings,\n secrets,\n pushdownFilters,\n storage: boundStorage,\n };\n\n const phase = request.phase;\n\n if (phase === TableInOutPhase.FINALIZE) {\n // FINALIZE phase: producer mode.\n // The actual collect+finalize work is deferred into the first\n // producerFn call so the (now-async) FunctionStorage can be awaited\n // there. Storing the materialized batches on the per-call state.\n return {\n outputSchema,\n producerInit: () => ({ state: { batchIdx: 0 }, batches: null as VgiBatch[] | null }),\n producerFn: async (\n pState: { state: { batchIdx: number }; batches: VgiBatch[] | null },\n out: OutputCollector\n ) => {\n if (pState.batches == null) {\n const finalizeStates: TState[] = [];\n if (accumulatedState != null) {\n finalizeStates.push(accumulatedState as TState);\n }\n // Collect any states persisted by INPUT exchanges. Subprocess\n // path reads from SQLite; HTTP path reads from CF DO / wherever\n // the configured storage backend lives.\n const stored = await boundStorage.collect();\n for (const bytes of stored) {\n finalizeStates.push(deserializeUserState(bytes) as TState);\n }\n if (finalizeStates.length === 0) {\n finalizeStates.push(\n config.initialState\n ? config.initialState(processParams)\n : (null as TState),\n );\n }\n pState.batches = config.finalize\n ? await config.finalize(processParams, finalizeStates)\n : [];\n }\n if (pState.state.batchIdx >= pState.batches.length) {\n out.finish();\n return;\n }\n out.emit(pState.batches[pState.state.batchIdx]);\n pState.state.batchIdx++;\n if (pState.state.batchIdx >= pState.batches.length) {\n out.finish();\n }\n },\n };\n }\n\n // INPUT phase: exchange mode\n const state = config.initialState\n ? config.initialState(processParams)\n : (null as TState);\n\n const processFn =\n config.process ??\n ((_params: any, _state: any, batch: VgiBatch, out: OutputCollector) => {\n // Default passthrough. When DuckDB pushed a projection, the declared\n // output schema is narrowed to `projIds`, so the emitted batch must be\n // narrowed too — otherwise it carries columns (and their dictionaries)\n // the stream schema doesn't declare, and the C++ reader rejects the\n // batch (e.g. \"No record of dictionary type with id 1\" when the\n // dropped columns were dictionary-encoded ENUMs).\n out.emit(projIds ? projectBatch(projIds, batch) : batch);\n });\n\n return {\n outputSchema,\n inputSchema: request.bind_call.input_schema ?? undefined,\n exchangeInit: () => ({ state, processParams }),\n exchangeFn: async (\n eState: {\n state: TState;\n processParams: TableInOutProcessParams<TArgs>;\n },\n input: VgiBatch,\n out: OutputCollector\n ) => {\n const wrappedOut = (config.autoApplyFilters && pushdownFilters)\n ? new FilteringOutputCollector(out, pushdownFilters) as unknown as OutputCollector\n : out;\n await processFn(eState.processParams, eState.state, input, wrappedOut);\n\n // Auto-persist accumulated state for FINALIZE recovery (matches Python/Go pattern)\n if (eState.state != null) {\n const serialized = serializeUserState(eState.state);\n if (serialized != null) {\n await boundStorage.put(serialized);\n }\n }\n },\n };\n },\n };\n}\n",
|
|
34
34
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Arrow IPC state serializer for HTTP transport.\n// Replaces JSON serialization with Arrow IPC for the exchange state token,\n// avoiding base64/hex overhead and staying consistent with the rest of the protocol.\n\nimport {\n type VgiDataType,\n type VgiField,\n schema as makeSchema,\n field,\n struct as makeStruct,\n binary,\n int64,\n bool,\n float64,\n utf8,\n nullType,\n isStruct,\n isBinary,\n serializeBatch,\n deserializeBatch,\n batchFromColumns,\n readCanonicalValue,\n} from \"../arrow/index.js\";\nimport { codecFor } from \"../arrow/codec/registry.js\";\nimport type { StateSerializer } from \"@query-farm/vgi-rpc\";\nimport { toUint8Array } from \"../util/bytes.js\";\n\n/** Schema for the exchange state carried in HTTP state tokens. */\nexport const EXCHANGE_STATE_SCHEMA = makeSchema([\n field(\"function_name\", binary(), false),\n field(\"init_request\", binary(), false),\n field(\"execution_id\", binary(), false),\n field(\"max_workers\", int64(), false),\n field(\"opaque_data\", binary(), true),\n field(\"is_producer\", bool(), false),\n field(\"user_state\", binary(), true),\n]);\n\nconst TEXT_ENCODER = new TextEncoder();\nconst TEXT_DECODER = new TextDecoder();\n\n/** Infer an Arrow DataType from a JS value for user state serialization. */\nexport function inferFieldType(value: any): VgiDataType {\n if (value === null || value === undefined) return nullType();\n switch (typeof value) {\n case \"number\": return float64();\n case \"bigint\": return int64();\n case \"string\": return utf8();\n case \"boolean\": return bool();\n case \"object\":\n if (value instanceof Uint8Array || value instanceof ArrayBuffer) return binary();\n if (ArrayBuffer.isView(value)) return binary();\n if (Array.isArray(value)) {\n throw new Error(`inferFieldType: arrays are not supported in userState (convert to a serializable form first)`);\n }\n if (value instanceof Map) {\n throw new Error(`inferFieldType: Map is not supported in userState (use a plain object instead)`);\n }\n if (value instanceof Set) {\n throw new Error(`inferFieldType: Set is not supported in userState (use an array or plain object instead)`);\n }\n if (value instanceof Date) {\n throw new Error(`inferFieldType: Date is not supported in userState (use a number (epoch ms) or ISO string instead)`);\n }\n if (value instanceof RegExp) {\n throw new Error(`inferFieldType: RegExp is not supported in userState (use a string pattern instead)`);\n }\n // Plain object → Struct\n const fields = Object.entries(value).map(\n ([k, v]) => field(k, inferFieldType(v), true),\n );\n return makeStruct(fields);\n default:\n throw new Error(`inferFieldType: unsupported type '${typeof value}'`);\n }\n}\n\n/**\n * Serialize userState to Arrow IPC bytes.\n * Infers schema from the JS object at runtime. Arrow IPC is self-describing,\n * so deserialization doesn't need the schema ahead of time.\n *\n * For an empty object `{}`, we emit a 0-row batch with empty schema —\n * `deserializeUserState` recognizes that shape and returns `{}` rather than\n * `null`. (`null` is reserved for \"no userState declared at all\".)\n */\nexport function serializeUserState(userState: any): Uint8Array | null {\n if (userState == null) return null;\n const entries = Object.entries(userState);\n if (entries.length === 0) {\n // 0-row, 0-field batch — round-trips back to {} via deserializeUserState.\n return serializeBatch(batchFromColumns({}, makeSchema([])));\n }\n const fields = entries.map(\n ([k, v]) => field(k, inferFieldType(v), true),\n );\n const sch = makeSchema(fields);\n const columns: Record<string, any[]> = {};\n for (const [key, val] of entries) {\n columns[key] = [val];\n }\n return serializeBatch(batchFromColumns(columns, sch));\n}\n\n/**\n * Extract a typed value from an Arrow column in RICH form via the codec /\n * canonical path. Backend-agnostic and lossless (BigInt for Int64, Uint8Array\n * for Binary, plain objects for Struct). userState forbids Date/temporal types\n * (see {@link inferFieldType}), so rich == canonical for everything stored here.\n */\nfunction extractTypedValue(col: any, index: number, type: VgiDataType): any {\n return codecFor(type).canonicalToRich(readCanonicalValue(type, col, index));\n}\n\n/**\n * Deserialize userState from Arrow IPC bytes.\n * Reconstructs a plain JS object, preserving BigInt for Int64 columns.\n */\nexport function deserializeUserState(bytes: Uint8Array | null): any {\n if (bytes == null) return null;\n const batch = deserializeBatch(bytes);\n if (batch.numRows === 0 && batch.schema.fields.length === 0) {\n return {};\n }\n if (batch.numRows === 0) return null;\n const result: Record<string, any> = {};\n for (const f of batch.schema.fields) {\n const col = batch.getChild(f.name);\n if (!col) { result[f.name] = null; continue; }\n result[f.name] = extractTypedValue(col, 0, f.type);\n }\n return result;\n}\n\n/** Arrow IPC state serializer — stores all data as native binary columns. */\nexport const arrowStateSerializer: StateSerializer = {\n serialize(state: any): Uint8Array {\n const columns: Record<string, any[]> = {\n function_name: [TEXT_ENCODER.encode(state.functionName)],\n init_request: [state.initRequestIpc],\n execution_id: [state.executionId],\n max_workers: [state.maxWorkers],\n opaque_data: [state.opaqueData ?? null],\n is_producer: [state.isProducer],\n user_state: [serializeUserState(state.userState)],\n };\n const batch = batchFromColumns(columns, EXCHANGE_STATE_SCHEMA);\n return serializeBatch(batch);\n },\n\n deserialize(bytes: Uint8Array): any {\n const batch = deserializeBatch(bytes);\n const fieldByName = new Map(batch.schema.fields.map((f) => [f.name, f]));\n const get = (name: string) => {\n const col = batch.getChild(name);\n const f = fieldByName.get(name);\n if (!col || !f) return null;\n const type = f.type as unknown as VgiDataType;\n return codecFor(type).canonicalToRich(readCanonicalValue(type, col, 0));\n };\n\n const isProducer = get(\"is_producer\");\n const opaqueDataRaw = get(\"opaque_data\");\n const fnNameRaw = get(\"function_name\");\n\n return {\n functionName: fnNameRaw != null ? TEXT_DECODER.decode(toUint8Array(fnNameRaw)) : \"\",\n initRequestIpc: toUint8Array(get(\"init_request\")),\n executionId: toUint8Array(get(\"execution_id\")),\n maxWorkers: Number(get(\"max_workers\")),\n opaqueData: opaqueDataRaw != null ? toUint8Array(opaqueDataRaw) : null,\n isProducer,\n // vgi-rpc dispatch reads __isProducer to choose producer vs exchange mode\n __isProducer: isProducer,\n userState: deserializeUserState(\n get(\"user_state\") != null ? toUint8Array(get(\"user_state\")) : null,\n ),\n };\n },\n};\n",
|
|
35
35
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Shared byte-conversion utility. Browser-safe (no bare Buffer.isBuffer).\n\n/** Convert any binary-ish value to a Uint8Array. Returns empty array for null/undefined. */\nexport function toUint8Array(val: any): Uint8Array {\n if (val instanceof Uint8Array) return val;\n if (val instanceof ArrayBuffer) return new Uint8Array(val);\n if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(val))\n return new Uint8Array(val);\n if (val && val.buffer instanceof ArrayBuffer) {\n return new Uint8Array(val.buffer, val.byteOffset, val.byteLength);\n }\n return new Uint8Array(0);\n}\n",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"/**\n * Poly1305 ({@link https://cr.yp.to/mac/poly1305-20050329.pdf | PDF},\n * {@link https://en.wikipedia.org/wiki/Poly1305 | wiki})\n * is a fast and parallel secret-key message-authentication code suitable for\n * a wide variety of applications. It was standardized in\n * {@link https://www.rfc-editor.org/rfc/rfc8439 | RFC 8439} and is now used in TLS 1.3.\n *\n * Polynomial MACs are not perfect for every situation:\n * they lack Random Key Robustness: the MAC can be forged, and can't be used in PAKE schemes.\n * See {@link https://keymaterial.net/2020/09/07/invisible-salamanders-in-aes-gcm-siv/ | the invisible salamanders attack writeup}.\n * To combat invisible salamanders, `hash(key)` can be included in ciphertext,\n * however, this would violate ciphertext indistinguishability:\n * an attacker would know which key was used - so `HKDF(key, i)`\n * could be used instead.\n *\n * Check out the {@link https://cr.yp.to/mac.html | original website}.\n * Based on public-domain {@link https://github.com/floodyberry/poly1305-donna | poly1305-donna}.\n * @module\n */\n// prettier-ignore\nimport { abytes, aexists, aoutput, bytesToHex, clean, concatBytes, copyBytes, hexToNumber, numberToBytesBE, wrapMacConstructor } from \"./utils.js\";\n// Little-endian 2-byte load used by the Poly1305 limb decomposition.\nfunction u8to16(a, i) {\n return (a[i++] & 0xff) | ((a[i++] & 0xff) << 8);\n}\nfunction bytesToNumberLE(bytes) {\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\n/** Small version of `poly1305` without loop unrolling. Unused, provided for auditability. */\nfunction poly1305_small(msg, key) {\n abytes(msg);\n abytes(key, 32, 'key');\n const POW_2_130_5 = BigInt(2) ** BigInt(130) - BigInt(5); // 2^130-5\n const POW_2_128_1 = BigInt(2) ** BigInt(128) - BigInt(1); // 2^128-1\n const CLAMP_R = BigInt('0x0ffffffc0ffffffc0ffffffc0fffffff');\n const r = bytesToNumberLE(key.subarray(0, 16)) & CLAMP_R;\n const s = bytesToNumberLE(key.subarray(16));\n // Process by 16 byte chunks\n let acc = BigInt(0);\n for (let i = 0; i < msg.length; i += 16) {\n const m = msg.subarray(i, i + 16);\n // RFC 8439 §2.5.1 / RFC 7539 §2.5.1 append [0x01] to each chunk before multiplying by r.\n const n = bytesToNumberLE(m) | (BigInt(1) << BigInt(8 * m.length));\n acc = ((acc + n) * r) % POW_2_130_5;\n }\n const res = (acc + s) & POW_2_128_1;\n // RFC 8439 §2.5 / RFC 7539 §2.5 serialize the low 128 bits in little-endian order.\n return numberToBytesBE(res, 16).reverse(); // LE\n}\n// Can be used to replace `computeTag` in chacha.ts. Unused, provided for auditability.\n// @ts-expect-error\nfunction poly1305_computeTag_small(authKey, \n// AEAD trailer must already be the 16-byte length block:\n// 8-byte little-endian AAD length || 8-byte little-endian ciphertext length.\nlengths, ciphertext, AAD) {\n // RFC 8439 §2.8.1 / RFC 7539 §2.8.1 MAC input is\n // AAD || pad16(AAD) || ciphertext || pad16(ciphertext) || lengths.\n const res = [];\n const updatePadded2 = (msg) => {\n res.push(msg);\n const leftover = msg.length % 16;\n // RFC 8439 §2.8.1 / RFC 7539 §2.8.1: pad16(x) is empty for aligned\n // inputs, else 16-(len%16) zero bytes.\n if (leftover)\n res.push(new Uint8Array(16).slice(leftover));\n };\n if (AAD)\n updatePadded2(AAD);\n updatePadded2(ciphertext);\n res.push(lengths);\n return poly1305_small(concatBytes(...res), authKey);\n}\n/**\n * Incremental Poly1305 MAC state.\n * Prefer `poly1305()` for one-shot use.\n * @param key - 32-byte Poly1305 one-time key.\n * @example\n * Feeds one chunk into an incremental Poly1305 state with a fresh one-time key.\n *\n * ```ts\n * import { Poly1305 } from '@noble/ciphers/_poly1305.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const mac = new Poly1305(key);\n * mac.update(new Uint8Array([1, 2, 3]));\n * mac.digest();\n * ```\n */\nexport class Poly1305 {\n blockLen = 16;\n outputLen = 16;\n buffer = new Uint8Array(16);\n r = new Uint16Array(10); // Allocating 1 array with .subarray() here is slower than 3\n h = new Uint16Array(10);\n pad = new Uint16Array(8);\n pos = 0;\n finished = false;\n destroyed = false;\n // Can be speed-up using BigUint64Array, at the cost of complexity\n constructor(key) {\n key = copyBytes(abytes(key, 32, 'key'));\n const t0 = u8to16(key, 0);\n const t1 = u8to16(key, 2);\n const t2 = u8to16(key, 4);\n const t3 = u8to16(key, 6);\n const t4 = u8to16(key, 8);\n const t5 = u8to16(key, 10);\n const t6 = u8to16(key, 12);\n const t7 = u8to16(key, 14);\n // RFC 8439 §2.5.1 / RFC 7539 §2.5.1 clamp r before multiplication.\n // These masks unpack that clamped value into 13-bit limbs, while pad\n // keeps the raw s half for finalize().\n // {@link https://github.com/floodyberry/poly1305-donna/blob/e6ad6e091d30d7f4ec2d4f978be1fcfcbce72781/poly1305-donna-16.h#L47 | poly1305-donna reference}\n this.r[0] = t0 & 0x1fff;\n this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = (t4 >>> 1) & 0x1ffe;\n this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = (t7 >>> 5) & 0x007f;\n for (let i = 0; i < 8; i++)\n this.pad[i] = u8to16(key, 16 + 2 * i);\n }\n process(data, offset, isLast = false) {\n // RFC 8439 §2.5 / §2.5.1 and RFC 7539 §2.5 / §2.5.1 add an extra high\n // bit to every full 16-byte block. The final partial block gets its\n // explicit `1` byte during digestInto(), so `hibit` stays zero there.\n const hibit = isLast ? 0 : 1 << 11;\n const { h, r } = this;\n const r0 = r[0];\n const r1 = r[1];\n const r2 = r[2];\n const r3 = r[3];\n const r4 = r[4];\n const r5 = r[5];\n const r6 = r[6];\n const r7 = r[7];\n const r8 = r[8];\n const r9 = r[9];\n const t0 = u8to16(data, offset + 0);\n const t1 = u8to16(data, offset + 2);\n const t2 = u8to16(data, offset + 4);\n const t3 = u8to16(data, offset + 6);\n const t4 = u8to16(data, offset + 8);\n const t5 = u8to16(data, offset + 10);\n const t6 = u8to16(data, offset + 12);\n const t7 = u8to16(data, offset + 14);\n let h0 = h[0] + (t0 & 0x1fff);\n let h1 = h[1] + (((t0 >>> 13) | (t1 << 3)) & 0x1fff);\n let h2 = h[2] + (((t1 >>> 10) | (t2 << 6)) & 0x1fff);\n let h3 = h[3] + (((t2 >>> 7) | (t3 << 9)) & 0x1fff);\n let h4 = h[4] + (((t3 >>> 4) | (t4 << 12)) & 0x1fff);\n let h5 = h[5] + ((t4 >>> 1) & 0x1fff);\n let h6 = h[6] + (((t4 >>> 14) | (t5 << 2)) & 0x1fff);\n let h7 = h[7] + (((t5 >>> 11) | (t6 << 5)) & 0x1fff);\n let h8 = h[8] + (((t6 >>> 8) | (t7 << 8)) & 0x1fff);\n let h9 = h[9] + ((t7 >>> 5) | hibit);\n let c = 0;\n let d0 = c + h0 * r0 + h1 * (5 * r9) + h2 * (5 * r8) + h3 * (5 * r7) + h4 * (5 * r6);\n c = d0 >>> 13;\n d0 &= 0x1fff;\n d0 += h5 * (5 * r5) + h6 * (5 * r4) + h7 * (5 * r3) + h8 * (5 * r2) + h9 * (5 * r1);\n c += d0 >>> 13;\n d0 &= 0x1fff;\n let d1 = c + h0 * r1 + h1 * r0 + h2 * (5 * r9) + h3 * (5 * r8) + h4 * (5 * r7);\n c = d1 >>> 13;\n d1 &= 0x1fff;\n d1 += h5 * (5 * r6) + h6 * (5 * r5) + h7 * (5 * r4) + h8 * (5 * r3) + h9 * (5 * r2);\n c += d1 >>> 13;\n d1 &= 0x1fff;\n let d2 = c + h0 * r2 + h1 * r1 + h2 * r0 + h3 * (5 * r9) + h4 * (5 * r8);\n c = d2 >>> 13;\n d2 &= 0x1fff;\n d2 += h5 * (5 * r7) + h6 * (5 * r6) + h7 * (5 * r5) + h8 * (5 * r4) + h9 * (5 * r3);\n c += d2 >>> 13;\n d2 &= 0x1fff;\n let d3 = c + h0 * r3 + h1 * r2 + h2 * r1 + h3 * r0 + h4 * (5 * r9);\n c = d3 >>> 13;\n d3 &= 0x1fff;\n d3 += h5 * (5 * r8) + h6 * (5 * r7) + h7 * (5 * r6) + h8 * (5 * r5) + h9 * (5 * r4);\n c += d3 >>> 13;\n d3 &= 0x1fff;\n let d4 = c + h0 * r4 + h1 * r3 + h2 * r2 + h3 * r1 + h4 * r0;\n c = d4 >>> 13;\n d4 &= 0x1fff;\n d4 += h5 * (5 * r9) + h6 * (5 * r8) + h7 * (5 * r7) + h8 * (5 * r6) + h9 * (5 * r5);\n c += d4 >>> 13;\n d4 &= 0x1fff;\n let d5 = c + h0 * r5 + h1 * r4 + h2 * r3 + h3 * r2 + h4 * r1;\n c = d5 >>> 13;\n d5 &= 0x1fff;\n d5 += h5 * r0 + h6 * (5 * r9) + h7 * (5 * r8) + h8 * (5 * r7) + h9 * (5 * r6);\n c += d5 >>> 13;\n d5 &= 0x1fff;\n let d6 = c + h0 * r6 + h1 * r5 + h2 * r4 + h3 * r3 + h4 * r2;\n c = d6 >>> 13;\n d6 &= 0x1fff;\n d6 += h5 * r1 + h6 * r0 + h7 * (5 * r9) + h8 * (5 * r8) + h9 * (5 * r7);\n c += d6 >>> 13;\n d6 &= 0x1fff;\n let d7 = c + h0 * r7 + h1 * r6 + h2 * r5 + h3 * r4 + h4 * r3;\n c = d7 >>> 13;\n d7 &= 0x1fff;\n d7 += h5 * r2 + h6 * r1 + h7 * r0 + h8 * (5 * r9) + h9 * (5 * r8);\n c += d7 >>> 13;\n d7 &= 0x1fff;\n let d8 = c + h0 * r8 + h1 * r7 + h2 * r6 + h3 * r5 + h4 * r4;\n c = d8 >>> 13;\n d8 &= 0x1fff;\n d8 += h5 * r3 + h6 * r2 + h7 * r1 + h8 * r0 + h9 * (5 * r9);\n c += d8 >>> 13;\n d8 &= 0x1fff;\n let d9 = c + h0 * r9 + h1 * r8 + h2 * r7 + h3 * r6 + h4 * r5;\n c = d9 >>> 13;\n d9 &= 0x1fff;\n d9 += h5 * r4 + h6 * r3 + h7 * r2 + h8 * r1 + h9 * r0;\n c += d9 >>> 13;\n d9 &= 0x1fff;\n c = ((c << 2) + c) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = c >>> 13;\n d1 += c;\n h[0] = d0;\n h[1] = d1;\n h[2] = d2;\n h[3] = d3;\n h[4] = d4;\n h[5] = d5;\n h[6] = d6;\n h[7] = d7;\n h[8] = d8;\n h[9] = d9;\n }\n finalize() {\n const { h, pad } = this;\n const g = new Uint16Array(10);\n let c = h[1] >>> 13;\n h[1] &= 0x1fff;\n for (let i = 2; i < 10; i++) {\n h[i] += c;\n c = h[i] >>> 13;\n h[i] &= 0x1fff;\n }\n h[0] += c * 5;\n c = h[0] >>> 13;\n h[0] &= 0x1fff;\n h[1] += c;\n c = h[1] >>> 13;\n h[1] &= 0x1fff;\n h[2] += c;\n // RFC 8439 §2.5 / RFC 7539 §2.5 reduce modulo 2^130-5 before repacking\n // to 16-bit words and adding the raw s half.\n g[0] = h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (let i = 1; i < 10; i++) {\n g[i] = h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= 1 << 13;\n let mask = (c ^ 1) - 1;\n for (let i = 0; i < 10; i++)\n g[i] &= mask;\n mask = ~mask;\n for (let i = 0; i < 10; i++)\n h[i] = (h[i] & mask) | g[i];\n h[0] = (h[0] | (h[1] << 13)) & 0xffff;\n h[1] = ((h[1] >>> 3) | (h[2] << 10)) & 0xffff;\n h[2] = ((h[2] >>> 6) | (h[3] << 7)) & 0xffff;\n h[3] = ((h[3] >>> 9) | (h[4] << 4)) & 0xffff;\n h[4] = ((h[4] >>> 12) | (h[5] << 1) | (h[6] << 14)) & 0xffff;\n h[5] = ((h[6] >>> 2) | (h[7] << 11)) & 0xffff;\n h[6] = ((h[7] >>> 5) | (h[8] << 8)) & 0xffff;\n h[7] = ((h[8] >>> 8) | (h[9] << 5)) & 0xffff;\n let f = h[0] + pad[0];\n h[0] = f & 0xffff;\n for (let i = 1; i < 8; i++) {\n f = (((h[i] + pad[i]) | 0) + (f >>> 16)) | 0;\n h[i] = f & 0xffff;\n }\n clean(g);\n }\n update(data) {\n aexists(this);\n abytes(data);\n data = copyBytes(data);\n const { buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input\n if (take === blockLen) {\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(data, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(buffer, 0, false);\n this.pos = 0;\n }\n }\n return this;\n }\n destroy() {\n // `aexists(this)` guards update/digest paths, so destroy must mark the instance unusable too.\n this.destroyed = true;\n clean(this.h, this.r, this.buffer, this.pad);\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n const { buffer, h } = this;\n let { pos } = this;\n if (pos) {\n // RFC 8439 §2.5 / RFC 7539 §2.5: the final short block appends a\n // single `0x01` byte and zero-fills the remaining bytes before the\n // last multiplication step.\n buffer[pos++] = 1;\n for (; pos < 16; pos++)\n buffer[pos] = 0;\n this.process(buffer, 0, true);\n }\n this.finalize();\n let opos = 0;\n for (let i = 0; i < 8; i++) {\n out[opos++] = h[i] >>> 0;\n out[opos++] = h[i] >>> 8;\n }\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n // Copy out before destroy() zeroes the internal buffer.\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n}\n/**\n * Poly1305 MAC from RFC 8439.\n * @param msg - Message bytes to authenticate.\n * @param key - 32-byte Poly1305 one-time key.\n * @returns 16-byte authentication tag.\n * @example\n * Authenticates one message with a one-shot Poly1305 call and a fresh key.\n *\n * ```ts\n * import { poly1305 } from '@noble/ciphers/_poly1305.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * poly1305(new Uint8Array(), key);\n * ```\n */\nexport const poly1305 = /* @__PURE__ */ wrapMacConstructor(32, (key) => new Poly1305(key));\n//# sourceMappingURL=_poly1305.js.map",
|
|
63
63
|
"/**\n * ChaCha stream cipher, released\n * in 2008. Developed after Salsa20, ChaCha aims to increase diffusion per round.\n * It was standardized in\n * {@link https://www.rfc-editor.org/rfc/rfc8439 | RFC 8439} and\n * is now used in TLS 1.3.\n *\n * {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | XChaCha20}\n * extended-nonce variant is also provided. Similar to XSalsa, it's safe to use with\n * randomly-generated nonces.\n *\n * Check out\n * {@link http://cr.yp.to/chacha/chacha-20080128.pdf | PDF},\n * {@link https://en.wikipedia.org/wiki/Salsa20 | wiki}, and\n * {@link https://cr.yp.to/chacha.html | website}.\n *\n * @module\n */\nimport { createCipher, createPRG, rotl } from \"./_arx.js\";\nimport { poly1305 } from \"./_poly1305.js\";\nimport { abytes, clean, equalBytes, getOutput, swap8IfBE, swap32IfBE, u64Lengths, wrapCipher, } from \"./utils.js\";\n/**\n * ChaCha core function. It is implemented twice:\n * 1. Simple loop (chachaCore_small, hchacha_small)\n * 2. Unrolled loop (chachaCore, hchacha) - 4x faster, but larger & harder to read\n * The specific implementation is selected in `createCipher` below.\n */\n/** RFC 8439 §2.1 quarter round on words a, b, c, d. */\n// prettier-ignore\nfunction chachaQR(x, a, b, c, d) {\n x[a] = (x[a] + x[b]) | 0;\n x[d] = rotl(x[d] ^ x[a], 16);\n x[c] = (x[c] + x[d]) | 0;\n x[b] = rotl(x[b] ^ x[c], 12);\n x[a] = (x[a] + x[b]) | 0;\n x[d] = rotl(x[d] ^ x[a], 8);\n x[c] = (x[c] + x[d]) | 0;\n x[b] = rotl(x[b] ^ x[c], 7);\n}\n/** Repeated ChaCha double rounds; callers are expected to pass an even round count. */\nfunction chachaRound(x, rounds = 20) {\n for (let r = 0; r < rounds; r += 2) {\n // RFC 8439 §2.3 / §2.3.1 inner_block: four column rounds, then four diagonal rounds.\n chachaQR(x, 0, 4, 8, 12);\n chachaQR(x, 1, 5, 9, 13);\n chachaQR(x, 2, 6, 10, 14);\n chachaQR(x, 3, 7, 11, 15);\n chachaQR(x, 0, 5, 10, 15);\n chachaQR(x, 1, 6, 11, 12);\n chachaQR(x, 2, 7, 8, 13);\n chachaQR(x, 3, 4, 9, 14);\n }\n}\n// Shared scratch for the auditability-only helper below; only the test-only\n// __TESTS.chachaCore_small hook reaches it, so production exports stay reentrant.\nconst ctmp = /* @__PURE__ */ new Uint32Array(16);\n/** Small version of chacha without loop unrolling. Unused, provided for auditability. */\n// prettier-ignore\nfunction chacha(s, k, i, out, isHChacha = true, rounds = 20) {\n // `i` is either `[counter, nonce0, nonce1, nonce2]` for the ChaCha block\n // function or the full 128-bit nonce prefix for the HChaCha subkey path.\n // Create initial array using common pattern\n const y = Uint32Array.from([\n s[0], s[1], s[2], s[3], // \"expa\" \"nd 3\" \"2-by\" \"te k\"\n k[0], k[1], k[2], k[3], // Key Key Key Key\n k[4], k[5], k[6], k[7], // Key Key Key Key\n i[0], i[1], i[2], i[3], // Counter Counter Nonce Nonce\n ]);\n const x = ctmp;\n x.set(y);\n chachaRound(x, rounds);\n // HChaCha writes words 0..3 and 12..15 after the rounds; the ChaCha\n // block path adds the original state word-by-word.\n if (isHChacha) {\n const xindexes = [0, 1, 2, 3, 12, 13, 14, 15];\n for (let i = 0; i < 8; i++)\n out[i] = x[xindexes[i]];\n }\n else {\n for (let i = 0; i < 16; i++)\n out[i] = (y[i] + x[i]) | 0;\n }\n}\n/** Identical to `chachaCore`. Reached only through the test-only `__TESTS` export. */\n// @ts-ignore\nconst chachaCore_small = (s, k, n, out, cnt, rounds) => \n// Keep the reference wrapper on the same [counter, nonce0, nonce1, nonce2] layout as chacha().\nchacha(s, k, Uint32Array.from([cnt, n[0], n[1], n[2]]), out, false, rounds);\n/** Identical to `hchacha`. Unused. */\n// @ts-ignore\nconst hchacha_small = chacha;\n/** RFC 8439 §2.3 block core for `state = constants | key | counter | nonce`. */\n// prettier-ignore\nfunction chachaCore(s, k, n, out, cnt, rounds = 20) {\n let y00 = s[0], y01 = s[1], y02 = s[2], y03 = s[3], // \"expa\" \"nd 3\" \"2-by\" \"te k\"\n y04 = k[0], y05 = k[1], y06 = k[2], y07 = k[3], // Key Key Key Key\n y08 = k[4], y09 = k[5], y10 = k[6], y11 = k[7], // Key Key Key Key\n y12 = cnt, y13 = n[0], y14 = n[1], y15 = n[2]; // Counter Nonce Nonce Nonce\n // Save state to temporary variables\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n for (let r = 0; r < rounds; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n // RFC 8439 §2.3 / §2.3.1: add the original state words back in state order.\n let oi = 0;\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\n/**\n * hchacha hashes key and nonce into key' and nonce' for xchacha20.\n * Algorithmically identical to `hchacha_small`, but this exported path\n * normalizes word order on big-endian hosts.\n * Need to find a way to merge it with `chachaCore` without 25% performance hit.\n * @param s - Sigma constants as 32-bit words.\n * @param k - Key words.\n * @param i - Nonce-prefix words.\n * @param out - Output buffer for the derived subkey.\n * @example\n * Derives the XChaCha subkey from sigma, key, and nonce-prefix words.\n *\n * ```ts\n * const sigma = new Uint32Array(4);\n * const key = new Uint32Array(8);\n * const nonce = new Uint32Array(4);\n * const out = new Uint32Array(8);\n * hchacha(sigma, key, nonce, out);\n * ```\n */\n// prettier-ignore\nexport function hchacha(s, k, i, out) {\n let x00 = swap8IfBE(s[0]), x01 = swap8IfBE(s[1]), x02 = swap8IfBE(s[2]), x03 = swap8IfBE(s[3]), x04 = swap8IfBE(k[0]), x05 = swap8IfBE(k[1]), x06 = swap8IfBE(k[2]), x07 = swap8IfBE(k[3]), x08 = swap8IfBE(k[4]), x09 = swap8IfBE(k[5]), x10 = swap8IfBE(k[6]), x11 = swap8IfBE(k[7]), x12 = swap8IfBE(i[0]), x13 = swap8IfBE(i[1]), x14 = swap8IfBE(i[2]), x15 = swap8IfBE(i[3]);\n for (let r = 0; r < 20; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n // HChaCha derives the subkey from state words 0..3 and 12..15 after 20 rounds.\n let oi = 0;\n out[oi++] = x00;\n out[oi++] = x01;\n out[oi++] = x02;\n out[oi++] = x03;\n out[oi++] = x12;\n out[oi++] = x13;\n out[oi++] = x14;\n out[oi++] = x15;\n swap32IfBE(out);\n}\n/**\n * Original, non-RFC chacha20 from DJB. 8-byte nonce, 8-byte counter.\n * The nonce/counter layout still reserves 8 counter bytes internally, but the shared public\n * `counter` argument follows noble's strict non-wrapping 32-bit policy. See `src/_arx.ts`\n * near `MAX_COUNTER` for the full counter-policy rationale.\n * @param key - 16-byte or 32-byte key.\n * @param nonce - 8-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with the original 8-byte-nonce ChaCha variant and a fresh key/nonce.\n *\n * ```ts\n * import { chacha20orig } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(8);\n * chacha20orig(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha20orig = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n allowShortKeys: true,\n});\n/**\n * ChaCha stream cipher. Conforms to RFC 8439 (IETF, TLS). 12-byte nonce, 4-byte counter.\n * With smaller nonce, it's not safe to make it random (CSPRNG), due to collision chance.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with the RFC 8439 ChaCha20 stream cipher and a fresh key/nonce.\n *\n * ```ts\n * import { chacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha20(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n allowShortKeys: false,\n});\n/**\n * XChaCha eXtended-nonce ChaCha. With 24-byte nonce, it's safe to make it random (CSPRNG).\n * See {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | the IRTF draft}.\n * The nonce/counter layout still reserves 8 counter bytes internally, but the shared public\n * `counter` argument follows noble's strict non-wrapping 32-bit policy. See `src/_arx.ts`\n * near `MAX_COUNTER` for the full counter-policy rationale.\n * @param key - 32-byte key.\n * @param nonce - 24-byte extended nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with XChaCha20 using a fresh key and random 24-byte nonce.\n *\n * ```ts\n * import { xchacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(24);\n * xchacha20(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const xchacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n extendNonceFn: hchacha,\n allowShortKeys: false,\n});\n/**\n * Reduced 8-round chacha, described in original paper.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Uses the reduced 8-round variant for non-critical workloads with a fresh key/nonce.\n *\n * ```ts\n * import { chacha8 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha8(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha8 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 8,\n});\n/**\n * Reduced 12-round chacha, described in original paper.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Uses the reduced 12-round variant for non-critical workloads with a fresh key/nonce.\n *\n * ```ts\n * import { chacha12 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha12(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha12 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 12,\n});\n// Test-only hooks for keeping the simple/reference core aligned with the unrolled production core.\nexport const __TESTS = /* @__PURE__ */ Object.freeze({ chachaCore_small, chachaCore });\n// RFC 8439 §2.8.1 pad16(x): shared zero block for AAD/ciphertext padding.\nconst ZEROS16 = /* @__PURE__ */ new Uint8Array(16);\n// RFC 8439 §2.8 / §2.8.1: aligned inputs add nothing, otherwise append 16-(len%16) zero bytes.\nconst updatePadded = (h, msg) => {\n h.update(msg);\n const leftover = msg.length % 16;\n if (leftover)\n h.update(ZEROS16.subarray(leftover));\n};\n// RFC 8439 §2.6.1 poly1305_key_gen returns `block[0..31]`, so AEAD key\n// generation only needs 32 zero bytes.\nconst ZEROS32 = /* @__PURE__ */ new Uint8Array(32);\nfunction computeTag(fn, key, nonce, ciphertext, AAD) {\n if (AAD !== undefined)\n abytes(AAD, undefined, 'AAD');\n // RFC 8439 §2.6 / §2.8: derive the Poly1305 one-time key from counter 0,\n // then MAC AAD || pad16(AAD) || ciphertext || pad16(ciphertext) || len(AAD) || len(ciphertext).\n const authKey = fn(key, nonce, ZEROS32);\n const lengths = u64Lengths(ciphertext.length, AAD ? AAD.length : 0, true);\n // Methods below can be replaced with\n // return poly1305_computeTag_small(authKey, lengths, ciphertext, AAD)\n const h = poly1305.create(authKey);\n if (AAD)\n updatePadded(h, AAD);\n updatePadded(h, ciphertext);\n h.update(lengths);\n const res = h.digest();\n clean(authKey, lengths);\n return res;\n}\n/**\n * AEAD algorithm from RFC 8439.\n * Salsa20 and chacha (RFC 8439) use poly1305 differently.\n * We could have composed them, but it's hard because of authKey:\n * In salsa20, authKey changes position in salsa stream.\n * In chacha, authKey can't be computed inside computeTag, it modifies the counter.\n */\nexport const _poly1305_aead = (xorStream) => (key, nonce, AAD) => {\n // This borrows caller key/nonce/AAD buffers by reference; mutating them after construction\n // changes future encrypt/decrypt results.\n const tagLength = 16;\n return {\n encrypt(plaintext, output) {\n const plength = plaintext.length;\n output = getOutput(plength + tagLength, output, false);\n output.set(plaintext);\n const oPlain = output.subarray(0, -tagLength);\n // RFC 8439 §2.8: payload encryption starts at counter 1 because counter 0 produced the OTK.\n xorStream(key, nonce, oPlain, oPlain, 1);\n const tag = computeTag(xorStream, key, nonce, oPlain, AAD);\n output.set(tag, plength); // append tag\n clean(tag);\n return output;\n },\n decrypt(ciphertext, output) {\n output = getOutput(ciphertext.length - tagLength, output, false);\n const data = ciphertext.subarray(0, -tagLength);\n const passedTag = ciphertext.subarray(-tagLength);\n const tag = computeTag(xorStream, key, nonce, data, AAD);\n // RFC 8439 §2.8 / §4: authenticate ciphertext before decrypting it, and compare tags with\n // the constant-time equalBytes() helper rather than decrypting speculative plaintext first.\n if (!equalBytes(passedTag, tag)) {\n clean(tag);\n throw new Error('invalid tag');\n }\n output.set(ciphertext.subarray(0, -tagLength));\n // Actual decryption\n xorStream(key, nonce, output, output, 1); // start stream with i=1\n clean(tag);\n return output;\n },\n };\n};\n/**\n * ChaCha20-Poly1305 from RFC 8439.\n *\n * Unsafe to use random nonces under the same key, due to collision chance.\n * Prefer XChaCha instead.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param AAD - Additional authenticated data.\n * @returns AEAD cipher instance.\n * @example\n * Encrypts and authenticates plaintext with a fresh key and nonce.\n *\n * ```ts\n * import { chacha20poly1305 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * const cipher = chacha20poly1305(key, nonce);\n * cipher.encrypt(new Uint8Array([1, 2, 3]));\n * ```\n */\nexport const chacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 12, tagLength: 16 }, \n/* @__PURE__ */ _poly1305_aead(chacha20));\n/**\n * XChaCha20-Poly1305 extended-nonce chacha.\n *\n * Can be safely used with random nonces (CSPRNG).\n * See {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | the IRTF draft}.\n * @param key - 32-byte key.\n * @param nonce - 24-byte nonce.\n * @param AAD - Additional authenticated data.\n * @returns AEAD cipher instance.\n * @example\n * Encrypts and authenticates plaintext with a fresh key and random 24-byte nonce.\n *\n * ```ts\n * import { xchacha20poly1305 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(24);\n * const cipher = xchacha20poly1305(key, nonce);\n * cipher.encrypt(new Uint8Array([1, 2, 3]));\n * ```\n */\nexport const xchacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 24, tagLength: 16 }, \n/* @__PURE__ */ _poly1305_aead(xchacha20));\n/**\n * Chacha20 CSPRNG (cryptographically secure pseudorandom number generator).\n * It's best to limit usage to non-production, non-critical cases: for example, test-only.\n * Compatible with libtomcrypt. It does not have a specification, so unclear how secure it is.\n * @param seed - Optional seed bytes mixed into the internal `key || nonce` state. When omitted,\n * only 32 random bytes are mixed into the 40-byte state.\n * @returns Seeded concrete `_XorStreamPRG` instance, including `clone()`.\n * @example\n * Seeds the test-only ChaCha20 DRBG from fresh entropy.\n *\n * ```ts\n * import { rngChacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const seed = randomBytes(32);\n * const prg = rngChacha20(seed);\n * prg.randomBytes(8);\n * ```\n */\nexport const rngChacha20 = /* @__PURE__ */ createPRG(chacha20orig, 64, 32, 8);\n/**\n * Chacha20/8 CSPRNG (cryptographically secure pseudorandom number generator).\n * It's best to limit usage to non-production, non-critical cases: for example, test-only.\n * Faster than `rngChacha20`.\n * @param seed - Optional seed bytes mixed into the internal `key || nonce` state. When omitted,\n * only 32 random bytes are mixed into the 44-byte state.\n * @returns Seeded concrete `_XorStreamPRG` instance, including `clone()`.\n * @example\n * Seeds the faster test-only ChaCha8 DRBG from fresh entropy.\n *\n * ```ts\n * import { rngChacha8 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const seed = randomBytes(32);\n * const prg = rngChacha8(seed);\n * prg.randomBytes(8);\n * ```\n */\nexport const rngChacha8 = /* @__PURE__ */ createPRG(chacha8, 64, 32, 12);\n//# sourceMappingURL=chacha.js.map",
|
|
64
64
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// SPDX-License-Identifier: LicenseRef-QueryFarm-Source-Available-1.0\n\n// Catalog opaque-data AEAD envelopes.\n//\n// `attach_opaque_data` and `transaction_opaque_data` are implementation-chosen\n// byte strings the catalog returns and the client round-trips back. On HTTP\n// transport (where one worker authenticates many principals) the worker seals\n// each value in an authenticated-encrypted envelope whose AAD binds the\n// caller's (domain, principal); the transaction envelope additionally binds\n// its parent attach envelope. A value sealed for one principal — or one\n// attach — cannot be opened by another.\n//\n// Workers with no signing key (subprocess / unix transports) pass values\n// through unchanged, since OS process ownership already enforces identity.\n//\n// Wire format: version(1 byte) || nonce(24 bytes) || ciphertext+tag.\n// Matches vgi-python's vgi_rpc.crypto / vgi.worker and vgi-go's vgi/crypto.go.\n\nimport { xchacha20poly1305 } from \"@noble/ciphers/chacha.js\";\nimport type { AuthContext } from \"@query-farm/vgi-rpc\";\n\nconst _UTF8 = new TextEncoder();\n\n// v2: the inner attach plaintext is uuid(16) || catalog_bytes — catalog_attach\n// prepends a framework-minted 16-byte UUID that storage shards on. Bumped from\n// 1 so a stale v1 token (no uuid prefix) is cleanly rejected at open.\nexport const ATTACH_ENVELOPE_VERSION = 2;\nexport const TRANSACTION_ENVELOPE_VERSION = 2;\n\n/** Width of the framework UUID prepended to every attach plaintext. */\nexport const ATTACH_UUID_LEN = 16;\n\nconst NONCE_LEN = 24; // XChaCha20-Poly1305 nonce\nconst TAG_LEN = 16; // Poly1305 tag\nconst MIN_ENVELOPE_LEN = 1 + NONCE_LEN + TAG_LEN;\n\nconst ATTACH_AAD_PREFIX = _UTF8.encode(\"vgi.attach_opaque_data.v1\\0\");\nconst TRANSACTION_AAD_PREFIX = _UTF8.encode(\"vgi.transaction_opaque_data.v1\\0\");\n\n/**\n * Thrown when an envelope cannot be opened — wrong principal, wrong parent\n * attach, tampered, malformed, or simply unknown. Every failure mode maps to\n * this single error so a probing caller cannot distinguish them.\n */\nexport class OpaqueDataRejectedError extends Error {\n constructor(field = \"opaque data\") {\n super(`${field} not recognized`);\n this.name = \"OpaqueDataRejectedError\";\n }\n}\n\nfunction concat(...parts: Uint8Array[]): Uint8Array {\n let total = 0;\n for (const p of parts) total += p.length;\n const out = new Uint8Array(total);\n let off = 0;\n for (const p of parts) {\n out.set(p, off);\n off += p.length;\n }\n return out;\n}\n\n/**\n * Stretch/compress an operator-supplied key to the 32 bytes XChaCha20-Poly1305\n * requires. Exactly-32-byte keys pass through unchanged; any other length is\n * collapsed via SHA-256. Matches the vgi-python / vgi-go ports.\n */\nasync function normalizeKey(key: Uint8Array): Promise<Uint8Array> {\n if (key.length === 32) return key;\n return new Uint8Array(await crypto.subtle.digest(\"SHA-256\", key as BufferSource));\n}\n\n/**\n * Build the identity portion of an opaque-data AAD. Unauthenticated requests\n * get a fixed anonymous tail, so an anonymous caller cannot open an envelope\n * sealed for a real principal.\n */\nexport function identityTail(auth: AuthContext | undefined): Uint8Array {\n if (!auth || !auth.authenticated) return _UTF8.encode(\"\\0anonymous\");\n const domain = _UTF8.encode(auth.domain ?? \"\");\n const principal = _UTF8.encode(auth.principal ?? \"\");\n return concat(Uint8Array.of(0x01), domain, Uint8Array.of(0x00), principal);\n}\n\n/** AAD for an `attach_opaque_data` envelope: prefix + caller identity. */\nexport function attachAad(auth: AuthContext | undefined): Uint8Array {\n return concat(ATTACH_AAD_PREFIX, identityTail(auth));\n}\n\n/**\n * AAD for a `transaction_opaque_data` envelope. Binds both the caller identity\n * and the parent attach envelope, so a transaction value minted under one\n * attach cannot be replayed against a different attach even by the same\n * principal.\n */\nexport function transactionAad(\n auth: AuthContext | undefined,\n attachEnvelope: Uint8Array,\n): Uint8Array {\n return concat(TRANSACTION_AAD_PREFIX, identityTail(auth), Uint8Array.of(0x00), attachEnvelope);\n}\n\n/** Seal `payload` into an AEAD envelope: version || nonce || ciphertext+tag. */\nexport async function sealBytes(\n payload: Uint8Array,\n key: Uint8Array,\n aad: Uint8Array,\n version: number,\n): Promise<Uint8Array> {\n const nonce = crypto.getRandomValues(new Uint8Array(NONCE_LEN));\n const ciphertext = xchacha20poly1305(await normalizeKey(key), nonce, aad).encrypt(payload);\n const out = new Uint8Array(1 + NONCE_LEN + ciphertext.length);\n out[0] = version & 0xff;\n out.set(nonce, 1);\n out.set(ciphertext, 1 + NONCE_LEN);\n return out;\n}\n\n/**\n * Open and verify an envelope produced by {@link sealBytes}. Every failure\n * mode — malformed, wrong version, tampered, wrong key, wrong AAD\n * (cross-principal / cross-attach replay) — throws {@link OpaqueDataRejectedError}.\n */\nexport async function openBytes(\n token: Uint8Array,\n key: Uint8Array,\n aad: Uint8Array,\n version: number,\n field = \"opaque data\",\n): Promise<Uint8Array> {\n if (token.length < MIN_ENVELOPE_LEN || token[0] !== (version & 0xff)) {\n throw new OpaqueDataRejectedError(field);\n }\n const nonce = token.subarray(1, 1 + NONCE_LEN);\n const ciphertext = token.subarray(1 + NONCE_LEN);\n try {\n return xchacha20poly1305(await normalizeKey(key), nonce, aad).decrypt(ciphertext);\n } catch {\n throw new OpaqueDataRejectedError(field);\n }\n}\n",
|
|
65
|
-
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Handlers for the aggregate function lifecycle: bind allocates execution_id\n// and output schema, update folds rows into per-group state, combine merges\n// states across workers, finalize emits one result row per group, destructor\n// drops finished group state.\n\nimport {\n type VgiSchema,\n type VgiBatch,\n type VgiDataType,\n schema as makeSchema,\n field,\n isDecimal,\n serializeBatch,\n deserializeBatch,\n} from \"../../arrow/index.js\";\nimport { Protocol } from \"@query-farm/vgi-rpc\";\nimport type { FunctionRegistry } from \"../../functions/registry.js\";\nimport { deserializeArguments } from \"../serialize.js\";\nimport { deserializeSchema, serializeSchema, batchToSecretDict } from \"../../util/arrow/index.js\";\nimport { toUint8Array } from \"../../util/bytes.js\";\nimport {\n AggregateBindResultSchema,\n AggregateFinalizeResultSchema,\n} from \"../../generated/vgi-protocol-schemas.js\";\nimport {\n getExecutionState,\n setExecutionState,\n persistGroupStates,\n GROUP_COLUMN_NAME,\n type AggregateFunctionConfig,\n type AggregateBindParams,\n} from \"../../functions/aggregate.js\";\nimport { Arguments } from \"../../arguments/arguments.js\";\nimport {\n REQUEST_PARAMS_SCHEMA,\n RESULT_BINARY_SCHEMA,\n unwrapRequest,\n wrapResult,\n} from \"./shared.js\";\n\nexport function registerAggregateMethods(protocol: Protocol, registry: FunctionRegistry): void {\n function resolveAggregate(name: string): AggregateFunctionConfig<any, any> {\n const func = registry.get(name, { arguments: new Arguments(), inputSchema: null, isScalar: false }) as any;\n if (!func || func.kind !== \"aggregate\") {\n throw new Error(`Function '${name}' is not an aggregate function`);\n }\n return func.aggregateConfig as AggregateFunctionConfig<any, any>;\n }\n\n // ------------------------------------------------------------------------\n // aggregate_bind — allocate execution_id, return output schema\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_bind\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const cfg = resolveAggregate(functionName);\n const argBytes = toUint8Array(innerParams.arguments);\n const args = deserializeArguments(argBytes);\n const inputSchema = innerParams.input_schema\n ? deserializeSchema(toUint8Array(innerParams.input_schema))\n : null;\n // Decode the resolved-secrets batch the extension pre-resolves for\n // aggregates that declared `requiredSecrets`. Mirrors the table-buffering\n // handler (batchToSecretDict). The secret VALUES are delivered only here,\n // at bind time — update/combine/finalize see no secrets by design.\n const secretsBytes = innerParams.secrets ? toUint8Array(innerParams.secrets) : null;\n const secretsBatch =\n secretsBytes && secretsBytes.length > 0 ? deserializeBatch(secretsBytes) : null;\n const secrets = secretsBatch ? batchToSecretDict(secretsBatch) : {};\n const bindParams: AggregateBindParams<any> = {\n args: extractArgMap(cfg, args),\n arguments: args,\n inputSchema,\n settings: {},\n secrets,\n };\n const executionId = new Uint8Array(16);\n crypto.getRandomValues(executionId);\n setExecutionState(executionId, {\n states: new Map(),\n bindArgs: args,\n bindParams,\n });\n // Output schema is a single \"result\" column. Type comes from the\n // optional onBind hook (for aggregates whose return type depends on\n // input — e.g. vgi_generic_sum takes ANY and returns the same type);\n // otherwise the declared cfg.outputType.\n const outType = cfg.onBind ? await cfg.onBind(bindParams) : cfg.outputType;\n const outSchema = makeSchema([field(\"result\", outType, true)]);\n return wrapResult(\n { output_schema: serializeSchema(outSchema), execution_id: executionId },\n AggregateBindResultSchema,\n );\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_update — fold the incoming batch into per-group state\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_update\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const executionId = toUint8Array(innerParams.execution_id);\n const cfg = resolveAggregate(functionName);\n const batch = readSingleBatch(toUint8Array(innerParams.input_batch));\n if (!batch || batch.numRows === 0) return wrapResult({}, makeSchema([]));\n\n const gidIdx = batch.schema.fields.findIndex((f) => f.name === GROUP_COLUMN_NAME);\n if (gidIdx < 0) {\n throw new Error(`aggregate_update: input batch missing ${GROUP_COLUMN_NAME} column`);\n }\n const gidCol = batch.getChildAt(gidIdx)!;\n const groupIds: bigint[] = [];\n const uniqueGids = new Set<bigint>();\n for (let i = 0; i < batch.numRows; i++) {\n const v = gidCol.get(i);\n const g = typeof v === \"bigint\" ? v : BigInt(v as any);\n groupIds.push(g);\n uniqueGids.add(g);\n }\n const exec = getExecutionState(executionId, uniqueGids);\n if (!exec) {\n throw new Error(`aggregate_update: unknown execution_id for '${functionName}' (bind missing or state dropped)`);\n }\n\n // Build column-arg arrays — every non-__vgi_group_id column, in\n // schema order — and pass to user's update(). We deliberately do NOT\n // pre-allocate state for every group_id seen — the user decides when\n // to call ensureState() so that groups with only-NULL input (skipped\n // rows) never get an entry, which lets finalize() return SQL NULL.\n const columns: any[] = [];\n for (let i = 0; i < batch.schema.fields.length; i++) {\n if (i === gidIdx) continue;\n columns.push(batch.getChildAt(i));\n }\n const ensureState = (gid: bigint) => {\n let s = exec.states.get(gid);\n if (s === undefined) {\n s = cfg.initialState(exec.bindParams);\n exec.states.set(gid, s);\n }\n return s;\n };\n cfg.update({\n states: exec.states,\n groupIds,\n columns,\n args: exec.bindParams.args,\n ensureState,\n });\n // Flush mutated states to disk so sibling workers see them. We persist\n // every group that was referenced this call — some may be unchanged\n // (skipped by NULL handling), in which case the file simply reflects\n // the pre-existing initial state; the idempotent rewrite is cheap\n // relative to the RPC overhead.\n persistGroupStates(executionId, uniqueGids);\n return wrapResult({}, makeSchema([]));\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_combine — merge (source_group_id, target_group_id) pairs\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_combine\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const executionId = toUint8Array(innerParams.execution_id);\n const cfg = resolveAggregate(functionName);\n const batch = readSingleBatch(toUint8Array(innerParams.merge_batch));\n if (!batch || batch.numRows === 0) return wrapResult({}, makeSchema([]));\n\n const srcCol = batch.getChild(\"source_group_id\")!;\n const tgtCol = batch.getChild(\"target_group_id\")!;\n const referencedGids = new Set<bigint>();\n const srcIds: bigint[] = [];\n const tgtIds: bigint[] = [];\n for (let i = 0; i < batch.numRows; i++) {\n const src = BigInt(srcCol.get(i) as any);\n const tgt = BigInt(tgtCol.get(i) as any);\n srcIds.push(src); tgtIds.push(tgt);\n referencedGids.add(src); referencedGids.add(tgt);\n }\n const exec = getExecutionState(executionId, referencedGids);\n if (!exec) {\n throw new Error(\n `aggregate_combine: unknown execution_id for '${functionName}' ` +\n `(context missing on disk — bind may have failed or been cleaned up)`,\n );\n }\n const touchedTargets = new Set<bigint>();\n for (let i = 0; i < batch.numRows; i++) {\n const src = srcIds[i];\n const tgt = tgtIds[i];\n const srcHas = exec.states.has(src);\n const tgtHas = exec.states.has(tgt);\n if (!srcHas && !tgtHas) continue;\n const srcState = srcHas ? exec.states.get(src)! : cfg.initialState(exec.bindParams);\n const tgtState = tgtHas ? exec.states.get(tgt)! : cfg.initialState(exec.bindParams);\n exec.states.set(tgt, cfg.combine(srcState, tgtState, exec.bindParams));\n touchedTargets.add(tgt);\n }\n persistGroupStates(executionId, touchedTargets);\n return wrapResult({}, makeSchema([]));\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_finalize — emit one result row per requested group_id\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_finalize\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const executionId = toUint8Array(innerParams.execution_id);\n const cfg = resolveAggregate(functionName);\n const outputSchema = deserializeSchema(toUint8Array(innerParams.output_schema));\n const gidBatch = readSingleBatch(toUint8Array(innerParams.group_ids_batch));\n const groupIds: bigint[] = [];\n const uniqueGids = new Set<bigint>();\n if (gidBatch) {\n const col = gidBatch.getChild(\"group_id\")!;\n for (let i = 0; i < gidBatch.numRows; i++) {\n const v = col.get(i);\n const g = typeof v === \"bigint\" ? v : BigInt(v as any);\n groupIds.push(g);\n uniqueGids.add(g);\n }\n }\n const exec = getExecutionState(executionId, uniqueGids);\n if (!exec) {\n throw new Error(`aggregate_finalize: unknown execution_id for '${functionName}'`);\n }\n // Groups never updated pass state = null so finalize() can emit SQL NULL\n // (matches Python semantics for SUM/AVG/MIN/MAX over zero rows).\n const states = new Map<bigint, any | null>();\n for (const gid of groupIds) {\n states.set(gid, exec.states.has(gid) ? exec.states.get(gid) : null);\n }\n const resultBatch = cfg.finalize({\n groupIds, states, outputSchema, args: exec.bindParams.args,\n });\n return wrapResult(\n { result_batch: serializeBatchWithSchema(resultBatch) },\n AggregateFinalizeResultSchema,\n );\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_destructor — drop state for finished groups (best-effort)\n //\n // DuckDB sends a batch of group_ids to discard; we remove each from the\n // in-memory state map. We DO NOT tear down the entire execution on an\n // empty batch — DuckDB may still call finalize afterwards in some plans\n // (matches Python's conservative behavior; the execution entry is cleaned\n // up when the worker process exits).\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_destructor\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const executionId = toUint8Array(innerParams.execution_id);\n const exec = getExecutionState(executionId);\n if (!exec) return wrapResult({}, makeSchema([]));\n const gidBatch = readSingleBatch(toUint8Array(innerParams.group_ids_batch));\n if (!gidBatch || gidBatch.numRows === 0) return wrapResult({}, makeSchema([]));\n const col = gidBatch.getChild(\"group_id\")!;\n const toDrop = new Set<bigint>();\n for (let i = 0; i < gidBatch.numRows; i++) {\n const v = col.get(i);\n const g = typeof v === \"bigint\" ? v : BigInt(v as any);\n exec.states.delete(g);\n toDrop.add(g);\n }\n // Persist deletions (unlinks the per-group file so sibling workers\n // don't revive the state via getExecutionState's lazy disk load).\n persistGroupStates(executionId, toDrop);\n return wrapResult({}, makeSchema([]));\n },\n });\n}\n\nfunction extractArgMap(\n cfg: AggregateFunctionConfig<any, any>,\n args: Arguments,\n): Record<string, any> {\n const out: Record<string, any> = {};\n // The wire-side Arguments contains only const params — DuckDB erases const\n // args from the expression tree at bind time and serializes their values\n // into the aggregate_bind request's `arguments` field. So we index the\n // Arguments by the declaration order of const params only.\n const constSet = new Set(cfg.constParams ?? []);\n const constNames: string[] = [];\n if (cfg.args) {\n for (const name of Object.keys(cfg.args)) {\n if (constSet.has(name)) constNames.push(name);\n }\n }\n for (let i = 0; i < constNames.length; i++) {\n try {\n let v = args.get(i);\n // Decode DECIMAL scalars (DuckDB serializes 0.5-style literals as\n // DECIMAL(2,1), which Arrow stores as the unscaled integer — a raw\n // BigInt here). Scale back to float using the declared scale.\n const field = args.argumentsSchema?.fields.find(f => f.name === `positional_${i}`);\n if (field && isDecimal(field.type)) {\n const scale = (field.type as any).scale;\n if (typeof v === \"bigint\") v = Number(v) / Math.pow(10, scale);\n else if (typeof v === \"number\") v = v / Math.pow(10, scale);\n } else if (typeof v === \"bigint\") {\n v = Number(v);\n }\n out[constNames[i]] = v;\n } catch {\n // args.get throws when the arg isn't set — fall back to the declared\n // default so aggregates called without an explicit const value still\n // see it in update/finalize.\n const def = cfg.argDefaults?.[constNames[i]];\n if (def !== undefined) out[constNames[i]] = def;\n }\n }\n // Non-const args aren't in the wire Arguments, but users may still want\n // defaults surfaced for `params.args` — apply them here.\n if (cfg.argDefaults) {\n for (const [name, def] of Object.entries(cfg.argDefaults)) {\n if (!(name in out) && !constSet.has(name)) out[name] = def;\n }\n }\n return out;\n}\n\nfunction readSingleBatch(bytes: Uint8Array): VgiBatch | null {\n if (!bytes || bytes.length === 0) return null;\n const batch = deserializeBatch(bytes);\n return batch.numRows === 0 && batch.schema.fields.length === 0 ? null : batch;\n}\n\nfunction serializeBatchWithSchema(batch: VgiBatch): Uint8Array {\n // serializeBatch emits a full IPC stream (schema + batch + EOS) — the C++\n // aggregate_finalize reader expects exactly that.\n return serializeBatch(batch);\n}\n",
|
|
65
|
+
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Handlers for the aggregate function lifecycle: bind allocates execution_id\n// and output schema, update folds rows into per-group state, combine merges\n// states across workers, finalize emits one result row per group, destructor\n// drops finished group state.\n\nimport {\n type VgiSchema,\n type VgiBatch,\n type VgiDataType,\n schema as makeSchema,\n field,\n isDecimal,\n serializeBatch,\n deserializeBatch,\n} from \"../../arrow/index.js\";\nimport { Protocol } from \"@query-farm/vgi-rpc\";\nimport type { FunctionRegistry } from \"../../functions/registry.js\";\nimport { deserializeArguments } from \"../serialize.js\";\nimport { deserializeSchema, serializeSchema, batchToSecretDict } from \"../../util/arrow/index.js\";\nimport { toUint8Array } from \"../../util/bytes.js\";\nimport {\n AggregateBindResultSchema,\n AggregateFinalizeResultSchema,\n} from \"../../generated/vgi-protocol-schemas.js\";\nimport {\n getExecutionState,\n setExecutionState,\n persistGroupStates,\n GROUP_COLUMN_NAME,\n type AggregateFunctionConfig,\n type AggregateBindParams,\n} from \"../../functions/aggregate.js\";\nimport { Arguments } from \"../../arguments/arguments.js\";\nimport { validateConstConstraints } from \"../../arguments/argument-spec.js\";\nimport {\n REQUEST_PARAMS_SCHEMA,\n RESULT_BINARY_SCHEMA,\n unwrapRequest,\n wrapResult,\n} from \"./shared.js\";\n\nexport function registerAggregateMethods(protocol: Protocol, registry: FunctionRegistry): void {\n function resolveAggregate(name: string): AggregateFunctionConfig<any, any> {\n const func = registry.get(name, { arguments: new Arguments(), inputSchema: null, isScalar: false }) as any;\n if (!func || func.kind !== \"aggregate\") {\n throw new Error(`Function '${name}' is not an aggregate function`);\n }\n return func.aggregateConfig as AggregateFunctionConfig<any, any>;\n }\n\n // ------------------------------------------------------------------------\n // aggregate_bind — allocate execution_id, return output schema\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_bind\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const cfg = resolveAggregate(functionName);\n const argBytes = toUint8Array(innerParams.arguments);\n const args = deserializeArguments(argBytes);\n const inputSchema = innerParams.input_schema\n ? deserializeSchema(toUint8Array(innerParams.input_schema))\n : null;\n // Decode the resolved-secrets batch the extension pre-resolves for\n // aggregates that declared `requiredSecrets`. Mirrors the table-buffering\n // handler (batchToSecretDict). The secret VALUES are delivered only here,\n // at bind time — update/combine/finalize see no secrets by design.\n const secretsBytes = innerParams.secrets ? toUint8Array(innerParams.secrets) : null;\n const secretsBatch =\n secretsBytes && secretsBytes.length > 0 ? deserializeBatch(secretsBytes) : null;\n const secrets = secretsBatch ? batchToSecretDict(secretsBatch) : {};\n const bindParams: AggregateBindParams<any> = {\n args: extractArgMap(cfg, args),\n arguments: args,\n inputSchema,\n settings: {},\n secrets,\n };\n const executionId = new Uint8Array(16);\n crypto.getRandomValues(executionId);\n setExecutionState(executionId, {\n states: new Map(),\n bindArgs: args,\n bindParams,\n });\n // Output schema is a single \"result\" column. Type comes from the\n // optional onBind hook (for aggregates whose return type depends on\n // input — e.g. vgi_generic_sum takes ANY and returns the same type);\n // otherwise the declared cfg.outputType.\n const outType = cfg.onBind ? await cfg.onBind(bindParams) : cfg.outputType;\n const outSchema = makeSchema([field(\"result\", outType, true)]);\n return wrapResult(\n { output_schema: serializeSchema(outSchema), execution_id: executionId },\n AggregateBindResultSchema,\n );\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_update — fold the incoming batch into per-group state\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_update\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const executionId = toUint8Array(innerParams.execution_id);\n const cfg = resolveAggregate(functionName);\n const batch = readSingleBatch(toUint8Array(innerParams.input_batch));\n if (!batch || batch.numRows === 0) return wrapResult({}, makeSchema([]));\n\n const gidIdx = batch.schema.fields.findIndex((f) => f.name === GROUP_COLUMN_NAME);\n if (gidIdx < 0) {\n throw new Error(`aggregate_update: input batch missing ${GROUP_COLUMN_NAME} column`);\n }\n const gidCol = batch.getChildAt(gidIdx)!;\n const groupIds: bigint[] = [];\n const uniqueGids = new Set<bigint>();\n for (let i = 0; i < batch.numRows; i++) {\n const v = gidCol.get(i);\n const g = typeof v === \"bigint\" ? v : BigInt(v as any);\n groupIds.push(g);\n uniqueGids.add(g);\n }\n const exec = getExecutionState(executionId, uniqueGids);\n if (!exec) {\n throw new Error(`aggregate_update: unknown execution_id for '${functionName}' (bind missing or state dropped)`);\n }\n\n // Build column-arg arrays — every non-__vgi_group_id column, in\n // schema order — and pass to user's update(). We deliberately do NOT\n // pre-allocate state for every group_id seen — the user decides when\n // to call ensureState() so that groups with only-NULL input (skipped\n // rows) never get an entry, which lets finalize() return SQL NULL.\n const columns: any[] = [];\n for (let i = 0; i < batch.schema.fields.length; i++) {\n if (i === gidIdx) continue;\n columns.push(batch.getChildAt(i));\n }\n const ensureState = (gid: bigint) => {\n let s = exec.states.get(gid);\n if (s === undefined) {\n s = cfg.initialState(exec.bindParams);\n exec.states.set(gid, s);\n }\n return s;\n };\n cfg.update({\n states: exec.states,\n groupIds,\n columns,\n args: exec.bindParams.args,\n ensureState,\n });\n // Flush mutated states to disk so sibling workers see them. We persist\n // every group that was referenced this call — some may be unchanged\n // (skipped by NULL handling), in which case the file simply reflects\n // the pre-existing initial state; the idempotent rewrite is cheap\n // relative to the RPC overhead.\n persistGroupStates(executionId, uniqueGids);\n return wrapResult({}, makeSchema([]));\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_combine — merge (source_group_id, target_group_id) pairs\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_combine\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const executionId = toUint8Array(innerParams.execution_id);\n const cfg = resolveAggregate(functionName);\n const batch = readSingleBatch(toUint8Array(innerParams.merge_batch));\n if (!batch || batch.numRows === 0) return wrapResult({}, makeSchema([]));\n\n const srcCol = batch.getChild(\"source_group_id\")!;\n const tgtCol = batch.getChild(\"target_group_id\")!;\n const referencedGids = new Set<bigint>();\n const srcIds: bigint[] = [];\n const tgtIds: bigint[] = [];\n for (let i = 0; i < batch.numRows; i++) {\n const src = BigInt(srcCol.get(i) as any);\n const tgt = BigInt(tgtCol.get(i) as any);\n srcIds.push(src); tgtIds.push(tgt);\n referencedGids.add(src); referencedGids.add(tgt);\n }\n const exec = getExecutionState(executionId, referencedGids);\n if (!exec) {\n throw new Error(\n `aggregate_combine: unknown execution_id for '${functionName}' ` +\n `(context missing on disk — bind may have failed or been cleaned up)`,\n );\n }\n const touchedTargets = new Set<bigint>();\n for (let i = 0; i < batch.numRows; i++) {\n const src = srcIds[i];\n const tgt = tgtIds[i];\n const srcHas = exec.states.has(src);\n const tgtHas = exec.states.has(tgt);\n if (!srcHas && !tgtHas) continue;\n const srcState = srcHas ? exec.states.get(src)! : cfg.initialState(exec.bindParams);\n const tgtState = tgtHas ? exec.states.get(tgt)! : cfg.initialState(exec.bindParams);\n exec.states.set(tgt, cfg.combine(srcState, tgtState, exec.bindParams));\n touchedTargets.add(tgt);\n }\n persistGroupStates(executionId, touchedTargets);\n return wrapResult({}, makeSchema([]));\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_finalize — emit one result row per requested group_id\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_finalize\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const executionId = toUint8Array(innerParams.execution_id);\n const cfg = resolveAggregate(functionName);\n const outputSchema = deserializeSchema(toUint8Array(innerParams.output_schema));\n const gidBatch = readSingleBatch(toUint8Array(innerParams.group_ids_batch));\n const groupIds: bigint[] = [];\n const uniqueGids = new Set<bigint>();\n if (gidBatch) {\n const col = gidBatch.getChild(\"group_id\")!;\n for (let i = 0; i < gidBatch.numRows; i++) {\n const v = col.get(i);\n const g = typeof v === \"bigint\" ? v : BigInt(v as any);\n groupIds.push(g);\n uniqueGids.add(g);\n }\n }\n const exec = getExecutionState(executionId, uniqueGids);\n if (!exec) {\n throw new Error(`aggregate_finalize: unknown execution_id for '${functionName}'`);\n }\n // Groups never updated pass state = null so finalize() can emit SQL NULL\n // (matches Python semantics for SUM/AVG/MIN/MAX over zero rows).\n const states = new Map<bigint, any | null>();\n for (const gid of groupIds) {\n states.set(gid, exec.states.has(gid) ? exec.states.get(gid) : null);\n }\n const resultBatch = cfg.finalize({\n groupIds, states, outputSchema, args: exec.bindParams.args,\n });\n return wrapResult(\n { result_batch: serializeBatchWithSchema(resultBatch) },\n AggregateFinalizeResultSchema,\n );\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_destructor — drop state for finished groups (best-effort)\n //\n // DuckDB sends a batch of group_ids to discard; we remove each from the\n // in-memory state map. We DO NOT tear down the entire execution on an\n // empty batch — DuckDB may still call finalize afterwards in some plans\n // (matches Python's conservative behavior; the execution entry is cleaned\n // up when the worker process exits).\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_destructor\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const executionId = toUint8Array(innerParams.execution_id);\n const exec = getExecutionState(executionId);\n if (!exec) return wrapResult({}, makeSchema([]));\n const gidBatch = readSingleBatch(toUint8Array(innerParams.group_ids_batch));\n if (!gidBatch || gidBatch.numRows === 0) return wrapResult({}, makeSchema([]));\n const col = gidBatch.getChild(\"group_id\")!;\n const toDrop = new Set<bigint>();\n for (let i = 0; i < gidBatch.numRows; i++) {\n const v = col.get(i);\n const g = typeof v === \"bigint\" ? v : BigInt(v as any);\n exec.states.delete(g);\n toDrop.add(g);\n }\n // Persist deletions (unlinks the per-group file so sibling workers\n // don't revive the state via getExecutionState's lazy disk load).\n persistGroupStates(executionId, toDrop);\n return wrapResult({}, makeSchema([]));\n },\n });\n}\n\nfunction extractArgMap(\n cfg: AggregateFunctionConfig<any, any>,\n args: Arguments,\n): Record<string, any> {\n const out: Record<string, any> = {};\n // The wire-side Arguments contains only const params — DuckDB erases const\n // args from the expression tree at bind time and serializes their values\n // into the aggregate_bind request's `arguments` field. So we index the\n // Arguments by the declaration order of const params only.\n const constSet = new Set(cfg.constParams ?? []);\n const constNames: string[] = [];\n if (cfg.args) {\n for (const name of Object.keys(cfg.args)) {\n if (constSet.has(name)) constNames.push(name);\n }\n }\n for (let i = 0; i < constNames.length; i++) {\n let v: any;\n try {\n v = args.get(i);\n // Decode DECIMAL scalars (DuckDB serializes 0.5-style literals as\n // DECIMAL(2,1), which Arrow stores as the unscaled integer — a raw\n // BigInt here). Scale back to float using the declared scale.\n const field = args.argumentsSchema?.fields.find(f => f.name === `positional_${i}`);\n if (field && isDecimal(field.type)) {\n const scale = (field.type as any).scale;\n if (typeof v === \"bigint\") v = Number(v) / Math.pow(10, scale);\n else if (typeof v === \"number\") v = v / Math.pow(10, scale);\n } else if (typeof v === \"bigint\") {\n v = Number(v);\n }\n } catch {\n // args.get throws when the arg isn't set — fall back to the declared\n // default so aggregates called without an explicit const value still\n // see it in update/finalize.\n const def = cfg.argDefaults?.[constNames[i]];\n if (def !== undefined) out[constNames[i]] = def;\n continue;\n }\n // Enforce declared constraints on the supplied value. This sits OUTSIDE the\n // try above so a constraint violation propagates as a bind error rather than\n // being swallowed and silently replaced by the default.\n const constraints = cfg.argConstraints?.[constNames[i]];\n if (constraints !== undefined) {\n validateConstConstraints(constNames[i], constraints, v);\n }\n out[constNames[i]] = v;\n }\n // Non-const args aren't in the wire Arguments, but users may still want\n // defaults surfaced for `params.args` — apply them here.\n if (cfg.argDefaults) {\n for (const [name, def] of Object.entries(cfg.argDefaults)) {\n if (!(name in out) && !constSet.has(name)) out[name] = def;\n }\n }\n return out;\n}\n\nfunction readSingleBatch(bytes: Uint8Array): VgiBatch | null {\n if (!bytes || bytes.length === 0) return null;\n const batch = deserializeBatch(bytes);\n return batch.numRows === 0 && batch.schema.fields.length === 0 ? null : batch;\n}\n\nfunction serializeBatchWithSchema(batch: VgiBatch): Uint8Array {\n // serializeBatch emits a full IPC stream (schema + batch + EOS) — the C++\n // aggregate_finalize reader expects exactly that.\n return serializeBatch(batch);\n}\n",
|
|
66
66
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Unary handlers for the table_buffering (Sink+Source) lifecycle:\n// table_buffering_process — sink one input batch, return state_id\n// table_buffering_combine — group/merge state_ids -> finalize_state_ids\n// table_buffering_destructor — best-effort end-of-query storage cleanup\n//\n// These RPCs carry no init context, so each cold-loads the init metadata that\n// the TABLE_BUFFERING init phase persisted to FunctionStorage (keyed by\n// execution_id), then rebuilds the user-facing TableBufferingParams. Mirrors\n// vgi-python's worker._load_table_buffering_params.\n\nimport { deserializeBatch } from \"../../arrow/index.js\";\nimport { Protocol } from \"@query-farm/vgi-rpc\";\nimport type { FunctionRegistry } from \"../../functions/registry.js\";\nimport { toUint8Array } from \"../../util/bytes.js\";\nimport { batchToScalarDict, batchToSecretDict } from \"../../util/arrow/index.js\";\nimport {\n TableBufferingProcessResultSchema,\n TableBufferingCombineResultSchema,\n TableBufferingDestructorResultSchema,\n} from \"../../generated/vgi-protocol-schemas.js\";\nimport {\n REQUEST_PARAMS_SCHEMA,\n RESULT_BINARY_SCHEMA,\n unwrapRequest,\n wrapResult,\n} from \"./shared.js\";\nimport { openAttach } from \"./catalog/shared.js\";\nimport {\n BoundStorage,\n storage as defaultStorage,\n FrameworkNS,\n} from \"../../functions/storage.js\";\nimport {\n decodeBufferingInit,\n type TableBufferingVgiFunction,\n type TableBufferingParams,\n} from \"../../functions/table-buffering.js\";\nimport { Arguments } from \"../../arguments/arguments.js\";\n\nexport function registerTableBufferingMethods(\n protocol: Protocol,\n registry: FunctionRegistry,\n signingKey?: Uint8Array,\n): void {\n function resolveBuffering(name: string): TableBufferingVgiFunction {\n const func = registry.get(name, {\n arguments: new Arguments(),\n inputSchema: null,\n isScalar: false,\n }) as any;\n if (!func || func.kind !== \"table_buffering\") {\n throw new Error(`Function '${name}' is not a table_buffering function`);\n }\n return func as TableBufferingVgiFunction;\n }\n\n // Cold-load init metadata + build TableBufferingParams from a unary request.\n async function loadParams(\n inner: Record<string, any>,\n clientLog: (level: string, message: string) => void,\n ctx: any,\n ): Promise<{ func: TableBufferingVgiFunction; params: TableBufferingParams<any> }> {\n const functionName: string = inner.function_name;\n const executionId = toUint8Array(inner.execution_id);\n // Unseal attach_opaque_data so combine()/process() see the SAME plaintext,\n // attach-scoped bytes that bind()/init() and plain table functions see.\n // Without this, on HTTP transport the buffering RPCs would scope persistent\n // BoundStorage by the *sealed* envelope while reads scope by the plaintext,\n // so attach-scoped state written in combine() is invisible to later reads.\n const rawAttach = inner.attach_opaque_data ? toUint8Array(inner.attach_opaque_data) : null;\n const attach =\n rawAttach && rawAttach.length > 0\n ? await openAttach(rawAttach, ctx?.auth, signingKey)\n : rawAttach;\n const transactionId = inner.transaction_id ? toUint8Array(inner.transaction_id) : null;\n\n const func = resolveBuffering(functionName);\n const bound = new BoundStorage(defaultStorage, executionId);\n const payload = await bound.stateGet(\n FrameworkNS.BUFFERING_INIT,\n BoundStorage.packIntKey(-1),\n );\n if (payload == null) {\n throw new Error(\n `table_buffering: unknown execution_id ${hex(executionId)} ` +\n `(init never ran or destructor already fired)`,\n );\n }\n const { request } = decodeBufferingInit(payload);\n const args = func.bufferingExtractArgs(request.bind_call);\n const settings = batchToScalarDict(request.bind_call.settings);\n const secrets = batchToSecretDict(request.bind_call.secrets);\n\n const params: TableBufferingParams<any> = {\n args,\n initCall: request,\n outputSchema: request.output_schema,\n settings,\n secrets,\n storage: bound,\n executionId,\n attachId: attach ?? new Uint8Array(0),\n transactionId,\n function_name: functionName,\n batchIndex: null,\n clientLog,\n };\n return { func, params };\n }\n\n // ------------------------------------------------------------------------\n // table_buffering_process — sink one batch, return state_id (unary)\n // ------------------------------------------------------------------------\n protocol.unary(\"table_buffering_process\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (rpcParams, ctx?: any) => {\n const inner = unwrapRequest(rpcParams.request);\n const clientLog = makeClientLog(ctx);\n const { func, params } = await loadParams(inner, clientLog, ctx);\n if (inner.batch_index != null) {\n params.batchIndex = Number(inner.batch_index);\n }\n const batch = deserializeBatch(toUint8Array(inner.input_batch));\n const stateId = await func.bufferingConfig.process(batch, params);\n if (!(stateId instanceof Uint8Array)) {\n throw new Error(\n `${func.meta.name}.process() must return Uint8Array (the opaque state_id)`,\n );\n }\n return wrapResult({ state_id: stateId }, TableBufferingProcessResultSchema);\n },\n });\n\n // ------------------------------------------------------------------------\n // table_buffering_combine — group/merge state_ids (unary)\n // ------------------------------------------------------------------------\n protocol.unary(\"table_buffering_combine\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (rpcParams, ctx?: any) => {\n const inner = unwrapRequest(rpcParams.request);\n const clientLog = makeClientLog(ctx);\n const { func, params } = await loadParams(inner, clientLog, ctx);\n const stateIds = decodeBytesList(inner.state_ids);\n const finalizeStateIds = await func.bufferingConfig.combine(stateIds, params);\n const out = finalizeStateIds.map((fid, i) => {\n if (!(fid instanceof Uint8Array)) {\n throw new Error(\n `${func.meta.name}.combine() returned non-Uint8Array finalize_state_id at index ${i}`,\n );\n }\n return fid;\n });\n return wrapResult(\n { finalize_state_ids: out },\n TableBufferingCombineResultSchema,\n );\n },\n });\n\n // ------------------------------------------------------------------------\n // table_buffering_destructor — best-effort end-of-query cleanup (unary)\n // ------------------------------------------------------------------------\n protocol.unary(\"table_buffering_destructor\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (rpcParams) => {\n try {\n const inner = unwrapRequest(rpcParams.request);\n const executionId = toUint8Array(inner.execution_id);\n const bound = new BoundStorage(defaultStorage, executionId);\n await bound.executionClear();\n } catch {\n // Teardown path — swallow; the entry is wiped when the worker exits.\n }\n return wrapResult({}, TableBufferingDestructorResultSchema);\n },\n });\n}\n\nfunction makeClientLog(ctx: any): (level: string, message: string) => void {\n if (ctx && typeof ctx.clientLog === \"function\") {\n return (level: string, message: string) => ctx.clientLog(level, message);\n }\n return () => {};\n}\n\nfunction decodeBytesList(raw: any): Uint8Array[] {\n if (raw == null) return [];\n const out: Uint8Array[] = [];\n const iter: Iterable<any> = Array.isArray(raw)\n ? raw\n : typeof raw[Symbol.iterator] === \"function\"\n ? raw\n : [];\n for (const entry of iter) {\n if (entry == null) continue;\n out.push(toUint8Array(entry));\n }\n return out;\n}\n\nfunction hex(buf: Uint8Array): string {\n return Array.from(buf, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\n",
|
|
67
67
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Catalog admin handlers: attach/detach/create/drop, version, transactions,\n// schemas (list, get, create, drop), schema contents listings.\n\nimport { type VgiSchema, schema, type VgiField, field, type VgiDataType, binary, utf8, bool } from \"../../../arrow/index.js\";\nimport { Protocol, type CallContext } from \"@query-farm/vgi-rpc\";\nimport { encodeSchemaInfo, encodeTableInfo, encodeViewInfo, encodeFunctionInfo, encodeCatalogInfo } from \"../../../generated/vgi-client.js\";\nimport { encodeCopyFromFormatInfo } from \"../../../catalog/interface.js\";\nimport {\n CatalogCatalogsResultSchema,\n CatalogAttachResultSchema,\n CatalogVersionResultSchema,\n CatalogTransactionBeginResultSchema,\n CatalogSchemasResultSchema,\n CatalogSchemaGetResultSchema,\n CatalogSchemaContentsTablesResultSchema,\n CatalogSchemaContentsViewsResultSchema,\n CatalogSchemaContentsFunctionsResultSchema,\n CatalogCopyFromFormatsResultSchema,\n} from \"../../../generated/vgi-protocol-schemas.js\";\nimport { toUint8Array } from \"../../../util/bytes.js\";\nimport { decodeDictValue } from \"../../../util/arrow/index.js\";\nimport {\n REQUEST_PARAMS_SCHEMA,\n RESULT_BINARY_SCHEMA,\n unwrapRequest,\n wrapResult,\n} from \"../shared.js\";\nimport {\n type GetCatalog,\n decodeOptionsBatch,\n emptyResultSchema,\n attachOpaqueDataParam,\n attachOpaqueDataTxnParams,\n attachOpaqueDataNameTxnParams,\n catalogUnary,\n sealAttach,\n openAttach,\n sealTransaction,\n} from \"./shared.js\";\n\nexport function registerCatalogAdminMethods(protocol: Protocol, getCatalog: GetCatalog, signingKey?: Uint8Array): void {\n // catalog_catalogs\n catalogUnary(protocol, signingKey, \"catalog_catalogs\", {\n params: emptyResultSchema,\n result: RESULT_BINARY_SCHEMA,\n handler: async () => {\n const cat = getCatalog();\n // Each catalog advertised as an IPC-serialized CatalogInfo\n // {name, implementation_version?, data_version_spec?}. Versioned workers\n // override catalogsInfo() to supply real values; otherwise both version\n // fields default to null.\n const infos = cat.catalogsInfo\n ? await cat.catalogsInfo()\n : cat.catalogs().map((name) => ({\n name,\n implementation_version: null,\n data_version_spec: null,\n attach_option_specs: [],\n releases: [],\n }));\n const items = infos.map((info) => encodeCatalogInfo(info));\n return wrapResult({ items }, CatalogCatalogsResultSchema);\n },\n });\n\n // catalog_attach (params wrapped in request: Binary like bind/init)\n protocol.unary(\"catalog_attach\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params, ctx) => {\n const innerParams = unwrapRequest(params.request);\n const cat = getCatalog();\n // The extension sends user-supplied ATTACH options as an IPC-serialized\n // RecordBatch of typed columns — one column per option. Deserialize\n // once here so workers see an ergonomic {name: value} dict instead of\n // raw bytes. Nullable / absent → {}.\n const optionsDict = decodeOptionsBatch(innerParams.options);\n const result = await cat.attach(\n innerParams.name,\n optionsDict,\n innerParams.data_version_spec ?? null,\n innerParams.implementation_version ?? null,\n );\n // Seal the attach value into an AEAD envelope bound to the caller's\n // identity before it leaves the worker (HTTP transport; pass-through\n // when there is no signing key).\n const sealedAttach = await sealAttach(\n toUint8Array(result.attach_opaque_data),\n (ctx as CallContext | undefined)?.auth,\n signingKey,\n );\n return wrapResult({\n attach_opaque_data: sealedAttach,\n supports_transactions: result.supports_transactions,\n supports_time_travel: result.supports_time_travel,\n catalog_version_frozen: result.catalog_version_frozen,\n catalog_version: result.catalog_version,\n attach_opaque_data_required: result.attach_opaque_data_required ?? true,\n default_schema: result.default_schema ?? \"main\",\n settings: result.settings ?? [],\n secret_types: result.secret_types ?? [],\n attach_catalogs: result.attach_catalogs ?? [],\n comment: result.comment ?? null,\n tags: result.tags ?? {},\n // True so DuckDB will route catalog_table_column_statistics_get RPCs\n // to our handler for tables whose TableInfo.supports_column_statistics\n // is also true. Catalogs that never serve column stats can override\n // this in attach() via CatalogAttachResult.supports_column_statistics.\n supports_column_statistics: result.supports_column_statistics ?? true,\n resolved_data_version: result.resolved_data_version ?? null,\n resolved_implementation_version: result.resolved_implementation_version ?? null,\n }, CatalogAttachResultSchema);\n },\n });\n\n // catalog_detach\n catalogUnary(protocol, signingKey, \"catalog_detach\", {\n params: attachOpaqueDataParam,\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.detach(toUint8Array(params.attach_opaque_data));\n return {};\n },\n });\n\n // catalog_create\n catalogUnary(protocol, signingKey, \"catalog_create\", {\n params: schema([\n field(\"name\", utf8(), false),\n field(\"on_conflict\", utf8(), false),\n field(\"options\", binary(), true),\n ]),\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.create(params.name, params.on_conflict, params.options);\n return {};\n },\n });\n\n // catalog_drop\n catalogUnary(protocol, signingKey, \"catalog_drop\", {\n params: schema([field(\"name\", utf8(), false)]),\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.drop(params.name);\n return {};\n },\n });\n\n // catalog_version\n catalogUnary(protocol, signingKey, \"catalog_version\", {\n params: attachOpaqueDataTxnParams,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const cat = getCatalog();\n const version = await cat.version(\n toUint8Array(params.attach_opaque_data),\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return wrapResult({ version }, CatalogVersionResultSchema);\n },\n });\n\n // catalog_transaction_begin — bespoke: it must keep the *sealed* attach\n // envelope to bind the transaction envelope's AAD, so it cannot route\n // through catalogUnary (which would replace it with plaintext).\n protocol.unary(\"catalog_transaction_begin\", {\n params: attachOpaqueDataParam,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params, ctx) => {\n const auth = (ctx as CallContext | undefined)?.auth;\n const sealedAttach =\n params.attach_opaque_data != null ? toUint8Array(params.attach_opaque_data) : new Uint8Array(0);\n const attachPlain = await openAttach(sealedAttach, auth, signingKey);\n const cat = getCatalog();\n const txPlain = await cat.transactionBegin(attachPlain);\n // Seal the transaction value, binding it to the caller's identity and\n // the parent attach envelope it was minted under. null → null.\n const transaction_opaque_data =\n txPlain != null ? await sealTransaction(toUint8Array(txPlain), sealedAttach, auth, signingKey) : null;\n return wrapResult({ transaction_opaque_data }, CatalogTransactionBeginResultSchema);\n },\n });\n\n // catalog_transaction_commit\n catalogUnary(protocol, signingKey, \"catalog_transaction_commit\", {\n params: attachOpaqueDataTxnParams,\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.transactionCommit(\n toUint8Array(params.attach_opaque_data),\n toUint8Array(params.transaction_opaque_data)\n );\n return {};\n },\n });\n\n // catalog_transaction_rollback\n catalogUnary(protocol, signingKey, \"catalog_transaction_rollback\", {\n params: attachOpaqueDataTxnParams,\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.transactionRollback(\n toUint8Array(params.attach_opaque_data),\n toUint8Array(params.transaction_opaque_data)\n );\n return {};\n },\n });\n\n // catalog_schemas\n catalogUnary(protocol, signingKey, \"catalog_schemas\", {\n params: attachOpaqueDataTxnParams,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const cat = getCatalog();\n const schemas = await cat.schemas(\n toUint8Array(params.attach_opaque_data),\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return wrapResult({\n items: schemas.map((s) => encodeSchemaInfo(s)),\n }, CatalogSchemasResultSchema);\n },\n });\n\n // catalog_copy_from_formats — catalog-level (not schema-scoped). Lists the\n // custom COPY ... FROM formats this catalog advertises; empty list when none.\n catalogUnary(protocol, signingKey, \"catalog_copy_from_formats\", {\n params: attachOpaqueDataTxnParams,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const cat = getCatalog();\n const formats = await cat.copyFromFormats(\n toUint8Array(params.attach_opaque_data),\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined,\n );\n return wrapResult({\n items: formats.map((f) => encodeCopyFromFormatInfo(f)),\n }, CatalogCopyFromFormatsResultSchema);\n },\n });\n\n // catalog_schema_get\n catalogUnary(protocol, signingKey, \"catalog_schema_get\", {\n params: attachOpaqueDataNameTxnParams,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const cat = getCatalog();\n const info = await cat.schemaGet(\n toUint8Array(params.attach_opaque_data),\n params.name,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return wrapResult({\n items: info ? [encodeSchemaInfo(info)] : [],\n }, CatalogSchemaGetResultSchema);\n },\n });\n\n // catalog_schema_create\n catalogUnary(protocol, signingKey, \"catalog_schema_create\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"name\", utf8(), false),\n field(\"comment\", utf8(), true),\n field(\"tags\", binary(), true),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.schemaCreate(\n toUint8Array(params.attach_opaque_data),\n params.name,\n params.comment,\n null, // tags\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_schema_drop\n catalogUnary(protocol, signingKey, \"catalog_schema_drop\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"name\", utf8(), false),\n field(\"ignore_not_found\", bool(), true),\n field(\"cascade\", bool(), true),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.schemaDrop(\n toUint8Array(params.attach_opaque_data),\n params.name,\n params.ignore_not_found,\n params.cascade,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_schema_contents_tables\n catalogUnary(protocol, signingKey, \"catalog_schema_contents_tables\", {\n params: attachOpaqueDataNameTxnParams,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const cat = getCatalog();\n const tables = await cat.schemaContentsTables(\n toUint8Array(params.attach_opaque_data),\n params.name,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return wrapResult({\n items: tables.map((t) => encodeTableInfo(t)),\n }, CatalogSchemaContentsTablesResultSchema);\n },\n });\n\n // catalog_schema_contents_views\n catalogUnary(protocol, signingKey, \"catalog_schema_contents_views\", {\n params: attachOpaqueDataNameTxnParams,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const cat = getCatalog();\n const views = await cat.schemaContentsViews(\n toUint8Array(params.attach_opaque_data),\n params.name,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return wrapResult({\n items: views.map((v) => encodeViewInfo(v)),\n }, CatalogSchemaContentsViewsResultSchema);\n },\n });\n\n // catalog_schema_contents_functions\n catalogUnary(protocol, signingKey, \"catalog_schema_contents_functions\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"name\", utf8(), false),\n field(\"type\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const cat = getCatalog();\n const funcs = await cat.schemaContentsFunctions(\n toUint8Array(params.attach_opaque_data),\n params.name,\n decodeDictValue(params.type),\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return wrapResult({\n items: funcs.map((f) => encodeFunctionInfo(f)),\n }, CatalogSchemaContentsFunctionsResultSchema);\n },\n });\n}\n",
|
|
68
68
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Catalog table handlers: table_get/create/drop, scan_function_get,\n// column_statistics_get, comment_set, rename, plus all column_* mutations.\n\nimport { type VgiSchema, schema, type VgiField, field, type VgiDataType, binary, utf8, bool, int32, list } from \"../../../arrow/index.js\";\nimport { Protocol } from \"@query-farm/vgi-rpc\";\nimport { encodeTableInfo } from \"../../../generated/vgi-client.js\";\nimport {\n CatalogTableGetResultSchema,\n ScanFunctionResultSchema,\n ScanBranchesResultSchema,\n} from \"../../../generated/vgi-protocol-schemas.js\";\nimport { toUint8Array } from \"../../../util/bytes.js\";\nimport {\n RESULT_BINARY_SCHEMA,\n RESULT_BINARY_NULLABLE_SCHEMA,\n wrapResult,\n} from \"../shared.js\";\nimport {\n type GetCatalog,\n emptyResultSchema,\n schemaNameIgnoreNotFoundTxnParams,\n schemaNameCommentParams,\n schemaNameRenameParams,\n columnOpParams,\n catalogUnary,\n} from \"./shared.js\";\n\nexport function registerCatalogTableMethods(protocol: Protocol, getCatalog: GetCatalog, signingKey?: Uint8Array): void {\n // catalog_table_get\n catalogUnary(protocol, signingKey, \"catalog_table_get\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"at_unit\", utf8(), true),\n field(\"at_value\", utf8(), true),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const cat = getCatalog();\n const info = await cat.tableGet(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.at_unit,\n params.at_value,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return wrapResult({\n items: info ? [encodeTableInfo(info)] : [],\n }, CatalogTableGetResultSchema);\n },\n });\n\n // catalog_table_create\n catalogUnary(protocol, signingKey, \"catalog_table_create\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"columns\", binary(), false),\n field(\"on_conflict\", utf8(), false),\n field(\"not_null_constraints\", list(field(\"item\", int32(), false)), true),\n field(\"unique_constraints\", list(field(\"item\", list(field(\"item\", int32(), false)), false)), true),\n field(\"check_constraints\", list(field(\"item\", utf8(), false)), true),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableCreate(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n toUint8Array(params.columns),\n params.on_conflict,\n params.not_null_constraints ?? [],\n params.unique_constraints ?? [],\n params.check_constraints ?? [],\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_table_drop\n catalogUnary(protocol, signingKey, \"catalog_table_drop\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"ignore_not_found\", bool(), true),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableDrop(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.ignore_not_found,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_table_column_statistics_get\n catalogUnary(protocol, signingKey, \"catalog_table_column_statistics_get\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: RESULT_BINARY_NULLABLE_SCHEMA,\n handler: async (params) => {\n const cat = getCatalog();\n const stats = await cat.tableColumnStatisticsGet(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined,\n );\n return { result: stats?.bytes ?? null };\n },\n });\n\n // catalog_table_scan_function_get\n catalogUnary(protocol, signingKey, \"catalog_table_scan_function_get\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"at_unit\", utf8(), true),\n field(\"at_value\", utf8(), true),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const cat = getCatalog();\n const scanResult = await cat.tableScanFunctionGet(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.at_unit,\n params.at_value,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return wrapResult(scanResult, ScanFunctionResultSchema);\n },\n });\n\n // catalog_table_scan_branches_get — branches-aware variant of\n // scan_function_get. The branches-aware C++ extension calls this for every\n // table scan; single-source catalogs synthesise a one-branch result.\n catalogUnary(protocol, signingKey, \"catalog_table_scan_branches_get\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"at_unit\", utf8(), true),\n field(\"at_value\", utf8(), true),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const cat = getCatalog();\n const branchesResult = await cat.tableScanBranchesGet(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.at_unit,\n params.at_value,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return wrapResult(branchesResult, ScanBranchesResultSchema);\n },\n });\n\n // catalog_table_comment_set\n catalogUnary(protocol, signingKey, \"catalog_table_comment_set\", {\n params: schemaNameCommentParams,\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableCommentSet(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.comment,\n params.ignore_not_found,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_table_rename\n catalogUnary(protocol, signingKey, \"catalog_table_rename\", {\n params: schemaNameRenameParams,\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableRename(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.new_name,\n params.ignore_not_found,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_table_column_add\n catalogUnary(protocol, signingKey, \"catalog_table_column_add\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"column_type\", utf8(), false),\n field(\"default_value\", utf8(), true),\n field(\"ignore_not_found\", bool(), true),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableColumnAdd(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.column_name,\n params.column_type,\n params.default_value,\n params.ignore_not_found,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_table_column_drop\n catalogUnary(protocol, signingKey, \"catalog_table_column_drop\", {\n params: columnOpParams,\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableColumnDrop(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.column_name,\n params.ignore_not_found,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_table_column_rename\n catalogUnary(protocol, signingKey, \"catalog_table_column_rename\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"new_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), true),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableColumnRename(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.column_name,\n params.new_name,\n params.ignore_not_found,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_table_column_default_set\n catalogUnary(protocol, signingKey, \"catalog_table_column_default_set\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"default_value\", utf8(), false),\n field(\"ignore_not_found\", bool(), true),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableColumnDefaultSet(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.column_name,\n params.default_value,\n params.ignore_not_found,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_table_column_default_drop\n catalogUnary(protocol, signingKey, \"catalog_table_column_default_drop\", {\n params: columnOpParams,\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableColumnDefaultDrop(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.column_name,\n params.ignore_not_found,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_table_column_type_change\n catalogUnary(protocol, signingKey, \"catalog_table_column_type_change\", {\n params: schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"new_type\", utf8(), false),\n field(\"ignore_not_found\", bool(), true),\n field(\"transaction_opaque_data\", binary(), true),\n ]),\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableColumnTypeChange(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.column_name,\n params.new_type,\n params.ignore_not_found,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_table_not_null_set\n catalogUnary(protocol, signingKey, \"catalog_table_not_null_set\", {\n params: columnOpParams,\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableNotNullSet(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.column_name,\n params.ignore_not_found,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n\n // catalog_table_not_null_drop\n catalogUnary(protocol, signingKey, \"catalog_table_not_null_drop\", {\n params: columnOpParams,\n result: emptyResultSchema,\n handler: async (params) => {\n const cat = getCatalog();\n await cat.tableNotNullDrop(\n toUint8Array(params.attach_opaque_data),\n params.schema_name,\n params.name,\n params.column_name,\n params.ignore_not_found,\n params.transaction_opaque_data ? toUint8Array(params.transaction_opaque_data) : undefined\n );\n return {};\n },\n });\n}\n",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// VgiClient error class + RpcClient wrapper that translates RpcError into\n// VgiClientError, preserving the worker's remote traceback.\n\nimport { RpcError, type RpcClient } from \"@query-farm/vgi-rpc\";\n\n/** Error thrown by VgiClient when an RPC call fails or returns unexpected data. */\nexport class VgiClientError extends Error {\n /** Remote traceback from the worker, when an RpcError carried one. */\n readonly remoteTraceback?: string;\n /** Underlying error type from the worker (e.g. \"ValueError\"), when known. */\n readonly errorType?: string;\n\n constructor(\n message: string,\n options?: { remoteTraceback?: string; errorType?: string; cause?: unknown },\n ) {\n super(message, options?.cause != null ? { cause: options.cause } : undefined);\n this.name = \"VgiClientError\";\n if (options?.remoteTraceback) this.remoteTraceback = options.remoteTraceback;\n if (options?.errorType) this.errorType = options.errorType;\n }\n\n /**\n * Build a VgiClientError from an underlying RpcError, preserving the\n * remote error type, message, and traceback so the worker-raised exception\n * shows up at the top of the stack rather than buried under VGI framing.\n * Mirrors Python's ClientError.from_rpc_error.\n */\n static fromRpcError(e: RpcError): VgiClientError {\n const head = `${e.errorType}: ${e.errorMessage}`;\n const message = e.remoteTraceback\n ? `${head}\\n\\nRemote traceback:\\n${e.remoteTraceback}`\n : head;\n return new VgiClientError(message, {\n remoteTraceback: e.remoteTraceback || undefined,\n errorType: e.errorType,\n cause: e,\n });\n }\n}\n\n/**\n * Wrap an RpcClient so any RpcError thrown by call/stream is rethrown as a\n * VgiClientError carrying the worker's remote traceback. Other errors\n * propagate unchanged.\n */\nexport function wrapRpcWithErrorEnrichment(rpc: RpcClient): RpcClient {\n return {\n async call(method, params) {\n try {\n return await rpc.call(method, params);\n } catch (e) {\n if (e instanceof RpcError) throw VgiClientError.fromRpcError(e);\n throw e;\n }\n },\n async stream(method, params) {\n try {\n return await rpc.stream(method, params);\n } catch (e) {\n if (e instanceof RpcError) throw VgiClientError.fromRpcError(e);\n throw e;\n }\n },\n describe: () => rpc.describe(),\n close: () => rpc.close(),\n };\n}\n",
|
|
80
80
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Internal helpers shared by VgiClient methods.\n\nimport { toUint8Array } from \"../util/bytes.js\";\n\n/**\n * Deserialize a List<Binary> of serialized info batches into typed info objects.\n */\nexport function deserializeInfoList<T>(\n items: unknown,\n deserializeFn: (bytes: Uint8Array) => T,\n): T[] {\n if (!items) return [];\n const arr: unknown[] = Array.isArray(items)\n ? items\n : [...(items as Iterable<unknown>)];\n return arr\n .filter((b) => b != null)\n .map((b) => deserializeFn(toUint8Array(b)));\n}\n\n/**\n * Deserialize Arrow Map entries into a plain Record<string, string>.\n */\nexport function deserializeTags(mapVal: unknown): Record<string, string> {\n const tags: Record<string, string> = {};\n if (!mapVal) return tags;\n const iterable = mapVal as { [Symbol.iterator]?: () => Iterator<unknown> };\n if (typeof iterable[Symbol.iterator] !== \"function\") return tags;\n for (const entry of iterable as Iterable<unknown>) {\n if (Array.isArray(entry)) {\n tags[String(entry[0])] = String(entry[1]);\n } else if (entry && typeof entry === \"object\") {\n const e = entry as Record<string, unknown> & { [0]?: unknown; [1]?: unknown };\n tags[String(e.key ?? e[0] ?? \"\")] = String(e.value ?? e[1] ?? \"\");\n }\n }\n return tags;\n}\n\n/**\n * Convert sync/async iterable to async iterator.\n */\nexport function toAsyncIterator<T>(\n input: Iterable<T> | AsyncIterable<T>,\n): AsyncIterator<T> {\n if (Symbol.asyncIterator in (input as any)) {\n return (input as AsyncIterable<T>)[Symbol.asyncIterator]();\n }\n const syncIter = (input as Iterable<T>)[Symbol.iterator]();\n return {\n async next() {\n return syncIter.next();\n },\n };\n}\n"
|
|
81
81
|
],
|
|
82
|
-
"mappings": "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,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,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",
|
|
83
|
-
"debugId": "
|
|
82
|
+
"mappings": "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K,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO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",
|
|
83
|
+
"debugId": "606DBE277F7C8D1D64756E2164756E21",
|
|
84
84
|
"names": []
|
|
85
85
|
}
|