@kontext.dev/kontext-sdk
Version:
Unified SDK for AI-powered context and personalization
1 lines • 28.9 kB
Source Map (JSON)
{"version":3,"sources":["../src/client/types.ts","../src/client/vault-client.ts","../src/client/profile-client.ts","../src/client/client.ts"],"names":["KontextError","message","code","statusCode","VaultClient","apiUrl","apiKey","res","fallbackMsg","text","params","form","data","payload","mapRowToHit","row","mapSourceToHit","source","hitsPayload","rows","sources","hits","answer","answerData","answerText","ProfileClient","options","userId","task","maxTokens","privacyLevel","userQuery","response","json","error","rawMessage","Kontext","config"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Personalized context returned by Kontext API\n */\nexport interface Context {\n /** System prompt for LLM */\n systemPrompt: string;\n\n /** Optional: structured data about the user */\n metadata?: {\n userId: string;\n timestamp: Date;\n providers: string[];\n };\n\n /** Optional: token count */\n tokenCount?: number;\n}\n\n/**\n * User consent record for GDPR compliance\n */\nexport interface ConsentRecord {\n userId: string;\n scopes: string[];\n timestamp: Date;\n}\n\n/**\n * Configuration for Kontext SDK\n */\nexport interface KontextConfig {\n /** API key for authentication */\n apiKey: string;\n\n /** Optional: enable specific providers */\n providers?: string[];\n\n /** Optional: API endpoint override */\n apiUrl?: string;\n\n /** Optional: cache configuration */\n cache?: {\n /** Cache TTL in seconds (default: 300) */\n ttl?: number;\n /** Cache storage backend */\n storage?: 'memory' | 'redis';\n };\n\n /** Optional: request limits */\n limits?: {\n /** Max tokens per request (default: 2000) */\n maxTokensPerRequest?: number;\n /** Monthly budget in USD */\n monthlyBudget?: number;\n };\n}\n\n/**\n * Options for getting a personalized profile/context\n */\nexport interface GetContextOptions {\n /** User ID from your auth system */\n userId: string;\n\n /** Task or use case for the context */\n task: string;\n\n /** Optional: current end-user request to focus context */\n userQuery?: string;\n\n /** Optional: max tokens for context */\n maxTokens?: number;\n\n /** Optional: specific providers to use */\n providers?: string[];\n\n /** Optional: use identity mode (AI acts AS the user) */\n useIdentityMode?: boolean;\n\n /** Optional: privacy level for PII handling */\n privacyLevel?: 'strict' | 'moderate' | 'none';\n}\n\n/** Alias for profile terminology */\nexport type GetProfileOptions = GetContextOptions;\n\nexport interface ProfileFact {\n id: string;\n category: string;\n type: string;\n value: any;\n confidence: number;\n extractedAt: string;\n}\n\nexport interface ListFactsOptions {\n userId: string;\n limit?: number;\n category?: string;\n minConfidence?: number;\n}\n\nexport interface ListFactsResponse {\n facts: ProfileFact[];\n}\n\nexport interface DeleteFactsOptions {\n userId: string;\n factIds?: string[];\n}\n\nexport interface DeleteFactsResponse {\n deleted: number;\n}\n\n/**\n * SDK error types\n */\nexport class KontextError extends Error {\n constructor(\n message: string,\n public code: string,\n public statusCode?: number,\n ) {\n super(message);\n this.name = 'KontextError';\n }\n}\n\n/**\n * Auth token response from Kontext backend\n */\nexport interface KontextToken {\n token: string;\n expiresAt: Date;\n userId: string;\n}\n","export interface VaultUploadParams {\n userId: string;\n file: Blob | File;\n}\n\nexport interface VaultUploadResponse {\n status: 'pending' | 'processing' | 'completed' | 'failed';\n fileId: string;\n}\n\nexport interface VaultGetFileStatusParams {\n fileId: string;\n}\n\nexport interface VaultGetFileStatusResponse {\n status: string | 'not_found';\n progress?: number | null;\n error?: string | null;\n startedAt?: string | null;\n completedAt?: string | null;\n}\n\nexport interface VaultQueryParams {\n userId: string;\n query: string;\n topK?: number;\n fileId?: string;\n includeAnswer?: boolean;\n}\n\nexport interface VaultQueryHit {\n id: string;\n score: number | null;\n attributes: Record<string, any>;\n}\n\nexport interface VaultQuerySource {\n id: string;\n score: number;\n doc_type: string;\n subject?: string;\n timestamp?: string;\n snippet?: string | null;\n}\n\nexport interface VaultQueryResponse {\n hits: VaultQueryHit[];\n answer?: {\n text: string | null;\n sources: VaultQuerySource[];\n };\n}\n\nexport interface VaultListFilesParams {\n userId: string;\n}\n\nexport interface VaultListFilesFile {\n fileId: string;\n originalName?: string | null;\n uploadedAt: string;\n status: string;\n}\n\nexport interface VaultListFilesResponse {\n files: VaultListFilesFile[];\n}\n\nexport interface VaultDeleteFileParams {\n fileId: string;\n}\n\nexport interface VaultDeleteFileResponse {\n deleted: boolean;\n fileId: string;\n}\n\nexport interface VaultClearVaultParams {\n userId: string;\n}\n\nexport interface VaultClearVaultResponse {\n cleared: boolean;\n namespaces: string[];\n}\n\nexport class VaultClient {\n constructor(\n private apiUrl: string,\n private apiKey: string,\n ) {}\n\n private async handleResponse<T>(res: Response, fallbackMsg: string): Promise<T> {\n if (!res.ok) {\n const text = await res.text().catch(() => '');\n throw new Error(`${fallbackMsg} (${res.status}): ${text}`);\n }\n return (await res.json()) as T;\n }\n\n async upload(params: VaultUploadParams): Promise<VaultUploadResponse> {\n const form = new FormData();\n form.append('file', params.file as any);\n\n const res = await fetch(`${this.apiUrl}/vault/files`, {\n method: 'POST',\n headers: {\n 'x-api-key': this.apiKey,\n 'x-as-user': params.userId,\n },\n body: form as any,\n });\n const data = await this.handleResponse<any>(res, 'Upload failed');\n return {\n fileId: String(data?.fileId || ''),\n status: (data?.status as VaultUploadResponse['status']) ?? 'pending',\n };\n }\n\n async getFileStatus(params: VaultGetFileStatusParams): Promise<VaultGetFileStatusResponse> {\n const res = await fetch(`${this.apiUrl}/vault/files/${params.fileId}/status`, {\n headers: { 'x-api-key': this.apiKey },\n });\n return this.handleResponse<VaultGetFileStatusResponse>(res, 'getFileStatus failed');\n }\n\n async query(params: VaultQueryParams): Promise<VaultQueryResponse> {\n const payload: Record<string, unknown> = {\n userId: params.userId,\n query: params.query,\n };\n if (typeof params.topK === 'number') payload.topK = params.topK;\n if (params.fileId) payload.fileId = params.fileId;\n if (params.includeAnswer) payload.includeAnswer = true;\n\n const res = await fetch(`${this.apiUrl}/vault/query`, {\n method: 'POST',\n headers: {\n 'x-api-key': this.apiKey,\n 'content-type': 'application/json',\n },\n body: JSON.stringify(payload),\n });\n const data = await this.handleResponse<any>(res, 'query failed');\n\n const mapRowToHit = (row: any): VaultQueryHit => ({\n id: String(row?.id ?? row?.row_id ?? row?.datasetItemId ?? row?.documentId ?? ''),\n score:\n typeof row?.score === 'number'\n ? row.score\n : typeof row?.distance === 'number'\n ? row.distance\n : null,\n attributes:\n (row?.attributes && typeof row.attributes === 'object' ? row.attributes : row) ?? {},\n });\n\n const mapSourceToHit = (source: any): VaultQueryHit => ({\n id: String(source?.id ?? ''),\n score: typeof source?.score === 'number' ? source.score : null,\n attributes: {\n doc_type: source?.doc_type,\n subject: source?.subject,\n timestamp: source?.timestamp,\n snippet: source?.snippet,\n },\n });\n\n const hitsPayload = Array.isArray(data?.hits) ? data.hits : undefined;\n const rows = Array.isArray(data?.rows) ? data.rows : undefined;\n const sources = Array.isArray(data?.sources) ? data.sources : undefined;\n\n const hits: VaultQueryHit[] = hitsPayload\n ? hitsPayload.map(mapRowToHit)\n : rows\n ? rows.map(mapRowToHit)\n : sources\n ? sources.map(mapSourceToHit)\n : [];\n\n let answer: VaultQueryResponse['answer'];\n if (data?.answer) {\n const answerData = data.answer;\n let answerText: string | null = null;\n if (typeof answerData?.text === 'string') {\n answerText = answerData.text;\n }\n answer = {\n text: answerText,\n sources: Array.isArray(answerData?.sources)\n ? answerData.sources.map((source: any) => ({\n id: String(source?.id ?? ''),\n score: typeof source?.score === 'number' ? source.score : 0,\n doc_type: String(source?.doc_type ?? ''),\n subject: source?.subject,\n timestamp: source?.timestamp,\n snippet: source?.snippet,\n }))\n : (sources || []).map((source: any) => ({\n id: String(source?.id ?? ''),\n score: typeof source?.score === 'number' ? source.score : 0,\n doc_type: String(source?.doc_type ?? ''),\n subject: source?.subject,\n timestamp: source?.timestamp,\n snippet: source?.snippet,\n })),\n };\n }\n\n return {\n hits,\n ...(answer ? { answer } : {}),\n };\n }\n\n async listFiles(params: VaultListFilesParams): Promise<VaultListFilesResponse> {\n const res = await fetch(`${this.apiUrl}/vault/users/${params.userId}/files`, {\n headers: { 'x-api-key': this.apiKey },\n });\n return this.handleResponse<VaultListFilesResponse>(res, 'listFiles failed');\n }\n\n async deleteFile(params: VaultDeleteFileParams): Promise<VaultDeleteFileResponse> {\n const res = await fetch(`${this.apiUrl}/vault/files/${params.fileId}`, {\n method: 'DELETE',\n headers: { 'x-api-key': this.apiKey },\n });\n return this.handleResponse<VaultDeleteFileResponse>(res, 'deleteFile failed');\n }\n\n async clearVault(params: VaultClearVaultParams): Promise<VaultClearVaultResponse> {\n const res = await fetch(`${this.apiUrl}/vault/users/${params.userId}`, {\n method: 'DELETE',\n headers: { 'x-api-key': this.apiKey },\n });\n return this.handleResponse<VaultClearVaultResponse>(res, 'Vault namespace clear failed');\n }\n}\n","import type {\n Context,\n DeleteFactsOptions,\n DeleteFactsResponse,\n GetContextOptions,\n ListFactsOptions,\n ListFactsResponse,\n} from './types';\nimport { KontextError } from './types';\n\n/**\n * Handles profile/context retrieval for a specific user.\n */\nexport class ProfileClient {\n constructor(\n private apiUrl: string,\n private apiKey: string,\n ) {}\n\n async getProfile(options: GetContextOptions): Promise<Context> {\n if (!options) {\n throw this.createError(\n 'GetProfileOptions is required. Please provide an object with at least a userId field.',\n 'INVALID_OPTIONS',\n 400,\n );\n }\n\n const { userId, task, maxTokens, privacyLevel, userQuery } = options;\n\n if (!userId || typeof userId !== 'string') {\n throw this.createError(\n 'Valid userId is required. Please provide a non-empty string userId.',\n 'INVALID_USER_ID',\n 400,\n );\n }\n\n if (maxTokens !== undefined && (typeof maxTokens !== 'number' || maxTokens <= 0)) {\n throw this.createError(\n 'maxTokens must be a positive number if provided.',\n 'INVALID_MAX_TOKENS',\n 400,\n );\n }\n\n if (privacyLevel && !['strict', 'moderate', 'none'].includes(privacyLevel)) {\n throw this.createError(\n 'privacyLevel must be one of: strict, moderate, none',\n 'INVALID_PRIVACY_LEVEL',\n 400,\n );\n }\n\n try {\n const response = await fetch(`${this.apiUrl}/profile`, {\n method: 'POST',\n headers: {\n 'x-api-key': this.apiKey,\n 'content-type': 'application/json',\n },\n body: JSON.stringify({\n userId,\n task: task || 'general',\n maxFacts: maxTokens ? Math.min(maxTokens / 10, 100) : undefined,\n cachePolicy: 'fresh',\n includeRecentData: true,\n privacyLevel: privacyLevel || 'none',\n userQuery,\n }),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => '');\n throw new Error(text || `HTTP ${response.status}`);\n }\n\n const json = await response.json();\n\n return {\n systemPrompt: json.systemPrompt,\n metadata: {\n userId,\n timestamp: json.metadata?.generatedAt ? new Date(json.metadata.generatedAt) : new Date(),\n providers: json.metadata?.providers || ['gmail'],\n },\n tokenCount:\n typeof json.systemPrompt === 'string' ? json.systemPrompt.length / 4 : undefined,\n };\n } catch (error) {\n const rawMessage = error instanceof Error ? error.message : '';\n\n if (rawMessage.includes('OAuth access') || rawMessage.includes('No OAuth')) {\n throw this.createError(\n 'User has not authorized access. Please ensure the user has connected their account.',\n 'UNAUTHORIZED_USER',\n 401,\n );\n }\n\n throw this.createError('Failed to get profile', 'PROFILE_FAILED', 500);\n }\n }\n\n async listFacts(options: ListFactsOptions): Promise<ListFactsResponse> {\n if (!options || !options.userId) {\n throw this.createError('userId is required to list facts.', 'INVALID_USER_ID', 400);\n }\n\n const params = new URLSearchParams({ userId: options.userId });\n if (typeof options.limit === 'number') params.set('limit', String(options.limit));\n if (typeof options.minConfidence === 'number') {\n params.set('minConfidence', String(options.minConfidence));\n }\n if (options.category) params.set('category', options.category);\n\n const res = await fetch(`${this.apiUrl}/profile/facts?${params.toString()}`, {\n headers: { 'x-api-key': this.apiKey },\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => '');\n throw this.createError(text || `HTTP ${res.status}`, 'FACTS_LIST_FAILED', res.status);\n }\n\n const json = (await res.json()) as ListFactsResponse;\n return json;\n }\n\n async deleteFacts(options: DeleteFactsOptions): Promise<DeleteFactsResponse> {\n if (!options || !options.userId) {\n throw this.createError('userId is required to delete facts.', 'INVALID_USER_ID', 400);\n }\n\n const res = await fetch(`${this.apiUrl}/profile/facts`, {\n method: 'DELETE',\n headers: {\n 'x-api-key': this.apiKey,\n 'content-type': 'application/json',\n },\n body: JSON.stringify({ userId: options.userId, factIds: options.factIds }),\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => '');\n throw this.createError(text || `HTTP ${res.status}`, 'FACTS_DELETE_FAILED', res.status);\n }\n\n return (await res.json()) as DeleteFactsResponse;\n }\n\n private createError(message: string, code: string, statusCode?: number): KontextError {\n return new KontextError(message, code, statusCode);\n }\n}\n","import type { KontextConfig } from './types';\nimport { KontextError } from './types';\nimport { VaultClient } from './vault-client';\nimport { ProfileClient } from './profile-client';\n\n/**\n * Main Kontext SDK client\n * Provides a simple API for developers to manage personalization primitives\n */\nexport class Kontext {\n private config: Required<KontextConfig>;\n public vault: import('./vault-client').VaultClient;\n public profile: import('./profile-client').ProfileClient;\n public users: {\n purge: (params: { userId: string }) => Promise<void>;\n };\n\n constructor(config: KontextConfig) {\n if (!config.apiKey) {\n throw new Error('Kontext API key is required');\n }\n\n this.config = {\n apiKey: config.apiKey,\n providers: config.providers || ['gmail', 'preferences'],\n apiUrl: config.apiUrl || 'https://api.kontext.dev',\n cache: {\n ttl: config.cache?.ttl || 300,\n storage: config.cache?.storage || 'memory',\n },\n limits: {\n maxTokensPerRequest: config.limits?.maxTokensPerRequest || 2000,\n monthlyBudget: config.limits?.monthlyBudget || 0,\n },\n };\n\n this.vault = new VaultClient(this.config.apiUrl, this.config.apiKey);\n this.profile = new ProfileClient(this.config.apiUrl, this.config.apiKey);\n this.users = {\n purge: async ({ userId }) => this.purgeUser(userId),\n };\n }\n\n /**\n * Disconnect user and delete their data\n * This calls the GDPR deleteData endpoint\n */\n async disconnect(userId: string): Promise<void> {\n return this.purgeUser(userId);\n }\n\n private async purgeUser(userId: string): Promise<void> {\n if (!userId || typeof userId !== 'string') {\n throw this.createError(\n 'Valid userId is required for disconnect. Please provide a non-empty string userId.',\n 'INVALID_USER_ID',\n 400,\n );\n }\n\n try {\n const res = await fetch(`${this.config.apiUrl}/users/${encodeURIComponent(userId)}`, {\n method: 'DELETE',\n headers: { 'x-api-key': this.config.apiKey },\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => '');\n const message = text || `HTTP ${res.status}`;\n if (res.status === 404) {\n throw this.createError(\n 'User not found. The user may have already been purged.',\n 'USER_NOT_FOUND',\n 404,\n );\n }\n throw this.createError(message, 'DISCONNECT_FAILED', res.status || 500);\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to purge user';\n throw this.createError(message, 'DISCONNECT_FAILED', 500);\n }\n }\n\n private createError(message: string, code: string, statusCode?: number): KontextError {\n return new KontextError(message, code, statusCode);\n }\n}\n"]}