@quelvio/langchain 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/exceptions.ts","../src/types.ts","../src/version.ts","../src/client.ts","../src/retriever.ts","../src/synthesis.ts","../src/tool.ts"],"names":["z","Document","BaseRetriever","StructuredTool"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Typed exceptions for `@quelvio/langchain`.\n *\n * Every error inherits from {@link QuelvioError}. Catch that for a broad\n * net; catch a subclass to handle a specific failure mode (auth, rate\n * limit, transient server error, etc.).\n */\n\nexport class QuelvioError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'QuelvioError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\n/** Authentication failed (HTTP 401 or 403). */\nexport class QuelvioAuthError extends QuelvioError {\n constructor(message: string) {\n super(message);\n this.name = 'QuelvioAuthError';\n }\n}\n\n/** The request was rejected as malformed (HTTP 400). */\nexport class QuelvioBadRequestError extends QuelvioError {\n constructor(message: string) {\n super(message);\n this.name = 'QuelvioBadRequestError';\n }\n}\n\n/** The requested resource was not found (HTTP 404). */\nexport class QuelvioNotFoundError extends QuelvioError {\n constructor(message: string) {\n super(message);\n this.name = 'QuelvioNotFoundError';\n }\n}\n\n/** Rate limited by the Quelvio API (HTTP 429). */\nexport class QuelvioRateLimitError extends QuelvioError {\n /** Value of the `Retry-After` header if present; otherwise `null`. */\n retryAfterSeconds: number | null;\n\n constructor(message: string, retryAfterSeconds: number | null = null) {\n super(message);\n this.name = 'QuelvioRateLimitError';\n this.retryAfterSeconds = retryAfterSeconds;\n }\n}\n\n/** Quelvio returned a 5xx server error after retries were exhausted. */\nexport class QuelvioServerError extends QuelvioError {\n statusCode: number;\n\n constructor(message: string, statusCode: number) {\n super(message);\n this.name = 'QuelvioServerError';\n this.statusCode = statusCode;\n }\n}\n\n/** The HTTP request timed out before a response was received. */\nexport class QuelvioTimeoutError extends QuelvioError {\n constructor(message: string) {\n super(message);\n this.name = 'QuelvioTimeoutError';\n }\n}\n\n/** A non-timeout transport-level error (DNS, TLS, connection refused, etc.). */\nexport class QuelvioNetworkError extends QuelvioError {\n constructor(message: string) {\n super(message);\n this.name = 'QuelvioNetworkError';\n }\n}\n","/**\n * Zod schemas + TypeScript types for Quelvio API request and response\n * payloads. These mirror the wire format documented at\n * `https://api.quelvio.com/openapi.json`. Every response schema uses\n * `.passthrough()` so additions to the API (new fields on a chunk, a new\n * top-level response key) do not break older client versions.\n */\n\nimport { z } from 'zod';\n\nexport const QueryModeSchema = z.enum(['fast', 'standard', 'deep']);\nexport type QueryMode = z.infer<typeof QueryModeSchema>;\n\nexport const QueryRequestSchema = z.object({\n query: z.string(),\n limit: z.number().int().min(1).max(50).default(5),\n mode: QueryModeSchema.default('standard'),\n domain_filter: z.string().nullable().optional(),\n});\nexport type QueryRequest = z.infer<typeof QueryRequestSchema>;\n\nexport const ChunkResultSchema = z\n .object({\n chunk_id: z.string(),\n content_piece_id: z.string(),\n title: z.string(),\n excerpt: z.string(),\n score: z.number(),\n rank: z.number().int(),\n authority_score: z.number().nullable().optional(),\n taxonomy_domain: z.string().nullable().optional(),\n source_url: z.string().nullable().optional(),\n creator_id: z.string().nullable().optional(),\n author_name: z.string().nullable().optional(),\n author_email: z.string().nullable().optional(),\n department: z.string().nullable().optional(),\n })\n .passthrough();\nexport type ChunkResult = z.infer<typeof ChunkResultSchema>;\n\nexport const QueryResponseSchema = z\n .object({\n query: z.string(),\n query_id: z.string(),\n results: z.array(ChunkResultSchema).default([]),\n result_count: z.number().int().default(0),\n coverage: z.string().nullable().optional(),\n risk_flag: z.record(z.boolean()).default({}),\n retrieval_mode: z.string().nullable().optional(),\n synthesis: z.string().nullable().optional(),\n synthesis_model: z.string().nullable().optional(),\n latency_ms: z.number().int().nullable().optional(),\n tokens_consumed: z.number().int().nullable().optional(),\n })\n .passthrough();\nexport type QueryResponse = z.infer<typeof QueryResponseSchema>;\n\nexport const DomainCoverageSchema = z\n .object({\n taxonomy_domain: z.string(),\n document_count: z.number().int().default(0),\n chunk_count: z.number().int().default(0),\n expert_count: z.number().int().default(0),\n coverage_level: z.string().nullable().optional(),\n })\n .passthrough();\nexport type DomainCoverage = z.infer<typeof DomainCoverageSchema>;\n\nexport const DomainsListResponseSchema = z\n .object({\n domains: z.array(DomainCoverageSchema).default([]),\n total: z.number().int().default(0),\n })\n .passthrough();\nexport type DomainsListResponse = z.infer<typeof DomainsListResponseSchema>;\n\nexport const SourceChunkSchema = z\n .object({\n chunk_id: z.string(),\n content_piece_id: z.string(),\n title: z.string(),\n excerpt: z.string(),\n source_url: z.string().nullable().optional(),\n source_type: z.string().nullable().optional(),\n lifecycle_state: z.string().nullable().optional(),\n embedded_at: z.string().nullable().optional(),\n last_source_updated_at: z.string().nullable().optional(),\n authority_score: z.number().nullable().optional(),\n taxonomy_domain: z.string().nullable().optional(),\n author_name: z.string().nullable().optional(),\n author_email: z.string().nullable().optional(),\n })\n .passthrough();\nexport type SourceChunk = z.infer<typeof SourceChunkSchema>;\n\nexport const SourceDetailResponseSchema = z\n .object({\n query_id: z.string(),\n tenant_id: z.string().nullable().optional(),\n chunks: z.array(SourceChunkSchema).default([]),\n chunk_count: z.number().int().default(0),\n })\n .passthrough();\nexport type SourceDetailResponse = z.infer<typeof SourceDetailResponseSchema>;\n","/**\n * Package version. Hardcoded — kept in lockstep with `package.json` by\n * the release workflow. Reading the file at runtime would require an\n * extra read in every consumer environment (bundlers, edge runtimes) for\n * no real benefit, so we accept the duplication and let `tsup`'s `define`\n * mechanism flag a mismatch at build time.\n */\nexport const VERSION = '0.1.0';\n","/**\n * Async HTTP client for the Quelvio enterprise REST API.\n *\n * Wraps three endpoints used by the LangChain integration:\n *\n * - `POST /v1/enterprise/query` — retrieval + optional synthesis\n * - `GET /v1/enterprise/domains` — taxonomy discovery\n * - `GET /v1/enterprise/sources/{id}` — provenance for a previous query\n *\n * The bearer token is stored privately (closed over, not exposed as a\n * field) and is never written to `toString()`, `JSON.stringify()`, or\n * any error message emitted by this library. Pass it via the `apiKey`\n * constructor argument or set the `QUELVIO_API_KEY` environment variable.\n */\n\nimport {\n QuelvioAuthError,\n QuelvioBadRequestError,\n QuelvioError,\n QuelvioNetworkError,\n QuelvioNotFoundError,\n QuelvioRateLimitError,\n QuelvioServerError,\n QuelvioTimeoutError,\n} from './exceptions.js';\nimport {\n type DomainsListResponse,\n DomainsListResponseSchema,\n type QueryMode,\n type QueryResponse,\n QueryResponseSchema,\n type SourceDetailResponse,\n SourceDetailResponseSchema,\n} from './types.js';\nimport { VERSION } from './version.js';\n\nexport const DEFAULT_BASE_URL = 'https://api.quelvio.com';\nexport const DEFAULT_TIMEOUT_MS = 30_000;\nexport const DEFAULT_MAX_RETRIES = 3;\n\nconst BASE_BACKOFF_MS = 1_000;\nconst RETRYABLE_STATUSES = new Set([502, 503, 504]);\nconst VALID_MODES = new Set<QueryMode>(['fast', 'standard', 'deep']);\n\nexport type QuelvioSource =\n | 'langchain-js-client'\n | 'langchain-js-retriever'\n | 'langchain-js-tool'\n | 'langchain-js-synthesis';\n\nexport interface QuelvioClientOptions {\n /** Bearer token (PAT, OAuth access token, or Service Account key). Falls back to `QUELVIO_API_KEY`. */\n apiKey?: string;\n /** Override the API base URL. Defaults to `QUELVIO_API_BASE` or `https://api.quelvio.com`. */\n baseUrl?: string;\n /** Per-request timeout in milliseconds. Defaults to 30,000. */\n timeoutMs?: number;\n /** Number of retries for transient errors. Defaults to 3. */\n maxRetries?: number;\n /** Tag used for the `X-Quelvio-Command` header. Lets the audit-log writer distinguish callers. */\n source?: QuelvioSource;\n /**\n * Inject a custom `fetch`. Defaults to `globalThis.fetch`. Useful for\n * tests (pass a `vi.fn()`) or for environments where you need a\n * proxy-aware fetch.\n */\n fetch?: typeof globalThis.fetch;\n}\n\nexport interface QueryOptions {\n query: string;\n limit?: number;\n mode?: string;\n domainFilter?: string | null;\n}\n\ninterface RequestOptions {\n method: 'GET' | 'POST';\n path: string;\n body?: unknown;\n params?: Record<string, string | undefined>;\n}\n\nfunction resolveApiKey(explicit: string | undefined): string {\n if (explicit) return explicit;\n const fromEnv = process.env.QUELVIO_API_KEY;\n if (fromEnv) return fromEnv;\n throw new QuelvioAuthError(\n 'No Quelvio API key was provided. Pass `apiKey` to the constructor or set the ' +\n 'QUELVIO_API_KEY environment variable. Generate a Personal Access Token at ' +\n 'https://enterprise.quelvio.com/account.',\n );\n}\n\nfunction resolveBaseUrl(explicit: string | undefined): string {\n const candidate = explicit ?? process.env.QUELVIO_API_BASE ?? DEFAULT_BASE_URL;\n return candidate.replace(/\\/+$/, '');\n}\n\nfunction buildUserAgent(): string {\n return `@quelvio/langchain/${VERSION} node/${process.version} ${process.platform}-${process.arch}`;\n}\n\n/** Lower-case the mode and validate it. Exported for unit tests. */\nexport function normalizeMode(mode: string | undefined | null): QueryMode {\n if (mode === undefined || mode === null) return 'standard';\n const lowered = String(mode).trim().toLowerCase();\n if (!VALID_MODES.has(lowered as QueryMode)) {\n throw new QuelvioBadRequestError(\n `Invalid mode ${JSON.stringify(mode)}. Expected one of: fast, standard, deep.`,\n );\n }\n return lowered as QueryMode;\n}\n\n/** Clamp the chunk limit into [1, 50]. Exported for unit tests. */\nexport function boundLimit(value: number | undefined | null): number {\n if (value === undefined || value === null) return 5;\n if (value < 1) return 1;\n if (value > 50) return 50;\n return Math.floor(value);\n}\n\n/** Build the JSON body for `POST /v1/enterprise/query`. Exported for unit tests. */\nexport function buildQueryBody(opts: QueryOptions): Record<string, unknown> {\n const body: Record<string, unknown> = {\n query: opts.query,\n limit: boundLimit(opts.limit),\n mode: normalizeMode(opts.mode),\n };\n if (opts.domainFilter !== undefined && opts.domainFilter !== null) {\n body.domain_filter = opts.domainFilter;\n }\n return body;\n}\n\nfunction backoffMs(attempt: number, rand: number): number {\n const base = BASE_BACKOFF_MS * 2 ** attempt;\n const jitter = 1 + (rand * 0.4 - 0.2);\n return Math.round(base * jitter);\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction parseRetryAfter(value: string | null): number | null {\n if (!value) return null;\n const n = Number.parseInt(value, 10);\n return Number.isFinite(n) ? n : null;\n}\n\nasync function extractDetail(response: Response): Promise<string | null> {\n try {\n const clone = response.clone();\n const payload = (await clone.json()) as unknown;\n if (payload && typeof payload === 'object') {\n const obj = payload as Record<string, unknown>;\n const detail = obj.detail ?? obj.message;\n if (typeof detail === 'string') return detail;\n }\n } catch {\n try {\n const text = (await response.clone().text()).trim();\n return text ? text.slice(0, 500) : null;\n } catch {\n return null;\n }\n }\n return null;\n}\n\nasync function mapError(response: Response): Promise<QuelvioError> {\n const detail = await extractDetail(response);\n const status = response.status;\n const reason = response.statusText || '';\n\n if (status === 400) {\n return new QuelvioBadRequestError(detail ?? `Bad request: ${reason}`);\n }\n if (status === 401 || status === 403) {\n return new QuelvioAuthError(\n 'Quelvio authentication failed. Your token may be invalid, expired, or revoked. ' +\n 'Generate a new Personal Access Token at https://enterprise.quelvio.com/account.',\n );\n }\n if (status === 404) {\n return new QuelvioNotFoundError(detail ?? `Not found: ${reason}`);\n }\n if (status === 429) {\n const retryAfter = parseRetryAfter(response.headers.get('retry-after'));\n const suffix = retryAfter !== null ? ` (retry after ${retryAfter}s)` : '';\n return new QuelvioRateLimitError(`Quelvio rate limit exceeded.${suffix}`, retryAfter);\n }\n if (status >= 500 && status < 600) {\n return new QuelvioServerError(`Quelvio server error: ${status} ${reason}`, status);\n }\n return new QuelvioError(`Unexpected response: ${status} ${reason}`);\n}\n\n/**\n * Async HTTP client for the Quelvio enterprise API.\n *\n * @example\n * ```ts\n * const client = new QuelvioClient({ apiKey: 'qlv_pat_...' });\n * const response = await client.query({ query: \"what's our refund policy?\" });\n * ```\n */\nexport class QuelvioClient {\n readonly baseUrl: string;\n readonly timeoutMs: number;\n readonly maxRetries: number;\n\n // Held in a closure so it is invisible to `toString`, `JSON.stringify`,\n // and any introspection. There is no field on the instance.\n readonly #buildHeaders: () => Headers;\n readonly #fetch: typeof globalThis.fetch;\n readonly #source: QuelvioSource;\n readonly #apiKey: string;\n\n constructor(options: QuelvioClientOptions = {}) {\n this.#apiKey = resolveApiKey(options.apiKey);\n this.baseUrl = resolveBaseUrl(options.baseUrl);\n this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n this.maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n this.#source = options.source ?? 'langchain-js-client';\n this.#fetch = options.fetch ?? globalThis.fetch.bind(globalThis);\n\n const apiKey = this.#apiKey;\n const source = this.#source;\n this.#buildHeaders = () => {\n const h = new Headers();\n h.set('Authorization', `Bearer ${apiKey}`);\n h.set('Accept', 'application/json');\n h.set('Content-Type', 'application/json');\n h.set('User-Agent', buildUserAgent());\n h.set('X-Quelvio-Source', 'langchain-js');\n h.set('X-Quelvio-Command', source);\n return h;\n };\n }\n\n /**\n * Don't surface the bearer token from string coercion or JSON\n * serialization. We deliberately list non-sensitive fields only.\n */\n toString(): string {\n return `QuelvioClient(baseUrl=${this.baseUrl}, timeoutMs=${this.timeoutMs}, maxRetries=${this.maxRetries})`;\n }\n\n toJSON(): Record<string, unknown> {\n return {\n baseUrl: this.baseUrl,\n timeoutMs: this.timeoutMs,\n maxRetries: this.maxRetries,\n };\n }\n\n /** Internal accessor used by sibling classes that share the same client. */\n _exposeApiKeyForSibling(): string {\n return this.#apiKey;\n }\n\n /** Internal accessor — returns the configured `fetch` for sibling reuse. */\n _exposeFetchForSibling(): typeof globalThis.fetch {\n return this.#fetch;\n }\n\n /** Send a one-shot query and return the parsed response. */\n async query(opts: QueryOptions): Promise<QueryResponse> {\n if (!opts.query || !opts.query.trim()) {\n throw new TypeError('query must be a non-empty string');\n }\n const body = buildQueryBody(opts);\n const raw = await this.#request({ method: 'POST', path: '/v1/enterprise/query', body });\n return QueryResponseSchema.parse(raw);\n }\n\n async listDomains(opts: { coverage?: string } = {}): Promise<DomainsListResponse> {\n const params = opts.coverage ? { coverage: opts.coverage } : undefined;\n const raw = await this.#request({ method: 'GET', path: '/v1/enterprise/domains', params });\n return DomainsListResponseSchema.parse(raw);\n }\n\n async getSourceDetail(queryId: string): Promise<SourceDetailResponse> {\n if (!queryId) {\n throw new TypeError('queryId must be a non-empty string');\n }\n const raw = await this.#request({\n method: 'GET',\n path: `/v1/enterprise/sources/${encodeURIComponent(queryId)}`,\n });\n return SourceDetailResponseSchema.parse(raw);\n }\n\n async #request(opts: RequestOptions): Promise<unknown> {\n const url = this.#buildUrl(opts.path, opts.params);\n\n let lastError: unknown = null;\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), this.timeoutMs);\n\n let response: Response;\n try {\n response = await this.#fetch(url, {\n method: opts.method,\n headers: this.#buildHeaders(),\n body: opts.body === undefined ? undefined : JSON.stringify(opts.body),\n signal: controller.signal,\n });\n } catch (err) {\n lastError = err;\n clearTimeout(timer);\n\n const isAbort =\n (err instanceof Error && err.name === 'AbortError') ||\n (typeof err === 'object' &&\n err !== null &&\n (err as { name?: string }).name === 'AbortError');\n if (isAbort) {\n if (attempt < this.maxRetries) {\n await sleep(backoffMs(attempt, Math.random()));\n continue;\n }\n throw new QuelvioTimeoutError(\n `Request to ${opts.path} timed out after ${this.timeoutMs}ms`,\n );\n }\n if (attempt < this.maxRetries) {\n await sleep(backoffMs(attempt, Math.random()));\n continue;\n }\n const name = err instanceof Error ? err.constructor.name : typeof err;\n throw new QuelvioNetworkError(`Network error contacting Quelvio: ${name}`);\n } finally {\n clearTimeout(timer);\n }\n\n if (response.ok) {\n if (response.status === 204) return null;\n const text = await response.text();\n if (!text) return null;\n return JSON.parse(text);\n }\n\n if (RETRYABLE_STATUSES.has(response.status) && attempt < this.maxRetries) {\n await sleep(backoffMs(attempt, Math.random()));\n continue;\n }\n\n throw await mapError(response);\n }\n\n throw new QuelvioError(\n `Request failed after ${this.maxRetries + 1} attempts${\n lastError instanceof Error ? `: ${lastError.message}` : ''\n }`,\n );\n }\n\n #buildUrl(path: string, params: Record<string, string | undefined> | undefined): string {\n const normalized = path.startsWith('/') ? path : `/${path}`;\n if (!params) return `${this.baseUrl}${normalized}`;\n const search = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v !== undefined) search.set(k, v);\n }\n const qs = search.toString();\n return qs ? `${this.baseUrl}${normalized}?${qs}` : `${this.baseUrl}${normalized}`;\n }\n}\n","/**\n * `QuelvioRetriever` — a LangChain.js {@link BaseRetriever} backed by\n * Quelvio's enterprise knowledge API.\n *\n * Drop this into any LangChain RAG chain. Each call to `invoke()` makes\n * exactly one HTTP request to `POST /v1/enterprise/query` and converts\n * the returned chunks to LangChain `Document` objects, preserving per-\n * chunk provenance (source URL, authority score, taxonomy domain,\n * chunk id) in the `metadata` dict.\n */\n\nimport type { CallbackManagerForRetrieverRun } from '@langchain/core/callbacks/manager';\nimport { Document } from '@langchain/core/documents';\nimport { BaseRetriever, type BaseRetrieverInput } from '@langchain/core/retrievers';\n\nimport { QuelvioClient, type QuelvioClientOptions } from './client.js';\nimport type { ChunkResult, QueryResponse } from './types.js';\n\nexport interface QuelvioRetrieverOptions extends BaseRetrieverInput, QuelvioClientOptions {\n /** Maximum number of chunks to retrieve (1 to 50). Defaults to 5. */\n limit?: number;\n /** `fast` | `standard` (default) | `deep`. */\n mode?: string;\n /** Restrict retrieval to a single taxonomy domain. */\n domainFilter?: string | null;\n /** Inject a pre-built {@link QuelvioClient} for connection reuse. */\n client?: QuelvioClient;\n}\n\nfunction chunkToDocument(chunk: ChunkResult): Document {\n const metadata: Record<string, unknown> = {\n chunk_id: chunk.chunk_id,\n content_piece_id: chunk.content_piece_id,\n title: chunk.title,\n score: chunk.score,\n rank: chunk.rank,\n };\n if (chunk.authority_score !== undefined && chunk.authority_score !== null) {\n metadata.authority_score = chunk.authority_score;\n }\n if (chunk.taxonomy_domain) metadata.taxonomy_domain = chunk.taxonomy_domain;\n if (chunk.source_url) {\n metadata.source_url = chunk.source_url;\n metadata.source = chunk.source_url;\n }\n if (chunk.author_name) metadata.author_name = chunk.author_name;\n if (chunk.author_email) metadata.author_email = chunk.author_email;\n if (chunk.department) metadata.department = chunk.department;\n return new Document({ pageContent: chunk.excerpt, metadata });\n}\n\nfunction responseToDocuments(response: QueryResponse): Document[] {\n const docs = response.results.map(chunkToDocument);\n if (docs.length > 0) {\n // Stash the query_id on the first document so callers can re-resolve\n // provenance later via `QuelvioClient.getSourceDetail`.\n docs[0]!.metadata.query_id = response.query_id;\n }\n return docs;\n}\n\nexport class QuelvioRetriever extends BaseRetriever {\n static override lc_name(): string {\n return 'QuelvioRetriever';\n }\n\n override lc_namespace = ['quelvio', 'retrievers'];\n\n readonly limit: number;\n readonly mode: string;\n readonly domainFilter: string | null;\n\n readonly #client: QuelvioClient;\n\n constructor(options: QuelvioRetrieverOptions = {}) {\n super(options);\n this.limit = options.limit ?? 5;\n this.mode = options.mode ?? 'standard';\n this.domainFilter = options.domainFilter ?? null;\n\n if (options.client) {\n this.#client = options.client;\n } else {\n const clientOpts: QuelvioClientOptions = { source: 'langchain-js-retriever' };\n if (options.apiKey !== undefined) clientOpts.apiKey = options.apiKey;\n if (options.baseUrl !== undefined) clientOpts.baseUrl = options.baseUrl;\n if (options.timeoutMs !== undefined) clientOpts.timeoutMs = options.timeoutMs;\n if (options.maxRetries !== undefined) clientOpts.maxRetries = options.maxRetries;\n if (options.fetch !== undefined) clientOpts.fetch = options.fetch;\n this.#client = new QuelvioClient(clientOpts);\n }\n }\n\n override toString(): string {\n return `QuelvioRetriever(limit=${this.limit}, mode=${this.mode}, domainFilter=${\n this.domainFilter ?? 'null'\n })`;\n }\n\n override async _getRelevantDocuments(\n query: string,\n _runManager?: CallbackManagerForRetrieverRun,\n ): Promise<Document[]> {\n if (!query || !query.trim()) {\n throw new TypeError('query must be a non-empty string');\n }\n const response = await this.#client.query({\n query,\n limit: this.limit,\n mode: this.mode,\n domainFilter: this.domainFilter,\n });\n return responseToDocuments(response);\n }\n}\n","/**\n * One-shot helpers for getting a synthesized answer from Quelvio.\n *\n * `synthesizeAnswer` is the lowest-ceremony entry point: useful when you\n * want a single async function call that returns a final answer +\n * citations, without wiring up a retriever or an agent.\n */\n\nimport { QuelvioClient, type QuelvioClientOptions } from './client.js';\nimport type { ChunkResult, QueryResponse } from './types.js';\n\nexport interface SynthesizedAnswer {\n /** Synthesized natural-language answer, or `null` for `mode: 'fast'`. */\n answer: string | null;\n /** Chunks that informed the answer, in rank order. */\n sources: ChunkResult[];\n /** Server-side query identifier — pass to `QuelvioClient.getSourceDetail`. */\n queryId: string;\n}\n\nexport interface SynthesizeAnswerOptions extends QuelvioClientOptions {\n mode?: string;\n maxSources?: number;\n domainFilter?: string | null;\n client?: QuelvioClient;\n}\n\nfunction fromResponse(response: QueryResponse): SynthesizedAnswer {\n return {\n answer: response.synthesis ?? null,\n sources: [...response.results],\n queryId: response.query_id,\n };\n}\n\n/**\n * Ask Quelvio a question and return a synthesized answer plus citations.\n *\n * @example\n * ```ts\n * const { answer, sources } = await synthesizeAnswer(\"What's our refund policy?\");\n * console.log(answer);\n * for (const s of sources) console.log(` • ${s.title} → ${s.source_url}`);\n * ```\n */\nexport async function synthesizeAnswer(\n question: string,\n options: SynthesizeAnswerOptions = {},\n): Promise<SynthesizedAnswer> {\n if (!question || !question.trim()) {\n throw new TypeError('question must be a non-empty string');\n }\n\n let client = options.client;\n if (!client) {\n const clientOpts: QuelvioClientOptions = { source: 'langchain-js-synthesis' };\n if (options.apiKey !== undefined) clientOpts.apiKey = options.apiKey;\n if (options.baseUrl !== undefined) clientOpts.baseUrl = options.baseUrl;\n if (options.timeoutMs !== undefined) clientOpts.timeoutMs = options.timeoutMs;\n if (options.maxRetries !== undefined) clientOpts.maxRetries = options.maxRetries;\n if (options.fetch !== undefined) clientOpts.fetch = options.fetch;\n client = new QuelvioClient(clientOpts);\n }\n\n const response = await client.query({\n query: question,\n limit: options.maxSources ?? 5,\n mode: options.mode ?? 'standard',\n domainFilter: options.domainFilter ?? null,\n });\n return fromResponse(response);\n}\n\n/**\n * Async alias of {@link synthesizeAnswer} — preserved for symmetry with\n * the Python sibling package, which exposes both `synthesize_answer` and\n * `asynthesize_answer`. In JavaScript, fetch is async-only, so both\n * names point at the same implementation.\n */\nexport const asynthesizeAnswer = synthesizeAnswer;\n","/**\n * `QuelvioTool` — a LangChain.js {@link StructuredTool} for agents.\n *\n * Use this when you want an LLM agent to *decide* whether to query the\n * company's knowledge brain. The tool returns a synthesized natural-\n * language answer plus a list of cited sources (titles + URLs), which\n * the agent can quote back to the user.\n */\n\nimport type { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';\nimport { StructuredTool } from '@langchain/core/tools';\nimport { z } from 'zod';\n\nimport { QuelvioClient, type QuelvioClientOptions } from './client.js';\nimport type { QueryResponse } from './types.js';\n\nconst DEFAULT_DESCRIPTION =\n \"Search the organization's connected knowledge brain (Google Drive, \" +\n 'SharePoint, Confluence, Slack, Notion, and other internal sources) ' +\n 'for an authoritative, cited answer. Use this whenever the user asks ' +\n 'about internal company information — policies, processes, decisions, ' +\n 'people, products, projects, or anything else that lives in the ' +\n \"company's systems rather than on the public internet. The answer is \" +\n \"scoped to the running user's individual access permissions, so \" +\n 'results never include documents they cannot already see. Returns a ' +\n 'synthesized answer plus a list of cited sources (titles + URLs).';\n\nexport const QuelvioToolInputSchema = z.object({\n question: z\n .string()\n .min(1)\n .describe(\n \"The natural-language question to ask the company's knowledge brain. \" +\n 'Phrase it as the user would ask it — do not pre-process or keyword-extract.',\n ),\n mode: z\n .enum(['fast', 'standard', 'deep'])\n .optional()\n .describe(\n \"Synthesis depth: 'fast' for low-latency retrieval-only, 'standard' \" +\n \"(default) for retrieval + synthesis, 'deep' for multi-pass \" +\n 'reasoning over a wider window.',\n ),\n max_sources: z\n .number()\n .int()\n .min(1)\n .max(50)\n .optional()\n .describe('Maximum number of source chunks to retrieve (1 to 50, default 5).'),\n domain: z\n .string()\n .optional()\n .describe(\n \"Optional taxonomy domain to restrict retrieval to (e.g. 'engineering', 'legal', 'people-ops').\",\n ),\n});\n\nexport type QuelvioToolInput = z.infer<typeof QuelvioToolInputSchema>;\n\nexport interface QuelvioToolOptions extends QuelvioClientOptions {\n /** Override the tool name (default: `quelvio_query`). */\n name?: string;\n /** Override the LLM-facing description. */\n description?: string;\n /** Default synthesis mode used when the agent omits `mode`. */\n defaultMode?: string;\n /** Default chunk limit used when the agent omits `max_sources`. */\n defaultMaxSources?: number;\n /** Inject a pre-built {@link QuelvioClient} for connection reuse. */\n client?: QuelvioClient;\n}\n\nfunction formatResponse(response: QueryResponse): string {\n const lines: string[] = [];\n if (response.synthesis) {\n lines.push(response.synthesis.trim());\n lines.push('');\n }\n if (response.results.length > 0) {\n lines.push('Sources:');\n response.results.forEach((chunk, idx) => {\n const label = chunk.title || chunk.chunk_id;\n if (chunk.source_url) {\n lines.push(` [${idx + 1}] ${label} — ${chunk.source_url}`);\n } else {\n lines.push(` [${idx + 1}] ${label}`);\n }\n });\n }\n if (lines.length === 0) {\n return \"No matching content was found in the company's knowledge brain.\";\n }\n return lines.join('\\n').trimEnd();\n}\n\nexport class QuelvioTool extends StructuredTool<typeof QuelvioToolInputSchema> {\n static override lc_name(): string {\n return 'QuelvioTool';\n }\n\n override get lc_namespace(): string[] {\n return ['quelvio', 'tools'];\n }\n\n override name = 'quelvio_query';\n override description = DEFAULT_DESCRIPTION;\n override schema = QuelvioToolInputSchema;\n\n readonly defaultMode: string;\n readonly defaultMaxSources: number;\n\n readonly #client: QuelvioClient;\n\n constructor(options: QuelvioToolOptions = {}) {\n super();\n if (options.name) this.name = options.name;\n if (options.description) this.description = options.description;\n this.defaultMode = options.defaultMode ?? 'standard';\n this.defaultMaxSources = options.defaultMaxSources ?? 5;\n\n if (options.client) {\n this.#client = options.client;\n } else {\n const clientOpts: QuelvioClientOptions = { source: 'langchain-js-tool' };\n if (options.apiKey !== undefined) clientOpts.apiKey = options.apiKey;\n if (options.baseUrl !== undefined) clientOpts.baseUrl = options.baseUrl;\n if (options.timeoutMs !== undefined) clientOpts.timeoutMs = options.timeoutMs;\n if (options.maxRetries !== undefined) clientOpts.maxRetries = options.maxRetries;\n if (options.fetch !== undefined) clientOpts.fetch = options.fetch;\n this.#client = new QuelvioClient(clientOpts);\n }\n }\n\n override toString(): string {\n return `QuelvioTool(name=${this.name}, defaultMode=${this.defaultMode}, defaultMaxSources=${this.defaultMaxSources})`;\n }\n\n protected async _call(\n input: QuelvioToolInput,\n _runManager?: CallbackManagerForToolRun,\n ): Promise<string> {\n if (!input.question || !input.question.trim()) {\n throw new TypeError('question must be a non-empty string');\n }\n const response = await this.#client.query({\n query: input.question,\n limit: input.max_sources ?? this.defaultMaxSources,\n mode: input.mode ?? this.defaultMode,\n domainFilter: input.domain ?? null,\n });\n return formatResponse(response);\n }\n}\n"]}