import { E as Embedder, R as RetrieverFactory, K as KnowledgeStoreFactory } from '../../../types-B0JV4XZ0.mjs'; import { D as DrizzleClientOptions } from '../../../client-BYVNvU5S.mjs'; export { a as DrizzleDb, g as getDrizzleDb } from '../../../client-BYVNvU5S.mjs'; import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core'; import 'drizzle-orm/postgres-js'; /** * Default KnowledgeStore implementation — Postgres + pgvector via Drizzle. * * One implementation of the `KnowledgeStore`/`Retriever` interfaces — the * interfaces, not this file, are the contract. It reuses the existing * `getDrizzleDb` pool (no second connection manager) and ships its own schema + * SQL migration (`CREATE EXTENSION vector`, the generated tsvector column, and * the HNSW/GIN indexes). * * Security invariants upheld here (mirroring the chat store): * • A `Retriever`/`KnowledgeStore` is bound to namespace(s) at construction. * • `query` is hard-fenced to those namespaces — there is no namespace * parameter, so a foreign namespace is unrepresentable. * • Writes assert the bound namespace (`NamespaceAccessError` → 403). * • `upsert` is idempotent on (namespace, source, chunkIndex), short-circuits * unchanged sources by contentHash, and deletes the orphaned tail when a * source shrinks. */ interface PgVectorKnowledgeOptions extends DrizzleClientOptions { /** Embedder whose `dimensions` MUST equal the vector column width (1536). */ embedder: Embedder; } /** * Read-only factory for the handler. Pass to * `createChatHandler({ retrieval: { store: createKnowledgeDrizzleRetriever({ embedder }) } })`. */ declare function createKnowledgeDrizzleRetriever(opts: PgVectorKnowledgeOptions): RetrieverFactory; /** * Read+write factory for the ingestion/admin module ONLY. Bound to ONE * namespace; never passed to `createChatHandler`. * * const store = createKnowledgeDrizzleStore({ embedder })(`agent:${agentId}`); * await ingest({ store, namespace: `agent:${agentId}`, sources, embedder }); */ declare function createKnowledgeDrizzleStore(opts: PgVectorKnowledgeOptions): KnowledgeStoreFactory; /** * Drizzle schema for the default Postgres + pgvector KnowledgeStore. * * As with the chat schema, this is NOT the public contract — the * `KnowledgeStore`/`Retriever` interfaces are. It's exported so consumers on the * default path can run `drizzle-kit` against it and so the shipped SQL migration * can reference it. * * Two tables: * • knowledge_sources — one row per logical source, holding `contentHash` for * cheap resync diffing (is this source unchanged? → one indexed lookup). * • knowledge_chunks — the vectors + a generated tsvector for hybrid lexical * search. * * The `vector(1536)` column and the generated `tsv` column + their indexes are * created in the shipped SQL migration (drizzle-kit can't model pgvector or a * GENERATED tsvector column directly). The custom `vector` type below lets the * store SELECT/INSERT the column through Drizzle. */ /** * pgvector column type. Dimension is fixed at migration time and MUST match the * embedder. We serialise to the `'[1,2,3]'` text form pgvector accepts, and * parse the same form back. */ declare const vector: (name: string, dim: number) => drizzle_orm_pg_core.PgCustomColumnBuilder<{ name: string; dataType: "custom"; columnType: "PgCustomColumn"; data: number[]; driverParam: string; enumValues: undefined; }>; /** * Default embedding dimension (Gemini gemini-embedding-2 at output * dimensionality 1536, L2-normalized). Override in a host migration if you pick * a different model — the column width is the source of truth and must equal the * embedder's `dimensions`. */ declare const EMBED_DIM = 1536; declare const knowledgeSources: drizzle_orm_pg_core.PgTableWithColumns<{ name: "knowledge_sources"; schema: undefined; columns: { id: drizzle_orm_pg_core.PgColumn<{ name: "id"; tableName: "knowledge_sources"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; namespace: drizzle_orm_pg_core.PgColumn<{ name: "namespace"; tableName: "knowledge_sources"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; source: drizzle_orm_pg_core.PgColumn<{ name: "source"; tableName: "knowledge_sources"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; type: drizzle_orm_pg_core.PgColumn<{ name: "type"; tableName: "knowledge_sources"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; title: drizzle_orm_pg_core.PgColumn<{ name: "title"; tableName: "knowledge_sources"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; status: drizzle_orm_pg_core.PgColumn<{ name: "status"; tableName: "knowledge_sources"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; contentHash: drizzle_orm_pg_core.PgColumn<{ name: "content_hash"; tableName: "knowledge_sources"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; chunkCount: drizzle_orm_pg_core.PgColumn<{ name: "chunk_count"; tableName: "knowledge_sources"; dataType: "number"; columnType: "PgInteger"; data: number; driverParam: string | number; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; error: drizzle_orm_pg_core.PgColumn<{ name: "error"; tableName: "knowledge_sources"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; metadata: drizzle_orm_pg_core.PgColumn<{ name: "metadata"; tableName: "knowledge_sources"; dataType: "json"; columnType: "PgJsonb"; data: Record; driverParam: unknown; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: Record; }>; createdAt: drizzle_orm_pg_core.PgColumn<{ name: "created_at"; tableName: "knowledge_sources"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; updatedAt: drizzle_orm_pg_core.PgColumn<{ name: "updated_at"; tableName: "knowledge_sources"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; }; dialect: "pg"; }>; declare const knowledgeChunks: drizzle_orm_pg_core.PgTableWithColumns<{ name: "knowledge_chunks"; schema: undefined; columns: { id: drizzle_orm_pg_core.PgColumn<{ name: "id"; tableName: "knowledge_chunks"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; namespace: drizzle_orm_pg_core.PgColumn<{ name: "namespace"; tableName: "knowledge_chunks"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; source: drizzle_orm_pg_core.PgColumn<{ name: "source"; tableName: "knowledge_chunks"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; title: drizzle_orm_pg_core.PgColumn<{ name: "title"; tableName: "knowledge_chunks"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; chunkIndex: drizzle_orm_pg_core.PgColumn<{ name: "chunk_index"; tableName: "knowledge_chunks"; dataType: "number"; columnType: "PgInteger"; data: number; driverParam: string | number; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; content: drizzle_orm_pg_core.PgColumn<{ name: "content"; tableName: "knowledge_chunks"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; embedding: drizzle_orm_pg_core.PgColumn<{ name: string; tableName: "knowledge_chunks"; dataType: "custom"; columnType: "PgCustomColumn"; data: number[]; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { pgColumnBuilderBrand: "PgCustomColumnBuilderBrand"; }>; contentHash: drizzle_orm_pg_core.PgColumn<{ name: "content_hash"; tableName: "knowledge_chunks"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; metadata: drizzle_orm_pg_core.PgColumn<{ name: "metadata"; tableName: "knowledge_chunks"; dataType: "json"; columnType: "PgJsonb"; data: Record; driverParam: unknown; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: Record; }>; createdAt: drizzle_orm_pg_core.PgColumn<{ name: "created_at"; tableName: "knowledge_chunks"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; }; dialect: "pg"; }>; type KnowledgeSourceRow = typeof knowledgeSources.$inferSelect; type NewKnowledgeSourceRow = typeof knowledgeSources.$inferInsert; type KnowledgeChunkRow = typeof knowledgeChunks.$inferSelect; type NewKnowledgeChunkRow = typeof knowledgeChunks.$inferInsert; declare const schema_EMBED_DIM: typeof EMBED_DIM; type schema_KnowledgeChunkRow = KnowledgeChunkRow; type schema_KnowledgeSourceRow = KnowledgeSourceRow; type schema_NewKnowledgeChunkRow = NewKnowledgeChunkRow; type schema_NewKnowledgeSourceRow = NewKnowledgeSourceRow; declare const schema_knowledgeChunks: typeof knowledgeChunks; declare const schema_knowledgeSources: typeof knowledgeSources; declare const schema_vector: typeof vector; declare namespace schema { export { schema_EMBED_DIM as EMBED_DIM, type schema_KnowledgeChunkRow as KnowledgeChunkRow, type schema_KnowledgeSourceRow as KnowledgeSourceRow, type schema_NewKnowledgeChunkRow as NewKnowledgeChunkRow, type schema_NewKnowledgeSourceRow as NewKnowledgeSourceRow, schema_knowledgeChunks as knowledgeChunks, schema_knowledgeSources as knowledgeSources, schema_vector as vector }; } export { DrizzleClientOptions, EMBED_DIM, type KnowledgeChunkRow, type KnowledgeSourceRow, type NewKnowledgeChunkRow, type NewKnowledgeSourceRow, type PgVectorKnowledgeOptions, createKnowledgeDrizzleRetriever, createKnowledgeDrizzleStore, schema, vector };